编码理论(第二版)第12章公钥密码.ppt

第12章 公钥密码 12.1 RSA公钥密码 12.1.1 公钥密码的基本概念   在公钥密码中,加密密钥和解密密钥是不一样的,加密密钥简称公钥(PublicKey),解密密钥简称私钥(PrivateKey)。加密密钥可以公开,解密密钥当然必须保密。   根据加密密钥计算解密密钥的问题是难解的。所谓一个问题是难解的,直观上讲,就是不存在一个计算该问题的有效算法。换句话说,按照目前的计算能力,计算一个难解的问题所需要的时间是非常长的,如100年甚至更长。一般而言,计算一个难解的问题所需要的时间通常是输入数据长度的一个指数函数。因此,对于一个难解的问题,随着输入数据长度的增大,进行计算所需要的时间将会急剧地增加。所谓有效算法,是指可以很快地求得问题的解的算法。对于一个问题,如果存在一个求其解的有效算法,则称这个问题是容易求解的,否则就称其是难解的。到目前为止,还没有能够严格地证明哪一个问题是难解的。但对于某些问题,经过多年来的努力仍然没有找到进行计算的快速而有效的算法的事实,我们便认为这些问题是难解的。对于一个安全的密码体制,进行破译应该是一个难解的问题。公钥密码的理论基础是陷门单向函数。   设f是一个函数,如果对任意给定的x,计算y使得y=f(x)是容易的,但对任意给定的y,计算x使得f(x)=y是难解的,即求f的逆函数是难解的,则称f是一个单向函数(OnewayFunction)。   例如,设f(x)=ax(x,a∈GF(q))。ax是有限域上的指数函数,对任意给定的x,计算ax是容易的,因为已经找到了一个计算ax的快速有效的算法。但对于任意给定的y,计算x使得ax =y却是难解的,因为到目前为止,还没有发现一个计算logay的有效算法。因此,目前认为f(x)=ax是一个单向函数。   设f是一个函数,t是与f有关的一个参数。对任意给定的x,计算y使得y=f(x)是容易的。如果当不知参数t时,计算f的逆函数是难解的,但当知道参数t时,计算f的逆函数是容易的,则称f是一个陷门单向函数(TrapdoorOnewayFunction),参数t称为陷门。   在公钥密码中,加密变换是一个陷门单向函数。知道陷门的人可以容易地进行解密变换,而不知道陷门的人则无法有效地进行解密变换。 对任意明文m∈Zn,当gcd(m,n)=1时,根据Euler定理,有 所以, [例12-1] 设p =17,q=31,明文m=2,设计RSA密码体制,并进行加解密变换。   解: 由公式(12-1)求出密文c: 12.1.3 RSA安全性   RSA公钥密码体制的安全性是基于大整数的素分解问题的难解性。尽管尚未在理论上严格证明因子分解问题一定是难解的,但经过长期的研究,迄今没有找到一个有效算法的事实,使得因子分解问题成为众所周知的难题。这是RSA公钥密码体制建立的基础。   (3)如果密码分析者能够既不对n进行因子分解也不求而直接求得解密密钥d,则他就可以计算ed—l,ed—l是的倍数。利用的倍数可以容易地分解出n的因子。因此,直接计算解密密钥d并不比对n进行因子分解更容易。   随着计算能力的持续增长和因子分解算法的不断完善,为保证RSA的安全性,在实际应用中选取的素数p和q越来越大。现在来看n的长度为1024至2048位是比较合理的。    除了指定n的大小之外,为避免选取容易分解的整数n,研究人员建议对P和q采取如下限制: (1)p和q的长度应该相差不多; (2)p一l相q—1都应该包含大的素因子; (3)gcd(p一1,q一1)应该很小。 12.2 EIGamal公钥密码 12.2.1 EIGamal体制表述及参数计算   EIGamal公钥密码体制是由T.EIGamal于1985年提出的一个安全性能良好的公钥密码体制。EIGamal公钥密码体制的描述如下:   (1)选取大素数p,α∈Z*p是一个本原元。p和α公开。   (2)随机选取整数d,d是保密的解密密钥。1≤d≤p-2,计算公开的加密密钥β   (4) 解密变换:对任意密文 ,明文为   因此,解密变换能正确地从密文恢复相应的明文。   在EIGamal公钥密码体制中,密文依赖于明文m和秘密选取的随机整数k。因此,明文空间中的一个明文对应密文空间中的许多不同的密文。 [例12-2 ] 设p=2579,α=2,d=765,m=1299。设计EIGamal密码体制。 解: 12.2.2 EIGamal安全性   设p是一个素数,α∈Z*p,α是一个本原元,β∈Z*p。已知α和β,求满足: 12.3 椭圆曲线上的公钥密码 12.3.1 有限域上的椭圆曲线   椭圆

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档