《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種具有自恢復(fù)功能的嵌入式可信平臺(tái)的設(shè)計(jì)
一種具有自恢復(fù)功能的嵌入式可信平臺(tái)的設(shè)計(jì)
2017年電子技術(shù)應(yīng)用第5期
孫 鉑1,2,溫旭霞1,2,宮樹紅3,劉新生4
1.中北大學(xué) 儀器與電子學(xué)院,山西 太原030051;2.山西百信信息技術(shù)有限公司,山西 太原030006; 3.首鋼長治鋼鐵有限公司,山西 長治046031;4.江蘇曙光光電有限公司,江蘇 揚(yáng)州225009
摘要: 以TCG規(guī)范為基礎(chǔ),分析和討論了可信鏈技術(shù)和安全啟動(dòng)過程,構(gòu)造出一種適用于嵌入式平臺(tái)的可信鏈模型以及具有自恢復(fù)功能的可信啟動(dòng)實(shí)現(xiàn)方法。在Beaglebone開發(fā)板上進(jìn)行了相關(guān)實(shí)驗(yàn),驗(yàn)證了其可行性,并作出了總結(jié)。
中圖分類號(hào): TN918
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.05.018
中文引用格式: 孫鉑,溫旭霞,宮樹紅,等. 一種具有自恢復(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.
Design of an embedded trusted platform with self-recovery function
Sun Bo1,2,Wen Xuxia1,2,Gong Shuhong3,Liu Xinsheng4
1.School of Instrument and Electronics,North University of China,Taiyuan 030051,China; 2.Shanxi Baixin Information Technology Co.,Ltd,Taiyuan 030006,China; 3.Shougang Changzhi Iron&Steel Co.,Ltd,Changzhi 046031,China; 4.Jiangsu Shuguang Photoelectrical Co.,Ltd,Yangzhou 225009,China
Abstract: This paper analyzes and discusses trusted chain technology and security boot process based on the TCG specifications, then constructs a trusted chain model suitable for embedded platform and a trusted boot implementation method with self-recovery function.Finally, some experiments are carried out on Beaglebone development board to verify its feasibility and make a conclusion.
Key words : trusted platform;self-recovery;embedded system;trusted boot

0 引言

    嵌入式系統(tǒng)目前已在國防、國民經(jīng)濟(jì)及社會(huì)生活各領(lǐng)域普及,應(yīng)用于企業(yè)、軍隊(duì)、辦公室、實(shí)驗(yàn)室以及個(gè)人家庭等各種場所。然而,2014年??低暤拇罅繑?shù)碼錄像機(jī)設(shè)備被曝存在遠(yuǎn)程代碼執(zhí)行漏洞,黑客可以由此直接獲取設(shè)備最高權(quán)限。2015年末,烏克蘭國家電網(wǎng)遭到網(wǎng)絡(luò)攻擊,伊萬諾一弗蘭科夫斯克地區(qū)部分變電站的控制系統(tǒng)遭到破壞,造成大面積停電,約140萬人受到影響。嵌入式平臺(tái)安全至關(guān)重要,將可信計(jì)算技術(shù)引入到嵌入式設(shè)備上來,是一種可行且高效的安全防護(hù)方法[1]。文獻(xiàn)[2]對于嵌入式系統(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)方式主要通過以TPM為可信根的可信度量來實(shí)現(xiàn)[4]。

