Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.ХФ.doc
Скачиваний:
18
Добавлен:
02.12.2018
Размер:
1.62 Mб
Скачать
  1. Хеш-функции.

    1. Введение

Функцией хеширования (в широком смысле) называется функция , удовлетворяющая минимум двум требованиям:

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

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

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

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

Платой за столь высокую скорость является отсутствие криптостойкости — лёгкая возможность подогнать сообщение под заранее известную сумму. Также обычно разрядность контрольных сумм (типичное число: 32 бита) ниже, чем криптографических хешей (типичные числа: 128, 160 и 256 бит), что означает возможность возникновения непреднамеренных коллизий.

Поэтому в криптографии используют более сложные функции.

Рассмотрим основные задачи криптографии в которых используются хэш-функции:

  • построения систем контроля целостности данных при их передаче или хранении,

  • аутентификации источника данных.

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

Хеш-функция, служащая для выработки имитовставки, должна позволять (в отличие от обычной контрольной суммы) осуществлять обнаружение не только случайных ошибок в наборах данных, возникающих при их хранении и передаче, но и сигнализировать об активных атаках злоумышленника, пытающегося осуществить навязывание ложной информации. Для того чтобы злоумышленник не смог самостоятельно вы­числить контрольное значение свертки и тем самым осущест­вить успешную имитацию или подмену данных, хеш-функция должна зависеть от секретного, не известного злоумышлен­нику, параметра — ключа пользователя. Этот ключ должен быть известен передающей и проверяющей сторонам. Такие хеш-функции будем называть ключевыми.

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

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

Формализуя сказанное, введем следующее определение. Обозначим через X множество, элементы которого будем на­зывать сообщениями. Обычно сообщения представляют собой последовательности символов некоторого алфавита, как пра­вило, двоичного. Пусть Y — множество двоичных векторов фиксированной длины.

Хеш-функцией называется всякая функция удовлетворяющая следующим требованиям:

  1. для данного легко вычислить

  2. для данного трудно вычислить такое, что

  3. для данного трудно вычислить , , такое, что .

Отображение , удовлетворяющее требованиям 1) и 2), является однонаправленным. Иногда вместо 3) требуют выполнения более сильного свойства.

трудно вычислить пару , для которой .

Пара элементов множества (пара сообщений), о которой идет речь в называется коллизией для отображения . Т.к. мощность больше мощности , то допускает коллизии.

Покажем теперь, что при выполнении нескольких естественных предположений условие влечет выполнение условия 2).

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

Доказательство. Обозначим через алгоритм обращения , о котором идет речь в формулировке леммы. Т.е. для некоторого такого, что . Сформулируем алгоритм вычисления коллизии.

Входные данные алгоритма: хеш-функция , алгоритм .

ыходные данные алгоритма: коллизия для .

Шаг 1. Выбрать случайное , вычислить .

Шаг 2. Вычислить .

Шаг 3. Если , то перейти к шагу 1; в противном случае - коллизия для . Алгоритм заканчивает работу.

Оценим среднее число прохождений алгоритма через шаг 1. Имеем вероятностную схему, исходами которой являются пары , где . Обозначим через множество , для которых . Заметим, что число классов не больше . Тогда вероятность исхода равна . Благоприятными являются исходы , где . Найдем вероятность неблагоприятного исхода. Она равна

.

Отсюда вероятность благоприятного исхода не меньше . Т.о. среднее число прохождений алгоритма через шаг 1 не превосходит 2. Т.е. этот алгоритм эффективен. Лемма доказана.

Т.о. свойство влечет 2). Очевидно, что влечет также 3).

Лемма 1.1.2. В общем случае устойчивая к коллизиям хеш-функция не обязана быть однонаправленной.

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

В качестве примера сжимающей хеш-функции рассмотрим функцию h, определенную условиями:

если битовая длина x равна n,

если битовая длина x больше n.

где — сжимающая n-битовая функция, устойчивая к коллизиям. Функция h также является устойчивой к коллизиям и к нахождению второго прообраза, но, очевидно, не является однонаправленной.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]