您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 网络安全理论与应用第六章
第六章数字签字与认证协议网络安全理论与应用卫文学信息科学与工程学院2003.3山东科技大学引言数字签名是由公钥密码发展而来的,它在网络安全,包括身份认证、数据完整性、不可否认性以及匿名性等方面有着重要应用。6.1数字签名★消息认证(Messageauthentication)用以保护双方之间的数据交换不被第三方侵犯;但它并不保证双方自身的相互欺骗。假定A发送一个认证的信息给B,双方之间的争议可能有多种形式:–B伪造一个不同的消息,但声称是从A收到的。–A可以否认发过该消息,B无法证明A确实发了该消息。例如:EFT(电子资金传输)中改大金额;股票交易指令亏损后抵赖。数字签名应具有的性质1、必须能够验证作者及其签名的日期时间;2、必须能够认证签名时刻的内容;3、签名必须能够由第三方验证,以解决争议;因此,数字签名功能包含了认证的功能。数字签名的设计要求1、签名必须使用某些对发送者是唯一的信息,以防止双方的伪造与否认;2、必须相对容易生成该数字签名;3、必须相对容易识别和验证该数字签名;4、伪造该数字签名在计算复杂性意义上具有不可行性,既包括对一个已有的数字签名构造新的消息,也包括对一个给定消息伪造一个数字签名;两类数字签名函数1、直接数字签名2、仲裁数字签名直接数字签名(DDS)(1)AB:ESKa[M]提供了认证与签名:•只有A具有SKa进行加密;•传输中无法被篡改;•需要某些格式信息/冗余度;•任何第三方可以用PKa验证签名MEMDSKAESKA(M)PKA源A目标B(1’)AB:EPKb[ESKa(M)]提供了保密(PKb)、认证与签名(SKa):MEEDDMSKAESKA(M)PKBPKASKBESKA(M)EPKB(ESKA(M))直接数字签名(2)AB:M||ESKa[H(M)]提供认证及数字签名--H(M)受到密码算法的保护;--只有A能够生成ESKa[H(M)](2’)AB:EK[M||ESKa[H(M)]]提供保密性、认证和数字签名。直接数字签名的缺点◆验证模式依赖于发送方的保密密钥;–发送方要抵赖发送某一消息时,可能会声称其私有密钥丢失或被窃,从而他人伪造了他的签名。–通常需要采用与私有密钥安全性相关的行政管理控制手段来制止或至少是削弱这种情况,但威胁在某种程度上依然存在。–改进的方式例如可以要求被签名的信息包含一个时间戳(日期与时间),并要求将已暴露的密钥报告给一个授权中心。◆X的某些私有密钥确实在时间T被窃取,敌方可以伪造X的签名及早于或等于时间T的时间戳。仲裁数字签名◆引入仲裁者。–通常的做法是所有从发送方X到接收方Y的签名消息首先送到仲裁者A,A将消息及其签名进行一系列测试,以检查其来源和内容,然后将消息加上日期并与已被仲裁者验证通过的指示一起发给Y。◆仲裁者在这一类签名模式中扮演敏感和关键的角色。–所有的参与者必须极大地相信这一仲裁机制工作正常。(trustedsystem)仲裁数字签名技术(a)单密钥加密方式,仲裁者可以看见消息(1)XA:M||EKxa[IDx||H(M)](2)AY:EKay[IDx||M||EKxa[IDx||H(M)]||T]X与A之间共享密钥Kxa,Y与A之间共享密钥Kay;X:准备消息M,计算其散列码H(M),用X的标识符IDx和散列值构成签名,并将消息及签名经Kxa加密后发送给A;A:解密签名,用H(M)验证消息M,然后将IDx,M,签名,和时间戳一起经Kay加密后发送给Y;Y:解密A发来的信息,并可将M和签名保存起来。解决纠纷:Y:向A发送EKay[IDx||M||EKxa[IDx||H(M)]]A:用Kay恢复IDx,M,和签名(EKxa[IDx||H(M)]),然后用Kxa解密签名并验证散列码注意:在这种模式下Y不能直接验证X的签名,Y认为A的消息已认证,只因为它来自A。因此,双方都需要高度相信A:•X必须信任A没有暴露Kxa,并且没有生成错误的签名EKxa[IDx||H(M)]•Y必须信任A仅当散列值正确并且签名确实是X产生的情况下才发送的EKay[IDx||M||EKxa[IDx||H(M)]||T]•双方都必须信任A处理争议是公正的。只要A遵循上述要求,则X相信没有人可以伪造其签名;Y相信X不能否认其签名。上述情况还隐含着A可以看到X给Y的所有信息,因而所有的窃听者也能看到。(b)单密钥加密方式,仲裁者不可以看见消息(1)XA:IDx||EKxy[M]||EKxa[IDx||H(EKxy[M])](2)AY:EKay[IDx||EKxy[M]||EKxa[IDx||H(EKxy[M])]||T]在这种情况下,X与Y之间共享密钥Kxy,X:将标识符IDx,密文EKxy[M],以及对IDx和密文消息的散列码用Kxa加密后形成签名发送给A。A:解密签名,用散列码验证消息,这时A只能验证消息的密文而不能读取其内容。然后A将来自X的所有信息加上时间戳并用Kay加密后发送给Y。(a)和(b)共同存在一个共性问题:A和发送方联手可以否认签名的信息;A和接收方联手可以伪造发送方的签名;(c)双密钥加密方式,仲裁者不可以看见消息(1)XA:IDx||ESKx[IDx||EPKy(ESKx[M])](2)AY:ESKa[IDx||EPKy[ESKx[M]]||T]X:对消息M双重加密:首先用X的私有密钥SKx,然后用Y的公开密钥PKy。形成一个签名的、保密的消息。然后将该信息以及X的标识符一起用SKx签名后与IDx一起发送给A。这种内部、双重加密的消息对A以及对除Y以外的其它人都是安全的。A:检查X的公开/私有密钥对是否仍然有效,是,则认证消息。并将包含IDx、双重加密的消息和时间戳构成的消息用SKa签名后发送给Y。本模式比上述两个模式具有以下好处:1、在通信之前各方之间无须共享任何信息,从而避免了联手作弊;2、即使SKx暴露,只要SKa未暴露,不会有错误标定日期的消息被发送;3、从X发送给Y的消息的内容对A和任何其他人是保密的。6.2认证协议本节就网络通信中一个基本问题的解决介绍认证协议的基本意义,这一基本问题陈述如下:A和B是网络的两个用户,他们想通过网络先建立安全的共享密钥再进行保密通信。那么A(B)如何确信自己正在和B(A)通信而不是和C通信呢?这种通信方式为双向通信,因此此时的认证称为相互认证。类似地对于单向通信来说,认证称为单向认证。双方认证(mutualauthentication)单向认证(one-wayauthentication)1、双边认证协议最常用的协议,该协议使得通信各方互相认证鉴别各自的身份,然后交换会话密钥。基于认证的密钥交换核心问题有两个:–保密性–时效性为了防止伪装和防止暴露会话密钥,基本认证与会话密码信息必须以保密形式通信。这就要求预先存在保密或公开密钥供实现加密使用。第二个问题也很重要,因为涉及防止消息重放攻击。消息重放:最坏情况下可能导致敌人暴露会话密钥,或成功地冒充其他人;至少也可以干扰系统的正常运行,处理不好将导致系统瘫痪。常见的消息重放攻击形式有:1、简单重放:攻击者简单复制一条消息,以后在重新发送它;2、可被日志记录的复制品:攻击者可以在一个合法有效的时间窗内重放一个带时间戳的消息;3、不能被检测到的复制品:这种情况可能出现,原因是原始信息已经被拦截,无法到达目的地,而只有重放的信息到达目的地。4、反向重放,不做修改。向消息发送者重放。当采用传统对称加密方式时,这种攻击是可能的。因为消息发送者不能简单地识别发送的消息和收到的消息在内容上的区别。对付重放攻击的一种方法是在认证交换中使用一个序数来给每一个消息报文编号。仅当收到的消息序数顺序合法时才接受之。但这种方法的困难是要求双方必须保持上次消息的序号。两种更为一般的方法是:1、时间戳:A接受一个新消息仅当该消息包含一个时间戳,该时间戳在A看来,是足够接近A所知道的当前时间;这种方法要求不同参与者之间的时钟需要同步。2、盘问/应答方式。(Challenge/Response)A期望从B获得一个新消息,首先发给B一个临时值(challenge),并要求后续从B收到的消息(response)包含正确的这个临时值。时间戳方法似乎不能用于面向连接的应用,因为该技术固有的困难。(1)某些协议需要在各种处理器时钟中维持同步。该协议必须既要容错以对付网络出错,又要安全以对付重放攻击。(2)由于某一方的时钟机制故障可能导致临时失去同步,这将增大攻击成功的机会。(3)由于变化的和不可预见的网络延迟的本性,不能期望分布式时钟保持精确的同步。因此,任何基于时间戳的过程必须采用时间窗的方式来处理:一方面时间窗应足够大以包容网络延迟,另一方面时间窗应足够小以最大限度地减小遭受攻击的机会。盘问/应答方法不适应非连接性的应用,因为它要求在传输开始之前先有握手的额外开销,这就抵消了无连接通信的主要特点。对无连接的应用程序来说,利用某种安全的时间服务器实现时钟同步可能是防止重放攻击最好的方法。单钥加密体制下的身份认证1、AKDC:IDA||IDB||N12、KDCA:EKa[Ks||IDB||N1||EKb[Ks||IDA]]3、AB:EKb[Ks||IDA]4、BA:EKs[N2]5、AB:EKs[f(N2)]保密密钥Ka和Kb分别是A和KDC、B和KDC之间共享的密钥。本协议的目的就是要安全地分发一个会话密钥Ks给A和B。A在第2步安全地得到了一个新的会话密钥,第3步只能由B解密、并理解。第4步表明B已知道Ks了。第5步表明B相信A知道Ks并且消息不是伪造的。第4,5步目的是为了防止某种类型的重放攻击。特别是,如果敌方能够在第3步捕获该消息,并重放之,如果没有4、5步这将在某种程度上干扰破坏B方的运行操作。Needham/SchroederProtocol[1978]上述方法尽管有第4,5步的握手,但仍然有漏洞。假定攻击方C已经掌握A和B之间通信的一个老的会话密钥。C可以在第3步冒充A利用老的会话密钥欺骗B。除非B记住所有以前使用的与A通信的会话密钥,否则B无法判断这是一个重放攻击。如果C可以中途阻止第4步的握手信息,则可以冒充A在第5步响应。从这一点起,C就可以向B发送伪造的消息而对B来说认为是用认证的会话密钥与A进行的正常通信。为克服以上弱点,可在第二步和第三步加上一时间戳:DenningProtocol[1982]改进:1、AKDC:IDA||IDB2、KDCA:EKa[Ks||IDB||T||EKb[Ks||IDA||T]]3、AB:EKb[Ks||IDA||T]4、BA:EKs[N1]5、AB:EKs[f(N1)]A、B可以通过以下方式检查T的实时性:|Clock-T|t1+t2其中:t1是KDC时钟与本地时钟(A或B)之间差异的估计值;t2是预期的网络延迟时间。DenningProtocol比Needham/SchroederProtocol在安全性方面增强了一步。然而,又提出新的问题:即必须依靠各时钟均可通过网络同步。如果发送者的时钟比接收者的时钟要快,攻击者就可以从发送者窃听消息,并在以后当时间戳对接收者来说成为当前时重放给接收者。这种重放将会得到意想不到的后果。(称为抑制重放攻击)。一种克服抑制重放攻击的方法是强制各方定期检查自己的时钟是否与KDC的时钟同步。另一种避免同步开销的方法是采用临时数握手协议。KEHN921、AB:IDA||Na2、BKDC:IDB||Nb||EKb[IDA||Na||Tb]3、KDCA:EKa[IDB||Na||Ks||Tb]||EKb[IDA||Ks||Tb]||Nb4、AB:EKb[IDA||Ks||Tb]||EKs[Nb]临时握手协议的具体含义如下:⑴A将产生的一次性随机数NA与自己的身份IDA一起以明文形式发往B,NA以后将与会话密钥KS一起以加密形式返回给A,以保证A收到的会话密钥的新鲜性。⑵B向KDC发出与A建立会话密钥的请求,请求中包含B的身份,一次性随机数NB、B建议
本文标题:网络安全理论与应用第六章
链接地址:https://www.777doc.com/doc-1268345 .html