Очевидно, что если мы сравним две строки, это уязвимо для временной атаки.
Теперь мне интересно, является ли утечка времени уязвимостью, если сравнение выполняется по хешу этих двух строк?
Разве это не уязвимо для любых других видов атак? (Предположим, вы используете алгоритм хеширования, который безопасен от атаки столкновений).
Или просто, что произойдет, если кто-то сможет узнать хеш исходной строки? Можно ли этим злоупотреблять?
Вот лишь пример идеи:
user_pass = get_password_from_input();
if (memcmp(sha256(user_pass), sha256(HARD_CODED_PASS), SHA256_SIZE))
printf("Welcome!");
else
printf("Wrong Password!");