当前位置 博文首页 > 高级网络工程师的博客:IPSec 原理简介

    高级网络工程师的博客:IPSec 原理简介

    作者:[db:作者] 时间:2021-08-21 16:11

    一、 概述

    IPSec是一项标准的安全技术,它通过在数据包中插入一个预定义头部的方式,来保障上层数据的安全。IPSec主要应用于IP网络层的安全保护。

    IPSec技术提供了如下安全特性:

    1. 完整性:确保数据在传输中没有被第三方篡改;

    2. 源认证:认证数据发送源,确保合法源发送;

    3. 私密性:对数据进行加密,即使第三方能够捕获加密后的数据,也不能恢复。

    另外IPSec头部有1个序列号片段,单调增长,用来标识一个数据包,从而抵御重放攻击,即第三方将截获的数据包复制,反复发送消耗接收方系统资源的手段。接收方如果再次收到相同序列号的数据包即视为重放攻击,直接丢弃,不用解密浪费系统资源。

    二、 基本算法

    在介绍IPSec架构流程之前,首先介绍下IPSec建立过程中会用到的几个技术概念。

    1. 散列函数

    散列函数又称hash函数,就是把任意长的输入消息串变化成固定长的输出串的一种函数。IPSec中常用的散列函数:MD5(128位散列值),SHA-1(160位散列值)。

    一个安全的散列函数至少满足一下几个条件:

    I. 固定性:输入长度任意,输出长度固定;

    II. 单向性:对于给定的输入,计算出散列值很容易,但是由散列值无法还原为原始输入;

    III. 相异性:找到两个不同的输入获得同一个散列值不可行,至少计算上不可行;

    IV. 雪崩:原始输入中任何变化,哪怕是一点点细微的变化,都会引起输出散列值很大的不同。

    下图给出了散列函数验证数据完整性的流程。用户A通过散列函数计算出原始数据的散列值,然后将散列值和原始数据一起发送给用户B,用户B采用相同的散列函数计算收到的原始数据获取散列值,将其与收到的散列值比较。若一致,则由散列函数的相异性和雪崩特点可知,原始数据没有被第三方篡改。

    但是这样就安全了么?试想下有个第三方攻击者从中途截取了用户A发送的数据,编制了伪造数据和伪造数据的散列值发送给用户B,用户B收到伪造数据计算后得到的散列值和收到的散列值当然一致。虽然散列函数可以验证数据确实完整,却不能保证数据来源是合法来源。

    怎么解决源认证的安全性问题呢?

    1. HMAC(Hash-based Message Authentication Code)

    通讯双方预共享共同的密码或者密钥,用户A将原始数据和密码,或者密钥作为共同输入生成散列值,又或者将原始数据生成的散列值用密钥加密后发送给用户B,用户B收到数据和散列值后,通过本身预共享的密码或密钥采用相同的过程生成散列值,与收到的散列值或解密后的散列值进行对比。若一致,则可确认收到的数据来源于用户A,且是完整无篡改的。

    HMAC就是密钥相关的哈希运算消息认证码,利用哈希算法,以一个密钥和消息作为输入,生成输出。HMAC提供了源认证和完整性的安全特性,但这并不意味着不可信的互联网就是安全的了。原始数据作为明文数据在网络上传播,第三方虽然不可篡改欺骗,但还是可以***到数据的。因此,IPSec还需要采取一定的加密手段来保证数据的安全性,同时不影响用户B对数据的正确读取。

    1. 加密算法

    加密算法的概念相信不用介绍大家也知道是什么了,加密技术根据加密和解密采用密钥的区别分成两大类,对称式的和非对称式。

    3.1 对称式加密

    对称式加密就是加密和解密时采用同一个密钥,其主流算法有DES,3DES,AES等。DES(Data Encryption Standard)是一个典型的块加密算法,使用一个56位的密钥以及附加的8位奇偶校验位,将原始数据分成相同大小的块,逐块进行加密。3DES是DES的变体,即三重DES,使用168位的密钥对数据进行三次加密,可提供更强大的安全性。AES(Advanced Encryption Standard)是美国国家标准与技术研究院旨在取代DES的加密标准,也是块加密算法,密钥处理长度可以是128bit、192bit或256bit,处理的数据块分组长度为128bit,密钥扩散机制与DES有区别,这里就不做详细介绍了。

    对称加密算法的优点在于加解密的高速度和密钥的难破解性,当然随着计算机技术的发展,这以后还好不好破解就不好说了哈。不过对称加密算法还是存在弱点的,首先是密钥的发放,在网络上直接发送密钥显然是种很**的做法,有密钥和没密钥没区别。如果采用有安全保障的发放,怎么发放?通讯双方先碰个头协商下,有点麻烦。而且总用一个密钥加密也是不大好的,定时更新下对安全性来说还是有必要的。另外一个弱点在于,如果网络上有n个用户,共享一个密钥的情形安全性必然要大打折扣,如果两两共享一个密钥,那么需要n(n-1)/2个密钥,每增加1个用户就需要增加n个密钥数量。

    3.2 非对称加密

    非对称加密采用了一对密钥,两个密钥是具有数学关联性的,其中一个作为公用的需要公开称为公钥,另外一个由持有者保存仅有的称为私钥。其特点在于用私钥加密的数据只能用公钥进行解密,用公钥加密的数据只能用私钥解密。这样用户B就可以将公钥共享给用户A,用户A用公钥加密数据发送给用户B,用户B利用私钥解密,即使第三方用户截获了A发送的数据也无法破解。

    数字签名也是运用了非对称加密的特点,用户A将验证信息用私钥进行加密发送给用户B,用户B用预先获取的A的公钥进行解密获取验证信息。由于公钥和私钥的数学关联性和私钥的持有者唯一性,用户B可知数据的来源确实是A,的确是A的“签名”。

    常见的密钥生成算法有RSA算法、DH算法等。RSA算法利用极大整数很难做因数分解的数学基础,生成一对公钥和私钥,具体的生成过程这里就不详述了。当然计算机技术的发展,RSA的安全性也受到挑战,量子计算机在理论上可以很快地破解RSA算法,而高性能的计算机在2009年也将RSA-768(768bits, 232 digits)破解,不过尚幸的是RSA算法可以通过扩展位数增强安全性。

    非对称算法的缺点在于加密后的密文数据会变大,而且解密所需的时间相比对称算法要长上好几个数量级的时间。

    IPSec结合对称和非对称算法各自的优点,采用对称算法加密和解密数据,而用非对称算法来传送加密和解密所需的对称密钥。下面便介绍IPSec框架采用的非对称密钥产生算法Diffie-Hellman算法。

    3.3 Diffie-Hellman算法

    DH算法过程如图所示,用户A产生随机数a,g,p,使用离散对数函数计算得出A,然后将g,p,A这些数据发送给用户B,用户B产生随机数b,结合接收到的数据p,g,使用离散对数函数计算得出B,将B发送给用户A。这样用户A和B之间便共享了个公共的秘密K,由K便可生成加密解密所需要的对称密钥。

    对数函数的非对称特点决定了即使第三方获取了所有中间量g,p,A,B,也无法逆算出a或者b,也就无法获知共享秘密K。用户A和B产生的随机数大小是由所选DH组来决定的,DH组1标识768bits长度,DH组2标识1024bits长度。

    三、 架构流程

    首先需要提到一个概念是安全联盟SA,指通信双方建立的协定,协定了协议、加密函数、密钥及密钥有效期等。

    IPSec SA的建立主要由互联网密钥交换协议IKE(Internet Key Exchange)完成,ISAKMP (Internet Security Association and Key Management Protocol)是IKE的核心协议,所以ISAKMP和IKE的概念经常会互换使用。

    IKE通过两个阶段完成IPSec SA的建立。第一阶段通过包交换匹配IKE策略、DH算法生成公共密钥,完成收发双方的认证,建立ISAKMP SA保护二阶段IPSec SA的建立。

    1. ISAKMP SA

    IKE收发双方之间称对方为对等体,对等体是需要配置的,某一方收到ISAKMP数据包时会验证数据包的源IP地址,若是合法对等体的才会处理进行协商。当然第三方可以伪装合法对等体IP进行协商,但是第三方过不了认证。

    通信双方首先要交换各自的IKE策略以建立ISAKMP SA,可配置的策略可以有许多种,每种都有自己的优先级。接收方会根据自身策略的优先级,将接收到的策略跟自身优先级高的策略匹配,直到匹配出双方一致的IKE策略作为ISAKMP SA的内容。同时双方还要通过DH交换生成共享秘密,并按照SA决定的认证方式进行认证。

    IKE的策略包含如下内容:

    I. 加密策略:DES、3DES、AES

    II. 散列函数:MD5、SHA

    III. DH组:1、2

    IV. 认证方式:预共享密钥、公钥加密、证书签名

    V. 密钥有效期

    1. IPSec SA

    通信双方交换各自的IPSec策略信息,以建立IPSec SA,策略匹配的方式同IKE SA的建立。关于封装协议和封装模式的内容会在第四部分介绍,看官莫急。

    IPSec的策略包含如下内容:

    I. 感兴趣流:基于ACL,作为触发IPSec保护数据的条件,不作为策略匹配的内容

    II. 加密策略:DES、3DES、AES

    III. 散列函数:MD5、SHA

    IV. 封装协议:ESP、AH

    V. 封装模式:传输模式、隧道模式

    1. IKE v1和v2

    IKE v1通过9条消息完成:第一阶段有6条消息,前2条进行IKE策略交换协商,再2条进行DH交换,最后2条进行认证建立IKE SA;第二阶段3条消息,发送方发送策略,接收方匹配并回应协商策略和IPSec SA参数,但是IPSec SA是单向的,故发送方也要回应给接收方的IPSec SA参数。IKE v1的第一阶段其实有两种模式,上面介绍的是主模式,另外一种是野蛮模式,只需要交互3条消息,但是缺少身份认证保护。

    IKE v1的标准比较复杂、协商效率低、存在一些安全漏洞,故IETF对其进行了修正,推出了IKE v2协议。IKE v2通过4条消息完成:第一阶段有2条消息,交换IKE策略和DH信息,完成策略协商和DH交换;第二阶段2条消息,进行认证同时完成子IPSec SA的协商建立。

    1. ACL(Access Control List)

    IPSec是基于感兴趣流的配置触发对特定数据的保护的,至于什么样的数据是IPSec感兴趣的数据则是通过配置访问控制列表(ACL)匹配的。ACL是应用在路由器接上的指令列表,用来告诉路由器对规定的数据流做如何处理。

    不同的ACL由ACL编号来区别,ACL的编号同时也区别了协议范围。1-99的标号表示这是标准IP访问控制列表,100-199是扩展IP访问控制列表,800-899是标准IPX访问控制列表,不过这是某C的规定。我司的ACL编号是,2000-2999是基本的访问控制列表,3000-3999是高级的访问控制列表,4000-4999是基于以太网帧头的访问控制列表,等等就不全介绍了,因为无线设备的ACL配置只支持3000-4999的编号范围,额外说一下,基本和高级的区别就是高级的控制条件更多点。

    ACL的内容是有ACL规则定义的,其内容包括:

    I. 规则编号RULEID:

    一个ACL可以定义多条ACL规则,设备遵循ACL的控制,会按照ACL内各条规则的优先级依次匹配数据流,知道匹配中或者全部匹配完成。(ID越小优先级越高)

    II. 操作ACTION:

    Permit,允许匹配数据流通过;Deny,丢弃匹配规则的数据。

    III. 协议类型PT:

    匹配的协议类型,包括IP、ICMP、TCP、UDP、SCTP等三四层协议。

    IV. IP地址:

    数据流源IP地址、目的IP地址,通配符用来调整网段,其规则和掩码相反。如192.168.1.0 0.0.0.255匹配的就是192.168.1.0/24的网段。

    V. 端口号:

    数据流源端口号、目的端口号或端口号范围。

    VI. 差分服务码:

    数据流差分服务码

    如果是基于以太网帧头的ACL,其内容包括:规则编号,操作,VLAN。

    1. LTE IPSec

    根据以上的知识,相信对于LTE IPSec的数据配置命令和参数的理解就会很容易了。

    ADD ACL:增加ACL;

    ADD ACLRULE:描述ACL控制规则;

    ADD IKEPROPOSAL:增加IKE策略,其中一个伪随机数算法参数选项,顾名思义,选择随机数的产生算法;

    ADD IKEPEER:增加IKE对等体;

    ADD IPSECPROPOSAL:增加IPSec策略;

    ADD IPSECPOLICY:增加IPSec策略,其实是绑定ACL。IPSec策略还包括感兴趣流的内容,因此还需要将ACL与IPSECPROPOSAL绑定;

    ADD IPSECBIND:绑定IPSec策略到相应端口执行;

    ADD PACKETFILTER:将ACL规则应用到相应端口去,并可以规定对不匹配ACL的数据流的操作行为。

    四、 封装协议和模式

    1. 封装协议

    IPSec封装协议有ESP、AH两种。

    1.1 ESP

    ESP (Encapsulation Security Payload)的IP协议号为50,能够对IP负载数据提供完整性、源认证和私密性保护,但是不对原始的IP头报保护,其数据包结构图如下图所示。

    ESP头部主要有安全参数索引和序列号,安全参数索引使用来标识处理数据包的IPSec SA,序列号第一部分已有所说明。ESP尾部主要有垫片、垫片长度和下一个头部,对称式加密是块加密,处理的数据长度固定,垫片就是用来补齐块数据,使数据能够被完整分割成块长度。垫片长度是用来说明垫片数据长度的,下一个头部用来标识承载的数据的下一个头部的,例如传输模式下一个头部是TCP/UDP,而隧道模式下一个头部是IP,至于原因,谈到封装模式的时候会说明的。

    1.2 AH

    AH (Authentication Header)的IP协议号为51,能够对数据提供完整性和源认证的保护,其验证的字段包括IP头部,但是AH不提供私密性保护,其数据包结构图如下图所示。

    AH头部主要有下一个头部、垫片长、安全参数索引、序列号和认证数据。在IPv4网络中AH封装还有一个缺点,IPv4由于地址短缺采用了网络地址转换NAT的技术,AH封装数据穿过NAT时IP头部中的IP地址会发生变化,数据的任何变化都会导致散列值发生很大变化,AH封装数据到达目的地址后不能成功验证,从而导致失败。

    1. 封装模式

    IPSec封装模式有传输模式和隧道模式。

    2.1 传输模式

    传输模式非常简单,直接遵循规则按照封装协议封装数据发送接收方处理即可,所有该模式所载数据的直接是传输层数据,下一个头部是UDP/TCP。比较适合端到端的IPSec建立,即分支设备直接与核心侧各设备建立IPSec SA。

    这样做有个不好的方面就是每对通讯主体之间都要建立IPSec SA,配置数量大,效率低。现网的实际情况往往是核心侧设备都处于一个物理安全的环境,所处的网络环境是安全可信的环境,核心侧出口处有一个安全网关设备,对外连接公共互联网,属于不安全的网络。分支设备只需要和安全网关建立IPSec SA,实现和核心侧设备的通讯,这边需要使用到隧道模式了。

    2.2 隧道模式

    传输模式其实就是实际通信点和认证加密点一致的模式,而隧道模式就是实际通信点和认证加密点不一致的模式。如下图所示隧道模式,通信点是分支设备和核心侧设备之间,而IPSec的认证加密点是分支设备和安全网关之间。

    安全网关设备封装的IPSec数据包结构如下图所示。这就好像在分支设备和安全网关之间构建了个“隧道”让通信数据通过,故称为隧道模式。从数据包结构可以看出,ESP头所载数据是发送方网络层数据,ESP中下一个头部应当是IP。

    cs
    下一篇:没有了