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

5 ответов5

9

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

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

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

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

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

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

6

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

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

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

3

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

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

  • «md5_mixalpha-цифровой-все-пространство # 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

1

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

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

1

Конечно, не расшифровать его, как это было заявлено постоянно. Тем не менее, к настоящему времени довольно много газет говорят о форсировании столкновений 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%2Fviewload % 3Fdoi% 3D10.1.1.175.4122% 26rep% 3Drep1% 26type% 3Dpdf & е = 6OtQUZaQH8Si2QXhwoGYBA & USG = AFQjCNH3JEEhxpuNqY2N4x9lmHuuGIZvuQ

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .