第 01 周:量子威胁与签名接口

状态:▶ 正在学习

当前进度:第一讲——量子计算究竟威胁了什么

建议本次用时:60—90 分钟

返回学习工作区 · 查看完整学习路线

一、本周要解决的问题

这一周不要求学习完整量子力学、数论或格密码。我们先回答四个最重要的问题:

  1. 量子计算为什么会威胁现有区块链密码机制?
  2. Shor 算法与 Grover 算法分别攻击什么?
  3. 数字签名的 KeyGen / Sign / Verify 接口是什么?
  4. ML-DSA、SLH-DSA 和 ML-KEM 分别有什么用途?

本周计划分成四讲。学到下一讲时再决定是否增加新的学习文件或实验目录。

顺序内容状态
第一讲量子威胁:Shor、Grover 与区块链攻击面▶ 正在学习
第二讲数字签名:KeyGen、Sign、Verify 与正确性○ 未开始
第三讲后量子算法地图:ML-DSA、SLH-DSA 与 ML-KEM○ 未开始
第四讲调用真实算法并完成正向、负向实验○ 未开始

第一讲:量子计算究竟威胁了什么

1. 先纠正一个最常见的说法

“量子计算机可以破解所有密码”是不准确的。

密码算法依赖不同的困难问题,量子算法对它们的影响也不同。本路线首先区分两类变化:

  • 结构性击破:Shor 算法利用整数分解、离散对数等问题的代数结构;
  • 通用搜索加速:Grover 算法对无结构搜索提供理想情况下的平方级查询加速。

量子威胁分析四步法

量子威胁分析不能只写“安全”或“不安全”,而要依次说明:

text
保护对象 → 当前依赖的困难问题 → 可用的量子算法 → 系统后果

2. Shor 算法:对公钥密码的结构性威胁

读懂本节所需的四个数学对象

  1. 整数分解:给定合数 NN,找出它的非平凡因子。例如把 1515分解为 3×53\times 5
  2. 有限阿贝尔群:元素个数有限、运算满足群规则,并且交换次序不影响结果的代数结构。
  3. 循环群:存在一个生成元 gg,反复运算便能得到群中的所有元素。循环群一定是阿贝尔群,但有限阿贝尔群不一定是循环群。
  4. 离散对数:已知 ggy=gxy=g^x,反求指数 xx。椭圆曲线通常改用加法记号:已知 PPQ=[x]PQ=[x]P,反求秘密标量 xx

ECDSA、Schnorr 和 BLS 的量子风险主要来自第四项,而不是整数分解。密码系统实际使用的通常是某个大阶循环子群;“有限阿贝尔群”是理解 Shor 周期查找与隐藏子群框架时使用的更大视角。

这四个概念已经成为当前理解的直接前置条件,因此按照工作区的渐进创建规则,已建立独立的 数学补给 01:Shor 算法所需的整数分解与离散对数。第一次阅读只需掌握其中的计算直觉和区块链映射,不要求证明量子线路。

在能够运行足够大规模算法的容错量子计算机上,Shor 算法可以高效求解:

  • 整数分解;
  • 有限循环群中的离散对数;更一般地,这些算法可以放在有限阿贝尔群上的周期查找或隐藏子群框架中理解。

Shor 算法所利用的结构

text
整数分解:N 的因子
      ↑ 经典 gcd 后处理
模 N 乘法群中某个元素的阶 r
      ↑ 量子周期查找
函数 a^k mod N 的重复结构

离散对数:秘密指数 x
      ↑ 经典线性方程后处理
指数对之间的隐藏周期关系
      ↑ 有限阿贝尔群上的量子傅里叶采样
公开关系 y = g^x 或 Q = [x]P

Shor 不是依次尝试每个因子或每把私钥;它先提取代数结构中的周期信息,再通过经典计算恢复答案。“高效”是指运行时间关于输入的比特长度呈多项式增长,并不表示今天已经有足以攻击真实区块链密钥的量子硬件。

这会从根本上破坏依赖这些问题的经典公钥机制。例如:

区块链对象当前密码机制Shor 带来的主要风险
Bitcoin 传统单签花费(如 P2PKH/P2WPKH)ECDSA从公钥恢复私钥,进而伪造支出签名
Bitcoin Taproot key pathSchnorr/secp256k1从公开点恢复私钥,伪造授权
Ethereum EOA 交易ECDSA/secp256k1伪造账户交易
Ethereum 验证者消息BLS在相应验证者被分配职责时伪造区块提议或投票;大量质押密钥失陷时进一步威胁共识
Ethereum KZG 承诺椭圆曲线群上的承诺机制其群困难性安全基础遭到破坏

2.1 先按“系统角色”把它们分开

它们虽然都使用了椭圆曲线群,但在系统中不是同一种东西:

系统角色机制它回答的问题
用户资产授权Bitcoin ECDSA/Schnorr、Ethereum EOA 的 ECDSA“这个资产或账户的控制者是否同意这笔交易?”
PoS 共识认证Ethereum 验证者的 BLS“哪个验证者提出了区块或投了这张共识票?”
数据承诺Ethereum 的 KZG“这份很短的承诺是否对应先前承诺的那份大数据?”

前两类使用数字签名,但签名者和被保护对象不同;KZG 则不是数字签名。下面以“Bitcoin 传统单签花费”为参照逐项解释。

2.2 Bitcoin Taproot key path:用一把 Schnorr 密钥直接花费 UTXO

Taproot 是 Bitcoin 的一种输出和花费规则,不是另一条链,也不是共识算法。一个 Taproot 输出(P2TR)可以有两类花费路径:

  • key path:控制者直接提供一份有效的 Schnorr 签名;
  • script path:控制者公开某个预先承诺的脚本分支,并满足该脚本。

key path 可以先用下面的流程理解:

text
P2TR 输出中公开 output key Q

控制者用对应私钥对本次花费签名

节点使用 Q 验证 BIP340 Schnorr 签名

验证通过后,该 UTXO 才能被花费

它与传统单签 ECDSA 花费的共同点是“私钥授权花费”,主要区别是它使用 BIP340 Schnorr 签名,并采用 Taproot 自己的输出结构和签名消息规则。P2TR 的 32 字节 witness program 表示 Taproot output key,因此这个椭圆曲线公钥点从输出创建时就已经公开。

若足够强的 Shor 攻击能从 Q 求出对应离散对数,攻击者就可能得到可用于 key-path 花费的秘密标量并伪造花费签名。

Taproot 与传统单签

传统单签花费和 Taproot key-path 花费都在做资产授权;前者在这里以 ECDSA 为代表,后者使用 Schnorr。

2.3 Ethereum EOA 交易:账户持有者授权状态转换

EOA 是 Externally Owned Account,即“外部拥有账户”,可以先把它理解成由用户私钥控制的普通 Ethereum 账户。它不同于由代码规则控制的合约账户。

text
EOA 私钥
   ↓ 对交易字段签名
ECDSA 签名随交易广播

节点验证/恢复发送者

执行转账或调用智能合约,更新账户状态

EOA 地址是公钥经过 Keccak-256 后所得结果的一部分,并不是把完整公钥直接写成地址。但是,一笔已签名的 Ethereum 交易包含足以恢复签名公钥的信息。因此,在公钥未通过其他渠道公开的前提下,一个尚未发出过交易的地址与一个已经发出过交易的地址,在公钥暴露状态上需要区别分析。

若 Shor 能从该公钥恢复 EOA 私钥,攻击者便可构造新的有效交易,例如转走资产或调用合约。这里攻击的是用户账户授权,与 Bitcoin 花费 UTXO 的目标相似,但 Ethereum 使用的是账户状态模型。

EOA 交易授权

EOA 是用户账户;EOA 的 ECDSA 签名表示“我授权执行这笔交易”。

2.4 Ethereum 验证者 BLS:为 PoS 共识消息签名

Ethereum 转为 PoS 后,除了用户控制 EOA 的密钥,还存在另一套验证者签名密钥。验证者使用基于 BLS12-381 的 BLS 密钥执行共识职责,例如:

  • 对自己提出的 Beacon block 签名;
  • 产生 attestation,对所看到的链头和检查点投票;
  • 在被分配时参与签名聚合或同步委员会消息。

BLS 的一个重要工程优势是:许多验证者对兼容消息产生的签名可以聚合,从而减少共识网络需要传播和验证的数据。验证者公钥在注册过程中进入公开数据,因此不能依赖“长期隐藏公钥”来抵御量子攻击。

若 Shor 能从某个 BLS 公钥恢复验证者签名私钥,攻击者可能在该验证者被分配相应职责时冒充它提出区块或投票、制造相互矛盾的消息并导致 slashing。攻破一把密钥只得到一个验证者的身份和相应权重;若要直接威胁整个网络的链头选择或最终性,通常还需要使足够多的质押权重失陷。

但要避免另一个误解:验证者签名密钥、提款凭据与提款地址控制权具有不同的授权边界。 得到验证者签名密钥并不自动等于取得提款地址的控制权;提款地址也可能是合约地址。验证者签名密钥失陷首先破坏的是共识身份和共识消息认证。

验证者 BLS

EOA 的 ECDSA 保护用户交易;验证者的 BLS 保护 PoS 共识投票。

2.5 Ethereum KZG 承诺:证明 blob 数据与承诺一致

