操作系统访问控制机制研究

2022-11-10 09:02李志鹏宋连涛
信息安全研究 2022年11期
关键词:访问控制完整性内核

王 鹏 秦 莹 高 珑 李志鹏 宋连涛 丁 滟

(国防科技大学计算机学院 长沙 410073)

作为信息时代的核心和基石,操作系统安全的重要性日益凸显.访问控制是当前操作系统最重要的安全机制之一,既能使合法用户获得相应的访问权限,又能阻止非授权访问,在提供高效访问服务的同时保护用户隐私,对于保障个人、企业乃至国家信息安全都具有非常重要的意义[1].

根据访问控制规则制定者的不同,访问控制机制可以分为自主访问控制(discretionary access control, DAC)与强制访问控制(mandatory access control, MAC)2类[2].DAC下资源所有者可以控制其他用户对资源的访问,具有较好的灵活性、可用性和可扩展性.MAC则由系统机制来控制用户对客体的访问,通过一系列的安全策略,由系统(而非某个用户)来确定主体对客体的访问权限,资源所有者不能对访问规则进行改变,因此能够很好地增强系统安全性,并对上层应用程序进行保护.

目前访问控制机制已广泛应用于Windows,Linux等主流操作系统,并逐渐在Android,Harmony等新兴智能终端操作系统安全中发挥作用.Windows系统主要使用访问控制列表对本地客体资源的访问请求进行自主访问控制,通过基于域的动态访问控制对访问控制列表进行补充,对本地和云上的共享资源进行灵活的强制访问控制,并利用强制完整性控制策略来保护系统内资源的完整性不被来自网络的低可信主体破坏.Linux系统提供了更为灵活的访问控制策略,以安全模块的方式提供强制访问控制.以Android为代表的智能终端操作系统面临各种安全威胁,既继承了传统Linux的部分访问控制机制,又结合智能终端特点提出了权限机制,对应用和服务间的交互进行强制访问控制.Harmony是面向万物互联的分布式操作系统,在Android权限机制的基础上,对跨设备访问进行控制.

本文首先对访问控制策略进行介绍,然后详细阐述Windows,Linux,Android等当前主流操作系统中的访问控制机制,最后分析总结操作系统中访问控制机制的未来发展趋势.以期为研究人员在操作系统领域进一步实现访问控制机制的应用和改进提供借鉴.

1 访问控制策略

1.1 访问控制策略定义

安全策略是根据用户机密性、完整性、可用性和可审计性等安全需求对系统预期行为的非形式化描述[3].系统运行时,安全策略将系统状态分为已授权的安全状态和未授权的不安全状态[4],只有不违反安全策略的访问行为才被允许发生.

1.2 访问控制安全策略分类

根据系统安全保护目标的侧重不同,可以将访问控制安全策略分为保密性策略、完整性策略以及混合策略等.下面对各类策略的安全防护功能以及典型策略实现进行介绍.

1.2.1 保密性策略

信息系统中,保密性策略主要用于防止信息的非授权泄露[5].典型的保密性策略安全模型有BLP(Bell-LaPadula)模型[6]、不干扰模型[7]等.

BLP模型为主客体分别设置安全等级和敏感度级别,并针对信息流动制定“上读下写”的访问策略,即只有主体的安全级别高于客体时才能进行读操作,只有主体的安全级别低于客体时才能进行写操作,从而保证信息总是流向更高安全级别的对象.由于该模型过于严格,限制了复杂系统的可用性,因此出现了一系列针对BLP的改进模型:Unix System V/MLS安全模型[8]运用改进标签技术对主客体进行标记,并对BLP的自主访问特性进行改进,增强了强制访问控制的灵活性;不干扰模型引入了不干扰理念[9],将各安全级别用户隔离开,使其操作相互独立,低安全级别用户无法观察到系统中高安全级别用户的输入或输出.

1.2.2 完整性策略

完整性策略主要用于防止信息被非法纂改,保证信息的真实性.典型的完整性策略安全模型有Biba[10],Clark-Wilson[11]等.Biba模型是BLP模型数学模型上的对偶,用来约束对信息的修改,防止数据从低完整性级别流到高完整性级别.Clark-Wilson模型目标是使针对商业系统的建模更切合实际,采用良构事务(well-formal transaction)和职责分离2种机制保证信息完整性.良构事务即以事务处理为基本操作,相关操作必须保护数据完整性.职责分离即将任务分为不同子集,由不同的人完成,共同审核事务并验证数据可信性.

1.2.3 混合策略

实际使用时,几乎所有机构都要求兼顾多种安全策略.因此,产生了中国墙[12]、RBAC[13]、DTE[14]和ABAC[15]等模型.

中国墙模型通常用于股票交易所或投资公司等,信息以树状结构存储,具有利益冲突的企业节点组成一个冲突域,主体不能访问同一冲突域中不同企业节点内的数据.RBAC模型将用户组的概念抽象为“角色”,并基于角色来定义访问权限,其策略中立,支持最小特权原则、动态和静态职责分离原则和数据抽象,便于应用层的安全管理.DTE模型则针对操作系统内部主体与客体之间的访问,是细粒度、面向应用隔离的安全策略.主客体分别被划分到若干个域和类型中,由“域定义表”规定域对各类型的操作权限,“域交互表”描述域间的交互模式,实践中,这2个表快速膨胀,难以验证其安全性.ABAC模型是在移动计算、云计算等新型计算环境下产生的,根据主体、资源、环境等属性的动态变化进行细粒度的控制.

2 主流操作系统访问控制机制

2.1 Windows系统

Windows基于用户的访问控制是在Windows XP多用户功能渐趋完善的背景下产生的,目的是方便多用户资源管理,同时防止用户随意访问系统资源和调用系统服务.强制完整性控制针对联网下载程序文件和用户不当操作的风险,从Windows Vista版本开始建立,使一般用户、程序和在IE保护模式下的下载内容难于修改系统文件.动态访问控制主要为满足用户对云上和本地资源的安全移动跨域访问需要,从Windows 8开始提出,作为访问控制列表的补充,由域控制器对访问请求进行细粒度的强制访问控制.Windows系统中相关访问控制技术如表1所示:

表1 Windows访问控制机制

2.1.1 基于用户的访问控制

为实现单机多用户的文件和系统管理,Windows采用基于用户的访问控制,由操作系统为每个用户(组)分配唯一安全标识符(security identifiers, SID),并在用户身份认证通过后授予其访问令牌.

文件系统中每个安全客体(如文件、目录)创建时都由操作系统分配一个安全描述符,其中的访问控制列表描述了每个用户(组)对该安全客体的访问权限,由安全客体的创建者进行配置.在用户(组)访问时,系统将访问令牌与访问控制列表中的信息进行对照,只有权限信息相符的访问行为才被允许.

系统管理相关操作如装载设备驱动、重设系统时间等,由于无特定操作对象,不能采用访问控制列表进行访问控制,因此提出特权机制.特权由系统管理员为用户(组)分配,权限策略被存储至本地数据库,在用户身份验证成功后加载到访问令牌中,当用户进行系统管理操作时由系统决定是否授权.

2.1.2 强制完整性访问控制

为防止完整性级别低的进程修改级别高的文件或注册表表项,从Windows Vista 和 Windows Server 2008开始在系统中内建了强制完整性控制[16]安全功能.

在强制完整性保护的基础上,Windows系统设计实现了IE浏览器保护模式[17],被IE保护模式自动下载的内容存储在低完整性级别的文件和注册表区域中,不能直接对系统文件和高完整性级别的用户区域进行写访问.

由于强制完整性保护允许读操作[18],Windows 8增强了IE浏览器保护模式,低完整性级别的内容无法对高完整性级别的区域读或写访问,特权访问只有经应用声明并被用户授权才能进行.

2.1.3 基于域的动态访问控制

BYOD(bring your own device)环境下,为满足员工随时随地使用各种智能终端安全访问公司数据和应用程序资源的需求,Windows 8开始引入动态访问控制[19],由管理员通过Windows域控制器为云上资源配置访问权限.Windows域是计算机网络的一种形式,域控制器使用计算机集群技术构建中央数据库,每个安全主体都需要在此处进行注册.Windows Server 2016进一步对域控制功能进行增强,将访问控制对象拓展到本地资源.

