Certificate Transparency(CT)是一种公开透明的安全机制,旨在使在使用HTTPS的网站和应用程序中,检测和预防恶意服务器证书及滥用的问题。CT需要证书颁发机构(CA)将其颁发的SSL/TLS证书及证书提交的证明在可验证的公共日志中发布,以便第三方(例如网站提供商或Web浏览器供应商)能够监控和分析证书的使用情况并强化安全。
CT的实现定义了一组基本的规则和API,要求电子证书在三个公共日志中公开。一旦证书被发布到日志中,第三方就能够验证证书的真实性,也就意味着如果证书的使用出现了干扰,比如人为篡改或恶意行为,第三方就可以迅速发现和采取相应的措施。
下面简单介绍一下CT的实现过程。
- CA将签名后的证书提交到公共日志中
CA将颁发的新证书提交到至少一个公共日志中,这个过程可以通过CA自己实现或通过第三方日志服务器完成。证书被提交后,日志服务器会为证书颁发一个唯一的日志ID号。
- 日志服务器公开设置证书存储区
日志服务器会公布一个可被查询的存储区,这个存储区可显示日志中的证书信息。证书在日志中被披露后,第三方就可以使用公共API进行查询,期望获得证书的详细信息。
- 黑客入侵伪造证书的恶意行为被检测
如果黑客入侵CA机构,利用私钥颁发了假证书。这些证书会被提交到公共日志和存储区。但如果黑客别有用心,将伪造的证书攻击某个网站,这个网站的管理员可以通过API查询:是否有其他 CA签发了该网站的证书?
- 第三方快速定位和解决安全问题
一旦发现证书滥用或验证不通过,第三方可以通过查询日志、查看证书颁发链和其他信源监控,准确地追踪证书滥用的路径。这个过程将披露事件的详细信息,使受影响的网站管理员可以迅速进行恢复和加强安全措施。
示例1:
我们假设攻击者使用先前盗用的CA的私钥签名假证书。假证书被提交到两个公共日志中:
-----BEGIN CERTIFICATE-----
MIID0jCCArqgAwIBAgIERch2NjANBgkqhkiG9w0BAQsFADBLMQswCQYDVQQGEwJV
UzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzE2
MDQGA1UECgxEb21haW4gQ29udHJvbCBWYWxpZGF0ZWQgUHVibGljIFJvb3QgQ0Ex
CzAJBgNVBAsMAklUMRowGAYDVQQDDBF0ZXN0LmNvbXBhbnkubmV0MDYwNAYHKoZI
zj0EAwMwADAtAhUA3uFwiYteBDsrsAVCt9ywJq3l1vUtS6SurbavsZB21D8+A==
-----END CERTIFICATE-----
日志服务器将生成关于假证书的消息,并公开在可验证的存储区。第三方可以发现同一域名的另一个有效证书已经被CA签发。第三方可以通知网站管理员和Browser Vendor安全问题的存在。
示例2:
类似的,假设攻击者利用钓鱼网站和伪造证书攻击一个重要的金融服务网站。管理员可以利用日志验证:该证书是否与该网站的正式证书相匹配?这个过程可以迅速确定是否存在经过验证的SSL/TLS证书。然后,管理员观察该证书的正确颁发链,查看是否存在中间人攻击,如果发现攻击,则可以立即采取行动来保护客户。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:什么是Certificate Transparency(CT)? - Python技术站