一种防止重放攻击的设计方案

2022-03-23 01:35马俊明
网络安全技术与应用 2022年2期
关键词:序列号接收端数据包

◆马俊明

一种防止重放攻击的设计方案

◆马俊明

(中电科鹏跃电子科技有限公司 山西 030028)

为解决关键信息基础设施通讯网络中重放攻击的严重危害的问题,本文研究分析了常用防重放攻击方法,针对常用防重放攻击实施方案的弱点,提出一种低成本、高效率且易于实现的防止重放攻击的解决方案。设计方案特点:巧妙利用时钟信号递增性解决流水号问题;实施传输数据加密及数据按功能包分组提升通信系统的抗网络攻击性。

重放攻击;时间戳;流水号;关键信息基础设施;混合加密

重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(Freshness Attacks),是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,重放攻击在任何网络通讯过程中都可能发生,尤其在关键信息基础设施[1-2](Critical Information Infrastructure)通讯网络中重放攻击的危害巨大。

通信系统为保护数据的安全性,通用做法是使用加密传输,数据加密可有效防止数据被窃密、篡改和伪造,然而如果系统不能鉴别重发的数据包,尤其是该重发数据包具备独立的功能(如:一条指令或一个交易)时,重放攻击就会使攻击者在无需解密数据的情况下达到攻击破坏的目的。

1 相关工作

在通信系统中防御重放攻击的主要方法有:在通信过程中加时间戳、加序列(流水)号加随机数等,实际应用中常将加随机数和加时间戳的两种方法组合使用,除此之外还可以使用挑战/应答机制和一次性口令机制。下面对这几种防御方法进行简单介绍。

1.1 加时间戳

加时间戳:“时戳”代表当前时刻的数,数据传输时在关键消息内加入时间戳来保证消息的时鲜性。只有当消息的时戳与本地时间差值在一定范围内时,接收方才接收这条消息。该方法优点是不用额外保存其他信息,缺点是通信双方需要有严格的时间同步[3],同步越好,受攻击的可能性就越小。但当系统很庞大,跨越的区域较广时,要做到精确的时间同步并不是很容易,此外时间戳失效时间间隔内的重放攻击无法防御。

1.2 加序列(流水)号

加序列号:数据传输时在每条消息中添加序列号,通信双方通过消息中的序列号来判断消息的新鲜性。要求通信双方必须事先协商一个初始序列号,并协商递增方法。通讯中只要接收到一个不连续的序列号报文,就认定有重放威胁。该方法优点是不需要时间同步,保存的信息量比随机数方式小。缺点是一旦攻击者对报文解密成功,就可以获得序列水号,从而每次将序列号递增来欺骗认证端[4]。

1.3 加随机数

加随机数:数据传输时在每条消息中添加随机数,通信双方通过消息中的随机数来判断消息的新鲜性。该方法优点是认证双方不需要时间同步,双方记住使用过的随机数,如发现报文中有以前使用过的随机数,就认为是重放攻击。缺点是需要额外保存使用过的随机数,若记录的时间段较长,则保存和查询的开销较大,同时随机数也可能出现重复的概率。

1.4 其他

挑战/应答:每次数据传输时时,发送端都给接收端发送一个不同的“挑战”字串,接收端收到这个“挑战”字串后,做出相应的“应答”。

一次性口令:每次数据传输时时,发送端都给接收端发送一个不同的“口令”,通信双方通过消息中的口令来判断消息的新鲜性。

挑战/应答和一次性口令都具有良好的防御性,但计算成本及实施复杂度都比较高[5]。

2 设计思路

基于以上几种防重放攻击方案的优缺点的研究分析,有必要设计一款简单、高效、易操作的防重放攻击解决方案。

2.1 新鲜性

防重放攻击首先要考虑的是传输数据包的唯一性,这一点主要的操作是加序列号和随机数,但加序列号方法要求通信双方必须事先协商一个初始序列号,增加了传输会话次数,而加随机数方法,系统需有随机数发生器装置等。

本方案设计巧妙利用了发送端系统时钟信号的递增变化性,并且时钟值在通信期间递增唯一性,设计方案采用发送时发送端的系统时钟值为初始序列号,并在发送包中单依次递增,保证每个数据包的新鲜性,同时序列号与接收端,这样通信双方无需系统进行时间同步。

2.2 安全性

为解决关键信息基础设施通讯网络中重放攻击的严重危害的问题,通信系统设计可采用国产加密算法对数据进行加密传输。

通信双方数据传输设计采用混合加密[6]方式进行安全通信,其中身份认证和密钥协商使用非对称加密算法(如:SM2,SM9等),主数据传输使用对称加密算法SM4,此外为增强安全性,设计方案对通信数据包按数据功能进行分包发送并添加功能包标记。

3 设计方案

3.1 系统结构

本方案按通信系统最小组成设计,实际应用中通信系统可以是一对多或多对多传输方式。本方案通信系统设计由一个发送端和一个接收端及其相连接的网络组成,发送端和接收端功能结构示意图如图1所示,发送端与接收端都具备处理器、时钟、存储器、输入输出接口等必要功能模块。

图1 发送端和接收端功能结构示意图

设计方案要求发送端程序有读取发送端时钟的功能,且发送端时钟在工作期间保持正常运行,即时钟值一直在递增且不需与对方进行时钟同步,时钟值最小单位不高于1秒。

3.2 通信包设计(时序-数据包头结构)

发送端与接收端双方通讯采用混合加密方式进行安全通信,数据传输时数据按数据功能进行分包。

数据包设计分为三大类:身份认证数据包、密钥协商数据包、加密数据包,其中加密数据包应按具体业务功能进行进一步分包处理。

通信系统数据包传输时间序列图如图2所示。

图2 通信系统数据包传输时间序列图

数据通信时间轴定义为:从左到右、自上而下。图2中k、m、n均为自然数,从图2可看出单次身份认证有效期t1≈m*t2(忽略单次认证时间),单次对称密钥有效期为t2≈n*t3(忽略单次密钥协商时间),其中t3为单个细分功能的加密数据包的数据发送时间。众所周知,密钥有效期越长、使用越频繁其安全性越低,但密钥有效期太短使得系统通信效率大大降低。通过合理调整单次身份认证中密钥协商的次数m和单次对称密钥传输时加密数据包的数量n来平衡系统的安全与效率。

3.3 新数据包头设计

为确保系统不受重放攻击,就得保证每个数据功能包的唯一性。为此本方案对数据包进行了功能分包和增加了新的数据包包头设计。

新数据包包头是在原数据包头部增加6字节(48bit),新数据包包头结构如图3所示。

图3 数据包包头结构

数据包第1-32bit为发送方时钟值,第33-40bit为同次认证时间段内密钥协商包序号(1-255),第41-48bit为相同对称密钥传输时加密数据包序号(1-255)。实际应用中可灵活调节后16比特,即调节m、n且满足m*n<65535。

系统每次进行身份认证时,发送端需读取发送端时钟,由于实际应用中系统身份认证间隔远大于1秒,从而保证新数据包包头字段的唯一性。

新数据包头具体填充数据方法如下:

(1)身份认证数据包:发送端在每次身份认证前读取发送端时钟,时钟格式转化为长整型32比特(时钟精确最小单位为秒即可),填充前32位,后16位全填充0。

(2)密钥协商数据包:使用当此身份认证时钟填充前32位,第32-40,填充密钥协商包序列号从1开始每次加1,后8位全填充0。

(3)数据包(11-1n):使用密钥协商数据包前40位填充前40位,第41-48,填充数据包序列号从1开始每次加1。

3.4 数据发送流程

通信分包发送过程描述如下(其中k、m、n为自然数):

身份认证1、{[密钥协商1、(数据包11、数据包12…数据包1n)],[密钥协商2、(数据包21、数据包22…数据包2n)]…,[密钥协商m、(数据包m1、数据包m2…数据包mn)]},

身份认证2、{[密钥协商1、(数据包11、数据包12…数据包1n)],[密钥协商2、(数据包21、数据包22…数据包2n)]…,[密钥协商m、(数据包m1、数据包m2…数据包mn)]},

…,

身份认证k、{[密钥协商1、(数据包11、数据包12…数据包1n)],[密钥协商2、(数据包21、数据包22…数据包2n)]…,[密钥协商m、(数据包m1、数据包m2…数据包mn)]}…。

以单次认证描述本方案中的系统周期(设定,身份认证1的有效期为t1,密钥协商1(即对称密钥1)的有效期时间为t2,单个数据包加密通信的时间为t3,参考图1可知t1≈m*t2≈m*n*t3,实际通信时t1远大于1秒。

单次数据传输按数据功能分包有:身份认证数据包、密钥协商数据包1、数据包11、数据包12、…数据包1n,密钥协商数据包2、数据包21、数据包22、…数据包2n,…,密钥协商数据包n、数据包m1、数据包m2…数据包mn。

本方案使用m、n的阈值根据实际情况调整,阈值越小安全系数越高但同时效率会下降。兼顾效率与安全,选取m、n的阈值均为255。

3.5 数据接收及防重放检测流程

接收端顺序接收数据,并按如下流程进行防重放攻击检测。数据接收及防重放攻击检测的方法和流程图如图4所示。

数据接收及防重放检测流程具体操作步骤如下:

(1)接收端存储器初始化设置两临时变量长整型T0=0,整型X0=0。

(2)接收端接收数据包,逐包进行处理,每包处理流程同下。

(3)解密操作后读取数据包头,即包头前6个字节(48bit)。

(4)将接收到的前32bit转换为长整型数值T1,后16bit转换位整型数值X1。

(5)首先比较T0和T1,“Y”时(即T0>T1)判断为重放包数据,做丢弃包处理,然后返回下一包数据处理流程(即步骤2);“N”时顺序执行下一步。

(6)首先比较T0和T1,“Y”时(即T0

(7)此时T0=T1,比较X0和X1,“Y”时(即X0>=X1)时判断为重放包数据,做丢弃包处理,然后返回下一包数据处理流程(即步骤2);“N”时顺序执行下一步。

(8)此时X0

(9)进入正常数据处理流程。

(10)判断通信是否结束,“N”时,转入下一包处理流程(即步骤2);“Y”时,顺序执行下一步。

(11)结束通信。

通过以上设计方案,在接收数据包时通过分析数据包头来判断是否发生重放攻击,从而提升了通信系统的安全性。

4 结束语

文章方案适合于网络安全技术领域大多数通信场景,使用本方案对现有通信系统进行混合加密传输及抗重放攻击安全改造实施,不需更改现有系统网络结构,部署方便易于管理且能满足安全等保合规要求。此外,本设计方案对解决关键信息基础设施抵抗网络攻击特别是重放攻击方面有着非常好的参考价值及应用前景。

图4 数据接收及防重放检测流程图

[1]董晓峰,马建新,彭立,等. 核电站DCS中抵御UDP重放攻击的研究[J]. 工业控制计算机,2020,33(5):3.

[2]王航,张帅,杜君,等. 工控系统认证绕过漏洞实证分析[J]. 网络空间安全,2018,97(03):13-18.

[3]陈建熊,孙乐昌. 认证测试对分析重放攻击的缺陷[J]. 计算机应用研究,2009(02):739-741.

[4]肖斌斌,徐雨明. 基于双重验证的抗重放攻击方案[J]. 计算机工程,2017,43(005):115-120,128.

[5]张宏,陈志刚. 一种新型一次性口令身份认证方案的设计与分析[J]. 计算机工程,2004,30(017):112-113,185.

[6]伍娟. 基于国密SM4和SM2的混合密码算法研究与实现[J]. 软件导刊,2013(8):127-130.

猜你喜欢
序列号接收端数据包
二维隐蔽时间信道构建的研究*
基于扰动观察法的光通信接收端优化策略
基于多接收线圈的无线电能传输系统优化研究
一种离线电子钱包交易的双向容错控制方法
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
一种控制器硬件序列号的更新方法
手机无线充电收发设计
关于《国家税务总局 工业和信息化部关于加强车辆配置序列号管理有关事项的公告》的解读
C#串口高效可靠的接收方案设计
电视电子节目指南的原理及实现方法