如图1所示,动态访问控制的主体和客体在传统访问控制的基础上进行了扩展.主体从单纯的用户扩展到角色及访问设备.角色由管理员设定,访问设备已由单一主机扩展到笔记本电脑、手机、平板甚至可穿戴设备等,因此需要通过域控制器进行统一认证管理.用户可使用Azure Active Directory设备注册服务,将个人设备加入工作区,获得设备标识.该标识一方面作为验证用户身份的主体属性之一,用于设置相应的访问控制规则;另一方面作为单一登录的凭证,提供无缝的第二重身份验证,即在首次输入密码登录成功后,单一登录生存期内(默认情况下为7天)通过设备访问公司云上和本地资源,不再需要输入密码.访问控制客体不再局限于本资源和系统管理.通过资源云部署和混合部署,将部分应用程序和服务托管到云上,同时将其他应用程序和服务托管到本地,使云上数据和应用程序资源被纳入动态访问控制范畴,从而实现了云上、本地客体资源一体化控制.

动态访问控制规则可作用于不同级别,包括部门、任务乃至整个组织等,由管理员利用Active Directory域服务进行集中部署管理,并结合资源敏感度、任务、用户角色、设备配置等属性通过条件表达式实现细粒度的控制,使用户(组)权限随属性动态变化.动态访问控制作为访问控制列表的补充,在发生访问请求时须先满足访问控制列表的访问策略,而后对照动态访问控制规则进行检查.

2.2 Linux系统

Linux访问控制机制主要以安全模块的形式实现,通过采用不同的安全策略满足用户多元化的安全需求.安全模块一般需要通过LSM(Linux security module)通用框架进行加载.目前,已被Linux内核主线接受的访问控制模块主要有SELinux,AppArmor,SMACK,TOMOYO,Yama,这些均可挂载在LSM下,GRSecurity尚未被Linux内核接受,而是以内核补丁的形式发布,如表2所示.下面,首先对LSM框架进行简要介绍,而后对Linux访问控制机制的特点进行总结.

表2 Linux系统安全模块概况

2.2.1 LSM框架

LSM[20-21]是Linux操作系统的访问控制框架,目的是在操作系统中将安全实施与安全决策分离,帮助开发者实现对各类对象的多策略访问控制.其基本思想是在内核中各类访问控制行为发生的地方插入hook函数,当访问发生时,由hook函数将当前的主客体安全信息传递给挂载的安全模块,由安全模块根据自己的安全策略判断是否允许访问.

如图2所示,LSM由对象管理器、安全服务器与安全模块组成.对象管理器分散在内核各安全模块中,负责管理进程、文件等主客体,向安全服务器提交安全决策请求,接收决策结果并作出相应处理;安全服务器接收对象管理器的安全请求,在安全模块中根据请求包含的主客体标记计算访问决策,返回访问决策结果;安全模块用于存储主客体的安全属性,用于在不同策略下计算访问决策.

LSM具有通用、简单高效、兼容性强的特点.支持将各种安全策略作为内核模块加载,在具体实现中不需要对系统进行大的改动,只需在进行检查的位置插入空的hook函数,由开发者根据实际访问控制需求通过系统调用实现.

2.2.2 Linux访问控制机制

SELinux[22]安全模块是首个进入Linux内核主线的安全模块,由于将RBAC模型、DTE模型以及MLS模型等几个典型访问控制策略集成在一起,导致功能非常强大,同时配置策略最复杂,使得该模块下系统管理成本较高.

SMACK[23]的全称为简单强制访问控制内核,与SELinux的高度灵活与复杂的控制形成互补,主要解决手机操作系统等简单安全需求.该模块仅规定了主体对客体的访问控制规则,没有DTE模型复杂的进程安全类型转换等.系统中各对象的安全标记由ASCII码字符串表示,在此基础上定义对象之间的访问控制规则.

