CKB 具备原生量子抗性

文章介绍了Nervos CKB区块链如何通过架构设计实现原生量子抗性。CKB将加密原语从共识层解耦到可编程的锁脚本中,使用户无需硬分叉即可升级到后量子密码学。同时,CKB通过分离规则与证据的数据结构,有效处理了量子抗性签名体积大的问题。文章详述了SPHINCS+锁脚本的实现、性能基准(不同参数集下的签名大小和验证周期)以及社区应用如量子钱包。CKB的量子抗性已在主网上线。

原生抗量子性

随着区块链行业日益成熟,它正面临一个迫在眉睫的生存威胁:大规模量子计算。虽然这常被视为未来问题,但攻击者采用的“先截获,后解密”(Harvest Now, Decrypt Later)策略——即今天拦截加密数据,待量子硬件成熟后再进行解密——使得这一架构问题必须尽早解决。

包括比特币和以太坊在内的大多数主流区块链,在地址推导和交易签名上都依赖椭圆曲线密码学(ECC)。一台足够强大的量子计算机运行 Shor 算法,就可能从公钥推导出私钥,从而破坏这些系统的安全假设。

虽然行业正在推进标准化防御(例如 NIST 的后量子密码学竞赛),但 CKB 与大多数其他区块链之间的实现路径存在根本差异。抗量子性是一种架构属性,而非事后补丁。

为什么 CKB 是原生抗量子的

大多数区块链在抗量子性方面面临两个主要原因:硬编码的密码原语数据大小限制。CKB 的抗量子方法并不依赖于逐步解决这些限制,而是基于一种从第一性原理出发避免这些限制的架构设计。

问题 1:硬编码的密码原语

许多 Layer 1 区块链的一个核心限制是密码原语被硬编码到共识协议中。这种僵化造成了重大制约:升级到抗量子密码学通常需要协调全网范围内的硬分叉。

在以太坊或比特币这样的区块链中,“交易 X 有效”这一规则实际上被硬连线为检查特定的 ECDSA 签名。更改这一规则不仅仅是软件更新,更是对该区块链根本协议的改变。

相比之下,CKB 被设计为一条密码抽象区块链。在 CKB 中,协议本身不依赖于任何特定密码算法(例如 secp256k1)。密码学并非嵌入共识规则,而是作为在虚拟机中运行的 Lock Script(智能合约)来实现。作为对比,以太坊将硬编码的 ECC 直接以预编译合约形式嵌入 EVM。

密码学所在位置

  • 大多数其他区块链: 类似专用计算器,高效计算一组固定的密码运算,但扩展需要修改系统本身。
  • Nervos CKB: 更像通用 CPU。可以通过部署新 Script 引入新的密码学构造(如基于格的方法),而无需修改基本协议。

这种抽象将抗量子性从治理驱动的协议变更转变为用户级别的选择。用户无需硬分叉即可采用抗量子密码学。未来,如果量子计算机破坏了当前的加密技术,CKB 支持以下升级路径:

  1. 部署: 开发者部署实现后量子密码算法(例如 SPHINCS+)的新 Lock Script。
  2. 采用: 用户创建引用新 Script 的 code_hash 的新地址。
  3. 迁移: 用户将资产从旧地址转移到新的抗量子地址。

网络不会分叉。旧地址继续可用。升级无需许可,且可随时间逐步进行。

问题 2:数据大小限制

即使其他区块链成功协调了硬分叉,它们仍然面临物理限制:数据大小。抗量子签名的体积远大于经典签名,这直接影响交易大小和费用。

  • Secp256k1(比特币/ETH): ~64 字节
  • ML-DSA(Dilithium): ~2.5 KB(约 40 倍)
  • SPHINCS+: 8 KB – 49 KB(约 125 倍 - 760 倍)

以比特币为例子,用 ML-DSA 签名合并 100 个 UTXO 可能产生超过 250KB 的交易,在网络拥堵期间可能导致极高的交易费用。

Nervos CKB 不存在此类问题,因为签名验证通过将规则(Lock Script)与证明(Witness)分离来实现。此外,CKB 支持对共享相同 Lock Script 的输入进行分组,使得多个输入可以通过存储在交易 Witnesses 中的单个签名来验证。

