SoC 和系統設計人員希望為他們的產品創建一個堅實的安全基礎。通常,對安全系統的要求與提供設計人員的客戶可以在其上開發的靈活平臺的需要發生沖突。必須從首要原則開始,以提供一個強大、安全的平臺,同時讓用戶自由創建。
與安全相關的兩個基本概念在這里發揮作用。它們是防御深度和最小特權原則。第一個意味著您對某些攻擊具有多層防御。因此,攻擊者必須通過每一層才能獲得資產,而他們一開始就不應該訪問這些資產。
例如,用戶應用程序層應該可以訪問其資產,僅此而已。每一層都以相同的方式處理。用戶應用層除了向其他層發出請求外,不允許做任何事情。這兩個概念強化了安全硅 IP 應在其上運行的剛性基礎——例如,來自Rambus的 CryptoManager 信任根 (RoT) 。
剛性基礎意味著在每個接口上都強制執行最小權限原則。每個層只能執行它允許執行的行為。如果一個層想要在該邊界之外做任何事情,它必須請求另一個層來承擔任務。這適用于所有層,從用戶應用程序一直到硬件本身。
各種各樣的軟件漏洞
在這個時代,系統和SoC設計人員面臨著各種各樣的軟件漏洞,為安全系統建立一個安全和剛性的基礎具有更大的意義。
在大多數情況下,您(作為系統設計者)為您的客戶或其他第三方提供編寫軟件的能力。該軟件在您的產品范圍內執行,但它引起了相當大的關注。一方面,您對所編寫代碼的質量一無所知。
您不知道開發人員對編寫安全軟件的了解程度。因此,正確地假設將有軟件漏洞寫入他們的應用程序。因此,作為系統設計者,您必須保護系統的其余部分免受這些不可避免的漏洞的影響。
如前所述,根據最小特權原則,即使是受到損害的用戶應用程序也應限制它們可以執行的操作或功能。盡管它們的使用方式由于它們的漏洞而永遠不應該被使用,但它們仍然應該無法逃脫堆棧中的特定層。
將其保留在沙盒中
根據此處討論的基本安全原則,安全硅 IP 必須是可編程的,并且設計用于專門的“沙盒”用戶應用程序。(注意:術語“沙盒”是計算機安全術語,描述了一種安全結構,在該結構中創建了一個單獨的受限環境,并且禁止某些功能。)在本文的上下文中,術語“沙盒”特指限制關于軟件應用程序的功能。應用程序必須通過調用以更高權限執行的系統來請求訪問資源。如果應用程序試圖破壞其任何沙盒規則,一個或多個系統可能會做出反應以阻止應用程序執行。
安全硅 IP 必須以沙盒方式對用戶應用程序進行沙箱處理,以防止他們造成傷害,特別是對在安全硅 IP 內執行的其他應用程序。換句話說,不幸的是,應用程序的漏洞可能會暴露它可以訪問的安全資產,但它不能暴露其他應用程序的受保護資產。這就是安全硅 IP 對最小特權原則和深度防御的使用帶來巨大收益的地方。
這里的想法是使用安全監視器在加載應用程序時在硬件中對用戶應用程序的權限進行編程。這將用戶應用程序對資源的訪問限制為僅允許它們訪問的資源。除了安全監視器在硬件中編程的權限之外,用戶應用程序還被限制與底層硬件進行直接交互。用戶應用程序必須通過微內核請求訪問硬件資源。微內核構成了包含用戶應用程序的第一個屏障。
但是,如果在用戶應用程序和微內核中發現漏洞,用戶應用程序仍然可以安全地超出其自身的資源訪問邊界。因為用戶應用程序的權限是在加載時在硬件中設置的,并且權限一直持續到應用程序被卸載,所以攻擊者無法利用安全漏洞來訪問用戶應用程序尚未訪問的資產。同樣,基于深度防御和最小特權原則,可以有多個不信任方在安全硅 IP 的范圍內安全地執行代碼,而不會冒彼此之間或彼此之間泄露其安全資產的風險。
分層安全的意義
分層安全的目標是確保每個層僅限于分配給它執行的任務,而不是更多。如果在特定層中犯了錯誤,并且該層被授予了對不應該擁有的資產的訪問權限,則攻擊者將利用該行為進行攻擊。
正如我們在今天的系統中一再看到的那樣,如果系統行為在每個系統級別都沒有得到適當的保護,那么它們就沒有適當的約束來執行設計的功能。因此,攻擊者極有可能利用不應該執行的功能來獲取有價值的資產。
一個典型的例子是當今高度復雜的 CPU,它們針對高性能而不是安全資產的安全性和防御進行了調整。正如廣泛報道的那樣,這些 CPU 最近成為 Meltdown、Spectre 和 Foreshadow 等漏洞的受害者。平心而論,這些 CPU 確實有最小特權原則的概念。
不幸的是,這些 CPU 沒有正確實施縱深防御的概念。系統和 SoC 設計人員的替代方案是將安全資產的使用從主 CPU 轉移到專用的安全硅 IP 上。但是,必須從硬件和軟件的角度來設計安全硅 IP,以保護安全資產不被泄露。
衡量每個級別的安全性
此時您可能會問自己:“我如何衡量設計中每個級別的安全性?” 首先要做的是定義特定層的能力。系統和 SoC 設計人員應利用形式驗證來確保設計和架構的正確性。這對于確保層只做它應該做的事情并且正確地做這件事是絕對重要的。
同樣的練習適用于各個層。例如,查看引導加載程序層。引導加載程序被指定為安全地將系統引導到準備好接受用戶應用程序的狀態。你必須問這樣的問題:這種行為的流程是什么?錯誤條件是什么?如何管理這些錯誤情況?有沒有辦法讓格式錯誤的圖像導致引導加載程序以可能暴露安全資產的方式運行?
設計人員必須逐層檢查系統,并確認每一層的行為都符合規定,并且在給定無效刺激時,每一層都能優雅地管理錯誤。例如,當將不正確的值(或不可能的值)寫入硬件不支持的特定寄存器時,硬件會如何表現?會不會導致系統崩潰?它是否會導致系統表現得由于某種原因而變得不安全?
從軟件的角度來看,如果引導加載程序收到了格式錯誤的固件映像,那么引導加載程序是否會正常運行并丟棄錯誤的映像?或者引導加載程序是否接受、加載和執行映像?更糟糕的是,引導加載程序是否會變得不穩定并進入無效狀態,從而將安全資產暴露給攻擊者?
鑒于每個級別的安全性適當,靈活性是系統和 SoC 設計人員期望的安全引擎的另一個方面。這里包括允許第三方應用程序在其邊界內執行。這些應用程序是用 C 語言編寫的,完全能夠執行所需的任何任務。安全硅 IP 必須具有執行任意應用程序的靈活性。這些應用程序僅限于可用的資源。除此之外,應用的類型僅受系統和 SoC 設計者的想象力限制。
結論
在轉向高度安全的系統時,設計人員應強烈考慮深度防御和最小特權原則這兩個安全概念作為指導方向。
這些將為正確架構和設計的安全執行環境提供路線圖。反過來,這些環境將把每一層的能力限制為只有該給定層所必需的那些能力。因此,即使第三方應用程序引入了漏洞,這些應用程序仍然僅限于最初授予它們的資產。
審核編輯:郭婷
-
cpu
+關注
關注
68文章
10872瀏覽量
211967 -
soc
+關注
關注
38文章
4173瀏覽量
218381
發布評論請先 登錄
相關推薦
評論