《第五章公钥密钥课件.ppt》由会员分享,可在线阅读,更多相关《第五章公钥密钥课件.ppt(60页珍藏版)》请在三一办公上搜索。
1、1,第五章 公钥密码技术,2,一、公钥密码体制的提出对称密钥密码体制存在的问题密钥分配与管理问题密钥空间大:传统密钥管理两个用户之间分别用一对密钥时,则n个用户需要C(n,2)=n(n-1)/2个密钥,当用户量很大时,密钥空间急剧增大,如 n=100时,c(100,2)=4,950 n=1000时,c(1000,2)=499,500密钥通过网络进行密钥分配时容易被截获或冒领。签名验证问题传统加密算法无法实现抗抵赖的需求,5.1概述,3,用户数和密钥量的对应关系,4,一、公钥密码体制的提出1976年,斯坦福大学的博士生Diffie和其导师Hellman在密码学的新方向中首次提出了公钥密码的观点,
2、标志着公钥密码学研究的开始。W.Diffie and M.E.Hellman,New direction in cryptography,IEEE Trans.on Information Theory,1976,IT-22.(6),pp.644-654.1977年由罗纳德李维斯特(Ron Rivest)、阿迪萨莫尔(Adi Shamir)和伦纳德阿德曼(Leonard Adleman)一起提出了第一个比较完善的公钥密码算法,即RSA算法,并且在1978年首次公布。公钥密码体制的出现在密码学历史上是迄今为止最大的、而且是惟一真正的革命。,5.1概述,5,二、公钥密码体制的原理公钥密码体制也称非
3、对称密码体制;公钥密码算法是基于数学函数(如单向陷门函数)而不是基于代替和置换公钥密码算法要求每个参与方拥有一对相关的密钥K=(PK,SK):一个公开,称为公开密钥PK,用于加密 另一个保密,称为私有密钥SK,用于解密在计算上由PK推出SK是困难的.加密和解密会使用两把不同的密钥,因此称为非对称,5.1概述,6,二、公钥密码体制的原理公钥密码算法具有以下重要特性:仅仅知道密码算法和加密密钥而要确定解密密钥,在计算上是不可能的;两个相关密钥中任何一个都可以用作加密而让另外一个用作解密。公钥可以被任何人知道,用于加密消息以及验证签名;私钥仅仅自己知道的,用于解密消息和签名例如,RSA算法。,5.1
4、概述,7,二、公钥密码体制的原理,5.1概述,8,二、公钥密码体制的原理,5.1概述,9,5.1概述,接收方:C=EPKBESKAM,发送方:C=EPKBESKAM,10,改进的数字签名,11,公开密钥加密既可以使用本方的私有密钥,也可以使用对方的公开密钥。加密使用对方B的公开密钥KUB进行加密可以实现数据的加密。鉴别而使用本方A的私有密钥KRA进行加密实现鉴别。加密与鉴别,5.1概述,12,公钥密码体制的特点新用户的增加只需要产生一对公共/私有密钥,密钥分配过程简单。只有在用户的私有密钥被破坏时,才需要进行密钥重建;非对称密钥加密提供了认证功能。加密和解密较常规密钥密码体制慢。,5.1概述,
5、13,常规加密与公钥密码的比较,需要澄清的问题:公开密钥加密方法要比传统的加密方法更加安全?事实上,任何加密方案的安全程度都依赖于密钥的长度和破译密码所需要的工作量。,14,5.1概述,三、Diffie-Hellman密钥交换算法Diffie-Hellman密钥交换是W.Diffie和M.Hellman于1976年提出的第一个公开密钥算法。该算法的安全性基于求离散对数的困难性。算法的惟一目的是使得两个用户能够安全地交换密钥,得到一个共享的会话密钥。算法本身不能用于加、解密。,15,5.1概述,三、Diffie-Hellman密钥交换算法,16,本原元并不唯一(19本原元还有2,3,10,13,
6、14,15),不是所有的整数都有本原元。,17,5.1概述,三、Diffie-Hellman密钥交换算法,离散对数的难解性:,离散对数的概念:,18,三、Diffie-Hellman密钥交换算法,19,三、Diffie-Hellman密钥交换算法,Diffie-Hellman密钥交换,20,三、Diffie-Hellman密钥交换算法,21,三、Diffie-Hellman密钥交换算法,22,三、Diffie-Hellman密钥交换算法,23,RSA算法是罗纳德李维斯特(Ron Rivest)、阿迪萨莫尔(Adi Shamir)和伦纳德阿德曼(Leonard Adleman)于1977年研制并
7、于1978年首次发表的一种算法。它是第一个既能用于数据加密,也能用于数字签名的公开密钥密码算法。,5.2 RSA公钥密码,24,依据的原理是:寻求两个大素数的乘积比较简单,而将它们的乘积分解开(因式分解)则极其困难。,5.2 RSA公钥密码,7310713911391可以分解成哪两个素数的积?,25,RSA算法包括三个部分:密钥的产生加密解密,算法描述,26,密钥的产生选择两个大素数p,q(p,q保密);计算n=pq(n公开);计算(n)=(p-1)(q-1),(n)是n的欧拉函数;选择整数e,使得gcd(n),e)=1,1 e(n)(e公开);计算d,使得ed=1 mod(n),即d是e在模
8、(n)下的乘法逆元;公钥KU=e,n,私钥KR=d,n或d,p,q,算法描述,27,加密/解密明文以分组为单位加密,每个分组是小于n的二进制值M表示明文,C表示密文加密形式如下:C=Me mod n 用公钥e,n解密形式如下:M=Cd mod n 用私钥d,n,算法描述,28,例子:选择两个素数p=3,q=17;计算n=pq=317=51;计算(n)=(p-1)(q-1)=32;选择e,使1 e(n)且与(n)互素,取e=13;计算d,使得ed=1 mod(n),即ed=k(n)+1,取k=2,则d=5。最终,加密密钥为13,51,解密密钥为5,51。加密:令明文M=2,密文C=Me mod
9、n=213 mod 51=8192 mod 51=32解密:M=Cd mod n=325 mod 51=512 mod 51=2,算法描述,29,算法描述,例子:设p=7,q=11,e=13,求n、(n)和d。例子:设p=7,q=17,e=5,明文m=19求(n),d和密文C。,30,使用RSA时的计算问题加密与解密过程RSA密钥的产生,RSA算法中的计算问题,31,加密与解密过程加密与解密过程均涉及计算一个大整数的整数次幂,然后取模。如果先对整数进行指数运算,然后进行模n运算,则中间结果非常大。需要用到快速指数计算法,RSA算法中的计算问题,32,快速指数算法1 am mod n将m表示为二
10、进制形式bkbk-1b0,c=0;d=1;for i=k downto 0 do c=2c;d=(dd)mod n;if bi=1 then c=c+1;d=(da)mod n;return d;,RSA算法中的计算问题,33,RSA算法中的计算问题,快速指数算法2 am mod n将m表示为二进制形式bkbk-1b0,1.b=m,c=a,d=1;2.如果b=0,输出结果d;3.如果b是奇数,转到5;4.b=b/2;c=c2 mod n,转到3;5.b=b-1;d=(cd)mod n,转到2.,34,RSA算法中的计算问题,例P82页:30 37 mod 77,35,RSA密钥的产生在使用公开
11、密钥密码系统之前,每个参与者都必须产生一对密钥。产生密钥时,需要考虑以下问题:确定两个大素数p和q;选择e,并且计算d。,RSA算法中的计算问题,36,确定两个大素数p和q因为n=pq在公钥体制中是公开的,因此为了防止敌手通过穷举攻击发现p和q,这两个素数应该是从足够大的集合中选取的大素数。寻找大素数的过程如下:随机选取一个大的奇数;使用素性检验算法检验该奇数是否为素数;若不是素数则选取另一个大的奇数,重复这一过程,直至找到大素数为止。,RSA算法中的计算问题,37,RSA算法的安全性是基于对大整数进行因子分解的困难性。可能的对RSA的攻击方法包括:选择密文攻击、公共模数攻击、低指数攻击、定时
12、攻击等。,5.2.6 RSA的安全性,38,选择密文攻击 一般攻击者是将希望解密的信息C作一下伪装reC,让拥有私钥的实体解密。然后,经过解密计算就可得到它所想要的信息。(reC)d=red*Cd mod n=r*M mod n,所以 M=(reC)d*r-1,5.2.6 RSA的安全性,39,5.2.6 RSA的安全性,公共模数攻击若系统中用户共有一个模数n,而拥有不同的e和d。若存在同一信息(设为P)分别用不同的公钥(e1和e2)加密,C1=Pe1 mod n;C2=pe2 mod n 设密码分析者截获n、e1、e2、C1和C2,若恰好e1和e2互质,则他可以得到P。,40,5.2.6 R
13、SA的安全性,公共模数攻击 证明:因为e1和e2互质,故用扩展的欧几里得算法能找到r和s,满足:r*e1+s*e2=1 则(C1)r*(C2)s=(Pe1)r*(pe2)s mod n=P r*e1+s*e2 mod n=P mod n,41,5.2.6 RSA的安全性,低指数攻击为了缩短加密时间,使用小的加密指数e是非常诱人的。普通的e值是e=3。不过有几种针对低加密指数的潜在攻击。为了阻止这些类型的攻击,我们推荐使用e=216-1=65535.(或者一个接近这个值的素数)。当解密指数过小的时候,攻击者可以计算出解密指数d,42,5.2.6 RSA的安全性,定时攻击RSA核心运算是非常耗时的
14、模乘,如果能够精确的监视RSA的解密过程,获得解密时间,就可以估算出私有密钥D。如果私密指数d中的相关比特是0的话,这种算法只应用平方;如果相关的位是1,这种算法就既应用平方也应用乘法,完成每一个迭代需要的时序会更长。根据执行时间来判断当前位是0还是1,这种方法实际操作很困难。,43,5.2.6 RSA的安全性,RSA存在很多种攻击,并不是因为算法本身存在缺陷,而是由于参数选择不当造成的,为保证算法足够安全,需要仔细选择参数。,44,5.4 ElGamal密码系统,ElGamal是1985年由T.EIGamal提出的一个著名的公钥密码算法该算法既能用于数据加密也能用于数字签名其安全性是依赖于计
15、算有限域上离散对数这一难题,45,5.4 ElGamal密码系统,密钥产生任选一个大素数p,使得p-1有大素因子,g是模p的一个本原根,公开p与g。使用者任选一私钥x,x0,p-1计算公钥:y=gx mod p公开公钥:y,p,g保密私钥:x,46,5.4 ElGamal密码系统,加密过程:设欲加密明文消息为M.随机选一与p-1互素的整数k,0=k=p-1;计算密文对:C=C1,C2,发送给接收者c1=gk mod pc2=ykm mod p,47,5.4 ElGamal密码系统,解密算法:设密文为c=(c1,c2),则明文为,先计算:,再计算明文:,48,5.4 ElGamal密码系统,1)
16、密钥生成.选择公开参数:p=97 及本原根 a=5;Bob 选择 秘密钥xB=58,计算并发布公钥yB=558=44 mod 97.2)Alice 要加密 M=3 给 Bob.首先得到 Bob的公开密钥 yB=44,选择随机 k=36 计算:yBK=4436=75 mod 97.计算密文对:C1=536=50 mod 97;C2=75*3 mod 97=31 mod 97.发送 50,31 给Bob.3)Bob 解密消息.恢复消息密钥 K=5058=75 mod 97.Bob 计算 K-1=22 mod 97.Bob 恢复明文 M=31*22=3 mod 97.,49,本章结束,50,51,练
17、习1,p=7,q=11,e=17,m=8求d和密文。解 n=pq=77(n)=60(17,60)=160=173+9(1)9=60-173(1)17=91+8(2)8=17-91(2)9=81+1(3)1=9-81(3)1=602-177d=17-1mod 60=-7 mod 60=53ed=1753=901=900+1=6015+11753=6015+1C=memodn817mod77,52,练习2,2、设p=47,q=59,则n=2773令d=157,求(1)e(2)明文M=7,密文是多少(3)用程序实现,53,3、设p=7,q=11。求(1)n=?(n)=?(2)e=7,d=?(3)明文
18、M=88,密文是多少(4)用程序实现解 d=43,54,设通信双方使用RSA加密体制,接收方的公开钥是(e,n)=(5,35),接收到的密文是C=10,求明文M.2.在ElGamal加密体制中,设素数p=71,本原根g=7.1)如果接收方B的公开钥是yB=3,发送方A选择的随机整数k=2,求明文M=30所对应的密文.2)如果A选择另一个随机整数k,使得明文M=30加密后的密文是C=(59,C2),求C2.,55,5.2.6 RSA的安全性,|p-q|要大.如果|p-q|较小,则(p+q)/2n1/2,(p-q)/2)2=(p+q)/2)2-n.可求出p和q.例:对于n=164009,有n1/2
19、 405.令(p+q)/2=405,(p-q)/2)2=4052-n=16 p+q=810,p-q=8 p=409,q=401 164009=409401.p和q要足够大:n=pq 为1024位,或2048位,56,5.2.6 RSA的安全性,p-1和q-1的最大公因子要小 设攻击者截获到密文 y1=xe mod n 迭代加密:yi=yi-1e=xeee mod n(i=2,3,4,)如果有i使得:di=1 mod(n),则有:yi=x mod n 因此,如果i很小,则容易求得明文x.由Euler定理和di=1 mod(n),可得 i=(n)=(p-1)(q-1)=D(p-1)(q-1)/(D
20、),其中D=gcd(p-1,q-1).当D小时,(D)就小,从而i大.,57,5.2.6 RSA的安全性,p-1和q-1的最大公因子要小 设p和q是理想的强素数,即 p=2a+1,q=2b+1(a,b为奇素数)D=2,(D)=1,i=2(a-1)(b-1).例:设p=17,q=11,n=187,d=7,D=gcd(p-1,q-1)=gcd(16,10)=2.对x=123,有 y1=1237=183 mod 187 y2=y17=1837=72 mod 187 y3=y27=727=30 mod 187 y4=y37=307=123(=x)mod 187.,58,5.2.6 RSA的安全性,加密指数e 的选择 为使加密速度快,应使e的二进制表示中,1的个数尽量小,但不能太小.可取:e=3,216+1=65537(在二进制表示中只有2个1).解密指数d的选择 在d的二进制表示中,1的个数尽量小,但不能太小.3dn1/4.,人有了知识,就会具备各种分析能力,明辨是非的能力。所以我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过阅读文学作品,我们能提高文学鉴赏水平,培养文学情趣;通过阅读报刊,我们能增长见识,扩大自己的知识面。有许多书籍还能培养我们的道德情操,给我们巨大的精神力量,鼓舞我们前进。,