Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Приведем несколько методов вычисления коллизий для сжимающего отображения . Положим и будем считать, что на множестве имеется отношение линейного порядка.
Метод опробования. Входные данные алгоритма: множества и отображение . Выходные данные алгоритма: коллизия , где и , или сообщение, что коллизия не найдена.
Шаг 1. Фиксируют и натуральное число ;
Шаг 2. Выбирают случайные различные элементы и вычисляют ;
Шаг 3. Упорядочивают массив пар по второй координате. Если при некоторых , то – коллизия, алгоритм заканчивает работу.
В противном случае алгоритм заканчивает работу с сообщением, что коллизия не найдена.
Алгоритм не всегда вычисляет коллизию. Докажем, что при естественных предположениях вероятность успеха не меньше чем . Справедливы следующие утверждения.
УТВЕРЖДЕНИЕ. Предположим, что при случайном выборе , который реализован на шаге 2, значение есть случайная величина с равномерным распределением на . Тогда вероятность того, что элементы множества попарно различны, не превосходит .
ДОКАЗАТЕЛЬСТВО. Искомая вероятность равна
.
Здесь использовано известное неравенство , которое выполняется при всех действительных . Неравенство эквивалентно неравенству , которое при натуральных выполняется тогда и только тогда, когда
.
Для последнее неравенство, как легко видеть, выполнено. Утверждение доказано.
Из доказанного утверждения следует, что вероятность успешного завершения алгоритма . Оценим сложность алгоритма. Наиболее трудоемким является шаг 3, где требуется, фактически, упорядочить массив из элементов множества . Известно, что это можно осуществить за операций сравнения элементов множества . Отсюда общая сложность алгоритма может быть оценена величиной операций сравнения элементов множества . При этом объем использованной памяти есть ячеек. Представленный алгоритм основан на соображениях, связанных с так называемым «парадоксом дня рождения», который в частном случае заключается в следующем. С вероятностью среди 23 случайных людей найдутся двое, у которых совпадают число и месяц рождения. Рассмотренный метод позволяет противнику построить коллизию для хэш-функции . При этом, если он располагает правильной подписью под сообщением , то он может подделать подпись под сообщением . Однако на практике подписью для противник не располагает.
Метод, использующий косметически отличающийся документ. Опишем ситуацию, которая возникает реально. Пусть противник является секретарем Алисы. Он готовит сообщение , которое Алиса готова подписать. Одновременно противник готовит сообщение , подпись которого Алисой может привести к негативным для нее последствиям. Далее при описании алгоритма будет встречаться выражение «документ косметически отличается от документа ». Это означает, что и имеют только внешние отличия, которые не влияют на содержание. Например, различное число пробелов между словами, некоторые слова переставлены или заменены синонимами и т.д.
Входные данные алгоритма. Отображение и сообщения . Выходные данные алгоритма. Коллизия, т.е. пара документов , которые косметически отличаются от соответственно и , или сообщение, что коллизия не найдена.
Шаг 1. Зафиксируют и натуральные числа , для которых .
Шаг 2. Готовят различных вариантов документа , которые косметически отличаются от . Готовят вариантов документа , которые косметически отличаются от .
Шаг 3. Вычисляют и . Упорядочивают массив пар , где , по второй координате. Если , то и , алгоритм заканчивает работу. В противном случае алгоритм заканчивает работу с сообщением, что коллизия не найдена.
Если противник реализовал этот алгоритм и вычислил то документ представляется на подпись. Алиса подписывает с помощью своего секретного ключа , т.е. вычисляет и формирует подписанное сообщение . Тогда противник формирует подписанное сообщение , которое Алиса не подписывала. Известно, что при естественных предположениях вероятность успешного завершения алгоритма не меньше . При этом сложность вычислений и объем использованной памяти такие же, как и в предыдущем алгоритме.
Пусть r=s=n. Вычислим вероятность p того, что имеется пара сообщений , таких, что .
Сначала вычислим вероятность противоположного события, то есть, что такой пары нет.
1 – p = = = .
Условия, налагаемые на n, при которых данная вероятность мала, приводятся в следующей теореме.
ТЕОРЕМА. Пусть N, n ® ¥, но ® t >0, тогда
р = (1 – e ) (1 + o(1)).
ДОКАЗАТЕЛЬСТВО.Используя формулу Стирлинга, имеем
1 – p = = =
= .
Используя разложение логарифма в ряд, получаем
ln(1- p) = [(2N-2n)ln(1- ) – (N-n)ln(1- )](1+ o(1)) =
= [(2N-2n)(– – + O()) – (N-n)(– - +
+ O()](1+o(1)) = – (1+o(1)) = -t (1+o(1)).
Таким образом,
1 – р = e (1 + o(1)),
и
р = (1 – e ) (1 + o(1)),
-метод Полларда вычисления коллизии. Рассмотрим -метод Полларда вычисления коллизии для отображения конечного множества в себя.
Идея этого метода заключается в построении последовательности элементов множества по правилу при случайном начальном . Так как множество конечно, то эта последовательность состоит из подхода и цикла , где . Ведь в последовательности должны быть повторения. Пусть , где ,- минимальные индексы, для которых . Тогда, очевидно, и .
Очевидно, что коллизией здесь является пара , т.к. и . Если последовательность является чисто периодической, то коллизий она не содержит.
Входные данные алгоритма. Отображение . Выходные данные алгоритма. Коллизия для .
Шаг 1. Полагают , выбрают случайное , вычисляют и переходят к шагу 3.
Шаг 2. Полагают , вычисляют
.
Шаг 3. Если , то переходят к шагу 2. В противном случае переходят к шагу 4.
Шаг 4. Следующая процедура вычисляет коллизию .
Шаг 4.1. Полагают .
Шаг 4.2. Если , то при коллизии нет, переходят к шагу 1, при вычисляют коллизию . Алгоритм заканчивает работу. В противном случае переходят к шагу 4.3.
Шаг 4.3. Полагают .
Шаг 4.4. Если , то , в противном случае . Переходят к шагу 4.2.
Доказано:
· процедура в шаге 4 действительно вычисляет коллизию , если ;
· с вероятностью справедлива оценка ;
· с вероятностью сложность алгоритма равна ;
· объем использованной памяти равен ячеек.
Очевидно, что алгоритм не всегда сможет построить коллизию. Это так, когда – подстановочное преобразование множества . Тогда коллизий нет.
Эффективный способ распараллеливания -метода Полларда. Укажем значительно более эффективный способ распараллеливания -метода Полларда. Предположим, что для каждого , можно определить , которое обладает следующими свойствами:
1) легко определить принадлежность: ;
2) , то есть вероятность попадания в случайного элемента из равна .
Пусть имеется процессоров, которые работают параллельно, и один центральный процессор (ЦП). Идею алгоритма легко понять из рисунка.
Процессор с номером , вычисляет последовательность по правилу при случайном начальном до тех пор, пока элемент не попадет в . В память ЦП записывают . Набрав достаточно много таких троек, ЦП сортировкой находит и , для которых . Пусть не является элементом последовательности, вычисленной -ым процессором или не является элементом последовательности, вычисленной -ым процессором. Если, напротив, это имеет место, то говорят, что произошел «Робин Гуд». Из рисунка хорошо видно, что если «Робин Гуд» не имел места, то эта последовательность содержит коллизию . Легко понять, что вероятность «Робин Гуда» очень мала, и ею можно пренебречь. Параметр выбирается таким образом, чтобы минимизировать сложность вычислений.
Формальное описание алгоритма. Входные данные алгоритма: преобразование , где . Выходные данные алгоритма: коллизия для или сообщение, что коллизия не найдена.
Шаг 1. Выбирают , , и . Пусть . Определяют множество .
Шаг 2. -ый процессор выбирает случайное , полагает .
Шаг 3. Если , то в память ЦП записывается , переходят к шагу 2. В противном случае и , переходят к шагу 3.
Шаг 4. Когда число шагов (число членов последовательности), выполненных каждым процессором, окажется , ЦП сортирует массив троек по третьей координате. Если для элементов массива троек , , то переходят к шагу 5.
В противном случае алгоритм заканчивает работу с сообщением, что коллизия не найдена.
Шаг 5. ЦП строит коллизию с помощью следующей процедуры.
Шаг 5.1. Полагают .
Шаг 5.2. Полагают , вычисляют .
Шаг 5.3. Если , то переходят к шагу 5.2. Если и , то алгоритм заканчивает работу с сообщением, что коллизия не найдена, или шаг 5 повторяется для другой пары троек, найденной на шаге 4. Если и , то вычисляют . Это коллизия для . Алгоритм заканчивает работу.
Доказано:
сложность алгоритма равна операций;
объем использованной памяти равен ячеек.
Глава 48.
Дата публикования: 2015-02-22; Прочитано: 574 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!