后量子签名详解:PQC Imza 为何使用 ML-DSA 签名
量子计算机将会攻破当今大多数软件所依赖的签名。本文介绍这对已签署的文档意味着什么,以及 PQC Imza 如何使用 ML-DSA——这一为长久使用而设计的 NIST 标准——进行签名。
3 分钟阅读
合同上的签名是一种承诺,它的效力必须比签署那一天更长久。一份租约、一份贷款协议或一项股东决议,可能在多年以后才被人核查,核查的人当时并不在场,而到那时,问题已不再是“你签了吗?”,而是“你能证明吗?”。
电子签名用数学来回答这个问题。而如今大多数电子签名所用的数学,是有失效日期的。
量子计算机改变了什么
如今使用的几乎所有数字签名,无论是 RSA、ECDSA 还是 Ed25519,都建立在两个问题之一上:分解非常大的整数,或计算椭圆曲线上的离散对数。普通计算机无法在任何有实际意义的时间内解决其中任何一个问题,正因如此,即使签名密钥的公钥部分已经公开,其私钥仍能保持私密。
1994 年,Peter Shor 提出了一种算法,能够在大型容错量子计算机上高效地解决这两个问题。这样的机器目前尚不存在,而对于它何时出现,各方的估计相差很大。但它对签名的影响是明确的:一旦这样的机器出现,仅凭公钥就足以推算出对应的私钥,而做到这一点的人,就能生成与真正持有者的签名毫无区别的签名。
对于已签署的文档来说,这就是问题的全部。只有在别人都不可能做出这个签名的前提下,签名才算得上证据。
为此而生的标准
十多年来,密码学家一直在设计新的签名算法,它们所依赖的问题,目前没有已知的量子算法能够解决。2024 年 8 月,美国国家标准与技术研究院(NIST)将其中的首批算法正式发布为标准。FIPS 204 定义了 ML-DSA,即基于模格的数字签名算法(Module-Lattice-Based Digital Signature Algorithm),它源自 CRYSTALS-Dilithium 设计。
ML-DSA 的安全性建立在数学“格”上的困难问题之上。它有三个参数集。PQC Imza 使用的是 ML-DSA-44,即被 NIST 归入其安全类别 2 的参数集,公钥长 1,312 字节,签名长 2,420 字节。这比椭圆曲线签名要大,但仍然足够小:几毫秒内即可完成验证,也可以与每份文档一同存储。
PQC Imza 如何使用它
PQC Imza 上的每个签名都是 ML-DSA-44 签名,由您在手机上通过 PQC Wallet 应用生成:
- 密钥在您的手机上生成,并始终留在那里。PQC Wallet 在设备上生成您的签名密钥,并将其保存在设备的安全存储中。我们的服务器永远只能看到公钥部分。
- 签名覆盖文档本身。您签署的内容包含文档的 SHA-256 指纹。文件哪怕只改动一个字节,签名就不再与之匹配。
- 每个签名都要先经过核验才算数。在记录签名之前,我们的服务器会用您的公钥验证每一个签名,并检查该密钥是否正是您账户所注册的密钥。
- 每个签名都由您亲自确认。每一次签名都必须先通过指纹、面容 ID 或设备密码验证,才能使用密钥。
所有人签署完成后,文档的指纹及其各个签名的指纹会被记录到 SciChain 区块链上。这条记录的时间取自账本,而不是我们的服务器,因此日后可以证明这些签名在那个时间点之前就已存在。
为什么要在量子计算机出现之前行动
人们很容易想等到量子计算机真正出现再说。但对签名而言,那就太晚了:今天用传统密钥签署的文档,到这些密钥可以被攻破的时候仍然存在。从一开始就使用抗量子算法签名,要比日后对整个档案库重新签名容易得多。
使用 PQC Imza,您无需做任何额外的事情。您像在其他任何地方一样签署,而签名从第一天起就是后量子的。