28572

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

Доклад

Информатика, кибернетика и программирование

Расширение исходного сообщения Собственно хеширование . Расширение исходного битового сообщения M длины L происходит следующим образом. Алгоритм хеширования работает циклами за один цикл обрабатывается блок исходного сообщения длины 512 бит. Цикл состоит из четырех раундов каждый из которых вычисляет новые значения переменных A B C D на основании их предыдущего значения и значения 64битного отрезка хешируемого 512битного блока исходного сообщения.

Русский

2013-08-20

14.18 KB

1 чел.

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

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), сам автор, например, предлагает генерировать эту подстановку из битового вектора, получаемого записью числа  в двоичном виде. Также используется 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.  Вычисляется преобразование (запишем его в терминах псевдоязыка программирования)