基于方向的重放攻击防御机制

admin 2020年12月30日19:17:18评论36 views字数 4131阅读13分46秒阅读模式

摘要:对重放攻击类型以及常用防御手段进行了分析,基于对常用的新鲜因子缺陷的思考,提出了一种基于方向的重放攻击防御机制,基于双向通信的新鲜性检查办法,结合了加密机制、算法机制、应答机制,采用带方向持续累加的序列号作为新鲜因子,用较小的代价实现对直接重放、 反射重放、转移重放等各种类型重放攻击的有效防御,对通信协议的安全性设计具有一定的实际应用价值,此机制的代价小,尤其适用于PSTN、短波等窄带通信。

引言

网络中运行良好的通信协议,不仅应该具有有效性、公平性和完整性,而且应该具有足够高的安全性。通常我们把具有安全功能的协议称为安全协议,其安全性质主要有认证性、机密性、完整性、 非否认性和新鲜性等。安全协议是网络安全的重要组成部份,多年来,虽说安全协议的研究取得了丰硕的成果,但很多现在使用的安全协议都存在一些潜在的攻击漏洞,威胁协议安全的攻击主要有篡改 攻击、替换攻击、假冒攻击、重放攻击等。

重放攻击对于协议来说是最为常见的一类攻击,而且是危害较为严重的一种。如,攻击者窃取了警务调控系统往年的任务调度信息,发起攻击时, 将往年的任务调度信息重发给各警务人员,让警务人员误以为有新的出警任务,导致真实发生的犯罪行为无法及时应对,使社会治安处于混乱状态。又如,客户通过认证授权银行转账给其它客户,如果攻击者窃听到该消息,并在稍后重放该消息, 银行将认为客户需要进行两次转账,从而使客户遭受损失。

重放攻击是最基本、最常用、危害性最大的一种攻击形式,在这里对重放攻击防御手段进行讨论, 进一步完善协议的设计,使通信网络更具安全性。

1  重放攻击及常见防御手段

重放攻击(Replay Attacks )又称为新鲜因子攻击(Freshness Attacks ),俗称复制攻击,是指攻击者窃取以前运行的协议或当前运行的协议中的消息 或消息片段用于对当前协议运行进行欺骗的攻击行 为,其主要用于破坏认证正确性。

重放攻击按攻击层次主要分为消息块重放、消息块间重放、协议步间重放和协议间重放,按攻击对象分为直接重放(消息被转发给预定的接收者, 但具有一定的延迟)、反射重放(消息被回发给发 送者)、转移重放(消息转发给第三者)。

无论是哪一种重放攻击类型都是对协议新鲜性的攻击,协议缺乏新鲜性检查机制是导致被重放攻击的主要原因,其防御手段需要在协议中注入新鲜 因子,并保持消息块、协议间的新鲜性。常用的新鲜因子主要有时间戳、随机数、序列号等。

( 1 ) 时间戳

最常用的新鲜性检查机制就是时间戳,消息中附带的时间戳标明该消息生成的系统时间,时间戳能够保证消息在一段时间内的新鲜性,接收方只认可时间戳与当前系统时间的差值在设定范围之内的消息。因为时间戳是有设定范围的,只能保证消息是在最近一段时间内生成的,但不能保证消息的唯一性,攻击者可能会利用这个漏洞进行重放攻击, 甚至攻击者有可能通过改变接收方的系统时间,让接收方接收已经过期的消息。

( 2 ) 随机数

随机数也是协议设计中常用的新鲜因子,是一种基于随机数池的新鲜性检查机制,在发方和收方都会设计一定容量的随机数池,在每一个协议发起时,会产生一个与随机数池Rs中的随机数不重复的随机数R,即R不属于Rs,在消息的关键信息 中附带此随机数R,收方会将此随机数R与本地随 机池Rs'中的随机数进行比对,如果没有重复,则认为此协议具有新鲜性,并将R存入随机数池中。此机制中随机数池的容量设计是关键,需要根据实际使用情况预设随机数池的大小,但也因为随机数 池的容量是有上限的,累计到一定时间,随机数池中的随机数会重新覆盖,攻击者可能会利用这个漏洞进行重放攻击,让主体接收一些已经过期的消息。

