Режими роботи 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 це було б згубно.
Див. також: Симетричне шифрування