一、IPSec 协议简介

1. IPSec 协议

      IPSec 是一系列网络安全协议的总称,它是由IETF(Internet Engineering Task

Force,Internet 工程任务组)开发的,可为通讯双方提供访问控制、无连接的完整

性、数据来源认证、反重放、加密以及对数据流分类加密等服务。

IPSec 是网络层的安全机制。通过对网络层包信息的保护,上层应用程序即使没有

实现安全性,也能够自动从网络层提供的安全性中获益。这打消了人们对×××

(Virtual Private Network,虚拟专用网络)安全性的顾虑,使得××× 得以广泛应用。

2、安全特性  

    IPSec的安全特性主要有:

  不可否认性

  "不可否认性"可以证实消息发送方是唯一可能的发送者,发送者不能否认发送过

消息。"不可否认性"是采用公钥技术的一个特征,当使用公钥技术时,发送方用私钥

产生一个数字签名随消息一起发送,接收方用发送者的公钥来验证数字签名。由于

在理论上只有发送者才唯一拥有私钥,也只有发送者才可能产生该数字签名,所以

只要数字签名通过验证,发送者就不能否认曾发送过该消息。但"不可否认性"不是基

于认证的共享密钥技术的特征,因为在基于认证的共享密钥技术中,发送方和接收

方掌握相同的密钥。

  抗重播性

  "抗重播"确保每个IP包的唯一性,保证信息万一被截取复制后,不能再被重新利

用、重新传输回目的地址。该特性可以防止***者截取破译信息后,再用相同的信

息包冒取非法访问权(即使这种冒取行为发生在数月之后)。

  数据完整性

  防止传输过程中数据被篡改,确保发出数据和接收数据的一致性。IPSec利用

Hash函数为每个数据包产生一个加密检查和,接收方在打开包前先计算检查和,若

包遭篡改导致检查和不相符,数据包即被丢弃。

  数据可靠性(加密)

  在传输前,对数据进行加密,可以保证在传输过程中,即使数据包遭截取,信

息也无法被读。该特性在IPSec中为可选项,与IPSec策略的具体设置相关。

  认证

  数据源发送信任状,由接收方验证信任状的合法性,只有通过认证的系统才可

以建立通信连接。

3、预置共享密钥认证  

      IPSec可以使用预置共享密钥进行认证。预共享意味着通信双方必须在IPSec策略

设置中就共享的密钥达成一致。之后在安全协商过程中,信息在传输前使用共享密

钥加密,接收端使用同样的密钥解密,如果接收方能够解密,即被认为可以通过认

证。但在Windows 2000 IPSec策略中,这种认证方式被认为不够安全而一般不推荐使

用。

4、公钥加密  

       IPSec的公钥加密用于身份认证和密钥交换。公钥加密,也被称为"不对称加密

法",即加解密过程需要两把不同的密钥,一把用来产生数字签名和加密数据,另一

把用来验证数字签名和对数据进行解密。

  使用公钥加密法,每个用户拥有一个密钥对,其中私钥仅为其个人所知,公钥

则可分发给任意需要与之进行加密通信的人。例如:A想要发送加密信息给B,则A

需要用B的公钥加密信息,之后只有B才能用他的私钥对该加密信息进行解密。虽然

密钥对中两把钥匙彼此相关,但要想从其中一把来推导出另一把,以目前计算机的

运算能力来看,这种做法几乎完全不现实。因此,在这种加密法中,公钥可以广为

分发,而私钥则需要仔细地妥善保管。

5、Hash函数和数据完整性  

       Hash信息验证码HMAC(Hash message authentication codes)验证接收消息和发送

消息的完全一致性(完整性)。这在数据交换中非常关键,尤其当传输媒介如公共

网络中不提供安全保证时更显其重要性。

  HMAC结合hash算法和共享密钥提供完整性。Hash散列通常也被当成是数字签

名,但这种说法不够准确,两者的区别在于:Hash散列使用共享密钥,而数字签名

基于公钥技术。hash算法也称为消息摘要或单向转换。称它为单向转换是因为:

  1)双方必须在通信的两个端头处各自执行Hash函数计算;

  2)使用Hash函数很容易从消息计算出消息摘要,但其逆向反演过程以目前计算

机的运算能力几乎不可实现。

  Hash散列本身就是所谓加密检查和或消息完整性编码MIC(Message Integrity

Code),通信双方必须各自执行函数计算来验证消息。举例来说,发送方首先使用

HMAC算法和共享密钥计算消息检查和,然后将计算结果A封装进数据包中一起发

送;接收方再对所接收的消息执行HMAC计算得出结果B,并将B与A进行比较。如

果消息在传输中遭篡改致使B与A不一致,接收方丢弃该数据包。

  有两种最常用的hash函数:

  HMAC-MD5 MD5(消息摘要5)基于RFC1321。MD5对MD4做了改进,计算速

度比MD4稍慢,但安全性能得到了进一步改善。MD5在计算中使用了64个32位常

数,最终生成一个128位的完整性检查和。

  HMAC-SHA 安全Hash算法定义在NIST FIPS 180-1,其算法以MD5为原型。

SHA在计算中使用了79个32位常数,最终产生一个160位完整性检查和。SHA检查和

长度比MD5更长,因此安全性也更高。

