本文介绍(security enhancements (se) for android),这里的se全称是security enhanced,seandroid是google在android4.4上正式推出的一套以selinux为核心的系统安全机制。而selinux则是由nsa(美国国安局)在linux社区的帮助下设计的一个针对linux的安全强化系统。
seandroid是在selinux基础上发展起来的。selinux是linux系统中对mac(强制性访问控制)的实现。由于android系统有着独特的用户空间运行时,因此selinux不能完全适用于android系统。为此,nsa(美国国家安全局)同google一起针对android系统。
android 使用seandroid对所有进程强制执行强制访问控制 (mac),甚至包括以 root/超级用户权限运行的进程(linux 功能)。
seandroid安全机制框架
seandroid在架构和机制上与selinux完全一样,考虑到移动设备的特点,所以移植到android上的只是selinux的一个子集。seandroid的安全检查几乎覆盖了所有重要的系统资源,包括域转换,类型转换,进程、内核、文件、目录、设备,app,网络及ipc相关的操作。
接下来,我们就来看一下seandroid安全机制的整体框架,如下所示:
从上面的架构图可以看出来,seandroid安全机制包含用户空间和内核空间两部分,
- 内核空间主要涉及lsm内核安全模块
- 用户空间包括securitycontext,security policy等模块
这些模块的作用和交互如下:
- lsm提供了一种通用的安全框架,允许将安全模型以模块方式载入内核,除了selinux外,linux还支持tomoyo,yama等安全模型
- avc是一个策略缓存,当进程试图访问系统资源的时候,kernel中的安全策略服务将会先在avc中查找策略,如果没有命中,则会到安全服务器中查找,找到了,则权限被缓存,允许访问,如果没找到,则拒绝访问
- securitypolicy描述系统资源的安全访问策略,系统启动时init进程负责把策略文件加载到内核的lsm模块中
- securitycontext描述系统资源的安全上下文,selinux的安全访问策略就是在安全上下文的基础上实现的
- libselinux为用户空间提供了selinux文件系统访问接口