《现代密码学原理与实践》课件第4章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《现代密码学原理与实践》课件第4章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代密码学原理与实践 现代 密码学 原理 实践 课件
- 资源描述:
-
1、第4章 公钥密码第第4 4章章 公钥密码公钥密码4.1 引言引言4.2 背包公钥密码系统背包公钥密码系统4.3 RSA公钥密码公钥密码(基于大数分解基于大数分解)4.4 Rabin公钥体系公钥体系(基于二次剩余基于二次剩余)4.5 ElGamal公钥系统公钥系统(基于离散对数基于离散对数)4.6 McEliece公钥密码公钥密码(基于纠错码基于纠错码)4.7 椭圆曲线公钥体制椭圆曲线公钥体制习题习题 4实践练习实践练习 4第4章 公钥密码 计算机互联网的出现,极大地方便了人们对信息的交换和共享,电子商务和电子公务等越来越多的业务开始在网上进行,这就对信息交互提出了一系列新的需求。另一方面,网络
2、也给攻击者提供了更多的机会,病毒、黑客以及网络犯罪时有发生。如何更好地解决信息安全问题,已成为刻不容缓的任务。20世纪70年代出现的公开密钥体系,标志着现代密码学的诞生。新的理论与实践迅速发展起来了,随着一系列新观念和方法的出现,现代信息网络中的安全问题逐步得到解决,密码学进入了崭新的发展阶段。第4章 公钥密码4.1引言引言34.1.1对称密钥的困惑对称密钥的困惑 1.密钥交换问题密钥交换问题 为了使对称密钥(单钥制)体系实现信息的保密传输,通信双方必须事先约定相同的算法和步骤,称之为保密协议,并且设法在不让其他任何人知晓的条件下,双方获取统一的密钥,这一过程叫做密钥交换。密钥交换往往是比较困
3、难的任务,密钥是用秘密信道传递的,而秘密信道却昂贵且难得。因此,解决密钥交换问题便成了对称密钥体制的最大障碍。2.通信网络中的密钥管理问题通信网络中的密钥管理问题 网络中N个用户两两保密通信,需要分配和保管M=N(N+1)把密钥,当N很大时,比如N=1000时,则21第4章 公钥密码M5105,网管中心一定非常繁忙,甚至会成为通信的瓶颈。因此,密钥管理问题成了信息系统的又一难题。4.1.2公开密钥的产生和雏形公开密钥的产生和雏形 1Merkle难题难题 1974年,Merkle为解决对称单钥制保密系统的密钥交换问题提出了一个设想9。其密钥交换协议为:(1)甲向乙发送100万条消息,每条内容均为
4、:“这条信息是xi,它的密钥是yi”;xi是从0到999999之间任意选取但又各不相同的随机数,yi是xi的密钥,它也是从0到999999之间的任意被甲预先指定的一个各不相同的随机数。甲秘密保存所有yi与xi的密钥对照表后,就把这100万条消息分别用所宣布的这个yi加密,全部发给乙。第4章 公钥密码 (2)由于加密算法是公开的,乙收到100万条消息后,从中任选一条,然后遍历0999999之间的100万个密钥进行尝试,总有一个yj可将其解密,从而得知xj的值。(3)乙以明文形式将xj发给甲。(4)甲收到xj,即知乙所选的是哪个yj,从而甲、乙二人都有了同样的密钥yj。(5)非法窃听者丙即使收到了
5、全部往来的明文和密文,虽然知道了xj,但他不知道xj在哪条消息中,他需要对100万条消息一一进行解密,而每解译一条消息需要尝试100万个密钥。假若乙耗时半分钟能完成对100万个密钥的尝试,得到自己的密钥,丙则需要100万倍的时间,大约1年才能从100万条消息中确定乙所选的是哪一条。第4章 公钥密码 此设计方案显然是不太现实的,但其思想是很先进的。它用公开的算法通过不安全信道完成了密钥交换,其保密理念基于计算复杂性,安全性则是建立在机密与破译的时差之上的。该课题的出发点虽然是为了解决单钥交换问题,但客观上已走进了公开密钥的大门。2.双钥制的提出双钥制的提出 1976年11月,美国斯坦福大学电气工
6、程系研究生W.Diffie和副教授M.E.Hellman在IEEE上发表了题为“密码学新方向”的学术论文10,首次提出双密钥思想,用公开的算法解决了单钥制的密钥交换问题。设p为一个大素数,已知x和b,不难求出:y=bx mod p (4-1)第4章 公钥密码然而若已知y和b,求逆运算:x=logby mod p (4-2)却十分困难。利用离散对数复杂性,他们二人设计的密钥交换协议如下:(1)用户i选xi为私钥,求出 为公钥,公布之(连同b和p发给用户j)。(2)用户j选xj为私钥,求出 为公钥,公布之(发给用户i)。(3)约定 (4-3)pbyixi mod pbyjxj mod pbkjix
7、xij mod第4章 公钥密码为会话密钥(对称单钥),用户i可由获得;用户j可由获得。(4)尽管公布了yi、yj和p,但基于离散对数的困难性,任何第三者都难以求出xi和xj,因此无法获得kij。Diffie和Hellman不仅用公开的算法,而且首次提出了公钥和私钥的概念,开创了现代密码学的先河。pypbkiijxjxxij mod)(mod)(pypbkjjixixxij mod)(mod)(第4章 公钥密码4.1.3公开密钥制的一般原理公开密钥制的一般原理 1.公开密钥体系的使用方式及功能公开密钥体系的使用方式及功能 W.Diffie和M.E.Hellman的论文发表后,立即引起了学术界的重
8、视,并且很快把双密钥的思想用到密码系统中,这不仅解决了单钥制的密钥交换问题,更重要的是以一种全新的方式很好地解决了保密、认证与网络管理等问题。假设在算法公开的双密钥密码体制下每个用户都分得了自己的公钥(可以公开的密钥)与私钥(必须秘密保存的密钥),于是就能完成以下功能:(1)保密功能(包括会话密钥的交换):发信人用收信人的公钥加密,形成密文,收信人用自己的私钥解密。其他人因为不掌握可配对的私钥,所以无法解读这个密文。第4章 公钥密码 (2)认证功能:发信人用自己的私钥加密形成密文,收信人用发信人的公钥解密。其实任何人都能查到发信人的公钥来解译密文,能正确解译即证明该密文是发信人所加密的。(3)
9、双重功能:发信人先用自己的私钥加密明文,再用收信人的公钥对密文再次加密;收信人收到密件后先用自己的私钥解密一次,再用发信人的公钥解密一次。这样的密文只有合法收信人才有能力阅读并验证。(4)网管功能:N个用户的系统,管理员只需保管(不必隐藏)N把公钥,私钥由用户个人保管。密钥分配与管理的问题立刻变得简单了。第4章 公钥密码 2.公开密钥体系的加、解密过程公开密钥体系的加、解密过程 公开密钥体系把算法公开,并且把一对密钥中的一把公开,才换来了功能上的增加与使用上的方便。而之所以将之公开,是因为解密所用算法并非加密的逆运算,解密所用密钥也不同于加密所用的密钥,而且二者不可互相推导。加密:明文M变换
10、(k1为加密密钥)密文C,即 (4-4)解密:密文C变换 (k2为解密密钥)明文M,即 (4-5)1kE2kD1MECk2CDMk第4章 公钥密码 3.单向陷门函数单向陷门函数(加密、解密的数学原理加密、解密的数学原理)作为一个保密系统,无论单钥制还是双钥制,解密和加密的效果一定应当是互逆的,通过解密应得到与原来的明文相同的译文。一般说来,解密应当用加密的逆运算实现,单钥制就是这么做的。然而,抛开逆运算的定式看问题,逻辑上并不排除存在其他算法也能解出正确译文的途径。如果有,为什么不可以用呢。至于密钥,它只是加、解密运算过程中的一些关键数据,更没有理由认为参与加密运算的密钥和参与解密运算的密钥必
11、须相同。(当然,加密密钥与解密密钥既然是配对的,那么总应当存在某种内在的联系,实际上也确实如此。不过只要这种内在联系涉及到复杂度很高的运算,就可以认为它们是无法相互推导的)。于是,问题又回到了数学上,能否找到这样的算法和密钥呢?第4章 公钥密码 数学上存在一种单向陷门函数,它有下列性质:(1)对于每个xX,计算y=f(x)是容易的。正是因为这一点,加密运算才是简单可行的。(2)明知y=f(x)在yY中有解,但由给定的y难以求出x,其逆运算x=f-1(y)十分复杂。正是因为这一点,它被叫做单向函数。即使公开了算法,也难以在有限机时内计算出逆运算结果,系统安全性才有了保障。(3)对于某些特殊的单向
12、函数(不是所有的单向函数),若附加一点相应的“陷门信息k”,则存在另一个能算出x的方法:x=fk(y)。f k(y)不同于 f-1(y),它可以容易地算出x;求解这个问题的关键数据k就是密钥。正是因为这一点,掌握密钥的合法用户才能容易地正确解译密文。第4章 公钥密码 数学中确实存在不少逆运算非常复杂的单向函数,如大数的分解因数、离散对数等等,这是构造公开密钥体系的必要条件。但是还必须设法引入“陷门”,就像魔术师做一个套,知道窍门的人,就能轻易地从别的路钻出来,而不必按进来的路线在迷宫里摸索。目前已找到多种单向陷门函数,设计出多种公开密钥系统,如RSA系统、背包系统、ElGamalJP系统、Ra
13、bin系统等,后面将陆续介绍。4.1.4现代密码学的理念现代密码学的理念 1.从基于算法的神秘性到基于算法的复杂性从基于算法的神秘性到基于算法的复杂性 传统密码体系的安全性依赖于对算法的保密,一旦算法失密,攻击者就可以用它的逆运算来破译密码系统。而现代密钥第4章 公钥密码学则利用逆运算复杂度非常高的单向算法来构建密码系统,就不必担心算法失密,因为攻击者即使应用现代最新计算技术,在有限时间内也是无法算出结果的。所谓复杂性,是指计算所必须的基本运算步骤的数量,它决定了计算所必须的机时和占用的计算机资源。计算复杂性理论告诉我们,计算量随着数据位数N的增长而变大,其增大的速度与算法的函数类型有关。按照
14、从小到大的次序是:常数,对数函数logN,线性函数aN,二次函数N2,三次函数N3,多项式函数Nd,亚指数函数2lgN,指数函数2N或10N。随着数据位数N的增长,计算量按照多项式以下的依赖关系变大的算法都可认为是有效算法,这样的增加速度对于现有第4章 公钥密码计算技术来说是可以接受的,有限时间内能够算出结果。否则,计算量将随着N的增长而迅速膨胀,就不可能在有限时间内算出结果。复杂性理论把依赖关系为多项式及其低于多项式的算法都称为可解问题(p类),而将超过多项式的算法都称为难解问题(Np类,NpC类)。如果已经证明了某种密码的破译是Np类问题,那么只要数据位足够大,则任何现代的计算设备都不可能
15、在允许的时间内将其破译,因此它是安全的。由基于算法的神秘性到基于算法由基于算法的神秘性到基于算法的复杂性的复杂性是现代密码学设计理念上的一次重大转变,不靠神奇不靠神奇靠麻烦靠麻烦,算法不怕别人猜出,甚至可以公开。这样一来,密码分析者的注意力也就从研究由密文提取信息的可能性(老观点)改变为由密文提取信息的可行性(新观点)。第4章 公钥密码 2.算法的可公开性算法的可公开性 现代密码学认为藏着捂着的神秘算法,其安全性终究是侥幸的和脆弱的,只有根据算法的复杂性建立起来的密码体制,其安全性才是坚固可信的。这是因为算法的复杂性完全能够通过数学理论科学地预测,只要该算法复杂到不可行的程度,即使公开了算法,
16、也难以在有限机时内计算出逆运算结果。算法既然失去了保密的价值,公开算法就成了现代密码体制的一大特点。算法公开后,可以让它在攻击中不断完善和改进,并以此显示其安全的坚固性。第4章 公钥密码 3.安全的相对性安全的相对性 在科学技术高度发展的今天,应充分估计破译者的计算能力和计算技术未来的发展,从这个意义讲,不存在永远牢不可破的密码,只存在当前阶段与需求相适应的安全密码体系,破译只是时间和金钱的问题。但是如果破译工作所花的代价大于秘密本身的价值,或破译花费的时间大于秘密的有效期,则破译失去意义,则该保密系统就可以认为是安全的。这才是实事求是的科学的保密观和破译观。根据这个观点,破译的工作量取决于算
17、法的复杂度,而复杂性又取决于数据位数的长短,因此可以根据客观需求实事求是地设计不同层次、不同时效的密码体系。不求绝对不求绝对(安全安全)求相对求相对(安全安全)是密码设计理念上的又一个转变。第4章 公钥密码 4.密钥的机密性密钥的机密性 算法公开了,合法用户与非法用户的区别在哪里呢?合法用户拥有密钥,解译密文十分容易;非法用户没有密钥,破译密文则很不容易。这是因为如果攻击者用遍历法一个个去尝试密钥,设每尝试一个密钥需要1秒钟,则遍历160比特长的所有密钥需要2160秒钟,约1040年。只要密钥具有足够的长度与随机性,偶然猜中密钥的概率是极小的。不藏算法藏密钥不藏算法藏密钥是设计理念上一致的观点
18、。保守密钥的机密要比隐藏算法的机密容易得多,也安全得多。况且密钥是可以随时更换的,万一暴露了密钥,可以换一把,不致造成整个系统的破坏。第4章 公钥密码4.2背包公钥密码系统背包公钥密码系统 当初Diffie和Hellman提出公钥思想的时候,还没有一个实例。两年后,1978年,Merkle和Hellman利用古老的背包问题设计出一个公开的密钥系统11。4.2.1背包问题背包问题 1.问题问题 已知n个物体重量分别为A=(a1,a2,an),任选其中若干件放入背包内,使其总重量恰好等于预先给定的b值。设所选物体用X=(x1,x2,xn)表示,这里xi(i=1,2,n)可为0或1,分别表示该物体被
19、取或不被取,则 bxainii1XA(4-6)第4章 公钥密码 2.解答解答 当n较小时,这是一个多解的不定方程问题。例如,A=1,2,5,8,11,17,21,b=47,则答案可以是2+5+8+11+21,也可以是1+8+17+21。当n较大时,它是一个Np类的难解问题。例如,n=100,2100=1.271030,以每秒107种方案的速度用计算机搜索,也得4.021015年才能完成穷举。3.超递增序列的背包问题超递增序列的背包问题 如果限制这些物体的重量,即每个物体的重量都满足比它的前面所有物体的重量之和大的条件,即11ijjiaa(4-7)第4章 公钥密码则这样的背包问题叫做超递增背包问
20、题。超递增背包问题是p类唯一解的可求解问题。例如:A=1,2,5,10,25,51,b=64,则由6451可知a6必存在;再由64-51=1310知a4必选;又由13-10=32知a2必选;最后由3-2=1=a1知a1也必选。故答案是X=1,0,1,0,1,1,即64=1+2+10+51。4.2.2 MH背包公钥系统背包公钥系统 设明文为M=m1,m2,mn,mi=。若用超递增序列B=b1,b2,bn将之加密,则 是p类可解问题;10iniibmC1第4章 公钥密码若用非超序列A=a1,a2,an将之加密,则 是Np类难解问题。iniiamC1 如果设计出一个方法,能把B变换成A,我们用A来加
21、密,使问题成为Np类完全难题,则合法用户由于掌握A变换成B所具有的信息(私钥),就能由A求出B,使问题成为p类可求解问题。而非法用户只知道A(公钥),不掌握私钥,因此就无法解答此题。Merkle和Hellman当初是利用模逆元进行这个变换的。例如,B=1,3,7,13,26,119,267,选大于全部元素之和501的一个数,p=523,再选一个与523互素的数w=28,并求出w-1=467 mod 523,于是可分别求出每个bi的模逆元:ai=w-1bi mod 523 (i=1,2,n)第4章 公钥密码结果是:A=4671,4673,4677,46713,mod 523 =467,355,1
22、31,318,113,21,135,215A和p=523为公钥,求出A后,将w-1销毁。要发送信息就用A来加密。例如,明文M=10101100,则密文为C=AM=a1+a3+a5+a6=467+131+113+21=732mod523=209w=28为合法用户的私钥。合法接收者不难求出:bi=wai mod p=ww-1bi mod p=bi mod p(i=1,2,n)第4章 公钥密码即求出 B=1,3,7,13,26,65,119,267 还能求出 C=wc mod p=28209 mod 523=99而这是一个超递增背包问题,容易解出:m1=m3=m5=m6=1其他mi=0,所以明文是M
23、=10101100。第4章 公钥密码4.2.3背包公钥体系的破解与发展现状背包公钥体系的破解与发展现状 Merkle和Hellman提出背包体系时,曾悬赏50美元征求人破译,两年后,Shamir将其破译了。尽管求大数的模逆元与分解大素数的复杂度相同,但该设计存在漏洞。后来Merkle和Hellman将漏洞补上,再次悬赏破译,两年后又被人破译,使背包体系受到致命打击。背包体系目前基本上已不大用了,但它作为公钥的先驱实践者,作为算法和思路很简单的公钥体制,仍有了解的必要。同时,以背包问题为原理的各种新密码体制目前仍有人在继续研究。第4章 公钥密码4.3 RSA公钥密码公钥密码(基于大数分解基于大数
24、分解)3,7,8 RSA公钥密码是第一个实用的,同时也是流行至今的最典型的公钥算法。1978年,美国麻省理工大学的Rivest、Shamir和Adelman利用数论相关知识,提出了这个公钥系统10。4.3.1RSA加解密原理加解密原理 设p和q为两个大素数,计算n=pq和欧拉数(n)=(p-1)(q-1),随机选择整数e,使满足(e,(n)=1,于是它的逆元存在,即d=e-1mod(n),即有:ed=1mod(n)或 ed=k(n)+1 (4-8)设m为明文,e为公钥,n也是公钥(公钥是两个数据),则加密过程为 C=me mod n (4-9)第4章 公钥密码因为逆运算 十分复杂,且存在多义性
25、(不定),所以它是一个单向函数。然而,利用欧拉定理知,若m与n互素,则 m(n)=1mod n (4-10)对任意整数k,mk仍与n互素,则 (mk)(n)=1mod n于是:mk(n)+1=m mod n由此得到解密算法:Cd=med mod n=mk(n)+1 mod n=m mod n ecnm第4章 公钥密码即 m=Cd mod n (4-11)这里,d为私钥,只有合法用户掌握;p、q和(n)在完成设计后都可销毁;仅由公钥e和n是无法求出d的,除非能将n分解,求出p和q,而这是Np类难题,难以实现。4.3.2RSA的参数选择的参数选择 1.p和和q应为强素数应为强素数 强素数是这样一种
展开阅读全文