使用 PSoC 64 保護嵌入式系統的安全

作者:Jacob Beningo

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

連線至網際網路的產品數量,持續呈現大幅度成長。許多產品團隊面臨的問題是,嵌入式軟體開發人員對於安全性的相關經驗不足。缺乏經驗可能導致會忽略安全需求、安全漏洞和實作不佳等問題。結果導致連線的系統沒有適當保護,且智慧財產、裝置資料和使用者資料很容易遭人盜用。

微控制器型系統的設計人員有多種解決方案可供使用,不但可用於簡化安全實作,還可提供成功實作所需的工具。例如,單核心微控制器可以使用 Arm 的 TrustZone,該產品屬於 Armv8-M 架構 (及更高版本) 的一部分。另外,還有採用多核心微控制器的解決方案。

本文將說明開發人員可如何使用多核心處理器來保護其嵌入式解決方案。具體來說,其可以檢查 Cypress PSoC 64 安全微控制器及其提供的工具,以實作安全解決方案。

嵌入式安全基礎知識

設計安全產品的核心基礎之一,就是利用硬體式隔離。此種隔離有多種形式,例如隔離式執行環境,或基於記憶體保護單元 (MPU) 的隔離式記憶體。在最高等級中,微控制器必須能夠將其執行環境分成安全處理環境 (SPE) 和非安全處理環境 (NSPE)。

SPE 是一種隔離式執行環境,可將其記憶體、元件和應用程式碼與 NSPE 分開。SPE 可視為一種安全處理器。SPE 會執行安全程式碼與作業,包括安全作業系統和/或信任根 (RoT)。SPE 也會執行加密、安全儲存、憑證以及安全記錄等受信任服務。與安全作業相關的少數受信任應用程式,將在 SPE 中執行。

NSPE 本身可視為功能豐富的執行環境,除了安全作業外,還可以執行其他所有作業。事實上,NSPE 確實是大多數嵌入式開發人員所熟悉的編程模式,其具有 RTOS 和大多數應用程式的元件。

硬體式隔離是 Arm® 平台安全架構 (PSA) 所提供的核心租戶或最佳實務之一,可用來打造安全系統。如圖 1 所示,以 PSoC 64 為例,我們實作了剛才討論的不同隔離層。在此範例中,SPE 和 NSPE (1) 將執行時間環境置於不同的處理器上,以產生硬體隔離。除了執行時間分離外,還進一步隔離了 RoT 和受信任服務 (2)。最後,SPE 中的每個受信任應用程式,也透過受信任分割和 MPU (3) 等工具進行隔離。

安全應用程式使用硬體式隔離的示意圖圖 1:安全應用程式使用硬體式隔離來分離執行環境。1) NSPE 和 SPE 受隔離 2) RoT 和受信任服務受隔離 3) 受信任應用程式受隔離。(圖片來源:Arm/Cypress)

PSoC 64 是雙核心微控制器,而 NSPE 則在 Arm Cortex®-M4 處理器上執行,SPE 則在 Arm Cortex-M0+ 處理器上執行。Arm Cortex-M0+ 會執行所有的安全功能,並可透過處理器內部通訊 (IPC) 匯流排與 Cortex-M4 進行通訊。此架構限制了對硬體隔離式 SPE 的存取。

要開始採用 PSoC 64,開發人員可考慮使用 PSoC 64 Secure Boot Pioneer 套件

PSoC 64 Secure Boot Pioneer 套件

PSoC 64 Secure Boot Pioneer 套件 (圖 2) 具備開發人員開始保護其應用程式所需的一切工具。首先,它有一個 PSoC 64 模組,而此模組含有 PSoC 64 微控制器、外部記憶體和所有支援電路 (以紅色顯示)。外部記憶體可用來儲存應用程式碼,或用來儲存新的韌體映像檔,以進行安全的韌體空中 (FOTA) 更新。

PSoC 64 Secure Boot Pioneer 圖片圖 2:PSoC 64 Secure Boot Pioneer 套件具備開發人員開始開發安全 IoT 應用程式所需的一切工具。(圖片來源:Cypress)

其次,此套件有一個 Wi-Fi 模組,可讓開發人員將主機板連線至網路。Wi-Fi 模組對 IoT 應用程式特別有用,因為主機板將在此應用程式中連線至 AWS 或 Azure 等雲端服務。此開發板可支援 Amazon FreeRTOS,我們將在下一節中對此進行探討。

