为什么最终实体证书之上的证书可以基于 SHA-1?

信息安全 证书 证书颁发机构
2021-08-15 16:52:36

我听说将逐步淘汰基于 SHA-1 的证书以供最终实体使用,以及为 Google Chrome 概述的步骤,以逐步显示未在 2016 年 1 月 1 日之前到期的 SHA-1 证书的积极警告。

在他们的博客文章的底部,逐渐淘汰 SHA-1,他们提到,关于这个,引用:

注意:受信任根证书的基于 SHA-1 的签名不是问题,因为 TLS 客户端通过其身份信任它们,而不是通过其散列的签名。

我不明白这里的区别。

倡导者(更高权威)签署证书的哈希是否证明了身份?

2个回答

这不适用于“最终实体之上的证书”,而仅适用于“根证书”。

纯 X.509中,没有“根证书”之类的东西。证书,也有信任锚证书包含一个公钥,即拥有该密钥的实体的名称,并由另一个实体(“上级证书颁发机构”)签名。这个签署过程必须从某个地方开始,而那个地方就是“信任锚”。信任锚是名称和公钥。

X.509 没有指定任何实体应该如何编码信任锚,因为信任锚是先验已知的东西,而不是要通过网络交换的东西。但是,存储信任锚的传统方法是使用与证书相同的格式。除其他外,证书包含一个非可选字段,用于来自某个上层 CA 的签名。传统不是为信任锚定义新格式,而是用自签名填充“签名字段”。因此诞生了根证书:一个被编码为自签名证书的信任锚。

但是那个自签名是没有意义的!它没有任何安全价值。相应地,没有人验证它(*)。因此,不存在与使用其他被怀疑的散列函数相关的问题。

(*) 一些系统会启发式地检查该签名,因为自签名证书只能用作根,不能用作其他任何东西。但这不是安全功能;这是为了方便用户界面,而不依赖于该签名的安全性。因此,SHA-1 或 MD5 或 MD2 没有问题。

倡导者(更高权威)签署证书的哈希是否证明了身份?

根证书内置于系统中(或随浏览器一起提供)。它们是信任链的末端,没有更高的权威签署它们。它们是自签名的,但只是因为必须有一些签名。不需要检查签名,因此签名哈希的安全性无关紧要。

换句话说:叶子和链证书的信任是基于对签名者的信任,并由签名表示。必须不能欺骗这种信任,即使用 SHA-256 而不是 SHA-1。对于自签名证书,这意味着对自身的信任。某人对自己的信任程度并不重要,重要的是其他人对他的信任程度(即内置证书意味着完全信任)。

请注意,在这种情况下,信任仅表示对某人颁发证书的信任。这并不意味着网站有多安全。黑客也可以轻松获得证书!