一、×××概述
×××技术起初是为了解决明文数据在网络上传输带来的安全隐患而产生的。TCP/IP协议族中的很多协议都采用明文传输,如telnet、ftp、tftp等。一些***可能为了获取非法利益,通过诸如窃听、伪装等***方式截获明文数据,使企业或者个人蒙受损失。
×××技术可以从某种程度上解决该问题。例如,它可以对公网上传输的数据进行加密,即使***通过窃听工具截获到数据,也无法了解数据信息的含义。×××也可以实现数据传输双方的身份验证,避免***伪装成网络中的合法用户***网络资源。

1、×××的定义
×××(virtual private network,虚拟专用网)就是在两个网络实体之间建立的一种受保护的连接,这两个实体可以通过点到点的链路直接相连,但通常情况下他们会相隔较远的距离。
ipsec***原理与配置_第1张图片
×××技术的作用:
通过使用加密技术防止数据被窃听。
通过数据完整性验证防止数据被破坏、篡改。
通过认证机制实现通信双方身份确认,来防止通信数据被截获和回放。
此外,×××技术还定义了:
何种流量需要被保护。
数据被保护的机制。
数据的封装过程。
实际工作环境中的×××解决方案不一定包含上述所有功能,这要由具体的环境需求和实现方式决定。而且很多企业可能采用不止一种的×××解决方案。

2、×××的连接模式
×××技术有两种基本的连接模式:隧道模式和传输模式。这两种模式实际上定义了两台实体设备之间传输数据时所采用的不同的封装过程。
1)传输模式
传输模式一个最显著的特点就是:在整个×××的传输过程中,IP包头并没有被封装进去,这就意味着从源端到目的端数据始终使用原有的IP地址进行通信。而传输的实际数据载荷被封装在×××报文中。对于大多数×××传输而言,×××的报文封装过程就是数据的加密过程,因此,***者截获数据后将无法破解数据内容,但却可以清晰地知道通信双方的地址信息。

ipsec***原理与配置_第2张图片
由于传输模式封装结构相对简单(每个数据报文较隧道模式封装结构节省20字节),因此传输效率较高,多用于通信双方在同一个局域网内的情况。例如:网络管理员通过网管主机登录公司内网的服务器进行维护管理,就可以选用传输模式×××对其管理流量进行加密。

2)隧道模式
隧道模式中,×××设备将整个三层数据报文封装在×××数据内,再为封装后的数据报文添加新的IP包头。由于新IP包头中封装的是×××设备的ip地址信息,所以当***者截获数据后,不但无法了解实际载荷数据的内容,同时也无法知道实际通信双方的地址信息。
ipsec***原理与配置_第3张图片
由于隧道模式的×××在安全性和灵活性方面具有很大的优势,在企业环境中应用十分广泛,总公司和分公司跨广域网的通信、移动用户在公网访问公司内部资源等很多情况,都会应用隧道模式的×××对数据传输进行加密。

3、×××的类型
通常情况下,×××的类型分为站点到站点×××和远程访问×××。
1)站点到站点×××
站点到站点×××就是通过隧道模式在×××网关之间保护两个或者更多的站点之间的流量,站点间的流量通常是指局域网之间(L2L)的通信流量。L2L的×××多用于总公司与分公司、分公司之间在公网上传输重要业务数据。

ipsec***原理与配置_第4张图片
对于两个局域网的终端用户来说,在×××网关中间的网络是透明的,就好像通过一台路由器连接的两个局域网。总公司的终端设备通过×××连接访问分公司的网络资源。数据包封装的地址都是公司内网地址(一般为私有地址),而×××网关对数据包进行的再次封装过程,客户端是全然不知的。

