用于根据包括待保护应用程序和初始配置文件的初始包文件生成保护该应用程序的包文...的制作方法

文档序号:6497572阅读:160来源:国知局
用于根据包括待保护应用程序和初始配置文件的初始包文件生成保护该应用程序的包文 ...的制作方法
【专利摘要】一种用于根据包括待保护应用程序和初始配置文件的初始包文件生成用于保护所述应用程序的包文件的方法,该方法包括由被存储在所述存储器中的用于生成一个包文件或多个包文件的应用程序实现的以下步骤:从初始包文件中提取(70)待保护应用程序(34)和初始配置文件,根据初始配置文件创建(75)第一配置文件,创建(80)用于针对待保护应用程序动态创建执行环境的应用程序,所述用于动态创建执行环境的应用程序适于实现加载安全库,从一个或更多个与所述待保护应用程序相关的函数调用中将至少一个对非安全函数的调用替换为对安全库中对应函数的调用,并且在所述替换之后启动待保护应用程序,以及将第一配置文件和包文件待保护应用程序封装(85)到第一包文件中,用于动态创建执行环境的应用程序被封装在第一包文件中或实际与第二配置文件一起被封装(80)在第二包文件中。
【专利说明】用于根据包括待保护应用程序和初始配置文件的初始包文件生成保护该应用程序的包文件的方法以及相关的计算机程序产品和计算装置
【技术领域】
[0001]本发明涉及一种用于根据包括待保护应用程序和初始配置文件生成至少一个用于保护所述应用程序的包文件的方法,该生成方法由计算装置实现,所述计算装置包括信息处理单元和存储器。
[0002]本发明还涉及一种计算机程序产品,该计算机程序产品包括软件指令,当所述软件指令由集成到计算装置中的信息处理单元实现时,所述软件指令实现这种用于生成包文件的方法。
[0003]本发明还涉及一种计算装置,该计算装置包括信息处理单元和与所述信息处理单元相关的存储器。
【背景技术】
[0004]计算装置,例如一种由安卓平台承载的应用程序管理的移动终端已为人们所知。该安卓平台包括Linux内核、C或C++语言的函数库集以及能够执行由安卓平台承载的应用程序的Dalvik虚拟机。
[0005]必须保护敏感性应用程序的操作,以保护由那些应用程序处理的数据且防止由移动终端丢失或被窃或移动终端与另一计算设备之间通信被拦截而引起的信息恢复的风险。于是一种数据保护方案是修改每个待保护应用程序的源代码或二进制代码,以使这些应用程序调用包括适当安全函数的特定库。
[0006]W02012/109196A1描述了一种用于对每个待保护应用程序的源代码或二进制代码进行修改,并对修改的源代码或二进制代码重新编译,从而使修改后的应用程序调用包括适当安全函数的特定库的方法。
[0007]然而,这种对应用程序的保护需要修改这些应用程序中的每个应用程序的源代码或二进制代码,这是相当受限的,而且当代码的修改是由第三方进行时,这种修改并不总是被该应用程序的提供商允许。

【发明内容】

