欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于安全芯片的軟件保護(hù)方法和系統(tǒng)的制作方法

文檔序號(hào):6651606閱讀:177來(lái)源:國(guó)知局
專利名稱:基于安全芯片的軟件保護(hù)方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及信息安全和可信計(jì)算技術(shù)領(lǐng)域,具體地,本發(fā)明涉及一種可防止破解的軟件保護(hù)方法及相應(yīng)的保護(hù)系統(tǒng)。
背景技術(shù)
軟件保護(hù)技術(shù)一直是信息安全領(lǐng)域研究的一個(gè)熱點(diǎn)。在當(dāng)今的網(wǎng)絡(luò)時(shí)代,軟件一旦以某種方式被破解或被非法拷貝就會(huì)給軟件的著作權(quán)人帶來(lái)巨大的損失。因此,已經(jīng)開發(fā)出了各種保護(hù)方法,其中比較常見的軟件保護(hù)方法有以下幾種(1)在軟件安裝過程中輸入口令或密鑰的方法,其中,如果輸入的口令不正確,則終止安裝過程或只能使用有限的功能。但是,一旦口令被竊取或被擁有者公開,就可以任意安裝該軟件。
(2)綁定計(jì)算機(jī)的硬件(硬盤或網(wǎng)卡)或操作系統(tǒng)配置信息的方法,其存在的問題是,當(dāng)硬件或操作系統(tǒng)發(fā)生改變時(shí)需要重新綁定軟件,并且通過更換硬件的方式即可更換軟件安裝的位置。
(3)通過硬件在線保護(hù)的方法,即通過檢測(cè)某個(gè)硬件開關(guān)(如USB卡等)是否在線來(lái)決定軟件能否運(yùn)行。這種方法的問題是,硬件開關(guān)類型彼此不兼容,所以多個(gè)軟件需要多個(gè)硬件保護(hù),造成使用不便而且容易仿制。該方法的另一個(gè)問題是軟件中包含的檢測(cè)硬件在線的代碼,可以通過反編譯的方法跳過,造成失效,如圖1所示。
(4)通過加密卡保護(hù)的方法,即軟件只有通過加密卡的解密才能執(zhí)行。這種方法的問題是解密后的軟件完整地存放在內(nèi)存中,破解者可以用拷貝內(nèi)存的方法將軟件復(fù)制出去,從而破解軟件。
綜上所述,現(xiàn)有的方法都存在一些缺陷,尤其在面對(duì)反編譯和內(nèi)存拷貝技術(shù)時(shí),從理論上講,通過上述方法保護(hù)的軟件都是可以被破解的。

