体系结构
IPSec 并非单独协议,而是定义在 IP Network 上数据安全的整套体系结构;
IPSec VPN 主要由如下协议套件组成:
1)AH(Authentication Header),主要功能有:数据源验证、数据完整性校验、防报文重放;但是 AH 并不加密所保护的数据报;
2)ESP(Encapsulating Security Payload),提供 AH 的所有功能外(但其数据完整性校验不包括 IP Header),还能加密 IP 报文;
3)IKE(Internet Key Exchange):IKEv1/IKEv2,其用于:设置 SA(安全关联)的协议;自动协商 AH 和 ESP 所使用的密码算法;
IPSec 使用 AH 和 ESP 两种安全协议来传输和封装数据,提供认证或加密等安全服务:
1)AH 和 ESP 提供的安全功能依赖于协议采用的验证、加密算法;
2)AH 仅支持认证功能,不支持加密功能;ESP支持认证和加密功能;
3)安全协议提供认证或加密等安全服务需要有密钥的存在。
密钥交换的方式有两种:
1)带外共享密钥:在发送、接收设备上手工配置静态的加密、验证密钥。双方通过带外共享的方式(例如通过电话或邮件方式)保证密钥一致性。这种方式的缺点是可扩展性差,在点到多点组网中配置密钥的工作量成倍增加。另外,为提升网络安全性需要周期性修改密钥,这种方式下也很难实施。
2)通过 IKE 协议自动协商密钥:IKE 建立在 Internet 安全联盟和 ISAKMP(密钥管理协议)定义的框架上,采用 DH(Diffie-Hellman)算法在不安全的网络上安全地分发密钥。这种方式配置简单,可扩展性好,特别是在大型动态的网络环境下此优点更加突出。同时,通信双方通过交换密钥交换材料来计算共享的密钥,即使第三方截获了双方用于计算密钥的所有交换数据,也无法计算出真正的密钥。
加密算法
ESP 能够对 IP Packet 内容进行加密保护, 防止报文内容在传输过程中被窥探。 加密算法实现主要通过 对称密钥 系统,它使用相同的密钥对数据进行加密和解密。
一般来说IPSec使用加密算法有以下几种:
1)DES,使用56bit的密钥对一个64bit的明文块进行加密。
2)3DES,使用三个56bit的DES密钥(共168bit密钥) 对明文进行加密。
3)AES,使用AES密钥对明文进行加密。 密钥的长度分为128bit、 192bit、 256bit。
3DES比DES具有更高的安全性, 但其加密数据的速度要比DES慢得多。 AES比3DES的计算复杂度低, 而加密强度却比3DES高。
验证算法
AH 和 ESP 都能够对 IP Packet 的完整性进行验证,以判别报文在传输过程中是否被篡改。验证算法的实现主要是通过杂凑函数,杂凑函数是一种能够接受任意长的消息输入, 并产生固定长度输出的算法,该输出称为消息摘要。IPSec对等体计算摘要, 如果两个摘要是相同的, 则表示报文是完整未经篡改的。
一般来说IPSec使用两种验证算法:
1)MD5,通过输入任意长度的消息, 产生128bit的消息摘要。
2)SHA-1,通过输入长度小于264bit的消息, 产生160bit的消息摘要。
SHA-1 的摘要长于 MD5,因而是更安全的。但是SHA1的计算过程比MD5更耗费时间和资源。
感兴趣数据流
是指需要通过 IPSec 处理的数据流;
通过某些配置来抓取感兴趣数据流,其将会通过 SA 协商的各种参数进行处理、封装,并通过 IPSec 隧道进行转发。
封装模式
传输模式,Transport,数据加密
Implementing IPsec Transport Mode
在传输模式下,IPSec VPN 只对数据进行加密,所以需要在 IP Header 与 Payload 间添加 AH Header 或 ESP Header 部分。
AH 仅支持认证:
1)认证部分:其 HASH 为 IP + AH + Payload 部分(仅验证在传输过程中所有不变的部分);
ESP 支持认证和加密:
1)加密部分:Payload + ESP Trailer
2)认证部分:其 HASH 为 ESP + Payload + ESP Trailer 部分;
AH + ESP 支持认证和加密,其认证部分与加密部分如图所示;
在传输模式下,IP Header 依旧为原始地址:
1)多用于数据加密;在 L2TP over IPSec 中,IPSec 负责数据加密;
2)不能用于多个内网主机通讯(需要使用 IPSec VPN 的隧道模式)
应用场景:
1)GRE over IPSec;
2)两台主机间数据加密;
隧道模式,Tunnel,site-to-site VPN
在隧道模式下,IPSec 将为整个 IP 报文添加 AH 或 ESP 头部,此时 AH/ESP 将添加到 IP Header 间,并添加新的 IP 头部(路由器地址)。
流量处理
基于IPSec业务应用,不管是出站还是入站流量,防火墙均根据数据类型采取 3 个方面进行处理:丢弃报文、绕过安全服务、应用安全服务;
出站流量:防火墙首先查看出站数据报文流量是否属于定义的保护数据流,以判断将为这个报文提供哪些安全服务输出,可能有以下几类情况:
1)绕过安全服务:在这类情况下,报文不属于定义的保护数据流,将不应用IPSec策略,只进行传统的IP转发处理流程;
2)应用安全服务:在这类情况下,此报文将根据已建立的SA,对报文应用IPSec策略后进行转发。对于尚未建立SA情况,将调用IKE,以便完成SA建立;
入站流量:入站流量处理与出站流量有所区别,其将根据报文是否含有IPSec头对此报文进行以下动作处理。
1)丢弃报文:若报文不含IPSec头,且查看防火墙安全转发策略后,其策略输出为丢弃,那么数据报文就会被丢弃。若策略输出为应用IPSec,但SA未建立数据报文同样也会被丢弃
2)绕过安全服务: 若报文不含IPSec头,则根据防火墙安全转发策略将数据报文进行传统的IP转发处理流程;
3)应用安全服务:若报文含IPSec头,且已建立SA,那么数据报文将会被递交给IPSec层进行处理;