考点:
- CT相比CA多的几类角色以及他们的用处
- SCT怎么获取
- 证书透明化解决了什么问题,怎么解决
方案的提出总结
背景与问题
-
数字证书的作用:
- 证书验证主体身份与公钥的绑定关系。
- PKI系统中,CA是核心的第三方信任机构,负责签发和管理证书。
-
存在的隐患:
- 虚假证书问题:
- 证书验证可以通过,但私钥并不归属证书主体。
- 导致“身份冒用攻击”,攻击者冒充证书主体与用户通信。
- 虚假证书的产生原因:
- 不严格的审查:如VeriSign签发给伪造的微软员工(2001)。
- 操作失误:如CNNIC错误签发证书(2015)。
- 系统入侵:如Comodo、DigiNotar被黑客攻破(2011)。
- 强制要求:如地方政府介入签发(叙利亚事件,2011)。
- 虚假证书问题:
-
传统PKI的不足:
- 证书签发过程不透明:
- CA签发的所有证书缺乏公开记录,外界无法察觉其行为。
- 虚假证书难以及时发现:
- 通常需要数周甚至数月才能发现并撤销(如DigiNotar,2011年)。
- 无法提前防御:
- 虚假证书使用时,用户完全无法察觉异常。
- 证书签发过程不透明:
解决方案:证书透明化(Certificate Transparency, CT)
-
提出的目标:
- 提高透明度:建立一个公开系统,使任何人都可以查询证书的签发情况。
- 增强证书验证:让用户可发现和拒绝虚假证书。
- 减少攻击风险:降低用户被欺骗的可能性,减少虚假证书带来的后续攻击。
-
方案的核心思想:
- 通过一个**公开日志系统(Public Log)**记录所有签发的证书。
- 让虚假证书更难被隐瞒或误用:
- 没有公开记录的证书将无法被用户接受。
- 实现各方对CA行为的监控和验证,增强PKI系统的信任。
证书透明化的优势
- 防止虚假证书隐瞒:通过公开记录,强制要求证书透明。
- 发现虚假证书更高效:从过去的数周缩短到数小时。
- 增强CA的责任:外部监督使得CA行为更加可信。
- 兼容现有体系:不需要对传统PKI系统进行大幅改动。
1. CT相比CA多的几类角色以及他们的用处
-
公开日志服务器(Public Log Server):
- 作用:记录所有由CA签发的证书,并提供证书存在性的证明。这些日志是公开的、不可篡改的,并且是append-only的,确保所有证书都被透明地记录和验证。
-
监视员(Monitor):
- 作用:周期性地访问公开日志服务器,查找和发现可疑的证书。监视员可以是任何利益相关方,如CA、域名所有者、安全公司等。它们帮助发现虚假证书,并采取措施减少其危害。
-
审计员(Auditor):
- 作用:审计公开日志的行为,确保日志的唯一性、一致性和诚实性。审计员可以是浏览器、监视员或其他独立的服务提供商。它们通过验证日志的完整性来确保CT系统的有效性。
2. SCT怎么获取
签名的证书时间戳(Signed Certificate Timestamp, SCT)
-
从X.509证书扩展项获得:
- CA在签发证书时,可以将SCT作为证书扩展项包含在证书中。这要求在签发证书前获得SCT,通常通过提交预证书(PreCertificate)到公开日志服务器来实现。
-
从TLS扩展获得:
- 在SSL/TLS握手过程中,服务器可以将SCT通过TLS扩展传递给客户端。这要求服务器在握手时提供SCT,客户端在验证证书时一并验证SCT的有效性。
-
从OCSP stapling扩展获得:
- 服务器可以在OCSP stapling过程中包含SCT。这要求服务器在响应OCSP请求时,将SCT包含在OCSP响应中。
3. 证书透明化解决了什么问题,怎么解决
- 解决的问题:
- 发现虚假证书:虚假证书签发后,难以及时被发现和撤销。
- 提高CA行为透明度:让CA更难在域名所有者不知情的情况下签发证书。
- 减少用户被欺骗的概率,降低虚假证书带来的攻击风险。
- 解决方式:
- 公开日志(Public Log):
- 所有证书记录在公开日志中,证书透明化增强了证书的可追溯性。
- SCT是验证证书是否记录在日志中的依据。
- 监视和审计机制:
- 监视员及时发现异常证书,提醒证书所有者或要求撤销。
- 审计员验证日志的诚实性和一致性,确保日志记录不可篡改。
- Merkle树结构:
- 日志以Merkle树形式存储,实现高效的一致性和唯一性验证。
- 浏览器支持:
- 如Chrome和Firefox要求证书在TLS握手中提供多个SCT,增强安全性。
- 公开日志(Public Log):