Это возможно в ограниченном смысле:
Не криптографически безопасные хэши
Это можно сделать с помощью небезопасных хэшей, таких как семейство контрольных сумм CRC.
Маклин gzip
Куайн
Caspian Maclean создал gzip
квину , которая распаковывается сама. Поскольку формат Gzip включает контрольную сумму CRC-32 (см. Спецификацию здесь) несжатых данных, а несжатые данные равны самому файлу, этот файл содержит собственный хэш. Так что это возможно, но Маклин не указывает алгоритм, который он использовал для его генерации:
Это довольно просто в теории, но вспомогательные программы, которые я использовал, были на жестком диске, который вышел из строя, и я еще не настроил новую работающую систему Linux для их запуска. В частности, ручная проверка контрольной суммы была бы очень утомительной.
Кокса gzip
, tar.gz
и почтовых квин
Russ Cox создал еще 3 квин в форматах Gzip, tar.gz
и ZIP и подробно описал, как он их создал, в отличной статье. В статье рассказывается, как он ввел контрольную сумму: грубая сила -
Вторым препятствием является то, что zip-архивы (и файлы gzip) записывают контрольную сумму CRC32 несжатых данных. Поскольку несжатые данные являются zip-архивом, данные контрольной суммы включают саму контрольную сумму. Поэтому нам нужно найти значение x, такое, что запись x в поле контрольной суммы приводит к тому, что файл становится контрольной суммой x. Рекурсия наносит ответный удар.
Вычисление контрольной суммы CRC32 интерпретирует весь файл как большое число и вычисляет остаток, когда вы делите это число на определенную константу, используя определенный тип деления. Мы могли бы приложить усилия для настройки соответствующих уравнений и решения для x . Но, честно говоря, сегодня мы уже решили одну неприятную рекурсивную головоломку, и этого достаточно. Для x существует всего четыре миллиарда возможностей: мы можем написать программу, которая будет пробовать каждую по очереди, пока она не найдет работающую.
Он также предоставляет код, который сгенерировал файлы .
(См. Также Zip-файл, который содержит только себя? )
Криптографически защищенные дайджесты
С криптографически безопасной хеш-функцией это не может быть возможным без нарушения хеш-функции (в частности, безопасный дайджест должен сделать «невозможным создание сообщения с заданным хешем») или применения грубой силы .
Но эти хеши намного длиннее 32 бит, именно для того, чтобы сдерживать такого рода атаки. Таким образом, вы можете написать алгоритм грубой силы, чтобы сделать это, но , если вам не повезет , вы не должны ожидать, что он закончится до конца вселенной.
MD5 сломан, так что может быть проще
Алгоритм MD5 серьезно нарушен, и атака коллизии с выбранным префиксом уже практична (как используется в поддельном сертификате вредоносной программы Flame; см. http://www.cwi.nl/news/2012/cwi-cryptanalist-discovers-new-cryptographic-attack-variant-in-flame-spy-malware, http://arstechnica.com/security/2012/06/flame-crypto-breakthrough/). Я не знаю, что Вы хотите, чтобы это было действительно сделано, но есть большая вероятность, что это возможно. Это, вероятно, открытый вопрос исследования.
Например, это можно сделать с помощью атаки с префиксом с выбранным префиксом, выбрав префикс, равный требуемому хешу, чтобы хеш был внедрен в файл.
Атака прообразом более сложна, чем коллизионные атаки, но в этом направлении был достигнут определенный прогресс. См. Указывает ли какое-либо опубликованное исследование, что атаки с прообразом на MD5 неизбежны? .
Также возможно найти фиксированную точку для MD5 ; вставка дайджеста по сути та же проблема. Для обсуждения см. md5sum файл, содержащий саму сумму? .
Похожие вопросы: