Рейтинг:12

Парадокс хэша в файле изображения, который содержит хэш-текст?

флаг cn

Можно ли явно включить хеш-дайджест в изображение, чтобы хэш самого изображения был тем же самым дайджестом?

Когда мы нарисуем текст хэша на изображении, мы конечно изменим хэш из изображение одновременно, потому что, как мы знаем, небольшие изменения на входе хеш-функции приводят к значительным изменениям на выходе.

Я также знаю, что хеш-функции необратимы.

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

Есть ли решение для достижения моей цели?

введите описание изображения здесь

флаг xk
Из ваших комментариев к существующему ответу: "на самом деле моя цель не в целях безопасности, а в том, чтобы убедить людей, которые догадываются, о чем говорит это изображение. Если я скажу ответ "разбитое сердце" после того, как они сдадутся, они, конечно, мне не поверят, вот почему я поместил хэш внутри изображения». Если цель состоит в том, чтобы просто взять на себя обязательство (к тексту «разбитое сердце»), почему недостаточно указать на картинке хэш-значение того, что вы обязались выполнить? Почему *само изображение* также должно хэшировать то же самое, что и то, к чему вы стремитесь?
флаг cn
Все современные алгоритмы хеширования намеренно разработаны, чтобы смягчить эту возможность. То, о чем вы просите, - это найти алгоритм хеширования, который не имеет сопротивления [атаке прообраза] (https://en.wikipedia.org/wiki/Preimage_attack). Вот почему, например, сообщение, подписанное PGP, включает весь текст сообщения *кроме* подписи. Было бы невозможно вычислить подпись, которая включает себя в текст, по крайней мере, насколько нам известно.
Joseph Sible-Reinstate Monica avatar
флаг vn
https://news.ycombinator.com/item?id=13823704
Рейтинг:13
флаг in

есть ли решение, как достичь моей цели?

Мы можем переформулировать ваш вопрос в общем виде как;

Найдите текст, внутри которого содержится его хэш. $$\text{дайджест-значение} = \operatorname{Hash}(\text{некоторая часть| дайджест-значение | какая-то другая часть)})$$

Когда вы меняете текст, значение хеша будет изменено. Это невозможно с криптографическими хеш-функциями, так как поиск выходит за рамки всего.

Что ты можешь сделать;

  • если хэш-текст действительно 16 шестнадцатеричных значений, то вы пробуете все возможные $2^{64}$ значения для соответствия. Мы можем предположить, что вы используете SHA-256, и обрезать результат. Недостатком является это; мы не знаем, что усеченный SHA-256 достигает всех значений.

    Если кто-то хэширует $2^к$ значения и обрезки до $k-бит$ тогда из-за ожидания столкновения парадоксом дня рождения мы не ожидаем появления всех значений.

    Так что это может не иметь решения для всех изображений. Это еще требует много работы.

    Если хеш-текст имеет реальный размер, то вышеописанное невозможно.

  • Использовать часть изображения, это было похоже на бумагу PUF. Экстрагировали поверхность бумаги каким-то пушистым экстрактором, затем бумагу подписывают на той части, где экстракция не производится.

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

  • Используйте многослойные изображения. Один слой содержит изображение, которое можно хешировать целиком, а верхний слой может содержать значение has.

    Пользователю может быть сложно обрабатывать слои, вместо этого вы можете использовать приемы программирования, такие как веб-страницы, можно добавить текст поверх изображения с помощью HTML и CSS.

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

Почему им не нужно хэшировать вручную, тогда какая польза от хэша? Разве злоумышленник не может просто отправить изображение с хеш-значением своего файла, чтобы пользователь просто поверил в это? Это вообще не очень хорошая практика безопасности, пусть пользователи вычисляют хэш даже проверяют цифровую подпись, что он подписан вами.

