两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

利用白盒密碼術(shù)的聯(lián)鎖二進(jìn)制保護(hù)的制作方法

文檔序號(hào):6349885閱讀:234來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):利用白盒密碼術(shù)的聯(lián)鎖二進(jìn)制保護(hù)的制作方法
技術(shù)領(lǐng)域
本發(fā)明概括地涉及密碼術(shù)和計(jì)算機(jī)安全。更具體地,本發(fā)明涉及用于保護(hù)二進(jìn)制應(yīng)用免受靜態(tài)和動(dòng)態(tài)攻擊的方法。本申請(qǐng)要求于2009年5月6日提交的第61/175,945號(hào)美國(guó)臨時(shí)申請(qǐng)的優(yōu)先權(quán),該申請(qǐng)的全部?jī)?nèi)容通過(guò)引用并入本文。
背景技術(shù)
在信息技術(shù)時(shí)代,越來(lái)越多的應(yīng)用將被運(yùn)用在對(duì)直接攻擊完全開(kāi)放的數(shù)以?xún)|計(jì)的裝置上。停止并阻止攻擊成為軟件設(shè)計(jì)者關(guān)注的重點(diǎn)。如今的軟件正被越來(lái)越復(fù)雜的工具破解,這使得一般用戶(hù)僅利用很少的現(xiàn)有知識(shí)或者無(wú)需現(xiàn)有知識(shí)就可訪問(wèn)敏感信息。先前的安全模式假設(shè)如果受保護(hù)過(guò)程在黑盒中運(yùn)行,則輸出就是安全的(即,攻擊者不能查看黑盒內(nèi)運(yùn)行的過(guò)程),但這種模式不再有效。根據(jù)攻擊的性質(zhì),安全漏洞被攻擊者利用,從而侵害了一個(gè)或多個(gè)安全性能。通常,類(lèi)似調(diào)試的活動(dòng)代表最常見(jiàn)的、允許黑客理解應(yīng)用的全部或詳細(xì)操作的攻擊來(lái)源。一旦黑客可訪問(wèn)重要的數(shù)據(jù)和代碼,則計(jì)算出攻擊點(diǎn)以進(jìn)行其進(jìn)一步的攻擊只是時(shí)間問(wèn)題。隨后,攻擊者通過(guò)執(zhí)行克隆程序、通過(guò)使二進(jìn)制程序出錯(cuò)或者簡(jiǎn)單地通過(guò)準(zhǔn)予訪問(wèn)敏感信息或版權(quán)信息(部分或全部復(fù)制關(guān)鍵代碼)來(lái)?yè)p害系統(tǒng)安全性。此外,現(xiàn)代操作系統(tǒng)包含向例如內(nèi)存提升(memory lifting)攻擊的其它攻擊提供良好供應(yīng)庫(kù)(arsenal)的特征。攻擊者能夠利用由操作系統(tǒng)提供的任務(wù)管理應(yīng)用程序界面 (API)。例如,將每個(gè)多進(jìn)程操作系統(tǒng)的特有進(jìn)程終止的API允許攻擊者在該過(guò)程凍結(jié)在存儲(chǔ)器中時(shí)訪問(wèn)重要信息。雖然軟件安全性需要解決所有這些攻擊,但是目前的安全引擎忽略了許多安全因素,并使得安全引擎僅集中于特定的安全考慮而完全忽略了其它的安全威脅。例如,反調(diào)試技術(shù)僅對(duì)調(diào)試器的存在進(jìn)行檢測(cè),而不能保護(hù)應(yīng)用免受內(nèi)存提升攻擊。密碼術(shù)隱藏重要信息,但是不能對(duì)其內(nèi)部和其自身進(jìn)行保護(hù)而免受調(diào)試活動(dòng)。另一有益的示例是保護(hù)應(yīng)用免受篡改攻擊的完整性驗(yàn)證,但是不能阻止靜態(tài)或動(dòng)態(tài)分析攻擊。作為通用的范例,每一種安全技術(shù)解決一個(gè)或一些攻擊,而不是整個(gè)攻擊領(lǐng)域。因此,期望提供一種安全系統(tǒng),其提供抵御各種攻擊領(lǐng)域的保護(hù)。此外,提出了軟件模糊和轉(zhuǎn)換技術(shù)以轉(zhuǎn)換應(yīng)用的源代碼。然而,本發(fā)明提出了一種包括應(yīng)用二進(jìn)制級(jí)別轉(zhuǎn)換的改進(jìn)的安全措施,其包括在源代碼已被編譯后應(yīng)用二進(jìn)制級(jí)別轉(zhuǎn)換。

發(fā)明內(nèi)容
本發(fā)明的目的是消除或減緩先前的安全系統(tǒng)中至少一個(gè)缺陷。本發(fā)明的一個(gè)方面提供一種保護(hù)包括二進(jìn)制代碼及任選關(guān)聯(lián)數(shù)據(jù)的軟件應(yīng)用從原形式至更安全形式的方法,該更安全形式抵抗試圖篡改、逆向改造或提升該應(yīng)用的全部或部分的靜態(tài)和/或動(dòng)態(tài)攻擊,所述系統(tǒng)包括a.提供構(gòu)建時(shí)工具組以對(duì)所述應(yīng)用執(zhí)行二進(jìn)制轉(zhuǎn)化準(zhǔn)備,并且通過(guò)利用該工具組將所述應(yīng)用的原執(zhí)行轉(zhuǎn)換成安全的執(zhí)行;以及b.產(chǎn)生語(yǔ)義等同于原應(yīng)用、包括聯(lián)鎖的轉(zhuǎn)化執(zhí)行的受保護(hù)應(yīng)用,該聯(lián)鎖的轉(zhuǎn)化執(zhí)行還與轉(zhuǎn)化準(zhǔn)備聯(lián)鎖,以使得二進(jìn)制保護(hù)不再與受保護(hù)的應(yīng)用分離。在這個(gè)文本中術(shù)語(yǔ)“語(yǔ)義等同”應(yīng)解釋為“產(chǎn)生相同的結(jié)果或輸出”。轉(zhuǎn)化是對(duì)應(yīng)用的一種變化,其不只包括簡(jiǎn)單轉(zhuǎn)換,在這個(gè)意義上轉(zhuǎn)換通常包括這樣的操作,其中存在逆操作以將該轉(zhuǎn)換引起的變化逆轉(zhuǎn),而轉(zhuǎn)化代表沒(méi)有簡(jiǎn)單逆操作的更明顯的變化。轉(zhuǎn)化包括兩個(gè)階段-轉(zhuǎn)化準(zhǔn)備,其在構(gòu)建時(shí)期間將一系列變化應(yīng)用到應(yīng)用代碼上,并且植入與已改變的應(yīng)用代碼緊密相關(guān)(intertwine)的新代碼;以及-轉(zhuǎn)化執(zhí)行,其在執(zhí)行包括被植入代碼的受保護(hù)應(yīng)用期間進(jìn)行已準(zhǔn)備好的轉(zhuǎn)化保護(hù)。限定于(A)中的不同類(lèi)型的轉(zhuǎn)化被應(yīng)用于應(yīng)用的各種粒度(granularity),該粒度包括包括應(yīng)用的模塊、包括模塊的函數(shù)、包括函數(shù)的指令基礎(chǔ)塊、以及單個(gè)機(jī)器指令。不同類(lèi)型的轉(zhuǎn)化包括模塊轉(zhuǎn)化、函數(shù)轉(zhuǎn)化、塊轉(zhuǎn)化、指令轉(zhuǎn)化、完整性驗(yàn)證(IV)轉(zhuǎn)化以及反調(diào)試轉(zhuǎn)化。轉(zhuǎn)化合并有一種或多種白盒轉(zhuǎn)換。保護(hù)過(guò)程被分成兩個(gè)階段(A)構(gòu)建時(shí)階段,其中軟件應(yīng)用在執(zhí)行之前被靜態(tài)分析并轉(zhuǎn)換;以及(B)運(yùn)行時(shí)階段,其中被轉(zhuǎn)換的軟件應(yīng)用在存儲(chǔ)器中運(yùn)行。本發(fā)明的一個(gè)方面提供了一種將包括二進(jìn)制應(yīng)用代碼的二進(jìn)制軟件應(yīng)用從原形式轉(zhuǎn)換為安全形式的方法,該安全形式抵抗試圖篡改、逆向改造或提升所述應(yīng)用全部或部分的靜態(tài)和/或動(dòng)態(tài)攻擊,所述方法包括在構(gòu)建時(shí)階段通過(guò)對(duì)所述二進(jìn)制應(yīng)用代碼產(chǎn)生一系列變化以產(chǎn)生被改變的二進(jìn)制應(yīng)用代碼,以對(duì)所述二進(jìn)制軟件應(yīng)用執(zhí)行多個(gè)二進(jìn)制轉(zhuǎn)化的組合,所述變化包括在構(gòu)建時(shí)期間植入與所述被改變的二進(jìn)制應(yīng)用代碼緊密相關(guān)的新代碼;以及通過(guò)在所述轉(zhuǎn)化之間生成并設(shè)置依存性來(lái)聯(lián)鎖所述轉(zhuǎn)化;應(yīng)用所述轉(zhuǎn)化的組合并聯(lián)鎖至待保護(hù)的二進(jìn)制應(yīng)用代碼和被植入的代碼;以及產(chǎn)生語(yǔ)義等同于原應(yīng)用但包括所述已聯(lián)鎖轉(zhuǎn)化的受保護(hù)應(yīng)用,以使得所述二進(jìn)制保護(hù)不再與受保護(hù)應(yīng)用分離。發(fā)明的另一方面提供了將包括二進(jìn)制應(yīng)用代碼的二進(jìn)制軟件應(yīng)用從原形式轉(zhuǎn)換為安全形式的方法,該安全形式抵抗試圖篡改、逆向改造或提升該應(yīng)用的全部或部分的靜態(tài)和/或動(dòng)態(tài)攻擊,所述方法包括分析所述二進(jìn)制應(yīng)用以確定至少一種二進(jìn)制應(yīng)用能夠應(yīng)用于其上的所述應(yīng)用中的至少一個(gè)組件,所述組件包括組件代碼;對(duì)所述組件代碼執(zhí)行一系列變化以產(chǎn)生被改變的組件代碼,所述變化包括對(duì)所述組件代碼應(yīng)用至少一種WB轉(zhuǎn)換以及將與所述轉(zhuǎn)換緊密相關(guān)的新代碼植入所述二進(jìn)制應(yīng)用代碼中;通過(guò)在所述變化之間生成并設(shè)置依存性來(lái)聯(lián)鎖所述變化;以及應(yīng)用所述變化并且聯(lián)鎖至待保護(hù)的二進(jìn)制應(yīng)用代碼和被植入的代碼,以產(chǎn)生語(yǔ)義等同于原應(yīng)用但包括所述聯(lián)鎖轉(zhuǎn)換的已轉(zhuǎn)化應(yīng)用,以使得二進(jìn)制保護(hù)不再與受保護(hù)應(yīng)用分
13離ο優(yōu)選地,所述受保護(hù)應(yīng)用的安全執(zhí)行包括聯(lián)鎖的轉(zhuǎn)化執(zhí)行,其被配置使得在其執(zhí)行的任何時(shí)間過(guò)程中僅一小部分的二進(jìn)制代碼處于清除形式。在構(gòu)建時(shí),該系統(tǒng)能夠與白盒轉(zhuǎn)換構(gòu)建時(shí)設(shè)備交互以生成并集合白盒轉(zhuǎn)換密鑰和操作代碼,并且通過(guò)執(zhí)行具有白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰的白盒轉(zhuǎn)換操作來(lái)將所述二進(jìn)制代碼和相關(guān)的重要信息從輸入形式轉(zhuǎn)換為輸出形式。在運(yùn)行時(shí),該系統(tǒng)能夠與白盒轉(zhuǎn)換運(yùn)行時(shí)設(shè)備交互,通過(guò)執(zhí)行具有白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰的白盒轉(zhuǎn)換逆操作以將二進(jìn)制代碼和相關(guān)的重要信息從輸出形式轉(zhuǎn)換回輸入形式。在回顧了本發(fā)明的特定實(shí)施方式的下列描述連同附圖之后,本發(fā)明的其它方面和特征對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō)將變得顯而易見(jiàn)。


