一. 概述
安全調試(Secure Debug)顧名思義就是調試接口可以被安全管理,可以通過管理,實現只允許合法調試者調試。
二、Secure Debug 理論
E3 的 Secure Debug 根據控制強度,基本分三種控制形式:
① 對於生命周期處於開發模式的晶片,默認使能調試接口;
② 對於生命周期處於量產模式的晶片,根據權限驗證開放調試接口,分為 BootROM 控制方式、JTAG Challenge/Response 機制;
③ 強制關閉調試:通過燒寫 efuse 的 JTAG_DISABLE bit 永久關閉調試口。
2.1 BootROM 控制方式
晶片上電默認先啟動 BootROM 程序(晶片啟動代碼,固化在晶片中),BootROM 根據 boot pin 的設置從 XSPI/eMMC/SD/UART/USB 等介質中獲取下級啟動鏡像,啟動鏡像的格式必須滿足 Boot Package 格式,然後根據 efuse 的配置情況對啟動鏡像進行安全啟動驗證,如果啟動鏡像合法驗證,系統將成功啟動鏡像,表現為程序可以正常啟動,具體安全啟動流程如下:
- 計算 BPT 中公鑰的 HASH(SHA256)並與 ROTPK1 中保存的 HASH 對比,如果兩者不一致,則啟動失敗;
- 使用 BPT 中的公鑰驗證 BPT 中存儲的簽名,如果簽名驗證失敗,則啟動失敗;
- 計算每個 core 鏡像 HASH,與保存在 BPT 中的 HASH 對比,如果不一致則啟動失敗;
- 上述都成功,則啟動 BPT 中所指定的 core 鏡像。
上述過程為常規 BootROM 驗證流程,雖然鏡像可以正常啟動,但在 Secure Debug 時,不代表可以正常打開調試口;若要開啟 Debug 調試口,需要將 .json 文件 ctrl 控制欄位設置成 0xffffffffffffffff,將 uuid 欄位設置成與 efuse DID 欄位一致(此欄位由用戶燒寫,注意大小端格式),此過程在 Secure Debug 中非必要過程,Secure Debug 可以不開啟 BootROM 驗證機制僅採用 JTAG Challenge/Response 機制,對 JTAG 口進行安全調試,詳細流程見下圖。

2.3 Fuse Disable 機制
通過燒寫 efuse 中 JTAG_DISABLE bit 位實現,燒寫完之後將無法逆轉,並且 JTAG_DISABLE 的控制位擁有最高優先級,disable 後將永久無法開啟 JTAG 調試口。
三 、Secure Debug 驗證過程
3.1 燒寫 efuse 驗證
3.1.1 生成PAC包
更改 json 腳本,ctrl 欄位為:0xffffffffffffffff,uuid 欄位對應 efuse DID 一致,通過 CMD 命令行打包成 PAC 包,並將 PAC 包燒寫進 Flash,燒寫完固件之後,撥碼到 0000 斷電重啟,確認固件是否正常啟動。
① 燒寫公鑰 Hash,執行打包指令時,在 log 區會輸出 HASH of Root Cert dump 為公鑰 hash,保存並燒寫到 efuse -> ROTPK1,具體見下圖;


② 燒寫 DID,需要與生成 PAC 的 JSON 腳本中的 uuid 欄位對應,注意大小端對應關係


③ 燒寫 PROD位,將開啟 production 模式,在這個模式下,晶片將無法再被隨意燒寫,也無法隨意連接調試器(只能通過 USB 口進行 PAC 燒寫,燒寫/讀取 efuse)

④ 燒寫 DebugKey

⑤ 燒寫 SDBG_MODE 位,開啟 Secure Debug 後,板卡上的 JTAG 口被保護,只能通過輸入密碼的方式重新打開 JTAG 口,(此時雖然 JTAG 口被保護,使用 SDFuseTool 工具以無法通過JTAG 鏈路鏈接,僅能通過 USB 鏈路方式可以讀取或燒寫efuse)

⑥ Lock密鑰


- Bank 後面的序號用於與 LockBank 的序號相對應,即 BankX 的鎖對應 SafeLockBankX 及APLockBankX;
- Bank 中標識含 [D] 的 fuse 項支持單 bit 從 0 到 1 的修改,沒包含此標誌的表示的是 ECC 保護功能,僅支持以 WORD 為單位的一次性寫入,不支持單 bit 改寫
- LockBank 中的 HLock、OLock、RLock、Plock 含義
- PLock:置 1 後將不能無法燒寫對應 Bank 的 Fuse 內容;
- RLock:置 1 後軟體將無法讀取對應 Bank 的 Fuse 內容;
- OLock:置 1 後無法修改對應 Bank 的 Fuse 的 shadow register 內容;
- HLock:置 1 後硬體讀取對應 Bank 的 Fuse 內容均為 0;
四、Secure Debug 解鎖
參見Secure Debug - 解鎖方式(敬請期待)。
五、參考文檔《AppNote_E3_Boot_and_OTA_Rev01.06》
《E3 secure debug V1.0》
《Semidrive_E3信息安全_Rev1.0》
《AppNote_E3_燒錄流程_Rev2.0》
《SDToolBox_User_Guide》
如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:娜就這麼嘀
更多資訊,請掃碼關注我們!

評論