CN103988206A - 用于动态创建应用程序执行环境以保护所述应用程序的方法以及相关的计算机程序产品和计算装置 - Google Patents

用于动态创建应用程序执行环境以保护所述应用程序的方法以及相关的计算机程序产品和计算装置 Download PDF

Info

Publication number
CN103988206A
CN103988206A CN201280060047.6A CN201280060047A CN103988206A CN 103988206 A CN103988206 A CN 103988206A CN 201280060047 A CN201280060047 A CN 201280060047A CN 103988206 A CN103988206 A CN 103988206A
Authority
CN
China
Prior art keywords
application program
function
protected
calling
operating system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201280060047.6A
Other languages
English (en)
Inventor
劳伦特·弗里博奥
阿德里安·拜厄托
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thales SA
Original Assignee
Thales SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Thales SA filed Critical Thales SA
Publication of CN103988206A publication Critical patent/CN103988206A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs

Abstract

本发明涉及一种用于动态创建用来对操作系统(20)中待保护的应用程序(34)进行保护的执行环境的方法,所述操作系统(20)包括包含一个或更多个不安全函数(39)的库集(26),所述待保护的应用程序(34)在执行期间原本打算调用属于包含一个或更多个不安全函数(39)的库的函数。该方法由计算装置(10)执行,所述计算装置(10)包括安全库(24),所述安全库(24)包括至少一个保护函数,并且该方法保护以下步骤:加载所述安全库(24);将与所述待保护的应用程序(34)相关的函数调用中的至少一个对不安全函数的调用替换为对来自所述安全库(24)中对应函数的调用;以及在替换步骤之后启动所述待保护的应用程序(34)。

Description

用于动态创建应用程序执行环境以保护所述应用程序的方法以及相关的计算机程序产品和计算装置
发明内容
本申请涉及一种用于动态创建用来执行待保护的应用程序的环境以保护所述应用程序的方法,所述方法由计算装置实现,所述计算装置包括信息处理单元和存储器,所述存储器与所述信息处理单元相关并且包括操作系统、所述待保护的应用程序以及至少包括一个安全函数的安全库,所述操作系统包括函数库集,所述函数库集包括不安全函数库,所述待保护的应用程序在执行期间用来调用所述不安全函数库的函数。
本发明还涉及一种计算机程序产品,所述计算机程序产品包括软件指令,当所述软件指令由集成到计算装置中的信息处理单元实施时,所述软件指令实现这种方法。
本发明还涉及一种计算装置,包括:
-信息处理单元;
-存储器,所述存储器包括操作系统、至少一个待保护的应用程序,以及包括至少一个安全函数的安全库,所述存储器与所述信息处理单元相关;
所述操作系统包括函数库集,所述函数库集包括不安全函数库,所述待保护的应用程序被设计为调用来自所述不安全函数库的函数。
计算装置是已知的,例如上述类型的移动终端。该移动终端由安卓平台承载的应用程序进行管理。该安卓平台包括Linux内核,C或C++语言的函数库集,以及能够执行由安卓平台承载的应用程序的Dalvik虚拟机。
必须保护敏感性应用程序的操作,以保护由那些应用程序处理的数据且防止由移动终端丢失或被窃或移动终端与另一计算设备之间通信的拦截而引起的信息恢复的风险。于是一种数据保护方案包括修改每个待保护的应用程序的源代码或二进制代码,以使其调用包括适当安全函数的特定库。
然而,这种对应用程序的保护需要修改每个应用程序的源代码或二进制代码,这是相当受限的,而且当代码的修改是由第三方进行时,这样并不总是受到该应用程序提供商的允许。
因此,本发明的一个目的是提供一种用于针对待保护的应用程序动态创建执行环境的方法以及相关的计算装置,其能够保护应用程序,同时限制对操作系统代码、应用程序的环境或待保护的应用程序的修改。
为此,本发明涉及一种动态创建上述类型的执行环境的方法,其特征在于,该方法包括以下步骤,所述步骤由存储在存储器中用于动态创建执行环境的应用程序实现:
-加载所述安全库;
-将与所述待保护的应用程序相关的函数调用中的至少一个对不安全函数的调用替换为对所述安全库中的对应函数的调用;
-在替换步骤之后启动所述待保护的应用程序。
根据本发明的其他有利方面,该方法包括一个或更多个以下特征,这些特征可以单独考虑或进行任一技术可能的结合:
-所述替换步骤包括消除所述待保护的应用程序与所述不安全函数之间的动态链接,并在所述待保护的应用程序与所述安全库中的对应函数之间创建动态替换链接。
-在与所述待保护的应用程序相关的函数调用中,所有对数据存储函数的调用被替换为对所述数据存储的安全函数的调用。
-在与所述待保护的应用程序相关的函数调用中,所有对与另一计算装置交换数据的函数的调用被替换为对保护与所述另一计算装置数据交换的函数的调用。
-在与所述待保护的应用程序相关的函数调用中,所有对增加调试事件的函数的调用被替换为对删除调试事件的函数的调用。
-所述方法进一步包括:在启动所述应用程序的步骤之前,锁定在所述加载步骤期间加载的所述安全库以及在所述替换步骤期间进行的函数调用替换的步骤。
-所述方法进一步包括:在启动所述应用程序的步骤之前,对所述计算装置的用户进行认证并恢复用来解锁所述安全库的密钥的步骤。
-所述方法进一步包括:在启动所述应用程序的步骤之前,拦截在所述操作系统与所述待保护的应用程序之间交换的消息,并利用所述安全库的对应函数对所述消息进行处理的步骤。
-所述用于创建执行环境的应用程序是专用于所述待保护应用程序的应用程序,并且不同于所述操作系统。
-所述操作系统包括虚拟机,所述虚拟机用于执行所述应用程序。
-所述操作系统为安卓系统,并且所述虚拟机为Dalvik虚拟机。
本发明还涉及一种计算机程序产品,所述计算机程序产品包括软件指令,当所述软件指令由集成到计算装置中的信息处理单元实施时,所述软件指令实现上述方法。
本发明还涉及一种上述类型的计算装置,其特征在于,所述存储器进一步包括用于动态创建待保护的应用程序的执行环境的应用程序,所述用于创建执行环境的应用包括:用于加载所述安全库的组件,用于将与所述待保护的应用程序相关的函数调用中的至少一个对不安全函数的调用替换为对所述安全库中的对应函数的调用的组件,以及用于在将对不安全函数的调用替换为对所述安全函数的调用之后,启动所述待保护的应用程序的组件。
附图说明
在阅读以下仅作为示例提供且参照附图进行说明的说明书之后,本申请的这些特征和优点将显而易见,其中附图为:
-图1为根据本发明的计算装置的示意图;
-图2为图1的所述计算装置的存储器的示意图;
-图3为根据本发明的针对待保护的应用程序动态创建执行环境的方法的流程图;以及
-图4为针对所述待保护的应用程序动态创建执行环境和执行所述应用程序的图示。
具体实施方式
在图1中,诸如移动终端之类的计算装置10包括信息处理单元12、与所述信息处理单元相关的存储器14,以及屏幕15。
在图1的示例性实施例中,计算装置10为移动电话,并且进一步包括无线天线16和无线收发器18,所述无线收发器被连接到所述信息处理单元。
信息处理单元12例如包括数据处理器。
存储器14包括操作系统20以及多个第一包文件21和第二包文件22。
此外,存储器14包括第三包文件23。
存储器14还包括安全库24,所述安全库例如能够保护数据存储和/或与另一计算装置的数据交换。
无线收发器18包括通过无线天线16发送和接收无线信号的模块。无线收发器18根据通用分组无线业务(GPRS)通信标准或者通用移动通信系统(UMTS)标准。
无线天线16和无线收发器18能够允许在计算装置10与另一根据同一通信标准包括无线天线和收发器的计算装置之间建立无线链接。
操作系统20包括内核25、函数库集26、虚拟机28以及应用程序框架30。
每个第一包文件21包括第一配置文件33和采用第一二进制文件形式的非敏感性应用程序31,所述非敏感性应用程序31不需要被保护。
每个第二包文件22包括采用第二二进制文件形式的待保护应用程序34、第二配置文件35以及用于为所述待保护应用程序动态创建执行环境的应用程序36,所述用于创建执行环境的应用程序36采用第三二进制文件的形式。
此外,第三包文件23包括用于对用户进行认证并恢复用来解锁所述安全库的密钥的应用程序(未示出)。第三包文件23包括与所述用于对用户进行认证并恢复解锁密钥的应用程序相关的第三配置文件(未示出)。用户的认证例如利用包含在装置10中的芯片卡或位于装置外的近距离通信卡(也称为NFC卡)来完成。所述应用程序还适于验证与第三方应用程序相关的许可,以控制用户对所述第三方应用程序的访问。
如图2所示,安全库24包括用于保护数据存储的函数37A、用于保护与另一计算装置的数据交换的函数37B,以及用于消除调试事件的函数37C。
在图1和图2的示例性实施例中,安全库24是与包含在操作系统20中的本地库分离的特定库。
可替换地,如图2中的点划线所示,安全库24是包含在由操作系统的提供商交付的所述操作系统的库集26中的本地库。
内核25在一方面的硬件部分(具体包括信息处理单元12、存储器14和无线收发器18)与另一方面的操作系统20的其余部分(尤其是库集26)之间形成抽象层,这本身是已知的。所述内核25适用于对基本业务进行管理,例如所述操作系统的安全、内存管理或进程管理。
库集26包括不安全函数库39。
虚拟机28本身是已知的,并且能够执行包含在每个包文件21、22、23中的对应二进制文件。
承载应用程序的结构30包括应用程序31、34、36可用的业务38A、38B,例如活动管理业务38A,针对与所述应用程序相关的包文件的管理业务38B。
每个应用程序31、34、36采用包括二进制代码的二进制文件的形式,所述二进制代码还被称作字节码,并设计成由虚拟机28执行。虚拟机对应用程序31、34、36的执行是对所述应用程序的字节码的解释。
如图4所示,每个应用程序31、34、36包括一个或多个组件A、B、#A、#B,这些组件具有不同的类型,例如活动、业务、内容提供器,或分配接收器。每个组件A、B、#A、#B在所述应用程序的行为中起不同的作用,并且甚至可以由其他应用程序单独激活。
在所描述的实施例中,操作系统是谷歌(Google)的安卓()应用程序系统。那么内核25基于Linux内核,更具体的是基于2.6版的Linux内核。库集26采用C/C++计算机语言编写。虚拟机28为Dalvik虚拟机。应用程序31、34、36采用Java语言编写并呈Dalvik虚拟机28可执行的二进制代码的形式。
可替换地,本发明适用于任一与安卓操作系统类型相同的操作系统。特别地,本发明适用于包括内核、设计成执行应用程序的虚拟机以及所述内核和所述虚拟机可以访问的函数库集的操作系统。
第一配置文件33本身是已知的,并包括:用于对所述应用程序的版本进行命名和指示的信息、关于所述应用程序的组件的信息以及允许所述应用程序以预定的方式从操作系统20或其他应用程序接收的消息中识别某些消息的消息过滤器。在的情况下,第一配置文件33也称为清单文件。
待保护的应用程序34被设计成在其执行期间调用不安全函数库39中的至少一个函数。
第二配置文件35包括与第一配置文件33相同类型的信息,并被进一步修改,以便在虚拟机28执行第二包文件22期间,启动用于创建执行环境的应用程序36来代替待保护的应用程序34。
可替换地,待保护的应用程序34和用于创建执行环境的应用程序36被封装在两个不同的包文件中,每个应用程序34、36与唯一的配置文件一起被封装在相应包文件中。与待保护的应用程序34相关的配置文件被修改,以便首先执行用于动态创建执行环境的应用程序36而不是所述待保护的应用程序,并且也是为了使待保护的应用程序34可以在由用于创建执行环境的应用程序36准备的现有进程中执行。
用于动态创建环境的应用程序36包括:用于加载所述安全库的模块40,用于从与待保护的应用程序34相关的函数调用中将至少一个对不安全函数的调用替换为对来自安全库24中的相应函数的调用的模块42。
此外,用于创建执行环境的应用程序36包括:用于对所述计算装置的用户进行认证并恢复针对所述安全库的解锁密钥的模块44,以及用于拦截并处理与使待保护的应用程序34等待将其唤醒相关的消息的模块46。
用于创建执行环境的应用程序36包括用于在将对不安全函数的调用替换为对安全函数的调用之后启动所述待保护的应用程序的模块48。
用于创建执行环境的应用程序36是专用于待保护的应用程序34的应用程序,并且不同于操作系统20。
用于保护数据存储的函数37A能够例如通过对所存储的数据进行加密来保护存储在存储器14的存储区中的敏感性数据。所述保护是阻止未授权人员访问所述数据的隐密性保护,并且也是阻止对所述数据内容进行任何篡改的完整性保护。
用于保护数据交换的函数37B能够保护待保护的应用程序34与未示出的另一计算装置之间的数据交换。
用于删除调试事件的函数37C能够在调试事件被保存在存储器14之前,将这些调试事件删除,所述调试事件在执行包含在待保护的应用程序34的代码中的标签期间产生。这些调试事件用于在完成应用程序的代码之前确定所述代码,所述调试事件有时被保留在应用程序代码中,随后会造成安全破坏。
不安全函数库39本身是已知的。在操作系统的情况下,不安全函数库39是采用C/C++计算机语言编写的函数库。
在图1的示例性实施例中,认证和恢复模块44是用于调用针对用户的认证应用程序和恢复封装在第三包文件23中的解锁密钥的模块。换句话说,认证和恢复模块44仅包括一个针对用于对用户进行认证并恢复密钥的应用程序的进入点。
可替换地,存储器14不包括第三包文件,并且每个用于创建执行环境的应用程序的认证和恢复模块44包括用于对用户进行认证并恢复解锁密钥的应用程序的功能,并且能够对装置10的用户进行认证,在认证成功的情况下,从安全库24中恢复解锁密钥。
现将利用图3和图4来说明根据本发明的计算装置10的操作。
利用创建包文件的应用程序来创建每个第二包文件22,然后将在第二包文件22存储于存储器14中。用于创建包文件的应用程序是位于所述计算装置之外的第三方应用程序,并且能够根据待保护应用程序34的初始包文件(其包括待保护应用程序34)和类似于第一配置文件33的初始配置文件来创建用于待保护的应用程序的包文件22。
用于创建包文件的第三方应用程序通过修改所述初始配置文件来创建第二配置文件35,使得在第二包文件22的执行期间,启动用于创建执行环境36的应用程序来替换待保护的应用程序34。
随后,第三方创建应用程序通过将与待保护的应用程序对应的第二二进制文件和与用于创建执行环境的应用程序36对应的第三二进制文件添加到上述的第二配置文件35中,来构建第二包文件22。此外,第三方创建应用程序还将安全库24添加到第二包文件22中。
最后,第三方创建应用程序将对之前构建的第二包文件22进行标记。
图3示出了由创建执行环境的应用程序36针对待保护的应用程序34动态创建执行环境的方法。
在初始步骤100期间,加载安全库24,以便在后续启动待保护的应用程序34期间,包含在所述安全库24中的安全函数37A、37B、37C可用于虚拟机28。
接着在步骤110期间,创建执行环境的应用程序36将在与所述待保护的应用程序34相关的函数的调用中的至少一个对不安全函数的调用替换为对相应的来自先前加载的安全库24的应用程序37A、37B、37C的调用。
例如,替换步骤110包括删除在所述待保护的应用程序34与不安全函数之间的动态链接,以及创建在所述待保护的应用程序34与安全库24的对应函数37A、37B、37C之间的动态替换链接。
在所描述的实施例中,在与所述待保护的应用程序34相关的函数调用中,所有对数据存储函数的调用被替换为对数据存储的安全函数37A的调用。
在与所述待保护的应用程序34相关的函数调用中,所有对与另一计算装置的数据交换函数的调用被替换为对数据交换安全函数37B的调用。
在与所述待保护的应用程序34相关的函数调用中,所有对添加调试事件的函数的调用被替换为对删除调试事件的函数37C的调用。
此外,接着在步骤115期间,用于创建执行环境的应用程序36锁定在步骤100期间加载的安全库24以及在先前步骤110期间进行的函数调用替换。
当通过动态链接将替换函数引入待保护的应用程序本身或引入虚拟机28中来执行替换步骤110时,替换函数来自用于创建执行环境的应用程序36,例如锁定步骤包括将对替换函数的引用更新为对新替换函数的引用。
与步骤110和115中的代码以及新的替换函数和安全函数相对应的代码被置于安全库24中。这个新的替换函数对替换请求进行过滤,拒绝替换在步骤110中处理过的函数调用,并且允许对其他函数调用进行替换。
此外,接着在步骤120期间,用于创建执行环境的应用程序36请求对计算装置10的用户进行认证,随后在成功认证的情况下,恢复用于解锁安全库24的密钥。
此外,在步骤130期间,用于创建执行环境的应用程序36拦截并处理操作系统与待保护的应用程序之间所交换的消息,所述消息由安全库24进行处理。特别的是,拦截的消息涉及将待保护的应用程序34设为等待或唤醒,在存储器14中的数据的存储,以及与另一计算装置的数据交换。
最后在步骤140期间,用于创建执行环境的应用程序36启动待保护的应用程序34。
在启动待保护的应用程序34之后并通过先前完成的调用函数替换,由待保护的应用程序34所生成或用于待保护的应用程序的相应调用可选地通过操作系统20被首先发送到安全库24,并且如果安全库24授权该所述调用,并且在需要的情况下,将所述调用发送到不安全库39。
用于待保护的应用程序34的执行环境是动态创建的,这是因为所述创建在每次执行所述应用程序时并紧接由操作系统20接收到执行所述应用程序的指令之后执行。
图4示出了针对待保护的应用程序34的执行环境的动态创建和所述应用程序的执行。
在操作系统20接收到执行第二包文件22的指令之后,该操作系统开始根据第二改进的配置文件35中所包含的信息,利用活动管理业务38A(箭头F1)启动用于创建执行环境的应用程序36的组件#A,以便启动用于创建执行环境的应用程序36来代替待保护的应用程序34。
根据用于创建执行环境的方法的初始步骤100,用于创建执行环境的应用程序36下载安全库24(箭头F2)。所述安全库中包含的安全函数37A、37B、37C因而可用于虚拟机28的后续操作。根据前述的步骤110,删除待保护的应用程序34与某些不安全函数之间的动态链接,并且在待保护的应用程序34与安全库24的相应函数37A、37B、37C之间创建相应的动态替换链接(箭头F3)。
组件#A接下来向操作系统请求启动待保护的应用程序34的相应组件A(箭头F4)。该请求被安全库24拦截,以请求用户的认证。随后,在成功认证的情况下,恢复解锁安全库24的密钥。在用户成功认证的情况下,该请求被发送到操作系统的活动管理业务38A(箭头F5)。
根据前述的步骤140,操作系统20随后利用活动管理系统38A来启动待保护的应用程序34的组件A(箭头F6)。该启动根据第二配置文件35所包含的信息,在与启动用于创建执行环境的应用程序36相同的进程中进行。
在执行待保护的应用程序34期间,组件A向操作系统20请求启动组件B,并且所述请求随后经过上述用于替换动态链接的步骤由虚拟机28引导至安全库24(箭头F7)。该请求随后由安全库24进行修改,以便操作系统20启动组件#B而不是待保护的应用程序34的组件B,然后修改后的请求被发送到活动管理业务38A(箭头F8)。于是操作系统20启动组件#B(箭头F9)。
组件#B随后向操作系统请求启动待保护的应用程序34的相应组件B(箭头F10)。该请求被安全库24拦截,以执行相应的安全处理,随后经安全处理的请求被发送到操作系统的活动管理业务38A(箭头F11)。
于是操作系统20利用活动管理业务38A启动待保护的应用程序34的组件B(箭头F12)。该组件B接下来想要存储数据文件,为此调用存储函数(箭头F13)。通过上述针对动态链接的替换步骤,那么安全库的用于数据存数的安全函数37A被自动调用,并且该数据文件在被存储于存储器14之前,由所述安全函数37A进行加密(箭头F14)。
本领域的技术人员将理解的是,如果该组件想要与另一计算装置交换数据,并需为此调用数据交换函数,那么类似地,通过上述用于替换动态链接的步骤,该数据交换安全函数37B已被自动调用。
本领域的技术人员将理解的是,如果该组件想要增加调试事件,并需为此调用用于增加调试事件的函数,那么类似地,经过上述用于替换动态链接的步骤,所述用于删除调试事件的函数37C已被自动调用。
在图4的示例性实施例中,所描述的不同请求在管理员模式下进行,并且随后经过内核25。本领域的技术人员将理解的是,可替换地,某些请求能够在用户模式下进行而无需经过内核25。
通过实施利用用于创建执行环境的应用程序36来动态创建用来执行待保护的应用程序34的环境的方法,计算装置10因而可以保护应用程序34的操作,特别是关于这些组件的启动,数据的存储或与另一计算装置的数据交换,通过安全库24的适当函数对后者进行自动加密。
对应用程序34的保护仅需要重写该应用程序的配置文件(在情况下,称为清单文件),增加用于创建执行环境的应用程序36,后者被封装在待保护的应用程序34的包文件中或替换地封装在独立的包文件中,并且在库集26不包括安全库24时,添加这样的安全库24。
本领域的技术人员将注意到,这个保护不需要对待保护的应用程序34的源代码或二进制代码进行任何修改,或对操作系统20进行任何修改。
可以发现的是,用于动态创建用来执行待保护的应用程序的环境的方法和计算装置10可以保护应用程序34,同时限制对操作系统的代码、应用程序的环境或待保护的应用程序的修改。
尽管围绕包括能够执行待保护的应用程序的虚拟机的操作系统对根据本发明的针对待保护的应用程序动态创建执行环境的方法和计算装置进行了描述,但是本领域的技术人员将理解的是,本发明还适用于不包括虚拟机的操作系统,在这种情况下,应用程序由信息处理单元的处理器直接执行。

