3.1.2.
3.1.3.
3.1.4.
Примечание. В настоящем стандарте понятия "строка бит длиной L" и "двоичный вектор-строка размерности L" считаются тождественными.
3.1.5.
3.1.6.
Примечание. В настоящем стандарте в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины "хэш-функция", "криптографическая хэш-функция", "функция хэширования" и "криптографическая функция хэширования" являются синонимами.
3.1.7.
Примечание. В настоящем стандарте в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины "электронная подпись", "цифровая подпись" и "электронная цифровая подпись" являются синонимами.
3.2. Обозначения
В настоящем стандарте используются следующие обозначения:
Настоящий стандарт определяет две функции хэширования
с длинами хэш-кода n = 512 бит и n = 256 бит.5.1. Инициализационные векторы
Значение инициализационного вектора IV для функции хэширования с длиной хэш-кода 512 бит равно
.5.2. Нелинейное биективное преобразование множества двоичных векторов
Нелинейное биективное преобразование множества двоичных векторов
![]() где
.Значения подстановки
:![]() 5.3. Перестановка байт
Значения перестановки
:![]() 5.4. Линейное преобразование множества двоичных векторов
Линейное преобразование l множества двоичных векторов
, где , i = 0, ..., 15, есть .
Здесь в одной строке записаны четыре строки матрицы A, при этом в строке с номером i, i = 0, ..., 15, записаны строки матрицы A с номерами 4i + j, j = 0, ..., 3, в следующем порядке (слева направо):
4i + 0,4i + 1,4i + 2,4i + 3.
Результат умножения вектора
на матрицу A есть вектор ![]() где
![]() для всех i = 0, ..., 63.
5.5. Итерационные константы
Итерационные константы записаны в шестнадцатеричном виде. Значение константы, записанное в виде
, где , i = 0, ..., 127, есть :![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() При вычислении хэш-кода H(M) сообщения
используются следующие преобразования: , , k, ![]() , ![]() где
, , ![]() где
, , ![]() где
, , i = 0, ..., 7.Значение хэш-кода сообщения
вычисляется с использованием итерационной процедуры. На каждой итерации вычисления хэш-кода используется функция сжатия: , ![]() значение которой вычисляется по формуле
![]() где
.Значения
, i = 1 , ..., 13, вычисляются следующим образом:![]() , i = 2, ..., 13. (10)Для краткости вместо
Исходными данными для процедуры вычисления хэш-кода H(M) является подлежащее хэшированию сообщение
и .Алгоритм вычисления функции H состоит из следующих этапов.
8.1. Этап 1
Присвоить начальные значения текущих величин:
1.1. h := IV,
1.2.
;1.3.
;1.4. Перейти к этапу 2.
8.2. Этап 2
2.1. Проверить условие |M| < 512.
При положительном исходе перейти к этапу 3.
В противном случае выполнить последовательность вычислений по 2.2 - 2.7.
2.2. Вычислить подвектор
сообщения M: M = M'||m. Далее выполнить последовательность вычислений:2.3.
.2.4.
.2.5.
.2.6. M := M'.
8.3. Этап 3
3.1.
.3.2.
.3.3.
.3.4.
.3.5.
.3 6.
![]() 3.7. Конец работы алгоритма
Значение величины h, полученное на шаге 3.6, является значением функции хэширования H(M).
(справочное)
Данное Приложение носит справочный характер и не является частью настоящего стандарта.
Векторы из
, записанный в виде , где , i = 0, ..., n - 1, есть .А.1. Пример 1
Необходимо вычислить хэш-код сообщения
![]() А.1.1. Для функции хэширования с длиной хэш-кода 512 бит
Присваиваются значения:
![]() ![]() ![]() Длина сообщения
, поэтому происходит заполнение неполного блока:m = 01323130393837363534333231303938373635343332313039383
73635343332313039383736353433323130393837363534333
2313039383736353433323130.
Вычисляется значение
.После преобразования S:
![]() после преобразования P:
![]() после преобразования L:
![]() Затем выполняется преобразование E (K, m):
Итерация 1
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Итерация 2
![]() ![]() Итерация 3
![]() ![]() Итерация 4
![]() ![]() Итерация 5
![]() ![]() Итерация 6
![]() ![]() Итерация 7
![]() ![]() Итерация 8
![]() ![]() Итерация 9
![]() ![]() Итерация 10
![]() ![]() Итерация 11
![]() ![]() Итерация 12
![]() ![]() Итерация 13
![]() ![]() Результат выполнения преобразования
:h = fd102cf8812ccb1191ea34af21394f3817a86641445aa9a626488
adb33738ebd2754f6908cbbbac5d3ed0f522c50815c954135793fb1f5
d905fee4736b3bdae2.
Изменяются значения переменных N и
N = 00000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000
000000000000000001f8,
![]() Результат выполнения преобразования
:h = 5c881fd924695cf196c2e4fec20d14b642026f2a0b1716
ebaabb7067d4d597523d2db69d6d3794622147a14f19a66e7f9037e1d
662d34501a8901a5de7771d7c.
Результат выполнения преобразования
:h = 486f64c1917879417fef082b3381a4e211c324f074654c38823
a7b76f830ad00fa1fbae42b1285c0352f227524bc9ab16254288dd6863
dccd5b9f54a1ad0541b.
Хэш-кодом сообщения
![]() А.1.2. Для функции хэширования с длиной хэш-кода 256 бит
Присваиваются значения:
![]() ![]() ![]() Длина сообщения
, поэтому происходит заполнение неполного блока:m: = 013231303938373635343332313039383736353433323130
3938373635343332313039383736353433323130393837363534333
2313039383736353433323130.
Вычисляется значение
.После преобразования S:
![]() после преобразования P:
![]() после преобразования L:
![]() Затем выполняется преобразование E (K, m):
Итерация 1
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Итерация 2
![]() ![]() Итерация 3
![]() ![]() Итерация 4
![]() ![]() Итерация 5
![]() ![]() Итерация 6
![]() ![]() Итерация 7
![]() ![]() Итерация 8
![]() ![]() Итерация 9
![]() ![]() Итерация 10
![]() ![]() Итерация 11
![]() ![]() Итерация 12
![]() ![]() Итерация 13
![]() ![]() Результат выполнения преобразования
:h = e3bbadbf78af3264c9137127608aa510de90ba4d3075665844965
fb611dbb1998d48552a0c0ce6bcba71bc802a4f5b2d2a07b12c22e
25794178570341096fdc7.
Изменяются значения переменных N и
N = 0000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
000000000000000001f8,
![]() Результат выполнения преобразования
:h = 70f22bada4cfe18a6a56ec4b3f328cd40db8e1bf8a9d5f711d5
efab11191279d715aab7648d07eddbf87dc79c80516e6ffcbcf5678
b0ac29ea00fa85c8173cc6.
Результат выполнения преобразования
:h = 00557be5e584fd52a449b16b0251d05d27f94ab76cbaa6da890b59
d8ef1e159d2088e482e2acf564e0e9795a51e4dd261f3f667985a2
fcc40ac8631faca1709a.
Хэш-кодом сообщения
![]() А.2. Пример 2
Пусть необходимо вычислить хэш-код сообщения
![]() А.2.1. Для функции хэширования с длиной хэш-кода 512 бит
Присваиваются значения:
![]() ![]() ![]() Длина сообщения
, поэтому сначала преобразуется часть сообщенияm: = fbeafaebef20fffbf0e1e0f0f520e0ed20e8ece0ebe5f0f2f120
fff0eeec20f120faf2fee5e2202ce8f6f3ede220e8e6eee1e8f0f2d
1202ce8f0f2e5e220e5d1.
Вычисляется значение
.После преобразования S:
![]() после преобразования P:
![]() после преобразования L:
![]() Затем выполняется преобразование E (K, m):
Итерация 1
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Итерация 2
![]() ![]() Итерация 3
![]() ![]() Итерация 4
![]() ![]() Итерация 5
![]() ![]() Итерация 6
![]() ![]() Итерация 7
![]() ![]() Итерация 8
![]() ![]() Итерация 9
![]() ![]() Итерация 10
![]() ![]() Итерация 11
![]() ![]() Итерация 12
![]() ![]() Итерация 13
![]() ![]() Результат выполнения преобразования
:h = cd7f602312faa465e3bb4ccd9795395de2914e938f10f8e127b
7ac459b0c517b98ef779ef7c7a46aa7843b8889731f482e5d221e8
e2cea852e816cdac407c7af.
Изменяются значения переменных N и
N = 000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
00000000000000000200,
![]() Длина оставшейся части сообщения меньше 512, поэтому происходит заполнение неполного блока.
m: = 000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000
1fbe2e5f0eee3c820.
Результат выполнения преобразования
:h = c544ae6efdf14404f089c72d5faf8dc6aca1db5e28577fc
07818095f1df70661e8b84d0706811cf92dffb8f96e61493 dc382795c6ed7a17b64685902cbdc878e.
Изменяются значения переменных N и
N = 00000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000
0000000000000240,
![]() Результат выполнения преобразования
:h = 4deb6649ffa5caf4163d9d3f9967fbbd6eb3da68f916b6a09f41
f2518b81292b703dc5d74e1ace5bcd3458af43bb456e837326088
f2b5df14bf83997a0b1ad8d.
Результат выполнения преобразования
:h = 28fbc9bada033b1460642bdcddb90c3fb3e56c497ccd0f62b8a2
ad4935e85f037613966de4ee00531ae60f3b5a47f8dae06915d5
f2f194996fcabf2622e6881e.
Хэш-кодом сообщения
![]() А.2.2. Для функции хэширования с длиной хэш-кода 256 бит
Присваиваются значения:
![]() ![]() ![]() Длина сообщения
, поэтому сначала преобразуется часть сообщенияm: = fbeafaebef20fffbf0e1e0f0f520e0ed20e8ece0ebe5f0f2f120
fff0eeec20f120faf2fee5e2202ce8f6f3ede220e8e6eee1e8f0f2
d1202ce8f0f2e5e220e5d1.
Вычисляется значение
.После преобразования S:
![]() после преобразования P:
![]() после преобразования L:
![]() Затем выполняется преобразование E (K, m):
Итерация 1
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Итерация 2
![]() ![]() Итерация 3
![]() ![]() Итерация 4
![]() ![]() Итерация 5
![]() ![]() Итерация 6
![]() ![]() Итерация 7
![]() ![]() Итерация 8
![]() ![]() Итерация 9
![]() ![]() Итерация 10
![]() ![]() Итерация 11
![]() ![]() Итерация 12
![]() ![]() Итерация 13
![]() ![]() Результат выполнения преобразования
:h = 203cc15dd55fcaa5b7a3bd98fb2408a67d5b9f33a80bb50540852
b204265a2c1aaca5efe1d8d51b2e1636e34f5becc077d930114
fefaf176b69c15ad8f2b6878.
Изменяются значения переменных N и
N = 0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000
0000000000000000000200,
![]() Длина оставшейся части сообщения меньше 512, поэтому происходит заполнение неполного блока:
m = 000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
0001fbe2e5f0eee3c820.
Результат выполнения преобразования
:h = a69049e7bd076ab775bc2873af26f098c538b17e39a5c027
d532f0a2b3b56426c96b285fa297b9d39ae6afd8b9001d97bb718a65
fcc53c41b4ebf4991a617227.
Изменяются значения переменных N и
N = 0000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
00000000000000000240,
![]() Результат выполнения преобразования
:h = aee3bd55ea6f387bcf28c6dcbdbbfb3ddacc67dcc13dbd8d548
c6bf808111d4b75b8e74d2afae960835ae6a5f03575559c9fd839783
ffcd5cf99bd61566b4818.
Результат выполнения преобразования
:h = 508f7e553c06501d749a66fc28c6cac0b005746d97537fa85d9
e40904efed29dc345e53d7f84875d5068e4eb743f0793d673f09741f
9578471fb2598cb35c230.
Хэш-кодом сообщения
![]() --------------------------------
<*> Оригиналы международных стандартов ИСО/МЭК находятся во ФГУП "Стандартинформ" Федерального агентства по техническому регулированию и метрологии.
(ISO 2382-2:1976) Словарь. Часть 2. Арифметические и
логические операции (Data processing
- Vocabulary - Part 2: Arithmetic
and logic operations)
(ISO/IEC 9796-2:2010) обеспечения безопасности. Схемы
цифровой подписи, обеспечивающие
восстановление сообщений. Часть 2.
Механизмы на основе целочисленной
факторизации (Information technology
- Security techniques - Digital
signatures with appendix - Part 2:
Integer factorization based
mechanisms)
(ISO/IEC 9796-3:2006) обеспечения безопасности. Схемы
цифровой подписи, обеспечивающие
восстановление сообщений. Часть 3.
Механизмы на основе дискретного
логарифма (Information technology -
Security techniques - Digital
signature schemes giving message
recovery - Part 3: Discrete
logarithm based mechanisms)
(ISO/IEC 14888-1:2008) защиты. Цифровые подписи
с приложением. Часть 1. Общие
положения (Information technology -
Security techniques - Digital
signatures with appendix - Part 1:
General)
[5] ИСО/МЭК 14888-2:2008 Информационные технологии. Методы
(ISO/IEC 14888-2:2008) защиты. Цифровые подписи
с приложением. Часть 2. Механизмы,
основанные на разложении
на множители (Information technology
- Security techniques - Digital
signatures with appendix - Part 2:
Integer factorization based
mechanisms)
[6] ИСО/МЭК 14888-3:2006 Информационные технологии. Методы
(ISO/IEC 14888-3:2006) защиты. Цифровые подписи
с приложением. Часть 3. Механизмы
на основе дискретного логарифма
(Information technology - Security
techniques - Digital signatures with
appendix - Part 3: Discrete
logarithm based mechanisms)
1:2010 (ISO/IEC 14888-3:2006/ защиты. Цифровые подписи
Amd 1:2010) с приложением. Часть 3. Механизмы
на основе дискретного логарифма.
Изменение 1. Алгоритм русской
цифровой подписи эллиптической
кривой, алгоритм цифровой подписи
Шнорра, алгоритм цифровой подписи
Шнорра для эллиптической кривой
и полный алгоритм цифровой подписи
Шнорра для эллиптической кривой
(Information technology - Security
techniques - Digital signatures with
appendix - Part 3: Discrete
logarithm based mechanisms.
Amendment 1. Elliptic Curve Russian
Digital Signature Algorithm, Schnorr
Digital Signature Algorithm,
Elliptic Curve Schnorr Digital
Signature Algorithm, and Elliptic
Curve Full Schnorr Digital Signature
Algorithm)
(ISO/IEC 10118-1:2000) защиты информации. Хэш-функции.
Часть 1. Общие положения
(Information technology - Security
techniques - Hash-functions - Part
1: General)
[9] ИСО/МЭК 10118-2:2010 Информационные технологии. Методы
(ISO/IEC 10118-2:2010) защиты информации. Хэш-функции.
Часть 2. Хэш-функции
с использованием алгоритма
шифрования n-битными блоками
(Information technology - Security
techniques - Hash-functions- Part 2:
Hash-functions using an n-bit block
cipher)
[10] ИСО/МЭК 10118-3:2004 Информационные технологии. Методы
(ISO/IEC 10118-3:2004) защиты информации. Хэш-функции.
Часть 3. Выделенные хэш-функции
(Information technology - Security
techniques - Hash-functions - Part
3: Dedicated hash-functions)
(ISO/IEC 10118-4:1998) защиты информации. Хэш-функции.
Часть 4. Хэш-функции с применением
арифметики в остаточных классах
(Information technology - Security
techniques - Hash-functions - Part
4: Hash-functions using modular
arithmetic)
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/gost-r_gosudarstvennyj-standart/40/gost_72052.html
На правах рекламы:
|