关键词:安全操作系统 安全模型 集中式控制 本质安全型 强制存取控制
引言
操作系统作为底层系统软件,负责为应用程序提供运行环境和访问硬件的接口,它的安全性是信息安全的基础。现在操作系统面临的威胁与攻击多种多样,安全操作系统已经不再局限于仅提供安全的存取控制机制,还要提供安全的网络平台、安全的信息处理平台和安全的进程通信支持。
在嵌入式系统中,由于系统软件和硬件设计的特点,很容易从硬件和软件直接进行拷贝。操作系统的安全性应有更特殊的考虑。操作系统不但要对保存的数据提供安全保证,而且还要考虑自己运行的硬件平台和系统本身的安全性。
在现有操作系统中,有关系统安全控制的代码是分散到系统中的,这对系统性能的影响降到了最低。但是,如果要添加新的控制机制,必须会引起大量的修改,由此将带来潜在的不稳定性和不一致性。随着系统硬件性能的成倍增长,人们逐渐将目光转移到集中式控制上来。在操作系统设计初期,安全模块应该被独立地提出来,成为操作系统设计需要考虑的一部分。
智能卡技术是一种软硬件结合的安全保护技术,经常用于身份验证和存储加密信息。由于自身的硬件特性,它可以防止非法读取和篡改;同时,智能卡本身具有加密的文件系统,可以对信息进行安全的保护。
在我们研究操作系统安全问题时,首次将智能卡技术引用到安全控制当中,作为整个安全体系结构的保证。智能卡用于对操作系统本身和运行的平台进行标识,可以对用户身份、进程的合法性进行严格的控制。
1 存取控制和安全模型
存取控制是系统安全的核心内容。存取控制按照一定的机制,在系统主体对客体进行访问时,判定访问请求和访问的方式是否合法,返回判定结果。一般情况下,有两种存取控制方式:自主存取控制DAC(Discretionary Access Control)和强制存取控制MAC(Mandatory Access Control)。
(1)自主存取控制
DAC是安全操作系统最早期的存取控制方式,客体的所有者可以将客体的访问权限或者访问权限的子集授予其它主体。在类Unix系统当中,系统提供owner/group/other的控制方式,就是一种典型的自主存取控制方式。
(2)强制存取控制
在自主存取控制当中,由于管理不当或者操作失误,可能会引起非法的访问,并且不能有效地防御特洛伊马病毒的攻击。在信息保密要求比较高的领域,人们提出了强制的存以控制方式,给系统提供一道不可逾越的访问控制限制。强制存取控制主要通过安全级的方式实现。安全级含“密级”和“部门集”两方面。密级又分为无密、秘密、机密、绝密四级。系统中主体和客体按照一定的规则被赋予最高安全级和当前安全级。系统主体的部门集表示主体可以涉及猎的信息范围,系统客体的部门集表示该信息涉及的信息范围。强制存取控制抽象出三条访问原理:①的主体的安全级高于客体,当且仅当主体的密级高于客体的密级,且主体的部门集包含客体的部门集;②主体对客体具有读权限,当且仅当主体的安全级高于客体的安全级;③主体对客体具有写权限,当全仅当主体的安全级低于或者等于客体的安全级。
安全模型是系统安全特性的描述,是对安全策略的一种数学形式化的表示方法。一般的安全操作系统的设计方法,通常是先设计安全模型,对安全模型进行分析,并且给出数学证明。安全模型的设计是研究安全操作系统的重要成果,可以对安全系统设计提供结构清晰、功能明确的指导。这里主要介绍BLP安全模型。
BLP模型是人们对安全策略的形式化描述。它通过系统安全级的划分来保证系统存取的合法性。BLP模型定义了一系列的安全状态和状态转换规则,如果保证系统启动时处于安全状态的话,即可按安全转换规则,在各个安全状态之间转换。下面介绍BLP模型的具体规则。
系统的主体和客体均被赋予一定的安全级和部门集。主体安全级包含最高安全级的当前安全级。主体对于客体的访问方式包括:只读、只写、执行、读写。BLP模型定义了两具安全特性,并且证明了只要系统遵循这两个模型,便可认为系统处于安全状态并可在状态之间进行转换,这两个特性是简单安全特性和*特性。
(1)简单安全特性(ss-property)
如果一个主体对一个客体具有读的权限,则客体的安全级不能比主体的最大安全级高。
(2)*特性(*-property)
主体对客体有“只写”的权限,则客体的安全级至少和主体的最高安全级一样高。
主体对客体有“读”权限,则客体的安全级不会比主体的当前安全级高。
主体对客体有“读写”权限,则客体安全级等于主体的当前安全级。
人们习惯上将简单安全特性看成限制“向上读”,将*特性看成限制“向下写”。
BLP在多年的研究当中被认为可以有效防止特洛伊马病毒的攻击,但是仍然存在两个问题:①系统具有动态的信息处理(例如主体的安全级的变化)都是有可信进程来实现的,但是BLP模型并没有对可信进程进行说明,可信进程也不受BLP模型的限制;②BLP模型不能防止隐通道。
2 系统实现原理
根据上面的分析,我们提出了一种本质安全型,以进程控制为中心,集中式管理方式的安全控制方法。下面结合Linux操作系统说明具体的实现原理,以wolf-Linux来指具有这种控制机制的安全操作系统。
本质安全是指一种建立在特殊的硬件设备上(Smart卡),具有特殊的体系结构,可对操作系统本身、进程合法性和运行权利进行验证的安全机制。
系统的安全控制分为六部分:进程管理器、安全服务器、文件系统伺服器、进程通信伺服务器、网络伺服器和审计模块。总体结构如图1所示:进程管理器、安全服务器wolf-Linux安全控制的核心部分,审计模块负责对系统的安全性事件进行记录,其它部分是安全控制的执行模块。
从图1中可以看出,SIM(Subscriber Identity Module)卡处于系统的安全模块中,保存系统的关键信息,集中式管理主要体现在进程控制器部分,安全判定和安全执行的分离使得任何存取操作都不可能绕过安全控制机制。系统中所有的安全事件都通过进程控制器来判定是否可行,安全执行模块负责在访问操作发生时抽象主体和客体,提交访问请求并执行访问结果。下面主要介绍各个模块的功能原理。
(1)安全服务器和SIM卡
系统的安全服务器负责提供系统支持的安全策略。在系统启动时,安全服务器初始化系统支持的安全策略。它的初始化过程中重要的一步是读智能卡中的信息,验证系统的身份。安全服务器提供的接口有三类:①与智能卡的接口。在智能卡中保存系统的关键信息,例如系统的有效使用时间、操作系统身份ID。这个ID号相当规模识了一个合法的系统身份和系统用户身份信息(在系统的安全特性部分还会讨论)。安全模块通过智能卡的驱动程序,负责与智能卡信息的安全交互,并提供访问智能卡的操作函数。②与进程控制器交互的接口。安全服务器只负责实现对安全策略的支持,而不管判定访问操作是否合法。进程控制器在判定访问是否合法时,使用安全服务器提供规则。③提供给系统管理的接口。由于在安全模块当中实现了策略的独立性,所以安全模块可以在实现对多种策略的支持。接口函数包括安全模块的初始化接口、安全策略的注册接口、安全策略的管理接口。通过这些接口函数可以实现对安全策略的配置,系统安全特性针对不同的工作环境,可以动态变化。安全模块的固化设计保证系统的安全特性不可能被破坏和篡改。
(2)进程控制器
进程控制器是系统安全特性的关键部分,功能有两个:①以进程为单位的权限控制;②判定安全执行部分提供的访问请求并返回判定结果;同时为了提高效率,保存最近的访问判定结果,提供缓存功能。
在传统的Unix系统当中,一般提供基于用户的权限控制方法,系统的控制粒度只能到用户。一般的攻击方法是利用程序的设计漏洞,或者用户的误操作来取得高级权限。在我们研究这类安全问题时,继续细化了这类控制方法,提供更细的控制粒度;可以针对每一个进程进行控制,确保用户所启动的所有进程均处于相应权限控制之下。
(3)文件系统伺服器
主要操作是抽象各种操作,包括对文件系统的操作和对于文件的操作;是在文件系统当中的系统调用部分加入控制机制,向控制器提交访问的主客体标识符。在Linux操作系统中,涉及到的数据结构有:super_block(表示文件系统),file(表示操作的文件),inode(表示管道),文件或者网络套接字等等。
(4)网络伺服器
网络安全部分控制操作的目的是,防止违法的网络操作。例如,控制网络打开与关闭,路由器和防火墙的安全规则配置,端口绑定,网络广播等。
(5)进程通信伺服器
进程之间的安全通信是安全操作系统研究的重点之一。随通道是指按照常规不会用于传送信息却被利用泄漏信息的传送渠道。隐通道包括正规隐通道、存储隐通道和时间隐通道。在我们的研究过程中,分析了前两种信息泄漏方式,通过以进程为控制单位,控制进程之间有效通信方式来解决。在Linux方式当中,提供信号量、消息队列和共享内存等进程通信方式,在关键点处加入控制点,例如msg_msg代表单个的消息,kern_ipc_perm代表信号,共享内存段,或者消息队列。进程控制器提供的控制机制使得普通用户的进程只能在具有血缘关系的进程之间来传送消息,可有效防止信息的扩散。
(6)设备管理器
在计算机系统当中,输入输出设备非常易于泄漏信息,包括打印机、终端、文件卷等。例如,黑客可以利用模拟登陆终端设备来取得用户密码。这个模块负责对这些设备进行单独的管理,保证这些设备始终处于有效和正确的状态下。
3 系统的安全特性
本质安全型操作系统是在嵌入式系统背景下设计的一种安全操作系统。相对于其它嵌入式系统,它提供了一种根本意义上的信息安全保证;扩展了安全操作系统的内涵,引入了操作系统的生命周期、系统生成态、运营态、消亡态概念。在不同的时间段,安全应该有不同的考虑,而智能卡作为安全控制的基点,保证操作系统可在各种状态之下转换。智能卡健全的发生和管理机制,是安全的重要保证。下面介绍本质安全型集中式控制操作系统提供的安全特性。
(1)身份标识
在wolf-Linux系统当中,身份标识包括系统身份标识和用户身份标识。
系统身份标识是指在系统启动过程当中,对运行的平台和运行系统进行身份验证。智能卡中和操作系统中,在系统生成态时均被赋予了的特定数字ID,系统启动时操作系统读取智能卡中的ID号,进行验证。如果不合法,则转入USSPEND态,不能正常启动。通过智能卡可以有效地对系统的生命周期进行监控。
用户身份标识是指通常的用户身份标识与鉴定。系统采用智能卡保存用户的关键信息,防止被非法篡改或窃取。
(2)进程受控运行
在一般的嵌入式系统当中,不可能对系统运行的进程进行有效监控,wof-Linux提出了一种以进程控制为中心的管理方法。系统中运行的程序必须取得合法性验证才可以运行,对于一些违法的攻击程序可以有效进行限制。系统控制粒度可以以进程为单位,结合强制存取控制可以有效保证数据的安全性。
(3)集中式管理和强制访问控制
不同于现有的系统安全代码分散到系统的各个部分,wolf-Linux实现了集中式管理的策略。安全执行部分抽象存取操作的主体和客体,提交给进程控制器进行判定,集中式控制保证系统的所有存取操作不可能绕过系统的安全机制。强制存取控制是集中式控制的一种具体实现的存取控制机制。
图2给出了系统中安全存取控制的层次。
从上面分析可知,本质安全型操作系统是指建立在特殊的硬件设备基础之上,可以对系统运营平台,对系统进程合法性和运行权利进行有效保证的安全系统。
4 系统验证分析
由上述可知,本质安全型操作系统是建立在智能卡技术之上的。传统的研究方法最终将系统的安全建立在密码技术之上,而随着密码破解技术和开源操作系统的发展,密码机制已经不能有效地保证系统的安全。安全操作系统和智能卡的结合,使系统的安全控制点建立在软硬件结合的技术之上,从而可对系统的各种状态和环节进行有效的控制。在翰林电子书中采用这种结合智能卡的安全控制方式,取得了良好的效果。表1提供了一般嵌入式安全操作和本质安全型操作系统的安全特性对比。
表1 系统安全特性对比
系 统 |
本质安全型操作系统 | 一般的安全操作系统 |
控制粒度 | 以进程为单位 | 以用户为单位 |
TCB的设计方式 | 采用智能卡固化设计 | 纯软件设计 |
控制方式 | 集中式管理 | 分散式管理 |
控制环节 | 多环节支持 | 存储和访问环节 |
身份标识与鉴定 | 基于智能卡的增强型 | 基于普通密码机制 |
存取控制方式 | 强制存取控制和自主存取控制 | 自主存取控制 |
结语
后PC时代,嵌入式系统成为发展主流,它的安全性是将来整个信息系统安全的基础。由于嵌入式应用环境的多样性,单纯地使用软件来实现安全操作系统已经不太现实,软硬件结合是一种重要的方法。本文分析了嵌入式系统面临的安全问题的特点,提供了一个全新的安全概念,丰富了操作系统安全研究的内涵。目前由于系统攻击方法的多样性,多策略支持已经成为主要发展方向。Linux社区已经实现lsm多策略支持安全控制框架,可以支持se-linux的flask的安全体系结构和capability的权能控制机制。在研究安全操作系统时,安全机制对系统性能的影响是一个需要严肃考虑的问题。在一般的安全控制机制中,系统的性能大概会下降10%~20%,因此需要衡量控制范围和性能影响,同时要提供完善的缓存机制。