Шифрование в MD5 больше не безопасно: интерактивный тест на реальный взлом вашего пароля

«Все пароли нужно хранить, предварительно захэшировав их в MD5» — классика любой статьи по информационной безопасности. Но, к сожалению, в 2016 она давно потеряла свою актуальность, и всё уже не так просто. Вас не спасет md5('пароль')
, md5(md5('пароль'))
и даже md5(md5(md5('пароль')))
.
Так называемые радужные таблицы — инструмент для взлома хэшэй, который сегодня доступен любому, кто вобьет это слово в Google. Храня сопоставление исходной строки и её хэша, они позволяют легко обратить любую «необратимую» хэш-функцию.
Современные радужные таблицы хранят каждое слово, когда-либо встречавшееся на форумах, в Википедии и интернете в принципе, а также все его формы.
Тест: есть ли ваш пароль в радужных таблицах?
Эта интерактивная форма позволяет узнать, есть ли ваш пароль в популярных радужных таблицах: введите его MD5-хэш и нажмите Enter. Если нам удалось обнаружить ваш пароль, то для защиты от радужных таблиц вам обязательно стоит сменить его — ведь не все веб-сайты «солят» пароли своих пользователей.
Для чистоты эксперимента мы предлагаем вам воспользоваться любым сторонним генератором MD5, например, md5.cz. Обратите внимание: в форму ниже нужно вставлять MD5-хеш вашего пароля, а не сам пароль.
Как защититься?
Хорошим способом защититься будет использование соли при хэшировании — это когда к исходному паролю добавляется рандомная строка.
Простой пример на PHP:
В данном примере соль является статической строкой, в реальных проектах следует применять только динамическую (то есть каждый раз новую) соль.
Более правильный пример с использованием STL языка PHP:
Но на самом деле подумайте о том, что в 2012 году Пол-Хеннинг Кэмп, один из разработчиков FreeBSD, призвал полностью отказаться от созданного им алгоритма md5crypt, как не обеспечивающего в современных условиях ощутимого увеличения времени вычисления хэша, а значит, и не защищающего от полного перебора.