您可以采取哪些步骤来使 SRP 的离线破解更加困难?

信息安全 密码学 密码 哈希 密钥交换 威胁缓解
2021-08-31 22:17:02

在暴雪黑客攻击之后,我可以采取哪些步骤来使 SRP 的离线破解更加困难?

我的问题假设您的数据库已经消失,并且您或多或少地正确实施了 SRP。

相关: 暴雪用来保护密码的 SRP 有多安全?

3个回答

在 SRP 中,服务器存储密码派生令牌,可用于在离线字典攻击中猜测密码(攻击者尝试潜在密码,直到找到匹配项)。这不是 SRP 的缺陷:无论使用何种身份验证协议,服务器都必然包含一些类似的密码派生数据。SRP 的神奇之处在于协议中没有其他地方会产生这样的密码派生数据(即使攻击者试图冒充服务器)。但是如果服务器本身被攻破(攻击者知道它的所有秘密),那么离线字典攻击是可能的。

加强此令牌涉及常用工具,即盐和迭代(请参阅bcrypt)。实际上,这意味着 bcrypt 的输出在 SRP 中用作“密码”。

有两种选择。SRP 计算用户密码的哈希值,然后取幂并存储结果。选项 1:您可以将该哈希替换为“慢速哈希”——我推荐使用 PBKDF2。选项 2:您可以使用 PBKDF2 对密码进行预哈希处理,然后像以前一样使用结果。我在对Can I use a key-derivation-function as the hash function H in SRP? 的回答中提供了详细的建议?; 请在此处查看我的答案以获取详细的数学知识。这些选项中的任何一个都可以解决您的问题。

有关的:

我很惊讶人们没有注意到您可以并且应该加密数据库中的验证程序。通常对于大公司,数据库是隔离的基础设施。数据库服务器的备份机制通常也故意不同于应用程序服务器和 Web 基础设施的主机级备份。数据库备份通常在异地和磁带上,保留期较长。通常还有不同的专家和团队负责数据库基础设施和备份。在这种情况下,加密验证器显然是额外的保护,以防止快递公司将它们移到异地而丢失磁带。

如果您对验证者进行加密,则存在保存和备份加密密钥的位置的问题。像银行这样的大公司不得不为他们的 SSL 密钥和密码以及其他敏感的安全配置解决这个问题。他们不会将它们放在与数据库备份相同的磁带上。通常,他们会有一个隔离的安全网络,可以管理一线主机,并在该网络上的两个数据中心拥有两台主机(或两个专用 NFS 头),通过 unison/rsync 镜像备份加密密钥和安全配置的副本.

将所有这些放在一起,您应该在主机级备份中排除的应用程序服务器上拥有一个安全的配置位置或共享。在该位置中,您将一个对称密钥只读到您的应用程序服务器用户 ID。然后应用程序使用它来加密/解密用户 SRP 验证程序,因为它被保存/加载到主数据库。您在每个数据中心的隔离主机上备份的密钥。如果您完全丢失了所有内容,那么您可以从异地磁带重建数据库并创建一个新的对称密钥。您的所有用户将不再能够登录,而只会使用您的密码重置逻辑来设置新的验证者。