身份验证的瘟疫正在蔓延。我们必须反复向大量的身份验证“巨魔”声明和确认我们的身份,每个“巨魔”都嫉妒地守护着某种互联网服务。每个“巨魔”都有特定的密码规则,这些规则差异很大且难以理解。
密码长度要求各不相同:达特茅斯学院要求正好八个字符;我的经纪人,六到八个;富国银行,八个或更多。通常鼓励或要求使用特殊字符,但有些字符 *太* 特殊:许多系统不允许空格、单引号或双引号、下划线或连字符。有些系统不允许密码开头使用某些字符;字典检查很常见,包括外语字典。
当然,经纪、银行和医疗网站需要保护账户免受未经授权的使用。亚马逊等购物网站也是如此。电子邮件帐户可能同样重要:问问莎拉·佩林就知道了。帐户的价值可能会随着时间而变化:也许以前不重要的帐户会添加一个新的在线商店。
对于服务提供商而言,身份验证可能比对客户更重要:我是否关心有人访问我的报纸帐户? (使用条款无疑会说我应该关心,但我不关心。)在这种情况下,报纸对密码的硬性要求是一种麻烦,而密码“强化”规则只会增加我的恼火程度。市场在这里确实发挥作用:研究表明,竞争压力往往会迫使网站倾向于使用更简单的密码。4
不仅这些身份验证规则差异很大,而且这些规则本身通常被认为是安全秘密的一部分,在登录时不可用,而在登录时,关于规则的提示会很有帮助。我称这些为 *蝾螈眼* 密码规则:它们让我想起莎士比亚魔法药水的配方。它们通常是特殊的、苛刻的,有时很难满足。你能想到一个不重复任何字符超过四次的又长又长的密码短语吗?
问题是突发的:如果我们只有一个帐户,身份验证会容易得多。但是活跃的互联网用户可能有一个或两个打的帐户,有些重要,有些不重要。这些身份验证“巨魔”困扰着大多数在线用户,并且很容易从普通用户那里引出一长串抱怨。
今天的许多规则都根植于对安全问题的深刻过去担忧之中,那时访问、威胁和目标都与现在不同。许多这些想法都出现在 1985 年国防部计算机安全中心 (DoD CSC) 出版的 *密码管理指南*(技术报告 CSC-STD-002-85)中。2 这份报告被称为《绿皮书》,是美国政府在 20 世纪 80 年代和 90 年代出版的彩虹系列丛书之一。它的建议在当时是很好的,而且其中许多建议仍然适用,但我们的许多密码格言都来自关于威胁和技术的过时假设。
这不是对原始作者或其文件的批评:没有哪个明智的安全人员会期望这些规则在几十年内保持不变。只是这些知识并没有跟上威胁和漏洞。
*密码管理指南* 出版于更著名的《橙皮书》(*可信计算机系统评估标准*)之后不久。《绿皮书》是 DoD 关于访问机密或敏感政府计算机的管理指南。它也是当前大多数密码规则的基础。当时的大多数计算机访问要么是通过本地批处理(使用卡片!),要么是通过使用终端的本地或远程串行线路。PC 和 Macintosh 已经可用,但它们与安全计算没有特别的关系,当然也没有联网。
这是报告早期发现的一个重要注释
因为预计不同的用户社区将采用本指南,所以所有建议都以通用而非特定的术语提出……如果功能需要设置特定值(例如,密码最大生命周期),则建议将这些功能设计为参数化设置,将确切值的确定留给本地安全管理部门……
对于今天的安全专家来说,问题是,1985 年的指南中还有哪些仍然有意义?当前的身份验证混乱表明我们没有跟上这项任务。也许这篇文章会促使人们沿着这些思路进行一些重新思考。
国防部报告就身份验证和密码提供了具体建议。它指出,在 ADP(自动数据处理)系统上实施的基于密码的身份验证机制中,由于密码系统的五个基本方面,密码容易受到泄露
1. *密码必须在用户注册 ADP 系统时初始分配给用户。* 这条规则仍然很好。许多站点对初始密码使用了标准密码,但跳过了强制更改默认密码的要求——攻击者可以简单地尝试使用默认密码的多个帐户来闯入系统。某些重置密码方案也是如此。鼓励更改默认密码的一种解决方案是将默认密码或恢复密码设置为“I am stupid”。
2. *用户的密码必须定期更改。* 我们将在稍后更详细地讨论这一点。
3. *ADP 系统必须维护密码数据库*。这条规则仍然很好。
4. *用户必须记住他们的密码*。事实证明,这条规则是不合理的,特别是对于机器生成的密码而言。这些密码根本不容易记住,而且要长期记住多个密码对于大多数人来说是超出能力的。此外,1985 年人们登录的系统要少得多。
5. *用户必须在身份验证时将密码输入到 ADP 系统中。* 规则 5 是不完整的:它只是单因素身份验证。作者无疑很清楚替代方案,但对于普遍部署来说可能太昂贵了。我怀疑当时对此的评论可能会改变我们的世界。
此外,根据该报告
• *用户应该能够更改自己的密码。* 这是一个好主意。在遥远的过去,有些系统不允许这样做。
• *密码应该是机器生成的,而不是用户创建的。* 确实,机器生成的密码往往更强大:破解它们所需的工作因子很容易计算且没有争议。对于人为创建的密码则不然,其中大量的关联和语言规则大大缩小了搜索空间。
• *某些审计报告(例如,上次登录的日期和时间)应由系统直接提供给用户。* 这让用户有机会发现未经授权的访问。该实践在 Unix 系统中被广泛采用,使用了login(1)命令。这仍然是一个好主意。
• *用户 ID 是 ADP 系统用于唯一标识用户的唯一符号或字符串。* 密码系统提供的安全性不应依赖于用户 ID 的保密性。这是一个典型的密码学假设,即只有密钥是秘密的,而不是用户 ID。(我希望这对于美国的社会安全号码也是如此。)但是,模糊用户 ID 可以成为抵御大规模攻击的有用屏障,尤其是针对大型在线系统。
• *在 ADP 系统的整个生命周期中,每个用户 ID 都应仅分配给一个人。* 换句话说,不要共享帐户及其关联的密码。对于重要帐户来说,这仍然是一个好主意,因为它可能有助于日志记录和归属。当婚姻破裂时,这可能尤其重要:以前的伴侣可能非常恶劣。
• *应定期重新验证所有用户 ID。* 这是一个好主意,但很少实施。许多入侵事件发生在未使用或休眠的帐户上。有些系统实施了“我们很久没见过您了”的身份验证要求提高,这是一个好主意。现代版本包括当连接来自异常位置或 IP 地址时,进行更强的身份验证。
• *从密码泄露中恢复的最简单方法是更改它。* 啊,美好的旧时光!现在这完全错了。一旦帐户被泄露,腐败就会开始蔓延,并通过进一步的攻击和传递信任蔓延开来。其他帐户也使用相同的密码受到攻击,而且往往会成功。银行帐户被掏空(至少是暂时的——个人风险敞口已下降3),订购了等离子屏幕,更改了账单地址,身份被盗。
在 Unix/Linux 个人帐户上,被盗密码仅仅是开始。系统被 root,安装了后门,并且通常会创建其他安全漏洞。安装 SSH(安全外壳)客户端以捕获其他密码。给定用户帐户,root Unix 主机往往更容易。表 1 是在一些示例操作系统上找到的 SUID(root) 程序数量的示例,使用命令find / -user root -perm -4000 -print.
表 1 中的每个示例都是潜在的 root 泄露,攻击者通常可以找到至少一个。
• 密码应定期更改,以应对未检测到的密码泄露的可能性。
• 对密码系统提供的安全性最明显的威胁来自密码泄露。密码用于身份验证的时间越长,暴露的机会就越多。在一个有用的密码系统中,密码在其生命周期内泄露的可能性会增加(第 4.2.2.1 节)。
本节指的是附录 C,其中深入探讨了面对字典攻击时密码强度和生命周期的核心问题。提供了几个简单的公式(ASCII 布局和错别字使得在线版本中的数学公式更难理解),并计算了当时典型情况的结果。
目标是抵抗为期一年的字典攻击,破解概率为 10-6(对于敏感系统为 10-20)。为了给出报告中的一个示例,仅由大写字母组成的九个字符密码可以抵抗通过每秒 30 个字符的终端会话进行的为期一年的字典攻击,假设每分钟 8.5 次猜测。该报告还提供了类似的计算,用于大写字母数字字符和从包含 23,300 个条目的英语单词字典中选择的四到六个字符长的单词。作者承认,如果手头的文件受到密码保护,则猜测率会高得多。
让我们代入数字,使用每秒 1 亿次和 70 亿次尝试的现代字典攻击。第一个速率是多核机器在典型的密码哈希算法上运行的容易达到的速率。第二个速率是商业来源声称的在现代 GPU 上实施攻击的速率。在多核处理器、计算机集群和僵尸网络时代,这些数字有些保守。如果您认为它们过于激进,请等待一年。表 2 显示了一些变体的破解时间和密码更改率。
表中显示的第二种方案比现在认为安全的密码更强:它是从键盘上的 93 个字符中选择的八个 *随机* 字符。为了安全起见,这种强密码需要每 *31 毫秒* 更改一次。(我在我的网站上提供了一个用于探索此功能的简陋电子表格。1)
表中的最后两种方案大致符合本文档的标准:密码可以每年更改一次,而不会冒着在为期一年的字典攻击后超过百万分之一的泄露风险。这些方案对应于 77-79 位的工时因子,这可能会让您感到惊讶,因为它比实际要求的典型密码强度(通常从 20 位到 40 位中段)要大得多。3 增加的位数来自 10-6 猜测成功概率的要求,这为密码长度增加了 20 位。(规范实际上要求机密访问的概率为 10-20:这增加了 66 位!)
百万分之一的要求可能是不合理的。有了非常昂贵的暴力破解硬件装置,我不太可能部署它一年来获取高价值目标的访问权限,如果我的成功机会只有 1%,比如。另一方面,历史充满了防御者低估攻击者愿意付出的工作量的例子。
• *不要在多个服务上使用相同的密码。* 这仍然是一个非常好的主意,尽管我知道这很麻烦。如果我闯入您的 Facebook 帐户,那么我将尝试在 LinkedIn、Gmail、iTunes 等上使用相同的密码。这种攻击非常有效,因为大多数人都不遵循这条规则。
大多数确实遵循此规则的从业者使用基本密码,并由某些机器相关的部分进行修改。如果该可变部分很明显,他们可能不应该费心。在这种情况下,最好选择不同的强密码而忽略下一条建议。
• *不要写下您的密码。* 这条规则非常强烈地取决于您的威胁模型:您害怕什么?在遥远的过去,许多攻击来自同学、同事、家庭成员和现场间谍。检查办公桌周围的便利贴的电影比喻奏效了,现在仍然奏效。
然而,写下您的密码可能比在多台机器上使用相同的密码安全得多。在今天的大多数情况下,攻击者不必在场也能获胜。您的机器可以从很远的地方被入侵。或者攻击者将受感染的 USB 拇指驱动器留在公司停车场。检查便利贴的攻击远不如网络黑客攻击常见。
当然,没有必要让它太容易。写下密码的注释或变体,这足以提醒您真实的密码。有时我发现提醒特定站点的蝾螈眼规则就足够了。
密码钱包是存储密码的好主意,但它确实让您重新回到在可能不安全的具有网络访问权限的计算机上存储秘密的游戏中。您办公室里的黄纸可能是更安全的。
• *经常更改密码。* 这通常由身份验证服务强制执行,但通常是一个坏主意——而且没有用。一个好的、强大的密码,您可以记住它,很难创建,并且可能很难记住,尤其是当不同帐户有不同的密码时。当密码被强制更改时,所有这些优点都消失了,需要全新的努力。
这对于很少使用的密码来说可能是一个特殊的问题。例如,美国的公司提供的医疗保健要求员工每年审查并更改承保范围选项。这些系统需要强大的身份验证,并且往往每年只使用一次,因此为了记住密码,我要么写下来,要么依赖密码恢复方案。在某些系统上,我循环使用了几个强密码,时间比身份验证服务器记住的时间还要长。那些真正好的密码太好了,不能放弃。
期望人们选择和记住能够抵抗字典攻击的密码简直是糟糕的工程设计。强制不起作用:人们无论如何都会写下他们的密码。
幸运的是,字典攻击很少成为问题。通过退出游戏可以完全阻止它们:将攻击次数限制为少数几次,然后禁用帐户。多因素身份验证和从泄露中更好地恢复也有所帮助。
这不是一个新想法。我在 20 世纪 70 年代初期获得了我的第一张银行 ATM 卡;它有一个四位数的 PIN 码。我不记得我是否被允许自己选择 PIN 码,但这并不重要:这是我唯一的 PIN 码,而且该服务是独特且有用的,以至于我将 PIN 码记在脑海中。如果我忘记了,卡会被吞掉,或者帐户被锁定。这项政策在美国银行系统中仍然使用了大约四十年,证明它正在发挥作用。这也不是一个罕见的解决方案。大多数身份验证系统会在多次尝试后将用户锁定。
更重要的是,威胁已经改变。字典密码攻击远不如以前那样成为问题。今天的威胁包括
• 键盘记录器会记录任何密码,无论多么复杂。
• 网络钓鱼站点会捕获粗心大意的人的密码,而且很容易粗心大意。通过电子邮件发送的任何 URL 都应该有红色标记和警告。
• 来自保护不力的服务器的密码文件将我们的秘密泄露到互联网上,包括蝾螈眼密码。
• 通过了最先进的安全审计的站点后来被发现多年来一直在泄露信用卡信息。最佳实践可能对律师来说足够好,但它并没有真正解决非常困难的安全问题。
客户端系统几乎不安全——我们把房子建在沙滩上。为什么 *任何* 鼠标点击都会构成安全威胁?
可以对密码钱包、SSH 代理密码短语、PGP(Pretty Good Privacy)密钥环和被盗密码数据库发起字典攻击。对于强密码,单词比蝾螈眼字符串更容易键入和记住。从 Brown 语料库中最常用的 23,300 个英语单词中,我按照 STD-002 和 xkcd 的精神生成了几个随机密码短语:5
• fooled otherwise faustus
• exclaimed democrat cruz
• deauville attaches ornamented
• acutely jeep pasha
这些提供了超过 43 位的搜索空间,与当今最强密码的估计强度相匹配。它们还提供了扩展词汇量的机会。唉,它们可能无法通过大多数蝾螈眼规则。
我的梦想是身份验证可能会变得不那么令人讨厌,甚至可能很有趣。密码和密码短语应该更容易键入,并且包括自动纠正键入和“tapographical”错误(在智能手机上)。这可以在不损失安全性的情况下完成。
为什么蝾螈眼规则仍然存在?帐户解锁是一个问题,需要相对昂贵或不安全的辅助身份验证工作。在某些情况下,让其他人(例如,共享银行帐户的授权配偶)启用临时身份验证和后续密码更改是合适的。“亲爱的,我又做错了”可能比在周末拨打 800 号码更容易。
如果有多种登录站点的方式,每种方式的强度大致相同,那就太好了。这为用户提供了身份验证方法的选择,其他方法作为备用登录。(我在这里说的不是母亲的娘家姓。辅助密码往往要弱得多,不应使用。安全历史充满了迫使防御者退回到辅助的、效果较差的防御措施的攻击。)
如果在会话中尝试两次相同的密码,则不应将其计为两次尝试。我们都会犯,或者怀疑我们犯了,排版错误。我是否正确输入了密码?我会更仔细地再试一次。这不应算作对密码“巨魔”的第二次愿望。
我不乐观地认为这些变化会迅速发生,甚至根本不会发生。“我们做的事情和所有人一样”是对不当行为的有效法律辩护,那么为什么要改变呢?(我讨厌“遗留”这个词!)
身份验证系统至关重要,对它们的更改可能会导致广泛且令人尴尬的失败。尚不清楚更简单的身份验证是否会提供市场优势。一家公司是否比另一家公司不安全,因为它更容易登录?这样做会获得市场份额吗?
尽管如此,系统似乎仍在工作。我们正在向世界各地的攻击者泄露军事和工业机密,但数百万人每天都在成功地使用互联网,互联网是世界经济的重要组成部分。不知何故,我们设法度过了难关。
最后,我希望看到这些系统的工程设计使得用户只需要记住一条安全格言:不要做白痴。不要选择一个认识你的人可以在几次尝试中猜到的密码,或者一个看着你打字的人可以轻易猜到的密码。
与蝾螈眼密码规则不同,最后这条规则对于普通用户来说是有意义的,而且很容易记住。我们所要做的就是将其余部分设计得合理安全。
1. Cheswick, W. 2012; http://www.cheswick.com/ches/papers/std-002-results.xls; and http://www.cheswick.com/ches/papers/std-002-results.numbers.
2. 国防部计算机安全中心。1985 年。《密码管理指南》。技术报告 CSC-STD-002-85。
3. Florêncio, D., Herley, C. 2012 年。我们对密码盗窃的所有认知都是错误的吗?IEEE 安全与隐私 PP(99)。DOI 10.1109/MSP.2012.57。
4. Florêncio, D., Herley, C. 2012 年。安全策略来自哪里?第六届可用隐私和安全研讨会论文集 (SOUPS '10)。, New York, NY, USA, Article 10, 14 pages. DOI 10.1145/1837110.1837124. http://doi.acm.org/10.1145/1837110.1837124.
5. xkcd; http://xkcd.com/936/.
喜欢或讨厌?请告诉我们
威廉“切斯”切斯威克曾就职于贝尔实验室、Lumeta 公司和 AT&T 香农实验室。他目前的项目之一是推广更好的密码。他能记住的最早使用的密码是“polpis”,那是楠塔基特岛的一个地名。那是很久以前的事了。他现在对重要帐户使用多个随机单词,并写下一些东西。切斯正在努力弄清楚他接下来的人生该做什么,并乐于接受有创意的建议。
© 2012 1542-7730/11/1200 $10.00
*最初发表于 Queue 第 10 卷,第 12 期*—
在 数字图书馆中评论本文
郭金楠,Peter Pietzuch,Andrew Paverd,Kapil Vaswani - 使用机密联邦学习构建可信赖的 AI
安全、隐私、问责制、透明度和公平原则是现代 AI 法规的基石。经典的 FL 在设计时非常强调安全和隐私,但牺牲了透明度和问责制。CFL 通过将 FL 与 TEE 和承诺仔细结合来弥补这一差距。此外,CFL 还带来了其他理想的安全特性,例如基于代码的访问控制、模型机密性和推理期间的模型保护。机密计算的最新进展,例如机密容器和机密 GPU,意味着现有的 FL 框架可以无缝扩展以支持 CFL,且开销很低。
Raluca Ada Popa - 机密计算还是密码计算?
通过 MPC/同态加密与硬件飞地进行安全计算,需要在部署、安全性和性能之间进行权衡。关于性能,您考虑的工作负载非常重要。对于简单的求和、低次多项式或简单的机器学习任务等简单的工作负载,这两种方法都可以在实践中使用,但对于复杂的 SQL 分析或训练大型机器学习模型等丰富的计算,目前只有硬件飞地方法在许多实际部署场景中足够实用。
Matthew A. Johnson, Stavros Volos, Ken Gordon, Sean T. Allen, Christoph M. Wintersteiger, Sylvan Clebsch, John Starks, Manuel Costa - 机密容器组
这里展示的实验表明,Parma(在 Azure 容器实例上驱动机密容器的架构)增加的额外性能开销不到底层 TEE 增加的开销的百分之一。重要的是,Parma 确保了容器组所有可达状态的安全不变性,该不变性植根于证明报告中。这允许外部第三方与容器安全地通信,从而支持需要机密访问安全数据的各种容器化工作流程。公司获得了在云中运行最机密工作流程的优势,而无需在其安全要求上妥协。
Charles Garcia-Tobin, Mark Knight - 使用 Arm CCA 提升安全性
机密计算具有巨大的潜力,可以通过将监管系统从 TCB 中移除来提高通用计算平台的安全性,从而减小 TCB 的大小、攻击面以及安全架构师必须考虑的攻击向量。机密计算需要平台硬件和软件方面的创新,但这些创新有可能在计算中实现更高的信任,尤其是在第三方拥有或控制的设备上。机密计算的早期消费者将需要就他们选择信任的平台做出自己的决定。