陸 泳,徐偉卿,裴飛飛 Lu Yong,Xu Weiqing,Pei Feifei
?
仿真技術(shù)在硬件加密技術(shù)的開發(fā)應(yīng)用
陸 泳,徐偉卿,裴飛飛 Lu Yong,Xu Weiqing,Pei Feifei
(泛亞汽車技術(shù)中心有限公司,上海 200135)
采用與汽車診斷儀相配套的集成開發(fā)工具構(gòu)建仿真運(yùn)行模型,借助診斷儀軟件提供的自動化腳本定義汽車ECU邏輯序列,從而實(shí)現(xiàn)對仿真模擬環(huán)境的精確構(gòu)建。通過使用汽車ECU密鑰仿真實(shí)現(xiàn)方法,可以獲得由汽車診斷儀、仿真運(yùn)行模型、加密單元等協(xié)同工作并最終由后者生成的密鑰。
ECU;安全算法;仿真;接口程序
隨著汽車工業(yè)迅猛發(fā)展,汽車上使用了大量ECU(Electronic Control Unit,電子控制模塊),許多中高檔轎車上采用了十幾個甚至二十幾個ECU。目前大多數(shù)ECU采用相互獨(dú)立的硬件和軟件組成的技術(shù),不同軟件匹配相應(yīng)的硬件可適應(yīng)不同要求的車輛系統(tǒng),大大提高汽車的變型能力。為了避免對ECU數(shù)據(jù)軟件的誤更新和非授權(quán)數(shù)據(jù)訪問及功能操作,通過CAN車輛總線網(wǎng)絡(luò)層發(fā)送一系列指令序列即接口程序?qū)CU軟件進(jìn)行更新時,必須滿足SAE J2186 車輛診斷數(shù)據(jù)連接安全性要求。也就是說,對應(yīng)用于車輛上的電子模塊,如果提供了數(shù)據(jù)軟件刷新功能,那么數(shù)據(jù)安全性必須符合國家技術(shù)規(guī)范。
由于必須滿足相關(guān)數(shù)據(jù)連接安全性的標(biāo)準(zhǔn)和規(guī)范,這在一定程度上給汽車ECU的功能開發(fā)帶來不便。例如,在目前條件下實(shí)際搭建有待測類型ECU的真實(shí)測試環(huán)境,為開發(fā)人員完成各種測試工作(與ECU相關(guān)的診斷軟件、維修軟件中數(shù)據(jù)連結(jié)安全功能驗(yàn)證等);又如,由于用戶權(quán)限問題致使部分工程技術(shù)人員在開發(fā)過程中無權(quán)對ECU進(jìn)行訪問、測試。這樣不僅不便于快速定位并及時解決在ECU開發(fā)過程中面臨的一些技術(shù)問題,而且容易成為研發(fā)、設(shè)計環(huán)節(jié)中的瓶頸,從而影響工作效率,延長開發(fā)周期,致使在人員、資金以及時間投入等方面造成相當(dāng)大的浪費(fèi)。
將電子模塊仿真技術(shù)和軟件刷新接口技術(shù)充分結(jié)合起來,使用汽車ECU密鑰仿真實(shí)現(xiàn)方法,獲得由汽車診斷儀、仿真運(yùn)行模型、加密單元等協(xié)同工作并最終由后者生成的密鑰。
在日常ECU數(shù)據(jù)刷新過程中,工程技術(shù)人員應(yīng)用各個廠家提供的開發(fā)編程系統(tǒng)軟件加載數(shù)據(jù),通過運(yùn)行接口軟件,完成對ECU的程序更新。對于已售出的車輛,維修站技術(shù)人員采用廠家提供的維修編程軟件,加載對應(yīng)車型ECU的數(shù)據(jù)軟件包進(jìn)行數(shù)據(jù)刷新。兩者的最大區(qū)別是,接口軟件在開發(fā)編程系統(tǒng)中可以編輯和調(diào)試,而維修編程軟件無法對接口軟件進(jìn)行任何編輯和調(diào)試。
與支持CAN總線的ECU刷新相關(guān)的操作指令基本都符合ISO 15752-2道路行駛車輛CAN總線診斷網(wǎng)絡(luò)層規(guī)范的內(nèi)容和要求,可以了解到ECU的數(shù)據(jù)軟件刷新的步驟和指令。在對ECU數(shù)據(jù)軟件更新其間,加密解鎖操作是通過接口程序相關(guān)指令完成。這些指令操作必須遵循國家和汽車行業(yè)規(guī)范和標(biāo)準(zhǔn)。同時,只有對ECU解鎖后,接口程序才能夠順利地將制定的數(shù)據(jù)文件刷新至ECU。
闡述一種ECM(Engine Control Module,發(fā)動機(jī)控制模塊)加密原理:在加密控件中,選定具體算法號和種子號后,通過加密控件可以得到相對應(yīng)的密匙。針對不同ECU供應(yīng)商和不同功能應(yīng)用情況,分配的安全算法號不一樣。由安全算法號和內(nèi)核程序可以生成足夠多的種子號和密匙,從而在ECU制造時存儲到特定的寄存器中,這是ECU設(shè)計開發(fā)的核心。當(dāng)然,對于一般工程技術(shù)人員可以通過相關(guān)指令對ECU進(jìn)行種子號請求,再通過加密控件將計算出的密匙發(fā)送給ECU,從而對ECU進(jìn)行解鎖。
相關(guān)程序接口如圖1所示。
圖1 接口程序訪問原理
目前,工程開發(fā)用的汽車診斷儀基本功能包括集成診斷、節(jié)點(diǎn)/ECU仿真、數(shù)據(jù)獲取、自動測試和車內(nèi)通信網(wǎng)絡(luò)監(jiān)控等,同時支持CAN、LIN、K-line、J1850 VPW、ISO 9141、Keyword Protocol 2000等汽車行業(yè)普遍應(yīng)用的協(xié)議。
診斷儀軟件提供的腳本語言功能強(qiáng)大,簡單易學(xué)。針對需要實(shí)現(xiàn)的自動化任務(wù)即仿真控制比較簡單,可以選擇腳本語言進(jìn)行仿真控制編程。工程技術(shù)人員不需要具有任何編程語言基礎(chǔ)也能完成自動化腳本的編寫,只需要從列表中選擇需要的語句。所編寫的腳本運(yùn)用診斷儀腳本模塊定義ECU的邏輯序列,從而擁有一個可以工作的仿真ECU;因此,不需要編寫C代碼就能建立ECU模型和創(chuàng)建精確的仿真環(huán)境。
汽車ECU密鑰仿真實(shí)現(xiàn)方法步驟包括:
1)在計算機(jī)中構(gòu)建并運(yùn)行汽車ECU仿真模型;
2)將加密單元與計算機(jī)通訊連接,該加密單元與汽車ECU中用于生成密鑰的加密控件具有相同的加密處理業(yè)務(wù)規(guī)則;
3)將汽車診斷儀與計算機(jī)和車載總線通訊連接,通過汽車診斷儀設(shè)定所需的安全算法號并向仿真模型發(fā)送信號請求種子號;
4)將安全算法號和從仿真模型反饋輸出的種子號發(fā)送給加密單元,并由其生成與安全算法號和種子號相關(guān)聯(lián)的密鑰。
仿真集成系統(tǒng)的硬件構(gòu)造如圖2所示。
圖2 仿真集成系統(tǒng)架構(gòu)
由圖2可知,診斷儀A一端連接計算機(jī)USB接口,另一端按照具體技術(shù)接口特性,通常是計算機(jī)并行DB25的腳號進(jìn)行定義。將電源腳和接地腳連接到開關(guān)電源正負(fù)極,CAN(Controller Area Network,控制器局域網(wǎng)絡(luò))總線腳通過雙絞鏈線和符合J1962(Diagnostic Connector Standard,診斷連接器標(biāo)準(zhǔn))的數(shù)據(jù)鏈路連接器DLC(Data Link Connector,數(shù)據(jù)鏈路接口)聯(lián)結(jié)。
診斷儀B作為常規(guī)開發(fā)編程軟件和測試對象的連接設(shè)備。由于針對的是支持CAN總線的ECU數(shù)據(jù)軟件更新相關(guān)技術(shù)[1],根據(jù)目前普遍的要求,診斷儀必須支持SAE J2534-1編程應(yīng)用程序接口規(guī)范要求,否則無法與開發(fā)編程軟件進(jìn)行正常的數(shù)據(jù)通訊。
診斷儀軟件主要用于仿真軟件開發(fā)、調(diào)試和運(yùn)行監(jiān)控。在仿真軟件開發(fā)前,首先需要明確仿真ECU的相關(guān)邏輯,應(yīng)用診斷儀的數(shù)據(jù)獲取和記錄功能,對通過開發(fā)編程軟件運(yùn)行接口程序的正常ECU數(shù)據(jù)刷新進(jìn)行信號和報文實(shí)時記錄;接著對捕捉的報文進(jìn)行解析,確定相關(guān)的程序流程圖,明確需要模擬的ECU報文;最后利用診斷儀軟件提供的圖形化腳本環(huán)境,快速建立符合需求的邏輯指令集,從而模擬和仿真出ECU在數(shù)據(jù)軟件更新中的報文。該方案應(yīng)用診斷儀軟件相應(yīng)功能,通過報文記錄,解析及腳本編輯,提供完整的ECU種子及進(jìn)行相關(guān)通訊功能仿真。
接口程序開發(fā)編程軟件用于接口軟件的運(yùn)行和監(jiān)控,接口程序是符合診斷規(guī)范要求的一系列CAN總線指令,通過一般的文本編輯器可以對其進(jìn)行編輯和修改;在對ECU進(jìn)行數(shù)據(jù)軟件刷新時,這些指令集將在開發(fā)編程軟件或維修編程軟件環(huán)境下自動運(yùn)行。在數(shù)據(jù)傳輸過程中,對于運(yùn)行接口程序的計算機(jī)和需要進(jìn)行軟件刷新的ECU而言,接口程序指令在發(fā)送后,根據(jù)指令接收方ECU反饋結(jié)果,接口程序進(jìn)行相應(yīng)程序跳轉(zhuǎn)和執(zhí)行。理論上,在符合國家和行業(yè)規(guī)范的要求下,接口程序相關(guān)數(shù)據(jù)處理流程和語法都有嚴(yán)格定義[2],通過文本編輯器打開接口程序,找到定義和調(diào)用安全算法號的語句,將相應(yīng)的算法號修改為需要測試的數(shù)值即可。當(dāng)實(shí)際運(yùn)行接口程序時,開發(fā)編程軟件對ECU的所有的指令操作和總線信息進(jìn)行記錄,同時也將相關(guān)ECU的種子號和調(diào)用新算法號產(chǎn)生的密匙記錄下來。
ECU 仿真程序完全按照CAN總線軟件刷新步驟進(jìn)行仿真。開發(fā)編程軟件指令發(fā)出是軟件本身的設(shè)定,從仿真軟件中得到正反饋,會進(jìn)行下一步操作,反之,如果反饋信息不正確,會終止程序操作。根據(jù)這個特點(diǎn),進(jìn)行仿真軟件流程設(shè)計和軟件開發(fā),具體流程如圖3所示??偩€喚醒和診斷設(shè)備在線步驟是保持上位機(jī)和ECU之間通訊,為確保上位機(jī)識別出被訪問ECU的物理地址,需要反饋?zhàn)R別碼;在進(jìn)入ECU編程模式前,需要確保ECU狀態(tài)正常,不受其他節(jié)點(diǎn)通訊干擾,需要清除ECU故障碼和關(guān)閉CAN總線上其他所有節(jié)點(diǎn)的通訊,所以需要模擬清除ECU 內(nèi)部故障碼和關(guān)閉總線通訊節(jié)點(diǎn)使能的操作;接著反饋給上位機(jī)軟件狀態(tài),確認(rèn)ECU 是否刷新過;上位機(jī)會發(fā)送指令,讓ECU進(jìn)入編程模式后,請求ECU的種子號,然后工程技術(shù)人員輸入種子號;最后上位機(jī)根據(jù)內(nèi)部算法器和特定模塊的算法號,計算出對應(yīng)的密匙。
圖3 接口程序仿真流程
汽車ECU密鑰仿真實(shí)現(xiàn)方法包括如下步驟。
1)根據(jù)實(shí)際需要對ECU在計算機(jī)中構(gòu)建仿真模型,用來模擬真實(shí)ECU的實(shí)際運(yùn)行情形。
作為優(yōu)選,可以采用與汽車診斷儀相配套的集成開發(fā)工具來構(gòu)建仿真模型,集成開發(fā)工具通常功能強(qiáng)大、開發(fā)效率高并且運(yùn)行穩(wěn)定性好。通常,工程技術(shù)人員可以在不具備或者欠缺編程語言知識的背景下,借助例如診斷儀軟件提供的自動化腳本來定義ECU的邏輯序列,從而實(shí)現(xiàn)對仿真模擬環(huán)境的精確構(gòu)建。
2)將加密單元與計算機(jī)進(jìn)行通訊連接。在現(xiàn)有技術(shù)中,通過設(shè)置在汽車ECU中的加密控件并根據(jù)所輸入的安全算法號和種子號生成密鑰,該加密處理過程由于涉及到電子模塊設(shè)計開發(fā)的核心技術(shù),所以對于一般工程技術(shù)人員完全不可見。加密單元被設(shè)置成與ECU中加密控件具有同樣的加密處理業(yè)務(wù)規(guī)則實(shí)現(xiàn)與加密控件相同的密鑰生成功能。加密單元為連接在計算機(jī)外設(shè)接口上的加密鎖。
3)汽車診斷儀上的接口連接到計算機(jī)和車載總線上進(jìn)行通訊。汽車診斷儀主要用于ECU仿真應(yīng)用,通過USB接口連接到計算機(jī)上,并將車載總線接口通過雙絞線連接到數(shù)據(jù)鏈路連接器上,通過并行接口DB25連接到供電裝置上,接口連接如圖1所示。
4)完成連接設(shè)置之后,由工程技術(shù)人員、測試人員或者維護(hù)人員等在內(nèi)的使用者根據(jù)實(shí)際需要,通過汽車診斷儀設(shè)定所需的安全算法號,并與計算機(jī)進(jìn)行通訊向已經(jīng)在計算機(jī)上運(yùn)行的ECU仿真模型請求種子號,等待接收反饋的相應(yīng)種子號,通過仿真技術(shù)使得反饋輸出過程與真實(shí)ECU的處理過程一致。
5)將安全算法號、反饋得到的種子號發(fā)送給加密單元,加密單元按照設(shè)定的加密處理規(guī)則并根據(jù)接收到的安全算法號、種子號生成相關(guān)聯(lián)的密鑰,這樣通過與加密單元通訊,解析獲得該密鑰,如此便仿真實(shí)現(xiàn)汽車ECU密鑰,不需要搭建真實(shí)ECU測試環(huán)境或者對ECU操作權(quán)限認(rèn)定進(jìn)行測試、驗(yàn)證等,可以非常方便地將解析獲得的密鑰應(yīng)用到工作中,從而滿足諸如SAE J2186等規(guī)范對于汽車診斷數(shù)據(jù)連接方面的安全性要求。
6)在汽車ECU密鑰仿真實(shí)現(xiàn)中,在一個優(yōu)選情形下,可以另外設(shè)置步驟記錄得到的安全算法號、種子號和密鑰中的一個或多個;或者顯示得到的安全算法號、種子號和密鑰中的一個或多個;又或者同時記錄并顯示得到的安全算法號、種子號和密鑰中的一個或多個。通過以上步驟,能夠更好地觀測和使用這些數(shù)據(jù)。
針對工程技術(shù)人員所具備的技術(shù)背景和試驗(yàn)設(shè)備,利用診斷儀軟件開發(fā)并運(yùn)行仿真ECU腳本軟件,通過ECU種子號,仿真ECU任意種子號;通過ECU接口程序中算法號,利用開發(fā)編程軟件內(nèi)部加密控件,直接運(yùn)行仿真ECU接口程序,在開發(fā)編程軟件的報文中,可以得到算法號和種子號所對應(yīng)的密匙。本方案具備開發(fā)設(shè)計效率高、使用可靠、應(yīng)用便捷、節(jié)省費(fèi)用、降低調(diào)試工作量和難度等諸多優(yōu)點(diǎn)。
[1] ENHANCED E/E DIAGNOSTIC TEST MODES:SAE J2190-1993[S].
[2]羅峰,孫澤昌. 汽車CAN總線系統(tǒng)原理、設(shè)計與應(yīng)用[M]. 北京:電子工業(yè)出版社,2010.
2017-07-31
1002-4581(2017)06-0012-05
U467.2:TP311
A
10.14175/j.issn.1002-4581.2017.06.004