《Federated Graph Neural Network for Fast Anomaly Detection in Controller Area Networks》
摘要
由于缺乏CAN帧的加密和认证,CAN总线容易受到各种攻击,一般来说,这些攻击可以分为消息注入、暂停和伪造。现有的CAN总线异常检测机制要么只能检测到其中的一种或两种攻击,要么在预测过程中需要大量的CAN报文,难以实现实时性能。在本文中,我们提出了一个CAN总线异常检测系统,它可以在短至3毫秒(ms)的时间内基于图神经网络(GNN)同时检测所有这些攻击。这项工作在给定的消息区间内基于CAN消息流生成了有向属性图。节点属性表示CAN报文中的数据内容,而每个边缘属性表示在给定间隔内典型CAN ID对的频率。之后,根据生成的CAN消息图来训练GNN。考虑到高度不平衡的训练数据,本文开发了一个两阶段的分类器级联,它由一个用于异常检测的单类分类器和一个用于攻击分类的多类分类器组成。在多类分类器中进一步引入了openmax层,以处理来自未知类别的新的异常情况。为了利用众包的优势,同时保护用户的数据隐私,我们采用联邦学习的方式来训练一个涵盖不同驾驶场景和车辆状态的通用模型。广泛的实验结果表明了我们方法的有效性和效率。
INTRODUTION
每个CAN报文都根据其功能和优先级分配一个CAN ID。当两个报文发生碰撞时,具有较低ID的报文将赢得争夺。通常,包含关键信息的报文,如与动力系统和车辆安全有关的报文,将被分配到较低的CAN ID,而信息娱乐和远程信息处理报文将有较高的CAN ID。
背景:CAN协议本身没有任何安全加密机制,攻击者可以依靠篡改CAN ID来造成严重的安全问题。考虑到这一点,一些入侵检测系统(IDS)已经被提出来以提高CAN总线的安全性。一般来说,如果对手想让伪造的信息压倒正常的信息,它可以注入伪造的信息(拒绝服务或模糊攻击),暂停正常的信息(暂停攻击),或伪造正常信息的数据内容(重放或欺骗攻击)。同一CAN网络中的ECU通常以相对固定的频率传输它们的消息,这使得CAN消息序列的统计数据相对稳定。 在这种情况下,如果前两种攻击策略发生,报文频率或报文序列就有可能被改变,这就是现有的基于报文频率或序列的检测方法的动机。此外,一些现有的工作考虑了消息伪造攻击。它们是基于这样的观察:具有相同CAN ID的消息内容不会有太大的变化。
当考虑到消息注入/暂停攻击和消息伪造攻击时,情况会变得复杂。信息伪造攻击不会改变信息频率或序列模式,这将逃避只考虑信息注入/暂停的IDS。另一方面,针对消息伪造的IDS不能识别拒绝服务(DoS)攻击或总线关闭攻击,这些攻击不需要改变正常消息内容。最近,一些相关工作试图基于长短时记忆(LSTM)自动编码器和Bloom过滤同时检测上述两种攻击。然而,这些方案需要为每个CAN ID生成一个单独的模型并分析相关的消息,这会引起非常高的计算复杂性和入侵检测延迟。为了检测所有的攻击,我们也可以应用集合学习来训练多个分类器,但它仍然会导致计算复杂性和检测延迟的增加。
贡献:基于上述观察,我们在本文中提出了一种基于GNN的CAN总线IDS,它可以同时有效地检测消息注入、暂停和伪造攻击。有向属性图的构建包括统计CAN消息序列和消息内容。其中,消息序列由图中的节点、边和边属性描述。具有典型CAN ID的报文中的数据内容通过READ方法进行预处理,并总结为相应的节点属性。
有了这些生成的CAN报文图,一个基于GNN的两阶段级联分类器可以被训练来建立我们的IDS,如图1所示。第一阶段具有与现有IDS类似的功能,即异常检测。考虑到受攻击的数据在现实世界中通常很难获得,正常数据通常在训练集中占主导地位,这将变得非常不平衡。在这种情况下,我们用一个单类分类层取代GNN中传统的softmax层,以达到异常检测的目的。一旦被攻击的数据样本被第一级分类器捕获,该数据样本将进一步进入第二级分类器进行攻击分类。受[19]的启发,除了用于多类分类的softmax层,第二阶段分类器还有一个openmax层,用于处理来自潜在未知类别的新异常,这些异常将被缓冲,以便进一步调查和开放世界识别。
此外,在第六节中,我们将表明,不同的车辆状态会导致消息序列、消息内容和进一步的消息图的变化。因此,在一辆车上训练的模型将受到其有限的驾驶场景和车辆状态的限制(例如,一辆车可能主要在本地低速行驶,并有很多停车),所以不能应用于其他具有不同驾驶场景和车辆状态的车辆(例如,一辆车可能主要在高速路上行驶,很少停车)。同样地,不同的驾驶行为也可能限制了衍生模型的全面性。例如,一个激进的司机可能比一个保守的司机更强烈地加速车辆。为了利用众包的优势,同时保护用户的数据隐私,我们进一步采用联邦学习框架来训练一个通用模型,该模型涵盖了广泛的驾驶场景、车辆状态和驾驶行为。
这个框架甚至可以包括特殊的角落案例,如事故或危险情况,这些案例可以由汽车制造商在安全测试中提供。本文的主要贡献总结如下:
- 我们提出了一种CAN总线IDS,它可以同时有效地检测CAN消息注入/暂停和消息伪造攻击。我们没有简单地组合上述两种传统的IDS,而是定义了一个CAN消息图,以CAN ID对的方式将消息内容与统计消息序列结合起来。
- 我们开发了一个适合于有向属性图的GNN。考虑到受攻击的数据在现实世界中很难获得,这可能会导致训练集的高度不平衡,我们开发了一个两阶段的分类器级联,分别处理正常和受攻击的CAN数据。我们引入了一个Openmax层,以应对来自潜在的未知类别的新的异常情况。此外,我们还考虑了联合学习,以涵盖不同的驾驶场景和车辆状态,同时保护数据隐私
- 我们通过基于几个真实世界数据集的广泛实验来评估拟议的IDS。通过与三个基线的比较,我们验证了我们提出的IDS可以在更短的时间内达到与基于统计CAN消息序列和消息内容的IDS类似的性能。此外,联合学习可以有效地结合不同驾驶场景和车辆状态下得出的模型,并极大地提高入侵检测性能。
表一总结了我们提出的IDS与现有方案的综合比较,以显示我们方法的优势。请注意,检测功能的比较也列在表中现有的CAN总线系统的IDS只能知道攻击是否发生(二进制),而我们提出的IDS可以进一步弄清具体的攻击类型,并解决以前未知的异常情况(开放多类)。
FIRST-STAGE CLASSIFIER
GNN
在本文中,我们基于 [36] 中提出的 GNN 进行 CAN 总线入侵检测。本文中GNN的卷积层采用以下形式:
[36] 中的原始 GNN 仅针对没有边属性和自循环的无向图。为了使其适用于本文中的 CAN 消息图,我们首先将节点矩阵VV与边矩阵EE连接起来,生成 CAN 消息图的描述符,表示为Xn×(n+n′)X_{n×(n+n^′)}。这样的操作实际上是将边属性嵌入到节点属性中。节点矩阵中的n′n^′表示所有 CAN ID 中数据块的最大数量。换句话说,从特定节点开始的边的属性被视为该节点属性的一部分。
A‾=A+Ioverline{A} = A + I表示添加了自循环的邻接矩阵,这是通过单位矩阵II实现的。由于本文考虑的CAN消息图是有向的并允许自循环,我们进一步处理邻接矩阵AA以在添加II之前使所有对角线元素为0。
整个图卷积过程可以解释如下。节点和边缘属性首先通过线性特征变换XWXW拟合到卷积层中。之后,对于每个节点,其“通道描述符”(用Y=XWY = XW表示)将通过A‾Yoverline{A}Y传播到包括其自身在内的邻域。在这里,我们可以看到为什么我们需要在邻接矩阵AA中包含自循环。然后,我们通过将它们与对角度矩阵D~tilde{D}相乘来对传播结果进行归一化,其目的是在图卷积后保持固定的特征尺度。最后,在输出图卷积结果之前应用逐点非线性激活函数 f(⋅)f(·)。
类似于图像处理中应用的卷积神经网络,为了捕获不同尺度的图子结构特征,我们需要应用和堆叠多个卷积层。在这种情况下,在第tt个卷积层中,我们进一步有:
One-Class Classification
我们将 SVDD 引入我们的 GNN 以进行入侵检测。
SVDD的相关优化问题可以定义如下:
约束条件为
在等式(3a)中,ξξ称为松弛向量,其中所有松弛变量ξk≥0ξ_k ≥ 0共同构成一个软分类边界或超球面。软分类边界允许一些原本来自一个类的数据样本或支持向量越过边界线落入另一类,这有助于通过在一定程度上减小超球体的半径来避免模型过拟合。另一方面,超球体不能无限制地收缩,因为这可能会导致模型欠拟合。在这种情况下,这里引入一个权重ν∈(0,1]ν∈ (0, 1]来平衡模型的过拟合和欠拟合。在等式 (3b)中,函数ϕcg(xk)phi_{c_g}(x_k)是 SVM 中通常用于空间映射的核函数。
在这里,我们可以将 GNN 的整个架构,除了最后一个一类分类层视为核函数。 XkX_k指的是训练集中第kk个 CAN消息图。∣∣⋅∣∣2||·||^2是L2mathcal{L^2}范数。
通过一个小技巧,我们可以将上述优化问题的约束嵌入到它的目标函数中。首先,我们可以设置:
我们还考虑了模型参数正则化项,以进一步避免模型过拟合。最后,我们可以在没有任何约束的情况下得到以下优化问题,它可以看作是我们整个 GNN 模型的损失函数。
这里λλ是权重衰减,以平衡大型模型参数的惩罚。WallW_{all}表示一个向量,它包括我们的 GNN 模型中除最后一个一类层之外的所有参数。
我们不再将超球面oo的中心视为此处要调整的系数,而是按照 [39] 中的策略来固定oo。首先从训练集中选择一些数据样本。之后,我们让这些数据样本通过除最后一个一类分类层之外的初始化的整个 GNN,并记录最后一个密集层的输出。最后,中心oo被设置为这些输出的平均值。请注意,上述损失函数需要同时调查训练集中的所有CAN 消息图。如果使用梯度下降进行模型参数更新,则需要批量考虑用于训练的CAN消息图。考虑到计算复杂度,本文的训练过程基于小批量随机梯度下降(SGD)。
SECOND-STAGE CLASSIFIER
第一阶段分类器过滤掉所有异常后,将进一步送到第二阶段分类器检测具体的攻击类型。第二阶段分类器可以看作是基于特征的 IDS。为了解决来自未知类的潜在新异常,例如零日漏洞,第二阶段分类器进一步引入了一个 openmax 层。
在训练过程中,第二阶段在输出层仍然使用传统的softmax函数。在入侵检测期间部署 openmax 层以替换 softmax 层,后者修改原始分类器中倒数第二层的输出以拒绝与任何已知类不够接近的数据样本。
当一个新的异常CAN消息图来到第二级分类器时,openmax层将按照算法1进行攻击类型分类,并对潜在的未知异常进行拒绝。从算法 1 中,我们可以看出 openmax 层通常使用 softmax 函数适应开放世界识别,这是通过引入一个额外的类c0c_0(算法 1 的第 8 行)来实现的。这样一个类被用来包括所有与任何现有攻击类型不太相似的异常CAN消息图,并进一步推断出一个潜在的未知类。算法 1 的第 4 行生成新异常 CAN 消息图属于选定数量的排名靠前的类或攻击类型的概率。这种概率来自于相应的拟合Weibull分布,并用于修改激活向量(算法1的第5行)。
联邦图神经网络学习
车辆状态和CAN消息关系
目前,现有的工作是基于 CAN 总线入侵可以改变统计消息序列和消息内容的假设。事实上,车辆状态的变化也会导致 CAN 消息发生变化,但这种变化是合理的。直观上,CAN 报文内容会发生变化以反映不同的车辆状态。另一方面,车辆状态也会影响 CAN 消息序列,因为某些 ECU 可能不会一直激活以延长车辆电池寿命。例如,轮胎压力传感器大部分时间都会休眠,只有当车辆开始高速行驶(超过 40 公里/小时)或在诊断和初始 CAN ID 绑定阶段时才会唤醒。
为了区分由车辆状态变化引起的CAN报文变化,我们需要从尽可能多的驾驶场景和车辆状态中收集数据,考虑到第一节中讨论的限制,这些数据可能必须来自不同的车辆。然后可以将联邦学习应用于模型训练,同时保护数据隐私。
联邦学习
在本文中,非 IID 属性可能由不同的驾驶场景或车辆状态引起。为了提高我们 IDS 的入侵检测性能,我们考虑联邦学习环境。不同状态的车辆可以根据自己的CAN总线数据训练我们的GNN模型,然后将模型参数上传到云端服务器进行模型聚合。
在本文中,我们评估了两种联邦学习方案,即FedAvg和 FedProx,它们都基于小批量 SGD 来更新局部参数。整个训练过程可以分为云服务器和车辆之间一定数量的通信轮次。在每一轮通信中,选择部分车辆将其模型参数上传到云服务器,在本地迭代后进行聚合。在第ll个选定的车辆中,在每次局部迭代时都会选择一些生成的CAN消息图。在第一阶段分类器的训练过程中,对于每个选定的消息图XkX_k,我们将根据等式(5)中定义的损失函数推导出相应的损失。 和第ll辆车的当前局部模型参数,表示为f(rl,Wall,l,Xk)f(r_l, W_{all,l}, X_k )。在小批量 SGD 下,第ll个选定车辆的小批量损失可以通过对所有选定消息图的损失进行平均来计算:
其中PlP_l是每次局部迭代时第ll辆车中选定消息图的集合,mlm_l表示PlP_l中的元素总数。
当涉及到第ll辆车的局部模型参数更新时,在每个局部迭代τtau的小批量梯度Gτ(rl,Wall,l)G_τ(r_l,W_{all,l})可以通过计算F(rl,Wall,l)F(r_l, W_{all,l})在每个模型参数上的偏导数得到。然后,第ll辆车的模型参数将更新如下:
在这里,我们使用 [rl,Wall,l]τ[r_l, W_{all,l}]_τ 来表示一个向量,它包含我们的一类 GNN 模型中的所有参数。 η代表学习率。经过给定的迭代次数后,所有选中的LL辆车辆将学习到的模型参数上传到云服务器进行聚合:
结果被认为是每轮通信后的全局学习模型参数。最后,[r,Wall][r, W_{all}]将广播给所有车辆以进行以下可能的局部迭代。
上面的模型参数更新一般是基于FedAvg,不一定会提供收敛保证。 FedProx 通过进一步引入近端项来提高收敛性能。这样的一项可以保证更新后的局部模型参数不会偏离上一轮通信导出的全局模型参数。在数学上,第ii辆车的小批量损失函数将修改为:
在这里,我们使用 [r,Wall]pre[r, W_{all}]_{pre}来表示在上一轮通信中导出的全局模型参数。μmu是一个超参数,用于平衡近端项的影响。
第二阶段分类器的训练过程类似,只是这里分别使用传统的softmax和交叉熵函数作为输出层和损失函数。此外,openmax层的部署需要Weibull拟合,这是在模型训练结束时进行的。在联合学习的情况下,云服务器首先会要求车辆上传异常CAN消息图的激活向量和其训练集中的相应标签。之后,Weibull拟合将在云服务器上进行。由于只需要上传激活向量而不是原始数据,所以不会违反联合学习的隐私保证。此外,Weibull拟合只需要在云服务器和车辆之间进行一轮通信,这不会引起很多额外的通信开销。