APP下载

基于FPGA的多路安全连接抗重放攻击设计实现

2022-08-23张宏亮

网络安全与数据管理 2022年7期
关键词:序列号子网网络设备

陈 明,张宏亮,邓 军,唐 文,龚 萍

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

0 引言

随着计算机网络的不断深入发展,信息安全问题日益受到人们广泛关注和重视。在影响网络安全的因素中,重放攻击是一种常见的、危害巨大的网络主动攻击手段。重放攻击是指将通过窃听等手段获取的信息再次发出以产生非授权的效果[1-2],针对重放攻击原理与防范手段的研究也日益出现。文献[3]对常用的抗重放方案进行了总结概述,但没有给出详细实施方案和平台。文献[4]提出基于时间戳/消息ID方式实现应用层抗重放攻击的方法,但该方法不适用于高速IP数据传输网络。文献[5]提出了一种针对可信平台模块的抗重放攻击方案。文献[6]设计了一种适用于车载CAN总线网络协议的抗重放实现方案,适用于低速现场总线网络。文献[7]提出了一种在VPN隔离网关使用软件实现抗重放技术,但没有深入分析高速多路通信的抗重放并行处理机制。

为了解决上述问题,同时结合工程应用中网络设备多个物理子网之间的互通需求,本文创造性提出一种基于FPGA硬件平台实现多路安全连接抗重放技术的机制,该方案充分利用FPGA支持高速、并行处理的特点,满足快速检测网络中多路重放攻击,并迅速做出报警响应的需求,同时不影响设备正常工作,最终达到既实现安全通信,又满足网络高速互通的目的。

1 基本通信原理概述

1.1 安全连接概述

安全连接[8]数据处理流程如图1所示,网络设备的物理端口从逻辑上划分为N个独立的安全连接逻辑通道,对于网络接入侧,支持同一个物理子网的不同业务分别接入到不同的逻辑通道,也支持不同的物理子网分别接入不同的逻辑通道。逻辑通道之间相互独立,数据处理互不干扰,为用户提供类似专用线路的使用体验。

图1 安全连接数据处理示意图

1.2 通信数据帧格式

在标准以太网数据帧定义[9]基础上,自定义私有网络通信数据帧格式如图2所示,具体说明如下:

图2 数据帧结构定义

MAC地址:DMAC和SMAC都是6 B。

Type:以太网类型,2 B。

安全连接索引:用于指示安全连接通道号,2 B。

协议头:自定义协议头,16 B。

SN:抗重放序列号,单调递增,4 B。

数据:净荷数据。

FCS:以太网CRC32计算值,4 B。

自定义数据帧中安全连接索引、协议头和SN属于增加的额外开销,长度为22 B,当数据帧发送给对端用户子网时需要提前丢掉。数据发送与接收处理流程如下:本地网络数据需要发送到对端网络时,按照图2的数据帧格式封装好后传输到线路上;对端接收数据,进行合法性判断和抗重放解析后,正确的数据包去掉自定义封装数据字段,再发送给目的用户网络,非法数据包直接丢弃。

2 多路安全连接抗重放方案设计

2.1 抗重放实现机制

每一个数据帧包含了一个唯一的序列号字段(SN),用于标识一定时间范围内唯一的数据帧,具体定义如图2所示。当创建一个新的安全连接时,序列号计数器会初始化为0,每发送一个有效数据帧,发送方的序列号计数器的值加1并写入对应数据段。序列号是一个连续单调递增的4 B十六进制数,当安全连接更新时,一般不超过24 h,对序列号清0重新开始计数。

网络数据在经过传输网到达目的网络设备时,由于网络设备内部处理、路由转发、数据丢包等原因,导致接收端数据可能存在乱序的情况,因此,需要使用滑动窗口来提高对数据乱序的容忍度。根据实际工程应用经验,一般规定窗口宽度W为8,16,32,64,128等数值[3]。窗口宽度设置过大,可消耗更多存储资源,抗重放效果增加不明显;窗口宽度设置过小,对数据报文乱序的容忍度降低,易导致丢包率增加,影响到正常通信。结合本文所述网络特点,窗口宽度设置为64能够满足使用要求。

