如何使用 TrustZone 以最低的硬體複雜度及成本保護 IoT 裝置

作者:Jacob Beningo

資料提供者:DigiKey 北美編輯群

相較於嵌入式產品傳統上要求的安全措施,位於邊緣的 IoT 裝置需要採取更多的安全措施。對於具備電氣工程背景,但沒有密碼學或系統安全專長的團隊及開發人員來說,要瞭解並開始實施安全措施通常有其困難。

在現今的開發週期中,開發人員幾乎沒有時間和預算能夠從頭開始學習,也無法變成安全專家。但他們可以利用現有的安全解決方案,再根據特定的需求進行客製化。

本文將介紹 Arm® 的 TrustZone。這款解決方案很有意思,且逐漸受到微控制器架構系統設計人員的歡迎。舉例來說,STMicroelectronics 就推出支援 TrustZone 的 STM32L5 系列微控制器,本文也將展示如何使用相關的開發套件來開始使用 TrustZone。

透過隔離達到安全性

安全嵌入式系統的核心要件是透過隔離達到安全性。其背後概念是:私鑰、使用者資料及安全功能等重要資料資產,必須與圖形使用者介面元素或即時作業系統 (RTOS) 等通用資料和功能隔離開來。雖然有些方法可用來建立軟體隔離,但安全專家一致認為,嵌入式系統需要透過硬體式隔離達到安全性。

有多種方法可建立硬體式隔離,例如使用微控制器及安全處理器,或是使用多核心處理器,其中一個核心專門用來處理安全功能。新款 Arm Cortex®-M23、Cortex-M33 及 Cortex-M55 處理器可支援稱為 TrustZone 的選配硬體式隔離功能。

什麼是 Arm TrustZone?

TrustZone 是一種在單核心微控制器中實作的硬體機制,可將執行環境區分為安全及非安全的記憶體、週邊裝置及功能。每個執行環境還包含一個記憶體保護單元 (MPU),可進一步隔離記憶體區域,提供「更多隔離層」以阻止試圖存取資料資產的潛在攻擊者。

嵌入式開發人員通常會將系統劃分成至少兩個專案,即非安全的執行專案 (往往稱為使用者專案),以及安全的執行專案 (往往稱為韌體專案)。啟用 TrustZone 的微控制器啟動後會進入安全狀態並啟動系統,接著才會跳至非安全狀態以執行使用者應用 (圖 1)。

TrustZone 專案透過硬體機制達到隔離示意圖圖 1:TrustZone 專案透過硬體機制達到隔離,該機制將嵌入式軟體劃分為使用者專案 (非安全) 以及韌體專案 (安全)。(圖片來源:Arm)

使用者專案僅可透過在韌體專案和使用者專案之間建立的安全閘道來存取安全功能,且只能在觸發例外的情況下存取安全記憶體位置。

選擇具有 TrustZone 功能的開發板

瞭解 TrustZone 最簡單的方法就是開始使用這個功能。但開始之前,開發人員必須先選擇開發板。市面上已有多款來自不同微控制器供應商的開發板可供選擇,但請注意,這些開發板實作 TrustZone 的方式各有不同,因此挑選時需多費心。

若要開始使用 TrustZone ,STMicroelectronics 的 STM32L562E 探索套件是很好的開發板範例 (圖 2)。

STMicroelectronics 的 STM32L562E 探索套件圖片圖 2:STM32L562E 探索套件內含多個板載感測器、藍牙及 I/O 擴充板,可讓您輕鬆展開 TrustZone 應用。(圖片來源:STMicroelectronics)

此套件提供多種支援功能,在初次使用 TrustZone 時相當實用。例如,此開發套件內含 1.54” 240 x 240 畫素 TFT LCD 模組 (包含觸控面板)、低功耗藍牙 v4.1 模組、iNEMO 3D 加速計與陀螺儀、板載 STLINK-V3E,以及其他眾多特點,可進行 I/O 及週邊裝置擴充。

第二款可用於 TrustZone 入門的開發板是 STMicroelectronics 的 NUCLEO-L552ZE-Q Nucleo 板 (圖 3)。

STMicroelectronics 的 STM32L552ZE-Q NUCLEO 開發板圖片圖 3:STM32L552ZE-Q NUCLEO 開發板提供支援 TrustZone 的處理器、ST-LinkV3 以及可用於客製化開發活動的擴充排針座。(圖片來源:STMicroelectronics)

不同於 STM32L562E 探索套件,NUCLEO-L552ZE-Q 是一款基本的開發板,內含 ST-LinkV3、STM32L552VET6 微控制器、擴充連接埠及 LED。這款開發板非常適合想要嘗試 TrustZone,並且希望盡快整合其自有硬體元件的開發人員。

儘管 NUCLEO-L552ZE-Q 沒有太多花俏的功能,但 STM32L552VET6 相當令人驚艷。這是一款 Arm Cortex-M33 處理器,內含浮點單元 (FPU)、高達 512 KB 的快閃記憶體以及 256 KB 的 SRAM。除了 TrustZone 之外,還內建多種安全功能,例如具有唯一啟動項的信任根、安全韌體安裝,以及 Trusted Firmware for Cortex-M (TF-M) 的安全韌體升級支援。

這兩款開發板的處理器都包含 TrustZone 安全仲裁單元 (SAU),可用於設定哪些記憶體及週邊裝置可受到 TrustZone 的保護。有些微控制器供應商在實作 TrustZone 時未包含 SAU,這不一定會造成問題,但在設定 TrustZone 時需要採取不同的程序。

打造第一個以 TrustZone 為基礎的應用

要開始使用和運行 STMicroelectronics 的開發板,需要幾個步驟及軟體套件。首先,開發人員要下載 STM32CubeIDE。STM32CubeIDE 提供應用開發用的編譯器、微控制器軟體套裝和 IDE,以及任何相關的應用說明 (包含 STM AN5394)。

使用現成的 TrustZone 範例專案是開始使用和運行應用的最快方法。STM32Cube_FW_L5 軟體套裝內含多個專案。此軟體包含在下載的 STM32CubeL5 軟體內。下載完成之後,開發人員便可匯入 TrustZoneEnabled 專案,路徑如下:

STM32Cube_FW_L5_V1.2.0\STM32Cube_FW_L5_V1.2.0\Projects\STM32L552E-EV\Templates\TrustZoneEnabled\

匯入專案後,開發人員可以看到該專案具有階層式專案結構,將應用劃分為安全及非安全的應用 (圖 4)。

TrustZone 專案以階層式專案結構進行實作示意圖圖 4:TrustZone 專案以階層式專案結構進行實作,可劃分為安全及非安全的專案。(圖片來源:Beningo Embedded Group)

這些專案中有許多值得探索的細節。AN5394 提供大量細節,而每個專案 Doc 資料夾中的 readme.txt 檔案,可說明安全及非安全專案的詳細資訊。為說明本文,我們將探討與 TrustZone 相關的最重要概念。具體而言就是如何配置 TrustZone。配置資訊位於 partition_stm32L562xx.h 檔案中,路徑如下:

C:\STM32Cube_FW_L5_V1.2.0\Projects\STM32L562E-DK\Templates\TrustZoneEnabled\Secure\Inc

此檔案內含 SAU 的設定。例如,圖 5 顯示了 SAU 區域 0 的設定。此區域目前配置為安全執行。而圖 6 則顯示配置為非安全的 SAU 區域 1。

將 SAU 區域 0 配置為安全執行的程式碼圖 5:SAU 可用於配置哪些記憶體區域為安全區域,哪些為非安全區域。以上程式碼展現如何將 SAU 區域 0 配置為安全執行。(圖片來源:Beningo Embedded Group)

SAU 區域 1 配置為非安全執行示意圖圖 6:SAU 可用於配置哪些記憶體區域為安全區域,哪些為非安全區域。以上程式碼展現如何將 SAU 區域 1 配置為非安全執行。(圖片來源:Beningo Embedded Group)

開發人員需決定哪些區域為安全區域,哪些區域為非安全區域,然後使用分區檔來配置 SAU。建立這些設定並不代表 TrustZone 將會啟用!若要將以 TrustZone 為基礎的應用編程至目標,開發人員需要將 TZ 選項位元組設為 1,才能啟用 TrustZone。在啟動期間才會啟用 TrustZone,並且讀取和使用 SAU 配置。

使用 TrustZone 的秘訣與訣竅

開始使用 TrustZone 並不困難,但開發人員必須稍微換個角度思考其應用設計。以下是一些入門的「秘訣與訣竅」:

  • 無需保護所有的資料。事先確認需要保護的關鍵資料資產。
  • 利用 CMSIS-Zone 及 Trusted Firmware for Cortex-M (TF-M) 等現有的安全框架來加速開發作業。
  • 仔細探查裝置面臨的潛在威脅,然後選擇支援硬體及軟體解決方案的微控制器來防範這些威脅。
  • TrustZone 僅提供一個隔離層。利用 MPU 及其他硬體機制建立多個硬體式隔離層。
  • 在架構階段 (而非實作階段) 確定安全及非安全程式碼要件。

開發人員若遵循這些「秘訣和訣竅」,便可在保護 IoT 裝置時省下很多時間與麻煩。

結論

對於希望保護其裝置及資料資產的 IoT 開發人員來說,TrustZone 是相當重要的工具。實作安全解決方案的方式有許多種,但正如我們所見,TrustZone 為開發人員提供了單一核心解決方案,可提供傳統的軟體開發模型。唯一的區別是,開發人員需要開始考慮安全及非安全的元件、資料及執行緒。

DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo 是嵌入式軟體顧問,目前與超過十幾個國家的客戶合作,透過產品品質、成本和上市時間的改善,促成業務的大幅轉型。他曾在嵌入式軟體開發技術上發表超過兩百篇文章,是深思熟慮的講師和技術培訓師,共擁有三個學位,包括密西根大學的工程碩士學位。歡迎透過以下方法洽詢,電郵:[email protected]、網站:www.beningo.com,亦可登記取得他發行的Embedded Bytes 每月電子報

關於出版者

DigiKey 北美編輯群