CN109784039B - 移动终端安全运行空间的构建方法、电子设备、存储介质 - Google Patents
移动终端安全运行空间的构建方法、电子设备、存储介质 Download PDFInfo
- Publication number
- CN109784039B CN109784039B CN201811469793.6A CN201811469793A CN109784039B CN 109784039 B CN109784039 B CN 109784039B CN 201811469793 A CN201811469793 A CN 201811469793A CN 109784039 B CN109784039 B CN 109784039B
- Authority
- CN
- China
- Prior art keywords
- file
- component
- creating
- application
- loading
- 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.)
- Active
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供移动终端安全运行空间的构建方法,包括步骤:虚拟应用框架层,对原应用框架层的类和方法进行拦截,通过备用组件替换拦截结果中的目标应用组件;创建安全类库,构建输入输出接口、JNI层接口、安全包;创建类加载器,创建继承原类加载器的自定义类加载器,通过自定义类加载器加载安全类库,当加载完成时,通过自定义类加载器加载备用组件。本发明涉及电子设备与可读存储介质,用于执行上述方法。本发明通过加密沙箱技术在应用层对应用框架层和系统库层进行相关的模拟和修改,实现在无需修改原有应用的前提下,为应用提供充足的加密保护机制同时降低了用户的使用难度,达到应用无感知、无需修改、安装即受保护的效果。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及移动终端安全运行空间的构建方法、电子设备、存储介质。
背景技术
随着互联网和移动互联网的发展,移动终端在生活和办公中起到了越来越重要的作用,搭载Android操作系统的终端因其开放和多样化的特性更是其中代表。但应用质量参差不齐,恶意程序趁虚而入,对移动终端造成了安全隐患。个人金融支付业务以及企业移动管理等都对移动安全有着较高的要求。
计算机中的文件采用加密的方式进行存储是防止数据泄露的手段之一。不同的加密算法和秘钥空间大小以及秘钥存储的位置决定着安全的等级。目前提供的安全机制主要为双系统,多用户以及沙箱技术。双系统和多用户大多数是提供隔离的功能,而没有对应用数据进行实时的数据加密。而沙箱技术虽然可以做到对应用数据的实时加密保护,但目前市场上的大多数加密沙箱技术都是对应用有感的,即需要对原有应用进行修改,调用沙箱的接口进行加密,从某种程度上来讲,加大了用户的使用难度。
发明内容
为了克服现有技术的不足,本发明的目的在于提供移动终端安全运行空间的构建方法,解决目前市场上的大多数加密沙箱技术都是对应用有感的,即需要对原有应用进行修改,调用沙箱的接口进行加密,从某种程度上来讲,加大了用户的使用难度的问题。
本发明提供移动终端安全运行空间的构建方法,包括以下步骤:
虚拟应用框架层,对原应用框架层的类和方法进行拦截,通过备用组件替换拦截结果中的目标应用组件;
创建安全类库,构建输入输出接口、JNI层接口、安全包;
创建类加载器,创建继承原类加载器的自定义类加载器,通过所述自定义类加载器加载所述安全类库,当加载完成时,通过所述自定义类加载器加载所述备用组件。
进一步地,所述虚拟应用框架层步骤具体包括以下步骤:
注册组件,在沙箱应用的xml中注册若干备用组件;
拦截通信过程,采用Hook技术拦截和动态代理Activity、Service服务、ContentProvider内容提供者、Broadcast Receiver广播接收器与系统服务通信的过程;
替换组件,在拦截结果中查找Activity、Service服务、Content Provider内容提供者、Broadcast Receiver广播接收器与系统服务通信的Binder对象,得到目标应用组件,通过所述备用组件替换所述目标应用组件,将所述目标应用组件的信息存储,并向系统提交启动请求;
加载资源,根据所述启动请求为所述目标应用组件加载系统资源,回调沙箱应用并加载本地资源;
启动应用,沙箱应用加载资源并启动应用。
进一步地,在所述加载资源步骤和所述启动应用步骤之间还包括动态代理拦截步骤,若需要返回本地加载请求组件,则对本地加载请求组件进行动态代理拦截,提取请求中的目标应用组件,将提取到的目标应用组件替换为备用组件。
进一步地,所述创建安全类库步骤中,所述构建输入输出接口具体包括以下步骤:
文件加密,采用分页的方式对文件进行分组对称加密;
加密索引,通过AES ECB算法对页的索引进行加密,密文为每页AES CBC方式加密的初始向量;
计算参数,写文件时,根据要写入文件的长度以及写入文件的位置计算写入参数,所述写入参数包括在文件中的第几页、页上的偏置数、页上的Block偏置数;
加密数据,通过所述写入参数判断写入的位置是否为文件末尾,若是文件末尾则判断是否为新的页,若是新的页则通过AES ECB算法计算页的初始向量,对数据进行加密并写入,若不是新的页则获取当前页写入位置的上一个Block长度的密文,通过所述密文作为向量对数据进行加密;若不是文件末尾则获取起始为文件修改位置的所在Block的位置,结束为当前页末尾或文件尾部的位置,对所述位置进行解密,将明文放到缓冲区或数组内,在缓冲区或数组上进行数据写入或修改,对其缓冲区或数组进行加密后回写到文件中。
进一步地,所述创建安全类库步骤中,所述构建安全包具体包括以下步骤:
打包类,将源码中文件相关的类进行打包,放在沙箱代码的目录下;
创建文件,在沙箱代码中创建文件的路径,在安全包下创建文件,并继承对应文件中的类;
重写方法,重写在沙箱代码的安全包的类中的部分方法,并调用所述JNI层接口。
进一步地,所述创建类加载器步骤中,所述自定义类加载器继承PathClassLoader或DexClassLoader或所述自定义类加载器对应的父类。
一种电子设备,包括:处理器;
存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于执行上述移动终端安全运行空间的构建方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行上述移动终端安全运行空间的构建方法。
相比现有技术,本发明的有益效果在于:
本发明提供移动终端安全运行空间的构建方法,包括以下步骤:虚拟应用框架层,对原应用框架层的类和方法进行拦截,通过备用组件替换拦截结果中的目标应用组件;创建安全类库,构建输入输出接口、JNI层接口、安全包;创建类加载器,创建继承原类加载器的自定义类加载器,通过自定义类加载器加载安全类库,当加载完成时,通过自定义类加载器加载备用组件。本发明涉及电子设备与可读存储介质,用于执行移动终端安全运行空间的构建方法。本发明通过加密沙箱技术在应用层对应用框架层和系统库层进行相关的模拟和修改,实现在无需修改原有应用的前提下,为应用提供充足的加密保护机制同时降低了用户的使用难度,达到应用无感知、无需修改、安装即受保护的效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的具体实施方式由以下实施例及其附图详细给出。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例的移动终端安全运行空间架构图;
图2为本发明实施例的沙箱内部结构示意图;
图3为本发明的移动终端安全运行空间的构建方法流程图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
移动终端安全运行空间的构建方法,如图1所示,在原应用层对应用框架层和系统库层进行相关的模拟和修改从而达到应用无感知、无需修改。如图2所示,为了实现上述效果,在沙箱中提供虚拟框架模块和安全类库模块。虚拟框架模块采用框架虚拟化的思想,通过动态代理或Hook技术对原应用框架层的类和方法进行拦截和替换,目的是虚拟出供目标应用(也就是需要受保护的应用)运行的与主机隔离的应用框架层环境。安全类库模块是对系统用到的文件存储、网络相关的库进行重新的开发和设计,增加了加密机制和方法,以及相关的秘钥链生成的机制,提供安全加密的相关功能,主要提供POSIX C和PlatformNative接口以适应应用在不同层级实现的接口的安全性,安装即受保护的效果。具体地,为受保护的应用(以下记为“目标应用”)提供可运行的环境,如图3所示,包括以下步骤:
虚拟应用框架层,对原应用框架层的类和方法进行拦截,通过备用组件替换拦截结果中的目标应用组件;优选的,虚拟应用框架层步骤具体包括以下步骤:
注册组件,在沙箱应用的xml中注册若干备用组件供后续使用;
拦截通信过程,四大组件(Activity、Service服务、Content Provider内容提供者、Broadcast Receiver广播接收器)的寿命周期管理都是与System_Server进行通信,通信使用的都是Binder对象,因此,采用Hook技术拦截和动态代理Activity、Service服务、Content Provider内容提供者、Broadcast Receiver广播接收器与系统服务(System_Server)通信的过程,如AMS、PMS等类中的方法。
替换组件,在拦截结果中查找Activity、Service服务、Content Provider内容提供者、Broadcast Receiver广播接收器与系统服务通信的Binder对象,得到目标应用组件,通过备用组件替换目标应用组件,将目标应用组件的信息存储,并向系统提交启动请求;
加载资源,根据启动请求为目标应用组件加载系统资源,回调沙箱应用并加载本地资源;优选的,在加载资源步骤和启动应用步骤之间还包括动态代理拦截步骤,若需要返回本地加载请求组件,则对本地加载请求组件进行动态代理拦截,提取请求中的目标应用组件,将提取到的目标应用组件替换为备用组件。
启动应用,沙箱应用加载资源并启动应用。
对设计沙箱安全的类,例如文件操作用到的java.io包,数据库相关操作用到的android.database包,进行编写和打包,具体步骤如下:
创建安全类库,构建输入输出接口、JNI层接口、安全包;本实施例中,使用POSIX C语言进行编写具备加密功能的文件的基本输入输出接口,如文件的读写等操作。以写文件为例,优选的,创建安全类库步骤中,构建输入输出接口具体包括以下步骤:
文件加密,采用分页的方式对文件进行分组对称加密;确定分写大小,例如1024字节,确定分组长度,例如每个Block为16字节。
加密索引,通过AES ECB算法对页的索引进行加密,密文为每页AES CBC方式加密的初始向量;
计算参数,写文件时,根据要写入文件的长度以及写入文件的位置计算写入参数,写入参数包括在文件中的第几页、页上的偏置数、页上的Block偏置数;
加密数据,通过写入参数判断写入的位置是否为文件末尾,若是文件末尾则判断是否为新的页,若是新的页则通过AES ECB算法计算页的初始向量,对数据进行加密并写入,若不是新的页则获取当前页写入位置的上一个Block长度的密文,通过密文作为向量对数据进行加密;若不是文件末尾则获取起始为文件修改位置的所在Block的位置,结束为当前页末尾或文件尾部的位置,对位置进行解密,将明文放到缓冲区或数组内,在缓冲区或数组上进行数据写入或修改,对其缓冲区或数组进行加密后回写到文件中。
为上述C/C++实现的文件加密等功能编写JNI层的实现,以供Android java层应用调用。优选的,创建安全类库步骤中,构建安全包具体包括以下步骤:
打包类,将源码中文件相关的类进行打包,放在沙箱代码的目录下;本实施例中,源码为安卓源码,具体地,将安卓源码中的文件相关的类,如File.java、FileInputStream.java、FileOutputStream.java、RandomAccessFile.java打包,放在沙箱代码的目录下,如名为origin的包下。
创建文件,在沙箱代码中创建文件的路径,在安全包下创建文件,并继承对应文件中的类;本实施例中,在沙箱代码中创建java/io的路径,在java.io包下创建名为File.java、FileInputStream.java、FileOutputStream.java、RandomAccessFile.java等文件,并继承上一步中的对应文件中的类,例如File类继承上一步中提到的origin包里的File类。
重写方法,重写在沙箱代码的安全包的类中的部分方法,并调用JNI层接口。本实施例中,重写在沙箱代码的java.io包里的类中的部分方法,并在其中调用之前编写的JNI层接口,以达到调用C/C++层加密实现的目的。
创建类加载器,创建继承原类加载器的自定义类加载器,通过自定义类加载器加载安全类库,当加载完成时,通过自定义类加载器加载备用组件。优选的,创建类加载器步骤中,自定义类加载器继承PathClassLoader或DexClassLoader或自定义类加载器对应的父类,使用该类加载器加载上述步骤中的java层的安全类库,如沙箱代码中的java.io包中的类,在加载完成后,再使用该类加载目标应用,从而达到被加载的目标应用使用沙箱代码中的安全类库而非系统类库的目的,具体效果如图2所示。
在一实施例中,上述方案也可为直接将java.io类进行修改并放到沙箱中,并调用JNI层接口和POSIX C编写的安全库,而不添加original模块。由于安全库由POSIX C编写,所有其他建立在C/C++实现的使用面向对象的,可以实现Hook功能的系统同样可以上述方案为例实现该功能。
一种电子设备,包括:处理器;
存储器;以及程序,其中程序被存储在存储器中,并且被配置成由处理器执行,程序包括用于执行上述移动终端安全运行空间的构建方法。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行上述移动终端安全运行空间的构建方法。
本发明提供移动终端安全运行空间的构建方法,包括以下步骤:虚拟应用框架层,对原应用框架层的类和方法进行拦截,通过备用组件替换拦截结果中的目标应用组件;创建安全类库,构建输入输出接口、JNI层接口、安全包;创建类加载器,创建继承原类加载器的自定义类加载器,通过自定义类加载器加载安全类库,当加载完成时,通过自定义类加载器加载备用组件。本发明涉及电子设备与可读存储介质,用于执行移动终端安全运行空间的构建方法。本发明通过加密沙箱技术在应用层对应用框架层和系统库层进行相关的模拟和修改,实现在无需修改原有应用的前提下,为应用提供充足的加密保护机制同时降低了用户的使用难度,达到应用无感知、无需修改、安装即受保护的效果。
以上,仅为本发明的较佳实施例而已,并非对本发明作任何形式上的限制;凡本行业的普通技术人员均可按说明书附图所示和以上而顺畅地实施本发明;但是,凡熟悉本专业的技术人员在不脱离本发明技术方案范围内,利用以上所揭示的技术内容而做出的些许更动、修饰与演变的等同变化,均为本发明的等效实施例;同时,凡依据本发明的实质技术对以上实施例所作的任何等同变化的更动、修饰与演变等,均仍属于本发明的技术方案的保护范围之内。
Claims (7)
1.移动终端安全运行空间的构建方法,其特征在于包括以下步骤:
虚拟应用框架层,对原应用框架层的类和方法进行拦截,通过备用组件替换拦截结果中的目标应用组件;
创建安全类库,构建输入输出接口、JNI层接口、安全包;
创建类加载器,创建继承原类加载器的自定义类加载器,通过所述自定义类加载器加载所述安全类库,当加载完成时,通过所述自定义类加载器加载所述备用组件;
所述创建安全类库步骤中,所述构建输入输出接口具体包括以下步骤:
文件加密,采用分页的方式对文件进行分组对称加密;
加密索引,通过AES ECB算法对页的索引进行加密,密文为每页AES CBC方式加密的初始向量;
计算参数,写文件时,根据要写入文件的长度以及写入文件的位置计算写入参数,所述写入参数包括在文件中的第几页、页上的偏置数、页上的Block偏置数;
加密数据,通过所述写入参数判断写入的位置是否为文件末尾,若是文件末尾则判断是否为新的页,若是新的页则通过AES ECB算法计算页的初始向量,对数据进行加密并写入,若不是新的页则获取当前页写入位置的上一个Block长度的密文,通过所述密文作为向量对数据进行加密;若不是文件末尾则获取起始为文件修改位置的所在Block的位置,结束为当前页末尾或文件尾部的位置,对所述位置进行解密,将明文放到缓冲区或数组内,在缓冲区或数组上进行数据写入或修改,对其缓冲区或数组进行加密后回写到文件中。
2.如权利要求1所述的移动终端安全运行空间的构建方法,其特征在于,所述虚拟应用框架层步骤具体包括以下步骤:
注册组件,在沙箱应用的xml中注册若干备用组件;
拦截通信过程,采用Hook技术拦截和动态代理Activity、Service服务、ContentProvider内容提供者、Broadcast Receiver广播接收器与系统服务通信的过程;
替换组件,在拦截结果中查找Activity、Service服务、Content Provider内容提供者、Broadcast Receiver广播接收器与系统服务通信的Binder对象,得到目标应用组件,通过所述备用组件替换所述目标应用组件,将所述目标应用组件的信息存储,并向系统提交启动请求;
加载资源,根据所述启动请求为所述目标应用组件加载系统资源,回调沙箱应用并加载本地资源;
启动应用,沙箱应用加载资源并启动应用。
3.如权利要求2所述的移动终端安全运行空间的构建方法,其特征在于:在所述加载资源步骤和所述启动应用步骤之间还包括动态代理拦截步骤,若需要返回本地加载请求组件,则对本地加载请求组件进行动态代理拦截,提取请求中的目标应用组件,将提取到的目标应用组件替换为备用组件。
4.如权利要求1所述的移动终端安全运行空间的构建方法,其特征在于:所述创建安全类库步骤中,所述构建安全包具体包括以下步骤:
打包类,将源码中文件相关的类进行打包,放在沙箱代码的目录下;
创建文件,在沙箱代码中创建文件的路径,在安全包下创建文件,并继承对应文件中的类;
重写方法,重写在沙箱代码的安全包的类中的部分方法,并调用所述JNI层接口。
5.如权利要求1所述的移动终端安全运行空间的构建方法,其特征在于:所述创建类加载器步骤中,所述自定义类加载器继承PathClassLoader或DexClassLoader或所述自定义类加载器对应的父类。
6.一种电子设备,其特征在于包括:处理器;
存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于执行权利要求1-5任意一项所述的方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行如权利要求1-5任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811469793.6A CN109784039B (zh) | 2018-11-28 | 2018-11-28 | 移动终端安全运行空间的构建方法、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811469793.6A CN109784039B (zh) | 2018-11-28 | 2018-11-28 | 移动终端安全运行空间的构建方法、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109784039A CN109784039A (zh) | 2019-05-21 |
CN109784039B true CN109784039B (zh) | 2022-04-19 |
Family
ID=66496585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811469793.6A Active CN109784039B (zh) | 2018-11-28 | 2018-11-28 | 移动终端安全运行空间的构建方法、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109784039B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100620B (zh) * | 2020-09-04 | 2024-02-06 | 百度在线网络技术(北京)有限公司 | 代码安全检测方法、装置、设备和可读存储介质 |
CN112148313B (zh) * | 2020-09-21 | 2022-05-20 | 厦门芯鸽信息科技有限公司 | 一种在沙箱中同时运行多个同名应用的方法、介质和设备 |
CN112966301A (zh) * | 2021-03-05 | 2021-06-15 | 深圳市联软科技股份有限公司 | 免人工改造的业务应用文件管理系统、读写及打开方法 |
CN117234622B (zh) * | 2023-11-16 | 2024-02-27 | 中国电子科技集团公司第十五研究所 | 一种多语言运行库按需调用方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8375377B2 (en) * | 2009-03-06 | 2013-02-12 | International Business Machines Corporation | Controlling java virtual machine component behavior on a per-classloader basis |
CN105045642A (zh) * | 2015-08-31 | 2015-11-11 | 北京金山安全软件有限公司 | 一种自定义类的加载方法及装置 |
CN105893839A (zh) * | 2016-06-20 | 2016-08-24 | 北京奇虎科技有限公司 | 一种安卓应用的广播的代理处理方法和装置 |
CN108491216A (zh) * | 2018-03-05 | 2018-09-04 | 北京指掌易科技有限公司 | 一种Android系统无感知应用安装升级的方法 |
-
2018
- 2018-11-28 CN CN201811469793.6A patent/CN109784039B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8375377B2 (en) * | 2009-03-06 | 2013-02-12 | International Business Machines Corporation | Controlling java virtual machine component behavior on a per-classloader basis |
CN105045642A (zh) * | 2015-08-31 | 2015-11-11 | 北京金山安全软件有限公司 | 一种自定义类的加载方法及装置 |
CN105893839A (zh) * | 2016-06-20 | 2016-08-24 | 北京奇虎科技有限公司 | 一种安卓应用的广播的代理处理方法和装置 |
CN108491216A (zh) * | 2018-03-05 | 2018-09-04 | 北京指掌易科技有限公司 | 一种Android系统无感知应用安装升级的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109784039A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Priebe et al. | SGX-LKL: Securing the host OS interface for trusted execution | |
CN109784039B (zh) | 移动终端安全运行空间的构建方法、电子设备、存储介质 | |
US10171502B2 (en) | Managed applications | |
CN111400757B (zh) | 防止安卓第三方库中native代码泄露用户隐私的方法 | |
US11861364B2 (en) | Circular shadow stack in audit mode | |
US20210109870A1 (en) | Isolating memory within trusted execution environments | |
US20150277941A1 (en) | Method and system for linking to shared library | |
US11709931B2 (en) | Shadow stack violation enforcement at module granularity | |
US9137333B1 (en) | Method and system for adding plug-in functionality to virtualized applications | |
US10223526B2 (en) | Generating packages for managed applications | |
CN107636667B (zh) | 在设备中创建多个工作空间的系统及方法 | |
US11500981B2 (en) | Shadow stack enforcement range for dynamic code | |
CN108985096B (zh) | 一种Android SQLite数据库安全增强、安全操作方法以及装置 | |
CN113835748B (zh) | 基于html5的应用程序的打包方法、系统和可读介质 | |
US11604669B2 (en) | Single use execution environment for on-demand code execution | |
Rastogi et al. | Towards least privilege containers with cimplifier | |
WO2018023368A1 (en) | Enhanced security using scripting language-based hypervisor | |
US11882123B2 (en) | Kernel level application data protection | |
WO2022265762A1 (en) | Circular shadow stack in audit mode | |
CN117708850A (zh) | 数据加密方法、数据获取方法、装置和电子设备 | |
Nam et al. | Interface Module for Emulator-Based Web Application Execution Engine | |
Han et al. | Protecting Android applications with multiple DEX files against Static Reverse Engineering Attacks Kyeonghwan Lim1, Nak Young Kim1, Younsik Jeong1, Seong-je Cho1 | |
CN117193769A (zh) | 页面渲染方法及装置、电子设备和计算机可读存储介质 | |
Liang et al. | Eadroid: Providing environment adaptive security for android system | |
Monperrus | Automatically Securing Permission-Based Software by Reducing the Attack Surface: An Application to Android |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |