Стойкость пароля проверить c пояснением. Новый алгоритм для проверки надёжности паролей. Единая надёжная основа

Анализатор паролей SeaMonkey

Этот анализатор паролей разработан как часть проекта SeaMonkey – свободного набора программ для работы в Internet, созданного и поддерживаемого организацией Seamonkey Council, выделившейся из Mozilla Foundation. Сам механизм анализа пароля является частью . Алгоритм его работы заключается в вычислении веса пароля, основывающемся на данных о символах, из которых этот пароль составлен. Вес пароля вычисляется по следующей формуле:
pwstrength = ((pwlength * 10) - 20) + (numeric * 10) + (numsymbols * 15) + (upper * 10) , где
  • pwlength равно 5, если количество символов в пароле больше 5, или равно длине пароля;
  • numeric равно 3, если количество цифр в пароле больше 3, в противном случае - равно количеству цифр;
  • numsymbols считается равным 3, если число символов в пароле, отличных от букв, цифр и знаков подчёркивания, больше 3, иначе - количеству таких символов;
  • upper равно 3, если количество букв в верхнем регистре больше 3, или количеству заглавных букв в противном случае.
После вычисления вес пароля нормируется таким образом, чтобы его значение заключалось в интервале от 0 до 100. Нормировка проводится в том случае, когда значение веса не попадает в этот диапазон. В случае когда pwstrength меньше 0, значение pwstrength приравнивают к нулю, а когда больше 0, значение веса устанавливают равным 100. Ранжирование же пароля по степени стойкости оставлено на усмотрение разработчиков, использующих библиотеку.
Как видно, описанный анализатор не использует никаких проверок с использованием словарей, что делает его оценки несколько однобокими, и, вероятно, менее точными по сравнению с программами от Google и Microsoft, рассмотренными выше.

Password Strength Meter (jQuery plugin)

Ещё одним вариантом оценщика пароля, работающего на клиентской стороне, является Password Strength Meter () – плагин, разработанный для JavaScript фреймворка jQuery.
Процедура оценки работает следующим образом. Известно множество качеств, обладая которыми пароль увеличивает или уменьшает свою стойкость к подбору. Каждое такое качество имеет свой строго определённый вес. Алгоритм заключается в поэтапной проверке наличия у пароля этих качеств и, в случае их присутствия происходит увеличения суммарного веса пароля, по величине которого после просмотра всех характеристик делается заключение об уровне стойкости пароля.
Рассмотрим полный алгоритм процедуры оценки пароля:
  1. Вес пароля устанавливается равным нулю.
  2. Если длина пароля менее 4 символов, то работа алгоритма заканчивается и возвращается результат “слишком короткий пароль”. Иначе переходим к шагу 3.
  3. Вес пароля увеличиваем на величину 4 * len , где len – длина пароля.
  4. Осуществляется попытка сжатия пароля по следующему алгоритму. Если в пароле встречается подстрока вида SS , где S – строка длины 1, то первая часть этой подстроки удаляется и сжатие продолжается с позиции начала второй части этой подстроки. Например, применяя этот алгоритм к строке aaabbcab , на выходе получим строку abcab . После выполнения операции сжатия вес пароля уменьшается на величину len - lenCompress , где len – длина пароля, а lenCompress – длина пароля после сжатия.
  5. Проводятся попытки сжатия пароля для случаев строк S длинной 2, 3 и 4 символов. Вес пароля уменьшается аналогично на величину len - lenCompress . Отметим, что сжатие каждый раз производится на проверяемом пароле, а не строках, полученных на предыдущих попытках.
  6. Если пароль содержит не меньше 3 цифр, то увеличить вес на 5.
  7. Если пароль содержит не менее 2 знаков, то увеличить вес на 5.
  8. Если пароль содержит буквы как в верхнем так и в нижнем регистрах, то увеличить вес пароля на 10.
  9. Если пароль содержит буквы и цифры, то увеличить вес пароля на 15.
  10. Если пароль содержит знаки и цифры, то увеличить вес на 15.
  11. Если пароль содержит буквы и знаки, то увеличить вес на 15.
  12. Если пароль состоит только из букв или только из цифр, то уменьшить вес пароля на 10.
  13. Если вес пароля меньше 0, то установить его равным 0. Если больше 100, то установить равным 100.
  14. Пароль, вес которого меньше 34, признаётся “слабым”. Если вес от 34 до 67, то пароль относится к категории “хороший”, а если более 67, то пароль считается “отличным”.