[0008]本发明的一个目的是提供一种利用包括待保护应用程序和初始配置文件的初始包文件来生成包文件的方法,所述生成方法可以在执行包文件期间保护所述应用程序,同时限制对操作系统的代码、应用程序环境或待保护应用程序的修改。
[0009]为此,本发明涉及一种用于生成上述类型包文件的方法,其中,该生成方法包括由存储在计算装置的存储器中的用于生成包文件的应用程序执行的以下步骤包文件:
[0010]-从所述初始包文件中提取所述待保护应用程序和所述初始配置文件;
[0011]-根据所述初始配置文件中创建第一配置文件;
[0012]-创建用于针对所述待保护应用程序动态创建执行环境的应用程序,所述用于动态创建执行环境的应用程序适于实现:加载安全库,从一个或更多个与所述待保护应用程序相关的函数调用中将至少一个对非安全函数的调用替换为对安全库中对应函数的调用,并且在所述替换之后启动所述待保护的应用程序;以及
[0013]-将所述第一配置文件和包文件所述待保护应用程序封装到第一包文件中,所述用于动态创建执行环境的应用程序被封装在所述第一包文件或第二包文件中,当所述用于动态创建执行环境的应用程序被封装在第二包文件中时,所述第二包文件包括所述用于动态创建执行环境的应用程序和第二配置文件。
[0014]根据本发明的其他有利方面,所述方法包括单独考虑或者根据任一可能的技术组合的以下特征中的一个或更多个特征:
[0015]-在创建所述第一配置文件的步骤期间,通过修改所述初始配置文件来创建所述第一配置文件,以便在执行对应的包文件期间,启动所述用于动态创建执行环境的应用程序来取代所述待保护应用程序;
[0016]-所述第一包文件包括所述第一配置文件和所述待保护应用程序,所述第二包文件包括所述第二配置文件和所述用于创建执行环境的应用程序,所述待保护应用程序和所述用于创建执行环境的应用程序中的每个应用程序包括至少一个组件,每个配置文件包含一个或更多个组件声明,并且,所述方法包括:创建所述第二配置文件,所述第二配置文件包含与所述初始配置文件相同的组件声明;
[0017]-每个配置文件中的至少一个声明的组件是内容提供商,并且在所述第二配置文件中声明的内容提供商的优先级高于所述第一配置文件中声明的内容提供商的优先级,使得所述用于创建执行环境的应用程序的内容提供商在所述待保护应用程序的内容提供商之前被启动;
[0018]-所述第一包文件包括所述第一配置文件和所述待保护应用程序,所述第二包文件包括所述第二配置文件和所述用于创建执行环境的应用程序,所述初始配置文件包括活动声明以及与所声明的活动相关的消息过滤器,并且,在创建第一配置文件的步骤期间,针对在所述初始配置文件中声明的活动的消息过滤器从所述第一配置文件中被删除;
[0019]-所述第一包文件包括所述第一配置文件、所述待保护应用程序以及所述用于创建执行环境的应用程序,并且所述第一包文件被配置为使得所述用于创建执行环境的应用程序在所述待保护应用程序之前被启动;
[0020]-在创建步骤期间所创建的用于动态创建执行环境的应用程序进一步适于根据在所述用于动态创建执行环境的应用程序中预定的过滤规则来过滤所述待保护应用程序与其他未受保护的应用程序之间的交互或所述待保护应用程序与所述操作系统之间的交互;
[0021]-所述方法进一步包括利用至少一个保护密钥对所述包文件或每个包文件进行加S保护;
[0022]-所述第一包文件包括所述第一配置文件和所述待保护的应用程序,并且所述第二包文件包括所述第二配置文件和所述用于动态创建执行环境的应用程序,并且,在加密保护步骤期间,利用相同的保护密钥来进行对所述第一包文件的加密保护和所述第二包文件的加密保护。
[0023]本发明还涉及一种计算机程序产品,所述计算机程序产品包括软件指令,当所述软件指令由集成到计算装置中的信息处理单元实现时,所述软件指令实现上述方法。
[0024]本发明还涉及一种计算装置,包括信息处理单元和存储器,所述存储器与所述信息处理单元相关,其中,所述存储器包括应用程序,所述应用程序用于根据包括待保护应用程序和初始配置文件的初始包文件生成至少一个用于保护所述应用程序的包文件,
[0025]用于生成包文件的应用程序包括:
[0026]用于从所述初始包文件中提取所述待保护应用程序和所述初始配置文件的模块;
[0027]用于根据所述初始配置文件创建第一配置文件的模块;
[0028]用于创建用于针对所述待保护应用程序动态创建执行环境的应用程序的模块,所述用于动态创建执行环境的应用程序适于实现:加载安全库,从一个或更多个与所述待保护应用程序相关的函数调用中将至少一个对非安全函数的调用替换为对安全库中对应函数的调用,并且在所述替换步骤之后启动所述待保护应用程序;以及
[0029]用于将所述第一配置文件和包文件所述待保护应用程序封装到第一包文件中的模块,所述用于动态创建执行环境的应用程序被封装在所述第一包文件中或第二包文件中,当所述用于动态创建执行环境的应用程序被封装在第二包文件中时,所述第二包文件包括所述用于动态创建执行环境的应用程序和第二配置文件。
【专利附图】

