Я провел некоторые предварительные исследования в области дайджестов сообщений.В частности, атаки на коллизию криптографических хеш-функций, таких как MD5 и SHA-1, таких как Пример PostScript и X.509, дубликат сертификата .
Из того, что я могу сказатьв случае атаки постскриптума, конкретные данные были сгенерированы и встроены в заголовок файла postscript (который игнорируется во время рендеринга), что привело внутреннее состояние md5 к такому состоянию, что измененная формулировка документа приведетдо окончательного значения MD, эквивалентного исходному файлу postscript.X.509 использовал аналогичный подход, когда данные вводились в разделах сертификата / комментария / пробела.
Хорошо, вот мой вопрос, и я не могу найти никого, кто бы задавал этот вопрос:
Почему длина ТОЛЬКО используемых данных не добавляется в качестве последнего блока к вычислению MD?
В случае X.509 - Почему пробел и комментарии учитываются как часть MD?
Разве простые процессы, такие как один из следующих, не будутдостаточно для устранения предложенных атак столкновений:
- MD (M + | M |) = xyz
- MD (M + | M | + | M | * magicseed_0 + ...+ | M | * magicseed_n) = xyz
где:
- M: это сообщение
- | M |: размер сообщения
- MD: функция дайджеста сообщения (например, md5, sha, гидромассажная ванна и т. д.)
- xyz: спаривание значения дайджеста текущего сообщения для сообщения M и| M |.
- magicseed_ {i}: набор случайных значений, созданных с использованием seed на основе внутреннего состояния перед добавлением размера.
Эта методика должна работать на сегодняшний деньвсе такие атаки коллизий полагаются на добавление дополнительных данных к исходному сообщению.
Короче говоря, уровень сложности, связанный с генерацией сообщения о коллизии, такой:
- Он не только генерируеттот же самый MD
- , но также приемлемый / понятный / совместимый
- и также того же размера, что и исходное сообщение,
очень сложно, если не почти невозможно.Обсуждается ли когда-либо этот подход?Любые ссылки на статьи и т. Д. Были бы хорошими.
Дальнейший вопрос : Какова нижняя граница для коллизий сообщений общей длины для хэш-функции H, выбранной случайным образом из U, где U - этонабор универсальных хеш-функций?
Это 1 / N (где N 2 ^ (| M |)) или больше?Если оно больше, это означает, что имеется более 1 сообщения длиной N, которое будет отображаться в одно и то же значение MD для данного значения H.
Если это так, то насколько практично найти эти другие сообщения?bruteforce будет иметь значение O (2 ^ N), есть ли метод временной сложности, меньший, чем bruteforce?