IPSec 是一项标准的安全技术,它通过在数据包中插入一个预定头的方式,来保障OSI上层协议数据的安全.
IPSec 封装的示意图如下:
上半部分所示是一个普通的IP数据包,下半部分所示是被IPSec加密后的数据包格式.不难看出IPSec技术在原始IP头部和IP负载之间插入了一个IPSec头部,这样可对原始的IP负载实现加密,同时还可以实现对IPSec头部和原始IP负载的验证,以确保数据的完整性.
IPSec技术可以提供更多的安全特性,它对VPN流量提供了如下3个方面的保护.
私密性(Confidentiality):数据私密性也就是对数据进行加密,这样一来,即使第三方能够 捕获加密后的数据,也不能将其恢复成明文.
完整性(Integrity):完整性确保数据在传输过程中没有被第三方篡改.
源认证(Authenticity):源认证也就是对发送数据包的源进行认证,确保是合法的源发送了些数据包.
IPSec框架如下:
这张较长说明,不仅仅是散列函数.加密算法.还包括封装协议和模式.密钥有效期等内容都可以通过协商决定,在两个IPSec对等体之间协商 的协议叫做IKE.
散列函数
散列函数也叫做HASH函数,主流的散列算法有MD5和SHA-1.散列函数的主要任务是验证数据的完整性.通过散列函数计算得到的结果叫做散列值,这个值也常被称为数据的指纹(Fingerprint).
加密算法
加密就是把明文数据转换为密文数据.这样一来,即使第三方截获到了密文数据,也无法将期恢复为明文.而解密过程正好相反,合法的接收者通过正确的解密算法和密钥恢复密文到明文.加密算法可以分为如下两大类:
- 对称密钥算法
- 非对称密钥算法
对称密钥算法双方使用相同的密钥与算法进行加解密,因些叫对称密钥算法.它有以下特点:
优点为:
- 速度快
- 安全
- 紧凑
缺点:
- 明文传输共享密钥,容易出现中途劫持和窃听的问题
- 随着参与者数量的增加,密钥数量急剧膨胀
- 因为密钥数量过多,对密钥的管理和存储是一个很大的问题
- 不支持数字签名和不可否认性
对称密钥算法的主流协议:
- DES
- 3DES
- AES
- RC4
非对称密钥算法
在使用非对称密钥技术之前,所有参与者,不管用户还是路由器等网络设备,都需要预先使用非对称密钥算法产生一对密钥,其中包括一个公钥和一个私钥.公钥可以放在服务器上共享给属于 这个密钥系统的所有用户与设备,而私钥需要由持有者严格保护,确保只有持有者才能碓一拥有.
非对称密钥算法的特点是一个密钥加密的信息,必须使用另一个密钥来解密.也就是公钥加密私钥解密,私钥加密公钥解密.公钥加密的数据,无法再使用公钥解密,私钥加密的数据,也无法再使用私钥解密.我们可以使用非对称密钥算法来加密数据和对数据进行数字签名.
非对称密钥算法的特点为:
工作特点:
- 用一个密钥加密 的数据只有用另一个密钥来解密
- 仅用于密钥交换(加密密钥)和数字签名(加密散列)
优点:
- 安全
- 由于不必担心交换的公钥被劫持,所以非对称密钥的分发更安全
- 密钥数目和参与者数目相同
- 在交换公钥之前不需要预先建立某种信任关系
- 支持数字签名和不可否认性
缺点:
- 加密速度很慢
- 密文会变长
非对称密钥算法的主流协议:
- RSA(数字签名和数字证书的主法协议)
- DH(IPSec产生密钥资源的主要协议)
- ECC(椭圆曲线算法)
巧妙的加密解决方法
把对称密钥和非对称密钥要结合,可以巧妙的解决加解决密的问题.
发起方处理如下:
接收下处理如下:
这个方案中,我们使用了对称加密算法驿大量的实际数据(重要信息)进行加密,因而很好地利用了对称密钥算法加密速度快.密文紧凑的优势.同时我们又用非对称密钥算法,对对称密 钥算法使用的随机密钥进行加密,因而实现了安全的密钥交换,很好地得用了非对称密钥 不怕中途劫持的特点.这个巧妙的解决方案大量地运用在实际加密技术中,IPSec VPN也是先使用非对称密钥算法DH来产生密钥资源,然后再使用对称密钥算法(DES.3DES等)来加 密实际数据.
封装协议
IPSec有ESP和AH两种封装协议.
EPS协议
ESP(Encapsulation Security Payload)的IP协议号为50,ESP能够为数据提供私密性.完整性和源认证3大方面的保护,并且能够抵御重放攻击(反复发送相同的包,接收 方由于 不断解密消耗系统资源,实现拒绝服务攻击(DOS)).ESP只能保护IP负载数据,不对原始IP头部进行任何安全防护.
AH协议
AH(Authentication Header)IP协议号为51,AH只能够为数据提供完整性和源认证两个方面的安全服务,并且抵御重放攻击.AH并不能为灵气提供私密性服务,也就是说不加密,所以在实际部署IPSec VPN的时候很少使用AH,绝大部分IPSec VPN都会使用ESP进行封装.当然AH不提供私密性服务,只是它不被广泛 用用的其中一个原因.
IPSec有如下两种数据封装模式:
- 传输模式(Transport mode )
- 隧道模式(Tunnel mode )
传输模式主要就是在原始IP头部和IP负载(TCP头部和应用层数据)之间插入一个ESP头部.当然ESP还会在最后追加上ESP尾部和ESP验证数据部分,并且对IP负载和ESP尾部进行加密和验证处理,但原始IP头部被完整地保留了下来.
隧道模式封装示图:
隧道模式把原始IP数据包整个封装到了一个新的IP数据包中,并且在新IP头部和原始IP头部插入了ESP头部,以此对整个原始数据我进行了加密和验证处理.那么,什么样的网络拔掉适合使用隧道模式来封装ESP数据包呢?站点到站点的IPSec VPN就是一个经典的实例.
密钥有效期
Cisco的IPSec VPN用于加密实际数据密钥,默认每一个小时就要更新一次,但下一次使用的密钥,是由当前这个小时使用的密钥 ,通过一系列的算法衍生得出的.敢就是说这些密钥之间存在推演关系.这样的密钥更新就不能叫做完美向前保密PFS(Perfect Forward Secrecy).PFS要求第一次密钥更新,都需要重新产生全新的密钥,和以前使用的密钥不存在任何呼和衍生关系.Cisco的IPSec VPN一旦启用了PFS技术,就会在第一个小时结束的时候,展开一次全新DH交换,产生全新的密钥用于下一个小时加密.