6、加密和数据可靠性  

        IPSec使用的数据加密算法是DES--Data Encryption Standard(数据加密标准)。

DES密钥长度为56位,在形式上是一个64位数。DES以64位(8字节)为分组对数据

加密,每64位明文,经过16轮置换生成64位密文,其中每字节有1位用于奇偶校验,

所以实际有效密钥长度是56位。 IPSec还支持3DES算法,3DES可提供更高的安全

性,但相应地,计算速度更慢。

7、数据包结构  

       AH报头插在IP报头之后,TCP,UDP,或者ICMP等上层协议报头之前。一般AH

为整个数据包提供完整性检查,但如果IP报头中包含"生存期(Time To Live)"或"服

务类型(Type of Service)"等值可变字段,则在进行完整性检查时应将这些值可变字

段去除。

一、ESP协议结构
  ESP(Encapsulating Security Payload)为IP数据包提供完整性检查、认证和加

密,可以看作是"超级 AH", 因为它提供机密性并可防止篡改。ESP服务依据建立的

安全关联(SA)是可选的。然而,也有一些限制:

  完整性检查和认证一起进行。

  仅当与完整性检查和认证一起时,"重播(Replay)"保护才是可选的。

  "重播"保护只能由接收方选择。

  ESP的加密服务是可选的,但如果启用加密,则也就同时选择了完整性检查和认

证。因为如果仅使用加密,***者就可能伪造包以发动密码分析***。

  ESP可以单独使用,也可以和AH结合使用。一般ESP不对整个数据包加密,而是

只加密IP包的有效载荷部分,不包括IP头。但在端对端的隧道通信中,ESP需要对整

个数据包加密。

  ESP报头插在IP报头之后,TCP或UDP等传输层协议报头之前。

  ESP报头字段包括:

  Security Parameters Index (SPI,安全参数索引):为数据包识别安全关联。

  Sequence Number(序列号):从1开始的32位单增序列号,不允许重复,唯一地

标识了每一个发送数据包,为安全关联提供反重播保护。接收端校验序列号为该字

段值的数据包是否已经被接收过,若是,则拒收该数据包。

        ESP报尾字段包括:

  Padding(扩展位):0-255个字节。DH算法要求数据长度(以位为单位)模512

为448,若应用数据长度不足,则用扩展位填充。

  Padding Length(扩展位长度):接收端根据该字段长度去除数据中扩展位。

  Next Header(下一个报头):识别下一个使用IP协议号的报头,如TCP或UDP。

  ESP认证报尾字段:

  Authentication Data(AD,认证数据): 包含完整性检查和。完整性检查部分包

括ESP报头、有效载荷(应用程序数据)和ESP报尾。

  ESP报头的位置在IP报头之后,TCP,UDP,或者ICMP等传输层协议报头之前。

如果已经有其他IPSec协议使用,则ESP报头应插在其他任何IPSec协议报头之前。

ESP认证报尾的完整性检查部分包括ESP报头、传输层协议报头,应用数据和ESP报

尾,但不包括IP报头,因此ESP不能保证IP报头不被篡改。ESP加密部分包括上层传

输协议信息、数据和ESP报尾。

二、ESP隧道模式和AH隧道模式
  以上介绍的是传输模式下的AH协议和ESP协议,ESP隧道模式和AH隧道模式与

传输模式略有不同。

  在隧道模式下,整个原数据包被当作有效载荷封装了起来,外面附上新的IP报

头。其中"内部"IP报头(原IP报头)指定最终的信源和信宿地址,而"外部"IP报头

(新IP报头)中包含的常常是做中间处理的安全网关地址。

  与传输模式不同,在隧道模式中,原IP地址被当作有效载荷的一部分受到IPSec

的安全保护,另外,通过对数据加密,还可以将数据包目的地址隐藏起来,这样更

有助于保护端对端隧道通信中数据的安全性。

       AH隧道模式为整个数据包提供完整性检查和认证,认证功能优于ESP。但在隧

道技术中,AH协议很少单独实现,通常与ESP协议组合使用。

8、IPSec 对报文的处理过程     

      IPSec 对报文的处理过程如下(以AH 协议为例):    

      (1) 对报文添加认证头:从IPSec 队列中读出IP 模块送来的IP 报文,根据配置选择

的协议模式(传输或是隧道模式)对报文添加AH 头,再由IP 层转发。

      (2) 对报文进行认证后解去认证头:IP 层收到IP 报文经解析是本机地址,并且协

议号为51,则查找相应的协议开关表项,调用相应的输入处理函数。此处理函数对

报文进行认证和原来的认证值比较,若相等则去掉添加的AH 头,还原出原始的IP 报

文再调用IP 输入流程进行处理;否则此报文被丢弃。

9、IPSec 的配置包括:

      1、创建加密访问控制列表 ;   

      2、定义安全提议;

      3、选择加密算法与认证算法;

      4、创建安全策略;

            (1)手工创建安全策略;

            (2)用IKE创建安全策略联盟;

      5、在接口上应用安全策略组。

二、案例一(静态配置模式)

      拓扑图:

 

        防火墙:

 

        R1:

 

 

 

 

        R2:

 

 

        R3:

 

 

        测试结果:

 

三、案例二(野蛮模式)

待续。。。。。。。