在IAR Embedded Workbench for Arm中實現NXP S32K3安全調試

隨著汽車電子系統變得越來越智能,對功能安全(Safety)的要求越來越高,同時信息安全(Security)也越來越被關注,安全調試(Secure ?Debug)機制已成為一個重要的信息安全特性。NXP推出的S32K3系列MCU配備了多層次的生命周期管理和硬件安全引擎(Hardware Security Engine,HSE),以確保在產品開發與部署中的信息安全。

本文主要介紹如何在IAR Embedded Workbench for Arm中實現NXP S32K3的安全調試。

NXP S32K3生命周期與調試權限

NXP S32K3的生命周期(Lifecycle,簡稱LC)是芯片內用于表示設備狀態的重要機制,其狀態變化遵循單向流程,不可逆轉。生命周期的不同階段(如: CUST_DEL、OEM_PROD、IN_FIELD等)決定了開發者是否可以訪問特定的調試功能和HSE接口。調試功能通常在開發階段可用,而在量產階段需限制,以防止未經授權的訪問。在生命周期進入CUST_DEL后面的階段(如:OEM_PROD、IN_FIELD、PRE_FA),可以配置為Trusted,即開發者通過安全身份認證機制,才可以訪問調試端口,進行軟件調試。

安全調試身份認證機制

當MCU調試端口被設置為受保護狀態后,若調試器未能通過身份認證,將無法建立調試會話。NXP提供了兩種主要的身份認證方式:

  1. 靜態認證(Static Authentication):
    調試器在每次復位后需提供相同的預設密鑰(Application Debug Key/Password, ADKP)以解鎖調試接口。
  2. 動態認證(Dynamic Authentication):
    調試器在每次復位后,需基于芯片生成的挑戰數據進行加密計算,并返回相應響應數據以完成身份認證。

這兩種模式均需通過HSE接口在CUST_DEL階段配置,配置方式依賴于HSE的set attribute服務接口(HSE_DEBUG_AUTH_MODE_ATR_ID)。

另外,在每種身份認證方式下,都有兩種情況,一種是密鑰與MCU UID無關(w/o UID diversified), 另一種則是密鑰與MCU UID相關(w UID diversified)。

加鎖調試端口

加鎖調試端口具體流程請咨詢NXP。

  1. 128 位ADKP是一個非常重要的 OTP HSE 系統屬性,與安全調試、生命周期和 IVT 身份驗證等功能密切相關。通過配置ADKP可以實現加鎖調試端口,加鎖方式如下:可以直接編寫程序燒錄ADKP,或者通過HSE進行配置。
  2. 生命周期需要配置到CUST_DEL之后的生命周期(OEM_PROD、IN_FIELD等),調試端口可基于ADKP的配置進行保護。生命周期配置到進入下一階段之前,確保ADKP已配置。

安全調試輔助工具 SDAF

NXP提供了對應的安全調試輔助工具(Secure Debug Assist Firmware, SDAF),支持用戶在IAR Embedded Workbench for Arm中實現靜態和動態身份認證。該工具可用于密鑰派生、加密封裝、UID管理等關鍵操作。

SDAF支持如下功能:

  • 利用芯片UID派生ADKP密鑰
  • 封裝ADKP(支持RSA-2048加密)
  • 將封裝密鑰注冊至本地數據庫

SDAF工具與IAR調試腳本配合使用,以實現身份認證流程。SDAF工具可以在NXP S32DS的安裝目錄中找到,更多關于SDAF工具的信息請咨詢NXP。

