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

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

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

Функції, використані в SHA-384 і SHA-512.

SHA-384 і SHA-512 використовують 6 функцій Ch (x, y, z) і Maj (x, y,z) нелінійні функції з 192-бітним входом і 64-бітним виходом, і 4 лінійні функції з 64-бітним входом і 64-бітним виходом: ∑0, 1, s0, s1.

Спочатку визначимо 4 лінійні операції:

0(X)=X>>>28 X>>>34 X>>>39;

1(X)=X>>>14 X>>>18 X>>>41;

σ0(X)=X>>>1 X>>>8 X>>>7;

σ1(X)=X>>>19 X>>>19 X>>>6.

Операція Ch приймає три 64-бітних слова X, Y, Z. Операція є функцією побітового вибору, тобто якщо i-тий біт Х установлений, те i- тий біт виходу є i-тий біт Y. З іншого боку, i-тий біт виходу є i-тий біт Z. Ця операція може бути легко реалізована як Ch(X,Y,Z)=(X Y) (̅ ).

Операція Maj також приймає три 64-бітних слова X, Y, Z. Операція є функцією побітової мажоритарності, тобто якщо більшість i-тих біт X, Y і Z установлені, тоді i-тий біт виходу встановлений, і навпаки. Ця операція може бути легко реалізована як Maj (X,Y,Z) =( X Y) (X Z) (Y Z).

MDC, на основі модулярної арифметики

У ISO/IEC 10118-4 визначаються дві геш-функції MASH-1 і MASH-2, основані на ітеративному зведенні в степінь за модулем. Ці функції є покращеними варіантами функцій, визначених у стандартах CCITT X.509:1988 і ISO/IEC 9594-8:1989, що були визнані недостатньо без-

печними. Внаслідок цього вони були виключені з обновлених версій стандартів ITU-T X.509:1993 і ISO/IEC 9594-8:1995.

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

Геш-функція MASH-1 (Modular Arithmetic Secure Hash-1) викорис-

товує RSA подібні модулі N, довжина яких забезпечує необхідну стійкість.

181

yt 1

Кількість N повинна важко розкладатись, на чому і ґрунтується стійкість алгоритму. Розмір модуля визначає довжину блоків оброблюваного повідомлення, а також розмір геш-коду (наприклад 1025-бітний модуль забезпечує формування 1024-бітного геш-коду). У якості вхідної послі-

довності використовується двійковий рядок х довжиною 0 ≤b ≤2n / 2 , де n – розрядність геш-коду.

Алгоритм MASH-1 складається з таких етапів:

1. Системні установки та визначення констант. Установити RSAподібний модуль N pq довжиною m біт, де p і q випадково обрані більші прості числа, що зберігаються в секреті. Визначити двійкову довжину n геш-коду як найбільший добуток числа 16 і довжини гешкоду, що задовольняє нерівності 16 n< m .

Як вектор ініціалізації вибрати H0 = 0 . Визначити n-бітне ціле кількістю як константа A 0xf00...00.

2. Предобробка. Доповнити, якщо необхідно, рядок x нульовими бітами, для того, щоб одержати двійковий рядок довжиною t × n / 2 для найменшого t 1. Розділити доповнений текст на n / 2 -розрядні блоки x1,...,xt і додати останній блок xt +1 , що містить n / 2 -розрядне подання числа b. Цей етап алгоритму наведено на рис. 6.4.

Рис. 6.4. Етап алгоритму-предобробки повідомлення

3. Розширення. Розширити кожний xi блок в n-розрядний блок yi шляхом вставки між 4-розрядними напівбайтами блоку xi комбінації із чотирьох одиниць (1111). Останній блок формується аналогічним образом за винятком того, що вставляється комбінація 1010.

182

4. Циклова функція. Для всіх 1 i t 1 відобразити два n-роз- рядних вхідних блоки (Hi 1, yi) в один n-розрядний блок відповідно до виразу:

Hi = ((((Hi 1 yi ) A)2 modN) n) Hi 1 ,

де – операція побітового логічного АБО;

– додавання по модулі два ( XOR );

– збереження молодших n -розрядів m -розрядного результату.

Загальний вид циклової функції наведено на рис. 6.5.

5. Закінчення. У якості геш-коду приймається n -розрядний блок

Ht 1..

yn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IV

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Hi Hi 1

yi A 2 mod N n Hi 1

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h1

 

 

h2

 

h3

 

...

 

 

h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 6.5. Загальний вид циклової функції MASH-1

Алгоритм MASH-2 відрізняється від алгоритму MASH-1 тільки показником ступеня в цикловій функції, що має такий вигляд:

H

H

 

y

A 28 1 modN

n

H .

i

 

i 1

i

 

 

