- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机学院 孟博 mengscuec@ 数论简介 公钥密码学 RSA算法 Figure 9.6 Example of RSA Algorithm ① E和D的可逆性 要证明:D(E(M))=MM=Cd =(Me)d=Med mod n 因为ed=1 modφ(n),这说明ed=tφ(n)+1,其中t为某整数。所以,Med =Mtφ(n)+1 mod n 。 因此要证明 Med =M mod n ,只需证明M tφ(n)+1 =M mod n 。 RSA算法论证 在gcd(M,n)=1的情况下,根据数论,M tφ(n) =1 mod n , 于是有,M tφ(n)+1 =M mod n 。 在gcd(M,n)≠1的情况下,分两种情况: 第一种情况:M∈{1,2,3,…,n-1}因为n=pq,p和q为素数,M∈{1,2,3,…,n-1},且(M,n)≠1 。 这说明M必含p或q之一为其因子,而且不能同时包含两者,否则将有M≥n,与M∈{1,2,3,…,n-1}矛盾。 不妨设M=ap 。 又因q为素数,且M不包含q,故有(M,q)=1, 于是有,M φ(q) =1 mod q 。 进一步有,M t(p-1)φ(q) =1 mod q。 因为q是素数,φ(q)=(q-1),所以t(p-1)φ(q)=tφ(n),所以有M tφ(n) =1 mod q。 于是,M tφ(n) =bq+1,其中b为某整数。 两边同乘M,M tφ(n)+1 =bqM+M 。 因为M=ap,故M tφ(n)+1 =bqap+M =abn+M 。 取模n得,M φ(n)+1 =M mod n 。 第二种情况:M=0 当M=0时,直接验证,可知命题成立。 ②加密和解密运算的可交换性 D(E(M))=(Me)d =Med =(Md))e =E(D(M)) mod n 所以,RSA密码可同时确保数据的秘密性和数据的真实性。 ③加解密算法的有效性 RSA密码的加解密运算是模幂运算,有比较有效的算法。 ④在计算上由公开密钥不能求出解密钥小合数的因子分解是容易的,然而大合数的因子分解却是十分困难的。关于大合数的因子分解的时间复杂度下限目前尚没有一般的结果,迄今为止的各种因子分解算法提示人们这一时间下限将不低于O(EXP(lnNlnlnN)1/2)。根据这一结论,只要合数足够大,进行因子分解是相当困难的。假设截获密文C,从中求出明文M。他知道M≡Cd mod n ,因为n是公开的,要从C中求出明文M,必须先求出d,而d是保密的。但他知道,ed≡1 mod φ(n) e是公开的,要从中求出d,必须先求出φ(n),而φ(n)是保密的。 但他又知道,φ(n)=(p-1)(q-1) 要从中求出φ(n),必须先求出p和q,而p和q是保密的。但他知道,n=pq 要从n求出p和q,只有对n进行因子分解。而当n足够大时,这是很困难的。只要能对n进行因子分解,便可攻破RSA密码。由此可以得出,破译RSA密码的困难性≤对n因子分解的困难性。目前尚不能证明两者是否能确切相等,因为不能确知除了对n进行因子分解的方法外,是否还有别的更简捷的破译方法。 1、参数选择 为了确保RSA密码的安全,必须认真选择密码参数: ① p和q要足够大; 一般应用:p和q应 512 位.重要应用:p和q应 1024 位因为n=pq在体制中是公开的,因此为了防止敌手通过穷搜索发现p、q,这两个素数应是在一个足够大的整数集合中选取的大数。如果选取p和q为10100左右的大素数,那么n的阶为10200,每个明文分组可以含有664位(10200≈2664),即83个8比特字节,这比DES的数据分组(8个8比特字节)大得多,这时就能看出RSA算法的优越性了。因此如何有效地寻找大素数是第一个需要解决的问题。 RSA密码的实现 ②p和q应为强素数 文献指出,只要(p-1)、(p+1)、(q-1)、(q+1)四个数之一有小的素因子,n就容易分解。 ③ p和q的差要大; ④(p-1)和(q-1)的最大公因子要小。 如果( p-1)和(q-1)的最大公因子太大,则易受迭代加密攻击 若,即,则有,即,所以在上述重复加密的倒数第2步就已恢复出明文m,这种攻击法只有在t较小时才是可行的。为抵抗这种攻击,p、q的选取应保证使t很大。设m在模n下阶为k,由得,所以k|(et-1),即et≡1(mod k),t取为满足上式的最小值(为e在模k下的阶)。又当e与k互素时t|φ(k)。为使t大,k就应大且φ(k)应有大的素因子。又由k|φ(n),所以为使k大,p-1和q-1都应有大的素因子。此外,研究结果表明,如果en且dn1/4,则d能被容易地确定。 ⑤ e的选择 随机且含1
文档评论(0)