162.保护和安全
保护和安全
12.1 安 全 环 境
由于社会的复杂性和某些事物的不可预知性,使得计算机系统的环境往往是不安全的。为此,必须对我们的工作环境采取“保护”措施,使之变成为一个“安全”环境。“保护”和“安全”是有不同含意的两个术语。可以把“保护”定义为:对攻击、入侵和损害系统等的行为进行防御或监视。“安全”是对系统完整性和数据安全性的可信度的衡量。
12.1.1 实现“安全环境”的主要目标和面临的威胁
1. 数据机密性(data secrecy)
数据机密性是指将机密的数据置于保密状态,仅允许被授权用户访问系统中的信息,以避免数据暴露。更确切地说,系统必须保证用户的数据,仅供被授权用户阅读,而不允许未经授权的用户阅读,以保证数据的保密性。
2. 数据完整性(data integrity)
完整性是指对数据或资源的可信赖程度,包括数据的完整性(信息内容)和来源的完整性(数据来源),通常用于表述防止不当或未经授权的修改。信息的来源可能会涉及信息的准确性和可信性,以及人们对此信息的信任程度,因此这种可信性也是系统正确运行的关键。此外,还必须能保持系统中数据的一致性。
3. 系统可用性(system availability)
可用性是指能保证计算机中的资源供授权用户随时访问,系统不会拒绝服务。更明确地说,授权用户的正常请求能及时、正确、安全地得到服务或响应。而攻击者为了达到使系统拒绝的目的,可能通过“修改”合法用户名字的方法,将他变为非法用户,使系统拒绝向该合法用户提供服务。此外,拒绝服务还可能由硬件故障引起,如磁盘故障、电源掉电等,也可能由软件故障引起。
12.1.2 系统安全的特征
1. 多面性
在大型系统中通常存在着多个风险点,在这些风险点应从三方面采取措施加以防范:
(1) 物理安全
(2) 逻辑安全
(3) 安全管理
2. 动态性
由于信息技术不断发展和攻击手段层出不穷,使系统的安全问题呈现出以下的动态性:
(1) 信息的时效性。
(2) 攻击手段的不断翻新。
3. 层次性
大型系统的安全问题是一个相当复杂的问题,因此必需采用系统工程的方法解决。为了简化系统安全的复杂性,系统安全通常采用层次-模块化结构方法:
首先将系统安全问题划分为若干个安全主题(功能模块),作为最高层;然后再将其中每一个安全主题功能模块分成若干个安全子功能模块,作为次高层;此后再进一步将一个安全子功能模块分为若干安全孙功能模块,作为第三层;其最低一层是一组最小可选择的安全功能模块,用多个层次的安全功能模块来覆盖整个系统安全的各个方面。
4. 适度性
当前几乎所有的单位在实现系统安全工程时,都遵循了适度安全准则,即根据实际需要提供适度的安全目标加以实现。这是因为:
(1) 由于系统安全的多面性,使对安全问题的全面覆盖基本上不可能实现;
(2) 实现全覆盖所需的成本也是难以令人接受的;
(3) 由于系统安全的动态性,即使当时实现了安全问题的全覆盖,随着计算机技术的迅速发展,企业规模的不断扩大,必然很快就会出现新的问题。
12.1.3 计算机安全的分类
1. CC的由来
对一个安全产品(系统)进行评估,是件十分复杂的事,需要有一个能被广泛接受的评估标准。
2. 计算机安全的分类
在“可信任计算机系统评价标准”中将计算机系统的安全程度划分为:D、C、B、A四类。共分为D、C1、C2、B1、B2、B3和A1七个等级。
(1) 类,
(2) 1级。
(3) 2级。
(4) 1级。
(5) 2级。
(6) 3级。
(7) 1级。
12.2 数据加密技术
12.2.1 数据加密原理
加密是一种密写科学,用于把系统中的数据(称为明文)转换为密文。使攻击者即使截获到被加密的数据,也无法了解数据的内容,从而有效地保护了系统中信息的安全性。数据加密技术包括:数据加密、数据解密、数字签名、签名识别以及数字证明等。
1. 数据加密模型
早在几千年前,人类就已经有了通信保密的思想,并先后出现了易位法和置换法等加密方法。但直至进入20世纪60年代,由于科学技术的发展,才使密码学的研究进入了一个新的发展时期。计算机网络的发展,尤其是Internet广泛深入的应用,又推动了数据加密技术的迅速发展。
图12-1 数据加密模型
2. 基本加密方法
1) 易位法
易位法是按照一定的规则,重新安排明文中的比特或字符的顺序来形成密文,而字符本身保持不变。按易位单位的不同,又可分成比特易位和字符易位两种。
图12-2 按字符易位加密算法
2) 置换法
置换法是按照一定的规则,用一个字符去置换(替代)另一个字符来形成密文。最早由朱叶斯·凯撒(Julius caeser)提出的算法非常简单,它是将字母a、b、c、…、x、y、z循环右移三位后,即利用d置换a,用e置换b等。凯撒算法的推广是移动K位。单纯移动K位的置换算法很容易被破译,比较好的置换算法是进行映像。
图12-3 26个字母的映像
12.2.2 对称加密算法与非对称加密算法
1. 对称加密算法
在对称加密算法中,在加密算法和解密算法之间存在着一定的相依关系,即加密和解密算法往往使用相同的密钥;或者在知道了加密密钥Ke后,就很容易推导出解密密钥Kd。最有代表性的对称加密算法是数据加密标准DES(Data Eneryption Standard)。ISO现在已将DES作为数据加密标准。
2. 非对称加密算法
非对称加密算法的加密密钥Ke和解密密钥Kd不同,而且难以从Ke推导出Kd来,故而可将其中的一个密钥公开而成为公开密钥,故该算法也可称为公开密钥算法。每个用户保存一对密钥,每个人的公开密钥都对外公开。假如某用户要与另一用户通信,他可用公开密钥对数据进行加密,而收信者则用自己的私用密钥进行解密。这样就可以保证信息不会外泄。
12.2.3 数字签名和数字证明书
1. 数字签名
在金融和商业等系统中,许多业务都要求在单据上签名或加盖印章,以证实其真实性,备日后查验。在利用计算机网络传送报文时,可将公开密钥法用于电子(数字)签名,来代替传统的签名。而为使数字签名能代替传统的签名,必须满足下述三个条件:
(1) 接收者能够核实发送者对报文的签名。
(2) 发送者事后不能抵赖其对报文的签名。
(3) 接收者无法伪造对报文的签名。
1) 简单数字签名
在这种数字签名方式中,发送者A可使用私用密钥Kda对明文P进行加密,形成DKda(P)后传送给接收者B。B可利用A的公开密钥Kea对DKda(P)进行解密,得到EKea(DKda(P))=P,如图12-4(a)所示。
图12-4 数字签名示意图
2) 保密数字签名
为了实现在发送者A和接收者B之间的保密数字签名,要求A和B都具有密钥,再按照图12-4(b)所示的方法进行加密和解密:
(1) 发送者A可用自己的私用密钥Kda对明文P加密,得到密文DKda(P)。
(2) 再用B的公开密钥Keb对DKda(P)进行加密,得到EKeb(DKda(P))后送B。
(3) 收到后,先用私用密钥Kdb进行解密,即DKdb(EKeb(DKda(P)))=DKda(P)。
(4) 再用A的公开密钥Kea对DKda(P)进行解密,得到EKea(DKda(P)) 。
2. 数字证明书(Certificate)
虽然可以利用公开密钥方法进行数字签名,但事实上又无法证明公开密钥的持有者是合法的持有者。为此,必须有一个大家都信得过的认证机构CA(Certification Authority),由该机构为公开密钥发放一份公开密钥证明书,该公开密钥证明书又称为数字证明书,用于证明通信请求者的身份。
12.3 用 户 验 证
验证又称为识别或认证。当用户要登录一台多用户计算机时,操作系统将对该用户进行验证(Authentication),这一过程称为用户验证。用户验证的目的在于确定被验证的对象(包括人和事)是否真实,即确认“你是否是你所声称的你”,以防止入侵者进行假冒、篡改等。通常利用验证技术作为保障网络安全的第一道防线。
12.3.1 使用口令验证
1. 口令
用户要上机时系统首先要求用户输入用户名。登录程序利用该名字去查找一张用户注册表,若从中找到匹配的用户名后,再要求用户输入口令,如果输入的口令也与注册表中的口令一致,系统便认为该用户是合法用户,允许该用户进入系统;否则将拒绝该用户登录。
2. 提高口令安全性的方法
攻击者可通过多种方式来获取用户登录名和口令,其中最常用的方式是直接猜出用户所使用的口令。为提高口令的安全性,必须能防止攻击者猜出口令。为此,口令机制通常应满足以下几点要求:
(1) 口令应适当长。
(2) 应采用多种字符。
(3) 自动断开连接。
(4) 回送显示的安全性。
(5) 记录和报告。
3. 一次性口令(One time Password)
为了防止口令外泄,用户应当经常改变口令,一种极端的情况是采用一次性口令机制,即口令被使用一次后就换另一个口令。在采用该机制时,用户必须给系统提供一张口令表,其中记录有其使用的口令序列。系统为该表设置一指针,用于指示下次用户登录时所应使用的口令。
4. 口令文件
通常在口令机制中都配置有一份口令文件,用于保存合法用户的口令和与用户的特权。该文件的安全性至关重要,一旦攻击者访问了该文件,将使整个计算机系统无安全性可言。保证口令文件安全性最有效的方法是利用加密技术,其中一个行之有效的方法是选择一个函数来对口令进行加密。该函数f(x)具有这样的特性:在给定了x值后,很容易算出f(x);然而,如果给定了f(x)值,却不能算出x的值。利用f(x)函数去加密所有的口令,再将加密后的口令存入口令文件中。
图12-5 对加密口令的验证方法
5. 挑战—响应验证
在该方法中,由用户自己选择一个算法,算法可以很简单也可较复杂,如X2,并将该算法告知服务器。每当用户登录时,服务器就给用户发来一个随机数,如12,用户收到后,按所选算法对该数据进行平方运算,得到144,并用它作为口令。服务器再将所收到的口令与自己计算(利用X2算法)的结果进行比较,如相同便允许用户上机,否则拒绝用户登录。由于该方法所使用的口令不是一个固定数据,而是基于服务器随机产生的数再经过计算得到的,因此令攻击难于猜测。如果再频繁地改变算法就更为安全。
12.3.2 基于物理标志的验证技术
1. 基于磁卡的验证技术
目前广泛使用的银行现金卡、公交卡等,都普遍采用磁卡。这是一块其大小和名片相仿的塑料卡,在其上贴有含若干条磁道的磁条。一般在磁条上有三条磁道,每条磁道可用来记录不同数量的数据。如果在磁条上记录了用户名、用户密码、账号和金额,这就是银行卡;而如果在磁条上记录的是有关用户的信息,该卡便可作为识别用户身份的物理标志。
2. 基于IC卡的验证技术
在外观上IC卡与磁卡并无明显差异,但在IC卡中可装入CPU和存储器芯片,使该卡具有一定的智能,故又称智能卡。IC卡中的CPU用于对内部数据的访问和与外部数据进行交换,还可用加密算法对数据进行处理,这使IC卡比磁卡具有更强的防伪性和保密性,因而IC卡正在逐步取代磁卡。根据卡中装入芯片的不同,可把IC卡分为以下三种类型:
(1) 存储器卡。
(2) 微处理器卡。
(3) 密码卡。
12.3.3 生物识别验证技术
1. 常用于身份识别的生理标志
被选用的生理标志应具有这样三个条件:① 足够的可变性,系统可根据它来区别成千上万的不同用户;② 应保持稳定,不会经常发生变化;③ 不易被伪装。
下面介绍几种常用的生理标志。
(1) 指纹。
(2) 眼纹。
(3) 声音。
(4) 人脸。
2. 生物识别系统的组成
1) 对生物识别系统的要求
要设计出一个非常实用的生物识别系统必须满足三方面的要求:
(1) 性能需求。
(2) 易于被用户接受。
(3) 成本合理。
2) 生物识别系统的组成
生物识别系统通常是由如下三部分组成的:
(1) 生物特征采集器。
(2) 注册部分。
(3) 识别部分。
3. 指纹识别系统
20世纪80年代指纹自动识别系统虽已在许多国家使用,但体积较大。直至90年代中期,随着VLSI的迅速发展,才使指纹识别系统小型化,使该技术进入了广泛应用的阶段。
(1) 指纹采集传感器。
(2) 指纹识别系统。
12.4 来自系统内部的攻击
攻击者对计算机系统进行攻击的方法有多种,可将之分为两大类:内部攻击和外部攻击。内部攻击一般是指攻击来自系统内部。它又可进一步分为两类:
(1) 以合法用户身份直接进行攻击。
(2) 通过代理功能进行间接攻击。
12.4.1 早期常采用的攻击方式
我们先介绍常用的内部攻击方式。在设计操作系统时必须了解这些攻击方式,并采取必要的防范措施。
(1) 窃取尚未清除的有用信息。
(2) 通过非法的系统调用搅乱系统。
(3) 使系统自己封杀校验口令程序。
(4) 尝试许多在明文规定中不允许做的操作。
(5) 在OS中增添陷阱门。
(6) 骗取口令。
12.4.2 逻辑炸弹和陷阱门
近年来更流行利用恶意软件进行攻击的攻击方式。所谓恶意软件(malware),是指攻击者专门编制的一种程序,用来造成破坏。它们通常伪装成合法软件,或隐藏在合法软件中,使人们难以发现。有些恶意软件还可以通过各种方式传播到其它计算机中。依据恶意软件是否能独立运行可将它分为两类:
(1) 独立运行类
(2) 寄生类
1. 逻辑炸弹(logic bomb)
1) 逻辑炸弹实例
逻辑炸弹是较早出现的一种恶意软件,它最初出自于某公司的程序员,是为了应对他可能被突然解雇,而预先秘密放入OS中的一个破坏程序(逻辑炸弹)。只要程序员每天输入口令,该程序就不会发作。但如果程序员在事前未被警告,就突然被解雇时,在第二天(或第二周)由于得不到口令,逻辑炸弹就会引爆——执行一段带破坏性的程序,这段程序通常会使正常运行的程序中断,随机删除文件,或破坏硬盘上的所有文件,甚至于引发系统崩溃。
2) 逻辑炸弹爆炸的条件
每当所寄生的应用程序运行时,就会运行逻辑炸弹程序,它会检查所设置的爆炸条件是否满足,如满足就引发爆炸;否则继续等待。触发逻辑炸弹爆炸的条件有很多,较常用的有:
(1) 时间触发
(2) 事件触发
(3) 计数器触发
2. 陷阱门(trap door)
1) 陷阱门的基本概念
通常,当程序员在开发一个程序时,都要通过一个验证过程。为了方便对程序的调试,程序员希望获得特殊的权限,以避免必需的验证。陷阱门其实就是一段代码,是进入一个程序的隐蔽入口点。有此陷阱门,程序员可以不经过安全检查即可对程序进行访问,也就是说,程序员通过陷阱门可跳过正常的验证过程。长期以来,程序员一直利用陷阱门来调试程序并未出现什么问题。但如果被怀有恶意的人用于未授权的访问,陷阱门便构成了对系统安全的严重威胁。
2) 陷阱门实例
我们通过一个简单的例子来说明陷阱门。正常的登录程序代码如图12-6(a)所示,该程序最后两句的含意是,仅当输入的用户名和口令都正确时,才算用户登录成功。但如果我们将该程序的最后一条语句稍作修改,得到如图12-6(b)所示的登录程序代码,此时最后两句的含意已改变为:当输入的用户名和口令都正确时,或者使用登录名为“zzzzz”时,无论用什么口令,都能成功登录上机。
图12-6 陷阱门实例
12.4.3 特洛伊木马和登录欺骗
1. 特洛伊木马(trojan horses)的基本概念
特洛伊木马是指一种恶意软件,它是一个嵌入到有用程序中的、隐蔽的、危害安全的程序。当该程序执行时会引发隐蔽代码执行,产生难以预期的后果。
2. 特洛伊木马实例
编写特洛伊木马程序的人,将其隐藏在一个新游戏程序中,并将该游戏程序送给某计算机系统的系统操作员。操作员在玩新游戏程序时,前台确实是在玩游戏,但隐藏在后台运行的特洛伊木马程序却将系统中的口令文件复制到该骇客的文件中。虽然口令文件是系统中非常保密的文件,但操作员在游戏时是在高特权模式下运行的,特洛伊木马就继承了系统操作员的高特权,因此它就能够访问口令文件。
3. 登录欺骗(login spoofing)
我们以UNIX系统为例来说明登录欺骗。攻击者为了进行登录欺骗,写了一个欺骗登录程序,该程序同样会在屏幕显示Login: ,用于欺骗其他用户进行登录。当有一用户输入登录名后,欺骗登录程序也要求它输入口令。然后却把刚输入的登录名和口令写入一份事先准备好的文件中,并发出信号以请求结束shell程序,于是欺骗登录程序退出登录,同时也去触发真正的登录程序。在屏幕上又显示出“Login: ,此时真正的登录程序开始工作。对用户而言,他自然以为是自己输入发生了错误,系统要求重新输入。
12.4.4 缓冲区溢出
由于C语言编译器存在着某些漏洞,如它对数组不进行边界检查。例如下面的代码是不合法的,数组范围是1024,而所包含的数字却有12 00个。然而在编译时却未对此检查,攻击者可以利用此漏洞来进行攻击。
int i;
char C[1024];
i=12000;
c[i]=0;
图12-7 缓冲区溢出前后的情况
12.5 来自系统外部的攻击
12.5.1 病毒、蠕虫和移动代码
当前最严重的外来威胁是病毒、蠕虫和移动代码等。其中尤其是病毒和蠕虫,天天都在威胁着系统的安全,以致在广播、电视中,都不得不经常发布病毒和蠕虫的警告消息。
1. 病毒(viruses)
计算机病毒是一段程序,它能把自己附加在其它程序之中,并不断地自我复制,然后去感染其它程序,它能由被感染的程序和系统传播出去。一般的病毒程序并不长,用C语言编写的病毒程序通常不超过一页。称这段程序为病毒,是因为它非常像生物学上的病毒:它能自我生成成千上万的与原始病毒相同的复制品,并将它们传播到各处。计算机病毒也可在系统中复制出千千万万个与它自身一样的病毒,并把它传播到各个系统中去。
2. 蠕虫(worms)
蠕虫与病毒相似,也能进行自我复制,并可传染给其它程序,给系统带来有害的影响,都属于恶意软件。但它与病毒有所区别,其一是:蠕虫本身是一个完整的程序,能作为一个独立的进程运行,因而它不需要寄生在其它程序上。再者,蠕虫的传播性没有病毒的强。因为蠕虫必须先找到OS或其它软件的缺陷,作为“易于攻破的薄弱环节”,然后才能借助于它们进行传播,如果该缺陷已被修复,蠕虫自然会因“无从下手”而无法传播。
3. 移动代码
1) 移动代码简述
在因特网上,如果能在远程计算机上执行代码,便认为系统具有远程执行功能。如果一个程序在运行时,能在不同机器之间来回迁移,那么该程序就被称为移动代码。
2) 移动代码的安全运行
如果在一个用户程序中包含了移动代码,当为该用户程序建立进程后,该移动代码将占用该进程的内存空间,并作为合法用户的一部分运行,拥有用户的访问权限。
3) 防范移动代码的方法——沙盒法
沙盒法的基本思想是采用隔离方法。具体做法是把虚拟地址空间,分为若干个相同大小的区域,每个区域称为一个沙盒。
4) 防范移动代码的方法——解释法
解释法是对移动代码的运行采取解释执行方式。解释执行的好处是,每一条语句在执行前都经解释器检查,特别是对移动代码所发出的系统调用进行检查。若移动代码是可信的(来自本地硬盘),就按正常情况进行处理;否则(如来自因特网),就将它放入沙盒中来限制它的运行。
12.5.2 计算机病毒特征和类型
1. 计算机病毒的特征
计算机病毒与一般的程序相比,显现出以下四个明显的特征:
(1) 寄生性。
(2) 传染性。
(3) 隐蔽性。
(4) 破坏性。
2. 计算机病毒的类型
(1) 文件型病毒。
(2) 内存驻留病毒。
(3) 引导扇区病毒。
(4) 宏病毒。
(5) 电子邮件病毒。
图12-8 病毒附加在文件中的情况
12.5.3 病毒的隐藏方式
1. 伪装
当病毒附加到正常文件后会使被感染文件发生变化,为了逃避检测,病毒将把自己伪装起来,使被感染过的文件与原有文件一样。常见的伪装方式有两种:
(1) 通过压缩法伪装。
(2) 通过修改日期或时间来伪装。
图12-9 病毒伪装示意图
2. 隐藏
为了逃避反病毒软件的检测,病毒自然应隐藏在一个不易检查到的地方。当前常采用的隐藏方法有以下几种:
(1) 隐藏于目录和注册表空间。
(2) 隐藏于程序的页内零头里。
(3) 更改用于磁盘分配的数据结构。
(4) 更改坏扇区列表。
3. 多形态
多形态病毒在进行病毒复制时采用了较为复杂的技术,使所产生的病毒在功能上是相同的,但形态各异,病毒的形态少者数十种,多则成千上万,然后将这些病毒附加到其它尚未感染的文件上。常用的产生多态病毒的方法有:
(1) 插入多余的指令。
(2) 对病毒程序进行加密。
12.5.4 病毒的预防和检测
1. 病毒的预防
用户可用哪些方法来预防病毒呢? 下面列出若干方法和建议供参考。
(1) 对于重要的软件和数据,应当定期备份到外部存储介质上,这是确保数据不丢失的最佳方法,当发现病毒后可用该备份来取代被感染的文件。
(2) 使用具有高安全性的OS,这样的OS具有许多安全保护措施来保障系统的安全,使病毒不能感染到系统代码。
(3) 使用正版软件,应当知道,从网上Web站点下载软件的做法是十分冒险的,即使是必须下载的,也要使用最新的防病毒软件,防范病毒的入侵。
(4) 购买性能优良的反病毒软件,按照规定要求使用,并定期升级。
(5) 对于来历不明的电子邮件不要轻易打开。
(6) 要定期检查硬盘及U盘,用反病毒软件来清除其中的病毒。
2. 基于病毒数据库的病毒检测方法
通过被感染文件的长度或者日期和时间的改变来发现病毒的方法在早期还可奏效,而现在这种检测方法虽然很难再有效,但伪装病毒还是难于逃避基于病毒数据库的病毒检测方法的检查,该方法描述如下:
(1) 建立病毒数据库。
(2) 扫描硬盘上的可执行文件。
3. 完整性检测方法
完整性检测程序首先扫描硬盘,检查是否有病毒,当确信硬盘“干净”时,才正式工作。这种方法首先计算每个文件的检查和,然后再计算目录中所有相关文件的检查和,将所有检查和写入一个检查和文件中。在检测病毒时,完整性检测程序将重新计算所有文件的检查和,并分别与原来文件的检查和进行比较,若不匹配,就表明该文件已被感染上病毒。当病毒制造者了解该方法后,它也可以计算已感染病毒文件的检查和,用它来代替检查和文件中的正常值。
12.6 可信系统(Trusted System)
12.6.1 访问矩阵模型和信息流控制模型
建立可信系统的最佳途径是保持系统的简单性。然而系统设计者认为,用户总是希望系统具有强大的功能和优良的性能。这样,致使所设计出的OS存在许多安全隐患。有些组织特别是军事部门,他们因为更重视系统的安全性,决心要建立一个可信系统,为此应在OS核心中构建一个安全模型,模型要非常简单以确保模型的安全性。
1. 安全策略
对系统安全而言,安全策略是根据系统对安全的需求所定义的一组规则及相应的描述。该规则决定了对系统中数据进行保护的规则和规定每一个用户权限的规则,如哪些数据只允许系统管理员阅读和修改;又如哪些数据只允许财务部门人员访问等。安全机制是指用于执行安全策略时所必须遵循的规定和方法。
2. 安全模型
安全模型用于精确描述系统的安全需求和策略。因此安全模型首先应当是精确的、同时也应当是简单和容易理解的,而且不涉及安全功能的具体实现细节。安全模型能精确地描述系统功能,这样就能帮助人们尽可能地堵住所有的安全漏洞。通常在OS设计时,系统的功能描述用于指导系统功能的实现,而安全模型则指导与系统安全有关的功能实现。现在已有几种安全模型,其中比较实用的是访问矩阵模型和信息流控制模型。
3. 访问矩阵模型
访问矩阵模型也称为保护矩阵,系统中的每一个主体(用户)都拥有矩阵中的一行,每一个客体都拥有矩阵中的一列。客体可以是程序、文件或设备。矩阵中的交叉项用于表示某主体对某客体的存取权限集。保护矩阵决定在任何域中的进程可以执行的操作,它是由系统强制执行的,而不是被管理者授权的操作。
4. 信息流控制(information flow control)模型
许多信息的泄密并非源于访问控制自身的问题,而是因为未对系统中的信息流动进行限制。为此在一个完善的保护系统中,还增加了一个信息流控制模型。它是对访问矩阵模型的补充,用于监管信息在系统中流通的有效路径,控制信息流从一个实体沿着安全途径流向另一实体。
在该模型中对信息的流动做出如下两项规定:
(1) 不能上读。
(2) 不能下写。
图12-10 Bell-La Padula 模型
12.6.2 可信计算基TCB(Trusted Computing Base)
1. 可信计算基的功能
一个典型的可信计算基在硬件方面与一般计算机系统相似,只是少了些不影响安全性的I/O设备;在TCB中应配置OS最核心的功能,如进程创建、进程切换、内存映射以及部分文件管理和设备管理功能。
图12-11 可信任计算基TCB
2. 安全核心数据库
为了对用户的访问进行安全控制,在TCB中配置了一个安全核心数据库。在数据库内放入许多与安全有关的信息。其中最主要的是如下两个控制模型:
(1) 访问控制模型,用于实现对用户访问文件的控制,其中列出了每个主体的访问权限和每个对象的保护属性。
(2) 信息流控制模型,用于控制信息流从一个实体沿着安全的途经流向另一个实体。
3. 访问监视器
访问监视器是TCB中的一个重要组成部分,它基于主体和被访问对象的安全参数来控制主体对该对象的访问,实现有效的安全接入控制。访问监视器与安全核心数据库相连接,如图12-11所示。访问监视器具有以下特性:
(1) 完全仲裁。
(2) 隔离。
(3) 可证实性。
12.6.3 设计安全操作系统的原则
1. 微内核原则
我们这里所说的微内核(通常将它们称为安全内核),与前面所说的微内核有着某些相似之处,主要表现为:首先它们都非常小,易于保证它们的正确性;其次它们都采用了策略与机制分离原则,即仅将机制部分放入安全内核中,而将策略部分放在内核的外面。
2. 策略与机制分离原则
前面提到了策略与机制的分离原则。在设计安全内核时同样应当采用策略与机制分离原则,以减小安全内核的大小和增加系统的灵活性。安全策略规定系统要达到的特定安全目标是由设计者或管理员来确定的,应将它放在安全内核外部。机制是完成特定安全策略的方法,由一组具体实现保护功能的软件或硬件实现,应将它放入安全内核中。
3. 安全入口原则
在通常的微内核中,都采用了C/S模式,微内核与所有的服务器之间都存在着接口,因此可以通过多种途径进入微内核,这也就为保障OS的安全增加了困难。而在安全系统中为确保安全内核的安全,在安全内核与其它部分之间,如与其它的硬件、系统和用户软件等之间,只提供唯一的安全接口,凡是要进入安全内核进行访问者,都必须接受严格的安全检查,任何逃避检查的企图都是不能得逞的。
4. 分离原则
可用多种方法来将一个用户进程与其他用户进程进行隔离,主要分离方法有:
(1) 物理分离。
(2) 时间分离。
(3) 密码分离。
(4) 逻辑分离。
5. 部分硬件实现原则
在安全内核中有一部分须用硬件实现,其原因可归结如下:
(1) 提高处理速度。
(2) 确保系统的安全性。
6. 分层设计原则
如上所述,一个安全的计算机系统至少由四层组成:最低层是硬件,次低层是安全内核,第三层是OS,最高层是用户。其中每一层又都可分为若干个层次。安全保护机制在满足要求的情况下,应力求简单一致,并将它的一部分放入到系统的安全内核中,把整个安全内核作为OS的底层,使其最接近硬件。
习 题 8:
1. 系统安全性的主要目标是什么?
2. 系统安全性的复杂性表现在哪几个方面?
3. 对系统安全性的威胁有哪几种类型?
4. 可信任计算机系统评价标准将计算机系统的安全度分为哪几个等级?
5. 何谓对称加密算法和非对称加密算法?
6. 什么是易位法和置换算法? 试举例说明置换算法。
7. 试说明非对称加密算法的主要特点。
8. 试说明保密数据签名的加密和解密方式。
9. 数字证明书的作用是什么? 用一例来说明数字证明书的申请、发放和使用过程。
10. 可利用哪几种方式来确定用户身份的真实性?
11. 在基于口令机制的认证技术中,通常应满足哪些要求?
12. 试说明一种对加密口令进行验证的方法。
13. 基于物理标志的认证技术又可细分为哪几种?
14. 智能卡可分为哪几种类型? 这些是否都可用于基于用户持有物的认证技术中?
15. 被选用的生理标志应具有哪几个条件? 请列举几种常用的生理标志。
16. 对生物识别系统的要求有哪些? 一个生物识别系统通常是由哪儿部分组成?
17. 早期常采用的内部攻击方式有哪几种?
18. 何谓逻辑炸弹? 较常用的引爆条件有哪些?
19. 何谓陷阱门和特洛伊木马? 试举例说明之。
20. 何谓缓冲区溢出? 攻击者如何利用缓冲区溢出进行攻击?
21. 什么是病毒和蠕虫? 它们之间有何异同处?
22. 什么是移动代码? 为什么说在应用程序中包含了移动代码就可能不安全?
23. 计算机病毒的特征是什么? 它与一般的程序有何区别?
24. 计算机病毒有哪几种类型? 试简单说明之。
25. 什么是文件型病毒? 试说明文件型病毒对文件的感染方式。
26. 病毒设计者采取了哪几种隐藏方式来让病毒逃避检测?
27. 用户可采用哪些方法来预防病毒?
28. 试说明基于病毒数据库的病毒检测方法。