seandroid安全机制框架分析

seandroid安全机制框架分析

ID:20971615

大小:618.50 KB

页数:21页

时间:2018-10-18

seandroid安全机制框架分析_第1页
seandroid安全机制框架分析_第2页
seandroid安全机制框架分析_第3页
seandroid安全机制框架分析_第4页
seandroid安全机制框架分析_第5页
资源描述:

《seandroid安全机制框架分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、WORD文档下载可编辑SEAndroid安全机制框架分析SEAndroid安全机制所要保护的对象是系统中的资源,这些资源分布在各个子系统中,例如我们经常接触的文件就是分布文件子系统中的。实际上,系统中需要保护的资源非常多,除了前面说的文件之外,还有进程、socket和IPC等等。对于Android系统来说,由于使用了与传统Linux系统不一样的用户空间运行时,即应用程序运行时框架,因此它在用户空间有一些特有的资源是需要特别保护的,例如系统属性的设置。接下来,我们就通过图1来观察SEAndroid安全机制的整体框架,如

2、下所示:从图1可以看到,以SELinux文件系统接口为边界,SEAndroid安全机制包含有内核空间和用户空间两部分支持。在内核空间,主要涉及到一个称为SELinuxLSM的模块。而在用户空间中,涉及到SecurityContext、SecurityServer和SEAndroidPolicy等模块。这些内核空间模块和用户空间模块的作用以及交互如下所示:1.内核空间的SELinuxLSM模块负责内核资源的安全访问控制。专业技术资料分享WORD文档下载可编辑2.用户空间的SEAndroidPolicy描述的是资源安全访

3、问策略。系统在启动的时候,用户空间的SecurityServer需要将这些安全访问策略加载内核空间的SELinuxLSM模块中去。这是通过SELinux文件系统接口实现的。3.用户空间的SecurityContext描述的是资源安全上下文。SEAndroid的安全访问策略就是在资源的安全上下文基础上实现的。4.用户空间的SecurityServer一方面需要到用户空间的SecurityContext去检索对象的安全上下文,另一方面也需要到内核空间去操作对象的安全上下文。5.用户空间的selinux库封装了对SELin

4、ux文件系统接口的读写操作。用户空间的SecurityServer访问内核空间的SELinuxLSM模块时,都是间接地通过selinux进行的。这样可以将对SELinux文件系统接口的读写操作封装成更有意义的函数调用。6.用户空间的SecurityServer到用户空间的SecurityContext去检索对象的安全上下文时,同样也是通过selinux库来进行的。接下来,我们就从内核空间和用户空间两个角度来分析SEAndroid安全机制框架。一.内核空间在内核空间中,存在一个SELinuxLSM模块,这个模块包含有一

5、个访问向量缓冲(AccessVectorCache)和一个安全服务(SecurityServer)。SecurityServer负责安全访问控制逻辑,即由它来决定一个主体访问一个客体是否是合法的。这里说的主体一般就是指进程,而客体就是主体要访问的资源,例如文件。与SELinuxSecurityServer相关的一个内核子模块是LSM,全称是LinuxSecurityModel。LSM可以说是为了SELinux而设计的,但是它是一个通用的安全模块,SELinux可以使用,其它的模块也同样可以使用。这体现了Linux内核

6、模块的一个重要设计思想,只提供机制实现而不提供策略实现。在我们这个例子中,LSM实现的就是机制,而SELinux就是在这套机制下的一个策略实现。也就是说,你也可以通过LSM来实现自己的一套MAC安全机制。SELinux、LSM和内核中的子系统是如何交互的呢?首先,SELinux会在LSM中注册相应的回调函数。其次,LSM会在相应的内核对象子系统中会加入一些Hook代码。例如,我们调用系统接口read函数来读取一个文件的时候,就会进入到内核的文件子系统中。在文件子系统中负责读取文件函数vfs_read就会调用LSM加入

7、的Hook代码。这些Hook代码就会调用之前SELinux注册进来的回调函数,以便后者可以进行安全检查。专业技术资料分享WORD文档下载可编辑SELinux在进行安全检查的时候,首先是看一下自己的AccessVectorCache是否已经有结果。如果有的话,就直接将结果返回给相应的内核子系统就可以了。如果没有的话,就需要到SecurityServer中去进行检查。检查出来的结果在返回给相应的内核子系统的同时,也会保存在自己的AccessVectorCache中,以便下次可以快速地得到检查结果。上面描述的安全访问控制流

8、程可以通过图2来总结,如下所示:从图2可以看到,内核中的资源在访问的过程中,一般需要获得三次检查通过:1.一般性错误检查,例如访问的对象是否存在、访问参数是否正确等。2.DAC检查,即基于LinuxUID/GID的安全检查。3.SELinux检查,即基于安全上下文和安全策略的安全检查。二.用户空间专业技术资料分享WORD文档下载可编辑在用户空间

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。