Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.ХФ.doc
Скачиваний:
19
Добавлен:
02.12.2018
Размер:
1.62 Mб
Скачать
    1. Краткое описание алгоритма гост 28147-89

Алгоритм шифрует данные 64-битными блоками с использованием 256-битного ключа шифрования. Выполняется 32 раунда преобразований, в каждом из которых предусмотрены следующие операции (см. рис. 1):

Рис 1. Раунд алгоритма ГОСТ 28147-89.

1. Один из 32-битных субблоков данных складывается с 32-битным значением ключа раунда Ki по модулю 232.

2. Результат предыдущей операции разбивается на 8 фрагментов по 4 бита, которые параллельно «прогоняются» через 8 таблиц замен S1…S8. Таблицы замен в стандарте не определены.

3. 4-битные фрагменты (после замен) объединяются обратно в 32-битный субблок, значение которого циклически сдвигается влево на 11 бит.

4. Обработанный предыдущими операциями субблок накладывается на необработанный с помощью побитовой логической операции «исключающее или» (XOR).

5. Субблоки меняются местами.

Процедура расширения ключа в алгоритме ГОСТ 28147-89, фактически, отсутствует: в раундах шифрования последовательно используются 32-битные фрагменты K1…K8 исходного 256-битного ключа шифрования в следующем порядке: K1, K2, K3, K4, K5, K6, K7, K8, – за исключением последних 8 раундов – в раундах с 25-го по 31-й фрагменты используются в обратном порядке.

    1. Хэш-функция ГОСТ 34.11

Хэш-функция ГОСТ 34.11

Алгоритм ГОСТ 34.11 является отечественным стандартом для хэш-функций. Его структура довольно сильно отличается от структуры алгоритмов SHA-1,2 или MD5, в основе которых лежит алгоритм MD4.

Длина хэш-кода, создаваемого алгоритмом ГОСТ 34.11, равна 256 битам. Алгоритм разбивает сообщение на блоки, длина которых также равна 256 битам. Кроме того, параметром алгоритма является стартовый вектор хэширования Н - произвольное фиксированное значение длиной также 256 бит.

Основой описываемой хэш-функции является шаговая функция хэширования , где Hout, Hin, m — блоки длины 256 бит.

Входное сообщение M разделяется на блоки mn,mn − 1,mn − 2,...,m1 по 256 бит. В случае если размер последнего блока mn меньше 256 бит, то к нему приписываются слева нули для достижения заданной длины блока.

Каждый блок сообщения, начиная с первого, подаётся на шаговую функцию для вычисления промежуточного значения хэш-функции: Значение H1 можно выбрать произвольным.

После вычисления Hn + 1 конечное значение хэш-функции получают следующим образом:

  • , где L — Длина сообщения M в битах по модулю 256

  • , где K — Контрольная сумма сообщения M: m1 + m2 + m3 + ... + mn

h — значение хэш-функции сообщения M

Алгоритм

  1. Инициализация:

    1.  — Начальное значение хэш-функции. Т.е. - 256 битовый IV вектор, определяется пользователем.

    2.  — Контрольная сумма

    3.  — Длина сообщения

  2. Функция сжатия внутренних итераций: для i = 1 … n — 1 выполняем следующее (пока | M | > 256):

    1. - итерация метода последовательного хэширования

    2. - итерация вычисления длины сообщения

    3. - итерация вычисления контрольной суммы

  3. Функция сжатия финальной итерации:

    1. - вычисление полной длины сообщения

    2. - набивка последнего блока

    3. - вычисление контрольной суммы сообщения

    4. - MD - усиление

  4. Выход. Значением хэш-функции является h,

Замечание: так как длина сообщения участвует в хэшировании, то нет необходимости указывать в передаваемом сообщении количество добавленных нулей к блоку mn.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]