Простые сложные пароли

30 October 2015 #security #soft #internet

Простые сложные пароли, имеется ввиду простые для запоминания, но сложные для подбора. Как оказывается и такие существуют.

Многие совершают ошибку, используя один и тот же пароль для множества ситуаций. Используя уязвимость одной системы, таким образом легко получить доступ ко всем остальным. Не совершайте подобной ошибки. Но здесь возникает другая проблема, держать в голове пароли от всех сервисов и систем невозможно чисто физически. К примеру, у меня на текущий момент зафиксировано порядка 500 различных паролей в самых разных сервисах. Что делать? Разумеется использовать специализированое программное обеспечение.

Но подобные программы так же используют пароли для ограничения доступа к данным. И сложность выбранного пароля обеспечивает сохранность информации. Сложность обычно подразумевает и сложность запоминания. Так ли это?

password-strength (c) xkcd

Возьмем для примера 9-ти значный пароль, состоящий из рандомных символов. Получаем 94^9 = 572994802228616704 возможных комбинаций пароля. 94 печатных символа используется в таблице ASCII без учета пробела. Но запомнить такой пароль обычному человеку крайне трудно. Попробуйте к примеру, запомнить следующее:

A+D4R&7q^

Всего 9 различных символов, не имеющих между собой связи. Запомнить сложно, да и набирать на телефоне сложно, но насколько сложно подобрать такой пароль? Если брать для оценки скорость в 1 триллион ключей в секунду (согласно статье 25 объединенных GPU способны перебирать 350 млрд паролей в секунду), то получаем, что потребуется 572994,8 секунд, или порядка 6,6 суток. Выходит не так сложен пароль? А мы еще не успели его запомнить. Что же делать?

На помощь приходит технология генерации парольных фраз под именем Diceware. Технология простая и для использования требует наличия специально подготовленного словаря и кубиков, обычных игральных кубиков, что можно купить в детском магазине. Словари можно взять на официальной странице, есть вариации для различных языков. В общей сложности словарь на английском языке содержит в себе 7776 слов. Каждому слову соответствует своя числовая последовательность. Берем кубик, кидаем его пять раз, или же берем пять кубиков и кидаем их один раз, полученную комбинацию цифр записываем и ищем в словаре. Полученное слово записываем. Таким образом операцию повторяем несколько раз. Как указывает в официальном блоге создатель метода, на текущий момент достаточно использовать шесть слов в парольной фразе для обеспечения достаточного уровня безопасности.

Для того, чтобы понять уровень сложности парольной фразы приведу пример из пяти слов данного словаря:

sequin path zest glass delhi
sequin-path-zest-glass-delhi

Обратите внимание на то, что между словами могут использоваться не только пробелы, но и произвольные символы. Намного проще запомнить, если сравнивать с 9-символьным паролем, приведенным выше, не находите? Но насколько приведенный пароль надежнее? В данном методе используется формула: количество слов в словаре в степени количества слов. То есть в нашем случае: 7776^5 = 28430288029929701376 различных комбинаций. Что в 49,617 раз больше, чем в случае с 9-символьным паролем. Запомнить и использовать его намного легче, но эффективность выше.

Возникает законный вопрос, откуда взялась приведенная формула?? У нас есть 7776 различных слов в словаре, которые мы можем использовать в самых различных комбинациях, связуя между собой с использованием дополнительных служебных символов (пробелы, знаки препинания и др.). Средняя длина слова в словаре 4,2 символа. Пять слов это примерно 21 символ без учета пробелов. Получаем, по формуле 94^21 = 2,7E41 комбинаций. Что намного больше предполагаемой сложности при использовании словаря. Таким образом можно считать приведенную выше формулу верной, при условии того, что взломщику известен использумый нами словарь.

Исходя из всего вышесказанного можно говорить о том, что для человека эффективнее использовать целые фразы, сгенерированные из словарей. При использовании шести и более слов, можно гарантировать простоту запоминания, но при этом обеспечивать значительную эффективность созданного пароля. Но и в данном случае можно усложнить работу взломщика, если к созданной парольной фразе добавлять так называемую соль. Солью может служить номер телефона, номер дома, дата рождения, все что угодно, информация, не входящая в существующие словари. Что ломает алгоритм использования подбора пароля по словарю. То же самое происходит, если в качестве разделителей слов использовать не пробел, а другой знак.

Используете парольные менеджеры? PGP-ключи? Возможно вам нужно сгенерировать надежный пароль для своей Wi-Fi сети? Используйте Diceware, таким образом вы сгенерируете надежный пароль, который легко запомнить.

Обратите внимание на тот факт, что сложность пароля не сильно зависит от типа используемых символов, большие символы используются или маленькие. Энтропия, то есть сложность пароля возростает незначительно, а вот сложность запоминания возростает очень сильно. Автор метода рекомендует использовать только маленькие буквы латинского алфавита.

Так же стоит обратить внимание на тот факт, что автор метода не рекомендует использовать электронные методы генерации случайных чисел. Так как все существующие алгоритмы используют псевдо-генераторы случайных чисел. И для получения гарантированного результата рекомендуется использовать старые добрые игральные кости.

Но если проблема случайности не сильно вас беспокоит, можно воспользоваться программными решениями, к примеру страница на Github: Diceware Secure Passphrase Generator, использующая для генерации JavaScript, и включащая в себя целый ряд словарей для различных языков. Либо использовать знаменитый 1Password, которые в одной из последних версий добавили Diceware генератор паролей.

1Password

Если у вас еще остались вопросы по описанному методу, рекомендую обратиться на страницу Diceware Passphrase FAQ.