一种面向车载CAN总线的报文注入式攻击的检测方法
技术领域
本发明涉及一种面向车载CAN总线的报文注入式攻击的检测方法,使用车载CAN总线消息发送的周期性以及消息数据段中的数据变化稳定性检测车载CAN总线报文注入式攻击,属于信息安全技术。
背景技术
20世纪80年代早期由BOSCH开发的车用控制器局域网(Controller AreaNetwork,CAN)是一种串行总线,已成为现代汽车总线标准协议。随着汽车电子控制技术的普及,汽车上普遍采用电子控制单元(Electronic Controll Unit,ECU)控制例如组合仪表、动力转向、车灯系统等模块。为了实现各个模块之间的信息交互,现代汽车一般使用CAN总线协议,将所有ECU连接在一条双绞线上,使用双绞线两根电线之间的电压差进行串行通信,速率可达1MB/s,每个ECU通过设置双绞线之间的电压差来发送消息,CAN总线上的其他ECU通过检测双绞线之间的电压差来接收数据。汽车中CAN总线的引入带来了成本降低、简化结构等优点,由于CAN总线协议的以下特点,使其容易遭受注入式攻击。
(1)多主控制:CAN总线空闲时每个连接在CAN总线上的ECU都可以向总线发送数据,所以攻击者可以利用连接到CAN总线上的ECU发送消息实施攻击。
(2)广播特性:CAN总线上任何一个ECU发送消息时,连接在同一CAN总线上其他所以ECU都可以接收到,理论上可以实现对任一ECU的攻击。
(3)仲裁访问:当同一CAN总线上的多个ECU同时向CAN总线发送消息时,CAN总线协议通过仲裁ECU优先级的方式决定CAN总线传输媒介的访问权,因此攻击者可以利用优先级较高的ECU发动拒绝服务(Denial of Service,DoS)攻击。
(4)缺乏安全机制:CAN总线协议采用明文发送消息,攻击者很容易伪造消息来实施攻击。
随着现代社会对汽车驾驶安全和智能化的要求越来越高,无人驾驶成为汽车未来的发展趋势。无人驾驶的发展和现代汽车的智能化使得蓝牙、WIFI、车载诊断接口(On-Board Diagnostics,OBD)等汽车外部接口类型不断变多,而这些外部接口都可以连接到CAN总线网络,攻击者可以利用这些外部接口针对CAN总线网络实施注入式攻击,干扰汽车的核心控制模块,例如引擎控制模块(Engine Control Module,ECM)、电子刹车控制模块(Electronic Brake Control Module,EBCM)等,间接威胁到乘客的人身安全。而现代汽车本身对这些攻击的防御能力极弱,所以对CAN总线注入式攻击的检测研究有重大安全意义。
中国计量大学在其申请的专利文献“一种检测注入式攻击的控制器局域网汽车总线报警网关”(专利申请号:CN201710837695.2,公开号:CN107454107A)中提出了一种针对车载CAN总线注入式攻击的检测方法。该方法利用网关作为检测设备,保存每个数据帧标识符的周期和数据段数值的最大、最小值。此方法在实时通信时,出现下列两种情况时发出警报:①数据帧发送周期发生变化;②数据段数值出记录的最大值、最小值范围。这种办法虽然可以检测出车载CAN的注入式攻击,但是存在一些不足之处:首先,网关作为网间通信的桥梁起着十分重要的作用,此检测方法利用网关监测所有标识符的通信必然提升网关的计算负载,一旦超出网关的计算能力,必然导致整车通信网络发生故障;其次,虽然合法的数据段数值在其保存的最大值和最小值之间,但是在最大值和最小值之间的数据值并不一定合法,所以此方法可能会漏检一些非法的攻击数据帧;最后,CAN总线在实际通信时由于某些原因(例如物理干扰)而产生一些错误的数据帧,标准CAN协议会丢弃这些数据帧并不会对整个系统工作带来故障,但是此检测方法会将其误认为注入式攻击而发出警报。
发明内容
发明目的:为了克服现有技术中存在的不足,本发明提供一种面向车载CAN总线的报文注入式攻击的检测方法,以有效检测多种针对车载CAN总线的报文注入式攻击并发出警报,既能够减少无人驾驶车辆总线遭受注入式攻击所带来的安全隐患,保护乘客人身安全和车辆安全,又不会增加CAN总线的通信负载,保证无人驾驶CAN总线的安全性和实时性,具有较高的研究意义。
技术方案:为实现上述目的,本发明采用的技术方案如下。
一种面向车载CAN总线的报文注入式攻击的检测方法,将CAN总线正常通信的周期性和稳定性特征应用于实时检测CAN总线是否遭受到报文注入式攻击的检测过程中。本发明在具体实施时,需要首先监听车载CAN总线正常通信,并保存其通信特征,在检测时通过对比正常通信特征和实时通信特征来实现检测注入式攻击的目的。
该方法包括训练阶段和实时检测两个部分,每个部分的具体步骤如下:
训练阶段:
步骤11:监听CAN总线正常通信一定时长,记录该时长内接收到的总消息数量,由此计算正常通信周期T;
步骤12:监听CAN总线正常通信一定时长,确定周期性阈值CM T ;
步骤13:监听CAN总线正常通信一定时长,确定稳定性阈值CC S ;
实时检测:
步骤21:初始化数据:开始监听时刻为t=0,接收到的消息数量为CM=0,消息数据段数值变化趋势的变动次数为CC=0,记录第CM=0个消息数据段数值(即t=0时刻的上一次消息数据段数值)为D 0=0,记录该消息数据段数值相比其(该消息数据段数值)上一次消息数据段数值的变化趋势为C p =0(变大/变小/不变分别对应1/-1/0);进入步骤22;
步骤22接收消息:CM=CM+1,第CM个消息数据段数值为D CM :若D CM >D CM-1,则C=1;若D CM =D CM-1,则C=0;若D CM < D CM-1,则C=-1;进入步骤23;
步骤23:若C≠C p ,则C p =C,CC= CC +1,进入步骤24;否则,直接进入步骤24;
步骤24:若CM>CM T ,或CC>CC S ,则认为CAN总线遭受到注入式攻击;否则,进入步骤25;
步骤25:若t>10T,则返回步骤21;否则,返回步骤22。
优选的,所述周期性阈值CM T 通过以下过程设定:对CAN总线正常通信进行监听,统计连续10个未遭受攻击的正常通信周期内实际接收到的总消息数量;持续监听并重复该统计过程100次,将实际接收到的总消息数量最大值作为周期性阈值CM T 。
优选的,所述稳定性阈值CC S 通过以下过程设定:对CAN总线正常通信进行监听,统计连续10个未遭受攻击的正常通信周期内消息数据段数值变化趋势的总变动次数;持续监听并重复该统计过程100次,将消息数据段数值变化趋势的总变动次数最大值作为稳定性阈值CC S 。
优选的,将CAN总线通信的周期性特征抽象为10个正常通信周期内实际接收到的总消息数量,将之称为周期性阈值CM T 。
优选的,将CAN总线通信的周期性特征抽象为10个正常通信周期内消息数据段数值变化趋势的总变动次数,将之称为稳定性阈值CC S 。
优选的,在车载系统的每个节点设置接收滤波寄存器和接收屏蔽寄存器,使每个ECU只处理特定标识符对应的数据;在每个ECU(电子控制单元,也称车载电脑)中加入检测算法检测该ECU接收的标识符是否被伪造用来攻击,若检测到接收的标识符被伪造用来攻击,则发出报警。
有益效果:本发明提供的面向车载CAN总线的报文注入式攻击的检测方法,相对于现有技术,具有如下优势:1、精确性:本发明可以有效检测针对CAN总线的注入式攻击,避免驾驶中遭到攻击造成乘客人身安全威胁和财产损失;2、经济性:本发明基于现有车辆硬件结构,完全利用软件实现CAN总线注入式攻击检测,不需要增加车辆制造成本;3、实时性:本发明在实现检测CAN总线注入式攻击的同时不会增加CAN总线数据量,可以保证原本系统的实时性;4、适用性:现有车辆一般都有固件升级功能,本发明只需要改写ECU软件来实现CAN总线注入式攻击检测功能,因此适用于现有车辆系统。
附图说明
图 1为车载CAN总线通信周期特征及注入式攻击周期性特征变化;1(a)为正常通信特征,1(b)为注入式攻击的通信特征。
图 2为车载CAN总线通信稳定性特征;2(a)为车灯/时间稳定性特征,2(b)为车速/时间稳定性特征。
图 3为车载CAN总线遭受攻击时稳定性特征变化;3(a)为车灯/时间稳定性变化特征;3(b)为车速/时间稳定性变化特征。
图 4为设定周期性阈值流程。
图 5为设定稳定性阈值流程。
图 6为检测方法流程图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
车载CAN总线某一标识符正常通信包括如下特征。
周期性特征:为保证系统的实时性与鲁棒性,连接在CAN总线上的ECU周期性的发送数据帧到CAN总线上。如图1所示,标识符为0x1的数据帧每隔10ms出现在总线上,标识符为0x2的数据帧每隔20ms出现在总线上。
稳定性特征:在一段时间内,具有同一标识符的数据帧数据段的变化趋势在变大/变小/不变之间的变动次数不多。如图2(a)所示,代表车灯的消息在一段较短的时间内,状态会比较稳定而不是在两个状态之间快速切换;代表车速的数值变化趋势一般比较稳定,如图2(b)所示,车速在一段时间内保持稳定上升。
当某一标识符被攻击者伪造以发动注入式攻击时,上述周期性特征和稳定性特会遭到破坏,具体表现如下。
受到攻击时的周期性特征变化:当攻击者利用恶意ECU伪造某一标识符I实施攻击时,攻击者必须周期性的发送攻击消息,否则攻击消息将很快被标识符为I的正常ECU发送的消息覆盖而起不到攻击效果。例如:在车灯关闭时,攻击者只发送一条消息强制打开车灯,结果是至多一个周期T(标识符为I的ECU发送周期)之后,标识符为I的正常ECU发送关灯消息将车灯关闭,这个周期一般很短,几乎看不到攻击效果。
因此攻击者必须周期性发送攻击消息以达到攻击目的,这样如图3(a)所示,黑点表示标识符I正常ECU发出的保持车灯关闭的消息。因此标识符I周期性发送两点变化:1、一段时间t内收到的消息数量远大于t与周期T的商t/T;2、如图3(a)所示,消息M 1与消息M 2的时间间隔t 1不一定等于消息M 2与消息M 3的时间间隔t 2,因此导致收到攻击时的时间间隔方差变大。
受到攻击时的稳定性特征变化:当攻击者伪造某一标识符强制让某一模块做出与用户相悖的动作时,CAN总线上该标识符的数据段会快速变化。如图3(a),车灯受到攻击时,其状态在打开/关闭之间快速变化,CAN总线上接收到的车灯消息数据段变化趋势如图所示。在图3(b)中,用户发出的消息本意使车速稳定在70KM/h,而攻击者发送提速消息,导致CAN总线上的车速消息数据段变化趋势如图。
为检测某标识符是否被伪造以实施注入式攻击,本发明将CAN总线周期性特征和稳定性特征抽象成方便程序判断的数值。
周期性判定方法:将周期性特征抽象为10个周期T时间段内接收到的消息数量,预先设定周期性阈值,一旦10个周期T时间段内接收到的消息数量大于阈值则判定遭受攻击。
稳定性判定方法:将稳定性特征抽象为10个周期T时间段内接收到的消息数据段在变大/变小/不变之间的变动次数,预先设定稳定性阈值,一旦10个周期T时间段内接收到的消息数据段在变大/变小/不变之间的变动次数大于阈值则判定遭受攻击。
确定了检测策略之后,需要确定检测代码的执行位置,由于汽车CAN总线上需要检测的标识符很多,以知豆电动汽车为例,在某型号电动汽车CAN总线上检测到120个标识符的消息。如果将这些标识符的检测任务放到一个ECU执行,可能受限于ECU计算能力无法完成检测任务。
在设计系统时,为了减少每个ECU的计算负荷,在设计系统时每个节点设置接收滤波寄存器和接收屏蔽寄存器使每个ECU只处理特定标识符对应的数据。本发明提出,为在每个ECU程序中加入检测算法检测该ECU接收的标识符是否被伪造用来攻击,检测到攻击则发出警报。这样可以将检测任务分摊到多个ECU中,尽可能减小检测任务给汽车控制系统带来的额外负载。
基于上述分析,本发明方法具体实施过程包括如下步骤。
训练阶段:监听CAN总线正常通信(未遭受到注入式攻击)一段时间,设定周期性阈值和稳定性阈值。
步骤11:监听CAN总线正常通信5分钟,循环接收消息,记录5分钟内接收到的总消息数量,由此计算周期T。
步骤12:监听CAN总线正常通信,监听时间长度为10T,循环接收消息,记录接收到的总消息数量。
步骤13:将步骤12重复100次,选出这100次中接收到消息最多的一次接收到的消息数量,将其设定为周期性阈值CM T 。
步骤14:监听CAN总线正常通信,监听时间长度为10T,循环接收消息,记录接收到的消息数据段在变大/变小/不变之间的总变动次数,例如消息数据段变化情况由变大转为变小,则变动次数加1。
步骤15:将步骤14重复100次,选出这100次中消息数据段在变大/变小/不变之间的总变动次数最多的一次的消息数据段变化次数,将其设定为稳定性阈值CC S 。
由以上步骤完成周期性阈值CM T 和稳定性阈值CC S 的设定。训练完成后,得到的周期性阈值CM T 和稳定性阈值CC S 可以用于车辆CAN总线通信时的注入式攻击实时检测。
实时检测:在对车辆CAN总线通信进行注入式攻击检测时,一旦10个周期时间内接收到的消息数量大于周期性阈值则发出警报;一旦10个周期时间内接收到的消息数据段在变大/变小/不变之间的变动次数大于稳定性阈值则发出警报。
步骤21:开始监听时刻为t=0,接收到的消息数量为CM=0,消息数据段数值变化趋势的变动次数为CC=0,记录第CM=0个消息数据段数值(即t=0时刻的上一次消息数据段数值)为D 0=0,记录该消息数据段数值相比其上一次消息数据段数值的变化趋势为C p =0(变大/变小/不变分别对应1/-1/0);进入步骤22。
步骤22:接收消息:CM=CM+1,第CM个消息数据段数值为D CM :若D CM >D CM-1,则C=1;若D CM =D CM-1,则C=0;若D CM < D CM-1,则C=-1;进入步骤23。
步骤23:若C≠C p ,则C p =C,CC= CC +1,进入步骤24;否则,直接进入步骤24。
步骤24:若CM>CM T ,或CC>CC S ,则认为CAN总线遭受到注入式攻击;否则,进入步骤25。
步骤25:若t>10T,则返回步骤(21);否则,返回步骤(22)。
上述步骤21到步骤24完成10个周期之内的注入式攻击检测,循环这三个步骤可以实现对CAN总线是否遭受注入式攻击的持续检测。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。