Консалтинг в области информационной безопасности



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

На данном этапе осуществляется перемешивание полученной последовательности с применением регистра сдвига.
Исходными данными являются:
слова Н, М принадлежат V (2) и слово S принадлежит V (2).
256 256
Пусть отображение:

фи: V (2) ----> V (2)
256 256

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

____
эта ||...||эта , эта принадлежит V (2), i = 1,16
16 1 1 16

в слово:

___ ___ ___ ___ ___
эта {+} эта {+} эта {+} эта {+} эта {+} эта ||эта ||...||эта .
1 2 3 4 13 16 16 2

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

61 ___ ___ 12
каппа(М, Н) = фи (Н {+} фи(М {+} фи (S))),

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

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

Исходными данными для процедуры вычисления значения функции h
является подлежащая хэшированию последовательность М принадлежит
В*. Параметром является стартовый вектор хэширования Н -
произвольное фиксированное слово из V (2).
256
Процедура вычисления функции h на каждой итерации использует
следующие величины:
М принадлежит В* - часть последовательности М, не прошедшая
процедуры хэширования на предыдущих итерациях;
H принадлежит V (2) - текущее значение хэш-функции;
256
СИГМА принадлежит V (2) - текущее значение контрольной
256
суммы;
L принадлежит V (2) - текущее значение длины обработанной на
256
предыдущих итерациях части последовательности М.
Алгоритм вычисления функции h включает в себя этапы:

Этап 1
Присвоить начальные значения текущих величин:
1.1. М := М
1.2. Н := Н
256
1.3. СИГМА := 0
256
1.4. L := 0
1.5. Переход к этапу 2.

Этап 2
2.1. Проверить условие |М| > 256.
При положительном исходе перейти к этапу 3.
В противном случае выполнить последовательность вычислений:
~
2.2. L := <L + |M|>

256 - |М| 256
2.3. М' := 0 ||М
2.4. СИГМА := СИГМА {+}' М'
2.5. Н := каппа(М', Н)
2.6. Н := каппа(L, H)
2.7. Н := каппа(СИГМА, H)
2.8. Конец работы алгоритма.

Этап 3
3.1. Вычислить подслово М принадлежит V (2) слова М (М =
s 256
М ||М ). Далее выполнить последовательность вычислений:
p s
3.2. H := каппа(М , Н)
s
3.3. L := <L + 256>
256
___
3.4. СИГМА := СИГМА {+}' М
s
3.5. М := М
p
3.6. Перейти к этапу 2.
Значение величины Н, полученное на шаге 2.7, является
значением функции хэширования h(M).
Проверочные примеры для вышеизложенной процедуры вычисления
хэш-функции приведены в Приложении А.

Приложение А (справочное)

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

Заполнение узлов замены пи , пи ,..., пи и значение
1 2 8
стартового вектора хэширования Н, указанные в данном Приложении,
рекомендуется использовать только в проверочных примерах для
настоящего стандарта.
А.1. Использование алгоритма ГОСТ 28147
В качестве шифрующего преобразования в приводимых ниже
примерах используется алгоритм ГОСТ 28147 в режиме простой замены.
При этом заполнение узлов замены пи , пи ,..., пи блока
1 2 8
подстановки пи следующее:

¦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 C 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

___
В столбце с номером j, j = 1,8, в строке с номером i, i =
____
0,15, приведено значение пи (i) в шестнадцатеричной системе
j
счисления.
А.2. Представление векторов
Последовательности двоичных символов будем записывать как
строки шестнадцатеричных цифр, в которых каждая цифра
соответствует четырем знакам ее двоичного представления.
А.3. Примеры вычисления значения хэш-функции
В качестве стартового вектора хэширования принимают, например,
нулевой вектор:
Н = 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000.
А.3.1. Пусть необходимо выполнить хэширование сообщения:
М = 73657479 62203233 3D687467 6E656C20
2C656761 7373656D 20736920 73696854.
Выполняют присвоение начальных значений:
текста
М = 73657479 62203233 3D687467 6E656C20
2С656761 7373656D 20736920 73696854
хэш-функции
Н = 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
суммы блоков текста
СИГМА = 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
длины текста
L = 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000.
Так как длина сообщения, подлежащего хэшированию, равна 256
битам (32 байтам),
L = 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000

М' = М = 73657479 62203233 3D687467 6E656C20
2C656761 7373656D 20736920 73696854,
то нет необходимости дописывать текущий блок нулями,
СИГМА = М' = 73657479 62203233 3D687467 6E656C20
2C656761 7373556D 20736920 73696854.
Переходят к вычислению значения шаговой функции хэширования
каппа(М, Н).
Вырабатывают ключи:

K = 733D2C20 65686573 74746769 79676120
1 626E7373 20657369 326C6568 33206D54

K = 110C733D 0D166568 130E7474 06417967
2 1D00626E 161A2065 090D326C 4D393320

K = 80B111F3 730DF216 850013F1 C7E1F941
3 620C1DFF 3ABAE91A 3FA109F2 F513B239

K = A0E2804E FF1B73F2 ECE27A00 E7B8C7E1
4 EE1D620C AC0CC5BA A804C05E A18B0AEC.

Осуществляют зашифрование 64-битных подслов блока Н с помощью
алгоритма по ГОСТ 28147.
Блок h = 00000000 00000000 зашифровывают на ключе K и
1 1
получают s = 42ABBCCE 32BC0B1B.
1