陸 泳,徐偉卿,裴飛飛 Lu Yong,Xu Weiqing,Pei Feifei
?
仿真技術在硬件加密技術的開發應用
陸 泳,徐偉卿,裴飛飛 Lu Yong,Xu Weiqing,Pei Feifei
(泛亞汽車技術中心有限公司,上海 200135)
采用與汽車診斷儀相配套的集成開發工具構建仿真運行模型,借助診斷儀軟件提供的自動化腳本定義汽車ECU邏輯序列,從而實現對仿真模擬環境的精確構建。通過使用汽車ECU密鑰仿真實現方法,可以獲得由汽車診斷儀、仿真運行模型、加密單元等協同工作并最終由后者生成的密鑰。
ECU;安全算法;仿真;接口程序
隨著汽車工業迅猛發展,汽車上使用了大量ECU(Electronic Control Unit,電子控制模塊),許多中高檔轎車上采用了十幾個甚至二十幾個ECU。目前大多數ECU采用相互獨立的硬件和軟件組成的技術,不同軟件匹配相應的硬件可適應不同要求的車輛系統,大大提高汽車的變型能力。為了避免對ECU數據軟件的誤更新和非授權數據訪問及功能操作,通過CAN車輛總線網絡層發送一系列指令序列即接口程序對ECU軟件進行更新時,必須滿足SAE J2186 車輛診斷數據連接安全性要求。也就是說,對應用于車輛上的電子模塊,如果提供了數據軟件刷新功能,那么數據安全性必須符合國家技術規范。
由于必須滿足相關數據連接安全性的標準和規范,這在一定程度上給汽車ECU的功能開發帶來不便。例如,在目前條件下實際搭建有待測類型ECU的真實測試環境,為開發人員完成各種測試工作(與ECU相關的診斷軟件、維修軟件中數據連結安全功能驗證等);又如,由于用戶權限問題致使部分工程技術人員在開發過程中無權對ECU進行訪問、測試。這樣不僅不便于快速定位并及時解決在ECU開發過程中面臨的一些技術問題,而且容易成為研發、設計環節中的瓶頸,從而影響工作效率,延長開發周期,致使在人員、資金以及時間投入等方面造成相當大的浪費。
將電子模塊仿真技術和軟件刷新接口技術充分結合起來,使用汽車ECU密鑰仿真實現方法,獲得由汽車診斷儀、仿真運行模型、加密單元等協同工作并最終由后者生成的密鑰。
在日常ECU數據刷新過程中,工程技術人員應用各個廠家提供的開發編程系統軟件加載數據,通過運行接口軟件,完成對ECU的程序更新。對于已售出的車輛,維修站技術人員采用廠家提供的維修編程軟件,加載對應車型ECU的數據軟件包進行數據刷新。兩者的最大區別是,接口軟件在開發編程系統中可以編輯和調試,而維修編程軟件無法對接口軟件進行任何編輯和調試。
與支持CAN總線的ECU刷新相關的操作指令基本都符合ISO 15752-2道路行駛車輛CAN總線診斷網絡層規范的內容和要求,可以了解到ECU的數據軟件刷新的步驟和指令。在對ECU數據軟件更新其間,加密解鎖操作是通過接口程序相關指令完成。這些指令操作必須遵循國家和汽車行業規范和標準。同時,只有對ECU解鎖后,接口程序才能夠順利地將制定的數據文件刷新至ECU。
闡述一種ECM(Engine Control Module,發動機控制模塊)加密原理:在加密控件中,選定具體算法號和種子號后,通過加密控件可以得到相對應的密匙。針對不同ECU供應商和不同功能應用情況,分配的安全算法號不一樣。由安全算法號和內核程序可以生成足夠多的種子號和密匙,從而在ECU制造時存儲到特定的寄存器中,這是ECU設計開發的核心。當然,對于一般工程技術人員可以通過相關指令對ECU進行種子號請求,再通過加密控件將計算出的密匙發送給ECU,從而對ECU進行解鎖。
相關程序接口如圖1所示。

圖1 接口程序訪問原理
目前,工程開發用的汽車診斷儀基本功能包括集成診斷、節點/ECU仿真、數據獲取、自動測試和車內通信網絡監控等,同時支持CAN、LIN、K-line、J1850 VPW、ISO 9141、Keyword Protocol 2000等汽車行業普遍應用的協議。
診斷儀軟件提供的腳本語言功能強大,簡單易學。針對需要實現的自動化任務即仿真控制比較簡單,可以選擇腳本語言進行仿真控制編程。工程技術人員不需要具有任何編程語言基礎也能完成自動化腳本的編寫,只需要從列表中選擇需要的語句。所編寫的腳本運用診斷儀腳本模塊定義ECU的邏輯序列,從而擁有一個可以工作的仿真ECU;因此,不需要編寫C代碼就能建立ECU模型和創建精確的仿真環境。
汽車ECU密鑰仿真實現方法步驟包括:
1)在計算機中構建并運行汽車ECU仿真模型;
2)將加密單元與計算機通訊連接,該加密單元與汽車ECU中用于生成密鑰的加密控件具有相同的加密處理業務規則;
3)將汽車診斷儀與計算機和車載總線通訊連接,通過汽車診斷儀設定所需的安全算法號并向仿真模型發送信號請求種子號;
4)將安全算法號和從仿真模型反饋輸出的種子號發送給加密單元,并由其生成與安全算法號和種子號相關聯的密鑰。
仿真集成系統的硬件構造如圖2所示。

圖2 仿真集成系統架構
由圖2可知,診斷儀A一端連接計算機USB接口,另一端按照具體技術接口特性,通常是計算機并行DB25的腳號進行定義。將電源腳和接地腳連接到開關電源正負極,CAN(Controller Area Network,控制器局域網絡)總線腳通過雙絞鏈線和符合J1962(Diagnostic Connector Standard,診斷連接器標準)的數據鏈路連接器DLC(Data Link Connector,數據鏈路接口)聯結。
診斷儀B作為常規開發編程軟件和測試對象的連接設備。由于針對的是支持CAN總線的ECU數據軟件更新相關技術[1],根據目前普遍的要求,診斷儀必須支持SAE J2534-1編程應用程序接口規范要求,否則無法與開發編程軟件進行正常的數據通訊。
診斷儀軟件主要用于仿真軟件開發、調試和運行監控。在仿真軟件開發前,首先需要明確仿真ECU的相關邏輯,應用診斷儀的數據獲取和記錄功能,對通過開發編程軟件運行接口程序的正常ECU數據刷新進行信號和報文實時記錄;接著對捕捉的報文進行解析,確定相關的程序流程圖,明確需要模擬的ECU報文;最后利用診斷儀軟件提供的圖形化腳本環境,快速建立符合需求的邏輯指令集,從而模擬和仿真出ECU在數據軟件更新中的報文。該方案應用診斷儀軟件相應功能,通過報文記錄,解析及腳本編輯,提供完整的ECU種子及進行相關通訊功能仿真。
接口程序開發編程軟件用于接口軟件的運行和監控,接口程序是符合診斷規范要求的一系列CAN總線指令,通過一般的文本編輯器可以對其進行編輯和修改;在對ECU進行數據軟件刷新時,這些指令集將在開發編程軟件或維修編程軟件環境下自動運行。在數據傳輸過程中,對于運行接口程序的計算機和需要進行軟件刷新的ECU而言,接口程序指令在發送后,根據指令接收方ECU反饋結果,接口程序進行相應程序跳轉和執行。理論上,在符合國家和行業規范的要求下,接口程序相關數據處理流程和語法都有嚴格定義[2],通過文本編輯器打開接口程序,找到定義和調用安全算法號的語句,將相應的算法號修改為需要測試的數值即可。當實際運行接口程序時,開發編程軟件對ECU的所有的指令操作和總線信息進行記錄,同時也將相關ECU的種子號和調用新算法號產生的密匙記錄下來。
ECU 仿真程序完全按照CAN總線軟件刷新步驟進行仿真。開發編程軟件指令發出是軟件本身的設定,從仿真軟件中得到正反饋,會進行下一步操作,反之,如果反饋信息不正確,會終止程序操作。根據這個特點,進行仿真軟件流程設計和軟件開發,具體流程如圖3所示。總線喚醒和診斷設備在線步驟是保持上位機和ECU之間通訊,為確保上位機識別出被訪問ECU的物理地址,需要反饋識別碼;在進入ECU編程模式前,需要確保ECU狀態正常,不受其他節點通訊干擾,需要清除ECU故障碼和關閉CAN總線上其他所有節點的通訊,所以需要模擬清除ECU 內部故障碼和關閉總線通訊節點使能的操作;接著反饋給上位機軟件狀態,確認ECU 是否刷新過;上位機會發送指令,讓ECU進入編程模式后,請求ECU的種子號,然后工程技術人員輸入種子號;最后上位機根據內部算法器和特定模塊的算法號,計算出對應的密匙。

