4.7 GCKS操作 (GCKS Operations)
群组控制器/密钥服务器(GCKS)负责管理群组安全关联并向授权的组成员分发密钥材料。本节描述GCKS执行的关键操作。
初始化
GCKS在开始为组成员提供服务之前必须 (MUST):
- 生成KEK: 为重密钥SA生成一个或多个密钥加密密钥(KEK)
- 生成TEK: 为数据安全协议生成流量加密密钥(TEK)
- 建立策略: 定义组的安全策略,包括加密算法、密钥生命周期等
- 配置LKH: 如果使用逻辑密钥层次结构(LKH),初始化密钥树结构
响应GROUPKEY-PULL请求
当GCKS收到来自组成员的GROUPKEY-PULL请求时:
- 验证授权: 检查请求方是否被授权访问请求的群组
- 验证第1阶段SA: 确认请求是通过有效的第1阶段SA接收的
- 处理请求: 提取请求中的参数(如请求的SA类型)
- 生成响应: 构造包含所请求SA的响应消息
- 发送响应: 使用第1阶段SA保护并发送响应
发送GROUPKEY-PUSH消息
GCKS定期或在特定事件发生时发送GROUPKEY-PUSH消息:
定期重密钥
GCKS应该 (SHOULD) 在TEK或KEK生命周期到期之前发送新密钥:
- 生成新密钥: 创建新的TEK或KEK
- 构造消息: 创建包含新SA的GROUPKEY-PUSH消息
- 加密消息: 使用当前KEK加密消息
- 多播消息: 将消息发送到群组的多播地址
成员删除时的重密钥
当成员离开群组时,如果配置了前向访问控制(Forward Access Control):
- 生成新密钥: 创建新的TEK和/或KEK
- 计算LKH密钥: 如果使用LKH,更新受影响的密钥树节点
- 发送GROUPKEY-PUSH: 向剩余成员分发新密钥
- 删除旧密钥: 确保被删除的成员无法解密未来的流量
成员添加时的重密钥
当新成员加入群组时,如果配置了后向访问控制(Backward Access Control):
- 等待新成员注册: 新成员首先执行GROUPKEY-PULL
- 生成新密钥: 创建新的TEK和/或KEK
- 更新所有成员: 通过GROUPKEY-PUSH向所有成员(包括新成员)发送新密钥
维护组成员状态
GCKS应该 (SHOULD) 维护关于组成员的状态信息:
- 成员列表: 当前授权的组成员
- 第1阶段SA: 每个成员的第1阶段SA状态
- 重密钥SA: 每个成员拥有的KEK
- 数据SA: 每个成员拥有的TEK
- LKH位置: 如果使用LKH,每个成员在密钥树中的位置
策略管理
GCKS可以 (MAY) 支持动态策略更新:
- 策略变更: 更新组的安全策略(如更改加密算法)
- 通知成员: 通过GROUPKEY-PUSH消息传递新策略
- 过渡期: 支持新旧策略的共存期间
审计和日志
GCKS应该 (SHOULD) 记录关键事件:
- 组成员的加入和离开
- 密钥生成和分发事件
- 授权失败
- 策略变更
- 错误和异常情况
高可用性考虑
在高可用性部署中,多个GCKS可以 (MAY) 协作:
- 主备模式: 主GCKS处理请求,备用GCKS接管故障
- 状态同步: GCKS之间同步组状态和密钥材料
- 负载均衡: 在多个GCKS之间分配GROUPKEY-PULL请求
具体的高可用性机制超出本规范的范围,留给实现决定。