Атака+«дней+рождения»

=Атака «дней рождения»=

В [|криптографии]  под **атакой «дней рождения» ** понимают метод взлома [|шифров]  или поиска [|коллизий] [|хеш-функций]  на основе [|парадокса дней рождения] .

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

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

 Примеры
Предположим, что для атаки на 64-битный блочный шифр злоумышленнику нужно получить две пары открытого/шифрованного текста, которые отличаются только в наименее значимом бите. Интерпретация этой задачи в терминах [|парадокса дней рождения] приводит к выводу, что пространство из всего лишь 232 известных открытых текстов с высокой вероятностью будет содержать необходимую пару.

<span style="background-color: #ffffff; font-family: Helvetica,Arial,Tahoma,sans-serif; font-size: 14px;">В качестве другого примера рассмотрим цикл 64-битового [|Фейстелева шифра]. Положим, что в [|шифре] использована случайная функция //F// (32 в 32 бита). Нападающий может захотеть узнать, как много ему необходимо получить открытых текстов для получения [|коллизии] функции //F//. Согласно парадоксу дней рождения, для этого придется перебрать около 216 открытых текстов.

<span style="background-color: #ffffff; font-family: Helvetica,Arial,Tahoma,sans-serif; font-size: 14px;">Одним из следствий парадокса дней рождения является то, что для //n//-битового блочного шифра, повторяемые появления блока шифротекста могут ожидаться с вероятностью около 0.63 при наличии лишь 2//n// / 2 случайных открытых текстов, зашифрованых на одном ключе (независимо от размера ключа). Для [|ECB режима] при совпадении двух блоков шифротекста, соответствующие открытые тексты обязаны также совпадать. Это означает, что в атаке с известным шифротекстом информация об открытых текстах может раскрываться из шифртекстовых блоков.

=
Предположим, что Сью и Джо собираются пожениться, но перед этим они заключают брачный контракт, в котором указано, что в случае развода Сью получит свою первоначальную собственность, а Джо – свою. Чтобы гарантировать, что контракт не изменен, используется функция хэширования и создается дайджест сообщения.=====

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

=
Алгоритм хэширования обычно создает значения хэша достаточно большого размера (значение //n//), затрудняя нахождение коллизий, но они остаются реальными. Например, алгоритм, создающий 160-битные хэши (например, SHA-1), требует перебрать порядка 2^80 вариантов сообщения для нахождения коллизии. Таким образом, существует менее одного шанса на 2^80, что кому-то удастся выполнить успешную атаку «дня рождения».=====

=
Парадокс «день рождения» показывает важность использования длинных значений хэша. Чем более длинный результат выдает алгоритм хэширования, тем меньше он уязвим к брутфорс-атаке, такой как атака «дня рождения». Именно по этой причине новая версия SHA выдает такие длинные значения дайджеста сообщения.=====

=Ссылка:= http://dic.academic.ru/dic.nsf/ruwiki/1085824 http://www.dorlov.blogspot.ru/2010/09/issp-06-5.html