任务为中心的并采用动态授权的安全模型。该模型的思想是:做出授权时不仅仅依赖于主客体关系,还以来与主体执行的任务、任务的状态。在任务执行前授权,一旦任务执行完毕,权限就被收回。AndroidOS的内核是Linux系统,目前流行的Android2.3系统使用的是Linux2.6内核。Linux的访问控制使用的是自主访问控制模型,将文件的访问者分为所有者、同组用户、其他用户三类,权限包括读、写、执行三种,文件的所有者可以分别指定文件对于三种访问者的权限。默认状态下每个应用程序都智能读、写和执行自己的文件,没有读、写和执行属于其他程序的文件的权限。Linux实现了部分安全机制,但仍然是粗颗粒的,无法满足精细的权限控制需要。另一方面,超级用户权限过大,容易导致权限滥用,违背最小特权原则。
2.研究Android操作系统的架构.
Android是Google主导的针对智能移动设备开发的操作系统,基于Linux2.6平台。出于降低开发难度和通用性的考虑,Android采用了
Java作为开发语言,但同时也提供了原生的C语言支持。为了提高执行效率,Android重新设计的基于寄存器的Dalvik虚拟机。并且提供了方便的集成开发环境,开发者可方便的在手机或者模拟器上调试自己开发的程序。由于Android的开源、易于开发移植,今年来发展迅速。Android采用了软件堆层的架构,从下向上分成四层:LinuxKernel层、系统运行库和虚拟机层、应用框架层、应用层。(1)Android是运行于Linux核心只上,但不是GNULinux,Android的核心针对移动设备移除了许多GNULinux的功能并做了相应的修改。LinuxKernel层提供系统的核心服务,例如驱动模块、进程管理、内存管理等。(2)系统运行库指本地C/C++库,包括Bionic,SQLite,WebKit等,提供了Java核心库的大多数功能。另一部分是Dalvik虚拟机,所有的Android程序都运行于Dalvik虚拟机,每个应用运行于一个虚拟机来保证进程的独立性和安全性。(3)应用框架层是专门为应用程序开发而设计的,提供了一个完整的API框架。它由一系列的服务和系统构成,包括一套扩展性很强的Views、ContentProviders、ActivityManager等内容。(4)应用层包括Android系统中所有系统、第三方的应用程序。包括短信管理、联系人管理、地图、微博等应用。这些应用以下层为基础使用Java语言实现。
3.研究Android应用程序的权限控制策略.
Android系统源于Linux2.6系统,自然继承了Linux2.6的控制策略,但又根据手机平台的特性做了适当调整。在Android中用户ID用于识别应用程序。应用在安装时分配到一个用户ID,在应用程序存在与设备上的期间用户ID不变。以Linux的访问控制为基础,每个
应用程序都智能读、写和执行自己的文件,并不能读、写和执行其他程序的文件。Android系统用沙盒机制保证程序的独立性和进行访问控制,默认情况下,程序没有访问系统资源的权限,比如写SD卡、使用
网络、发送短信等权限,当程序试图访问时系统会拒绝请求并返回权限不足的提示。Android操作系统定义了很多中权限来控制应用对相应资源的访问,程序可以在manifest文件中静态的请求权限,这些请求将在程序安装时展示给用户,如果用户批准的话程序获得请求的权限直到从手机中卸载。程序获得访问权限后将可以在不通知用户的情况下使用这些权限。Android这样的访问控制仍有不少的缺陷。从Linux集成来的文件访问策略还是会有超级用户权限过大的问题,恶意程序可以利用系统漏洞得到超级用户权限进而可以在系统中肆意妄为。Android应用层的权限控制存在控制粒度粗,灵活性比较差,以至于无法满足安全控制的需求。Android系统通过应用程序的签名来追踪代码作者、判断程序是