一、网络安全问题概述
1.计算机网络面临的安全性威胁
Ⅰ、主动攻击与被动攻击
有被动攻击和主动攻击,截获信息的称为被动信息,中断、篡改、伪造信息的攻击叫作主动攻击。
在被动攻击中,攻击者只是观察和分析某一个协议数据单元PDU而不干扰信息流。即使这些数据对攻击者来说是不易理解的,他也可通过观察PDU的协议控制信息部分,了解正在通信的协议实体的地址和身份,研究PDU的长度和传输的频度,以便了解所交换的数据的某种性质。这种被动攻击又称为流量分析。
主动攻击是指攻击者对连接中通过的PDU进行各种处理。如有选择地更改、删除、延迟这些PDU(当然也包括记录和复制它们),还可在稍后的时间将以前录下的PDU插入这个连接(即重放攻击)。甚至还可将合成的或伪造的PDU送入到一个连接中去。
所有主动攻击都是上述几种方法的组合,但从类型上看,可分为:
(1)更改报文流
包括对通过连接的PDU的真实性、完整性和有序性的攻击
(2)拒绝服务
指攻击者向因特网上的服务器不停地发送大量分组,使因特网或服务器无法提供正常服务。
(3)伪造连接初始化
攻击者重放以前已被记录的合法连接初始化序列,或者伪造身份而企图建立连接。
Ⅱ、攻击的预防
对于主动攻击,可以采取适当措施加以检测。但对于被动攻击,通常却是检测不出来的。根据这些特点,可得出计算机网络通信安全的五个目标如下:
防止析出报文内容、防止流量分析、检测更改报文流、检测拒绝报文服务、检测伪造初始化连接。
对付被动攻击可采用各种数据加密技术,而对付主动攻击,则需将加密技术与适当的鉴别技术相结合。
Ⅲ、恶意程序
特殊的主动攻击。对网络威胁较大的恶意程序有一下几种:
①计算机病毒
会“传染”其他程序的程序,是通过修改其他程序来把自身或其变种复制进去完成的。
②计算机蠕虫
一种通过网络的通信功能将自身从一个结点发送到另一个结点并自动启动运行的程序。
③特洛伊木马
一种程序。它执行的功能并非所声称的功能而是某种恶意的功能。如一个编译程序除了执行编译任务以外,还把用户的源程序偷偷地拷贝下来,则这种编译程序就是一种特洛伊木马。计算机病毒有时也以特洛伊木马的形式出现。
④逻辑炸弹
一种当运行环境满足某种特定条件时执行其他特殊功能的程序。如一个编辑程序,平时运行得很好,但在某一天删去系统中所有的文件。这种程序就是一种逻辑炸弹。
2.计算机网络安全的内容
①保密性
如访问控制中登录口令的设计、安全通信协议的设计以及数字签名的设计等
②安全协议的设计
如何保证设计出的协议是安全的,有两种方法,一种是用形式化方法来证明,另一种是用经验来分析协议的安全性。
形式化证明是人们希望的,但一般意义上的协议安全性也是不可判定的,只能针对某种特定类型的攻击来讨论其安全性。对复杂的通信协议的安全性,形式化证明比较困难,所以只要采用人工分析的方法来找漏洞。对于简单的协议,可通过限制敌手的操作(假定敌手不会进行某种攻击)来对一些特定情况进行形式化的证明。当然,这种方法有很大的局限性。
③访问控制
也叫存取控制或接入控制。必须对接入网络的权限加以控制,并规定每个用户的接入权限。
3.一般的数据加密模型
加密密钥与解密密钥可一样也可不一样(不一样时有相关性)。密钥通常是由密钥中心提供,当密钥需要向远地传送时,一定要通过另一个安全信道。
密码编码学是密码体制的设计学,而密码分析学则是在未知密钥情况下从密文推测出明文或密钥的技术。两者合起来即为密码学。
1949年,信息论的创始人香农论证了一般经典加密方法得到的密文几乎都是可破的。但20世纪60年代起,随着电子技术、计算技术的迅速发展以及结构代数、可计算性和计算复杂性理论等学科的研究,密码学又进入了一个新的发展时期。
二、两类密码机制
1.对称密钥密码体制
即加密密钥与解密密钥是相同的密码体制。
数据加密标准DES属于对称密钥体制。它的保密性取决于对密钥的保密,而算法是公开的。
2.公钥密码体制
Ⅰ、产生背景
公钥密码体制使用不同的加密密钥与解密密钥。产生原因:①对称密钥密码体制的密钥分配问题;②对数字签名的需求。
在对称密钥密码体制中,加解密的双方使用的是相同的密钥,如何做到:一种是事先约定,一种是用信使来传送。在高度自动化的大型计算机网络中,用信使来传送密钥显然是不合适的。如果是用信使,就会给密钥的管理和更换都带来了极大的不便。若使用高度安全的密钥分配中心KDC,也会使得网络成本增加。
对数字签名的强烈需要也是一个原因。
Ⅱ、公钥密码体制
著名的有RSA体制。
在公钥密码体制中,加密密钥PK(public key,即公钥)是向公众公开的,而解密密钥SK(secret key,即私钥或秘钥)则是需要保密的。加密算法E和解密算法D也是公开的。
公钥密码体制的加密和解密过程有如下特点:
任何加密方法的安全性取决于密钥的长度,以及攻破密文所需的计算量。而不是简单地取决于加密的体制。
3.数字签名
数字签名需实现三种功能:
(1)接收者能够核实发送者对报文的签名——报文鉴别
除A外没有人持有A的私钥SKa,所以除A外没有人能产生密文X。这样,B就相信X是A签名发送的。
(2)接收者确信所收到的数据和发送者发送的完全一样而没有被篡改过——报文的完整性
B对篡改过的报文解密后,将会得出不可读的明文,就知道被篡改过。
(3)发送者事后不能抵赖对报文的签名——不可否认
若A抵赖,B可把X和密文X出示给公证的第三者,第三者容易用PKa去证实A确实发送X给B,这不可否认。
看上图,D运算只是得到了某种不可读的密文,并不是解密运算,因为还没有加密。D运算和E运算都不是为了加密和解密,而是为了进行签名和核实签名。
四、鉴别
鉴别和加密不同。鉴别是要验证通信双方的确是自己所要通信的对象,而不是其他的冒充者。
鉴别与授权也不同。授权是:所进行的过程是否被允许(如是否可以对某文件进行读或写)。
1.报文鉴别
许多报文并不需要加密但却需要数字签名,以便让报文的接收者能够鉴别报文的真伪,然而对很长的报文进行数字签名会使计算机增加很大的负担(需要长时间运算)。因此,当我们传送不需要加密的报文时,应当使接收者能用很简单的方法来鉴别报文的真伪。
报文摘要MD(message digest)是进行报文鉴别的简单方法。方法如下图。
报文摘要算法是单向函数,即我们很容易计算出一个长报文X的报文摘要H,可是要想从报文摘要反过来找到原始报文X,实际上是不可能的。此外,若想找到任意两个报文,使它们具有相同的报文摘要,实际上也是不可能的。
两种标准:报文摘要算法MD5与安全三列算法SHA。
2.实体鉴别
和报文鉴别不同。报文鉴别是对每一个收到的报文都要鉴别报文的发送者,而实体鉴别是在系统接入的全部持续时间内和自己通信的对方实体只需验证一次。
最简单的实体鉴别过程如图7-7,在图中的A向远端的B发送有自己的身份A和口令的报文,并且使用双方约定好的共享对称密钥Kab进行加密。B收到此报文后,用共享对称密钥Kab进行解密,因而鉴别了实体A的身份。
然而这样有漏洞,会导致重放攻击。就是,入侵者C可以从网络上截获A发给B的报文,C不需要破译这个报文(因为话很多时间)而可以直接把这个由A加密的报文发送给B,使B误认为C就是A。然后B就向伪装是A的C发送许多本来应当发给A的报文。这就叫作重放攻击。C甚至可以截获A的IP地址,然后把A的IP地址冒充为自己的IP地址,使B更加容易受骗。
为了对付重放攻击,可以使用不重数。不重数就是不重复使用的大随机数,即“一次一数”。在鉴别过程中不重数可以使B能够把重复的鉴别请求和新的鉴别请求区分开。下图给出了这个过程。
在使用公钥密码体制时,可以对不重数进行签名鉴别。看上图,B用其私钥对不重数Ra进行签名后发回给A,A用B的公钥核实签名,如能得出自己原来发送的不重数Ra,就核实了和自己通信的双方的确是B。同样,A也用自己的私钥对不重数Rb进行签名后发送给B。B用A的公钥核心签名,鉴别了A的身份。
公钥密码体制虽然不必在互相通信的用户之间秘密地分配共享密钥,但仍有收到攻击的可能。看下图。
五、密钥分配
密钥管理包括:密钥产生、分配、注入、验证和使用。
密钥必须通过最安全的通路进行分配。例如,可以派非常可靠的信使携带密钥分配给互相通信的各用户。这种方法称为网外分配方式。但随着用户的增多和网络流量的增大,密钥更换频繁(密钥必须定期更换才能做到可靠),派信使的方法已不再使用,而应采用网内分配方式,即对密钥自动分配。
1.对称密钥的分配
对称密钥分配的问题:①如果n个人要相互通信,需要n(n-1)/2个密钥。如果n很大,需要的密钥数量非常大。②通信双方怎样才能安全地得到共享的密钥呢?正是因为网络不安全,所以才需要使用加密技术。但密钥要怎样传送呢?
Ⅰ、KDC对会话密钥的分配
目前常用的密钥分配方式是设立密钥分配中心KDC(key distribution center),它给需要进行秘密通信的用户临时分配一个会话密钥(仅使用一次)。图,A和B在登记时就在KDC的服务器上安装了各自和KDC进行通信的主密钥Ka和Kb。
Ⅱ、更先进的加密标准ACS——Kerberos V4
Kerberos使用两个服务器:鉴别服务器AS、票据授予服务器TGS。只用于客户与服务器之间的鉴别,而不使用人对人的鉴别。
①A向AS表明身份,AS验证后允许A和TGS联系;
②报文包括Ks和AS要发送给TGS的票据(票据用TGS的对称密钥Ktg加密)。A不保存密钥Ka,但这个报文到达A时,A就键入口令,若口令正确,则口令和适当算法一起就能生成密钥Ka。这个口令随即销毁。于是提取出Ks和转发给TGS的票据。
③A向TGS发送三个项目:
转发AS发来的票据;
服务器B的名字,这表明A请求B的服务。请注意,现在A向TGS证明自己的身份并非通过键入口令(因为入侵者能够从网上截获明文口令),而是通过转发AS发出的票据(只有A才能提取出)。票据是加密的,入侵者伪造不了;
用Ks加密的时间戳T,它用来防止入侵者的重放攻击。
④TGS发送两个票据,每一个都包含A和B通信的会话密钥Kab。给A的票据用Ks加密,给B的票据用B的密钥Kb加密。请注意,现在入侵者不能提取Kab,因为不知道Ka和Kb。入侵者也不能重放步骤③,因为入侵者不能把时间戳更换为一个新的(因为不知道Ks)。如果入侵者在时间戳到期之前,非常迅速地发送步骤③的报文,那么对TGS发来的两个票据仍然不能解密。
⑤A向B转发TGS发来的票据,同时发送用Kab加密的时间戳T。
⑥B把时间戳T加1来证实收到了票据,B向A发送的报文用密钥Kab加密。
时间戳要求所有主机的时钟误差不要太大,这是为了防止重放攻击。时间太长就要废。
2.公钥的分配
问题提出——设想A向欺骗B,就向B发送一份伪造是C发送的报文,A用自己的秘密密钥进行数字签名,并附上A自己的公钥,谎称这公钥是C的。B怎么知道这不是C的呢?
认证中心CA(certification authority)将公钥与对应的实体进行绑定(binding)。
六、因特网使用的安全协议
1.网络层安全协议
Ⅰ、IPsec与安全关联SA
网络层保密是指所有在IP数据报中的数据都是加密的。在IPsec(IP安全协议的缩写)中有两个主要协议:鉴别首部AH(提供源点鉴别、数据完整性,不提供保密)和封装安全有效载荷ESP(提供源点鉴别、数据完整性、保密)。
在使用AH和ESP前,要从源主机到目的主机建立一条网络层的逻辑连接。此逻辑连接叫作安全关联SA。这样,IPsec就把传统的因特网无连接的网络层转换为具有逻辑连接的层。
安全关联是单向连接。它由三元组唯一确定:①安全协议(使用AH或ESP协议)的标识符;②此单向连接的目的IP地址;③一个32位的连接标识符,称为安全参数索引SPI。
对于给定的安全关联SA,每一个IPsec数据报都有一个存放SPI的字段。通过此SA的所有数据报都使用同样的SPI值。
Ⅱ、鉴别首部协议AH
协议设为51,是为让目的主机知道在IP首部后面紧接着的是AH首部。在传输过程中,中间的路由器不查看AH首部。数据到达终点时,目的主机才处理AH字段,以鉴别源点和检查数据报的完整性。
AH首部具有如下一些字段:
(1)下一个首部(8位),标志紧接着本首部的下一个首部的类型(如TCP或UDP)
(2)有效载荷长度(8位),即鉴别数据字段的长度,以32位字为单位
(3)安全参数索引SPI(32位),标志一个安全关联
(4)序号(32位),鉴别数据字段的长度,以32位字位单位
(5)保留(16位),今后用
(6)鉴别数据(可变)。为32位字的整数倍,包含了经数字签名的报文摘要(对原来的数据报进行报文摘要运算),因此可用来鉴别源主机和检查IP数据报的完整性。
Ⅲ、封装安全有效载荷协议ESP
协议设为50。IP首部后面是ESP首部、TCP/UDP报文段、ESP尾部、ESP数据。
在ESP首部中,有标志一个安全关联的安全参数索引SPI(32位)和序号(32位)。在ESP尾部中有下一个尾部(作用和AH首部的一样)。
加密后攻击者无法得知所使用的运输层协议(它在IP数据报的数据部分)。ESP的鉴别数据和AH中的鉴别数据的作用是一样的。
2.运输层安全协议
用户在网购时需要安全协议。
Ⅰ、安全套接层SSL
SSL可对万维网客户与服务器之间传送的数据进行加密和鉴别。它在双方的联络阶段(也就是握手阶段)对将要使用的加密算法(如用DES或RSA)和双方共享的会话密钥进行协商,完成客户与服务器之间的鉴别。在联络完成后,所有传送的数据都使用在联络阶段商定的会话密钥。SSL不仅被所常用的浏览器和万维网服务器所支持,而且是运输层安全协议TLS的基础。
SSL还可用于IMAP邮件存取的鉴别和数据加密。SSL的位置在应用层和运输层(TCP)之间。在发送方,SSL接收应用层的数据(如HTTP或IMAP报文),对数据进行加密,然后把加了密的数据送往TCP套接字。在接收方,SSL从TCP套接字读取数据,解密后把数据交给应用层。
SSL提供一下三种功能:SSL服务器鉴别、加密的SSL会话、SSL客户鉴别。
SSL的工作原理:
假定A有一个使用SSL的安全网页,B上网时用鼠标点击到这个安全网页的链接(URL协议部分是https)。接着服务器和浏览器就进行握手协议:
(1)浏览器向服务器发送浏览器的SSL版本号和密码编码的参数选择(因为浏览器和服务器要协商使用哪一种对称密钥算法);
(2)服务器向浏览器发送服务器的SSL版本号、密码编码的参数选择及服务器的证书。证书包括服务器的RSA公钥,此证书是由某个认证中心用自己的密钥加密,然后发送给该服务器。
(3)浏览器有一个可信的CA表,表中有每一个CA的公钥。当浏览器收到服务器发来的证书时,就检查此证书的发行者是否在CA表中,若不在,则后面的加密和鉴别连接就不能继续。如在,浏览器就使用CA相应的公钥对证书进行解密,这样就得到了服务器的公钥。
(4)浏览器随机产生一个对称会话密钥,并用服务器的公钥加密,然后将加密的会话密钥发送给服务器。
(5)浏览器向服务器发送一个报文,说明以后浏览器将使用此会话密钥进行加密,然后浏览器再向服务器发送一个单独的加密报文,指出浏览器端的握手过程完成。
(6)服务器也向浏览器发送一个报文,说明以后服务器将使用此会话密钥进行加密,然后服务器再向浏览器发送一个单独的加密报文,指出服务器端的握手过程已经完成。
(7)SSL的握手过程至此完成,下面就可开始SSL的会话过程。浏览器和服务器都使用这个会话密钥对所发送的报文进行加密。
评价:缺少一些措施来防止在因特网商务中出现的各种可能的欺骗行为。
Ⅱ、安全电子交易SET
专为在因特网上进行安全信用卡交易的协议。主要特点:
①专为与支付有关的报文进行加密,不能像SSL那样对任意的数据进行加密。
②涉及到三方,即客户、商家、商业银行,所有在这三方之间交互的敏感信息都被加密。
③要求这三方都有证书。在SET交易中,商家看不见客户传送给商业银行的信用卡号码。
由于SET交易中客户端要使用专门软件,商家要支付比SSL更高的费用,因此SET在市场的竞争中失败了。
3.应用层安全协议
简单。下面介绍两种用于电子邮件的安全协议。
1、PGP协议
是一个完整的电子邮件安全软件包,包括加密、鉴别、电子签名和压缩等技术。是把现有的加密算法(如RSA公钥加密算法或MD5报文摘要算法)综合在一起。提供电子邮件的安全性、发送方鉴别和报文完整性。
工作原理——
假定A向B发送电子邮件明文X,现在用PGP进行加密。A有三个密钥:自己的私钥、B的公钥和自己生成的一次性密钥。B有两个密钥:自己的私钥和A的公钥。
A需要做以下几件事:
(1)对明文X进行MD5报文摘要运算,得出报文摘要H,用自己的私钥对H进行数字签名,得出签了名的报文摘要D(H),把它拼接在明文X后面,得到报文(X+D(H))。
(2)使用自己生成的一次性密钥对报文(X+D(H))进行加密
(3)用B的公钥对自己生成的一次性密钥进行加密
(4)把加了密的一次性密钥和加了密的报文(X+D(H))发送给B
B收到加密的报文后要做以下几件事:
(1)把被加密的一次性密钥和被加密的报文(X+D(H))分离开
(2)用自己的私钥解出A的一次性密钥
(3)用接出的一次性密钥对报文(X+D(H))进行解密,然后分理出明文X和D(H)
(4)用A的公钥对D(H)进行签名核实,得出报文摘要H
(5)对X进行报文摘要运算,得出报文摘要,看是否和H一样。如一样,则电子邮件的发送方鉴别就通过了,报文的完整性也得到肯定。
Ⅱ、PEM协议
privacy enhanced mail。有比PGP更完善的密钥管理机制。
七、链路加密与端到端加密
从网络传输角度看,有这两种不同的加密策略。
1.链路加密
E是加密,D是解密。由于协议数据单元PDU中的协议控制信息和数据都被加密,这就掩盖了源点和终点的地址。若在结点间保持连续的密文序列,则PDU的频度和长度也就得到掩盖。这就防止了流量分析。由于不需要传送额外的数据,因此不会减少网络的有效带宽。
缺点在于在中间结点暴露了信息的内容。在网络互连的情况下,仅采用链路加密是不能实现通信安全的。
2.端到端加密
是在源点和终点中对传送的PDU进行加密和解密。报文的安全性不会因中间结点的不可靠而受到影响。
端到端加密应在运输层或应用层来实现。若选择在运输层加密,可以使安全措施对用户来说是透明的,这样可不必为每一个用户提供单独的安全保护,但容易遭受运输层以上的攻击。当选择在应用层加密时,用户可根据自己的特殊要求来选择不同的加密算法,而不会影响其他用户。这样,端到端更容易适合不同用户的要求。
在端到端加密的情况下,PDU的控制信息部分(如源点地址、终点地址、路由信息等)不能被加密,否则中间结点就不能正确选择路由。这就使得这种方法易于受到流量分析的攻击。虽然也可以通过发送一些假的PDU来掩盖有意义的报文流动(报文填充),但这要以降低网络性能为代价。若各结点都使用对称密钥体制,则各结点必须持有与其他结点相同的密钥,这就需要在全网范围内进行密钥管理和分配。
为了获得更好的安全性,可将链路加密与端到端加密结合在一起使用。链路加密用来对PDU的目的地址进行加密,而端到端加密则提供了对端到端的数据进行保护。
八、防火墙
是一种特殊编程的路由器,安装在一个网点和网络的其余部分之间。目前是实施访问控制策略。这个访问控制策略是由使用防火墙的单位自行制定的。
防火墙的功能有两个,一个是阻止,一个是允许。阻止是阻止某种类型的流量通过防火墙(从外部网络到内部网络)。
防火墙技术有两类:
①网络级防火墙
用来防止整个网络出现外来非法的入侵。属于这类的有分组过滤和授权服务器。前者检查所有流入本网络的信息,后者拒绝不符合事先制定好的一套准则数据,而后者则是检查用户的登录是否合法。
②应用级防火墙
从应用程序来进行访问控制,通常使用应用网关或代理服务器来区分各种应用。
使用两个局域网的原因:使穿过防火墙的各种分组必须通过分组过滤路由器和应用网关的检查,而没有任何其他的路径。
分组过滤是靠系统管理员所设置的表格来实现的。表格列出了可接受的、必须阻拦的目的站和源站。
TCP的端口号指出了在TCP上面的应用程序,所以如果在因特网进入防火墙的分组过滤器中将所有目的端口号为xx的入分组进行阻拦。但阻拦出分组要麻烦,因为它们有时不使用标准的端口号,有的是动态分配端口号。
应用网关是从应用层的角度来检查每一个分组。例如,一个邮件网关在检查每一个邮件时,要根据邮件的首部或报文的大小,甚至是报文的内容(例如有没有涉及敏感词)来确定该邮件能否通过防火墙。