您好,欢迎访问三七文档
公钥密码13:公钥密码PublicKeyCryptography公钥密码2公钥密码PublicKey公钥密码也被称为”非对称“密码,或“双匙”密码公钥密码体系是近代密码学的产物,由英国政府通信总局(GCHQ(类似于NSA))的密码学者在20世纪60年代末和民间学者在70年代初分别独立提出政府开始没有足够重视,直至民间学者公开研究成果,最终导致密码学的革命公钥密码体制比对称匙密码相对少很多基于特殊的数学结构对称匙密码则可以有很多新思路公钥密码3公钥密码PublicKey两个密钥发送者用接收者的公钥进行加密接收者用自己的私钥来解密基于单向陷门函数(trapdoor,onewayfunction)从一个方向容易计算从反方向很难计算运用“陷门”创建密钥例如:给定p和q,积N=p*q很容易计算;但给定积N,很难找到因子p和q公钥密码4公钥密码学加密假设我们用Bob的公钥对信息M加密解密只有通过Bob的私钥才能解密得到信息MBob还可以使用私钥对信息进行签名任何人可以通过公钥解密这个信息只要私钥拥有者能进行签名如同手工签名公钥密码5背包密码(Knapsack)最早提出的公钥密码体制公钥密码6背包(Knapsack)密码给定一组n个重量W0,W1,...,Wn-1和一个总重量S,能否找到一组系数ai{0,1}满足S=a0W0+a1W1+...+an-1Wn-1(也称其为“子集-和”问题)实例重量(62,93,26,52,166,48,91,141)问题:找到系数满足S=302答案:62+26+166+48=302此处系数为(10101100)已证明一般knapsack问题是NP-完全问题(非常难解)公钥密码7背包(Knapsack)问题一般背包问题(GK)很难解决但超递增背包问题(super-increasingknapsack)(SIK)很容易解决SIK要求重量递增排列且每个重量比前面所有重量和还大实例重量(2,3,7,14,30,57,120,251)问题:找出子集满足和=186从大到小逐步推算…答案:120+57+7+2=186系数为(1,0,1,0,0,1,1,0)公钥密码8背包密码系统1.创建一个超级递增背包(SIK)2.将超级背包转换成“普通”背包(GK)3.公钥:普通背包问题4.私钥:超级递增背包加转换因子很容易用普通背包(GK)加密很容易用私钥解密(将密文转换成SIK)在没有私钥的情况下,必须解决普通背包问题?(非常困难)公钥密码9背包密码系统实例假设(2,3,7,14,30,57,120,251)是超级递增背包选择m=41、n=491。这里m,n互素并且n大于背包各元素之和则普通背包产生方式:241mod491=82341mod491=123741mod491=2871441mod491=833041mod491=2485741mod491=37312041mod491=1025141mod491=471普通背包:(82,123,287,83,248,373,10,471)公钥密码10背包密码系统实例私钥:(2,3,7,14,30,57,120,251)及12(m1modn称为m的模逆)m1modn=411mod491=12(491+1=492/12=41)公钥:(82,123,287,83,248,373,10,471),n=491实例:加密明文1001011082+83+373+10=548(密文)解密,(548·12)mod491=6576%491=1936576=491*13+193用私钥(2,3,7,14,30,57,120,251)解193得到明文10010110(2+14+57+120=193)公钥密码11背包密码系统实例分析如果没有私钥[(2,3,7,14,30,57,120,251),12]攻击者必须找到公钥(82,123,287,83,248,373,10,471)里的某个子集满足元素之和为491变成了普通背包问题,非常难解将超递增背包通过模运算转换为普通背包就是陷门,没有私钥的情况下将很难解密公钥密码12背包密码系统分析陷门:通过模运算将超级超递增背包转换为一般递增背包单向:一般背包容易用来加密,难解密;超递增则容易解密这种背包密码系统是不安全的在1983被苹果II电脑破解攻击采用的是格约简(latticereduction)技术“普通背包”并不够‘简单’!这种特殊的背包很容易破解!现在很多背包密码的变形是安全的,但已很少应用公钥密码13RSA密码技术公钥密码14RSA密码最早由CliffCocks提出,后来被Rivest,ShamirandAdleman(MIT)独立发明其设计原理是基于因子分解的困难性虽不如“货担郎”问题困难虽未被证明是NP完全问题仍然是一种数学上非常难解的问题公钥密码15RSA密码设p和q是两个大素数设N=p*q选择e与(p1)(q1)互为素数找到合适的d满足(e*d)%(p1)(q1)=1公钥是(N,e)私钥是d公钥密码16RSA密码对信息M加密C=Me%N对密文C解密M=Cd%N回忆e和N是公开的如果攻击者能找到N,那么他很容易用e找到d因为e*d%(p1)(q1)=1因子分解可以破解RSA密码目前尚未明确是否只有因子分解可以破解RSA公钥密码17简单RSA密码实例RSA实例选择两个素数p=11,q=3那么N=p*q=33并且(p1)*(q1)=20选择e=3(与20互为素数)选择满足(e*d)%20=1,找到d=7满足公钥:(N,e)=(33,3)私钥:d=7公钥密码18简单RSA密码实例公钥:(N,e)=(33,3)私钥:d=7假设需加密信息M=8密文C的计算方法如下C=Me%N=83%33=512%33=17将C解密恢复明文的算法如下M=Cd%N=177%33=410,338,673%33=(12,434,50533+8)%33=8公钥密码19Diffie-Hellman算法公钥密码20Diffie-Hellman算法被D(Diffie)andH(Hellman)提出“密钥交换”算法用来创建一套‘共享’的对称密钥它并不用来加密或者签名算法的难度建立在离散对数问题(discretelog)上:给定g,p,以及x=gk%p很难找到k公钥密码21Diffie-Hellman算法算法的难度建立在离散对数问题(discretelog)上:给定g,p,以及x=gk%p很难找到k于对数问题相似,不同的是进行离散对数运算为被证实是NP完全问题,但与因子分解一样非常困难公钥密码22Diffie-Hellman算法设p是素数,g是生成元(generator)对任意x{1,2,…,p-1}我们能找到n满足x=gn%pAlice选择一个秘密的a值Bob选择一个秘密的b值Alice将ga%p发送给BobBob将gb%p发送给Alice两人的电脑共享秘密的gab%p共享的秘密可被用作对称密钥(公钥)公钥密码23Diffie-Hellman算法假设Bob和Alice使用gab%p作为对称密钥Trudy可以获得ga%p和gb%p注意(ga*gb)%p=ga+b%pgab%p如果Trudy能找到a或b,整个系统就被破译了如果Trudy能解离散对数问题,那么她能够找到a或b公钥密码24Diffie-Hellman算法公钥:gandp密钥:Alice的指数a,Bob的指数bAlice,aBob,bga%pgb%pAlice计算(gb)a=gb*a=ga*b%pBob计算(ga)b=ga*b%p可以利用K=gab%p作为共有(对称)密钥公钥密码25Diffie-Hellman算法弱点会遭受中级人(MiM)攻击(一种主动攻击)Alice,aBob,bgamodpgbmodpTrudy,tgtmodpgtmodpTrudy和Alice共享密钥gat%pTrudy和Bob共享密钥gbt%pAlice和Bob不知道Trudy的存在!公钥密码26Diffie-Hellman算法分析如何防止‘中间人’攻击?用对称密钥加密DH交换用公钥加密DH交换使用私钥签名DH交换使用Diffie-Hellman时必须重视‘中间人’攻击公钥密码27作业假设Bob的背包密码私钥是(3,5,10,23)和m-1=6,模数n=47。对密文C=20求出明文,以二进制表示。对密文C=29求出明文,以二进制表示。求出m和公钥。Alice的RSA公钥是(N,e)=(33,3),私钥d=7.如果Bob加密消息M=19发送给Alice,密文C是什么,展示Alice如何将密文解密。
本文标题:3_公钥密码
链接地址:https://www.777doc.com/doc-3263307 .html