Рассмотренный анализатор также как и продукт от SeaMonkey, не проводит проверку пароля по какому-либо словарю. К тому же остаётся открытым вопрос об обоснованности выбора тех или иных значений весовых коэфициентов при формировании оценки пароля.
Доступна , демонстрирующая возможность данного плагина.

Cornell University - Password Strength Checker

Официальный on-line сервис , предоставляемый центром безопасности Корнелльского университета (Итака, США). С его помощью пользователи могут проверить свой пароль, заполнив web-форму и отправив его на проверку. Оценка пароля, как и в случае с сервисом Google, производится на стороне сервера.
Реализация алгоритма не раскрыта для общего доступа, однако в описании сервиса указаны требования, которым должен удовлетворять пароль, чтобы проверка прошла успешно:
  1. пароль должен иметь длину не менее 8 символов;
  2. при составлении пароля используются символы по крайней мере трёх алфавитов из следующего списка:
    • заглавные латинские буквы
    • строчные латинские буквы
    • цифры
    • специальные знаки (такие как! * () : |)
  3. пароль не должен содержать слов из словаря;
  4. пароль не должен содержать последовательностей повторяющихся букв (например, ААА) и последовательностей вида abc, qwerty, 123, 321.
Эти требования должны строго выполняться. Если хотя бы какое-то требование не выполняется, то пароль признаётся ненадёжным.
К такому подходу можно сделать следующее критическое замечания. Так пароль произвольно большой длины, например, какое-то предложение на естественном языке, не будет удовлетворять условию №3, что автоматически обеспечит паролю низкую оценку, хотя это, может быть, и не совсем оправдано.

Password Strength Tester

JavaScript анализатор паролей , который разрабатывается и поддерживается в рамках проекта Rumkin.com.
Алгоритм оценки, реализованный в данном анализаторе, основывается на общих положениях теории информации. В качестве основной оценки пароля используется его энтропия, вычисление которой производится с использование таблиц диграмм для английского языка.
Под энтропией (информационной ёмкостью) пароля понимается мера случайности выбора последовательности символов, составляющих пароль, оцененная методами теории информации.
Информационная ёмкость E измеряется в битах и характеризует стойкость к подбору пароля методом полного перебора при условии отсутствия априорной информации о характере пароля и применении злоумышленником оптимальной стратегии перебора, при которой среднее ожидаемое количество попыток до наступления удачной равняется 2 E -1 . По утверждению создателя этого оценщика с целью уменьшения загружаемого на клиентскую сторону объёма информации все небуквенные символы были объединены в одну группу. Эта группа выступает неким универсальным символом, который и используется в частотной таблице. Как отмечает разработчик, при данном допущении значение получаемой энтропии будет меньше, нежели в случае, когда в частотной таблице все символы представлены раздельно.
В зависимости от полученного значения энтропии паролю присваивается соответствующая характеристика его стойкости.
Энтропия Уровень стойкости

Сложность пароля

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

Использование

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

Определение сложности пароля

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

Проверка предположительного пароля на правильность

Самый очевидный способ проверить догадку - попытаться использовать её для допуска к ресурсу, защищённому угадываемым паролем.

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

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

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

Создание пароля

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

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

Энтропия как мера сложности пароля

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

Случайные пароли

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

где N - это количество возможных символов, а L - количество символов в пароле. H измеряется в битах.

Энтропия на 1 символ для разных наборов символов
Набор символов Количество символов N Энтропия на 1 символ H
Арабские цифры (0–9) 10 3.3219 бита
Шестнадцатеричная система (0–9, A-F) 16 4.0000 бита
Латинский алфавит без верхнего регистра (a-z) 26 4.7004 бита
Алфавитные и числовые символы без верхнего регистра (a-z, 0–9) 36 5.1699 бита
Латинский алфавит с верхним регистром (a-z, A-Z) 52 5.7004 бита
Алфавитные и числовые символы с верхним регистром (a-z, A-Z, 0–9) 62 5.9542 бита
Все печатные символы ASCII 95 6.5699 бита

