В связи с ростом вычислительной мощности CPU и GPU правила генерации паролей периодически пересматриваются. Специалисты обычно ориентируются на показатель информационной энтропии (в битах). Но в отношении паролей это не универсальное мерило, потому что пространство возможных вариантов не равномерно, то есть различные элементы этого пространства встречаются с разными вероятностями. Поэтому существуют более эффективные техники вскрытия парольных хэшей, в том числе атаки по словарю, по радужным таблицам, а в последнее время — с применением генетических алгоритмов и нейросетей.
Поскольку единых парольных правил нет, многие компании публикуют собственные рекомендации, которые сильно отличаются друг от друга. Иногда эти правила весьма экстравагантые.
В коллекции Dumb Password Rules собрано несколько сотен сайтов с нестандартными правилами для паролей.
Например, некоторые сайты жёстко ограничивают не только минимальную, но и максимальную длину пароля. Например, в 14, 16 или 32 символа:
Другие запрещают использовать последовательность из трёх и более одинаковых символов:
Некоторые требуют вводить пароль только мышкой, выбирая шесть из десяти цифр:
У одного из банков пароль тоже обязательно вводить мышкой, выбирая символы на очень необычном экранном кейпаде (на КДПВ).
Примечание. Если ваша компания случайно оказалась в этом списке, можно подать пулл-реквест на удаление.
Для контраста, ниже приведены базовые рекомендации по генерации надёжных паролей от нескольких авторитетных организаций и компаний.
Рекомендации по генерации надёжных паролей
В 2017 году Национальный институт стандартов и технологий США (NIST) обновил парольные спецификации, которые рекомендуются в качестве стандартов NIST. Новые требования изложены в Специальной публикации NIST 800-63B, раздел 5.1.1.2 «Запоминаемые секретные верификаторы» (NIST, 2017).
Основные требования NIST 800-63B для верификаторов (компаний и организаций), которые устанавливают собственные парольные политики:
- Верификаторы не должны устанавливать правила составления паролей, например, требовать сочетания различных типов символов или запрещать последовательное повторение символов.
- Верификаторы не должны требовать произвольной или регулярной смены паролей, как, например, предыдущее правило 90 дней. С другой стороны, смена пароля должна быть обязательной в случае его компрометации.
- Пароли должны быть длиной не менее 8 символов.
- Системы паролей должны позволять абонентам выбирать пароли длиной не менее 64 символов.
- В паролях должны быть допустимы все печатные символы ASCII, символ пробела и символы Unicode.
- При установлении или изменении паролей верификатор должен сообщить абоненту, что ему необходимо выбрать другой пароль, если он выбрал слабый или скомпрометированный пароль.
- Верификаторы должны предлагать рекомендации, например, измеритель стойкости пароля, чтобы помочь пользователю выбрать надёжный пароль.
- Верификаторы должны хранить пароли в форме, устойчивой к офлайновым атакам. К паролям следует добавлять соль и хэшировать с помощью подходящей односторонней функции деривации ключа. Функции выработки ключа принимают на вход пароль, соль и требуемые вычислительные ресурсы (cost factor), а затем генерируют хэш пароля. Их цель — сделать каждую попытку угадывания пароля злоумышленником, получившим хэш-файл пароля, дорогостоящей и, следовательно, стоимость атаки на угадывание высокой или запретительной.
Дополнительно, в вопросах B05 и B06 в разделе FAQ документации NIST к обновлённым специальным публикациям (NIST, 2020) организация официально пояснила, что обязательная смена пароля «снижает общую безопасность системы паролей» и не должна использоваться. Согласно объяснению NIST, периодическая смена паролей снижает их энтропию. Хотя это довольно спорный вопрос, по которому нет единого мнения.
Кроме того, нет единого мнения и по всем остальным правилам гненерации паролей, включая минимальную длину, минимальную энтропию, наличие/отсутствие спецсимволов.
В качестве примера можно привести рекомендации по созданию надёжных паролей от ведущих компьютерных корпораций: Microsoft, Google и Apple.
Microsoft
Советы по созданию защищённых паролей:
- Минимум 12 символов, лучше от 14-ти
- Буквы в верхнем и нижнем регистрах, цифры и символы
- Запрещено использовать слова из словаря, а также имена людей, символов, продуктов и компаний
- Пароль должен значительно отличаться от предыдущих паролей пользователя
- Простая в запоминании, но трудная для подбора фраза. В качестве примера Microsoft приводит
6MonkeysRLooking
Рекомендации для паролей:
- Минимум 12 символов
- Буквы в верхнем и нижнем регистрах, цифры и символы ASCII
Google рекомендует максимально увеличивать энтропию пароля, создавая очень длинные пароли. Чтобы их было легче запомнить, можно брать знакомые отрывки текста:
- Лирика из песни или стихотворения
- Осмысленная цитата из фильма или речи
- Отрывок из книги
- Серия слов, которые имеют для вас значение
- Аббревиатура: можно составить пароль из первой буквы каждого слова в предложении
Apple
Требования к паролю Apple ID:
- Минимум 8 символов
- Буквы в верхнем и нижнем регистрах
- Минимум одна цифра
Ну и полезная рекомендация для любых паролей — использовать хороший парольный менеджер, правила шифрования и резервного копирования приватных данных, а также двухфакторную авторизацию.
Если вам повстречался сайт или иная компьютерная система с экстравагантными парольными правилами, то можно добавить его в коллекцию Dumb Password Rules и упомянуть в комментариях к этой статье.