SEAndroid实现机理

来源:互联网 发布:山东烟台正浩网络 编辑:程序博客网 时间:2024/06/16 12:45
SEAndroid是Google在Android 4.4上正式推出的一套以SELinux为基础于核心的系统安全机制。而SELinux则是由美国NSA(国安局)和一些公司(RedHat、Tresys)设计的一个针对Linux的安全加强系统。
NSA最初设计的安全模型叫FLASK,全称为Flux Advanced Security Kernel(由Uta大学和美国国防部开发,后来由NSA将其开源),当时这套模型针对DTOS系统。后来,NSA觉得linux更具发展和普及前景,所以就在Linux系统上重新实现了FLASK,称之为SELinux。

Linux Kernel中,SELinux通过Linux Security Modules实现。在2.6之前,SElinux通过Patch方式发布。从2.6开始,SELinux正式入驻内核,成为标配。

由于Linux有多种发行版本,所以各家的SELinux表现形式也略有区别。具体到android平台,Google对其进行了一定得修改,从而得到SEAndroid。

SELINUX出现之前

SELinux出现之前,Linux上的安全模型叫DAC,全称是Discretionary Access Control,翻译为自主访问控制。DAC的核心思想很简单,就是:
进程理论上所拥有的权限与执行它的用户的权限相同。比如,以root用户启动Browser,那么Browser就有root用户的权限,在Linux系统上能干任何事情。
显然,DAC太过宽松了,所以各路高手想方设法都要在Android系统上搞到root权限。那么SELinux如何解决这个问题呢?原来,它在DAC之外,设计了一个新的安全模型,叫MAC(Mandatory Access Control),翻译为强制访问控制。MAC的处世哲学非常简单:即任何进程想在SELinux系统中干任何事情,都必须先在安全策略配置文件中赋予权限。凡是没有出现在安全策略配置文件中的权限,进程就没有该权限。

目前理解

查询了一些网上的文档,很多都有翻译的感觉,概念讲解起来比较生涩。等后面有了新的理解之后再来填充。

相关资源

不过,由于selinux的实现内容很多,一时还难以掌握,暂时将查到的相关资源列在这里。

深入理解SELinux SEAndroid(第一部分) http://blog.csdn.net/innost/article/details/19299937/
深入理解SELinux SEAndroid之二  http://blog.csdn.net/innost/article/details/19641487
深入理解SELinux SEAndroid(最后部分)  http://blog.csdn.net/innost/article/details/19767621

SEAndroid策略介绍1 http://blog.csdn.net/loongembedded/article/details/62231264
SELinux策略语言--客体类别和许可  http://blog.csdn.net/loongembedded/article/details/52823060

原创粉丝点击