我们知道VPN相当于是基于Internet上建立了一个虚拟的专用通道,和物理专线还是不一样,数据其实还是通过Internet在传输的,那这样还是不能够保证这些私有的数据传输安全,所以VPN是需要有一个保护机制的,最常用的就是IPsec,IPsec是IP security的缩写,即IP安全协议。它不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合。
IPSec是一个框架性架构,具体由两类协议组成:
- AH协议(Authentication Header,使用较少):可以同时提供数据完整性确认、数据来源确认、防重放等安全特性,不具备加密功能。
- ESP协议(Encapsulated Security Payload,使用较广):可以同时提供数据完整性确认、数据加密、防重放等安全特性,具备加密功能。
这些部分都可以采用多种算法来实现。我们来看一下IPsec主要涉及到的一些协议和密码算法是怎么来满足信息安全性的。关于这些算法的原理内容这里就细说了,有兴趣可以去看一看密码学。
1. 通过加密把数据从明文变成无法读懂的密文,从而确保数据的私密性。
如果加密密钥与解密密钥是相同的称为对称加密,由于对称加密的运算速度比较快,所以IPsec使用对称加密算法来加密数据。
主要有:
- DES(Data Encryption Standard)数据加密标准,是一种应用比较广泛的传统加密算法标准。
- 3DES三重数据加密标准,相当于是对每个数据块执行三次标准的DES加密算法。比DES更加安全。
- AES(Advanced Encryption Standard)高级加密标准,它的安全性机制高于DES,3DES。
2、通过对数据进行hash运算,产生类似于指纹的数据摘要,以保证数据的完整性。
主要是两种hash算法:
- MD5:使用128位共享安全秘钥和变长消息组合在一起运行输出一个128位的哈希值,该值被附加在原始消息的后面发往远端。
- SHA-1:使用160位共享安全密钥和变成消息组合一起运行输出160位哈希值,该值被附加在原始消息的后面发往远端。SHA-1安全性高于MD5。
对称加密和hash都是要求通信双方具有相同的密钥,那怎么在双方之间安全地传递密钥呢?
- DH(Diffe-Hellman)算法:一种确保共享密钥安全穿越不安全网络的方法。使用DH算法建立只有协商两端才知道的一个共享安全密钥。
3、通过身份认证保证数据的真实性,确定数据确实是由特定的对端发出的。
常用的身份认证方式:
- Pre-shared key预共享密钥:指通信双方在配置时预先手工输入相同的密钥。
IPSec除了一些协议原理外,我们更关注的是协议中涉及到方案制定的内容:
- 兴趣流:IPSec是需要消耗资源的保护措施,并非所有流量都需要IPSec进行处理,而需要IPSec进行保护的流量就称为兴趣流,最后协商出来的兴趣流是由发起方和响应方所指定兴趣流的交集,如发起方指定兴趣流为192.168.1.0/24<>10.0.0.0/8,而响应方的兴趣流为10.0.0.0/8<>192.168.0.0/16,那么其交集是192.168.1.0/24<>10.0.0.0/8,这就是最后会被IPSec所保护的兴趣流。
- 发起方:IPSec会话协商的触发方,IPSec会话通常是由指定兴趣流触发协商。
- 响应方: IPSec会话协商的接收方,响应方是被动协商,响应方可以指定兴趣流,也可以不指定(完全由发起方指定)。
- 发起方和响应方协商的内容主要包括:双方身份的确认和密钥种子刷新周期、AH/ESP的组合方式及各自使用的算法,还包括兴趣流、封装模式等。
- SA(Security Assocaition)安全关联:发起方、响应方协商的结果就是SA。
具体执行协商任务的协议叫做互联网密钥交换协议IKE(Internet Key Exchange)。我们以最常见的IPSec隧道模式为例,解释一下IPSec的协商过程:
- 发起方定义的兴趣流是源192.168.1.0/24目的10.0.0.0/8,所以在接口发送发起方内网PC发给响应方内网PC的数据包,能够得以匹配。
- 满足兴趣流条件,在转发接口上检查SA不存在、过期或不可用,都会进行协商,否则使用当前SA对数据包进行处理。
- 协商的过程通常分为两个阶段,第一阶段是为第二阶段服务,第二阶段是真正的为兴趣流服务的SA,两个阶段协商的侧重有所不同,第一阶段主要确认双方身份的正确性,主要目的就是对建立IPSec的双方进行认证,以确保只有合法的对等体(peer)才能建立IPSec VPN。协商得到的结果就是IKE SA。第二阶段则是为兴趣流创建一个指定的安全套件,其最显著的结果就是第二阶段中的兴趣流在会话中是密文。第二阶段的主要目的就是根据需要加密的实际流量(感兴趣流),来协商保护这些流量的策略。协商的结果就是IPSec SA。
我们对这一过程做一个简单的比喻:IKE协商过程就像两个公司做生意过程。两个公司在具体合作之前需要相互了解,最简单的方法可能就是核查对方公司的工商牌照、公司营业和信誉状况。目的就是相互进行认证,建立基本的信任关系。这个过程其实就是IKE第一个阶段需要完成的任务。一个阶段完成后,信任关系建立了,相应的IKE SA也就建立了。紧接着的主要任务就是基于具体的项目来签订合同。对于IPSec VPN而言,具体的项目就是安全保护通信点之间的流量,具体处理这些流量的策略(IPSec SA)就是合同。IKE第二阶段的任务就是基于需要被加密的流量协商相应的IPSec SA。一旦双方在第一阶段建立起了信任关系,他们就没有必要重复进行认证了。接下来,双方的议题就是根据第一阶段建立的IKE SA,给两个站点之间的很多需要被加密的流量协商不同的第二阶段策略(IPSec SA)。
可以说IPsec VPN内容还是比较多的,而且还比较难理解,后面会有具体的配置案列说明,IPsec在两种VPN模式站点到站点和远程访问下的应用,欢迎大家关注哈~