【问题标题】:How to authenticate against specific letters of a password [duplicate]如何针对密码的特定字母进行身份验证[重复]
【发布时间】:2013-02-15 20:51:42
【问题描述】:

某些网站(例如 Halifax 和 Barclaycard 等银行)会提示用户输入特定的密码字母。但是,如果用户的密码被加盐和散列,那么我看不到如何使用各个字母。所以要么密码没有被散列,要么有另一个过程在起作用。可能每个单独的密码字母都经过加盐和哈希处理,但这似乎不是特别安全。

谁能解释这里使用的是什么身份验证模型?鉴于这是相当普遍的地方,我必须假设有一个受信任的模型来支持这种做法。

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

【问题讨论】:

  • 我希望您不要考虑在自己的项目中使用该模型。
  • 目前还没有,但鉴于它存在于我所描述的情况中,它会让我相信它背后有一个强大的模型。正因为如此,我想知道它是否是一个可行的选择以及它是如何工作的,最好是从已经实施它的人那里。
  • 哦,你不应该这样假设!即使它被看似大公司使用,他们仍然可能是错误的。我的意思是,如果只要求您输入密码的三个字母,那么无论您的实际密码有多长,访问您帐户的密码也只有三个字母。
  • 没错,我完全同意,尽管尝试通常受到限制,并且不同的会话需要不同的字母。但是是否有一种强大/安全的方式来存储密码并执行此操作?

标签: security authentication hash


【解决方案1】:

您的信任可能错位了。加盐并不能防止暴力攻击,只能使用彩虹表。如果你给每个单独的字符加盐,那么这将是微不足道的破解。类似地,对四个字符的每个组合进行加盐和散列处理也很容易被蛮力破解。您的密码几乎可以肯定是以未加密的方式存储的。

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

如果你仔细想想,不可能安全地做到这一点。如果您有一些预言机需要 1 秒来验证密码的四个字符(每个可能有 36 个可能的值),那么您可以在平均 839,808 次尝试后破解四个字符,这需要 10 天。如果密码长度为 12 个字符,则完全破解它需要一个月的时间。登录时间不到 1 秒。

【讨论】:

  • 你确定是这样吗?如果金融机构以未加密的方式存储我们的密码,我会感到惊讶,即使数据库的访问权限已被确定。不要忘记,过去几年的许多安全漏洞实际上都涉及到场外数据。
  • 我不确定这一点,而且你不太可能找到知道的人。没有银行会告诉任何人他们是如何做到这一点的,以防他们因此受到负面新闻。我想说的是,在数学上不可能做得更好。如果您可以有效地执行该查询,那么攻击者也可以,这意味着他可以一次破解四个字符。
  • @Digbyswift 我已经编辑了我的答案以强调这一点。
  • 感谢您提供信息并扩展您的回答。
猜你喜欢
  • 2019-08-26
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 2020-01-14
  • 2017-01-28
  • 1970-01-01
相关资源
最近更新 更多