只询问密码的单个字符是不好的做法吗?

信息安全 密码 哈希
2021-08-17 18:51:40

我使用的一些金融网站以一种特殊的方式使用密码。他们没有询问我整个密码字符串,而是要求我输入例如“密码的第 3、5 和 8 个字符”,即密码字符串的随机字符组合。

我认为如果使用共享随机数字表等完成,这将是有意义的。但这是一个密码。为了做到这一点,他们必须要么存储我的密码而不进行散列,要么存储他们想要询问的所有组合的散列,这听起来也很糟糕。我是否认为这是一种糟糕的安全做法?

2个回答

你基本上是对的;这是不好的做法,有几个原因:

  • 正如您所注意到的,它需要在服务器端将密码存储为纯文本或某种可逆格式。
  • 重复输入密码对“肌肉记忆”起作用,它允许用户通过键盘上的一系列手势“记住”他的密码;询问特定字母会锻炼大脑的不同部分,并可能引发危险行为,即写下密码。
  • 如果该站点只要求三个字符,那么攻击者有相当大的机会通过简单地回复三个随机字母来获得访问权限。在线字典攻击也可以奏效。(当然,银行网站通常将其与触发愉快锁定系统结合使用,但聪明的攻击者会在达到自动锁定限制之前切换到另一个目标帐户。)

银行网站这样做的三个主要原因是:

  1. 如果他们只要求三个字母,并不总是相同,那么键盘记录器或肩冲浪者将无法立即获取他非法获得的知识。它可以被认为是某种损害遏制,其中密码只是部分泄露。

  2. 只要求一些信件是好莱坞认可的安全措施。这是一场精彩的表演。客户不知道信息安全的真正含义,会看到并认为“哇,这很安全!”。

  3. 业内许多人的影响力不亚于普通客户。不少“安全架构师”会看到这样的系统和认为“哇,这是安全的!”。

这是非常糟糕的做法。今天的密码必须经过哈希处理,以弥补密码数据库可能丢失的情况。密码的各个元素可用于身份验证这一事实意味着使用可逆加密而不是散列,正如 TP 已经指出的那样。这很糟糕,因为如果数据库和加密密钥都被盗,那么所有密码都会丢失。散列(使用强密码)使这成为不可能。如果密码经过哈希处理,至少使用强密码的人是安全的。

我相信一些机构加密而不是哈希的原因是后端可能需要完整的密码用于某些目的,例如进一步的身份验证。一些网站在联系帮助台时使用密码的最后 4 位作为“安全问题”。但这是一个可怕的原因,并且可能是因为大多数知名网站使用的安全问题方法尚未实施。

当我不得不请求重置时,我什至看到实际密码出现在我的电子邮件中 ​​- 通过电子邮件实施密码重置然后请求新密码比仅仅通过电子邮件发送密码更复杂!最重要的是,仅保持密码加密(甚至明文)并将其用于其他目的,而不是仅实施密码重置机制以提示输入新密码更容易。

这不好的另一个原因是今天大多数关心密码的人只使用密码管理器。要求强密码的各个元素容易出错,而且比仅使用安全密码管理器要困难得多。

最后,在通常使用弱密码的情况下,使用强密钥加密比散列更安全,因为弱密码散列现在可以很快被破解。但在这种情况下,首选散列和加密,而不仅仅是加密。