李敏 陳付龍 龐輝
隨著智能網(wǎng)聯(lián)汽車(chē)(Intelligent Connected Vehicle,ICV)產(chǎn)業(yè)的快速發(fā)展,汽車(chē)安全認(rèn)證越來(lái)越被業(yè)界所重視[1].而無(wú)鑰匙啟動(dòng)及進(jìn)入系統(tǒng)(Passive Entry Passive Start,PEPS)是汽車(chē)關(guān)鍵部件之一,它不僅對(duì)用戶(hù)進(jìn)行身份認(rèn)證,而且也決定了汽車(chē)發(fā)動(dòng)機(jī)能否正常起動(dòng),是保證汽車(chē)安全運(yùn)行的前提條件.車(chē)載PEPS系統(tǒng)主要包括智能鑰匙、線(xiàn)圈、集成IMMO基站的PEPS等部件,PEPS通過(guò)SPI總線(xiàn)與IMMO基站連接,并通過(guò)CAN總線(xiàn)與發(fā)動(dòng)機(jī)管理單元(Engine Management System,EMS)連接,系統(tǒng)如圖1所示.根據(jù)車(chē)載PEP和EMS通信機(jī)制,業(yè)界廣泛采用128 bits AES加密算法或XTEA算法實(shí)現(xiàn)PEPS和EMS的動(dòng)態(tài)加密安全認(rèn)證.由于128 bits AES算法密鑰生成和密鑰調(diào)度算法較國(guó)密算法SM4復(fù)雜,加解密代碼量較大,數(shù)據(jù)加密時(shí)間長(zhǎng),消耗過(guò)多的MCU(微處理器)資源,影響數(shù)傳效率.
目前,SM4算法應(yīng)用在車(chē)載設(shè)備CAN通信加密場(chǎng)合較少,特別是將SM4算法移植到車(chē)規(guī)級(jí)嵌入式處理器并驗(yàn)證其運(yùn)行效率的文獻(xiàn)也不多[2],多數(shù)文獻(xiàn)是針對(duì)CAN總線(xiàn)提出安全認(rèn)證機(jī)制,如文獻(xiàn)[3]根據(jù) CAN 總線(xiàn)特性提出一種安全認(rèn)證方法抵御網(wǎng)絡(luò)入侵,文獻(xiàn)[4]提出了類(lèi)似TESLA協(xié)議的具有消息認(rèn)證的 CAN 總線(xiàn)安全認(rèn)證機(jī)制,文獻(xiàn)[5]提出了基于 EVITA-HSM消息認(rèn)證的安全認(rèn)證機(jī)制.為有效防止CAN總線(xiàn)的重放攻擊、網(wǎng)絡(luò)入侵等汽車(chē)安全問(wèn)題,探索采用國(guó)密算法SM4取代128 bits AES算法實(shí)現(xiàn)PEPS和EMS安全認(rèn)證具有重要的實(shí)用價(jià)值[6].國(guó)密算法SM4是我國(guó)自主研發(fā)的商用密碼體系,它相比128 bits AES算法具有更強(qiáng)的安全性,且密鑰調(diào)度算法簡(jiǎn)單,計(jì)算量少,從而加快運(yùn)算速度[7-9].目前國(guó)外車(chē)規(guī)級(jí)MCU嚴(yán)重短缺,且價(jià)格昂貴,因此在保證系統(tǒng)穩(wěn)定性和安全性前提下,使用國(guó)產(chǎn)MCU,可以不受外部環(huán)境制約,降低PEPS生產(chǎn)成本,實(shí)現(xiàn)車(chē)載PEPS國(guó)產(chǎn)化.
圖1 PEPS系統(tǒng)框圖Fig.1 Block diagram of PEPS system
PEPS系統(tǒng)硬件由MCU、ATA5785 RF接收電路、電源輸出電路、開(kāi)關(guān)量采集電路、低頻天線(xiàn)驅(qū)動(dòng)電路、CAN通信電路、ESCL通信電路等組成.其中,電源輸出模塊連接繼電器組,提供發(fā)動(dòng)機(jī)ACC、IGN點(diǎn)火信號(hào)、Cranking信號(hào),ESCL提供電子轉(zhuǎn)向柱鎖電源和控制信號(hào),CAN總線(xiàn)連接EMS,PEPS開(kāi)關(guān)量采集信號(hào)包含點(diǎn)火按鈕開(kāi)關(guān)、駕駛門(mén)、副駕駛門(mén)、后備箱微動(dòng)開(kāi)關(guān),低頻天線(xiàn)驅(qū)動(dòng)連接主副駕駛門(mén)把手天線(xiàn)、行李箱外部天線(xiàn)以及車(chē)內(nèi)前后部天線(xiàn)等.PEPS電氣原理如圖2所示,PEPS上電找鑰匙時(shí)序如圖3所示.
圖2 PEPS系統(tǒng)電氣原理Fig.2 Electrical schematic diagram of PEPS system
圖3 PEPS上電找鑰匙時(shí)序Fig.3 PEPS power-on time sequence to find the key
車(chē)載PEPS與EMS通信采用 CAN 2.0B協(xié)議,幀結(jié)構(gòu)中包含11位ID標(biāo)識(shí)符.PEPS與EMS通信采用雙向兩級(jí)認(rèn)證,雙向是指EMS通過(guò)加密算法發(fā)送密文至PEPS,PEPS收到正確的加密數(shù)據(jù)后回復(fù)EMS,兩級(jí)是指第一級(jí)為鑰匙與PEPS系統(tǒng)的認(rèn)證,第二級(jí)為PEPS與EMS認(rèn)證.在第二級(jí)認(rèn)證中,PEP和EMS共享SK和PIN,其中SK為128 bits數(shù)據(jù),PIN為32 bits數(shù)據(jù),SK和PIN通過(guò)機(jī)器學(xué)習(xí)存放到PEPS和EMS的EEPROM中.第二級(jí)認(rèn)證過(guò)程具體如下:
1)PEPS控制IGN繼電器使能,并等待EMS發(fā)送認(rèn)證信息.
2)EMS初始化后以每隔150 ms發(fā)送DATA至PEPS.由于CAN報(bào)文的一幀有效數(shù)據(jù)為8 bytes,DATA包含加密的4 bytes PIN和4 bytes的隨機(jī)數(shù),EMS在2 s內(nèi)未接收到PEPS的應(yīng)答信息,則本次認(rèn)證失?。?/p>
3)PEPS接收到EMS發(fā)送的DATA后,采用加密算法和SK對(duì)DATA進(jìn)行解密,獲得PIN數(shù)據(jù)與EEPROM中的PIN匹配,PEPS發(fā)送認(rèn)證信息至EMS,該信息包含加密的4 bytes PIN和4 bytes隨機(jī)數(shù).如果PEPS接收到的PIN與本地EEPROM存儲(chǔ)中的PIN不匹配,PEPS將發(fā)送8 byte的0xFF.
4)EMS接收到認(rèn)證信息后,采用加密算法和SK對(duì)DATA進(jìn)行解密,判斷PIN碼和EEPROM存儲(chǔ)的PIN是否匹配,如果匹配,則雙向認(rèn)證通過(guò).反之,將發(fā)送8 bytes的0xFF,其雙向認(rèn)證信息如表1所示.
通過(guò)分析PEPS和EMS認(rèn)證過(guò)程,并依據(jù)CAN報(bào)文數(shù)據(jù)結(jié)構(gòu),提出基于國(guó)密算法SM4實(shí)現(xiàn)數(shù)據(jù)加解密.SM4是國(guó)家密碼管理局于2012年發(fā)布的商用密碼體系,是一種對(duì)稱(chēng)加密算法,算法結(jié)構(gòu)為非平衡Feistel,密鑰長(zhǎng)度128位,采用分組且32輪非線(xiàn)性迭代加密,生成的密明文長(zhǎng)度一致[10].根據(jù)文獻(xiàn)[10]的加密算法得出:
1)通過(guò)32輪迭代運(yùn)算后將數(shù)據(jù)反序得出密文(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變換:
在上述迭代運(yùn)算中,所運(yùn)用的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位數(shù)據(jù)輸入,(b0,b1,b2,b3)為128位數(shù)據(jù)輸出.
3)輪密鑰rki生成:
rki=Ki?T′(CKi+1?CKi+2?CKi+3?CKi+4),
i=0,1,2,…,31.
表1 雙向認(rèn)證信息
PEPS系統(tǒng)軟件由主程序、T變換、隨機(jī)數(shù)生成、輪密鑰、SM4加解密、CAN發(fā)送和接收程序等構(gòu)成.主程序?qū)崿F(xiàn)PEPS系統(tǒng)時(shí)鐘配置、GPIO初始化、高低頻芯片初始化、CAN初始化、CAN發(fā)送和接收、ADC初始化、DMA初始化、定時(shí)器初始化等.如圖4所示.
圖4 PEPS系統(tǒng)主程序流程Fig.4 Flow chart for the main program of the PEPS system
分別將128 bits AES算法和國(guó)密SM4算法移植到32位MCU GD32F103,分析兩種算法的運(yùn)行效率.依據(jù)產(chǎn)品標(biāo)準(zhǔn),PEPS系統(tǒng)與EMS的安全認(rèn)證需滿(mǎn)足三項(xiàng)指標(biāo)[11]:第一,數(shù)據(jù)的實(shí)時(shí)性,即保證PEPS和EMS需在規(guī)定時(shí)間內(nèi)完成數(shù)傳,行業(yè)中規(guī)定30 ms以?xún)?nèi);第二,節(jié)點(diǎn)身份的合法性,即保證數(shù)據(jù)是由PEPS節(jié)點(diǎn)發(fā)送的;第三,數(shù)據(jù)的正確性,即保證PEPS發(fā)送和EMS接收的數(shù)據(jù)內(nèi)容一致.
本系統(tǒng)采用GD32F103為核心處理器的嵌入式系統(tǒng)板模擬PEPS和EMS節(jié)點(diǎn),使用Kvaser CAN分析儀、具備CAN解析功能的ZLG的ZDS2024 Plus數(shù)字示波器,Saleae Logic8邏輯分析儀等設(shè)備開(kāi)展測(cè)試.首先,基于PC端的C-Free5 IDE平臺(tái)設(shè)計(jì)并調(diào)試國(guó)密SM4算法,然后,將該算法移植到主頻為108 MHz的MCU GD32F103,在KEIL開(kāi)發(fā)環(huán)境中運(yùn)行程序并調(diào)試,加解密測(cè)試程序如圖5—8所示.為獲取SM4算法中的加解密時(shí)間,將MCU的GPIO口設(shè)置為輸出模式,通過(guò)GPIO口電平翻轉(zhuǎn)策略判斷,并使用邏輯分析儀捕獲IO電平狀態(tài),通過(guò)Saleae平臺(tái)測(cè)試兩種算法的加解密時(shí)間.采用國(guó)密SM4算法,加密時(shí)間為57.75 μs,解密時(shí)間為57.75 μs,采用128 bits AES算法加密時(shí)間為0.906 5 ms,解密時(shí)間為0.141 ms,上述數(shù)據(jù)表明AES算法的加密時(shí)間接近SM4算法的15倍,解密時(shí)間接近SM4算法的3倍,顯然SM4有效提高了加解密效率和縮短數(shù)傳時(shí)間.
圖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
要保證車(chē)載PEPS和EMS的CAN通信實(shí)時(shí)性要求,按照EMS規(guī)范,采用SM4加密算法的函數(shù)調(diào)度和加密算法時(shí)間之和T′必須小于EMS規(guī)范時(shí)間T,即T′≤T[12-13].為了驗(yàn)證 CAN 總線(xiàn)的實(shí)時(shí)性,通過(guò)Kvaser CAN分析儀和上位機(jī)CANKIING平臺(tái)循環(huán)發(fā)送定量數(shù)據(jù),觀察發(fā)送方、接收方時(shí)間戳,在相同的時(shí)間序列下,記錄EMS發(fā)送的起始時(shí)間和PEPS接收數(shù)據(jù)時(shí)間,從圖9和表2中可以得出基于SM4算法的函數(shù)調(diào)度和加密時(shí)間之和遠(yuǎn)小于EMS規(guī)范中的30 ms,完全滿(mǎn)足系統(tǒng)實(shí)時(shí)性要求.
圖9 PEPS和EMS接發(fā)時(shí)間戳Fig.9 PEPS and EMS receiving and sending time stamps
系統(tǒng)設(shè)置EMS節(jié)點(diǎn)的發(fā)送CAN ID為0X111,PEPS節(jié)點(diǎn)的發(fā)送CAN ID為0X222,EMS生成隨機(jī)數(shù)0X11223344,將PIN碼、隨機(jī)數(shù)和常量構(gòu)成的16 bytes明文加密,提取密文中的4 bytes 數(shù)據(jù)0XCC66DCC6和隨機(jī)數(shù)0X11223344構(gòu)成8 bytes的CAN報(bào)文通過(guò)總線(xiàn)發(fā)送至PEPS,PEPS收到CAN報(bào)文后,將收到的4 bytes隨機(jī)數(shù),以及自身EEPROM中存儲(chǔ)的4 bytes PIN碼,使用16 bytes的SK通過(guò)SM4加密之后,發(fā)現(xiàn)前4 bytes與CAN報(bào)文的后4 bytes一致,則表明第一次認(rèn)證成功,PEPS再生成隨機(jī)數(shù)0X55667788,按照SM4算法加密明文,同理將密文的前4 bytes 0X42B14E78以及隨機(jī)數(shù)0X55667788發(fā)送到EMS端,EMS收到數(shù)據(jù)后同理加密,確認(rèn)密文的前4 bytes與PEPS發(fā)送的CAN報(bào)文后4 bytes比對(duì)一致,也表明認(rèn)證成功,驗(yàn)證數(shù)據(jù)如表3所示.
表2 加解密時(shí)間
本文基于國(guó)密算法SM4,設(shè)計(jì)了車(chē)載PEPS和EMS的CAN通信安全認(rèn)證系統(tǒng),其關(guān)鍵方法總結(jié)如下:
1)分析128 bits AES算法在車(chē)載PEPS和EMS 的CAN通信加密原理.由于AES密鑰生成和密鑰調(diào)度算法較SM4復(fù)雜,加解密時(shí)間較長(zhǎng),加解密代碼量大,因此,將國(guó)密SM4算法應(yīng)用于PEPS和EMS的安全認(rèn)證,縮短加解密時(shí)間,有效提高數(shù)傳效率.
2)搭建PEPS和EMS通信測(cè)試平臺(tái),采用32位108 MHz GD32F103作為PEPS的核心處理器,接口電路包括GPIO、AD、CAN、SPI等,基于KEIL集成開(kāi)發(fā)環(huán)境設(shè)計(jì)PEPS的主程序、隨機(jī)數(shù)生成、SM4加解密、CAN、SPI等函數(shù).
3)將SM4算法移植到MCU GD32F103,比較128 bits AES算法和SM4算法的運(yùn)行效率,通過(guò)Saleae Logic8邏輯分析儀測(cè)試SM4的加解密時(shí)間遠(yuǎn)低于128 bits AES算法,且代碼量小,并基于Kavase CANKing平臺(tái)驗(yàn)證PEPS和EMS的節(jié)點(diǎn)合法性、數(shù)據(jù)正確性等指標(biāo),為ICV安全認(rèn)證方案提供研究基礎(chǔ).
4)對(duì)PEPS和EMS通信的CAN明文進(jìn)行加密處理,有效防止重放攻擊、網(wǎng)絡(luò)入侵等汽車(chē)安全問(wèn)題.
表3 PEPS身份合法性和數(shù)據(jù)正確性驗(yàn)證