第8章 公钥密码学.ppt
《第8章 公钥密码学.ppt》由会员分享,可在线阅读,更多相关《第8章 公钥密码学.ppt(131页珍藏版)》请在三一办公上搜索。
1、公钥密码学,张原 西北工业大学电子信息学院,内容提要,公开密钥密码算法的基本思想公开密钥密码算法的数学基础一些经典算法,对称算法的不足,密钥管理的困难:传统密钥管理:两两分别用一个密钥时,则n个用户需要C(n,2)=n(n-1)/2个密钥,当用户量增大时,密钥空间急剧增大。如:n=100 时,C(100,2)=4,995n=5000时,C(5000,2)=12,497,500密钥发布的困难:密钥必须通过某一信道协商,对这个信道的安全性的要求比正常的传送消息的信道的安全性要高数字签名的问题传统加密算法无法实现抗抵赖的需求。对称算法的优点:速度快,公钥密码的起源,公钥密码又称为双钥密码和非对称密码
2、,是1976年由Diffie和Hellman在其“密码学新方向”一文中提出的,见划时代的文献:W.Diffie and M.E.Hellman,New Directrions inCryptography,IEEE Transaction onInformation Theory,V.IT-22.No.6,Nov 1976,PP.644-654RSA公钥算法是由Rivest,Shamir和Adleman在1978年提出来的,见Communitions of the ACM.Vol.21.No.2.Feb.1978,PP.120-126,公开密钥密码的重要特性,基于公开密钥的加密过程,用公钥密码
3、实现保密,用户拥有自己的密钥对(KU,KR)公钥KU公开,私钥KR保密A B:Y=EKUb(X)B:DKRb(Y)=DKRb(EKUb(X)=X,基于公开密钥的鉴别过程,用公钥密码实现鉴别,条件:两个密钥中任何一个都可以用作加密而另一个用作解密鉴别(不提供保密):A ALL:Y=DKRa(X)ALL:EKUa(Y)=EKUa(DKRa(X)=X鉴别+保密:A B:Z=EKUb(DKRa(X)B:EKUa(DKRb(Z)=X,公钥密钥的应用范围,加密/解密数字签名(身份鉴别)密钥交换:交换会话密钥,基本要求和思想,涉及到各方:发送方、接收方、攻击者涉及到数据:公钥、私钥、明文、密文公钥算法的条件
4、:产生一对密钥是计算可行的已知公钥和明文,产生密文是计算可行的接收方利用私钥来解密密文是计算可行的对于攻击者,利用公钥来推断私钥是计算不可行的已知公钥和密文,恢复明文是计算不可行的(可选)加密和解密的顺序可交换,思想:陷门单向函数,单向陷门函数是满足下列条件的函数f:给定x,计算y=fk(x)是容易的;给定y,计算x使x=fk-1(y)是不可行的。存在k,已知k 时,对给定的任何y,若相应的x存在,则计算x使x=fk-1(y)是容易的。,公钥密码基于的数学难题,背包问题大整数分解问题(The Integer Factorization Problem,RSA体制)离散对数问题有限域的乘法群上的
5、离散对数问题(The Discrete Logarithm Problem,ElGamal体制)定义在有限域的椭圆曲线上的离散对数问题(The Elliptic Curve Discrete Logarithm Problem,类比的ElGamal体制),内容提要,公开密钥密码算法的基本思想公开密钥密码算法的数学基础一些经典算法,数的整除性,设Z为全体整数的集合,若b0且a,b,mZ使得a=mb,此时称b整除a。记为b|a,还称b为a的因数(因子),a叫作b的倍数。如果不存在整数m,使得a=mb,则称b不能整除a或a不能被b整除,记为b|a。,模运算,给定任意一个正整数n和任意整数a,如果将n
6、除a,则得到整数商q和整数余数r,且它们之间满足以下关系:其中 是小于或等于x的最大整数。r记为:ra mod n如果a mod n=b mod n,称整数a和b模n同余,记为:ab mod n,模运算的性质,如果n|(a-b),那么ab mod nab mod n 隐含 ba mod nab mod n和bc mod n 隐含 ac mod n,模算术运算,(mod n)运算将所有的整数映射到0,1,n-1组成的集合,可以在该集合上进行算术运算,称为模算术,模算术有如下性质:(a mod n)+(b mod n)mod n=(a+b)mod n(a mod n)-(b mod n)mod n
7、=(a-b)mod n(a mod n)x(b mod n)mod n=(axb)mod n定义:比n小的非负整数集合Zn:Zn=0,1,n-1,称该集合为模n的剩余类。如果a和n互素,那么a乘以Zn中的所有元素再模n,将得到和Zn相同的集合。,素数(Prime Numbers),一个大于1的整数,如果它的正因数只有1和它本身,就叫做质数(素数),否则就叫做合数。eg.2,3,5,7 素数,4,6,8,9,10 不是素数在数论中具有重要的地位小于200 的素数有:2 3 5 7 11 13 17 19 23 29 31 37 41 43 4753 59 61 67 71 73 79 83 89
8、 97 101 103107 109 113 127 131 137 139 149 151 157163 167 173 179 181 191 193 197 199,素因子分解,数n的因子分解是把它写成其它数的乘积n=a b c相对于把因子相乘得到一个数,进行一个数的因子分解是困难的。素因子分解是把一个数写成素数的乘积形式 eg.91=713;3600=243252 18=2132,算术基本定理,任意大于1的整数a都能被因式分解为如下的唯一形式:其中,均是素数,且对每一,,互素和最大公约数GCD,设a1,a2,an是n(n2)个整数,若整数d是它们每一个的因数,d就叫做a1,a2,an的
9、一个公因数。整数a1,a2,an的公因数中最大一个叫最大公约数GCD,若GCD(a1,a2,an)=1,我们说a1,a2,an互素。eg.8 和15 互素,8的因子是1,2,4,8,15 的因子是1,3,5,15。1是唯一的公因子。eg.300=223152 18=2132 因此GCD(18,300)=213150=6计算两个数的最大公因之可以通过Euclid(欧几里德)算法求解。公元前300年,Euclid算法,gcd(a,b)=gcd(b,a mod b)a0,b0Example:gcd(55,22)=gcd(22,55mod22)=gcd(22,11)=11证明:假定d=gcd(a,b)
10、,那么有d|a和d|b.对任何正整数b,a可表示为如下形式:a=kb+r r mod b,a mod b=r,因此,有(a mod b)=a-kb,k为某个整数。但由于d|b,d也能整除kb,又因d|a,故有d|(a mod b),这表明d 也是b 和(amod b)的公因子。反之,如果d 是b 和(a mod b)的公因子,那么d|kb,且d|kb+(a mod b),这等同于d|a。这样a和b的公因子集合等同于b 和(a mod b)的公因子集合。,求模逆元,同乘法逆元相似,在模运算领域,计算x使得:1(a*x)mod n。可表示为:a-1 x(mod n)不是对所有的a和n都存在模逆元。
11、当a和n互素时,存在唯一模逆元。计算模逆元可以通过扩展Euclid(欧几里德)算法求解。,Fermat定理,Fermat定理:p素数,a是整数且不能被p整除,则:ap-1 1 mod p证明:考虑集合1,2,p-1,对每个数乘以a,得到集合a mod p,2a mod p,(p-1)a mod p,对于p,后者两两不同且都在1与p-1之间,因此两个集合相同,于是:(p-1)!=12(p-1)(a mod p)(2a mod p)(p-1)a mod p)mod p a2a(p-1)a mod p ap-1(p-1)!mod p注意到(p-1)!与p互素,因此定理成立.推论:p素数,a是任意整数
12、,则:ap a mod p,Euler函数,Euler函数(n)定义为小于n且与n互素的正整数个数n是素数,(n)=n-1若n的素因子分解为n=Piai,ai0,Pi互不相同,则:(n)=Piai(1-1/Pi)=n(1-1/p1)(1-1/p2)(1-1/pn)p1,p2,pn是n的素数因子若gcd(m,n)=1,则(mn)=(m)(n),特别地,若pq且都是素数,(pq)=(p-1)(q-1)例如:20=225,有两个素数2和5,这样,(20)=20(1-1/2)(1-1/5)=8即20中有8个整数与20是互素的,即它们没有2或5为因子:1,3,7,9,11,13,17,19,Euler定
13、理,Euler定理:若a与n为互素的正整数,则:a(n)1 mod n证明:R=x1,x2,x(n)为所有小于n且与n互素的正整数,考虑集合S=(ax1mod n),(ax2mod n),(ax(n)mod n)(aximod n)与n互素(aximod n)两两不等:若:(aximod n)=(axjmod n)ximod n=xjmod nS有(n)个元素故S也是所有小于n且与n互素的正整数,因此S=R,从而 xi=(aximod n)(axi)mod n(a(n)xi)mod n注意到xi 与n互素,从而得到结论。,Euler定理推论,推论:给定两个素数p、q,整数n=pq,对任意整数k
14、 和m(0mn),有:m(n)1 m(p-1)(q-1)+1 m mod nmk(n)1 mk(p-1)(q-1)+1 m mod n在RSA中应用!,中国剩余定理,公元100年由中国数学家孙子发现。中国剩余定理是数论中最有用的一个工具,定理说某一范围内的整数可以通过它对两两互素的整数取模所得的余数来重构。例如:Z10中每个数都可从它关于2和5(10的两个互素的因子)的同余类重构。比如已知x关于2和5的同余类分别是0和3,即x mod 20,x mod 53。可知是偶数且被5除后余数是3,所以可得8是满足这一关系的惟一的x。中国剩余定理能有效地改进模幂运算的速度,定理(中国剩余定理)设m1,m
15、2,mk是两两互素的正整数,则一次同余方程组对模M有惟一解:其中ei满足,例4.4 由以下方程组求x。解:M=2357=210,M1=105,M2=70,M3=42,M4=30,易求e1M-11 mod 21,e2M-12mod 31,e3M-13 mod 53,e4M-14 mod 74,所以x mod 210(10511+7012+4233+3045)mod 210173,或写成x173 mod 210。,中国剩余定理提供了一个非常有用的特性,即在模M下可将非常大的数x由一组小数(a1,a2,ak)表达。,中国剩余定理,例:将973 mod 1813由模数分别为37和49的两个数表示。解:
16、取x=973,M=1813,m1=37,m2=49。由a1973 mod m111,a2973 mod m342 得x在模37和模49下的表达为(11,42)。,离散对数,离散对数是包括Diffie-Hellman密钥交换和数字签名算法(DSA)在内的许多公钥算法的基础。模n的整数幂指数和离散对数的概念离散对数的计算,模n的整数幂,给定a,n计算ammod n特别考虑am 1 mod n,满足上式的最小指数m称为:a(mod n)的阶a 所属的模 n的指数a 的生成周期长度若a与n为互素的正整数,则a(n)1 mod n如果最小的m=(n),那么a被称为n的原根primitive root。,
17、example,考虑7模19的各次幂:71 7 mod 1972 2X19 11 11 mod 1973 18X19 1 1 mod 1974 126X19 7 7 mod 1975 848X19 11 11 mod 19由于73 1 mod 19,可得73j 737j 7j mod 19,该序列是周期性的,周期长度是使7m 1 mod 19成立的最小正幂m。,整数的幂,模19,原根(primitive root),定义:素数p的原根定义:如果a是素数p的原根,则数a mod p,a2 mod p,ap-1 mod p是不同的并且包含1到p-1的整数的某种排列。并不是所有整数都有原根,只有2,
18、4,pa,2pa这样形式的整数才有原根,其中p为奇素数。,指数和离散对数,模n的整数幂的逆问题是找一个数模p的离散对数。就是给定任意整数b,求x,使ax=b mod p对于普通的正实数,对数函数是指数函数的反函数。对任意的整数b和素数p原根a,我们可以找到唯一的指数x满足b=ax mod p 0=x=(p-1)x称为以a(mod p)为底数的b的指数(离散对数)记作x=loga b mod p,inda,p(b).,离散对数的性质,普通对数与指数之间具有相似性,因此指数也称为离散对数,离散对数的计算,离散对数的计算:ygx mod p已知g,x,p,计算y是容易的已知y,g,p,计算x是困难的
19、。密码学中常用的主要有三个群的离散对数有限域GF(p)的乘法群有限域GF(2n)上的乘法群有限域F上的椭圆曲线群,公钥方案的安全性,和对称方案一样,公钥密码也容易遭受强力攻击,由于强力攻击是计算上不可行的,因此公钥密码使用的密钥更大(512bits)安全性基于一些陷门单向函数,只是计算上不可行要求使用非常大的数因此比对称方案计算速度慢选择明文攻击:假如发送的是56位DES密钥,攻击者可以用公钥对所有可能的密钥加密,与传输密文对比,因此,无论公钥体制的密钥有多长,这种攻击都可以转化为对56位密钥的穷举攻击。通过对报文附加随机比特来实现,内容提要,公开密钥密码算法的基本思想公开密钥密码算法的数学基
20、础一些经典算法,内容提要,公开密钥密码经典算法Diffie-Hellman密钥交换算法背包算法RSA算法EIGamal算法椭圆曲线密码算法ECC,Diffie-Hellman密钥交换,是第一个公钥方案Diffie&Hellman in 1976使用在一些商业产品中目的:密钥交换方案不能用于交换任意信息允许两个用户可以安全地建立一个秘密信息,用于后续的通讯过程该秘密信息仅为两个参与者知道算法的安全性依赖于有限域上计算离散对数的难度在美国的专利1997年4月29日到期,Diffie-Hellman密钥交换,算法:双方选择素数p以及p的一个原根a用户A选择一个随机数Xa p,计算Ya=aXa mod
21、 p用户B选择一个随机数Xb p,计算Yb=aXb mod p每一方保密X值,而将Y值交换给对方用户A计算出K=YbXa mod p用户B计算出K=YaXb mod p双方获得一个共享密钥(k=aXaXbmod p)p、a、Ya、Yb可以公开素数p以及p的原根a可由一方选择后发给对方,Diffie-Hellman密钥交换过程,Diffie-Hellman Example,用户Alice和Bob想交换密钥:约定素数P=353和a=3随机选择密钥:A chooses Xa=97B chooses Xb=233计算公钥:Ya=397 mod 353=40(Alice)Yb=3233 mod 353=
22、248(Bob)计算共享的会话密钥:Kab=YbXa mod 353=24897=160(Alice)Kab=YaXb mod 353=40233=160(Bob),Diffie-Hellman密钥交换的攻击,中间人攻击指攻击者位于通信放A和B之间,中间人O实时截获并转发A、B之间的通信,A和B之间没有直接的通信。中间人O分别和A、B双方共享不同的会话密钥。,Diffie-Hellman密钥交换的攻击,中间人攻击双方选择素数p以及p的一个原根a(假定O知道)A选择Xap,计算Ya=aXa mod p,A B:YaO截获Ya,选Xo,计算Yo=aXo mod p,冒充A B:YoB选择Xbp,计
23、算Yb=aXb mod p,B A:YbO截获Yb,冒充B A:YoA计算:(Yo)Xa(aXo)XaaXoXa mod pB计算:(Yo)Xb(aXo)XbaXoXb mod pO计算:(Ya)XoaXaXo mod p,(Yb)XoaXbXo mod pO无法计算出aXaXb mod pO永远必须实时截获并冒充转发,否则会被发现,内容提要,公开密钥密码经典算法Diffie-Hellman密钥交换算法背包算法RSA算法EIGamal算法椭圆曲线密码算法ECC,背包问题,背包问题描述:给定重量分别为a1,a2,an的n个物品,装入一个背包中,要求重量等于一个给定值,那么究竟是那些物品?0-1背
24、包问题:给定一个正整数S和一个背包向量A=(a1,an),其中ai是正整数,求满足方程S=aixi 的二进制向量X=(x1,xn)。这是一个NP完全问题,因为对于给定的子集易于验证其和是否为S。然而,找到一个子集使其和为S要困难得多,因为有2n个可能的子集,试验所有子集的时间复杂性为T=O(2n),解决这个问题所需要的时间与n呈指数增长,背包问题expamle,例如,A=(43,129,215,473,903,302,561,1165,697,123,356,666,23,88,99,36),s=3231。由于3231=129+473+903+561+1165所以从A中找出的满足要求的数有12
25、9、473、903、561、1165。原则上讲,通过检查A的所有子集,总可找出问题的解(如果有解的话)。本例A的子集共有216=65536个(包括空集)。然而如果A中元素个数n很大,子集个数2n将非常大。如A中有300个元素,A的子集有2300。寻找满足要求的A的子集没有比穷搜索更好的算法,因此背包问题是NP完全问题。,背包问题用于公钥密码学,做法:明文为X=(x1,xn),S为密文加密:S=aixi,解密:求二进制向量X=(x1,xn)奥妙在于有两类背包,一类可以在线性时间内求解,另一类则不能把易解的背包问题修改成难解的背包问题公开密钥使用难解的背包问题私钥使用易解的背包问题,易解的背包问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 公钥密码学 密码学

链接地址:https://www.31ppt.com/p-2779571.html