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

Технології захисту інформації - копия

.pdf
Скачиваний:
258
Добавлен:
17.03.2016
Размер:
6.65 Mб
Скачать

Послідовність перетворень окремого раунду.

Розглянемо послідовність перетворень окремого раунду детальніше. Одним з основних елементів алгоритму, що забезпечують дифузію,

є структура, яку називають МД (множення/додавання).

На вхід цієї структури подаються два 16-бітних значення і два 16-бітних підключа, на виході створюються два 16-бітних підблоки. Аналіз показує, що кожний біт виходу цієї структури залежить від кожного біта входів незашифрованого блоку і підключів.

Ця структура повторюється в алгоритмі вісім разів, забезпечуючи високоефективну дифузію (рис. 4.11).

F1

F2

Z5

 

 

Z6

G1

G2

Рис. 4.11. Структура МД (множення/додавання)

Раунд починається з перетворення, яке комбінує чотири вхідних підблоки із чотирма підключами, використовуючи операції додавання і множення. Чотири вихідні блоки цього перетворення додаються за правилами XOR для формування двох 16-бітних блоків, які є входами МД-структури. Крім того, МД-структура отримує на вході ще два підключі і в результаті створює два 16-бітних виходи, які додаються за XOR з результатами першого перетворення для створення чотирьох вихідних підблоків цієї ітерації.

Зазначимо, що два виходи, які частково створюються другим і третіми входами (Х2 і Х3), міняються місцями для створення другого і третього виходів (W12 і W13). Це покращує перемішування бітів і робить алгоритм більш стійким до диференціального криптоаналізу.

101

Дев’ятий раунд алгоритму, який називається заключним перетво-

ренням, відрізняється від восьми попередніх тим, що другий і третій

входи міняються місцями. Це робиться для того, щоб дешифрування

мало ту ж структуру, що і шифрування. Зазначимо, що дев’ятий раунд

вимагає тільки чотири вхідні підключі, у той час, як для перших восьми

необхідно по шість вхідних підключів (рис. 4.12, 4.13).

 

Х1

Х2

Х3

Х4

Z2

 

 

Z3

 

 

 

Z2

 

 

Z4

 

 

 

Z5

 

МД

 

 

 

 

 

 

 

Z6

w11

w12

w13

w14

Рис. 4.12. I-й раунд алгоритму IDEA

102

w81

w82

w83

w84

 

 

 

Z51

 

 

 

Z52

Рис. 4.13. Заключне перетворення алгоритму IDEA

Операція розгортання ключа

П’ятдесят два 16-бітних підключа розгортаються зі 128-бітного ключа шифрування в такий спосіб. Перші вісім підключів, які позначають Z1, Z2, ..., Z8, отримуються безпосередньо з ключа, при цьому Z1 дорівнює першим 16 бітам, Z2 – наступним 16 бітам і т. д. Потім виконується циклічний зсув ключа шифрування вліво на 25 бітів, і створюються наступні вісім підключів. Ця процедура повторюється доти, поки не будуть створені всі 52 підключі.

Зазначимо, що кожний перший підключ раунду отримується зі своєї підмножини бітів ключа. Якщо весь ключ позначити як Z [1..128], то першими ключами у восьми раундах будуть:

Z1 = Z [1..16];

Z25 = Z [76..91]

Z7 = Z [97..112];

Z31 = Z [44..59]

Z13 = Z [90..105];

Z37 = Z [37..52]

Z19 = Z [83..98];

Z43 = Z [30..45]

103

У кожному раунді за винятком першого і восьмого використовуються тільки 96 бітів підключа, причому множина бітів ключа на кожній ітерації не перетинається, і не існує простих взаємовідносин, наприклад, типу простого зсуву, між підключами різних раундів. Це відбувається завдяки тому, що в кожному раунді використовується тільки шість підключів, у той час, як при кожній ротації ключа виходить вісім підключів.

Операція розшифрування

Процес розшифрування аналогічний процесу шифрування і полягає у використанні зашифрованого тексту як входу в ту ж саму структуру IDEA, але з іншим набором ключів. Ключі, які використовуються при розшифруванні, U1, ..., U52 отримують з підключів шифрування у такий спосіб:

