專利名稱:一種存儲操作系統(tǒng)與硬件系統(tǒng)的綁定方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軟硬件綁定方法,具體涉及一種將存儲操作系統(tǒng)與硬件系統(tǒng)進行 綁定的有效方法,屬于計算機存儲管理領(lǐng)域。
背景技術(shù):
現(xiàn)在的磁盤陣列廠商在開發(fā)磁盤陣列產(chǎn)品時,所開發(fā)的磁盤陣列一般由針對該磁 盤陣列開發(fā)的存儲操作系統(tǒng)進行控制管理。有的存儲操作系統(tǒng)被制作成USB啟動盤格式; 制作好的U盤以配件形式安裝在該品牌磁盤陣列的主板或控制器上,便于插拔和替換。用 戶每購買一臺該品牌的磁盤陣列,也就等于擁有了一份該存儲操作系統(tǒng)的拷貝,進而通過 該操作系統(tǒng),實現(xiàn)對磁盤陣列內(nèi)數(shù)據(jù)的存儲組織、訪問和管理。
如果不在軟件層面對存儲操作系統(tǒng)做任何處理,非法用戶完全可以對系統(tǒng)所使用 的U盤,以及該品牌磁盤陣列所使用的主板或控制器進行仿制,搭建起存儲操作系統(tǒng)所應(yīng) 用的特定硬件環(huán)境,進而通過對系統(tǒng)的簡單拷貝,將其應(yīng)用在對任意品牌磁盤陣列的管理 中,這顯然不利于存儲操作系統(tǒng)軟件著作權(quán)的保護。
常見的保護方法中,一般是將軟件系統(tǒng)與存儲介質(zhì)進行綁定,比如,可以提取其存 放介質(zhì)——U盤的序列號等硬件信息,然后將軟件系統(tǒng)與U盤進行綁定,但這種綁定方法屬 于常規(guī)思路,很容易想到,加之U盤的硬件信息,很容易利用工具進行刷新,導(dǎo)致該方法的 安全程度不高;也有的為了保護自己的軟件系統(tǒng),將其與特定硬件平臺相互綁定,比如,可 以提取軟件運行主機平臺的主板BIOS信息,由于刷新BIOS的難度較大,該方法相對于綁定 U盤等移動設(shè)備的效果要好,但BIOS內(nèi)可以有效利用的信息有限,且存在蓄意偽造的可能, 單獨利用此信息對軟件進行保護,就存在一定的局限性。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種將存儲操作系統(tǒng)與硬件系統(tǒng)進行綁定的有效方法,以 達到對U盤上自主開發(fā)的存儲操作系統(tǒng)進行保護的目的。該方法需要將操作系統(tǒng)與U盤固 件和磁盤陣列硬件平臺同時進行綁定,利用兩者信息的組合對軟件進行保護,可以更為有 效的實現(xiàn)對存儲操作系統(tǒng)軟件著作權(quán)的保護。
本方法適用于一類特定的存儲操作系統(tǒng),這類操作系統(tǒng)具有以下特征它用自主 設(shè)計的U盤作為存儲介質(zhì),被制作成USB啟動盤格式;制作好的U盤以配件形式安裝在該 品牌磁盤陣列的主板或控制器上,便于插拔和替換。制作好的U盤主要包括兩個文件夾 一個是boot目錄,用于存放存儲操作系統(tǒng)的內(nèi)核和啟動引導(dǎo)程序;另一個是以文件形式 組織的netstor目錄,主要用于構(gòu)建存儲操作系統(tǒng)的軟件環(huán)境。該存儲操作系統(tǒng)本身是一 個內(nèi)核版本為2. 6的Linux操作系統(tǒng);要實現(xiàn)從U盤上啟動,需要在U盤上存放一個Boot Loader,來完成系統(tǒng)的引導(dǎo)操作。由于U盤存儲空間等條件的限制,系統(tǒng)的Boot Loader選 擇syslinux,并結(jié)合initrd機制,來執(zhí)行系統(tǒng)的引導(dǎo)過程。initrd的全稱是Boot Loader initializedRAM disk,指由Boot Loader初始化的內(nèi)存盤。采用initrd機制時,在系統(tǒng)內(nèi)核啟動前,Boot Loader會將存儲介質(zhì)中的initrd文件加載到內(nèi)存,內(nèi)核啟動時會在訪問 真正的根文件系統(tǒng)前,先訪問該內(nèi)存中的initrd文件系統(tǒng)。也就是說,在Boot Loader配 置了 initrd的情況下,系統(tǒng)啟動被分成了兩個階段,第一階段先執(zhí)行initrd文件系統(tǒng)中的 /init文件,完成驅(qū)動模塊加載等任務(wù),第二階段才會執(zhí)行真正的根文件系統(tǒng)中的/sbin/ init進程。如附圖1所示,存儲操作系統(tǒng)啟動階段的引導(dǎo)流程如下(1)當(dāng)磁盤陣列上電或復(fù)位時,CPU會將PC指針賦值為一個特定的地址OxFFFFO, 并執(zhí)行該地址處的指令,該地址位于BIOS中,它保存在磁盤陣列主板或控制器的Flash 內(nèi);(2) BIOS運行時,按照CMOS設(shè)置中定義的啟動設(shè)備順序來搜索處于活動狀態(tài),并 且可以引導(dǎo)的設(shè)備,此處獲得的信息是從U盤啟動,于是將U盤中的Boot Loader加載到內(nèi) 存,加載成功后,BIOS將控制權(quán)交給Boot Loader ;(3)Boot Loader將U盤上的內(nèi)核映像vmlinux和initrd文件加載到內(nèi)存的特定
位置;(4)內(nèi)核判斷initrd文件的格式,此處為cpio格式,于是內(nèi)核將initrd的內(nèi)容釋 放到rootfs中;(5)執(zhí)行initrd中的/init文件,執(zhí)行到此,內(nèi)核的工作全部結(jié)束,完全交給/ init文件處理;(6)/init文件執(zhí)行完畢,常規(guī)根文件系統(tǒng)被掛載,執(zhí)行常規(guī)根文件系統(tǒng)中的/ sbin/init 進禾呈。至此,存儲操作系統(tǒng)的內(nèi)核引導(dǎo)流程基本完成,系統(tǒng)進入用戶空間應(yīng)用程序中,執(zhí) 行具體的功能操作。本方法在U盤固件中設(shè)置一條用戶自定義SCSI指令,利用指令執(zhí)行時的返回信息 來檢驗所使用U盤的合法性。描述SCSI指令的CDB結(jié)構(gòu)如附圖2所示,CDB包含了 1個字 節(jié)的操作碼,后接5個或更多字節(jié)的特定指令參數(shù),結(jié)尾是1個字節(jié)的控制字段。一條SCSI 指令要求小于等于16個字節(jié),而CDB的長度會根據(jù)不同的指令及其參數(shù)而改變。操作碼的 5-7bit稱為分組碼,在一條SCSI指令的CDB結(jié)構(gòu)中,令其取值為6或者7,表示該條指令是 廠商指定的。比如,可以為其添加一條操作碼為OxFO的SCSI指令,該指令成功執(zhí)行后返回 字符串“ T0Y0U”。結(jié)合系統(tǒng)啟動的流程特點和系統(tǒng)存放U盤的特殊性,本發(fā)明提供了一種存儲操作 系統(tǒng)與硬件系統(tǒng)的綁定方法,如附圖3所示,包括以下步驟步驟一在U盤固件中設(shè)置一條用戶自定義SCSI指令,該指令執(zhí)行時的返回信息可 用來檢驗所使用U盤的合法性;步驟二在系統(tǒng)所用磁盤陣列上,自內(nèi)存地址OXFFFFO開始,讀取一定長度的信息, 該地址位于BIOS中,此步操作實現(xiàn)的功能就是讀取磁盤陣列的BIOS信息,獲取其中的有效 fn息;步驟三將步驟二獲取的BIOS信息和步驟一中自定義SCSI指令的返回值,以字符 串形式前后連接在一起,組成一段原始信息,作為MD5算法的輸入信息,經(jīng)過MD5算法處理 后得到一個128bit位的信息摘要;
步驟四將得到的信息摘要,在存儲操作系統(tǒng)出廠時存放在U盤上某個特定文件 中;
步驟五在initrd中編寫一個可執(zhí)行文件,該文件負責(zé)對存儲操作系統(tǒng)運行的硬 件平臺進行綜合檢驗,如附圖4所示,具體執(zhí)行以下操作
(1)在系統(tǒng)所用磁盤陣列上,自內(nèi)存地址OxFFFFO開始,讀取與步驟二同等長度的 BIOS有效信息;
(2)向系統(tǒng)存放的U盤發(fā)送一條在步驟一中定義的SCSI指令,如果返回值與預(yù)期 相等,則表明所用的U盤是合法的,否則中斷系統(tǒng)后繼程序的執(zhí)行;
(3)將前兩個步驟獲取的BIOS信息和SCSI指令的返回值,以字符串形式前后連 接在一起,組成一段原始信息,作為MD5算法的輸入信息,經(jīng)過MD5算法處理后得到一個 128bit位的信息摘要;
(4)將步驟(3)得到的信息摘要與步驟四中所述存放在U盤上的特定文件內(nèi)容比 較,依據(jù)比較結(jié)果處理如下
如果信息摘要與該文件的內(nèi)容相同,則表明存儲操作系統(tǒng)所用硬件系統(tǒng)是合法 的,后繼操作可以正常執(zhí)行;
如果信息摘要與該文件的內(nèi)容不同,則表明存儲操作系統(tǒng)所用硬件系統(tǒng)中存在非 法硬件,即軟件系統(tǒng)被拷貝到了其他非法硬件平臺上,因此中斷存儲操作系統(tǒng)的啟動;
步驟六在/init文件中執(zhí)行設(shè)備的掛載操作時,先調(diào)用步驟五中的可執(zhí)行文件, 對軟件系統(tǒng)運行的硬件平臺進行綜合檢驗如果檢驗通過,則后繼操作可以順利完成,系統(tǒng) 可以正常啟動,否則,引導(dǎo)流程中斷,系統(tǒng)啟動失敗。
有益效果
本發(fā)明的有益效果是
(1)綁定方法基于硬件系統(tǒng)構(gòu)建。充分考慮了存儲操作系統(tǒng)所用硬件系統(tǒng)的特點, 利用兩者硬件信息的組合對操作系統(tǒng)進行保護,避開了常規(guī)的軟硬件簡單綁定模式,綁定 方法更加新穎、獨到。
(2)驗證方式巧妙。巧妙的利用了系統(tǒng)引導(dǎo)流程的特點,將綁定功能存放在 initrd中,在/init文件中調(diào)用執(zhí)行,從而在系統(tǒng)的引導(dǎo)流程中就完成了軟硬件的驗證任 務(wù),較早并且有效的阻止了對存儲操作系統(tǒng)的非法使用。
(3)綁定方法可靠性高。系統(tǒng)存放U盤屬于自主設(shè)計的硬件產(chǎn)品,固件為U盤所特 有,在安全程度上高于一般U盤;磁盤陣列的BIOS信息修改難度較大,而本發(fā)明將兩者進行 組合,更加保證了綁定結(jié)果的安全、可靠。
圖1為本發(fā)明適用的存儲操作系統(tǒng)啟動階段引導(dǎo)流程圖。
圖2為SCSI指令的⑶B結(jié)構(gòu)圖。
圖3為存儲操作系統(tǒng)與硬件系統(tǒng)的綁定流程圖。
圖4為針對存儲操作系統(tǒng)運行的硬件平臺進行綜合檢驗的流程圖。
其中,1為 BI0S,2 為 syslinux,3 為 vmlinux,4 為 /init,5 為用戶空間。
具體實施方式
下面結(jié)合附圖,具體說明本發(fā)明的優(yōu)選實施方式。
本實施方式應(yīng)用的存儲操作系統(tǒng)被制作成USB啟動盤格式,存儲操作系統(tǒng)所使用 的U盤以配件形式安裝在磁盤陣列內(nèi)。為加強對軟件系統(tǒng)的保護,系統(tǒng)使用自主設(shè)計的U盤。
存儲操作系統(tǒng)本身是一個2. 6版本的Linux操作系統(tǒng),要實現(xiàn)從U盤上啟動,需要 在U盤上存放一個Boot Loader,來完成系統(tǒng)的引導(dǎo)操作。系統(tǒng)實現(xiàn)中選擇了 syslinux,并 結(jié)合initrd機制,來執(zhí)行系統(tǒng)的引導(dǎo)過程。如附圖1所示,存儲操作系統(tǒng)啟動階段的引導(dǎo) 流程如下
(1)當(dāng)磁盤陣列上電或復(fù)位時,CPU會將PC指針賦值為一個特定的地址OxFFFFO, 并執(zhí)行該地址處的指令,該地址位于BIOS中;
(2) BIOS運行時,按照CMOS設(shè)置中定義的啟動設(shè)備順序來搜索處于活動狀態(tài),并 且可以引導(dǎo)的設(shè)備,此處獲得的信息是從U盤啟動,于是將U盤中的Boot Loader加載到內(nèi) 存,加載成功后,BIOS將控制權(quán)交給Boot Loader ;
(3)Boot Loader將U盤上的內(nèi)核映像vmlinux和initrd文件加載到內(nèi)存的特定位置;
(4)內(nèi)核判斷initrd文件的格式,此處為cpio格式,于是內(nèi)核將initrd的內(nèi)容釋 放到rootfs中;
(5)執(zhí)行initrd中的/init文件,執(zhí)行到此,內(nèi)核的工作全部結(jié)束,完全交給/ init文件處理;
(6)/init文件執(zhí)行完畢,常規(guī)根文件系統(tǒng)被掛載,執(zhí)行常規(guī)根文件系統(tǒng)中的/ sbin/init 進禾呈。
描述SCSI指令的CDB結(jié)構(gòu)如附圖2所示,CDB結(jié)構(gòu)的首個字節(jié)是操作碼,操作碼的 5-7bit稱為分組碼,令其取值為6或者7,則表示該條指令是廠商指定的,依據(jù)這一規(guī)定,在 U盤固件中設(shè)置一條用戶自定義指令,此處為其添加一條操作碼為OxFO的SCSI指令,該指 令成功執(zhí)行后返回字符串“T0Y0U”。
結(jié)合系統(tǒng)啟動的流程特點和系統(tǒng)存放U盤的特殊性,本實施例實現(xiàn)了一種將存儲 操作系統(tǒng)與硬件系統(tǒng)進行綁定的有效方法,如附圖3所示,包括以下步驟
步驟一在U盤固件中設(shè)置一條用戶自定義SCSI指令,該指令執(zhí)行時的返回信息可 用來檢驗所使用U盤的合法性;
步驟二在系統(tǒng)所用磁盤陣列上,自內(nèi)存地址OxFFFFO開始,讀取13個字節(jié)的信息, 所用偏移地址位于BIOS中,此步操作實現(xiàn)的功能就是讀取磁盤陣列的BIOS信息,獲取主板 的生產(chǎn)日期等信息;
步驟三將步驟二獲取的BIOS信息和步驟一中自定義SCSI指令的返回值,以字符 串形式前后連接在一起,組成一段原始信息,作為MD5算法的輸入信息,經(jīng)過MD5算法處理 后得到一個128bit位的信息摘要;
步驟四將得到的信息摘要,在存儲操作系統(tǒng)出廠時存放在U盤上某個特定文件 中;
步驟五在initrd中編寫一個可執(zhí)行文件ciphergen,該文件負責(zé)對存儲操作系統(tǒng)運行的硬件平臺進行綜合檢驗,如附圖4所示,具體執(zhí)行以下操作(1)在系統(tǒng)所用磁盤陣列上,自內(nèi)存地址OXFFFFO開始,讀取與步驟二同等長度的 BIOS有效信息;(2)向系統(tǒng)存放的U盤發(fā)送一條在步驟一中定義的SCSI指令,如果返回值與預(yù)期 相等,則表明所用的U盤是合法的,否則中斷系統(tǒng)后繼程序的執(zhí)行;(3)將前兩個步驟獲取的BIOS信息和SCSI指令的返回值,以字符串形式前后連 接在一起,組成一段原始信息,作為MD5算法的輸入信息,經(jīng)過MD5算法處理后得到一個 128bit位的信息摘要;(4)將步驟(3)得到的信息摘要與步驟四中所述存放在U盤上的特定文件內(nèi)容比 較,依據(jù)比較結(jié)果處理如下如果信息摘要與該文件的內(nèi)容相同,則表明存儲操作系統(tǒng)所用硬件系統(tǒng)是合法 的,后繼操作可以正常執(zhí)行;如果信息摘要與該文件的內(nèi)容不同,則表明存儲操作系統(tǒng)所用硬件系統(tǒng)中存在非 法硬件,即軟件系統(tǒng)被拷貝到了其他非法硬件平臺上,因此中斷存儲操作系統(tǒng)的啟動;步驟六在/init文件中執(zhí)行設(shè)備的掛載操作時,先調(diào)用ciphergen,對軟件系統(tǒng) 運行的硬件平臺進行綜合檢驗如果檢驗通過,則后繼操作可以順利完成,系統(tǒng)可以正常啟 動,否則,引導(dǎo)流程中斷,系統(tǒng)啟動失敗。本發(fā)明不僅限于以上實施例,凡是利用本發(fā)明的設(shè)計思路,做一些簡單變化的設(shè) 計,都應(yīng)計入本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1. 一種存儲操作系統(tǒng)與硬件系統(tǒng)的綁定方法,包括以下步驟 步驟一在U盤固件中設(shè)置一條用戶自定義SCSI指令,該指令執(zhí)行時的返回信息可用來 檢驗所使用U盤的合法性;步驟二在系統(tǒng)所用磁盤陣列上,自內(nèi)存地址OxFFFFO開始,讀取一定長度的信息,該地 址位于BIOS中,此步操作實現(xiàn)的功能就是讀取磁盤陣列的BIOS信息,獲取其中的有效信 息;步驟三將步驟二獲取的BIOS信息和步驟一中自定義SCSI指令的返回值,以字符串形 式前后連接在一起,組成一段原始信息,作為MD5算法的輸入信息,經(jīng)過MD5算法處理后得 到一個128bit位的信息摘要;步驟四將得到的信息摘要,在存儲操作系統(tǒng)出廠時存放在U盤上某個特定文件中; 步驟五在initrd中編寫一個可執(zhí)行文件,該文件負責(zé)對存儲操作系統(tǒng)運行的硬件平 臺進行綜合檢驗,具體執(zhí)行以下操作(1)在系統(tǒng)所用磁盤陣列上,自內(nèi)存地址OxFFFFO開始,讀取與步驟二同等長度的BIOS 有效信息;(2)向系統(tǒng)存放的U盤發(fā)送一條在步驟一中定義的SCSI指令,如果返回值與預(yù)期相等, 則表明所用的U盤是合法的,否則中斷系統(tǒng)后繼程序的執(zhí)行;(3)將前兩個步驟獲取的BIOS信息和SCSI指令的返回值,以字符串形式前后連接在 一起,組成一段原始信息,作為MD5算法的輸入信息,經(jīng)過MD5算法處理后得到一個128bit 位的信息摘要;(4)將步驟C3)得到的信息摘要與步驟四中所述存放在U盤上的特定文件內(nèi)容比較,依 據(jù)比較結(jié)果處理如下如果信息摘要與該文件的內(nèi)容相同,則表明存儲操作系統(tǒng)所用硬件系統(tǒng)是合法的,后 繼操作可以正常執(zhí)行;如果信息摘要與該文件的內(nèi)容不同,則表明存儲操作系統(tǒng)所用硬件系統(tǒng)中存在非法硬 件,即軟件系統(tǒng)被拷貝到了其他非法硬件平臺上,因此中斷存儲操作系統(tǒng)的啟動;步驟六在/init文件中執(zhí)行設(shè)備的掛載操作時,先調(diào)用步驟五中的可執(zhí)行文件,對軟 件系統(tǒng)運行的硬件平臺進行綜合檢驗如果檢驗通過,則后繼操作可以順利完成,系統(tǒng)可以 正常啟動,否則,引導(dǎo)流程中斷,系統(tǒng)啟動失敗。
全文摘要
本發(fā)明涉及一種存儲操作系統(tǒng)與硬件系統(tǒng)的綁定方法,包括以下步驟1、在U盤固件中設(shè)置一條用戶自定義指令;2、在磁盤陣列上,自內(nèi)存地址0xFFFF0開始,讀取一定長度的信息;3、將前兩步的返回值經(jīng)過MD5算法處理后得到一個128bit位的信息摘要;4、在存儲操作系統(tǒng)出廠時,將信息摘要存放在U盤上某個特定文件中;5、在initrd中編寫一個可執(zhí)行文件,負責(zé)對硬件平臺進行綜合檢驗;6、在/init文件中執(zhí)行設(shè)備的掛載操作時,先調(diào)用initrd中的可執(zhí)行文件,對硬件平臺進行綜合檢驗如果未通過則系統(tǒng)啟動失敗。本發(fā)明利用硬件信息的組合對操作系統(tǒng)進行保護、可靠性高,較早并且有效的阻止了對存儲操作系統(tǒng)的非法使用。
文檔編號G06F9/445GK102033822SQ20101057565
公開日2011年4月27日 申請日期2010年12月1日 優(yōu)先權(quán)日2010年12月1日
發(fā)明者周澤湘, 張偉濤, 李艷國, 沈晶, 王道邦, 耿成山, 謝紅軍, 譚毓安 申請人:北京同有飛驥科技股份有限公司