1 / 40
文档名称:

SEAndroid安全机制框架分析.doc

格式:doc   大小:2,418KB   页数:40页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

SEAndroid安全机制框架分析.doc

上传人:才艺人生 2024/5/10 文件大小:2.36 MB

下载得到文件列表

SEAndroid安全机制框架分析.doc

相关文档

文档介绍

文档介绍:该【SEAndroid安全机制框架分析 】是由【才艺人生】上传分享,文档一共【40】页,该文档可以免费在线阅读,需要了解更多关于【SEAndroid安全机制框架分析 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。SEAndroid安全机制框架分析SEAndroid安全机制框架分析SEAndroid安全机制所要保护的对象是系统中的资源,这些资源分布在各个子系统中,例如我们经常接触的文件就是分布文件子系统中的。实际上,系统中需要保护的资源非常多,除了前面说的文件之外,还有进程、socket和IPC等等。对于Android系统来说,由于使用了与传统Linux系统不一样的用户空间运行时,即应用程序运行时框架,因此它在用户空间有一些特有的资源是需要特别保护的,例如系统属性的设置。接下来,我们就通过图1来观察SEAndroid安全机制的整体框架,如下所示:。系统在启动的时候,用户空间的SecurityServer需要将这些安全访问策略加载内核空间的SELinuxLSM模块中去。这是通过SELinux文件系统接口实现的。。SEAndroid的安全访问策略就是在资源的安全上下文基础上实现的。,另一方面也需要到内核空间去操作对象的安全上下文。。用户空间的SecurityServer访问内核空间的SELinuxLSM模块时,都是间接地通过selinux进行的。这样可以将对SELinux文件系统接口的读写操作封装成更有意义的函数调用。,同样也是通过selinux库来进行的。接下来,我们就从内核空间和用户空间两个角度来分析SEAndroid安全机制框架。,存在一个SELinuxLSM模块,这个模块包含有一个访问向量缓冲(AccessVectorCache)和一个安全服务(SecurityServer)。SecurityServer负责安全访问控制逻辑,即由它来决定一个主体访问一个客体是否是合法的。这里说的主体一般就是指进程,而客体就是主体要访问的资源,例如文件。与SELinuxSecurityServer相关的一个内核子模块是LSM,全称是LinuxSecurityModel。LSM可以说是为了SELinux而设计的,但是它是一个通用的安全模块,SELinux可以使用,其它的模块也同样可以使用。这体现了Linux内核模块的一个重要设计思想,只提供机制实现而不提供策略实现。在我们这个例子中,LSM实现的就是机制,而SELinux就是在这套机制下的一个策略实现。也就是说,你也可以通过LSM来实现自己的一套MAC安全机制。SELinux、LSM和内核中的子系统是如何交互的呢?首先,SELinux会在LSM中注册相应的回调函数。其次,LSM会在相应的内核对象子系统中会加入一些Hook代码。例如,我们调用系统接口read函数来读取一个文件的时候,就会进入到内核的文件子系统中。在文件子系统中负责读取文件函数vfs_read就会调用LSM加入的Hook代码。这些Hook代码就会调用之前SELinux注册进来的回调函数,以便后者可以进行安全检查。SELinux在进行安全检查的时候,essVectorCache是否已经有结果。如果有的话,就直接将结果返回给相应的内核子系统就可以了。如果没有的话,就需要到SecurityServer中去进行检查。检查出来的结果在返回给相应的内核子系统的同时,essVectorCache中,以便下次可以快速地得到检查结果。上面描述的安全访问控制流程可以通过图2来总结,如下所示:从图2可以看到,内核中的资源在访问的过程中,一般需要获得三次检查通过:,例如访问的对象是否存在、访问参数是否正确等。,即基于LinuxUID/GID的安全检查。,即基于安全上下文和安全策略的安全检查。,SEAndroid包含有三个主要的模块,分别是安全上下文(SecurityContext)、安全策略(SEAndroidPolicy)和安全服务(SecurityServer)。接下来我们就分别对它们进行描述。。这种安全策略又是建立在对象的安全上下文的基础上的。这里所说的对象分为两种类型,一种称主体(Subject),一种称为客体(Object)。主体通常就是指进程,而客观就是指进程所要访问的资源,例如文件、系统属性等。安全上下文实际上就是一个附加在对象上的标签(Tag)。这个标签实际上就是一个字符串,它由四部分内容组成,分别是SELinux用户、SELinux角色、类型、安全级别,每一个部分都通过一个冒号来分隔,格式为“user:role:type:sensitivity”。例如,在开启了SEAndroid安全机制的设备上执行带-Z选项的ls命令,就可以看到一个文件的安全上下文:上面的命令列出文件/“u:object_r:rootfs:s0”,这表明文件/、SELinux角色、类型和安全级别分别为u、object_r、rootfs和s0。又如,在开启了SEAndroid安全机制的设备上执行带-Z选项的ps命令,就可以看到一个进程的安全上下文:上面的命令列出进程init的安全上下文为“u:r:init:s0”,这表明进程init的SELinux用户、SELinux角色、类型和安全级别分别为u、r、init和s0。