01$10會話控制請求服務(wù)
ECU在正常工作時會處于某一個會話模式下,上電后會自動進入默認(rèn)會話模式,所以ECU啟動后我們不需要輸入$10 01來進入該會話模式。ECU的不同會話模式間存在一定的狀態(tài)轉(zhuǎn)換關(guān)系規(guī)則。
初次接觸會話控制模式可能不太理解這個服務(wù)的含義和用途,我們通過一個例子來進行類比。例如:我們將ECU之間的通訊類比成不同人員之間的對話。兩個人在公共場所暢所欲言,隨意討論非私密性的話題,這個場景類似默認(rèn)會話,不會對安全性有要求,無需刻意尋找專門使用場所,即不需要專門會話控制進入此模式,上電即默認(rèn)進入。如果兩人想討論隱秘點的話題,不想其他不相關(guān)人員知道,于是換個環(huán)境,從公共場所進入了單獨的會議室,這個過程可以類比成從默認(rèn)會話進入了擴展會話,進入會議室后為了確認(rèn)對方是本人沒被冒充,進行識別鑒權(quán)詢問口令“天王蓋地虎”,查看對方能不能答出“小雞燉蘑菇”,認(rèn)證鑒權(quán)的這個附加過程就屬于跟$10服務(wù)配合使用的安全接入請求服務(wù)$27,溝通結(jié)束退出會議室回到公共區(qū)域,這個過程就是從擴展會話退出到默認(rèn)會話的過程。大家可能有疑問為何沒提及編程會話,這個模式我們會另外講解。
1.1 會話模式間的轉(zhuǎn)換
前面的例子中我們可以看到不同會話模式間的切換存在一定的邏輯關(guān)系。下圖顯示的就是一個不同會話間轉(zhuǎn)換示例圖,需要注意的是不同項目中對于進入編程會話通常會有不同的設(shè)計要求,具體項目中會話間跳轉(zhuǎn)關(guān)系必須依據(jù)項目的規(guī)范文件。
圖 1
1)默認(rèn)會話
設(shè)備上電后自動進入默認(rèn)會話模式,從圖中我們可以看出在默認(rèn)會話模式下的切換關(guān)系。
本模式重新進入:可以通過$10 01再次進入默認(rèn)會話,通過$11 01、$11 03復(fù)位服務(wù)重啟進入默認(rèn)會話。
本模式進入其他模式:默認(rèn)會話模式可以通過$10 02進入編程會話模式,在有些項目中默認(rèn)會話是不能直接進入編程會話模式,具體項目中是否能夠支持需要查閱項目產(chǎn)品的診斷技術(shù)規(guī)范;默認(rèn)會話模式下還可以通過$10 03進入擴展會話模式。
2)編程會話
啟動編程會話ECU會進入boot模式,進入boot模式后ECU可以進行固件的更新。boot的更新可以通過Jtag接口使用工具進行燒錄,相對來說Jtag接口的權(quán)限等級比較高,可以通過工具直接修改存儲空間中對應(yīng)地址的數(shù)據(jù)信息。實際項目會使用CAN網(wǎng)絡(luò)進行軟件刷寫,商用階段去除Jtag接口,這樣處理的話安全性會得到一定保障。同樣的在boot模式下可以刷寫固件,那很多診斷服務(wù)在boot下也可以正常執(zhí)行,如配合刷寫的$11、$22、$2E、$31、$28、$34、$36、$37、$85等服務(wù)。
本模式重新進入:處于編程會話模式下,可以通過$10 02再次進入編程會話。
本模式進入其他模式:編程會話狀態(tài)下可以通過$10 01進入默認(rèn)會話,通過$11 01服務(wù)復(fù)位ECU來進入默認(rèn)會話;編程會話不能進入擴展會話模式。
3)擴展會話
某些服務(wù)需要擴展會話的支持才能執(zhí)行,擴展會話下如果不配合使用$3E服務(wù),ECU會在數(shù)秒后自動退出擴展會話模式進入到默認(rèn)會話模式。
本模式重新進入:處于擴展會話模式下,可以通過$10 03再次進入擴展會話。
本模式進入其他模式:在不使用$3E服務(wù)保持會話時,可以通過超時自動退出到默認(rèn)會話模式,可以通過$10 01進入默認(rèn)會話,通過$11 01、11 03服務(wù)復(fù)位ECU來進入默認(rèn)會話;在某些項目中僅支持$10 03擴展模式下,才能進入$10 02編程會話。
1.2 $10服務(wù)請求報文
$10服務(wù)的請求報文格式總體上跟上篇中描述服務(wù)發(fā)送報文內(nèi)容一致。子服務(wù)通常是前文講的01默認(rèn)會話、02編程會話、03擴展會話,當(dāng)然規(guī)范中還存在00保留字段、04安全系統(tǒng)診斷會話、05-3F保留、40-5F主機廠自定義字段、60-7E零部件供應(yīng)商自定義字段等等。實際上主機廠可以根據(jù)項目情況進行高自由度的內(nèi)部自定義,因為這些定義的范圍都只是在當(dāng)前項目適用,為了設(shè)計上的高復(fù)用性和減少設(shè)計研發(fā)工作量,要適當(dāng)考慮自定義部分的占比。發(fā)送報文幀結(jié)構(gòu)如下圖:
圖 2舉例,$10服務(wù)的請求報文通常為:$10 01、$10 02、$10 03,當(dāng)然根據(jù)項目實際情況可以進行自定義子服務(wù)。1.3 $10服務(wù)響應(yīng)報文$10服務(wù)的響應(yīng)報文格式總體上跟上篇中報文發(fā)送內(nèi)容格式一致。正響應(yīng)報文的首字節(jié)服務(wù)號根據(jù)協(xié)議變?yōu)?50,第二字節(jié)對應(yīng)請求報文的子功能。第3至4字節(jié)屬性字段是跟ECU收到報文后發(fā)送第一幀響應(yīng)報文間隔時間相關(guān)的計時器設(shè)置數(shù)值,第5至6字節(jié)是NRC中0x78否定響應(yīng)報文發(fā)送和下一個消息發(fā)送間隔時間相關(guān)的計時器設(shè)置數(shù)值。響應(yīng)報文幀的結(jié)構(gòu)圖如下所示:
圖 3
舉例,$10服務(wù)的響應(yīng)報文通常為:$50 01、$50 02、$50 03。
$10服務(wù)的否定響應(yīng)格式,可以參考上篇文章服務(wù)響應(yīng)總體中負(fù)響應(yīng)部分介紹,所有UDS服務(wù)的負(fù)響應(yīng)故障代碼表在項目中均是通用的。
02 27安全控制服務(wù)
在本篇當(dāng)中,我們之所以把這兩個服務(wù)一起來進行介紹,是因為通常$27服務(wù)使用的前提就是先進入$10服務(wù)的擴展會話,反過來講$10服務(wù)很少單獨使用,一般都是跟$27服務(wù)配合先完成安全驗證,然后其他服務(wù)才能在一定的會話模式和安全接入等級中正常使用。我們在前篇介紹過主機廠和零部件廠商可以通過不同的UDS服務(wù)對ECU執(zhí)行很多操作,這些操作有的會修改ECU配置,有的可以重啟設(shè)備,有的可以讀取信息等等。顯而易見的是,不同操作失誤造成的后果嚴(yán)重程度是不一樣的,因此通過安全認(rèn)證就很有必要。我們通常把默認(rèn)狀態(tài)下的ECU叫做鎖定狀態(tài)(Locked),成功執(zhí)行完成$27服務(wù)后的狀態(tài)叫做解鎖(Unlock),只有在解鎖狀態(tài)下才能進行數(shù)據(jù)寫入、修改等等操作。
每次$27服務(wù)的安全認(rèn)證過程在Tester和ECU間會有兩輪的信息報文交互,大體的交互過程如下圖所示:
圖 42.1 請求報文
$27服務(wù)請求報文格式總體上跟上篇中UDS請求報文介紹一致,在交互過程圖中我們可以看到$27服務(wù)發(fā)送了2次請求報文。
1)Seed請求報文
$27服務(wù)開始時,第1條發(fā)送報文是用于向ECU請求獲取seed,seed通常由ECU根據(jù)算法隨機生成(不會是固定數(shù)值)。Tester獲取到seed后根據(jù)定義的算法算出key。$27服務(wù)根據(jù)項目診斷規(guī)范要求通常會有幾個不同的安全級別(一般3個足夠了),不同級別的區(qū)分通過報文第2字節(jié)子服務(wù),即上圖中2n-1字段來定義,通常有0x1、0x 3、0x 5、0x 7-0x 41(奇數(shù))都可以由主機廠根據(jù)實際情況自定義選擇,后面的0x43-0x7F很多用于預(yù)留,當(dāng)然主機廠想用于自定義也不是不可以。
舉例,本報文通常有$27 01、$27 05 、$27 09等等用于不同級別安全認(rèn)證服務(wù)。具體安全等級個數(shù)和對應(yīng)的子功能號均根據(jù)項目實際情況可以自定義實現(xiàn)。
2)Send key報文
$27服務(wù)的第2條發(fā)送報文是用于將計算好的key發(fā)送給ECU,key的計算都是基于和ECU使用的相同算法,以及ECU發(fā)出的seed。報文的第2字節(jié)子功能值跟第一條請求報文相關(guān),通常是第1條報文子功能值加1,所以本報文的子服務(wù)為偶數(shù)。報文第3至6字節(jié)即為附帶的key。
舉例,本報文通常有27 02 XX XX XX XX、27 06 XX XX XX XX、27 0A XX XX XX XX。
2.2 響應(yīng)報文
與請求報文相對應(yīng),$27服務(wù)的響應(yīng)報文也為2條。響應(yīng)報文的格式整體上跟上篇文章介紹的響應(yīng)報文格式一致。
1)Send seed響應(yīng)報文
$27服務(wù)ECU的第1條響應(yīng)報文目的是向Tester發(fā)送seed,seed是一串隨機數(shù),長度由具體項目規(guī)范確定,seed的產(chǎn)生是ECU根據(jù)內(nèi)置的算法隨機產(chǎn)生的。ECU將seed發(fā)送給Tester時,本身也會根據(jù)seed值通過算法得出key值。
舉例,本報文通常有67 01 XX XX XX XX、67 05 XX XX XX XX、67 09 XX XX XX XX。
2)解鎖確認(rèn)報文
解鎖成功正響應(yīng)報文,$27服務(wù)ECU的第2條響應(yīng)報文,是ECU根據(jù)Tester發(fā)送過來的key,對比本身基于同樣seed,同樣算法計算出的key值,在兩個key值相等的情況下,ECU通過安全認(rèn)證服務(wù),向Tester發(fā)送正響應(yīng),通知進入解鎖狀態(tài)成功。
舉例,本報文通常有$67 02、$67 06、$67 0A。
3)負(fù)響應(yīng)
負(fù)響應(yīng)的報文格式可以參考上篇的相關(guān)章節(jié),負(fù)響應(yīng)NRC代碼表一般在項目中是通用的。
03總結(jié)
$10服務(wù)和$27服務(wù)通常是配套使用的。
通過上面的描述我們可以看到$27服務(wù)用來做安全等級認(rèn)證,有幾個關(guān)鍵的要點。一是seed計算,因為seed用于不同安全等級的key計算,且必須做好一定強度的防破解設(shè)計,所以通常情況下都會根據(jù)當(dāng)前時間結(jié)合其他固定值,通過內(nèi)部設(shè)計的算法來計算獲得一串偽隨機數(shù),將這串偽隨機數(shù)作為seed使用。二是key的計算方法,對應(yīng)不同的安全認(rèn)證等級,基于seed來計算key,算法在加密復(fù)雜度和數(shù)據(jù)交換速度之間做衡量。
用于$27服務(wù)認(rèn)證的這套算法屬于主機廠的秘密等級較高的信息,主機廠對零部件供應(yīng)商釋放時通常是以DLL庫文件的方法進行發(fā)布,并釋放調(diào)用方法的接口。
04測試要點
對于$10服務(wù)的測試注意點在于:
· 不同模式間的轉(zhuǎn)換實現(xiàn)是否跟規(guī)范要求一致;
· 其他服務(wù)在不同狀態(tài)下的支持情況是否符合規(guī)范要求。
對于$27服務(wù)的測試注意點在于:
算法本身及dll文件一般都經(jīng)過網(wǎng)絡(luò)架構(gòu)組內(nèi)部測試才發(fā)布,不需要過多關(guān)注,需要測試注意的是零部件廠商對于key的計算,在項目初期經(jīng)常會碰到大小端和移位導(dǎo)致的同樣算法key不一致的情況。
審核編輯:湯梓紅
-
ecu
+關(guān)注
關(guān)注
14文章
892瀏覽量
54754 -
安全控制
+關(guān)注
關(guān)注
0文章
9瀏覽量
2100
原文標(biāo)題:車載ECU嵌入式設(shè)備的診斷測試 - 會話和安全控制
文章出處:【微信號:智能汽車電子與軟件,微信公眾號:智能汽車電子與軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
ECU的啟動順序
BLE定制服務(wù)中心+外設(shè)示例
Alljoyn服務(wù)器框架2總線及會話
X86主板定制服務(wù)
怎么用key0,key2控制服務(wù)器端和客戶端知道有數(shù)據(jù)發(fā)送請求的?
BLE服務(wù)類型有沒有辦法強制服務(wù)成為主要服務(wù)?
基于QoS延時參數(shù)的服務(wù)接納控制算法
Web應(yīng)用程序會話安全模塊的設(shè)計
基于屬性的Web服務(wù)安全訪問控制方案
什么是SIP終端/IMS服務(wù)控制接口
Web服務(wù)訪問控制策略合成
![Web<b class='flag-5'>服務(wù)</b>訪問<b class='flag-5'>控制</b>策略合成](https://file.elecfans.com/web1/M00/46/1E/pIYBAFqTcDSAQr8wAACeDRVX5us973.jpg)
評論