首页 理论教育 参数选择对安全性的影响

参数选择对安全性的影响

时间:2023-07-02 理论教育 版权反馈
【摘要】:目前因子分解的能力对154位十进制数的模数已经造成威胁,估计在未来一段比较长的时期,使用介于1024bit至2048bit之间的模数n是安全的。称r1,r2,s1和s2为三级素数,称p1及p2为二级素数,称p为一级素数。这是因为p和q的取值会影响分解模数n的困难性。

参数选择对安全性的影响

1.模数n的选择

(1)不同用户不能共享模数n

对于给定的模数n,满足eidi≡1(mod n)的加/解密密钥对(eidi)很多,因此有人建议在通信中用同一个参数n以节约存储空间,但可证明这对于系统来说是有安全隐患的。

假设密钥对(eidi),(ejdj)是同一参数n的两个不同参数对,当gcd(eiej)=1时,对于同一明文m分别加密得密文978-7-111-37285-1-Chapter05-25.jpg978-7-111-37285-1-Chapter05-26.jpg。由欧几里得算法知,必定存在整数ts,满足tei+sej=1,因此有978-7-111-37285-1-Chapter05-27.jpg

(2)n要足够大

如果模数n不够大,则n很容易被分解。破译者一旦能将n分解成pq之积,就易求得φn)=(p-1)(q-1),于是解密密钥d就可以由扩展欧几里得算法求出。

2002年,Atkins,Graff,Lenstra和Lerland利用多重二次数域筛选法成功分解了158位十进制数。目前因子分解的能力对154位十进制数(512bit)的模数已经造成威胁,估计在未来一段比较长的时期,使用介于1024bit至2048bit之间的模数n是安全的。

2.pq的选择

(1)pq应为强素数

定义:任一素数p,若满足下列条件,则称之为强素数或一级素数。

●存在两个大素数p1p2,使得p1|p-1,p2|p+1。

●存在四个大素数r1r2s1s2,使得r1|p1-1,s1|p1+1,r2|p2-1,s2|p2+1。

r1r2s1s2为三级素数,称p1p2为二级素数,称p为一级素数。

为什么要采用强素数?这是因为pq的取值会影响分解模数n的困难性。若pq不是强素数,则可通过下面的p-1方法分解模数n

假设p-1有k个素因子,由算术基本定理可得

其中,pi为素数,ai为正整数(i=1,2,…,k)。

如果pi都很小,不妨设piBB为已知的小整数),构造

其中,a≥max{ai},显然有(p-1)R

因为任意小于素数p的正整数t均与p互素,不妨设t=2,由欧拉定理可知

