如何证明 3 个独立的根 CA 验证了我的域?

信息安全 加密 密码学 证书 公钥基础设施 证书颁发机构
2021-08-18 21:49:23

我担心根 CA 遭到黑客攻击,并想从完全不同的提供商那里购买 3 个 SSL 证书,这些提供商将独立验证我的身份。然后在演示时,我会将所有 3 个“证书”发送给客户。

从协议或加密(密钥以某种方式连接)的角度来看,有哪些方法可以满足这种需求?

语境

  • 执行额外验证的现有 HTTP Web 客户端、chrome 扩展程序或 SOCKS/代理
  • 尚未发明的另一种实现的概念证明(例如,包含新加密的新版本 TLS)

我想到的可能的解决方案包括:

  • 客户端发出 3 个 HTTPS 请求,其中每个请求都使用不同的证书进行加密。响应应该是一个随机数,在所有 3 个响应中都相等。

  • 2 个密钥已签名并包含一个 x509 自定义字段,该字段引用“已验证”证书的序列号

  • 密钥以一种有趣的方式在数学上组合,将多个请求减少为一个请求。(RSA 或 ECC/子组)

问题

  1. 这样的协议是否以草案形式存在于任何地方?

  2. 有没有办法在数学上结合 N 个证书的验证而不会失去安全性?

    一个。我对将我认证为网络主机 3 倍的加密感兴趣

    湾。使用 3x 签名数据流提高数据的完整性

    C。通过 3 倍的加密提高数据的隐私性

(注意我知道 DANE 可能会满足此要求的一部分,但我正在寻找非 DANE / HTS 解决方案)

1个回答

没有标准的方法来做你所设想的事情,我不知道任何相关的建议。当前建立的 PKI 结构仅允许单个证书链(即证书的单个颁发者),并且类似使用的 TLS 协议仅允许单个叶证书。理论上,可以使用证书扩展创建具有多个颁发者的证书,并且理论上可以扩展 TLS 中的验证过程以检查多个颁发者。但同样,我不知道在这个领域有任何严肃的提议。

通过多个 HTTPS 请求提供不同的证书也需要某种扩展或 hack,因为服务器需要知道它需要发送哪些证书。使用新的 TLS 扩展,客户端可以请求特定的证书。如果没有客户端,可能会将现有的扩展(如 SNI)重新用于不同的目的,即给出稍微不同的目标主机名。或者可以在 DNS 中提供不同的 IP 地址,并且每个 IP 地址服务器提供不同的证书。或者可以随机轮换证书。在所有这些情况下,客户端必须知道它应该尝试获取多个证书以及应该获取多少证书以及如何组合这些信息。这意味着需要一些关于服务器的知识,这些知识要么被编码到每个证书中(即

因为没有标准甚至建议的标准来做到这一点,您要么需要发明自己的标准,要么尝试从当前标准中获得最佳效果。由于破解根 CA 是您的主要关注点,您可能已经受到现有标准HPKP 的足够保护,即首次使用时固定的证书。这样,任何受感染的 CA 都无法以您的名义创建可用的证书,该证书会被已经访问过您的浏览器接受,因为攻击者需要您的私钥来滥用证书。如果 HPKP 还不够,您可以申请将您的公钥包含在浏览器中。并且此公钥固定不限于特定的 CA,而仅限于您的密钥对,这意味着如果您在由不同 CA 签名的另一个证书中使用相同的密钥,则密钥和 HPKP 信息将保持不变。因此,如果浏览器不信任 CA,您可以轻松更改 CA。目前并非所有浏览器都支持 HPKP,它会变得更好. 因此,这可能是您在不尝试建立另一个标准或创建一些使用过的浏览器扩展的情况下获得的最好的结果。如果 HPKP 不适合您,您可以在问题中添加原因。