趙 波 ,費永康 ,向 騻 ,李逸帆
ZHAO Bo1,2,FEI Yongkang1,2,XIANG Shuang1,2,LI Yifan1,2
1.武漢大學 計算機學院,武漢 430072
2.武漢大學 空天信息安全與可信計算教育部重點實驗室,武漢 430072
1.Computer School,Wuhan University,Wuhan 430072,China
2.Key Laboratory of Aerospace Information Security and Trusted Computing Ministry of Education,Wuhan University,Wuhan 430072,China
近年來,移動智能平臺設備以其良好的開放性、交互性、友好用戶體驗性和平臺便捷性等特點,越來越受到人們的青睞。然而,由于智能終端過分追求性能而忽略安全性要求,從而造成移動設備的安全性能發展滯后的事實,給各種網絡黑手提供了可乘之機。近年來,智能終端廣泛應用于手機支付,身份認證等生活的各個方面。應用場景的拓展特別是安全性要求較高的應用的引入,使得智能平臺的安全問題隱患逐步暴露出來。
針對當前的嵌入式系統存在的安全發展滯后,易受到攻擊等問題,如何解決其面臨的安全問題已經成為當務之急[1]。將可信計算技術引入到嵌入式設備上來,是一種可行且高效的嵌入式安全方案[2-3]。
針對嵌入式設備的安全可信,近年來學者們進行了許多研究,并取得了多項研究成果。可信計算組織TCG專門成立了移動電話工作組,并且發布了移動可信模塊(Mobile Trusted Module,MTM)規范解決移動終端安全問題[4]。TMP項目組也試圖將可信計算技術移植到嵌入式設備上來,以解決嵌入式設備遇到的安全問題。然而,因為智能終端特殊的硬件環境導致該方案未能實現。Luo等人提出了一種基于SHA-1模塊的嵌入式啟動方法[5],但是這種方法缺少系統安全啟動所需的可信根,不能保證系統啟動的絕對安全。文獻[6-7]中,武漢大學研制出我國第一款可信PDA系統,該可信PDA的系統結構和安全機制在TCG的基礎上做了較大創新和改進,從硬件底層、操作系統到應用層,都建立了一套完整的可信機制。是一種相對安全的解決方案。
本文基于可信計算理論,針對嵌入式設備的安全啟動機制展開研究,實現系統的可信啟動。相比于其他方案,本文方案充分考慮嵌入式設備的特殊性;并且引入安全TF卡作為可信根;另外無需改變設備原有硬件架構,使該方案更能貼近實用。
本文將可信計算理論成功遷移到嵌入式平臺上來,利用安全TF卡作為外置可信平臺模塊,將硬件的信任邊界從物理硬件擴展到軟件層次乃至整個設備平臺,從而保證嵌入式設備的可信啟動、可信運行。從硬件底層為用戶的軟件運行環境安全提供保障。
信任鏈是信任度量模型的實施技術方案[8]。可信計算平臺通過信任鏈技術,把信任關系從信任根擴展到整個計算系統[9-10]。在TCG的可信PC技術規范中,具體給出了可信PC的信任鏈:CRTM→BIOS→OSLoader→OS→Applications系統從CRTM出發,沿著這條信任鏈,一級度量一級,一級信任一級,確保整個平臺資源的完整性。
然而,由于嵌入式設備的特殊性,使得可信PC的信任鏈模型并不適用于嵌入式設備,嵌入式設備的特殊性主要表現在以下幾個方面:(1)大多數嵌入式設備并不存在類似于可信PC上的TPM設備[11],使得嵌入式設備缺乏了啟動所需要的信任根;(2)嵌入式設備軟、硬件設計靈活多樣化,使得適用于PC端的TPM芯片并不能完全照搬到嵌入式設備上來[12-13,15];(3)嵌入式設備的應用場景不同,對體積、性能等有嚴格要求[14]。如何在盡量不增加硬件,不影響性能,并且不改變現有架構的前提下,達到保護平臺安全性的目的,是本文要研究的內容。
本文充分研究嵌入式設備特殊性,并借鑒TCG規范之可信PC信任鏈技術,構造出一種適用于移動智能平臺的信任鏈模型。這種信任鏈結構根據智能終端自身的特點,對可信PC的信任鏈結構進行了必要的優化與改進。
嵌入式系統上電后,Boot ROM引導嵌入式系統從Bootloader啟動。Boot ROM是一段與硬件相關的代碼,通常通過硬件方式固化在對應的硬件設備中,用戶無法更改。所以本文將Bootloader作為系統信任鏈的起點,將Bootloader改造為具有度量功能的SBootloader(Security Bootloader)。同時,引入安全TF卡硬件,將SBootloader存放于安全TF卡中受硬件保護的安全區域內。該安全區域由硬件技術實現寫保護,防止了SBootloader遭到非法篡改的可能性。
SBootloader作為整個信任鏈度量的起點,其最先執行。系統從SBootloader開始啟動,其首先對ENV和內核進行可信性度量,SBootloader根據度量結果判斷兩者如果都安全可信,則系統將控制權交給Kernel。Kernel繼續對系統啟動腳本init.rc以及其他啟動關鍵節點進行安全性度量。如果度量通過,系統將控制權交給init進程,init進程繼續對MSapp.ko內核模塊進行完整性度量。如果度量通過,系統自動載入該內核模塊。MSapp.ko模塊實現對上層應用程序的可配置度量。這樣就構成了一個完整的信任鏈。沿著這條信任鏈,一級度量認證一級,一級信任一級,確保整個智能平臺的系統資源安全可信。
其中,ENV環境變量作為系統啟動的配置文件,由Bootloader讀取傳送給Kernel,Kernel根據變量信息配置平臺信息,如內核參數、本地IP地址、網卡MAC地址等信息。
本文對上層應用程序的度量采取可加載內核模塊的形式設計而成。通過修改啟動腳本init.rc文件,實現度量模塊MSapp.ko系統啟動時的自動載入。載入后的MSapp.ko模塊對上層應用程序實現度量。這種方式縮小了內核的尺寸,同時又非常靈活,提高了內核的效率。
另外,嵌入式平臺的度量證據信息由平臺的存儲根密鑰SRK簽名存放。可信PC機中,度量證據信息存儲于TPM芯片內部的平臺配置寄存器PCR中,存儲根密鑰則存儲于TPM的非易失性存儲器中,受到TPM硬件的保護,安全性非常高。而移動智能終端卻沒有這些安全硬件,為保證其度量證據信息的安全可信,本文采用數字簽名方式實現度量證據信息的完整性保護。系統初始化時,將各個啟動節點的度量參考值通過安全通道發送給安全TF卡,由安全TF卡的存儲根密鑰SRK簽名存放。存儲根密鑰受到安全TF卡的硬件保護,永遠不出TF卡,保證了SRK的絕對安全。系統每次提取參考值時都對參考值進行簽名驗證,保證參考信息的完整性。如圖1所示。

圖1 數據安全存儲
綜上,本文的信任鏈結構為:Bootloader→ENV→Kernel→init.rc→MSapp.ko→APP,如圖2所示。
假設當前獲得系統控制權的節點為SCP,現在其需要對下一個啟動節點FP進行安全性度量,驗證是否安全可信。如果驗證通過,則將控制權交給FP,如果驗證未通過,則關閉系統。信任鏈傳遞過程分析如下:
SCP:啟動過程中獲得系統控制權的程序;
FP:被度量組件;
SRK:平臺存儲根密鑰對。設備出廠時由RSA算法生成非對稱密鑰對。該密鑰私鑰由安全TF卡保存,由硬件保證其永久不出安全TF卡。

獲得系統控制權的程序SCP對啟動過程中的下一個啟動節點進行安全性度量,得到度量結果PCRFP。

SCP通過安全通道將PCRFP和被平臺存儲根密鑰SRK簽名了的FP組件的度量參考結果一起發送給安全TF卡。

安全TF卡接收到消息后,利用其片上計算芯片COS驗證簽名值是否正確,如果簽名完整性未被破壞,再比對度量值PCRFP是否正確。最后得出度量結果:Result。

TF通過安全通道將驗證結果Result返回給SCP。系統控制程序SCP根據度量結果判斷是否將控制權交給FP。
綜上所述,系統一級度量一級,一級認證一級。啟動過程中的任何一個組件不可信,其上一級組件都拒絕將控制權移交給它,從而做到系統的安全啟動。
本文將信任鏈的源點SBootloader存放于安全TF卡中,受硬件的保護,減小了信任根被攻擊的可能,提高系統的安全可信性。可信計算機的信任鏈起點BIOS Boot Block,是一個位于TPM之外的軟件模塊,該模塊不受TPM的保護,所以很容易受到非法攻擊,而一旦該模塊受到攻擊,則建立在可信根上的信任鏈將無從談起。因此,相比于BIOS Boot Block模塊,本文的信任鏈源點安全性更高,信任鏈更安全。
同時,系統的度量過程中,片上芯片COS的參與,分擔了系統CPU的相當一部分工作,大大提高了系統效率。

