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负载时:
- 设置DOI: 将DOI字段设置为GDOI DOI值
- 设置Situation: 根据需要设置Situation字段
- 包含子负载: 至少包含一个SA KEK或SA TEK负载
- 计算长度: 设置正确的总长度
接收方规则
接收SA负载时:
- 验证DOI: 检查DOI是否为GDOI DOI
- 检查Situation: 验证Situation值是否受支持
- 解析子负载: 提取SA KEK和SA TEK负载
- 验证一致性: 确保子负载与请求或群组策略一致
与其他负载的关系
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节中描述。