嵌入式系統安全性對攻擊狀況和防衛策略的概述和分析
拒絕服務型(DoS)攻擊,是試圖通過讓某個計算機的通信通道飽和或者公然強制發生復位來阻止計算機的資源為其合法用戶所用。
在這個分類中,攻擊者可以利用很多途徑,包括命名很有創意性的攻擊狀況,如“Smurf攻擊”。這個攻擊利用配置不好的網絡,這種網絡將對查詢IP廣播地址的“Ping”要求作出回應。這種情況下的“ping”操作,可以誘騙受害人返回其地址。這些網絡就變成了“Smurf 放大器”,產生大量針對受害者的通信流量。這種攻擊并不是什么新鮮招數。對系統管理員來說,配置他們的網絡以拒絕“ping”對廣播地址的請求且不轉移這類信息包,是一件相當簡單的事情。雖然這種方法不再是一個活躍的威脅,但很好地說明了DoS的共同特征,或者,更準確的說,是分布拒絕式服務(DDOS)攻擊:利用共同的系統特征的漏洞,劫持大量無辜的器件,來放大攻擊所產生的影響,和對目標系統的防護措施的破壞力。
在當前出現的多種攻擊方法中,惡意軟件的分布式攻擊方法已演變為包括高級的軟件機器人或定位于以前所破解的系統中的“bots(木馬)”。這些bot被拴綁在團塊或“botnet(僵尸網絡)”上,協同形成實際DDOS的攻擊。
從體系架構的角度解決安全性問題
既然我們已經描述了一些主要的攻擊特征及策略,我們將開發一些設計系統所需要的元件,使得這些系統即使不具有刀槍不入的能力,也至少高度安全并具有抵御黑客的能力。
在需要DMA控制器的系統中,保護程序免受攻擊的策略包括:將DMA控制器置于防火墻或虛擬層之后,并確保所有接口都內置于SOC內部。如果除了將存儲器置于SOC外部別無選擇,那么就應該考慮對與存儲器間的數據傳輸使用加密方案。這不會保護系統不受之前討論的所謂“重放攻擊”,但確實會使系統免受較低級別的攻擊。
一般來說,從安全角度看外部存儲器總線是應該避免的。如果片上資源有限,設計者就會被驅使使用外部存儲器,這時控制哪些東西可以從芯片取出以及提供何人在探測總線者的線索就變得很重要了。設計者應該保證芯片上保存有盡可能多的系統關鍵信息,這樣,黑客的探查即使不是完全不可能,至少也變得極為困難。
在某些導入碼會被破壞的情況下,比如當ROM或者OTP存儲器不能使用時,一個防衛措施是產生一個安全引導載入器。這種機制涉及硬件與軟件,創造了一個進程,在導入序列繼續執行時,系統BIOS可以利用該進程來進行加密標記及驗證。這保證了當引導序列將控制權交給操作系統時,機器正處于設計者想要的狀態。
然而,雖然引導過程得到完全的保護,一旦系統完全引導完畢,運行時間映像仍然可能被攻擊。IBM已經進一步拓寬了這一概念, 在BE處理單元中提供一個運行時間信令能力,由此增加了額外的器件安全防護層4。
如果設計者選擇讓交付用戶的產品的調試端口保持激活狀態,純粹從安全角度看,很顯然這是不被推薦的做法;那么應考慮對JTAG的訪問也給予和系統其他部分的保護程度相同的保護措施。可以置入挑戰/響應機制,為某一特殊通路建立圍墻保護,同時已經提出了一種高級的解決方案,它將對內部資源的訪問劃分為不同等級,這種方案基于與內部處理器分離的訪問管理器,并與外部安全服務器接口,以管理密鑰以及對測試設備訪問5。
同樣的策略,使用一個分立的安全處理器來控制系統內的其他處理器對系統資源的訪問,可以在多處理器SOC中廣泛應用;在這些應用中,被保護的資源的屬性決定了額外的花費和復雜度是合理的,比如機頂盒。
將集成電路的包裝去除的情況下,使它運行并用探針進行探查,并不是獲得某人的iTunes密碼的合適的方法。然而,對系統的成功破解如果真正造成了巨大的經濟損失,比如攻擊一個銷售點終端或敏感軍事政府設備,這個攻擊必然是高度復雜的,而且其攻擊必須得到大量的資金支持。
為了避免這種情況,可以在敏感電子器件外覆蓋極其精細的、能檢測侵入的網格。當一個芯片電路確定被侵入時,敏感數據,如秘鑰、安全引導映像、根管理程序等就會自動被銷毀,器件將無法工作。
加固客戶系統和網絡以抵抗DoS攻擊的策略,包括各種基于協議的、能賦予合法的或已授權傳送超出背景或攻擊性傳送的優先級別的方法。其中比較好的一個例子是“快速傳遞協議”6。
快速傳遞協議為用戶提供了加密的可用性令牌。用戶信息以一個設定信息包開頭,信息包中含有提供給下游程序的認證信息。當設定信息包經過驗證后, 信息包中的其他信息以高優先級按鏈條模式穿過通道。含有未經驗證的令牌的信息,則在時間以及帶寬允許的情況下得到處理。
大多數的操作系統都內置有一定程度的安全設置。內置安全設置的成熟性以及集成性是廣受爭議的論題,不過一般來說,加載貫徹了安全思想的Linux,如SE Linux(源于NSA的Linux派生發布),從安全角度看被認為是很強壯的系統(http://selinux.sourceforge.net/。SE Linux包含有一套豐富的訪問控制集,它允許系統被分化為眾多細密的安全區。過去的“用戶——群——外界環境”分類被擴展為包含了無數額外的、可用來創造極其成熟的安全政策的類型。其思想是:例如,如果一個系統驅動器被破解并嘗試訪問驅動器權限范圍外的資源,操作系統將拒絕訪問、并產生異議。
這些機制很重要,但從整個系統結構角度來看,它們忽略了一個重要方面——“攻擊表面”仍然很大。仍然需要對操作系統及其附帶的服務進行分析,以查找出任何可能忽略的易受攻擊的弱點進行分析,而且開發者是人,因此這些弱點終將被找到。集成在任意給定的操作系統中的安全設置只是安全難題中的一項。
借助虛擬化實現安全性
虛擬技術已從企業計算空間轉向嵌入式世界。虛擬技術包括在虛擬計算機監控器的控制下提取系統資源,有時稱為系統管理程序。系統管理程序使運行同時執行環境具有可能性,每個環境孤立存在,分別運行在基礎硬件平臺的一個虛擬代表上。
從器件整合和資源最優化的角度來說,虛擬計算機有很多優點。它們可以采用不同設計方法,從“純粹”的或“完全”的虛擬到“部分虛擬(Paravirtualization)”,部分虛擬是嵌入式應用中最常用的方法。在部分虛擬中,進行進一步的細分,包括微內核、微調度程序和輕薄的產品,這種輕薄產品實際上擴大了硬件抽象層,使之包括了虛擬特性。
從安全的角度來看,虛擬技術的使用,允許設計者通過執行特權分離和最小權限原則7,8,來減輕計算機安全攻擊的潛在危害。
特權分離要求應用程序被分為有特權部分和無特權部分,有特權的部分應保存得越小越好,來減小攻擊的表面。因此,一個成功的、針對對更大的、不安全的組件的攻擊,只會獲得對敏感數據的極低的訪問能力。
最小權限要求,每個軟件模塊僅能獲得合理用途所需的信息和資源。
各種各樣不同的虛擬技術的一個共同點就是整齊。對于純粹虛擬和完全虛擬,VMM負責捕捉和處理所有由客戶操作系統執行的指令。這種方法的好處是客戶操作系統可以不更改地運行。另外,由于操作系統是與硬件完全脫鉤的,才有可能創造更高的便攜式應用,其應用平臺多樣化且在應用程序中。這種方法的缺點是在系統功耗方面是一個重大的支出,特別是當硬件平臺沒有配置軟件虛擬支持的情況下。
純粹虛擬技術依靠具有重要硬件支持的底層硬件平臺來實現,如Intel公司的VT體系機構和AMD的Pacifica。在這些系統中,虛擬計算機資源的狀態在硬件中維持,而且VMM的性能消耗大幅度減小。這種技術的優點是它類似于全虛擬,表現在客戶操作系統可以無修改地運行。缺點是那些運用這一技術的產品占用的裸片面積稍大一些,而且現有可用的嵌入式裝置中納入這種水平的支持能力者并不多。
部分虛擬技術(Paravirtualization)是這樣一種技術,其特定操作系統的指示,一般具有“特權”和內核模式指示,被“hypercalls”或API對管理程序的調用所代替。這減輕了處理所有客戶指示的負擔,降低了系統的開銷,明顯地提高了執行績效。缺點是客戶操作系統必須被“觸及”,但是,實際上這種影響是很小的。
例如,分析Linux時,發現/dev/arch中具有優先權的指令僅存在15個文件中。
在普通的部分虛擬技術種類中,存在一些系統管理程序的子程序。
微調度器(如圖2),正如其名稱所暗示的那樣,是按照一個固定的進度表來分配系統資源的程序。商業上典型的具體實施方法是在內核模式下運行微調度程序,并且作為主控來控制一個客戶操作系統,該OS也在類似的內核模式下進行操作。從安全的角度來說,這意味著客戶操作系統一定得是一個“良好的市民”,因為客戶完全可能繞過微調度程序。這使得整個空閑的存儲器易受攻擊。為了消除這個弱點,微調度程序的開發者增加了一個可供選擇的安全引擎,以監測和控制硬件的訪問。
圖2 使用微調度器的虛擬化
微內核(圖3)本質上是一個操作系統,這個系統移去了大量的典型操作系統服務,并代之以可以在用戶級別執行服務的機制。從安全的角度來看,它的優點是,用戶模式實體訪問底層硬件時不具有危險性,因為內核模式指令調用已被移去。其缺點主要是多重處理域的維護,當執行從微核的本地處理區運行到客戶操作系統及其應用程序處理區時,這些處理域需要具體實現復雜的進程間通信(IPS)機制和額外的環境轉換。
圖3 基于微內核的虛擬化方法
虛擬的另一個途徑是產生一個硬件抽象層(HAL),并增加額外的服務,以照顧多重執行環境(圖4)的需求。HAL是一個硬件微薄轉換層,它可以使得軟件具有更好的可移植性。為增加對多重執行環境的支持,開發者創造了超微內核,盡管這種表述不是很準確。在實踐中,這種途徑和微核型解決方案的不同之處是,雖然微核在設計時已經考慮到要運行某種客戶操作系統,而HAL更趨向于以硬件為中心,而且并不了解操作系統的具體情況。
圖4 利用HAL或者超微內核性管理程序實現的虛擬化
從安全的角度來說,最關鍵的因素是所有商業管理程序控制對硬件資源(如MMU系統)訪問的能力。例如,如果一個客戶端應用程序(比如web瀏覽器)被一個流氓HTML站點所破壞,并試圖侵入存儲器禁區,那么系統管理程序就會向存儲器強加邊界,并適當地保護敏感數據。通過使用安全的系統管理員,根據駐留在特定的執行環境中的應用程序的已知邊界檢查可疑的重填數據,就可以實現由軟件填充的TBL不受侵擾,由此保證程序的執行處于“界限內”。在路由器或其他客戶端裝置中,系統管理程序可以用來提供一定程度的DoS保護,這可以通過使用多重VM來控制對任何特定資源的訪問或是要求提供適當的通行證來實現的,這樣做可以避免VM使用“界限外”的資源。
在虛擬化架構的設計過程中,虛擬計算機之間的默認通信途徑要盡可能減少,理想的情況是,如果從VM到VM沒有公開昭示的授權的話,最好沒有任何通信。
linux相關文章:linux教程
存儲器相關文章:存儲器原理
評論