Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
госты / 34-011-94.doc
Скачиваний:
57
Добавлен:
24.07.2017
Размер:
153.6 Кб
Скачать

6 Процедура вычисления хэш-функции

Исходными данными для процедуры вычисления значения функ­ции h является подлежащая хэшированию последовательность Мб В*. Параметром является стартовый вектор хэширования Н— произвольное фиксированное слово из Vzse (2).

Процедура вычисления функции h на каждой итерации исполь­зует следующие величины:

М(-В*—часть последовательности М, не прошедшая процеду­ры хэширования на предыдущих итерациях;

НбУ2бб(2) —текущее значение хэш-функции;

26 Уг5б(2) —текущее значение контрольной суммы;

L6 Уг5б(2) — текущее значение дли'ны обработанной на преды­дущих итерациях части последовательности М.

Алгоритм вычисления функции h включает в себя этапы:

Этап 1 Присвоить начальные значения текущих величин ;

1.1 М:=М

1.2 Н:=Н

1.3 Е:==0'-1"" • 1.4 L:=026"

1.5 Переход к этапу 2 Этап 2

2.1 Проверить условие |М|>256.

При положительном исходе перейти к этапу 3.

В противном случае выполнить последовательность вычисле­ний:

2.2 L:=<L+|M|>256

23 М^^О256-1"' ||М

24 Е:==ЕФ'М'

2.5 Н:=х(М', Н)

2.6 H:=x(L, H) ;

2.7 Н:=1^, Н) -

2.8 Конец работы алгоритма '.

Этап 3

3.1 Вычислить подслово Ms6V256(2) слова М (М==Мр||М,)-Далее выполнить последовательность вычислений:

3.2 Н:=х(М„ Н)

3.3 L:=<L+256>2ee

3.4 E^E'e'M,

3.5 M:=Mp

3.6 Перейти к этапу 2.

Значение величины Н, полученное на шаге 2.7, является зна­чением функции хэширования h (М).

Проверочные примеры для вышеизложенной процедуры вычис­ления хэш-функции приведены в приложении А.

Приложение а

(справочное)

ПРОВЕРОЧНЫЕ ПРИМЕРЫ

llrVJUI-la ^ - _^

Заполнение узлов замены п\, яа,..., Лв и значение стартового вектора хэ­ширования Н, указанные в данном приложении, рекомендуется использовать только в проверочных примерах для настоящего стандарта.

A.I Использование алгоритма ГОСТ 28147

В качестве шифрующего преобразования в приводимых ниже примерах ис­пользуется алгоритм ГОСТ 28147 в режиме простой замены. ''

При этом заполнение узлов замены п\, лг,..., Пв блока подстановки я"

<ледующее:

f 8 7 6 5 4 3 '2 • 1

i0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

8

1

Р D 0 5 7 . • A 4 9 2 3 E 6 В 8 С

7

D В 4 1 3 F 5 9 0 А E 7 6 8 2 С

b

4 В А 0 7 2

D

3 6 8 5 9 С .Р F.

0

6

С 7 1

0

F П 8 4 A 9 E 0 3 В 2

'~R~ в ст

7 D A 1 0 8 9 F E 4 6 С В 2 5 3

ооке с

5 8 ' 1 D А 3 4 2 E Р С 7 . 6 0 9 В

номером

E В 4 'С 6 U F A 2 3 ' в I 0 7 S ' 9

>, i-OX"

4 A 9 2 D 8 0 E 6 В 1 С 7 F 5 3

при


r 4

'ii I с с г. ^

В столбце с номером ], )'=1,8, в, строке с номером i, i— 0,15, приведено значение Л)(0 в шестнадцатеричной системе счисления.

А.2 Представление векторов

Последовательности двоичных символов будем записывать как строки шест­надцатиричных цифр, в которых каждая цифра соответствует четырем знакам

<е двоичного представления.

А.З П р и м е р ы вычисления значения хэш-ф^ункции

В качестве стартового вектора хэширования принимают, например, нулевой вектор

н=ооооаооо оооооооо оооаоооо ооюооооо

00000000 ОООООООО ОООООООО ООйООООО А.3.1 Пусть необходимо выполнить хэширование сообщения

М- 73657479 622103233 3D687467 6Е656С20 ix 2С656761 7373696D 20736920 73696854

• Выполняют присвоение начальных значений:

текста , М-73657479 ^">03233 3D687467 6Е656С20