2)远程访问×××
远程访问×××通常用于单用户设备与×××网关之间通信连接,单用户设备一般为一台pc或小型办公网络等。×××连接的一端为PC,可能会让很多人误解远程访问×××使用传输模式,但因为该种×××往往也是从公网传输关键数据,而且单一用户更容易成为***的***对象,所以远程访问×××对于安全性要求较高,更适用于隧道模式。
要想实现隧道模式的通信,就需要给远程客户端分配两个IP地址:一个是它自己的NIC地址,另一个是内网地址。也就是说远程客户端在×××建立过程中同时充当×××网关(使用NIC地址)和终端用户(使用内网地址)。

ipsec***原理与配置_第5张图片
当远端的移动用户与总公司的网络实现远程访问×××连接后,就好像成为总公司局域网中的一个普通用户,不仅使用总公司网段内的地址访问公司资源,而且因为其使用隧道模式,真是的ip地址被隐藏起来,实际公网通信的一段链路对于远端移动用户而言就像是透明的。

二、加密算法
加密就是一种将数据转换成另外一种形式的过程,如果不了解用于加密的算法,解密几乎是不可能的。举例而言,A给B发信息内容为”I LOVE YOU”,由于担心C从中间截获,于是,A与B协商了一种简单的加密方法:把所有的字母按照26个字母顺序+3,”I LOVE YOU”就变成了”L ORYH BYX”,即使C截获了数据也无法得知信息的真正含义。这里“+3”就可以理解为一种简单的加密算法。
实际×××设备所使用的算法是相当复杂的,一般会涉及一些较为复杂的数学算法,利用这些算法可以实现数据加密、数据完整性验证、身份验证等×××的基本功能。一般来说,可以将这些加密算法分为两大类:对称加密算法和非对称加密算法。
1、对称加密算法
对称加密算法使用同一秘钥对信息提供安全的保护。假设对称加密算法的秘钥为“K”,客户端传输的明文数据为“M”,×××网关加密后的数据为“C”,而E和D为加密和解密函数,则数据加密过程如下:
ipsec***原理与配置_第6张图片
发送发和接收方共享秘钥“K”,也就是说加密和解密使用同一把钥匙。
发送方的×××网关通过加密函数E将明文数据M加密成为密文数据C。
接收方的×××网关通过解密函数D将数据还原为明文数据M。

目前常见的对称加密算法有DES、3DES、AES等。
1)DES算法
DES加密算法曾经在×××领域应用很广,属IBM的研发产品,其秘钥长度为4位,其中8位用于奇偶校验,所以实际有效长度为56位。虽然该算法目前还没找到更好的方法破解,但是通过暴力破解已经可以在较短时间内攻破DES算法,所以在实际工程实施过程中(如果没有设备硬件性能支持)已经不建议使用该种算法。
2)3DES算法
NIST在1999年研发了3DES算法,理论上3DES算法是DES算法的增强版本,因为3DES使用了三个阶段的DES,即同时使用了三个不同的56位秘钥,所以相当于产生了一个168位的有效秘钥长度。这种级别的秘钥目前还没有计算机有能力在短时间内破解,而且其执行效率虽然在软件环境中比较慢,但在硬件环境中并不明显。
3)AES算法
3DES算法虽然目前为止是安全的,但随着计算机硬件的更新,总有一天要被攻破,NIST在2002年研发了AES算法欲取代DES和3DES算法。该算法比3DES算法更安全,它支持128、192和256位秘钥长度,有效的秘钥长度可达上千位。更重要的是,AES算法采用了更为高效的编写方法,对CPU占用率较少,所以诸如IPSEC ×××等时机工程的实施过程中趋向于使用AES来提供更好的加密功能。

2、非对称加密算法
1)算法的原理
非对称几秒算法使用公钥和私钥两个不同的秘钥进行加密和解密。用一个秘钥加密的数据仅能被另一个秘钥解密,且不能从一个秘钥推出另一个秘钥。假设接收方的公钥和私钥分别为P和Q,客户端传输的明文数据为M,×××网关加密后的数据为C,而D、E分别为加密和解密函数,数据加密过程如下:
ipsec***原理与配置_第7张图片
通信双方交换公钥(主要是把接收方的公钥传输给发送方)。
发送方的×××网关通过公钥将明文数据M加密成为密文数据C。
接收方的×××网关通过自己的私钥解密数据。整个过程私钥始终没有在网络中传输。

2)算法的优、缺点
非对称加密算法的最大优势在于其安全性。目前为止,还没有任何一种方法可以在合理的时间范围内攻破该种算法。为了方便理解,在这里举例说明。
假如有两个数字分别为25169和29663,如果要求将两个数相乘,可以轻松地得出答案:746588047。但如果给出的是74588047,要求猜出该数字是由哪两个数相乘得出的,就需要花费很长时间才可能得出答案。如果数字很大,那么可能花费一生的时间也难以得出答案,这就是非对称加密算法的安全性所在。更重要的是,私钥永远不可能被任何其他设备得到。
非对称加密算法也不是完美无缺的,由于其计算过程复杂,它的计算效率要比对称加密算法低很多(大约慢1500倍)。

3)DH算法
常用的非对称加密算法有:RSA(使用三位数学家名字的首字母来命名)、DSA(digital signature algorithm,数字签名算法)、DH(diffie-hellman,迪菲赫尔曼)。前两种常用于验证功能,而DH一般被用来实现ipsec中的internet秘钥交换(IKE)协议。
DH算法的原理与传统意义上的非对称加密算法有优点区别:通信双方交换公钥后,会用自己的秘钥和对方的公钥通过DH算法计算出一个共享秘钥,然后双方会使用这个共享秘钥加密传输数据。从算法原理看,可以说DH算法已经将对称加密算法和非对称加密算法综合在一起。
DH算法支持可变的秘钥长度,由于公钥和私钥的长度不同,因此通过DH算法计算出的共享秘钥的有效长度也就不同。这些都是通过DH算法的秘钥组定义的。Cisco的路由器只支持DH组1、2和5。其中DH组1的有效秘钥长度为768,DH组2的有效秘钥长度为1024,DH组5的有效秘钥长度为1536。秘钥的有效长度越长,安全性也就越强。同时CPU的资源占用率也就越高。因此,选择合适的DH组要从网络的安全需求和设备本身的性能两个方面考虑。

3、秘钥交换
在探讨加密算法的过程中,忽略了一个关键的问题:秘钥的交换。许多有经验的网络工程师使用对称加密算法加密数据时,都会担心秘钥如何实现安全共享。
一种解决方案就是带外共享,即通信双方通过一张磁盘、一张纸或打一个电话方式实现秘钥的共享。这种方案最大的缺陷是实施过程花费的时间较长。如果管理的×××设备数量较多,或者公司对于秘钥的安全性要求较高,需要一小时更换一次秘钥,这种方案基本就不可能实施了。
另一种解决方案就是带内共享。即通过telnet、ssh等连接方式通过网络传输秘钥。这种方法可以提高共享秘钥的效率,但前提是必须保证传输秘钥的通道绝对安全,而传输秘钥本身就是为了建立一条安全的通道,这似乎陷入一种死循环中。
其实,解决这个问题并不困难,可以通过非对称加密算法(如前面提到的DH算法)加密对称加密算法的秘钥,在用对称加密算法加密实际要传输的数据。如果公司需要一小时更换一次秘钥,只需让非对称加密算法一小时重新计算一次即可,而且由于非对称加密算法的私钥不会在网络上传输,其安全性也可得到保障。
ipsec***原理与配置_第8张图片

三、数据报文验证
数据报文验证包括两个方面:数据来源验证(身份验证)和报文完整性验证。
1、HMAC功能实现验证功能
在×××领域,对数据进行来源和完整性验证通常是借助散列算法实现的,HMAC(hash-based message authentication codes,散列消息代码)功能专门开发用来处理数据包相关的验证问题,它使用一个共享的对称秘钥来产生固定的输出结果——数字签名。HMAC属于单向散列算法(hash算法)的一个子集,区别于前面讲解的加密算法,散列算法是不可逆的,即加密后的数据是无法还原的。
传统意义上的散列函数对于保障数据传输的安全性存在缺陷,即网上的窃听者可以截获传输的数据,然后篡改数据内容,并通过散列算法得到固定的输出,这样接收方就不可能知道有人篡改过数据。而HMAC功能让共享秘钥成为散列函数中的一个变量,通过计算得到固定的输出——数字签名,这样及时窃听者截获数据,由于没有共享秘钥,他无法再篡改后得到正确的数字签名,所以HMAC可以防篡改(完整性验证)。同样,由于共享秘钥只有真正的通信双方具有,所以HMAC功能也可以实现身份验证。
ipsec***原理与配置_第9张图片

HMAC算法的原理如下:
1)双方共享执行hash算法的秘钥key。
2)路由器A的用户数据与共享秘钥key通过hash算法得到数字签名。
3)路由器A将数字签名和用户数据一同传输给路由器B。
4)路由器B执行相同的算法过程得到数字签名。
5)路由器B比对数字签名是否一致

如果数据在传输过程中被篡改或损坏,接收方通过HASH算法计算出来的数字签名就会和发送方的数字签名不同,于是便可以得知数据的内容在传输过程中被篡改。同理,如果窃听者想冒充一个通信方,他虽然可以伪造通信方的身份信息,但绝对无法伪造身份信息和共享秘钥计算后的数字签名。

2、MD5和SHA
MD5和SHA是HMAC的两种常用算法,在包括×××的很多领域得到广泛应用。
MD5(message-digest algorithm 5,信息-摘要算法)在RFC1321中有明确规定,它创建了一个128位的签名,是目前HMAC功能中应用最为广泛的一种算法。例如:以前我们讲过的RIPV2,OSPF等很多路由选择协议都使用该算法做验证。MD5执行速度较快,但其安全性相对SHA稍差一点。
SHA(secure hash algorithm,安全散列算法)是由NIST(美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)直属美国商务部)开发的,且已成为美国国家标准,一般成为SHA-1,它可以产生160位的签名(20字节的长度)。
目前,已有人证明不同的输入数值通过MD5计算可以得到相同的数字签名,说明MD5的签名可能具有一定程度的虚假性。SHA也出现类似的问题,并且有人宣称数字签名理论上是可以伪造的。因为存在这种安全隐患,现在已经开发了SHA-256和SHA-512等(有时统称为SHA-2),它们具有更长的签名长度,对于目前的计算机水平来说,可以消除上述安全隐患。

四、IPSEC ×××
IPSEC技术实现×××是目前较为广泛的一种应用,本节将探讨IPSEC的建立过程及配置方法,实际工作中可能会遇到多个厂家的设备,有时需要网络工程师分析分体、排除故障,因此,除了查阅各厂商的专业文档外,了解×××建立的各个阶段也是尤为重要的。
1、IPSec连接
对等体之间建立IPSec ×××的连接需要三个步骤。
1)流量触发IPSec
一般来说,IPSec建立过程是由对等体之间发送的流量触发的,一旦有×××流量经过×××网关,连接过程便开始建立了。当然,手工配置也可以实现这一过程。在配置设备实现此步骤前,网络工程师需要明确哪些流量需要被“保护”。

2)建立管理连接
IPSec使用ISAKMP/IKE阶段1来构建一个安全的管理连结。这里需要注意的是,这个管理连接只是一个准备工作,它不被用来传输实际的数据。在配置设备实现此步骤前,网络工程师需要明确设备如何实现验证,使用何种加密及认证算法,使用哪种DH组等问题。

3)建立数据连接
IPSec基于安全的管理连接协商建立安全的数据连接,而ISAKMP/IKE阶段2就是用来完成这个任务的,数据连接用于传输真正的用户数据。在配置设备实现此步骤前,网络工程师需要明确使用何种安全协议,针对具体的安全协议应使用加密或验证算法,以及数据的传输模式(隧道模式或传输模式)等问题。
经过IPSec建立的三部曲后,×××流量便可以按照协商的结果被加密/解密了。但是×××连接并不是一次性的,无论是管理连接还是数据连接都有一个生存周期与之关联,一旦到期连接便会被终止。如果需要继续传输×××数据,连接需要重新被构建,这种设计主要是出于安全性的考虑的。
ipsec***原理与配置_第10张图片

2、ISAKMP/IKE阶段1
ISAKMP描述了秘钥管理的架构,它定义了消息的格式和秘钥交换协议的机制,以及构建连接的协商过程。而IKE是一个混合型的协议,它定义了秘钥的产生、共享和管理。IKE使用UDP端口500,一般来说,ISAKMP和IKE关键字可互换使用。
ISAKMP/IKE阶段1的交换过程有两个模式:主模式和积极模式。积极模式比主模式快,主模式比积极模式安全。
无论×××的类型是站点到站点还是远程访问,都需要完成三个任务。
协商采用何种方式建立管理连接。
ipsec***原理与配置_第11张图片
ipsec***原理与配置_第12张图片

通过DH算法共享秘钥信息。
ipsec***原理与配置_第13张图片
对等体彼此进行身份验证。
ipsec***原理与配置_第14张图片
在主模式中,这三个任务是通过六个数据报文完成的:前两个数据包用于协商对等体间的管理连接使用何种安全策略(交换ISAKMP/IKEc传输集);中间的两个数据包通过DH算法产生并交换加密算法和HMAC功能所需的秘钥,最后两个数据包使用预共享秘钥等方式执行对等体间的身份验证。这里需要注意的是,前四个报文为明文传输,从第5个数据报文开始为密文传输,而前四个数据包通过各种算法最终产生的秘钥用于第5、地6个数据包及后续数据的加密。

ISAKMP/IKE阶段1建立过程:
1)交换ISAKMP/IKE传输集
ISAKMP/IKE传输集就是一组用来保护管理连接的安全措施,有些书籍称之为IKE策略或ISAKMP策略,它主要包括以下几个方面。
加密算法:DES,3DES或AES。
HMAC功能:MD5或SHA-1。
设备验证的类型:预共享秘钥(也可以使用RSA签名等方法)。
Diffie-Hellman秘钥组:cisco支持1、2,、5、7(cisco的路由器不支持秘钥组7)。
管理连接的生存周期。

设备可能会有不止一个传输集,如果设备发起来接,它会将传输集列表(包括所有传输集)发送到远端对等体设备进行依次对比,直到找到匹配的结果。如果对比所有传输集后没有发现匹配的传输集,管理连接将无法建立,ipsec连接失败。例如,两端设备都只有一个传输集,且一端配置DES加密算法,另一端配置了3DES加密算法,就会导致IPSEC建立失败。如果给其另一端多配置一个传输集使用DES算法,对等体会自动找到与之匹配的传输集,管理连接便会建立起来。
如果使用cisco产品实现×××连接,在ISAKMP/IKE传输集中除了生存周期,其他项必须匹配才能建立连接。如果对等图之间的生存周期不同,对等体会使用双方生存周期数值较小的一个。这同样是ipsec的规则。但有些厂商没有遵循这一规则,因此如果遇到cisco与其他厂商设备构建ipsec连接时,应注意确保ISAKMP/IKE传输集中所有参数的匹配。

2)通过DH算法实现秘钥交换
第一步只是协商管理连接的安全策略,而共享秘钥的产生与交换就要通过Diffie-Hellman来实现。
DH算法属于非对称加密算法,因此它将产生公钥和私钥对的组合,且彼此共享公钥。×××对等体用对方的公钥和自己的私钥通过一种功能运算产生一个安全的共享秘钥,即使有人截获数据,也会因为没有私钥而无法对出共享秘钥。

3)实现设备之间的身份验证
设备身份验证时最常使用的方法就是预共享秘钥,即在对等体之间通过带外的方式共享秘钥,并存储在设备的本地。设备验证的过程可以通过加密算法或HMAC功能两种方法实现,而加密算法很少用于身份验证,多数情况都会通过HMAC功能实现。