專利名稱:一種軟硬件結(jié)合的保護(hù)程序的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件安全防護(hù)領(lǐng)域,尤其涉及一種軟硬件結(jié)合的保護(hù)程序的方法。
背景技術(shù):
軟件程序經(jīng)常受到非法的破解、篡改以及意外的傷害,對(duì)知識(shí)產(chǎn)權(quán)和數(shù)據(jù)及 代碼安全造成很大損失。傳統(tǒng)軟件程序防護(hù)策略側(cè)重軟件算法或硬件分別實(shí)現(xiàn), 沒(méi)有能將軟件和硬件有機(jī)結(jié)合在一起。
當(dāng)前防止對(duì)軟件盜版和破解的方法主要有以下幾種
1、 對(duì)承載軟件的介質(zhì)一光盤進(jìn)行保護(hù);
2、 軟件運(yùn)行時(shí)需要序列號(hào),否則為試用期版,通常對(duì)功能或可使用時(shí)間加 以限制;
3、 去除程序調(diào)試信息,運(yùn)用軟件對(duì)程序進(jìn)行加密;
4、 對(duì)軟件所用數(shù)據(jù)進(jìn)行加密,通常是軟件實(shí)現(xiàn)加密算法;軟件實(shí)現(xiàn)的安全 算法,計(jì)算速度慢,成為軟件安全保護(hù)的瓶頸;
5、 對(duì)大量數(shù)據(jù)加密,除使用軟件實(shí)現(xiàn)加密外,也有硬件實(shí)現(xiàn)算法,包括使 用單片機(jī)實(shí)現(xiàn)簡(jiǎn)單校驗(yàn),使用FPGA或CPLD實(shí)現(xiàn)高速算法,或使用ASIC專用 集成電路實(shí)現(xiàn)算法;
6、 使用加密狗承載加密算法或運(yùn)行權(quán)限證書的介質(zhì)進(jìn)行加密,通常使用 USB 口或并行接口作為硬件接口 。
加密狗通常是承載權(quán)限證書和加密算法的介質(zhì),加解密的速度低,加解密后 數(shù)據(jù)傳輸?shù)乃俣纫彩苤朴赨SB接口或并行接口等硬件條件的限制,另外,USB 接口或并行接口的通信協(xié)議是公開(kāi)的,容易受到探測(cè)監(jiān)視程序的控制,為非法破 解提供了突破的途徑
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種軟硬件結(jié)合的保護(hù)程序的方法,采用軟件和 硬件結(jié)合的方式對(duì)程序進(jìn)行保護(hù),提高了程序運(yùn)行的速度,并增加了破解程序的 難度。
為了達(dá)到上述目的,本發(fā)明提供了一種軟硬件結(jié)合的保護(hù)程序的方法,其包
括以下步驟
(1) 一程序運(yùn)行單元取得其硬件指紋,并根據(jù)加密密鑰生成參數(shù),通過(guò)一 密鑰生成算法算出加密密鑰;所述加密密鑰生成參數(shù)包括所述硬件指紋和一隨機(jī) 數(shù),所述程序運(yùn)行單元存儲(chǔ)該隨機(jī)數(shù);
(2) 根據(jù)所述加密密鑰,通過(guò)一加解密算法,對(duì)所述程序運(yùn)行單元儲(chǔ)存的 目標(biāo)程序進(jìn)行加密;
(3) 所述程序運(yùn)行單元將一文件組中的程序和數(shù)據(jù)進(jìn)行組合,生成一新的 目標(biāo)文件;所述文件組中的程序包括加密后的目標(biāo)程序、預(yù)先存儲(chǔ)的采用所述密 鑰生成算法的解密密鑰生成程序、預(yù)先存儲(chǔ)的采用所述加解密算法的解密程序、 預(yù)先存儲(chǔ)的運(yùn)行程序和所述隨數(shù);
(4) 運(yùn)行所述目標(biāo)文件;
(5) 所述程序運(yùn)行單元調(diào)用所述解密密鑰生成程序,根據(jù)解密密鑰生成參 數(shù),通過(guò)所述密鑰生成算法算出解密密鑰,并將所述解密密鑰傳送至一加解密單 元;所述解密密鑰生成參數(shù)包括所述程序運(yùn)行單元中存儲(chǔ)的隨機(jī)數(shù)、所述硬件指 紋;
(6) 所述加解密單元調(diào)用所述解密程序,才艮據(jù)所述解密密鑰,通過(guò)所述加 解密算法,對(duì)所迷加密后的目標(biāo)程序進(jìn)行解密;
(7) 結(jié)束。
優(yōu)選的,在步驟(2)中,所述加密操作由所述程序運(yùn)行單元執(zhí)行。
優(yōu)選的,在步驟(2)中,所述加密操作由一加解密單元執(zhí)行,所述加密密 鑰由所述程序運(yùn)行單元傳送至所述加解密單元。
優(yōu)選的,所述加密密鑰生成參數(shù)還包括用戶口令,所述解密密鑰生成參數(shù)還 包括用戶輸入的口令。
優(yōu)選的,在步驟(l)中,所述隨機(jī)數(shù)由一真隨機(jī)數(shù)發(fā)生器生成。
優(yōu)選的,所述文件組中的程序還包括權(quán)限判斷程序;
在步驟(4 )和步驟(5 )之間,還包括步驟(41 ):
所述程序運(yùn)行單元調(diào)用所述權(quán)限判斷程序,根據(jù)一權(quán)限判斷單元中插入的介質(zhì),判斷所述目標(biāo)程序是否具有運(yùn)行權(quán)限; 如果有,轉(zhuǎn)至步驟(5); 否則,轉(zhuǎn)至步驟(7)。
優(yōu)選的,本發(fā)明所述方法在步驟(1)前還包括以下步驟 (11)去除一程序運(yùn)行單元中的目標(biāo)程序中的冗余信息和調(diào)試信息。
優(yōu)選的,在步驟(11)和步驟(1)之間還包括以下步驟 (12 )對(duì)一程序運(yùn)行單元中的目標(biāo)程序進(jìn)行混淆處理。
與現(xiàn)有技術(shù)相比,本發(fā)明提供的軟硬件結(jié)合的保護(hù)程序的方法,采用軟件和 硬件結(jié)合的方式對(duì)程序進(jìn)行保護(hù),提高了程序運(yùn)行的速度,并增加了破解程序的 難度。
圖1是本發(fā)明實(shí)施例所述的軟硬件結(jié)合的保護(hù)程序的方法基于的系統(tǒng)的結(jié) 構(gòu)圖2是本發(fā)明所述的軟硬件結(jié)合的保護(hù)程序的方法的 一種具體實(shí)施的流程
圖3是本發(fā)明所述的軟硬件結(jié)合的保護(hù)程序的方法的另 一種具體實(shí)施的流 程圖。
具體實(shí)施例方式
以下結(jié)合附圖,對(duì)本發(fā)明上述和另外的技術(shù)特征和優(yōu)點(diǎn)作更詳細(xì)的說(shuō)明。 本發(fā)明所述的軟硬件結(jié)合的保護(hù)程序的方法,是基于一種保護(hù)程序的系統(tǒng)
的,如圖l所示,所述系統(tǒng)包括程序運(yùn)行單元11、權(quán)限判斷單元12和加解密單
元13,其中,
所述程序運(yùn)行單元11,與所述權(quán)限判斷單元12和所述加解密單元13連接, 用于儲(chǔ)存并運(yùn)行目標(biāo)程序(需被保護(hù)的程序);
所述程序運(yùn)行單元11包括CPU、存儲(chǔ)器(NORFLASH)和網(wǎng)卡;
所述權(quán)限判斷單元12,其中插入的介質(zhì),是判斷所述程序運(yùn)行單元11中存 儲(chǔ)的目標(biāo)程序是否具有運(yùn)行權(quán)限的依據(jù);
根據(jù)一種具體實(shí)施方式
,所述權(quán)限判斷單元12是IC卡讀卡機(jī),其中插入的 IC卡,是判斷所述目標(biāo)程序是否具有運(yùn)行權(quán)限的依據(jù);根據(jù)另一種具體實(shí)施方式
,所述權(quán)限判斷單元12是USB接口,其中插入的 USBkey,是判斷所述目標(biāo)程序是否具有運(yùn)行權(quán)限的依據(jù);
所述加解密單元13,用于對(duì)所述程序運(yùn)行單元11中存儲(chǔ)的目標(biāo)程序進(jìn)行加 密和解密。
根據(jù)另一種具體實(shí)施方式
,所述加密操作可以由所述程序運(yùn)行單元11執(zhí)行, 而非由所述加解密單元13執(zhí)行。
所述加解密單元13可以是高速加解密芯片,所述高速加解密芯片采用的算 法可以為SCB2、 SSF33、 DES、 AES等對(duì)稱密鑰算法,也可以是RSA等非對(duì)稱
密鑰算法;所述高速加解密芯片釆用高速FPGA或?qū)S肁SIC芯片完成,具有防 破解等安全機(jī)制。
如圖2所示,本發(fā)明所述的軟硬件結(jié)合的保護(hù)程序的方法的一種具體實(shí)施包 括以下步驟
步驟21,所述程序運(yùn)行單元11取得其硬件指紋,并根據(jù)所述硬件指紋、一 隨機(jī)數(shù),通過(guò)SHA1算法算出加密密鑰;所述程序運(yùn)行單元11存儲(chǔ)該隨機(jī)數(shù);
所述硬件指紋包括CPU的ID號(hào)、存儲(chǔ)器的ID號(hào)、網(wǎng)卡的MAC (介質(zhì)訪問(wèn) 控制)地址;
所述隨機(jī)數(shù)由一隨機(jī)數(shù)發(fā)生器生成,所述隨機(jī)數(shù)發(fā)生器可以為真隨機(jī)數(shù)發(fā)生 器芯片,由于真隨機(jī)數(shù)的作用,使得每次算出的加密密鑰不同,增加了破解的難 度;
SHA1算法將任意長(zhǎng)的數(shù)據(jù)轉(zhuǎn)換為固定長(zhǎng)度的數(shù)據(jù),不同的輸入數(shù)據(jù)運(yùn)算后 的結(jié)果不同;
步驟22,根據(jù)所述加密密鑰,通過(guò)一加解密算法,對(duì)所述程序運(yùn)行單元ll 中存儲(chǔ)的目標(biāo)程序進(jìn)行加密;
在本實(shí)施例中,所述加解密算法為AES算法;
優(yōu)選的,所述加解密算法可以為SCB2、 SSF33或DES等對(duì)稱密鑰算法,也
可以為RSA等非對(duì)稱密鑰算法;
根據(jù)一種具體實(shí)施方式
,所述加密操作由所述程序運(yùn)行單元ll執(zhí)行; 根據(jù)另一種具體實(shí)施方式
,所述加密操作是由所述加解密單元13執(zhí)行,由
所述程序運(yùn)行單元11將所述加密密鑰傳送至所述加解密單元13;步驟23、所述程序運(yùn)行單元11將其中存儲(chǔ)的一文件組中的程序和數(shù)據(jù)進(jìn)行 組合,生成一新的目標(biāo)文件;所述文件組中的程序和數(shù)據(jù)包括加密后的目標(biāo)程序、 預(yù)先存儲(chǔ)的釆用所述密鑰生成算法的解密密鑰生成程序、預(yù)先存儲(chǔ)的采用所述加 解密算法的解密程序、預(yù)先存儲(chǔ)的運(yùn)行程序和所述隨機(jī)數(shù);
步驟24,運(yùn)行所述目標(biāo)文件時(shí),
首先,所述程序運(yùn)行單元11調(diào)用所述運(yùn)行程序,所述運(yùn)行程序提供運(yùn)行所 述目標(biāo)文件的入口,控制先后調(diào)用所述解密密鑰生成程序、所述解密程序;
然后,所述程序運(yùn)行單元11調(diào)用所述解密密鑰生成程序,根據(jù)解密密鑰生 成參數(shù),通過(guò)所述密鑰生成算法算出解密密鑰,并將所述解密密鑰傳送至所述加 解密單元13;所述解密密鑰生成參數(shù)包括所述程序運(yùn)行單元中存儲(chǔ)的隨機(jī)數(shù)和 所述硬件指紋;
最后,所述加解密單元13調(diào)用所述解密程序,根據(jù)所述解密密鑰,通過(guò)所 述加解密算法通過(guò)對(duì)所述加密后的目標(biāo)程序進(jìn)行解密; 所述加解密單元13可以是高速加解密芯片。
如圖3所示,本發(fā)明所述的軟硬件結(jié)合的保護(hù)程序的方法的另一種具體實(shí)施 包括以下步驟
步驟31,去除所述程序運(yùn)行單元11中的目標(biāo)程序中的冗余信息和調(diào)試信息; 此步驟將所述目標(biāo)程序中的冗余信息和調(diào)試信息去除,可以減小對(duì)所述目標(biāo) 程序反匯編后的可讀性;
步驟32,對(duì)所述目標(biāo)程序,使用混淆技術(shù),即在所述目標(biāo)程序中,錯(cuò)亂函 數(shù)名,以及函數(shù)在編譯后程序中的位置,增加復(fù)雜調(diào)轉(zhuǎn),增加破解難度; 此步驟對(duì)所述目標(biāo)程序進(jìn)行混淆,同樣增加了破解程序的難度;
步驟33,所述程序運(yùn)行單元11取得其硬件指紋,并根據(jù)所述硬件指紋、預(yù) 先設(shè)定的用戶口令、 一隨機(jī)數(shù),通過(guò)SHA1算法算出加密密鑰,并將所述加密密 鑰傳送至所述加解密單元13;所述程序運(yùn)行單元11存儲(chǔ)該隨機(jī)數(shù);
所述硬件指紋包括CPU的ID號(hào)、存儲(chǔ)器的ID號(hào)、網(wǎng)卡的MAC (介質(zhì)訪問(wèn)控制)地址;
所述隨機(jī)數(shù)由一隨機(jī)數(shù)發(fā)生器生成,所述隨機(jī)數(shù)發(fā)生器可以為真隨機(jī)數(shù)發(fā)生 器芯片,由于真隨機(jī)數(shù)的作用,使得每次算出的加密密鑰不同,增加了破解的難
度;
SHA1算法將任意長(zhǎng)的數(shù)據(jù)轉(zhuǎn)換為固定長(zhǎng)度的數(shù)據(jù),不同的輸入數(shù)據(jù)運(yùn)算后 的結(jié)果不同;
步驟34,所述加解密單元13根據(jù)所述加密密鑰,調(diào)用AES算法對(duì)所述目
標(biāo)程序進(jìn)行加密;
根據(jù)另一種具體實(shí)施方式
,所述加密操作也可以由所述程序運(yùn)行單元11執(zhí) 行,所述程序運(yùn)行單元12采用AES算法,根據(jù)所述加密密鑰,對(duì)所述目標(biāo)程序 進(jìn)行力口密;
步驟35,所述程序運(yùn)行單元將一文件組中的程序和數(shù)據(jù)進(jìn)行組合,生成一 新的目標(biāo)文件;所述文件組中的程序包括加密后的目標(biāo)程序、預(yù)先存儲(chǔ)的采用所 述SHA1算法的解密密鑰生成程序、預(yù)先存儲(chǔ)的采用AES算法的解密程序、預(yù) 先存儲(chǔ)的運(yùn)行程序、所述隨機(jī)數(shù)、預(yù)先存儲(chǔ)的權(quán)限判斷程序、加載程序到內(nèi)存空 間的加載器代碼,以及目標(biāo)文件加載動(dòng)態(tài)庫(kù)時(shí)對(duì)加載動(dòng)態(tài)庫(kù)的調(diào)整代碼組合在一 起,生成一個(gè)新的目標(biāo)文件;
在目標(biāo)文件中,將AES算法解密程序和隨機(jī)數(shù)分開(kāi)存儲(chǔ),這樣也可以增加 破解目標(biāo)程序的難度。
步驟36,運(yùn)行所述目標(biāo)文件,所述程序運(yùn)行單元11調(diào)用所述運(yùn)行程序,所 述運(yùn)行程序提供運(yùn)行所述目標(biāo)文件的入口 ,控制首先調(diào)用所述權(quán)限判斷程序,當(dāng) 判斷到用戶具有運(yùn)行權(quán)限時(shí),繼續(xù)調(diào)用解密密鑰生成程序、解密程序、加載程序 到內(nèi)存空間的加載器代碼,以及目標(biāo)文件加載動(dòng)態(tài)庫(kù)時(shí)對(duì)加載動(dòng)態(tài)庫(kù)的調(diào)整代 碼;
步驟37,所述程序運(yùn)行單元11調(diào)用所述權(quán)限判斷程序,根據(jù)所述權(quán)限判斷 單元ll中插入的介質(zhì),判斷所述目標(biāo)程序是否具有運(yùn)行權(quán)限; 如果具有,轉(zhuǎn)至步驟38;否則,轉(zhuǎn)至步驟311;
當(dāng)所述權(quán)限判斷單元12為IC卡讀卡機(jī)時(shí),判斷其中是否插入IC卡,如插 入則進(jìn)一步判斷該IC卡是否為具有運(yùn)行權(quán)限的IC卡,而判斷所述目標(biāo)程序是否 具有運(yùn)行權(quán)限;
當(dāng)所述權(quán)限判斷單元12為USB接口時(shí),其判斷其中是否插入U(xiǎn)SBkey,如 插入則進(jìn)一步判斷該USBkey是否為具有運(yùn)行權(quán)限的USBkey,而判斷所述目標(biāo) 程序是否具有運(yùn)行權(quán)限;
所述權(quán)限判斷單元12判斷其中插入的介質(zhì)是否具有運(yùn)行權(quán)限的方法是內(nèi)外
部認(rèn)證的數(shù)據(jù)交換方法,例如中國(guó)銀聯(lián)規(guī)范中所描述的金融接口設(shè)備與銀行 IC卡或Key的4又限判斷機(jī)制;
步驟38,所述程序運(yùn)行單元11調(diào)用所述解密密鑰生成程序,根據(jù)所述硬件 指紋,用戶輸入的口令,所存儲(chǔ)的隨機(jī)數(shù),通過(guò)SHA1算法算出解密密鑰,并將 所述解密密鑰傳送至所述加解密單元13;
步驟39,所述加解密單元13調(diào)用所述解密程序,根據(jù)所述解密密鑰,調(diào)用 AES算法對(duì)所述目標(biāo)程序進(jìn)行解密;
由于AES算法為對(duì)稱密鑰算法,因此當(dāng)所述解密密鑰和所述加密密鑰相同 時(shí),目標(biāo)程序可成功運(yùn)行;
當(dāng)加密后的目標(biāo)程序在其他硬件平臺(tái)上運(yùn)行時(shí),即使該硬件平臺(tái)與所述程序 運(yùn)行單元11的配置相同,但是由于該硬件平臺(tái)與所述程序運(yùn)行單元11的硬件指 紋不同,因此算出的解密密鑰與所述加密密鑰不同,無(wú)法成功運(yùn)行目標(biāo)程序;
當(dāng)用于輸入的口令與所述預(yù)定的用戶口令不同時(shí),算出的解密密鑰與所述加 密密鑰不同,無(wú)法成功運(yùn)行程序;
步驟310:所述程序運(yùn)行單元11調(diào)用加載程序到內(nèi)存空間的加載器代碼, 以及目標(biāo)文件加載動(dòng)態(tài)庫(kù)時(shí)對(duì)加載動(dòng)態(tài)庫(kù)的調(diào)整代碼,加載程序到內(nèi)存空間的加 載器,并調(diào)整動(dòng)態(tài)庫(kù);
步驟311:結(jié)束。其中,所述加載程序到內(nèi)存空間的加載器,實(shí)現(xiàn)的具體步驟如下
當(dāng)在LINUX操作系統(tǒng)下時(shí),檢查動(dòng)態(tài)庫(kù)的有效性,查看動(dòng)態(tài)庫(kù)數(shù)據(jù)的ELF 頭和程序頭(在WINDOWS操作系統(tǒng)下時(shí),查看動(dòng)態(tài)庫(kù)數(shù)據(jù)的DOS頭和PE頭); 進(jìn)行校驗(yàn),防止由于存儲(chǔ)介質(zhì)損耗或被惡意墓改而帶來(lái)的錯(cuò)誤;
分配虛擬內(nèi)存塊按照動(dòng)態(tài)庫(kù)自身內(nèi)存映像地址和鏡像大小,分配內(nèi)存塊;
設(shè)置內(nèi)存權(quán)限,清除需要清空的內(nèi)存區(qū)域,將程序運(yùn)行參數(shù)、環(huán)境變量參數(shù) 等加載到正確的堆棧地址中;
將程序調(diào)轉(zhuǎn)到真正的程序入口點(diǎn)處,完成程序的加載。
所述目標(biāo)文件加載動(dòng)態(tài)庫(kù)時(shí)對(duì)加載動(dòng)態(tài)庫(kù)的調(diào)整,具體的實(shí)現(xiàn)步驟如下 分析程序需要調(diào)用動(dòng)態(tài)庫(kù)的名字和調(diào)用的函數(shù)方法名,將兩者進(jìn)行比對(duì),如 果一致,進(jìn)行綁定;
將所需動(dòng)態(tài)庫(kù)文件去除冗余信息,進(jìn)行編譯,生成注入目標(biāo)程序的動(dòng)態(tài)庫(kù)二
進(jìn)制文件;
實(shí)現(xiàn)對(duì)動(dòng)態(tài)庫(kù)二進(jìn)制文件的加載(使用加載器加載)、映射和修改工作,具 體過(guò)程如下
使用加載器分配虛擬內(nèi)存塊,按照動(dòng)態(tài)庫(kù)自身內(nèi)存映像地址和鏡像大小,分 配內(nèi)存塊。但由于虛擬地址經(jīng)常被程序或其他動(dòng)態(tài)庫(kù)占用,所以當(dāng)無(wú)法分配時(shí), 可隨機(jī)分配指定大小的內(nèi)存塊,這種情況下,需要調(diào)整動(dòng)態(tài)庫(kù)的重定位地址,調(diào) 整重定位指令。
進(jìn)行加密保護(hù)后的程序運(yùn)行時(shí),程序流為以下過(guò)程
1、 判斷用戶權(quán)限;
2、 等待用戶口令,取得硬件指紋,調(diào)用AES解密算法,算出解密密鑰;
3、 使用所述解密密鑰解密目標(biāo)程序,并加載;
4、 判斷需調(diào)用的動(dòng)態(tài)庫(kù),加載動(dòng)態(tài)庫(kù);
5、 設(shè)置環(huán)境變量,輸入?yún)?shù),設(shè)置堆棧、內(nèi)存權(quán)限,完成程序調(diào)轉(zhuǎn);
6、 程序運(yùn)行。
使用本發(fā)明所述的軟硬件結(jié)合的保護(hù)程序的方法,可選采用軟件方式或硬件 方式對(duì)目標(biāo)程序進(jìn)行加密,采用硬件方式實(shí)現(xiàn)對(duì)目標(biāo)程序的解密,由于結(jié)合了軟硬件進(jìn)行加解密,采用了高速的加解密芯片,提升了加解密的速度,增加了破解 程序的難度。
另外,本發(fā)明所述的軟硬件結(jié)合的保護(hù)程序的方法,對(duì)目標(biāo)程序采取了去除 冗余信息、混淆技術(shù),并通過(guò)判斷目標(biāo)程序的權(quán)限的方式,進(jìn)一步對(duì)目標(biāo)程序進(jìn) 行保護(hù),加大破解程序的難度。
以上說(shuō)明對(duì)本發(fā)明而言只是說(shuō)明性的,而非限制性的,本領(lǐng)域普通技術(shù)人 員理解,在不脫離本發(fā)明權(quán)利要求所限定的精神和范圍的情況下,可做出許多
修改,變化,或等效,但都將落入本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1、一種軟硬件結(jié)合的保護(hù)程序的方法,其特征在于,其包括以下步驟(1)一程序運(yùn)行單元取得其硬件指紋,并根據(jù)加密密鑰生成參數(shù),通過(guò)一密鑰生成算法算出加密密鑰;所述加密密鑰生成參數(shù)包括所述硬件指紋和一隨機(jī)數(shù),所述程序運(yùn)行單元存儲(chǔ)該隨機(jī)數(shù);(2)根據(jù)所述加密密鑰,通過(guò)一加解密算法,對(duì)所述程序運(yùn)行單元儲(chǔ)存的目標(biāo)程序進(jìn)行加密;(3)所述程序運(yùn)行單元將一文件組中的程序和數(shù)據(jù)進(jìn)行組合,生成一新的目標(biāo)文件;所述文件組中的程序包括加密后的目標(biāo)程序、預(yù)先存儲(chǔ)的采用所述密鑰生成算法的解密密鑰生成程序、預(yù)先存儲(chǔ)的采用所述加解密算法的解密程序、預(yù)先存儲(chǔ)的運(yùn)行程序和所述隨機(jī)數(shù);(4)運(yùn)行所述目標(biāo)文件;(5)所述程序運(yùn)行單元調(diào)用所述解密密鑰生成程序,根據(jù)解密密鑰生成參數(shù),通過(guò)所述密鑰生成算法算出解密密鑰,并將所述解密密鑰傳送至一加解密單元;所述解密密鑰生成參數(shù)包括所述程序運(yùn)行單元中存儲(chǔ)的隨機(jī)數(shù)、所述硬件指紋;(6)所述加解密單元調(diào)用所述解密程序,根據(jù)所述解密密鑰,通過(guò)所述加解密算法,對(duì)所述加密后的目標(biāo)程序進(jìn)行解密;(7)結(jié)束。
2、 根據(jù)權(quán)利要求1所述的軟硬件結(jié)合的保護(hù)程序的方法,其特征在于,在 步驟(2)中,所述加密操作由所述程序運(yùn)行單元執(zhí)行。
3、 根據(jù)權(quán)利要求1所述的軟硬件結(jié)合的保護(hù)程序的方法,其特征在于,在 步驟(2)中,所述加密操作由一加解密單元執(zhí)行,所述加密密鑰由所述程序運(yùn) 行單元傳送至所述加解密單元。
4、 根據(jù)權(quán)利要求1所述的軟硬件結(jié)合的保護(hù)程序的方法,其特征在于,所 述加密密鑰生成參數(shù)還包括用戶口令,所述解密密鑰生成參數(shù)還包括用戶輸入的 口令。
5、 根據(jù)權(quán)利要求1至4中任一權(quán)利要求所述的軟硬件結(jié)合的保護(hù)程序的方 法,其特征在于,在步驟(l)中,所述隨機(jī)數(shù)由一真隨機(jī)數(shù)發(fā)生器生成。
6、 根據(jù)權(quán)利要求1所述的軟硬件結(jié)合的保護(hù)程序的方法,其特征在于,所述文件組中的程序和數(shù)據(jù)還包括權(quán)限判斷程序; 在步驟(4 )和步驟(5 )之間,還包括步驟(41 ):所述程序運(yùn)行單元調(diào)用所述權(quán)限判斷程序,根據(jù)一權(quán)限判斷單元中插入的介 質(zhì),判斷所述目標(biāo)程序是否具有運(yùn)行權(quán)限; 如果有,轉(zhuǎn)至步驟(5); 否則,轉(zhuǎn)至步驟(7)。
7、 根據(jù)權(quán)利要求1所述的軟硬件結(jié)合的保護(hù)程序的方法,其特征在于,其 在步驟(1)前還包括以下步驟(11 )去除一程序運(yùn)行單元中的目標(biāo)程序中的冗余信息和調(diào)試信息。
8、 根據(jù)權(quán)利要求1所述的軟硬件結(jié)合的保護(hù)程序的方法,其特征在于,其 在步驟(11 )和步驟(1 )之間.還包括以下步驟(12 )對(duì)一程序運(yùn)行單元中的目標(biāo)程序進(jìn)行混淆處理。
全文摘要
本發(fā)明提供了一種軟硬件結(jié)合的保護(hù)程序的方法,其包括以下步驟(1)算出加密密鑰;(2)根據(jù)所述加密密鑰,通過(guò)一加解密算法,對(duì)所述程序運(yùn)行單元儲(chǔ)存的目標(biāo)程序進(jìn)行加密;(3)所述程序運(yùn)行單元將一文件組中的程序和數(shù)據(jù)進(jìn)行組合,生成一新的目標(biāo)文件;(4)運(yùn)行所述目標(biāo)文件;(5)算出解密密鑰,并將所述解密密鑰傳送至一加解密單元;(6)所述加解密單元調(diào)用所述解密程序,根據(jù)所述解密密鑰,通過(guò)所述加解密算法,對(duì)所述加密后的目標(biāo)程序進(jìn)行解密;(7)結(jié)束。本發(fā)明提供的軟硬件結(jié)合的保護(hù)程序的方法,采用軟件和硬件結(jié)合的方式對(duì)程序進(jìn)行保護(hù),提高了程序運(yùn)行的速度,并增加了破解程序的難度。
文檔編號(hào)G06F21/00GK101419652SQ20081011879
公開(kāi)日2009年4月29日 申請(qǐng)日期2008年8月22日 優(yōu)先權(quán)日2008年8月22日
發(fā)明者崔志民, 利 李, 王永志, 甘景全, 陳江寧 申請(qǐng)人:航天信息股份有限公司