跳到主要内容

3.8. AUTH Payload

3.8. AUTH Payload​

AUTH 负载包含用于验证 IKE SA 建立中身份的数据。

AUTH 负载格式如下:

                 1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Payload |C| RESERVED | Payload Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Auth Method | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ Authentication Data ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                  Figure 11:  AUTH 负载格式

o Auth Method (1 字节) - 认证方法的类型。定义的值包括:

  • 1 - RSA 数字签名
  • 2 - 共享密钥消息完整性代码(PSK)
  • 3 - DSS 数字签名(已弃用)

o RESERVED (3 字节) - 必须发送为 0,接收时必须忽略。

o Authentication Data (变长) - 认证数据,其格式和内容由 Auth Method 决定。

认证数据的计算方式如下:

对于 RSA 签名(方法 1):AUTH = prf( SK_pi, ),其中 InitiatorSignedOctets 是待签名的数据。

对于共享密钥(方法 2):AUTH = prf( prf(Shared Secret, "Key Pad for IKEv2"), )。

对于 DSS 签名(方法 3):同 RSA 类似,使用 DSS 算法。

SignedOctets 由两部分组成:

  1. 用于创建 IKE SA 的 IKE_SA_INIT 消息(从 ISAKMP 头开始到包含发起方的 Nonce 的负载为止)。
  2. 一个伪随机函数应用于响应方的 nonce(包含发起方 SPI、响应方 SPI 和响应方 nonce 的连接)。

具体的 SignedOctets 构造见 RFC 5996 第 2.15 节。