首页 > 代码库 > 论文相关笔记2
论文相关笔记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系统架构
(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收录。
论文相关笔记2