Dec 01, 2008 20:09
Для чего применяется хэш-функция - понятно, её свойство однонаправленности - очевидно.
Самая распространённая атака на хэш-функции - подбор любого x1 по известному H(x) такого, чтобы выполнялось H(x1)=H(x).
А если мы возьмём две сильные хэш-функции с принципиально разным алгоритмом? Т.е. для x будем хранить и передавать в целях аутентификации как H1(x), так и H2(x). Разве в таком случае мы не защищаемся от потенциально возможного появления алгоритма подбора x1 с указанными выше свойствами?
Разумеется, я о случае, когда мы можем вычислить какое-нибудь значение x1. В случае, когда мы можем генерировать все такие x[n] в последовательности увеличения их длины, нас уже ничего не спасёт. Вероятность нахождения уязвимости, конечно, увеличивается вдвое, но...
Или ещё вариант: использовать одну хэш-функцию для аутентификации, а результат второй как составляющую часть инициализирующей последовательности для блочного шифра.
Я где-то не прав?
P. S. Я видел, когда вместе с файлами выкладывали результаты нескольких хэш-функций, но ни разу не видел подобную схему, используемую для аутентификации. При этом в случае с файлами они служат как правило для проверки целостности, ибо для открытого соединения нам никто не мешает подменить как саму страницу, так и файл.
UPDATE: Да, если злоумышленник знает результат двух хэш-функций, то криптостойкость снижается. Вопрос в том, что перевешивает - плюсы или минусы.
UPDATE2: Да, чушь написал. Если мы берём две функции, то никто не помешает написать третью, которая была бы конкатенацией результатов или же их xor'ом. Раз этого никто не сделал, то не было смысла.
Вообще, решением озвученной проблемы в какой-то мере является H (login + H (password)). Ну и про digest-авторизацию полезно почитать.
интернет,
информационная безопасность,
наука,
криптография