
125 Кібербезпека / Фаховий екзамен (Бакалавр) / Прикладна криптологія
.pdf

8. Теоретична стійкість за Шенноном. Шифр Вернама, як приклад системи з абсолютною стійкістю



9. DES – перший стандарт блочних шифрів
Стандарт DES працює на так званій схемі Фейстеля
Дана схема передбачає те, що блок основного тексту ділиться на дві частини до однієї з них застосовується нелінійна функція з раундовим ключем, виконуються прості математичні перетворення з іншою частиною (XOR) після чого права та ліва частини міняються місцями. Параметри шифру DES
розмір блоку відкритого тексту 64 б
розмір блоку закритого тексту 64 б
розмір основного ключа 64(56) б
кількість раундів (циклів) 16
довжина раундового ключа 48 б
Основними в секретному ключі є 56 б, решта 8 б, використовуються для перевірки на парність і ігноруються при шифрування.
Ключ розбивається на 8 блоків, наймолодший біт кожного з яких є результатом перевірки на парність.
16 раундових ключів довжиною 48 б кожен, генеруються з основного секретного ключа. Схема DES

IP - лінійна функція, що представляє собою початкову перестановку вхідного тексту і використовується для того щоб розбити неоднорідність і структуру початкового тексту. Дана функція фактично записується у вигляді таблиці, де для кожного біта вхідного тексту фіксується номер біта перестановки.
IP-1- перестановка обернена до початкової перестановки. Функція F є нелінійною і працює на основі 5 наступних кроків:
1.перестанока з розширенням - права половина з 32 б розтягується до 48 б і перелічується (лавинний ефект) 32б - 8 груп по 4 б
2.додавання за mod2 з раундовим ключем
3.розбивання попереднього кроку на 6 частин по 8 блоків
4. S-блоки кожна 6 б послідовність з 8 за допомогою S-блоків (нелінійний компонент алгоритму) перетворюється і набір з 4 б
S-блоки –це пошукові таблиці розміром 4х16. В кожній стрічці записані числа від 0 до 15 в певному порядку. Шість вхідних в S-блок бітів визначають, яку стрічку та який стовпець необхідно використати для заміни. Перший та шостий біт задають номер рядка, а чотири біти посередині визначають стовпець. На вихід подається двійковий запис числа з таблиці..
5.P-блоки 8 груп з 4 б кожна комбінується в 32 б стрічку і перелічується

