《信息安全工程》课件第5章_第1页
《信息安全工程》课件第5章_第2页
《信息安全工程》课件第5章_第3页
《信息安全工程》课件第5章_第4页
《信息安全工程》课件第5章_第5页
已阅读5页,还剩158页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章公钥密码算法5.1公钥密码技术5.2单向陷门函数5.3

Diffie-Hellman密钥交换协议5.4

RSA算法5.5

ElGamal算法5.6

Rabin算法和Williams算法5.7

NTRU算法5.8椭圆曲线密码体制(ECC)5.9

1∶n公钥体制5.10

(t,n)秘密共享体制

5.1.1公钥密码算法的基本原理

尽管对称密码技术有一些很好的特性,但它也存在着明显的缺陷,主要在于其密钥的管理。

(1)进行安全通信前需要以安全方式进行密钥交换。这一步骤在某些情况下是可行的,但在某些情况下会变得非常困难,甚至无法实现。5.1公钥密码技术

(2)密钥规模复杂。例如,A与B两人之间的密钥必须不同于A和C两人之间的密钥,否则A给B的消息的安全性就会受到威胁。在10000个用户的团体中,A需要保持至少9999个密钥(更确切地说是10000个,如果他需要留一个密钥给自己加密数据)。对于该团体中的其他用户,此种情况同样存在。这样,这个团体一共需要将近5000万个不同的密钥!推而广之,n个用户的团体需要n2/2个不同的密钥。公钥密码算法是指加密和解密数据使用两个不同的密钥,即加密和解密的密钥是不对称的,这种密码系统也称为公钥密码系统(PKC,PublicKeyCryptosystem)。公钥密码学的概念首先是由Diffie和Hellman两人在1976年发表的一篇著名论文《密码学的新方向》中提出的,并引起了很大的轰动。该论文曾获得IEEE信息论学会的最佳论文奖。

与对称密码算法不同的是,公钥密码算法将随机产生两个密钥:一个用于加密明文,其密钥是公开的,称为公钥;另一个用来解密密文,其密钥是秘密的,称为私钥。图5.1.1表示了公钥密码算法的基本原理。图5.1.1公钥密码算法的基本原理如果两个人使用公钥密码算法传输机密信息,则发送者首先要获得接收者的公钥,并使用接收者的公钥加密原文,然后将密文传输给接收者。接收者使用自己的私钥才能解密密文。由于加密密钥是公开的,不需要建立额外的安全信道来分发密钥,而解密密钥是由用户自己保管的,与对方无关,因而避免了在对称密码系统中容易产生的任何一方单方面密钥泄露问题以及分发密钥时的不安全因素和额外的开销。公钥密码算法的特点是安全性高,密钥易于管理;缺点是计算量大,加密和解密速度慢。因此,公钥密码算法比较适合于加密短信息。在实际应用中,通常采用由公钥密码算法和对称密码算法构成的混合密码系统,以发挥各自的优势。使用对称密码算法来加密数据,加密速度快;使用公钥密码算法来加密对称密码算法的密钥,可形成高安全性的密钥分发信道,同时还可以用来实现数字签名和身份验证机制。5.1.2基本概念

公钥密码算法要求从公钥很难推断出私钥。持有公钥的任何人都可以加密消息,但无法解密,只有持有私钥的人才能够解密。

公钥加/解密的基本步骤如图5.1.2所示。图5.1.2公钥加/解密的基本步骤一般情况下,网络中的用户约定一个共同的公开密钥密码系统,每个用户都有自己的公钥和私钥,并且所有的公钥都保存在某个公开的数据库中,任何用户都可以访问此数据库。因此,加密协议如下:

(1)Alice从公开数据库中取出Bob的公开密钥;

(2)Alice用Bob的公开密钥加密她的消息,然后传送给Bob;

(3)Bob用他的私钥解密Alice的消息。

5.1.3公钥的优点

从以上介绍中可以看出,与对称密码技术相比较,利用非对称密码技术进行安全通信有以下优点:

(1)通信双方事先不需要通过保密信道交换密钥。

(2)密钥持有量大大减少。在n个用户的团体中进行通信时,每一用户只需要持有自己的私钥,而公钥可放置在公共数据库上,供其他用户取用。这样,整个团体仅需拥有n对密钥,就可以满足相互之间进行安全通信的需求。实际中,因安全方面的考虑,每一用户可能持有多个密钥,分别用于数字签名、加密等。事实上这也是必须的,对于同一个公、私钥对,不能既用于签名,又用于加密,这也是目前本领域所公认的一个原则。此种情况下,整个团体拥有的密钥对数为n的倍数。但即使如此,与使用对称密码技术时需要n2/2个不同的密钥相比,需要管理的密钥数量仍有显著减少。

(3)非对称密码技术还提供了对称密码技术无法或很难提供的服务。例如,与杂凑函数联合运用可生成数字签名。5.1.4基本服务