1.Перші чотири підключі першого раунду розшифрування отримуються як перші чотири підключі 10-го раунду шифрування, якщо вважати стадію заключного перетворення 9-м раундом. Перший і четвертий підключі розшифрування еквівалентні мультиплікативній інверсії за модулем (216 + 1) відповідно першого і четвертого підключів шифрування. Для раундів з 2 по 8 другий і третій підключі розшифрування еквівалентні адитивній інверсії за модулем 216 відповідно третього та другого підключів шифрування. Для раундів 1 і 9 другий і третій підключі розшифрування еквівалентні адитивній інверсії за модулем 216 відповідно другого і третього підключів шифрування.

2.Для перших восьми раундів останні два підключа i раунди розшифрування еквівалентні останнім двом підключам 9-го раунду

шифрування. Для мультиплікативної інверсії використовується нотація Zj-1, тобто:

Zj Zj-1 =1 mod (216 + 1).

Через те, що (216 + 1) є простим числом, кожне ненульове ціле Zj≤ ≤ 216 має унікальну мультиплікативну інверсію за модулем (216 + 1). Для адитивної інверсії використовується нотація – Zj, таким чином маємо:

Zj + Zj = 0 mod 216.

Для доведення коректності алгоритму розшифрування розглянемо його одночасно з процесом шифрування. Кожний з восьми раундів розбитий на дві стадії перетворення, перша з яких називається трансформацією, а друга – шифруванням (рис. 4.14, 4.15).

104

д н у а р

1

д н у а р

2

 

 

 

Х1

 

 

 

Х2

 

 

 

 

Х3

 

 

Х4

 

 

 

 

 

 

 

 

Трансформація

 

 

 

 

 

Z1 … Z4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

І11

 

 

 

І12

 

І13

 

 

І14

 

 

 

 

 

 

 

 

 

 

 

 

Шифрування

 

 

 

 

 

Z5 … Z6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w11

 

 

 

w12

 

 

w13

 

 

w14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Трансформація

 

 

 

 

Z7 … Z10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

І21

 

 

 

І22

 

І23

 

 

І24

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z11 … Z12

 

 

 

 

8 раунд

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w21

 

 

 

w22

 

w23

 

 

w24

 

 

 

 

 

 

 

 

 

Рис. 4.14. Блок-схема процесу шифрування IDEA

Х1 Х2 Х3 Х4

Заключне U49...U52 перетворення

д н у а р

8

 

V81

 

V82

 

V83

 

V84

 

 

 

 

 

 

 

 

 

 

 

 

 

 

U47 U48

 

Шифрування

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

І81

 

І82

 

І83

 

 

 

 

І84

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

U43...U46

 

Трасформація

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

V71

 

 

V72

 

 

V73

 

 

V74

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.15. Блок-схема процесу розшифрування IDEA

При шифруванні підтримуються такі співвідношення на виході трансформації:

Y1 = W81 Z49; Y3 = W82 + Z51;

Y2 = W83 + Z50; Y4 = W84 Z52.

105

Для першої стадії першого раунду процесу розшифрування справедливі такі співвідношення:

J11 = Y1 U1; J13 = Y3 + U3;

J12 = Y2 + U2; J14 = Y4 U4.

Підставляючи відповідні значення, одержимо:

J11 = Y1 Z49-1 = W81 Z49 Z49-1 = W81;

J12 = Y2 + -Z50 = W83 + Z50 = W83 + Z50 + Z50 = W83;

J13 = Y3 + -Z51 = W82 + Z51 + -Z51 = W82;

J14 = Y4 Z52-1 = W84 Z52 Z52-1 = W84.

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

W81 = I81 MAR(I81 I83, I82 I84)

W82 = I83 MAR(I81 I83, I82 I84)

W83 = I82 MAL(I81 I83, I82 I84)

W84 = I84 MAL(I81 I83, I82 I84),

де MAR(X, Y) – правий вихід МД-структури із входами Х та Y; MAL(X, Y) – лівий вихід МД-структури із входами Х та Y.

У результаті одержимо:

V11 = J11 MAR (J11 J13, J12 J14) = W81 MAR(W81 W82, W83W84)= I81 MAR(I81 I83, I82 I84) MAR [I81 MAR(I81 I83, I82 I84) I83MAR(I81 I83, I82 I84) I82 MAL(I81 I83, I82 I84) I84 MAL(I81 I83, I82I84) ] =I81 MAR(I81 I83, I82 I84) MAR(I81 I83, I82 I84) = I81.

Аналогічно будемо мати:

V12 = I83, V13 = I82, V14 = I84.

