Рейтинг:2

Понимание коллизий хэшей — почему плохо?

флаг cn

Я прочитал несколько ответов на вопрос: почему хеш-коллизии так опасны? Но действительно удовлетворительного ответа не получил. Предположим, что мы первые, кто обнаружил коллизию SHA256, например

sha256($§"%fa7asd8ft6sds) = sha256(889=?`/&&%"HSF)

(это не настоящее уравнение, но предположим, что оно верно).

Почему это опасно? Почему сейчас SHA256 не работает? Как мне получить больше столкновений из этого? И, возможно, более важные коллизии, такие как sha256 (отправьте мне 5€) = sha256 (отправьте мне 5000€ &%$"§"%§%...)

knaccc avatar
флаг es
Если я подпишу хэш сообщения А, то возможность найти коллизию хэшей будет означать, что вы можете заявить, что вместо этого я подписал сообщение Б, потому что они будут использовать один и тот же хэш.
kelalaka avatar
флаг in
Отвечает ли это на ваш вопрос? [Каковы другие хорошие примеры атак, использующих коллизию хешей?](https://crypto.stackexchange.com/questions/87104/what-are-other-good-attack-examples-that-use-the-hash-collision )
Рейтинг:4
флаг in

Во-первых, коллизии криптографических хэшей не обнаруживаются поиском или случайно. Они вычисляются, потому что по какой-то причине алгоритм хеширования не работает. Вам все равно придется создать о $2^{128}$ хеши, чтобы в конце концов найти коллизию, даже если вы берете привязку дня рождения - и помните, что вам также придется выполнять сравнение, хотя есть приемы, чтобы ускорить это.

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

Если затрагивается относительно небольшое количество внутренних состояний, то май можно исправить хеш - например, усиленный SHA-1 защищен от атаки SHAttered. Конечно, теперь, когда показано, что SHA-1 слаб, есть много причин для перехода, например. Во всяком случае, SHA-256, и я нигде не видел внедрения усиленного SHA-1.


Даже если у вас есть только два входа, генерирующих одно и то же значение хеш-функции, у вас могут возникнуть проблемы. Хэши внутри работают поблочно. Если удастся найти коллизию, то следующие блоки также будут уязвимы. Другими словами, если вы найдете $H'(B_1) = H'(B_2)$ тогда $H'(B_1 \| E) = H'(B_2 \| E)$ куда $\|$ является конкатенация. Обратите внимание, что расширение $Е$ может содержать Любые данные. Так что в этом смысле: если вы найдете одно столкновение для SHA-256, то вы обнаружили много столкновений сообщений, которые начинаются с определенного блока или блоков данных.

Для SHA-3 ситуация немного сложнее (это зависит от того, идентично ли внутреннее состояние, то есть емкость используемой губки, до или после последней операции), но в основном у вас все равно будут проблемы.


Если такие коллизии применимы к вашему протоколу, это другой вопрос. Такие схемы, как HMAC, основанные на хеш-функции, не затрагиваются вообще, поскольку не требуют защиты от коллизий от настроенной хеш-функции.

poncho avatar
флаг my
Для SHA-3 единственное внутреннее состояние, которое должно быть идентичным, — это «биты емкости»; злоумышленник может установить «биты скорости» в любом сообщении на все, что он хочет (выбрав сообщение соответствующим образом).

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

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