Android权限模型的研究和改进

2013-07-03 02:35:20黄景全陈铁民孔德智李倩
电子产品可靠性与环境试验 2013年3期
关键词:开发人员开发者应用程序

黄景全,陈铁民,孔德智,李倩

(1.长沙市贺龙体育运动学校,湖南 长沙 410151;2.湖南移动有限公司永州分公司,湖南 永州 425000;3.工业和信息化部电子第五研究所,广东 广州 510610)

0 引言

访问控制列表(ACL)和基于权限的安全模型让管理员和操作系统可以对特定资源的访问进行限制。在实践中,设计和配置ACL(尤其是那些有大量的配置参数的列表)是一个复杂的任务。也就是说,须兼顾新手和专家的时候,要想达到详细的权限和系统的可用性并不是一件简单的事情。

虽然有许多系统的使用权限模型,但我们注重的是Android OS的权限模型的分析。 Android使用ACL调解进程间通信(IPC)来控制设备上的特殊功能的访问(例如:GPS、接收器、短信和振动等)。Android开发者必须在Androidmenifest.xml中请求许可使用这些特殊功能,在安装时被解析。OS负责允许或拒绝特定的资源在运行时使用。Android所使用的权限模型在Android中有许多优点,可以有效地防止恶意软件,同时也告知用户。

我们对Android权限模型进行分析的主要目标是:

1)研究基于权限模型在Android中的使用;

2)找出当前可以实现的优势和局限性。

1 Android权限模型介绍

1.1 背景

Android是一个基于linux系统而建立的开发平台,目前主要应用于智能手机、平板电脑等终端设备中。Android有很强的安全性,并且致力于解决其它移动操作系统所固有的缺点[1]。Android应用程序使用JAVA语言进行编写,每个程序运行在Dalvik虚拟机上,Dalvik是一个对标准JAVA虚拟机的轻量级的替代。由于Android是在一个虚拟机上运行不同的程序,一个应用程序中的漏洞就有可能影响整个操作系统的安全性能,因此,它所采用的进程隔离机制可以阻止这些问题的发生。

为Android平台所编写的应用程序直接通过应用商店或者开发者自己的网站发布。用户可以直接下载安装这些应用程序,而不需要经过Google的任何审核。这种过程不同于苹果iTunes App Store的机制,在苹果iTunes App Store中,所有的应用程序都必须在到达消费者之前通过审批过程。正因为Android的应用程序并不总是在提交时检查,从而使恶意应用程序的开发人员能够迅速地将他们的应用程序传到最终用户的设备上。出于这个安全问题的考虑,Android平台设计了权限模型,以保护操作系统和用户免受恶意应用程序的攻击。

1.2 Android权限模型概述

Android安全模型的核心是一个基于权限的系统,该系统在默认情况下拒绝访问功能,这样可能会对用户体验、整个系统、或者其它已经导入设备的应用产生负面的影响[2]。这些功能的例子有发送短信或者打电话,这会导致用户进行更多的消费;保持设备屏幕或者访问振动器,这会非常耗费电量;访问用户地址会导致侵犯隐私。

为了使用这些限制功能,Android要求程序开发者必须声明哪些受限制的功能需要在应用程序中被使用[3]。申明一个特定的权限失败将会导致相关的系统调用或者进程间的通信被操作系统拒绝。这些权限控制网络的连接和GPS功能、个人信息、系统硬件和设置,以及一些其它的设备及功能。但是,Android可以让任何第三方应用程序定义新的功能(例如通过一个API),并将这些特定的权限提供给其它应用程序使用。对于这些开发者定义(也被称为自定义)的权限,Android执行调用和被调用的应用程序来匹配这些权限 (被调用者在其清单中进行权限标签的定义,调用者去申请并获得这些权限的许可)以允许IPC的发生[4]。

权限在Android的运行阶段执行,但是在安装的时候必须被用户所允许。当用户在Android中安装一个新的应用的时候,系统会提示他们接受或拒绝应用程序请求的权限[5]。

2 Android权限模型分析

2.1 数据集

在我们的数据中获得了应用程序的标准ZIP或ZIP兼容的Android软件包(APK)。我们用Android Asset Packaging Tool来提取manifest,阅读所有XML实体类型的使用权限。

我们的数据集包含了来自广泛的、不同类型开发者所开发的应用(一千多个),当我们期望这种数据集既有代表性而又有多样性时,选择一个最佳的应用软件标准可能对滤除掉那些写得不好的应用软件或者恶意软件很有用。

虽然我们的分析是特定于训练集合中的一千多种Android应用,但是,我们相信,使用来自每一个类中最流行的50种应用提供了最具代表性的数据集,能够构建基于经验的Android权限模型。

