理论教育 安全协议攻击分析-安全协议

安全协议攻击分析-安全协议

时间:2023-10-28 理论教育 版权反馈
【摘要】:在此模型下,攻击者对网络有完全的控制权,可以在协议执行中的任何环节采取任何形式的攻击。迄今为止,大部分有关安全协议的研究工作都遵循Dolev和Yao的基本思想。对不同类型的安全协议,存在着不同的攻击,从而使协议达不到预定的安全目标,并且新的攻击方法也在不断产生。另外,对安全协议施加各种可能的攻击来测试其安全性也是常用手段之一。这种攻击可能仅在相同协议的并行运行时发生,也称为并行会话攻击。

安全协议攻击分析-安全协议

1983年,Dolev和Yao(姚期智)发表了安全协议发展史上的一篇重要论文。该论文的主要贡献有两点。其一是将安全协议本身与安全协议采用的密码系统分开,在假定密码系统是“完善”的基础上讨论安全协议本身的正确性、安全性、冗余性等。从此,学者们可以专心研究安全协议的内在安全性质了。即问题很清楚地被划分为两个不同的层次:首先研究安全协议本身的安全性质,然后讨论实现层次的具体细节,包括所采用的具体密码算法等。

其二是Dolev和Yao建立了攻击者模型。他们认为,攻击者的知识和能力不能够低估,攻击者可以控制整个通信网络。Dolev和Yao认为攻击者具有如下能力:

(1)可以窃听所有经过网络的消息。

(2)可以阻止和截获所有经过网络的消息。

(3)可以存储所获得或自身创造的消息。

(4)可以根据存储的消息伪造消息,并发送该消息。

(5)可以作为合法的主体参与协议的运行。在此模型下,攻击者对网络有完全的控制权,可以在协议执行中的任何环节采取任何形式的攻击。

Dolev和Yao的工作具有深远的影响。迄今为止,大部分有关安全协议的研究工作都遵循Dolev和Yao的基本思想。

对协议的攻击方法是多种多样的。对不同类型的安全协议,存在着不同的攻击,从而使协议达不到预定的安全目标,并且新的攻击方法也在不断产生。另外,对安全协议施加各种可能的攻击来测试其安全性也是常用手段之一。表1.1列出一些典型攻击并作了定义。

表1.1 协议攻击类型

1.窃听

窃听是最基本的攻击方式,几乎所有的协议都通过加密解决窃听问题。窃听通常被看作被动攻击,因为攻击者并不影响合法用户的通信。除此之外的其他攻击方式都看作主动攻击。例如,明文传输认证信息的协议POP3/SMTP、FTP、Telnet都存在窃听的威胁。通常使用加密来保护敏感信息。

2.篡改

如果协议的消息域没有冗余,则篡改是一种潜在的威胁。篡改的类型包括删除、修改、伪造、乱序、重放、插入。篡改属于主动攻击,破坏完整性,有时仅仅加密并不能提供数据完整性。例如,许多攻击根本不更改任何已知的消息域,却从不同的消息中分割和重组域。这就意味着完整性方法必须考虑到使消息的所有部分保持在一起,仅仅对某些域进行加密是不够的。

3.重放

在重放中,攻击者介入协议运行,通过复制再重放的方式实现攻击。攻击者把之前运行协议中的消息或部分消息插入当前运行的协议中去。重放的消息可能是过去协议运行的一部分,也可能来自正在运行的协议。

4.预重放

预重放可以看成是重放的一种扩展。一个例子是Burmester的三角攻击,首先敌手C窃听A与B的通信,然后C用真实身份分别与A和B通信,由于C是以真实身份与A和B执行协议,A、B相信C应该知道某些秘密,因此C可以诱使A、B透露这些秘密,C利用这些秘密计算出A与B通信的密钥。

5.反射

反射(镜像)是重放的一种重要特例,典型的情形是两个成员参与一个共享密钥协议,且其中一个简单地返回自身的挑战。这种攻击可能仅在相同协议的并行运行时发生,也称为并行会话攻击。协议并行运行是个很现实的假设,例如,一个实体是Internet主机,它可用相同的标识与多个实体会话。

假设攻击者可以同时发起在任意用户之间执行的任意多的并行协议。相同参与者在不同协议运行中担任相同或不同的角色。

假设A和B已经共享一个密钥K,并且分别选择随机数NA和NB。协议的两个实体通过表明知道K来达到相互认证的目的。协议过程如下:

1.A→B:{NA}K

2.B→A:{NB}K,NA

3.A→B:NB

A收到消息2就推断此消息来源于B,因为只有B知道K。但是,如果A要参与并行协议运行,就有另外一种可能,就是消息2由A产生。攻击者C可以成功地完成两次协议的执行,攻击过程如下:

1.A→C:{NA}K

1′.C→A:{NA}K

2′.A→C:{N′A}K,NA

2.C→A:{N′A}K,NA

3.A→C:N′A

3′.C→A:N′A

C收到第1条消息之后,立即发起另一个与A的协议,接着就把从A收到的消息反射给A。反射可使C能够应答第1条消息,之后则可以成功地完成两个协议运行。实际上所有的加密处理都由A进行,但是A却相信是和C成功地完成了两次协议运行。这种类型的攻击常常被称为“信使攻击”,因为A作为C的信使提供所需的密文。

6.拒绝服务(www.daowen.com)

在拒绝服务(Denial of Service,DoS)攻击中,攻击者阻止合法用户完成协议。例如,在基于口令的认证协议中,客户更新口令时,攻击者发起攻击,造成客户与服务器的口令不同步,使得客户在下次登录服务器时,服务器拒绝该客户。在实际中,拒绝服务攻击一般针对与许多客户交互的服务器,如耗光服务器的计算资源(资源耗尽攻击),用光服务器允许连接的客户数(连接耗尽攻击)。

7.类型攻击

当用户接收到的信息都是二进制串时,用户无法判断该二进制串是否经过加密等处理。类型攻击就是利用这一点使得用户将一个消息错误地解释成其他的消息(不同类型的)。例如,本来为实体的标识符可能被解释成一个密钥。

例如,在Otway和Rees的著名协议中,A和B分别与S共享一个长期密钥KAS和KBS。S生成新的会话密钥KAB并传递给A和B。M和NA是A选择的随机数,NB是B选择的随机数。

1.A→B:M,A,B,{NA,M,A,B}KAS

2.B→S:M,A,B,{NA,M,A,B}KAS,{NB,M,A,B}KBS

3.S→B:M,{NA,KAB}KAS,{NB,KAB}KBS

4.B→A:M,{NA,KAB}KAS

类型攻击能进行是由于第一条和最后一条消息的格式相似。要使这样的攻击成功,需要作一些额外的假设,攻击取决于组合域M、A、B的长度要和KAB的长度一样。这也是一个合理的假设,例如,M长64位,A和B是32位,KAB就是128位,是现在对称密钥常用的位数。有了这些假设后,攻击者C可以执行下面的攻击。这里CB表示攻击者C假冒成实体B。

1.A→CB:M,A,B,{NA,M,A,B}KAS

4.CB→A:M,{NA,M,A,B}KAS

C假冒成B并截获从A发出的消息。C之后把这个消息的加密部分返回给A,A就认为是协议中的消息4。由以上的假设,A将把组合域M、A、B当作共享密钥KAB。显然C从消息1可知M、A、B的值,因此可以在会话期间继续假冒成B。

抵抗类型攻击的方法有很多,比如,每次改变消息元素的顺序,如消息4中的{NA,KAB}KAS改成{KAB,NA}KAS,或者在消息中添加消息域的类型信息。

8.密码分析

协议中使用的密码算法被认为是抽象的并且对密码分析免疫。一般来讲,在进行协议分析的时候我们不考虑算法本身的问题,但实际中还需要注意一些问题,例如产生弱密钥的可能性。尤其是在一些基于口令的协议当中,为了便于记忆,口令一般不够长,从而使得猜测或者遍历成为可能。所设计的协议应能够隐藏猜测弱密钥所需的证据。

9.证书操纵

在公钥协议中,数字证书可离线担保实体确实是公钥的所有者。但是当可信组织没有证明相应的私钥真实地被这个声明拥有密钥对的实体所拥有时,就存在潜在的攻击。攻击者可以获得合法的公钥证书,即使它不知道该公钥相对应的私钥。

例如,实体A和B分别拥有公钥ga和gb,相应的私钥为a和b。这里g是群的生成元,在这个群里离散对数问题是困难的。A和B分别拥有证书Cert(A)和Cert(B),证书中有公钥的复制。协议的目标是密钥协商,x和y分别表示A和B所选择的随机数。

1.A→B:gx,Cert(A)

2.B→A:gy,Cert(B)

双方计算的共享密钥是KAB=gay+bx。A计算(gya(gbx得到,B计算(gay(gxb得到。攻击者C选择一个随机值c,声明gac是他的公钥,并获得这个公钥的证书(注意,攻击者C不能获得相应的密钥ac)。之后C假冒B,并完成协议的两次运行,一次和A,另一次和B,攻击过程如下:

1.A→CB:gx,Cert(A)

1′.C→B:gx,Cert(C)

2′.B→C:gy,Cert(B)

2.CB→A:gyc,Cert(B)

当攻击运行完成后,A将计算密钥KAB=(gyca(gbx=gacy+bx,B将计算密钥KCB=(gacy(gxb=gacy+bx。因此A和B的密钥相同,但A相信仅A和B知道这个密钥,而B相信仅C和B知道这个密钥。这个误解就会给以后会话密钥的应用带来问题。

这种类型的攻击可以通过在给公钥发放证书之前要求每个实体表明他知道私钥来避免。一般的,用户可以使用零知识证明向可信组织证明自己掌握相应的私钥,或者用户用私钥签署一个特殊的消息或者挑战证明证书的可靠性

10.协议交互

大多数长期密钥都用在单个的协议中,但是也可能出现密钥用于多个协议的情况。这归因于粗心的设计,但也可能是故意的,如存储能力很小的设备有多个应用的情形(如智能卡)。在此情况下,独立设计的协议之间的交互可能出现问题。例如,一个利用解密来证明持有认证密钥的协议可能会被攻击者用来解密另外一个协议中的消息。攻击者也可以自己构造新的协议使其和要攻击的协议交互运行来达到自己的攻击目的(选择协议攻击)。

通过以上分析可以看出,设计一个安全的密码协议是困难的。主要原因如下:

(1)安全目标模糊。安全需求不清晰,安全目标之间相互关联,当为某个安全目标设计协议时,又不得不考虑其他安全目标。

(2)协议运行环境复杂。攻击者可以在任何环节发起攻击,密码协议的设计必须对其运行环境进行形式化描述。

(3)攻击者模型复杂。设计过程中必须对攻击者模型进行形式化描述,对其可能的攻击行为进行分类和分析。

(4)密码协议并发执行。密码协议本身的并发性增加了密码协议设计与分析的难度。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