Download presentation
Presentation is loading. Please wait.
1
第6章 Internet的基础设施安全 6.1 Internet安全概述 6.2 DNS的安全性 6.3 安全协议IPSec
6.4 电子邮件的安全性 6.5 Web的安全性 6.6 虚拟专用网及其安全性
2
6.1 Internet安全概述 随着政府网、海关网、企业网、电子商务、网上娱乐等一系列网络应用的蓬勃发展,Internet正在越来越多地离开原来单纯的学术环境, 融入到社会的各个方面。一方面,网络用户成分越来越多样化,出于各种目的的网络入侵和攻击也越来越频繁; 另一方面,网络应用越来越深入地渗透到金融、商务、国防等关键要害领域。换言之,Internet网的安全,包括网上的信息数据安全和网络设备服务的运行安全,日益成为与国家、政府、 企业、个人的利益休戚相关的“大事情”。 然而,由于在早期网络协议设计上对安全问题的忽视,以及在使用和管理方面的无政府状态,使Internet自身的安全受到严重威胁,与它有关的安全事故屡有发生。这就要求我们对与Internet互连所带来的安全性问题予以足够重视。
3
网络面临的安全威胁可分为两种:一是对网络数据的威胁; 二是对网络设备的威胁。这些威胁可能来源于各种各样的因素: 可能是有意的, 也可能是无意的; 可能是来源于企业外部的, 也有可能是内部人员造成的;可能是人为的, 也可能是自然力造成的。 总结起来, 大致有下面几种主要威胁: (1) 非人为、自然力造成的数据丢失、设备失效、线路阻断; (2) 人为但属于操作人员无意的失误造成的数据丢失; (3) 来自外部和内部人员的恶意攻击和入侵。
4
图 6.1 已经实现的各种网络安全机制
5
6.2 DNS的安全性 域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换信息。通常,网络用户通过UDP协议与DNS服务器进行通信,而服务器在特定的53端口监听,并返回用户所需的相关信息,这是“正向域名解析”的过程。“反向域名解析”也是一个查询DNS的过程。当客户向一台服务器请求服务时,服务器方一般会根据客户的IP反向解析出该IP对应的域名。
6
6.2.1 目前DNS存在的安全威胁 1. DNS的安全隐患 (1) 防火墙一般不会限制对DNS的访问; (2) DNS可以泄漏内部的网络拓扑结构; (3) DNS存在许多简单有效的远程缓冲溢出攻击; (4) 几乎所有的网站都需要DNS; (5) DNS的本身性能问题是关系到整个应用的关键。
7
2. DNS的安全威胁 (1) 拒绝服务攻击。 (2) 设置不当的DNS会泄漏过多的网络拓扑结构。 如果你的DNS服务器允许对任何人都进行区域传输的话, 那么你的整个网络架构中的主机名、主机IP列表、 路由器名、 路由器IP列表,甚至包括你的机器所在的位置等等都可以被轻易窃取。
8
(3) 利用被控制的DNS服务器入侵整个网络, 破坏整个网络的安全完整性。 当一个入侵者控制了DNS服务器后, 他就可以随意篡改DNS的记录信息,甚至使用这些被篡改的记录信息来达到进一步入侵整个网络的目的。例如,将现有的DNS记录中的主机信息修改成被攻击者自己控制的主机,这样所有到达原来目的地的数据包将被重定位到入侵者手中。在国外,这种攻击方法有一个很形象的名称,被称为DNS毒药,因为DNS带来的威胁会使得整个网络系统中毒,破坏完整性。
9
(4) 利用被控制的DNS服务器,绕过防火墙等其它安全设备的控制。现在一般的网站都设置有防火墙,但是由于DNS服务的特殊性,在UNIX机器上,DNS需要的端口是UDP 53和TCP 53, 它们都是需要使用root执行权限的。这样防火墙很难控制对这些端口的访问,入侵者可以利用DNS的诸多漏洞获取到DNS服务器的管理员权限。 如果内部网络的设置不合理,例如DNS服务器上的管理员密码和内部主机管理员密码一致,那么,DNS服务器和内部其它主机就处于同一个网段, DNS服务器也就处于防火墙的可信任区域内, 这就相当于给入侵者提供了一个打开系统大门的捷径。
10
6.2.2 Windows下DNS欺骗 局域网内的网络安全是一个值得大家关注的问题,往往容易发起各种欺骗攻击, 这是局域网自身的属性所决定的——网络共享。 这里所说的DNS欺骗是基于ARP欺骗之上的网络攻击,如果在广域网上,则比较麻烦。 1. DNS欺骗的原理 让我们换个思路,如果客户机在进行DNS查询时,能够允许它给出我们的应答信息,结果会怎样呢?这就是著名的DNS ID欺骗(DNS Spoofing)。
11
在DNS数据报头部的ID(标识)是用来匹配响应和请求数据报的。现在,让我们来看看域名解析的整个过程。客户端首先以特定的标识向DNS服务器发送域名查询数据报,在DNS服务器查询之后以相同的ID号给客户端发送域名响应数据报。这时客户端会将收到的DNS响应数据报的ID和自己发送的查询数据报ID相比较,如果匹配则表明接收到的正是自己等待的数据报,如果不匹配则丢弃之。
12
假如我们能够伪装DNS服务器提前向客户端发送响应数据报, 那么客户端的DNS缓存里域名所对应的IP就是我们自定义的IP了, 同时客户端也就被带到了我们希望的网站。条件只有一个, 那就是我们发送的ID匹配的DNS响应数据报在DNS服务器发送的响应数据报之前到达客户端。欺骗原理见图6.2所示。
13
图 6.2 DNS欺骗原理
14
2. DNS欺骗的实现 现在我们知道了DNS ID欺骗的实质了, 那么如何才能实现呢?这要分两种情况。 (1) 本地主机与DNS服务器,本地主机与客户端主机均不在同一个局域网内,方法有以下几种: 向客户端主机随机发送大量DNS响应数据报,命中率很低;向DNS服务器发起拒绝服务攻击, 太粗鲁; BIND漏洞, 使用范围比较窄。
15
(2) 本地主机至少与DNS服务器或客户端主机中的某一台处在同一个局域网内。我们可以通过ARP欺骗来实现可靠而稳定的DNS ID欺骗,下面我们将详细讨论这种情况。
首先我们进行DNS ID欺骗的基础是ARP欺骗,也就是在局域网内同时欺骗网关和客户端主机(也可能是欺骗网关和DNS服务器, 或欺骗DNS服务器和客户端主机)。我们以客户端的名义向网关发送ARP响应数据报,不过其中将源MAC地址改为我们自己主机的MAC地址;同时以网关的名义向客户端主机发送ARP响应数据报,同样将源MAC地址改为我们自己主机的MAC地址。这样一来,网关看到的客户端的MAC地址就是我们主机的MAC地址;客户端也认为网关的MAC地址是我们主机的MAC地址。由于在局域网内数据报的传送是建立在MAC地址之上的,因此网关和客户端之间的数据流通必须先通过本地主机。
16
在监视网关和客户端主机之间的数据报时,如果发现了客户端发送的DNS查询数据报(目的端口为53),那么我们可以提前将自己构造的DNS响应数据报发送到客户端。注意,我们必须提取由客户端发送来的DNS查询数据报的ID信息, 因为客户端是通过它来进行匹配认证的,这就是一个我们可以利用的DNS漏洞。这样客户端会先收到我们发送的DNS响应数据报并访问我们自定义的网站,虽然客户端也会收到DNS服务器的响应报文, 不过已经来不及了。
17
如果你不幸被欺骗了,先禁用本地连接,然后启用本地连接就可以清除DNS缓存。不过也有一些例外情况,如果IE中使用代理服务器,那么欺骗就不能进行,因为这时客户端并不会在本地进行域名请求;如果你访问的不是网站主页, 而是相关子目录的文件,这样你在自定义的网站上不会找到相关的文件, 登陆会以失败告终。
18
拒绝服务攻击 BIND(Berkeley Internet Name Domain)是我们所熟知的域名软件,它具有广泛的使用基础, Internet上的绝大多数DNS服务器都是基于这个软件的。 来自DIMAP/UFRN(计算机科学和应用数学系/北格兰德联邦大学)的CAIS/RNP(Brazilian Research Network CSIRT)和Vagner Sacramento对BIND的几种版本进行了测试,证明了在BIND版本4和版本8上存在缺陷,攻击者利用这个缺陷能成功地进行DNS欺骗攻击。
19
如果攻击者以不同的IP源地址,相同的域名同时向目标DNS服务器发送若干个解析请求时,目标DNS服务器为了解析这些请求, 会将接收到的请求全部发送到其它DNS服务器。由于这些解析请求都被单独进行处理,并分配了不同的ID,因此在目标服务器等待这些不同ID的回复时,攻击者可尝试使用不同ID向目标DNS服务器发送回复, 通过猜测或穷举得到正确的回复ID, 以便进行DNS欺骗攻击。在BIND4和BIND8中猜测成功的机率是: (n是同时向目标DNS服务器发送请求的数目)。 许多Internet的正常服务都必须依赖于DNS服务。 因此, 如果此缺陷被成功利用, 将会影响网络中的其它服务。攻击者可使用DNS欺骗进行拒绝服务攻击或者伪装成一个受信任的系统。
20
受影响版本: BIND 以及之前的版本(4.9.x) BIND 8.2.7以及之前的版本(8.2.x) BIND 8.3.4以及之前的版本(8.3.x) 解决方案: 建议用户立即升级到版本 BIND :
21
临时解决方案: (1) 配置DNS服务器仅仅允许在自己的域内使用递归; (2) 在防火墙或边界路由器上进行防欺骗配置; (3) 将DNS服务器放置在DMZ内。
22
6.3 安全协议IPSec 6.3.1 IP协议简介 IP协议是位于ISO七层协议中网络层的协议,它实现了Internet中自动路由的功能,即寻径的功能。IP维系着整个TCP/IP协议的体系结构。除了数据链路层外,TCP/IP协议栈的所有协议都是以IP数据报的形式传输的。IP允许主机直接向数据链路层发送数据包, 这些数据包最终会进入物理网络,然后可能通过不同的网络传送到目的地。IP提供无连接的服务,在无连接的服务中,每个数据报都包含完整的目的地址并且路由相互独立,这样,使用无连接的服务时,数据报到达目的地的顺序可能与发送方发送的顺序不同。
23
TCP/IP协议有两种IP版本: 版本4(IPv4)和版本6(IPv6)。 我们现在使用的是IPv4, 最新的IPv6可以解决地址紧缺的问题, 而IPSec技术则为保护IP通信的安全提供了一个可行的解决方案, 它适合上面的两种IP版本。
24
6.3.2 下一代IP-IPv6 近年来随着通信业的高速发展,中国已经成为通信技术和应用发展的主要市场。2002年11月30日,中国移动电话用户已达到了2亿,固定电话的普及率为31.99%,互联网用户则为4829万。 由此,我国现有的IPv4已经不能满足网络市场对地址空间、端到端的IP连接、 服务质量、网络安全和移动性能的要求。因此, 以IPv6为核心技术的下一代网络在中国正越来越受到重视。
25
IPv6(Internet Protocol Version 6,Internet协议版本6)如表6
IPv6(Internet Protocol Version 6,Internet协议版本6)如表6.1所示, 它是Internet协议的最新版本,已作为IP的一部分并被许多主要的操作系统所支持。 IPv6也被称为“IPng”(下一代IP),它对现行的IP(版本4)进行了重大的改进。使用IPv4和IPv6的网络主机和中间结点可以处理IP协议中任何一层的包。 用户和服务商可以直接安装IPv6而不用对系统进行什么重大的修改。相对于版本4新版本的最大改进在于将IP地址从32位改为128位,这一改进是为了适应网络快速的发展对IP地址的需求,也从根本上改变了IP地址短缺的问题。可以预见,IPv6可以为未来10~15年左右分配足够的IP地址。
26
IPv6的改进有:简化IPv4首部字段,被删除或者成为可选字段,减少了一般情况下包的处理开销以及IPv6首部占用的带宽。 IP 首部选项编码方式的修改导致了更加高效的传输,在选项长度方面少了更多的限制,在将来引入新的选项时有了更强的适应性。加入一个新的能力,使得那些发送者要求特殊处理的传输流的包能够贴上标签,比如非缺省质量的服务或者实时服务。 为支持认证、数据完整性以及(可选的)数据保密的扩展都在IPv6中说明。
27
IPv6定义在RFC2373(IP Version 6 Addressing Architecture, 1998
IPv6定义在RFC2373(IP Version 6 Addressing Architecture, ), RFC2374(An IPv6, Aggregatable Global Unicast Address Format ), RFC2375(IPv6 Multicast Address Assignments, )和RFC2492(IPv6 Over ATM Network, 1999)中。 很显然IPv6(128位)和IPv4(32位)是有区别的, 因为它有8个16位地址段, 而IPv4有4个8位地址。 除了这个明显区别外,IPv6使用了一个不同的方式来表示它的编码。
28
表6.1 IPv6地址表示方法
29
请记住,可以使用一套双冒号(::)来替代许多组的16位0,从而可以避免在一个IPv6地址的一部分位置输入一整串0。同样这套双冒号在一个地址中只能使用一次,一般用来压缩开始或者结尾部分的0,因此,不会有这样的地址::10::(假如你想表示0:0:0:0:0:0:10:0:0:0)。 IPv6推广的复杂性来自于路由器和其它的网络设备。现在的路由器要么只支持IPv4,要么只支持IPv6,从来不会支持两种。 所以在网络技术有了新的发现和发明或者大规模部署IPv6路由设备之前,要广泛使用IPv6仍然需要几年的时间。
30
IP安全协议IPSec的用途 IP数据包本质上是不安全的。伪造IP地址,篡改IP数据报的内容,重放旧的内容,监测传输中的数据包的内容都是比较容易的。因此,既不能保证一个IP数据报确实来自它声称的来源,也不能保证IP数据报在从发源到目的地的传输过程中没有被第三方篡改或者窥视。
31
设计IPSec是为了给IPv4和IPv6数据提供高质量的、可互操作的、基于密码学的安全性。 它可以防止IP地址欺骗,防止任何形式的IP数据报篡改和重放, 并为IP数据报提供保密性和其它的安全服务。IPSec在网络层提供这些服务, 该层是在TCP/IP协议栈中包含IP协议的那一层。 IPSec所提供的安全服务是通过使用密码协议和安全机制来联合实现的。IPSec能够让系统选择所需的安全协议,和它一起使用密码算法,同时生成为提供这些请求的服务所必需的密钥,并将它们放在核心的位置。
32
IPSec提供的安全服务包括对网络单元的访问控制、 数据源认证、提供用于无连接服务的协议(协议)的无连接完整性、重放数据报的监测和拒绝、 使用加密来提供保密性和有限的数据流保密性。由于IPSec服务是在网络层提供的,任何上层协议, 如TCP、 UDP、 ICMP和IGMP,或者任何应用层协议都可以使用这些服务。
33
6.3.4 IPSec的结构 IPSec通过使用两种通信安全协议:认证头(AH, Authentication Header)、 封装安全载荷(ESP, Encryption Service Payload), 并使用像Internet密钥交换(IKE, Internet Key Exchange)协议来共同实现安全性。 1. 认证头(AH) 设计认证头(AH)协议的目的是用来增加IP数据报的安全性。AH协议提供无连接的完整性、 数据源认证和防重放保护服务。然而, AH不提供任何保密性服务,它不加密所保护的数据包, 如图6.3所示。AH的作用是为IP数据流提供高强度的密码认证, 以确保被修改过的数据包可以被检查出来。
34
图 6.3 AH认证和完整性
35
AH使用消息验证码(MAC)对IP进行认证。MAC是一种算法, 它接收一个任意长度的消息和一个密钥,生成一个固定长度的输出,成为消息摘要或指纹。 如果数据报的任何一部分在传送过程中被篡改,那么,当接收端运行同样的MAC算法, 并与发送端发送的消息摘要值进行比较时,就会被检测出来。 最常见的MAC是HMAC,HMAC可以和任何迭代密码散列函数(如MD5, SHA-1, RIPEMD-160或者Tiger)结合使用,而不用对散列函数进行修改。
36
AH被应用于整个数据包,除了任何在传输中易变的IP报头域(例如被沿途的路由器修改的TTL域)。 AH的工作步骤如下:
(1) IP报头和数据负载用来生成MAC; (2) MAC被用来建立一个新的AH报头, 并添加到原始的数据包上; (3) 新的数据包被传送到IPSec对端路由器上; (4) 对端路由器对IP报头和数据负载生成MAC,并从AH报头中提取出发送过来的MAC信息,且对两个信息进行比较。 MAC信息必须精确匹配,即使所传输的数据包有一个比特位被改变,对接收到的数据包的散列计算结果都将会改变,AH报头也将不能匹配。
37
2. 封装安全载荷(ESP) 封装安全载荷(ESP)可以被用来提供保密性、 数据来源认证(鉴别)、无连接完整性、防重放服务,以及通过防止数据流分析来提供有限的数据流加密保护。实际上,ESP提供和AH类似的服务,但是增加了两个额外的服务:数据保密和有限的数据流保密服务。保密服务由通过使用密码算法加密IP数据报的相关部分来实现。数据流保密由隧道模式下的保密服务来提供, 如图6.4所示。
38
图 6.4 封装完全载荷ESP
39
ESP中用来加密数据报的密码算法都毫无例外地使用了对称密钥体制。公钥密码算法采用计算量非常大的大整数模指数运算, 大整数的规模超过300位十进制数字。而对称密码算法主要使用初级操作(异或、逐位与、位循环等),无论以软件还是硬件方式执行都非常有效。所以相对公钥密码系统而言,对称密钥系统的加、解密效率要高得多。ESP通过在IP层对数据包进行加密来提供保密性,它支持各种对称的加密算法。对于IPSec的缺省算法是56比特的DES。该加密算法必须被实施,以保证IPSec设备间的互操作性。ESP通过使用消息认证码(MAC)来提供认证服务。 ESP可以单独应用,也可以以嵌套的方式使用,或者和AH结合使用。
40
3. IKE协议 与其它任何一种类型的加密一样,在交换经过IPSec加密的数据之前,必须先建立起一种关系,这种关系被称为“安全关联(SA,Security Association)”。在一个SA中,两个系统就如何交换和保护数据要预先达成协议。IKE过程是一种IETF标准的安全关联和密钥交换解析的方法。 IKE实行集中化的安全关联管理,并生成和管理授权密钥, 授权密钥是用来保护要传送的数据的。除此之外,IKE还使得管理员能够定制密钥交换的特性。例如,可以设置密钥交换的频率,这可以降低密钥受到侵害的机会,还可以降低被截获的数据被破译的机会。
41
Internet密钥交换(IKE)是一种混合协议, 它为IPSec提供实用服务(IPSec双方的鉴别、IKE和IPSec安全关联的协商),以及为IPSec所用的加密算法建立密钥。它使用了三个不同协议的相关部分: Internet安全关联和密钥交换协议(ISAKMP)、 Oakley密钥确定协议和SKEME。 IKE为IPSec双方提供用于生成加密密钥和认证密钥的密钥信息。同样,IKE使用ISAKMP为其它IPSec(AH和ESP)协议协商SA(安全关联)。
42
6.4 电子邮件的安全性 6.4.1 PGP PGP最早出现在1990年,是一种长期在学术圈和技术圈内得到广泛使用的安全邮件标准。其特点是通过单向散列算法对邮件内容进行签名, 保证信件内容无法修改,使用公钥和私钥技术来保证邮件内容保密且不可否认。发信人与收信人的公钥发布在公开的地方,如FTP站点。公钥本身的权威性由第三方,特别是收信人所熟悉或信任的第三方进行签名认证,但它没有统一的集中的机构进行公钥/私钥的签发。在PGP系统中,更多的信任是来自于通信的双方。
43
PGP(Pretty Good Privacy)是一个基于RSA公钥加密体系的邮件加密软件。它可以对你的邮件保密以防止非授权者阅读,它还能对你的邮件加上数字签名从而使收信人可以确信邮件是你发来的。它让你可以安全地和你从未见过的人们通信, 事先并不需要任何保密的渠道用来传递密钥。它采用了审慎的密钥管理,一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。它的功能强大,有很快的速度,而且它的源代码是免费的。
44
实际上PGP的功能不止上面说的可以用来加密文件, 还可以用PGP代替UUencode 生成 RADIX 64 格式(就是MIME 的 BASE 64格式)的编码文件。
PGP 的创始人是美国的 Phil Zimmermann。他的创造性在于他把RSA公钥体系的方便和传统加密体系的高速度结合起来, 并且在数字签名和密钥认证管理机制上有巧妙的设计,因此PGP成为几乎最流行的公钥加密软件包。
45
1. 加密原理 PGP是一种供大众使用的加密软件。 在现代社会里,电子邮件和网络上的文件传输已经成为生活的一部分。邮件的安全问题就日益突出了,大家都知道在Internet上传输的数据是不加密的。 如果你自己不保护自己的信息,第三者就会轻易获得你的隐秘。还有一个问题就是信息认证,如何让收信人确信邮件没有被第三者篡改,就需要数字签名技术。RSA公钥体系的特点可满足上述两个要求:保密性(Privacy)和认证性(Authentication)。
46
RSA(Rivest Shamir Adleman)算法是一种基于素因子分解假设的公钥体系。简单地说就是找两个很大的质数,一个公开给外界, 一个不告诉任何人。一个称为“公钥”,另一个称为“私钥”(Public key & Secret key or Private key)。 这两个密钥是互补的,就是说用公钥加密的密文可以用私钥解密,反过来也一样。 假设甲要寄信给乙,他们互相知道对方的公钥。甲用乙的公钥加密邮件寄出,乙收到后可以用自己的私钥解密出甲的原文。由于没别人知道乙的私钥,因此即使是甲本人也无法解密那封信, 这就解决了信件保密的问题。 另一方面由于每个人都知道乙的公钥,他们都可以给乙发信, 那么乙就无法确信是不是甲的来信。认证的问题就出现了,这时候数字签名就有用了。
47
在说明数字签名前先要解释一下什么是“邮件文摘”(Message Digest),简单地讲就是对一封邮件用某种算法算出一个最能体现这封邮件特征的数来,一旦邮件有任何改变,这个数都会变化, 那么这个数加上作者的名字(实际上在作者的密钥里)还有日期等等,就可以作为一个签名了。 确切地说PGP是用一个128位的二进制数作为“邮件文摘”的, 用来产生它的算法叫MD5(message digest 5), MD5的提出者是Ron Rivest, PGP中使用的代码是由Colin Plumb编写的,MD5本身是公用软件,所以PGP的法律条款中没有提到它。 MD5是一种单向散列算法,它不像CRC校验码,很难找到一份替代的邮件与原件具有同样的MD5特征值。
48
回到数字签名上来,甲用自己的私钥将上述的128位的特征值加密,附加在邮件后,再用乙的公钥将整个邮件加密。(注意这里的次序, 如果先加密再签名的话, 别人可以将签名去掉后签上自己的签名,从而篡改了签名)。这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和签名, 乙的PGP也从原文计算出一个128位的特征值来和用甲的公钥解密签名所得到的数比较,如果符合就说明这份邮件确实是甲寄来的, 这样两个安全性要求都得到了满足。
49
PGP还可以只签名而不加密,这适用于公开发表声明时, 声明人为了证实自己的身份(在网络上只能如此),可以用自己的私钥签名, 这样就可以让收件人能确认发信人的身份,也可以防止发信人抵赖自己的声明,这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改。
50
那么为什么说PGP用的是RSA和传统加密的杂合算法呢?因为RSA算法计算量极大,在速度上不适合加密大量数据, 所以PGP实际上用来加密的不是RSA本身,而是采用了一种叫IDEA的传统加密算法。传统加密,简单地说就是用一个密钥加密明文, 然后用同样的密钥解密。这种方法的代表是DES(US Federal Data Encryption Standard), 也就是乘法加密,它的主要缺点就是密钥的传递渠道解决不了安全性问题,不适合网络环境邮件加密需要。IDEA是一个有专利的算法,专利持有者是ETH和一个瑞士公司(AscomTech AG)。
51
非商业用途的IDEA实现不用向他们交纳费用。因为,IDEA的加(解)密速度比RSA快得多,所以实际上PGP是以一个随机生成密钥(每次加密不同)用IDEA算法对明文加密, 然后用RSA算法对该密钥加密。 这样收件人同样是用RSA解密出这个随机密钥,再用IDEA解密邮件本身。这样的链式加密就做到了既有RSA体系的保密性,又有IDEA算法的快捷性。PGP的创意有一半就在这一点上了,为什么RSA体系自20世纪70年代提出以来,一直没有被推广应用呢? 速度太慢,那么PGP创意的另一半在哪儿呢? 下面再谈PGP的密钥管理。
52
2. 密钥管理机制 一个成熟的加密体系必然要有一个成熟的密钥管理机制配套。公钥体制的提出就是为了解决传统加密体系中密钥分配过程难以保密的缺点。比如网络黑客们常用的手段之一就是“监听”, 如果密钥是通过网络传送就太危险了。举个例子在Novell Netware 的老版本中,用户的密码是以明文在线路中传输的,这样监听者就轻易获得了他人的密码。 当然 Netware 4.1 中数据包头的用户密码现在加密了,对PGP来说公钥本来就要公开, 就不存在防监听的问题。但公钥的发布中仍然存在安全性问题, 例如公钥被篡改就是公钥密码体系中最大的漏洞,因为大多数新手不能很快发现这一点。
53
防止这种情况出现的最好办法是避免让任何其他人有机会篡改公钥,比如直接从Alice手中得到她的公钥,然而当她在千里之外或无法见到时,这是很困难的,PGP发展了一种公钥介绍机制来解决这个问题。举例来说,如果你和Alice有一个共同的朋友David, 而David知道他手中的Alice的公钥是正确的(关于如何认证公钥, PGP还有一种方法,后面会谈到,这里假设David已经和Alice认证过她的公钥)。
54
这样David可以用他自己的私钥在Alice的公钥上签名(就是用上面讲的签名方法),表示他担保这个公钥属于Alice。 当然你需要用David的公钥来校验他给你的Alice的公钥,同样David也可以向Alice认证你的公钥, 这样David就成为你和Alice之间的“介绍人”。 这样Alice或David就可以放心地把David签过字的Alice的公钥上载到BBS上让你去拿,没人可能去篡改它而不被你发现, 即使是BBS的管理员也不行。 这就是从公共渠道传递公钥的安全手段。
55
那怎么能安全地得到David的公钥呢?也有可能你拿到的David的公钥也是假的。 PGP对这种可能也有预防的建议, 那就是由一个大家普遍信任的人或机构担当这个角色。他被称为“密钥侍者”或“认证权威”,每个由他签字的公钥都被认为是真的,这样大家只要有一份他的公钥就行了,认证这个人的公钥是方便的, 因为他广泛提供这个服务,假冒他的公钥是很困难的,因为他的公钥流传广泛。这样的“权威”适合由非个人控制组织或政府机构充当, 现在已经有等级认证制度的机构存在。
56
对于那些非常分散的人们,PGP更赞成使用私人方式的密钥转介方式,因为非官方途径更能反映出人们自然的社会交往,而且人们也能自由地选择信任的人来介绍。总之和不认识的人们之间的交往一样, 每个公钥至少有一个“用户名”(User ID), 并请尽量用自己的全名,最好再加上本人的 地址,以免混淆。 注意,你所必须遵循的规则是,在你使用任何一个公钥之前, 一定要首先认证它。同样你也不要随便为别人签字认证他们的公钥, 就和你在现实生活中一样, 家里的钥匙只能交给十分信任的人。
57
下面讲述如何通过电话认证密钥。每个密钥有它们自己的标识(KeyID),KeyID是一个八位十六进制数,两个密钥具有相同KeyID的可能性是几十亿分之一, 而且PGP还提供了一种更可靠的标识密钥的方法, 即“密钥指纹”(Key’s fingerprint)。 每个密钥对应一串数字(16个两位十六进制数),这个指纹重复的可能就更微乎其微了。而且任何人无法指定生成一个具有某个指纹的密钥,密钥是随机生成的,从指纹也无法反推出密钥来。 这样你拿到某人的公钥后就可以和他在电话上核对这个指纹,从而认证他的公钥。 如果你无法和Alice通电话,你可以和David通电话认证David的公钥,从而通过David认证了Alice的公钥,这就是直接认证和间接介绍的结合。
58
这样又引出一种方法,就是把具有不同人签名的自己的公钥收集在一起, 发送到公共场合,这样希望大部分人至少认识其中一个人,从而间接认证了你的公钥。 同样你签了朋友的公钥后应该寄回给他,这样就可以让他通过你的其它朋友所认证。 有点意思吧, 和现实社会中人们的交往一样,PGP会自动为你找出你拿到的公钥中有哪些是你的朋友介绍来的,哪些是你朋友的朋友介绍来的, 哪些则是朋友的朋友的朋友介绍的……, PGP会帮你把它们分为不同的信任级别,让你参考决定对他们的信任程度。你可以指定某人有几层转介公钥的能力,这种能力是随着认证的传递而递减的。
59
转介认证机制具有传递性,这是个有趣的问题。PGP的作者Phil Zimmermann说过一句话: “信赖不具有传递性。我有个我相信决不撒谎的朋友,可是他是个认定总统决不撒谎的傻瓜, 很显然我并不认为总统不撒谎。 ”
60
关于公钥的安全性问题是PGP安全的核心,和传统单密钥体系一样,私钥的保密也是决定性的。相对公钥而言,私钥不存在被篡改的问题, 但存在被泄露的问题。RSA的私钥是很长的一个数字,用户不可能将它记住,PGP的办法是让用户为随机生成的RSA私钥指定一个口令(pass phase)。只有通过给出口令才能将私钥释放出来使用,所以私钥的安全性问题实际上是对用户口令的保密。当然私钥文件本身失密也很危险,因为破译者所需要的只是用穷举法试探出你的口令了,虽说很困难但毕竟是损失了一层安全性。在这里只需简单地记住一点,要像任何隐私一样保密你的私钥,不要让任何人有机会接触到它,最好只在大脑中保存它, 不要写在纸上。
61
PGP在安全性问题上的审慎考虑体现在PGP的各个环节, 比如每次加密的实际密钥是个随机数,大家都知道计算机是无法产生真正的随机数的。PGP程序对随机数的产生是很审慎的, 关键的随机数像RSA密钥的产生是从用户敲键盘的时间间隔上取得随机数种子的。对于磁盘上的randseed.bin 文件是采用和邮件同样强度来加密的, 这有效地防止了他人从你的randseed.bin文件中分析出你的加密实际密钥的规律来。
62
PGP内核使用PKZIP算法来压缩加密前的明文,对电子邮件而言,压缩后加密再经过7 bits编码密文有可能比明文更短, 这就节省了网络传输的时间。另一方面,明文经过压缩,实际上相当于经过一次变换, 信息更加杂乱无章,对明文攻击的抵御能力更强。PGP中使用的PKZIP算法是经过原作者同意的。 PKZIP算法是一个公认的压缩率和压缩速度都相当好的压缩算法。 在PGP中使用的是PKZIP 2.0版本兼容的算法。
63
6.4.2 S/MIME 对一般用户来说,PGP和S/MIME邮件加密专用协议,在使用上几乎没有什么差别。但是事实上它们是完全不同的,主要体现在格式上, 这有点像GIF和JPEG两种图形文件,对用户来说, 查看图片是没有区别, 但它们是两种完全不一样的文件。 这也就意味着,由于格式的不同,一个使用PGP的用户不能与另一个使用S/MIME的用户通信,且他们也不能共享证书。两者比较如表6.2所示。
64
PGP/MIME和Open PGP都是基于PGP的,现已经得到许多重要的邮箱提供商支持,PGP的通信和认证的格式是随机生成的,使用简单的二进制代码。 PGP的主要提供商是美国NAI的子公司PGP,在中国,由于PGP的加密超过128位, 受到美国出口限制, 因此商用的比较少。
65
表6.2 S/MIME v3和Open PGP的对比
66
S/MIME是一个新协议, 最初版本来源于私有的商业社团RSA数据安全公司。S/MIME V2 版本已经广泛地使用在安全电子邮件上。但是它并不是IETF的标准, 因为它需要使用 RSA的密钥交换,这就受限于美国RSA数据安全公司的专利(不过, 2001年12月该专利到期)。
67
S/MIME是从PEM(Privacy Enhanced Mail)和MIME(Internet邮件的附件标准)发展而来的。同PGP一样,S/MIME也利用单向散列算法和公钥与私钥的加密体系, 但它与PGP主要有两点不同:它的认证机制依赖于层次结构的证书认证机构, 所有下一级的组织和个人的证书由上一级的组织负责认证,而最上一级的组织(根证书)之间相互认证,整个信任关系基本是树状的, 这就是所谓的Tree of Trust。 还有,S/MIME将信件内容加密签名后作为特殊的附件传送,它的证书格式采用X.509, 但与一般浏览器网上使用的SSL证书有一定差异。
68
国内众多的认证机构基本都提供一种叫“安全电子邮件证书”的服务,其技术对应的就是S/MIME技术,平台使用的基本上是美国Versign的。主要提供商有北京的天威诚信( 它们一个是Versign的中国区合作伙伴,一个是Versign亚太区分支机构。
69
6.5 Web的安全性 Web的安全性要求 计算机的安全性历来都是人们讨论的主要话题之一。而计算机安全主要研究的是计算机病毒的防治和系统的安全。在计算机网络日益扩展和普及的今天,计算机安全的要求更高,涉及面更广, 不但要求防治病毒,还要提高系统抵抗外来非法黑客入侵的能力, 还要提高对远程数据传输的保密性, 避免在传输途中遭受非法窃取。
70
1. 主要的几方面漏洞 对于系统本身安全性,主要考虑服务器自身稳定性、 健壮性, 增强自身抵抗能力, 杜绝一切可能让黑客入侵的渠道, 避免造成对系统的威胁。 Web服务器的漏洞主要有下面几个方面: (1) Web服务器上的秘密文件、 目录或重要数据。 (2) 从远程用户向服务器发送信息时,特别是信用卡之类东西时,中途遭不法分子的非法拦截。
71
(3) Web服务器本身存在的一些漏洞,使得一些人能侵入到主机系统破坏一些重要的数据,甚至造成系统瘫痪。
(4) CGI程序中存在漏洞。 (5) 在防治网络病毒方面,在http传输中HTML文件一般不会存在感染病毒的危险。危险在于下载可执行软件如: .zip .exe .arj .Z 等文件过程中有可能潜伏病毒。
72
2. 安全预防措施 (1) 限制在Web服务器新建帐户, 定期删除一些短期使用的用户。 (2) 对在Web服务器上所开的帐户,在口令长度及定期更改方面作出要求,防止被盗用。 (3) 对口令和用户名出错次数进行限制,防范穷举法攻击。 (4) 尽量使ftp, mail等服务器与之分开,去掉ftp, sendmail, tftp, NIS, NFS, finger, netstat等一些无关的应用。
73
(5) 在Web服务器上去掉一些绝对不用的shell等之类解释器, 即当在你的cgi的程序中没用到perl时, 就尽量把perl在系统解释器中删除掉。
(6) 禁止乱用从其它网中下载的一些工具软件,并在没有详细了解之前尽量不要用root身份注册执行,以防止某些程序员在程序中设下陷阱。 (7) 定期查看服务器中的日志logs文件,分析一切可疑事件, 及时发现一些非法用户的入侵尝试。
74
(8) 设置好Web服务器上系统文件的权限和属性, 对可让人访问的文档分配一个公用的组(WWW),并只分配它只读的权利。 把所有的HTML文件归属WWW组,由Web管理员管理WWW组。 对于Web的配置文件仅对Web管理员有写的权利。 (9) 有些Web服务器把Web的文档目录与FTP目录指在同一目录时,应该注意不要把FTP的目录与CGI-BIN指定在一个目录之下, 这样是为了防止一些用户通过FTP上的perl或sh之类程序并用Web的CGI-BIN去执行造成不良后果。
75
(10) 通过限制用户IP或DNS, 控制访问许可。
(11) 在选用Web服务器时,应考虑到不同服务器对安全的要求不一样。一些简单的 Web服务器就没有考虑到安全的因素, 不能把它用作商业应用,只能被一些个人的网点所应用。 对重要商业应用,必须加上防火墙和数据加密技术加以保护。在数据加密方面,更重要的是不断提高和改进数据加密技术,使不法分子难有可乘之机。通过这些方法,就可以使Web服务处于相对安全的地位。
76
6.5.2 安全套接字层(SSL) SSL(Secure Socket Layer)系由Netscape公司建议的一种构建在TCP协议之上的保密措施通信协议,不但适用于HTTP,而且还适用于TELNET、 FTP、 NNTP、 GOPHER等客户/服务器模式的安全协议。Netscape Navigator、 Secure Mosaic和Microsoft Internet Explorer等客户浏览器与Netscape、Microsoft、 IBM、 Quarterdeck、OpenMarket 和 O’Reilly等服务器产品都采用SSL协议。
77
SSL协议允许客户端(典型的如浏览器)和HTTP 服务器之间能通过安全的连接来通信。SSL支持数据的加密、来源验证及数据的完整性,以保护在不安全的公众网络上交换的数据。在SSL版本中,SSL 3.0应用则比较广泛。最后,由SSL 3.0改进而来的传输层加密(TLS, Transport Layer Security)已经成为Internet标准并应用于几乎所有的软件中。 在数据传播之前,加密技术把数据转变成看起来毫无意义的内容来保护数据不被非法使用。其过程是,数据在一端(客户端或者服务器端)被加密、 传输,再在另一端被解密。
78
来源认证是验证数据发送者身份的一种办法。浏览器或者其它客户端第一次尝试与网页服务器进行安全连接通信时,服务器会将一套信任信息以证书的形式呈现出来。
证书由权威认证机构(CA)——值得信赖的授权者发行和验证。 一个证书描述一个人的公钥。一个签名的文档会作出如下保证: 我证明文档中的这个公钥属于在该文档中命名的实体,签名(权威认证机构)。目前知名的权威认证机构有Verisign、 Entrust和Thawte等。注意现在使用的 SSL/TLS 证书是 X.509 证书。
79
SSL协议的目标是提供两个应用间通信的保密和可靠性, 可在服务器和客户端同时实现支持。SSL可提供3种基本的安全服务:信息保密、信息完整性、相互认证,如表6.3所示。
80
SSL由两层组成,低层是SSL记录层,用于封装不同的上层协议,其中一个被封装的协议即SSL握手协议,它可以让服务器和客户机在传输应用数据之前, 协商加密算法和加密密钥,客户机提出自己能支持的全部算法清单, 服务器选择最适合它的算法。 SSL是名符其实的安全套接层,它的连接动作和TCP的连接类似, 因此, 你可以认为像SSL连接就是安全的TCP连接, 因为在协议层次图(图6.5)中,SSL的位置正好在TCP之上而在应用层之下。但是,SSL不支持某些TCP的特性, 比如频带外数据。
81
图6.5 SSL和TCP/IP协议的层次
82
SSL的特性之一是为电子商务的事务提供可交流的加密技术和为验证算法提供标准的方法。SSL的开发者认识到不是所有人都会使用同一个客户端软件,从而不是所有客户端都会包括任何详细的加密算法。对于服务器也是同样,位于连接两端的客户端和服务器在初始化“握手”的时候,需要交流加密和解密算法(密码组)。 如果它们没有足够的公用算法,连接尝试将会失败。 注意当SSL允许客户端和服务器端相互验证的时候,典型的作法是只有服务器端在SSL层上进行验证。客户端通常在应用层, 通过SSL保护通道传送的密码来进行验证。这个模式常用于银行、 股份交易和其它的安全网络应用中。
83
图 6.6 SSL“握手”协议
84
这些消息的意义如下: (1) ClientHello 发送信息到服务器的客户端, 这些信息如SSL协议版本、 会话ID、 密码组信息、 加密算法和能支持的密钥的大小。 (2) ServerHello 选择最好密码组的服务器并发送这个消息给客户端。密码组包括客户端和服务器支持。 (3) Certificate 服务器将包含其公钥的证书发送给客户端。这个消息是可选的,在服务器请求验证的时候会需要它。换句话说, 证书用于向客户端确认服务器的身份。
85
(4) Certificate Request 这个消息仅在服务器请求客户端验证它自身的时候发送。多数电子商务应用不需要客户端对自身进行。
(5) Server Key Exchange 如果证书包含了服务器的公钥不足以进行密钥交换,则发送该消息。 (6) ServerHelloDone 这个消息通知客户端, 服务器已经完成了交流过程的初始化。 (7) Certificate 仅当服务器请求客户端对自己进行验证的时候发送。
86
(8) Client Key Exchange 客户端产生一个密钥与服务器共享。 如果使用Rivest-Shamir-Adelman (RSA) 加密算法,客户端将使用服务器的公钥将密钥加密之后再发送给服务器。服务器使用自己的私钥或者密钥对消息进行解密以得到共享的密钥。 现在, 客户端和服务器共享着一个已经安全分发的密钥。 (9) Certificate Verify 如果服务器请求验证客户端,则这个消息允许服务器完成验证过程。
87
(10) Change Cipher Spec 客户端要求服务器使用加密模式。
(11) Finished 客户端告诉服务器它已经准备好安全通信了。 (12) Change Cipher Spec 服务器要求客户端使用加密模式。 (13) Finished 这是SSL “握手”结果的标志。 (14) Encrypted Data 客户端和服务器可以在安全通信通道上进行加密信息的交流。
88
安全超文本传输协议 从World Wide Web角度来看,人们提出了三种安全的HTTP协议或协议(如表6.4所示)。第一个是HTTPS,它事实上就是基于SSL来实现安全的HTTP。第二个是SHTTP(Secure HTTP), 是Commerce Net在1994年提出的,其最初的目的是用于电子商务。 该协议后来也提交给了因特网工程任务组IETF的Web事务安全工作组讨论。像SSL一样,SHTTP提供了数据机密性、数据完整性和身份鉴别或认证服务。两者的不同之处在于,SHTTP是HTTP的一个扩展,它把安全机制嵌入到HTTP中。显然,由于SHTTP较之SSL更面向应用, 因此实现起来要复杂一些。
89
在早期,各厂商一般只选择支持上述两个协议之一,但现在许多厂商对两者都支持。第三个是安全电子交易(Secure Electronic Transaction)SET。这是一个庞大的协议,它主要涉及电子商务中的支付处理。它不仅定义了电子支付协议,还定义了证书管理过程。 SET是由Visa和MasterCard共同提出的。
90
表6.4 SHTTP和TCP/IP的层次
91
SHTTP(Secure HTTP)系由Commerce Net公司建议构造在HTTP协议之上的高层协议。目前由Open Market公司推销的 Open Marketplace 服务器结合Enterprise Integration Technologies的Secure HTTP Mosaic客户浏览器采用。 SHTTP/HTTP可以采用多种方式对信息进行封装。封装的内容包括加密、签名和基于MAC 的认证,并且一个消息可以被反复封装加密。此外, SHTTP还定义了包头信息来进行密钥传输、 认证传输和相似的管理功能。SHTTP可以支持多种加密协议, 还为程序员提供了灵活的编程环境。
92
由于SSL的迅速出现,SHTTP未能得到广泛应用。
SHTTP使用HTTP的MIME网络数据包进行签名、 验证和加密,数据加密可以采用对称或非对称加密。 通过SHTTP, 安全服务器以加密和签名信息回答请求。在对客户验证签名及身份时,验证是通过服务器的私钥实现,该私钥用来产生服务器的数字签名,当信息发给客户时,服务器将其公钥证书和签名信息一起发往客户,客户便可以验证发送者身份,服务器也可以用同样的过程来验证发自客户的数字签名。SHTTP的范围覆盖了Web客户和服务器。
93
SSL可使用各种类型的加密算法和密钥验证机制,与SHTTP相似,SSL提供加密HTTP网络数据包的能力。SHTTP在HTTP协议层工作,SSL在套接字层工作,并能加密多种其它基于套接字的Internet协议。SSL的客户机和服务器之间的谈判与套接字谈判的处理过程相似。SSL不同于SHTTP之处在于,后者是HTTP的超集,只限于Web的使用, 前者则是通过Socket发送信息, SSL是一个通过Socket层对客户和服务器间的事务进行安全处理的协议,适用于所有TCP/IP应用。SSL包括:客户和服务器之间协商加密算法类型的信息、 交换证书和密钥的信息。
94
目前SSL基本取代了SHTTP。大多数Web贸易均采用传统的Web协议, 并使用SSL加密的HTTP来传输敏感的账单信息。 各种Web交易应用程序都提供相似功能, 其后端系统正在被商品化的商用服务器产品所取代。较为复杂的实时支付确认系统需要与商业银行中的商业系统集成。复杂性较小的系统可延迟支付确认,直到所需的交易移到贸易商的常规帐单系统。
95
6.6 虚拟专用网及其安全性 6.6.1 VPN简介 虚拟专用网(VPN)是平衡Internet的适用性和价格优势的最有前途的新兴通信手段之一。VPN被广泛接受的定义是:建立在公众网络上,并隔离给单独用户使用的任何网络。依这条定义来衡量,Frame Relay, X.25, ATM等都可以认为是VPN,这种VPN一般被认为是第二层的VPN。正在蓬勃发展的VPN模式,是建立在共享的IP骨干网上的网络,它被称为IP VPNs。利用这种共享的IP网建立VPN连接,可以使企业减少对昂贵租用线路和复杂远程访问方案的依赖性。据预测, 到2001年,VPN服务的市场数量将超过100亿美元,同时每年设备的市场数量将达到15亿美元。
96
与传统专用网相比,VPN给企业带来很多的好处,同时也给服务供应商特别是ISP带来很多机会。VPN给企业带来的好处主要有以下四点:
(1) 降低成本; (2) 易于扩展; (3) 可随意与合作伙伴联网; (4) 完全控制主动权。
97
VPN的解决方案根据应用环境的不同分为三类(如图6.7所示):
(1) Access VPN 主要提供给公司内部在外出差和在家中办公的人员与公司建立通信; (2) Intranet VPN 主要提供给公司内部各分支办公室与中心办公室之间建立通信; (3) Extranet VPN 主要提供给合作伙伴和重要客户与本公司建立通信。
98
图 6.7 VPN解决方案分类
99
6.6.2 VPN协议 1. 协议分类 目前,两种既各具特点又具有一定互补性的VPN架构正逐渐推广应用。一种是二层隧道协议用于传输二层网络协议,它主要应用于构建Access VPN和Extranet VPN;另一种是三层隧道协议用于传输三层网络协议,它主要应用于构建Intranet VPN 和Extranet VPN。
100
二层隧道协议主要有三种:PPTP(Point to Point Tunneling Protocol)点对点隧道协议,L2F(Layer 2 Forwarding)二层转发协议和L2TP(Layer 2 Tunneling Protocol)二层隧道协议,其中L2TP 结合了前两个协议的优点,具有更优越的特性得到了越来越多的组织和公司的支持,也是使用最广泛的VPN二层隧道协议。 用于传输三层网络协议的隧道协议叫三层隧道协议。三层隧道协议并非是一种很新的技术,其实早已出现的GRE(Generic Routing Encapsulation, RFC 1701)协议就是一个三层隧道协议,此外还有IETF 的IPSec 协议,以及最新的MPLS。IPSec 和MPLS 方式是正在蓬勃发展的VPN模式,是建立在共享的IP骨干网上的网络,它被称为IP VPNs,发展前景十分广阔。
101
2. IPSec VPN IPSec IP Security 是一组开放协议的总称, 特定的通信方之间在IP 层通过加密与数据源验证, 以保证数据包在Internet 网上传输时的私有性完整性和真实性。 IPSec通过AH (Authentication Header)和ESP (Encapsulating Security Payload)这两个安全协议来实现。此实现不会对用户主机或其它Internet组件造成影响,用户还可以选择不同的硬件和软件加密算法,不会影响其它部分的实现。
102
传统VPN基于封装(隧道)技术以及加密模块技术,可在两个位置间安全地传输数据。IPSec协议是目前VPN中最常用的。 该类型的VPN是位于IP网络顶层的点对点隧道的覆盖,它位于另一种IP网络的上层。由于是一种覆盖,在每个站点之间必须建立一个隧道, 这就导致了网络的低效。
103
这里存在两种网络布局结构:中心辐射布局和全网络布局。 中心辐射布局是由一个中心站点同许多远程站点相连,这是IPSec网的最实用的布局,如图6
这里存在两种网络布局结构:中心辐射布局和全网络布局。 中心辐射布局是由一个中心站点同许多远程站点相连,这是IPSec网的最实用的布局,如图6.8所示。位于中心站点位置的用户前端设备(CPE, Client Premises Equipment)通常非常昂贵,其价格同相连的远程站点的数目有关。每个远程站点都会建立到中心站点的IPSec隧道。如果有20个远程站点, 那么就会建立20个到中心站点的IPSec隧道。
104
图 6.8 IPSec实际使用拓扑图
105
该模式对于远程到远程之间的通信不是最优的。任何数据包,如果从一个远程站点发送到另外一个远程站点,首先需要通过中心站点,需要中心站点实现解封、 解密、 判定转发路径、加密、封装等一系列步骤。这对于在远程站点中已经进行的封装/加密工作来说,是多余的。实际上,数据包经过两个IPSec隧道的传输,延迟时间大大地增加了,超过了两个站点之间直接通信时,数据包的延迟时间。
106
很显然,解决这个问题的方案是建立一个全网状布局。但该类型的布局存在不少缺点,最大的缺点是可扩充性。对于全网状IPSec网络, 需要支持的隧道的数量随着站点的数目呈几何级数增加。例如对于一个21个站点构成的中心辐射布局网络(一个中心站点和20个远程站点),需要建立210个IPSec隧道。 每个站点需要配置能够处理20个IPSec隧道的CPE,这意味着每个站点需要价格更为昂贵的CPE设备。从某种意义上讲,建立一个全网状布局是不现实的,想象一下由100个站点组成的VPN, 那它将需要建立4950个隧道。
107
另外一个考虑的是CPE设备,一个供应商需要确保所有的CPE之间能够兼容。最简单的方案是在每个位置使用同一种CPE设备,但这并不总是可行。许多场合中,用户打算重用自己的CPE。另外,对于DSL,同一种CPE设备并没有在所有不同的CLEC设备之间进行过测试,虽然兼容性目前不是个大问题,但在使用IPSec协议时仍需要考虑。 对于IPSec VPN来说,配置将成为问题, 供应商必须配置好每个IPSec隧道。配置单一的一个IPSec隧道不成问题,但网络结点数量增大时,问题就来了。在建立全网状的布局时,情况最糟, 上例中, 配置一个由21个结点组成的网络需费时数天。对于服务供应商来说,日常维护的难度也很大。
108
3. MPLS VPN MPLS(Multiprotocol Label Switch)多协议标签交换吸收了ATM的一些交换的思想,无缝地集成了IP路由技术的灵活性和二层交换的简捷性。在面向无连接的IP网络中增加了MPLS这种面向连接的属性,通过采用MPLS建立“虚连接”的方法为IP网增加了一些管理和运营的手段。 MPLS VPN中,客户站点运行的是通常的IP协议,它们并不需要运行MPLS,IPSec或者其它特殊的VPN功能。在PE路由器中, 路由识别器对应于每个客户站点的连接。这些连接可以是诸如T1、单一的帧中继、ATM虚电路、DSL等这样的物理连接。 路由识别器在PE路由器中被配置,是设置VPN站点工作的一部分, 它并不在客户设备上进行配置,对于客户来说是透明的。
109
1) MPLS VPN的工作过程 (1) 用户端的路由器(CE)首先通过静态路由或BGP将用户网络中的路由信息通知提供商路由器(PE),同时在PE之间采用BGP的Extension传送VPN-IP的信息以及相应的标记(VPN的标记,以下简称为内层标记),而在PE与P路由器之间则采用传统的IGP协议相互学习路由信息,采用LDP协议进行路由信息与标记(骨干网络中的标记,以下称为外层标记)的绑定。到此时,CE、PE以及P路由器中基本的网络拓扑和路由信息已经形成。PE路由器拥有了骨干网络的路由信息以及每一个VPN的路由信息。
110
(2) 当属于某一VPN的CE用户数据进入网络时,在CE与PE连接的接口上可以识别出该CE属于哪一个VPN,进而到该VPN的路由表中去读取下一跳的地址信息,同时,在前传的数据包中打上VPN标记(内层标记)。 这时得到的下一跳地址为与该PE作Peer的PE的地址,为了达到这个目的端的PE,此时在起始端PE中需读取骨干网络的路由信息,从而得到下一个P路由器的地址,同时采用LDP在用户前传数据包中打上骨干网络中的标记(外层标记)。
111
(3) 在骨干网络中,初始PE之后的P只读取外层标记的信息来决定下一跳,因此骨干网络中只是简单的标记交换。
(4) 在达到目的端PE之前的最后一个P路由器时,将外层标记去掉,读取内层标记,找到VPN,并送到相关的接口上,进而将数据传送到VPN的目的地址处。 采用MPLS/BGP协议的VPN结构如图6.9所示。 从以上工作过程可见,MPLS VPN丝毫不改变CE和PE原有的配置,一旦有新的CE加入到网络时,只需在PE上作简单配置, 其余的改动信息由IGP/BGP自动通知CE和PE。
112
图6-9 采用MPLS/BGP协议的VPN结构
113
2) MPLS VPN的优点 (1) VPN连接配置简单,对现有骨干网络没有压力; (2) 对现有用户的要求为0,用户不需要作任何改动, 用户加入VPN的配置也很简单; (3) 网络可扩展能力很强; (4) VPN用户可以延用原有的专用地址,不需要作任何修改, 在骨干网络采用VPN-ID,可以保持全网的惟一性; (5) 易于提供增值业务, 如不同的COS。
114
IPSec VPN和MPLS VPN之间的一个关键差异是MPLS厂商在性能、可用性以及服务等级上提供了SLA(Service Level Agreement)。而它对于建立在IPSec设备上的VPN来说则是不可用的,因为IPSec设备利用Internet接入服务直接挂接在Internet上。 MPLS VPN要求所有的站点都与同一服务供应商相关联。如果连接到VPN的所有站点都是由一个公司所有的,这当然不存在什么问题,但是需要在VPN上增加商业合作伙伴时,可能就会出现一些问题。如果合作伙伴使用的是其它一些服务供应商的服务, 而且它还需要加入这个连接的话,那么它就必须将连接转到MPLS VPN供应商。另外,MPLS VPN并没有为自己的远程拨号用户提供远程接入。
115
还有的公司使用了VPN管理服务,服务供应商可为其安装、 管理、监测和维护VPN设备,这就减少了公司在设备上的投资, 公司只需考虑设备的正常运转和不落伍就可以了。但是它的缺点就是,当技术、设备需要更新时,这些公司只能等待服务供应商来作出决定。 当前,国内的电信运营商——中国电信、中国网通、中国移动、中国联通等,相继推出了基于多协议标记交换(MPLS)技术的IP-VPN业务,以满足其位于国际、国内城市分支机构间低成本、 安全、 快速、 可靠的内部通信需求。
116
6.6.3 VPN方案设计 以下是对一个典型VPN应用的设计如图6.10所示。基于IPSec VPN解决方案,将三个分支机构与网络中心连接起来。 网络中心为了安全,使用了网络防火墙Cisco Secure PIX, 通过加装VPN加速卡(VAC),作为VPN隧道的终端。这些加速卡通过硬件进行DES和3DES的加密,极大地提高了这些加密算法的处理能力。同时在网络中心建立证书授权中心,提供建立VPN隧道连接时的身份验证。
117
图 6.10 基于IPSec的VPN设计方案
118
通过利用Cisco IOS软件对IPSec的支持,在分支机构建立VPN隧道的终端。为了提高VPN服务的处理性能,可以加装用于Cisco路由器的VPN加速卡(VAC)。每次由分支机构的路由器发起建立VPN隧道的请求,网络中心的PIX防火墙响应后, 即可建立起VPN隧道,以实现安全保密的通信。 由于很多的软硬件产品都支持IPSec协议,因此也可以使用VPN集中器、带VPN的ADSL Modem、支持IPSec的防火墙产品等。 具体设计实施细节请参考对应产品的技术文档。
119
这种典型VPN设计方案,针对VPN作了性能优化的路由器和PIX防火墙, 充分利用了现有的Cisco设备,建立了安全的VPN网络,同时又提供了对Internet访问的途径,非常适用于混合的广域网环境。
120
6.6.4 VPN的安全性 所有连接到VPN的站点现在都拥有了自己的Internet接入, 这意味着它们的Internet流量不再通过传统的远程接入和Internet连接进行传输,这就减少了利用Internet连接进行传输的流量总量,但是同时也意味着公司必须管理所有站点的防火墙而不是处于中心位置的一个防火墙。 IPSec VPN利用IPSec协议为端到端的隧道连接提供认证和保密。对数据流的认证使用了一个强的密码认证算法;所以尽管数据通过公网传输,但是被欺骗的概率还是很小的。类似的, 对数据流的加密使用了一个强的密码加密算法,所以尽管数据通过公网传输,但是数据的保密性受损的可能性不大。另外内部网及其数据流的身份可以由安全网关来保护。
121
MPLS VPN采用路由隔离、地址隔离和信息隐藏等多种手段提供了抗攻击和标记欺骗的手段,因此研究认为MPLS VPN完全能够提供与传统的享有很高的安全声誉的FR/ATM VPN相类似的安全保证。但MPLS VPN也并未比FR/ATM在安全方面做得更好, 也没有解决所有管理型的共享网络普遍存在的非法访问受保护的网络元、 错误配置以及内部(包括核心)攻击等安全问题。如果运营商错误配置和建立了一个MPLS VPN,就会把一个客户的流量注入到另外一个客户的网络中去。虽然这不仅是MPLS所特有的问题(2000年2月Yankee group发表的研究报告指出传统的FR/ATM VPN存在严重的安全隐患),但到MPLS也没解决这一问题。现在对用户的建议是:如果你认为MPLS VPN不够安全,那么就在MPLS上再运行IPSec协议。
122
6.6.5 微软的点对点加密技术 PPTP是由多家公司专门为支持VPN而开发的一种技术。 PPTP是一种通过现有的TCP/IP连接(称为“隧道”)来传送网络数据包的方法。VPN要求客户端和服务器之间存在有效的互联网连接。一般服务器需要与互联网建立永久性连接, 而客户端则通过ISP连接互联网,并且通过拨号网(DUN,Dial-Up Networking)入口与PPTP服务器建立服从PPTP协议的连接。 这种连接需要访问身份证明(如用户名、 口令和域名等)和遵从的验证协议。RRAS 为在服务器之间建立基于PPTP的连接及永久性连接提供了可能。
123
只有当PPTP服务器验证客户身份之后,服务器和客户端的连接才算建立起来了。PPTP会话的作用就如同服务器和客户端之间的一条隧道,网络数据包由一端流向另一端。数据包在起点处(服务器或客户端)被加密为密文, 在隧道内传送, 在终点将数据解密还原。因为网络通信是在隧道内进行,所以数据对外而言是不可见的。隧道中的加密形式更增加了通信的安全级别。一旦建立了VPN连接,远程的用户可以浏览公司局域网LAN, 连接共享资源,收发电子邮件, 就像本地用户一样。
124
PPTP同样提供改进的加密方式。 原来的版本对传送和接收通道使用同一把密钥,而新版本则采用种子密钥方式,对每个通道都使用不同的密钥,这使得每个VPN会话更加安全。要破坏一个VPN对话的安全,入侵者必须解密两个惟一的密钥:一个用于传送路径,一个用于接收路径。更新后的版本还封堵了一些安全漏洞,这些漏洞允许某些VPN业务根本不以密文方式进行。
125
1. PPTP 的优点 (1) 减少了远程拨入公司网络所需的大量长途电话费用。 用户只需拨本地号码访问Internet 即可。 (2) 降低了调制解调器和综合服务数字网(ISDN)适配器之类的RAS基础结构费用。相反,ISP处理所有的调制解调器和ISDN升级, 而公司维护与Internet的连接,以处理PPTP通信。 (3) 使用户通过直接拨号RAS连接能访问相同的应用程序。 (4) 在Windows 9x/NT/2000/XP中都支持。
126
2. PPTP 和防火墙 PPTP通过允许远程网络验证用户身份,好像用户拨入一个RAS服务器一样,并通过使用基础的PPP协议的压缩和加密功能, 提供对远程专用网的安全访问。 有两种方法,可以使用防火墙技术来保护PPTP服务器和它提供安全Internet访问的专用网:将 PPTP 服务器放在Internet上, 将防火墙放在它的后面来保护它所服务的网络,或将防火墙服务器放在Internet上,将PPTP服务器放在防火墙和专用网之间。
127
在第一种情况下,管理员启用PPTP服务器上的PPTP筛选功能,以使服务器只接收 PPTP数据包。然后,再在隧道服务器后面的防火墙上应用进一步的筛选,以基于源地址和目标地址或其它标准接纳数据包。
128
3. 在服务器上配置PPTP 在服务器上配置PPTP非常简单。在Windows 2000 Server下, 你只需要安装和配置RAS或RRAS(路由和远程访问服务),并加载PPTP。在PPTP配置过程中,你必须输入VPN的数目,即该服务器将同时支持的PPTP连接的数目。每个服务器最多可以定义256个端口。具体实施请参阅RRAS的联机帮助或访问微软公司网站。
129
4. 如何使用PPTP PPTP可以在公共网络如Internet上实现安全的、多协议的Virtual Private Networks(VPNs)。通过PPTP,远程用户可以通过拨本地ISP的Point of Presence (POP)来访问企业网络、应用程序, 而无需直接拨入企业网络。PPTP通过为每一远程客户端生成一个虚拟网络来直接连接到目标服务器上,同时管理员能像其它远程管理一样进行监测管理。
130
第二层隧道协议 当微软和Cisco公司分别向IETF提交了PPTP2.0和L2F(Layer 2 Forwarding)时,IETF建议这两家公司将它们的技术联合起来以降低协议的专有性。其结果就是“第二层隧道协议(Layer 2 Tunneling Protocol, L2TP)”。L2TP利用IPSec进行加密。表6.5是对两种协议的一个简单对比。
131
表6.5 PPTP和L2TP的区别
132
VPN发展前景 目前,基于IP Security(IPSec)的VPN和采用MPLS技术的VPN这两种既各具特点又具有一定互补性。根据预测,服务供应商会以MPLS VPN为主,并且把IPSec VPN和MPLS VPN这两种IP VPN有机地组合起来以综合运用各自的优点。
133
MPLS VPN能够利用公用骨干网络的广泛而强大的传输能力,来降低企业内部网络/Internet 的建设成本,提高用户网络运营和管理的灵活性,同时来满足用户对信息传输安全性、实时性、宽频带、方便性的需要,所以,很受一些大型跨地域集团用户的欢迎。IPSec的VPN尽管配置较复杂,效率比较低,但支持的产品多,有基于软件的和硬件的,包括Windows 2000也支持,并且不需要运营商的额外支持,所以非常适合网络规模小的用户。 对于一些网络化较早的大型的企业,可以采取折衷方案, 通过对专线网和VPN网优化组合后,在与业务数据量较大、比较重要的分支机构连接时,利用专线连接;而与业务数据量较小、 不太重要的分支机构连接时,通过VPN组网。
Similar presentations