Через те, що вихід другої стадії процесу розшифрування еквівалентний входу передостанньої стадії процесу шифрування за винятком перестановки другого і третього підблоків, аналогічно можна показати, що:

V81 = I11, V82 = I13, V83 = I12, V84 = I14.

Таким чином, легко показати, що вихід всього процесу шифрування еквівалентний входу процесу шифрування.

106

4.5.4. Алгоритм SAFER

Криптоалгоритм SAFER (Secure And Fast Encryption Routine) є

блоковим шифром, розробленим на замовлення корпорації Cylink [61]. Довжина ключа шифрування в одній з версій дорівнює 64 біти. Криптоалгоритм орієнтований на байтову обробку блоків по 64 біти, і має змінну кількість раундів криптографічного перетворення (для описаної специфікації – 6). Цей шифр, на відміну від більшості блокових шифрів, має різні процедури шифрування і розшифрування. Перша версія SAFER з довжиною ключа 64 біти відома за назвою SAFER K-64. Друга версія – SAFER K-128 має 128-бітний ключ. Результати криптоаналізу продемонстрували криптостійкість SAFER K-64 стосовно диференціаль-ного та лінійного криптоаналізів при дотриманні однієї умови – кількість циклів перетворення повинна бути більше шести. У результаті досліджень було виявлено слабке місце процедури перетворення ключа. У нових модифікаціях SAFER SK-64 і SAFER SK-128 виявлений недолік усунутий.

4.5.5. Алгоритм FЕАL

Криптоалгоритм FEAL був розроблений як альтернатива DES [61]. Оригінальний криптоалгоритм (FEAL-4) був розрахований на програмну реалізацію і мав чотири цикли перетворення при обробці 64-бітного блоку та 64-бітного ключа шифрування. Криптоаналітичне дослідження продемонструвало слабкість криптоалгоритму – для розкриття ключа при атаці на основі обраного відкритого тексту досить 20 зразків [32]. Успіхи в криптоанализі FEAL-8 (вісім циклів перетворення) призвели до появи модифікації зі змінною кількістю циклів перетворення FEAL-N. Опубліковані результати успішного диференціального криптоаналізу FEAL-N при N ≤ 31. Для розкриття ключа FEAL-8 методом лінійного криптоаналізу досить 225 різних відкритих текстів.

4.5.6. Алгоритм Blowfish

Алгоритм Blowfish є 16-раундовою сіткою Фейстеля з довжиною блоку в 64 біти. Ключ може мати довільну довжину в межах 448 бітів.

107

Хоча перед початком шифрування виконується складна фаза ініціалізації, саме шифрування даних виконується досить швидко. Алгоритм призначений, в основному для застосувань, де ключ міняється нечасто, до того ж існує фаза початкової автентифікації сторін, під час якої відбувається узгодження загальних параметрів шифрування. При реалізації на 32-бітних мікропроцесорах з великим кешем даних Blowfish значно швидше DES.

Алгоритм складається із двох частин: розгортання ключа і шифрування даних. Розгортання ключа перетворює ключ довжиною, принаймні 448 бітів, у кілька масивів підключів загальною довжиною 4168 байтів. Кожний раунд шифру складається з перестановки, залежної від ключа, і заміни, яка залежить, і від ключа, і від даних. Раундовими операціями є XOR і додавання 32-бітних слів.

Blowfish використовує велику кількість підключів, які необхідно обчислити заздалегідь, до початку процесів шифрування або розшифрування даних. Алгоритм складається:

1.Р – масив, що містить вісімнадцять 32-бітних підключів: Р1, Р2, ..., Р18.

2.Чотири 32-бітних S-бокси з 256 входами кожний. Перший індекс означає номер S-боксу, другий індекс – номер входу:

S1,0, S1,1, … S1,255;

S2,0, S2,1, … S2,255;

S3,0, S3,1, … S3,255;

S4,0, S4,1, … S4,255.

Метод, який використовується для обчислення цих підключів, описано далі.

Процес шифрування

Входом алгоритму є 64-бітний блок даних X, який ділиться на дві 32-бітні половини: XL і XR.

XL = XL XOR Pi XR = F (XL) XOR XR Swap XL and XR.

Структура функції F

Розділити XL на чотири 8-бітних елементи A, B, C, D.

F (XL) = ((S1,А + S2,B mod 232) XOR S3,C) + S4,D mod 232.

Розшифрування відрізняється від шифрування тим, що Pi використовуються у зворотному порядку.

