如何针对密码的特定字母进行身份验证

时间:2013-03-01 11:09:45

标签: security authentication hash

某些网站(例如哈利法克斯和巴克莱卡等银行)会提示用户输入密码的具体信件。但是,如果用户的密码被盐渍和散列,那么我无法看到如何使用单个字母。因此,密码不会被哈希处理,或者还有另一个进程正在运行。可能每个密码的字母都被盐渍和散列,但这似乎并不特别安全。

有人能解释一下这里使用的身份验证模型吗?鉴于这是相当普遍的地方,我必须假设有一个值得信赖的模型来支持这种做法。

编辑:我找到的最佳答案实际上是security.stackexchange.com 'How do some sites (e.g. online banks) only ask for specific characters from a password without storing it as plaintext?',所以我也会投票结束我的问题。

1 个答案:

答案 0 :(得分:1)

您的信任可能是错误的。盐渍不会阻止蛮力攻击,只能使用彩虹表。如果你对每个角色进行腌制,那么这将是微不足道的。类似地,对四个字符的每个组合进行盐析和散列也很容易被蛮力破解。您的密码几乎肯定是以未加密的方式存储的。

这并不像听起来那么糟糕,哈希只对阻止获取密码数据库内容的人有用。如果人们可以访问您的银行密码数据库,那么您很可能还有其他问题。例如,他们可能不需要您的密码来转账。

如果您考虑一下,无法安全地执行此操作。如果你有一个oracle需要1秒来验证密码的四个字符(每个字符可能有36个可能的值),那么你可以在平均839,808次尝试后破解四个字符,这需要10天。如果密码长度为12个字符,则需要一个月才能完全破解密码。登录时间不到1秒。