Перечитав массу сопутствующей литературы и просмотрев тонну хабратопиков (ссылки на интересные приведены в конце статьи), я решил обобщить информацию об основных методах генерации надежного и запоминающегося пароля.
Начну с того, что для генерации и хранения своих паролей сам я пользуюсь замечательной программой KeePass. Ее функционала вполне хватает для всех моих скромных вебмастерских нужд. Основным ее недостатком является тот факт, что она тоже требует запоминать один главный пароль. Поэтому вся эта суета вокруг придумывания пароля также касается меня и всех счастливых обладателей программы KeePass или ее аналогов, т.к. один пароль придумать все-таки придется.
Чтобы понимать всю глубину проблемы, пару строк посвящу методике взлома. Итак, как же злоумышленник может узнать/угадать/подобрать ваш пароль?
Обобщая информацию, полученную из разных достоверных источников, я выделю основные признаки устойчивого к взлому пароля (под взломом я подразумеваю перебор по базам хешей, когда алгоритм хеширования заранее известен):
Однако, все мы люди с довольно ограниченными способностями к запоминанию несвязной информации, поэтому пароли, которые подходят под вышеописанные параметры, хоть и будут весьма стойки к взлому с одной стороны, но, с другой стороны, их очень непросто запомнить. Поэтому рассмотрим менее параноидальные варианты составления и запоминания паролей.
Проанализировав способы генерации паролей хабралюдей, я пришел к выводу, что основная методология запоминания пароля основывается на составлении логического или ассоциативного ряда. Также используются всевозможные искажения слов. Это могут быть:
Человеческий мозг не силен в составлении абсолютно случайных последовательностей. Поэтому мы можем использовать сильные его стороны, а именно – составление последовательностей слов, которые связаны между собой достаточно, чтобы наш пароль было легко запомнить. Итак, вот некоторые рекомендации с примерами от Марка Бернета, автора книги Perfect Password. Selection, Protection, Authentication (прим.: все примеры мои):
Многие пользователи в сети поступают как я когда-то: у них есть один простенький пароль для одноразового входа на какие-нибудь неважные сайты и два-три длинных и сложных СУПЕР-пароля для всего остального. Конечно, это лучше, чем один пароль для всего. Однако я рекомендую для каждого сайта иметь свой пароль, очень уж не хочется упрощать жизнь взломщикам.
UPD 1: Сервис проверки надежности пароля от Microsoft
Начну с того, что для генерации и хранения своих паролей сам я пользуюсь замечательной программой KeePass. Ее функционала вполне хватает для всех моих скромных вебмастерских нужд. Основным ее недостатком является тот факт, что она тоже требует запоминать один главный пароль. Поэтому вся эта суета вокруг придумывания пароля также касается меня и всех счастливых обладателей программы KeePass или ее аналогов, т.к. один пароль придумать все-таки придется.
Поговорим о методах взлома
Чтобы понимать всю глубину проблемы, пару строк посвящу методике взлома. Итак, как же злоумышленник может узнать/угадать/подобрать ваш пароль?
- Метод логического угадывания. Работает в системах с большим количеством пользователей. Злоумышленник пытается понять вашу логику при составлении пароля (логин+2 символа, логин наоборот, самые распространенные пароли и т.п.) и применяет эту логику ко всем пользователям. Если пользователей много, очень скоро произойдет коллизия и пароль будет угадан;
- Перебор по словарю. Этот вид атаки применяется, когда база данных с хешированными паролями слита с сервера. Может сочетаться с заменой букв (опечатки) или с подстановкой цифр/слов в начало или конец слова в качестве приставки или суффикса. Также используются словари, набранные в неверной раскладке клавиатуры (русские слова в английской раскладке);
- Перебор по таблице хешированных паролей. Передовой метод взлома паролей, когда хеши уже сгенерированы и остается только найти в базе соответствие хеша паролю. Работает очень быстро даже на слабых машинах и не оставляет никаких шансов владельцам коротких паролей.
- Другие методы: социотехника и социальный инжиниринг, использование keylogger'ов, снифферов, троянов и т.п.
Надежность пароля
Обобщая информацию, полученную из разных достоверных источников, я выделю основные признаки устойчивого к взлому пароля (под взломом я подразумеваю перебор по базам хешей, когда алгоритм хеширования заранее известен):
- Длина пароля (чем больше, тем лучше), для запущенных случаев рекомендуют использовать 15-тисимвольный пароль;
- Отсутствие словарных слов и частей распространенных паролей в составе пароля;
- Отсутствие шаблонов при составлении пароля (под шаблоном я понимаю логический алгоритм генерации пароля, например: «Med777ведев», «12@йцу@21» или даже «q1w2e3r4t5»);
- Стохастические последовательности символов из различных групп (строчные, прописные, цифры, знаки препинания и спец-символы);
Однако, все мы люди с довольно ограниченными способностями к запоминанию несвязной информации, поэтому пароли, которые подходят под вышеописанные параметры, хоть и будут весьма стойки к взлому с одной стороны, но, с другой стороны, их очень непросто запомнить. Поэтому рассмотрим менее параноидальные варианты составления и запоминания паролей.
Как народ запоминает свои пароли?
Проанализировав способы генерации паролей хабралюдей, я пришел к выводу, что основная методология запоминания пароля основывается на составлении логического или ассоциативного ряда. Также используются всевозможные искажения слов. Это могут быть:
- Названия домена вперемежку с логином («gooUSERglcom», «UmailruSer»);
- Определенная стандартная фраза, которая прикрепляется к домену («passgoogleru», «passhabrahabrru»);
- Распространенное слово вперемежку со значащими цифрами и другими знаками («321DR67ag0On», где 32167 – чит, который вызывал 5 черных драконов в Heroes of Might & Magic);
- Русские слова в английской раскладке («,k.lj [htyf» — «блюдо хрена»);
- Перестановка букв («Мойна и Вир», «twirret»);
Рекомендации по запоминанию паролей от профессионалов
Человеческий мозг не силен в составлении абсолютно случайных последовательностей. Поэтому мы можем использовать сильные его стороны, а именно – составление последовательностей слов, которые связаны между собой достаточно, чтобы наш пароль было легко запомнить. Итак, вот некоторые рекомендации с примерами от Марка Бернета, автора книги Perfect Password. Selection, Protection, Authentication (прим.: все примеры мои):
- Используйте в пароле антонимы, синонимы и омонимы и др. в различных комбинациях со знаками препинания и цифрами («молодойстарик18лет», «svetlo! темный», «собака=@»);
- Используйте формулы и выражения («12!=12.1», «@die(‘hard’)», «echo $string»);
- Используйте ненастоящие адреса электронной почты («Ya.Krevedko@ya.ya»);
- Используйте рифмы в пароле («google’shmugl», «HABRa_kadabra»);
- Повторение («http://http://double_pass», «zloe_zlo»);
- Визуализация («Зомби выели мне мо3г», «КуКла.Даша.плачет»);
- Преувеличение («25 часов утра», «Путин’а в мэры!», «почеши МНЕ желудок»);
- Используйте маты в паролях (тут упражняйтесь сами);
- Один из самых надежных способов запомнить пароль – многократно набрать его на клавиатуре.
Вместо заключения
Многие пользователи в сети поступают как я когда-то: у них есть один простенький пароль для одноразового входа на какие-нибудь неважные сайты и два-три длинных и сложных СУПЕР-пароля для всего остального. Конечно, это лучше, чем один пароль для всего. Однако я рекомендую для каждого сайта иметь свой пароль, очень уж не хочется упрощать жизнь взломщикам.
И, напоследок, факты для параноиков
- Самая распространенная цифра в паролях – 1, встречается в 21% паролей, в то время как остальные цифры присутствуют в 7%-10% случаев;
- 24% всех паролей состоят из 6 символов;
- Более 60% всех паролей содержат только строчные символы;
- Самый распространенный пароль в сети: «123456»;
- Существуют программы, способные проверять более миллиона паролей в секунду на процессоре Pentium 4 с частотой 3ГГц;
- Количество возможных вариантов пароля длиной 15 символов, в котором могут быть использованы все типы символов стандартной клавиатуры (в английской раскладке), составляет 463 291 230 159 753 000 000 000 000 000 вариантов.
Список использованной литературы и источники вдохновения
- Использование пароль-карты и Хабратопик на эту тему;
- Где тонко, там и рвется — проблемы параноидальной безопасности;
- Брюс Шнайер об алгоритмах подбора паролей;
- Способ генерации паролей с применением оригинального алгоритма.
UPD 1: Сервис проверки надежности пароля от Microsoft