Открыть сервис

Режим шифрования CBC

Режим шифрования CBC (Cipher Block Chaining, режим сцепления блоков шифротекста) — это один из режимов работы блочного шифра, при котором каждый открытый блок текста перед шифрованием объединяется операцией XOR (исключающее ИЛИ) с предыдущим блоком шифротекста. Это обеспечивает зависимость каждого блока шифротекста от всех предыдущих блоков, что повышает стойкость шифрования к некоторым видам атак.

Принцип работы

Режим CBC использует блочный шифр (например, AES, DES, ГОСТ 28147-89) и требует наличия вектора инициализации (IV) — случайного или псевдослучайного блока данных длиной, равной длине блока шифра. Процесс шифрования и дешифрования состоит из следующих шагов:

Шифрование

  1. Первый блок открытого текста (P1) объединяется с вектором инициализации (IV) операцией XOR: P1 ⊕ IV.
  2. Полученный результат шифруется с использованием ключа K: C1 = E_K(P1 ⊕ IV).
  3. Для каждого последующего блока Pi (i = 2, 3, ..., n) выполняется: Ci = E_K(Pi ⊕ C_{i-1}).

Таким образом, каждый блок шифротекста Ci зависит от предыдущего блока C_{i-1} и, следовательно, от всех предыдущих блоков открытого текста.

Дешифрование

  1. Первый блок шифротекста C1 расшифровывается: P1 = D_K(C1) ⊕ IV.
  2. Для каждого последующего блока Ci: Pi = D_K(Ci) ⊕ C_{i-1}.

Расшифрование выполняется параллельно, так как для получения Pi требуется только Ci и C_{i-1}, а не предыдущие открытые блоки.

Вектор инициализации (IV)

Вектор инициализации — это критический элемент режима CBC. Он должен быть:

  • Случайным или псевдослучайным: для каждого сеанса шифрования должен использоваться новый IV, чтобы одинаковые сообщения, зашифрованные одним ключом, давали разные шифротексты.
  • Несекретным: IV обычно передаётся открыто вместе с шифротекстом, так как его знание не позволяет злоумышленнику расшифровать данные без ключа.
  • Фиксированной длины: равной длине блока шифра (например, 16 байт для AES).

Если IV предсказуем или повторно используется, режим CBC становится уязвимым к атакам, таким как атака на основе известного открытого текста.

История и развитие

Режим CBC был впервые описан в 1976 году американским криптографом Уильямом Хью Мейером (William Hugh Meyer) и впоследствии стандартизирован в США как часть стандарта DES (Data Encryption Standard). В 1980 году он был включён в рекомендации NIST (Национальный институт стандартов и технологий США) для использования с блочными шифрами. В России режим CBC (в русскоязычной литературе часто называемый «режимом сцепления блоков шифротекста») описан в ГОСТ Р 34.13-2015 (ранее — ГОСТ 28147-89) как один из основных режимов работы блочного шифра «Магма» и «Кузнечик».

С появлением атак, таких как BEAST (Browser Exploit Against SSL/TLS) в 2011 году, выявивших уязвимости в реализации CBC в протоколах TLS 1.0, режим начал вытесняться более современными режимами, например, GCM (Galois/Counter Mode) и CTR (Counter Mode). Тем не менее, CBC остаётся широко распространённым в приложениях, где требуется высокая совместимость с устаревшими системами.

Характеристики и свойства

Преимущества

  • Распространение ошибки: ошибка в одном блоке шифротекста (например, при передаче) влияет на два блока при расшифровании — текущий и следующий. Это позволяет частично обнаруживать искажения данных.
  • Стойкость к атакам по известному открытому тексту: зависимость от предыдущих блоков затрудняет подбор ключа, если злоумышленник знает часть открытого текста.
  • Простота реализации: алгоритм легко реализуется на аппаратном и программном уровне.

Недостатки

  • Последовательность шифрования: шифрование не может быть распараллелено, так как каждый блок зависит от предыдущего. Это снижает производительность на многопроцессорных системах.
  • Уязвимость к атакам на основе IV: если IV предсказуем, возможна атака с выбором открытого текста (chosen-plaintext attack).
  • Уязвимость к атаке BEAST: в протоколах TLS 1.0 и более ранних версиях злоумышленник мог предсказывать IV, что позволяло расшифровывать данные. В TLS 1.1 и выше эта проблема решена использованием явного случайного IV.
  • Отсутствие аутентификации: режим CBC не обеспечивает целостность и подлинность данных. Для защиты от модификаций обычно используется дополнительный код аутентификации сообщения (MAC) или режимы с аутентификацией, например, CCM (Counter with CBC-MAC).

Применение

Режим CBC широко используется в различных протоколах и стандартах:

  • SSL/TLS: до версии 1.3 CBC был основным режимом для шифрования данных. В TLS 1.3 он заменён на AEAD-режимы (Authenticated Encryption with Associated Data), такие как AES-GCM и ChaCha20-Poly1305.
  • IPsec: в протоколе ESP (Encapsulating Security Payload) CBC применяется для шифрования пакетов.
  • SSH: в протоколе Secure Shell используется CBC для защиты канала связи.
  • Файловые системы: например, BitLocker (Microsoft) использует режим CBC с дополнительным MAC-кодом для шифрования дисков.
  • Базы данных: шифрование столбцов в СУБД (например, Oracle Transparent Data Encryption) может использовать CBC.

Критика и альтернативы

Основная критика режима CBC связана с его уязвимостью к атакам на основе предсказуемого IV и отсутствием встроенной аутентификации. В 2011 году атака BEAST, реализованная исследователями Джулиано Риццо (Juliano Rizzo) и Тай Дуонг (Thai Duong), показала, что в TLS 1.0 можно расшифровать данные, используя предсказуемый IV. Это привело к переходу на TLS 1.1 и 1.2, где IV генерируется случайно.

В качестве альтернатив CBC предлагаются:

  • Режим CTR (Counter): позволяет параллельное шифрование и дешифрование, не требует IV, но требует уникального счётчика.
  • Режим GCM (Galois/Counter Mode): обеспечивает аутентификацию и шифрование, устойчив к атакам, рекомендован для современных протоколов.
  • Режим CCM (Counter with CBC-MAC): сочетает шифрование в режиме CTR и аутентификацию на основе CBC-MAC.

Интересные факты

  • Режим CBC является одним из четырёх режимов, описанных в оригинальном стандарте DES (ECB, CBC, CFB, OFB).
  • В российской криптографии режим CBC называется «режимом простой замены с зацеплением» и описан в ГОСТ Р 34.13-2015.
  • В 2014 году исследователи обнаружили атаку POODLE (Padding Oracle On Downgraded Legacy Encryption) на SSL 3.0, которая использовала уязвимости в реализации CBC с заполнением (padding). Это привело к отказу от SSL 3.0.

Источники

  1. NIST Special Publication 800-38A: Recommendation for Block Cipher Modes of Operation — Methods and Techniques. National Institute of Standards and Technology, 2001.
  2. ГОСТ Р 34.13-2015. Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров. — М.: Стандартинформ, 2015.
  3. Menezes A., van Oorschot P., Vanstone S. Handbook of Applied Cryptography. — CRC Press, 1996. — Chapter 7.
  4. Rizzo J., Duong T. Here Come The ⊕ Ninjas (BEAST attack). — 2011.
  5. Moller B., Duong T., Kotowicz K. This POODLE Bites: Exploiting The SSL 3.0 Fallback (POODLE attack). — 2014.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →