1.前言
随着Internet的不断发展,由于其方便快捷,很多大公司和政府部门或民间组织都用它来传输数据,这些单位的各个部门往往都是跨地区的,相隔很远,如果全部用自己的专线,其价格非常昂贵。于是利用Internet这样的公共网络来传输私有数据就可以节省大量费用。但是这样的后果就是非常不安全,在Internet上,数据随时可能会被不怀好意的网络入侵者窃取或修改,因此,数据在传输过程中必须被加密,接收方和发送方通过一个虚拟的安全隧道来传输信息,这就是虚拟专用网技术。如果是在TCP或UDP层加密,那么通过截取IP层的数据同样可以获得机密信息,在IP层使用加密和认证就非常安全了,这就是IPsec(IP安全体系结构)技术。目前利用IPsec来实现VPN(虚拟专用网)成为一种发展趋势。
2.IP协议的安全体系结构
IPv4的包本身没有提供任何安全保护,黑客可以通过信息包探测、IP电子欺骗、连接截获、replay攻击(是一种不断发相同序列号的包使系统崩溃的攻击方法)等方法来攻击。因此,我们收到的数据包存在着以下危险:并非来自合法的发送者;数据在传输过程中被人修改;数据内容已被人窃取(想想如果是军事机密等重要信息的话,这是致命的)。IPsec的目的就是为了实现数据传输的完整性(源地址验证和保证数据没有被修改)和机密性(没有被人看过)以及提供一定程度的对replay攻击的保护。IPsec可用它为IP及其上层协议(TCP和UDP等)提供安全保护。
RFC2401规定了IPsec的基本结构,它利用认证头标(AH)和封装化安全净荷(ESP)来实现数据的认证和加密。前者用来实现数据的完整性,后者用来实现数据的机密性。同时对数据的传输规定了两种模式:传送模式和通道模式。在传送模式中,IP头与上层协议头之间嵌入一个新的IPsec头(AH或ESP);在通道模式中,要保护的整个IP包都封装到另一个IP数据包里,同时在外部与内部IP头之间嵌入一个新的IPsec头。两种IPsec头都可以同时以传送模式和通道模式工作。
IPsec中有两个重要的数据库,分别是安全联盟数据库SAD和安全策略数据库SPD。SAD中的每一个元组是一个安全联盟SA,它是构成IPsec的基础,是两个通信实体经协商建立起来的一种协定,它决定了用来保护数据包安全的IPsec协议、转码方式、密钥以及密钥的有效存在时间等。SPD中的每一个元组是一条策略,策略是指应用于数据包的安全服务以及如何对数据包进行处理,是人机之间的安全接口,包括策略定义、表示、管理以及策略与IPsec系统各组件间的交互。两个数据库联合使用。对于发送方,每个SPD的元组都有指针指向相关的SAD的元组。如果一个SPD的元组没有指向适合发送包的SA,那么将会创建新的SA或SA束,并将SPD的元组和新的SA元组链接起来。对于接收方,通过包头信息包含的IP目的地址、IP安全协议类型(AH或ESP)和SPI(安全参数索引)在SAD中查找对应的SA。SA中其他字段为序列号、序列号溢出标志、Anti-replay窗口、AH认证算法和密钥、ESP加密算法和密钥及初始化矩阵、ESP认证算法及密钥等等。
因特网密钥交换(IKE)是IPsec最为重要的部分,在用IPsec保护一个IP包之前,必须先建立一个SA,IKE用于动态建立SA。IKE代表IPsec对SA进行协商,并对SAD数据库进行填充。RFC2409所描述的IKE是一个混合型的协议,它建立在由Internet安全联盟和密钥管理协议(ISAKMP)定义的一个框架上,见RFC2408。IKE使用了两个阶段的ISAKMP。第一阶段建立IKE安全联盟,第二阶段利用这个既定的安全联盟,为IPsec协商具体的安全联盟。
IPsec进程本身就是用来实现整个IPsec的守护进程,用户可以通过和这个进程打交道来管理自己的安全策略,实现适合自己需要的网络安全。当然,每个开发组织的源代码不一样,用户管理的界面和方式就不一样,但是它们都必须遵守RFC的规范,最终的目的都应该是差不多的。通常,IPsec的源代码是嵌入到内核IP层源代码中的,也有人提出在其层次在IP之上,TCP之下,两种方式都可以。
3.虚拟专用网
虚拟专用网(VPN)是专用网的扩展,它的通信两端之间通过的是公用传输介质如Internet。VPN允许你在两台计算机之间通过公共传输介质通信,就好像是自己的端到端的专用网一样。为了模拟端到端的专用网,数据必须被加上一个路由信息头,以便能够在Internet上找到正确的路径;同时为了数据的安全,数据包在传输过程中必须被加密。图2说明了VPN的逻辑概念,VPN连接使用户可以在家工作或者在出差的旅途中利用公用介质如Internet来和公司总部的机器连接。从用户的角度来看,VPN是一个VPN的客户端与服务器端的端到端的的连接,Internet等公共介质的网络结构是无关紧要的,因为从逻辑上看,数据是在专用网上传输。VPN也可以使公司在地域上分割的各个分部之间通过Internet传输信息,信息必须在一个安全的通道中传播,从逻辑上看就像一个WAN上的专用网。
VPN的一个重要的特征就是安全性,通过VPN通信的两台主机必须通过一个安全的通道(tunnel)。这个tunnel是逻辑上的,并不真正存在,因此通过数据的加密和认证使得数据包即使被截获也不容易破译。如何实现这一点,以前的VPN很多的采用SSL等方法对数据进行加密,但是缺点是配置安全策略不够灵活,另外,需要在高层协议上开发大量的代码,唯一的优点就是能够对DOS(服务拒绝)攻击由较好的防御。
4.基于IPsec的虚拟专用网
当IPsec用于路由器时,就可以建立虚拟专用网。在路由器的连内部网的一端,如图2所示,是一个受保护的网络,另一端则是不安全的公共网络。两个这样的路由器建立起一个安全通道,通信就可以通过这个通道从一个本地的保护子网发送到一个远程的保护子网,这就形成了一个VPN。
在这个VPN中,每一个具有IPsec的路由器都是一个网络聚合点,试图对VPN进行通信分析将会失败。目的地是VPN的所有通信都经过路由器上的SA来定义加密或认证的算法和密钥等参数,即从VPN的一个路由器出来的数据包只要符合安全策略,就会用相应的SA来加密或认证(加上AH或ESP报头)。整个安全传输过程由IKE控制,密钥自动生成,保护子网内的用户根本不需要考虑安全,所有的加密和解密由两端的路由器全权代理。
我们来看看数据包的处理过程,先看看数据包的外出处理:
(1)源主机TCP层通过调用ip_output()函数,调用IP层,令其发送一个数据包给路由器;
(2)路由器针对目的主机的数据包,查询策略引擎,根据安全策略强制加上AH或ESP头;
(3)IKE处理,对没有SA的安全策略建立新的SA;
(4)SA处理,增加序列号字段;
(5)通道模式处理,通常VPN用的是通道模式,因此加上一个额外的IP头;
(6)路由器发送这个安全的数据包。
接收方的处理过程:
(1)另一端的路由器收到这个包,剥去额外的IP头,并利用数据包的AH或ESP头调用IPsec层;
(2)IPsec层从AH或ESP头摘录出SPI,从IP头中选出源和目的地址及协议;
(3)IPsec层用以上的参数从SAD中取出所需的SA,如果没找到,就丢弃这个包;
(4)SAD返回SA,IPsec将会根据AH和ESP定义的规则对这个包进行处理;
(5)验证和这个包对应的策略,进而决定IPsec处理的应用是否正确,策略是通过SA中的指针获得或利用选择符查询SPD得来;
(6)如果验证正确,那么解密并把这个包转发到真正的目的主机。
5.小结
IPsec的提出使得VPN有了更好的解决方案,这是因为在网络层就进行安全服务,使得密钥协商的开销被大大削减了,这是由于多种传送协议和应用程序可共享由网络层提供的密钥管理结构(IKE)。其次,假如网络安全服务在较低层实现,那么需要改动的应用程序就要少得多。IPsec是目前唯一一种能为任何形式的Internet通信提供安全保护的协议,因此,可以预见,未来的VPN实现方案将会更多的利用IPsec。