曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4199|回复: 0
打印 上一主题 下一主题

IPSec 中的 ESP 机制详解

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2012-8-28 17:57:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ESP 的全称是 Encapsulated Security Payload ,即“
封装安全有效载荷
”,它的主要功能是“加密” 和 “完整性验证”。

“加密” 是为了避免数据包在传输时遭到截获而泄露。
“完整性验证” 的目的是确认数据包在传输过程中是否遭到篡改,或是因为网络传输质量不佳而造成的数据错误。

这两项功能在 ESP 协议中可以分开使用,也可以结合使用,完全根据使用者的需要来定制。一般情况下,通常都会选择加密功能,至于完整性验证却不一定会用得上,当然都用了,数据的安全性那么就得到更高保证。

在分析 ESP 协议的基本工作原理之前,先说明一下它和AH  协议的关系。在 IPSec 中,可以单独使用 AH 或 ESP,也可以同时使用它们,甚至是设置先使用 AH 还是 ESP 。不过,在大多数情况下,都只会使用 ESP 协议,而不是 AH 协议,这是因为 AH 协议并不提供加密,而在 VPN 中使用 IPSec 时,通常都是需要加密处理的。此外,因为 AH 协议现在已经较少使用,甚至在 RFC 中已经有人提议非处 IPSec 协议中的 AH 协议。至于是不是用 AH,完全由你个人来决定,如果服务器硬件支撑够好,使用 AH 协议也不是什么大问题,但一般情况下,只用 ESP 协议也就满足要求了。

传输模式中的 ESP
传输模式中的 ESP 工作框图如下所示:


在 ESP 协议中有加密及完整性验证两项功能。如果使用了加密功能,那么必须提供一个加密密钥,即上图中的 Host-A_Key-E 。另外,如果还使用了完整性验证,则必须提供另一个完整性验证时所需的加密密钥,即图中的 Host-A_Key-A 。如果主机B 需要解开主机A 发送来的数据包,就必须将主机A 的两个密钥传递给主机B,因此主机B 应该拥有  Host-A_Key-E  和 Host-A_Key-A 这两个密钥。

和 AH 协议一样,ESP 协议也是单向的,因此如果需要使用双向的 ESP 协议,就必须给主机B 也准备两个密钥,分别是上图中用来加密用的 Host-B_Key-E 和 用来验证完整性的 Host-B_Key-A 。一样的,这两个密钥也必须送给主机A。如此一来,主机A 和 主机B 就分别有了 4 个密钥。

下面讨论 ESP 协议加密的工作流程。

先假设主机A给主机B发送数据时,不使用 ESP 协议,那么数据包分组如下图所示:



如果使用了 ESP 协议后,首先会在 IP包头 和 TCP包头 之间插入一个 ESP 包头,并在数据包的末端加入 ESP Trailer 字段,这个字段主要是用来保存 ESP 协议工作时所需的一些参数。接着,将 TCP 包头,数据 以及 ESP Trailer 这 3 个部分以 Host-A_Key-E 加密。这样,就完成了 ESP 协议的加密操作。

如果要使用 ESP 协议的完整性验证功能,接下来系统就会对 ESP 包头及 Host-A_Key-E(这里用来简单表示 TCP包头,数据,ESP Trailer 这 3 个部分)进行哈希计算,接着再使用 Host-A_Key-A 对指纹进行加密,加密完成后的数据再附加在数据包的末端。

通过上面的两个步骤,就完成了加密和完整性验证两部分的处理工作,此时数据包分组如下图所示:


上面,ESP 的加密范围为:TCP 包头,数据,ESP Trailer
ESP 的验证范围为:ESP 包头,TCP 包头,数据,ESP Trailer

在 主机B 收到这个数据包后,主机B 就会先对 ESP包头 以及 Host-A_Key-E(TCP 包头,数据,ESP Trailer) 进行哈希计算,假设计算后得到的指纹为 F(A) 。接着,主机B 再使用 Host-A_Key-A 把 ESP Auth Trailer 部分解开,这样就可以得到当初主机A所计算出来的指纹,可令该结果为 F(B) ,如果 F(A) 等于 F(B) ,那么说明数据包的完整性得到了验证。最后,主机B 再使用上面的 Host-A_Key-E 将 Host-A_Key-E 将加密内容解密,此时主机B 就完全获得了主机A 所传递过来的数据包。

下面是 wireshark 对两个使用 ESP 协议通信主机的截图,在下图中,两个主机间的 ICMP 被配置为使用 ESP 协议,而其它的情况则不用 ESP 协议:




在上图中,在使用 ESP 后,其报文组成为:
IP 首部 ----  ESP 首部 ---- 有效载荷的其余部分 ---- ESP 尾部 ---- 鉴别数据(可变长度)
其中,ESP 首部为 32 位,就是我们所看到的 SPI (安全参数索引) 和 Sequnce (序号),这两个各占 4 个字节。

实验环境搭建可参考:《
使用 ipsec-tools 设置 SAD 和 SPD

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 20:00 , Processed in 0.078589 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表