Chinaunix首页 | 论坛 | 博客
  • 博客访问: 871535
  • 博文数量: 275
  • 博客积分: 3904
  • 博客等级: 中校
  • 技术积分: 4605
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-17 21:10
文章分类

全部博文(275)

文章存档

2014年(9)

2013年(124)

2012年(142)

分类: 系统运维

2013-08-05 10:43:03

1 引言
  问题始终是与Internet相关的一个重要话题,由于在协议设计之初没有充分考虑其性,因而在早期Internet上时常发生诸如某些企 业、机构的网络遭到攻击、机密被窃取等不幸的事件。为了加强Internet的安全性,从1995年开始,IETF着手研究制订了一套用于保护通 信的安全(IP Security)协议。提供了基于IP的网络层安全,它服务所有基于IP的网络通讯,对于上层协议应用来说是完全透明的。   
2 IPSec体系结构


图1  IPSec 体系结构图

    IPSec是一系列规范的集合,由安全联盟(Security association, SA)[1],安全协议(包括认证头(Authentication Header,AH)[2]、封将安全载荷ESP(Encapsulating Security Payload , ESP) [3]、密钥管理(Internet Key Management , IKE)[4]及认证和加密算法构成一个完整的安全体系。结构如图1所示。
2.1 安全联盟(SA)
    安全联盟是IPSec的基础,决定通信中采用的IPSec安全协议、散列方式、加密算法和密钥等安全参数,通常用一个三元组〈安全参数索引、目的IP地址、安全协议〉唯一表示。SA总是成对出现的,对等存在于通信实体的两端,是通信双方协商的结果。
    SA存放在安全联盟数据库(Security AssociationDatabase ,SAD)[1]中,另外IPSec环境中还维护一个安全策略数据库(Security Policy Database ,SPD)[1]。每个应用IPSec的网络接口都有SAD 和SPD各一对,协同处理进、出的IP包。一条SAD数据库记录对应一个SA。每条SPD记录描述了一种安全策略,指定了数据包处理动作(丢弃、旁路、应 用)。发送数据时根据目的IP地址等参数先从SPD中得相应的策略记录,当记录的动作为“应用”时,根据记录中的SA指针从SAD中取得对应的SA(若不 存在,需要调用IKE创建一个新的SA,并插入到SAD中),再利用SA指定的安全协议和认证加密算法对包进行安全处理后发送目的IP。接收端收到数据后 通过报文中的SPI等参数找到SA ,检查是否是重传数据,如果不是则应用SA中指定的协议和算法对数据进行解密和验证。SPD对于同一IP地址可能有多条记录,这几条记录可能是相互冲突 的,因此它必须是排序的,查找时也必须是顺序查询,实际只应用找到的第一条策略记录。
2.2 认证头(AH)
    AH支持数据的完整性和IP包的验证,数据的完整性的特征可以保证在传输中不可能发生未检测的修改,身份验证功能使末端系统或网络设备可以验证用户或应用 程序,并根据需要过滤通讯量,它还可以防止在Internet上的地址欺骗攻击,此外,AH还能阻止在该区域的重复攻击。AH插入在IP包头和传输层包头 之间,格式如表1所示。

表1 AH格式

    其中,下一个报头字段(8位)标识紧跟的报头类型。有效载荷属性(8位)指明整个AH的长度。SPI(32位)是一个随机值,与外部目的IP地址一起,用 于指定SA。系列号(32位)标明当前IP包在整个数据包系列中的位置,这个字段是强制的,提供了抗重播功能,在SA创建时初始化为0,然后依次递增,达 到232时则重新创建SA。即使某个特定的SA不要求抗重播功能,在发送端仍必须填写,只在接收端不进行重播检查。AH的最后的一个字段认证数据是可变长 的,但必须双字对齐,其缺省长度为96位,为包的完整性验证值(Integrality Check Value ,ICV),它是SA指定的单向散列算法(One2Way Hash Alogrithm)、对称加密算法和密钥计算出来的身份验证码的删节。
2.3 封装安全载荷(ESP)
    AH不提供任何保密**,它不加密所保护的数据包。保密**由ESP提供:包括消息内容的保密性和有限的通信量的保密性,作为可选的功能,ESP也可 以提供AH的验证服务。保密服务通过使用密码算法加密IP数据报的相关部分来实现,密码算法使用对称密码体制,如三重DES,RC5,IDEA,CAST 等。ESP的基本思路是对整个IP包或者运输层数据进行封装,并对ESP数据的绝大部分进行加密。其包头格式如表2所示。


表2 ESP包头格式


    在ESP中,有的加密算法要求明文是某些字节的整数倍,所以ESP比AH多了一个长度为0~255字节的填充字段,这个字段也用于保证密文的双字对齐,同时它还隐藏了有效载荷的真正长度,从而为传输流量提供了一定的机密保护,但这个字段也增加了传输带宽。
2.4 密钥分配(IKE)
    进行IPSec通讯前必须先在通信双方建立SA,IKE用于动态建立SA(IPSec要求实现必须提供手工创建SA,目的是保证协议的互操作性)。IKE 是一种混合型协议,它沿用了ISAKMP (Internet Security Association and Key Management Protocol)的框架、Oakley的模式以及SKEME (Secure Key Exchange Mechanism)的共享和密钥更新技术,组合成自己的验证加密材料生成技术和协商共享策略。
    IKE使用了ISAKMP两阶段协商机制。在第一阶段,通信各方彼此间建立了一个已通过身份验证和安全保护的通道,即建立ISAKMP SA。在第二阶段,利用第一阶段创建的SA,为IPSec协商具体的安全联盟。第一阶段IKE采用“主模式”(Main Mode)交换提供身份保护。而“野蛮模式”(Aggressive Mode)下应答次数相对较少,而且如果采用公开密钥加密算法,“野蛮模式”也可以提供身份保护;第二阶段,IKE定义了一种快速模式交换,协商创建一个 用于通讯的SA,并完成密钥交换。一个第一阶段可以创建多个第二阶段,一个第二阶段可以创建多个SA,应用这种优化机制,至少每个SA建立过程减少一次交 换和一次Diffie Hell- man (DH)求幂。ISAKMP是框架性的,IPSec解释域(Domain of Interpretation,DOI)对它进行了实例化处理,定义了标志的命名、载荷的解释等,IKE也是目前ISAKMP的唯一实例。
2.5 加密和认证算法
    高强度的加密和认证算法是IPSec达到安全性能的基础。 IPSec规定可以使用各种加密算法,由通信双方事前协商,但所有IPSec实现都必须支持DES。由于DES强度不够,而不对称算法效率往往又较 低,3DES和AES(高级加密标准)等低开销高强度算法将成为IPSec实现的趋势。
    IPSec用HMAC作为认证散列算法,用于计算AH和ESP的ICV。在通信双方运用相同的算法和密钥对数据内容进行散列,结果一致则认为数据包是可信 的。只要双方协商好,散列算法也可以是任意的,IPSec中定义了HMAC-SHA-1(Secure Hash Alogrithm Version 1)和MHAC-MD5 (Message Digest Version 5)作为缺省算法。

3 IPSec 服务内容
    IPSec通过AH和ESP机制为基于IP的网络通讯提供了内容机密性、源地址验证、数据完整性验证和抗重播保护等服务。
3.1 机密**
    IPSec提供了数据机密**,保证了数据在传输不被非法用户窃听,它由ESP提供,算法采用加密块链接(Cipher Block Chaining ,CBC)[5]方式,这样确保了即使是信息在传输中被窃听,非法用户也无法得知信息的真实内容。
3.2 源地址验证和完整**
    AH和ESP的认证数据均由单向散列函数对包中源IP地址、数据内容等传输过程中不变的字段计算出来的HMAC(Hash-Based Message Authentication Code)。HMAC具有唯一性,改动数据的内容将使其无法在接收端通过验证,从而保证了数据的源IP地址和信息内容不会在转发过程中被篡改。
3.3 抗重播服务
    IPSec AH和ESP头中都定义了一个系列号字段,它在一个SA生命周期内是唯一的,在接收端则采用滑动窗口技术,丢弃所有重播的包,从而进一步提供了IPSec的抗重播服务。

4 IPSec工作方式
    IPSec有两种工作方式:传输方式(Transport Mode)和隧道模式(Tunnel Mode),AH和ESP均可应用于这两种方式。传输方式通常应用于主机之间端对端通信,该方式要求主机支持IPSec。隧道方式应用于网关模式中,即在 主机的网关(防火墙、路由器)上加载IPSec,,这个网关就同时升级为安全网关(Security Gateway ,SG) [1]。
4.1 传输方式
    传输模式主要为上层协议提供保护,AH和/或ESP包头插入在IP包头和运输层协议包头之间。其包结构如图2所示,显然传输模式下ESP并没有对IP包头加密处理,源、目的IP地址内容是可见的,而AH认证的是整个IP头,完整性保护强于ESP。

图2  传输方式包结构图

                                                                        
4.2 隧道方式
    在隧道方式下,整个IP包都封装在一个新的IP包中,并在新的IP包头和原来的IP包头之间插入IPSec头(AH/ ESP)。其结构如图3所示。
                                 
      图3   隧道方式包头结构

    从图3可以看出,在隧道模式下,如果应用了ESP,原始IP包头是加密的,真正的源、目的IP地址是隐藏的,新IP头中指定的源、目的IP地址一般是源、目的安全网关的地址。

5 IPSec实现
    IPSec协议文档中提供了三种具体的实现方案,将IPSec在主机、路由器/防火墙(创建一个安全网关)或两者中同时实施和部署,不管用何种方式实现,它对于上层协议和应用都是透明的。
    ①与操作系统(OS)集成实施。把IPSec当作网络层的一部分来实现,这种方式需要访问IP源码,利用IP层的服务来构建IP头。
    ②BITS方式。堆栈中的块”(Bump-in-the-stack ,BITS) [1]实现,修改通讯协议栈,把IPSec插入IP协议栈和链路层之间。这不需要处理IP源代码,适用于对原有系统的升级改造,通常用在主机方式中。
    ③BITW方式。线缆中的块(Bump-in-the-wire ,BITW) [1]实现,把IPSec作为一个插件,在一个直接接入路由器或主机的设备中实现。当用于支持一台主机时,与BITS实现非常相似,但在支持路由器或防火 墙时,它必须起到一台安全网关的作用。

6 结论
    IPSec定义了一套用于认证、保护机密性和完整性的标准协议。它为上层协议提供了一个透明的端到端安全通道,实现与应用不需要修改应用程序或者上层协 议。它支持一系列加密和散列算法,具有较好地扩展性和互操作性。但IPSec也存在一些缺点,如客户机/服务器模式下实现需要公钥来完成。IPSec需要 已知范围的IP地址或固定范围的IP地址,因此在动态分配IP地址时不太适合于IPSec。

阅读(1278) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~