Пароли, придуманные людьми

Живые люди чаще создают пароли с недостаточно высокой энтропией. Некоторые фокусники используют эту человеческую неспособность для развлечения и увеселения зрителей, угадывая предположительно случайные числа, загаданные зрителями. Так например, в одном анализе из трех миллионов восьмизначных паролей, буква "e" была использована 1.5 миллиона раза, в то время как бука "f" была использована только 250,000 раз. При равномерном распределении каждый символ встречался бы 900,000 раз. Самая распространенная цифра это "1", тогда как наиболее популярные буквы это a,e,o и r. . НИСТ(США) предполагает следующию схему, чтобы оценить энтропию пароля созданного человеком:

  • Энтропия первого символа равна 4 битам;
  • Энтропия следующих семи символов по 2 бита каждый;
  • От 9го до 20 символа 1.5 бита энтропии на символ;
  • От 21 и дальше каждый символ несет в себе 1 бит энтропии;
  • Если используется также верхний регистр букв и неалфавитные символы, то добавляется ещё 6 битов.

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

Битовый порог сложности

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

Некоторые основные критерии надежности были установлены для метода полного перебора , в контексте попытки нахождения ключа, используемого при шифровании. Эта проблема не та же самая, так как эти методы включают в себя астрономическое количество попыток, но результаты могут помочь определиться с выбором пароля. В 1999 году проект Electronic Freedom Foundation взломал 56-битный DES шифр меньше чем за один день, используя специально спроектированное аппаратное оборудование . В 2002 году distributed.net взломал 64-битный ключ за 4 года 9 месяцев и 23 дня . А 12 октября 2011 distributed.net оценила, что для взлома 72-битного ключа используя нынешние возможности потребуется 124.8 лет . Ввиду огромной сложности и из-за ограничений, связанных с нашим пониманием законов физики, нельзя ожидать, чтобы какой-либо цифровой компьютер (или комбинация) был способен взломать 256-битный шифр с помощью метода полного перебора . Так или иначе, в теории существует возможность (Алгоритм Шора), что квантовые компьютеры смогут решать такие задачи, однако, возможно ли это будет на практике - доподлинно неизвестно.

Как результат - нельзя дать точный ответ на, в некоторой степени другую проблему, проблему оптимальной сложности пароля. NIST рекомендует использовать пароль в 80-бит энтропии для наилучшей защиты, который может быть достигнут с помощью 95-символьного алфавита (то есть символьный набор ASCII) 12-символьным паролем (12 * 6.5 битов = 78).

  • Минимальная длина пароля в пределах от 12 до 14 символов. Увеличение пароля всего на 2 символа дает в 500 раз больше вариантов, чем увеличение алфавита на 18 символов
  • Генерирование случайных паролей, если это возможно
  • Избегать пароли, основанные на повторении, словарных словах, буквенных или числовых последовательностях, имени пользователя, именах родственников или домашних животных, романтических отсылках (нынешних или прошлых), биографической информации.
  • Включение в пароль цифр и иных символов, если это разрешено системой.
  • Использовать как прописные, так и строчные буквы, когда это возможно.
  • Избегать использовать один и тот же пароль для различных сайтов или целей.

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

Примеры слабых паролей

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

  • Пароль по умолчанию: password, default, admin, guest и другие. Список паролей по умолчанию широко распространен по интернету.
  • Словарные слова: chameleon, RedSox, sandbags, bunnyhop!, IntenseCrabtree и другие, включая слова из не английских словарей.
  • Слова с добавленными числами: password1, deer2000, ivan1234 и другие. Могут быть очень быстро проверены.
  • Слова с простой заменой букв: p@ssw0rd, l33th4x0r, g0ldf1sh и другие. Могут быть проверены автоматически с небольшими временными затратами.
  • Удвоенные слова: crabcrab, stopstop, treetree, passpass и другие.
  • Распространенные последовательности на клавиатуре: qwerty, 12345, asdfgh, fred и другие.
  • Числовые последовательности, основанные на хорошо известных наборах: 911, 314159... или 271828..., 112358... и другие.
  • Личные данные: ivpetrov123, 1/1/1970, номер телефона,%username%, номер ИНН, адрес и другие.

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

