1roid系统背景
1.1roid安全机制与缺陷roid安全机制主要体现在隔离机制和权限机制上,具体涉及Linux内核层安全和roid框架层安全。roid是基于Linux内核的,Linux为每个程序分配一个固定的UID(useridentification),Linux内核保证每个UID对应的应用只在自己的进程和数据空间内运行。框架层则实现应用级的强制访问控制(MatoryAccessControl,MAC),系统定义了一系列安全操作相关权限标签,应用需要在配置文件(roidManifest.xml)中利用这些标签声明自己所需的权限,当用户授权后,该应用下属所有组件将会继承应用声明的所有权限。roid通过集成Linux内核的安全机制实现系统安全,同时通过自身的权限机制实现数据安全,但随着安全环境日益复杂,仅依靠原生安全机制远远不够,而且原生安全机制尚有缺陷,尤其是权限管理方面还存在以下不足:1)“AllOrNone“粗粒度应用授权模式:用户安装应用过程中,要么同意所有权限的申请,要么拒绝所有权限申请,无法使用该应用的任何功能。2)权限分配不能动态配置:应用的所有权限都在安装时检查并授予,所以资源的访问不能实现动态配置,用户唯一去掉已授权权限的方法就是卸载该应用。例如在参加一个机密会议,用户应该可以禁止应用访问摄像头、话筒、定位等资源,原生的权限机制无法做到这点。
1.2进程间通信roid系统中,不同进程之间不能共享内存,包管理服务(PackageManagerService)和应用层应用属于2个不同的进程,因此需要采用了远程过程调用方式来实现不同进程之间数据通信。与很多其他的基于远程过程调用协议(remoteprocedurecallprotocol,RPC)的解决方案类似[14],roid通过接口定义语言AIDL(roidinterfacedefinitionlanguage)实现跨进程访问服务[15]。DroidDefence由扩展的权限审核机制和应用层客户端程序组成。包管理服务把当前权限请求信息传给应用层,客户端获取用户配置的权限信息后,进行下一步的权限检测。其中包管理服务与应用的通信由AIDL服务完成,具体来说,应用层为服务端,包管理服务作为客户端,在服务端定义一个接口并实现,在客户端只要有相应接口就能使用服务端接口实现的方法。服务端提供的接口为getQueryAnswer(StringperName,intUID),客户端可以像调用本地方法一样调用这个接口,获得扩展的权限审核的返回值,这个过程是同步的。
1.3众包技术近期众包技术已经被成功运用到互联网架构的诸多系统。众包系统使全世界每个人都能广泛参与到复杂问题的决策中。最近,作为最流行的地图应用,谷歌地图通过收集分析成千上万的司机手机中的GPS信息,从而在应用中提供实时路况信息。通过移动终端的众包技术可以获取大量用户信息,帮助用户决策。Agarwal等[16]研发了PMP系统(ProtextMyPrivacy)。iOS系统中不同的应用会有不同的权限请求,当请求涉及用户隐私时,用户会慎重许可权限以保护隐私。PMP则系统通过由众多用户贡献自身保护决定,生成针对于具体应用的众包推荐引擎,提供应用程序特定的隐私权的建议。受此启发,DroidDefence在用户许可情况下,在云端收集应用权限分配情况,经过数据分析反馈给用户,从而使用户更了解自身系统安全状况。
2DroidDefence
DroidDefence在原有roid系统的安全机制(包括沙箱隔离机制和权限机制)基础上进行扩展,尽量减少对源码的改动,与原生系统兼容,通过细粒度动态权限管理对系统进行安全加固。考虑到移动设备资源有限性,系统的客户端程序采用高效的轻量级算法,辅以友好的操作界面,将复杂数据计算放在云端,以较低能耗提升用户手机系统安全。
2.1DroidDefence架构DroidDefence整体架构如图1所示,要包括权限配置,权限管理和权限策略3个模块。权限配置模块是部署在移动端的应用程序,用户可以查看应用与隐私相关的权限,如读取联系人,读取位置信息等权限等,并对这些权限进行个性化的设置,如设置成允许、提示、禁止,从而实现对应用权限动态的细粒度地管理。权限管理模块负责应用程序权限的审核和验证。任意应用程序涉及权限检查操作,都首先进入roid原有的权限审核机制(箭头1),再通过API拦截(箭头2),进入用户自定义权限检测模块。DroidDefence提取用户对该程序的权限设置(箭头3),对比申请的权限进行权限审核并将结果反馈给系统(箭头4),审核通过的应用才有权利使用隐私数据(箭头5)。权限策略模块保存了用户对应用程序权限的个性化设置。对某个特定的权限,用户有允许,提示和禁止3种选择。DroidDefence将用户的设置以XML格式文件形式保存在内存中,扩展的权限审核阶段,系统提取用户配置作为权限审核依据。应用程序在进行与隐私相关的操作时,若用户设置为“允许”或“禁止”,系统会相应允许或禁止对敏感资源的使用;当用户设置为“提示”时,将弹出提示窗口,用户点击会进入权限设置界面,引导用户完成权限的设置。
2.2具体实现系统最关键的部分就是根据用户权限配置对应用程序权限进行审核。系统通过对框架层包管理服务中的审核函数(checkUidPermission)进行扩展实现API拦截,引导向用户自定义扩展的权限审核模块。只有当审核函数返回同意(PERMISSION_GRANTED)时,应用程序才可以访问相关资源,否则,审核函数返回拒绝(PERMISSION_DINIED),禁止资源访问并提醒用户该应用不具有相应权限。目前系统只对应用程序权限中涉及隐私信息的若干个权限进行过滤,用户可以个性化配置应用程序中包含的这些权限,包括,读取联系人,读取(发送)短信,拨打电话,获取精确(模糊位置信息),读取通话记录的权限。所有应用程序发出的隐私数据操作请求都会被权限系统监听[17],经由扩展权限审核机制,将结果反馈给用户。
3实验验证
DroidDefence基于roid4.0源码修改实现,扩展后的源码按照roid官方文档中的说明编译成可在模拟器上运行的镜像。为了保证实验环境的普遍性,采用roidSDK官方模拟器作为实验平台,实验分别对比模拟器装载原生roid4.0镜像和扩展后的roid4.0镜像的功能和性能差别。为便于表述,分别简称为扩展前和扩展后。
3.1功能测试系统客户端主界面如图2所示。在权限管理页面,用户可以选择任意用户软件或系统软件进行配置。测试样例为roid恶意软件基因库计划中Geinimi手机木马变种的程序Universalroot。作为一款Root应用程序,对精确位置权限请求是多余的甚至是可疑的,所以将改程序读取精确位置权限设置为“拒绝”。程序再次运行,系统将按照用户配置的条件进行权限审核。DroidDefence拒绝对精确位置权限使用的请求,防止了隐私数据的泄露。DroidDefence收集近900个应用程序权限信息,绘制出常用权限所占所有程序百分比,如图4所示。其中,获取网络状态和电话状态2个权限使用最多,分别占到16%和13%,存在着被滥用的危险,用户通过反馈能更了解当前应用市场中权限分配情况。同时,根据Enck[11]基于权限匹配规则的移动安全认证的规则,一旦遇到对用户造成安全威胁的权限组合,系统将对用户进行提醒,如PHONE_STATE、RECORD_AUDIO和INTERNET3个权限组合代表用户有可能被窃听录音并通过网络发送到非法地址的潜在危险。
3.2性能测试性能测试部分,采用横向(同一系统不同压力测试)和纵向(同环境下,扩展前后系统比较)测试相结合,利用测试软件和自行设计测试方案方式,比较系统扩展前后性能。测试保证运行环境相同的情况下,重复读取联系人信息,设定次数,分别记录记录100次、200次、300次直到1000次读取,记录第一次读取前和最后一次读取后的总耗时。针对原生系统、扩展后的系统授予读取联系人权限(简称扩展有读权限)、扩展后的roid系统不授予该测试应用读取联系人权限(简称扩展无读权限)3个系统进行测试,取平均消耗时间,从而实现不同系统的纵向对比和同系统中的横向对比。
3种测试环境下,消耗的时间都是线性增长的,也就是说平均一次的消耗时间是保持不变的;扩展后设置为允许读取联系人的系统,确实是比原生roid系统消耗的时间多,但是实际上这样的差值是可以忽略不计的,平均一次的消耗时间差值是此外,借助谷歌应用市场roid系统性能测试软件Nbench,对扩展前后系统的CPU、内存、I/O输入输出性能进行测试。如表1所示,2个系统测试得分基本相同,系统能耗在一定范围内。总的来说,从测试结果来看,扩展后的系统与原生系统相比性能消耗甚微,很好地达到模型的预期效果。
4总结
针对现有roid系统在应用权限管理机制上的缺陷,提出细粒度的roid应用权限管理系统DroidDefence。该系统对现有roid权限管理机制扩展,能够在保证现有系统安全性的前提下,允许用户动态、细粒度管理系统中已安装应用的权限,与同类权限扩展系统系统相比,系统创新性地采用众包技术收集处理用户应用权限信息,并给予安全反馈。实验结果显示,其轻量级的部署完全能适应在移动终端使用,通过roid平台性能测试的性能测试软件对原生系统和扩展后系统测试结果表明,系统能以较小能效消耗,主动保护隐私信息,增强系统的安全性能。虽然系统在权限管理方面利用已有的众包系统平台,借助机器学习数据挖掘等数据分析技术对恶意软件进行检测分析。
作者:王少辉 王超 孙国梓 单位:南京邮电大学 计算机学院