圖3 接口程序仿真流程
汽車ECU密鑰仿真實現方法包括如下步驟。
1)根據實際需要對ECU在計算機中構建仿真模型,用來模擬真實ECU的實際運行情形。
作為優選,可以采用與汽車診斷儀相配套的集成開發工具來構建仿真模型,集成開發工具通常功能強大、開發效率高并且運行穩定性好。通常,工程技術人員可以在不具備或者欠缺編程語言知識的背景下,借助例如診斷儀軟件提供的自動化腳本來定義ECU的邏輯序列,從而實現對仿真模擬環境的精確構建。
2)將加密單元與計算機進行通訊連接。在現有技術中,通過設置在汽車ECU中的加密控件并根據所輸入的安全算法號和種子號生成密鑰,該加密處理過程由于涉及到電子模塊設計開發的核心技術,所以對于一般工程技術人員完全不可見。加密單元被設置成與ECU中加密控件具有同樣的加密處理業務規則實現與加密控件相同的密鑰生成功能。加密單元為連接在計算機外設接口上的加密鎖。
3)汽車診斷儀上的接口連接到計算機和車載總線上進行通訊。汽車診斷儀主要用于ECU仿真應用,通過USB接口連接到計算機上,并將車載總線接口通過雙絞線連接到數據鏈路連接器上,通過并行接口DB25連接到供電裝置上,接口連接如圖1所示。
4)完成連接設置之后,由工程技術人員、測試人員或者維護人員等在內的使用者根據實際需要,通過汽車診斷儀設定所需的安全算法號,并與計算機進行通訊向已經在計算機上運行的ECU仿真模型請求種子號,等待接收反饋的相應種子號,通過仿真技術使得反饋輸出過程與真實ECU的處理過程一致。
5)將安全算法號、反饋得到的種子號發送給加密單元,加密單元按照設定的加密處理規則并根據接收到的安全算法號、種子號生成相關聯的密鑰,這樣通過與加密單元通訊,解析獲得該密鑰,如此便仿真實現汽車ECU密鑰,不需要搭建真實ECU測試環境或者對ECU操作權限認定進行測試、驗證等,可以非常方便地將解析獲得的密鑰應用到工作中,從而滿足諸如SAE J2186等規范對于汽車診斷數據連接方面的安全性要求。
6)在汽車ECU密鑰仿真實現中,在一個優選情形下,可以另外設置步驟記錄得到的安全算法號、種子號和密鑰中的一個或多個;或者顯示得到的安全算法號、種子號和密鑰中的一個或多個;又或者同時記錄并顯示得到的安全算法號、種子號和密鑰中的一個或多個。通過以上步驟,能夠更好地觀測和使用這些數據。
針對工程技術人員所具備的技術背景和試驗設備,利用診斷儀軟件開發并運行仿真ECU腳本軟件,通過ECU種子號,仿真ECU任意種子號;通過ECU接口程序中算法號,利用開發編程軟件內部加密控件,直接運行仿真ECU接口程序,在開發編程軟件的報文中,可以得到算法號和種子號所對應的密匙。本方案具備開發設計效率高、使用可靠、應用便捷、節省費用、降低調試工作量和難度等諸多優點。
[1] ENHANCED E/E DIAGNOSTIC TEST MODES:SAE J2190-1993[S].
[2]羅峰,孫澤昌. 汽車CAN總線系統原理、設計與應用[M]. 北京:電子工業出版社,2010.
2017-07-31
1002-4581(2017)06-0012-05
U467.2:TP311
A
10.14175/j.issn.1002-4581.2017.06.004