《计算机系统安全》课件第10章_第1页
《计算机系统安全》课件第10章_第2页
《计算机系统安全》课件第10章_第3页
《计算机系统安全》课件第10章_第4页
《计算机系统安全》课件第10章_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

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

文档简介

第10章密码协议基本理论10.1引言

10.2身份鉴别(认证)协议10.3数字签名10.4密钥分配协议10.5秘密共享习题

10.1引言1.密码协议的基本概念本文所指的密码协议是指使用密码技术的信息交换协议。所谓协议,就是两个或者两个以上的参与者为完成某项特定的任务而采取的一系列步骤。这个定义包含三层含义:

(1)协议自始至终是有序的过程,在前一步没有执行之前,后面的步骤不能执行;

(2)协议至少需要两个参与者;

(3)通过协议必须能够完成某项任务。密码协议是使用密码技术的协议,协议的参与者可以是信任实体,也可能是攻击者。所有的密码协议,都依赖于特定的密码算法。在系统通信中最常用、最基本的密码协议按照其完成的功能可以分成以下三类:

(1)身份鉴别协议。在安全系统中进行通信时,为了保证安全性,通信的一方需要知道另一方的身份,这就需要使用身份鉴别协议。在身份鉴别体系中被鉴别的消息是相对固定的,通信一方声称的身份可以立即被另一方确认或否认。

(2)数字签名协议。数字签名协议和身份认证协议相似,但复杂得多。在数字签名协议中,消息是易变的,且具有生命期。数字签名在信息安全领域有很多应用,如公钥证书、数据完整性和匿名性等。

(3)密钥分配协议。密钥分配协议是指为了在通信中达到保密的目的,要求参与通信的两个或者多个实体之间具有会话密钥的一致性。这种协议可以采用对称密码体制(如DES等),也可以采用非对称密码体制(如Diffie-Hellman公钥交换等)。

2.密码协议的安全性密码协议是许多安全系统的基础,确保这些协议的正确运行是极为重要的。大多数密码协议只包含几轮消息传递,其中传递的每轮消息都是经过细心设计的,消息之间存在着复杂的相互作用和制约;同时,密码协议中使用了多种不同的密码体制。3.密码协议的分析目前,对密码协议进行分析的方法主要有两大类:一类是攻击检验方法;一类是形式化的分析方法。所谓攻击检验方法,就是使用目前已知的所有的有效攻击方法,对密码协议进行攻击,检验密码协议是否能够抵抗这些攻击。10.2身份鉴别(认证)协议10.2.1口令鉴别传统的口令鉴别方案被认为是一种弱认证方案。其基本思想是每一个用户都拥有自己的秘密口令,即用户与系统的共享密钥,在访问系统资源时,用户必须输入正确的用户名及其对应的秘密口令,系统通过验证用户名和口令的匹配性来对用户进行授权,这一过程经常涉及到知识证明技术。最简单的方法是在系统的口令文件中存储用户口令的明文。口令文件必须是读保护和写保护的,这必须对操作系统的访问控制权限进行设定。这种技术的缺点是它不能抵抗内部超级用户(系统管理员)的攻击。还有一种经常使用的对用户的口令进行保护的技术是单向函数。为了对用户的口令进行验证,系统通过单向函数对输入的口令进行运算,然后检查其匹配性。和前一种方法不同的是,这种口令文件只需要写保护。为了提高安全性,系统一般会限制使用弱口令。如限定口令长度的最小值,口令必须包含某几种字符集,不能与用户账号有关等。这样做的目的是提高口令的不确定性(熵值),从而使得对口令的攻击成为穷举攻击。另一种增加安全性的方法是设定口令的生命期,但这需要对口令进行周期性更改。为了抵抗字典攻击,可以在进行单向函数运算前给口令加入一些随机值,并把经运算后的口令和随机值存入口令文件中,这样做虽不会改变穷举攻击的困难度,但却提高了口令抵抗字典攻击的能力。为了在容易记忆的基础上增加口令的不确定性,可以使用一种称之为口令句的技术,即用户输入一个短语或句子(口令句),系统通过对口令句进行哈希操作从而得到口令。

下面列出了几种常用的对口令鉴别的攻击方法:

(1)窃听和重放攻击:使用口令的方案有很大的弱点,用户输入的口令在通信信道上是以明文形式传输的,同时在认证过程中口令也是以明文方式出现的,这使得攻击者可以很方便地得到口令,所以使用口令的认证协议时,通信信道必须是安全的,同时验证系统对输入口令的响应必须要经常改变,以防止简单的重放攻击。(2)穷举攻击:这是对口令认证协议的最简单的攻击方式,但其依赖于口令可能的字符集和攻击者的计算能力,因此,穷举攻击的应用受到了很大程度的限制。