圖2 移動智能平臺信任鏈
嵌入式系統的安全開發,需要宿主機環境、開發板環境以及嵌入式Linux交叉編譯環境。交叉編譯(crosscompilation),即在主機平臺上用交叉編譯器編譯出可在其他平臺上運行的可執行程序的過程。本實驗在PC(Ubuntu11.0.4系統)上安裝交叉編譯環境,編譯出針對TQ210開發板的可執行程序。實驗過程中,使用GNU提供的開發工具便捷地開發、調試嵌入式平臺應用軟件。
(1)宿主機環境
①CPU:Intel x86單處理器;
②4 GB內存;
③Linux2.6.38內核;
④Linux發行版Ubuntu11.04;
⑤調試器:gcc-4.4.6;
⑥串口交互工具:minicom。
(2)目標板環境
①開發板:TQ210開發套件;
②CPU:S5PV210;
③安全TF卡,自主設計,實現SM4算法,RSA算法,sha1算法等;
④500 MB內存;
⑤Android4.0操作系統。
在實驗過程采用uboot作為Bootloader進行開發。uboot具有良好的開源性特點,并且目前大多數嵌入式操作系統都支持uboot,用uboot作實驗,有利于本文中安全啟動機制的普及。uboot第一階段代碼主要負責設備硬件(包括外部RAM)的初始化,當外部RAM等硬件初始化完成后,第一階段代碼再負責將第二階段Main Bootloader代碼載入外部RAM,并進入第二階段。Main Bootloader主要負責找到內核代碼,并將內核加載進RAM。
經過安全優化后的uboot,其具有對內核進行完整性檢測的功能。函數 do_bootm_linuxcmdtp,flag,argc,argv,images,調用:

函數(1)負責設置kernel的加載地址;函數(2)負責將控制權轉交給內核。本文在系統將控制權交給內核之前加入度量函數:

實現對內核和ENV分區的摘要計算,并調用安全TF卡驅動接口,將摘要值傳送給安全TF卡的片上芯片COS。由COS首先驗證標準值的簽名完整性,再比對摘要值和標準值是否一致,最后將比對結果返回給uboot,uboot根據校驗結果決定是否執行轉交控制權的操作。控制臺輸出的安全啟動信息如圖3所示。

