allgosts.ru35.040 Кодирование информации35 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ

ГОСТ Р 34.11-94 Информационная технология. Криптографическая защита информации. Функция хэширования

Обозначение:
ГОСТ Р 34.11-94
Наименование:
Информационная технология. Криптографическая защита информации. Функция хэширования
Статус:
Заменен
Дата введения:
01.01.1995
Дата отмены:
-
Заменен на:
ГОСТ Р 34.11-2012
Код ОКС:
35.040

Текст ГОСТ Р 34.11-94 Информационная технология. Криптографическая защита информации. Функция хэширования

ГОСТ Р 34.11-94

Группа П85

ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ


Информационная технология

КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ

Функция хэширования

Information technology.
Cryptographic Data Security.
Hashing function

ОКСТУ 5002

Дата введения 1995-01-01

Предисловие

1 РАЗРАБОТАН Главным управлением безопасности связи Федерального агентства правительственной связи и информации и Всероссийским научно-исследовательским институтом стандартизации

ВНЕСЕН Техническим комитетом по стандартизации ТК 22 "Информационная технология" и Федеральным агентством правительственной связи и информации

2 ПРИНЯТ И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 23.05.94 N 154

3 ВВЕДЕН ВПЕРВЫЕ

ВВЕДЕНИЕ

Расширяющееся применение информационных технологий при создании, обработке, передаче и хранении документов требует в определенных случаях сохранения конфиденциальности их содержания, обеспечения полноты и достоверности.

Одним из эффективных направлений защиты информации является криптография (криптографическая защита), широко применяемая в различных сферах деятельности в государственных и коммерческих структурах.

Криптографические методы защиты информации являются объектом серьезных научных исследований и стандартизации на национальных, региональных и международных уровнях.

Настоящий стандарт определяет процедуру вычисления хэш-функции для любой последовательности двоичных символов.

Функция хэширования заключается в сопоставлении произвольного набора данных в виде последовательности двоичных символов и его образа фиксированной небольшой длины, что позволяет использовать эту функцию в процедурах электронной цифровой подписи для сокращения времени подписывания и проверки подписи. Эффект сокращения времени достигается за счет вычисления подписи только под образом подписываемого набора данных.

1 ОБЛАСТЬ ПРИМЕНЕНИЯ

Настоящий стандарт определяет алгоритм и процедуру вычисления хэш-функции для любой последовательности двоичных символов, которые применяются в криптографических методах обработки и защиты информации, в том числе для реализации процедур электронной цифровой подписи (ЭЦП) при передаче, обработке и хранении информации в автоматизированных системах.

Определенная в настоящем стандарте функция хэширования используется при реализации систем электронной цифровой подписи на базе асимметричного криптографического алгоритма по ГОСТ Р 34.10.

2 НОРМАТИВНЫЕ ССЫЛКИ

В настоящем стандарте использованы ссылки на следующие стандарты:

ГОСТ 28147-89 Системы обработки информации. Защита криптографическая. Алгоритмы криптографического преобразования.

ГОСТ Р 34.10-94 Информационная технология. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма.

3 ОБОЗНАЧЕНИЯ

В настоящем стандарте используются следующие обозначения:

- множество всех конечных слов в алфавите . Чтение слов и нумерация знаков алфавита (символов) осуществляются справа налево (номер правого символа в слове равен единице, второго справа - двум и т.д.).

- длина слова .

- множество всех бинарных слов длины .

- конкатенация слов - слово длины , в котором левые |А| символов образуют слово , а правые символов образуют слово . Можно также использовать обозначение .

- конкатенация экземпляров слова .

- слово длины , содержащее двоичную запись вычета неотрицательного целого числа .

- неотрицательное целое число, имеющее двоичную запись .

- побитовое сложение слов одинаковой длины по модулю 2.

- сложение по правилу , .

- последовательность двоичных символов, подлежащая хэшированию (сообщение в системах ЭЦП), .

- хэш-функция, отображающая последовательность в слово .

- результат зашифрования слова на ключе с использованием алгоритма шифрования по ГОСТ 28147 в режиме простой замены .

- стартовый вектор хэширования.

: = - присвоение параметру значения .

4 ОБЩИЕ ПОЛОЖЕНИЯ

Под хэш-функцией понимается зависящее от параметра [стартового вектора хэширования , являющегося словом из ] отображение

-------.

