Придумать хороший пароль — одна из тех парадоксальных задач, которые только кажутся простыми. Вижу-вижу, многие усмехнулись: мол, на такое можно поймать новичка, но мы-то, проведшие X лет в интернете, знаем, что к чему! Нас-то научили ставить прописные буквы, цифры, знаки препинания. Увы, должен вас разочаровать: стойкость придуманного даже по таким правилам «секретного слова» скорее всего невысока — и речь сегодня пойдёт о том, почему так получилось и как это исправить.

Но чтобы выяснить это и извлечь полезный урок, давайте обратимся не к научным работам, а к... комиксу. Вот к этой картинке с популярного сайта XKCD.com, приведённой ниже, считающейся классикой жанра. Уже несколько лет она ходит по рукам, но актуальности не только не потеряла, а даже наоборот — с каждым днём становится всё важнее. Посмотрите. Перед вами развенчание мифа о стойкости паролей, сгенерированных с использованием стандартных правил. Не пугайтесь цифр и терминов, я сейчас всё объясню.

«Tr0ub4dor&3» кажется хорошим паролем, но — только кажется.

Итак, что мы видим? В качестве примера предлагается использовать пароль «Tr0ub4dor&3». Получен этот уродец путём искажения английского слова troubador — таким образом, чтобы были выполнены все стандартные рекомендации. Здесь не менее 8 символов, есть прописная буква, есть цифры и знак препинания. Вбейте этот пароль при регистрации на любом сайте — и вам без вопросов позволят его использовать: он как будто бы достаточно сложный, достаточно стойкий к взлому, как сказали бы специалисты.

Насколько высока его стойкость? Давайте оценим, подсчитав количество вариантов, которые взломщику придётся перебрать, чтобы подобрать такой пароль случайным образом. В данном случае используются все буквы английского алфавита (26 штук), плюс заглавные (умножьте на два), цифры (плюс 10) и знаки препинания (которых, допустим, ещё 20 штук). Всего получается 82 возможных символа. Поскольку пароль состоит из 11 знаков и каждый такой знак может быть одним из 82 символов, число вариантов получается 82 в степени 11. Это гигантская цифра. Перебирая варианты со скоростью 1000 слов в секунду, взломщику понадобятся миллиарды лет, чтобы угадать такой пароль!

Стойкость пароля можно оценить и другим, «более научным» способом, с применением так называемой информационной энтропии (она же «мера неопределённости», она же «информационная ценность», а по сути — всё то же число вариантов). Как вам известно, компьютер хранит информацию в двоичной форме, в виде «битов», принимающих только значения 0 или 1. Пусть букве «A» соответствует комбинация 0000000, букве «B» — 0000001, букве «C» — 0000010, и так далее. Таким образом нам хватит всего 7 бит, чтобы кодировать каждый из 82 символов. Поскольку в нашем пароле 11 знаков, его энтропия составляет 7*11=77 бит. А число вариантов, которые необходимо перебрать, чтобы угадать наш пароль, составит 2 в степени 77 (на самом деле чуть меньше, потому что 7 битами можно кодировать больше, чем 82 символа). Что примерно эквивалентно предыдущему результату: огромное число, лишающее смысла попытку подбора пароля!

Простите меня за это погружение в математику, я и сам её не люблю. Зато теперь мы можем перейти к следующему этапу: объяснить, почему наш пароль на самом деле не так хорош, как кажется. А дело здесь в том, что реальный взломщик — вовсе не тупая электронно-счётная машина. Мы предполагали, что человек, который станет «ломать» наш пароль, не знает как именно мы его генерировали. И это весьма наивно с нашей стороны! Потому что всякий, кто пользовался интернетом, конечно, в курсе, каким требованиям должен удовлетворять «хороший» пароль. Поэтому, вместо грубого перебора вариантов, он может поступить следующим образом.

500 самых популярных паролей в интернете. Присмотритесь, нет ли здесь и вашего?

Прежде всего, он знает, что большинство сетян ленивы и наверняка используют для пароля какое-нибудь обыкновенное слово. В базовом словаре английского языка порядка 60 тысяч слов. Чтобы пронумеровать их так же, как мы нумеровали символы (присвоив каждому его битовый номер), нам достаточно 16 бит на каждое слово (16 бит — это 65536 вариантов). Таким образом реальная информационная ценность общеупотребительного английского слова (его энтропия) всего-то 16 бит.

Далее, взломщику известно также, что пользователя заставят использовать в пароле прописные буквы. Но всё из-за той же лени, большинство пользователей наверняка сделают прописной первую букву. Поэтому, угадывая пароль, нужно будет попробовать заменить первую букву прописной. Это добавляет к энтропии ещё один бит.

Взломщик знает и о том, что буквы «o» и «a» часто заменяют цифрами 0 и 4 (похожи по написанию), поэтому обе «o» и единственную «a» в слове «troubador» нужно попробовать заменить цифрами. Это добавит к энтропии ещё три бита.

Наконец, взломщик в курсе, что пользователя заставят использовать знаки препинания и цифры — но по причине той же самой лени, пользователь предпочтёт поставить их в самый конец. Чтобы кодировать все цифры от 0 до 9, нужны 3 бита. На знаки препинания — 4 бита. И ещё надо попробовать переставить их местами, то есть ещё плюс один бит.

Итого получаются 28 бит энтропии. Это 2 в степени 28 вариантов. Даже перебирая 1000 вариантов в секунду (что очень скромно: на самом деле реальные программы перебора, задействующие графическую карту, могут проверять в миллионы раз больше!), такой пароль будет подобран за несколько дней.

Однако кроме слабости к взлому, у пароля «Tr0ub4dor&3» есть ещё один недостаток: его трудно запомнить! Пользователь должен будет записать его куда-нибудь, а большинство опять-таки сделает это «небезопасно» — например, на бумажке, наклеенной на монитор. И это дополнительно ослабит казавшуюся такой мощной защиту. Что мы имеем в сумме? Слабый пароль, который трудно запомнить, и который создаёт у пользователя ложное чувство защищённости. Страшная комбинация.

Но что же делать? Довериться математике — и вывести энтропию пароля в максимум. Что, кстати, и составляет вторую часть комикса, который мы расшифровываем. Вот алгоритм.

Пароль — он как трусы. Его так же не стоит оставлять на виду, доверять незнакомцам, а ещё нужно регулярно менять!

Во-первых, необходимо признать, что взломщик наверняка осведомлён о методе генерации пароля. Он знает, по каким правилам мы будем его придумывать. Поэтому нет смысла хитрить, выдумывать сложные комбинации букв, цифр и знаков препинания. Положиться здесь можно только на длину!

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

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

Сколько вариантов ему потребуется перебрать? Легко сосчитать. Даже воспользовавшись самыми-самыми популярными английскими словами, которых всего-то пара тысяч (то есть 11 бит энтропии на каждое), и взяв всего 4 слова, мы получим пароль, энтропия которого равна 4*11=44 бит. Перебирая 1000 вариантов в секунду, взломщик должен будет трудиться сотни лет, чтобы угадать такой пароль! Между тем он чрезвычайно прост: фраза хоть и бессмысленная, но легко запоминается в виде сценки. И не нужны никакие ухищрения вроде регистра, цифр, знаков препинания, подмены.

Впрочем, учитывая, что паролей нужно множество, хорошей идеей будет воспользоваться парольным менеджером: специальным приложением, которое сохранит все ваши секретные слова и фразы. В таком случае запомнить придётся только один главный пароль — собственно, к этой программе.

P.S. В статье использованы иллюстрации David, Dollie Mixtures, S3aphotography.

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