Для регистрационных форм все чаще встречается проверка формата паролей, а затем визуальная обратная связь по содержанию или надежности пароля.
Вы, вероятно, видели форму регистрации Google или что-то очень похожее, что на самом деле является хорошим примером (и я сейчас расскажу, почему):
Возможно, вы также видели примеры, подобные этому, предлагаемые и используемые в Интернете:
Идея наличия такого контрольного списка состоит в том, чтобы уменьшить трения для пользователей, предоставляя конкретные отзывы о требуемом формате, а не просто отклоняя пароль на неопределенных или неопределенных условиях.
Но это все еще плохая идея, как бы хорошо она ни реализовывалась, потому что она распространяет вводящее в заблуждение представление о том, что представляет собой хороший пароль .
Чтобы понять эту проблему, мы должны начать с понимания того, как определяется надежность пароля.
Что делает надежный пароль?
Надежность пароля обычно описывается с помощью термина энтропия пароля
, которая является мерой его случайности . Это не столько мера этого конкретного пароля, сколько всех возможных паролей, которые содержат одинаковый диапазон символов (то есть все возможности, которые придется использовать компьютеру, чтобы взломать его с помощью грубой силы).
Энтропия обычно выражается в битах: если мы ссылаемся на пароль как имеющий n битов энтропии, это означает, что значение энтропии равно 2
n . Одна строчная английская буква имеет приблизительно 4.7
24.7
26
Таким образом, если пароль содержит только строчные буквы, то каждый из них добавит еще 4.7
9.4
Если мы заменим одну или несколько букв другими символами, диапазон (и, следовательно, энтропия) увеличится. В US ASCII есть 94 недиакритических буквы, цифры и специальные символы, поэтому каждая из них будет иметь приблизительно 6.55
26.55
94
Следовательно, восьмибуквенный пароль, который может содержать любой из этих символов, будет иметь приблизительно 52.4
37.6
Однако шестнадцатизначный пароль с только строчными буквами будет иметь энтропию 75.2
Чтобы поместить это в некоторый контекст: пароль с 52.4
взломан настольным ПК менее чем за полчаса, в то время как пароль с 75.2
Чем длиннее пароль, тем больше времени на его взлом экспоненциально.
Таким образом, в общих чертах, длинный пароль, состоящий только из строчных букв, лучше, чем короткий пароль со смесью символов .
Применяя теорию на практике
Это проливает новый свет на хороший пароль. Это означает, что это мой пароль
намного более надежный,
чем пароль pA5% w * rD
, и все же его намного легче запомнить.
Хотя мы должны признать, что при таком способе анализа паролей существует проблема, заключающаяся в том, что каждый символ выбирается случайным образом . На практике это редко имеет место, поскольку пароли обычно выбираются людьми, а люди не делают случайный выбор.
Одним из примеров неслучайного выбора являются психологические черты — склонность людей использовать очевидные слова, имена знаменитостей или общие ассоциации. Программное обеспечение для взлома паролей может учитывать такие вещи, чтобы оптимизировать свою работу и получать результаты быстрее, чем математически вероятно. Но на самом деле это невозможно измерить количественно при вычислении энтропии пароля, потому что это требует знаний, которые не могут быть легко абстрагированы.
Хотя инструмент проверки Gmail явно учитывает некоторые из этих вещей, поскольку он указывает, что этот мой пароль
слабее, чем мой
, просто потому, что он содержит слово пароль
.
Но это также указывает на то, что pA5% w * rD
сильнее , хотя на самом деле он намного слабее (как мы видели).
И это проблема со всеми инструментами проверки пароля, которые я видел — замене символов уделяется гораздо больше внимания, чем она заслуживает, в то время как создание более длинного пароля уделяется мало или совсем не акцентируется. Они учат пользователей создавать пароли, которые людям трудно запомнить, а компьютерам — угадать .
Внедрение практики в лучшие практики
Вначале я сказал, что инструмент Gmail является довольно хорошим примером, и это потому, что он оценивает общий пароль, а не только его отдельные символы, поэтому он будет по крайней мере указывать, что более длинный пароль надежнее короткого. Я также сказал, что второй пример был плохой идеей, и это потому, что он только подчеркивает замену персонажа, которая далеко не так важна и потенциально контрпродуктивна.
Если бы я суммировал это в общей рекомендуемой наилучшей практике, это было бы так:
- не проверяйте формат пароля, проверяйте только его длину
- или если вы собираетесь проверить формат, не делайте это обязательным
Я помню один или два раза, когда сайт заставлял выбирать другой пароль, просто потому что у него не было смешанного символа. Как пользователь, я обнаружил, что это невероятно расстраивает; но это также вдвойне иронично, так как это может привести к тому, что люди будут использовать более короткий и, следовательно, более слабый пароль, или использовать один и тот же пароль для многих разных сайтов.
Я бы рекомендовал два отдельных поля — одно для пароля и одно для подтверждения — наряду с некоторыми примечаниями внизу, которые объясняют, как написать надежный, но запоминающийся пароль. Оба поля являются обязательными и должны иметь минимальную длину (и, очевидно, должны быть одинаковыми), но формат символов пароля не проверен или не требуется.
Потому что, в конечном счете, все зависит от пользователей, какой пароль они хотят использовать. Как поставщики услуг, мы несем ответственность за обеспечение безопасности учетных записей наших пользователей. Если мы используем такие методы, как посолка и растяжение ключа, для более безопасного хранения паролей, тогда не должно иметь значения, что они выберут.
Лично мне нравится использовать старые телефонные номера и места, где я жил. Например, если я жил в Нью-Йорке и до сих пор помню свой номер телефона, я мог бы использовать «Нью-Йорк 219 555 4209» в качестве пароля. Это очень сильно, но также легко для меня, чтобы запомнить.
Более общий подход состоит в том, чтобы взять несколько слов, которые обычно не связаны, и затем визуализировать связь между ними (например, этот мультфильм xkcd ). Простое формирование визуальной ассоциации делает пароль более запоминающимся, особенно если он имеет для вас личное значение; и если все написано строчными буквами, вам не нужно запоминать какие-либо замысловатые замены.
Легко представить какую-то телевизионную драматическую ситуацию, когда Шерлок Холмс сидит за нашим компьютером, пытаясь угадать наш пароль, используя психологическую информацию. Нравится ли нам Star Trek, пить йоркширский чай или слушать Iron Maiden? В этом случае «ir0n // ma1d3n» будет сложнее угадать, чем «железную деву» (хотя и ненамного, учитывая неизбежное знание Холмсом общих замен!).
Но в любом случае этого не произойдет, и пользователей, возможно, придется научить понимать это. Пароли почти никогда не взламываются людьми с личными знаниями, они взламываются компьютерами с грубой силой — и для них размер — это все!