1. Початкове значення

Для цієї циклової функції початкове значення, IV, завжди буде таким 128-бітним рядком, по­даним тут як послідовність з чотирьох слів Уо, У^ У2, Y3 у шістнадцятковому зображенні, де Уо подає найлівіші 32 біти з 128 бітів:

Ус = 67452301.

У, = EFCDAB89,

  1. У2 = 988ADCFE, У3 = 10325476.Метод заповнювання

Метод заповнювання для використання в цій геш-функції має бути таким самим, як і метод за­повнювання, визначений у 7.2.

  1. Опис циклової функції

Циклова функція Ф діє так. Треба зауважити, що в цьому описі використано символи IV, Хо, X, Х2, Х3>Xq, Х'ьХ2, Х3 для позначення дев’яти різних слів, які містять значення, необхідні для об­числень.

  1. Вважають, що 512-бітовий (перший) вхід до Ф міститься в Zo, Z-i, ..., Z15, де Zo містить 32 найлівіших з 512 бітів. Вважають також, що 128 бітний (другий) вхід до Ф розміщено в чотирьох словах Yo, У2, Y3.

  2. Нехай Х0:=У0- Х2:=У2та Х3:=У3.

З Нехай Xq := Уо, X' := У1; Х2 := У2 та Х3 := У3.

  1. Для /> 0 до 63 здійснюють такі чотири кроки у зазначеному порядку:

  1. W - SX0 у д{Х,, Х2, Х3) w Z* у Q);

  2. Хо := Х3; Х3 := Х2; Х2 := X; X := IV;

  3. W - 3%У'С w двз.ХХ, Х2, Хз) w 07);

  4. Хо :=Х'3, Х3 := Х2; Xr2 := Х; X, := IV.

  1. Нехай

W :=У0,

Уо У і±і X Х3,

X :=У2уХ3уХ0,

У2 := Уз w Хс w Хь

Уз := ІУь>Х у Х2.

6 Чотири слова У01 X, У Уз зображають вихід циклової функції Ф. Після останньої ітерації циклової функції чотири слова Уо, Уь У2, У3 треба перетворити в послідовність з 16 байтів, ви­користовуючи обернення процедури, визначеної в 7.1.2, і де Уо дає перші чотири байти, Yj — на­ступні чотири байти і т. д. Таким чином перший (найлівіший) байт буде відповідати найменш зна­чущому байту з Уо, та 16-й (найправіший) байт буде відповідати найбільш значущому байту з У3. 16 байтів будуть перетворені в рядок з 128 бітів, використовуючи обернення процедури, зазначе­ної в розділі 6, тобто перший (найлівіший) біт буде відповідати найбільш значущому біту першого (найлівішого) байта, та 128-й (найправіший) біт буде відповідати найменш значущому біту 16-ого (найправішого) байта.

На рисунку 2 показані кроки (а) та (Ь) пункту 4 циклової функції Ф спеціалізованої геш-функції 2 (RIPEMD-128) (решта частин, тобто кроки (с) та (d) аналогічні). У цикловій функції Ф кроки від (а) до (d) пункту 4 виконано 64 рази (/ =0, 63).


(до циклу і)


(після циклу /)




9 СПЕЦІАЛІЗОВАНА ГЕШ-ФУНКЦІЯ З (SHA-1)

У цьому розділі визначено метод заповнювання, початкове значення та циклову функцію, яку використовують у загальній моделі для геш-функцій, описаних в ISO/IEC 10118-1:2000. Застосо­вуючи метод заповнювання, початкове значення та циклову функцію, визначені тут, до загальної моделі, що визначено вище, то таким чином буде визначено спеціалізовану геш-функцію 3. Спеціа­лізовану геш-функцію можна застосовувати до будь-яких рядків даних D, що містять щонайбіль­ше 264-1 бітів.

Міжнародний стандартизований ідентифікатор ISO/IEC для спеціалізованої геш-функції 3 до­рівнює 33 (у шістнадцятковому зображенні).

Примітка. Спеціалізовану геш-функцію 3, визначену вцьому розділі, зазвичай називають SHA-1, [2].

  1. Параметри, функції та константи

    1. Параметри

Для цієї геш-функції Z.^512, 02=160 та LH не перевищує 160.

  1. Узгодження порядку слідування байтів

У специфікації циклової функції цього розділу означено, що блок на вході циклової функції подають у формі послідовності 32-бітних слів, кожен 512-бітний блок складено з 16 таких слів. По­слідовність з 64 байтів, Во, S-і,..., S63, буде інтерпретовано як послідовність із 16 слів, Zo, Z-i, ..., Z15, таким чином кожну групу з чотирьох послідовних байтів вважають словом, перший байт слова вважають найбільш значущим. Звідси

Z, = 224В4; + 216В4/+і + 28Є4/+2 + В4/+з, (0 < І < 15).

Щоб перетворити геш-код із послідовності слів у послідовність байтів, треба здійснити обер­нений процес.

Примітка. Порядок байтів, визначений тут, відрізняється від описаного у 7.1.2.

  1. Функції