2.2 数据集概况

表1列出了Google Play商店22个类别的应用中每种应用程序所需要的权限的合计数目。第3列展示了在每种类别中权限的平均数目。Communication这种类别是迄今为止62种权限中使用最多的,当然该类也是每个应用程序需要权限数目最多的。Themes这种类别的权限是最少的。

表1 数据集中权限申请总数表

我们的数据中包含119种不同的、所需要的权限,其中31.93%是自定义的权限,剩下的都是android.permission.空间里面定义的权限。根据统计,a.p.INTERNET权限为686种应用所需(约占应用的62.36%)。a.p.RECEIVE_BOOT_COMPLETED,该权限允许启动系统,该权限为63种应用所需(约占总数的5.72%)。

2.3 组件平面分析结论

理解复杂数据中的变量关系是一件很困难的任务。本论文按照组件平面分析方法对这些应用的权限模型进行了分析。

大部分(超过60%)的应用程序都要请求a.p.INTERNET权限。然而不需要请求a.p.INTERNET权限的应用则主要集中在主题等类型的应用中。智能手机的追求是时时刻刻都能与互联网相连接,实现途径是通过不同的连接方式,3G、Wi-Fi和无线蓝牙是运行在Android OS(以及其它智能手机)操作系统上的、并且可以连接到在线服务的3种方式。

我们的分析可以揭示权限间的相互关系。两个特殊的权限也可能是相关的。比如同时需要a.p.ACCESS_COARSE_LOCATION和a.p.ACCESS_FINE_LOCATION。我们相信,被GOOGLE以这种方式划分的位置权限希望开发者对新闻或者天气应用使用不精确的服务,好的位置经常用于导航应用。但是,我们经常发现开发者同时频繁地需要粗糙和精确的位置服务。

除了定位的应用程序,很多应用程序比如工具和消息应用程序大多都通常使用一对权限。例如:WRITE_SMS和READ_SMS权限都经常被同时使用[6]。这意味着应用程序请求短信权限的同时还要求类似权限的设定,即这些权限会在同一个应用程序中使用。此外,我们也观察着其它各种权限对,例如从外部存储器读写和安装卸载快捷方式。应用程序拥有发送和写或者接受和写短信的权限是危险的,因为它使得应用程序在用户不知道的情况下能够拦截或发送短信。

这意味着如果应用程序有请求发送或接受短信息的功能,我们则认为它们有相似的特点。如果仅基于这两组权限而对恶意软件进行分类,就有可能导致误报。

除了小部分的权限是大多数应用程序都需要的,其它许多权限只有少数应用程序有需求。我们相信,这些罕见的权限只是开发人员定义来促进与其它Android应用程序的交互。另一方面,经常被请求的权限,尤其是网络权限其实并不支持频繁的网络权限申请。因此,我们认为a.p.INTERNET未能为资源提供足够精细的细粒度控制。与此相反,开发人员自定义了一些权限,这些权限有效地充当ACL,允许其它应用程序的功能通过新定义的API接入。换句话说,他们提出其它应用程序可以通过请求而非权限的方式与此应用程序交互,也就是指定了应用程序可以请求访问的资源。我们建议,目前的Android权限模型可以通过区分不同类别的互联网接入来改善,同时为开发人员提供了一种指定访问一个控制列表的机制,而无需使用自定义的权限。

基于权限的系统设计是一项具有挑战性的任务,因为系统设计人员必须预见到使用量的大小,才会在他们的系统中定义相应的权限。本文基于真实的高级Android应用程序数据集,分析并确定了开发人员的使用模式;使系统在不同的使用情况下具有高度的可配置性,同时保持较低的复杂度,将是一个持续的工作。了解如何在实践中使用权限模型可以帮助修改模型,以改进当前使用的权限系统。分析表明,在Android系统中,只有少数的权限使用非常频繁,而大量的权限只是偶尔使用。此外,分析显示了几个不常使用的权限之间的相关性。

我们注意到,具有细致度权限的基础权限系统将使用户拥有更细微的控制,它将决定什么样的操作被允许执行。是否有利于提供更好的粒度,取决于许多因素。特定的环境将会增加其复杂性,例如设计师和最终用户的可用性影响。在Android系统中,有太多的权限影响开发人员和最终用户。开发人员需要了解哪些是必须执行操作的权限,确定这些权限往往是不简单的,甚至需要 “专家”。虽然有些感兴趣的开发人员可能会学习110个或更多的权限,理解他们的应用场合。其他开发者可能会选择简单、多请求的功能以确保他们的应用程序正常工作。智能手机用户本身(目前自己没有选择)也积极参与Android权限架构。因此,基于提出的请求权限,他们将允许或拒绝安装应用程序。我们要思考如何以合理的要求让非技术用户配置这些复杂的系统。

