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

1.2 Пример хеш-функции.

Следующая хеш-функция была предложена Шаумом, ван Хейстом и Пфицманом, (Schaum, van Heyst, Pfitzmann) она основана на возведении в степень в конечном простом поле , где и - простое число. Пусть примитивный элемент в , и . Рассмотрим отображение

,

которое определяется т.о., что

.

Лемма 1.2.1. Эффективный алгоритм вычисления коллизии для функции существует тогда и только тогда, когда существует эффективный алгоритм вычисления такого , что .

Доказательство. Пусть имеется эффективный алгоритм вычисления коллизии для функции , т.е. . Тогда

или , или

.

Пусть . Тогда или .

При найдем однозначно

.

При или имеем . Поэтому , что противоречит определению коллизии. Наконец, пусть . Тогда

.

Отсюда найдем . Значит или . Проверкой равенства установим, какой из двух случаев имеет место в действительности. Доказательство обратного утверждения очевидно. Лемма доказана.

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

.

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

Сначала рассмотрим случай . Пусть , тогда и можно представить как конкатенацию

,

где и , где . Здесь - наименьшее целое число . Сформулируем алгоритм вычисления значения функции .

В алгоритме используется вспомогательный вектор

Шаг 1. Положим .

Шаг 2. , где - вектор из нулей длины .

Шаг 3. , где выбирается т.о., что .

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

Шаг 5. Для всех вычислить

.

Шаг 6. Положить .

Лемма 1.2.2.

1) Отображение инъективно;

2)Пусть имеется эффективный алгоритм вычисления коллизии для , тогда имеется эффективный алгоритм вычисления коллизии для .

Доказательство. Докажем 1). Пусть

и . Тогда и при . Т.к. , где и , то . Т.е. . Докажем 2). Пусть , где , - коллизия для . Построим коллизию для . Обозначим

где дополняется до с помощью нулей, а дополняется до с помощью нулей. Величины, вычисленные в п.п. 4),5) обозначим через для и для . Рассмотрим три случая.

  1. пусть . Тогда, очевидно, и . Имеем цепочку равенств

.

Т.о. , есть коллизия для .

  1. пусть . Тогда и . Как и выше, имеем равенство

Если , то получили коллизию для . В противном случае Отсюда

Т.о. или нашли коллизию для , или выполняются равенства и и т.д. На последнем шаге выполнено, если до того не нашли коллизию для , равенство

.

Значит, получили коллизию для или . В последнем случае , что невозможно в силу инъективности отображения .

3) пусть но . Тогда можно считать, что , т.е. . Действуя как при рассмотрении п.2), построим коллизию для или придем к равенству

.

Заметим, что - ый бит в равен 0, а - ый бит в векторе равен 1. Значит, это коллизия для . Т.о. лемма доказана.

При мы должны изменить алгоритм вычисления . Пусть . Определим функцию т.о., что

.

В алгоритме используется вспомогательный вектор , .

Шаг 1. Положить

.

Шаг 2. Положить .

Шаг 3. Для всех , вычислить

.

Шаг 4. Положить .

Лемма 1.2.3.

1) Отображение инъективно;

2) не существует таких что и ;

3)пусть имеется эффективный алгоритм вычисления коллизий для функции , тогда имеется эффективный алгоритм вычисления коллизий для .

Доказательство. Утверждения 1), 2) легко следуют из определения функции . Докажем 3). Пусть таковы, что и . Пусть

, .

Рассмотрим два случая. 1) Пусть . Тогда имеем коллизию для или , что невозможно в силу инъективности ; 2) пусть . Тогда построим коллизию для или придем к системе равенств

Это противоречит п.2) леммы. Т.о. лемма доказана.

    1. Хеш-функций на основе одношаговых сжимающих функций.

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

при некоторых натуральных . Требуется построить функцию

.

Сообщение разбивается на блоки

,

где . Если длина сообщения в битах не кратна , то последний блок дополняется т.о., что . Тогда , где последовательность вычисляется по следующему правилу. Блок фиксирован, например, . Далее

. (1)

Однако в отличие от изложенного выше случая здесь не удается доказать, что коллизия для всегда приводит к коллизии для .

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

При таком подходе свойства хеш-функции полностью определяются свойствами одношаговой сжимающей функ­ции .

Лемма 1.4.1. Если функция хеширования h построена ни основе одношаговой сжимающей функции f по правилу (1), то из устойчивости к коллизиям функции f следует устойчи­вость к коллизиям функции h.

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

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

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

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