і

2 4

2 5 '

2 6

2 7

2 8

2 9

3 0

3 І

t >

7

1 2

1 5

9

1 1

7

1 3

1 2

t '

7

7

1 2

7

6

1 5

1 3

1 1

а !

1 2

0

9

5

2

1 4

1 ї

з


1 4

1 5

8

1 2

4

9

1

2





3 2

3 3

3 4

3 5

3 6

3 7

33

39

f ,

1 1

1 3

6

7

1 4

9

1 3

1 5

і

9

7

1 5

1 1

8

6

8

1 4

а >

3

1 0

1 4

4

9

1 S

8

1

9

1 S

5

1

3

7

1 4

6

9



Кінець таблиці 1

f

4 Є

4 1

4 2

4 3

4 4

4 5

4 6

4 7

І і

4

8

1 3

5

1 2

7

5

і

1 2

1 3

5

1 4

1 3

1 3

7

5

а .

2

7 .

0

Є

1 3

1 1

5

1 2

а

1 1

8

1 2

2

1 0

0

4

1 3




г

4 а

4 9

5 0

5 1

5 2

5 3

5 4

5 &

f;

і і

1 2

1 4

1 5

1 4

1 5

9

8

t

1 5

5

8

1 1

1 4

1 4

6

1 4

а ;

1

9

1 1

1 0

0

8

І 2

4

а ’■>

8

6

4

1

3

1 1

1 5

0





5 6

5 7

S 8

5 9

S 0

6 1

6 2

6 3

f,

9

1 4

6

6

8

6

6

1 2

г

6

9

1 2

9

1 2

5

1 5

8

а »

1 3

3

7

1 5

1 4

5

6

2

а

5

1 2

2

ї 3

9

7

1 0

1 4




І

б 4

6 5

6 6

6 7

б 8

6 9

7 0

7 1

f,

9

1 5

5

1 1

6

8

1 3 І

1 2

f

8

5

1 2

9

1 2

5

1 4

©

а :

4

0

5

9

7

1 2

2

1 0

а

1 2

1 5

t 0

4

1

5

8

7




1

7 2

7 3

7 4

7 5

7 6

7 7

7 8

7 9

f,

5

1 2

1 3

1 4

І 1

8

5

6

t '/

8

1 3

6

5

1 5

1 3

1 1

1 1

<3 «

1 4

1

3

8

1 1

6

1 5

1 3

а

6

2

1 3

1 4

0

3

9

1 1



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

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

Ув = 67452301,

  • , = EFCDAB89,

  • 2 = 98BADCFE,

  • , = 10325476,

  • 4 = C3D2E1F0.

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

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

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

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

З Ділять двійкове зображення LD, що складене з 64 бітів на два 32-бітні рядки, один з яких подає "більш значущу половину" LD, а інший "менш значущу половину". Потім приєднують резуль- тівний рядок попереднього кроку із цими двома 32-бітними рядками, причому "менш значуща по­ловина" передує "більш значущій половині".

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



Примітка. При’єднання двох 32-бітних рядків LD у кроці 3 така, що ці два 32-бітних рядки використовують прямо як слова Z14 та Z16 останнього блоку; відповідно до угоди про послідовність байтів, наведена в 7.1.2, найменш значущий октет Ld найлівіший октет, а найбільш значущий октет — найправіший октет.

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

Циклова функція Ф діє так. Треба зауважити, що в цьому описі використано символи И/, Хо, Х^, Х2, Х3, Х4, Хї, Х’2, Х3, Х'А для позначення одинадцяти різних слів, які містять значення, необхідні для обчислень.

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

  2. Нехай Х0:=У0, X^:=Yb Х2:=У2, Х3:=У3та Х4:=У4

З Нехай Х^ := Уо, Xj := У1; Х2 := У2Х'3 := Y3 та Х'4 := У4.

4 Для /:=0 до 79 здійснюємо такі чотири кроки у зазначеному порядку:

  1. W := S*(XB w д,{Х,, Х2, Х3) w Zai w С() w Х4;

  2. Хо := Х4: X, := Х3; Х3 = S,n(X2); Х2 := X,; X, := W;

  3. W := S^Xo w дп.{Х, Х'2, Х3) Z„, w С') w X4;

  4. Xo := X4; X := X3; X'3 := SW(X2); X2 := X,; X W.

5 Нехай

W:= Уо,

Уо := X w X2 w X'3,

X := У2 w X3 w X4, y2 := Y3 w X4 у XOr

Уз - У4 w Xo w X.,

У4 := W& X, wX2.

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

На рисунку 1 показано кроки (а) та (Ь) пункту 4 циклової функції Ф спеціалізованої геш-функції 1 (RIPEMD-160) (решта частин, тобто кроки (с) та (d) аналогічні). В цикловій функції Ф кроки від (а)

до (d) пункту 4 виконують 80 разів (/ = 0, ..., 79).


(до циклу і)


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




8 СПЕЦІАЛІЗОВАНА ГЄШ-ФУНКЦІЯ 2 (RIPEMD-128)

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

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

Примітка. Спеціалізовану геш-функцію 2, визначену в цьому розділі, зазвичай називають RIPEMD-128, [3]. Цю функцію можна застосовувати тільки там, де геш-код, що містить 128 або менше бітів, є достатньо безпечним.

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

    1. Параметри

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

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

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

  1. Функції

Щоб полегшити програмну реалізацію, циклову функцію Ф визначають у термінах операцій над 32-бітними словами. Послідовність функцій g0, g1t .... g63 використовують у цій цикловій функції, де кожна функція gh 0 < і < 63 приймає три слова Хо, X-j та Х2 на вході та видає єдине сло­во на виході.

Функції ^визначають так само, як і перші 64 функції, визначені в 7.1.3.

  1. Константи

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

найлівішому біту) їх визначають так:

С

(16 < І < 31), (32 < г < 47), (48 < і < 63),

( о<}< 15), (16 < / < 31), (32</<47), (48</<63).

і = 00000000,
С( = 5А827999,

С, = 6ED9EBA1,

C, = 8F1BBCDC,

С', = 50А28ВЕ6,

СІ = 5C4DD124,

С = 6D703EF3, с; = оооооооо,

У цій цикловій функції використовують дві послідовності з 64 значень зсуву, де кожне значення зсуву лежить між 5 та 15. Ці послідовності визначають як (f0, f1t .... f63) та (fj, tf, ..., t33), але їх ви­значають, відповідними послідовностями, рівними першим 64 значенням, визначеним у 7.1.4.

Нарешті, наступні дві послідовності з 64 індексів, які теж використовують у цій цикловій функції, містять значення, що лежать у межах від 0 до 15. Ці послідовності визначають як (а0, а^ ..., а63) та (а3, а^, .... а^), та їх визначають, відповідними послідовностями, рівними першим 64 значенням, визначеним у 7.1.4.