Режим шифрования CBC
Режим шифрования CBC (Cipher Block Chaining, режим сцепления блоков шифротекста) — это один из режимов работы блочного шифра, при котором каждый открытый блок текста перед шифрованием объединяется операцией XOR (исключающее ИЛИ) с предыдущим блоком шифротекста. Это обеспечивает зависимость каждого блока шифротекста от всех предыдущих блоков, что повышает стойкость шифрования к некоторым видам атак.
Принцип работы
Режим CBC использует блочный шифр (например, AES, DES, ГОСТ 28147-89) и требует наличия вектора инициализации (IV) — случайного или псевдослучайного блока данных длиной, равной длине блока шифра. Процесс шифрования и дешифрования состоит из следующих шагов:
Шифрование
- Первый блок открытого текста (P1) объединяется с вектором инициализации (IV) операцией XOR: P1 ⊕ IV.
- Полученный результат шифруется с использованием ключа K: C1 = E_K(P1 ⊕ IV).
- Для каждого последующего блока Pi (i = 2, 3, ..., n) выполняется: Ci = E_K(Pi ⊕ C_{i-1}).
Таким образом, каждый блок шифротекста Ci зависит от предыдущего блока C_{i-1} и, следовательно, от всех предыдущих блоков открытого текста.
Дешифрование
- Первый блок шифротекста C1 расшифровывается: P1 = D_K(C1) ⊕ IV.
- Для каждого последующего блока 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.
Источники
- NIST Special Publication 800-38A: Recommendation for Block Cipher Modes of Operation — Methods and Techniques. National Institute of Standards and Technology, 2001.
- ГОСТ Р 34.13-2015. Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров. — М.: Стандартинформ, 2015.
- Menezes A., van Oorschot P., Vanstone S. Handbook of Applied Cryptography. — CRC Press, 1996. — Chapter 7.
- Rizzo J., Duong T. Here Come The ⊕ Ninjas (BEAST attack). — 2011.
- Moller B., Duong T., Kotowicz K. This POODLE Bites: Exploiting The SSL 3.0 Fallback (POODLE attack). — 2014.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →