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

Алгоритм вычисления шаговой функции хэширования

Шаговая функция хэширования f отображает два блока длиной 256 бит в один блок длиной 256 бит: и состоит из трех частей:

  • Генерирование ключей

  • Шифрующее преобразование — шифрование с использованием ключей

  • Перемешивающее преобразование результата шифрования

Генерация ключей

В алгоритме генерации ключей используются:

  • Два преобразования блоков длины 256 бит:

    • Преобразование , где — подблоки блока Y длины 64 бит.

    • Преобразование , где , а — подблоки блока Y длины 8 бит.

  • Три константы:

C2 = 0

C3 = 18 08 116 024 116 08 (08 18)2 18 08 (08 18)4 (18 08)4

C4 = 0

Алгоритм:

  1. Для j = 2,3,4 выполняем следующее:

Шифрующее преобразование

После генерирования ключей происходит шифрование Hin по ГОСТ 28147—89 в режиме простой замены на ключах Ki (для i: = 1,2,3,4), процедуру шифрования обозначим через E (Примечание: функция шифрования E по ГОСТ 28147 шифрует 64 битные данные 256 битным ключом). Для шифрования Hin разделяют на четыре блока по 64 бита: и зашифровывают каждый из блоков:

  • s1 = E(h1,K1)

  • s2 = E(h2,K2)

  • s3 = E(h3,K3)

  • s4 = E(h4,K4)

После чего блоки собирают в 256 битный блок:

Перемешивающее преобразование

На последнем этапе происходит перемешивание Hin, S и m с применением регистра сдвига, в результате чего получают Hout.

Для описания процесса преобразования сначала необходимо определить функцию ψ, которая производит элементарное преобразование блока длиной 256 бит в блок той же длины: , где y16,y15,...,y2,y1 — подблоки блока Y длины 16 бит.

Перемешивающее преобразование имеет вид , где ψi означает суперпозицию длины i.

В 2008 году командой экспертов из Австрии и Польши была обнаружена техническая уязвимость, сокращающая поиск коллизий в 223 раз. In 2008, an attack was published that breaks the full-round GOST hash function. The paper presents a collision attack in 2105 time, and first and second preimage attacks in 2192 time

    1. Различные атаки на хеш-функции.

Наиболее распространенными видами атак на хеш-функции являются:

  • нахождение прообраза x по заданному значению y=h(x). Такая атака особенно опасна для систем аутентификации, использующих хэш-значения паролей и секретных ключей;

  • нахождение прообраза x’ по заданному прообразу x, для которого выполняется условие h(x)=h(x’). Эта атака может быть использована для фальсификации сообщения, подписанного цифровой подписью;

  • нахождение двух прообразов x и x’,x≠x’, для которых выполнялось бы условие h(x)=h(x’).

Все атаки на хеш-функции можно разделить на две группы:

  • атаки, не зависящие от алгоритма;

  • атаки, базирующиеся на уязвимости алгоритма преобразований (аналитические).

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

Аналитические атаки: атака “встреча посередине”, атака с коррекцией блока, атака с фиксированной точкой, атака на базовый алгоритм шифрования, дифференциальный анализ. Эти атаки основываются на недостатках внутренней структуры хэш-функций.

Атака “грубой силой” может быть выполнена для нахождения прообраза по заданному хэш-значению или для нахождения прообраза, дающего заданное хэш-значение. Рассмотрим следующую задачу. Предположим, количество выходных значений хэш-функции равно n. Каким должно быть число k, чтобы для конкретного значения и значений вероятность того, что хотя бы для одного Yi выполнялось равенство:

была бы больше 0,5.

Для одного вероятность того, что, равна 1/n.

Соответственно, вероятность того, что, равна 1 - 1/n.

Если создать k значений, то вероятность того, что ни для одного из них не будет совпадений, равна произведению вероятностей, соответствующих одному значению, т.е. (1 - 1/n)k.

Следовательно, вероятность, по крайней мере, одного совпадения равна

1 - (1 - 1/n)k

По формуле бинома Ньютона

(1 - a)k =

1 - ka + (k(k-1)/2!)a2 - ... ≈ 1 - ka

1 - (1 - k/n) = k/n = 0,5

k = n/2

Таким образом, мы выяснили, что для N-битового хэш-кода достаточно выбрать 2N-1 сообщений, чтобы вероятность совпадения хэш-кодов была больше 0,5.

Атака методом “дня рождения” выполняется для нахождения двух различных сообщений с одинаковыми хэш-значениями. Рассмотрим следующую задачу: обозначим P (n, k) вероятность того, что в множестве из k элементов, каждый из которых может принимать n значений, есть хотя бы два с одинаковыми значениями. Чему должно быть равно k, чтобы P (n, k) была бы больше 0,5?

Число различных способов выбора значений элементов таким образом, чтобы при этом не было совпадений (дублей), равно

n(n-1) … (n-k+1)=n!/(n-k)!

Всего возможных способов выбора значений элементов равно

nk

Вероятность того, что дублей нет, равна

n!/(n-k)!nk

Вероятность того, что есть дубли, соответственно равна

1 - n!/(n-k)!nk

P (n, k) = 1 - n! / ((n-k)! × nk) =

1 - (n × (n-1) × … × (n-k-1)) / nk =

1 - [ (n-1)/n × (n-2)/n × … × (n-k+1)/n] =

1 - [(1- 1/n) × (1 - 2/n) × … × (1 - (k-1)/n)]

Известно, что

1 - x e-x

P (n, k) > 1 - [e-1/n × e-2/n × … × e-k+1/n]

P (n, k) > 1 - e-k(k-1)/2n

1/2 = 1 - e-k(k-1)/2n

2 = ek(k-1)/2n

ln 2 = k (k-1) / 2n

k (k-1) ≈ k2

k = (2n × ln 2)1/2 = 1,17 n1/2 ≈ n1/2

Если хэш-код имеет длину N бит, т.е. принимает 2N значений, то

k = √2N = 2N/2

Подобный результат называется "парадоксом дня рождения", потому что в соответствии с приведенными выше рассуждениями для того, чтобы вероятность совпадения дней рождения у двух человек была больше 0,5, в группе должно быть всего 23 человека. Этот результат кажется удивительным, возможно, потому, что для каждого отдельного человека в группе вероятность того, что с его днем рождения совпадет день рождения кого-то другого в группе, достаточно мала.

Возможна следующая стратегия:

  1. Противник создает 2N/2 вариантов сообщения, каждое из которых имеет некоторый определенный см ысл. Противник подготавливает такое же количество сообщений, каждое из которых является поддельным и предназначено для замены настоящего сообщения.

  2. Два набора сообщений сравниваются в поисках пары сообщений, имеющих одинаковый хэш-код. Вероятность успеха в соответствии с "парадоксом дня рождения" больше, чем 0,5. Если соответствующая пара не найдена, то создаются дополнительные исходные и поддельные сообщения до тех пор, пока не будет найдена пара.

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

Таким образом, если используется 64-битный хэш-код, то необходимая сложность вычислений составляет порядка 232.

Атака полного перебора ключей осуществляется для нахождения неизвестного секретного сеансового ключа функции выработки КАС. Для нахождения ключа атакующий, имеющий не менее одной пары (сообщение, КАС), последовательно перебирает ключи. Так как пространство сообщений неоднозначно отображается в пространство хэш-значений, то может быть обнаружено множество подходящих значений ключей. Чтобы точно найти правильный ключ, необходимо выполнить проверку найденных ключей на большом множестве различных пар (сообщение, КАС). Как показано в [5] максимальное число попыток точного определения ключа составляет

,

где k - длина секретного ключа в битах, m - количество различных пар (сообщение, КАС). В среднем достаточноразличных пар (сообщение, КАС) чтобы точно определить секретный ключ.