發(fā)明內(nèi)容
鑒于上述的各種問題,完成了本發(fā)明。本發(fā)明的目的是提出了一種基于安全芯片的軟件保護(hù)技術(shù),應(yīng)用這種保護(hù)技術(shù)可以防止軟件被破解和非法使用,而且對(duì)反編譯和內(nèi)存拷貝技術(shù)之類的破解技術(shù)也行之有效。
在本發(fā)明的一方面,提出了一種基于安全芯片的軟件保護(hù)方法,包括步驟從每個(gè)都包括多個(gè)單元的至少一個(gè)軟件中確定要保護(hù)的單元;將要保護(hù)的單元編譯成安全芯片能夠執(zhí)行的目標(biāo)文件;用與各個(gè)軟件相對(duì)應(yīng)的對(duì)稱密鑰對(duì)目標(biāo)文件進(jìn)行加密,產(chǎn)生密文單元;針對(duì)目標(biāo)文件建立調(diào)用安全芯片的函數(shù),其中把密文單元作為函數(shù)的參數(shù);用函數(shù)替換各個(gè)軟件中要保護(hù)的單元;以及將密文單元附在相應(yīng)的軟件上。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,該方法還包括步驟從認(rèn)證機(jī)構(gòu)獲得各個(gè)軟件的軟件使用方的數(shù)字證書;從數(shù)字證書中獲得公鑰;產(chǎn)生包含對(duì)稱密鑰、軟件序列號(hào)和版本號(hào)的使用許可證;用公鑰對(duì)各個(gè)使用許可證進(jìn)行加密。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,該方法進(jìn)一步包括步驟通過函數(shù)調(diào)用來(lái)在安裝在主機(jī)上的安全芯片內(nèi)執(zhí)行與要保護(hù)的單元相對(duì)應(yīng)的目標(biāo)文件。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,由主機(jī)的其它部分執(zhí)行與各個(gè)軟件中除要保護(hù)的單元之外的其它單元相對(duì)應(yīng)的目標(biāo)文件。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,在執(zhí)行與要保護(hù)的單元相對(duì)應(yīng)的目標(biāo)文件之前,還包括步驟隨機(jī)產(chǎn)生與各個(gè)軟件相對(duì)應(yīng)的RSA非對(duì)稱密鑰對(duì)并用非對(duì)稱密鑰對(duì)的公鑰向認(rèn)證機(jī)構(gòu)申請(qǐng)相應(yīng)的數(shù)字證書;在獲得數(shù)字證書的情況下利用非對(duì)稱密鑰對(duì)的私鑰對(duì)各個(gè)軟件的加密的使用許可證進(jìn)行解密,以得到各個(gè)軟件的軟件制造方的對(duì)稱密鑰;用對(duì)稱密鑰解密作為函數(shù)的參數(shù)的密文單元,以獲得目標(biāo)文件;以及在安全芯片中執(zhí)行目標(biāo)文件,并將執(zhí)行結(jié)果返回給主機(jī)。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,要保護(hù)的單元包括功能單元和數(shù)據(jù)單元中的至少之一。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,對(duì)稱密鑰是隨機(jī)產(chǎn)生的。
在本發(fā)明的另一方面,提出了一種基于安全芯片的軟件保護(hù)系統(tǒng),包括確定部分,用于從每個(gè)都包括多個(gè)單元的至少一個(gè)軟件中確定要保護(hù)的單元;編譯部分,用于將要保護(hù)的單元編譯成安全芯片能夠執(zhí)行的目標(biāo)文件;加密引擎,用與各個(gè)軟件相對(duì)應(yīng)的對(duì)稱密鑰對(duì)目標(biāo)文件進(jìn)行加密以產(chǎn)生密文單元,針對(duì)目標(biāo)文件建立調(diào)用安全芯片的函數(shù),其中把密文單元作為函數(shù)的參數(shù),以及用函數(shù)替換軟件中要保護(hù)的單元,并將密文單元附在相應(yīng)的軟件上。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,該軟件保護(hù)系統(tǒng)還包括對(duì)稱密鑰產(chǎn)生部分,用于隨機(jī)產(chǎn)生與各個(gè)軟件相對(duì)應(yīng)的對(duì)稱密鑰;非對(duì)稱加密引擎,用于從認(rèn)證機(jī)構(gòu)獲得各個(gè)軟件的軟件使用方的數(shù)字證書,以從數(shù)字證書中獲得公鑰,產(chǎn)生包含對(duì)稱密鑰、軟件序列號(hào)和版本號(hào)的各個(gè)軟件的使用許可證,以及用公鑰對(duì)各個(gè)軟件的使用許可證進(jìn)行加密。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,安全芯片包括密鑰產(chǎn)生部分,用于隨機(jī)產(chǎn)生與各個(gè)軟件相對(duì)應(yīng)的RSA非對(duì)稱密鑰對(duì)并用非對(duì)稱密鑰對(duì)的公鑰向認(rèn)證機(jī)構(gòu)申請(qǐng)相應(yīng)的數(shù)字證書;RSA算法引擎,用于在密鑰產(chǎn)生部分獲得數(shù)字證書的情況下利用非對(duì)稱密鑰對(duì)的私鑰對(duì)各個(gè)軟件的加密的使用許可證進(jìn)行解密,以得到軟件制造方的對(duì)稱密鑰;對(duì)稱算法引擎,用于用對(duì)稱密鑰對(duì)通過函數(shù)調(diào)用而得到的密文單元進(jìn)行解密,以得到目標(biāo)文件;執(zhí)行引擎,用于執(zhí)行目標(biāo)文件并將執(zhí)行結(jié)果返回到主機(jī)。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,安全芯片還包括存儲(chǔ)部分,用于存儲(chǔ)至少密文單元和目標(biāo)文件。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,由主機(jī)上除安全芯片之外的其它部分執(zhí)行與各個(gè)軟件中除要保護(hù)的單元之外的其它單元相對(duì)應(yīng)的目標(biāo)文件。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,要保護(hù)的單元包括功能單元和數(shù)據(jù)單元中的至少之一。
利用本發(fā)明的上述配置,可以徹底實(shí)現(xiàn)軟件和指定的目標(biāo)主機(jī)間的綁定關(guān)系。因?yàn)榘踩酒壎ㄔ谥鳈C(jī)上,而密鑰又綁定在安全芯片上,所以即使將軟件非法拷貝到其它的主機(jī)上,也會(huì)由于沒有匹配的私鑰而導(dǎo)致加密的部分無(wú)法解密,即軟件無(wú)法執(zhí)行。
此外,利用本發(fā)明的上述配置,可以防止通過反編譯的方法來(lái)破解。因?yàn)檐浖闹匾δ芎蛿?shù)據(jù)都是經(jīng)過加密的,并且解密私鑰的保存和使用是在安全芯片內(nèi)部進(jìn)行的,破解者無(wú)法得到,從而破解者無(wú)法通過反編譯得到軟件的全部功能。
此外,利用本發(fā)明的上述配置,可以防止通過拷貝內(nèi)存的方法來(lái)破解。因?yàn)檐浖闹匾墓δ芎蛿?shù)據(jù)都在安全芯片內(nèi)部執(zhí)行,所以內(nèi)存中沒有存儲(chǔ)完整的軟件并且破解者無(wú)法訪問安全芯片內(nèi)部,所以破解者無(wú)法通過拷貝內(nèi)存的方法得到軟件的全部功能。
此外,本發(fā)明可以使用一個(gè)安全芯片對(duì)多種軟件的保護(hù)。因?yàn)榘踩酒梢杂卸鄬?duì)非對(duì)稱密鑰,所以每對(duì)非對(duì)稱密鑰都可以保護(hù)一個(gè)和多個(gè)軟件。


