OEM 越來越多地要求其下一代系統具有更高的安全性。反過來,系統和片上系統 (SoC) 設計人員也有責任保護敏感資產免受未經授權或惡意訪問。在大多數情況下,設計社區選擇硬件而不是軟件方法來將安全性設計到他們的設計中。
今天,設計師們看到了各種各樣的安全處理器品牌。但是,它們中的大多數都遵循幾乎相同的芯片架構。最好的特點是基本上有兩個域,一個是非安全的,而另一個是安全的,用一個比特將安全域與非安全域分開,圖 1。
圖 1a 和圖 1b – 安全芯片架構的特點是具有兩個域。一個是非安全的(圖 1b),而另一個是安全的(圖 1a),其中一個位將安全域與非安全域分開。
此外,來自不同實體的不同應用程序(其中一個實體可能是 SoC 供應商、設備 OEM、服務提供商、最終用戶或設備生態系統中的其他參與者)可能在同一安全域中運行。但是,它們并不是相互隔離的,它們不僅可以訪問自己的密鑰,還可以訪問其他應用程序的密鑰。硬件分區不在不同實體之間,它只在安全和非安全之間。
用于安全應用程序的沙箱
實際上,安全處理器使用一位來為安全應用程序創建一個沙箱,圖 1a。計算機安全術語中的“沙盒”是指一種軟件或硬件結構,通過該結構創建一個單獨的、受限制的環境,僅用于運行某些應用程序,通常對其操作有一組特定的限制。
實際上,這個沙箱是用于安全應用程序的,可以說每個安全應用程序都在同一個沙箱中運行。運行安全應用程序的實體之間沒有隔離。如果一個安全應用程序正在運行,它與所有其他應用程序一起處于那個“安全”的世界中。在這種情況下,問題出現了,因為不同的實體在安全環境中可能不完全信任彼此。如果一個實體受到惡意攻擊,就會危及所有其他實體的安全。
讓我們以一個寫得不好的數字版權管理 (DRM) 內容保護應用程序為例。它可能會危及在同一處理器上運行的支付應用程序的安全性,并允許訪問銀行信息。同樣,這里的問題是應用程序之間缺乏隔離。一個寫得不好或惡意的應用程序可能會危及在該處理器上運行的其他應用程序的安全性。
這是一個缺點。另一個問題是存在范圍廣泛的攻擊,攻擊者可以借此改變設計中信號的值。那些所謂的“故障攻擊”或“故障攻擊”是基于擾亂電路以改變其操作。它們的范圍從簡單的電源和時鐘故障到激光脈沖、電磁脈沖等。此類正確執行的攻擊可以將位控制安全模式更改為某些操作從非安全轉換為安全,從而允許非安全應用程序訪問敏感數據和密鑰。
多域和隔離
另一方面,考慮具有多個域或多個信任根的安全處理器內核,如圖 2 所示。在這種情況下,每個實體都有一個單獨的安全域。并且這些安全域使用強大的硬件安全性彼此完全分離。密鑰和硬件資源等安全資產是完全隔離的。
圖 2 – 具有多個域或多個信任根的安全處理器內核。
在此安全處理器架構中,每個實體都有自己的一組簽名應用程序。當安全處理器從一個應用程序切換到另一個應用程序時,所有上下文都會從安全處理器中清除。當從一個應用程序切換到另一個應用程序時,該安全處理器中不會保留任何數據、密鑰或其他信息。唯一的例外是在不同應用程序之間傳遞消息的能力,如果應用程序編寫者明確需要的話。這確保了不同實體之間不能共享上下文。
因此,安全資產完全安全地分配給特定實體,因此默認情況下沒有重疊,這意味著不能允許不同的實體訪問相同的資源。但是,如果分配得當,重疊是可以接受的。
假設 SoC 供應商使用了一個測試和調試端口。它希望為其 OEM 客戶提供相同的測試和調試端口。它們可能允許為 OEM 根設置與為 SoC 供應商的根設置相同的權限位,從而允許訪問該特定測試和首次亮相資源。
相反,SoC 供應商可能想要保留其他測試和調試端口而不提供它們。因此,在如何進行這些分配方面具有完全的靈活性,并且很大程度上取決于 SoC 設計人員想要重疊的資源類型。其他安全功能不能重疊。以加密和解密密鑰為例。每個實體都有一個單獨的密鑰空間或一組密鑰,它們不能相互共享。
分配給每個根的鍵
在這種多根信任架構中,一組密鑰被分配給每個根。如上所述的一項操作是它們使應用程序能夠為每個根進行不同的簽名。因此,每個根基本上都有自己的私有應用程序集。當應用程序被加載到安全處理器內核中時,根被識別,然后硬件專門為該根配置自己。
此外,與根關聯的密鑰提供了根使用的一組完整、隔離的派生密鑰。因此,一把鑰匙可以變成多把鑰匙,這些鑰匙可以用于相當多的不同安全操作。但是每個根的每組密鑰都是唯一的,一個根無法從另一個根訪問密鑰,這是硬件強制執行的。
一組權限也與每個根相關聯。這些權限與安全處理器內核中的不同硬件資源相關,例如調試和 I/O 引腳。這些不同的資源可以在不同的根之間進行分區,同樣是硬件強制執行的。一個 root 可以訪問調試端口;另一個根可能沒有或只有部分訪問權限。
一個根可能能夠控制芯片上的某些外部邏輯。另一個根可能能夠控制一組不同的外部邏輯,但可能與另一個根不同。在這種情況下,讓我們再次使用我們的測試和調試示例。SoC 供應商有一個根,使其能夠完全控制測試和調試邏輯并完全控制該 SoC 其他方面的配置。
它可能會向購買其 SoC 的 OEM 授予部分功能,但不是全部。SoC 供應商可能不希望 OEM 能夠訪問所有測試和調試邏輯,因為 OEM 可能對供應商不想共享的 SoC 技術了解太多。它可能允許 OEM 配置 SoC 的某些部分,但不是全部。
從一個實體到另一個實體的委托是根的另一個方面。就像 SoC 供應商可以將某些權限委托給 OEM 一樣,如果 SoC 供應商授予 OEM 這樣做的權利,OEM 也可以將某些權利委托給服務提供商。但是,該委托的權利和許可必須是 OEM 已經擁有的權利和許可的子集。
此外,根據業務關系和系統要求,SoC 供應商可能會讓 OEM 刪除 SoC 供應商的根。這意味著 SoC 供應商將不再能夠在 OEM 的設備上運行軟件。
對即將推出的 SoC 設計至關重要的根隔離
如今,對于繪圖板上的幾乎所有設備和系統而言,安全性變得越來越重要。但是,設計人員必須記住,安全有不同的用途,不同的實體需要安全功能。
例如,芯片制造商需要為自己的芯片產品制造和測試提供安全的功能。他們的 OEM 客戶也需要針對其特定應用的安全性。服務提供商和其他人可能也需要安全功能。因此,SoC 設計人員需要提供可以由這些不同實體在芯片的整個生命周期中使用的安全性。但是,他們希望在不損害自身安全的情況下實現這一目標。
正如我們在這里所說,這個想法是在應用程序之間進行隔離。一個編寫不當或惡意的應用程序可能會危及該 SoC 中所有其他應用程序的安全性。底線是避免每個應用程序容易受到惡意攻擊,同時在該 SoC 上運行的所有應用程序之間保持完全信任。
審核編輯:郭婷
-
芯片
+關注
關注
456文章
51075瀏覽量
425870 -
soc
+關注
關注
38文章
4193瀏覽量
218698
發布評論請先 登錄
相關推薦
評論