Атака “встреча посередине” является модификацией атаки методом “дня рождения” и используется для хэш-функций с циклической структурой, если цикловая функция f() инвертируема по отношению к промежуточному значению x или блоку сообщения M1. Эта атака по сложности сопоставима с атакой методом “дня рождения”.

Атака с коррекцией блока используется в случае, если атакующий обладает сообщением и хочет изменить в нем один или более блоков без изменения хэш-значения. Один цикл MD5 уязвим к этой атаке: атакующий берет блок сообщения M1 (16 слов по 32 бита), оставляет 11 слов, модифицирует одно слово, и вычисляет оставшиеся 4. В результате получается блок M`1, отображающийся в то же самое хэш-значение, что и M1. Полная версия MD5 не уязвима к этой атаке.

Атака с фиксированной точкой может применяться при условии, что цикловая функция f  имеет одну или несколько фиксированных точек. Фиксированной точкой называется блок сообщения M1, для которого выполняется f(X1, M1)=X1, т.е. существует блок сообщения M1, не изменяющий промежуточный результат X1. Таким образом, в сообщение M можно добавлять или удалять блоки M1 без изменения хэш-значения. Защитой от таких атак служит вычисление длины сообщения и добавления ее в конце сообщения.

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

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

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

Таблица 1

Тип хэш-функции

Цель атаки

Идеальная стойкость

Однонаправленная хэш-функция

нахождение прообраза

нахождение 2-го прообраза

бесколлизионная хэш-функция

нахождение любой коллизии

В таблице используются следующие обозначения: l - длина хэш-значения или кода аутентификации, k - длина секретного ключа, Pm - вероятность успешной подделки сообщения.

Атака при помощи - метода Полларда.

Рассмотрим - метод Полларда вычисления коллизии для отображения конечного множества в себя.

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

Очевидно также, что коллизией здесь является пара , т.к. и. Если последовательность является чисто периодической, то коллизий она не содержит.

Входные данные алгоритма: отображение .

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

Шаг 1. Положить , выбрать случайное , вычислить и перейти к шагу 3.

Шаг 2. Положить , вычислить

.

Шаг 3. Если , то перейти к шагу 2. В противном случае перейти к шагу 4.

Шаг 4. Следующая процедура вычисляет коллизию .

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

Шаг 4.2 Если , то при коллизии нет, перейти к шагу 1, при вычислить коллизию . Алгоритм заканчивает работу. В противном случае перейти к шагу 4.3.

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

Шаг 4.4 Если , то , в противном случае . Перейти к шагу 4.2.

Докажем, что процедура в шаге 4 действительно вычисляет коллизию , если . Это легко следует из леммы.

Лемма 7. Пусть - первый такой номер, что . Тогда

  1. , число кратно периоду ;

  2. при выполняется , где ;

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

Доказательство. Из равенства следует, что число кратно периоду последовательности и . С другой стороны, существует единственное число такое, что . Отсюда , т.к. - первый такой номер, что . Заметим, что тогда и только тогда, когда лежит на периоде. Это выполняется тогда и только тогда, когда . Доказательство 2) очевидно. Лемма доказана.

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

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

при . Значит

.

Заметим, что есть такое максимальное число, что попарно различны. Отсюда

.

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

Замечание. Очевидно, что алгоритм не всегда сможет построить коллизию. Это так, когда - подстановочное преобразование множества . Тогда коллизий просто нет.

Применение

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

такую, что - сообщение, которое косметически отличается от сообщения при всех . Например, -ый бит в соответствует -ому слову в сообщении . Тогда значение этого бита соответствует числу пробелов (1 или 2) после соответствующего слова. Очевидно, что для достаточно длинного сообщения это может быть сделано. На самом деле примерно то же можно сделать для сообщения произвольной разумной длины. Далее предположим, что множество можно разбить на два подмножества

,

со свойствами

  1. легко проверить принадлежность , .

Определим преобразование равенствами

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

.

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