我正在爲我的一個項目實施雙因素身份驗證系統,並且希望建立一些「一次性代碼」,就像Google對其雙因素身份驗證一樣。爲雙因素身份驗證存儲「備份代碼」的最佳方法?
我的問題是,將這些代碼存儲在服務器上最安全的方法是什麼?他們需要在數據庫中加密嗎?我會使用像bcrypt這樣的東西,讓他們以同樣的方式散列密碼嗎?考慮到攻擊者會知道每個散列代表一個6位數字,這會使暴力時間減少到幾乎沒有。
我正在爲我的一個項目實施雙因素身份驗證系統,並且希望建立一些「一次性代碼」,就像Google對其雙因素身份驗證一樣。爲雙因素身份驗證存儲「備份代碼」的最佳方法?
我的問題是,將這些代碼存儲在服務器上最安全的方法是什麼?他們需要在數據庫中加密嗎?我會使用像bcrypt這樣的東西,讓他們以同樣的方式散列密碼嗎?考慮到攻擊者會知道每個散列代表一個6位數字,這會使暴力時間減少到幾乎沒有。
問題有點含糊,但這裏有一些指針:
123456
的md5hash是e10adc3949ba59abbe56e057f20f883e
- 正如您所說的那樣,輕鬆強制強制。但是如果我添加用戶的ID呢?您可以將其添加到散列並重新散列或將其添加到原始文本,如下所示:123456aneroid
的md5hash是74821b76b332b28532136eb58e1b7f40
。將您的一次性代碼(OTC)視爲密碼。現在使用安全最佳實踐來管理密碼。
此外,你不應該使用6位數字作爲場外交易。就像我說的,這些(相當於)密碼,你不希望這些密碼很弱。
有關如何安全存儲密碼的更多信息,請參閱Password Storage Cheat Sheet。