用于動態(tài)創(chuàng)建應(yīng)用程序執(zhí)行環(huán)境以保護(hù)所述應(yīng)用程序的方法以及相關(guān)的計算機(jī)程序產(chǎn)品 ...的制作方法
【專利摘要】本發(fā)明涉及一種用于動態(tài)創(chuàng)建用來對操作系統(tǒng)(20)中待保護(hù)的應(yīng)用程序(34)進(jìn)行保護(hù)的執(zhí)行環(huán)境的方法,所述操作系統(tǒng)(20)包括包含一個或更多個不安全函數(shù)(39)的庫集(26),所述待保護(hù)的應(yīng)用程序(34)在執(zhí)行期間原本打算調(diào)用屬于包含一個或更多個不安全函數(shù)(39)的庫的函數(shù)。該方法由計算裝置(10)執(zhí)行,所述計算裝置(10)包括安全庫(24),所述安全庫(24)包括至少一個保護(hù)函數(shù),并且該方法保護(hù)以下步驟:加載所述安全庫(24);將與所述待保護(hù)的應(yīng)用程序(34)相關(guān)的函數(shù)調(diào)用中的至少一個對不安全函數(shù)的調(diào)用替換為對來自所述安全庫(24)中對應(yīng)函數(shù)的調(diào)用;以及在替換步驟之后啟動所述待保護(hù)的應(yīng)用程序(34)。
【專利說明】用于動態(tài)創(chuàng)建應(yīng)用程序執(zhí)行環(huán)境以保護(hù)所述應(yīng)用程序的方法以及相關(guān)的計算機(jī)程序產(chǎn)品和計算裝置
【發(fā)明內(nèi)容】
[0001]本申請涉及一種用于動態(tài)創(chuàng)建用來執(zhí)行待保護(hù)的應(yīng)用程序的環(huán)境以保護(hù)所述應(yīng)用程序的方法,所述方法由計算裝置實現(xiàn),所述計算裝置包括信息處理單元和存儲器,所述存儲器與所述信息處理單元相關(guān)并且包括操作系統(tǒng)、所述待保護(hù)的應(yīng)用程序以及至少包括一個安全函數(shù)的安全庫,所述操作系統(tǒng)包括函數(shù)庫集,所述函數(shù)庫集包括不安全函數(shù)庫,所述待保護(hù)的應(yīng)用程序在執(zhí)行期間用來調(diào)用所述不安全函數(shù)庫的函數(shù)。
[0002]本發(fā)明還涉及一種計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括軟件指令,當(dāng)所述軟件指令由集成到計算裝置中的信息處理單元實施時,所述軟件指令實現(xiàn)這種方法。
[0003]本發(fā)明還涉及一種計算裝置,包括:
[0004]-信息處理單元;
[0005]-存儲器,所述存儲器包括操作系統(tǒng)、至少一個待保護(hù)的應(yīng)用程序,以及包括至少一個安全函數(shù)的安全庫,所述存儲器與所述信息處理單元相關(guān);
[0006]所述操作系統(tǒng)包括函數(shù)庫集,所述函數(shù)庫集包括不安全函數(shù)庫,所述待保護(hù)的應(yīng)用程序被設(shè)計為調(diào)用來自所述不安全函數(shù)庫的函數(shù)。
[0007]計算裝置是已知的,例如上述類型的移動終端。該移動終端由安卓平臺承載的應(yīng)用程序進(jìn)行管理。該安卓平臺包括Linux內(nèi)核,C或C++語言的函數(shù)庫集,以及能夠執(zhí)行由安卓平臺承載的應(yīng)用程序的Dalvik虛擬機(jī)。
[0008]必須保護(hù)敏感性應(yīng)用程序的操作,以保護(hù)由那些應(yīng)用程序處理的數(shù)據(jù)且防止由移動終端丟失或被竊或移動終端與另一計算設(shè)備之間通信的攔截而引起的信息恢復(fù)的風(fēng)險。于是一種數(shù)據(jù)保護(hù)方案包括修改每個待保護(hù)的應(yīng)用程序的源代碼或二進(jìn)制代碼,以使其調(diào)用包括適當(dāng)安全函數(shù)的特定庫。
[0009]然而,這種對應(yīng)用程序的保護(hù)需要修改每個應(yīng)用程序的源代碼或二進(jìn)制代碼,這是相當(dāng)受限的,而且當(dāng)代碼的修改是由第三方進(jìn)行時,這樣并不總是受到該應(yīng)用程序提供商的允許。
[0010]因此,本發(fā)明的一個目的是提供一種用于針對待保護(hù)的應(yīng)用程序動態(tài)創(chuàng)建執(zhí)行環(huán)境的方法以及相關(guān)的計算裝置,其能夠保護(hù)應(yīng)用程序,同時限制對操作系統(tǒng)代碼、應(yīng)用程序的環(huán)境或待保護(hù)的應(yīng)用程序的修改。
[0011]為此,本發(fā)明涉及一種動態(tài)創(chuàng)建上述類型的執(zhí)行環(huán)境的方法,其特征在于,該方法包括以下步驟,所述步驟由存儲在存儲器中用于動態(tài)創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序?qū)崿F(xiàn):
[0012]-加載所述安全庫;
[0013]-將與所述待保護(hù)的應(yīng)用程序相關(guān)的函數(shù)調(diào)用中的至少一個對不安全函數(shù)的調(diào)用替換為對所述安全庫中的對應(yīng)函數(shù)的調(diào)用;
[0014]-在替換步驟之后啟動所述待保護(hù)的應(yīng)用程序。
[0015]根據(jù)本發(fā)明的其他有利方面,該方法包括一個或更多個以下特征,這些特征可以單獨考慮或進(jìn)行任一技術(shù)可能的結(jié)合:[0016]-所述替換步驟包括消除所述待保護(hù)的應(yīng)用程序與所述不安全函數(shù)之間的動態(tài)鏈接,并在所述待保護(hù)的應(yīng)用程序與所述安全庫中的對應(yīng)函數(shù)之間創(chuàng)建動態(tài)替換鏈接。
[0017]-在與所述待保護(hù)的應(yīng)用程序相關(guān)的函數(shù)調(diào)用中,所有對數(shù)據(jù)存儲函數(shù)的調(diào)用被替換為對所述數(shù)據(jù)存儲的安全函數(shù)的調(diào)用。
[0018]-在與所述待保護(hù)的應(yīng)用程序相關(guān)的函數(shù)調(diào)用中,所有對與另一計算裝置交換數(shù)據(jù)的函數(shù)的調(diào)用被替換為對保護(hù)與所述另一計算裝置數(shù)據(jù)交換的函數(shù)的調(diào)用。
[0019]-在與所述待保護(hù)的應(yīng)用程序相關(guān)的函數(shù)調(diào)用中,所有對增加調(diào)試事件的函數(shù)的調(diào)用被替換為對刪除調(diào)試事件的函數(shù)的調(diào)用。
[0020]-所述方法進(jìn)一步包括:在啟動所述應(yīng)用程序的步驟之前,鎖定在所述加載步驟期間加載的所述安全庫以及在所述替換步驟期間進(jìn)行的函數(shù)調(diào)用替換的步驟。
[0021]-所述方法進(jìn)一步包括:在啟動所述應(yīng)用程序的步驟之前,對所述計算裝置的用戶進(jìn)行認(rèn)證并恢復(fù)用來解鎖所述安全庫的密鑰的步驟。
[0022]-所述方法進(jìn)一步包括:在啟動所述應(yīng)用程序的步驟之前,攔截在所述操作系統(tǒng)與所述待保護(hù)的應(yīng)用程序之間交換的消息,并利用所述安全庫的對應(yīng)函數(shù)對所述消息進(jìn)行處理的步驟。
[0023]-所述用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序是專用于所述待保護(hù)應(yīng)用程序的應(yīng)用程序,并且不同于所述操作系統(tǒng)。
[0024]-所述操作系統(tǒng)包括虛擬機(jī),所述虛擬機(jī)用于執(zhí)行所述應(yīng)用程序。
[0025]-所述操作系統(tǒng)為安卓系統(tǒng),并且所述虛擬機(jī)為Dalvik虛擬機(jī)。
[0026]本發(fā)明還涉及一種計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括軟件指令,當(dāng)所述軟件指令由集成到計算裝置中的信息處理單元實施時,所述軟件指令實現(xiàn)上述方法。
[0027]本發(fā)明還涉及一種上述類型的計算裝置,其特征在于,所述存儲器進(jìn)一步包括用于動態(tài)創(chuàng)建待保護(hù)的應(yīng)用程序的執(zhí)行環(huán)境的應(yīng)用程序,所述用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用包括:用于加載所述安全庫的組件,用于將與所述待保護(hù)的應(yīng)用程序相關(guān)的函數(shù)調(diào)用中的至少一個對不安全函數(shù)的調(diào)用替換為對所述安全庫中的對應(yīng)函數(shù)的調(diào)用的組件,以及用于在將對不安全函數(shù)的調(diào)用替換為對所述安全函數(shù)的調(diào)用之后,啟動所述待保護(hù)的應(yīng)用程序的組件。
【專利附圖】
【附圖說明】
[0028]在閱讀以下僅作為示例提供且參照附圖進(jìn)行說明的說明書之后,本申請的這些特征和優(yōu)點將顯而易見,其中附圖為:
[0029]-圖1為根據(jù)本發(fā)明的計算裝置的示意圖;
[0030]-圖2為圖1的所述計算裝置的存儲器的示意圖;
[0031]-圖3為根據(jù)本發(fā)明的針對待保護(hù)的應(yīng)用程序動態(tài)創(chuàng)建執(zhí)行環(huán)境的方法的流程圖;以及
[0032]-圖4為針對所述待保護(hù)的應(yīng)用程序動態(tài)創(chuàng)建執(zhí)行環(huán)境和執(zhí)行所述應(yīng)用程序的圖
/Jn ο
【具體實施方式】[0033]在圖1中,諸如移動終端之類的計算裝置10包括信息處理單元12、與所述信息處理單元相關(guān)的存儲器14,以及屏幕15。
[0034]在圖1的示例性實施例中,計算裝置10為移動電話,并且進(jìn)一步包括無線天線16和無線收發(fā)器18,所述無線收發(fā)器被連接到所述信息處理單元。
[0035]信息處理單元12例如包括數(shù)據(jù)處理器。
[0036]存儲器14包括操作系統(tǒng)20以及多個第一包文件21和第二包文件22。
[0037]此外,存儲器14包括第三包文件23。
[0038]存儲器14還包括安全庫24,所述安全庫例如能夠保護(hù)數(shù)據(jù)存儲和/或與另一計算裝置的數(shù)據(jù)交換。
[0039]無線收發(fā)器18包括通過無線天線16發(fā)送和接收無線信號的模塊。無線收發(fā)器18根據(jù)通用分組無線業(yè)務(wù)(GPRS)通信標(biāo)準(zhǔn)或者通用移動通信系統(tǒng)(UMTS)標(biāo)準(zhǔn)。
[0040]無線天線16和無線收發(fā)器18能夠允許在計算裝置10與另一根據(jù)同一通信標(biāo)準(zhǔn)包括無線天線和收發(fā)器的計算裝置之間建立無線鏈接。
[0041]操作系統(tǒng)20包括內(nèi)核25、函數(shù)庫集26、虛擬機(jī)28以及應(yīng)用程序框架30。
[0042]每個第一包文件21包括第一配置文件33和采用第一二進(jìn)制文件形式的非敏感性應(yīng)用程序31,所述非敏感性應(yīng)用程序31不需要被保護(hù)。
[0043]每個第二包文件22包括采用第二二進(jìn)制文件形式的待保護(hù)應(yīng)用程序34、第二配置文件35以及用于為所述待保護(hù)應(yīng)用程序動態(tài)創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36,所述用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36采用第三二進(jìn)制文件的形式。
[0044]此外,第三包文件23包括用于對用戶進(jìn)行認(rèn)證并恢復(fù)用來解鎖所述安全庫的密鑰的應(yīng)用程序(未示出)。第三包文件23包括與所述用于對用戶進(jìn)行認(rèn)證并恢復(fù)解鎖密鑰的應(yīng)用程序相關(guān)的第三配置文件(未示出)。用戶的認(rèn)證例如利用包含在裝置10中的芯片卡或位于裝置外的近距離通信卡(也稱為NFC卡)來完成。所述應(yīng)用程序還適于驗證與第三方應(yīng)用程序相關(guān)的許可,以控制用戶對所述第三方應(yīng)用程序的訪問。
[0045]如圖2所示,安全庫24包括用于保護(hù)數(shù)據(jù)存儲的函數(shù)37A、用于保護(hù)與另一計算裝置的數(shù)據(jù)交換的函數(shù)37B,以及用于消除調(diào)試事件的函數(shù)37C。
[0046]在圖1和圖2的示例性實施例中,安全庫24是與包含在操作系統(tǒng)20中的本地庫分離的特定庫。
[0047]可替換地,如圖2中的點劃線所示,安全庫24是包含在由操作系統(tǒng)的提供商交付的所述操作系統(tǒng)的庫集26中的本地庫。
[0048]內(nèi)核25在一方面的硬件部分(具體包括信息處理單元12、存儲器14和無線收發(fā)器18)與另一方面的操作系統(tǒng)20的其余部分(尤其是庫集26)之間形成抽象層,這本身是已知的。所述內(nèi)核25適用于對基本業(yè)務(wù)進(jìn)行管理,例如所述操作系統(tǒng)的安全、內(nèi)存管理或
進(jìn)程管理。
[0049]庫集26包括不安全函數(shù)庫39。
[0050]虛擬機(jī)28本身是已知的,并且能夠執(zhí)行包含在每個包文件21、22、23中的對應(yīng)二進(jìn)制文件。
[0051]承載應(yīng)用程序的結(jié)構(gòu)30包括應(yīng)用程序31、34、36可用的業(yè)務(wù)38A、38B,例如活動管理業(yè)務(wù)38A,針對與所述應(yīng)用程序相關(guān)的包文件的管理業(yè)務(wù)38B。[0052]每個應(yīng)用程序31、34、36采用包括二進(jìn)制代碼的二進(jìn)制文件的形式,所述二進(jìn)制代碼還被稱作字節(jié)碼,并設(shè)計成由虛擬機(jī)28執(zhí)行。虛擬機(jī)對應(yīng)用程序31、34、36的執(zhí)行是對所述應(yīng)用程序的字節(jié)碼的解釋。
[0053]如圖4所示,每個應(yīng)用程序31、34、36包括一個或多個組件A、B、#A、#B,這些組件具有不同的類型,例如活動、業(yè)務(wù)、內(nèi)容提供器,或分配接收器。每個組件A、B、#A、#B在所述應(yīng)用程序的行為中起不同的作用,并且甚至可以由其他應(yīng)用程序單獨激活。
[0054]在所描述的實施例中,操作系統(tǒng)是谷歌(Google)的安卓(Android? )應(yīng)用程序系統(tǒng)。那么內(nèi)核25基于Linux內(nèi)核,更具體的是基于2.6版的Linux內(nèi)核。庫集26采用C/C++計算機(jī)語目編寫。虛擬機(jī)28為Dalvik虛擬機(jī)。應(yīng)用程序31、34、36米用Java語目編寫并呈Dalvik虛擬機(jī)28可執(zhí)行的二進(jìn)制代碼的形式。
[0055]可替換地,本發(fā)明適用于任一與安卓操作系統(tǒng)類型相同的操作系統(tǒng)。特別地,本發(fā)明適用于包括內(nèi)核、設(shè)計成執(zhí)行應(yīng)用程序的虛擬機(jī)以及所述內(nèi)核和所述虛擬機(jī)可以訪問的函數(shù)庫集的操作系統(tǒng)。
[0056]第一配置文件33本身是已知的,并包括:用于對所述應(yīng)用程序的版本進(jìn)行命名和指示的信息、關(guān)于所述應(yīng)用程序的組件的信息以及允許所述應(yīng)用程序以預(yù)定的方式從操作系統(tǒng)20或其他應(yīng)用程序接收的消息中識別某些消息的消息過濾器。在Android?的情況下,第一配置文件33也稱為清單文件。
[0057]待保護(hù)的應(yīng)用程序34被設(shè)計成在其執(zhí)行期間調(diào)用不安全函數(shù)庫39中的至少一個函數(shù)。
[0058]第二配置文件35包括與第一配置文件33相同類型的信息,并被進(jìn)一步修改,以便在虛擬機(jī)28執(zhí)行第二包文件22期間,啟動用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36來代替待保護(hù)的應(yīng)用程序34。
[0059]可替換地,待保護(hù)的應(yīng)用程序34和用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36被封裝在兩個不同的包文件中,每個應(yīng)用程序34、36與唯一的配置文件一起被封裝在相應(yīng)包文件中。與待保護(hù)的應(yīng)用程序34相關(guān)的配置文件被修改,以便首先執(zhí)行用于動態(tài)創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36而不是所述待保護(hù)的應(yīng)用程序,并且也是為了使待保護(hù)的應(yīng)用程序34可以在由用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36準(zhǔn)備的現(xiàn)有進(jìn)程中執(zhí)行。
[0060]用于動態(tài)創(chuàng)建環(huán)境的應(yīng)用程序36包括:用于加載所述安全庫的模塊40,用于從與待保護(hù)的應(yīng)用程序34相關(guān)的函數(shù)調(diào)用中將至少一個對不安全函數(shù)的調(diào)用替換為對來自安全庫24中的相應(yīng)函數(shù)的調(diào)用的模塊42。
[0061]此外,用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36包括:用于對所述計算裝置的用戶進(jìn)行認(rèn)證并恢復(fù)針對所述安全庫的解鎖密鑰的模塊44,以及用于攔截并處理與使待保護(hù)的應(yīng)用程序34等待將其喚醒相關(guān)的消息的模塊46。
[0062]用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36包括用于在將對不安全函數(shù)的調(diào)用替換為對安全函數(shù)的調(diào)用之后啟動所述待保護(hù)的應(yīng)用程序的模塊48。
[0063]用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36是專用于待保護(hù)的應(yīng)用程序34的應(yīng)用程序,并且不同于操作系統(tǒng)20。
[0064]用于保護(hù)數(shù)據(jù)存儲的函數(shù)37A能夠例如通過對所存儲的數(shù)據(jù)進(jìn)行加密來保護(hù)存儲在存儲器14的存儲區(qū)中的敏感性數(shù)據(jù)。所述保護(hù)是阻止未授權(quán)人員訪問所述數(shù)據(jù)的隱密性保護(hù),并且也是阻止對所述數(shù)據(jù)內(nèi)容進(jìn)行任何篡改的完整性保護(hù)。
[0065]用于保護(hù)數(shù)據(jù)交換的函數(shù)37B能夠保護(hù)待保護(hù)的應(yīng)用程序34與未示出的另一計算裝置之間的數(shù)據(jù)交換。
[0066]用于刪除調(diào)試事件的函數(shù)37C能夠在調(diào)試事件被保存在存儲器14之前,將這些調(diào)試事件刪除,所述調(diào)試事件在執(zhí)行包含在待保護(hù)的應(yīng)用程序34的代碼中的標(biāo)簽期間產(chǎn)生。這些調(diào)試事件用于在完成應(yīng)用程序的代碼之前確定所述代碼,所述調(diào)試事件有時被保留在應(yīng)用程序代碼中,隨后會造成安全破壞。
[0067]不安全函數(shù)庫39本身是已知的。在Android?操作系統(tǒng)的情況下,不安全函數(shù)庫39是采用C/C++計算機(jī)語言編寫的函數(shù)庫。
[0068]在圖1的示例性實施例中,認(rèn)證和恢復(fù)模塊44是用于調(diào)用針對用戶的認(rèn)證應(yīng)用程序和恢復(fù)封裝在第三包文件23中的解鎖密鑰的模塊。換句話說,認(rèn)證和恢復(fù)模塊44僅包括一個針對用于對用戶進(jìn)行認(rèn)證并恢復(fù)密鑰的應(yīng)用程序的進(jìn)入點。
[0069]可替換地,存儲器14不包括第三包文件,并且每個用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序的認(rèn)證和恢復(fù)模塊44包括用于對用戶進(jìn)行認(rèn)證并恢復(fù)解鎖密鑰的應(yīng)用程序的功能,并且能夠?qū)ρb置10的用戶進(jìn)行認(rèn)證,在認(rèn)證成功的情況下,從安全庫24中恢復(fù)解鎖密鑰。
[0070]現(xiàn)將利用圖3和圖4來說明根據(jù)本發(fā)明的計算裝置10的操作。
[0071]利用創(chuàng)建包文件的應(yīng)用程序來創(chuàng)建每個第二包文件22,然后將在第二包文件22存儲于存儲器14中。用于創(chuàng)建包文件的應(yīng)用程序是位于所述計算裝置之外的第三方應(yīng)用程序,并且能夠根據(jù)待保護(hù)應(yīng)用程序34的初始包文件(其包括待保護(hù)應(yīng)用程序34)和類似于第一配置文件33的初始配置文件來創(chuàng)建用于待保護(hù)的應(yīng)用程序的包文件22。
[0072]用于創(chuàng)建包文件的第三方應(yīng)用程序通過修改所述初始配置文件來創(chuàng)建第二配置文件35,使得在第二包文件22的執(zhí)行期間,啟動用于創(chuàng)建執(zhí)行環(huán)境36的應(yīng)用程序來替換待保護(hù)的應(yīng)用程序34。
[0073]隨后,第三方創(chuàng)建應(yīng)用程序通過將與待保護(hù)的應(yīng)用程序?qū)?yīng)的第二二進(jìn)制文件和與用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36對應(yīng)的第三二進(jìn)制文件添加到上述的第二配置文件35中,來構(gòu)建第二包文件22。此外,第三方創(chuàng)建應(yīng)用程序還將安全庫24添加到第二包文件22中。
[0074]最后,第三方創(chuàng)建應(yīng)用程序?qū)χ皹?gòu)建的第二包文件22進(jìn)行標(biāo)記。
[0075]圖3示出了由創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36針對待保護(hù)的應(yīng)用程序34動態(tài)創(chuàng)建執(zhí)行環(huán)境的方法。
[0076]在初始步驟100期間,加載安全庫24,以便在后續(xù)啟動待保護(hù)的應(yīng)用程序34期間,包含在所述安全庫24中的安全函數(shù)37A、37B、37C可用于虛擬機(jī)28。
[0077]接著在步驟110期間,創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36將在與所述待保護(hù)的應(yīng)用程序34相關(guān)的函數(shù)的調(diào)用中的至少一個對不安全函數(shù)的調(diào)用替換為對相應(yīng)的來自先前加載的安全庫24的應(yīng)用程序37A、37B、37C的調(diào)用。
[0078]例如,替換步驟110包括刪除在所述待保護(hù)的應(yīng)用程序34與不安全函數(shù)之間的動態(tài)鏈接,以及創(chuàng)建在所述待保護(hù)的應(yīng)用程序34與安全庫24的對應(yīng)函數(shù)37A、37B、37C之間的動態(tài)替換鏈接。
[0079]在所描述的實施例中,在與所述待保護(hù)的應(yīng)用程序34相關(guān)的函數(shù)調(diào)用中,所有對數(shù)據(jù)存儲函數(shù)的調(diào)用被替換為對數(shù)據(jù)存儲的安全函數(shù)37A的調(diào)用。
[0080]在與所述待保護(hù)的應(yīng)用程序34相關(guān)的函數(shù)調(diào)用中,所有對與另一計算裝置的數(shù)據(jù)交換函數(shù)的調(diào)用被替換為對數(shù)據(jù)交換安全函數(shù)37B的調(diào)用。
[0081]在與所述待保護(hù)的應(yīng)用程序34相關(guān)的函數(shù)調(diào)用中,所有對添加調(diào)試事件的函數(shù)的調(diào)用被替換為對刪除調(diào)試事件的函數(shù)37C的調(diào)用。
[0082]此外,接著在步驟115期間,用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36鎖定在步驟100期間加載的安全庫24以及在先前步驟110期間進(jìn)行的函數(shù)調(diào)用替換。
[0083]當(dāng)通過動態(tài)鏈接將替換函數(shù)引入待保護(hù)的應(yīng)用程序本身或引入虛擬機(jī)28中來執(zhí)行替換步驟110時,替換函數(shù)來自用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36,例如鎖定步驟包括將對替換函數(shù)的引用更新為對新替換函數(shù)的引用。
[0084]與步驟110和115中的代碼以及新的替換函數(shù)和安全函數(shù)相對應(yīng)的代碼被置于安全庫24中。這個新的替換函數(shù)對替換請求進(jìn)行過濾,拒絕替換在步驟110中處理過的函數(shù)調(diào)用,并且允許對其他函數(shù)調(diào)用進(jìn)行替換。
[0085]此外,接著在步驟120期間,用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36請求對計算裝置10的用戶進(jìn)行認(rèn)證,隨后在成功認(rèn)證的情況下,恢復(fù)用于解鎖安全庫24的密鑰。
[0086]此外,在步驟130期間,用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36攔截并處理操作系統(tǒng)與待保護(hù)的應(yīng)用程序之間所交換的消息,所述消息由安全庫24進(jìn)行處理。特別的是,攔截的消息涉及將待保護(hù)的應(yīng)用程序34設(shè)為等待或喚醒,在存儲器14中的數(shù)據(jù)的存儲,以及與另一計算裝置的數(shù)據(jù)交換。
[0087]最后在步驟140期間,用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36啟動待保護(hù)的應(yīng)用程序34。
[0088]在啟動待保護(hù)的應(yīng)用程序34之后并通過先前完成的調(diào)用函數(shù)替換,由待保護(hù)的應(yīng)用程序34所生成或用于待保護(hù)的應(yīng)用程序的相應(yīng)調(diào)用可選地通過操作系統(tǒng)20被首先發(fā)送到安全庫24,并且如果安全庫24授權(quán)該所述調(diào)用,并且在需要的情況下,將所述調(diào)用發(fā)送到不安全庫39。
[0089]用于待保護(hù)的應(yīng)用程序34的執(zhí)行環(huán)境是動態(tài)創(chuàng)建的,這是因為所述創(chuàng)建在每次執(zhí)行所述應(yīng)用程序時并緊接由操作系統(tǒng)20接收到執(zhí)行所述應(yīng)用程序的指令之后執(zhí)行。
[0090]圖4示出了針對待保護(hù)的應(yīng)用程序34的執(zhí)行環(huán)境的動態(tài)創(chuàng)建和所述應(yīng)用程序的執(zhí)行。
[0091]在操作系統(tǒng)20接收到執(zhí)行第二包文件22的指令之后,該操作系統(tǒng)開始根據(jù)第二改進(jìn)的配置文件35中所包含的信息,利用活動管理業(yè)務(wù)38A(箭頭Fl)啟動用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36的組件M,以便啟動用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36來代替待保護(hù)的應(yīng)用程序34。
[0092]根據(jù)用于創(chuàng)建執(zhí)行環(huán)境的方法的初始步驟100,用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36下載安全庫24(箭頭F2)。所述安全庫中包含的安全函數(shù)37A、37B、37C因而可用于虛擬機(jī)28的后續(xù)操作。根據(jù)前述的步驟110,刪除待保護(hù)的應(yīng)用程序34與某些不安全函數(shù)之間的動態(tài)鏈接,并且在待保護(hù)的應(yīng)用程序34與安全庫24的相應(yīng)函數(shù)37A、37B、37C之間創(chuàng)建相應(yīng)的動態(tài)替換鏈接(箭頭F3)。
[0093]組件#A接下來向操作系統(tǒng)請求啟動待保護(hù)的應(yīng)用程序34的相應(yīng)組件A(箭頭F4)。該請求被安全庫24攔截,以請求用戶的認(rèn)證。隨后,在成功認(rèn)證的情況下,恢復(fù)解鎖安全庫24的密鑰。在用戶成功認(rèn)證的情況下,該請求被發(fā)送到操作系統(tǒng)的活動管理業(yè)務(wù)38A (箭頭 F5)。
[0094]根據(jù)前述的步驟140,操作系統(tǒng)20隨后利用活動管理系統(tǒng)38A來啟動待保護(hù)的應(yīng)用程序34的組件A (箭頭F6)。該啟動根據(jù)第二配置文件35所包含的信息,在與啟動用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36相同的進(jìn)程中進(jìn)行。
[0095]在執(zhí)行待保護(hù)的應(yīng)用程序34期間,組件A向操作系統(tǒng)20請求啟動組件B,并且所述請求隨后經(jīng)過上述用于替換動態(tài)鏈接的步驟由虛擬機(jī)28引導(dǎo)至安全庫24 (箭頭F7)。該請求隨后由安全庫24進(jìn)行修改,以便操作系統(tǒng)20啟動組件#B而不是待保護(hù)的應(yīng)用程序34的組件B,然后修改后的請求被發(fā)送到活動管理業(yè)務(wù)38A (箭頭F8)。于是操作系統(tǒng)20啟動組件#B (箭頭F9)。
[0096]組件#B隨后向操作系統(tǒng)請求啟動待保護(hù)的應(yīng)用程序34的相應(yīng)組件B (箭頭F10)。該請求被安全庫24攔截,以執(zhí)行相應(yīng)的安全處理,隨后經(jīng)安全處理的請求被發(fā)送到操作系統(tǒng)的活動管理業(yè)務(wù)38A (箭頭Fll)。
[0097]于是操作系統(tǒng)20利用活動管理業(yè)務(wù)38A啟動待保護(hù)的應(yīng)用程序34的組件B(箭頭F12)。該組件B接下來想要存儲數(shù)據(jù)文件,為此調(diào)用存儲函數(shù)(箭頭F13)。通過上述針對動態(tài)鏈接的替換步驟,那么安全庫的用于數(shù)據(jù)存數(shù)的安全函數(shù)37A被自動調(diào)用,并且該數(shù)據(jù)文件在被存儲于存儲器14之前,由所述安全函數(shù)37A進(jìn)行加密(箭頭F14)。
[0098]本領(lǐng)域的技術(shù)人員將理解的是,如果該組件想要與另一計算裝置交換數(shù)據(jù),并需為此調(diào)用數(shù)據(jù)交換函數(shù),那么類似地,通過上述用于替換動態(tài)鏈接的步驟,該數(shù)據(jù)交換安全函數(shù)37B已被自動調(diào)用。
[0099]本領(lǐng)域的技術(shù)人員將理解的是,如果該組件想要增加調(diào)試事件,并需為此調(diào)用用于增加調(diào)試事件的函數(shù),那么類似地,經(jīng)過上述用于替換動態(tài)鏈接的步驟,所述用于刪除調(diào)試事件的函數(shù)37C已被自動調(diào)用。
[0100]在圖4的示例性實施例中,所描述的不同請求在管理員模式下進(jìn)行,并且隨后經(jīng)過內(nèi)核25。本領(lǐng)域的技術(shù)人員將理解的是,可替換地,某些請求能夠在用戶模式下進(jìn)行而無需經(jīng)過內(nèi)核25。
[0101]通過實施利用用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36來動態(tài)創(chuàng)建用來執(zhí)行待保護(hù)的應(yīng)用程序34的環(huán)境的方法,計算裝置10因而可以保護(hù)應(yīng)用程序34的操作,特別是關(guān)于這些組件的啟動,數(shù)據(jù)的存儲或與另一計算裝置的數(shù)據(jù)交換,通過安全庫24的適當(dāng)函數(shù)對后者進(jìn)行自動加密。
[0102]對應(yīng)用程序34的保護(hù)僅需要重寫該應(yīng)用程序的配置文件(在Android?情況下,稱為清單文件),增加用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序36,后者被封裝在待保護(hù)的應(yīng)用程序34的包文件中或替換地封裝在獨立的包文件中,并且在庫集26不包括安全庫24時,添加這樣的安全庫24。
[0103]本領(lǐng)域的技術(shù)人員將注意到,這個保護(hù)不需要對待保護(hù)的應(yīng)用程序34的源代碼或二進(jìn)制代碼進(jìn)行任何修改,或?qū)Σ僮飨到y(tǒng)20進(jìn)行任何修改。
[0104]可以發(fā)現(xiàn)的是,用于動態(tài)創(chuàng)建用來執(zhí)行待保護(hù)的應(yīng)用程序的環(huán)境的方法和計算裝置10可以保護(hù)應(yīng)用程序34,同時限制對操作系統(tǒng)的代碼、應(yīng)用程序的環(huán)境或待保護(hù)的應(yīng)用程序的修改。
[0105]盡管圍繞包括能夠執(zhí)行待保護(hù)的應(yīng)用程序的虛擬機(jī)的操作系統(tǒng)對根據(jù)本發(fā)明的針對待保護(hù)的應(yīng)用程序動態(tài)創(chuàng)建執(zhí)行環(huán)境的方法和計算裝置進(jìn)行了描述,但是本領(lǐng)域的技術(shù)人員將理解的是,本發(fā)明還適用于不包括虛擬機(jī)的操作系統(tǒng),在這種情況下,應(yīng)用程序由信息處理單元的處理器直接執(zhí)行。
【權(quán)利要求】
1.一種用于針對待保護(hù)的應(yīng)用程序(34)動態(tài)創(chuàng)建執(zhí)行環(huán)境以保護(hù)所述應(yīng)用程序(34)的方法,該方法由計算裝置(10)實現(xiàn),所述計算裝置(10)包括信息處理單元(12)和存儲器(14),所述存儲器(14)與所述信息處理單元(12)相關(guān),并包括操作系統(tǒng)(20),所述待保護(hù)的應(yīng)用程序(34)和包括至少一個安全函數(shù)(37A,37B,37C)的安全庫(24),所述操作系統(tǒng)(20)包括函數(shù)庫集(26),所述函數(shù)庫集(26)包括不安全函數(shù)庫(39),所述待保護(hù)的應(yīng)用程序(34)適于在所述待保護(hù)的應(yīng)用程序(34)執(zhí)行期間調(diào)用所述不安全函數(shù)庫(39)的函數(shù); 其特征在于,該方法包括以下由存儲在所述存儲器(14)中的用于動態(tài)創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序(36)實現(xiàn)的步驟: -加載(100)所述安全庫(24); -將與所述待保護(hù)的應(yīng)用程序(34)相關(guān)的函數(shù)調(diào)用中的至少一個對不安全函數(shù)的調(diào)用替換(110)為對所述安全庫(24)中的對應(yīng)函數(shù)(37A,37B,37C)的調(diào)用; -在替換步驟(110)之后啟動(140)所述待保護(hù)的應(yīng)用程序(34)。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述替換步驟(110)包括:消除所述待保護(hù)的應(yīng)用程序(34)與所述不安全函數(shù)之間的動態(tài)鏈接,并在所述待保護(hù)的應(yīng)用程序(34)與所述安全庫(24)中的對應(yīng)函數(shù)(37A,37B,37C)之間創(chuàng)建動態(tài)替換鏈接。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,在與所述待保護(hù)的應(yīng)用程序相關(guān)的函數(shù)調(diào)用中,所有對數(shù)據(jù)存儲函數(shù)的調(diào)用被替換為對所述數(shù)據(jù)存儲的安全函數(shù)(37A)的調(diào)用。
4.根據(jù)上述權(quán)利要求中任一項所述的方法,其中,在與所述待保護(hù)的應(yīng)用程序相關(guān)的函數(shù)調(diào)用中,所有對與另一計算裝置交換數(shù)據(jù)的函數(shù)的調(diào)用被替換為對保護(hù)與所述另一計算裝置的數(shù)據(jù)交換的函數(shù)(37B)的調(diào)用。
5.根據(jù)上述權(quán)利要求中任一項所述的方法,其中,在與所述待保護(hù)的應(yīng)用程序相關(guān)的函數(shù)調(diào)用中,所有對增加調(diào)試事件的函數(shù)的調(diào)用被替換為對刪除調(diào)試事件的函數(shù)(37C)的調(diào)用。
6.根據(jù)上述權(quán)利要求中任一項所述的方法,其中,所述方法進(jìn)一步包括:在啟動所述應(yīng)用程序的步驟(140)之前,用于鎖定在所述加載步驟(100)期間加載的所述安全庫(24)和在所述替換步驟(110)期間進(jìn)行的函數(shù)調(diào)用替換的步驟(115)。
7.根據(jù)上述權(quán)利要求中任一項所述的方法,其中,所述方法進(jìn)一步包括:在啟動所述應(yīng)用程序的步驟(140)之前,用于對所述計算裝置(10)的用戶進(jìn)行認(rèn)證并恢復(fù)用來解鎖所述安全庫(24)的密鑰的步驟(120)。
8.根據(jù)上述權(quán)利要求中任一項所述的方法,其中,所述方法進(jìn)一步包括:在啟動所述應(yīng)用程序的步驟(140)之前,用于攔截在所述操作系統(tǒng)(20)與所述待保護(hù)的應(yīng)用程序(34)之間交換的消息,并利用所述安全庫(24)的對應(yīng)函數(shù)對所述消息進(jìn)行處理的步驟(130)。
9.根據(jù)上述權(quán)利要求中任一項所述的方法,其中,所述用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序(36)是專用于所述待保護(hù)的應(yīng)用程序(34)的應(yīng)用程序,并且不同于所述操作系統(tǒng)(20)。
10.根據(jù)上述權(quán)利要求中任一項所述的方法,其中,所述操作系統(tǒng)(20)包括虛擬機(jī)(28),所述虛擬機(jī)(28)適于執(zhí)行所述應(yīng)用程序(34,36)。
11.根據(jù)權(quán)利要求10所述的方法,其中,所述操作系統(tǒng)(20)為安卓系統(tǒng),并且所述虛擬機(jī)(28)為Dalvik虛擬機(jī)。
12.—種計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括軟件指令,當(dāng)所述軟件指令由集成到計算裝置(10)中的信息處理單元(12)實現(xiàn)時,所述軟件指令實現(xiàn)上述權(quán)利要求中任一項所述的方法。
13.一種計算裝置(10),包括: -信息處理單元(12); -存儲器(14),所述存儲器(14)包括操作系統(tǒng)(20)、至少一個待保護(hù)的應(yīng)用程序(34)以及包括至少一個安全函數(shù)(37A,37B,37C)的安全庫(24),所述存儲器(14)與所述信息處理單元(12)相關(guān); 所述操作系統(tǒng)(20)包括函數(shù)庫集(26),所述函數(shù)庫集(26)包括不安全函數(shù)庫(39),所述待保護(hù)的應(yīng)用程序(34)被設(shè)計為調(diào)用所述不安全函數(shù)庫(39)的函數(shù); 其特征在于,所述存儲器( 14)進(jìn)一步包括用于針對所述待保護(hù)的應(yīng)用程序動態(tài)創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序(36),所述用于創(chuàng)建執(zhí)行環(huán)境的應(yīng)用程序(36)包括:用于加載所述安全庫(24)的模塊(40)、用于將與所述待保護(hù)的應(yīng)用程序(34)相關(guān)的函數(shù)調(diào)用中的至少一個對不安全函數(shù)的調(diào)用替換為對所述安全庫(24)中的對應(yīng)函數(shù)(37A,37B,37C)的調(diào)用的模塊(42)以及用于在將對不安全函數(shù)的調(diào)用替換為對所述安全函數(shù)(37A,37B,37C)的調(diào)用之后啟動所述待保護(hù)的應(yīng)用程序(34)的模塊(48)。
【文檔編號】G06F21/00GK103988206SQ201280060047
【公開日】2014年8月13日 申請日期:2012年10月8日 優(yōu)先權(quán)日:2011年10月6日
【發(fā)明者】勞倫特·弗里博奧, 阿德里安·拜厄托 申請人:泰雷茲公司