一些网站(例如网上银行)如何只要求密码中的特定字符而不将其存储为明文?

信息安全 密码学 验证 密码
2021-08-21 08:42:27

我认为系统如何强制执行最少数量的更改字符...会回答我的问题,但似乎这是另一种情况。

当我登录我的网上银行帐户时,系统会提示我输入来自四位 PIN 的三个随机数字,以及来自我的(长、随机)密码的三个随机字符。

根据我对这一切的有限理解,银行无法从这个登录创建我的密码哈希,因为他们没有我的完整密码。那么他们是否以明文形式存储我的密码并比较单个字符?便利性/安全性是否平衡?

这篇博文提示您提出这个问题:谁在乎密码安全?NatWest 没有

4个回答

虽然我不明确知道银行如何处理这一要求,但@rakhi 提到的替代过程是使用HSM和可逆加密。

这个想法是完整的密码将存储在使用对称密码(例如,AES)加密的数据库中。然后,当密码字符被传递给应用程序时,它们与加密密码一起被输入 HSM。

然后,HSM 可以解密密码并确认这 3 个字符与预期的一样,向应用程序返回通过/失败响应。因此,在任何时候都不会明文保存密码(除了在被认为是安全的 HSM 中)。

这将与 ATM 网络处理 PIN 加密的方式相关(例如,对称加密和 HSM)

每当您遇到需要了解密码而不是完整密码哈希的情况时,您可以假设密码没有经过哈希处理。虽然提到了 PCI-DSS,但据我所知,没有任何规定适用于银行加密或散列密码信息。PCI-DSS 不涵盖您的银行帐户信息,包括使用您的 PIN 或其某些变体登录。

如果它们很好,则使用加密存储密码。如果它们不是那么好,它确实可以以明文形式存储。

我承认我更喜欢这里的权衡。如果整个密码数据库遭到破坏,可能会面临更大的攻击风险,但我认为银行的安全性应该更高。如果怀疑数据库遭到破坏,则必须更改所有内容,无论是散列还是加密。无论哪种情况 使用这种特定方法,攻击者需要更长的时间和更大程度的复杂性才能获得足够有用的信息来使用键盘记录器进行攻击。

一些相关的东西:http ://projecteuler.net/index.php?section=problems&id=79

NatWest 的计划让我觉得价值可疑。在 NatWest 的计划中,网络钓鱼攻击可能会窃取您的整个 PIN 以及您的全部或大部分密码。以下是网络钓鱼攻击的工作原理。

  1. 钓鱼网站会显示一个虚假的登录屏幕,要求输入 3 位 PIN 码和 3 个字符的密码。

  2. 用户将输入他们的答案。

  3. 网络钓鱼站点现在会显示一个响应,表明该条目不正确,并再次提示用户。

  4. 许多用户可能会认为他们输入了错误的内容,然后再试一次。

如果网络钓鱼者很聪明,来自网络钓鱼站点的第二个提示将要求提供一组不同的数字和字符。如果用户再次尝试,则网络钓鱼站点可以获知 PIN 的所有 4 位数字和用户密码的 6 个字符。(注意,NatWest 要求用户选择包含 6-8 个字符的密码,所以 6 个字符的密码保证全部或几乎全部。)此时,游戏结束。

因此,我不清楚 NatWest 的计划是否能给你带来任何好处。

类似的问题中,@captaincomic 的评论链接到了这篇文章:部分密码 - 如何?(来自 Archive.org)它解释了如何在以可恢复形式存储密码或单独散列每个字符的情况下允许此功能 - 使用 Shamir 秘密共享方案。