1. 引言
尽管存在众所周知的安全挑战,基于密码的身份验证仍然是网络身份验证的主要方式。用户在创建和记忆高强度、唯一性密码方面面临认知负担,导致密码重复使用和弱凭据的创建。密码管理器承诺通过生成、存储和自动填充密码来减轻这一负担。然而,其安全性在先前的研究中一直受到质疑。本文在重大漏洞被报告五年后,对十三款流行的基于浏览器的密码管理器进行了更新、全面的安全评估。该研究涵盖了密码管理器的完整生命周期:生成、存储和自动填充。
2. 方法与范围
本次评估涵盖了十三款密码管理器,包括五款浏览器扩展(例如 LastPass、1Password)、六款内置浏览器管理器(例如 Chrome、Firefox)以及两款桌面客户端用于对比。方法包括:
- 生成并分析包含1.47亿个密码的语料库,评估其随机性和强度。
- 复制并扩展先前对密码存储安全性的评估。
- 测试自动填充机制是否存在点击劫持和XSS等漏洞。
- 评估默认安全设置和加密实践。
3. 密码生成分析
这是首次对密码管理器的密码生成算法进行全面分析。
3.1. 字符分布与随机性
对包含1.47亿个密码的语料库的分析显示,生成的密码中存在多个字符分布非随机的实例。部分管理器在字符选择上表现出偏差,偏离了均匀随机分布。对于一个真正的随机生成器,从大小为 $N$ 的集合中选择任何字符的概率应为 $P(char) = \frac{1}{N}$。偏离此规律表明算法存在缺陷。
3.2. 对猜测攻击的脆弱性
最关键的研究发现是,一部分生成的密码容易受到暴力破解攻击:
- 在线猜测: 研究发现,长度短于10个字符的密码在面对在线、速率受限的攻击时显得脆弱。
- 离线猜测: 长度短于18个字符的密码在数据库泄露后容易受到离线破解尝试,攻击者可以进行无限次猜测。
这与密码管理器创建高强度密码的核心承诺相矛盾。
4. 密码存储安全性
虽然与五年前的评估相比有所改进,但重大问题依然存在。
4.1. 加密与元数据处理
研究发现,多款密码管理器以未加密的形式存储元数据。这包括网站URL、用户名和时间戳。虽然密码本身可能被加密,但这些元数据为攻击者提供了宝贵的地图,揭示了用户的在线账户和习惯,可用于定向网络钓鱼或社会工程学攻击。
4.2. 不安全的默认设置
某些管理器存在不安全的默认设置,例如默认在所有网站上启用自动填充,或使用较弱的加密协议。这迫使安全责任落在用户身上,需要用户发现并更改这些设置,而大多数用户并不会这样做。
5. 自动填充机制漏洞
为便利而设计的自动填充功能,引入了显著的攻击面。
5.1. 点击劫持与界面伪装
多款密码管理器存在点击劫持攻击漏洞。攻击者可以创建一个包含不可见图层的恶意网页,诱使用户点击密码管理器的自动填充对话框,从而将凭据泄露给攻击者的网站,而非预期的合法网站。
5.2. 跨站脚本攻击风险
那些在没有严格来源检查的情况下将凭据注入网页表单的自动填充机制,可能通过其他受信任网站上的XSS漏洞被利用。如果一个良性网站存在XSS缺陷,注入的脚本可能触发密码管理器将凭据填充到攻击者控制的隐藏表单字段中。
6. 结果与对比分析
语料库规模
1.47亿
已分析密码数
测试管理器数量
13
浏览器与桌面端
关键缺陷
<18 字符
易受离线破解
关键发现: 与先前研究(例如 Li 等人,2014;Silver 等人,2013)相比,整体情况有所改善,但多个供应商仍存在根本性的安全缺陷。没有一款密码管理器在所有三个评估阶段(生成、存储、自动填充)都完美无缺。内置浏览器管理器和专用扩展都表现出不同的漏洞模式。
7. 建议与未来方向
本文以可操作的建议作为总结:
- 对用户: 避免使用已知存在生成缺陷或不安全自动填充默认设置的密码管理器。优先选择允许对自动填充行为进行精细控制的管理器。
- 对开发者: 为密码生成实施密码学安全的随机数生成器。加密所有元数据。为自动填充实施稳健的来源检查和用户同意机制(例如,要求点击一个不可被界面伪装的元素)。
- 对研究人员: 探索应用形式化方法来验证自动填充逻辑,以及应用机器学习来检测指示攻击的异常自动填充请求。
8. 原创分析与专家评论
核心见解: Oesch 和 Ruoti 的研究提供了一个发人深省的现实检验:我们信任的、用于整合数字钥匙的安全工具,其自身却建立在令人震惊的脆弱基础之上。在重大漏洞被曝光五年后,行业的进展充其量是渐进式的,未能解决所有三个核心支柱——生成、存储和自动填充——中的系统性问题。这不仅仅是一份漏洞报告;它是对一个关键安全领域自满情绪的控诉。
逻辑脉络: 本文的力量在于其整体的生命周期方法。它正确地指出,链条的强度取决于其最薄弱的一环。在生成环节发现非随机性($P(char) \neq \frac{1}{N}$)从根本上动摇了整个前提,甚至在考虑存储或自动填充之前就已如此。对过去存储/自动填充测试的复制则显示了一种模式:虽然表面的漏洞可能被修补,但架构性缺陷(如未加密的元数据或过于宽松的自动填充)依然存在。这种从有缺陷的创建到不安全的处理再到有风险的部署的逻辑递进,描绘了一幅完整且令人沮丧的图景。
优势与不足: 本研究的主要优势在于其对密码生成采用了大规模、数据驱动的方法——这在文献中是首次。1.47亿密码的语料库为算法弱点提供了无可辩驳的统计证据,超越了理论上的担忧。然而,该分析存在一个盲点:它基本上将密码管理器视为孤立的客户端。现代现实是云同步和移动应用。正如《IEEE安全与隐私研讨会》关于云安全模型的会议录所指出的,威胁面已扩展到同步协议、服务器端API和移动操作系统集成,而本研究并未评估这些方面。此外,虽然提到了“不安全的默认设置”,但并未量化安全设置的用户采用率——这是现实世界风险的关键因素,正如《USENIX SOUPS》会议上的可用性研究一致表明,大多数用户从不更改默认设置。
可操作的见解: 对于企业安全团队而言,这项研究要求从笼统地建议“使用密码管理器”转变为针对特定供应商、特定配置的指导。必须将具有弱生成器的管理器列入黑名单。采购清单现在必须包括验证CSPRNG的使用和元数据加密。对于开发者来说,前进的道路是明确的:对自动填充采用“零信任”原则,要求每次填充操作都获得明确的、基于情境的用户同意,类似于万维网联盟为强大的Web API所倡导的权限模型。未来不在于试图完美地保护一个过于宽松的自动填充,而在于设计一个最小权限、用户可控的自动填充。行业在五年内未能自我纠正,这表明可能需要监管机构或标准组织(例如NIST或FIDO联盟)的干预,以强制执行这些数字身份守护者的基线安全要求。
9. 技术细节与实验结果
密码生成分析: 从字符集 $C$ 生成长度为 $L$ 的密码,其熵 $H$ 理想情况下应为 $H = L \cdot \log_2(|C|)$ 比特。研究发现,由于字符选择存在偏差,有效熵较低的实例。例如,如果一个生成器本应使用94个字符的集合,但某些字符出现的概率 $p \ll \frac{1}{94}$,则实际熵会降低:每个字符的实际熵为 $H_{actual} = -\sum_{i=1}^{94} p_i \log_2(p_i)$,其中 $\sum p_i = 1$。
实验图表描述: 研究中的一个关键图表将被破解密码的累积比例与猜测尝试次数(对数尺度)进行对比,针对不同长度(例如8、12、16字符)的生成密码。短于10字符密码的曲线会显示出急剧上升,表明在在线攻击模拟(例如1000次猜测)下迅速被攻破。短于18字符密码的曲线则显示在 $10^{10}$ 到 $10^{12}$ 次离线猜测后,有相当大比例的密码被破解,这使其处于拥有现代硬器的坚定攻击者的能力范围内,正如Hashcat和彩虹表等工具所基准测试的那样。
10. 分析框架与案例研究
评估密码管理器安全性的框架:
- 生成完整性: 对输出进行随机性统计测试(例如NIST STS、Dieharder测试)并计算有效熵。验证最小长度默认值是否符合当前NIST指南(>= 12字符)。
- 存储安全性: 检查本地存储(例如浏览器IndexedDB、SQLite文件)和网络流量中的加密数据与明文数据。审计加密库和密钥派生函数(例如,是否使用具有足够迭代次数的PBKDF2,或Argon2?)。
- 自动填充安全态势: 映射自动填充触发机制。通过创建重叠的iframe测试界面伪装。通过部署具有相似域名的网站(例如 `example.com` 与 `example.com.evil.net`)测试来源匹配逻辑。检查自动填充是否需要用户在不可预测的页面元素上进行手势操作。
案例研究 - 点击劫持漏洞: 考虑管理器X,它在登录表单上显示一个自动填充按钮。攻击者创建一个恶意页面,其中包含一个加载 `bank.com` 的不可见iframe。该iframe被定位,使得管理器X的自动填充按钮出现在恶意页面上一个隐藏的“提交给攻击者”按钮之上。用户点击以自动填充,但实际上点击了攻击者的按钮,从而将 `bank.com` 的凭据发送到攻击者的服务器。这证明了管理器的点击事件绑定和来源验证存在缺陷。
11. 未来应用与研究展望
这些发现为未来的工作开辟了若干方向:
- 硬件支持的生成与存储: 与可信平台模块或安全飞地(例如苹果的安全元件)集成,用于生成随机种子和存储加密密钥,将秘密移出纯粹的软件领域。
- 情境感知、基于风险的自动填充: 利用机器学习分析页面情境(DOM结构、证书详情、网站声誉)以评估自动填充风险。高风险情境可能需要额外的身份验证(生物识别)或完全阻止自动填充。
- 标准化的安全API: 开发浏览器标准化的、带权限的密码管理器API(例如 `chrome.loginState` API的后继者),以提供安全的、沙盒化的凭据访问,并伴有清晰的用户同意提示,从而减少来自任意DOM注入的攻击面。
- 后量子密码学准备: 研究将密码管理器加密迁移到能够抵抗量子计算机攻击的算法,因为加密保险库是一种长期资产,对“现在窃取、以后解密”的对手极具吸引力。
- 去中心化与自我托管模型: 探索使用去中心化身份协议(例如基于W3C可验证凭证),以减少对中央保险库的依赖,分散风险并赋予用户更大的控制权。
12. 参考文献
- Oesch, S., & Ruoti, S. (2020). That Was Then, This Is Now: A Security Evaluation of Password Generation, Storage, and Autofill in Browser-Based Password Managers. USENIX Security Symposium.
- Li, Z., He, W., Akhawe, D., & Song, D. (2014). The Emperor's New Password Manager: Security Analysis of Web-based Password Managers. IEEE Symposium on Security and Privacy (SP).
- Silver, D., Jana, S., Boneh, D., Chen, E., & Jackson, C. (2013). Password Managers: Attacks and Defenses. USENIX Security Symposium.
- National Institute of Standards and Technology (NIST). (2017). Digital Identity Guidelines (SP 800-63B).
- Stock, B., & Johns, M. (2013). Protecting the Intranet Against "JavaScript Malware" and Related Attacks. International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA).
- Herley, C. (2009). So Long, And No Thanks for the Externalities: The Rational Rejection of Security Advice by Users. Proceedings of the New Security Paradigms Workshop (NSPW).
- World Wide Web Consortium (W3C). (2021). Permissions Policy. https://www.w3.org/TR/permissions-policy-1/
- FIDO Alliance. (2022). FIDO2: WebAuthn & CTAP. https://fidoalliance.org/fido2/