趙 波 ,費永康 ,向 騻 ,李逸帆
ZHAO Bo1,2,FEI Yongkang1,2,XIANG Shuang1,2,LI Yifan1,2
1.武漢大學(xué) 計算機學(xué)院,武漢 430072
2.武漢大學(xué) 空天信息安全與可信計算教育部重點實驗室,武漢 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
近年來,移動智能平臺設(shè)備以其良好的開放性、交互性、友好用戶體驗性和平臺便捷性等特點,越來越受到人們的青睞。然而,由于智能終端過分追求性能而忽略安全性要求,從而造成移動設(shè)備的安全性能發(fā)展滯后的事實,給各種網(wǎng)絡(luò)黑手提供了可乘之機。近年來,智能終端廣泛應(yīng)用于手機支付,身份認證等生活的各個方面。應(yīng)用場景的拓展特別是安全性要求較高的應(yīng)用的引入,使得智能平臺的安全問題隱患逐步暴露出來。
針對當(dāng)前的嵌入式系統(tǒng)存在的安全發(fā)展滯后,易受到攻擊等問題,如何解決其面臨的安全問題已經(jīng)成為當(dāng)務(wù)之急[1]。將可信計算技術(shù)引入到嵌入式設(shè)備上來,是一種可行且高效的嵌入式安全方案[2-3]。
針對嵌入式設(shè)備的安全可信,近年來學(xué)者們進行了許多研究,并取得了多項研究成果??尚庞嬎憬M織TCG專門成立了移動電話工作組,并且發(fā)布了移動可信模塊(Mobile Trusted Module,MTM)規(guī)范解決移動終端安全問題[4]。TMP項目組也試圖將可信計算技術(shù)移植到嵌入式設(shè)備上來,以解決嵌入式設(shè)備遇到的安全問題。然而,因為智能終端特殊的硬件環(huán)境導(dǎo)致該方案未能實現(xiàn)。Luo等人提出了一種基于SHA-1模塊的嵌入式啟動方法[5],但是這種方法缺少系統(tǒng)安全啟動所需的可信根,不能保證系統(tǒng)啟動的絕對安全。文獻[6-7]中,武漢大學(xué)研制出我國第一款可信PDA系統(tǒng),該可信PDA的系統(tǒng)結(jié)構(gòu)和安全機制在TCG的基礎(chǔ)上做了較大創(chuàng)新和改進,從硬件底層、操作系統(tǒng)到應(yīng)用層,都建立了一套完整的可信機制。是一種相對安全的解決方案。
本文基于可信計算理論,針對嵌入式設(shè)備的安全啟動機制展開研究,實現(xiàn)系統(tǒng)的可信啟動。相比于其他方案,本文方案充分考慮嵌入式設(shè)備的特殊性;并且引入安全TF卡作為可信根;另外無需改變設(shè)備原有硬件架構(gòu),使該方案更能貼近實用。
本文將可信計算理論成功遷移到嵌入式平臺上來,利用安全TF卡作為外置可信平臺模塊,將硬件的信任邊界從物理硬件擴展到軟件層次乃至整個設(shè)備平臺,從而保證嵌入式設(shè)備的可信啟動、可信運行。從硬件底層為用戶的軟件運行環(huán)境安全提供保障。
信任鏈是信任度量模型的實施技術(shù)方案[8]??尚庞嬎闫脚_通過信任鏈技術(shù),把信任關(guān)系從信任根擴展到整個計算系統(tǒng)[9-10]。在TCG的可信PC技術(shù)規(guī)范中,具體給出了可信PC的信任鏈:CRTM→BIOS→OSLoader→OS→Applications系統(tǒng)從CRTM出發(fā),沿著這條信任鏈,一級度量一級,一級信任一級,確保整個平臺資源的完整性。
然而,由于嵌入式設(shè)備的特殊性,使得可信PC的信任鏈模型并不適用于嵌入式設(shè)備,嵌入式設(shè)備的特殊性主要表現(xiàn)在以下幾個方面:(1)大多數(shù)嵌入式設(shè)備并不存在類似于可信PC上的TPM設(shè)備[11],使得嵌入式設(shè)備缺乏了啟動所需要的信任根;(2)嵌入式設(shè)備軟、硬件設(shè)計靈活多樣化,使得適用于PC端的TPM芯片并不能完全照搬到嵌入式設(shè)備上來[12-13,15];(3)嵌入式設(shè)備的應(yīng)用場景不同,對體積、性能等有嚴格要求[14]。如何在盡量不增加硬件,不影響性能,并且不改變現(xiàn)有架構(gòu)的前提下,達到保護平臺安全性的目的,是本文要研究的內(nèi)容。
本文充分研究嵌入式設(shè)備特殊性,并借鑒TCG規(guī)范之可信PC信任鏈技術(shù),構(gòu)造出一種適用于移動智能平臺的信任鏈模型。這種信任鏈結(jié)構(gòu)根據(jù)智能終端自身的特點,對可信PC的信任鏈結(jié)構(gòu)進行了必要的優(yōu)化與改進。
嵌入式系統(tǒng)上電后,Boot ROM引導(dǎo)嵌入式系統(tǒng)從Bootloader啟動。Boot ROM是一段與硬件相關(guān)的代碼,通常通過硬件方式固化在對應(yīng)的硬件設(shè)備中,用戶無法更改。所以本文將Bootloader作為系統(tǒng)信任鏈的起點,將Bootloader改造為具有度量功能的SBootloader(Security Bootloader)。同時,引入安全TF卡硬件,將SBootloader存放于安全TF卡中受硬件保護的安全區(qū)域內(nèi)。該安全區(qū)域由硬件技術(shù)實現(xiàn)寫保護,防止了SBootloader遭到非法篡改的可能性。
SBootloader作為整個信任鏈度量的起點,其最先執(zhí)行。系統(tǒng)從SBootloader開始啟動,其首先對ENV和內(nèi)核進行可信性度量,SBootloader根據(jù)度量結(jié)果判斷兩者如果都安全可信,則系統(tǒng)將控制權(quán)交給Kernel。Kernel繼續(xù)對系統(tǒng)啟動腳本init.rc以及其他啟動關(guān)鍵節(jié)點進行安全性度量。如果度量通過,系統(tǒng)將控制權(quán)交給init進程,init進程繼續(xù)對MSapp.ko內(nèi)核模塊進行完整性度量。如果度量通過,系統(tǒng)自動載入該內(nèi)核模塊。MSapp.ko模塊實現(xiàn)對上層應(yīng)用程序的可配置度量。這樣就構(gòu)成了一個完整的信任鏈。沿著這條信任鏈,一級度量認證一級,一級信任一級,確保整個智能平臺的系統(tǒng)資源安全可信。
其中,ENV環(huán)境變量作為系統(tǒng)啟動的配置文件,由Bootloader讀取傳送給Kernel,Kernel根據(jù)變量信息配置平臺信息,如內(nèi)核參數(shù)、本地IP地址、網(wǎng)卡MAC地址等信息。
本文對上層應(yīng)用程序的度量采取可加載內(nèi)核模塊的形式設(shè)計而成。通過修改啟動腳本init.rc文件,實現(xiàn)度量模塊MSapp.ko系統(tǒng)啟動時的自動載入。載入后的MSapp.ko模塊對上層應(yīng)用程序?qū)崿F(xiàn)度量。這種方式縮小了內(nèi)核的尺寸,同時又非常靈活,提高了內(nèi)核的效率。
另外,嵌入式平臺的度量證據(jù)信息由平臺的存儲根密鑰SRK簽名存放??尚臥C機中,度量證據(jù)信息存儲于TPM芯片內(nèi)部的平臺配置寄存器PCR中,存儲根密鑰則存儲于TPM的非易失性存儲器中,受到TPM硬件的保護,安全性非常高。而移動智能終端卻沒有這些安全硬件,為保證其度量證據(jù)信息的安全可信,本文采用數(shù)字簽名方式實現(xiàn)度量證據(jù)信息的完整性保護。系統(tǒng)初始化時,將各個啟動節(jié)點的度量參考值通過安全通道發(fā)送給安全TF卡,由安全TF卡的存儲根密鑰SRK簽名存放。存儲根密鑰受到安全TF卡的硬件保護,永遠不出TF卡,保證了SRK的絕對安全。系統(tǒng)每次提取參考值時都對參考值進行簽名驗證,保證參考信息的完整性。如圖1所示。
圖1 數(shù)據(jù)安全存儲
綜上,本文的信任鏈結(jié)構(gòu)為:Bootloader→ENV→Kernel→init.rc→MSapp.ko→APP,如圖2所示。
假設(shè)當(dāng)前獲得系統(tǒng)控制權(quán)的節(jié)點為SCP,現(xiàn)在其需要對下一個啟動節(jié)點FP進行安全性度量,驗證是否安全可信。如果驗證通過,則將控制權(quán)交給FP,如果驗證未通過,則關(guān)閉系統(tǒng)。信任鏈傳遞過程分析如下:
SCP:啟動過程中獲得系統(tǒng)控制權(quán)的程序;
FP:被度量組件;
SRK:平臺存儲根密鑰對。設(shè)備出廠時由RSA算法生成非對稱密鑰對。該密鑰私鑰由安全TF卡保存,由硬件保證其永久不出安全TF卡。
獲得系統(tǒng)控制權(quán)的程序SCP對啟動過程中的下一個啟動節(jié)點進行安全性度量,得到度量結(jié)果PCRFP。
SCP通過安全通道將PCRFP和被平臺存儲根密鑰SRK簽名了的FP組件的度量參考結(jié)果一起發(fā)送給安全TF卡。
安全TF卡接收到消息后,利用其片上計算芯片COS驗證簽名值是否正確,如果簽名完整性未被破壞,再比對度量值PCRFP是否正確。最后得出度量結(jié)果:Result。
TF通過安全通道將驗證結(jié)果Result返回給SCP。系統(tǒng)控制程序SCP根據(jù)度量結(jié)果判斷是否將控制權(quán)交給FP。
綜上所述,系統(tǒng)一級度量一級,一級認證一級。啟動過程中的任何一個組件不可信,其上一級組件都拒絕將控制權(quán)移交給它,從而做到系統(tǒng)的安全啟動。
本文將信任鏈的源點SBootloader存放于安全TF卡中,受硬件的保護,減小了信任根被攻擊的可能,提高系統(tǒng)的安全可信性。可信計算機的信任鏈起點BIOS Boot Block,是一個位于TPM之外的軟件模塊,該模塊不受TPM的保護,所以很容易受到非法攻擊,而一旦該模塊受到攻擊,則建立在可信根上的信任鏈將無從談起。因此,相比于BIOS Boot Block模塊,本文的信任鏈源點安全性更高,信任鏈更安全。
同時,系統(tǒng)的度量過程中,片上芯片COS的參與,分擔(dān)了系統(tǒng)CPU的相當(dāng)一部分工作,大大提高了系統(tǒng)效率。
圖2 移動智能平臺信任鏈
嵌入式系統(tǒng)的安全開發(fā),需要宿主機環(huán)境、開發(fā)板環(huán)境以及嵌入式Linux交叉編譯環(huán)境。交叉編譯(crosscompilation),即在主機平臺上用交叉編譯器編譯出可在其他平臺上運行的可執(zhí)行程序的過程。本實驗在PC(Ubuntu11.0.4系統(tǒng))上安裝交叉編譯環(huán)境,編譯出針對TQ210開發(fā)板的可執(zhí)行程序。實驗過程中,使用GNU提供的開發(fā)工具便捷地開發(fā)、調(diào)試嵌入式平臺應(yīng)用軟件。
(1)宿主機環(huán)境
①CPU:Intel x86單處理器;
②4 GB內(nèi)存;
③Linux2.6.38內(nèi)核;
④Linux發(fā)行版Ubuntu11.04;
⑤調(diào)試器:gcc-4.4.6;
⑥串口交互工具:minicom。
(2)目標板環(huán)境
①開發(fā)板:TQ210開發(fā)套件;
②CPU:S5PV210;
③安全TF卡,自主設(shè)計,實現(xiàn)SM4算法,RSA算法,sha1算法等;
④500 MB內(nèi)存;
⑤Android4.0操作系統(tǒng)。
在實驗過程采用uboot作為Bootloader進行開發(fā)。uboot具有良好的開源性特點,并且目前大多數(shù)嵌入式操作系統(tǒng)都支持uboot,用uboot作實驗,有利于本文中安全啟動機制的普及。uboot第一階段代碼主要負責(zé)設(shè)備硬件(包括外部RAM)的初始化,當(dāng)外部RAM等硬件初始化完成后,第一階段代碼再負責(zé)將第二階段Main Bootloader代碼載入外部RAM,并進入第二階段。Main Bootloader主要負責(zé)找到內(nèi)核代碼,并將內(nèi)核加載進RAM。
經(jīng)過安全優(yōu)化后的uboot,其具有對內(nèi)核進行完整性檢測的功能。函數(shù) do_bootm_linuxcmdtp,flag,argc,argv,images,調(diào)用:
函數(shù)(1)負責(zé)設(shè)置kernel的加載地址;函數(shù)(2)負責(zé)將控制權(quán)轉(zhuǎn)交給內(nèi)核。本文在系統(tǒng)將控制權(quán)交給內(nèi)核之前加入度量函數(shù):
實現(xiàn)對內(nèi)核和ENV分區(qū)的摘要計算,并調(diào)用安全TF卡驅(qū)動接口,將摘要值傳送給安全TF卡的片上芯片COS。由COS首先驗證標準值的簽名完整性,再比對摘要值和標準值是否一致,最后將比對結(jié)果返回給uboot,uboot根據(jù)校驗結(jié)果決定是否執(zhí)行轉(zhuǎn)交控制權(quán)的操作??刂婆_輸出的安全啟動信息如圖3所示。
圖3 控制臺信息
對內(nèi)核的改造包括兩部分。其一,對init.rc等系統(tǒng)啟動腳本進行度量。其二,對動態(tài)載入的內(nèi)核安全管理模塊MSapp.ko進行完整性度量。init.rc配置腳本實現(xiàn)MSapp.ko模塊的自啟動,對init.rc的完整性度量,確保了MSapp.ko模塊的自啟動特性不被篡改,并且防止未被授權(quán)的用戶安插非法啟動項。而對MSapp.ko的度量,則為了保證該內(nèi)核模塊的安全可信。
本模塊作為動態(tài)載入內(nèi)核的內(nèi)核安全模塊,其實現(xiàn)對上層關(guān)鍵系統(tǒng)程序的度量。系統(tǒng)設(shè)計時通過修改init.rc配置,實現(xiàn)該模塊MSapp.ko的自啟動。用戶啟動一個應(yīng)用程序時,系統(tǒng)會自動調(diào)用本模塊,對應(yīng)用程序的完整性進行度量,如果度量成功,才能啟動。
其具體實現(xiàn)方案,當(dāng)系統(tǒng)啟動一個APP時,用戶進程調(diào)用execve系統(tǒng)調(diào)用,陷入內(nèi)核態(tài)。內(nèi)核接收到這個系統(tǒng)調(diào)用后調(diào)用do_execve函數(shù),該函數(shù)從nand flash中的相應(yīng)位置讀出APP二進制文件,正常情況下,為其創(chuàng)建進程,實現(xiàn)系統(tǒng)啟動。修改后的內(nèi)核,在從nand flash中的相應(yīng)位置讀出APP二進制文件后,需要對二進制文件進行完整性度量,如果完整性度量通過才能為其創(chuàng)建進程,實現(xiàn)APP的啟動。應(yīng)用程序的安全啟動過程如圖4所示。
圖4 APP安全啟動
啟動機制在實際應(yīng)用中的安全性以及性能損耗大小是一種啟動方案能不能推廣的重要評判標準?;诖?,針對本文啟動方法的安全性和性能損耗兩個方面進行了測試分析。
為了驗證基于該信任鏈機制設(shè)計的嵌入式平臺是否能抵御針對安全啟動的各種攻擊。本文分析系統(tǒng)可能存在的漏洞,并針對各種可能漏洞進行有針對性的攻擊測試。實驗中,模擬了包括信道攻擊、篡改攻擊、偽造攻擊等各種攻擊手段,針對啟動過程中的各個啟動節(jié)點進行攻擊測試。
信道攻擊中,假設(shè)SCP將PCRFP和發(fā)送給安全TF卡進行比對的過程中,傳輸內(nèi)容存在被篡改的可能,攻擊者對兩個值之一或都進行非法篡改,之后再將值發(fā)送給TF卡進行完整性比對;偽造攻擊中,假設(shè)啟動節(jié)點或者受保護的上層應(yīng)用程序存在被偽造的可能,攻擊者利用自己的程序代碼替代合法代碼,以達到自己的非法目的;篡改攻擊中,假設(shè)系統(tǒng)啟動腳本文件的完整性存在被破壞的可能,攻擊者對配置文件內(nèi)容進行局部篡改,以達到自己的目的。實驗結(jié)果顯示(表1),無論啟動過程中的任何數(shù)據(jù),程序節(jié)點,或啟動配置文件遭到篡改或者破壞,本啟動方法都能及時發(fā)現(xiàn),并且根據(jù)相應(yīng)安全策略實施安全措施。
表1 攻擊實驗結(jié)果
信道攻擊中,PCR標準值已經(jīng)被TF卡安全密鑰私鑰簽名,并且TF卡安全私鑰受到TF卡硬件保護,永遠不出TF卡密鑰存儲區(qū)。因此如實驗結(jié)果顯示,如果攻擊者對PCR標準值進行非法篡改,則當(dāng)驗證PCR簽名時,能夠及時準確發(fā)現(xiàn)簽名被篡改。如果度量值被篡改,片上芯片驗證度量值時,同樣能夠發(fā)現(xiàn)度量值與標準PCR值不一致。數(shù)字簽名保證了該通道的安全。
在偽造攻擊中,本文對各個啟動節(jié)點做了偽造攻擊測試實驗分析。其中,針對內(nèi)核的完整性攻擊實驗,偽造了一個與合法安全內(nèi)核高度相似的內(nèi)核,該內(nèi)核非法篡改原有安全內(nèi)核的MAC強制訪問控制功能,達到自己的某些非法目的。實驗結(jié)果顯示,平臺啟動過程中,當(dāng)SBootloader將控制權(quán)交給內(nèi)核之前,能夠及時發(fā)現(xiàn)內(nèi)核的度量值與內(nèi)核標準PCR值不同,進而判斷其完整性遭到破壞,并自動關(guān)閉系統(tǒng),控制臺輸出如圖5所示。攻擊測試結(jié)果如表2所示。
圖5 內(nèi)核攻擊測試
在篡改攻擊中,本文對啟動腳本init.rc內(nèi)容進行篡改,注銷了內(nèi)核安全增強模塊的自啟動腳本。實驗結(jié)果顯示,系統(tǒng)啟動過程中,能夠及時發(fā)現(xiàn)init.rc的完整性遭到破壞,系統(tǒng)用備份的init.rc腳本替換遭到篡改的腳本文件,并重新對新的init.rc執(zhí)行度量。最后實現(xiàn)系統(tǒng)的可信啟動。腳本攻擊測試結(jié)果如表3所示。
本文設(shè)計的安全啟動機制,相對于原有的平臺可能造成性能影響的部分主要在于啟動過程中的安全度量過程,以及內(nèi)核模塊的載入耗時。本文在度量過程中,充分利用片上芯片COS的計算資源,分擔(dān)了系統(tǒng)的相當(dāng)一部分工作,提高了系統(tǒng)效率。
表2 Kernel偽造攻擊測試
表3 腳本文件(init.rc)篡改攻擊測試
圖6 性能分析
對此,著重測試系統(tǒng)啟動的整體耗時。系統(tǒng)測試時,選擇對所有組件進行度量,得出最大開銷情況。本文累計記載了15次普通啟動,以及安全啟動耗時。其結(jié)果如圖6所示。
實驗結(jié)果顯示,正常啟動耗時大概為89 s到92 s之間。而本文的安全啟動機制耗時則控制在94 s到96 s之間。由此得出,安全啟動相對于普通啟動的性能損耗控制在6%以內(nèi),用戶基本感受不到。因此,本安全啟動機制不會對用戶的實際體驗造成影響。
將可信計算技術(shù)引入到嵌入式設(shè)備上來,是一種可行且高效的嵌入式安全方案。信任鏈技術(shù)是可信計算的關(guān)鍵技術(shù),通過信任鏈的信任傳遞機制來確保系統(tǒng)數(shù)據(jù)和文件的完整性。本文將安全TF卡作為外置的可信平臺模塊,采用信任鏈技術(shù)有效地將硬件的信任邊界從物理硬件擴展到軟件層次乃至整個設(shè)備平臺。該方案的創(chuàng)新性在于不改變現(xiàn)有移動設(shè)備硬件架構(gòu)的前提下,設(shè)計實現(xiàn)了一套嵌入式系統(tǒng)的安全啟動機制,從硬件底層為用戶的平臺環(huán)境安全提供保障。
[1]Dietrich K,Winter J.Implementation aspects of mobile and embedded trusted computing[M]//Trusted Computing.Berlin Heidelberg:Springer,2009:29-44.
[2]沈昌祥,張煥國,王懷民,等.可信計算的研究與發(fā)展[J].中國科學(xué):信息科學(xué),2010,40(2):139-166.
[3]馮登國,秦宇,汪丹,等.可信計算技術(shù)研究[J].計算機研究與發(fā)展,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模塊的可信嵌入式系統(tǒng)安全啟動方法[J].山東大學(xué)學(xué)報:理學(xué)版,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]張煥國,李晶,潘丹鈴,等.嵌入式系統(tǒng)可信平臺模塊研究[J].計算機研究與發(fā)展,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].計算機科學(xué),2011,38(9):79-81.
[10]譚良,徐志偉.基于可信計算平臺的信任鏈傳遞研究進展[J].計算機科學(xué),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與嵌入式系統(tǒng)[M].北京:清華大學(xué)出版社,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.