i 1

 

 

 

 

 

 

 

 

 

 

 

 

 

Загальний вигляд циклової функції наведено на рис. 6.6.

183

 

 

 

 

 

yn

 

 

 

y3

 

 

 

 

y2

 

 

 

 

y1

 

 

...

 

IV

 

 

 

 

 

 

 

 

 

k

Hi

Hi 1 yi A 28 1 mod N n Hi 1

 

h1

h2

h3

...

hn

 

 

 

 

 

h

Рис. 6.6. Загальний вид циклової функції MASH-2

 

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

Порівняно з 128-розрядними геш-функціями 160-розрядний гешкод, який виробляється SHA-1, забезпечує більшу стійкість до силових атак. Геш-функції SHA-1 і RIPEMD-160 за стійкістю приблизно рівні та обидва перевершують MD5. Не менш важливим параметром є швидкість роботи алгоритму. SHA-1, RIPEMD-160 містить більшу кількість кроків і виконується на 160-бітовому буфері порівняно зі 128-бітовим буфером MD5. Таким чином, SHA-1 виконується на 25 % повільніше, ніж MD5 на тих же апаратурах. RIPEMD-160 має 160 кроків, і виконується приблизно на 15 % повільніше, ніж SНА-1. Порівняльний аналіз геш-функцій наведено у табл. 6.4.

184

 

 

 

Таблиця 6.4

 

Порівняльний аналіз геш-функцій

 

 

 

 

 

Геш-функція

Клас функції

Базові перетворення

Довжина

гешу, біти

 

 

 

 

 

 

 

Whirlpool

однонаправлена

в кінцевих полях Галуа

512

 

 

 

 

SHA-2

однонаправлена

логічні та арифметичні

256, 384,

512

 

 

 

 

 

 

 

ГОСТ 34311-95

однонаправлена

БСШ

256

 

 

 

 

HAVAL

однонаправлена

логічні та арифметичні

128, 160,

192, 256

 

 

 

 

 

 

 

SHA-1

однонаправлена

логічні та арифметичні

160

 

 

 

 

RIPEMD-160

однонаправлена

логічні та арифметичні

160

 

 

 

 

MD5

однонаправлена

логічні та арифметичні

128

 

 

 

 

MD4

однонаправлена

логічні та арифметичні

128

 

 

 

 

UMAC

однонаправлена, МАС

в кінцевих полях Галуа

128, 64

 

 

 

 

Rijndael,CBC–MAC

виробка МАС

БСШ

128

 

 

 

 

ГОСТ28147

виробка МАС

БСШ

64

 

 

 

 

Проведений аналіз табл. 6.4 показує, що використання МDC-коду за даним вхідним повідомленним геш-коду може обчислити будь-який суб’єкт, а при використанні МАС-коду обчислити геш-код за даним вхідним повідомленням може тільки суб’єкт, що володіє секретним ключем. Таким чином, використання МАС-кодів дозволяє інтегровано вирішувати завдання гешування і забезпечення стійкості отриманих геш-кодів [23, 35; 45].

Коди автентифікації повідомлень UMAC, TTMAC, EMAC, HMAC

Основними задачами проекту NESSIE є відбір кращих десяти криптографічних примітивів. У цей набір входять алгоритми блокового і потокового шифрування, генератори випадкових чисел, схеми швидкої автентифікації даних (MAC), геш-функції і алгоритми цифрового підпису. В якості основних критеріїв відбору претендентів обрані реальна безпека, продуктивність, гнучкість і вимоги ринку.

Перевагою MAC є те, що він дозволяє одночасно отримати і перевірити інформацію за допомогою того ж секретного ключа. Це означає, що відправник і одержувач повідомлення повинні домовитися про ключ до початку повідомлення, як це має місце у випадку з симетричним шифруванням.

185

Код автентифікації повідомлення (MAC) є коротким фрагментом інформації, який використовується для перевірки достовірності повідомлення. MAC – код перевірки повідомлення, який використовує функцію відображення і надає дані у вигляді значень фіксованого розміру, а потім – гешує саме повідомлення [23; 45].

Алгоритм MAC приймає як введення секретний ключ і повідомлення достовірності довільної довжини, і видає MAC. МАС-код захищає цілісність повідомлення, а також його автентичність, дозволяючи контролерам (які також володіють секретним ключем) виявляти які-небудь зміни в первинному змісті повідомлення, яке передається.

Алгоритм МАС-коду працює таким чином, що перші блоки відкритих даних, які беруть участь у виробленні MАС-коду, можуть містити службову інформацію (наприклад, адресну частину, час, синхропосилку) і не зашифровуватися.