Для определения хэш-функции необходимы:

- алгоритм вычисления шаговой функции хэширования , т.е. отображения

------- ;

- описание итеративной процедуры вычисления значения хэш-функции .

5 ШАГОВАЯ ФУНКЦИЯ ХЭШИРОВАНИЯ

Алгоритм вычисления шаговой функции хэширования включает в себя три части, реализующие последовательно:

- генерацию ключей - слов длины 256 битов;

- шифрующее преобразование - зашифрование 64-битных подслов слова на ключах ( = 1, 2, 3, 4) с использованием алгоритма по ГОСТ 28147 в режиме простой замены;

- перемешивающее преобразование результата шифрования.

5.1 Генерация ключей

Рассмотрим .

Пусть





,

где ;

;

.

Обозначают .

Используют преобразование --------

слова в слово, ,

где

Для генерации ключей необходимо использовать следующие исходные данные:

- слова ;

- параметры: слова (=2, 3, 4), имеющие значения

и .

При вычислении ключей реализуется следующий алгоритм:

1 Присвоить значения

.

2 Выполнить вычисление

3 Присвоить .

4 Проверить условие .

При положительном исходе перейти к шагу 7. При отрицательном - перейти к шагу 5.

5 Выполнить вычисление

, , , .

6 Перейти к шагу 3.

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

5.2 Шифрующее преобразование

На данном этапе осуществляется зашифрование 64-битных подслов слова на ключах (1, 2, 3, 4).

Для шифрующего преобразования необходимо использовать следующие исходные данные:

,

и набор ключей , , , .

Реализуют алгоритм зашифрования и получают слова

, где =1, 2, 3, 4.

В результате данного этапа образуется последовательность

.

5.3 Перемешиваюшее преобразование

На данном этапе осуществляется перемешивание полученной последовательности с применением регистра сдвига.

Исходными данными являются:

слова и слово .

Пусть отображение

--------

преобразует слово

, ,

в слово

.

Тогда в качестве значения шаговой функции хэширования принимается слово

,

где - -я степень преобразования .

6 ПРОЦЕДУРА ВЫЧИСЛЕНИЯ ХЭШ-ФУНКЦИИ

Исходными данными для процедуры вычисления значения функции является подлежащая хэшированию последовательность . Параметром является стартовый вектор хэширования - произвольное фиксированное слово из .

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

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

- текущее значение хэш-функции;

- текущее значение контрольной суммы;

- текущее значение длины обработанной на предыдущих итерациях части последовательности .

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

Этап 1

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

еличин

1.1

1.2

1.3

1.4

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

Этап 2

2.1 Проверить условие .

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

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

2.2

2.3

2.4

2.5

2.6

2.7

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

Этап 3

3.1 Вычислить подслово слова . Далее выполнить последовательность вычислений:

3.2

3.3

3.4

3.5

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

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

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

ПРИЛОЖЕНИЕ А

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


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

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

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

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

При этом заполнение узлов замены , ,..., блока подстановки следующее:

8

7

6

5

4

3

2

1


0


1


D


4


6


7


5


E


4

1

F

B

B

C

D

8

B

A

2

D

4

A

7

A

1

4

9

3

0

1

0

1

1

D

C

2

4

5

3

7

5

0

A

6

D

5

7

F

2

F

8

3

D

8

6

A

5

1

D

9

4

F

0

7

4

9

D

8

F

2

A

E

8

9

0

3

4

E

E

2

6

9

2

A

6

A

4

F

3

B

10

3

E

8

9

6

С

8

1

11

E

7

5

E

C

7

1

C

12

6

6

9

0

B

6

0

7

13

B

8

C

3

2

0

7

F

14

8

2

F

B

5

9

5

5

15

C

C

E

2

3

B

9

3

В столбце с номером , , в строке с номером , , приведено значение в шестнадцатеричной системе счисления.

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

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

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

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

=

00000000

00000000

00000000

00000000

00000000

00000000

00000000

00000000

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

=

73657479

62203233

3D687467

6Е656С20

2С656761

7373656D

20736920

73696854

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

текста

=

73657479

62203233

3D687467

6Е656С20

2С656761

7373656D

20736920

73696854

хэш-функции

=

00000000

00000000

00000000

00000000

00000000

00000000

00000000

00000000

суммы блоков текста

=

00000000

00000000

00000000

00000000

