Security 只需要特定字符的登录

Security 只需要特定字符的登录,security,Security,一个好的安全实践是永远不要维护系统的登录密码数据库,而是维护密码哈希数据库(使用一些合适的哈希函数),并在登录时将提供的密码哈希与数据库中存储的信息进行比较 然而,我越来越多地看到登录的例子,其中我被要求(例如)只提供密码的第3、第4、第6和第8个字符。这是否意味着必须存储我的原始密码才能进行字符比较?或者是否有一种特殊类型的哈希函数仍然允许字符比较?这并不意味着他们正在存储明文密码。例如,可以只对输入的任何字符的第3、第4、第6和第8个字符进行散列。无论如何,这绝对是高度不安全的。基本上,他们

一个好的安全实践是永远不要维护系统的登录密码数据库,而是维护密码哈希数据库(使用一些合适的哈希函数),并在登录时将提供的密码哈希与数据库中存储的信息进行比较


然而,我越来越多地看到登录的例子,其中我被要求(例如)只提供密码的第3、第4、第6和第8个字符。这是否意味着必须存储我的原始密码才能进行字符比较?或者是否有一种特殊类型的哈希函数仍然允许字符比较?

这并不意味着他们正在存储明文密码。例如,可以只对输入的任何字符的第3、第4、第6和第8个字符进行散列。无论如何,这绝对是高度不安全的。基本上,他们只是将您的密码缩短为4个字符。

许多银行都是这样做的,通常您通过单击鼠标而不是使用键盘来输入这些字符。所有这些都是为了防止键盘记录者获得密码。但是,是的,这一定意味着他们保存了明文密码。

这意味着该网站愚蠢且不安全。要求提供字符子集在银行中很常见,他们往往会强迫你在下拉列表上单击鼠标来回答,以击败键盘记录者。但是,除非您为您可以请求的每个字母组合存储哈希+salt,否则您必须存储明文密码。因此,通常(我相信)要求密码完整,并从密码短语中输入n个字符。不确定是否有更好的方法?例如,不知何故,使用一些符号加密魔法,针对更紧凑的散列/加密数据对n个字符进行身份验证。散列一个字符是无用的,因为其中只有少量字符,而强制使用纯文本字符是微不足道的。这不是决定性的,他们可以将这些字符连接起来并进行散列,但是他们必须存储他们可能要求的我的密码的每个可能子集的散列。例如,如果他们总是要求我输入构成密码的15个字符中的6个,那就是5005个哈希。(至少对我来说)这对每个人来说都是额外的。@qwerty1793:对我来说也是。如果一个网站确实要求提供你的密码字符的随机子集,那么我会说这是强有力的证据,证明他们在后端存储了完整的密码(但可能仍然是加密的)。此外,在防止键盘记录者攻击的同时,这并不能防止更简单的拦截(在浏览器过程中)包含密码的POST请求的。另一个问题是,除非它们散列所有可能的组合并随机旋转它们,否则结果是它们会降低密码强度,而不是提高密码的安全性。