具有安全模块可插拔功能的Android平台构建方法

文档序号:6543157阅读:94来源:国知局
具有安全模块可插拔功能的Android平台构建方法
【专利摘要】本发明公开了一种具有安全模块可插拔功能的Android平台构建方法,该方法首先在原生Android平台四层结构中查找与安全模块特征点相关的所有交汇点;其次,根据交汇点所在位置确定安全模块的类型及存储路径;最后在所有交汇点设置与其所在位置相对应的调用模块,该方法使得安全模块独立于特定的Android平台版本和特定的终端厂商,具有较好的独立性和可替换性。
【专利说明】具有安全模块可插拔功能的Android平台构建方法
【技术领域】
[0001]本发明属于移动智能终端操作系统领域,尤其涉及具有安全模块可插拔功能的Android平台构建方法。
【背景技术】
[0002]在移动智能终端操作系统领域,随着Android平台市场份额的不断攀升和应用领域的不断扩展,各种病毒和恶意软件已开始高度关注Android平台,对Android终端实施安全防护的重要性愈发明显。现有的Android终端安全软件通常以第三方应用程序的方式提供给用户使用,这种利用第三方应用程序对移动智能终端实施安全防护的方式,最大弱点在于安全防护能力先天不足,对于获取root权限的攻击、未知恶意软件攻击的安全防护效果甚微。只有从Android平台操作系统的底层内核到上层应用对移动智能终端进行全方位的深度定制和修改,才能真正保证Android平台的安全可信。
[0003]目前,基于原生Android平台添加安全功能的常规流程为:直接修改特定版本的原生Android平台源代码,将安全功能的源代码添加到Android平台源代码中,编译源代码完成后,由终端厂商发布集成安全功能的Android平台,安全功能与Android平台紧密耦合。这种方法的缺点为:第一、Android平台是一个不断更新和不断完善的生态系统,自2007年底推出Android 1.0版本后,已发布十几个版本,目前的最新版本为Android 4.1版本,基于原生Android平台添加安全功能模块需要考虑不同Android版本之间的兼容问题,而众所周知,在多个Android版本之间进行源代码移植的工作量非常庞大;第二、Android平台是一个开源、开放平台,终端硬件厂商可以基于特定版本的原生Android平台添加修改自己的特色功能后形成一个定制版本,这就造成Android平台版本的分裂,而将安全功能模块在众多厂商的Android版本之间进行源代码移植的工作量也非常庞大;第三、不带安全功能模块的Android基础版本和安全功能模块不由同一个厂商开发,在进行功能集成时,需要获取对方的源代码,而交换源代码是个棘手和敏感的问题,容易造成合作障碍;而且,厂商之间的频繁交互,也会大大增加开发成本。
[0004]另外,Android平台是一个架构良好的层次化软硬件平台,可以分为四层:最上层为应用程序层,由操作系统厂商和第三方开发人员提供多种功能的应用程序;第二层为应用框架层,提供应用程序运行的Java层框架及基础服务模块;第三层为系统运行库层,提供系统库和Android运行时库;最底层为Linux内核层,提供基础的操作系统内核驱动和硬件驱动。

【发明内容】

[0005]本发明解决的技术问题为提供一种具有安全模块可插拔功能的Android平台构
建方法。
[0006]为解决上述技术问题,本发明一种具有安全模块可插拔功能的Android平台构建方法,具体包括以下步骤: 步骤1、在原生Android平台四层结构中查找与安全模块特征点相关的所有交汇点;步骤2、根据交汇点所在位置确定安全模块的类型及存储路径;a当交汇点在应用程序层时,将安全模块编译成APK的文件,其存放路径为Android平台的/system/app目录;
b当交汇点在应用框架层时,将安全模块编译成Jar文件,存放路径不限制;c当交汇点在系统运行库层时,将安全模块编译成ELF文件、脚本文件或.so文件,其存放路径为Android平台的/system/lib目录;
d当交汇点在Linux内核层时,将安全模块编译成LKM模块,存放路径不限制;
步骤3、在所有交汇点设置与其所在位置相对应的调用模块;
A、当交汇点位于应用程序层时,该调用模块的实现方式为通过Intent/Broadcast调用Activity来实现,该调用模块所调用的安全模块为安全模块APK文件;
B、当交汇点位于应用框架层时,该调用模块的实现方式为直接加载步骤2中b已知存放路径下的安全模块Jar包来实现,该调用模块所调用的安全模块为安全模块Jar包;
C、当交汇点位于系统运行库层时,该调用模块的实现方式为通过在路径/etc/init.rc中添加对安全模块ELF程序、so库或者脚本文件的调用来实现,该调用模块所调用的安全模块为安全模块ELF程序、so库或者脚本文件;
D、当交汇点位于Linux内核层时,该调用模块的实现方式为通过insmod命令加载步骤2中d绝对路径下的LKM模块到Linux内核中来实现,该调用模块所调用的安全模块为LKM模块;
步骤4、重新编译步骤3修改后Android平台。
[0007]进一步地优选方案,本发明具有安全模块可插拔功能的Android平台构建方法,步骤I中所述安全模块的特征点包括访问文件系统、短信接收上报、系统登录、应用程序之间互相访问。
[0008]进一步地优选方案,本发明具有安全模块可插拔功能的Android平台构建方法,该方法中安全模块可插拔的实现步骤具体如下:
安全模块插入调用过程:
将用户选择的执行点作为初始运行点,当运行过程中遇到交汇点时,交汇点处的调用模块执行相应的调用过程,若存在与调用模块相匹配的安全模块则调用并执行该安全模块,否则按原生Android流程继续执行;
安全模块删除过程:
将步骤2中放置到相应目录下的安全模块删除;再次执行安全模块的相应功能,该功能执行到交汇点时,调用方找不到相应的安全模块,继续执行原生Android平台流程。
[0009]进一步地优选方案,本发明具有安全模块可插拔功能的Android平台构建方法中,所述安全模块包括数据存储保护、增强用户认证、强制访问控制、细粒度权限控制、密码服务、特殊短信处理。
[0010]本发明与现有技术相比具有以下显著的优点:(I)本发明中安全功能以安全模块的形式构建,安全模块独立于特定的Android平台版本和特定的终端厂商,具有较好的独立性和可替换性;(2)本发明简化了开发安全模块时对Android平台的耦合依赖,大大减轻了开发人员的负担;(3)终端厂商可根据安全需求插拔不同的安全模块,以达到不同的安全防护目的;(4)安全模块的插拔不影响Android平台的运行。
【专利附图】

