- Пароли должны быть не менее 8 символов, если придумываются пользователем сервиса и не менее 6, если создаются генератором (например, встроенным в сам сервис), они могут состоять только из цифр.
- Сервису рекомендуется автоматически проверять, не "засветились" ли пароли в слитых базах
- Сервис не должен разрешать использовать "словарные" и очень уж простых простые пароли, благо сравнение с таким справочником сделать несложно, они есть в открытом доступе
- Сервис должен запрещать пароли, содержащие имя пользователя или его часть
- Отдельно оговаривается то, что для нашего уха (профдеформированного разного рода РД и НПА) может показаться странным: никаких дополнительных требований, кроме длины, к паролю предъявлять не стоит (разные наборы символов и т.п.).
- Сервис должен технически предоставить пользователю возможности придумать пароль длиной 64 символа (или больше)
- В паролях должны поддерживаться все символы ASCII [RFC 20], включая пробелы
- Unicode [ISO/ISC 10646] кодировка также должна поддерживаться (эмодзи в том числе), включая такую нормализацию, при которой 1 введенный символ в UNICODE эквивалентен 1 в ASCII
- Запрещаются всякого рода всплывающие подсказки (помните, в прошлых версиях Windows были такие?) на формах ввода логина/пароля
- Напротив, сервис должен объяснить пользователю, чтобы тот не использовал подсказки вида "имя питомца, фамилия матери и т.п." и не мог используя лишь только их сбросить пароль
- Сервису необходимо приводить примеры пользователю и объяснять, почему выбранный им пароль вдруг не безопасен
- Количество неверных попыток ввода пароля должно быть лимитировано. Приводится конкретное довольно большое число - 100, с оговоркой, что лучше использовать дополнительные механизмы (капча, лимит времени между попытками и т.п.)
- Еще одно разрушение мифов: сервисы не должны требовать принудительной смена пароля периодически (раз в месяц, год и т.п.). Вместо этого необходимо мониторить утечки паролей и своевременно предупреждать пользователя о возможной компрометации.
- Вопреки расхожему мнению, сервисы должны разрешать функцию "вставить" при вводе пароля. Иначе пользователи вместо сложного пароля из менеджера паролей будут придумывать и использовать менее сложные.
- Сервис должен позволять посмотреть введенный "звездочками" (*) пароль, чтобы пользователь проверил его корректность. Также актуальным (особенно для мобильных устройств) будет показывать каждый вводимый символ на несколько секунд.
- К сервису также предъявляются требования по надежному хранению пароля и защите при его запросе (передаче), такие как хэш с "солью", шифрование связи и т.п.
- Passwords must be at least 8 characters long if they are created by the user, and at least 6 characters long if they are generated automatically. Important: Passwords may be entirely numeric
- The service is recommended to check passwords based on their appearance in the black list of compromised values
- The service should not allow the use of "dictionary" or simple passwords (111, aaaa, qwerty, etc.). Fortunately, there are many such lists on the Internet to check.
- The service sholud prohibit passwords that contain the username or part of it
- Very important (and sometimes a popular myth): No other complexity requirements for memorized secrets should be imposed (like variety of chars, case, digits).
- The service shuold technically support the use of passwords of at least 64 characters in length
- All printing ASCII [RFC 20] characters should be acceptable, including spaces
- Unicode [ISO/ISC 10646] characters (including emojis!) should be acceptable, including normalization and equal number of symbols (1 UNICODE = 1 ASCII)
- The service shall not permit the user to store a “hint” that is accessible to an unauthenticated claimant (Do you remember hints in earlier Windows versions on the login page?)
- Conversely, the service shall not prompt subscribers to use specific types of information and help them not to use typical phrases (e.g., “What was the name of your first pet?”)
- The service should show examples and explain to users why his or her password is not secure and refuse to use it if it matches a blacklist or dictionary
- The service shall implement a rate-limiting mechanism that effectively limits the number of failed authentication attempts that can be made on the subscriber’s account (in fact, the number given is quite high - 100, however, it's good practice to use additional mechanisms such as captcha, time limit between attempts, etc.)
- Ones more myths breaking: the service should not require passwords to be changed arbitrarily (e.g., periodically). Instead the service shall force a change if there is evidence of compromise of the authenticator.
- The service should permit claimants to use “paste” functionality when entering a memorized secret. This facilitates the use of password managers, which are widely used and in many cases increase the likelihood that users will choose stronger memorized secrets.
- The service should offer an option to display the secret — rather than a series of dots or asterisks ("*"). It's also useful to permit the user’s device to display individual entered characters for a short time after each character is typed to verify correct entry (particularly applicable on mobile devices).
- The service also has requirements for reliable password storage and protection when it is requested (transmitted), such as a hash with a "salt", communication encryption, etc.