Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Построение и использование хеш-функций





 

Под термином хеш-фунция понимается функция, отображающая электронные сообщения произвольной длины (иногда длина сообщения ограничена, но достаточно большим числом), в значения фиксированной длины. Последние часто называют хеш-кодами. Таким образом, у всякой хеш-функции h имеется большое количество коллизий, т.е. пар значений х и у таких, что h (x) =h (y).Основное требование, предъявляемое криптографическими приложениями к хеш-функциям, состоит в отсутствии эффективных алгоритмов поиска коллизий. Хеш-функция, обладающая таким свойством, называется хеш-функцией, свободной от коллизий. Кроме того, хеш-функция должна быть односторонней, т.е. функцией, по значению которой вычислительно трудно найти ее аргумент, в то же время, функцией, для аргумента которой вычислительно трудно найти другой аргумент, который давал бы то же самое значение функции [16].

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

Введем следующие обозначения Хеш-функция h обозначается как h (α) и h (α,β) для одного и двух аргументов, соответственно. Хеш-код функции h обозначается как Н. При этом Н 0 = 1 обозначает начальное значение (вектор инициализации) хеш-функции. Под обозначением будет пониматься операция сложения по модулю 2 или логическая операция XOR («Исключающая ИЛИ»). Результат шифрования блока В блочным шифром на ключе k обозначается Ek (B).

Для лучшего понимания дальнейшего материала приведем небольшой пример построения хеш-функции

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

где сообщение М разбито на n 64-битных блока.

Хеш-кодом данной хеш-функции является значение Н = h (M, I)= Нп.

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

Были предприняты попытки построения хеш-функций на базе блочного шифра с размером хеш-кода в k раз (как правило, k = 2) большим, чем размер блока алгоритма шифрования.

В качестве примера можно привести хеш-функции МDС2 и MDC4 фирмы IBM. Данные хеш-функции используют блочный шифр (в оригинале DES) для получения хеш-кода, длина которого в 2 раза больше длины блока шифра. Алгоритм MDC2 работает несколько быстрее, чем MDC4, но представляется несколько менее стойким.

В качестве примера хеш-функций, построенных на основе вычислительно трудной математической задачи, можно привести функцию из рекомендаций МККТТ Х.509.

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

Следует отметить, что задача разложения числа на простые множители эквивалентна следующей труднорешаемой математической задаче. Пусть n = pq произведение двух простых чисел р и q. В этом случае можно легко вычислить квадрат числа по модулю п: x 2(mod n), однако вычислительно трудно извлечь квадратный корень по этому модулю.

Таким образом, хеш-функцию МККТТ Х.509 можно записать следующим образом:

где .

Длина блока Mi представляется в октетах, каждый октет разбит пополам и к каждой половине спереди приписывается полуоктет, состоящий из двоичных единиц: n – произведение двух больших (512-битных) простых чисел р и q.

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

 

Пример 9.14. Получить хеш-код для сообщения «HASHING» при помощи хеш-функции Х.509 с параметрами р = 17, q = 19.

Порядок вычисления хеш-кода:

а) получить значения модуля: n = pq = 323;

б)представить сообщение «HASHING» в виде символов ASCII:

в) представить коды ASCII битовой строкой:

г) разбить байт пополам (разбиение октета на полуоктеты), добавить в начало полубайта единицы и получить хешируемые блоки Мi:

 

 

д) выполнить итеративные шаги:

первая итерация:

M 1 = 11110100

H 0 = I = 00000000

H 0 M 1 = 111101002 = 24410

[(H 0 M 1)]2(mod 323) = 2442(mod323) = 104

H 1 = 10410 = 011010002

вторая итерация:

М 2 = 11111000

H 1 = 01101000

H 1 М 2 = 100100002 = 14410

[(H 1 М 2)]2(mod 323) = I442(mod323) = 64

H 2 = 6410 = 010000002

………… … ……….

i -я итерация...

Пример легко продолжить самостоятельно.

Пример 9.15 (упрощенный вариант). Хешируемое слово «ДВА». Коэффициенты р =7, q = 3. Вектор инициализации Н 0 = 1 выберем равным 6 (выбирается случайным образом). Определим n = pq = 7·3 = 21. Слово «ДВА» в числовом эквиваленте можно представить как 531 (по номеру буквы в алфавите). Тогда хеш-код сообщения 531 получается следующим образом:

первая итерация:

М 1 + Н 0 = 5 + 6 = 11; [ M 1 + Н 0]2 (mod n) = 112 (mod 21) = 16 = Н 1;

вторая итерация:

М 2 + Н 1= 3 + 16 = 19; [ M 2 + Н 1]2 (mod n) = 192 (mod 21) = 4 = Н 2;

третья итерация:

М 3 + Н 2 = 1 + 4 = 5; [ М 3 + Н 2]2 (mod п) = 52 (mod 21) = 4 = Н 3.

В итоге получаем хеш-код сообшения «ДВА», равный 4.

 







Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.