Процедура розгортання ключа Фактично ключ має бути 64 б, проте кожний 8 б є контрольним бітом, яки відповідає за те
щоб кожен байт ключа складався з непарного числа біт. Тому на першому етапі робимо перестановку яка окрім того що перемішує окремі біти, відкидає усі контрольні
(8,16,32,48,64).
Потім 56 бітовий ключ ділиться на дві рівні частини по 28 біт. Потім для кожного раунду виконується циклічний зсув кожної бітової стрічки вліво на одну позицію (для раундів 1,2,3,9) та на два біти (для всіх інших раундів).
Потім ліва та права частина з’єднуються разом та подаються на вхід наступної перестановки зі стисненням, на виході якої і буде 48-бітний ключ.
10. Українські стандарти блочних шифрів: ГОСТ 28147-89 та Калина.
ГОСТ 28147-89 — блоковий шифр з 256 — бітовим ключем і 32 циклами перетворення, що оперує 64-бітними блоками. Основа алгоритму шифру — Мережа Фейстеля. Базовим режимом шифрування за ГОСТ 28147-89 є режим простої заміни (визначені також складніші режими гамування, гамування зі зворотним зв'язком і режим імітовставки). Для
зашифрування в цьому режимі відкритий текст спочатку розбивається на дві половини (молодші біти — A, старші біти — B[2]). На i-му циклі використовується з'єднання K i : A i + 1 = B i f ( A i , K i )
B i + 1 = A i
Для генерації підключів вихідний 256-бітний ключ розбивається на вісім 32-бітних блоків: K
1 … K 8 .
Ключі K9 … K24 є циклічним повторенням ключів K1 … K8 (нумеруються від молодших бітів до старших). Ключі K25 … K 32 є ключами K1 … K8 , що йдуть у зворотному порядку.
Після виконання всіх 32 раундів алгоритму, блоки A33 і B33 склеюються (зверніть увагу, що старшим бітом стає 33 , а молодшим — B33 ) — результат є результат роботи алгоритму. Розшифрування виконується так само, як і зашифрування, але інвертується порядок подключей K i .
Функція f ( A i , K i ) обчислюється таким чином: Ai і Ki складаються по модулю 232 .
Результат розбивається на вісім 4-бітових підпослідовностей, кожна з яких надходить на вхід свого вузла таблиці замін (у порядку зростання старшинства бітів), званого нижче S-блоком. Загальна кількість S-блоків ГОСТу — вісім, тобто стільки ж, скільки і підпослідовностей.
Кожен S-блок являє собою перестановку чисел від 0 до 15. Перша 4-бітова підпослідовність потрапляє на вхід першого S-блоку, друга — на вхід другого і т. д.
Переваги ГОСТу
Безперспективність атаки повного перебору (XSL-атаки в облік не беруться, оскільки їх ефективність на даний момент повністю не доведена);
Ефективність реалізації і відповідно високу швидкодію на сучасних комп'ютерах.
Наявність захисту від нав'язування помилкових даних (вироблення імітовставки) і однаковий цикл шифрування у всіх чотирьох алгоритмах ГОСТу.
Критика ГОСТу
Основні проблеми ГОСТу пов'язані з неповнотою стандарту в частині генерації ключів і таблиць замін. Вважається, що у ГОСТу існують «слабкі» ключі і таблиці замін, але в стандарті не описуються критерії вибору і відсіву «слабких». Також стандарт не специфікує алгоритм генерації таблиці замін (S-блоків). З одного боку, це може бути додатковою секретною інформацією (крім ключа), а з іншого, піднімає ряд проблем:
Не можна визначити криптостійкість алгоритму, не знаючи заздалегідь таблиці замін;
Реалізації алгоритму від різних виробників можуть використовувати різні таблиці замін і можуть бути несумісні між собою;
Можливість навмисного надання слабких таблиць замін органами, що проводять ліцензування;
Потенційна можливість (відсутність заборони в стандарті) використання таблиць заміни, в яких вузли не є перестановками, що може привести до надзвичайного зниження стійкості шифру.
Криптографічний алгоритм блокового си-метричного шифрування даних, якій визна-чається стандартом ДСТУ 7624:2014 має назву "Калина".
Алгоритм "Калина" обробляє дані розмі-ром l 128, 256 і 512 бітів і підтримує такі ж довжини ключів шифрування k (сеансових ключів). При побудові алгоритму основну увагу розробниками було приділено забезеченню високого рівня криптографічної стійкості, а також досягненню високих показників продуктивності в апаратній і програмній реалізаціях.

Алгоритм "Калина" шифрує данні блоками. Блок даних в алгоритмі "Калина" - група з 128, 256 або 512 бітів. Блок даних може бути представлений як матриця розміром 8 x c байтів, яка називається матрицею внутрішнього стану. Матриця внутрішнього стану позначається
як G=(gi,j), gi,j € GF(28), де i=0,1,…,7, j=0,1,…,c-1. Запис бай-тів b1, b2,..., bl/8 для перетворень до матриці внутрішнього стану і зчитування з неї здійс-нюється по стовпцях. Приклад запису байтів до внутрішнього стану для l=512 (k= 512, c = 8)
Калина" використовує декілька раундів, кожний раунд складається з кількох операцій (функцій). Залежність кількості ітерацій (t) при реалізації перетворень, кількості стовпців матриці внутрішнього стану (c) від розміру блоку даних (l) і довжини ключа шифрування (k). Варто зазначити, що існує обмеження, згідно якого розмір ключа шифрування k не може бути меншим від розміру блоку даних l.
На рис. 5.3 - функція додавання раун-дового ключа за модулем 264, - функція додавання раундового ключа за модулем 2, блок F – це послідовність операцій (функ-цій)
Box – функція нелінійного бієктивного відображення даних, яка виконує байтову підстановку; Rows - функція циклічного зсу-ву рядків матриці стану вправо; Col – функ-ція лінійного перетворення даних (множен-ня матриці лінійного перетворення на матрицю стану над кінцевим полем GF(28)).

Необхідно звернути увагу на те що дов-жина раундових ключів ki визначається довжиною блока даних mi, які перетво-рюються.
11. Міжнародний стандарт AES
Хоча Rijndael є блочним шифром, він не є узагальненням схеми Фейстеля. На відміну від DES процедури шифрування та розшифрування в алгоритмі – різні. Більшість операцій базуються на арифметиці поля F2^8. Елементи поля F2^8 зберігаються в пам’яті комп’ютера у вигляді 8-бітних векторів (байтів).
Параметри AES
–довжина блоку повідомлення та шифротексту – 128, 192, 256 біт
–довжина ключа – 128, 192, 256 біт
–кількість раундів (Nb)– 10,12,14.
Розглянемо найбільш простий варіант алгоритму AES-128, в якому блоки як тексту, так і ключа складають 128 біт (16 байтів або чотири 32 бітових слова). В цьому випадку в алгоритмі буде 10 раундів.
Зашифрування та розшифрування в AES виконується ітеративно з використанням чотирьох різних байт-орієнтованих перетворень:
1.SubBytes - байтова таблична підстановка з використанням таблиці підстановки (s-блок)
2.ShiftRows – табличне перетворення – зсув рядків масиву state
3.MixColumns – табличне перетворення – змішування даних у кожному стовпці масивуstate
4.AddKey – криптографічне перетворення – складання за модулем 2 циклового
ключа з поточним станом state Зашифрування
Зашифрування даних проводиться на двовимірному масиві даних state. State формується у вигляді таблиці з 4-ма стрічка та 4-ма стовпцями (кількість стовпців може становити 6 та 8 в залежності від розміру блоку). Повідомлення ділиться на блоки необхідного розміру. Блок тексту записується по байтах в клітинки таблиці State, Si,j – байт тексту. На початку процесу зашифрування 16 байтів таблиці state ініціюються за допомогою байтів початкового повідомлення m, що записуються по стовпцях зліва направо
Алгоритм розшифрування AES
Усі перетворення, що використовуються при розшифруванні є зворотніми до перетворень, які використовувались при зашифруванні.
Як бачимо, усі перетворення виконуються в оберненому порядку. Замість шифрувальних перетворень використовуються розшифрувальні.
1. InvSubBytes – операція заміни байтів, яка використовує обернену таблицю заміни SubBytes-1.
2. InvShiftRows – циклічний зсув байтів вправо, протилежно до аналогічного при шифруванні.
3. InvMixColumns – перемішування стовпчиків з використанням оберненої матриці.
4. Процедури ExpandKey та AddRoundKey залишаються без змін.
5. Раундові ключі для розшифрування використовуються в оберненому порядку.