本發(fā)明涉及可信服務(wù)器可信平臺控制模塊技術(shù)領(lǐng)域,具體涉及一種國產(chǎn)BMC芯片可信固件的設(shè)計方法。
背景技術(shù):
BMC是基板管理控制器,目前已廣泛應(yīng)用于服務(wù)器領(lǐng)域。利用虛擬的鍵盤、界面、鼠標(biāo)、電源等為服務(wù)器提供遠(yuǎn)程管理功能。用戶利用BMC監(jiān)視服務(wù)器的物理特征,如各部件的溫度、電壓、風(fēng)扇工作狀態(tài)、電源供應(yīng)以及機箱入侵等。BMC作為服務(wù)器中相對獨立的管理控制單元本身存在著安全風(fēng)險,例如被植入惡意代碼,此外用戶在使用BMC對服務(wù)器進(jìn)行遠(yuǎn)程管理時,可能因安全配置不當(dāng),如未使用專用網(wǎng)絡(luò)、采用弱身份認(rèn)證、密碼復(fù)雜度低等不安全操作,造成運行過程中的安全風(fēng)險。
隨著我國信息技術(shù)的發(fā)展和芯片制造工藝水平的提高,我國已具備研發(fā)、制造國產(chǎn)BMC芯片的能力。國產(chǎn)BMC芯片雖然實現(xiàn)了國產(chǎn)化并且自主可控,但是在應(yīng)用過程中并不能保證安全和可信,有可能受到固件程序的篡改和完整性破壞。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是:本發(fā)明針對以上問題,提供一種國產(chǎn)BMC芯片可信固件的設(shè)計方法,在國產(chǎn)BMC芯片的固件程序中加入可信功能模塊,對BMC固件進(jìn)行加固,在BMC啟動運行過程中對各個功能組件進(jìn)行完整性的度量,確保程序的完整性和沒有被植入惡意代碼,建立起B(yǎng)MC啟動過程的完整信任鏈,保證了系統(tǒng)平臺執(zhí)行環(huán)境的可信,從而有助于提高國產(chǎn)BMC芯片的核心競爭力。
本發(fā)明所采用的技術(shù)方案為:
一種國產(chǎn)BMC芯片可信固件的設(shè)計方法,所述方法在BMC固件的引導(dǎo)層、內(nèi)核層、中間件和軟件層加入可信功能模塊,在BMC上電啟動過程中對內(nèi)核程序、應(yīng)用程序和BIOS關(guān)鍵代碼進(jìn)行完整性度量,確保程序的完整性,從而建立起系統(tǒng)平臺的可信執(zhí)行環(huán)境。
BMC芯片的固件程序存儲于BMC芯片的非易失性存儲區(qū),如Flash中,在BMC上電啟動的過程中,固件程序首先由Flash區(qū)加載到執(zhí)行速度較快的SDRAM區(qū),然后開始執(zhí)行。
所述引導(dǎo)層是BMC固件的 U-boot啟動代碼,U-boot是BMC上電啟動時第一段運行的代碼,在U-boot中加入的可信功能模塊有度量程序、SM3軟算法和度量值存儲接口,其中:
a、度量程序:BMC啟動時度量程序調(diào)用SM3軟算法對BMC的Linux內(nèi)核(Kernel)進(jìn)行度量;
b、SM3軟算法:用C程序?qū)崿F(xiàn)的國密SM3密碼雜湊算法,該算法對輸入數(shù)據(jù)進(jìn)行擦湊運算,生成一個256位的雜湊值;
c、度量值存儲接口:把度量值保存到BMC的安全存儲空間,如Flash。
所述內(nèi)核層Kernel層是經(jīng)過裁剪的ARM Linux內(nèi)核,為實現(xiàn)可信計算功能,需要加入IO驅(qū)動,所述IO驅(qū)動包括實現(xiàn)LPC、SPI、IIC的接口功能,完成硬件接口時序和配置相關(guān)的寄存器,使BMC和外部模塊正常通信,其中:
a、LPC接口驅(qū)動:實現(xiàn)BMC芯片與外部TCM可信密碼模塊的通信接口,使BMC通過LPC接口可以訪問TCM模塊;
b、SPI接口驅(qū)動:實現(xiàn)BMC芯片與外部BIOS芯片的通信接口,使BMC通過SPI接口可以讀取BIOS的Boot Block代碼;
c、IIC接口驅(qū)動:實現(xiàn)BMC芯片與外部CPLD芯片的通信接口,使BMC通過IIC接口向CPLD發(fā)送命令,控制主板的上電時序。
線性預(yù)測編碼(linear predictive coding,LPC)是一種非常重要的編碼方法。SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間。IIC 即Inter-Integrated Circuit(集成電路總線),主要是用來連接整體電路(ICS),是一種多向控制總線,也就是說多個芯片可以連接到同一總線結(jié)構(gòu)下,同時每個芯片都可以作為實時數(shù)據(jù)傳輸?shù)目刂圃?,這種方式簡化了信號傳輸總線接口。
所述中間件位于內(nèi)核層和軟件層之間,提供度量程序、軟算法、度量值存儲接口、可信代理程序BMC控制CPLD的命令接口、各種可信功能API,其中:
a、度量程序:調(diào)用國產(chǎn)SM3軟算法度量BMC的應(yīng)用程序;
b、軟算法:通過C程序以軟算法的形式實現(xiàn)國密SM2、SM3、SM4算法,供軟件層調(diào)用,實現(xiàn)對重要數(shù)據(jù)的加解密、數(shù)字簽名等;
c、度量值存儲接口:把度量值保存到BMC的安全存儲空間,如Flash;
d、可信代理程序:對外部的TCM可信密碼模塊進(jìn)行調(diào)度,對BIOS Boot Block進(jìn)行度量;
e、BMC控制CPLD的命令接口:BMC通過CPLD控制主板的上電時序,即BMC上電時先不給主板的CPU進(jìn)行加電,當(dāng)BMC的各模塊進(jìn)行度量確保可信后再通過CPLD控制CPU上電,從而確保運行過程中程序的完整性;
f、可信功能API:包括可信功能開啟API、基準(zhǔn)值A(chǔ)PI、度量值A(chǔ)PI、日志API、特權(quán)碼API和配置接口,用于為BMC Web界面提供調(diào)用接口,實現(xiàn)可信功能。
所述軟件層包括BMC Web應(yīng)用和BMC的應(yīng)用程序,其中在BMC Web頁面中通過調(diào)用中間層的API接口實現(xiàn)可信狀態(tài)的呈現(xiàn),包括:可信功能的開啟、基準(zhǔn)值管理、日志呈現(xiàn)、特權(quán)啟動、白名單管理,其中:
a、可信功能開啟模塊:該模塊通過調(diào)用中間件的功能開啟API,實現(xiàn)在BMC的Web界面中手動配置可信功能的開啟或關(guān)閉操作;
b、基準(zhǔn)值管理模塊:該模塊通過調(diào)用中間件的基準(zhǔn)值A(chǔ)PI,實現(xiàn)在BMC Web界面中對基準(zhǔn)值的讀寫、更新操作;
c、度量值管理模塊:該模塊通過調(diào)用中間件的度量值A(chǔ)PI,實現(xiàn)在BMC Web界面中對度量值的讀寫操作;
d、日志管理模塊:該模塊通過調(diào)用中間件的日志API,實現(xiàn)在BMC Web界面中呈現(xiàn)BMC啟動過程中的各模塊度量日志;
e、特權(quán)啟動功能模塊:該模塊通過調(diào)用中間件的特權(quán)碼API,當(dāng)BMC啟動過程中出現(xiàn)模塊不可信的狀態(tài)時,在BMC Web界面中使用戶通過輸入特權(quán)碼進(jìn)行系統(tǒng)的啟動,并提示用戶系統(tǒng)進(jìn)入了不可信的工作狀態(tài);
f、白名單模塊:該模塊通過調(diào)用中間件的配置接口,在BMC Web界面中配置白名單,即白名單中的程序、文件列表都是可信的。
本發(fā)明的有益效果為:
本發(fā)明方法在BMC啟動運行過程中對各個功能組件進(jìn)行完整性的度量,確保程序的完整性和沒有被植入惡意代碼,建立起B(yǎng)MC啟動過程的完整信任鏈,保證了系統(tǒng)平臺執(zhí)行環(huán)境的可信,從而有助于提高國產(chǎn)BMC芯片的核心競爭力。
附圖說明
圖1為本發(fā)明方法操作流程圖。
具體實施方式
下面結(jié)合說明書附圖,根據(jù)具體實施方式對本發(fā)明進(jìn)一步說明:
實施例1:
如圖1所示,一種國產(chǎn)BMC芯片可信固件的設(shè)計方法,所述方法在BMC固件的引導(dǎo)層、內(nèi)核層、中間件和軟件層加入可信功能模塊,在BMC上電啟動過程中對內(nèi)核程序、應(yīng)用程序和BIOS關(guān)鍵代碼進(jìn)行完整性度量,確保程序的完整性,從而建立起系統(tǒng)平臺的可信執(zhí)行環(huán)境。
實施例2
在實施例1的基礎(chǔ)上,本實施例所述引導(dǎo)層是BMC固件的 U-boot啟動代碼,U-boot是BMC上電啟動時第一段運行的代碼,在U-boot中加入的可信功能模塊有度量程序、SM3軟算法和度量值存儲接口,其中:
a、度量程序:BMC啟動時度量程序調(diào)用SM3軟算法對BMC的Linux內(nèi)核(Kernel)進(jìn)行度量;
b、SM3軟算法:用C程序?qū)崿F(xiàn)的國密SM3密碼雜湊算法,該算法對輸入數(shù)據(jù)進(jìn)行擦湊運算,生成一個256位的雜湊值;
c、度量值存儲接口:把度量值保存到BMC的安全存儲空間,如Flash。
BMC啟動時U-boot的度量程序調(diào)用SM3軟算法對BMC Linux Kernel進(jìn)行度量,得到的度量值與基準(zhǔn)值1進(jìn)行比較,從而對Linux Kernel進(jìn)行完整性判斷,當(dāng)度量值與基準(zhǔn)值1一致時表示Kernel完整,可以進(jìn)行Kernel的加載;當(dāng)度量值與基準(zhǔn)值1不一致時表示Kernel不完整,受到了破壞已不完整,此時需要進(jìn)入BMC的Web管理界面進(jìn)行異常處理步驟的操作。
基準(zhǔn)值的確定:BMC第一次上電啟動時的度量值作為基準(zhǔn)值,即BMC首次啟動度量Linux Kernel(內(nèi)核)程序的度量值作為基準(zhǔn)值1,中間件首次度量BMC應(yīng)用程序的度量值作為基準(zhǔn)值2,中間件的可信代理程序首次度量BIOS Boot Block的度量值作為基準(zhǔn)值3。基準(zhǔn)值1、2、3存儲于BMC的非易失存儲單元Flash中,是可信任的。
實施例3
在實施例2的基礎(chǔ)上,本實施例所述內(nèi)核層Kernel層是經(jīng)過裁剪的ARM Linux內(nèi)核,為實現(xiàn)可信計算功能,需要加入IO驅(qū)動,所述IO驅(qū)動包括實現(xiàn)LPC、SPI、IIC的接口功能,完成硬件接口時序和配置相關(guān)的寄存器,使BMC和外部模塊正常通信,其中:
a、LPC接口驅(qū)動:實現(xiàn)BMC芯片與外部TCM可信密碼模塊的通信接口,使BMC通過LPC接口可以訪問TCM模塊;
b、SPI接口驅(qū)動:實現(xiàn)BMC芯片與外部BIOS芯片的通信接口,使BMC通過SPI接口可以讀取BIOS的Boot Block代碼;
c、IIC接口驅(qū)動:實現(xiàn)BMC芯片與外部CPLD芯片的通信接口,使BMC通過IIC接口向CPLD發(fā)送命令,控制主板的上電時序。
實施例4
在實施例3的基礎(chǔ)上,本實施例所述中間件位于內(nèi)核層和軟件層之間,提供度量程序、軟算法、度量值存儲接口、可信代理程序BMC控制CPLD的命令接口、各種可信功能API,其中:
a、度量程序:調(diào)用國產(chǎn)SM3軟算法度量BMC的應(yīng)用程序進(jìn)行度量,得到度量值;之后進(jìn)行可信狀態(tài)的判斷,即度量值與存儲在Flash中的基準(zhǔn)值2進(jìn)行比對,當(dāng)度量值與基準(zhǔn)值2一致時表示應(yīng)用程序的完整性未受到破壞,是可信的;當(dāng)度量值與基準(zhǔn)值2比對不一致時說明應(yīng)用程序的完整性受到了破壞,此時需要進(jìn)入到BMC的Web管理界面進(jìn)行異常處理步驟的操作;
b、軟算法:通過C程序以軟算法的形式實現(xiàn)國密SM2、SM3、SM4算法,供軟件層調(diào)用,實現(xiàn)對重要數(shù)據(jù)的加解密、數(shù)字簽名等;
c、度量值存儲接口:把度量值保存到BMC的安全存儲空間,如Flash;
d、可信代理程序:對外部的TCM可信密碼模塊進(jìn)行調(diào)度,對BIOS Boot Block進(jìn)行度量,得到度量值;之后進(jìn)行BIOS可信狀態(tài)的判斷,即度量值與存儲在Flash中的基準(zhǔn)值3進(jìn)行比對,當(dāng)度量值與基準(zhǔn)值3一致時表示BIOS的完整性未受到破壞,是可信的;當(dāng)度量值與基準(zhǔn)值3比對不一致時說明BIOS的完整性受到了破壞,此時需要進(jìn)入到BMC的Web管理界面進(jìn)行異常處理步驟的操作;
e、BMC控制CPLD的命令接口:該模塊是BMC通過CPLD控制主板上電時序的邏輯代碼,BMC通過CPLD控制主板的上電時序,即BMC上電時先不給主板的CPU進(jìn)行加電,當(dāng)BMC的各模塊進(jìn)行度量確??尚藕笤偻ㄟ^CPLD控制CPU上電,從而確保運行過程中程序的完整性;
f、可信功能API:包括可信功能開啟API、基準(zhǔn)值A(chǔ)PI、度量值A(chǔ)PI、日志API、特權(quán)碼API和配置接口,用于為BMC Web界面提供調(diào)用接口,實現(xiàn)可信功能。
實施例5
在實施例4的基礎(chǔ)上,本實施例所述軟件層包括BMC Web應(yīng)用和BMC的應(yīng)用程序,其中在BMC Web頁面中通過調(diào)用中間層的API接口實現(xiàn)可信狀態(tài)的呈現(xiàn),包括:可信功能的開啟、基準(zhǔn)值管理、日志呈現(xiàn)、特權(quán)啟動、白名單管理等,其中:
a、可信功能開啟模塊:該模塊通過調(diào)用中間件的功能開啟API,實現(xiàn)在BMC的Web界面中手動配置可信功能的開啟或關(guān)閉操作;
b、基準(zhǔn)值管理模塊:該模塊通過調(diào)用中間件的基準(zhǔn)值A(chǔ)PI,實現(xiàn)在BMC Web界面中對基準(zhǔn)值的讀寫、更新操作;
c、度量值管理模塊:該模塊通過調(diào)用中間件的度量值A(chǔ)PI,實現(xiàn)在BMC Web界面中對度量值的讀寫操作;
d、日志管理模塊:該模塊通過調(diào)用中間件的日志API,實現(xiàn)在BMC Web界面中呈現(xiàn)BMC啟動過程中的各模塊度量日志;
e、特權(quán)啟動功能模塊:該模塊通過調(diào)用中間件的特權(quán)碼API,當(dāng)BMC啟動過程中出現(xiàn)模塊不可信的狀態(tài)時,在BMC Web界面中使用戶通過輸入特權(quán)碼進(jìn)行系統(tǒng)的啟動,并提示用戶系統(tǒng)進(jìn)入了不可信的工作狀態(tài);
f、白名單模塊:該模塊通過調(diào)用中間件的配置接口,在BMC Web界面中配置白名單,即白名單中的程序、文件列表都是可信的。
實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。