Шифрование AES-256: что оно значит для ваших данных
Что такое AES-256: как работает шифр, почему важны 256-битные ключи, что добавляет режим GCM и что проверить, если приложение заявляет шифрование AES-256.
Что такое AES-256?
AES-256 — симметричный блочный шифр: Advanced Encryption Standard с 256-битным ключом. Один и тот же ключ и шифрует, и расшифровывает. Шифр обрабатывает данные 128-битными блоками за 14 раундов; NIST стандартизировал его как FIPS 197 в 2001 году.
В названии сложены три факта. AES — название алгоритма, который NIST выбрал в 2001 году из заявки Rijndael. 256 — длина ключа в битах; она определяет, сколько ключей придется перебрать атакующему. Режим, например GCM или CBC, обычно пишут после названия: AES-256-GCM. Он определяет, как блоки связываются друг с другом и проверяется ли шифротекст на изменения. Само по себе «AES-256» сообщает шифр и размер ключа. Оно не сообщает режим и не сообщает, у кого ключ.
AES-256 — это Advanced Encryption Standard с 256-битным ключом, стандартизированный NIST как FIPS 197 в 2001 году. Этот симметричный алгоритм шифрования правительство США использует для секретной информации, банки — для финансовых транзакций, а приложения с упором на безопасность — для защиты хранимых и передаваемых данных. У AES-256 2^256 возможных ключей — это больше оценочного числа атомов в наблюдаемой Вселенной. Ни одна известная атака не сокращает это пространство ключей до вычислительно реального перебора.
В этом руководстве объясняется, что на самом деле делает AES-256, почему важен размер ключа, что означают разные режимы (ECB, CBC, GCM) и на что смотреть, когда приложение заявляет шифрование AES-256.
Что на самом деле делает AES
AES — симметричный блочный шифр. «Симметричный» значит, что один и тот же ключ шифрует и расшифровывает. «Блочный» значит, что он обрабатывает данные блоками фиксированного размера по 128 бит (16 байт).
Алгоритм берет ваши данные (открытый текст), объединяет их с ключом и через ряд математических преобразований выдает перемешанный результат (шифротекст). Эти преобразования — подстановка, сдвиг, перемешивание и добавление ключа — повторяются фиксированное число раундов. В AES-256 их 14.
Каждый раунд применяет четыре операции:
- SubBytes: каждый байт заменяется по фиксированной таблице подстановки (S-box), что вносит нелинейность.
- ShiftRows: байты в каждой строке сдвигаются на разное смещение, распределяя данные по позициям.
- MixColumns: столбцы перемешиваются умножением матриц в конечном поле, распространяя изменения по байтам.
- AddRoundKey: раундовый ключ (производный от основного) объединяется с данными операцией XOR.
После 14 раундов открытый текст полностью перемешан. Обратные операции с правильным ключом восстанавливают исходные данные. Без ключа шифротекст неотличим от случайного шума.
Почему важны 256 бит
«256» в AES-256 — это длина ключа: 256 бит. Она определяет, сколько возможных ключей атакующему придется перебрать, чтобы взломать шифрование полным перебором.
| Размер ключа | Возможных ключей | Время полного перебора (1 трлн попыток/с) |
|---|---|---|
| 56 бит (DES) | 7,2 x 10^16 | ~20 часов |
| 128 бит (AES-128) | 3,4 x 10^38 | 10^13 лет (10 трлн лет) |
| 256 бит (AES-256) | 1,16 x 10^77 | 10^51 лет |
Для сравнения: возраст Вселенной — примерно 1,38 x 10^10 лет. Полный перебор AES-256 занял бы примерно в 10^41 раз больше времени, чем возраст Вселенной, даже при триллионе попыток в секунду.
AES-128 уже невозможно взломать полным перебором за разумное время. AES-256 дает дополнительный запас на случай будущих прорывов в вычислениях, включая квантовые. Алгоритм Гровера (квантовая атака) фактически вдвое сокращает длину ключа, превращая AES-256 в эквивалент AES-128, что по-прежнему невыполнимо. AES-128 сократился бы до 64-битной эффективной стойкости, а она потенциально уязвима. Поэтому приложения, для которых важна безопасность, предпочитают AES-256.
Режимы AES: почему они важны
Сам по себе AES шифрует только один 128-битный блок за раз. Для реальных данных (фото, документов, видео) нужен «режим работы», который обрабатывает данные длиннее 16 байт. Режим определяет, как блоки связываются друг с другом, и сильно влияет на безопасность.
ECB (Electronic Codebook) — не использовать
Каждый блок шифруется независимо одним и тем же ключом. Одинаковые блоки открытого текста дают одинаковые блоки шифротекста. Из-за этого в данных видны закономерности. Классическая демонстрация: при шифровании растрового изображения в ECB структура картинки сохраняется в шифротексте, и содержимое можно узнать. ECB входит в стандарт, но его никогда не следует использовать для данных со структурой или повторяющимися закономерностями (а это почти все реальные данные).
CBC (Cipher Block Chaining) — устаревший
Перед шифрованием каждый блок объединяется операцией XOR с предыдущим блоком шифротекста. Это устраняет утечку закономерностей, свойственную ECB. CBC десятилетиями был стандартным режимом, но в большинстве приложений его сменил GCM. CBC требует случайного вектора инициализации (IV) и не дает встроенной аутентификации (нельзя обнаружить, что шифротекст изменили).
GCM (Galois/Counter Mode) — современный стандарт
GCM объединяет шифрование в режиме счетчика с аутентификацией в поле Галуа. Он обеспечивает аутентифицированное шифрование: шифрует данные И создает тег аутентификации, который выявляет любое изменение шифротекста. Если изменить хоть один бит, расшифровка завершится ошибкой, а не выдаст поврежденный открытый текст.
NIST стандартизировал GCM в SP 800-38D (2007). Это рекомендованный режим для новых реализаций.
AES-256-GCM — это AES с 256-битным ключом в режиме Galois/Counter Mode. Именно его следует использовать приложениям, для которых важна безопасность, и именно его Vaultaire использует для шифрования содержимого фото и файлов.
| Режим | Утечка закономерностей | Аутентификация | Текущая рекомендация |
|---|---|---|---|
| ECB | Да (серьезная) | Нет | Не использовать |
| CBC | Нет | Нет (нужен отдельный MAC) | Устаревший; допустим с HMAC |
| GCM | Нет | Да (встроенная) | Рекомендован для новых реализаций |
Что AES-256 означает для хранения фото
Когда приложение-сейф для фото заявляет «шифрование AES-256», должны выполняться три условия:
Содержимое файлов зашифровано AES-256. Исходные данные фото (пиксели, метаданные, миниатюра) превращаются в шифротекст с помощью 256-битного ключа.
Для каждого файла используется уникальный вектор инициализации (IV). Если две одинаковые фотографии зашифрованы одним ключом, шифротекст должен различаться. Для этого нужен уникальный IV на каждый файл. Без него статистический анализ может выявить закономерности.
Режим обеспечивает аутентификацию (GCM или аналог). Без аутентификации атакующий может незаметно изменить шифротекст. Результатом расшифровки станут поврежденные данные, а не ошибка.
Чего не говорит «AES-256» на маркетинговой странице
AES-256 необходим, но недостаточен. От нескольких важнейших факторов зависит, защищает ли шифрование ваши данные на самом деле:
Важно, как получают ключ. Как генерируется 256-битный ключ? Если его выводят из 4-значного PIN-кода слабой функцией KDF, фактическая стойкость равна 4 цифрам (10 000 комбинаций), а не 256 битам. Надежная реализация использует PBKDF2 с большим числом итераций или Argon2 с подходящими параметрами памяти и времени. Vaultaire использует PBKDF2 с HMAC-SHA512 и 600 000 итераций, чтобы вывести локальный ключ сейфа из выбранного узора 5x5 и соли устройства. PBKDF2 делает каждую попытку угадать дороже, но не поднимает энтропию узора до 256 бит.
Важно, где хранится ключ. Где находится ключ? Если он хранится открытым текстом в песочнице приложения, вредоносная программа с доступом к файлам может его прочитать. Secure Enclave от Apple поддерживает определенные операции с неэкспортируемыми ключами, а не произвольные ключи AES, переданные приложением. Схемы с симметричными ключами могут вместо этого опираться на Keychain и Data Protection, поэтому документация должна называть точный API и класс защиты, а не просто писать «с аппаратной защитой».
Важно, что именно шифруется. Некоторые приложения шифруют содержимое файлов, но оставляют имена файлов, миниатюры и метаданные незашифрованными. Криминалист может не увидеть вашу фотографию, но увидит «vacation-beach-2025.jpg» в списке файлов. Полноценное шифрование отдельно защищает и метаданные.
Важен жизненный цикл ключа. Как долго расшифрованный ключевой материал остается доступным? Vaultaire сбрасывает состояние активного сейфа и главного ключа при блокировке или закрытии и требует повторной разблокировки. Пока сейф открыт, байты симметричного ключа неизбежно находятся в памяти приложения, а Swift и iOS не позволяют приложению доказать, что каждая временная копия была перезаписана.
AES-256 на практике: кто его использует
| Организация | Применение | Режим |
|---|---|---|
| Правительство США (АНБ) | Секретная информация | GCM (или CTR с отдельной аутентификацией) |
| Apple (iCloud ADP) | Сквозное шифрование iCloud | GCM |
| Signal | Шифрование сообщений | CBC (с HMAC для аутентификации) |
| Банки | Шифрование финансовых транзакций | GCM |
| 1Password | Менеджер паролей | GCM |
| Vaultaire | Сейф для фото и файлов | GCM |
| VeraCrypt | Шифрование дисков | XTS (оптимизирован для дисковых блоков) |
Распространенные заблуждения
«Шифрование военного уровня» ничего конкретного не означает. Маркетинговые страницы используют эту фразу, потому что она звучит внушительно. AES-256 используют военные. AES-128 тоже. Фраза не сообщает ни режим, ни способ вывода ключа, ни место его хранения, ни то, какие данные на самом деле зашифрованы.
«256-битное шифрование» может означать не AES-256. 256-битные ключи используют и другие шифры (ChaCha20, Twofish, Serpent). Проверьте, какой алгоритм указан. Современный стандарт — AES-256-GCM.
AES-256 не защищает от слабого пароля. Если ваш пароль «1234», а вывод ключа слабый, фактическая стойкость шифрования равна 4 цифрам, какой бы сильной ни была сама шифровальная схема. Цепь рвется в самом слабом звене.
AES-256 не защищает используемые данные. Когда вы смотрите фото, его приходится расшифровать в памяти. В этот момент оно находится в RAM открытым текстом. Правильные реализации сокращают это окно до минимума и быстро стирают расшифрованные данные.
Часто задаваемые вопросы
Что означает AES-256?
Advanced Encryption Standard с 256-битным ключом. AES — шифр, который NIST стандартизировал как FIPS 197 в 2001 году, выбрав конструкцию Rijndael. 256 — длина ключа в битах. Суффикс вроде AES-256-GCM добавляет режим работы, а это отдельный выбор, не связанный ни с шифром, ни с размером ключа.
Можно ли взломать AES-256?
Нет известных атак, которые взламывали бы AES-256, сокращая полное пространство ключей. Лучшая известная атака (атака biclique Богданова, Ховратовича и Рехбергера, 2011) сокращает AES-256 с 2^256 операций до 2^254,4 — теоретическое улучшение, которое на практике с вычислительной точки зрения ничего не значит. AES-256 остается невзломанным.
Устойчив ли AES-256 к квантовым компьютерам?
В основном да. Квантовый алгоритм Гровера вдвое сокращает эффективную длину ключа: против квантовых атак AES-256 становится эквивалентен 128-битной стойкости. AES-128 сократился бы до 64-битной эффективной стойкости, а она потенциально уязвима. Поиску Гровера против AES-256 все равно понадобится около 2^128 операций, а это непрактично.
Чем AES-128 отличается от AES-256?
AES-128 использует 128-битный ключ (10 раундов). AES-256 использует 256-битный ключ (14 раундов). Оба считаются стойкими к современным атакам. AES-256 дает больший запас на случай будущих прорывов, особенно в квантовых вычислениях. Из-за дополнительных раундов AES-256 примерно на 40% медленнее AES-128, но аппаратное ускорение делает эту разницу незаметной на современных устройствах.
Замедляет ли шифрование AES-256 мой телефон?
При обычном использовании незаметно. Современные процессоры Apple дают аппаратное ускорение AES через системные криптографические библиотеки. Это не значит, что операция AES приложения выполняется внутри Secure Enclave. Время по-прежнему зависит от размера файла, устройства, накопителя и реализации, поэтому заявление о безопасности должно опираться на измерения, а не на универсальную цифру в миллисекундах.
Как узнать, действительно ли приложение использует AES-256?
Смотрите документацию по безопасности приложения, а не только маркетинговую страницу. Ищите конкретный алгоритм и режим, иерархию ключей, параметры вывода ключа, точное использование Keychain или Secure Enclave, работу с nonce, путь восстановления и то, шифруются ли также метаданные. Открытый код и независимые аудиты упрощают проверку этих заявлений.
Итог
AES-256 — широко используемый симметричный шифр, стандартизированный NIST, без известных практических атак; квантовому компьютеру с алгоритмом Гровера все равно понадобилось бы около 2^128 операций. Оценивая приложения, которые заявляют шифрование AES-256, смотрите дальше самого шифра: проверьте режим (GCM), вывод ключа (PBKDF2/Argon2 с большим числом итераций), хранение ключа (аппаратная защита) и то, какие данные на самом деле шифруются (содержимое + метаданные).
Vaultaire использует AES-256-GCM для содержимого файлов, заголовков, метаданных, индексов и миниатюр. PBKDF2 с HMAC-SHA512 выводит локальный ключ сейфа из узора и общей для устройства соли в Keychain; этот ключ разворачивает случайный главный ключ, которым шифруются файлы. Симметричные операции выполняются в процессе приложения через CryptoKit, а Keychain и Data Protection в iOS защищают состояние восстановления, когда устройство заблокировано. Полная иерархия описана в модели безопасности.