《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 可信計算在服務器基板管理控制器中的應用
可信計算在服務器基板管理控制器中的應用
2018年電子技術應用第5期
蘇振宇
浪潮集團高效能服務器和存儲技術國家重點實驗室,山東 濟南250101
摘要: 研究了可信計算技術在服務器基板管理控制器(BMC)中的應用,利用BMC和國產可信密碼模塊(TCM)作為信任根,在服務器上電啟動過程中實現了對自主研發的BMC板卡固件的可信引導,對BIOS的主動度量,構建了完整的信任鏈。基于BMC板卡開發了FPGA控制TCM的邏輯,并開發了U-Boot可信功能軟件。結果表明,在信任鏈構建過程中可以有效防止固件被惡意篡改,從而為系統平臺構建了安全可信的環境。
中圖分類號: TP309
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.174325
中文引用格式: 蘇振宇. 可信計算在服務器基板管理控制器中的應用[J].電子技術應用,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)是服務器的重要單元,其利用虛擬的鍵盤、界面、鼠標、電源等為服務器提供遠程管理功能[1],用戶登錄BMC的Web管理界面監視服務器的物理特征,如主板各部件的溫度、電壓、電源供應以及機箱入侵等。BMC本質上是一個嵌入式系統,在使用過程中會面臨程序完整性被破壞、操作系統被攻擊、Web應用被植入惡意代碼等安全風險。此外,目前國內的服務器普遍采用國外的BMC芯片,如ASPEED系列的AST2400、AST2500型號,安全性未知,核心技術受制于人。因此,本文基于自主研發的BMC模塊,研究了BMC的可信啟動技術并且成功地進行了應用。

1 信任鏈構建

    自主研發的BMC板卡以現場可編程門陣列(Field Programmable Gate Array,FPGA)為控制核心,以國產的可信密碼模塊(Trusted Cryptography Module,TCM)作為信任根,實現了BMC的可信引導,對服務器平臺的模塊逐級進行度量,最終構建起完整的信任鏈[2]

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

qrs2-t1.gif

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

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

    (3)U-Boot:初始化操作系統環境,在U-Boot中設計了TCM驅動與度量程序,對設備樹鏡像(Flattened Device Tree,FDT)、文件系統Ramdisk鏡像以及Linux內核zImage鏡像進行度量,之后把Linux內核鏡像由SD卡加載到SDRAM,控制權交給Linux。

    (4)Linux Kernel:在嵌入式Linux中實現了內核層的TCM驅動以及度量程序,度量系統BIOS的啟動代碼Boot Block后,控制權交給BIOS。

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

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

2 系統架構設計

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

qrs2-t2.gif

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

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

3 關鍵模塊設計

3.1 TCM控制器

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

qrs2-t3.gif

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

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

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

    (2)長度寄存器:存放參與運算的數據長度,單位為字節。

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

    (4)RAM區:長度為1 KB,作為數據的緩存。

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

    (1)系統上電復位后TCM控制器進入IDLE狀態,等待ARM處理器下達指令。當ARM設置控制寄存器的START位為1后,啟動狀態機,進入BEGIN狀態;

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

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

    (4)在WR_LEN狀態,TCM控制器向長度寄存器寫入參與命令運算的數據長度,單位為字節,之后進入WR_DATA狀態;

    (5)在WR_DATA狀態,TCM控制器根據數據長度把參與運算的具體數據依次寫入RAM區,之后進入WAIT狀態;

    (6)在WAIT狀態,TCM控制器根據設置的延時參數,等待TCM運算完成,之后進入RD_DATA狀態;

    (7)在RD_DATA狀態,TCM控制器讀取TCM運算完成的數據,把數據寫回RAM區,之后進入FINISH狀態;

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

qrs2-t4.gif

3.2 U-Boot度量模塊

    在BMC引導加載Linux過程中需要對內核zImage鏡像、文件系統Ramdisk鏡像和設備樹FDT鏡像進行度量,以此作為BMC固件完整性判斷的依據,SD卡存儲的鏡像文件結構如圖5所示,設計的U-Boot可信啟動控制過程具體如下:

qrs2-t5.gif

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

    (2)設置標志位first_boot_flag作為BMC第一次啟動的標識,當BMC第一次啟動,即first_boot_flag為1時需要進行基準值的收集,調用TCM的SM3算法對zImage鏡像的內核頭信息和鏡像長度進行雜湊運算,把生成的摘要值寫入TCM的PCR寄存器。

    (3)對Ramdisk鏡像進行度量,把鏡像從SD卡搬移到內存,調用SM3算法對Ramdisk鏡像的頭信息和鏡像長度進行雜湊運算,把生成的摘要值擴展存儲到PCR。

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

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

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

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

4 安全性分析

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

    服務器的可信啟動過程為:

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

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

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

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

    表1是測試數據,測試了BMC與BIOS的基準值、度量值以及固件經篡改后的異常值。當度量值與基準值一致時,BMC Web管理界面中的可信狀態燈顯示綠色,否則可信狀態燈顯示紅色。在Web界面可以進行可信功能開啟、基準值更新、特權啟動、查看日志等操作。

qrs2-b1.gif

5 結論

    本文研究了可信計算技術在BMC中的應用,基于國產BMC板卡和TCM設計實現了BMC固件的可信引導和BIOS的主動度量,實現了服務器的可信啟動控制。研究成果已應用于北京科委項目,有廣闊的應用前景。

參考文獻

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

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

[3] 趙波,費永康,向騻,等.嵌入式系統的安全啟動機制研究與實現[J].計算機工程與應用,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].北京:清華大學出版社,2013.

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

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



作者信息:

蘇振宇

(浪潮集團高效能服務器和存儲技術國家重點實驗室,山東 濟南250101)

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 亚洲成a人不卡在线观看 | 青青网在线视频 | 日本www色视频成人免费网站 | 成年人在线免费 | 欧美日韩在线亚洲国产人 | 国产一区二区三区四 | 视频一区在线播放 | 波霸欧美性猛交xxxxxx | 日韩日韩日韩日韩 | 伊人婷婷色香五月综合缴激情 | 国产日韩精品一区在线观看播放 | 91短视频免费在线观看 | 毛茸茸free牲交 | 理论片免费欧美片 | 夜夜尻 | 一区小说二区另类小说三区图 | a4yy欧美一区二区三区 | 99久久er这里只有精品17 | 日韩高清一区 | 日本中文在线视频 | 精品视频一区二区三区在线播放 | 天天干狠狠操 | 香港午夜伦理 | 日韩在线免费视频观看 | 欧美不卡视频在线 | 91黄色短视频 | 毛片免费毛片一级jjj毛片 | 欧美视频福利 | 最刺激黄a大片免费网站 | 亚洲欧美第一页 | 亚洲国产欧美在线观看 | 殴美黄色 | 成年人在线免费网站 | 在线中文字幕视频 | 最近中文字幕国语完整视频 | 看全色黄大色大片免费久久怂 | 热久久国产 | 狠狠操天天操夜夜操 | 一区二区在线视频免费观看 | 国产男女猛烈无遮档免费视频网站 | 天天操丝袜 |