由于社会的复杂性和某些事物的不可预知性,使得计算机系统的环境往往是不安全的。为此,必须对我们的工作环境采取“保护”措施,使之变成为一个“安全”环境。“保护”和“安全”是有不同含意的两个术语。可以把“保护”定义为:对攻击、入侵和损害系统等的行为进行防御或监视。“安全”是对系统完整性和数据安全性的可信度的衡量。
1.数据机密性(datasecrecy)
2.数据完整性(dataintegrity)
3.系统可用性(systemavailability)
1.多面性
在大型系统中通常存在着多个风险点,在这些风险点应从三方面采取措施加以防范:
(1)物理安全
(2)逻辑安全
(3)安全管理
2.动态性
由于信息技术不断发展和攻击手段层出不穷,使系统的安全问题呈现出以下的动态性:
(1)信息的时效性。
(2)攻击手段的不断翻新。
3.层次性
大型系统的安全问题是一个相当复杂的问题,因此必需采用系统工程的方法解决。为了简化系统安全的复杂性,系统安全通常采用层次-模块化结构方法:
首先将系统安全问题划分为若干个安全主题(功能模块),作为最高层;然后再将其中每一个安全主题功能模块分成若干个安全子功能模块,作为次高层;此后再进一步将一个安全子功能模块分为若干安全孙功能模块,作为第三层;其最低一层是一组最小可选择的安全功能模块,用多个层次的安全功能模块来覆盖整个系统安全的各个方面。
4.适度性
当前几乎所有的单位在实现系统安全工程时,都遵循了适度安全准则,即根据实际需要提供适度的安全目标加以实现。这是因为:
(1)由于系统安全的多面性,使对安全问题的全面覆盖基本上不可能实现;
(2)实现全覆盖所需的成本也是难以令人接受的;
(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级。
加密是一种密写科学,用于把系统中的数据(称为明文)转换为密文。使攻击者即使截获到被加密的数据,也无法了解数据的内容,从而有效地保护了系统中信息的安全性。数据加密技术包括:数据加密、数据解密、数字签名、签名识别以及数字证明等。
1.数据加密模型
早在几千年前,人类就已经有了通信保密的思想,并先后出现了易位法和置换法等加密方法。但直至进入20世纪60年代,由于科学技术的发展,才使密码学的研究进入了一个新的发展时期。计算机网络的发展,尤其是Internet广泛深入的应用,又推动了数据加密技术的迅速发展。
图12-1数据加密模型
2.基本加密方法
1)易位法
易位法是按照一定的规则,重新安排明文中的比特或字符的顺序来形成密文,而字符本身保持不变。按易位单位的不同,又可分成比特易位和字符易位两种。
图12-2按字符易位加密算法
2)置换法
置换法是按照一定的规则,用一个字符去置换(替代)另一个字符来形成密文。最早由朱叶斯·凯撒(Juliuscaeser)提出的算法非常简单,它是将字母a、b、c、…、x、y、z循环右移三位后,即利用d置换a,用e置换b等。凯撒算法的推广是移动K位。单纯移动K位的置换算法很容易被破译,比较好的置换算法是进行映像。
图12-326个字母的映像
1.对称加密算法
在对称加密算法中,在加密算法和解密算法之间存在着一定的相依关系,即加密和解密算法往往使用相同的密钥;或者在知道了加密密钥Ke后,就很容易推导出解密密钥Kd。最有代表性的对称加密算法是数据加密标准DES(DataEneryptionStandard)。ISO现在已将DES作为数据加密标准。
2.非对称加密算法
非对称加密算法的加密密钥Ke和解密密钥Kd不同,而且难以从Ke推导出Kd来,故而可将其中的一个密钥公开而成为公开密钥,故该算法也可称为公开密钥算法。每个用户保存一对密钥,每个人的公开密钥都对外公开。假如某用户要与另一用户通信,他可用公开密钥对数据进行加密,而收信者则用自己的私用密钥进行解密。这样就可以保证信息不会外泄。
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(CertificationAuthority),由该机构为公开密钥发放一份公开密钥证明书,该公开密钥证明书又称为数字证明书,用于证明通信请求者的身份。
1.口令
2.提高口令安全性的方法
(1)口令应适当长。
(2)应采用多种字符。
(3)自动断开连接。
(4)回送显示的安全性。
(5)记录和报告。
3.一次性口令(OnetimePassword)
4.口令文件
通常在口令机制中都配置有一份口令文件,用于保存合法用户的口令和与用户的特权。该文件的安全性至关重要,一旦攻击者访问了该文件,将使整个计算机系统无安全性可言。保证口令文件安全性最有效的方法是利用加密技术,其中一个行之有效的方法是选择一个函数来对口令进行加密。该函数f(x)具有这样的特性:在给定了x值后,很容易算出f(x);然而,如果给定了f(x)值,却不能算出x的值。利用f(x)函数去加密所有的口令,再将加密后的口令存入口令文件中。
图12-5对加密口令的验证方法
5.挑战—响应验证
1.基于磁卡的验证技术
目前广泛使用的银行现金卡、公交卡等,都普遍采用磁卡。这是一块其大小和名片相仿的塑料卡,在其上贴有含若干条磁道的磁条。一般在磁条上有三条磁道,每条磁道可用来记录不同数量的数据。如果在磁条上记录了用户名、用户密码、账号和金额,这就是银行卡;而如果在磁条上记录的是有关用户的信息,该卡便可作为识别用户身份的物理标志。
2.基于IC卡的验证技术
在外观上IC卡与磁卡并无明显差异,但在IC卡中可装入CPU和存储器芯片,使该卡具有一定的智能,故又称智能卡。IC卡中的CPU用于对内部数据的访问和与外部数据进行交换,还可用加密算法对数据进行处理,这使IC卡比磁卡具有更强的防伪性和保密性,因而IC卡正在逐步取代磁卡。根据卡中装入芯片的不同,可把IC卡分为以下三种类型:
(1)存储器卡。
(2)微处理器卡。
(3)密码卡。
1.常用于身份识别的生理标志
被选用的生理标志应具有这样三个条件:①足够的可变性,系统可根据它来区别成千上万的不同用户;②应保持稳定,不会经常发生变化;③不易被伪装。
下面介绍几种常用的生理标志。
(1)指纹。
(2)眼纹。
(3)声音。
(4)人脸。
2.生物识别系统的组成
1)对生物识别系统的要求
要设计出一个非常实用的生物识别系统必须满足三方面的要求:
(1)性能需求。
(2)易于被用户接受。
(3)成本合理。
2)生物识别系统的组成
生物识别系统通常是由如下三部分组成的:
(1)生物特征采集器。
(2)注册部分。
(3)识别部分。
3.指纹识别系统
20世纪80年代指纹自动识别系统虽已在许多国家使用,但体积较大。直至90年代中期,随着VLSI的迅速发展,才使指纹识别系统小型化,使该技术进入了广泛应用的阶段。
(1)指纹采集传感器。
(2)指纹识别系统。
攻击者对计算机系统进行攻击的方法有多种,可将之分为两大类:内部攻击和外部攻击。内部攻击一般是指攻击来自系统内部。它又可进一步分为两类:
(1)以合法用户身份直接进行攻击。
(2)通过代理功能进行间接攻击。
我们先介绍常用的内部攻击方式。在设计操作系统时必须了解这些攻击方式,并采取必要的防范措施。
(1)窃取尚未清除的有用信息。
(2)通过非法的系统调用搅乱系统。
(3)使系统自己封杀校验口令程序。
(4)尝试许多在明文规定中不允许做的操作。
(5)在OS中增添陷阱门。
(6)骗取口令。
近年来更流行利用恶意软件进行攻击的攻击方式。所谓恶意软件(malware),是指攻击者专门编制的一种程序,用来造成破坏。它们通常伪装成合法软件,或隐藏在合法软件中,使人们难以发现。有些恶意软件还可以通过各种方式传播到其它计算机中。依据恶意软件是否能独立运行可将它分为两类:
(1)独立运行类
(2)寄生类
1.逻辑炸弹(logicbomb)
1)逻辑炸弹实例
逻辑炸弹是较早出现的一种恶意软件,它最初出自于某公司的程序员,是为了应对他可能被突然解雇,而预先秘密放入OS中的一个破坏程序(逻辑炸弹)。只要程序员每天输入口令,该程序就不会发作。但如果程序员在事前未被警告,就突然被解雇时,在第二天(或第二周)由于得不到口令,逻辑炸弹就会引爆——执行一段带破坏性的程序,这段程序通常会使正常运行的程序中断,随机删除文件,或破坏硬盘上的所有文件,甚至于引发系统崩溃。
2)逻辑炸弹爆炸的条件
每当所寄生的应用程序运行时,就会运行逻辑炸弹程序,它会检查所设置的爆炸条件是否满足,如满足就引发爆炸;否则继续等待。触发逻辑炸弹爆炸的条件有很多,较常用的有:
(2)事件触发
(3)计数器触发
2.陷阱门(trapdoor)
1)陷阱门的基本概念
2)陷阱门实例
图12-6陷阱门实例
1.特洛伊木马(trojanhorses)的基本概念
特洛伊木马是指一种恶意软件,它是一个嵌入到有用程序中的、隐蔽的、危害安全的程序。当该程序执行时会引发隐蔽代码执行,产生难以预期的后果。
2.特洛伊木马实例
编写特洛伊木马程序的人,将其隐藏在一个新游戏程序中,并将该游戏程序送给某计算机系统的系统操作员。操作员在玩新游戏程序时,前台确实是在玩游戏,但隐藏在后台运行的特洛伊木马程序却将系统中的口令文件复制到该骇客的文件中。虽然口令文件是系统中非常保密的文件,但操作员在游戏时是在高特权模式下运行的,特洛伊木马就继承了系统操作员的高特权,因此它就能够访问口令文件。
由于C语言编译器存在着某些漏洞,如它对数组不进行边界检查。例如下面的代码是不合法的,数组范围是1024,而所包含的数字却有1200个。然而在编译时却未对此检查,攻击者可以利用此漏洞来进行攻击。
inti;
charC[1024];
i=12000;
c[i]=0;
图12-7缓冲区溢出前后的情况
当前最严重的外来威胁是病毒、蠕虫和移动代码等。其中尤其是病毒和蠕虫,天天都在威胁着系统的安全,以致在广播、电视中,都不得不经常发布病毒和蠕虫的警告消息。
1.病毒(viruses)
计算机病毒是一段程序,它能把自己附加在其它程序之中,并不断地自我复制,然后去感染其它程序,它能由被感染的程序和系统传播出去。一般的病毒程序并不长,用C语言编写的病毒程序通常不超过一页。称这段程序为病毒,是因为它非常像生物学上的病毒:它能自我生成成千上万的与原始病毒相同的复制品,并将它们传播到各处。计算机病毒也可在系统中复制出千千万万个与它自身一样的病毒,并把它传播到各个系统中去。
2.蠕虫(worms)
蠕虫与病毒相似,也能进行自我复制,并可传染给其它程序,给系统带来有害的影响,都属于恶意软件。但它与病毒有所区别,其一是:蠕虫本身是一个完整的程序,能作为一个独立的进程运行,因而它不需要寄生在其它程序上。再者,蠕虫的传播性没有病毒的强。因为蠕虫必须先找到OS或其它软件的缺陷,作为“易于攻破的薄弱环节”,然后才能借助于它们进行传播,如果该缺陷已被修复,蠕虫自然会因“无从下手”而无法传播。
3.移动代码
1)移动代码简述
在因特网上,如果能在远程计算机上执行代码,便认为系统具有远程执行功能。如果一个程序在运行时,能在不同机器之间来回迁移,那么该程序就被称为移动代码。
2)移动代码的安全运行
如果在一个用户程序中包含了移动代码,当为该用户程序建立进程后,该移动代码将占用该进程的内存空间,并作为合法用户的一部分运行,拥有用户的访问权限。
3)防范移动代码的方法——沙盒法
沙盒法的基本思想是采用隔离方法。具体做法是把虚拟地址空间,分为若干个相同大小的区域,每个区域称为一个沙盒。
4)防范移动代码的方法——解释法
解释法是对移动代码的运行采取解释执行方式。解释执行的好处是,每一条语句在执行前都经解释器检查,特别是对移动代码所发出的系统调用进行检查。若移动代码是可信的(来自本地硬盘),就按正常情况进行处理;否则(如来自因特网),就将它放入沙盒中来限制它的运行。
1.计算机病毒的特征
计算机病毒与一般的程序相比,显现出以下四个明显的特征:
(1)寄生性。
(2)传染性。
(3)隐蔽性。
(4)破坏性。
2.计算机病毒的类型
(1)文件型病毒。
(2)内存驻留病毒。
(3)引导扇区病毒。
(4)宏病毒。
(5)电子邮件病毒。
图12-8病毒附加在文件中的情况
1.伪装
当病毒附加到正常文件后会使被感染文件发生变化,为了逃避检测,病毒将把自己伪装起来,使被感染过的文件与原有文件一样。常见的伪装方式有两种:
(1)通过压缩法伪装。
图12-9病毒伪装示意图
2.隐藏
为了逃避反病毒软件的检测,病毒自然应隐藏在一个不易检查到的地方。当前常采用的隐藏方法有以下几种:
(1)隐藏于目录和注册表空间。
(2)隐藏于程序的页内零头里。
(3)更改用于磁盘分配的数据结构。
(4)更改坏扇区列表。
3.多形态
多形态病毒在进行病毒复制时采用了较为复杂的技术,使所产生的病毒在功能上是相同的,但形态各异,病毒的形态少者数十种,多则成千上万,然后将这些病毒附加到其它尚未感染的文件上。常用的产生多态病毒的方法有:
(1)插入多余的指令。
(2)对病毒程序进行加密。
1.病毒的预防
用户可用哪些方法来预防病毒呢下面列出若干方法和建议供参考。
(1)对于重要的软件和数据,应当定期备份到外部存储介质上,这是确保数据不丢失的最佳方法,当发现病毒后可用该备份来取代被感染的文件。
(2)使用具有高安全性的OS,这样的OS具有许多安全保护措施来保障系统的安全,使病毒不能感染到系统代码。
(3)使用正版软件,应当知道,从网上Web站点下载软件的做法是十分冒险的,即使是必须下载的,也要使用最新的防病毒软件,防范病毒的入侵。
(4)购买性能优良的反病毒软件,按照规定要求使用,并定期升级。
(5)对于来历不明的电子邮件不要轻易打开。
(6)要定期检查硬盘及U盘,用反病毒软件来清除其中的病毒。
2.基于病毒数据库的病毒检测方法
(1)建立病毒数据库。
(2)扫描硬盘上的可执行文件。
3.完整性检测方法
建立可信系统的最佳途径是保持系统的简单性。然而系统设计者认为,用户总是希望系统具有强大的功能和优良的性能。这样,致使所设计出的OS存在许多安全隐患。有些组织特别是军事部门,他们因为更重视系统的安全性,决心要建立一个可信系统,为此应在OS核心中构建一个安全模型,模型要非常简单以确保模型的安全性。
1.安全策略
对系统安全而言,安全策略是根据系统对安全的需求所定义的一组规则及相应的描述。该规则决定了对系统中数据进行保护的规则和规定每一个用户权限的规则,如哪些数据只允许系统管理员阅读和修改;又如哪些数据只允许财务部门人员访问等。安全机制是指用于执行安全策略时所必须遵循的规定和方法。
2.安全模型
安全模型用于精确描述系统的安全需求和策略。因此安全模型首先应当是精确的、同时也应当是简单和容易理解的,而且不涉及安全功能的具体实现细节。安全模型能精确地描述系统功能,这样就能帮助人们尽可能地堵住所有的安全漏洞。通常在OS设计时,系统的功能描述用于指导系统功能的实现,而安全模型则指导与系统安全有关的功能实现。现在已有几种安全模型,其中比较实用的是访问矩阵模型和信息流控制模型。
3.访问矩阵模型
4.信息流控制(informationflowcontrol)模型
许多信息的泄密并非源于访问控制自身的问题,而是因为未对系统中的信息流动进行限制。为此在一个完善的保护系统中,还增加了一个信息流控制模型。它是对访问矩阵模型的补充,用于监管信息在系统中流通的有效路径,控制信息流从一个实体沿着安全途径流向另一实体。
在该模型中对信息的流动做出如下两项规定:
(1)不能上读。
(2)不能下写。
图12-10Bell-LaPadula模型
1.可信计算基的功能
一个典型的可信计算基在硬件方面与一般计算机系统相似,只是少了些不影响安全性的I/O设备;在TCB中应配置OS最核心的功能,如进程创建、进程切换、内存映射以及部分文件管理和设备管理功能。
图12-11可信任计算基TCB
2.安全核心数据库
为了对用户的访问进行安全控制,在TCB中配置了一个安全核心数据库。在数据库内放入许多与安全有关的信息。其中最主要的是如下两个控制模型:
(1)访问控制模型,用于实现对用户访问文件的控制,其中列出了每个主体的访问权限和每个对象的保护属性。
(2)信息流控制模型,用于控制信息流从一个实体沿着安全的途经流向另一个实体。
3.访问监视器
访问监视器是TCB中的一个重要组成部分,它基于主体和被访问对象的安全参数来控制主体对该对象的访问,实现有效的安全接入控制。访问监视器与安全核心数据库相连接,如图12-11所示。访问监视器具有以下特性:
(1)完全仲裁。
(2)隔离。
(3)可证实性。
1.微内核原则
我们这里所说的微内核(通常将它们称为安全内核),与前面所说的微内核有着某些相似之处,主要表现为:首先它们都非常小,易于保证它们的正确性;其次它们都采用了策略与机制分离原则,即仅将机制部分放入安全内核中,而将策略部分放在内核的外面。
2.策略与机制分离原则
前面提到了策略与机制的分离原则。在设计安全内核时同样应当采用策略与机制分离原则,以减小安全内核的大小和增加系统的灵活性。安全策略规定系统要达到的特定安全目标是由设计者或管理员来确定的,应将它放在安全内核外部。机制是完成特定安全策略的方法,由一组具体实现保护功能的软件或硬件实现,应将它放入安全内核中。
3.安全入口原则
在通常的微内核中,都采用了C/S模式,微内核与所有的服务器之间都存在着接口,因此可以通过多种途径进入微内核,这也就为保障OS的安全增加了困难。而在安全系统中为确保安全内核的安全,在安全内核与其它部分之间,如与其它的硬件、系统和用户软件等之间,只提供唯一的安全接口,凡是要进入安全内核进行访问者,都必须接受严格的安全检查,任何逃避检查的企图都是不能得逞的。
4.分离原则
可用多种方法来将一个用户进程与其他用户进程进行隔离,主要分离方法有:
(1)物理分离。
(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.什么是移动代码为什么说在应用程序中包含了移动代码就可能不安全