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