1СеЭ6761 7373656D 20736920 73696854 »

дэш-функции

н=оооаоооо оооооооо

00000000 ОООООООО ОООООООО ООЙООООО

OOOOQOOO ОООООООО ., -суммы блоков текста

Д^ОООООООЮ ОООООООО ОООООООО ЮООООООО

оооооооо оооооооо

00000000 ОООООООО

длины текста L-= ОООООООО ОООООООО

оооооооо оооооооо

ОООООООО 001000000-

00000000 'ОООООООО ОООООООО 00000000-Так как длина сообщения, подлежащего хэшированию, равна 256 битам

ОООООООО 00000000 ОООООООО 00000100

(32 байтам),

L=001000000 OOOQOOOO 00000000 ОООООООО

М'=М= 73657479'62203233 3D687467 6Е656С20

2С696761 7373656D 30736920 73696854, то

нет необходимости дописывать текущий блок нулями,

2=М'= 73657479 62203233 3D687467 6Е656С20 2С656761 7373656D 20736920 73696854

Переходят к вычислению значения шаговой функции хэширования х (М, Н). Вырабатывают ключи

" '»nnr-\Ct/^rhrt ;;[

Kl-

733D2C20 626Е7373

65686573 20657369'"

747467C9 326C6568

79676120 33206D54

к»»

110C733D 1D00626E

OD 166568 161A2065

130E7474 090D326C

061417967 •4D393320

к.-

80B111F3 620C1DFF

730DF216 3ABAE91A

850013F1 3FA109F2

C7E1F941 FB13B239

К4-

АОЕ2804Е EE1D620C

FF1B73F2 ACOCC5BA

ЕСЕ27АЙО A804C05E

E7B8C7E1 A18BOAEC

Осуществляют зашифрование W-битных подслов блока Н с помощью алго­ритма по ГОСТ 28147.

Блок hi =00000000 ОООООООО зашифровывают на ключе Ki и получают Si—

-42АВВССЕ 32BGOB1B.

Блок ha=00000000 OOOOOIQOO зашифровывают на ключе Кд и получают за™'

=5203ЕВС8 5D9BCFFD.

Блок ha =00000000 ОООООООО зашифровывают на ключе К» и получают s»—

-8D345899 OOFFOE28.

Блок h4= ОООООООО 000100000 зашифровывают на ключе К« и получают 84—

=Е7860419 OD2A962D. Получают

S- E7860419 OD2A562D 8D345899 &3FFOE28 5203ЕВС8 5D9BCFFD 42АВВССЕ 32ВСОВ1В

с

Выполняют перемешивающее преобразование с применением регистра сдви­га и получают •

В-х(М,Н)= CF9A8C65 Э35967А4 68AU3B8C 42DE7624' D99C4124 883DA687 S61C7J3E3 3315С034

;Т Р 34

1.11-М

Полага

ют H=S, вы1

числяют х (L

-, Н):

К,-

CP68D956 50428833

9АА09С1С 59DE3D15

8C3B417D 6776А6С1

658С24ЕЗ А4248734

К,»

8FCF68D9 ВВ504288

в09АА'С9С 2859DE3D

ЗС8СЗВ41 666676А'5

С7658С24 B3Ai42487

Ка°

4E70CF97 CABB50BD

3C8.GS5AO E3D7A6DE

853С8СС4 01936788

57389A8C 6CB35B24

К,"

584E70CF EDCABB50

С53С8065 78E3D7A6

48853С8С EED 19867

1657389A 7F5CB35B

S=

66B70F5E Е5ЕС8А37

F163P461 3FD42279

468А9528 3CD1602D

61D60593 DD763E86

S=

2В6ЕС233 DD3848D1

С7ВС89Е4 С6АС997А

2АВС2692 24F74E2B

5FEA7285 09A3AEF7

Вновь

полагают Н==

Е и вычисляют х (2, Н)':

К,-

5817F104 А531В57А

OBD45D84 9C8FDFCA

B6522F27 BB1EFCC6

4AF5BOOB D7A517A3

Кг-

Е82759ЕО D2C73DA8

C278D950 19А6САС9

15СС523С 3E8440F5

FC72EBB6 CODDB65A

Кз=

77483AD9 FBC3DAAO

F7C29CAA 7CB555FO

EB06D1D7 D4968080

641BCAD3 OA9E56BC

к<°

А 1157965 768 4 AD CB

2D9FBC9C FA4ACA06

