《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 可信計算在服務(wù)器基板管理控制器中的應(yīng)用
可信計算在服務(wù)器基板管理控制器中的應(yīng)用
2018年電子技術(shù)應(yīng)用第5期
蘇振宇
浪潮集團(tuán)高效能服務(wù)器和存儲技術(shù)國家重點實驗室,山東 濟(jì)南250101
摘要: 研究了可信計算技術(shù)在服務(wù)器基板管理控制器(BMC)中的應(yīng)用,利用BMC和國產(chǎn)可信密碼模塊(TCM)作為信任根,在服務(wù)器上電啟動過程中實現(xiàn)了對自主研發(fā)的BMC板卡固件的可信引導(dǎo),對BIOS的主動度量,構(gòu)建了完整的信任鏈?;贐MC板卡開發(fā)了FPGA控制TCM的邏輯,并開發(fā)了U-Boot可信功能軟件。結(jié)果表明,在信任鏈構(gòu)建過程中可以有效防止固件被惡意篡改,從而為系統(tǒng)平臺構(gòu)建了安全可信的環(huán)境。
中圖分類號: TP309
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.174325
中文引用格式: 蘇振宇. 可信計算在服務(wù)器基板管理控制器中的應(yīng)用[J].電子技術(shù)應(yīng)用,2018,44(5):48-51.
英文引用格式: Su Zhenyu. The application of trusted computing technology on baseboard management controller platform[J]. App-
lication of Electronic Technique,2018,44(5):48-51.
The application of trusted computing technology on baseboard management controller platform
Su Zhenyu
National Key Laboratory for High-efficient Server and Storage Technology,INSPUR Co.,Ltd.,Jinan 250101,China
Abstract: This paper researches the application of trusted computing technology on baseboard management controller(BMC) which is important firmware in server. As the trust root of system, BMC and trusted cryptography module(TCM) can measure the firmware of domestic BMC and basic input output system(BIOS) during the boot of server, and the complete trust chain is built finally. In order to communicate with TCM, the logic of the FPGA on the BMC board is designed. Besides, the trusted software is developed in U-Boot. The results show that when the trust chain is built, it can detect if the firmware has been maliciously tampered, so the security and trusted environment of the server is established.
Key words : trusted computing;baseboard management controller(BMC);trusted cryptography module(TCM);trust chain;U-Boot

0 引言

    基板管理控制器(Baseboard Management Controller,BMC)是服務(wù)器的重要單元,其利用虛擬的鍵盤、界面、鼠標(biāo)、電源等為服務(wù)器提供遠(yuǎn)程管理功能[1],用戶登錄BMC的Web管理界面監(jiān)視服務(wù)器的物理特征,如主板各部件的溫度、電壓、電源供應(yīng)以及機(jī)箱入侵等。BMC本質(zhì)上是一個嵌入式系統(tǒng),在使用過程中會面臨程序完整性被破壞、操作系統(tǒng)被攻擊、Web應(yīng)用被植入惡意代碼等安全風(fēng)險。此外,目前國內(nèi)的服務(wù)器普遍采用國外的BMC芯片,如ASPEED系列的AST2400、AST2500型號,安全性未知,核心技術(shù)受制于人。因此,本文基于自主研發(fā)的BMC模塊,研究了BMC的可信啟動技術(shù)并且成功地進(jìn)行了應(yīng)用。

1 信任鏈構(gòu)建

    自主研發(fā)的BMC板卡以現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)為控制核心,以國產(chǎn)的可信密碼模塊(Trusted Cryptography Module,TCM)作為信任根,實現(xiàn)了BMC的可信引導(dǎo),對服務(wù)器平臺的模塊逐級進(jìn)行度量,最終構(gòu)建起完整的信任鏈[2]

    信任鏈模型如圖1所示,信任的建立過程如下:

qrs2-t1.gif

    (1)BootROM:系統(tǒng)上電后執(zhí)行的第一段代碼,用于初始化相應(yīng)的硬件模塊。由于BootROM位于FPGA的片內(nèi)ROM中,外界無法更改,因此默認(rèn)BootROM是可信的[3]。BootROM運(yùn)行之后把位于片外SD卡的Preloader鏡像加載到FPGA片內(nèi)RAM執(zhí)行,控制權(quán)交給Preloader[4]

    (2)Preloader:基于SPL架構(gòu)的引導(dǎo)程序,初始化SDRAM、PLL、IO接口等硬件,屬于U-Boot的一部分,與U-Boot共享大部分的驅(qū)動代碼,設(shè)計的TCM驅(qū)動可被Preloader與U-Boot共同使用。Preloader把U-Boot鏡像由SD卡加載到SDRAM并對鏡像進(jìn)行度量,之后控制權(quán)交給U-Boot。

    (3)U-Boot:初始化操作系統(tǒng)環(huán)境,在U-Boot中設(shè)計了TCM驅(qū)動與度量程序,對設(shè)備樹鏡像(Flattened Device Tree,F(xiàn)DT)、文件系統(tǒng)Ramdisk鏡像以及Linux內(nèi)核zImage鏡像進(jìn)行度量,之后把Linux內(nèi)核鏡像由SD卡加載到SDRAM,控制權(quán)交給Linux。

    (4)Linux Kernel:在嵌入式Linux中實現(xiàn)了內(nèi)核層的TCM驅(qū)動以及度量程序,度量系統(tǒng)BIOS的啟動代碼Boot Block后,控制權(quán)交給BIOS。

    (5)BIOS:對服務(wù)器主板的模塊(如Option ROMs、MBR等)進(jìn)行逐級度量,直到服務(wù)器操作系統(tǒng)啟動,從而構(gòu)建了完整的信任鏈。

    在信任鏈建立過程中,度量值采用擴(kuò)展操作的方式記錄到TCM的平臺配置寄存器(Platform Configuration Register,PCR)[5],具體是:PCR[ni+1]=SM3(PCR[ni]||被度量模塊)(i=0,1,2,…)[6]。即調(diào)用TCM的SM3算法對某一模塊進(jìn)行雜湊運(yùn)算,生成32 B的數(shù)據(jù)作為摘要值,存儲于PCR;之后調(diào)用SM3算法對PCR與被度量模塊拼接后的數(shù)據(jù)進(jìn)行雜湊運(yùn)算,生成新的32 B摘要值更新到PCR。若某一模塊確認(rèn)不可信,即不滿足完整性要求,信任鏈中斷,服務(wù)器不會啟動。

2 系統(tǒng)架構(gòu)設(shè)計

    服務(wù)器主板的硬件架構(gòu)如圖2所示,虛線框內(nèi)為BMC板卡,BMC通過LPC(Low Pin Count)總線掛接到南橋上,作為從設(shè)備接受南橋的調(diào)度;通過SPI總線與BIOS連接,讀取BIOS的資產(chǎn)信息;通過IIC總線與復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)連接,向CPLD發(fā)送命令對主板的上電時序進(jìn)行控制。BMC板卡以FPGA為控制核心,采用的是Cyclone V系列帶有ARM Cortex-A9處理器的5CSXFC6D6F31芯片。Cyclone V系列的FPGA設(shè)計過程結(jié)合了ARM嵌入式開發(fā)與電子設(shè)計自動化EDA的開發(fā)方式,十分靈活。