KZG 是一种多项式承诺机制,不是数字签名。Ethereum 的 blob 交易把较大的数据作为 blob 传播;协议不需要把整份 blob 塞进普通交易字段,而是使用很短的 KZG commitment 和 proof 来检查数据关系。

可以先用“封条”类比:

text
大块 blob 数据
   ↓ 按规则编码成多项式
短 KZG commitment(像数据封条)
   ↓ 配合 KZG proof
验证某个值确实来自先前承诺的那份数据

在 EIP-4844 的结构中,KZG commitment 和 KZG proof 各为 48 字节。协议的验证逻辑检查的是“承诺、数据和证明是否相互匹配”,而不是“某位账户持有者是否签了名”。

这套机制横跨 Ethereum 的两层:执行层 blob 交易引用 commitment 的 versioned hash;共识层负责关联和验证 blob、commitment 与 proof。这里没有“每个 blob 所有者各持有一把 KZG 私钥”这回事,参与者使用的是公共 SRS。

Ethereum 的 KZG 使用 BLS12-381 相关的配对友好椭圆曲线群和结构化参考串(SRS);SRS 中包含由一个本应无人知道的标量 τ 生成的公开曲线点。如果足够强的 Shor 攻击能够解决这些群上的离散对数,攻击者可能从公共 SRS 恢复这种隐藏关系,使承诺的绑定性和证明的可靠性失去基础,例如为不一致的数据构造可通过验证的打开证明。

BLS 与 KZG

BLS 是给共识消息签名,KZG 是给大数据做短承诺;两者都使用椭圆曲线群,但用途完全不同。

2.6 四项陌生机制与 Bitcoin 传统单签授权放在一起比较

机制保护对象关键秘密或安全基础失陷后的直接后果
Bitcoin 传统单签 ECDSA(如 P2PKH/P2WPKH)UTXO 花费授权用户私钥伪造支出交易
Bitcoin Taproot SchnorrP2TR key-path 花费授权对应 output key 的秘密标量伪造 Taproot 花费
Ethereum EOA ECDSA用户账户交易授权EOA 私钥伪造转账或合约调用
Ethereum 验证者 BLSPoS 区块与投票认证验证者签名私钥冒充验证者、伪造共识消息
Ethereum KZGBlob/多项式数据承诺群困难性与 SRS 中隐藏关系伪造数据打开关系、破坏承诺可靠性

可以把前四种资产或共识签名统一抽象成 私钥签名 → 公钥验证;KZG 应单独抽象成 数据 → 承诺,数据关系 → 证明

2.7 对应的一手资料

这里要特别注意两点:

  1. Shor 主要针对整数分解和离散对数,并不是一个通用哈希破解器。
  2. 能够伪造签名不等于能够自动重写整条区块链。历史能否被改变,还取决于共识规则、最终性、网络和攻击时点。

攻击能否立即开始还取决于公钥何时暴露。某些 Bitcoin 输出在首次花费前只公开公钥哈希,这可以延后公钥暴露,却不能提供永久的后量子安全;交易广播并公开公钥后仍需分析攻击竞态。Taproot 输出密钥等对象则从创建输出时已经公开。具体差异留到 Bitcoin 模块展开。

完成数学补给的第一轮后,本讲只要求你能解释“公开关系为什么可能泄露秘密因子或秘密标量”。量子傅里叶变换、隐藏子群定理、成功概率和线路资源估算暂不作为本周前置条件。

3. Grover 算法:对搜索问题的平方级加速

假设要在 N 个没有明显结构的候选中找到一个目标:

text
经典穷举:大约需要 N 次查询
理想 Grover 搜索:大约需要 √N 次查询

对于理想的 n 位哈希单目标原像搜索,可以先建立下面的入门直觉:

text
经典原像搜索:约 2^n
量子原像搜索:约 2^(n/2)

例如,256 bit 哈希输出等于 32 byte。在非常理想化的单目标查询模型中,原像搜索的量级可由约 2^256 降为约 2^128。但这并不表示攻击在现实中已经可行,因为查询次数还不是完整的工程成本。

现实估计还需要考虑:

  • 量子纠错和物理量子比特;
  • 电路深度与一次查询的实际成本;
  • 并行化和多目标攻击;
  • 区块链参数、网络传播与竞争者;
  • 攻击必须在多长时间内完成。

因此,Grover 对 PoW 哈希搜索具有理论意义,但不能直接推出“量子矿机速度一定是经典矿机的某个固定倍数”。

暂时不要把碰撞问题混进来

哈希原像、第二原像和碰撞是不同的安全目标。量子碰撞搜索还有专门算法和不同的时间—空间条件,不能把上面的 2^(n/2) 机械地复制到所有哈希问题。本周只记录这个区别,第 2 周学习哈希与 Merkle 树时再展开。

