近年来,电子设备广泛应用于汽车领域,据统计一辆低端汽车上安装了大约70个电子控制单元(Electronic Control Unit, ECU),而一辆豪华汽车上通常将使用上百个ECU和传感器,预计未来这个数字还将持续增加。因此,汽车不再是由发动机、变速器等部件组成的简单机械设备。
ECU通常有两种连接方式,分别为点对点和总线连接,其中总线连接方式能够避免因使用大量线束而增加车重,并克服维修困难的不足,已成为主流的连接方式[1]。目前应用在汽车上的总线主要有控制器局域网(Controller Area Network, CAN)、局域互联网(Local Interconnect Network, LIN)、FlexRay、媒体导向系统传输(Media Oriented System Transport, MOST)、低压差信号传输(Low Voltage Differential Signaling, LVDS)等。
与其他总线相比,CAN总线在成本、开发周期、抗干扰性等方面具有优势,因而目前应用最为广泛[2]。因CAN总线最初为工业控制领域所设计,故只规定了模块间的通信内容和格式,未考虑信息安全问题,此外,CAN总线上的数据以明文形式传输,缺乏身份验证机制,任何接入CAN总线的设备都能随意发送数据,极易被监听和攻击[3]。随着汽车智能化程度的不断提高,在提升驾驶体验的同时面临的安全风险也在显著增加,尤其是智能汽车实现车与网的深度融合,为黑客攻击提供了更多的路径,近年来部分汽车网络攻击事件如表1所示。
表1 汽车的网络攻击事件
时间 | 事件 |
2010年~2013年 | 伪造胎压传感器信号,干扰轮胎压力监测系统,通过OBD远程破解Prius |
2014年 | Benz汽车的门锁被远程破解 |
2015年 | 远程攻击Jeep切诺基并强制关闭引擎 |
2016年 | 远程无接触式破解Tesla |
2016年 | 破解Tesla车载中控,实现长距离远程控制 |
2017年 | 通过破解实现对Tesla的远程任意操作 |
2018年 | 通过远程攻击破解了BMW的控制权 |
2019年 | 通过漏洞获取汽车驾驶权,从而操纵车辆 |
2020年 | 通过密钥克隆中继攻击,Tesla被远程开走 |
2022年 | 破解Tesla的双重认证,实现远程操纵 |
注:车载诊断系统(On Board Diagnostic,)。
网络攻击使得汽车企业不得不进行数百万辆汽车产品的召回,对消费者人身及财产安全也造成巨大的潜在威胁,因此,预防和消除汽车网络的非法入侵迫在眉睫。国外大规模的汽车网络安全研究始于2006年,国内相关的研究始于2014年,STEPHANIE[4]提出了一类车辆控制系统漏洞评价方法,并给出了评价标准;NISHIMURA[5]提出了一种基于CAN总线的模糊测试方法,并对信息传输的三种情况进行了测试,在此基础上演绎出一种基于智能互联汽车的模型,并给出了一些解决安全隐患的方法。CRAIG[6]提出了一种针对CAN总线攻击和防御的检测技术;章意等[7]提出一种基于板端加密通讯(Security Onboard Comm- unication,)的车载网络安全模型,实现ECU及网络消息的加密和认证,测试表明其可使网络更加安全和高效;罗峰等[8]建立了基于可变速率控制器局域网(Controller Area Network with Flexible Data-rate, CAN-FD)的信息安全方法,通过完善协议提升了总线的安全性和可用性;王栋等[9]提出了一种基于变量公钥密码的消息加密传输及认证协议,能够在网络繁忙时提升处理效率。此外,还有一些关于车辆网络安全的研究成果[10-11],其对解决车载网络安全至关重要。
上述研究成果对于抵御车载网络的非法入侵具有重要意义,但考虑到相关控制器的计算能力和存储资源限制,以及车辆对实时性和安全性有更高得要求,相关研究还应该更加深入。
1 CAN总线的发展历史和脆弱性分析
1.1 CAN总线的历史及现状
在20世纪80年代初期,德国Bosch的工程师评估已有的串行总线系统,以探讨其在汽车中的可能用途。由于没有可用的网络协议能够满足汽车工程师的要求,工程师Uwe Kiencke于1983年开始开发新的串行总线系统。1986年2月,在底特律的汽车工程师学会(Society of Automotive Engineers, SAE)的大会上,将新CAN总线系统称为汽车串行控制器局域网(Automotive Serial Controller Area Netork, ASCAN)。在1987年,英特尔交付了第一款CAN控制器芯片82526,标志着CAN协议首次通过硬件得以实现。此后,11位标识符的CAN2.0A和29位标识符的CAN2.0B相继推出。为了进一步提高总线比特率,Bosch在2012年发布了CAN-FD1.0,该规范使用不同的帧格式,允许不同的数据长度以及在仲裁决定后可选地切换至更快得比特率。CAN-FD与现有的CAN2.0网络兼容,故CAN-FD设备可以与现有的CAN 设备共存于同一网络中。2018年第三代基于CAN 的数据链路层协议(Controller Area Network eXtra Long, CANXL)正在开发中,其目的是将CAN的带宽速率提升至10 Mbit/s。
1.2 CAN总线的入侵类型
车载ECU通过直接或间接的方式接入CAN总线,当某一个ECU接口被黑客控制后,则可向车内总线读写数据包并对别的ECU展开持续攻击。常见的攻击方法如下:
1)重放:黑客获取的信息会被不断回放攻击总线,同时控制器可能会授予更高级的权限,导致更大的安全风险。
2)丢弃:如果黑客入侵总线,应用层与底层设备之间的通信,将无法实现接收或发送数据的功能。
3)监控:这是最常见的攻击模式,黑客入侵CAN总线后大量的信息被捕获和分析,如果用户密码和位置等有价值的消息被泄露,总线可能会遭受更严重的攻击。
4)篡改:当黑客入侵总线时,可以在发送之前修改消息,从而干扰控制器。
5)注入:当黑客获得发送消息的权限时,可以将大量伪造的消息注入CAN总线中,其危险度的大小由对公共汽车的许可和了解程度决定。
6)拒绝服务:如果具有最高优先级的消息在总线中传输,那么其他没有优先级的数据包就不能被传输。高优先级消息一直发送将干扰总线工作,甚至会造成总线的崩溃。
1.3 CAN总线的脆弱性分析
CAN总线设计初衷是应用于闭环的工业控制领域,而OBD-II、光盘(Compact Disc, CD)、通用串行总线(Universal Serial Bus, USB)等接口使得CAN总线成为一个开放的网络,因而存在脆弱性,其主要表现在以下几个方面:
1.无加密信道
CAN没有固有的加密方法,故以明文的形式传播。黑客可以非常容易地对CAN总线进行伪造、重放等攻击。由于CAN控制器的计算能力有限,复杂的加密算法会造成总线实时性变差甚至会产生网络堵塞,故加密算法的应用还将面临挑战。
2.缺乏消息认证
CAN协议中没有源头的标识符等相关信息,其任何节点都可以发送报文,且接收方无法识别是否为真实节点所发。此外,CAN总线的报文没有消息验证码和数字签名,攻击者会非常容易地伪造节点发起攻击。
3.基于ID优先级传输
CAN总线传输多个报文时,仅通过ID仲裁是否优先传输,标识符越小,则优先级别越高。网络入侵时,仅通过修改标识符实现拒绝服务(Denial Of Service, DOS)攻击,导致低优先级的消息无法传输。
4.广播通信
报文将以广播的形式发送到总线上,由于报文内容不包括源地址和目的地址,故任意节点都可以接收。广播通信方便了黑客伪造节点发送非法信息,因此,带来了较大的风险。
5.多个外接端口
CAN总线中的OBD-II、USB、无线网络(WIreless FIdelity, WIFI)及CD等接口已经成为标配,用以诊断车辆状态和刷新车辆的相关程序,但是接口也方便黑客监听CAN通信信息,伪造报文并发送到总线。
尽管网络攻击的方式不尽相同,但是大致的汽车网络攻击流程如图1所示[12]。

图1 汽车网络攻击流程
2 CAN总线威胁的检测及消除
鉴于CAN总线的入侵会导致严重的后果,因而有效预防就非常重要,综合现有的研究成果,CAN总线威胁的消除主要有网络异常检测、消息认证和数据加密等策略。
2.1 网络异常检测
网络异常检测假定入侵者的活动与正常情况下主体的活动存在一定程度的差异,且在正常工作模式下主体工作情况相对稳定。基于该种稳定状况去学习掌握被保护主体正常的工作模式,从而实现当存在入侵者进行活动时可以检测出系统存在异常的功能[13]。基于此假设,为实现异常检测首先需要建立起主体在正常工作模式下的行为系统,并经过长时间的统计、学习,进而训练出一个或多个用于评价系统的指标,以用于判断系统处于正常工作的状态还是存在入侵的情况。
2.1.1基于统计的异常检测方案
一般选取一个车载网络的流量特征,如:总线信息熵、消息时间间隔、消息的出现顺序等,再通过观察、训练正常网络流量模型,最终确定模型的参数。建成模型之后,使用检测模型对网络流量进行实时监控,通过模型提取出其流量特征并判断,如果当前网络流量特征超出阈值,模型就会给出异常警报。该方案的优点是不需要对攻击行为有先验知识,但其只能处理一些比较简单的异常行为,如:泛洪攻击、重放攻击以及丢弃攻击等。同时,其对高维数据检测效果和正常时序进行的攻击行为检测效果欠佳。
2.1.2基于机器学习的异常检测方案
该方法通过机器学习对历史信息建立一个映射关系,利用循环神经网络(Recurrent Neural Network, RNN)、长短期记忆(Long Short-Term Memory, LSTM)等预测模型得到下一个状态的信息,如果预测状态和真实状态存在较大差异则断定发生了异常。该方法可以对大部分异常行为进行检测,尤其当数据特征不易提取时,计算机运用该模型可以自己寻找分类特征。该方案适用于对CAN数据域的篡改类攻击,其缺点是模型训练比较耗时。
2.1.3引入新硬件的异常检测方案
此类方案一般给车内网络引入新的设备,由新硬件执行车载网络的异常检测,如引入一组异常检测传感器来检测总线异常帧,包括位置检测传感器、频率检测传感器及格式检测传感器等,最后综合传感器的检测结果判断是否有异常发生。
2.2 消息的认证与加密
消息认证是指通过对消息或者消息有关的信息进行加密或签名变换进行的认证,其目的是防止传输和存储的消息被有意无意地篡改,包括消息内容的完整性认证、消息源和消息宿认证、消息序号和操作时间认证等。中央网关连接着整个车载网络,实现不同网络之间的协议转换,因此,其能够实现对整个车载网络的监控。为实现对车载ECU的身份认证,在汽车开机自检时,中央网关必须通过与ECU进行会话,从而实现对ECU的身份认证。消息认证主要是防止消息被篡改,从而确保消息的完整性和准确性。
消息加密就是通过密码算术对数据进行转化,使之成为没有正确密钥,且任何人都无法读懂的密文。在汽车的生命周期当中,若车载ECU的通信密钥固定不变,网络攻击者可以通过分析大量的加密数据,从而破译出车载ECU的通信密钥。而采用非固定式加密算法为车载ECU的通信传输对称加密所需的通信密钥,能有效抵抗暴力破解和分析。
实际上,应用单一的策略防范网络入侵较为困难,而通过多种策略构建自适应的安全机制将更为有效。尽管多策略的防范功能更强大,但同时会引发安全防护策略的高资源消耗与汽车组件高实时响应需求之间的矛盾,以及加密算法的高安全加密强度和低算法运行时间之间的矛盾。因此,已有算法还需要进一步地减少资源消耗并提高算法的智能性。
3 基于信息熵的防护仿真分析
考虑到CAN数据帧中ID消息标识符和数据域信息是网络攻击的焦点,将基于ID标识符和数据域作为检测特征。汽车消息可分为时间触发类和事件触发类,针对这两种类型的消息特点,分别选取检测策略以保证CAN网络信息安全。对于时间触发类消息而言,发送周期固定其通信熵值也固定,工况的改变会导致该周期产生微小变化。重放、拒绝服务、丢弃等攻击将明显改变时间触发类消息的周期及发送顺序,导致其通信熵值出现较大波动。而事件触发类消息的数据域携带重要的控制信息或状态信息,只有当汽车出现某种状况才会触发该类消息。基于支持向量机-数据关联性(Support Vector Machine-Data Relation, SVM- DR)等策略可以有效检测入侵的该类报文[13-14]。本文重点对周期性报文的攻击展开研究,其结论对于后一类报文具有参考意义。
3.1 信息熵的相关理论
信息学领域中,熵是用来衡量一个系统的不确定性,一个系统越是有序,其不确定性越小,信息熵就越低;反之信息熵就越高。因此,信息熵是对状态不可预测性的一种度量,也是信息的期望值。随机变量的信息熵可定义为

式中,(X)为信息出现X的概率;取2或其他值,当=2时信息熵的单位为bit。此外,相对熵能够有针对性地计算CAN网络通信变量在某些状态下发生的情况,其计算公式为

基于熵的检测方案分为模型训练和异常检测两个过程,模型训练阶段是对CAN网络正常发送数据情况进行分析,标定出信息熵和相对熵的合理阈值;异常检测阶段是通过制造异常报文并导入模型中进行计算得出检测结果,然后通过分析检测结果找出异常的发生原因,结合数据验证判断其正确性。
3.2 模型搭建和仿真分析
本次仿真的环境为Windows11操作系统和CANoe8.2demo。通过CANoe软件搭建ECU模块进行报文发送并制造异常报文数据流,然后应用Python3.9.0软件编写算法进行阈值标定和异常检测,分析此方案重放、丢弃等攻击的入侵检测能力。在CANoe中的Simulation Setup界面完成CAN总线建模,如图2所示。

图2 CAN总线建模

在建立ID熵入侵检测模型的过程中,必须确定检测窗口大小和ID熵阈值。为避免CAN总线传输速率和非周期报文对于滑动窗口内熵值的计算的影响,本文采用固定报文数量的滑动窗口。当滑动窗口内的报文数量到达预先设定值时,检测模型会计算滑动窗口内的相对熵值并判断是否有异常发生,同时,滑动窗口向后滑动并开启下一轮的检测。此外,检测窗口大小要适中,太大则实时性欠佳,太小则波动比较大,阈值难以确定。先后设置窗口大小为200、400、600及800个报文,比较网络ID熵值的波动情况,最终确定窗口的报文数为600个,信息熵阈值和相对熵阈值(ID=0x101与0x105),具体如表2、图3所示。
表2 不同窗口宽度及相关阈值比较
报文数/个信息熵阈值相对熵阈值 2002.279 8~2.284 80.205 9~0.232 3 4002.279 9~2.282 40.212 9~0.226 1 6002.279 9~2.281 60.219 3~0.228 2 8002.279 9~2.281 20.219 5~0.226 1

图3 窗口大小为600时的熵值波动
在报文发送一段时间后,重放一段ID为0x 101的报文。由于报文ID越小其优先级越高,当重放ID=0x101报文时,其余四种报文则被0x101报文覆盖,会出现一段只有0x101的报文流。再模拟ID=0x104的报文重放情况,运行一段时间后重放ID=0x104的报文,由于其优先级仅高于0x105而低于其他三种报文,因此,会出现一段0x105报文被0x104报文覆盖的报文流。利用熵的计算公式可得不同窗口序列的仿真值,具体如图4所示。从图4中不难看出发生异常的是第11次和第27次报文,再对结果进行整理,如表3所示。

图4 重放攻击时的信息熵和相对熵
表3 重放攻击的检测结果
窗口序列攻击方式信息熵相对熵 11重放0x101大幅下降大幅上升 27重放0x104轻微下降轻微上升
在导出的csv文件中的异常报文片段中统计各种报文出现的次数,如图5所示。从图5(a)中不难发现11窗口中报文ID=0x101的报文数量远高于0x102、0x103、0x104的报文数量,而它们理论上的出现频率应该相近;由图5(b)可知,27窗口中报文0x104的数量略高于理论上相同频率的0x101、0x102、0x103,且报文0x105的数量为322个,其未到达其余报文数量的1/2。因此,可断定窗口序列10~15的异常是由于报文0x101的重放;窗口序列25~30的异常则是由报文0x104的重放导致,因为0x104仅优先于0x105,所以导致了0x105的数量减少和0x104数量增加。

图5 重放的统计分析
丢弃攻击的模拟是在某段时间内,删除掉某类ID报文,造成总线数据流中无该类报文的记录。此类攻击首先会导致丢弃报文携带的信息无法传达,其次也会影响总线信息熵值。在仿真中先模拟丢弃标识符为0x101的报文,运行一段时间后再丢弃0x105报文,其对熵值的影响如图6和表4所示。
图6 丢弃攻击时的信息熵和相对熵
表4 丢弃攻击的检测结果
窗口序列攻击方式信息熵相对熵 16丢弃0x101增大降低 27丢弃0x105降低增大
导出的csv文件在异常报文片段中统计各种报文出现的次数如图7所示,其中图7(a)显示该段窗口下,报文0x101的数量下降,明显少于理论上与其频率相同的报文0x102、0x103和0x104,并且比报文0x105的两倍数量少,即报文0x101被丢弃。图7(b)中显示报文0x105的数量下降,且少于报文0x101数量的一半,即报文0x105被丢弃。
通过上述研究理论分析与实际计算结果对比可知,无论是两次重放攻击还是两次丢弃攻击均被检测到。因此,基于ID熵值入侵检测模型可以对重放、丢弃等网络攻击进行检测,同时可以对异常ID进行定位。

图7 丢弃的统计分析
4 结论
CAN总线作为汽车智能化和网联化的重要部件,由于其固有的脆弱性使汽车网络面临黑客入侵的严峻风险,增加检测及加密算法的复杂性会引发防护策略的高资源消耗和汽车高实时响应的矛盾,进而可能造成成本攀升。基于ID熵和数据域方法可以对重放和丢弃的攻击进行有效防御,但随着黑客攻击手段的日益增强,在未来应在CAN-FD等架构下结合机器学习等人工智能方法,应重点解决算法的智能性,从而更加有效地应对各种网络威胁。
评论·0