2014-01-23 77 views
0

我正在开发一个网站,允许使用Google Authenticator进行双因素身份验证。我的问题是:什么是存储用户密钥的最佳方式?如果我将它保存在数据库中并且被黑客攻击,那么攻击者将能够生成一次性密码。而且我不能像单向加密密码那样加密它,因为我需要这个秘密种子来生成一次性密码。如何安全存储Google身份验证器密钥?

+1

在另一个StackExchange站点有一个关于此问题的较旧讨论:http://security.stackexchange.com/questions/24092/how-to-store-otp-seed-securely-at-the-validating-server – anthonyryan1

回答

0

您可以将其存储在安全令牌(智能卡)中,但是您必须配置对该安全令牌的访问权 - 这会将您带回原始问题。如果您能够在启动应用程序之前执行操作,那么您可以使用基于密码的加密来保护(包装)密钥。或者您可能需要密码才能持有密钥。 USB存储卡也可用于永久存储密钥(不要忘记备份)。

显然,首先保护对应用程序的访问是一个好主意。您在某个时间点可能仍然需要内存中的密钥,因此如果内存不受保护,攻击者就可以将其剔除。

另一种方法经常用它来混淆密钥。但是,无论以何种方式进行混淆,一个坚定的黑客通常都不会有太多的麻烦。