EMZETT.
Войти

Режимы работы AES: ECB, CBC и GCM

Коротко: AES шифрует только блоки по 16 байт. Режим работы определяет, как безопасно обрабатывается несколько блоков. Выбор решает вопрос безопасности.

Подробнее: Хорошая практика сегодня — GCM (или ChaCha20-Poly1305), потому что он одновременно шифрует и обнаруживает подмену. ECB непригоден.

Подробности

  • ECB: Каждый блок шифруется независимо. Одинаковые блоки открытого текста дают одинаковые блоки шифртекста, и узоры остаются видимыми (знаменитая картинка «пингвин ECB»). Не использовать.
  • CBC: Каждый блок перед шифрованием связывается (XOR) с предыдущим блоком шифртекста. Нужны случайный вектор инициализации (IV) и дополнение (padding). Без дополнительной контрольной суммы уязвим к атакам padding-oracle.
  • CTR: Превращает AES в потоковый шифр: шифруется счётчик и объединяется с открытым текстом. Распараллеливается, но без защиты от подмены.
  • GCM: CTR плюс метка аутентификации. См. AEAD.
  • Правило: Никогда не использовать одну и ту же пару «ключ — nonce» дважды, для GCM это было бы губительно.

См. также: Симметричное шифрование