最後,Pioneer 套件可支援許多擴充功能,其中包括引腳排針座、Arduino 排針座及多種感測器。開發人員可以利用板載觸控滑桿和觸控按鈕、按鈕、電位器等。此外,該主機板的設定有利於為幾乎所有應用程式進行客製化。

PSoC 64 Secure Software 套件

設計安全的嵌入式應用程式既耗時又困難。開發人員應尋求有助於降低成本及加速上市時間的解決方案,同時還要確保其應用程式的安全性。為此,PSoC 64 提供了各種軟體,以便開發人員能夠快速打造出安全的應用程式。

例如,CySecureTools 為開發人員提供了一組建立金鑰和憑證的工具,以及用來簽署使用者應用程式和佈建 Cypress 微控制器的工具。此工具允許開發人員轉移 Cypress RoT,然後注入他們自己的安全資產。有關如何設定及使用 CySecureTools 的資訊,請參閱 GitHub 儲存庫的 README 檔案。

IoT 開發人員將會發現使用 FreeRTOS 支援 AWS是非常實用的工具。GitHub 儲存庫包含多個可搭配 PSoC 64 使用 FreeRTOS 和 AWS 的實用範例。開發人員可能會感興趣的第一個範例是可將 MQTT 訊息從 PSoC 64 傳輸到 AWS 雲端的「Hello World」應用程式。此範例可讓開發人員逐步完成佈建程序、金鑰產生階段和部署階段。在範例結束時,開發人員會將一個安全的內嵌式元件連線至 AWS。若要詳細聊解如何開始使用,請參閱 CY8CKIT-064S0S204343 使用入門套件指南。

使用 Trusted Firmware-M (TF-M) 保護應用程式

PSoC 64 為開發人員提供一個即用型安全架構,可輕鬆針對應用程式進行客製化。開發人員可能會發現,從軟體的角度來瞭解幕後運作將極為實用。具體而言,PSoC 64 韌體會利用名為 Trusted Firmware-M (TF-M) 的開放原始碼基準安全架構。

TF-M 是 Arm PSA IoT 安全架構的參考實作,其為開發人員提供了實用安全工具,例如裝置憑證、韌體驗證、加密服務、裝置機密管理和安全分割等。Cypress 利用 TF-M 打造其安全架構,以便開發人員可以在自己的應用程式中使用此架構。

開發人員可以透過新增自己的程式碼、安全設定檔等方式,來修改其安全架構。但是,請務必記住,SPE 軟體的修改次數越多,產生漏洞的機會就越大。開發人員需要仔細衡量與變更、新增或減低基準韌體相關的風險。

保護嵌入式應用程式安全的訣竅與秘訣

首次嘗試保護嵌入式應用程式的開發人員,需要考慮很多因素。以下是幾個可以簡化並加速開發的「訣竅與秘訣」:

  • 在開發週期的早期執行威脅模型和安全性分析 (TMSA)。
  • 使用開發板來測試裝置 RoT、Secure Bootloader、元件佈建程序和韌體更新。
  • 切勿單獨實作安全性!利用現有的開放原始碼和安全韌體堆疊,以盡可能減少重工。
  • 請務必仔細考慮到裝置的整個使用壽命期間,包括如何安全地予以除役。
  • 探討 CySecureTools 之類的工具;這些工具附帶範例安全範本、軟體和相關範例。
  • 複製 FreeRTOS GitHub 儲存庫時,請複製最新的標記版本。若複製供貨中的主流產品,通常會發現工具不相容,且程式錯誤仍在進行中。
  • 逐步瀏覽「Cypress CY8CKIT-064S0S2-4343W 套件使用入門」,進而展開專案。此指南提供執行基準應用程式所需的必要資訊,然後可以根據特定的產品用途,對應用程式進行修改。

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

結論

實現安全性並不難。嵌入式開發人員應專注於產品差異化,也就是其產品機密。但大多數情況下,安全性都會被排除在外。本文探討 PSoC 64 可如何幫助開發人員來快速保護其應用程式,即不僅可提供硬體式隔離環境,還會提供軟體工具架構。有了硬體與軟體解決方案雙管齊下,開發人員便可加快安全開發週期。

DigiKey logo

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

關於作者

Image of Jacob Beningo

Jacob Beningo

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

關於出版者

DigiKey 北美編輯群