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