Можно ли восстановить пароль из (частичного) хеша MD5? - PullRequest
1 голос
/ 28 февраля 2011

Предположим, у меня есть только первые 16 символов хеша MD5. Если я использую таблицы «грубой силы» или «радуги» или любой другой метод для получения исходного пароля, сколько совместимых кандидатов я должен ожидать? 1? (Не думаю) 10, 100, 1000, 10 ^ 12? Приветствуется даже грубый ответ (для числа, но, пожалуйста, будьте последовательны с теорией и методологией хеширования).

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

Вывод MD5 составляет 16 байт (128 бит). Я предполагаю, что вы говорите о шестнадцатеричном представлении, следовательно, как 32 символов . Таким образом, «16 символов» означает «64 бита». Вы рассматриваете MD5 с его усеченным выводом до 64 бит.

MD5 принимает входные данные длиной до 2 64 бит; Предполагая, что MD5 ведет себя как случайная функция, это означает, что 2 18446744073709551616 возможные входные строки будут отображаться более или менее равномерно среди 2 64 выходов, следовательно, среднее число кандидатов для данного выхода составляет около 2 18446744073709551552 , что близко к 10 5553023288523357112.95 .

Однако, если вы считаете, что вы можете найти хотя бы одного кандидата, это означает, что пространство возможных паролей, которое вы считаете, значительно сокращается. Радужная таблица - это специальный вид предварительно вычисляемой таблицы, которая принимает компактное представление (за счет относительно дорогой процедуры поиска), но если она охватывает N паролей, то это означает, что В какой-то момент кто-то может применить хеш-функцию N раз. На практике это сильно ограничивает размер N . Предполагая, что N = 2 60 (это означает, что у разработчика таблиц было около ста графических процессоров NVidia GTX 580 и он мог запускать их в течение шести месяцев; кроме того, таблица будет использовать довольно много жесткие диски), то в среднем только 1/16 из 64-битных выходов имеют соответствующий пароль в таблице. Для тех паролей, которые есть в таблице, есть вероятность 93,75%, что в таблице нет другого пароля, который приводит к тому же выводу; если вы предпочитаете, если вы найдете соответствующий пароль, то вы найдете, в среднем, 0,0625 других кандидатов (то есть большую часть времени, другого кандидата нет).

Короче говоря, ответ на ваш вопрос зависит от размера N пространства возможных паролей, которые вы рассматриваете (те, которые были рассмотрены при создании радужного стола); но на практике при использовании технологии, основанной на Земле, если вы можете найти один соответствующий пароль для 64-битного выхода, есть вероятность, что вы не сможете найти другой (хотя их действительно много) .

1 голос
/ 28 февраля 2011

Вы никогда не сможете получить пароль из частичного хэша.

...