详解IPSec介绍( 七 )

  • SPI(安全参数索引):一个携带在AH或ESP头部的一个32位数值,接收端通过SPI来判断接收到的数据流应该用SADB中的哪个SA来做安全保护 。
  • IPSec对于发送报文的处理流程如图1所示 。图1 IPSec发送报文处理流程
    详解IPSec介绍

    文章插图
     
    IPSec对于接收报文的处理流程如图2所示 。图2 IPSec接收报文处理流程
    详解IPSec介绍

    文章插图
     
    IPSec DPD 
    DPD当两个对等体之间采用IKE和IPSec进行通信时,对等体之间可能会由于路由问题、对等体重启或其他原因等导致连接断开 。IKE协议本身没有提供对等体状态检测机制,一旦发生对等体不可达的情况,只能等待安全联盟的生存周期到期 。生存周期到期之前,对等体之间的安全联盟将一直存在 。安全联盟连接的对等体不可达将引发“黑洞”,导致数据流被丢弃 。通常情况下,迫切需要识别和检测到这些“黑洞”,以便尽快的恢复IPSec通信 。
    Keepalive机制可以解决这个问题 。Keepalive机制是指IKE对等体间通过周期性的交换Hello/Ack消息来告知对方自己处于活动状态 。但是在设备上的IKE SA数量很大时,发送的Hello/Ack消息将会大量消耗设备的CPU资源,限制了这种机制的应用 。
    失效对等体检测DPD(Dead Peer Detect)是Keepalive机制的一种替代机制,它利用IPSec流量使对等体状态检测所需消息的数量达到最小化 。DPD规定每个IKE peer的状态和对端状态是完全独立的,当IKE peer想知道对端是否在线时,随时请求,不需要等待间隔时间的到来 。当peer之间有正常的IPSec流量时,证明对端肯定在线,此时没有必要去发送额外的消息探测对端是否在线 。只有一段时间内没有流量发生,peer的活动状态才值得怀疑,那么本端在发送流量前应该发送一次DPD消息来检测对端的状态 。
    DPD有两种模式可以选择:interval和on-demand 。
    interval:表示DPD工作在轮询模式,在check-interval时间内,如果没有收到对端发过来的流量就会以check-interval为周期循环发送DPD检测报文 。如果期间收到对端的响应报文,那么本次DPD流程结束,进入新的DPD检测周期 。如果期间没有收到对端的响应报文,则会进行报文重传 。重传结束后,如果依然没有收到响应则会删除本端SA表项,重新执行隧道新建流程 。
    on-demand:表示DPD工作在流量触发模式,如果本端没有加密流量发送,那么是不会发送DPD报文的,这是和轮询模式的最大区别 。如果本端有加密流量需要发送,并且发送后在check-interval时间内没有收到对端发过来的流量,那么就会以check-interval为周期循环发送DPD检测报文 。如果期间收到对端的响应报文,那么本次DPD流程结束,进入新的DPD检测周期 。如果期间没有收到对端的响应报文,则会进行报文重传 。重传结束后,如果依然没有收到响应则会删除本端SA表项,重新执行隧道新建流程 。
    IPSec安全性 
    IKEv2的安全性分析
    详解IPSec介绍

    文章插图
     
    此处着重分析IKEv2的安全性 。
    IKEv2对传统IKE存在的安全漏洞进行了修订,提高了密钥协商的安全性,并明确规定了所有的消息必须以请求/响应对的形式存在,有效的解决了使用UDP作为传输层协议的不可靠性问题 。
    以下从三方面来讨论IKEv2的安全性问题 。