Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции МиСЗКИ.doc
Скачиваний:
34
Добавлен:
24.08.2019
Размер:
1.63 Mб
Скачать

Использование цепочки зашифрованных блоков

Существуют различные хэш-функции, основанные на создании цепочки зашифрованных блоков, но без использования секретного ключа. Одна из таких хэш-функций была предложена Рабином. Сообщение М разбивается на блоки фиксированной длины М1, М2, . . . , МN и используется алгоритм симметричного шифрования, например DES, для вычисления хэш-кода G следующим образом:

Н0 = начальное значение

Нi = EMi [Hi-1]

G = HN

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

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

  • Используя описанный выше алгоритм, вычислить незашифрованный хэш-код G.

  • Создать поддельное сообщение в виде Q1, Q2, . . . , QN-2.

  • Вычислить Нi = EQi[Hi-1] для 1 i N-2.

  • Создать 2m/2 случайных блока Х и для каждого такого блока Х вычислить ЕХ[HN-2]. Создать дополнительно 2m/2 cлучайных блока Y и для каждого блока Y вычислить DY[G], где D - дешифрующая функция, соответствующая Е. Основываясь на "парадоксе дня рождения" можно сказать, что с высокой степенью вероятности эта последовательность будет содержать блоки Х и Y такие, что ЕХ[HN-2] = DY[Y].

  • Создать сообщение Q1, Q2, . . . ,QN-2, X, Y. Это сообщение имеет хэш-код G и, следовательно, может быть использовано вместе с зашифрованным аутентификатором.

Эта форма атаки известна как атака "встреча посередине". В различных исследованиях предлагаются более тонкие методы для усиления подхода, основанного на цепочке блоков. Например, Девис и Прайс описали следующий вариант:

Hi = EMi [Hi-1] Hi-1

Возможен другой вариант:

Hi = EHi-1 [Mi] Mi

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

Дальнейшие исследования были направлены на поиск других подходов к созданию функций хэширования.

Однонаправленные (односторонние) функции с секретом и их применение.

Односторонняя (однонаправленная) функция (one way function) - это функция f осуществляющая отображение X->Y, где X и Y - произвольные множества, и удовлетворяющая следующим условиям:

  1. xX (области оперделения) легко вычислить y=f(x), yY.

  2. Почти для любого yY (области значения) найти f -1(y), т.е. x, для которого y=f(x), вычислительно невозможно.

Почему в определнии стоит "почти для любого"? Потому, что если взять некоторый x и вычислить для него y=f(x), то мы уже будем знать, что полученному y соответствует взятый нами x. Сохраним эти 2 значения и если когда-нибудь мы столкнемся с таким y, то мы спокойно найдем x.

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

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

Абонент A вырабатывает следующую последовательность: x0, f(x0)=x1, ..., f(x99)=x100.

Затем x100 передается по секретному каналу (или при встрече) абоненту B.

Когда А необходимо идентифицировать себя, он передает по открытому каналуB x99 . В проверяет, f(x99)=?x100 .

В следующий раз А передаст x99 и В проверит f(x98)=?x99 и т.д. Перехват сообщений на i-ом этапе в открытом канале ничего не даст злоумышленнику, т.к. он не сможет получить соответсвующее значение xi-1(из-за односторонней функции), чтобы в следующий раз идентифицировать себя как абонента А. Данная схема представлена на следующем рисунке:

Такие схемы применяются для идентифкации "свой/чужой".

Односторонней функцией с секретом (trapdoor one way function) называют функцию fk осуществляющая отображение X->Y, где X и Y - произвольные множества, и удовлетворяющая следующим условиям:

  1. xX (области оперделения) легко вычислить y=fk(x), yY.

  2. При известном kyY легко вычислить x=fk -1(y),xX.

  3. Почти для всех k и почти для всех y нахождение x=fk -1(y) вычислительно невозможно без знания параметра k.

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