Claims (13)

1.一种用于针对待保护的应用程序(34)动态创建执行环境以保护所述应用程序(34)的方法,该方法由计算装置(10)实现,所述计算装置(10)包括信息处理单元(12)和存储器(14),所述存储器(14)与所述信息处理单元(12)相关,并包括操作系统(20),所述待保护的应用程序(34)和包括至少一个安全函数(37A,37B,37C)的安全库(24),所述操作系统(20)包括函数库集(26),所述函数库集(26)包括不安全函数库(39),所述待保护的应用程序(34)适于在所述待保护的应用程序(34)执行期间调用所述不安全函数库(39)的函数;
其特征在于,该方法包括以下由存储在所述存储器(14)中的用于动态创建执行环境的应用程序(36)实现的步骤:
-加载(100)所述安全库(24);
-将与所述待保护的应用程序(34)相关的函数调用中的至少一个对不安全函数的调用替换(110)为对所述安全库(24)中的对应函数(37A,37B,37C)的调用;
-在替换步骤(110)之后启动(140)所述待保护的应用程序(34)。
2.根据权利要求1所述的方法,其中,所述替换步骤(110)包括:消除所述待保护的应用程序(34)与所述不安全函数之间的动态链接,并在所述待保护的应用程序(34)与所述安全库(24)中的对应函数(37A,37B,37C)之间创建动态替换链接。
3.根据权利要求1或2所述的方法,其中,在与所述待保护的应用程序相关的函数调用中,所有对数据存储函数的调用被替换为对所述数据存储的安全函数(37A)的调用。
4.根据上述权利要求中任一项所述的方法,其中,在与所述待保护的应用程序相关的函数调用中,所有对与另一计算装置交换数据的函数的调用被替换为对保护与所述另一计算装置的数据交换的函数(37B)的调用。
5.根据上述权利要求中任一项所述的方法,其中,在与所述待保护的应用程序相关的函数调用中,所有对增加调试事件的函数的调用被替换为对删除调试事件的函数(37C)的调用。
6.根据上述权利要求中任一项所述的方法,其中,所述方法进一步包括:在启动所述应用程序的步骤(140)之前,用于锁定在所述加载步骤(100)期间加载的所述安全库(24)和在所述替换步骤(110)期间进行的函数调用替换的步骤(115)。
7.根据上述权利要求中任一项所述的方法,其中,所述方法进一步包括:在启动所述应用程序的步骤(140)之前,用于对所述计算装置(10)的用户进行认证并恢复用来解锁所述安全库(24)的密钥的步骤(120)。
8.根据上述权利要求中任一项所述的方法,其中,所述方法进一步包括:在启动所述应用程序的步骤(140)之前,用于拦截在所述操作系统(20)与所述待保护的应用程序(34)之间交换的消息,并利用所述安全库(24)的对应函数对所述消息进行处理的步骤(130)。
9.根据上述权利要求中任一项所述的方法,其中,所述用于创建执行环境的应用程序(36)是专用于所述待保护的应用程序(34)的应用程序,并且不同于所述操作系统(20)。
10.根据上述权利要求中任一项所述的方法,其中,所述操作系统(20)包括虚拟机(28),所述虚拟机(28)适于执行所述应用程序(34,36)。
11.根据权利要求10所述的方法,其中,所述操作系统(20)为安卓系统,并且所述虚拟机(28)为Dalvik虚拟机。
12.一种计算机程序产品,所述计算机程序产品包括软件指令,当所述软件指令由集成到计算装置(10)中的信息处理单元(12)实现时,所述软件指令实现上述权利要求中任一项所述的方法。
13.一种计算装置(10),包括:
-信息处理单元(12);
-存储器(14),所述存储器(14)包括操作系统(20)、至少一个待保护的应用程序(34)以及包括至少一个安全函数(37A,37B,37C)的安全库(24),所述存储器(14)与所述信息处理单元(12)相关;
所述操作系统(20)包括函数库集(26),所述函数库集(26)包括不安全函数库(39),所述待保护的应用程序(34)被设计为调用所述不安全函数库(39)的函数;
其特征在于,所述存储器(14)进一步包括用于针对所述待保护的应用程序动态创建执行环境的应用程序(36),所述用于创建执行环境的应用程序(36)包括:用于加载所述安全库(24)的模块(40)、用于将与所述待保护的应用程序(34)相关的函数调用中的至少一个对不安全函数的调用替换为对所述安全库(24)中的对应函数(37A,37B,37C)的调用的模块(42)以及用于在将对不安全函数的调用替换为对所述安全函数(37A,37B,37C)的调用之后启动所述待保护的应用程序(34)的模块(48)。
CN201280060047.6A 2011-10-06 2012-10-08 用于动态创建应用程序执行环境以保护所述应用程序的方法以及相关的计算机程序产品和计算装置 Pending CN103988206A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR11/03046 2011-10-06
FR1103046A FR2981174B1 (fr) 2011-10-06 2011-10-06 Procede de creation dynamique d'un environnement d'execution d'une application pour securiser ladite application, produit programme d'ordinateur et appareil informatique associes
PCT/EP2012/069874 WO2013050600A1 (fr) 2011-10-06 2012-10-08 Procédé de création dynamique d'un environnement d'exécution d'une application pour sécuriser ladite application, produit programme d'ordinateur et appareil informatique associés