初始化时,窗口最右侧序列号为X,左边依次为X-1,X-2,…,X-W+2,最左侧序列号为X-W+1,滑动窗口工作原理[10]如图3所示。每收到一个数据帧,接收端按如下流程进行处理:

(1)接收端提取待处理数据帧序列号SN,如果SN大于X-W+1且小于X,查询对应的序列号标志位,如图3所示。如果标志位为0,表示从未收到过该包数据,数据合法,并将标志位置1;如果标志位为1,表示曾收到过该数据,当前数据帧为重放包,丢弃。

图3 滑动窗口工作原理示意图

(2)如果待处理数据帧序列号SN小于X-W+1,表明该数据帧的序列号在窗口之外,判定该数据为重放包,丢弃。

(3)如果待处理数据帧序列号SN大于X,则计算两者之间的差值β,如果β大于设定的窗口阈值,则判定为非法包,丢弃;反之将窗口序列号X向右偏移β,并将bit0位置1。

2.2 多路安全连接抗重放攻击方案设计

由于单条安全连接只能实现两个子网通信功能,无法满足实际应用中多个子网的互通需求,因此本文在已有研究基础上,对多路安全连接抗重放技术进行了深入研究,设计了多路安全连接抗重放实现方案,并通过实验对方案进行验证。

每一个数据帧包含了一个安全连接索引,用于标识该数据帧归属的安全连接通信数据,具体定义如图2所示,安全连接索引长度为2 B,理论上能够支持建立215-1=65 535条安全连接。通过安全连接索引,能够解析出并发数据流各条网络数据,提取数据序列号,从而实现多条安全连接抗重放攻击检测。

多路安全连接抗重放方案设计如图4所示,主要功能模块包括数据处理、调度管理、序列号缓存、抗重放判决等。数据处理模块完成以太网入口数据预处理,根据安全连接索引分离出各安全连接的有效数据帧;调度管理模块轮询访问输入的数据缓存,并提取序列号,完成序列号缓存管理控制;抗重放判决模块根据输入的序列号,完成合法性判断,输出有效数据。

图4 多路安全连接抗重放实现方案图

2.3 多路安全连接抗重放工作流程

网络设备在创建多条新的安全连接时,每条连接产生独立的序列号SN,并进行控制管理,发送方向序列号产生机制如图5所示,数据处理流程如下:

图5 发送方向序列号产生流程

(1)设备接收子网待处理数据帧,提取安全连接索引。

(2)根据地址映射表,产生该连接对应的序列号SN缓存读地址。

(3)读取序列号SN后,执行+1运算后输出给数据发送模块,按照自定义数据帧格式封装SN,发送到网络中;同时执行原地址回写操作,将更新后的SN写回缓存,为下一帧数据处理做准备。

(4)完成数据处理后,状态机回到开始状态,等待处理下一路数据帧。

从网络设备接收的以太网数据分离出各安全连接独立的数据帧,多路数据抗重放工作流程如图6所示,详细处理流程如下:

图6 抗重放工作流程图

(1)设备接收网络数据,提取各路数据的安全连接索引和序列号SN,写入寄存器。

(2)根据序列号SN和窗口标志状态位缓存地址映射规则,产生缓存读地址,读取该连接存储的上一帧数据的序列号SN和对应的窗口标志状态位。

(3)将待处理数据帧的序列号SN_new与缓存的序列号SN_old比较,进行合法性判断。如果SN_old-SN_new≤64,表示待处理数据帧序列号在窗口范围内,查询对应的窗口状态标志位,如果标志位为0,表示从未收到过该包数据,数据合法,并将标志位置1;如果标志位为1,表示曾收到过该数据,当前数据帧为重放包,丢弃。如果SN_old-SN_new>64,表示待处理数据帧序列号在窗口范围外,直接丢弃。如果SN_new>SN_old,计算两者之间的差值β,如果β大于设定的窗口阈值,则判定为非法包,丢弃;反之将窗口序列号X向右偏移β,同步更新窗口状态位信息。

(4)完成数据帧抗重放合法性判决后,输出正确的数据,重放的数据则丢弃,并将更新后的序列号和状态标识原地址写回缓存。

(5)完成数据处理后,状态机开始处理下一路数据帧。

3 FPGA实现

3.1 序列号和窗口状态缓存结构

对于存储序列号和窗口状态的缓存结构,在FPGA中使用双口RAM来实现。双口RAM拥有独立的读写地址、数据和控制信号,读写操作互不影响,通过采用状态机方式,能够保证读写信号时序正确。以序列号SN缓存为例,缓存具体实现结构如下:

3.2 抗重放功能模块主要代码实现

抗重放功能模块主要实现窗口计算,完成窗口状态判断,并输出数据抗重放检测结果。在FPGA中只需要1个时钟完成上述所有功能,大大提高了数据吞吐率。抗重放功能模块的主要代码实现如下:

3.3 窗口滑动模块主要代码实现

窗口滑动模块主要完成窗口状态位更新,FPGA主要源代码实现如下:

4 测试结果

4.1 多路安全连接互通测试

为验证本设计的正确性,开展了实际的工程应用测试。两台网络设备模拟建立了四条安全连接,使用IXIA公司的XGS2以太网测试仪双向同时发送8组数据流,即每条安全连接配置2条流,数据帧长度为1 024 B,速率设置为1 Gb/s,总数据吞吐量达到8 Gb/s,测试结果如图7所示。

图7 多路安全连接通信测试结果图

从测试结果可以看出,收发数据帧计数(Tx Frames Rates和Rx Frames Rates)是一致的,丢包计数为0,说明安全连接工作正常,8条数据流通信正常,没有功能缺陷和数据丢失问题发生。

4.2 多路安全连接抗重放攻击测试

为验证多路安全连接抗重放攻击检测的正确性,以4路安全连接抗重放攻击测试为例,开展抗重放攻击检测实验。使用信而泰公司以太网测试仪bigtao 220作为抗重放测试仪器,该仪器能够抓取线路上的数据包,再重放到线路上发送给接收端,通过查看测试仪的收发两端计数,验证测试结果是否符合预期。4路安全连接抗重放攻击测试结果如图8所示。

图8 抗重放测试结果图

从图8可以看出,发送端口发送了8条流,每条流发送100 000个数据包,接收端口接收数据数量为0,线路丢包100 000个,说明序列号重复的数据包为非法数据,全部被丢弃,多路安全连接抗重放攻击功能正常,同时在受到外部攻击情况下,网络设备仍然能正常工作。

5 结论

本文结合工程应用实践,针对多个子网安全互通需求,深入分析了抗重放技术实现机制,设计了多路安全连接抗重放技术实现方案,并给出了测试结果,符合设计预期。通过与同类设计相比,本文创造性提出使用FPGA作为硬件平台的设计方案能够支持多路安全连接抗重放功能,具备高并发通信能力,实现协议简单,处理效率高,并有较好的可拓展性。

猜你喜欢

序列号子网网络设备
基于机器视觉技术的军用集成电路测试序列号读取装置
网络设备的安装与调试课程思政整体设计
一种离线电子钱包交易的双向容错控制方法
关于《国家税务总局 工业和信息化部关于加强车辆配置序列号管理有关事项的公告》的解读
计算机网络课程中网络测试命令的应用
子网划分问题研究及应用
基于DMAIC分析过程的A企业仓储出库流程优化研究
基于Petri网的L企业产品设计变更执行流程优化研究
优化网络设备维护提高数据通信传输质量
手机使用中的“秘诀”