快轉到主要內容

揭密Rockchip安全啟動:Advantech研發團隊的創新實戰之旅!

· loading
作者
Advantech ESS
目錄

引言:為什麼「安全啟動」成了嵌入式產業的新顯學?
#

想像一下,你的設備剛開機,世界上第一個程式碼要跑起來——這一刻,安全與信任的守門員就必須登場。隨著物聯網、工業自動化及智慧城市的快速發展,系統安全不再只是「選配」,而是每台設備的基本配備。這次,我們Advantech研發團隊將帶你走進Rockchip平台的安全啟動實作流程,揭開硬體信任根到完整信任鏈的神秘面紗。無論你是銷售、AE還是對新技術充滿好奇的潛在客戶,都能輕鬆掌握這個領域的最新突破!


技術背景:信任鏈、TrustZone與Rockchip的安全架構
#

什麼是「安全啟動」?簡單說,就是讓設備從一開機開始,每一步都經過層層驗證,確保執行的程式碼都是原廠簽名、未被惡意修改。這不只是一道防線,更是一個多層次的信任鏈:

  • 硬體信任根:設備一上電,內建的MaskROM會先校驗OTP/eFuse中的密鑰,確保最初的引導程式(TPL/SPL)是安全的。
  • 分層安全隔離:利用TrustZone技術,將系統切分為安全域(Secure World)與普通域(Normal World),即使一般應用被攻破,敏感資料依然高枕無憂。
  • 權限分明:從最高權限EL3(安全監視器)到EL0(用戶程式),每一層都負責驗證下一層的簽名,建立完整的端到端信任鏈。

想看流程圖?點此查看

22bc1f94-3e39-4ddb-aeb9-d797942aad2f_1763543659971.png


安全方案
#

34ae2933-281f-4b44-8994-02d1c6a777c0_1769494464511.png


實作過程:五大步驟,帶你領略Advantech的技術突破
#

步驟一:密鑰生成(一次性操作,安全的起點)
#

我們有兩種方式產生密鑰:

  • 方式一:U-Boot工程下執行
mkdir -p keys
cd keys
./rk_sign_tool cc --chip 3588
./rk_sign_tool kk --out .
cp privateKey.pem ../../dev.key
cp publicKey.pem ../../dev.pubkey
cd ../
openssl req -batch -new -x509 -key keys/dev.key -out keys/dev.crt
  • 方式二:官方指令生成RSA密鑰對
./build.sh security-createkeys

執行後,會在u-boot/keys目錄下產生三個核心檔案:

  • dev.key(私鑰,簽名用,需離線備份)
  • dev.pubkey(公鑰,驗簽用,編譯時嵌入固件)
  • dev.crt(自簽名證書,等同公鑰,用於鏡像校驗)

注意!

  • 檔名不可更改,否則打包失敗。
  • 公鑰可對外公開,私鑰一定要妥善保存,避免裝置變磚。
  • 若遇到「Can’t load ~/.rnd into RNG」錯誤,記得補上:
touch ~/.rnd

步驟二:安全配置(讓系統更有防護力)
#

  • 方法一:修改U-Boot defconfig
    加入以下參數:
CONFIG_FIT_SIGNATURE=y
CONFIG_SPL_FIT_SIGNATURE=y
CONFIG_FIT_ROLLBACK_PROTECT=y          # boot.img防回滾
CONFIG_SPL_FIT_ROLLBACK_PROTECT=y      # uboot.img防回滾
  • 方法二:圖形化配置
./build.sh menuconfig

路徑:Firmware(partition table,misc image,etc.) -> use FIT

rk-uboot-defconfig_1769483757688.png


步驟三:編譯與簽名固件(Loader、U-Boot、Kernel)
#

  • 方法一:編譯指令
./build.sh loader --spl-new --rollback-index-uboot 1
./build.sh kernel
./build.sh modules   # 可選,需驅動適配時

產出已簽名的loader.bin、uboot.img、Image(內核鏡像)等。

  • 方法二:腳本批量編譯
./make.sh rv1126 --spl-new --boot_img boot.img --recovery_img recovery.img --rollback-index-uboot 10 --rollback-index-boot 12 --rollback-index-recovery 12

重要安全模組(menuconfig中已啟用):

  • CONFIG_BLK_DEV_DM=y(啟用Device-Mapper)
  • CONFIG_DM_VERITY=y / CONFIG_DM_CRYPT=y(支援系統校驗/加密)
  • CONFIG_TEE=y / CONFIG_OPTEE=y(啟用可信執行環境)

簽名結果示例

Image(signed, version=0, rollback-index=10): uboot.img (FIT with uboot, trust) is ready
Image(signed, version=0, rollback-index=12): recovery.img (FIT with kernel, fdt, resource...) is ready
Image(signed): rk3588_spl_loader_v1.18.113.bin (with spl, ddr, usbplug) is ready

步驟四:固件燒錄(安全啟動的關鍵一刻)
#

  • 方法一:Windows工具RKDevTool
    選擇已簽名檔案,輕鬆燒錄

    xshot-0038_1764664669002.png

  • 方法二:瑞芯微upgrade_tool工具

upgrade_tool uf output/firmware/update.img

常見錯誤與驗證

  • 未簽名檔案會導致燒錄失敗或系統無法啟動
  • 正確簽名後,系統會顯示hash校驗、回滾檢查等成功訊息
  • 詳細錯誤畫面:點此查看

步驟五:密鑰燒錄(量產前的最後防線)
#

OTP熔斷:量產時必須將密鑰哈希燒錄到OTP(不可逆),確保裝置終身安全。

  • 啟用密鑰燒錄功能
./build.sh menuconfig
-> RK_SECURITY -> [*] burn security key
./build.sh loader --spl-new --burn-key-hash
  • 熔斷成功訊息
    串口顯示「RSA: Write key hash successfully」

注意事項

  • 調試階段不要燒錄密鑰,避免設備變磚。
  • 私鑰必須離線備份,OTP熔斷後遺失將無法修復。

其他參考:配置項、操作指令及測試結果
#

b1c0aa63-fcec-414f-8428-b1739beb68a1_1769495896093.png
c60446f5-0513-44c6-8064-3ac987f78ffa_1769495928114.png
75c8439f-3019-455a-89c9-e2627669b8ea_1769496342364.png


成果展示:安全啟動的實際驗證與效益
#

經過上述五大步驟,Advantech成功在Rockchip平台實現安全啟動機制,確保每一層程式碼都經過簽名驗證,防止惡意攻擊與固件回滾。這不僅提升了產品安全性,更符合產業對資料保護與設備可靠性的高標準。

  • 數據隔離:核心密鑰只存在於可信執行環境(TEE),外部無法直接存取。
  • 加密通道:所有通訊皆經過安全代理加密,防止資料外洩。
  • 防重放攻擊:採用動態密鑰與時間戳,令牌僅一次有效。

Advantech的技術亮點:持續創新、領先業界
#

Advantech不只跟上安全啟動的趨勢,更積極投入研發,從密鑰管理到固件簽名、再到OTP熔斷,每個細節都嚴格把關。我們的團隊已將這套流程導入多個產品線,未來將持續探索:

  • 更智能的密鑰管理方案
  • 自動化安全驗證流程
  • 擴展至更多嵌入式平台與應用場景

結論與未來展望:守護每一台智能設備的信任基石
#

透過Rockchip安全啟動實作,Advantech不僅提升了產品防護力,更展現出持續創新、嚴謹研發的企業形象。面對未來的IoT、AIoT、智慧製造新潮流,我們將不斷優化安全架構,打造更可靠、更易用的解決方案,與客戶攜手邁向更安全、更智能的未來!


備註與小提醒:

  • 私鑰務必離線備份,OTP熔斷後無法復原,請務必小心管理!
  • 調試階段請勿燒錄密鑰,確保固件穩定後再進行量產操作。
  • 詳細操作步驟、指令與驗證流程,歡迎參考本文圖片與範例。

Advantech持續領先,為每一位客戶打造最安心的智能未來!

相關文章

AI 模型最佳化大公開:讓你的硬體跑出 LLM 超神速度!
· loading
大型語言模型也要「瘦身」?Advantech量化技術實驗帶你一探究竟!
· loading
AI 大模型落地新紀元!研華 AIR‑520 邊緣平台輕鬆運行 OpenAI 開源 GPT‑OSS 120B / 20B
· loading