Шифрування 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 захищають стан відновлення, коли пристрій заблоковано. Повну ієрархію описано в моделі безпеки.