PKI (公钥基础设施)已变:量子时代与谷歌的默克尔树证书方案

文章探讨了量子计算对现有PKI的挑战,指出后量子数字签名标准将导致证书增大。为应对此,文章介绍了Google Chrome提出的基于Merkle树的无证书PKI方案,该方案通过Merkle根哈希实现证书验证与撤销,是未来PKI发展的重要方向。

PKI 正在改变?

嗯,PKI(公钥基础设施)已经运行良好,但随着我们的量子迁移,我们的数字证书将变得更大。这涉及 X.509 证书包含多个公钥(经典的公钥和量子健壮的公钥),并且还可能需要对证书进行双重签名。但是,谷歌浏览器有一个新计划,它将完全取消证书,并基本上发布一个默克尔根哈希。这个哈希值将涵盖所有已发布的现有证书。

为什么要改变?

我们现有的 X.509 证书包含 RSA 或 ECC 公钥,并使用这些方法进行签名。不幸的是,使用 Shor 算法,量子计算机将能够破解这些方法。为此,NIST 已经定义了一系列新的数字签名标准,包括 ML-DSA、FN-DSA 和 SLH-DSA (SPHINCS+)。对于密钥大小,我们通常会获得与 128 位安全(级别 1)、192 位安全(级别 3)和 256 位安全(级别 5)相当的级别。不幸的是,ML-DSA 的公钥和签名大小比 RSA 和 ECC 大得多,其中 ML-DSA-65 的公钥大小为 1,592 字节,签名大小为 3,293 字节。这比公钥和签名大小为 256 字节的 RSA,以及公钥为 64 字节的 ECC 大得多:

Method                           Public key size    Private key size   Signature size  Security level
------------------------------------------------------------------------------------------------------
ML-DSA-44                         1,312              2,528              2,420         1 (128-bit) Lattice
ML-DSA-65                         1,952              4,000              3,293         3 (192-bit) Lattice
ML-DSA-87                         2,592              4,864              4,595         5 (256-bit) Lattice

Falcon 512 (Lattice)              897              1,281                690         1 (128-bit) Lattice
Falcon 1024                       1,793              2,305              1,330         5 (256-bit) Lattice

Sphincs SHA256-128f Simple        32                 64             17,088         1 (128-bit) Hash-based
Sphincs SHA256-192f Simple        48                 96             35,664         3 (192-bit) Hash-based
Sphincs SHA256-256f Simple        64                128             49,856         5 (256-bit) Hash-based

RSA-2048                         256                256                256
ECC 256-bit                      64                 32                256

默克尔树

基于哈希的方法的根源在于默克尔树,它是一种哈希方式,广泛应用于许多应用程序中,包括比特币、以太坊、Git 分布式系统、NoSQL 以及许多 P2P 应用程序。通过默克尔树,我们获取数据元素,然后对它们进行哈希,并成对地选取这些哈希来创建新的哈希,从而构建一个表。树的顶部是根元素(在本例中是 Hash1234):

图1:默克尔树

通过这种方式,我们可以使用树来查看系统上是否有匹配的数据。

默克尔树证书

对于 X.509 证书,证书由受信任的证书颁发机构 (CA) 签名,并且该机构受到根 CA 的信任。通往根 CA 的路径可以在证书中追溯。对于默克尔树,不需要证书,因为每个证书都是树中的一个叶子,并且两个证书成为分支,然后通向根。

注意:我知道树的根在地下,但计算机科学家认为树的根在顶部。

然后,我们只需要树顶的一个哈希值就可以提供树中的所有证书。这类似于区块链哈希,我们可以对每笔交易进行哈希,最终创建一个根哈希。

为了证明一个证书,依赖方可以对该证书进行哈希,然后与其他哈希结合起来,展示到根哈希的证明。在图2中,Bob 可以通过提供到其证书哈希的哈希路径来证明他的证书。在这种情况下,他将提供 H2、H5 和 H6,并显示到根的路径。

默克尔树证书的哈希值和三个签名;

  • 证书本身在 TLS 握手时的签名。
  • 提供包含证明默克尔树根的签名。
  • 与撤销日志默克尔树根相关的签名。

这将导致哈希值大小与我们现有的 ECC 方法大致相同,并且小于 RSA-2048 签名,并且 TLS 交换的签名更少。

撤销

数字证书的一个重要元素是撤销实体的公钥——通常是私钥被泄露的情况。为此,我们可以使用稀疏默克尔树或有序默克尔树。对于稀疏默克尔树,每个证书都定义了一个位置,并且有效位置填充为零值(以及到根的路径)。被撤销的证书会删除零值。在有序默克尔树中,每个证书都根据其证书 ID 以给定的序列顺序进行排序。缺少撤销证明了目标证书 ID 正上方和正下方的有效 ID 的正确序列。

那又怎样?

嗯,这将带来重大影响,因为它将需要一种完全不同的生成和验证证书的方式,并且每个现有证书都必须升级到新方法。迁移正在进行中,无论喜欢与否,PKI 正在发生变化。

  • 原文链接: billatnapier.medium.com/...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
billatnapier
billatnapier
江湖只有他的大名,没有他的介绍。