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



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

ПРЕДИСЛОВИЕ

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

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

2. Принят и введен в действие Постановлением Госстандарта России от 23.05.94 N 154.

3. Введен впервые.

ВВЕДЕНИЕ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<N> - слово длины k, содержащее двоичную запись вычета
k
k
N(mod 2 ) неотрицательного целого числа N.
~
А - неотрицательное целое число, имеющее двоичную запись А
(А принадлежит В*).
{+} - побитовое сложение слов одинаковой длины по модулю 2.
~ ~
{+}' - сложение по правилу А {+}' В = <A + B> , (k = |A| =
k
|B|).
М - последовательность двоичных символов, подлежащая
хэшированию (сообщение в системах ЭЦП), М принадлежит В*.
h - хэш-функция, отображающая последовательность М принадлежит
В* в слово h(M) принадлежит V (2).
256
Е (А) - результат зашифрования слова А на ключе К с
к
использованием алгоритма шифрования по ГОСТ 28147 в режиме простой
замены (К принадлежит V (2), A принадлежит V (2)).
256 64
Н - стартовый вектор хэширования.
e := g - присвоение параметру е значения g.

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

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

h: B* -----------> V (2).
256

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

каппа: V (2) x V (2) -----> V (2);
256 256 256

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

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

Алгоритм вычисления шаговой функции хэширования включает в себя три части, реализующие последовательно:
- генерацию ключей - слов длины 256 битов;
- шифрующее преобразование - зашифрование 64-битных подслов слова Н на ключах K (i = 1, 2, 3, 4) с использованием алгоритма i по ГОСТ 28147 в режиме простой замены;
- перемешивающее преобразование результата шифрования.
5.1. Генерация ключей
Рассмотрим Х = (b , b ,..., b ) принадлежит V (2).
256 255 1 256

Пусть X = x ||x ||x ||x =
4 3 2 1
= эта ||эта ||...||эта =
16 15 1
= кси ||кси ||...||кси ,
32 31 1

где:
___
х = (b ,..., b ) принадлежит V (2), i = 1,4;
i i x 64 (i - 1) x 64 + 1 64
___
эта = (b ,..., b ) принадлежит V (2), j = 1,6;
j j x 16 (j - 1) x 16 + 1 16
____
кси = (b ,..., b ) принадлежит V (2), k = 1,32.
k k x 8 (k - 1) x 8 + 1 8

Обозначают A(X) = (x {+} x )||x ||x ||x .
1 2 4 3 2
Используют преобразование P: V (2) ----> V (2),
256 256
слова кси ||...||кси в слово кси ||...||кси ,
32 1 фи(32) фи(1)

где:
фи(i + 1 + 4(k - 1)) = 8i + k, i = от 0 до 3, k = от 1 до 8.
Для генерации ключей необходимо использовать следующие
исходные данные:
- слова Н, M принадлежат V (2);
256
- параметры: слова С (i = 2, 3, 4), имеющие значения:
i
256 8 8 16 24 16 8 8 8 2 8 8 8 8 4 8 8 4
С = С = 0 и С = 1 0 1 0 1 0 (0 1 ) 1 0 (0 1 ) (1 0 ) .
2 4 3
При вычислении ключей реализуется следующий алгоритм:
1. Присвоить значения
i := 1, U := H, V := M.
2. Выполнить вычисление
___
W = U {+} V, K = P(W).
i
3. Присвоить i := i + 1.
4. Проверить условие i = 5.
При положительном исходе перейти к шагу 7. При отрицательном - перейти к шагу 5.
5. Выполнить вычисление:

___ ___
U := A(U) {+} C , V := A(A(V)), W := U {+} V, K = P(W).
i i

6. Перейти к шагу 3.
7. Конец работы алгоритма.
5.2. Шифрующее преобразование
На данном этапе осуществляется зашифрование 64-битных подслов слова Н на ключах K (i = 1, 2, 3, 4). i
Для шифрующего преобразования необходимо использовать следующие исходные данные:
___
H = h ||h ||h ||h , - h принадлежит V (2), i = 1,4
4 3 2 1 i 64

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

s = E (h ),
i к i
i

где i = 1, 2, 3, 4.
В результате данного этапа образуется последовательность:

S = s ||s ||s ||s .
4 3 2 1

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