李 敏, 陳付龍, 龐 輝
(1. 安徽師范大學(xué) 計(jì)算機(jī)與信息學(xué)院, 安徽 蕪湖 241002; 2. 蕪湖職業(yè)技術(shù)學(xué)院 信息與人工智能學(xué)院,安徽 蕪湖 241006; 3. 埃泰克汽車(chē)電子(蕪湖)有限公司 軟件部, 安徽 蕪湖 241006)
目前, 隨著智能網(wǎng)聯(lián)汽車(chē)產(chǎn)業(yè)蓬勃發(fā)展, 進(jìn)一步提升了用戶(hù)駕乘體驗(yàn), 豐富了車(chē)載產(chǎn)品功能, 但也存在汽車(chē)信息安全問(wèn)題。2018年, 由生態(tài)環(huán)保部和國(guó)家市場(chǎng)監(jiān)督管理總局聯(lián)合發(fā)布的重型柴油車(chē)污染物排放限值及測(cè)量方法(中國(guó)第六階段)(GB 17691—2018)標(biāo)準(zhǔn)中要求車(chē)載終端數(shù)據(jù)傳輸應(yīng)采用非對(duì)稱(chēng)加密算法SM2或RSA算法(以Ron Rivest, AdiShamir 和Leonard Adleman 3位開(kāi)發(fā)人員命名), 且對(duì)私鑰采用硬件保護(hù)方式[1]。在2021年世界智能網(wǎng)聯(lián)汽車(chē)大會(huì)上, 專(zhuān)家強(qiáng)調(diào)了數(shù)據(jù)安全是智能網(wǎng)聯(lián)汽車(chē)面對(duì)的新挑戰(zhàn), 并詳細(xì)分析智能網(wǎng)聯(lián)汽車(chē)整車(chē)信息安全威脅和滲透測(cè)試[2]。國(guó)內(nèi)外文獻(xiàn)資料也多次報(bào)道車(chē)內(nèi)外網(wǎng)絡(luò)易遭受攻擊等問(wèn)題。如Thing等[3]和吳尚澤等[4]均提出車(chē)載設(shè)備未采用身份認(rèn)證易遭受惡意攻擊, Woo等[5]提出為提高車(chē)內(nèi)CAN(Controller Area Network)總線可認(rèn)證性和機(jī)密性以抵御網(wǎng)絡(luò)攻擊, 改進(jìn)車(chē)載內(nèi)部總線協(xié)議; Woo等[6]和羅峰等[7]提出車(chē)載網(wǎng)絡(luò)數(shù)據(jù)采用分級(jí)加密傳輸方式; Groza等[8]提出一種消息認(rèn)證的CAN總線協(xié)議。因此, 車(chē)內(nèi)、 車(chē)際網(wǎng)數(shù)據(jù)安全是智能網(wǎng)聯(lián)汽車(chē)產(chǎn)業(yè)需解決的關(guān)鍵問(wèn)題。國(guó)密算法SM2是我國(guó)自主研發(fā)的商用密碼體系, 是基于ECC(Elliptic Curves Cryptography)的非對(duì)稱(chēng)密碼算法, 密鑰長(zhǎng)度較RSA短, 算法安全性更強(qiáng)[9]。隨著國(guó)密算法在信息安全領(lǐng)域廣泛應(yīng)用, 將國(guó)密算法應(yīng)用于智能網(wǎng)聯(lián)汽車(chē)產(chǎn)業(yè)是一種有益的嘗試[10]。目前車(chē)載設(shè)備多數(shù)采用XTEA(Extended Tiny Ecryption Algorithm)或128 bits AES(Advanced Ehcryption Standard)加密算法進(jìn)行安全認(rèn)證, 通過(guò)分析驗(yàn)證, 發(fā)現(xiàn)128 bits AES算法應(yīng)用于車(chē)載CAN數(shù)據(jù)加密過(guò)程中產(chǎn)生的隨機(jī)數(shù)作為明文發(fā)送, 該算法易產(chǎn)生數(shù)據(jù)被篡改或網(wǎng)絡(luò)攻擊等問(wèn)題[11]。SM2算法將車(chē)載設(shè)備產(chǎn)生的隨機(jī)數(shù)隱藏在公鑰中, 采用私鑰解密, 進(jìn)行車(chē)載設(shè)備身份認(rèn)證, 有效提高數(shù)據(jù)機(jī)密性。
目前, 科研人員對(duì)國(guó)密算法SM2進(jìn)行了大量研究和算法實(shí)現(xiàn), 刑唯哲[12]提出基于C語(yǔ)言實(shí)現(xiàn)SM2軟件, 王騰飛等[13]采用改進(jìn)固定時(shí)長(zhǎng)防護(hù)方案對(duì)基于大數(shù)運(yùn)算MIRACL(Multiprecision Integer and Rational Arithmetic Cryptographic Library)庫(kù)實(shí)現(xiàn)SM2軟件, 聶意新等[14]提出了基于JAVA語(yǔ)言實(shí)現(xiàn)SM2算法。但SM2算法在汽車(chē)信息安全領(lǐng)域的實(shí)際應(yīng)用還較少。筆者研究分析了國(guó)密SM2算法原理, 并將SM2算法移植到國(guó)產(chǎn)嵌入式處理器GD32, 同時(shí)采用saleae工具和CanKing等軟件進(jìn)行算法驗(yàn)證。通過(guò)實(shí)驗(yàn)表明, 將SM2算法移植到國(guó)產(chǎn)嵌入式處理器中并應(yīng)用于智能網(wǎng)聯(lián)汽車(chē)產(chǎn)業(yè)具有一定的實(shí)用價(jià)值和參考意義。
2010年國(guó)家密碼管理局發(fā)布了SM2橢圓曲線公鑰密碼算法, SM2是基于有限域FP上的橢圓曲線方程y2=x3+ax+b, 其中p是大于3的素?cái)?shù),a,b∈Fp,p、a、b為橢圓曲線系統(tǒng)參數(shù), 且滿(mǎn)足條件(4a3+27b2)modp≠0[15]。SM2算法加密強(qiáng)度高, 因此嘗試將SM2算法應(yīng)用于智能網(wǎng)聯(lián)汽車(chē)關(guān)鍵部件TBOX(Telematics-BOX)和PEPS(Passive Entry Passive Start)的身份認(rèn)證場(chǎng)合, 雙方采用 CAN 2.0 B協(xié)議通信, 為防止CAN總線受重放攻擊, CAN報(bào)文中設(shè)置了8字節(jié)的RN隨機(jī)數(shù), 保證數(shù)據(jù)機(jī)密性。
根據(jù)SM2國(guó)密算法原理[15], TBOX和PEPS雙方設(shè)有私鑰和公鑰, TBOX公鑰為PT, 私鑰為dT; PEPS公鑰為PP, 私鑰為dP。TBOX和PEPS公鑰和私鑰的關(guān)系如下
PT=[dT]G,PP=[dP]G
(1)
TBOX與PEPS身份認(rèn)證過(guò)程如圖1所示。PEPS包含4 Byte PIN、 8 Byte隨機(jī)數(shù)和8 Byte CC常數(shù)。PIN碼作為待加密的明文,RN為加密前生成的隨機(jī)數(shù), 并作為明文的一部分參與加密并生成密文, 向TBOX發(fā)送認(rèn)證請(qǐng)求; TBOX接收到PEPS的報(bào)文并進(jìn)行解密, 確認(rèn)PIN碼正確; TBOX確認(rèn)PEPS發(fā)送的PIN碼正確后, 生成隨機(jī)數(shù)并加密回復(fù)至PEPS。
算法原理如下
PP=[dP]G,C1=[RN]G
temp=[RN]PP=[RN][dp]G=[dp][RN]G=[dp]C1
(2)
其中C1為一次倍點(diǎn)運(yùn)算后的橢圓曲線點(diǎn),RN為隨機(jī)數(shù), temp為二次倍點(diǎn)運(yùn)算后橢圓曲線點(diǎn)。在認(rèn)證過(guò)程中, 基于公鑰加密特性, PEPS使用公鑰加密, TBOX使用PEPS私鑰解密, 并將公鑰發(fā)送至PEPS, PEPS使用TBOX私鑰完成解密并實(shí)現(xiàn)TBOX的認(rèn)證。
圖1 TBOX和PEPS的身份認(rèn)證Fig.1 Authentication of TBOX and PEPS
采用PC端的C-Free5 IDE調(diào)試國(guó)密SM2算法, 由于SM2加解密算法涉及大數(shù)運(yùn)算, 因此將有理算術(shù)MIARCL庫(kù)移植到系統(tǒng)LIB中。MIARCL庫(kù)是目前應(yīng)用較為廣泛的基于公鑰加密算法的大數(shù)運(yùn)算庫(kù), 源碼公開(kāi), 且包含Diffie-Hellman 密鑰交換、 RSA、 AES、 DSA數(shù)字簽名, 橢圓曲線密碼學(xué)等[9]。將PC端調(diào)試成功的SM2算法移植到兆易創(chuàng)新GD32F103嵌入式處理器, 基于KEIL5平臺(tái)設(shè)計(jì)TBOX和PEPS端軟件, 軟件由主程序、 公私鑰對(duì)生成、 密鑰派生、 SM2加解密、 CAN發(fā)送和接收程序等構(gòu)成。公私鑰對(duì)生成、 密鑰派生是SM2算法的關(guān)鍵代碼, SM2算法采用256位素?cái)?shù)域橢圓曲線參數(shù), 支持256 bits數(shù)據(jù)加解密[15], 公私鑰對(duì)生成函數(shù)流程如圖2所示[16]。
圖2 公私鑰對(duì)生成函數(shù)流程Fig.2 Public-private key pair generation function process
根據(jù)國(guó)家密碼管理局發(fā)布的公鑰加密算法, 密鑰派生是在密鑰協(xié)商中, 通過(guò)密鑰交換得出共享數(shù)據(jù)流, 生成會(huì)話密鑰或密鑰數(shù)據(jù), 其生成流程如圖3所示[15]。輸入數(shù)據(jù)X, 長(zhǎng)度XL=32。輸出密鑰數(shù)據(jù)Y,長(zhǎng)度為YL,Y=H1‖H2‖…‖H[YL/XL-1]‖H[YL/XL]。
圖3 SM2密鑰派生函數(shù)流程Fig.3 SM2 key derivation function flow
平臺(tái)硬件采用國(guó)產(chǎn)GD32F103為核心的嵌入式系統(tǒng)板模擬車(chē)載TBOX和PEPS, GD32F103是ARM(Advanced RISC Machine) CORTEX-M3內(nèi)核, 主頻為108 MHz, 支持一路CAN接口。測(cè)試儀器包括Kavaser CAN分析儀、 SaleaeLogic8邏輯分析儀、 數(shù)字示波器等。將在C-Free5 IDE中調(diào)試成功的SM2加解密代碼移植到GD32F103, 并在KEIL5中運(yùn)行及測(cè)試SM2加解密和通信程序, 如圖4~圖6所示, 其包括密鑰生成函數(shù)SM2_keygen()、 加密函數(shù)SM2_encrypt()、 解密函數(shù)SM2_decrypt()、 CAN通信函數(shù)CAN_message_transmit()等。為便于準(zhǔn)確獲取加解密和密鑰生成函數(shù)的運(yùn)行時(shí)間, 軟件中應(yīng)用TEST_ON()和TEST_OFF()函數(shù)實(shí)現(xiàn)測(cè)試開(kāi)啟和關(guān)閉。
圖4 密鑰生成函數(shù)Fig.4 Key generation function
圖5 PEPS加密函數(shù)Fig.5 PEP sencryption function
圖6 PEPS解密函數(shù)Fig.6 PEPS decryption function
PC端采用SaleaeLogic8邏輯分析儀測(cè)試函數(shù)調(diào)度和SM2算法的加解密時(shí)間, 如圖7所示。在GD32F103中運(yùn)行程序SM2_keygen()、 SM2_encrypt()和SM2_decrypt()。經(jīng)測(cè)試, 上電后, 執(zhí)行SM2初始化, SM2_keygen()耗時(shí)235 ms, PEPS確認(rèn)PIN正確后, 生成隨機(jī)數(shù), 并加密回復(fù)TBOX,{SM2_encrypt()}耗時(shí)469 ms, PEPS收到TBOX報(bào)文后解密, 確認(rèn)PIN正確, SM2_decrypt函數(shù)耗時(shí)235 ms。從數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性角度, 上述時(shí)間超過(guò)車(chē)載數(shù)據(jù)頻繁交互指標(biāo), 但在車(chē)載設(shè)備單次身份認(rèn)證場(chǎng)合是可接受的。將Kavaser CAN分析儀作為該系統(tǒng)中的一個(gè)節(jié)點(diǎn)連接到TBOX和PEPS通信網(wǎng)絡(luò), 采用CanKing軟件監(jiān)測(cè)TBOX和PEPS接發(fā)收?qǐng)?bào)文、 接發(fā)收時(shí)間以及測(cè)試數(shù)據(jù), 系統(tǒng)軟件中設(shè)定PEPS和TBOX每隔1 ms發(fā)送一幀數(shù)據(jù), 每幀數(shù)據(jù)DLC長(zhǎng)度為8, 如圖8所示, 界面上部分ID為0x111的PEPS節(jié)點(diǎn)發(fā)送的17幀數(shù)據(jù), 下部分ID為0x222的TBOX節(jié)點(diǎn)發(fā)送的17幀數(shù)據(jù)。
圖7 函數(shù)調(diào)度和SM2算法運(yùn)行時(shí)間Fig.7 Function Scheduling and SM2 algorithm running time
圖8 CanKing平臺(tái)接發(fā)收的CAN多幀報(bào)文Fig.8 CAN multi-frame messages sent and received by the CanKing platform
加密算法中設(shè)置明文長(zhǎng)度為20 Byte, 包括8 Byte的隨機(jī)數(shù)、 4 Byte PIN和8 Byte CC常數(shù), 如表2所示, TBOX端的CAN ID設(shè)為0X111, PEPS端的CAN ID設(shè)為0X222, 雙方CAN通信密文長(zhǎng)度為116 Byte。由于車(chē)載CAN通信傳輸?shù)囊粠瑘?bào)文最大數(shù)據(jù)量為8個(gè)字節(jié), 因此, 需將116 Byte密文分組多幀傳輸, 雙方約定分組協(xié)議, 該協(xié)議將每幀中第1個(gè)字節(jié)的數(shù)據(jù)作為幀次序的標(biāo)識(shí)符, 設(shè)為序號(hào)0~16, 共17幀數(shù)據(jù)。
表1 車(chē)載CAN通信明文構(gòu)成
表2 TBOX與PEPS的CAN通信數(shù)據(jù)
筆者將國(guó)密SM2算法移植到嵌入式處理器GD32F103, 并應(yīng)用于車(chē)載節(jié)點(diǎn)CAN通信的安全認(rèn)證場(chǎng)合。具體總結(jié)如下。
1) 采用SM2算法將車(chē)載節(jié)點(diǎn)CAN報(bào)文中隨機(jī)數(shù)RN作為私鑰, 發(fā)送時(shí)隱藏在公鑰中, 提高車(chē)載數(shù)據(jù)安全性。
2) 基于KEIL5完成車(chē)載節(jié)點(diǎn)主程序、 公私鑰對(duì)生成、 密鑰派生、 SM2加解密、 CAN通信等函數(shù)設(shè)計(jì), 根據(jù)車(chē)載CAN通信特點(diǎn), 結(jié)合SM2算法原理, 按照雙方約定報(bào)文分組協(xié)議傳輸多幀密文。
3) 通過(guò)Kavaser CANKING軟件監(jiān)測(cè)TBOX和PEPS通信數(shù)據(jù), 驗(yàn)證SM2算法應(yīng)用于智能網(wǎng)聯(lián)汽車(chē)安全認(rèn)證方法的有效性。
4) 通過(guò)SaleaeLogic8平臺(tái)獲取TBOX和PEPS的上電初始化、 公私鑰對(duì)生成、 密鑰派生、 SM2加解密的運(yùn)行時(shí)間, 得出采用SM2算法加解密和CAN數(shù)傳時(shí)間較長(zhǎng)是源于SM2算法復(fù)雜, 且有理算術(shù)庫(kù)MIARCL運(yùn)算量大。CAN數(shù)傳時(shí)間過(guò)長(zhǎng)源于密文過(guò)長(zhǎng), 分組協(xié)議多幀密文傳輸所致。因此, 從筆者研究中得出SM2算法適用于車(chē)載設(shè)備的單次身份認(rèn)證場(chǎng)合, 安全性更高, 數(shù)據(jù)加解密頻繁場(chǎng)合則宜采用對(duì)稱(chēng)加密算法SM4, 結(jié)合國(guó)密SM4和SM2算法的各自?xún)?yōu)勢(shì), 為國(guó)密SM2和SM4混合密碼算法應(yīng)用于智能網(wǎng)聯(lián)汽車(chē)安全認(rèn)證領(lǐng)域提供借鑒。