Политика паролей

Политика создания паролей это проводник для выбора удовлетворительного пароля. Обычно она представляет собой:

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

В политику создания паролей часто включают истечение срока годности. Срок годности служит двум целям:

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

Создание и обращение с паролем

При заданной длине и наборе возможных символов труднее всего взломать пароли в виде строки случайных символов. Они достаточно долго выдерживают атаку полным перебором (из-за высокой энтропии), но их и труднее всего запомнить. Если потребовать наличия у пользователей сложных паролей, это будет способствовать тому, что пароли станут записывать на бумажке, мобильных телефонах, на КПК или делиться ими с другими на случай ошибок в памяти. Брюс Шнайер рекомендует записывать свои пароли.

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

Оригинальный текст (англ.)

Simply, people can no longer remember passwords good enough to reliably defend against dictionary attacks, and are much more secure if they choose a password too complicated to remember and then write it down. We"re all good at securing small pieces of paper. I recommend that people write their passwords down on a small piece of paper, and keep it with their other valuable small pieces of paper: in their wallet.

Брюс Шнайер 2005

Техники запоминания

Политики паролей иногда предлагают техники запоминания, помогающие запоминать пароли:

  • Мнемонические пароли: Некоторые пользователи разрабатывают мнемонические фразы и используют их, чтобы генерировать высокоэнтропийные пароли, которые тем не менее относительно легче запомнить (например, первая буква каждого слова в запомнившейся фразе). Также, вместо букв, можно для более простого запоминания использовать слоги.
  • Мнемоника постфактум: После того как пароль был придуман, необходимо придумать фразу или предложение которое к нему подходит. Оно необязательно должно быть разумным, только запоминающимся. Это позволит паролю быть случайным.
  • Шаблоны паролей: Любые шаблоны в пароле делают угадывание (автоматичное или нет) легче и уменьшает работу атакующему.

Защита паролей

Компьютерным пользователям обычно советуют «никогда не записывайте нигде свои пароли» и «никогда не используйте один пароль больше чем на одном аккаунте». В то время как обычный пользователь может иметь десятки аккаунтов защищенных паролями. Пользователи со множеством аккаунтов часто сдаются и используют один и тот же пароль для всех аккаунтов. Существует программное обеспечение, которое позволяет хранить пароли в зашифрованной форме. Другой метод - зашифровать пароль вручную и записать шифрограмму на бумаге, запомнив метод расшифровки и ключ. Ещё один метод - это слегка изменять пароли для обычных аккаунтов и выбирать сложные и различные пароли для меньшего количества высокоценных приложений, таких как например Интернет-банкинг .

Менеджеры паролей

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

См. также

Примечания

  1. Анастасия Симакина 40% паролей можно взломать из-за простоты // Сайт cnews.ru (Проверено 7 ноября 2011)

Многие сайты пытаются помочь пользователям установить более сложные пароли. Для этого устанавливают базовые правила, которые требуют обычно указать хотя бы одну прописную букву, одну строчную букву, одну цифру и так далее. Правила обычно примитивные вроде таких :

"password" => [ "required", "confirmed", "min:8", "regex:/^(?=\S*)(?=\S*)(?=\S*[\d])\S*$/", ];
К сожалению, такие простые правила означают, что пароль Abcd1234 будет признан хорошим и качественным, так же как и Password1 . С другой стороны, пароль mu-icac-of-jaz-doad не пройдёт валидацию.

Вот первые два пароля.

А вот два пароля, которые не пройдут проверку на надёжность.

Что же делать? Может, не стоит принуждать к использованию спецсимволов и внедрять всё новые правила, вроде запрета на повтор нескольких символов подряд, использование не одного, а двух-трёх спецсимволов и цифр, увеличение минимальной длины пароля и т д.

Вместо всего этого достаточно сделать простую вещь - просто установить ограничение на минимальную энтропию пароля, и всё! Можно использовать для этого готовый оценщик zxcvbn .

