НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
ФУНКЦИЯ ХЭШИРОВАНИЯ
Information technology. Cryptographic data security. Hash-function
ГОСТ Р 34.11-2012
Дата введения
1 января 2013 года
Предисловие
Цели и принципы стандартизации в Российской Федерации установлены Федеральным законом от 27 декабря 2002 г. N 184-ФЗ "О техническом регулировании", а правила применения национальных стандартов Российской Федерации - ГОСТ Р 1.0-2004 "Стандартизация в Российской Федерации. Основные положения".
Сведения о стандарте
1. Разработан Центром защиты информации и специальной связи ФСБ России с участием Открытого акционерного общества "Информационные технологии и коммуникационные системы" (ОАО "ИнфоТеКС").
2. Внесен Техническим комитетом по стандартизации ТК 26 "Криптографическая защита информации".
3. Утвержден и введен в действие Приказом Федерального агентства по техническому регулированию и метрологии от 7 августа 2012 г. N 216-ст.
Информация об изменениях к настоящему стандарту публикуется в ежегодно издаваемом информационном указателе "Национальные стандарты", а текст изменений и поправок - в ежемесячно издаваемых информационных указателях "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячно издаваемом информационном указателе "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет.
Введение
Настоящий стандарт содержит описание алгоритма и процедуры вычисления хэш-функции для любой последовательности двоичных символов, которые применяются в криптографических методах защиты информации, в том числе в процессах формирования и проверки электронной цифровой подписи.
Стандарт разработан взамен ГОСТ Р 34.11-94. Необходимость разработки настоящего стандарта вызвана потребностью в создании хэш-функции, соответствующей современным требованиям к криптографической стойкости и требованиям стандарта ГОСТ Р 34.10-2012 к электронной цифровой подписи.
Настоящий стандарт терминологически и концептуально увязан с международными стандартами ИСО 2382-2 [1], ИСО/МЭК 9796 [2 - 3], серии ИСО/МЭК 14888 [4 - 7] и серии ИСО/МЭК 10118 [8 - 11].
Примечание. Основная часть стандарта дополнена одним приложением:
Приложение А (справочное). Контрольные примеры.
1. ОБЛАСТЬ ПРИМЕНЕНИЯ
Настоящий стандарт определяет алгоритм и процедуру вычисления хэш-функции для любой последовательности двоичных символов, которые применяются в криптографических методах обработки и защиты информации, в том числе для реализации процедур обеспечения целостности, аутентичности, электронной цифровой подписи (ЭЦП) при передаче, обработке и хранении информации в автоматизированных системах.
Определенная в настоящем стандарте функция хэширования используется при реализации систем электронной цифровой подписи на базе асимметричного криптографического алгоритма по ГОСТ Р 34.10-2012.
Стандарт рекомендуется использовать при создании, эксплуатации и модернизации систем обработки информации различного назначения.
2. НОРМАТИВНЫЕ ССЫЛКИ
В настоящем стандарте использованы нормативные ссылки на следующие стандарты:
ГОСТ Р 34.10-2012 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
Примечание. При пользовании настоящим стандартом целесообразно проверить действие ссылочных стандартов в информационной системе общего пользования - на официальном сайте Федерального агентства Российской Федерации по техническому регулированию и метрологии в сети Интернет или по ежегодно издаваемому информационному указателю "Национальные стандарты", который опубликован по состоянию на 1 января текущего года, и по соответствующим ежемесячно издаваемым информационным указателям, опубликованным в текущем году. Если ссылочный стандарт заменен (изменен), то при пользовании настоящим стандартом следует руководствоваться заменяющим (измененным) стандартом. Если ссылочный стандарт отменен без замены, то положение, в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.
3. ТЕРМИНЫ, ОПРЕДЕЛЕНИЯ И ОБОЗНАЧЕНИЯ
В настоящем стандарте применены следующие термины с соответствующими определениями.
3.1. Термины и определения
Примечание. В настоящем стандарте понятия "строка бит длиной L" и "двоичный вектор-строка размерности L" считаются тождественными.
Примечание. В настоящем стандарте в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины "хэш-функция", "криптографическая хэш-функция", "функция хэширования" и "криптографическая функция хэширования" являются синонимами.
Примечание. В настоящем стандарте в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины "электронная подпись", "цифровая подпись" и "электронная цифровая подпись" являются синонимами.
3.2. Обозначения
В настоящем стандарте используются следующие обозначения:
4. ОБЩИЕ ПОЛОЖЕНИЯ
Настоящий стандарт определяет две функции хэширования с длинами хэш-кода n = 512 бит и n = 256 бит.
5. ЗНАЧЕНИЯ ПАРАМЕТРОВ
5.1. Инициализационные векторы
Значение инициализационного вектора IV для функции хэширования с длиной хэш-кода 512 бит равно . Значение инициализационного вектора IV для функции хэширования с длиной хэш-кода 256 бит равно
.
5.2. Нелинейное биективное преобразование множества двоичных векторов
Нелинейное биективное преобразование множества двоичных векторов задается подстановкой
Значения подстановки записаны ниже в виде массива
:
5.3. Перестановка байт
Значения перестановки , заданной на множестве
, записаны ниже в виде массива
:
5.4. Линейное преобразование множества двоичных векторов
Линейное преобразование l множества двоичных векторов задается умножением справа на матрицу A над полем GF(2), строки которой записаны ниже последовательно в шестнадцатеричном виде. Строка матрицы с номером j, j = 0, ..., 63, записанная в виде
, где
, i = 0, ..., 15, есть
.
Здесь в одной строке записаны четыре строки матрицы A, при этом в строке с номером i, i = 0, ..., 15, записаны строки матрицы A с номерами 4i + j, j = 0, ..., 3, в следующем порядке (слева направо):
Результат умножения вектора на матрицу A есть вектор
:
5.5. Итерационные константы
Итерационные константы записаны в шестнадцатеричном виде. Значение константы, записанное в виде , где
, i = 0, ..., 127, есть
:
6. ПРЕОБРАЗОВАНИЯ
При вычислении хэш-кода H(M) сообщения используются следующие преобразования:
7. ФУНКЦИЯ СЖАТИЯ
Значение хэш-кода сообщения вычисляется с использованием итерационной процедуры. На каждой итерации вычисления хэш-кода используется функция сжатия:
значение которой вычисляется по формуле
Значения , i = 1 , ..., 13, вычисляются следующим образом:
Для краткости вместо будем использовать обозначение
.
8. ПРОЦЕДУРА ВЫЧИСЛЕНИЯ ХЭШ-ФУНКЦИИ
Исходными данными для процедуры вычисления хэш-кода H(M) является подлежащее хэшированию сообщение и
.
Алгоритм вычисления функции H состоит из следующих этапов.
8.1. Этап 1
Присвоить начальные значения текущих величин:
8.2. Этап 2
2.1. Проверить условие |M| < 512.
При положительном исходе перейти к этапу 3.
В противном случае выполнить последовательность вычислений по 2.2 - 2.7.
2.2. Вычислить подвектор сообщения M: M = M'||m. Далее выполнить последовательность вычислений:
8.3. Этап 3
Значение величины h, полученное на шаге 3.6, является значением функции хэширования H(M).
КОНТРОЛЬНЫЕ ПРИМЕРЫ
Данное Приложение носит справочный характер и не является частью настоящего стандарта.
Векторы из записываются в шестнадцатеричном виде. Вектор
, записанный в виде
, где
, i = 0, ..., n - 1, есть
.
А.1. Пример 1
Необходимо вычислить хэш-код сообщения
А.1.1. Для функции хэширования с длиной хэш-кода 512 бит
Длина сообщения , поэтому происходит заполнение неполного блока:
Затем выполняется преобразование E (K, m):
Результат выполнения преобразования :
Изменяются значения переменных N и :
Результат выполнения преобразования :
Результат выполнения преобразования :
Хэш-кодом сообщения является значение
А.1.2. Для функции хэширования с длиной хэш-кода 256 бит
Длина сообщения , поэтому происходит заполнение неполного блока:
Затем выполняется преобразование E (K, m):
Результат выполнения преобразования :
Изменяются значения переменных N и :
Результат выполнения преобразования :
Результат выполнения преобразования :
Хэш-кодом сообщения является значение:
А.2. Пример 2
Пусть необходимо вычислить хэш-код сообщения
А.2.1. Для функции хэширования с длиной хэш-кода 512 бит
Длина сообщения , поэтому сначала преобразуется часть сообщения
Затем выполняется преобразование E (K, m):
Результат выполнения преобразования :
Изменяются значения переменных N и :
Длина оставшейся части сообщения меньше 512, поэтому происходит заполнение неполного блока.
Результат выполнения преобразования :
Изменяются значения переменных N и :
Результат выполнения преобразования :
Результат выполнения преобразования :
Хэш-кодом сообщения является значение:
А.2.2. Для функции хэширования с длиной хэш-кода 256 бит
Длина сообщения , поэтому сначала преобразуется часть сообщения
Затем выполняется преобразование E (K, m):
Результат выполнения преобразования :
Изменяются значения переменных N и :
Длина оставшейся части сообщения меньше 512, поэтому происходит заполнение неполного блока:
Результат выполнения преобразования :
Изменяются значения переменных N и :
Результат выполнения преобразования :
Результат выполнения преобразования :
Хэш-кодом сообщения является значение:
БИБЛИОГРАФИЯ <*>
<*> Оригиналы международных стандартов ИСО/МЭК находятся во ФГУП "Стандартинформ" Федерального агентства по техническому регулированию и метрологии.