В настоящем подразделе определены алгоритмы вычисления кода аутентификации сообщения НМАС на основе хэш-функции Н, определенной в ГОСТ Р 34.11-2012 (раздел 8) с различными длинами выходных значений.
4.1.1 HMAC_GOSTR3411_2012_256
Алгоритм HMAC_GOSTR3411_2012_256 предназначен для вычисления кода аутентификации сообщения НМАС на основе хэш-функции с длиной выхода, равной 256 битам, определенной в ГОСТ Р 34.11-2012 (раздел 8), и имеет следующий идентификатор:
id-tc26-HMAC-gost-3411-12-256, "1.2.643.7.1.1.4.1".
Результатом работы данного алгоритма является значение функции HMAC(K,T), вычисление которой для данных Т произвольной длины на ключе K длины n бит состоит в формировании байтовой строки K* длины 64 байта и выполнении преобразований над K* и данными Т с использованием хэш-функции Н.
Допускаются любые значения длины n из интервала от 256 до 512.
Для формирования ключа K* при n<512 следует положить строку равной байтовому представлению битовой строки K|А, где ; если n=512 положить K* равной байтовому представлению K. Значение HMAC(K,T) определено выражением:
, (1)
где в байтовом представлении
,
.
Данный алгоритм использует H в качестве хэш-функции в конструкции НМАС, описанной в [1]. Указанный способ формирования ipad и opad также приведен в [1]. Длина выхода HMAC равна 32 байтам, длина блока итерационной процедуры функции сжатия для H равна 64 байтам (в обозначениях [1]: L=32, В=64).
4.1.2 HMAC_GOSTR3411_2012_512
Алгоритм HMAC_GOSTR3411_2012_512 предназначен для вычисления кода аутентификации сообщения НМАС на основе хэш-функции H с длиной выхода, равной 512 битам, определенной в ГОСТ Р 34.11-2012 (раздел 8), и имеет следующий идентификатор:
id-tc26-HMAC-gost-3411-12-512, "1.2.643.7.1.1.4.2".
Результатом работы данного алгоритма является значение функции НМАС(K,T), вычисление которой для данных Т произвольной длины на ключе K длины n бит состоит в формировании байтовой строки K* длины 64 байта и выполнении преобразований над K* и данными Т с использованием хэшфункции H.
Допускаются любые значения длины n из интервала от 256 до 512. Рекомендуется использовать значение n, равное 512.
Для формирования ключа K* при n<512 следует положить строку K* равной байтовому представлению битовой строки K|А, где ; если n=512, положить K* равной байтовому представлению K. Значение НМАС (K,Т) определено выражением:
, (2)
где в байтовом представлении
,
.
Данный алгоритм использует Н в качестве хэш-функции в конструкции НМАС, описанной в [1]. Указанный способ формирования ipad и opad приведен также в [1]. Длина выхода НМАС равна 64 байтам, длина блока итерационной процедуры функции сжатия для Н равна 64 байтам (в обозначениях [1]:L=64, В=64).