當用戶在我們網站上註冊本身,我們遵循一些定義良好的安全標準:收集密碼的拓撲結構,從用戶以安全的方式
- 生成鹽
- 哈希(鹽+密碼)
- 存儲哈希密碼和鹽中的數據庫
最近,一個熱門話題是「密碼拓撲」。例如,我們應該防止用戶生成像Ullllldd
(大寫字母,小寫字母,兩位數字)之類的密碼,因爲如果攻擊者只關注該拓撲結構,它們非常常見,並且更容易通過暴力破解。我們現在想要生成關於我們網站上使用的最常見拓撲的信息。顯然,我們不能在我們的數據庫中使用哈希密碼信息 - 我們無法從該哈希中恢復密碼信息。我們的想法是保持一個拓撲表,只要有新用戶註冊,它就會被填充。例如:
用戶「joe」用密碼「pass」註冊。我們看到拓撲「uuuu」是否已經存在。如果沒有,請將其添加到count = 1的數據庫表中。如果是這樣,請將計數增加1.這當然有點冒險:如果我們的db受到攻擊,攻擊者會突然知道我們最常見的拓撲結構!
所以我的問題是:如何收集和存儲密碼拓撲信息而不會產生新的安全風險?