В криптографии хэши часто используются в качестве заполнителей исходного сообщения; используя хэш, мы эффективно используем исходное сообщение. Например, при подписании длинного сообщения мы хэшируем длинное сообщение, а затем запускаем алгоритм подписи на хэше; если мы предположим, что алгоритм подписи является надежным (и поэтому только сообщение, которое генерирует этот хеш, будет подтверждено), и мы предполагаем, что трудно найти второе сообщение, которое генерирует тот же самый хэш (так что это должно быть то исходное сообщение, которое был подписан), то вся система сильна.
Таким образом, мы обычно не рассматриваем «утечку информации», когда говорим о хеш-функциях; то есть, как правило, нас не беспокоит, не приведет ли изучение хэш-вывода к утечке информации об исходном сообщении. Вместо этого нас беспокоит сложность поиска сообщения, которое генерирует этот хэш (либо устойчивость к прообразу, устойчивость к второму прообразу, либо устойчивость к коллизиям), потому что это напрямую связано с предположениями о безопасности, которые нам обычно требуются от хеш-функций.
Тем не менее, если кто-то обнаружит утечку в (скажем) SHA3, например, изучив хэш, мы сможем определить длину сообщения, ну, это будет довольно тревожно (и мы, вероятно, начнем осуждать SHA3). ); мы иногда хотим рассматривать наши хеш-функции как случайный оракул, и это будет означать, что он не действует как таковой [1]. Однако вероятность такой утечки представляется маловероятной.
[1]: Да, я знаю, что атаки с увеличением длины показывают, что SHA-2 не действует как случайный оракул; это хорошо понятно, и мы просто избегаем использования SHA-2 таким образом, где применима эта конкретная атака.