Group of Software Security In Progress

Whats in a Name Exploring CA Certificate Control

作者: Zane Ma, Joshua Mason, Manos Antonakakis, Zakir Durumeric, Michael Bailey

单位: Georgia Institute of Technology乔治亚理工学院, Stanford University斯坦福大学, University of Illinois at Urbana-Champaign伊利诺伊大学厄巴纳-香槟分校

会议: USENIX Sec 2021

链接: What’s in a Name? Exploring CA Certificate Control

Abstract

作者总结发现,近年来对PKI中根证书的管理一直存在问题。现下,解决这些问题的最可行的方法是Mozilla的Common CA Database (CCADB),CCADB为CA管理员提供了一种自发公开证书、证书策略和审计的平台,其无法提供CA操作员的信息,无法很好的解决上述存在的问题。因此,作者在CCADB的基础上开发Fides,Fides是一个对CA操作行为建模和集群的系统,以便在共享的操作控制下检测CA证书。

Background

首先,我们首先来看一下Web PKI的结构,以及一张证书。 img

一般情况下,CA证书的生命周期要长于CA本身。如下图,Symantec/DigiCert和Comodo/Sectigo的证书都可以表明,这两家CA属于UserTrust。事实上,UserTrust曾是一家独立的CA,它过去将一些它的根证书转移到了GeoTrust,然后又转移到了Symantec,并最终转移到了DigiCert。再后来,Comodo又收购了UserTrust以及其余的根证书。 img 在某些情况下,可以查阅到根证书及CA所有者转移的历史,但是实际这些很多都是私下进行的。

目前,Mozilla维护的CCADB(Common CA Database)是识别CA证书Operator的最佳解决方案,它存储了所有CA证书的元数据。它为CA运营商提供了一种自我公开证书、证书策略和审计的方式。然而,其存在两个问题:一是不够全面,二是并不是所有的转移都通过CCADB所披露

作者定义了CA运营商为可以控制包含了CA证书私钥的硬件控制单元(hardware security module, HSM)的法人实体。

Fides: A System for Uncovering Ownership

因此,作者设计了系统用于披露CA证书的所有权。 img ### 数据收集

数据收集 作者从证书透明度日志和CCADB中收集了2.9B张叶子证书,9,154张CA证书。

指纹标识

对叶子证书进行指纹标识 如图五所示。在这里,作者仅分析了证书的ASN.1树结构,而不把叶子节点值作为证书指纹来抽象。 作者发现,Let’s Encrypt有66个不同的指纹,DigiCert有21,856个不同的指纹,而Sectigo有23,576个,且他们的证书没有重合。这些表明,Let’s Encrypt颁发的证书较为单一。 作者进一步又利用指纹对CA颁发者进行组合,结果如图五所示。DigiCert形成两个互不相干的集群;Sectigo则零零散散,不成集群;而Let’s encrypt仅有两个issuers,其中第二个是已经被淘汰的CA证书。

img

img

CA网络基础设施

网路基础设施 作者也使用了CA网络基础设施作为CA的特征,以辨识出一些共享的情况,作者使用了证书中的OCSP、CRL和AIA的域名。作者总共提取了2334个域名,由991个OCSP、938个CRL和800个AIA组成。作者对这些域名查询了DNS的A记录,总共生成了在309个AS的835个IPv4地址。作者在这里特别删除了使用CDN服务的IP地址。

CA审计

CA审计 最后,作者从CCADB中提取对于CA的所有审计,共1,266个PDF,用作对应CA的特征。

综合

综合 作者在这里定义,只有两张证书至少两个属性近似,才被认为是属于同一个CA运营的。最后,Fides生成了320个簇,其包含了2,599个CA颁发者,簇的大小从2-696个CA证书不等。 作者又分别评估了这三种衡量方法分别的贡献度,如下图所示。证书审计的贡献度最大,而指纹的准确率较高。

img

评估

由于没有基准来评估Fides的正确性,作者在这里使用了“Fides能否准确的发现CA证书的所有权更替” 为标准对Fides进行了评估,并和CCADB做了对比。 作者共发现了在2014年5月至2019年7月期间,CCADB上的28个延迟或无效的披露,这覆盖了150个颁发者。且Fides能够提供更高的精确度,因为可以正确识别出簇所属的CA,但是召回率较低,即仅能识别出32%的CA。 img

4 Towards CA Transparency

在本节中,作者将利用Fides揭露了CCADB中拥有不正确或误导性所有权数据的CA证书。 ### Labeling Fides Nodes CCADB利用证书的指纹追踪CA证书,而Fide则利用SSPKI(Subject+Subject Public Key Info)来标识颁发者。作者利用Fide对CCADB的证书进行分组,并发现了39个颁发者(110张证书)有超过1个的所有者。其中31个SSPKI已经过期、撤销。而8个CA在CCADB中的记录十分模糊,这是由于交叉签名造成的。

除此之外,作者还发现557个未出现在CCADB的CA证书,它们与CCADB标记的CA证书共享SSPKI,作者利用它们对CCADB进行了扩展。 ### Multi-operator Clusters 对于CCADB中被组合起来的簇,作者发现11个簇在CCADB中有超过1个的所有者。作者手工检查了这些证书,其中两个是误报,剩下的九个簇包含了581张证书的728个颁发者。作者纠正了125个颁发者和136个CA证书的标签。 img - White-label sub-CA. web.com是Sectigo的子CA,但是它们在一定程度上有交叠的操作,且存在交叉签名的现象。 - Undisclosed control. 6个簇的CA实际为未公开的状态。 - Clerical error. 2个簇是由于笔误造成的。 - False positives. Fides错误地将两个CA簇分组。

Minority unlabeled clusters

作者对94个CCADB为披露的证书进行了标记,它们属于17个簇,其中,绝大多数(>70%)是已知的发行者。 img

CA operator dataset

最后,作者开源了他们的数据集。https://github.com/zzma/ca-transparency img