Skip to main content

5.2 安全关联负载 (Security Association Payload)

安全关联(SA)负载在GDOI中用于协商群组安全关联的参数。GDOI扩展了ISAKMP SA负载的使用,以支持群组密钥管理的特定需求。

SA负载格式

SA负载使用标准的ISAKMP SA负载格式,但DOI字段设置为GDOI DOI值:

 0                   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 ! RESERVED ! Payload Length !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Domain of Interpretation (DOI) !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Situation !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! !
~ SA KEK and/or SA TEK Payloads ~
! !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段说明:

  • Next Payload: 下一个负载的类型
  • Payload Length: SA负载的总长度
  • DOI: 必须 (MUST) 设置为GDOI DOI值
  • Situation: GDOI特定的情境值
  • 后续内容: 包含SA KEK和/或SA TEK负载

GDOI SA负载的特点

在GDOI中,SA负载与传统的ISAKMP SA负载有以下不同:

1. DOI值

DOI字段必须 (MUST) 设置为GDOI DOI值(由IANA分配)。

2. 后续负载

SA负载后面跟随一个或多个:

  • SA KEK负载: 定义密钥加密密钥安全关联
  • SA TEK负载: 定义流量加密密钥安全关联

组成员可以 (MAY) 请求:

  • 仅KEK (用于接收GROUPKEY-PUSH消息)
  • 仅TEK (如果已有KEK)
  • KEK和TEK (完整的群组安全关联)

3. Situation字段

Situation字段用于指定SA的使用场景和要求。GDOI定义的Situation值包括:

  • 0x00000000: 默认情况
  • 其他值: 保留供将来使用

在GROUPKEY-PULL中的使用

请求(组成员 -> GCKS)

组成员在请求中发送SA负载来指示希望获取的SA类型:

SA {
DOI = GDOI_DOI
Situation = 0
SA_KEK {
// KEK参数建议
}
SA_TEK {
// TEK参数建议
}
}

响应(GCKS -> 组成员)

GCKS在响应中发送SA负载来传递实际的群组SA:

SA {
DOI = GDOI_DOI
Situation = 0
SA_KEK {
// 实际的KEK参数和密钥材料
}
SA_TEK {
// 实际的TEK参数和密钥材料
}
}

在GROUPKEY-PUSH中的使用

在GROUPKEY-PUSH消息中,SA负载用于更新群组SA:

SA {
DOI = GDOI_DOI
Situation = 0
SA_KEK {
// 新的KEK参数(如果更新KEK)
}
SA_TEK {
// 新的TEK参数(如果更新TEK)
}
}

GROUPKEY-PUSH中的SA负载是可选的,仅在需要更新SA参数时包含。密钥材料通过密钥下载(KD)负载传输。

处理规则

发送方规则

发送SA负载时:

  1. 设置DOI: 将DOI字段设置为GDOI DOI值
  2. 设置Situation: 根据需要设置Situation字段
  3. 包含子负载: 至少包含一个SA KEK或SA TEK负载
  4. 计算长度: 设置正确的总长度

接收方规则

接收SA负载时:

  1. 验证DOI: 检查DOI是否为GDOI DOI
  2. 检查Situation: 验证Situation值是否受支持
  3. 解析子负载: 提取SA KEK和SA TEK负载
  4. 验证一致性: 确保子负载与请求或群组策略一致

与其他负载的关系

SA负载通常与以下负载一起使用:

  • 密钥下载(KD)负载: 在GROUPKEY-PULL响应和GROUPKEY-PUSH中传输实际的密钥材料
  • 密钥交换(KE)负载: 如果使用完美前向保密性(PFS)
  • 序列号(SEQ)负载: 在GROUPKEY-PUSH中提供重放保护

安全考虑

SA负载必须 (MUST) 通过适当的机制保护:

  • 在GROUPKEY-PULL中: 通过第1阶段SA加密
  • 在GROUPKEY-PUSH中: 通过KEK加密

SA参数的选择应该 (SHOULD) 遵循当前的密码学最佳实践,包括:

  • 使用足够强度的加密算法
  • 使用适当的密钥长度
  • 设置合理的密钥生命周期

详细的SA KEK和SA TEK负载格式分别在5.3节和5.4节中描述。