罗 峰, 胡 强, 刘 宇
(同济大学 汽车学院, 上海 201804)
智能网联汽车是当前汽车技术领域的一个重要发展方向.随着汽车网联技术的发展,汽车上对外的接口逐渐增多,针对汽车的网络攻击成为了一个新的问题[1].当前对于汽车网络的安全通信研究中,Herrewege等[2]基于CAN+ (controller area network +),将数据场16个字节中的15个字节用于消息验证,通过哈希加密函数计算出数据帧的签名校验,实现通信的安全认证,但由于只有1个字节可以用于数据传输,会造成总线负载率升高.Hartkopp等[3]将CAN总线数据场的4个字节用于对报文和时间戳的认证,但是使CAN通信的有效数据降低,造成网络负载率的上升.Woo等[4]对CAN总线通信进行了无线攻击,并提出一种安全协议对CAN总线通信进行安全保护.针对高速数据的传输,Woo等[5]提出了一种基于CAN-FD (controller area network with flexible data-rate)加密通信的方法,实现了在汽车网络上进行数据的分级加密传输,但缺乏相应的时间检测机制.国内学者在CAN总线通信的身份认证方面提出了一种动态口令身份认证方法[6],实现通信的完整性检查.在入侵检测方面,国内的研究者提出了一种运用信息熵的算法对通信入侵的异常现象进行检测的方法[7],但未体现该方法在汽车级微控制器的计算处理能力下的性能效果.
在目前的国内外研究中,对汽车通信网络的保护主要包括对数据的加密以保护通信的机密性、对消息的校验以保证数据的真实性以及通信网络的入侵检测,但是缺乏在汽车级微控制器的计算处理能力下的实际性能分析和可行性验证.针对目前的车载网络安全通信问题,通过对车载网络通信的安全需求分析,以数据加密和入侵检测为基础,建立一种基于CAN-FD网络的汽车通信网络信息安全方法,并通过硬件实例验证该方法的实时性和负载率是否满足汽车网络要求.
通过威胁分析可以确定网络通信基本的安全需求.目前针对汽车网络通信的攻击主要有以下几种形式[8]:
(1) 信息窃取.攻击者通过网络监听方式,直接获取通信内容,从而获取有关的车辆信息以及进行深入的网络攻击.应对该攻击的主要方式是对通信的数据内容进行加密,保证信息的机密性.
(2) 重放攻击.攻击者根据通信报文的特征,记录网络监听到的报文,再将记录的报文数据进行重发.重放攻击在攻击者不知道报文内容的前提下也能进行.针对重放攻击的主要应对机制是在通信过程中进行报文的时间标志检查,保证信息的新鲜性.
(3) 中间人攻击.中间人攻击主要有报文拦截和报文篡改2种形式.攻击者将网络中的通信节点分离,监听和记录网络上的通信内容,并对通信报文进行拦截或者篡改.对于中间人攻击,需要对通信报文进行完整性检查和真实性校验.
(4) 拒绝服务攻击.攻击者在网络上发送大量高优先级的报文,使网络的负载率达到最高值,影响网络正常通信.因此需要采取相应的安全机制保证通信的可用性.
信息的机密性、新鲜性、完整性、真实性以及可用性是汽车网络通信的最基本的安全需求.
安全通信在基于CAN-FD网络传输的基础上, 加入了安全通信协议和入侵检测安全机制.CAN-FD网络具有最高10 Mbps的通信速率以及多达64字节数据场容量.CAN-FD网络的报文帧结构形式如图1所示[9].
2.1.1安全传输
汽车网络通信对加密算法的要求如下:
图1CAN-FD帧结构
Fig.1FramestructureofCAN-FD
(1) 算法应该具备轻量级要求,在汽车ECU(electronic control unit)有限的硬件资源下,能够在保证网络通信实时性前提下正常执行算法.
(2) 具备足够的防破解能力.
(3) 适合车载网络的数据加密,最小加密块应小于报文数据场的字节数.
AES(advanced encryption standard)加密算法作为一种对称加密算法,具有执行计算时间短,兼容软件加密、硬件加密的方式等特点[10].本文中安全传输协议采用AES-128算法对传输数据进行加密和MAC(message authentication code)计算.CAN-FD总线中,数据场有64个字节(512位),将前48字节数据进行密文传送,后16个字节作为MAC校验.16字节(128位)的AES-MAC理论上的暴力破解次数为2128,具有足够的安全性.
2.1.2安全启动
在车辆启动时,密钥管理员需要对ECU进行轮询,确保所有子网内的ECU掌握正确的预共享密钥,图2所示是密钥管理员对ECU1进行安全启动询问过程.首先密钥管理员生成随机数,将随机数和一个计数器值以明文形式发送给ECU1,并生成MAC校验码,其中计数器值用来防止重放攻击.ECU1收到请求后验证MAC和计数器值,将随机数通过预共享密钥进行加密和认证,发回给密钥管理员,密钥管理员对ECU1的应答进行解密.当接收随机数和发送随机数一致且MAC有效时,说明ECU1能够正确使用预共享密钥,安全启动完成.
图2 安全启动流程
2.1.3时间同步
高精度的时间戳是防止重放攻击的一种手段.时钟同步是依靠某一个ECU作为“时钟基准”,其他ECU通过接收该ECU的时间戳信息,更新本地ECU时间戳参数.由于在网络上传输数据、接收和发送数据、加密解密以及MAC校验都会产生延时,因此需要对传输产生的延时进行校正.时间同步协议参考IEEE 1588协议[11],通过计算时间延时和偏移,得出报文发送时间和接收时间的偏差.需要同步时间的ECU根据计算得出的时间偏差,修正接收的时间戳参数.在同步的过程中的通信报文需要加入随机数校验和MAC校验机制,确保时间同步的安全性.图3中延时Tdelay和偏移Toffset的计算公式如下:
图3 IEEE 1588 时钟同步机制
(1)
(2)
式中:T1为主节点发送时间;T2为从节点接收时间;T3为从节点发送时间;T4为主节点接收时间.
2.1.4密钥分配
安全通信中用于密钥分配、时钟同步和安全启动的密钥为预共享密钥,安全传输中使用的密钥为会话密钥.假设会话密钥在车辆每次启动时会进行一次更新.一个ECU节点可以具备多组会话密钥,用于不同类型的安全通信.图4中,每个ECU的预共享密钥依次为K1,K2,…,K5.其中ECU1、ECU3、ECU4具有会话密钥1,ECU2和ECU5具有会话密钥2,从而实现同一子网内通信内容的逻辑隔离,保护会话内容的隐私性.在实际使用中,每个ECU的安全模块中可以储存多个密钥,用于不同场合下的加密认证.
图4 会话密钥分组
密钥分配有以下2个场景:①ECU通过预共享密钥向密钥管理员发送更新请求;②密钥管理员通过预共享密钥向ECU发送密钥更新请求.
密钥分配会话采用随机数验证机制,其中随机数由密钥管理员和会话ECU生成.同时在通信过程中加入时间戳和MAC校验以及通信加密机制,保证密钥更新安全进行.
安全通信过程中引入入侵检测机制.在通信过程中,ECU需要实时检测通信的安全状态.安全通信的状态码定义如表1 所示.
表1 安全通信状态码定义
安全通信系统通过CANoe软件进行仿真验证,搭建网络仿真模型.设置CAN-FD通信速率为2 Mbps,时间戳允许误差为100 ms.仿真过程为密钥管理员和5个ECU节点之间实现安全启动、时间同步、密钥分配以及安全传输协议.利用CANoe 设计仿真控制面板,如图5所示.仿真程序中安全协议执行的流程如图6所示.
图5 安全协议仿真面板
图6 安全通信流程
仿真实验中CAN-FD的通信速率为2 Mbps,连续实现安全启动、时间同步、密钥分配协议用时约为20.8 ms.如图7所示,在仅执行安全协议过程中, CAN Statistics数据栏的统计结果显示网络仿真通信最大负载率为3.10%,平均负载率为1.41%.因此采取该安全通信机制不会对总线负载率造成太大压力.在安全会话过程中,CAN-FD报文的数据场中前48个字节用于数据传输,后16个字节用于数据校验,数据场的传输利用率为75%,通信效率较高.
安全传输的数据由AES-128算法进行加密和解密.表2中列出了在安全传输过程中,ECU1和ECU3之间的通信数据.其中ECU1在CAN-FD报文数据场前48个字节中传输数据,后16个字节发送报文仲裁场、时间戳等校验信息,经加密密钥和校验密钥分别生成密文和MAC,发送给ECU3.ECU3校验MAC后解密报文数据.可以看出ECU3解密的数据和ECU1发送数据完全吻合.
图7 安全协议执行时的网络负载率界面
节点传输数据ECU1发送原始信息01 70D6FE505C943C264302CC15D933930000000000000000000000000000000000000000000000000000000000000000DC755A787AD073806D0D497F841E9401ECU1发送密文7B68D9256E7BAC92F1263A35E1D8052B0BD83B5226BAE3FA979BA8B38EA034B8EC7B0CA87C8C39928F230B690C05F8CC28F5302DAE5B68C42100637E085058D6ECU3解密明文0170D6FE505C943C264302CC15D933930000000000000000000000000000000000000000000000000000000000000000DC755A787AD073806D0D497F841E9401
安全通信在微控制器MPC5748G上进行验证,如图8所示.MPC5748G具有硬件安全模块,能够从硬件层面上实现AES-128算法和MAC认证,并具有随机数生成和密钥安全存储等功能[12].
图8 安全通信硬件节点
加密和解密的计算时间测试结果如图9所示.当微控制器的时钟频率为160 MHz,使用AES-128算法连续加密或解密1 600字节所消耗的时间约为71.6 μs,平均每帧报文中由于加密和解密造成的额外延时为5.73 μs.该延时远小于CAN-FD报文的传输周期时间.因此,引入该安全通信机制并不会影响网络通信的实时性.
图9 加密、解密计算性能
使用Dolev-Yao模型进行安全通信攻击测试[13].在图4的CAN-FD网络安全通信基础上加入一个攻击者节点.攻击者可以监听网络信息,改变网络拓扑结构,发起重放报文、篡改报文和拦截报文等攻击.
基本测试场景中使用CANoe作为网络仿真工具,建立的CAN-FD总线的通信速率为500 kbps,并使用外接的PCAN工具仿真和记录工具进行拒绝服务攻击.测试用例包括密钥破解、重放攻击、中间人攻击和拒绝服务攻击.
(1) 密钥破解.设置攻击者节点为监听模式,攻击者监听总线,并对监听的报文信息进行记录.通过主节点的请求报文和从节点的应答报文推测密钥,然后使用虚假ECU替换原从节点.由于AES-128算法只能通过暴力破解,可以认为攻击者无法找出正确的密钥,网络监测状态为MAC认证错误.
(2) 重放攻击.设置攻击者节点为发送模式,在报文监听的基础上,攻击者根据标识位等特征记录网络上报文信息,然后向网络上重新发送该报文.由于报文中时间戳超过允许误差值,网络监测状态为时间戳错误.
(3) 中间人攻击.攻击者将原网络分割开来,进行拦截、篡改报文攻击.被拦截攻击后,网络监测状态为等待超时.篡改报文攻击包括篡改MAC值、篡改报文标识符和直接篡改数据3种形式.由于安全通信系统会计算每帧报文的MAC值,被篡改攻击后,网络监测状态为MAC认证错误.
(4) 拒绝服务攻击.通过CAN卡从外部接入仿真的网络环境.设置PCAN工具发送报文标识符为0x01(高优先级)、数据场64个字节均为零的报文,间隔为1 ms,如图10所示.网络负载率在拒绝服务攻击后迅速达到100%.此时正常的通信报文无法成功发送,网络监测状态为网络高负载.
图10 拒绝服务攻击的测试环境
综上,安全通信系统中网络遭受到攻击及入侵检测状态判断指标如表3所示.
表3 网络入侵判断指标
以数据加密和消息认证为基础,结合随机数和时间戳机制,建立了一种基于CAN-FD网络的汽车通信网络信息安全方法.研究提出了包括安全传输、安全启动、时间同步与密钥分配协议的汽车网络安全通信流程,并建立了车辆网络仿真模型,验证了安全协议的通信机密性、新鲜性、完整性、真实性以及可用性.针对汽车通信网络潜在的攻击方式,基于Dolev-Yao攻击模型和拒绝服务攻击场景,对安全通信模型进行了入侵测试.测试结果验证了该安全通信方法的安全性和可用性.
由于测试用例的限制,提出的CAN-FD网络安全通信方法在实际运行环境中可能会遇到更复杂的网络攻击场景.后续可以结合真实的车辆网络环境进行安全通信的性能分析.