Здавалка
Главная | Обратная связь

Бесключевые хэш-функции



известны как коды обнаружения ошибок (modification detection code(MDC)) и дают возможность с помощью дополнительных средств гарантировать целостность данных.

На бесключевые хеш-функции накладываются определенные условия.

Условия для бесключевых хэш-функций.

однонаправленность

устойчивость к коллизиям

устойчивость к нахождению второго прообраза

Применение ключевых хэш-функций

Ключевые хеш-функции применяются в случаях, когда стороны имеют общий секретный ключ (доверяют друг другу). В подобных ситуациях обычно не требуется обеспечение защиты в случае отказа получателя от факта получения сообщения или его подмены. Поэтому от ключевых хеш-функций не требуется устойчивости к коллизиям.

Вычисление дайджеста ключевых хеш-функций

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

Построение ключевых хэш-функций на основе бесключевых

Ключевые хеш-функции могут строиться на основе бесключевых. При этом ключ приписывается к обрабатываемому сообщению, но не просто в начало его или конец, что приводит к потенциальным слабостям. Используются способы введения ключа, при которых он вставляется не один, а по крайней мере два раза. Укажем два способа: H=h(k, y, M, k) и H=h(k, y1, h(k, y2, M)), где y, y1 и y2 - дополнения ключа k до размера, кратного длине блока n. Недостатком такого метода является слишком большая длина дайджеста.

 

52)

 

Примеры хеш-функций:

MD 5 (R. RIVEST 1992)

 

Данная хэш-функция является однопроходной хэш-функцией, размер хэш-функции - 128 бит.

Алгоритм хэширования разделяется на две части.

1. Расширение исходного сообщения

2. Собственно хеширование

. Расширение исходного битового сообщения M длины L происходит следующим образом. Пусть К - минимальное для которого выполняется соотношение L < K*512 - 64. Исходное сообщение M дополняется одним единичным битом и далее нулями до длины K*512 - 64, после чего к полученному сообщению дописывается 64 битный блок содержащий двоичную запись значения L. Таким образом, расширенное сообщение М имеет длину кратную 512 бит.

Алгоритм хеширования работает циклами, за один цикл обрабатывается блок исходного сообщения длины 512 бит. Пусть A, B, C, D - 32 битные переменные. Перед первым циклом хеширования им присваиваются начальные значения (в шестнадцатиричной записи).

Цикл состоит из четырех раундов каждый из которых вычисляет новые значения переменных A, B, C, D на основании их предыдущего значения и значения 64-битного отрезка хешируемого 512-битного блока исходного сообщения. В заключение цикла полученные значения A, B, C, D суммируются по модулю 232 с соответствующими значениями до начала цикла хэширования.

Финальное (после обработки последнего блока хэшируемого сообщения) значение переменных A, B, C, D является 128 битным значением хэш-функции.

Через функцию F обозначено соответствующее нелинейное преобразование (S, T, U или V). С учетом циклического сдвига переменных a, b, c, d в преобразованиях SS, TT, UU и VV. Один цикл работы алгоритма MD 5 можно представить в виде 64 тактов работы нелинейного регистра сдвига с четырьмя обратными связями, при этом первые 16 тактов работает первая обратная связь, следующие 16 вторая и т.д.

В заключение рассмотрения алгоритма MD 5 отметим, что несмотря на многие попытки провести на него атаку, он остается практически стойким.

MD 2 (R. RIVEST 1992)

 

Данный алгоритм также реализует 128 битную однопроходную хэш-функцию и в частности используется в протоколе PEM (Privacy -Enhanced Mail см. ниже). Этот алгоритм значительно более медленный чем остальные изложенные в книге примеры, однако, до сих пор у него не найдено даже потенциальных слабостей.

Алгоритм использует случайную перестановку на байтах, задаваемую вектором (S0,S1, ... S255), сам автор, например, предлагает генерировать эту подстановку из битового вектора, получаемого записью числа p в двоичном виде. Также используется 48 байтный блок X=X0,...,X48,

Алгоритм выглядит следующим образом;

1. Исходное сообщение расширяется до сообщения длины кратной 16 байтам. При этом если дописывается N байтов, до их значение равно 0, 1, ... N-1.

2. Сообщение дополняется 16 байтной контрольной суммой, которая содержит истинный размер сообщения и может содержать дополнительную информацию (например, CRC значение).

3. Первый 16 байтный блок блока X инициализируется нулями.

4. Второй 16 байтный блок блока Х устанавливается равным очередному 16 байтному блоку хэшируемого текста.

5. Третий 16 байтный блок блока Х получается покоординатным суммированием первого и второго 16-байтных блоков блока X.

6. Вычисляется преобразование (запишем его в терминах псевдоязыка программирования)

 

 

53)







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.