Loading [MathJax]/jax/element/mml/optable/SuppMathOperators.js

运用格规约分析RSA解密指数安全性

梁韬文, 王立斌

梁韬文, 王立斌. 运用格规约分析RSA解密指数安全性[J]. 华南师范大学学报(自然科学版), 2023, 55(5): 121-128. DOI: 10.6054/j.jscnun.2023071
引用本文: 梁韬文, 王立斌. 运用格规约分析RSA解密指数安全性[J]. 华南师范大学学报(自然科学版), 2023, 55(5): 121-128. DOI: 10.6054/j.jscnun.2023071
LIANG Taowen, WANG Libin. Cryptanalysis of Decryption Exponent in RSA Using Lattice Reduction[J]. Journal of South China Normal University (Natural Science Edition), 2023, 55(5): 121-128. DOI: 10.6054/j.jscnun.2023071
Citation: LIANG Taowen, WANG Libin. Cryptanalysis of Decryption Exponent in RSA Using Lattice Reduction[J]. Journal of South China Normal University (Natural Science Edition), 2023, 55(5): 121-128. DOI: 10.6054/j.jscnun.2023071

运用格规约分析RSA解密指数安全性

基金项目: 

国家自然科学基金项目 62072207

详细信息
    通讯作者:

    王立斌, Email: lbwang@scnu.edu.cn

  • 中图分类号: TP309

