Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Бакалаврська дипломна робота Шифр на основі перестановок байтів

.pdf
Скачиваний:
14
Добавлен:
24.01.2021
Размер:
1.4 Mб
Скачать

11

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,

зчитується стан того лічильника, який відповідає згенерованій комбінації.