Ранее в этом году на хакерском форуме были опубликованы хеш-суммы около 6,5 млн паролей к учётным записям LinkedIn. Хеш-суммы представляли собой простые SHA1-дайджесты пользовательских паролей в том виде, в каком они хранятся в базе данных LinkedIn.
Хакеры тут же стали пробовать взломать эти пароли; более половины всех паролей оказались взломаны практически сразу.
Существует две основных причины, по которым пароли оказались так быстро взломаны:
- * использование самой функции SHA1
- * использование быстрых графических процессоров.
Рассмотрим обе причины.
Функция SHA1 была в первую очередь разработана как замена более слабого криптографического алгоритма MD5. На графической карте AMD / ATI 7970 “hashcat” (см. https://hashcat.net/oclhashcat-plus/) считает чуть более двух миллиардов SHA1-хешей в секунду. Это означает, что за очень короткое время можно протестировать множество комбинаций.
Для решения этой проблемы существуют современные, более безопасные алгоритмы, такие как функция sha512crypt, использованная в Ubuntu и последних версиях Fedora Core Linux. При использовании этой функции на той же графической карте можно взломать вместо 2 млрд. хешей лишь чуть более 12000 sha512crypt-комбинаций в секунду. Например, перебор миллиарда sha512crypt-комбинаций займёт около 24 часов; при этом перебор того же количества SHA1-комбинаций займёт менее секунды.
Учитывая вычислительные мощности современных графических карт, можно посоветовать выбирать пароли посложнее, которые:
* содержат как прописные, так и строчные символы
* содержат хотя бы один знак пробела
* содержат цифры
* содержат несколько символов, таких как !@#
* не основываются на известном слове
* состоят не менее чем из 12 символов; чем длиннее, тем лучше
Среди моих знакомых, многие используют парольные фразы длиной от 20 до 50 символов. В таком случае, ваш пароль, вероятнее всего, останется невзломанным, даже если его хеш-сумма подвергнется утечке.
Представьте себе, насколько я был удивлён, когда попытался войти в старый почтовый ящик Hotmail и получил следующее сообщение:
Пароли к учётным записям Microsoft могут содержать до 16 символов.
Если вы ранее использовали пароль длиной более 16 символов,
введите первые 16 символов.
Мой пароль до этого содержал около 30 символов; теперь он не работает. Однако, я смог залогиниться, введя первые 16 символов.
Это ограничение широко известно (смотри замечательный пост Грэма Клули об ограничениях на длину пароля в различных сервисах); однако мне бросилось в глаза то, что теперь можно залогиниться, введя лишь 16 символов моего прошлого пароля.
Чтобы этот трюк работал со старыми паролями, у Microsoft было две возможности:
* либо хранить полные незашифрованные пароли у себя в базе и сравнивать лишь первые 16 символов;
* либо считать хеш-сумму только первых 16 символов, а остальные игнорировать.
Хранение незашифрованных паролей к онлайн-сервисам — это однозначное табу с позиций безопасности. Остаётся второй вариант; и получается, что со времени введения этой практики Hotmail втихаря использовал только первые 16 символов паролей пользователей.
Если честно, мне сложно определиться, какой вариант хуже.
PS. Мой учитель мне говорил: думайте в позитивном ключе, по возможности заканчивайте на оптимистичной ноте. Так что вот: «спасибо Google за Gmail».
Ваш пароль был слишком длинным, так что мы его поправили