Maarten Bodewes avatar
флаг in
Комментарии не для расширенного обсуждения; этот разговор был [перемещен в чат](https://chat.stackexchange.com/rooms/133668/discussion-on-answer-by-kelalaka-hash-paradox-in-an-image-file-that-contain- хэш).
Рейтинг:9
флаг in

Было предпринято как минимум две успешные попытки создать GIF-изображения, отображающие собственные хэши MD5:

хэшкин от spq

Хашкин от spq

хэшкин от Copyheart Rogdham

Хашкин от 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 могут быть атакованы аналогичным образом благодаря трюкам с форматом файла; прочтите журнал для получения более подробной технической информации.

kelalaka avatar
флаг in
Да, для этого требуется GIF, который не применим к стандартным файлам изображений.
флаг in
Я почти уверен, что формат GIF является «стандартным файлом изображения»; он широко используется в браузерах и инструментах для работы с изображениями и очень распространен в Интернете. Да, это нельзя обобщить на все форматы - например, BMP, скорее всего, не будет работать, - но я не удивлюсь, если вы сможете заставить аналогичные методы работать не только с GIF. (Уже есть хэшкины для PDF, PS и т.д.)
kelalaka avatar
флаг in
Я должен был сказать неанимированный, что является ключом к атаке. Однако я думал, что не могу найти способ применить эту атаку. Мы должны забыть о MD5 и SHA-1. И, конечно же, добро пожаловать на [cryptography.se]
флаг in
PDF и PS не анимированы, но атака по-прежнему применима. Я не удивлюсь, если есть умный способ применить это к PNG или JPEG с очень хитрым злоупотреблением форматом.
kelalaka avatar
флаг in
Единственным недостатком на самом деле было то, что OP запрашивал конкретный хеш, а не случайный хеш, созданный с коллизиями. Вы можете увидеть это в комментариях, перемещенных в чат под моим ответом, или в последней части моего ответа, цитируемой части.
kelalaka avatar
флаг in
Всякий раз, когда формат данных допускает свободу, эта атака будет работать.
флаг ph
jpa
Это, вероятно, возможно в любом формате растрового изображения следующим образом: сгенерируйте два фрагмента 32x RGB32 пикселей, один для переднего плана и один для цвета фона. Рандомизируйте наименее чувствительные биты каждого пикселя, пока не найдете коллизию MD5 между передним планом и фоном (существуют специальные алгоритмы для ускорения этого). Соберите куски спиной к спине, чтобы получить желаемое изображение. В результате получается блочный текст с низким разрешением.
флаг in
@jpa: Это хорошая идея. Я думаю, что если у вас *много* терпения, вы могли бы использовать коллизию выбранного префикса, чтобы добиться этого немного другим способом. Выбранная коллизионная атака MD5 позволяет вам взять два произвольных разных префикса и вычислить два соответствующих блока случайных данных (примерно за 1 день), которые можно добавить, чтобы сделать хеши MD5 равными. К сожалению, это будет соответствовать ряду или двум мусора между кусками, но могут быть способы скрыть/уменьшить визуальное нарушение, например. с трюками с палитрой.
Рейтинг:4
флаг cn

Было время, когда это было возможно. Internet Explorer (ужасы) принимал файлы WMF как файлы изображений. Благодаря тому, что было задумано в формате файла, это никогда не было безопасным. Изображение может запускать произвольный код как часть рендеринга изображения. Таким образом, решение состоит в том, чтобы файл вычислял свой собственный хэш во время рендеринга и накладывал его поверх остального изображения.

https://en.wikipedia.org/wiki/Windows_Metafile_vulnerability

Я знаю, что это не тот ответ, который вы ищете, но это то, что есть. Истинный ответ для крипто-хэша будет примерно таким трудным. Алгоритмы криптохеширования разработаны таким образом, что вы не можете этого сделать, и в этом суть. Если бы вы могли сделать это со статическими данными, хэши не могли бы делать то, для чего они были созданы.

При рассмотрении достаточно работы в стиле Quine, и вы вполне можете получить постскриптум или файл PDF, который делает это. Это будет довольно беспокойно для сообщества безопасности, пока они не разберутся в этом трюке.

Рейтинг:3
флаг cn

Это один из тех случаев, когда математический ответ и ответ CS сильно различаются. Учитывая криптографически безопасный хэш:

С математической точки зрения, учитывая файл f и фиксированный способ объединения файлов и хэшей, мы должны ожидать 1/e шанса, что существует по крайней мере один хеш h, такой что хэш h в сочетании с f равен h. Если мы изменим способы объединения (поместим в абсолютный верхний левый угол, поместим в верхний правый угол, поместим в верхний левый угол, но переместим на один пиксель вправо и т. д.), вероятность быстро приблизится к 1. .

С точки зрения CS ожидаемый объем вычислений пропорционален количеству возможных выходных хэшей. Для любых хэшей приличного размера это невыполнимо большой объем вычислений. Объем необходимых вычислений будет сравним с объемом, необходимым для получения файла с хешем, равным предварительно выбранному хэшу. Если бы вы могли это сделать, люди сразу же начали бы беспокоиться, не взломали ли вы каким-то образом хэш.

флаг ru
Хороший способ убить хеш-функцию, которая вам не нравится, - создать файл изображения с хеш-частью изображения.
Рейтинг:1
флаг us

Используйте имя файла

Поскольку решетка на изображении на самом деле предназначена в качестве подсказки, вы можете просто назвать файл 3e2c5b56e34f1979.jpg

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.