简介
我们知道在使用 vpn 的时候,这些里面的信息都是经过加密的,而使用的加密服务就是 IPSec
IPSec 并不是一个单独的协议,而是一个协议族,一个框架,我们通过配置不同的参数,来实现不同的安全功能
在 IPSec 中,我们可以将其划分为三个部分
- 关于数据包格式的两个协议:AH(认证,完整性) 和 ESP(认证,完整性和保密性),其中 ESP 已经包含了 AH 的所有功能。且在 IPv6 的扩展部分已经包括这两个协议,所以这一部分是最重要的
- 三个加密算法的协议
- 互联网密钥交换协议(IKE:internet key exchange)
数据报的工作方式
运输方式
在传输层报文段的前后添加控制信息,然后添加 IP 首部,构成 IP 安全数据报
隧道方式
在原始 IP 数据包前后添加控制信息,然后添加新的 IP 首部,构成 IPSec
特别的是,这里新 IP 首部的地址,将是路由器的 IP 地址,而非主机的地址
【注】可以看到不论哪种方式,都是数据报报文内容被进行了加密,而报头没有
安全关联
安全关联其实就是一个安全的逻辑连接,我们知道网络层本身是无连接的,但是现在当两个主机进行 IPSec 安全通信时,我们将其设置为有连接的,如下图(通信前必须先建立连接)
我们来缕一缕其中的一些步骤:
- 当 H1 要发送数据给 H2 时,这个数据报会被 R1 这个路由器进行加密,使其编程一个 IPSec 数据报
- 如果 H1 发送数据给 H3 ,则无需加密,因为 H3 是在内部,仅需转发给内部
- 如果 H1 是发送数据给一个查询足球比赛的网站,也无需加密,因为两者并不存在这个安全关联
两个数据库
安全关联数据库
我们知道,SA 是单向的,如果需要多条 SA,那么这些 SA 存放在哪里呢,对,就是存放在安全关联数据库中
安全策略数据库
前面我们看到,比如当 H1 给一个足球网站发送信息时,并不需要加密,那么什么时候加密,什么时候不加密,这个策略过程由安全策略数据库完成