Бакалаврська дипломна робота Шифр на основі перестановок байтів
.pdf11
1)Складання з раундовим ключем: 128-бітовий внутрішній стан складається по модулю 2 з 128-бітовим раундовим підключем;
2)Шар підстановки: тут внутрішній стан проходить через 16 таблиць підстановки. Є два види шарів підстановки: типу 1 і типу 2, які змінюються в залежності від раунду;
3)Шар дифузії, де проста двійкова матриця 16×16 множиться на стан, який обробляється як масив з 16 байт.
Структурна схема процесу зашифрування відображена на рисунку 1.2.
Plaintext
ek1
Substitution layer type 1
Diffusion layer A
ek2
Substitution layer type 2
Diffusion layer A
ek3
ekn-1
Substitution layer type 1
Diffusion layer A
ekn
Substitution layer type 2
ekn+1
Ciphertext
Рисунок 1.2 – Структурна схема процесу зашифрування
12
Розробником була заявлена гарантована стійкість до лінійного диференціального криптоаналізу і, в цілому, всім існуючим на момент розробки атакам. На даний момент існують атаки лише на скорочену 7-раундову версію шифру [9].
1.3.2 SAFER+
Шифр SAFER + обробляє дані 128-бітовим блоком і 128, 192 і 256-бітові ключі. Кількість раундів шифрування залежить від розміру ключа:
-8 раундів для 128-бітового ключа;
-12 раундів для 192-бітового ключа;
-16 раундів для 256-бітового ключа.
Алгоритм складається з наступних етапів:
1) Накладання ключа K2i-1: байти вхідного блоку, що розбивається на 16
частин по 1 байту, складаються з байтами ключа K2i-1, при чому використовується додавання за модулем 2 для байтів з номерами 1, 4, 5, 8, 9, 12, 13 і 16, і додавання за модулем 256 для байтів з номерами 2, 3, 6, 7, 10, 11, 14 і 15.
2) Нелінійне перетворення: до байтів з номерами 1, 4, 5, 8, 9, 12, 13 і 16
застосовується операція 45 ( 257). До байтів з номерами 2, 3, 6, 7, 10, 11, 14 і 15 застосовується операція 45( ). Результати дій цих операцій, як і для інших різновидів алгоритму SAFER, на практиці часто зберігають у спеціальних таблицях. В даному випадку для цього необхідно 512 байт.
3) Накладання ключа K2i: байти вхідного блоку складаються з байтами ключа
K2i але на відміну від п.1 операції додавання за модулем 2 і за модулем 256
міняються місцями.
4) Лінійне перетворення: множення 16-байтного блоку даних праворуч на спеціальну матрицю M (всі операції при цьому байтові і виконуються за модулем
256). Множення на цю матрицю еквівалентно чотирьом рівням перетворення PHT,
між якими виконуються деякі байтові перестановки.
13
Після проведення r раундів шифрування проводиться підмішування ключа
K2r+1, аналогічне підмішуванню ключів K2i-1.
Вище описаний алгоритм може бути застосований для вхідних ключів довжиною
128, 192 і 256 біт. Перший підключ K1 являє собою перші 16 байт вхідного ключа.
Генерація інших ключів виконується таким чином: спочатку вихідний ключ цілком записується в ключовий регістр довжиною на 1 байт довший за ключ. Всі байти ключа підсумовуються за модулем 2 порозрядно, результат записується в останній байт регістра. Для отримання кожного наступного ключа над вмістом регістра виконуються наступні операції:
1) Вміст байтів ключового регістра циклічно зсувається вліво на 3 позиції
(зсув відбувається всередині байтів окремо, а не цілого регістра);
2)З регістра вибираються 16 байт. При цьому для ключа Ki обираються байти регістра починаючи з i-го і далі по циклу;
3)Відібрані 16 байт додаються за модулем 256 з байтами слова зміщення Bi,
результат додавання і буде підключем Ki.
Слова зміщення Bi – це 16-байтні константи, які обчислюють за формулою:
|
|
45 |
4517 + 257 |
257, |
= 2,3, … ,17; = 1,3, … ,16 |
|
= { |
|
|||
|
|
|
|
||
, |
|
4517 + 257, |
= 18,19, … ,33; = 1,3, … ,16 |
||
|
|
Bi,j – j-й байт i-го слова зміщення.
Відомі атаки на алгоритм:
1)Атака на SAFER + з довжиною вхідного ключа 256. Для її здійснення необхідно знати всього 3 відкритих тексти і відповідних їм шифротексти, але при цьому потрібно провести 2240 тестових операцій шифрування. Зрозуміло, що таке колосальна кількість операцій робить атаку абсолютно непрактичною [10].
2)Атака на пов'язаних ключах, що вимагає близько 2200 тестових операцій шифрування. Також є нездійсненною з практичної точки зору [10].
3)Атака методами диференційного криптоаналізу по споживаємій потужності [11].
4)Атака на усічені версії SAFER +.
14
1.3.3 Anubis
Алгоритм представляє блок шифрованих даних у вигляді 16-байтового масиву, який для зручності опису представлений вигляді квадрату 4*4 байт. У
кожному раунді алгоритму виконуються наступні дії [12]:
1) Таблична заміна , що виконується відповідно до таблиці S (рис. 1.2):
a00 |
a01 |
a02 |
a03 |
|
b00 |
b01 |
b02 |
b03 |
a10 |
a11 |
a12 |
a13 |
S() |
b10 |
b11 |
b12 |
b13 |
a20 |
a21 |
a22 |
a23 |
|
b20 |
b21 |
b22 |
b23 |
a30 |
a31 |
a32 |
a33 |
|
b30 |
b31 |
b32 |
b33 |
Рис. 1.3 – Операція алгоритму Anubis
Значення таблиці обрані псевдовипадковим чином з урахуванням необхідності її відповідності наступному співвідношенню:
[[ ]] =
2) Операція - байтова перестановка, що найпростішим чином перетворює рядок оброблюваного блоку ключової інформації в стовпець (рис. 1.3)
a00 |
a01 |
a02 |
a03 |
a10 |
a11 |
a13 |
a13 |
a20 |
a21 |
a22 |
a23 |
a30 |
a31 |
a32 |
a33 |
a00 |
a01 |
a02 |
a03 |
a10 |
a11 |
a13 |
a13 |
a20 |
a21 |
a22 |
a23 |
a30 |
a31 |
a32 |
a33 |
Рис. 1.4 – Операція алгоритму Anubis
, = ,,
де ai,j і bi,j – байти масиву даних до і після виконання поточної операції,
відповідно.
3) Операція , що являє собою перемноження масиву на фіксовану матрицю
H (рис. 1.4).
15
a00 |
a01 |
a02 |
a03 |
|
b00 |
b01 |
b02 |
b03 |
a10 |
a11 |
a12 |
a13 |
*H |
b10 |
b11 |
b12 |
b13 |
a20 |
a21 |
a22 |
a23 |
|
b20 |
b21 |
b22 |
b23 |
a30 |
a31 |
a32 |
a33 |
|
b30 |
b31 |
b32 |
b33 |
Рис. 1.5 – Операція алгоритму Anubis
Перемноження здійснюється в кінцевому полі (28)
4) Накладання ключа r-го раунду k[r]: виконується побітової логічною операцією XOR, яка застосовується до кожного біту масиву даних і відповідного біту k[r] (рис. 1.4):
a00 |
a01 |
a02 |
a03 |
|
a10 |
a11 |
a12 |
a13 |
+ |
|
|
|
|
|
a20 |
a21 |
a22 |
a23 |
|
a30 |
a31 |
a32 |
a33 |
|
k00 |
k01 |
k02 |
k03 |
k10 |
k11 |
k12 |
k13 |
k20 |
k21 |
k22 |
k23 |
k30 |
k31 |
k32 |
k33 |
|
b00 |
b01 |
b02 |
b03 |
= |
b10 |
b11 |
b12 |
b13 |
|
|
|
|
|
|
b20 |
b21 |
b22 |
b23 |
|
b30 |
b31 |
b32 |
b33 |
Рис. 1.5 – Операція алгоритму Anubis
Перераховані операції виконуються в кожному раунді в зазначеній послідовності, за винятком останнього раунду алгоритму, в якому не виконується операція . Крім того, перед першим раундом виконується вхідне відбілювання даних, шляхом накладення на блок, що шифрується операцією XOR нульового підключа.
Варто відзначити, що всі перераховані операції є зворотними самим собі,
відповідно, розшифрування виконується за допомогою тих же операцій в тому ж порядку, що і при зашифруванні. Змінюється тільки порядок використання подключів на зворотній.
Число раундів алгоритму R залежить від розміру ключа шифрування і визначається наступним чином:
= 8 + ,
де N - розмір ключа в 32-бітних фрагментах.
16
Даний шифр вважається дуже стійким і ніякі атаки не були знайдені в 2004 р
після того, як проект був завершений.
Отже, даний розділ дозволив провести огляд блокового шифрування та SP-
мереж, а також розглянути та порівняти відомі шифри на основі SP-мереж і можливі атаки на них.
17
2 РОЗРОБКА АЛГОРИТМУ ШИФРУВАННЯ
2.1 Загальний опис алгоритму
Алгоритм, представлений у даній роботі побудовано на основі двох основних операцій, що використовуються для зашифрування інформації: підстановок та перестановок. Послідовне виконання обох цих операцій є характерною ознакою блокових шифрів, при чому, сучасні блокові шифри, побудовані на основі мереж Фейстеля, SP-мереж і перетворень типу «квадрат» передбачають здійснення перестановки частин окремого блоку або перестановки блоків в межах невеликої групи [2]. Оскільки кількість можливих варіантів перестановок, що впливає на стійкість шифру, залежить від кількості елементів, що підлягають перестановці,
було вирішено реалізувати шифр, в якому перестановки будуть відбуватись у межах всього файлу.
Даний шифр приймає на вхід повідомлення розміром до 232 байт, і на виході отримується шифротекст такого ж розміру. Вхідне повідомлення M розглядається як послідовність байтів:
= 0, 1, … , −1,
де N – розмір повідомлення.
Зчитування відбувається по 1 байту за раз, оскільки перестановка у такому випадку реалізується найпростіше.
Для реалізації операцій підстановки формується гама G, що також являє собою послідовність байтів:
= 0, 1, … , −1
Довжина гами дорівнює розміру вхідного повідомлення.
Секретний ключ K складається з 4 частин k1, k2, k3, k4, розмірами 32, 4, 8 і 32
біт відповідно:
= 1, 2, 3, 4,
де k1 – початковий стан першого регістра зсуву з лінійним зворотнім зв’язком
(LFSR-1), k2 – ключ для що використовується для визначення початкових станів
18
лічильників та напрямів їх руху на етапі формування псевдовипадкових чисел, k3 –
ключ для формування гами, k4 – початковий стан LFSR-2.
Загальну структурну схему процесу зашифрування відображено на рисунку
2.1.
|
Вхідне повідомлення |
|
Зчитування і-го байту |
|
Формування гами gi |
|
Накладання гами gi |
Секретний |
Запис з використанням |
ключ |
правила перестановки P1 |
|
Зчитування і-го байту з |
|
використанням правила |
|
перестановки P2 |
Запис у природньому порядку
Рисунок 2.1 – Схема процесу зашифрування даних
Алгоритм складається з таких етапів:
1.Формування проміжного масиву S довжина якого дорівнює довжині файлу.
2.Зчитування байту файлу у природному порядку.
3.Формування гами:
0 = 3
= (−1 + ) 256
4. Додавання гами до зчитаного байту:
( + ) 256
19
5.Записування в масив у псевдовипадковому порядку з використанням секретного ключа k1.
6.Кроки 2-5 виконуються послідовно і циклічно N разів, де N – довжина вхідного повідомлення у байтах.
7.Формування масиву R довжиною N, у який буде записуватись шифротекст.
8.Зчитування байту з масиву R у псевдовипадковому порядку з використанням секретного ключа k2.
9.Записування в масив у природньому порядку.
Кроки 8-9 виконуються послідовно і циклічно N разів.
Розшифрування даних відбувається у зворотному порядку, як показано на
рис. 2.2.
Файл зашифрованих даних
Зчитування і-го байту у |
природньому порядку |
Запис з використанням |
правила перестановки P2 |
|
Зчитування з |
Секретний |
використанням правила |
|
|
ключ |
перестановки P1 |
|
|
|
Формування гами gi-1 |
|
Накладання гами gi-1 |
|
Запис у прородньому |
|
порядку |
Рисунок 2.2 – Схема процесу розшифрування даних |
20
Відмінністю алгоритму розшифрування є порядок виконання циклів 2-5 та
8-9, а також порядок використання правил перестановки. Секретний ключ визначає правила перестановок та значення нульового байту гами g0.
2.2 Генерування псевдовипадкової послідовності чисел
Алгоритм генерації псевдовипадкових чисел (ПВЧ) для реалізації операцій перестановки з таких кроків:
1) Вхідне повідомлення розбивається на 4 піддіапазони D0, D1, D2, D3:
= [ 0 |
|
, 0 |
]; = [ 1 |
|
, 1 |
] |
||
0 |
|
|
1 |
|
|
|
||
= [ 2 |
, 2 |
]; = [ 3 |
, 3 |
], |
||||
2 |
|
|
|
3 |
|
|
|
|
де n – мінімальний і максимальний номер байту відповідного піддіапазону. При чому, довжини піддіапазонів D0-D2 завжди рівні між собою, а довжина D3 може відрізнятись, в залежності від довжини вхідного повідомлення.
2) Записування початкових станів лічильників. В залежності від значення кожного біта чотирьохбітного ключа K, обираються напрями руху кожного з чотирьох лічильників C0, C1, C2, C3. При значенні 0 – відповідний лічильник починає рахувати від nmin, і працює на додавання; при значенні 1 – від nmax на віднімання. Приклад даного кроку відображено в таблиці 2.1.
Таблиця 2.1 – Початкові стани лічильників
Секретний ключ k2 |
Початковий стан лічильника |
|||
|
|
|
|
|
1 |
С |
0 |
= 0 |
|
|
|
|
||
0 |
С |
= 1 |
||
|
|
|
1 |
|
0 |
С |
2 |
= 2 |
|
|
|
|
|
|
1 |
С |
3 |
= 3 |
|
|
|
|
3)Записування початкового стану регістра зсуву з лінійним зворотнім зв’язком (РЗЛЗЗ).
4)Генерування двох бітів РЗЛЗЗ (y1, y0)
5)Зчитування стану лічильника. В залежності від згенерованих бітів y1, y0,
зчитується стан того лічильника, який відповідає згенерованій комбінації.