Государственный стандарт российской федерации

Вид материалаДокументы

Содержание


Государственный стандарт российской федерации
1 Область применения
2 Нормативные ссылки
Приложение а
Подобный материал:
ВВЕДЕНИЕ

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

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

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

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

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

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


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

КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ Функция хэширования

Information technology. Cryptographic Data Security. Hashing function

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

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


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

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

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


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

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

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


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

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

В*—множество всех конечных слов в алфавите В={0,1}. Чте­ние слов и нумерация знаков алфавита (символов) осуществляют­ся справа налево (номер правого символа в слове равен единице, 'второго справа — двум и т. д.).


эрого справа — двум и т. , ]А|—длина слова А 6 В*.
V'k(2) — множество всех бинарных слов длины k. Aji В — конкатенация слов А, В6В*—слово длины |А[+|В|, в котором левые |А| символов образуют слово А, а правые |В| сим­волов образуют слово В. Можно также использовать обозначение А||В=АВ.

A k—конкатенация k экземпляров слова А (А(: В*). N>i;—слово длины k, содержащее двоичную запись вычета N(mod-2") неотрицательного целого числа N.

А — неотрицательное целое число, имеющее двоичную запись А (А (-Б*).

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

€> '—сложение по правилу А ®'В = k, (k=|A[=|B|).

М — последовательность- двоичных символов, подлежащая хэ­шированию 'сообщение в системах ЭЦП), М 6 В*.

h.—хэш-функция, отображающая последовательность Мб В* в слово h(M)?V25e(2).

Ек(А) —результат зашифрования слова А на ключе К с ис­пользованием алгоритма шифрования по ГОСТ 28147 в режиме простой замены (К СУ25б(2), А(-Ve4(2)).

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

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

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

Под хэш-функцней h понимается зависящее от параметра (стартового вектора хэширования Н, являющегося слово'м из У25б(2)] отображение

i': B----V(2).

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

— алгоритм (исчисления 'шаговой функции хэширования х, т. е. отображения;..'"''

1- '';' »: V(2) xV(2)-"--\W2); •

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


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

Алгоритм вычисления шаговой фикции хэширования включает

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

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

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

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

5.1 Генерация ключей, РассмотримХ=(Ьгвб, bass, .... bi)eV25e(2). Пусть Х==Х4||Хз||х2||х,=

(вИ-и...!!'') . -IMl.-.lISi, " • • __

x,=(bix64 ,..., b(i-ux64+i)eV(>t(2), i= 1,4;

'(b/xie,..., b(j-i)xi6+i)<'Vie(2), 1=1,16;

где

Sk=(bkx8,..., b(k-i)x8±i)eVg(2), k==f,32.. . . Обозначают A(X)=(Xl®X2)l,|x4|]xз||x2.

-.Используют преобразование Р: У25с(2)-——-»-У25б(2)

•слова 11. •• IKi в слово (32)'l. ..11 »i),

тде (p(i+l+4(k-l))=8i+k, 1=0-3, k=l—8.

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

исходные данные:

— слова Н, МеУа5б(2);

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

CCiO25» и CgW'WMO8!8)8)4. При вычислении ключей реализуется следующий алгоритм:

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

i:==l, U:=H, V:=M. .

2 Выполнить вычисление W==UV, K,--=P(W).

3 Присвоить i:-=i+l.

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

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

иом — перейти к шагу 5. • . .5 Выполнить вычисление _

U:=A(U)Ci, V:==A(A(V)), W:==Ui®V, Ki=P(W).

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

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

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

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

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

Н=-МЬзМЬ,, h,(EV,;4(2), i==L4

и набор ключей Кь К2, Кз, К4. Реализуют алгоритм зашифрования и получают слова

s,--EK,(hi), где 1=1, 2, 3, 4. В результате данного этапа образуется последовательность.

S- с. "о 11с- 1|о

==S4iiS|Sai|S). 5.3 Перемешивающее преобразование

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

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

. слова Н, M(?V25e(2) и слово S 6 Vase (2).

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

ф:У2(2)----Уйб(2) преобразует слово

"iJ-.. hi, ev,„(2). i=i~i6'

в слово

ФзФзФФзФМ- • -ha.

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

х(М, '"(НМФЗ))), где i|)' — i-я степень преобразования ij).

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:=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:=2ee

3.4 EE'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