IoT 安全基礎知識 - 第 2 篇:保護安全金鑰
資料提供者:DigiKey 北美編輯群
2020-06-11
編者說明:儘管 IoT 裝置數量激增,保護這些裝置的安全問題仍持續受到關注,尤其在工業物聯網 (IIoT) 與關鍵任務應用中,企業和個人資料可能在遭駭時受到竄改,因此安全問題就成為是否決定採用這類連線裝置的障礙點。保護 IoT 應用可能令人卻步,因為開發人員必須協調多種安全機制、協定和政策,而合併考量這些因素似乎相當複雜。實際上,在硬體安全裝置的幫助下,只需幾個相對簡單且直覺的原則,就能建置 IoT 裝置安全。只要遵循完善的安全實務,這些問題即可迎刃而解。此系列文章包含數篇內容,為開發人員提供實用的指南,協助其確保從一開始就遵循最佳做法。第 1 篇探討建構起安全設計的加密演算法。本文為第 2 篇,探討私鑰、金鑰管理和安全儲存在安全系統中所扮演的角色。第 3 篇檢驗安全處理器的內建機制,這些機制可用於減輕對 IoT 裝置的其他類型威脅。第 4 篇識別並說明如何在進階處理器中應用安全機制,以幫助確保已具備所需的隔離,可減輕對 IoT 裝置執行階段環境所進行的攻擊。第 5 篇說明 IoT 安全功能如何繼續使用更高等級的安全措施,將 IoT 裝置連線到 IoT 雲端資源。
儘管硬體式加密裝置可以減輕物聯網 (IoT) 的漏洞問題,但是即便使用最強大的加密裝置,若未充分保護安全金鑰和相關資料,仍會降低安全性。半導體製造商透過專用安全 IC 和處理器中內建的各種機制,解決金鑰和其他特殊權限資料的保護問題。
本文將探討金鑰在加密技術中的關鍵作用,並說明在 Maxim Integrated、NXP、STMicroelectronics 和 Microchip Technology 等公司裝置中內建的各種金鑰保護機制。
安全金鑰在加密技術中的作用
如本系列的第 1 篇所述,市面上有各種硬體支援式加密演算法可用來建立唯一的訊息雜湊或簽名,也有更多種密碼可用來將明文加密成密文,將密文解密成明文。儘管這些演算法可以增強應用的安全性,但保護這些應用的能力,基本上取決於加密演算法所用私鑰和其他機密資料的安全性。
在加密技術中,安全金鑰若遭破壞,則意味著以這些安全金鑰打造的安全策略、協定和機制的安全性將會受到影響。早在 19 世紀,密碼學家 Auguste Kerckhoffs 就指出,只要金鑰是安全的,加密系統就是安全的,這一公理現在稱為 Kerckhoffs 原則。更簡單地說,便是「敵人瞭解系統」。這句話是以資訊論之父 Claude Shannon 命名的「香農格言」。
事實上,開發人員會按照嚴格的規範以眾所周知的演算法打造安全系統,能讓半導體製造商放心地將其用於硬體加速的安全裝置中。但是,最終保護這些系統的是這些演算法所使用的安全金鑰。
保護安全金鑰所面臨的挑戰
儘管保護加密安全金鑰從概念上講非常簡單,但實際上可能是一個重大挑戰。若想實作更高階的安全政策,將不可避免地使用多重採用不同演算法的安全協定。而這些協定和演算法又需要協定本身所建立的某種靜態金鑰和臨時金鑰組合。例如,傳輸層安全性 (TLS) 工作階段會在身份驗證期間使用靜態金鑰,並在安全訊息交換中使用共用的臨時工作階段金鑰。
事實上,美國國家標準暨技術局 (NIST) 確定了 19 種不同類型的金鑰,以及另外 11 種需要保護的相關資訊,如橢圓曲線網域參數和中間結果。NIST 進一步建議,為了實現更強大的安全性,應在特定時段保護與金鑰使用相關的資訊,如表 1 所示。該表僅顯示了 NIST 完整建議[1]中所列的前幾種金鑰類型。
表 1:此內容節選自 NIST 完整建議,列出了在指定時段內應當保護的幾個不同類型的金鑰以及相關資訊。(表格來源:Digi-Key Electronics,原始資料來自 NIST) |
金鑰和相關資料需要受到保護,這意味著開發人員在 IoT 應用中使用安全金鑰時需要非常小心。對於 IoT 裝置來說,更大的挑戰在於如何在不同的狀態下保護這些資料:即處於靜態、傳輸中和使用中時。保護靜態資料需要安全的儲存機制;保護傳輸中的資料需要在透過網路或系統匯流排傳輸時設法保護安全金鑰;保護使用中的資料則需要在執行加密演算法時,有機制來防止其暴露。幸運的是,開發人員可以找到多種安全裝置,能夠使用多種不同機制來保護機密資料。
如何在支援加密的半導體中保護安全金鑰
支援高階加密的半導體解決方案,通常會提供某種類型的非揮發性安全記憶體來儲存金鑰和其他機密資料,但對專用安全 IC 和支援加密的處理器這兩大類安全裝置而言,整體作法在本質上有顯著的不同。
安全 IC 已設計為自成一體的子系統,可替通常透過串列匯流排通訊的主機處理器,分擔演算法執行任務。例如,Maxim Integrated 的 DS28C36 安全驗證器提供了 I2C 連接埠以及兩個一般用途 I/O (GPIO),可向主機處理器提供驗證成功或失敗的訊號 (圖 1)。
圖 1:Maxim Integrated 的 DS28C36 安全驗證器等安全裝置提供了完整的子系統,可以簡化整合,同時增強對內部金鑰和運作的保護。(圖片來源:Maxim Integrated)
軟體整合通常也很簡單。例如,NXP 的 Plug & Trust 中介軟體程式庫可將其 SE050 和 A71CH 安全元件裝置的硬體功能抽象為幾個函數調用 (圖 2)。
圖 2:軟體程式庫 (如 NXP 的 Plug & Trust 中介軟體) 可讓開發人員使用一些直觀的函數調用來建立金鑰 (左)、存取金鑰 (右),並充分利用 NXP 的 SE050 和 A71CH 安全元件裝置中的底層功能。(圖片來源:NXP)
建立新的金鑰 (再次參見圖 2 左側) 將返回一個 keyId。為了以後能使用該金鑰,開發人員以此 keyId 來引用該金鑰 (圖 3,右),而不是在整個系統匯流排上公開實際的金鑰值。透過 NXP 的 Plug&Trust 中介軟體,開發人員可以使用與 Arduino 相容的 NXP Kinetis Freedom K64F 評估板和 NXP OM-SE050ARD 擴充板來開發 SE050,或使用 NXP OM3710/A71CHARD 板來開發 AC71CH,快速實作安全型應用。
專用安全 IC,如 Maxim Integrated 的 DS28C36、NXP 的 SE050、NXP 的 AC71CHTK2/TOBC2VJ,以及此類別的其他裝置,可提供諸多明顯優勢。除了提供相對簡單的方法來新增設計的安全功能外,專用安全 IC 的整合功能還可以限制機密資料和操作的暴露。例如,Maxim Integrated 的 DS28C36 整合了硬體加密加速器、真實亂數產生器、8 Kb 的安全型 EEPROM 以及其他功能區塊。當 DS28C36 對橢圓曲線數位簽章演算法 (ECDSA) 韌體簽名進行身份驗證時,由於私鑰、相關資料 (參見圖 1) 及使用這些安全金鑰的操作會一直限制在裝置內進行,因此可確保保護靜態、傳輸和使用中的資料 (圖 3)。
圖 3:Maxim Integrated DS28C36 等安全裝置具有整合的功能,這意味著私鑰和相關資料會一直限制在晶片內。(圖片來源:Maxim Integrated)
以處理器為基礎的安全金鑰保護
並非每一個 IoT 設計都能容納專用的安全 IC。需求可能會決定使用其他加密方法或存在與覆蓋區、物料清單 (BOM)、成本或客戶規格有關的設計限制。針對這些設計,STMicroelectronics 的 STM32WB55 和 Microchip Technology 的 ATSAML11 等支援安全功能的處理器,整合加密演算法硬體加速引擎和機密資料保護機制。雖然本文主要探討金鑰保護,但是這些處理器和其他處理器提供了其他許多複雜的安全功能,我們將在本系列的第 3 篇中討論。
在 STMicroelectronics 的 STM32WB55 雙核心無線裝置中,Arm® Cortex®-M4 CPU (CPU1) 將用作主機處理器,透過專用處理器內部通訊控制器 (IPCC) 和旗號機制 (HSEM),與無線電子系統的專用 Arm Cortex-M0+ 微控制器 (CPU2) 進行通訊。在 CPU2 子系統中,安全記憶體為先進加密標準 (AES) 硬體加速器使用的金鑰,提供客戶金鑰儲存區 (CKS) (圖 4)。
圖 4:STMicroelectronics 的 STM32WB55 雙核心處理器僅允許無線電子系統核心 (CPU2) 直接存取金鑰,但主機核心 (CPU1) 上的受信任應用程式可間接地使用這些金鑰。(圖片來源:STMicroelectronics)
STM32WB55 架構可保護 CKS 金鑰不被除錯埠或主機 CPU1 處理器上的不安全常式存取。同時,主機 CPU1 上的受信任應用程式可透過金鑰索引引用以 AES 加密的特定 CKS 金鑰來使用這些金鑰。AES 硬體區塊通過內部匯流排從 CKS 區域接收所需的金鑰,從而確保金鑰在 CPU2 子系統中的傳輸持續受到保護。
對於採用 Arm Cortex-M23 的 ATSAML11 處理器,Microchip Technology 依賴內建於 Arm TrustZone 技術的安全功能。TrustZone 使用硬體式機制來強制隔離受信任和不受信任的資源。
在 ATSAML11 處理器中,Microchip 使用 TrustZone 實施定義屬性單元 (IDAU) 來執行安全策略,如透過安全和非安全應用程式碼對記憶體子區域進行差動式存取控制。256 位元安全隨機存取記憶體 (RAM) 區域稱為 TrustRAM,可為臨時金鑰提供額外的安全儲存。
安全佈建
專用的安全 IC 和處理器,可為開發人員提供保護 IoT 裝置中安全金鑰和相關資料所需的機制。但是,在初始載入或佈建具有安全金鑰或憑證的安全 IC 或處理器的過程中,常常會因故障出現安全漏洞,導致安全金鑰被盜。網絡犯罪分子會透過黑市迅速出售被盜的金鑰和受到破壞的憑證,讓駭客能夠使用看似有效的憑證來滲透安全網路。
本系列的第 4 篇將討論製造商為 Amazon Web Services、Microsoft Azure、Google Cloud 等特定 IoT 雲端服務,預先佈建金鑰與憑證的安全裝置和開發套件。然而,對於生產部署,開發人員通常更喜歡或需要使用自己的客製化金鑰和憑證。
為了支援客製化佈建,大多數半導體製造商會透過自己的設施或與佈建合作夥伴協作來提供佈建服務。例如,Microchip 會使用 Trustonic 和 IAR Systems 的 Secure Thingz 等第三方合作夥伴提供的佈建套件,並以套件中安全包裝工具所建立的客製化安全金鑰對裝置進行佈建 (圖 5)。
圖 5:原始設備製造商 (OEM) 開發人員可使用安全包裝工具來保護安全金鑰,這些金鑰稍後將在製造合作夥伴的安全編程設施中使用,以佈建 Microchip SAML11 等安全微控制器。(圖片來源:Microchip Technology)
準備投入生產時,OEM 開發人員將使用安全包裝工具,以加密形式向 Microchip 工廠提供金鑰和憑證,而解密只能由位於合作夥伴安全編程設施內的硬體安全模組來完成。這種方法可滿足在不安全網路上交換生產資訊的需求,而且最終會產生具有安全佈建金鑰和韌體且可開始生產的裝置。
使用 PUF 技術進行自我佈建
在支援安全功能的處理器和專用 IC 中,越來越多使用物理反複製功能 (PUF) 技術,這種趨勢或許會提供一種更加安全的佈建方法。PUF 技術允許安全裝置使用依據每個裝置獨特特徵所衍生的安全金鑰,而不是直接將金鑰載入裝置中。
PUF 技術依賴於製造差異和其他實際過程來產生裝置獨有且在正常系統操作下可重複的值。如下所述,所產生的值可用作加密的唯一私鑰,這實質上是為每個啟用 PUF 的裝置提供內建的安全金鑰。
除了支援自我佈建之外,PUF 技術還可增加另一層安全性。若試圖滲透裝置以暴露裝置唯一值,會改變產生該值所用的特徵,從而改變所產生的值。
儘管有不同的 PUF 機制,但是支援 PUF 的裝置都採用了大致相同的基本方法。例如,在 Maxim Integrated 的 MAX32520 安全微控制器以及一些安全 IC 使用的 ChipDNA PUF 功能,需要依賴一系列類比 PUF 元件和控制邏輯來產生金鑰 (圖 6)。
圖 6:在 Maxim Integrated 的 ChipDNA PUF 技術中,晶片控制邏輯會使用一系列 PUF 元件的隨機狀態,來產生一致的裝置專用金鑰。(圖片來源:Maxim Integrated)
在 Maxim Integrated 的 DS28C39 ECDSA 安全驗證器中,ChipDNA PUF 輸出將用作 ECDSA 操作的私鑰以及保護相關資料的私鑰 (圖 7)。
圖 7:Maxim Integrated 的 DS28C39 ECDSA 安全驗證器使用由其晶片上 ChipDNA PUF 電路產生的私鑰。(圖片來源:Maxim Integrated)
對於支援 PUF 的 LPC55S 處理器系列,NXP 使用的 PUF 技術是基於 SRAM 陣列初始隨機狀態所產生的輸出 (圖 8)。
圖 8:在 PUF 實作中,NXP 的 LPC55S 處理器系列使用來自 SRAM 的啟動資料來產生數位指紋和相關的啟動碼,這些啟動碼之後可用來恢復數位指紋以及加密或產生私鑰。(圖片來源:NXP)
在這些裝置中,PUF 的使用始於註冊操作,該操作會產生唯一的數位指紋和相關的啟動碼,這些在執行新的註冊操作之前會一直有效。啟動碼儲存在裝置受保護的快閃記憶體中,可讓裝置從上電時始終產生的 SRAM 啟動資料中重新建構數位指紋。
有了數位指紋,開發人員可以加密自己的金鑰或產生金鑰。在此過程中,裝置將返回金鑰碼。透過提供啟動碼、金鑰碼和索引,開發人員可以使裝置從相應的晶片上金鑰槽位解密所需的私鑰,並將其傳遞至加密軟體程式庫。金鑰槽位 0 提供了一種特殊的金鑰解密方法,可透過內部匯流排將金鑰直接傳遞至處理器的 AES 硬體加密引擎 (圖 9)。
在金鑰加密和解密的角色中,LPC55S 的 PUF 數位簽名相當於金鑰加密金鑰 (KEK),該金鑰傳統上是用來增強靜態或傳輸中機密資料的保護。使用 KEK 將有助於紓解對更大安全儲存以及保護機密資料所需的相關內部機制的需求。
圖 9:NXP 的 LPC55S 處理器系列使用其數位指紋作為 KEK,以解密在金鑰儲存區中受到保護並使用相關啟動碼、金鑰碼和索引以編程方式引用的金鑰。(圖片來源:NXP)
開發人員可以使用 KEK 加密客製化金鑰和相關資料,並將加密的結果儲存在非安全、非揮發性記憶體中。這種方法允許開發人員即使在安全儲存空間有限的裝置中也可以保護不同類型的金鑰和相關資料。有了 PUF 產生的 KEK,開發人員可以實作安全的 IoT 裝置,從而能夠在整個開發週期中保護應用。
結論
具有加密加速器的專用安全 IC 和安全處理器,已大大地增強了開發人員打造安全系統的能力。然而,安全系統嚴重依賴於私鑰以及與加密機制和協定相關的其他資料的安全性。安全裝置採用多種不同的機制,可為靜態、傳輸和使用中的機密資料提供保護。開發人員可使用這些裝置構建更為安全的 IoT 解決方案,而不會影響其他的設計要求。

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