让我们加密新的ECDSA根证书和中间证书

2020-09-18 23:32:18

2020年9月3日,周四,让我们加密颁发了六个新证书:一个根,四个中间体,一个交叉签名。这些新的证书是我们改善网络隐私的更大计划的一部分,通过让ECDSA终端实体证书广泛可用,并通过使证书更小。

我们每天签发150万份证书,这些证书有何特别之处呢?我们为什么要发呢?我们是如何颁发证书的?让我们回答这些问题,并在此过程中了解证书颁发机构是如何思考和工作的。

每个公开信任的证书颁发机构(例如,让我们加密)至少有一个根证书,该证书合并到各种浏览器和OS供应商(例如,Mozilla、Google)信任的根存储中。这允许从网站接收证书的用户确认该证书是由他们的浏览器信任的组织颁发的。但是根证书凭借其广泛的信任和较长的寿命,必须对其相应的私钥进行仔细的保护并离线存储,因此不能一直用来对事物进行签名。因此,每个认证机构(CA)也有一些“中间证书”,这些证书可以颁发额外的证书,但不是根证书,它们用于日常颁发。

在过去的五年里,“让我们加密”只有一个根:ISRG根X1,它有一个4096位的RSA密钥,有效期到2035年。

在此期间,我们有四个中间层:让我们加密授权X1、X2、X3和X4。前两份是在2015年“让我们加密”开始运行时发行的,有效期为5年。后两者是在大约一年后,也就是2016年发行的,有效期也是5年,大约在明年这个时候到期。所有这些中间产品都使用2048位RSA密钥。此外,所有这些中间产品都由IdenTrust的DST根CA X3交叉签名,这是由大多数根存储信任的不同证书颁发机构控制的另一个根证书。

最后,我们还拥有ISRG Root OCSP X1证书。这个有点不同-它不颁发任何证书。相反,它会签署在线证书状态协议(OCSP)响应,表明中间证书尚未被吊销。这一点很重要,因为唯一能够签署此类语句的其他东西就是我们的根目录本身,并且如上所述,根目录需要保持脱机状态并确保安全。

首先,我们发布了两个新的2048位RSA中间体,我们正在召回R3和R4。这两个都是由ISRG RootX1发行的,都有5年的使用寿命。它们还将由IdenTrust交叉签名。它们基本上是我们目前的X3和X4的直接替代品,它们将在一年内到期。我们预计今年晚些时候我们的主要发行渠道将改用R3,这不会对发行或续签产生任何实际影响。

其他的新证书更有趣。首先,我们有新的ISRG Root X2,它有一个ECDSA P-384密钥,而不是RSA,有效期到2040年。由此,我们有两个新的中间体,E1和E2,都是ECDSA,有效期为5年。

值得注意的是,这些ECDSA中间体没有由IdenTrust的DSTRoot CA X3交叉签名。相反,ISRG Root X2本身由我们现有的ISRG Root X1交叉签名。敏锐的观察者可能还会注意到,我们没有从ISRG Root X2颁发OCSP SigningCertificate。

现在我们已经了解了技术细节,让我们深入了解为什么新的层次结构看起来是这样的。

您可以阅读许多其他文章来了解ECDSA的好处(在相同级别的安全性下,更小的密钥大小;相应地更快的加密、解密、签名和验证操作;等等)。但对我们来说,最大的好处来自他们较小的证书大小。

通过https://到远程域的每个连接都需要TLS握手。每次TLS握手都要求服务器提供其证书。验证该证书需要证书链(直到但不包括受信任根的所有中间层的列表),这通常也是由服务器提供的。这意味着每个连接-以及覆盖在广告和跟踪像素中的页面可能有几十个或数百个-最终都会传输大量的证书数据。并且每个证书都包含其自己的公钥和由其发行者提供的签名。

2048位RSA公钥约为256字节长,而ECDSA P-384公钥仅约为48字节。类似地,RSA签名将是另一个256字节,而ECDSA签名将仅为96字节。考虑到一些额外的开销,每个证书节省了近400字节。将其乘以链中有多少个证书,以及一天内获得多少个连接,节省的带宽很快就会增加。

这些节省对我们的订户和终端用户来说都是一项公共利益-他们可以选择每个月带宽可能是一项有意义的成本-他们的连接可能是有限的或计量的。将隐私带到整个网络不仅仅意味着提供证书,它还意味着使证书变得高效。

顺便说一句:由于我们关心证书大小,我们也几乎没有采取其他措施来节省新证书中的字节数。我们已经将它们的主题通用名称从“让我们加密授权机构X3”缩短为“R3”,依靠以前冗余的组织名字段来提供“让我们加密”。我们缩短了他们的Authority Information AccessIssuer和CRL分发点URL,并且完全删除了他们的CPS和OCSPurls。所有这些加起来又节省了大约120字节,而无需对证书中的有用信息进行任何实质性更改。

