4.4 证书透明性
PKI体系中,用户无条件信任由可信第三方(CA)签发的证书。但是,如果CA服务器被攻击或CA在签发证书时没有对申请者进行严格的尽职调查,就会产生严重的安全问题。例如,前面介绍的2011年著名认证机构DigiNotar遭到黑客入侵,颁发大量非法证书;Google也多次宣布从其包括Chrome在内的所有产品中删除某些违规签发证书的组织机构或商业CA的根证书。在上述案例中,攻击者可以进行中间人攻击,拦截用户的安全连接,窃取用户的敏感信息。为了解决盲目信任CA 签发的证书所存在的潜在风险,Google于2013年3月提出了数字证书透明性(Certificate Transparency,CT)技术,用于提升服务器证书的可信性,从而提高使用证书的系统的安全性。同年6月,IETF推出了CT有关的试验性标准:RFC 6962(Certificate Transparency)。2014年1月,IETF成立Public Notary Transparency(TRANS)工作组,专门讨论设计、部署、使用CF时碰到的各种问题。
CT的目标是提供一个开放透明的监控和审计系统,要求CA向该系统中记录所有的证书签发行为,从而让任何CA和域名所有者确定证书是否被错误签发或被恶意使用,保护用户使用加密协议(如HTTPS,将在第9章介绍)访问网站时的安全。
CT改变了证书的签发流程,新流程规定:证书必须记录到可公开验证、不可篡改且只能添加内容的日志中,用户的Web浏览器才会将其视为有效的。通过要求将证书记录到这些公开的CT日志中,任何感兴趣的相关方都可以查看由任何CA向任何网站签发的证书。从而有助于形成一个更可靠、可信的证书系统。
CT并不能阻止CA签发错误或虚假证书,但是它能让人们清楚地看到CA签发的所有证书,从而使检测这些证书的过程变得相对容易。具体来说,CT有三个主要的功能性目标:①CA 难以错发证书,从源头上减少了错发证书的机率;②提供一个公开的审计和监控系统;③用户能够识别恶意或错误的证书。
如图4-13所示,CT系统由三部分组成,确保CA和日志服务器遵循CT工作流程:
(1)日志服务器(Log Server):维护可公开审计、只增不减的证书日志。
(2)监控器(Monitor):通过下载并检查所有日志条目来检查日志中的可用证书。
(3)审计器(Auditor):根据日志的部分视图验证日志更新是否正确。
图4-13 增加了CT的Web信任模型
具体流程如图4-13所示,包括4个步骤:
(1)CA向Log服务器发送一个预签证书(Pre-certificate),Log服务器使用自己的私钥签署一个证书签署时间戳(Signed Certificate Timestamp,SCT),并返回给CA。
(2)CA将SCT嵌入到正式的SSL证书中,并发送给Web服务器。Web服务器随后在TLS 握手协议中将带有SCT签名的证书发送给Web 浏览器.
(3)用户在使用支持CT的浏览器通过安全的HTTP协议(HTTPS)访问Web服务器时,如果该Web服务器的证书未记录到CT日志中,则用户浏览器可能不会显示安全连接挂锁图标(有挂锁图标表示在使用HTTPS协议访问目标服务器,如图4-14所示)。
图4-14 使用HTTPS协议访问Web服务器
(4)Monitor和Auditor交换监控信息。
域名管理者、CA和利益第三方都可以部署CT Monitor。域名管理者通过CT Monitor周期性地对Log进行监视,可以实时得知自己的各个域名被部署了CT的所有CA签发的证书,并从中排查出可疑证书。而CA也可以通过CT Monitor监视自己或其他CA签发的证书,从而CA或域名管理者可以防止错误证书(如伪造的服务器证书或未得到合法授权的中间证书)被他人滥用。
Auditor使用证书上附带的SCT 签名来向Log服务器验证该证书是否被记录,如果没有,Web浏览器就可以拒绝访问该证书所对应的网站,以保护自己的安全;另一方面,Auditor可以通过CT的Gossip协议将该问题证书的信息通知给Monitor,以便CA或域名管理者及时处理。
此外,证书透明性中的Gossip协议作为其通信协议,允许Monitor、Auditor和Web客户端之间相互交流信息,共享从Log服务器中获得的证书信息,以保证证书的一致性,检测Log服务器的不正当行为。
数字证书透明性(CT)这一概念及其相关技术体系,是一次针对Web PKI安全缺陷在协议层面所做的系统性修复工作,能够对证书进行公开审计,确保网站访问者不受恶意或者错误的证书所害。当然,CT技术也引入了新的运行风险,如Log服务器为虚假证书创建了一条日志,Monitor不通知域名所有者存在针对其域名的虚假证书等,详细内容读者可参考文献[24]。