我使用的一些金融网站以一种特殊的方式使用密码。他们没有询问我整个密码字符串,而是要求我输入例如“密码的第 3、5 和 8 个字符”,即密码字符串的随机字符组合。
我认为如果使用共享随机数字表等完成,这将是有意义的。但这是一个密码。为了做到这一点,他们必须要么存储我的密码而不进行散列,要么存储他们想要询问的所有组合的散列,这听起来也很糟糕。我是否认为这是一种糟糕的安全做法?
我使用的一些金融网站以一种特殊的方式使用密码。他们没有询问我整个密码字符串,而是要求我输入例如“密码的第 3、5 和 8 个字符”,即密码字符串的随机字符组合。
我认为如果使用共享随机数字表等完成,这将是有意义的。但这是一个密码。为了做到这一点,他们必须要么存储我的密码而不进行散列,要么存储他们想要询问的所有组合的散列,这听起来也很糟糕。我是否认为这是一种糟糕的安全做法?
你基本上是对的;这是不好的做法,有几个原因:
银行网站这样做的三个主要原因是:
如果他们只要求三个字母,并不总是相同,那么键盘记录器或肩冲浪者将无法立即获取他非法获得的知识。它可以被认为是某种损害遏制,其中密码只是部分泄露。
只要求一些信件是好莱坞认可的安全措施。这是一场精彩的表演。客户不知道信息安全的真正含义,会看到并认为“哇,这很安全!”。
业内许多人的影响力不亚于普通客户。不少“安全架构师”会看到这样的系统和也认为“哇,这是安全的!”。
这是非常糟糕的做法。今天的密码必须经过哈希处理,以弥补密码数据库可能丢失的情况。密码的各个元素可用于身份验证这一事实意味着使用可逆加密而不是散列,正如 TP 已经指出的那样。这很糟糕,因为如果数据库和加密密钥都被盗,那么所有密码都会丢失。散列(使用强密码)使这成为不可能。如果密码经过哈希处理,至少使用强密码的人是安全的。
我相信一些机构加密而不是哈希的原因是后端可能需要完整的密码用于某些目的,例如进一步的身份验证。一些网站在联系帮助台时使用密码的最后 4 位作为“安全问题”。但这是一个可怕的原因,并且可能是因为大多数知名网站使用的安全问题方法尚未实施。
当我不得不请求重置时,我什至看到实际密码出现在我的电子邮件中 - 通过电子邮件实施密码重置然后请求新密码比仅仅通过电子邮件发送密码更复杂!最重要的是,仅保持密码加密(甚至明文)并将其用于其他目的,而不是仅实施密码重置机制以提示输入新密码更容易。
这不好的另一个原因是今天大多数关心密码的人只使用密码管理器。要求强密码的各个元素容易出错,而且比仅使用安全密码管理器要困难得多。
最后,在通常使用弱密码的情况下,使用强密钥加密比散列更安全,因为弱密码散列现在可以很快被破解。但在这种情况下,首选散列和加密,而不仅仅是加密。