【附图说明】
[0030]在阅读以下仅作为示例提供且参照附图进行说明的描述之后,本申请的这些特征和优点将显而易见,其中附图为:
[0031]-图1为根据本发明的计算装置的示意图,所述计算装置能够生成至少一个设计成由计算装置(例如移动终端)执行的包文件,;
[0032]-图2为图1的计算装置的存储器的示意图;
[0033]-图3为根据本发明的一个实施例的用于生成包文件的方法的流程图;
[0034]-图4为用于制备用来执行待保护应用程序的环境的方法的流程图;
[0035]-图5为制备用于待保护应用程序的执行环境和执行所述应用程序的动态说明;以及
[0036]-图6为根据本发明的第二实施例的与图3的视图类似的视图。
【具体实施方式】
[0037]在图1中,诸如移动终端之类的计算装置10包括信息处理单元12、与该信息处理单元相关的第一存储器14、屏幕15。
[0038]在图1的示例性实施例中,计算装置10为移动电话,并进一步包括无线天线16和无线收发器17,该无线收发器17被连接到第一信息处理单元。
[0039]计算装置18包括第二信息处理单元19A和与该第二信息处理单元19A相关的第二存储器19B。
[0040]第一信息处理单元12例如包括数据处理器。
[0041]第一存储器14包括操作系统20和多个包文件21以及包文件22A、22B,包文件21也被称作非敏感包文件,包文件22A、22B也被称作敏感包文件,即第一包文件22A和第二包文件22B。
[0042]此外,第一存储器14包括第二包文件23。
[0043]第一存储器14还包括安全库24,所述安全库例如能够保护数据存储和/或与另一计算装置进行的数据交换。
[0044]无线收发器17包括通过无线天线16发送和接收无线信号的模块。无线收发器17基于通用分组无线业务(GPRS)通信标准或者通用移动通信系统(UMTS)标准。
[0045]无线天线16和无线收发器17能够允许在计算装置10与另一利用同一通信标准包括无线天线和收发器的计算装置之间建立无线链接。
[0046]第二信息处理单元19A例如包括数据处理器。
[0047]第二存储器19B包括根据初始包文件(未示出)生成至少一个敏感包文件22A、22B的应用程序25。
[0048]操作系统20包括内核26、函数库集27、虚拟机28以及应用程序框架30。
[0049]每个非敏感包文件21包括采用二进制文件形式的非敏感应用程序31和相关配置文件32,所述非敏感应用程序31不需要进行保护。
[0050]第一敏感包文件22k包括第一配置文件33和采用二进制文件形式的待保护应用程序34。第二敏感包文件22B包括第二配置文件35和用于针对所述待保护应用程序动态创建执行环境的应用程序36,用于创建执行环境的应用程序36采用二进制文件形式。
[0051]此外,第二包文件23包括用于对用户进行认证并恢复用来解锁所述安全库的密钥的应用程序(未示出)。第二包文件23包括与所述用于对用户进行认证并恢复解锁密钥的应用程序相关的第三配置文件(未示出)。用户的认证例如利用包含在装置10中的芯片卡或位于装置外的近距离通信卡(也称为NFC卡)来完成。所述应用程序还能够对与第三方应用程序相关的许可进行验证,以控制用户对所述第三方应用程序的访问。
[0052]如图2所示,安全库24包括用于保护所述数据存储的函数37A、用于保护与另一计算装置的数据交换的函数37B以及用于消除调试事件的函数37C。
[0053]在图1和图2的示例中,安全库24是与操作系统20中所包括的本地库分离的特定库。
[0054]可替换地,如图2中的点划线所示,安全库24是操作系统的函数库集27中所包括的本地库,所述操作系统由操作系统的提供商交付。
[0055]用于生成包文件的应用程序25包括:用于从所述初始包文件中提取待保护应用程序34和初始配置文件(未示出)的模块40,用于根据所述初始配置文件创建第一配置文件33和第二配置文件35中的每个配置文件的模块42。
[0056]用于生成包文件的应用程序25包括用于创建用来动态创建执行环境的应用程序36的模块44,用于动态创建执行环境的应用程序36适于实现安全库24的加载,从一个或更多个与所述待保护应用程序34相关的函数中将至少一个对非安全函数的调用替换为对安全库24中的对应函数37A、37B、37C的调用,并且在替换之后启动待保护应用程序34。
[0057]用于生成包文件的应用程序25包括封装模块46,所述封装模块46 —方面针对第一包文件22A中的第一配置文件33和待保护应用程序34,并且另一方面针对第二包文件22B中的第二配置文件35和用于动态创建执行环境的应用程序36。
[0058]此外,用于生成包文件的应用程序25包括用于对先前生成的第一和第二包文件进行加密保护的模块47。
[0059]内核26在一方面的硬件部分(具体包括第一信息处理单元12、第一存储器14和无线收发器17)与另一方面的操作系统20的其余部分(尤其是库集27)之间形成抽象层,这本身已为人们所知。所述内核26适于对基本业务进行管理,例如所述操作系统的安全、内存管理或进程管理。
[0060]库集27包括非安全函数48。
[0061]虚拟机28自身已为人们所知,并且能够执行在每个包文件21、22、23中所包含的相应二进制文件。
[0062]承载应用程序的结构30包括可用于应用程序31、34、36的业务49A、49B,例如活动管理业务49A,针对与所述应用程序相关的包文件的管理业务49B。
[0063]每个应用程序31、34、36采用包括二进制代码的二进制文件的形式,所述二进制代码还被称作字节码,并设计成由虚拟机28执行。虚拟机28对应用程序31、34、36的执行是对所述应用程序的字节码的解释。
[0064]如图5所示,每个应用程序31、34、36包括一个或更多个组件4、8、#么、#8,这些组件具有不同的类型,例如活动、业务、内容提供器,或广播接收器。每个组件A、B、#A、#8在所述应用程序的行为中起不同的作用,甚至可以由其他应用程序单独激活。
[0065]在所描述的实施例中,操作系统是谷歌(Google)的安卓(Android? )应用系统。
内核26基于Linux内核,更具体的是基于2.6版的Linux内核。库集27采用C/C++计算机语目编写。虚拟机28为Dalvik虚拟机。应用程序31、34、36米用Java语目编写并呈Dalvik虚拟机28可执行的二进制代码的形式。
[0066]可替换地,本发明适用于任一与Android?.操作系统类型相同的操作系统。特别地,本发明适用于包括内核、设计成运行这些应用程序的虚拟机以及所述内核和所述虚拟机可以访问的函数库集的操作系统。
[0067]每个配置文件32、33、35包括用于命名并表明应用程序版本的信息、应用程序中的每个组件的声明、潜在的元数据以及允许应用程序以预定方式识别从操作系统20或其他应用程序接收到的消息中的某些消息的消息过滤器。
[0068]在Android?情况下,每个配置文件32、33、35还被称作清单文件。基于这些组件是否为活动、业务、内容提供器或广播接收器类型,那么利用以下表达式来引用这些组件声明:〈活动 >,〈业务 >,〈提供商 > 或〈接收器 >。消息过滤器也称为消息声明,还被称为意图过滤器。所述元数据可以提供组件的附加说明。
[0069]非敏感配置文件32本身已为人们所知。
[0070]第一配置文件33包括用于命名并表示待保护的应用程序34的版本的信息,并包含待保护的应用程序34的组件声明。第一配置文件33是根据初始配置文件并通过修改所述初始配置文件而创建的,以便在第一和第二包文件22A、22B执行期间,启动用于创建执行环境的应用程序36来取代待保护的应用程序34。下文中将利用图3的用于生成包文件的方法流程图对根据所述初始配置文件来创建第一配置文件33的方式进行更详细地描述。
[0071]待保护的应用程序34被设计成在其执行期间调用非安全函数库48中的至少一个函数。
[0072]第二配置文件35包括用于命名并表示用于创建执行环境的应用程序36的版本的信息,并包含用于创建执行环境的应用程序36的组件声明。以下将利用图3的用于生成包文件的方法的流程图对创建第二配置文件35的方式进行更详细地描述。
[0073]用于动态创建环境的应用程序36包括用于加载所述安全库的模块50以及用于从与所述待保护应用程序34相关的函数调用中将至少一个对非安全函数的调用替换为对安全库24中对应函数的调用的模块52。
[0074]此外,用于创建执行环境的应用程序36包括用于对计算装置的用户进行认证并恢复用于安全库的解锁密钥的模块54以及用于对待保护应用程序34发送或接收到的消息进行拦截并过滤的模块56。
[0075]此外,用于创建执行环境的应用程序36包括用于在将对非安全函数的调用替换为对安全函数的调用之后启动待保护的应用程序的模块58。
[0076]用于创建执行环境的应用程序36是专用于待保护应用程序34的应用程序,并且不同于操作系统20。
[0077]用于保护数据存储的函数37A能够例如通过对所存储的数据进行加密保护来对存储在第一存储器14的存储区中的敏感数据进行保护。所述保护是阻止未授权人员访问所述数据的隐密性保护,并且也是阻止对所述数据内容进行任何篡改的完整性保护。
[0078]用于保护数据交换的函数37B能够保护在待保护的应用程序34与另一计算装置(未示出)之间的数据交换。
[0079]用于删除调试事件的函数37C能够在调试事件被记录在存储器14之前,将这些调试事件删除,所述调试事件在执行待保护的应用程序34所包含的代码中的标签期间产生。这些调试事件用于在完成应用程序的代码之前确定所述应用程序的代码,所述调试事件有时被保留在应用程序代码中,那么会造成安全危害。
[0080]非安全函数库48本身已为人们所知。在Andmid?操作系统的情况下,非安全函数库48是采用C/C++计算机语言编写的函数库。
[0081]在图1的示例性实施例中,认证和恢复模块54是用于调用针对用户的认证应用程序并恢复在第二包文件23中所封装的解锁密钥的模块。换句话说,认证和恢复模块54仅包括一个针对所述用于对用户进行认证并恢复密钥的应用程序的进入点。
[0082]可替换地,第一存储器14不包括第二包文件,并且每个用于创建执行环境的应用程序的认证和恢复模块54包括用户认证和解锁密钥恢复应用程序的功能,并且能够对计算装置10的用户进行认证,随后在成功认证的情况下,从安全库24中恢复解锁密钥。
[0083]现将利用图3中的流程图来描述根据本发明的用于生成包文件的方法。
[0084]在初始步骤70期间,从初始包文件中提取所述待保护的应用程序34和初始配置文件。
[0085]接下来在步骤75中,将提取到的初始配置文件用来一方面创建第一配置文件33,并且另一方面创建第二配置文件35。
[0086]通过对所述初始配置文件进行修改来创建第一配置文件33,以便在执行包文件22A、22B期间,启动用于创建执行环境的应用程序36来取代待保护的应用程序34。
[0087]针对所述初始配置文件中所声明的活动的消息过滤器,也称为意图过滤器,例如在第一配置文件33中被删除。
[0088]此外,在第一配置文件33中所声明的进程的名称是预定名称,并且所述进程名称将与第二配置文件35中的相同,以保证所述待保护的应用程序34和用于创建执行环境的应用程序36将在相同的进程中执行。
[0089]在步骤75期间,还根据所述初始配置文件创建第二配置文件35。第二配置文件35例如包含与所述初始配置文件中所包含的组件声明相同的组件声明。第二配置文件35中所声明的组件例如重述与所述初始配置文件中针对对应组件所指定的消息过滤器相同的消息过滤器。
[0090]此外,第一配置文件33和第二配置文件35中所声明的至少一个组件是内容提供商,并且在第二配置文件35中声明的内容提供商的优先级高于第一配置文件33中所声明的内容提供商的优先级。第二配置文件35中内容提供商的声明的优先级高于第一配置文件33中对应的优先级使得可以在待保护的应用程序34的内容提供商之前启动用于创建执行环境的应用程序36的内容提供商。
[0091]另外,如以上针对第一配置文件33所述,第二配置文件35中所声明的进程名称是预定名称,并且与第一配置文件33中所声明的进程名称相同,以保证待保护的应用程序34和用于创建执行环境的应用程序33将在相同进程中执行。
[0092]在创建第一和第二配置文件33、35结束时,在下一个步骤80期间创建用于动态创建执行环境的应用程序36的二进制文件。所创建的二进制文件使得用于动态创建执行环境的应用程序36适于实现安全库24的加载,从一个或更多个与待保护应用程序34相关的函数调用中将至少一个对非安全函数的调用替换为安全库24中对应函数的调用,并且在所述替换之后启动待保护的应用程序34。
[0093]另外,用于动态创建执行环境的应用程序36适于锁定先前加载的安全库24和进行的调用函数替换。
[0094]另外,用于创建执行环境的应用程序36适于请求认证计算装置10的用户,随后在成功认证的情况下,恢复解锁安全库24的密钥。
[0095]此外,用于创建执行环境的应用程序36适于对操作系统与待保护的应用程序34之间交换的消息进行拦截并处理,所述消息由安全库24处理。这些拦截的消息尤其涉及待保护应用程序34的等待和唤醒、第一存储器14中的数据存储以及与另一计算装置的数据交换。
[0096]在该步骤80期间,将所创建的用于动态创建执行环境的应用程序36的二进制文件接下来与步骤75期间先前所创建的第二配置文件35 —起封装在第二包文件22B中。
[0097]在步骤85期间,将第一配置文件33和待保护应用程序34的二进制文件封装在第一包文件22A中。本领域的技术人员将认识到,在利用生成方法生成包文件22A、22B期间,不修改待保护应用程序34的二进制文件。
[0098]另外,用于生成包文件的应用程序25还在第二包文件22B中添加安全库24。
[0099]另外,在可选的步骤90期间,利用一个或更多个加密密钥以及加密保护模块47对生成的每个包文件22A、22B进行加密保护。所使用的加密密钥优选不同于已被用于保护初始包文件的加密密钥。
[0100]第一包文件22A的加密保护和第二包文件22B的加密保护例如使用相同的加密密钥进行,这样可以确保任一其他试图将自身作为待保护应用程序34的应用程序无法安装在操作系统20上。该其他应用程序未用相同密钥进行加密保护,不能与用于创建执行环境的应用程序36在相同的进程中被执行。
[0101]将利用图4和图5在下文中对计算装置10的操作进行描述。
[0102]利用如上所述的用于生成包文件的应用程序25来创建每个包文件22A、22B,然后将其储存在第一存储器14中。
[0103]图4示出了用于由创建执行环境的应用程序36实现的动态创建用来运行待保护应用程序34的环境的方法。
[0104]在初始步骤100期间,加载安全库24以便在后续启动待保护的应用程序34期间,包含在所述安全库中的安全函数37A、37B、37C可供虚拟机28使用。
[0105]在步骤110期间,用于创建执行环境的应用程序36接下来在与待保护的应用程序34相关的函数的调用中将至少一个对非安全函数的调用替换为对先前加载的安全库24中的对应应用程序37A、37B、37C的调用。
[0106]替换步骤110例如包括删除在待保护的应用程序34与非安全函数之间的动态链接,以及创建在待保护的应用程序34与安全库24的对应函数37A、37B、37C之间的动态替换链接。
[0107]在所描述的实施例中,在与所述待保护的应用程序34相关的函数调用中,所有对数据存储函数的调用被替换为对数据存储的安全函数37A的调用。
[0108]在与所述待保护的应用程序34相关的函数调用中,所有对与另一计算装置的数据交换函数的调用被替换为对数据交换安全函数37B的调用。
[0109]在与所述待保护的应用程序34相关的函数调用中,所有对增加调试事件的函数的调用被替换为对删除调试事件的函数37C的调用。
[0110]此外,接下来在步骤115期间,用于创建执行环境的应用程序36锁定在步骤100期间加载的安全库24以及在先前步骤110期间进行的函数调用替换。
[0111]当通过动态链接将替换函数引入待保护的应用程序本身或引入虚拟机28中来执行替换步骤110时,所述替换函数来自用于创建执行环境的应用程序36,所述锁定步骤例如是将替换函数的引用替换为对新替换函数的引用。
[0112]与步骤110和115中的代码以及新替换函数和安全函数对应的代码被置于安全库24中。这个新替换函数对替换请求进行过滤,拒绝替换在步骤110中所处理的函数调用,并且允许其他函数调用的替换。
[0113]此外,在步骤120期间,用于创建执行环境的应用程序36接下来请求对计算装置10的用户进行认证,并且在成功认证的情况下,恢复用于解锁安全库24的密钥。
[0114]此外,在步骤130期间,用于创建执行环境的应用程序36拦截并处理操作系统与待保护的应用程序之间所交换的这些消息,所述消息由安全库24处理。拦截的消息尤其涉及将待保护应用程序34设为等待或将其唤醒,第一存储器14中的数据存储,以及与另一计算装置的数据交换。
[0115]最后在步骤140期间,用于创建执行环境的应用程序36启动待保护的应用程序34。
[0116]在启动待保护的应用程序34之后并通过先前完成的调用函数替换,由待保护的应用程序34所生成的或用于待保护的应用程序的(这些)相应调用可选地通过操作系统20被首先发送到安全库24,并且如果安全库24授权该所述调用,并且在需要的情况下,将所述调用发送到非安全库48。
[0117]用于运行待保护的应用程序34的环境是动态创建的,这是因为所述创建在每次执行所述应用程序时并紧接由操作系统20接收到用来运行所述应用程序的指令之后执行。
[0118]图5是对动态创建用于执行待保护应用程序34的环境以及执行所述应用程序的说明。
[0119]在操作系统20接收到用来执行第二包文件22B的指令之后,该操作系统开始根据第一和第二配置文件33、35中所包含的信息,利用活动管理业务49A(箭头Fl)来启动用于创建执行环境的应用程序36的组件#A,以便启动用于创建执行环境的应用程序36来代替待保护的应用程序34。
[0120]根据用于创建执行环境的方法的初始步骤100,用于创建执行环境的应用程序36下载安全库24(箭头F2)。所述安全库中所包含的安全函数37A、37B、37C因而可用于虚拟机28的后续操作。根据前述的步骤110,待保护的应用程序34与某些非安全函数之间的动态链接被删除,并且在待保护的应用程序34与安全库24的相应函数37A、37B、37C之间创建相应的动态替换链接(箭头F3)。
[0121]组件#A接下来向操作系统中请求启动待保护的应用程序34的相应组件A(箭头F4)。该请求被安全库24拦截,以便请求对用户进行认证,随后,在成功认证的情况下,恢复解锁安全库24的密钥。在用户成功认证的情况下,该请求被发送到操作系统的活动管理业务49A (箭头F5)。
[0122]根据前述的步骤140,操作系统20随后利用活动管理系统49A来启动待保护应用程序34的组件A (箭头F6)。根据第一配置文件33所包含的信息,该启动与用于创建执行环境的应用程序36在相同的进程中进行。
[0123]在执行待保护的应用程序34期间,应用程序A向操作系统20请求启动组件B,并且虚拟机28随后通过上述替换动态链接的步骤将所述请求引导至安全库24 (箭头F7)。所述请求随后由安全库24进行修改,以便操作系统20启动组件#B而不是待保护应用程序34的组件B,然后经修改的请求被发送到活动管理业务49A (箭头F8)。操作系统20随后启动组件#B (箭头F9)。
[0124]组件#B随后向操作系统请求启动待保护应用程序34的相应组件B(箭头F10)。该请求被安全库24拦截,以便执行相应的安全处理,随后经安全处理的请求被发送到操作系统的活动管理业务49A (箭头Fll)。
[0125]操作系统20随后利用活动管理业务49A来启动待保护应用程序34的组件B (箭头F12)。该组件B接下来想要存储数据文件,为此调用存储函数(箭头F13)。通过上述动态链接替换步骤,那么安全库中的用于数据存储的安全函数37A被自动调用,并且该数据文件在被存储于第一存储器14之前,由所述安全函数37A进行加密(箭头F14)。
[0126]本领域的技术人员将理解的是,如果该组件想要与另一计算装置交换数据,并为此调用数据交换函数,那么类似地,经过上述替换动态链接的步骤,该数据交换安全函数37B已被自动调用。[0127]本领域的技术人员将理解的是,如果该组件想要增加调试事件,并为此调用用于增加调试事件的函数,那么类似地,经过上述替换动态链接的步骤,所述用于删除消除调试事件的函数37C已被自动调用。
[0128]在图5的示例性实施例中,所描述的不同请求在管理员模式下进行,并随后经过内核26。本领域的技术人员将理解的是,可替换地,某些请求可以在用户模式下进行而无需经过内核26。
[0129]通过实施利用用于创建执行环境的应用程序36来实现用于动态创建用来执行待保护应用程序34的环境的方法,计算装置10因而可以保护应用程序34的操作,特别是关于这些组件的启动,数据的存储或与另一计算装置的数据交换,通过安全库24的适当函数对后者进行自动加密。
[0130]对应用程序34的保护仅需要重写该应用程序的配置文件(在Android?情况下,称为清单文件),增加用于创建执行环境的应用程序36,后者被封装在第二包文件22B中,或者替换地与应用程序34 —起被封装在第一包文件22A中(这将在下面第二实施例中进行描述),并且在库集27未包括安全库24时,添加这样的安全库24。
[0131]本领域的技术人员将注意到,该保护不需要对待保护应用程序34的源代码或二进制代码进行任何修改,或对操作系统20进行任何修改。
[0132]图6示出了本发明的第二实施例,与上述第一实施例中的元件相同的元件由相同的标记表示,并不再进行描述。
[0133]根据第二实施例,至少一个所谓的敏感包文件采用单个包文件的形式,即第一包文件22A。那么第一包文件22A包括第一配置文件33,待保护的应用程序34以及用于动态创建执行环境的应用程序36。与第一实施例类似,待保护的应用程序34和用于创建执行环境的应用程序36例如采用二进制文件的形式。
[0134]现将利用图6中流程图对根据第二实施例的用于仅生成包文件22A的方法进行描述。
[0135]在初始步骤170期间,利用提取模块40从初始包文件中提取待保护的应用程序34和初始配置文件。
[0136]接下来在下一个步骤175中,利用由此提取的初始配置文件来创建第一配置文件33。
[0137]通过对所述初始配置文件进行修改来创建第一配置文件33,以便在执行包文件22A期间,启动用于创建执行环境的应用程序36来取代待保护的应用程序34。
[0138]第一配置文件33例如包含与所述初始配置文件中所包含的组件声明相同的组件声明。第一配置文件33中所声明的组件例如重述与所述初始配置文件中针对对应组件所指定的消息过滤器相同的消息过滤器。
[0139]针对所述初始配置文件中所声明活动的消息过滤器,也称为意图过滤器,例如在第一配置文件33中被重新命名,以便阻止其他应用程序能够修改那些消息过滤器。
[0140]此外,第一配置文件33中所声明的组件不是可输出的。
[0141]另外,第一配置文件33中所声明的进程名称是预定名称,以控制计算装置10如何识别该进程。
[0142]在创建第一配置文件33结束时,在下一个步骤180期间创建用于动态创建执行环境的应用程序36的二进制文件。所创建的二进制文件使得用于动态创建执行环境的应用程序36适于实现安全库24的加载,从一个或更多个与待保护应用程序34相关的函数调用中将至少一个非安全函数的调用替换为安全库24中对应的函数调用,并且在所述替换之后启动待保护的应用程序34。
[0143]另外,用于动态创建执行环境的应用程序36适于锁定先前加载的安全库24和进行的调用函数替换。
[0144]另外,用于创建执行环境的应用程序36适于请求认证计算装置10的用户,随后在成功认证的情况下,恢复解锁安全库24的密钥。
[0145]此外,用于创建执行环境的应用程序36适于对在操作系统与待保护的应用程序34之间交换的消息进行拦截并处理,所述消息由安全库24处理。这些拦截的消息尤其涉及待保护应用程序34的等待与激活、第一存储器14中的数据存储以及与另一计算装置的数据交换。
[0146]在下一个步骤185期间,将由此创建的用于动态创建执行环境的应用程序36的二进制文件接下来与先前在步骤175期间创建的第一配置文件33,以及第一包文件22k中的待保护应用程序34的二进制文件封装在一起。本领域的技术人员将认识到,在利用生成方法生成包文件22A期间,待保护应用程序34的二进制文件未被修改。
[0147]在封装步骤185期间,将用于动态创建执行环境的应用程序36的二进制文件存储在由程序包中的二进制文件设置的默认位置。待保护应用程序34的二进制文件被存储在第二位置中,这使得在执行包文件22A期间,可以启动用于创建执行环境的应用程序36来取代待保护的应用程序34。
[0148]另外,用于生成包文件的应用程序25还将在安全库24添加到包文件22A中。
[0149]另外,在可选的步骤190期间,利用加密密钥以及加密模块47对生成的包文件22A进行加密保护。
[0150]根据该第二实施例的计算装置10的操作与参照图4和图5的第一实施例所描述的操作相同。
[0151]第二实施例的这些优点与以上所述的第一实施例的优点类似,且不再进行描述。根据第二实施例的生成方法进一步具有生成单个包文件22A以保护所述待保护应用程序34的优点。那么这可以简化操作系统20处的安装过程,并且更一般地简化用于待保护应用程序34的保护方案的部署。
[0152]人们可以发现,根据本发明的生成方法可以在执行包文件期间保护应用程序34,同时限制对操作系统的代码、应用程序的环境以及待保护应用程序34的修改。
[0153]尽管已经围绕包括能够执行该应用程序的虚拟机的操作系统对用于生成包文件的方法和用于动态创建待保护应用程序的执行环境的方法,以及计算设备和计算装置进行描述,但是本领域的技术人员将理解的是,本发明还适用于不包括虚拟机的操作系统,在这种情况下,应用程序由信息处理单元的处理器直接执行。
[0154]根据另一方面,本发明涉及一种针对待保护应用程序34动态创建执行环境以保护所述应用程序34的方法,所述方法由计算装置10实现,计算装置10包括:信息处理单元12和存储器14,存储器14与信息处理单元12相关并包括操作系统20、待保护的应用程序34以及包括至少一个安全函数37A、37B、37C的安全库24,操作系统20包括函数库集27,函数库集27包括非安全函数库48,待保护的应用程序34在其执行期间被设计为调用非安全函数库48的函数。
[0155]用于动态创建执行环境的方法包括以下步骤,所述步骤由存储在存储器14中的用于动态创建执行环境的应用程序36实现:
[0156]-加载100安全库24;
[0157]-将在与所述待保护应用程序34相关的函数调用中至少一个对非安全函数的调用替换110为对安全库24中的对应函数37A、37B、37C的调用;
[0158]_在替换步骤110之后启动140待保护的应用程序34。
[0159]另外且可选地,替换步骤110包括删除所述待保护应用程序34与所述非安全函数之间的动态链接,并在所述待保护应用程序34与安全库24中的对应函数37A、37B、37C之间创建动态替换链接。
[0160]另外且可选地,在与所述待保护应用程序34相关的函数调用中,所有对数据存储函数的调用被替换为对用于保护数据存储的函数37A的调用。
[0161]另外且可选地,在与所述待保护的应用程序34相关的函数调用中,所有对与另一计算装置的数据交换函数的调用被替换为对保护与另一计算装置的数据交换的函数37B的调用。
[0162]另外且可选地,在与所述待保护的应用程序34相关的函数调用中,所有对调试事件附加函数的调用被替换为对用于删除调试事件的函数37C的调用。
[0163]另外且可选地,用于动态创建执行环境的方法进一步包括:对于启动应用程序的步骤140,用于对在加载步骤100期间加载的安全库24以及在替换步骤110期间完成的函数调用替换进行锁定的步骤115。
[0164]另外且可选地,用于动态创建执行环境的方法进一步包括:对于启动应用程序的步骤140,用于对计算装置10的用户进行认证并对解锁安全库24的密钥进行恢复的步骤120。
[0165]另外且可选地,用于动态创建执行环境的方法进一步包括:对于启动应用程序的步骤140,用于对操作系统20与待保护应用程序34之间交换的消息进行拦截,并利用安全库24的相应函数对所述消息进行处理的步骤130。
[0166]用于创建执行环境的应用程序36优选地为专用于待保护应用程序34的应用程序,并且不同于操作系统20。
[0167]根据另一方面,本发明还涉及一种计算机程序产品,所述计算机程序产品包括软件指令,当所述软件指令由集成到计算装置10的信息处理单元12实施时,实现上述用于动态创建执行环境的方法。
[0168]根据另一方面,本发明还涉及一种计算装置10,计算装置10包括信息处理单元12和存储器14,存储器14包括操作系统20、至少一个待保护的应用程序34以及包括至少一个安全函数37A、37B、37C的安全库24,存储器14与信息处理单元12相关。
[0169]包括函数库集27的操作系统20包括非安全函数库48,待保护的应用程序34被设计成调用非安全函数库48的函数。
[0170]存储器14进一步包括针对待保护应用程序34动态创建执行环境的应用程序36,用于动态创建执行环境的应用程序36包括:用于加载安全库24的模块50,用于将在与待保护应用程序34相关的函数调用中的至少一个对非安全函数的调用替换为对安全库24中的对应函数37A、37B、37C的调用的模块52,以及用于在将对非安全函数的调用替换为对安全函数37A、37B、37C的调用之后启动待保护的应用程序34的模块58。
【权利要求】
1.一种用于根据包括待保护应用程序(34)和初始配置文件的初始包文件生成至少一个用于保护所述应用程序(34)的包文件(22A,22B)的方法,该生成方法由计算装置(18)实现,所述计算装置(18)包括信息处理单元(19A)和存储器(19B), 该生成方法的特征在于,所述生成方法包括由被存储在计算装置(18)的存储器(19B)中的用于生成包文件(22A,22B)的应用程序(25)执行的以下步骤: -从所述初始包文件中提取(70 ;170)所述待保护应用程序(34)和所述初始配置文件; -根据所述初始配置文件创建(75 ;175)第一配置文件(33); -创建(80 ;180)用于针对所述待保护应用程序(34)动态创建执行环境的应用程序(36),所述用于动态创建执行环境的应用程序(36)适于实现:加载(100)安全库(24),从一个或更多个与所述待保护应用程序(34)相关的函数调用中将至少一个对非安全函数的调用替换(110 )为对安全库(24)中对应函数(37A,37B,37C)的调用,并且在所述替换(110)之后启动(140)所述待保护的应用程序(34);以及 -将所述第一配置文件(33)和包文件所述待保护应用程序(34)封装(85 ;185)到第一包文件(22A)中,所述用于动态创建执行环境的应用程序(36)被封装(185)在所述第一包文件(22A)或被封装(80)在第二包文件(22B)中,当所述用于动态创建执行环境的应用程序(36)被封装(80)在第二包文件(22B)中时,所述第二包文件(22B)包括所述用于动态创建执行环境的应用程序(36)和第二配置文件(35)。
2.根据权利要求1所述的方法,其中,在创建(75;175)第一配置文件的步骤期间,通过修改所述初始配置文件来创建所述第一配置文件(33),以便在执行对应的包文件(22A,22B)期间,启动所述用于动态创建执行环境的应用程序(36)来取代所述待保护应用程序(34)。
3.根据权利要求1或2所述的方法,其中,所述第一包文件(22A)包括所述第一配置文件(33)和所述待保护应用程序(34),并且所述第二包文件(22B)包括所述第二配置文件(35)和所述用于创建执行环境的应用程序(36), 其中,所述待保护应用程序(34)和所述用于创建执行环境的应用程序(36)中的每个应用程序包括至少一个组件,每个配置文件(33,35)包含一个或更多个组件声明,并且其中,所述方法包括:创建(75)所述第二配置文件(35),所述第二配置文件(35)包含与所述初始配置文件相同的组件声明。
4.根据权利要求3所述的方法,其中,每个配置文件(33,35)中的至少一个声明的组件是内容提供商,并且在所述第二配置文件(35)中声明的内容提供商的优先级高于在所述第一配置文件(33)中声明的内容提供商的优先级,使得所述用于创建执行环境的应用程序(36)的内容提供商在所述待保护应用程序(34)的内容提供商之前被启动。
5.根据上述权利要求中任一项所述的方法,其中,所述第一包文件(22A)包括所述第一配置文件(33)和所述待保护应用程序(34),所述第二包文件(22B)包括所述第二配置文件(35)和所述用于创建执行环境的应用程序(36); 其中,所述初始配置文件包括活动声明以及与所声明的活动相关的消息过滤器,并且其中,在创建(75)第一配置文件的步骤期间,针对在所述初始配置文件中声明的活动的消息过滤器从所述第一配置文件(33)中被删除。
6.根据权利要求1或2所述的方法,其中,所述第一包文件(22A)包括所述第一配置文件(33)、所述待保护应用程序(34)以及所述用于创建执行环境的应用程序(36),并且所述第一包文件(22A)被配置为使得所述用于创建执行环境的应用程序(36)在所述待保护应用程序(34)之前被启动。
7.根据上述权利要求中任一项所述的方法,其中,在创建步骤(80;180)期间所创建的用于动态创建执行环境的应用程序(36)进一步适于根据在所述用于动态创建执行环境的应用程序(36)中预定的过滤规则来过滤所述待保护应用程序(34)与其他未受保护的应用程序之间的交互或所述待保护应用程序(34)与所述操作系统(20)之间的交互。
8.根据上述权利要求中任一项所述的方法,其中,所述方法进一步包括:利用至少一个保护密钥对所述包文件(22A,22B)或每个包文件(22A,22B)进行加密保护(90 ;190)。
9.根据权利要求8所述的方法,其中,所述第一包文件(22A)包括所述第一配置文件(33)和所述待保护应用程序(34),并且所述第二包文件(22B)包括所述第二配置文件(35)和所述用于创建执行环境的应用程序(36),并且 其中,在加密保护步骤(90)期间,利用相同的保护密钥来进行对所述第一包文件(22A)的加密保护和对所述第二包文件(22B)的加密保护。
10.一种计算机程序产品,所述计算机程序产品包括软件指令,当所述软件指令由集成到计算装置(18)中的信息处理单元(19A)实现时,实现根据上述权利要求中任一项所述的生成方法。
11.一种计算装置(18),包括信息处理单元(19A)和存储器(19B),所述存储器(19B)与所述信息处理单元(19A)相关, 其特征在于,所述存储器(19B)包括应用程序(25),所述应用程序(25)用于从根据包括待保护应用程序(34)和初始配置文件的初始包文件生成至少一个用于保护所述应用程序(34)的包文件(22A,22B), 用于生成包文件的应用程序(25)包括: 用于从所述初始包文件中提取所述待保护应用程序(34)和所述初始配置文件的模块(40); 用于根据所述初始配置文件创建第一配置文件(33)的模块(42); 用于创建用于针对所述待保护应用程序(34)动态创建执行环境的应用程序(36)的模块(44),所述用于动态创建执行环境的应用程序(36)适于实现:加载(100)安全库(24),从一个或更多个与所述待保护应用程序(34)相关的函数调用中将至少一个对非安全函数的调用替换(110)为对安全库(24)中对应函数(37A,37B,37C)的调用,并且在所述替换步骤(110)之后启动(140)所述待保护应用程序(34);以及 用于将所述第一配置文件(33)和包文件所述待保护应用程序(34)封装到第一包文件(22A)中的模块(46),所述用于动态创建执行环境的应用程序(36)被封装(185)在所述第一包文件(22A)中或被封装(80)在第二包文件(22B)中,当所述用于动态创建执行环境的应用程序(36)被封装(80)在第二包文件(22B)中时,所述第二包文件(22B)包括所述用于动态创建执行环境的应用程序(36)和第二配置文件(35)。
【文档编号】G06F21/57GK103975338SQ201280060233
【公开日】2014年8月6日 申请日期:2012年10月8日 优先权日:2011年10月6日
【发明者】本·优素福·艾可-舍吉, 阿德里安·拜厄托 申请人:泰雷兹公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1