曹明明 姚夕林 姜媛媛
摘 要:隨著汽車技術的不斷提高,汽車PEPS系統也對其診斷測試結果的速度、準確性、連續性提出了更高的要求,利用Vector公司開發的CANoe總線仿真軟件,對各種車身電子模塊進行模擬,建立具有改進AES算法認證加密的汽車PEPS系統的測試仿真環境。實際測試結果表明,該系統不僅可以在虛擬節點下進行模擬仿真測試,也可以在真實節點下進行實時測試,靈活有效地反映出汽車PEPS系統中各種電子模塊的總線通信情況,同時保證了故障診斷測試連續性和有效性。
關鍵詞:CANoe;PEPS系統;實時測試;診斷測試;AES算法
中圖分類號:TP206 文獻標志碼: A 文章編號:1005-2550(2014)02-0013-05
近年來隨著汽車電子技術迅猛發展,汽車無鑰匙進入和啟動(Passive Entry Passive Start)系統同樣得到了廣泛的應用,PEPS系統作為整個汽車電子技術的核心之一,在汽車技術不斷迅速發展技術背景下,對其診斷測試系統提出了更高的要求,在汽車測試診斷過程中PEPS系統需要和汽車內部其他電子系統進行大量的數據信息交流的同時構建出一個完整的系統用來模擬汽車電子單元的其他系統,在測試過程中測試方式過于復雜,汽車電子單元的異常模擬復雜度較高,都在一定程度上限制了PEPS診斷系統的應用與拓展。本文利用Vector公司開發的總線仿真工具CANoe軟件,開發出具有AES加密認證算法的汽車PEPS系統的測試仿真環境,為虛擬汽車電子系統測試系統提供了一個可靠的平臺,該系統具有極大的靈活性。
1 PEPS系統及CANoe開發工具
汽車PEPS系統即:汽車無鑰匙進入和啟動(Passive Entry Passive Start)系統,是采用先進的無線射頻識別(RFID)技術,通過自動匹配檢測車主是否攜帶相應汽車的有效鑰匙,從而自動完成汽車的解鎖上鎖等一系列操作流程。汽車PEPS系統不需要拿出車鑰匙對汽車進行解鎖或上鎖,當車主通過手握汽車門把手時,車內的天線會在車內自動搜索有效鑰匙。確認鑰匙在車內之后,就會對電子轉向柱鎖模塊(ESCL)及發動機引擎控制模塊(EMS)分別進行解鎖認證和啟動認證,當認證通過后就可以正常啟動車輛。
在汽車PEPS系統不斷完善和復雜化程度不斷加深的過程中,車身電子控制模塊本身更加精細,模塊內部之間分工愈加明確,都對汽車CAN總線通信網絡提出更高的要求,汽車PEPS系統故障診斷測試的重要性也日益凸顯。
利用CANoe軟件,對汽車PEPS系統的各種電子模塊進行系統仿真。該仿真系統能準確的顯示和分析汽車PEPS系統的通信情況,給測試人員提供很大便利。
CANoe軟件是德國Vector公司開發的一款汽車總線開發工具。它具有從功能需求分析到系統功能實現的整個系統的設計開發、仿真測試和評估等功能,本系統采用CANoe7.6,利用CANoe7.6自帶的數據庫管理功能CANdb++ editor、CAPL Browser以及Panel Designer模塊可以根據用戶需求設計出所需內容。包括控制面板的設計,報文中信號和消息的編輯、發送和接收條件等。CANoe軟件的仿真功能非常強大,它不僅可以對基于全部虛擬節點的總線仿真,真實物理節點與虛擬節點相結合的半實物通信仿真,還可以對全真實物理總線的通信進行實時分析與監控測試。通過CANoe軟件可以查看通信過程中的報文,而且可以對報文進行選擇性過濾,通過查看顯示的報文信息來掌握系統的運行狀況等。
2 PEPS系統仿真環境的建立
汽車PEPS系統的網絡結構模型有很多,系統結構模型拓撲圖中包括車身控制模塊(BCM),車輪防抱死模塊(ABS),電子轉向柱鎖模塊(ESCL),發動機引擎控制模塊(EMS),儀表模塊(MIU),擋位控制模塊(TCU),安全氣囊模塊(SDM)等ECU模塊。建立的汽車PEPS系統拓撲圖如圖1所示。該拓撲圖的應用是在全仿真模式下進行的,如果需要在真實節點下進行測試,將相應的仿真模塊禁掉(Block)即可。
圖1 汽車PEPS系統拓撲圖
2.1 程序設計
在CANoe軟件的仿真環境中,需要用CAPL語言對事件的觸發和響應進行編程,CAPL語言是一種類C語言,在各電子模塊的編程設計過程中,它的觸發條件有很多種,包括系統變量改變,總線消息發送和接收,環境變量變化,鍵盤輸入或者定時器溢出等。利用CANoe軟件CAPL語言程序,可以對仿真系統中各個節點進行編程設計。
電子轉向柱鎖模塊內部的CAPL語言設計如圖2所示。在message 0x45消息中,如果環境變量evTEST_ESCL_Auth_EN觸發時,當message 0x45消息中的信號PEPS_SUB_ID值為0x01,獲取環境變量中evTEST_ESCL_Auth_T1的值,同時設置定時器ESCL_Auth_t1的值為環境變量evTEST_ESCL_Auth_T1的值,如果message 0x45消息中的信號PEPS_SUB_ID值為0x02,獲取環境變量evTEST_ESCL_Auth_T2的值,設置定時器ESCL_Auth_t2的值為環境變量evTEST_ESCL_Auth_T2的值。
圖2 ESCL節點的編程設計
2.2 面板設計
為了使仿真效果更加形象直觀,CANoe軟件的仿真環境提供了一些仿真圖形界面。如圖3所示的汽車上鎖解鎖控制面板,圖中顯示了Driver Door和Passenger Door兩側門是開狀態,而Rear Left和Rear right兩側門是關閉狀態,中控鎖是開狀態,后備箱是關狀態。在測試過程中模擬汽車上鎖解鎖過程時,利用這個控制面板可以形象的模擬出汽車中控上鎖、解鎖的過程,以及前門、后門、后備箱的開關狀態。通過改變面板界面的圖形而改變相應面板對應的環境變量的值,主觀地對仿真條件進行配置,使測試人員可以靈活高效地進行診斷測試。endprint
圖3 汽車上鎖解鎖控制面板
2.3 查看報文
除了通過操作控制面板了解車身電子模塊的狀態,還可以通過接收和發送消息,根據報文的ID來查看報文,從而詳細了解車身電子模塊的狀態。不管是正常的報文還是有錯誤故障信息的報文,都會詳細地顯示出相應的信息,使測試人員迅速了解系統狀態。實際表明,測試人員在測試過程中主要是通過查看報文來進行故障診斷測試。
3 PEPS系統的認證算法
PEPS系統與傳統的啟動系統不同之處主要體現在汽車的門把手和啟動按鈕兩部分上。因此,PEPS系統的認證算法的作用主要表現在汽車門把手和啟動按鈕的觸發與響應的過程中。PEPS系統的認證算法采用的是在全世界廣泛使用的,加密安全性極高的AES算法。
3.1 改進的AES算法
AES算法是源于Daemen和Rijmen設計的Rijndael密碼算法。AES 算法的數據分組的長度為128 bit,密鑰長度有三種128 bit、196 bit和256 bit。AES的加密過程可以分為3個步驟:初始密鑰加法,Nr-1 次輪變換和結尾輪變換。
本文研究的PEPS系統的認證算法是一種改進的AES算法。該算法主要應用在PEPS系統的認證過程中,主要有加密鑰和輪變換兩步,省去了算法解密的過程,采用的是隨機加密的方法,從而使算法更加快速和可靠。在認證過程中,如果加密算法相同,所需認證的雙方加密后的數據也是相同的,在認證時AES加密認證的過程如下:
第一步:加密鑰。
首先生成一個8位的隨機數:
Byte0 Byte1 Byte2 Byte3
Byte4 Byte5 Byte6 Byte7
取其中的第二位到第五位四位B(x):
Byte1 Byte2 Byte3 Byte4
然后與上12位的固定指令碼,生成一個16位的密鑰,密鑰字的個數Nk=4,數據塊中字的個數Nb=4,與其對應的算法的輪數是Nr=10。
第二步:輪變換的操作一般都比較復雜,包括以下四步。
Round ()
{
ByteSub ();
ShiftRow ();
MisColumn ();
AddRoundKey ()
}
S盒變換 (ByteSub),是對數據進行一種不可逆的非線性置換;行移位 (ShiftRow),是以“行”為單位的線性變換,第一行不變,其它行依次進行循環移動,位移量的大小與加密塊中字的個數Nb有關,使其與一簡單的矩陣相乘;列混合 (MisColumn),運算結果相對來說比較復雜,與一較復雜矩陣相乘得到另一矩陣;加循環密鑰 (AddRoundKey),是將循環密鑰與上層的結果進行異或運算,相乘得到,然后進行128位的加密操作。
3.2 PEPS系統AES算法的認證過程
圖4 PEPS系統中AES算法認證過程流程圖
PEPS系統啟動時,需要分別與電子轉向柱鎖模塊 (ESCL) 及發動機控制模塊 (EMS) 之間進行認證,而在CANoe仿真環境條件下,上述模塊間的認證算法的編程部分都是設計在相應模塊內部的。當汽車PEPS系統啟動的有效鑰匙在汽車認證范圍內時,按啟動按鈕啟動汽車,汽車PEPS系統首先需要對電子轉向柱鎖模塊(ESCL)進行認證,汽車PEPS系統首先發一幀認證消息到汽車CAN總線上,電子轉向柱鎖模塊(ESCL)接收到這幀認證消息后生成一幀隨機數,并將這幀隨機數發到CAN總線上,汽車PEPS系統從CAN總線上接收這幀隨機數,汽車PEPS系統與電子轉向柱鎖模塊(ESCL)都經過相應的AES加密算法加密之后,再對二者的加密結果進行對比,如果AES加密算法相同,則計算結果相同,認證成功;否則認證失敗。EMS模塊認證過程同樣如此。認證過程的具體流程如圖4所示。
4 PEPS系統故障診斷測試
在測試過程中,當有故障或錯誤出現時,不管是系統故障還是車身電子模塊的故障都會在報文中詳細地顯示出來。通過報文的ID可以查找并迅速查看相應的報文了解診斷測試情況。
PEPS系統的診斷測試主要體現在門把手的PE(Passive Entry)和PS(Passive Start)及智能鑰匙的RKE(Remote Keyless Entry)部分的測試。PE測試的報文實例包括Lock、Unlock的報文顯示,如圖5所示。PS測試報文實例如圖6所示。RKE測試報文實例如圖7所示。如果通信過程中出現故障、發送請求錯誤、請求的條件和處理的結果不正確等都會在報文中顯示,錯誤信息在報文中會以紅色字體顯示,方便測試人員及時了解故障情況,如圖8 故障保文顯示。
a) Lock報文
b) Unlock報文
圖5 PE中Lock、Unlock報文顯示
a) Start failure: No UID Found
b) Start State
圖6 Ps的報文顯示
a) Lock Cmd
b) Unlock Cmd
c) Tailgate release Cmd
d) Panic Cmd
圖7 RKE的報文顯示
圖8 故障報文顯示
5 結論
基于CANoe軟件建立的汽車PEPS系統診斷測試的仿真環境,能真實有效地模擬出車載網絡的通信情況,對車載總線上的診斷信息進行快速精準的采集,分析和管理,不僅大大降低了測試成本,還提高了系統測試的準確性,在汽車PEPS系統發展和完善過程中起到了非常重要的作用。
參考文獻:
[1]Konrad Etschberger. Controller Area Network[M]. Weingarten: IXXAT Automation GmbH, 2000.
[2]Vector Informatik GmbH. CANoe Installation Guide,CANoe User Guide, CANdb++ User Guide[M]. Eberdingen: SATZTEAM Fotosatz & Neue Medien Gmbh, 2002.
[3]黎善斌.基于網絡控制系統的CAN實時性能研究[J].化工自動化及儀表,2003,30(4):1-6.
[4]朱彬,劉新寧.基于AMBA總線的AES算法設計[J].信息化研究,2009(5):47-50.
[5]魏嘉銀,呂虹,秦永彬.一種基于AES算法的通信信息加密傳輸方案[J].計算機與數字工程,2011(10):121-124.endprint
圖3 汽車上鎖解鎖控制面板
2.3 查看報文
除了通過操作控制面板了解車身電子模塊的狀態,還可以通過接收和發送消息,根據報文的ID來查看報文,從而詳細了解車身電子模塊的狀態。不管是正常的報文還是有錯誤故障信息的報文,都會詳細地顯示出相應的信息,使測試人員迅速了解系統狀態。實際表明,測試人員在測試過程中主要是通過查看報文來進行故障診斷測試。
3 PEPS系統的認證算法
PEPS系統與傳統的啟動系統不同之處主要體現在汽車的門把手和啟動按鈕兩部分上。因此,PEPS系統的認證算法的作用主要表現在汽車門把手和啟動按鈕的觸發與響應的過程中。PEPS系統的認證算法采用的是在全世界廣泛使用的,加密安全性極高的AES算法。
3.1 改進的AES算法
AES算法是源于Daemen和Rijmen設計的Rijndael密碼算法。AES 算法的數據分組的長度為128 bit,密鑰長度有三種128 bit、196 bit和256 bit。AES的加密過程可以分為3個步驟:初始密鑰加法,Nr-1 次輪變換和結尾輪變換。
本文研究的PEPS系統的認證算法是一種改進的AES算法。該算法主要應用在PEPS系統的認證過程中,主要有加密鑰和輪變換兩步,省去了算法解密的過程,采用的是隨機加密的方法,從而使算法更加快速和可靠。在認證過程中,如果加密算法相同,所需認證的雙方加密后的數據也是相同的,在認證時AES加密認證的過程如下:
第一步:加密鑰。
首先生成一個8位的隨機數:
Byte0 Byte1 Byte2 Byte3
Byte4 Byte5 Byte6 Byte7
取其中的第二位到第五位四位B(x):
Byte1 Byte2 Byte3 Byte4
然后與上12位的固定指令碼,生成一個16位的密鑰,密鑰字的個數Nk=4,數據塊中字的個數Nb=4,與其對應的算法的輪數是Nr=10。
第二步:輪變換的操作一般都比較復雜,包括以下四步。
Round ()
{
ByteSub ();
ShiftRow ();
MisColumn ();
AddRoundKey ()
}
S盒變換 (ByteSub),是對數據進行一種不可逆的非線性置換;行移位 (ShiftRow),是以“行”為單位的線性變換,第一行不變,其它行依次進行循環移動,位移量的大小與加密塊中字的個數Nb有關,使其與一簡單的矩陣相乘;列混合 (MisColumn),運算結果相對來說比較復雜,與一較復雜矩陣相乘得到另一矩陣;加循環密鑰 (AddRoundKey),是將循環密鑰與上層的結果進行異或運算,相乘得到,然后進行128位的加密操作。
3.2 PEPS系統AES算法的認證過程
圖4 PEPS系統中AES算法認證過程流程圖
PEPS系統啟動時,需要分別與電子轉向柱鎖模塊 (ESCL) 及發動機控制模塊 (EMS) 之間進行認證,而在CANoe仿真環境條件下,上述模塊間的認證算法的編程部分都是設計在相應模塊內部的。當汽車PEPS系統啟動的有效鑰匙在汽車認證范圍內時,按啟動按鈕啟動汽車,汽車PEPS系統首先需要對電子轉向柱鎖模塊(ESCL)進行認證,汽車PEPS系統首先發一幀認證消息到汽車CAN總線上,電子轉向柱鎖模塊(ESCL)接收到這幀認證消息后生成一幀隨機數,并將這幀隨機數發到CAN總線上,汽車PEPS系統從CAN總線上接收這幀隨機數,汽車PEPS系統與電子轉向柱鎖模塊(ESCL)都經過相應的AES加密算法加密之后,再對二者的加密結果進行對比,如果AES加密算法相同,則計算結果相同,認證成功;否則認證失敗。EMS模塊認證過程同樣如此。認證過程的具體流程如圖4所示。
4 PEPS系統故障診斷測試
在測試過程中,當有故障或錯誤出現時,不管是系統故障還是車身電子模塊的故障都會在報文中詳細地顯示出來。通過報文的ID可以查找并迅速查看相應的報文了解診斷測試情況。
PEPS系統的診斷測試主要體現在門把手的PE(Passive Entry)和PS(Passive Start)及智能鑰匙的RKE(Remote Keyless Entry)部分的測試。PE測試的報文實例包括Lock、Unlock的報文顯示,如圖5所示。PS測試報文實例如圖6所示。RKE測試報文實例如圖7所示。如果通信過程中出現故障、發送請求錯誤、請求的條件和處理的結果不正確等都會在報文中顯示,錯誤信息在報文中會以紅色字體顯示,方便測試人員及時了解故障情況,如圖8 故障保文顯示。
a) Lock報文
b) Unlock報文
圖5 PE中Lock、Unlock報文顯示
a) Start failure: No UID Found
b) Start State
圖6 Ps的報文顯示
a) Lock Cmd
b) Unlock Cmd
c) Tailgate release Cmd
d) Panic Cmd
圖7 RKE的報文顯示
圖8 故障報文顯示
5 結論
基于CANoe軟件建立的汽車PEPS系統診斷測試的仿真環境,能真實有效地模擬出車載網絡的通信情況,對車載總線上的診斷信息進行快速精準的采集,分析和管理,不僅大大降低了測試成本,還提高了系統測試的準確性,在汽車PEPS系統發展和完善過程中起到了非常重要的作用。
參考文獻:
[1]Konrad Etschberger. Controller Area Network[M]. Weingarten: IXXAT Automation GmbH, 2000.
[2]Vector Informatik GmbH. CANoe Installation Guide,CANoe User Guide, CANdb++ User Guide[M]. Eberdingen: SATZTEAM Fotosatz & Neue Medien Gmbh, 2002.
[3]黎善斌.基于網絡控制系統的CAN實時性能研究[J].化工自動化及儀表,2003,30(4):1-6.
[4]朱彬,劉新寧.基于AMBA總線的AES算法設計[J].信息化研究,2009(5):47-50.
[5]魏嘉銀,呂虹,秦永彬.一種基于AES算法的通信信息加密傳輸方案[J].計算機與數字工程,2011(10):121-124.endprint
圖3 汽車上鎖解鎖控制面板
2.3 查看報文
除了通過操作控制面板了解車身電子模塊的狀態,還可以通過接收和發送消息,根據報文的ID來查看報文,從而詳細了解車身電子模塊的狀態。不管是正常的報文還是有錯誤故障信息的報文,都會詳細地顯示出相應的信息,使測試人員迅速了解系統狀態。實際表明,測試人員在測試過程中主要是通過查看報文來進行故障診斷測試。
3 PEPS系統的認證算法
PEPS系統與傳統的啟動系統不同之處主要體現在汽車的門把手和啟動按鈕兩部分上。因此,PEPS系統的認證算法的作用主要表現在汽車門把手和啟動按鈕的觸發與響應的過程中。PEPS系統的認證算法采用的是在全世界廣泛使用的,加密安全性極高的AES算法。
3.1 改進的AES算法
AES算法是源于Daemen和Rijmen設計的Rijndael密碼算法。AES 算法的數據分組的長度為128 bit,密鑰長度有三種128 bit、196 bit和256 bit。AES的加密過程可以分為3個步驟:初始密鑰加法,Nr-1 次輪變換和結尾輪變換。
本文研究的PEPS系統的認證算法是一種改進的AES算法。該算法主要應用在PEPS系統的認證過程中,主要有加密鑰和輪變換兩步,省去了算法解密的過程,采用的是隨機加密的方法,從而使算法更加快速和可靠。在認證過程中,如果加密算法相同,所需認證的雙方加密后的數據也是相同的,在認證時AES加密認證的過程如下:
第一步:加密鑰。
首先生成一個8位的隨機數:
Byte0 Byte1 Byte2 Byte3
Byte4 Byte5 Byte6 Byte7
取其中的第二位到第五位四位B(x):
Byte1 Byte2 Byte3 Byte4
然后與上12位的固定指令碼,生成一個16位的密鑰,密鑰字的個數Nk=4,數據塊中字的個數Nb=4,與其對應的算法的輪數是Nr=10。
第二步:輪變換的操作一般都比較復雜,包括以下四步。
Round ()
{
ByteSub ();
ShiftRow ();
MisColumn ();
AddRoundKey ()
}
S盒變換 (ByteSub),是對數據進行一種不可逆的非線性置換;行移位 (ShiftRow),是以“行”為單位的線性變換,第一行不變,其它行依次進行循環移動,位移量的大小與加密塊中字的個數Nb有關,使其與一簡單的矩陣相乘;列混合 (MisColumn),運算結果相對來說比較復雜,與一較復雜矩陣相乘得到另一矩陣;加循環密鑰 (AddRoundKey),是將循環密鑰與上層的結果進行異或運算,相乘得到,然后進行128位的加密操作。
3.2 PEPS系統AES算法的認證過程
圖4 PEPS系統中AES算法認證過程流程圖
PEPS系統啟動時,需要分別與電子轉向柱鎖模塊 (ESCL) 及發動機控制模塊 (EMS) 之間進行認證,而在CANoe仿真環境條件下,上述模塊間的認證算法的編程部分都是設計在相應模塊內部的。當汽車PEPS系統啟動的有效鑰匙在汽車認證范圍內時,按啟動按鈕啟動汽車,汽車PEPS系統首先需要對電子轉向柱鎖模塊(ESCL)進行認證,汽車PEPS系統首先發一幀認證消息到汽車CAN總線上,電子轉向柱鎖模塊(ESCL)接收到這幀認證消息后生成一幀隨機數,并將這幀隨機數發到CAN總線上,汽車PEPS系統從CAN總線上接收這幀隨機數,汽車PEPS系統與電子轉向柱鎖模塊(ESCL)都經過相應的AES加密算法加密之后,再對二者的加密結果進行對比,如果AES加密算法相同,則計算結果相同,認證成功;否則認證失敗。EMS模塊認證過程同樣如此。認證過程的具體流程如圖4所示。
4 PEPS系統故障診斷測試
在測試過程中,當有故障或錯誤出現時,不管是系統故障還是車身電子模塊的故障都會在報文中詳細地顯示出來。通過報文的ID可以查找并迅速查看相應的報文了解診斷測試情況。
PEPS系統的診斷測試主要體現在門把手的PE(Passive Entry)和PS(Passive Start)及智能鑰匙的RKE(Remote Keyless Entry)部分的測試。PE測試的報文實例包括Lock、Unlock的報文顯示,如圖5所示。PS測試報文實例如圖6所示。RKE測試報文實例如圖7所示。如果通信過程中出現故障、發送請求錯誤、請求的條件和處理的結果不正確等都會在報文中顯示,錯誤信息在報文中會以紅色字體顯示,方便測試人員及時了解故障情況,如圖8 故障保文顯示。
a) Lock報文
b) Unlock報文
圖5 PE中Lock、Unlock報文顯示
a) Start failure: No UID Found
b) Start State
圖6 Ps的報文顯示
a) Lock Cmd
b) Unlock Cmd
c) Tailgate release Cmd
d) Panic Cmd
圖7 RKE的報文顯示
圖8 故障報文顯示
5 結論
基于CANoe軟件建立的汽車PEPS系統診斷測試的仿真環境,能真實有效地模擬出車載網絡的通信情況,對車載總線上的診斷信息進行快速精準的采集,分析和管理,不僅大大降低了測試成本,還提高了系統測試的準確性,在汽車PEPS系統發展和完善過程中起到了非常重要的作用。
參考文獻:
[1]Konrad Etschberger. Controller Area Network[M]. Weingarten: IXXAT Automation GmbH, 2000.
[2]Vector Informatik GmbH. CANoe Installation Guide,CANoe User Guide, CANdb++ User Guide[M]. Eberdingen: SATZTEAM Fotosatz & Neue Medien Gmbh, 2002.
[3]黎善斌.基于網絡控制系統的CAN實時性能研究[J].化工自動化及儀表,2003,30(4):1-6.
[4]朱彬,劉新寧.基于AMBA總線的AES算法設計[J].信息化研究,2009(5):47-50.
[5]魏嘉銀,呂虹,秦永彬.一種基于AES算法的通信信息加密傳輸方案[J].計算機與數字工程,2011(10):121-124.endprint