Головною перевагою цього механізму при порівнянні з електронноцифровим підписом є більш простий алгоритм генерації та верифікації, який дозволяє забезпечити високу швидкодію алгоритмів автентифікації повідомлень у локальних мережах та комп’ютерних системах [5; 8 – 10; 13 – 15; 17].

Загальний принцип роботи МАС-кодів приведено на рис. 6.7.

Відправник

Отримувач

Ключ К Повідомлення Повідомлення

Повідомлення

Ключ К

МАС алгоритм

МАС алгоритм

Якщо однакові, то МАС-код автентичність та цілісність, МАС-код

інакше помилка

Рис. 6.7. Принцип роботи MAC алгоритмів

MAC алгоритми можуть бути виготовлені з інших криптографічних примітивів, таких, як криптографічні геш-функцiї (як у випадку з UMAC), або для блокових алгоритмів шифрування (OMAC, CBC-MAC і PMAC).

186

Для вивчення основних характеристик МАС кодів і їх порівняльної оцінки в науково-дослідному проекті NESSIE (IST-1999-12324) були розглянуті основні практичні алгоритми МАС кодів і відібрані чотири кращі.

Two-Track-MAC

TTMAC (також відомий як Two-Track-MAC) має найвищий рівень безпеки MAC примітивів, розглянутих у NESSIE. Дизайн TTMAC заснований на геш-функції RIPEMD-160 (з невеликими змінами). Безпека може бути доведена в припущенні, що основною функцією стиснення є псевдовипадковою. TTMAC має конкретне виконання переваги: вона особливо ефективна в разі коротких повідомлень, а також має оптимальну спритність ключів.

Особливість Two-Track-MAC полягає в шифруванні повідомлення по двох незалежних шляхах (на рис. 6.8 позначені як L і R). Такий підхід дозволяє збільшити розмір внутрішнього стану. У результаті чого отримуємо більше можливих значень внутрішньої функції шифрування. Це дозволяє ускладнити атаки, засновані на переборі всіляких значень.

У порівнянні з MDx-MAC, який так само заснований на RIPEMD-160 Two-Track-MAC набагато ефективніше для коротких повідомлень (512 або 1024 біт), і також ефективніше на довгих повідомленнях.

Інша важлива перевага TTMAC є можливість швидкої зміни ключа шифрування. Це дозволяє збільшити стійкість системи, без зниження швидкості. При досить частій зміні ключа зловмиснику не вдасться зібрати великої кількості пар повідомлення – MAC-код, що сильно знижує ймовірність підбору ключа або MAC-коду.

Проект двухтрекового MAC засновано на геш-функції RIPEMD-160. Спочатку повідомлення, що автентифікується, заповнюється 1-бітами, і потім 0-бітами, поки довжина не досягнеться 448 mod 512. Потім двійкове представлення довжини вихідного повідомлення (mod 264) додається так, що довжина повідомлення стає кратною 512. Кожний 512-бітовий блок розділено на набори шістнадцяти 32-бітових слів, W0, …, W15.

Секретний ключ є набором з 5-ти 32-бітових слів, K0, …, K4. Алгоритм працює на основі повторення функції стиску таким способом.

Два набори з п’яти 32-бітових слів X0, …, X4 і Y0, …, Y4 і набір 16 слів повідомлення є входом для двох різних функцій fL і fR, що генерують на виході п’ять 32-бітових слова кожна:

A0, …, A4 = fL(X0, …, X4, W0, …, W15);

B0, …, B4 = fR(Y0, …, Y4, W0, …, W15).

187

Ці дві функції ідентичні використаним в RIPEMD-160 (деталі наведені далі). Потім необхідно обчислити два нові набори з п’яти слів кожний, віднімаючи вхідні повідомлення з результатів попереднього кроку:

Ci = Ai – Xi mod 232, 0 ≤ i ≤ 4;

Di = Bi – Yi mod 232, 0 ≤ i ≤ 4.

Для завершення функції стиску, десять слів Ci і Di змішані у двох лінійних перетвореннях gL і gR:

E0, …, E4 = gL(C0, …, C4, D0, …, D4);

F0, …, F4 = gR(C0, …, C4, D0, …,D4).

Ei і Fi разом з наступним набором слів повідомлення, формують вхідні значення для наступного проходу функції стиску. У першій ітерації п’ять секретних ключових слова Ki є входом як Xi так і Yi, 0 ≤ i ≤ 4

В останній ітерації, де останні слово повідомлення є входом, fL і fR здійснюють свопінг простору. Після віднімання вхідних слів, замість виконання gL і gR наприкінці цієї ітерації обчислюємо:

Ei = Ci – Di mod 232, 0 ≤ i ≤ 4.

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

Функції fL і fR.

