Chinaunix首页 | 论坛 | 博客
  • 博客访问: 188776
  • 博文数量: 64
  • 博客积分: 1451
  • 博客等级: 上尉
  • 技术积分: 665
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-24 10:07
文章分类

全部博文(64)

文章存档

2010年(7)

2009年(57)

我的朋友

分类: LINUX

2009-09-09 12:13:00

2009-4-2 追风 转载请注明出处。

本文主要参考英文版IPsec HOWTO

IPsec安全技术全接触


本篇为IPsec HOWTO的第一部分,包括为什么使用IPsec,并简单介绍了IPsec原理。

原理

为什么需要IPsec?
IPv4 的包本身没有提供任何安全保护,黑客可以通过信息包探测、IP电子欺骗、连接截获、replay攻击(是一种不断发相同序列号的包使系统崩溃的攻击方法) 等方法来攻击。因此,我们收到的数据包存在着以下危险:并非来自合法的发送者; 数据在传输过程中被人修改; 数据内容已被人窃取(例如军事机密等重要信息的对话)。IPsec的目的就是为了实现数据传输的完整性(源地址验证和保证数据没有被修改)和机密性(没有 被人看过)以及提供一定程度的对replay攻击的保护。IPsec可用它为IP及其上层协议(TCP和UDP等)提供安全保护。

什么是IPsec?
IPsec是IP协议的扩展,他为IP协议及其上层协议提供安全保护。最初是为IPv6标准开发的,后来又针对IPv4开发。IPsec的结构在RFC2401中有详细描述。下面小节将简单介绍IPsec的安全体系结构。

Ipsec 使用两种不同的协议-AH(认证头标)和ESP(封装化安全净荷)-来保证通信的有效性,完整性和机密性,并能起到抵御replay攻击的作用。它既可以 保护数据包内部的IP数据,也可以只保护上层协议。IPsec有两种模式,分别是传输模式和通道模式。在通道模式中,IP数据包被另外一个IP数据包完全 封装。传输模式中,通过在IP头和上层协议头之间加入一个IPsec头来保护IP数据包中的载荷。(见图1)

                                       IPsec HOWTO(1) - xcizy - 追风的博客
                             图1 传输模式和通道模式

IPsec 使用HMAC(hash message authentication codes)来来保证IP数据包的完整性。HMAC是IPsec协议(AH或ESP)使用例如MD5或SHA等加密算法计算出来的一个哈西值。计算过程基 于secret key和IP数据包的内容,以及IP包头中固定不变的地方,如IP地址。计算出的HMAC会放在AH头和ESP头中。

IPsec使用标准的对称加密算法来保证IP数据包中数据的机密性。IPsec标准要求IPsec实现中必须包含有NULLDES算法.现在一般都使用安全性更好的算法如: 3DES, AES, Blowfish.

The IPsec standard requires the implementation of NULL and DES. Today usually stronger algorithms are used like 3DES, AES and Blowfish.

IPsec 使用sliding window来抵御service attack。每个数据包都被指定一个序列号,只有数据包中的序列号包含在sliding window中,并且接收段是第一次收到该序列号的包时,数据包才能传送成功。之后再接受到的相同序列号的包将会被丢掉。这样就避免了攻击者记录下原始数 据包并不断向接收端发送这个数据包的replay攻击。

为了能够封装和解除封装IPsec数据包,我们需要一种方法能够存储secret keys,加密的算法和IP地址。所有这些保护IP数据包所需要的参数都存放在security association(SA,安全联盟)中,而每一个SA(安全联盟)都存放在security association database(SAD,安全联盟数据库)中。

每一个SA中都定义了如下参数:
通过IPsec头封装之后,新数据包的源IP地址和目的地IP地址。传输模式中,源IP地址与封装之前的IP地址相同。通道模式中,由于是用一个新的IP头封装的整个IP数据包,所以源IP地址与封装之前的IP地址可能不同。
用来保护数据包安全的IPsec协议,AH或ESP,或者两者一块使用。
IPsec所用的转码方式(即算法,MD5或SHA等)和密钥(secret key)。
安全参数索引(SPI-Security Parameter Index),一个32位的号码,用于识别和索引SAD中的SA。
有时,SAD中的SA也可以存放更多的参数,例如:
IPsec模式(通道模式或传输模式)。
sliding window 的大小,抵御replay攻击时用到。
安全联盟的有效时间。

注意:如果以一个主机A作为发送端,主机B作为接收端,那么他们之间建立的IPsec通道只是单向的,只有A->B时数据包加密,B->A时数据包不加密。所以,要想实现双向加密,就需要再以B为发送端,A为接收端,建立另一个IPsec通道。

SA中只规定了IPsec如何对通信进行保护,其他更多需要定义的信息存放在SP(Security Policy安全策略)中,而SP都存放在SPD(Security Policy Databace安全策略数据库)中。

SP中通常定义如下参数:
被保护的原始IP数据包(未经过IPsec封装的)的源IP地址和目的地IP地址。在传输模式中,这两个地址于SA中存储的相同。通道模式中,这两个地址于SA中存储的就可能不同了。
所保护的协议和端口。在某些IPsec的应用中,不允许指定要保护的协议,所以,所有在两个IP地址之间的通信都将会得到保护。
保护数据包所用到的SA。

SAD 和SPD两个数据库联合使用。对于发送方,每个SPD的元组(即SP)都有指针指向相关的SAD的元组(即SA)。如果一 个SPD的元组没有指向适合发送包的SA,那么将会创建新的SA或SA束,并将SPD的元组和新的SA元组链接起来。对于接收方,通过包头信息包含的IP 目的地址、IP安全协议类型(AH或ESP)和SPI(安全参数索引)在SAD中查找对应的SA。

注意:手动设置安全联盟(SA)并不安 全,也是不提倡的。因为密钥和加密用的算法需要在虚拟专用网中的所有成员间共享,而在各成员交换密钥的时候,交换过程并没有被加密(此时SA和没有建 立)。为了解决这个问题,人们开发了IKE(internet key exchange protocol 网络密钥交换协议)。

IKE 用于动态建立SA。IKE代表IPsec对SA进行协商,并对SAD数据库进行填充。 IKE是一个混合型的协议,它建立在由Internet安全联盟和密钥管理协议(ISAKMP)定义的一个框架上。IKE使用了两个阶段的ISAKMP。 第一阶段建立IKE安全联盟,第二阶段利用这个既定的安全联盟,为IPsec协商具体的安全联盟。
阅读(2448) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~