1.1 可信鏈技術(shù)

    完整性度量是可信啟動(dòng)的關(guān)鍵,為了實(shí)現(xiàn)完整性度量,可信計(jì)算組織TCG提出了可信鏈技術(shù)??尚沛湹慕⒅苯雨P(guān)系到可信平臺(tái)的正常運(yùn)行。

    根據(jù)可信計(jì)算的思想,可信鏈的實(shí)現(xiàn)是從可信度量根RTM開始,到硬件平臺(tái),再到操作系統(tǒng)以及上層應(yīng)用,一級度量一級,一級信任一級。

    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的一段固定的可信代碼開始,在把控制權(quán)交給下一段代碼之前,這段可信代碼會(huì)去度量下一段將要執(zhí)行的代碼,并將度量結(jié)果擴(kuò)展到平臺(tái)配置寄存器(Platform Configuration Register,PCR)中。如果每一段新的代碼在移交控制權(quán)之前都去度量下一段代碼,就可以建立起可信鏈,如果度量貫穿整個(gè)啟動(dòng)過程,最終的PCR值就反應(yīng)了所有度量對象的度量值。PCR擴(kuò)展操作基于SHA-1的散列算法,從密碼學(xué)角度來說,該算法足夠強(qiáng)大,對于惡意代碼來說,通過計(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)過程中的軟件被篡改,那么最后得到PCR值就會(huì)不同,這時(shí)TPM就會(huì)拒絕通過這些不可信的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請求的發(fā)起者,規(guī)范定義了5種不同的Locality,如表1所示。其中第一個(gè)PCR值記錄了BIOS的度量信息,該信息是由SRTM度量后得到的不可變信息,此時(shí)BIOS獲得控制權(quán)。

qrs5-b1.gif

    可信啟動(dòng)的核心是完整性度量,從建立可信根開始,度量每個(gè)模塊的完整性值同期望的完整性值比較,進(jìn)而維護(hù)這個(gè)模塊完整性。完整性值通常是一個(gè)hash值,如果任何模塊發(fā)生改變,其hash值也會(huì)發(fā)生改變,從而知道出現(xiàn)問題。通過這種方法保護(hù)已經(jīng)建立PCR保護(hù)的模塊。

1.2 可信啟動(dòng)技術(shù)

    啟動(dòng)是指系統(tǒng)從上電開始到各部件復(fù)位待命的全過程,系統(tǒng)的初始狀態(tài)是否可信對于其安全性至關(guān)重要,因此可信啟動(dòng)對可信平臺(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)過程設(shè)計(jì)步驟如下:

    (1)平臺(tái)上電;

    (2)CRTM啟動(dòng),然后度量其本身并將度量值擴(kuò)展到相應(yīng)的PCR中;

    (3)CRTM請求TPM_unseal命令;

    (4)TPM將相應(yīng)PCR中現(xiàn)在狀態(tài)的值與已密封的值進(jìn)行比較,如果一致,執(zhí)行下一步;如果不一致,暫停啟動(dòng);

    (5)被證明可信的元件進(jìn)行度量,隨后啟動(dòng)元件,并擴(kuò)展度量值到啟動(dòng)元件對應(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)選用嵌入式開發(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)置非對稱密鑰引擎RSA、隨機(jī)數(shù)發(fā)生器、散列算法引擎SHA-1、計(jì)算引擎HMAC等,通過TWI總線進(jìn)行通信。TWI總線是I2C總線的繼承和發(fā)展,完全兼容I2C總線。TPM接線電路設(shè)計(jì)如圖1所示。

qrs5-t1.gif

2.2 軟件環(huán)境

    軟件設(shè)計(jì)總共分為四部分:引導(dǎo)加載程序(Bootloader)、linux內(nèi)核、文件系統(tǒng)以及應(yīng)用程序,本文主要說明Bootloader方面的設(shè)計(jì)。Bootloader是系統(tǒng)上電后執(zhí)行的第一段程序,其作用相當(dāng)于PC平臺(tái)上的BIOS。一般的嵌入式系統(tǒng)啟動(dòng)流程如圖2所示[6]。

qrs5-t2.gif

    第一級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。

    第二級Bootloader:自舉程序MLO(X-loader)。MLO、u-boot.img被燒寫在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。

    第三級Bootloader:u-boot(uboot.img)。它的任務(wù)是通過各種方式將內(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)的正常加載,依賴用戶級別的應(yīng)用來完成系統(tǒng)的還原。本設(shè)計(jì)中的備份系統(tǒng)存儲(chǔ)于獨(dú)立的Flash芯片中,且受到TPM芯片的保護(hù),防止被篡改,保障了系統(tǒng)的純潔性。

    根據(jù)系統(tǒng)啟動(dòng)過程,對其進(jìn)行相應(yīng)的優(yōu)化:先用SHA1對u-boot加密,得到hash值,然后將產(chǎn)生的hash值擴(kuò)展到相應(yīng)的PCR中,將MLO和u-boot.img密封。在可信啟動(dòng)過程中,首先從0x40000000讀取第一條指令并執(zhí)行ROM-Code,然后將從地址0x402f0400獲取的MLO用SHA-1進(jìn)行hash計(jì)算,得到的hash值與原來的hash值比對,如果一致,則對已經(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)核,再次對內(nèi)核進(jìn)行度量,與預(yù)期值一致時(shí),系統(tǒng)正常啟動(dòng),完成可信啟動(dòng)過程。如果度量失敗, u-boot直接從備用Flash的0x00000080開始讀取鏡像文件,然后直接調(diào)用TCM對鏡像文件解封,完成系統(tǒng)的恢復(fù)[8]。啟動(dòng)流程如圖3所示。

qrs5-t3.gif

4 實(shí)驗(yàn)結(jié)果與分析

    實(shí)驗(yàn)使用Beaglebone Black開發(fā)板以及AT97SC3204T來驗(yàn)證本設(shè)計(jì)的可行性。在內(nèi)核的編譯過程中,加入對TPM芯片的支持,對/include/configs/am335x_evm.h文件進(jìn)行適配修改,引入所需的頭文件。

    由于uboot直接加載默認(rèn)的鏡像文件,沒有與用戶交互的信息,因此還需要更改uboot的啟動(dòng)腳本來實(shí)現(xiàn)用戶選擇默認(rèn)啟動(dòng)還是進(jìn)行系統(tǒng)恢復(fù)。編寫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)。在此過程中,由于TPM驅(qū)動(dòng)還沒有加載,需要直接調(diào)用TPM的指令碼來實(shí)現(xiàn)操作。

    在Flash燒寫完成后,重新啟動(dòng)BBB,通過串口查看輸出,如圖4所示,BBB可以完成可信引導(dǎo)過程,從上電到系統(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í)間延長了17.8%。

qrs5-t4.gif

    當(dāng)內(nèi)核被篡改或者其他原因?qū)е虏僮飨到y(tǒng)受到損壞時(shí),可以直接通過uboot的交互菜單完成系統(tǒng)恢復(fù)的操作,總計(jì)用時(shí)4分24秒,過程如圖5。

qrs5-t5.gif

    本文通過研究可信計(jì)算技術(shù),結(jié)合BBB和TPM可信模塊,驗(yàn)證了可信鏈和可信啟動(dòng)在嵌入式平臺(tái)上的應(yīng)用,可信引導(dǎo)過程相比普通引導(dǎo)過程多用時(shí)15%~20%,在系統(tǒng)啟動(dòng)后基本沒有性能上的影響。在u-boot上實(shí)現(xiàn)了系統(tǒng)的可信恢復(fù),操作簡單便捷。實(shí)驗(yàn)表明,本研究的內(nèi)容很容易移植到其他嵌入式平臺(tái)。

參考文獻(xiàn)

[1] 馮登國,秦宇,汪丹,等.可信計(jì)算技術(shù)研究[J].計(jì)算機(jī)研究與發(fā)展,2011,48(8):1332-1349.

[2] 張煥國,李晶,潘丹玲,等.嵌入式系統(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ī)測量與控制,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,宮樹紅3,劉新生4

(1.中北大學(xué) 儀器與電子學(xué)院,山西 太原030051;2.山西百信信息技術(shù)有限公司,山西 太原030006;

3.首鋼長治鋼鐵有限公司,山西 長治046031;4.江蘇曙光光電有限公司,江蘇 揚(yáng)州225009)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。