目錄
1、服務概述
2、工作原理
3、常用的應用場景
4、子功能
5、請求與響應格式
5、1服務請求
5、2服務肯定響應
5、3服務否定響應
6、延時機制
1、服務概述
- 該服務對零部件中部分加密的服務進行解密工作
- 安全訪問的概念使用“種子”和“密鑰”來實現
參數 | 描述 |
種子 | 4字節數據,由ECU發送給診斷測試工具,又是鑰匙計算的基礎。 |
鑰匙 | 鑰匙參數是診斷測試工具對種子參數按照特定的算法計算出的結果,長度也為4字節,由診斷測試工具發送給ECU。鑰匙接收后,ECU將接收到的鑰匙與內部計算的鑰匙相比較,相同則解密成功。 |
2、工作原理
本服務的典型使用示例如下:
- 客戶端請求“種子”
- 服務器發送“種子”
- 客戶端發送“密鑰”
- 服務器作出響應,確認“密鑰”有效,并自行解鎖。
3、常用的應用場景
-
操作控制類:包括輸入輸出控制、例程管理服務等功能。
-
數據寫入類:例如程序刷寫;生產線上關鍵數據(如版本號或標定信息)的寫入,需通過27級安全認證后方可執行。
-
數據讀取類:在訪問重要數據時,同樣需要通過安全認證流程。
4、子功能
- 子功能參數為固定1字節
- Bit7為抑制肯定響應消息指示位(0:需要肯定響應;1:禁止肯定響應)
- Bit6——Bit0為子功能參數值
- 不同安全級別的請求種子和發送密鑰存在固定關系,相鄰的一對奇偶數對應一種安全級別,數字大小并不代表其等級的高低。其中奇數代表請求種子,偶數代表發送密鑰(例:0x01 和 0x02 分別代表一個安全級別的請求種子和發送密鑰)
- 任何時間都僅有一個安全等級是解鎖的狀態
- 默認會話下不支持27服務
- 從一個安全等級接收到另外一個等級的請求并且解鎖成功后,之前的安全等級將被重新鎖定,而由于切換安全等級致使先前解鎖的狀態被鎖定后,其依賴于被鎖定的等級的服務和功能也一并被關閉。
- 如果被請求的安全等級當前是已經解鎖的狀態,那么在響應種子時,在放種子的位置都放上0,表示已經解鎖了,你不要再請求了。并且實際上種子應該是一個隨機數,一般全0和全F都不允許作為普通種子放到響應里。
5、請求與響應格式
5、1服務請求
- 請求種子服務數據格式:
27 + [sub-function]?
注意:
請求種子子服務必須為奇數
securityAccessDataRecord為Client發送給到Server的標識信息,可選,一般不用
- 發送密鑰服務數據格式:
27 + [sub-function] +?[security-Key
]
注意:
發送Key子服務必須為偶數
securityKey為Client向Server發送的具體Key值
從表40與表41的解釋說明對比可看出兩者sub-funtion必須存在一個確定的定量關系:即sub-funtion(Request Seed) + 1 = sub-function(Send Key)。
?
5、2服務肯定響應
- 請求種子服務正響應數據格式:
67 + [sub-function]?
注意:
27診斷服務的正響應由以下三個部分組成,如下
參數 | 描述 |
響應SID | 該參數固定為SID+0x40 = 0x67 |
sub-function | 該參數為request seed(如01)或者Send Key(02)的取值 |
securitySeed | 該參數僅針對subfunction為Request Seed時才會回復該參數,其他情況下,Server僅會回復前兩個字節(響應?SID + sub-function),其取值范圍只能為0x00-0x7F |
5、3服務否定響應
-
請求種子服務正響應數據格式:
注意:如果解鎖失敗,則可通過收到的NRC判斷失敗的原因,27服務常用的NRC如下:7F + 27 +?[NRC]
6、延時機制
- 車輛制造商應選擇是否支持延時計時器
- 達到車輛制造商規定的錯誤訪問嘗試次數后,應激活延時計時器。
- 在連續X次請求安全訪問失敗后,需等待Ys之后才能接受下一次的安全訪問請求RequestSeed。(注:X和Y由車輛制造商自行定義)
- 當測試工具發送一個無效的秘鑰, ECU將返回 NRC 0x35 InvalidKey 。 此時,全訪問錯誤計數器加1(注:該計數器需要存儲并且初始值為0)。
- 當安全訪問錯誤計數器達到X(即收到X次 InvalidKey ), ECU將返回NRC 0x36且需要等待Y s才能接受下一次的安全訪問請求 Request Seed。 期間任何安全訪問請求 Request Seed 都會被ECU反饋NRC 0x37。
- 當Ys等待時間結束后,安全訪問錯誤計數器將減1(只減1次),并允許嘗試安全訪問請求 RequestSeed,如果此次請求失敗(由于發送了一個無效的秘鑰),安全訪問錯誤計數器將加1,并再次開啟Ys等待時間。
- 任何一次ECU被成功解鎖(密鑰有效),失敗計數器都將被重置為零。
- ECU上電/復位后默認處于閉鎖狀態,需要檢測安全訪問錯誤計數器,若計數器為X,則需要啟動Ys的安全訪問延時時間。