Щоб полегшити програмну реалізацію, циклову функцію Ф визначають у термінах операцій над 32-бітними словами. Послідовність функцій f0, f79 використовують у цикловій функції, де

кожна функція fh 0 < і < 79 приймає три слова Хо, та Х2 на вході та видає єдине слово на виході.

Функцію f, визначають так:

ДХ012) = (Х0ЛХ,)У(-Х0ЛХ2), ( 0</< 19),

^XD,X1,X2) = X0©X1©X2. (20</<39),

ДХ0, Хь Х2) - (XD A X,) V (Хо A Х2) V (X, А Х2), 00 < І < 59),

IXXDlX1,X2) = X0©X1©X2> (60</<79).

  1. Константи

У цій цикловій функції використовують послідовність слів, що визначають константи Со, Съ .... С79. У шістнадцятковому зображенні (де найбільш значущий біт відповідає найлівішому біту) їх визна­чають так:

С

( 0</<19), (20 < і < 39), (40 < і < 59), (60 < /< 79).

і = 5А827999.

С,,= 6ED9EBA1,

C,= 8F1BBCDC, Cf= CA62C1D6,

  1. Початкове значення

Для цієї циклової функції початкове значення, IV, завжди буде таким 160-бітним рядком, по­даним тут як послідовність з п’яти слів Уо, ^1- y2, Y3, y4 У шістнадцятковому вигляді, де Уо подає найлівіші 32 біти з 160 бітів:

Уо = 67452301.

У, = EFCDAB89,

У2 = 98BADCFE,

У, = 10325476, У, = C3D2E1F0.

  1. Метод заповнювання

Рядок даних D має бути заповнений так, щоб він містив кількість бітів, кратну 512. Процедуру заповнювання виконують так:

1 D приєднують до єдиного біт ‘1’.

2 Результат попереднього кроку приєднують до нульових (‘0’) бітів у кількості від нуля до 511 так, щоб довжина (в бітах) результівного рядка була конгруентною 448 за модулем 512. Точніше, якщо первинна довжина рядка D є LD, та г— залишок від ділення LD на 512, то кількість нулів для приєднання рівна або 447-г (якщо г < 447), або 959-г (якщо г > 447). Результатом буде бітовий ря­док, довжина якого менша на 64 біта від числа кратного 512 бітів.

З Приєднують результівний рядок з попереднього кроку з 64-бітним двійковим зображенням Ld, у якому найбільш значущий біт — перший.

В описі циклової функції, що буде наведено далі, кожний 512-бітний блок даних Dh 1 < і < q подано як послідовність із 16 слів, Zo, Z15, де Zo відповідає найлівішим 32 бітам D(.

Примітка. Приєднання 64-бітного рядка LDу кроці 3 таке, що найбільш значущий 32-бітний рядок та найменш зна­чущий 32-бітний рядок Ld використовуються відповідно як слова Z14Ta Z15 останнього блоку; відповідно до узгодження послідовності байтів згідно з 9.1.2, найбільш значущий байт з LD найлівіший байт, а найменш значущий байт — най- правіший байт.

  1. Опис циклової функції

Циклова функція Ф діє так. Треба зауважити, що в цьому описі використано символи И/, Хо, Хі, Х2, Х3, Х4, Zo, Zb ..., Z79 для позначення 86 різних слів, які містять значення, необхідні для об­числень.

  1. Вважають, що 512-бітний (перший) вхід до Ф розміщено в Zo, Zb .... Z15, де Zo містить 32 най- лівіших з 512 бітів. Вважають також, що 160-бітний (другий) вхід до Ф розміщено в п’яти словах Уо. Уі. У2> Уз, У4-

  2. Для і = 16 до 79 нехай

Z, := S’(Zj.3 © Zf-a © Zj.14 © Zj-ie).

З Нехай X0:=Y0, X1:=Y1, X2:=Y2, X3:=Y3 та X4:=Y4.

  1. Для і = 0 до 79 виконати такі два кроки:

  1. tV:=S6(X0)©/;{X1,X2,X3)wX4te>Z?©Ci,-

  2. Х4 := Х3; Х3 := Х2; Х2 := S30(X); X, := Хо; Хо := IV.

5 Нехай Ус -= Уо w Хо, У, У w X, '6 := У2 у Х2, У2 := Уг у Х3 та У< := У4 и X,

6 П’ять слів Уо, У-і, У2, У3, У4 подають вихід циклової функції Ф. Після останньої ітерації цик­лової функції п’ять слів Уо, Уі, У2, У3, У4 треба перетворити в послідовність з 20 байтів, викорис­товуючи обернення процедури, описаної в 9.1.2, де Уо дає перші чотири байти, — наступні чо­тири байти і т. д. Таким чином перший (найлівіший) байт буде відповідати найбільш значущому байту з Уо, та 20-й (найправіший) байт буде відповідати найменш значущому байту з У4. 20 байтів будуть перетворені в рядок з 160 бітів, використовуючи обернення процедури, зазначе­ної в розділі 6, тобто перший (найлівіший) біт буде відповідати найбільш значущому біту першо­го (найлівішого) байта, та 160-й (найправіший) біт буде відповідати найменш значущому біту 20- ого (найправішого) байта.

На рисунку 3 зображені кроки (а) та (Ь) пункту 4 циклової функції Ф спеціалізованої геш- функції З (SHA-1). У цикловій функції Ф кроки (а) та (Ь) пункту 4 виконують 80 разів (/ = 0, ..., 79).




(до циклу /■)


(після циклу і)


Рисунок 3 — Частина циклової функції в спеціалізованій геш-функції З


10 СПЕЦІАЛІЗОВАНА ГЕШ-ФУНКЦІЯ 4 (SHA-256)

У цьому розділі визначено метод заповнювання, початкове значення та циклову функцію, яку використовують у загальній моделі для геш-функцій, описаних в ISO/IEC 10118-1:2000. Якщо за­стосувати метод заповнювання, початкове значення та циклову функцію, визначені тут, до загаль­ної моделі, згаданої вище, то таким чином визначають спеціалізовану геш-функцію 4. Спеціалізо­вану геш-функцію можна застосовувати до будь-яких рядків даних D, що містять щонайбільш 264-1 бітів.

Міжнародний стандартизований ідентифікатор ISO/IEC для спеціалізованої геш-функції 4 дорів­нює 34 (у шістнадцятковому зображенні).

Примітка. Спеціалізовану геш-функцію 4, визначену в цьому розділі, зазвичай називають SHA-256, [2].

  1. Параметри, функції та константи

    1. Параметри

Для цієї геш-функції Li=512, L2=256, a LH не перевищує 256.

  1. Узгодження порядку слідування байтів

Узгодження порядку байтів у цій геш-функції, як зазначено в 9.1.2.

  1. Функції

Щоб полегшити програмну реалізацію, циклову функцію Ф визначають в термінах операцій над 32-бітними словами. Послідовність функцій е0, е1: е2, ©з, е4, е5 використовують у цикловій функції, де е0 та є-, приймає три слова Хо, Хі та Х2 на вході, е2, е3, е4 та е5 приймає єдине слово Хо на вході, та кожна із цих шести функцій видає єдине 32-бітове слово на виході.

Функції е0, e1f е2, е3, е4 та е5 визначають так:

eD(X0, X, Х2) =(Х0 A X,) © ЩХ0 А Х2),