圖3 控制臺信息
對內核的改造包括兩部分。其一,對init.rc等系統啟動腳本進行度量。其二,對動態載入的內核安全管理模塊MSapp.ko進行完整性度量。init.rc配置腳本實現MSapp.ko模塊的自啟動,對init.rc的完整性度量,確保了MSapp.ko模塊的自啟動特性不被篡改,并且防止未被授權的用戶安插非法啟動項。而對MSapp.ko的度量,則為了保證該內核模塊的安全可信。
本模塊作為動態載入內核的內核安全模塊,其實現對上層關鍵系統程序的度量。系統設計時通過修改init.rc配置,實現該模塊MSapp.ko的自啟動。用戶啟動一個應用程序時,系統會自動調用本模塊,對應用程序的完整性進行度量,如果度量成功,才能啟動。
其具體實現方案,當系統啟動一個APP時,用戶進程調用execve系統調用,陷入內核態。內核接收到這個系統調用后調用do_execve函數,該函數從nand flash中的相應位置讀出APP二進制文件,正常情況下,為其創建進程,實現系統啟動。修改后的內核,在從nand flash中的相應位置讀出APP二進制文件后,需要對二進制文件進行完整性度量,如果完整性度量通過才能為其創建進程,實現APP的啟動。應用程序的安全啟動過程如圖4所示。

圖4 APP安全啟動
啟動機制在實際應用中的安全性以及性能損耗大小是一種啟動方案能不能推廣的重要評判標準。基于此,針對本文啟動方法的安全性和性能損耗兩個方面進行了測試分析。
為了驗證基于該信任鏈機制設計的嵌入式平臺是否能抵御針對安全啟動的各種攻擊。本文分析系統可能存在的漏洞,并針對各種可能漏洞進行有針對性的攻擊測試。實驗中,模擬了包括信道攻擊、篡改攻擊、偽造攻擊等各種攻擊手段,針對啟動過程中的各個啟動節點進行攻擊測試。
信道攻擊中,假設SCP將PCRFP和發送給安全TF卡進行比對的過程中,傳輸內容存在被篡改的可能,攻擊者對兩個值之一或都進行非法篡改,之后再將值發送給TF卡進行完整性比對;偽造攻擊中,假設啟動節點或者受保護的上層應用程序存在被偽造的可能,攻擊者利用自己的程序代碼替代合法代碼,以達到自己的非法目的;篡改攻擊中,假設系統啟動腳本文件的完整性存在被破壞的可能,攻擊者對配置文件內容進行局部篡改,以達到自己的目的。實驗結果顯示(表1),無論啟動過程中的任何數據,程序節點,或啟動配置文件遭到篡改或者破壞,本啟動方法都能及時發現,并且根據相應安全策略實施安全措施。

表1 攻擊實驗結果
信道攻擊中,PCR標準值已經被TF卡安全密鑰私鑰簽名,并且TF卡安全私鑰受到TF卡硬件保護,永遠不出TF卡密鑰存儲區。因此如實驗結果顯示,如果攻擊者對PCR標準值進行非法篡改,則當驗證PCR簽名時,能夠及時準確發現簽名被篡改。如果度量值被篡改,片上芯片驗證度量值時,同樣能夠發現度量值與標準PCR值不一致。數字簽名保證了該通道的安全。
在偽造攻擊中,本文對各個啟動節點做了偽造攻擊測試實驗分析。其中,針對內核的完整性攻擊實驗,偽造了一個與合法安全內核高度相似的內核,該內核非法篡改原有安全內核的MAC強制訪問控制功能,達到自己的某些非法目的。實驗結果顯示,平臺啟動過程中,當SBootloader將控制權交給內核之前,能夠及時發現內核的度量值與內核標準PCR值不同,進而判斷其完整性遭到破壞,并自動關閉系統,控制臺輸出如圖5所示。攻擊測試結果如表2所示。

圖5 內核攻擊測試
在篡改攻擊中,本文對啟動腳本init.rc內容進行篡改,注銷了內核安全增強模塊的自啟動腳本。實驗結果顯示,系統啟動過程中,能夠及時發現init.rc的完整性遭到破壞,系統用備份的init.rc腳本替換遭到篡改的腳本文件,并重新對新的init.rc執行度量。最后實現系統的可信啟動。腳本攻擊測試結果如表3所示。
本文設計的安全啟動機制,相對于原有的平臺可能造成性能影響的部分主要在于啟動過程中的安全度量過程,以及內核模塊的載入耗時。本文在度量過程中,充分利用片上芯片COS的計算資源,分擔了系統的相當一部分工作,提高了系統效率。

