компьютеры

Не все хеши одинаково полезны

Для тех, кто не знает -- пароли во всех современных системах хранятся в зашифрованном виде. Даже если ты украдёшь /etc/master.passwd (если речь про православный BSD) или /etc/shadow (если речь про богомерзкий красноглазый линупс) -- тебя это ничего не даст.

Ну, почти не даст. Заполучив пароль в шифрованном виде, его можно сломать, не боясь того, что система тебя отследит, забанит, и так далее. Проблема в том, что паролей может быть очень много. Для 6-значного пароля, включающего цифры и буквы как верхнего, так и нижнего регистров, количество возможных паролей составляет 56 миллиардов (это очень мало, на самом деле, хотя кажется много).

Перебрать все комбинации несложно. Это вычислительно архидёшево. А вот генерирование хешей из этих комбинаций -- вот это уже вычислительно дорогая операция.

Хорошая новость заключается в том, что эта операция хорошо распаралеливается. Дал блок комбинаций одному процессу, другой блок -- другому, и вперёд. Кто первый получит искомый хеш -- тот и выиграл.

Так что на современных компьютерах с многоядерными процессорами пароли можно перебирать очень быстро.

Но есть отдельно маньякнутые маньяки, которые используют для вычисления хешей видеокарту. Благо, процессоров на ней -- несколько тысяч (на современных, мощных). Это, правда, очень тупые и медленные процессоры, но зато их МНОГО.

Рекомендую программу oclHashCat. Она умеет именно это. При этом она бесплатна и есть под никсы. На выходных от души с ней поигрался.

Выяснилось очень интересное. Алгоритмов хеширования паролей достаточно много. Линупсы используют солёный MD5. Винда использует NTLM (ЕМНИП, по сути это MD4). Веб-системы -- тут уже кто во что горазд. Часто -- до сих пор MD5. Хотя многие уже перешли на SHA.

Так вот хеширование, в зависимости от алгоритма, занимает очень разное время. Быстрее всего подбирается пароль от Windows (это серьёзно удивило). 6-значный я подбираю всего за 3-5 секунд!! Домашний компьютер (у меня там стоит не самая плохая видеокарта) фигарит 5 миллиардов паролей в секунду!

MD5 хеши уже идут хуже -- 3.5 миллиарда паролей в секунду.

Существенно медленнее (в 10 раз) идёт подбор паролей, хешированных SHA256.

Но медленнее всего шло ломание паролей от WordPress. Он использует библиотеку phpass, что есть опенсорсный bcrypt. Ломание этого пароля шло в 26 000 (двадцать шесть тысяч, Карл!) раз медленнее, чем ломание виндового NTLM. 200 тысяч паролей в секунду -- это был максимум, на который был способен мой домашний компьютер.

Кстати, что отдельно смешно. Пароли от профурсетского сайта Эшли Мэдисон были хешированы именно bcrypt. Только это был херовый bcrypt :) Они его настроили так, что алгоритм был существенно ослаблен. Подробности тут:

http://arstechnica.com/security/2015/09/once-seen-as-bulletproof-11-million-ashley-madison-passwords-already-cracked