一、IPSec驱动程序
IPSec驱动程序负责监视、筛选和保护IP通信。它负责监视所有出入站IP数据包,并将每个 IP 数据包与作为 IP 策略一部分的 IP 筛选器相匹配。一旦匹配成功,IPSec驱动程序通知IKE开始安全协商。下图为IPSec驱动程序服务示意图。
图八 IPSec驱动程序服务
在安全协商(相关内容见:IPSec基础(四)--Internet密钥交换(IKE)和密钥保护)成功完成后,发送端IPSec驱动程序执行以下步骤:
1.从IKE处获得SA和会话密钥
2.在IPSec驱动程序数据库中查找相匹配的出站SA,并将SA中的SPI插入IPSec报头
3.对数据包签名--完整性检查;如果要求机密保护,则另外加密数据包
4.将数据包随同SPI发送至IP层,然后进一步转发至目的主机
接收端IPSec驱动程序执行以下步骤:
1.从IKE处获得会话密钥,SA和SPI
2.通过目的地址和SPI在IPSec驱动程序数据库中查找相匹配的入站SA
3.检查签名,对数据包进行解密(如果是加密包的话)
4.将数据包递交给TCP/IP驱动程序,然后再交给接收应用程序
二、IPSec体系结构模型图
在分别介绍了IKE,密钥管理和IPSec驱动程序后,我们来看一个完整的IPSec体系结构模型图,以便更好地理解IPSec体系结构。
图九 IPSec流程图
为简单起见,我们假设这是一个Intranet例子,每台主机都有处于激活状态的IPSec策略:
1.用户甲(在主机A上)向用户乙(在主机B上)发送一消息
2.主机A上的IPSec驱动程序检查IP筛选器,查看数据包是否需要受保护以及需要受到何种保护
3.驱动程序通知IKE开始安全协商
4.主机B上的IKE收到请求安全协商通知
5.两台主机建立第一阶段SA,各自生成共享"主密钥" 注:若两机在此前通信中已经建立起第一阶段SA,则可直接进行第二阶段SA协商
6.协商建立第二阶段SA对:入站SA和出站SA。SA包括密钥和SPI。
7.主机A上IPSec驱动程序使用出站SA对数据包进行签名(完整性检查)与/或加密。
8.驱动程序将数据包递交IP层,再由IP层将数据包转发至主机B
9.主机B网络适配器驱动程序收到数据包并提交给IPSec驱动程序。
10.主机B上的IPSec驱动程序使用入站SA检查完整性签名与/或对数据包进行解密。
11.驱动程序将解密后的数据包提交上层TCP/IP驱动程序,再由TCP/IP驱动程序将数据包提交主机B的接收应用程序。
以上是IPSec的一个完整工作流程,虽然看起来很复杂,但所有操作对用户是完全透明的。中介路由器或转发器仅负责数据包的转发,如果中途遇到防火墙、安全路由器或代理服务器,则要求它们具有IP转发功能,以确保IPSec和IKE数据流不会遭拒绝。
这里需要指出的一点是,使用IPSec保护的数据包不能通过网络地址译码NAT。因为IKE协商中所携带的IP地址是不能被NAT改变的,对地址的任何修改都会导致完整性检查失效。