楊東升,江 勇,潘 明,汪 鐳,吳啟迪
隨著網絡和通信技術的不斷發展,安全已經成為通用計算機系統、嵌入式系統、通信系統中廣泛研究的對象。
由于嵌入式系統具有體積小、性能強、功耗低等突出特征,目前在工業過程控制、國防軍事、電子設備及網絡通信設備、消費性數碼產品等領域發揮著舉足輕重的作用,擁有廣闊的市場需求和發展前景。同時,網絡的連接性大大改變了嵌入式系統的傳統定義,從手持設備到醫學監控器、工業控制器再到大型電話系統,已經很難找到未連接到網絡的嵌入式系統了。連接到網絡的嵌入式系統需要與其它計算機系統進行通信,這些嵌入式系統被要求處理機密信息或進行關鍵操作,這就使得嵌入式系統的安全性成為設計者和開發者主要的關注點之一。研究開發出性能良好且安全可靠的嵌入式產品,成為眾商家的共同追求。在這種情況下,嵌入式系統的安全性研究變得日益重要,如果沒有一個有效、低耗、低成本的解決方案,很多有創意的嵌入式系統及產品就無法被人們信任,因而也就無法投入使用。
嵌入式系統經常提供可能被惡意實體從事破壞活動的重要功能。在討論嵌入式系統的一般安全需求之前,必須注意到,典型嵌入式系統從制造到使用的鏈條中會牽涉到許多實體。不同實體對象的安全需求也有所不同。
舉例說明,我們以一個具備無線聲音、多媒體和數據通信的最先進的移動電話為例,如圖1所示:

圖1 移動電話的安全需求
顯示出以移動電話內部HW/SW 元件提供者(例如基帶處理器、操作系統)、移動電話制造商、服務運營商、應用服務商(例如移動銀行業務)、內容供應商(例如音樂或視屏)和移動電話最終用戶的觀點分別出發的安全需求。終端用戶主要關心私人信息的安全存儲和通信,軟件提供商主要關心多媒體內容能夠安全地發送到另一個移動電話,而移動電話制造商只關心電話專有固件的保密性。對于每一種情形,不可靠(具有潛在惡意)的實體組也是多樣的。例如從內容供應商的觀點來看,移動電話用戶本身就可能是一個不可靠實體。這一部分概略地說明了典型嵌入式系統的主要安全需求,并將從制造到使用的鏈條中不同實體對象的安全需求加以區別和整合,給出一套嵌入式系統的完整安全模型。各類型嵌入式系統的典型安全需求,如圖2所示:

圖2 嵌入式系統的一般安全需求
(1)用戶使用系統之前首先對系統和設備進行確認和授權。
(2)只有設備被授權,安全網絡通道才能提供一個網絡連接或者服務通道。
(3)安全通信功能包括確認通信伙伴、確保通信數據的機密性和完整性、防止通信事務被擱置,并且保護通信實體的身份。
(4)安全存儲要求儲存在系統中的敏感信息具有機密性和完整性。
(5)內容的安全執行通過系統存取的數字內容加以限制。
(6)可用性的意義:確保系統執行的指令始終來自合法的使用者,不被非法指令所打亂。
高可靠性和安全性是嵌入式系統的要求和特點。工業用嵌入式系統往往工作于工業企業的現場,一旦出現故障,有可能造成整個生產過程混亂,甚至產生更嚴重的后果。因此,可靠性是嵌入式系統最重要、最突出的基本要求。可以這樣說,可靠性是嵌入式系統的生命線。
嵌入式系統設計師經常需要在安全性、可靠性和產品上市時間之間進行艱難的平衡。三者之間,前兩者是需要優先保證的。首先,良好的安全性是所有具有網絡連接性能設備的必備條件。其次,微處理器、操作系統和開發工具的不斷進步使得更高的可靠性設計成為可能,也為產品的安全性和更快上市打下了堅實的基礎。當然要實現這個目標的前提是選擇正確的架構,該架構包括處理器、操作系統和部分軟件在內。在系統設計的一開始就必須把高可靠性作為設計目標之一。
一般有經驗的工程師都會采用模塊化的設計方式,將應用系統劃分成多個軟件模塊,并通過定義完善的接口來控制這些模塊之間的互操作。但提供更高級別的可靠性還需要采取更多的措施,除了模塊化外,還要具有劃分、隔離和分離的能力。要想獲得最高等級的可靠性,需要首先將模塊放進相互隔離的存儲器區域,然后通過處理器來管理硬件并選擇合適的操作系統,合理控制主機資源的通信和使用,加強模塊的分離性。具體來說,需要做到以下幾點:
(1)模塊化
模塊化,然后分割設計,使每個模塊只執行單一的功能且與所有其它模塊隔離開來,如圖3所示:

圖3 模塊化設計框圖
每個模塊均可以被看門狗進程重新啟動,如果該模塊發生故障,那么相應的看門狗就會重啟這個模塊。模塊化的系統相應來說會具有更高的可靠性。
(2)保持模塊的簡單化
模塊過于復雜會導致脆弱性,降低行為的可重復性。不同種類的芯片或多內核的設計也將增加系統的復雜性。在保證處理能力能夠滿足的前提下,盡量采用單處理器,避免那些復雜設計。
(3)確保選用的處理器和操作系統具有較強的存儲器管理功能
沒有存儲器保護就想建立非凡、可靠和安全的產品是不可能的。存儲器保護幫助對系統進行分割,并實現“深度防御”,從而保證系統某部分的弱點不會級聯起來影響其它部分。
(4)置所有東西于內核之外
內核是唯一一個系統中的所有模塊都要依賴的部件,因此它必須異常穩固。在內核空間運行任何對象只會降低可靠性,并帶來安全性問題。
(5)選擇符合公認的安全和可靠性標準的內核架構
任何人都可以聲稱擁有可靠安全的操作系統,但很少有人獨立地驗證過他們聲明的內容。在安全領域,需要選擇那種基于由國家安全機構開發的獨立內核保護機制的架構的芯片。
(6)使用強制執行高安全編碼標準的工具
Misra C是汽車工業軟件可靠性協會(MISRA)為汽車工業開發的一個安全的C子集,其中許多代碼非常可靠和安全。因此可在內部使用Misra標準,并選擇用來強制執行這些標準的工具。
過去嵌入式系統往往只執行一種或幾種固定功能。現在的趨勢是嵌入式系統能夠執行多種功能并具備下載新的軟件來執行新功能的能力。越來越CPU化。雖然這大大增加了嵌入式系統的靈活性和使用壽命,但同時也給惡意組織的攻擊提供了更多途徑和可能。我們下面就來大致分析一下,在無處不在的網絡和普遍深入的計算環境中,資源有限的嵌入式系統所面臨的安全挑戰。
安全嵌入式過程系統的結構設計空間,如圖4所示:

