我正在编写一个演示 2 因素身份验证的小 Web 应用程序。我正在使用RFC 6238中描述的 TOTP 协议。在我们的方案中,除了每个用户的 b-crypted 密码哈希之外,我们还存储了一个密钥,用于验证一次性代码。
我正在使用 postgreSQL 作为数据库后端。让我们假设我的数据库在我不知情的情况下遭到入侵。密码都是安全的,因为我正在对它们进行加盐和加密:没有简单的攻击会泄露所有密码,除了暴力破解每个密码。
有什么方法可以安全地存储 TOTP 的密钥吗?我不能散列它,我需要它的明文进行 OTP 验证。
有没有办法安全地存储这个密钥?