第3章:Android系统的安全机制


Android安全机制 = Linux操作系统的内核安全机制基础(应用程序的进程间安全与应用程序与操作系统之间的安全)+Android进程沙箱隔离+Android独有的内存管理和进程通信



3.1.1  Android的安全机制模型


(1)内存管理

Android共享内存机制Ashmem,Linux低内存管理OOM机制


(2)权限声明

显示声明权限,名称,权限组,保护级别?。

不同级别的权限的的认证方式不同:

Normal级的权限:申请即可用

Dangerous级:安装时用户确认后可用

Signature与Signaturesystem级:必须系统用户


(3)应用程序签名

APK必须被开发者数字签名,同一个开发者可以指定不同的 应用程序共享UID,运行在同一个进程空间以实现资源共享


(4)访问控制

基于Linux访问控制机制


(5)进程沙箱隔离

应用程序安装时被赋予UID,根据UID不同的应用程序隔离


(6)进程通信

Android采用Binder机制,共享内存的实现进程通信。Binder基于CS模式,使用AIDL接口描述语言定义接口,交换数据。确保进程间通信的数据不会越界和影响进程空间。



3.1.2  Android具有的权限

Android手机所有者权限
Androidroot权限
Android应用程序权限


3.3沙箱模型

3.3.1  Java中的沙箱模型

为了确保Java技术不会被恶意目的所利用,Java设计了一套精密的安全模型:即安全管理器Security Manager

1,不能运行任何本地可执行程序

2,不能从本地计算机文件系统中读取任何信息,也不能向本地计算机文件系统写入信息

3,只能查看java版本信息等少数信息,无法获取用户名和email

4,远程加载的程序不能与除下载程序所在的服务器之外的任何主机通信(源主机originating host)。确保用户不会被代码探查到内部网络资源(JAVA SE6中可通过用户允许)

3.3.2  Android系统中的沙箱机制

Linux中,一个用户ID识别一个给定用户

Andorid中,一个用户ID识别一个应用程序,应用程序安装时分配唯一ID,被限制在各自的沙箱内互不干扰,隔离。


沙箱中的android应用程序访问资源:

1)声明适当的manifest权限

2)在同一进程中运行与其他受信任的应用程序,从而共享对其数据和代码的访问。


3.4.2  发布签名机制

 在开发Android应用程序时,开发者都必须对发布的程序设置数字签名,也就是使用私有密钥数字签署一个给定的应用程序

1,识别出代码的作者,

2,检测应用程序是否发生了改变。

3,应用程序具有相同的数字签名以共享代码和数据


3.5  分区加载机制

1,系统分区

只读分区,操作系统内核,系统函数库,实时运行框架Runtime?,应用框架,系统应用程序

2,Cache分区   目录分区

/system/app  :存放系统自带应用程序apk

/system/lib   :存放系统库文件

/system/bin和/system/xbin   :存放系统管理命令    可执行程序:dalvikvm,dex2oat……

/system/framework    :存放Android系统应用框架的jar文件


3,数据分区

存储各类用户数据与应用程序

/data/data   :保存所有APK程序数据。每个APK对应自己的data目录,只能访问自己Package名字一样的目录,不能访问其他apk的目录。

/data/app   :保存用户安装的APK

/data/system : 保存package.xml package.list 和appwidgets.xml文件,用于记录安装的软件信息

/data/misc   :保存wifi账号和VPN设置


4,SD卡分区


3.5  分区加载机制

猜你喜欢

转载自blog.csdn.net/zero9988/article/details/51318841