数学补给 01:Shor 算法所需的整数分解与离散对数

状态:▶ 正在学习

触发位置:第 01 周第一讲——Shor 算法的结构性威胁

建议第一轮用时:90—120 分钟

返回第 01 周主线 · 返回学习工作区

一、为什么现在创建这个单元

学习路线采用“后量子先行、数学按需回补”。现在我们已经遇到三个会直接影响安全判断的问题:

  1. 整数分解究竟是什么问题?
  2. 为什么从公钥 Q=[x]PQ=[x]P恢复私钥 xx叫作离散对数?
  3. 循环群、有限阿贝尔群和 Shor 的周期查找是什么关系?

因此,这个单元已经不再是未来可能使用的占位内容,而是当前主线的实际前置知识。

第一轮学习边界

本轮目标是达到结构层:会做小参数计算,能读懂符号,能把数学困难问题映射到 ECDSA、Schnorr、BLS 和 KZG。

本轮暂不要求证明量子傅里叶变换、有限阿贝尔群结构定理、Shor 的成功概率或具体量子线路复杂度。

二、先建立一张依赖地图

text
整除、素数、最大公因数

      模运算

有限群、元素的阶、循环子群
      ↙                  ↘
整数分解 ← 阶查找       离散对数:y = g^x
      ↘                  ↙
       周期 / 隐藏子群结构

             Shor 算法

RSA 类机制          ECDSA / Schnorr / BLS / KZG

这里要先记住一个区分:整数分解和离散对数是两个不同问题,Shor 分别为它们提供了量子多项式时间算法。 这里的“多项式时间”按输入的比特长度计量,例如整数 NN的输入长度约为 log2N\log_2N,并不是把 NN的数值本身当作输入长度。当前 Bitcoin 和 Ethereum 中列出的签名风险主要来自离散对数分支,并不是因为它们使用了 RSA。

三、整数、整除与最大公因数

3.1 因子、素数与整数分解

若存在整数 kk使 b=akb=ak,就称 aa整除 bb,记作 aba\mid b

  • 3153\mid 15,因为 15=3×515=3\times5
  • 4154\nmid 15,因为不存在整数 kk使 15=4k15=4k
  • 大于 1 且只有 1 和自身两个正因子的整数称为素数。

整数分解问题

给定一个大合数 NN,找出它的素因子。例如:

N=77=7×11.N=77=7\times11.

把两个已知素数相乘得到 NN很容易;只拿到一个足够大的 NN时,反向找出这些因子在经典计算模型下被认为很困难。分解标准 RSA 模数足以恢复构造私钥所需的信息;但不要进一步误写成“RSA 反演与整数分解已经被一般性证明等价”。

每个大于 1 的整数都能唯一地写成素数乘积,忽略素因子的排列顺序。例如:

84=22×3×7.84=2^2\times3\times7.

密码学中的困难不在于小整数分解,而在于输入有数百或数千比特时,尚无已知经典多项式时间通用分解算法。

3.2 最大公因数不是整数分解

gcd(a,b)\gcd(a,b)表示 aabb的最大公因数。例如:

gcd(18,30)=6.\gcd(18,30)=6.

欧几里得算法可以高效计算 gcd。Shor 的整数分解流程并不是用量子计算直接输出两个因子;它先用量子部分寻找一个周期,再用经典 gcd 把周期转换为因子。

四、模运算:只关心余数

aabb除以 NN的余数相同,就写作:

ab(modN).a\equiv b\pmod N.

例如 172(mod5)17\equiv2\pmod5。模运算可以想成时钟:超过一圈便回到前面。

计算普通结果模 7 的结果
5+45+492
5×35\times3151
343^4814

在模 NN乘法中,并非每个余数都有乘法逆元。与 NN互素的余数组成:

ZN={a:0<a<N, gcd(a,N)=1}.\mathbb Z_N^*=\{a:0<a<N,\ \gcd(a,N)=1\}.

例如:

Z10={1,3,7,9}.\mathbb Z_{10}^*=\{1,3,7,9\}.