TOMOYO[24]能够在分析系统安全缺陷的同时实现访问控制功能.该模块采用的也是简单访问控制策略,但使用了更加直观的基于Path的访问控制规则.此外,TOMOYO为LSM增加了很多hook函数,使LSM访问控制更加全面.

AppArmor[25]主要采用白名单机制,规定允许应用程序进行的动作.基于路径来定义访问控制规则,使对访问控制的理解更加直观.除了传统的文件系统、网络以及进程,还增加了针对占用资源的限制,如对进程所占用的虚拟内存、CPU等方面的限制.针对AppArmor研究的自动配置工具[26]无需管理人员了解进程内部的运行细节,可以根据用户的使用需求来自动学习,生成配置规则.

Yama[27]是目前较简单的安全模块,只用到4个LSM钩子函数,主要是为了弥补目前内核还不能处理的一些系统范围内的DAC安全保护,如ptrace、文件链接等.与SELinux,SMACK,TOMOYO和AppArmor彼此间互斥不同,Yama可以与其他安全模块同时作用.

GRSecurity[28]还没有被纳入内核主线,目前还是以内核补丁集合的形式发布,利用内核的ACL实现了基于角色的访问控制(RBAC).在策略配置方面,GRSecurity提供了自动学习模式,根据目标进程的日常服务流程来学习进程在正常情况下的行为模式,自动生成访问控制规则.尽管GRSecurity还没有被内核主线所接受,但因其出色的安全功能,已经在实际中有了较好的应用.

以上安全机制中,目前比较有影响力的有SELinux,AppArmor和GRSecurity. 3类安全机制各具特点:对于用户来说,GRSecurity由于配置策略自动生成,易用性强,更适用于新用户;AppArmor则具有更易于理解的策略和工具;SELinux则具有强大的访问控制机制,适用于精通操作系统运行机理的高级管理员.

2.3 Android系统

Android是基于Linux内核开发的一款操作系统,提供了多层安全模型实现立体安全防护[29-31].既有对Linux传统访问控制机制的继承和改进,又引入了特有的权限机制,为智能终端上丰富的应用、数据和设备等资源提供灵活全面的强制访问控制和自主访问控制,如表3所示.下面分别对不同层次的访问控制机制以及权限机制进行介绍.

表3 Android访问控制机制

2.3.1 框架层访问控制机制

为控制应用、服务间的交互,Android在中间件引入了图3所示的权限机制[32].作为面向智能终端的操作系统,Android上同时存在和运行着大量应用程序,因此权限机制采用最小特权原则,应用程序运行所需的权限必须提前单独声明,未经声明的权限无法申请并获得授权.Android权限可分为安装时权限和运转时权限:安装时权限由用户在应用程序安装时授权,运行时权限则在应用程序运行时根据需要弹出申请浮框申请权限,由用户使用上下文判断授权.除此之外,特殊权限与功能特别强大的操作相关,只有平台和原始设备制造商能够定义[33].

权限机制访问控制的主体是应用程序.将每个应用程序作为单独的访问控制对象,可避免应用被攻破时攻击者获得系统所有权限,有助于实现最小特权原则.权限机制访问控制客体,即为实现应用程序自身功能,应用程序之间、应用程序内部存在的复杂的服务交互和数据流通.

访问控制规则定义在应用AndroidManifest.xml的配置文件中,既包含了应用需申请的权限和为其他应用提供服务的自定义权限,还设置了与其他应用的交互规则,并对所有权限的授权方式进行了规定.现有的183个应用程序权限被分为12组(方便向用户展示),分别涉及应用activity(用户与应用交互界面)识别、日历、电话等各类通信终端应用.权限组是在应用实现某一功能时,将申请的相关权限打包显示,由用户统一授权,相关权限仍需逐一申请.每个权限按照保护等级被分为4级,分别是:1)Normal级权限(震动等),由系统设定,应用程序安装后即被授权;2)Signature级权限(绑定服务等),由应用开发者定义,仅允许应用签名一致的应用申请,系统在安装时自动判定是否授权;3)Dangerous级权限(访问位置信息等),由系统设定,应用程序运行时申请并由用户确定是否授权;4)Appop级权限(修改系统设置等),是由平台和原始设备制造商定义的特殊权限,默认拒绝权限请求,可在系统设置功能中进行手动授权.

