Я прочитала эту статью о GetHashCode().
В нем говорится о том, как рандомизация хэш-функции может помочь предотвратить атаки с переполнением хэша.
Стивен Тауб также сказал в комментарии , что причина использования случайной хэш-функции заключается в следующем:
Безопасность, предотвращение DoS-атак и т. д.
Я изо всех сил пытаюсь понять, почему это так.
Согласно документации для UseRandomizedStringHashAlgorithm:
Среда CLR вычисляет хеш-коды для строк на каждом основе домена приложения. Идентичные строки в разных приложениях домены и в разных процессах будут иметь разные хэш-коды.
Если одна и та же хэш-функция используется во время работы приложения, не означает ли это, что злоумышленники могут обнаружить коллизии и использовать их для проведения атаки с переливом хэша?
Или я неправильно понял, что означает «для каждого домена приложения»? Используется ли один домен приложения во время работы веб-службы ASP.NET?





Из вики по Атаки с использованием хеш-флуда:
Чтобы выполнить такую атаку, злоумышленник отправляет на сервер несколько фрагменты данных, которые хешируют одно и то же значение, а затем пытаются получить сервер для выполнения медленного поиска.
Вкратце: создание уникального хеш-кода для каждого домена выполнения/приложения предотвращает это, поскольку злоумышленник не сможет заранее предсказать хэш-коды.
@DavidKlempfner Да, но важно то, что он отличается от того, что на машине злоумышленника, поэтому у него нет возможности предсказать это.
Согласно stackoverflow.com/a/574711/2063755, домен приложения означает «программу». Если у вас есть веб-служба ASP.NET, которая работает в течение двух недель, не означает ли это, что хеш-функция оставалась прежней в течение этих двух недель?