公钥算法的基本服务包括以下内容:

(1)加密/解密:发送方可以用接收方的公钥加密消息。

(2)数字签名:发送方用其私钥“签署”消息,通过对消息或作为消息函数的小块数据应用加密算法来进行签署。

(3)密钥交换:两方通过互相合作可以进行会话密钥的交换。

5.1.5理论基础

一个公开密钥密码系统必须满足的条件如下:

(1)通信双方A和B容易通过计算产生出一对密钥(公开密钥k1和私有密钥k2)。

(2)在知道公钥k1和待加密报文m的情况下,对于发送方A,很容易通过计算产生对应的密文:c=Ek1(m)。

(3)接收方B使用私钥能够很容易地对所接收到的密文进行解密计算以恢复原来的报文: 。 5.2单向陷门函数

5.2.2单向陷门函数的定义

单向函数是求逆困难的函数,而单向陷门函数(TrapdoorOne-WayFunction)是在不知陷门信息的情况下求逆困难的函数,当知道陷门信息后,求逆是易于实现的。这是Diffie和Hellman于1976年引入的有用概念。

号码锁在不知预设号码时很难开启,但若知道所设号码则容易开启。太平门从里面向外出容易,若无钥匙则反向难进。但如何给陷门单向函数下定义则很棘手,因为:

(1)陷门函数其实就不是单向函数。这是因为单向函数在任何条件下求逆都是困难的。

(2)陷门可能不止一个,通过试验,一个个陷门就可容易地找到逆。如果陷门信息的保密性不强,那么求逆也就不难。(5.2.3)(5-2-4)而且在给定z后容易找到一种算法Fz(称其为可用消息集鉴别函数),对所有x∈A,易于检验是否 ,Az是可用的明文集。

(3)对任一z,集Az必须是保密系统的明文集中的一个“方便”集,即便于实现明文到它的映射(在PKC中是默认的条件)。Diffie和Hellman定义的陷门函数中,Az=A,对所有z成立,而实际中Az取决于Z。5.2.3公钥系统

在一个公钥系统中,所有用户共同选定一个单向陷门函数、加密运算E及可用消息集鉴别函数F。用户i从陷门集中选定zi,并公开Ezi和Fzi。任一向用户i发送机密消息者,可用Fzi检验消息x是否在许用明文之中,而后送y=Ezi(x)给用户x即可。

在仅知y、Ezi和Fzi的情况下,任一用户都不能得到x。但用户i利用陷门信息zi,易于得到Dzi(y)=x。(5.2.5)成立,则称F为可换单向函数。

RSA问题是FAC问题的一个特例。n是两个素数p和q之积,给定n后求素因子p和q的问题称为RSAP。求n=p·q的分解问题有以下几种形式:

(1)分解整数n为p和q;

(2)给定整数M和C,求d使Cd≡Mmodn;

(3)给定整数e和C,求M使Me≡Cmodn;

(4)给定整数x和C,决定是否存在整数y使x≡y2modn(二次剩余问题)。5.3

Diffie-Hellman密钥交换协议

5.3.1历史背景

对于对称密码系统,在进行保密通信之前,必须向通信双方分别递送一个密钥。在公钥密码体制出现之前,通信双方建立共享密钥一直是一个比较困难的问题,这是因为这个过程需要一条安全的信道,通常这样的信道意味着要由专门的信使以物理方式传送。与对称密码体制相比,公钥密码体制的一个显著优点就是远程通信各方无需安全信道就能实现相互交换密钥。

W.Diffie与M.Hellman在1976年提出了一个奇妙的密钥交换协议,称为DH密钥交换协议/算法(DHKeyExchange/AgreementAlgorithm)。这个机制的巧妙之处在于需要安全通信的双方可以用这个方法确定对称密钥,然后用这个密钥进行加密和解密。但需注意,这个密钥交换协议/算法只能用于密钥的协商,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法来加密和解密消息。此算法是最早的公钥算法。它实质上是一个通信双方进行密钥协定的协议:两个实体中的任何一个使用自己的私钥和另一实体的公钥,得到一个对称密钥,其他实体都计算不出这一对称密钥。DH算法的安全性基于有限域上计算离散对数的困难性。离散对数的研究现状表明,所使用的DH密钥至少需要1024位,才能保证有足够的中、长期安全。系统范围内的所有用户可以共用公开参数p和g。

由协议5.3.1不难看出,对于Alice:对于Bob:我们注意到由于,这样双方计算得到的值是相同的。这就是DH密钥交换协议在通信双方之间实现了一个共享密钥的原因。

5.3.3算法说明在执行和应用DH密钥交换协议的时候,我们应该注意如下细节:

(1)共同的输入p应该为一个素数(或素数的幂),满足p-1有足够大的素因子p′,这里“足够大”意味着p′>2160。

(2)共同的输入g不必是F*p的生成元,但g应该是F*p中高阶子群的一个生成元。例如,阶为p′的子群,则p′也应该是这个协议共同输入的一部分。

(3)Alice(Bob)应该验证gb≡1(modp)(ga≡1(modp))。对于他们各自取自(1,p′)中的指数,这个验证将确保共享的密钥gab是Fp的p′阶子群中的一个元素,也就是说,是一个高阶子群中的一个元素。

(4)在这个协议结束之后,Alice(Bob)应该立即删除她的指数a(他的指数b)。这样在通信结束后,如果他们都正确地处理了交换密钥gab,那么对于这个交换密钥,他们将会拥有前向保密的性质。5.3.4安全性分析

应该注意,DH密钥交换协议不支持对协商密钥的认证功能。处于Alice和Bob通信中间的主动攻击者能够操纵这个协议的消息以实现成功攻击,称为中间人攻击(Man-in-the-middleAttack)。攻击5.3.1说明了这种攻击。

攻击5.3.1

对DH密钥交换协议的中间人攻击(见图5.3.1):

共同输入:同协议5.3.1。图5.3.1中间人攻击过程

类似地,Malice可以伪装成Bob,并同Alice协商另一个密钥。以上两个过程完成之后,Malice用这两个密钥就可以在Alice和Bob之间阅读或转发“保密”通信,或者对于其中一方,伪装另一方。

由于这个协议没有提供对协议消息源的认证服务,对Diffie-Hellman密钥交换协议的中间人攻击是可能的。为了协商一个仅由Alice和Bob专门共享的密钥,在协议的运行过程当中,参与者必须确定收到的消息的确来自目标参与者。关于参与者身份认证问题,我们在后面章节进行讲述。

5.3.5

DH协议应用的典型案例

DH协议应用的典型实例是在中国无线局域网安全标准WAPI中采用DH密钥交换协议来实现接入点AP和终端STA之间的密钥协商,即在实现STA和AP认证的同时,产生它们共享的基密钥BK。BK可以用来进一步协商通信过程中的会话密钥等。图5.3.2为STA和AP的认证过程,其中AS表示后台认证服务器。图5.3.2

STA和AP的认证过程图5.3.3

STA和AP认证过程的具体实现 5.4

RSA算法

5.4.1历史背景

MIT三位年轻数学家R.L.Rivest、A.Shamir和L.Adleman于1978年和1979年发现了一种用数论构造双钥的方法,称做MIT算法,后来被广泛称为RSA算法。该算法既可用于加密,又可用于数字签字,易懂且易于实现,是目前仍然安全并且逐步被广泛应用的一种算法。国际上一些标准化组织如ISO、ITU及SWIFT等均已接受RSA算法作为标准。在Internet中所采用的PGP(PrettyGoodPrivacy)中也将RSA作为传送会话密钥和数字签字的标准算法。

5.4.2算法描述

系统参数:独立地选取两个大素数p1和p2(各为100~200位十进制数字),计算:(5.4.1)其欧拉函数值:(5.4.2)随机选一整数e,1<e<φ(n),(φ(n),e)=1。因而在模φ(n)下,e有逆元,即(5.4.3)取公钥为n、e,秘密钥为d。(p1、p2不再需要,可以销毁。)加密:用x和y分别表示明文和密文,则(5.4.4)解密:(5.4.5)

5.4.3算法说明

RSA加密实质上是一种Zn→Zn上的单表代换,给定n=p1·p2和合法明文x∈Zn,其相应密文y=xemodn∈Zn。对于x≠x′,必有y≠y′。Zn中的任一元素(0、p1、p2除外)是一个明文,但它也是与某个明文相对应的一个密文。因此,RSA是Zn→Zn的一种单表代换密码,其关键在于n极大且不知陷门信息的情况下极难确定这种对应关系,而用模指数算法又易于实现一种给定的代换。正是由于这种一一对应性使RSA不仅可以用于加密,也可以用于数字签名。5.4.4

RSA实现方法

RSA有硬件和软件两种实现方法。不论何种实现方法,RSA的速度总是比DES慢得多(其实任何公钥运算的复杂度都大于私钥运算)。因为RSA的计算量要大于DES,所以在加密和解密时需要做大量的模数乘法运算。例如,RSA在加密或解密一个200位十进制数时大约需要做1000次模数乘法运算,因此提高模数乘法运算的速度是解决RSA效率的关键所在。

硬件实现方法采用专用的RSA芯片,以提高RSA的加密和解密速度。生产RSA芯片的公司有很多,如AT&T、Alpha、英国电信、CNET、Cylink等。同样使用硬件实现时,DES比RSA快大约1000倍。软件实现方法的速度要更慢一些,与计算机的处理能力和速度有关。同样使用软件实现时,DES比RSA快大约100倍。表5.4.1为多年前在SPARCⅡ工作站上测试RSA软件实现的处理速度实例,该数据现在可能已经没有参考价值,这里主要借用它来说明各种操作之间的运算速度快慢。表5.4.1

RSA软件实现的处理速度实例(在SPARCⅡ工作站上)5.4.5

RSA的安全性

在RSA问世后的30多年中,有很多密码专家和研究机构对RSA进行了大量的研究和分析,迄今为止还未找到破译RSA的有效方法。这就是我们现在还可以放心使用RSA的原因。

对于破译RSA,穷举搜索法并不是有效的方法,通常主要采用分解因子的方法来分解n。因为破译者手中有公钥e和模数n,所以要找到解密密钥d,则必须分解n。分解因子问题是众所周知的数学难题,迄今为止还未找到分解因子的有效算法,这就是RSA算法的安全性基础。然而,RSA在理论上还存在一定的空白点,也就是不能确切地证明它的安全性,破译RSA不会比分解因子问题更困难,并且不排除这种可能性:可以找到一种破译RSA密码的有效算法,但找不到相应分解因子的快速算法。

另外,一些攻击者专门对RSA实现系统进行攻击,它们并不攻击RSA算法本身,而是设法攻击RSA实现上的弱点。根据一些成功的攻击经验,RSA在使用上存在如下限制:

(1)知道了对于一个给定模数的一个加/解密密钥指数对,攻击者就能分解这个模数。

(2)知道了对于一个给定模数的一个加/解密密钥指数对,攻击者无需分解n就能计算出其他的加/解密密钥对。

(3)在网络环境下应用时,基于RSA的网络协议不应当使用公共模数。

(4)消息应当使用随机数填充,以避免对加密指数的攻击。

(5)解密指数应当足够大。

对于一个密码应用系统来说,密码算法、使用密码算法的协议以及使用协议的应用系统都必须是安全的,三者之中的任何一个环节出现弱点都会危及整个系统的安全。因此,RSA实现的细节也是很关键的,应当给予足够的重视。 5.5

ElGamal算法

5.5.1算法描述

系统参数:令Zp是一个有p个元素的有限域,p是一个素数,令g是Z*p(Zp中除去0元素)中的一个本原元或其生成元。明文集M为Z*p,密文集C为Z*p×Z*p。

公钥:选定g(g<p的生成元),计算得公钥(5.5.1)秘密钥:加密:选择随机数k∈Zp-1,且(k,p-1)=1,计算(随机数k被加密)(明文被随机数k和公钥

加密)(5-5-2)(5.5.3)其中,M是发送明文组。密文由上述两部分y1、y2级联构成,即密文组C=y1‖y2。特点:密文由明文和所选随机数k来确定,因而是非确定性加密,一般称为随机化(Randomized)加密;对同一明文,由于不同时刻的随机数k不同,因而给出不同的密文,代价是使数据扩展一倍。解密:收到密文组C后,计算得(5.5.4)5.5.2安全性

ElGamal算法基于Z*p中有限群上离散对数的困难性。Haber和Lenstra曾指出,modp生成的离散对数密码可能存在有陷门,有些“弱”素数p下的离散对数较容易求解。但Gordon已于1992年证明,不难发现这类陷门,从而可以避免选用这类素数。

此外,McCurely将ElGamal方案推广到Zkn上的单元群,并证明其破译难度至少相当于分解n,破译者即使知道了n的分解,也还要解决模n的因子的Diffie-Hellman问题。

可见,ElGamal算法的安全性是得到认可的,如果工程问题需要随机加密,则ElGamal算法是一个不错的选择。 5.6

Rabin算法和Williams算法

5.6.1

Rabin算法

1979年Rabin利用合数模下求解平方根的困难性构造了一种安全公钥算法,即令p和q是两个素数,在模4下与3同余,以n=p·q为公钥。

加密:设m为待加密消息,计算密文(5.6.1)解密:计算

其中必有一个与m相同,若m是文字消息,则易于识别;若m是随机数字流,则无法确定哪一个mi是正确的消息。安全性:等价于分解大整数。

5.7

NTRU算法称为多项式模运算。

3.解密

Bob计算:

Bob继续计算:

例5.7.1:取参数N=11,P=32,q=3,df=4,dg=3,dr=3。

根据df、dg

值随机选择满足互逆的两个多项式f、g:

f=(1,l,1,0,-l,0,l,0,0,l,-1)

g=(1,0,1,0,1,0,0,1,0,0,1)

求出:

h=(5,9,23,30,2l,22,7,29,26,23,0)

设Bob的公开密钥为h,一对私人密钥为(f,g)。

Alice要发送信息给Bob时,先根据值随机选择一个多项式r:

r=(1,0,1,1,0,1,0,-1,0,0,-1)

设Alice要发送的明文多项式m为:

m=(1,0,1,1,l,0,0,l,l,0,1)

Alice使用Bob的公开密钥h对m进行加密得到密文e:

e=(18,l6,8,0,24,22,28,2l,8,3l,23)

Bob收到Alice的密文e后,用自己的私人密钥分别对e进行解密得:

a=(6,-3,-4,5,-6,4,2,-15,4,7,-7)

b=(0,0,-l,-l,0,l,-l,0,l,l,-1)

c=(1,0,1,1,1,0,0,1,1.0,1)

c就是Alice发送给Bob的明文m。5.7.3安全性

NTRU算法的安全性是基于数论中在一个维数非常大的格中寻找一个很短向量的数学难题。就目前来说,NTRU的安全性和目前最有影响的RSA算法、椭圆曲线密码体制ECC等是一样安全的。在相同安全级别的前提下,NTRU算法的速度要比其他公开密钥算法的速度快得多,用Tumbler软件工具包执行NTRU时的速度比RSA快100多倍。用NTRU算法产生密钥的速度也很快,其密钥的比特数较小。NTRU算法的优点意味着可以降低对带宽、处理器、存储器的性能要求,这也扩大了NTRU公开密钥算法的应用范围。5.8.1基本原理

1985年,N.Koblitz和V.Miller分别独立提出了椭圆曲线密码体制(ECC),其依据就是定义在椭圆曲线点群上的离散对数问题的难解性。

为了用椭圆曲线构造密码系统,首先需要找到一个单向陷门函数,椭圆曲线上的数量乘就是这样的单向陷门函数。

椭圆曲线的数量乘是这样定义的:设[WTBX]E为域K上的椭圆曲线,G为E上的一点,这个点被一个正整数k相乘的乘法定义为k个G相加,因而有:kG=G+G+…+G

(共有k个G)5.8椭圆曲线密码体制(ECC)

若存在椭圆曲线上的另一点N≠G,满足方程kG=N,则容易看出,给定k和G,计算N相对容易,而给定N和G,计算k=logGN相对困难。这就是椭圆曲线离散对数问题。

离散对数求解是非常困难的。椭圆曲线离散对数问题比有限域上的离散对数问题更难求解。对于当椭圆曲线上的有理点的数目有大素数因子时的椭圆离散对数问题,目前还没有十分有效的攻击方法。

下面我们详细介绍密码椭圆曲线的基本算法。5.8.2基础知识

1.平行线

我们很早就知道,平行线是永不相交的。不过到了近代这个结论遭到了质疑,平行线会不会在很远很远的地方相交了?事实上没有人见到过,所以“平行线永不相交”只是假设(大家想想初中学习的平行公理,是没有证明的)。既然可以假设平行线永不相交,就可以假设平行线在很远很远的地方相交了,即平行线相交于无穷远点P∞,如图5.8.1所示。图5.8.1平行线在无穷远处相交直线上出现P∞点,所带来的好处是所有的直线都相交了,且只有一个交点。这就把直线的平行与相交统一了。为与无穷远点相区别,把原来平面上的点叫做平常点。

无穷远点具有如下性质。

(1)直线L上的无穷远点只能有一个。

(2)平面上一组相互平行的直线有公共的无穷远点。

(3)平面上任何相交的两直线L1和L2有不同的无穷远点。

(4)平面上的全体无穷远点构成一条无穷远直线。

(5)平面上的全体无穷远点与全体平常点构成射影平面。

2.射影平面坐标系

射影平面坐标系是普通平面直角坐标系(见图5.8.2)的扩展。我们知道,普通平面直角坐标系没有为无穷远点设计坐标,不能表示无穷远点。为了表示无穷远点,于是产生了射影平面坐标系。当然,射影平面坐标系同样能很好地表示旧有的平常点(数学上也是“向下兼容”的)。图5.8.2直角坐标系我们对普通平面直角坐标系上的点A的坐标(x,y)做如下改造:令x=X/Z,y=Y/Z(Z≠0);则A点可以表示为(X:Y:Z)。变成了有三个参量的坐标点,这就对平面上的点建立了一个新的坐标体系。[例5.8.1]求点(1,2)在新的坐标体系下的坐标。

解:∵X/Z=1,Y/Z=2(Z≠0)∴X=Z,Y=2Z∴坐标为(Z:2Z:Z),Z≠0。即(1:2:1)(2:4:2)(1.2:2.4:1.2)等形如(Z:2Z:Z),Z≠0的坐标,都是(1,2)在新的坐标体系下的坐标。

我们也可以得到直线的方程aX+bY+cZ=0。新的坐标体系能够表示无穷远点么?那要让我们先想想无穷远点在哪里。根据平行线的知识,我们知道无穷远点是两条平行直线的交点。那么,如何求两条直线的交点坐标?设平行直线的方程是:aX+bY+c1Z=0;aX+bY+c2Z=0

(c1≠c2)。

求交点的方法是:将两个方程联立,求解。有c2Z=c1Z=-(aX+bY),∵c1≠c2∴Z=0

∴aX+bY=0;所以无穷远点就用这种形式(X:Y:0)表示。注意,平常点Z≠0,无穷远点Z=0,因此无穷远直线对应的方程是Z=0。5.8.3椭圆曲线

5.8.2节建立了射影平面坐标系,本节将在这个坐标系下建立椭圆曲线方程。因为坐标中的曲线是可以用方程来表示的(比如单位圆方程是x2+y2=1),椭圆曲线是曲线,所以椭圆曲线也有方程。

定义5.8.1一条椭圆曲线是在射影平面上满足方程:(5.8.1)的所有点的集合,且曲线上的每个点都是非奇异(或光滑)的。说明:

(1)式(5.8.1)是Weierstrass方程(该方程由KarlTheodorWilhelmWeierstrass提出),它是一个齐次方程。

(2)椭圆曲线的形状并不是椭圆的。只是因为椭圆曲线的描述方程类似于计算一个椭圆周长的方程,故得名。图5.8.3给出了椭圆曲线示意图。图5.8.3椭圆曲线示意图

(3)所谓“非奇异”或“光滑”的,在数学中是指曲线上任意一点的偏导数Fx(x,y,z)、Fy(x,y,z)、Fz(x,y,z)不能同时为0,即满足方程的任意一点都存在切线。图5.8.4中的两个方程都不是椭圆曲线,尽管它们是方程式(5.8.1)的形式,因为它们在(0∶0∶1)点处(即原点)没有切线。图5.8.4非椭圆曲线

(4)椭圆曲线上有一个无穷远点O∞(0∶1∶0),因为这个点满足方程式(5.8.1)。

知道了椭圆曲线上的无穷远点,我们就可以把椭圆曲线放到普通平面直角坐标系上。因为普通平面直角坐标系只比射影平面坐标系少无穷远点,所以在普通平面直角坐标系上,求出椭圆曲线上所有平常点组成的曲线方程,再加上无穷远点O∞(0∶1∶0),就构成了椭圆曲线。

设x=X/Z,y=Y/Z,代入方程(5.8.1)得到:y2+a1xy+a3y=x3+a2x2+a4x+a6(5.8.2)也就是说,满足方程(5.8.2)的光滑曲线加上一个无穷远点O∞,就组成了椭圆曲线。5.8.4椭圆曲线上的加法

5.8.3节中,我们已经看到了椭圆曲线的图像,但点与点之间好像没有什么联系,那么能不能建立一个类似于实数轴上加法的运算法则呢?天才的数学家找到了这一运算法则。自从近世纪代数学引入了群、环、域的概念,就使得代数运算达到了高度的统一。比如,数学家总结了普通加法的主要特征,提出了加群(也叫交换群或Abel(阿贝尔)群)。在加群的眼中,实数的加法和椭圆曲线上的加法没有什么区别。关于群以及加群的具体概念请参考第3章的内容。

运算法则:任意取椭圆曲线上的两点P、Q作直线(若P、Q两点重合,则作P点的切线)交于椭圆曲线的另一点R′,过R′作y轴的平行线交于R。我们规定P+Q=R,如图5.8.5所示。图5.8.5加法示意图说明:

(1)这里的“+”不是实数中普通的加法,而是从普通加法中抽象出来的加法,它具备普通加法的一些性质,但具体的运算法则显然与普通加法不同。

(2)根据这个法则可以知道,椭圆曲线的无穷远点O∞与椭圆曲线上一点P的连线交于P′,过P′作y轴的平行线交于P,所以有O∞+P=P。这样,无穷远点O∞的作用与普通加法中零的作用相当(0+2=2),我们把无穷远点O∞称为零元,同时把P′称为P的负元(简称为负P,记做-P),如图5.8.6所示。图5.8.6负点示意图

(3)根据这个法则可以得到如下结论:如果椭圆曲线上的三个点A、B、C处于同一条直线上,那么它们的和等于零元,即A+B+C=O∞。

(4)k个相同的点P相加,我们记做kP,如图5.8.7中,P+P+P=2P+P=3P。

(5)椭圆曲线不一定是关于x轴对称的,如图5.8.8中,y2-xy=x3+1。图5.8.7多点相加示意图图5.8.8特殊曲线

5.8.5密码学中的椭圆曲线

我们现在基本上对椭圆曲线有了初步的认识。但是,前面看到的椭圆曲线都是连续的,并不适合用于加密,所以我们必须把椭圆曲线变成离散的点。

椭圆曲线都是连续的,这是因为椭圆曲线上点的坐标是实数,实数是连续的,从而导致了曲线的连续。因此,我们要把椭圆曲线定义在有限域上。图5.8.9

y2=x3+x+1(mod

23)的图像

Fp上的椭圆曲线同样有加法,但已经不能给以几何意义的解释。不过,加法法则和实数域上的差不多,请读者自行对比。

(1)无穷远点O∞是零元,有O∞+O∞=O∞,O∞+P=P;

(2)P(x,y)的负元是(x,-y),有P+(-P)=O∞;

(3)P(x1,y1),Q(x2,y2)的和R(x3,y3)有如下关系:

x3≡k2-x1-x2(modp)

y3≡k(x1-x3)-y1(modp)

其中:若P=Q,则k=(3x2+a)/2y1;若P≠Q,则k=(y2-y1)/(x2-x1)。

例5.8.4

已知E23(1,1)上两点P(3,10),Q(9,7),求1)-P,2)P+Q,3)2P。

(1)

–P的值为(3,-10)

(2)

k=(7-10)/(9-3)=-1/2,2的乘法逆元为12。因为2*12≡1(mod23)

k≡-1*12(mod23)故

k=11。

x=112-3-9=109≡17(mod23);

y=11[3-(-6)]-10=89≡20(mod23)

故P+Q的坐标为(17,20)(3)故2P的坐标为(7,12)

5.8.6简单的加密/解密

公开密钥算法总是基于一个数学上的难题而提出的。比如RSA依据的是:给定两个素数p、q,很容易相乘得到n,而对n进行因式分解却相对困难。椭圆曲线上有什么难题呢?考虑如下等式:K=kG其中,K、G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数。不难发现,给定k和G,根据加法法则,计算K很容易,但给定K和G,求k就相对困难了。这就是椭圆曲线密码体制依据的难题。我们把点G称为基点(BasePoint),k(k<n,n为基点G的阶)称为私有密钥(PrivateKey),K称为公开密钥(PublicKey)。

现在我们描述一个利用椭圆曲线进行加密通信的过程:

1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。

2、用户A选择一个私有密钥k,并生成公开密钥K=kG。

3、用户A将Ep(a,b)和点K,G传给用户B。

4、用户B接到信息后,将待传输的明文编码到Ep(a,b)上一点M(编码方法很多,这里不作讨论),并产生一个随机整数r(r<n)。

5、用户B计算点C1=M+rK;C2=rG。

6、用户B将C1、C2传给用户A。

7、用户A接到信息后,计算C1-kC2,结果就是点M。因为

C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M

再对点M进行解码就可以得到明文。图5.8.10

ECC加密通信模型密码学中,描述一条Fp上的椭圆曲线,常用到六个参量,即六元组T=(p,a,b,G,n,h)。其中:p、a和b用来确定一条椭圆曲线;G为基点;n为点G的阶;h是椭圆曲线上所有点的个数m与n相除的整数部分。这几个参量取值的选择会直接影响加密的安全性。参量值一般要求满足以下几个条件:

(1)p当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般的安全要求。

(2)p≠n×h。

(3)pt≠1(mod

n),1≤t<20。

(4)4a3+27b2≠0(mod

p)。

(5)n为素数。

(6)h≤4。5.8.7

ECC与RSA的比较

与RSA相比,ECC在许多方面都有绝对优势,主要体现在以下方面:

(1)抗攻击性强。相同的密钥长度,其抗攻击性要比RSA强很多倍。

(2)计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。

(3)存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,这意味着它所占的存储空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。

(4)带宽要求低。当对长消息进行加/解密时,RSA、DSA和ECC有相同的带宽要求,但应用于短消息时ECC的带宽要求却低得多。带宽要求低使得ECC在无线网络领域具有广泛的应用前景,例如ECC已被用于WAPI协议。

ECC的这些特点使它必将能够取代RSA,成为通用的公钥加密算法。例如,SET协议的制定者已把它作为下一代SET协议中缺省的公钥密码算法。

表5.8.1和表5.8.2所示为RSA和ECC的安全性和速度的比较。表5.8.1

RSA和ECC安全性的比较 5.9

1∶n公钥体制

5.9.1历史背景

众所周知,广播通信具有很多优点:①可以提高通信效率,实现点对多点通信;②相对来说节约能量,适合如无线传感器网络(WSN)等能量敏感的网络;③适合无反向信道的通信系统。因此,广播一直以来都受到人们的重视,而如何实现安全广播已成为当前的研究热点之一,也是无线局域网(WLAN)、无线城域网(WMAN)、WSN等多种形式的无线网络和有线网络中尚未妥善解决的主要问题之一。例如,在WLAN的安全解决方案IEEE802.11(i)或中国的WAPI协议中,广播/组播密钥(B_K)都是由接入点(AP)使用其与各移动终端(STA)共享的单播会话密钥(U_K)来加密发送的,效率非常低。下面我们以WAPI为例来说明这个问题,见图5.9.1。图5.9.1

WAPI的组播/广播密钥分发过程这里,假设有n个STAi(i=1,…,n),每个STAi与AP都共享一个单播会话加密密钥,记为ski(i=1,…,n)。AP为了分发一个广播/组播密钥B_K,需要使用每一个密钥ski加密B_K,并将加密后的密文发送给相应的STAi。由于AP加密次数多,对一个STA就要加密一次,因此AP计算量大。很显然,这种方案的效率和实时性随着STA数目的增加而降低,难以满足实际应用需求。

