Общие сведения

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

Область применения

Указанный стандарт определяет
алгоритм и процедуру вычисления хэш-функции для
любой последовательности двоичных символов,
которые применяются в криптографических методах
обработки и защиты информации, в том числе для
реализации процедур электронной подписи (ЭЦП)
при передаче, обработке и хранении информации в
автоматизированных системах.
Определенная в стандарте функция хэширования
используется при реализации систем электронной
цифровой подписи на базе ассиметричного
криптографического алгоритма по ГОСТ Р 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.

 

Оставит комментарий