ГОСТ Р 34.11-94

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 08:57, 12 мая 2016.

Описание

- старший вектор хэширования, открытый (необходим для разделения хэшей по системам и др.).

Функция, отображающая любую двоичную последовательность в вектор длины 256 бит.

  • А. Пошаговая функция хэширования.
  • В. Итеративная процедура вычисления значения h ("хэш-кода", "message digest")
где: - "куски" хэшируемого текста,
- результат с предыдущего такта.

Этап В

- часть (текста), не обработанная раньше. - текущее значение хэш-функции.

- текущее значение контрольной суммы.


- текущее значение длины обработанного текста.

Этап 1. Присвоение начальных значений

где стартовый вектор.

Этап 2

  • 2.1 Проверка условия
Если выполняется Этап 3, если нет п.2.2.
Самое сложное - хэшировать короткие тексты (их легко перебрать, поэтому их следует тщательно перемешивать, т.е усложнять то, что меньше 256 бит).
  • 2.2 [1] - двоичный вектор, соответствующий числу, равному определенной сумме; длина необработанного текста (т.е. некоторое число); число, двоичное представление которого равно
  • 2.3
- операция конкатенации.
  • 2.4 где - сложение по правилу: (преобразовать в числа, сложить и взять двоичное представление).
  • 2.5
  • 2.6
  • 2.7
В результате пп.2.5-2.7 "замешиваем" 3 раза (если текст короткий).
  • 2.8 Конец работы.

Этап 3

  • 3.1 Вычислить

где - префикс
- суффикс

Хэш-функция "сворачивает" значение справа налево (в американских стандартах - наоборот).

  • 3.2
  • 3.3
  • 3.4
  • 3.5
  • 3.6 Перейти к этапу 2.
L5P9-1 new.PNG

Этап А

Этап 1. Генерация ключей: 256 бит

2 преобразования: фактически, преобразование регистра сдвига (линейное)

L5P10 new.PNG


, то есть перестановка по правилу:

линейная перестановка, которую можно описать матрицей.

Алгоритм генерации ключей:

  1. Проверить условие: Да п.7 ; Нет п.5
  2. п.3
  3. Конец

Таким образом, должны получить 4 ключа:

L5P11 new.PNG

Этап 2. Зашифрование по ГОСТ

Шифруем:

по 64 бита.

Этап 3. Перемешивающее преобразование (линейное преобразование)

Иными словами, преобразование линейного регистра сдвига.

[2]

Т.о., в основном, используются линейные преобразования, вся нелинейность содержится в ГОСТ (в режиме простой замены).

Атака на ГОСТ Р 34.11-94

ГОСТ был взломан (broken) с трудоемкостью нахождения коллизий:

TemplateExampleIcon.svg Пример Замечание
Если трудоемкость атаки (т.е. трудоемкость нахождения коллизий) меньше квадратного корня из значения хэш-функции, то алгоритм считается взломанным (broken).


Трудоемкость нахождения второго прообраза:

TemplateExampleIcon.svg Пример Замечание
Если трудоемкость нахождения второго прообраза меньше всевозможных значений хэш-функции, то алгоритм считается взломанным (broken).


Вообще говоря, (в практическом плане) "запредельная" трудоемкость.

Примечание

  1. - преобразование в двоичный вид, - преобразование из двоичного вида в число.
  2. Почему взяты такие значения "61", "12", да и вообще такой вид многочлена обратной связи, именно такой способ получения ключей - неясно.