- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 
                        查看更多
                        
                    
                第4章  公钥密码技术 4.2.2 RSA的实现 (1)如何快速的计算ab (mod n)   假定要计算am,其中a 和m是正整数。若将m表示为二进制数bk-1 ···bo,则: 所以: (1)如何快速的计算ab (mod n) 下面讨论计算 ab mod n的算法,  Square-and-multiply(a,m,n) {  	把m表示为二进制 bkbk-1…bo 	d=1; 	for(i=k;i=0;i--) 	{ 		d=d*d mod n; 		If (bi==1) 			d=(d*a) mod n; 	} 	Return d; }  第4章  公钥密码技术          第4章  公钥密码技术 (2)如何快速产生大素数  现在还没有产生任意大素数的有用技术,通常使用的过程是随机选取一个需要的数量级的奇数并检验这个数是否是素数;如果不是,再重复前面的步骤直到找到了通过检验的素数为止。  一个比较高效和流行的素性检测算法是miller-rabin算法, 归纳起来,挑选素数的过程如下: 随机选择一个奇整数n 随机选择一个整数an 执行诸如Miller-Rabin之类的概率素数测试 若n通过测试足够多次,则接受 n;否则转到步骤2. (3)用私钥进行有效运算 ? 我们不能为了计算的效率二简单地选择一个小数值的d,d的值太小容易遭受穷举攻击和其他形式的密码分析,然而中国剩余定理可以加快运算速度。  第4章  公钥密码技术 第4章  公钥密码技术 4.2.3 RSA的安全性 	RSA的安全性是基于分解大整数的困难性假定,之所以为假定是因为其困难性至今还未能证明。 	若能将n分解为两个素数因子p,q,则可计算?(n)=(p-1)(q - 1),d = e-1 mod ?(n)      因此,不难得出结论:破译RSA不会比大整数分解更加困难!     (1)对模n的长度必须足够长,至少为1024比特  (2) p和q的长度应该相差不多; (3) p?1和q?1都应该包含大的素因子; (4) gcd(p?1,q?1)应该很小; (5)dn1/4。  RSA的安全性(续) 穷举攻击:这种方法试图穷举所有可能的私钥。 数学攻击:有多种数学攻击方法,他们的实质都是试图分解两个素数的乘积。 计时攻击:这类方法依赖于解密算法的运行时间。 选择密文攻击:这种攻击利用了RSA算法的性质  第4章  公钥密码技术 第4章  公钥密码技术 4.2.4 RSA在应用中的问题 (1)用户之间不要共享模数n 	假定用户U1和U2共享模数为n,他们的加密密钥分别是e1和e2,且gcd(e1,e2)=1,则攻击者不需要解密密钥d,就可以恢复出明文,具体过程如下: 用户A分别向用户U1和U2发送明文m的加密信息,分别为:c1=me1  mod n,   c2=me2  mod n 设gcd(c1,n)=1,gcd(c2,n)=1,gcd(e1,e2)=1,(概率很大),则攻击者由扩展的欧几里德算法能找到两个整数s和t,满足:se1+te2=1。S和t有一个是负数,假定s是负数,由欧几里德算法可计算c1-1 mod n。则(c1-1)-s. c2t=(m-e1)-s. (m-e2)t=m(se1+te2)  mod n=m  (2)不同的用户选用的素数不能相同  (3)一般不能直接应用RSA进行加解密 	由于RSA算法是决定性算法(即对相同的明文始终会给出相同的密文)和具有特殊的代数结构等原因,用RSA算法进行直接加密在很多环境下是不安全的。故在使用RSA进行加密前,需要对明文做某种预处理,一般是进行随机化的填充。    4.3 ElGamal公钥密码体制  4.3 ElGamal公钥密码体制        ElGamal密码体制是T.ElGamal于1985年提出,是最有名的公钥密码体制之一,它的安全性是基于离散对数问题.   1.密钥的生成 选取大素数p, g∈Zp*是一个本原元(生成元)。             p、g 作为系统参数所有用户共享。  系统中每个用户U都随机挑选一个整数x,2≤ x ≤ p-2,并计算:                   y= g x(mod p),          y作为用户U的公开密钥,而x作为用户U的秘密密钥 第4章  公钥密码技术 4.3 ElGamal公钥密码体制(续) 2. 加密: (1) 用户A先把明文M编码为一个在 0 到(p-1)之间的整数m 作为传输的明文; (2) 用户A挑选一个秘密随机数 r ( 2≤ r ≤ p-2 ),        并计算:     c1= gr (mod p); (3)用户A计算: c2 = m· yr (mod p),其中y是用户B的公开密钥; (4)用户A把二元组
                
原创力文档
                        

文档评论(0)