保護(hù)互聯(lián)嵌入式設(shè)備上的數(shù)據(jù)是當(dāng)今軟件開發(fā)人員和架構(gòu)師的首要任務(wù)。似乎每周都會(huì)宣布另一個(gè)重大數(shù)據(jù)泄露事件。嵌入式軟件開發(fā)人員正在迅速獲得工具和技術(shù),以設(shè)計(jì)更安全、更安全的連接設(shè)備。開發(fā)人員可以使用 ARM TrustZone 技術(shù)來(lái)保護(hù)其設(shè)計(jì)中的數(shù)據(jù),此外還可以通過(guò) Type 1 虛擬機(jī)管理程序進(jìn)行嵌入式虛擬化,通過(guò)實(shí)時(shí)操作系統(tǒng) (RTOS) 和開源軟件將安全數(shù)據(jù)、連接和實(shí)時(shí)操作相結(jié)合,以充分利用新興的多核和異構(gòu)片上系統(tǒng) (SoC) 架構(gòu)。
連接設(shè)備的功能正在迅速增加,存儲(chǔ)在這些設(shè)備上的信息或可通過(guò)這些設(shè)備訪問(wèn)的信息的價(jià)值也在迅速增加。我們今天使用的大多數(shù)設(shè)備都連接到至少一種類型的網(wǎng)絡(luò)或服務(wù)。汽車通常通過(guò)藍(lán)牙或移動(dòng)數(shù)據(jù)網(wǎng)絡(luò)連接到設(shè)備;便攜式醫(yī)療設(shè)備相互連接,連接到醫(yī)院網(wǎng)絡(luò),連接到云,甚至更遠(yuǎn)的地方;智能能源網(wǎng)絡(luò)將電力公司連接到家庭內(nèi)的眾多消費(fèi)設(shè)備。
在多個(gè)方面保護(hù)數(shù)據(jù)
在解決如何保護(hù)嵌入式連接設(shè)備時(shí),首先考慮容易受到攻擊的表面區(qū)域非常重要。攻擊區(qū)域因設(shè)備而異,但通常,設(shè)備越復(fù)雜,攻擊區(qū)域就越大。其次,重要的是要了解當(dāng)今大多數(shù)威脅的目標(biāo)數(shù)據(jù)不是為了數(shù)據(jù),而是為了操縱數(shù)據(jù)的能力。第三,通過(guò)分層各種安全功能來(lái)設(shè)計(jì)和開發(fā)既健壯又安全的設(shè)備至關(guān)重要。
操作數(shù)據(jù)
操縱數(shù)據(jù)的一個(gè)例子可能是對(duì)算法的攻擊,該算法會(huì)影響其所依賴的系統(tǒng)操作,例如ATM終端上的銀行應(yīng)用程序或控制設(shè)備在汽車內(nèi)如何工作的參數(shù)。在保護(hù)數(shù)據(jù)方面,開發(fā)人員需要了解三個(gè)關(guān)鍵階段:靜態(tài)數(shù)據(jù)、使用中的數(shù)據(jù)和傳輸中的數(shù)據(jù)。
靜態(tài)數(shù)據(jù)最好描述為設(shè)備斷電時(shí)。此階段的注意事項(xiàng)包括:
可啟動(dòng)映像存儲(chǔ)在何處?
是否有用于通知設(shè)備是否被篡改的防篡改方法,以及防止其啟動(dòng)到易受攻擊狀態(tài)的方法?
可執(zhí)行文件是否已加密,或者任何獲得訪問(wèn)權(quán)限的人都可以刪除 EEPROM、轉(zhuǎn)儲(chǔ)內(nèi)存或嘗試對(duì)應(yīng)用程序進(jìn)行反向工程?
使用中的數(shù)據(jù)是指設(shè)備正常運(yùn)行并生成和處理數(shù)據(jù)。一些注意事項(xiàng)包括:
混淆方法是否已用于敏感數(shù)據(jù)?
設(shè)備是否在已驗(yàn)證狀態(tài)下執(zhí)行?是否建立了信任鏈?
傳輸中的數(shù)據(jù)描述進(jìn)入或離開設(shè)備的數(shù)據(jù)。一個(gè)好的設(shè)計(jì)應(yīng)該解決以下問(wèn)題:
如果數(shù)據(jù)被劫持,如何保護(hù)數(shù)據(jù)?
加密或隧道協(xié)議是否到位?
是否已部署防火墻,拒絕服務(wù)攻擊的策略是什么?
創(chuàng)建安全層
在保護(hù)設(shè)備中的層時(shí),您可能會(huì)聽到“深度防御”或“分層安全性”。無(wú)論術(shù)語(yǔ)如何,它歸結(jié)為創(chuàng)建可以防御攻擊的安全層,或者至少延遲攻擊穿透后續(xù)層。分層安全模型可能包括:
策略和程序 – 管理設(shè)備訪問(wèn)和使用的規(guī)則
物理 - 從字面上看,物理屏障,如柵欄,警衛(wèi)或鎖門
網(wǎng)絡(luò) – 確保與外部世界的連接
應(yīng)用程序 – 確保惡意應(yīng)用程序不會(huì)危及系統(tǒng)
數(shù)據(jù) – 確保系統(tǒng)中使用或存儲(chǔ)的數(shù)據(jù)的完整性
在片上系統(tǒng) (SoC) 中實(shí)施的 ARM 信任區(qū)技術(shù)可用于解決分層安全模型的網(wǎng)絡(luò)、應(yīng)用和數(shù)據(jù)方面問(wèn)題。
ARM 信任區(qū)技術(shù)
ARM 信任區(qū)體系結(jié)構(gòu)提供了一種解決方案,該解決方案能夠劃分或隔離完整 SoC 的硬件子集。它通過(guò)定義處理器、外設(shè)、內(nèi)存地址,甚至L2緩存區(qū)域來(lái)做到這一點(diǎn),以作為“安全”或“非安全”硬件運(yùn)行。利用 TrustZone 技術(shù)的 SoC 能夠動(dòng)態(tài)地向安全軟件公開完整的 SoC,或者向普通軟件公開該 SoC 的子集(圖 1)。
圖 1:ARM 的信任區(qū)技術(shù)允許開發(fā)人員將 SoC 中的功能指定為“安全世界”或“正常世界”。
由 TrustZone 創(chuàng)建和實(shí)施的正常世界(非安全世界)通常是 SoC 的已定義硬件子集。例如,普通世界硬件子集可能包括 UART、以太網(wǎng)和 USB 接口,但不包括控制器局域網(wǎng) (CAN) 訪問(wèn)。相反,CAN可能專用于安全世界,其中單獨(dú)的RTOS或應(yīng)用程序運(yùn)行的唯一目的是管理CAN流量,獨(dú)立于正常的世界軟件堆棧。
與運(yùn)行正常世界軟件的硬件子集不同,在安全世界中運(yùn)行的軟件可以完全訪問(wèn)所有 SoC 硬件。因此,從安全軟件執(zhí)行的角度來(lái)看,系統(tǒng)的外觀和行為與沒有TrustZone的處理器上看到的幾乎相同。這意味著安全軟件可以訪問(wèn)與安全和正常世界相關(guān)的所有資源。
可信執(zhí)行環(huán)境(TEE)是指在安全世界中運(yùn)行的軟件堆棧,以及允許安全軟件與正常世界軟件進(jìn)行交互的通信。TEE軟件通常由一個(gè)小型微內(nèi)核和應(yīng)用程序以及允許安全軟件與更大的、以用戶為中心的軟件(例如Android)進(jìn)行通信的API組成。其中一個(gè)規(guī)范定義了一個(gè)TEE產(chǎn)品,有些人可能稱之為“典型的RTOS”API和功能,以及非常適合TEE用例的其他功能和API。
我們中的許多人經(jīng)常使用安全世界和正常世界處理而沒有意識(shí)到這一點(diǎn)。例如,在線購(gòu)物通常需要用戶名和密碼。當(dāng)系統(tǒng)提示輸入此身份驗(yàn)證信息時(shí),移動(dòng)設(shè)備(Android 手機(jī)、Apple iPad 等)將切換到安全世界模式,在該模式下,數(shù)據(jù)在安全鍵盤上輸入并在允許發(fā)生任何其他操作之前進(jìn)行安全處理。銀行應(yīng)用程序本身可能完全在安全世界中運(yùn)行,但設(shè)備也可以從安全世界切換到正常世界以訪問(wèn)其他應(yīng)用程序,例如瀏覽器,電子郵件或執(zhí)行其他非安全任務(wù)。
保護(hù)多核架構(gòu)中的 SoC
單個(gè)基于 ARM 的核心可以執(zhí)行正常的世界上下文或安全的世界上下文,但是在具有多個(gè)內(nèi)核的 SoC 中會(huì)發(fā)生什么情況?開發(fā)人員可能會(huì)遇到多個(gè)內(nèi)核訪問(wèn)同一安全應(yīng)用程序的情況,這不僅擴(kuò)展了攻擊的表面,而且可能會(huì)使代碼暴露于難以調(diào)試的令人討厭的計(jì)時(shí)問(wèn)題。為了糾正這一點(diǎn),開發(fā)人員可以如圖 2 所示配置其設(shè)備,其中只允許一個(gè)內(nèi)核執(zhí)行安全的世界內(nèi)容。在此設(shè)計(jì)中,當(dāng)在任何一個(gè)內(nèi)核上運(yùn)行的應(yīng)用程序需要啟動(dòng)安全應(yīng)用程序時(shí),它必須連接到內(nèi)核 0,在那里會(huì)發(fā)生向安全世界的過(guò)渡。這將使多核設(shè)計(jì)更簡(jiǎn)單、更穩(wěn)健。
圖 2:使用指定的核心 (CPU0) 在多核環(huán)境中執(zhí)行安全的世界內(nèi)容。
在正常世界中運(yùn)行一個(gè)應(yīng)用程序并在安全世界中隱藏安全密鑰和算法確實(shí)很有意義,但不幸的是,它不是很實(shí)用。最近出現(xiàn)了一個(gè)趨勢(shì),即硅制造商正在出貨更多的多核部件。在許多設(shè)計(jì)中,使用了多個(gè)操作系統(tǒng) (OS),這就是 SoC 中的虛擬機(jī)管理程序模式和虛擬化擴(kuò)展變得有用的地方。可以在包含對(duì) ARM 信任區(qū)技術(shù)支持的虛擬機(jī)管理程序之上構(gòu)建更完整的體系結(jié)構(gòu)。然后,設(shè)計(jì)人員可以在虛擬機(jī)之間對(duì)應(yīng)用程序和外圍設(shè)備進(jìn)行分區(qū),同時(shí)在安全世界中保護(hù)密鑰和專有算法。
將它們放在一起
例如,部署在 ARM Cortex-A15 設(shè)備上的設(shè)計(jì)如圖 3 所示。在正常世界中,我們有虛擬機(jī)管理程序與兩個(gè)虛擬機(jī)一起執(zhí)行。在正常世界空間中運(yùn)行虛擬機(jī)的兩個(gè) Linux 實(shí)例被設(shè)置為具有內(nèi)核和驅(qū)動(dòng)程序,以便在內(nèi)核模式上下文中執(zhí)行,而用戶應(yīng)用程序則映射到用戶模式。TEE 和安全應(yīng)用程序映射到安全世界空間。目前有許多基于 ARM 的 SoC 處理器圍繞 Cortex-A15 架構(gòu)構(gòu)建,可以支持這種類型的配置。TI OMAP5 和哈辛托 6 參考平臺(tái)就是兩個(gè)例子。
圖 3:將虛擬機(jī)管理程序整合到 ARM 的正常和安全世界中。
保護(hù)連接的設(shè)備
連接的嵌入式設(shè)備不僅在功能上,而且在它們生成和傳輸?shù)臄?shù)據(jù)方面都變得越來(lái)越豐富。隨著這些設(shè)備無(wú)縫融入我們的日常生活,軟件開發(fā)人員有責(zé)任設(shè)計(jì)每個(gè)新設(shè)備,將安全性作為首要關(guān)注點(diǎn)。通過(guò)使用 ARM 的 TrustZone 技術(shù)以及 Type 1 虛擬機(jī)管理程序,開發(fā)人員可以為 SoC 設(shè)計(jì)提供強(qiáng)大、強(qiáng)大且安全的基礎(chǔ),以滿足我們不斷擴(kuò)展的互聯(lián)世界的需求。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5086文章
19143瀏覽量
306092 -
soc
+關(guān)注
關(guān)注
38文章
4177瀏覽量
218477 -
RTOS
+關(guān)注
關(guān)注
22文章
817瀏覽量
119715
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論