2017-01-25 44 views
1

當用戶在我們網站上註冊本身,我們遵循一些定義良好的安全標準:收集密碼的拓撲結構,從用戶以安全的方式

  • 生成鹽
  • 哈希(鹽+密碼)
  • 存儲哈希密碼和鹽中的數據庫

最近,一個熱門話題是「密碼拓撲」。例如,我們應該防止用戶生成像Ullllldd(大寫字母,小寫字母,兩位數字)之類的密碼,因爲如果攻擊者只關注該拓撲結構,它們非常常見,並且更容易通過暴力破解。我們現在想要生成關於我們網站上使用的最常見拓撲的信息。顯然,我們不能在我們的數據庫中使用哈希密碼信息 - 我們無法從該哈希中恢復密碼信息。我們的想法是保持一個拓撲表,只要有新用戶註冊,它就會被填充。例如:

用戶「joe」用密碼「pass」註冊。我們看到拓撲「uuuu」是否已經存在。如果沒有,請將其添加到count = 1的數據庫表中。如果是這樣,請將計數增加1.這當然有點冒險:如果我們的db受到攻擊,攻擊者會突然知道我們最常見的拓撲結構!

所以我的問題是:如何收集和存儲密碼拓撲信息而不會產生新的安全風險?

回答

0

您的數據庫應該是每個使用的拓撲的計數,不需要存儲附加拓撲的用戶ID。在第二個表上,存儲哪些用戶ID在此數據庫中表示。

訣竅來自填充和更新數據庫。每當用戶更改其密碼時,收集並存儲密碼拓撲信息。在這裏,您將能夠計算新舊拓撲結構,並減少/增加計數。如果用戶未被表示到數據庫中,請添加它們,並將其新拓撲添加到計數中。