隨著汽車電子系統(tǒng)變得越來越智能,對功能安全(Safety)的要求越來越高,同時信息安全(Security)也越來越被關(guān)注,安全調(diào)試(Secure Debug)機(jī)制已成為一個重要的信息安全特性。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)用于表示設(shè)備狀態(tài)的重要機(jī)制,其狀態(tài)變化遵循單向流程,不可逆轉(zhuǎn)。生命周期的不同階段(如: CUST_DEL、OEM_PROD、IN_FIELD等)決定了開發(fā)者是否可以訪問特定的調(diào)試功能和HSE接口。調(diào)試功能通常在開發(fā)階段可用,而在量產(chǎn)階段需限制,以防止未經(jīng)授權(quán)的訪問。
在生命周期進(jìn)入CUST_DEL后面的階段(如:OEM_PROD、IN_FIELD、PRE_FA),可以配置為Trusted,即開發(fā)者通過安全身份認(rèn)證機(jī)制,才可以訪問調(diào)試端口,進(jìn)行軟件調(diào)試。


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


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

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

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

開發(fā)環(huán)境: IAR Embedded Workbench for Arm v9.60.4 + I-jet 硬件調(diào)試器
1. 準(zhǔn)備工作:
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)試,身份認(rèn)證失敗后會退出調(diào)試,但在Debug log中有打印UID信息。(只有With UID Diversified情況下,需要進(jìn)行這步操作)


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

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(),將密鑰寫入相應(yīng)的寄存器。

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

06總結(jié)
本文主要以靜態(tài)認(rèn)證為例介紹了如何在IAR Embedded Workbench for Arm中實現(xiàn)NXP S32K3的安全調(diào)試。
NXP S32K3的動態(tài)認(rèn)證安全調(diào)試也已經(jīng)在IAR Embedded Workbench for Arm中實現(xiàn),如有需求,歡迎聯(lián)系IAR中國獲取更多詳細(xì)信息。
-
mcu
+關(guān)注
關(guān)注
147文章
18669瀏覽量
388930 -
NXP
+關(guān)注
關(guān)注
61文章
1379瀏覽量
195228 -
調(diào)試
+關(guān)注
關(guān)注
7文章
623瀏覽量
35414 -
IAR
+關(guān)注
關(guān)注
5文章
402瀏覽量
38375
原文標(biāo)題:在IAR Embedded Workbench for Arm中實現(xiàn)NXP S32K3安全調(diào)試
文章出處:【微信號:IAR愛亞系統(tǒng),微信公眾號:IAR愛亞系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
使用J-Link Attach NXP S32K3導(dǎo)致對應(yīng)RAM區(qū)域被初始化成0xDEADBEEF
恩智浦推出用于汽車微控制器單元——S32K3系列
IAR Systems支持NXP S32K3 MCU系列下一代汽車應(yīng)用
s32k3每次運(yùn)行到Mcu_DistributePllClock報錯怎么解決?
S32DS和S32K3在軟件下載頁面中不再可用怎么解決?
在哪里可以獲取S32DS和S32K3軟件包下載包?
如何設(shè)置S32K3的調(diào)試密碼?
S32K3系列的安全性能如何?
如何搭配S32K3來實現(xiàn)不同系統(tǒng)功能安全要求
詳細(xì)展示S32K3在功能安全的方方面面
S32K3電機(jī)控制資源精華匯總
S32K3可以直連AWS云服務(wù)啦!
基于 NXP S32K312+FS23 的汽車通用評估板方案

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