证书透明度为当前的SSL证书系统添加了三个新的功能组件:
证书日志
证书监视器
证书审核员
这些功能组件代表提供补充监控和审计服务的分立软件模块.它们不是现有SSL证书系统的替代品或替代品.事实上,这些组件不会改变基本的信任链模型,它允许客户端验证域并建立与服务器的安全连接.相反,这些组件通过为公众监督和整个SSL证书系统的审查提供支持来增强信任链模型.
基本日志功能
证书透明系统的核心是证书日志.证书日志是维护SSL证书记录的简单网络服务.证书日志有三个重要特性:
它们只能追加 - 证书只能添加到日志中; 证书不能被删除,修改或追溯插入到日志中.
它们使用密码保证 - 日志使用一种称为Merkle Tree Hashes的特殊加密机制来防止篡改和不当行为.
它们是公开可审计的 - 任何人都可以查询日志并验证其行为良好,或者验证SSL证书是否已合法地附加到日志中.
日志的数量不需要很大:需要有足够的日志,以便日志失败或临时中断不是问题,但不是太多,以至于难以监控 - 例如,超过10个,但远远低于1000.每个日志独立于其他日志运行(也就是说,日志中没有自动复制).
日志的仅附加特性允许它使用特殊类型的加密哈希来证明它没有损坏,并且日志操作员没有删除或修改日志中的任何证书.这种特殊的散列 - 被称为Merkle Tree Hash - 也使得审计人员可以检测到某人是否分支了日志或将过期的证书插入到日志中.有关散列机制的更多信息,请参阅日志证明如何工作.
每个证书日志必须公开通告其URL和公钥(等等).任何人都可以通过HTTPS GET和POST消息与日志进行交互.
基本日志操作
任何人都可以将证书提交给日志,但大多数证书将由证书颁发机构和服务器运营商提交.当某人向日志提交有效的证书时,日志会使用签名证书时间戳(SCT)作出响应,这仅仅是在某个时间段内将证书添加到日志的承诺.时间段被称为最大合并延迟(MMD).
MMD有助于确保日志服务器在合理的时间范围内将证书添加到日志中,并且不会阻止证书的颁发或使用,同时允许日志运行分布式服务器群以提供恢复能力和可用性.SCT在整个证书的整个生命周期都附带证书.特别是,TLS服务器必须在TLS握手期间向SCT交付证书.
证书透明度支持三种方法来交付带有证书的SCT.每个都在下面描述.
X.509v3扩展
证书颁发机构可以使用X.509v3扩展将SCT附加到证书.图1显示了这是如何工作的.证书颁发机构(CA)向日志提交预先证书,并且日志返回SCT.然后CA将SCT作为X.509v3扩展名附加到优先证书上,签署证书并将证书发送给服务器运营商.
此方法不需要对服务器进行任何修改,并且它可以让服务器运营商继续以其始终拥有的相同方式管理其SSL证书.
TLS扩展
服务器运营商可以通过使用特殊的TLS扩展来提供SCT(见图2).在这种情况下,CA向服务器运营商颁发证书,服务器运营商将证书提交给日志.日志将SCT发送给服务器运营商,并且服务器运营商使用具有类型的TLS扩展signed_certificate_timestamp 在TLS握手期间将SCT交付给客户端.
此方法不会更改CA颁发SSL证书的方式.但是,它确实需要更改服务器以适应TLS扩展.
OCSP装订
服务器运营商也可以通过使用联机证书状态协议(OCSP)订书机交付SCT(参见图2).在这种情况下,CA同时向证书服务器和服务器运营商颁发证书.然后,服务器运营商向CA进行OCSP查询,并且CA用SCT进行响应,在TLS握手期间服务器可以将其包括在OCSP扩展中.
该方法允许CA负责SCT,但不会延迟证书的颁发,因为CA可以异步获取SCT.但是,它确实需要修改服务器才能执行OCSP装订.
基本监控和审计员操作
监视器监视日志中的可疑证书,例如非法或未经授权的证书,异常证书扩展或具有奇怪权限的证书(例如CA证书).监视器还会验证所有记录的证书在日志中是否可见.他们通过定期获取已添加到日志中的所有新条目来完成此操作.因此,大多数显示器都有完整的所监视日志的副本.如果日志长时间处于脱机状态,并且监视器上有日志副本,则监视器可以充当备份只读日志,并将日志数据提供给尝试查询日志的其他监视器和审计程序.
审计人员验证日志的整体完整性.一些审计人员还可以验证特定证书是否出现在日志中.他们通过定期提取和验证日志证明来做到这一点.日志证明是经过签名的密码哈希,日志用来证明其具有良好的信誉.每个日志都必须提供他们的日志证明.
审计人员可以使用日志证明来验证日志的新条目总是添加到日志的旧条目中,并且没有人通过追溯插入,删除或修改证书来破坏日志.审核员还可以使用日志证明来证明特定证书出现在日志中.这一点尤其重要,因为证书透明度框架要求将所有SSL证书输入到日志中.如果TLS客户端(通过审计人员)确定证书不在日志中,则可以使用日志中的SCT作为日志未正确运行的证据.有关日志证明的更多信息,请参阅日志证明如何工作.
尽管日志证据允许审计人员或监视人员验证他们对特定日志的观点与他们以前的观点是否一致,但他们还需要验证他们对特定日志的看法是否与其他监视人员和审计人员一致.为了便于验证,审计人员和监视人员通过八卦协议交换关于日志的信息.这种异步通信路径可帮助审计员和监视器检测分支日志.
典型的系统配置
证书透明度框架没有规定现有SSL证书系统中监视器和审计员的任何特定配置或位置.也就是说,有些配置比其他配置更普遍.在典型配置中,CA运行监视器,客户端(浏览器)运行审计器(参见图3).这种配置简化了监控和审计所必需的消息传递,它使证书颁发机构和客户能够开发满足其客户和用户特定需求的监控和审计系统.以下描述了驱动这种配置的一些过程.
证书发放
CA从日志服务器获取SCT,并使用X.509v3扩展将SCT合并到SSL证书中(有关此过程的更多详细信息,请参见图1).然后,CA向服务器运营商颁发证书(附带SCT).此方法不需要服务器更新(所有服务器当前都支持X.509v3扩展),并且它允许服务器运营商以他们始终管理SSL证书的方式管理其证书.
TLS握手
在TLS握手期间,TLS客户端接收SSL证书和证书的SCT.像往常一样,TLS客户端验证证书及其签名链.另外,TLS客户端验证SCT上的日志签名以验证SCT是由有效日志发出的,并且SCT实际是为证书颁发的(而不是其他证书).如果有差异,TLS客户可能会拒绝该证书.例如,TL??S客户端通常会拒绝任何SCT时间戳未来的证书.
证书监控
大多数显示器可能由认证机构操作.此配置使证书颁发机构可以构建高效的监视器,并根据其特定的监视标准和要求进行量身定制.
证书审核
大多数审计人员可能会被内置到浏览器中.在此配置中,浏览器定期向其集成审计组件发送一批SCT,并询问SCT(和相应证书)是否已合法添加到日志中.然后审计员可以异步联系日志并执行验证.
其他系统配置
除上述典型配置外,监视器和审计员与现有TLS / SSL组件紧密集成,证书透明性支持许多其他配置.例如,监视器可以作为独立实体运行,为认证机构和服务器运营商提供付费或无偿服务(见图4).监视器也可以由服务器运营商运行,例如Google,Microsoft或Yahoo等大型互联网实体.同样,审计师可以作为独立的服务运行,也可以是监视器的辅助功能.