00000000

00000000

00000000

00000000

длина текста

=

00000000

00000000

00000000

00000000

00000000

00000000

00000000

00000100

Так как длина сообщения, подлежащего хэшированию, равна 256 битам (32 байтам),

=

00000000

00000000

00000000

00000000

00000000

00000000

00000000

00000100

=

73657479

62203233

3D687467

6Е656С20

2С656761

7373656D

20736920

73696854, то

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

=

73657479

62203233

3D687467

6Е656С20

2С656761

7373656D

20736920

73696854

Переходят к вычислению значения шаговой функции хэширования .

Вырабатывают ключи

=

733D2C20

65686573

74746769

79676120

626Е7373

20657369

326С6568

33206D54

=

110C733D

0D166568

130E7474

06417967

1D00626E

161A2065

090D326C

4D393320

=

80B111F3

730DF216

850013F1

C7E1F941

620C1DFF

3ABAE91A

3FA109F2

F513B239

=

A0E2804E

FF1B73F2

ECE27A00

E7B8C7E1

EE1D620C

AC0CC5BA

A804C05E

A18B0AEC

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

Блок = 00000000 00000000 зашифровывают на ключе и получают = 42АВВССЕ 32ВС0В1В.

Блок = 00000000 00000000 зашифровывают на ключе и получают = 5203ЕВС8 5D9BCFFD.

Блок = 00000000 00000000 зашифровывают на ключе и получают = 8D345899 00FF0E28.

Блок = 00000000 00000000 зашифровывают на ключе и получают = Е7860419 0D2A562D.

Получают

=

E7860419

0D2A562D

8D345899

00FF0E28

5203ЕВС8

5D9BCFFD

42АВВССЕ

32ВС0В1В

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

=

CF9A8C65

505967А4

68А03В8С

42DE7624

D99С4124

883DA687

561C7DE3

3315С034

Полагают , вычисляют :

=

CF68D956

9АА09С1С

8C3B417D

658C24E3

50428833

59DE3D15

6776А6С1

A4248734

=

8FCF68D9

809AА09С

3С8С3В41

C7658C24

ВВ504288

2859DE3D

666676А6

B3A42487

=

4E70CF97

3С8065А0

853С8СС4

57389А8С

CABB50BD

E3D7A6DE

D1996788

5CB35B24

=

584E70CF

С53С8065

48853С8С

1657389A

EDCABB50

78E3D7A6

EED19867

7F5CB35B

=

66B70F5E

F163F461

468А9528

61D60593

Е5ЕС8А37

3FD42279

3CD1602D

DD783Е86

=

2В6ЕС233

С7ВС89Е4

2АВС2692

5FEA7285

DD3848D1

С6АС997А

24F74E2B

09A3AEF7

Вновь полагают и вычисляют :

=

5817F104

0BD45D84

B6522F27

4AF5B00B

А531В57А

9C8FDFCA

BB1EFCC6

D7A517A3

=

Е82759Е0

C278D950

15СС523С

FC72EBB6

D2C73DA8

19А6САС9

3E8440F5

C0DDB65A

=

77483AD9

F7C29CAA

EB06D1D7

841BCAD3

FBC3DAA0

7CB555F0

D4968080

0A9E56BC

=

А 1157965

2D9FBC9C

088С7СС2

46FB3DD2

7684ADCB

FA4ACA06

53EFF7D7

C0748708

=

2AEBFA76

A85FB57D

6F164DE9

2951A581

С31Е7435

4930FD05

1F8A4942

550A582D

=

FAFF37A6

15A81669

2CFF3EF8

B68CA247

E09525F3

9F811983

2ЕВ81975

D366C4B1

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

=

FAFF37A6

15A81669

1CFF3EF8

B68CA247

E09525F3

9F811983

2ЕВ81975

D366C4B1

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

= 7365

74796220

3035203D

20687467

6Е656С20

73616820

65676173

73656D20

6С616Е69

6769726F

20656874

2065736F

70707553

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

ШАГ 1

=

00000000

00000000

00000000

00000000

00000000

00000000

00000000

00000000

=

73616820

65676173

73656D20

6С616Е69

6769726F

20656874

2065736F

70707553

=

73736720

61656965

686D7273

20206F6F

656С2070

67616570

616E6875

73697453

=

14477373

0С0С6165

1F01686D

4F002020

4С50656С

04156761

061D616E

1D277369

=

CBFF14B8

6D04F30C

96051FFE

DFFFB000

35094CAF

72F9FB15

7CF006E2

AB1AE227

=

ЕВАССВ00

F7006DFB

Е5Е16905

B0B0DFFF

ВА1С3509

FD118DF9

F61B830F

F8C554E5

=

FF41797C

EEAADAC2

43C9B1DF

2E14681C

EDDC2210

1EE1ADF9

FA67E757

DAFE3AD9

=

F0CEEA4E

368B5A60

C63D96C1

E5B51CD2

A93BEFBD

2634F0AD

CBBB69CE

ED2D5D9A

ШАГ 2

=

F0CEEA4E

368B5A60

C63D96C1

Е5В51СD2

A93BEFBD

2634F0AD

CBBB69CE

ED2D5D9A

=

00000000

00000000

00000000

00007365

74796220

3035203D

20687467

6E656C20

=

F0C6DDEB

CE3D42D3

EA968D1D

4EC19DA9

36Е51683

8ВВ50148

5A6FD031

60В790ВА

=

16А4С6А9

F9DF3D3B

E4FC96EF

5309C1BD

FB68E526

2CDBB534

FE161C83

6F7DD2C8

=

C49D846D

1780482С

9086887F

C48C9186

9DCB0644

D1E641E5

A02109AF

9D52C7CF

=

BDB0C9F0

756Е9131

E1F290EA

50E4CBB1

1CAD9536

F4E4B674

99F31E29

70C52AFA

=

62А07ЕА5

EF3C3309

2СЕ1В076

173D48CC

6881ЕВ66

F5C7959F

63FCA1F1

D33C31B8

=

95ВЕА0ВЕ

88D5AA02

FE3C9D45

436CE821

В8287СВ6

2СВС135В

3E339EFE

F6576CA9

ШАГ 3

=

95BEA0BE

88D5AA02

FE3C9D45

436CE821

В8287СВ6

2СВС135В

3E339EFE

F6576СА9

=

00000000

00000000

00000000

00000000

00000000

00000000

00000000

00000190

=

95FEB83E

ВЕ3С2833

A09D7C9E

BE45B6FE

88432CF6

D56CBC57

AAE8136D

02215В39

=

8695FEB8

1ВВЕ3С28

E2A09D7C

48ВE45В6

DA88432C

EBD56CBC

7FABE813

F292215B

=

В9799501

141В413С

1ЕЕ2А062

0СВ74145

6FDA88BC

D0142A6C

FА80АА16

15F2FDB1

=

94В97995

7D141B41

С21ЕЕ2А0

040СВ741

346FDA88

46D0142A

BDFA81AA

DC1562FD

=

D42336E0

2А0А6998

6С65478А

3D08A1B9

9FDDFF20

4808Е863

94FD9D6D

F776A7AD

=

47E26AFD

3Е7278А1

7D473785

06140773

A3D97E7E

А744СВ43

08АА4С24

3352С745

ШАГ 4

=

47E26AFD

3Е7278А1

7D473785

06140773

A3D97E7E

А744СВ43

08АА4С24

3352С745

=

73616820

65676173

73656D20

6061E1CE

DBE2D48F

509A88B1

40CDE7D6

DED5E173

=

340E7848

83223B67

025AAAAB

DDA5F1F2

5B6AF7ED

1575DE87

19E64326

D2BDF236

=

03DC0ED0

F4CD26BC

8B595F13

F5A4A55E

А8В063СВ

ED3D7325

6511662А

7963008D

=

C954EF19

D0779A68

ED37D3FB

7DA5ADDC

4A9D0277

78ЕF765В

С4731191

7ЕВВ21В1

=

6D12BC47

D9363D19

1Е3С696F

28F2DC02

F2137F37

64Е4С18В

69CCFBF8

EF72B7E3

=

790DD7A1

066544ЕА

2829563С

3C39D781

25EF9645

EE2C05DD

A5ECAD92

2511A4D1

=

0852F562

3B89DD57

AEB4781F

E54DF14E

EAFBC135

0613763А

0D770AA6

57ВА1А47

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

=

0852F562

3B89DD57

AEB4781F

E54DF14E

EAFBC135

0613763А

0D770AA6

57ВА1А47

Текст документа сверен по:

М.: Издательство стандартов, 1994