для рассмотрения возьмем md5 хеш. у меня возник такой вопрос. возможно ли совпадение хешей? ведь всего 32 символа. я считаю, что возможно. следует ли из этого, что будет несколько паролей на 1 хеш? и вероятно они будут подходить? или же на хеширование есть ограничения?
такое есть и бывает http://ru.wikipedia.org/wiki/Коллизия_хэш-функции интересная статья но в некоторых случаях используют дополнительные параметры: длина пароля и производные от пароля данные
ссыль по теме (интересная статья про поиск коллизий) http://www.nestor.minsk.by/sr/2005/04/sr50416.html ЗЫ на сайте проекта, есть прога которая их вроде как даже находит...
просто интересно - как будет выглядеть коллизия от пароля qwerty например... если коллизии находить реально, то может проще находить их, а не пароль если конечно это не будет набор из анреального кол-ва символов.....
поиск MD 5 коллизий? семечки для ноутбука! Читаем: http://www.nestor.minsk.by/sr/2005/04/sr50416.html
Этому исследованию больше двух лет... Оно не раскрывает никаких методов поиска коллизии, даже примеров не приводится. Коллизия возможна только теоретически при немалом количестве сопутствующих условий... На практике я ни разу не видел примера "живой" коллизии. Более того, зачастую, при возникновении коллизии, найденный пароль по своей длине превосходит оригинальный... В общем как метод подбора пароля использование коллизий нереально.
Непойму как вы отличаете "реальный пароль" от "коллизии" Если мы нашли строку, МД5 хеш которой равен хешу который мы брутили, это НЕ значит что мы нашли ТОТ ПАРОЛЬ который ввел юзер. При бруте мы всегда ищем "коллизию", так как нет возможности сказать этот был введен пароль или нет. (Хотя тут есть одно но.... допустим при вводе пароля есть ограничение на его длинну или набор символов, вот тогда можно доказать что при такой области определения паролей невозможно нахождение коллизии в этой же области определения и мы можем точно сказать что нашли именно тот пароль который ввел юзер). Например. Юзер ввел какой то мегасложный пароль вида Hyk…*(&234Hkjig&*(__*%54, скрипт вычислил хеш от этого пароля и записал его в базу. Мы достали этот хеш и поставили брутить, через 5 секунд брутер нам выдал „Пароль – 12345”. Т.е. мы нашли ту строку (12345) которая позволит пройти проверку. При этом мы совершенно ничего не знаем о „реальном пароле”. Для мд5 все равно что мы введем 12345 или „Какой то набор символов” хеш на выходе будет один и тот же. Т.е. коллизия это не какая-то хитрая строка которая дает нужный нам хеш..... Коллизия это СИТУАЦИЯ когда мы находим НЕСКОЛЬКО РАЗНЫХ строк, которые дают нам один и тот же хеш. Поэтому некоректно говорить что поиск „коллизии” (в смысле поиск некой хитрой строчки) сложнее/легче поиска „реального пароля”. Пароль знает только тот кто его ввел, а все что мы сбрутили это уже строка которая дает тот же хеш. Когда говорят про поиск коллизии имеют ввиду поиск именно ситуации где МД5(PASS1) = МД5(PASS2) А коллизии (ситуации) должны существовать по определению алгоритма мд5. Ведь входных данных бесконечное множество, а выходных конечное. Это значит что всегда найдется несколько разных входных данных которые дадут один и тот же хеш.
насколько я знаю алгоритм нахождения коллизий мд5 найден и занимает несколько часов. любой хэш с ограниченным кол-вом символов имеет коллизии, не только мд5