访问控制的权限检查通过中间件层的引用监视器完成,对所有权限请求的权限标签进行检查.一方面对应用发起的受限资源(系统状态、用户信息等)和受限服务(音视频录制等)请求进行强制访问控制,另一方面对其他应用、服务发起的交互请求(功能调用、资源共享等)进行强制访问控制.为简化权限管理,Android系统要求应用程序尽可能调用其他应用程序或系统服务实现自身功能,以减少对权限的申请.

2.3.2 内核层访问控制机制

Android继承了Linux内核提供的基于用户的访问控制机制[34],目的是实现应用程序间隔离,保护应用程序的数据不被非法访问.具体来说为每个应用程序分配一个特有的用户ID,使用该ID创建一个内核级沙盒[35],应用程序进程仅运行在沙盒中,从而实现了进程间隔离.应用程序产生的文件绑定UID、GID和rwx权限,默认只能被本应用程序访问,具有相同签名的应用程序可通过共享用户ID实现资源和权限共享.

为防止恶意应用程序利用系统漏洞突破沙盒隔离限制,Android对Linux内核中的SELinux模块进行了精简和改进(SEAndroid)[36-38],对所有进程实现强制访问控制,按照默认拒绝原则运行,即拒绝所有未明确允许的访问行为,即使发起该行为的进程为超级用户.从Android5.0开始SELinux已全面强制运行在各类Android操作系统产品中,通过持续的配置更新增强沙盒的隔离效果.

2.3.3 其他访问控制机制研究

除上述已应用于Android产品的访问控制机制,针对Android的访问控制研究还有很多成果,尤其集中于权限机制的一系列改进[39-50].例如Nauman等人[39]提出了策略执行框架Apex,为用户提供了细粒度的安装时授权,允许用户在应用程序安装时有选择地授予权限,并根据位置等上下文信息对资源的使用施加约束.Stephen等人[40]提出了应用程序交互框架saint,在安装和运行时对应用交互进行控制.使用新增的权限调度器进行权限检查,将已安装应用的权限策略整合到策略器中,安装新应用时比较应用声明的权限请求与策略器中的权限策略,发生冲突就拒绝应用安装,应用交互时只有同时满足调用者和被调用者的权限策略方可进行下一步权限检查.由于saint依赖程序开发者制定的策略,恶意开发者可绕过该机制,实现恶意应用间非法通信.针对应用间交互可能引起的溢权问题,XManDroid[41]对原权限机制进行了一系列拓展,动态地分析应用程序间交互,可判断权限使用传递情况,从而判断是否存在中间人攻击(利用中间应用程序获得程序不能直接获得的权限).Bugiel等人[42]提出的TrustDroid是一种轻量级域隔离框架,在XManDroid机制的基础上,利用Linux内核的TOMOYO模块实现对内核中通信链路的强制访问控制.

2.4 Harmony

Harmony[51]是华为公司开发的一款分布式移动操作系统,面向5G物联网和全场景,能将各类移动智能终端、物联网设备的操作系统集成到一起,实现设备间的无缝协同.

Harmony既继承了Android针对应用程序的访问控制,即通过沙盒机制实现基于应用程序身份的访问控制,使用权限机制控制应用、服务间的交互,又进一步将访问控制拓展到多设备,并进行增强.其分布式条件下的访问控制理念是确保人、设备及数据使用过程3个环节的可控.

Harmony主要从身份认证、运行环境、数据保护3方面对访问控制进行增强.身份认证作为访问控制的前提,采用零信任模型,即每次跨设备访问资源或请求服务都需进行[52-53].不同设备通过华为账号建立信任关系,使用用户身份管理功能将不同设备上标识同一用户的凭据进行关联[54].运行环境作为访问控制的基础,其可信性由安全启动、可信执行环境及设备证书认证等一系列技术保证.数据作为访问控制的主要保护对象,其可控性通过全生命周期保护来实现.数据生成后即根据类别设置保护等级,加密存储到具有相应安全防护能力的分区,由虚拟超级终端基于标签为数据提供相应的全生命周期防护,确保数据只能在具备足够安全防护能力的虚拟终端之间存储、使用和传输.

