Содержание
Криптографические xэш - функции
- Хэширование
- преобразование исходного информационного массива произвольной длины в битовую строку фиксированной длины.
- Криптографическая хэш-функция
- хэш-функция, являющаяся криптографически стойкой, то есть удовлетворяющая ряду требований, специфичных для криптографических приложений.
Требования к криптографически стойким хэш-функциям :
- Для заданного значения хэш-функции должно быть невозможно вычислить блок данных , для которого .
- Стойкость к коллизиям первого рода: для заданного сообщения должно быть вычислительно невозможно подобрать другое сообщение , для которого .
- Стойкость к коллизиям второго рода: должно быть вычислительно невозможно подобрать пару сообщений , имеющих одинаковый хэш.
Математически хэш функцию можно записать в виде: ,
где – исходное сообщение, – значение хеш-функции.
Для криптографических хэш-функций также важно, чтобы при малейшем изменении аргумента значение функции сильно изменялось (лавинный эффект).
Итеративная последовательная схема
Схема Меркеля-Дамгарда сегодня - основание для многих функций криптографического хэширования. Для построения хэш-функций используется cтруктура Меркля-Дамгарда. Cжимающая функция преобразует блоков,размер каждого состоит из бит.
В качестве начального значения переменной используется произвольное вектор инициализации . Каждый следующий блок данных объединяется с выходным значением сжимающей функции на предыдущей итерации. Если длина блока < , дополняется длиной сообщения и . Значением хэш-функции являются выходные бит последней итерации.
Функция сжатия
- Односторонняя функция сжатия
- функция для преобразования двух входных блоков фиксированной длины в выходной блок фиксированной длины.
В настоящее время популярны два подхода для создания хэш-функций. В первом подходе функция сжатия сделана на "пустом месте": она разработана только для этой цели. Во втором подходе блочный шифр с симметричными ключами служит функцией сжатия.
Хэш-функции, сделанные на "пустом месте"
- 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:
SHA-1 содержит больше шагов (80 вместо 64) и выполняется на 160-битном буфере по сравнению со 128-битным буфером MD5. Таким образом, SHA-1 должен выполняться приблизительно на 25% медленнее, чем MD5 на той же аппаратуре. Оба алгоритма просты и в описании, и в реализации, не требуют больших программ или подстановочных таблиц.
Хэш-функции, основанные на блочных шифрах
В качестве функции сжатия можно использовать блочный шифр с симметричными ключами, например трехкратный DES или AES. Рассмотрим несколько схем для построения сжимающей функции
- Сxема Рабина
- Сxема Рабина базируется на схеме Меркеля-Дамгарда. Функция сжатия заменяется любым алгоритмом шифрования. Блок сообщения используется как ключ; предварительно созданный дайджест используется как исходный текст. Зашифрованный текст - новый дайджест сообщения. Размер дайджеста совпадает с размером блочного шифра данных в основной криптографической системе.
- Схема Девиса-Мейера (Davies-Mayer)
- В отличии от схемы Рабина использует прямую связь для защиты от атаки "сведения в середину".
- Схема Матиса-Мейера-Осеаса (Metyas-Mayer-Oseas)
- Это версия схемы Девиса-Мейера: блоки сообщения применяются как ключи криптосистемы. Схема может быть использована, если блоки данных и ключ шифрования имеют один и тот же размер. AES хорошо подходит для этой цели.
- Схема Миагучи-Пренеля (Miyaguchi–Preneel)
- Чтобы сделать алгоритм более устойчивым к атаке, исходный текст , блок и зашифрованный текст складываются с помощью и создают новый блок . Эта схема используется в Whirlpool для создания хэш-функции.
Криптогафическая хэш-функция Whirlpool
- Whirlpool
- криптографическая хэш-функция, разработанная Vincent Rijmen и Paulo S. L. M. Barreto . Впервые опубликована в ноябре 2000 года. Осуществляет хэширование входного сообщения с длиной до бит.
Whirlpool использует структуру Меркля-Дамгарда и одностороннюю функцию сжатия Миагучи-Пренеля для формирования 512-блока зашифрованого текста . Поскольку внутренний блок шифрования работает с 512-битными входными сообщениями, то исходное сообщение необходимо разбить на блоки по 512 бит. При этом последний блок, который содержит конец сообщения, может оказаться неполным.
Для решения данной задачи в Whirlpool используется дополнение входного сообщения. Результатом дополнения сообщения является сообщение , длина которого кратна 512. Пусть — длина исходного сообщения. Для того, чтобы получить , необходимо сделать 3 операции:
- К концу сообщения приписать бит «1» ;
- Приписать x битов «0» так, чтобы длина полученной строки была кратна 256 нечетное число раз;
- Приписать 256-битное представление числа .
Полученная строка разбивается на 512-битовые блоки , , , которые используются для генерации последовательности хэш-значений , , . - строка из 512 «0» битов. Для вычисления , W шифрует , используя в качестве ключа , и выполняет между и . Значением хэш-функции является .
КатегорияКриптография