IPSec 协议不是一个单独的协议,它给出了应用于 IP 层上网络数据安全的一整套体系结构,包括网络认证协议 Authentication Header AH )、封装安全载荷协议 Encapsulating Security Payload ESP )、密钥管理协议 Internet Key Exchange IKE )和用于网络认证及加密的一些算法等。 IPSec 规定了如何在对等层之间选择安全协议、确定安全算法和密钥交换,向上提供了访问控制、数据源认证、数据加密等网络安全服务。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

  一、安全特性

   IPSec 的安全特性主要有:

   · 不可否认性 " 不可否认性 " 可以证实消息发送方是唯一可能的发送者,发送者不能否认发送过消息。 " 不可否认性 " 是采用公钥技术的一个特征,当使用公钥技术时,发送方用私钥产生一个数字签名随消息一起发送,接收方用发送者的公钥来验证数字签名。由于在理论上只有发送者才唯一拥有私钥,也只有发送者才可能产生该数字签名,所以只要数字签名通过验证,发送者就不能否认曾发送过该消息。但 " 不可否认性 " 不是基于认证的共享密钥技术的特征,因为在基于认证的共享密钥技术中,发送方和接收方掌握相同的密钥。

   · 反重播性 " 反重播 " 确保每个 IP 包的唯一性,保证信息万一被截取复制后,不能再被重新利用、重新传输回目的地址。该特性可以防止***者截取破译信息后,再用相同的信息包冒取非法访问权(即使这种冒取行为发生在数月之后)。

   · 数据完整性 防止传输过程中数据被篡改,确保发出数据和接收数据的一致性。 IPSec 利用 Hash 函数为每个数据包产生一个加密检查和,接收方在打开包前先计算检查和,若包遭篡改导致检查和不相符,数据包即被丢弃。

   · 数据可靠性(加密) 在传输前,对数据进行加密,可以保证在传输过程中,即使数据包遭截取,信息也无法被读。该特性在 IPSec 中为可选项,与 IPSec 策略的具体设置相关。

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

  二、基于电子证书的公钥认证

  一个架构良好的公钥体系,在信任状的传递中不造成任何信息外泄,能解决很多安全问题。 IPSec 与特定的公钥体系相结合,可以提供基于电子证书的认证。公钥证书认证在 Windows 2000 中,适用于对非 Windows 2000 主机、独立主机,非信任域成员的客户机、或者不运行 Kerberos v5 认证协议的主机进行身份认证。

  三、预置共享密钥认证

   IPSec 也可以使用预置共享密钥进行认证。预共享意味着通信双方必须在 IPSec 策略设置中就共享的密钥达成一致。之后在安全协商过程中,信息在传输前使用共享密钥加密,接收端使用同样的密钥解密,如果接收方能够解密,即被认为可以通过认证。但在 Windows 2000 IPSec 策略中,这种认证方式被认为不够安全而一般不推荐使用。

  四、公钥加密

   IPSec 的公钥加密用于身份认证和密钥交换。公钥加密,也被称为 " 不对称加密法 " ,即加解密过程需要两把不同的密钥,一把用来产生数字签名和加密数据,另一把用来验证数字签名和对数据进行解密。

  使用公钥加密法,每个用户拥有一个密钥对,其中私钥仅为其个人所知,公钥则可分发给任意需要与之进行加密通信的人。例如: A 想要发送加密信息给 B ,则 A 需要用 B 的公钥加密信息,之后只有 B 才能用他的私钥对该加密信息进行解密。虽然密钥对中两把钥匙彼此相关,但要想从其中一把来推导出另一把,以目前计算机的运算能力来看,这种做法几乎完全不现实。因此,在这种加密法中,公钥可以广为分发,而私钥则需要仔细地妥善保管。

  五、 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 更长,因此安全性也更高。

  六、加密和数据可靠性

   IPSec 使用的数据加密算法是 DES--Data Encryption Standard (数据加密标准)。 DES 密钥长度为 56 位,在形式上是一个 64 位数。 DES 64 位( 8 字节)为分组对数据加密,每 64 位明文,经过 16 轮置换生成 64 位密文,其中每字节有 1 位用于奇偶校验,所以实际有效密钥长度是 56 位。 IPSec 还支持 3DES 算法, 3DES 可提供更高的安全性,但相应地,计算速度更慢。

  七、密钥管理

   · 动态密钥更新

   IPSec 策略使用 " 动态密钥更新 " 法来决定在一次通信中,新密钥产生的频率。动态密钥指在通信过程中,数据流被划分成一个个 " 数据块 " ,每一个 " 数据块 " 都使用不同的密钥加密,这可以保证万一***者中途截取了部分通信数据流和相应的密钥后,也不会危及到所有其余的通信信息的安全。动态密钥更新服务由 Internet 密钥交换 IKE Internet Key Exchange )提供,详见 IKE 介绍部分。

   IPSec 策略允许专家级用户自定义密钥生命周期。如果该值没有设置,则按缺省时间间隔自动生成新密钥。

   · 密钥长度

  密钥长度每增加一位,可能的密钥数就会增加一倍,相应地,破解密钥的难度也会随之成指数级加大。 IPSec 策略提供多种加密算法,可生成多种长度不等的密钥,用户可根据不同的安全需求加以选择。

   ·Diffie-Hellman 算法

  要启动安全通讯,通信两端必须首先得到相同的共享密钥(主密钥),但共享密钥不能通过网络相互发送,因为这种做法极易泄密。

   Diffie-Hellman 算法是用于密钥交换的最早最安全的算法之一。 DH 算法的基本工作原理是:通信双方公开或半公开交换一些准备用来生成密钥的 " 材料数据 " ,在彼此交换过密钥生成 " 材料 " 后,两端可以各自生成出完全一样的共享密钥。在任何时候,双方都绝不交换真正的密钥。

  通信双方交换的密钥生成 " 材料 " ,长度不等, " 材料 " 长度越长,所生成的密钥强度也就越高,密钥破译就越困难。 除进行密钥交换外, IPSec 还使用 DH 算法生成所有其他加密密钥。