Существуют ли алгоритмы для добавления дайджеста в перевариваемый файл? - PullRequest
2 голосов
/ 03 февраля 2010

Существуют ли алгоритмы для добавления дайджеста в перевариваемый файл?

Другими словами, существуют ли алгоритмы или библиотеки, или даже возможно иметь хэш / дайджест файла, содержащегося в хешируемом / перевариваемом файле. Это было бы удобно по понятным причинам, таким как встроенные дайджесты ISO. Я пробовал гуглить такие вещи, как «Инъекция MD5» и «Дайджест в файл файла». Не повезло (вероятно, по уважительной причине.)

Не уверен, возможно ли это даже математически. Кажется, вы сможете пролистать файл, но тогда вам придется использовать последний бит (если предположить, что дайджест был последним в файле или объекте).

Спасибо, Chenz

Ответы [ 3 ]

4 голосов
/ 15 сентября 2012

Это возможно в ограниченном смысле:

Не криптографически безопасные хэши

Это можно сделать с помощью небезопасных хэшей, таких как семейство контрольных сумм 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 файл, содержащий саму сумму? .

Похожие вопросы:

3 голосов
/ 03 февраля 2010

Единственный способ сделать это, если вы определяете формат файла, поэтому хеш применяется только к той части файла, которая не содержит хеш.

Однако , включая хэш внутри файла (например, встроенный в ISO), сводит на нет все преимущества безопасности хэша. Вам нужно получить хеш из другого канала и сравнить его с вашим файлом.

0 голосов
/ 03 февраля 2010

Нет, потому что это будет означать, что хеш должен быть хешем самого себя, что невозможно.

...