Що таке шифрування AES і як воно працює?
Що стосується кібербезпеки, AES – одна з тих абревіатур, які, як ви бачите, з’являються скрізь. Це тому, що воно стало глобальним стандартом шифрування і його використовують для збереження значної кількості наших комунікацій.
Розширений стандарт шифрування (AES) це швидка та безпечна форма шифрування, що не відштовхує погляд від наших даних. Ми бачимо це у таких програмах для обміну повідомленнями WhatsApp і Сигнал, такі програми, як VeraCrypt і WinZip, у ряді апаратних засобів та різноманітних інших технологій, якими ми користуємось весь час.
Чому був розроблений AES?
Найдавніші типи шифрування були простими, використовуючи такі прийоми, як зміна кожної літери в реченні на ту, що йде після неї в алфавіті. Під цим кодом попереднє речення стає:
Як бачите, цей простий код робить його абсолютно нечитабельним. Незважаючи на початкову нечитабельність, якби ви мали час і знали, що це код, а не просто купа символів, пронизаних на сторінку, це було б не надто складно в кінцевому підсумку розібратися.
У міру того, як люди стали кращими, коли зламували коди, шифрування мало стати більш досконалим так що повідомлення можуть бути тримається в секреті. Ця гонка озброєнь придумувати все більш досконалі методи, в той час як інші вкладали зусилля, щоб їх розбити, призвели до все складніших методів, наприклад, машина Enigma, винайдена німцями в Першій світовій війні.
Підвищення електронних комунікацій також є благом для шифрування. У 1970-х рр Національне бюро стандартів США (NBS) почав пошук стандартних засобів, які можна було б використовувати для шифрування конфіденційної інформації уряду. Результатом їх пошуку було прийняття алгоритму симетричного ключа, розробленого в IBM, який зараз називається Стандарт шифрування даних (DES). DES прослужив своє призначення відносно добре протягом наступних кількох десятиліть, але в дев’яностих роках деякі проблеми безпеки почали виникати.
У DES є лише a 56-бітний ключ (порівняно з максимум 256 біт в AES, але ми до цього підемо пізніше), і в міру вдосконалення технології та методів злому, напади на неї почали ставати більш практичними. Перше зашифроване повідомлення DES, яке було розірвано, було в 1997 році проектом DESCHALL в Конкурс, спонсорований безпекою RSA.
Наступного року Фонд електронних прикордонників (EFF) побудував крекер DES, який міг би розігнати клавішу лише за два дні. У 1999 році EFF і перший комп’ютерний колектив в Інтернеті, розподілена.net, співпрацювали, щоб досягти цього часу до менш ніж 24 години.
Хоча ці атаки були дорогими та непрактичними для монтажу, вони почали показувати, що правління DES як стандарту шифрування “Go-to” закінчується. З обчислювальною потужністю експоненціально зростаючий згідно з Закон Мура, це було лише питанням часу, поки на DES не можна було покластися.
Уряд США відправився на п’ятирічну місію для оцінки різних методів шифрування, щоб знайти новий стандарт, який би був безпечним. The Національний інститут стандартів і технологій (NIST) оголосив, що остаточно зробив свій вибір у кінці 2001 року.
Їх вибором був специфічний підмножина блокового шифру Rijndael, з фіксованим розміром блоку в 128 біт і розмірами ключів 128, 192 та 256 біт. Його розробили Джоан Демен і Вінцент Ріймен, два криптографи з Бельгії. У травні 2002 року AES було схвалено стати Федеральний стандарт США і швидко став стандартним алгоритмом шифрування також для решти світу.
Пов’язані: Посібник для початківців з криптографії
Чому саме цей шифр був обраний для AES?
З будь-яким видом шифрування завжди є компроміси. Ви можете легко мати стандарт, який був би експоненціально більш безпечним, ніж AES, але для шифрування та розшифрування знадобиться занадто багато часу, щоб мати практичну користь. Зрештою, Блок шифру Rijndael обрав NIST для його всебічні здібності, включаючи його продуктивність як на апаратному, так і програмному забезпеченні, простоту впровадження та рівень безпеки.
Як працює AES?
Майте на увазі, що наступний приклад – це спрощення, але це дає загальне уявлення про те, як працює AES. На жаль, у світі недостатньо кави, щоб більшість людей хотіли пройти складніші аспекти АЕС. Зазвичай процес виконується в двійковій формі і математики набагато більше.
По-перше, дані діляться на блоки.
Під цим методом шифрування перше, що трапляється, це те, що ваш простий текст (який є інформацією, яку ви хочете зашифрувати) розділений на блоки. Розмір блоку AES становить 128 біт, тому він розділяє дані в чотири на чотири стовпці з шістнадцяти байтів (у байті є вісім біт і 16 х 8 = 128).
Якщо ваше повідомлення було «купіть мені картопляну стружку», перший блок виглядає приблизно так:
б | м | о | p |
у | е | м | о |
у | е | т | |
с | а |
Ми пропустимо решту повідомлень на цьому прикладі та зосередимось на тому, що відбувається з першим блоком, коли він зашифрований. “… До фішок, будь ласка”, як правило, додається до наступного блоку.
Розширення ключа
Розширення ключа включає взяття початкового ключа та його використання для створення ряду інших ключів для кожного раунду процесу шифрування. Ці нові 128-бітні круглі клавіші отримані з розкладу ключів Rijndael, що по суті є простим і швидким способом виготовлення нових ключових шифрів. Якщо початковий ключ був “ключі нудні1”:
к | i | ||
е | а | б | н |
у | r | о | г |
с | е | r | 1 |
Тоді кожен із нових клавіш може виглядати приблизно так, як тільки буде використаний ключовий графік Rijndael:
14 | 29 | 1 год | s5 |
h9 | 9f | вул | 9f |
gt | 2 год | hq | 73 |
кс | dj | df | hb |
Хоча вони виглядають як випадкові символи (і вищенаведений приклад тільки що складається), кожен з цих ключів є похідним від структурованого процесу, коли шифрування AES фактично застосовується. Ми повернемося до того, для чого ці круглі клавіші використовуються згодом.
Додати круглу клавішу
На цьому кроці, оскільки це перший тур, до блоку нашого повідомлення додається початковий ключ:
б | м | о | p |
у | е | м | о |
у | е | т | |
с | а |
+
к | i | ||
е | а | б | н |
у | r | о | г |
с | е | r | 1 |
Це робиться за допомогою шифру XOR, який є алгоритмом додаткового шифрування. Хоча це здається, що ви не можете насправді складати ці речі разом, пам’ятайте, що це насправді робиться у двійковій формі. Персонажі – це лише резервна спроба, щоб спробувати полегшити розуміння. Скажімо, ця математична операція дає нам результат:
h3 | jd | зу | 7с |
s8 | 7d | 26 | 2н |
dj | 4б | 9д | 9в |
74 | ел | 2 год | рт |
Заміна байтів
На цьому етапі кожен байт підміняється відповідно до заздалегідь визначеної таблиці. Це на зразок прикладу з початку статті, де речення було закодоване, змінивши кожну букву на ту, що йде після неї в алфавіті (Здравствуйте стає ifmmp).
Ця система трохи складніша і не обов’язково має до неї ніяку логіку. Натомість існує встановлена таблиця, яку можна шукати за алгоритмом, яка говорить, наприклад, що h3 стає jb, s8 стає 9f, dj стає 62 і так далі. Після цього кроку скажімо, що попередньо визначена таблиця дає нам:
jb | n3 | кф | n2 |
9f | jj | 1 год | js |
74 | ш | 0d | 18 |
гс | 17 | d6 | px |
Зміщуйте ряди
Зміна рядків – це найпростіша назва, і цей крок – це по суті те, що ви очікували. Другий ряд переміщується на один пробіл ліворуч, третій ряд переміщується на два пробіли вліво, а четвертий ряд переміщується на три пробіли вліво. Це дає нам:
jb | n3 | кф | n2 |
jj | 1 год | js | 9f |
0d | 18 | 74 | ш |
px | гс | 17 | d6 |
Змішайте стовпчики
Цей крок пояснити трохи складно. Щоб вирізати більшу частину математики та спростити речі, скажемо лише, що до кожного стовпця застосовується математичне рівняння для подальшого розповсюдження. Скажімо, операція дає нам такий результат:
лс | j4 | 2н | ма |
83 | 28 | ке | 9f |
9w | хм | 3л | m4 |
5б | a9 | cj | пс |
Додати круглу клавішу (знову)
Пам’ятаєте ті круглі клавіші, які ми зробили на початку, використовуючи свій початковий ключ та розклад ключів Ріяндейла? Ну, саме тут ми починаємо їх використовувати. Ми беремо результат наших змішаних стовпців і додаємо першу круглу клавішу, яку ми отримали:
лс | j4 | 2н | ма |
83 | 28 | ке | 9f |
9w | хм | 3л | m4 |
5б | a9 | cj | пс |
+
14 | 29 | 1 год | s5 |
h9 | 9f | вул | 9f |
gt | 2 год | hq | 73 |
кс | dj | df | hb |
Скажімо, що ця операція дає нам такий результат:
9д | 5б | 28 | сф |
лс | df | hf | 3б |
9т | 28 | к.с. | 8f |
62 | 7d | 15 | ах |
Ще багато раундів …
Якщо ви думали, що це все, ми навіть не близько. Після додавання останньої круглої клавіші вона повертається до етапу заміни байтів, де кожне значення змінюється відповідно до заздалегідь визначеної таблиці. Після цього повертаємося до зрушення рядків і переміщення кожного рядка вліво на одне, два або три пробіли. Потім він знову проходить через рівняння мікстурних стовпців. Після цього додається ще одна кругла клавіша.
На цьому теж не зупиняється. На початку згадувалося, що AES має ключові розміри або 128, 192 або 256 біт. Якщо використовується 128-розрядна клавіша, таких раундів є дев’ять. Якщо використовується 192-бітний ключ, їх є 11. Коли використовується 256-розрядний ключ, їх є 13. Отже, дані проходять через підстановку байтів, зміщують рядки, змішують стовпці та кроки клавіш до тринадцяти разів кожен, змінюючись на кожному етапі.
Після цих дев’яти, 11 або 13 раундів є один додатковий раунд, в якому дані обробляються лише замінами байтів, зсувом рядків і додаванням круглих ключових кроків, але ні крок змішування стовпців. Етап змішування стовпців виймається, тому що на цьому етапі це було б просто витрачає потужність обробки без зміни даних, що зробить метод шифрування менш ефективним.
Щоб зробити зрозуміліше, весь процес шифрування AES проходить:
Розширення ключа
Додати круглу клавішу
Заміна байтів
Зміщуйте ряди
Змішайте стовпчики
Додати круглу клавішу
x 9, 11 або 13 разів, залежно від того, чи є ключ 128, 192 або 256 біт
Заміна байтів
Зміщуйте ряди
Додати круглу клавішу
Після того, як дані пройшли цей складний процес, ваш оригінал “Купи мені трохи картопляних чіпсів” виходить виглядає щось на кшталт “Ok23b8a0i3j 293uivnfqf98vs87a”. Це здається абсолютно випадковим рядком символів, але як ви бачите з цих прикладів, це насправді результат багатьох математичних операцій, що застосовуються до нього знову і знову.
Який сенс у кожному з цих кроків?
Багато речей відбувається, коли наші дані шифруються, і важливо зрозуміти, чому. Ключ розширення є критичним крок, тому що він дає нам наші ключі для наступних раундів. В іншому випадку однаковий ключ буде доданий у кожному раунді, що полегшить розтріскування AES. У першому раунді додається початковий ключ, щоб розпочати зміну простого тексту.
The крок заміни байтів, де кожна з точок даних змінюється відповідно до заздалегідь визначеної таблиці, також виконує істотну роль. Він змінює дані нелінійно, щоб застосувати плутанину до інформації. Плутанина – це процес, який допомагає приховати зв’язок між зашифрованими даними та оригінальним повідомленням.
Зміщення рядків також є критичним, виконання того, що відомо як дифузія. У криптографії дифузія по суті означає перенести дані, щоб додати ускладнення. Зміщуючи рядки, дані переміщуються з початкового положення, надалі допомагаючи приховати їх. Змішайте стовпчики діє аналогічно, змінюючи дані вертикально, а не горизонтально.
В кінці раунду додається новий круглий ключ, який був отриманий з початкового ключа. Це додає більшої плутанини даним.
Чому так багато раундів?
Процеси додавання круглих клавіш, заміна байтів, зміщення рядів і змішування колон змінює дані, але це все ще може бути зламано криптоаналізом, що є способом вивчення криптографічного алгоритму з метою їх розбиття.
Атаки ярликів є одним із ключові загрози. Це атаки, які можуть розламати шифрування з меншими зусиллями, ніж грубе насильство. Коли розроблявся AES, були знайдені напади ярликів протягом шести раундів його процесу. Через це було додано ще чотири раунди як мінімум на 128-розрядний AES як запас міцності. Отримані 10 раундів дають методу шифрування достатньо місця для запобігання нападів ярликів згідно з сьогоднішніми технологіями та технологіями.
Чому ми не додамо більше патронів, щоб збільшити безпеку?
Оскільки в безпеці більшість речей, це повинно бути компроміс між чистою оборонною силою, зручністю використання та продуктивністю. Якщо ви поставите десять сталевих дверей з болтами на кожному з пунктів входу до вашого будинку, це, безумовно, зробить це більш безпечним. Також знадобиться необгрунтована кількість часу, щоб потрапити та вийти, тому ми ніколи не бачимо, щоб хтось це робив.
Це те саме, що стосується шифрування. Ми могли б зробити це більш безпечним, додавши більше раундів, але це також було б повільніше і набагато менш ефективно. 10, 12 та 14 раундів AES були вирішені, оскільки вони забезпечують хороший компроміс між цими конкуруючими аспектами, принаймні, в поточному технологічному ландшафті.
Розшифрування AES
Якщо вам вдалося пояснити процес шифрування, пояснений вище, розшифровка порівняно проста. Щоб перейти від шифротексту назад до відкритого тексту оригінального повідомлення, все робиться в зворотному порядку.
Якщо ми почнемо з нашого зашифрованого результату “Ok23b8a0i3j 293uivnfqf98vs87a” і застосувати зворотну для кожного кроку шифрування, він починається з оберненої круглої клавіші, потім обернених рядків зсуву та заміни оберненого байта, перш ніж перейти в інверсію 9, 11 або 13 раундів. Це виглядає приблизно так:
“Ok23b8a0i3j 293uivnfqf98vs87a”
Зворотний додати круглий ключ
Зворотні зсувні ряди
Зворотна підміна байтів
Зворотний додати круглий ключ
Зворотні стовпці суміші
Зворотні зсувні ряди
Зворотна підміна байтів
x 9, 11 або 13 разів, залежно від того, чи є ключ 128,192 або 256-бітним
Зворотний додати круглий ключ
Після цього процесу дешифрування ми знову закінчуємо оригінальним повідомленням: “Купи мені трохи картопляних чіпсів”
128 проти 192 проти 256-розрядних AES
AES має три різні довжини ключів. Основна відмінність – кількість раундів, через які дані проходять у процесі шифрування відповідно 10, 12 та 14. По суті, 192-розрядні і 256-бітний забезпечити більший запас міцності ніж 128-розрядні.
У сучасному технологічному ландшафті, 128-розрядний AES достатньо для більшості практичних цілей. Високочутливі дані, якими користуються особи з надзвичайним рівнем загрози, наприклад ТОП СЕКРЕТНІ документи контрольовані військовими, ймовірно, повинні бути оброблені з будь-яким 192 або 256-бітний AES.
Якщо ви параноїк, ви можете скористатися 192 або 256-бітний шифрування, де це можливо. Це добре, якщо вам полегшується спати вночі, але це вкрай не потрібно в більшості ситуацій. Тут не обійдуться і додаткові чотири раунди 256-бітове шифрування що робить його приблизно на 40 відсотків менш ефективним.
Питання безпеки AES
Криптографи постійно досліджують AES на слабкі сторони, намагаючись придумати нові методи і використовувати технологію, яка приходить на їх шляху. Це важливо, адже якби його не пройшли ретельну перевірку науковці, то злочинці чи національні держави могли б врешті-решт знайти спосіб зламати це, не знаючи іншого світу. Поки що дослідники виявили лише теоретичні перерви та атаки бічних каналів.
Атака пов’язаних ключів
У 2009 році було виявлено низку нападів, пов’язаних із ключовими словами. Це тип криптоаналізу, який передбачає спостереження за тим, як шифр працює під різними клавішами. Атаки, пов’язані з повним ключем, які виявили дослідники, не викликають особливого занепокоєння; вони можливі лише щодо протоколів, які не виконані належним чином.
Відома ключова відмінна атака
Знову в 2009 році сталася відома ключова відмінна атака проти восьмирічної версії AES-128. Ці атаки використовують ключ, який уже відомий для того, щоб з’ясувати притаманну структуру шифру. Оскільки ця атака була лише проти восьми круглої версії, для повсякденних користувачів AES-128 не варто хвилюватися..
Атака бокового каналу
Було проведено кілька інших теоретичних атак, але при сучасній технології їм все одно знадобиться мільярди років, щоб зламати. Це означає що Сам по собі AES на даний момент є нерозривним. Незважаючи на це, AES все ще може бути вразливим, якщо він не був належним чином виконаний у тому, що називається атакою бічного каналу.
Атаки бічних каналів виникають, коли система просочується інформацією. Зловмисник вислуховує звук, інформацію про час, електромагнітну інформацію або споживану енергію, щоб зібрати висновки з алгоритму, який потім може бути використаний для його розбиття.
Якщо AES реалізується обережно, ці атаки можна запобігти, видаляючи джерело витоку даних, або забезпечуючи відсутність явної залежності між витікаючими даними та алгоритмічними процесами.
Остання слабкість є загальнішою, ніж специфічна для AES, але користувачі повинні мати на увазі, що AES автоматично не робить свої дані безпечними. Навіть AES-256 є вразливим, якщо зловмисник може отримати доступ до ключа користувача. Ось чому AES – лише один із аспектів збереження даних. Ефективне управління паролем, брандмауери, виявлення вірусів та освоєння атак соціальних інженерів так само важливі по-своєму.
Чи достатньо AES?
У нинішньому віці ми всі передаємо стільки наших чутливих даних в Інтернеті, AES став важливою частиною нашої безпеки. Хоча це вже з 2001 року, повторний процес додавання ключів, підстановки байтів, зміщення рядків і змішування стовпців виявився випробувальним часом.
Незважаючи на сучасні теоретичні атаки та будь-які потенційні атаки бічних каналів, AES сам залишається в безпеці. Це чудовий стандарт забезпечення нашого електронного зв’язку та може застосовуватися у багатьох ситуаціях, коли конфіденційну інформацію потрібно захищати. Судячи з сучасного рівня технології та техніки нападу, ви повинні почувати себе впевнено, використовуючи це добре в осяжне майбутнє.
Для чого нам потрібно шифрування?
Тепер, коли ми переглянули технічні деталі AES, важливо обговорити, чому важливе шифрування. На самому базовому рівні шифрування дозволяє нам кодувати інформацію, щоб розшифрувати дані можуть лише ті, хто має доступ до ключа. Без ключа, це схоже на хитрість. За допомогою клавіші, безліч випадкових персонажів перетворюється назад у своє початкове повідомлення.
Шифрування використовується урядами та військовими міліціями тисячоліттями щоб уникнути потрапляння конфіденційної інформації в чужі руки. З роками вона все більше і більше проникає в повсякденне життя, тим більше, що така значна частина наших особистих, соціальних та трудових стосунків тепер перенеслася в Інтернет-світ.
Подумайте лише про все дані, які ви вводите у свої пристрої: паролі, банківські реквізити, свій приватні повідомлення і набагато більше. Без будь-якого виду шифрування цю інформацію було б набагато легше перехопити будь-хто, будь то злочинці, шалені сталкери чи уряд.
Так багато наша інформація є цінною або чутливою, тож зрозуміло, що його потрібно захищати таким чином, щоб отримати доступ до нього лише ми самі та ті, кого ми уповноважили. Ось чому нам потрібно шифрування. Без нього інтернет-світ просто не міг би функціонувати. Нам було б позбавлено будь-якої конфіденційності та безпеки, посилаючи наше онлайн-життя в абсолютний хаос.
Дивись також:
Інструмент генератора паролів
Ресурси шифрування: великий список інструментів та посібників
Відомі коди та шифри через історію
Статистика кібербезпеки & факти
“Злом, кіберзлочинність” автор: jaydeep_ під ліцензією на CC0