圖4 信息處理安全的結構設計空間
第一行列出了不同的宏觀結構模型,并在下面作了進一步描述。包含了嵌入式通用處理器(EP)、專門應用程序指令集處理器(ASIP)及帶有連接處理器總線的常規硬件加速器的通用處理器三者之間的相互對比。第二行詳述了如何選擇指令集結構和宏觀結構使基本處理器調整至合適位置。第三行清楚地說明了必須選擇和設計的安全處理特征。第四行列出了在嵌入式處理器和嵌入式系統設計中抵抗攻擊特征的選擇。
我們現在描述一個提供所需安全功能的宏觀結構模型的演化。像機密性、完整性和認證這類基本安全功能,均能夠以適當的安全協議和加密算法來執行。加密算法包括對稱性加密法、非對稱性加密法和安全混列算法。然而,這些加密算法相當密集并且能量貧瘠,對于資源有限的嵌入式系統來說是一個挑戰。
有一種僅用硬件的加密方法,即利用應用程序專用集成電路(ASICs)在硬件中執行一個特定的加密算法。這種“硬件算法”在只需要一種或少量加密法時能夠提高成本利用率,同時會產生很大數量的ASICs。然而,當需要大量算法來支持多種安全協議、新的標準以及多種裝置的互操作時,它在成本和靈活性方面的效率是非常低的。
下面分析只用軟件的加密方法。假設使用典型的嵌入式通用處理器(EP)作為履行安全協議和加密處理的核心。這種加密方法將同時面臨處理間隙和電池間隙的問題。處理間隙是指使用密碼的標準安全協議的最低計算需求,這個要求并不低,市場上大部分無線手持設備中的處理器是無法達到的。電池間隙是指由電池供電的無線手持設備的安全處理所需要的相當數量的額外能量消耗。例如,當設備加密傳輸數據時,相當一部分能量消耗在安全處理之中。
目前大部分嵌入式系統安全功能的實現,使用的是軟硬件結合的方法。這樣可以更有效地執行安全功能并提高效率。例如,大多數執行時間花費在如RSA這種公鑰算法中的模計算,而加速器芯片可以為模相乘提供硬件加速。還有一種情況是將加速硬件與處理器內核自身緊密地整合,并以慣用指令調用它。有一種專業名稱來形容它,叫做“應用程序專用指令處理器(ASIP)法”。例如,嵌入式處理器Xtensa就允許設計者用一套專門的應用程序或慣用指令來擴展處理器的基本指令集。一個典型的例子是,在硬件中用對稱性密碼加密,并用慣用指令調用它。這樣可以以極少的能量消耗為DES提供非常有效的加速。對于某些嵌入式系統,這雖然不是最合適的,但通常卻是效率成本比最高的解決方案。
上述的安全處理結構只執行像機密性、完整性和認證這些基本的安全功能,并不提供對來自惡意機構的軟件或硬件攻擊的保護。而且加速加密和安全協議的結構特征不保護DoS攻擊。然而,這些來自外部的攻擊顯然是嵌入式系統保證安全性的很大威脅。
設計者做了一些努力來提供對攻擊的防護,但是這個問題的涵蓋范圍很廣,目前仍然是一個開放的研究領域。對于其中一些專用的應用程序,目前已經有了一些解決方案,例如處理軟件、音樂或電影盜版問題的數字權管理(DRM)方案,DVD播放器的數字權管理方案,抵御密碼盜竊專門攻擊的解決方案,等等。在不遠的將來,這些都很可能成為嵌入式系統中最普遍的配置。在數字權管理的問題當中,現今有價值的軟件或多媒體文件可以通過互聯網極為快速而廣泛的傳播,這對于大的確定容量的所有者和發行商的版權保護問題是巨大的挑戰。
在學術研究方面,對于計算機安全的結構特征研究在30年前就已開始。在最近的一二十年里,由于RISC處理器作為高性能處理器的結構比較通用,而且也被行業所普遍認可,所以在計算機結構方面的研究或教育相對比較少地專注于安全問題。近來這種狀況有所改變,一些學術文獻又開始對計算機安全結構問題,尤其是在結合網絡傳輸與加密的情形下進行一些探討和研究。提出了通過加密和散列技術提供存儲完整性,并通過在緩沖器溢出攻擊中,探測返回地址破壞的方法,來阻止機器劫持和惡意代碼插入。
剛才已經闡述過,在系統設計完成后才開始考慮安全問題是行不通的,增強系統安全的措施必須從一開始就集成到系統的整體設計中。這也就意味著需要從基礎上實現系統的安全特性,即從CPU內核的標準制訂上就開始考慮這個問題。
通過在CPU內核的設計中集成的系統安全性擴展,ARM為在嵌入式系統中實現安全特性提供了基礎。這種集成被稱為TrustZone,是ARMv6內核構架下的重要擴展特性之一。TrustZone技術對CPU內核的功耗、性能和硅片面積不產生大的影響,為設計具有高度安全性的嵌入式系統提供了堅實的基礎。
3.1.1 TrustZone技術原理及優勢
ARM公司的解決辦法是通過在CPU內核開辟一塊可信代碼區,來實現完整的系統安全性。這塊可信代碼區相對較小,運行在處理器的安全區域里面。其內部的代碼為系統級的安全性奠定了基礎——從系統的引導啟動到各個不同級別的代碼可信執行。可信代碼可以被用來處理諸如信息解密、簽名驗證等任務。
通過開辟可信代碼空間,ARM處理器有效提升了系統的安全性。這種機制可以安全地保存用戶的私人密鑰,確保數據的私密性。它還可以防止對關鍵數據的篡改,這樣如果一個商務流程通過認證和授權之后,就可以保證其后的操作的完整性。可靠性也是一個安全的系統的重要特征之一,通過在CPU內核引入結構性的變化——開辟可信代碼空間——之后,就可以確保系統有一個安全的核心,并對軟件破解有很強的抵御能力。
和很多其他系統特性一樣,我們不可能不計代價地實現系統的安全性。盡管系統安全性正在逐漸成為一個必備的特性,在它可以正式應用之前還必須找到一個低成本的實現方案。TrustZone技術通過在CPU內部增加安全性設計,具備了以下的優勢:
(1)從系統引導啟動開始就保證了安全性,確保系統有一個安全的初始化過程。
(2)易于對軟件應用進行驗證。。
(3)能夠不受限制地靈活地實現整個系統的安全性。
(4)使OS對安全性的支持保持一致,有利于制訂一個針對安全性的工業標準。
(5)對使用TrustZone技術的不同ASICs,可以保證軟件兼容性。
(6)所增加的硬件成本很低。
(7)對系統性能影響很小。
TrustZone技術使安全性可以有一個靈活的、模塊化的實現方案。設計者和生產者可以在系統中按照自己的需求實現自己的安全性設計,并通過在CPU內核中的安全技術來得到保證。
3.1.2 TrustZone技術實現方法
TrustZone技術的實現方法,如圖5所示:

