如果恶意证书具有相同的“主题密钥标识符”,会造成什么损害?

信息安全 证书 公钥基础设施 证书颁发机构 威胁缓解
2021-08-30 11:46:14

我正在查看Subject Key IdentifierCA 证书的属性,并试图了解它在验证中所起的作用,并推断验证客户端软件如何出错。

  • 主题密钥标识符在验证 CA 或最终证书中的作用是什么?
    任何有关如何实现流行软件包的知识都会有所帮助

  • 如果攻击者可以生成一个也包含相同散列的公钥,他们可以做的最坏的事情是什么?

当我阅读RFC3280时,我看到主题密钥标识符 (SKI) 就像用于构建和验证 PKI 链的粘合剂。SKI 似乎也比用于将两个证书绑定在一起的证书序列号和名称更安全。

关于证书哈希的客户端验证,客户端是简单地对 SKI 进行“模式匹配”,还是链 SKI 实际计算如下所述:

对于 CA 证书,主题密钥标识符应该从
公钥或生成唯一值的方法中派生
从公钥生成密钥标识符的两种常用方法是:

  (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the
  value of the BIT STRING subjectPublicKey (excluding the tag,
  length, and number of unused bits).

  (2) The keyIdentifier is composed of a four bit type field with
  the value 0100 followed by the least significant 60 bits of the
  SHA-1 hash of the value of the BIT STRING subjectPublicKey
  (excluding the tag, length, and number of unused bit string bits).

我试图减轻的一个示例风险是格式不正确的 CA 证书,其公钥不会散列到正确的 SKI(通过手动 ASN.1 编辑并从攻击者的根目录重新签名证书来完成)

2个回答

Subject Key Identifier不会在验证发挥作用,至少在构成RFC 5280第 6 节的算法中没有它旨在帮助路径构建,即在验证之前发生的活动:这是当想要验证证书的实体组装潜在的证书链时,然后将通过第 6 节算法进行处理。第 4.2.1.2 节描述了此扩展,并包括以下文本:

为了促进证书路径的构建,该扩展必须出现在所有符合 CA 的证书中,即所有证书包括基本约束扩展(第 4.2.1.9 节),其中 cA 的值为 TRUE。在符合 CA 证书中,主题密钥标识符的值必须是放置在由该证书的主题颁发的证书的授权密钥标识符扩展(第 4.2.1.1 节)的密钥标识符字段中的值。在执行证书路径验证时,应用程序不需要验证密钥标识符是否匹配。

这些“必须”是 CA 的义务:为了符合 RFC 5280 描述的配置文件,CA 必须注意将Authority Key Identifier其颁发的证书与其自己的证书相匹配Subject Key Identifier注意最后一句话:这个匹配不是验证必须验证的一部分。

RFC 建议通过散列计算密钥标识符,因为这将最大限度地减少冲突,从而保证此扩展在路径构建时的最大效率。但是,散列不是强制性的。CA 可以以他们认为合适的任何方式选择标识符;验证者当然不会重新计算标识符。这是纯粹的字节到字节相等测试。此外,我知道 Microsoft 的路径验证实现已准备好构建并尝试验证密钥标识符不匹配的路径。

流氓 CA 通过重用密钥标识符可以做的最糟糕的事情是使路径构建更加困难。对于通过密钥标识符进行路径构建并且懒得尝试其他方式的验证者,这可能会触发一种拒绝服务在实践中,验证者倾向于通过匹配主题和颁发者 DN 来构建路径,而不是密钥标识符,因此实际影响应该接近于零。

Rouge Key Identifiers 会阻碍明确的路径查找。

在最坏的情况下,必须检查几个潜在路径的有效性。但是,无论如何,您的信任库中是否会有带有 rouge 标识符的证书?如果您不信任它,则无需检查该路径。如果您确实信任它,那么路径将无法验证。