В России AES не является государственным стандартом шифрования. Для государственных информационных систем, банковской тайны и любой криптографии, подлежащей сертификации ФСБ, обязателен ГОСТ Р 34.12-2018 («Кузнечик») или более старый ГОСТ 28147-89 — AES там использовать нельзя, даже если он криптографически ничуть не хуже.
Почему у России свой блочный шифр
«Кузнечик» — блочный шифр с размером блока 128 бит, концептуально похожий на AES: тоже сеть подстановок-перестановок (SP-сеть), тоже раунды с S-блоками. Но это независимая разработка, стандартизированная ФСБ и Росстандартом, а не международный алгоритм NIST. Это классический пример «криптографического суверенитета» — государство требует использовать национальный алгоритм там, где нужна сертификация, вне зависимости от того, изучен ли он мировым криптосообществом так же тщательно, как AES.
Режимы работы: CBC против GCM
Если же вы шифруете данные для внутреннего использования, вне сертифицированных систем, AES остаётся обычным выбором — и здесь важен режим. CBC (Cipher Block Chaining) сцепляет каждый блок с предыдущим, обеспечивая конфиденциальность, но не проверяя целостность. GCM (Galois/Counter Mode) добавляет аутентификацию — одновременно шифрует и гарантирует, что данные не подменили, поэтому считается современным выбором по умолчанию.
Зачем нужен вектор инициализации (IV)
Без вариативности одинаковые данные с одним ключом всегда дают одинаковый шифртекст — а это утечка информации о повторах. IV — уникальное случайное значение для каждой операции шифрования, гарантирующее разный результат даже при одинаковых входных данных и ключе.
Зачем это нужно
- Шифровать данные, не подпадающие под требования о сертифицированной криптографии.
- Понимать, почему в российском enterprise-софте рядом с AES часто встречается «Кузнечик» или «Магма».
- Диагностировать проблемы совместимости при обмене зашифрованными данными с зарубежными системами.
AES-128 против AES-256: нужен ли более длинный ключ
Интуитивно кажется, что вдвое более длинный ключ означает вдвое лучшую защиту, но на практике AES-128 и сегодня считается криптографически надёжным. AES-256 даёт больший запас прочности на случай будущих теоретических прорывов, но обходится немного дороже в вычислениях — выбор между ними это компромисс производительности и запаса прочности, а не «безопасно против небезопасно».