在《J0ker的CISSP之路》系列的上一篇文章《安全模型》里,J0ker给大家介绍了CISSP CBK中要求掌握,同时也是目前世界上使用最广的几个安全模型的概念和原理。安全模型只是个概念,要把它应用到实践中,就需要使用到本文要介绍的保护机制,它是比安全模型更具体,更接近实际应用的概念,当前的许多操作系统、安全软件产品的基础,都是建立在它之上的(再次提醒,CISSP考试不涉及具体的产品和技术细节)。
     保护机制实现的目标是将系统内的所有实体(数据、用户、程序等)进行隔离,并通过一定的规则允许实体间进行访问。因此从所执行的动作,保护机制可以分成主动(Active)和被动(Passive)两类:主动保护机制是根据所定义的规则,主动阻止对指定实体的访问,访问控制、内存保护等技术都属于主动保护机制;而被动保护机制本身不会阻止对指定实体的访问,但会通过阻止对指定实体的使用来实现保护功能,我们使用加密技术来防止信息的泄漏、用Checksum来检测对信息的未授权修改,都属于被动保护机制。
   
     保护机制通常部署到操作系统、硬件或固件上,CISSP CBK中将它按照所部署的位置分成三类:平台(Platform)、大型机(Mainframe)、网络(Network),下面J0ker给逐一给大家介绍在这三个分类上使用的保护机制:
 
平台保护和大型机保护机制:平台保护是主要用在通用操作系统上的保护机制,主要以软件实现为主;大型机保护则是主要应用于大型机上的保护机制,一般使用专用的安全硬件实现。但随着近年来软硬件技术的发展,这两个分类所使用的保护技术都在互相融合,由于硬件产品集成度提高和价格的大大下降,许多PC和工作站上已经集成了原来只在大型机上使用的安全硬件,而大型机为了降低制造成本,也将越来越多的保护功能通过软件来实现,所以在CISSPOfficialGuide中不再将平台保护和大型机保护分开来列,而是将它们所用的保护技术列在一起。
 
使用在这两个分类的保护技术
       可信计算基础(Trusted Computing Base,TCB):TCB是一个计算机系统中所有提供保护功能的组件的总称,包括硬件、软件、固件、进程和一些进程间的通信等,它通过这些组件完成对安全策略的实现。TCP功能的实现是根据其内置的保护机制或用户所输入的参数,来保证安全策略的实施或满足相应的安全标准(如TCSEC等)。不过要注意的是,TCB是一个定义而不是一个特定的产品,目前的大部分操作系统都没有完全使用TCB的全部组件,只使用了TCB用来执行功能的一部分,这个部分就是接下去要介绍到的引用监视器(Reference Monitor)。
 
TCB的设计需求如下:
1、TCB应该在一个不受外部干扰影响的自有域内执行
2、TCB所控制的资源应根据使用关系分为使用者(Subject)和目标(Object)两个子集
3、TCB应该把资源进行隔离以执行访问控制和审计功能
TCB提供的基本功能有:
1、进程激活:在一个多重处理的环境内管理进程激活/挂起时提供寄存器、文件访问列表、进程状态信息和指针等敏感信息的管理功能
2、执行域切换:确保在一个域内执行的进程不会影响到其他域内的其他进程
3、内存保护:确保每个域所使用的内存的安全
4、输入输出操作:监视程序对设备直接或间接的输入输出操作
 
引用监视器(Reference Monitor):RM的功能是根据访问控制数据库的定义,对抽象系统中所有使用者对目标的访问进行控制。
 
安全内核(Security Kernel):安全内核由TCB的硬件、软件和固件部分加上引用监视器所构成,我们可以这样来区分安全内核和引用监视器:引用监视器和安全内核的功能是相同的,但引用监视器是执行访问控制功能的抽象模型,而安全内核则是使用在各种系统中的具体实现。安全内核的结构如下图:
图1
为了保证安全功能的实现,安全内核必须满足以下三个要求:
1、安全内核能管理所有的访问(全局性)
2、安全内核能保护自己不受有意或意外修改(隔离性)
3、安全内核可以通过验证确定其有效性(可验证性)
 
     TCB、RM和Security Kernel这三个概念挺容易混淆,CISSP考试也经常考核与它们相关的内容,复习的时候应当注意一下。

安全边界(Security Perimeter):用来隔离安全内核内外的资源,安全边界外的资源是不可信的。注意将它和近两年常说的“边界安全“相区别。
分层(Layering):分层是指在系统设计时对功能和实现按照一定的原则进行分层,层次越低的权限越高,每一层的操作和使用的数据都尽量不对其它层次产生影响,这里会引入一个技术——数据隐藏(Data Hiding)。此外,部署安全措施的层次越低,则安全措施的效能和控制范围就越好,因此应该把安全措施部署在系统的最底层,下面是一个示例系统的分层:
图2
 
TOC/TOU保护:系统设计时需要使用资源锁定防止权限低的进程/用户通过劫持或修改特权用户的操作的途径访问敏感信息。
额外保护(Guard Protection):系统常常需要使用其他的方案来提供额外的保护,比如在数据库系统中,除了在数据库本身对用户的访问权限进行控制之外,通常还会通过提供一个带有查询检查功能的界面来限制用户提交不符合安全策略规定的查询。
进程隔离(Process Isolation):系统对同时执行的进程进行隔离,防止进程之间的互相影响,这个功能在现代操作系统中是一个基本功能。
最低权限原则(Least Privilege):系统中所有的权限给予满足操作所需的最低权限即可,这个在其他许多领域也能看到,比如许多企业内网用户只有User权限,不能够在自己的机器上安装或修改软件,要新增软件必须由管理员干涉。
加固(Hardening):加固是通过一定的操作和配置使系统的安全程度得到提高,它不属于系统设计阶段,而属于系统的部署和维护阶段。
以上是在系统设计时常使用的安全措施,此外,根据安全措施在系统中部署的层次不同,还可以将其分为通用操作系统级保护、应用程序级保护、存储设备保护、网络级保护。其中:
 
操作系统级别保护需要满足的需求有:
用户识别和认证(User Identification and Authentication)
强制访问控制(Mandatory Access Control)
自主访问控制(Discretionary Access Control)
完全控制(Complete mediation)
目标重用保护(Object reuse protection)
审计 (Audit)
审计日志的保护 (Protection of Audit logs)
日志筛选 (Audit logs reduction)
可信路径 (Trusted Path)
***检测 (Intrusion Detection)
    应用程序级别上所提供的保护措施主要是针对用户的输入和程序的输出进行保护、过滤,还使用上面说过的Guard Protection技术来提供额外的安全功能。
存储设备保护关注的是保护存储在各种设备上的敏感信息的保密性和完整性,最近几年安全业界比较关注的企业移动设备安全和企业级加密就属于这个领域。
  
   网络级保护关注的是信息传输过程中的保密性和完整性,这个领域的内容在CISSP另外一个CBK——电信和网络安全还会详细介绍。
 
下篇预告:《安全标准》,J0ker将向大家介绍各种用于从系统架构和设计角度评测产品的标准,敬请期待!