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