對于基于微控制器的系統(tǒng)的開發(fā)人員而言,物聯(lián)網(wǎng) (IoT)、工業(yè)自動化或個人電子設(shè)備之類快速增長的應(yīng)用有著廣泛的設(shè)計要求,往往迫使開發(fā)人員在系統(tǒng)功能、性能或功耗方面做出妥協(xié)。面對越來越多的安全威脅,此類設(shè)計需要加強(qiáng)安全性,這就帶來了進(jìn)一步的挑戰(zhàn),開發(fā)人員可以使用的有效微控制器解決方案愈發(fā)減少。開發(fā)人員所需的微控制器不僅要能支持低功耗和高性能等常見要求,還要能支持設(shè)計生命周期所有階段(包括配置、通信、安全引導(dǎo)、安全固件更新等)日益提高的安全性需求。關(guān)注發(fā)燒友公眾號回復(fù)資料和郵箱地址可以獲取電子資料一份。
第 1 部分介紹了 NXP 的 LPC55S6x 微控制器系列,并說明了其特性如何滿足高性能與低功耗的要求。本文是第 2 部分,討論 LPC55S6x 微控制器集成的擴(kuò)展安全特性如何從配置、通信到安全引導(dǎo)、安全固件更新等各方面支持生命周期安全性。
如第 1 部分所述,NXP 單核?LPC55S66?和雙核?LPC55S69?微控制器將?Arm? Cortex?-M33 通用處理器內(nèi)核與旨在滿足更多專業(yè)應(yīng)用需求的硬件功能結(jié)合在一起。在這些功能中,用于對稱和非對稱加密的基于硬件的加速器提供了安全通信所需的基礎(chǔ)機(jī)制。過去認(rèn)為加密加速器足以實(shí)現(xiàn)數(shù)據(jù)保護(hù)等基本安全特性。但如今,用戶期望獲得更全面的安全特性,這使得生命周期安全性需求更為復(fù)雜,從制造中的配置延伸到現(xiàn)場調(diào)試,以及安全引導(dǎo)和安全固件更新。
為了實(shí)現(xiàn)這種擴(kuò)展保護(hù),需要一套遠(yuǎn)高于硬件級別的全面安全協(xié)議和策略。即便如此,任何安全協(xié)議的有效性都與是否存在合適的硬件機(jī)制息息相關(guān),因?yàn)橹挥杏布拍芗饶芗铀賵?zhí)行,又能消除或減少任何互連設(shè)備中不可避免會出現(xiàn)的威脅面。
LPC55S6x 架構(gòu)具有一系列能力,可提供這種基于硬件的生命周期安全性支持,首先是支持 Arm TrustZone? 技術(shù),另外還提供實(shí)現(xiàn)切實(shí)有效的安全水平所需的多層保護(hù)。
TrustZone 支持
TrustZone 能夠?qū)⒋a執(zhí)行和數(shù)據(jù)隔離到特定的安全域和非安全域,從而為安全性打下基礎(chǔ)。在程序執(zhí)行期間,主 Cortex-M33 內(nèi)核在若干不同執(zhí)行狀態(tài)(與不同的代碼執(zhí)行模式關(guān)聯(lián))之間切換。所述 CPU 狀態(tài)和代碼執(zhí)行模式包括:
- 安全特權(quán),用于執(zhí)行內(nèi)核級代碼或設(shè)備處理程序
- 安全非特權(quán),用于執(zhí)行安全的用戶代碼
- 非安全特權(quán),用于執(zhí)行典型的系統(tǒng)調(diào)用
- 非安全非特權(quán),用于執(zhí)行典型的用戶應(yīng)用程序
特權(quán)執(zhí)行與非特權(quán)執(zhí)行的區(qū)別對整體操作系統(tǒng)的穩(wěn)健性至關(guān)重要。但就本文的目的而言,我們可以將這些執(zhí)行模式統(tǒng)合起來,只關(guān)注安全和非安全操作之間的區(qū)別。在 TrustZone 架構(gòu)中,從安全 CPU 狀態(tài)切換到非安全 CPU 狀態(tài)會觸發(fā)硬件支持的限制,讓內(nèi)核訪問程序存儲器或數(shù)據(jù)。
在安全狀態(tài)下,內(nèi)核可以訪問安全和非安全存儲區(qū)中的數(shù)據(jù),但不能訪問非安全存儲區(qū)中存儲的代碼(圖 1 左)。在非安全狀態(tài)下,內(nèi)核只能訪問非安全存儲區(qū)中的代碼和數(shù)據(jù)(圖 1 右)。
圖 1:通過支持 Arm TrustZone,NXP 的 LPC55S6x 微控制器確保工作在安全 (S) 狀態(tài)(左)的內(nèi)核只能獲取 S 狀態(tài)程序存儲器的指令,而工作在非安全 (NS) 狀態(tài)(右)下的內(nèi)核則無法訪問 S 狀態(tài)存儲器中存儲的代碼或數(shù)據(jù)。(圖片來源:NXP Semiconductors)
LPC55S6x MCU 架構(gòu)在最低級別的總線訪問上執(zhí)行這種控制,從而減小常見的威脅面,例如攻擊者使用緩沖區(qū)溢出讓非安全的非特權(quán)代碼獲得對“受保護(hù)”區(qū)域的后門訪問權(quán)。這里,NXP 將 Arm TrustZone 安全屬性單元 (SAU) 與其自己的實(shí)現(xiàn)定義屬性單元 (IDAU) 結(jié)合使用,旨在完全隔離安全內(nèi)核代碼與應(yīng)用程序代碼。SAU 提供安全狀態(tài)(安全或非安全)并判斷指令是否來自允許的存儲器區(qū)域。IDAU 與設(shè)備屬性單元 (DAU) 接口以提供更高的粒度,同 SAU 一道確定特定地址的安全屬性。這樣,總線請求便能以適當(dāng)?shù)陌踩院吞貦?quán)級別進(jìn)行傳送(圖 2)。
圖 2:NXP 的 LPC55S6x 微控制器總線事務(wù)級別的訪問保護(hù),使用 Arm TrustZone SAU 及其自己的 IDAU 來確保系統(tǒng)總線請求在適當(dāng)?shù)陌踩院吞貦?quán)級別運(yùn)行。(圖片來源:NXP Semiconductors)
安全存儲和外設(shè)
TrustZone 保護(hù)機(jī)制在運(yùn)行時隔離應(yīng)用程序代碼和數(shù)據(jù),對使用的數(shù)據(jù)進(jìn)行尋址(經(jīng)典數(shù)據(jù)安全原則之一),其中也包括靜態(tài)數(shù)據(jù)和傳輸中的數(shù)據(jù)。這些原則通常與企業(yè)級數(shù)據(jù)問題相關(guān),但也適用于嵌入式系統(tǒng)中的代碼和數(shù)據(jù)。這里,若一個典型嵌入式系統(tǒng)使用微控制器的集成閃存存儲固件映像、代碼和數(shù)據(jù),這可能成為明顯的攻擊途徑。LPC55S6x 器件通過名為 PRINCE 的加密/解密算法來消解這種威脅。[閱讀說明:PRINCE 不是首字母縮略詞。]
由于其速度快且資源要求極低,PRINCE 算法非常適合嵌入式系統(tǒng)中的安全實(shí)現(xiàn)。在 LPC55S6x 器件中,PRINCE 算法通過硬件實(shí)現(xiàn),實(shí)時運(yùn)行,可以在讀取或?qū)懭霐?shù)據(jù)時即時解密或加密數(shù)據(jù)。與其他很多加密算法不同,PRINCE 算法不需要使用 RAM 來保存原始數(shù)據(jù)或中間結(jié)果,這就又消除了一個安全漏洞。因此,開發(fā)人員可以更安全地將應(yīng)用程序代碼、固件映像甚至安全密鑰存儲在微控制器的內(nèi)部閃存中。
雖然加密引擎和安全閃存會鎖定數(shù)據(jù)交換和存儲,但安全嵌入式系統(tǒng)與傳感器和變送器的交互需要同樣程度的安全性。除了安全 DMA 功能外,LPC55S6x MCU 架構(gòu)還提供了多種機(jī)制來進(jìn)一步保護(hù)內(nèi)核或其他總線主控器與其集成外設(shè)、存儲器或 GPIO 之間的交換(圖 3)。
圖 3:NXP 的 LPC55S6x 微控制器將多層總線矩陣與 MSW、MPC、PPC 結(jié)合在一起,以隔離和保護(hù)該器件的不同總線主控器與其外設(shè)和存儲器之間的事務(wù)處理。(圖片來源:NXP Semiconductors)
在此保護(hù)方案中,存儲器保護(hù)校驗(yàn)器 (MPC) 會限制安全性較低的應(yīng)用程序?qū)Υ鎯ζ鞯脑L問。外設(shè)保護(hù)校驗(yàn)器 (PPC) 為外設(shè)提供同類訪問控制,允許開發(fā)人員為不同外設(shè)設(shè)置不同的訪問規(guī)則。由于 SAU/IDU 機(jī)制僅適用于主 Cortex-M33 內(nèi)核,主安全包裝器 (MSW) 則用來為其他總線主控器提供類似的訪問保護(hù)。由于多層 AHB 矩陣在總線主控器與外設(shè)或存儲器之間創(chuàng)造了一條專用路徑,因此內(nèi)部總線連接與該器件中可能發(fā)生的其他總線事務(wù)處理是隔離的,安全得以保證。
LPC55S6x MCU 架構(gòu)通過其安全 GPIO 系統(tǒng)進(jìn)一步隔離了對外部器件的安全和非安全訪問。該系統(tǒng)將類似的隔離,即 TrustZone 機(jī)制在安全和非安全 CPU 狀態(tài)與代碼執(zhí)行模式之間創(chuàng)建的隔離,擴(kuò)展到 GPIO 引腳。因此,只有在安全狀態(tài)下運(yùn)行的主 Cortex-M33 內(nèi)核才能訪問安全 GPIO 引腳,這使開發(fā)人員能夠保護(hù)來自關(guān)鍵外部器件的信號。
安全密鑰管理
本文到目前為止描述的各種保護(hù)機(jī)制為安全嵌入式系統(tǒng)奠定了基礎(chǔ)。但是,要將該系統(tǒng)安全地連接到網(wǎng)絡(luò)、智能手機(jī)或其他主機(jī),開發(fā)人員必須能夠在初始調(diào)試和持續(xù)的事務(wù)處理期間對連接目標(biāo)進(jìn)行身份驗(yàn)證,并且能夠維護(hù)安全加密的通信通道。反過來,作為認(rèn)證協(xié)議和加密機(jī)制核心的非對稱和對稱加密算法的安全性,最終取決于這些協(xié)議和機(jī)制中使用的私鑰安全性。
LPC55S6x 微控制器利用集成的物理不可克隆功能 (PUF),為安全存儲現(xiàn)有密鑰并生成新密鑰提供了一種高度安全的機(jī)制。這種方法依靠 PUF 硬件的能力來創(chuàng)建唯一的 PUF 根密鑰,使用它來對其他用戶密鑰進(jìn)行加密。PUF 根密鑰的唯一性源于其使用內(nèi)部器件功能以及 SRAM 啟動數(shù)據(jù),而 SRAM 啟動數(shù)據(jù)源自上電時 SRAM 單元的隨機(jī) 0 和 1 內(nèi)容。在 PUF 登記階段,器件使用這兩個隨機(jī)數(shù)據(jù)源來創(chuàng)建數(shù)字指紋和相關(guān)的 1192 字節(jié)激活碼(圖 4)。
圖 4:NXP LPC55S6x 微控制器的集成 PUF 使用啟動時 SRAM 的隨機(jī)狀態(tài)和其他內(nèi)部功能生成數(shù)字指紋和激活碼,以用于隨后的密鑰生成和存儲操作。(圖片來源:NXP Semiconductors)
在工廠配置器件期間或以后的實(shí)際使用中,此激活碼存儲在器件受保護(hù)閃存區(qū)域中的客戶現(xiàn)場可編程區(qū)域 (CFPA) 中。每次微控制器上電和使用 PUF Start 命令激活 PUF 時,PUF 就會將現(xiàn)有激活碼與 SRAM 啟動數(shù)據(jù)組合,以重建數(shù)字指紋。
在此 PUF Start 過程之后,PUF SetKey 命令讓 PUF 對用戶密鑰進(jìn)行編碼,例如工廠配置的共享主密鑰或由開發(fā)人員為其應(yīng)用程序提供的私鑰。在這里,PUF 根據(jù)密鑰大小、密鑰索引和用戶密鑰本身生成相應(yīng)用戶密鑰的密鑰代碼(圖 5)。
圖 5:NXP 的 LPC55S6x PUF 提供的 SetKey 功能使用其數(shù)字指紋對用戶密鑰和密鑰索引進(jìn)行編碼,提供隨后用于訪問原始用戶密鑰的密鑰代碼。(圖片來源:NXP Semiconductors)
開發(fā)人員還可以使用 PUF GenerateKey 命令生成新密鑰,該命令采用與 SetKey 相同的生成過程,但使用內(nèi)部生成的唯一數(shù)據(jù)取代圖 5 中顯示的 KEYIN 功能。使用密鑰索引 = 0 設(shè)置或生成的密鑰可獲得進(jìn)一步的保護(hù),如下文所述。
要使用密鑰,開發(fā)人員調(diào)用 PUF GetKey 命令以檢索原始用戶密鑰,其輸出路徑有兩條,具體輸出路徑取決于設(shè)置或生成密鑰時使用的密鑰索引值。如果密鑰索引大于零,則可通過 PUF CODEOUTPUT 寄存器獲得用戶密鑰。如果密鑰索引等于零,則用戶密鑰將直接傳遞給 AES 引擎,或傳遞給 KEYENABLE 的值所指定的 PRINCE 引擎的三個支持的閃存區(qū)域(圖 6)。盡管沒有直接參與密鑰檢索,但 PUF 的 4 位 KEYMASK 寄存器支持專為緩解旁路攻擊的內(nèi)部機(jī)制。
圖 6:開發(fā)人員使用 NXP 的 LPC55S6x PUF GetKey 命令訪問密鑰。這會使用 SetKey(或 GenerateKey)操作期間生成的密鑰索引和密鑰代碼輸出原始用戶密鑰,或通過專用總線將其發(fā)送到微控制器的加密加速器。(圖片來源:NXP Semiconductors)
零索引密鑰有助于加強(qiáng)生命周期安全性,甚至從工廠配置階段開始便能保證安全。一旦通過 PUF SetKey 配置,無論是用于對稱加密的共享主密鑰,還是用于非對稱加密的私鑰,都永遠(yuǎn)不會離開器件或進(jìn)入系統(tǒng)總線。相反,密鑰通過軟件無法訪問的專用硬連線接口在內(nèi)部傳輸?shù)?AES 或 PRINCE 引擎。
PUF 密鑰管理機(jī)制和微控制器的其他安全特性共同支持其他生命周期安全性階段,包括安全引導(dǎo)和固件更新。針對安全引導(dǎo),LPC55S6x 支持多種保護(hù)方法,包括使用經(jīng)驗(yàn)證的 X.509 證書對 RSA2048 簽名映像進(jìn)行身份驗(yàn)證,或?qū)?PRINCE 閃存區(qū)域中存儲的映像進(jìn)行解密。無論何種情況,引導(dǎo)程序都使用 PUF 生成的密鑰哈希值從 PUF 密鑰存儲區(qū)中安全地檢索驗(yàn)證證書或解密映像所需的密鑰,這些密鑰哈希值與映像一起存儲在受保護(hù)的閃存區(qū)域中。
固件更新使用類似的機(jī)制來驗(yàn)證無線更新固件映像,對其進(jìn)行解密,然后準(zhǔn)備好進(jìn)行引導(dǎo)。
除了安全引導(dǎo)和固件更新的直接需求外,該器件的多個密鑰存儲插槽和密鑰生成功能還支持持續(xù)的安全生命周期要求,可以撤銷密鑰和證書。這種密鑰管理功能進(jìn)而支持更高級別的安全策略,例如固件映像撤銷。
通過使用 NXP 的?LPCXpresso55S69?開發(fā)板并結(jié)合 NXP 的 MCUXpresso 集成開發(fā)環(huán)境 (IDE)、IAR?或 Keil IDE,開發(fā)人員可以快速探索 LPC55S6x 微控制器的能力。MCUXpresso Config Tools 集成在 MCUXpresso IDE 中,可幫助開發(fā)人員設(shè)置 MCU 硬件并生成初始化代碼。利用該配置工具集中的可信執(zhí)行環(huán)境 (TEE) 工具,開發(fā)人員可以更輕松地配置 LPC55S6x MCU 的多級安全訪問。使用 TEE 工具的圖形界面,開發(fā)人員可以針對上文描述的四種 CPU 狀態(tài)和執(zhí)行模式中的每一種,優(yōu)化對存儲器、總線主控器和外設(shè)的訪問權(quán)限(圖 7)。
圖 7:利用 NXP 的 MCUXpresso Config Tools 實(shí)用工具集中可信執(zhí)行環(huán)境工具的圖形界面,開發(fā)人員可以針對以四種 CPU 狀態(tài)和執(zhí)行模式運(yùn)行的代碼,設(shè)置對存儲器、總線主控器和外設(shè)的訪問權(quán)限(圖片來源:NXP Semiconductors)
針對代碼開發(fā),NXP 還提供了許多簡單的代碼示例,這些示例演示了使用微控制器安全特性(例如安全 GPIO、PUF 密鑰管理和其他器件功能)的基本設(shè)計模式。然而,即使在開發(fā)階段,LPC55S6x MCU 也可通過單線調(diào)試 (SWD)
認(rèn)證能力來幫助維持生命周期安全性。借助此功能,經(jīng)授權(quán)的開發(fā)人員可以調(diào)試其安全代碼并禁用對安全資源的任何進(jìn)一步 SWD 訪問,然后將開發(fā)工作交給非安全軟件開發(fā)人員。這些開發(fā)人員在完成代碼調(diào)試之后,進(jìn)而可以禁用所有通過 SWD 端口的調(diào)試訪問。
總結(jié)
開發(fā)人員面臨著對低功耗、高性能設(shè)計日益增長的需求,同時還需要能夠維持從工廠配置到現(xiàn)場安全操作的整個生命周期的安全性。如本文所述,NXP 的 LPC55S6x 系列微控制器提供了一種有效的解決方案,它既具備通用處理能力,又有豐富的專用硬件特性來支持生命周期安全性。
評論
查看更多