辜 云, 陳江波, 鄭玉圓, 涂將輝, 夏永強, 趙能卿
(江鈴汽車股份有限公司, 江西 南昌 330001)
智能網(wǎng)聯(lián)汽車由于其自身的特性存在互聯(lián)網(wǎng)攻擊的風(fēng)險[1],網(wǎng)關(guān)是TBOX連接整車網(wǎng)絡(luò)的唯一路徑[2],為了最大程度地保護整車網(wǎng)絡(luò)的安全,降低因為TBOX而帶來的安全風(fēng)險,必須增加TBOX和網(wǎng)關(guān)之間的加密、握手、認證等[3],使TBOX參與整車網(wǎng)絡(luò)通信之前執(zhí)行加密、握手、認證等流程,確保TBOX處于安全狀態(tài)[4]。
1) 當前整車網(wǎng)絡(luò)安全面臨的隱患如下:①Internet非法用戶惡意攻擊;②OBD未授權(quán)設(shè)備接入。
2) 針對安全隱患,需要采取的策略:①TBox,作為第1層網(wǎng)絡(luò)安全保護:驗證Internet用戶合法性;Internet數(shù)據(jù)加密解密。②網(wǎng)關(guān),作為第2層網(wǎng)絡(luò)安全保護:整車網(wǎng)絡(luò)數(shù)據(jù)加密解密;TBox訪問握手;TBox訪問認證;驗證OBD設(shè)備合法性;驗證用戶合法性。如圖1所示。
圖2為網(wǎng)絡(luò)安全軟件框圖,模塊功能如下。
1) Security Lib:使用軟件加密庫 (Security Lib) 實現(xiàn)加密解密功能。
2) Security M:識別解密后的數(shù)據(jù)是否合法;識別用戶的合法性和權(quán)限;識別數(shù)據(jù)是否需要加密/解密和使用的密鑰。
3) Security Data:加密/解密密鑰;加密/解密數(shù)據(jù)目錄;整車數(shù)據(jù);刷寫包;用戶數(shù)字簽字。
4) T-Box傳給Gateway的數(shù)據(jù): (部分) 經(jīng)過算法加密;訪問握手;訪問認證。

圖1 網(wǎng)絡(luò)結(jié)構(gòu)

圖2 網(wǎng)絡(luò)安全軟件框圖
為了保證通信過程的網(wǎng)絡(luò)安全,對于遠程控制信號及其他安全相關(guān)的信號都必須加密發(fā)送。下線設(shè)備將整車VIN碼寫入網(wǎng)關(guān)中[5],網(wǎng)關(guān)發(fā)送整車VIN碼在總線上(PCAN,HCAN和BCAN),TBox內(nèi)部存儲一個2byte的Udata數(shù)據(jù),初始默認為0,每計算完一次+1 (二進制),下電后立即存儲當前值,下次上電后調(diào)用存儲值,該存儲值在模塊斷電后不可擦除,參照圖3,介紹加密流程。

圖3 加密系統(tǒng)框圖
TBox將接收到的總線VIN碼的最后兩位和內(nèi)部Udata來運算出Rolling Code_ECU,同時執(zhí)行器將Rolling Code_ECU通過算法計算出Store_Rolling Code,執(zhí)行器模塊需保存最近的8個Store_Rolling Code,將當前算法1算出的Rolling Code發(fā)到CAN總線上給TBox。TBox將接收到的Rolling Code_ECU通過算法運算得到自己的Rolling Code_TBox,并發(fā)送到總線上給到執(zhí)行模塊,執(zhí)行模塊會將接收到的Rolling Code_TBox和自己存儲的最近的8個Store_Rolling Code做比較。執(zhí)行模塊存儲的8個Store_Rolling Code中任意一個與Rolling Code_TBox相同,執(zhí)行器才認為TBox發(fā)送到該控制報文有效,才會去執(zhí)行TBox發(fā)送控制要求,否則認為無效,不響應(yīng)當前TBox下發(fā)的控制指令。
為了最大程度地保護整車網(wǎng)絡(luò)的安全,降低因為TBOX而帶來的安全風(fēng)險,必須增加TBOX和網(wǎng)關(guān)之間的握手協(xié)議,使TBOX參與整車網(wǎng)絡(luò)通信之前執(zhí)行握手流程,確保TBOX處于安全狀態(tài)[6]。
根據(jù)診斷規(guī)范定義,握手流程采用的0x33 服務(wù)需要在擴展會話模式下進行。參照圖4,依次介紹握手流程。