Есть и другие решения, кроме zxcvbn. Буквально на прошлой неделе на конференции по безопасности ACM Computer and Communications Security была представлена научная работа (pdf) специалистов по безопасности из научно-исследовательского подразделения Symantec Research и французского исследовательского института Eurecom. Они разработали новую программу для проверки надёжности паролей, которая оценивает примерное количество необходимых попыток брутфорса, используя метод Монте-Карло . Предлагаемый способ отличается тем, что требует минимальное количество вычислительных ресурсов на сервере, подходит для большого количества вероятностных моделей и в то же время довольно точный. Метод проверили на паролях из базы 10 млн паролей Xato, которые лежат в открытом доступе (копия на Archive.org) - он показал хороший результат. Правда, это исследование Symantec Research и Eurecom носит скорее теоретический характер, по крайней мере, свою программу они не выложили в открытый доступ в каком-либо приемлемом виде. Тем не менее, смысл работы понятен: вместо эвристических правил проверки паролей веб-сайтам желательно внедрить проверку на энтропию.

Эксперты по компьютерной безопасности из Кембриджского университета проанализировали структуру более 70 млн. паролей. И выяснили то, что самые сложные пароли в мире составляют пользователи из Германии и Кореи. Причём делают они это непринуждённо и естественно, без специальной подготовки. А секрет устойчивости комбинаций кроется в специфике их языка. Они применяют те же латинские символы, те же цифры, но берут за основу свои родные «трудные» слова - имена, топонимы, термины и т.д. Например, Annaberg-Buchholz#122. Придумать, запомнить эти варианты легко, а вот подобрать на порядок сложней по сравнению со словарными словами других языков.

Если вы, уважаемый читатель, не знаете корейского или немецкого, это, конечно же, не значит то, что вы должны игнорировать сложные пароли. Они являют залогом безопасности ваших данных в интернете (в платёжных онлайн-системах, на сайтах, форумах). Эта статья расскажет вам, каким должен отвечать требованиям ключ для доступа в аккаунт (какой он должен быть) и как его создать.

Определение сложности

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

На сложность пароля влияют следующие факторы:

  • Количество символов в ключе. Чем больше знаков в последовательности, тем лучше. У комбинации из 5 знаков есть большая вероятность быстрого взлома. А вот на подбор последовательности из 20 знаков могут уйти годы, десятилетия и даже века.
  • Чередование прописных и строчных литер. Примеры: ключ dfS123UYt с использованием регистра заглавных букв на порядок сложней этой же комбинации, но только с маленькими литерами - dfs123uyt.
  • Символьные наборы. Разнообразие типов символов усиливает устойчивость. Если сделать ключ из маленьких и больших букв, цифр и спецсимволов длиной в 15-20 знаков, шансов его подобрать практически нет.

Как составлять устойчивые комбинации?

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

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

Внимание! Избегайте простых «конструкций» - линии, квадраты или диагонали. Их легко предугадать.

2. Составьте сложное предложение, не поддающееся логике. Другими словами, какой-нибудь каламбур:

Например: Кот Васька на Юпитере уловил щуку.

Затем возьмите первые 2-3 буквы каждого слова из придуманного предложения:
Кот + Ва + На + Юп + ул + щук

Наберите слоги латинскими буквами:
Rjn + Df + Yf + >g + ek + oer

После транслитерации вставьте между слогами какие-нибудь хорошо знакомые вам числа: дату рождения, рост, вес, возраст, последние или первые цифры телефонного номера.
Rjn066Df 45Yf 178>g 115ek1202oer

Вот и всё! Как видите, получилась довольно «крепкая» комбинация. Чтобы вспомнить её быстро, вам нужен только ключ (предложение-каламбур) и используемые цифры.

3. Возьмите за основу 2 памятные даты. К примеру, два дня рождения (ваше и вашего любимого человека).
12.08.1983 05.01.1977

Разделите число, месяц и год какими-нибудь спецсимволами:
12|08/1983|05\01|1977

Теперь нули в датах замените маленькой буквой «o».
12|o8/1983|o5\o1|1977

Получается довольно замысловатый ключ.

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

Для генерации ключа возьмите несколько простых слов, записанных английскими буквами, например, my password very strong

Возьмите первую пару букв. В нашем случае это «my». В вертикальном списке найдите «m», в горизонтальном «y». На пересечении линий вы получите первый символ пароля.

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

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

Как проверить устойчивость пароля?

Устойчивость символьной комбинации к подбору можно узнать на специальных веб-сервисах. Рассмотрим наиболее популярные:

Онлайн-служба от антивирусной лаборатории Касперского. Определяет по символьному набору и длине ключа, сколько понадобится времени на его взлом на различных компьютерах. После анализа последовательности в статистике отображается время для поиска на ZX-Spectrum (легендарной 8-ми битной машине 80-х), Mac Book Pro (модели 2012 года), суперкомпьютере Tianhe-2 и в сети ботнетов Conficker.

Онлайн-утилита на огромном сервисном портале 2IP.ru. После отправки ключа на сервер, выдаёт его статус (надёжный, ненадёжный) и время, затрачиваемое на его взлом.

Большинство злоумышленников не заморачиваются с изощрёнными методами кражи паролей. Они берут легко угадываемые комбинации. Около 1% всех существующих на данный момент паролей можно подобрать с четырёх попыток.

Как такое возможно? Очень просто. Вы пробуете четыре самые распространённые в мире комбинации: password, 123456, 12345678, qwerty. После такого прохода в среднем открывается 1% всех «ларчиков».

Допустим, вы попадаете в те 99% пользователей, чей пароль не столь прост. Даже в таком случае необходимо считаться с производительностью современного программного обеспечения для взлома.

Бесплатная программа John the Ripper, находящаяся в свободном доступе, позволяет проверять миллионы паролей в секунду. Отдельные образцы специализированного коммерческого ПО заявляют о мощности в 2,8 миллиарда паролей в секунду.

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

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

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

В результате получаются пароли в стиле password1, password123, Password, PaSsWoRd, password! и невероятно непредсказуемый p@ssword.

Представьте, что вам нужно переделать пароль spiderman. С большой вероятностью он примет вид наподобие $pider_Man1. Оригинально? Тысячи людей изменят его по такому же, либо очень схожему алгоритму.

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

Чем легче пароль для запоминания, тем более вероятно его попадание в словари программ-взломщиков. В итоге получается так, что действительно надёжный пароль просто невозможно запомнить, а значит, его нужно где-то .

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

Впрочем, лист с паролями не решает проблему. Длинные пароли тяжело не только помнить, но и вводить. Ситуацию усугубляют виртуальные клавиатуры мобильных устройств.

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

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

Масштаб проблемы получилось полностью осознать в 2009 году. Тогда из-за дыры в безопасности хакеру удалось украсть базу логинов и паролей RockYou.com - компании, издающей игры на Facebook. Злоумышленник поместил базу в открытый доступ. Всего в ней содержалось 32,5 миллиона записей с именами пользователей и паролями к аккаунтам. Утечки случались и ранее, но масштабность именно этого события показала картину целиком.

Самым популярным паролем на RockYou.com оказалась комбинация 123456. Её использовали почти 291 000 людей. Мужчины до 30 лет чаще предпочитали сексуальную тематику и пошлости. Более взрослые люди обоих полов зачастую обращались к той или иной сфере культуры при выборе пароля. Например, Epsilon793 кажется не таким уж плохим вариантом, вот только эта комбинация была в Star Trek. Семизначный 8675309 встречался много раз, потому что этот номер фигурировал в одной из песен Tommy Tutone.

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

Вы не сможете создать идеально случайную комбинацию в математическом понимании в своей голове, но от вас это и не требуется. Существуют специальные сервисы, генерирующие действительно случайные комбинации. К примеру, random.org может создавать такие пароли:

  • mvAWzbvf;
  • 83cpzBgA;
  • tn6kDB4T;
  • 2T9UPPd4;
  • BLJbsf6r.

Это простое и изящное решение, особенно для тех, кто использует для хранения паролей.

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

Ситуации, при которых пароля может быть под угрозой, можно разделить на 3 большие категории:

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

Как видите, жертвой может стать абсолютно любой человек. Утверждения типа «мой пароль не будут красть, потому что я никому я нужен» не актуальны, потому что вы можете попасть в подобную ситуацию совершенно случайно, по стечению обстоятельств, без каких-либо видимых причин.

Еще серьёзнее стоит относиться к защите паролей тем, кто обладает ценной информацией, связан с бизнесом либо находится с кем-то в конфликте на финансовой почве (например, раздел имущества в процессе развода, конкуренция в бизнесе).

В 2009 году Twitter (в понимании всего сервиса) был взломан лишь потому, что администратор использовал в качестве пароля слово happiness. Хакер подобрал его и разместил на сайте Digital Gangster, что привело к угону аккаунтов Обамы, Бритни Спирс, Facebook и Fox News.

Акронимы

Как и в любом другом аспекте жизни, нам всегда приходится искать компромисс между максимальной безопасностью и максимальным удобством. Как найти золотую середину? Какая стратегия генерации паролей позволит создавать надёжные комбинации, которые можно без проблем запомнить?

На данный момент наилучшим сочетанием надёжности и удобства является конвертация фразы или словосочетания в пароль.

Выбирается набор слов, который вы всегда помните, а в качестве пароля выступает комбинация первых букв из каждого слова. К примеру, May the force be with you превращается в Mtfbwy.

Однако, поскольку в качестве изначальных будут использоваться самые известные, программы со временем получат эти акронимы в свои списки. Фактически акроним содержит только буквы, а потому объективно менее надёжен, чем случайная комбинация символов.

Избавиться от первой проблемы поможет правильный выбор фразы. Зачем превращать в пароль-акроним всемирно известное выражение? Вы наверняка помните какие-то и высказывания, которые актуальны только среди вашего близкого окружения. Допустим, вы услышали очень запоминающуюся фразу от бармена в местном заведении. Используйте её.

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

Обратный способ

Выходом может стать обратный способ генерации. Вы создаёте в random.org совершенно случайный пароль, после чего превращаете его символы в осмысленную запоминающуюся фразу.

Часто сервисы и сайты дают пользователям временные пароли, представляющие собой те самые идеально случайные комбинации. Вы захотите сменить их, потому что не сможете запомнить, но стоит чуть приглядеться, и становится очевидно: пароль помнить и не нужно. Для примера возьмём очередной вариант с random.org - RPM8t4ka.

Хоть он и кажется бессмысленным, но наш мозг способен находить некие закономерности и соответствия даже в подобном хаосе. Для начала можно заметить, что первые три буквы в нём заглавные, а следующие три - строчные. 8 - это дважды (по-английски twice - t) 4. Посмотрите немного на этот пароль, и вы обязательно найдёте собственные ассоциации с предложенным набором букв и цифр.

Если вы можете запоминать бессмысленные наборы слов, то используйте это. Пусть пароль превратится в revolutions per minute 8 track 4 katty. Подойдет любая конвертация, на которую лучше «заточен» ваш мозг.

Случайный пароль - это золотой стандарт в информационной . Он по определению лучше, чем любой пароль, придуманный человеком.

Минус акронимов в том, что со временем распространение такой методики снизит её эффективность, а обратный метод останется столь же надёжным, даже если все люди земли будут использовать его тысячу лет.

Случайный пароль не попадёт в список популярных комбинаций, а злоумышленник, использующий метод массовой атаки, подберёт такой пароль только брутфорсом.

Берём несложный случайный пароль, учитывающий верхний регистр и цифры, - это 62 возможных символа на каждую позицию. Если сделать пароль всего лишь 8-значным, то получаем 62 ^ 8 = 218 триллионов вариантов.

Даже если количество попыток в течение определённого временного промежутка не ограничено, самое коммерческое специализированное ПО с мощностью 2,8 миллиарда паролей в секунду потратит в среднем 22 часа на подбор нужной комбинации. Для уверенности добавляем в такой пароль всего 1 дополнительный символ - и на его взлом понадобятся уже многие годы.

Случайный пароль не является неуязвимым, так как его можно украсть. Вариантов множество, начиная от считывания ввода с клавиатуры и заканчивая камерой за вашим плечом.

Хакер может ударить по самому сервису и достать данные непосредственно с его серверов. При таком раскладе от пользователя ничего не зависит.

Единая надёжная основа

Итак, мы добрались до главного. Какую тактику с использованием случайного пароля применять в реальной жизни? С точки зрения баланса и удобства хорошо покажет себя «философия одного надёжного пароля».

Принцип заключается в том, что вы используете одну и ту же основу - супернадёжный пароль (его вариации) на самых важных для вас сервисах и сайтах.

Запомнить одну длинную и сложную комбинацию по силам каждому.

