我能想象到的几乎每一个网络服务都让用户选择密码。为什么是这样?系统不能选择更好的密码吗?它不必是一些复杂的混乱;看到这个答案。用户只是觉得自己的选择更方便吗?为用户选择密码时,您知道熵,而不是设置一些可能阻止他们使用低熵方案的限制。
为什么我们让用户选择密码?
我能想象到的几乎每一个网络服务都让用户选择密码。为什么是这样?系统不能选择更好的密码吗?它不必是一些复杂的混乱;看到这个答案。用户只是觉得自己的选择更方便吗?为用户选择密码时,您知道熵,而不是设置一些可能阻止他们使用低熵方案的限制。
为什么我们让用户选择密码?
为什么,确实?
请允许我暂时忽略这个问题,并回答您隐含的问题:我们应该吗?
也就是说,我们是否应该继续让用户创建自己的密码(通常是弱密码),而不是让系统为他们生成一个强密码?
好吧,我有一个有争议的观点,即这里有一个相当强的权衡 - 一方面拥有一个安全的密码,并且知道它的安全性(正如你所指出的那样),另一方面是用户的安全感。“可用性”,在某种程度上。
我认为这种安全感有几个方面:一些用户希望确保他们自己拥有一个强密码(例如通过密码管理器或 diceware);一些用户想要选择一个简单的密码;有些用户想在任何地方使用相同的密码。是的,许多用户只是单纯地希望能够设置他们的密码,无论出于何种原因——所以除了任何特定原因之外,你仍然需要打再教育战,这绝非易事。
另外,不要忘记,一旦您为用户提供了一个好的强密码,(通常是非技术性的)用户仍然需要弄清楚如何处理它 - 即使密码短语在前十几个左右之后变得难以记住,或者如果您每 6 个月才使用一次……非技术用户很可能会将其保存在桌面上的 Word 文档或电子邮件中。(当然还要在屏幕上的便签上写下操作系统密码)。
现在,不要小看这些原因,或者这些使用弱密码的原因——我们安全行业多年来为普通人创造了这种情况。但这真的归结为:您需要您的网站有多安全。用户可以决定自己承担多少风险,其中有多少是应该从用户手中承担的系统风险。
所以底线:是的,我认为大多数具有不可忽略的安全要求的网站都应该提供密码/密码生成。根据配置文件和架构,您可以在注册帐户(或更改密码等)时提供 3 个选项 - 只需确保仅在警告用户不要冲浪后显示密码:
事实上,这是我一段时间以来一直在推荐的(取决于具体要求的变体......)。
回到你原来的问题,为什么上面没有完成?
我猜是遗留系统和坏习惯的结合;错误教育(绝大多数网站仍然有错误的密码政策和建议);也许只是缺乏对更好解决方案的认识。
是的,这就是密码很烂的原因。:-)
获取用户密码
唯一一次我见过为用户设置密码的系统,它是通过电子邮件发送给用户的(显然是明文),这显然是个坏主意[*](短信、邮件等也没有那么好)。
因此,在创建帐户时会显示密码(由于肩冲浪,这也可能是一个坏主意)。我认为这会导致很多用户忽略这一点,或者没有意识到它的重要性。用户在自己创建密码时习惯于记住/写下/存储密码,但在创建帐户后不习惯阅读某些页面;许多人很可能只是忽略它。
[*] 因为任何获得用户邮件帐户访问权限的人(暴力破解、用户忘记注销等)都将无权访问。如果攻击者使用密码重置来获得访问权限,用户至少会注意到这一点。
让用户记住密码
用户需要知道他们的密码。通常,他们有几个选项(内存、写下来或将其存储在文件或密码管理器中)。您的方法[*] 是主要的其中一个(内存)不实用,我认为这是网站不为用户生成密码的主要原因。
[*] 即使使用易于记忆的密码,用户仍然比他们自己选择的密码更难记住。
用户体验
安全性不是大多数 Web 服务的主要业务。用户开心往往更重要,如果不能选择自己的密码,很多用户也不会那么开心(因为他们不想记住生成的密码,也不想写下来,他们也会这样做)不想使用密码管理器)。用户只是想使用一项服务,任何使这变得更加复杂的事情都可能导致一定比例的人使用竞争服务。
结论
密码始终是可用性和安全性之间的权衡,并且不让用户选择密码对他们中的大多数人来说会降低服务的可用性(并且由于实际将生成的密码提供给用户的问题,它甚至可能不会添加所有这么多安全性)。
组织希望用户负责。
如果用户选择了密码,他们可能会因为选择了错误的密码而受到指责。
不幸的是,在现实世界中,与确保不会发生入侵相比,组织可能不得不更关心似乎要为入侵承担一些责任。
用户想选择他们能记住的东西
许多用户不会写下他们的密码(不管这是否是一个好主意)。他们更喜欢选择他们认为可以记住的东西。(这对于成千上万不需要密码但强制用户选择密码的网站尤其重要)。
一位受访者提到了正确的答案,但没有充分扩展,所以我会的。
您是从以计算机或 IT 为中心的角度提出问题。但是,为什么它会存在呢?为客户服务。让我重复一遍:客户不是来为你服务的,你是来做他们需要你做的。
因此,考虑到这一点,让我们重新审视这个问题:为什么我们仍然允许客户选择自己的密码?为什么我们不为客户设置密码?
因为如果我们对客户强制使用密码,您认为他们会做什么?我们向他们强加了一些他们以后需要知道的难以忘怀的东西。我保证他们会拿一张便利贴并写下密码。
你失败了。写在纸上的密码是安全故障。你永远不希望这种情况发生。在这种情况下,在你责怪客户之前,你是那些强迫他们使用他们没有参与创建的密码的人。他们没有机会让它令人难忘。你告诉他们“记住‘F82$fVq9’,不要写下来。” 作为客户,我的第一反应是“去你妈的”。公司无法告诉客户该做什么。客户会找到反抗的方法,包括写下您的随机密码。不要与人性抗争。你。将要。失去。
这就是我们让客户选择密码的原因。如果您的网站值得任何盐分,它会像今天的大多数网站一样检查所选的密码强度。它确保密码长度为 8 个字符,包含两个数字、一个大写字符和一个符号。
而且您仍然没有达到最初的目标,因为今天的计算机可以在几秒钟内暴力破解 8 个字符的密码。只是在说'。
您想要客户选择的真正密码安全性,并且您对强度感到满意吗?给你:https ://xkcd.com/936/