Когда пользователь регистрируется на нашем сайте, мы следуем некоторые четко определенные стандарты безопасности:Сбор паролей топологий от пользователей безопасным способом
- генерированием соль
- хэш (соль + пароль)
- хранить хешированный пароль и соль в БД
В последнее время горячей темой является «топология паролей». Например, мы должны запретить пользователям генерировать пароль, например Ullllldd
(верхний регистр, 5 раз в нижнем регистре, две цифры), потому что они настолько распространены и более легко взламываются грубой силой, если злоумышленник просто фокусируется на этой топологии. Теперь мы хотели бы получить информацию о наиболее распространенных топологиях, используемых на нашем сайте. Очевидно, что мы не можем использовать хешированную информацию о пароле внутри нашей БД - мы не можем восстановить информацию о пароле из этого хэша. У нас была идея сохранить таблицу топологии, которая заполняется всякий раз, когда регистрируется новый пользователь. например:
Пользователь «joe» регистрируется с паролем «pass». мы видим, что топология «uuuu» уже существует. Если это не так, добавьте его в таблицу базы данных с count = 1. если это произойдет, увеличьте количество на 1. Это, конечно, немного рискованно: если наш db получает компрометацию, наш злоумышленник внезапно знает наши самые распространенные топологии!
Итак, мой вопрос: как собирать и хранить информацию о топологии паролей без создания нового риска для безопасности?