安全調試(靜態認證)操作流程

    開發環境: IAR Embedded Workbench for Arm v9.60.4 + I-jet 硬件調試器

    1. 準備工作:
      a) ? ?調試端口已加鎖的NXP S32K3 MCU
      b)? ??獲取UID:在調試選項界面配置--macro_param vlk_path="C:/NXP/S32DS.3.5/S32DS/tools/S32Debugger/Debugger/Server/CCS/bin"即配置SDAF工具的路徑,然后直接啟動調試,身份認證失敗后會退出調試,但在Debug log中有打印UID信息。??(只有With UID Diversified情況下,需要進行這步操作)?

    c) ? ?獲取ADKP。ADKP為認證密鑰,一般由安全人員保管。本示例的ADKP為0x00112233445566778899AABBCCDDEEFF

    2.使用SDAF工具(需要使用admin權限操作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.啟動調試后,在連接內核時,會調用調試腳本的函數_ExecDeviceCoreConnect() -> _authentication() ->_key(),將密鑰寫入相應的寄存器。

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

    總結

    本文主要以靜態認證為例介紹了如何在IAR Embedded Workbench for Arm中實現NXP S32K3的安全調試。NXP S32K3的動態認證安全調試也已經在IAR Embedded Workbench for Arm中實現。

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/bicheng/93702.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93702.shtml
    英文地址,請注明出處:http://en.pswp.cn/bicheng/93702.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    Vue實例中的其他屬性【5】

    目錄1.計算屬性:1.概述:2.語法特點:3.案例:案例1:案例2:案例3:4.總結:5.get函數什么時候執行?6.注意:2.監視屬性:1.概述: 2.用法:1.監…

    C++入門自學Day11-- String, Vector, List 復習

    往期內容回顧 List類型的自實現 List類型(初識) Vector類的自實現 Vector類(注意事項) 初識Vector String類的自實現 String類的使用(續) String類(續) String類(初識&…

    JavaScript性能優化實戰(三):DOM操作性能優化

    想象一下,你正在精心布置一個豪華蛋糕(你的網頁),每次添加一顆草莓(DOM元素)都要把整個蛋糕從冰箱拿出來、放回去(重排重繪),來來回回幾十次,不僅效率低下&am…

    【力扣】面試經典150題總結02-雙指針、滑動窗口

    1.驗證回文串(簡單)用toLowerCase()轉為小寫字母,然后前后指針向中間進行比對。2.判斷子序列(簡單)兩個指針一個指向長字符串,另一個指向短字符串。匹配就都1,不匹配就將長字符串指針1。長字符串…

    MQ遷移方案

    以下是完整的MQ遷移方案設計,涵蓋同構/異構遷移、零丟失保障、灰度切換等關鍵環節,適用于Kafka、RabbitMQ、RocketMQ等主流消息隊列:?一、遷移方案選型矩陣??場景??適用方案??技術實現??優缺點??同集群版本升級?滾動重啟 協議兼…

    RAG 分塊中表格填補簡明示例:Markdown、HTML、Excel、Doc

    表格填補是RAG分塊中常見的需求,但不同格式的表格處理方式有所不同。本文將對 Markdown、HTML、Excel 的合并單元格進行說明,并給出 Python 示例,演示如何解析和填補。1. Markdown 表格Markdown 只能用空值表示合并單元格。(只有列…

    IDEA創建一個VUE項目

    由于新手學習VUE,所以使用手動初始化項目 步驟: 創建項目文件夾:在 IDEA 中點擊 File > New > Project,選擇 Empty Project,指定項目路徑。初始化 npm:在終端中:npm init -y安裝vue&#…

    Chrome插件開發實戰:todoList 插件

    以下是一個適合小團隊自用的 Chrome TodoList 插件開發示例,包含基礎功能(增刪改查、本地存儲、統計)和簡潔的交互設計。代碼結構清晰,適合新手學習或快速上手。 一、項目準備 創建插件項目目錄 todo-list-extension,…

    【Redis數據庫開啟SSL加密】【小白指南】【生產環境可用】附帶Docker服務器配置和python連接Redis數據庫代碼(加密通訊版)

    【Redis數據庫開啟SSL加密】【填坑指南】附帶服務器配置和python連接測試代碼 本教程轉為小白提供設置Redis安全訪問,自簽名證書進行安全訪問你的Redis數據庫,輕松實現安全訪問和保護數據庫不被非法入侵。 本文原創,轉載請注明出處&#xff0…

    筆記本電腦鍵盤失靈【已解決】

    配置環境硬件詳情筆記本電腦聯想拯救者y7000 2019 PG0(已更新為win11)外接鍵盤colorful ckb-p100問題今天筆記本開機后,進入登錄頁面輸入密碼,突然發現筆記本自帶鍵盤(我通常不用外接鍵盤)的鍵失靈了&#…

    postgresql運維問題解決:PG集群備節點狀態異常告警處理

    小亦平臺會持續給大家科普一些運維過程中常見的問題解決案例,運維朋友們可以在常見問題及解決方案專欄查看更多案例 問題概述: 故障: pg數據庫備節點狀態異常現象: 一般為集群間心跳超時導致,現象為集群有fail-count失敗數告警&…

    Maven 開發實踐

    文章目錄1. 搭建私服(windows)2.上傳依賴3.多個遠程倉庫配置4.其它1. 搭建私服(windows) 軟件下載 https://help.sonatype.com/en/download.html修改端口 etc/nexus-default.properties啟動程序 管理員身份進入進入bin目錄下執行.\nexus.exe /run創建Ma…

    設計心得——如何架構選型

    一、架構的作用 可能對于很多的公司,其實架構本身的重要性并不大。大家一定明白這回事,架構在實際的開發,在大多數的場景下其實用處并沒有書籍和資料中講的那樣重要,甚至是可有可無。這樣講是不有些可笑?是不是覺得挺意…

    vba學習系列(12)--反射率通過率計算復雜度優化25/8/17

    系列文章目錄 文章目錄系列文章目錄前言一、反射率通過率1.整體通過率2.整體通過率3.客戶工藝匹配4.機臺通過率分析5.鏡片通過率罩次分析分析1.1分析1.26.鏡片通過率圈數分析分析1.1分析1.28.鏡筒通過率圈數分析分析1.1分析1.29.鏡筒通過率罩次分析分析1.2總結前言 一、反射率通…

    Microsoft WebView2

    運行效果 代碼如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Form…

    GitCode 疑難問題診療:全方位指南

    一、問題診斷與解決框架1.1 通用問題排查流程在面對 GitCode 問題時,遵循一套科學的排查流程至關重要。首先,詳細記錄問題出現時的具體操作步驟與相關報錯信息,這有助于精準定位問題根源。例如,若在執行git push命令時出現錯誤&am…

    AMD Ryzen AI Max+ 395四機并聯:大語言模型集群推理深度測試

    本文介紹使用四塊Framework主板構建AI推理集群的完整過程,并對其在大語言模型推理任務中的性能表現進行了系統性評估。該集群基于AMD Ryzen AI Max 395處理器,采用mini ITX規格設計,可部署在10英寸標準機架中。 Jeff Geerling大佬還開發了名…

    深度學習·GFSS

    GFSS General Few-Shot Segmentation 任務實現方式與zero-shot有所不同本篇論文只涉及同一個模態(圖像),訓練過程中,novel class有幾個圖像提供,提供k個就稱之為k-shot。先從圖像中提取class prototype,然后這個原型向量作為查詢&…

    Transformer架構的數學本質:從注意力機制到大模型時代的技術內核

    系列專欄推薦:零基礎學Python:Python從0到100最新最全教程 深入淺出講解神經網絡原理與實現,從基礎的多層感知機到前沿的Transformer架構。包含完整的數學推導、代碼實現和工程優化技巧。 寫在前面:為什么理解Transformer如此重要…

    最新微信小程序一鍵獲取真實微信頭像和昵稱方法

    使用公開免費插件,快速實現獲取用戶頭像和昵稱,已附uniapp、微信開發工具開發詳細教程。前言為了保護用戶隱私,wx.getUserInfo、wx.getUserProfile都沒法獲取到用戶頭像和昵稱了,只能通過設計用戶主動選擇/輸入形式,操…