详解IPSec介绍( 三 )


虽然加密后的数据只能通过原始的加密密钥进行解密,但是无法验证解密后的信息是否是原始发送的信息 。另外加密和解密的过程非常的消耗CPU资源,恶意用户可能会通过发送欺骗数据包,占用CPU资源 。HMAC功能通过比较数字签名进行数据包完整性和真实性验证,这个过程消耗的CPU资源非常少,效率非常高 。
所以在IPSec VPN发送设备中,加密和验证通常配合使用 。加密后的报文经HMAC生成数字签名,IP报文和数字签名同时发给对端(数字签名填写在AH和ESP报文头的完整性校验值ICV字段,请参见安全协议);在接收设备中,通过比较数字签名进行数据完整性和真实性验证,验证不通过的报文直接丢弃,验证通过的报文再进行解密 。
加密和HMAC验证配合使用的过程如图1所示 。图1 HMAC验证过程

详解IPSec介绍

文章插图
 
用于验证的对称密钥可以手工配置,也可以通过DH算法生成并在两端设备共享 。有关DH算法具体能够生成哪些密钥及密钥的作用请参见IKEv1协商安全联盟的过程 。
一般来说IPSec使用以下几种认证算法:
  • MD5(Message Digest 5):输入任意长度的消息,产生一个128比特的消息摘要 。
  • SHA-1(Secure Hash Algorithm):输入长度小于264比特的消息,然后生成一个160比特的消息摘要 。
  • SHA2-256:通过输入长度小于264比特的消息,产生256比特的消息摘要 。
  • SHA2-384:通过输入长度小于2128比特的消息,产生384比特的消息摘要 。
  • SHA2-512:通过输入长度小于2128比特的消息,产生512比特的消息摘要 。
SHA-2的消息摘要长于MD5和SHA-1,因此,SHA-2比MD5和SHA-1更安全 。
密钥交换 
IKEv1和IKEv2的协商过程中,隧道两端需要进行密钥材料的交换,以便使用相同密钥进行正确的加密和解密 。
密钥交换方法使用对称密钥进行加密、验证时,如何安全地共享密钥是一个很重要的问题 。有两种方法解决这个问题:
  • 带外共享密钥在发送、接收设备上手工配置静态的加密、验证密钥 。双方通过带外共享的方式(例如通过电话或邮件方式)保证密钥一致性 。这种方式的缺点是可扩展性差,在点到多点组网中配置密钥的工作量成倍增加 。另外,为提升网络安全性需要周期性修改密钥,这种方式下也很难实施 。
  • 使用一个安全的连接分发密钥IPSec使用IKE协议在发送、接收设备之间安全地协商密钥 。IKE采用DH算法在不安全的网络上安全地交换密钥信息,并生成加密、验证密钥 。这种方式配置简单,可扩展性好,特别是在大型动态的网络环境下此优点更加突出 。
IKE提供密钥交换,自动协商建立安全联盟等服务 。采用IKE协议可以使IPSec配置和管理更简单、更灵活 。
  • Internet安全联盟和密钥管理协议ISAKMP(Internet Security Association and Key Management Protocol)是IKE的基础,IKE使用ISAKMP协议定义密钥交换的过程 。ISAKMP提供了对安全服务进行协商的方法,密钥交换时交换信息的方法,以及对对等体身份进行验证的方法 。
  • IKE的精髓在于它永远不在不安全的网络上传送密钥,而是通过一些数据的交换,通信双方最终计算出共享的密钥,并且即使第三方截获了双方用于计算密钥的所有交换数据,也无法计算出真正的密钥 。其中的核心技术就是DH(Diffie Hellman)交换技术 。
DH密钥交换DH用于产生密钥材料,并通过ISAKMP消息在发送和接收设备之间进行密钥材料交换 。然后,两端设备各自计算出完全相同的对称密钥 。该对称密钥用于加密和验证密钥的计算 。在任何时候,双方都不交换真正的密钥 。
DH密钥交换过程如图1所示 。图1 DH密钥交换过程
详解IPSec介绍

文章插图
 
  1. 进行DH交换的双方各自产生一个随机数,如a和b 。
  2. 使用双方确认的共享的公开的两个参数:底数g和模数p各自用随机数a和b进行幂和模运算,得到结果c和d,计算公式如下:c=gamod(p)d=gbmod(p)
  3. 交换计算所得的结果c和d
  4. 各自进一步计算,得到一个共同的DH公有值:damod(p)=cbmod(p)=gabmod(p),此公式可以从数学上证明 。DH公有值就是双方的密钥 。
若网络上的第三方截获了双方的模c和d,那么要计算出DH公有值gabmod(p)还需要获得a或b,a和b始终没有直接在网络上传输过 。如果想由模c和d计算a或b就需要进行离散对数运算,而p为素数,当p足够大时(一般为768位以上的二进制数),数学上已经证明,其计算复杂度非常高,从而认为是不可实现的 。所以,DH交换技术可以保证双方能够安全地获得密钥信息 。


推荐阅读