其中 33的逆元是 77,因为 3×71(mod10)3\times7\equiv1\pmod{10}

五、群、阿贝尔群与循环群

5.1 群只是在规定一种可逆运算

一个群由元素集合 GG和一种运算组成,并满足:

规则直觉
封闭性两个群元素运算后仍在群内
结合律改变括号位置不改变结果
单位元存在一个“不改变其他元素”的元素 ee
逆元每个元素都能通过另一个元素回到 ee

若还满足 ab=baa\circ b=b\circ a,它就是阿贝尔群,也称交换群;若群中只有有限个元素,它就是有限群

5.2 循环群由一个元素生成

生成元、循环群与元素的阶

在本页讨论的有限群中,如果存在 gGg\in G,使群中每个元素都能写成 gkg^k,那么 GG是循环群,gg是生成元:

G=g={gk:kZ}.G=\langle g\rangle=\{g^k:k\in\mathbb Z\}.

使 gr=eg^r=e成立的最小正整数 rr称为 gg的阶,记作 ord(g)=r\operatorname{ord}(g)=r。若 gg生成整个有限群,那么 r=Gr=|G|;从这一步开始,幂会以 rr为周期重复。

以模 7 的非零余数乘法群为例,取 g=3g=3

kk0123456
3kmod73^k\bmod71326451

33在回到 1 前生成了全部 6 个元素,因此:

ord(3)=6,Z7=3.\operatorname{ord}(3)=6,\qquad \mathbb Z_7^*=\langle3\rangle.

循环群一定是阿贝尔群,因为 gagb=ga+b=gbgag^a g^b=g^{a+b}=g^b g^a。反过来不一定成立,例如 Z2×Z2\mathbb Z_2\times\mathbb Z_2是有限阿贝尔群,却不存在一个能生成全部四个元素的生成元。

六、离散对数到底“离散”在哪里

6.1 乘法记号

在循环群 G=gG=\langle g\rangle中选择秘密整数 xx,计算:

y=gx.y=g^x.

已知 ggxx时,计算 yy很容易。离散对数问题要求在只知道 ggyy时恢复 xx

x=loggy.x=\log_g y.

这里的“对数”只是对 gx=yg^x=y中指数 xx的反求;“离散”表示我们在有限、离散的群元素上运算,而不是求实数函数 lny\ln y

在刚才的玩具群中:

344(mod7),3^4\equiv4\pmod7,

所以 4433为底的离散对数是 x=4(mod6)x=4\pmod6。真实密码系统使用的群极大,不能依靠列完整张表来求解。

6.2 椭圆曲线改用加法记号

椭圆曲线群通常把群运算写成点加法。对应关系是:

乘法群写法椭圆曲线加法写法
生成元 gg基点 PP
重复相乘 gxg^x重复相加 [x]P[x]P
公钥 y=gxy=g^x公钥 Q=[x]PQ=[x]P
g,yg,yxxP,QP,Qxx

[x]P[x]P表示把 PP重复相加 xx次,不是普通整数乘法。ECDSA、Schnorr 和 BLS 的私钥—公钥关系都可以先抽象成:

text
秘密标量 x
    ↓ 与公开基点做标量乘法
公开群元素 Q = [x]P

这三个签名方案的密钥恢复问题都包含相应群中的离散对数:一旦能从 P,QP,Q求出 xx,就足以恢复签名密钥并破坏方案。它们完整的不可伪造性论证还涉及各自的安全假设与证明模型,不能简单写成“签名安全与离散对数完全等价”。

七、整数分解为什么会变成阶查找

完整的整数分解算法会先用经典方法处理偶数、素数和完全幂。下面的阶查找分支假设 NN是奇合数且不是素数幂;RSA 型半素数属于重点情形。

取待分解整数 N=15N=15,随机选择与它互素的 a=2a=2,观察:

kk01234
2kmod152^k\bmod1512481

序列在 4 步后回到 1,所以 r=4r=4是 2 在模 15 乘法下的阶。因为 rr是偶数:

2r1=(2r/21)(2r/2+1).2^r-1=(2^{r/2}-1)(2^{r/2}+1).

再做经典 gcd 计算:

gcd(221,15)=gcd(3,15)=3,\gcd(2^{2}-1,15)=\gcd(3,15)=3,

gcd(22+1,15)=gcd(5,15)=5.\gcd(2^{2}+1,15)=\gcd(5,15)=5.

于是得到 15=3×515=3\times5

Shor 整数分解的概念流程

  1. 先用经典方法检查偶数、素数和完全幂;
  2. 对剩余的奇合数选择 1<a<N1<a<N,计算 gcd(a,N)\gcd(a,N)
  3. 若 gcd 已经不是 1,就直接找到因子;
  4. 否则寻找最小的 r>0r>0,使 ar1(modN)a^r\equiv1\pmod N
  5. rr为偶数,并且 ar/2≢1(modN)a^{r/2}\not\equiv-1\pmod N,计算 gcd(ar/2±1,N)\gcd(a^{r/2}\pm1,N)
  6. 得到非平凡因子;若条件不满足,就换一个 aa重试。

其中第 4 步的阶查找是量子加速的核心,其余步骤都是经典计算。

玩具例子可以直接列举周期,但真实密码参数不能。Shor 使用叠加、模幂运算和量子傅里叶变换,从测量结果中恢复周期候选,再由经典算法完成后处理。

八、离散对数为什么属于隐藏周期问题

G=gG=\langle g\rangle是阶为 rr的有限循环群,并且公开 y=gxy=g^x。对 a,bZra,b\in\mathbb Z_r,定义函数:

F:Zr×ZrG,F(a,b)=gayb=ga+bx.F:\mathbb Z_r\times\mathbb Z_r\longrightarrow G,\qquad F(a,b)=g^a y^b=g^{a+bx}.

对两组输入 (a,b)(a,b)(a,b)(a',b'),令 Δa=aa\Delta a=a'-aΔb=bb\Delta b=b'-b。当它们满足:

Δa+xΔb0(modr),\Delta a+x\Delta b\equiv0\pmod r,

它们会映射到同一个群元素。所有这种“不会改变函数值的位移”构成隐藏子群:

H={(u,v)Zr2:u+xv0(modr)}.H=\{(u,v)\in\mathbb Z_r^2:u+xv\equiv0\pmod r\}.

Shor 离散对数的概念流程

text
公开 g 与 y = g^x

构造带有隐藏线性周期的函数 F(a,b)

在有限阿贝尔群上进行量子傅里叶采样

收集关于隐藏周期的多个线性关系

经典模运算恢复秘密指数 x

这里的有限阿贝尔群视角描述的是量子算法寻找隐藏结构的统一框架。具体离散对数仍是在 gg生成的循环子群中定义的。

第一次阅读不必推导量子态振幅。你现在只需看出共同模式:

  • 整数分解被转化为模 NN乘法中的阶查找;
  • 离散对数被转化为指数对之间的隐藏线性周期;
  • 两者都不是无结构穷举,因此 Shor 能获得不同于 Grover 平方级加速的结构性优势。

九、把数学映射回区块链

机制可抽象的公开关系Shor 对应的困难问题直接后果
RSA 类公钥机制N=pqN=pq整数分解恢复私钥所需的秘密因子
Bitcoin ECDSAQ=[x]PQ=[x]P椭圆曲线离散对数恢复支出私钥并伪造签名
Bitcoin SchnorrQ=[x]PQ=[x]P椭圆曲线离散对数恢复 Taproot key-path 私钥
Ethereum EOA ECDSAQ=[x]PQ=[x]P椭圆曲线离散对数恢复账户私钥并伪造交易
Ethereum 验证者 BLSQ=[x]PQ=[x]P配对友好曲线群中的离散对数冒充验证者签署共识消息
Ethereum KZGSRS 含 [τi]P[\tau^i]P等公开点对 SRS 公开群点求离散对数[τ]P[\tau]P等公开点恢复 τ\tau,使相关证明假设失效并破坏求值绑定性
SHA-256 等哈希没有 Q=[x]PQ=[x]P关系不属于上述两类应单独分析 Grover 等量子算法

