详解IPSec介绍( 二 )

  • ESP是封装安全载荷协议,主要提供加密、数据源验证、数据完整性验证和防报文重放功能 。
  • 虽然AH协议和ESP协议都可以提供数据源验证和数据完整性校验服务,但是两者不能互相取代 。两者之间的差别在于验证报文的范围不同,验证范围请参见封装模式 。
    AH和ESP协议的简单比较如表1所示 。
    详解IPSec介绍

    文章插图
     
    从上表中可以看出两个协议各有优缺点,AH协议不提供数据加密功能,ESP的验证范围不包括IP头,其安全性不如AH,故在安全性要求较高的场景中可以考虑联合使用AH协议和ESP协议 。AH协议和ESP协议联合使用时,需要先使用ESP,这是因为AH对整个IP数据报文进行认证,如果先使用AH再使用ESP,ESP的头和尾会改变数据报文的长度,而且ESP的填充字段也会改变数据报文的长度,造成AH认证失败 。
    封装模式 
    目前NE支持隧道模式 。
    隧道模式隧道模式的报文格式如图1所示 。在隧道模式下,原始IP数据报文被封装成一个新的IP数据报文,并在旧IP报文头(图1中的IP Header)和新IP报文头(图1中的New IP Header)之间插入一个IPSec报文头(AH或ESP),原IP地址被当作有效载荷的一部分受到IPSec的安全保护 。图1 隧道模式的报文格式
    详解IPSec介绍

    文章插图
     
    隧道模式隐藏了原始IP报文头信息,因此主要应用于两台VPN网关之间或一台主机与一台VPN网关之间的通信 。
    隧道模式下,AH协议的完整性验证范围为包括新增IP头在内的整个IP报文 。ESP协议验证报文的完整性检查部分包括ESP头、原IP头、传输层协议头、数据和ESP尾,但不包括新IP头,因此ESP协议无法保证新IP头的安全 。ESP的加密部分包括传输层协议头、数据和ESP尾 。
    当安全协议同时采用AH和ESP时,AH和ESP协议必须采用相同的封装模式 。
    加密算法 
    加密是一种将数据从明文转换成无法读懂的密文的过程,接收方只有在拥有正确的密钥的情况下才能对密文进行解密,从而保证了数据的私密性 。
    IPSec VPN工作过程中涉及数据加密(IP报文加密)和协议消息加密(ISAKMP消息加密)两种情况 。
    数据加密ESP能够对IP报文内容进行加密保护,以防止IP报文内容在传输过程中被窥探 。IPSec采用对称加密算法对数据进行加密和解密 。对称加密算法是指数据发送方和接收方使用相同的密钥进行加密、解密 。
    采用对称加密算法进行数据加密和解密的过程如图1所示 。图1 加密和解密的过程
    详解IPSec介绍

    文章插图
     
    用于加密的对称密钥可以手工配置,也可以通过DH算法生成并在两端设备共享 。有关DH算法具体能够生成哪些密钥及密钥的作用请参见IKEv1 Phase-1 Negotiation 。
    一般来说IPSec使用以下加密算法:
    • DES(Data Encryption Standard):使用64bit的密钥对一个64bit的明文块进行加密 。
    • 3DES(Triple Data Encryption Standard):使用三个64bit的DES密钥(共192bit密钥)对明文形式的IP报文进行加密 。
    • AES-CBC-128(Advanced Encryption Standard Cipher Block Chaining 128):使用128bit加密算法对IP报文进行加密 。
    • AES-CBC-192(Advanced Encryption Standard Cipher Block Chaining 192):使用192bit加密算法对IP报文进行加密 。
    • AES-CBC-256(Advanced Encryption Standard Cipher Block Chaining 256):使用256bit加密算法对IP报文进行加密 。
    3DES比DES安全得多,但是其加密速度慢于DES 。AES比3DES更安全 。
    协议消息加密协议消息加密用于IKE协商阶段 。协议消息加密所用的算法也是DES、3DES和AES 。用于加密的对称密钥通过DH算法生成 。有关DH算法具体能够生成哪些密钥及密钥的作用请参见IKEv1 Phase-1 Negotiation 。
    认证算法 
    IPSec采用Hmac(Keyed-Hash Message Authentication Code)功能进行认证 。HMAC是HASH函数(单向散列函数)和消息认证码MAC(Message Authentication Code)的结合,HMAC利用Hash函数,以一个对称密钥和一个数据包作为输入,生成一个固定长度的输出,这个输出被称为完整性校验值ICV(Integrity Check Value) 。接收方通过比较自身生成的ICV和对端发送的ICV来判断数据的完整性和真实性 。
    数据源验证和数据完整性验证统一被称为验证 。因为这两种安全服务总是绑定在一起提供的 。数据完整性验证是基于每个IP数据包进行计算;将完整性验证密钥同IPSec对端身份绑定的结果间接提供了数据源验证 。


    推荐阅读