盡管基于硬件的加密設備可以減少物聯(lián)網(wǎng) (IoT) 的漏洞,但即便使用了最強大的加密設備,如果密鑰和相關數(shù)據(jù)缺乏足夠的保護,安全性也會大打折扣。半導體制造商通過專用安全 IC 和在處理器中內置各種安全機制,來解決密鑰和其他特權數(shù)據(jù)的保護問題。
本文將回顧密鑰在加密技術中所起的關鍵作用,并介紹 Maxim Integrated、NXP、STMicroelectronics 和 Microchip Technology 所提供的器件中內置的不同密鑰保護機制。
密鑰在加密技術中的作用
如本系列第 1 部分所述,可以使用多種硬件支持的加密算法來創(chuàng)建唯一的消息哈?;蚝灻?,甚至可以使用更廣泛的加密來將純文本加密為密文,以及將密文解密為純文本。盡管這些算法可以增強應用的安全性,但能否保護這些應用從根本上取決于加密算法所用的私鑰和其他機密數(shù)據(jù)的安全性。
在加密技術中,密鑰泄露意味著基于這些密鑰構建的安全策略、協(xié)議和機制的安全性都會受到損害。早在 19 世紀,密碼學家奧古斯特?柯克霍夫斯便曾指出,只要保證密鑰安全,加密系統(tǒng)就能保持安全——這一公理現(xiàn)在稱為柯克霍夫斯原理。更簡單地說,“敵人知道系統(tǒng)”,這便是以信息論之父克勞德·香農的名字命名的“香農的格言”。
實際上,正是由于開發(fā)人員基于如此嚴格規(guī)定的著名算法構建安全系統(tǒng),半導體制造商才得以放心地將其用于硬件加速型安全器件中。然而,最終保護這些系統(tǒng)的是這些算法所用的密鑰。
保護密鑰面臨的挑戰(zhàn)
盡管從概念上講,保護加密密鑰非常簡單,但實際上可能帶來重大挑戰(zhàn)。要實現(xiàn)更高級別的安全策略,將不可避免地用到多種采用不同算法的安全協(xié)議。這些協(xié)議和算法反過來需要協(xié)議本身創(chuàng)建的某種靜態(tài)密鑰和臨時密鑰的組合。例如,傳輸層安全性 (TLS) 會話在驗證期間使用靜態(tài)密鑰,并將共享的臨時會話密鑰用于安全消息交換。
事實上,美國國家標準技術研究院 (NIST) 確定了 19 種不同類型的密鑰以及另外 11 種需要保護的相關信息,例如橢圓曲線域參數(shù)和中間結果。NIST 進一步建議,為了實現(xiàn)更強大的安全性,應在特定時段內保護與密鑰使用相關的信息,如表 1 所示。該表僅顯示完整的 NIST 建議[1]中列出的前幾種密鑰類型。
密鑰和相關數(shù)據(jù)需要受到保護,這就意味著,開發(fā)人員在物聯(lián)網(wǎng)應用中使用密鑰時需要格外小心。對于物聯(lián)網(wǎng)設備,更大的挑戰(zhàn)可能在于如何在此數(shù)據(jù)處于多種狀態(tài)(靜止、傳輸中和使用中)下分別加以保護。保護靜態(tài)數(shù)據(jù)需要安全的存儲機制;保護傳輸中的數(shù)據(jù)需要在通過網(wǎng)絡或系統(tǒng)總線傳輸時有用于保護密鑰的方法;保護使用中的數(shù)據(jù)則需要在將密鑰用于執(zhí)行加密算法時防止密鑰公開的機制。幸運的是,開發(fā)人員可以找到各種各樣的安全設備,使用多種不同的機制來保護機密數(shù)據(jù)。
如何在啟用加密技術的半導體中保護密鑰
啟用高級加密技術的半導體解決方案通常會提供某種安全的非易失性存儲器,用于存儲密鑰和其他機密數(shù)據(jù),但就總體方法的性質而言,存在明顯不同的兩大類安全設備:專用安全 IC 和啟用加密技術的處理器。
安全 IC 設計為自足式子系統(tǒng),可從主機處理器(通常通過串行總線通信)分擔算法執(zhí)行任務。例如,Maxim Integrated 的 DS28C36 安全驗證器提供了 I2C 端口以及兩個通用 I/O (GPIO),可用于向主機處理器發(fā)送驗證成功或失敗的信號(圖 1)。
軟件集成通常也很簡單。例如,NXP 的 Plug & Trust 中間件庫將其 SE050 和 A71CH 安全元件設備的硬件功能抽象為幾個函數(shù)調用(圖 2)。
創(chuàng)建新密鑰(同樣參見圖 2 左圖)后返回一個 keyId。稍后要使用該密鑰,開發(fā)人員可通過其 keyId 引用該密鑰(圖 3,右圖),而不是通過系統(tǒng)總線公開實際密鑰值。使用 NXP 的 Plug & Trust 中間件,開發(fā)人員可以將兼容 Arduino 的 NXP Kinetis Freedom K64F 評估板與 NXP OM-SE050ARD 擴展板搭配使用來開發(fā) SE050,或與 NXP OM3710/A71CHARD 板搭配使用來開發(fā) AC71CH,從而快速實現(xiàn)安全應用。
諸如 Maxim Integrated 的 DS28C36、NXP 的 SE050、NXP 的 AC71CHTK2/TOBC2VJ 之類專用安全 IC 以及此分類中的其他器件均具有多種明顯的優(yōu)勢。除了提供相對簡單的方法為設計添加安全的功能外,將功能集成到專用安全 IC 中還能限制公開機密數(shù)據(jù)和操作。例如,Maxim Integrated 的 DS28C36 集成了硬件加密加速器、真隨機數(shù)發(fā)生器、8 千字節(jié) (Kb) 安全 EEPROM 以及其他功能模塊。DS28C36 在驗證橢圓曲線數(shù)字簽名算法 (ECDSA) 固件簽名時,可確保保護靜態(tài)、傳輸中和使用中的數(shù)據(jù),因為私鑰、相關的數(shù)據(jù)(參見圖 1)以及使用這些密鑰的操作均封閉在器件內(圖 3)。
基于處理器的密鑰保護
并非每個物聯(lián)網(wǎng)設計都能容納專用的安全 IC。某些要求可能決定了必須使用其他加密方法,或存在與封裝、物料清單 (BOM)、成本或客戶規(guī)格有關的設計限制。針對這類設計,啟用安全性的處理器,如 STMicroelectronics 的 STM32WB55 和 Microchip Technology 的 ATSAML11,提供了加密算法硬件加速引擎和機密數(shù)據(jù)保護機制的組合。雖然本文重點介紹密鑰保護,但這些處理器及其他處理器還提供了其他多種精巧的安全功能,我們將在本系列的第 3 部分介紹這些功能。
在 STMicroelectronics 的雙核 STM32WB55 無線設備中,Arm? Cortex?-M4 CPU (CPU1) 用作主機處理器,通過一個專用的處理器間通信控制器 (IPCC) 和信號量機制 (HSEM),與無線電子系統(tǒng)的專用 Arm Cortex-M0+ 微控制器 (CPU2) 通信。在 CPU2 子系統(tǒng)內,安全存儲器為高級加密標準 (AES) 硬件加速器所用的密鑰提供了客戶密鑰存儲 (CKS) 區(qū)域(圖 4)。
STM32WB55 架構可保護 CKS 密鑰不被調試端口或主機 CPU1 處理器運行的非安全例程訪問。與此同時,在主機 CPU1 上運行的可信應用程序則可通過使用密鑰索引引用密鑰的方式,使用 AES 加密技術中的特定 CKS 密鑰。AES 硬件模塊通過內部總線從 CKS 區(qū)域接收所需的密鑰,從而確保密鑰傳輸在 CPU2 子系統(tǒng)內保持受保護的狀態(tài)。
在基于 Arm Cortex-M23 的 ATSAML11 處理器中,Microchip Technology 依賴于 Arm TrustZone 技術內置的安全功能。TrustZone 使用基于硬件的機制來強制隔離可信和不可信資源。
在 ATSAML11 處理器中,Microchip 使用 TrustZone 實現(xiàn)定義歸屬單元 (IDAU) 實施安全策略,包括按安全和非安全應用程序代碼對存儲器子區(qū)域進行差異化的訪問控制。256 字節(jié)安全隨機存取存儲器 (RAM) 區(qū)域稱為 TrustRAM,提供了用于臨時密鑰的額外安全存儲。
安全的配置
專用的安全 IC 和處理器為開發(fā)人員提供了保護物聯(lián)網(wǎng)設備中的密鑰和相關數(shù)據(jù)所需的機制。但是,由于在最初使用密鑰或證書加載或配置安全 IC 或處理器的過程中會出現(xiàn)故障,導致經常出現(xiàn)安全漏洞,致使密鑰容易被盜。網(wǎng)絡罪犯通過黑市迅速出售這類盜取的密鑰和受損的證書,從而使黑客能夠利用看似有效的憑據(jù)滲透安全網(wǎng)絡。
本系列文章的第 4 部分將討論制造商針對特定的物聯(lián)網(wǎng)云服務(包括 Amazon Web Services、Microsoft Azure、Google Cloud 等)使用密鑰和證書預先配置的安全設備和開發(fā)工具包。但在生產部署中,開發(fā)人員通常更傾向于或需要使用自己的定制密鑰和證書。
為支持定制配置,大多數(shù)半導體制造商通過自己的設施或與配置合作伙伴合作提供配置服務。例如,Microchip 為設備配置的定制密鑰是使用第三方合作伙伴提供的配置套件(包括 Trustonic 和 IAR Systems 的 Secure Thingz)中包含的安全包裝工具創(chuàng)建的(圖 5)。
做好生產準備后,OEM 開發(fā)人員使用安全包裝工具以加密形式向 Microchip 工廠提供密鑰和證書,這些密鑰和證書只能由合作伙伴安全編程設施內的硬件安全模塊進行解密。這種方法可滿足在非安全網(wǎng)絡上交換生產信息的需求,同時最終產生了具有安全配置的密鑰和固件的生產就緒設備。
使用 PUF 技術的自配置
在啟用安全性的處理器和專用 IC 中,物理不可克隆功能 (PUF) 技術的使用越來越多,這或許提供了一種甚至更安全的配置方法。利用 PUF 技術,安全設備可以使用根據(jù)每個設備的唯一特征派生的密鑰,而不是將密鑰顯式加載到設備中。
PUF 技術依賴于制造差異和其他物理過程,致使該值對設備本身而言是唯一的,并且在正常系統(tǒng)操作下可以重復。如下所述,該結果值可用作唯一的加密私鑰,從根本上為每個啟用 PUF 的設備提供了內置的密鑰。
除了實現(xiàn)自配置外,PUF 技術還增加了另一層安全性。若試圖滲透設備以公開設備唯一值,則會改變用于生成該設備唯一值的特征,從而改變生成的值。
盡管存在不同的 PUF 機制,但啟用 PUF 技術的設備的基本方法大體相同。例如,Maxim Integrated 在其 MAX32520 安全微控制器以及一些安全 IC 中使用的 ChipDNA PUF 功能,需依賴于一系列模擬 PUF 元件和控制邏輯來生成密鑰(圖 6)。
在 Maxim Integrated 的 DS28C39 ECDSA 安全驗證器中,ChipDNA PUF 輸出將用作 ECDSA 操作的私鑰,以及保護相關數(shù)據(jù)的私鑰(圖 7)。
在啟用 PUF 技術的 LPC55S 處理器系列中,NXP 基于根據(jù) SRAM 陣列的初始隨機狀態(tài)生成的輸出使用 PUF 技術(圖 8)。
在這些設備中,PUF 的使用從注冊操作開始,該操作生成唯一的數(shù)字指紋和相關的激活碼,在執(zhí)行新的注冊操作之前這些指紋和激活碼會一直有效。激活碼存儲在設備的受保護閃存中,設備利用該激活碼,通過在上電時以一致方式生成的 SRAM 啟動數(shù)據(jù)來重建數(shù)字指紋。
有了數(shù)字指紋,開發(fā)人員便可以對自己的密鑰進行加密,或生成密鑰。在此過程中,設備將返回一個密鑰碼。通過提供激活碼、密鑰碼和索引,開發(fā)人員可以使設備從適當?shù)钠厦荑€插槽解密所需的私鑰,并將其交付給密碼軟件庫。密鑰插槽 0 提供一種特殊的密鑰解密方法,通過內部總線將密鑰直接交付給處理器的 AES 硬件加密引擎(圖 9)。
LPC55S 的 PUF 數(shù)字簽名在密鑰加密和解密中起著密鑰加密密鑰 (KEK) 的作用,該密鑰傳統(tǒng)上用于增強對靜態(tài)或傳輸中的機密數(shù)據(jù)的保護。使用 KEK 有助于緩解保護機密數(shù)據(jù)所需的對更大安全存儲及相關內部機制的需求。
開發(fā)人員可以使用 KEK 對定制密鑰和相關數(shù)據(jù)進行加密,并將加密結果存儲在非安全的非易失性存儲器中。這種方法使開發(fā)人員即使在安全存儲空間有限的設備中也能保護各種類型的密鑰和相關數(shù)據(jù)。有了 PUF 生成的 KEK,開發(fā)人員便可以實現(xiàn)能夠在整個開發(fā)周期中保護應用的安全物聯(lián)網(wǎng)設備。
總結
帶有加密加速器的專用安全 IC 和安全處理器的出現(xiàn),極大地增強了開發(fā)人員構建安全系統(tǒng)的能力。但是,安全系統(tǒng)嚴重依賴于私鑰及其他與加密機制和協(xié)議相關的數(shù)據(jù)的安全性。安全設備通過采用多種不同的機制,可以為靜態(tài)、傳輸中和使用中的機密數(shù)據(jù)提供保護。利用這些設備,開發(fā)人員可以構建更安全的物聯(lián)網(wǎng)解決方案,而不會影響其他設計要求。