Функції fL і fR, які відомі як лівий і правий слід функції стиску, ідентичні функціям, використаним у функції стиску RIPEMD-160. Вони складаються з 80 послідовних кроків. Спершу визначаються константи й функції.

Аддитивні константи:

ki = 00000000x,

ki’ = 50a28be6x,

0 ≤ i ≤ 15,

ki = 5a827999x,

ki’ = 5c4dd124x,

16 ≤ i ≤ 31,

ki = 6ed9eba1x,

ki’ = 6d703ef3x,

32 ≤ i ≤ 47,

ki = 8f1bbcdcx,

ki’ = 7a6d76e9x,

48 ≤ i ≤ 63,

ki = a953fd4ex,

ki’ = 00000000x,

64 ≤ i ≤ 79.

188

Нелінійні функції на бітовому рівні:

 

fi(x,y,z) = x y z,

0 ≤ i ≤ 15,

 

 

fi(x,y,z) = (x&y) | (̅&z),

16 ≤ i ≤ 31,

 

fi(x,y,z) = (x&̅) z,

32 ≤ i ≤ 47,

 

fi(x,y,z) = (x&z) | (y&̅),

48 ≤ i ≤ 63,

 

fi(x,y,z) = x (y|̅) z,

64 ≤ i ≤ 79.

Вибір слова повідомлення:

 

 

r[i] = i

0 ≤ i ≤ 15

 

 

r[i] = 7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8

16 ≤ i ≤ 31

r[i] = 3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12

32 ≤ i ≤ 47

r[i] = 1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2

48 ≤ i ≤ 63

r[i] = 4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13

64 ≤ i ≤ 79

r’[i] = 5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12

0 ≤ i ≤ 15

r’[i] = 6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2

16 ≤ i ≤ 31

r’[i] = 15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13

32 ≤ i ≤ 47

r’[i] = 8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14

48 ≤ i ≤ 63

r’[i] = 12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11

64 ≤ i ≤ 79

Константи обертання:

 

s[i] = 11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,

0 ≤ i ≤ 15

s[i] = 7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,

16 ≤ i ≤ 31

s[i] = 11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,

32 ≤ i ≤ 47

s[i] = 11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,

48 ≤ i ≤ 63

s[i] = 9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6,

64 ≤ i ≤ 79

s’[i] = 8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,

0 ≤ i ≤ 15

s’[i] = 9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,

16 ≤ i ≤ 31

s’[i] = 9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,

32 ≤ i ≤ 47

s’[i] = 15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,

48 ≤ i ≤ 63

s’[i] = 8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11,

64 ≤ i ≤ 79

Нехай дані вихідні значення a0, b0, c0, d0, e0. Функція fL (лівий слід функції стиску), складається з таких кроків для 0 ≤ I ≤ 79 (додавання по mod 232):

ai+1 = ei

bi+1 = (ai + fi(bi,ci,di) +Wr[i] + ki)<<s[i] + ei ,

ci+1 = bi di+1 = ci<<10

ei+1 = di

189

Аналогічно, коли дані вихідні значення a0, b0, c0, d0, e0, функція fR (правий слід функції стиску), складається з таких кроків для для 0 ≤ I ≤ 79 (операції є mod 232):

ai+1 = ei

bi+1 = (ai + f79-i(bi,ci,di) +Wr’[i] + ki)<<s’[i] + ei ,

ci+1 = bi di+1 = ci<<10

ei+1 = di

Функції gL і gR.

Лінійні перетворення gL і gR використовуються для змішування вихідних значень двох слідів функції стиску. Для входів C0, …, C4 і D0, …, D4, функція gL обчислює п’ять слів E0, …, E4 таким способом (операції є mod 232):

E0 = (C1 + C4) – D3,

E1 = C2 - D4,

E2 = C3 – D0,

E3 = C4 – D1,

E4 = C0 – D2

Для входів C0, …, C4 і D0, …, D4, функція gr обчислює слово F0, …, F4 у таким способом (операції є модулем 232):

F0 = C3 – D4,

F1 = (C4 + C2) – D0,

F2 = C0 – D1,

F3 = C1 – D2,

F4 = C2 – D3,

Аналіз безпеки.

Безпека двухтрекового MAC може бути доведена на основі припущення, про те, що основна функція стиску псевдо-довільна. Ця функція дуже схожа на функцію стиску, використану RIPEMD-160 [16], що і є добре вивченим примітивом, у якому не виявлені ніякі вразливості.

Функції fL і fR складаються з 80 ітерацій кроків і використовують різні бітові операції И, АБО, XOR і побітове додавання. Кроки функції також включають бітові обертання й додавання mod 232, при 80-кратному повторенні цього, здається досить складним простежити невідомі ключові біти. Ніякі вразливості у двотрековому MAC не виявлені.

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

190