searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

基于strongswan的ipsec协议报文分析

2023-06-20 02:13:35
270
0

通常可以使用strongswan组件来模拟ipsec场景,使用strongswan来搭建ipsec场景的具体步骤不在本文介绍范围内,请参考其他文档搭建ipsec场景。

 

本文假设已经使用strongswan模拟出ipsec场景,并端到端互通:

 

假设上图中icmp流量可以命中兴趣流并建立ipsec隧道,针对上述流量抓包,抓包结果如图所示:

可以看到总共21个报文;前6个为协商阶段一,建立IKE SA;第7-9个报文为协商阶段二,建立IPSEC SA;第10-19个报文为加密的ICMP报文,下面对报文挨个分析。

 

报文1如下图所示:

用户VPN侧发起协商,使用的是UDP协议,端口号是500,上层协议是ISAKMP;可以看到发起端提供了自己的cookie值,以及SA的加密套件,加密套件主要是加密算法,哈希算法,认证算法,生存时间等。

Initiator SPI: d8ec4745d242adaa //发起者的SPI值,告知响应端主机要使用IPSEC的哪一把密钥来加密这个包

Responder SPI: 0000000000000000 //响应者的SPI值,第一个包只有发起者没有响应者所以响应者的SPI为空

Version:1.0 //IKE版本号,表示使用ikev1建立连接

Exchange type:Identity Protection (Main Mode) (2) //IKE协商模式为主模式

IKE Attribute (t=12,l=4): Life-Duration: 100800 //密钥周期,密钥过期后会重新协商IKE

IKE Attribute (t=1,l=2): Encryption-Algorithm: AES-CBC //IKE加密数据用的加密算法

IKE Attribute (t=2,l=2): Hash-Algorithm: SHA //IKE校验数据完整性的算法

IKE Attribute (t=3,l=2): Authentication-Method: Pre-shared key //使用预共享密钥认证

IKE Attribute (t=4,l=2): Group-Description: 1536 bit MODP group //Diffie-Hellman (DH) 组在密钥交换进程中使用的1536 bit的密钥强度

 

报文2如下图所示:

网关VPN侧收到用户VPN侧发送的加密套件后,对比自己是否有相对应的加密套件,如果有就发送自己的cookie值和用户VPN侧相同的加密套件;如果没有相同加密套件则IKE建立失败。

Responder SPI: eb6b1b9fc6f1d8b8 //响应者的SPI值,告知发送端使用哪一把密钥加密数据包

 

报文3如下图所示:

用户VPN侧生成随机数和DH公共值,发送自己的DH公共值和Nonce随机数,用于生成加密时所需要的KEY值。

Key Exchange Data: 4e76de3365590153584e28e6f36bbb15d0dce69effdcb78726f55683aa97ef5e3cd02bab… //DH公共值,DH公共值通过Diffie-Hellman算法计算出来;在报文1和报文2中所协商的算法需要一个相同的KEY(即预共享密钥),但这个KEY不能在链路中传递。所以,该过程的目的是分别在两个对等体间独立地生成一个DH公共值,然后在报文中发送给对端,对端通过公式计算出相同的KEY值

 

报文4如下图所示:

类似于报文3,网关VPN侧也生成随机数和DH公共值,发送自己的DH公共值和Nonce随机数。

 

报文5如下图所示:

发送本端身份和验证信息,由于前面已经协商好了加密算法和KEY值,该报文被加密。

 

报文6如下图所示:

类似于报文5。

 

报文7如下图所示:

进行IPSEC SA的协商,主要协商封装方式、加密算法、生存时间和兴趣流等,该报文被加密。

Exchange type:Quick Mode(32) //交换类型使用快速模式,IPSec协商时只有快速模式

 

报文8如下图所示:

网关VPN侧确认收到的协商信息。

 

报文9如下图所示:

用户VPN侧二次确认,并表明本方处于主动状态。

0条评论
作者已关闭评论
l****n
1文章数
0粉丝数
l****n
1 文章 | 0 粉丝
l****n
1文章数
0粉丝数
l****n
1 文章 | 0 粉丝
原创

基于strongswan的ipsec协议报文分析

2023-06-20 02:13:35
270
0

通常可以使用strongswan组件来模拟ipsec场景,使用strongswan来搭建ipsec场景的具体步骤不在本文介绍范围内,请参考其他文档搭建ipsec场景。

 

本文假设已经使用strongswan模拟出ipsec场景,并端到端互通:

 

假设上图中icmp流量可以命中兴趣流并建立ipsec隧道,针对上述流量抓包,抓包结果如图所示:

可以看到总共21个报文;前6个为协商阶段一,建立IKE SA;第7-9个报文为协商阶段二,建立IPSEC SA;第10-19个报文为加密的ICMP报文,下面对报文挨个分析。

 

报文1如下图所示:

用户VPN侧发起协商,使用的是UDP协议,端口号是500,上层协议是ISAKMP;可以看到发起端提供了自己的cookie值,以及SA的加密套件,加密套件主要是加密算法,哈希算法,认证算法,生存时间等。

Initiator SPI: d8ec4745d242adaa //发起者的SPI值,告知响应端主机要使用IPSEC的哪一把密钥来加密这个包

Responder SPI: 0000000000000000 //响应者的SPI值,第一个包只有发起者没有响应者所以响应者的SPI为空

Version:1.0 //IKE版本号,表示使用ikev1建立连接

Exchange type:Identity Protection (Main Mode) (2) //IKE协商模式为主模式

IKE Attribute (t=12,l=4): Life-Duration: 100800 //密钥周期,密钥过期后会重新协商IKE

IKE Attribute (t=1,l=2): Encryption-Algorithm: AES-CBC //IKE加密数据用的加密算法

IKE Attribute (t=2,l=2): Hash-Algorithm: SHA //IKE校验数据完整性的算法

IKE Attribute (t=3,l=2): Authentication-Method: Pre-shared key //使用预共享密钥认证

IKE Attribute (t=4,l=2): Group-Description: 1536 bit MODP group //Diffie-Hellman (DH) 组在密钥交换进程中使用的1536 bit的密钥强度

 

报文2如下图所示:

网关VPN侧收到用户VPN侧发送的加密套件后,对比自己是否有相对应的加密套件,如果有就发送自己的cookie值和用户VPN侧相同的加密套件;如果没有相同加密套件则IKE建立失败。

Responder SPI: eb6b1b9fc6f1d8b8 //响应者的SPI值,告知发送端使用哪一把密钥加密数据包

 

报文3如下图所示:

用户VPN侧生成随机数和DH公共值,发送自己的DH公共值和Nonce随机数,用于生成加密时所需要的KEY值。

Key Exchange Data: 4e76de3365590153584e28e6f36bbb15d0dce69effdcb78726f55683aa97ef5e3cd02bab… //DH公共值,DH公共值通过Diffie-Hellman算法计算出来;在报文1和报文2中所协商的算法需要一个相同的KEY(即预共享密钥),但这个KEY不能在链路中传递。所以,该过程的目的是分别在两个对等体间独立地生成一个DH公共值,然后在报文中发送给对端,对端通过公式计算出相同的KEY值

 

报文4如下图所示:

类似于报文3,网关VPN侧也生成随机数和DH公共值,发送自己的DH公共值和Nonce随机数。

 

报文5如下图所示:

发送本端身份和验证信息,由于前面已经协商好了加密算法和KEY值,该报文被加密。

 

报文6如下图所示:

类似于报文5。

 

报文7如下图所示:

进行IPSEC SA的协商,主要协商封装方式、加密算法、生存时间和兴趣流等,该报文被加密。

Exchange type:Quick Mode(32) //交换类型使用快速模式,IPSec协商时只有快速模式

 

报文8如下图所示:

网关VPN侧确认收到的协商信息。

 

报文9如下图所示:

用户VPN侧二次确认,并表明本方处于主动状态。

文章来自个人专栏
SDWAN相关
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0