本發(fā)明涉及虛擬化安全領(lǐng)域,具體提供一種支持國密算法的免配置的虛擬機安全啟動方法。
背景技術(shù):
1、安全啟動是用于確保設(shè)備僅使用受原始設(shè)備制造商(oem)信任的軟件進(jìn)行啟動的一種安全標(biāo)準(zhǔn)。安全啟動會檢查引導(dǎo)加載程序和操作系統(tǒng)的數(shù)字簽名。如果簽名有效并與系統(tǒng)中存儲的受信任密鑰匹配,則啟動過程將繼續(xù);如果不匹配,則停止該過程以防止篡改。安全啟動對于保護(hù)系統(tǒng)免受惡意軟件和未經(jīng)授權(quán)的軟件的侵害至關(guān)重要。它可增強計算機設(shè)備對各種網(wǎng)絡(luò)威脅的抵御能力,為計算機的整體安全提供關(guān)鍵的防御層。通過驗證啟動過程的完整性,安全啟動為操作系統(tǒng)奠定了安全的基礎(chǔ),降低了受到危害系統(tǒng)數(shù)據(jù)和穩(wěn)定性攻擊的風(fēng)險。
2、安全啟動是在uefi啟動方式上實現(xiàn)的,它需要固件(通常稱為bios,是啟動計算機后首先啟動的軟件)的支持。根據(jù)uefi規(guī)定,計算機出廠的時候原始設(shè)備制造商可以在固件中內(nèi)置一些公鑰證書。當(dāng)計算機開機后,任何想要加載的操作系統(tǒng)或者硬件驅(qū)動程序,都必須通過這些公鑰的認(rèn)證。物理機上的安全啟動由物理固件完成,虛擬機的安全啟動則是通過虛擬固件模擬實現(xiàn)。目前,常用的虛擬固件由edk2的ovmf組件制作生成,安全啟動正是虛擬機啟動過程中edk2提供的一個安全保護(hù)能力,用來保護(hù)虛擬機操作系統(tǒng)內(nèi)核的安全性。
3、現(xiàn)有的方法大多是針對物理機的安全啟動,對于物理機來說,固件由原始設(shè)備制造商提供。平臺密鑰(pk,用于建立平臺擁有者和平臺固件之間的信任關(guān)系)是由原始設(shè)備制造商提供。密鑰交換密鑰(kek,用于建立平臺固件與操作系統(tǒng)之間的信任關(guān)系)一般由原始設(shè)備制造商和操作系統(tǒng)廠商提供。白名單數(shù)據(jù)(db,用于存儲驗證shim、grub、vmlinuz等組件的密鑰)中的密鑰則由操作系統(tǒng)廠商提供。物理機安全啟動所需的固件和密鑰一般在機器出廠前就配置完成,用戶開啟安全啟動時無需考慮固件以及證書的配置,因此這些方法也大多為安全啟動流程的創(chuàng)新。
4、對于虛擬機而言,虛擬機固件需要操作系統(tǒng)提供,但是密鑰一般需要用戶使用自簽名的證書并且需要手動配置pk、kek、db。因此想要開啟并使用虛擬機的安全啟動功能不僅需要對安全啟動的流程、密鑰和證書有一定的了解,同時還需要進(jìn)行繁瑣的配置工作。并且,ovmf組件目前不支持國密算法。國密算法有著更高的安全性,同時越來越多的標(biāo)準(zhǔn)和規(guī)范開始推薦或者要求使用國密算法,所以安全啟動對國密算法的支持是十分必要的。
5、相應(yīng)地,本領(lǐng)域需要一種能夠支持國密算法,并且不用手動配置密鑰的虛擬機安全啟動方案來解決上述問題。
技術(shù)實現(xiàn)思路
1、為了克服上述缺陷,提出了本發(fā)明,解決現(xiàn)有技術(shù)中虛擬機安全啟動的證書需要手動配置并且無法支持國密算法的技術(shù)問題。
2、本發(fā)明提供一種支持國密算法的免配置的虛擬機安全啟動方法,包括以下步驟:
3、獲取開源edk2的ovmf源碼,向ovmf源碼中引入sm2算法和sm3算法的相關(guān)函數(shù),并添加修改相應(yīng)的接口函數(shù),得到修改后的ovmf源碼;
4、對修改后的ovmf源碼進(jìn)行編譯,得到第一虛擬固件;
5、根據(jù)所述第一虛擬固件,向pk和kek中導(dǎo)入sm2證書,使用sm3算法計算虛擬機操作系統(tǒng)shim證書的雜湊值并導(dǎo)入db,將處理后的pk、kek和db添加到修改后的ovmf源碼中,編譯得到第二虛擬固件。
6、進(jìn)一步,所述添加修改相應(yīng)的接口函數(shù),包括:
7、在checksignaturelistformat接口函數(shù)中添加對sm2證書的判斷邏輯,所述checksignaturelistformat接口函數(shù)用于檢查簽名證書算法類型;
8、在hashpeimage接口函數(shù)中添加使用sm3算法的支持,所述hashpeimage接口函數(shù)用于計算證書的雜湊值;
9、增加sm2getpublickeyfromx509接口函數(shù),所述sm2getpublickeyfromx509接口函數(shù)用于對sm2證書解析,然后返回狀態(tài)值;
10、增加sm2free接口函數(shù),所述sm2free接口函數(shù)用于釋放sm2context中保存的證書內(nèi)容。
11、進(jìn)一步,所述對sm2證書的判斷邏輯,包括:
12、調(diào)用sm2getpublickeyfromx509接口函數(shù);
13、判斷返回狀態(tài)值是否成功,若是,則證明為sm2證書,調(diào)用sm2free接口函數(shù)釋放掉sm2context中保存的證書內(nèi)容。
14、進(jìn)一步,所述對sm2證書解析,包括:
15、檢查是否存在sm2證書;
16、若存在,則讀取sm2證書并檢索公鑰數(shù)據(jù),復(fù)制并保存檢索到的公鑰數(shù)據(jù)到變量sm2context中。
17、進(jìn)一步,所述添加使用sm3算法的支持,包括:添加sm3算法對應(yīng)的guid,在hashpeimage接口函數(shù)中添加sm3算法。
18、進(jìn)一步,使用第二虛擬固件執(zhí)行虛擬機啟動時,還包括步驟:
19、判斷db中是否存在當(dāng)前虛擬機操作系統(tǒng)的shim證書;
20、若是,開機安全啟動,
21、若否,等待用戶輸入對應(yīng)的shim證書,并將獲取的shim證書使用sm3算法計算后導(dǎo)入到db中,然后返回重新判斷db中是否存在當(dāng)前虛擬機操作系統(tǒng)的shim證書。
22、本發(fā)明的工作原理及有益效果為:
23、在實施本發(fā)明的技術(shù)方案中,添加了sm2證書進(jìn)行簽名、驗簽,以及sm3算法計算shim證書雜湊值,實現(xiàn)了對于虛擬固件的國密算法支持,進(jìn)一步提高了虛擬機啟動過程的安全性。將sm2證書添加到pk、kek中,將獲取的shim證書提前添加到db中,之后將處理后的pk、kek和db添加到修改后的ovmf源碼中,編譯得到第二虛擬固件,能夠無需配置證書文件即可開啟安全啟動,簡化了配置安全啟動的復(fù)雜步驟并降低了用戶的學(xué)習(xí)成本。
1.一種支持國密算法的免配置的虛擬機安全啟動方法,其特征在于,包括以下步驟:
2.根據(jù)權(quán)利要求1所述的一種支持國密算法的免配置的虛擬機安全啟動方法,其特征在于,所述添加修改相應(yīng)的接口函數(shù),包括:
3.根據(jù)權(quán)利要求2所述的一種支持國密算法的免配置的虛擬機安全啟動方法,其特征在于,所述對sm2證書的判斷邏輯,包括:
4.根據(jù)權(quán)利要求2所述的一種支持國密算法的免配置的虛擬機安全啟動方法,其特征在于,所述對sm2證書解析,包括:
5.根據(jù)權(quán)利要求2所述的一種支持國密算法的免配置的虛擬機安全啟動方法,其特征在于,所述添加使用sm3算法的支持,包括:添加sm3算法對應(yīng)的guid,在hashpeimage接口函數(shù)中添加sm3算法。
6.根據(jù)權(quán)利要求1所述的一種支持國密算法的免配置的虛擬機安全啟動方法,其特征在于,使用第二虛擬固件執(zhí)行虛擬機啟動時,還包括步驟: