要求密码的特定字符而不是整个密码的安全性如何?

信息安全 密码
2021-08-09 02:12:38

在某些经过密码验证的网站中,系统会要求您从密码中随机选择特定字符,而不是整个单词/短语。例如,它可能会说“输入第 1、4 和 8 个字母”并提供三个单独的输入框。

根据我对安全机制的了解,我预计这比输入整个密码、加盐+散列并将其与存储的散列进行比较更安全,因为在任何地方都看不到纯文本。

但是,该系统被(希望)非常安全的网站使用,包括英国的某些银行网站。

所以我的两部分问题是,这是否与传统的盐/哈希比较一样安全,为什么会这样?

3个回答

这种密码输入方法在波兰的银行网站中很流行。它被称为掩码密码。它旨在保护键盘记录器 - 并且仅限键盘记录器。密码传输本身受到 SSL 的保护,不会被嗅探,因此原因是如果客户端设备上安装了键盘记录器,它将永远无法访问完整的密码。

但是,这个逻辑有一些缺陷:

  1. 攻击者一次尝试只需输入更少的字符(例如,只有 4 个字符,通常只有数字)。因此,暴力破解此身份验证步骤更容易。这就是为什么需要将掩码密码与帐户锁定策略配对。

  2. 在某些位置(例如,由键盘记录器/屏幕抓取器收集)只有几个已知字符,攻击者可以简单地在服务器选择他知道的位置时尝试登录,并在选择其他位置时刷新。因此,掩蔽密码实现经常将帐户服务器端的位置选择存储一定时间(例如一天),直到成功验证。

  3. 了解整个密码只需要捕获一些成功的身份验证(例如,当密码长度为 12 并且总是选择 4 个位置时,通常需要 8 次尝试),所以键盘记录器/屏幕抓取器会得到它 - 只需要一点点长一点。

  4. 网上银行身份验证的最大威胁是恶意软件(浏览器中的人攻击),如ZeUS 或 SpyEye,此类软件通常会进行完全克服掩码密码方案的社会工程攻击。例如,该软件可以:

    • 要求完整的密码
    • 假身份验证后显示假密码更改表
    • 模拟密码输入错误并重新显示表单以及其他要填写的位置,以在 2-3 次尝试中获得完整密码

用户难以处理屏蔽密码,并且难以正确实施。至少开发人员需要添加账户锁定策略、仓位选择存储和部分哈希。

与普遍的看法相反,屏蔽密码,尤其是在电子银行网站中,虽然它们提供基本键盘记录保护,但完全无法抵御其他更普遍的威胁,例如利用社会工程的恶意软件。

我知道一个网上银行网站,它首先要求输入密码(数字和字符),然后您必须用鼠标输入第二个 6 位密码的两位数字(仅限数字)。您会在屏幕上看到一个数字键盘,然后单击数字。

这背后的原因是恶意软件(可能)比记录您的按键更难跟踪您的鼠标移动。

在上面的例子中,它显然比一个密码更安全。

在您描述的情况下,一个人必须通过键盘输入密码的特定字符,原因可能是如果有人记录或网络钓鱼您的输入,他仍然没有您的完整密码。

我(只能)猜测用于验证输入的机制是安全的,如果您存储每个可能的输入组合的哈希,您仍然可以使用哈希。

这是一篇关于部分密码的简短维基百科文章,其中提到了这一点。

关于询问特定字符的附带说明是,用户可能会 在纸上或更糟的情况下输入密码 -在记事本中- 只是为了确保他们输入正确的字母。否则将导致帐户锁定。

例子:

  1. 银行可能会警告用户使用强密码
  2. 用户创建强密码,比如说CorrectHorseBatteryStaple
  3. 现在银行询问密码#4、#10和#16字母
  4. 虽然在纸/记事本上很容易,但可能很难计算内存中哪个字母是哪个字母。

结果,用户不是记住密码,而是将密码用数字字母存储在纸上:)(或文本文件中!)