什么是证书透明度?
证书透明度(CT)提供了一套用于监控和审计证书颁发机构(CA)签发的所有公开SSL证书的体系。公开CA、Web浏览器厂商、CT日志运营方及其他诸多相关方共同参与保障CT框架正常运行。
由公开受信任的证书颁发机构(CA)签发的SSL/TLS证书是安全网络通信的基石。如今数字证书的签发量远超以往,确保证书正确签发至关重要。但由谁来监督CA签发的数字证书符合所需的高可信标准?这正是证书透明度的作用所在。
CA每次签发公开受信任的SSL证书时,都需要将该证书的详情提交至多个证书透明度日志。这些CT日志会返回经过加密签名的时间戳,作为证书已提交的凭证。日志可公开访问,让每一张新签发的证书都具备透明度与可见性。这种透明度是保障互联网信任的关键环节,允许任何主体监控证书签发行为,从而更易发现错误签发、可能被攻击者滥用于发动针对用户的攻击的证书。
CT日志的工作原理
证书透明度依托一个由独立运营的“日志”组成的分布式生态系统运行。这些公开日志是防篡改、仅追加写入的数据库(内部采用默克尔哈希树结构)。
日志的设计机制可实现:日志中的任意条目都可被验证,对日志的未授权修改可被立即、轻易检测到。
由于CT日志具备“仅追加写入”的特性,随着时间推移日志体积可能会变得非常大。为解决这个问题,日志会被划分为多个“分片(shard)”,每个分片存储特定时间段内的证书。当某个分片中的所有证书都过期后,该分片将停止使用。这种方式让日志运营方可以控制需要处理的实际文件大小,同时仍然保留永久记录。
此外,每一家签发公开证书的CA都需要向多个日志提交数据以实现冗余,这样即使发生严重故障,也能保证所有公开SSL证书都被记录并可被查询。
可以且应当对这些日志进行监控,以便及时发现错误,同时让域名所有者能够查看所有为其域名签发的证书。目前有多种可用于挖掘这类数据的工具,包括crt.sh和Censys。Crt.sh是读取和审计CT日志数据最常用的工具。
这些日志由CA、浏览器厂商、服务提供商等多个不同主体运营。Sectigo作为公开CA以及CT生态体系的成熟参与方,不仅运营自有日志,还会赞助其他主体运营独立的日志。
证书透明度的重要性
SSL证书错误签发无论出于有意还是无意,都可能带来风险,因为攻击者可能利用这类证书截获私密数据。基于这一点,CT的重要性在于它提供了公开校验机制,安全专家、第三方研究人员、域名所有者都可以通过该机制确认证书已完成正确校验、并签发给了正确的主体。如果CA在身份核验与签发流程中存在疏漏,或是自身被入侵,CT可帮助快速识别“问题”证书,从而完成正确的吊销操作。CA吊销错误签发证书的操作可以阻止恶意行为者窃取数据。
除了提供透明度之外,CT还有助于建立整个CA行业的信任。由于所有公开证书都被记录在案,任何主体都可以监督公开CA的签发行为,确保证书正确签发。这推动CA行业履行责任,保障各机构能够信任已签发的证书。CT还为研究人员构建互联网证书使用与行为模型提供了数据支撑。
要了解更多关于CT的内容,可收听Root Causes播客第202期《什么是证书透明度?》"