русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Бесключевые функции хэширования


Дата добавления: 2015-08-31; просмотров: 3167; Нарушение авторских прав


Обычно требуется, чтобы бесключевые хэш-функции об­ладали следующими свойствами:

1) однонаправленность,

2) устойчивость к коллизиям,

3) устойчивость к нахождению второго прообраза,

означающими соответственно высокую сложность нахожде­ния сообщения с заданным значением свертки; пары сообще­ний с одинаковыми значениями свертки; второго сообщения с тем же значением свертки для заданного сообщения с извест­ным значением свертки.

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

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

Для построения примера хэш-функции, удовлетворяющей свойству 1), рассмотрим функцию, заданную формулой gk(х)=Еk(х)Åx, где Еk - алгоритм блочного шифрования. Такая функция является однонаправленной по обоим аргументам. Поэтому на ее основе можно построить хэш-функцию по правилу (7.1), определив одношаговую сжимающую функ­цию одной из следующих формул:

f(х,H)=ЕH(х)Åx

или

f(х,H)=Еx(H)ÅH.

Первая из этих функций лежит в основе российского стандарта хэш-функции, а вторая – в основе американского стандарта SHA.

Справедливо следующее

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

Укажем взаимозависимость между свойствами 1) и 2).

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



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

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

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

h(x) = (1, х), если битовая длина х равна п,

h(x) = (0, g(x)), если битовая длина х больше п,

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

Утверждение 4. Пусть h': X —>Y хэш-функция и |Х| > 2|Y|. Тогда если существует эффективный алгоритм обращения функции h, то существует вероятностный алго­ритм нахождения коллизии функции h с вероятностью успе­ха, большей 1/2.

Заметим, что трудоемкость подбора прообраза для однонаправленной функции или трудоемкость поиска второго прообраза оцениваются величиной 0(2п). В то же время трудоемкость поиска коллизии оценивается величиной 0(2п/2), так как в данной ситуации применима атака, основанная на парадокce "дней рождений".

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

Пусть Ek – алгоритм блочного шифрования, п – размер блока, l – размер ключа и G – некоторое отображение, ставящее в соответствие вектору длины п вектор длины l. Рассмотрим следующие одношаговые сжимающие функции, построенные на основе алгоритма Ek:

а) f(х,H)=Ex (HH (Дэвис-Мейер);

б) f(х,H)=EG(H) (xx (Матиас-Мейер-Осеас);

в) f(х,H)=EG(H) (xxÅН (Миагучи-Принель).

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

f '(х, Н1, Н2)= p( f (х, Н1), f (х, Н1)),

в которой p переставляет произвольные полублоки а, b, с, d по правилу p((а,b),(с,d)) = (a,d,c,b). Такой подход, использующий схему (б), реализован в конструкции одношаго­вой функции MDC-2.

Другие примеры бесключевых хэш-функций дают из­вестные алгоритмы MD-4, MD-5 и SHA. Они оперируют с блоками длины п, совпадающей с длиной результирующего значения свертки, причем п = 128 для алгоритма MD-4 и п= 160 для MD-5 и SHA. Указанные алгоритмы спроектированы специально с учетом эффективной реализации на 32-разрядных ЭВМ.

При их использовании исходное сообщение М разбивает­ся на блоки длиной т= 512 бит. Последний блок формирует­ся путем дописывания к концу сообщения комбинации 10...0 до получения блока размера 448 бит, к которому затем добав­ляется комбинация из 64 бит, представляющая битовую длину сообщения. Затем вычисляется значение свертки согласно процедуре (7.1) с использованием одношаговой сжимающей функции, заданной формулой f(x,H)= Ex (HH , где х — блок сообщения длины т = 512 бит, Н— блок из п бит, a Ex — некоторое преобразование множества блоков. Значение на­чального вектора определяется в описании преобразования Ex.

В стандарте хэш-функций ГОСТ Р 34.11-94 приняты зна­чения п = т = 512. Одношаговая сжимающая функция f(x,H), используемая для вычисления последовательности значений Нi = f(хi, Нi-1), построена на базе четырех парал­лельно работающих схем блочного шифрования (ГОСТ 28147-89), каждая из которых имеет 256-битовый ключ и опе­рирует с блоками размера 64 бита. Каждый из ключей вычис­ляется в соответствии с некоторой линейной функцией от блока исходного сообщения хi и значения Hi-1. Значение Нi является линейной функцией от результата шифрования, бло­ка исходного сообщения хi и значения Нi-1. После вычисления значения HN для последовательности блоков М12,..,МN применяют еще два шага вычисления согласно формуле

Н = h(М) = f(Z Å МN, f(L, НN )),

где Z - сумма по модулю два всех блоков сообщения, a L – длина сообщения.



<== предыдущая лекция | следующая лекция ==>
 | Целостность данных и аутентификация сообщений


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.02 сек.