SELinux与Android系统安全机制解析
一、SELinux的复杂性与最佳实践
SELinux是一种复杂的安全机制,可被视为通用的“元编程策略语言”。在像Linux这样复杂的操作系统中,我们需要对允许发生的交互进行编程,而这些交互本身往往也很复杂。就像使用编程语言时,不同的风格和方法会产生不同的结果,SELinux也是如此,我们可以用一种执行机制完成某些任务,但使用另一种机制可能会更合适。
在设计SELinux策略时,我们需要像编写程序一样,先明确安全需求,理解要防范的威胁模型。一个设计良好的SELinux策略应能满足这些目标,并且易于扩展。合理运用基于用户的访问控制(UBAC)、基于角色的访问控制(RBAC)、类型强制(TE)和多级安全(MLS)的组合,有助于实现这些需求和设计目标。
二、Android的独特性与安全模型
2.1 Android的独特之处
尽管Android基于我们熟悉的Linux内核构建,但它拥有完全定制的用户空间。其许多功能是对GNU同类功能的重写,有些功能是全新的,或者与桌面版本有显著差异。因此,为了支持SELinux,这些系统需要进行修改。
2.2 Android的安全模型
Android的核心安全模型基于Linux的自主访问控制(DAC),包括能力机制。不过,Android以一种非传统的方式使用Linux的用户ID(UID)和组ID(GID)概念。系统中的每个进程都有自己的UID,而不是启动它的用户的UID,这些UID通常是唯一的,用于实现沙箱化和进程隔离。但在某些情况下,进程可以共享UID和GID,通常是因为它们需要相同的系统权限并共享数据。
超级会员免费看
订阅专栏 解锁全文
2588

被折叠的 条评论
为什么被折叠?



