本發(fā)明屬于系統(tǒng)安全領(lǐng)域,涉及一種基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法。
背景技術(shù):
1、linux系統(tǒng)是一套免費(fèi)使用和自由傳播的類unix操作系統(tǒng),具有開(kāi)放源碼、沒(méi)有版權(quán)、技術(shù)社區(qū)用戶多等特點(diǎn),開(kāi)放源碼使得用戶可以自由裁剪,靈活性高,功能強(qiáng)大,成本低。開(kāi)源的同時(shí)也為系統(tǒng)帶來(lái)了一些安全風(fēng)險(xiǎn)。
2、為了對(duì)系統(tǒng)進(jìn)行安全的引導(dǎo),專利號(hào)cn117648701b的中國(guó)發(fā)明專利中,提出了一種嵌入式操作系統(tǒng)安全啟動(dòng)機(jī)制實(shí)現(xiàn)方法,通過(guò)對(duì)引導(dǎo)程序u-boot、內(nèi)核、安全管理軟件進(jìn)行數(shù)字簽名,在啟動(dòng)流程中對(duì)簽名進(jìn)行驗(yàn)證,來(lái)保證系統(tǒng)的安全管理。
3、但是上述方案也存在著巨大的安全隱患,嵌入式linux的全啟動(dòng)流程包括:芯片片上rom固件、uboot-spl、uboot、內(nèi)核、文件系統(tǒng)。芯片片上rom固件為芯片出廠固化,不可更改,除此之外,上述方案忽略了uboot-spl的安全性驗(yàn)證,如果uboot-spl被非法篡改,從而導(dǎo)致引導(dǎo)非法分區(qū)的uboot和內(nèi)核,這種情況下,系統(tǒng)也能夠正常啟動(dòng),同時(shí)安全管理軟件反向驗(yàn)證的uboot和內(nèi)核還在合法分區(qū),能夠正常驗(yàn)證通過(guò)。
4、為了解決這種系統(tǒng)啟動(dòng)流程不可控的問(wèn)題,亟需提出一種基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的是針對(duì)系統(tǒng)啟動(dòng)流程不可控的問(wèn)題的問(wèn)題,提出一種基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法。對(duì)全啟動(dòng)流程進(jìn)行正反向驗(yàn)簽操作,確保關(guān)鍵啟動(dòng)文件不可篡改。同時(shí),在啟動(dòng)過(guò)程中,記錄uboot-spl、uboot、內(nèi)核的簽名信息到預(yù)留內(nèi)存中,實(shí)行啟動(dòng)過(guò)程的追溯,確保系統(tǒng)是由正確的啟動(dòng)鏈路啟動(dòng),杜絕通過(guò)非授權(quán)分區(qū)的uboot-spl、uboot、內(nèi)核來(lái)繞過(guò)正向驗(yàn)簽;有效解決了嵌入式linux系統(tǒng)的安全啟動(dòng),保證系統(tǒng)的正常運(yùn)行。
2、本發(fā)明的技術(shù)方案是:
3、本發(fā)明提供一種基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法,所述系統(tǒng)配置三級(jí)引導(dǎo)程序,一級(jí)引導(dǎo)程序?yàn)樾酒瑀om固件,二級(jí)引導(dǎo)程序?yàn)橐龑?dǎo)程序uboot-spl,三級(jí)引導(dǎo)程序?yàn)橐龑?dǎo)程序uboot;所述啟動(dòng)方法包含以下步驟:
4、s1、運(yùn)行芯片rom固件,加載引導(dǎo)程序uboot-spl;
5、s2、運(yùn)行引導(dǎo)程序uboot-spl,讀取引導(dǎo)程序uboot的簽名,并寫入預(yù)留內(nèi)存的第一位置,加載引導(dǎo)程序uboot;
6、s3、運(yùn)行引導(dǎo)程序uboot,讀取引導(dǎo)程序uboot-spl和內(nèi)核的簽名,并寫入預(yù)留內(nèi)存的第二位置和第三位置,分別對(duì)引導(dǎo)程序uboot-spl和內(nèi)核進(jìn)行驗(yàn)簽,驗(yàn)簽均通過(guò)后繼續(xù)執(zhí)行,否則停止啟動(dòng);
7、s4、運(yùn)行內(nèi)核,基于內(nèi)核ramdisk中的簽名驗(yàn)證程序,對(duì)引導(dǎo)程序uboot、文件系統(tǒng)中的啟動(dòng)腳本、安全管理軟件進(jìn)行驗(yàn)簽;驗(yàn)簽均通過(guò)后繼續(xù)執(zhí)行,否則停止啟動(dòng);
8、s5、運(yùn)行安全管理軟件,讀取引導(dǎo)程序uboot-spl、引導(dǎo)程序uboot和內(nèi)核的簽名信息,分別對(duì)引導(dǎo)程序uboot-spl、引導(dǎo)程序uboot和內(nèi)核進(jìn)行反向驗(yàn)簽;
9、同時(shí),分別將簽名信息與第一位置、第二位置和第三位置的簽名信息進(jìn)行比對(duì),以回溯啟動(dòng)流程;
10、驗(yàn)簽均通過(guò)且簽名信息比對(duì)結(jié)果均一致后繼續(xù)執(zhí)行,啟動(dòng)驗(yàn)簽通過(guò)的業(yè)務(wù)軟件,否則停止啟動(dòng)。
11、進(jìn)一步地,一級(jí)引導(dǎo)程序rom固件為芯片出廠內(nèi)置。
12、進(jìn)一步地,引導(dǎo)程序uboot-spl的文件末尾補(bǔ)0,直至存儲(chǔ)分區(qū)最后1k字節(jié)位置存儲(chǔ)簽名信息;讀取簽名時(shí),讀取引導(dǎo)程序uboot-spl存儲(chǔ)分區(qū)的最后1k數(shù)據(jù),即為簽名信息;
13、引導(dǎo)程序uboot和內(nèi)核均以fit格式進(jìn)行打包,在文件末尾添加簽名信息;讀取簽名時(shí),采用設(shè)備樹(shù)解析語(yǔ)法進(jìn)行解析,獲取源文件大小以及簽名信息的位置。
14、進(jìn)一步地,驗(yàn)簽包括以下步驟:
15、(1)、讀取簽名文件,分離原文件內(nèi)容和簽名內(nèi)容;
16、(2)、移植國(guó)密sm3算法,根據(jù)sm3國(guó)密算法計(jì)算原文件內(nèi)容的哈希值;
17、(3)、將步驟(1)中的簽名內(nèi)容和步驟(2)中的哈希值,通過(guò)spi總線,發(fā)送給安全芯片進(jìn)行驗(yàn)簽;
18、(4)、根據(jù)安全芯片的返回值,獲取驗(yàn)簽結(jié)果。
19、進(jìn)一步地,內(nèi)核ramdisk中的簽名驗(yàn)證程序位于ramdisk文件系統(tǒng)中,所述ramdisk和內(nèi)核一起打包為同一個(gè)fit鏡像文件,并對(duì)此鏡像文件進(jìn)行簽名;
20、讀取簽名時(shí),采用設(shè)備樹(shù)解析語(yǔ)法進(jìn)行解析,獲取源文件大小以及簽名信息的位置。
21、進(jìn)一步地,s4具體為:
22、(1)、加載內(nèi)核ramdisk文件系統(tǒng),運(yùn)行簽名驗(yàn)證程序;
23、(2)、對(duì)引導(dǎo)程序uboot進(jìn)行驗(yàn)簽,通過(guò)后進(jìn)行下一步操作,否則停止啟動(dòng);
24、(3)、對(duì)文件系統(tǒng)中的啟動(dòng)腳本進(jìn)行驗(yàn)簽,通過(guò)后進(jìn)行下一步操作,否則停止啟動(dòng);
25、(4)、對(duì)文件系統(tǒng)中的安全管理軟件進(jìn)行驗(yàn)簽,通過(guò)后進(jìn)行下一步操作,否則停止啟動(dòng)。
26、一種計(jì)算機(jī)設(shè)備,包括:一個(gè)或多個(gè)處理器;
27、所述處理器,用于存儲(chǔ)一個(gè)或多個(gè)程序;
28、當(dāng)所述一個(gè)或多個(gè)程序被所述一個(gè)或多個(gè)處理器執(zhí)行時(shí),實(shí)現(xiàn)所述的基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法。
29、一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被執(zhí)行時(shí),實(shí)現(xiàn)所述的基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法。
30、本發(fā)明的有益效果:
31、本發(fā)明全啟動(dòng)流程正反向驗(yàn)簽的安全啟動(dòng)方法,能夠?qū)?dòng)過(guò)程進(jìn)行回溯,通過(guò)對(duì)預(yù)留內(nèi)存中的uboot-spl、uboot以及內(nèi)核的簽名信息比對(duì),以確保整個(gè)系統(tǒng)是從正確的鏈路啟動(dòng),杜絕更換uboot-spl、uboot、內(nèi)核以從非授權(quán)鏈路的啟動(dòng)。
32、本發(fā)明中,由于存儲(chǔ)引導(dǎo)程序uboot-spl的分區(qū)容量很有限,不能夠移植復(fù)雜的加解密算法,引導(dǎo)程序uboot-spl本身不進(jìn)行驗(yàn)簽工作;為了驗(yàn)證引導(dǎo)程序uboot-spl的合法性,對(duì)其添加簽名信息,在后續(xù)步驟進(jìn)行引導(dǎo)程序uboot-spl的反向驗(yàn)簽工作。
33、本發(fā)明中,將簽名驗(yàn)證程序置于ramdisk文件系統(tǒng)中,ramdisk和內(nèi)核一起打包為同一個(gè)fit鏡像,并對(duì)此鏡像進(jìn)行簽名,以確保步驟s4中簽名驗(yàn)證程序不可更改。
34、本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后具體實(shí)施方式部分予以詳細(xì)說(shuō)明。
1.一種基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法,其特征在于,所述系統(tǒng)配置三級(jí)引導(dǎo)程序,一級(jí)引導(dǎo)程序?yàn)樾酒瑀om固件,二級(jí)引導(dǎo)程序?yàn)橐龑?dǎo)程序uboot-spl,三級(jí)引導(dǎo)程序?yàn)橐龑?dǎo)程序uboot;所述啟動(dòng)方法包含以下步驟:
2.根據(jù)權(quán)利要求1所述的基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法,其特征在于,一級(jí)引導(dǎo)程序rom固件為芯片出廠內(nèi)置。
3.根據(jù)權(quán)利要求1所述的基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法,其特征在于,
4.根據(jù)權(quán)利要求1所述的基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法,其特征在于驗(yàn)簽包括以下步驟:
5.根據(jù)權(quán)利要求1所述的基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法,其特征在于;
6.根據(jù)權(quán)利要求1所述的基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法,其特征在于s4具體為:
7.一種計(jì)算機(jī)設(shè)備,其特征在于,包括:一個(gè)或多個(gè)處理器;
8.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,其上存有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被執(zhí)行時(shí),實(shí)現(xiàn)如權(quán)利要求1至6中任意一項(xiàng)所述的基于全啟動(dòng)流程正反向驗(yàn)簽的嵌入式linux系統(tǒng)安全啟動(dòng)方法。