Блочный режим
Блочный режим — это способ преобразования данных в симметричных криптосистемах, при котором открытый текст разбивается на блоки фиксированной длины, каждый из которых шифруется независимо или с использованием информации о предыдущих блоках. В отличие от поточных шифров, обрабатывающих данные непрерывно побитно или побайтово, блочный режим оперирует целыми блоками (обычно 64 или 128 бит), что определяет его основные свойства и области применения.
История
Концепция блочного шифрования возникла в середине XX века, когда развитие вычислительной техники потребовало создания алгоритмов, способных обрабатывать большие объёмы данных с гарантированной стойкостью. Первым широко известным блочным шифром стал DES (Data Encryption Standard), разработанный в 1970-х годах в США и принятый в качестве стандарта в 1977 году. DES использовал блоки длиной 64 бита и ключ длиной 56 бит, что на момент создания считалось достаточным для защиты коммерческой информации.
Однако сам по себе блочный шифр определяет только способ преобразования одного блока. Для шифрования сообщений произвольной длины потребовалось разработать режимы, которые задают, как именно блоки связываются друг с другом. Первый такой режим — ECB (Electronic Codebook) — был описан вместе с DES. Впоследствии, по мере выявления уязвимостей ECB, были созданы более сложные режимы: CBC (Cipher Block Chaining) в 1976 году, CFB (Cipher Feedback) и OFB (Output Feedback) в 1980-х, а также CTR (Counter) в 1990-х.
С развитием криптографии и увеличением вычислительных мощностей длина блока в 64 бита стала недостаточной из-за атак, основанных на парадоксе дней рождения. В 2001 году в США был принят стандарт AES (Advanced Encryption Standard), использующий блоки длиной 128 бит, что значительно повысило стойкость. Современные блочные шифры, такие как AES, ГОСТ Р 34.12-2015 («Кузнечик»), ChaCha20 (хотя он часто классифицируется как поточный, его внутренняя структура основана на блочном принципе), продолжают развиваться, адаптируясь к новым угрозам.
Классификация режимов
Блочные режимы шифрования классифицируются по способу связи между блоками и по типу обратной связи. Основные классы:
Режимы без обратной связи
- ECB (Electronic Codebook) — самый простой режим. Каждый блок открытого текста шифруется независимо с использованием одного и того же ключа. Режим не использует информацию о предыдущих блоках, что делает его уязвимым для атак по шаблону: одинаковые блоки открытого текста дают одинаковые блоки шифротекста. Это позволяет злоумышленнику анализировать структуру данных, например, изображений или текстов. ECB не рекомендуется для использования в современных системах, за исключением случаев, когда требуется шифрование отдельных блоков (например, для ключей).
Режимы с обратной связью
- CBC (Cipher Block Chaining) — наиболее распространённый режим. Перед шифрованием каждый блок открытого текста складывается по модулю 2 (XOR) с предыдущим блоком шифротекста. Для первого блока используется вектор инициализации (IV) — случайное значение, которое должно быть уникальным для каждого сеанса шифрования. CBC обеспечивает защиту от атак по шаблону, но требует последовательной обработки, что затрудняет параллельное шифрование.
- PCBC (Propagating Cipher Block Chaining) — модификация CBC, в которой XOR выполняется как с предыдущим блоком шифротекста, так и с предыдущим блоком открытого текста. Режим редко используется из-за чувствительности к ошибкам передачи.
Режимы с обратной связью по шифротексту
- CFB (Cipher Feedback) — превращает блочный шифр в поточный. Шифруется не сам блок открытого текста, а предыдущий блок шифротекста; результат XORится с открытым текстом. Режим позволяет шифровать данные меньшими порциями (например, по 1 байту), но требует синхронизации.
- OFB (Output Feedback) — генерирует поток ключевых данных, который XORится с открытым текстом. Режим не распространяет ошибки (ошибка в одном бите шифротекста влияет только на соответствующий бит открытого текста), но уязвим к атакам, если используется один и тот же IV.
Режимы счётчика
- CTR (Counter) — режим, в котором для каждого блока генерируется уникальное значение счётчика, которое шифруется, а результат XORится с открытым текстом. Счётчик обычно увеличивается на 1 для каждого блока. CTR допускает параллельное шифрование и дешифрование, не требует последовательной обработки, и является одним из наиболее эффективных и безопасных режимов при правильной реализации.
Режимы аутентифицированного шифрования
- GCM (Galois/Counter Mode) — комбинирует режим CTR с аутентификацией на основе умножения в поле Галуа. GCM обеспечивает как конфиденциальность, так и целостность данных, что делает его стандартом для многих современных протоколов, включая TLS 1.3.
- CCM (Counter with CBC-MAC) — сочетает режим CTR для шифрования и CBC-MAC для аутентификации. Используется в протоколах IEEE 802.11 (Wi-Fi) и IPsec.
- EAX — режим, основанный на CTR и OMAC, обеспечивающий аутентифицированное шифрование с минимальными накладными расходами.
Устройство и характеристики
Блочный режим определяется тремя основными компонентами: алгоритмом блочного шифрования, длиной блока и способом связи между блоками. Алгоритм шифрования (например, AES, ГОСТ 28147-89, «Кузнечик») выполняет нелинейное преобразование блока с использованием ключа. Длина блока фиксирована: для AES — 128 бит, для DES — 64 бита, для «Кузнечика» — 128 бит.
Важной характеристикой является вектор инициализации (IV) — случайное или псевдослучайное значение, которое используется в режимах CBC, CFB, OFB, CTR и GCM. IV должен быть уникальным для каждого шифрования с одним и тем же ключом, иначе возможны атаки, позволяющие восстановить открытый текст. В режиме ECB IV не используется.
Режимы различаются по способности к параллельной обработке: ECB, CTR и GCM допускают параллельное шифрование блоков, тогда как CBC, CFB и OFB требуют последовательной обработки. Это влияет на производительность на многоядерных процессорах и аппаратных ускорителях.
Применение
Блочные режимы широко применяются в различных областях защиты информации:
- Протоколы передачи данных: TLS (Transport Layer Security) использует режимы GCM и CBC для шифрования веб-трафика. IPsec (Internet Protocol Security) применяет CBC и CTR.
- Хранение данных: шифрование дисков (например, BitLocker, LUKS) использует режимы CBC или XTS (XEX-based Tweaked Codebook mode, специальный режим для блочных устройств). XTS, разработанный для шифрования накопителей, избегает некоторых уязвимостей CBC, связанных с изменением шифротекста.
- Беспроводные сети: стандарт IEEE 802.11 (Wi-Fi) использует режим CCM в протоколе WPA2.
- Криптовалюты: некоторые системы применяют блочные шифры для защиты кошельков и транзакций.
- Государственные стандарты: в России для шифрования данных используется ГОСТ Р 34.12-2015, который определяет блочные шифры «Магма» (64-битный блок) и «Кузнечик» (128-битный блок), а также режимы их применения (ГОСТ Р 34.13-2015), включающие ECB, CBC, CFB, OFB, CTR и GCM.
Критика и уязвимости
Основные недостатки блочных режимов связаны с неправильной реализацией или выбором неподходящего режима:
- ECB — уязвим к атакам по шаблону, что делает его непригодным для шифрования структурированных данных (изображений, баз данных, текстов с повторяющимися паттернами).
- CBC — подвержен атакам на основе оракула дополнения (padding oracle attack), если не обеспечена целостность шифротекста. Эта атака была продемонстрирована на протоколах TLS и IPsec. Для защиты требуется использование аутентифицированных режимов или дополнительных механизмов проверки целостности.
- CFB и OFB — при повторном использовании одного и того же IV позволяют восстановить открытый текст. OFB также уязвим к атакам, если злоумышленник может предсказать поток ключевых данных.
- CTR — требует уникального счётчика для каждого блока; при повторении счётчика (например, из-за ошибки реализации) шифротекст становится уязвимым к XOR-атакам.
- GCM — при использовании коротких тегов аутентификации (менее 128 бит) снижается стойкость к подделке сообщений. Также GCM уязвим к атакам, если не обеспечена уникальность IV.
Интересные факты
- Режим ECB получил название «книжный шифр» из-за аналогии с кодом, где каждый блок открытого текста заменяется на соответствующий блок шифротекста, как в книге кодов.
- В 2013 году в результате утечки документов Эдварда Сноудена стало известно, что АНБ США рекомендовало использовать CBC в некоторых протоколах, что позже было связано с возможностью внедрения уязвимостей.
- Режим XTS, используемый для шифрования дисков, был разработан для устранения проблемы изменения размера данных: он не требует дополнения (padding), что важно для блочных устройств хранения.
Источники
- Шнайер Б. «Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си». — М.: Триумф, 2002.
- Менезес А., ван Ооршот П., Ванстон С. «Прикладная криптография». — М.: Вильямс, 2006.
- ГОСТ Р 34.12-2015 «Информационная технология. Криптографическая защита информации. Блочные шифры».
- ГОСТ Р 34.13-2015 «Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров».
- NIST Special Publication 800-38A «Recommendation for Block Cipher Modes of Operation: Methods and Techniques».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →