冠捷半导体(上海)有限公司 王 敏
CAN网络作为目前汽车的主要网络,是确保整车信息安全重要的一个环节。本文在汽车电子软件开发标准AUTOSAR提出的SecOC概念基础上加以扩展,实现了一套不依赖于AUTOSAR软件但兼容于其SecOC通讯机制的系统。实验证明,该系统能有效地生成SecOC校验时需要的Freshness值以及MAC消息认证码,能正常接入使用SecOC通讯机制的网络,在不降低安全性的条件下,极大节省了硬件成本和软件开发成本。
在汽车信息化,互联化,电子化的今天,汽车信息安全成为一个越来越重要的话题。相对于传统汽车,现代化的汽车存在着更多的信息接入口,例如:板上调试接口,远程无线连接接口,如WIFI,蓝牙等,信息娱乐接口,如CD,USB等。而这些接口都是黑客常见的目标。黑客通常会从这些接口入手,寻找一些漏洞,入侵到汽车系统里。紧接着,黑客会尝试破解车内CAN网络协议,在CAN网络上发送一些非法消息,以实现对车内各个部件的控制或者破坏。
近年来,汽车被恶意攻击的事件频发,例如,在2015年,查理·米勒和克里斯·瓦拉塞克就利用菲亚特克莱斯勒的车载娱乐系统的漏洞更新了车内ECU的固件并向CAN总线发送非法控制指令从而成功入侵了2014款Jeep自由光。二人在2016年再次合作,利用相似的手法破解了板上调试接口,像CAN网络上发送控制指令,实现了对汽车的动力系统的操控,可以随意的进行加减速和刹车。
从这些例子我们可以发现由于CAN网络是车内最主要的通信渠道,CAN网络安全是汽车信息安全的最后也是最重要的一个环节。但频频的黑客攻击事件也说明了传统CAN2.0网络对于信息安全的防护极其薄弱,已经难以适应当今汽车发展的需求。为了提高车载CAN总线的安全性,国际知名汽车电子软件开发标准AUTOSAR提出了基于CAN-FD总线的车载安全通信模块SecOC(Secure on Board Communication)安全验证机制,通过在CAN-FD总线数据上附加Freshness值以及MAC消息认证码,来实现通讯双方的认证以及消息验证,从而保障了车载通讯网络的安全。下面将详细介绍SecOC的原理和基于外挂式硬件安全模块的SecOC实现方法。
SecOC从属于AUTOSAR软件规范中的Safety and Security部分,旨在对单个传输的数据单元的安全性进行校验以检测识别重播,欺骗,篡改等攻击行为。SecOC于AUTOSAR 4.3.1版本首次提出,在对之前版本AUTOSAR架构改动较少,资源消耗不大量增长的情况下,实现了安全的CAN-FD通信。该模块主要使用了基于对称身份验证方法的MAC消息认证码,相对于传送统的非对称密钥验证体系来说,密钥长度更加短,计算时间更加少,对软硬件的资源消耗更加少,但却可以实现和非对称秘钥验证类似的安全性。同时,AUTOSAR也保留了非对称秘钥验证的模块接口,可以在对称秘钥验证系统和非对称秘钥验证系统间灵活切换。
如图1所示,SecOC模块是AUTOSAR基础软件模块的一部分,集成于通讯服务的PDU(Protocol Data Unit)路由层,配合系统服务的CSM加密服务管理单元等确保整个AUTOSAR通讯协议的安全性。在该架构中PDU路由层会把安全相关的PDU传给SecOC模块,然后由SecOC模块根据预先的配置信息将相应的PDU内容添加相关的安全认证信息,或者读取其中的安全认证信息。
图1 SecOC模块层级
如图2所示,SecOC模块处理后包含安全认证信息的Secured I-PDU报文结构主要包括可选的Secured I-PDU头,Authentic I-PDU,可选的Freshness值和Authenticator四个部分。Authentic I-PDU为合法的协议内容,如各种传感器状态内容。可选的Freshness值和Authenticator是进行安全校验的重要部分。Freshness值是一个随时间不断变化,不重复的值,以确保总线上的消息不会被重放攻击,一般是一个单调计数器或者时间戳。Authenticator部分是MAC消息认证码的部分,由对称秘钥,Authentic I-PDU数据,对应消息的ID值和Freshness值计算生成,用于保护验证消息的数据完整性和真实性。
图2 Secured I-PDU结构
如图3所示,在通讯过程中,发送端应用层的Freshness值管理器(FVM)会生成一个Freshness值并根据配置好的长度裁减后用于本次通讯。SecOC模块包含一个MAC消息认证码生成单元,目前常用的MAC消息认证码生成算法是AES-CMAC及HMAC。将生成好的Freshness值,秘钥K,消息ID和Authentic I-PDU数据送入MAC消息认证码生成器,就可以计算得到MAC消息认证码值。同样的,根据配置的不同,最终发送到总线的MAC消息认证码长度也是可裁减的。
图3 SecOC安全机制验证流程
接收端收到Secured I-PDU数据后,接收端的Freshness值管理器会首先比对Freshness值,如果该值小于等于之前保存的上一次Freshness值或不在设定的时间范围内,则说明这是一包被重放的数据,有安全隐患,需要丢弃;如果该值大于之前保存的上一次Freshness值或在设定的时间范围内,则说明该字段安全,进行之后的检验。接收端的MAC消息认证码验证单元按照发送端的MAC消息认证码生成单元一样的算法计算Freshness值,秘钥K,消息ID和Authentic I-PDU数据对应的MAC消息认证码值并和接收到的MAC消息认证码值比对,如果两者一致,说明该包数据安全可信;如果不一致,则说明该包数据有安全隐患,需要丢弃。
在SecOC的实现过程中,除了需要大量的软件工作,同时要求硬件MCU具有安全算法能力和对秘钥的安全保护能力。对于普通的MCU,其往往没有足够快的安全运算能力,或者自带的硬件安全单元不支持AES-CMAC算法或者HMAC算法。对于一些运行速率高,运算能力强劲的MCU,虽然可以通过纯软件的方式完成相关的SecOC算法,但是很多又缺乏硬件上的安全保护机制,无法实现对秘钥的安全存储,达不到汽车相关安全规范对信息安全的要求。于是,汽车供应商只能基于少许的带硬件安全模块HSM且支持AUTOSAR的MCU器件进行SecOC的开发,SecOC的应用范围收到了极大的限制。
为了解决这一问题,我们考虑使用车规级别的外挂式硬件安全芯片,在不使用AUTOSAR架构的情况下实现SecOC的相应功能,实现安全的车载通讯。
如图4所示,我们搭建了一套硬件系统。其中,主控端使用美国微芯公司生产的ATSAMV71Q20。ATSAMV71Q20是一颗Cortex M7内核的单片机,最高运行速率300MHz,附带SPI,I2C,UART,CAN和CAN-FD等多种数据接口。CAN-FD收发器使用美国微芯公司生产的ATA6571。安全芯片使用美国微芯公司生产的TA100。TA100集成了多种对称,非对称及哈希等安全算法,可以实现安全启动,安全升级,消息认证和TLS等多种安全功能。对于SecOC安全机制中所需要的AES-CMAC算法和HMAC算法,TA100可以在微秒级别完成,非常适合该系统。
图4 系统硬件架构
系统中的MOOCA FD是用来充当SecOC的接收节点的CANFD分析仪,它可以通过配置成为一个符合AUTOSAR通讯标准的SecOC子节点,从而判断本系统发出的数据是否符合AUTOSAR中对SecOC的要求。
为了模拟真实的量产使用环境,软件部分主要包含两大部分:产线烧录软件及客户端使用软件。
对于产线烧录软件主要是为了将后续测试需要的AES-CMAC秘钥组烧录进TA100,并对TA100做基本配置。这部分的软件流程如图5(a)所示。(1)初始化主控各外设,配置主时钟为300MHz,使能SPI及USB模块。(2)配合微芯公司提供的上位机工具读取存储于上位机的AES-CMAC秘钥数据。(3)将秘钥数据发送到TA100。(4)对秘钥数据进行再校验,如果出现错误则重试步骤(3)。(5)写入其他TA100配置,并锁定TA100,以确保相关秘钥再也无法被读写。
图5 系统软件流程
对于客户端使用软件,即测试用软件,会将8字节的Authentic I-PDU明文数据添加Freshness值及由TA100计算得到的MAC消息认证码(也就是Authenticator部分)值发送到CAN-FD总线上。这初部分的软件流程如图5(b)所示。(1)初始化主控各外设,配置主时钟为300MHz,使能SPI及CAN-FD模块。(2)读取TA100单调递增的安全计数值作为Freshness值。(3)打包Authentic I-PDU明文数据及Freshness值数据。(4)使能TA100的AESCMAC功能,并配置好后续MAC消息认证码所需要的秘钥。(5)将打包好的Authentic I-PDU明文数据及Freshness值数据发送至TA100。(6)等待TA100计算完成返回MAC消息认证码值数据。(7)重新打包所有数据,并发送到CAN-FD总线上。(8)检查停止测试的按键是否按下,如果按下则停止测试,否则跳转到(2)循环进行测试。
搭建好测试系统后,打开MOOCA FD上位机工具,导入测试系统使用的秘钥值,并配置成AUTOSAR SecOC子节点。记录MOOCA FD收到的数据,如图6所示,SecOC子节点已成功收到数据并校验通过。说明本系统作为SecOC的主节点,在不使用带硬件安全模块HSM的MCU器件且不使用AUTOSAR的情况下,可以实现AUTOSAR SecOC主节点一样的功能。
图6 测试结果
结语:AUTOSAR规范提出了SecOC的概念,通过对CAN总线上的数据进行校验和认证,以实现对汽车CAN总线通讯数据的保护。但受限于SecOC对软件和硬件的苛刻要求,该概念的推广收到了极大的阻碍。本文通过使用外挂式的安全加密芯片TA100,在不使用高成本的安全控制器件的情况下,构建了一套兼容SecOC安全机制的软硬件系统。该系统不依赖于AUTOSAR系统和MCU本身硬件安全能力,软件开发简单,通用性强。在保证车载通信安全的基础上,具有很好的实用性和灵活性。