车载can总线数据异常检测方法及装置
技术领域
1.本发明涉及数据处理领域,尤其涉及一种车载can总线数据异常检测方法及装置。
背景技术:2.控制器域网(controller area network,can)总线是一种控制器之间通讯的现场总线。can总线最早应用于汽车工业,由德国博世(bosch)提出。由于消费者对汽车功能需求的不断增加,汽车中电子器件不断增加,造成各控制器之间通讯信号接线方式复杂,因此设计了一个单一的网络总线,整车的所有控制器都可以挂在这个网络上。
3.汽车工业的发展已远远超出了机械系统本身,当今,许多基于先进嵌入式电子技术的智能功能已进入汽车行业。虽然电子配置和各个部件之间的相互关联提高了整个汽车的舒适性、功能性和安全驾驶,但同时也带来安全性攻击问题,此类攻击会渗透到最初是一个闭环系统的车内互连的通信网络中。对于这样的应用场景,通常会使用的通信协议是控制器区域网络(can)。由于缺乏加密和认证,这种网络依然受到各种攻击。因此,任何恶意/劫持的节点都可能造成灾难性的事故和经济损失。
4.以往针对车载can总线的入侵检测系统,通常采用有监督学习的方法。例如从can id和数据域上提取时序上的特征,再进行入侵检测,或者,从can总线的消息间隔、数据量等方面提取特征。其中,消息间隔指消息间隔的时间长短,数据量指车辆待机时和行驶时的数据量大小,根据两者对正常和异常的数据进行人工标注。
5.现有技术的缺点主要在以下几个方面:
6.1、can总线数据量庞大,异常数据往往占比很小,实际应用中很难有效对异常的can数据进行人工标注,有监督学习的算法很难适用,或工程量巨大。
7.2、利用特征提取的方法进行异常检测,没有从上下文分析的角度考虑前后can数据,尤其是can id的顺序关系。
8.3、以往针对车载can总线的入侵检测系统,很多从can总线通信的消息间隔、数据量等角度出发提取特征并使用一些较为传统的异常检测方法实现,忽略了can总线数据包内的数据异常。
技术实现要素:9.本发明实施例的目的是提供一种车载can总线数据异常检测方法及装置,以解决现有技术中的不能检测can数据包内异常的问题。
10.第一方面,本发明提供了一种车载can总线数据异常检测方法,所述方法包括:
11.获取can总线数据;所述can总线数据包括can id和数字域;
12.对所述can id和数字域进行编码,得到第一can id编码和第一数字域编码;
13.将前一时段的所述第一can id编码输入第一模型,预测得到第二can id编码;
14.根据所述第一can id编码和所述第二can id编码,对所述第一模型进行训练,得到训练后的第一模型;
15.将前一时段的所述第一数字域编码输入第二模型,预测得到第二数字域编码;
16.根据所述第一数字域编码和所述第二数字域编码,对所述第二模型进行训练,得到训练后的第二模型;
17.将当前can总线数据中的can id对应的第一can id编码输入训练后的所述第一模型,得到第一输出结果,将当前can总线数据中的数字域长度对应的第一数字域编码输入序列后的所述第二模型,得到第二输出结果;
18.根据所述第一输出结果和所述第二输出结果,判断can总线数据是否异常。
19.在一种可选的实现方式中,所述对所述can id和数字域进行编码,得到第一can id编码和第一数字域编码具体包括:
20.通过独热编码,对所述can id进行编码,得到第一can id编码;
21.通过独热编码,对所述数字域进行编码,得到第一数字域编码。
22.在一种可选的实现方式中,所述根据所述第一can id编码和所述第二can id编码,对所述第一模型进行训练,得到训练后的第一模型具体包括:
23.根据前一时段的第一can id编码,预测得到下一个第二can id编码;
24.将该下一个第二can id编码作为第一can id编码,继续进行预测,得到下下一个第二can id编码;
25.在每次预测后,通过损失函数计算得到的第二can id编码与真实值的差距;
26.当所述差距趋于收敛时,第一模型训练结束,得到训练后的第一模型。
27.在一种可选的实现方式中,所述根据所述第一数字域编码和所述第二数字域编码,对所述第二模型进行训练,得到训练后的第二模型具体包括:
28.根据前一时段的第一数字域编码,预测得到下一个第二数字域编码;
29.将所述下一个第二数字域编码作为第一数字域编码,继续进行预测,得到下下一个第二数字域编码;
30.在每次预测后,通过损失函数计算得到的第二数字域编码与真实值的差距;
31.当所述差距趋于收敛时,第二模型训练结束,得到训练后的第二模型。
32.在一种可选的实现方式中,所述将当前can总线数据中的can id对应的第一can id编码输入训练后的所述第一模型,得到第一输出结果,将当前can总线数据中的数字域长度对应的第一数字域编码输入序列后的所述第二模型,得到第二输出结果具体包括:
33.获取当前can总线数据;
34.对当前can总线数据中的can id进行编码,得到第一can id编码,对当前can总线数据中的数字域进行编码,得到数字域编码;
35.将第一can id编码输入训练后的第一模型,预测得到多个第二can id编码;多个第二can id编码作为第一输出结果;
36.将第一数字域编码输入训练后的第二模型,预测得到多个第二数字域编码;多个第二数字域编码作为第二输出结果。
37.在一种可选的实现方式中,所述根据所述第一输出结果和所述第二输出结果,判断can总线数据是否异常具体包括:
38.当第一输出结果不包含下一个can id真实值编码,和/或,当第二输出结果不包含下一个数字域真实值编码时,所述can总线数据异常。
39.第二方面,本发明提供了一种车载can总线数据异常检测装置,所述装置包括:
40.获取模块,所述获取模块用于获取can总线数据;所述can总线数据包括can id和数字域;
41.编码模块,所述编码模块用于对所述can id和数字域进行编码,得到第一can id编码和第一数字域编码;
42.第一预测模块,所述第一预测模块用于将前一时段的所述第一can id编码输入第一模型,预测得到第二can id编码;
43.第一训练模块,所述第一训练模块用于根据所述第一can id编码和所述第二can id编码,对所述第一模型进行训练,得到训练后的第一模型;
44.第二预测模块,所述第二预测模块用于将前一时段的所述第一数字域编码输入第二模型,预测得到第二数字域编码;
45.第二训练模块,所述第二训练模块用于根据所述第一数字域编码和所述第二数字域编码,对所述第二模型进行训练,得到训练后的第二模型;
46.输入模块,所述输入模块用于将当前can总线数据中的can id对应的第一can id编码输入训练后的所述第一模型,得到第一输出结果,将当前can总线数据中的数字域长度对应的第一数字域编码输入序列后的所述第二模型,得到第二输出结果;
47.判断模块,所述判断模块用于根据所述第一输出结果和所述第二输出结果,判断can总线数据是否异常。
48.第三方面,本发明提供了一种计算机服务器,包括:存储器、处理器和收发器;
49.所述处理器用于与所述存储器耦合,读取并执行所述存储器中的指令,以实现第一方面所述的车载can总线数据异常检测方法;
50.所述收发器与所述处理器耦合,由所述处理器控制所述收发器进行消息收发。
51.第四方面,本发明提供了一种芯片系统,包括处理器,所述处理器与存储器的耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现第一方面任一项所述的车载can总线数据异常检测方法。
52.第五方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行第一方面任意一项所述的车载can总线数据异常检测方法。
53.通过应用本发明提供的车载can总线数据异常检测方法,可以实现如下技术效果:
54.1、利用第一模型和第二模型的模型特点,输入为前序一段时间的第一can id编码和第一数字域编码,根据上文预测下文,下文又会成为新的上文的一部,可以更好地提取整个序列时序上的长期特征,也即从上下文分析的角度考虑前后can总线数据,尤其是can id的顺序关系。
55.2、利用第一模型和第二模型同时对can id和数据域部分进行异常检测,从而提高了检测效率。
56.3、本技术利用lstm,不需要在海量不均衡数据中进行人工标注,从而节省了人力资源。
附图说明
57.图1为本发明实施例一提供的车载can总线数据异常检测方法流程示意图;
58.图2为can总线数据示意图;
59.图3为本发明实施例二提供的车载can总线数据异常检测装置结构示意图;
60.图4为本发明实施例三提供的计算机服务器结构示意图;
61.图5为本发明实施例四提供的芯片系统结构示意图;
62.图6为本发明实施例五提供的计算机可读存储介质结构示意图。
具体实施方式
63.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为便于描述,附图中仅示出了与有关发明相关的部分。
64.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
65.实施例一
66.本发明实施例一提供了一种车载can总线数据异常检测方法,该方法应用在对车载can总线数据中的异常进行检测的场景,如图1所示,本技术包括以下步骤:
67.步骤110,获取can总线数据;所述can总线数据包括can id和数字域;
68.具体的,采集某汽车品牌用户单车上的can总线数据,如图2所示,可以看到can总线数据包含几部分:第一列是时间戳,代表数据发生的时间;比如1478198376.389427,第二列是can id,代表不同的设备或者数据来源,为16进制的数据,比如0316;第三列是数字域,数字域表示车型,比如8;右侧其他列是数字域,用于表示有效数据,由8个字节的16进制的数字组成,比如05,21,68,09,21,21,00,6f。
69.步骤120,对所述can id和数字域进行编码,得到第一can id编码和第一数字域编码;
70.具体的,因为can id和数字域主要使用16进制数据,本技术采用独热(one-hot)编码的形式,将16进制数据编码为数值。one-hot编码使用n位状态寄存器来对n个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。以can id:0316为例,若其为出现频率最高的值,则通过one-hot编码,将can id编码为第一can id编码,即此处第一can id编码可以为二进制0,词频越高,编码越小,依此类推,直到图2中的所有的can id均被编码为第一can id编码。
71.步骤130,将前一时段的所述can id编码输入第一模型,得到第二can id编码;其中,所述第二can id编码为下一个编码;
72.其中,第一模型为长短期记忆网络(long-short term memory,lstm)。
73.具体的,图2中第一列代表的是can id,该can id经过one-hot编码后为第一can id编码,第二can id编码表示通过第一模型预测得到的can id。
74.需要说明的是,下一个,指的可以是下一时刻,也可能是下一时段,而输入的第一can id编码有可能是前一时刻,也可能是前一时段内的第一can id编码,此处为了提高预测的速度,针对前一时段可以设置有一滑动窗口,该滑动窗口将一定时段范围内的一系列
第一can id编码包括在内,从而可以通过滑动窗口内的第一can id编码,根据上下文预测,得到下一个第二can id编码。
75.步骤140,根据所述第一can id编码和所述第二can id编码,对所述第一模型进行训练,得到训练后的第一模型;
76.具体的,根据前一时段的第一can id编码,预测得到下一个第二can id编码,再将该第二can id编码作为第一can id编码,继续进行第二can id编码的预测,从而实现了对lstm进行训练。
77.在一个具体的实现方式中,该第一模型的输入为前序n个第一can id编码,用以预测下一个第二can id编码,即根据前一段时间的第一can id编码预测下一时刻的第二can id编码,然后通过交叉熵损失函数计算预测的结果,即第二can id编码和下一时刻真实值的差距,此处采用交叉熵作为损失函数,用以衡量每次迭代后第一模型预测值与真实值的差距,直到第一模型的预测值与真实值的差距趋于收敛,从而提高了第一模型的预测精度。
78.步骤150,将前一时段的所述第一数字域编码输入第二模型,得到第二数字域编码;其中,所述第二数字域编码为下一个编码;
79.其中,第二模型也可以为lstm。
80.需要说明的是,下一个,指的可以是下一时刻,也可能是下一时段,而输入的第一数字域编码有可能是前一时刻,也可能是前一段时间内的第一数字域编码,此处为了提高预测的速度,可以设置有一滑动窗口,该滑动窗口将一定时间范围内的一系列第一数字域编码包括在内,从而可以通过滑动窗口内的第一数字域编码,预测得到下一个第二数字域编码。此处,预测得到第二数字域编码的过程与步骤130相似,此处不再赘述。
81.步骤160,根据所述第一数字域编码和所述第二数字域编码,对所述第二模型进行训练,得到训练后的第二模型;
82.具体的,利用第一数字域编码和第二数字域编码对第二模型进行训练,输入前序m个第一数字域编码去预测下一时刻第二数字域编码,与步骤140流程类似,采用交叉熵作为损失函数,用以衡量每次迭代时第二模型的预测值与真实值的差距,直到预测得到的第二数字域编码与真实值差距趋于收敛,从而提高了第二模型的预测精度。
83.需要说明的是,为了提高模型训练速率,步骤130-140,与步骤150-160可以同时执行。
84.从而,通过上述步骤110-160,离线实现了模型的训练,在后续使用中,直接执行步骤170-180,即可实现对车载can总线数据的异常检测。
85.步骤170,将当前can总线数据中的can id对应的第一can id编码输入训练后的第一模型,得到第一输出结果,将当前can总线数据中的数字域长度对应的第一数字域编码输入序列后的第二模型,得到第二输出结果;
86.具体的,将实时can总线数据导入,分别对can id和数字域进行编码,得到第一can id编码和第一数字域编码。将第一can id编码输入训练后的第一模型,将第一数字域编码输入训练后的第二模型。
87.其中,第一输出结果即可认为第一can id编码输入模型后,所得到的预测值,该预测值可以包括多个第二can id编码。第二输出结果即可认为第一数字域编码输入模型后,所得到的预测值,该预测值可以包括多个第二数字域编码。
88.步骤180,根据所述第一输出结果和所述第二输出结果,判断can总线数据是否异常。
89.具体的,若输出的k个第二can id编码中不包含下一个can id真实值编码,则认为can id为异常,即can总线数据异常。若输出的k个第二数字域编码中不包含下一个数字域真实值编码,则认为数字域为异常,即can总线数据异常。若输出的k个第二can id编码中不包含下一个can id真实编码,且输出的k个第二数字域编码中不包含下一个数字域真实值编码,则认为can总线数据异常。
90.其中,此处的下一个can id真实值编码,指的是下一个can id的真实值对应的第一can id编码。该下一个can id的真实值可以包含在下一个can总线数据中。相应的,下一个数字域真实值编码,指的是下一个数字域的真实值对应的第一数字域编码,下一个数字域真实值也包含在下一个can id总线数据中。
91.进一步的,通过上述对第一模型进行训练和对第二模型进行训练,训练后的第一模型和训练后的第二模型代表的是can总线安全状态下的can id和数据域变化的模式,即can总线数据的安全画像。
92.通过应用本发明提供的车载can总线数据异常检测方法,可以实现如下技术效果:
93.1、利用第一模型和第二模型的模型特点,输入为前序一段时间的第一can id编码和第一数字域编码,根据上文预测下文,下文又会成为新的上文的一部,可以更好地提取整个序列时序上的长期特征,也即从上下文分析的角度考虑前后can总线数据,尤其是can id的顺序关系。
94.2、利用第一模型和第二模型同时对can id和数据域部分进行异常检测,从而提高了检测效率。
95.3、本技术利用lstm,不需要在海量不均衡数据中进行人工标注,从而节省了人力资源。
96.实施例二
97.本发明实施例二提供了一种车载can总线数据异常检测装置,包括:获取模块310,编码模块320,第一预测模块330,第一训练模块340,第二预测模块350,第二训练模块360,输入模块370和判断模块380。
98.所述获取模块310用于获取can总线数据;所述can总线数据包括can id和数字域;
99.所述编码模块320用于对所述can id和数字域进行编码,得到第一can id编码和第一数字域编码;
100.所述第一预测模块330用于将前一时段的所述第一can id编码输入第一模型,预测得到第二can id编码;
101.所述第一训练模块340用于根据所述第一can id编码和所述第二can id编码,对所述第一模型进行训练,得到训练后的第一模型;
102.所述第二预测模块350用于将前一时段的所述第一数字域编码输入第二模型,预测得到第二数字域编码;
103.所述第二训练模块360用于根据所述第一数字域编码和所述第二数字域编码,对所述第二模型进行训练,得到训练后的第二模型;
104.所述输入模块370用于将当前can总线数据中的can id对应的第一can id编码输
入训练后的所述第一模型,得到第一输出结果,将当前can总线数据中的数字域长度对应的第一数字域编码输入序列后的所述第二模型,得到第二输出结果;
105.所述判断模块380用于根据所述第一输出结果和所述第二输出结果,判断can总线数据是否异常。
106.进一步的,编码模块320所述对所述can id和数字域进行编码,得到第一can id编码和第一数字域编码具体包括:通过独热编码,对所述can id进行编码,得到第一can id编码;通过独热编码,对所述数字域进行编码,得到第一数字域编码。
107.进一步的,第一训练模块340所述根据所述第一can id编码和所述第二can id编码,对所述第一模型进行训练,得到训练后的第一模型具体包括:根据前一时段的第一can id编码,预测得到下一个第二can id编码;将该下一个第二can id编码作为第一can id编码,继续进行预测,得到下下一个第二can id编码;在每次预测后,通过损失函数计算得到的第二can id编码与真实值的差距;当所述差距趋于收敛时,第一模型训练结束,得到训练后的第一模型。
108.进一步的,第二训练模块360所述根据所述第一数字域编码和所述第二数字域编码,对所述第二模型进行训练,得到训练后的第二模型具体包括:根据前一时段的第一数字域编码,预测得到下一个第二数字域编码;将所述下一个第二数字域编码作为第一数字域编码,继续进行预测,得到下下一个第二数字域编码;在每次预测后,通过损失函数计算得到的第二数字域编码与真实值的差距;当所述差距趋于收敛时,第二模型训练结束,得到训练后的第二模型。
109.进一步的,输入模块370所述将当前can总线数据中的can id对应的第一can id编码输入训练后的所述第一模型,得到第一输出结果,将当前can总线数据中的数字域长度对应的第一数字域编码输入序列后的所述第二模型,得到第二输出结果具体包括:获取当前can总线数据;对当前can总线数据中的can id进行编码,得到第一can id编码,对当前can总线数据中的数字域进行编码,得到数字域编码;将第一can id编码输入训练后的第一模型,预测得到多个第二can id编码;多个第二can id编码作为第一输出结果;将第一数字域编码输入训练后的第二模型,预测得到多个第二数字域编码;多个第二数字域编码作为第二输出结果。
110.本发明实施例二提供的装置,可以执行上述方法实施例一中的方法步骤,其实现原理和技术效果类似,在此不再赘述。
111.需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,确定模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上确定模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所描述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
112.例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,asic),或,一个或多个微处理器(digital signal processor,dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,soc)的形式实现。
113.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本技术实施例所描述的流程或功能。上述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。上述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,上述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线路((digital subscriber line,dsl))或无线(例如红外、无线、蓝牙、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
114.实施例三
115.本发明实施例三提供了一种计算机服务器,如图4所示,包括:存储器、处理器和收发器;
116.处理器用于与存储器耦合,读取并执行存储器中的指令,以实现上述实施例一提供的任意一种车载can总线数据异常检测方法;
117.收发器与处理器耦合,由处理器控制收发器进行消息收发。
118.实施例四
119.本发明实施例四供了一种芯片系统,如图5所示,包括处理器,处理器与存储器的耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现如实施例一提供的任意一种车载can总线数据异常检测方法。
120.实施例五
121.本发明实施例五提供一种计算机可读存储介质,如图6所示,包括程序或指令,当所述程序或指令在计算机上运行时,实现如实施例一提供的任意一种车载can总线数据异常检测方法。
122.专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
123.结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
124.以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。