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


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


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

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

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

開(kāi)發(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)試選項(xiàng)界面配置--macro_param vlk_path="C:/NXP/S32DS.3.5/S32DS/tools/S32Debugger/Debugger/Server/CCS/bin"即配置SDAF工具的路徑,然后直接啟動(dòng)調(diào)試,身份認(rèn)證失敗后會(huì)退出調(diào)試,但在Debug log中有打印UID信息。(只有With UID Diversified情況下,需要進(jìn)行這步操作)


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

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

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

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

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