CKB 数据大小如何不同扩展

因此,使用 SPHINCS+ 签名移动 100 个 Cell 所需的签名数据量不会超过使用相同方案转移单个 Cell 所需的数据量。更多细节请参见 Script Group ExecutionWitness 文档。

CKB 已取得的成果

实现细节:CKB 上的 SPHINCS+

2023 年,CKB 团队和 Cryptape 研究人员使用 SPHINCS+ 实现了一个生产就绪的抗量子 Lock Script。2024 年 8 月,NIST 正式批准 SPHINCS+ 作为其 FIPS 205 标准下的抗量子数字签名算法。2025 年,CKB 团队开始在 CKB 主网上部署 SPHINCS+ Lock Script。

时间线

该 Lock Script 支持 12 种不同的 SPHINCS+ 参数集,用户可自行选择。它基于新的 CKB_TX_MESSAGE_ALL 定义生成签名消息。默认情况下,该 Lock Script 实现为多重签名 Script,单签名使用作为特例处理。

为什么选择 SPHINCS+?

CKB 团队选择 SPHINCS+ 作为参考实现,因为它是一种无状态的、基于哈希的数字签名方案

  • 安全性: SPHINCS+ 不依赖于可能受未来数学进步影响的数论假设(如基于格的构造)。其安全性仅依赖哈希函数(如 SHA-256),这些函数极为健壮。
  • 无状态设计: 与 XMSS 等有状态方案不同,SPHINCS+ 无需跟踪状态,简化了密钥管理并降低了分布式区块链环境中的操作风险。

SPHINCS+ 的主要折中是签名大小。CKB 通过其 Witness 数据结构解决了这一问题。CKB 将“Lock”(定义规则)与“Witness”(提供证明)分离。大型签名(如 20 KB 的 SPHINCS+ 签名)存储在 Witness 中,后者是灵活且以交易为作用域的,而不是存储在定义状态的 Lock Script 中。

性能基准测试

该 Lock Script 有 3 种实现:

实际周期消耗因签名不同略有差异,以下是每个 NIST 批准参数集的周期消耗大致估算(这里测量整个 Script 的周期消耗,包含 CKB 交易签名,M 表示百万):

128s bit 128f bit 192s bit 192f bit 256s bit 256f bit
公钥大小 32 32 48 48 64 64
签名大小 7856 17088 16224 35664 29792 49856
sha2 simple (C) 11.5M 32.2M 17.6M 49.4M 25.7M 49.7M
sha2 simple (混合) 11.6M 34.5M 18.5M 49.4M 25.7M 49.0M
sha2 simple (Rust) 21.9M 59.2M 31.5M 87.1M 45.3M 92.6M
shake simple (C) 20.5M 60.4M 31.7M 91.9M 46.5M 91.5M
shake simple (混合) 20.8M 62.0M 31.7M 89.9M 48.1M 92.4M
shake simple (Rust) 37.6M 111.6M 53.3M 156.6M 76.5M 157.6M

通常,s 变体生成签名耗时更长,但验证周期更少。f 变体签名生成较快,但验证周期更长。

社区应用与工具

随着 SPHINCS+ Lock Script 达到生产就绪状态,Nervos CKB 社区成员已经开始尝试基于 SPHINCS+ 的实际应用。

  • Quantum-Purse – 社区开发的 CKB 量子安全轻量级钱包

随着 CKB 生态系统的持续发展,预计将有更多基于 SPHINCS+ 的应用和工具出现。

总结

CKB 不依赖未来的治理行动来引入新密码学,而是依靠架构分离。通过将密码机制与共识规则解耦,Nervos CKB 作为一个面向未来的容器——随时准备在不引起协议层面破坏的情况下容纳任何密码学变革。

特性 其他区块链 Nervos CKB
密码学 硬编码在协议中 通过 Script 可插拔
升级路径 全网硬分叉 无需许可迁移
后量子可行性 低(区块空间限制) 高(灵活的 Witness 数据)
现状 研究 / 理论 主网已上线
  • 原文链接: docs.nervos.org/docs/ckb...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

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