密钥固定技术及其在Chrome中的应用
主要观点
密钥固定(Key Pinning)是一种用于防止攻击者通过欺骗易受攻击的证书颁发机构(CA)来为服务器颁发看似有效证书的技术。Google在Chrome for Android版本106中重新引入了这一技术,以增强Google服务的安全性,防止中间人攻击。
技术背景
密钥固定最初是作为HTTP协议的扩展被设计的,后来被弃用。它通过发送HTTP头信息,指示用户代理在一段时间内“固定”加密身份。在此期间,用户代理要求主机提供的证书链中至少包含一个与固定指纹匹配的公钥信息结构。这有效地减少了在身份固定期间可以认证该域的CA数量。
技术挑战与最佳实践
尽管密钥固定有效,但它也存在一些缺点。例如,如果固定的密钥过期,可能会导致用户无法访问服务。因此,建议在实施密钥固定时采取一些安全措施,如在不强制执行固定(即失败开放)时包含一个“备份”密钥固定,并具有用于引导的回退机制。
Google的具体应用
Google在Chrome中嵌入了所有Google属性的固定证书(pins),这意味着每次HTTPS访问都只能通过嵌入的固定密钥集进行认证。Google通过Chrome的组件更新器分发固定密钥集,使得即使在旧版本的Chrome中也能更新密钥集。
与Chrome安全规则的关联
密钥固定在Chrome中确保所有来自Google服务的数据都可以被信任,这与Chrome的“双重规则”相一致,该规则规定不能使用不安全的语言处理不受信任的输入,除非在沙箱中。
相关技术
在公钥固定RFC被弃用后,证书透明度(Certificate Transparency, CT)被提出并强制执行,以解决CA漏洞可能导致证书篡改的问题。CT是一个用于监控和审计数字证书颁发的互联网安全标准。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。