Розширений стандарт шифрування (AES) — це специфікація для шифрування електронних даних, створена Національним інститутом стандартів і технологій США (NIST) у 2001 році. AES широко використовується сьогодні, оскільки він набагато сильніший за DES і потрійний DES, незважаючи на те, що він складніший впровадити.
Пункти, які слід пам’ятати
- AES - це блоковий шифр.
- Розмір ключа може бути 128/192/256 біт.
- Шифрує дані блоками по 128 біт кожен.
Це означає, що він приймає 128 біт як вхід і виводить 128 біт зашифрованого шифрованого тексту як вихід. AES спирається на принцип мережі заміни-перестановки, що означає, що він виконується за допомогою серії пов’язаних операцій, які включають заміну та перемішування вхідних даних.
повна форма
Робота шифру:
AES виконує операції над байтами даних, а не з бітами. Оскільки розмір блоку становить 128 біт, шифр обробляє 128 біт (або 16 байт) вхідних даних за раз.
Кількість раундів залежить від довжини ключа таким чином:
- Ключ 128 біт – 10 раундів
- 192 бітний ключ – 12 раундів
- Ключ 256 біт – 14 раундів
Створення круглих ключів:
Алгоритм розкладу ключа використовується для обчислення всіх круглих ключів від ключа. Отже, початковий ключ використовується для створення багатьох різних раундових ключів, які використовуватимуться у відповідному раунді шифрування.

Шифрування:
AES розглядає кожен блок як 16-байтну (4 байти x 4 байти = 128) сітку в основному стовпчику.
[ b0 | b4 | b8 | b12 | | b1 | b5 | b9 | b13 | | b2 | b6 | b10| b14 | | b3 | b7 | b11| b15 ]>
Кожен раунд складається з 4 кроків:
- Суббайти
- ShiftRows
- MixColumns
- Додайте круглий ключ
Останній раунд не має раунду MixColumns.
SubBytes виконує заміну, а ShiftRows і MixColumns виконують перестановку в алгоритмі.
Суббайти:
Цей крок реалізує заміну.
На цьому кроці кожен байт замінюється іншим байтом. Це виконується за допомогою таблиці пошуку, яка також називається S-box. Ця заміна виконується таким чином, що байт ніколи не замінюється сам по собі, а також не замінюється іншим байтом, який доповнює поточний байт. Результатом цього кроку є матриця розміром 16 байт (4 x 4), як і раніше.
Наступні два кроки реалізують перестановку.
ShiftRows:
Цей крок саме так, як це звучить. Кожен рядок зміщується певну кількість разів.
- Перший ряд не зсувається
- Другий ряд зсувається один раз вліво.
- Третій ряд двічі зміщується вліво.
- Четвертий ряд тричі зсувається вліво.
(Виконується круговий зсув вліво.)
[ b0 | b1 | b2 | b3 ] [ b0 | b1 | b2 | b3 ] | b4 | b5 | b6 | b7 | ->| b5 | b6 | b7 | b4 | | b8 | b9 | b10 | b11 | | b10 | b11 | b8 | b9 | [ b12 | b13 | b14 | b15 ] [ b15 | b12 | b13 | b14 ]>
MixColumns:
Цей крок в основному є множенням матриці. Кожен стовпець множиться на певну матрицю, і, таким чином, позиція кожного байта в стовпці змінюється в результаті.
Цей крок пропускається в останньому раунді.
[ c0 ] [ 2 3 1 1 ] [ b0 ] | c1 | = | 1 2 3 1 | | b1 | | c2 | | 1 1 2 3 | | b2 | [ c3 ] [ 3 1 1 2 ] [ b3 ]>
Додайте круглі ключі:
Тепер результат попереднього етапу обробляється XOR за допомогою відповідного круглого ключа. Тут 16 байтів розглядаються не як сітка, а лише як 128 біт даних.

Після всіх цих раундів 128 біт зашифрованих даних повертаються як вихід. Цей процес повторюється, доки всі дані, які потрібно зашифрувати, не пройдуть цей процес.
тип змінних java
Розшифровка:
Етапи в раундах можна легко скасувати, оскільки ці етапи мають протилежність, яка під час виконання скасовує зміни. Кожні 128 блоків проходять 10, 12 або 14 раундів залежно від розміру ключа.
Етапи кожного раунду дешифрування такі:
- Додайте круглий ключ
- Inverse MixColumns
- ShiftRows
- Інверсний суббайт
Процес дешифрування – це процес шифрування, який виконується у зворотному порядку, тому я поясню кроки з помітними відмінностями.
Inverse MixColumns :
Цей крок подібний до кроку MixColumns у шифруванні, але відрізняється матрицею, яка використовується для виконання операції.
[ b0 ] [ 14 11 13 9 ] [ c0 ] | b1 | = | 9 14 11 13 | | c1 | | b2 | | 13 9 14 11 | | c2 | [ b3 ] [ 11 13 9 14 ] [ c3 ]>
Інверсні суббайти:
Інверсний S-box використовується як таблиця пошуку і за допомогою якої байти замінюються під час дешифрування.
Застосування:
AES широко використовується в багатьох програмах, які потребують безпечного зберігання та передачі даних. Серед поширених випадків використання:
- Бездротова безпека: AES використовується для захисту бездротових мереж, таких як мережі Wi-Fi, для забезпечення конфіденційності даних і запобігання несанкціонованому доступу. Шифрування бази даних: AES можна застосовувати для шифрування конфіденційних даних, що зберігаються в базах даних. Це допомагає захистити особисту інформацію, фінансові записи та інші конфіденційні дані від несанкціонованого доступу в разі порушення даних. Захищений зв’язок: AES широко використовується в таких протоколах, як Інтернет-зв’язок, електронна пошта, обмін миттєвими повідомленнями та голосові/відеодзвінки. Він гарантує, що дані залишаються конфіденційними. Зберігання даних: AES використовується для шифрування конфіденційних даних, що зберігаються на жорстких дисках, USB-накопичувачах та інших носіях інформації, захищаючи їх від несанкціонованого доступу в разі втрати або крадіжки. Віртуальні приватні мережі (VPN): AES зазвичай використовується в протоколах VPN для захисту зв’язку між пристроєм користувача та віддаленим сервером. Це гарантує, що дані, надіслані та отримані через VPN, залишаються приватними та не можуть бути розшифровані перехоплювачами. Безпечне зберігання паролів: для безпечного зберігання паролів зазвичай використовується шифрування AES. Замість зберігання відкритих паролів зберігається зашифрована версія. Це додає додатковий рівень безпеки та захищає облікові дані користувача у разі несанкціонованого доступу до сховища. Шифрування файлів і дисків: AES використовується для шифрування файлів і папок на комп’ютерах, зовнішніх накопичувачах і хмарних сховищах. Він захищає конфіденційні дані, що зберігаються на пристроях або під час передачі даних, щоб запобігти несанкціонованому доступу.
Резюме:
Набір інструкцій AES тепер інтегрований у ЦП (пропонує пропускну здатність у кілька ГБ/с), щоб покращити швидкість і безпеку програм, які використовують AES для шифрування та дешифрування. Незважаючи на те, що минуло 20 років з моменту його впровадження, нам не вдалося зламати алгоритм AES, оскільки він неможливий навіть із сучасною технологією. На даний момент єдиною уразливістю залишається реалізація алгоритму.