
- •Свойства, назначение и основы построения хеш-функций.
- •Обобщенная схема хэш – функции
- •Пример хэширования
- •Гипотеза о существовании односторонних функций.
- •Свойства односторонних хэш-функций.
- •Длины однонаправленных хэш-функций
- •Коллизии и реверс
- •Методы построения криптографических хэш-функций
- •Назначение криптографических хэш-функций
- •Методы криптоанализа хэш-функций
- •Построение хеш-функций на основе блочных шифров.
- •Схемы, в которых длина хэш-значения равна длине блока
- •Обобщенная хэш-функция, у которой длина хэш-значения равна длине блока
- •Четыре безопасных хэш-функции, у которых длина хэш-значения равна длине блока
- •Модификация схемы Davies-Меуеr
- •Модификация схемы Davies-Meyer.
- •Тандемная (Таndеm) и одновременная (Abreast) схемы Davies-Meyer.
- •Тандемная схема Davies-Meyer.
- •Самостоятельные хэш – алгоритмы. Краткое описание наиболее распространенных алгоритмов
- •Алгоритм md2
- •Алгоритм мd3
- •Алгоритм md4
- •Алгоритм md5
- •Описание мd5
- •Отличия md5 от md4
- •Полный пример md5
- •Криптоанализ Snefru
- •Выбор хэш-функции
- •Эвристические принципы, сформулированные Ривестом
- •Основные требования к алгоритму с точки зрения пользователя
ХЕШ-ФУНКЦИИ
Свойства, назначение и основы построения хеш-функций.
Построение хеш-функций на основе блочных шифров.
Самостоятельные хеш – алгоритмы.
СОДЕРЖАНИЕ:
ХЕШ-ФУНКЦИИ 1
Свойства, назначение и основы построения хеш-функций. 3
Обобщенная схема хэш – функции 4
ПРИМЕР ХЭШИРОВАНИЯ 5
Гипотеза о существовании односторонних функций. 9
Свойства односторонних хэш-функций. 10
Длины однонаправленных хэш-функций 10
Коллизии и реверс 10
Методы построения криптографических хэш-функций 11
Назначение криптографических хэш-функций 11
Методы криптоанализа хэш-функций 11
Построение хеш-функций на основе блочных шифров. 12
Схемы, в которых длина хэш-значения равна длине блока 14
Модификация схемы Davies-Меуеr 15
Тандемная (Таndеm) и одновременная (Abreast) схемы Davies-Meyer. 16
MDC 18
МDС-2 и МDС-4 19
Хэш-функция АR 21
Хэш-функция ГОСТ 21
Самостоятельные хэш – алгоритмы. 22
Краткое описание наиболее распространенных алгоритмов 22
Алгоритм MD2 22
Алгоритм МD3 23
Алгоритм MD4 23
Алгоритм MD5 24
Описание МD5 24
Отличия MD5 от MD4 26
ПОЛНЫЙ ПРИМЕР MD5 26
SECURE HASH ALGORITHM (SHA) 28
RIPE-МD 30
HAVAL 30
Snefru 30
Криптоанализ Snefru 31
Tiger 31
Выбор хэш-функции 31
Эвристические принципы, сформулированные Ривестом 32
Основные требования к алгоритму с точки зрения пользователя 32
Свойства, назначение и основы построения хеш-функций. 2
Алгоритм применения хэш-функции 2
Обобщенная схема хэш – функции 3
ПРИМЕР ХЭШИРОВАНИЯ 4
Гипотеза о существовании односторонних функций. 8
Свойства односторонних хэш-функций. 9
Длины однонаправленных хэш-функций 9
Коллизии и реверс 9
Методы построения криптографических хэш-функций 10
Назначение криптографических хэш-функций 10
Методы криптоанализа хэш-функций 10
Построение хеш-функций на основе блочных шифров. 12
Схемы, в которых длина хэш-значения равна длине блока 13
Модификация схемы Davies-Меуеr 14
Тандемная (Таndеm) и одновременная (Abreast) схемы Davies-Meyer. 15
MDC 17
Схема алгоритма выработки MDC 18
МDС-2 и МDС-4 18
Хэш-функция АR 20
Хэш-функция ГОСТ 20
Самостоятельные хэш – алгоритмы. 21
Краткое описание наиболее распространенных алгоритмов 21
Алгоритм MD2 21
Алгоритм МD3 22
Алгоритм MD4 22
Алгоритм MD5 23
Описание МD5 23
Отличия MD5 от MD4 25
ПОЛНЫЙ ПРИМЕР MD5 25
SECURE HASH ALGORITHM (SHA) 27
RIPE-МD 29
HAVAL 29
Snefru 29
Криптоанализ Snefru 30
Tiger 30
Выбор хэш-функции 30
Эвристические принципы, сформулированные Ривестом 31
Основные требования к алгоритму с точки зрения пользователя 31
Свойства, назначение и основы построения хеш-функций.
Хэш-функция — это процедура обработки сообщения, в результате действия которой формируется строка символов (дайджест сообщения) фиксированного размера. Малейшие изменения в тексте сообщения приводят к изменению дайджеста при обработке сообщения хэш-функцией. Таким образом, любые искажения, внесенные в текст сообщения, отразятся в дайджесте.
Простейшим примером хеш-функции, преобразующей любую последовательность байтов в один байт, является следующая: y=(a AND NOT e AND NOT u) OR (NOT a AND NOT e AND u) OR (NOT a AND e AND NOT u), где: a, e, u- аргументы, OR - дизъюнкции, AND - конъюнкции. Эта функция равна единице только тогда, когда один из ее аргументов равен единице. Пусть задана битовая последовательность. которая состоит из трех байтов. Она для удобства использования записана в три строки: 10 100 100 01 100 011 01 010 110 Определяя поразрядно функцию "y", получаем байт: 10 010 001. Хеш-функция позволяет преобразовывать код ключа базы данных в ее адрес. Это дает возможность так размещать элементы данных в памяти, что их затем несложно будет найти. Хеш-функции также широко используются при шифровании.
Алгоритм применения хэш-функции:
перед отправлением сообщение обрабатывается при помощи хэш-функции. В результате получается его сжатый вариант (дайджест). Само сообщение при этом не изменяется и для передачи по каналам связи нуждается в шифровании описанными выше методами;
полученный дайджест шифруется закрытым ключом отправителя (подписывается ЭЦП) и пересылается получателю вместе с сообщением;
получатель расшифровывает дайджест сообщения открытым ключом отправителя;
получатель обрабатывает сообщение той же хэш-функцией, что и отправитель и получает его дайджест. Если дайджест, присланный отправителем, и дайджест, полученный в результате обработки сообщения получателем, совпадают, значит, в сообщение не было внесено искажений.
Обобщенная схема хэш – функции
Первым шагом при выработке хэш-свертки является разбиение входных данных на последовательность битовых блоков определенной длины.
Дополнения до блока требуемой длины возможно: нулями, пробелами, иными символами, вычисленными по определенным правилам значениями.
При программировании в среде .NET справочную информацию по способам построения блоков требуемой длины можно получить в справке к
System.Security.Cryptography. PaddingMode (режимы дополнения).
При использовании в программах данного пространства имен можно добиться автоматического дополнения входных блоков данных до требуемой длины.
Каждый полученный битовый блок в свою очередь разбивается на стандартные блоки меньшей длины в соответствии с размером входных данных для обеспечения работы основной части алгоритма хэширования.
На каждом шаге алгоритма получаются некоторые промежуточные выходные данные: также в виде битовых блоков. Это так называемая хэш-свертка блока. Она получается в общем случае применением алгоритма хэширования к входным данным, к которым каким-либо образом присоеденена, сконкатенирована свертка с предыдущего шага алгоритма.
Таким образом, происходит последовательная обработка входных блоков данных.
Выход основного алгоритма на последнем шаге (при этом на входе был последний блок данных) определяет блоки для получения результирующей хэш-свертки.
Пример получения хэш-свертки для текста произвольной длины: