0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ECU的會(huì)話控制請(qǐng)求服務(wù)和安全控制服務(wù)

智能汽車電子與軟件 ? 來源:鑒源實(shí)驗(yàn)室 ? 作者:李偉 ? 2022-10-18 11:06 ? 次閱讀

01$10會(huì)話控制請(qǐng)求服務(wù)

ECU在正常工作時(shí)會(huì)處于某一個(gè)會(huì)話模式下,上電后會(huì)自動(dòng)進(jìn)入默認(rèn)會(huì)話模式,所以ECU啟動(dòng)后我們不需要輸入$10 01來進(jìn)入該會(huì)話模式。ECU的不同會(huì)話模式間存在一定的狀態(tài)轉(zhuǎn)換關(guān)系規(guī)則。

初次接觸會(huì)話控制模式可能不太理解這個(gè)服務(wù)的含義和用途,我們通過一個(gè)例子來進(jìn)行類比。例如:我們將ECU之間的通訊類比成不同人員之間的對(duì)話。兩個(gè)人在公共場所暢所欲言,隨意討論非私密性的話題,這個(gè)場景類似默認(rèn)會(huì)話,不會(huì)對(duì)安全性有要求,無需刻意尋找專門使用場所,即不需要專門會(huì)話控制進(jìn)入此模式,上電即默認(rèn)進(jìn)入。如果兩人想討論隱秘點(diǎn)的話題,不想其他不相關(guān)人員知道,于是換個(gè)環(huán)境,從公共場所進(jìn)入了單獨(dú)的會(huì)議室,這個(gè)過程可以類比成從默認(rèn)會(huì)話進(jìn)入了擴(kuò)展會(huì)話,進(jìn)入會(huì)議室后為了確認(rèn)對(duì)方是本人沒被冒充,進(jìn)行識(shí)別鑒權(quán)詢問口令“天王蓋地虎”,查看對(duì)方能不能答出“小雞燉蘑菇”,認(rèn)證鑒權(quán)的這個(gè)附加過程就屬于跟$10服務(wù)配合使用的安全接入請(qǐng)求服務(wù)$27,溝通結(jié)束退出會(huì)議室回到公共區(qū)域,這個(gè)過程就是從擴(kuò)展會(huì)話退出到默認(rèn)會(huì)話的過程。大家可能有疑問為何沒提及編程會(huì)話,這個(gè)模式我們會(huì)另外講解。

1.1 會(huì)話模式間的轉(zhuǎn)換

前面的例子中我們可以看到不同會(huì)話模式間的切換存在一定的邏輯關(guān)系。下圖顯示的就是一個(gè)不同會(huì)話間轉(zhuǎn)換示例圖,需要注意的是不同項(xiàng)目中對(duì)于進(jìn)入編程會(huì)話通常會(huì)有不同的設(shè)計(jì)要求,具體項(xiàng)目中會(huì)話間跳轉(zhuǎn)關(guān)系必須依據(jù)項(xiàng)目的規(guī)范文件。

d267ca84-4dee-11ed-a3b6-dac502259ad0.png

圖 1

1)默認(rèn)會(huì)話

設(shè)備上電后自動(dòng)進(jìn)入默認(rèn)會(huì)話模式,從圖中我們可以看出在默認(rèn)會(huì)話模式下的切換關(guān)系。

本模式重新進(jìn)入:可以通過$10 01再次進(jìn)入默認(rèn)會(huì)話,通過$11 01、$11 03復(fù)位服務(wù)重啟進(jìn)入默認(rèn)會(huì)話。

本模式進(jìn)入其他模式:默認(rèn)會(huì)話模式可以通過$10 02進(jìn)入編程會(huì)話模式,在有些項(xiàng)目中默認(rèn)會(huì)話是不能直接進(jìn)入編程會(huì)話模式,具體項(xiàng)目中是否能夠支持需要查閱項(xiàng)目產(chǎn)品的診斷技術(shù)規(guī)范;默認(rèn)會(huì)話模式下還可以通過$10 03進(jìn)入擴(kuò)展會(huì)話模式。

2)編程會(huì)話

啟動(dòng)編程會(huì)話ECU會(huì)進(jìn)入boot模式,進(jìn)入boot模式后ECU可以進(jìn)行固件的更新。boot的更新可以通過Jtag接口使用工具進(jìn)行燒錄,相對(duì)來說Jtag接口的權(quán)限等級(jí)比較高,可以通過工具直接修改存儲(chǔ)空間中對(duì)應(yīng)地址的數(shù)據(jù)信息。實(shí)際項(xiàng)目會(huì)使用CAN網(wǎng)絡(luò)進(jìn)行軟件刷寫,商用階段去除Jtag接口,這樣處理的話安全性會(huì)得到一定保障。同樣的在boot模式下可以刷寫固件,那很多診斷服務(wù)在boot下也可以正常執(zhí)行,如配合刷寫的$11、$22、$2E、$31、$28、$34、$36、$37、$85等服務(wù)。

本模式重新進(jìn)入:處于編程會(huì)話模式下,可以通過$10 02再次進(jìn)入編程會(huì)話。

本模式進(jìn)入其他模式:編程會(huì)話狀態(tài)下可以通過$10 01進(jìn)入默認(rèn)會(huì)話,通過$11 01服務(wù)復(fù)位ECU來進(jìn)入默認(rèn)會(huì)話;編程會(huì)話不能進(jìn)入擴(kuò)展會(huì)話模式。

3)擴(kuò)展會(huì)話

某些服務(wù)需要擴(kuò)展會(huì)話的支持才能執(zhí)行,擴(kuò)展會(huì)話下如果不配合使用$3E服務(wù),ECU會(huì)在數(shù)秒后自動(dòng)退出擴(kuò)展會(huì)話模式進(jìn)入到默認(rèn)會(huì)話模式。

本模式重新進(jìn)入:處于擴(kuò)展會(huì)話模式下,可以通過$10 03再次進(jìn)入擴(kuò)展會(huì)話。

本模式進(jìn)入其他模式:在不使用$3E服務(wù)保持會(huì)話時(shí),可以通過超時(shí)自動(dòng)退出到默認(rèn)會(huì)話模式,可以通過$10 01進(jìn)入默認(rèn)會(huì)話,通過$11 01、11 03服務(wù)復(fù)位ECU來進(jìn)入默認(rèn)會(huì)話;在某些項(xiàng)目中僅支持$10 03擴(kuò)展模式下,才能進(jìn)入$10 02編程會(huì)話。

1.2 $10服務(wù)請(qǐng)求報(bào)文

$10服務(wù)的請(qǐng)求報(bào)文格式總體上跟上篇中描述服務(wù)發(fā)送報(bào)文內(nèi)容一致。子服務(wù)通常是前文講的01默認(rèn)會(huì)話、02編程會(huì)話、03擴(kuò)展會(huì)話,當(dāng)然規(guī)范中還存在00保留字段、04安全系統(tǒng)診斷會(huì)話、05-3F保留、40-5F主機(jī)廠自定義字段、60-7E零部件供應(yīng)商自定義字段等等。實(shí)際上主機(jī)廠可以根據(jù)項(xiàng)目情況進(jìn)行高自由度的內(nèi)部自定義,因?yàn)檫@些定義的范圍都只是在當(dāng)前項(xiàng)目適用,為了設(shè)計(jì)上的高復(fù)用性和減少設(shè)計(jì)研發(fā)工作量,要適當(dāng)考慮自定義部分的占比。發(fā)送報(bào)文幀結(jié)構(gòu)如下圖:

d295c470-4dee-11ed-a3b6-dac502259ad0.png

圖 2舉例,$10服務(wù)的請(qǐng)求報(bào)文通常為:$10 01、$10 02、$10 03,當(dāng)然根據(jù)項(xiàng)目實(shí)際情況可以進(jìn)行自定義子服務(wù)。1.3 $10服務(wù)響應(yīng)報(bào)文$10服務(wù)的響應(yīng)報(bào)文格式總體上跟上篇中報(bào)文發(fā)送內(nèi)容格式一致。正響應(yīng)報(bào)文的首字節(jié)服務(wù)號(hào)根據(jù)協(xié)議變?yōu)?50,第二字節(jié)對(duì)應(yīng)請(qǐng)求報(bào)文的子功能。第3至4字節(jié)屬性字段是跟ECU收到報(bào)文后發(fā)送第一幀響應(yīng)報(bào)文間隔時(shí)間相關(guān)的計(jì)時(shí)器設(shè)置數(shù)值,第5至6字節(jié)是NRC中0x78否定響應(yīng)報(bào)文發(fā)送和下一個(gè)消息發(fā)送間隔時(shí)間相關(guān)的計(jì)時(shí)器設(shè)置數(shù)值。響應(yīng)報(bào)文幀的結(jié)構(gòu)圖如下所示:

d2a1d38c-4dee-11ed-a3b6-dac502259ad0.png

圖 3

舉例,$10服務(wù)的響應(yīng)報(bào)文通常為:$50 01、$50 02、$50 03。

$10服務(wù)的否定響應(yīng)格式,可以參考上篇文章服務(wù)響應(yīng)總體中負(fù)響應(yīng)部分介紹,所有UDS服務(wù)的負(fù)響應(yīng)故障代碼表在項(xiàng)目中均是通用的。

02 27安全控制服務(wù)

在本篇當(dāng)中,我們之所以把這兩個(gè)服務(wù)一起來進(jìn)行介紹,是因?yàn)橥ǔ?27服務(wù)使用的前提就是先進(jìn)入$10服務(wù)的擴(kuò)展會(huì)話,反過來講$10服務(wù)很少單獨(dú)使用,一般都是跟$27服務(wù)配合先完成安全驗(yàn)證,然后其他服務(wù)才能在一定的會(huì)話模式和安全接入等級(jí)中正常使用。我們?cè)谇捌榻B過主機(jī)廠和零部件廠商可以通過不同的UDS服務(wù)對(duì)ECU執(zhí)行很多操作,這些操作有的會(huì)修改ECU配置,有的可以重啟設(shè)備,有的可以讀取信息等等。顯而易見的是,不同操作失誤造成的后果嚴(yán)重程度是不一樣的,因此通過安全認(rèn)證就很有必要。我們通常把默認(rèn)狀態(tài)下的ECU叫做鎖定狀態(tài)(Locked),成功執(zhí)行完成$27服務(wù)后的狀態(tài)叫做解鎖(Unlock),只有在解鎖狀態(tài)下才能進(jìn)行數(shù)據(jù)寫入、修改等等操作。

每次$27服務(wù)的安全認(rèn)證過程在Tester和ECU間會(huì)有兩輪的信息報(bào)文交互,大體的交互過程如下圖所示:

d2bb22c4-4dee-11ed-a3b6-dac502259ad0.png

圖 42.1 請(qǐng)求報(bào)文

$27服務(wù)請(qǐng)求報(bào)文格式總體上跟上篇中UDS請(qǐng)求報(bào)文介紹一致,在交互過程圖中我們可以看到$27服務(wù)發(fā)送了2次請(qǐng)求報(bào)文。

1)Seed請(qǐng)求報(bào)文

$27服務(wù)開始時(shí),第1條發(fā)送報(bào)文是用于向ECU請(qǐng)求獲取seed,seed通常由ECU根據(jù)算法隨機(jī)生成(不會(huì)是固定數(shù)值)。Tester獲取到seed后根據(jù)定義的算法算出key。$27服務(wù)根據(jù)項(xiàng)目診斷規(guī)范要求通常會(huì)有幾個(gè)不同的安全級(jí)別(一般3個(gè)足夠了),不同級(jí)別的區(qū)分通過報(bào)文第2字節(jié)子服務(wù),即上圖中2n-1字段來定義,通常有0x1、0x 3、0x 5、0x 7-0x 41(奇數(shù))都可以由主機(jī)廠根據(jù)實(shí)際情況自定義選擇,后面的0x43-0x7F很多用于預(yù)留,當(dāng)然主機(jī)廠想用于自定義也不是不可以。

舉例,本報(bào)文通常有$27 01、$27 05 、$27 09等等用于不同級(jí)別安全認(rèn)證服務(wù)。具體安全等級(jí)個(gè)數(shù)和對(duì)應(yīng)的子功能號(hào)均根據(jù)項(xiàng)目實(shí)際情況可以自定義實(shí)現(xiàn)。

2)Send key報(bào)文

$27服務(wù)的第2條發(fā)送報(bào)文是用于將計(jì)算好的key發(fā)送給ECU,key的計(jì)算都是基于和ECU使用的相同算法,以及ECU發(fā)出的seed。報(bào)文的第2字節(jié)子功能值跟第一條請(qǐng)求報(bào)文相關(guān),通常是第1條報(bào)文子功能值加1,所以本報(bào)文的子服務(wù)為偶數(shù)。報(bào)文第3至6字節(jié)即為附帶的key。

舉例,本報(bào)文通常有27 02 XX XX XX XX、27 06 XX XX XX XX、27 0A XX XX XX XX。

2.2 響應(yīng)報(bào)文

與請(qǐng)求報(bào)文相對(duì)應(yīng),$27服務(wù)的響應(yīng)報(bào)文也為2條。響應(yīng)報(bào)文的格式整體上跟上篇文章介紹的響應(yīng)報(bào)文格式一致。

1)Send seed響應(yīng)報(bào)文

$27服務(wù)ECU的第1條響應(yīng)報(bào)文目的是向Tester發(fā)送seed,seed是一串隨機(jī)數(shù),長度由具體項(xiàng)目規(guī)范確定,seed的產(chǎn)生是ECU根據(jù)內(nèi)置的算法隨機(jī)產(chǎn)生的。ECU將seed發(fā)送給Tester時(shí),本身也會(huì)根據(jù)seed值通過算法得出key值。

舉例,本報(bào)文通常有67 01 XX XX XX XX、67 05 XX XX XX XX、67 09 XX XX XX XX。

2)解鎖確認(rèn)報(bào)文

解鎖成功正響應(yīng)報(bào)文,$27服務(wù)ECU的第2條響應(yīng)報(bào)文,是ECU根據(jù)Tester發(fā)送過來的key,對(duì)比本身基于同樣seed,同樣算法計(jì)算出的key值,在兩個(gè)key值相等的情況下,ECU通過安全認(rèn)證服務(wù),向Tester發(fā)送正響應(yīng),通知進(jìn)入解鎖狀態(tài)成功。

舉例,本報(bào)文通常有$67 02、$67 06、$67 0A。

3)負(fù)響應(yīng)

負(fù)響應(yīng)的報(bào)文格式可以參考上篇的相關(guān)章節(jié),負(fù)響應(yīng)NRC代碼表一般在項(xiàng)目中是通用的。

03總結(jié)

$10服務(wù)和$27服務(wù)通常是配套使用的。

通過上面的描述我們可以看到$27服務(wù)用來做安全等級(jí)認(rèn)證,有幾個(gè)關(guān)鍵的要點(diǎn)。一是seed計(jì)算,因?yàn)閟eed用于不同安全等級(jí)的key計(jì)算,且必須做好一定強(qiáng)度的防破解設(shè)計(jì),所以通常情況下都會(huì)根據(jù)當(dāng)前時(shí)間結(jié)合其他固定值,通過內(nèi)部設(shè)計(jì)的算法來計(jì)算獲得一串偽隨機(jī)數(shù),將這串偽隨機(jī)數(shù)作為seed使用。二是key的計(jì)算方法,對(duì)應(yīng)不同的安全認(rèn)證等級(jí),基于seed來計(jì)算key,算法在加密復(fù)雜度和數(shù)據(jù)交換速度之間做衡量。

用于$27服務(wù)認(rèn)證的這套算法屬于主機(jī)廠的秘密等級(jí)較高的信息,主機(jī)廠對(duì)零部件供應(yīng)商釋放時(shí)通常是以DLL庫文件的方法進(jìn)行發(fā)布,并釋放調(diào)用方法的接口。

