Що робить AES симетричним блоковим шифром
AES належить до родини алгоритмів, які називаються блоковими шифрами. Вони шифрують дані у фіксованих розмірах, а не безперервно обробляють окремі біти. Кожен блок, який обробляє AES, має точний розмір 128 біт або 16 байт, незалежно від обраної довжини ключа. Також він є симетричним – для шифрування вихідного нешифрованого тексту (plaintext) та його розшифрування назад у читабельний текст використовується абсолютно однакова секретна ключ. Це відрізняється від асиметричного або публічно-ключового шифрування, де використовуються окремі публічні та приватні ключі. AES підтримує три розміри ключів: 128, 192 і 256 біт, що забезпечує баланс між швидкістю та рівнем безпеки, при цьому більші ключі забезпечують кращий захист від атак методом грубого перебору (brute-force attacks) з невеликою втратою продуктивності. Всередині, 16 байт блоку організовано у сітку 4x4, яка називається «станом», і саме цю сітку повторно трансформують під час шифрування. Оскільки однакова ключ має бути обміняна таємно між відправником і отримувачем, AES зазвичай поєднують із протоколами обміну ключами в реальних системах, але сам шифр зосереджений виключно на ефективному перетравленні даних після того, як обидві сторони вже мають спільний секрет. Ця комбінація фіксованого розміру блоку, симетрії з використанням спільного ключа та гнучкої довжини ключа робить AES достатньо швидким для повсякденного використання та достатньо сильним для захисту конфіденційної інформації урядового, фінансового та особистого характеру по всьому світу.
Структура на основі раундів AES
AES не шифрує дані в одному проході. Замість цього, воно застосовує послідовність майже ідентичних трансформаційних кроків, названих раундами, повторно до 4x4 матриці стану. Кількість раундів безпосередньо залежить від розміру ключа: ключ на 128 біт використовує 10 раундів, ключ на 192 біти – 12 раундів, а ключ на 256 біт – 14 раундів. Більші ключі мають більше раундів, оскільки кожен раунд лише розмиває та дезорганізовує дані на обмежений рівень, тому потрібно більше раундів для підтримки еквівалентного рівня безпеки проти більшого простору можливих ключів. Кожен раунд (окрім останнього) застосовує чотири окремі операції послідовно, і кожен раунд використовує інший су ключ, згенерований від оригінального ключа. Перш ніж почати перший раунд, існує початковий крок, де текст, який потрібно зашифрувати, об'єднується з оригінальним ключем. Останній раунд дещо особливий, оскільки він пропускає одну з чотирьох стандартних операцій, що є дизайнерським рішенням, яке підтримує симетричність та ефективність шифрування та дешифрування без ослаблення безпеки. До того, як дані пройдуть через усі раунди, оригінальні шаблони та структура тексту, який потрібно зашифрувати, повністю стерті, замінені вихідними даними, які статистично не відрізняються від випадкового шуму, якщо у вас є правильний ключ.
Чотири Основні Операції: SubBytes, ShiftRows, MixColumns, AddRoundKey
Кожен раунд шифрування AES (з невеликими відмінностями) застосовує чотири операції до матриці стану. SubBytes замінює кожен байт у стані за допомогою фіксованої таблиці пошуку, відомої як S-box, нелінійного підстановлення, розробленого для протидії математичним атакам шляхом роблення зв’язку між вхідними та вихідними даними максимально непередбачуваним. ShiftRows потім циклічно зсуває кожну рядок 4x4 стану наліво на різну кількість байтів: перший рядок не змінюється, другий – на один байт, третій – на два, а четвертий – на три, поширюючи значення байтів у стовпцях. MixColumns розглядає кожен стовпець як невеликий вектор і множить його на фіксовану матрицю з використанням арифметики в конечному полі (специфічно GF(2^8)), ретельно змішуючи біти всередині кожного стовпця, щоб один вхідний біт впливав на кілька вихідних. Ця операція пропускається в останньому раунді. Нарешті, AddRoundKey комбінує стан із ключем, специфічним для раунду, за допомогою простої бітової операції XOR, що вводить секретні дані ключа у трансформацію. Разом SubBytes та ShiftRows/MixColumns виконують доповнюючі функції: підстановлення приховує зв’язок між ключем і шифротекстом, а зсув і змішування поширюють вплив на весь блок так, що зміна одного вхідного біта зрештою впливає майже на кожен вихідний біт.
Розклад Ключів: Генерація Раундових Ключів
AES ніколи не використовує оригінальний секретний ключ безпосередньо в кожному раунді. Замість цього, процес, який називається розкладом ключей (або розширенням ключа), отримує унікальний раундовий ключ з початкового ключа, створюючи послідовність раундових ключів. Цей процес розширення використовує операції, подібні до тих, що використовуються в основному шифрі, включаючи бітове заміщення через S-бок та залежний від раунду константу, щоб кожен раундовий ключ виглядав суттєво не пов'язаним з іншими, навіть якщо вони всі походять з одного джерела. Мета цього дизайну полягає в тому, щоб запобігти атакувачу, який випадково дізнається один раундовий ключ, від простого відновлення оригінального секретного ключа або прогнозування інших раундових ключів. Кількість раундових ключів, що генеруються, завжди на одиницю більша за кількість етапів шифрування, оскільки свіжий підключ також потрібен для початкового кроку AddRoundKey, який виконується перед першим раундом.
Це ретельне та детерміноване розширення дозволяє AES безпечно повторювати чотири основні операції багато разів, одночасно гарантуючи, що кожен раунд поводиться по-різному, додаючи ще один рівень непередбачуваності, який зміцнює шифр проти аналізу криптографії на основі шаблонів.»
Субститутивно-переставна мережа та шлях від DES до AES
AES класифікується як субститутивно-переставна мережа – шифрографічна архітектура, побудована на основі двох альтернативних типів операцій: субституючі кроки, які замінюють значення даних відповідно до фіксованого правила (SubBytes), та переставні кроки, що змінюють порядок або розповсюджують ці значення по блоку (ShiftRows і MixColumns). Повторення субституації та перестановки на багатьох раундах, у поєднанні з свіжим ключем при кожному застосуванні, створює значну плутанину та розповсюдження, дві властивості, які Кло́уд Шенно́н ще в попередні десятиліття визнав як необхідні для безпечних шифрів. Походження AES сягає пізніх 1990-х років, коли Національний інститут стандартів і технологій США (NIST) оголосив відкритий конкурс з метою знайти наступника застарілого Стандарту шифрування даних (DES), ключовий розмір якого в 56 біт став вразливим для атак методом грубої сили у міру зростання обчислювальної потужності. Було представлено та публічно оглянуто 15 кандидатів-алгоритмів від криптографів з усього світу. У 2000 році NIST вибрав алгоритм під назвою Rijndael, розроблений бельгійськими криптографами Йоаном Даеменом та Вінсентом Ріємен, і він був формально прийнятий як Advanced Encryption Standard у 2001 році. Його прозорий процес відбору, надійний захист та ефективність як на апаратному, так і на програмному забезпеченні зробили його найбільш довіреним симетричним шифром у світі сьогодні.
Frequently asked questions
Чому AES використовує різні кількість раундів для різних розмірів ключів?
Більші ключі створюють більший простір можливих значень для пошуку зловмисником, але кожен окремий раунд додає лише обмежену кількість дифузії та заплутування. Потрібно більше раундів із більшими ключами, щоб підтримувати стабільний рівень безпеки, тому ключі 128 біт використовують 10 раундів, ключі 192 біт – 12, а ключі 256 біт – 14.
Чи AES однаково з шифруванням в цілому?
Ні. AES є одним конкретним, широко використовуваним алгоритмом у більш широкій області симетричного шифрування. Існують й інші симетричні шифри, такі як старіший DES і Triple DES, але AES став домінуючим стандартом завдяки своїй міцній безпеці та ефективності.
Чи може AES бути зламаний методом грубої сили?
Згідно з поточними обчислювальними технологіями, ні. Навіть AES-128 має 2^128 можливих ключів, число настільки велике, що спроба всіх комбінацій займе більше часу, ніж вік Всесвіту, використовуючи будь-який відомий комп'ютер або реальну майбутню апаратну платформу.
Яка різниця між AES і Rijndael?
Rijndael є оригінальним алгоритмом, який був поданий до конкурсу NIST, і він підтримує ширший діапазон розмірів блоків та ключів, ніж AES. AES – це стандартизована версія Rijndael, яку офіційно прийняла NIST, обмежена конкретно 128-бітовим розміром блоку з ключами 128, 192 або 256 біт.
Чому AES замінив DES?
DES використовував лише 56-бітний ключ, який став вразливим для грубої сили через зростання обчислювальної потужності у 1990-х роках. NIST оголосив відкритий конкурс для пошуку сильнішого та сучаснішого замісника, зрештою обравши Rijndael, який став AES у 2001 році.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте AES: The Advanced Encryption Standard і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію AES: The Advanced Encryption Standard