交叉签名是重要的一步,在颁发新的根证书和将该根证书合并到各种信任库之间架起了一座桥梁。我们知道,我们的新ISRG RootX2本身需要5年左右的时间才能得到广泛信任,因此,为了使E1中间层颁发的证书受到信任,TheChain中的某个地方需要有交叉签名。

我们基本上有两个选择:我们可以从现有的ISRG根X1交叉签署新的ISRG根X2,或者我们可以交叉签署来自ISRG根X1的新的E1和E2中间体。让我们来研究一下每种方法的优缺点。

交叉签名新的ISRG Root X2证书意味着,如果用户的信任存储中有ISRGRoot X2,那么他们的完整证书链将是100%ECDSA,从而为他们提供快速验证,如上所述。在接下来的几年里,随着ISRG RootX2被合并到越来越多的信任存储中,ECDSA终端实体证书的验证将变得更快,而用户或网站不必更改任何内容。不过,权衡之处在于,只要X2不在信任存储中,用户代理就必须使用两个中间件来验证链:E1和X2都链接到X1根。这在证书验证期间需要更多时间。

直接对中间商进行交叉签名具有相反的权衡。一方面,我们所有的链都将是相同的长度,只有一个介于订户证书和广受信任的ISRGRootX1之间。但另一方面,当ISRG RootX2确实变得广受信任时,我们将不得不经历另一次链切换,以便任何人都能获得全ECDSA链的好处。

最后,我们认为提供All-ECDSA链的选项更为重要,因此选择了第一个选项,并对ISRGRootX2本身进行交叉签名。

在线证书状态协议是用户代理实时发现其正在验证的证书是否已被吊销的一种方式。每当浏览器想知道证书是否仍然有效时,它只需点击证书本身包含的URL,就可以得到一个yes或no响应,该响应由另一个证书签名,可以进行类似的验证。这对于终端实体证书来说是很棒的,因为响应又小又快,任何给定的用户都可能关心(因此必须获取)截然不同的证书集的有效性,这取决于他们访问的站点。

但是,中间证书只是所有证书的一个很小的子集,通常是众所周知的,很少被吊销。正因为如此,简单地维护包含所有知名中间体的有效性信息的证书撤销列表(CRL)可以更加有效。我们的中间证书都包含一个URL,浏览器可以从该URL获取它们的CRL,事实上,一些浏览器甚至将这些URL聚合到它们自己的CRL中,并随每次更新分发这些CRL。这意味着,在加载站点之前,检查中间体的调用状态不需要额外的网络往返,从而带来比以往任何人都更好的体验。

事实上,最近对管理CA的基线要求进行了更改(投票SC31),使得中介证书不再需要包括OCSP URL;它们现在可以拥有仅由CRL提供的撤销状态。如上所述,我们已经从新的中间商中删除了OCSP URL。因此,我们不需要发布由ISRG RootX2签名的OCSP响应器。

既然我们已经共享了新证书的外观,那么最后一件事我们想要提的是:我们实际上是如何着手颁发它们的。

创建新的根证书和中间证书是一件大事,因为它们的内容受到如此严格的监管,并且它们的私钥必须受到严格保护。以至于发行新通行证的行为被称为“仪式”。让我们加密对自动化的强烈信念,所以我们希望我们的仪式需要尽可能少的人工参与。

在过去的几个月里,我们已经构建了一个仪式工具,只要进行适当的配置,它就可以生成所有所需的密钥、证书和交叉签名请求。我们还构建了我们的仪式的演示,展示了我们的配置文件,并允许任何人自己运行它并检查结果输出。我们的SRE组装了一个复制网络,配有硬件安全模块,并多次练习仪式,以确保它能够完美地工作。我们与我们的技术顾问委员会、我们的社区和各种邮件列表分享了此演示,并在此过程中收到了宝贵的反馈,这些反馈实际上影响了我们上面讨论的一些决策!最后,在9月3日,我们的执行董事在一个安全的数据中心会见了SRE,以执行整个流程,并记录下来以备将来审计。

现在仪式结束了。我们已经更新了证书页面,以包含所有新证书的详细信息,并开始请求将我们的新根目录合并到各种信任库中。我们打算在接下来的几周内开始发布我们的新中介,当我们这样做的时候,我们将在我们的社区论坛上发布进一步的公告。

我们希望这是一次围绕我们的层级进行的有趣和内容丰富的旅行,我们期待着一次一次地继续改进互联网认证。我们要感谢IdenTrust对我们的愿景的早期和持续的支持,我们的愿景是让网络的安全性变得更好。

我们依靠我们的用户和支持者社区的贡献来提供我们的服务。如果您的公司或组织想赞助“让我们加密”,请发电子邮件给我们,地址是[email protected]。如果量入为出,我们要求您个人捐款。