李琳 李青岩
集美大学 福建 361021
智能手机的普及和大量增长的应用程序正使得移动设备成为人民生活中的一部分,根据Gartner公布的数据仅2012年第四季度全球总共销售智能手机就超过 2亿部,并预计2013年将超过10亿部。开放源码手机平台,特别是Android的出现,是智能手机大量增长的主要原因。市场报告显示2012年末 Android的市场占有率高达 69.7%,大量基于Android的手机应用和服务也被开发出来供用户使用。然而当智能手机不再是单纯提供通话功能的设备,而是要面对很多应用服务时,就不可避免遇到越来越多的安全问题。为了享受一些定制服务,智能手机必须提供一些个人隐私信息,比如位置信息、社交网络信息和通信信息等等,而这往往是恶意程序的攻击重点。另一方面,源码的开放性也是吸引恶意程序开发者的重要原因。总的来说,智能手机安全问题正成为用户关注的重点。本文首先介绍Android系统的安全机制并列出其固有缺陷,然后提出一些关于Android安全模型的设计准则以达到实际使用的安全需要。
Android已成为移动设备中最普及的开源平台,其体系架构可以分为4层 (图1)。最底层为Linux内核,主要包括硬件驱动,内存、进程和电源管理等。再上一层由各种功能库,核心库及Dalvik虚拟机组成,再往上一层是应用程序框架层主要提供各种API接口,最顶层是应用程序层,包含了一系列预置的程序和用户安装程序。
图1 Android系统架构图
(1) 沙箱机制
Android使用沙箱机制来实现应用程序之间的分离和权限控制,从而允许或拒绝应用程序访问设备的资源,比如说文件和目录、网络、传感器和API。为此,Android基于Linux内核,通过进程级别的安全性、与应用程序相关的用户和组ID以及权限,实现应用程序被允许执行的操作。在Android上,一个用户 ID识别一个应用程序,应用程序在安装时被分配用户ID,应用程序在设备上的存续期间内,用户ID保持不变。
Android用沙箱来分离每个应用程序,因此要求应用程序必须明确定义要共享的资源和数据。应用程序通过声明来获取它们所需要但基本沙箱所不具备的额外能力。Android没有运行时授权机制,所以应用程序必须静态地声明它们所需要的权限,并且Android系统会在安装应用程序时,提示用户是否同意赋予权限。
(2) 应用程序签名
每个Android应用程序都必须被签名。通过私有密钥以数字证书的形式签署一个即将发布的应用程序,从而识别代码的作者;检测应用程序是否被修改;在应用程序之间建立信任。通过信任关系,应用程序可以安全地共享代码和数据,使用相同数字签名签署的两个应用程序可以相互授予权限来访问基于签名的API,如果它们共享用户ID,那么也可以运行在同一进程中,从而允许访问对方的代码和数据。
(3) 使用权限
权限作为Android平台的一种安全机制,旨在允许或限制应用程序访问受限的 API 和资源。默认情况下,Android应用程序没有被授予权限,通过不允许它们访问设备上的受保护API或资源,确保了数据的安全。权限在安装期间通过manifest文件由应用程序请求,由用户授予或不授予。
Android是开放源码的,这导致其没有 CA根证书的支持,每个开发者都可以用自己生成的数字证书给应用程序签名后然后发布到应用商店。这使得很难排除不可信的应用程序,从而让用户容易受到安全威胁。目前国内众多应用商店缺乏安全审核以及监管机制,已经成为Android安全隐患的重灾区。
一些程序特别是社交网络应用往往会声明对一些私密信息的访问,比如联系人、短信、位置以及音视频信息,但Android目前的安全机制很难保证应用程序不会滥用这些信息,并且一旦应用程序安装时被授权,就能在用户毫不知情的情况下无限制地访问这些信息。
Android平台的开源使得开发者能深度修改并发布定制的ROM,并在这些ROM中包含恶意程序,比如植入扣费软件,或反编译流行的软件和游戏,加入恶意代码然后重新封装发布。
机密性,完整性和可靠性是智能手机中最迫切的三个安全特性,而智能手机的大规模使用以及企业级应用程序的部署,更使得人们对手机的安全性要求日益提高。下面我们针对当前智能手机架构,提出四点提升安全性能的必要措施和建议。
目前智能手机最大的安全问题是缺乏一种让用户为应用程序指定细粒度访问权限的机制。应用程序框架应当能够指定详细的运行权限,从而限制应用程序对敏感信息的访问,比如应当允许用户不必卸载程序也能限制应用程序访问某些特定信息,这就要求应用程序框架提供接口使得除了在安装程序时授予权限之外,在程序运行时也能通过某些机制(如类似UCON)授予权限。
由于安全机制的先天不足使得针对Android恶意软件层出不穷。当将来对Android应用程序框架修改时,研究人员应当重点考虑防范恶意程序绕过安全机制而被安装到用户的系统中。应用程序框架要做到能验证应用程序是否被篡改,同时能在合法程序被一个相似但包含木马的恶意程序取代时保护信息不被窃取。这个安全机制可以通过引入硬件芯片如可信任安全平台模组TPM或者移动信任模块MTM来实现,从而验证应用程序提供商的合法性。
智能手机的应用程序框架应当能分离出机密和非机密信息,并使得用户能方便地设置某些信息为机密。由于机密信息往往成为恶意软件和手机木马的目标,同时考虑到移动设备的运算能力和续航能力,以及对外置存储卡的保密要求,采用快速加密的方式是保护机密信息的一种有效方法。另外,隔离机密和非机密信息也有利于商务需求,用户可以将企业信息设置为机密信息并设置较高的安全级别。
尽管Android存在上述的安全隐患,但使用Android智能手机的用户仍大量增长,这使得当考虑提升Android的安全性能时,为了获得更广泛的支持,必须尽量减少兼容成本。否则当新的安全机制推出时,用户会因为太复杂而拒绝使用,从而依然处于安全隐患中。同时由于Android的开发源码策略,这些提升安全性能的相关修改也必须确保是开源的,才能有利新安全机制的推广。
由于存在巨大经济利益的诱惑,针对智能手机的恶意软件数量不断增长,攻击技术和隐蔽手段也在不断发展。攻击者利用 Android安全机制的缺陷进行恶意软件的开发和封装,使得用户受到越来越多的安全威胁。本文先分析了Android系统的安全机制,然后指出这种安全模型,特别是在应用程序权限分配机制的不足之处。最后为了促进可扩展并能被广泛接收的智能手机安全模型的设计和发展,我们提出了四项作为必需条件的措施和建议。
[1]Gartner.“Gartner Says Worldwide Mobile Phone Sales Declined 1.7 Percent in 2012”.http://www.gartner.com/newsroom/id/2335616.
[2]Brahler S.Analysis of the Android Architecture[J].Karlsruhe institute for technology.2010.
[3]Park J, Sandhu R.The UCON ABC usage control model[J].ACM Transactions on Information and System Security (TISSEC).2004.
[4]Bugiel S, Davi L, Dmitrienko A, et al.Towards taming privilege-escalation attacks on Android[C]//19th Annual Network& Distributed System Security Symposium (NDSS).2012.
[5]Ekberg J E.Mobile trusted module (MTM)--an introduction[J].2007.