專利名稱:使用動態(tài)實體的軟件執(zhí)行保護(hù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及計算機(jī)程序代碼的執(zhí)行保護(hù),尤其涉及通過使用動態(tài)實體對靜態(tài)數(shù)據(jù)的加密和解密。
強(qiáng)執(zhí)行保護(hù)方法可以利用連接至例如并口或者串口(諸如,PC的打印機(jī)端口或者USB(通用串行總線)端口)的所謂硬件加密狗(hardwaredongle),所述硬件加密狗是一種動態(tài)實體類型的實例。加密狗典型地是無源元件,但是包含了裝載有數(shù)個加密/解密密鑰的可編程存儲器??梢栽赑C和加密狗之間交換信息。例如可以以下面兩種方式使用這種加密狗1.用于軟件執(zhí)行的保護(hù),在將被保護(hù)的軟件周圍產(chǎn)生外殼程序(shell program)。在產(chǎn)生外殼程序的過程中,根據(jù)來自加密狗的密鑰對原軟件全部或者部分加密,之后將該加密軟件嵌入在外殼程序中。因而所產(chǎn)生的外殼程序是基于來自加密狗的密鑰以及用于解密該軟件的算法。當(dāng)外殼程序啟動時,從加密狗中檢索密鑰并提取加密軟件,對所述加密軟件進(jìn)行解密,并運行原軟件。在加密狗不存在的情況下,或者使用了包含不同密鑰的不同加密狗時,解密失敗。
2.同樣用于軟件的執(zhí)行保護(hù),可以使用進(jìn)程的入口點取代原程序的入口點。提供邏輯函數(shù),并且該邏輯函數(shù)從加密狗中檢索密鑰。基于檢索到的密鑰,布置復(fù)雜的邏輯以確定所述加密狗是否是正確的加密狗。在加密狗成功識別之后,函數(shù)調(diào)用使得原軟件執(zhí)行的原程序的入口點。
然而上述方法存在一些不足。
在PC和加密狗之間,不同通信會話的通信內(nèi)容通常是相同的,這就意味著,通過對所述通信進(jìn)行線路竊聽就可能檢索出協(xié)議以及密鑰,那么隨后就可能在不需要原加密狗的情況下以硬件形式或者軟件形式模擬該加密狗。
在識別加密狗之后,就調(diào)用原程序的入口點,以原樣在存儲器中提供原程序。經(jīng)驗豐富的用戶就能夠?qū)⒃摮绦驅(qū)懟乜蓤?zhí)行所述程序的一個便攜式工具。
在加密狗校驗代碼中通常有一個或者數(shù)個if指令,能夠通過使用反邏輯容易地替代該if指令。
此外,G.Hachez在2003年3月,Belgium,Louvain-La-Neuve,UCL的博士論文題目“適用于對軟件水印和智能卡有貢獻(xiàn)的電子商務(wù)的軟件保護(hù)的對比研究(A comparative study of software protectiontools suited for E-commerce with contribution to softwarewatermarking and smart cards)”中討論了在通用和硬件加密狗中的安全工具。
根據(jù)該文獻(xiàn),新近的硬件加密狗版本能夠插入在USB端口,并且通常嵌入在智能卡的CPU中。這些版本包括能夠?qū)τ诿總€質(zhì)詢(challenge)都返回不同值的微控制器。軟件將通過質(zhì)詢定期地訊問加密狗,并驗證答案的正確性。最先進(jìn)的加密狗包含具有小量存儲器的小微處理器。在這種情況下,軟件的某些關(guān)鍵部分在加密狗中執(zhí)行。
上面討論的硬件加密狗版本的方法具有以下缺點。首先,存在能夠成功移除被保護(hù)軟件中的加密狗的所有校驗的危險。第二,存在加密狗被入侵者模擬的危險。
因此,存在一種對于軟件執(zhí)行保護(hù)方法的需要,所述軟件保護(hù)方法用于使得即使移除了動態(tài)實體(諸如軟件中的加密狗)的校驗之后,軟件程序也不能執(zhí)行。還存在一種對于軟件保護(hù)方法的需要,所述軟件保護(hù)方法不包括單個依賴于正確的實體是否存在的if-then指令。
本發(fā)明的目標(biāo)是提供通過使用對所述計算機(jī)程序單元的靜態(tài)資源的加密來對計算機(jī)程序單元的執(zhí)行進(jìn)行保護(hù)。
根據(jù)本發(fā)明第一方面,該目標(biāo)可以通過一種對至少部分計算機(jī)程序單元進(jìn)行加密以保護(hù)所述計算機(jī)程序單元執(zhí)行的方法來實現(xiàn),所述方法包括步驟,提取所述計算機(jī)程序單元的至少一個靜態(tài)資源;和使用密鑰對所述至少一個靜態(tài)資源進(jìn)行加密。
根據(jù)本發(fā)明的第二方面,該目標(biāo)還可以通過一種對至少部分計算機(jī)程序單元加密以保護(hù)所述計算機(jī)程序單元執(zhí)行的計算機(jī)程序加密裝置來實現(xiàn),所述計算機(jī)程序加密裝置被設(shè)置成
提取所述計算機(jī)程序單元的至少一個靜態(tài)資源;和使用密鑰對所述至少一個靜態(tài)資源進(jìn)行加密。
根據(jù)本發(fā)明的第三方面,該目標(biāo)還可以通過一種包括計算機(jī)可讀介質(zhì)的計算機(jī)程序產(chǎn)品來實現(xiàn),所述計算機(jī)可讀介質(zhì)上具有計算機(jī)程序代碼工具,以使當(dāng)所述計算機(jī)程序代碼工具裝載在計算機(jī)中時計算機(jī)執(zhí)行提取所述計算機(jī)程序單元的至少一個靜態(tài)資源;和使用密鑰對所述至少一個靜態(tài)資源進(jìn)行加密。
根據(jù)本發(fā)明的第四方面,該目標(biāo)還可以通過計算機(jī)程序單元來實現(xiàn),所述計算機(jī)程序單元包括計算機(jī)程序代碼工具,以使當(dāng)所述計算機(jī)程序代碼工具裝載在計算機(jī)中時計算機(jī)執(zhí)行提取所述計算機(jī)程序單元的至少一個靜態(tài)資源;和使用密鑰對所述至少一個靜態(tài)資源進(jìn)行加密。
根據(jù)本發(fā)明的第五方面,該目標(biāo)還可以通過一種包括有計算機(jī)可讀介質(zhì)的計算機(jī)程序產(chǎn)品來實現(xiàn),所述計算機(jī)可讀介質(zhì)上具有計算機(jī)程序代碼工具,所述計算機(jī)程序代碼工具包括;使用密鑰加密的至少一個靜態(tài)資源。
根據(jù)本發(fā)明的第六方面,該目標(biāo)還可以通過一種包括計算機(jī)程序代碼工具的計算機(jī)程序單元來實現(xiàn),所述計算機(jī)程序代碼工具包括使用密鑰加密的至少一個靜態(tài)資源。
根據(jù)本發(fā)明的第七方面,該目標(biāo)還可以通過一種對至少部分計算機(jī)程序單元進(jìn)行解密以執(zhí)行所述計算機(jī)程序單元的方法來實現(xiàn),所述方法包括步驟在第一實體中得到使用第一密鑰加密的至少一個靜態(tài)資源,向第二實體提供所述至少一個加密的靜態(tài)資源,和通過所述第一實體從第二實體得到所述至少一個靜態(tài)資源,此處已經(jīng)通過使用第二密鑰對根據(jù)第一密鑰的加密進(jìn)行解密。
根據(jù)本發(fā)明的第八方面,該目標(biāo)還可以通過一種對至少部分計算機(jī)程序單元進(jìn)行解密以執(zhí)行所述計算機(jī)程序單元的方法來實現(xiàn),所述方法包括步驟從第一實體得到至少一個加密的靜態(tài)資源,所述至少一個靜態(tài)資源已經(jīng)通過使用第一密鑰進(jìn)行加密,得到第二密鑰,通過使用所述第二密鑰對所述至少一個加密的靜態(tài)資源進(jìn)行解密,和向所述第一實體提供所述至少一個靜態(tài)資源。
根據(jù)本發(fā)明的第九方面,該目標(biāo)還可以通過對至少部分計算機(jī)程序單元解密以執(zhí)行所述計算機(jī)程序單元的計算機(jī)程序解密裝置來實現(xiàn),所述計算機(jī)程序解密裝置被設(shè)置成得到使用第一密鑰加密的至少一個靜態(tài)資源,向第二實體提供所述至少一個加密的靜態(tài)資源,和從第二實體得到所述至少一個靜態(tài)資源,此處已經(jīng)通過使用第二密鑰對根據(jù)第一密鑰的加密進(jìn)行解密。
根據(jù)本發(fā)明的第十方面,該目標(biāo)還可以通過一種對至少部分計算機(jī)程序單元解密以執(zhí)行所述計算機(jī)程序單元的計算機(jī)程序解密裝置來實現(xiàn),所述計算機(jī)程序解密裝置被設(shè)置成從第一實體得到至少一個加密的靜態(tài)資源,所述至少一個靜態(tài)資源已經(jīng)通過使用第一密鑰進(jìn)行加密,得到第二密鑰,通過使用第二密鑰對所述至少一個加密的靜態(tài)資源進(jìn)行解密,和向第一實體提供所述至少一個靜態(tài)資源。
根據(jù)本發(fā)明的第十一方面,該目標(biāo)還可以通過一種包括計算機(jī)可讀介質(zhì)的計算機(jī)程序產(chǎn)品來實現(xiàn),所述計算機(jī)可讀介質(zhì)上具有計算機(jī)程序代碼工具,以使當(dāng)所述計算機(jī)程序代碼工具裝載在計算機(jī)中時計算機(jī)執(zhí)行在第一實體中得到使用第一密鑰加密的至少一個靜態(tài)資源,向第二實體提供所述至少一個加密的靜態(tài)資源,和通過所述第一實體從第二實體得到所述至少一個靜態(tài)資源,此處已經(jīng)通過使用第二密鑰對根據(jù)第一密鑰的加密進(jìn)行解密。
根據(jù)本發(fā)明的第十二方面,該目標(biāo)還可以通過計算機(jī)程序單元來實現(xiàn),所述計算機(jī)程序單元包括計算機(jī)程序代碼工具,以使當(dāng)所述計算機(jī)程序代碼工具裝載在計算機(jī)中時計算機(jī)執(zhí)行
在第一實體中得到使用第一密鑰加密的至少一個靜態(tài)資源,向第二實體提供所述至少一個加密的靜態(tài)資源,和通過所述第一實體從第二實體得到所述至少一個靜態(tài)資源,此處已經(jīng)通過使用第二密鑰對根據(jù)第一密鑰的加密進(jìn)行解密。
根據(jù)本發(fā)明的第十三方面,該目標(biāo)還可以通過包括計算機(jī)可讀介質(zhì)的計算機(jī)程序產(chǎn)品來實現(xiàn),所述計算機(jī)可讀介質(zhì)上具有計算機(jī)程序代碼工具,以使得當(dāng)所述計算機(jī)程序代碼工具裝載在計算機(jī)中時計算機(jī)執(zhí)行從第一實體得到至少一個加密的靜態(tài)資源,所述至少一個靜態(tài)資源已經(jīng)通過使用第一密鑰進(jìn)行加密,在第二實體中得到第二密鑰,通過使用所述第二密鑰對所述至少一個加密的靜態(tài)資源進(jìn)行解密,和向第一實體提供所述至少一個靜態(tài)資源。
根據(jù)本發(fā)明的第十四方面,該目標(biāo)還可以通過計算機(jī)程序單元來實現(xiàn),所述計算機(jī)程序單元包括計算機(jī)程序代碼工具,以使得計算機(jī)執(zhí)行從第一實體得到至少一個加密的靜態(tài)資源,所述至少一個靜態(tài)資源已經(jīng)通過使用第一密鑰進(jìn)行加密,在第二實體中得到第二密鑰,通過使用所述第二密鑰對所述至少一個加密的靜態(tài)資源進(jìn)行解密,和向第一實體提供所述至少一個靜態(tài)資源。
本發(fā)明背后的總體思想在于,通過使用對所述計算機(jī)程序代碼內(nèi)部靜態(tài)資源的計算機(jī)程序單元的加密來保護(hù)計算機(jī)程序代碼的執(zhí)行。在對所述加密的靜態(tài)資源解密期間,該思想進(jìn)一步依賴于兩個實體的使用,其中所述兩個實體之間的通信至少部分加密。
本發(fā)明具有以下優(yōu)勢1.通過對于所述計算機(jī)程序代碼執(zhí)行來講是關(guān)鍵的至少一個靜態(tài)資源進(jìn)行加密提供了對計算機(jī)程序代碼的執(zhí)行保護(hù)。
2.解密過程要求第一和第二實體。
3.即使在移除了對于第二實體的需求之后,在第一實體內(nèi)部,計算機(jī)程序代碼仍不能執(zhí)行。
從屬權(quán)利要求的方向及其優(yōu)勢權(quán)利要求2針對于在所述計算機(jī)程序單元中存儲至少一個加密的靜態(tài)資源。該權(quán)利要求的優(yōu)勢在于,計算機(jī)程序單元的執(zhí)行期間所需要的資源能夠被加密。
權(quán)利要求3,11,18和23針對于公/私鑰對的公鑰和私鑰的使用。其優(yōu)勢在于需要一個密鑰用以解密通過另一密鑰加密的數(shù)據(jù)。
權(quán)利要求4和12針對的是分別在計算機(jī)程序單元和計算機(jī)程序代碼工具中使用公鑰。這些權(quán)利要求能夠使用對已經(jīng)使用公鑰加密的數(shù)據(jù)進(jìn)行解密的安全私鑰。
權(quán)利要求5針對于得到相對于公鑰的私鑰,并在與其中提供計算機(jī)程序單元的實體分離的實體中存儲所述私鑰。該權(quán)利要求通過使得兩個實體分離具有極大地提高了執(zhí)行安全保護(hù)的優(yōu)勢。
權(quán)利要求6針對于從計算機(jī)程序單元的位置提取至少一個靜態(tài)資源,并在所述位置存儲加密的資源。其優(yōu)勢在于首先不能得到源信息,其次通過加密資源的存儲沒有影響其它部分或者單元。
權(quán)利要求15和20針對于得到第三密鑰和通過使用所述第三密鑰對至少一個靜態(tài)資源進(jìn)行加密/解密。這些權(quán)利要求具有這樣的優(yōu)勢,即由一個實體將發(fā)送至另一實體的靜態(tài)資源可以使用所述第三密鑰進(jìn)行加密。
權(quán)利要求16和24針對于使用第三密鑰,所述第三密鑰是隨機(jī)會話密鑰。使用對稱密鑰的優(yōu)勢在于,相同的密鑰可以用于加密和解密,這限制了所使用的密鑰的數(shù)目。
權(quán)利要求17、21和22針對于進(jìn)一步使用用于加密/解密第三密鑰和至少一個加密的靜態(tài)資源的第一密鑰。其具有的優(yōu)勢在于,從一個實體發(fā)送至另一實體的第三密鑰可以被加密,使得通過使用第三密鑰能夠提高靜態(tài)數(shù)據(jù)的加密的安全性。
通過參考下文中描述的實施例,本發(fā)明的這些方面和其它方面將是顯而易見的。
應(yīng)當(dāng)強(qiáng)調(diào)的是,說明書中使用術(shù)語“包括/包含”用于規(guī)定所陳述的特征、整數(shù)、步驟或者部件的存在,但是并不排除一個或多個其它特征、整數(shù)、步驟、部件或者其組合的附加或者存在。
結(jié)合附圖通過閱讀本發(fā)明的優(yōu)選實施例的描述,將更加清晰地了解本發(fā)明,其中
圖1表示根據(jù)本發(fā)明的優(yōu)選實施例的加密方法的流程圖;圖2A表示根據(jù)本發(fā)明的優(yōu)選實施例在具有計算機(jī)程序代碼的裝置中執(zhí)行的解密方法的流程圖;圖2B表示根據(jù)本發(fā)明的優(yōu)選實施例的解密方法的流程圖;圖3示意性地示出了根據(jù)本發(fā)明的程序代碼的加密;圖4示意性地示出了根據(jù)本發(fā)明的被保護(hù)程序代碼的解密;圖5示意性地示出了計算機(jī)和加密狗,在對加密數(shù)據(jù)的解密期間兩個實體進(jìn)行通信。
圖6示出了涉及本發(fā)明的其上具有計算機(jī)程序代碼工具的計算機(jī)程序產(chǎn)品。
本發(fā)明涉及通過對所述計算機(jī)程序代碼的靜態(tài)資源進(jìn)行加密和解密對計算機(jī)程序代碼執(zhí)行的保護(hù)。
加密和解密使用公共密鑰密碼術(shù)結(jié)構(gòu),并要求存取被保護(hù)的計算機(jī)程序代碼的源代碼。
根據(jù)本發(fā)明的一個實施例,在對加密信息進(jìn)行解密的過程中使用了兩個不同的實體。圖5表示本發(fā)明的這兩個不同實體的一個實施例。諸如個人計算機(jī)52的計算機(jī)代表第一實體,而動態(tài)加密狗54代表第二實體。將這兩個實體設(shè)置成在過程的解密步驟中發(fā)送/接收信息。
代替加密狗,可以采用安全芯片。該安全芯片可以集成在計算機(jī)平臺中。
動態(tài)加密狗典型地配備有能夠運行簡單的對稱和非對稱加密/解密算法的小處理器。兩個實體之間(此處為計算機(jī)和動態(tài)加密狗)的接口可以為USB(通用串行端口)、網(wǎng)絡(luò)或者其它通信通道。計算機(jī)和動態(tài)加密狗之間的通信可以基于客戶機(jī)-服務(wù)器模式。
在將被保護(hù)的計算機(jī)程序代碼投放至市場之前,通過使用動態(tài)加密狗的公鑰提取和加密至少部分靜態(tài)數(shù)據(jù),并在源代碼中替代為加密數(shù)據(jù)。一旦編輯和運行計算機(jī)程序代碼,在使用計算機(jī)程序代碼中的數(shù)據(jù)之前只有與私鑰對應(yīng)的加密狗可以解密數(shù)據(jù)。
如下所述,可以獨立于所述計算機(jī)典型地在任何地方執(zhí)行加密。正如本領(lǐng)域技術(shù)人員公知的,信息的加密和解密的彼此關(guān)系類似于鑰匙和鎖的關(guān)系。此處,執(zhí)行加密過程以建立計算機(jī)和加密狗之間的通信通道以用于解密所加密的數(shù)據(jù)。
根據(jù)本發(fā)明的一個實施例,在已經(jīng)加載了解密程序代碼的計算機(jī)內(nèi)部開始解密過程,并通過通信信道將信息發(fā)送至加密狗來繼續(xù)該解密過程,此處解密過程進(jìn)一步繼續(xù),接著加密狗將信息發(fā)送回計算機(jī),在該實體中計算機(jī)代碼最終能夠被執(zhí)行。
現(xiàn)在將參考圖1和圖3開始描述本發(fā)明,圖1表示至少部分計算機(jī)程序單元的加密的流程圖,圖3示意性地示出了計算機(jī)程序代碼的加密。該加密典型地在不同于上述兩個實體的第三實體中執(zhí)行。
對于加密程序代碼,從原程序代碼302中提取至少一些靜態(tài)數(shù)據(jù)306(步驟102)。因而還生成了所述原程序代碼302的剩余部分,即沒有了所提取靜態(tài)數(shù)據(jù)306的原程序代碼302,此處以程序代碼304表示。在該實施例中,原程序的靜態(tài)數(shù)據(jù)可以為任何類型,例如,字符串、定義、初始變量值、圖像、常數(shù)、格式相關(guān)靜態(tài)數(shù)據(jù)或者其它靜態(tài)資源。
產(chǎn)生已提取的靜態(tài)數(shù)據(jù)306、加密/解密密鑰對形式(公鑰Kpb 314,私鑰Kpr 316)的第一和第二密鑰(步驟104)。正如本領(lǐng)域技術(shù)人員公知的,兩個密鑰中的任一個都可以用于對數(shù)據(jù)加密,同樣,其任一個都可以用于對數(shù)據(jù)解密,但是一旦選擇了一個密鑰,例如用于對數(shù)據(jù)加密,那么僅另一個可以用于對所述加密數(shù)據(jù)進(jìn)行解密。
此處,通過使用公鑰Kpb 314作為加密密鑰來加密靜態(tài)數(shù)據(jù)306(步驟106),以產(chǎn)生使用所述公鑰加密的靜態(tài)數(shù)據(jù)(Static Data)Kpb 310。為提供上述在第一實體(計算機(jī))和第二實體(加密狗)之間的通信信道,改變程序代碼304(步驟108)以得到更改的程序代碼308。因此,在數(shù)據(jù)的解密期間將使用該通信通道,這將在下面描述。
根據(jù)本發(fā)明的這個實施例,使用所述數(shù)據(jù)的加密副本在程序代碼的特定位置替換步驟102中被提取的每塊靜態(tài)數(shù)據(jù)。通過在原程序代碼中存儲加密數(shù)據(jù)執(zhí)行所述替換(步驟110),優(yōu)選(當(dāng)并不是必須)非加密數(shù)據(jù)出現(xiàn)在原程序代碼中的位置(步驟102)。已經(jīng)在程序代碼中存儲了加密靜態(tài)數(shù)據(jù)之后,在程序代碼中存儲公鑰Kpb(步驟112),以得到被保護(hù)的程序代碼312(步驟116)。
在加密狗318中存儲與所述公鑰Kpb 314相對應(yīng)的私鑰Kpr 306。
這樣得到的被保護(hù)的程序代碼312因而包含多塊被加密的靜態(tài)數(shù)據(jù),所述被加密的靜態(tài)數(shù)據(jù)有效地阻止了程序代碼的執(zhí)行而沒有預(yù)先解密所述靜態(tài)數(shù)據(jù)。
顯而易見的是,僅僅程序代碼單元的特定部分,即對于程序的執(zhí)行至關(guān)緊要的部分需要加密。這意味著,為禁止計算機(jī)程序代碼的整個部分起作用,并非所有的靜態(tài)數(shù)據(jù)都需要被加密。
通過解密計算機(jī)程序代碼塊,諸如單獨通過毀損單個if-then語句而不能執(zhí)行計算機(jī)程序代碼。這同外殼狀(shell-like)加密方法相反,在外殼狀加密方法中,留下大部分程序代碼未加密,而加密阻止所述程序代碼執(zhí)行的外殼。通過毀損單個外殼,使得外殼內(nèi)的程序能夠執(zhí)行。
在下面,將描述當(dāng)執(zhí)行了加密程序代碼時,對加密計算機(jī)程序代碼的解密。
如上所述,在不用存取加密狗的情況下,為了通過未授權(quán)方來阻止程序代碼的執(zhí)行,對關(guān)鍵程序代碼單元加密就足夠了。不具備執(zhí)行程序代碼的密鑰部分的能力就沒有實現(xiàn)程度代碼的功能,至少沒有全部實現(xiàn)。
然而當(dāng)僅僅關(guān)鍵部分加密時,能夠執(zhí)行未加密部分。一旦執(zhí)行了程序代碼,下面描述的方法用于每塊程序代碼單元。對于每塊程序代碼單元來講,啟動通信會話,在計算機(jī)和加密狗之間的通信信道上進(jìn)行信息通信。此外,對于每個這樣的會話,產(chǎn)生會話密鑰,這將在下面更加詳細(xì)地描述。
下面,參考圖2A、2B、4和5對當(dāng)執(zhí)行計算機(jī)程序代碼時解密靜態(tài)數(shù)據(jù)做更加詳細(xì)的描述。
根據(jù)本發(fā)明的實施例,在計算機(jī)中開始被保護(hù)計算機(jī)程序代碼402的運行。在被保護(hù)計算機(jī)程序代碼中,計算機(jī)對使用從來自圖3中的公鑰Kpb 314加密的靜態(tài)數(shù)據(jù)(Static Data)Kpb 406進(jìn)行定位。同樣,計算機(jī)在被保護(hù)的計算機(jī)程序代碼中檢索所存儲的公鑰Kpb 408。
在已經(jīng)遇到被加密的靜態(tài)數(shù)據(jù)之后,產(chǎn)生隨機(jī)會話密鑰形式的第三密鑰Ks 404(步驟202)。
然后將被加密的靜態(tài)數(shù)據(jù)406與所產(chǎn)生的隨機(jī)會話密鑰Ks 406結(jié)合(步驟204),在此之后通過使用公鑰406對被加密的靜態(tài)數(shù)據(jù)406和會話密鑰Ks404的結(jié)合進(jìn)行加密(步驟206),從而產(chǎn)生被加密靜態(tài)數(shù)據(jù)406和所述會話密鑰Ks404的加密聯(lián)合(Static Data(Kpb+Ks))Kpb 410。
在已經(jīng)生成了該加密聯(lián)合410之后,將所述加密聯(lián)合410發(fā)送至加密狗54(步驟208)。在圖4中,豎直虛線A表示計算機(jī)52和加密狗54之間的接口。
通過使用計算機(jī)的端口或者使用任何類型的網(wǎng)絡(luò)上的連接(例如英特網(wǎng))可將加密狗連接至計算機(jī)。
隨后,在步驟210中,計算機(jī)52從加密狗54=412中檢索靜態(tài)數(shù)據(jù)(Static Data)Ks 430,所述靜態(tài)數(shù)據(jù)(Static Data)Ks 430由來自圖3中的公鑰kpb 314解密,但是使用隨機(jī)會話密鑰Ks 426加密。然后計算機(jī)使用會話密鑰Ks 432對加密的靜態(tài)數(shù)據(jù)進(jìn)行解密(步驟212)。
當(dāng)隨機(jī)會話密鑰為對稱密鑰時,使用相同的密鑰執(zhí)行加密和解密。這意味著隨機(jī)會話密鑰426、會話密鑰432和隨機(jī)會話密鑰Ks404為相同密鑰。
一旦解密,就得到靜態(tài)數(shù)據(jù)434(步驟214),在程序代碼436的執(zhí)行期間在請求時使用靜態(tài)數(shù)據(jù)434。
上面描述了計算機(jī)中對加密靜態(tài)數(shù)據(jù)進(jìn)行解密的方法。現(xiàn)在在下面描述在加密狗中對加密靜態(tài)數(shù)據(jù)進(jìn)行解密的方法。
根據(jù)本發(fā)明的該實施例,在加密靜態(tài)數(shù)據(jù)的方法中,加密狗54首先得到圖3中的私鑰Kpr 316(步驟216)。其次,加密狗接收1)使用公鑰加密的靜態(tài)數(shù)據(jù)406和2)會話密鑰Ks404的加密聯(lián)合((Static Data)Kpb+Ks)Kpb 410(步驟218),所述加密聯(lián)合使用公鑰Kpb 408進(jìn)行加密。從加密狗54中,提取所述加密聯(lián)合((Static Data)Kpb+Ks)Kpb 414和私鑰Kpr 416?,F(xiàn)在,通過使用私鑰416,對加密聯(lián)合414解密(步驟220),以產(chǎn)生使用公鑰Kpb408加密的靜態(tài)數(shù)據(jù)(Static Data)Kpb 418和會話密鑰Ks420。緊接著該加密,再次通過使用私鑰Kpr 422對加密的靜態(tài)數(shù)據(jù)418進(jìn)行解密(步驟222),所述私鑰Kpr 422與私鑰416所指的密鑰相同。在該解密時,得到解密的靜態(tài)數(shù)據(jù)424(步驟224)。
從而加密狗已得到解密的靜態(tài)數(shù)據(jù)?,F(xiàn)在再次對解密的靜態(tài)數(shù)據(jù)424進(jìn)行加密(步驟226),但是在該步驟使用會話密鑰426,該密鑰從對加密聯(lián)合的解密中得到(步驟220)。
因此所得到的是從使用圖3中的公鑰Kpb 314執(zhí)行的初始加密中解密的靜態(tài)數(shù)據(jù),但是通過使用會話密鑰426加密?,F(xiàn)在將該加密的靜態(tài)數(shù)據(jù)(Static Data)Ks 428)經(jīng)由圖4中由B表示的加密狗-計算機(jī)接口從加密狗54發(fā)送至計算機(jī)52(步驟228)。
根據(jù)本發(fā)明的一個實施例,該接口B為加密狗-計算機(jī)USB接口。然而作為替代該接口可以包含諸如英特網(wǎng)的網(wǎng)絡(luò)、具有一個或者多個其它計算機(jī)的另一網(wǎng)絡(luò)或者任何類型的通信信道。
圖6示出了其上存儲有計算機(jī)程序代碼工具的計算機(jī)程序產(chǎn)品62。該計算機(jī)程序產(chǎn)品可以為任何類型,例如壓縮光盤(CD)、軟盤、數(shù)字多功能光盤(DVD)、固態(tài)存儲器或者硬盤。
對于計算機(jī)程序代碼的執(zhí)行保護(hù)可以用于阻止對任何硬件的未授權(quán)存取,通過所述計算機(jī)程序代碼或者以依賴于所述計算機(jī)程序代碼的特定方式控制所述硬件。使用適合的動態(tài)實體,即適合的加密狗,根據(jù)授權(quán)存取所述硬件。
本發(fā)明可以以多種方式進(jìn)一步改變,如下所述。
上述給出的實施例的一個可替代方案是利用安全芯片作為第二實體。因此,應(yīng)當(dāng)理解的是安全芯片和所述計算機(jī)是兩個分離的實體,即使其中一個可能位于另一個之內(nèi)。包括安全芯片的安全平臺的一個實例是TCPA/Palladium平臺,該平臺非常適合于在該可替代實施例中使用。
在本發(fā)明的另一實施例中,通過使用另一計算機(jī)程序代碼的類型的動態(tài)實體能夠保護(hù)計算機(jī)程序代碼執(zhí)行。因此,這是其中安全芯片或者加密狗用作對被加密靜態(tài)資源解密的實施例中的可替代方案。
在沒有背離本發(fā)明保護(hù)范圍的情況下,在一個不同的實施例中,對靜態(tài)數(shù)據(jù)加密的方法的步驟順序可能改變,一些步驟甚至可能被刪除。例如,改變程序代碼的步驟(步驟108)可以在產(chǎn)生公鑰和私鑰的步驟(步驟104)之前執(zhí)行。
在本發(fā)明的另一實施例中,對靜態(tài)數(shù)據(jù)解密的方法包括通過計算機(jī)將加密數(shù)據(jù)發(fā)送至加密狗,其中通過使用私鑰對該數(shù)據(jù)進(jìn)行解密,解密后的數(shù)據(jù)進(jìn)一步返回至計算機(jī)。在該實施例中,沒有使用會話密鑰。
在本發(fā)明的另一實施例中,對靜態(tài)數(shù)據(jù)解密的方法包括通過計算機(jī)將加密數(shù)據(jù)和會話密鑰發(fā)送至加密狗。加密狗對靜態(tài)數(shù)據(jù)解密,并使用會話密鑰對靜態(tài)數(shù)據(jù)加密并將加密后的靜態(tài)數(shù)據(jù)返回至計算機(jī)。該實施例并未使用公鑰對會話密鑰和加密靜態(tài)數(shù)據(jù)的聯(lián)合進(jìn)行加密。
在本發(fā)明的對靜態(tài)數(shù)據(jù)解密方法的另一實施例中,通過分別使用公鑰對所述會話密鑰和加密靜態(tài)數(shù)據(jù)進(jìn)行加密。因此不存在加密的會話密鑰和加密靜態(tài)數(shù)據(jù)的聯(lián)合。
在上述實施例的可替代方案中,僅僅通過計算機(jī)對會話密鑰進(jìn)行加密,而將已經(jīng)加密的靜態(tài)數(shù)據(jù)照原樣發(fā)送至加密狗。
在再一實施例中,計算機(jī)程序解密裝置為包括數(shù)個計算機(jī)的分布式計算機(jī)裝置。
在本發(fā)明的再一實施例中,在計算機(jī)程序單元中的特定位置提取的靜態(tài)數(shù)據(jù)存儲在相同或者不同計算機(jī)程序單元的不同位置。從計算機(jī)程序單元中提取未加密的靜態(tài)數(shù)據(jù),并且不再能夠在該位置得到未加密的靜態(tài)數(shù)據(jù)。
在再一實施例中,在對加密的靜態(tài)數(shù)據(jù)的解密期間,根據(jù)來自程序代碼的命令通過計算機(jī)執(zhí)行會話密鑰的生成。
在再一實施例中,在對加密的靜態(tài)數(shù)據(jù)的解密期間,在遇到新的加密靜態(tài)數(shù)據(jù)塊之前通過程序代碼執(zhí)行會話密鑰的生成。
在再一實施例中,第一實體為任何類型的計算機(jī),諸如PDA(個人數(shù)字助理)、掌上計算機(jī)、膝上計算機(jī)、個人計算機(jī)、游戲計算機(jī)、計算機(jī)服務(wù)器或類似物。
應(yīng)當(dāng)注意的是,上述實施例說明了本發(fā)明,而不是限制了本發(fā)明,在并不背離所附的權(quán)利要求書的范圍的情況下,本領(lǐng)域的技術(shù)人員可以設(shè)計出許多可替代的實施例。
在權(quán)利要求書中,放置在括號之間的任何附圖標(biāo)記不應(yīng)理解為是對權(quán)利要求的限制。詞語“包括”并不排除權(quán)利要求中列出的元件和步驟以外的其它元件和步驟的存在。元件之前的詞語“一”或者“一個”并不排除多個這種元件存在的可能。本發(fā)明可以通過包含數(shù)個不同元件的硬件來執(zhí)行,也可以利用適當(dāng)編程的計算機(jī)來實現(xiàn)。單個處理器或者其它(可編程)單元也可實現(xiàn)權(quán)利要求中記載的數(shù)個工具的功能。
在裝置權(quán)利要求中,列舉數(shù)個工具,數(shù)個這些工具可以通過一個或者相同項的硬件來實現(xiàn)。在不同從屬權(quán)利要求中記載的特定方法并不表示使用這些方法的結(jié)合就不具有優(yōu)越性。
權(quán)利要求
1.一種對至少部分計算機(jī)程序單元進(jìn)行加密以保護(hù)所述計算機(jī)程序單元執(zhí)行的方法,包括步驟提取所述計算機(jī)程序單元的至少一個靜態(tài)資源(306)(步驟102),和使用密鑰(314)對所述至少一個靜態(tài)資源(306)進(jìn)行加密(步驟106)。
2.根據(jù)權(quán)利要求1所述的加密方法,進(jìn)一步包括步驟在所述計算機(jī)程序單元中存儲至少一個加密靜態(tài)資源(310)(步驟110)。
3.根據(jù)權(quán)利要求1所述的加密方法,其中密鑰(314)為公/私鑰對中的公鑰。
4.根據(jù)權(quán)利要求3所述的加密方法,進(jìn)一步包括步驟在計算機(jī)程序單元中存儲公鑰(314)(步驟112)。
5.根據(jù)權(quán)利要求3所述的加密方法,進(jìn)一步包括步驟得到相應(yīng)的私鑰(316),和在與其中提供了計算機(jī)程序單元的實體分離的實體(318)中存儲所述私鑰(316)(步驟114)。
6.根據(jù)權(quán)利要求1所述的加密方法,其中提取步驟(步驟102)包括從程序單元中的特定位置提取至少一個靜態(tài)資源(306),存儲步驟(步驟110)包括在所述位置存儲加密的靜態(tài)資源(310)。
7.一種對至少部分計算機(jī)程序單元加密以保護(hù)所述計算機(jī)程序單元執(zhí)行的計算機(jī)程序加密裝置,所述計算機(jī)程序加密裝置被設(shè)置成提取所述計算機(jī)程序單元(302)的至少一個靜態(tài)資源(306)(步驟106),和使用密鑰(314)對所述至少一個靜態(tài)資源(306)進(jìn)行加密(步驟106)。
8.包括計算機(jī)可讀介質(zhì)的計算機(jī)程序產(chǎn)品,在計算機(jī)可讀介質(zhì)上具有計算機(jī)程序代碼工具,使得當(dāng)所述程序代碼工具裝載在計算機(jī)中時計算機(jī)執(zhí)行提取所述計算機(jī)程序單元(302)的至少一個靜態(tài)資源(306)(步驟102),和使用密鑰(314)對所述至少一個靜態(tài)資源(306)進(jìn)行加密(步驟106)。
9.計算機(jī)程序單元,包括計算機(jī)程序代碼工具,使得當(dāng)所述計算機(jī)程序代碼工具裝載在計算機(jī)中時計算機(jī)執(zhí)行提取所述計算機(jī)程序單元(302)的至少一個靜態(tài)資源(306)(步驟102),和使用密鑰(314)對所述至少一個靜態(tài)資源(306)進(jìn)行加密(步驟106)。
10.包括計算機(jī)可讀介質(zhì)的計算機(jī)程序產(chǎn)品,所述計算機(jī)可讀介質(zhì)上具有計算機(jī)程序代碼工具,所述計算機(jī)程序代碼工具包括使用密鑰加密的至少一個靜態(tài)資源(310)。
11.根據(jù)權(quán)利要求10所述的計算機(jī)程序產(chǎn)品,其中所述密鑰(314)為公/私鑰對的公鑰。
12.根據(jù)權(quán)利要求11所述的計算機(jī)程序產(chǎn)品,其中所述計算機(jī)程序代碼工具進(jìn)一步包括所述公鑰(314)。
13.包括計算機(jī)程序代碼工具的計算機(jī)程序單元,所述計算機(jī)程序代碼工具包括使用密鑰加密的至少一個靜態(tài)資源(310)。
14.對至少部分計算機(jī)程序單元進(jìn)行解密以執(zhí)行所述計算機(jī)程序單元(402)的方法,包括步驟在第一實體(52)中,得到使用第一密鑰(314)加密的至少一個靜態(tài)資源(406),向第二實體(54)提供所述至少一個加密的靜態(tài)資源(406)(步驟208),和通過所述第一實體(52)從第二實體(54)得到所述至少一個靜態(tài)資源(430)(步驟210),此處根據(jù)第一密鑰(314)的加密已經(jīng)使用第二密鑰(422)解密。
15.根據(jù)權(quán)利要求14所述的解密方法,進(jìn)一步包括步驟得到第三密鑰(步驟202),通過使用第三密鑰對所述至少一個加密的靜態(tài)資源(430)進(jìn)行解密(步驟212),其中所述提供步驟(步驟208)包括向第二實體(54)提供第三密鑰(404)和所述至少一個加密的靜態(tài)資源(406,410),通過所述第一實體(52)從第二實體(54)得到所述至少一個靜態(tài)資源(430)的步驟(步驟210)包括得到使用第三密鑰(426)加密的至少一個靜態(tài)資源(430),以執(zhí)行計算機(jī)程序單元。
16.根據(jù)權(quán)利要求14所述的解密方法,其中第三密鑰(404,432)為隨機(jī)會話密鑰。
17.根據(jù)權(quán)利要求14所述的解密方法,進(jìn)一步包括步驟得到第一密鑰(408),通過使用所述第一密鑰(408)對第三密鑰(408)和所述至少一個加密的靜態(tài)資源(406)進(jìn)行加密(步驟206),其中向第二實體(54)提供所述至少一個加密的靜態(tài)資源(410)的步驟(步驟208)包括提供全部使用第一密鑰(408)加密(410)的所述第三密鑰(404)和所述至少一個加密的靜態(tài)資源(406)。
18.根據(jù)權(quán)利要求14所述的解密方法,其中第一密鑰(314,408)以及第二密鑰(316)分別為公/私鑰對的公鑰和私鑰。
19.對至少部分計算機(jī)程序單元進(jìn)行解密以執(zhí)行所述計算機(jī)程序單元的方法,包括步驟從第一實體(52)得到至少一個加密的靜態(tài)資源(414)(步驟218),該至少一個靜態(tài)資源(306)已經(jīng)通過使用第一密鑰(314)進(jìn)行加密,得到第二密鑰(416)(步驟216),通過使用所述第二密鑰(416)對所述至少一個加密的靜態(tài)資源(418)進(jìn)行解密(步驟222),和向所述第一實體(52)提供所述至少一個靜態(tài)資源(424)(步驟228)。
20.根據(jù)權(quán)利要求19所述的解密方法,進(jìn)一步包括步驟從第一實體(52)得到第三密鑰(420),通過使用第三密鑰(426)對所述至少一個靜態(tài)資源(424)進(jìn)行解密,其中向所述第一實體(52)提供所述至少一個靜態(tài)資源(428)的步驟(步驟228)包括提供使用第三密鑰(426)加密的所述至少一個靜態(tài)資源(428)。
21.根據(jù)權(quán)利要求20所述的解密方法,其中至少一個加密靜態(tài)資源(406)和第三密鑰(404)得到加密,所述加密使用第一密鑰(314)執(zhí)行。
22.根據(jù)權(quán)利要求21所述的解密方法,進(jìn)一步包括步驟使用第二密鑰(416)對加密(414)的至少一個加密靜態(tài)資源(406)和第三密鑰(404)進(jìn)行解密(步驟220)。
23.根據(jù)權(quán)利要求19所述的解密方法,其中第一密鑰(314)以及第二密鑰(416,422)分別為公/私鑰對的公鑰和私鑰。
24.根據(jù)權(quán)利要求19所述的解密方法,其中第三密鑰(420,426)為隨機(jī)會話密鑰。
25.對至少部分計算機(jī)程序單元(402)解密以執(zhí)行所述計算機(jī)程序單元的計算機(jī)程序解密裝置(52),所述計算機(jī)程序解密裝置被設(shè)置成得到使用第一密鑰(314)加密的至少一個靜態(tài)資源(406),向第二實體(54)提供所述至少一個加密的靜態(tài)資源(406)(步驟208),和從第二實體(54)得到所述至少一個靜態(tài)資源(430)(步驟210),此處已經(jīng)通過使用第二密鑰(422)對根據(jù)第一密鑰(314)的加密進(jìn)行解密。
26.對至少部分計算機(jī)程序單元解密以執(zhí)行所述計算機(jī)程序單元的計算機(jī)程序解密裝置(54),所述計算機(jī)程序解密裝置被設(shè)置成從第一實體(52)得到至少一個加密的靜態(tài)資源(414)(步驟218),該至少一個靜態(tài)資源(414)已經(jīng)通過使用第一密鑰(314)進(jìn)行加密,得到第二密鑰(416)(步驟216),通過使用第二密鑰(422)對所述至少一個加密的靜態(tài)資源(418)進(jìn)行解密(步驟222),和向第一實體(52)提供所述至少一個靜態(tài)資源(424)(步驟228)。
27.包括計算機(jī)可讀介質(zhì)的計算機(jī)程序產(chǎn)品,所述計算機(jī)可讀介質(zhì)上具有計算機(jī)程序代碼工具,使得當(dāng)所述計算機(jī)程序代碼工具裝載在計算機(jī)中時計算機(jī)執(zhí)行在第一實體(52)中得到使用第一密鑰(314)加密的至少一個靜態(tài)資源(406),向第二實體(54)提供所述至少一個加密的靜態(tài)資源(406)(步驟208),和通過所述第一實體(52)從第二實體(54)得到所述至少一個靜態(tài)資源(430)(步驟210),此處已經(jīng)通過使用第二密鑰(422)對根據(jù)第一密鑰(314)的加密進(jìn)行解密。
28.計算機(jī)程序單元,包括計算機(jī)程序代碼工具,使得當(dāng)所述計算機(jī)程序代碼工具裝載在計算機(jī)中時計算機(jī)執(zhí)行在第一實體(52)中得到使用第一密鑰(314)加密的至少一個靜態(tài)資源(406),向第二實體(54)提供所述至少一個加密的靜態(tài)資源(406)(步驟208),和通過所述第一實體(52)從第二實體(54)得到所述至少一個靜態(tài)資源(430)(步驟210),此處已經(jīng)通過使用第二密鑰(422)對根據(jù)第一密鑰(314)的加密進(jìn)行解密。
29.包括計算機(jī)可讀介質(zhì)的計算機(jī)程序產(chǎn)品,所述計算機(jī)可讀介質(zhì)上具有計算機(jī)程序代碼工具,使得當(dāng)所述程序代碼工具裝載在計算機(jī)中時計算機(jī)執(zhí)行從第一實體(52)得到至少一個加密的靜態(tài)資源(414)(步驟218),該至少一個靜態(tài)資源(414)已經(jīng)通過使用第一密鑰(314)進(jìn)行加密,在第二實體(54)中得到第二密鑰(416)(步驟216),通過使用第二密鑰(422)對所述至少一個加密的靜態(tài)資源(418)進(jìn)行解密(步驟222),和向第一實體(52)提供所述至少一個靜態(tài)資源(424)(步驟228)。
30.計算機(jī)程序單元,包括計算機(jī)程序代碼工具,以使計算機(jī)執(zhí)行從第一實體(52)得到至少一個加密靜態(tài)資源(414)(步驟218),該至少一個靜態(tài)資源(414)已經(jīng)通過使用第一密鑰(314)進(jìn)行加密,在第二實體(54)中得到第二密鑰(416)(步驟216),通過使用第二密鑰(422)對所述至少一個加密的靜態(tài)資源(418)進(jìn)行解密(步驟222),和向第一實體(52)提供所述至少一個靜態(tài)資源(424)(步驟228)。
全文摘要
本發(fā)明涉及至少部分計算機(jī)程序單元的加密,以保護(hù)所述計算機(jī)程序單元的執(zhí)行,所述至少部分計算機(jī)程序單元的加密包括提取所述計算機(jī)程序單元的至少一個靜態(tài)資源(步驟102),和使用密鑰(314)對所述靜態(tài)資源進(jìn)行加密(步驟106);和所述加密靜態(tài)資源的解密,包括在第一實體中得到使用第一密鑰加密的所述靜態(tài)資源(406),向第二實體提供所述加密的靜態(tài)資源(步驟208),得到使用第一密鑰加密的所述靜態(tài)資源(406)(步驟218),得到第二密鑰(422)(步驟216),使用所述第二密鑰對所述加密的靜態(tài)資源進(jìn)行解密(步驟222),向第一實體提供所述靜態(tài)資源(步驟228),和通過所述第一實體從第二實體得到所述靜態(tài)資源(步驟210)。
文檔編號G06F21/12GK1898623SQ200480038321
公開日2007年1月17日 申請日期2004年12月6日 優(yōu)先權(quán)日2003年12月22日
發(fā)明者N·吉達(dá)洛夫 申請人:皇家飛利浦電子股份有限公司