圖4 TBOX與網(wǎng)關(guān)握手流程
握手流程是指TBOX發(fā)起握手請求到網(wǎng)關(guān)發(fā)出握手結(jié)果的整個過程。握手分4 步進行,分別為:握手請求、握手響應(yīng)、握手密鑰和握手結(jié)果。
3.2.1 握手請求
握手請求是指TBOX發(fā)起握手請求的過程。控制命令自定義,默認值為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的過程。控制命令自定義,默認值為0x000x01,指示網(wǎng)關(guān)發(fā)送Check_Seed到TBOX,Check_Seed為由網(wǎng)關(guān)生成的4個字節(jié)隨機值。
3.2.3 握手密鑰
握手密鑰是指握手響應(yīng)后,TBOX根據(jù)Check_Seed和Base-Key計算發(fā)出握手密鑰Check_Key的過程。控制命令自定義,默認值為0x000x02,指示TBOX發(fā)送Key到網(wǎng)關(guān)[7],Key由4個字節(jié)組成。
3.2.4 握手結(jié)果
握手結(jié)果是網(wǎng)關(guān)根據(jù)Check_Key或者Tsk得到的結(jié)果Check_Resp。控制命令自定義,默認值為0x000x03。握手結(jié)果包括握手成功、握手失敗和握手超時。握手結(jié)果是握手流程的輸出結(jié)果。握手結(jié)果在網(wǎng)關(guān)初始化后默認狀態(tài)為未握手成功;握手結(jié)果不受會話模式轉(zhuǎn)換的影響。
1) 握手成功:握手成功是指網(wǎng)關(guān)計算結(jié)果和握手密鑰Check_Key一致。控制命令自定義,默認值為0x00。
2) 握手失敗:握手失敗是指網(wǎng)關(guān)計算結(jié)果和握手密鑰Check_Key不一致。控制命令自定義,默認值為0x01。
3) 握手超時:握手超時是指網(wǎng)關(guān)發(fā)送Check_Seed后,在Tsk時間內(nèi)未收到TBOX響應(yīng)。控制命令自定義,默認值為0x02。
網(wǎng)關(guān)需包含正常模式和遠程啟動模式,并由網(wǎng)關(guān)通過CAN報文發(fā)送模式信息給總線上的其他節(jié)點。通常情況下,網(wǎng)關(guān)均處于正常模式;當網(wǎng)關(guān)收到Tbox發(fā)起的加密認證請求時,即切換進入遠程啟動模式。若加密認證失敗、超時、啟動條件不滿足、發(fā)動機遠程熄火完成等條件滿足時,控制器完成對應(yīng)動作后,切換回正常模式。在Tbox向網(wǎng)關(guān)發(fā)出發(fā)動機遠程啟動指令前,Tbox需與網(wǎng)關(guān)進行加密認證,只有加密認證通過,網(wǎng)關(guān)才向整車網(wǎng)絡(luò)發(fā)出發(fā)動機遠程啟動指令。如圖5所示。

圖5 TBox-網(wǎng)關(guān)訪問認證流程
網(wǎng)絡(luò)安全作為智能網(wǎng)聯(lián)汽車發(fā)展的先決條件,受到各主機廠的高度重視,投入大量研發(fā)團隊開發(fā)縝密完善的網(wǎng)絡(luò)架構(gòu)。通過TBox、網(wǎng)關(guān)和后臺服務(wù)交互路徑和信息安全實施一系列的安全防護有利于網(wǎng)聯(lián)汽車的穩(wěn)健發(fā)展。