Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция № 11 ХЕШ-функции.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.01 Mб
Скачать

Коллизии и реверс

Однако, возможно существование такого интервала на области определения функции, в границах которого она становится инъективной (т. е. если h(‘a’)=0, то существует такая функция, g, для которой g(0)=’a’). Это означает, что только для одного элемента из множества A существует индекс x1. Функция будет инъективна и в том случае, если ни один элемент из A не отображается на интервал (x1, x2) при условии, что последний не равен нулю. В любом другом случае на каждый индекс множества X отображается более одного элемента из A. Это так называемая коллизия хэш-функции.

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

Методы построения криптографических хэш-функций

  1. построение хэш-функции на основе существующего алгоритма шифрования (например, на основе шифров ГОСТ 28147 - 89, DES и FEAL.);

  2. построение хэш-функции на основе известной математической задачи, как правило вычислительно трудной;

  3. построение хэш-функции "с нуля".

Назначение криптографических хэш-функций

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

Функции выработки хэш–блока для подписываемого массива данных.

Подписи битовых групп + модификации схем цифровых подписей.

Описание использования при хранении паролей:

При задании пароля пользователь вводит имя пользователя и сам пароль:

Login: Вася

Password: *******

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

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

Узнать, какой именно пароль верный, зная лишь его хеш - невозможно.

Методы криптоанализа хэш-функций

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

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

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

Метод требует большого объема памяти для хранения генерируемых наборов, а также эффективных методов сортировки.

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

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

Например, Бихам и Шамир в своей известной работе, посвященной дифференциальному криптоанализу, описывают в числе прочих и успешную атаку с помощью этого метода на хэш-функцию Snefru.

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

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