圖5 利用TrustZone技術修正的安全體系
它通過對CPU構架和內存子系統的硬件設計升級,引入了一個安全區域的概念。構架上的關鍵性改變之一是增加了一個S比特,以指明當前系統是否在安全狀態下。這個S比特不僅可以影響CPU內核和內存子系統,還可以影響片內外設的工作。
S比特表明了當前內核的運行狀態。設計中用一個獨立的處理器運行模式(監視器模式)控制系統的安全狀態以及指令、數據的訪問權限。監視器模式通過修改S比特來實現在安全狀態和普通狀態之間的切換。作為保衛系統安全性的網關,監視器模式還要負責保存當前的上下文狀態。如果需要,還要在安全狀態和普通狀態之間切換時清空寄存器。
在系統中S比特可以將安全狀態和普通狀態明確區分開。TrustZone 技術還包括了一個增強的內存子系統——cache和MU。它們可以識別S比特并判斷出當前系統是否處于安全狀態下。S比特僅能在監視器模式下被改變,而系統僅僅會定義數目有限的監視器模式入口。通過控制對監視器模式的訪問,在整個系統級別實現安全性就變得非常切實可行了。
TrustZone技術作為ARM結構的一個組成部分,同時也是處理器內核的標準之一。ARM公司的長期發展計劃確保了TrustZone安全性擴展將作為未來ARM平臺的標準化部分提供給客戶,以支持高安全性產品的設計。ARM架構為所有ARM合作伙伴所共享的標準,具有從設計、開發工具、生產、服務到產品化的完整產業鏈。
3.2.1 可信賴的計算基礎(TCB)
移動設備的安全標準明顯比我們常用的個人計算機高。隨著這些設備功能的急劇增加,嵌入式系統中的軟件驅動程序也會漸漸和個人計算機一樣復雜。
什么是可信賴的計算基礎(TCB)?舉例來說,在過去的幾年中,嵌入式系統行業朝著具有內存保護和支持它的操作系統方向發展。在這種趨勢下,商業操作系統越來越流行,尤其是像Linux和Windows的嵌入式版本。這些系統均會為嵌入式系統的使用而進行裁剪,當把它們剝離到最低限度,可能只有一個內核(定義為硬件特權模式的執行代碼),也許包含20萬行代碼,這就是一個下界規模的TCB。而20萬行代碼如果要保證沒有一個漏洞,幾乎是不可能的。
3.2.2 微內核
具有可信TCB的關鍵是擁有一個可以被檢測的內核。一個非常小的內核僅僅只包含具有優先級的代碼。任何沒有優先級的代碼,其功能仍然沒有優先級(在內核外),這就是所謂的微內核。它包含有略多于結構要求的兩個部件間的接口,用來控制不同地址空間之間的通信,即跨進程通信。
一個嚴格意義上的微內核至今仍未建立,但是具有良好的逼近,尤其是L4微核,其最成熟和廣泛的應用是L4Ka::Pistachio。它由Karlsruhe大學開發,大約有1萬行代碼(只計算代碼需要建立一個特殊的結構,例如ARM)。對一個期望沒有漏洞的系統來說,1萬行代碼仍然比較大,但是這個目標可以達到。在NICTA有兩個項目的目標達到了這個要求(在Dresden大學也有相似的科研活動)。其中一個項目稱為sel4,旨在生產一個新的l4版本,以更好的接近微核,并使API更好地與安全系統相匹配。sel4的期望是僅僅只有5000-7000行代碼。
當然建立一個正規的正確性證明需要一段時間,但是現存的微型內核已經為建立一個值得信賴的TCB提供了一個好的基礎。雖然測試和代碼檢驗不能完全保證內核的正確性,但小型化無疑將減少它不少的缺陷。調試借助于事實,內核只提供了非常少的基礎裝置,漏洞幾乎無處可藏。
3.2.3 最小TCB
L4內核支持一個小的TCB結構。如今已經研發出了最小操作系統,稱為Iguana,專門用在嵌入式系統中。Iguana提供了基本的服務,例如存儲管理、命名和支持設備驅動等,可以滿足很多嵌入式應用。一個完全的resident1 TCB系統由L4、Iguana和一些驅動構成,這個系統可以小至2萬行代碼。我們期待一個最小的基于sel4的TCB系統只有1萬或1萬5千行代碼。一個TCB以及它的規模主要依賴于一個系統提供的功能。具體的說,一個具有非平凡用戶界面的系統往往具有較大的TCB,因為需要包括一個可以信賴的窗口系統以保證用戶的輸入可以被正確地編譯。
3.2.4 細粒度訪問控制
為什么傳統的Linux和Windows操作系統不能達到嵌入式系統的要求?除了TCB的規模外還有其它的原因。它們都有一個訪問控制模型是根據時間共享主機,不同的系統用戶受到各自的保護,但無法完全地限制特定的用戶訪問自己的數據。而嵌入式系統是個典型的單用戶系統,它的保護不同于一般,運行不同程序的同一個用戶應該具有不同的訪問權限。訪問權限取決于程序功能而不是用戶身份。這是一個最小特權的安全準則實例。而傳統的系統違背了最小特權,給一個用戶全部的訪問權力(對文件和其它的目標)。這就是病毒和蠕蟲會經常發生的原因。在一個基于微核的系統中,軟件封裝在具有硬件強制接口的部件中,所有的通信都必須用到內核提供的跨進程通信裝置。這意味著部件間透明地介入安全監控成為可能,可以用來執行全系統的安全政策。這個政策使得輸入到系統中的程序僅僅被允許訪問被用戶明確定義任務的文件,從而防止了敏感信息的竊取。
微核技術的構思已有較長時間的歷史,最初大多是建立在Mach內核之上的設想,系統性能相對較差。如今,ARM架構在嵌入式領域越來越凸顯出優勢并廣泛地應用,為微核技術提供了新的平臺和研究的空間。工業界已經看見了微核解決嵌入式系統安全問題的潛力,并打算大力開發并應用它。
綜本文所述不難看出,嵌入式系統安全問題解決方案的主要挑戰在于以下3點:第一是系統的資源有限,第二則是單純的軟件安全或硬件安全都無法為嵌入式系統提供完整的保護,最后便是在實現安全特性的同時,還必須考慮系統的處理能力、存儲能力、功耗及實現成本等。
事實上,隨著網絡通信技術及嵌入式系統本身的不斷發展強大,各種安全攻擊技術和入侵方法也在不斷發展,各種安全協議、安全機制及安全標準也在隨之不斷變化。這些都會不斷地為安全性研究和設計提出更高要求。嵌入式系統安全問題解決方案的研究可以說只是剛剛起步,未來還有很長的路要走。
[1]Sigrid Gürgens,Carsten Rudolph,etc.Security engineering for embedded systems—the SecFutur vision [J],ACM,2010.
[2]Markose,S.A Systematic Framework for Structured Object-Oriented Security Requirements Analysis in Embedded Systems[J],Embedded and Ubiquitous Computing,2008.EUC '08.
[3]Sen,S.Cryptosystem designed for embedded system security [J],VLSI Design,2003.
[4]裴華艷.嵌入式系統安全性的分析與研究,[J]電子科技,2009
[5]趙國冬.安全嵌入式系統體系結構研究與設計[D],哈爾濱工業大學,2006
[6]朱飛.可配置的嵌入式系統安全模型研究與實現[D],合肥工業大學,2009