Слайд 1МОДУЛЬ № 5
ВИКОРИСТАННЯ ХЕШ-ФУНКЦІЙ ДЛЯ ЗАБЕЗПЕЧЕННЯ ЦІЛІСНОСТІ ДАНИХ (ПОВІДОМЛЕНЬ)
1
Слайд 2Лекція № 28
ЗАХИСТ ЦІЛІСНОСТІ ДАНИХ З ВИКОРИСТАННЯМ ХЕШ-ФУНКЦІЇ MESSAGE DIGEST
(MD5)
2
Слайд 3ПИТАННЯ ЛЕКЦІЇ № 28
1. Структура алгоритму ітератив ного хешування MD5
2.
Структура функції стиску алго ритму MD5
3. Логіка роботи кожного раунду
функції стиску алгоритму MD5
Література: Л3, с. 177 – 181.
3
Слайд 4
1. СТРУКТУРА АЛГОРИТМУ ІТЕРАТИВНОГО ХЕШУВАННЯ MD5
4
Слайд 5 MD (Message Digest Algorithm) – сі мейство ітеративних криптографічних хеш
-функцій, які розроблені Рональдом Риве том з Массачусетского технологічного інс
титуту (RSA Laboratories).
MD2 хеш-функція розроблена в 1989 році. Розмір хеша - 128 біт. Розмір блоку вхідних даних - 512 біт. Число ітерацій – 18.
MD4 хеш-функція розроблена в 1990 році. Розмір хеша - 128 біт. Розмір блоку вхідних даних - 512 біт. Число ітерацій – 3.
5
Слайд 6 MD5 хеш-функція розроблена в 1991 році. Розмір хеша - 128
біт. Розмір блоку вхідних даних - 512 біт. Число ітерацій
– 4.
MD6 хеш-функція розроблена в 2008 році. Розмір хеша - змінний: від 0 до 512 біт. Розмір блоку вхідних даних - 512 біт. Чис ло ітерацій – змінне, без ключа = 40+[n/4], із ключем = max (80, 40+(n/4)). Пропонується на зміну менш доскональному MD5.
6
Слайд 7 MD5 - це односпрямована хеш-функ ция. Алгоритм хешування бере в
якості вхідних даних повідомлення довільної довжини й видає на виході
128-бітове зна чення профілю повідомлення.
Дані, що вводяться, обробляються послідовно 512-бітовими блоками.
На рис. 26.1 зображена загальна схема обробки повідомлення при обчисленні його профілю.
Процес обробки повідомлення вклю чає наступні етапи.
7
Слайд 88
Рис. 28.1. Обчислення дайджесту (профілю) повідомлення MD5
Слайд 99
Крок 1. Додавання значення довжини.
До результату виконання кроку 1 до
дається 64-бітове значення довжини в бі тах вихідного повідомлення (тобто
пові домлення, яким воно було перед додаван ням заповнювача), причому найменш зна чимий байт записується першим. Якщо довжина вихідного повідомлення переви щує 264, то використовуються тільки мо лодші 64 біта значення довжини.
Таким чином відповідне поле буде міс тити довжину вихідного повідомлення за модулем 264.
Слайд 1010
Крок 1. Додавання бітів заповнювача.
Повідомлення доповнюється так, щоб його загальна
довжина в бітах була порів нянної зі значенням 448 за
модулем 512, тобто
де nM – довжина повідомлення в бітах;
nД – довжина доповнення в бітах.
Слайд 1111
Операція доповнення виконується завжди, навіть якщо повідомлення вже ви являється
необхідної довжини.
Наприклад, якщо довжина повідомлен ня рівна 448 бітам, то
до повідомлення до дається ще 512 бітів, у результаті чого довжина доповненого повідомлення вияв ляється рівної 960 бітам. Тому число бітів, що додаються повинне бути від 1 до 512.
Структура бітів заповнювача наступ на:
перший біт рівний 1;
всі інші рівні 0.
Слайд 1212
У результаті виконання перших двох етапів виходить повідомлення, довжина якого
кратна 512 бітам.
На рис. 26.1 доповнене повідомлення представлене як послідовність
512-бітових блоків
Y0, Y1, ... , YL-1,
так що в підсумку довжина повідомлення виявляється рівної L х 512 бітів.
Це значить також, що довжина допов неного повідомлення кратна довжині блоку з 16-ти 32-бітових слів.
Слайд 1313
Нехай М[0...N-1] означає слова допо вненого повідомлення, тоді N буде
кратне числу 16. Таким чином, N = L х 16.
Слайд 1414
2. СТРУКТУРА ФУНКЦІЇ СТИСКУ АЛГОРИТМУ ІТЕРАТИВНОГО ХЕШУВАННЯ MD5
Серцем алгоритму хешування
MD5 є функція стиску, яка складається із чоти рьох "раундів"
обробки. На рис. 28.1 цей модуль позначений HMD5, а логіка роботи модуля показана на рис. 28.2.
Слайд 1515
Рис. 28.2.
Обробка одного 512 -бітового блоку в MD5
Слайд 1616
Крок 3. Ініціалізація буфера MD.
Для того щоб зберігати проміжні й
кін цеві результати функції хешування, вико ристовується 128-бітовий буфер. Буфер
можна представити у вигляді чотирьох 32 -бітових регістрів (А, В, С, D).
Ці регістри ініціалізуються наступними 32-бітовими цілими значеннями (у шістнад цятирічному вигляду):
А = 67452301,
В = EFCDAB89,
С = 98BADCFE,
D = 10325476.
Слайд 1717
Ці значення зберігаються у форматі прямого порядку записи байтів, коли
най менш значимий байт слова перебуває в по зиції з
молодшою адресою.
Як 32-битові рядки, значення ініціалі зації (у шіснадцятковому запису) будуть мати вигляд
слово А: 01234567,
слово В: 89ABCDEF,
слово З: FEDCBA98,
слово D: 76543210.
Слайд 1818
Крок 4. Обробка повідомлення 512 -бітовими блоками (блоками по 16
32-роз рядних слів).
Усі чотири раунди мають подібну структуру, але в
кожному з них використо вується своя примітивна логічна функція (на рис. 28.2 відповідні функції позначені F, G, Н и I).
У кожному раунді на вхід подається поточний 512-бітовий блок (Yq) і 128-бітове значення буфера ABCD і, крім того, обнов ляється зміст буфера.
Слайд 1919
У кожному раунді використовується також четверта частина 64-елементної таб лиці
T[1...64], складеної зі значень функції синуса.
У таблиці T i-й елемент,
якій позна чується T[i], дорівнює цілої частини числа
T[i] = 232∙abs(sin(i)),
де i відповідає значенню кута в радіанах.
Через те, що abs(sin(i)) лежить у діапа зоні між 0 і 1, кожний елемент T є цілим чи слом, яке можна представити в 32-бітово му записі.
Слайд 2020
Таблиця забезпечує "рандомізовану" множину 32-бітових кодів, які призначені "подавити" будь-які
регулярності даних, які вводяться.
Список значень Т[i] представлений у табл. 28.1.
Слайд 2121
Таблиця 28.1
Ключові елементи MD5, створювані на основі значень синуса
Слайд 2323
Поточний 512-бітовий блок (Yq) на вході обробки розбивається на
16 32-роз рядних слова X[k], k = 0…15.
Порядок використання цих
32-розряд них слів у раундах і кроках визначається відповідно до табл. 28.2.
Слайд 2424
Таблиця 28.2
Порядок використання 16 32-розрядних
слова X[k] в 64 раундах
Слайд 2525
Таблиця 28.2
Порядок використання 16 32-розрядних
слова X[k] в 64 раундах
Слайд 2626
Вихідне значення четвертого раунду додається до вхідного значення першого раунду
(CVq), у результаті чого виходить CVq+1.
Додавання виконується по модулю 232
незалежно для кожного із чотирьох слів бу фера з відповідними словами CVq.
Крок 5. Вивід
Після обробки всіх L 512-бітових бло ків на виході L-й стадії обробки виходить 128-бітовий профіль (дайджест) повідом лення.
Слайд 2727
У цілому роботу алгоритму MD5 можна описати наступними формулами:
q =
0;
CVq = IV,
RFF (Yq, CVq),
RFG[Yq, RFF(●)],
RFH[Yq, RFG(●)],
RFI[Yq, RFH(●)],
CVq+1 = SUM32[CVq,
RFI(●)],
MD = CVL.
Слайд 2828
RFX - функція раунду, що використовує примітивну логічну функцію X;
MD
- вихідне значення профілю пові домлення;
SUM32 - додавання по модулю
232, ви конуване окремо для кожного слова з пари значень.
Слайд 2929
3. ЛОГІКА РОБОТИ КОЖНОГО З РАУНДІВ ФУНКЦІЇ СТИСКУ АЛГОРИТМУ ІТЕРАТИВНОГО
ХЕШУВАННЯ MD5
Логіка роботи модуля показана на рис. 28.3.
Слайд 3030
Рис. 28.3.
Елементарна операція MD5
Слайд 3131
Розглянемо деталі логіки кожного із чотирьох раундів обробки одного 512-біто
вого блоку. Кожний раунд складається з послідовності 16 операцій з
даними буфера ABCD. Кожна така операція має вигляд
b ← b ((a g(b,c,d) X[k] T[i] <<< s),
де a, b, c, d - чотири слова буфера в пев ному порядку, що змінюються в процесі роботи;
g - одна із примітивних функцій F, G, H, I;
s бітів;
X[k] - k-е 32-бітове слово в q-м 512-бі товому
блоці повідомлення, тобто M[q∙16+k];
T[i] - i-е 32-битове слово в матриці T;
- додавання по модулю 232.
Порядок, у якому використовується чотири слова (а, b, с, d), забезпечує на рівні слів циклічний зсув вліво на одне слово на кожному кроці.
Слайд 3333
У кожному із чотирьох раундів алго ритму використовується своя примітивна
логічна функція. Така примітивна функція одержує на вхід три 32-бітових
слова й ви дає на виході одне 32-бітове слово.
Кожна така функція виконує ряд побі тових логічних операцій, тобто n-й біт ви хідного значення є функцією n-х бітів трьох значень, що вводяться.
Слайд 3434
Функції мають такий вигляд
Тут логічні операції AND, OR, NOT, XOR
представляються символами ^, v, ¬, від повідно.
Функція F є
умовним вираженням: якщо b, те c, інакше d.
Слайд 3535
Точно так само G можна представити в такому виді: якщо
d, те b, інакше с.
Функція Н дає біт парності.
Значення всіх
чотирьох функцій пред ставлені в табл. 28.3.
Циклічний зсув вліво (поворот) 32 -бітового аргументу на s бітів залежить від номера раунду та кроку (див. табл. 28.4).
Слайд 3636
Таблиця 28.3
Ключові елементи MD5, значення логічних функцій
Слайд 3737
Таблиця 28.4
Порядок використання циклічного
зсуву вліво у 64 кроках
Слайд 3838
ВИСНОВКИ
Алгоритм MD5 володіє властивістю, що кожний біт хеш-кода залежить від
усіх бітів входу. Складне багаторазове викорис тання базових функцій (F,
G, Н, I) у резуль таті дає гарне перемішування, а це значить, що практично неймовірно, щоб два наудачу обраних повідомлення породили той са мий хеш-код, навіть якщо ці повідомлення виявляються подібними за структурою.