Определение простыми словами
AES — это «сейф с одним ключом»: тот же ключ, которым данные зашифровали, нужен и для расшифровки. В отличие от RSA, асимметрии нет — поэтому AES быстро работает на больших объёмах и реализован аппаратно во всех современных процессорах через инструкции AES-NI.
Стандарт основан на алгоритме Rijndael и блоке размером 128 бит. Для длинных сообщений применяется один из режимов: CBC, CTR, GCM. На практике предпочитают AES-256-GCM — он совмещает шифрование и аутентификацию данных. На VPS с современными CPU AES работает аппаратно через инструкции AES-NI.
Сравнение режимов и алгоритмов
| Алгоритм / режим | Особенности | Где используется |
|---|---|---|
| AES-128-GCM | Быстрое шифрование с проверкой целостности, короткий ключ | HTTPS, мобильные клиенты |
| AES-256-GCM | Максимальный запас прочности, аппаратная поддержка | Бэкапы, VPN, диски |
| AES-256-CBC | Старый режим, требует отдельного HMAC, без AEAD | Совместимость со старым ПО |
| ChaCha20-Poly1305 | Софтверная альтернатива без AES-NI | Мобильные устройства, OpenSSH |
Кейсы использования
- Шифрование канала в TLS 1.3 — после рукопожатия трафик идёт через AES-GCM.
- Полнодисковое шифрование LUKS, BitLocker, FileVault — данные на дисках сервера и ноутбука хранятся в виде шифротекста.
- VPN-туннели OpenVPN, WireGuard и IPsec используют AES для пакетов с пользовательским трафиком.
- Шифрование архивов (7z, zip с AES-256) и баз паролей KeePass, Bitwarden.
- Резервные копии Borg, restic, duplicity по умолчанию шифруют блоки через AES перед загрузкой в S3.
Негативный сценарий: AES сам по себе не защищает от утечки ключа. Если ключ лежит рядом с шифротекстом или передаётся по открытому каналу, шифр становится бесполезным. Поэтому AES почти всегда работает в паре с RSA или ECDH, которые безопасно доставляют сессионный ключ.
Технические детали
openssl enc -aes-256-cbc -salt -pbkdf2 -in data.tar -out data.tar.enc
openssl enc -d -aes-256-cbc -pbkdf2 -in data.tar.enc -out data.tar
openssl speed -evp aes-256-gcm
cryptsetup luksFormat --cipher aes-xts-plain64 --key-size 512 /dev/sdb1
cryptsetup luksOpen /dev/sdb1 secure
grep -m1 aes /proc/cpuinfo
🔥 Где это применяется
Частые вопросы
AES-128 уже небезопасен?
Нет. Полный перебор 128-битного ключа недостижим даже теоретически на горизонте десятилетий. AES-256 берут как запас на случай прогресса в квантовых вычислениях и в задачах долговременного хранения данных.
Что лучше: AES или ChaCha20?
На сервере с инструкциями AES-NI быстрее AES-GCM. На мобильных устройствах без аппаратного AES — ChaCha20-Poly1305. Современный TLS 1.3 поддерживает оба варианта и выбирает по согласованию.
Зачем нужен режим GCM?
GCM (Galois/Counter Mode) одновременно шифрует данные и считает тег аутентичности. Это защищает не только от чтения, но и от подмены битов в шифротексте — атакующий не сможет незаметно изменить пакет.