Publications (1)

Publication Number Publication Date
CN103988206A true CN103988206A (zh) 2014-08-13

Family

ID=46980981

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201280060233.XA Pending CN103975338A (zh) 2011-10-06 2012-10-08 用于根据包括待保护应用程序和初始配置文件的初始包文件生成保护该应用程序的包文件的方法以及相关的计算机程序产品和计算装置
CN201280060047.6A Pending CN103988206A (zh) 2011-10-06 2012-10-08 用于动态创建应用程序执行环境以保护所述应用程序的方法以及相关的计算机程序产品和计算装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201280060233.XA Pending CN103975338A (zh) 2011-10-06 2012-10-08 用于根据包括待保护应用程序和初始配置文件的初始包文件生成保护该应用程序的包文件的方法以及相关的计算机程序产品和计算装置

Country Status (6)

Country Link
US (2) US9405520B2 (zh)
EP (2) EP2764462B1 (zh)
KR (2) KR20140077188A (zh)
CN (2) CN103975338A (zh)
FR (1) FR2981174B1 (zh)
WO (2) WO2013050602A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104504324A (zh) * 2014-12-03 2015-04-08 深圳市深信服电子科技有限公司 移动应用认证加固方法和系统
CN107031854A (zh) * 2015-11-09 2017-08-11 泰雷兹公司 飞行员决策辅助方法及系统、及相关联的计算机程序产品
CN107480513A (zh) * 2017-08-17 2017-12-15 深信服科技股份有限公司 一种认证实现方法及装置、计算机装置、可读存储介质
CN108573154A (zh) * 2017-03-14 2018-09-25 罗伯特·博世有限公司 用于保护装置的方法和设备

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2981174B1 (fr) 2011-10-06 2013-12-20 Thales Sa Procede de creation dynamique d'un environnement d'execution d'une application pour securiser ladite application, produit programme d'ordinateur et appareil informatique associes
US8695060B2 (en) 2011-10-10 2014-04-08 Openpeak Inc. System and method for creating secure applications
DE102013003204A1 (de) * 2013-02-26 2014-08-28 Giesecke & Devrient Gmbh Verfahren und Vorrichtung zum Betreiben einer Ausführungsumgebung für Applikationen
CN104134034B (zh) * 2013-06-13 2015-10-21 腾讯科技(深圳)有限公司 控制应用运行的方法和装置
US20150113502A1 (en) * 2013-10-18 2015-04-23 Openpeak Inc. Method and system for encapsulation of application
US20150113506A1 (en) * 2013-10-18 2015-04-23 Openpeak Inc. Method and system for adaptive loading of application
KR101695639B1 (ko) * 2014-08-13 2017-01-16 (주)잉카엔트웍스 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
JP6462114B2 (ja) 2014-08-20 2019-01-30 クワーン チー インテリジェント フォトニック テクノロジー リミテッド オペレーティングシステムにおけるハードウェア・デバイス制御方法及びモジュール
US20160071040A1 (en) 2014-09-05 2016-03-10 Openpeak Inc. Method and system for enabling data usage accounting through a relay
US9350818B2 (en) 2014-09-05 2016-05-24 Openpeak Inc. Method and system for enabling data usage accounting for unreliable transport communication
US8938547B1 (en) 2014-09-05 2015-01-20 Openpeak Inc. Method and system for data usage accounting in a computing device
US9232013B1 (en) 2014-09-05 2016-01-05 Openpeak Inc. Method and system for enabling data usage accounting
US9232078B1 (en) 2015-03-16 2016-01-05 Openpeak Inc. Method and system for data usage accounting across multiple communication networks
CN104915266B (zh) * 2015-06-15 2019-05-28 上海海漾软件技术有限公司 一种应用程序保护方法及装置
CN106203085B (zh) * 2016-07-08 2019-03-01 东软集团股份有限公司 一种编译方法及装置
US10042620B1 (en) * 2016-11-03 2018-08-07 Palantir Technologies Inc. Approaches for amalgamating disparate software tools
DE102017214591A1 (de) * 2017-08-22 2019-02-28 Robert Bosch Gmbh Verfahren und Vorrichtung zum Schützen eines Gerätes
CN110147227B (zh) * 2018-07-06 2023-07-18 杭州涂鸦信息技术有限公司 一种用于技能配置的程序安装包生成方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020065776A1 (en) * 2000-11-29 2002-05-30 Brad Calder Method and process for virtualizing file system interfaces
US20070101435A1 (en) * 2005-10-14 2007-05-03 Check Point Software Technologies, Inc. System and Methodology Providing Secure Workspace Environment
CN101593257A (zh) * 2008-05-27 2009-12-02 北京飞天诚信科技有限公司 基于.Net虚拟机的软件保护系统和方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658571B1 (en) * 1999-02-09 2003-12-02 Secure Computing Corporation Security framework for dynamically wrapping software applications executing in a computing system
US7398532B1 (en) * 2000-03-02 2008-07-08 Hewlett-Packard Development Company, L.P. System and method for establishing a secure execution environment for a software process
US6836888B1 (en) * 2000-03-17 2004-12-28 Lucent Technologies Inc. System for reverse sandboxing
US20020066021A1 (en) * 2000-11-29 2002-05-30 Chien Andrew A. Method and process for securing an application program to execute in a remote environment
US7260820B1 (en) * 2001-04-26 2007-08-21 Vm Ware, Inc. Undefeatable transformation for virtual machine I/O operations
US7475408B2 (en) * 2003-02-27 2009-01-06 Microsoft Corporation Hosting an application in one of a plurality of execution environments
US8266700B2 (en) * 2005-05-16 2012-09-11 Hewlett-Packard Development Company, L. P. Secure web application development environment
US7693838B2 (en) * 2005-11-12 2010-04-06 Intel Corporation Method and apparatus for securely accessing data
US7725922B2 (en) * 2006-03-21 2010-05-25 Novell, Inc. System and method for using sandboxes in a managed shell
US20110289294A1 (en) * 2009-12-14 2011-11-24 Manabu Maeda Information processing apparatus
US9684785B2 (en) * 2009-12-17 2017-06-20 Red Hat, Inc. Providing multiple isolated execution environments for securely accessing untrusted content
US20120159567A1 (en) * 2010-12-21 2012-06-21 Enterproid Hk Ltd Contextual role awareness
EP2469743B1 (en) * 2010-12-23 2019-02-20 Nagravision S.A. A system to identify a user of television services by using biometrics
US8549656B2 (en) 2011-02-11 2013-10-01 Mocana Corporation Securing and managing apps on a device
FR2981174B1 (fr) 2011-10-06 2013-12-20 Thales Sa Procede de creation dynamique d'un environnement d'execution d'une application pour securiser ladite application, produit programme d'ordinateur et appareil informatique associes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020065776A1 (en) * 2000-11-29 2002-05-30 Brad Calder Method and process for virtualizing file system interfaces
US20070101435A1 (en) * 2005-10-14 2007-05-03 Check Point Software Technologies, Inc. System and Methodology Providing Secure Workspace Environment
CN101593257A (zh) * 2008-05-27 2009-12-02 北京飞天诚信科技有限公司 基于.Net虚拟机的软件保护系统和方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104504324A (zh) * 2014-12-03 2015-04-08 深圳市深信服电子科技有限公司 移动应用认证加固方法和系统
CN104504324B (zh) * 2014-12-03 2017-09-29 深信服科技股份有限公司 移动应用认证加固方法和系统
CN107031854A (zh) * 2015-11-09 2017-08-11 泰雷兹公司 飞行员决策辅助方法及系统、及相关联的计算机程序产品
CN108573154A (zh) * 2017-03-14 2018-09-25 罗伯特·博世有限公司 用于保护装置的方法和设备
CN108573154B (zh) * 2017-03-14 2024-04-05 罗伯特·博世有限公司 用于保护装置的方法和设备
CN107480513A (zh) * 2017-08-17 2017-12-15 深信服科技股份有限公司 一种认证实现方法及装置、计算机装置、可读存储介质
CN107480513B (zh) * 2017-08-17 2020-09-11 深信服科技股份有限公司 一种认证实现方法及装置、计算机装置、可读存储介质

