证书透明机制 — 防范证书签发机构作恶

写在前面

公钥基础设施(PKI)是当今互联网世界的安全基石,它可以帮助我们确认通信双方的身份,防止数据被窃听或篡改。

简单回忆一下经典的互联网身份验证过程,浏览器向服务器请求网站的 HTTPS 证书,验证证书所代表的网站是否就是被访问的网站,如果不是则停止通信,以避免中间人攻击

浏览器不仅要确定证书所代表的网站是否正确,也要确定证书本身是否是伪造的。所以浏览器会存储一些受信任的证书签发机构(CA),只要是他们签发的证书都被认为是可信的。

不过 CA 并不总是可信的:

  • CA 可能会出于某些原因签发用于攻击证书。
  • CA 被黑客控制,签发了用于攻击的证书。
  • CA 因为操作失误/系统故障等原因签发了错误的证书。

比如说如果我拿到了一个网站的证书,但这个网站并不属于我,我就可以窃听,篡改这个网站的通信。

证书透明机制(Certificate Transparency)即 CT 机制可以缓解这个问题。

何为透明?

从上文来看,如果某个 CA 签发了不合规的证书,只要我们及时吊销它,就不会有被攻击的风险。所以问题的关键就是如何及时发现不合规的证书。

证书透明机制维护了一个向所有人公开的日志数据库,所有加入到 CT 机制的 CA 签发的每一个证书都会被记录到这个数据库中。所以所谓透明就是把 CA 的签发所有证书都公开,这样一旦 CA 乱搞很快就会被发现。

CT 机制下 CA 如何签发一张证书?

  1. 网站所有者向 CA 请求签发一张属于自己的证书。
  2. CA 机构验证申请者的身份,并首先生成一张 “预证书”(precertificate),并将这张证书提交给 CT 数据库。下文将解释什么是预证书,以及为什么需要它。
  3. CT 数据库接收到预证书后,立即将 “证书签名时间戳”(signed certificate timestamp)返回给 CA,并承诺预证书会在某个时间点之后被写入到 CT 数据库。这个时间戳会被 CT 签名,确保不给伪造。
  4. CA 将这个时间戳写入证书中,签名,成为最终的证书。
  5. 将最终的证书返回给网站所有者。

我们首先来解释一下 “预证书”。

CT 数据库需要知道证书的全部内容才能将其写入到数据库,CA 机构需要 “证书签名时间戳” 才能生成最终的证书。但是生成最终证书需要 CT 提供 “证书签名时间戳”,CT 又需要知道证书的全部内容才返回这个时间戳,

“预证书” 可以解决这个问题,”预证书” 包含了最终证书的所有信息(除了 “证书签名时间戳”),同,时它被标记为不可用,不会被浏览器识别为有效的证书。

由于 “预证书” 包含了最终证书几乎所有的信息,所以存储这张证书依然可以建立与最终证书对应关系。所以 CT 可以放心地将 “证书签名时间戳“ 返回给 CA,并由 CA 签发最终的证书。

回到证书签发流程,我们会发现 CT 并不关心一张证书的签发是否合规,它只是如实地记录每一个被签发证书,以及签发这个证书 CA。

CT 机制如何保证安全?

为了及时发现不合规的证书,就需要有人监视这个数据库的变动。

利益相关方比如 Google,会监控数据库的变动,如果它发现有自己以外的 CA 签发了 Google 的证书,那么 Google 可以立即将这个发现公之于众,然后在自己的浏览器(Chrome)中吊销这个证书,鉴于 Chrome 的市场份额,这可以很大程度地保持安全。

同时许多浏览器(Chrome,Safari 等)会强制证书加入 CT 机制,这些浏览器会验证 “证书签名时间戳” 是否来自受信任的 CT 数据库,如果不是则中断通信。

你可能会疑惑为什么浏览器不直接去 CT 数据库查询对应的证书,一部分原因是这种做法等同于向 CT 数据库发送自己的浏览器历史记录。

为什么 CA 和浏览器要参与到 CT 机制?

CT 机制是增强安全措施,如果 CA 拒绝加入会被公众怀疑你的证书是否合规,浏览器拒绝加入则会让用户怀疑使用你的浏览器是否安全。

Google 是这项机制的重要推动者,如果 CA 不加入 CT,那么你签发的证书很可能不被市场份额极高的 Google Chrome 所信任。

谁来确保 CT 不会作恶?

整个证书签发和写入数据库的流程都由密码学提供保证,任何人都不可能篡改已经写入数据库的信息。所以 CT 作恶的唯一方式就是照常签发 “证书签名时间戳”,但是不将证书写入数据库以避免来自外部的审查。

所以要成为浏览器信任的 CT,需要满足一些条件,随便举几个例子。

  • CT 能够在指定时间内将证书信息写入数据库。
  • CT 服务的停机时间不能超出某个时间范围。
  • ······

每个浏览器的审核标准也不同,必须满足标准才会被浏览器信任。比如你可以查看 Google Chrome 的审核标准

CT 和 CA 依然有机会作恶

是的,CT 机制并不能解决这个问题,但是它让这个问题变好了

参考资料

本文作者:ADD-SP
本文链接https://www.addesp.com/archives/5638
版权声明:本博客所有文章除特别声明外,均默认采用 CC-BY-NC-SA 4.0 许可协议。

评论

  1. 5月前
    2023-8-01 12:05:18

    明代有九卿圆审、三司会审制度,这种会审出来的结果比较公正,并不是因为参加会审的官员品德多么高尚,而是因为参加会审的人多,不容易买通。😂

发送评论 编辑评论


上一篇
下一篇