qrs2-t2.gif

    FPGA的外設(shè)包括SDRAM、QSPI Flash、SD卡、RTC等。其中SD卡用于存儲U-Boot、Linux、文件系統(tǒng)的鏡像,SDRAM作為BMC的內(nèi)存,ARM將鏡像搬移到執(zhí)行速度快的SDRAM中執(zhí)行。QSPI Flash是非易失性存儲器,在開發(fā)階段為了調(diào)試的方便,將鏡像文件暫時存儲在SD卡中,便于利用讀卡器對編譯出的不同鏡像反復(fù)寫入SD卡,在產(chǎn)品化階段出于安全性考慮,將最終的鏡像文件固化于QSPI Flash,使鏡像不易被惡意篡改。實時時鐘RTC用于記錄度量時間。

    采用國產(chǎn)TCM作為服務(wù)器的物理信任根,TCM包括對稱算法、非對稱算法、雜湊算法等密碼功能單元,存儲度量值的PCR寄存器,非易失性存儲空間NVRAM等。為便于進(jìn)行設(shè)計,采用了SPI總線接口的TCM模塊與FPGA進(jìn)行通信,在FPGA中設(shè)計了狀態(tài)機(jī)對TCM進(jìn)行控制,BMC通過調(diào)用TCM的API接口實現(xiàn)對服務(wù)器啟動過程中模塊的度量。

3 關(guān)鍵模塊設(shè)計

3.1 TCM控制器

    位于BMC的TCM控制器采用狀態(tài)機(jī)模型,通過SPI接口與TCM進(jìn)行交互,實現(xiàn)BMC對TCM的讀寫操作。圖3是TCM控制器與TCM模塊的接口圖,TCM控制器采用了Verilog語言設(shè)計,通過AMBA總線連接到ARM處理器。

qrs2-t3.gif

    在實際工作過程中,ARM通過發(fā)送命令字和數(shù)據(jù)包操作TCM,例如初始化操作、加解密操作等[7],TCM根據(jù)命令進(jìn)行操作,運(yùn)算完成后的數(shù)據(jù)再由ARM讀取。

    該TCM控制器包括3個寄存器和1個RAM區(qū),具體功能如下:

    (1)命令寄存器:存放操作TCM的不同命令字,例如TCM初始化、自檢、讀寫PCR寄存器、加解密等命令字。

    (2)長度寄存器:存放參與運(yùn)算的數(shù)據(jù)長度,單位為字節(jié)。

    (3)控制寄存器:包括START位和FINISH_FLAG位,START位置1表示啟動TCM控制器開始工作,清0表示停止TCM控制器工作;FINISH_FLAG置1表示下達(dá)的命令操作完成,清0表示操作未完成。

    (4)RAM區(qū):長度為1 KB,作為數(shù)據(jù)的緩存。

    圖4是TCM控制器工作的狀態(tài)機(jī)轉(zhuǎn)移圖,包括空閑狀態(tài)IDLE、開始狀態(tài)BEGIN、寫命令字狀態(tài)WR_CMD、寫長度狀態(tài)WR_LEN、寫數(shù)據(jù)狀態(tài)WR_DATA、等待狀態(tài)WAIT、讀數(shù)據(jù)狀態(tài)RD_DATA和完成狀態(tài)FINISH。狀態(tài)機(jī)的具體工作過程如下:

    (1)系統(tǒng)上電復(fù)位后TCM控制器進(jìn)入IDLE狀態(tài),等待ARM處理器下達(dá)指令。當(dāng)ARM設(shè)置控制寄存器的START位為1后,啟動狀態(tài)機(jī),進(jìn)入BEGIN狀態(tài);

    (2)在BEGIN狀態(tài),TCM控制器使SCLK、SDO與SDI信號同步,之后進(jìn)入WR_CMD狀態(tài);

    (3)在WR_CMD狀態(tài),TCM控制器向命令寄存器寫入操作TCM的命令字,之后進(jìn)入WR_LEN狀態(tài);

    (4)在WR_LEN狀態(tài),TCM控制器向長度寄存器寫入?yún)⑴c命令運(yùn)算的數(shù)據(jù)長度,單位為字節(jié),之后進(jìn)入WR_DATA狀態(tài);

    (5)在WR_DATA狀態(tài),TCM控制器根據(jù)數(shù)據(jù)長度把參與運(yùn)算的具體數(shù)據(jù)依次寫入RAM區(qū),之后進(jìn)入WAIT狀態(tài);

    (6)在WAIT狀態(tài),TCM控制器根據(jù)設(shè)置的延時參數(shù),等待TCM運(yùn)算完成,之后進(jìn)入RD_DATA狀態(tài);

    (7)在RD_DATA狀態(tài),TCM控制器讀取TCM運(yùn)算完成的數(shù)據(jù),把數(shù)據(jù)寫回RAM區(qū),之后進(jìn)入FINISH狀態(tài);

    (8)在FINISH狀態(tài),TCM控制器清除控制寄存器的START位為0,并設(shè)置完成標(biāo)志位FINISH_FLAG為1,之后由ARM處理器接管控制權(quán),ARM處理器可以再次啟動狀態(tài)機(jī),向TCM發(fā)送其他的命令字及數(shù)據(jù),過程同步驟(3)~(8)。

qrs2-t4.gif

3.2 U-Boot度量模塊

    在BMC引導(dǎo)加載Linux過程中需要對內(nèi)核zImage鏡像、文件系統(tǒng)Ramdisk鏡像和設(shè)備樹FDT鏡像進(jìn)行度量,以此作為BMC固件完整性判斷的依據(jù),SD卡存儲的鏡像文件結(jié)構(gòu)如圖5所示,設(shè)計的U-Boot可信啟動控制過程具體如下:

qrs2-t5.gif

    (1)BMC板卡上電,U-Boot進(jìn)行初始化后開始引導(dǎo)過程,把位于SD卡中的zImage鏡像加載到U-Boot指定的內(nèi)存地址。

    (2)設(shè)置標(biāo)志位first_boot_flag作為BMC第一次啟動的標(biāo)識,當(dāng)BMC第一次啟動,即first_boot_flag為1時需要進(jìn)行基準(zhǔn)值的收集,調(diào)用TCM的SM3算法對zImage鏡像的內(nèi)核頭信息和鏡像長度進(jìn)行雜湊運(yùn)算,把生成的摘要值寫入TCM的PCR寄存器。

    (3)對Ramdisk鏡像進(jìn)行度量,把鏡像從SD卡搬移到內(nèi)存,調(diào)用SM3算法對Ramdisk鏡像的頭信息和鏡像長度進(jìn)行雜湊運(yùn)算,把生成的摘要值擴(kuò)展存儲到PCR。

    (4)對設(shè)備樹FDT鏡像進(jìn)行度量,把鏡像從SD卡搬移到內(nèi)存,調(diào)用SM3算法對FDT鏡像的頭信息和鏡像大小進(jìn)行雜湊運(yùn)算,把生成的摘要值擴(kuò)展存儲到PCR,此時PCR存儲的就是基準(zhǔn)值,之后U-Boot讀取RTC時鐘并記錄日志。

    (5)當(dāng)BMC不是第一次啟動,即first_boot_flag標(biāo)識為0時,在U-Boot啟動時需要對zImage、Ramdisk和FDT鏡像進(jìn)行度量,以此判斷鏡像的完整性。具體獲取度量值的過程與步驟(2)~(4)獲取基準(zhǔn)值的過程一致。

    (6)U-Boot將度量值與PCR存儲的基準(zhǔn)值進(jìn)行比對,當(dāng)比對一致時,說明BMC固件是完整和可信的,設(shè)置可信標(biāo)志位trust_flag為1,讀取RTC時間并記錄日志,之后進(jìn)行內(nèi)核的解壓和系統(tǒng)的加載。當(dāng)度量值與基準(zhǔn)值比對不一致時,說明鏡像的完整性受到了破壞,此時設(shè)置標(biāo)志位trust_flag為0,提示不可信的信息并記錄日志,信任鏈構(gòu)建過程被終止,需要由BMC管理員進(jìn)行操作。

    (7)當(dāng)需要更新基準(zhǔn)值時,重新對zImage、Ramdisk與FDT鏡像進(jìn)行度量,度量摘要更新至PCR,覆蓋之前的基準(zhǔn)值。

4 安全性分析

    在安全性方面,通過自主研發(fā)的BMC板卡代替了國外的BMC產(chǎn)品,杜絕了使用國外芯片存在的安全隱患。基于BMC板卡,開發(fā)了FPGA控制TCM的邏輯、U-Boot與Linux的可信功能軟件,實現(xiàn)了對BMC的可信引導(dǎo)和BIOS Boot Block的主動度量,同時通過TCM的密碼服務(wù)為上層應(yīng)用及訪問者提供了驗證平臺可信的方法[8]。另外基于BMC Web管理界面實現(xiàn)了可信功能的呈現(xiàn),通過BMC控制CPLD的方式實現(xiàn)了對主板上電時序的控制。利用以上安全措施,為系統(tǒng)平臺構(gòu)建了安全可信的操作環(huán)境。

    服務(wù)器的可信啟動過程為:

    (1)接通服務(wù)器電源,BMC與TCM先上電啟動。

    (2)BMC向CPLD發(fā)送命令,由CPLD控制主板電源電壓,不給CPU上電。

    (3)進(jìn)行BMC固件的可信引導(dǎo),當(dāng)判定BMC可信后進(jìn)行BIOS的主動度量;否則,進(jìn)入BMC Web管理界面進(jìn)行異常處理,此時CPU不會上電。

    (4)進(jìn)行BIOS的主動度量,當(dāng)判定BIOS Boot Block可信后,BMC通過CPLD控制CPU上電,之后由BIOS接管控制權(quán),進(jìn)行主板模塊的度量;否則,進(jìn)入BMC Web進(jìn)行異常處理,此時CPU不會上電。

    表1是測試數(shù)據(jù),測試了BMC與BIOS的基準(zhǔn)值、度量值以及固件經(jīng)篡改后的異常值。當(dāng)度量值與基準(zhǔn)值一致時,BMC Web管理界面中的可信狀態(tài)燈顯示綠色,否則可信狀態(tài)燈顯示紅色。在Web界面可以進(jìn)行可信功能開啟、基準(zhǔn)值更新、特權(quán)啟動、查看日志等操作。

qrs2-b1.gif

5 結(jié)論

    本文研究了可信計算技術(shù)在BMC中的應(yīng)用,基于國產(chǎn)BMC板卡和TCM設(shè)計實現(xiàn)了BMC固件的可信引導(dǎo)和BIOS的主動度量,實現(xiàn)了服務(wù)器的可信啟動控制。研究成果已應(yīng)用于北京科委項目,有廣闊的應(yīng)用前景。

參考文獻(xiàn)

[1] Intel Inc.Intelligent platform management interface specification V2.0[Z].2013-10-01.

[2] 周驊,劉橋.動態(tài)可信度量分析的硬件安全機(jī)制研究[J].電子技術(shù)應(yīng)用,2015,41(1):115-121.

[3] 趙波,費(fèi)永康,向騻,等.嵌入式系統(tǒng)的安全啟動機(jī)制研究與實現(xiàn)[J].計算機(jī)工程與應(yīng)用,2014,50(10):72-77.

[4] Foswiki.Booting from FPGA[EB/OL].[2017-10-18].https://rocketboards.org/foswiki/Documentation/BootFromFPGA140.

[5] Trusted Computing Group.Trusted platform module library part1:architecture[EB/OL].(2014-3-13)[2017-10-18].http://www.trustedcomputinggroup.org/tpm-main-specification/.

[6] 馮登國.可信計算—理論與實踐[M].北京:清華大學(xué)出版社,2013.

[7] 國民技術(shù)有限公司.Z32H320TC trusted cryptography module datasheet[Z].2014.

[8] 張伶俐,張功萱,王天舒,等.嵌入式系統(tǒng)可信虛擬化技術(shù)的研究與應(yīng)用[J].計算機(jī)工程與科學(xué),2016,38(8):1654-1660.



作者信息:

蘇振宇

(浪潮集團(tuán)高效能服務(wù)器和存儲技術(shù)國家重點實驗室,山東 濟(jì)南250101)

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