0
我正在開發一個網站,允許使用Google Authenticator進行雙因素身份驗證。我的問題是:什麼是存儲用戶密鑰的最佳方式?如果我將它保存在數據庫中並且被黑客攻擊,那麼攻擊者將能夠生成一次性密碼。而且我不能像單向加密密碼那樣加密它,因爲我需要這個祕密種子來生成一次性密碼。如何安全存儲Google身份驗證器密鑰?
我正在開發一個網站,允許使用Google Authenticator進行雙因素身份驗證。我的問題是:什麼是存儲用戶密鑰的最佳方式?如果我將它保存在數據庫中並且被黑客攻擊,那麼攻擊者將能夠生成一次性密碼。而且我不能像單向加密密碼那樣加密它,因爲我需要這個祕密種子來生成一次性密碼。如何安全存儲Google身份驗證器密鑰?
您可以將其存儲在安全令牌(智能卡)中,但是您必須配置對該安全令牌的訪問權 - 這會將您帶回原始問題。如果您能夠在啓動應用程序之前執行操作,那麼您可以使用基於密碼的加密來保護(包裝)密鑰。或者您可能需要密碼才能持有密鑰。 USB存儲卡也可用於永久存儲密鑰(不要忘記備份)。
顯然,首先保護對應用程序的訪問是一個好主意。您在某個時間點可能仍然需要內存中的密鑰,因此如果內存不受保護,攻擊者就可以將其剔除。
另一種方法經常用它來混淆密鑰。但是,無論以何種方式進行混淆,一個堅定的黑客通常都不會有太多的麻煩。
在另一個StackExchange站點有一個關於此問題的較舊討論:http://security.stackexchange.com/questions/24092/how-to-store-otp-seed-securely-at-the-validating-server – anthonyryan1