第16章 安全性和保密性设计
随着科技进步、社会发展,尤其是以计算机为代表的信息技术飞速发展,各种信息呈爆炸式发展。计算机及信息技术的应用领域在不断扩展,计算机在政府、企业、民生等各个领域中都得到越来越广泛的应用。与此同时,网络攻击和入侵事件与日俱增,重要机构的信息系统遭黑客袭击的事件时有发生。攻击者可以从容地对那些缺乏足够安全保护的信息系统进行攻击和入侵,如进行拒绝服务攻击、从事非授权的访问、肆意窃取和篡改重要的数据信息、安装后门监听程序以便随时获得内部信息、传播计算机病毒、摧毁主机等。攻击和入侵事件给这些机构和组织带来了巨大的经济损失和形象的损害,甚至威胁到国家的安全。
信息化时代,人们对信息系统的安全需求越来越迫切。
信息安全,具体地说就是保证信息的保密性、完整性、真实性、占有性。
保密性是指系统中的信息必须按照该信息拥有者的要求保证一定的秘密性,不会被未经许可的第三方非法获取。系统必须阻止一切对秘密信息的非授权访问或泄露。
完整性是指系统中的信息应当安全、准确、有效,要求数据不能被非法改动或删除。完整性是信息安全的最基本要求。为了实现完整性,可以借助本章讲述的数字签名、加密等措施,从而有力地保护数据的完整。
真实性是指对信息的发送者身份的确认或系统中有关主体的身份确认,这样可以保证信息的可信度。信息的真实性可以通过数字签名、公钥加密等方式来实现。
占有性是指要保护信息赖以存储的节点、介质、载体等不被盗用或窃取。保护信息占有性的方法有使用版权、专利、商业秘密性,提供物理的或逻辑的存取限制方法,维护和检查有关窃取文件的记录等。
16.1 加密和解密
加密技术源远流长,自从古代有了信息的传递和存储,就有了加密技术的运用。此后,很长一段时间里,加密及解密技术在军事、政治、外交、金融等特殊领域里被普遍采用,并经过长时间的研究和发展,形成了比较完备的一门学科——密码学。
密码学是研究加密方法、秘密通信的原理,以及解密方法、破译密码的方法的一门科学。
加密和解密的过程大致如下:首先,信息的发送方准备好要发送信息的原始形式,叫作明文。然后对明文经过一系列变换后形成信息的另一种不能直接体现明文含义的形式,叫作密文。由明文转换为密文的过程叫作加密。在加密时所采用的一组规则或方法称为加密算法。
接收者在收到密文后,再把密文还原成明文,以获得信息的具体内容,这个过程叫作解密。
解密时也要运用一系列与加密算法相对应的方法或规则,这种方法或规则叫作解密算法。在加密、解密过程中,由通信双方掌握的参数信息控制具体的加密和解密过程,这个参数叫作密钥。密钥分为加密密钥和解密密钥,分别用于加密过程和解密过程。
在加密和解密的过程中,如果采用的加密密钥与解密密钥相同,或者从一个很容易计算出另一个,则这种方法叫作对称密钥密码体制,也叫作单钥密码体制。反之,如果加密和解密的密钥并不相同,或者从一个很难计算出另外一个,就叫作不对称密钥密码系统或者公开密钥密码体制,也叫作双钥密码体制。
16.1.1 对称密钥加密算法
在过去很长一段时间里,人们一直都采用对称密钥密码体制来对信息进行加密和解密,直到现在,对称密钥密码体制也仍然是一种非常重要的常用加密方法。
对称密钥密码体制中,加密和解密过程中所使用的是同一个密钥,或者即使加密密钥和解密密钥不同,但是很容易地由一个计算出另外一个。显然,在这种密码体制中,密钥成为整个秘密通信的核心,整个加密系统的安全性完全以密钥的保密为基础。如果密钥暴露,则整个密码体制就完全失去了保密的效果。所以说,密钥的保密是对称密钥加密体制安全保密的关键,必须妥善保存并经由可靠的渠道传递。
对称密钥加密算法有多种,例如,DES(Data Encryption Standard,数据加密标准)、 IDEA(International Data Encryption Algorithm,国际数据加密算法)、Skipjack、3DES、GDES、 NewDES、Lucifer、FEAL N、LOKI 91、RC4、RC5 等。
1. DES 算法
DES 算法是 1977 年美国政府公布的一种加密算法,由于算法实现简单,加密效果好,在很长时间里在全世界范围都被广泛运用。它通过对数据进行非常复杂的迭代和置换进行加密,使得企图破译者从加密后的密文中无法获得任何有效信息。对这种加密方法,如果用穷举的方法进行攻击的话,由一台一秒钟能够进行 10 000 次破译的计算机来计算,则要经过200 多年才能够破解,可见 DES 算法具有很好的保密效果。另外,DES 算法实现起来并不复杂,不但在软件中可以容易地实现,而且早已经在芯片上实现了,使用起来非常方便。
DES 算法的过程,简单来说,就是把要加密的明文分成 64 位的数据段作为输入,再使用根据 64 位密钥变化生成的 52 个子密钥,对输入的数据段依次进行初始置换、16 轮迭代、逆初始置换,然后得到 64 位密文。
DES 的解密过程与加密过程几乎相同,只是子密钥的使用顺序不一样。加密时依次使用的部分参数 K1 K2 K3 …K16,在解密时则按照 K16 K15 K14 …K1 顺序使用。其他算法完全一样,这也是 DES 容易使用的一个方面。
2. IDEA 算法
IDEA 在加密运算中所处理的数据段大小也是 64 位,但是所用的密钥长度为 128 位,而且采用更加复杂的加密算法,目的是保证它不会被轻易破译。IDEA 是一种加密强度很高的加密算法,迄今为止还没有出现对该算法的有效攻击。假如一台计算机一秒钟可以产生和运行 10 亿个密钥,则要猜出 IDEA 密钥需要花费 1013 年的时间,可见 IDEA 的加密强度非常高。另外,IDEA 实现非常方便,既可以通过软件实现,也可以通过硬件实现。
IDEA 算法对数据的处理是以 64 位为单位的,在加密前把要加密的明文按每 64 位作为一个数据段进行分割然后分别加密。
IDEA 的解密过程与加密过程基本相同,所不同的就是解密子密钥的产生方式与加密子密钥的产生方式不一样,解密的其他运算过程同加密一样,也是把 64 位数据段分成4 个 16位的数据段,然后经过八轮迭代变换和一轮输出变换,就可以得到对应的明文结果。
16.1.2 不对称密钥加密算法
对称密钥加密方法是加密、解密使用同样的密钥,由发送者和接收者同时保存,在加密和解密时使用相同的密钥。采用这种方法的主要问题是密钥的生成、导入、存储、管理、分发等过程比较复杂,特别是随着用户的增加,密钥的需求量成倍增加。而在较大规模的信息系统中,大量密钥的分配与管理是一个难以解决的问题。
例如,系统中有 n 个用户,其中每两个用户之间需要建立密码通信,则系统中每个用户须掌握(n-1)/2 个密钥,而系统中所需的密钥总数为 n*(n-1)/2 个。对 10 个用户的情况,每个用户必须有 9 个密钥,系统中密钥的总数为 45 个。对 100 个用户来说,每个用户必须有 99 个密钥,系统中密钥的总数为 4950 个。这还仅仅考虑用户之间的通信只使用一种会话密钥的情况,如果不同的会话需要变换不同的密钥,则密钥总数就更多了。如此庞大数量的密钥生成、管理、分发是一个难以处理的问题。
与对称密钥加密方法不同,不对称密钥加密技术在对信息进行加密和解密时,需要分别采用两个不同的密钥,因此也称为双钥加密方法。它在运算中,先产生一对密钥,其中之一是保密密钥,由用户自己保存,不能向外界泄漏,简称私钥;另一个为公开密钥,可对外公开,甚至可在公共目录中列示,简称公钥,因此也称公开密钥加密方法。
只有使用私钥才能解密用公钥加密的数据,同时使用私钥加密的数据只能用公钥解密。
在通信过程中,如果发送者要向接收者发送保密信息,则需要先用接收者的公开密钥对信息进行加密,然后发送给该接收者,接收方用其私钥能够顺利解密。而其他人即使收到加密的密文也无法正确解读,从而达到保密通信的目的。
公开密钥加密方法中,要想达到良好的加密效果,算法上必须做到:在计算上产生密钥非常容易;已知公钥的情况下对明文加密在计算上很容易实现;已知私钥的情况下对密文解密在计算上很容易实现;尽管用于加密和解密的两个密钥在数学上是相关的,但是在已知公钥的情况下,要想求得私钥在计算上不可行;已知公钥和密文的情况下,要想求得明文在计算上不可行。只有做到以上几点,才能有效地防止攻击者对算法的破译。
不对称密钥加密算法有多种,例如,RSA、背包密码、McEliece、Diffe Hellman、Rabin、Ong Fiat Shamir、零知识证明的算法、椭圆曲线、EIGamal 等。这里主要介绍 RSA 的加密原理。
在众多的公钥加密算法中,以 1977 年由 Ron Rivest、Adi Shamir 和 Leonard Adleman提出的以他们的名字命名的 RSA 加密算法最为著名。而且它是第一个既能用于数据加密也能用于数字签名的算法。RSA 从提出到现在已经二十多年,经历了各种攻击的考验,逐渐为人们所接受,被普遍认为是目前优秀的公钥加密方法之一。由于它易于理解和操作,因而获得了广泛的应用。但 RSA 的安全性一直未能得到理论上的证明。
RSA 的安全性依赖于大数的分解,即求得两个大数(例如,大于 100 位的十进制数)
的乘积非常容易,但是要把一个大数分解为两个素数却非常困难。
在 RSA 加密体制中,每个用户有公开密钥 PK = (N,e)和私人密钥 SK = (N,d),其中,N 为两个大素数的乘积,为了保密性更好,一般都取两个 100 位以上的大素数相乘得到 N。
e 和 d 是根据一定运算法则计算得到的,虽然 N、e、d 之间存在一定的计算关系,但是攻击者根据 N、e 无法求解 d,从而实现不对称加密。
1. RSA 加密过程
首先把需要加密的明文按比特位分成等长的数据段,使得每个数据段对应的十进制数小于 N,即数据段的长度小于 log2N。然后依次对每个明文数据段 m 做加密运算可以得到密文 c∶c = me mod N。
相应的,解密时对密文数据段做解密运算就可以得到明文 m∶m = ce mod N。
2. RSA 数字签名
RSA 加密算法不仅可以用于信息的加密,而且还可以用于发送者的身份验证或数字签名。例如,用户 B 要向 A 发送一个信息 m,而且要让 A 确信该信息就是 B 本人发出的。
为此,B 用自己的私钥 SK = (N,d)对信息加密得到密文 c∶c = md mod N,然后把 c 发送给 A。A 收到密文后,使用 B 的公钥 PK = (N,e)对密文进行解密得到明文 m∶m = ce modN。这样,经过验证,A 可以确认信息 m 确实是 B 发出的,因为只有 B 本人才有与该公钥对应的私钥,其他人即使知道公钥,也无法猜出或计算出 B 的私钥来冒充他发送加密信息。
16.2 数字签名与数字水印
散列函数是一种公开的数学函数。散列函数运算的输入信息也可叫作报文。散列函数运算后所得到的结果叫作散列码或者叫作消息摘要。散列函数具有如下一些特点:
- (1)不同内容的报文具有不同的散列码,而一旦原始报文有任何改变,哪怕改变一位信息,则通过散列函数计算后得到的散列码也将完全不同。这样,这个散列码就好比是这个报文所特有的“指纹”。
- (2)散列函数是单向的,即求解某一个报文的散列码非常容易,但是根据散列码来倒推原始报文是非常困难的。
- (3)对于任何一个报文,无法预知它的散列码。
- (4)散列码具有固定的长度,不管原始报文的长度如何,通过散列函数运算后的散列码都具有一样的长度。例如,MD5(Message Digest Algorithm 5,消息摘要算法第 5 个版本)
散列算法的散列码长度为 128 位,并且不管是对一部百科全书,还是对某个人的工资进行MD5 散列运算,得到的散列码长度都是 128 位。
由于散列函数具有这些特征,因此散列函数可以用来检测报文的可靠性。接收者对收到的报文用与发送者相同的散列函数进行运算,如果得到与发送者相同的散列码,则可以认为报文没有被篡改,否则,报文就是不可信的。
常见的散列函数有 MD5、SHA、HMAC 等。MD5 是一种非常著名的散列算法,已经成为国际标准,具有很好的安全性能。MD5 算法在对输入的报文进行计算时,是以 512 位为单位进行处理的,结果生成一个 128 位长的消息摘要;SHA、HMAC 等算法都是对任意长度的报文以 512 位为单位进行处理,最后得出一个 160 位的消息摘要。
16.2.1 数字签名
对于计算机系统中传送、存储的重要文件、数据、信息等,一般需要有某种方式来确认其真实性,即接收者能够确认自己得到的信息确实是由该信息所声称的发送者发出的,而不是由非法入侵者伪造、冒充发出的,并且还要能够保证信息在传送、存储中没有被恶意篡改,这样这份信息才能真实地反映发送方的意图。另外,对于发送方来说,如果发出一份信息,还必须有一定的措施阻止其否认自己发出信息的行为,即不可否认性。
只有做到以上几点,一个信息传送、存储系统才能够安全、可靠,其上所传送、存储的信息才是真实的、值得相信的。
举例来说,互有贸易往来的买卖双方之间通过计算机系统进行贸易,卖方通过计算机系统给买方发出一张电子报价单,买方收到后,擅自更改了收到的单价,并声称是卖方发出的,而且据此下订单,这就是篡改信息。显然安全的系统应该能够阻止这种行为。
要实现上述安全的系统,就离不开数字签名技术。
数字签名主要由两个算法组成:签名算法和验证算法。通过使用签名算法签名一个消息,所得到的签名能够通过一个验证算法来验证签名的真实性和有效性。
所以数字签名技术的大致过程就是:信息的发送方对信息利用自己的私钥进行签名,接着发送方把这个签名和信息一起发送给接收方。接收方收到信息后利用发送方的公钥来对其中的数字签名进行验证,确认其合法性。
目前已经有大量的数字签名算法,例如,RSA 数字签名算法、EI Gamal、Fiat-Shamir、Guillon-Oucsquerrter、DSS(Digital Signature Standard,数字签名标准)、DSA(Digital SignatureAlgorithm,数字签名算法)、椭圆曲线等。
1. RSA 结合 MD5 数字签名
前面讲过,RSA 公钥加密技术本身就可以用来实现数字签名。但是仅仅使用公钥加密算法进行数字签名的运算量比较大,尤其是要传送的信息量比较大时,速度会更加慢。显然,直接用这种方法进行数字签名并不是很好的选择。
而散列算法(例如,MD5 算法)就有很好的特性,它能对每一个不同长度的信息产生相互不同的、独特的、简短的消息摘要。这个消息摘要可以看作这个信息特有的“指纹”,因而非常适合用作数字签名。
通过散列算法对原始数据进行散列,再对散列码进行公钥加密就可以很好地实现数字签名。它的特点是:它代表了文件的特征,具有唯一性。只要文件发生哪怕一位数据的改变,或者签名者有任何差别,数字签名的值也将随之而发生改变;不同的文件和签名者得到的是不同的数字签名。
RSA 结合 MD5 数字签名的主要过程是:信息的发送方通过对信息进行散列运算生成一个消息摘要,接着发送方用自己的私钥对这个消息摘要进行加密,就形成发送方的数字签名。
然后,把这个数字签名作为信息的附件和信息一起发送给信息的接收方。接收方收到信息后,首先对收到的信息进行与发送者相同的散列运算得到一个消息摘要,接着再用发送方的公钥来对信息中附加的数字签名进行解密得到发送方计算出的散列码。如果两个散列码相同,那么接收方就能确认该信息和数字签名是由发送方发出的。通过数字签名能够实现对原始信息完整性的鉴别和发送方发送信息的不可抵赖性。
下面结合一个例子,看一看 RSA 结合 MD5 数字签名的具体步骤:
- (1)信息发送者 A 要向 B 发送一份信息,A 先按双方约定的散列算法对该信息进行散列运算,得到一个该信息特有的消息摘要 H,从前面所述可以知道,只要改动信息中任何一位,重新计算出的消息摘要值就会与原先的值不相符。这样就保证了信息的不可更改性。
- (2)接着把该消息摘要用 A 自己的私钥加密,得到 A 对该信息的数字签名 S。
- (3)然后 A 把信息原文与数字签名 S 一起发送给 B。
- (4)当 B 收到后,先用 A 的公钥对数字签名 S 解密得到 A 的消息摘要 H。
- (5)再用同样的散列算法对收到的信息进行散列运算,得到消息摘要 H'。
- (6)比较 H 与 H',如相等则说明信息确实来自它所声称的发送者 A。
在传输过程中,如有攻击者对文件进行了篡改,但他并不知道发送方的私人密钥,因此,接收方解密得到的数字签名 H 与经过计算后的数字签名 H'必然不同。这就提供了一个安全的确认发送方身份的办法。
当然,以上例子中,对传送的信息是以明文出现的,不具有保密意义。实际应用中,还需要对信息本身运用适当的保密措施。
RSA 用于数字签名的一个重要的特点是能够证实信息发送方的身份及电子文件的可靠性和完整性,它对于发送方和被发送的信息都是独一无二的,具有可验证性和不可否认的权威性特点;另一个重要的特点是它通过在计算机之间交换数字证书就可以确定当事者就是他们所宣称的人。
2. 数字签名标准
DSS 是美国国家标准与技术学会的数字签名标准,自 1991 年提出以来又经过广泛的修改。DSS 为计算和验证数字签名指定了一个数字签名算法——DSA。DSA 是 El Gamal 数字签名算法的一个改进版本,它通过选择较小规格的参数减少数字签名的数据量,从而减少了存储空间和传输带宽。
DSS 中指定 SHA 作为其散列算法,它对原始信息进行运算后产生 160 位的消息摘要,然后 DSS 把这一消息摘要与一个用作这个特殊签名的随机数作为输入送到数字签名算法中,经过运算生成数字签名。
该数字签名函数还依赖于发送方的私钥 SK 和一个对许多通信方都公开的由重要的公钥集合组成的全局公钥。
接收方在收到消息摘要和签名后将其作为验证函数的输入。验证函数还依赖于全局公钥和与发送方的私钥相匹配的公钥 PK,这样只有发送方用其自己的私钥才能产生有效的签名。
数字签名作为一项重要的鉴别技术,近年来越来越受到人们的重视,在政府、军事、金融、安全等领域得到广泛的运用。通过数字签名可以有效地保证数据的完整性,防止第三方伪造或发送方的抵赖。
2004 年 8 月 28 日,十届全国人大常委会第十一次会议表决通过了电子签名法。这部法律规定,可靠的电子签名与手写签名或者盖章具有同等的法律效力,并于 2005 年 4 月 1日起施行。这部法律将对我国电子商务、电子政务等计算机信息系统的发展起到极其重要的促进作用。
16.2.2 数字信封
数字信封是公钥密码体制在实际中的一个应用,是用加密技术来保证只有规定的特定收信人才能阅读通信的内容。
在数字信封中,信息发送方采用对称密钥来加密信息内容,然后将此对称密钥用接收方的公开密钥来加密(这部分称数字信封),之后,将它和加密后的信息一起发送给接收方,接收方先用相应的私有密钥打开数字信封,得到对称密钥,然后使用对称密钥解开加密信息。
这种技术的安全性相当高。
16.3 数字证书与密钥管理
过去,人们总是依赖于对于加密算法和密钥的保密来增加保密的强度和效果。随着现代密码学的发展,大部分的加密算法都已经公开了。一些典型的算法(例如,DES、IDEA、 RSA等)更是成了国际标准,被广泛接纳。人们可以从多种途径来获取算法的细节,也已经有很多采用这些算法的软件、硬件设备可以利用。
因此,在现代密码系统中,算法本身的保密已经不重要了,对于数据的保密在很大程度上,甚至完全依赖于对密钥的保密。只要密钥能够保密,即使加密算法公开,甚至加密设备丢失,也不会对加密系统的坚固性和正常使用产生多大影响。相反,如果密钥丢失,则非法用户可以窃取机密数据,而合法用户却面对密文如读天书,无法提取有效的信息。与其如此,还不如不加密呢!因此,在密码系统中,如何高效地分配密钥、安全地管理密钥对于保证数据安全至关重要。
16.3.1 密钥分配中心
鉴于密钥的举足轻重的地位,密钥必须通过安全的通路进行分配。例如,可以派非常可靠的信使,以十分安全的方式,物理地携带密钥,人工送达需要进行通信的各方。这种方法虽然可靠,但是效率比较低,在过去信息技术不发达的时候用得比较多。而对于一个用户比较多、相互之间通信比较频繁的信息系统来说,则显然不适合采用这种人工方法,而必须采用计算机自动分配密钥。
一个方法是在一个信息系统中任意两个用户之间自己协商来选择不同的密钥,如图16-1所示。
图16-1
显然,对于有 N 个用户的这种通信系统中,每个用户都要保存(N−1)个密钥,系统中总共要保存 N∗(N−1)/2 个密钥。在用户数量较少时,这样来分配密钥还是比较简单、易用的,但是一旦用户数量多起来,系统中要保存的密钥会急剧增多,让每个用户自己高效、安全地管理数量庞大的密钥实际上是不可能的。
此外有一种非常有效的密钥自动分配方案是密钥分配中心(Key Distribution Center,密匙分配中心)技术。
在 KDC 方案中,每一个用户都只保存自己的私钥 SK 和 KDC 的公钥 PKKDC,而在通信时再经由 KDC 获得其他用户的公钥 PK 或者仅仅在某一次通信中可以使用的对称密钥加密算法的临时密钥 K。
假设有两个用户 A、B 都是 KDC 的注册用户,他们分别拥有私钥 SKA 和 SKB,相应的公钥分别是 PKA 和 PKB。现在 A 想要与 B 进行会话,假如采用对称密钥加密算法来加密这次会话,那么密钥的分配过程如图 16-2 所示。
首先用户 A 向 KDC 发送用自己的私钥 SKA 加密的请求 SKA(A,B),说明自己想要与B 进行会话。
KDC 收到这个请求后,根据某种算法生成一个可以供 A、B 双方进行秘密会话的对称密码算法的密钥 K,然后向 A 返回一个应答 PK(K, PKB(A, K))。这个应答信息是用 A 的公钥 PKA 加密的,当然只有用户 A 自己才能够正确解读,可以从中提取与 B 会话的密钥 K。
同时,该信息中还有一部分内容 PKB(A,K),表明用户 A 欲与 B 进行会话,并且密钥是 K,这是用 B 的公钥 PKB 加密的。用户 A 把这一部分信息发送给 B,B 收到后从中解密出会话密钥。
至此,完成一次密钥的自动分配过程。此后,A、B 双方就可以利用密钥 K 进行加密通信了。
16.3.2 数字证书和公开密钥基础设施
公钥加密算法的密钥分配和对称密钥加密算法中密钥的分配要求有着很大的区别。在对称密钥加密体制中,要求将密钥从一方传送到另一方,并且保证只有通信的双方知道密钥,而不让其他任何一方知道密钥。
而在公钥加密体制中,则要求通信各方的私钥只有通信的一方知道,而其他任何一方都不能知道,同时每一方的公钥需要公开,其他任何一方都可以查看和提取。
在公钥加密体制中,私钥的分配相对容易,但是,公钥的发布和获取就需要采取合适的方法来进行,否则很容易留下安全漏洞。一种简单的发布公钥的方法是公开宣布。通信系统中的每一方都独自保管好自己的私钥,而把自己的公钥公开地公布给其他所有各方,以使其他人能够得到他的公钥,从而可以与他进行加密通信。这实现起来非常简单,似乎也没有什么问题。但是,却有一个致命的漏洞,就是任何一个非法入侵者也可以冒充是这个通信系统中的一方,向这个通信系统中公布一个冒充的公钥。此后系统中与该用户的通信实际上就是与该非法冒充者进行通信。
数字签名和公钥加密都是基于不对称加密技术,因此也存在这样的问题:如何保证公开密钥的持有者是真实的;大规模信息系统环境下公开密钥如何产生、分发和管理。
要解决上述问题,就要用到数字证书和 PKI(Public Key Infrastructure,公开密钥基础设施)。
1. 数字证书
数字证书提供了一个在公钥和拥有相应私钥的实体之间建立关系的机制。目前最常用的数字证书格式是由国际标准 ITU-T X.509 v3 版本定义的。
数字证书中采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己保存私钥,用它进行解密和签名;同时设定一个公钥,并由本人公开,为一组用户所共享,用于加密和验证签名。
数字证书是用户在系统中作为确认身份的证据。在通信的各个环节中,参与通信的各方通过验证对方数字证书,从而确认对方身份的真实性和有效性,从而解决相互间的信任问题。
数字证书的内容一般包括:唯一标识证书所有者的名称、唯一标识证书签发者的名称、证书所有者的公开密钥、证书签发者的数字签名、证书的有效期及证书的序列号等。
2. 公开密钥基础设施
PKI 在信息系统中的作用就相当于作为公共设施在社会生活中的作用,其目标是向广大的信息系统用户和应用程序提供公开密钥的管理服务。PKI 是指由数字证书、证书颁发机构(Certificate Authority,CA),以及对电子交易、通信等所涉及的各方的合法性进行检查和验证的其他注册机构组成的一套系统。为了使用户在不可靠的网络环境中获得真实可靠的公开密钥,PKI 引入公认可信的第三方;同时 PKI 中采用数字证书机制来避免在线查询集中存放的公开密钥产生的性能瓶颈。可信的第三方是 PKI 的核心部件,系统中任意两个实体之间都是通过公认可信的第三方建立安全联系的。数字证书中第三方的数字签名,使用户可以离线地确认一个公开密钥的真实性。
除了数字证书的有效期,证书撤销列表(Certificate Revocation List,CRL)是另一种数字证书有效期控制机制。当数字证书中认可的事实发生变化时,数字证书发布者必须使用某种机制来撤销以前发出、但现在失效的证书。证书发布者定期发布 CRL,列出所有曾发布但当前已被撤销的证书号,证书的使用者依据 CRL 即可验证某证书是否已被撤销。
- (1)PKI 的结构模型。PKI 中有三类实体:管理实体、端实体和证书库。管理实体是PKI 的核心,是 PKI 服务的提供者;端实体是 PKI 的用户,是 PKI 服务的使用者;证书库是一个分布式数据库,用于证书和 CRL 的存放和检索。
CA 和注册机构(RegisteAuthority,RA)是两种管理实体。CA 是 PKI 框架中唯一能够发布和撤销证书的实体,维护证书的生命周期;RA 负责处理用户请求,在验证了请求的有效性后,代替用户向 CA 提交。RA 可以单独实现,也可以合并在 CA 中实现。作为管理实体,CA 和 RA 以证书方式向端实体提供公开密钥的分发服务。
持有者和验证者是两种端实体。持有者是证书的拥有者,是证书所声明的事实上的主体。
持有者向管理实体申请并获得证书,也可以在需要时请求撤销或更新证书。持有者使用证书声明自己的身份,从而获得相应的权力。验证者确认持有者所提供的证书的有效性和对方是否为该证书的真正拥有者,只有在成功鉴别之后才可与对方进行更进一步的交互。
证书库可以用 Web、FTP 或目录等来实现。由于证书库中存取的对象是证书和 CRL,其完整性由数字签名保证,因此对证书库的操作可在无特殊安全保护的通道上传输。
不同的实体间通过 PKI 操作完成证书的请求、确认、发布、撤销、更新和获取等过程。
PKI 操作分成存取操作和管理操作两类。其中,存取操作包括管理实体或端实体,把证书和CRL 存放到证书库、从证书库中读取证书和 CRL;管理操作则是管理实体与端实体之间或管理实体与管理实体之间的交互,是为了完成证书的各项管理任务和建立证书链。
- (2)PKI 层次模型。PKI 框架可以分为三个层次。最低层是传输层,向上提供 PKI 报文的可靠传输,它可以是传输层协议或应用层协议。中间层是密码学服务层,向上提供加密、解密、数字签名、消息摘要等基本密码学服务,可由 RSA、MD5 等方法实现。最高层是证书服务层,使用前面两层提供的加密和传输服务,向用户提供证书的请求、签发、发布、撤销和更新等服务。
PKI 的三类实体对这三层服务的使用各不相同。证书库不需要特殊的安全交互措施,所以仅使用传输层服务来分发证书和 CRL;管理实体和端实体使用证书服务层构造 PKI 证书,使用密码学服务层来鉴别和保护交互信息,使用传输层服务传送信息。
- (3)X.509 数字证书。ISO/ITU、ANSI、IETF 等组织制定的 X.509 标准,对数字证书的格式进行了专门定义,该标准是为了保证使用数字证书的系统间的互操作性而制定的。理论上为一种应用创建的 X.509 证书可以用于其他任何符合 X.509 标准的应用。但实际上,不同的公司对 X.509 证书进行了不同的扩展,并不是所有的证书都彼此兼容。
X.509 证书具有如下一些突出的特点:
- ① 支持多种算法。X.509 证书独立于算法,CA 可以根据需要选择证书的签名和摘要算法,以及端实体所拥有密钥对的类型。摘要算法有 MD2、MD5 和 SHA-1,证书签名算法有RSA 和 DSA,密钥对类型有 RSA 密钥、DSA 签名密钥、D-H 密钥交换密钥、KEA 密钥和ECDSA 密钥。
- ② 支持多种命名机制。X.509 证书除了使用 X.500 名字机制标识持证者和验证者,还支持 E-mail 地址、IP 地址、DNS 名和 URI。
- ③ 可以限制证书(公开密钥)的用途。CA 能够规定证书的使用范围,如签名、不可否认、密钥加密、数据加密、密钥协商、证书签发和 CRL 签发等。
- ④ 定义证书遵循的策略。每个 CA 都定义了一定的安全策略,规范证书的操作过程。
这些策略包括:CA 的命名空间、身份验证、撤销机制、法律责任和收费等。
- ⑤ 控制信任关系的传递。建立 CA 体系,跨域认证,使得每个 CA 除负责本域的证书管理任务外,还要维护与其他 CA 间的信任关系。X.509 证书定义若干字段用于控制信任关系的传递,CA 能够将自己管理域的安全策略体现在信任关系中。
可见,X.509 证书适用于大规模信息系统环境,它的灵活性和扩展性能够满足各种应用系统不同类型的安全要求。
X.509 有不同的版本,例如,X.509v3 是比较新的版本,它是在原有版本 X.509 v 的基础上进行功能的扩充。每一版本都包含下列数据项:
- ① 版本号。用来区分 X.509 的不同版本号。
- ② 序列号。由 CA 给每一个证书分配唯一的数字型编号,由同一 CA 发放的每个证书的序列号是唯一的。
- ③ 签名算法识别符。用来指定 CA 签发证书时所使用的公开密钥算法和 HASH 算法,须向国际标准组织注册。
- ④ 发行者名称。建立和签署证书的 CA 名称。
- ⑤ 有效期。证书有效的时间包括两个日期:证书开始生效的日期、证书失效的日期和时间。在所指定的这两个时间之间有效。
- ⑥ 主体名称。证书持有人的姓名、服务处所等信息。
- ⑦ 主体的公开密钥信息。包括主体的公开密钥、使用这一公开密钥的算法的标识符及相应的参数。
- ⑧ 发行者唯一识别符。这一数据项是可选的,当 CA 名称重新用于其他实体时,则用这一识别符来唯一标识发行者。
- ⑨ 主体唯一标识符。这一数据项也是可选的,当主体的名称重新用于其他实体时,则用这一识别符来唯一识别主体。
- ⑩ 扩充域。其中包括一个或多个扩充的数据项。
- ⑪签名。CA 用自己的私钥对上述各数据项的散列值进行数字签名的结果。
16.4 安全协议
Internet 是 IT 领域中发展的重大成就,它的迅速发展和全面普及给人们的生产、生活带来了很大的帮助。
但是,Internet 在当初是为了让更多的人来使用网络、共享资源,并且容易扩充、容易治理等而设计的,因此它是一个全面开放的系统,而没有在安全方面作充分的考虑。加上日益增加的庞大的用户、各种不同的动机等因素,使得 Internet 上的安全事件层出不穷。
在 Internet 安全中,网络通信的安全是一个非常重要的环节,因此有必要研究在网络上安全传输数据的方法。
16.4.1 IPSec 协议简述
在 TCP/IP 协议中,对 IP 数据包没有提供任何安全保护,攻击者可以通过网络嗅探、 IP欺骗、连接截获等方法来攻击正常的 TCP/IP 通信。因此,通信过程中会存在以下危险:数据并非来自合法的发送者、数据在传输过程中被非法篡改、信息内容已被人窃取等。
为了确保在 IP 网络上进行安全保密的通信,IETF 制定了一套开放标准的网络安全协议IPSec(IP Security)。该协议把密码技术应用在网络层,以向信息的发送方和接收方提供源地址验证、数据传输的完整性、存取控制、保密性等安全服务,保护通信免遭窃听、抵御网络攻击,而且更高层的应用层协议也可以直接或间接地使用这些安全服务,为其上层协议如TCP、UDP 等提供透明的安全保护服务,在 Internet 这样不安全的网络中为通信提供安全保证。
在 IPv6 中,IPSec 协议是一个必备的组成部分,被强制实施;在 IPv4 中,它是一个可选的扩展协议。
由于 Internet 等网络具有公共特性,因此在通信过程中难以确认传输媒介是安全的,所以要进行安全的通信,则通信数据必须经过加密。IPSec 协议对数据的加密以数据包而不是整个数据流为单位,这不仅非常灵活,也有助于进一步提高 IP 数据包的安全性。
IPSec 协议的基本工作原理是:发送方在发送数据前对数据实施加密,然后把密文数据发送到网络中去,开始传输。在整个传输过程中,数据都是以密文方式传输的,直到数据到达目的节点,才由接收方对密文进行解密,提取明文信息。
IPSec 协议对网络层的通信使用了加密技术,它不是加密数据包的头部和尾部信息(如源地址、目的地址、端口号、CRC 校验值等),而是对数据包中的数据进行加密。由于加密过程发生在 IP 层,因此可在不改变 HTTP 等上层应用协议的情况下进行网络协议的安全加密,为通信提供透明的安全传输服务。
IPSec 协议中使用端到端的工作模式,掌握加密、解密方法的只有数据的发送方和接收方,两者各自负责相应的数据加密、解密处理,而网络中其他节点只负责转发数据,无须支持 IPSec,从而可以实现加密通信与传输媒介无关,保证机密数据在公共网络环境下的适应性和安全性。因此,IPSec 可以应用到非常广泛的环境中,能为局域网、拨号用户、远程站点、Internet 之上的通信提供强有力的保护,而且还能用来筛选特定数据流,还可以用于不同局域网之间通过互联网的安全互联。
IPSec 协议不是一个单独的协议,它包括应用于 IP 层上网络数据安全的一整套协议,主要包括 AH(Authentication Header,IP 认证头部协议)、ESP(Encapsulating Security Payload,封装安全负载协议)、IKE(Internet Key Exchange,Internet 密钥交换协议)和用于网络认证及加密的一些算法等。
AH 提供数据的完整性和认证,但不包括保密性;而 ESP 原则上只提供保密性,但也可在 ESP Header 中选择适当的算法及模式来实现数据的完整性和认证。AH 和 ESP 可分开使用也可一起使用。IKE 则提供加密算法、密钥等的协商。
1. 安全关联和安全策略
安全关联(Security Association,SA)是指提供通信安全服务的发送方和接收方之间的一种单向关系。安全关联是构成 IPSec 的基础,它是进行通信的双方经协商建立起来的一种协定。安全关联可以用一个 32 位的安全参数索引(Security Parameter Index,SPI)来唯一标识,一个 SPI 值决定一个特定的 SA,它通常放在 AH 或 ESP 头中;安全关联是单向的,如果要对两台主机 A 与 B 实现双向安全,则需要两个安全关联,每个方向一个:(A,B)、(B,A)。安全关联的内容包含了 IP 数据包是否加密、认证,以及加密、认证采用的算法、密钥等相关信息。所有的 SA 记录都存放在安全关联数据库中,按散列方式存取。
安全策略(Security Policy)定义了两个 IPSec 系统之间的安全通信特征,并决定在该通信中为数据包提供的安全服务。一个 IPSec 系统的所有安全策略都存放在安全策略数据库中,根据选择符(包括源地址、目的地址、协议、端口等)进行检索。安全策略通常与 SA 合作,共同作用于通信的数据包。
2. AH
AH 协议先将数据进行校验和加密,然后封装为 IP 包,从而实现无连接通信的数据完整性、数据源认证和防止重放攻击。AH 能完成除数据加密外的所有的 ESP 所能提供的功能。在认证机制上,它所覆盖的范围比 ESP 的广,包括对 IP 头中一些选项的认证。
为了应用 IPSec 协议,IP 数据包的格式要有所改变,即在 IP 头和被保护的数据之间插入一个 AH 头,如图 16-3 所示。
AH 头的格式如图 16-4 所示,包括:下一报头、有效载荷长度、保留位、安全参数索引、序列号、认证数据。
AH 使用的典型的认证算法是一种迭代型的消息摘要算法。AH 中采用 MD5 算法,可以提供完整性服务。从前面的讲述可以知道 MD5 可以对任意长度的信息进行散列运算产生一个唯一的 128 位消息摘要。由于消息摘要是唯一的,所以对信息的任何修改都将得到另一个不同的消息摘要,因此能防止消息被篡改,从而保证了数据的完整性。AH 也可以采用SHA 算法提供更强的抗攻击能力,SHA 是在 MD5 的基础上,增加了分组处理的迭代次数和复杂性,产生一个 160 位的消息摘要。接收者在收到数据后可以通过检验数据包中的单向递增的序列号来确定数据包的合法性,防止重放攻击。
3. ESP
ESP 通过对数据包的数据进行加密来提供传输信息的保密性,从而实现了数据完整性、数据源认证、数据保密性的安全服务。ESP 是一个通用的、可扩展的安全机制,其加密认证算法主要由 SA 的相应数据项决定。接收者也可以通过在收到数据后检验数据包中的单向递增的序列号来确定数据包的合法性,防止重放攻击。
在应用中,需要在 IP 数据包的头和被保护的数据之间插入一个 ESP 头,在被保护的数据后附加一个 ESP 尾,如图 16-5 所示。
ESP 头的格式如图 16-6 所示,包括:安全参数索引(标识用于处理数据包的安全关联)、序列号(用于防止重放攻击)、有效荷载数据。ESP 头的所有字段都是不加密的,因为在解密数据包时需要先读取头部字段。
ESP 尾的格式如图 16-7 所示,包括:填充项(某些加密算法要求被加密数据的长度是密钥长度的整数倍,若受保护的数据的长度不满足这个要求,就需要在后面追加一些填充项)、填充项长度(指明填充项的长度)、下一个头部、认证数据(数据完整性的检验结果)。
ESP 在提供加密功能的同时,还可以提供认证功能。对于发出的数据包,首先进行加密处理;而对于收到的数据包,则先进行认证处理。
ESP 支持多种加密算法。DES 是 ESP 中默认的加密算法,它采用 64 位的密钥,对明文进行加密,加密、解密使用同一个密钥,该算法简单高效。此外还可以选择采用 3DES、AES、RC5、RC6、Blowfish 等算法。
4. IP 密钥交换
IKE 是一个混合协议,它使用了 Internet 安全关联和密钥管理协议(Internet SecurityAssociation and Key Management Protocol,ISAKMP)、密钥确定协议 Oakley 和描述支持匿名和快速密钥刷新的密钥交换的 SKEME 协议。IKE 除了实现通信双方的密钥交换,还使用ISAKMP 实现 IPSec 的安全关联。
ISAKMP 协议是 IKE 的核心组成部分,它定义了包括协商、建立、修改、删除安全关联的过程和数据格式。ISAKMP 的工作分为两个阶段:第一阶段,通信双方协商并建立一个安全的通道,并对该通道进行验证,为第二阶段的进一步通信提供安全服务;第二阶段,为IPSec 建立起具体的 IPSec 安全关联,用于保护通信双方的数据传输安全。在 IKE 的协商过程中,使用了 Diffie-Hellman 机制、Oakley 的密钥交换模式和 SKEME 的共享和密钥更新技术。
5. IPSec 的工作模式
IPSec 的工作模式有两种:传输模式和隧道模式。
传输模式首先将要传送的数据使用 IPSec 加密封装起来,再把相关的 IPSec 头插入 IP头和被保护的数据之间封装起来。因为 IP 头没有加密,接收端收到封装的数据包时直接处理 IP 头,然后从 IPSec 头读取 SPI 值得到相对的 SA,再利用 SA 所定的解密参数解出所加密的数据。
传输模式的 IPSec 头直接加在欲传送的数据前,由于加密的部分较少,没有额外的处理,因此比较节省带宽和 CPU 负载,通信和处理效率较高。
在传输模式中,解密者就是目的地址端的使用者。
隧道模式首先使用 SA 的相关信息将 IP 的数据包全部加密,接下来在前面加上 ESPHeader,然后把它们作为数据为它们再加上一个新的 IP 头。接收端收到 ESP 封包后,使用 ESP Header 内容中的 SPI 值提供的 SA,然后解出 ESP Header 后的装载数据,就可以取回原始的 IP 头与封包。
隧道模式可以在两个终端之间建立一个安全的隧道,经由这两个终端之间的通信均在这个隧道中进行,因此安全性较高。
两种模式的 IP 数据包的格式如图 16-8 所示。
16.4.2 SSL 协议
SSL 是用于安全传输数据的一种通信协议。它采用公钥加密技术、对称密钥加密技术等保护两个应用之间的信息传输的机密性和完整性。但是,SSL 也有一个不足,就是它本身不能保证传输信息的不可否认性。
SSL 协议包括服务器认证、客户认证、SSL 链路上的数据完整性、SSL 链路上的数据保密性等几个方面,通过在浏览器和 Web 服务器之间建立一条安全的通道来保证 Internet数据传递的安全性。目前,利用公钥加密的 SSL 技术,已经成为 Internet 上进行保密通信的工业标准。SSL 协议常常用于增强 Web 服务的安全性。
在 TCP/IP 协议中,SSL 协议建立在传输层即 TCP 之上、应用层之下。SSL 协议有一个突出的优点,就是它与应用层协议相独立,高层的应用层协议如 HTTP 等可以透明地建立在 SSL 协议之上进行工作。
通过 SSL 协议建立的传输通道具有如下的基本安全性:
- (1)通道是保密的,经过握手确定密钥之后,所有的消息被加密。SSL 协议在应用层协议工作之前就已经完成了加密算法、密钥的协商、服务器认证等工作,而此后的所有应用层所传送的数据都是经过加密的,因此 SSL 协议具有很好的保密性。
- (2)通道是被认证的,通信中的服务器端总是被认证,客户端可选认证。在基于 SSL 协议的通信过程中,服务器端认证是必须进行的,所以,即使在一次会话过程中不进行客户端认证,该会话的确认性也能够有很好的保证。
- (3)通道是可靠的,用 MAC 对传送的消息进行完整性检查,保证通道上数据的完整性。基于 SSL 协议的通信过程,因为传递的消息中包括消息完整性检查数据(即 MAC 数据),因此,可以保证该通信是可靠的。
SSL 协议由 SSL 记录协议、SSL 握手协议、SSL 密码变更说明协议、SSL 警告协议等组成。其架构如图 16-9 所示。
1. SSL 记录协议
在 SSL 记录协议中,所有要传输的数据都被封装在记录中,记录是由纪录头和长度不为0 的记录数据组成的。所有的 SSL 通信,包括握手消息、安全空白记录、应用数据等都需要使用 SSL 记录。
2. SSL 协议记录头格式
SSL 协议记录头格式如图 16-10 所示。
SSL 协议记录头包括的数据有记录头长度、记录数据长度、记录数据中是否有粘贴数据等。SSL 协议记录头长度既可以是 2 字节、也可以是 3 字节长。当记录头的最高位为1 时,表示不含有粘贴数据,记录头长度为 2 字节,记录数据最大长度为 32 767 字节;当记录头的最高位为 0 时,则含有粘贴数据,记录头长度为 3 字节,记录数据最大长度为 16 383字节。当记录头的最高位为 0 时,次高位有特殊的含义。当次高位为 1 时,表示所传输的记录是普通记录;当次高位为 0 时,表示所传输的记录是安全空白记录。
记录头中数据长度编码不包括数据头所占用的字节长度。记录头长度为 2 字节时记录长度的计算方法为:
记录长度=(( byte[0]&0x7f) <<8))|byte[1]
记录头长度为 3 字节时记录长度的计算方法为:
记录长度=(( byte[0]&0x3f) <<8))|byte[1]
以上计算式中,byte[0]、byte[1]也分别表示所传输的第一、二个字节。
另外,粘贴数据的长度为传输的第三个字节。
3. SSL 记录数据的格式
SSL 记录数据包含三个部分:MAC 数据和实际数据和粘贴数据。
MAC 数据用于数据完整性检查。计算 MAC 所用的散列函数由握手协议中的消息确定。
若使用 MD5 算法,则 MAC 数据长度是 16 字节。MAC 数据的产生方式为:
MAC 数据= HASH(密钥、实际数据、粘贴数据、序号)
其中,当会话的客户端发送数据时,密钥是客户的写密钥(服务器用读密钥来验证MAC数据);而当会话的客户端接收数据时,密钥是客户的读密钥(服务器用写密钥来验证 MAC数据)。序号是一个可以被发送和接收双方递增的计数器。每个通信方都会建立一个计数器,分别属于发送者和接收者。计数器有 32 位,计数值循环使用,每发送一个记录计数值递增一次,序号的初始值为 0。
4. SSL 握手协议
SSL 握手协议建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。SSL 握手的过程可以分为两个阶段,第一阶段用于建立秘密的通信信道,第二阶段用于客户验证。
在 SSL 协议中,同时使用了对称密钥加密算法和公钥加密算法,这是为了综合利用对称密钥加密算法的高速度和公钥加密算法的安全性的优点。SSL 协议使用公钥加密算法使服务器端身份在客户端得到验证,并且传递用于会话中对数据加密的对称密钥。然后再利用对称密钥在通信过程中对收到和发送的数据进行比较快速的加密,从而减小系统开销,保证通信效率。
SSL 支持各种加密算法。在“握手”过程中,使用 RSA 公开密钥系统。密钥交换后,可以使用多种密码,例如,RC2、RC4、IDEA、DES、3DES 及 MD5 信息摘要算法等。
SSL 协议可以非常有效地保护通信过程。但是,如果某种攻击是利用 SSL 协议通信进行的,那么,这种攻击也会受到 SSL 协议的保护,从而使得攻击更加隐蔽,难于被发现。
当然,这种攻击也能够很好地穿透防火墙、躲过入侵检测系统的检查。
另外,SSL 在通信过程中,要进行许多加密、解密的操作,这些计算的复杂性随着密码的强度不同而不同,但是高强度的计算会增加服务器负载、增加网络带宽,从而使服务器性能下降,吞吐量也下降。
16.4.3 PGP 协议
在信息时代里,电子邮件已经成为人们生活中的一部分,同时电子邮件的安全问题也就日益显得突出。一般来说,电子邮件在网络上的传输是不加密的。这种不加保护的邮件在网络上传输,第三者就会轻易获得通信过程中传送的信息。此外,为了防止冒名顶替,收信人需要确认邮件没有被第三者篡改,确实是发送者本人发出的,这就需要使用数字签名的一些技术。从前面的讲述可以知道,RSA 公钥密码体系非常适合用来满足上述要求。但是要直接使用 RSA 加密电子邮件,还有一些不方便的地方。
PGP(Pretty Good Privacy)是美国人 PhilZimmermann 于 1995 年提出的一套电子邮件加密方案。它可以用来对邮件加密以防止非授权者阅读,还能对邮件加上数字签名而使收信人可以确认邮件确实是由发送方发出的。
PGP 并不是新的加密算法或协议,它综合采用了多种加密算法,例如,对邮件内容加密采用 IDEA 算法、对于加密信息采用 RSA 公钥加密算法,还采用了用于数字签名的消息摘要算法,加密前进行压缩处理等技术手段进行邮件加密的一套软件。通过组合使用这些加密方法,把 RSA 公钥加密体系的良好加密效果和对称密钥加密体系的高速度结合起来,并且通过在数字签名和密钥认证管理机制中的巧妙设计,使得 PGP 成为一个优秀的强有力的数据加密程序。
由于 PGP 功能强大、处理迅速、使用简便,而且它的源代码是免费的,因此,PGP 在IT 等多个行业得到了广泛的应用,迅速普及。如今,PGP 除了用于通常的电子邮件加密,还可以用来加密重要文件,用 PGP 代替 UUencode 生成 RADIX64 格式(就是 MIME 的BASE64 格式)的编码文件,以保证它们在网络上的安全传输,或为文件做数字签名,以防止篡改和伪造。
1. PGP 加密的原理
假设一个用户 A 想要发送一个加密的邮件给另一个用户 B。那么加密的过原理如图16-11 所示。
图16-11
首先,用户 A 对要发送的邮件 P 运用 MD5 散列算法进行计算,生成一个 128 位的消息摘要,有了这个消息摘要就可以检验邮件信息是否完整、有没有被篡改。然后再通过RSA 算法,运用 A 的私钥 SKA 对消息摘要进行加密,生成消息摘要的密文 H。邮件 P 与经过加密的邮件消息摘要 H 共同构成新的报文 P1,接着对 P1 进行 ZIP 压缩,成为压缩的报文 P1.Z。再对 P1.Z 采用 IDEA 算法加密,这次加密使用一个一次性的密钥 K,并且 K必须经过 RSA 算法使用通信的另一方 B 的公开密钥 PKB 加密,与加密后的报文 P2 一起,再经过 BASE64 编码,得到一系列 ASCII 码,作为邮件内容发送到网络上。
用户 B 接收到 A 发来的加密的邮件后,执行解密过程:与加密过程相反,首先对邮件内容进行 BASE64 解码,再利用自己的秘密密钥 SKB,通过 RSA 算法解出 IDEA 的密钥K。再用此密钥恢复出 P1.Z,对 P1.Z 进行解压缩后还原出 P1。接着把明文 P 和邮件信息摘要的密文 H 分离开来,并用 A 的公开密钥 PKA 解密 H 得到真正的邮件消息摘要。然后 B 自己也运用 MD5 算法对邮件明文 P 进行运算,生成一个 128 位的消息摘要。比较这两个摘要是否一致,如果一致,则表明 P 是 A 发来的邮件。
通过上述通信过程可以看出,PGP 既可以保证邮件不被第三方窃取,又可以防止发信人抵赖和信件被途中篡改。
由于 RSA 算法的计算量太大、速度太慢,对邮件正文这种大量数据不适合用它来加密。
所以 PGP 实际上用来加密邮件正文的不是 RSA 本身,而是采用的 IDEA 加密算法。 IDEA的加密和解密使用同一个密钥,它的主要缺点就是在公共网络环境中很难进行安全的密钥的传递,不适合 Internet 上邮件加密的需要。但 IDEA 的加密、解密速度比 RSA 快得多,所以 PGP 使用一个随机生成的密钥(每次加密都不同)运用 IDEA 算法对明文加密,然后用RSA 算法对 IDEA 密钥加密。这样收件人同样使用 RSA 算法解密出这个随机的 IDEA 密钥,再用 IDEA 算法解密邮件本身。这样的链式加密就做到了既具有 RSA 算法的保密效果,又具有 IDEA 算法的快捷方便。这里,PGP 在每次加密邮件时所使用的 IDEA 密钥是一个随机数,而且为了增强随机性,PGP 是从用户敲击键盘的时间间隔上取得随机数种子来产生密钥的,从而更加增强了它的加密效果。
PGP 中使用 PKZIP 算法来压缩加密前的明文。这对电子邮件而言,一方面压缩后再加密得到的密文有可能比明文更短,这就节省了网络传输的时间;另一方面,明文经过压缩,实际上相当于多经过一次变换,信息更加杂乱无章,对非法攻击的抵御能力更强。
PGP 还可以只签名而不加密,这可以用于公开发表声明。声明人为了证实自己的身份,可以用自己的私钥签名。这样就可以让公众用其公开的公钥来验证该签名,从而确认声明人的身份。
2. PGP 的密钥管理机制
在 PGP 加密通信过程中,密钥无疑起着最为关键的作用。一个成熟的加密体系必然要有一个成熟的密钥管理机制与之相配套。PGP 对于密钥管理也提出了一套分配、使用、管理的方案。
公钥加密体制本身就是为了解决对称密钥加密体制中的密钥分配难以保密的问题而提出的。例如,攻击者常用的手段之一就是“监听”,如果密钥是通过网络传送就很容易被拦截。PGP 中采用公钥来加密,而公钥本来就要公开,所以不存在被监听的问题。但是公钥在发布过程中仍然存在安全隐患。例如,公钥被非法篡改,这就是公钥密码体系中的一大安全隐患,因为这很难被普通用户发现。
举例来说,假如用户 A 要向用户 B 发一封加密的邮件,那么 A 必须拥有 B 的公钥。
于是 A 从公共目录中查到了 B 的公钥,并用它加密了邮件然后发给了 B。这是一个正常的过程。
但是,在这个过程中可能出现攻击:A 和 B 都不知道,另一个用户 C 用他自己假冒B的名字生成的密钥当中的公钥替换了 B 的公钥!
那么 A 用来发信的公钥就不是 B 的而是 C 的公钥。然而一切看来都很正常,因为 A拿到的公钥的用户名是 B。于是 C 就可以用他手中的私钥来解密 A 发给 B 的邮件,甚至他还可以用 B 真正的公钥来转发 A 发给 B 的信,这样 A 和 B 都不会发现什么异常,而他们的通信却全部泄漏了。甚至 C 如果想改动 A 发给 B 的邮件也毫无问题。
而且,C 还可以伪造 B 的签名给 A 或其他人发送信息,因为 A 和其他人手中的公钥是 C 伪造的,A 和其他人可以正常解密这份伪造的签名,因而以为真是来自 B 的信息。
要防止这种情况,必须防止任何人伪造其他人的公钥。例如,通信双方直接见面并交换密钥,就可以避免得到伪造的公钥。然而当双方相隔遥远或不方便直接见面时,就难以直接交换密钥。这种情况下,PGP 是通过一种公钥介绍机制来解决这个问题的。
继续上面的例子:如果 A 和 B 有一个共同的朋友 D,而 D 知道他手中 B 的公钥是正确的(这里假设 D 已经认证过 B 的公钥)。这样 D 就可以用他自己的私钥在 B 的公钥上签名,表示他担保这个公钥是 B 的真正的公钥,并把它发送给 A。然后 A 用 D 的公钥来验证 D 发给 A 的 B 的公钥,同样 D 也可以向 B 担保 A 的公钥。这样 D 就成为了 A和 B 之间的公钥介绍人。
这样 B 或 D 就可以放心地把 D 签过名的 B 的公钥列示到公共目录中,供 A 读取,没有人能够伪造 B 的公钥而不被 A 发现。这就是 PGP 从不安全的 Internet 上传递公钥的安全手段。
不过,如何确认 D 的公钥的安全可靠性呢?对这种情况 PGP 建议通过一个大家普遍信任的人或权威部门担当认证机构角色。每个由权威认证机构签字的公钥都被认为是真实的,这样大家只要有一份认证机构的公钥就行了。由于认证机构广泛提供公钥服务,因而其公钥流传广泛,假冒其公钥是很困难的,所以认证其公钥也非常方便。
在 PGP 中使用密钥,要注意在使用任何一个公钥之前,一定要首先认证它。无论什么情况下,都不要直接信任一个从公共渠道得来的公钥。而要使用可信的人介绍的公钥,或者自己与对方亲自认证。
由于 PGP 能够实现数字签名、不可否认、防止篡改、防止破译等功能,所以自从 PGP推出以来,就受到人们的普遍欢迎。目前,PGP 几乎成为最流行的公钥加密软件。随着人们通信的增加和安全意识的增强,PGP 将会得到更加广泛的应用。
16.5 计算机病毒与防治
计算机技术和网络技术的飞速发展,为人们的工作、学习、生活带来了极大的方便。计算机已经成为人们不可缺少的现代化工具。但是计算机病毒的出现带给人们不安和忧虑,同时向人们提出了挑战。
16.5.1 计算机病毒概述
计算机病毒(Computer Virus)的概念最早是由美国计算机病毒研究专家 F.Cohen 博士提出的。对于计算机病毒的定义,不同的国家、不同的专家从不同的角度给出的定义也不尽相同。根据《中华人民共和国计算机信息系统安全保护条例》第 28 条规定:“计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。”此定义在我国具有法律效力和权威性。
和生物病毒一样,计算机病毒的复制能力使得计算机病毒可以很快地蔓延,又常常难以根除。它们能把自身附在宿主系统或文件中,当系统被运行或文件从一个用户传送到另一个用户时,它们就随同系统运行或文件传输一起蔓延开来。
在病毒的生命周期中,病毒一般会经历潜伏阶段、传染阶段、触发阶段和发作阶段 4 个阶段。多数病毒是基于某种特定的方式进行工作的,因此也依赖于某个特定的操作系统或某个特定的硬件平台。因此,攻击者经常利用某个特定系统的细节和弱点来设计病毒程序。
1. 计算机病毒的特征
计算机病毒多种多样,但是它们都具有共同的特征,即传染性、非授权性、潜伏性和破坏性。
计算机病毒的传染性是指病毒具有把自身复制到其他系统或文件等宿主中去的能力,这是病毒的基本特征。非授权性是指病毒程序的执行不需要得到用户的同意,对用户来说是未知的。潜伏性是病毒生存的必要条件,即病毒潜伏在系统中而不被人们所发觉。破坏性是指病毒在一定条件下可以自动触发,并对计算机实施破坏,是病毒的表现特征。病毒的非授权性、潜伏性使得病毒的行为是不可预见的,也增加了病毒检测的困难。病毒破坏性的触发条件越多,则传染性越强,但同时其潜伏性降低。一个病毒必须具备传染性,但不一定需要拥有其他属性。
2. 计算机病毒的分类
计算机病毒按不同的分类标准,有许多不同分类:
按照操作系统分,可分为攻击 DOS 系统的病毒、攻击 Windows 系统的病毒、攻击Unix/Linux 系统的病毒、攻击 OS/2 系统的病毒、攻击 Macintosh 系统的病毒、攻击手机的病毒、其他操作系统上的病毒。
按照链接方式分,计算机病毒可分为源码型病毒、嵌入型病毒、Shell 病毒、宏病毒、脚本型病毒、操作系统型病毒。
按照破坏情况分,计算机病毒可分为良性病毒和恶性病毒。按传播媒介来分,计算机病毒可分为单机病毒和网络病毒。
3. 计算机病毒的组成
病毒程序一般由传染模块、触发模块、破坏模块和主控模块组成,相应地完成病毒的传染、触发和破坏等任务。也有少数病毒不具备所有的模块。
- (1)传染模块。传染模块是病毒进行扩散传播的部分,负责把计算机病毒从一个系统或文件传播到更多的系统或文件中去。每个病毒都有一个自我识别的标记,叫作传染标记或病毒签名。病毒程序传染系统或文件时,要把传染标记写入系统或文件中某个特定区域,例如,宿主程序、注册表、物理磁道等,作为该系统或文件已被传染的标记,以防止重复传染,增强病毒的潜伏效果。传染模块的主要功能有:寻找一个可传染的系统或文件;检查该系统或文件中是否有传染标记,判断该系统或文件是否已经被传染;如果没有传染标记,则进行传染操作,将病毒代码植入宿主系统或文件中,完成一次传染。
- (2)触发模块。病毒触发模块主要检查预定触发条件是否满足,如果满足,则调用相应传染或破坏模块,进行传染和破坏动作。病毒的触发条件有多种形式,如日期、时间、键盘、发现特定程序、发现网络连接、发现系统漏洞、传染的次数、特定中断调用的次数等。
依据触发条件的情况,可以控制病毒传染和破坏动作的频率,使病毒在隐蔽的状态下,进行传染和破坏动作。
- (3)破坏模块。破坏模块负责实施病毒的破坏动作。这些破坏动作可能是破坏程序及数据、降低系统的性能、干扰系统的运行,还有些病毒甚至可以破坏计算机硬件。也有少数病毒的破坏模块并没有明显的恶意破坏行为,仅在被传染的系统设备上表现出特定的现象,该模块有时又称为表现模块。
- (4)主控模块。主控模块在总体上控制病毒程序的运行。染毒程序运行时,首先运行的是病毒的主控模块。
16.5.2 网络环境下的病毒发展新趋势
在互联网给人们的工作、生活带来方便的同时,也给大量新病毒的产生和发展带来了“方便”。在互联网高度发达的今天,计算机病毒的数量急剧增多,传播途径也更加多样,传染速度也更加快捷。除了以往通过相互复制文件、系统之间交叉传染等方式外,目前的计算机病毒更多地通过网页、电子邮件、局域网共享、系统漏洞等方式在网络上进行自动传播。
有些流行病毒,常常借助于网络在两、三天内迅速传遍全国,传遍全世界。
例如,E-mail 病毒就是目前最为流行 Internet 病毒种类之一,它通过在电子邮件附件中添加危险的病毒执行程序,在邮件正文中添加诱惑性的文字,诱使收件人执行附件病毒程序,以达到其激活的目的。目前此类病毒多数针对微软的 Outlook 和 Outlook Express 程序,并以使用 Windows 的地址簿联系人发送病毒邮件形式传播。不但危害个人,而且可能导致Internet 邮件服务器由于收发大量的病毒附加的邮件被大量占用网络资源,直至邮件服务器崩溃。
此外,由于 Internet 即时通信被广泛运用,借助于 MSN、QQ、OICQ 等传播病毒也成为近年来病毒流行的一个趋势,病毒很可能通过这些软件自动发送有害信息实现自动传播。
目前,通过局域网共享传播的病毒也有很多。在广泛使用的 Windows 系统中,管理共享、特殊端口等默认是打开的,有些版本的系统中,甚至具有可写权限。这样,病毒在搜索到局域网共享资源后,便可以直接传染目标计算机相应文件夹中的文件或者将病毒写入相应系统中,以便得到在目标计算机中执行的机会。也正是因为这个原因,很多病毒在传染一台计算机后会造成某个局域网普遍传染的情况,并且在不断开网络连接的情况下很难将病毒清除干净。
在当前的网络环境下,最常见的恶意程序是木马程序,也称后门程序。它们大多利用系统漏洞或者空闲的端口,通过在系统中安装相应的木马程序,并通过互联网使用专门的软件监视宿主计算机,以这样的方式获得宿主系统文件访问授权,以及收集宿主系统的信息,如用户个人资料、银行账号与密码、网游账号等。
由于网络传输速度很快,所以网络环境下的病毒传染速度也非常快,一度轰动的“冲击波”、“震荡波”等病毒都是在相应的系统漏洞被发现后几天时间里,就迅速在全世界大范围蔓延开来。可以说,今天的计算机病毒的品种和传播速度,超过了以往任何时候。
16.5.3 计算机病毒的检测与清除
本节简单介绍计算机病毒的检测方法,以及如何清除病毒。
1. 特征码检测
所谓特征码查毒法,就是在获取病毒样本后,提取出其特征码,(例如,杨基病毒的特征码是 16 进制的“F4 7A 2C 00”,快乐时光病毒中的“Fun Time”字符串等),然后通过该特征码对目标文件或内存等进行扫描。如果发现这种特征码,就说明感染了这种病毒,然后针对性地清除病毒。
特征码技术是最早被采用,而且被许多反病毒软件一直沿用至今的病毒检测方法。特征码检测方法检测病毒,方法简单、准确、快速,可识别病毒的名称,误报警率低。
但是,特征码技术只能诊断已知的计算机病毒,其响应速度永远滞后于病毒,而且不能检查未知病毒和变形病毒,不能对付隐蔽性病毒。
随着计算机病毒的发展,不断出现的新的病毒,甚至有些病毒具有自动变形功能,例如,“卡死脖”病毒,采用传统病毒特征码搜索技术的杀毒软件常常难以应付这些变形病毒。为此,人们提出了广谱特征码过滤技术,该技术在一定程度上可以弥补以上缺陷。
2. 校验和检测
先计算正常文件的内容和正常的系统扇区数据的校验和,将该校验和写入数据库中保存。
检测时,检查文件现在内容的校验和与原来保存的校验和是否一致,从而可以发现文件或扇区是否被感染,这种方法称校验和检测。
校验和检测技术的优点是:方法简单、能发现未知病毒、被查文件的细微变化也能发现。
但是,它不能识别病毒种类。而且,由于病毒感染并非是文件内容改变的唯一原因,文件内容的改变有可能是正常程序引起的,所以校验和检测技术受到种种限制,同时这种方法也会影响文件的运行速度。另外,校验和不能检测新的文件,如从网络传输来的文件、磁盘和光盘拷入的文件、备份文件和压缩文档中的文件等。
3. 行为监测
随着近年来病毒与反病毒斗争的不断升级、新病毒产生的速度不断加快,传统反病毒技术滞后于病毒的特点越来越不能适应防病毒的需要,更需要采用通用反病毒技术来保护计算机的安全。现阶段中被广泛研究和采用的通用病毒检测技术有病毒行为监测技术、启发式扫描技术和虚拟机技术。
通过研究发现,病毒不论伪装得如何巧妙,它们总是存在着一些和正常程序不同的行为,而这些行为在正常应用程序中却十分罕见,这就是病毒的行为特性。
常见的病毒行为特性有:对可执行文件进行写操作、写磁盘引导区、病毒程序与宿主程序的切换、程序自己重定位、通过搜索函数索引表来获取 API 函数地址等。
利用这些特征,就可以对病毒实施监视,在病毒程序体进行活动时发出报警。采用这种行为特性检测方法不仅可以检测出已知病毒,而且可以检测出新出现的未知病毒,无论该病毒是什么种类,或是否变形。但是,行为监测技术也可能误报警,而且不能识别病毒名称。
4. 启发式扫描
在特征码扫描技术的基础上,利用对病毒代码的分析,获得一些统计的、静态的启发性知识,可以用于静态的启发性扫描技术(Heuristic Scanning)。
启发式扫描主要分析文件中的指令序列,根据统计知识,判断该文件可能被感染或者没有被感染,从而有可能找到未知的病毒。因此,启发式扫描技术是一种概率方法,遵循概率理论的规律。早期的启发式扫描软件采用代码反编译技术作为它的实现基础。这类病毒检测软件在内部保存数万种病毒行为代码的跳转表,每个表项对应一类病毒行为的必用代码序列,如病毒格式化磁盘必须用到的代码等。启发式病毒扫描软件利用代码反编译技术,反编译出被检测文件的代码,然后在这些表格的支持下,使用“静态代码分析法”和 “代码相似比较法”等有效手段,就能有效地查出已知病毒的变种,以及判定文件是否含有未知病毒。
由于病毒代码千变万化,具体实现启发式病毒扫描技术是相当复杂的。通常这类病毒检测软件要能够识别并探测许多可疑的程序代码指令序列,如格式化磁盘类操作、搜索和定位各种可执行程序的操作、实现驻留内存的操作、子程序调用中只执行入栈操作、远距离(如超过文件长度的三分之二)跳往文件头的指令等。一般来说,仅仅一项可疑的功能操作不足以触发病毒报警。但如果同时具有多项可疑操作,目标程序就很可能是病毒程序。
5. 虚拟机
自动变形病毒,也称为多态性病毒或多型(形)性病毒。自动变形病毒每次感染宿主时都自动改变自身的程序代码和特征码,这类病毒的代表有“幽灵”病毒等。
一般而言,自动变形病毒采用以下几种操作来不断变换自己:采用等价代码对原有代码进行替换;改变与执行次序无关的指令的次序;增加许多垃圾指令;对原有病毒代码进行压缩或加密等。因为自动变形病毒对其代码不断进行变换,而且每次传染使用不同的密钥。将染毒文件的病毒代码相互比较,也难以找出相同的可作为病毒特征的稳定特征码,因此用传统检测方法根本无法检测出这类病毒。但是,自动变形病毒也有一个共同的规律:即无论病毒如何变化,每一个自动变形病毒在其自身执行时都要对自身进行还原。
为了检测自动变形病毒,出现了一种新的病毒检测方法——“虚拟机技术”。该技术用软件方法让病毒在一个虚拟的环境中,仿真一部分系统指令和功能调用,对病毒代码作解释执行,而且仿真运行不对系统产生实际的影响,即可获得程序运行的后果,并在此基础上对程序运行分析,进而判断是否存在病毒。不管病毒使用什么样的加密、隐形等伪装手段,只要在虚拟机所营造的虚拟环境下,病毒都会随着运行过程自动褪去伪装(实际上是被虚拟机动态还原)。正是基于上述设计原理,虚拟机在处理加密、变换、变形病毒方面具有很强的优越性。
虚拟机检测方法,实际上是用软件实现了模拟人工反编译、智能动态跟踪、分析代码运行的过程,其效率更高,也更准确。使得反病毒从单纯的静态分析进入了动态和静态分析相结合的新时期,极大地提高了对已知病毒和未知病毒的检测水平。在今后相当长的一段时间内,虚拟机技术还会有很大的发展。
6. 病毒的清除
将病毒代码从宿主中去除,使之恢复为可正常运行的系统或程序,称为病毒清除。大多数情况下,采用反病毒软件或采用手工处理方式可以恢复受感染的文件或系统。
不是所有染毒文件都可以消毒,也不是所有染毒的宿主都能够被有效恢复。依据病毒的种类及其破坏行为的不同,感染病毒后,如果宿主数据没有被删除,常常可以恢复;如果宿主数据被病毒删除或覆盖、或者宿主数据的逻辑关系被病毒破坏,常常不能恢复。
16.5.4 计算机病毒的预防
“防重于治”,对于计算机病毒也是如此。在日常使用计算机的过程中,同时做好预防工作,可以很大程度上避免被病毒感染,减少不必要的物力、数据损失。
要预防计算机病毒,最好的方法就是不与外界交换文件,但这是不可能的。人们在工作中,要经常与外界进行各种数据交换。而大量与外界交换信息,就给病毒的感染与传播创造了条件。
为了保护计算机不受病毒破坏,至少必须做到:
- (1)一定要在计算机中安装反病毒软件。
- (2)不要轻易使用来历不明的或者没有经过确认的软件;对从网络上下载的程序和文档应十分小心,在执行文件或打开文档之前,要检查是否有病毒;从外部取得的介质及其中的文件,应检查病毒后再使用;压缩后的文件应解压缩后检查病毒。
- (3)电子邮件的附件应该先检查病毒后再开启,并在发送邮件之前检查病毒;不要运行来历不明的 E-mail 附件,尤其是在邮件正文中以诱惑性的文字建议执行的附件程序。
- (4)定期使用反病毒软件扫描系统。
- (5)确保所使用的反病毒软件的扫描引擎和病毒代码库为最新的,因为旧的扫描引擎和病毒代码库不会检查到新出现的病毒。
- (6)为防止引导型病毒对系统的破坏,应该在系统安装完成后立即制作系统应急启动盘,以便万一硬盘分区表遭到破坏时,能从应急盘启动,并用备份的引导区、分区表等直接进行恢复。
- (7)对于一些重要的文件,要定期进行备份,以便万一系统遭受病毒破坏时能够从备份恢复。
- (8)利用安全扫描工具定时扫描系统和主机。若发现漏洞,及时寻找解决方案,从而减少被病毒和蠕虫感染的机会。
- (9)使用反病毒软件时,最好先查毒,找到了带毒文件后,再确定是否进行杀毒操作。
因为查毒不是危险操作,它可能产生误报,但绝不会对系统造成任何损坏;而杀毒是危险操作,有的操作可能把文件破坏。
- (10)建立本单位的计算机病毒防治管理制度;并对计算机用户进行反病毒培训。
16.6 身份认证与访问控制
访问控制是通过某种途径限制和允许对资源的访问能力及范围的一种方法。它是针对越权使用系统资源的保护措施,通过限制对文件等资源的访问,防止非法用户的侵入或者合法用户的不当操作造成的破坏,从而保证信息系统资源的合法使用。
访问控制技术可以通过对计算机系统的控制,自动、有效地防止对系统资源进行非法访问或者不当地使用,检测出一部分安全侵害,同时可以支持应用和数据的安全需求。
访问控制技术并不能取代身份认证,它是建立在身份认证的基础之上的。
访问控制技术包括如下几方面的内容:
- (1)用户标识与认证。用户标识与认证是一种基于用户的访问控制技术,它是防止未经授权的用户进入系统的一种常规技术措施。用户标识用于向系统声明用户的身份。用户标识一般应当具有唯一性,其最常见的形式就是用户 ID。系统必须采用一定的策略来维护所有的用户标识。验证用户标识的有效性、真实性,通常有三种类型的认证方式:一是用户个人掌握的秘密信息,例如,口令、密钥、PIN 码等;二是用户个人所拥有的带有认证信息的特定物品,例如,磁卡、IC 卡等;三是用户个人的特定生理、生物学特征,例如,声音、指纹等。在同一种系统中可以单独采用一种认证方法,也可以联合采用多种认证方法。
- (2)逻辑访问控制。逻辑访问控制是基于系统的访问控制技术,用来控制特定的用户对特定资源的访问。通常,把用户分成不同的组,再对组授予不同的访问权限来实现对用户的逻辑访问控制,防止用户访问他所不需要访问的资源、或者进行与工作无关的访问。
- (3)审计与跟踪。审计与跟踪系统的一个或多个运行记录,在事件发生后对事件进行调查,分析其时间、原因、活动内容、引发的相关事件、涉及的用户等。
- (4)公共访问控制。如果一个应用系统是面向公众开放,允许公众进行访问时,面临的主要威胁是来自外部的匿名攻击,必须采取访问控制等措施以保护系统数据的完整性和敏感信息的保密性。
16.6.1 身份认证技术
身份认证是对系统的用户进行有效性、真实性验证。
1. 口令认证方式
使用口令认证方式,用户必须具有一个唯一的系统标识,并且保证口令在系统的使用和存储过程中是安全的,同时口令在传输过程中不能被窃取、替换。另外特别要注意的是在认证前,用户必须确认认证者的真实身份,以防止把口令发给冒充的认证者。
使用口令的单向身份认证过程一般是:请求认证者和认证者之间建立安全连接、并确认认证者身份等;然后请求认证者向认证者发送认证请求,认证请求中必须包括请求认证者的ID 和口令;认证者接受 ID 和口令,在用户数据库中找出请求认证的 ID 和口令;查找是否有此用户并比较两口令是否相同;最后向请求认证者发回认证结果。如果请求认证者的 ID在认证者的用户数据库中,并且请求认证者发送的口令与数据库中相应的口令相同,则允许请求认证者通过认证。
2. 基于公钥签名的认证方式
公开密钥签名算法的身份认证方式,是通过请求认证者与认证者(对于双向身份认证而言,双方互为请求认证者和认证者)之间对于一个随机数做数字签名与验证数字签名来实现的。这种方式中认证双方的个人秘密信息不用在网络上传送,从而减少了口令等秘密信息泄漏的风险。
采用数字签名技术认证与口令认证方式有一个很大的不同:口令认证通常在正式数据交换开始之前进行。认证一旦通过,双方即建立安全通道进行通信,此后的通信被认为是安全的,不再进行身份认证;而数字签名认证在每一次的请求和响应中进行,即接收信息的一方先从接收到的信息中验证发送者的身份信息,验证通过后才对收到的信息进行相应处理。
使用公钥加密算法进行身份认证要求:请求认证者必须具有私钥实现数字签名的功能;
认证者必须具有使用公钥验证数字签名的功能;认证者必须具有产生随机数的功能,而且随机数的质量必须达到一定要求。
使用公钥加密算法进行身份认证的方式,对用于数字签名的私钥由参与通信的认证者自己保密,而用于验证数字签名的公钥则需要采用可靠的方式进行安全分发。一般可以采用公钥数据库方式或者使用认证机构签发数字证书的方式(认证机构与数字证书的内容参见前文PKI 部分)。
如果使用公钥数据库的方式管理公钥,则请求认证者 ID 就包含在认证请求中发给认证者,认证者使用该 ID 从公钥数据库中获得请求认证者的公钥。
如果使用认证机构签发数字证书的方式管理公钥,则请求认证者的数字证书包含在认证请求中发给认证者,认证者验证请求认证者的数字证书后,从数字证书中获取请求认证者的公钥。
3. 持卡认证方式
持卡认证方式最早采用磁卡。磁卡中最重要的部分是磁道,不仅存储数据,而且还存储用户的身份信息。目前所用的卡是 IC 卡,与磁卡相比,它除了存储容量大之外,还可一卡多用,同时具有可靠性高,寿命长,读写机构简单可靠,造价便宜,维护方便,容易推广等诸多优点。正由于上述优点,使得 IC 卡在世界各地广泛使用。IC 卡上一般分为不加密的公共区、加密的数据区等,有些还有自己的操作系统和微处理器。IC 卡已被广泛应用于身份认证领域。
一般 IC 卡与用户的个人 PIN 一起使用。在脱机系统中,PIN 以加密的形式存在卡中,识别设备读出 IC 卡中的身份信息,然后将其中的 PIN 解密,与用户输入的 PIN 比较,以决定 IC 卡持有者是否合法。在联机系统中,PIN 可不存在 IC 卡上,而存在主机系统中,鉴别时,系统将用户输入的 PIN 与主机的 PIN 比较,而由此认证其身份的合法性。
4. 基于人体生物特征的认证方式
这种方式是指通过计算机,利用人体固有的生理特征或行为特征进行个人身份鉴定。与传统的身份鉴别手段相比,基于生物特征的认证技术具有突出的优点:一是不会遗忘或丢失;
二是防伪性能好,无法伪造;三是随时随地可用。能够用来鉴别身份的生物特征一般具有广泛性(每个人都应该具有这种特性)、唯一性(每个人拥有的特征应各不相同)、稳定性(所选择的特征应该不随时间变化而发生变化)和可采集性(所选择的特征应该便于采集、测量)。
目前,可用于身份鉴别的生物特征主要有指纹、笔迹、脸像、红外温、视网膜、手形、掌纹等。
由于生物特征识别的设备比其他身份认证的设备要复杂,所以一般用在非常重要的机密场合,如军事等。生物特征识别主要采用模式识别技术。身份识别系统工作方式分为识别模式和鉴定模式,其性能指标主要有错误拒绝率和错误接受率等。在选择这种认证方式时需要对这些参数作认真的考虑。
5. 动态口令技术(一次性口令技术)
一般情况下,所使用的计算机口令都是静态的,也就是说在一定的时间内是相对不变的,而且可重复使用。这种口令很容易被系统中的嗅探程序所劫持,而且很容易受到基于字典的暴力攻击。
针对这种静态口令认证方式的缺陷,人们提出了利用散列函数产生一次性口令的方法,即用户每次登录系统时使用的口令都是变化的。一次性口令是动态变化的密码,其变化来源于产生密码的运算因子。一次性口令的产生因子一般都采用双运算因子:一是用户的私钥,它代表用户身份的识别码,是固定不变的。二是变动因子,正是变动因子的不断变化,才能够产生动态的一次性口令。
动态口令技术认证方式中要用到动态口令密码卡,这是一种便于携带的智能化硬件产品。
这种密码卡内置的构件和程序能通过密码卡内的密钥加上其他因子动态地计算出新的口令。
当密码卡持有者将这个口令输入计算机时,系统中的认证服务器会根据相同的算法和动态因子计算出对应于该密码卡的认证口令,并把这个口令与密码卡产生的口令比对,进行身份认证。
6. PPP 中的认证协议
点到点协议(Point-to-Point Protocol,PPP)提供了一种在点到点链路上封装网络层协议信息的标准方法。PPP 也定义了可扩展的链路控制协议。链路控制协议使用验证协议磋商机制,在链路层上传输网络层协议前验证链路的对端。
PPP 包含如下几个部分:在串行链路上封装数据报的方法;建立、配置和测试数据链路连接的链路控制协议(Link Control Protocol,LCP);建立和配置不同网络层协议的一组网络控制协议(Network Control Protocol,NCP)。
PPP 协议定义了两种验证协议:密码验证协议(Password Authentication Protocol,PAP)和挑战—握手验证协议(Challenge-Handshake Authentication Protocol,CHAP),此外还有扩展认证协议(Extensible Authentication Protocol,EAP)。
一个典型的 PPP 链路建立过程分为三个阶段:创建阶段、认证阶段和网络层协商阶段。
- (1)创建阶段。在这个阶段,将对基本的通信方式进行选择。链路两端设备通过 LCP 向对方发送配置信息,建立链路。在链路创建阶段,只是对验证协议进行选择,具体的用户验证过程在认证阶段实现。
- (2)认证阶段。在这个阶段,客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全的验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。认证成功,则转到网络层协商阶段。如果认证失败,则链路终止。
- (3)网络层协商阶段。认证阶段完成之后,PPP 将调用在链路创建阶段选定的各种 NCP协商高层协议问题,例如,在该阶段 IP 控制协议可以向拨入用户分配动态地址。这样,经过三个阶段以后,一条完整的 PPP 链路就建立起来了。
最常用的认证协议有 PAP 和 CHAP,此外还有 EAP。
- (1)PAP。PAP 是一种简单的明文验证方式。网络接入服务器要求用户提供用户名和口令,PAP 以明文方式返回用户信息,并且对回送或者重复验证和错误攻击没有保护措施。
很明显,这种验证方式的安全性较差,第三方可以很容易地获取被传送的用户名和口令,并利用这些信息与网络接入服务器建立连接获取网络接入服务器提供的资源。所以,一旦用户密码被第三方窃取,PAP 无法提供避免受到第三方攻击的保障措施。
- (2)CHAP。CHAP 是一种加密的验证方式,能够避免建立连接时传送用户的明文密码。
网络接入服务器向远程用户发送一个挑战口令,其中包括会话 ID 和一个任意生成的挑战字串。远程客户端使用 MD5 散列算法返回用户名和加密的挑战口令、会话 ID 及用户口令。
CHAP 对 PAP 进行了改进,不再直接通过链路发送明文口令,而是使用挑战口令以散列算法对口令进行加密。因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的散列操作,并将结果与用户返回的口令进行对照。
CHAP 为每一次验证任意生成一个挑战字串来防止受到攻击。在整个连接过程中, CHAP将不定时地随机向客户端重复发送挑战口令,从而避免非法入侵者冒充远程客户进行攻击。
HAP 验证方式具有如下的优点:
- ① 通过可变的挑战口令和随机地、重复地发挑战口令,CHAP 防止了重放攻击。
- ② 该认证方法依赖于认证者和对端共享的密钥,密钥不是通过链路发送的。
- ③ 虽然该认证是单向的,但是在两个方向都进行 CHAP 协商,同一密钥可以很容易地实现交互认证。
- ④ 由于 CHAP 可以用在许多不同的系统认证中,因此可以用用户名作为索引,以便在一张大型密钥表中查找正确的密钥。这样也可以在一个系统中支持多个用户名—密钥对,在会话中随时改变密钥。
CHAP 在设计上的要求:
- ① CHAP 算法要求密钥长度必须至少是1 字节,至少应该不易让人猜出,密钥最好至少是散列算法所选用的散列码的长度,如此可以保证密钥不易受到穷举搜索攻击。所选用的散列算法,必须保证从已知挑战口令和响应值来确定密钥在计算上是不可行的。
- ② 每一个挑战口令应该是唯一的,否则在同一密钥下,重复挑战口令将使攻击者能够用以前截获的响应值应答挑战口令。由于希望同一密钥可以用于地理上分散的不同服务器的认证,因此挑战口令应该做到全局临时唯一。
- ③ 每一个挑战口令也应该是不可预计的,否则攻击者可以欺骗对方,让对方响应一个预计的挑战口令,然后用该响应冒充对端欺骗认证者。虽然 CHAP 不能防止实时地主动搭线窃听攻击,但是只要能产生不可预计的挑战口令就可以防范大多数的主动攻击。
- (3)EAP。EAP 是一个用于 PPP 认证的通用协议,可以支持多种认证方法。EAP 并不在链路控制阶段而是在认证阶段指定认证方法,这样认证方就可以在得到更多的信息以后再决定使用什么认证方法。这种机制还允许 PPP 认证方简单地把收到的认证信息传给后方的认证服务器,由后方的认证服务器来真正实现各种认证方法。
EAP 的认证过程是:在链路阶段完成以后,认证方向对端发送一个或多个请求报文。
在请求报文中有一个类型字用来指明认证方所请求的信息类型,例如,可以是对端的 ID、MD5 的挑战口令、一次性密码及通用密码卡等。MD5 的挑战口令对应于 CHAP 认证协议的挑战口令。典型情况下,认证方首先发送一个 ID 请求报文随后再发送其他的请求报文。
对端对每一个请求报文响应一个应答报文。和请求报文一样,应答报文中也包含一个类型字段,对应于所回应的请求报文中的类型字段。认证方再通过发送一个成功或者失败的报文来结束认证过程。
EAP 具有突出的优点:它可以支持多种认证机制,而不需要在建立连接阶段指定;某些设备,例如,网络接入服务器,不需要关心每一个请求信息的真正含义,而是作为一个代理把认证报文直接传给后端的认证服务器,设备只需关心认证结果是成功还是失败,然后结束认证阶段。
当然 EAP 也有一些缺点:它需要在 LCP 中增加一个新的认证协议,这样现有的 PPP要想使用 EAP 就必须进行修改。同时,使用 EAP 也和现有的在 LCP 协商阶段指定认证方法的模型不一致。
7. RADIUS 协议
RADIUS(Remote AuthenticationDial-in User Service)协议是由朗讯公司提出的客户/ 服务器方式的安全认证协议,它能在拨号网络中提供注册、验证功能,现已成为 Internet 的正式协议标准,是当前流行的 AAA(Authentication、Authorization、Accountion)协议。
RADIUS 协议可以把拨号和认证这两种功能放在两个分离的服务器——网络接入服务器(NAS)和后台认证服务器(RADIUS 服务器)上。在 RADIUS 服务器上存放有用户名和它们相应的认证信息的一个大数据库,来提供认证用户名和密码及向用户发送配置服务的详细信息等。
RADIUS 具有非常突出的特点:
- ① RADIUS 协议使用 UDP 进行传输,它使用 1812 号端口进行认证,以及认证通过后对用户授权,使用 1813 号端口对用户计费。
- ② 支持多种认证方法,RADIUS 能支持 PAP、CHAP、UNIX Login 及其他认证方法;
- ③ 支持认证转接(AuthenticationForwarding),一个 RADIUS 服务器可以作为另一个RADIUS 服务器的客户端向它要求认证,这叫作认证转接。
- ④ 协议扩展性好,通过协议中变长的属性串能够进一步扩展 RADIUS 协议。
- ⑤ 认证信息都加密传输,安全性高。RADIUS 服务器和接入服务器之间传递的认证信息用一个事先设置的口令进行加密,防止敏感信息泄露,因此安全性高。
RADIUS 的认证过程如下:
- ① 接入服务器从用户那里获取用户名和口令(PAP 口令或 CHAP 口令),把它同用户的一些其他信息(如主叫号码、接入号码、占用的端口等)组成 RADIUS 认证请求数据包发送给 RADIUS 服务器,请求认证。
- ② RADIUS 服务器收到认证请求包后,首先查看接入服务器是否已经登记,然后根据请求中用户名、口令等信息验证用户是否合法。如果用户非法,则向接入服务器发送访问拒绝包;如果用户合法,那么 RADIUS 服务器会将用户的配置信息,例如,用户类型、IP 地址、连接协议、端口信息、ACL 授权等信息,一起组成访问接受包发送回接入服务器。
- ③ 接入服务器收到访问接受/拒绝包时,首先要判断包中的签名是否正确,如果不正确将认为收到了一个非法的包。验证签名的正确性后,如果收到了访问接受包,那么接入服务器会接受用户的上网请求,并用收到的授权信息对用户进行配置、授权,限制用户对资源的访问;如果收到的是访问拒绝包则拒绝该用户的上网请求。
- ④ 当用户成功登录后,接入服务器会向 RADIUS 服务器发送一个连接开始的记账信息包,其中包括用户使用的连接种类、协议和其他自定义的用户记账的信息;当用户断开连接后,接入服务器再向 RADIUS 服务器发送一个连接结束的记账信息包,通知 RADIUS 服务器停止对该用户记账。RADIUS 服务器根据收到的记账信息包按照该用户的设置为用户记账。
16.6.2 访问控制技术
访问控制是在身份认证的基础上,根据不同身份的用户对用户的访问请求加以限制。身份认证关心的是“你是谁,你是否拥有你所声明的身份”这个问题;而访问控制则关心“你能做什么,不能做什么”的问题。
在访问控制过程中,一般把发出访问、存取请求的一方,例如,用户、程序、进程等叫作主体;而把被访问的对象和资源,例如,文件、数据库、设备、内存区域等叫作客体。另外还有一套定义主体与客体之间相互关系,确定不同主体对不同客体的访问能力与权限的规则,叫作访问规则。一个完整的访问控制体系就是由上述三方面共同构成的。
1. 访问控制策略
访问控制策略一般可以划分为三类:自主访问控制(Discretionary Access Control, DAC),强制访问控制(Mandarory Access Control,MAC),基于角色的访问控制(Roal Based AccessControl,RBAC)。其中 DAC、MAC 是属于传统的访问控制策略,而 RBAC 则是后来出现的一种访问控制策略,被认为具有很大的优势,具有很好的发展前景。
- (1)DAC。自主访问控制是目前计算机系统中实现最多的访问控制机制,它使主体可以自主地进行配置以决定其他的主体可以采取什么样的方式来访问其所拥有的一些资源,即一个拥有一定权限范围的主体可以直接或者间接地把权限授予其他的主体。
常见的操作系统如 Windows、UNIX 等都是采用自主访问控制策略来实施访问控制的。
其常见的方式是由某个用户(一般为某个文件或资源的拥有者或超级管理员)采用某种方式指定不同类型、不同分组的其他用户对其名下的资源的访问许可和访问方式。
自主访问控制策略中,由用户自己决定其他用户对系统中某些资源的访问权限,这样虽然方便,但是却很难保证这种类型的授权对于整个系统来说是安全的。首先,用户往往不知道或者难以确定其他的用户是否适合具有对某些资源的访问权限;其次,如果不是所有的用户都有很强的安全意识,可能随意授权,那么这对于系统安全就是一个潜在的威胁;再次,由用户自己决定访问权限的分配,不利于系统管理员实施统一的全局访问控制;另外,许多组织中往往希望对于信息系统采取的授权与控制结构能够与该组织的行政结构一致。总之,自主访问控制策略容易使系统失控,容易给非法入侵者留下可乘之机。所以,自主访问控制策略的安全性不是很高。
随着网络规模的扩大,用户对访问控制服务的质量也提出了更高的要求,采用自主访问控制策略已经很难满足一个安全性要求比较高的系统的需要。
- (2)MAC。强制访问控制是系统统一采用某种访问权限的授予和撤销的策略,而且强制所有主体都必须服从这种访问权限的分配。
MAC 一般用在安全级别层次比较多的军事、安全等特殊应用领域中。它预先为系统中接受的所有主体、客体根据可以信任的程度、所处的岗位和承担的任务、信息的敏感程度、时间发展的阶段等划分成若干级别,例如,信息可以分为绝密、机密、秘密和无密级等不同的级别。然后再根据主体和客体的级别标记来决定访问模式,任何用户对任何客体的访问请求都由这种安全级别的划分及相应的权限配置来控制。
强制访问控制由于过于强调系统的安全性能,虽然能够很好地控制系统的安全,但是它管理起来比较麻烦,工作量很大,也不够灵活。
- (3)RBAC。DAC 和 MAC 访问控制策略都各有其特点,但是也各有它们的不足。而基于角色的访问控制则可以在克服以上两者的缺点的同时,提供一个良好的安全的系统环境,因而是面向企业的系统中一种十分有效的访问控制策略。
DAC 系统中,有一种常见的情况,就是在一个组织中,最终用户能够使用某些资源,但是它并不是该资源的拥有者,资源的拥有者是这个组织或组织中的所有用户。这时,就应该基于用户的职务来进行访问权限的设置和分配,而不应该基于资源的拥有者来进行。
例如,在图书馆中,应该根据某一个用户是流通人员、文献编目人员,还是分馆的管理员等不同的角色来分配和设置权限。如果是文献编目人员,那么他对系统中流通的图书这种资源就只能有查看的权限,而对未进行典藏的图书等资源就有比较高的访问权限;如果是分馆的管理员,那么他相应地就具有对该分馆的读者、文献等资源有较高的访问权限,而对其他用户则没有。也就是说,用户具有什么样的访问权限,不直接取决于用户自己,而是取决于他所属的角色,有什么样的角色就有什么样的权限。
角色的种类和访问权限由系统管理员来定义,每一个成员属于哪种类型的角色也由系统管理员来规定,即只有系统管理员才有权定义和分配角色,而且对于用户来说只能服从系统中的这一系列规定,而不能有自主的配置,因此这是一种非自主型访问控制策略。
2. 访问许可的授权对访问许可的授权有三种类型:
- (1)等级型。把对客体的存取控制权限的修改能力划分成不同的等级,拥有高级别修改能力的主体可以把这种权限分配给比其级别低的主体。依此类推,从而将访问许可的授权关系组成一个树型结构。
例如,超级管理员可以作为这个等级树的根,具有修改所有客体的存取控制表的能力,且可以向任意一个主体分配这种修改权。系统管理员把用户根据部门划分成多个子集,并对部门领导授予相应存取控制权限的修改权和对修改权的分配权。部门领导又可以把自己所拥有的权力按照同样的方法向下授权。
这种方式的优点是树型结构与实际组织机构类似,并且可以由领导根据日常实际工作需要进行授权来对各级用户进行控制与管理。但这种方式也有一个缺点,就是对同一个客体来说,可能存在多个主体有能力修改其存取控制权限。
- (2)拥有型。这种类型对每一个客体都有一个拥有者(一般情况下就是该客体的创建者),拥有者具有对所拥有的客体的全部的控制权,并且可以任意修改其拥有的客体的访问控制表,并可对其他主体授予或撤销对其客体的任何一种访问权限。但是拥有者无权将其对客体的访问控制权的分配权授予其他主体。
在 UNIX 系统中就是用这种方式来进行授权控制的。
- (3)自由型。自由型的特点是一个客体的拥有者可以对任何主体授予对他所拥有的客体的访问权限,同时还可以把这种分配权授予其他主体而不受任何限制。这样,获得了这种授权的主体就可以把这种分配权授予更多的主体而不受该客体拥有者的限制。这样,一旦访问控制的分配权被授予出去,就很难控制对客体的访问了。显然,这样做安全性比较差,一般的系统中很少采用这种方式。
对于系统中如何更好地进行访问控制,可以参考本书下册中的相关讲解。
16.7 网络安全体系
ISO 的 OSI/RM 是著名的网络架构模型,但是,OSI/RM 并没有在安全性方面作专门的设计,因此该模型本身的安全性是很弱的。为了改善网络的安全状况,提高网络安全强度,ISO 又在 OSI/RM 的基础上提出了一套 OSI 安全架构,用以强化网络的安全性。
16.7.1 OSI 安全架构
OSI 安全架构是一个面向对象的、多层次的结构,它认为安全的网络应用是由安全的服务实现的,而安全服务又是由安全机制来实现的。
1. OSI 安全服务
针对网络系统的技术和环境,OSI 安全架构中对网络安全提出了 5 类安全服务,即对象认证服务、访问控制服务、数据保密性服务、数据完整性服务、禁止否认服务。
- (1)对象认证服务。对象认证服务又可分为对等实体认证和信源认证,用于识别对等实体或信源的身份,并对身份的真实性、有效性进行证实。其中,对等实体认证用来验证在某一通信过程中的一对关联实体中双方的声称是一致的,确认对等实体中没有假冒的身份。
信源认证可以验证所接收到的信息是否确实具有它所声称的来源。
- (2)访问控制服务。访问控制服务防止越权使用通信网络中的资源。访问控制服务可以分为自主访问控制、强制访问控制、基于角色的访问控制。由于 DAC、MAC 固有的弱点,以及 RBAC 的突出优势,所以 RBAC 一出现就成为在设计中最受欢迎的一种访问控制方法。
访问控制的具体内容前面已有讲述,此处不再赘述。
- (3)数据保密性服务。数据保密性服务是针对信息泄漏而采取的防御措施,包括信息保密、选择段保密、业务流保密等内容。数据保密性服务是通过对网络中传输的数据进行加密来实现的。
- (4)数据完整性服务。数据完整性服务包括防止非法篡改信息,如修改、删除、插入、复制等。
- (5)禁止否认服务。禁止否认服务可以防止信息的发送者在事后否认自己曾经进行过的操作,即通过证实所有发生过的操作防止抵赖。具体的可以分为防止发送抵赖、防止递交抵赖和进行公证等几个方面。
2. OSI 安全机制
为了实现前面所述的 OSI 5 种安全服务,OSI 安全架构建议采用如下 8 种安全机制:
加密机制、数字签名机制、访问控制机制、数据完整性机制、鉴别交换机制、流量填充机制、路由验证机制、公正机制。
- (1)加密机制。加密机制即通过各种加密算法对网络中传输的信息进行加密,它是对信息进行保护的最常用措施。加密算法有许多种,大致分为对称密钥加密与公开密钥加密两大类,其中有些(例如,DES 等)加密算法已经可以通过硬件实现,具有很高的效率。
- (2)数字签名机制。数字签名机制是采用私钥进行数字签名,同时采用公开密钥加密算法对数字签名进行验证的方法。用来帮助信息的接收者确认收到的信息是否是由它所声称的发送方发出的,并且还能检验信息是否被篡改、实现禁止否认等服务。
- (3)访问控制机制。访问控制机制可根据系统中事先设计好的一系列访问规则判断主体对客体的访问是否合法,如果合法则继续进行访问操作,否则拒绝访问。访问控制机制是安全保护的最基本方法,是网络安全的前沿屏障。
- (4)数据完整性机制。数据完整性机制包括数据单元的完整性和数据单元序列的完整性两个方面。它保证数据在传输、使用过程中始终是完整、正确的。数据完整性机制与数据加密机制密切相关。
- (5)鉴别交换机制。鉴别交换机制以交换信息的方式来确认实体的身份,一般用于同级别的通信实体之间的认证。要实现鉴别交换常常用到如下技术。
- ① 口令:由发送方提交,由接收方检测。
- ② 加密:将交换的信息加密,使得只有合法用户才可以解读。
- ③ 实体的特征或所有权:例如,指纹识别、身份卡识别等。
- (6)业务流填充机制。业务流填充机制是设法使加密装置在没有有效数据传输时,还按照一定的方式连续地向通信线路上发送伪随机序列,并且这里发出的伪随机序列也是经过加密处理的。这样,非法监听者就无法区分所监听到的信息中哪些是有效的,哪些是无效的,从而可以防止非法攻击者监听数据,分析流量、流向等,达到保护通信安全的目的。
- (7)路由控制机制。在一个大型的网络里,从源节点到目的节点之间往往有多种路由,其中有一些是安全的,而另一些可能是不安全的。在这种源节点到目的节点之间传送敏感数据时,就需要选择特定的安全的路由,使之只在安全的路径中传送,从而保证数据通信的安全。
- (8)公证机制。在一个复杂的信息系统中,一定有许多用户、资源等实体。由于各种原因,很难保证每个用户都是诚实的,每个资源都是可靠的,同时,也可能由于系统故障等原因造成信息延迟、丢失等。这些很可能会引起责任纠纷或争议。而公证机构是系统中通信的各方都信任的权威机构,通信的各方之间进行通信前,都与这个机构交换信息,从而借助于这个可以信赖的第三方保证通信是可信的,即使出现争议,也能通过公证机构进行仲裁。
3. OSI 安全服务与安全机制之间的关系
OSI 安全服务与安全机制之间不是一一对应的关系。有的服务需要借助多种机制来实线,同时,有些机制可以提供多种服务。一般来说,OSI 安全服务与安全机制之间具有如表 16-1所示的关系,在设计中可以参考选用这些安全机制从而提供相应的安全服务。
16.7.2 VPN 在网络安全中的应用
虚拟专用网络(Virtual Private Network,VPN)是指利用不安全的公共网络如 Internet 等作为传输媒介,通过一系列的安全技术处理,实现类似专用网络的安全性能,保证重要信息的安全传输的一种网络技术。
1. VPN 技术的优点
VPN 技术具有非常突出的优点,主要包括:
- (1)网络通信安全。VPN 采用安全隧道等技术提供安全的端到端的连接服务,位于 VPN两端的用户在 Internet 上通信时,其所传输的信息都是经过 RSA 不对称加密算法加密处理的,它的密钥则是通过 Diffie-Hellman 算法计算得出的,可以充分地保证数据通信的安全。
- (2)方便的扩充性。利用 VPN 技术实现企业内部专用网络,以及异地业务人员的远程接入等,具有方便灵活的可扩性。首先是重构非常方便,只需要调整配置等就可以重构网络;其次是扩充网络方便,只需要配置几个节点,不需要对已经建好的网络作工程上的调整。
- (3)方便的管理。利用 VPN 组网,可以把大量的网络管理工作放到互联网络服务提供商一端来统一实现,从而减轻了企业内部网络管理的负担。同时 VPN 也提供信息传输、路由等方面的智能特性及与其他网络设备相独立的特性,也给用户提供了网络管理的灵活的手段。
- (4)节约成本显著。利用已有的无处不在的 Internet 组建企业内部专用网络,可以节省大量的投资成本及后续的运营维护成本。以前,要实现两个远程网络的互联,主要是采用专线连接方式。这种方式成本太高。而 VPN 则是在 Internet 基础上建立的安全性较好的虚拟专用网,因此成本比较低,而且可以把一部分运行维护工作放到服务商端,又可以节约一部分维护成本。
2. VPN 的原理
实现 VPN 需要用到一系列关键的安全技术,包括:
- (1)安全隧道技术。即把传输的信息经过加密和协议封装处理后再嵌套装入另一种协议的数据包中送入网络中,像普通数据包一样进行传输。经过这样的处理,只有源端和目标端的用户对加密封装的信息能进行提取和处理,而对于其他用户而言,这些信息只是无意义的垃圾。
- (2)用户认证技术。在连接开始之前先确认用户的身份,然后系统根据用户的身份进行相应的授权和资源访问控制。
- (3)访问控制技术。由 VPN 服务的提供者与最终网络信息资源的提供者共同协商确定用户对资源的访问权限,以此实现基于用户的访问控制,实现对信息资源的保护。
VPN 系统的结构如图 16-12 所示。
在图 16-12 中,安全隧道代理和管理中心组成安全传输平面(Secure Transmission Plane,STP),实现在 Internet 上安全传输和相应的系统管理功能。用户认证管理中心和密钥分配中心组成公共功能平面(Common Function Plane,CFP),它是安全传输平面的辅助平面,主要向用户代理提供相对独立的用户身份认证与管理、密钥的分配与管理功能。
建立 VPN 通信时,VPN 用户代理向安全隧道代理请求建立安全隧道,安全隧道代理接受后,在管理中心的控制和管理下在 Internet 上建立安全隧道,然后向用户提供透明的网络传输。VPN 用户代理包括安全隧道终端功能、用户认证功能和访问控制功能三个部分,它们共同向上层应用提供完整的 VPN 服务。
- (1)安全传输平面。安全传输平面实现在 Internet 上安全传输和相应的系统管理功能,这是由安全隧道代理和管理中心共同完成的。
- ① 安全隧道代理。安全隧道代理可以在管理中心的控制下将多段点到点的安全通路连接成一条端到端的安全隧道。它是 VPN 的主体,其主要作用有:
建立与释放安全隧道。按照用户代理的请求,在用户代理与安全隧道代理之间建立点到点的安全通道,并在这个安全通道中进行用户身份验证和服务等级协商等交互。在安全通道中进行初始化过程,可以充分保护用户身份验证等重要信息的安全。然后在管理中心的控制下建立发送端到接收端之间由若干点到点的安全通道依次连接而成的端到端的安全隧道。在信息传输结束之后,由通信双方中的任一方代理提出释放隧道连接请求,就可以中断安全隧道连接。
用户身份的验证。在建立安全隧道的初始化过程中,安全隧道代理要求用户代理提交用户认证管理中心提供的证书,通过验证该证书可以确认用户代理的身份。必要时还可以由用户代理对安全隧道代理进行反向认证以进一步提高系统的安全性。
服务等级的协商。用户身份验证通过之后,安全隧道代理与用户代理进行服务等级的协商,根据其要求与 VPN 系统当时的实际情况确定提供的服务等级并报告至管理中心。
信息的透明传输。安全隧道建立之后,安全隧道代理负责通信双方之间信息的传输,并根据商定的服务参数进行相应的控制,对其上的应用提供透明的 VPN 传输服务。
控制与管理安全隧道。在维持安全隧道连接期间,安全隧道代理还要按照管理中心的管理命令对已经建立好的安全隧道进行网络性能及服务等级等有关的管理与调整。
- ② VPN 管理中心。VPN 管理中心是整个 VPN 的核心部分,它与安全隧道代理直接联系,负责协调安全传输平面上的各安全隧道代理之间的工作。具体功能包括:
安全隧道的管理与控制。确定最佳路由,并向该路由上包含的所有安全隧道代理发出命令,建立安全隧道连接。隧道建立以后,管理中心继续监视各隧道连接的工作状态,对出错的安全隧道,管理中心负责重新选择路由并将该连接更换到新的路由。在通信过程中,还可以根据需要向相应安全隧道上的代理发送管理命令,以优化网络性能、调整服务等级等。
网络性能的监视与管理。管理中心不断监视各安全隧道代理的工作状态,收集各种 VPN 性能参数,并根据收集到的数据完成 VPN 性能优化、故障排除等功能。同时,管理中心还负责完成对各种 VPN 事件进行日志记录、用户计费、追踪审计、故障报告等常用的网络管理功能。
- (2)公共功能平面。公共功能平面是安全传输平面的辅助平面,向 VPN 用户代理提供相对独立的用户身份认证与管理、密钥的分配与管理功能,分别由用户认证管理中心和VPN 密钥分配中心完成。
- ① 认证管理中心。认证管理中心提供用户身份认证和用户管理。用户认证就是以第三者身份客观地向 VPN 用户代理和安全隧道代理中的一方或双方提供用户身份的认证,以便他们能够相互确认对方的身份。
用户管理是指与用户身份认证功能直接相关的用户管理部分,即对各用户(包括用户代理、安全隧道代理及认证管理中心等)的信用程度和认证情况进行日志记录,并可在 VPN 与建立安全隧道双方进行服务等级的协商时参考。这里的管理是面向服务的,而与用户权限、访问控制等方面有关的用户管理功能则不在此列。
- ② 密钥分配中心。密钥分配中心向需要进行身份验证和信息加密的双方提供密钥的分配、回收与管理功能。在 VPN 系统里,用户代理、安全隧道代理、认证管理中心等都是密钥分配中心的用户。
希赛教育专家提示:采用 VPN 技术,既能保证整个企业网络的连通性与数据的共享,又能保证财务等重要数据的安全,是一种实现企业内部本地网络互连的良好方案。
16.8 系统的安全性设计
要设计一个安全的系统,除了要了解一些前面讲到的常用的保护手段和技术措施外,还要对系统中可能出现的安全问题或存在的安全隐患有充分的认识,这样才能对系统的安全作有针对性的设计和强化,即“知己知彼,百战百胜”。
下面以物理安全、防火墙、入侵检测为例讲解系统安全中可能出现的问题及如何采取相应的措施。
16.8.1 物理安全问题与设计
物理安全包括物理设备本身是否安全可靠,还包括设备的位置与环境的安全、限制物理访问、地域因素等几个方面。
信息系统的所有重要的物理设备、设施都应该放在专门的区域,并尽可能集中,同时严格限制外来人员来访,尽可能地减少未经授权的访问。
物理安全还要求在设计中注意物理设备的冗余备份,例如,核心设备或部件都应该是热备份系统,具有实时或准实时切换的能力。
物理安全还要求严格限制对网络信息点、线缆等网络基础设施及其所在地进行物理访问,要想访问必须经过专门的授权。
物理安全还包括环境方面的因素,在设计之初就要对信息系统中的温度、湿度、灰尘、振动、雷电、电力等方面的参数有明确的要求,要对自然灾害(地震、台风、闪电等)有充分的考虑,还要对电磁泄漏等方面的要求作明确的定义。设计系统时要对这些因素全盘考虑,并采取适当的防护措施或强化手段。例如,机房这种重要的地点,除了所在的建筑物要有防雷系统外,还可以加装一套专用的防雷系统。这样可以保证即使建筑物遭到雷击时,万一建筑物的避雷系统未能充分保护好昂贵的信息系统,那么单独为机房安装的专用避雷系统也能保障机房设备免受损失。
16.8.2 防火墙及其在系统安全中的应用
网络安全隐患主要是由网络的开放性、无边界性、自由性造成的,所以保护网络安全可以首先考虑把被保护的网络从开放的、无边界的、自由的公共网络环境中独立出来,使之成为有管理的、可控制的、安全的内部网络。也只有做到这一点,实现信息网络的通信安全才有可能。
目前,最基本的网络分隔手段就是防火墙,它也是目前用来实现网络安全的一种主要措施。利用防火墙,可以用来在拒绝未经允许的网络连接、阻止敏感数据的泄漏的同时,保证合法用户的合法网络流量畅通无阻,可以实现内部可信任网络(如企业网)与外部不可信任网络(如 Internet)之间,或是内部不同子网之间的隔离与控制,保证网络系统及网络服务的可用性。
1. 防火墙的基本原理防火墙通常使用的采用包过滤、状态检测、应用网关等几种方式控制网络连接。
包过滤防火墙是一种简单而有效的安全控制技术,它根据在防火墙中预先定义的规则(允许或禁止与哪些源地址、目的地址、端口号有关的网络连接),对网络层和传输层的数据包进行检查,进而控制数据包的进出。包过滤的优点是对用户透明、传输性能高。但是由于只能在网络层、传输层进行控制,安全控制的方式也只限于源地址、目的地址和端口号这几种,对于应用层的信息无法感知,因而只能进行较为初步的安全控制,对于拥塞攻击、内存覆盖攻击或病毒等高层次的攻击手段,则无能为力。
状态检测防火墙保持了包过滤防火墙的优点,所以性能比较好,而且对应用是透明的。
同时,状态检测防火墙改进了包过滤防火墙仅仅检查进出网络的数据包,不关心数据包状态的缺点,在防火墙的内部建立状态连接表,维护了连接,将进出网络的数据当成一个个的事件来处理。对于每一个网络连接,状态检测根据预先设置的安全规则,允许符合规则的连接通过,并在内存中记录下该连接的相关信息,生成状态表。对该连接的后续数据包,只要符合状态表,就可以通过。这种方式的好处在于:由于不需要对每个数据包进行规则检查,而是对一个连接的后续数据包(通常是大量的数据包)通过散列算法,直接进行状态检查,从而使得性能得到了较大提高。
与不关心应用层数的前两种方式不同,应用网关防火墙检查所有应用层的信息包,并将检查的内容信息放入决策过程,从而提高网络的安全性。然而,应用网关防火墙是通过打破客户机/服务器模式实现的。每个客户机/服务器通信需要两个连接:一个是从客户端到防火墙,另一个是从防火墙到服务器。另外,每个网关需要一个不同的应用进程,或一个后台运行的服务程序,对每个新的应用必须添加针对此应用的服务程序,否则不能使用该服务。所以,应用网关防火墙使用起来比较麻烦,而且通用性比较差。
2. 防火墙的优点在系统中使用防火墙,对于系统的安全有很多的优点:
- (1)可以隔离网络,限制安全问题的扩散。防火墙可以隔离不同的网络,或者用来隔离网络中的某一个网段,这样就能够有效地控制这个网段或网络中的问题在不同的网络中传播,从而限制安全问题的扩散。
- (2)通过防火墙可以对网络中的安全进行集中化管理,简化网络安全管理的复杂度。
只要在防火墙上配置好过滤策略,就能使防火墙成为一个网络安全的检查站,所有进出网络的信息都需要通过防火墙,把非法访问拒于门外。从而实现安全的集中统一的管理,并且能够简化安全管理的复杂度。
- (3)能够有效地记录 Internet 上的活动。因为所有进出内部网络的信息都必须通过防火墙,所以防火墙能够收集内部网络和外部网络之间或者不同网段之间所发生的事件,为管理员的进一步分析与安全管理提供依据。
3. 正确使用防火墙虽然防火墙的技术日渐成熟起来,成为维护网络安全的一个重要的手段。但是,它也不能完全解决网络上的安全问题。在实际使用过程中还有一些安全性是防火墙不能实现的,在实际工作中,一般应注意如下几点:
- (1)防火墙虽然能对来自外部网络的非法连接作很严格的限制,但是对来自本地网络内部的攻击却无从防范。事实上,大多数攻击不是来自外部,而是来自内部。因此,即使使用了防火墙,对本地网络内部的主机、应用系统、数据库等也要采取其他有效的措施,才能真正做到安全。
- (2)即使对于来自外部的攻击,目前的任何防火墙也不能做到完全阻挡所有的非法入侵。随着各种新技术的陆续涌现,非法分子对系统的深入研究与剖析,各种新的应用需求不断被开发,防火墙本身也会受到越来越多的威胁。对这些新的动态、趋势要密切关注,不断地升级防火墙、修正完善防火墙的配置,才能使防火墙本身更加坚固,进而长久地发挥安全保护作用。
- (3)防火墙不能防范病毒,无法抵御基于数据的攻击。尽管防火墙的过滤技术在不断完善,可是由于病毒的类型太多,隐藏方式也非常复杂,而且它们很多都是隐藏在数据文件中,因此要防火墙对所有的包含病毒的文件作出限制是不太现实的,而应当在系统中单独安装专门的病毒网关或者在主机上安装相应的防病毒软件、反间谍软件等工具软件,才能较好地防范此类安全隐患。
- (4)防火墙不能防范全部的威胁,而只能防备已知的威胁。所以在使用过程中,应当经常根据需要配合使用入侵检测系统。
- (5)防火墙不能防范不通过它的链接。防火墙可以有效地过滤经过它的信息传输,但不能防范不通过它的信息传输,例如,如果允许拨号访问防火墙后面的内部系统,则防火墙没有任何办法对它进行控制。
16.8.3 入侵检测系统
传统上,一般采用防火墙作为系统安全的边界防线。但是,随着攻击者的知识日趋丰富,攻击工具与手法的日趋复杂多样,单纯的防火墙已经无法满足对安全高度敏感的部门的需要,网络的防卫必须采用一种纵深的、多样的手段。
与此同时,当今的网络环境也变得越来越复杂,各式各样的复杂的设备,需要不断升级、补漏,系统管理员的工作不断加重,不经意的疏忽便有可能造成安全的重大隐患。所以,信息系统中存在着不少可以被攻击者所利用的安全弱点、漏洞及不安全的配置,主要表现在操作系统、网络服务、TCP/IP 协议、应用程序(如数据库、浏览器等)、网络设备等几个方面。
正是这些弱点、漏洞和不安全设置给攻击者以可乘之机。
另外,由于大部分网络缺少预警防护机制,即使攻击者已经侵入到内部网络,侵入到关键的主机,并从事非法的操作,系统管理员也很难察觉到。这样,攻击者就有足够的时间来做他们想做的任何事情。
要防止和避免遭受攻击和入侵,不仅要找出网络中存在的安全弱点、漏洞和不安全的配置,然后采取相应措施解决这些弱点、漏洞,对不安全的配置进行修正,最大限度地避免遭受攻击和入侵;还要对网络活动进行实时监测,一旦监测到攻击行为或违规操作,能够及时作出反应,包括记录日志、报警甚至阻断非法连接。
在这种环境下,入侵检测(Intrusion Detection)技术受到人们愈来愈多的关注,而且已经开始在各种不同的环境中发挥其关键作用。入侵检测系统可以在系统中发生一些不正常的操作时发出警报,防患于未然。设置硬件防火墙,可以提高网络的通过能力并阻挡一般性的攻击行为;而采用入侵检测系统,则可以对越过防火墙的攻击行为及来自网络内部的违规操作进行监测和响应。
入侵检测技术,通过对计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。与其他安全产品不同的是,入侵检测系统需要更多的智能,它要根据智能库对收集到的数据进行分析,并采取相应措施。
作为对防火墙极其有益的补充,入侵检测系统(IDS)能够帮助人们快速发现系统攻击的发生,扩展了系统管理员的安全管理能力(包括安全审计、监视、进攻识别和响应等),提高了信息系统的安全性。入侵检测系统被认为是防火墙之后的第二道安全闸门,它能在不影响网络性能的情况下对网络进行监听,从而提供对内部攻击、外部攻击和误操作的实时保护。
入侵检测系统作为一种积极主动的安全防护工具,能够在计算机网络和系统受到危害之前进行报警、拦截和响应。其主要功能包括:通过检测和记录系统中的安全违规行为,惩罚信息系统攻击,防止入侵事件的发生;检测其他安全措施未能阻止的攻击或安全违规行为;
检测黑客在攻击前的探测行为,预先给管理员发出警报;报告信息系统中存在的安全威胁;
提供有关攻击的信息,帮助管理员诊断系统中存在的安全弱点,利于其进行修补。
在大型、复杂的计算机系统中布置入侵检测系统,可以明显提高信息系统安全管理的质量。
1. 入侵检测技术入侵检测系统的处理过程分为数据采集阶段、数据处理及过滤阶段、入侵分析及检测阶段、报告及响应阶段 4 个阶段。数据采集阶段主要收集目标系统中引擎提供的通信数据包和系统使用等情况。数据处理及过滤阶段是把采集到的数据转换为可以识别是否发生入侵的数据的阶段。分析及检测阶段通过分析上一阶段提供的数据来判断是否发生入侵。这一阶段是整个入侵检测系统的核心阶段。报告及响应阶段针对上一个阶段中得出的判断作出响应。如果被判断为发生入侵,系统将对其采取相应的响应措施,或者通知管理人员发生入侵,以便于采取措施。
在入侵检测系统的工作过程中,对信息系统中的各种事件进行分析,从中检测出违反安全策略的行为是入侵检测系统的核心功能。检测技术分为两类:一种是基于标识(signature-based)的入侵检测,另一种是基于异常情况(anomaly-based)的入侵检测。
基于标识的检测技术,先定义出违背安全策略的事件的特征,如网络数据包的某些头信息等。然后对收集到的数据进行分析,通过判别这类特征是否在所收集到的数据中出现来判断是否受到入侵。此方法非常类似杀毒软件的特征码检测,比较简单有效。
而基于异常的检测技术则先定义一组系统“正常”情况的数值,如 CPU 利用率、网络流量规律、文件校验和等(这类数据可以人为定义,也可以通过观察系统,并用统计的办法得出),然后将系统运行时的数值与所定义的“正常”情况比较,得出是否有被攻击的迹象。
这种检测方式的核心在于如何定义所谓的“正常”情况。
两种检测技术的方法、所得出的结论有时会有非常大的差异。基于标识的检测技术的核心是维护一个知识库。对于已知的攻击,它可以详细、准确地报告出攻击类型,但是对未知攻击却效果有限,而且知识库必须不断更新。基于异常的检测技术则无法准确判别出攻击的手法,但它可以判别更广泛,甚至未发觉的攻击。如果条件允许,两者结合的检测会达到更好的效果。
2. 入侵检测系统的种类和选用一般来说,入侵检测系统可分为主机型和网络型。
主机型入侵检测系统往往以系统日志、应用程序日志等作为数据源,当然也可以通过其他手段(如监控系统调用)从所在的主机收集信息进行分析。主机型入侵检测系统保护的一般是其所在的主机系统。主机型入侵检测系统需要为不同平台开发不同的程序,而且会增加系统负荷,还要在每一台主机安装,比较麻烦,但是可以充分利用操作系统本身提供的功能,并结合异常分析,更准确地报告攻击行为。
网络型入侵检测系统则以网络上的数据包作为数据源,通过在一台主机或网络设备上监听本网段内的所有数据包来进行分析判断。一般网络型入侵检测系统担负着保护整个网段的任务。这种系统应用十分简便:一个网段上只需安装一个或几个这样的系统,便可以监测整个网段的情况,但是它不跨越多个物理网段,对于复杂结构的网络(如交换环境)监测效果有一定影响。
主机型入侵检测系统和网络型入侵检测系统各有利弊,应用中可以根据实际需要从中选择。
16.9 安全性规章
16.9.1 安全管理制度
信息系统安全,不仅要从技术角度采取若干措施,还要从组织管理的角度出发,制定明确的安全管理的规章制度,以确保安全技术实施的有效性。只有依靠安全管理规章的有力支持和保障,信息安全的技术解决方案才能够切实地取得预期的效果。
事实上,管理的缺失是信息安全失败的非常重要的原因。有统计表明,危害信息系统安全的因素中,70%以上来自组织内部。系统管理员随意性的配置或者软件升级不及时造成的安全漏洞,使用脆弱的用户口令,随意下载使用来自网络的软件,在防火墙内部架设拨号服务器却没有对账号认证等严格限制,用户安全意识不强,将自己的账号随意转借他人或与别人共享等,这些管理上的问题无论多么高超的安全技术都不能解决,都会使信息系统处于危险之中。如果没有健全的安全性规章或者安全性规章不能贯彻落实,即便设计和实现了再好的安全设备和系统,信息系统安全也不过是空谈而已。
所以建立定期的安全检测、口令管理、人员管理、策略管理、备份管理、日志管理等一系列安全性规章并认真贯彻执行对于维护信息系统的安全来说是非常必要的。
为了更好地落实安全性规章,首先需要根据实际情况,建立和健全信息系统安全委员会、安全小组、安全员。安全组织成员应当由主管领导、安全保卫、信息中心、人事、审计等部门的工作人员组成,必要时可聘请相关部门的专家组成。如果有必要,安全组织也可成立专门的独立机构。设立信息安全部门和安全人员,不但可以有效地制定并贯彻落实安全性规章制度,还可以提高对安全事件的反应能力和响应速度。
有了信息安全部门和人员,还要制定安全管理制度。只有建立健全的安全管理制度,并在信息系统的运行过程中始终坚持贯彻执行,才能从根本上为信息系统的正常运行,以及信息系统安全技术的执行提供良好的、坚固的基础。安全管理制度应该包括下面一些主要方面的内容:
- (1)机房安全管理制度。
- (2)系统运行管理制度,包括系统启动、关闭、系统状态监控、系统维护等。
- (3)人员管理制度,包括管理人员、设计人员、操作人员、人事变更等。
- (4)软件管理制度。
- (5)数据管理制度。
- (6)密码口令管理制度。
- (7)病毒防治管理制度。
- (8)用户登记和信息管理制度。
- (9)工作记录制度。
- (10)数据备份制度。
- (11)审计制度。
- (12)安全培训制度等。此外,有了制度而不认真执行等于没有制度,所以,只有在系统的运行过程中,管理人员、操作人员、用户之间的相互配合与相互协作,共同遵守既定的安全性规章,才能保证信息系统的安全措施是有用的、有效的。
总之,信息安全所涉及的方面很多,只有在各个方面都进行全面管理,才能在此基础上,与所采用的安全技术和设备一起,有效保证信息系统安全。
16.9.2 计算机犯罪与相关法规
随着计算机技术的不断发展,针对信息系统的各种入侵和攻击事件也与日俱增,而且由此带来的影响和损失也越来越大,有些事件甚至已经严重地危害到国家安全、经济发展和社会稳定。因此,提高信息安全性已经不再仅仅局限于采取适当的安全技术措施,完善安全性规章制度,更需要正确地运用法律手段来对付日益严重的计算机犯罪,避免重大损失的问题。
1. 计算机犯罪
所谓计算机犯罪是指针对和利用计算机系统,通过非法操作或者以其他手段,对计算机系统的完整性或正常运行造成危害的行为。
计算机犯罪的犯罪对象是计算机系统或其中的数据,包括计算机设备、系统程序、文本资料、运算数据、图形表格等。所谓非法操作,是指一切没有按照操作规程或是超越授权范围而对计算机系统进行的操作。非法操作是对计算机系统造成损害的直接原因。
计算机犯罪是随着计算机技术的发展而出现和发展的,在不同的历史时期,具有不同的特点。大体上,计算机犯罪可以划分成两个阶段。
第一个阶段是计算机单机时代,即早期的电脑犯罪阶段,时间大致从 20 世纪 50 年代至 80 年代。这个时期的主要形式是计算机诈骗,针对计算机内部信息的窃取和破坏。
第二个阶段是计算机网络时代,时间大致从 20 世纪 80 年代到现在。在这个时期,由于计算机网络的迅速发展及其应用范围越来越广泛,而且计算机软件日益复杂化、普及化,计算机犯罪呈现出一些新的特点:
- (1)呈现国际化趋势。互联网的发展是跨越国界的,随之而来的就是计算机犯罪由区域性犯罪向跨地区、跨国界的国际性犯罪发展。
- (2)从犯罪所针对的对象看,向全社会各单位和个人蔓延。计算机犯罪由早期的主要攻击金融系统、政府机关向攻击其他所有行业、所有部门的信息系统蔓延;由攻击单位、团体的信息系统向攻击个人信息系统蔓延。这两种趋势的出现都是因为计算机已经从早期的特殊部门向全社会众多机关团体以及个人普及。
- (3)从组织形式上看,由个人犯罪向群体犯罪、组织犯罪发展;由单一目的犯罪向综合性犯罪发展。
- (4)从犯罪主体看,所涉及人员范围越来越广泛,并呈现低龄化趋势。从年龄结构来看,低龄化、普遍化是主要特点。从犯罪人员素质层次看,已经从早期的高学历、高技能型向普通人群发展。这些也都是因为计算机技术的普及,使得越来越多的人能够方便地学习到更多的计算机技术,通过长时间的学习和实践,青少年、低学历人员也能够逐渐掌握这些技术,成为计算机和网络犯罪的主体。
- (5)从危害程度看,后果越来越严重。由于知识经济的发展,各企事业单位的日常业务越来越依赖于信息系统,大量政治、军事、经济等方面的重要文件和数据,以及大量的社会财富集中于信息系统中,例如网络银行、股票等往往就表现为计算机系统中账户上的数据。
一旦犯罪分子侵入这样的信息系统,必将对国家安全、经济发展、社会进步产生巨大的影响,甚至造成不可挽回的损失。
- (6)通过网络窃取机密信息将成为间谍活动的主要形式之一。随着越来越多的企事业单位和个人连接互联网,其中的很多机密信息和数据都面临着网络窃密行为的威胁。对于没有采取严格安全措施的系统,通过网络窃取其机密信息相对于其他方式更加隐蔽、快捷。例如,通过后门程序盗窃用户的账号和密码,通过系统漏洞取得系统特权,非法窃取商业机密等。
这些计算机犯罪行为显然具有很大的危害,它们影响社会的稳定,危及国家安全,扰乱经济秩序,影响社会治安,妨害青少年的健康成长,阻碍高科技产业的健康发展。因此,对于各种形式的计算机犯罪必须运用法律手段进行打击和惩处。加大对网络犯罪的打击力度,是保证我国社会稳定、经济持续发展的一项重要任务。
2. 我国的相关法律、法规
计算机犯罪,已经成为刑事犯罪的一种新形式。我国《刑法》已经增加了计算机犯罪的相关内容,并将计算机犯罪分为 5 种类型。一类是直接以计算机信息系统为犯罪对象的犯罪,另一类是以计算机为犯罪工具实施其他犯罪。具体的,《刑法》关于计算机犯罪的规定有:
第二百八十五条(非法侵入计算机信息系统罪)违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。
第二百八十六条(破坏计算机信息系统罪)违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处 5 年以下有期徒刑或者拘役;后果特别严重的,处 5 年以上有期徒刑。违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。
第二百八十七条(利用计算机实施的各类犯罪)利用计算机实施金融诈骗、盗窃、贪污、挪用公款、窃取国家秘密或者其他犯罪的,依照本法有关规定定罪处罚。
这些规定对于我国大规模地推广应用各种信息系统,对于保护信息系统的生产者和使用者的合法权益,对于信息系统的安全运作都具有极为重要的作用。
除了《刑法》之外,我国在信息系统安全方面,自 1994 年以来,国务院及其有关部委相继修改和出台了若干相关法规和管理规定,其中对于我国境内发生的各种计算机犯罪及其处罚都有明文规定。因此,为了做好信息系统安全,有必要详细了解这些法律、法规,包括《中华人民共和国宪法》、《中华人民共和国刑法》、《中华人民共和国国家安全法》、《中华人民共和国保守国家秘密法》、《中华人民共和国计算机信息系统安全保护条例》、《中华人民共和国计算机信息网络国际联网管理暂行规定》、《中华人民共和国治安管理处罚条例》《中华人民共和国计算机信息网络国际联网管理暂行规定实施办法》、《中华人民共和国专利法》、《中华人民共和国反不正当竞争法》、《中华人民共和国商标法》、《中华人民共和国海关法》、《中华人民共和国标准化法》、《关于对<中华人民共和国计算机信息系统安全保护条例>中涉及的“有害数据”问题的批复》、《科学技术保密规定》、《计算机信息系统安全专用产品检测和销售许可证管理办法》、《公安部关于对与国际联网的计算机信息系统进行备案工作的通知》、《计算机信息网络国际联网安全保护管理办法》、《电子出版物管理规定》、《中国互联网络域名注册暂行管理办法》、《从事放开经营电信业务审批管理暂行办法》、《计算机信息网络国际联网出入口信道管理办法》、《中国公用计算机互联网国际联网管理办法》、《中国公众多媒体通信管理办法》、《计算机软件保护条例》、《商用密码管理条例》、《计算机信息系统国际联网保密管理规定》、《计算机病毒防治管理办法》、《信息安全等级保护管理办法》等。