当前最重要的安全判断

“Shor 能做整数分解”并不是 Bitcoin 和 Ethereum 交易签名失陷的直接原因。它们的核心风险是:当相应公钥或公开群点已经可得时,Shor 可以从 Q=[x]PQ=[x]P高效恢复秘密标量 xx。Taproot output key、验证者 BLS 公钥和 KZG SRS 天然公开;P2PKH/P2WPKH 输出和未发送过交易的 EOA 则要单独分析公钥暴露时点。

KZG 不是签名,但 Shor 可以先对 SRS 中的公开点求离散对数并恢复隐藏标量 τ\tau,继而使相关配对群安全假设和求值绑定性失效。因此,不能因为 KZG“没有用户签名私钥”就把它排除在量子迁移清单之外。

十、本次练习

练习 A:术语与计算

  1. 分解 9191,并说明“验证答案容易”体现在哪里。
  2. 计算 gcd(35,64)\gcd(35,64),判断 35 是否属于 Z64\mathbb Z_{64}^*
  3. 列出 3kmod73^k\bmod7k=0k=0到首次回到 1 的结果,并写出 3 的阶。
  4. Z7=3\mathbb Z_7^*=\langle3\rangle中,求满足 3x5(mod7)3^x\equiv5\pmod7xx

练习 B:解释 Shor 的两条路线

不用公式,各用三句话解释:

  1. 整数分解如何转化为阶查找和 gcd;
  2. 离散对数如何转化为隐藏周期关系。

练习 C:映射区块链对象

把下面对象分别归入“整数分解”“离散对数”“需要单独分析”:

  1. RSA 公钥中的模数;
  2. Bitcoin Taproot output key;
  3. Ethereum 验证者 BLS 公钥;
  4. SHA-256 原像;
  5. KZG 结构化参考串中的曲线点。
展开自查提示
  • A1:91=7×1391=7\times13;相乘即可快速验证。
  • A2:gcd(35,64)=1\gcd(35,64)=1,所以 35 在 Z64\mathbb Z_{64}^*中。
  • A3:1,3,2,6,4,5,11,3,2,6,4,5,1,阶为 6。
  • A4:x=5(mod6)x=5\pmod6
  • C:依次为整数分解、离散对数、离散对数、需要单独分析、对公开群点求离散对数;最后一项会进一步使相关配对群证明假设失效。

十一、第一轮验收标准

  • 能区分因子、素数、gcd、模同余和模逆;
  • 能用 N=15,a=2N=15,a=2的例子解释“阶查找如何给出因子”;
  • 能解释群、有限群、阿贝尔群、循环群、生成元和元素的阶;
  • 能在小循环群中列幂表并求一个离散对数;
  • 能在 y=gxy=g^xQ=[x]PQ=[x]P两种记号之间转换;
  • 能说明为什么 ECDSA、Schnorr 和 BLS 主要对应离散对数,而不是整数分解;
  • 能说明“有限阿贝尔群”是统一算法框架,“离散对数”具体发生在循环子群中;
  • 能明确说出本轮暂未学习的内容,而不是假装已经掌握。

完成这些项目后,回到 第 01 周第一讲的 Shor 风险表,重新解释每一行“公开对象 → 困难问题 → 秘密信息 → 系统后果”。

十二、以后何时继续拆分

目前只保留这一个 index.md。只有真正进入下面内容时,才在本目录增加相应文件:

  • 整数分解归约、欧拉函数与连分数;
  • 椭圆曲线群运算与配对;
  • 量子态、相位估计与量子傅里叶变换;
  • 有限阿贝尔群分解与隐藏子群算法;
  • Shor 线路、容错资源估算与现实攻击时间窗。

这样既补上当前缺失的数学桥梁,也不会重新回到“先把整本数论和抽象代数学完才能继续”的顺序。

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