公钥基础设施
公钥基础设施(PKI)是由证书颁发机构、数字证书和策略组成的系统,它将公钥绑定到经过验证的身份,使从未见过面的各方能够信任彼此的密钥。
Definition
公钥基础设施是创建、分发、存储、验证和撤销将公钥绑定到身份的数字证书所需的一系列角色、策略、硬件和软件。
Scope
本主题涵盖PKI的组成部分和运作:X.509证书、证书颁发机构和信任链、证书颁发和验证、撤销(CRL、OCSP)以及透明度机制。它探讨了支撑网络PKI及其替代方案(信任网络)的信任模型。它不包括证书使用的数字签名算法和使用证书的安全通道协议(TLS),这两者都将单独处理。
Core questions
- 依赖方如何确信公钥属于特定身份?
- 证书链和根颁发机构如何建立分层信任?
- 证书如何验证?当密钥泄露时如何处理撤销?
- 哪些故障模式(CA妥协、错误颁发)威胁着信任模型?
- 证书透明度等机制如何提高问责制?
Key concepts
- X.509证书
- 证书颁发机构 (CA)
- 信任链和根存储
- 证书签名请求
- 证书撤销 (CRL, OCSP)
- 证书透明度
- 信任网络
- CA妥协和错误颁发
- 证书锁定
Key theories
- 分层信任链
- 信任根植于客户端预装的一小部分自签名根证书颁发机构;这些机构签署中间CA,中间CA签署最终实体证书,因此客户端可以通过验证链到可信根来验证任何证书。
- 撤销和透明度
- 由于密钥可能被泄露或证书可能被错误颁发,PKI提供了撤销机制(证书撤销列表和OCSP),并且越来越多地提供公共审计日志(证书透明度),以便可以检测和不信任错误颁发的证书。
Mechanisms
申请人生成密钥对并提交证书签名请求;CA验证申请人的身份或域名控制权,并颁发将公钥绑定到该身份的X.509证书,该证书由CA的私钥签名。依赖方通过检查到可信根的签名链、有效期、名称和撤销状态(通过CRL或OCSP)来验证证书。证书透明度公开记录所有已颁发的证书,以便域名所有者可以检测未经授权的颁发。
Clinical relevance
网络PKI是使浏览器中的挂锁有意义的原因:每个HTTPS连接都依赖于CA颁发的证书来验证服务器。自动化、免费的颁发(Let's Encrypt)推动了HTTPS的普遍采用。PKI还支撑着代码签名、安全电子邮件、文档签名和企业设备身份。CA故障(2011年DigiNotar泄露事件)具有全球影响,这就是透明度和撤销重要的原因。
Evidence & guidelines
X.509证书和撤销在RFC 5280中进行了描述;证书透明度在RFC 6962中;OCSP在RFC 6960中。CA/浏览器论坛基线要求管辖公共信任的CA。ACME协议(RFC 8555)自动化了颁发。最佳实践倾向于短期证书、自动化续订和依赖证书透明度监控。
History
证书概念由Loren Kohnfelder在1978年的麻省理工学院论文中提出。X.509于1980年代后期从X.500目录项目中出现,并随着1990年代SSL/TLS的普及成为网络PKI的基础。CA的反复妥协和错误颁发(2011年Comodo和DigiNotar事件)暴露了无条件CA信任的脆弱性,促使了证书透明度和更严格的CA治理,而Let's Encrypt(2015年)则使证书颁发民主化。
Key figures
- Loren Kohnfelder
- Whitfield Diffie
- Ross Anderson
- Ben Laurie
Related topics
Seminal works
- stallings2017
- rfc5280
- anderson2020
Frequently asked questions
- 证书颁发机构实际验证了什么?
- 对于常见的域名验证证书,CA只确认申请人控制该域名(例如,通过响应挑战)。它不担保组织的合法性。高保障证书涉及更多的身份检查,但大多数网络证书只证明域名控制权。
- 如果证书颁发机构被入侵会发生什么?
- 攻击者可以为任何网站颁发欺诈性证书,从而实现冒充。防御措施包括撤销和不信任该CA,证书透明度日志会显示未经授权的证书,以及限制滥用窗口的短证书生命周期。