108

Генерування підключів

Підключі обчислюються з використанням самого алгоритму Blowfish:

1.Ініціалізувати перший Р-масив і чотири S-бокси фіксованим рядком.

2.Виконати операцію XOR P1 з першими 32 бітами ключа, операцію XOR P2 із другими 32 бітами ключа і т. д. Повторювати цикл доти, доки увесь Р-масив не буде побітово підсумований з усіма бітами ключа. Для коротких ключів виконується конкатенація ключа із самим собою.

3.Зашифрувати нульовий рядок алгоритмом Blowfish, використовуючи підключі, описані в пунктах (1) і (2).

4.Замінити Р1 і Р2 виходом, отриманим на кроці (3).

5.Зашифрувати вихід кроку (3), використовуючи алгоритм Blowfish

змодифікованими підключами.

6.Замінити Р3 і Р4 виходом, отриманим на кроці (5).

7.Продовжити процес, замінюючи всі елементи Р-масиву, а потім всі чотири S-бокси виходами відповідним чином модифікованого алго-

ритму Blowfish.

Для створення всіх підключів потрібна 521 ітерація.

4.6. Огляд алгоритмів українського конкурсу на сертифікований симетричний криптоалгоритм

У грудні 2000 р. Департамент спецзв’язку та захисту інформації СБУ та Інститут кібернетики імені В. Глушкова оголосили відкритий конкурс симетричних криптоалгоритмів з метою розробити український стандарт криптографічного захисту інформації на заміну ГОСТ 28147-89, який діє в Україні й досі.

Організатори висували такі вимоги до криптолгоритму [61]:

1.Параметри: криптоалгоритм повинен бути симетричним блоковим; розмір блоку даних – 128, 256, 512 бітів; розмір разового (сеансового)

ключа – 128, 256, 512 бітів.

2.Принципи побудови: здатність протистояти відомим методам криптографічного аналізу та мати запас стійкості з урахуванням тенденцій розвитку засобів електронної обчислювальної техніки та криптографічної науки; застосовані криптографічні перетворення повинні базуватись на надійній та прозорій математичній базі та не мати прихованих вразливостей; швидкодія криптоалгоритму повинна бути не меншою, ніж швидкодія існуючого державного стандарту шифрування.

109

3.Реалізація криптоалгоритму: криптоалгоритм повинен дозволяти реалізацію на 32-х або 64-х розрядних процесорах; зазначені в криптоалгоритмі операції повинні мати ефективну програмну та апаратну реалізацію; необхідний для роботи об’єм пам’яті має враховувати можливість реалізації криптоалгоритму у мікропристроях; за можливості необхідно передбачити можливість паралельного виконання декількох операцій.

4.Ключова система: криптоалгоритм повинен передбачати наявність довгострокового ключа; довжина синхропосилки – не менше 64 бітів.

5.У криптоалгоритмі повинні бути передбачені такі режими шифрування: проста заміна; зчеплення блоків шифрованого тексту; зворотній зв’язок за входом; зворотній зв’язок за виходом; режим вироблення гами ("довгого циклу").

Розглянемо основні поняття алгоритмів, які брали участь у цьому конкурсі. Детальніше з ними можна ознайомитися у книзі [22].

4.6.1. Алгоритм RSB-32

Алгоритм RSB-32 (назва походить від англійських слів Round, Step, Block – Раунд, Крок, Блок) – ітераційний блоковий шифр зі змінними довжинами ключа, блоку та елементів блоків, над якими виконуються нелінійні операції заміни. На відміну від інших симетричних шифрів у RSB таблиці заміни змінюються залежно від стану секретного ключа. Алгебраїчні перетворення у RSB виконуються над кільцем лишків за деяким модулем m. Загальні параметри шифру такі:

Довжина раундового ключа – 32 біти.

Довжина загального (крокового) ключа: r 64, r = 1, 2,...

Кількість кроків шифрування:s = 1, 2,...

Кількість раундів шифрування:r s. Розмір блоку: 256, 512, 1024 біти.

Розмір елементів заміни: 8, 16, або 32 біти, тобто RSB – криптосистема, орієнтована на роботу з 8- ,16-, або 32-розрядними процесорами.

Загальний ключ (Common Key) у RSB-шифрі утворюється конкатенацією r 32-розрядних раундових ключів (Rоund Key). Узагальнена структурна схема RSB-алгоритму показана на рис. 4.16.

110