С88С7СС2 53EFF7D7

46FB3DD2 C07487081

S"

2AEBFA76 С31Е7435

A85FB57D 4930FD05

6F164DE9 1F18A4942

2951A581 550A582D

5=

FAFF37A6 E09525F3

15А81669 9F811983

1CFF3EF8 2ЕВ81975

B68CA247 D366C4B1

Таким образом, результат хэширования есть

Н= FAFF37A6 15А81669 1CFF3EF8 B68CA247 E0.9525F3 9F811983 2ЕВ81975 D366C4B1

А.3.2 Пусть необходимо выполнить хэширование сообщения ,

М= 7365 7479622Й 3035203D 2С687467 6Е656С20 73616820 65676173 73656D20 6С616Е69 6769726F 20656874 2065736Р 707107553

Tax как длина сообщения, подлежащего хэшированию, равяа 400 битам (50 байтам), то разбивают сообщение на два блока и второй (старший) блок дописывают нулями В процессе вычислений получают:

Ш/ Н=

М= Кг

t

Г 1

000(

ото

ЗДОЮО П0001 00000 ОООС

73616820 6769726Р

73736720 656С2070

30 10(

'00 000000 ЖО ООНЗОС

65676173 20656874

61656965 67616570

00 100

ortcoonoo

00000000

73656D20 2065736F

6S5D7273 616E6875

6С616Е69

710707553

20206F6F 73697453

K,-

14477373 4С50656С

ОСОС6166 lFi01686D 04156761 061D616E

4РООЙ020 1D277369

Кэ-

CBFF114B8 35094CAF

6D04F30C 96051FFE 72F9FB15 7CF006E2

DFFFBO'00 AB1AE227

К4»

ЕВАССВОО ВА1С350.9

F7006DFB E5E 16905 FD118DF9 F)61B830'F

BOBODFFF F8C554E5

s=

FF41797C EDDC2210

EEAADAC2 43C9B1DF 1EE1ADF9 FA67E757

2E114681C DAFE3AD9

. s-

FOCEEA4E A93BEFBD

368B5A60 C63D96C1 2634FOAD CBBB69CE

E5B51CD2 ED2D5D9A

ШАГ

2

H~

FOCEEA4E A93BEFBD

368B5A60 C63D96C1 2634F'OAD CBBB69CE

E5B51CD2 ED2D5D9A

М'=

00000000 001000000 00000000 .00007365 714796220 3035203D 20687467 6Е656С20

Ki=

FOC6DDEB 36Е51683

CE3D42D3 EA968D1D 8BB50148 5A6FD03I

4EC19DA9 80B790BA

Ка-

16А4С6А9 FB68E526

F9DF3D3B E4FC96EF 2CDBB534 FE161C83

5339C1BD 6F7DD2C8

Кз=

C49D846D 9DCB0644

1780482C 9086887F D1E641E5 A02109AF

C48C9186 9D52C7CF

К4=

BDBOC9FO 1CAD9536

7Э6Е9131 E1F290EA F4B4B674 99F31E29

50E4CBB1 70C52AFA

S-

62А07ЕА5 6881ЕВ6В

EF3C3309 2CE1B076 F5C7959F 63FCA1F1

1173D48CC D33C31B8

s=

96ВЕАОВЕ В82в7СВ6

88D6AA02 FE3C9D45 2CBC135B 3E339EFE,

436CE821 P6576CA9

ШАГ

3

Н-

95ВЕАОВЕ В8287СВ6

8&D5AA02 FE3C9D45 2CBC135B 3E339EFE

436CE821 F657CCA9

L-

010000000 00000000 00000000 00000000 00000000 00000000 00000000 00000190

К,-

95FEB83E 88432CF6

BE3C2833 A09D7C9E D56CBC57 AAE8136D

BE45B6FE 02215B39 •'

К.-

869CFEB8 DA88432C

1BBE3C28 E2A09D7C EBD56CBC 7FABE813

48ВБ45В6 F292215B

К»-

В9799ЭС1 6FDA88BC

141B413C 1EE2A062 D0142A6C РА'80ААГ6

SOCB74L45 15F2FDB1

К«-

94В97995 346FDA88

7D141B41 С21ЕЕ2АО 46D0142A BDFA81AA

040CB741 DC1562FD

S-

D42336EO 9FDDFF20

2АОА6998 6С65478А 48С8Е863 94FD9D6D

3D08A1B9 F776A7AD