APP下载

抗重放攻击方案在工程中的应用

2021-04-24

网络安全技术与应用 2021年4期
关键词:发送者序列号接收者

(中国电子科技集团公司第三十研究所 四川 610041)

1 引言

随着网络技术的发展,大部分的业务都在进行全IP 化,在工程中,基本上都要在网络上传输业务数据,如何保障网络安全也显得尤为重要。在影响网络安全的因素中,重放攻击是一个普遍、造成影响巨大的一种攻击手段,本文探讨了重放攻击及其危害,介绍了几种常用的抗重放攻击方案,并对各方案进行了比较。

2 重放攻击介绍

重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已经接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。重放攻击可以由发起者,也可以由攻击者进行。

重放攻击的危害主要有:

(1)破坏发送者和接收者之间认证的安全性;

(2)通过篡改数据,导致发送者和接收者之间无法正常通信;

(3)占用接收者的资源,在强重放攻击下,甚至会导致接收者瘫痪。

3 抗重放方案基本思想

鉴于重放攻击的严重危害,为了确保网络通信的安全,需要采用抗重放方案抵抗重放攻击。

抗重放方案的基本思想为:在网络通信过程中,选择一个“抗重放因子”,根据该“抗重放因子”判断消息的新鲜性,以此识别消息是否为重放消息。常用的“抗重放因子”有时间戳、随机数等。

4 常用的抗重放方案

在讨论抗重放方案之前,有一个最重要的前提需要声明:必须确保攻击者无法修改“抗重放因子”,或者修改了“抗重放因子”也能够被检测出来,通过数字信封、完整性校验等技术可以做到。下面介绍几种在工程中常用的抗重放方案。

4.1 滑动窗口抗重放方案

滑动窗口抗重放方案[4-5]使用滑动窗口,判断“抗重放因子”是否有效,以确认消息是否已经过期。在该方案中,“抗重放因子”为一个递增的序列号,接收者应建立宽度为 W 的窗口。

初始化窗口时,窗口最左侧的序列号为N,最右侧的序列号为N+W-1,序列号N+1,N+2….N+W-2 均在窗口内,每收到一个消息,接收者按如下原则进行处理:

(1)如果消息的序列号在窗口内,则查询对应序列号的标志位,如果标志位为1 表示该序列号之前接收过,为重放包,丢弃;如果标志位为0 表示从未收到过该消息,对该消息进行接收处理,并将标志位置为1;

(2)如果消息的序列号小于窗口最左侧的序列号,则表示该消息不满足新鲜性的要求,将消息丢弃;

(3)如果消息的序列号大于窗口最右侧的序列号,则将窗口向右边滑动,使得窗口的最右侧序列号为该消息的序列号。

滑动窗口抗重放方案的优点:在窗口之外的消息一定会被丢掉,并且实现简单,没有歧义,只要保证“抗重放因子”为一个递增的序列号即可。一般来说窗口宽度W 为8,16,32,64,128 等比较小的数值,因此占用的存储空间比较小。对无序到达的消息有一定的容忍度,比较适用于IP 网络这种无序网络。

滑动窗口抗重放方案的缺点:当窗口宽度值W 设置过大时,抗重放的效果不好;当窗口宽度值W 设置过小时,会导致丢包率过高,影响到正常通信。

4.2 “抗重放因子”池抗重放方案

“抗重放因子”池抗重放方案中,“抗重放因子”只要不重复即可(可以是随机数、递增序列号等)。在该方案中,将所有收到的序列号存储在一个池子中,每收到一个消息,对池子进行检索,判断该消息中序列号是否已经接收过。如果已经接收过,认为该消息为重放消息,丢弃;否则,将该序列号保存在池子中。当池子满了之后,再收到新的、池子中没有的序列号时,用最新的序列号覆盖池子中最早收到的序列号,循环往复。

“抗重返因子”池抗重放方案的优点:不会因为抗重放而导致丢包。

“抗重返因子”池抗重放方案的缺点:

(1)当消息发送比较频繁时,大量的序列号会极大消耗接收者的存储空间;

(2)池子大小总有上限,如果攻击者有足够的耐心,不停进行试验攻击,总能探测到池子的大小。当池子满了,旧的序列号被覆盖后,攻击者再将被覆盖掉的序列号发送给接收者,接收者无法识别到这是一个重放消息。

4.3 时间戳抗重放方案

时间戳抗重放指的是使用当前的时间作为“抗重放因子”,发送者将本地的时间TS、要发送的数据一起发送给接收者,接收者将收到的时间TS 与自己本地时间TR 进行比较,如果DeltT=TR-TS 在一个可接受的延时范围内(DeltT

时间戳抗重放方案的优点:接收者不用存储任何“抗重放因子”,不占用存储空间;同时时间戳获取方式简单。

递增抗重放方案的缺点:

(1)需要提供严格的时钟同步机制,否则会导致发送者和接收者的时间不一致,而导致误判;

(2)如果t 选择过大,会导致有一些重放消息无法识别,t 选择过小,会导致很严重的丢包。因此对t 的设置,需要很丰富的经验。

针对时间戳抗重放方案需要严格的时钟同步机制的缺陷,有人做了改进[2],该改进方案不需要时钟同步,具体过程如图1:

图1 具体过程

(1)发送者发起请求;

(2)接收者将本地时间TR 发送给发送者;

(3)发送者将T’=TR+t(t 为发送者从“发起请求”到“收到TR”的时延)、要发送的数据Data 一起发送给接收者;

(4)接收者收到消息后,将T’和当前的本地时间TR’做比较,如果DeltT=TR’-T’在一个可接受的延时范围内,那么就认为是合法消息,否则认为是重放包,将消息丢弃。

4.4 递增抗重放方案

递增抗重放方案中“抗重放因子”为一个递增的序列号,该方案仅可用于一问一答式的通信中,当发送者收到本次发送消息的回复后,才会继续发送下一个消息。初始化时,发送者发送的序列号一定大于0,接收者本地存储的序列号置为0;当接收者收到消息后,判断消息中序列号的值是否大于本地存储的序列号(网络上有丢包),如果是,则接收、处理消息并将本地存储的序列号更新为当前接收到的序列号,否则认为是重放消息,丢弃。

递增抗重放方案的优点:接收者只存储一个序列号,不占用存储空间,并且判断抗重放的逻辑简单,计算简单,时间短,维护也很简单。同时由于序列号是递增的,并且发送者收到某一个消息的回复后,才会继续发送下一个消息,因此接收者能够统计网络上的丢包情况。

递增抗重放方案的缺点:序列号不能进行翻转,因此只能适用于通信量比较少的情况。当序列号递增到最大值时,该通道必须断开,重新进行通道连接,序列号从头重新开始递增。

4.5 挑战—应答身份认证抗重放方案

挑战—应答身份认证抗重放方案中“抗重放因子”为一个随机数,该方案的交互过程如下:

(1)发送者向接收者发起一个请求;

(2)接收者收到请求后在本地产生一个随机数R,接收者将随机数R 发送给发送者;

(3)发送者收到R 后,将要发送的数据Data 和R’(R’=R)一起发送给接收者;

(4)接收者收到后,将R’和本地保存R 做比较,如果一致,则说明不是重放消息,同时产生新的随机数R’’;如果不一致,说明是重放消息,因为随机数已经变为R’’,R’必然与R’’不一致,直接丢弃。

挑战—应答身份认证抗重放方案的优点:接收者只存储一个随机数,不占用存储空间也不需要与发送者进行时钟同步,并且判断抗重放的逻辑简单,计算简单,时间短,维护也很简单。

挑战—应答身份认证抗重放方案的缺点:占用信道资源多,每次通信前均要进行一次挑战—应答。

针对该方案的缺陷,有人提出了一些改进方案,本文介绍其中的一种改进方案[1],其核心方法是第一次发生了挑战—应答之后,随机数在双方同时更新,不需要再进行挑战—应答,过程如图2 所示:

图2 具体过程

5 各抗重放方案比较

各抗重放方案比较见表1。

表1 方案比较

6 在工程实现中需注意事项

在工程使用中必须注意以下事项,否则会导致抗重放方案失效:

(1)“抗重放因子”在允许的范围内不能重复,否则会导致的消息被误判为重放消息,进而丢弃,发生丢包,正常通信失败。

(2)发送者在发出消息之前,需要对“抗重放因子”进行加密或者完整性校验,防止“抗重放因子”在传输过程中被篡改而接受者却无法得知“抗重放因子”被篡改;

(3)接收者收到消息后,首先进行完整性校验,确保“抗重放因子”没有被篡改,再根据“抗重放因子”进行抗重放判断。

7 总结

通过对各常用的抗重放方案的比较可以得出:各抗重放方案均有自己的优点及缺点,在工程使用中,可以根据应用场景的不同选择适合的抗重放方案。

猜你喜欢

发送者序列号接收者
信息披露的经济学分析:预防性动机视角
网络表情符号的作用
表情符号的使用角度对亲密度感知的影响
一种离线电子钱包交易的双向容错控制方法
基于SDN的组播安全机制
论《聊斋志异》梦境叙事
功能翻译理论视角下英语翻译技巧探讨
关于《国家税务总局 工业和信息化部关于加强车辆配置序列号管理有关事项的公告》的解读
recALL
口碑传播中影响因素作用机制研究及应用