Общие сведения
Указанный стандарт определяет
процедуру вычисления хэш-функции для любой
последовательности двоичных данных.
Функция хэширования заключается в сопоставлении
произвольному набору данных в виде
последовательности двоичных символов его образа
фиксированной небольшой длины, что позволяет
использовать эту функцию в процедурах
электронной подписи для сокращения времени
формирования и проверки подписи. Эффект
сокращения времени достигается за счет
вычисления подписи только под образом
подписываемого набора данных.
Область применения
Указанный стандарт определяет
алгоритм и процедуру вычисления хэш-функции для
любой последовательности двоичных символов,
которые применяются в криптографических методах
обработки и защиты информации, в том числе для
реализации процедур электронной подписи (ЭЦП)
при передаче, обработке и хранении информации в
автоматизированных системах.
Определенная в стандарте функция хэширования
используется при реализации систем электронной
цифровой подписи на базе ассиметричного
криптографического алгоритма по ГОСТ Р 34.10-94
Информационная технология. Криптографическая
защита информации. Процедуры выработки и
проверки электронной цифровой подписи на базе
ассиметричного криптографического алгоритма.
Обозначения
В настоящем документе
используются следующие обозначения:
B*
Множество всех конечных слов в
алфавите B={0,1}. Чтение слов и нумерация знаков
алфавита (символов) осуществляется справа налево
(номер правого символа в слове равен единице,
второго справа — двум и т.д.).
/A|
Длина слова A <- B*.
Vk (2)
Множество всех бинарных слов длины
k.
A||B
Конкатенация слов A, B <- B* — слово
длины |A|+|B|, в котором левые |A| символов образуют
слово A, а правые |B| символов образуют слово B.
Можно также использовать обозначение A||B = AB.
Ak
Конкатенация k экземпляров слова
A(A<- B*).
<N>k
Слово длины k, содержащее двоичную
запись вычета N(mоd2k) неотрицательного
целого числа N.
A`
Неотрицательное целое число,
имеющее двоичную запись A (A<- b*).
&
Побитовое сложение слов одинаковой
длины по модулю 2.
&
Сложение по правилу A&B = <A`+B`>,
(k=|A|+|B|)/
M
Последовательность двоичных
символов, подлежащая хэшированию (сообщение в
системе ЭЦП), M <- B*.
h
Хэш-функция, отображающая
последовательность M <- B* в слово h(M) <- V256(2).
Ek(A)
Результат зашифрования слова A на
ключе K с использованием алгоритма шифрования по
ГОСТ 28147 в режиме простой замены (K <- V256(2), A <-V64(2)).
H
Стартовый вектор хэширования.
e := g
Присвоение параметру e значения g.
<-
Обозначение принадлежности
диапазону.
Общие положения
Под хэш-функцией h понимается
зависящее от параметра [стартового вектора
хэширования H, являющегося словом из V256(2)]
отображение:
h : B* ——> V256(2)
Для определения
хэш-функции необходимы:
- алгоритм вычисления шаговой функции
хэширования c т.е. отображения:
c : V256(2)
x V256(2) ——> V256(2)
- описание итеративной процедуры
вычисления значения хэш-функции h.
Шаговая функция хэширования
Алгоритм вычисления шаговой
функции хэширования включает в себя три части,
реализующие последовательно:
- генерацию ключей — слов длины 256 битов с
использованием исходных данных слов H, M <- V256(2);
- шифрующее преобразование — зашифрование
64-битовых подслов слова H на ключах Ki (I=1, 2, 3, 4) с
использованием алгоритма по ГОСТ 28147 в режиме простой замены с исходными
данными:
H=h4||h3||h2||h1,
h1<-V64(2), i=1,4 и набор ключей K1,K2,K3,K4
- в результате данного этапа
образуется последовательность:
S=s4||s3||s2||s1,
- перемешивающее преобразование
результата шифрования с исходными данными в
виде:
слово H, M<-
V256(2) и слово S <- V256(2),
Процедура вычисления хэш-функции
Исходными данными для
процедуры вычисления значения функции h является
подлежащая хэшированию последовательность M <-
B*. Параметром является стартовый вектор
хэширования H — произвольное фиксированное слово
из V256(2).
Процедура вычисления функции h на каждой
итерации использует следующие величины:
M <- B* — часть последовательности M, не прошедшая
процедуру хэширования на предыдущих итерациях;
H <- V256(2) — текущее
значение хэш-функции;
S <- V256(2) -текущее
значение контрольной суммы;
L <- V256(2) — текущее
значение длины обработанной на предыдущих
итерациях части последовательности M.