我的银行是否以纯文本形式存储我的密码?

信息安全 密码
2021-08-27 08:12:16

我的银行(以及我遇到的每家银行)在登录时只要求输入密码中的单个字符。我的银行是否以纯文本形式存储我的密码?

4个回答

我同意StrangeWill 的回答看来他们正在使用可逆加密存储它,这在许多方面相当于将其存储为纯文本——因为完全控制其系统的恶意用户可以恢复纯文本密码。

您应确保您的银行密码不会被用于其他目的;尽管这始终是一种很好的做法——尤其是对于任何安全问题并且您不是亲自管理系统的情况。

如果他们没有以可逆格式存储密码,那么他们必须为您的密码的 56 种不同排列(如果您的密码长度为 8 个字符;可以8 choose 3=56从中选择 3 个字符)中的每一种预先存储哈希值;并用唯一的长盐对每个排列进行散列(所以彩虹表是不可能的)。但是,如果他们系统上的攻击者发现了您的哈希值;他们可以轻松地重建您的密码,因为您对每个盐的有效密码只有三个字符长。大约需要 80 3约 50 万次尝试破解一个哈希;或大约 2800 万次尝试破解所有 56 个。由于单个现代 GPU 每秒可以生成数十亿个(标准 - md5/sha1)哈希;这是在一秒钟内被暴力破解的。他们可以通过使用加密安全哈希 (bcrypt) 或密钥拉伸来加强这一点——尽管这似乎不太可能,因为他们必须计算大量哈希来存储和检查您的密码,同时考虑到密码有多弱最初(并且它增加了身份验证模块的 DoS 攻击风险)。

仅供参考:您的银行决定采用这种方法的原因是它有助于防止重放攻击。例如,如果您在运行键盘记录器的不安全计算机上登录银行,键盘记录器将无法在下一次尝试使用您刚刚使用的三个字符登录。这在实践中有点棘手(例如,如果用户不输入密码,您必须确保请求的三个字符不会改变,然后再试一次(从不同的 IP 地址),您将得到被锁定并且必须在连续 10 次错误尝试等后致电您的银行)。

他们可能使用可逆加密存储它。尽管没有对其系统进行审核,不可能真正知道,但这很可能是由于他们的高安全要求。

一些可能的场景

  • 银行正在以明文形式存储密码(不太可能)
  • 银行正在存储加密密码(未散列)
  • 银行存储每个字符的哈希(加盐)(不要惊讶,我已经看到了)

这显然不是一个完整的列表,因此请随时编辑添加评论

如前所述,除非他们告诉您,否则您根本不会知道。

然而,值得指出的是,许多银行(尤其是较大的银行)对密码复杂性进行了限制,因为 Web 界面只是一个拥有数十年历史的大型机系统的前端,并且由于其他原因而具有相应的限制。这并不意味着密码没有被散列,它只是意味着古老的系统由于其他愚蠢的原因不能接受某些类型(或长度)的输入。

那个更好吗?不必要。但至少这也不一定是无能的反映。