幾乎每個嵌入式系統(tǒng)都需要一定程度的安全性,無論是鎖定編程端口的基礎(chǔ)知識還是保護連接設(shè)備免受黑客攻擊的更復(fù)雜的東西。對于許多開發(fā)人員來說,創(chuàng)建安全的嵌入式系統(tǒng)可能會令人生畏。許多嵌入式開發(fā)人員并非來自安全背景,必須隨時學(xué)習(xí)安全概念。在建立安全系統(tǒng)的主要要素時,有五個關(guān)鍵要素:
基于硬件的隔離
信任根(RoT)
安全啟動解決方案
安全的引導(dǎo)加載程序
安全存儲
今天我們來講講第一要素——基于硬件的隔離。
談到安全性,應(yīng)該在開發(fā)人員腦海中回蕩的關(guān)鍵概念是安全性始于隔離。開發(fā)人員需要將他們的應(yīng)用程序隔離到不同的域中,每個域都有自己的權(quán)限并且只能訪問特定的內(nèi)存區(qū)域。在傳統(tǒng)的嵌入式系統(tǒng)中,許多應(yīng)用程序的架構(gòu)使得任何軟件模塊或組件都可以訪問整個內(nèi)存映射。如果黑客能夠訪問內(nèi)存中的單個模塊,他們就可以毫不費力地完全擁有該系統(tǒng)。
隔離背后的想法是將應(yīng)用程序分解為單獨的安全域。如果黑客能夠訪問內(nèi)存中的一個區(qū)域,他們將無法訪問其他內(nèi)存區(qū)域。如果他們想要訪問,他們必須投入更多的時間和精力來弄清楚如何突破隔離屏障。在嵌入式系統(tǒng)中實現(xiàn)隔離的最好方法是實現(xiàn)基于硬件的隔離,它有幾種不同的形式,應(yīng)該一起使用。
隔離工具 #1 – 處理器架構(gòu)
首先,對于安全性至關(guān)重要的應(yīng)用程序,嵌入式開發(fā)人員應(yīng)該使用具有基于硬件隔離的微控制器將應(yīng)用程序執(zhí)行環(huán)境分成兩個不同的環(huán)境; 安全和非安全環(huán)境。 安全區(qū)域處理對保護設(shè)備至關(guān)重要的外圍設(shè)備、內(nèi)存和功能。 非安全環(huán)境是傳統(tǒng)的、豐富的執(zhí)行環(huán)境。 在現(xiàn)代微控制器中,這種隔離通過兩種方式實現(xiàn),一種是使用賽普拉斯 PSoC 64 等多核處理器,另一種是使用 Arm 的 TrustZone 等單核隔離技術(shù)。
多核微控制器通過具有一個專用于安全處理環(huán)境和一個專用于非安全處理環(huán)境的微控制器內(nèi)核來實現(xiàn)基于硬件的隔離。另一方面,TrustZone 只是一個在安全處理環(huán)境和非安全處理環(huán)境之間切換的單核,TrustZone 確實需要幾個時鐘周期來在環(huán)境之間切換,但允許開發(fā)人員使用單個內(nèi)核。
單核和多核解決方案都很有趣,并且提供了第一個基于硬件的隔離層。
隔離工具 #2 – 內(nèi)存保護單元 (MPU)
無論使用哪種主要隔離技術(shù),許多安全應(yīng)用程序中的第二個隔離層都是使用內(nèi)存保護單元 (MPU) 進一步分解應(yīng)用程序。 MPU 已成為微控制器中的常用工具,因為它們可用于安全應(yīng)用并提高應(yīng)用的穩(wěn)健性。 事實上,許多專為安全解決方案設(shè)計的微控制器將在安全和非安全執(zhí)行環(huán)境中都有 MPU。
MPU 可用于在內(nèi)存映射中創(chuàng)建額外的邊界,強制功能和任務(wù)僅在其特定進程中使用內(nèi)存。如果出于某種原因這些函數(shù)試圖訪問其分配區(qū)域之外的內(nèi)存,MPU 將檢測到內(nèi)存違規(guī)并引發(fā)異常。 MPU 可用于創(chuàng)建安全任務(wù)和分區(qū),從而進一步隔離應(yīng)用程序組件。
隔離工具 #3 – SMPU 和 PPU
幫助基于硬件的隔離的最后一個工具是 SMPU 和 PPU。有些微控制器包含額外的安全層,允許嵌入式開發(fā)人員共享內(nèi)存內(nèi)容。這些被稱為共享內(nèi)存保護單元 (SMPU)。 SMPU 可以區(qū)分處理器內(nèi)的不同保護上下文,包括安全訪問和非安全訪問之間的差異。這些上下文對于在應(yīng)用程序中開發(fā)不同級別的安全和訪問非常有用。
開發(fā)人員還可以利用外圍保護單元 (PPU)。 PPU 管理對不同外圍模塊(如 UART、SPI、USB 等)的訪問。這些訪問可能發(fā)生在由 SMPU 控制的不同安全上下文中,而這些安全上下文又保護運行在可能兩個不同的 MPU 上下文中的上下文微控制器內(nèi)的內(nèi)核!(或在單個處理器內(nèi)的兩個硬件隔離區(qū)域內(nèi))。
在開發(fā)安全的嵌入式系統(tǒng)時,開發(fā)人員可以利用這些不同的機制來構(gòu)建屏障并隔離代碼,從而使黑客更難以訪問系統(tǒng)。事實上,我甚至看到并聽說過芯片供應(yīng)商提供的未來安全產(chǎn)品,這些產(chǎn)品將允許開發(fā)人員輕松地將他們的執(zhí)行環(huán)境分解為許多可以被視為執(zhí)行容器的小型執(zhí)行環(huán)境。在接下來的幾年里,看看這些方案將變得多么復(fù)雜和強大,以及如果開發(fā)人員實施它們,他們的系統(tǒng)將變得多么安全,將會很有趣。
嵌入式開發(fā)人員在嵌入式系統(tǒng)中實現(xiàn)安全性的第一個要素是將他們的應(yīng)用程序分解為硬件隔離的執(zhí)行環(huán)境?;谟布母綦x設(shè)置了一道屏障,使黑客更難以完全訪問系統(tǒng)和其中包含的數(shù)據(jù),并且更加耗時。基于硬件的隔離首先將執(zhí)行環(huán)境分解為安全和非安全執(zhí)行環(huán)境,然后可以通過使用 MPU、SMPU 和 PPU 進一步分解這些環(huán)境中的每一個。