Функция «Стрибог» (ГОСТ Р 34. 11-2012)
В течение 2010;2011 годов был разработан новый алгоритм бесключевого хэширования, получивший название «Стрибог» в честь языческого божества восточных славян, бога стремительного ветра, разносящего и распределяющего блага между людьми. В 2012 году данный алгоритм был принят в качестве нового стандарта Российской Федерации ГОСТ Р 34.11−2012. Основные отличия нового алгоритма от предыдущего… Читать ещё >
Функция «Стрибог» (ГОСТ Р 34. 11-2012) (реферат, курсовая, диплом, контрольная)
В течение 2010;2011 годов был разработан новый алгоритм бесключевого хэширования, получивший название «Стрибог» в честь языческого божества восточных славян, бога стремительного ветра, разносящего и распределяющего блага между людьми. В 2012 году данный алгоритм был принят в качестве нового стандарта Российской Федерации ГОСТ Р 34.11−2012. Основные отличия нового алгоритма от предыдущего заключаются в следующем.
- 1. Функция позволяет вычислять код целостности длины либо п = 512 бит, либо п = 256, используя при этом единый алгоритм.
- 2. Размер обрабатываемого блока входного сообщения увеличен вдвое, то есть b — 512.
- 3. В основе одношаговой функции сжатия лежит блочный шифр с длиной блока 512 бит, построенный на основе SPсети, см. раздел 7.5.
- 4. Начальное значение ho зафиксированно и принимает различные значения для кодов целостности длины 256 или 512 бит.
Вместе с тем функция «Стрибог» имеет общие черты с предыдущим алгоритмом хэширования, а именно:
- 1. в одношаговой функции сжатия / используется процедура развертки ключей; ключи, как и раньше, зависят от значений блоков входного сообщения;
- 2. завершающее преобразование д использует длину хэшируемого сообщения, а также контрольную сумму по модулю 2°12 значений блоков входного сообщения.
Опишем функцию «Стрибог» более подробно. Для этого рассмотрим перестановку т Е 12 следующим образом:
и задаваемую вектором
Рассмотрим подстановку 7г: F§ F®, задающую нелинейное биективное отображение множества F в себя и определяемую равенством
Также определим линейное отображение I: F®4 —> F|4, представляющее собой умножение вектора у Е F^4 на двоичную матрицу В = (,btj) € GLM(2):
Ниже мы приводим точное значение матрицы В, взятое нами из текста стандарта ГОСТР Р 34.11−2012. В каждой строке записано 4 строки матрицы В, при этом в строке с номером г, г = 0, 15, записаны строки матрицы В с номерами 4 г + j, j — 0,…, 3 в следующем порядке (слева направо): 4 г, 4 г + 1, 4 г + 2, 4 г + 3.
Введенные нами перестановка т, подстановка 7 г и линейное преобразование I используются в алгоритме «Стрибог» для определения следующих преобразований над векторами длины 512 бит:
где XI,…, ж64 е Fl, уъ? ? •, у& е Ff4.
Кроме того, мы определим величины s, aj € Z2si2, j — l,…, г, представляющие собой различные контрольные суммы входного сообщения, а = «111… ||аг:
Теперь мы можем определить одношаговую функцию сжатия, представляющую собой вариант функции Миягучи-Принеля, примененный к некоторому блочному шифру Е (к, а):
где величина <�т, определена равенством (8.6).
Для описания блочного шифра, используемого внутри функции /, нам надо определить алгоритм развертки ключа к и алгоритм зашифрования Е (к, а).
Алгоритм развертки ключа к заключается в определении значений fci,…,&1з € F212 в соответствии со следующими равенствами:
где С2,…, схз € F212 — фиксированные константы, значения которых могут быть найдены в тексте стандарта ГОСТ Р 34.11−2012.
Алгоритм зашифрования Е (к, а) состоит из двенадцати одинаковых раундов R (k, а): F25i2 х F212 —> F212 и завершающего преобразования W (k, a) : F25i2 х F212 —> F212, определяемых равенствами
Легко видеть, что раупдовое преобразование R используется и в алгоритме развертки ключа. Суммируя, мы можем записать алгоритм зашифрования в виде
Для полного описания бесключевой функции хэширования «Стрибог», определим завершающее преобразование д:
где s и аг определены равенствами (8.5) и (8.6) соответственно, а вектор а* определен равенством
Таким образом, бесключевая функция хэширования «Стрибог» определяется равенством (8.2), в котором одношаговая функция / удовлетворяет равенству (8.7), а завершающее преобразование д удовлетворяет равенству (8.8).
Описанная нами функция позволяет вырабатывать код целостности длиной 512 бит. Для того чтобы выработать код целостности длины 256 бит, необходимо выработать код длины 512 бит, а потом взять его старшие 256 разрядов, то есть
где hi G F2, г = 1,…, 512.