04測試要點(diǎn)

對(duì)于$10服務(wù)的測試注意點(diǎn)在于:

· 不同模式間的轉(zhuǎn)換實(shí)現(xiàn)是否跟規(guī)范要求一致;

· 其他服務(wù)在不同狀態(tài)下的支持情況是否符合規(guī)范要求。

對(duì)于$27服務(wù)的測試注意點(diǎn)在于:

算法本身及dll文件一般都經(jīng)過網(wǎng)絡(luò)架構(gòu)組內(nèi)部測試才發(fā)布,不需要過多關(guān)注,需要測試注意的是零部件廠商對(duì)于key的計(jì)算,在項(xiàng)目初期經(jīng)常會(huì)碰到大小端和移位導(dǎo)致的同樣算法key不一致的情況。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ecu
    ecu
    +關(guān)注

    關(guān)注

    14

    文章

    865

    瀏覽量

    54323
  • 安全控制
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    2065

原文標(biāo)題:車載ECU嵌入式設(shè)備的診斷測試 - 會(huì)話和安全控制

文章出處:【微信號(hào):智能汽車電子與軟件,微信公眾號(hào):智能汽車電子與軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ECU的啟動(dòng)順序

    ECU在擴(kuò)展會(huì)話執(zhí)行有效的應(yīng)用程序,編程會(huì)話請(qǐng)求可激活Bootloader,因此,應(yīng)用程序應(yīng)設(shè)置外部重編程請(qǐng)求標(biāo)志并復(fù)位,復(fù)位后直接進(jìn)入Bo
    的頭像 發(fā)表于 08-19 11:11 ?3076次閱讀

    BLE定制服務(wù)中心+外設(shè)示例

    我想通過PLE連接2個(gè)PSoC 6設(shè)備,并通過定制服務(wù)傳輸串行數(shù)據(jù)。根據(jù)使用情況,每個(gè)設(shè)備可以是中央設(shè)備或外圍設(shè)備。定制服務(wù)只在外圍數(shù)據(jù)庫中,中央必須發(fā)現(xiàn)它并啟用通知。這有一個(gè)示例項(xiàng)目嗎?我只在
    發(fā)表于 09-10 15:31

    Alljoyn服務(wù)器框架2總線及會(huì)話

    看起來一個(gè)總線似乎只支持一個(gè)會(huì)話,因此對(duì) c/s模式而言,它需要至少兩個(gè)總線。一個(gè)用于廣播,另一個(gè)用于私有對(duì)話。服務(wù)器廣播在線客戶信息,客戶通過心跳脈沖向服務(wù)器發(fā)送自己的信息。重寫通知服務(wù)
    發(fā)表于 09-19 17:50

    X86主板定制服務(wù)

    `資深x86研發(fā)團(tuán)隊(duì),10+年研發(fā)經(jīng)驗(yàn),研發(fā)成員來自于一線的PC、服務(wù)器、工控廠商,為客戶提供專屬的X86主板定制服務(wù)。平臺(tái):Xeon/Core/Pentium/Celeron/ATOMXeon
    發(fā)表于 03-02 11:28

    怎么用key0,key2控制服務(wù)器端和客戶端知道有數(shù)據(jù)發(fā)送請(qǐng)求的?

    原子用key0,key2控制服務(wù)器端和客戶端有請(qǐng)求數(shù)據(jù)發(fā)送,是如何知道有數(shù)據(jù)發(fā)送請(qǐng)求的,沒看明白
    發(fā)表于 07-29 04:17

    BLE服務(wù)類型有沒有辦法強(qiáng)制服務(wù)成為主要服務(wù)?

    我對(duì) BLE 中的服務(wù)有疑問。當(dāng)我檢查我的 esp32 正在運(yùn)行哪種服務(wù)時(shí),我發(fā)現(xiàn)有些服務(wù)是主要的,有些是次要的。問題是 Web 應(yīng)用程序只能看到主要服務(wù),而我的一些
    發(fā)表于 03-02 06:04

    基于QoS延時(shí)參數(shù)的服務(wù)接納控制算法

    為給并發(fā)訪問的多個(gè)請(qǐng)求提供QoS保證,Web Service必須借助某些算法對(duì)請(qǐng)求加以控制。該文分析QoS延時(shí)參數(shù)的構(gòu)成,提出基于QoS延時(shí)參數(shù)的服務(wù)接納
    發(fā)表于 04-14 09:37 ?10次下載

    Web應(yīng)用程序會(huì)話安全模塊的設(shè)計(jì)

    為阻止會(huì)話劫持攻擊的發(fā)生,設(shè)計(jì)一個(gè)HTTP會(huì)話安全模塊。該模塊將一條哈希代碼附加到會(huì)話 ID后,為會(huì)話ID cookie 監(jiān)視傳入的
    發(fā)表于 04-15 08:35 ?15次下載

    基于屬性的Web服務(wù)安全訪問控制方案

    本文基于Web 服務(wù)的典型應(yīng)用的安全需求,將Web 服務(wù)安全規(guī)范協(xié)同使用設(shè)計(jì)了基于屬性的Web 服務(wù)安全
    發(fā)表于 06-19 11:25 ?18次下載

    什么是SIP終端/IMS服務(wù)控制接口

    什么是SIP終端/IMS服務(wù)控制接口 SIP終端 SIP協(xié)議及其發(fā)展: sip(session initiation protocal)稱為會(huì)話發(fā)起協(xié)議,是由ietf(
    發(fā)表于 04-07 16:27 ?2733次閱讀

    SSRF服務(wù)請(qǐng)求偽造攻擊

    SSRF服務(wù)請(qǐng)求偽造攻擊
    發(fā)表于 09-07 14:07 ?6次下載
    SSRF<b class='flag-5'>服務(wù)</b>端<b class='flag-5'>請(qǐng)求</b>偽造攻擊

    Web服務(wù)訪問控制策略合成

    性考慮不足,為保證組合服務(wù)安全,需結(jié)合各組件服務(wù)的訪問控制需求對(duì)其進(jìn)行訪問控制。實(shí)現(xiàn)組合服務(wù)
    發(fā)表于 02-26 10:23 ?0次下載
    Web<b class='flag-5'>服務(wù)</b>訪問<b class='flag-5'>控制</b>策略合成

    工業(yè)遠(yuǎn)程智能控制服務(wù)的基本原理是怎樣的

    工業(yè)控制的距離從原來的就地處理發(fā)展成今天的遠(yuǎn)程處理,功能從原來的檢測、記錄和簡單控制逐漸發(fā)展成為今天的控制服務(wù),工具從原來單一的儀表逐漸發(fā)展成為今天的遠(yuǎn)程網(wǎng)絡(luò)
    發(fā)表于 10-17 14:34 ?3081次閱讀

    Java編程:發(fā)送HTTP請(qǐng)求服務(wù)

    當(dāng)Java程序需要向服務(wù)器發(fā)送請(qǐng)求或讀取服務(wù)器數(shù)據(jù)時(shí),使用URLConnection類是比較好的選擇。URLConnection類封裝了與服務(wù)器互動(dòng)操作的方法,通過它可以建立與
    的頭像 發(fā)表于 07-01 09:59 ?3025次閱讀
    Java編程:發(fā)送HTTP<b class='flag-5'>請(qǐng)求</b>到<b class='flag-5'>服務(wù)</b>器

    車載ECU嵌入式設(shè)備的診斷測試 - 會(huì)話安全控制

    本篇將會(huì)對(duì)UDS中最常用的服務(wù)進(jìn)行詳細(xì)介紹,首先對(duì)會(huì)話控制請(qǐng)求服務(wù)$10和安全接入
    的頭像 發(fā)表于 10-09 17:03 ?979次閱讀
    車載<b class='flag-5'>ECU</b>嵌入式設(shè)備的診斷測試 - <b class='flag-5'>會(huì)話</b>和<b class='flag-5'>安全</b><b class='flag-5'>控制</b>