嵌入式系統(tǒng)安全性對(duì)攻擊狀況和防衛(wèi)策略的概述和分析
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著電子裝置擔(dān)負(fù)的責(zé)任越來(lái)越多,我們放入蜂窩式電話、媒體播放器、機(jī)頂盒以及其他電器的個(gè)人信息也越來(lái)越多。于是,嵌入式系統(tǒng)的安全性涵蓋了隱私信息保護(hù)的方方面面,從在商業(yè)終端(POS)上進(jìn)行的信用卡交易的真實(shí)性保護(hù),一直到私人語(yǔ)音郵件的防護(hù)。
在這篇調(diào)研報(bào)告中,我們將回顧最基本的攻擊狀況、系統(tǒng)弱點(diǎn),并討論最好的防衛(wèi)策略。我們從硬件、軟件及軟硬件混合的角度來(lái)分析系統(tǒng)的強(qiáng)化,比如安全引導(dǎo)、系統(tǒng)管理程序?qū)Υ鎯?chǔ)器的控制。
產(chǎn)品層次的正式安全認(rèn)證可以具體到某一特定的應(yīng)用,于是,詳情會(huì)被保存得相當(dāng)隱秘,這也就不難理解了。同樣的,我們也從安全的角度,提出能夠產(chǎn)生有用度量的方法,來(lái)決定SOC及系統(tǒng)組件的一般魯棒性和適用性。(注:魯棒性(robustness)就是系統(tǒng)的健壯性。它是在異常和危險(xiǎn)情況下系統(tǒng)生存的關(guān)鍵。比如說(shuō),計(jì)算機(jī)軟件在輸入錯(cuò)誤、磁盤故障、網(wǎng)絡(luò)過(guò)載或有意攻擊情況下,能否不死機(jī)、不崩潰,就是該軟件的魯棒性。)
攻擊狀況分析
知道我們所擔(dān)心的是什么,這是很重要的。它們的技巧是什么?它們的資源有幾種?威脅的類型千變?nèi)f化,從相對(duì)低強(qiáng)度的軟件攻擊—這種攻擊基于一些可在網(wǎng)上新聞組(如:alt.hacker或各種各樣的“warez”站點(diǎn))找到的軟件—一直到資金充足的工業(yè)間諜活動(dòng)。
攻擊狀況可合乎情理地劃分為如下幾類:
.一個(gè)聰明的外部人員:這個(gè)人很聰明但對(duì)系統(tǒng)的了解卻很有限。他已經(jīng)可以使用先進(jìn)程度中等的設(shè)備,并可以利用已知的弱點(diǎn)而不是制造新的弱點(diǎn)。
.一個(gè)充分了解系統(tǒng)的內(nèi)部人員:這個(gè)人受過(guò)專業(yè)技術(shù)教育并擁有技術(shù)方面的經(jīng)驗(yàn)。他對(duì)系統(tǒng)各個(gè)部件的了解程度不同,但是,由于其位置處于“防火墻之后”,他將會(huì)獲得具有高度損壞性的詳細(xì)資料。這種人可以利用高度專業(yè)化的工具和手段進(jìn)行分析。
.一個(gè)有資金支持的組織:一個(gè)組織將能夠組建具有技術(shù)互補(bǔ)性的專家隊(duì)伍。在那個(gè)對(duì)系統(tǒng)了解充分的內(nèi)部人可能在某些特定的領(lǐng)域具有專長(zhǎng),而該組織可以通過(guò)增加人手來(lái)填補(bǔ)這些領(lǐng)域內(nèi)的空白。他們將有機(jī)會(huì)使用先進(jìn)的分析工具和精密的儀器來(lái)更改組件。聚焦離子束(FIB)是一種復(fù)雜且昂貴設(shè)備的技術(shù),可以用來(lái)修改集成電路。這種設(shè)備遠(yuǎn)遠(yuǎn)超過(guò)大多數(shù)個(gè)人的使用需要,但是,那些破解有著重要價(jià)值的對(duì)象的安全防護(hù)措施的組織卻要利用該技術(shù)。
攻擊
攻擊者技術(shù)和能力不同,他們的方法也不同。我們從一些基本可以在分屬各種威脅程度的幾種攻擊方法開(kāi)始。
一類范圍很寬的軟件的攻擊,依賴于攻擊者在執(zhí)行環(huán)境中獲得足夠的特權(quán),以便能控制和獲取敏感的裝置及數(shù)據(jù)。例如,在iPhone軟件體系結(jié)構(gòu)的開(kāi)發(fā)過(guò)程中,諸如瀏覽器等部分就處于系統(tǒng)的優(yōu)先層面1。從系統(tǒng)集成的角度來(lái)說(shuō),這是有道理的。但是使得系統(tǒng)易遭攻擊,因?yàn)槿魏螘?huì)受到威脅的系統(tǒng)組成部分,可以具有最高權(quán)限級(jí)別,因此可以訪問(wèn)大量系統(tǒng)資源。
使用這種方法的最近的一個(gè)例子,由Charlie Miller等人在去年夏天公布于眾。通過(guò)將一個(gè)惡意的HTML文件指向電話的Safari網(wǎng)絡(luò)瀏覽器,可以控制對(duì)包含敏感信息的存儲(chǔ)區(qū)的訪問(wèn)。這會(huì)使電話的Safari網(wǎng)絡(luò)瀏覽器崩潰。
在實(shí)際應(yīng)用中,這種攻擊可以通過(guò)發(fā)含有鏈接的郵件,這樣一個(gè)簡(jiǎn)單的權(quán)宜之計(jì)來(lái)實(shí)現(xiàn)。其中,郵件中鏈接所指的是一個(gè)具有惡意HTML的服務(wù)器。如果接收者電擊那個(gè)鏈接,使用那個(gè)攻擊所轉(zhuǎn)化的安裝程序,接收者就很可能受到攻擊。
從安全的角度來(lái)說(shuō), DMA(直接存儲(chǔ)器存取)存儲(chǔ)器是一個(gè)令人頭疼的問(wèn)題。它們使用一種強(qiáng)大的機(jī)制來(lái)迅速而有效地轉(zhuǎn)移數(shù)據(jù),但是它們轉(zhuǎn)移數(shù)據(jù)的過(guò)程也是大多數(shù)系統(tǒng)所無(wú)法控制的。如果目標(biāo)裝置是有DMA能力的,一個(gè)惡意的應(yīng)用程序通過(guò)注入代碼和數(shù)據(jù)或獲取敏感信息,可以完全地搞垮一個(gè)系統(tǒng)。DMA控制器,由于它們可以很輕松地進(jìn)行繞過(guò)保護(hù)層和訪問(wèn)存儲(chǔ)器,因此在正在設(shè)計(jì)的SOC和系統(tǒng)中,必須對(duì)其進(jìn)行一系列詳細(xì)的審查。
有一種掠奪普遍使用的數(shù)據(jù)結(jié)構(gòu)的攻擊方法是緩存器溢出攻擊。這種攻擊普遍利用那些被用來(lái)存儲(chǔ)用戶向一個(gè)程序所提供的輸入的堆棧,比如說(shuō):姓名、住址、電話號(hào)碼和其他的典型表格性數(shù)據(jù)。在正常操作條件下,數(shù)據(jù)按照操作者的輸入順序,與返回存儲(chǔ)地址一起,存儲(chǔ)在堆棧里。
然而,在一些情況下,應(yīng)用軟件并不進(jìn)行適當(dāng)?shù)臋z查,來(lái)確定接受到的數(shù)據(jù)是否超出了所分配的緩沖存儲(chǔ)區(qū)域。向緩存中本該操作者輸入數(shù)據(jù)的區(qū)域,傳送尺寸過(guò)大的數(shù)據(jù),并伴以一段惡意的執(zhí)行代碼及一個(gè)用來(lái)覆蓋調(diào)用程序的返回地址的地址數(shù)據(jù)。那個(gè)特大的數(shù)據(jù)導(dǎo)致比堆棧配置空間更大空間的使用,造成緩存溢出。同時(shí),由于地址數(shù)據(jù)過(guò)多的返回地址指向攻擊者的惡意代碼,當(dāng)功能嘗試返回時(shí),就開(kāi)始執(zhí)行黑客在錯(cuò)誤返回地址所寫的代碼。這種危害已經(jīng)達(dá)成,侵入者掌握了控制權(quán)。
一旦攻擊行動(dòng)成功地將執(zhí)行代碼放入它的域中,系統(tǒng)水平上的危險(xiǎn)度就依賴于賦予被劫持的進(jìn)程的授權(quán)水平。當(dāng)然,如果被危及的程序在系統(tǒng)中被許可控制的范圍并不寬,那么危害的程度就會(huì)相對(duì)減小。
由于這些種類數(shù)據(jù)結(jié)構(gòu)的廣泛使用,這是一種相當(dāng)普遍的攻擊方式。所以,在一些任何安全防護(hù)壁壘中,如:系統(tǒng)管理程序,安全內(nèi)核,應(yīng)該盡量少地使用緩存和堆棧,如果能夠完全避免使用它們,那就更好了。
正如我們所指出的,通過(guò)破襲正在運(yùn)行系統(tǒng)的組件,可以進(jìn)行大量的控制。然而,當(dāng)系統(tǒng)關(guān)閉時(shí),可以生成大量其它的惡意程序。在一些情況下,侵入者可以在存儲(chǔ)裝置上寫入代碼,比如導(dǎo)入代碼。這就允許侵入者可以更改代碼,使驅(qū)動(dòng)程序在下次導(dǎo)入時(shí)按照攻擊者所希望的方式而不是它原來(lái)的設(shè)計(jì)所期望的方式工作。這種進(jìn)攻更有可能是由更高一個(gè)層次的黑客來(lái)執(zhí)行的,比如:“了解情況的內(nèi)部人員”。
在整個(gè)程序開(kāi)發(fā)過(guò)程中所使用的設(shè)計(jì)功能,通常是進(jìn)入系統(tǒng)的秘密途徑。聯(lián)合測(cè)試行動(dòng)組(JTAG)標(biāo)準(zhǔn)的端口是一個(gè)邊界掃描端口,可以連接到許多電路板級(jí)和芯片級(jí)的資源上,可以讓攻擊者獲得對(duì)幾乎任何一種敏感資源的控制,更改執(zhí)行流程或執(zhí)行代碼。
通常情況下,是否在交付產(chǎn)品時(shí)提供JTAG端口,是一個(gè)復(fù)雜而難以決斷的問(wèn)題,這是因?yàn)椋瑢⑵淙∠?,就意味著在現(xiàn)場(chǎng)進(jìn)行的調(diào)試變得十分困難,但是,若是保留它,又會(huì)讓系統(tǒng)存在潛在的弱點(diǎn),而極易被擊破。這是一個(gè)很好的例子,它說(shuō)明,在設(shè)計(jì)過(guò)程中,把產(chǎn)品設(shè)計(jì)得盡可能開(kāi)放有用,而同時(shí)又要封閉可造成危害的途徑,這兩者是相互沖突的。
如果存在一條外部存儲(chǔ)總線,它為攻擊者提供了重要的機(jī)會(huì),并對(duì)安全設(shè)計(jì)來(lái)說(shuō)是一個(gè)重要的挑戰(zhàn)。如果攻擊者可以偵測(cè)外部存儲(chǔ)總線,那么他就有可能形成一個(gè)代碼序列,這個(gè)序列反加到原來(lái)的那些總線上后,可以誘騙系統(tǒng)泄漏一些內(nèi)部秘密。這就是我們之前所提到的“重放攻擊”(replay attack)。即使加密的SDRAM,也可由于復(fù)制或回放被選擇的存儲(chǔ)內(nèi)容,而受到這種類型的攻擊。
旁路轉(zhuǎn)換緩沖器(translation lookaside buffer,TLB)是一個(gè)高速緩沖存儲(chǔ)器,它將虛擬內(nèi)存地址轉(zhuǎn)換成物理地址。應(yīng)對(duì)對(duì)這個(gè)子系統(tǒng)進(jìn)行特別嚴(yán)格的審查,這是因?yàn)?,作為系統(tǒng)的一部分,不但對(duì)于系統(tǒng)性能來(lái)說(shuō)很重要,而且也是可被攻擊的弱點(diǎn)。從我們的目標(biāo)出發(fā),主要有兩大類:硬件填充,即集成一個(gè)稱作“硬件表walker”的裝置,以及軟件填充。
對(duì)于具有“硬件表walker”的系統(tǒng)而言,TLB再次填充是在出現(xiàn)TLB丟失時(shí)由硬件自動(dòng)完成的。如果攻擊者具有可以向存儲(chǔ)有MMU描述符表格的存儲(chǔ)器寫入的權(quán)限,那么攻擊者就可以改變表內(nèi)的內(nèi)容,并寫入錯(cuò)誤的轉(zhuǎn)換關(guān)系。這種行為會(huì)產(chǎn)生很多影響,比如產(chǎn)生一個(gè)對(duì)內(nèi)存或敏感裝置的映射。
一個(gè)稍微有些不同的策略適用于具有TLB的軟件填充策略的體系架構(gòu)。MMU和TLB是寄存器控制的,而且需要進(jìn)入優(yōu)先權(quán)才能訪問(wèn),但系統(tǒng)仍然存在弱點(diǎn),即執(zhí)行重填入的代碼和該代碼所操作的數(shù)據(jù)都保留在內(nèi)存中,因此容易被惡意的應(yīng)用程序所使用。
在密碼學(xué)中,“旁路攻擊”是基于從加密系統(tǒng)的物理實(shí)現(xiàn)方案所獲取的信息、而非基于理論算法缺陷的任何攻擊行為。眾所周知的攻擊包括定時(shí)攻擊2、功率測(cè)量、輻射監(jiān)測(cè)。在這些攻擊中,功率或輻射特征經(jīng)匯編后,與已知的系統(tǒng)行為相比較,以便找出行為的模式。一旦模式和相應(yīng)的內(nèi)部行為被確定,就可以設(shè)定故障誤注入的時(shí)機(jī)和位置,以使得系統(tǒng)按照需要出現(xiàn)異常。
而一些黑客滿足于他們從SOC封裝之外所了解的信息,為了實(shí)現(xiàn)一些高價(jià)值的目標(biāo)[如電子收款機(jī)系統(tǒng)(POS)終端],我們應(yīng)關(guān)注一個(gè)更現(xiàn)實(shí)的問(wèn)題,黑客們將會(huì)嘗試將嵌入式器件的封裝去除,來(lái)進(jìn)行信號(hào)探查和內(nèi)部存儲(chǔ)的分析。作為這個(gè)方法的第一步,攻擊者,很可能是一個(gè)團(tuán)伙中的一員,會(huì)通過(guò)加熱或酸腐蝕來(lái)融化芯片的外殼,以便能置入微探針。完成這一步后,器件開(kāi)始運(yùn)行,黑客嘗試分析模式并測(cè)定弱點(diǎn)。
圖1描述硬件表Walker攻擊的代碼序列。在初始狀態(tài)下(1),敏感數(shù)據(jù)駐留在內(nèi)部存儲(chǔ)中,無(wú)法從虛擬地址空間獲取。攻擊者利用專門的探測(cè)手段,可以直接訪問(wèn)外部存儲(chǔ),以修改MMU描述符表(2)。當(dāng)應(yīng)當(dāng)進(jìn)行下一次虛擬地址(3)的TLB重填的時(shí)刻到來(lái)時(shí),所針對(duì)的數(shù)據(jù)被映射到虛擬地址空間中,從而被攻擊者所截獲
黑客通過(guò)使用故障注入的方法,使用能量脈沖、熱量和高頻率,試圖影響正常的系統(tǒng)運(yùn)行。一旦這些方法的某種組合可以將系統(tǒng)驅(qū)動(dòng)到一個(gè)更“有用”的狀態(tài),黑客就能獲得更多的信息,從而進(jìn)一步破壞系統(tǒng)的安全性。
在一種資源可再生的攻擊中,應(yīng)用程序的開(kāi)發(fā)者已經(jīng)假設(shè),一旦某種資源,如一個(gè)目標(biāo)文件,被刪除,存儲(chǔ)器中資源的內(nèi)容也就會(huì)被刪除了。但實(shí)際情況并不總是這樣,攻擊可以利用這個(gè)情況來(lái)掃描存儲(chǔ)器,找到有用的殘留信息。一般而言,在一個(gè)安全的環(huán)境中,用密碼寫的應(yīng)用程序,被用來(lái)跟蹤任何包含敏感信息的資源,并在將那些資源返回信息資源池之前將其清除。
然而,在應(yīng)用程序崩潰或外部中止的情況下,那種行為就不能得到保證。即使安全地使用存儲(chǔ)器,緊密地控制資源區(qū),只要在一個(gè)恰當(dāng)時(shí)機(jī)注入故障條件,比如能量脈沖,存儲(chǔ)器中就會(huì)殘留數(shù)據(jù),而這些數(shù)據(jù)隨后將被黑客所盜取。
拒絕服務(wù)型(DoS)攻擊,是試圖通過(guò)讓某個(gè)計(jì)算機(jī)的通信通道飽和或者公然強(qiáng)制發(fā)生復(fù)位來(lái)阻止計(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)管理員來(lái)說(shuō),配置他們的網(wǎng)絡(luò)以拒絕“ping”對(duì)廣播地址的請(qǐng)求且不轉(zhuǎn)移這類信息包,是一件相當(dāng)簡(jiǎn)單的事情。雖然這種方法不再是一個(gè)活躍的威脅,但很好地說(shuō)明了DoS的共同特征,或者,更準(zhǔn)確的說(shuō),是分布拒絕式服務(wù)(DDOS)攻擊:利用共同的系統(tǒng)特征的漏洞,劫持大量無(wú)辜的器件,來(lái)放大攻擊所產(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)的角度解決安全性問(wèn)題
既然我們已經(jīng)描述了一些主要的攻擊特征及策略,我們將開(kāi)發(fā)一些設(shè)計(jì)系統(tǒng)所需要的元件,使得這些系統(tǒng)即使不具有刀槍不入的能力,也至少高度安全并具有抵御黑客的能力。
在需要DMA控制器的系統(tǒng)中,保護(hù)程序免受攻擊的策略包括:將DMA控制器置于防火墻或虛擬層之后,并確保所有接口都內(nèi)置于SOC內(nèi)部。如果除了將存儲(chǔ)器置于SOC外部別無(wú)選擇,那么就應(yīng)該考慮對(duì)與存儲(chǔ)器間的數(shù)據(jù)傳輸使用加密方案。這不會(huì)保護(hù)系統(tǒng)不受之前討論的所謂“重放攻擊”,但確實(shí)會(huì)使系統(tǒng)免受較低級(jí)別的攻擊。
一般來(lái)說(shuō),從安全角度看外部存儲(chǔ)器總線是應(yīng)該避免的。如果片上資源有限,設(shè)計(jì)者就會(huì)被驅(qū)使使用外部存儲(chǔ)器,這時(shí)控制哪些東西可以從芯片取出以及提供何人在探測(cè)總線者的線索就變得很重要了。設(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)程來(lái)進(jìn)行加密標(biāo)記及驗(yàn)證。這保證了當(dāng)引導(dǎo)序列將控制權(quán)交給操作系統(tǒng)時(shí),機(jī)器正處于設(shè)計(jì)者想要的狀態(tài)。
然而,雖然引導(dǎo)過(guò)程得到完全的保護(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的訪問(wèn)也給予和系統(tǒng)其他部分的保護(hù)程度相同的保護(hù)措施??梢灾萌胩魬?zhàn)/響應(yīng)機(jī)制,為某一特殊通路建立圍墻保護(hù),同時(shí)已經(jīng)提出了一種高級(jí)的解決方案,它將對(duì)內(nèi)部資源的訪問(wèn)劃分為不同等級(jí),這種方案基于與內(nèi)部處理器分離的訪問(wèn)管理器,并與外部安全服務(wù)器接口,以管理密鑰以及對(duì)測(cè)試設(shè)備訪問(wèn)5。
同樣的策略,使用一個(gè)分立的安全處理器來(lái)控制系統(tǒng)內(nèi)的其他處理器對(duì)系統(tǒng)資源的訪問(wèn),可以在多處理器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ì)的、能檢測(cè)侵入的網(wǎng)格。當(dāng)一個(gè)芯片電路確定被侵入時(shí),敏感數(shù)據(jù),如秘鑰、安全引導(dǎo)映像、根管理程序等就會(huì)自動(dòng)被銷毀,器件將無(wú)法工作。
加固客戶系統(tǒng)和網(wǎng)絡(luò)以抵抗DoS攻擊的策略,包括各種基于協(xié)議的、能賦予合法的或已授權(quán)傳送超出背景或攻擊性傳送的優(yōu)先級(jí)別的方法。其中比較好的一個(gè)例子是“快速傳遞協(xié)議”6。
快速傳遞協(xié)議為用戶提供了加密的可用性令牌。用戶信息以一個(gè)設(shè)定信息包開(kāi)頭,信息包中含有提供給下游程序的認(rèn)證信息。當(dāng)設(shè)定信息包經(jīng)過(guò)驗(yàn)證后, 信息包中的其他信息以高優(yōu)先級(jí)按鏈條模式穿過(guò)通道。含有未經(jīng)驗(yàn)證的令牌的信息,則在時(shí)間以及帶寬允許的情況下得到處理。
大多數(shù)的操作系統(tǒng)都內(nèi)置有一定程度的安全設(shè)置。內(nèi)置安全設(shè)置的成熟性以及集成性是廣受爭(zhēng)議的論題,不過(guò)一般來(lái)說(shuō),加載貫徹了安全思想的Linux,如SE Linux(源于NSA的Linux派生發(fā)布),從安全角度看被認(rèn)為是很強(qiáng)壯的系統(tǒng)(http://selinux.sourceforge.net/。SE Linux包含有一套豐富的訪問(wèn)控制集,它允許系統(tǒng)被分化為眾多細(xì)密的安全區(qū)。過(guò)去的“用戶——群——外界環(huán)境”分類被擴(kuò)展為包含了無(wú)數(shù)額外的、可用來(lái)創(chuàng)造極其成熟的安全政策的類型。其思想是:例如,如果一個(gè)系統(tǒng)驅(qū)動(dòng)器被破解并嘗試訪問(wèn)驅(qū)動(dòng)器權(quán)限范圍外的資源,操作系統(tǒng)將拒絕訪問(wèn)、并產(chǎn)生異議。
這些機(jī)制很重要,但從整個(gè)系統(tǒng)結(jié)構(gòu)角度來(lái)看,它們忽略了一個(gè)重要方面——“攻擊表面”仍然很大。仍然需要對(duì)操作系統(tǒng)及其附帶的服務(wù)進(jìn)行分析,以查找出任何可能忽略的易受攻擊的弱點(diǎn)進(jìn)行分析,而且開(kāi)發(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)化的角度來(lái)說(shuō),虛擬計(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ò)大了硬件抽象層,使之包括了虛擬特性。
從安全的角度來(lái)看,虛擬技術(shù)的使用,允許設(shè)計(jì)者通過(guò)執(zhí)行特權(quán)分離和最小權(quán)限原則7,8,來(lái)減輕計(jì)算機(jī)安全攻擊的潛在危害。
特權(quán)分離要求應(yīng)用程序被分為有特權(quán)部分和無(wú)特權(quán)部分,有特權(quán)的部分應(yīng)保存得越小越好,來(lái)減小攻擊的表面。因此,一個(gè)成功的、針對(duì)對(duì)更大的、不安全的組件的攻擊,只會(huì)獲得對(duì)敏感數(shù)據(jù)的極低的訪問(wèn)能力。
最小權(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)沒(méi)有配置軟件虛擬支持的情況下。
純粹虛擬技術(shù)依靠具有重要硬件支持的底層硬件平臺(tái)來(lá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)可以無(wú)修改地運(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)的開(kāi)銷,明顯地提高了執(zhí)行績(jī)效。缺點(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)度表來(lái)分配系統(tǒng)資源的程序。商業(yè)上典型的具體實(shí)施方法是在內(nèi)核模式下運(yùn)行微調(diào)度程序,并且作為主控來(lái)控制一個(gè)客戶操作系統(tǒng),該OS也在類似的內(nèi)核模式下進(jìn)行操作。從安全的角度來(lái)說(shuō),這意味著客戶操作系統(tǒng)一定得是一個(gè)“良好的市民”,因?yàn)榭蛻敉耆赡芾@過(guò)微調(diào)度程序。這使得整個(gè)空閑的存儲(chǔ)器易受攻擊。為了消除這個(gè)弱點(diǎn),微調(diào)度程序的開(kāi)發(fā)者增加了一個(gè)可供選擇的安全引擎,以監(jiān)測(cè)和控制硬件的訪問(wèn)。
圖2使用微調(diào)度器的虛擬化
微內(nèi)核(圖3)本質(zhì)上是一個(gè)操作系統(tǒng),這個(gè)系統(tǒng)移去了大量的典型操作系統(tǒng)服務(wù),并代之以可以在用戶級(jí)別執(zhí)行服務(wù)的機(jī)制。從安全的角度來(lái)看,它的優(yōu)點(diǎn)是,用戶模式實(shí)體訪問(wèn)底層硬件時(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)境的支持,開(kāi)發(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)的虛擬化
從安全的角度來(lái)說(shuō),最關(guān)鍵的因素是所有商業(yè)管理程序控制對(duì)硬件資源(如MMU系統(tǒng))訪問(wèn)的能力。例如,如果一個(gè)客戶端應(yīng)用程序(比如web瀏覽器)被一個(gè)流氓HTML站點(diǎn)所破壞,并試圖侵入存儲(chǔ)器禁區(qū),那么系統(tǒng)管理程序就會(huì)向存儲(chǔ)器強(qiáng)加邊界,并適當(dāng)?shù)乇Wo(hù)敏感數(shù)據(jù)。通過(guò)使用安全的系統(tǒng)管理員,根據(jù)駐留在特定的執(zhí)行環(huán)境中的應(yīng)用程序的已知邊界檢查可疑的重填數(shù)據(jù),就可以實(shí)現(xiàn)由軟件填充的TBL不受侵?jǐn)_,由此保證程序的執(zhí)行處于“界限內(nèi)”。在路由器或其他客戶端裝置中,系統(tǒng)管理程序可以用來(lái)提供一定程度的DoS保護(hù),這可以通過(guò)使用多重VM來(lái)控制對(duì)任何特定資源的訪問(wèn)或是要求提供適當(dāng)?shù)耐ㄐ凶C來(lái)實(shí)現(xiàn)的,這樣做可以避免VM使用“界限外”的資源。
在虛擬化架構(gòu)的設(shè)計(jì)過(guò)程中,虛擬計(jì)算機(jī)之間的默認(rèn)通信途徑要盡可能減少,理想的情況是,如果從VM到VM沒(méi)有公開(kāi)昭示的授權(quán)的話,最好沒(méi)有任何通信。
由于增加一個(gè)VM的開(kāi)銷是很低的,用VM自己已經(jīng)完成引導(dǎo)的、處于掛起狀態(tài)的“候補(bǔ)”操作系統(tǒng)來(lái)生成”候補(bǔ)”VM是可能的。那么,當(dāng)一個(gè)處理域被DoS所危及時(shí),一直在自己的執(zhí)行環(huán)境中運(yùn)行的系統(tǒng)健康度監(jiān)督程序,可以將被危及的VM的執(zhí)行掛起,將激活的程序轉(zhuǎn)移到候補(bǔ)的VM,并繼續(xù)執(zhí)行。這種方法在受到攻擊的情況下維持更長(zhǎng)的計(jì)算機(jī)正常運(yùn)行時(shí)間。
由于VM一般來(lái)說(shuō)必須從CPU時(shí)間和可用內(nèi)存的角度來(lái)公開(kāi)地界定,VM所需要的資源在DoS面前僅呈現(xiàn)一個(gè)很小的“攻擊面”,在一些情況下,可以通過(guò)限制收到的消息數(shù)量來(lái)進(jìn)一步限制弱點(diǎn)的發(fā)展,從而避免飽和攻擊。
將認(rèn)證機(jī)制擴(kuò)展到虛擬計(jì)算機(jī)上可以使安全導(dǎo)入機(jī)制變得更健全。硬件引導(dǎo)完成后,安全引導(dǎo)機(jī)制標(biāo)記第一個(gè)VM。第一個(gè)虛擬機(jī)可以執(zhí)行第二個(gè)層次的安全引導(dǎo),通過(guò)額外標(biāo)記和經(jīng)過(guò)驗(yàn)證的VMs來(lái)擴(kuò)展“信任鏈”,直到系統(tǒng)飽和以及所有物理、虛擬計(jì)算機(jī)序列導(dǎo)入完成。
就所有系統(tǒng)的基礎(chǔ)部分而言,需要分析其優(yōu)點(diǎn)和缺點(diǎn)。系統(tǒng)管理程序提供了一個(gè)高水平的安全性和執(zhí)行環(huán)境之間的隔離。但是,當(dāng)數(shù)據(jù)必須在環(huán)境之間共享時(shí),會(huì)發(fā)生什么情況呢?很多系統(tǒng)管理程序通過(guò)生成通信渠道或是共用執(zhí)行環(huán)境中的存儲(chǔ)器區(qū)域來(lái)處理這個(gè)問(wèn)題。這隨之又造成了第二個(gè)層次上的弱點(diǎn),所以應(yīng)該確定這些通道不會(huì)被惡意軟件利用來(lái)將數(shù)據(jù)從安全的/可信任的區(qū)域轉(zhuǎn)移到不安全/不可信任的區(qū)域。在這些種類的環(huán)境中,可以運(yùn)用分層的方法。例如,可以納入一個(gè)激勵(lì)/響應(yīng)機(jī)制,來(lái)實(shí)現(xiàn)數(shù)據(jù)通過(guò)共用存儲(chǔ)器在各執(zhí)行環(huán)境之間的轉(zhuǎn)移。當(dāng)這種機(jī)制就位時(shí),不可信區(qū)域的安全就會(huì)到危脅,危險(xiǎn)就會(huì)侵入共用存儲(chǔ)器區(qū)域,但它仍不能從可信區(qū)獲得數(shù)據(jù)。舉對(duì)Web瀏覽器的例子來(lái)說(shuō),攻擊者可能會(huì)獲得進(jìn)入存儲(chǔ)器共享區(qū)的許可,但它們不能侵入激勵(lì)/響應(yīng)機(jī)制,因此,敏感數(shù)據(jù)就不會(huì)從安全區(qū)轉(zhuǎn)移到共用存儲(chǔ)器區(qū)。
另一個(gè)系統(tǒng)級(jí)問(wèn)題會(huì)影響虛擬化的運(yùn)用的地方,是系統(tǒng)管理程序的響應(yīng)時(shí)間。如果響應(yīng)時(shí)間使實(shí)時(shí)操作系統(tǒng)(RTOS)不能在系統(tǒng)管理程序?qū)哟芜m當(dāng)?shù)剡\(yùn)行,那么RTOS一般就會(huì)在微核模式下運(yùn)行,并通過(guò)優(yōu)先指令直接接觸系統(tǒng)硬件。這就形成了,或更準(zhǔn)確地說(shuō),遺留了一個(gè)可通過(guò)對(duì)RTOS的破壞來(lái)?yè)羝频娜觞c(diǎn)。
與設(shè)計(jì)的許多其他方面一樣,少就是多。系統(tǒng)管理程序所占用的區(qū)域越小,需要去防范的的攻擊面積就越小,而且對(duì)超級(jí)調(diào)用(hypercall)的服務(wù)響應(yīng)時(shí)間就越短。一個(gè)小的覆蓋區(qū)允許系統(tǒng)管理程序根映像被保存在芯片上,從而減小外界對(duì)存儲(chǔ)器總線的探測(cè)和代碼細(xì)節(jié)的暴露。
ARM的TrustZone技術(shù)
是一種將軟件和硬件相結(jié)合為消費(fèi)者產(chǎn)品提供安全保護(hù)的技術(shù)9,10,11。在硬件方面,特殊的具有“安全意識(shí)”的存儲(chǔ)器包裹層(wrapper),系統(tǒng)總線,調(diào)試端口,及中斷控制器都被集成到了SOC中。另外,TrustZone為CPU結(jié)構(gòu)和核心增加了一個(gè)新的安全監(jiān)控模式。
在軟件方面,一個(gè)從受信任的邏輯提供的安全監(jiān)控器,在新的安全監(jiān)控模式下運(yùn)行,并擔(dān)當(dāng)安全與不安全狀態(tài)之間的看門監(jiān)控任務(wù)。當(dāng)操作系統(tǒng)調(diào)用TrustZone指令(安全監(jiān)控中斷或SMI)時(shí),安全監(jiān)控器受到了控制,與此同時(shí),處理器獲得了額外層次的特權(quán)以運(yùn)行受到信任的代碼,并通過(guò)嵌入已知有安全意識(shí)的外設(shè)的安全審核位或“S-位”,來(lái)控制對(duì)受到信任的資源的訪問(wèn)。對(duì)安全存儲(chǔ)器的訪問(wèn)是通過(guò)使用MMU和TLB中的安全位標(biāo)記符和“S-位標(biāo)記符”來(lái)控制的。這些標(biāo)志被用來(lái)將存儲(chǔ)器劃分為安全區(qū)和不安全區(qū)。安全監(jiān)控器通過(guò)將中斷分為安全和不安全兩類,來(lái)進(jìn)一步增強(qiáng)安全性,并實(shí)現(xiàn)斷開(kāi)/連接調(diào)試端口的能力。
TrustZone技術(shù),已被用來(lái)保護(hù)在芯片上或不在芯片上的存儲(chǔ)器和外圍設(shè)備免受軟件攻擊。通過(guò)對(duì)系統(tǒng)的精心設(shè)計(jì),TrustZone可以額外地提供安全措施以抵抗一些硬件攻擊。例如,將可信的代碼放入SoC內(nèi)部存儲(chǔ)器,并保證置于外部存儲(chǔ)器的硬件表 walker列表不能指向內(nèi)部存儲(chǔ)器或敏感程序(TLB的再次寫入會(huì)失敗)。因此,有進(jìn)入外部存儲(chǔ)器的許可并不能提供進(jìn)入敏感資源的許可。
TrustZone為操作系統(tǒng)在無(wú)安全狀態(tài)下的運(yùn)行提供了二進(jìn)制兼容性。如果操作系統(tǒng)需要與安全區(qū)域的應(yīng)用程序進(jìn)行交流,就必須寫擴(kuò)展名。同樣的,在無(wú)TrustZone的平臺(tái)上處于特權(quán)模式的一些可以被訪問(wèn)的寄存器, 一旦在TrustZone.內(nèi)運(yùn)行時(shí),可以被強(qiáng)迫處于特權(quán)/不可信模式。
然而,這種方法一個(gè)潛在的缺點(diǎn)是TrustZone僅提供兩種環(huán)境。一般的應(yīng)用程序需要三種或更多:一個(gè)操作系統(tǒng)核(如RTOS)、一個(gè)用于處理DRM或其它安全處理要求的安全內(nèi)核,以及“豐富的操作系統(tǒng)”—用于控制用戶的界面(一般包括Windows Mobile、Symbian、Linux等)。如圖5所示的小型終端交互操作平臺(tái)(STIP)應(yīng)用12是一類安全付款的方式。正如圖中所示的那樣,它被保護(hù)起來(lái),免受任何在壁壘的“正常”一側(cè)所發(fā)生的入侵行為影響,該壁壘是受控于安全監(jiān)測(cè)器。
很多嵌入式方案的一個(gè)關(guān)鍵目標(biāo)是減少材料單成本。許多OEM的發(fā)展動(dòng)力,則是確保了單獨(dú)的處理器有足夠的CPU馬力來(lái)容納大量功能。在理想情況下,一個(gè)CPU可以同時(shí)運(yùn)行無(wú)線工作棧、應(yīng)用操作系統(tǒng),及安全應(yīng)用軟件(DRM,還款應(yīng)用)。將無(wú)線工作棧置于特權(quán)安全模式下,則產(chǎn)生容易遭受在外部存儲(chǔ)器上發(fā)生的硬件攻擊的弱點(diǎn),并大大地增大了可信代碼基(TCB)的尺寸,其原因可以由如下的例子來(lái)說(shuō)明:一個(gè)3G GSM堆棧普遍有幾兆大小,比普通的SOC內(nèi)部存儲(chǔ)器要大很多。這就使得設(shè)計(jì)只能在如下兩個(gè)方面進(jìn)行選擇:通過(guò)將GSM堆棧與應(yīng)用操作系統(tǒng)集成到一起,使得它能夠在正常模式下運(yùn)行,或是在第三種執(zhí)行環(huán)境中運(yùn)行它,這種特性是TrustZone所不具有的。
所以TrustZone能夠很好地保護(hù)硬件,但是卻不能為很多系統(tǒng)級(jí)的應(yīng)用程序管理其安全區(qū)域。一個(gè)獨(dú)立的系統(tǒng)管理程序可以提供一定程度的、針對(duì)軟件攻擊的防護(hù)力,可以讓開(kāi)發(fā)者生成多種執(zhí)行環(huán)境,但它在防范硬件攻擊方面只采取了很少的措施。不過(guò),把這兩者組合起來(lái),就可以產(chǎn)生一種對(duì)兩個(gè)領(lǐng)域來(lái)說(shuō)都是最佳的選擇。
正如圖6所示的那樣,一個(gè)以監(jiān)控模式運(yùn)行的系統(tǒng)管理程序,可以取代TrustZone安全監(jiān)控器以及圖5所示的安全內(nèi)核的位置。所有其他軟件組件都被推入用戶空間中,于是特權(quán)模式實(shí)際上并未被使用。
圖5TrustZone架構(gòu)概覽
圖6帶有系統(tǒng)管理程序的TrustZone
這種方式的優(yōu)點(diǎn)是,具有運(yùn)行大量虛擬機(jī)的能力,其中一些有安全區(qū),另一些有不被保護(hù)的區(qū)域。所以,在這種方法中,GSM堆棧可以在它自己的域中運(yùn)行,但是當(dāng)它在用戶態(tài)模式下運(yùn)行時(shí),如果堆棧被攻擊,對(duì)黑客公開(kāi)的資源僅限于那些在引導(dǎo)時(shí)就被賦予的資源。STIP應(yīng)用程序在有墻壁保護(hù)且安全的區(qū)域是安全的。
系統(tǒng)管理程序精心地管理著對(duì)SOC內(nèi)部的硬件資源的訪問(wèn),以保證所有可信的數(shù)據(jù)和應(yīng)用程序仍存在于合適的安全區(qū)域。敏感資源受益于TrustZone所提供的硬件保護(hù),而對(duì)安全性來(lái)說(shuō)不那么關(guān)鍵的虛擬機(jī),例如容納GSM堆棧的虛擬機(jī),可以在外部存儲(chǔ)器運(yùn)行。
MIPS技術(shù)處理器
MIPS為具有安全保護(hù)的應(yīng)用程序提供4KSd13內(nèi)核。這個(gè)核心包括應(yīng)用專用的擴(kuò)展——以改進(jìn)加密算法的執(zhí)行,隱藏處理器活動(dòng)、使之不至于受到能量信號(hào)特征分析和探測(cè)的手段,以及具有每頁(yè)讀/寫/執(zhí)行特權(quán)設(shè)置功能的安全MMU。
這個(gè)核心除了具有安全保護(hù)功能外,獲得使用許可的人還可以增加額外的工具,比如獨(dú)有的芯片級(jí)序列號(hào)、加密處理器、隨機(jī)數(shù)發(fā)生器、USB防火墻以及安全引導(dǎo)加載機(jī)制。
使用分層的方法以提高安全性,一個(gè)合理設(shè)計(jì)的系統(tǒng)管理程序可以利用內(nèi)核內(nèi)置的安全防護(hù)功能以及SOC設(shè)計(jì)者增加的特性,來(lái)增強(qiáng)整體系統(tǒng)的安全性。
處理器的旁路轉(zhuǎn)換緩沖器(TLB)的設(shè)計(jì)是一個(gè)關(guān)鍵問(wèn)題。MIPS處理器的TLB兼容了一個(gè)軟件替換策略。當(dāng)采取措施來(lái)保護(hù)MMU和關(guān)聯(lián)的TLB時(shí),執(zhí)行TLB重填的代碼和被該代碼所操作的數(shù)據(jù)都處于內(nèi)存之中,可能被流氓軟件所訪問(wèn)。一個(gè)系統(tǒng)管理程序可以用來(lái)在TLB重填時(shí)執(zhí)行額外的檢查,以保護(hù)系統(tǒng)不受通過(guò)外部SDRAM進(jìn)行的硬件攻擊。
另外,一些MIPS處理器提供了一個(gè)中間“超級(jí)用戶”模式,以使系統(tǒng)管理程序可以用其來(lái)執(zhí)行一個(gè)執(zhí)行虛擬內(nèi)核模式。這樣就減少了虛擬的開(kāi)銷。
Power/PowerPC處理器
32位和64位兩種體系的PowerPC已經(jīng)在很寬范圍的產(chǎn)品中被廣泛應(yīng)用,包括通信處理器,通用設(shè)備,性能導(dǎo)向型游戲系統(tǒng)以及企業(yè)計(jì)算。
PowerPC的衍生體一般會(huì)應(yīng)用于嵌入式產(chǎn)品中,比如32位PowerPC405和440,它們使用一種軟件重填策略來(lái)保持TLB實(shí)體不斷更新。另外,有一種區(qū)域保護(hù)寄存器(ZPR),它允許TLB訪問(wèn)控制被撤銷。這些特征產(chǎn)生了一些弱點(diǎn),這些薄弱環(huán)節(jié)可以通過(guò)組合操作系統(tǒng)的安全策略管理和虛擬技術(shù)來(lái)阻止流氓軟件的訪問(wèn)。
一些PowerPC的衍生體,比如索尼Playstation 3中所使用的多核單元寬帶引擎(BE),具有先進(jìn)的安全機(jī)制,它包括經(jīng)過(guò)加密的、得到標(biāo)記的安全引導(dǎo)機(jī)制和將執(zhí)行敏感任務(wù)的處理器在物理上單獨(dú)隔離開(kāi)的功能。
系統(tǒng)加固:多少才夠用?
正如我們所述,有多少攻擊的方法,就有多少防御攻擊的技術(shù)。強(qiáng)勁的防御策略通常是依賴于一個(gè)“分層”防御,這個(gè)“分層”防御兼容了大量硬件和軟件技術(shù)。確定一個(gè)系統(tǒng)是否被充分地保護(hù)起來(lái),是一件很復(fù)雜的事情。
對(duì)于確定給定產(chǎn)品是否可以滿足給定應(yīng)用的安全需要的程度這一問(wèn)題,有著正規(guī)的方法。對(duì)于安全分析來(lái)說(shuō),一個(gè)被廣泛接受的標(biāo)準(zhǔn)是信息技術(shù)安全評(píng)估的通用標(biāo)準(zhǔn)(簡(jiǎn)稱通用標(biāo)注或CC14)。這是一個(gè)計(jì)算機(jī)安全方面的國(guó)際標(biāo)準(zhǔn)(國(guó)際標(biāo)準(zhǔn)化組織/國(guó)際電工委員會(huì)15408),它為廠商和客戶創(chuàng)造了一套系統(tǒng)框架,供廠商和客戶在該框架中運(yùn)行,該框架可以為用戶環(huán)境提供詳細(xì)的描述和隨之而來(lái)的威脅,以及分析和測(cè)試方法學(xué),以便決定給定的產(chǎn)品滿足環(huán)境的特定要求的程度。
例如,德國(guó)BMI(Bundesamt für Sicherheit in der Informationstechnik)與歐洲智能卡協(xié)會(huì)(EUROSMART)合作,開(kāi)發(fā)了一種保護(hù)狀況(PP),命名為智能卡IC平臺(tái)保護(hù)狀況(BSI-PP-0002),包括及其詳細(xì)的、與他們行業(yè)特別相關(guān)的攻擊狀況描述。希望提供產(chǎn)品來(lái)響應(yīng)這個(gè)特殊的保護(hù)狀況需要的公司,隨后選擇了一種評(píng)估保證級(jí)別(EAL),此級(jí)別從1級(jí)(最低)到7級(jí)(最高)。這些保證級(jí)別不是對(duì)應(yīng)于關(guān)于給定PP的保護(hù)程度,而是對(duì)應(yīng)于實(shí)驗(yàn)室所測(cè)結(jié)果與列舉的安全聲明的符合程度。測(cè)試實(shí)驗(yàn)室會(huì)將一系列的保證要求與所選擇的水平進(jìn)行聯(lián)系,進(jìn)行分析、測(cè)試,得出合格/與不合格的結(jié)論。
我們提出一種更基本的度量方法,在開(kāi)發(fā)階段的初期給設(shè)計(jì)打分。每個(gè)保護(hù)的措施和結(jié)構(gòu)的特征都會(huì)是一個(gè)得分點(diǎn)。那么,對(duì)不同種類基本分的調(diào)整,就要根據(jù)其安全要素(如:最大覆蓋面和最小受攻擊面)。
網(wǎng)格(+80):可能調(diào)整±40
TrustZone可信區(qū)(+80):可能調(diào)整±40
安全導(dǎo)入(+80) :可能調(diào)整±40
虛擬化 (+80): 可能調(diào)整±40
安全操作系統(tǒng)
DMA控制器(-80): 可能調(diào)整±40
在分層的策略中,每一個(gè)組件對(duì)整個(gè)安全性的貢獻(xiàn)是可以相加的。一個(gè)組件,如操作系統(tǒng),有一個(gè)固有的“虛擬化”以盜用一個(gè)加分條款,80就被加到另一個(gè)組件固有的分?jǐn)?shù)上,比如安全導(dǎo)入機(jī)制的80分,加起來(lái)就是160分?,F(xiàn)在,如果操作系統(tǒng)由于大量附加特征,呈現(xiàn)出一個(gè)大的攻擊表面,那么,這個(gè)組分的分?jǐn)?shù)就會(huì)降低一些,最多減少40分。
加權(quán)分?jǐn)?shù)計(jì)算實(shí)例:挑選一個(gè)有MMU的SoC,MMU是系統(tǒng)管理程序?qū)Υ鎯?chǔ)器的控制所不能缺少的,和一個(gè)安全操作系統(tǒng)。選擇一個(gè)系統(tǒng)管理程序,它允許操作系統(tǒng)和應(yīng)用程序在“用戶空間”運(yùn)行,從而產(chǎn)生一個(gè)更安全的處理環(huán)境。系統(tǒng)管理程序(+80)呈現(xiàn)出一個(gè)小的攻擊表面,因此不會(huì)從它的安全分中減分。選擇一個(gè)安全操作系統(tǒng),比如SE Linux (+80),但是,在開(kāi)發(fā)者加入大量代碼的同時(shí),也會(huì)生成一個(gè)大的攻擊表面(-40)。加權(quán)分?jǐn)?shù)就是:
虛擬化:80
安全操作系統(tǒng):80
代碼尺寸減分:-40
總安全分:160
一些設(shè)計(jì)的組成,由于其本身特點(diǎn),在裝置的安全裝甲中形成了固有的裂痕,需要小心地處理。一個(gè)好的例子就是DMA控制器。有DMA控制器的系統(tǒng),考慮到其存在這樣一個(gè)弱點(diǎn),應(yīng)該從總分中減去80分,那么在那個(gè)分?jǐn)?shù)上,就明顯需要一個(gè)保護(hù)系統(tǒng)的機(jī)制。有DMA控制器的系統(tǒng)的調(diào)整范圍表明,這樣的系統(tǒng)可以被設(shè)計(jì)得更加安全,但是機(jī)制的性質(zhì)就是這樣,在成塊存取中以及從安全的觀點(diǎn)來(lái)說(shuō),它永遠(yuǎn)不可能達(dá)到100%的效率,這是不可避免的。
這種方法的正式、細(xì)致、凝練允許了度量的產(chǎn)生,它允許設(shè)計(jì)者使用安全措施來(lái)滿足他們特定的需要。由于基準(zhǔn)提供了處理器在特定應(yīng)用中可能性能的粗略評(píng)估,所以安全分?jǐn)?shù)的產(chǎn)生也就提供了測(cè)量產(chǎn)品在抵御外來(lái)攻擊時(shí)可能性能的方式。
結(jié)語(yǔ)
現(xiàn)在應(yīng)該清楚的是,真正強(qiáng)健的系統(tǒng)安全不能單靠軟件來(lái)保證的。加密和迷惑僅能減緩黑客的進(jìn)攻。即使是高度防篡改的系統(tǒng),也會(huì)受到軟件硬件聯(lián)合的進(jìn)攻15的威脅,而且,對(duì)于任何攻擊者可以在物理上接觸的器件,都它至少需要安全的引導(dǎo)。
另一方面,全硬件的解決方式很昂貴且不具有彈性的,由于這個(gè)原因,如果它們過(guò)于冗瑣,就會(huì)迫使設(shè)計(jì)者和最終使用者轉(zhuǎn)而采用節(jié)省時(shí)間的、規(guī)避性的方法,而這些方法是器件的安全防護(hù)架構(gòu)所無(wú)法預(yù)料到的。因此,最好的安全解決方案是基于以硬件為中心(如TrustZone)、軟件(如安全操作系統(tǒng))和虛擬技術(shù)相結(jié)合的平衡結(jié)合方式,以保護(hù)存儲(chǔ)區(qū)域,DMA控制器,或其他潛在的易受攻擊的因素。