IEEE802.11(i)和WAPI的安全广播在性能上存在一些缺陷。为此,我们提出一种新的设计思想:

(1)以每个STA的单播密钥为组播/广播解密私钥。

(2)AP可以任意选取一个组播/广播加密私钥。

(3)AP利用广播加密私钥加密组播/广播密钥,并将密文广播给所有STA。

(4)每一个STA可以利用自己的单播密钥解密出相同的组播/广播密钥。这种思想的好处是:广播密钥的分发可以利用广播信道,只需一次广播即可,无需逐一加密分发;更新和分发过程均为一次广播。

如果能有一种加密方案,发送者只加密一次,而每个接收者都可以使用自己独有的解密私钥进行解密,得到同样的明文信息,那么就能有效地实现上述设计思想。这样的加密方法的特征是具有一个加密者和多个接收者的公钥加密方案,即我们所说的1∶n公钥体制。该体制最早是由Baudron、Bellare等人分别提出的,他们的方案均是对现有公钥体制的扩展。5.9.2基于分组算法的1∶n公钥体制

定义5.9.1设(G1,+)和(G2,·)为两个阶数均为素数p的循环群,其中前者为加法群,后者为乘法群,令p为G1的生成元,称变换e:G1×G1→G2为双线性变换。双线性变换满足下面的性质:

(1)双线性:对任意P1、P2和Q∈G1,有e(P1+P2,Q)=e(P1,Q)e(P2,Q)及e(Q,P1+P2)=e(Q,P1)e(Q,P2)成立。

(2)非退化性:存在P∈G1,即e(P,P)≠1,也就是说e(P,P)是G2的生成元。

(3)可计算性:对任意P1、P2∈G1,存在有效的算法计算e(P1,P2)。很显然,在本节方案中,消息m的保密性和完整性分别通过对称加密算法和钥控Hash函数实现。因为我们假设所选的对称加密算法和钥控Hash函数在密码学上是安全的,所以,整个系统的安全性取决于密钥k的安全性,而密钥k如何在接收者中进行安全分发以及能否正确进行恢复是方案正确性的关键。这里,接收者在解密过程的第(2)步所计算的密钥k′恒等于加密过程中所使用的密钥k。关于这一点,我们可以通过下面的定理来说明。

定理5.9.1在解密过程的第(2)步所计算的密钥k′满足k′≡k,其中k为加密过程中所使用的对称密钥。

证明:

5.9.3基于Hash函数的1∶n公钥体制

1.系统参数

设(G1,+)和(G2,·)为两个阶均为p的循环群,其中p为素数,P为G1的生成元,e:G1×G1→G2为G1和G2上的双线性变换。

首先,发送者S随机选取一个正整数m(m为后面所用多项式次数),并在中随机选择m+n个不同的元素,构成向量 和整数vm+j(j=1,2,...,n).接着,S随机选取自己的加密主密钥 ,并计算QS=SSP

G1.随后,S随机选择两个元素Q1,Q2

G1以及一个m次多项式f(x)

Zp[x]满足f(0)=SS,并计算如下信息:(5.9.4)(5.9.5)(5.9.7)(5.9.8)

5.10

(t,n)秘密共享体制

5.10.1历史背景

在当今信息化时代,信息安全问题日趋突出,信息泄密、网络犯罪以及系统入侵等案件数目也日益上升,如何堵住网络的安全漏洞、消除安全隐患以及对重要或敏感信息进行保护已受到学术界乃至全社会的高度关注。

密码学为解决信息安全问题提供了许多实用技术。比如在保密通信中,为了实现信息的安全保密,可以采用加密的手段来保护信息,但是,仅仅通过加密技术还不足以完全保护信息安全。一方面,由于加密的核心问题是密钥的安全保密,而密钥的安全性要求远比一般数据高,仅通过加密技术很难达到其安全保密要求。密钥的管理直接影响着通信系统的安全,而如何有效地管理密钥也是目前密码学中十分重要的课题。另外,数据在传输和存储过程中很容易遭到毁坏、改变或丢失,当这种情况发生时,即使拥有正确解密密钥的合法用户也会一筹莫展,数据并不像人们通常所认为的那样可靠。比如软磁盘就非常容易受损,目前一般的软磁盘还都不能用来保存超过十年的数据。事实上,纸质存储的数据往往可以保存上百年,甚至更长时间。再者,即使加密过的信息也不能保证总是安全的,比如智能卡(SmartCard)就可能会被别有用心的人盗走,它所存储的秘密数据可以通过反向工程或其他分析方法恢复出来。可见,仅仅使用加密、签名、认证等常见密码技术并不能完全解决问题。要解决好信息安全这一问题,必须注意三个方面:保证信息不会丢失,保证信息不被破坏

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论