前言

IPsec VPN架构可以提供 IP 数据包级别(第 3 层)的数据加密,并建立可扩展的、高安全性的、基于标准的安全解决方案。它可以保障数据的机密性和完整性,还可以提供身份认证和反重放保护。IPsec VPN是目前唯一用来实现安全 VPN 的方法。

IPSec的优势

IPsec(Internet Protocol Security)架构是 IETF 开发的一组开放式标准。
IPsec用一组加密协议来保护IP流量。
IPsec通过OSI参考模型的第3层(网络层)来保护IP流量,从而保护IP网络上的所有应用和通信。
通过与散列算法、对称密钥、非对称密钥的结合,IPsec可以提供以下安全服务。

  • 对端身份认证
  • 信息机密性:发送方对数据进行加密,以密文的形式在Internet上传送,接收方对接收的加密数据进行解密后处理或直接转发。
  • 信息完整性:接收方对接收的数据进行认证,以判定报文是否被篡改。
  • 信息源认证:接收方认证发送方身份是否合法。
  • 重放检测:接收方会拒绝旧的或重复的数据包,防止恶意用户通过重复发送捕获到的数据包所进行的攻击。
  • 访问控制
  • 数据流机密性

 原理

IPSec是一项标准的安全技术,它通过在数据包中插入一个预定义头部的方式,来保障OSI上层协议数据的安全。IPSec主要用于保护网络层(IP) 数据,因此它提供了网络层的安全性。

IPSec封装

图中上半部分所示是一个普通的IP数据包,下半部分所示是被IPSec加密后的数据包格式。

不难看出IPSec技术在原始IP头部和IP负载之间插入了一个IPSec头部,这样可以对原始的IP负载实现加密,同时还可以实现对IPSec头部和原始IP负载的验证,以确保数据的完整性

 IPSec框架

一些传统的安全技术(如HTTPS)以及无线安全技术(如WEP/WPA),往往会采用某种固定的加密和散列函数。

这种做法带有明显的赌博性质,因为如果某天这个加密算法曝出严重漏洞,那么使用这个加密算法或者散列函数的安全技术也就难 免要遭到淘汰。

为了避免这种在一棵树上吊死的悲惨事件发生,IPSec并没有定义具体的加密和散列函数。IPSec 的做法是提供一个框架性的结构,但每一次IPSec会话所使用的具体算法,都是通过协商来决定的。也就是说如果我们觉得3DES这个算法所提供的168 位的加密强度能够满足当前的需要,那么就不妨暂且使用这个协议来加密数据。但是只要有一天3DES出现了严重漏洞,或者出现了一个更好的加密协议,那么我们也可以马上更换加密协议,使IPSec VPN总是使用最新最好的协议来进行加密。

IPSec框架协议可选择性

 散列函数

散列函数也叫做HASH函数,主流的散列算法有MDS与SHA- 6散列函数的主要任务是验证数据的完整性。

通过散列函数计算得到的结果叫做散列值,这个散列值也常常被称为数据的指纹(Fingerprint)。

为什么散列函数会被称为数据的指纹呢?这是因为散列函数的工作原理和日常我们对指纹采集和使用的原理几乎一样。

 散列函数验证数据完整性的步骤:

步骤1:对“重要文件”执行散列函数计算得到散列值”散列值一“
步骤2:现在我们收到另外一个文件“文件?”,对“文件?”进行散列函数计算得到散列值“ 散列值二”

步骤3:将“散列值一”和“散列值二”进行对比,发现“散列值一”等于“散列值二”。
步骤4:由于散列值的唯一性(冲突避免),因此可以确定“文件?”就是“重要文件”。这两份文件的每一个比特(bit) 都完全相同。

散列函数验证数据完整性的方式png

 散列函数具有下面4个特点。

 1.固定大小

散列函数可以接收任意大小的数据,并输出固定大小的散列值。以MD5这个散列算法为例,不管原始数据有多大,通过MD5计算得到的散列值总是128 比特,而 SHA-1的输出长度则为160比特。

 2.雪崩效应

原始数据就算修改哪怕一个比特,计算得到的散列值也会发生巨大的变化。

 3.单向

只可能从原始数据计算得到散列值,不可能从散列值恢复哪怕一个比特的原始数据。

 4.冲突避免

几乎不能够找到另外一个数据和当前数据计算的散列值相同,因此散列函数能够 确保数据的唯一性。

 小结

  • IPSec VPN具有对端身份认证、信息机密性、信息完整性、信息源认证、重放检测、访问控制、数据流机密性等优势。
  • IPSec通过在数据包中插入一个预定义头部的方式,来保障OSI上层协议数据的安全,提高了网络层的安全性。
  • IPSec利用框架性的结构实现了安全性的与时俱进,可以及时的根据要求更换最新最好的协议。
  • IPSec通过使用散列函数保证了数据的完整性。

参考资料

《网络系统建设与运维高级》人民邮电出版社

《Cisco IPSec VPN实战指南》秦柯