軟件的最大優勢在于它可以改變——它可以針對新需求和新情況進行增強、升級、修復和修改。同時,軟件的最大弱點是可以更改和修改以復制不良行為。
軟件安全的一個主要目標是僅允許被授權實體更改軟件,并防止未經授權的實體更改軟件。如果做不到這一點,您希望能夠檢測軟件是否已更改。這一目標,即預防和檢測未經授權的更改,是受信任軟件的核心。
問題是,你怎么知道你可以信任一個軟件?一種方法是讓您信任的實體證明該軟件是可信的。這方面的一個例子是僅安裝來自“已知良好”或受信任來源的軟件。您還應該使用加密技術檢查軟件的簽名。例如,開發人員可以使用Linuxrpm 軟件包格式和 rpm 實用程序在安裝之前驗證其軟件包的加密哈希。這是使用 rpm 的正常部分,有助于檢測通過惡意操作或數據損壞修改的軟件包。
然而,這僅僅是個開始——信任和驗證必須貫穿整個軟件開發鏈。例如,執行轉速檢查的軟件必須是可信的。可以使用系統完整性實用程序檢查 rpm 軟件。但是,系統完整性實用程序也必須是可信的。這可以在Linux內核中完成(它集成了某些系統完整性檢查功能。然后,Linux 內核必須由引導加載程序進行驗證,這可以通過 UEFI 固件和安全啟動進行驗證。UEFI 固件可以檢查其自身的完整性。是信任自始至終!
但 UEFI 固件是軟件。特殊軟件,具有多次完整性檢查和特殊更新過程,但它仍然是軟件。如果資源充足,即使是 UEFI 固件也可能受到損害。一旦系統固件遭到入侵,系統中的任何其他內容都無法信任。
要閱讀更多來自Russell Doty的開源軟件和安全博客,請單擊此處。
在系統之外,公鑰加密(PKC)可以提供一種強大的方法來驗證系統的身份并執行安全操作。PKC 使用一對密鑰 – 公鑰和私鑰。只要私鑰受到保護,加密就是安全的。不幸的是,如果系統受到損害,私鑰也會受到損害,并且實際的加密操作可能會被暫停。如果您需要信任系統,這不是一件好事!
一個答案是使用不可變的硬件。例如,通過在生產過程中熔斷一組芯片級保險絲,可以在硬件中固定 CPU 序列號。不幸的是,此CPU序列號將由軟件讀取和傳輸。如果系統遭到入侵,軟件可以返回任何序列號。
另一個答案是使用特殊的安全處理器 - 專用計算機,它只執行一小部分安全和加密功能,并提供不可變的硬件信任根,其中包括幾個關鍵屬性。在硬件信任根中,安全處理器及其軟件和內存是獨立的,旨在抵御物理攻擊或危害。軟件硬編碼到芯片中,無法修改或更新;它是真正的只讀。安全處理器中包含有限數量的非易失性存儲;此存儲器主要用于存儲加密密鑰和哈希。安全處理器包括一組強大的加密功能,包括加密和解密、哈希和加密密鑰生成,所有這些都是使用定義良好的 API 執行的。
使用硬件信任根,可以在安全處理器內生成公鑰和私鑰對。私鑰可以保留在處理器內部,永遠不會暴露給系統。在此模式下,私鑰永遠不會存在于處理器之外,并且無法檢索或泄露。
這種安全處理器可用于為構建可信系統提供起點,方法是使用它來證明最低級別的 UEFI [統一可擴展固件接口] 固件的完整性,然后構建完整且受信任的軟件堆棧。這正是將受信任的處理模塊 (TPM) 與 UEFI 安全啟動結合使用以實現受信任啟動時所做的操作。
TPM 在服務器、臺式機和筆記本電腦系統中廣泛使用。它還可用于高端物聯網 (IoT) 和嵌入式系統。
TPM通常作為單獨的芯片實現,安全處理器也被集成到標準CPU中。這方面的例子包括 ARM TrustZone 和 AMD 安全處理器。英特爾正在添加軟件防護擴展 (SGX),提供硬件強制的安全功能。
不幸的是,這些安全功能并沒有像它們應該的那樣廣泛使用。我鼓勵任何實施安全敏感系統(實際上應該是所有系統)的人考慮在其系統上使用可用硬件信任根的安全功能。
審核編輯:郭婷
-
芯片
+關注
關注
456文章
51037瀏覽量
425476 -
Linux
+關注
關注
87文章
11329瀏覽量
209968 -
計算機
+關注
關注
19文章
7525瀏覽量
88320
發布評論請先 登錄
相關推薦
評論