Было предпринято как минимум две успешные попытки создать GIF-изображения, отображающие собственные хэши MD5:
Хашкин от spq
Хашкин от Copyheart Rogdham
Вы можете скачать оба файла и убедиться, что md5sum
хэши равны хэшам, отображаемым на изображениях.
Они основаны на том факте, что коллизии MD5 в настоящее время легко воспроизвести, а также на том факте, что формат GIF представляет собой последовательность кадров. По сути, GIF-файлы состоят из 32 фрагментов анимационных данных. Каждый фрагмент вычисляется как мультиколлизия 16-way MD5, т. е. существует 16 различных фрагментов, которые производят один и тот же хэш, но показывают разные шестнадцатеричные цифры. Таким образом, GIF создается путем вычисления и объединения всех 32 16-сторонних коллизий, вычисления результирующего хэша файла и последующего выбора фрагментов, которые дают желаемый результат.Другими словами, гибкость формата GIF и слабость MD5 позволяют выбирать отображаемый хэш по одной цифре за раз, не влияя на хэш файла изображения.
В принципе, аналогичный результат может быть получен для любой другой хэш-функции, если легко создавать коллизии. Например, это было бы легко сделать с семейством хэшей CRC, поскольку их легко столкнуть (просто решить линейное уравнение). Однако для хеш-функций, которые в настоящее время устойчивы к коллизиям, таких как SHA-256, это невозможно с вычислительной точки зрения.
Другие форматы файлов также могут быть атакованы таким образом: например, выпуск 14 журнала PoC||GTFO показывает собственный хеш MD5 на титульной странице PDF: https://www.alchemistowl.org/pocorgtfo/pocorgtfo14.pdf. PostScript и даже формат NES ROM могут быть атакованы аналогичным образом благодаря трюкам с форматом файла; прочтите журнал для получения более подробной технической информации.