Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vse_polnostyu.doc
Скачиваний:
31
Добавлен:
22.09.2019
Размер:
705.02 Кб
Скачать

Однонаправленные хэш-функции на основе симметричных блочных алгоритмов

Однонаправленную хэш-функцию можно построить, используя симметричный блочный алгоритм. Наиболее очевидный подход состоит в том, чтобы шифровать сообщение М посредством блочного алгоритма в режиме СВС или СFВ с помощью фиксированного ключа и некоторого вектора инициализации IV.

Последний блок шифртекста можно рассматривать в качестве хэш-значения сообщения М. При таком подходе не всегда возможно построить безопасную однонаправленную хэш-функцию, но всегда можно получить код аутентификации сообщения МАС (Message Authentication Code).

Более безопасный вариант хэш-функции можно получить, используя блок сообщения в качестве ключа, предыдущее хэш-значение - в качестве входа, а текущее хэш-значение – в качестве выхода. Реальные хэш-функции проектируются еще более сложными. Длина блока обычно определяется длиной ключа, а длина хэш-значения совпадает с длиной блока.

Поскольку большинство блочных алгоритмов являются 64-битовыми, некоторые схемы хэширования проектируют так, чтобы хэш-значение имело длину, равную двойной длине блока.

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

Н0 = Iн,

Нi = ЕA(В)  С,

где  - сложение по модулю 2 (исключающее ИЛИ); Iн - некоторое случайное начальное значение;

А, В, С могут принимать значения Мi, Нi-1, (Мi  Нi-1) или быть константами.

Сообщение М разбивается на блоки Мi принятой длины, которые обрабатываются поочередно.

Рис.3. Обобщенная схема формирования хэш-функции

Три различные переменные А, В, С могут принимать одно из четырех возможных значений, поэтому в принципе можно получить 64 варианта общей схемы этого типа. Из них 52 варианта являются либо тривиально слабыми, либо небезопасными. Остальные 12 схем безопасного хэширования, у которых длина хэш-значения равна длине блока перечислены в табл.1.

Таблица 1

Номер схемы

Функция хэширования

1

Нi = ЕHi-1 ( Мi ) Мi

2

Нi = ЕHi-1 ( Мi Нi-1 ) Мi Нi-1

3

Нi = EHi-1 ( Мi ) Мi Нi-1

4

Нi = ЕHi-1 ( Мi Нi-1 ) Мi

5

Нi = ЕMi ( Нi-1 ) Нi-1

6

Нi = ЕMi ( Мi Нi-1 ) Мi Нi-1

7

Нi = ЕMi ( Нi-1 ) Мi Нi-1

8

Нi = EMi ( Мi Нi-1) Нi-1

9

Нi = ЕMi Hi-1 ( Мi ) Мi

10

Нi = ЕMi Hi-1 ( Нi-1) Нi-1

11

Нi = ЕMi Hi-1 ( Mi ) Нi-1

12

Нi = ЕMi Hi-1 ( Нi-1 ) Мi

Первые четыре схемы хэширования, являющиеся безопасными при всех атаках, приведены на рис.4.

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

Но для этого алгоритм необходимо изначально проектировать специально, исходя из тандема требований (стойкость, скорость).

Рис.4. Четыре схемы безопасного хэширования

Далее рассмотрены три самостоятельных алгоритма криптостойкого хэширования, получивших наибольшее распространение на сегодняшний день.

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