![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Приведем несколько методов вычисления коллизий для сжимающего отображения . Положим
и будем считать, что на множестве
имеется отношение линейного порядка.
Метод опробования. Входные данные алгоритма: множества и отображение
. Выходные данные алгоритма: коллизия
, где
и
, или сообщение, что коллизия не найдена.
Шаг 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; Прочитано: 597 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!