4. Shor 与 Grover 的最小对照表

对照项ShorGrover
利用什么周期和代数结构无结构黑盒搜索
典型目标整数分解、离散对数原像搜索、密钥穷举、满足条件的 nonce
影响方式对相关公钥机制是结构性破坏理想查询次数平方级下降
区块链例子ECDSA、Schnorr、BLS、KZG哈希原像与 PoW 搜索
不能直接推出所有哈希都会被破解所有安全强度都无条件减半

看到一个量子安全结论时,先问:

  1. 攻击目标是私钥、签名、哈希原像、碰撞还是共识状态?
  2. 它依赖的是整数分解/离散对数结构,还是无结构搜索?
  3. 结论描述的是渐近复杂度、查询次数,还是现实硬件成本?

5. 后量子密码并不是“使用量子计算机加密”

后量子密码学(Post-Quantum Cryptography,PQC)

后量子密码学研究的是能在普通经典计算机上运行,同时以能够抵抗经典和量子攻击者为目标的密码算法。

它不同于量子密钥分发等“量子密码”技术。我们后面学习的 ML-DSA 和 SLH-DSA 都是经典计算机可以执行的后量子数字签名算法。

6. 为什么区块链迁移比“更换签名函数”复杂

即使已有安全的 PQ 签名算法,迁移仍会影响:

  • 公钥、私钥和签名的字节大小;
  • 交易序列化与签名消息;
  • 区块容量、带宽、验证时间和费用;
  • 钱包、硬件设备、地址和备份;
  • Bitcoin Script 或 Ethereum 账户验证逻辑;
  • Ethereum 验证者聚合签名与共识消息;
  • 旧密钥与新密钥如何可信绑定;
  • 新旧算法并存时的降级与重放风险;
  • 已经长期存在或无人管理的链上资产。

这也是本研究方向的核心:研究的不是孤立算法,而是一个持续运行、包含历史状态和多方参与者的系统如何安全迁移。

7. 为第二讲预留的签名接口直觉

数字签名的最小接口

今天只需先认识下面三个名字:

text
(pk, sk) ← KeyGen()
signature ← Sign(sk, message)
accept/reject ← Verify(pk, message, signature)
  • sk 是签名私钥,必须保密;
  • pk 是验证公钥,可以公开;
  • message 最终是一串明确编码的字节;
  • signature 是签名结果;
  • Verify 只返回接受或拒绝。

下一讲再正式讨论正确性、不可伪造性、随机性、消息编码和域分离。

8. 本次练习

先不要搜索答案。请独立作答并记录不确定之处;需要时可在评论区交流。

练习 A:分类

请把下列场景分别归入 ShorGrover/无结构搜索需要单独分析主要不是量子算法问题,并各写一句理由:

  1. 从 secp256k1 公钥恢复私钥;
  2. 对理想 256 位哈希寻找单目标原像;
  3. 伪造 Ethereum 验证者的 BLS 签名;
  4. 在 PoW 中寻找满足难度目标的 nonce;
  5. 寻找哈希碰撞;
  6. 把一份已有合法签名原样重放到另一条链。

练习 B:判断并纠正

判断下面说法是否准确;若不准确,请改写:

  1. “Shor 算法会直接破解 SHA-256。”
  2. “Grover 算法会让所有密码算法的安全性恰好减半。”
  3. “只要 Ethereum 把用户交易的 ECDSA 换成 PQ 签名,就完成了后量子迁移。”
  4. “后量子密码算法必须运行在量子计算机上。”

练习 C:用自己的话解释

请用不超过 150 字回答:

为什么“标准 PQ 签名算法是安全的”不等于“区块链迁移协议是安全的”?

9. 本次完成标准

完成第一讲不以“读完”为准。请确认自己能够:

  • 不看表格,用两分钟区分 Shor 与 Grover;
  • 为 ECDSA、BLS、哈希原像和 PoW nonce 选择正确的分析入口;
  • 区分 Bitcoin 传统单签、Taproot key path、Ethereum EOA、验证者 BLS 与 KZG 分别保护什么;
  • 解释为什么量子查询复杂度不等于现实攻击时间;
  • 解释 PQC 与量子密码技术不是同一概念;
  • 完成练习 A、B、C,并指出一个自己仍不确定的问题。

没有达到以上标准时,不需要补完整数论或量子力学。只需记录具体卡点,再围绕卡点补充最少的必要知识。

10. 可选原始资料

第一遍只看标题、摘要或标准首页,不要求通读:

当前最重要的不是阅读数量,而是能准确完成上面的威胁分类。


返回学习工作区 · 查看完整学习路线

Valaxy v0.19.5 驱动 | 主题 - Yun v0.19.5
本站已运行0天数0小时0分钟0秒钟