本發(fā)明涉及固態(tài)硬盤,尤其涉及一種基于國密算法的ssd可信啟動方法、系統(tǒng)及存儲介質(zhì)。
背景技術(shù):
1、ssd作為存儲數(shù)據(jù)的重要載體,它的運作由固件控制和完成。由于ssd固件在非工作(斷電)狀態(tài)時存放在內(nèi)部的非易性介質(zhì)(nand)中,在其正常工作前(上電)則需要將其從nand中加載到其主控緩存上,這就是ssd的啟動過程。如果有攻擊者使用非法手段篡改nand中的固件,則使得固件變得不可信任;ssd運行不可信的固件會導致ssd行為將不受控制,造成用戶數(shù)據(jù)泄露、丟失等情況。由此可見,在ssd啟動過程中增加對固件的可信檢查是非常有必要的。然而,當今市場上的大多數(shù)ssd產(chǎn)品都無此功能,或者是常用的實現(xiàn)算法,如rsa算法,存在安全度不足、效率較低等缺點。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于國密算法的ssd可信啟動方法、系統(tǒng)及存儲介質(zhì)。
2、本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的:本發(fā)明第一方面提供:一種基于國密算法的ssd可信啟動方法,包括以下步驟:
3、在ssd的片上系統(tǒng)soc上集成sm2算法和sm3算法;
4、各級程序先通過sm3算法運算輸出固定長度的不同消息摘要,然后使用sm2算法對每個消息摘要生成對應的數(shù)字簽名,接著將消息摘要和數(shù)字簽名與各級程序做綁定后一起燒錄至ssd內(nèi);
5、ssd上電時,每一級程序的消息摘要通過上一級程序重新計算并與其綁定的消息摘要進行比對,比對通過后再由上一級程序?qū)Ξ斍凹壋绦蚪壎ǖ臄?shù)字簽名進行驗證,均比對和驗證通過后依次加載和運行各級程序,任一級程序的消息摘要或數(shù)字簽名驗證不通過則不運行該級程序。
6、優(yōu)選的,在進行固件加密時,包括以下步驟:
7、利用隨機函數(shù)生成一組256比特的隨機數(shù)作為私鑰,再對私鑰進行橢圓曲線倍點運算,得到公鑰;私鑰用于生成數(shù)字簽名,公鑰則是用于驗證數(shù)字簽名,通過私鑰簽名的數(shù)據(jù)只能由公鑰驗簽;
8、調(diào)用sm3算法計算各級程序的消息摘要;
9、利用sm2算法以及私鑰依次對各級程序的消息摘要進行加密運算,得到各級程序的數(shù)字簽名;
10、將各級程序的消息摘要和數(shù)字簽名插入到原固件的特定位置,重新組合后得到一個完整的經(jīng)過數(shù)字簽名的固件程序,最后將固件程序通過燒錄或升級的方式寫入到ssd內(nèi)部。
11、優(yōu)選的,在進行簽名驗證時,包括以下步驟:
12、ssd上電后,首先運行rom程序,rom程序從非易性介質(zhì)nand中讀取preloader程序及其對應的消息摘要,再調(diào)用sm3算法對preloader程序進行計算得到消息摘要并與讀取的消息摘要進行比對;比對通過后讀取存儲在ssd內(nèi)部的公鑰以及對應的數(shù)字簽名,sm2算法模塊使用公鑰對preloader程序的數(shù)字簽名進行解碼運算,驗證通過后才運行preloader程序;
13、preloader程序運行起來后先從非易性介質(zhì)nand中讀取固態(tài)鏡像firmware?image及其對應的消息摘要,然后調(diào)用sm3算法對固態(tài)鏡像firmware?image進行計算得到消息摘要,將兩個消息摘要進行比對,比對通過后進行下一步驗簽操作,簽名驗證通過后運行固態(tài)鏡像firmware?image。
14、優(yōu)選的,所述的公鑰保存在片上系統(tǒng)soc內(nèi)部的otp中,私鑰由固件發(fā)布者保存。
15、優(yōu)選的,所述的固定長度為256比特。
16、本發(fā)明第二方面提供:一種基于國密算法的ssd可信啟動系統(tǒng),用于實現(xiàn)上述任一種基于國密算法的ssd可信啟動方法,包括:
17、集成模塊,用于在ssd的片上系統(tǒng)soc上集成sm2算法和sm3算法;
18、消息摘要與數(shù)字簽名生成模塊,用于通過sm3算法運算輸出固定長度的不同消息摘要,然后使用sm2算法對每個消息摘要生成對應的數(shù)字簽名,接著將消息摘要和數(shù)字簽名與各級程序做綁定后一起燒錄至ssd內(nèi);
19、驗簽模塊,用于在ssd上電時,將每一級程序的消息摘要通過上一級程序重新計算并與其綁定的消息摘要進行比對,比對通過后再由上一級程序?qū)Ξ斍凹壋绦蚪壎ǖ臄?shù)字簽名進行驗證,均比對和驗證通過后依次加載和運行各級程序,任一級程序的消息摘要或數(shù)字簽名驗證不通過則不運行該級程序。
20、本發(fā)明第三方面提供:一種計算機可讀存儲介質(zhì),所述的計算機可讀存儲介質(zhì)中存儲有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令被處理器加載并執(zhí)行時,實現(xiàn)上述任一種基于國密算法的ssd可信啟動方法。
21、本發(fā)明的有益效果是:
22、1)采用軟硬件協(xié)同的sm2\sm3國密算法,不僅具有較高的安全性與效率,還在性能消耗和存儲密度上具有更低要求。
23、2)sm3與sm2算法的搭配使用能實現(xiàn)保證數(shù)據(jù)的完整性及身份認證的雙重效果。
1.一種基于國密算法的ssd可信啟動方法,其特征在于:包括以下步驟:
2.根據(jù)權(quán)利要求1所述的基于國密算法的ssd可信啟動方法,其特征在于:在進行固件加密時,包括以下步驟:
3.根據(jù)權(quán)利要求2所述的基于國密算法的ssd可信啟動方法,其特征在于:在進行簽名驗證時,包括以下步驟:
4.根據(jù)權(quán)利要求2所述的基于國密算法的ssd可信啟動方法,其特征在于:所述的公鑰保存在片上系統(tǒng)soc內(nèi)部的otp中,私鑰由固件發(fā)布者保存。
5.根據(jù)權(quán)利要求1-4任一項所述的基于國密算法的ssd可信啟動方法,其特征在于:所述的固定長度為256比特。
6.一種基于國密算法的ssd可信啟動系統(tǒng),其特征在于:用于實現(xiàn)如權(quán)利要求1-5任一項所述的基于國密算法的ssd可信啟動方法,包括:
7.一種計算機可讀存儲介質(zhì),其特征在于:所述的計算機可讀存儲介質(zhì)中存儲有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令被處理器加載并執(zhí)行時,實現(xiàn)如權(quán)利要求1-5任一項所述的基于國密算法的ssd可信啟動方法。