(3)字典攻击:为了使攻击更有效,攻击者通常会对用户的口令做出一些较符合实际情况的假设,如短口令,有意义的口令,名字和小写字母等,这些弱口令的熵值较小。10.2.2挑战-响应(challenge-response)式认证

1.采用分组密码技术的挑战-响应式认证方案在使用分组密码技术进行挑战-响应式认证制时,认证的发起者和验证者间需要有共享密钥。在系统用户较少的情况下,这个要求容易满足,而在用户较多的情况下,一般会使用可信的第三方来帮助用户进行通信。(1)基于时间戳的单向认证。(2)基于随机数的单向认证。(3)基于随机数的双向认证。

2.采用公钥密码技术的挑战-响应式认证在利用公钥密码技术进行认证时,发起者可以通过两种方法来证明其身份:①对用其公钥加密过的随机数进行解密;②对随机数进行签名。为了保证安全性,这种认证协议的公、私钥对不能在其他应用中使用;同时,协议还应能够抵抗选择密文攻击。(1)简单的认证协议。(2)基于随机数的单方公钥认证。10.2.3基于零知识证明的身份鉴别零知识证明的核心思想是使验证者在不获取任何有用信息的情况下,达到认证的目的。示证者通过声明一系列其他的知识,使验证者确信示证者确实掌握“秘密”,从而达到认证的目的。零知识证明技术应满足以下几个条件:(1)示证者几乎不可能欺骗验证者。若其掌握知识,则验证者几乎确信这一事实;若其不掌握知识,则验证者相信他掌握知识的概率接近于零。

(2)验证者几乎不可能得到证明的信息,特别是验证者不可能向其他人出示此证明。

(3)验证者从示证者那里得不到任何有关证明的知识。1.Feige-Fiat-Shamir认证协议

1987~1988年,U.Feige把Fiat-Shamir协议修改为一个典型的零知识证明协议,其对计算能力要求较低,所以适用于低计算能力的处理器。

1)系统参数选择设可信中心T向所有用户公布模数n=p×q,其中,p=3mod4,q=3mod4。每个用户随机选取k个比n小的正整数s1,s2,…,sk和k个随机比特值b1,b2,…,bk。计算vi=

×(

)-1modn,1≤i≤k。其公钥为(v1,v2,…,vk,n),私钥为(s1,s2,…,sk,n)。

2)步骤整个协议分为t轮,每轮步骤如下:

(1)A选择随机数r,1≤r≤n-1和随机比特值b,计算x=(-1)b×r2,并送给B;

(2)B向A送出随机比特序列(e1,e2,…,ek);

(3)A计算并送出y=r×

modn;

(4)B计算z=y2×

modn,并验证是否有z=±x,且z≠0。在t次验证都成功的条件下,B确认A的身份。

3)安全性

(1)此协议基于求解二次同余问题,和分解大整数的困难程度相当。

(2)A欺骗B和攻击者伪装A的概率均为2-kt。

2.GD认证协议

GD认证协议也是Fiat-Shamir协议的一种扩展。在该协议中,交互的消息和所需的存储空间都比较小,所以适用于受限能力的情况。

3.Schnorr认证协议

1990~1991年,Schnorr结合GD协议和Fiat-Shamir协议提出了一种新的认证协议,其安全性基于离散对数的困难性。其利用预计算降低了实时计算量,信息传输量也减少了很多,更适用于计算能力受限的情况。

1)系统参数选取

2)协议执行步骤

3)安全性4.基于ECC的认证协议现有的零知识证明方案很多,但是,零知识证明一般需要多次往复的信息交换,会耗费一定的带宽。因此,基于大数分解和离散对数难题的零知识证明方案代价较高。椭圆曲线算法在安全性、效率、密钥长度、带宽、速度等方面均优于基于大数分解和离散对数难题的算法,因此,可用椭圆曲线离散对数难题来构造零知识证明方案。

1)系统参数选取

2)步骤

3)安全性10.3数字签名

数字签名体系可分为两大类:(1)消息附属(appendix)数字签名:在签名验证阶段需要原始的消息。(2)消息自恢复数字签名:在签名验证阶段不需要原始的消息。图10-1数字签名体系的分类10.3.1RSA签名体系

RSA签名体系的消息空间和密文空间都是

Zn={0,1,2,…,n-1},这里,n=p×q。这种签名体系是一种确定的数字签名体系。1.RSA签名体系的密钥产生每个实体A进行以下操作:(1)随机选择两个大素数p和q;(2)计算n=p×q和φ(n)=(p-1)(q-1);(3)随机选择e,满足1<e<φ(n),gcd(e,φ(n))=1;(4)用欧几里得算法计算d,满足1<d<φ(n),ed=1modφ(n)。2.签名算法(1)计算s=mdmodn;(2)发送(m,s)。3.验证算法(1)计算m′=semodn;(2)验证m′是否等于m,若不等于,则拒绝。4.安全性分析如果攻击者能够进行模n的大整数分解,则它可计算φ(n),从而利用欧几里得算法得到签名者的私钥。所以签名者必须小心地选择p和q。10.3.2Rabin签名体系

Rabin签名与RSA签名很相似,但其使用了一个偶数公钥参数e。为了使验证更简单,Rabin签名设定e=2。

1.Rabin签名体系的密钥产生每个实体A进行以下操作:(1)随机选择两个大素数p和q;(2)计算n=p×q和φ(n)=(p-1)(q-1)。设A的公钥为n,私钥为(p,q)。2.签名算法(1)计算s,使s2=mmodn;(2)发送(m,s)。

3.验证算法(1)计算m′=s2modn;(2)验证m′是否等于m,若不等于,则拒绝。

4.安全性分析攻击者选一个x,求出x2=m′modn,并送给签名者。签名者将签名s送给攻击者。若s≠±x,则攻击者有1/2的机会分解n,从而可破解此系统。10.3.3Feige-Fiat-Shamir签名方案

1.Feige-Fiat-Shamir签名体系的密钥产生

每个实体A进行以下操作:(1)随机选择两个大素数p和q,并计算n=p×q;(2)选择k个不同的整数s1,s2,…,sk∈Z*n;(3)计算vj=s-2jmodn,1≤j≤k。

2.签名算法(1)选择随机数r,1≤r≤n-1;(2)计算u=r2modn;(3)计算e=(e1,e2,…,ek)2=h(m‖u);(4)计算;(5)m的签名为(e,s)。3.验证算法(1)计算;(2)计算e′=h(m‖w);(3)若e=e′,则接受签名,否则拒绝。其中,4.安全性分析和RSA方案不同,Feige-Fiat-Shamir签名方案中的所有实体都是用同一个模数n。在这种情况下,需要可信的第三方来产生p和q

以及各实体的公私钥。10.3.4GQ签名方案

1.Guillou-Quisquater签名体系的密钥产生每个实体A进行以下操作:(1)随机选择两个大素数p和q,并计算n=p×q;(2)选择整数e∈{1,2,…,n-1},使得

gcd(e,(p-1)(q-1))=1;(3)选择整数JA,1<JA<n,且gcd(JA,n)=1;

(4)计算J-1Amodn,d1=(e-1)mod(p-1)和d2=(e-1)mod(q-1),a1=(J-1A)d1modp和a2=(J-1A)d2modq,最后解a,使得a=a1modp,a=a2modq。2.签名算法(1)选择随机数k,计算r=ke

modn;(2)计算l=h(m‖r);(3)计算s=kal

modn;(4)m的签名为(s,l)。3.验证算法(1)计算u=seJlAmodn和l′=h(m‖u);(2)若l=l′,则接受签名,否则拒绝。其中,u=seJlA=(kal)eJlA=ke(aeJA)l=ke=rmodn。

4.安全性分析在签名算法中,为了防止攻击,e必须足够大。否则的话,攻击者选择消息m并计算l=h(m‖JAt),直到有t满足l=tmod

e;然后确定x使得t=xe+l,并计算s=JAxmodn。由于seJlA=(JxA)eJlA=JAxe+l=JtAmodn,所以,h(m‖JtA)=l,即(s,l)是消息m的有效(伪造)签名。10.3.5DSA1.数字签名算法(DSA)1991年8月,美国国家标准技术研究所(NIST)公布了一种数字签名算法(DSA),之后,DSA成为美国联邦信息处理标准DSS(FIPS186),并成为第一个经过各国政府验证的数字签名方案。DSA是ElGamal签名方案的变种,使用了安全哈希函数(SHA-1)。1)DSA签名体系的密钥产生每个实体A进行以下操作:(1)随机选择大素数q,2159<q<2160;(2)选择t,0≤t≤8,素数p,2511+64t<p<2512+64t,且q|(p-1);(3)选择元素g∈Z*p,并计算α=g(p-1)/qmodp,若α=1,则重新选择g;(4)选择随机数a,1≤a≤q-1;(5)计算y=αamodp。2)签名算法(1)选择随机数k,0<k<q;(2)计算r=αkmodpmodq;(3)计算k-1modq;(4)计算s=k-1{h(m)+ar}modq;(5)m的签名为(r,s)。3)验证算法(1)验证0<r<q和0<s<q,若不满足则拒绝;(2)计算w=s-1modq和h(m);(3)计算u1=w×h(m)modq和u2=rwmodq;(4)计算v=αu1yu2modpmodq;(5)若v=r,则接受签名,否则拒绝。4)安全性分析

DSA的安全性依赖于两种不同的离散对数问题:一种是在Z*p上的离散对数问题,另一种是在阶为q的循环子群上的离散对数问题。

2.ElGamal签名方案

ElGamal签名是一种随机附属签名机制,它可以对任意长度的二进制消息格式进行签名。数字签名算法(DSA)是它的一种变种。1)ElGamal签名体系的密钥产生每个实体A进行以下操作:(1)随机选择大素数p和Z*p上的生成元α;(2)选择随机整数a,1≤a≤p-2;(3)计算y=αamodp。2)签名算法(1)选择随机数k,1≤k≤p-2且gcd(k,p-1)=1;(2)计算r=αkmodp;(3)计算k-1modp-1;(4)计算s=k-1{h(m)-ar}modp-1;(5)m的签名为(r,s)。3)验证算法(1)验证1≤r≤p-1,若不满足则拒绝;(2)计算v1=yrrsmodp;(3)计算h(m)和v2=αh(m)modp。(4)若v1=v2,则接受签名,否则拒绝。4)安全性分析(1)攻击者要伪造签名就要确定s的值,若离散对数问题是困难的,则攻击者正确选择s的概率为1/p,当p足够大时,这个概率可忽略。(2)每次签名时必须选择不同的k,否则的话,签名者的私钥有可能暴露。3.Schnorr签名方案

ElGamal签名方案的另一个变种是Schnorr签名。和DSA一样,Schnorr签名也使用了Z*p上阶为q的循环子群。二者的密钥产生过程也极其相似,但Schnorr签名对p和q的大小没有限制。1)签名算法(1)选择随机数k,0<k<q;(2)计算r=αkmodp,e=h(m‖r),s=ae+kmodq;(3)m的签名为(s,e)。2)验证算法(1)计算v=αsy-emodp和e′=h(m‖v);(2)若e=e′,则接受签名,否则拒绝。3)安全性分析在ElGamal签名方案中,α是Z*p的本元元素;而在Schnorr签名方案中,α是Z*p中子集Z*p的本原元素,它不是Z*p的本原元素。10.3.6一次性数字签名

1.Rabin一次性签名方案在Rabin一次性签名方案中,签名的验证需要签名者和验证者的交互,同时验证过程也只能进行一次。

1)Rabin签名体系的密钥产生每个实体A进行以下操作:(1)选择分组密码体系E;(2)随机选择2n个长为l的整数k1,k2,…,k2n;(3)计算yi=,1≤i≤2n。2)签名算法(1)计算h(m);(2)计算si=Eki(h(m)),1≤i≤2n;(3)m的签名为(s1,s2,…,s2n)。3)验证算法(1)计算h(m);(2)随机选择n个不同的整数rj,1≤rj≤2n,1≤j≤n;(3)请求签名者给予私钥krj,1≤j≤n;(4)计算,并验证,1≤j≤n;(5)验证,1≤j≤n。4)安全性分析在此方案中,对于给定的公钥,签名者至多能对一个消息进行签名,否则的话,攻击者或验证者都可以获得k(>n)个密钥,这时,攻击者或验证者就可以伪造签名者进行签名。2.Merkle一次性签名方案

1)Merkle签名体系的密钥产生每个实体A进行以下操作:(1)若消息m的比特长为n,则随机选择

t=n+[lgn]+1个长为l的整数k1,k2,…,kt;

(2)计算vi=h(ki),1≤i≤t。2)签名算法(1)构造w=m‖c=(a1a2…at)2,其中c为m中0的个数;(2)确定i1<i2<…<iu,使得=1,1≤j≤u;(3)令,1≤j≤u;(4)m的签名为(s1,s2,…,su)。3)验证算法(1)构造w=m‖c=(a1a2…at)2,其中c为m中0的个数;(2)确定i1<i2<…<iu,使得=1,1≤j≤u;(3)若对所有的1≤j≤u都有=h(sj),则接受签名,否则拒绝。

4)安全性分析攻击者不能对消息m′≠m的签名进行伪造。这时,令w′=m′‖c′。3.GMR一次性签名方案

Goldwasser、Micali和Rivest提出了一种一次性签名方案,这种签名需要claw-free置换对。在选择消息攻击下,这种签名方案是第一个被证明安全的签名方案。定义:令gi:X→X,i=0,1是在有限集合X上的两个置换。

1)Merkle签名体系的密钥产生每个实体A进行以下操作:

(1)选择某集合X上的陷门claw-free置换对g0和g1;

(2)在X中随机选择元素r。设A的公钥为(g0,g1,r),私钥为(g-10,g-11)。

2)签名算法

(1)设消息m的二进制表示为m1m2…mt,计算Sr(m)=;

(2)m的签名为Sr(m)。3)验证算法(1)计算r′=

;(2)若有r=r′,则接受签名,否则拒绝。在算法中,r′=

=

4)安全性分析使用签名算法时,消息空间中的任意元素都不能是另一元素的前缀,否则的话,设消息m=m1m2…mt,其签名为Sr(m)=,若有m′=m1m2…mu,u<t,则攻击者可以方便地伪造m′的签名:Sr(m′)=

=。10.3.7具有特殊性质的一些签名方案

1.盲签名在一般的数字签名中,总是要先知道文件的内容然后才签名,但有时我们需要某人对一个文件签名,但又不想让他知道文件的内容,这种签名成为盲签名。

下面给出了一种基于RSA的盲签名协议,在签名过程中,签名算法使用了RSA签名方案,公钥为(n,e),私钥为d。

Chaum盲签名协议步骤:(1)验证者随机选择k,0≤k≤n-1,gcd(n,k)=1;(2)验证者计算m*=mke

modn;

(3)签名者计算s*=(m*)dmodn;(4)验证者计算s=k-1s*modn;(5)m的签名为s。2.不可否认签名

不可否认签名的思想最早由Chaum和Antwerpen引入。这类签名最本质的思想是在无签名者合作的条件下不可能验证签名,从而可以防止复制或散布他所签名消息的可能性。

1)签名方案的密钥产生

2)签名算法

3)验证算法

4)安全性分析伪造签名者能够正确猜出a的概率为1/q,而且这个概率与伪造者的计算能力无关。3.防失败签名防失败签名由B.Pfitzmann和M.Waidner提出,它可以允许实体证明一个签名是否是伪造的,这种证明并不依赖于任何密码假设,且其失败的概率与伪造者的计算能力无关。这种签名方案的优点是即使攻击者可以伪造签名,伪造的签名也可以被检测出来。

1)签名方案的密钥产生

2)签名算法

3)验证算法4.环签名

2001年,Rivest、Shamir和Tauman提出了一种环签名体系。在这种体系下,签名者利用群体信息进行签名,但并不需要群成员的合作,在环中的非签名者不会意识到他们在签名中的作用。

1)签名方案的密钥产生

2)签名算法

3)验证算法

4)环签名分析10.3.8基于椭圆曲线的签名算法

1.ECDSAECDSA已经被标准化,并在IEEEP1363和ANSIX9.62、X9.63中被采纳,未来几年很可能取代DSA而成为新的数字加密标准。ECDSA是一种不带消息恢复功能的签名方案。下面简要介绍一下ECDSA,并对其进行分析。

1)签名方案的密钥产生

2)签名算法

3)验证算法

4)ECDSA分析

2.Nyberg-Rueppel签名方案

Nyberg-Rueppel签名方案是一种可以恢复消息的签名方案,其安全性基于离散对数问题。下面给出了基于椭圆曲线离散对数问题的Nyberg-Rueppel签名方案。签名方案的密钥产生过程如上。

1)签名算法

2)验证算法

3)Nyberg-Rueppel签名方案分析

3.盲签名盲签名常用在匿名的投票、选举、电子拍卖和电子现金系统中。下面介绍Schnnor盲签名方案在椭圆曲线上的模拟。设A想让B对信息m进行盲签名。签名方案的密钥产生过程如上。

1)签名算法

2)验证算法4.单向签名单向签名是指数字签名只有特定的接收方才能验证签名,其他人是无法验证签名的。签名方案的密钥产生过程如上。

1)签名算法(1)A选择随机数0<k<n,计算:

c=(dA+k)QA=(x,y),R=kG,s=xdA-mkmodn;(2)签名为(R,s),与消息m一起送给B。5.可还原消息的单向签名设P(m)为m在椭圆曲线上的映射点。

1)签名算法(1)A选择随机数0<k<n,计算:c=P(m)+(dA+k)PB=(x,y),R=kG,y=k+xdAmodn;(2)消息m的签名为(c,R,y)。

2)验证算法(1)B验证yG=R+xPA是否成立;(2)消息还原:B利用方程P(m)=c-dB(PA+R)还原出消息点P(m),再解码得到消息m。6.群签名群签名技术在1991年由Chaum和Heijst首次提出,其后得到了较深入的研究,并在电子现金、电子投票、电子拍卖等领域得到了广泛应用。

1)系统初始化签名中心选择安全的椭圆曲线E,公开(E(GF(p)),a,b,G,n,h),其中#E(GF(p))=n×h。假设k个用户ui要进行群签名,ui的私钥为di,公钥为Pi=diG。向签名中心发送Pi,并公开Pi。用户U首先将要签名的信息m发送给签名中心。

