Можно ли расшифровать хеширование MD5?

Я видел видео о том, как хешировать пароли с помощью MD5 Hashing. После поиска в Google я обнаружил, что Facebook также использует схему хеширования MD5. Теперь мне было интересно узнать, сможем ли мы легко расшифровать пароль? Если это так, в чем же преимущество хеширования MD5?

5 ответов

Краткий ответ: MD5 - это способ узнать достаточно о пароле, чтобы сравнить его - уникальный отпечаток пальца - без фактического хранения пароля.

Более длинный: MD5 можно представить как генератор отпечатков пальцев. Вы берете столько бит, сколько можете, и в итоге получается 128 бит. Сумма md5 всегда будет одинаковой для любой строки. Но трудно предсказать, какой будет сумма md5 для любой заданной строки. Это не может быть полностью изменено. Вы не можете получить пароль от хэша, эта информация выброшена.

Почему MD5? Вы не хотите хранить действительный пароль. Если я могу взломать вашу БД, я получу пароли. Это небезопасно.

Так что я могу хранить хэш. При входе в систему я получаю md5sum введенного вами пароля и md5sum в БД, посмотрите, совпадают ли они. Тогда, даже если вы получите хеш, вы не сможете вернуться назад, чтобы получить пароль. У вас есть хеш, но в теории вы не можете получить пароль.

Это безопаснее, но помните, один и тот же пароль всегда будет хэшировать один и тот же md5. "Пароль" всегда будет 286755fad04869ca523320acce0dc6a4. Если я вижу 286755fad04869ca523320acce0dc6a4 в БД, я знаю, что ваш пароль - "пароль". Итак, один из методов - добавить что-то под названием "соль", немного уникальности к вашему паролю. Итак, скажем для меня, моя соль выбрана, о, Idunno, "1b24". Я добавляю это к данным md5, что дает мне c4f8469e00c67d70dfbaa91cdf948fa8. Когда я сохраняю пароль, возможно, я храню 1b24|c4f8469e00c67d70dfbaa91cdf948fa8. Затем, когда вы вводите "пароль", я вижу в БД, мне нужно добавить 1b24, и я получу совпадение.

MD5 фактически не используется для этого. Есть более новые (например, SHA1), которые лучше разбрасывают биты. Иногда вы проходите несколько раундов. Это повышает безопасность, затрудняя создание огромных списков этих отпечатков пальцев - вычисление занимает слишком много времени.

MD5 - это односторонний хэш. Это несколько раз обсуждалось при переполнении стека:

https://stackoverflow.com/questions/1240852/is-it-possible-to-decrypt-md5-hashes

https://stackoverflow.com/questions/1471654/reversing-an-md5-hash

Этого поста об IT Security @ stackexchange должно быть достаточно, чтобы вы смогли понять проблему.

Проблема заключается (смело) в двух фактах:

  • "md5_mixalpha-numeric-all-space # 1-8: 1049 ГБ" можно загрузить в качестве бесплатного торрента для всех на сайте, подобном этому , что означает более 1 ТБ различных уникальных строк, содержащих сочетание строчных и прописных букв, цифр и пробелов и длиной от одного до восьми символов.
    Если у вас есть файлы на жестком диске (используйте squashfs, ребята!), Вам просто нужно найти нужный MD5, и вы получите оригинальную строку (или даже коллизию, если вам почти не повезло), любым способом, которым у вас есть действительный пароль :)

  • Проблема с каждой простой схемой хеширования состоит в том, что два пользователя, использующие один и тот же пароль, получат один и тот же хеш, а обращение одного из них даст вам несколько учетных записей одновременно, и это только усугубит последствия первого недостатка.

Есть три решения для этого:

  • старый дерьмовый
    MD5 (пароль) или SHA128 (PASSWORD), по умолчанию прерванный, многие * NIX реализуют лучшую схему, поскольку, по крайней мере, двадцать лет, добавлять нечего.

  • MD5 (SALT + PASSWORD), где SALT уникален для каждого пользователя и хранится в открытом виде, что требует от злоумышленника генерировать радужную таблицу для каждого пароля, который он хочет взломать.
    Может сдерживать некоторые, но атака по словарю все еще может быть очень мощной, поскольку многие / большинство пользователей имеют слабые пароли.
    И имейте в виду, что теперь у нас есть решения для (относительно) дешевой аренды мощных кластеров графического процессора, даже графический процессор за 400 долларов является чудом для хэширования строк, особенно если расчеты распределены между тысячами машин.

  • "совсем не новое" и единственно приемлемые решения: bcrypt и scrypt

Пожалуйста, будьте мудрыми и примите последнее решение, по крайней мере , выберите схему PKBDF2, которую вы не будете пытаться спроектировать самостоятельно, посмотрите здесь:
https://security.stackexchange.com/questions/3959/recommended-of-iterations-when-using-pkbdf2-sha256

Вы не сможете восстановить свой пароль, если сохраните пароль в хеше md5. На сайте, где есть модуль восстановления пароля, они сохраняют пароль в обычном режиме.

Вы можете попробовать http://md5pass.com/ восстановить пароль md5

Конечно, не расшифровать его, как это было заявлено постоянно. Тем не менее, к настоящему моменту довольно много газет говорят о форсировании столкновений md5. По сути, это означает, что поскольку хеш генерируется случайным набором "уравнений", применяемых к каждому биту хешируемой информации (помните, что вы можете хешировать все, что угодно, от пароля до файла или нескольких файлов), вы также можете найти другая строка неопределенной длины, которая создаст тот же хеш.

Вот ссылка на одну из первых (и я думаю, одну из лучших) исследовательских работ по этой теме. [PDF] http://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDcQFjAB&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload % 3Fdoi% 3D10.1.1.175.4122% 26rep% 3Drep1% 26type% 3Dpdf & е = 6OtQUZaQH8Si2QXhwoGYBA & USG = AFQjCNH3JEEhxpuNqY2N4x9lmHuuGIZvuQ

Другие вопросы по тегам