隨著嵌入式系統(tǒng)開發(fā)人員轉(zhuǎn)向創(chuàng)建連接的物聯(lián)網(wǎng)設(shè)備,安全性已成為他們面臨的最重要問(wèn)題之一。 ARMv8-M 處理器確實(shí)支持 TrustZone,它為開發(fā)人員提供了一種新機(jī)制,幫助他們將安全軟件與更通用的用戶軟件隔離開來(lái)。 就像使用任何新工具一樣,嵌入式開發(fā)人員應(yīng)該遵循一些提示,以確保他們提高系統(tǒng)安全性。
提示 1 — 執(zhí)行安全審計(jì)以了解安全需求
在嘗試使用 TrustZone 之前,開發(fā)人員必須執(zhí)行安全審核并確定其系統(tǒng)中需要保護(hù)的內(nèi)容。 這可能因應(yīng)用程序而異,但可能包括:
鑰匙
數(shù)據(jù)
庫(kù)
應(yīng)用代碼
外圍設(shè)備
內(nèi)存位置
通訊
根據(jù)需要保護(hù)的資源,將有不同的方法來(lái)保護(hù)該資源,例如使用加密或隔離。 TrustZone 旨在幫助開發(fā)人員隔離他們的設(shè)計(jì)。
技巧 2 — 使用安全代碼盡量減少對(duì)非安全內(nèi)存的訪問(wèn)
TrustZone 將微控制器硬件分為兩個(gè)區(qū)域:安全和不安全。不安全代碼只能訪問(wèn)安全存儲(chǔ)器以執(zhí)行“公開”功能。這允許用戶應(yīng)用程序調(diào)用安全功能。但是嘗試訪問(wèn)這些公開函數(shù)之外的任何內(nèi)容都會(huì)導(dǎo)致錯(cuò)誤。這很好,但對(duì)嵌入式開發(fā)人員來(lái)說(shuō)一個(gè)潛在的問(wèn)題是安全代碼可以訪問(wèn)所有非安全內(nèi)存區(qū)域。
開發(fā)人員在使用安全代碼訪問(wèn)非安全內(nèi)存時(shí)需要小心。開發(fā)人員可以使用 TT 指令來(lái)檢查該區(qū)域的權(quán)限。這將防止在安全區(qū)域中意外執(zhí)行不安全代碼。開發(fā)人員應(yīng)使用安全代碼來(lái)訪問(wèn)安全代碼,并盡量減少對(duì)非安全內(nèi)存的訪問(wèn)。
技巧 3 — 從無(wú)銀行賬戶的寄存器中清除秘密信息
在 TrustZone 實(shí)現(xiàn)中,如果處理器在非安全模式下運(yùn)行,則存在不可見的安全寄存器。 但是,有一些處理器寄存器在安全模式和非安全模式之間存儲(chǔ)和共享。 這意味著,如果執(zhí)行了安全操作,并且部分?jǐn)?shù)據(jù)存儲(chǔ)在存儲(chǔ)寄存器中,那么該過(guò)程將切換到非安全模式。 然后可以通過(guò)存儲(chǔ)的寄存器提供安全數(shù)據(jù)。 為了防止這種情況發(fā)生,開發(fā)人員需要確保在跳回非安全執(zhí)行模式之前清除所有使用的未分區(qū)寄存器。 否則,這可能成為黑客獲得洞察力甚至訪問(wèn)安全代碼區(qū)域的一種方式。
技巧 4 — 在啟動(dòng)時(shí)驗(yàn)證非安全映像
當(dāng) TrustZone 處理器啟動(dòng)時(shí),會(huì)自動(dòng)進(jìn)入安全模式。這為開發(fā)人員提供了機(jī)會(huì),不僅可以初始化他們的處理器,還可以安全地啟動(dòng)處理器。嵌入式開發(fā)人員可以驗(yàn)證他們的用戶應(yīng)用程序,并確保在跳轉(zhuǎn)到不安全模式并運(yùn)行用戶應(yīng)用程序之前一切正常。如果攻擊者設(shè)法將他們自己的代碼或應(yīng)用程序插入內(nèi)存,安全代碼可以在啟動(dòng)時(shí)檢測(cè)到這一點(diǎn),并采取必要的行動(dòng)來(lái)阻止使用系統(tǒng)的嘗試。這可能會(huì)導(dǎo)致開發(fā)人員想知道:如果安全代碼區(qū)域發(fā)生變化會(huì)發(fā)生什么?安全區(qū)域被鎖定,沒(méi)有特殊工具無(wú)法修改。
技巧 5 - 同時(shí)使用非安全和安全 MPU
TrustZone 的另一個(gè)非常有趣的特性是它為不安全的內(nèi)存區(qū)域和安全區(qū)域提供了一個(gè)內(nèi)存保護(hù)單元 (MPU)。這意味著即使在安全內(nèi)存中,開發(fā)人員也可以采取額外的預(yù)防措施來(lái)保護(hù)內(nèi)存。 MPU 可以設(shè)置為監(jiān)視在 RTOS 中執(zhí)行的安全任務(wù)或檢測(cè)溢出任務(wù)堆棧的嘗試。這為開發(fā)人員在如何實(shí)施其安全解決方案方面提供了相當(dāng)大的靈活性。
結(jié)論
對(duì)于許多開發(fā)團(tuán)隊(duì)來(lái)說(shuō),為連接的設(shè)備增加安全性無(wú)疑是一項(xiàng)具有挑戰(zhàn)性的工作。 TrustZone 為開發(fā)人員提供了一個(gè)額外的工具來(lái)幫助提高安全性。 就像任何工具一樣,它需要正確使用才能有效。 我們已經(jīng)在本文中查看了一些簡(jiǎn)單的技巧,但為了保護(hù)嵌入式系統(tǒng),嵌入式開發(fā)人員還有很多工作要做。