摘要:綜述了產生嵌入式系統各種安全問題的瓶頸因素、根本原因,系統攻擊的分類及應對具體攻擊的策略。分析了層級結構設計,使安全策略從以功能為中心的觀點轉向系統結構設計的角度,以更好的應對各種安全挑戰。同時介紹了幾種提升嵌入式系統安全性的幾種解決方案。
關鍵詞:嵌入式系統;安全;結構設計
中圖分類號:TP309文獻標識碼:A文章編號:1009-3044(2008)29-0295-03
Embedded System Security Analysis and Countermeasure
HU Bo, WANG Xiao-ping
(College of Electronics Information Engineering,Tongji University,Shanghai 201804)
Abstract: Summarizes the bottlenecks, root causations which lead to security problems of embedded systems, the variety of system attacks as well as the corresponding countermeasures. Analysises the hierarchy architecture design of embedded system, moving security considerations from a function-centric perspective into a system architecture design issue in order to meet the various security challenge better. And introduces several solutions to improve the security of embeded system.
Key words: embedded system; security; architecture design
1 引言
普通計算機系統存在的安全問題已受到人們廣泛關注,并采取了各種應對措施。嵌入式系統是針對具體應用而設計的一種專用計算機系統,隨著這種系統被越來越廣泛的應用,其中的各種不安全性問題逐漸暴露出來。同時,人們對嵌入式系統的各種安全需求也越來越高。現在,系統開發人員越來越多的關注嵌入式系統的安全特性。
2 嵌入式系統存在的安全問題
2.1 安全運行的瓶頸問題
嵌入式系統的設計者需要提供不同的安全解決方案來處理各種安全需求。這些需求成為嵌入式系統設計過程中的重要瓶頸[1],下面作簡要介紹:
處理間隙:由于逐漸增加的數據率和安全協議的復雜性,現有的嵌入式系統體系機構跟不上安全處理的計算需求。
電池間隙:受電量限制的嵌入式系統的安全處理的能量消耗非常高,遠超過電池能力的緩慢的增長。
靈活性:嵌入式系統需要足夠的靈活性來支持各種不同的安全協議和標準,此外安全協議也需要不斷改進以防止黑客的攻擊。
篡改阻止:惡意軟件的攻擊是對于能夠運行下載應用的嵌入式系統最普遍的威脅,這些攻擊能發掘操作系統或應用軟件的弱點,進入系統內部并打亂它的正常功能。
保證間隙:建立真正可靠的系統比那些僅在大部分時間工作的系統要困難的多,可靠的系統必須能夠處理可能偶然發生各種情況。
成本:費用是影響系統安全體系結構的基本因素之一,設計者需要平衡嵌入式系統的安全需求與執行相應安全措施的費用。
2.2 安全問題產生的根本原因
導致嵌入式系統安全問題的根本原因包括以下四個方面[2]:
價格因素:結構簡單好用,價格便宜也是嵌入式設計追求目標。公司在選擇芯片時滿足好用夠用就可以了。如果從軟硬件上增加過多的安全措施,成本則會提高。簡約的嵌入式系統上大量使用的4位和8位機,也不能運行過多的安全任務。
面廣量大:嵌入式系統在生活、工作、娛樂、教育、軍事等方面大量使用。如果系統設計有缺陷,則影響面非常大。若有嵌入式系統被入侵者利用,將會成為多點攻擊的武器。
電源的限制:許多嵌入式系統都是用電池供電,如果攻擊將其電力提前耗盡而又沒有得到及時的更換,則系統將處于癱瘓狀態,很容易造成安全漏洞,為入侵者開了方便之門。
開發隊伍和環境的制約:許多嵌入式系統都是小團隊做的。由于缺少安全方面的專家及經費短缺,設計中對安全問題考慮不足,而用戶往往也只追求嵌入式產品的小巧精致,方便好用即可。
2.3 安全性攻擊的分類
按照功能性目標來分,攻擊可以分為以下三種類型[3]:
機密性攻擊:這種攻擊的目標是得到關于敏感數據在嵌入式系統中的存儲,通信或處理信息
完整性攻擊:這種攻擊試圖改變跟嵌入式系統有關聯的數據及代碼。
可用性攻擊:這種攻擊通過盜用系統資源擾亂系統的正常功能。
而按照攻擊方法來分,則可以分為軟件攻擊、物理攻擊和旁道攻擊三種形式,具體如下:
軟件攻擊:軟件攻擊是嵌入式系統的一個主要威脅,它能夠下載和執行應用代碼。這些攻擊通過病毒、蠕蟲、特洛伊木馬等惡意代理執行,并且它能夠從完整性、保密性和可用性各個方面危及系統的安全。
物理攻擊:物理攻擊能夠通過探測器來竊聽嵌入式系統內部組件的通信。這種入侵型攻擊需要三步完成:首先分離芯片封裝,然后進行重建布局,最后利用人工微探測或電波顯微法等技術來觀測總線上的值及在分離封裝的芯片上組件的接口。
旁道攻擊:旁道攻擊利用物理量來分析和更改嵌入式系統的行為。通過觀察電路中的某些物理量的變化規律,來分析嵌入式系統的加密數據;或通過干擾電路中的某些物理量來操縱嵌入式系統的行為。其具體又可以分為能量分析攻擊、時間攻擊、錯誤注入攻擊和電磁分析攻擊等幾種主要攻擊方式。
3 嵌入式系統應對具體攻擊的安全策略
嵌入式系統安全要綜合考慮物理層、平臺層以及應用層三個方面[2]。機密性、完整性和認證這類基本安全功能,通常以適當的安全協議和加密算法來執行。應對具體攻擊方式可采取不同的攻擊策略。
3.1 軟件攻擊的安全防護
軟件是計算機和嵌入式系統安全問題的重要和關鍵方面。惡意入侵者常常能夠利用軟件缺陷潛入系統中。此外,聯網的應用軟件涉及當今能遇到的最普遍的安全危機,軟件復雜性和擴展性的不斷增加更是加劇了這種危機。
安全是軟件系統的一個必然出現的屬性,這是一個常被注重功能的開發人員所忽視的細節。雖然現在有一些安全功能,同時大多數現代軟件具備一定的安全特性,但是比如SSL這類附加特征并沒有對安全問題提供一個完善的解決方案。[4]
對付軟件攻擊,需要早在軟件設計生命周期就要考慮安全性,熟悉并理解常見威脅,對安全性進行設計,使所有的軟件設計產品通過嚴格客觀的危機分析和測試。在嵌入式系統設計時主要從以下幾個方面來考慮:
1) 在系統執行的每個階段確保敏感指令和數據的機密性和完整性。
2) 確信從一個安全點執行給定程序,在系統啟動或代碼執行前進行檢查,對不可靠的代碼提供受限制的執行環境。
3) 去除使系統容易受攻擊的軟件中的安全漏洞。
3.2 物理攻擊的安全防護
對付物理攻擊采用一些先進的封裝技術和攻擊反應技術。比如,指定四個不斷提升的物理安全需求等級來滿足一個安全系統。第1級需要最小的物理保護,第2級則加入明顯的干預機制,第3級規定更強的探測及反應機制,第4級處理環境失敗保護和測試。然而,越高的安全等級需要更高的芯片成本[3]。
3.3 旁道攻擊的安全防護
由于旁道攻擊通過檢測和分析系統的旁道信息來實現,因此對于嵌入式系統的某些旁道信息具有易被觀測和分析的的征兆時,應盡可能地將其消除。面對各種不同的旁道攻擊又可采取各自不同的對抗措施,其方式都是從增加攻擊者得到這些旁道信息的難度入手。隨機化就是目前頻繁使用的一種應對各種旁道攻擊的有效手段,它使得攻擊者無法確切知道某個操作的執行時間[3]。
4 嵌入式系統總體安全解決
越來越多的事實證明,僅僅把系統的安全特性當成是對系統的一個補充,在系統設計完成后才開始考慮這個問題是行不通的。人們開始意識到增強系統安全的措施必須從一開始就集成到系統的整體設計中,對于安全問題的考慮也從以功能為中心的觀點逐漸轉向系統結構設計的角度。通過系統結構的設計和運行可以在一定程度上阻止攻擊,從整體上解決各種安全問題。
4.1 層級結構框架設計
嵌入式系統設計過程的各個不同方面都會影響安全性,因此對于安全嵌入式系統的設計必須從技術開始,并在整個設計周期中給予評估。[5]
在所有這些結構框架設計之前,首先我們必須清楚兩個問題:其一,安全性并非只是關于密碼技術的問題,它也與政策、程序和執行情況有關。基于密鑰的密碼技術,和政策一樣也是通過控制密鑰的使用權限來實現安全性的;其二,安全的密碼并非僅有安全系統獨立完成,同時必須考慮從設計需求到測試,甚至維護的各個階段的安全性。然后在以下這個基本框架里開始考慮系統的安全性:
1) 環境:為正在設計的設備的操作環境來確定假定、威脅及必要的政策。
2) 目標:確定設備的安全目標。考慮到它將會保護的數據或操作,以及由前一步帶來的威脅需要何種相應對策。
3) 需求:確定功能性的安全需求。
如圖1所示,每個目標決定了下一個目標。在這一層級中運行,將會避免不必要的安全需求。舉例來說,系統可能有對所有事件的信息進行加密的需求,而很多設計者僅以密碼技術作為實際安全性的替代。在一個封閉的網絡環境中可能會對設備有額外的需求,如果不能將需求的起因追溯到一些與環境相關的因素,就會增加處理或數據傳輸的開支。
以上面的框架分三個步驟有助于制定安全需求,它壓縮了過程的各個方面,如圖2所示。制定目標的時候,確保對任一環境的威脅都有一項與之相匹配的對策。而對策不總是以軟硬件相結合為基礎,其中有一些是基于政策或程序的。如果目標涉及受限制訪問,且以密碼作為需求,那么此時設計必須確保能夠處理未保護密碼的用戶,以及有利于加強政策的功能性需求這兩方面的政策。
4.2 提升系統安全性的解決方案
嵌入式計算機系統區別與通用計算機系統,因此提升通用計算機系統安全性的各種對策并不能完全照搬,系統開發者針對嵌入式系統的自身特性提出了一些有效的解決方案。
4.2.1 ARM的TrustZone技術
ARM公司的TrustZone技術使用了帶有硬件保護的安全域機制,確保了對安全系統能夠有一個系統化的實現。TrustZone技術把系統安全部分從復雜的不安全的應用程序中分離出來,把軟件驗證變得更加完善和容易實現。通過在CPU內核的設計中集成系統安全性擴展,為嵌入式系統實現安全特性提供了基礎。在對內核的功耗、性能和硅片面積不產生大的影響的前提下,TrustZone技術為設計具有高度安全性的嵌入式系統提供了堅實的基礎。[6]
4.2.2 安全協處理器
為了提高系統的安全性能,使用安全協處理器將系統的處理功能分為安全功能和非安全功能,Dallas Semiconductor的DS5250高速安全微處理器常被用作安全協處理器。安全協處理器負責系統中與安全性相關的任務,用來保護口令、PIN碼、加密密鑰以及其它重要數據。而非安全處理器完成主要的系統功能,這樣便提高了系統的安全性。[7]
4.2.3 微核技術
系統中能夠包含安全政策的部分是可信計算基(TCB),具有可信度的TCB關鍵是有一個可以被檢測的內核,一個很小的內核只包含具有優先級的代碼。任何沒有優先級的代碼,其功能仍然沒有優先級(在內核外),就是所謂的微核。在一個基于微核的系統中,軟件封裝在具有硬件加強的接口部件中,所有的通信都必須用到內核提供的跨進程通信裝置。這意味著內核完全控制著所有部件間的通信,以及部件間透明地介入安全監控成為可能,從而輸入到系統中的程序可由用戶定義為只讀文件,從而防止敏感信息的竊取。[8]
雖然一個嚴格意義上的微內核至今仍未建立,但是現存的微型內核已經為建立一個值得信賴的TCB提供了一個好的基礎。雖然測試和代碼檢驗不能完全保證內核的正確性,但小型化使得它可以減少不少漏洞。
5 總結
過去嵌入式系統執行一種或幾種固定的功能。而現在嵌入式系統能夠執行多種功能并具備下載軟件執行新的應用程序的能力。這雖然增加了嵌入式系統的靈活性和使用壽命,但它卻同時增加了惡意組織攻擊的可能性。
面對嵌入式系統存在的安全隱患及各種攻擊,需要從系統設計之初就考慮其安全性,這是一個目前仍處于起步階段的領域。雖然我們在構建安全的嵌入式系統方面已經有了一些解決方案,但嵌入式系統有限的資源及其在聯網過程中所引起的新問題使我們在實現期望的安全需求時仍面臨著重大的挑戰。
參考文獻:
[1] Ravi S,Raghunathan A,Kocher P,Sunil H.Security in Embedded Systems:Design Challenges[J].ACM Transactions on Embedded Computing Systems,2004(3).
[2] 許海燕,張曦煌.嵌入式系統的網絡安全問題分析[J].微型機與應用,2005(8):56-58.
[3] Ravi S,Raghunathan A,Chakradhar S.Tamper Resistance Mechanisms for Secure Embedded Systems[C]//Proceedings of the 17th International Conference on VLSI Design,2004.
[4] Koeher P,Lee R,MeGraw G A,et al.Security as a New Dimension in Embedded System Design[C]//Proceedings of the 41st Annual Conference on Design Automation.San Diego:ACM,2004.
[5] Uner E.A Framework for Considering Security in Embedded Systems[EB/OL].[2005-09].http://embedded.com/.
[6] York R. 嵌入式系統的安全基礎[J].Information Quarterly,2006(4).
[7]Heiser G.Secure Embedded Systems Need Microkernels[J].USENIX,2005,30(6):9-13.