十二、保护和安全
前言
随着计算机技术的迅速发展,在计算机系统中存储的信息越来越多,信息的安全性问题也越来越重要。信息安全通常会受到以下两类攻击:①恶意攻击:攻击者试图获取或毁坏敏感信息,甚至破坏系统的正常操作,并可能造成很大的经济损失和社会危害;②无意/偶发性攻击:主要源于人们操作上的失误、计算机硬件的故障、OS或其它软件中存在的潜在漏洞,以及突然断电、火灾等自然灾害,由此造成的后果同样也可能啊非常严重的。
1.安全环境
1.1 实现“安全环境”的主要目标和面临的威胁
实现“安全环境”的主要目标有三:数据机密性、数据完整性和系统可用性。相应的面临着三方面的威胁:有人通过各种方式窃取系统中的机密信息使数据暴露;攻击者擅自修改系统中所保存的数据以实现数据篡改;采用多种方法来扰乱系统,使之瘫痪而拒绝提供服务。
1.2 系统安全的特征
- 多面性
- 动态性
- 层次性
- 适度性
1.3 计算机安全的分类
-
对一个安全产品(系统)进行评估,是件十分复杂的事,需要有一个能被广泛接收的评估标准。为此,1983年,美国国防部颁布了历史上第一个计算机安全评价标准。该标准共包括20多个文件,每个文件都使用了彼此不同的颜色封面,统称为“彩虹系列”。其中最核心的是“可信任计算机系统评价标准”(TCSEC),由于它是橙色封皮,故简称为“橙皮书”。
-
计算机安全的分类
在“可信任计算机系统评价标准”中将计算机系统的安全程度划分为:D、C、B、A四类。共分为D、C1、C2、B1、B2、B3和A1七个等级。
2.数据加密技术
2.1 数据加密原理
-
数据加密模型
一个数据加密模型如下图所示,由四部分组成:
(1) 明文。被加密的文本称为明文P。
(2) 密文。加密后的文本称为密文Y。
(3) 加密(解密)算法E(D)。
(4) 密钥K。密钥是加密和解密算法中的关键参数。
加密过程可描述为:在发送端利用加密算法E和加密密钥Ke,对明文P进行加密,得到密文Y=EKe§;密文Y被传送到接收端后,再进行解密。解密过程可描述为:接收端利用解密算法D和解密密钥Kd,对密文Y进行解密,将密文恢复为明文P=DKd(Y)。在密码学中把设计密码技术称为密码编码,把破译密码技术称为密码分析。密码编码和密码分析合起来称为密码学。在加密系统中算法是相对稳定的,为了加密数据的安全性,应经常改变密钥。
-
基本加密方法
(1) 易位法
易位法是按照一定的规则,重新安排明文中的比特或字符的顺序来形成密文,而字符本身保持不变。按易位单位的不同,又可分成比特易位和字符易位两种。前者的实现方法简单易行,并可用硬件实现,主要用于数字通信中;而字符易位法是利用密钥对明文进行易位后形成密文,具体方法是:假定有一密钥MEGABUCK,其长度为8,则其明文是以8个字符为一组写在密钥的下面,如下图所示。按密钥中字母在英文字母表中的顺序来确定明文排序后的列号。如密钥中的A所对应的列号为1,B为2,C为3,E为4等。然后再按照密钥所指示的列号,先读出第一列中的字符,读完第1列后,再读出第2列中的字符,······,这样,即完成了将明文pliease transfer···转换为密文AFLLSKSOSELAWAIA···的加密过程。
(2) 置换法是按照一定的规则,用一个字符去置换(替换)另一个字符来形成密文。在对英文进行加密时,可将26个英文字母通过密钥QWERTYUIOPASDFGHJKLZXCVBNM,映像到另外26个特定字母中。
2.2 对称加密算法与非对称加密算法
-
对称加密算法
在对称加密算法中,在加密算法和解密算法之间存在着一定的相依关系,即加密和解密算法往往使用相同的密钥;或者在知道了加密密钥Ke后,就很容易推导出解密密钥Kd。
-
非对称加密算法
非对称加密算法的加密密钥Ke和解密密钥Kd不同,而且难以从Ke推导出Kd来,故而可将其中的一个密钥公开而成为公开密钥,故该算法也可称为公开密钥算法。
2.3 数字签名和数字证明书
-
数字签名
在金融和商业等系统中,许多业务都要求在单据上签名或加盖印章,以证实其真实性,备日后查验。在利用计算机网络传达报文时,可将公开密钥法用于电子(数字)签名,来代替传统的签名。而为使数字签名能代替传统的签名,必须满足下述三个条件:
(1) 接收者能够核实发送者对报文的签名。
(2) 发送者事后不能抵赖其对报文的签名。
(3) 接收者无法伪造对报文的签名。
-
数字证明书(Certificate)
虽然可以利用公开密钥方法进行数字签名,但事实上又无法证明公开密钥的持有者是合法的持有者。为此,必须有一个大家都信得过的认证机构CA(Certification Authority),由该机构为公开密钥发放一份公开密钥证明书,该公开密钥证明书又称为数字证明书,用于证明通信请求者的身份。在网络上进行通信时,数字证明书的作用如同出国人员的护照、学生的学生证。在ITU制定的X.509标准中,规定了数字证明书的内容应包括:用户名称、发证机构名称、公开密钥、公开密钥的有效日期、证明书的编号以及发证者的签名。
3.用户验证
验证又称为识别或认证。当用户要登录一台多用户计算机时,操作系统将对该用户进行验证(Authentication),这一过程称为用户验证。用户验证的目的在于确定被验证的对象(包括人和事)是否真实,以防止入侵者进行假冒、篡改等。通常利用验证技术作为保障网络安全的第一道防线。
由于身份验证是通过验证被认证对象的一个或多个参数的真实性和有效性来确定被认证对象是否名副其实的,因此,在被认证对象与要验证的那些参数之间,应存在严格的对应关系。当前身份验证主要依据下述三个方面的信息来确定:
(1) 所知(knowledge),即基于用户所知道的信息,如系统的登录名、口令等。
(2) 所有(possesses),指用户所具有的东西,如身份证、信用卡等。
(3) 用户特征(characteristics),指用户所具有的特征,特别是生理特征,如指纹、声纹、DNA等。
3.1 使用口令验证
-
口令
用户要上机时系统首先要求用户输入用户名。登录程序利用该用户名去查找一张用户注册表,若从中找到匹配的用户名后,再要求用户输入口令,如果输入的口令与在注册表中的口令一致,系统便认为该用户是合法用户,允许该用户进入系统;否则将拒绝该用户登录。
-
提高口令安全性的方法
(1) 口令应适当长。
(2) 应采用多种字符。
(3) 自动断开连接。
(4) 回送显示的安全性。
(5) 记录和报告。
-
一次性口令
为了防止口令外泄,用户应当经常改变口令,一种极端的情况是采用一次性口令机制,即口令被使用一次后就换另一个口令。
-
口令文件
通常在口令机制中都配置有一份口令文件,用于保存合法用户的口令和用户的特权。
-
挑战—相应验证
在该方法中,由用户自己选择一个算法,算法可以很简单也可较复杂,如X2,并将该算法告知服务器。每当用户登录时,服务器就给用户发来一个随机数,如12,用户收到后,按所选算法对该数据进行平方运算,得到144,并用它作为口令。服务器再将所收到的口令与自己计算的结果进行比较,如相同便允许用户上机,否则拒绝用户登录。
3.2 基于物理标志的验证技术
- 基于磁卡的验证技术
- 基于IC卡的验证技术
3.3 生物识别验证技术
-
常用于身份识别的生理标志
(1) 指纹
(2) 眼纹
(3) 声音
(4) 人脸
-
生物识别系统的组成
(1) 对生物识别系统的要求
①性能要求。
②易于被用户接受。
③成本合理。
(2) 生物识别系统的组成
①生物特征采集器。
②注册部分。
③识别部分
-
指纹识别系统
(1) 指纹采集传感器。实现指纹采集的硬件是指纹传感器,它是指纹识别系统的重要组成部分。对指纹采集传感器的主要要求是,成像质量好,放伪能力强,体积小,价格便宜。指纹图像采集质量的好坏,将会直接影响到所形成的指纹图像的质量。目前市场上的指纹采集传感器有多种类型。其中光学式和压感式指纹采集传感器应用较广。
(2) 指纹识别系统。随着微处理器和各种电子元器件成本的迅速下降,我们已开发出多种指纹识别系统,其中包括了嵌入式指纹识别系统。该系统利用DSP(数字信号处理器)芯片进行图像处理,并可将指纹的录入、指纹的匹配等处理功能全部集成在其大小还不到半张名片的电路板上。
4.来自系统内部的攻击
攻击者对计算机系统进行攻击的方法有多种,可将之分为两大类:内部攻击和外部攻击。内部攻击一般是指攻击来自系统内部。它又可进一步分为两类:
(1) 以合法用户身份直接进行攻击。攻击者通过各种途径先进入系统内部,窃取合法用户身份,或者假冒某个真实用户的身份。当他们获得合法用户身份后,再利用合法用户所拥有的权限,读取、修改、删除系统中的文件,或对系统中的其他资源进行破坏。
(2) 通过代理功能进行间接攻击。攻击者将一个代理程序置入被攻击系统的一个应用程序中。当应用程序执行并调用到代理程序时,它就会执行攻击者预先设计的破坏任务。
4.1 早期常采用的攻击方式
(1) 窃取尚未清除的有用信息。
(2) 通过非法的系统调用搅乱系统。
(3) 使系统自己封杀校验口令程序。
(4) 尝试许多在明文规定中不允许做的操作。
(5) 在OS中增添陷阱。
(6) 骗取口令。
4.2 逻辑炸弹和陷阱门
近年来更流行利用恶意软件进行攻击的攻击方式。所谓恶意软件(malware),是指攻击者专门编制的一种程序,用来造成破坏。它们通常伪装成合法软件,或隐藏在合法软件中,使人们难以发现。有些恶意软件还可以通过各种方式传播到其他计算机中。依据恶意软件是否能独立运行可将它分为两类:
(1) 独立运行类:它可以通过OS调度执行。这类恶意软件有蠕虫、僵尸等。
(2) 寄生类:它本身不能独立运行,经常是寄生在某个应用程序中。下面即将介绍的逻辑炸弹、特洛伊木马、病毒等就属于寄生类恶意软件。
-
逻辑炸弹(logic bomb)
(1) 逻辑炸弹实例逻辑炸弹是较早出现的一种恶意软件,它最初出自于某公司的程序员,是为了应对他可能被突然解雇,而预先秘密放入OS中的一个破坏程序(逻辑炸弹)。只要程序员每天输入口令,该程序就不会发作。但如果程序员在事前未被警告,就突然被解雇时,在第二天(或第二周)由于得不到口令,逻辑炸弹就会引爆——执行一段带破坏性的程序,这段程序通常会使正常运行的程序中断,随机删除文件,或破坏硬盘上的所有文件,甚至引发系统崩溃。
(2) 逻辑炸弹爆炸的条件
每当所寄生的应用程序运行时,就会运行逻辑炸弹程序,他会检查所设置的爆炸条件是否满足,如满足就引发爆炸;否则继续等待。触发逻辑炸弹爆炸的条件有很多,较常用的有:
①时间触发,即规定在一年中或一个星期中的某个特定日期爆炸;
②事件触发,当所设置的事件发生时即引发爆炸,比如发现了所寻找的某些文件;
③计数器触发,计数值达到所设置的值时都会引发爆炸。
恶意软件是一种极具破坏性的软件,但它不能进行自我复制,也不会感染其他程序。
-
陷阱门(trap door)
(1) 陷阱门的基本概念
通常,当程序员在开发一个程序时,都要通过一个验证过程。为了方便对程序的调试,程序员希望获得特殊的权限,以避免必需的验证。陷阱门其实就是一段代码,是进入一个程序的隐蔽入口点。有此陷阱门,程序员可以不经过安全检查即可对程序进行访问,也就是说,程序员通过陷阱门可跳过正常的验证过程。长期以来,程序员一直利用陷阱门来调试程序并未出现什么问题。但如果被怀有恶意的人用于未授权的访问,陷阱门便构成了对系统安全的严重威胁。
(2) 陷阱门实例
我们通过一个简单的例子来说明陷阱门。正常的登录程序代码如下图(a)所示,该程序最后两句的含意是,仅当输入的用户名和口令都正确时,才算用户登录成功。但如果我们将该程序的最后一条语句稍作修改,得到下图(b)所示的登录程序代码,此时最后两句的含意已改变为:当输入的用户名和口令都正确时,或者使用登录名为“zzzzz”时,无论用什么口令,都能成功登录上机。
4.3 特洛伊木马和登录欺骗
-
特洛伊木马(trojan horses)的基本概念
特洛伊木马是指一种恶意软件,它是一个嵌入到有用程序中的、隐蔽的、危害安全的程序。当该程序执行时会引发隐蔽代码执行,产生难以预期的后果。由于特洛伊木马程序可以继承它所依附的应用程序标识符、存取权限以及某些权限,因此它能在合法的情况下执行非法操作,如修改、删除文件,或者将文件复制到某个指定的地方。又如特洛伊木马程序可以改变所寄存文件的存取控制属性,若将属性由只读改为读/写,便可使那些未授权用户对该文件进行读/写,即改写该文件,
-
登录欺骗(login spoofing)
我们以UNIX系统为例来说明登录欺骗。攻击者为了进行登录欺骗,写了一个欺骗登录程序,该程序同样会在屏幕显示Login:,用于欺骗其他用户进行登录。当有一用户输入登录名后,欺骗登录程序也要求它输入口令。然后却吧刚输入的登录名和口令写入一份实现准备好的文件中,并发出信号以请求结束shell程序,于是欺骗登录程序退出登录,同时也去触发真正的登录程序。在屏幕上又显示出“Login:”,此时真正的登录程序开始工作。对用户而言,它自然以为自己输入发生了错误,系统要求重新输入。在用户重新输入后系统开始正常工作,因此用户认为一切正常。但用户的登录名和口令已被人窃取。窃取者可用同样的方法收集到许多用户的登录名和口令。
4.4 缓冲区溢出
由于C语言编译器存在着某些漏洞,如它对数组不进行边界检查。例如下面的代码是不合法的,数组范围是1024,而所包含的数字却有12000个。然而在编译时却未对此检查,攻击者可以利用此漏洞来进行攻击。
int i;
char C[1024];
i=12000;
c[i]=0;
上述错误会造成有10976个字节超出了数组C所定义的范围,由此可能导致难以预测的后果。由下图(a)可以看到,主程序运行时它的局部变量是存放在堆栈中的。当系统调用过程A,将返回地址放入堆栈后,便将控制权交于A。假定A的任务是请求获得文件的路径名,为能存放文件路径名,系统为A分配一个固定大小的缓冲区B,如下图(b)所示。
缓冲区的大小为1024个字符,这对于正常情况是足够了。假如用户提供的文件名长度超过1024个,就会发生缓冲区溢出,所溢出的部分将会覆盖上图©所示的灰色区域,并有可能进一步将返回地址覆盖掉,由此产生一个随机地址。一旦发生这样的情况,程序返回时将跳到随机地址继续执行,通常会在几条指令内引起崩溃。一种更为严重的情况是,攻击者经过精心计算,将它所设计的恶意软件的起始地址覆盖在原来在栈中存放的返回地址,把恶意软件本身也推入栈中。这样当从A返回时,便会去执行恶意软件。
5.来自系统外部的攻击
5.1 病毒、蠕虫和移动代码
-
病毒(viruses)
计算机病毒是一段程序,它能把自己附加在其他程序之中,并不断地自我复制,然后去感染其他程序,它能由被感染的程序和系统传播出去。一般的病毒程序并不长,用C语言编写的病毒程序通常不超过一页。称这段程序为病毒,是因为它非常像生物学上的病毒:它能自我生成成千上万的与原始病毒相同的复制品,并将它们传播到各处。计算机病毒也可在系统中复制出千千万万个与它自身一样的病毒,并把它传播到各个系统中去。
-
蠕虫(worms)
蠕虫与病毒相似,也能进行自我,并可传染给其他程序,给系统带来有害的影响,都属于恶意软件。但它与病毒有所区别,其一是:蠕虫本身是一个完整的程序,能作为一个独立的进程运行,因而它不需要寄生在其它程序上。再者,蠕虫的传播性没有病毒的强。因为蠕虫必须先找到OS或其他软件的缺陷,作为“易于攻破的薄弱环节”,然后才能借助于它们进行传播,如果该缺陷已被修复,蠕虫自然会因“无从下手”而无法传播。
-
移动代码
如果一个程序在运行时,能在不同机器之间来回迁移,那么该程序就被称为移动代码。在现在的网页中,有越来越多的页面包含了小应用程序。当人们下载包含小应用程序的网页时,小应用程序也会一起进入自己的系统。这种能在计算机系统之间移动的小应用程序就是一种移动代码。另外,为了适应电子商务的需要还出现了一种移动代码。移动代码是一段代表用户的程序,用户利用它到指定计算机上去执行某任务,然后返回报告执行情况。
5.2 计算机病毒特征和类型
-
计算机病毒的特征
(1) 寄生性
(2) 传染性
(3) 隐蔽性
(4) 破坏性
-
计算机病毒的类型
(1) 文件型病毒
(2) 内存驻留病毒
(3) 引导扇区病毒
(4) 宏病毒
(5) 电子邮件病毒
5.3 病毒的隐藏方式
-
伪装
(1) 通过压缩法伪装。
(2) 通过修改日期或时间来伪装。
-
隐藏
(1) 隐藏于目录和注册表空间。
(2) 隐藏于程序的页内零头里。
(3) 更改用于磁盘分配的数据结构。
(4) 更改坏扇区列表。
-
多形态
(1) 插入多余的指令。
(2) 对病毒程序进行加密。
5.4 病毒的预防和检测
-
病毒的预防
(1) 对于重要的软件和数据,应当定期备份到外部存储介质上,这是确保数据不丢失的最佳方法,当发现病毒后可用该备份来取代被感染的文件。
(2) 使用具有高安全性的OS。
(3) 使用正版软件。
(4) 购买性能优良的反病毒软件,按照规定要求使用,并定期升级。
(5) 对于来历不明的电子邮件不要轻易打开。
(6) 要定期检查硬盘及U盘,用反病毒软件来清除其中的病毒。
-
基于病毒数据库的病毒检测方法
(1) 建立病毒数据库。
(2) 扫描硬盘上的可执行文件。
-
完整性检测方法
完整性检测程序首先扫描硬盘,检查是否有病毒,当确信硬盘“干净”时,才正式工作。这种方法首先计算每个文件的检查和,然后再计算目录中所有相关文件的检查和,将所有检查和写入一个检查和文件中。在检查病毒时,完整性检测程序将重新计算所有文件的检查和,并分别与原来文件的检查和进行比较,若不匹配,就表明该文件已被感染上病毒。当病毒制造者了解该方法后,它也可以计算已感染病毒文件的检查和,用它来代替检查和文件中的正常值。为保证检查和文件中数据不被更改,应将检查和文件隐藏起来,更好的方法是对检查和文件进行加密,而且把加密密钥直接做在芯片上。
6.可信系统(Trusted System)
6.1 访问矩阵模型和信息流控制模型
建立可信系统的最佳途径是保持系统的简单性。然而系统设计认为,用户总是希望系统具有强大的功能和优良的性能。这样,致使所设计的OS存在许多安全隐患。有些组织特别是军事部门,它们因为更重视系统的安全性,决心要建立一个可信系统,为此应在OS核心中构建一个安全模型,模型要非常简单以确保模型的安全性。
-
安全策略
对系统安全而言,安全策略是根据系统对安全的需求所定义的一组规则及相应的描述该规则决定了对系统中数据进行保护的规则和规定每一个用户权限的规则,如哪些数据只允许系统管理员阅读和修改;又如哪些数据只允许财务部门人员访问等。安全机制是指用于执行安全策略时所必须遵循的规定和方法。
-
安全模型
安全模型用于精确描述系统的安全需求和策略。因此安全模型首先应当是精确的、同时也应当是简单和容易理解的,而且不涉及安全功能的具体实现细节。安全模型能精确地描述系统功能,这样就能帮助人们尽可能地堵住所有的安全漏洞。通常在 OS 设计时,系统的功能描述用于指导系统功能的实现,而安全模型则指导与系统安全有关的功能实现。现在已有几种安全模型,其中比较实用的是访问矩阵模型和信息流控制模型。
-
访问矩阵模型
访问矩阵模型也称为保护矩阵,系统中的每一个主体(用户)都拥有矩阵中的一行,每一个客体都拥有矩阵中的一列。客体可以是程序、文件或设备。矩阵中的交叉项用于表示某主体对某客体的存取权限集。保护矩阵决定在任何域中的进程可以执行的操作,它是由系统强制执行的,而不是被管理者授权的操作。在有的保护矩阵中,除了客体能拥有矩阵中的一列之外,主体也可拥有矩阵中的一列,此时矩阵中的交叉项所表示的是,相应行的主体与相应列的主体之间是否允许进行通信等事宜。在访问矩阵模型中,矩阵的交叉项内容的改变便意味着主体的访问权限的改变,因此必须对访问矩阵加以保护。
-
信息流控制(information flow control)模型
许多信息的泄密并非源于访问控制自身的问题,而是因为未对系统中的信息流动进行限制。为此在一个完善的保护系统中,还增加了一个信息流控制模型。它是对访问矩阵模型的补充,用于监管信息在系统中流通的有效路径,控制信息流从一个实体沿着安全途径流向另一实体。最广泛使用的信息流控制模型是Bell-LaPadula模型,该模型主要用于军事部门。在该模型中把信息分为四等:内部级(U)、秘密级©、机密级(S)和绝密级(TS)。而不同的人也将根据其级别,规定只能访问不同密级的信息。如将军为绝密级,相应地,他可以访问所有的文件;而校级军官为机密级,他能访问机密级和更低密级的文件;而尉级军官为秘密级,被限定只能访问秘密级和更低的文件,而一般士兵则仅能访问内部级文件。由此可以得出,上校可以看上尉和士兵的文件,但决不能看将军的文件。由于该模型具有多个安全等级,所以称为多级安全模型。在该模型中对信息的流动做出如下两项规定:
(1) 不能上读。在密级层中运行的进程,只能读相同或更低密级层中的对象。例如允许将军阅读中尉拥有的文件,但不允许中尉阅读将军的文件,此规则称为简单安全规则。
(2) 不能下写。在密级k层中运行的进程,只能写相同或更高密级层中的对象。例如允许中尉在将军的信箱中添加信息,但不允许将军在中尉的信箱中添加信息,这样就不至于把更高密级的内容下泄,此规则称为*规则。
6.2 可信计算基TCB(Trusted Computing Base)
可信任系统的核心是可信计算基TCB,它包含了用于检查所有与安全有关问题的访问监视器和存放许多与安全有关的信息的安全核心数据库等。只要可信计算基按规范化形式工作,就不会出现与安全有关的问题。
-
可信计算基的功能
一个典型的可信计算基在硬件方面与一般计算机系统相似,只是少了些不影响安全性的I/O设备;在TCB中应配置OS最核心的功能,如进程创建、进程切换、内存映射以及部分文件管理和设备管理功能。由于把它做得尽可能小,比较容易做正确性验证,因而TCB软件自身是可信软件。在设计TCB时,应使其独立于OS的其余部分,在它和OS的其余部分、计算机系统的其它部分之间提供安全接口。
-
安全核心数据库
为了对用户的访问进行安全控制,在TCB中配置了一个安全核心数据库。在数据库内放入许多与安全有关的信息。其中最主要的是如下两个控制模型:
(1) 访问控制模型,用于实现对用户访问文件的控制,其中列出了每个主体的访问权限和每个对象的保护属性。
(2) 信息流控制模型,用于控制信息流从一个实体沿着安全的途经流向另一个实体。 -
访问监视器
访问监视器是TCB中的一个重要组成部分,它基于主体和被访问对象的安全参数来控制主体对该对象的访问,实现有效的安全接入控制。访问监视器与安全核心数据库相连接如上图所示。访问监视器可以利用安全核心数据库中存放的访问控制文件和信息流控制文件对本次访问进行仲裁。访问监视器具有以下特性:
(1) 完全仲裁。对每一次访问都实施安全规则,保证对主存、磁盘和磁带中数据的每一次访问,均须经由它们的控制。为了提高系统的速度,通常有一部分功能由硬件实现。
(2) 隔离。保证访问监视器和安全核心数据库的安全,任何攻击者都无法改变访问监视器的逻辑结构以及安全核心数据库中的内容。
(3) 可证实性。访问监视器的正确性必须是可证明的,即在数学上可以证明访问监视器执行了安全规定,并提供了完全仲裁和隔离。
6.3 设计安全操作系统的原则
-
微内核原则
我们这里所说的微内核(通常将它们称为安全内核),与前面所说的微内核有着某些相似之处,主要表现为:首先它们都非常小,易于保证它们的正确性;其次它们都采用了策略与机制分离原则,即仅将机制部分放入安全内核中,而将策略部分放在内核的外面。们之间的差别主要表现在下面两方面:
(1) 它不仅提供OS最核心的功能,如进程切换、内存映射等功能,还是实现整个OS安全机制的基础,使安全内核成为一个可信任计算基。
(2) 在通常的微内核中,进入微内核的入口有多个,而在安全系统中,系统的其它部分与安全内核之间仅提供了唯一的安全接口。 -
策略与机制分离原则
前面提到了策略与机制的分离原则。在设计安全内核时同样应当采用策略与机制分离原则,以减小安全内核的大小和增加系统的灵活性。安全策略规定系统要达到的特定安全目标是由设计者或管理员来确定的,应将它放在安全内核外部。机制是完成特定安全策略的方法,由一组具体实现保护功能的软件或硬件实现,应将它放入安全内核中。
-
安全入口原则
在通常的微内核中,都采用了C/S模式,微内核与所有的服务器之间都存在着接口,因此可以通过多种途径进入微内核,这也就为保障OS的安全增加了困难。而在安全系统中为确保安全内核的安全,在安全内核与其它部分之间,如与其它的硬件、系统和用户软件等之间,只提供唯一的安全接口,凡是要进入安全内核进行访问者,都必须接受严格的安全检查,任何逃避检查的企图都是不能得逞的。
-
分离原则
可用多种方法来将一个用户进程与其他用户进程进行隔离,主要分离方法有:
(1) 物理分离。使各进程的活动基于不同的硬件设施。例如,在对安全性要求较高的任务进行处理时,可用专用的计算机来完成;对安全性要求一般的任务,可在公用计算机系统上来完成。
(2) 时间分离。让各进程在不同的时间运行。
(3) 密码分离。对用于加密的密钥和密文必须妥善分开保管。
(4) 逻辑分离。为确保安全内核的安全,安全内核与其它部分的硬件和软件进行隔离。 -
部分硬件实现原则
在安全内核中有一部分须用硬件实现,其原因可归结如下:
(1) 提高处理速度。为了不影响到系统的运行速度,应将对运行速度有严重影响的部分采用硬件实现。
(2) 确保系统的安全用软件实现容易受到攻击和病毒的感染,如改用硬件实现就会安全得多。 -
分层设计原则
如上所述,一个安全的计算机系统至少由四层组成:最低层是硬件,次低层是安全内核,第三层是OS,最高层是用户。其中每一层又都可分为若干个层次。安全保护机制在满足要求的情况下,应力求简单一致,并将它的一部分放入到系统的安全内核中,把整个安全内核作为OS的底层,使其最接近硬件。