©і(Хо, Х2) =(Х0Л X,) © (Хо А Х2) © (X, А Х2),

Є20) =S’2(X0) © S'13(X3) ® S,22(Xo),

©з(Хо) =S's(X0) © S'11(Xa) © S'2S(X0),

e4(X3) =S'7(X0) © S'18(Xa) © R3(X0),

e5(Xa) =S'17(X0) © S'18 (Xo) © R,0(X0).

  1. Константи

У цій циклової функції використовують послідовність слів, що визначають константи Со, C-і, ..., С63. У шістнадцятковому зображенні (де найбільш значущий біт відповідає найлівішо- му біту) їх визначають так, як зазначено нижче, де список слів наведено в порядку Со, С ..., С63.



428a2f98 71374491 b5c0fbcf e9b5dba5 d807aa98 12835b01 243185be 550c7dc3 e49b69c1 efbe4786 0fc19dc6 240ca1cc 983e5152 a831c66d b00327c8 bf597fc7 27b70a85 2e1b2138 4d2c6dfc 53380d13 a2bfe8a1 a81a664b с24Ь8Ь70 c76c51a3 19a4c116 1e376c08 2748774c 34b0bcb5 748f82ee 78a5636f 84c87814 8cc70208


3956c25b 59f111f1 923f82a4 ab1c5ed5

72be5d74 80deb1fe 9bdc06a7 c19bf174 2de92c6f 4a7484aa 5cb0a9dc 76f988da сбеООЬЇЗ d5a79147 06ca6351 14292967 650a7354 766a0abb 81c2c92e 92722c85 d192e819 d6990624 f40e3585 106aa070 391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3 90befffa a4506ceb bef9a3f7 c67178f2



Примітка. Ці значення — це перші тридцять два біти дробових частин кубічних коренів перших шістдесяти чоти­рьох простих чисел.

  1. Початкове значення

Для цієї циклової функції початкове значення, IV, завжди буде таким 256-бітним рядком, на­веденим тут як послідовність з восьми слів Уо, Уь У2, У3, У4, У5, У6, У? У шістнадцятковому зобра­женні, де Уо представляє найлівіші 32 біти з 256 бітів:

Уо - 6а09е667,

У, = ЬЬ67ае85,

У2 = 3c6ef372,

У3 = a54ff53a,

У = 510e527f,

У6 = 9Ь05688с,

У6 = 1 f83d9ab,

y7 = 5be0cd19.

Примітка. Ці значення — це дробові частини квадратних коренів перших восьми простих чисел.

  1. Метод заповнювання

Метод заповнювання, використовуваний у цій геш-функції, має бути таким, як і метод запов­нювання, описаний у 9.2.