2)签名算法

(1)每个签名者ui选择随机数ki,计算Ri=kiG=(xi,yi),ri=ximodn,把ri发送给签名中心;

(2)签名中心计算e=Hash(m,T),T为时间戳,r=

rimodn,并把e、r发送给每个签名者ui;

(3)每个签名者ui计算si=(kie+rdi)modn,并把si发送给签名中心;

(4)签名中心计算s=

simodn,群签名为(e,r,s),并发送给用户U。

3)验证算法

(1)从签名中心获得用户ui的公钥Pi,计算:P=

Pimodn;

(2)计算X=e-1(sG-rP)=(x,y),v=xmodn;

(3)如果v=r,则接受签名。其中,10.4密钥分配协议10.4.1使用对称密码技术的密钥传输协议这一节讨论在进行密钥分配时,使用基于对称密码技术的密钥传输协议的情况。根据协议是否使用可信第三方,我们将其分为有可信第三方的密钥传输协议和无可信第三方的密钥传输协议。1.无可信第三方的密钥传输协议

1)基于对称密码的点对点的密钥更新基于对称密码的点对点的密钥更新利用了通信双方间的长期对称密钥,通过这个长期密钥可以重复分配通信双方的会话密钥。(1)一轮密钥传输:

A→B:EK(rA)

A→B:EK(rA,t*A,B*)

(2)挑战响应模式的密钥传输:

A←:nB

A→B:EK(rA,nB,B*)

同样,这种方式下会话密钥仍然是W=rA。如果要求会话密钥与通信双方的输入都相关,则A可以在上述传输过程的第二步加入一次性随机数nA,即

A←B:nB

A→B:EK(rA,nA,nB,B*)

A←B:EK(rB,nB,nA,A*)2)基于密钥获取和单向函数的点对点的密钥传输在每次会话时,通信一方利用另一方的随机输入,也可以达到密钥更新的目的。如A选择随机数rA,并将其发送给B,则二者通信密钥为W=EK(rA)。由于此技术本身并不需要解密,所以可以用恰当的单向函数代替加密操作。

鉴别密钥交换协议(AKEP2):设A和B有两个共享长期密钥K、K′,h和h′为哈希函数。协议步骤(1)A选择随机数rA,并将其发送给B;(2)B选择随机数rB,将(B,A,rA,rB)和hK(B,A,rA,rB)发送给A;(3)A接收到消息后,对rA和hK(B,A,rA,rB)进行验证,若通过,则向B发送(A,rB)和hK(A,rB);(4)B接收到消息后,对rB和hK(A,rB)进行验证;(5)A和B的会话密钥为W=hK′′(rB)。3)无前期共享密钥的密钥传输

Shamir提出了一种密钥传输协议,在此协议中,每个通信者只需要有自己的对称密钥,而并不需要通信双方间的前期共享密钥。但这种协议只可以抵抗被动攻击者。Shamir无密钥协议:设p是公用的大素数,通信者A、B各自选择秘密值a和b,1≤a,b≤p-2,且a,b与p-1互素。协议步骤为:(1)A选择随机值K,1≤K≤p-2,计算并发送Kamodp;(2)B计算(Ka)b

modp,并将其发送给A;(3)A计算(Kab)-a

modp=Kbmodp,并将其发送给B;(4)B计算(Kb)-bmodp=Kmodp。(5)K为A和B的通信密钥。2.有可信第三方的密钥传输协议下面讨论的密钥传输协议需要有可信第三方的参与,在整个系统中,每一个实体都与可信第三方有一个共享密钥。在这种协议中,可信第三方可以做为密钥分发中心(KDC)或密钥传输中心(KTC)。下面介绍几个典型协议。

1)Kerberos鉴别传输协议

·简单的Kerberos鉴别传输协议步骤:

(1)A选择一次性随机数NA,并将(A,B,NA)发送给T;

(2)T选择会话密钥k,设定其生命期L,然后用T和A的共享密钥EKAT生成EKAT(k,NA,L,B);同时,T用T和B的共享密钥EKBT生成标签EKBT(k,A,L);T向A发送EKAT(k,NA,L,B)和EKBT(k,A,L);

(3)A对EKAT(k,NA,L,B)解密,并对NA进行验证;A选择时间戳TA和秘密值Asubkey,生成并向B发送EKBT(k,A,L)和Ek(A,TA,Asubkey);

(4)B对EKBT(k,A,L)解密得到k,然后对Ek(A,TA,Asubkey)解密,接着分别对A的身份、TA的有效性和L的有效性进行验证;之后,B选择秘密值Bsubkey,计算并向A发送Ek(TA,Bsubkey);

(5)A对Ek(TA,Bsubkey)解密并验证TA。

·Kerberos鉴别传输协议分析:

(1)通过时间戳的使用,此协议提供了安全性和同步性;

(2)Asubkey和Bsubkey可以做为通信时的可选参数;

(3)标签中的生命期在不需要T参与的情况下,允许B对A进行多次认证。

2)Needham-Schroeder密钥协商协议

Needham-Schroeder密钥协商协议是很多鉴别传输协议和密钥分发协议的基础,如Kerberos和Otway-Rees协议等,通过运行该协议可以实现实体认证和密钥分配的功能。

·Needham-Schroeder协议步骤:同样,此协议也包括通信者A、B和可信第三方T。设A与T的密钥为KAT,B与T的密钥为KBT。NA和NB分别为A与B选择的一次性随机数,加密算法为E。

(1)A将(A,B,NA)发送给T;

(2)T选择会话密钥k,计算并向A发送EKAT(NA,B,k,EKBT(k,A));

(3)A将收到的信息解密后,计算EKBT(k,A)并把其发送给B;

(4)B将收到的信息解密后,对A的身份进行鉴别,计算Ek(NB)并把其发送给A;

(5)A将收到的信息解密后,计算Ek(NB-1)并把其发送给B。

·Needham-Schroeder密钥协商协议分析:在Needham-Schroeder协议中,B并不能确认会话密钥的新鲜性,如果有攻击者得到了会话密钥k,则他可以冒充A。

3)Otway-Rees协议

Otway-Rees协议也是一种需要可信第三方参与的协议,它可以提供密钥的认证和新鲜性,但不能实现实体认证的功能。

·Otway-Rees协议步骤:

A、B、T、KAT、KBT、NA和NB与Needham-Schroeder协议中的定义一样,M为A选择的第二个一次性随机数。

(1)A将M、A、B、EKAT(NA,M,A,B)发送给B;

(2)B收到信息后,计算EKBT(NB,M,A,B)并把其和收到的消息发送给T;

(3)T将收到的信息解密后,对M、A和B进行验证,若通过验证,则T选择新的k,计算EKAT(NA,k)和EKBT(NB,k)并把其发送给B;

(4)B将收到的信息解密后,对NB进行鉴别,通过后将EKAT(NA,k)发送给A;

(5)A将收到的信息解密后,对NA进行鉴别。

·Otway-Rees协议分析:在Otway-Rees协议中,若所有的验证都通过了,则保证了密钥的新鲜性。通过第(4)步的消息传输,A可以确保B发送的消息的新鲜性,但B不能确保A发送的消息的新鲜性。10.4.2基于对称密码技术的密钥协商协议设Fq是阶为q的有限域,G为Fq上的k×n生成矩阵,G中的元素使用MDS纠错码编码。可信第三方T选择Fq上的对称矩阵D。(1)设密钥矩阵S=(DG)T=(S1,S2,…,Sn)T,T向每个用户Ui发送密秘值Si,这里Si为k元组;(2)用户Ui利用Si和G的第j列计算K=(DG)TG上的元素kij;(3)用户Uj利用Sj和G的第i列计算K=(DG)TG上的元素kji=kij。10.4.3基于公钥密码技术的密钥传输协议

1.使用公钥加密的密钥传输协议

Needham-Schroeder公钥协议提供了实体认证和通信双方的相互密钥传输。传输的密钥可以用作实体认证和将来的通信。

设PX(Y)表示用X的公钥对Y进行加密,k1和k2是A、B选择的对称会话密钥。

协议步骤为:(1)A向B发送PB(k1,A);(2)B解密得到k1,向A发送PA(k1,k2);(3)A解密得到k1和k2,对k1进行验证,通过后向B发送PB(k2);(4)B解密得到k2,对k2进行验证;(5)A、B的会话密钥可以通过不可逆的函数f计算得到。2.结合公钥加密和数字签名的密钥传输协议(1)加密签名后密钥:

综合运用公钥加密和数字签名的方式之一是对已签名密钥进行加密,如

A→B:PB(k,tA,SA(B,k,tA))

(2)加密和签名分别使用:

对于不能对消息进行恢复的签名体系,我们可以把加密操做和签名操作分开进行,但这只适用于明文不会从签名中泄漏的情况,如

A→B:PB(k,tA),SA(B,h(k),tA)

(3)签名加密后密钥和加密签名后密钥的技术不同,这种方法的一般过程为

A→B:tA,PB(A,k),SA(B,tA,PB(A,k))3.X.509强认证传输协议协议步骤为:(1)A选择rA和会话密钥k1,向B发送certA,DA,SA(DA);(2)B对certA进行验证,得到A的公钥后验证SA(DA),之后检验tA是否有效,rA是否被重复使用。

(3)A对certB进行验证,得到B的公钥后验证SB(DB),之后检验tB是否有效,rB是否被重复使用;若验证全部通过,则解密得到k2并将其保留,以方便将来使用。4.混合加密的密钥传输协议除了以上介绍的密钥传输协议外,有一类协议在密钥传输时混合使用了对称加密和公钥加密技术,如Beller-Yacobi协议。

Beller和Yacobi提出的密钥传输协议提供通信双方间的相互认证和对会话密钥认证的功能,适用于计算能力不对称的环境。设IX代表X的身份,EK(y)是使用密钥K对y加密的对称密码算法。设nS是大素数,α是模nS的乘法群的生成元。可信第三方T选择素数p和q,计算nT=p×q,之后选择公钥eT=3,计算dT,满足eT×dT=1mod((p-1)(q-1))。T向每个用户公布其公钥和系统参数nT,(nS,α)。每个客户端用户A选择秘密随机数a,1<a<nS-1,计算uA=αamodnS,并将其发送给T。

T向用户发送公钥证书certA=(IA,uA,GA),其中,GA=ST(IA,uA)=(h(IA,uA))dTmodnT。每个服务器用户B选择两个大素数并计算其乘积nB,设其公钥为eB=3,计算dB,满足eB×dB=1modφ(nB)。B向T发送nB,T收到消息后向B发送certB=(IB,nB,GB),其中,GB=ST(IB,nB)=(h(IB,uB))dTmodnT。协议步骤为:

(1)A选择随机数x,1≤x≤nS-2,计算v=αxmodnS、

x-1mod(nS-1)和a×vmod(nS-1);

(2)B向A发送certB=(IB,nB,GB);

(3)A通过计算h(IB,nB)=G3BmodnT

来确认nB,之后选择随机会话密钥K,1<K<nB-1,将PB(K)=K3modnB发送给B;

(4)B计算K=SB(PB(K))=(PB(K))dBmodnB后,选择随机整数m,计算并向A发送EK(m‖{0}t),t≈50;

(5)A对收到的消息进行解密,检验解密结果的后缀是否为0串,若是,则说明B已得到K;A构造M=(m,IB),并计算w=(M-av)×x-1mod(nS-1),向B发送

EK((v,w),certA);

(6)B对收到的消息进行解密,通过检验h(IA,uA)=G3Amodn

T来确认uA,最后构造M=(m,IB),通过计算αM=uvA×vwmodnS验证A对m的签名。如果通过,则B确认A的身份并与其共享会话密钥K。10.4.4基于公钥密码技术的密钥协商协议

1.Diffie-Hellman和其相关协议通信双方可以在开放信道上利用Diffie-Hellman协议进行密钥协商,其安全程度依赖于离散对数问题。

2.ElGamal密钥协商协议

ElGamal密钥协商协议是Diffie-Hellman协议的变种。每个用户选择p为大素数,α为Z*p的生成元,选择随机数b,1≤b≤p-2,计算αbmodp,其公钥为(p,α,αb),私钥为b。3.MTI/A0密钥协商协议

MTI/A0密钥协商协议也是Diffie-Hellman协议的变种,它可以抵抗被动攻击者。

设p为大素数,α为Z*p的生成元。每个用户A选择随机数a作为长期私钥,1≤a≤p-2,计算长期公钥zA=αamodp。设B的公、私钥对为(zB,b)。4.站点对站点(STS)协议

STS协议作为Diffie-Hellman协议的变种,具有更多的功能,如通信双方的实体认证和匿名性等。

设E为对称加密算法。设p为大素数,α为Z*p的生成元。每个用户A选择RSA公、私钥对(eA,nA)和dA,SA(m)=(H(m))dAmodnA表示A对m的签名。5.基于椭圆曲线的Diffie-Hellman密钥协商协议

用椭圆曲线可以很容易地实现Diffie-Hellman密钥协商。设A和B分别选取随机数a和b予以保密,将aG,bG∈E公开,则A和B间通信用的密钥为abG,这是第三方无法得知的。MQV密钥协商协议就属于此类协议。该方案是由Menese、Qu和Vanstone等人提出的,可以防止前面提到的对Diffie-Hellman密钥交换协议的中间人攻击。它实际上采用的是用双重公钥,即A和B都将拥有两对密钥,一对是静态的,另一对是方案实施过程中临时产生的。MQV密钥协商协议如下:设E是定义在有限域GF(p)上的椭圆曲线。#E(GF(p))可被一个大素数n整除,#E(GF(p))=nh,一个基点GE(GF(p))。每个实体A进行以下操作:(1)随机选择整数d;

温馨提示

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

最新文档

评论

0/150

提交评论