3 可能的改进

Android权限模型目前在名称空间中不使用其隐含层次。例如:a.p.SEND_SMS和a.p.WRITE_SMS是两个独立的权限标签,而不被分组;在a.p.SMS.*.Android中,包含一个可选的逻辑权限分组用于显示更容易理解的名称的权限(例如,一个分组读 “服务花销”,而不是a.p.CALL_PHONE)。然而,这个分组,并不允许开发人员层次结构化的定义权限,因为这样将会延长目前的Android定义的权限用于表达更详细的功能。

在Android系统的特殊情况下,权限的层次结构允许一个可扩展的命名约定,将帮助开发人员更准确地选择(唯一)所需的功能。其中一个例子就是一个免费的应用程序,用于显示属于AdMob的广告。目前,开发人员将嵌入广告片段代码,要求获得a.p.INTERNET的权限。此权限允许应用程序通过任何网络检索在世界上的任何服务器的任何数据。一个更精细的分层权限架构可以使开发人员获得 a.p.INTERNET.ADVERTISING(*.admob.com)的权限,这个权限可以限制网络只在静态的HTML中下载AdMob子域的广告。层次性的权限结构可以帮助用户理解为什么一个应用程序需要特定的权限,但更重要的是,可以帮助开发者更好地使用最小特权原则。但这样的修改是不能向后兼容目前所使用的Android操作系统,因此它可能更适合于一种全新的模式来代替。

对Android系统的另一个可能的改进是一些特殊权限,在使用时才给用户以提示。一些普通权限可能会提前显示以提示用户(如目前所做),而对更高级的权限,在使用的时候才给予用户提示。这可以显著地减少呈现给用户个人决定的数目。

4 结束语

我们对于Android的权限模型进行了分析,研究它是如何在实践中应用以便确定它的长处和缺点。我们已经分析了一千多个应用程序,这些应用程序均为位于Android应用商店的TOP50。结果表明,只有少量的权限使用得非常频繁,大量的权限均很少被使用。我们建议对于频繁使用的权限,尤其是a.p.INTERNET,划分为子类别会更有利。相反,极少用的权限可以组合成一个通用的类,比如自定义和互补的权限(如安装和卸载)。对于频繁使用的权限提供良好的粒度性,整合不常用的权限,在不增加复杂度的情况下可以提高权限模型的可用性。

[1]符易阳,周丹平.Android安全机制分析 [C]//第26次全国计算机安全学术交流会论文集,2011.

[2]ENCK W,OCTEAU D,MCDANIEL P,et al.A study of android application security[C]//Proc of the 20th USENIX Security Symposium.Berkeley:USENIX Association,2011.

[3]ENCK W,ONGTANG M,MCDANIEL P.On lightweight mobile phone application certification [C]//Proc of the 16th ACM Conference on Computer and Communications Security.New York:ACM,2009:235-245.

[4]ZHOU Y,WANG Z,ZHOU W,et al.Hey,you,get off my market:detecting malicious apps in alternative android markets[C]//In Proceedings of the 16th Network and Distributed System Security Symposium,2012.

[5]SHIN W,KIYOMOTO S,FUKUSHIMA K,et al.A for-mal model to analyze the permission authorization and enforcement in the Android framework[C]//In Proceedings of the 2010 IEEE Second International Conference on Social Computing,SOCIALCOM'10,2010: 944-951.

[6]孟小华,陈传凯.Android平台手机来电及短信防火墙关键技术研究 [EB/OL].[2012].http://menku.baidu.com/view/04049e14767f5acfce49.html.

猜你喜欢
开发人员开发者应用程序
删除Win10中自带的应用程序
电脑报(2019年12期)2019-09-10 05:08:20
Semtech发布LoRa Basics 以加速物联网应用
16%游戏开发者看好VR
CHIP新电脑(2016年3期)2016-03-10 13:06:42
iOS开发者调查
电脑迷(2015年8期)2015-05-30 12:27:10
iOS开发者调查
电脑迷(2015年4期)2015-05-30 05:24:09
让Windows 10进入开发者模式
电脑迷(2015年12期)2015-04-29 23:22:51
后悔了?教你隐藏开发人员选项
电脑爱好者(2015年6期)2015-04-03 01:20:56
关闭应用程序更新提醒
电脑迷(2012年15期)2012-04-29 17:09:47
安卓开发者之烦恼
三星电子将开设应用程序下载商店