Ник Берри, консультант по вопросам информационной безопасности, допускает применение такого принципа при условии, что пароль очень хорошо защищён.

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

Понятно, что надёжную основу нужно как-то изменять для каждого сайта. В качестве простого варианта вы можете добавлять в начало одну букву, которой заканчивается название сайта или сервиса. Если вернуться к тому случайному паролю RPM8t4ka, то для авторизации в Facebook он превратится в kRPM8t4ka.

Злоумышленник, увидев такой пароль, не сможет понять, каким образом генерируется пароль к вашему аккаунту. Проблемы начнутся, если кто-то получит доступ к двум или более вашим паролям, сгенерированным таким образом.

Секретный вопрос

Некоторые угонщики вообще игнорируют пароли. Они действуют от лица владельца аккаунта и имитируют ситуацию, когда вы забыли свой пароль и хотите его по секретному вопросу. При таком сценарии он может изменить пароль по собственному желанию, а истинный владелец потеряет доступ к своему аккаунту.

В 2008 году некто получил доступ к электронной почте Сары Пэйлин, губернатора штата Аляска, а на тот момент ещё и кандидата в президенты США. Взломщик ответил на секретный вопрос, который звучал так: «Где вы познакомились с мужем?».

Через 4 года Митт Ромни, также являвшийся кандидатом в президенты США в то время, потерял несколько своих аккаунтов на различных сервисах. Кто-то ответил на секретный вопрос о том, как зовут питомца Митта Ромни.

Вы уже догадались о сути.

Нельзя использовать в качестве секретного вопроса и ответа публичные и легко угадываемые данные.

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

В качестве временного варианта можно использовать тактику абсурдности ответа. Если просто, то ответ не должен иметь ничего общего с секретным вопросом. Девичья фамилия матери? Димедрол. Кличка домашнего животного? 1991.

Впрочем, подобный приём, если найдёт широкое распространение, будет учтён в соответствующих программах. Абсурдные ответы зачастую стереотипные, то есть какие-то фразы будут встречаться гораздо чаще других.

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

PIN

Personal Identification Number (PIN) - дешёвый замок, которому доверены наши . Никто не беспокоится о том, чтобы создать более надёжную комбинацию хотя бы из этих четырёх цифр.

А теперь остановитесь. Вот сейчас. Прямо сейчас, не читая следующий абзац, попробуйте угадать самый популярный PIN-код. Готово?

По оценкам Ника Берри, 11% населения США использует в качестве PIN-кода (там, где есть возможность самому его изменить) комбинацию 1234.

Хакеры не уделяют внимания PIN-кодам потому, что без физического присутствия карты код бесполезен (отчасти этим можно оправдать и маленькую длину кода).

Берри взял списки появлявшихся после утечек в сети паролей, представляющих собой комбинации из четырёх цифр. С большой вероятностью человек, использующий пароль 1967, выбрал его не просто так. Второй по популярности PIN - это 1111, и 6% людей предпочитают такой код. На третьем месте 0000 (2%).

Предположим, что у знающего эту информацию человека в руках чья-то . Три попытки до блокировки карты. Простая математика позволяет подсчитать, что у этого человека есть 19% шансов угадать PIN, если он последовательно введёт 1234, 1111 и 0000.

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

Впрочем, многие защищают PIN-кодом смартфоны, и тут действует такой рейтинг популярности: 1234, 1111, 0000, 1212, 7777, 1004, 2000, 4444, 2222, 6969, 9999, 3333, 5555, 6666, 1313, 8888, 4321, 2001, 1010.

Часто PIN представляет собой какой-то год (год рождения или историческая дата).

Многие любят делать PIN в виде повторяющихся пар цифр (причём особо популярны пары, где первая и вторая цифры отличаются на единицу).

Цифровые клавиатуры мобильных устройств выводят в топ комбинации наподобие 2580 - для её набора достаточно сделать прямой проход сверху вниз по центру.

В Корее число 1004 созвучно слову «ангел», что делает эту комбинацию там довольно популярной.

Итог

  1. Зайдите на random.org и создайте там 5–10 паролей-кандидатов.
  2. Выберите пароль, который вы сможете превратить в запоминающуюся фразу.
  3. Используйте эту фразу для того, чтобы вспомнить пароль.