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

15920
Fahad Uddin

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

0
MD5 имеет 2 ^ 128 возможных значений (обычно представлены в виде шестнадцатеричной строки из 32 символов). При заданном наборе символов около 26 (`az`) +26 (` AZ`) +10 (`0-9`) +32 (` [] {} ;: '"\ |, <.> /? ~! @ £ $% ^ & * () -_ = + `) допустимые символы для паролей, просто достаточно возможных значений для паролей до 19 символов без коллизий. Daniel Beck 12 лет назад 0
@DanielBeck: Вы были бы правы, если бы MD5 был идеальным хэшем. У него много проблем с безопасностью - http://en.wikipedia.org/wiki/MD5#Security. Было бы рекомендовано использовать семейство SHA2. SHA-3, когда он будет выбран. Maciej Piechotka 12 лет назад 0
@MaciejPiechotka я знаю. Суть, которую я пытался подчеркнуть, заключалась в том, что невозможно «расшифровать» данные, «зашифрованные» с ним, точно так же, как вы не сможете восстановить усеченный файл на основе оставшихся данных. Daniel Beck 12 лет назад 0
@DanielBeck: я предположил, что это было больше о безопасности хеширования, и человек, спрашивающий, не знает, что такое хеш. В таком случае может быть полезно объяснить не только теорию односторонних функций, но также и проблемы безопасности в хэш-алгоритме, который он явно упомянул (что-то вроде «невозможно расшифровать», но можно сгенерировать пароль, который будет работать от MD5 "). Maciej Piechotka 12 лет назад 0
@MaciejPiechotka Действительно. Вредоносная программа, известная как Flame, использовала ранее неизвестную атаку на префиксы, выбранную MD5, для подделки сертификатов для подписи кода Windows. MD5 слаб и становится слабее каждый день: http://www.pcworld.com/businesscenter/article/257236/flames_windows_update_hack_required_worldclass_cryptanalysis_researchers_say.html Fran 12 лет назад 0

5 ответов на вопрос

9
Rich Homolka

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

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

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

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

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

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

6
EBGreen

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

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

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

Хотя это может теоретически ответить на вопрос, [было бы предпочтительнее] (http://meta.stackexchange.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки. Mark Henderson 12 лет назад 1
Это правда. Вот почему я сделал это вики-сообществом. У меня не было времени, чтобы написать полный ответ, поэтому я давал не красивый ответ, пока кто-то, у которого было время, чтобы сделать что-то лучшее, не мог бродить. Так как это вики сообщества, им было предложено улучшить этот ответ вместо публикации другого. EBGreen 12 лет назад 0
3
Shadok

Этого поста по 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 -когда-используя-pkbdf2-sha256

1
Jepes

You can't recover your password if you save the password in md5 hash.. The site that have recovery password module, they save the password in plain.

You can try http://md5pass.com to recover your md5 password

1
Ryoku

Certainly not decrypt it, as it has been stated constantly. However, there are by now quite a few papers talking about forcing md5 collisions. This basically means that because the hash is generated by a random set of "equations" applied to every bit of the information you're hashing (Remember you can hash anything from a password to a file or several) then you are also able to find another string of undefined length that will create the same hash.

Here is a link to one of the first (and I think one of the best) research papers on the topic. [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&ei=6OtQUZaQH8Si2QXhwoGYBA&usg=AFQjCNH3JEEhxpuNqY2N4x9lmHuuGIZvuQ

Похожие вопросы