圖1示出了現(xiàn)有的通過反編譯來(lái)破解軟件的示意圖;圖2示出了用來(lái)說明根據(jù)本發(fā)明實(shí)施例的軟件保護(hù)系統(tǒng)的示意圖;圖3示出了根據(jù)本發(fā)明實(shí)施例的在軟件制造方使用的軟件加密裝置的框圖;圖4示出了在根據(jù)本發(fā)明實(shí)施例的在軟件使用方的主機(jī)上安裝的安全芯片的結(jié)構(gòu)框圖;圖5是用來(lái)說明在軟件制造方對(duì)軟件進(jìn)行加密的流程圖;圖6是用來(lái)說明在軟件使用方執(zhí)行已加密的軟件的流程圖。
具體實(shí)施例方式
下面對(duì)照附圖詳細(xì)描述本發(fā)明的具體實(shí)施例,其中出于清楚說明的目的,省略了本領(lǐng)域的普通技術(shù)人員公知的內(nèi)容的描述。
軟件加密方的構(gòu)成圖2示出了用來(lái)說明根據(jù)本發(fā)明實(shí)施例的軟件保護(hù)系統(tǒng)的示意圖,其中示出了軟件制造方的軟件加密裝置的部分結(jié)構(gòu)和軟件使用方的目標(biāo)主機(jī)400的部分結(jié)構(gòu)。此外,圖3示出了軟件制造方的軟件加密裝置100的結(jié)構(gòu)框圖。
如圖3所示的軟件加密裝置100包括確定部分130、編譯部分140、對(duì)稱加密引擎150、對(duì)稱密鑰產(chǎn)生部分110和非對(duì)稱加密引擎120。
如圖2所示,軟件制造方通過下載或者其它方式從例如第三方認(rèn)證機(jī)構(gòu)的證書機(jī)構(gòu)300得到軟件使用方的數(shù)字證書C,其中從數(shù)字證書C中可以獲得軟件使用方的公鑰pubAKey。
然后,確定部分130從存儲(chǔ)器(未示出)讀入包括功能單元FU1、FU2、FU3、FU4和數(shù)據(jù)單元DU1、DU2的要保護(hù)的原始軟件,并確定其中需要保護(hù)的功能單元FU2和FU3和需要保護(hù)的數(shù)據(jù)單元DU1和DU2。
編譯部分140將確定的功能單元FU2、FU3和數(shù)據(jù)單元DU1、DU2交叉編譯成軟件使用方主機(jī)上的安全芯片能夠執(zhí)行的目標(biāo)文件FU2*、FU3*、DU1*和DU2*。
對(duì)稱密鑰產(chǎn)生部分110例如使用3DES對(duì)稱算法之類的算法產(chǎn)生對(duì)稱密鑰SKey,并通過非對(duì)稱加密部分120將其傳送給對(duì)稱加密引擎150。然后對(duì)稱加密引擎150用該密鑰SKey對(duì)目標(biāo)文件FU2*、FU3*、DU1*和DU2*進(jìn)行加密,產(chǎn)生密文單元FU2**、FU3**、DU1**和DU2**。
此外,對(duì)稱加密引擎150建立調(diào)用軟件使用方主機(jī)上安全芯片的函數(shù)Transmit,把密文單元FU2**、FU3**、DU1**和DU2**作為函數(shù)Transmit的參數(shù),然后替換原始軟件的FU2、FU3、DU1和DU2單元,如圖2所示。然后,將密文單元FU2**、FU3**、DU1**和DU2**附在原始軟件的后面,作為軟件的一部分。
在非對(duì)稱加密引擎120中,產(chǎn)生包含對(duì)稱密鑰SKey、軟件序列號(hào)和版本號(hào)的軟件使用許可證L,并利用使用方的公鑰pubAKey對(duì)軟件使用許可證L加密。
軟件使用方的構(gòu)成

圖4示出了在根據(jù)本發(fā)明實(shí)施例的在軟件使用方的主機(jī)上安裝的安全芯片的結(jié)構(gòu)框圖。下面結(jié)合圖4和圖2來(lái)描述如何在軟件執(zhí)行方的主機(jī)上執(zhí)行該保護(hù)的軟件。
如圖2和4所示,安全芯片200設(shè)置在軟件使用方的目標(biāo)主機(jī)400上,并且包括密鑰產(chǎn)生部分210、執(zhí)行引擎220、存儲(chǔ)部分230、接口部分240、RSA算法引擎250和對(duì)稱算法引擎260,等等。
安全芯片200內(nèi)部的密鑰產(chǎn)生部分210隨機(jī)產(chǎn)生一RSA非對(duì)稱密鑰對(duì)AKey,然后通過接口部分240用非對(duì)稱密鑰對(duì)AKey的公鑰pubAKey向第三方認(rèn)證機(jī)構(gòu)申請(qǐng)數(shù)字證書。第三方認(rèn)證機(jī)構(gòu)產(chǎn)生pubAKey的數(shù)字證書C。
軟件制造方將加密的軟件分發(fā)給軟件使用方,軟件使用方在其主機(jī)上安裝軟件,并獲得加密的軟件使用許可證L。
然后,將加密的軟件使用許可證L傳送到安全芯片200內(nèi),并和非對(duì)稱密鑰對(duì)Akey的私鑰priAKey一起送入RSA算法引擎250進(jìn)行解密,得到軟件制造方的對(duì)稱密鑰SKey。
如圖2所示,在軟件使用方的主機(jī)400上運(yùn)行單元FU1和FU4。
當(dāng)運(yùn)行到受保護(hù)的單元時(shí),通過函數(shù)調(diào)用(CALL Transmit),依次將密文單元FU2**、FU3**、DU1**和DU2**作為參數(shù)送入安全芯片200內(nèi),并存儲(chǔ)在存儲(chǔ)部分230中。
然后,將對(duì)稱密鑰SKey和密文單元FU2**、FU3**、DU1**和DU2**依次送入例如使用3DES算法的對(duì)稱算法引擎260,進(jìn)行解密,得到可運(yùn)行的目標(biāo)文件FU2*、FU3*、DU1*和DU2*,并將目標(biāo)文件FU2*、FU3*、DU1*和DU2*保存在安全芯片200的存儲(chǔ)部分230中。
接下來(lái),執(zhí)行引擎220依次從存儲(chǔ)部分230調(diào)入并執(zhí)行目標(biāo)文件FU2*、FU3*、DU1*和DU2*。在執(zhí)行上述的目標(biāo)文件FU2*、FU3*、DU1*和DU2*之后,執(zhí)行引擎220通過接口部分240依次將執(zhí)行結(jié)果返回到目標(biāo)主機(jī),由目標(biāo)主機(jī)繼續(xù)執(zhí)行軟件的其它部分。
軟件加密過程圖5示出了用來(lái)說明在軟件制造方對(duì)軟件進(jìn)行加密的流程圖。
如圖5所示,在步驟S501,軟件制造方通過下載或者其它方式從例如第三方認(rèn)證機(jī)構(gòu)的證書機(jī)構(gòu)300得到軟件使用方的數(shù)字證書C,并判斷下載是否成功。如果下載成功,在步驟S502從數(shù)字證書C中獲得軟件使用方的公鑰pubAKey。如果沒有成功下載數(shù)字證書C,則在步驟S510進(jìn)行錯(cuò)誤處理。
然后,在步驟S503,從存儲(chǔ)器(未示出)讀入包括功能單元FU1、FU2、FU3、FU4和數(shù)據(jù)單元DU1、DU2的要保護(hù)的原始軟件,并確定其中需要保護(hù)的功能單元FU2和FU3和需要保護(hù)的數(shù)據(jù)單元DU1和DU2。
接下來(lái),在步驟S504將確定的功能單元FU2、FU3和數(shù)據(jù)單元DU1、DU2交叉編譯成軟件使用方主機(jī)上的安全芯片能夠執(zhí)行的目標(biāo)文件FU2*、FU3*、DU1*和DU2*。
在步驟S505,例如使用3DES對(duì)稱算法之類的算法產(chǎn)生對(duì)稱密鑰SKey,并用該對(duì)稱密鑰SKey對(duì)目標(biāo)文件FU2*、FU3*、DU1*和DU2*進(jìn)行加密,產(chǎn)生密文單元FU2**、FU3**、DU1**和DU2**。
然后,在步驟S506,判斷用對(duì)稱密鑰SKey加密得到密文單元FU2**、FU3**、DU1**和DU2**是否成功。如果沒有成功,流程轉(zhuǎn)入步驟S510,進(jìn)行錯(cuò)誤處理。
在加密成功的情況下,在步驟S507,建立調(diào)用軟件使用方主機(jī)上安全芯片的函數(shù)Transmit,把密文單元FU2**、FU3**、DU1**和DU2**作為函數(shù)Transmit的參數(shù),然后替換原始軟件的FU2、FU3、DU1和DU2單元。然后,將密文單元FU2**、FU3**、DU1**和DU2**附在原始軟件的后面,作為軟件的一部分。
在步驟S508,產(chǎn)生包含對(duì)稱密鑰SKey、軟件序列號(hào)和版本號(hào)的軟件使用許可證L。然后,在步驟S509利用使用方的公鑰pubAKey對(duì)軟件使用許可證L加密,并判斷加密是否成功,如果不成功,則進(jìn)行步驟S510,進(jìn)行錯(cuò)誤處理,如果成功,則結(jié)束對(duì)軟件進(jìn)行加密的過程。
軟件執(zhí)行過程圖6是用來(lái)說明在軟件使用方執(zhí)行已加密的軟件的流程圖。
如圖6所示,在步驟S601,密鑰產(chǎn)生部分210隨機(jī)產(chǎn)生一RSA非對(duì)稱密鑰對(duì)AKey,然后在步驟S602通過接口部分240用非對(duì)稱密鑰AKey的公鑰pubAKey向第三方認(rèn)證機(jī)構(gòu)申請(qǐng)數(shù)字證書,并判斷申請(qǐng)是否成功。如果不成功,則在步驟S613轉(zhuǎn)入錯(cuò)誤處理。如果第三方認(rèn)證機(jī)構(gòu)產(chǎn)生pubAKey的數(shù)字證書C并且軟件制造方將加密的軟件分發(fā)給軟件使用方,則在步驟S603在軟件使用方的主機(jī)上安裝軟件,并獲得加密的軟件使用許可證L。
在步驟S604,將加密的軟件使用許可證L傳送到安全芯片200內(nèi),并和非對(duì)稱密鑰對(duì)Akey的私鑰priAKey一起送入RSA算法引擎250進(jìn)行解密,并判斷解密是否成功。如果解密成功,則在步驟S605得到軟件制造方的對(duì)稱密鑰SKey。
然后,如圖2和6所示,在步驟S606,在軟件使用方的主機(jī)400上運(yùn)行單元FU1和FU4。
當(dāng)運(yùn)行到受保護(hù)的單元時(shí),例如密文單元FU2**,在步驟S607通過函數(shù)調(diào)用(CALL Transmit),將密文單元FU2**作為參數(shù)送入安全芯片200內(nèi),并存儲(chǔ)在存儲(chǔ)部分230中。
然后,在步驟S608,將對(duì)稱密鑰SKey和密文單元FU2**送入例如使用3DES算法的對(duì)稱算法引擎260,進(jìn)行解密,得到可運(yùn)行的目標(biāo)文件FU2*,并在步驟S609將目標(biāo)文件FU2*保存在安全芯片200的存儲(chǔ)部分230中。
接下來(lái),在步驟S610,執(zhí)行引擎220依次從存儲(chǔ)部分230調(diào)入并執(zhí)行目標(biāo)文件FU2*。在執(zhí)行上述的目標(biāo)文件FU2*之后,在步驟S611執(zhí)行引擎220通過接口部分240依次將執(zhí)行結(jié)果返回到目標(biāo)主機(jī)。
在步驟S612,如果下一單元仍舊是受保護(hù)的單元,例如FU3*,則流程轉(zhuǎn)到步驟S607,針對(duì)密文單元FU3*進(jìn)行如上所述相同的處理。在上述的密文單元執(zhí)行結(jié)束之后,將執(zhí)行結(jié)果返回目標(biāo)主機(jī),由目標(biāo)主機(jī)繼續(xù)執(zhí)行軟件的其它部分。
以上雖然以單個(gè)軟件為例說明了本發(fā)明的實(shí)施例,但是,本發(fā)明同樣可以應(yīng)用于多個(gè)軟件,例如軟件制造方可以產(chǎn)生多對(duì)對(duì)稱密鑰來(lái)分別對(duì)多個(gè)軟件進(jìn)行上述的加密過程,以及在軟件使用方,可以在一個(gè)安全芯片上用多個(gè)非對(duì)稱密鑰實(shí)現(xiàn)對(duì)多個(gè)軟件的保護(hù)。
最后所應(yīng)說明的是以上實(shí)施例僅用于說明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對(duì)本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種基于安全芯片的軟件保護(hù)方法,包括步驟從每個(gè)都包括多個(gè)單元的至少一個(gè)軟件中確定要保護(hù)的單元;將所述要保護(hù)的單元編譯成所述安全芯片能夠執(zhí)行的目標(biāo)文件;用與各個(gè)軟件相對(duì)應(yīng)的對(duì)稱密鑰對(duì)所述目標(biāo)文件進(jìn)行加密,產(chǎn)生密文單元;針對(duì)所述目標(biāo)文件建立調(diào)用所述安全芯片的函數(shù),其中把所述密文單元作為所述函數(shù)的參數(shù);用所述函數(shù)替換各個(gè)軟件中所述要保護(hù)的單元;以及將所述密文單元附在相應(yīng)的軟件上。
2.如權(quán)利要求1所述的軟件保護(hù)方法,還包括步驟從認(rèn)證機(jī)構(gòu)獲得各個(gè)軟件的軟件使用方的數(shù)字證書;從所述數(shù)字證書中獲得公鑰;產(chǎn)生包含所述對(duì)稱密鑰、軟件序列號(hào)和版本號(hào)的使用許可證;用所述公鑰對(duì)各個(gè)使用許可證進(jìn)行加密。
3.如權(quán)利要求2所述的軟件保護(hù)方法,進(jìn)一步包括步驟通過函數(shù)調(diào)用來(lái)在安裝在主機(jī)上的安全芯片內(nèi)執(zhí)行與所述要保護(hù)的單元相對(duì)應(yīng)的目標(biāo)文件。
4.如權(quán)利要求3所述軟件保護(hù)方法,其特征在于,由主機(jī)的其它部分執(zhí)行與各個(gè)軟件中除所述要保護(hù)的單元之外的其它單元相對(duì)應(yīng)的目標(biāo)文件。
5.如權(quán)利要求3或4所述的軟件保護(hù)方法,其特征在于,在執(zhí)行與所述要保護(hù)的單元相對(duì)應(yīng)的目標(biāo)文件之前,還包括步驟隨機(jī)產(chǎn)生與各個(gè)軟件相對(duì)應(yīng)的RSA非對(duì)稱密鑰對(duì)并用非對(duì)稱密鑰對(duì)的公鑰向認(rèn)證機(jī)構(gòu)申請(qǐng)相應(yīng)的數(shù)字證書;在獲得數(shù)字證書的情況下利用非對(duì)稱密鑰對(duì)的私鑰對(duì)各個(gè)軟件的加密的使用許可證進(jìn)行解密,以得到各個(gè)軟件的軟件制造方的對(duì)稱密鑰;用所述對(duì)稱密鑰解密作為函數(shù)的參數(shù)的密文單元,以獲得所述目標(biāo)文件;以及在所述安全芯片中執(zhí)行所述目標(biāo)文件,并將執(zhí)行結(jié)果返回給主機(jī)。
6.如權(quán)利要求5所述的軟件保護(hù)方法,其特征在于,所述要保護(hù)的單元包括功能單元和數(shù)據(jù)單元中的至少之一。
7.如權(quán)利要求1所述的軟件保護(hù)方法,其特征在于,所述對(duì)稱密鑰是隨機(jī)產(chǎn)生的。
8.一種基于安全芯片的軟件保護(hù)系統(tǒng),包括確定部分,用于從每個(gè)都包括多個(gè)單元的至少一個(gè)軟件中確定要保護(hù)的單元;編譯部分,用于將所述要保護(hù)的單元編譯成所述安全芯片能夠執(zhí)行的目標(biāo)文件;加密引擎,用與各個(gè)軟件相對(duì)應(yīng)的對(duì)稱密鑰對(duì)所述目標(biāo)文件進(jìn)行加密以產(chǎn)生密文單元,針對(duì)所述目標(biāo)文件建立調(diào)用所述安全芯片的函數(shù),其中把所述密文單元作為所述函數(shù)的參數(shù),以及用所述函數(shù)替換軟件中所述要保護(hù)的單元,并將所述密文單元附在相應(yīng)的軟件上。
9.如權(quán)利要求8所述的軟件保護(hù)系統(tǒng),還包括對(duì)稱密鑰產(chǎn)生部分,用于隨機(jī)產(chǎn)生所述與各個(gè)軟件相對(duì)應(yīng)的對(duì)稱密鑰;非對(duì)稱加密引擎,用于從認(rèn)證機(jī)構(gòu)獲得各個(gè)軟件的軟件使用方的數(shù)字證書,以從所述數(shù)字證書中獲得公鑰,產(chǎn)生包含所述對(duì)稱密鑰、軟件序列號(hào)和版本號(hào)的各個(gè)軟件的使用許可證,以及用所述公鑰對(duì)各個(gè)軟件的使用許可證進(jìn)行加密。
10.如權(quán)利要求9所述的軟件保護(hù)系統(tǒng),其特征在于,所述安全芯片包括密鑰產(chǎn)生部分,用于隨機(jī)產(chǎn)生與所述各個(gè)軟件相對(duì)應(yīng)的RSA非對(duì)稱密鑰對(duì)并用非對(duì)稱密鑰對(duì)的公鑰向認(rèn)證機(jī)構(gòu)申請(qǐng)相應(yīng)的數(shù)字證書;RSA算法引擎,用于在密鑰產(chǎn)生部分獲得數(shù)字證書的情況下利用非對(duì)稱密鑰對(duì)的私鑰對(duì)各個(gè)軟件的加密的使用許可證進(jìn)行解密,以得到軟件制造方的對(duì)稱密鑰;對(duì)稱算法引擎,用于用所述對(duì)稱密鑰對(duì)通過函數(shù)調(diào)用而得到的密文單元進(jìn)行解密,以得到目標(biāo)文件;執(zhí)行引擎,用于執(zhí)行所述目標(biāo)文件并將執(zhí)行結(jié)果返回到主機(jī)。
11.如權(quán)利要求10所述的軟件保護(hù)系統(tǒng),其特征在于,所述安全芯片還包括存儲(chǔ)部分,用于存儲(chǔ)至少所述密文單元和目標(biāo)文件。
12.如權(quán)利要求11所述的軟件保護(hù)系統(tǒng),其特征在于,由主機(jī)上除安全芯片之外的其它部分執(zhí)行與各個(gè)軟件中除所述要保護(hù)的單元之外的其它單元相對(duì)應(yīng)的目標(biāo)文件。
13.如權(quán)利要求11或12所述的軟件保護(hù)系統(tǒng),其特征在于,所述要保護(hù)的單元包括功能單元和數(shù)據(jù)單元中的至少之一。
全文摘要
公開了一種基于安全芯片的軟件保護(hù)方法,包括步驟從每個(gè)都包括多個(gè)單元的至少一個(gè)軟件中確定要保護(hù)的單元;將所述要保護(hù)的單元編譯成所述安全芯片能夠執(zhí)行的目標(biāo)文件;用與各個(gè)軟件相對(duì)應(yīng)的對(duì)稱密鑰對(duì)所述目標(biāo)文件進(jìn)行加密,產(chǎn)生密文單元;針對(duì)所述目標(biāo)文件建立調(diào)用所述安全芯片的函數(shù),其中把所述密文單元作為所述函數(shù)的參數(shù);用所述函數(shù)替換各個(gè)軟件中所述要保護(hù)的單元;以及將所述密文單元附在相應(yīng)的軟件上。應(yīng)用本發(fā)明的上述配置,可以防止軟件被破解和非法使用,而且對(duì)反編譯和內(nèi)存拷貝技術(shù)之類的破解技術(shù)也行之有效。
文檔編號(hào)G06F1/00GK1987882SQ200510134079
公開日2007年6月27日 申請(qǐng)日期2005年12月23日 優(yōu)先權(quán)日2005年12月23日
發(fā)明者郭軼尊, 尹萍, 寧曉魁, 林洋 申請(qǐng)人:聯(lián)想(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
徐闻县| 明水县| 东莞市| 兴城市| 呼和浩特市| 宝应县| 古交市| 贵溪市| 白城市| 桃园县| 顺义区| 林芝县| 宁远县| 五大连池市| 同江市| 拉萨市| 双鸭山市| 信阳市| 思茅市| 那曲县| 沐川县| 昭觉县| 新建县| 广西| 德钦县| 武安市| 昌乐县| 九龙坡区| 苏尼特左旗| 板桥市| 芦山县| 郸城县| 团风县| 蚌埠市| 合阳县| 边坝县| 柳州市| 无极县| 凤翔县| 昌都县| 阳曲县|