Comments 4
- Устойчивость к атаке нахождения второго прообраза (или second preimage resistance) — это означает, что, имея одно сообщение и его хеш, должно быть очень сложно или практически невозможно найти другое сообщение, которое даст тот же самый хеш.
- Устойчивость к коллизиям все просто - это означает, что хеш-функция должна быть устойчива к коллизиям! То есть должно быть крайне сложно найти две различные входные строки, которые дают одинаковое хеш-значение. Это важно для предотвращения подмены данных.
а это не одно и то же?
Атака нахождения второго прообраза фокусируется на том, чтобы найти сообщение, которое даёт тот же хеш, что и уже известное сообщение.
При коллизии же, если как намеренную атаку ее представлять - атакующий пытается найти любые два разных сообщения, которые дают одинаковый хеш, но у него нет конкретного сообщения заранее
Устойчивость к коллизиям
И вот тут хорошо бы сказать, что для любых хешей есть теоретические пределы такой стойкости, равно как и стойкости к подбору прообразов. А именно, для коллизий это O(2^(n/2)), для подбора прообразов -- O(2^n). Если хеш даёт 256 бит, то надо 2^256 попыток для подбора прообраза и 2^128 попыток подбора коллизии, т.е. 2 разных сообщений с одинаковым хешем. А вот у MD5 стойкости к коллизиям нет -- там кажется за доли секунды можно сгенерировать коллизию. Для SHA1 в известной статье сгенерировали коллизию за примерно полсотни тысяч долларов (по расценкам амазона в момент написания статьи). Для SHA2/3 информации о подобной нестойкости нет.
> в общем, SHA-2 обычно быстрее, чем SHA-3, особенно в программной реализации
А особенно в аппаратной реализации, обычно ровно наоборот.
HMAC-SHA256 и Telegram Mini App