Еволюція криптографічних алгоритмів шифрування
Рейтинг статті: / 17
НайгіршеНайкраще 
Розвиток алгоритмів шифруванняРозглядається розвиток алгоритмів шифрування сучасної криптографії.
Під терміном сучасної криптографії розуміється етап розвитку алгоритмів шифрування інформації, який відбувався після становлення шенноновської математичної криптографії, з середини 70-х років ХХ століття. У цей час зародився і почав інтенсивно розвиватися новий напрямок прикладної криптографії – використання шифрування у мережевих протоколах і сервісах. Криптографія включає в себе багато різних напрямків, таких як шифрування, електронний цифровий підпис, хешування і т. п. Розглянуто лише напрямок шифрування інформації – видозмінення вхідних даних з метою приховування інформаційної складової від сторонніх осіб при передачі незахищеним каналом.
Розрізняють дві течії шифрування:
  • шифрування закритим ключем або симетричне шифрування
  • шифрування кодом з відкритим ключем або асиметричне шифрування
Алгоритм шифрування, в якому для кодування і декодування використовується один і той самий криптографічний ключ називається симетричним. Ключ алгоритму вибирається до початку обміну, відомий обом сторонам і є секретним, він не передається у канал обміну. Це історично перший алгоритм шифрування, оскільки технічно відносно простий у реалізації. Найпростішим методом симетричного шифрування є перестановка символів по певному закону, відомому двом сторонам.
Ідея асиметричного шифрування відрізняється тим, що існує два типа ключів, відкритий ключ, що передається по незахищеному калану, і таємний ключ, що використовується для підтвердження аутентифікації і декодування інформації. Системи шифрування з відкритим ключем набули значної популярності з інтенсивним розвитком мережі Інтернет і віртуальних сервісів. Принципи шифрування даних з використанням відкритого ключа використані в сучасних мережевих протоколах. Ідея алгоритмів шифрування з відкритим ключем полягає у використанні принципу односторонньої функції: маючи відому функцію f(x), можемо легко знайти результат обробки відкритого ключа z – f(z), але знаючи z знайти функцію f(x) майже не можливо. Прикладом такого алгоритму шифрування «з життя» є використання певної книжки як таємний ключ. В даному випадку відкритим ключем, що передається по незахищеному каналу є послідовність даних, що містить номера сторінки, рядку і слова закодованого повідомлення. Навіть отримавши повну послідовність даних відкритого ключа розшифрувати повідомлення не вдасться не знаючи таємну книгу.
Сучасні алгоритми шифрування передбачають, що стороннім особам може бути відомий як сам алгоритм, так і частини розшифрованого відкритого коду. Єдине, що не знає «викрадач інформації» це секретний ключ, що не дозволяє розшифрувати дані. Єдиним методом відкриття секретного ключа є послідовний перебір всіх можливих варіантів. Вважається, що довжина секретного коду, що використовуються в сучасних алгоритмах шифрування даних не дозволяє розкодувати дані за прийнятний час. До алгоритмів шифрування також висуваються вимоги відносної стійкості криптографічному аналізу.
Починаючи з 70-х років агентство національної безпеки США почало проводити конкурс на криптографічний алгоритм шифрування даних, що мав би відповідати вимогам щодо високої надійності. Перші спроби завершились невдачею, а в результаті третього конкурсу був прийнятий криптографічний алгоритм шифрування DES, який невдовзі став першим міжнародним криптографічним стандартом.  
DES (Data Encryption Standard) — симетричний блочний алгоритм шифрування, розроблений фірмою ІВМ і затверджений у США в 1977 році як офіційний стандарт (FIPS 46-3). DES має блоки по 64 біта і 16-циклічну структуру мережі Фейстеля,  для шифрування використовується ключ довжиною 56 біт. Алгоритм використовує комбінацію нелінійних (S-блоки) і лінійних (перестановки E, IP, IP-1)  перетворень. Алгоритм DES у своєму складі містить засекречені елементи, що з самого початку його використання породило велику кількість побоювань, оскільки вони могли давати можливість Національному Агентству Безпеки США неправомірного контролю.
Як вже було сказано вище, DES – блочний алгоритм шифрування, вхідними даними для коду є блок розміром n біт і k-бітний ключ. На виході, після застосування шифруючого перетворення, отримаємо n-бітний блок, при чому навіть незначна зміна вхідних даних призводить до істотних змін зашифрованого блоку. Блочні алгоритми шифрування реалізуються методом багаторазового застосування до блоків вхідних даних деяких базових перетворень.
Схема шифрування алгоритмом DES.
Першим етапом обробки вхідних даних є вхідна перестановка. Дана обробка класифікується як просте перетворення над частинами одного блоку. Проста перестановка без ключа – один з самих простих алгоритмів шифрування. Символи вхідних даних перемішуються за певним попередньо домовленим законом, що не розголошується.
Наступним етапом шифрування є основний цикл обробки даних – 16-ти циклічне перетворення мережею Фейстеля з використанням секретного ключа – що класифікується як складне перетворення над локальною частиною у блоці. Мережа Фейстеля – криптографічне перетворення над блоками, що являють собою ліву і праву половини регістру зсуву. Аргументами функції шифрування є 32-бітний вектор вхідної послідовності Ri – 1 і 48-бітний ключ, що є результатом попередньої обробки 56-бітного заданого ключа. На останньому етапі зашифровані дані знову перемішуються вихідною перестановкою.
В алгоритмі шифрування DES використовується пряме перетворення мережею Фейстеля при кодування і зворотне при декодуванні.
Алгоритм шифрування DES піддавався критиці за малу довжину ключа, що, врешті, не завадило йому стати загальноприйнятим стандартом.  За історію свого існування алгоритм шифрування DES пережив декілька публічних криптографічних атак, що довели його невисоку надійність. Вперше код було розшифровано за допомогою використання мережі, що налічувала десятки тисяч комп’ютерів і на декодування знадобилося 39 днів. Пізніше, у 1998 у рамках досліджень DES Challenge II, що проводила RSA Laboratory, алгоритм  шифрування був зламано за допомогою суперкомп’ютера за 3 дні, що викликало значні побоювання щодо достатньої надійності міжнародного криптографічного стандарту шифрування. Остаточним доказом ненадійності DES стало публічне дешифрування коду у 1999 році, що зайняло лише 22 години 15 хвилин.
Зараз алгоритм шифрування DES вважається ненадійним в основному через малу довжину ключа – 56 біт та розмір блоку – 64 біти. Вважається, що алгоритм шифрування достатньо надійний для застосування у модифікації.
3-DES. 3-DES є простим методом усунення недоліків DES – недостатньої криптостійкості. По суті дана модифікація шифрування є послідовним трьохциклічним DES з використанням 112- або 168-бітного ключа. Швидкість роботи даного алгоритму шифрування в три рази нижче ніж у DES, але криптостійкість набагато краща, час, необхідний для криптоаналізу 3-DES теоретично може в мільярд разів перевищити час злому попередника.
Хоча існують розроблені теоретичні атаки, про здійснені розшифрування алгоритму 3-DES не відомо. Однак, низька швидкість та наслідування усіх інших недоліків алгоритму шифрування DES (наприклад, незручності для програмної реалізації, оскільки з самого початку алгоритм шифрування був розроблений для апаратної реалізації) зумовлюють неконкурентоспроможність алгоритму 3-DES порівняно з алгоритмом шифрування AES. Алгоритми DES та 3-DES поступово витісняється алгоритмом шифрування AES, що з 2002 року є стандартом США.
AES (Advanced Encryption Standard), також відомий під назвою Rijndael — симетричний алгоритм блочного шифрування з розміром блока 128 біт і ключем 128/192/256 біт. У результаті жорстокого відбору у рамка конкурсу AES, що проводився урядом США починаючи з 1997 року, був визнаний найкращим і прийнятий як державний стандарт шифрування Сполучених Штатів у 2001 році (FIPS 197). Розроблений Вінсентом Рейменом і Йоаном Дейменом алгоритм шифрування Рейндол найкраще відповідав висунутим умовам конкурсу.
По суті, алгоритм шифрування, запропонований авторами, і AES не є одне і те ж саме. Алгоритм шифрування Рейндол підтримує широкий діапазон розміру блоку та ключа. Алгоритм AES має фіксовану довжину у 128 біт, а розмір ключа може приймати значення 128, 192 або 256 біт. В той час як алгоритм Рейндол підтримує розмірність блоку та ключа із кроком 32 біт у діапазоні від 128 до 256. Через фіксований розмір блоку алгоритм шифрування AES оперує із масивом 4×4 байт, який називається станом (версії алгоритму із більшим розміром блоку мають додаткові колонки):
По принципу роботи алгоритм шифрування AES – підстановочно-перестановочна мережа. Особливістю криптографічного алгоритму AES є проста та доступна програмна реалізація, що розповсюджується у вигляді бібліотеки функцій. У складі бібліотеки основна функція шифрування та 8 допоміжних, а також оголошуються масиви змінних. У ході шифрування алгоритмом AES вхідні дані і ключ вносяться у таблиці (квадратні масиви) – стани і трансформуються за допомогою перестановок, зсувань та взаємних перенесень за певними визначеними законами в декілька кроків (раундів).
Незважаючи на відкритість коду специфіка алгоритму шифрування AES не дозволяє декодувати секретні дані за прийнятний час.  У червні 2003 року Агентство національної безпеки США постановило, що алгоритм AES з довжиною ключа 128 біт є достатньо надійним, щоб використовувати його для захисту інформації, що становить державну таємницю, а для найвищого рівня TOP SECRET – AES з ключем 192/256 біт.
На відміну від більшості інших алгоритмів шифрування AES має досить простий математичний опис. Це викликало досить негативні відгуки у наукових колах. Багато вчених висловлювали побоювання щодо безпечності алгоритму шифрування AES, що ґрунтується на неперевіреному стверджуванні про тяжкість розв’язання певних видів рівнянь, на яких базується код. Гіпотези і навіть їх доведення декілька разів публікувалися в наукових журналах. Так, наприклад, у роботі Ніколя Картуа і Йозефа Пепшика у 2002 році була описана теоретична процедура під назвою XSL-атака, що могла б дозволити зламати алгоритм шифрування AES. Тим не менше ці дані не були підтверджені на практиці, тому не викликали значного резонансу. Через декілька років іншими дослідниками було доведено, що в описаному вигляді XSL-атака на алгоритм AES не може бути здійснена.
Значний удар по репутації стійкості алгоритму шифрування AES завдали так звані атаки по сторонніх каналах. Це процедури зламу коду, що не базуються на недоліках в його математичній моделі, а використовують специфіку реалізації захищеного протоколу. У 2005 році Даніель Бернштейн опублікував роботу з описом атаки, що використовує для злому інформацію про час виконання кожної операції шифрування. Для здійснення вдалої атаки знадобилося понад 200 мільйонів вибраних шифрованих текстів. У тому ж році Даг Арне Освік, Аді Шамір і Еран Трумер представили роботу з описом декількох аналогічним методик, одна з яких підбирала ключ лише за 800 циклів шифрування. Пізніше, у 2009 році були оприлюднені результати роботи по використанню диференціального аналізу помилок, що дозволило отримати ключ всього за 232 операції шифрування.
Станом на сьогодні AES є одним з самих розповсюджених алгоритмів симетричного шифрування. Підтримка криптографічного алгоритму AES на апаратному рівні введена фірмою Intel в новітнє сімейство високопродуктивних процесорів сімейства Sandy Bridge. Алгоритм шифрування використовується в сучасних захищених мережевих протоколах і платних сервісах.
Автор Ігорь Коваленко, магістрант НТУУ «КПІ»
 
>
КнигаНовиниПрактика пошукуПартнериПро нас
Підтримка та дизайн: Могильний С.С. Шаблон: Joomla Templates by BuyHTTP Joomla Hosting