辜 云, 陳江波, 鄭玉圓, 涂將輝, 夏永強(qiáng), 趙能卿
(江鈴汽車股份有限公司, 江西 南昌 330001)
智能網(wǎng)聯(lián)汽車由于其自身的特性存在互聯(lián)網(wǎng)攻擊的風(fēng)險(xiǎn)[1],網(wǎng)關(guān)是TBOX連接整車網(wǎng)絡(luò)的唯一路徑[2],為了最大程度地保護(hù)整車網(wǎng)絡(luò)的安全,降低因?yàn)門BOX而帶來的安全風(fēng)險(xiǎn),必須增加TBOX和網(wǎng)關(guān)之間的加密、握手、認(rèn)證等[3],使TBOX參與整車網(wǎng)絡(luò)通信之前執(zhí)行加密、握手、認(rèn)證等流程,確保TBOX處于安全狀態(tài)[4]。
1) 當(dāng)前整車網(wǎng)絡(luò)安全面臨的隱患如下:①Internet非法用戶惡意攻擊;②OBD未授權(quán)設(shè)備接入。
2) 針對安全隱患,需要采取的策略:①TBox,作為第1層網(wǎng)絡(luò)安全保護(hù):驗(yàn)證Internet用戶合法性;Internet數(shù)據(jù)加密解密。②網(wǎng)關(guān),作為第2層網(wǎng)絡(luò)安全保護(hù):整車網(wǎng)絡(luò)數(shù)據(jù)加密解密;TBox訪問握手;TBox訪問認(rèn)證;驗(yàn)證OBD設(shè)備合法性;驗(yàn)證用戶合法性。如圖1所示。
圖2為網(wǎng)絡(luò)安全軟件框圖,模塊功能如下。
1) Security Lib:使用軟件加密庫 (Security Lib) 實(shí)現(xiàn)加密解密功能。
2) Security M:識(shí)別解密后的數(shù)據(jù)是否合法;識(shí)別用戶的合法性和權(quán)限;識(shí)別數(shù)據(jù)是否需要加密/解密和使用的密鑰。
3) Security Data:加密/解密密鑰;加密/解密數(shù)據(jù)目錄;整車數(shù)據(jù);刷寫包;用戶數(shù)字簽字。
4) T-Box傳給Gateway的數(shù)據(jù): (部分) 經(jīng)過算法加密;訪問握手;訪問認(rèn)證。
圖1 網(wǎng)絡(luò)結(jié)構(gòu)
圖2 網(wǎng)絡(luò)安全軟件框圖
為了保證通信過程的網(wǎng)絡(luò)安全,對于遠(yuǎn)程控制信號及其他安全相關(guān)的信號都必須加密發(fā)送。下線設(shè)備將整車VIN碼寫入網(wǎng)關(guān)中[5],網(wǎng)關(guān)發(fā)送整車VIN碼在總線上(PCAN,HCAN和BCAN),TBox內(nèi)部存儲(chǔ)一個(gè)2byte的Udata數(shù)據(jù),初始默認(rèn)為0,每計(jì)算完一次+1 (二進(jìn)制),下電后立即存儲(chǔ)當(dāng)前值,下次上電后調(diào)用存儲(chǔ)值,該存儲(chǔ)值在模塊斷電后不可擦除,參照圖3,介紹加密流程。
圖3 加密系統(tǒng)框圖
TBox將接收到的總線VIN碼的最后兩位和內(nèi)部Udata來運(yùn)算出Rolling Code_ECU,同時(shí)執(zhí)行器將Rolling Code_ECU通過算法計(jì)算出Store_Rolling Code,執(zhí)行器模塊需保存最近的8個(gè)Store_Rolling Code,將當(dāng)前算法1算出的Rolling Code發(fā)到CAN總線上給TBox。TBox將接收到的Rolling Code_ECU通過算法運(yùn)算得到自己的Rolling Code_TBox,并發(fā)送到總線上給到執(zhí)行模塊,執(zhí)行模塊會(huì)將接收到的Rolling Code_TBox和自己存儲(chǔ)的最近的8個(gè)Store_Rolling Code做比較。執(zhí)行模塊存儲(chǔ)的8個(gè)Store_Rolling Code中任意一個(gè)與Rolling Code_TBox相同,執(zhí)行器才認(rèn)為TBox發(fā)送到該控制報(bào)文有效,才會(huì)去執(zhí)行TBox發(fā)送控制要求,否則認(rèn)為無效,不響應(yīng)當(dāng)前TBox下發(fā)的控制指令。
為了最大程度地保護(hù)整車網(wǎng)絡(luò)的安全,降低因?yàn)門BOX而帶來的安全風(fēng)險(xiǎn),必須增加TBOX和網(wǎng)關(guān)之間的握手協(xié)議,使TBOX參與整車網(wǎng)絡(luò)通信之前執(zhí)行握手流程,確保TBOX處于安全狀態(tài)[6]。
根據(jù)診斷規(guī)范定義,握手流程采用的0x33 服務(wù)需要在擴(kuò)展會(huì)話模式下進(jìn)行。參照圖4,依次介紹握手流程。
圖4 TBOX與網(wǎng)關(guān)握手流程
握手流程是指TBOX發(fā)起握手請求到網(wǎng)關(guān)發(fā)出握手結(jié)果的整個(gè)過程。握手分4 步進(jìn)行,分別為:握手請求、握手響應(yīng)、握手密鑰和握手結(jié)果。
3.2.1 握手請求
握手請求是指TBOX發(fā)起握手請求的過程??刂泼钭远x,默認(rèn)值為0x000x00,表示TBOX發(fā)送握手請求命令到網(wǎng)關(guān)。
3.2.2 握手響應(yīng)
握手響應(yīng)是指接收到TBOX發(fā)出握手請求后網(wǎng)關(guān)發(fā)出握手響應(yīng)Check_Seed的過程??刂泼钭远x,默認(rèn)值為0x000x01,指示網(wǎng)關(guān)發(fā)送Check_Seed到TBOX,Check_Seed為由網(wǎng)關(guān)生成的4個(gè)字節(jié)隨機(jī)值。
3.2.3 握手密鑰
握手密鑰是指握手響應(yīng)后,TBOX根據(jù)Check_Seed和Base-Key計(jì)算發(fā)出握手密鑰Check_Key的過程。控制命令自定義,默認(rèn)值為0x000x02,指示TBOX發(fā)送Key到網(wǎng)關(guān)[7],Key由4個(gè)字節(jié)組成。
3.2.4 握手結(jié)果
握手結(jié)果是網(wǎng)關(guān)根據(jù)Check_Key或者Tsk得到的結(jié)果Check_Resp。控制命令自定義,默認(rèn)值為0x000x03。握手結(jié)果包括握手成功、握手失敗和握手超時(shí)。握手結(jié)果是握手流程的輸出結(jié)果。握手結(jié)果在網(wǎng)關(guān)初始化后默認(rèn)狀態(tài)為未握手成功;握手結(jié)果不受會(huì)話模式轉(zhuǎn)換的影響。
1) 握手成功:握手成功是指網(wǎng)關(guān)計(jì)算結(jié)果和握手密鑰Check_Key一致??刂泼钭远x,默認(rèn)值為0x00。
2) 握手失?。何帐质∈侵妇W(wǎng)關(guān)計(jì)算結(jié)果和握手密鑰Check_Key不一致。控制命令自定義,默認(rèn)值為0x01。
3) 握手超時(shí):握手超時(shí)是指網(wǎng)關(guān)發(fā)送Check_Seed后,在Tsk時(shí)間內(nèi)未收到TBOX響應(yīng)。控制命令自定義,默認(rèn)值為0x02。
網(wǎng)關(guān)需包含正常模式和遠(yuǎn)程啟動(dòng)模式,并由網(wǎng)關(guān)通過CAN報(bào)文發(fā)送模式信息給總線上的其他節(jié)點(diǎn)。通常情況下,網(wǎng)關(guān)均處于正常模式;當(dāng)網(wǎng)關(guān)收到Tbox發(fā)起的加密認(rèn)證請求時(shí),即切換進(jìn)入遠(yuǎn)程啟動(dòng)模式。若加密認(rèn)證失敗、超時(shí)、啟動(dòng)條件不滿足、發(fā)動(dòng)機(jī)遠(yuǎn)程熄火完成等條件滿足時(shí),控制器完成對應(yīng)動(dòng)作后,切換回正常模式。在Tbox向網(wǎng)關(guān)發(fā)出發(fā)動(dòng)機(jī)遠(yuǎn)程啟動(dòng)指令前,Tbox需與網(wǎng)關(guān)進(jìn)行加密認(rèn)證,只有加密認(rèn)證通過,網(wǎng)關(guān)才向整車網(wǎng)絡(luò)發(fā)出發(fā)動(dòng)機(jī)遠(yuǎn)程啟動(dòng)指令。如圖5所示。
圖5 TBox-網(wǎng)關(guān)訪問認(rèn)證流程
網(wǎng)絡(luò)安全作為智能網(wǎng)聯(lián)汽車發(fā)展的先決條件,受到各主機(jī)廠的高度重視,投入大量研發(fā)團(tuán)隊(duì)開發(fā)縝密完善的網(wǎng)絡(luò)架構(gòu)。通過TBox、網(wǎng)關(guān)和后臺(tái)服務(wù)交互路徑和信息安全實(shí)施一系列的安全防護(hù)有利于網(wǎng)聯(lián)汽車的穩(wěn)健發(fā)展。