Народный

Безопасность

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).

Связанные термины