Cryptanalysis of Decryption Exponent in RSA Using Lattice Reduction

  • 摘要:

    分析RSA算法的解密指数的安全性是业界关注的重点问题,目前多项研究给出了解密指数的不安全范围,其局限性均为仅使用基于连分数逼近的分析方法,且仅指出了解密指数与模数的关系。实际上,RSA算法的解密指数的安全性还与其所使用的素数和加密指数大小有关。为分析更广义的RSA算法的解密指数的安全范围,文章提出了一种运用格规约攻击小解密指数的攻击算法(LW):首先构造最短向量与解密指数相关的二维格,然后寻找该二维格中的最短向量,最终从最短向量中提取解密指数。分析LW算法攻击成功的条件可知:令Ned分别为RSA算法所使用的模数、加密指数、解密指数,pq(pq)为大素数,则当ped2N2时,使用LW算法可破解得解密指数。同时证明了LW算法与基于连分数逼近的攻击方法具有等价关系,即若满足连分数逼近方法的攻击条件,则使用LW算法也可攻击成功,反之亦然。最后,在3种基于连分数逼近的攻击算法的已知条件下使用LW算法,分别得到攻击成功时的广义解密指数不安全范围,分析结果展示了LW算法的通用性。

    Abstract:

    Cryptanalysis of the RSA decryption exponent is a pivotal issue in public-key cryptography. Currently, many studies have given the insecure ranges of the decryption exponent, which are limited to only using the continued fraction approximation method and considering relationships between the decryption exponent and the modulus. In fact, the security of the RSA decryption exponent is also related to the encryption exponent and the primes. To propose a general security relation, the LW method, a new method to attack the RSA with small decryption exponent is given in this paper. This method first constructs a 2-dimensional lattice using the RSA public key, whose shortest vector is related to the decryption exponent. By finding the shortest vector of this lattice, the decryption exponent can be recovered. The analysis then shows that the LW method will succeed when ped2N2, where N,e,d are the module, the encryption exponent and the decryption exponent as well as p and q are the primespq of the RSA scheme. Such an attack has the same effect as attacks based on continued fraction approximation, i.e. if the continued fraction approximation succeeds, the LW method succeeds. The LW method is applied to the environment of three kinds of attacks based on the continued fraction approximation to get general insecure ranges of the decryption exponent, which shows that the LW method is general.

  • RSA算法[1]是目前使用最广泛的公钥密码算法,其安全性得到了广泛的探讨和研究,其解密指数的安全性分析尤为重要[2-4]。在实际应用中,用户会选择小解密指数,以提升RSA算法解密或签名的速度。但是,使用小解密指数会使得密钥被攻击者恢复,造成财产的损失、信息的泄露。如何找出RSA算法所使用的解密指数的安全范围是业界关注的重点问题。

    目前已有多项研究提出针对使用小解密指数的RSA算法的攻击并给出解密指数的不安全范围。最著名的是WIENER[5]提出的攻击,通过分析该攻击的成功条件,WIENER指出若解密指数的比特长度小于模数的1/4,则可被恢复。在文献[5]的基础上,VERHEUL和TILBORG[6]得到大素数的高位被泄露时解密指数的不安全范围,OJHA和PADHYE[7]得到构成模数的2个大素数存在小系数线性组合时解密指数的不安全范围。这些研究皆指明攻击成功时解密指数与模数的关系。然而,解密指数的安全性不仅与模数相关。STEINFELD等[8]指出在解密指数略大于Wiener攻击的范围时,也可攻击成功。BONEH和DURFEE[9]、MAITRA和SARKAR[10]皆指出,解密指数的安全性还与加密指数有关。可见,在分析RSA算法的解密指数安全性时,只考虑解密指数与模数的关系具有局限性。

    为此,本文首先提出了使用格规约(Lattices Reduction)对RSA算法的解密指数进行攻击的算法(LW),然后分析LW算法攻击成功的条件,最终得到攻击成功时解密指数与模数、加密指数、大素数的关系。LW算法的思路如下:首先,根据RSA算法中公钥与解密指数的关系,使用RSA算法的公钥构造二维格,使其最短向量尽可能与解密指数相关;然后,使用Gauss的格规约方法[11]或LLL算法[12]找到该最短向量;最后,在最短向量中提取解密指数。经证明,若使用连分数逼近方法可攻击成功,则在相同条件下,使用LW算法也能攻击成功,而使用LW算法可以得到更广义的、与素数和加密指数相关的RSA算法的解密指数的安全范围。目前主流的基于连分数逼近的攻击方法有:Wiener的攻击[5]、Verheul和Tilborg的攻击[6]、Ojha和Padhye的攻击[7]。通过分析在这3种攻击方法的条件下使用LW算法可成功攻击的条件,分别得到在这3个条件下更广义的RSA算法的解密指数的安全范围。

    如无特殊说明,文中符号解释如下:det(M)表示矩阵M的行列式;||v||表示向量v的欧几里得范数,即若v=(a, b),则v=a2+b2;|a|表示a的绝对值;a[a]a分别表示a的向上取整、四舍五入和向下取整;gcd(a, b)表示ab的最大公因数;φ(·)为欧拉函数;RZ分别表示实数域和整数域;#S表示集合S的元素个数;a表示a小于或约等于ba=θ(b)表示ab量级相同,即存在可忽略量ε>0,使得(1-ε)ba≤(1+ε)b

    RSA算法[1](算法1)由3部分组成:密钥生成、加密和解密。

    算法1   RSA算法

    密钥生成:选择大素数pq,计算模数N=pqφ(N)=(p-1)(q-1),选择加密指数e,使得gcd(e, φ(N))=1,计算解密指数de-1(mod φ(N))。公开公钥(N, e),保存私钥d

    加密:输入明文m,输出密文cme(mod N)。

    解密:输入密文c,输出明文m′≡cd(mod N)。

    有限连分数[13]简称连分数,其表达式为:

    a_0+1 /\left(a_1+1 /\left(a_2+1 /\left(\cdots+1 /\left(a_{n-1}+1 / a_n\right)\right)\right)\right)

    或简写为[a0, a1, a2, …, an],当a1, a2, …, an都为正整数时,又称为简单连分数。[a0, a1, a2, …, ai](0≤in)被称为连分数的第i个收敛(Convergent,或称“渐进”)。

    下面给出2个可用于连分数逼近方法的连分数性质。

    引理1[13]   任何有理数都可以用简单连分数表示。

    引理2[13]   若\left|\frac{p}{q}-x\right|<\frac{1}{2 q^2},则\frac{p}{q}x的一个连分数收敛。

    定义1[11]   令\boldsymbol{v}_1, \boldsymbol{v}_2, \cdots, \boldsymbol{v}_n \in \mathbb{R}^m为一组线性独立的向量,\boldsymbol B=\left[v_1, v_2, \cdots, v_n\right] \in \mathbb{R}^{m \times n},则由B生成的格L(B)为v1, v2, …, vn的整数线性组合的集合,即

    L(\boldsymbol{B})=\left\{a_1 \boldsymbol{v}_1+a_2 \boldsymbol{v}_2+\cdots+a_n \boldsymbol{v}_n: a_1, a_2, \cdots, a_n \in \mathbb{Z}\right\} 。

    定义2[11]   格的最短向量问题(SVP)是:寻找格中欧几里得范数最小的非零向量,即寻找非零向量vL(B),使得||v||最小。

    当格的维度为2时,可使用Gauss的格规约方法[11]解决SVP问题; 当格的维度不大时,可使用LLL算法[12]近似地解决SVP问题。

    定义3[11]   定义n维格L(B)的基本域为集合\mathcal{F}\left(\boldsymbol v_1, \cdots, \boldsymbol v_n\right)=\left\{t_1 \boldsymbol v_1+t_2 \boldsymbol v_2+\cdots+t_n \boldsymbol v_n: 0 \leqslant t_i<1\right\}, \mathcal{F}的容积(Volume)为L(B)行列式(Determinant),即:

    \operatorname{det}(L(\boldsymbol{B}))=\operatorname{Vol}(\mathcal{F}) \text { 。 }

    以下格的性质被用于本文的格规约方法。

    引理3[11]   令\mathbb{B}_R(a)是球心为a、半径为rn维球体,则\mathbb{B}_r(a)的容积为:

    \operatorname{Vol}\left(\mathbb{B}_r(\boldsymbol{a})\right)=\frac{\pi^{n / 2} r^n}{\Gamma(1+n / 2)},

    其中Γ为伽马函数。特别地,当维度为2,即n=2时,有Γ(1+n/2)=Γ(2)=1,可得Vol(\mathbb{B}_r(a))=πr2

    引理4[11]   令\mathbb{B}_r(0)为L(B)中以零点为球心、半径为rn维大球体,则\mathbb{B}_r(0)中向量的数量可近似等于\mathbb{B}_r(0)的容积除以L(B)的基本域的容积,即:

    \#\{\boldsymbol{v} \in L(\boldsymbol{B}):\|\boldsymbol{v}\| \leqslant r\} \approx \frac{\operatorname{Vol}\left(\mathbb{B}_r(\boldsymbol{\theta})\right)}{\operatorname{Vol}(\mathcal{F})} 。

    使用引理4可近似地估算格中最短向量的长度,Gauss的启发式就是一种这样的估算算法。

    备注1[11]   (Gauss的启发式)令格L(B)的维度为n,定义高斯期望最短长度为σ(L(B)),若格基B拥有足够的随机性,则格L(B)的最短向量长度满足||v||shortestσ(L(B))。其中,当格L(B)的维度n=2时,有

    \sigma(L(\boldsymbol{B}))=\sqrt{\frac{1}{\pi}} \operatorname{det}(L(\boldsymbol{B}))^{1 / 2} 。

    根据备注1可得,若格L(B)中存在向量wL(B),使得\|\boldsymbol{w}\| \lessapprox \sigma(L(\boldsymbol{B})),则向量w大概率为格L(B)的最短向量。

    引理5[11]   (Hermite定理)n维格L(B)中至少有一个向量vL(B)满足

    \|\boldsymbol{v}\| \leqslant \sqrt{n} \operatorname{det}(L(\boldsymbol{B}))^{1 / n} 。

    特别地,当格L(B)的维度n=2时,有

    \|\boldsymbol{v}\| \leqslant \sqrt{2} \operatorname{det}(L(\boldsymbol{B}))^{1 / 2} 。

    本章提出运用格规约对使用小解密指数的RSA算法进行攻击的LW算法,然后对LW算法进行分析。

    算法2   LW算法

    输入:RSA算法的模数N和加密指数e

    输出:RSA算法的解密指数d

    步骤1:构造格基\boldsymbol{B}=\left[\begin{array}{cc} R & -N \\ 0 & e \end{array}\right],其中R=θ(p)。

    步骤2:使用Gauss的格规约方法或LLL算法找出格L(B)的最短向量w

    步骤3:计算v=(k, d)=wB-1,返回d

    LW算法的攻击思路如下:首先, 使用已知公钥信息构造二维格; 然后, 计算格中参数, 使得该格的最短向量与解密指数尽可能相关;最后,通过解决二维格的SVP问题来恢复解密指数。具体过程如下:

    (1) 构造二维格L(B):根据RSA算法的密钥生成过程,可知存在k,使得ed-(N)=1。构造向量v和格基B,使得向量w=vB尽可能为格L(B)的最短向量。其中向量v=(k, d),格基B形如\left[\begin{array}{cc} R & -N \\ 0 & e \end{array}\right]R为待计算参数。

    (2) 计算格中参数R:通过计算合适的参数R,使得向量w中每个元素量级相同,进而使得LW算法拥有最大成功概率。令s=1-(p+q),可得w=(kR, ks+1)。若要w中每个元素量级相同,则需要R=θ(s)。不妨令pq,即p为RSA算法的参数中较大的一个素数,可得s=θ(p)。所以,在取R=θ(p)时,可使得向量w中每个元素量级相同,即若ρ=[log2 p],则取R=2ρ

    (3) 计算解密指数d:使用Gauss的格规约方法或LLL算法找出向量w,然后计算v=wB-1=(k, d),进而恢复解密指数d

    使用LW算法攻击成功的关键点在于:所构造的向量w需要为格L(B)的最短向量,进而能使用Gauss的方法或LLL算法找到该向量。可使用备注1的方法得到向量w为格L(B)的最短向量所需满足的条件,见以下命题。

    命题1   在RSA算法中,令大素数pq满足pq。若满足ped2N2,则在已知模数N和加密指数e的情况下,使用LW算法可恢复解密指数d

    证明   不妨令p=Nρe=Nεd=Nδ,由RSA算法的密钥生成过程可得φ(N)=(p-1)(q-1)=N+1-(p+q)。令s=1-(p+q),可得φ(N)=N+s,其中|s|=θ(Nρ)。由于de-1(mod φ(N)),则存在k,使得ed-(N)=1,即ed-kN=ks+1,其中|k|=θ(Nε+δ-1)。令R=θ(Nρ),v=(k, d),\boldsymbol{v}=(k, d), \boldsymbol{B}=\left[\begin{array}{cc} R & -N \\ 0 & e \end{array}\right]w=(kR, ks+1),可得vB=w,即w为格L(B)上的向量,且\|\boldsymbol w\| \approx \sqrt{2} N^{\rho+\varepsilon+\delta-1}, \sigma(L(\boldsymbol{B})) \approx \sqrt{1 / \pi} N^{(\rho+\varepsilon) / 2}。由备注1可得,若||w||≤σ(L(B)),则w大概率为L的最短向量,进而可使用Gauss的格规约方法或LLL算法找到w,并通过计算v=(k, d)=wB-1来恢复解密指数d。当N足够大时,可近似比较指数的大小,即ρ+ε+δ-1≤(ρ+ε)/2,整理可得

    \rho+\varepsilon+2 \delta \leqslant 2, (1)

    ped2N2。综上,若ped2N2,则可恢复解密指数d。证毕。

    下面给出2个使用LW算法对使用小解密指数的RSA算法进行攻击的例子。本文所有例子均经过实验验证,实验的参考代码可在GitHub仓库中获取:https://github.com/CyT0ver/Attack-RSA-Small-d-using-Lattice

    例1   p=7 771 159 731 609 483 211,q=2 947 386 503 237 666 051,N=pq=22 904 611 307 449 834 128 008 346 881 909 169 761,e=722 262 311 366 174 354 989,d=158 561 584 531 008 409。其中,p>qpN0.505 6eN0.558 3dN0.460 4ped2N1.984 7 < N2。使用LW算法,在设置R=264时,使用LLL算法可找到短向量w,并由v=wB-1=(k, d)可得解密指数d

    例2   p=11 691 268 676 806 734 812 183 364 083,q=5 161 104 192 036 123 949,N=pq=60 339 855 778 087 867 006 418 157 012 645 372 358 782 723 767,e=217 313 062 367 259 180 263 192 524 848 395,d=27 488 663 851 854 587。其中,p>qpN0.600 0eN0.691 2dN0.351 4ped2N1.994 1 < N2。使用LW算法,在设置R=293时,使用LLL算法找到短向量w,并通过计算v=wB-1=(k, d)恢复解密指数d

    命题1的证明依赖于备注1的Gauss启发式,由于Gauss的启发式是一个概率算法,所以LW算法在极小的概率下会存在特殊情况,使得即使满足命题1的攻击范围,也会攻击失败,如下例。

    例3   p=6 212 434 253 312 289 161,q=7 705 371 143 963 067 067,N=pq=47 869 111 629 240 255 903 708 882 380 340 160 787,e=6 919 054 782 499 191 497,d=6 918 446 685 856 378 313。其中,p>qpN0.498 8eN0.500 0dN0.500 0。计算可得ped2N1.998 8 < N2,满足命题1的攻击范围。但是,在实验中发现,在设置R=262时,d与使用LW算法求出的d′相差2。

    对例3中的特殊情况进行分析,结果显示:在k可枚举时,存在v′=(k, d+i),\boldsymbol{B}=\left[\begin{array}{cc} R & -N \\ 0 & e \end{array}\right]w′=(kR, ie+ks+1),使得v′B=w′,即w′也是格L(B)上的向量,甚至是最短向量,从而导致使用Gauss的格规约方法或LLL算法找到了向量w′,而不是LW算法需要寻找的向量w

    当出现如例3的特殊情况时,可在LW算法的基础上使用枚举的方法,以从向量w′中恢复解密指数。如:当|(ks+1)/e|可枚举时,通过枚举i直至i≈|(ks+1)/e|,可得|ie+ks+1| < e; 通过选取R=θ(N/d)来使得||w′||≈e,即w′是格L(B)中比命题1中的w更短的向量;进而可使用Gauss的格规约方法或LLL算法找到w′, 然后计算v′=w′B-1=(k, d+i),从而恢复解密指数d。这种枚举的方法在ped2>N2d略大于e的情况下也能攻击成功,如下例。

    例4   p=16 634 746 592 804 413 571,q=5 904-115 439 904 173 963,N=pq=98 213 464 197 469 889 222 198 936 571 382 051 873,e=28 616 917 559 186 953,d=3 432 007 098 400 442 548 397,其中d>eped2>N2,不在LW算法的攻击范围内。但通过实验发现,在设置R=254时,d与使用LW算法求出的d′相差了788,即通过枚举i直到i=788时,可恢复解密指数d

    命题1的结论及上述4个例子为RSA算法的参数选择提供了参考,如:RSA算法的使用者为了加快RSA算法的加密和解密速度而同时选择小的加密指数e和解密指数d,由于在生成密钥时需要保证ed≡1(mod N),为了均衡加密和解密的速度,使用者只能选取eN1/2dN1/2,但这种密钥是不安全的,因为此时会因为满足LW算法的攻击条件而导致攻击者可使用LW算法恢复解密指数。

    连分数逼近方法表明:若存在足够大的abcd,满足\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2},则在已知ab的条件下,可求得cd。LW算法表明:若存在向量v=(d, c),格基\boldsymbol{B}=\left[\begin{array}{cc}R & a \\ 0 & -b\end{array}\right]和向量w=vB=(Rd, ad-bc),满足\|\boldsymbol{w}\| \lessapprox \sigma(L(\boldsymbol{B})),则在已知格基B的条件下,可求得向量v=(d, c)。

    本章证明连分数逼近方法和LW算法存在等价关系。首先证明:若连分数逼近方法的攻击条件可满足,则LW算法的攻击条件也可满足。由引理2可知,连分数逼近方法的成功条件为\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2}。由命题1可知,若满足\|\boldsymbol{w}\| \lessapprox \sigma(L(\boldsymbol{B})),则使用LW算法可以极大概率得到向量v。而由以下命题可知,若\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2}成立,可推出\|\boldsymbol{w}\| \lessapprox \sigma(L(\boldsymbol{B}))也成立。

    命题2   若存在足够大的abcd,使得\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2},则存在\boldsymbol{B}=\left[\begin{array}{cc}R & a \\ 0 & -b\end{array}\right], \boldsymbol{v}=(d, c), \boldsymbol{w}= \boldsymbol{v} \boldsymbol{B}=(R d, a d-b c),使得\|\boldsymbol{w}\| \lessapprox \sigma(L(\boldsymbol{B}))

    证明   设b=2^\beta, d=2^\delta,对不等式\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2}左右同乘bd,可得|a d-b c| \leqslant \frac{b}{2 d}。记ad-bc=s,则|s| \leqslant \frac{b}{2 d}=2^{\beta-\delta-1}。设置参数R=2^{\beta-2 \delta-1}, \boldsymbol{B}=\left[\begin{array}{cc}R & a \\ 0 & -b\end{array}\right], \boldsymbol{v}=(d, c),可得w=vB=(Rd, s)为格L(B)中的向量,且\|\boldsymbol{w}\| \leqslant \sqrt{2} \cdot 2^{\beta-\delta-1}=2^{\beta-\delta-1 / 2}, \operatorname{det}(L(\boldsymbol{B}))^{1 / 2}=2^{(\beta-2 \delta-1+\beta) / 2}= 2^{\beta-\delta-1 / 2},即||w||≤det(L(B))1/2。当有足够大的abcd,使得\sqrt{1 / \pi}可忽略时,有

    \|\boldsymbol{w}\| \lesssim \sqrt{\frac{1}{\pi}} \operatorname{det}(L(\boldsymbol{B}))^{1 / 2}=\boldsymbol{\sigma}(L(\boldsymbol{B})) \text { 。 } (2)

    证毕。

    然后证明:若LW算法的攻击条件可满足,则连分数逼近方法的攻击条件也可满足。命题1指出,若使用LW算法能成功攻击,则向量w为格L(B)的最短向量。由引理5可知,若w为格L(B)的最短向量,则\|\boldsymbol{w}\| \leqslant \sqrt{2} \operatorname{det}(L(\boldsymbol{B}))^{1 / 2}。由引理2知,连分数逼近方法的成功条件为\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2}。以下命题证明,若\|\boldsymbol{w}\| \leqslant \sqrt{2} \operatorname{det}(L(\boldsymbol{B}))^{1 / 2}成立,则\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2}也成立。

    命题3   若存在足够大的abcd,参数R= \left|\frac{a d-b c}{2 d}\right|,格基\boldsymbol{B}=\left[\begin{array}{cc}R & a \\ 0 & -b\end{array}\right],向量v=(d, c),w=vB=(Rd, ad-bc),使得w为格L(B)的最短向量,则\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2}

    证明   设b=2βd=2δR=2γ,则\operatorname{det}(L(\boldsymbol{B}))= 2^{\beta+\gamma}, \|\boldsymbol{w}\|=(\sqrt{5} / 2) \cdot 2^{\delta+\gamma+1}。因为wL(B)的最短向量,所以由引理5得

    \|\boldsymbol{w}\|=\frac{\sqrt{5}}{2} \cdot 2^{\delta+\gamma+1} \leqslant \sqrt{2} \cdot 2^{\left(\beta^{+} \gamma\right) / 2}=\sqrt{2} \operatorname{det}(L(\boldsymbol{B}))^{1 / 2} 。

    abcd足够大时,可只考虑指数的比较,即δ+γ+1≤(β+γ)/2,整理可得δ+(δ+γ+1)≤β-1,即|d(ad-bc)|≤b/2,不等式两边同乘以1/(bd2), 则有\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2}。证毕。

    综合命题2和命题3可知,在知道abcd的比特长度时,若可以利用a/b的连分数逼近得到c/d,则能够以极大概率通过LW算法得到v=(d, c),反之亦然。故连分数逼近方法和LW算法的格规约方法存在等价关系。

    命题4   若使用连分数逼近方法可成功攻击,则在相同条件下使用LW算法也可成功攻击,反之亦然。

    证明   首先证明满足连分数逼近方法的攻击条件时,使用LW算法可攻击成功。由引理2得,连分数逼近方法的成功条件为\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2}。由命题2可知,对于格基\boldsymbol{B}=\left[\begin{array}{cc}R & a \\ 0 & -b\end{array}\right]、向量v=(d, c)和向量w=vB=(Rd, ad-bc),满足\|\boldsymbol{w}\| \lessapprox \sigma(L(\boldsymbol{B}))。再根据命题1,此时LW算法可攻击成功。

    然后证明满足LW算法的攻击条件时,使用连分数逼近方法可攻击成功。由命题1得,若使用LW算法能攻击成功,则向量w为格L(B)的最短向量。由命题3得,此时满足\left|\frac{a}{b}-\frac{c}{d}\right| \leqslant \frac{1}{2 d^2},即使用连分数逼近方法可攻击成功。证毕。

    下面对第2章的若干例子使用连分数逼近的方法,以论证这种等价关系。

    (1) 例1中,可得到\left|\frac{e}{N}-\frac{k}{d}\right| \leqslant \frac{1}{2 d^2},即可用e/N的连分数逼近k/d,实验得到k/de/N的第3个连分数收敛。

    (2) 例2中,可得到\left|\frac{e}{N}-\frac{k}{d}\right| \leqslant \frac{1}{2 d^2},即可用e/N的连分数逼近k/d,实验得到k/de/N的第7个连分数收敛。

    (3) 例3中,可得到\left|\frac{e}{N}-\frac{k}{d}\right|>\frac{1}{2 d^2},但实验中发现,de/N的第1个连分数收敛的分母只相差了2。

    (4) 例4中,可得到\left|\frac{e}{N}-\frac{k}{d}\right|>\frac{1}{2 d^2},但实验得到de/N的第1个连分数收敛的分母相差了787,与e/N的第2个连分数收敛的分母相差了788,即通过枚举i直到i=787(或i=788)时,可恢复解密指数d

    在第2章中给出了在已知RSA算法的模数N和加密指数e的条件下使用LW算法可攻击成功的条件,在实际应用中,攻击者还可获取更多的附加信息,这些信息的泄露会影响解密指数的安全范围,因此有必要分析在攻击者知道不同信息的条件下的解密指数安全范围。

    目前有多项研究提出了在不同前提条件下针对使用小解密指数的RSA算法的攻击方法,主流的攻击方法有Wiener攻击[5]、Verheul-Tilborg攻击[6]和Ojha-Padhye攻击[7]。但这3种攻击方法均基于连分数逼近的方法,且只给出了攻击成功时解密指数与模数的狭义安全关系。

    为分析更广义的解密指数的安全范围,本章对满足不同攻击条件下的LW算法进行设计与分析。第3章的结论显示,若使用连分数逼近方法可攻击成功,则使用LW算法也可攻击成功。故可把LW算法应用于以上3种攻击方法的条件中,并分析在各个已知条件下,使用LW算法成功攻击时解密指数与模数、加密指数、大素数的广义安全范围。

    Wiener的攻击方法表明,若满足d < N1/4,则可根据公钥(N, e)恢复解密指数d。Wiener攻击的已知条件与LW算法的已知条件一致,故根据第2章的分析,Wiener的攻击条件d < N1/4只是p=θ(N1/2)且e=θ(N)的特殊情况。使用LW算法重新分析后,得到攻击成功的条件为ped2N2

    Verheul-Tilborg的攻击方法表明,若已知大素数的高位比特\tilde{p},使得|p-\tilde{p}| \leqslant N^{1 / 2-\gamma},则当dN1/4+γ/2时,可根据公钥(N, e)恢复解密指数d

    Ojha-Padhye的攻击方法表明,若已知满足|a p-b q| \leqslant N^{\alpha / 2} / 16ab,则当d < N1/2-α/4时,可根据公钥(N, e)恢复解密指数d

    下面分别对在Verheul-Tilborg攻击方法和Ojha-Padhye攻击方法的已知条件下,对LW算法进行设计与分析。

    本节提出在Verheul-Tilborg攻击方法的已知条件下对使用小解密指数的RSA算法进行攻击的LW算法:首先,根据关系ed-kN′=k(sp+sq)+1、N^{\prime}=N+1-(\tilde{p}+\tilde{q})构造向量v=(k, d)和格基\boldsymbol{B}=\left[\begin{array}{cc}R & -N^{\prime} \\ 0 & e\end{array}\right],设置参数R=\theta(|p-\tilde{p}|),以使vB为格L(B)中的最短向量的概率最大; 然后,通过Gauss的格规约方法或LLL算法找到vB,并最终恢复v中的解密指数d。详见算法3和命题5。

    算法3   Verheul-Tilborg条件下的LW算法

    输入:RSA算法的模数N、加密指数e和大素数p的高位\tilde{p}

    输出:RSA算法的解密指数d

    步骤1:计算\tilde{q}=\lfloor N / \tilde{p}\rfloorN^{\prime}=N+1-(\tilde{p}+\tilde{q})

    步骤2:构造格基\boldsymbol{B}=\left[\begin{array}{cc}R & -N^{\prime} \\ 0 & e\end{array}\right],其中R=\theta(|p-\tilde{p}|)

    步骤3:使用Gauss的格规约方法或LLL算法找到格L(B)的最短向量w

    步骤4:计算v=(k, d)=wB-1,返回d

    命题5   在RSA算法中,令大素数pq满足pq,且令p=Nρ。若存在\tilde{p}满足|p-\tilde{p}| \leqslant N^{\rho-\gamma},则在已知模数N、加密指数e\tilde{p},且满足ped2N2+γ的情况下,使用算法3可恢复解密指数d

    证明   令s_p=p-\tilde{p},可得\left|s_p\right| \leqslant N^{\rho-\gamma};令\tilde{q}=N / \tilde{p},由N=pq可得|q-\tilde{q}| \leqslant N^{1-\rho-\gamma}。令s_q=q-\tilde{q},可得\left|s_q\right| \leqslant N^{1-\rho-\gamma}。由于pq,则有\left|s_p+s_q\right| \leqslant N^{\rho-\gamma}。令e=Nεd=Nδ,由RSA算法的密钥生成过程可得\varphi(N)=N+1- (\tilde{p}+\tilde{q})-\left(s_p+s_q\right)。不妨令N^{\prime}=N+1-(\tilde{p}+\tilde{q}),则φ(N)=N′-(sp+sq)。由于de-1(mod φ(N)),则存在k,使得ed-(N)=1,即ed-kN′=k(sp+sq)+1,其中|k|=θ(Nε+δ-1)。令参数R=θ(Nρ-γ),向量v=(k, d),格基\boldsymbol{B}=\left[\begin{array}{cc}R & -N^{\prime} \\ 0 & e\end{array}\right],格向量w=vB=(kR, k(sp+sq)+1),可得\|\boldsymbol{w}\| \approx \sqrt{2} N^{\rho-\gamma+\varepsilon+\delta-1}, \sigma(L(\boldsymbol{B})) \approx \sqrt{1 / \pi} N^{(\rho-\gamma+\varepsilon) / 2}。根据备注1,若||w||≤σ(L(B)),则w大概率为L(B)的最短向量。使用Gauss的格规约方法或LLL算法可找到短向量w,进而通过计算v=wB-1=(k, d)恢复解密指数d。当N足够大时,可近似比较指数的大小,即ρ-γ+ε+δ-1≤(ρ-γ+ε)/2,整理可得

    \varepsilon+2 \delta+\rho \leqslant 2+\gamma (3)

    ped2N2+γ。综上,若ped2N2+γ,则使用算法3可恢复解密指数d。证毕。

    由命题5可得:Verheul-Tilborg攻击成功的条件dN1/4+γ/2只是p=θ(N1/2)且e=θ(N)的特殊情况, 若使用算法3进行攻击,攻击成功的条件可扩展为ped2N2+γ(pq)。

    下面给出使用算法3对使用小解密指数的RSA算法进行攻击的例子。

    例5   p=13 556 816 809 365 573 763,q=1 947 095 473 445 800 211,N=pq=26 396 416 643 849 644 470 088 394 458 681 463 993,e=454 562 615 750 669 153 749,d=7 607 160 071 080 291 129,\tilde{p}=13 546-827 679 130 451 968。其中,p>qpN0.511 3eN0.552 0γ≈0.083 7,dN0.504 6>N1/4+γ/2不在Verheul-Tilborg算法的攻击范围,但ped2N2.072 4 < N2.083 7=N2+γ,即在算法3的攻击范围,实验测试结果表明可用算法3恢复该例子中的解密指数。若令\tilde{q}=\left\lfloor\frac{N}{\tilde{p}}\right\rfloorN^{\prime}=N+1-(\tilde{p}+\tilde{q}),可得\left|\frac{e}{N^{\prime}}-\frac{k}{d}\right| \leqslant \frac{1}{2 d^2},即还可用e/N′的连分数逼近得到k/d,实验可得k/de/N′的第7个连分数收敛。

    本节提出在Ojha-Padhye的已知条件下对使用小解密指数的RSA算法进行攻击的LW算法:首先,根据关系ed-kN′=ks+1、N^{\prime}=N+1-(\sqrt{b / a}+ \sqrt{a / b}) \sqrt{N}构造向量v=(k, d)和格基\boldsymbol{B}=\left[\begin{array}{cc}R & -N^{\prime} \\ 0 & e\end{array}\right],设置参数R=θ(Nα/2), 以使vB为格L(B)中的最短向量的概率最大;然后,通过Gauss的格规约方法或LLL算法找到vB,并最终恢复v中的解密指数d。详见算法4和命题7。

    算法4   Ojha-Padhye条件下的LW算法

    输入:RSA算法的模数N和解密指数e,满足|ap-bq|≤Nα/2/2的ab,其中pq为RSA算法的大素数。

    输出:RSA算法的解密指数d

    步骤1:计算N^{\prime}=\left\lfloor N+1-\left(\sqrt{\frac{b}{a}}+\sqrt{\frac{a}{b}}\right) \sqrt{N}\right\rfloor

    步骤2:构造格基\boldsymbol{B}=\left[\begin{array}{cc}R & -N^{\prime} \\ 0 & e\end{array}\right],其中R=θ(Nα/2)。

    步骤3:使用Gauss的格规约方法或LLL算法找到格L(B)的最短向量w

    步骤4:计算v=(k, d)=wB-1,返回d

    命题6   若有abpqN=pq,使得

    |a p-b q| \leqslant \frac{1}{2} N^{\alpha / 2} \quad(0<\alpha \leqslant 1),

    则    \left|p+q-\left(\sqrt{\frac{b}{a}}+\sqrt{\frac{a}{b}}\right) \sqrt{N}\right| \leqslant N^{\alpha / 2}

    证明   与文献[7]的命题1证明类似。首先

    \frac{\left|p^2-\frac{b}{a} N\right|}{p} \leqslant \frac{N^{\alpha / 2}}{2 a}
    \frac{\left|p^{+} \sqrt{\frac{b}{a}} \cdot \sqrt{N}\right|}{p} \cdot\left|p-\sqrt{\frac{b}{a}} \cdot \sqrt{N}\right| \leqslant \frac{N^{\alpha / 2}}{2 a},
    \left|1+\sqrt{\frac{b}{a}} \cdot \frac{\sqrt{N}}{p}\right| \cdot\left|p^{-} \sqrt{\frac{b}{a}} \cdot \sqrt{N}\right| \leqslant \frac{N^{\alpha / 2}}{2 a} 。

    由于\sqrt{\frac{b}{a}} \cdot \frac{\sqrt{N}}{p}>0,有\left|1+\sqrt{\frac{b}{a}} \cdot \frac{\sqrt{N}}{p}\right|>1,所以

    \left|p- \sqrt{\frac{b}{a}} \cdot \sqrt{N}\right|<\frac{N^{\alpha / 2}}{2 a} \leqslant \frac{N^{\alpha / 2}}{2},

    \left|p-\sqrt{\frac{b}{a}} \cdot \sqrt{N}\right|<\frac{N^{\alpha / 2}}{2} 。 (4)

    同理可得

    \left|q-\sqrt{\frac{a}{b}} \cdot \sqrt{N}\right|<\frac{N^{\alpha / 2}}{2} 。 (5)

    联立式(4)和式(5),可得

    \begin{aligned} & \left|p+q-\left(\sqrt{\frac{b}{a}}+\sqrt{\frac{a}{b}}\right) \sqrt{N}\right| \leqslant \\ & \left|p{-} \sqrt{\frac{b}{a}} \cdot \sqrt{N}\right|+\left|q{-} \sqrt{\frac{a}{b}} \cdot \sqrt{N}\right|<\frac{N^{\alpha / 2}}{2}+\frac{N^{\alpha / 2}}{2}=N^{\alpha / 2}。 \end{aligned}

    证毕。

    命题7   在RSA算法中,令大素数pq满足pq。若存在ab,满足|ap-bq|≤Nα/2/2,则在已知模数N、加密指数eab,且满足ed2N2-α/2的情况下,可使用算法4恢复解密指数d

    证明   不妨设e=Nεd=Nδ,由命题6可得\mid p+q- (\sqrt{b / a}+\sqrt{a / b}) \sqrt{N} \mid<N^{\alpha / 2}。令s=p+q-(\sqrt{b / a}+\sqrt{a / b}) \sqrt{N},可得|s| < Nα/2。由RSA算法的密钥生成过程可得\varphi(N)=N+1-(\sqrt{b / a}+\sqrt{a / b}) \sqrt{N}-s。不妨令N^{\prime}=N+1- (\sqrt{b / a}+\sqrt{a / b}) \sqrt{N},则φ(N)=N′-s。由于de-1(mod φ(N)),则存在k,使得ed-(N)=1,即ed-kN′=ks+1,其中|k|=θ(Nε+δ-1)。令参数R=θ(Nα/2),向量v=(k, d),格基\boldsymbol{B}=\left[\begin{array}{cc}R & -N^{\prime} \\ 0 & e\end{array}\right],格向量w=vB=(kR, ks+1),可得\|\boldsymbol{w}\| \approx \sqrt{2} N^{\alpha / 2+\varepsilon+\delta-1}, {\sigma}(\boldsymbol{L}) \approx \sqrt{1 / \pi} N^{\alpha / 4+\varepsilon / 2}。根据备注1,若||w||≤σ(L(B)),则w大概率为L的最短向量。使用Gauss的格规约方法或LLL算法可找到短向量w,进而通过计算v=wB-1=(k, d)来恢复解密指数d。当N足够大时,可近似比较指数的大小,即α/2+ε+δ-1≤α/4+ε/2,整理可得

    \varepsilon+2 \delta \leqslant 2-\frac{\alpha}{2}, (6)

    ed2N2-α/2。综上,若ed2N2-α/2,则使用算法4可恢复解密指数d。证毕。

    由命题7可得:Ojha-Padhye攻击成功的条件d < N1/2-α/4只是e=θ(N)的特殊情况,若使用算法4进行攻击,攻击成功的条件可扩展为ed2N2-α/2

    下面给出使用算法4对使用小解密指数的RSA算法进行攻击的例子。

    例6   p=7 010 690 394 300 496 153,q=5 662 462 476 069 981 011,N=pq=39 697 771 289 070 818 936 145 992 186 588 550 683,e=388 452 861 963 165 789 401,d=13 387 488 027 727 273 721。其中,p>qpN0.501 2eN0.547 6dN0.508 7。令α=0.796 7,可知存在a=21和b=26,使得|ap-bq|=473 902 490 912 927 < 474 721 050 866 297=Nα/2/2。d>N1/2-α/4不在Ojha-Padhye算法的攻击范围,但ed2N1.565 0 < N1.617 0=N2-α/2,即在算法4的攻击范围。实验结果表明:可用算法4恢复该例子中的解密指数。若令N^{\prime}=N+1-(\sqrt{b / a}+\sqrt{a / b}) \sqrt{N},可得\left|\frac{e}{N^{\prime}}-\frac{k}{d}\right| \leqslant \frac{1}{2 d^2},即可用e/N′的连分数逼近k/d,实验可得k/de/N′的第7个连分数收敛。

    本文提出了运用格规约方法对使用小解密指数的RSA算法进行攻击的LW算法,并分析该算法攻击成功时解密指数与模数、加密指数、大素数的关系。同时,证明了LW算法与使用连分数逼近的攻击方法存在等价关系,即在符合连分数逼近方法的攻击条件时,LW算法也可成功攻击,反之亦然。基于这种等价关系,本文分析在3种不同已知条件下,使用LW算法可成功攻击时解密指数与模数、加密指数、大素数的广义安全关系,结论如下:

    (1) 在Wiener攻击[5]的已知条件下,使用LW算法进行攻击,攻击范围可从Wiener提出的d < N1/4扩展到ped2N2

    (2) 在Verheul-Tilborg攻击[6]的已知条件下,使用LW算法进行攻击,攻击范围可从Verheul和Tilborg提出的dN1/4+γ/2扩展到ped2N2+γ

    (3) 在Ojha-Padhye攻击[7]的已知条件下,使用LW算法进行攻击,攻击范围可从Ojha和Padhye提出的d < N1/2-α/4扩展到ed2N2-α/2

    由于LW算法的正确性证明依赖于Gauss的启发式,所以该算法在极小的概率下会存在即使满足攻击范围也会攻击失败的特殊情况。实验表明,这些特殊情况大多在k值可被枚举的情况下出现,如例3。如何找到能够包含这类特殊情况的、更准确的攻击范围,是本文遗留的开放问题。

  • [1]

    RIVEST R L, SHAMIR A, ADLEMAN L. A method for obtaining digital signatures and public-key cryptosystems[J]. Communications of the ACM, 1978, 21(2): 120-126. doi: 10.1145/359340.359342

    [2]

    SUSILO W, TONIEN J, YANG G. The Wiener attack on RSA revisited: a quest for the exact bound[C]//Procee-dings of the 24th Australasian Conference on Information Security and Privacy. Cham: Springer, 2019: 381-398.

    [3]

    SUSILO W, TONIEN J, YANG G. A generalised bound for the Wiener attack on RSA[J]. Journal of Information Security and Applications, 2020, 53: 1-4.

    [4]

    NITAJ A, ARIFFIN M R B K, ADENAN N N H, et al. Classical attacks on a variant of the RSA cryptosystem[C]//Proceedings of the 7th International Conference on Cryptology and Information Security in Latin America. Cham: Springer, 2021: 151-167.

    [5]

    WIENER M J. Cryptanalysis of short RSA secret exponents[J]. IEEE Transactions on Information Theory, 1990, 36(3): 553-558. doi: 10.1109/18.54902

    [6]

    VERHEUL E R, van TILBORG H C A. Cryptanalysis of ‘less short’RSA secret exponents[J]. Applicable Algebra in Engineering, Communication and Computing, 1997, 8(5): 425-435. doi: 10.1007/s002000050082

    [7]

    OJHA N, PADHYE S. Weak keys in RSA over the work of Blomer & May[J]. International Journal of Network Security, 2012, 14(2): 80-85.

    [8]

    STEINFELD R, CONTINI S, WANG H, et al. Converse res-ults to the Wiener attack on RSA[C]//International Workshop on Public Key Cryptography. Berlin, Heidelberg: Springer, 2005: 184-198.

    [9]

    BONEH D, DURFEE G. Cryptanalysis of RSA with private key d less than N0.292[J]. IEEE Transactions on Information Theory, 2000, 46(4): 1339-1349. doi: 10.1109/18.850673

    [10]

    MAITRA S, SARKAR S. Revisiting Wiener’s attack-new weak keys in RSA[C]//Proceedings of the 11th International Conference on Information Security. Berlin, Heidelberg: Springer, 2008: 228-243.

    [11]

    HOFFSTEIN J, PIPHER J, SILVERMAN J H, et al. An introduction to mathematical cryptography[M]. New York: Springer, 2008.

    [12]

    LENSTRA A K, LENSTRA H W, LOVÁSZ L. Factoring polynomials with rational coefficients[J]. Mathematische Annalen, 1982, 261(4): 515-534. doi: 10.1007/BF01457454

    [13]

    HARDY G H, WRIGHT E M. An introduction to the theory of numbers[M]. New York: Oxford University Press, 1979.

  • 期刊类型引用(1)

    1. 李易晓,韩明智,郝淋,郭晓彤. RSA加密算法在物联网数据安全传输中的应用. 中国新技术新产品. 2025(06): 134-136 . 百度学术

    其他类型引用(0)

计量
  • 文章访问数:  44
  • HTML全文浏览量:  32
  • PDF下载量:  31
  • 被引次数: 1
出版历程
  • 收稿日期:  2021-12-12
  • 网络出版日期:  2024-01-21
  • 刊出日期:  2023-10-24

目录

/

返回文章
返回