表2 Kernel偽造攻擊測試

表3 腳本文件(init.rc)篡改攻擊測試

圖6 性能分析
對此,著重測試系統啟動的整體耗時。系統測試時,選擇對所有組件進行度量,得出最大開銷情況。本文累計記載了15次普通啟動,以及安全啟動耗時。其結果如圖6所示。
實驗結果顯示,正常啟動耗時大概為89 s到92 s之間。而本文的安全啟動機制耗時則控制在94 s到96 s之間。由此得出,安全啟動相對于普通啟動的性能損耗控制在6%以內,用戶基本感受不到。因此,本安全啟動機制不會對用戶的實際體驗造成影響。
將可信計算技術引入到嵌入式設備上來,是一種可行且高效的嵌入式安全方案。信任鏈技術是可信計算的關鍵技術,通過信任鏈的信任傳遞機制來確保系統數據和文件的完整性。本文將安全TF卡作為外置的可信平臺模塊,采用信任鏈技術有效地將硬件的信任邊界從物理硬件擴展到軟件層次乃至整個設備平臺。該方案的創新性在于不改變現有移動設備硬件架構的前提下,設計實現了一套嵌入式系統的安全啟動機制,從硬件底層為用戶的平臺環境安全提供保障。
[1]Dietrich K,Winter J.Implementation aspects of mobile and embedded trusted computing[M]//Trusted Computing.Berlin Heidelberg:Springer,2009:29-44.
[2]沈昌祥,張煥國,王懷民,等.可信計算的研究與發展[J].中國科學:信息科學,2010,40(2):139-166.
[3]馮登國,秦宇,汪丹,等.可信計算技術研究[J].計算機研究與發展,2011,48(8):1332-1349.
[4]MPWG T C G.The TCG mobile trusted module specification[J].TCG Specification Version 1.0 Revision,1.
[5]羅鈞,蔣敬旗,閔志盛,等.基于 SHA-1模塊的可信嵌入式系統安全啟動方法[J].山東大學學報:理學版,2012,47(9).
[6]Bo Z,Huan-Guo Z,Jing L,et al.The system architecture and security structure of trusted PDA[J].Chinese Journal of Computers,2010,33(1):82-92.
[7]張煥國,李晶,潘丹鈴,等.嵌入式系統可信平臺模塊研究[J].計算機研究與發展,2011,48(7):1269-1278.
[8]Lin K J,Wang C Y.Using tpm to improve boot security at bios layer[C]//2012 IEEE International Conference on Consumer Electronics(ICCE).[S.l.]:IEEE,2012:376-377.
[9]司麗敏,蔡勉,陳銀鏡,等.一種信任鏈傳遞模型研究[J].計算機科學,2011,38(9):79-81.
[10]譚良,徐志偉.基于可信計算平臺的信任鏈傳遞研究進展[J].計算機科學,2008,35(10):15-18.
[11]Ryan M D.Automatic analysis of security properties of the TPM[M]//Trusted Systems.Berlin Heidelberg:Springer,2012:1-4.
[12]Winter J.Trusted computing building blocks for embedded linux-based ARM trustzone platforms[C]//Proceedings of the 3rd ACM Workshop on Scalable Trusted Computing.[S.l.]:ACM,2008:21-30.
[13]Huanguo Z,Jing L,Danling P,et al.Trusted platform module in embedded system[J].JournalofComputer Research and Development,2011(7).
[14]李善平,劉文峰,王煥龍.Linux與嵌入式系統[M].北京:清華大學出版社,2006.
[15]Yang J,Wang H H,Wong F F,et al.Mobile trusted platform model for smart phone[J].Computer Science,2012,39(8):20-25.