文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.05.018
中文引用格式: 孫鉑,,溫旭霞,,宮樹(shù)紅,等. 一種具有自恢復(fù)功能的嵌入式可信平臺(tái)的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2017,,43(5):74-77.
英文引用格式: Sun Bo,Wen Xuxia,,Gong Shuhong,,et al. Design of an embedded trusted platform with self-recovery function[J].Application of Electronic Technique,2017,,43(5):74-77.
0 引言
嵌入式系統(tǒng)目前已在國(guó)防、國(guó)民經(jīng)濟(jì)及社會(huì)生活各領(lǐng)域普及,,應(yīng)用于企業(yè),、軍隊(duì)、辦公室,、實(shí)驗(yàn)室以及個(gè)人家庭等各種場(chǎng)所,。然而,2014年??低暤拇罅繑?shù)碼錄像機(jī)設(shè)備被曝存在遠(yuǎn)程代碼執(zhí)行漏洞,,黑客可以由此直接獲取設(shè)備最高權(quán)限。2015年末,,烏克蘭國(guó)家電網(wǎng)遭到網(wǎng)絡(luò)攻擊,,伊萬(wàn)諾一弗蘭科夫斯克地區(qū)部分變電站的控制系統(tǒng)遭到破壞,造成大面積停電,,約140萬(wàn)人受到影響,。嵌入式平臺(tái)安全至關(guān)重要,將可信計(jì)算技術(shù)引入到嵌入式設(shè)備上來(lái),,是一種可行且高效的安全防護(hù)方法[1],。文獻(xiàn)[2]對(duì)于嵌入式系統(tǒng)的安全進(jìn)行了研究,并且設(shè)計(jì)了專門用于嵌入式系統(tǒng)的可信芯片ETPM,。文獻(xiàn)[3]以可信計(jì)算理論為基礎(chǔ),,提出了一種適用于嵌入式環(huán)境的可信框架模型,設(shè)計(jì)完成嵌入式可信計(jì)算硬件模塊以及其邏輯結(jié)構(gòu),。本文旨在設(shè)計(jì)出具有普遍意義的嵌入式可信平臺(tái),,提升系統(tǒng)的可信性,并具有自恢復(fù)功能,,提高系統(tǒng)的可靠性與健壯性,。
1 可信計(jì)算技術(shù)
可信計(jì)算組織(Trusted Computing Group,TCG)于2003年3月成立,,目的是在計(jì)算和通信系統(tǒng)中廣泛使用基于硬件安全模塊支持下的可信計(jì)算平臺(tái),,以提高通信系統(tǒng)的安全性,。
可信平臺(tái)模塊(Trusted Platform Module,TPM)是TCG發(fā)行的一款可信芯片,,是符合TCG規(guī)范的一個(gè)小型片上系統(tǒng),,內(nèi)部有隨機(jī)數(shù)產(chǎn)生器、SHA-1引擎等,。目前基于可信計(jì)算的安全啟動(dòng)方式主要通過(guò)以TPM為可信根的可信度量來(lái)實(shí)現(xiàn)[4],。
1.1 可信鏈技術(shù)
完整性度量是可信啟動(dòng)的關(guān)鍵,為了實(shí)現(xiàn)完整性度量,,可信計(jì)算組織TCG提出了可信鏈技術(shù),。可信鏈的建立直接關(guān)系到可信平臺(tái)的正常運(yùn)行,。
根據(jù)可信計(jì)算的思想,,可信鏈的實(shí)現(xiàn)是從可信度量根RTM開(kāi)始,到硬件平臺(tái),,再到操作系統(tǒng)以及上層應(yīng)用,,一級(jí)度量一級(jí),一級(jí)信任一級(jí),。
TCG定義了兩種確??尚艈?dòng)的方法:靜態(tài)可信根(Static Root of Trusted Measure,SRTM)和動(dòng)態(tài)可信根(Dynamic Root of Trusted Measure,,DRTM)。在使用靜態(tài)可信度量根時(shí),,所有的信任都從BIOS的一段固定的可信代碼開(kāi)始,,在把控制權(quán)交給下一段代碼之前,這段可信代碼會(huì)去度量下一段將要執(zhí)行的代碼,,并將度量結(jié)果擴(kuò)展到平臺(tái)配置寄存器(Platform Configuration Register,,PCR)中。如果每一段新的代碼在移交控制權(quán)之前都去度量下一段代碼,,就可以建立起可信鏈,,如果度量貫穿整個(gè)啟動(dòng)過(guò)程,最終的PCR值就反應(yīng)了所有度量對(duì)象的度量值,。PCR擴(kuò)展操作基于SHA-1的散列算法,,從密碼學(xué)角度來(lái)說(shuō),該算法足夠強(qiáng)大,,對(duì)于惡意代碼來(lái)說(shuō),,通過(guò)計(jì)算破解出一個(gè)可信啟動(dòng)下的預(yù)期PCR值是不可行的[5]。本設(shè)計(jì)采用靜態(tài)度量根的可信啟動(dòng)方法,。
既然TPM的PCR值能夠表明軟件是否可信,,那么TPM就應(yīng)該用某種方法表現(xiàn)出它的認(rèn)知,。如果系統(tǒng)啟動(dòng)過(guò)程中的軟件被篡改,那么最后得到PCR值就會(huì)不同,,這時(shí)TPM就會(huì)拒絕通過(guò)這些不可信的PCR值,。如果能夠讓系統(tǒng)在啟動(dòng)時(shí)和封裝密鑰或者密封數(shù)據(jù)建立聯(lián)系,TPM就能保證系統(tǒng)啟動(dòng)是可信的,。
當(dāng)可信操作系統(tǒng),、客體操作系統(tǒng)和應(yīng)用程序都使用TPM時(shí),為了區(qū)分當(dāng)前的度量值是屬于哪個(gè)部分的,,TCG引入了Locality的概念,。Locality認(rèn)證當(dāng)前TPM請(qǐng)求的發(fā)起者,規(guī)范定義了5種不同的Locality,,如表1所示,。其中第一個(gè)PCR值記錄了BIOS的度量信息,該信息是由SRTM度量后得到的不可變信息,,此時(shí)BIOS獲得控制權(quán),。
可信啟動(dòng)的核心是完整性度量,從建立可信根開(kāi)始,,度量每個(gè)模塊的完整性值同期望的完整性值比較,,進(jìn)而維護(hù)這個(gè)模塊完整性。完整性值通常是一個(gè)hash值,,如果任何模塊發(fā)生改變,,其hash值也會(huì)發(fā)生改變,從而知道出現(xiàn)問(wèn)題,。通過(guò)這種方法保護(hù)已經(jīng)建立PCR保護(hù)的模塊,。
1.2 可信啟動(dòng)技術(shù)
啟動(dòng)是指系統(tǒng)從上電開(kāi)始到各部件復(fù)位待命的全過(guò)程,系統(tǒng)的初始狀態(tài)是否可信對(duì)于其安全性至關(guān)重要,,因此可信啟動(dòng)對(duì)可信平臺(tái)意義非凡,。安全啟動(dòng)的概念普遍定義為平臺(tái)的安全性和完整性,而可信計(jì)算平臺(tái)環(huán)境的建立是在可信根和可信鏈的基礎(chǔ)上,。TCG給出的PC可信鏈定義如下:
CRTM(Core Root of Trusted for Measurement)→BIOS→OS Loader→OS→Applications
根據(jù)TCG規(guī)范,,嵌入式平臺(tái)的可信啟動(dòng)過(guò)程設(shè)計(jì)步驟如下:
(1)平臺(tái)上電;
(2)CRTM啟動(dòng),,然后度量其本身并將度量值擴(kuò)展到相應(yīng)的PCR中,;
(3)CRTM請(qǐng)求TPM_unseal命令;
(4)TPM將相應(yīng)PCR中現(xiàn)在狀態(tài)的值與已密封的值進(jìn)行比較,,如果一致,,執(zhí)行下一步;如果不一致,,暫停啟動(dòng),;
(5)被證明可信的元件進(jìn)行度量,,隨后啟動(dòng)元件,并擴(kuò)展度量值到啟動(dòng)元件對(duì)應(yīng)的PCR中,;
(6)被證明可信的元件把控制權(quán)轉(zhuǎn)交給啟動(dòng)元件,;
(7)平臺(tái)判斷被證明可信的元件是否為啟動(dòng)的最后一步,是則執(zhí)行下一步,,否則執(zhí)行第(3)步,;
(8)最后啟動(dòng)的元件調(diào)用TPM_unseal命令;
(9)TPM把相應(yīng)PCR中的當(dāng)前狀態(tài)值與已密封的值比較,,如果一致則安全啟動(dòng),,否則暫停啟動(dòng)。
2 實(shí)驗(yàn)平臺(tái)建立
2.1 硬件環(huán)境
可信嵌入式平臺(tái)硬件上由嵌入式微處理器CPU,、外圍設(shè)備以及可信芯片TPM組成,。
本設(shè)計(jì)實(shí)驗(yàn)硬件平臺(tái)選用嵌入式開(kāi)發(fā)板Beaglebone Black(BBB)。BBB使用主流的ARM CPU,,處理器為TI AM335X ARM Cortex A8,,1 GHz;存儲(chǔ)器是2 GB eMMC,,出于安全考慮,,擴(kuò)展了512 MB的Flash芯片存儲(chǔ)備份系統(tǒng)。
本設(shè)計(jì)TPM芯片采用Atmel公司的AT97SC3204T,。該芯片遵循TPM1.2規(guī)范,,內(nèi)置非對(duì)稱密鑰引擎RSA、隨機(jī)數(shù)發(fā)生器,、散列算法引擎SHA-1,、計(jì)算引擎HMAC等,通過(guò)TWI總線進(jìn)行通信,。TWI總線是I2C總線的繼承和發(fā)展,完全兼容I2C總線,。TPM接線電路設(shè)計(jì)如圖1所示,。
2.2 軟件環(huán)境
軟件設(shè)計(jì)總共分為四部分:引導(dǎo)加載程序(Bootloader)、linux內(nèi)核,、文件系統(tǒng)以及應(yīng)用程序,,本文主要說(shuō)明Bootloader方面的設(shè)計(jì)。Bootloader是系統(tǒng)上電后執(zhí)行的第一段程序,,其作用相當(dāng)于PC平臺(tái)上的BIOS,。一般的嵌入式系統(tǒng)啟動(dòng)流程如圖2所示[6]。
第一級(jí)Bootloader:引導(dǎo)加載程序(ROM),。系統(tǒng)上電或復(fù)位后,,CPU通常從某個(gè)固定地址讀取它的第一條指令,,ROM被映射安裝到這個(gè)地址上,ROM中存著一段代碼,,在這里稱為ROM-Code,,這段代碼執(zhí)行第一階段的啟動(dòng)任務(wù)。ROM-Code將在eMMC上讀取第一啟動(dòng)分區(qū),,接著掃描該分區(qū)根目錄,,在根目錄下尋找MLO文件,并將這個(gè)文件下載到片內(nèi)SRAM,,再把控制權(quán)移交MLO,。
第二級(jí)Bootloader:自舉程序MLO(X-loader)。MLO,、u-boot.img被燒寫(xiě)在eMMC的第一啟動(dòng)分區(qū)中,,上電后ROM-Code將體積較小的MLO搬至片內(nèi)SRAM中運(yùn)行,而運(yùn)行在SRAM中的MLO又初始化片外SDRAM,,并將eMMC中的u-boot.img下載至SDRAM,,控制權(quán)移交u-boot.img。
第三級(jí)Bootloader:u-boot(uboot.img),。它的任務(wù)是通過(guò)各種方式將內(nèi)核下載至SDRAM,,并傳遞一些內(nèi)核啟動(dòng)參數(shù)。u-boot的啟動(dòng)任務(wù)主要是為引導(dǎo)內(nèi)核準(zhǔn)備環(huán)境[7],。
3 可信鏈的建立
3.1 可信鏈建立
由于嵌入式的特殊性,,PC的可信鏈模型不適用于本平臺(tái)。嵌入式平臺(tái)的特殊性在于它是基于Linux的嵌入式平臺(tái),,是u-boot啟動(dòng),,而不是BIOS和Bootloader。
根據(jù)嵌入式平臺(tái)的啟動(dòng)流程及PC可信鏈建立的方法,,可以構(gòu)造出嵌入式的可信鏈:MLO(CRTM)→u-boot→(Linux)OS+tools→(Linux)Kernel→根文件系統(tǒng)加載,。
3.2 自恢復(fù)的可信啟動(dòng)設(shè)計(jì)
自恢復(fù)功能是嵌入式系統(tǒng)健壯性的體現(xiàn),在系統(tǒng)受到攻擊時(shí),,尤其是在操作系統(tǒng)或內(nèi)核受到破壞時(shí),,自恢復(fù)功能可以直接縮短嵌入式系統(tǒng)修復(fù)的周期。而傳統(tǒng)的系統(tǒng)恢復(fù)需要系統(tǒng)的正常加載,,依賴用戶級(jí)別的應(yīng)用來(lái)完成系統(tǒng)的還原,。本設(shè)計(jì)中的備份系統(tǒng)存儲(chǔ)于獨(dú)立的Flash芯片中,且受到TPM芯片的保護(hù),,防止被篡改,,保障了系統(tǒng)的純潔性。
根據(jù)系統(tǒng)啟動(dòng)過(guò)程,對(duì)其進(jìn)行相應(yīng)的優(yōu)化:先用SHA1對(duì)u-boot加密,,得到hash值,,然后將產(chǎn)生的hash值擴(kuò)展到相應(yīng)的PCR中,將MLO和u-boot.img密封,。在可信啟動(dòng)過(guò)程中,,首先從0x40000000讀取第一條指令并執(zhí)行ROM-Code,然后將從地址0x402f0400獲取的MLO用SHA-1進(jìn)行hash計(jì)算,,得到的hash值與原來(lái)的hash值比對(duì),,如果一致,則對(duì)已經(jīng)密封的MLO解封,。MLO從地址0x80000000獲取u-boot.img,,再將u-boot.img進(jìn)行hash計(jì)算,得到的hash值與保存的一致,,解封u-boot.img,,并由MLO執(zhí)行u-boot.img,u-boot.img被認(rèn)為是可信的,。同理,, u-boot從地址0x80008000獲取的內(nèi)核,再次對(duì)內(nèi)核進(jìn)行度量,,與預(yù)期值一致時(shí),,系統(tǒng)正常啟動(dòng),完成可信啟動(dòng)過(guò)程,。如果度量失敗,, u-boot直接從備用Flash的0x00000080開(kāi)始讀取鏡像文件,然后直接調(diào)用TCM對(duì)鏡像文件解封,,完成系統(tǒng)的恢復(fù)[8],。啟動(dòng)流程如圖3所示。
4 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)使用Beaglebone Black開(kāi)發(fā)板以及AT97SC3204T來(lái)驗(yàn)證本設(shè)計(jì)的可行性,。在內(nèi)核的編譯過(guò)程中,,加入對(duì)TPM芯片的支持,對(duì)/include/configs/am335x_evm.h文件進(jìn)行適配修改,,引入所需的頭文件,。
由于uboot直接加載默認(rèn)的鏡像文件,沒(méi)有與用戶交互的信息,,因此還需要更改uboot的啟動(dòng)腳本來(lái)實(shí)現(xiàn)用戶選擇默認(rèn)啟動(dòng)還是進(jìn)行系統(tǒng)恢復(fù)。編寫(xiě)uboot/common下的ubootmenu.c文件,,設(shè)置uboot自啟動(dòng)參數(shù)為ubootmenu命令,,設(shè)置uboot啟動(dòng)延時(shí)3 s,在ubootmenu命令中加入2個(gè)選項(xiàng),默認(rèn)選項(xiàng)為加載默認(rèn)鏡像,,第二個(gè)選項(xiàng)為還原系統(tǒng),。在此過(guò)程中,由于TPM驅(qū)動(dòng)還沒(méi)有加載,,需要直接調(diào)用TPM的指令碼來(lái)實(shí)現(xiàn)操作,。
在Flash燒寫(xiě)完成后,重新啟動(dòng)BBB,,通過(guò)串口查看輸出,,如圖4所示,BBB可以完成可信引導(dǎo)過(guò)程,,從上電到系統(tǒng)引導(dǎo)完成總計(jì)用時(shí)19.49 s,,而原系統(tǒng)引導(dǎo)用時(shí)約為14 s。除去由于之前設(shè)置的3 s的u-boot等待時(shí)間,,引導(dǎo)時(shí)間延長(zhǎng)了17.8%,。
當(dāng)內(nèi)核被篡改或者其他原因?qū)е虏僮飨到y(tǒng)受到損壞時(shí),可以直接通過(guò)uboot的交互菜單完成系統(tǒng)恢復(fù)的操作,,總計(jì)用時(shí)4分24秒,,過(guò)程如圖5。
本文通過(guò)研究可信計(jì)算技術(shù),,結(jié)合BBB和TPM可信模塊,,驗(yàn)證了可信鏈和可信啟動(dòng)在嵌入式平臺(tái)上的應(yīng)用,可信引導(dǎo)過(guò)程相比普通引導(dǎo)過(guò)程多用時(shí)15%~20%,,在系統(tǒng)啟動(dòng)后基本沒(méi)有性能上的影響,。在u-boot上實(shí)現(xiàn)了系統(tǒng)的可信恢復(fù),操作簡(jiǎn)單便捷,。實(shí)驗(yàn)表明,,本研究的內(nèi)容很容易移植到其他嵌入式平臺(tái)。
參考文獻(xiàn)
[1] 馮登國(guó),,秦宇,,汪丹,等.可信計(jì)算技術(shù)研究[J].計(jì)算機(jī)研究與發(fā)展,,2011,,48(8):1332-1349.
[2] 張煥國(guó),李晶,,潘丹玲,,等.嵌入式系統(tǒng)可信平臺(tái)模塊研究[J].計(jì)算機(jī)研究與發(fā)展,2011(7):1269-1278.
[3] 王天舒,,張功萱,,楊曦晨,等.嵌入式系統(tǒng)可信啟動(dòng)機(jī)制設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2015,,23(4):1364-1366.
[4] Trusted Computing Group.TPM main part 1 design principles specification version1.2 revision116[EB/OL].[2013-11-13].http://www.trustedcomputinggroup.org.
[5] David Challener,,Kent Yoder,Ryan Catherman,,et al.可信計(jì)算[M].北京:機(jī)械工業(yè)出版社,,2008.
[6] OMAPpedia.Bootloader project.[EB/OL](2012-4-3)[2016-3-10].http://omappedt.
[7] Song Cheng,Peng Weiping,,Xin Yang,,et al.Seal-based secure boot scheme for trusted computing platform[J].Elsevier,2010,,17(2):16-21.
[8] Beaglebone.org.X-loader[S/OL].(2008-8-17)[2016-3-10].http://beagleboard.org/project/X-Loader/.
作者信息:
孫 鉑1,,2,溫旭霞1,,2,,宮樹(shù)紅3,劉新生4
(1.中北大學(xué) 儀器與電子學(xué)院,,山西 太原030051,;2.山西百信信息技術(shù)有限公司,山西 太原030006,;
3.首鋼長(zhǎng)治鋼鐵有限公司,,山西 長(zhǎng)治046031;4.江蘇曙光光電有限公司,,江蘇 揚(yáng)州225009)