圖1示出了根據(jù)本發(fā)明的示例性實(shí)施方式的自動(dòng)白盒(WB)代碼生成的WB過(guò)程;圖2示出了根據(jù)本發(fā)明的示例性實(shí)施方式用于轉(zhuǎn)換和逆轉(zhuǎn)換過(guò)程的自動(dòng)白盒密鑰生成;圖3描繪了根據(jù)本發(fā)明的示例性實(shí)施方式提出的自動(dòng)被插入受保護(hù)的二進(jìn)制應(yīng)用中作為聯(lián)鎖的安全層、具有首要安全組件的二進(jìn)制保護(hù)系統(tǒng);圖4示出了根據(jù)本發(fā)明的示例性實(shí)施方式作為預(yù)鏈接保護(hù)過(guò)程的一部分的、包括使用代碼轉(zhuǎn)換器的保護(hù)過(guò)程的示意圖;圖5示出了根據(jù)本發(fā)明的示例性實(shí)施方式源代碼轉(zhuǎn)換如何被應(yīng)用到由待保護(hù)的應(yīng)用所使用的代碼以及包括二進(jìn)制保護(hù)技術(shù)的代碼上;圖6示出了根據(jù)本發(fā)明的示例性實(shí)施方式在構(gòu)建時(shí)處理之后的受保護(hù)二進(jìn)制應(yīng)用模塊的結(jié)構(gòu);圖7示出了根據(jù)本發(fā)明的示例性實(shí)施方式輸入為二進(jìn)制應(yīng)用的保護(hù)流程;圖8描繪了根據(jù)本發(fā)明的示例性實(shí)施方式塊轉(zhuǎn)化組件的保護(hù)流程;圖9示出了根據(jù)本發(fā)明的示例性實(shí)施方式具有模塊轉(zhuǎn)化組件的保護(hù)過(guò)程;圖10示出了根據(jù)本發(fā)明的示例性實(shí)施方式具有對(duì)試圖修改受保護(hù)應(yīng)用的行為的篡改攻擊進(jìn)行檢測(cè)的完整性驗(yàn)證組件的保護(hù)過(guò)程;圖11是根據(jù)本發(fā)明的示例性實(shí)施方式,在運(yùn)行時(shí)受保護(hù)應(yīng)用如何安全執(zhí)行的全貌圖;圖12示出了根據(jù)本發(fā)明的示例性實(shí)施方式在運(yùn)行時(shí)執(zhí)行期間的模塊轉(zhuǎn)化(MT)組件;圖13示出了根據(jù)本發(fā)明的示例性實(shí)施方式的完整性驗(yàn)證組件的運(yùn)行時(shí)過(guò)程;圖14通過(guò)示出具有和沒(méi)有IV的運(yùn)行時(shí)函數(shù)處理的自動(dòng)IV調(diào)用的示例描繪了根據(jù)本發(fā)明的示例性實(shí)施方式;圖15示出了根據(jù)本發(fā)明的示例性實(shí)施方式在運(yùn)行時(shí)執(zhí)行期間的函數(shù)轉(zhuǎn)化(FT)組件;圖16示出了根據(jù)本發(fā)明的示例性實(shí)施方式的塊轉(zhuǎn)化(BT)的運(yùn)行時(shí)過(guò)程;圖17示出了根據(jù)本發(fā)明的實(shí)施方式受保護(hù)應(yīng)用在執(zhí)行的不同時(shí)刻處的示例;
14
圖18示出了根據(jù)本發(fā)明的實(shí)施方式的動(dòng)態(tài)函數(shù)加載的構(gòu)建時(shí)過(guò)程;圖19描述了根據(jù)本發(fā)明的實(shí)施方式的動(dòng)態(tài)函數(shù)加載的運(yùn)行時(shí)過(guò)程;圖20示出了根據(jù)本發(fā)明的實(shí)施方式的動(dòng)態(tài)函數(shù)加載的過(guò)程的第一階段的示例;圖21示出了根據(jù)本發(fā)明的實(shí)施方式的動(dòng)態(tài)函數(shù)加載的過(guò)程的第二階段的示例;圖22示出了根據(jù)本發(fā)明的實(shí)施方式的動(dòng)態(tài)函數(shù)加載的過(guò)程的第三階段的示例;圖23示出了根據(jù)本發(fā)明的實(shí)施方式的動(dòng)態(tài)函數(shù)加載的過(guò)程的第四階段的示例;圖M示出了根據(jù)本發(fā)明的實(shí)施方式的最終階段,其中調(diào)用應(yīng)用可請(qǐng)求安全地消除函數(shù);圖25示出了根據(jù)本發(fā)明的實(shí)施方式,關(guān)于具有代碼轉(zhuǎn)化和聯(lián)鎖的動(dòng)態(tài)函數(shù)加載的構(gòu)建時(shí)過(guò)程的示例;圖沈描繪了根據(jù)本發(fā)明的實(shí)施方式的BT和IV組件的已聯(lián)鎖形式;圖27示出了根據(jù)本發(fā)明的實(shí)施方式的密鑰分拆的示例,其中在保護(hù)時(shí),隱藏的解密密鑰被分解;圖觀示出了根據(jù)本發(fā)明的實(shí)施方式形成相繼嵌套層的程序的不同粒度或組件;圖四示出了根據(jù)本發(fā)明的示例性實(shí)施方式的相繼嵌套層以及轉(zhuǎn)化如何被應(yīng)用于其上。
具體實(shí)施例方式概括地,本發(fā)明提供了用于將包括二進(jìn)制代碼及可選關(guān)聯(lián)數(shù)據(jù)的軟件應(yīng)用從原形式轉(zhuǎn)換為更安全形式的系統(tǒng)和方法。該方法包括對(duì)應(yīng)用執(zhí)行二進(jìn)制轉(zhuǎn)化的組合,以及通過(guò)在轉(zhuǎn)化之間生成并布置相互依賴(lài)性來(lái)將轉(zhuǎn)化聯(lián)鎖,其中轉(zhuǎn)化實(shí)際上是應(yīng)用的不可逆變化。 事實(shí)上,關(guān)于所包含的難度,已聯(lián)鎖的轉(zhuǎn)化組合對(duì)應(yīng)用產(chǎn)生轉(zhuǎn)化,這種轉(zhuǎn)化實(shí)際上是不可逆的,這是因?yàn)槁?lián)鎖不僅使所應(yīng)用轉(zhuǎn)換的逆向改造變得困難,而且簡(jiǎn)單地應(yīng)用逆向轉(zhuǎn)換也不能恢復(fù)原代碼。需要明確,不可逆不一定意味著整個(gè)過(guò)程在形而上學(xué)的意義下都不能被逆轉(zhuǎn),而是意味著實(shí)際上來(lái)說(shuō),將轉(zhuǎn)化逆向不會(huì)將用于保護(hù)目的所提交的精確原程序恢復(fù)。不同類(lèi)型的轉(zhuǎn)化被應(yīng)用于應(yīng)用的各種粒度或?qū)又?。轉(zhuǎn)化被應(yīng)用于應(yīng)用代碼以及植入的代碼。 這樣的結(jié)果是被轉(zhuǎn)換的軟件應(yīng)用在語(yǔ)義上相當(dāng)于原軟件應(yīng)用但對(duì)靜態(tài)和/或動(dòng)態(tài)攻擊有抵抗力。注意使用術(shù)語(yǔ)“植入(implant)”以闡明過(guò)程通常不僅包括代碼的簡(jiǎn)單插入。使用 “植入”來(lái)包括對(duì)原代碼的替代和/或修改,以使被插入的新代碼能夠在已改變的應(yīng)用中運(yùn)行。如上所述,本發(fā)明應(yīng)用了各種粒度或?qū)由系霓D(zhuǎn)換組合,這些轉(zhuǎn)換組合是聯(lián)鎖的以使得沒(méi)有簡(jiǎn)單的逆轉(zhuǎn)換。圖觀示出了這些不同的粒度,其形成相繼嵌套層。應(yīng)用601能包括一個(gè)或多個(gè)模塊610,模塊610封裝(encapsulate) —個(gè)或多個(gè)函數(shù)620,函數(shù)620封裝一個(gè)或多個(gè)塊630,塊630能封裝一個(gè)或多個(gè)指令640。本發(fā)明的實(shí)施方式將不同的轉(zhuǎn)換應(yīng)用于這些相繼嵌套層中的每一層,并且還在它們之間增加依存性。本發(fā)明的實(shí)施方式在消除安全架構(gòu)差距的后鏈接二進(jìn)制保護(hù)系統(tǒng)內(nèi)將各種技術(shù)結(jié)合并互連。連同白盒密碼術(shù),本發(fā)明的實(shí)施方式允許一種包括被應(yīng)用到待保護(hù)代碼的二進(jìn)制轉(zhuǎn)化的組合的防御策略。在共同擁有的第7,397,916號(hào)美國(guó)專(zhuān)利和第11/020,313號(hào)美國(guó)專(zhuān)利申請(qǐng)中公開(kāi)了白盒密碼術(shù)的實(shí)施方式,該專(zhuān)利和專(zhuān)利申請(qǐng)的全部?jī)?nèi)容通過(guò)引用并入本文;在共同擁有的第6,594,761號(hào)、第6,779,114號(hào)和第6,842,862號(hào)美國(guó)專(zhuān)利,以及第 11/039,817號(hào)美國(guó)專(zhuān)利申請(qǐng)中也公開(kāi)了白盒密碼術(shù)的實(shí)施方式,這些專(zhuān)利和專(zhuān)利申請(qǐng)的全部?jī)?nèi)容通過(guò)引用并入本文。這些轉(zhuǎn)化描述如下 反調(diào)試轉(zhuǎn)化(AD)檢查受保護(hù)應(yīng)用是否被附接至調(diào)試器。 塊轉(zhuǎn)化(BT)在受保護(hù)應(yīng)用在存儲(chǔ)器中運(yùn)行時(shí)提供抵御動(dòng)態(tài)代碼分析和攻擊的二進(jìn)制保護(hù)。其主要任務(wù)包括將二進(jìn)制應(yīng)用分拆成白盒轉(zhuǎn)換的塊,然后在運(yùn)行時(shí)經(jīng)請(qǐng)求將轉(zhuǎn)換除去并在執(zhí)行后將塊毀壞。因此,僅當(dāng)前執(zhí)行的代碼塊被暴露。 函數(shù)轉(zhuǎn)化(FT)充當(dāng)塊轉(zhuǎn)化,但是將白盒轉(zhuǎn)換應(yīng)用到能包含許多函數(shù)塊的函數(shù)中,并且在運(yùn)行時(shí)調(diào)用函數(shù)時(shí)除去該轉(zhuǎn)換,并且從該函數(shù)返回之后毀壞該函數(shù)。 完整性驗(yàn)證轉(zhuǎn)化(IV)確保受保護(hù)應(yīng)用在存儲(chǔ)器中的代碼段或者其組件中的任何一個(gè)沒(méi)有被篡改和/或應(yīng)用組件的磁盤(pán)圖像沒(méi)有被修改。 模塊轉(zhuǎn)化(MT)在二進(jìn)制代碼被加載存儲(chǔ)器之前提供抵御靜態(tài)代碼分析和攻擊的二進(jìn)制保護(hù)。 指令轉(zhuǎn)化(IT)利用白盒轉(zhuǎn)換修改單個(gè)指令以使得指令必須具有在執(zhí)行之前除去的轉(zhuǎn)換。此外,這些變化甚至可以包括改變受保護(hù)的指令自身(例如,將進(jìn)入和退出處理器插入或者通過(guò)請(qǐng)求由從其初始值改變的指令所操控的地址)。實(shí)施方式允許選擇一組安全選項(xiàng),這組安全選項(xiàng)確定這些轉(zhuǎn)化如何優(yōu)選地自動(dòng)應(yīng)用到處于聯(lián)鎖形式的二進(jìn)制應(yīng)用模塊上。通過(guò)聯(lián)鎖,在應(yīng)用中產(chǎn)生依存性,以使得在最終被轉(zhuǎn)換的應(yīng)用中已聯(lián)鎖的兩個(gè)組件中的每一個(gè)都需要另一個(gè)的存在。例如,完整性驗(yàn)證調(diào)用被嵌入塊或函數(shù)的每次執(zhí)行,以使得如果沒(méi)有成功的IV調(diào)用,則塊或函數(shù)就不再正確運(yùn)行,而且IV調(diào)用僅當(dāng)塊或函數(shù)沒(méi)有被篡改時(shí)成功。此外,安全組件自身得到其他安全組件的保護(hù)(即,完整性驗(yàn)證保護(hù)函數(shù)轉(zhuǎn)化引擎,而塊轉(zhuǎn)化保護(hù)完整性驗(yàn)證)。除了反調(diào)試之外,以上提出的轉(zhuǎn)化能夠利用白盒轉(zhuǎn)換以增加安全性。白盒轉(zhuǎn)換通過(guò)以下事實(shí)來(lái)識(shí)別,即如果應(yīng)用被暴露給攻擊者,密鑰和轉(zhuǎn)換算法也得到保護(hù)。然而,由于數(shù)學(xué)轉(zhuǎn)換被應(yīng)用到僅由轉(zhuǎn)換代碼已知的密鑰上,所以密鑰決不會(huì)處于清除形式。圖1和2 描繪了這個(gè)規(guī)則中引起的白盒技術(shù)。圖1示出了用于轉(zhuǎn)換和逆轉(zhuǎn)換過(guò)程的自動(dòng)代碼生成10,而圖2示出了用于轉(zhuǎn)換15 和逆轉(zhuǎn)換20過(guò)程的自動(dòng)白盒密鑰生成。從相同的密鑰和轉(zhuǎn)換算法25生成WB逆轉(zhuǎn)換代碼 20以及隱藏密鑰35。另外,每個(gè)隱藏WB密鑰35與逆轉(zhuǎn)換20相關(guān)聯(lián),逆轉(zhuǎn)換20通過(guò)WB轉(zhuǎn)換代碼15將轉(zhuǎn)換逆轉(zhuǎn)。在保護(hù)階段,用戶(hù)能夠利用允許每個(gè)安全組件具有其自身的白盒密鑰組的各種WB密鑰。例如,安全性驗(yàn)證組件和模塊轉(zhuǎn)化組件能夠利用不同的密鑰。此外, 函數(shù)轉(zhuǎn)化組件利用多個(gè)密鑰來(lái)轉(zhuǎn)換函數(shù)。為了調(diào)整交易的安全性能,用戶(hù)具有很多白盒轉(zhuǎn)換技術(shù),范圍從復(fù)雜的AES加密算法到例如XOR操作的簡(jiǎn)單轉(zhuǎn)換。這將在下面的密鑰分拆部分中更詳細(xì)地討論。二進(jìn)制保護(hù)系統(tǒng)圖3描繪了根據(jù)本發(fā)明的示例性實(shí)施方式提出的二進(jìn)制保護(hù)系統(tǒng)100與其最主要的安全組件,二進(jìn)制保護(hù)系統(tǒng)被自動(dòng)插入受保護(hù)的二進(jìn)制應(yīng)用中作為聯(lián)鎖的安全層。每個(gè)安全層由可執(zhí)行代碼實(shí)現(xiàn),無(wú)論層是否實(shí)現(xiàn)IV轉(zhuǎn)化125、FT轉(zhuǎn)化130、BT轉(zhuǎn)化135或MT轉(zhuǎn)化120。要在層之間產(chǎn)生聯(lián)鎖關(guān)系,則安全層及其保護(hù)的代碼均由具有前趨/后繼關(guān)系的代碼來(lái)實(shí)現(xiàn)。應(yīng)該理解,圖3實(shí)際上是示意性的。MT、FT、BT、以及指令轉(zhuǎn)化(IT)(未示出) 均優(yōu)選設(shè)置在一系列層間轉(zhuǎn)化的相繼嵌套層中(即,MT封裝FT、FT轉(zhuǎn)而封裝BT、BT轉(zhuǎn)而封裝IT,如圖觀所示),其中IV 125和ADB 140能被應(yīng)用于層間基礎(chǔ)上(即,被應(yīng)用到每個(gè)嵌套層上、或者一組層上、或者整個(gè)受保護(hù)應(yīng)用上)。此外,安全層按順序執(zhí)行。當(dāng)每一層獲得控制時(shí),為了適當(dāng)?shù)貓?zhí)行,每一層能被設(shè)定成依賴(lài)于前一層產(chǎn)生的值。例如,MT加載具有特定誤差的可執(zhí)行代碼,在執(zhí)行期間這些特定誤差通過(guò)FT或BT來(lái)修正。二進(jìn)制保護(hù)工具接收一組安全選項(xiàng)110的輸入,安全選項(xiàng) 110允許并供應(yīng)所需的安全組件。另外,用戶(hù)提供與安全組件耦接的轉(zhuǎn)換密鑰。此外,二進(jìn)制工具允許用戶(hù)將一組轉(zhuǎn)換密鑰關(guān)聯(lián)至安全組件。例如,函數(shù)轉(zhuǎn)化組件用不同的密鑰來(lái)轉(zhuǎn)換函數(shù)。實(shí)施方式提供了與高級(jí)別的源代碼保護(hù)聯(lián)鎖的能力。例如,用戶(hù)能夠在源代碼中應(yīng)用轉(zhuǎn)換以增加安全性。這些高級(jí)別的轉(zhuǎn)換通過(guò)代碼轉(zhuǎn)換器自動(dòng)地應(yīng)用。在共同擁有的第 6,594,761號(hào)、第6,779,114號(hào)和第6,842,862號(hào)美國(guó)專(zhuān)利、以及第11/039, 817號(hào)美國(guó)專(zhuān)利申請(qǐng)中可找到代碼轉(zhuǎn)換器的詳細(xì)信息,以上專(zhuān)利和專(zhuān)利申請(qǐng)的全部?jī)?nèi)容通過(guò)引用并入本文。圖4示出了關(guān)于源代碼也被轉(zhuǎn)換的實(shí)施方式的保護(hù)過(guò)程的示意圖,該保護(hù)過(guò)程包括作為預(yù)鏈接保護(hù)過(guò)程一部分的代碼轉(zhuǎn)換器220的使用。二進(jìn)制保護(hù)系統(tǒng)100框可被認(rèn)為包括圖3中描繪的全部框圖。此外,在源級(jí)別處,用戶(hù)插入一些安全機(jī)制,但是這些安全機(jī)制提供的保護(hù)并不完全,直至二進(jìn)制級(jí)別明確的安全引擎也被插入。例如,在源代碼中用戶(hù)采用一些安全API,但是在鏈接之后,當(dāng)相應(yīng)的安全組件在二進(jìn)制級(jí)別處被插入后生成的二進(jìn)制才變得更加安全。在圖4中二進(jìn)制保護(hù)庫(kù)230代表用戶(hù)與安全組件之間的接口。二進(jìn)制保護(hù)庫(kù)230 是提供一組API以支持由程序產(chǎn)生的安全請(qǐng)求的靜態(tài)庫(kù)。這些API提供完整性驗(yàn)證以及反調(diào)試功能性。二進(jìn)制保護(hù)過(guò)程中的另一個(gè)重要模塊是常駐安全模塊(RSM) 300,其包含五個(gè)最主要的安全組件引擎。下面將更詳細(xì)地討論RSM。在后鏈接保護(hù)階段,常駐安全模塊300 封裝有應(yīng)用二進(jìn)制模塊200(稱(chēng)為有效載荷)。有效載荷模塊被分解成白盒轉(zhuǎn)換的塊或函數(shù),然后被壓縮并轉(zhuǎn)換為整體且被RSM封裝入受保護(hù)應(yīng)用中。新的受保護(hù)應(yīng)用替代了在已部署應(yīng)用中的原可執(zhí)行程序和共享的庫(kù)。此外,常駐安全模塊包含主要安全組件的運(yùn)行時(shí)引擎、白盒逆轉(zhuǎn)換代碼程序以及被轉(zhuǎn)換的密鑰。整個(gè)后鏈接保護(hù)過(guò)程是自動(dòng)的。除了當(dāng)進(jìn)行安全選項(xiàng)選擇時(shí),用戶(hù)不與常駐安全模塊交互。二進(jìn)制保護(hù)庫(kù)與常駐安全模塊均是受保護(hù)的高級(jí)別代碼,并且結(jié)合源代碼轉(zhuǎn)換,如在圖5中概述的那樣。如圖5中所示,源代碼轉(zhuǎn)換能夠被應(yīng)用到待保護(hù)的應(yīng)用所使用的代碼以及包括二進(jìn)制保護(hù)技術(shù)的代碼上。也就是說(shuō), 通過(guò)利用源代碼轉(zhuǎn)換使攻擊變得困難,鏈接至待保護(hù)應(yīng)用的庫(kù)以及在保護(hù)階段被插入應(yīng)用中的代碼能具有增強(qiáng)的安全性。如上所述,本文所描述的方法和系統(tǒng)概括地分為構(gòu)建時(shí)特征/組件以及運(yùn)行時(shí)特征/組件。圖6示出了根據(jù)本發(fā)明的示例性實(shí)施方式在構(gòu)建時(shí)處理之后,受保護(hù)二進(jìn)制應(yīng)用模塊的結(jié)構(gòu)。根本地,受保護(hù)二進(jìn)制應(yīng)用的結(jié)構(gòu)由常駐安全模塊300及其被轉(zhuǎn)換的有效載荷350組成。常駐安全模塊實(shí)現(xiàn)靜態(tài)和動(dòng)態(tài)保護(hù)。其包含無(wú)需用戶(hù)交互的安全組件,例如白盒逆轉(zhuǎn)換例程(routine)、自動(dòng)的完整性驗(yàn)證和反調(diào)試引擎、以及動(dòng)態(tài)塊排列管理器。 此外,常駐安全模塊負(fù)責(zé)在運(yùn)行時(shí)階段將有效載荷加載存儲(chǔ)器中。然后常駐安全模塊保持常駐(或者其中的部分這樣做),以使得能夠?yàn)楦鞣N二進(jìn)制轉(zhuǎn)化提供服務(wù)。例如,經(jīng)訪問(wèn)用于函數(shù)保護(hù)的進(jìn)入處理器,該處理器能夠調(diào)用RSM以獲得被解密函數(shù)的其余內(nèi)容等。構(gòu)津時(shí)處理圖6能通過(guò)對(duì)構(gòu)建上述受保護(hù)二進(jìn)制應(yīng)用模塊的過(guò)程(即,構(gòu)建時(shí)過(guò)程)進(jìn)行討論而被很好地理解。這個(gè)部分描述了每個(gè)安全組件的保護(hù)階段以及其如何單獨(dú)應(yīng)用。描繪并分析了受保護(hù)二進(jìn)制應(yīng)用的保護(hù)流程和結(jié)構(gòu)。此外,該部分指出了安全組件之間的交互。 通常,這些安全組件直接自動(dòng)地應(yīng)用于二進(jìn)制應(yīng)用。安全組件的安全引擎常駐于常駐安全模塊300中。通常沒(méi)有要求安裝安全組件的用戶(hù)交互。二進(jìn)制應(yīng)用被大量轉(zhuǎn)換并被包括成為常駐安全模塊的有效載荷350。因此,有效載荷例如包括被轉(zhuǎn)換的函數(shù)410(以及用于每個(gè)被轉(zhuǎn)換的函數(shù)的進(jìn)入和退出處理器(未示出))。根據(jù)所需的安全技術(shù),應(yīng)用在二進(jìn)制級(jí)別下被修改并且在幾個(gè)階段被轉(zhuǎn)換。當(dāng)二進(jìn)制應(yīng)用受模塊轉(zhuǎn)化保護(hù)時(shí),有效載荷的結(jié)構(gòu)是不重要的;有效載荷被看作單個(gè)實(shí)體。然而,完整性驗(yàn)證和反調(diào)試組件能具有需要用戶(hù)交互的另外的模式。在這種情況下,安全組件的功能性引擎常駐于靜態(tài)地鏈接至被保護(hù)的二進(jìn)制應(yīng)用的二進(jìn)制保護(hù)庫(kù)230 中。特別注意到,安全組件能以各種模式應(yīng)用。例如,如果用戶(hù)應(yīng)用完整性驗(yàn)證API,則完整性驗(yàn)證組件可在鏈接階段103應(yīng)用。此外,完整性驗(yàn)證能夠被再次應(yīng)用于所產(chǎn)生的作為后鏈接保護(hù)一部分的二進(jìn)制而沒(méi)有任何沖突。函數(shù)轉(zhuǎn)化-構(gòu)建時(shí)圖7示出了根據(jù)本發(fā)明的示例性實(shí)施方式的保護(hù)流程,其中輸入為二進(jìn)制應(yīng)用。 函數(shù)轉(zhuǎn)化是阻止應(yīng)用免受動(dòng)態(tài)攻擊的后鏈接保護(hù)技術(shù)。原二進(jìn)制應(yīng)用105被分解成其復(fù)合
函數(shù)(例如,函數(shù)1、函數(shù)2、函數(shù)3.....函數(shù)N),然后通過(guò)FT處理塊130用WB算法來(lái)轉(zhuǎn)換
這些復(fù)合函數(shù)。FT處理130通過(guò)白盒轉(zhuǎn)換構(gòu)建時(shí)設(shè)備140來(lái)執(zhí)行,白盒轉(zhuǎn)換構(gòu)建時(shí)設(shè)備140 生成并集合用于每個(gè)函數(shù)的白盒轉(zhuǎn)換密鑰和操作代碼。然后,每個(gè)被轉(zhuǎn)換的函數(shù)410被包括作為常駐安全模塊的有效載荷。FT處理還安裝用于每個(gè)函數(shù)的進(jìn)入和退出處理器420。 每個(gè)函數(shù)用其自身的白盒密鑰(以及其自身的轉(zhuǎn)換代碼)來(lái)轉(zhuǎn)換,因而生成的受保護(hù)二進(jìn)制模塊包含用于每個(gè)函數(shù)的隱藏的WB逆轉(zhuǎn)換密鑰(轉(zhuǎn)換代碼)。此時(shí),為了避免術(shù)語(yǔ)密鑰與代碼之間的任何混淆,應(yīng)澄清,代碼指的是用于執(zhí)行通常使用唯一密鑰的轉(zhuǎn)換的算法/ 軟件代碼。函數(shù)轉(zhuǎn)換組件的益處是對(duì)在執(zhí)行期間的任何給定時(shí)刻處于清除形式的函數(shù)數(shù)量進(jìn)行限制。此外,常駐安全模塊攔截對(duì)被轉(zhuǎn)換的函數(shù)410的調(diào)用,并且與用于每個(gè)函數(shù)的進(jìn)入和退出處理器420合作。進(jìn)入處理器負(fù)責(zé)對(duì)函數(shù)的WB轉(zhuǎn)換進(jìn)行逆轉(zhuǎn)并負(fù)責(zé)白盒密鑰管理,而退出處理器破壞存儲(chǔ)器中的函數(shù)。因此,通過(guò)進(jìn)入處理器執(zhí)行對(duì)函數(shù)的調(diào)用,而通過(guò)退出處理器從函數(shù)返回。除了函數(shù)轉(zhuǎn)化組件特有的操作(函數(shù)轉(zhuǎn)化和破壞)之外,進(jìn)入和退出處理器還執(zhí)行各種操作塊排列、完整性檢查、測(cè)試調(diào)試器的存在等。應(yīng)該注意,附圖本質(zhì)上是示意性的并且被包括的目的是示出系統(tǒng)如何運(yùn)行,并不意味著包括一切。因此,圖6 沒(méi)有示出進(jìn)入和退出處理器(主要為了避免過(guò)于雜亂),而圖7僅示出了 RSM以及與被轉(zhuǎn)換函數(shù)自身相關(guān)的有效載荷的部分。
塊轉(zhuǎn)化-構(gòu)津時(shí)圖8描繪了根據(jù)本發(fā)明的示例性實(shí)施方式的塊轉(zhuǎn)化組件135的保護(hù)流程,當(dāng)受保護(hù)應(yīng)用在存儲(chǔ)器中運(yùn)行時(shí)該保護(hù)流程提供免受動(dòng)態(tài)代碼分析和攻擊的二進(jìn)制保護(hù)。塊轉(zhuǎn)化通過(guò)插入并替換二進(jìn)制指令來(lái)修改二進(jìn)制應(yīng)用。另外,二進(jìn)制應(yīng)用代碼被分解成白盒轉(zhuǎn)換塊,該白盒轉(zhuǎn)換塊需要被轉(zhuǎn)換回可執(zhí)行狀態(tài)以被執(zhí)行,這個(gè)情況在運(yùn)行期間經(jīng)請(qǐng)求發(fā)生。BT 處理塊135將應(yīng)用二進(jìn)制模塊分解成其需要的函數(shù),然后將每個(gè)函數(shù)分成塊。然后,BT處理塊135利用白盒轉(zhuǎn)換代碼來(lái)轉(zhuǎn)換塊。BT對(duì)應(yīng)用二進(jìn)制結(jié)構(gòu)影響最大。用BT保護(hù)的函數(shù)被明顯修改。例如,原始指令中的一些被新的指令替代,而另外一些在函數(shù)地址空間中重新定位。由于插入新的指令,用BT保護(hù)的每個(gè)函數(shù)的數(shù)據(jù)量更大。因此,BT保護(hù)的函數(shù)被重新定位于專(zhuān)用的二進(jìn)制位置。在運(yùn)行時(shí),用BT保護(hù)的函數(shù)包括被分成WB轉(zhuǎn)換的塊440的大代碼段。塊被分成組,并且塊中的每一組用唯一的白盒密鑰轉(zhuǎn)換。生成的二進(jìn)制應(yīng)用保持其原始行為,但是更不易被篡改。被轉(zhuǎn)換的白盒密鑰和逆轉(zhuǎn)換例程是受保護(hù)的二進(jìn)制模塊的一部分。此外,在程序執(zhí)行期間原應(yīng)用的控制流程時(shí)常被中斷并改變,以阻止二進(jìn)制應(yīng)用受到自動(dòng)攻擊。常駐安全模塊包含隨機(jī)修改塊的物理存儲(chǔ)地址的動(dòng)態(tài)塊排列管理器155。 白盒轉(zhuǎn)換塊被包含在與常駐安全模塊緊密配合的有效載荷中。樽塊轉(zhuǎn)化-構(gòu)津時(shí)圖9示出了根據(jù)本發(fā)明的示例性實(shí)施方式的利用模塊轉(zhuǎn)化120組件的保護(hù)過(guò)程, 模塊轉(zhuǎn)化120組件保護(hù)二進(jìn)制應(yīng)用免受靜態(tài)分析和攻擊。一般來(lái)說(shuō),受保護(hù)應(yīng)用能由若干模塊(可執(zhí)行程序和共享庫(kù))構(gòu)成,在這種情況下該過(guò)程為每個(gè)模塊重復(fù),以使得受保護(hù)應(yīng)用包括多個(gè)被轉(zhuǎn)化模塊。原二進(jìn)制應(yīng)用105被轉(zhuǎn)換、壓縮,然后被包括作為常駐安全模塊的有效載荷。生成的受保護(hù)二進(jìn)制模塊替代部署的應(yīng)用中的原模塊。圖9中右手方框展現(xiàn)了用模塊轉(zhuǎn)化保護(hù)的應(yīng)用二進(jìn)制模塊200的結(jié)構(gòu)。除了將應(yīng)用加載存儲(chǔ)器用于靜態(tài)保護(hù)的功能性之外,常駐安全模塊300包含程序從而在執(zhí)行期間對(duì)有效載荷360執(zhí)行逆轉(zhuǎn)換,而且常駐安全模塊300包括完整性驗(yàn)證能力。圖9僅示出了有效載荷360的一部分,其形成有效載荷350的部分。完整性驗(yàn)證-構(gòu)建時(shí)圖10示出根據(jù)本發(fā)明的示例性實(shí)施方式,對(duì)試圖修改受保護(hù)應(yīng)用的行為的篡改攻擊進(jìn)行檢測(cè)的完整性驗(yàn)證組件的保護(hù)過(guò)程。在構(gòu)建時(shí),輸入二進(jìn)制模塊是數(shù)字簽名的,產(chǎn)生了憑單(voucher)數(shù)據(jù)。憑單包含關(guān)于受保護(hù)應(yīng)用的簽名集以及其它相關(guān)信息。憑單數(shù)據(jù)通過(guò)IV過(guò)程125利用白盒算法來(lái)轉(zhuǎn)換,并且已轉(zhuǎn)換的憑單數(shù)據(jù)被嵌入受保護(hù)應(yīng)用中或者輸出至分離文檔。一般來(lái)說(shuō),受保護(hù)應(yīng)用能夠包括若干模塊(可執(zhí)行程序和共享庫(kù))。在這種情況下,使得應(yīng)用防篡改意味著所有模塊都已簽名并且憑單數(shù)據(jù)能夠被儲(chǔ)存在用于所有模塊的單個(gè)實(shí)體中,或者優(yōu)選地,每個(gè)模塊具有單獨(dú)儲(chǔ)存的其自身的憑單數(shù)據(jù)。允許用于每個(gè)模塊的憑單數(shù)據(jù)不僅為應(yīng)用提供了無(wú)需重新簽名就可更新單個(gè)模塊的靈活性,而且通過(guò)允許將每個(gè)憑單用不同的密鑰來(lái)轉(zhuǎn)換還增加了安全性。完整性驗(yàn)證轉(zhuǎn)化能夠以自動(dòng)模式和/或用戶(hù)交互模式運(yùn)行。這兩種模式共享行為和原理,但是其不同之處在于IV機(jī)制被插入受保護(hù)二進(jìn)制應(yīng)用的方式。在自動(dòng)模式下,IV 引擎540常駐在常駐安全模塊中,并且在策略點(diǎn)處IV組件自動(dòng)插入受保護(hù)二進(jìn)制應(yīng)用中。 在用戶(hù)交互模式下,IV機(jī)制550基于對(duì)IV庫(kù)555的調(diào)用常駐在靜態(tài)地鏈接至應(yīng)用中的二進(jìn)制保護(hù)庫(kù)中,在編譯階段前IV庫(kù)555被插入用戶(hù)的源代碼中。通常,在運(yùn)行時(shí),受保護(hù)應(yīng)用的結(jié)構(gòu)由大量代碼段構(gòu)成,這些代碼段根據(jù)已應(yīng)用的不同二進(jìn)制轉(zhuǎn)化動(dòng)態(tài)地改變其狀態(tài)。實(shí)際上,受保護(hù)的二進(jìn)制應(yīng)用結(jié)構(gòu)包括多個(gè)二進(jìn)制轉(zhuǎn)化的組合,二進(jìn)制轉(zhuǎn)化包括至少一種被應(yīng)用于所述二進(jìn)制應(yīng)用代碼的相繼嵌套層的層間轉(zhuǎn)化,其中相繼嵌套層包括包括應(yīng)用的模塊、包括模塊的函數(shù)、包括函數(shù)的指令基礎(chǔ)塊、以及單個(gè)機(jī)器指令。大多數(shù)安全性重要的函數(shù)用BT保護(hù),另外一些用FT保護(hù)。無(wú)論受保護(hù)應(yīng)用的自我修改代碼本性如何,IV轉(zhuǎn)化都將優(yōu)選地提供檢查模塊、函數(shù)或塊的完整性的能力。 因此,簽名階段包括將一組簽名關(guān)聯(lián)至在執(zhí)行期間改變其狀態(tài)的每個(gè)代碼段。這些代碼段在轉(zhuǎn)換之前或之后被簽名。例如,等式1示出了處于其已轉(zhuǎn)換以及未轉(zhuǎn)換狀態(tài)的塊的簽名。 隨后,等式2能夠表達(dá)用BT保護(hù)的函數(shù)的簽名,其是包括函數(shù)的塊簽名之和。當(dāng)用FT保護(hù)函數(shù)時(shí),函數(shù)被轉(zhuǎn)換成一體。等式3表征用FT保護(hù)的函數(shù)的簽名。
權(quán)利要求
1.一種將包括二進(jìn)制應(yīng)用代碼的二進(jìn)制軟件應(yīng)用從原形式轉(zhuǎn)換為安全形式的方法,所述安全形式抵抗試圖篡改、逆向改造或提升所述應(yīng)用的全部或部分應(yīng)用的靜態(tài)和/或動(dòng)態(tài)攻擊,所述方法包括A)在構(gòu)建時(shí)階段中通過(guò)對(duì)所述二進(jìn)制應(yīng)用代碼產(chǎn)生一系列變化來(lái)對(duì)所述二進(jìn)制軟件應(yīng)用執(zhí)行多種二進(jìn)制轉(zhuǎn)化的組合,以產(chǎn)生被改變的二進(jìn)制應(yīng)用代碼,所述變化包括在構(gòu)建時(shí)植入與所述被改變的二進(jìn)制應(yīng)用代碼緊密相關(guān)的新代碼;以及B)通過(guò)在所述轉(zhuǎn)化之間生成并設(shè)置依存性來(lái)聯(lián)鎖所述轉(zhuǎn)化;C)在執(zhí)行期間,應(yīng)用所述轉(zhuǎn)化的組合并且將其與待保護(hù)的二進(jìn)制應(yīng)用代碼和被植入的代碼聯(lián)鎖;以及D)產(chǎn)生語(yǔ)義等同于原應(yīng)用的受保護(hù)應(yīng)用,所述受保護(hù)應(yīng)用包括所述已聯(lián)鎖的轉(zhuǎn)化,以使得所述二進(jìn)制保護(hù)不再與所述受保護(hù)應(yīng)用分離。
2.如權(quán)利要求2所述的方法,其中所述多種二進(jìn)制轉(zhuǎn)化的組合包括被應(yīng)用到所述二進(jìn)制應(yīng)用代碼的相繼嵌套層上的至少一種層間轉(zhuǎn)化。
3.如權(quán)利要求2所述的方法,其中步驟(B)包括添加聯(lián)鎖數(shù)據(jù),并且其中步驟(D)包括產(chǎn)生受保護(hù)應(yīng)用,所述受保護(hù)應(yīng)用在有效的聯(lián)鎖數(shù)據(jù)不存在的情況下不能正確執(zhí)行。
4.如權(quán)利要求3所述的方法,其中步驟(B)包括使一種轉(zhuǎn)化需要先前的轉(zhuǎn)化存在來(lái)適當(dāng)執(zhí)行。
5.如權(quán)利要求4所述的方法,其中步驟(B)包括使一種轉(zhuǎn)化產(chǎn)生用作第二轉(zhuǎn)化輸入的輸出。
6.如權(quán)利要求1-5中任一項(xiàng)所述的方法,其中步驟(B)包括利用具有補(bǔ)充性能的轉(zhuǎn)化。
7.如權(quán)利要求2-6中任一項(xiàng)所述的方法,其中所述相繼嵌套層包括包括所述應(yīng)用的模塊、包括模塊的函數(shù)、包括所述函數(shù)的指令基本塊、以及各機(jī)器指令。
8.如權(quán)利要求2-7中任一項(xiàng)所述的方法,其中所述二進(jìn)制轉(zhuǎn)化的組合還包括被應(yīng)用到所述二進(jìn)制應(yīng)用代碼的層上的至少一種層內(nèi)轉(zhuǎn)化。
9.如權(quán)利要求8所述的方法,其中所述至少一種層內(nèi)轉(zhuǎn)化包括在構(gòu)建時(shí)和運(yùn)行時(shí)都被應(yīng)用于至少一層的完整性驗(yàn)證(IV)轉(zhuǎn)化。
10.如權(quán)利要求8或9中的任一項(xiàng)所述的方法,其中所述至少一種層內(nèi)轉(zhuǎn)化包括被應(yīng)用于至少一層的反調(diào)試轉(zhuǎn)化。
11.如權(quán)利要求2-10中的任一項(xiàng)所述的方法,其中二進(jìn)制轉(zhuǎn)化包括靜態(tài)構(gòu)建時(shí)過(guò)程, 所述靜態(tài)構(gòu)建時(shí)過(guò)程包括i)將轉(zhuǎn)化執(zhí)行代碼插入所述待保護(hù)的應(yīng)用的源代碼中,以產(chǎn)生被改變的源代碼,然后編譯所述被改變的源代碼以產(chǎn)生所述二進(jìn)制應(yīng)用代碼; )將補(bǔ)充的變化插入所述待保護(hù)的二進(jìn)制應(yīng)用中,以使得除非所述二進(jìn)制應(yīng)用存在所述補(bǔ)充的變化,否則所述應(yīng)用源代碼的所述變化不能正常工作;以及iii)在二進(jìn)制形式的待保護(hù)應(yīng)用上執(zhí)行二進(jìn)制轉(zhuǎn)化特定操作,并且產(chǎn)生執(zhí)行時(shí)所需的關(guān)聯(lián)的靜態(tài)聯(lián)鎖數(shù)據(jù),其中二進(jìn)制轉(zhuǎn)化還包括運(yùn)行時(shí)過(guò)程,所述運(yùn)行時(shí)過(guò)程包括a.以如果所述轉(zhuǎn)化被除去或修改就不保存所述應(yīng)用的原語(yǔ)義的方式來(lái)執(zhí)行被插入所述應(yīng)用中的所述轉(zhuǎn)化執(zhí)行代碼;b.動(dòng)態(tài)生成執(zhí)行所述轉(zhuǎn)化執(zhí)行代碼時(shí)進(jìn)一步需要的運(yùn)行時(shí)聯(lián)鎖數(shù)據(jù);c.利用所述關(guān)聯(lián)的靜態(tài)和動(dòng)態(tài)聯(lián)鎖數(shù)據(jù)以檢驗(yàn)所需的聯(lián)鎖依存性;d.以指定順序執(zhí)行一系列的多種轉(zhuǎn)化,以使得需要一種轉(zhuǎn)化來(lái)生成所述受保護(hù)應(yīng)用執(zhí)行時(shí)適合于執(zhí)行第二轉(zhuǎn)化的應(yīng)用狀態(tài)。
12.如權(quán)利要求1-11中的任一項(xiàng)所述的方法,其中二進(jìn)制轉(zhuǎn)化應(yīng)用白盒轉(zhuǎn)換過(guò)程,所述白盒轉(zhuǎn)換過(guò)程包括在構(gòu)建時(shí)i)利用白盒轉(zhuǎn)換構(gòu)建時(shí)設(shè)備以生成并集合白盒轉(zhuǎn)換密鑰和操作代碼;以及 )通過(guò)執(zhí)行具有白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰的白盒轉(zhuǎn)換操作來(lái)將所述二進(jìn)制代碼及相關(guān)的重要信息從輸入形式轉(zhuǎn)換為輸出形式,以及iii)在運(yùn)行時(shí),利用白盒轉(zhuǎn)換運(yùn)行時(shí)設(shè)備、通過(guò)執(zhí)行具有白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰的白盒轉(zhuǎn)換逆操作將所述二進(jìn)制代碼及相關(guān)的重要信息從輸出形式轉(zhuǎn)換回輸入形式。
13.如權(quán)利要求12所述的方法,其中所述白盒轉(zhuǎn)換構(gòu)建時(shí)設(shè)備包括a.白盒轉(zhuǎn)換生成器;b.白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰主機(jī);c.白盒轉(zhuǎn)換操作主機(jī);以及d.白盒轉(zhuǎn)換構(gòu)建時(shí)管理器,并且其中所述白盒轉(zhuǎn)換運(yùn)行時(shí)設(shè)備包括e.白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰主機(jī);f.白盒轉(zhuǎn)換逆操作主機(jī);以及g.白盒轉(zhuǎn)換運(yùn)行時(shí)管理器。
14.如權(quán)利要求13所述的方法,其中所述白盒轉(zhuǎn)換生成器接受由用戶(hù)提供的原密鑰數(shù)據(jù)和轉(zhuǎn)換算法選擇,并且生成與相應(yīng)的白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)(連同逆操作代碼)耦接的成對(duì)的白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰數(shù)據(jù)對(duì)(連同語(yǔ)義的操作代碼)。
15.如權(quán)利要求14所述的方法,還包括在白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)和操作代碼生成之后隱藏所述原密鑰數(shù)據(jù)和重要轉(zhuǎn)換信息,從而當(dāng)所述相應(yīng)的白盒轉(zhuǎn)換逆操作代碼執(zhí)行時(shí)阻止不慎的泄露。
16.如權(quán)利要求13或14所述的方法,其中多種轉(zhuǎn)換被應(yīng)用,并且其中所述白盒轉(zhuǎn)換操作主機(jī)儲(chǔ)存有多個(gè)白盒轉(zhuǎn)換操作,所述白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰主機(jī)儲(chǔ)存有多個(gè)白盒轉(zhuǎn)換密鑰,并且其中所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰主機(jī)儲(chǔ)存有多個(gè)白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰,以及所述白盒轉(zhuǎn)換逆操作主機(jī)儲(chǔ)存有多個(gè)白盒轉(zhuǎn)換逆操作。
17.如權(quán)利要求13所述的方法,其中-所述白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰主機(jī)通過(guò)所述白盒轉(zhuǎn)換構(gòu)建時(shí)管理器接入; -所述白盒轉(zhuǎn)換操作主機(jī)安全且有效地組織并定位多個(gè)白盒轉(zhuǎn)換語(yǔ)義操作代碼; -所述白盒轉(zhuǎn)換操作主機(jī)僅通過(guò)所述白盒轉(zhuǎn)換構(gòu)建時(shí)管理器接入; -所述白盒轉(zhuǎn)換構(gòu)建時(shí)管理器將儲(chǔ)存、重新取回、匹配的各種白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰與其相應(yīng)的白盒轉(zhuǎn)換語(yǔ)義操作代碼協(xié)調(diào);-以使得每個(gè)白盒轉(zhuǎn)換過(guò)程利用白盒轉(zhuǎn)換構(gòu)建時(shí)管理器來(lái)在運(yùn)行時(shí)利用相應(yīng)的白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰調(diào)用適當(dāng)?shù)陌缀修D(zhuǎn)換語(yǔ)義操作;-所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰主機(jī)安全且有效地組織、儲(chǔ)存并定位多個(gè)白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰;-所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰主機(jī)通過(guò)所述白盒轉(zhuǎn)換運(yùn)行時(shí)管理器接入;-所述白盒轉(zhuǎn)換逆操作主機(jī)安全且有效地組織并定位多個(gè)白盒轉(zhuǎn)換逆操作代碼;-所述白盒轉(zhuǎn)換逆操作主機(jī)通過(guò)所述白盒轉(zhuǎn)換運(yùn)行時(shí)管理器接入;-所述白盒轉(zhuǎn)換運(yùn)行時(shí)管理器將儲(chǔ)存、重新取回、匹配的各種白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰與其相應(yīng)的白盒轉(zhuǎn)換逆操作代碼協(xié)調(diào);以及-以使得每個(gè)白盒轉(zhuǎn)換過(guò)程利用白盒轉(zhuǎn)換運(yùn)行時(shí)管理器來(lái)在運(yùn)行時(shí)利用相應(yīng)的白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰調(diào)用適當(dāng)?shù)陌缀修D(zhuǎn)換逆操作。
18.如權(quán)利要求13所述的方法,還包括為通過(guò)所述白盒轉(zhuǎn)換生成器實(shí)現(xiàn)的白盒轉(zhuǎn)換算法來(lái)選擇包括最流行的密碼算法的大范圍的計(jì)算算法。
19.如權(quán)利要求14所述的方法,其中如果用戶(hù)選定密碼算法并且提供加密密鑰,所述白盒轉(zhuǎn)換生成器生成b.作為白盒轉(zhuǎn)換操作代碼的白盒加密操作代碼c.作為白盒轉(zhuǎn)換逆操作代碼的白盒解密操作代碼d.作為白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰數(shù)據(jù)的白盒加密密鑰數(shù)據(jù)e.作為白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)的白盒解密密鑰數(shù)據(jù)
20.如權(quán)利要求12-19中的任一項(xiàng)所述的方法,其中為不同的相繼嵌套層中的不同轉(zhuǎn)化生成并集合不同的白盒轉(zhuǎn)換構(gòu)建時(shí)和運(yùn)行時(shí)密鑰以及操作代碼。
21.如權(quán)利要求2-20中的任一項(xiàng)所述的方法,其中所述方法增加聯(lián)鎖保護(hù),所述聯(lián)鎖保護(hù)包括對(duì)所述源代碼進(jìn)行變化,所述源代碼變化和所述二進(jìn)制代碼變化以其都需要存在從而使所述受保護(hù)應(yīng)用正確運(yùn)行的方式共同作用,并且其中所述聯(lián)鎖包括層間轉(zhuǎn)化和層內(nèi)轉(zhuǎn)化,以使得所述轉(zhuǎn)化中的任何一個(gè)或者所有轉(zhuǎn)化難以除去,并且其中通過(guò)嵌套轉(zhuǎn)化來(lái)聯(lián)鎖所述轉(zhuǎn)化,每個(gè)被嵌套的轉(zhuǎn)化對(duì)其封裝的層提供進(jìn)一步保護(hù),同時(shí)接受來(lái)自封裝層的進(jìn)一步保護(hù),并且每個(gè)被嵌套的轉(zhuǎn)化附加地包括至少一個(gè)層內(nèi)轉(zhuǎn)化,每個(gè)層內(nèi)轉(zhuǎn)化提供所述受保護(hù)應(yīng)用的一層內(nèi)的交疊保護(hù),或者為作為整體的所述受保護(hù)應(yīng)用提供保護(hù)。
22.如權(quán)利要求9-21中的任一項(xiàng)所述的方法,其中所述IV轉(zhuǎn)化包括在構(gòu)建時(shí)的IV處理,所述IV處理包括a.生成并集合IV特定的白盒轉(zhuǎn)換密鑰和操作代碼;b.計(jì)算代表構(gòu)建時(shí)所述應(yīng)用二進(jìn)制代碼的散列信息的靜態(tài)IV憑單數(shù)據(jù);c.通過(guò)使用所述特定白盒轉(zhuǎn)換密鑰和操作代碼來(lái)應(yīng)用IV特定白盒轉(zhuǎn)換以轉(zhuǎn)換所述應(yīng)用的所述憑單數(shù)據(jù),從而阻止對(duì)所述憑單數(shù)據(jù)未授權(quán)的訪問(wèn)和攻擊;d.集合與所述特定白盒轉(zhuǎn)換密鑰和操作代碼對(duì)應(yīng)的、隱藏的白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù);并且其中所述IV轉(zhuǎn)化還包括在執(zhí)行所述受保護(hù)應(yīng)用開(kāi)始時(shí)和執(zhí)行所述受保護(hù)應(yīng)用的過(guò)程中的運(yùn)行時(shí)行動(dòng),所述運(yùn)行時(shí)行動(dòng)包括e.在IV庫(kù)被調(diào)用時(shí),IV初始化器與所述白盒轉(zhuǎn)換運(yùn)行時(shí)設(shè)備交互,通過(guò)在所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)上執(zhí)行所述IV特定白盒轉(zhuǎn)換逆操作,從而將所述白盒轉(zhuǎn)換IV數(shù)據(jù)逆轉(zhuǎn)換成普通的IV數(shù)據(jù)并且將所述普通的數(shù)據(jù)加載受保護(hù)數(shù)據(jù)結(jié)構(gòu)中;f.通過(guò)OS對(duì)加載存儲(chǔ)器中的所述二進(jìn)制代碼的動(dòng)態(tài)IV憑單數(shù)據(jù)進(jìn)行計(jì)算,所述動(dòng)態(tài) IV憑單數(shù)據(jù)代表運(yùn)行時(shí)中所述應(yīng)用二進(jìn)制代碼的散列信息,并且將所述動(dòng)態(tài)IV憑單數(shù)據(jù)儲(chǔ)存至受保護(hù)的數(shù)據(jù)結(jié)構(gòu)中;g.通過(guò)將以被保護(hù)形式存在的所述靜態(tài)IV憑單數(shù)據(jù)與所述動(dòng)態(tài)IV憑單數(shù)據(jù)作比較, 來(lái)檢查所述待保護(hù)的應(yīng)用代碼的完整性。
23.如權(quán)利要求22所述的方法,其中所述應(yīng)用的所述IV轉(zhuǎn)化包括通過(guò)在所述構(gòu)建時(shí)階段中允許用戶(hù)將IV API調(diào)用插入所述應(yīng)用的源代碼的選定位置中來(lái)檢查由用戶(hù)規(guī)則的制定部分確定的完整性,以及隨后在構(gòu)建時(shí)將自動(dòng)的完整性驗(yàn)證引擎自動(dòng)添加到所述應(yīng)用中,所述完整性驗(yàn)證引擎在運(yùn)行時(shí)執(zhí)行。
24.如權(quán)利要求22或23所述的方法,其中所述IV轉(zhuǎn)化檢查所述二進(jìn)制應(yīng)用代碼自身的完整性,而且還檢查被應(yīng)用到所述代碼的任何其它二進(jìn)制轉(zhuǎn)化的代碼的完整性。
25.如權(quán)利要求21-24中的任一項(xiàng)所述的方法,其中所述IV轉(zhuǎn)化執(zhí)行通過(guò)調(diào)用回叫函數(shù)被聯(lián)鎖至所述應(yīng)用。
26.如權(quán)利要求25所述的方法,其中在所述構(gòu)建時(shí)階段中添加所述回叫函數(shù),并且在所述IV轉(zhuǎn)化準(zhǔn)備期間通過(guò)將具有作為參數(shù)的回叫函數(shù)的IV API調(diào)用插入,使所述回叫函數(shù)與IV轉(zhuǎn)化執(zhí)行聯(lián)鎖。
27.如權(quán)利要求12-26中的任一項(xiàng)所述的方法,其中所述二進(jìn)制轉(zhuǎn)化中的一個(gè)二進(jìn)制轉(zhuǎn)化包括在構(gòu)建時(shí)和運(yùn)行時(shí)通過(guò)MT處理來(lái)保護(hù)應(yīng)用模塊的模塊轉(zhuǎn)化(MT)以便阻止對(duì)所述應(yīng)用模塊的靜態(tài)攻擊,所述應(yīng)用模塊能夠?yàn)閼?yīng)用可執(zhí)行模塊和/或動(dòng)態(tài)共享庫(kù)模塊,其中在構(gòu)建時(shí)的所述MT處理包括a.與所述白盒轉(zhuǎn)換構(gòu)建時(shí)設(shè)備交互以生成并集合MT特定白盒轉(zhuǎn)換密鑰和操作,其中所述被集合的MT特定白盒轉(zhuǎn)換密鑰和操作包括MT特定白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰數(shù)據(jù)和白盒轉(zhuǎn)換操作,以及相應(yīng)的白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)和白盒逆操作;b.將待保護(hù)的應(yīng)用模塊的所述二進(jìn)制代碼壓縮以形成被壓縮的二進(jìn)制代碼;c.應(yīng)用所述MT特定白盒轉(zhuǎn)換操作,以通過(guò)利用所述MT特定白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰數(shù)據(jù)和白盒轉(zhuǎn)換操作(來(lái)自步驟a)來(lái)轉(zhuǎn)換所述被壓縮的二進(jìn)制代碼以形成白盒轉(zhuǎn)換的模塊;d.通過(guò)將所述白盒轉(zhuǎn)換的模塊(來(lái)自步驟c)與常駐安全模塊(RSM)合并,為所述應(yīng)用模塊生成安全封包的應(yīng)用模塊,所述常駐安全模塊(RSM)包含處于隱藏形式的所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)和逆操作(在步驟a中集合);以及其中所述模塊轉(zhuǎn)化(MT)還包括運(yùn)行時(shí)處理,所述運(yùn)行時(shí)處理包括e.當(dāng)OS加載所述安全封包的應(yīng)用模塊并且觸發(fā)所述RSM中的代碼的執(zhí)行時(shí),所述RSM 與所述白盒轉(zhuǎn)換運(yùn)行時(shí)設(shè)備交互,以利用所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)通過(guò)執(zhí)行所述IV 特定白盒轉(zhuǎn)換逆操作將所述白盒轉(zhuǎn)換的模塊逆轉(zhuǎn)換為所述被壓縮的應(yīng)用模塊;f.對(duì)所述被壓縮的應(yīng)用模塊應(yīng)用非壓縮操作以獲得所述應(yīng)用模塊的二進(jìn)制代碼;g.將所述應(yīng)用模塊映入并加載存儲(chǔ)器中,并將控制傳送至所述應(yīng)用的進(jìn)入點(diǎn)。
28.如權(quán)利要求27所述的方法,其中所述RSM是通過(guò)將ADD和IV二進(jìn)制轉(zhuǎn)化中的一種或兩種應(yīng)用到所述RSM上來(lái)保護(hù)的。
29.如權(quán)利要求12-28中的任一項(xiàng)所述的方法,其中所述二進(jìn)制轉(zhuǎn)化之一包括至少一種函數(shù)轉(zhuǎn)化(FT),所述至少一種函數(shù)轉(zhuǎn)化(FT)通過(guò)在構(gòu)建時(shí)和運(yùn)行時(shí)的FT處理保護(hù)應(yīng)用模塊內(nèi)的個(gè)別函數(shù),以便阻止對(duì)所述函數(shù)的靜態(tài)和動(dòng)態(tài)攻擊,其中函數(shù)轉(zhuǎn)化包括在構(gòu)建時(shí)的FT處理,其中在構(gòu)建時(shí)的所述FT處理包括a.與所述白盒轉(zhuǎn)換構(gòu)建時(shí)設(shè)備交互以生成并集合待保護(hù)的函數(shù)中的每一個(gè)待保護(hù)的函數(shù)特有的FT特定白盒轉(zhuǎn)換密鑰和操作代碼;b.通過(guò)應(yīng)用FT特定的白盒轉(zhuǎn)換來(lái)產(chǎn)生已轉(zhuǎn)換的函數(shù),從而通過(guò)利用函數(shù)中的每一個(gè)函數(shù)特有的白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰數(shù)據(jù)和白盒轉(zhuǎn)換操作(來(lái)自步驟a)對(duì)包括所述函數(shù)中的每一個(gè)函數(shù)的所述二進(jìn)制代碼進(jìn)行轉(zhuǎn)換;c.安裝用于所述已轉(zhuǎn)換的函數(shù)中的每一個(gè)函數(shù)的進(jìn)入和退出函數(shù)處理器,以使得對(duì)每個(gè)已轉(zhuǎn)換的函數(shù)的所有調(diào)用都通過(guò)其進(jìn)入函數(shù)處理器來(lái)執(zhí)行,而通過(guò)其退出函數(shù)處理器從所述函數(shù)返回;d.通過(guò)將所述白盒轉(zhuǎn)換的函數(shù)與對(duì)應(yīng)于在步驟(b)中使用的白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰數(shù)據(jù)和白盒轉(zhuǎn)換操作的、步驟(a)中集合的隱藏的白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)和逆操作,以及為所有受保護(hù)函數(shù)在步驟(c)中安裝的所有進(jìn)入和退出函數(shù)處理器進(jìn)行組合,為包括常駐安全模塊(RSM)和所有受保護(hù)的函數(shù)的所述應(yīng)用模塊準(zhǔn)備安全封裝的應(yīng)用模塊;以及其中所述函數(shù)轉(zhuǎn)化(FT)還包括用于每一個(gè)FT保護(hù)的函數(shù)的運(yùn)行時(shí)行動(dòng),所述運(yùn)行時(shí)行動(dòng)包括e.在應(yīng)用模塊執(zhí)行期間,當(dāng)受保護(hù)函數(shù)被調(diào)用時(shí),所述受保護(hù)函數(shù)的進(jìn)入函數(shù)處理器首先被執(zhí)行并且與所述白盒轉(zhuǎn)換運(yùn)行時(shí)設(shè)備交互,以通過(guò)利用所述函數(shù)特有的白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)和操作代碼執(zhí)行所述白盒轉(zhuǎn)換逆操作來(lái)對(duì)所述白盒轉(zhuǎn)換的函數(shù)代碼進(jìn)行逆轉(zhuǎn)換;f.將所述逆轉(zhuǎn)換的函數(shù)加載執(zhí)行存儲(chǔ)器內(nèi);以及g.將所述執(zhí)行控制傳送至所述函數(shù),并且通過(guò)從所述函數(shù)退出來(lái)調(diào)用所述函數(shù)的退出處理器。
30.如權(quán)利要求四所述的方法,其中用于每個(gè)函數(shù)的所述RSM在返回之前將所述函數(shù)的存儲(chǔ)器占用空間清除或攪亂。
31.如權(quán)利要求四或30所述的方法,其中層內(nèi)保護(hù)被調(diào)用,以使得通過(guò)將IV轉(zhuǎn)化、ADB 轉(zhuǎn)化或者兩種轉(zhuǎn)化隱含應(yīng)用到所述進(jìn)入和退出函數(shù)處理器上,所述IV或ADB轉(zhuǎn)化中的一種或兩種與被保護(hù)的函數(shù)所應(yīng)用的所述FT聯(lián)鎖。
32.如權(quán)利要求四-31中的任一項(xiàng)所述的方法,其中另外的層間轉(zhuǎn)化,即塊轉(zhuǎn)化(BT)通過(guò)構(gòu)建時(shí)和運(yùn)行時(shí)的BT處理來(lái)保護(hù)應(yīng)用模塊內(nèi)個(gè)別函數(shù)中的代碼基礎(chǔ)塊,以便為所述函數(shù)提供抵御靜態(tài)、動(dòng)態(tài)和自動(dòng)攻擊的更強(qiáng)保護(hù),并且在具體的實(shí)施方式中,其中所述塊轉(zhuǎn)化包括構(gòu)建時(shí)的所述BT處理,構(gòu)建時(shí)的所述BT處理包括a.分析所述函數(shù)的控制流和數(shù)據(jù)流,以識(shí)別并確定所述函數(shù)的塊信息和結(jié)構(gòu);b.通過(guò)為每一個(gè)塊安裝進(jìn)入和退出塊處理器來(lái)擴(kuò)大每一個(gè)塊,以使得到達(dá)每一個(gè)被保護(hù)塊的所有執(zhí)行路徑首先調(diào)用其進(jìn)入塊處理器,然后到達(dá)所述塊代碼,最后相應(yīng)地經(jīng)由其退出塊處理器從所述塊離開(kāi);c.與所述白盒轉(zhuǎn)換構(gòu)建時(shí)設(shè)備交互以生成并集合待保護(hù)的函數(shù)中的每一個(gè)待保護(hù)的函數(shù)特有的BT特定白盒轉(zhuǎn)換密鑰和操作代碼;d.通過(guò)應(yīng)用BT特定白盒轉(zhuǎn)換以轉(zhuǎn)換所述基礎(chǔ)塊中的每一個(gè)的已擴(kuò)大的二進(jìn)制代碼(步驟b中處理的)、通過(guò)利用塊中的每一個(gè)特有的白盒轉(zhuǎn)換構(gòu)建時(shí)密鑰數(shù)據(jù)和白盒轉(zhuǎn)換操作(步驟c中生成并集合)來(lái)產(chǎn)生已轉(zhuǎn)換的塊;e.為包括常駐安全模塊(RSM)的所述應(yīng)用模塊準(zhǔn)備安全封裝的應(yīng)用模塊,所述常駐安全模塊包含具有所述進(jìn)入和退出塊處理器的所述已轉(zhuǎn)換的塊、以及已集合的所述隱藏的白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)和逆操作;其中所述塊轉(zhuǎn)化(BT)還包括用于一個(gè)特殊FT保護(hù)的函數(shù)的所有受保護(hù)塊的運(yùn)行時(shí)行動(dòng),所述運(yùn)行時(shí)行動(dòng)包括f.在所述應(yīng)用模塊執(zhí)行期間,每當(dāng)包含受保護(hù)塊的受保護(hù)函數(shù)被調(diào)用時(shí),在存儲(chǔ)器中屬于相同函數(shù)的所有塊被隨機(jī)排列;g.每當(dāng)受保護(hù)塊執(zhí)行時(shí),所述受保護(hù)塊的進(jìn)入塊處理器被調(diào)用,然后與所述白盒轉(zhuǎn)換運(yùn)行時(shí)設(shè)備交互,以通過(guò)利用所述塊特定的白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)和操作代碼、執(zhí)行所述白盒轉(zhuǎn)換逆操作來(lái)對(duì)所述白盒轉(zhuǎn)換的塊進(jìn)行逆轉(zhuǎn)換;h.將所述逆轉(zhuǎn)換的塊加載指定的執(zhí)行存儲(chǔ)器中;i.將執(zhí)行控制傳送至已加載的塊,并且經(jīng)從所述塊的退出,所述退出塊處理器(任選地)清除或攪亂存儲(chǔ)器占用空間并且將執(zhí)行傳送至下一個(gè)塊。重復(fù)步驟B、C以及D直至受保護(hù)函數(shù)退出。
33.如權(quán)利要求32所述的方法,其中所述塊轉(zhuǎn)化(BT)還包括基于由用戶(hù)通過(guò)輸入安全選項(xiàng)所指定的塊排列的頻率的存儲(chǔ)器中動(dòng)態(tài)逆轉(zhuǎn)換的塊的隨機(jī)代碼位置排列。
34.如權(quán)利要求32所述的方法,其中所述塊轉(zhuǎn)化(BT)還包括所述退出塊處理器,所述退出塊處理器能夠與所述白盒轉(zhuǎn)換運(yùn)行時(shí)設(shè)備交互,以通過(guò)利用所述塊特定的白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰數(shù)據(jù)和操作代碼、執(zhí)行所述白盒轉(zhuǎn)換操作來(lái)對(duì)所述白盒逆轉(zhuǎn)換的塊進(jìn)行逆轉(zhuǎn)換。
35.如權(quán)利要求33或34所述的方法,其中所述塊轉(zhuǎn)化通過(guò)將IV和/或ADB轉(zhuǎn)化中的一種或兩種應(yīng)用到每一個(gè)塊的進(jìn)入和退出塊處理器上來(lái)得到進(jìn)一步保護(hù)。
36.如權(quán)利要求27-35中的任一項(xiàng)所述的方法,其中所述指令轉(zhuǎn)化(IT)通過(guò)構(gòu)建時(shí)和運(yùn)行時(shí)的IT處理對(duì)應(yīng)用模塊內(nèi)個(gè)別函數(shù)中的代碼的單個(gè)指令進(jìn)行保護(hù),以便為所述函數(shù)提供抵御靜態(tài)、動(dòng)態(tài)以及自動(dòng)攻擊的更強(qiáng)保護(hù)。
37.一種保護(hù)包括二進(jìn)制代碼和任選關(guān)聯(lián)數(shù)據(jù)的軟件應(yīng)用從原形式至更安全形式的系統(tǒng),所述更安全形式抵抗試圖篡改、逆向改造或提升所述應(yīng)用的全部或部分應(yīng)用的靜態(tài)和/ 或動(dòng)態(tài)攻擊,所述系統(tǒng)包括a.提供用于軟件應(yīng)用的安全二進(jìn)制庫(kù),以調(diào)用在用戶(hù)想保護(hù)的代碼位置處的指定轉(zhuǎn)化執(zhí)行行為;b.為用戶(hù)提供選項(xiàng)從而在例如包括所述應(yīng)用的模塊、函數(shù)、塊以及指令的各種粒度下應(yīng)用不同類(lèi)型的轉(zhuǎn)化;c.提供構(gòu)建時(shí)工具組以對(duì)所述應(yīng)用執(zhí)行二進(jìn)制轉(zhuǎn)化準(zhǔn)備,并且通過(guò)利用所述工具組將所述應(yīng)用的原執(zhí)行轉(zhuǎn)換成安全的執(zhí)行;d.產(chǎn)生語(yǔ)義等同于原應(yīng)用、包括聯(lián)鎖的轉(zhuǎn)化執(zhí)行的受保護(hù)應(yīng)用,所述聯(lián)鎖的轉(zhuǎn)化執(zhí)行還與轉(zhuǎn)化準(zhǔn)備聯(lián)鎖,以使得所述二進(jìn)制保護(hù)不再與所述受保護(hù)的應(yīng)用分離;e.在受保護(hù)應(yīng)用執(zhí)行期間,包括聯(lián)鎖的轉(zhuǎn)化執(zhí)行的所述受保護(hù)的應(yīng)用保護(hù)所述執(zhí)行, 以阻止受到靜態(tài)和動(dòng)態(tài)攻擊,并且在執(zhí)行的任何時(shí)間過(guò)程中,存在于執(zhí)行存儲(chǔ)器中的二進(jìn)制代碼中的非常少的部分處于清除形式。
38.如權(quán)利要求37所述的系統(tǒng),其中c、d、以及e還包括通過(guò)在轉(zhuǎn)化準(zhǔn)備與執(zhí)行之間聯(lián)鎖來(lái)生成、排列并且增加聯(lián)鎖數(shù)據(jù)和代碼,并且產(chǎn)生若有效聯(lián)鎖數(shù)據(jù)和代碼不存在就不能正確執(zhí)行的受保護(hù)應(yīng)用;通過(guò)在不同轉(zhuǎn)化的執(zhí)行之間聯(lián)鎖來(lái)生成、排列并且增加聯(lián)鎖數(shù)據(jù)和代碼,并且產(chǎn)生若有效的聯(lián)鎖數(shù)據(jù)和代碼不存在就不能正確執(zhí)行的受保護(hù)應(yīng)用;使得多種轉(zhuǎn)化對(duì)所述應(yīng)用產(chǎn)生多個(gè)保護(hù)層;以及其中(b)還包括使至少一個(gè)粒度的多于一種的轉(zhuǎn)化交疊。
39.如權(quán)利要求38所述的系統(tǒng),還包括嵌套的補(bǔ)充轉(zhuǎn)化產(chǎn)生每個(gè)均由IV、ADB或者IV 和ADB保護(hù)的、具有補(bǔ)充性能的多個(gè)嵌套保護(hù)層。
40.如權(quán)利要求39所述的系統(tǒng),還包括將粒度分拆成幾個(gè)部分,并且僅當(dāng)IV檢查結(jié)果被確定在當(dāng)前粒度的當(dāng)前轉(zhuǎn)化上成功時(shí),為所述粒度的下一部分調(diào)用轉(zhuǎn)化執(zhí)行。
41.如權(quán)利要求37-40中的任一項(xiàng)所述的系統(tǒng),還包括在所述轉(zhuǎn)化之間提供失敗和成功回叫功能,其中給定粒度的一個(gè)轉(zhuǎn)化的白盒轉(zhuǎn)換逆操作僅當(dāng)另一轉(zhuǎn)化的白盒轉(zhuǎn)換逆操作成功時(shí)才能進(jìn)行。
42.如以上任一權(quán)利要求所述的方法/系統(tǒng),其中所述轉(zhuǎn)化被應(yīng)用到所述代碼和相關(guān)數(shù)據(jù)上。
43.一種計(jì)算機(jī)程序產(chǎn)品,包括有形地儲(chǔ)存機(jī)器可讀指令和可執(zhí)行指令的機(jī)器可讀介質(zhì),當(dāng)由處理器執(zhí)行時(shí),所述機(jī)器可讀介質(zhì)使得所述處理器實(shí)現(xiàn)在本文中公開(kāi)和/或權(quán)利要求保護(hù)的方法中的任何方法。
44.如權(quán)利要求37所述的系統(tǒng),其中所述白盒轉(zhuǎn)換允許將白盒運(yùn)行時(shí)密鑰數(shù)據(jù)分拆成兩個(gè)或更多部分,其中至少一個(gè)部分是內(nèi)部的并且被嵌入所述受保護(hù)應(yīng)用內(nèi),而其它部分是外部的并且以一個(gè)或多個(gè)單獨(dú)的儲(chǔ)存形式儲(chǔ)存。
45.如權(quán)利要求44所述的系統(tǒng)和方法,還包括允許外部白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰部分單獨(dú)被供應(yīng)至所述受保護(hù)應(yīng)用的裝置上,而在裝置供應(yīng)時(shí)期間,部分安裝所述內(nèi)部白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰。
46.如權(quán)利要求44所述的系統(tǒng)和方法,還包括提供通過(guò)白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰主機(jī)調(diào)用的特定白盒運(yùn)行時(shí)操作,以將不同且分開(kāi)的白盒運(yùn)行時(shí)密鑰數(shù)據(jù)部分重新組成為可用形式。
47.如權(quán)利要求44所述的系統(tǒng)和方法,還包括在所述受保護(hù)應(yīng)用與這些單獨(dú)供應(yīng)的所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰的外部部分之間產(chǎn)生聯(lián)鎖依存性,以增加如下安全性a.在分配并供應(yīng)受保護(hù)應(yīng)用和外部密鑰信息的任何時(shí)期中,攻擊者必須打破白盒密鑰的多個(gè)部分以便得到整個(gè)密鑰,因此將使得這種攻擊更困難并且降低安全風(fēng)險(xiǎn);b.由于所述受保護(hù)應(yīng)用和白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰的不同示例能具有不同百分比的密鑰數(shù)據(jù)分拆,實(shí)施者能通過(guò)改變密鑰的多個(gè)不同部分的比率來(lái)引進(jìn)多樣性;c.將受保護(hù)應(yīng)用的示例與一個(gè)裝置聯(lián)鎖或者將受保護(hù)的示例與共享相同的密鑰數(shù)據(jù)格式的一組裝置聯(lián)鎖,以使得受保護(hù)應(yīng)用的示例聯(lián)鎖至單個(gè)裝置,而來(lái)自所述裝置的語(yǔ)義等同應(yīng)用的全部或部分的代碼提升不能在任何未授權(quán)和匹配的裝置上運(yùn)行。
48.如權(quán)利要求47所述的系統(tǒng)和方法,其中供應(yīng)表現(xiàn)為以下形式d.通過(guò)制造者在制造時(shí)或者服務(wù)提供者在供應(yīng)時(shí),將所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰的所述外部部分安裝在裝置上;e.當(dāng)所述應(yīng)用第一次或者每次被調(diào)用時(shí),通過(guò)網(wǎng)絡(luò)下載所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰的所述外部部分;f.當(dāng)所述應(yīng)用被調(diào)用時(shí),從用戶(hù)供給裝置獲得所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰的所述外部部分,所述用戶(hù)供給裝置例如為與所述裝置連接的智能卡;g.當(dāng)所述應(yīng)用被調(diào)用時(shí),通過(guò)所述用戶(hù)手動(dòng)地進(jìn)入所述白盒轉(zhuǎn)換運(yùn)行時(shí)密鑰的所述外部部分。
49.一種將包括二進(jìn)制應(yīng)用代碼的二進(jìn)制軟件應(yīng)用從原形式轉(zhuǎn)換為安全形式的方法, 所述安全形式抵抗試圖篡改、逆向改造或提升所述應(yīng)用的全部或部分的靜態(tài)和/或動(dòng)態(tài)攻擊,所述方法包括分析所述二進(jìn)制應(yīng)用以確定至少一種二進(jìn)制轉(zhuǎn)化能被應(yīng)用于其上的、所述應(yīng)用的至少一個(gè)組件,所述組件包括組件代碼;對(duì)所述組件代碼執(zhí)行一系列變化以產(chǎn)生改變的組件代碼,所述變化包括將至少一種WB 轉(zhuǎn)換應(yīng)用到所述組件代碼上以及將與所述變化緊密相關(guān)的新代碼植入所述二進(jìn)制應(yīng)用代碼;通過(guò)在所述變化之間生成并放置依存性來(lái)聯(lián)鎖所述變化;以及應(yīng)用所述變化的組合并將其聯(lián)鎖至待保護(hù)的二進(jìn)制應(yīng)用代碼和被植入的代碼,以產(chǎn)生語(yǔ)義等同于所述原應(yīng)用但包括所述已聯(lián)鎖轉(zhuǎn)換的已轉(zhuǎn)化應(yīng)用,從而使得所述二進(jìn)制保護(hù)不再與所述受保護(hù)應(yīng)用分離。
50.一種保護(hù)包括二進(jìn)制代碼和任選關(guān)聯(lián)數(shù)據(jù)的軟件應(yīng)用從原形式至更安全形式的方法,所述更安全形式抵抗試圖篡改、逆向改造或提升所述應(yīng)用的全部或部分的靜態(tài)和/或動(dòng)態(tài)攻擊,所述方法包括c.提供構(gòu)建時(shí)工作組以對(duì)所述應(yīng)用執(zhí)行二進(jìn)制轉(zhuǎn)化準(zhǔn)備,并且通過(guò)利用所述工具組將所述應(yīng)用的原執(zhí)行轉(zhuǎn)換成安全的執(zhí)行;以及d.產(chǎn)生語(yǔ)義等同于原應(yīng)用、包括聯(lián)鎖的轉(zhuǎn)化執(zhí)行的受保護(hù)應(yīng)用,所述聯(lián)鎖的轉(zhuǎn)化執(zhí)行還與轉(zhuǎn)化準(zhǔn)備聯(lián)鎖,以使得所述二進(jìn)制保護(hù)不再與所述受保護(hù)的應(yīng)用分離;其中所述受保護(hù)應(yīng)用的所述安全執(zhí)行包括被配置使得在其執(zhí)行的任何時(shí)間過(guò)程中僅一小部分的二進(jìn)制代碼處于清除形式的聯(lián)鎖的轉(zhuǎn)化執(zhí)行。
51.如權(quán)利要求50所述的方法,其中包括以下步驟通過(guò)在轉(zhuǎn)化準(zhǔn)備和轉(zhuǎn)化執(zhí)行之間聯(lián)鎖來(lái)生成、排列和增加聯(lián)鎖數(shù)據(jù)和代碼,并且產(chǎn)生若有效的聯(lián)鎖數(shù)據(jù)和代碼不存在就不能正確執(zhí)行的受保護(hù)應(yīng)用;
52.如權(quán)利要求51所述的方法,其中所述生成、排列和增加聯(lián)鎖數(shù)據(jù)和代碼包括在不同粒度的不同轉(zhuǎn)化的執(zhí)行之間聯(lián)鎖,并且產(chǎn)生若有效的聯(lián)鎖數(shù)據(jù)和代碼不存在就不能正確執(zhí)行的受保護(hù)應(yīng)用;以及使得多種轉(zhuǎn)化對(duì)所述應(yīng)用產(chǎn)生多個(gè)保護(hù)層。
53.如權(quán)利要求52所述的方法,其中所述不同粒度的不同轉(zhuǎn)化包括使得嵌套的補(bǔ)充轉(zhuǎn)化產(chǎn)生每個(gè)均由IV、ADB或者IV和ADB保護(hù)的、具有補(bǔ)充性能的多個(gè)嵌套保護(hù)層。
54.如權(quán)利要求50-53中的任一項(xiàng)所述的方法,還包括a.為軟件應(yīng)用提供安全二進(jìn)制庫(kù)以在用戶(hù)想要保護(hù)的代碼位置處調(diào)用指定的轉(zhuǎn)化執(zhí)行行為;以及b.為用戶(hù)提供選項(xiàng)以在例如包括所述應(yīng)用的模塊、函數(shù)、塊以及指令的各種粒度下應(yīng)用不同類(lèi)型的轉(zhuǎn)化。
55.一種將包括二進(jìn)制應(yīng)用代碼的二進(jìn)制軟件應(yīng)用從原形式轉(zhuǎn)換為安全形式的方法, 所述安全形式抵抗試圖篡改、逆向改造或提升所述應(yīng)用的全部或部分的靜態(tài)和/或動(dòng)態(tài)攻擊,所述方法包括A)在構(gòu)建時(shí)階段中通過(guò)對(duì)所述二進(jìn)制應(yīng)用代碼進(jìn)行一系列變化來(lái)對(duì)所述二進(jìn)制軟件應(yīng)用執(zhí)行多種二進(jìn)制轉(zhuǎn)換的組合,以產(chǎn)生被改變的二進(jìn)制應(yīng)用代碼,所述變化包括在構(gòu)建時(shí)植入與所述被改變的二進(jìn)制應(yīng)用代碼緊密相關(guān)的新代碼;B)通過(guò)在所述轉(zhuǎn)換之間生成并設(shè)置依存性來(lái)聯(lián)鎖所述轉(zhuǎn)換;以及C)對(duì)待保護(hù)的二進(jìn)制應(yīng)用代碼和被植入的代碼應(yīng)用所述轉(zhuǎn)換的組合并聯(lián)鎖,以產(chǎn)生語(yǔ)義等同于原應(yīng)用但包括所述聯(lián)鎖轉(zhuǎn)換的已轉(zhuǎn)化應(yīng)用,以使得所述二進(jìn)制保護(hù)不再與所述受保護(hù)應(yīng)用分離。
56.如權(quán)利要求55所述的方法,其中步驟A和B包括在二進(jìn)制形式的所述受保護(hù)二進(jìn)制應(yīng)用上執(zhí)行二進(jìn)制轉(zhuǎn)化特定操作,并且生成執(zhí)行時(shí)需要的關(guān)聯(lián)靜態(tài)聯(lián)鎖數(shù)據(jù),其中二進(jìn)制轉(zhuǎn)化還包括運(yùn)行時(shí)過(guò)程,所述運(yùn)行時(shí)過(guò)程包括a.以如果所述轉(zhuǎn)化被除去或修改就不保存所述應(yīng)用的原語(yǔ)義的方式來(lái)執(zhí)行被插入所述應(yīng)用中的所述轉(zhuǎn)化執(zhí)行代碼;b.動(dòng)態(tài)生成進(jìn)一步需要的運(yùn)行時(shí)聯(lián)鎖數(shù)據(jù)并執(zhí)行所述轉(zhuǎn)化執(zhí)行代碼;c.利用所述關(guān)聯(lián)的靜態(tài)聯(lián)鎖數(shù)據(jù)和動(dòng)態(tài)聯(lián)鎖數(shù)據(jù)以檢驗(yàn)所需的聯(lián)鎖依存性;d.以指定順序執(zhí)行一系列多種轉(zhuǎn)化,以使得需要一種轉(zhuǎn)化來(lái)生成執(zhí)行所述受保護(hù)應(yīng)用時(shí)適于執(zhí)行第二轉(zhuǎn)化的應(yīng)用狀態(tài)。
57.如權(quán)利要求56所述的方法,任何給定的轉(zhuǎn)化包括插入具有其所附聯(lián)鎖設(shè)備的IV和 ADB例程,并且將程序分解成接下來(lái)被WB技術(shù)轉(zhuǎn)換的函數(shù)、塊和指令需要在其中運(yùn)行的特定環(huán)境(其包括實(shí)體和退出處理器、RSM等),并因此實(shí)際不可逆地產(chǎn)生。
58.一種將包括二進(jìn)制應(yīng)用代碼的二進(jìn)制軟件應(yīng)用從原形式轉(zhuǎn)換為安全形式的方法, 所述安全形式抵抗試圖篡改、逆向改造或提升所述應(yīng)用的全部或部分的靜態(tài)和/或動(dòng)態(tài)攻擊,所述方法包括分析所述二進(jìn)制應(yīng)用以確定所述應(yīng)用的組件,所述二進(jìn)制轉(zhuǎn)化能被應(yīng)用于所述組件上,其中每種二進(jìn)制轉(zhuǎn)化包括通過(guò)對(duì)所述組件代碼應(yīng)用轉(zhuǎn)換來(lái)對(duì)所述代碼進(jìn)行變化并且附加地植入與所述被轉(zhuǎn)換的組件代碼緊密相關(guān)的轉(zhuǎn)化執(zhí)行代碼;通過(guò)在所述變化和所述應(yīng)用代碼的其它方面 < 其能夠包括主應(yīng)用或者其它組件 > 之間生成并設(shè)置依存性來(lái)聯(lián)鎖所述變化;以及應(yīng)用所述變化并聯(lián)鎖至待保護(hù)的二進(jìn)制應(yīng)用代碼和被植入的代碼,以產(chǎn)生語(yǔ)義等同于所述原應(yīng)用但包括所述聯(lián)鎖轉(zhuǎn)換的已轉(zhuǎn)化應(yīng)用,以使得所述二進(jìn)制保護(hù)不再與所述受保護(hù)應(yīng)用分離。
59.如權(quán)利要求58所述的方法,其中二進(jìn)制轉(zhuǎn)化包括生成執(zhí)行時(shí)所需的關(guān)聯(lián)的靜態(tài)聯(lián)鎖數(shù)據(jù);并且其中二進(jìn)制轉(zhuǎn)化還包括運(yùn)行時(shí)過(guò)程,所述運(yùn)行時(shí)過(guò)程包括a.以如果所述轉(zhuǎn)化被除去或修改就不保存所述應(yīng)用的原語(yǔ)義的方式來(lái)執(zhí)行被插入所述應(yīng)用中的所述轉(zhuǎn)化執(zhí)行代碼;b.動(dòng)態(tài)生成進(jìn)一步需要的運(yùn)行時(shí)聯(lián)鎖數(shù)據(jù)并執(zhí)行所述轉(zhuǎn)化執(zhí)行代碼;c.利用所述關(guān)聯(lián)的靜態(tài)和動(dòng)態(tài)聯(lián)鎖數(shù)據(jù)以檢驗(yàn)所需的聯(lián)鎖依存性;d.以指定順序執(zhí)行一系列多種轉(zhuǎn)化,從而需要一種轉(zhuǎn)化來(lái)生成所述受保護(hù)應(yīng)用執(zhí)行時(shí)適合于執(zhí)行第二轉(zhuǎn)化的應(yīng)用狀態(tài)。
60.一種如前述權(quán)利要求中的任何一項(xiàng)所述的方法,還包括動(dòng)態(tài)函數(shù)加載。
61.一種如所述的動(dòng)態(tài)函數(shù)加載的方法。
全文摘要
一種將包括二進(jìn)制代碼和任選關(guān)聯(lián)數(shù)據(jù)的軟件應(yīng)用從原形式轉(zhuǎn)換為更安全形式的系統(tǒng)和方法。該方法包括對(duì)該應(yīng)用執(zhí)行二進(jìn)制轉(zhuǎn)化的組合,并且通過(guò)在所述轉(zhuǎn)化之間生成并設(shè)置依存性來(lái)聯(lián)鎖轉(zhuǎn)化,其中轉(zhuǎn)化是對(duì)應(yīng)用的不可逆變化。不同類(lèi)型的轉(zhuǎn)化可應(yīng)用于應(yīng)用的各種粒度。轉(zhuǎn)化還被應(yīng)用到應(yīng)用代碼和被植入的代碼上。結(jié)果是被轉(zhuǎn)換的軟件應(yīng)用語(yǔ)義等同于原軟件應(yīng)用但是抵抗靜態(tài)和/或動(dòng)態(tài)攻擊。
文檔編號(hào)G06F9/44GK102483790SQ201080030733
公開(kāi)日2012年5月30日 申請(qǐng)日期2010年5月6日 優(yōu)先權(quán)日2009年5月6日
發(fā)明者丹尼爾·艾利·穆多克, 保羅·麥克瑞, 博格丹·尼科萊蘇, 朱喜建, 瓦勒瑞·萊維斯基, 董宏瑞, 顧元祥 申請(qǐng)人:埃德圖加拿大公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
东源县| 白河县| 三门峡市| 黑龙江省| 三门县| 积石山| 柏乡县| 扬州市| 鄱阳县| 宁津县| 简阳市| 武鸣县| 吴江市| 抚松县| 通榆县| 旬阳县| 江陵县| 新兴县| 南投县| 瓮安县| 吴旗县| 百色市| 福清市| 北票市| 调兵山市| 嘉兴市| 长汀县| 东乡| 炎陵县| 奉化市| 荥阳市| 澎湖县| 平顶山市| 枝江市| 加查县| 松原市| 五大连池市| 游戏| 沁水县| 邹城市| 横山县|