Also Published As

Publication number Publication date
EP2764462B1 (fr) 2019-03-13
US20140223545A1 (en) 2014-08-07
WO2013050602A1 (fr) 2013-04-11
CN103975338A (zh) 2014-08-06
EP2764463A1 (fr) 2014-08-13
FR2981174B1 (fr) 2013-12-20
KR20140077186A (ko) 2014-06-23
US9405520B2 (en) 2016-08-02
FR2981174A1 (fr) 2013-04-12
EP2764462A1 (fr) 2014-08-13
US20140223426A1 (en) 2014-08-07
WO2013050600A1 (fr) 2013-04-11
KR20140077188A (ko) 2014-06-23

Similar Documents

Publication Publication Date Title
CN103988206A (zh) 用于动态创建应用程序执行环境以保护所述应用程序的方法以及相关的计算机程序产品和计算装置
Marforio et al. Application collusion attack on the permission-based security model and its implications for modern smartphone systems
CN102804194B (zh) 用于提供应用安全性的方法及装置
KR101503785B1 (ko) 동적 라이브러리를 보호하는 방법 및 장치
CN103403669A (zh) 使设备上的app变得安全和管理设备上的app
CN103548320A (zh) 不安全应用在装置上的安全执行
Zdziarski Hacking and securing iOS applications: stealing data, hijacking software, and how to prevent it
CN102880828B (zh) 一种针对虚拟化支撑环境的入侵检测与恢复系统
CN105122260A (zh) 到安全操作系统环境的基于上下文的切换
US8701195B2 (en) Method for antivirus in a mobile device by using a mobile storage and a system thereof
CN108334404B (zh) 应用程序的运行方法和装置
EP2891105A1 (en) Method and system for platform and user application security on a device
CN110008693A (zh) 安全应用程序加密保证方法及装置与系统和存储介质
CN106599115A (zh) 数据保护方法、装置及终端
KR20160039234A (ko) 영역 지향 프로그래밍을 통한 모바일 보안 향상 시스템 및 방법
JP5296627B2 (ja) 端末保護システム及び端末保護方法
CN105229658A (zh) 数据处理系统的安全装置和安全方法
Kawabata et al. Sanadbox: Sandboxing third party advertising libraries in a mobile application
CN112559980A (zh) 一种可内嵌众多任意app的小程序运行时
CN112115477B (zh) 内核修复方法、装置、电子设备及存储介质
CN114238943A (zh) 应用程序防护方法、装置、设备及存储介质
CN107368738A (zh) 一种智能设备的防Root方法及装置
KR101532763B1 (ko) 어플리케이션 불법복제 방지 시스템 및 방법
Umar et al. A Comparative Study of Modern Operating Systems in terms of Memory and Security: A Case Study of Windows, iOS, and Android
EP3057022B1 (en) Mobile device and method for operating same

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140813

RJ01 Rejection of invention patent application after publication