2、Android安全机制分析(2011《第26次全国计算机安全学术交流会论文集》)数据库
1.综述编程
2007年11月5日,Google牵头的开放手机联盟(Open Handset Alliance)发布第一款彻底开源的移动设备综合平台——Android。数组
2008年9月22日,T-Mobile USA发布第一款基于Android平台的智能手机——T-Mobile G1。浏览器
2010年11月,业界首次公开了一种针对Android自带浏览器的攻击代码。安全
2.Android系统架构cookie
(1)Android为移动设备而生,基于Linux内核,由操做系统、中间件、应用程序运行时和核心应用程序组成。网络
(2)Android系统架构图以下:架构
图中看出Android分为4层,从高到低分别为应用程序层、应用程序框架层、Android本地库及运行环境层和Linux内核层。框架
3.Android安全机制编程语言
在Android安全机制中,既有传统的Linux安全机制,也有Delvik虚拟机的相关安全机制。同时,Google还设计了Android特有的安全机制。以下图:
(1)POSIX User
每一个应用程序(.apk)安装时,Android会赋予该应用程序惟一的ID。所以,每一个应用程序都运行于不一样的进程。这样,系统为每一个程序创建一个沙箱,无论应用程序是被激发或调用,它始终运行在属于本身的进程中,拥有固定的权限。
(2)文件访问控制
Android中的文件访问控制来源于Linux权限控制机制。每一个文件访问权限都与其拥有者、所属组号和读写执行三个向量组共同控制。文件在建立时将被赋予不一样应用程序ID,从而不能被其余应用程序访问,除非它们拥有相同ID或文件被设置为全局可读写。
另外一个加强安全的设计——将系统镜像挂载为只读。全部重要的可执行程序和配置文件位于固件(Firmware),只有在系统初始化中加载。全部的用户和程序数据都存储在数据分区。数据分区有别于系统分区,是在系统运行中有效的存储和加载用户数据。并且,党Android系统处于“安全模式”时,数据分区的数据不会加载,从而能够对系统进行有效的恢复管理。
(3)内存管理单元
一个现代操做系统的必要条件,是内存管理单元——对进程分配不一样的虚拟内存空间的硬件设备。进程只能访问自身分配的内存空间,而不能访问其余进程所占用的内存空间。所以,进程的权限提高的可能性受到限制,由于其不能运行在系统特权级内存空间。
(4)强制类型安全
类型安全是编程语言的一个特性,它强制变量在赋值时必须符合其声明的类型,从而阻止变量被错误或不恰当地使用。
缓冲区溢出攻击一般由类型转化错误或缺乏边界检查而形成。
Android使用强制类型Java语言,Java语言依靠三种机制达到类型安全:编译期间的类型检查、自动的存储管理和数组的边界检查。
(5)移动设备安全
Android安全机制中引用AAA原则——认证(Authentication)、受权(Authorization)和审计(Accounting)。
Android借鉴智能手机典型安全特性,认证和受权过程由SIM卡及其协议完成,SIM卡中一般保存使用者的密钥。
(6)应用程序权限控制
Android应用程序安全的核心机制是权限控制。应用程序必须在系统给予的权限中运行,不得访问未被赋予权限的其余任何内容。
程序安装时由包管理器赋予权限,运行时由应用程序框架层执行权限控制。Android大约有一百多种行为或服务的权限控制(打电话、发短信、访问互联网等)。
(7)组件封装
经过组件封装,应用程序的内容能被其余程序访问。
(8)签名机制
Android中每一个程序都被打包成apk格式以便安装。Android要求全部应用程序都通过数字签名认证。签名文件一般是Android确认不一样应用程序是否来自同源开发者的依据。
4.Android安全隐患分析
对Android移动设备的攻击进行分类:基于硬件的攻击、基于Linux内核的攻击、基于系统核心程序的攻击和基于应用程序的攻击。
(1)基于硬件的攻击
因为硬件的通用性和拥有系统最高权限,且在使用过程当中难以被升级和维护,是的基于硬件的攻击危害更大。
移动设备中,SD卡和SIM卡均能脱离移动设备而单独使用。在安全机制设计中,辨识这些卡的正常使用和丢失状态下的恶意使用,从而不致使隐私泄露。
(2)基于Linux内核的攻击
Linux每一年都有近百个漏洞被CVE收录。网络攻击中利用内核漏洞,将得到系统最高权限。因为Linux内核是高可配置性,而移动设备资源有限,每每会禁用一些内核选项用以下降内存资源消耗,这其中就包括了安全配置选项。如G1手机中禁用审计模块支持、禁用SYN cookie支持(可下降SYN洪泛攻击)等。在不一样的移动设备上使用的内核配置能够定制,如为了加强安全性可使用SELinux模块。
(3)基于系统核心程序的攻击
系统核心程序包括系统本地库、Dalvik Java虚拟机和基础的Java类库。系统库主要包括各类底层函数和复杂计算函数等,被系统进程或Dalvik经过JNI(Java Native Interface)调用。这些函数用C/C++编写,而缺乏强制类型安全机制。同时,Dalvik进程在经过JNI调用系统函数发生错误时会致使Dalvik进程的崩溃,从而可致使内存空间呗侵占或恶意代码被执行。Dalvik是全部应用程序的运行环境,其安全性将影响全部应用程序。
现金被发现的Android系统库的漏洞主要集中于定制的SQLight、WebKit和新加入的库。因为能获取较高权限,且核心程序为开源代码,这将使得该类攻击得到更多攻击者的青睐。
(4)基于应用程序的攻击
应用程序包括Android系统自带和用户自行安装的应用程序。用户自行安装的应用程序来源多样,没法验证可靠性,使得针对应用程序的攻击时最容易的攻击手段。恶意程序经过伪造签名,得到更高的权限。如今互联网中流行的针对浏览器的攻击,如跨站脚本、URL编码、社会工程等,还有针对SQLight数据库的SQL注入攻击,必将在移动互联网中被利用。该类方法的多样性和简易性,使应用程序成为黑客光顾的重灾区。同时,因为黑色产业链的存在,也使得基于应用程序的攻击更具备商业价值,如恶意扣费、流量访问等。
5.总结
曾经流行的Windows Mobile、Symbian等都在应用中爆发大量的安全漏洞和被发现众多恶意软件。攻防演绎是个呈双螺旋增加的过程,Android在快速发展中,也将不可避免出现大量针对其的攻击行为和恶意软件。