我正在开发一个允许使用Google身份验证器进行双因素身份验证的网站。我的问题是:存储用户密钥的最佳方法是什么?如果我将其保存在数据库中并且被黑客入侵,则攻击者将能够生成一次密码。而且我无法像使用单向加密的密码一样加密它,因为我需要这个秘密种子来生成一次性密码。
答案 0 :(得分:0)
您可以将其存储在安全令牌(智能卡)中,但之后您必须配置对该安全令牌的访问权限 - 这会将您带回原始问题。如果您能够在启动应用程序之前执行操作,则可以使用基于密码的加密来保护(换行)密钥。或者你可能需要一个PIN码来存放钥匙的智能卡。 USB存储卡也可用于永久存储密钥(不要忘记备份)。
显然,首先保护对应用程序的访问权限是个好主意。在某些时候你可能仍然需要内存中的密钥,因此如果内存不受保护,攻击者就可以将其删除。
另一种经常用它来混淆密钥的方法。但是,一个坚定的黑客通常不会在以混淆的方式检索密钥时遇到太多麻烦。