Безопасность
AES-256-GCM — симметричный шифр
Один из двух стандартных шифров современного VPN (рядом с ChaCha20-Poly1305). 256-битный ключ + GCM-режим аутентификации. Стандарт NIST с 2001 года.
Определение
AES-256-GCM — симметричный шифр на базе Advanced Encryption Standard с 256-битным ключом, работающий в режиме Galois/Counter Mode. AES стандартизован NIST в 2001 (FIPS 197). GCM как режим аутентифицированного шифрования — в 2007 (NIST SP 800-38D).
AES-256-GCM — один из двух основных шифров современных VPN (второй — ChaCha20-Poly1305). Используется в WireGuard, OpenVPN, IKEv2/IPsec, TLS 1.2/1.3, SSH-2.
Что значат части названия
- AES — block cipher, 128-битный размер блока. Работает с 128/192/256-битными ключами; «AES-256» — наиболее стойкий вариант.
- 256 — длина ключа в битах. 2^256 возможных ключей — больше, чем атомов в наблюдаемой вселенной.
- GCM (Galois/Counter Mode) — режим, превращающий block cipher в potok-шифр (stream cipher) и добавляющий аутентификационный тег (16 байт). За один проход даёт и confidentiality (шифрование), и integrity (защиту от модификации).
Почему GCM, а не CBC
До GCM популярным был CBC-режим. Проблемы CBC:
- Не parallelizable. Шифрование каждого блока зависит от предыдущего.
- Нет встроенной аутентификации — нужен отдельный HMAC поверх. Реализации часто делали encrypt-then-MAC неправильно (Lucky 13, padding-oracle атаки).
- Padding attacks — Vaudenay 2002, POODLE 2014.
GCM решает всё это: parallelizable (быстро на современных CPU), AEAD из коробки (нет шанса MAC’ить «не то»), нет padding.
Производительность
- С поддержкой AES-NI (Intel/AMD x86-64 с 2008, ARM v8 с 2013) — AES-256-GCM работает на скорости 4–10 GB/sec на одно ядро современного CPU. На потребительском процессоре — сотни мегабит/сек на одно соединение.
- Без AES-NI (старое железо, IoT, маршрутизаторы дешёвые) — на порядок медленнее. На roteur’е с MIPS-CPU — 30–80 Mbit/sec. В этих сценариях ChaCha20-Poly1305 быстрее.
Поэтому современные VPN-клиенты автоматически выбирают AES-256-GCM на десктопе/сервере и ChaCha20-Poly1305 на мобильниках (большинство ARM-телефонов сейчас имеют AES-аппаратное, но логика осталась).
Безопасность
- 256-битный ключ — overkill для классических атак. Лучшая известная атака на AES-256 — biclique attack (Bogdanov et al., 2011) — снижает стойкость на 2 бита. Это ничего не меняет на практике.
- Quantum threat: Grover’s algorithm даёт квадратичное ускорение поиска. После «квантового апокалипсиса» AES-256 эффективно станет AES-128 — что всё ещё далеко вне досягаемости. AES-128 уже сейчас неуязвим практически. Поэтому AES-256 называют «post-quantum safe» (для симметрики).
- Risk: nonce reuse. GCM критически плох, если один nonce используется дважды с тем же ключом. Все приличные реализации (WireGuard, TLS 1.3) защищены от этого на уровне протокола.
AES-256 в современных VPN
- WireGuard — не использует AES. Только ChaCha20-Poly1305 (упрощение криптонабора).
- OpenVPN — AES-256-GCM (предпочтительный) или ChaCha20-Poly1305 (требует OpenVPN 2.5+ с OpenSSL 1.1.1+).
- TLS 1.3 — AES-256-GCM, ChaCha20-Poly1305, AES-128-GCM, AES-128-CCM — клиент и сервер договариваются.
- IKEv2/IPsec — AES-256-GCM (рекомендуется).
- Shadowsocks-2022 — AES-256-GCM или ChaCha20-Poly1305.
Источники
- FIPS 197 — AES спецификация.
- NIST SP 800-38D — GCM режим.
- Bogdanov, Khovratovich, Rechberger — «Biclique Cryptanalysis of the Full AES» (2011).
Связанные термины
- ChaCha20-Poly1305 — альтернативный AEAD-шифр.
- TLS 1.3 — использует AES-256-GCM.
- Perfect Forward Secrecy — свойство ключей выше шифра.