特殊结构N分解笔记
特殊结构N分解
主要参考论文《A New Attack on Special-Structured RSA Primes》
特殊结构
主要针对的是具有如下特殊构造的 \(N\),其中生成方式为 \[ N=pq\newline p=a^m+r_p\newline q=b^m+r_q \] 其中,\(a,b\) 为随机整数,\(m=2^i\),\(r_p,r_q\) 是严格小整数,使得 \(r_p<2a^{m/2},r_q<2b^{m/2}\),如果给予 \(N,m,r_p,r_q\),那么可以在多项式时间内分解 \(N\)。
证明
算法核心是构造二次方程 \[ X^2-(a^mr_q+b^mr_p)X+((ab)^mr_pr_q)=0 \] 使得根为 \(x_1=a^mr_q,x_2=b^mr_p\),可以得到 \(a^m,b^m\)。
证明内容主要是寻找 \((ab)^mr_pr_q\)。
首先明确以下两个引理:
- 如果 \(a,r\) 是正整数,且 \(m\ge2\) 且 \(m=2^i\),如果 \(\sqrt{a^m+r}=a^{m/2}+\epsilon\),那么 \(\epsilon<\frac{r}{2a^{m/2}}\)
- 如果 \(a,r\) 是正整数,且 \(m\ge2\) 且 \(m=2^i\),假设 \(N=(a^m+r_p)(b^m+r_q)\),其中 \(r_p\leq r_q\leq N^\gamma\)。继承于引理1,如果 \(r_p<2a^{m/2},r_q<2b^{m/2}\),那么 \((r_pr_q)^{1/2}<N^{1/2}-(ab)^{m/2}<\frac{r_q}{2}+2^{\frac{m}{2}-1}r_p+1\)
引理1在该特殊结构中,可以使得 \(\epsilon<1\),使得引理2控制上下界易于分解。
通过引理2,我们可以得到 \[ N^{1/2}-(\frac{r_q}{2}+2^{\frac{m}{2}-1}r_p+1)<(ab)^{m/2}<N^{1/2}-(r_pr_q)^{1/2} \] 这样可以控制 \((ab)^m/2\) 的上下界,相当于可以在小范围内爆破 \((ab)^m\)。
计算可得 \[ \begin{align} &N^{1/2}-(r_pr_q)^{1/2}-[N^{1/2}-(\frac{r_q}{2}+2^{\frac{m}{2}-1}r_p+1)]\\ &<N^\gamma(2^{\frac{m}{2}-1}+\frac{1}{2})-\sqrt{\min{(r_p,r_q)}^2}+1\\ &=N^\gamma(\frac{2^{\frac{m}{2}}+1}{2})-\min(r_p,r_q)+1 \end{align} \] 显然范围是足够小的。
这样可以获得 \((ab)^mr_pr_q\),即两根之积。
另一边观察到 \[ \begin{align} N-r_pr_q&\equiv (ab)^m+a^mr_q+b^mr_p\\ &\equiv a^mr_q+b^mr_p\pmod{(ab)^m} \end{align} \]
这样可以获得两根之和。
代码
1 | from math import isqrt |
其他证明
观察到 \[ N-r_pr_q=(ab)^m+a^mr_q+b^mr_p \] 那么对 \(N-r_pr_q\) 直接开根,当 \(m\) 不太大时,\(a^mr_q+b^mr_p\) 可以忽略,使得 \(\sqrt[m]{N}\approx ab\)。
那么可以构造方程组 \[ \begin{cases} XY-(ab)^m=0\\ (X+r_p)(Y+r_q)-N=0 \end{cases} \] 其中根 \(X=a^m,Y=b^m\),理论可以对方程组规约出一个有关的二次方程,直接求解二次方程即可得到方程组的解。
1 | N = 373824666550208932851344358703053061405262438259996622188837935528607451817812480600479188884096072016823491996056842120586016323642383543231913508464973502962030059403443181467594283936168384790367731793997013711256520780338341018619858240958105689126133812557401122953030695509876185592917323138313818881164334490044163316692588337720342646339764174333821950301279825316497898035760524780198230860089280791887363472060435443944632303774987556026740232641561706904946900169858650106994947597642013168757868017723456208796677559254390940651802333382820063200360490892131573853635471525711894510477078934343423255983 |