АЛГОРИТМ SHA-1

Алгоритм SHA (Secure Hash Algorithm) розроблений в США як частина стандарту SHS (Secure Hash Standard), опублікованого в 1993 році. Але в ньому були виявлені вразливості, які привели до необхідності модифікувати алгоритм. Через два роки була опублікована нова версія -SHA-1, що отримала на сьогоднішній день широке поширення.

Отримуючи на вході повідомлення довільної довжини менше 2 м біт, SHA-1 формує 160-бітове вихідна повідомлення (дайджест). Спочатку преобразуемое повідомлення М доповнюється до довжини, кратної 512 бітам. Заповнювач формується таким чином: в кінець перетворюється повідомлення додається 1, потім - стільки нулів, скільки необхідно для отримання повідомлення, яке на 64 біта коротше, ніж кратне 512, після чого додають 64-бітове представлення довжини вихідного повідомлення. Наприклад, сіли повідомлення довжиною 800 біт, го 801-й біт = 1, потім додаємо нулі до 960 біт, після чого в останніх 64-розрядах записується число «800», в результаті хешіруем 1024-бітове повідомлення. Загальна схема перетворення представлена на рис. 2.18. Перед початком перетворень инициализируется п'ять 32-бітових змінних:

А = 0x67452301;

В = 0xEFCDAB89;

З = 0x98BADCFE;

D = Ох 10325476;

Е = 0xC3D2ElF0.

Ці значення присвоюються також змінним про 0 , /? () , З 0 , do, з 0 . Перетворення проводиться над блоком повідомлення розміром 512 біт в 80 раундів. В процесі перетворення використовуються наступні нелінійні функції f t :

f (X, Y, Z) = (XaY) vi (-X) AZ) для t = 0-19;

f (X, Y, Z) = X®Y®Z для t = 20-39 і t = 60-79;

f (X, Y, Z) = (XaY) v (XaZ) v (YaZ) для t = 40-59.

вання значень W,

Схема раунду алгоритму SH А-1

Мал. 2.18. Схема раунду алгоритму SH А-1

В процесі перетворення використовуються чотири константи:

Блок початкового повідомлення М представляється у вигляді 16-ти 32 розрядних подблоков М 0 , ..., М 15 , які використовуються для форми W, = (W , .з кредитують © W ,. 8 Ф W, _ 14 Ф Іф, 6 ) «<1 для г = 16-79.

Позначення «« <X »- циклічний зсув вліво на X розрядів,« + »- додавання за модулем 2 32 .

Після перетворення чергового 512-Бігнов блоку отримані значення a, b, с, d, е складаються зі значеннями А, В, С, D, Е відповідно, і починається обробка наступного блоку (або отримане значення в вигляді зчеплення a, b, с, d, е подається па вихід, якщо оброблений блок був останнім).

Таким чином, на виході отримуємо 160-бітний дайджест вихідного повідомлення.

 
Переглянути оригінал
< Попер   ЗМІСТ   ОРИГІНАЛ   Наст >