一种车载控制器局域网络入侵检测算法及硬件加速
2023-12-15卢继武李仁发
许 鹤 吴 迪 卢继武 李仁发
1 (湖南大学电气与信息工程学院 长沙 410082)
2 (湖南大学信息科学与工程学院 长沙 410082)
3 (嵌入式与网络计算湖南省重点实验室(湖南大学)长沙 410082)(xuhe@hnu.edu.cn)
控制器局域网(controller area network, CAN)总线协议由于其低成本、高可靠性、实时性、抗干扰能力强的特点,已广泛应用于工业自动化控制系统中[1].在汽车电子领域,CAN 总线协议已经成为实质上的通信标准.随着汽车智能化的程度不断提升,车载电子控制单元(electronic control unit,ECU)的数量也在不断增加,车载系统的功能愈加复杂化[2].
任何产业在网络化的发展过程中都会面临信息安全问题,车联网的发展也不例外[3].2017 年,Mccluskey[4]通过无线信号欺骗手段远程入侵了Jeep Cherokee的车载娱乐系统,进一步向引擎、变速箱、转向等控制系统发送恶意指令,致使车辆冲下路边斜坡.2017年,腾讯科恩实验室通过特斯拉Model S 车内网络浏览器,让用户访问一个可疑的网站,借此进入到车载网关,控制了Model S 的方向盘和刹车[5].在“2020 中国5G+工业互联网大会”上,入侵者借助5G 无线技术连接上车载电脑,轻松打开一辆智能网联汽车车门,并随后启动引擎.随着智能网联汽车的不断涌现,恶意攻击、非法控制、隐私泄露等威胁也日益增加.
自动驾驶辅助系统和新一代电子信息技术在汽车上的应用,使得汽车越来越智能化,可以很大程度保障行车安全,但与此同时,智能辅助功能一旦在某种状况下突然失效或出现异常,将严重威胁行车安全.如图1 所示,车联网、移动网络、GPS 导航以及智能传感器等对外暴露的接口给车辆安全带来了诸多不可预知的威胁[6].CAN 协议的安全机制主要是为了保证通信的可靠性,无法防止入侵攻击或者检测CAN 网络是否受到入侵攻击[7].攻击者可以通过安全漏洞入侵CAN 网络,挟持车载ECU,对车辆进行恶意攻击以及非法控制.CAN 网络一旦遭受入侵攻击,一方面有可能造成车载网络通信瘫痪、阻塞、数据被篡改,最终导致车辆行驶状态异常,危及车辆与人员安全;另一方面,还可能涉及个人隐私数据泄露及相应的财产损失[8].安全事故往往发生在极短时间内,因此车载入侵检测具有高实时性、高精度的要求.
Fig.1 The architecture of vehicular communication network图1 车载通信网络架构
近些年来,基于深度学习的入侵检测系统研究是诸多研究者关注的热点,但是对于小批量特征攻击的相关研究较少,并且大部分研究都以高性能的CPU 和GPU 为基础,受限于车系统硬件性能的限制.深度学习模型在车载系统上部署,其实时性较差,因此研究基于深度学习的入侵检测模型在实际车载环境下的加速部署方法具有很大的实际意义.本文提出了一种结合网格型长短时记忆(grid long short-term memory, Grid LSTM)[9]网络与自注意力机制(selfattention mechanism, SAM)[10]的入侵检测模型SALVID(SAM enhanced Grid LSTM for vehicular intrusion detection,),并基于现场可编程门阵列(field programmable gate array,FPGA)器件,实现了模型加速设计.该模型利用SAM 增强CAN 网络攻击数据的特征,进一步基于Grid LSTM 提取时序数据在不同维度上的相关性特征.同时,FPGA 器件具有硬件算法定制能力和并行处理的优势,非常适合对实时性要求高的应用场景.研究的主要贡献总结为3 点:
1) 通过分析常见攻击类型的 CAN ID 分布特征,包括拒绝服务(denial of service, DoS)、模糊(fuzzy)、欺骗(spoofing)、重放(replay)和删除(delete)等攻击,设计了一种模拟攻击系统,利用真实汽车采集的无攻击数据集模拟生成多种攻击类型的数据集.
2) 为了能够分析大量的实时CAN 数据并优化模型的性能,本文采用多维度以及SAM 的思路,设计并实现了SALVID 模型.多维度的设计有利于在FPGA 上实现不同维度的并行化并提取更深层次的特征信息,SAM 的引入可以进一步增强攻击数据的特征,使得Grid LSTM 网络更容易区分不同类型的数据.多种基准对比模型的性能评估实验表明,SALVID 具有最佳的性能表现.
3) 基于FPGA 嵌入式平台设计并实现了堆叠型长短时记忆(stacked long short-term memory, Stacked LSTM)网络、Grid LSTM、SALVID 这3 种模型,实验表明SALVID 具有更高检测精度以及低延时.传统的矩阵乘法运算具有静态特性,而自注意力机制网络层内部矩阵具有动态生成的特性,如果遵循传统设计思路,则需要等待内部矩阵完全计算完后才能进行矩阵乘法.为了提高SALVID 的数据吞吐量,本文设计了一种基于动态矩阵的矩阵乘法运算优化方法.实验表明,该方法有效地提升了SALVID 的时延性能.
1 相关工作
CAN 总线安全防护手段一般可以分成2 种:一种是基于加密和认证的防护手段;另一种是基于入侵检测的防护手段.基于加密和认证的防护手段主要是对帧数据和ECU 进行认证或者使用安全密钥对消息进行加密处理,由于CAN 数据帧格式的有效载荷位数只有64 b,加密势必会增加CAN 总线的网络负载负担,导致通信效率降低,而且加密手段升级需要对现有固件进行升级.基于入侵检测的防护手段是通过分析数据帧的物理特征、统计学特征等建立一个检测模型,这种方法的优势在于不会增加CAN总线的通信负担,并且不需要更新现有的固件程序.
由于通信效率和实时性的要求,基于入侵检测的防护手段是车载安全研究的热点,大部分研究可以归纳为基于规则判断方法和基于机器学习方法.
1.1 基于规则判断方法
在早期的研究中,基于规则判断方法较为常见,通过设置一些逻辑判断规则,对CAN 数据内部存在的逻辑关系进行决策,达到异常分类的目的.例如,Vuong 等人[11]设计了一种基于决策树的攻击检测方法,该模型使用网络和物理特征,在DoS、命令注入和2 种恶意软件攻击场景下进行了离线实验评估.实验表明,考虑物理特征显著提高了检测精度并减少了所有攻击类型的检测延迟,然而该方法具有大约1s 的高检测延迟,无法满足车载安全对实时性的需求.Cho 等人[12]将车载ECU 所特有的时钟偏差作为指纹特征,提出了一种新型入侵检测系统CIDS(clock-based intrusion detection system),CIDS 通 过 最小二乘算法,实现了0.055%的误报率(false positive rate,FPR).然而,CIDS 只能检测周期性消息的攻击,并且攻击者可以操纵帧数据绕过CIDS.
1.2 基于机器学习方法
基于机器学习的入侵检测系统能够处理具有多维复杂特征的数据,但同时也更加难以被训练,并且对硬件性能要求也更高.一些研究人员尝试使用CAN 总线的物理特征对车载ECU 的状态进行分类,Zhou 等人[13]提出了一种基于CAN 总线数据比特位宽时间的新型入侵检测系统BTMonitor(bit-time-based monitor),该方法提取了时域和频域中9 个基本特征作为 ECU 的指纹特征,采用多层感知器 (multilayer perceptron, MLP) 训练完成识别异常 ECU 的分类任务,并在实际汽车CAN 网络上进行了测试,成功识别率为99.76%.然而,这种方法容易受到温度和电磁环境的影响.Choi 等人[14]提出了一种基于CAN 总线电压的入侵检测系统,该方法通过检查CAN 报文对应的电信号的特性,使用多类分类器来识别报文的发送方ECU.然而,与BTMonitor 一样,车内的电磁环境和温度会影响CAN 总线信号的电气特性.Hanselmann等人[15]提出了一种称为CANet 的新型无监督学习方法,该方法结合了LSTM 和自动编码器,其稳定性优于其他基于物理特征的检测方法.但是CANet 需要为每个CAN ID 对应的消息时间序列引入了一个独立的LSTM 输入模型,这会导致模型复杂且难以实际部署.Hossain 等人[16]提出了一种基于 LSTM 的入侵检测算法,研究了不同超参数设置对性能的影响并选择了最佳参数值,该方法基于真实车辆采集的CAN 数据模拟生成的3 个攻击数据集,包括DoS、模糊、欺骗等攻击,实现了高效的检测准确率.然而,该方法并未考虑小批量注入攻击类型.基于车辆原始设备制造商(OEM)提供的CAN 通信矩阵,Xie 等人[17]设计了特殊的CAN 消息块,并利用生成对抗网络(generative adversarial networks, GAN)检测CAN 数据是否被篡改.然而,GAN 网络无法识别具体的攻击类型并且模型难以训练.
从目前的研究现状分析,大部分基于机器学习的入侵检测算法优于其他方法,常见的模型算法包括MLP, LSTM, GAN 等.尽管如此,对于小批量特征类型的攻击以及如何在嵌入式系统实现模型部署的相关研究工作还鲜有深入研究,其主要原因在于小批量特征攻击的识别难度较大,并且机器学习算法对硬件性能要求较高.针对这2 个关键问题,提出了一种将SAM 与Grid LSTM 网络相结合的入侵检测算法,用于高效地识别车载CAN 总线是否受到攻击,本文还进行了基于FPGA 嵌入式设备的入侵检测模型加速设计与性能评估,为深度学习入侵检测模型的实时在线部署提供一种新思路.
2 车载CAN 网络攻击类型
由于车载系统的特点,很难获取到带有攻击特征的数据集,因此需要从攻击类型本身的特征出发,设计模拟攻击系统.基于真实车辆所采集的无攻击数据样本,利用模拟攻击系统生成5 种类型的攻击数据集,包括DoS、模糊、欺骗、重放以及删除等攻击,其中DoS、模糊和欺骗等攻击具有泛洪特性,重放以及删除等攻击具有小批量特性.每种攻击的具体特征有:
1) DoS 攻击.攻击者一旦入侵到CAN 总线网络,会不断向CAN 网络发送优先级最高(CAN ID 为0)的CAN 数据帧,占用CAN 总线网络数据传输时间窗口,导致其他正常ECU 无法发送数据.
2) 模糊攻击.攻击者可以在不清楚CAN 网络中ECU 具体功能的情况下,向CAN 网络注入随机性数据.由于CAN ID 的随机性和大量注入的特点,其会导致CAN 网络通信紊乱.
3) 欺骗攻击.在欺骗攻击中,攻击者通过监听CAN 总线.记录历史消息,并重新大量注入到CAN网络中,企图欺骗车载系统接收过时消息更新数据,导致状态出现错误.
4) 重放攻击.重放攻击具有小批量的特征,其识别难度相比上述攻击要更大,攻击者通过周期性注入某一个CAN ID 的CAN 消息,伪装成正常的ECU实现重放攻击.
5) 删除攻击.当攻击者入侵CAN 网络并挟持车载ECU 之后,往往会导致正常的ECU 丧失其原本的功能,在这种情况下,CAN 总线上特定的CAN 消息将不再出现,有可能导致车辆某些功能失效.
2.1 生成攻击数据集
本文采用荷兰4TU 联盟ResearchData 开源的CAN 总线数据集[18],该数据集包含来自3 个系统的汽车CAN 总线数据:2 辆汽车(欧宝 Astra 和雷诺Clio)以及自行搭建的 CAN 总线原型.本文选取了欧宝Astra 的数据集作为实验数据集,利用模拟攻击方法生成了上述5 种攻击类型的数据.
对于所有攻击类型而言,都需要按顺序从原始数据集中读取每一个记录,再提取采集时间戳和CAN ID,以数据集第1 行数据的时间戳作为起始时间,通过攻击间隔时间确定每次发起攻击的时间点,择机发起攻击.如图2(a) 所示,对于DoS、模糊、欺骗、重放等攻击而言,通过比较每一个CAN 消息的采集时间与攻击时间,确定是否发起攻击,并在数据集添加一列相应的标志值,发起攻击时,注入对应的攻击标志值,其中0, 1, 2, 3, 4 分别表示正常状态、DoS 攻击、模糊攻击、欺骗攻击以及重放攻击的标志值.对于删除攻击而言,如图2 (b)所示,通过判断当前读取的CAN ID 是否为攻击目标,如果是,则删除该CAN 消息,并标记下一个消息状态为删除攻击标记值为5.
Fig.2 Generation methods of simulation attacks图2 模拟攻击生成方法
生成的数据集大小如表1 所示,其中正常状态的CAN 消息占比最大,3 种泛洪特性的攻击各自占比约10%,2 种小批量特性的攻击各自占比约为2%.数据集按照8∶1∶1 的比例分别划分为训练、验证、测试数据集.本文已将实验所用的数据集开源.
Table 1 The Size of Generated Datasets表1 生成的数据集大小
通过分析车载CAN 总线的攻击类型特点,发现几乎所有攻击都需要注入或者截断CAN 消息数据帧,这势必会导致CAN 总线上数据帧特征分布发生变化.因此本文通过提取正常情况和攻击状态下的CAN ID 时序数据作为实验模型的输入数据.图3 显示了正常状态与5 种攻击状态下CAN 消息中CAN ID 的分布特征.从图3 中可以看出,DoS、模糊和欺骗等攻击的特征数据与正常状态数据具有比较明显的区别,具有小批量特征的重放攻击和删除攻击的特征并不显著,与正常状态下的分布特征类似,这意味着小批量特征攻击更难被区分,更具有迷惑性.
Fig.3 The distribution features of CAN ID in CAN messages of different statuses图3 各状态下CAN 消息中CAN ID 的分布特征
2.2 特征提取
如果直接将CAN ID 作为输入特征,由于CAN ID 在CAN 协议中占有11 b,其十进制范围在0~2 047.通常为了加快深度学习模型训练收敛速度,模型训练时会将输入数据进行归一化处理,这对浮点数计算没有影响,但如果将归一化后的数据作为FPGA 的输入,由于需要进行定点数量化处理,会导致输入特征的精度下降,因此需要针对FPGA 的特点对输入数据进行特殊处理.
通过式(1)提取CAN ID 的11 b 特征作为输入,一方面可以解决归一化带来的精度问题,另一方面,由于只有0 和1 这2 种输入,在FPGA 中可以只用1 b进行运算,能够降低资源开销.CAN ID 的比特特征如图4 所示.其中横向坐标代表时间步长,纵向坐标代表11 b 特征信息.
Fig.4 The bit distribution features of CAN ID图4 CAN ID 的比特特征分布
3 车载CAN 网络入侵检测模型
本文结合自注意力机制与Grid LSTM 设计了SALVID 模型,其模型结构如图5 所示.
Fig.5 The architecture of SALVID model combining SAM and Grid LSTM图5 结合SAM 与Grid LSTM 的SALVID 模型架构
3.1 自注意力机制层
自注意力机制是Transformer 模型的重要组成部分,其优势在于减少了外部信息的时间依赖性,可以更快地捕获数据特征的内部相关性[9].本文针对FPGA 的并行计算模式,对自注意力机制进行改进.自注意力机制的作用可以理解为通过分配不同的权重比例,对输入数据进行预处理,典型的自注意力机制如图6 所示,其内部矩阵Q,K,V是通过全连接网络实现,其中Q为计算模块,K为激活函数计算模块,V为卷积层输出模块,所用到的激活函数为softmax函数,为了简化自注意力机制的内部计算以及降低参数量,本文将全连接网络使用卷积网络代替.对于softmax 激活函数,其作用在于将输出结果归一化至0~1,并且总和为1,这个过程需要等待所有输出结果值计算完成,不利于在FPGA 上实现.而sigmoid 函数
Fig.6 Improvement of network structure of SAM图6 自注意力机制网络结构的改进
的激活值范围也在0~1,激活结果不依赖于外部信息,并且不会改变输入数据之间的大小关系,同样能够作为注意力权重.其他常用的激活函数,例如ReLU函数与tanh 函数的激活值范围不在0~1,过大的区间范围需要更多的片上硬件资源用于保存激活值,因此我们采用sigmoid 函数替换softmax 函数.改进后的自注意力机制网络[19]如图6 所示.
首先,将输入数据定义为:
其中X是n×m的矩阵,m为输入的特征维度,n为一次输入的总时间步长.
改进后的自注意力机制的定义如式(3)~(5)所示:
根据式(3)计算得到矩阵Q,K,V;其中(1,1)表示卷积核为1×1;F对应一个特征矩阵卷积层的输出通道数,F*3 表示卷积层总的输出通道数;Conv2D()表示2 维卷积函数,其输出值平均切分为3 个部分,分别为Q,K,V;再根据式(4)计算得到自注意力机制网络层权重矩阵, 将矩阵与V相乘,得到的结果作为式(5)的输入,最终得到自注意力机制网络层的输出结果;D表示最终输出的通道数,将其设置为1,即表示输出值的大小与输入数据的大小一致.
3.2 Grid LSTM 网络层
LSTM 通过引入若干门控信号解决了RNN 梯度消失和爆炸的问题,被广泛应用于文本识别、语音识别、时序数据处理、自然语言处理等领域[20].而Grid LSTM 能够基于不同维度提取时序数据中更深层次的特征.本文采用的Grid LSTM 模型包括时间和深度2 个维度,不同维度的LSTM 内部权重参数可以相互独立或共享[21].当不同维度之间的参数相互独立时,时间维度与深度维度互不干扰,有利于缓解梯度消失问题并提取深层次的特征,并且每个维度在FPGA上可以并行执行,因此,本文在Grid LSTM 的不同维度上采用相互独立的设计.
Grid LSTM 内部的基本计算单元可以拆分为2个LSTM 单元,LSTM 单元通过记忆单元的3 个门控信号,即输入门、遗忘门和输出门,避免了RNN 存在的梯度消失和梯度爆炸的问题,LSTM 单元的每一个时间步计算如式(6)所示:
其中 σ表示sigmoid 函数, ⊙表示按元素相乘,Wix,Wf x,Wgx,Wox为 输入向量的权重矩阵,Wih,Wfh,Wgh,Woh为上一时刻隐藏层单元输出向量的权重矩阵.将式(6)的LSTM 单元计算过程表示为lstm(), 如式(7)所示:
与LSTM 单元的计算所不同的是,本文所设计的Grid LSTM 单元具有深度维度与时间维度的2 个隐藏层单元输入向量和2 个记忆单元向量,其计算可独立拆分如式(8)所示:
对应于标准的LSTM 单元,Grid LSTM 单元具有2 个维度的独立参数,本文将2 个不同维度的最后一步隐藏层输出进行拼接,如式(9)所示,最终得到Grid LSTM 的输入向量.
其中n表示一次输入的总时间步长.
3.3 基于FPGA 的并行加速设计
为了在边缘嵌入式设备上进行部署,基于FPGA架构,本文对所提出的SALVID 模型进行加速设计,利用高层次综合(high-level synthesis, HLS)语言将模型算法综合为硬件电路[22].
SALVID 模型的加速设计可分成2 部分,包括自注意力层与Grid LSTM 层.为了降低推断时延和提高开发效率,本文基于模块化设计与流水线设计思路,将自注意力层进一步分解为Q,K,V,将Grid LSTM层拆分为2 个维度,这2 个维度并行计算,单个维度的LSTM 计算单元模块可以复用.基于模块化设计思路,重新设计模型的数据流管道,每个计算模块之间通过FIFO 队列资源进行连接,可以实现整个计算过程的流水化.
3.3.1Q,K,V卷积模块设计
自注意力机制网络内部的矩阵Q,K,V卷积计算不具有时间上的相互依赖性,因此无论是在CPU,GPU 或者FPGA 都可以并行计算.但对于CPU 或者GPU 而言,需要完整计算出矩阵Q,K,V的所有值才能进行下一步计算,整个计算过程会处于阻塞状态.相比之下,FPGA 具有并行流水线处理的优势,由于卷积函数卷积核是训练后的固定值,此过程可以很容易实现流水化设计,其计算过程如图7 所示.
Fig.7 A single step calculation process of Q,K,V convolution modules图7 Q,K,V 卷积模块单步计算过程
将Q,K,V的内部计算独立为一个模块,其输入流为一个CAN ID 的时序比特流数据,输出流为Q,K,V的流数据.假设当前输入为x(t,i),代表第t个时间步第i个维度的比特值,由于Q,K,V卷积函数卷积核已知,因此根据式(3)可以得到所有通道对应位置的输出值,d表示输出通道序号.Q,K,V的输出流FIFO 队列将会依次输出所有通道计算后的值用于输入到下一模块的计算过程.在此过程中,矩阵Q,K,V被完全展开成1 维矩阵.
3.3.2 激活函数计算模块
激活模块的计算过程对应式(4),本质上整个计算过程是一个累加过程,如式(10)所示:
其中i,m∈{0,1,...,H-1},ai,m表示矩阵A中对应位置的元素,由于矩阵Q,K,V计算模块输出的矩阵Q,K是按照通道序号以数据流的形式串行传输,如果等接收到所有元素再开始计算A,将会导致很大的时延,因此,基于数据流传输的结构,本文设计了优化后的矩阵计算流程,当分别从Q,K队列读取q(i,j)和k(i,j)时,ki,j在KT中 为kj,i,可以将qi,jkj,i累 加到元 素ai,i中,同时,当前的qi,j和kj,i也需要和缓存的Q,K元素进行乘法计算,并累加到矩阵A对应位置的元素中,其计算过程如式(11)所示:
其中kj,z和qw,j分 别为缓存的矩阵Q,K元素,z∈{0,1,…,j-1},w∈{0,1,…,i-1}.这种计算方法本质上是将式(10)(11)中乘累加的过程进行拆分,使其适合于Q,K的数据流模式,本文将此方法称为动态矩阵乘法计算.由于矩阵Q,K的值是动态产生的,因此只能在Q,K队列全部数据读取完成之后才能进行激活计算,否则无法得到一个完整的输出值.
3.3.3 输出卷积层模块
计算得到激活值后,将激活值串行输入到自注意力机制的卷积层输出模块,该模块对应于式(5).由于此时V特征矩阵的值是完全已知的,这种情况的矩阵乘法运算比动态矩阵的计算要简单.当输入矩阵的 一行数据时,便可以计算出结果矩阵的一行数据,计算过程如图8 所示.
Fig.8 A single step calculation of output convolution module图8 输出卷积模块单步计算
假设当前输入为A˜的 一个元素ai,j,将其与V的第j行元素vj相 乘,再按位累加到结果矩阵第i行元素ri,其计算过程如式(12)所示:
其中m∈{0,1,...,11n}, 11 表示CAN ID 的11 b,n为一次输入的序列长度.
当计算得到A˜V的所有输出值后,去按行进行累加计算,再做卷积函数计算,如式(13)所示:
图9 中,MVM 模块表示LSTM 单元内的矩阵向量乘法.LSTM 单元的计算过程包括LSTM 内部的全连接网络LSTM-MLP、激活(activation)函数和记忆单元和隐藏层单元状态计算LSTM-Tail[23].LSTM-MLP用于并行处理内部矩阵向量乘法.LSTM-Tail 以流水线模式计算最终隐藏层单元和记忆单元的输出值.
Fig.9 The internal computing architecture of LSTM cell图9 LSTM cell 内部计算架构
其中j∈{0,1,...,11n},sad,j表 示 第d个输 出通道的 第j个元素,Wd表示输出卷积函数的第d个卷积核.为了保持自注意力层的输入输出维度一致,将输出卷积函数的输出通道设置为1.
3.3.4 LSTM 计算单元模块
LSTM 计算单元的设计遵循与自注意力机制网络设计相同的设计原理,采用FIFO 队列以及数据流的设计思想,对输入值、中间结果以及输出值进行串行传输以实现整个计算过程流水化.首先对LSTM 单元单个时间步的计算过程进行分析,由于LSTM 内部的全连接层权重矩阵与偏置向量完全已知,因此其优化方法与自注意力机制网络的输出层乘累加计算过程的优化方法相同,为了最大化降低时延,不需要等待矩阵乘法完全计算结束得到完整的输出结果,可以在计算得到一行输出之后,便开始下一步激活函数的计算以及其他模块的计算.LSTM 网络单个时间步的计算过程如图9 所示.
4 实验与结果
4.1 实验设计与评估标准
本节描述实验的相关硬件与软件环境以及模型评估标准.实验的软件环境为PyCharm 2 021.2.1 专业版以及Xilinx Vivado 2 019.2 集成开发环境(包括Vivado 和HLS),数据特征提取实验所采用的是Python 3.7,通过提取原始数据集中的CAN ID 字段,注入攻击数据之后,保存为二进制文件,以提高训练时内存I/O 读取速度.基于PyTorch 1.9.0 构建了各类深度学习实验模型,包括本文提出的SALVID 模型,采用Scikit-learn 0.24.1 机器学习库用于构建SVM 对比模型,模型加速实验均基于Vivado HLS 高层次综合设计.所有PC 端实验都在同一台安装了Windows 10 系统的台式电脑进行,该电脑CPU 配置为Intel i9-10850K CPU @ 3.6GHz × 10,配有8 GB 显存的NVIDIA Quadro RTX 4 000 GPU.加速模型部署测试基于Ultra96-v2 开发板,配置有2 GB LPDDR4 的内存和UltraScale+ MPSoC 架构的FPGA 芯片.
为了衡量模型的检测性能,本文从3 个方面对所提出的SALVID 模型进行评估:
1) 不同模型深度条件下的整体检测准确率(accuracy,ACC)比较.
2) 7 种不同模型之间的性能比较,如ACC、漏报率(false negative rate,FNR)、FPR.
其中TP,FP,TN,FN分别代表被正确分类的正例、被错误分类的正例、被正确分类的负例以及被错误分类的负例.
3) 基于FPGA 平台的3 种不同加速模型的平均推断时延以及整体检测准确率比较.
4.2 不同模型深度之间的性能评估
在本节中,根据模拟攻击方法生成的攻击数据集以及原始的正常数据集,在不同的模型深度条件下,对3 种基于LSTM 的模型进行性能评估,包括Stacked LSTM、Grid LSTM 和所提出的SALVID.模型深度范围为10~30,步长为2.为了避免Dropout 层对模型精度造成的影响,本文在每一种模型深度条件下进行了20 次训练实验,在测试数据集上测试得到ACC后取平均值.实验结果如图10 所示.
Fig.10 The performance between different model depths图10 不同模型深度之间的性能
从图10 可以看出,当模型深度不断增加时,3 种模型的ACC都有上升的趋势,在模型深度达到一定值之后,模型的ACC很难继续提升,SALVID, Grid LSTM, Stacked LSTM 模型分别在模型深度为22, 24,24 时达到最高的ACC,并且SALVID 模型具有最佳的性能表现.实验表明,多维度的特性以及自注意力机制能够有效提升模型的检测性能,特别是在网络模型深度很小的情况下,SALVID 依旧具有很高的检测性能.
为了评估模型的训练稳定性,本文选取了模型深度为16~24 的ACC进行比较.如图11 所示, SALVID的ACC波动范围在2%~4%,而Stacked LSTM 的ACC波动范围在2.4%~6%,Grid LSTM 的ACC波动范围在2.4%~5%.相 比 于SALVID,Stacked LSTM 和Grid LSTM 模型的ACC波动范围较大.在模型深度较大时,SALVID 模型的稳定性表现更佳.实验结果表明,SALVID 具有最佳的训练稳定性表现,这表明自注意力机制有助于降低模型检测性能对模型参数的敏感度,能够提高SALVID 模型的训练稳定性.
Fig.11 The training stability between different models图11 不同模型之间的训练稳定性
为了进一步研究Stacked LSTM, Grid LSTM,SALVID 在检测性能上的差异,本文选取了3 种模型中具有最佳性能表现模型所对应的模型深度作为比较基础,通过其分类混淆矩阵进行分析对比,如图12所示,3 种模型对具有泛洪特性的攻击都有较好的检测识别性能,主要原因在于其泛洪特征较为明显,易于识别.SALVID 对正常状态的识别率最佳,这能够有效地降低正常状态下的FPR.3 种模型的主要差异体现在小批量特性的攻击类型检测识别效果上,对于重放攻击来说,这3 种模型都存在将攻击识别为正常状态的误识别情况,然而,SALVID 的错误识别次数仅为233,大约是Grid LSTM 的1/2 和Stacked LSTM 的1/3.这种差异表明多维度特性与自注意力机制有利于捕获更深层的攻击特征.
Fig.12 The classification confusion matrix of the three models图12 3 种模型的分类混淆矩阵
4.3 基准对比模型与超参数设置
将SALVID 与其他基线对比模型的异常检测性能进行比较,评估指标包括ACC,FNR,FPR.
本文采用交叉熵损失(crossentropy loss)函数作为所有深度学习模型的损失函数,其中p为期望输出,q为实际输出.实验过程中,最大的训练轮数为100,学习率为1E-3,优化器类型为自适应矩估计优化器adam,一个批次训练的大小为128,输出层激活函数采用softmax 函数,并且,当验证集上的损失值不再连续下降的次数超过所设定的中断阈值时,训练过程提前中断,本文设置中断阈值为5.具体超参数设置如表2 所示.
Table 2 Hyperparameter Configuration表2 超参数设置
本文模型包括支持向量机(support vector machines,SVM)、 MLP、 卷 积 神 经 网 络(convolutional neural network, CNN )、 Stacked LSTM、 Grid LSTM 以 及SALVID 模型.
多种模型的性能对比结果如表3 所示.通过实验结果分析,基于LSTM 的模型性能表现明显优于其他非循环神经网络模型SVM, MLP, CNN,其主要原因在于小批量注入攻击与正常状态的特征分布图很类似,非循环神经网络不具有捕获上下文时序相关性的能力,难以区分此类的差异.此外,Stacked LSTM 与Grid LSTM 的实验结果表明,多维度特性加强了LSTM 对具有复杂特征数据的分类能力.对比SALVID 与Grid LSTM 的实验结果可以发现,自注意力机制有效地增强了原数据的攻击特征,提升了SALVID 模型的检测分类性能.
Table 3 The Performance Between Different Models表3 不同模型之间的性能 %
4.4 FPGA 加速模型的参数选择与效能评估
本节基于FPGA 嵌入式平台,采用独立模块化设计方式实现了自注意力机制网络层和LSTM cell 基本运算单元,通过将LSTM cell 计算单元在时间维度上进行堆叠得到Stacked LSTM 模型;然后将Stacked LSTM 拼接组合得到具有深度和时间维度的Grid LSTM 模型;最后将自注意力机制网络层作为前置部分与Grid LSTM 网络层进行串联,得到SALVID 模型.基于PC 端训练得到的模型参数,本文选取了3种表现最佳模型所对应的模型深度列表进行比较,如表4 所示.
Table 4 Model Depth Selection and Their Accuracy表4 模型深度选择及其准确率
本节将会从参数量化分析、资源消耗以及性能表现3 个方面对基于FPGA 的加速模型设计进行评估.
4.4.1 参数量化分析
为了加速模型推断,本文利用定点数量化的方式对模型的参数进行压缩[24].对训练好的模型参数范围进行分析,模型参数包括卷积函数的卷积核、LSTM 内部的全连接层以及输出层的权重矩阵与偏置向量,其分布特征如图13 所示.
Fig.13 Histogram of parameter distribution for each network layer图13 各网络层参数分布直方图
可以看到自注意力机制参数范围大致在-2~2,LSTM 内部的参数范围大致在-2~2,输出层的参数范围大致在-3~3,因此,针对模型参数的定点数量化整数部分,定义其为4 b 位宽,16 b 总位宽,同时,模型计算过程中有累加操作,为了避免溢出,对中间计算值采用32 b 总位宽和16 b 整数位进行量化,激活函数则采用16 b 总位宽和8 b 整数位进行量化.由于输入值只有0 和1 这2 种情况,故用1 b 无符号整数保存,输出值以8 b 无符号整数存储,便于在处理系统(PS)和FPGA 器件上的可编程逻辑(PL)中传输.FPGA设计中具体参数位宽的定义如表5 所示.
Table 5 The Bit Width Definition of Model Parameter Quantization表5 模型参数量化位宽定义
其中,在FPGA 设计中,未实现输出层的softmax归一化函数,这对输出值的大小顺序并不会产生影响,但却能够有效减少资源开销以及降低推断时延.
4.4.2 基于动态矩阵的矩阵乘法优化设计
在FPGA 设计中,传统的矩阵乘法通常是已知权重矩阵,计算输入矩阵与权重矩阵的矩阵乘法结果,而在自注意力机制网络层中内部矩阵的生成具有动态特性,传统设计思路会阻塞计算过程,需要等待内部矩阵计算完成,无法与其他计算过程实现流水线优化,因此针对该计算过程,本文设计了一种基于动态矩阵的矩阵乘法运算优化方法,并与传统设计思路在FPGA 器件上进行板载测试对比.如表6 所示,优化后的设计方法相比传统的设计方法,在具有相同准确度的基础上,降低了0.1 ms 的推断时延.
Table 6 The Performance of Different Design Methods表6 不同设计方法的性能 ms
4.4.3 FPGA 硬件资源消耗
有效利用资源对于嵌入式系统至关重要.基于FPGA 的加速器因其高性能和高能效而被应用于从嵌入式系统到云计算的各种系统[25].本文对加速模型硬件资源利用进行分析.从图14 可以看出,SALVID由于内部结构复杂,占用的硬件资源最多.Grid LSTM 模型中的基本计算单元具有2 个维度,包括深度和时间,因此,在相同模型深度条件下,Grid LSTM的资源开销要多于Stacked LSTM.
Fig.14 Comparison of resource cost in FPGA model design图14 FPGA 模型设计的资源消耗比较
4.4.4 准确率与推断时延性能表现
基于Ultra96-v2 嵌入式FPGA 设备,本文进行了模型板载测试实验,并对Stacked LSTM, Grid LSTM,SALVID 进行了性能评估.板载测试实验数据包括从测试数据集中随机抽取的1 600 个类型均匀分布的样本,实验结果如图15 所示.
Fig.15 Performance comparison of model tested on FPGA board图15 模型在FPGA 板上测试的性能比较
从图15 可以看到,参数量化对Stacked LSTM 与SALVID 模型的ACC影响不大,但对Grid LSTM 的影响比较明显.其主要原因在于Grid LSTM 有2 个维度,2 个维度的计算互相对立,这种结构有利于在FPGA上进行并行设计,然而多维特性也导致模型对参数的敏感性增强.由于增加了自注意力层,SALVID 的时 延 大于Grid LSTM, 但SALVID 的ACC比Grid LSTM 高约2%.并且自注意力层也有助于降低模型对参数的敏感性.并且实验中测试数据的总步长为32,对应CAN 网络大约30 ms 的采集时间.因此,3 种模型的时延远小于CAN 数据的生成时间.
5 结 论
本文提出了一种结合自注意力机制与Grid LSTM 的车载CAN 总线网络入侵检测系统,利用自注意力机制增强原数据时序相关性,再通过多维度的Grid LSTM 模型提取深层次的特征,取得了较好的检测效果.
通过将本文所提出的SALVID 与深度算法MLP,CNN,Stacked LSTM,Grid LSTM 以及传统的机器学习算法SVM 进行实验对比,从整体的检测效果与不同类别样本的检测效果方面进行对比,实验结果表明SALVID 模型有效地提高了检测准确率(98.98%)以及降低了误报率(0.20%).进一步地,本文提供了基于FPGA 平台的模型设计方案,并在FPGA 嵌入式设备上进行加速模型板载测试,实验结果表明,参数量化对模型的准确率影响较小,并且对模型的推断时延影响很小,这为基于深度学习模型的入侵检测系统的实际部署提供了一种针对FPGA 嵌入式设备的实践方案.
作者贡献声明:许鹤负责完成实验设计、调研和论文主要内容的撰写;吴迪、卢继武参与了讨论并提出了修改意见和实验思路;李仁发对论文结构和内容提出指导意见.