Android 系统的安全性分析(2)--Android的安全模型介绍
声明
- 最近工作上涉及到对Android系统安全性的改造,在改造之前先分析整理下目前Android系统自身的安全性;
- 参考了一些文章及书籍,在这里大部分是对别人描述的提炼,我挑出一些对我有用的内容整理;
0 写在前面的
Android 安全模型同样利用了 Linux 内核提供的安全特性。Linux是一个多用户的操作系统,内核可以把用户资源相互隔离,就像它隔离进程一样。在 Linux 系统内,一个用户不能访问另一用户的文件(除非有明确的授权),并且除非对应的可执行文件的 set-user-ID或set-group-ID 位(SUID 和SGID)被设置,那么每个进程使用启动它的用户身份运行(用户和组ID,通常指UID和 GID)。
Android利用了这个用户隔离机制,但与传统的桌面或服务器版的Linux系统有所不同。在传统 Linux 系统中,一个UID 可以给登录系统并通过shell 执行命令的物理用户,也可以给在后台执行的系统服务(也称为守护进程,因为系统守护进程常常可以通过网络访问,每个守护进程使用专用的UID运行,可以限制某个守护进程被攻击后带来的损失)。Android本来是为智能手机设计的,由于智能手机是私人设备,所以不需要在系统内注册不同的物理用户,物理用户是隐式的,所以UID 被用来区别应用程序。这就构成了Android 应用程序沙箱的基础。
1. 沙箱隔离机制
Sandbox(沙箱)模型,是一种能够保证系统安全的关键安全技术,已经在浏览器等地方得到了成功应用。Android 作为优秀的开源移动平台操作系统,有相应的沙箱模型。通俗来说,沙箱模型就是系统使用重定向技术,将应