tφp=2φp=2p-1)≡1(mod p

因而tR=2R≡1(mod p)。计算X=tR(mod n)=2R(mod n),若X=1,则令t=3重新计算X,直到算出的X≠1。此时由gcd(X-1,n)=p,得到n的分解因子pq

【例5-8】 已知n=pq=150463,使用p-1方法分解n

B=8,a=3

978-7-111-37285-1-Chapter05-30.jpg

由于 2R(mod n)≡139473

gcd(139473-1,150463)=379

所以n的分解式为150463=379×397

对于q也可以类似讨论。因此p-1和q-1必须有大素数因子,即pq要为强素数。

RSA的安全性基于因子分解,故n的因子pq必须选择恰当,以确保因子分解在计算上(有效时间内)不可能实现。

(2)pq的位数差问题

pq的位数相差不大时,可通过下面的费马分解法分解模数n。设978-7-111-37285-1-Chapter05-31.jpg

由于 (p-q2=(p+q2-4pq

u2-v2=n

pq的位数相差不大,则978-7-111-37285-1-Chapter05-32.jpg将是一个很小的数,而978-7-111-37285-1-Chapter05-33.jpg稍大,这样可从978-7-111-37285-1-Chapter05-34.jpg开始,978-7-111-37285-1-Chapter05-35.jpg,⌊978-7-111-37285-1-Chapter05-36.jpg,…,依次尝试u,直到978-7-111-37285-1-Chapter05-37.jpg为止。

通过

计算出pq

【例5-9】 已知n=pq=10403,使用费马方法分解n

【解析】 由于 978-7-111-37285-1-Chapter05-39.jpg

可令 978-7-111-37285-1-Chapter05-40.jpg

则 1022-10403=12

但若取978-7-111-37285-1-Chapter05-41.jpg,则1012-10403<0

所以

解得 p=101,q=103

还可以将上面的步骤扩展为求ts使978-7-111-37285-1-Chapter05-43.jpg。令978-7-111-37285-1-Chapter05-44.jpg,则t2-s2=kn,即(t+s)(t-s)=kn

【例5-10】 将141467分解为两个素数的积。

【解析】 由于978-7-111-37285-1-Chapter05-45.jpg

若求 (376-t)2-141467,t=1,2,3,…

将发现很不容易找到(376-t)2-141467正好是某一个整数的平方。

但有 3×141467=424401(www.xing528.com)

若从978-7-111-37285-1-Chapter05-46.jpg开始,则

故 141467=241×587

但是pq的位数不能相差很大,若很大,可通过尝试法,从小的素数用依次试验的方法分解n。因此pq的位数相差不能太大也不能太小,一般是几个比特。

(3)p-1与q-1的最大公因子要小

要求p-1与q-1的最大公因子要小是为了防止迭代攻击。假设攻击者截获了密文c=me(mod n),可以进行如下的迭代攻击。

其中,c0=ci=1,2,…。

若存在t使得

et(mod φn))≡1

则有整数k使et=kφn)+1,那么由欧拉定理可知

与此同时还有

ctcet-1(mod n

所以cet-1(mod n)≡cme(mod n

mct-1(mod n)≡cet-1(mod n

如果t较小,则这种迭代攻击很容易成功。

【例5-11】 假设p=17,q=11,n=pq=187,e=7,明文为123,得到的密文为

c=1237≡183(mod 187)试用迭代攻击恢复明文。

如果计算

c1=1837≡72(mod 187)

c2=727≡30(mod 187)

c3=307≡123(mod 187)

可见,只需对密文c再连续加密3次即可恢复明文。

由欧拉定理可知t=φφn))=φ((p-1)(q-1)),若p-1与q-1的最大公因子较小,则t较大,如果t大到(p-1)(q-1)的一半,则迭代攻击难以奏效。

3.加密密钥e的选择

加密密钥e不能选得太小。对于明文m,密文cme(mod n),若e选得太小时,且men,可直接将ce次方得到明文m。加密密钥e要满足以下几个要求:

1)e要与模数n的欧拉函数值φn)互素,即gcd(eφn))=1,否则无法计算解密密钥d。这一要求容易满足,现在已经证明两个随机数互素的概率约为3/5。

2)e不能太小,否则容易遭受低加密指数攻击。另外,如果em都很小且满足men,此时密文cme(mod n)不需要经过模运算可直接得到,这样由ce次方可得明文m

3)e在模数φn)下的阶要足够大,即满足et(mod φn))≡1的最小正整数t要尽可能大,一般应达到(p-1)(q-1)/2。

RSA公钥密码体制中常常会出现不同模数n,却有共同加密密钥e的情形,此时的RSA容易受到指数攻击。

若有e个RSA密码体制RSA-n1RSA-n2,…,RSA-ne,都采用公钥e

易见gcd(ninj)=1,ij

否则,可以求gcd(ninj),分解出ninj

如果这t组密钥被用做加密同一个信息m,则

c1me(mod n1

c2me(mod n2

……

ceme(mod ne

由中国剩余定理可得cme(mod n1n2ne

m很小且满足mn1mn2,…,mne

men1n2ne

于是得到me=c

从而 978-7-111-37285-1-Chapter05-50.jpg

这样就恢复了明文。

4.解密密钥d的选择

为了提高解密效率,应尽可能设想选择较小的d,但可通过尝试法验证这种追求片面的利益是有安全隐患的。比如已知明文m,加密得到密文cme(mod n),可通过穷举d依次检验cdm(mod n)是否成立。因此d不应选得太小,一般为dn1/4。

加密密钥e选定之后,利用扩展的欧几里得算法可以求出解密密钥d。类似于对加密密钥e的要求,解密密钥d也不能太小,否则容易遭受已知明文攻击。

如果对明文m加密得到密文c,在解密密钥d很小的情况下,从某个正整数开始依次尝试,直接找出一个数t满足ct(mod n)≡m,那么这个t就是解密密钥d。另外,Wiener于1990年利用连分数理论证明了当解密密钥d小于n1/4时很容易分解模数n,然后可求出解密密钥d。因此,一般要求d不能小于n1/4。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