Блочное симметричное шифрование
Блочное симметричное шифрование — это класс криптографических алгоритмов, в которых шифрование и расшифрование данных выполняются с использованием одного и того же секретного ключа, а исходное сообщение перед обработкой разбивается на блоки фиксированной длины. В отличие от поточных шифров, обрабатывающих данные побитно или побайтно, блочные шифры работают с целыми блоками (обычно 64, 128 или 256 бит), что определяет их математическую структуру и области применения.
Основные принципы
Симметричность
Блочное симметричное шифрование основано на том, что отправитель и получатель используют один и тот же ключ. Безопасность системы целиком зависит от сохранения ключа в тайне. Если ключ скомпрометирован, любое зашифрованное сообщение может быть расшифровано третьей стороной.
Блочная структура
Исходный текст (открытый текст) делится на блоки фиксированного размера. Если длина сообщения не кратна размеру блока, применяется дополнение (padding) — добавление специальных битов до полного блока. Каждый блок обрабатывается независимо или в зависимости от соседних блоков в зависимости от выбранного режима шифрования.
Ключевое пространство
Стойкость блочного шифра напрямую зависит от длины ключа. Чем длиннее ключ, тем больше возможных комбинаций и тем сложнее перебор (атака методом «грубой силы»). Современные стандарты, такие как AES, используют ключи длиной 128, 192 или 256 бит.
История
Ранние разработки
Первым широко известным блочным шифром стал DES (Data Encryption Standard), разработанный в 1970-х годах компанией IBM при участии Агентства национальной безопасности США. DES использовал 56-битный ключ и блоки по 64 бита. В 1990-х годах его стойкость была признана недостаточной из-за возможности полного перебора ключа.
Эпоха AES
В 1997 году Национальный институт стандартов и технологий США (NIST) объявил конкурс на создание нового стандарта симметричного шифрования. Победителем в 2001 году стал алгоритм Rijndael, разработанный бельгийскими криптографами Йоаном Дайменом и Винсентом Рэйменом. Он получил название Advanced Encryption Standard (AES) и использует блоки по 128 бит с ключами 128, 192 или 256 бит. AES стал общепринятым мировым стандартом.
Российский стандарт
В России действует национальный стандарт симметричного шифрования ГОСТ 28147-89, разработанный ещё в советское время. Он использует 256-битный ключ и блоки по 64 бита. В 2015 году был принят новый стандарт ГОСТ Р 34.12-2015, включающий алгоритм «Кузнечик» с блоками 128 бит и ключом 256 бит, а также алгоритм «Магма», основанный на ГОСТ 28147-89.
Классификация блочных шифров
По структуре
- Сеть Фейстеля — конструкция, в которой блок данных делится на две половины, и на каждом раунде одна половина преобразуется с использованием ключа, а затем объединяется с другой. Примеры: DES, ГОСТ 28147-89.
- Подстановочно-перестановочная сеть (SP-сеть) — данные проходят через чередующиеся слои подстановок (S-блоки) и перестановок (P-блоки). Пример: AES.
- LA-структура — использует операции сложения и умножения в конечных полях. Пример: IDEA.
По размеру блока
- 64-битные (DES, ГОСТ 28147-89, Blowfish)
- 128-битные (AES, «Кузнечик», Twofish)
- 256-битные (редко, например, некоторые варианты RC6)
Режимы работы блочных шифров
Поскольку блочные шифры обрабатывают фиксированные блоки, для шифрования сообщений произвольной длины применяются режимы работы (mode of operation). Наиболее распространённые:
ECB (Electronic Codebook)
Каждый блок шифруется независимо. Простейший режим, но уязвим к атакам по шаблону: одинаковые блоки открытого текста дают одинаковые блоки шифротекста. Используется редко, в основном для коротких данных.
CBC (Cipher Block Chaining)
Перед шифрованием каждый блок складывается по модулю 2 (XOR) с предыдущим блоком шифротекста. Для первого блока используется вектор инициализации (IV). Устраняет недостатки ECB, но требует последовательной обработки.
CFB (Cipher Feedback)
Превращает блочный шифр в поточный: шифруется предыдущий блок шифротекста, затем результат XOR с открытым текстом. Позволяет шифровать данные меньшими порциями.
OFB (Output Feedback)
Генерирует поток ключей (keystream) путём многократного шифрования вектора инициализации. Поток ключей затем XOR с открытым текстом. Устойчив к ошибкам передачи, но требует синхронизации.
CTR (Counter)
Создаёт поток ключей путём шифрования последовательно увеличивающихся значений счётчика. Поддерживает параллельную обработку, что даёт высокую производительность. Популярен в современных системах.
GCM (Galois/Counter Mode)
Сочетает шифрование в режиме CTR с аутентификацией на основе умножения в поле Галуа. Обеспечивает конфиденциальность и целостность данных. Широко применяется в протоколах TLS и IPsec.
Устройство и характеристики
Раунды
Блочные шифры состоят из нескольких повторяющихся раундов. Каждый раунд включает подстановки, перестановки и операции с раундовым ключом. Количество раундов варьируется: 10–14 для AES (в зависимости от длины ключа), 32 для ГОСТ 28147-89, 16 для DES.
S-блоки
S-блоки (substitution boxes) — нелинейные таблицы замены, обеспечивающие криптостойкость. Они преобразуют входные биты в выходные по нелинейному закону. В AES используется один S-блок для всех раундов, в ГОСТ 28147-89 — восемь различных S-блоков, которые могут быть секретными.
Ключевое расписание
Процедура генерации раундовых ключей из основного ключа. Качество ключевого расписания влияет на стойкость к атакам на связанных ключах. В AES ключевое расписание простое и эффективное, в ГОСТ 28147-89 — циклическое сдвиговое.
Применение
Шифрование данных на дисках
Блочные шифры используются для шифрования жёстких дисков и SSD (например, BitLocker, LUKS). Обычно применяется режим XTS (XEX-based Tweaked CodeBook mode), специально разработанный для хранения данных.
Сетевые протоколы
Протоколы TLS, IPsec и SSH используют блочные шифры (AES, Camellia) для защиты передаваемых данных. Режимы GCM и CBC наиболее распространены.
Криптографические контейнеры
Форматы VeraCrypt, TrueCrypt и LUKS применяют блочные шифры для создания зашифрованных томов.
Электронная подпись и хеширование
Блочные шифры лежат в основе некоторых хеш-функций (например, Whirlpool построен на основе AES) и алгоритмов генерации псевдослучайных чисел.
Криптоанализ и атаки
Атаки перебором
Наиболее прямолинейная атака — перебор всех возможных ключей. Для 128-битного ключа требуется 2^128 попыток, что практически нереализуемо с современными вычислительными мощностями. Однако квантовые компьютеры теоретически могут сократить сложность до 2^64 (алгоритм Гровера).
Линейный криптоанализ
Статистический метод, использующий линейные аппроксимации между открытым текстом, шифротекстом и ключом. Впервые применён к DES в 1993 году.
Дифференциальный криптоанализ
Основан на анализе влияния разности между парами открытых текстов на разность шифротекстов. Эффективен против некоторых шифров, но современные алгоритмы (AES) устойчивы к нему.
Атаки по побочным каналам
Используют физические утечки информации: время выполнения, потребляемую мощность, электромагнитное излучение. Для защиты применяются методы маскирования и скремблирования.
Сравнение популярных блочных шифров
| Шифр | Размер блока | Длина ключа | Количество раундов | Структура |
|---|---|---|---|---|
| AES | 128 бит | 128/192/256 бит | 10/12/14 | SP-сеть |
| DES | 64 бита | 56 бит | 16 | Сеть Фейстеля |
| ГОСТ 28147-89 | 64 бита | 256 бит | 32 | Сеть Фейстеля |
| «Кузнечик» (ГОСТ Р 34.12-2015) | 128 бит | 256 бит | 10 | SP-сеть |
| Blowfish | 64 бита | 32–448 бит | 16 | Сеть Фейстеля |
| Twofish | 128 бит | 128/192/256 бит | 16 | Сеть Фейстеля |
| Camellia | 128 бит | 128/192/256 бит | 18/24 | Сеть Фейстеля |
Интересные факты
- Алгоритм DES был разработан с 56-битным ключом, что, по мнению некоторых экспертов, было сделано намеренно, чтобы спецслужбы могли его взламывать. В 1998 году DES был взломан за 56 часов с помощью специализированной машины Deep Crack.
- AES был выбран из 15 кандидатов в ходе открытого международного конкурса. Алгоритм Rijndael победил благодаря сочетанию высокой скорости, стойкости и простоты реализации.
- В России стандарт ГОСТ 28147-89 долгое время был засекречен, и S-блоки не публиковались. После рассекречивания оказалось, что существуют разные варианты S-блоков, что может приводить к несовместимости реализаций.
- Блочные шифры могут быть использованы для построения хеш-функций по схеме Дэвиса — Мейера, где блок шифруется с использованием предыдущего хеша в качестве ключа.
Источники
- Шнайер Б. «Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си» (1996)
- Менезес А., ван Орсхот П., Ванстоун С. «Справочник по прикладной криптографии» (1996)
- ГОСТ Р 34.12-2015 «Информационная технология. Криптографическая защита информации. Блочные шифры»
- Национальный институт стандартов и технологий США (NIST) — FIPS PUB 197: Advanced Encryption Standard (2001)
- Daemen J., Rijmen V. «The Design of Rijndael: AES — The Advanced Encryption Standard» (2002)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →