IKEv1报文交互简析

隧道XFRM 专栏收录该内容
32 篇文章 2 订阅

IKEv1协议分为两个阶段。阶段1(Phase 1)用来建立IKE SA安全关联;阶段2(Phase 2)用来建立IPSec SA安全关联,前者有两种模式:主模式与野蛮模式。后者有快速模式(Quick mode)完成。

阶段1(Phase 1)其中主模式下共由3组报文组成,Phase1建立的IKE SA主要用来保护阶段2的协商过程,以及保护状态信息等的报文传输。主模式(Main Mode)的第一组报文用来协商加密及完整性校验等参数:

有如下日志log信息可见,responder回复的协商结果:加密算法使用3DES_CBC、哈希算法采用SHA、认证方法为预共享密钥、Diffie-Hellman组选用5(1536-bit modulus对应DH Group 5)。

ike 0: comes 192.168.1.97:500->192.168.1.127:500,ifindex=4....
ike v1: responder: main mode get first message...
ike v1: negotiation result
ike v1: proposal id = 1:
ike v1:   protocol id = ISAKMP:
ike v1:      trans_id = KEY_IKE.
ike v1:      encapsulation = IKE/none
ike v1:         type=OAKLEY_ENCRYPT_ALG, val=3DES_CBC.
ike v1:         type=OAKLEY_HASH_ALG, val=SHA.
ike v1:         type=AUTH_METHOD, val=PRESHARED_KEY.
ike v1:         type=OAKLEY_GROUP, val=1536.
ike v1: ISKAMP SA lifetime=28800
ike v1: selected NAT-T version: RFC 3947
ike v1: cookie c8de607e668cc6ef/e5a5cd77892a7659
ike v1: sent IKE msg : 192.168.1.127:500->192.168.1.97:500, len=120

主模式的第二组报文,主要用于交换各自的KE(Key Exchange)与NONCE数据,这两个数据用来生成之后使用的加密主密钥(SKEYID),生成过程中将使用第一组报文协商一致后的加密/完整性校验参数,SKEYID生成公式如下:

预共享密钥方式:
SKEYID = prf(pre-shared_key, Nonce_initiator | Nonce_responder)

证书方式:
SKEYID = prf(HASH(Nonce_initiator | Nonce_responder), Cookie_initiator  |  Cookie_responder)

其中prf为带秘钥的哈希函数(pseudo-random function),Nonce_initiator和Nonce_responder分别为IKE请求发起者的NONCE值与响应者的NONCE值。

根据主密钥(SKEYID),生成其它三个秘钥:

SKEYID_d 用于IKE阶段2
SKEYID_a 用于数据完整性校验
SKEYID_e 用于加密IKE消息

以下为日志信息,自此组报文之后的报文都为加密报文:

ike 0: comes 192.168.1.97:500->192.168.1.127:500,ifindex=4....
ike v1: responder:main mode get 2nd message...
ike v1: NAT not detected 
ike v1: sent IKE msg : 192.168.1.127:500->192.168.1.97:500, len=292
ike v1: ISAKMP SA c8de607e668cc6ef/e5a5cd77892a7659 key 24:5886A076EACF9F262C12907359E4F3AB565503F4D7F71094

 

Main模式的第三组报文,使用SKEYID_e秘钥加密传输,其主要内容为ID字段与一个HASH值字段。哈希值字段将选取之前的报文中的一些字段生成,目的在于可验证之前的传输是否正常以及做身份认证。其包含的字段有第一组报文交换中的两个Cookie值(Cookie_i与Cookie_r)和安全关联(SA)载荷;第二组报文中的两个Key Exchange数据;第三组报文中自身的ID值;以及主密钥(SKEYID)。

如下日志信息显示,预共享秘钥认证成功。

 

ike 0: comes 192.168.1.97:500->192.168.1.127:500,ifindex=4....
ike v1: responder: main mode get third message...
ike v1: PSK authentication succeeded
ike v1: authentication OK
ike v1: sent IKE msg : 192.168.1.127:500->192.168.1.97:500, len=68
ike v1: established IKE SA c8de607e668cc6ef/e5a5cd77892a7659

 

阶段2用于建立IPSec SA,其采用快模式Quick Mode。快模式所有的报文都使用第一阶段生成的秘钥SKEYID_e进行加密,并且使用秘钥SKEYID_a进行完整性校验。加密算法与验证算法都采用第一阶段协商的结果。 Quick模式有3个报文组成。

第一个报文用于协商安全关联提议(SA Proposal)与数据加密转换集(Transformset),用于包含此数据包完整性的hash值计算如下:

HASH = prf ( SKEYID_a, M-ID | SA Proposal | Nonce_i | (KE) | (CID_I) | (CID_r))

此HASH算法的秘钥为SKEYID_a,M-ID为ISAKMP报文头中的Message-ID值,此值在快模式的三个报文中相同,标识同一个IPSec SA的建立。Nonce_i为随机数。KE(Key Exchange Data)与 CID_i、CID_r(Client ID)都为可选值,依据配置而定。如果开启PFS(Perfect Forward Security),就需要KE字段,以便重新生成新的秘钥。

粗略的讲,最后得到的哈希值大致为整个报文的HASH值。
 

ike 0: comes 192.168.1.97:500->192.168.1.127:500,ifindex=4....
ike 0: responder received first quick-mode message
ike v1:p2: peer proposal is: peer:0:0.0.0.0-255.255.255.255:0, me:0:0.0.0.0-255.255.255.255:0
ike v1:p2: matched phase2
ike v1:p2: our proposal:
ike v1:p2: proposal id = 1:
ike v1:p2:   protocol id = IPSEC_ESP:
ike v1:p2:   PFS DH group = 5
ike v1:p2:      trans_id = ESP_3DES
ike v1:p2:      encapsulation = ENCAPSULATION_MODE_TUNNEL
ike v1:p2:         type = AUTH_ALG, val=SHA1
ike v1:p2:      trans_id = ESP_AES (key_len = 128)
ike v1:p2:      encapsulation = ENCAPSULATION_MODE_TUNNEL
ike v1:p2:         type = AUTH_ALG, val=SHA1
ike v1:p2: incoming proposal:
ike v1:p2: proposal id = 1:
ike v1:p2:   protocol id = IPSEC_ESP:
ike v1:p2:   PFS DH group = 5
ike v1:p2:      trans_id = ESP_3DES
ike v1:p2:      encapsulation = ENCAPSULATION_MODE_TUNNEL
ike v1:p2:         type = AUTH_ALG, val=SHA1
ike v1:p2:      trans_id = ESP_AES (key_len = 128)
ike v1:p2:      encapsulation = ENCAPSULATION_MODE_TUNNEL
ike v1:p2:         type = AUTH_ALG, val=SHA1
ike v1:p2: negotiation result:
ike v1:p2: proposal id = 1:
ike v1:p2:   protocol id = IPSEC_ESP:
ike v1:p2:   PFS DH group = 5
ike v1:p2:      trans_id = ESP_3DES
ike v1:p2:      encapsulation = ENCAPSULATION_MODE_TUNNEL
ike v1:p2:         type = AUTH_ALG, val=SHA1
ike v1:p2: set pfs=1536
ike v1:p2: using tunnel mode.
ike v1:p2: sent IKE msg : 192.168.1.127:500->192.168.1.97:500, len=356

 

与报文1类似,第二个回复报文包括协商后的结果,此报文的HASH值如下,与报文1的hash的唯一不同是随机数采用Nonce_r:

HASH = prf ( SKEYID_a, M-ID | Nonce_I | SA offer | Nonce_r | (KE) | (CID_i) | (CID_r))

Quick模式的第3个报文确认之前的2个交互报文,其内容仅包括一个HASH值,其值如下:

HASH = prf ( SKEYID_a, 0 | M-ID | Nonce_i | Nonce_r)

 

ike 0: comes 192.168.1.97:500->192.168.1.127:500,ifindex=4....
ike v1: found 192.168.1.127 4 -> 192.168.1.97:500
ike v1:p2: replay protection enabled
ike v1:p2: SA life soft seconds=1777.
ike v1:p2: SA life hard seconds=1800.
ike v1:p2: IPsec SA selectors #src=1 #dst=1
ike v1:p2: add IPsec SA: SPIs=0dc36847/ebc60db2
ike v1:p2: IPsec SA dec spi 0dc36847 key 24:60B384FEB7463702B30F5DC178A80932A6B2DEE530B2D65C auth 20:DA5DA2B7357A029BF8B8C657EC8F1EF05C779927
ike v1:p2: IPsec SA enc spi ebc60db2 key 24:BDCD7B34121DCE1A2E1E64EF8808FD4A2F9EC05CA660DF80 auth 20:0D9F38476CF79ECCB68AF1E7AFE42DF87C4B0074
ike v1:p2: added IPsec SA: SPIs=0dc36847/ebc60db2

 

至此IKEv1协议的交互完成,IKE SA与IPSec SA创建完成。

 

 

  • 1
    点赞
  • 0
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
为了方便在手机上阅读,特整理本资料,来源于华为Hex文档整理而成,高清pdf格式,源文件详见华为Hex文档,仅做学习交流用。 本文档为最新版本V8.0,更新于2020年06月20,整理后共942页,文内设有目录、页眉,方便阅读及查找 共分为6章:1、协议地图;2、链路层;3、MPLS层;4、网络层;5、传输层;6、应用层。 目录 1 协议地图 6 2 链路层 7 2.1 以太帧格式 10 2.1.1 Ethernet Ⅱ以太帧 10 2.1.2 Novell Netware 802.3 Raw以太帧 15 2.1.3 IEEE 802.3 LLC以太帧 17 2.1.4 IEEE 802.3 SNAP以太帧 21 2.2 VLAN帧格式 26 2.3 QinQ帧格式 32 2.4 PPP 38 2.5 PPPoE 47 2.6 HDLC帧 55 2.6.1 IP over HDLC 55 2.6.2 PPP in HDLC-Like 57 2.7 ATM信元 61 2.7.1 ATM信元头 61 2.7.2 AAL5多协议封装 65 2.7.3 IPoEoA/PPPoEoA(AAL5 Ethernet/802.3封装) 69 2.7.4 PPPoA(AAL5 PPP封装) 72 2.8 STP/RSTP/MSTP帧 75 2.9 RPR帧 83 2.10 RRPP帧 88 2.11 LACP帧 91 2.12 以太OAM报文 98 2.12.1 EFM OAM(802.3ah) 98 2.12.2 CFM OAM(802.1ag) 108 2.13 ERPS(G.8032)帧 125 2.14 GVRP帧格式 131 2.15 LLDP帧 136 2.16 IS-IS 153 2.16.1 IS-IS报文通用格式 153 2.16.2 IS-IS Hello消息(IIH消息) 158 2.16.3 IS-IS LSP消息 162 2.16.4 IS-IS CSNP消息 167 2.16.5 IS-IS PSNP消息格式 173 3 MPLS层 178 3.1 MPLS 179 3.2 MPLS Ping/Tracert (MPLS Echo)报文 183 3.3 ATM PWE3 213 3.3.1 ATM PWE3通用封装格式 213 3.3.2 ATM PWE3 N:1信元模式 215 3.3.3 ATM PWE3 1:1信元模式 217 3.3.4 ATM PWE3 AAL5 CPCS-SDU帧模式 220 3.3.5 ATM PWE3 AAL5 CPCS-PDU帧模式 222 4 网络层 225 4.1 ARP/RARP报文 226 4.2 GRE报文格式 233 4.3 ICMP报文格式 240 4.3.1 ICMP报文通用格式 240 4.3.2 ICMP Echo Request/Reply消息格式 244 4.3.3 ICMP目的不可达消息格式 248 4.3.4 ICMP重定向消息 257 4.3.5 ICMP超时消息格式 260 4.3.6 ICMP参数问题消息格式 264 4.3.7 ICMP源端被关闭消息格式 265 4.4 ICMPv6报文格式 268 4.4.1 ICMPv6报文通用格式 269 4.4.2 ICMPv6 Echo消息 272 4.4.3 ICMPv6目的不可达消息 276 4.4.4 ICMPv6重定向消息 281 4.4.5 ICMPv6包太大(Too Big)消息 284 4.4.6 ICMPv6超时消息 286 4.4.7 ICMPv6参数错误消息 289 4.4.8 ICMPv6路由器请求RS(Router Solicitation)消息 291 4.4.9 ICMPv6路由器通告RA(RouterAdvertisement)消息 294 4.4.10 ICMPv6邻居请求NS(Neighbor Solicitation)消息 300 4.4.11 ICMPv6邻居通告NA(Neighbor Advertisement)消息 303 4.5 IGMP 307 4.5.1 IGMPv1报文格式 307 4.5.2 IGMPv2报文格式 310 4.5.3 IGMPv3成员查询消息 317 4.5.4 IGMPv3成员报告消息 322 4.6 IP in IP报文格式 332 4.7 IPSec 335 4.7.1 IPSec报文AH封装 336 4.7.2 IPSec ESP 340 4.7.3 IPSec IKE 345 4.8 IP报文格式 359 4.9 IPv6报文格式 368 4.10 IPv6 in IPv4 (6to4)报文格式 378 4.11 MLD报文
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值