撰文:Blockstream Team

编译:Saoirse,Foresight News

Blockstream 研究院发布了一份针对比特币格基签名的完整研究报告。本文对研究内容、核心发现以及相关建议进行总结,完整报告可点击查阅。

数字签名是比特币授权交易的核心机制,如今承担该功能的 Schnorr 与 ECDSA 签名成本极低。1994 年 Shor 证明,一台性能足够强大的量子计算机就可以破解这两类签名。虽然这类机器何时能够问世仍存在广泛讨论,但我们需要在问题真正到来之前,就制定一套可行的后量子签名部署方案。

格基签名方案是替代现有签名的热门候选。格密码已有超过一个世纪的研究历史,其密码学应用也发展了近三十年。在后量子密码体系中,格基签名具备诸多优势:公钥与签名的总尺寸最低可小于 1.6 千字节,同时其代数结构未来有希望支持多签、门限签名以及简洁证明。

本报告研究了 Dilithium、Falcon、Hawk 三种方案。面向不了解格密码的读者,我们阐述各方案的设计思路,完整介绍算法流程,并从安全性、性能、实际部署(例如钱包密钥派生)等维度展开分析。三者之中,究竟哪些方案可以真正部署到比特币链上?

评估维度

比特币对签名方案的选型有着自身约束,本次评估围绕四项核心标准展开:

链上成本:最重要指标之一为公钥与签名的总大小。输出被花费时,公钥和签名都会记录在链上,全节点需要下载并存储每一个字节。验证开销同样关键:每一笔签名都要经过全网节点验证,验证速度慢会给整个网络带来负担。
实现复杂度:方案能否安全实现至关重要。如果设计需要浮点运算或者精细的高斯采样,一旦实现出错,或是遭遇计时分析这类侧信道攻击,就可能泄露密钥。想要实现平稳迁移,实现复杂度是不可忽视的因素。
部署风险:比特币实际集成时还会遇到各类现实阻碍:共识层面的哈希函数选型(候选方案大多使用 SHAKE,比特币使用 SHA‑256)、跨平台签名结果的可复现性,以及签名程序是否适配硬件钱包的内存限制。
发展潜力:绝大多数比特币钱包采用 BIP‑32 分层确定性机制:通过单个主公钥,无需接触私钥,就可以衍生出无穷多子公钥。目前标准化的后量子签名方案都不原生支持该特性,因此我们研究为其补充该能力所要付出的代价;同时也考察各类非标准的方案变体,它们或许能带来更多收益。

应当选择何种安全等级?

对比尺寸之前,先要确定目标安全等级,该选择并没有看上去那么简单。NIST 将安全等级划分为 1‑5 级;等级越高安全性越强,但对应的密钥与签名体积也会更大。

我们认为比特币至少应当采用 3 级安全标准。比特币输出可能数十年不被花费,如果密码分析技术进步导致方案实际安全等级下降,资产就会被削弱后的密钥锁定,长期暴露在风险之下。格密码假设已经经受了近三十年公开密码分析,对比特币采纳椭圆曲线时的研究积淀还要更久。但格密码复杂的代数结构,仍存在不少可供未来攻击利用的突破口,我们不应当把遥远未来的安全赌注全部押在上面。

各大主流产品也做出了相同判断。苹果的 iMessage PQ3 协议直接舍弃 1 级格密码参数,全程使用 3 级与 5 级参数;Cloudflare 在后量子 TLS 部署中使用 ML‑KEM‑768(3 级),表示虽然 1 级目前看起来安全,但需要为未来数十年的密码分析预留安全余量。而比特币的安全时间跨度比以上两者还要更长。

提升安全等级是需要付出代价的。举例来说,Dilithium 从 2 级提升至 3 级,总大小会增加约 1.5 千字节。报告对比了全部安全等级下的参数集,读者可以自行权衡取舍。Hawk 的遭遇证明,保守的安全考量绝非纸上谈兵。

候选方案详解

Dilithium:设计简洁的方案

Dilithium 被 NIST 标准化为 FIPS 204 标准中的 ML‑DSA,它将 Schnorr 签名的承诺‑挑战‑响应范式,迁移到模块格算术之上。

它最大的特点是简洁。Dilithium 全部运算均为整数运算:环运算、矩阵向量乘法、哈希、取整,没有浮点运算,也不需要离散高斯采样。更容易编写出安全、恒定时间的实现。它也是落地最广泛的候选方案,已经集成进 OpenSSL、BoringSSL、AWS‑LC 以及 Apple CryptoKit。

代价是体积偏大。3 级安全的 ML‑DSA‑65,公钥 1952 字节,签名 3309 字节,合计 5261 字节,约为比特币原生公私钥 + 签名总大小的 55 倍,在同安全等级的三个方案中体积最大。

对比特币而言 Dilithium 最有价值的一点:它是三者中唯一一个接近实现 BIP‑32 风格密钥派生的方案。可重随机化密钥构造 DilithiumRK,仅依靠公开信息就可以由父密钥生成子密钥。报告分析了三种变体,其中包含我们提出的 DilithiumRKS,派生逻辑完全放在钱包软件内部,链上只需要标准验证器处理普通 ML‑DSA 签名。但三者均尚未达到上线标准:其中两种变体需要修改验证器,DilithiumRKS 本身还缺少完整的不可伪造性证明;全部方案都依赖全网共用的矩阵,虽然在 Module‑LWE 假设下形式上安全,但会把所有密钥的安全绑定到同一个实例上。我们认为现阶段基于 Dilithium 的公钥派生仅属于概念验证,无法投入实际部署。

Falcon:体积紧凑的方案

Falcon 被 NIST 选定,标准化名称为 FN‑DSA,三者之中它最为精简。1 级安全的 Falcon‑512 公钥加签名合计 1563 字节;5 级安全的 Falcon‑1024 合计 3073 字节。安全余量更高的 Falcon‑1024,体积甚至小于 3 级的 Dilithium。

Falcon 采用与 Dilithium 不同的思路:基于 NTRU 格的哈希‑签名模式。签名者的私钥是格的一组短基;消息被哈希映射到空间中的一个点,签名者利用短基找到格上距离该点很近的向量。点与该邻近向量共同构成签名;验证仅校验向量属于该格,并且距离足够近。实现难点在于寻找向量的同时不能泄露基的信息。早期方案 GGH、NTRUSign 直接就近取格点,每一次签名都会泄露一部分几何信息。Falcon 采用 GPV 框架,从高斯分布中采样邻近向量,可证明采样输出与基相互独立,消除泄露风险,但采样器的实现难度大幅提升。

采样器是 Falcon 工程层面的短板。它在复数傅里叶域运算,需要浮点计算。不同处理器、编译器、编译优化选项,都会造成浮点输出结果不一致。这不只是兼容性问题,更是安全隐患:GPV 安全证明要求,对同一摘要,签名者绝不输出两组不同的短向量;一旦签名变为确定性签名,平台带来的浮点舍入差异就会破坏该条件。存在可行的解决办法:确定性 Falcon 可以用整数模拟替代硬件浮点,在所有平台输出完全一致的签名。代价是签名速度下降约 15 倍,密钥生成速度下降约 2 倍。

重要的是,验证环节不受影响:Falcon 验证全程整数运算、结果确定,同时也是候选方案中验证速度最快的。这种非对称特性对比特币十分友好:签名由钱包在花费交易时执行一次,而每一笔签名都要被全网全节点验证。签名环节慢 15 倍属于低