口令短因此容易被破解,但长的话太复杂且容易重复使用?口令设置标准到底应该怎样才合适?
美国国家标准与技术研究院(National Institutes of Standards and Technology, NIST) 在其《数字身份指南》特刊800-63-3中发布的反向口令策略推荐引起了很多争议。尽管其中包含了许多优秀的,没有争议的身份验证信息,但是很多人认为这些新的建议根本就是错误的。
在讨论NIST口令策略的之前,我们先来回顾一下普遍认为的最好的口令策略建议。
- 尽可能使用多因素身份验证(Multi-Factor Authentication, MFA);
- 如果无法使用MFA,尽可能使用口令管理器,特别是当人们为每个安全领域创建唯一,长且随机的口令的时候;
- 如果无法使用口令管理器,使用长且简单的口令作为口令;
在所有情况下,不要使用通用口令(例如“password”或者“qwerty”),并且永远不要在不同站点使用同样的口令。
这些建议的总体问题是MFA和口令管理器不能适用于所有站点和设备。这意味你不得不使用一些口令。如果你的口令管理器选择了随机,长且复杂的口令,这些口令只适用于你的某些设备,而对其他设备无效,这意味着你需要记住或者记录那些长而复杂的口令,以备不时之需。
为什么NIST改变了其口令策略
所以,无论如何你必须设置自己的口令。如果你使用了长口令,有一定的概率你会重复使用它们或者只是在不同站点做一些细微的变化。如果我们都开始使用长又简单的口令,大部分人可能会使用简单的英语单词。就像我们今天遇到的口令复杂性问题一样——复杂的口令实际上并不复杂(因为大多数人使用相同的32个字符),我们可能会创建黑客更容易猜到的口令。我们创建的口令从一个糟糕的口令,例如“Password”变成了“ThisIsMyPassword”,或者类似的口令。
NIST认为重复使用和不够复杂的口令将带来极大的风险,而这两者也是其指南试图所避免的。
微软研究院首席研究员Cormac Herley表示:
我们知道面对后者(复杂性),人们只会做简单的替换。一份列有20个由6个小写字母组成的口令,约占所有账户的3%。一份列有20个由8个字母(复杂)组成的口令,占大约2%。不要担心GPUs和线下攻击,这些口令甚至无法阻挡那些漫不经心的在线猜测攻击。如果你用一个简单,非迭代的加盐散列存储口令,我们知道,没有什么能保证用户选择的口令能够抵挡离线攻击。如果强制要求使用16位口令,肯定有些口令会非常常见,至少给攻击者提供了足够的账户。防止离线猜测的方法是确保文件没有泄露,使用迭代或者内存难解散列(memory-hard hash),并且有方法可以进行监测和修复。
引发争议的NIST转变
几十年来,建立的口令策略要求使用长而复杂的口令,并定期更改口令。所以应该讨论口令应该多长,多复杂,多久进行更改,而不是对基本原则进行讨论。
这份在2017年6月发布的NIST口令策略最终版,颠覆了全球长期以来的口令原则。现在,NIST表示使用更短且不复杂的口令是可以的,并且除非口令遭到泄露否则永远不用更改口令。
NIST的新口令策略是根据以往大部分口令的泄露方式决定的。黑客活动的最初几十年,大多数口令都是通过口令猜测或破解(例如将一个非明文形式转换为口令明文形式)而泄露的。在这种攻击环境中,使用长而复杂的口令是有意义的。
如今,大多数口令都因底层口令存储数据库和社交工程遭到大量入侵而遭到泄露。互联网上有数以亿计的登录名/口令组合,任何人都可以轻松访问或购买。这种入侵方式并不关心口令的长度或复杂程度。此外,长度和复杂性要求增加了用户在其他站点上使用相同口令的概率。有一项研究表明,普通用户有6到7个口令,会在100多个网站上重复使用。这是灾难的根源。NIST表示考虑到不断变化的战场,遵循旧的建议将使你更有可能因为这些决定而受到损失。
这个变化如此之大,以至于近乎所有计算机专家都拒绝相信,因此也拒绝遵循新的指南。更重要的是,计算机安全法规或指导机构(PCI-DSS, HIPAA SOX等)也不例外,没有一个机构计划更新他们的口令策略。
关于这次口令争论
许多人都是NIST忠实的支持者,因为讨论和制定新NIST政策的是一群专注,有想法的,希望提高计算机安全的研究人员。NIST以前决策背后的数据通常是令人信服的。所以没有理由只是因为每个人的直觉都不想接受新的建议,而去反对NIST。大家应该以数据为导向。
凯文·米特尼克用强有力的论据,证明使用短口令很容易被黑客入侵。从那以后,他提出了更多证据和案例来支持自己的观点,认为所有人不仅应该遵从旧的建议,还应该确保口令更长(至少12到16个字符)。
不要遵循NIST的新口令建议
深入研究NIST新口令策略决策背后的数据,你会发现这些数据无法支持新的结论。有些数据能够支持新策略,但不像过去认为的那样令人信服。最重要的是,NIST的建议基于新的,不断发展的口令攻击方法,其中口令(或者其散列)只是从先前的权限提升攻击中窃取的。这种类型的攻击依然有效,但是远程攻击者不需要任何先前权限攻击就可以轻易获取你的口令。
比如,给你发送一个带有恶意链接的邮件,如果点开了这个链接,将会泄露你的口令或口令散列。在某些案例中,只需在预览模式下打开电子邮件就足够了。微软发布了相关补丁防止口令泄露,但几乎没有人使用它或使用其他任何能够阻止口令泄露的防御措施。大多数公司都容易受到这类攻击。
以最新的Adobe Acrobat漏洞为例,该漏洞在2月25日被修复。一个Adobe Acrobat文档可能包含一个SMB链接,当用户打开PDF文档时,该链接将自动启用。这个漏洞没有触发Acrobat的正常消息提醒,要求用户批准URL读取。就像前面讨论的漏洞一样,该漏洞可能会泄露用户的NT散列。任何有理性的人都应该知道任何允许UNC路径访问的其他形式的文件都可能具有感染性,并泄露用户的口令散列。
有多少的潜在受害者可能会点击邮件中的恶意链接呢?相当多数量的人。多年来,社交工程和网络钓鱼是造成大量恶意数据泄露成功的原因,而且这种情况在短期内不太可能发生改变。大多数计算机安全报告表示,有70%到90%的恶意数据泄露是由社会工程和网络钓鱼造成。这种类型的攻击是头号威胁。只要这种程度的成功率加上能够远程通过非权限提升攻击窃取口令散列的能力,有理由认为除了使用长而复杂的口令之外,没有人能推荐其他方法来抵挡这种风险。
八个字符是不够的
NIST推广的最短可接受口令长度(8个字符)已经不再适用了。随着时间的推移,口令破解器的表现越来越快,越来越好。直到最近,一个包含8个字符的复杂口令被认为是非常不安全的,但是大部分组织机构确可以接受。
这个假设最近被打破。开源口令散列破解工具HashCat宣布,任何8个字符的NT口令散列,都可以在2.5个小时内被破解为明文。祝那些用8个字符的口令保护环境的企业好运。
Mitnick经常成功破解12到16个字符长的超复杂口令,而且他没有世界上最快的口令破解设备。所以多长的口令才足够长呢?
答案是越长越好,但是现实是对大多数企业网络来说,仅凭口令无法保护那些含有你财务或个人信息的网站。使用口令,但是不要用于那些你真正需要保护或者关心的内容上。至少在我们找到更好、更强大、更流畅的身份验证方法之前,使用MFA保护任何对你有真正有价值的东西。
什么时候更改你的口令?
NIST认为你只需要在你认为口令被泄露的时候更改口令,而不是定期更改口令,例如像以前的最佳做法,每45到90天进行一次更改。这个建议存在的问题是你很有可能不知道你的口令已经被泄露或者何时被泄露。
如果一直在使用一个口令管理器,可以实时检查用户创建和使用的每个口令,对付已知的口令泄露和发现口令泄露。
不要完全忽视NIST
NIST有关口令的策略,但是其身份指南是可靠的。他们鼓励管理员和用户从简单的登陆口令转向使用更强大的身份验证方法。他们不鼓励使用SMS信息作为强验证,而建议使用更复杂的方法。他们同时也为不同场景推荐了不同的身份验证的方法,这是很有意义。
相关阅读