我发现一个网站从他们的用户那里获取密码字母而不是整个密码。
这安全吗?还是他们将密码保存为加盐哈希(MD5)?
我发现一个网站从他们的用户那里获取密码字母而不是整个密码。
这安全吗?还是他们将密码保存为加盐哈希(MD5)?
这真是太可怕了。唯一可行的方法是他们加密您的密码而不是散列密码。或者更糟糕的是,将其存储为纯文本。我永远不会注册该服务。<update>
正如@lynks 所说,在使用 HMS 时,上述情况可能不正确。但是,如果在此步骤之前只询问用户名。并且密码是用户的固定密码,我的答案的其余部分应该仍然有效。</update>
此外,您只需要猜测 4 个字符(而不是整个密码)这一事实也很愚蠢。这些块也可能指示密码的长度,这也很垃圾(如果确实如此)。
不仅如此,它们还告诉你应该在什么地方添加字符,这更加愚蠢,因为你现在可以根据单词/句子中字符的分布更好地猜测正在使用的字符。
总而言之,你所拥有的都是超级垃圾,不应该使用......永远。我什至会说,坚持这是一个好主意的人应该停止做这样的事情并开始寻找另一份工作。
事实上,如果这些蓝色块隐藏的实际字符只是隐藏并存储在页面的源中,那我不会感到惊讶;-)
作为基于您问题的最后一段的旁注:
还是他们将密码保存在加盐哈希(MD5)中?
MD5 永远不应该用于散列密码。为了这个目的,它太快了。
正如其他人指出的那样,使用“从密码中键入字符 x 和 y”机制要求密码以明文或可逆加密格式存储在服务器上(还有另一种选择散列每对字符,但那将是一个愚蠢的想法)。
这种机制是提高还是降低解决方案的整体安全性取决于每种方法都可以很好地应对的攻击的普遍性和严重性,以及服务器端存储密码的安全控制。
键盘记录软件的实例(例如,这在银行特洛伊木马中很常见)可能比密码数据库被黑客入侵的实例更多,但这撇开了影响的概念,即一个密码数据库的破坏比一个密码数据库的破坏严重得多。客户的个人键盘记录实例。
这导致控制。一些答案及其附带的评论已经说明了HSM的观点。在英国银行使用这种场景的地方,我认为 HSM 极有可能在使用中,并且希望得到很好的管理。
不幸的是,安全的真理“只以散列格式存储密码,可逆加密不好”经常错过附加组件“你可以以可逆格式存储它们,但密钥管理是个麻烦”。
可以安全地执行此操作,实际上英国的 ATM 网络曾经使用(我可能仍然猜想)对称加密来进行所有数据传输,但是这轮的密钥管理非常广泛(至少在我查看的情况下) ) 并涉及诸如双重控制键之类的事情。
所以这个问题的答案是,就像安全领域的很多事情一样,这取决于它。它可能是安全的,而且在某些情况下,这种方法确实更好,散列和询问整个密码,但这取决于许多因素,如果没有更多信息就无法评估。
First Direct - 正在使用这种请求密码的方式。在其他一些情况下——哈利法克斯、劳埃德——在出现密码提示后,会通过下拉菜单请求字母。在该登录名之上附加了 5 个随机数字。
Visa 验证 - http://www.visaeurope.com/en/cardholders/verified_by_visa.aspx - 在线支付时也使用这种形式的确认。
我相信这是为了防止键盘记录器获取整个密码。我相信银行和 Visa 都有自己非常严格的政策,使整个系统相当安全。
(归根结底,是我们为他们所有的安全漏洞付出代价)
@Hyp 的评论是正确的(更新了我的答案)。密码后的劳埃德和哈利法克斯有这个:
这安全吗?
不,这不安全。这比完整密码更容易暴力破解。但是,请注意,暴力破解通常有 IP 块,因此这通常不是访问某人帐户的最佳方式。
这是为了防止键盘记录,这实际上是比暴力破解更大的威胁。这是一个类似的情况:
甚至暴力破解密码的 4 个字符子集也很困难(我假设他们会在刷新时打乱这些框,这会增加一些复杂性)。仍然有至少 26^4 个密码可以试用(而且使用 CAPTCHA 和所有密码,可能会很困难)。当然,鉴于总长度是公开的,字典攻击可能变得可行。但是仍然有很多短语可以尝试,我们假设 IP 在这段时间内没有被阻止。可以对该系统进行的另一种攻击是记录输入的 4 键密码片段,然后不断刷新页面,直到收到相同的盒子订单。或者他们可以将密码片段与字典进行匹配,你会得到一组非常小的单词。
这里更严重的问题是他们以明文形式存储密码。对于系统管理员或具有只读数据库访问权限的人(应该有足够多的这样的人)来提取密码并使用它来进行看起来像在线进行合法传输的东西并不难)。一个安全的系统会用盐对密码(SHA-256 或 SHA-512 是好的1,不要使用 MD5)进行哈希处理,并立即忘记明文。他们应该在收到密码时比较哈希值。当然,在这种情况下,您无法使用密码表单进行任何操作。
有很多更明智的方法可以防止键盘记录程序。许多银行实施了“虚拟键盘”,上面有随机分布的键。最终,这也可以被“记录”(可以做类似于屏幕截图的事情),但是文本键盘记录器在这里非常无助,因为用户不输入。(通常会提供输入选项,但如果用户希望在网吧或其他公共计算机中输入密码,则可以使用虚拟键盘)。正如评论中提到的,由于许多原因,这不是一个好的时间投资,而是使用 2 因素身份验证:
2 因素身份验证可能是通过键盘记录器的最安全方法之一。那些基于时间的密钥卡或“确认码已通过 SMS 发送给您”将非常有效,因为如果没有相关设备,密码几乎毫无价值(尽管对帐户恢复很有用)。
1. 一个更好的主意是使用带有 RSA 的 HSM 并加密密码。或者使用 bcrypt 或类似的慢速算法。