Уо = cbbb9d5dc1059ed8,

Уі = 629a292a367cd507,

Y. - 9159015a3070dd17.

Уз = 152fecd8f70e5939,

У4 = 67332667ffc00b31,

У5 = 8eb44a8768581511,

У5 = db0c2e0d64(98fa7, y7 = 47b5481dbefa4fa4.

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

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

Метод заповнювання, використовуваний у цій функції такий, як і метод заповнювання, визна­чений у 11.2.

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

Циклова функція, використовувана у цій геш-функції буде така, як і циклова функція визна­чена у 11.3.

Остаточна 384-бітна геш-функція отримана урізанням SHA-512 вихідної геш-функції до її най- лівіших 384 бітів.

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

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

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

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

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

    1. Параметри

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

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

У специфікації циклової функції цього розділу означено, що блок на вході циклової функції подають у формі матриці М (де всі матриці тут є матрицями розміром 8 на 8 та елементи матриць вибрані з GF(28)), кожен 512-бітний блок утворює таку матрицю. Послідовність з 64 байтів, В - (Во, S1? ..., Ввз), буде інтерпретовано як матрицю М, таким чином елемент першого рядка та першого стовпчика матриці буде найлівішим байтом (де найлівіший байт відповідає найбільш зна­чущому) послідовності В (тобто Во), елемент першого рядка та другого стовпчика матриці буде дру­гим зліва байтом з В (тобто Ві), ..., елемент на перетині восьмого рядка та восьмого стовпця мат­риці буде найправішим байтом В (тобто В63). Це виконують за допомогою функції с0, визначеної у 13.1.3.

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

  1. Функції

Щоб полегшити програмну реалізацію, циклову функцію Ф визначають в термінах операцій над матрицею М. Послідовність функцій с0, с2, с3, с4 використовують в цикловій функції. їх

визначають так.

Функція с0 приймає 64-байтову послідовність В = (Во, Ві. • ••. $бз) на вході, та видає матрицю Z' = (z;y) на виході, де

и; )-68,, (0 </,;< 7).



Це означає, що Z' = c0(S) тоді і тільки тоді, коли (z'y) = B8/+j (0 < і, j < 7).

Функція c-і приймає на вході матрицю X” ~(х”) та видає іншу матрицю W' = (w-)на виході, де

w' = s[xj],

та де s — блок нелінійної підстановки. Це означає, що W' = с^Х^тоді і тільки тоді, коли w/ = s[xj], (0 < /, у < 7).

Блок s замінює елементи х є GF(28) іншими елементами s[x] є GF(28); як зазначено в таб­лиці 2 (елементи першого стовпчика — «більш значуща частина» х, а елементи першого рядка — «менш значуща частина» х; наприклад, якщо х = 01010110 = 56 (у шістнадцятковому зображенні),

s[x] =

49 (у шістнадцятковому зображені)

01001001).

Габлиця 2 —

s-блок


О

1

2

3

4

5

c

7

8

9

A

В

c

D

E

F

0

ІЗ

23

С6

ЕЗ

87

В8

01

4F

36

Ac

D2

F5

79

6F

91

52

і

60

ВС

АЗ

ОС

7B

35

ID

EO

D7

C2

2E

4B

FE

57

2

15

77

37

Е5

9F

F0

4A

DA

58

C9

29

0A

Bl

A0

6B

85

3

BD

5D

10

F4

св

ЗЕ

05

67

E4

27

41

8B

A7

7D

■95

D5

4

FB

ЕЕ

6 Є

DD

17

47

9E

CA

2D

BF

07

AD

5A

■33

33


63

02

АА

71

С5

19

49

D9

F2

E3

5B

88

9A

26

32

B0

6

Е9

OF

D5

8 0

BE

CD

34

48

FF

7A

90

5F

20

68

1A

AE

т

дл

54

93

7 ?

6 4

Fl

73

12

40

08

C3

EC

DB

Al

8D

3D

р.

97

0 0

CF

76

82

D6

IB

B5

AF

ЄА

50

45

F3

30

EF

9

3F

55

А2

ЕА

65

BA

2F

co

DE

IC

FD

4D

92

75

06

8A

А

В2

Её

LE

62

Е4

A8

96

F9

C5

25

59

84

72

39

4C

В

78

3-3

ЗС

D1

А5

E2

61

B3

21

9C

IE

43

C7

FC

04

с

51

99

6d

0D

FA

DE

7E

24

3B

AB

CE

11

8F

4E

B7

EB

D

ЗС

81

94

F7

В9

13

2C

D3

E7

6E

C4

03

56

44

7F

A9

Е

ВВ

СІ

53

DC

OB

9D

6C

31

74

F6

46

AC

89

14

El

F

16

ЗА

69

09

70

3€

DO

ED

CC

42

98

A4

28

5C

F8

86



Ф

(0</,/<7).

ункція с2 приймає на вході матрицю X" = (х[) та видає іншу матрицю ИЛ = (и/')на виході, де

^ij -^(Н) mod 8,/'

