AES открыт и за двадцать лет не взломан. Почему же Россия, Китай и другие державы делают собственные шифры вместо того, чтобы взять готовый?
Полное описание AES опубликовано и доступно любому: оно записано в открытом стандарте, встроено в каждый браузер и телефон, разобрано в учебниках. Его публично пытаются сломать больше двадцати лет — и не могут. Казалось бы, идеальный общий стандарт для всех. Но нет: Россия приняла свой шифр — «Кузнечик», Китай — SM4, собственные стандарты есть и у других стран.
Если алгоритм открыт и за двадцать лет в нём не нашли ни одной практической дыры, что заставляет целые государства годами разрабатывать свой шифр вместо готового? Может, «прозрачность» AES не такая уж и полная?
Сначала разберёмся, почему к математике AES почти нет претензий, — а потом вернёмся к тому, почему это убеждает не всех. AES — это подстановочно-перестановочная сеть (SP-сеть): он не делит блок пополам, как сеть Фейстеля, а держит его в матрице байт и каждый раунд меняет её целиком четырьмя слоями операций. Поэтому каждая операция обязана быть обратимой.
Блок данных раскладывается по ячейкам квадратной матрицы. В настоящем AES это матрица 4×4 из 16 байт (128 бит); в игре Ludus Lab — матрица 2×2 из четырёх полубайтов (16 бит). Все дальнейшие шаги работают со строками и столбцами этой матрицы.
Каждый байт заменяется другим по фиксированной таблице — S-блоку. Это «запутывание» (confusion): единственная нелинейная операция AES. Без неё весь шифр свёлся бы к системе линейных уравнений и решался бы напрямую.
Строки матрицы циклически сдвигаются, а столбцы перемешиваются между собой. Это «рассеивание» (diffusion): один изменённый бит входа за пару раундов расходится по всему блоку. Обе операции линейны и обратимы.
Состояние складывается по модулю 2 (XOR) с ключом этого раунда. Ключи раундов заранее выводятся из общего ключа отдельной процедурой — расписанием ключей. Именно этот шаг и нельзя отменить, не зная ключа.
Слои повторяются много раз: 10, 12 или 14 раундов в зависимости от длины ключа. В последнем раунде MixColumns нет — он ничего не добавил бы к стойкости. Чтобы расшифровать, Боб выполняет обратные операции в обратном порядке — но только зная ключ.
Каждый шаг обратим — но все вместе они переплетают блок с ключом так, что прокрутить назад без ключа невозможно.
Сами понятия confusion и diffusion ввёл Клод Шеннон ещё в 1949 году: он предложил собирать стойкий шифр из многократно повторённых простых замен и перестановок. По этому рецепту в начале 1970-х был устроен и ранний вариант шифра Lucifer в IBM; поздний Lucifer стал сетью Фейстеля и превратился в DES, а AES вернулся к исходной идее.
Выбирали AES невиданно открыто: в 1997–2000 годах институт стандартов США (NIST) провёл международный конкурс — 15 шифров со всего мира и три года публичного анализа, где слабости искал кто угодно. Победил Rijndael бельгийцев Йоана Дамена и Винсента Рэймена, и в 2001 году он стал стандартом. Это честный процесс и реальная сила AES. И всё же открытость алгоритма — не то же самое, что доверие к тому, кто его выбрал и кто держит стандарт в руках.
У недоверия есть причины в истории. Когда-то АНБ тайно переправило S-блоки шифра DES — позже выяснилось, что ради защиты от атаки, но секретность на двадцать лет породила подозрения. А в 2013 году всплыла история Dual_EC_DRBG — стандартного генератора случайных чисел NIST, в который, судя по всему, АНБ заложило лазейку. В самом AES ничего подобного не нашли — больше того, его S-блок построен по открытому алгебраическому правилу, а не на «магических» числах. Но для государства «скорее всего, чисто» — недостаточное основание, чтобы доверить шифру свои тайны.
Отсюда — криптографический суверенитет: свой шифр, свой регулятор, аудит силами своих экспертов и независимость от чужого стандарта. Это не обязательно значит, что в AES есть закладка, — это значит, что национальную безопасность не строят на доверии к чужому ведомству.
Де-факто мировой стандарт гражданского интернета: им зашифрован почти весь веб-трафик, Wi-Fi и диски. Регулятор — американский NIST.
Открытый, но под чужим контролем
Российский стандарт ГОСТ Р 34.12-2015 — тоже SP-сеть, как AES: блок 128 бит, ключ 256 бит, 9 раундов и финальное сложение с ключом. Регулятор — ФСБ (ТК 26).
Свой шифр, свой регулятор
Национальный шифр КНР (стандарт GB/T 32907): блок и ключ по 128 бит, 32 раунда. Обязателен во многих применениях внутри страны, например в китайском Wi-Fi (WAPI).
Криптографический суверенитет Китая
И это не всё: почти у каждой крупной державы есть свой блочный шифр, а общая у них — сама схема SP-сети, на которой построено большинство современных алгоритмов:
В интерактивной демонстрации Ludus Lab работают те же операции, что и в настоящем AES, но на крошечном блоке 16 бит (матрица 2×2, 2 раунда) — чтобы каждый шаг был виден целиком. Вы сможете:
Оба шифра — подстановочно-перестановочные сети, но с разной историей и разными параметрами:
| Параметр | AES | Кузнечик (ГОСТ Р 34.12-2015) |
|---|---|---|
| Страна разработки | Бельгия / США (стандарт) | Россия |
| Год принятия | 2001 | 2015 |
| Архитектура | SP-сеть | SP-сеть |
| Размер блока | 128 бит | 128 бит |
| Длина ключа | 128 / 192 / 256 бит | 256 бит |
| Число раундов | 10 / 12 / 14 | 9 + финальное сложение с ключом |
| Как выбирали | Открытый международный конкурс | Разработка под эгидой регулятора |
| Регулятор | NIST (США) | ФСБ России (ТК 26) |
За двадцать лет публичного анализа лучшие атаки на AES-128 (например, «biclique») сокращают перебор лишь примерно до 2126 вместо 2128 — то есть почти не дают выигрыша. На практике это означает: короткого пути нет, остаётся только перебор ключей, а он невозможен.
Даже квантовый компьютер не спасает атакующего: алгоритм Гровера лишь «ополовинивает» стойкость, превращая 256-битный ключ в эквивалент 128-битного. Поэтому AES-256 считается устойчивым и к квантовой угрозе — и именно его рекомендуют для долгосрочной защиты.
Замочек в адресной строке — это чаще всего AES-GCM: он шифрует почти весь веб-трафик в TLS
WPA2/WPA3 защищают сеть режимом AES-CCM; на AES построено и шифрование в популярных мессенджерах
BitLocker, FileVault и шифрование памяти смартфонов используют AES; процессоры ускоряют его командами AES-NI
Теперь вы понимаете, и как устроен AES, и почему его открытость не делает его единым шифром для всех: там, где кончается математика, начинается вопрос доверия и контроля
В демонстрации вы на 16 битах пройдёте весь путь от открытого текста до шифротекста и обратно — и увидите, почему эту стену невозможно пройти без ключа