rsa算法剖析

上传人:今*** 文档编号:107696094 上传时间:2019-10-20 格式:PPT 页数:23 大小:219.50KB
返回 下载 相关 举报
rsa算法剖析_第1页
第1页 / 共23页
rsa算法剖析_第2页
第2页 / 共23页
rsa算法剖析_第3页
第3页 / 共23页
rsa算法剖析_第4页
第4页 / 共23页
rsa算法剖析_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《rsa算法剖析》由会员分享,可在线阅读,更多相关《rsa算法剖析(23页珍藏版)》请在金锄头文库上搜索。

1、RSA算法,RSA Algorithm,概况,MIT三位年青数学家R.L.Rivest,A.Shamir和L.AdlemanRivest等1978, 1979发现了一种用数论构造双钥的方法,称作MIT体制,后来被广泛称之为RSA体制。 它既可用于加密、又可用于数字签字。 RSA算法的安全性基于数论中大整数分解的困难性。 迄今为止理论上最为成熟完善的公钥密码体制,该体制已得到广泛的应用。,算法原理,RSA算法使用了乘方运算。 要求: 明文M经过加密得到密文C: C=Me mod n 密文C经过解密得到明文M: Cd mod n=(Me mod n)d mod n= Med mod n=M 即:必

2、须存在e,d,n,使Med mod n=M成立,如何确定e,d,n,确定n: 独立地选取两大素数p和q(各100200位十进制数字) 计算 n=pq,其欧拉函数值(n)=(p1)(q1) 确定e: 随机选一整数e,1e(n),gcd(n), e)=1 确定d: 根据ed=1 mod (n)在模(n)下,计算d,这样确定的e,d,n是否能使Med mod n=M成立呢?,因为ed=1 mod (n) 即ed=k(n)+1 所以:Med=Mk(n)+1 如果M和n互素,即gcd(M,n)=1 那么, 根据欧拉定理(如果gcd(a,n)=1,则 a(n) 1 mod n): 有:M(n) 1 mod

3、 n 所以:Med Mk(n)+1 MM(n) kmod n M1kmod n M mod n,如果M和n不互素,即gcd(M,n)1,即M和n有大于1的公约数。 因为n=pq,而p、q都是素数,不可再分解,所以M一定包含了p或q为因子。 又因为Mn,所以M不可能既是p的倍数又是q的倍数。 不妨设M是p的倍数,M=cp。 由于M不是q的倍数,所以gcd(M,q)=1,则 M(q) 1 mod q ,所以:M(q) (p) 1 mod q 即M(n) 1 mod n,即M(n) =1+kq,M(n) =1+kq 两边同乘以M=cp,则: M(n)+1=M+kqcp=M+kcn 把kc看作一个常数

4、,则:M(n)+1=M+tn 即:M(n)+1 M mod n,即M(n) 1 mod n 因为ed=1 mod (n), 所以: Med Mk(n)+1 MM(n) kmod n M1kmod n M mod n 综上,这样的e,d,n可以实现加密C=Me mod n和解密M=Cd mod n,密钥,以n,e为公钥。秘密钥为d。(p, q不再需要,可以销毁。),RSA算法在计算上的可行性,加密和解密 无论是加密还是解密都需要计算某个整数的模n整数次幂,即C=Me mod n、M=Cd mod n。但不需要先求出整数的幂再对n取模,而可利用模运算的性质: (a mod n) * (b mod

5、n)= (a*b) mod n 对于Me mod n,可先求出M1 mod n,M2 mod n, M4 mod n,再求Me mod n,RSA算法在计算上的可行性,产生密钥 由于n是公开的,为了避免攻击者用穷举法求出p和q(根据n=pq),应该从足够大的集合中选取p和q,即p和q必须是大素数。 目前还没有有效的方法可以产生任意大素数,通常使用的方法是:随机挑选一个期望大小的奇数,然后测试它是否是素数,若不是,则挑选下一个随机数直至检测到素数为止。,素性检验,引理:如果p为大于2的素数,则方程x21 mod p的解只有和x1和x-1 证明: x21 mod p x2 -1 0 mod p (

6、x+1)(x-1)0 mod p 所以,p|(x+1)或p|(x-1) 或p|(x+1)且p|(x-1)存在k,j,x+1=kp, x-1=jp2=(k-j)p, 这是不可能的。 引理的逆命题:若方程x21 mod p有唯一解x不为+1或-1,p不是素数,素性检验,Miller-Rabin素性概率检测法 n为待检测数,a为小于n的整数,将n-1表示为二进制形式bkbk-1b0,d赋初值为1,算法核心如下 for i=k downto 0 do xd; d(dd) mod n; if d=1 and (x1)and(xn-1) then return False if bi=1 the d(da

7、) mod n if d 1 then return False; return True 若返回False,n不是素数,若返回True,有可能是素数。,素性检测,For循环结束,有dan-1 mod n.由费尔玛定理,若n为素数,d为1.所以d1,则d不是素数 n-1-1 mod n,所以x 1和x n-1指x21 mod n 有非1的根,n不是素数 该算法对s个不同的a,重复调用,如果每次都返回true,则n是素数的概率大于等于1-2-s,Miller-Rabin算法可以确定一个整数是合数,但不能确定其一定是素数。 要找到一个2200左右的素数,在找到素数之前大约要进行ln(2200)/2

8、=70次尝试 在N附近平均每隔lnN个整数就会有一个素数。,RSA算法在计算上的可行性,确定d和e 有了p和q,可计算出(n)=(p1)(q1) 根据gcd(n),e)=1来选择e,这一步计算量也不大,因为两个随机数互素的概率约为0.6 有了e,再计算d=e-1 mod (n),这里用的是扩展的Euclid算法。, 选两个保密的大素数p和q。 计算n=pq,(n)=(p-1)(q-1),其中(n)是n的欧拉函数值。 选一整数e,满足1e(n),且gcd(n),e)=1。 计算d,满足de1 mod (n),即d是e在模(n)下的乘法逆元,因e与(n)互素,由模运算可知,它的乘法逆元一定存在。

9、以e,n为公开钥,d,n为秘密钥。,算法描述,选p=7,q=17。 求n=pq=119,(n)=(p-1)(q-1)=96。 取e=5,满足1e(n),且gcd(n),e)=1。确定满足de=1 mod 96且小于96的d,因为775=385=496+1,所以d为77。 因此公开钥为5,119,秘密钥为77,119。设明文m=19,则由加密过程得密文为 C=195 mod 1192476099 mod 119=66 解密为6677mod 119=19,RSA的安全性,RSA的安全性是基于分解大整数的困难性假定 如果分解n=pq,则立即获得(n)=(p1)(q1),从而能够确定e的模(n)乘法逆

10、d RSA-129历时8个月(曾经预言需要4*1016年)被于1996年4月被成功分解,RSA130于1996年4月被成功分解 密钥长度应该介于1024bit到2048bit之间 由n直接求(n)等价于分解n,RSA-129的故事,鹗鸟(ossifrage),又名髭兀鹰(lammergeier),是阿尔卑斯山上一种稀有的肉食秃鹰。它的翅膀展开将近十米宽。鸟名的字面含义是“碎骨”。顾名思义,其习性令人毛骨悚然。 Mirtin Gardner在1977年“Scientific American”的专栏文章中介绍了RSA码。为了显示这一技术的威力,RSA公司的研究人员用一个129位的数N和一个4位数

11、e 对这个关于秃鹰的消息作了编码。Gardner刊登了那个密文,同时给出了N和e。RSA公司还悬赏100美元,奖给第一个破译这密码的人。 96869 61375 46220 61477 14092 22543 55882 90575 99911 24574 31987 46951 20930 81629 82251 45708 35693 14766 22883 98962 80133 91990 55182 99451 57815 154,一批松散组成的因子分解迷,大约有六百多人,分布在二十几个国家。他们经过八个月的努力最后于1994年4月为RSA-129找到了64位数和65位数两个素数因子

12、。 11438 16257 57888 86766 92357 79976 14661 20102 18296 72124 23625 62561 84293 57069 35245 73389 78305 97123 56395 87050 58989 07514 75992 90026 87954 3541 = 34905 29510 84765 09491 47849 61990 38981 33417 76463 84933 87843 99082 0577 * 32769 13299 32667 09549 96198 81908 34461 41317 76429 67992 94

13、253 97982 88533 “The magic words are squeamish ossifrage”,来自两个方面的威胁,人类计算能力的不断提高 分解算法的进一步改进。分解算法过去都采用二次筛法,如对RSA-129的分解。而对RSA-130的分解则采用了一个新算法,称为推广的数域筛法,该算法在分解RSA130时所做的计算仅比分解RSA-129多10%。将来也可能还有更好的分解算法,因此在使用RSA算法时对其密钥的选取要特别注意其大小。估计在未来一段比较长的时期,密钥长度介于1024比特至2048比特之间的RSA是安全的。,几个建议,为了防止可以很容易地分解n,RSA算法的发明者建

14、议p和q还应满足下列限制条件: P和q的长度应仅相差几位。对于1024位的密钥而言,p和q都应在1075到10100之间。 (p-1)和(q-1)都应有一个大的素因子。 Gcd(p-1,q-1)应该较小。,其它公钥密码算法,ElGamal密码 ElGamal密码是由ElGamal于1985年提出。该密码系统可应用于加/解密、数字签名等,其安全性是建立于离散对数(discrete logarithm)问题之上的,即给定g,p与y=gx mod p,求x在计算上不可行。 椭圆曲线密码体制(ECC) 椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。其依据就是定义在椭圆曲线点群上的离散对数问题的难解性。椭圆曲线在代数学和几何学上已经广泛研究了150多年之久,有丰富而深厚的理论积累。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号