摘 要: 随着Android系统在各移动终端中的广泛应用,系统的安全尤为重要。从Android平台架构及存在的安全隐患出发,分析了Android平台的安全机制,提出了更有效的安全解决方案。
关键词: Android;安全机制;安全隐患;解决方案
0 引言
随着移动终端的广泛应用,Android操作系统走入人们的生活,成为众多操作系统中最受欢迎的操作系统,由于Android是一个开放的系统,在给人们提供便利的同时,也产生了许多安全隐患,故系统的安全尤为重要。本文从Android平台架构及存在的安全隐患出发,分析了Android平台的安全机制,提出了更有效的安全解决方案。
1 Android平台架构
Android是一种应用于便携设备的操作系统,它是基于Linux的开放系统。其系统框架采用了分层的形式,从下至上分为4个部分:Linux内核层、系统运行库层、应用程序框架层和应用程序层[1]。Android系统结构图如图1所示。
(1)Linux内核层:处于最底层,其基于Linux内核,主要功能是为Android系统提供如管理进程、内存、安全、驱动和网络等核心系统服务。
(2)系统运行库层:是Linux内核层和应用程序框架层的中间层,它包括功能丰富的C/C++库和Android Runtime[2]。Android Runtime是Android应用程序运行环境,所有Android应用程序运行在彼此独立的Dalvik虚拟机上[3],Dalvik虚拟机对应用程序起到保护作用,使之免受破坏。
(3)应用程序框架层:程序员可以快速地在此层进行应用程序的开发。因为它提供了应用程序的API框架,并提供了程序数据共享及调用机制。
(4)应用程序层:是与用户交互层,Android系统提供一系列采用Java语言编写的应用程序,例如:浏览器、日历、电子邮件、地图、SMS等,方便用户下载使用。
2 Android平台安全隐患
Android是一个开放的系统,提供免费开放的源代码,共任何人使用,这样就给攻击者可乘之机,他们可以很容易修改源代码或找到源代码的漏洞,从而恶意攻击系统。下面列举几个常见的安全隐患。
2.1 恶意软件侵入
目前,Android系统安全的主要威胁是恶意软件的侵入[4]。恶意软件种类繁多,如:扣费类软件、Rom内置软件、消耗流量软件及隐私窃取类软件等。它们的入侵方式多种多样,可以通过发送短/彩信、拨打电话、蓝牙、WiFi、Internet网络连接等实现。
2.2 系统Root权限的非法获取
Android系统安全的重大威胁是Root权限的非法获取。攻击者通过系统漏洞或刷机等,获得系统的Root权限(即最高管理员权限),这样就可以方便地对系统数据和文件进行任意的修改。
2.3 用户安全意识薄弱
用户在自己安装应用软件时,对恶意程序无法辨别,安全意识薄弱,任意下载安装,给恶意程序提供了可乘之机。同时,用户为更轻松、方便地使用手机,往往主动选择Root手机,这样也会造成病毒侵入、数据暴露和系统不稳定等。
3 Android安全机制分析
由于Android是一个开放的系统,因此要求有更强的安全机制加以保障。Android继承了原有的Linux安全机制,同时对其加以创新,设计了特有的Android安全机制,这样大大提高了Android系统的安全性。
3.1 Linux安全机制
3.1.1 POSIX User
各应用程序在移动设备上安装时,Android系统会给每个应用程序一个ID,并且这个ID是唯一的,应用程序在各自的进程中运行。这样,每个应用程序就形成一个沙箱,防止应用程序对系统的其他资源或别的程序产生恶意行为。因此,在没有明确授权的情况下,不允许对其他资源访问。例如,程序1若要获取程序2的短信、电话功能等数据就会遭到拒绝。
3.1.2 文件访问权限控制
文件访问管理源于Linux权限机制[5]。各文件访问与用户ID、所在组号及Read/Write/RWX三个向量组密切相关。每个文件拥有各自的ID,不被其他程序访问(设为全局或拥有共同ID的除外)。同时,系统镜像挂载设为只读。配置文件及重要程序置于Firmware中,在系统初始化中加载;程序数据及用户置于数据分区中;进而对文件访问实现合理控制。
3.2 Android特有的安全机制
3.2.1 应用程序权限机制
安全机制中权限机制是核心[6]。各应用程序只能在各自的权限中运行来获得权限内的资源,不能访问权限以外的其他内容。包管理器在程序安装中赋予其权限,应用程序框架层在程序运行时对其进行权限控制。Android的权限控制有100多种,例如收发信息、拨打电话、蓝牙、网络访问等。权限的获得必须在安装时申请,Android通过用户交互和签名检查给予权限。应用程序只有获得权限后方能执行其他操作。此外,可以配置防护等级属性,其可以决定权限被授权的几种情况。
3.2.2 组件封装
对应用程序实行组件封装,通过“exporter”属性定义,实现组件内容是否被程序访问的操作。若“exporter”属性设置为否,则该组件只能被本身(或具有同一ID)程序访问;否则能被其他程序访问或调用。
3.2.3 程序签名
Android系统中,所有的应用程序必须有数字签名,没有数字签名的程序安装时会遭到拒绝。数字签名通常作为标识开发者或升级程序的依据。应用程序的数字签名可以是自签名的,也可以是第三方机构授权的。
3.3 其他保护机制
除Linux安全机制及Android特有安全机制外,系统的硬件、语言、手机载体等技术环境也实施了一些安全机制。例如,MMU(内存管理单元)保证各进程访问自己的内存空间,限制了特权提升;强制类型安全语言的应用,阻止了变量的不当或错误的使用;移动设备安全中引用AAA系统,实现认证、审计和授权的操作。
4 安全解决方案
尽管Android系统本身具有强大的安全机制,但也很难保证系统的绝对安全。结合Android系统存在的安全隐患及安全机制中的不足,提出以下几个安全解决方案。
4.1 恶意软件检测系统的完善
目前,恶意软件的侵入是Android的主要安全隐患,检测恶意软件是保证安全的重要方面。现有的检测系统主要包括异常检测和特征检测两个方面。特征检测仅能对已存在的恶意软件进行检测,对新的恶意软件则无法检测,当今一些移动终端通常采用此方式。异常检测通过将系统指标参数与恶意软件产生的系统指标参数进行对比,进而找出新的恶意软件,此检测方式极具实际意义。故对恶意软件检测系统的不断完善势在必行。
4.2 加强Android自身安全建设
Android系统即使安全性很高,也难免存在漏洞,故要不断加强系统自身安全建设(如数据加密、远程管理、邮件过滤等),不断推出强化安全套件,以提高系统的安全性。
4.3 提高终端用户的安全意识
再安全的系统,也必然存在漏洞,这就需要用户提高各自的安全意识(如安装安全保护软件,对不必要软件进行卸载,减少蓝牙、GPS及WiFi的使用,程序下载到安全的应用程序商店等),以达到安全的目的。
5 结论
Android系统是当前最为流行的开放式操作系统,被广泛应用到各移动终端中,这就对系统安全提出了更高的要求。只有不断加强自身安全机制建设,不断对恶意软件检测系统进行完善,不断提高用户的安全意识,以及综合运用各种安全手段,Android系统才能越来越安全地为人们提供服务。
参考文献
[1] Android. A new Android market for phones[EB/OL]. (2010-11-03)[2011-07-01].http://www. android.com.
[2] ENCK W, ONGTANG M, MCDANIEL P. Understanding Android security[J]. IEEE Security and Privacy, 2009,7(01):50-57.
[3] 蒋绍林,王金双,张涛,等.Android安全研究综述[J].计算机应用与软件,2012(10):205-210.
[4] 李凡.Android系统安全机制的分析与增强[D].武汉:华中科技大学,2012.
[5] 廖明华,郑力明.Android安全机制分析与解决方案初探[J].科学技术与工程,2011,11(26):6350-6355.
[6] 宋杰,党李成,郭振朝,等.Android OS手机平台的安全机制分析和应用研究[J].计算机技术与发展,2010,20(06):152-155.