刘毅, 秦贵和, 赵睿
(1.吉林大学计算机科学与技术学院, 130012, 长春; 2.吉林大学符号计算与知识工程教育部重点实验室, 130012, 长春; 3.吉林大学软件学院, 130012, 长春)
随着智能网联汽车的发展,自主驾驶、车队管理、智能交通管理等技术应运而生[1],这些技术的应用提升了驾驶的舒适性与便捷性,但同时越来越多开放的接口也使得汽车的风险指数逐渐增加。攻击者可以通过WiFi、蓝牙、OBD-II等接口对汽车发动长距离或短距离、有线或无线的攻击,严重威胁驾驶者的人身和财产安全,因此网联汽车信息安全问题亟待解决。车载网关承担着车内总线网络和车外网络的信息交互,仅仅在车载网关上增加防火墙的方式并不能提供足够的安全防护,网联汽车的信息安全问题更需要保护车内总线网络的信息安全[2]。
车载控制器局域网络(CAN)总线因其灵活性、实时性、可靠性已成为车内总线网络的标准[3],并且CAN总线在未来一段时间内也将是车载总线技术的基础。CAN总线虽然有着得天独厚的优势,CAN总线协议却没有考虑到信息安全问题。CAN协议不能对连接到总线上的节点提供身份认证,不能对总线上传输的数据提供加密保护,也不能支持保障数据正确性与完整性的校验机制,由此造成的严重后果是攻击者可以轻易地窃听、伪造、篡改数据,发动重放攻击。考虑到网联汽车的出现及CAN总线安全漏洞,CAN总线的信息安全问题成为现实中亟需解决的问题。
近年来,欧盟等相关机构积极资助并开展汽车信息安全项目,例如车辆电子安全入侵检测应用项目(EVITA)、开放式车辆安全平台项目(OVERSEE)等。EVITA项目[4]定义了安全需求并且提供了应用于车载网络的方法,其中中量级硬件安全模块保障了电子控制单元之间通信环境的安全;OVERSEE项目提供了标准的软件架构和车辆运行的内部环境,保障了信息的安全性和可靠性[5-6],但是这些项目并没有给出具体的安全措施,也没有有效的安全协议。
对于车载网络安全协议的研究中,文献[7-9]的安全协议考虑了CAN总线的广播特性,并利用数据域长度受限的特点设计协议以降低总线负载。由于上述协议没有考虑到车辆启动阶段的初始化身份认证,也不能提供车辆通信阶段的防重放保护,因此不能很好地为车载CAN总线提供安全保障。
在CAN总线协议特点和安全需求的基础上,设计了一种车载控制器局域网络的安全协议(SPOCAN),深入研究并分析CAN总线协议的特点、网联汽车攻击接口及CAN总线安全需求;考虑到受限车载资源和CAN协议的特点,设计了CAN总线的安全协议SPOCAN,SPOCAN包含SNIA和CNEP 2个模块,SNIA模块提供待通信节点身份的真实性保证,在车辆点火启动阶段保障节点的身份安全,CNEP模块保障了数据机密性、消息正确性、数据完整性和数据新鲜性,在车辆运行通信时保障节点间通信安全;为了验证所提安全协议的有效性,基于飞思卡尔MPC5646C网关和MC9S12XDT 512开发板搭建了CAN网络车载控制系统的硬件平台,在汽车点火启动阶段和车辆运行通信阶段分别进行了测试,验证了SPOCAN协议能够有效地提供安全保障。
在车载总线网络中,CAN总线是目前使用最广泛的总线技术,因为它使用双绞线传输信号,显著地降低了通信线缆的数量,并且提供了更高的通信可靠性。CAN总线协议根据ID域的不同,分为CAN 2.0A标准格式和CAN 2.0B扩展格式2部分[10],由于CAN 2.0B支持CAN 2.0A,所以对CAN 2.0B解释说明。CAN 2.0B数据帧中的ID域用于设置消息的优先级,其29位ID域分为标准ID和扩展ID 2个部分,IDE域决定是否使用18位扩展ID,数据域包含0~8个字节数据,循环冗余校验(CRC)域提供传输过程中的错误检测,这也是CAN协议中唯一与安全相关的校验机制,但这种简单的校验机制无法满足网联汽车的安全需求。
网联技术的发展使汽车开放的接口越来越多,这些接口可能成为攻击者对汽车发动攻击的入口[11]。图1给出了整个汽车电子系统可能的攻击接口,根据攻击者的连接方式,这些接口可以分为以下3类:①物理访问接口。攻击者通过直连的方式或者使用第三方工具访问汽车内部网络,例如车载诊断系统的外部接口OBD-II、用于娱乐系统的USB接口和开放的充电桩接口等;②短距离无线访问接口。在物理连接难以实现的情况下,攻击者通过非物理接触、近距离的方式访问接口,这种短距离访问一般通过在距离汽车5~300 m的范围内放置发射器与接收器的方式来实现[12],这类典型接口包括蓝牙、WiFi、无钥匙进入系统、车载雷达等;③长距离无线访问接口。攻击者通过无线电、卫星导航GPS/北斗等通信距离超过1 km的接口实现长距离访问攻击[13]。
图1 网联汽车的攻击接口
结合CAN总线特点设计控制器局域网络安全协议需要满足以下5点安全需求:①身份真实性。CAN总线系统中通信双方在建立通信前,需要确认双方的有效身份,防止攻击者利用虚假身份进行通信;②数据机密性。CAN总线网络由于其广播发送、明文传输的特性,极易泄露数据,尤其当信息是与驾驶员的生命安全息息相关时,数据加密与语义安全的保障显得尤为必要;③消息正确性。CAN总线上节点间相互通信时,接收方需要确认该消息来自于正确的发送方而不是攻击节点发送的伪造信息;④数据完整性。CAN总线上消息的接收方需要确保消息在传输过程中没有被攻击者更改,一般地,数据完整性通过消息认证[14]来保证;⑤数据新鲜性。在CAN总线上传输的数据需要保证是最近发送的,而不是一个已经在总线上发送过的数据,对数据新鲜性的保证能够防止重放攻击。
为了在车载控制器局域网络中满足上述安全需求,在CAN总线协议的基础上,增加了汽车点火启动阶段的安全模块SNIA和通信阶段的安全模块CNEP,实现了车载控制器局域网络安全协议SPOCAN。SNIA模块采用基于公钥体系认证方法的身份认证技术,保障了待通信节点的身份真实性,在汽车点火启动阶段保障了节点之间的通信安全;CNEP模块采用了加密通信、消息检验及序列号技术,保障了CAN总线上节点间信息传递时的数据机密性、消息正确性、数据完整性和数据新鲜性。SPOCAN基于这2种安全模块,能够在汽车启动阶段和通信阶段阻止基于消息窃听、信息伪造、消息篡改、数据重放等攻击手段,有效地保障车载CAN总线网络上节点间的通信安全。
SNIA模块提供了CAN总线网络中节点的身份认证方法。考虑到CAN总线广播发送的特性,若采用私钥体系的认证方法,其中任何一个接收节点都可以模仿发送节点伪造消息给其他接收节点,因此CAN总线需要非对称的认证机制来完成广播认证。SNIA模块采用基于公钥体系认证方法,在车辆点火启动的过程中进行初始化身份认证[15],身份认证只进行一次并在认证结束后更新密钥,以备在下次初始化过程中使用。
身份认证过程是连接到总线上的各个电子控制单元(ECU)向网关G请求身份认证,认证通过后得到由网关分发的保障数据机密性的加密密钥Ke和消息校验阶段的认证密钥Ka。在所提方案中使用RSA-64位非对称加密算法[16],E为加密函数,D为解密函数,身份认证过程具体分为以下5个步骤。
步骤1第i个ECU通过查询证书Ci将其标志Ii用网关公钥Gu加密得到密文C1发送到CAN总线上。证书中包含节点标志、节点的密钥和节点的其他信息,不同节点的公钥通过查询获得,私钥是每个节点独有的,除节点自身外其他节点无法获取。为保证安全性,证书由车场刷写ECU固件时写入
C1=E(Gu,Ii)
(1)
步骤2网关G用私钥Gr解密收到的消息得到P1,读取其标志Ii,G在证书Cg中查找此Ii对应的节点公钥Eu,并产生一个挑战值Nk,用此公钥Eu将挑战值Nk加密发送到CAN总线上,得到C2
P1=D(Gr,C1)
(2)
C2=E(Eu,Nk)
(3)
P2=D(Er,C2)
(4)
(5)
步骤4网关G利用私钥Gr解密C3后得到P3,读取数据。若数据中的挑战值等于步骤2中网关G产生的挑战值Nk,则网关把该ECU对应的Ii加入到其信任列表中,表明网关已信任该节点并可以与它进行通信
P3=D(Gr,C3)
(6)
步骤5网关G与第i个ECU认证成功后,则以非对称加密方法颁布用于通信的加密密钥Ke和用于消息校验的认证密钥Ka。若认证不成功,则不会给节点颁布密钥
C4=E(Eu,Ke)
(7)
C5=E(Eu,Ka)
(8)
上述认证过程中密钥Ke和Ka只能由网关生成,身份认证过程只在芯片上电后进行一次。为了保证认证后节点间的通信安全,节点间通信密钥由网关定期更新。
至此,初始化身份认证阶段结束,在系统内网关确认了待通信节点的身份并生成了通信阶段加解密密钥及消息校验密钥。
汽车点火启动阶段的初始化认证结束后,节点间通信的安全保障通过CNEP模块实现。在所提方案中使用DES-64位对称加密算法和MD5-32位消息摘要算法[16]保证了数据机密性、消息正确性和数据完整性,并且通过序列号递增的方法提供了防重放保护。序列号是系统初始化时约定的,在每次使用后递增,并要足够大才能避免不同的消息产生相同的序列号。
发送方在发送数据前需要经过如下4个步骤。
步骤1发送方将待发送数据T与第j个序列号Cj进行或运算得到T′。考虑到车载通信的大部分数据帧数据域的长度在3~4个字节,所以Cj仅在第7个字节中存储
T′=T‖Cj
(9)
步骤2将通过SNIA协议认证得到的密钥Ke与接收端保持一致的随机数Sj异或后得到新密钥,再利用新密钥对T′加密得到C6,并对Sj更新
C6=E((Ke⨁Sj),T′)
(10)
步骤3利用密钥Ka发送方对C6计算消息认证码
Mj=E(Ka,C6)
(11)
步骤4C6存储在CAN协议数据帧的前7个字节中,Mj存储在最后1个字节中,将密文C6和Mj一同发送到CAN总线上
C7=C6‖Mj
(12)
接收方在收到消息后需要经过如下4个步骤。
(13)
步骤2消息校验通过后,利用Ke与随机数Sj异或,对C7的前7个字节解密得到P4并更新Sj
P4=D((Ke⨁Sj),C7)
(14)
(15)
CNEP模块通过随机数Sj随机化加密,提供了语义级别的安全保护,Sj每次加密后发生变化且不会重复,这种强安全协议阻止了攻击者从窃听到的加密消息推断出明文;由于使用了消息认证码进行校验,在不影响正常通信的前提下增强了系统的防伪造特性;采用序列号技术进行端到端的计算,提供弱新鲜性防护以及防重放攻击保护。
为了对所提安全协议进行有效性评估,本文基于飞思卡尔MPC5646C网关和MC9S12XDT512开发板搭建了CAN网络车载控制系统的硬件平台,其中1块MPC5646C作为网关G,4块MC9S12 XDT512作为与该网关相连的节点a、b、c、d,同时使用USB-CAN-II模拟一个攻击节点S对总线发动攻击。实验从点火启动阶段和通信阶段分别模拟攻击场景,在PC机上使用CodeWarrior环境编程并使用CANTest软件显示总线上传输的数据。
点火启动阶段的安全性是指在ECU上电后,需要确定CAN总线系统中所有待通信节点身份的真实性,在初始化阶段阻止基于身份欺骗的攻击,该阶段实验设置了3个攻击场景,验证了节点身份的真实性。
在初始化认证阶段,系统内各节点需要向网关节点G申请认证,假设一个攻击节点S在车辆启动前就已经连接到总线上,准备发动攻击。
场景1S并没有获得总线上传输的信息,只是伪造了认证请求消息并发送给G,希望得到网关的认证。由于S作为相对于内部车载控制系统的外部节点,没有车场统一刷写的证书,因此无法通过查询获得G的公钥Gu,不能将伪造的认证请求加密发送到CAN总线上。网关收到消息后无法正确解密进而无法识别出这个请求认证消息,所以请求身份认证无效。
场景2S通过窃听总线上的消息,获得了节点b请求身份认证的报文,并在此基础上将部分信息篡改后发送到CAN总线上。如表1的第6号所示,虽然S在正确请求认证报文的基础上篡改信息,但G仍会识别出这是一个无效的身份认证请求,如表1的第7号所示。S的篡改使得正确的请求认证消息发生了变化,该消息不再是由网关公钥加密后的正确信息;同时,消息的篡改也使得G无法正确分析出所请求认证的节点标志,进而也无法通过查询确定所请求节点的公钥,G识别出S是一个攻击节点。
场景3S通过窃听总线上的消息,获得了节点a请求身份认证的报文,此时S不做任何修改,将消息再次发送到CAN总线上,如表1的第14号所示。G为了验证该节点的身份,发出表1中第15号的验证帧,S收到该消息后,无论是通过伪造、篡改还是再次将窃听到的节点a的反馈帧发送给G,G在这3种情况下都不会通过S的身份认证。在前2种情况下,G无法正确识别出反馈帧,进而不能正确解密消息并确定所请求节点标志。在最后一种情况下,如表1的第16号所示,因为G发送的验证帧中利用节点a的公钥Eu加密发送了一个挑战值Nk,由于每次加密的挑战值是不同的,使得本次验证帧中的挑战值与S重放的节点a的反馈帧中的挑战值不一致,因此G能识别出基于身份欺骗的攻击。
通信阶段安全性是指在车辆启动后,各个ECU通过身份认证后开始通信,攻击者除了在车辆初始化阶段发动攻击外,还有可能在车辆通信时通过OBD-II等通信接口发动攻击。该阶段实验设置了4个攻击场景,分别验证了消息正确性、数据机密性、消息完整性、数据新鲜性。
场景1S没有通过窃听得到总线上的消息,只是通过消息伪造向节点d发送攻击数据,如表2的第2号所示。S企图接收到节点d响应的数据信息,此时节点d发出了警报帧,如表2中的第5号所示。这是因为S并没有参与节点启动过程的初始化身份认证,进而无法得到通信时的加解密密钥Ke和消息校验密钥Ka。S可以伪造消息却无法伪造这2个密钥,节点d接收到消息后,无法正确接收并进行消息校验与解密处理,因此识别出这是一个攻击节点发送的伪造消息。
场景2由于攻击节点是在汽车启动后以直接或间接的方式连接到车上,没有经过点火启动阶段的身份认证,从而并没有通信阶段的加密密钥,因此S企图监听总线上的一系列消息,并希望通过足够数量的加密密文推断出明文。虽然攻击者知道了部分数字0和数字1加密后对应的数字或字符,但是并不能判断出一个新加密的字符是用0加密的还是用1加密的。CNEP模块的发送方利用了一个随机数Sj和密钥Ke异或后加密数据,由于这个Sj每次加密后都是不同的,使得相同的消息在不同的会话通信时加密后的数据是不同的。攻击者即使知道了部分明文密文对,也无法推断出加密前的消息。
表1 车辆启动阶段的攻击测试
场景3S窃听总线上的消息,如表2的第8号所示,并在窃听到的消息的基础上篡改消息中的部分控制位数据然后发送给节点b,如表2的第11号所示,企图控制节点b执行相关操作。CNEP模块采用的消息检验技术可以保护消息传递过程中的数据完整性,由于数据段发生了更改,节点b收到消息后对数据段进行消息校验时,会检测到不一致的消息检验码,检测出此消息在发送的过程中发生了变化,则会拒绝接受此消息并发出报警帧如第13号。
场景4S通过窃听总线消息,不做任何修改,只是重复发送一个已经在总线上发送过的消息,准备发动重放攻击以使CAN总线系统不能正常提供服务。如表2的第18号所示,S重放了表2中的序号为15的帧。由于CNEP模块采用了序列号技术,重放消息的序列号Cj并没有发生改变,按照CNEP模块执行时,接收端就会检查到不一致的序列号,检测到重放攻击,并发出警报帧如第21号。
本文基于搭建CAN网络车载控制系统的硬件平台,对SPOCAN协议的有效性进行了完整且充分地评估。通过对2个阶段分别进行模拟攻击,完整地考虑了从汽车点火启动阶段到运行通信阶段的安全需求,保障了实验测试的完整性。通过对启动阶段设计的3个攻击场景,充分考虑了在该阶段对ECU身份真实性的可能发动的伪造攻击、篡改攻击以及重放攻击;通过对通信阶段设计的4个攻击场景,充分考虑了在该阶段对消息正确性、数据机密性、消息完整性、数据新鲜性可能发动的伪造攻击、窃听攻击、篡改攻击以及重放攻击,保障了实验测试的充分性。通过对2个阶段7种攻击场景的实验测试,结果表明,该SPOCAN协议能有效地为CAN总线提供安全保障。
表2 车辆通信阶段的攻击测试
针对汽车网联化所带来的车载CAN总线的信息安全问题,本文提出了一种车载控制器局域网络安全协议SPOCAN,该协议包含SNIA和CNEP 2个模块。SNIA模块提供车辆启动阶段ECU间的身份认证,保障待通信节点的身份真实性;CNEP模块提供了车辆启动后通信阶段的安全保障,提供数据机密性,消息正确性、数据完整性和数据新鲜性保护。本文从汽车点火启动阶段和通信阶段对该协议进行了有效性评估,实验结果验证了该协议能够为CAN总线提供良好的安全保障。
参考文献:
[1] 张亚萍, 刘华, 李碧钰, 等. 智能网联汽车技术与标准发展研究 [J]. 上海汽车, 2015(8): 55-59.
ZHANG Yaping, LIU Hua, LI Biyu, et al. Research on intelligent network technology and standard development of automotive technology [J]. Shanghai Automotive, 2015(8): 55-59.
[2] 于赫. 网联汽车信息安全问题及CAN总线异常检测技研究 [D]. 吉林: 吉林大学, 2016: 15-31.
[3] 田希晖, 张玘, 张连超, 等. CAN总线及其应用技术 [J]. 微计算机信息: 测控仪表自动化, 2002(9): 3-5.
TIAN Xihui, ZHANG Qi, ZHANG Lianchao, et al. CAN bus and its application technology [J]. Microcomputer Information: Measurement and Control Instrumentation Automation, 2002(9): 3-5.
[4] HENNINGER O. E-safety vehicle intrusion protected applications (EVITA) project [EB/OL]. (2008-07-31)[2017-10-05]. http∥ www.evita-project.org.
[5] GROLL A, HOLLE J, RULAND C, et al. OVERSEE a secure and open communication and runtime platform for innovative automotive applications [C]∥Proceedings of the 19th Intelligent Transport Systems World Congress. Washington D C, USA: ITS, 2012: EU-00690.
[6] HOLLE J, PLATSCHEK A, SANCHEZ J, et al. OVERSEE: a secure and open in-vehicle ITS station [C]∥Proceedings of the 19th ITS World Congress. Washington D C, USA: ITS, 2012: EU-00469.
[7] LIN C W, SANGIOVANNI-VINCENTELLI A. Cyber-Security for the controller area network (CAN) communication protocol [C]∥Proceedings of the International Conference on Cyber Security. Piscataway, NJ, USA: IEEE Computer Society, 2012: 1-7.
[8] NILSSON D K, LARSON U E, JONSSON E. Efficient in-vehicle delayed data authentication based on compound message authentication codes [C]∥Proceedings of the Vehicular Technology Conference. Piscataway, NJ, USA: IEEE, 2008: 1-5.
[9] GROZA B, MURVAY S. Efficient protocols for secure broadcast in controller area networks [J]. IEEE Transactions on Industrial Informatics, 2013, 9(4): 2034-2042.
[10] 王莉, 刘德新, 刘书亮. 汽车网络标准总线CAN [J]. 世界汽车, 2001(1): 15-17.
WANG Li, LIU Dexin, LIU Shuliang. Automotive network standard bus CAN [J]. World Automotive, 2001(1): 15-17.
[11] CHECKOWAY S, MCCOY D, KANTOR B, et al. Comprehensive experimental analyses of automotive attack surfaces [C]∥Proceedings of the Usenix Security Symposium. Berkeley, CA, USA: Usenix, 2011: 6.
[12] EZAKI T, DATE T, INOUE H. An analysis platform for the information security of in-vehicle networks connected with external networks [C]∥Proceedings of the International Workshop on Security. Berlin, Germany: Springer, 2015: 301-315.
[13] NIGHSWANDER T, LEDVINA B, DIAMOND J, et al. GPS software attacks [C]∥Proceedings of the ACM Conference on Computer and Communications Security. New York, USA: ACM, 2012: 450-461.
[14] SVAMSIKRISHNA T R, HARIHARAN R H. VANET-based vehicle tacking on message authentication and secure navigation route [J]. International Journal of Computer, 2015, 113(7): 32-40.
[15] LIU H, LIANG X, FANG L, et al. A secure and authentication protocol based on identity based aggregate signature for electric vehicle applications [C]∥Proceedings of the International Conference on Wireless Communication and Sensor Network. Piscataway, NJ, USA: IEEE, 2015: 353-357.
[16] 胡向东. 应用密码学 [M]. 2版. 北京: 电子工业出版社, 2011: 87-88.