Блочный шифр
Блочный шифр — это разновидность симметричного шифра, преобразующего исходный открытый текст фиксированными блоками определённой длины (обычно 64, 128 или 256 бит) в блоки шифротекста той же длины с использованием секретного ключа. В отличие от поточных шифров, которые обрабатывают данные побитово или побайтово, блочные шифры оперируют целыми блоками, что определяет их математические свойства и области применения. Блочные шифры являются основой большинства современных протоколов защиты данных, включая стандарты шифрования AES, DES и ГОСТ 28147-89.
История
Ранние разработки (до 1970-х годов)
Первые попытки создания блочных шифров относятся к XIX веку, когда использовались механические устройства, такие как шифровальные диски и роторные машины (например, «Энигма»). Однако они не были блочными в современном понимании, так как обрабатывали символы по одному. Концепция блочного шифра в её современном виде начала формироваться в 1970-х годах с развитием компьютерной криптографии.
Стандарт DES (1977)
В 1977 году Национальный институт стандартов и технологий США (NIST) принял стандарт шифрования данных DES (Data Encryption Standard), разработанный компанией IBM. DES использовал 56-битный ключ и блоки длиной 64 бита. Он стал первым широко распространённым блочным шифром, применявшимся в банковской сфере, правительственных учреждениях и коммерческих системах. В 1990-х годах DES был признан уязвимым к атакам полным перебором из-за малой длины ключа, что привело к разработке его варианта Triple DES (3DES), где шифрование выполнялось трижды с разными ключами.
Стандарт AES (2001)
В 2001 году NIST объявил конкурс на новый стандарт шифрования, победителем которого стал алгоритм Rijndael, разработанный бельгийскими криптографами Йоаном Дайменом и Винсентом Рэйменом. Он был принят как AES (Advanced Encryption Standard) и использует блоки длиной 128 бит с ключами 128, 192 или 256 бит. AES стал мировым стандартом, применяемым в правительственных системах США (для документов уровня «секретно» и «совершенно секретно»), коммерческих продуктах и интернет-протоколах (TLS, Wi-Fi Protected Access).
Российский стандарт ГОСТ 28147-89
В СССР и России был разработан национальный стандарт блочного шифрования ГОСТ 28147-89, принятый в 1989 году. Он использует блоки длиной 64 бита и ключ длиной 256 бит. Алгоритм базируется на сети Фейстеля и применяется в государственных информационных системах. В 2015 году на смену ему пришёл новый стандарт ГОСТ Р 34.12-2015, включающий два алгоритма: «Магма» (64-битный блок, 256-битный ключ) и «Кузнечик» (128-битный блок, 256-битный ключ), что соответствует современным требованиям криптографической стойкости.
Принцип работы
Основные компоненты
Блочный шифр состоит из двух основных операций: шифрование (преобразование открытого текста в шифротекст) и расшифрование (обратное преобразование). Обе операции используют один и тот же секретный ключ, что характерно для симметричной криптографии. Алгоритм обычно реализуется через многократное повторение однотипных преобразований, называемых раундами.
Сеть Фейстеля
Многие классические блочные шифры (например, DES, ГОСТ 28147-89) построены по схеме сети Фейстеля, предложенной британским криптографом Хорстом Фейстелем в 1973 году. В этой схеме блок данных делится на две половины (левую и правую), и на каждом раунде одна половина преобразуется с помощью раундовой функции, зависящей от ключа, а затем объединяется с другой половиной через операцию XOR. Преимущество сети Фейстеля — обратимость алгоритма без необходимости инвертировать раундовую функцию, что упрощает реализацию как шифрования, так и расшифрования.
Подстановочно-перестановочная сеть (SP-сеть)
Современные шифры, такие как AES, используют подстановочно-перестановочную сеть (SP-сеть), где каждый раунд включает три этапа:
- Подстановка (S-блоки): нелинейное преобразование байтов или групп битов с помощью таблиц замен, обеспечивающее стойкость к дифференциальному и линейному криптоанализу.
- Перестановка (P-блоки): перемешивание битов или байтов для распространения влияния каждого бита открытого текста на весь блок шифротекста.
- Добавление раундового ключа: операция XOR с ключом, полученным из основного ключа через процедуру расширения ключа.
Режимы работы
Поскольку блочный шифр обрабатывает данные фиксированными блоками, для шифрования сообщений произвольной длины используются режимы работы:
- ECB (Electronic Codebook): каждый блок шифруется независимо. Уязвим к атакам по шаблону, так как одинаковые блоки открытого текста дают одинаковые блоки шифротекста.
- CBC (Cipher Block Chaining): каждый блок перед шифрованием объединяется с предыдущим блоком шифротекста через XOR. Требует инициализационного вектора (IV) для первого блока.
- CFB (Cipher Feedback): преобразует блочный шифр в поточный, шифруя предыдущий блок шифротекста и объединяя его с открытым текстом.
- OFB (Output Feedback): генерирует поток ключевых данных, которые объединяются с открытым текстом.
- CTR (Counter): использует счётчик, который шифруется для каждого блока, что позволяет параллельно обрабатывать данные. Широко применяется в современных протоколах.
Классификация блочных шифров
По структуре
- Сеть Фейстеля: DES, ГОСТ 28147-89, Blowfish, Twofish.
- SP-сеть: AES, Serpent, Кузнечик (ГОСТ Р 34.12-2015).
- Другие схемы: IDEA (смешанная структура), RC5 (зависит от вращений).
По длине блока
- 64-битные блоки: DES, 3DES, ГОСТ 28147-89, Blowfish. Считаются устаревшими из-за уязвимости к атакам на основе коллизий (например, атака «дня рождения»).
- 128-битные блоки: AES, Кузнечик, Camellia. Являются современным стандартом.
- 256-битные блоки: Rijndael (расширенная версия), Serpent. Используются реже из-за избыточной стойкости для большинства приложений.
По длине ключа
- Короткие ключи (56–64 бита): DES, ГОСТ 28147-89 (256 бит, но с 64-битным блоком). Считаются недостаточно стойкими.
- Средние ключи (128–192 бита): AES-128, AES-192.
- Длинные ключи (256 бит и более): AES-256, ГОСТ Р 34.12-2015 (256 бит).
Применение
Защита данных в покое
Блочные шифры используются для шифрования файлов, дисков и баз данных. Например, AES применяется в программах шифрования дисков (BitLocker, VeraCrypt), архиваторах (7-Zip, WinRAR) и системах управления базами данных (MySQL, PostgreSQL).
Защита данных в передаче
В сетевых протоколах блочные шифры используются в сочетании с режимами работы для обеспечения конфиденциальности:
- TLS/SSL: для защиты веб-трафика (HTTPS) применяются AES, Camellia, ГОСТ.
- IPsec: для защиты IP-пакетов используется AES в режиме CBC или CTR.
- Wi-Fi (WPA2/WPA3): для защиты беспроводных сетей применяется AES в режиме CCMP (Counter Mode with CBC-MAC).
Криптографические протоколы
Блочные шифры служат строительными блоками для более сложных криптографических примитивов:
- Хэш-функции: на основе блочных шифров (например, MDC-2, Davies-Meyer) строятся хэши.
- Коды аутентификации сообщений (MAC): CBC-MAC, CMAC (на основе блочного шифра).
- Генераторы псевдослучайных чисел: режимы CTR и OFB позволяют создавать поток случайных битов.
Государственные и военные системы
В России блочные шифры ГОСТ Р 34.12-2015 (Магма и Кузнечик) обязательны к применению в государственных информационных системах, обрабатывающих персональные данные и информацию ограниченного доступа. Аналогичные требования существуют в США (AES) и Китае (SM4).
Стойкость и атаки
Криптоанализ
Основные методы атак на блочные шифры:
- Полный перебор ключей: для 128-битного ключа требует 2^128 попыток, что практически невозможно при современных вычислительных мощностях.
- Дифференциальный криптоанализ: основан на анализе разностей между парами открытых текстов и соответствующих шифротекстов. Эффективен против слабых S-блоков.
- Линейный криптоанализ: использует линейные аппроксимации преобразований для нахождения ключа.
- Атаки на основе коллизий: для 64-битных блоков (например, DES) возможна атака «дня рождения» с вероятностью 50% при 2^32 блоках.
- Side-channel атаки: измерение времени выполнения, энергопотребления или электромагнитного излучения для восстановления ключа.
Квантовая угроза
Квантовые компьютеры, использующие алгоритм Гровера, могут сократить время полного перебора ключа: для 128-битного ключа потребуется 2^64 операций, что делает AES-128 уязвимым в перспективе. AES-256 (требует 2^128 квантовых операций) считается стойким к квантовым атакам в обозримом будущем.
Примеры известных блочных шифров
AES (Rijndael)
- Длина блока: 128 бит.
- Длина ключа: 128, 192 или 256 бит.
- Количество раундов: 10 (128-битный ключ), 12 (192-битный), 14 (256-битный).
- Статус: стандарт NIST, широко применяется в мире.
DES
- Длина блока: 64 бита.
- Длина ключа: 56 бит (эффективная).
- Количество раундов: 16.
- Статус: устарел, заменён на AES.
ГОСТ 28147-89
- Длина блока: 64 бита.
- Длина ключа: 256 бит.
- Количество раундов: 32.
- Статус: заменён на ГОСТ Р 34.12-2015 (Магма и Кузнечик).
Кузнечик (ГОСТ Р 34.12-2015)
- Длина блока: 128 бит.
- Длина ключа: 256 бит.
- Количество раундов: 10.
- Статус: действующий российский стандарт.
Интересные факты
- Название «блочный шифр» происходит от принципа обработки данных — блоками фиксированной длины, в отличие от поточных шифров, работающих с потоком битов.
- Алгоритм AES был выбран в результате открытого конкурса NIST, в котором участвовали 15 кандидатов из разных стран.
- В 2017 году группа исследователей продемонстрировала атаку на AES-256 с использованием квантового компьютера D-Wave, но она была ограничена и не представляла практической угрозы.
- Российский стандарт ГОСТ 28147-89 долгое время был засекречен и опубликован только в 1994 году.
Источники
- Шнайер Б. «Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си» (1996).
- Menezes A., van Oorschot P., Vanstone S. «Handbook of Applied Cryptography» (1996).
- NIST. «Announcing the Advanced Encryption Standard (AES)» (2001).
- ГОСТ Р 34.12-2015 «Информационная технология. Криптографическая защита информации. Блочные шифры».
- Daemen J., Rijmen V. «The Design of Rijndael: AES — The Advanced Encryption Standard» (2002).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →