李敏 陈付龙 庞辉
随着智能网联汽车(Intelligent Connected Vehicle,ICV)产业的快速发展,汽车安全认证越来越被业界所重视[1].而无钥匙启动及进入系统(Passive Entry Passive Start,PEPS)是汽车关键部件之一,它不仅对用户进行身份认证,而且也决定了汽车发动机能否正常起动,是保证汽车安全运行的前提条件.车载PEPS系统主要包括智能钥匙、线圈、集成IMMO基站的PEPS等部件,PEPS通过SPI总线与IMMO基站连接,并通过CAN总线与发动机管理单元(Engine Management System,EMS)连接,系统如图1所示.根据车载PEP和EMS通信机制,业界广泛采用128 bits AES加密算法或XTEA算法实现PEPS和EMS的动态加密安全认证.由于128 bits AES算法密钥生成和密钥调度算法较国密算法SM4复杂,加解密代码量较大,数据加密时间长,消耗过多的MCU(微处理器)资源,影响数传效率.
目前,SM4算法应用在车载设备CAN通信加密场合较少,特别是将SM4算法移植到车规级嵌入式处理器并验证其运行效率的文献也不多[2],多数文献是针对CAN总线提出安全认证机制,如文献[3]根据 CAN 总线特性提出一种安全认证方法抵御网络入侵,文献[4]提出了类似TESLA协议的具有消息认证的 CAN 总线安全认证机制,文献[5]提出了基于 EVITA-HSM消息认证的安全认证机制.为有效防止CAN总线的重放攻击、网络入侵等汽车安全问题,探索采用国密算法SM4取代128 bits AES算法实现PEPS和EMS安全认证具有重要的实用价值[6].国密算法SM4是我国自主研发的商用密码体系,它相比128 bits AES算法具有更强的安全性,且密钥调度算法简单,计算量少,从而加快运算速度[7-9].目前国外车规级MCU严重短缺,且价格昂贵,因此在保证系统稳定性和安全性前提下,使用国产MCU,可以不受外部环境制约,降低PEPS生产成本,实现车载PEPS国产化.
图1 PEPS系统框图Fig.1 Block diagram of PEPS system
PEPS系统硬件由MCU、ATA5785 RF接收电路、电源输出电路、开关量采集电路、低频天线驱动电路、CAN通信电路、ESCL通信电路等组成.其中,电源输出模块连接继电器组,提供发动机ACC、IGN点火信号、Cranking信号,ESCL提供电子转向柱锁电源和控制信号,CAN总线连接EMS,PEPS开关量采集信号包含点火按钮开关、驾驶门、副驾驶门、后备箱微动开关,低频天线驱动连接主副驾驶门把手天线、行李箱外部天线以及车内前后部天线等.PEPS电气原理如图2所示,PEPS上电找钥匙时序如图3所示.
图2 PEPS系统电气原理Fig.2 Electrical schematic diagram of PEPS system
图3 PEPS上电找钥匙时序Fig.3 PEPS power-on time sequence to find the key
车载PEPS与EMS通信采用 CAN 2.0B协议,帧结构中包含11位ID标识符.PEPS与EMS通信采用双向两级认证,双向是指EMS通过加密算法发送密文至PEPS,PEPS收到正确的加密数据后回复EMS,两级是指第一级为钥匙与PEPS系统的认证,第二级为PEPS与EMS认证.在第二级认证中,PEP和EMS共享SK和PIN,其中SK为128 bits数据,PIN为32 bits数据,SK和PIN通过机器学习存放到PEPS和EMS的EEPROM中.第二级认证过程具体如下:
1)PEPS控制IGN继电器使能,并等待EMS发送认证信息.
2)EMS初始化后以每隔150 ms发送DATA至PEPS.由于CAN报文的一帧有效数据为8 bytes,DATA包含加密的4 bytes PIN和4 bytes的随机数,EMS在2 s内未接收到PEPS的应答信息,则本次认证失败.
3)PEPS接收到EMS发送的DATA后,采用加密算法和SK对DATA进行解密,获得PIN数据与EEPROM中的PIN匹配,PEPS发送认证信息至EMS,该信息包含加密的4 bytes PIN和4 bytes随机数.如果PEPS接收到的PIN与本地EEPROM存储中的PIN不匹配,PEPS将发送8 byte的0xFF.
4)EMS接收到认证信息后,采用加密算法和SK对DATA进行解密,判断PIN码和EEPROM存储的PIN是否匹配,如果匹配,则双向认证通过.反之,将发送8 bytes的0xFF,其双向认证信息如表1所示.
通过分析PEPS和EMS认证过程,并依据CAN报文数据结构,提出基于国密算法SM4实现数据加解密.SM4是国家密码管理局于2012年发布的商用密码体系,是一种对称加密算法,算法结构为非平衡Feistel,密钥长度128位,采用分组且32轮非线性迭代加密,生成的密明文长度一致[10].根据文献[10]的加密算法得出:
1)通过32轮迭代运算后将数据反序得出密文(X35,X34,X33,X32):
Xi+4=F(Xi+Xi+1,Xi+2,Xi+3,rki)=Xi⨁T(Xi⨁Xi+1⨁Xi+2⨁Xi+3⨁rki),i=0,1,2,…,31,
(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32).
2)T变换与L变换:
在上述迭代运算中,所运用的T变换由s,L变换得出:
(b0,b1,b2,b3)=(Sbox(a0),Sbox(a1),Sbox(a2),
Sbox(a3)),
C=L(B)=B@(B<<<2)@(B<<<10)@(B<<<18)@(B<<<24),
其中(a0,a1,a2,a3)为128位数据输入,(b0,b1,b2,b3)为128位数据输出.
3)轮密钥rki生成:
rki=Ki⨁T′(CKi+1⨁CKi+2⨁CKi+3⨁CKi+4),
i=0,1,2,…,31.
表1 双向认证信息
PEPS系统软件由主程序、T变换、随机数生成、轮密钥、SM4加解密、CAN发送和接收程序等构成.主程序实现PEPS系统时钟配置、GPIO初始化、高低频芯片初始化、CAN初始化、CAN发送和接收、ADC初始化、DMA初始化、定时器初始化等.如图4所示.
图4 PEPS系统主程序流程Fig.4 Flow chart for the main program of the PEPS system
分别将128 bits AES算法和国密SM4算法移植到32位MCU GD32F103,分析两种算法的运行效率.依据产品标准,PEPS系统与EMS的安全认证需满足三项指标[11]:第一,数据的实时性,即保证PEPS和EMS需在规定时间内完成数传,行业中规定30 ms以内;第二,节点身份的合法性,即保证数据是由PEPS节点发送的;第三,数据的正确性,即保证PEPS发送和EMS接收的数据内容一致.
本系统采用GD32F103为核心处理器的嵌入式系统板模拟PEPS和EMS节点,使用Kvaser CAN分析仪、具备CAN解析功能的ZLG的ZDS2024 Plus数字示波器,Saleae Logic8逻辑分析仪等设备开展测试.首先,基于PC端的C-Free5 IDE平台设计并调试国密SM4算法,然后,将该算法移植到主频为108 MHz的MCU GD32F103,在KEIL开发环境中运行程序并调试,加解密测试程序如图5—8所示.为获取SM4算法中的加解密时间,将MCU的GPIO口设置为输出模式,通过GPIO口电平翻转策略判断,并使用逻辑分析仪捕获IO电平状态,通过Saleae平台测试两种算法的加解密时间.采用国密SM4算法,加密时间为57.75 μs,解密时间为57.75 μs,采用128 bits AES算法加密时间为0.906 5 ms,解密时间为0.141 ms,上述数据表明AES算法的加密时间接近SM4算法的15倍,解密时间接近SM4算法的3倍,显然SM4有效提高了加解密效率和缩短数传时间.
图5 128 bits AES加密程序Fig.5 128 bits AES encryption program
图6 128 bits AES解密程序Fig.6 128 bits AES decryption program
图7 SM4加密程序Fig.7 SM4 encryption procedure
图8 SM4解密程序Fig.8 SM4 decryption procedure
要保证车载PEPS和EMS的CAN通信实时性要求,按照EMS规范,采用SM4加密算法的函数调度和加密算法时间之和T′必须小于EMS规范时间T,即T′≤T[12-13].为了验证 CAN 总线的实时性,通过Kvaser CAN分析仪和上位机CANKIING平台循环发送定量数据,观察发送方、接收方时间戳,在相同的时间序列下,记录EMS发送的起始时间和PEPS接收数据时间,从图9和表2中可以得出基于SM4算法的函数调度和加密时间之和远小于EMS规范中的30 ms,完全满足系统实时性要求.
图9 PEPS和EMS接发时间戳Fig.9 PEPS and EMS receiving and sending time stamps
系统设置EMS节点的发送CAN ID为0X111,PEPS节点的发送CAN ID为0X222,EMS生成随机数0X11223344,将PIN码、随机数和常量构成的16 bytes明文加密,提取密文中的4 bytes 数据0XCC66DCC6和随机数0X11223344构成8 bytes的CAN报文通过总线发送至PEPS,PEPS收到CAN报文后,将收到的4 bytes随机数,以及自身EEPROM中存储的4 bytes PIN码,使用16 bytes的SK通过SM4加密之后,发现前4 bytes与CAN报文的后4 bytes一致,则表明第一次认证成功,PEPS再生成随机数0X55667788,按照SM4算法加密明文,同理将密文的前4 bytes 0X42B14E78以及随机数0X55667788发送到EMS端,EMS收到数据后同理加密,确认密文的前4 bytes与PEPS发送的CAN报文后4 bytes比对一致,也表明认证成功,验证数据如表3所示.
表2 加解密时间
本文基于国密算法SM4,设计了车载PEPS和EMS的CAN通信安全认证系统,其关键方法总结如下:
1)分析128 bits AES算法在车载PEPS和EMS 的CAN通信加密原理.由于AES密钥生成和密钥调度算法较SM4复杂,加解密时间较长,加解密代码量大,因此,将国密SM4算法应用于PEPS和EMS的安全认证,缩短加解密时间,有效提高数传效率.
2)搭建PEPS和EMS通信测试平台,采用32位108 MHz GD32F103作为PEPS的核心处理器,接口电路包括GPIO、AD、CAN、SPI等,基于KEIL集成开发环境设计PEPS的主程序、随机数生成、SM4加解密、CAN、SPI等函数.
3)将SM4算法移植到MCU GD32F103,比较128 bits AES算法和SM4算法的运行效率,通过Saleae Logic8逻辑分析仪测试SM4的加解密时间远低于128 bits AES算法,且代码量小,并基于Kavase CANKing平台验证PEPS和EMS的节点合法性、数据正确性等指标,为ICV安全认证方案提供研究基础.
4)对PEPS和EMS通信的CAN明文进行加密处理,有效防止重放攻击、网络入侵等汽车安全问题.
表3 PEPS身份合法性和数据正确性验证