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