( 3 ) 序列号

常见的基于序列号的新鲜性检查机制,会在协议的关键消息中附带一个4字节大小的序列号, 序列号与通信对像绑定则具有延续性的数值,如A与B首次交互协议时,协议中关键消息附带序列 号为Nab,第二次交互协议,协议中附带序列号为 Nab+1,第三次交互协议时,协议中附带序列号为 Nab+2。收方只认可序列号在预先设定的拉偏范围 之内的消息。因为序列号存在一定的位偏,不能保 证消息在拉偏范围内的新鲜性,攻击者可能会利用 这个漏洞发起重放攻击。

2  带方向的重放攻击防御机制

带方向的重放攻击防御机制是一种基于方向的 新鲜性检査机制。经上分析可以看出,常用的新鲜因子,都有可能被攻击者利用的漏洞,基于这些安全隐患的思考,提出了一种基于方向的新鲜性检査机制。

带方向的重放攻击防御机制是序列号与应答机制、算法机制相结合的应用机制,是面向双向通信方式设计的协议新鲜性检查机制,以用户向打车平台申请打车和打车平台自动向用户扣款两种协议为 例(用户与打车平台是典型的客户端与服务端的双 向通信)。

用户端和平台端同时维护一个序列号对:平台通信序列号(Serial Number of Server, SNs )和用户 通信序列号(Serial Number of Client, SNc )。SNs作为平台主动发起的会话协议的新鲜因子,SNc作为用户端主动发起的会话协议的新鲜因子。

也就是说平台通信序列号SNs和用户通信序列号SNc代表了不同的会话发起者,是带有方向感的新鲜因子,基于协议发起的方向不同,维护不同的序列号,主要目的是为了解决传统的序列号新鲜性检査机制存在拉偏范围较大,易被攻击的问题,依据协议主体不同维护不同的双向序列号对,能将拉偏值精确缩小到(-1, +1)范围,有效的抵抗重放 攻击。

用户向打车平台申请打车协议,是以用户为会话的发起方,在协议中注入用户通信序列号SNc, 此协议主要流程是用户发起打车申请--> 平台处理申请并将派车信息发送给用户一> 用户收到后发送确认应答。其协议模式为“申请——应答——确认 应答”三段式,因用户为客户端,所以釆用三段式, 如下。

申请(C->S):{C, Ek[IDc, IDs, SNc, Al], H};应答(S->C):{S, Ek[IDs, IDC, SNc++, A2], H};确认应 答(C->S) : (C, Ek[IDc, IDs, SNc++, A3], H}。

打车平台自动向用户扣款协议,是以平台为会话的发起方,在协议中注入平台通信序列号SNs, 此协议主要流程是平台发起扣款指令—> 用户端自动转款并发送应答。其协议模式为“申应答” 两段式,如下。

指令(S-一>C):{S, Ek[IDs, IDC, SNs, Bl], H);应答(C-一>S): (C, Ek[IDc,IDs, SNs++, B2], H}o

( 1 ) 拉偏值分析

我们以用户向打车平台申请打车协议流程为例进行拉偏值分析,假设平台端、用户端维护的用户 通信序列号SNc、SNc'初始值为0,序列号处理流 程如图1所示

基于方向的重放攻击防御机制

图1  拉偏值分析

组织协议前,先提取本地存储的用户通信序列号,进行累加,附带在协议中发送到对端;收到对端发送的协议,首先进行安全性检查,安全性检查 包括身份合法性、完整性、新鲜性、机密性等验证, 通过安全性检查后,更新本地存储的用户通信序列 号,即 SNc二SNc'。

如图1所示,用户向打车平台申请打车协议会 话结束后,平台端维护的用户通信序列号SNc=3, 用户端维护的用户通信序列号基于方向的重放攻击防御机制相对于基于方向的重放攻击防御机制拉偏值为+1,基于方向的重放攻击防御机制相对于SNc拉偏值为-1, 这属于三段式的协议自然拉偏,其拉偏范围控制在 (-1 , +1 )范围内。

如果因为网络异常,导致某协议未正常接收, 例如用户端未收到确认应答协议(c),此时,平端维护的用户通信序列号SNc=l,用户端维护的 用户通信序列号SNc,=2, SNc相对于基于方向的重放攻击防御机制拉偏值 为-1,基于方向的重放攻击防御机制相对于SNc拉偏值为+1,这属于通信 异常拉偏,其拉偏范围依然控制在(-1, +1 )范围内。

从协议流程可以推导出,无论是通信异常还协 议自然拉偏,平台通信序列号SNs和用户通信序列 号SNc都能将拉偏范围锁定在(-1, +1)范围内。而传统的序列号处理机制中SNs = SNc,相互交错, 在通信网络不稳定因素的影响下,其拉偏远远大于 (-1, +1),且系统越复杂,其拉偏值越大。

( 2 ) 防御能力分析

协议中注入了主体双方的ID号、序列号、传 送数据、Hash,主体双方ID号分别为平台IDs、 IDc,传送方向不同则存储位置不同(确定数据流 向及身份信息),采用杂凑算法对协议全字段明文 进行了 Hash运算(完整性保护),并对敏感数据 进行加密处理(机密性保护),这样,协议有效的抵抗住了消息块重放、消息块间重放、转移重放和反射重放等多种攻击,是否能抵制协议步间、协议间的直接重放,我们以打车平台自动向用户扣款协 议流程为例进行分析,见图2。

基于方向的重放攻击防御机制

图2  重放攻击防御能力分析

①用户端收到平台发来的协议,提取本地存储的平台通信序列号SNs,并完成累加;

②判断SNs是否属于基于方向的重放攻击防御机制,如果不属于,则认为新鲜性不过关,属新鲜性检查;

③提取本地存储的最近收到的协议包Hash值 H',判断H,是否等于运行协议的Hash值H,如果相等,则认为新鲜性不过关,属新鲜性检查;

④更新基于方向的重放攻击防御机制,并存储;

⑤组织应答协议,计算应答协议SNs,累加 1,并发送给平台端。

如图2所示:平台端收到应答协议处理流程⑥、 ⑦、⑧、⑨与①、②、③、④协议步骤同。

假设攻击者1和攻击者2窃取了运行协议(a), 攻击者1进行协议步间重放攻击,在用户端收到协 议(a)后,立即重放协议(a),企图让用户进行 多次扣款。如流程图所示,在进行同一主体同一流 向前后两协议的Hash值比对时,就会检查出协议 的新鲜性不过关,攻击行为被截止。

攻击者2进行协议间重放攻击,在完成协议会话后,重放协议(a),如图2所示,在进行拉偏范围基于方向的重放攻击防御机制比对时,就会检查出协议 的新鲜性不过关,攻击行为被截止。

3  结语

基于方向的重放攻击防御机制是一种基于双向通信的新鲜性检查方法,它是结合了加密机制、 杂凑机制、应答机制相结合的综合应用机制,采用带方向的持续累加的序列号作为新鲜因子,并结合 Hash值,用较小的代价实现对消息块、消息块间、 协议步间和协议间,以及直接重放、反射重放、转移重放等各种重放攻击的有效防御。对通信协议的 安全设计具有一定的实际应用价值,此机制的代价小,尤其适用于窄带通信,比如PSTN、短波通信等。



原文来源:信息安全与通信保密杂志社

基于方向的重放攻击防御机制

本文始发于微信公众号(网络安全应急技术国家工程实验室):基于方向的重放攻击防御机制

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年12月30日19:17:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于方向的重放攻击防御机制https://cn-sec.com/archives/227103.html

发表评论

匿名网友 填写信息