3 发展趋势

由于Windows系统采用封闭开发模式,因此其访问控制技术的演化远不如开源的Linux系统活跃.在开源社区的推动下,Linux系统访问控制机制在信息安全领域中发挥越来越重要的作用,而且各类访问控制技术各有侧重.Android系统访问控制机制要解决移动条件下应用对本机资源的访问问题,与身份认证技术结合,使应用的权限申请更加透明、可控.综合以上各种安全机制,可以发现访问控制机制的研究演变过程主要呈现出以下特点:

3.1 访问控制动态化

访问控制动态化源于移动办公和细粒度灵活控制的现实需要.Windows和Android设备的便携化和多元化使移动条件下用户多平台协同办公的需求越来越突出,需要对云和本地资源进行灵活有效的细粒度访问控制.Linux设备在嵌入式物联网设备中的广泛应用,以及针对分布式移动环境设计的Harmony,都表明传统静态访问控制已不能满足现实需要,需要实行细粒度的动态访问控制.即主体对客体的访问控制规则不是一成不变的,主体对同一客体的访问权限随着其角色,位置(网络、物理),使用的访问设备,历史访问行为,任务进展等因素的变化而动态变化.

3.2 访问控制全局化

访问控制全局化随着操作系统访问控制的范围发生扩展而产生.传统操作系统访问控制的范围有限,Windows和Linux主机的访问控制规则一般局限于本机设备,Android智能终端也只针对本机应用的访问请求进行限制.随着云办公的兴起、智能终端的多元化以及万物互联时代的到来,新的访问控制机制采用集群、区块链等新技术,在传统访问控制的基础上新增一层全局访问控制,实施全局一致的访问控制策略.例如Windows通过基于域的动态访问控制策略,由域控制器实施集中的访问控制.面向万物互联的Harmony操作系统,将近距离的多台终端连接成一台“超级虚拟终端”,用户数据不再与单一设备绑定.跨端数据的共享和访问不再借助云端完成,超级虚拟终端范围内设备的数据均可视为存在本地内存中.超级虚拟终端范围内设备之间硬件互助,资源共享,用户敏感数据和密钥的存储和处理均置于具备可信执行环境的设备硬件中进行,在认证技术和加密技术的配合下实施统一的访问控制.

3.3 策略配置自动化

策略配置自动化应操作系统繁琐复杂的策略配置需求产生.大部分用户不具备相应的安全知识,安全人员手动配置又过于繁琐,自动化学习工具可提供易用的安全方案,增强操作系统访问控制机制的易用性和可靠性.例如AppArmor与GRSecurity都提供了很好的自动学习工具,在学习模式下学习访问控制目标的正常行为,生成相应的策略规则.在系统真实执行时,配置好的访问控制规则被强制实施,只允许服务进程完成规则所允许的行为.自动化流程在提供简单易用安全方案的同时,也存在一些安全隐患,这主要是由于某些服务在学习模式中不能完全遍历其执行流程所导致的.因此必须根据实际上线使用情况,对策略配置进行人工补充与调整.

4 结束语

访问控制已成为操作系统中保护信息最重要的安全机制之一,广泛应用于Windows,Android等操作系统产品中.尽管针对访问控制的研究很多,但真正应用到操作系统层次的技术较少.未来工作将对Linux操作系统访问控制机制进行改进,实现动态访问控制,为上层应用提供更加可靠的细粒度访问控制.

猜你喜欢
访问控制完整性内核
一种跨策略域的林业资源访问控制模型设计
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
关于防火门耐火完整性在国标、英标、欧标和美标中的比对分析
活化非遗文化 承启设计内核
ELM及IS/OS完整性对年龄相关性黄斑变性预后视力的影响
更正说明
微软发布新Edge浏览器预览版下载换装Chrome内核
云的访问控制研究
云计算访问控制技术研究综述