є, які зберігають 32-бітові числа. їхні початкові значення в шістнадцятковій системі такі:
а, b, с, d такі ж, як і в алгоритмі MD5, а є = c3d2elf0. Один цикл (на вхідному блоці довжини 512) описують так:
де значенняКi, наведені в шістнадцятковій системі, такі:
Функція ft, визначає32-бітове значення:
та
У кінці одного циклу отримують значення а, b, с, d, e, які додають до відповідних їм початкових значень, і переходять до опрацювання наступного блока Мi.
Значення хешувальної функції є послідовністю бітів конкатенації остаточних зна-чень у регістрах a b с d e (160 бітів).
Алгоритм RIPEMD-160
Алгоритм RIPEMD-160 (і його модифікації RIPEMD-128 і RIPEMD-160) створений за європейським проектом RIPE (Race Integrity Primitives Evaluation; швидке визна-чення примітивів цілісності) для використання поза США. Основою для цього алгорит-му взято алгоритм MD4.
RIPEMD-160 перетворює послідовності довільної довжини в стиснуті 160-бітові послідовності. Головні операції в цьому алгоритмі: додавання за модулем 232, циклічний зсув, а також побітові операції: сума за модулем 2, диз'юнкція, кон'юнкція, інверсія.
У табл. 5.1 наведено порівняльні характеристики швидкостей програмної реаліза-ції різних алгоритмів хешування.
Генерування коротких підписів
Ідеєю, яка дає змогу генерувати короткі підписи, є підписування замість самого документа М деякого значення Н(М), де Н є однонапрямленою хешувальною функцією. У цьому разі досягається додатковий ефект: підпис можна наводити, не оприлюднюючи самого змісту документа.
Підписи, утворені за допомогою алгоритму RSA
Сьогодні підписування за допомогою алгоритму RSA є одним із найпопулярніших методів генерування коротких підписів. Це підписування виконують так.
Для документа М обчислюють значення Н(М), де Я є фіксованою хешувальною функцією. Сторона Л шифрує Н(М) за допомогою свого приватного ключа, викорис-товуючи алгоритм RSA. Отримана криптограма - це цифровий підпис сторони А під до-кументом М.
Перевірка підпису сторони А потребує дешифрування цього підпису публічним ключем сторони А. Після дешифрування перевіряють, чи в результаті отримано Н(М).
Цифровий підпис Епь-Гамаля
Початкові умови. Вибирають просте число р та велике число g : 1 < g < р - 1. В ідеальному випадку g є твірною в Zp*. Кожен користувач А вибирає випадкове число а<р- 1, обчислює h = g mod p та виставляє g,p,h як публічний ключ. У цьому разі число а є приватним ключем особи А.
Генерування підпису. Особа А виконує підписування конкретного документа М так:
вибирає число r, яке взаємно просте з р - 1;
обчислює S1 =gr mod p;
обчислює r’ = r-1 mod (p - 1) (оскільки НСД(r, р - 1) = 1, то існує таке r’,
що r- r'=1 mod(p- 1));
обчислює s2 = (М – as1)- r' mod (p - 1), оскільки виконується порівняння
М = (as1 + rs2) mod (p - 1);
подає (s1, s2) як підпис для документа М.
Верифікація підпису. Особа В перевіряє виконання порівняння gM = hs1gs2 (mod p). Зазначимо, що на підставі малої теореми Ферма
Цифровий підпис Ель-Гамаля має той недолік, що складається з двох чисел тієї ж величини, що й число р. Оскільки розкриття таких підписів ґрунтується на розв'язу-ванні задачі дискретного логарифмування за модулем р, то необхідне використання ве-ликих чисел р, наприклад з 1024 бітами у двійковому зображенні. У цьому випадку цифровий підпис Ель-Гамаля складатиметься із 2048 бітів.
Цифровий підпис Шнорра
Початкові умови. Вибирають велике просте число р таке, що р-1 має досить великий простий дільник q (рекомендованими є р > 2512, q > 2140). Також вибирають таке число h 1, що hq = l(mod p). Параметри р, q, h виставляють публічно.
Кожен користувач А вибирає випадкове число 1 < а < р - 1 та обчислює число v =(hq)-1 mod p. Зазначимо, що в цьому разі виконується порівняння ha v = 1(mod p). Сторона А виставляє число v як публічний ключ, а число а є її приватним ключем.
Генерування підпису. Особа А виконує підписування конкретного документа М так:
вибирає випадкове число 1 < r < q-1
обчислює X = hr mod p;
обчислює S1 =f(MX), де f є деякою хешувальною функцією, MX означає конкатенацію М і X в один текст;
обчислює s2 = (r + as1 )mod q
подає (s1, s2) як підпис для документа М.
Верифікація підпису. З метою перевіряння підпису особа В виконує такі дії: обчислює Z = hs2vs1 modр; якщо s1 =f(MZ), то підпис є справжнім.
Коректність підписування ґрунтується на тому факті, що Z-X. Справді, вико-нуються такі рівності:
Алгоритм цифрового підпису DSA
Розглянемо алгоритм цифрового підпису DSA. (Digital Signature Algorithm).
О Початкові умови. Вибирають такі числа:
просте число р з L бітами в двійковому зображенні, де 512<L<1024 і 64IL;
число q, яке є дільником числа р - 1 зі щонайменше 160 бітами у двійковому
зображенні;
елемент h з множини Zp*, який має порядок q;
випадкове число а, де а < q
число b = ha(mod p).
Число а є приватним ключем алгоритму DSA, який слугує для утворення під-писів. Число b є публічним ключем, який відповідає числу а. Параметри р, q, h ви-ставляють публічно.
Генерування підпису. Власник ключа а підписує документ М в такий спосіб:
вибирає випадкове число 1 < r < q — 1;
обчислює r' = r-1 mod q;
обчислює s1 = (hr mod p) mod q;
обчислює s2 =r’ (f(M)) + as1) mod q;
подає пару (s1, s2) як підпис для документа М.
Зазначимо, що алгоритм DSA використовує хешувальну функцію SHA: ДМ) = SHA(M), що перетворює вхідну послідовність у послідовність довжини 160 бітів.
Верифікація підпису. З метою перевіряння підпису особа В виконує такі обчис-лення:
обчислює s' =