隨著汽車電子系統(tǒng)變得越來越智能,對功能安全(Safety)的要求越來越高,同時信息安全(Security)也越來越被關注,安全調(diào)試(Secure Debug)機制已成為一個重要的信息安全特性。NXP推出的S32K3系列MCU配備了多層次的生命周期管理和硬件安全引擎(Hardware Security Engine, HSE),以確保在產(chǎn)品開發(fā)與部署中的信息安全。
本文主要介紹如何在IAR Embedded Workbench for Arm中實現(xiàn)NXP S32K3的安全調(diào)試。
01NXP S32K3生命周期與調(diào)試權(quán)限
NXP S32K3的生命周期(Lifecycle,簡稱LC)是芯片內(nèi)用于表示設備狀態(tài)的重要機制,其狀態(tài)變化遵循單向流程,不可逆轉(zhuǎn)。生命周期的不同階段(如: CUST_DEL、OEM_PROD、IN_FIELD等)決定了開發(fā)者是否可以訪問特定的調(diào)試功能和HSE接口。調(diào)試功能通常在開發(fā)階段可用,而在量產(chǎn)階段需限制,以防止未經(jīng)授權(quán)的訪問。
在生命周期進入CUST_DEL后面的階段(如:OEM_PROD、IN_FIELD、PRE_FA),可以配置為Trusted,即開發(fā)者通過安全身份認證機制,才可以訪問調(diào)試端口,進行軟件調(diào)試。


02安全調(diào)試身份認證機制
當MCU調(diào)試端口被設置為受保護狀態(tài)后,若調(diào)試器未能通過身份認證,將無法建立調(diào)試會話。NXP提供了兩種主要的身份認證方式:
1. 靜態(tài)認證(Static Authentication):
調(diào)試器在每次復位后需提供相同的預設密鑰(Application Debug Key/Password, ADKP)以解鎖調(diào)試接口。
2. 動態(tài)認證(Dynamic Authentication):
調(diào)試器在每次復位后,需基于芯片生成的挑戰(zhàn)數(shù)據(jù)進行加密計算,并返回相應響應數(shù)據(jù)以完成身份認證。
這兩種模式均需通過HSE接口在CUST_DEL階段配置,配置方式依賴于HSE的set attribute服務接口(HSE_DEBUG_AUTH_MODE_ATR_ID)。
另外,在每種身份認證方式下,都有兩種情況,一種是密鑰與MCU UID無關(w/o UID diversified), 另一種則是密鑰與MCU UID相關(w UID diversified)。


03加鎖調(diào)試端口
1. 128 位ADKP是一個非常重要的 OTP HSE 系統(tǒng)屬性,與安全調(diào)試、生命周期和 IVT 身份驗證等功能密切相關。通過配置ADKP可以實現(xiàn)加鎖調(diào)試端口,加鎖方式如下:可以直接編寫程序燒錄ADKP,或者通過HSE進行配置。

2. 生命周期需要配置到CUST_DEL之后的生命周期(OEM_PROD、IN_FIELD等),調(diào)試端口可基于ADKP的配置進行保護。生命周期配置到進入下一階段之前,確保ADKP已配置。
加鎖調(diào)試端口具體流程請咨詢NXP。
04安全調(diào)試輔助工具 SDAF
NXP提供了對應的安全調(diào)試輔助工具(Secure Debug Assist Firmware, SDAF),支持用戶在IAR Embedded Workbench for Arm中實現(xiàn)靜態(tài)和動態(tài)身份認證。該工具可用于密鑰派生、加密封裝、UID管理等關鍵操作。
SDAF支持如下功能:
利用芯片UID派生ADKP密鑰
封裝ADKP(支持RSA-2048加密)
將封裝密鑰注冊至本地數(shù)據(jù)庫
SDAF工具與IAR調(diào)試腳本配合使用,以實現(xiàn)身份認證流程。SDAF工具可以在NXP S32DS的安裝目錄中找到,更多關于SDAF工具的信息請咨詢NXP。

05安全調(diào)試(靜態(tài)認證)操作流程

開發(fā)環(huán)境: IAR Embedded Workbench for Arm v9.60.4 + I-jet 硬件調(diào)試器
1. 準備工作:
a) 調(diào)試端口已加鎖的NXP S32K3 MCU
b) 獲取UID:在調(diào)試選項界面配置--macro_param vlk_path="C:/NXP/S32DS.3.5/S32DS/tools/S32Debugger/Debugger/Server/CCS/bin"即配置SDAF工具的路徑,然后直接啟動調(diào)試,身份認證失敗后會退出調(diào)試,但在Debug log中有打印UID信息。(只有With UID Diversified情況下,需要進行這步操作)


c) 獲取ADKP。ADKP為認證密鑰,一般由安全人員保管。本示例的ADKP為0x00112233445566778899AABBCCDDEEFF
2. 使用SDAF工具(需要使用admin權(quán)限操作SDAF工具),通過volkano_utils.exe的derive_adkp命令,用芯片 UID 來派生 ADKP。(只有With UID Diversified情況下,需要進行這步操作)

3. 在Debugger選項中,按下圖格式輸入密鑰,本示例中:
a) Without UID Diversified模式: 密鑰為0x00112233445566778899AABBCCDDEEFF
b) With UID Diversified模式: 密鑰為上一步所生成的派生后的ADKP,本例為0xB61A47A672A895E0F384EA32EBD99626

4. 啟動調(diào)試后,在連接內(nèi)核時,會調(diào)用調(diào)試腳本的函數(shù)_ExecDeviceCoreConnect() -> _authentication() ->_key(),將密鑰寫入相應的寄存器。

5. 密鑰寫入后, _authentication()函數(shù)檢查是否JTAG調(diào)試已開放,如已開放,則繼續(xù)調(diào)試,否則退出調(diào)試。

06總結(jié)
本文主要以靜態(tài)認證為例介紹了如何在IAR Embedded Workbench for Arm中實現(xiàn)NXP S32K3的安全調(diào)試。
NXP S32K3的動態(tài)認證安全調(diào)試也已經(jīng)在IAR Embedded Workbench for Arm中實現(xiàn),如有需求,歡迎聯(lián)系IAR中國獲取更多詳細信息。
-
mcu
+關注
關注
147文章
18420瀏覽量
380663 -
NXP
+關注
關注
61文章
1369瀏覽量
192647 -
調(diào)試
+關注
關注
7文章
618瀏覽量
35290 -
IAR
+關注
關注
5文章
392瀏覽量
38194
原文標題:在IAR Embedded Workbench for Arm中實現(xiàn)NXP S32K3安全調(diào)試
文章出處:【微信號:IAR愛亞系統(tǒng),微信公眾號:IAR愛亞系統(tǒng)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
恩智浦推出用于汽車微控制器單元——S32K3系列
IAR Systems支持NXP S32K3 MCU系列下一代汽車應用
s32k3每次運行到Mcu_DistributePllClock報錯怎么解決?
請問s32k3 mcu進入睡眠模式后flexcan可以工作嗎?
S32DS和S32K3在軟件下載頁面中不再可用怎么解決?
在哪里可以獲取S32DS和S32K3軟件包下載包?
如何設置S32K3的調(diào)試密碼?
S32K3系列的安全性能如何?
如何搭配S32K3來實現(xiàn)不同系統(tǒng)功能安全要求
詳細展示S32K3在功能安全的方方面面
S32K3電機控制資源精華匯總
S32K3可以直連AWS云服務啦!
基于 NXP S32K312+FS23 的汽車通用評估板方案

如何實現(xiàn)NXP S32K3系列MCU安全調(diào)試
評論