引言
目錄預(yù)覽
1.概述
2.文檔和開源軟件資源
3.STM32Cube 概述
4.Arm 可信固件?M (TF?M)簡介
5.安全啟動和安全固件更新服務(wù)
(PSA 不可變 RoT)
6.運行時安全服務(wù)
7.保護措施和安全策略
8.軟件包說明
9.硬件和軟件環(huán)境設(shè)置
10.安裝過程
11.逐步執(zhí)行
12.集成商角色描述
章節(jié)預(yù)覽
STM32Cube概述
STM32Cube 源自意法半導(dǎo)體,旨在通過減少開發(fā)工作量、時間和成本,明顯提高設(shè)計人員的生產(chǎn)率。STM32Cube 涵蓋整個 STM32 產(chǎn)品系列。
STM32Cube 包括:
? 一套用戶友好的軟件開發(fā)工具,覆蓋從概念到實現(xiàn)的整個項目開發(fā)過程,其中包括:
– STM32CubeMX 圖形軟件配置工具 STM32CubeMX,可通過圖形向?qū)ё詣由沙跏蓟?C 代碼。
– STM32CubeIDE 一種集外設(shè)配置、代碼生成、代碼編譯和調(diào)試功能于一體的開發(fā)工具
– STM32CubeProgrammer
(STM32CubeProg),圖形版本和命令行版本中可用的編程工具。
– STM32CubeMonitor (STM32CubeMonitor、STM32CubeMonPwr、STM32CubeMonRF 和STM32CubeMonUCPD)功能強大的監(jiān)控工具,用于實時微調(diào) STM32 應(yīng)用程序的行為和性能 。
? STM32Cube MCU 和 MPU 軟件包,特定于每個微控制器和微處理器系列的綜合嵌入式軟件平臺(如用于STM32U5 系列的 STM32CubeU5),它包含:
– STM32Cube 硬件抽象層(HAL),確保在 STM32 各個產(chǎn)品之間實現(xiàn)最大限度的可移植性。
– STM32Cube 底層 API,通過硬件提供高度用戶控制,確保最佳性能和內(nèi)存開銷
– 一組一致的中間件組件,如 ThreadX、FileX / LevelX、NetX Duo、USBX、USB-PD 觸控庫、網(wǎng)絡(luò)庫、mbed-crypto、TFM 和 OpenBL
– 嵌入式軟件實用工具以及全套外設(shè)和應(yīng)用實例 。
? STM32Cube 擴展包,其中包含嵌入式軟件組件,這些組件用以下內(nèi)容補充 STM32Cube MCU 和 MPU 軟件包的功能:– 中間件擴展和應(yīng)用層– 在特定的意法半導(dǎo)體開發(fā)板上運行的實現(xiàn)案例。
Arm 可信固件?M (TF?M)簡介
TF?M (參見[TF-M])是 Arm Limited 驅(qū)動的開源軟件框架,提供 Arm Cortex?M33(TrustZone)處理器上PSA 標(biāo)準的參考實現(xiàn):
? PSA 不可變 RoT(可信根):在每次復(fù)位后執(zhí)行不可變“安全啟動和安全固件更新”應(yīng)用程序。該應(yīng)用程序基于 MCUboot 開源軟件(參照[MCUboot])。
? PSA 可更新 RoT:“安全”應(yīng)用程序,實現(xiàn)一組隔離在安全/特權(quán)級環(huán)境中的安全服務(wù),非安全應(yīng)用程序可通過PSA API 在非安全應(yīng)用程序運行時間調(diào)用這些服務(wù)(參見[mbed-crypto]):
– 固件更新服務(wù):TF?M 固件更新(FWU)服務(wù)實現(xiàn) PSA 固件更新 API,以便應(yīng)用程序安裝新固件。
– 內(nèi)部可信存儲 服務(wù):TF?M 內(nèi)部可信存儲(ITS)服務(wù)實現(xiàn) PSA 內(nèi)部可信存儲 API,以便在微控制器內(nèi)置 Flash 存儲器區(qū)域中寫入數(shù)據(jù),該區(qū)域通過硬件安全保護機制與非安全或非特權(quán)級應(yīng)用程序隔離開來。
– 密碼服務(wù):TF?M 密碼服務(wù)實現(xiàn) PSA 密碼 API,以便應(yīng)用程序使用密碼原語,如對稱和非對稱密碼、哈希、消息認證碼(MAC)、關(guān)聯(lián)數(shù)據(jù)的認證加密(AEAD)、隨機化和密鑰派生。它附帶 PSA 密碼驅(qū)動程序接口,便于使用專用硬件。它基于 Mbed 密碼開源軟件(參照[mbed-crypto])。
– 初始認證服務(wù):TF?M 初始認證服務(wù)允許應(yīng)用程序在驗證過程中向驗證實體證明設(shè)備身份。初始認證服務(wù)可以根據(jù)請求創(chuàng)建一個令牌,其中包含特定于設(shè)備的固定數(shù)據(jù)集。
? 應(yīng)用程序可更新 RoT:隔離在安全/非特權(quán)級環(huán)境中的安全服務(wù),非安全應(yīng)用程序可在非安全應(yīng)用程序運行時間調(diào)用這些服務(wù)。
– 受保護存儲 服務(wù):TF?M 受保護存儲(PS)服務(wù)實現(xiàn) PSA 受保護存儲 API,以便在可能不可信的存儲環(huán)境中進行數(shù)據(jù)加密和寫入結(jié)果。作為參考,PS 服務(wù)采用基于 AES-GCM 的 AEAD 加密策略來保護數(shù)據(jù)的完整性和真實性。
– 第三方:實現(xiàn)額外的產(chǎn)品特定的安全服務(wù)的 RoT 應(yīng)用程序。
安全啟動和安全固件更新服務(wù)
(PSA 不可變 RoT)
5.1 產(chǎn)品安全介紹
現(xiàn)場部署的設(shè)備在不受信任的環(huán)境中運行,因此會受到威脅和攻擊。為了減輕受攻擊風(fēng)險,我們的目標(biāo)是只在設(shè)備上運行可靠的固件。允許更新固件映像以便修復(fù)故障或引入新特性或應(yīng)對措施,這對連接的器件而言十分常見。但是,如果不以安全的方式執(zhí)行,則容易受到攻擊。其后果可能是破壞性的,如固件克隆、惡意軟件下載或設(shè)備損壞。
因此,必須設(shè)計安全解決方案來保護敏感數(shù)據(jù)(甚至可能是固件本身)和關(guān)鍵操作。典型的對策基于密碼技術(shù)(帶有相關(guān)密鑰)和內(nèi)存保護機制:
? 加密可確保固件傳輸期間的完整性(確保數(shù)據(jù)未被破壞)、身份驗證(確保某個實體確實符合其聲明)以及機密性(確保只有經(jīng)過授權(quán)的用戶才能讀取敏感數(shù)據(jù))。
? 內(nèi)存保護機制可以防止外部攻擊(例如,通過 JTAG 物理訪問設(shè)備)以及來自其他嵌入式非安全進程的內(nèi)部攻擊。以下章節(jié)介紹實現(xiàn)完整性和身份驗證服務(wù)的解決方案,以解決 IoT 終端節(jié)點設(shè)備最常見的威脅。
5.2安全啟動
安全啟動 (SB)確保所執(zhí)行的用戶固件映像的完整性和真實性:使用密碼檢查,防止運行未經(jīng)授權(quán)或惡意修改的軟件。
安全啟動過程實現(xiàn)了一個可信根:從該可信組件開始(圖 2 中的步驟 1),在其他每個組件執(zhí)行(圖 2 中的步驟 3)前驗證該組件(圖 2 中的步驟 2)。對完整性進行驗證,以確保即將執(zhí)行的映像未被破壞或惡意修改??煽啃詸z查旨在驗證固件映像是來自可信且已知的源,以防止未經(jīng)授權(quán)的實體安裝及執(zhí)行代碼。
5.3安全固件更新
安全固件更新 (SFU)實現(xiàn)了安全的現(xiàn)場固件更新,可以安全地將新固件映像下載到設(shè)備。
如圖 3 中所示,通常有兩個實體參與固件更新過程:
? 服務(wù)器
– 可以是 OEM 制造商服務(wù)器或 Web 服務(wù)。
– 存儲設(shè)備固件的新版本。
– 與設(shè)備通信,如果可用,則以加密形式發(fā)送該新映像版本。
? 器件
– 現(xiàn)場部署。
– 嵌入了運行固件更新過程的代碼。
– 與服務(wù)器通信并接收新的固件映像。
– 驗證、解密并安裝新固件映像,然后執(zhí)行它。
固件更新通過以下步驟進行:
1. 如果需要更新固件,則創(chuàng)建一個新的加密固件映像并將其存儲在服務(wù)器中。
2. 新的加密固件映像通過不受信任的通道發(fā)送到現(xiàn)場部署的設(shè)備。
3. 下載、檢查并安裝新映像。固件更新在完整的固件映像上完成。
固件更新容易受到第 5.1 節(jié) 產(chǎn)品安全介紹中所示風(fēng)險的影響:密碼技術(shù)用來確保機密性、完整性和身份驗證。實現(xiàn)機密性以保護固件映像,這可能是制造商的關(guān)鍵資產(chǎn)。
通過不受信任的通道發(fā)送的固件映像被加密,因此只有具有密鑰訪問權(quán)的設(shè)備才能解密固件包。驗證完整性以確保接收的映像沒有損壞。
可靠性檢查旨在驗證固件映像是來自可信且已知的源,以防止未經(jīng)授權(quán)的實體安裝及執(zhí)行代碼。
5.4加密操作
TFM_SBSFU_Boot 應(yīng)用程序示例附帶可配置的密碼方案(固件驗證和固件加密解決方案):
? 用于映像真實性驗證的 RSA-2048 非對稱加密,為確保映像機密性而進行密鑰 RSA-OAEP 加密的 AES-CTR-128 對稱加密,以及用于映像完整性檢查的 SHA256 加密。
? 用于映像真實性驗證的 RSA-3072 非對稱加密,為確保映像機密性而進行密鑰 RSA-OAEP 加密的 AES-CTR-128 對稱加密,以及用于映像完整性檢查的 SHA256 加密。
? 用于映像真實性驗證的 ECDSA-256 非對稱加密,為確保映像機密性而進行密鑰 ECIES-P256 加密的AES-CTR-128 對稱加密,以及用于映像完整性檢查的 SHA256 加密。
請參考[MCUboot] 開源網(wǎng)站了解關(guān)于密碼方案的更多信息。
長按掃碼關(guān)注公眾號
更多資訊,盡在STM32
▽點擊“閱讀原文”,可下載原文檔
原文標(biāo)題:用戶手冊|STM32CubeU5 TFM 應(yīng)用程序入門
文章出處:【微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
單片機
+關(guān)注
關(guān)注
6023文章
44376瀏覽量
628499 -
STM32
+關(guān)注
關(guān)注
2258文章
10828瀏覽量
352517
原文標(biāo)題:用戶手冊|STM32CubeU5 TFM 應(yīng)用程序入門
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論