还有什么比定期更改密码更让人头疼的呢? 例如你在一家美国公司工作,该公司会要求每三个月更换一次密码,此外,他们还规定了密码可以包含哪些内容,不可以包含哪些内容。 标准监管机构现在宣布,大多数凭证规则已经过时,没有必要。
美国国家标准与技术研究院 (NIST) 已提出了它希望采用的新凭证标准。 特别出版物 800-63-4 的第二稿已发布在 NIST 网站上,等待公众对建议的密码和身份验证指南提出反馈意见。
标准大纲简明扼要,但却与许多公司和机构采用的恼人密码制度背道而驰。 一些例子包括强制重置密码、限制字符使用、要求特定字符组合以及使用安全问题。 这些要求在很大程度上是不必要的。 它们是过时的遗物,来自互联网还很新的时代,大多数人不了解正确的安全卫生知识。
正如微软在其《2019 年安全基线》中指出的那样,其中许多规则实际上反倒促成不良的安全习惯。 例如,要求员工经常更改密码会鼓励他们使用较弱的密码,这样的密码更容易记忆或创建,因此也更容易被破解。 美国联邦贸易委员会对此表示赞同。
对于要求特定字符的规则也是如此,例如"密码必须至少包含八个字符,其中至少包含一个大写和小写字母、一个特殊符号(如标点符号)和至少一个数字"。 这些严格的限制往往会导致人们使用 BigToe@1 这样的密码(以前的一个同事确实用过这个密码)。
虽然任何人都可以自由阅读和评论 SP 800-63-4,但由于所有的官僚行话和冗长的解释,它是一本具有挑战性的长篇大论。 该组织认为有必要用一个章节来定义"应、不得"、"应"、"不应"和其他简单术语的含义。 该文件基本上归结为九项要求和建议。
密码验证器或验证服务提供商:
应要求密码至少包含 8 个字符,但应至少包含 15 个字符。
应允许至少 64 个字符的最大密码长度。
应允许在密码中使用所有 ASCII 字符和空格字符。
应接受密码中的 Unicode 字符。 在评估密码长度时,每个 Unicode 码点应算作一个字符。
不得对密码强加其他组成规则(如要求不同字符类型的混合)。
不得要求用户定期更改密码。 但是,如果有证据表明验证器受到损害,核查员应强制更改密码。
不得允许用户存储未经认证的申请人可以访问的提示。
不得提示用户在选择密码时使用基于知识的验证(KBA)(如"你的第一只宠物叫什么名字?")或安全问题。
应验证提交的整个密码(即不截断密码)。
考虑到黑客不可能知道或弄清目标的高中吉祥物或婚前姓氏这一疯狂假设,规则八是非常合理的。 然而,规则七似乎是一个"自相矛盾"。 只有通过身份验证才能看到密码提示,但如果没有密码提示就记不住密码,就无法通过身份验证。 除此以外,这些指导原则似乎都是常识,而我发现现在普遍缺乏这种常识。
NIST 负责管理政府内部的标准,对私营公司没有执法权。 例如,它确保所有消防栓使用标准化的配件,无论走到哪里,出水量都相同,同时还确保维护标准。
一般来说,只有政府机构和直接与政府打交道的公司或组织才能遵守这些规则。 例如,美国国税局必须采用 NIST 准则,但 Meta 可以无视这些准则。 尽管如此,许多 NIST 标准都会向下渗透到规则适用行业的私营组织。 NIST 网络安全框架就是一个很好的例子。