Эта проблема
Я регулярно провожу дебаты со своим техническим директором, которые обычно начинаются примерно так ...
CTO: My password expired, that should never happen.
Me : It's a security risk to never expire passwords.
CTO: It's a security risk to force passwords to be reset because users have bad habits.
Me : Yes but the security is in the user not the system, enforcing password expiry ensures the system is secure in the event of an unknown breach of the userbase.
Это поднимает интересный вопрос о том, что ни один из нас в первую очередь не является системным администратором, но занимает позицию, в которой мы должны применять политику в этом отношении, на самом деле не согласны с тем, каким должен быть правильный ответ.
Мое положение
Система более безопасна, если вы заставляете всех пользователей менять свои пароли в течение X промежутка времени, где X вычисляется путем определения силы алгоритма, используемого для защиты пароля, и расчетного времени для взлома (с помощью грубой силы) необработанного значения обратно в оригинальный пароль.
Постоянный технический директор
Постоянное принуждение пользователей к смене паролей приводит к появлению шаблонов / **** 123 "похожих" шаблонов с течением времени, или пользователи записывают пароли, что означает, что "вредная привычка" пользователей представляет больший риск для системы, чем данные скомпрометированы более техническим способом (например, путем грубой силы).
Поэтому я хотел бы знать
Могу ли я каким-то образом доказать, что погода или нет, мы должны применять политику сброса пароля на основе лучших отраслевых практик?
ИЛИ
Один из нас просто неправ?
Ваш технический директор более прав, но это более сложный вопрос. NIST ( https://csrc.nist.gov/ ), вероятно, является справочником "лучших практик отрасли".
Когда речь идет о длине паролей, это лучший способ, а не сложность или частые изменения. ( https://nakedsecurity.sophos.com/2016/08/18/nists-new-password-rules-what-you-need-to-know/ ) Они предлагают фразы или предложения, а не одно слово.
Вы описываете хеширование паролей перед их сохранением, что с логической точки зрения является лучшей альтернативой, чем простой текст. Проблема в том, что в системах с несколькими графическими процессорами в секунду могут вычисляться и проверяться десятки и сотни хешей.
По ссылкам ниже обсуждаются изменения. Я бы посоветовал обратить особое внимание на «соление» паролей перед их хешированием.
https://nakedsecurity.sophos.com/2016/08/18/nists-new-password-rules-what-you-need-to-know/
https://www.passwordping.com/surprising-new-password-guidelines-nist/
Да, это увеличивает риски безопасности, если вы не заставляете пароли истекать.
Как сказал ваш технический директор, из-за того, что у нас есть вредные привычки, пароли в конечном итоге так или иначе будут просачиваться, например введите пароль в поле ввода пользователя, оставьте его незашифрованным в каком-нибудь файле конфигурации приложения и т. д.
Принуждение пользователей к смене паролей повышает безопасность с точки зрения доступности, утечка пароля, срок действия которого истекает через 15 дней, заставит злоумышленника воспользоваться им в следующие 2 недели, тогда как постоянный пароль оставит дверь открытой для внешней опасности.
Если вы видите это и с точки зрения злоумышленника, то довольно неприятно знать, что вы, возможно, сможете обнюхать пароль после нескольких недель кражи данных только для того, чтобы увидеть, что на полпути обработки все эти пароли изменились, и вам придется начинать заново.
Иногда лучший способ усложнить взлом вашей системы - не сделать ее более устойчивой, а скорее вообще избежать вреда, дав людям понять, что они зря потратят свое время.
Мне кажется, что у вас есть ленивый технический директор, который не хочет придумывать новые пароли.