![](/user_photo/2706_HbeT2.jpg)
- •Введение
- •1.2 Пример хеш-функции.
- •Ключевые функции хеширования
- •Бесключевые функции хеширования
- •Обзор блочного шифрования.
- •Логика выполнения sha-1
- •Сравнение sha-1 и md5
- •Краткое описание алгоритма гост 28147-89
- •Алгоритм вычисления шаговой функции хэширования
- •Генерация ключей
- •Шифрующее преобразование
- •Перемешивающее преобразование
- •Различные атаки на хеш-функции.
-
Краткое описание алгоритма гост 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-й фрагменты используются в обратном порядке.
-
Хэш-функция ГОСТ 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
Алгоритм
-
Инициализация:
-
— Начальное значение хэш-функции. Т.е. - 256 битовый IV вектор, определяется пользователем.
-
— Контрольная сумма
-
— Длина сообщения
-
-
Функция сжатия внутренних итераций: для i = 1 … n — 1 выполняем следующее (пока | M | > 256):
-
- итерация метода последовательного хэширования
-
- итерация вычисления длины сообщения
-
- итерация вычисления контрольной суммы
-
-
Функция сжатия финальной итерации:
-
- вычисление полной длины сообщения
-
- набивка последнего блока
-
- вычисление контрольной суммы сообщения
-
-
- MD - усиление
-
-
-
Выход. Значением хэш-функции является h,
Замечание: так как длина сообщения участвует в хэшировании, то нет необходимости указывать в передаваемом сообщении количество добавленных нулей к блоку mn.