Це означає, що W = с2(Х") тоді і тільки тоді, коли = Х[Н}тоа8j, (0 < і, j < 7), Функція с3 приймає на вході матрицю X" та видає іншу матрицю И/’на виході, де

W' = X’ • С"

та де С" — циркулянтна матриця 8 на 8 з елементами з GF(28), її визначають так:

[01 01 04 01 08 05 02 09'

j 09 01 01 04 01 08 05 02

j 02 09 01 01 04 01 08 05

І05 02 09 01 01 04 01 08

і OS 05 02 09 01 01 04 01

j01 08 05 02 09 01 01 04

і 04 01 08 05 02 09 01 01

І_01 04 01 08 05 02 09 01.

Це означає, що И/' = с3(Х") тоді і тільки тоді, коли W' = X”- С".

Функція Сд приймає на вході матриці X" = (xJ) та У' = (У£) та видає одну матрицю W' = (wJ) на виході, де

Це означає, що Wr = с4(Х*) тоді і тільки тоді, коли W~ = XJ Є yj, (0 < і, j < 7).

  1. Константи

У цій циклової функції використовують послідовність матриць Ar=(A'j) (0 < г< 10), що визна­чена константами. Циклова константа для г-ого циклу — це матриця, визначена як;

(0

д; = о, (1 < / < 7, 0 <; < 7)

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

Для цієї циклової функції початкове значення, IV, буде рядок з 512 ‘О’бітів.

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

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

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

  2. Результат попереднього кроку приєднують до нульових (‘0’) бітів в кількості від нуля до 511 так, щоб довжина (в бітах) результівного рядка була непарним кратним 256.

З Якщо первинна довжина D є /_D, то приєднуємо результівний з попереднього кроку рядок з 256-бітним двійковим зображенням LD, найбільш значущий біт — перший.

В описі циклової функції, що буде наведено далі, кожен 512-бітний блок даних Dit 1 < і < q подають як матрицю Z' = (zJ) (0 < і, j < 7), як зазначено в 13.1.2, де Zg0 відповідає найлівішим 8 бітам з Dj, az)7 відповідає найправішим 8 бітам £),.

Примітка. Приєднання 256-бітнсго рядка tD у кроці 3 таке, що 256-бітний рядок використовують прямо як другу половину останньої матриці даних, відповідно до узгодження порядку слідування байтів, наведених у 13.1.2, найбільш значущий байт з LD — перетин п’ятого рядка та першого стовпчика, а найменш значущий байт з — перетин восьмо­го рядка та восьмого стовпчика.

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

Циклова функція Ф діє так. Треба зауважити, що в цьому описі використовано символи IV', X", Ко, Kv...10 для позначення 13 окремих матриць, вхідні елементи яких вибрано з GF(28) які містять значення, необхідні для обчислень.

  1. Вважають, що 512-бітний (перший) вхід до Ф розміщено в матриці Z', де вхідні елементи вибрані з GF(28), який сформований відповідно до узгодження порядку слідування байтів, наведе­них у 13.1.2. Вважають також, що 512-бітний (другий) вхід до Ф розміщено в матриці У' з вхідними елементами з GF(28).

  2. Нехай KQ:= У’; та для і:=1 до 10 нехай

К,- с432(С1(Ки))), XV).

Примітка. Цей крок розгортає матрицю У" у послідовність циклових ключів Ко, ..., К10.

З Нехай X" = c4(Z',K0); та для j:=1 до 10 здійснюємо такі два кроки:

(а)IV' := c4(c3(c2(c1(X"))),Xj);

(b) X":=IV'.

  1. Нехай У'GZ'.

Матриця У' подає вихід циклової функції Ф. Після останньої ітерації циклової функції, мат­рицю У'треба перетворити в послідовність з 64 байтів, використовуючи обернення до процедури, визначеної в 13.1.2, де елемент першого рядка та першого стовпця дає перший байт, елемент першого рядка та другого стовпця дає наступний байт, елемент восьмого рядка та восьмого стовпця дає останній байт, 64 байти треба перетворити в рядок з 512 бітів, використовуючи обер­нення процедури, зазначеної в розділі 6, тобто перший (найлівіший) біт буде відповідати найбільш значущому біту першого (найлівішого) байта, та 512-й (найправіший) біт буде відповідати найменш значущому біту 64-ого (найправішого) байта.

На рисунку 6 показані кроки (а) та (Ь) пункту 3 циклової функції Ф спеціалізованої геш-функції 7 (WHIRLPOOL). У циклової функції Ф, кроки, зображені на рисунку 6, використано 10 разів (У = 1, .... 10),

W

Рисунок 6 - Частина циклової функції спеціалізованої геш-функції 7



ДОДАТОК А
(довідковий)

ПРИКЛАДИ

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

У цьому додатку наведено ASCII кодування рядків даних, це кодування еквівалентне кодуван­ню згідно зі стандартом ISO 646.

А.1 Спеціалізована геш-функція 1

Примітка. Посилання [3] містить псевдокод, що описує спеціалізовану геш-функцію 1.

А. 1.1 Приклад 1

У цьому прикладі рядок з даними — це порожній рядок, тобто рядок нульової довжини.

Геш-кодом для цього рядка даних буде такий 160-бітний рядок: