Это старая версия (1.85) КриптографическиеХэшФункции.

Содержание

Криптографические xэш - функции

Хэширование
преобразование исходного информационного массива произвольной длины в битовую строку фиксированной длины.

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

Требования к криптографически стойким хэш-функциям :

  • Для заданного значения хэш-функции X должно быть невозможно вычислить блок данных M, для которого H(M) = X.
  • Стойкость к коллизиям первого рода: для заданного сообщения M должно быть вычислительно невозможно подобрать другое сообщение N, для которого H(M) = H(N).
  • Стойкость к коллизиям второго рода: должно быть вычислительно невозможно подобрать пару сообщений (M, M  prime  ), имеющих одинаковый хэш.

Математически хэш функцию можно записать в виде: H(M) = X,

где M – исходное сообщение, X – значение хеш-функции.

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

Итеративная последовательная схема

Схема Меркеля-Дамгарда сегодня - основание для многих функций криптографического хэширования. Для построения хэш-функций используется cтруктура Меркля-Дамгарда. Cжимающая функция f преобразует m блоков,размер каждого состоит из n бит.

В качестве начального значения переменной H sub 0 используется произвольное вектор инициализации IV. Каждый следующий блок данных объединяется с выходным значением сжимающей функции на предыдущей итерации. Если длина блока H sub m < n, Hm дополняется длиной сообщения и 0. Значением хэш-функции являются выходные n бит последней итерации.

Функция сжатия

Односторонняя функция сжатия
функция для преобразования двух входных блоков фиксированной длины в выходной блок фиксированной длины.
 В настоящее время популярны два подхода для создания хэш-функций. В первом подходе функция сжатия сделана на "пустом месте": она разработана только для этой цели. Во втором подходе блочный шифр с симметричными ключами служит функцией сжатия.

Хэш-функции, сделанные на "пустом месте"

MD5
один из серии алгоритмов по построению дайджеста сообщения, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института. Был разработан в 1991 году как более надёжный вариант предыдущего алгоритма MD4. Позже Гансом Доббертином(Hans Dobbertin) были найдены недостатки алгоритма MD4.В 1996 году Ганс Доббертин объявил о коллизии в алгоритме, и было предложено использовать другие алгоритмы хеширования, такие как Whirlpool, и SHA-1.
SHA-1
В 1993 году национальный Институт Стандартов и Технологии (NIST - National Institute of Standards and Technology) разработал алгоритм безопасного хеширования SHA-0. В 1995 г. он был пересмотрен и опубликован под названием FIP 180-1 (SHA-1). Позже были оперделены четыре новые версии: SHA-224, SHA-256, SHA-384 и SHA-512. Сравнение этих версий приведено в таблице:

Сравнение MD5 и SHA-1:

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

В качестве сжимающей функции можно расмотреть одностороннюю функцию сжатия Миагучи-Пренеля (Miyaguchi–Preneel). Чтобы сделать алгоритм более устойчивым к атаке, исходный текст M sub i, блок H sub i и зашифрованный текст складываются с помощью XOR и создают новый блок H sub {i+1}. Эта схема используется в Whirlpool для создания хэш-функции.

Криптогафическая хэш-функция Whirlpool

Whirlpool
криптографическая хэш-функция, разработанная Vincent Rijmen и Paulo S. L. M. Barreto . Впервые опубликована в ноябре 2000 года. Осуществляет хэширование входного сообщения с длиной до 2 sup {256} бит.

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

Для решения данной задачи в Whirlpool используется дополнение входного сообщения. Результатом дополнения сообщения M является сообщение M  prime, длина которого кратна 512. Пусть L — длина исходного сообщения. Для того, чтобы получить M  prime, необходимо сделать 3 операции:

  1. К концу сообщения M приписать бит «1» ;
  2. Приписать x битов «0» так, чтобы длина полученной строки L+1+x была кратна 256 нечетное число раз;
  3. Приписать 256-битное представление числа L.

Полученная строка разбивается на 512-битовые блоки M sub 1, M sub 2, M sub t, которые используются для генерации последовательности хэш-значений H sub 1, H sub 2, H sub t. H sub 0 - строка из 512 «0» битов. Для вычисления H sub i, W шифрует M sub i, используя в качестве ключа H sub {i-1}, и выполняет XOR между H sub {i-1} и M sub i. Значением хэш-функции является H sub t.



КатегорияКриптография