【附图说明】
[0011]图1为Android平台中交汇点、调用模块以及安全模块三者结构示意图;
图2为实施例细粒度权限控制安全模块在Android平台进行插拔过程流程图。
【具体实施方式】
[0012]—种具有安全模块可插拔功能的Android平台构建方法,具体包括以下步骤: 步骤1、如图1所示,在原生Android平台四层结构中查找与安全模块特征点相关的所
有交汇点;所述安全模块的特征点包括访问文件系统、短信接收上报、系统登录、应用程序之间互相访问;
步骤2、根据交汇点所在位置确定安全模块的类型及存储路径,所述安全模块包括数据存储保护、增强用户认证、强制访问控制、细粒度权限控制、密码服务、特殊短信处理;
a当交汇点在应用程序层时,使用Google提供的Android应用程序编译工具ADT(Android Development Tools)配合Eclipse将安全模块编译成APK的文件,其存放路径为Android 平台的 /system/app 目录;
b当交汇点在应用框架层时,使用Java编译工具例如JDK6.0将安全模块编译成Jar文件,存放路径不限制;
c当交汇点在系统运行库层时,根据源语言的类型选择编译工具,将安全模块编译成ELF文件、脚本文件或.so文件,其存放路径为Android平台的/system/lib目录;
d当交汇点在Linux内核层时,使用C/C++编译工具GCC将安全模块编译成LKM模块,存放路径不限制;
步骤3、在所有交汇点设置与其所在位置相对应的调用模块;
A、当交汇点位于应用程序层时,该调用模块的实现方式为通过Intent/Broadcast调用Activity来实现,该调用模块所调用的安全模块为安全模块APK文件;
B、当交汇点位于应用框架层时,该调用模块的实现方式为使用PathClassLoader直接加载步骤2中b已知存放路径下的安全模块Jar包来实现,该调用模块所调用的安全模块为安全模块Jar包;
C、当交汇点位于系统运行库层时,该调用模块的实现方式为通过在路径/etc/init.rc中添加对安全模块ELF程序、so库或者脚本文件的调用来实现,该调用模块所调用的安全模块为安全模块ELF程序、so库或者脚本文件;
D、当交汇点位于Linux内核层时,该调用模块的实现方式为通过insmod命令加载步骤2中d绝对路径下的LKM模块到Linux内核中来实现,该调用模块所调用的安全模块为LKM模块;
步骤4、重新编译步骤3修改后Android平台。
[0013]其中,安全模块可插拔的实现步骤具体如下:
安全模块插入调用过程:
将用户选择的执行点作为初始运行点,当运行过程中遇到交汇点时,交汇点处的调用模块执行相应的调用过程,若存在与调用模块相匹配的安全模块则调用并执行该安全模块,否则按原生Android流程继续执行;
安全模块删除过程:
将步骤2中放置到相应目录下的安全模块删除;再次执行安全模块的相应功能,该功能执行到交汇点时,调用方找不到相应的安全模块,继续执行原生Android平台流程。
实施例
[0014]现以细粒度权限控制安全模块为例,具有细粒度权限控制安全模块可插拔功能的Android平台构建方法,具体实现过程如下:
细粒度权限控制安全模块可以实现单个应用程序的危险权限和多个应用程序组合的危险权限的控制。
[0015]步骤I原生Android平台四层结构中与细粒度权限控制安全模块特征点相关的交汇点为 ActivityManagerService 的 checkPermission 方法,如图 2 所不。Android应用框架层提供了一套授权机制,当应用程序访问资源时,会进行权限检查,只有被授权的操作才被允许继续运行。权限检查的位置为系统服务ActivityManagerService的checkPermission方法。细粒度权限控制安全模块在这个方法进行拦截,传入的参数有:访问主体应用程序的uid、需要检查的权限permission、访问客体应用程序的uid,返回的结果为是否允许该次访问操作;
步骤2设计并实现细粒度权限控制安全模块。如图2所示,细粒度权限控制安全模块的功能为判断已运行的存在通信关联的多个应用程序之间是否有危险权限组合,应用程序获取与该组件通信的其他应用程序名称,并分别更新该应用程序和与之通信的其他应用程序的运行权限列表,判断该应用程序和与之通信的其他应用程序的运行权限列表中是否存在应用程序危险权限组合列表,若存在则提醒用户该应用程序存在安全隐患,弹出提示框提醒用户,让用户决定是否继续运行,如果用户选择是,则继续运行该应用程序;如果用户选择否,则停止运行;
步骤3细粒度权限控制安全模块可插拔的实现步骤具体如下:
细粒度权限控制安全模块插入调用过程:
细粒度权限控制安全模块jar包名称为sec_authority.jar,放置于手机/system/framework 目录,当 Android 平台运行至 ActivityManagerService 的 checkPermission 方法时,使用 PathClassLoader 加载 sec_authority.jar,实例化 sec_authority.jar 的访问接口类,获取其引用mPermissionManager。执行mPermissionManager的检查危险权限方法。
[0016]细粒度权限控制安全模块删除过程:
细粒度权限控制安全模块/system/framework/sec_authority.jar文件删除;当 Android 平台运行至 ActivityManagerService 的 checkPermission 方法时,PathClassLoader无法加载sec_authority.jar文件,调用方找不到相应的安全模块,继续执行原生Andro i d平台流程。
【权利要求】
1.一种具有安全模块可插拔功能的Android平台构建方法,其特征在于, 该方法包括以下步骤: 步骤1、在原生Android平台四层结构中查找与安全模块特征点相关的所有 交汇点; 步骤2、根据交汇点所在位置确定安全模块的类型及存储路径;a当交汇点在应用程序层时,将安全模块编译成APK的文件,其存放路径为Android平台的/system/app目录; b当交汇点在应用框架层时,将安全模块编译成Jar文件,存放路径不限制;c当交汇点在系统运行库层时,将安全模块编译成ELF文件、脚本文件或.so文件,其存放路径为Android平台的/system/lib目录; d当交汇点在Linux内核层时,将安全模块编译成LKM模块,存放路径不限制; 步骤3、在所有交汇点设置与其所在位置相对应的调用模块; A、当交汇点位于应用程序层时,该调用模块的实现方式为通过Intent/Broadcast调用Activity来实现,该调用模块所调用的安全模块为安全模块APK文件; B、当交汇点位于应用框架层时,该调用模块的实现方式为直接加载步骤2中b已知存放路径下的安全模块Jar包来实现,该调用模块所调用的安全模块为安全模块Jar包; C、当交汇点位于系统运行库层时,该调用模块的实现方式为通过在路径/etc/init.rc中添加对安全模块ELF程序、so库或者脚本文件的调用来实现,该调用模块所调用的安全模块为安全模块ELF程序、so库或者脚本文件; D、当交汇点位于Linux内核层时,该调用模块的实现方式为通过insmod命令加载步骤2中d绝对路径下的LKM模块到Linux内核中来实现,该调用模块所调用的安全模块为LKM模块; 步骤4、重新编译步骤3修改后Android平台。
2.根据权利要求1所述具有安全模块可插拔功能的Android平台构建方法,其特征在于,步骤I中所述安全模块的特征点包括访问文件系统、短信接收上报、系统登录、应用程序之间互相访问。
3.根据权利要求1所述具有安全模块可插拔功能的Android平台构建方法,其特征在于,该方法中安全模块可插拔的实现步骤具体如下: 安全模块插入调用过程: 将用户选择的执行点作为初始运行点,当运行过程中遇到交汇点时,交汇点处的调用模块执行相应的调用过程,若存在与调用模块相匹配的安全模块则调用并执行该安全模块,否则按原生Android流程继续执行; 安全模块删除过程: 将步骤2中放置到相应目录下的安全模块删除;再次执行安全模块的相应功能,该功能执行到交汇点时,调用方找不到相应的安全模块,继续执行原生Android平台流程。
4.根据权利要求1或2所述具有安全模块可插拔功能的Android平台构建方法,其特征在于,所述安全模块包括数据存储保护、增强用户认证、强制访问控制、细粒度权限控制、密码服务、特殊短信处理。
【文档编号】G06F21/74GK103885784SQ201410138727
【公开日】2014年6月25日 申请日期:2014年4月9日 优先权日:2014年4月9日
【发明者】张涛, 赵敏, 陈融, 王金双, 袁志坚 申请人:中国人民解放军理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1