本科生必修课现代密码学_第1页
本科生必修课现代密码学_第2页
本科生必修课现代密码学_第3页
本科生必修课现代密码学_第4页
本科生必修课现代密码学_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

1、1/957.1 数字签字的基本概念7.2 数字签字标准7.3 其它签字方案7.4 认证协议7.5 身份证明技术7.6 其它密码协议 本章提要2/957.1 数字签字的基本概念数字签名由公钥密码发展而来,它在网络安全方面具有重要的应用,包括身份认证数据完整性不可否认性匿名性等本章重点学习数字签名的基本概念和一些常用的数字签名算法身份认证协议、身份证明技术3/957.1.1 数字签字应满足的要求普通的基于对称密钥的消息认证方法存在重要缺陷消息认证虽然可以保护通信双方以防第三方的攻击,然而却不能保护通信双方中的一方防止另一方的欺骗或伪造通信双方之间可能有多种形式的欺骗例如通信双方A和B(设A为发方,

2、B为收方)使用消息认证码的基本方式通信,则可能发生以下欺骗: B伪造一个消息并使用与A共享的密钥产生该消息的认证码,然后声称该消息来自于A。 由于B有可能伪造A发来的消息,所以A就可以对自己发过的消息予以否认。数字签名可提供消息的不可否认性4/957.1.1 数字签字应满足的要求这两种欺骗在实际的网络安全应用中都有可能发生例如在电子资金传输中,收方增加收到的资金数,并声称这一数目来自发方。又如用户通过电子邮件向其证券经纪人发送对某笔业务的指令,以后这笔业务赔钱了,用户就可否认曾发送过相应的指令。在收发双方未建立起完全的信任关系且存在利害冲突的情况下,单纯的消息认证就显得不够。数字签名技术则可有

3、效解决这一问题。5/95类似于手书签名,数字签名应具有以下性质: 能够验证签名产生者的身份,以及产生签名的日期和时间 能用于证实被签消息的内容 数字签名可由第三方验证,从而能够解决通信双方的争议由此可见,数字签名具有认证功能6/95为实现上述3条性质,数字签名应满足以下要求: 签名的产生必须使用发方独有的一些信息以防伪造和否认 签名的产生应较为容易 签名的识别和验证应较为容易 对已知的数字签名构造一新的消息或对已知的消息构造一假冒的数字签名在计算上都是不可行的7/957.1.2 数字签名的产生方式数字签名的产生可用加密算法或特定的签名算法1. 由加密算法产生数字签名是指将消息或消息的摘要加密后

4、的密文作为对该消息的数字签名其用法又根据是单钥加密还是公钥加密而有所不同(1) 单钥加密如图:基于共享密钥加解密,密文即为签名如果加密的是消息摘要或有消息冗余,则可提供消息源认证和完整性认证严格来说,不能称为签名,不具备签名的要求 8/95(2) 公钥加密如图1(b)所示,发送方A使用自己的秘密钥SKA对消息M加密后的密文作为对M的数字签名,B使用A的公开钥PKA对消息解密,由于只有A才拥有加密密钥SKA,因此可使B相信自己收到的消息的确来自A。然而由于任何人都可使用A的公开钥解密密文,所以这种方案不提供保密性加密的消息应该是消息摘要或有消息冗余为提供保密性,A可用B的公开钥再一次加密,如图1

5、(c)所示。9/95下面以RSA签名体制为例说明数字签名的产生过程 体制参数选两个保密的大素数p和q,计算n=pq,(n)=(p-1)(q-1)选一整数e,满足1e(n),且gcd(n),e)=1计算d,满足de1 mod (n)以e,n为公开钥,d,p,q为秘密钥 签名过程设消息为M,对其签名为:SM d mod n 验证过程接收方在收到消息M和签名S后,验证MSe mod n是否成立,若成立,则发送方的签名有效实际应用时,数字签名是对消息摘要加密产生,而不是直接对消息加密产生,如图6.3(a)图6.3(d)所示10/95由加密算法产生数字签名又分为外部保密方式和内部保密方式外部保密方式是指

6、数字签名是直接对需要签名的消息生成而不是对已加密的消息生成,否则称为内部保密方式。外部保密也可说是先签名再加密,而后者是先加密再签名外部保密方式便于解决争议,因为第3方在处理争议时,需得到明文消息及其签名如果采用内部保密方式,第3方必须得到消息的解密密钥后才能得到明文消息。如果采用外部保密方式,接收方就可将明文消息及其数字签名存储下来以备以后万一出现争议时使用 11/952. 由签名算法产生数字签名签名算法的输入是明文消息M和密钥x,输出是对M的数字签名,表示为S=Sigx(M)相应于签名算法,有一验证算法,表示为Ver(S,M),其取值为Ver(S,M)算法的安全性在于从M和S难以推出密钥x

7、或伪造一个消息M,使M和S可被验证为真。12/957.1.3 数字签名的执行方式数字签名的执行方式有两类: 直接方式和具有仲裁的方式1. 直接方式(缺少监督的方式)直接方式是指数字签名的执行过程只有通信双方参与,并假定双方有共享的秘密钥或接收一方知道发方的公开钥直接方式的数字签名有一公共弱点,即方案的有效性取决于发方秘密钥的安全性13/95如果发方想对已发出的消息予以否认,就可声称自己的秘密钥已丢失或被窃,因此自己的签名是他人伪造的可采取某些行政手段,虽然不能完全避免但可在某种程度上减弱这种威胁例如,要求每一被签名的消息都包含有一个时戳(日期和时间)并要求密钥丢失后立即向管理机构报告这种方式的

8、数字签名还存在发方的秘密钥真的被偷的危险例如敌手在时刻T偷得发方的秘密钥,然后可伪造一消息,用偷得的秘密钥为其签名并加上T以前的时刻作为时戳14/952. 具有仲裁方式的数字签名可解决直接方式的缺陷具有仲裁方式的数字签名也有很多实现方案,这些方案都按以下方式运行: 发方X对发往收方Y的消息签名后,将消息及其签名先发给仲裁者AA对消息及其签名验证完后,再连同一个表示已通过验证的指令一起发往收方Y此时由于A的存在,X无法对自己发出的消息予以否认。在这种方式中,仲裁者起着重要的作用,并应取得所有用户的信任15/95以下是具有仲裁方式数字签名的几个实例其中X表示发方,Y表示收方,A是仲裁者,M是消息X

9、Y: M表示X给Y发送一消息M【例71】 签名过程如下: XA:MEKXAIDXH(M) AY:EKAYIDXMEKXAIDXH(M)T其中E是单钥加密算法KXA和KAY分别是X与A共享的密钥和A与Y共享的密钥H(M)是M的杂凑值,T是时戳,IDX是X的身份在中,X以EKXAIDXH(M)作为自己对M的签名,将M及签名发往A在中A将从X收到的内容和IDX、T一起加密后发往Y,其中的T用于向Y表示所发的消息不是旧消息的重放。Y对收到的内容解密后,将解密结果存储起来以备出现争议时使用16/95在【例71】中如果出现争议,Y可声称自己收到的M的确来自X,并将EKAYIDXMEKXAIDXH(M)发给

10、A,由A仲裁,A由KAY解密后,再用KXA对EKXAIDXH(M)解密,并对H(M)加以验证,从而验证了X的签名由于Y不知KXA,因此不能直接检查X的签名,但Y认为消息来自于A因而是可信的。所以在整个过程中,A必须取得X和Y的高度信任: X相信A不会泄露KXA,并且不会伪造X的签名;Y相信A只有在对EKAYIDXMEKXAIDXH(M)T中的杂凑值及X的签名验证无误后才将之发给Y;X,Y都相信A可公正地解决争议17/95如果A已取得各方的信任,则X就能相信没有人能伪造自己的签名,Y就可相信X不能对自己的签名予以否认严格的说,例71不是签字协议,仅仅是具有仲裁能力的认证协议例71中消息M是以明文

11、形式发送的,因此未提供保密性,下面两个例子可提供保密性【例72】 签名过程如下: XA: IDXEKXYMEKXAIDXH(EKXYM) AY: EKAYIDXEKXYMEKXAIDXH(EKXYM)T其中KXY是X,Y共享的密钥,其他符号与例1相同18/95X以EKXAIDXH(EKXYM)作为对M的签名,与由KXY加密的消息M一起发给A。A对EKXAIDXH(EKXYM)解密后通过验证杂凑值以验证X的签名,但始终未能读取明文M。A验证完X的签名后,对X发来的消息加一时戳,再用KAY加密后发往Y。解决争议的方法与例1一样。本例虽然提供了保密性,但还存在与上例相同的一个问题即仲裁者可和发方共谋

12、以否认发方曾发过的消息,也可和收方共谋以伪造发方的签名这一问题可通过下例所示的采用公钥加密技术的方法得以解决19/95【例73】 签名过程如下: XA:IDXESKXIDXEPKYESKXM AY:ESKAIDXEPKYESKXMT其中SKA和SKX分别是A和X的秘密钥,PKY是Y的公开钥,其他符号与前两例相同。第步中,X用自己的秘密钥SKX和Y的公开钥PKY对消息加密后作为对M的签名,以这种方式使得任何第3方(包括A)都不能得到M的明文消息A收到X的内容后,用X的公开钥可对ESKXIDXEPKYESKXM解密,并将解密得到的IDX与收到的IDX加以比较,从而可确信这一消息是来自于X的(因只有

13、X有SKX)第步,A将X的身份IDX和X对M的签名加上一时戳后,再用自己的秘密钥加密发往Y20/95与前两种方案相比,第3种方案有很多优点。首先,在协议执行以前,各方都不必有共享的信息,从而可防止共谋。第二,只要仲裁者的秘密钥不被泄露,任何人包括发方就不能发送重放的消息。最后,对任何第三方(包括A)来说,X发往Y的消息都是保密的21/957.2 数字签名标准数字签名标准DSS(Digital Signature Standard)是由美国NIST公布的联邦信息处理标准FIPS PUB 186其中采用了上一章介绍的SHA和一新的签名技术,称为DSA(Digital Signature Algor

14、ithm)DSS最初于1991年公布,在考虑了公众对其安全性的反馈意见后,于1993年公布了其修改版DSA 是算法, DSS 是标准22/957.2.1 DSS的基本方式首先将DSS与RSA的签名方式做一比较RSA算法既能用于加密和签名,又能用于密钥交换与此不同,DSS使用的算法只能提供数字签名功能23/95RSA签名中,将消息输入到一个杂凑函数以产生一个固定长度的安全杂凑值,再用发方的秘密钥加密杂凑值就形成了对消息的签名消息及其签名被一起发给收方收方得到消息后再产生出消息的杂凑值且使用发方的公开钥对收到的签名解密这样收方就得了两个杂凑值,如果两个杂凑值是一样的,则认为收到的签名是有效的24/

15、95DSS签名也利用一杂凑函数产生消息的一个杂凑值,杂凑值连同一随机数k一起作为签名函数的输入签名函数还需使用发送方的秘密钥SKA和供所有用户使用的一族参数,称这一族参数为全局公开钥PKG签名函数的两个输出s和r就构成了消息的签名(s,r)。接收方收到消息后再产生出消息的杂凑值,将杂凑值与收到的签名一起输入验证函数,验证函数还需输入全局公开钥PKG和发送方的公开钥PKA。验证函数的输出如果与收到的签名成分r相等,则验证了签名是有效的25/957.2.2 数字签名算法DSADSA是在ElGamal和Schnorr两个签名方案的基础上设计的,其安全性基于求离散对数的困难性。生成签名长度 320 b

16、it,算法描述如下: (1) 全局公开钥p:满足2L-1p2L 的大素数,其中512L1024且L是64的倍数q:p-1的素因子,满足2159q2160 ,即q长为160比特。g:g=h(p-1)/q mod p,h是满足1h1的任一整数(2) 用户秘密钥xx是满足0 xq的随机数或伪随机数(3) 用户的公开钥yygx mod p。26/95(4) 用户为待签消息选取的秘密数kk是满足0kq的随机数或伪随机数。(5) 签名过程用户对消息M的签名为(r, s),其中r(gk mod p) mod q sk-1(H(M)+xr) mod q,H(M)是由SHA求出的杂凑值(6) 验证过程设接收方收

17、到的消息为M,签名为(r,s)。计算w(s)-1 mod q,u1H(M)w mod qu2rw mod q, v(gu1yu2) mod p mod q检查v=r 是否成立,若相等,则认为签名有效这是因为若(M,r,s)=(M,r,s),则 vgH(M)wgxrw mod p mod qg(H(M)+xr)s mod p mod q gk mod p mod qr27/95算法的框图如图7-3所示,其中的4个函数分别为s=f1H(M),k,x,r,qk-1(H(M)+xr) mod qr=f2(k,p,q,g)(gk mod p) mod qw=f3(s,q)(s)-1 mod qv=f4(

18、y,q,g,H(M),w,r)(g(H(M)w) mod q y rw mod q) mod p mod q由于离散对数的困难性,敌手从r恢复k或从s恢复x都是不可行的28/95r和k-1可预计算即签名产生过程中的运算主要是求r的模指数运算r=(gk mod p) mod q,而这一运算与待签的消息无关,因此能被预先计算事实上,用户可以预先计算出很多r和k-1以备以后的签名使用,从而可大大加快产生签名的速度DSA的安全性基于离散对数,最初建议使用一个共同的模数p ;现在建议不同的工作组使用不同的 (p,q,g)注意验证者及任何其它人均不知道x和k同一个用户所产生的两个签名不能使用相同的k,否则

19、会泄漏xGus Simmons 发现存在潜信道,能够泄露私钥29/957.3. 其他签名方案7.3.1 基于离散对数问题的数字签名体制基于离散对数问题的数字签名体制是数字签名体制中最为常用的一类,其中包括ElGamal签名体制、DSA签名体制、Okamoto签名体制等1. 离散对数签名体制ElGamal、DSA、Okamoto等签名体制都可归结为离散对数签名体制的特例(1) 体制参数p:大素数;q:p-1或p-1的大素因子g:gRZp*,且gq1(mod p),其中gRZp*表示g是从Zp*中随机选取的,其中Zp*=Zp-0 x:用户A的秘密钥,1xqy:用户A的公开钥,ygx(mod p)3

20、0/95(2) 签名的产生过程对于待签名的消息m,A执行以下步骤: 计算m的杂凑值H(m)。 选择随机数k:1kq,计算 rgk(mod p)。 从签名方程akb+cx(mod q)中解出s。方程的系数a、b、c有许多种不同的选择方法,表7-1给出了这些可能选择中的一小部分,以(r, s)作为产生的数字签名。表7-1 参数a、b、c可能的置换取值表abcrsH(m)rH(m)s1rH(m) H(m)s1H(m)r rs1H(m)s rs131/95(3) 签名的验证过程接收方在收到消息m和签名(r, s)后,可以按照以下验证方程检验: Ver(y, (r, s), m)=Ture ragbyc

21、 (mod p)2.ElGamal签名体制(1) 体制参数p:大素数; g:Zp*的一个生成元;x:用户A的秘密钥,xRZp* ; y:用户A的公开钥,ygx(mod p)。32/95(2) 签名的产生过程对于待签名的消息m,A执行以下步骤: 计算m的杂凑值H(m) 选择随机数k:kZp*,gcd(k,p-1)=1,计算rgk(mod p) 计算sk-1(H(m)-xr) (mod p-1)以(r,s)作为产生的数字签名注意在公开参数一样的情况下,任何两次签名的会话密钥k应不等(3) 签名验证过程接收方收到m和数字签名(r, s)后,先计算H(m),并按下式验证: Ver(y, (r, s),

22、 H(m)=Ture gH(m)rsyr (mod p)正确性可由下式证明:rsyrgrxgksgrx+H(m)-rxgH(m) (mod p)33/953. Schnorr签名体制(1) 体制参数p:大素数,p2512; q:大素数,q|(p-1),q2160;g:gRZp*,且gq1(mod p);x:用户A的秘密钥,1xq;y:用户A的公开钥,ygx(mod p)。(2) 签名的产生过程对于待签名的消息m,A执行以下步骤: 选择随机数k:1kq,计算 rgk(mod p)。 计算e=H(r, m)。 计算sxe+k(mod q)。以(e, s)作为产生的数字签名。34/95(3) 签名验

23、证过程接收方在收到消息m和数字签名(e, s)后,先计算rgsy-e(mod p),然后计算H(r,m),并按下式验证Ver(y, (e, s), m)=Ture H(r,m) =e其正确性可由下式证明:rgsy-egxe+k-xer (mod p)35/957.3.2 基于大数分解问题的数字签名体制设n是一个大合数,找出n的所有素因子是一个困难问题,称之为大数分解问题。下面介绍的两个数字签名体制都基于这个问题的困难性。1. Fiat-Shamir签名体制(1) 体制参数n:n=pq,其中p和q是两个保密的大素数;k:固定的正整数;y1,y2,yk:用户A的公开钥,对任何i(1ik),yi都是

24、模n的平方剩余;x1,x2,xk:用户A的秘密钥,对任何i(1ik),xi mod n。36/95(2) 签名的产生过程对于待签名的消息m,A执行以下步骤: 随机选取一个正整数t。 随机选取t个介于1和n之间的数r1,r2,rt,并对任何j(1jt),计算Rjrj2(mod n)。 计算杂凑值H(m,R1,R2,Rt),并依次取出H(m,R1,R2,Rt)的前kt个比特值b11,b1t, b21,b2t, bk1,bkt。 对任何j(1jt),计算sjrj (mod n)。以(b11,b1t, b21,b2t, bk1,bkt),(s1,st)作为对m的数字签名。37/95(3) 签名的验证过

25、程收方在收到消息m和签名(b11,b1t, b21,b2t, bk1,bkt),( s1,st)后,用以下步骤来验证: 对任何j(1jt),计算Rjsj2 (mod n)。 计算H(m,R1,R2,Rt)。 验证b11,b1t, b21,b2t, bk1,bkt是否依次是H(m,R1,R2,Rt)的前kt个比特。如果是,则以上数字签名是有效的。正确性可以由以下算式证明:Rjsj2 (mod n)(rj )2 rj2 rj2Rj mod n38/952. Guillou-Quisquater签名体制(GQ签名体制)(1) 体制参数n:n=pq,p和q是两个保密的大素数; v:gcd(v,(p-1

26、)(q-1)=1;x:用户A的秘密钥,xRZn*;y:用户A的公开钥,yR Zn*,且xvy1 mod n(2) 签名的产生过程对于待签消息m,A进行以下步骤: 随机选择一个数kZn*,计算 Tkv(mod n)。 计算杂凑值: e=H(m,T),且使1ev;否则,返回步骤。 计算skxe mod n。以(e, s)作为对m的签名。39/95(3) 签名的验证过程接收方在收到消息m和数字签名(e, s)后,用以下步骤来验证: 计算出Tsvye(mod n)。 计算出e=H(m,T)。 验证:Ver(y, (e, s), m)=Ture e=e正确性可由以下算式证明:Tsvye(mod n)(k

27、xe)vye(mod n) kv(xvy)e(mod n)kv(mod n)T40/957.3.3 基于身份的数字签字体制1. ElGamal签字体制(1)体制参数体制参数与4.8.3节相同。设q是大素数,G1,G2分别是阶为q的加法群和乘法群e:G1G1G2是一个双线性映射H1:0,1*G1*和H2:G2 0,1n是两个杂凑函数sZq*是系统的主密钥,P是G1的一个生成元。用户ID的公开钥和秘密钥分别是QIDH1(ID) G1*和dIDs QID41/95(2)签字的产生过程对于待签字的消息m,A执行以下步骤:选择随机数kZq*计算RkP(xR,yR)计算S(H2(m)P+xRdID)k-1

28、以(R,S)作为产生的数字签字(3)签字的验证过程接收方在收到消息m和数字签字(R,S)后,先计算H2(m),并按下式验证:Ver(QID,(R,S),H2(m)=Turee(P,P)H2(m) e(Ppub,QID)xR正确性可由下式证明:e(R,S)=e(kP,(H2(m)P+xRdID)k-1)=e(P,P)H2(m) e(P,QID)xRs =e(P,P)H2(m) e(Ppub,QID)xR42/957.4 认证协议安全可靠的通信除需进行消息的认证外,还需建立一些规范的协议对数据来源的可靠性、通信实体的真实性加以认证,以防止欺骗、伪装等攻击,一般分为三个层次:数据完整性认证:防止篡改

29、,重排,重放等等数据源认证:使得通信业务与具体实体捆绑认证,数据由哪个实体而来实体认证:发起通信或访问的实体是否具有合法身份和相应权限这些认证常常一起进行,也有时单独进行通信之前首先进行实体认证(身份认证),身份认证之后会协商出会话密钥用于对每个传输数据的数据源认证和完整性认证实体认证(身份认证)包括身份证实和身份识别:43/95身份证实你是否是你宣称的你验证方首先知道要验证的身份是谁,进一步证实来访或与之通信的人是否具有该身份一般用于A和B确定通信时所用,通常的网络认证协议都是身份证实具体技术:输入个人信息,经公式或算法运算所得结果与卡中或数据库中存储信息经公式运算所得结果比较身份识别我是否

30、知道你是谁验证方不知道来访人是否为合法身份,没有比较确定的目标,只要满足某个条件就可判定身份的特点。验证者一般为权威机构一般在实体认证中需要, 比如判断来访者是否是在逃犯,是否为密码开启者,是否为本公司员工。通常用指纹、虹膜技术具体技术:输入个人信息,经过处理提取模版信息,试着在存储数据库中找出一个与之匹配的模版而后得出结论44/95认证协议的典型用途是:身份认证与会话密钥协商身份认证和密钥协商往往同时进行如Kerberos认证系统(NS协议)、X.509、SSL、TLS、IPSec/IKE本节以网络通信的一个基本问题的解决引出认证协议的基本意义,这一基本问题陈述如下:A和B是网络的两个用户,

31、他们想通过网络先建立安全的共享密钥再进行保密通信。A(B)如何确信自己正在和B(A)通信而不是和C通信呢?即双方的身份认证这种通信方式为双向通信,此时的认证称为相互认证类似地,对于单向通信来说,认证称为单向认证这里的认证主要是身份证实45/957.4.1 相互认证A、B两个用户在建立共享密钥时需要考虑的核心问题是保密性和实时性保密性:为了防止会话密钥的伪造或泄露,会话密钥在通信双方之间交换时应为密文形式,所以通信双方事先就应有密钥或公开钥实时性:对防止消息的重放攻击极为重要实现实时性的一种方法是对交换的每一条消息都加上一个序列号,一个新消息仅当它有正确的序列号时才被接收。这种方法的困难性是要求

32、每个用户分别记录与其他每一用户交换的消息的序列号,从而增加了用户的负担,所以序列号方法一般不用于认证和密钥交换。46/95保证消息的实时性常用以下两种方法: 时戳如果A收到的消息包括一时戳,且在A看来这一时戳充分接近自己的当前时刻, A才认为收到的消息是新的并接受之。这种方案要求所有各方的时钟是同步的询问-应答用户A向B发出一个一次性随机数作为询问,如果收到B发来的消息(应答)也包含一正确的一次性随机数,A就认为B发来的消息是新的并接受之。47/95时戳法不能用于面向连接的应用过程这是由于时戳法在实现时固有的困难性首先是需要在不同的处理器时钟之间保持同步,那么所用的协议必须是容错的以处理网络错

33、误,并且是安全的以对付恶意攻击第二,如果协议中任一方的时钟出现错误而暂时地失去了同步,则将使敌手攻击成功的可能性增加最后还由于网络本身存在着延迟,因此不能期望协议的各方能保持精确的同步。所以任何基于时戳的处理过程、协议等都必须允许同步有一个误差范围。考虑到网络本身的延迟,误差范围应足够大;考虑到可能存在的攻击,误差范围又应足够小48/95询问-应答方式则不适合于无连接的应用过程这是因为在无连接传输以前需经询问-应答这一额外的握手过程,这与无连接应用过程的本质特性不符。对无连接的应用程序来说,利用某种安全的时间服务器保持各方时钟同步是防止重放攻击最好的方法49/95通信双方建立共享密钥时可采用单

34、钥加密体制和公钥加密体制1. 单钥加密体制需要有一个可信的密钥分配中心KDC,网络中每一用户都与KDC有一共享的密钥,称为主密钥KDC为通信双方建立一个短期内使用的密钥,称为会话密钥,并用主密钥加密会话密钥后分配给两个用户这种分配密钥的方式在实际应用中较为普遍采用,如Kerberos系统采用的就是这种方式50/95(1) Needham-Schroeder协议以下是1978年出现的著名的Needham-Schroeder认证协议。即为5.1节中图5-1所示的采用KDC的密钥分配过程这里需建立一个称为鉴别服务器的可信权威机构(密钥分发中心KDC),拥有每个用户的秘密密钥若用户A欲与用户B通信,则

35、用户A向鉴别服务器申请会话密钥。在会话密钥的分配过程中,双方身份得以鉴别51/95 AKDC:IDAIDBN1 KDCA:EKAKSIDBN1EKBKSIDA AB:EKBKSIDA BA:EKSN2 AB:EKSf(N2)协议的目的是由KDC为A、B安全地分配会话密钥KSA在第步安全地获得了KS第步的消息仅能被B解读,因此B在第步安全地获得了KS 第步中B向A示意自己已掌握KS,N2用于向A询问自己在第步收到的KS是否为一新会话密钥,第步A对B的询问作出应答,一方面表示自己已掌握KS,另一方面由f(N2)回答了KS的新鲜性。第、两步用于防止对第步的重放攻击52/95以上协议易遭受另一种重放攻

36、击假定敌手能获取旧会话密钥,则冒充A向B重放第步的消息后,就可欺骗B使用旧会话密钥敌手进一步截获第步B发出的询问后,可假冒A作出第步的应答敌手就可冒充A使用经认证过的会话密钥向B发送假消息53/95(2) Needham-Schroeder协议的改进方案之一在第步和第步加上一时戳,改进后的协议如下: AKDC:IDAIDB KDCA:EKAKSIDBTEKBKSIDAT AB:EKBKSIDAT BA:EKSN1 AB:EKSf(N1)其中T是时戳,用以向A、B双方保证KS的新鲜性。A和B可通过下式检查T的实时性:|Clock-T|t1+t2Clock为用户(A或B)本地的时钟t1是用户本地时

37、钟和KDC时钟误差的估计值t2是网络的延迟时间。54/95T是经主密钥加密的,所以敌手即使知道旧会话密钥,并在协议的过去执行期间截获第步的结果,也无法成功地重放给B因B对收到的消息可通过时戳检查其是否为新的以上改进还存在以下问题:方案主要依赖网络中各方时钟的同步,这种同步可能会由于系统故障或计时误差而被破坏等待重放攻击:如果发送方的时钟超前于接收方的时钟,敌手就可截获发送方发出的消息,等待消息中时戳接近于接收方的时钟时,再重发这个消息这种重放至少可以影响Ks的有效期,也可造成重复接收等问题55/95抗等待重放攻击方法一:要求网络中各方以KDC的时钟为基准定期检查并调整自己的时钟方法二:使用一次

38、性随机数的握手协议这就是NS协议的另一种改进方法(3) Needham-Schroeder协议的改进方案之二 AB:IDANA BKDC:IDBNBEKBIDANATB KDCA:EKAIDBNAKSTBEKBIDAKSTBNB AB:EKBIDAKSTBEKSNBTB是B建议的证书(会话密钥)截止时间,用于截止时间前再次发起会话时KS是否可用的判别时间56/95协议的具体含义如下: A将新的一次性随机数NA与自己的身份IDA一起以明文形式发往B,NA以后将与会话密钥KS一起以加密形式返回给A,以保证A收到的会话密钥的新鲜性。 B向KDC发出与A建立会话密钥的请求,表示请求的消息包括B的身份、

39、一次性随机数NB以及由B与KDC共享的主密钥加密的数据项。其中NB以后将与会话密钥一起以加密形式返回给B以向B保证会话密钥的新鲜性请求中由主密钥加密的数据项用于指示KDC向A发出一个证书,其中的数据项有证书接收者A的身份、B建议的证书截止时间TB、B从A收到的一次性随机数。57/95 KDC将B产生的NB连同由KDC与B共享的密钥KB加密的IDAKSTB一起发给A,其中KS是KDC分配的会话密钥EKBIDAKSTB由A当作票据用于以后的认证。KDC向A发出的消息还包括由KDC与A共享的主密钥加密的IDBNAKSTBA用这一消息可验证B已收到第步发出的消息(通过IDB)A还能验证这一步收到的消息

40、是新的(通过NA),这一消息中还包括KDC分配的会话密钥KS以及会话密钥的截止时间TB。 A将票据EKBIDAKSTB连同由会话密钥加密的一次性随机数NB发往B,B由票据得到会话密钥KS,并由KS得NB。NB由会话密钥加密的目的是B认证了自己收到的消息不是一个重放,而的确是来自于A。58/95如果A保留由协议得到的票据EKBIDAKSTB ,就可在有效时间范围内不再求助于认证服务器而由以下方式实现双方的新认证: AB:EKBIDAKSTB,NA BA:NB ,EKSNA AB:EKSNBB在第步收到票据后,可通过TB检验票据是否过时,而新产生的一次性随机数NA ,NB则向双方保证了没有重放攻击

41、以上协议中时间期限TB是B根据自己的时钟定的,因此不要求各方之间的同步59/952. 公钥加密体制曾介绍过使用公钥加密体制分配会话密钥的方法(前提是收发双方已经互相知道对方公钥),以下协议也用于此目的(但事先不知道彼此公钥) AAS:IDAIDB ASA:ESKASIDAPKATESKASIDBPKBT AB: ESKASIDAPKATESKASIDBPKBT EPKBESKAKST其中SKAS、SKA 分别是AS和A的秘密钥,PKA、PKB分别是A和B的公开钥,E为公钥加密算法,AS是认证服务器时戳T用以防止重放攻击,所以需要各方时钟同步B的证书可省去60/95第步,A将自己的身份及欲通信的

42、对方的身份发送给AS第步,AS发给A的两个链接的数据项都是由自己的秘密钥加密(即由AS签字),分别作为发放给通信双方的公钥证书第步,A选取会话密钥并经自己的秘密钥和B的公开钥加密后连同两个公钥证书一起发往B。因会话密钥是由A选取,并以密文形式发送给B,因此包括AS在内的任何第3者都无法得到会话密钥时戳T用以防止重放攻击,所以需要各方时钟同步61/95下一协议使用一次性随机数,因此不需要时钟的同步: AKDC:IDAIDB KDCA:ESKAUIDBPKB AB:EPKBNAIDA BKDC:IDBIDAEPKAUNA KDCB:ESKAUIDAPKAEPKBESKAUNAKSIDB BA:EP

43、KAESKAUNAKSIDBNB AB:EKSNB其中SKAU和PKAU分别是KDC的秘密钥和公开钥62/95第步,A通知KDC他想和B建立安全连接。第步,KDC将B的公钥证书发给A,公钥证书包括经KDC签字的B的身份和公钥。第步,A告诉B想与他通信,并将自己选择的一次性随机数NA发给B。第步,B向KDC发出得到A的公钥证书和会话密钥的请求,请求中由KDC的公开钥加密的NA用于让KDC将建立的会话密钥与NA联系起来,以保证会话密钥的新鲜性。63/95第步,KDC向B发出A的公钥证书以及由自己的秘密钥和B的公开钥加密的三元组NA,KS,IDB。三元组由KDC的秘密钥加密可使B验证三元组的确是由K

44、DC发来的,由B的公开钥加密是防止他人得到三元组后假冒B建立与A的连接。第步,B新产生一个一次性随机数NB,连同上一步收到的由KDC的秘密钥加密的三元组一起经A的公开钥加密后发往A。第步,A取出会话密钥,再由会话密钥加密NB后发往B,以使B知道A已掌握会话密钥。以上协议可进一步做如下改进: 在第、两步出现NA的地方加上IDA,以说明NA的确是由A产生的而不是其他人产生的,这时IDA,NA就可惟一地识别A发出的连接请求64/95以上协议稍微扩展就是著名的Kerberos协议它是工作在应用层的认证协议解决的问题:在一个公开的分布式环境中,工作站上的用户希望访问分布在网络中的服务器(可能是多个)上的

45、服务服务器希望能够限制授权用户的访问,并能对服务请求进行鉴别Kerberos的主要功能:认证、授权、记账与审计Kerberos系统在一个分布式的Client/Server体系机构中采用一个或多个Kerberos服务器提供一个认证服务。Kerberos系统基于对称密钥构建,提供一个基于可信第三方的认证服务65/95Kerberos不是为每一个服务器构造一个身份认证协议,而是提供一个中心认证服务器,提供用户到服务器和服务器到用户的认证服务该中心认证服务器执行密钥管理和控制的功能,维护一个保存所有客户密钥的数据库。该中心认证服务器即为可信第三方每当两个用户要进行安全通信及认证请求时,Kerberos

46、认证服务器就产生会话密钥Kerberos系统使用56位DES加密算法加密网络连接,并且提供用户身份的认证66/95Kerberos认证协议的体系结构图和每次登陆执行一次和每种服务执行一次和每个服务的每次会话执行一次67/9568/95这个过程可以通过如下的例子来理解把西电网络看成一个提供网页、邮件、FTP、数据库等多个服务的网络那么有一个认证中心在网络中心,还有一个票据服务器用于对每一种服务的接入授权每一个西电用户都在认证中心注册了自己的账号现在用户Alice想要访问西电的FTP服务器,则采用如下步骤(1)如果Alice还未登陆系统,则首先向认证中心认证,并请求访问票据许可服务器,认证中心在检

47、验了用户身份后发给Alice一个访问票据许可服务器的票据,如果已经登陆则不需此步骤(2)如果Alice要访问一个服务,如FTP,但还没有被授权访问,则将认证中心的票据及要访问的服务提交给票据许可服务器,认证后票据许可服务器发给Alice一个服务许可票据,用于访问FTP服务器,如果已经有有效票据则不需此步骤。(3)用户Alice要访问FTP服务,在每次会话建立前,将服务许可票据提交给FTP服务器,验证后即可访问资源69/957.4.2 单向认证电子邮件等网络应用不要求收发双方同时在线邮件消息的报头必须是明文形式以使SMTP或X.400等存储-转发协议能够处理SMTP(simple mail tr

48、ansfer protocol-简单邮件传输协议)通常都不希望邮件处理协议要求邮件的消息本身是明文形式,否则就要求用户对邮件处理机制的信任所以用户在进行保密通信时,需对邮件消息进行加密以使包括邮件处理系统在内的任何第3者都不能读取邮件的内容。再者邮件接收者还希望对邮件的来源即发方的身份进行认证,以防他人的假冒。与双向认证一样,在此仍分为单钥加密和公钥加密两种情况来考虑70/951. 单钥加密单向通信时无中心的密钥分配情况不适用,因为需要握手在图5-1所示的情况中去掉第步和第步就可满足单向通信的两个要求。协议如下: AKDC:IDAIDBN1 KDCA:EKAKSIDBN1EKBKSIDA AB

49、:EKBKSIDAEKSM本协议不要求B同时在线,但保证了只有B能解读消息,同时还提供了对消息的发方A的认证然而本协议不能防止重放攻击,如第步,为此需在消息中加上时戳,但由于电子邮件处理中的延迟,时戳的作用极为有限71/952. 公钥加密公钥加密算法可对发送的消息提供保密性、认证性或既提供保密性又提供认证性,为此要求发送方知道接收方的公开钥(保密性),或要求接收方知道发送方的公开钥(认证性),或要求每一方都知道另一方的公开钥如果主要关心保密性,则可使用以下方式: AB:EPKBKSEKSM其中A用B的公开钥加密一次性会话密钥,用一次性会话密钥加密消息。只有B能够使用相应的秘密钥得到一次性会话密

50、钥,再用一次性会话密钥得到消息。这种方案比简单地用B的公开钥加密整个消息要有效得多。72/95如果主要关心认证性,则可使用以下方式: AB:MESKAH(M)这种方式可实现对A的认证,但不提供对M的保密性。如果既要提供保密性又要提供认证性,可使用以下方式: AB:EPKBMESKAH(M)后两种情况要求B知道A的公开钥并确信公开钥的真实性。为此A还需同时向B发送自己的公钥证书,表示为AB:MESKAH(M)ESKASTIDAPKA或 AB:EPKBMESKAH(M)ESKASTIDAPKA其中ESKASTIDAPKA是认证服务器AS为A签署的公钥证书73/957.5 身份证明技术在很多情况下,

51、用户都需证明自己的身份如登录计算机系统存取电子银行中的账目数据库从自动出纳机ATM(automatic teller machine)取款等传统的方法使用通行字(口令)个人身份识别号PIN(personal identification number)来证明自己的身份这些方法的缺点是检验用户通行字或PIN的人或系统可使用用户的通行字或PIN冒充用户身份的零知识证明技术可使用户在不泄露自己的通行字或PIN的情况下向他人证实自己的身份74/957.5.1 交互证明系统交互证明系统由两方参与,分别称为证明者(prover,简记为P)和验证者(verifier,简记为V)其中P知道某一秘密(如公钥密码

52、体制的秘密钥或一平方剩余x的平方根),P希望使V相信自己的确掌握这一秘密交互证明由若干轮组成在每一轮,P和V可能需根据从对方收到的消息和自己计算的某个结果向对方发送消息比较典型的方式是在每轮V都向P发出一询问,P向V做出一应答所有轮执行完后,V根据P是否在每一轮对自己发出的询问都能正确应答,以决定是否接受P的证明75/95交互证明和数学证明的区别是:数学证明的证明者可自己独立地完成证明交互证明是由P产生证明、V验证证明的有效性来实现,因此双方之间通过某种信道的通信是必需的。交互证明系统须满足以下要求: 完备性如果P知道某一秘密,V将接受P的证明 正确性如果P能以一定的概率使V相信P的证明,则P

53、知道相应的秘密76/957.5.2 简化的Fiat-Shamir身份识别方案1. 协议及原理设n=pq,其中p和q是两个不同的大素数x是模n的平方剩余y是x的平方根n和x是公开的,而p、q和y是保密的证明者P以y作为自己的秘密已证明,求解方程y2x mod n与分解n是等价的。因此他人不知n的两个素因子p、q而计算y是困难的P和V通过交互证明协议,P向V证明自己掌握秘密y,从而证明了自己的身份77/95协议如下: P随机选r (0rn),计算ar2 mod n,将a发送给V。 V随机选e0,1,将e发送给P。 P计算brye mod n,即e=0时,b=r;e=1时,b=ry mod n。将b

54、发送给V。 若b2axe mod n,V接受P的证明。在协议的前3步,P和V之间共交换了3个消息,这3个消息的作用分别是: 第1个消息是P用来声称自己知道a的平方根;第2个消息e是V的询问,如果e=0,P必须展示a的平方根,即r,如果e=1,P必须展示被加密的秘密,即ry mod n;第3个消息b是P对V询问的应答。78/952. 协议的完备性、正确性和安全性(1) 完备性如果P和V遵守协议,且P知道y,则应答brye mod n应是模n下axe的平方根在协议的第步V接受P的证明,所以协议是完备的(2) 正确性假冒的证明者E可按以下方式以1/2的概率骗得V接受自己的证明: E随机选r(0rn)

55、和e0,1,计算ar2x-e mod n,将a发送给V V随机选e0,1,将e发送给E E将r发送给V根据协议的第步,V的验证方程是r2axe mod nr2x-exe mod n,当e=e 时,验证方程成立,V接受E的证明,即E欺骗成功79/95e=e的概率是1/2,所以E欺骗成功的概率是1/2另一方面,1/2是E能成功欺骗的最好概率否则假设E以大于1/2的概率使V相信自己的证明那么E知道一个a,对这个a他可正确地应答V的两个询问e=0和e=1,意味着E能计算b12a mod n和b22ax mod n,即b22/b12x mod n,因此E由b2/b1 mod n即可求得x的平方根y,矛盾

56、。80/95(3) 安全性协议的安全性可分别从证明者P和验证者V的角度来考虑。V的安全性,要求验证方被骗概率可忽略根据上面的讨论,假冒的证明者E欺骗V成功的概率是1/2,对V来说,这个概率太大了。为减小这个概率,可将协议重复执行多次,设执行t次,则欺骗者欺骗成功的概率将减小到2-t。P的安全性,证明方消息无泄漏因为V的询问是在很小的集合0,1中选取的,V没有机会产生其他信息,而P发送给V的信息仅为P知道x的平方根这一事实,因此V无法得知x的平方根。81/957.5.3 零知识证明零知识证明起源于最小泄露证明在交互证明系统中,设P知道某一秘密,并向V证明自己掌握这一秘密,但又不向V泄露这一秘密,

57、这就是最小泄露证明进一步,如果V除了知道P能证明某一事实外,不能得到其他任何信息,则称P实现了零知识证明,相应的协议称为零知识证明协议82/95【例7-4】 图7-4表示一个简单的迷宫,C和D之间有一道门,需要知道秘密口令才能打开P向V证明自己能打开这道门,但又不愿向V泄漏秘密口令83/95V在协议开始时停留在位置A;P一直走到迷宫的深处,随机选择位置C或位置D;P消失在迷宫中后,V走到位置B,然后命令P从某个出口返回位置B;P服从V的命令,必要时利用秘密口令打开C与D之间的门;P和V重复以上过程n次。协议中,如果P不知道秘密口令,就只能从来路返回B,而不能走另外一条路。P每次猜对V要求走哪一

58、条路的概率是1/2,因此每一轮中P能够欺骗V的概率是1/2。假定n取16,则执行16轮后,P成功欺骗V的概率是1/2161/65536。于是,如果P16次都能按V的要求返回,V即能证明P确实知道秘密口令。还可以看出,V无法从上述证明过程中获取丝毫关于P的秘密口令的信息,所以这是一个零知识证明协议。84/95【例75】 哈密尔顿(Hamilton)回路图中的回路是指始点和终点相重合的路径,若回路通过图的每个顶点一次且仅一次,则称为哈密尔顿回路构造图的哈密尔顿回路是NPC问题。求两个图同构也是困难问题现在假定P知道图G的哈密尔顿回路,并希望向V证明这一事实,可采用如下协议: P随机地构造一个与图G

59、同构的图 ,并 将交给V。 V随机地要求P做下述两件工作之一: 证明图G和图 同构;指出图 的一条哈密尔顿回路。 P根据要求做下述两件工作之一: 证明图G和图 同构,但不指出图G或图 的哈密尔顿回路;指出图 的哈密尔顿回路,但不证明图G和图 同构。 P和V重复以上过程n次。85/95协议执行完后,V无法获得任何信息使自己可以构造图G的哈密尔顿回路,因此该协议是零知识证明协议。事实上,如果P向V证明图G和图 同构,这个结论对V并没有意义,因为构造图 的哈密尔顿回路和构造图G的哈密尔顿回路同样困难。如果P向V指出图的一条哈密尔顿回路,这一事实也无法向V提供任何帮助,因为求两个图之间的同构并不比求一个图的哈密尔顿回路容易。在协议的每一轮中,P都随机地构造一个与图G同构的新图,因此不论协议执行多少轮,V都得不到任何有关构造图G的哈密尔顿回路的信息。注:两个图G1和G2是同构的是指从G1的顶点集合到G2的顶点集合之间存在一个一一映射,当且仅当若x、y是G1上的相邻点,(x)和(y)是G2上的相邻点。86/957.5.4 Fiat-Shamir身份识别方案 1. 协议及原理在简化的Fiat-Shamir身份识别方案中,验证者V接受假冒的证明者证明的概率是1/2,为减小这个

温馨提示

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

评论

0/150

提交评论