Skip to main content

4.7 GCKS操作 (GCKS Operations)

群组控制器/密钥服务器(GCKS)负责管理群组安全关联并向授权的组成员分发密钥材料。本节描述GCKS执行的关键操作。

初始化

GCKS在开始为组成员提供服务之前必须 (MUST):

  1. 生成KEK: 为重密钥SA生成一个或多个密钥加密密钥(KEK)
  2. 生成TEK: 为数据安全协议生成流量加密密钥(TEK)
  3. 建立策略: 定义组的安全策略,包括加密算法、密钥生命周期等
  4. 配置LKH: 如果使用逻辑密钥层次结构(LKH),初始化密钥树结构

响应GROUPKEY-PULL请求

当GCKS收到来自组成员的GROUPKEY-PULL请求时:

  1. 验证授权: 检查请求方是否被授权访问请求的群组
  2. 验证第1阶段SA: 确认请求是通过有效的第1阶段SA接收的
  3. 处理请求: 提取请求中的参数(如请求的SA类型)
  4. 生成响应: 构造包含所请求SA的响应消息
  5. 发送响应: 使用第1阶段SA保护并发送响应

发送GROUPKEY-PUSH消息

GCKS定期或在特定事件发生时发送GROUPKEY-PUSH消息:

定期重密钥

GCKS应该 (SHOULD) 在TEK或KEK生命周期到期之前发送新密钥:

  1. 生成新密钥: 创建新的TEK或KEK
  2. 构造消息: 创建包含新SA的GROUPKEY-PUSH消息
  3. 加密消息: 使用当前KEK加密消息
  4. 多播消息: 将消息发送到群组的多播地址

成员删除时的重密钥

当成员离开群组时,如果配置了前向访问控制(Forward Access Control):

  1. 生成新密钥: 创建新的TEK和/或KEK
  2. 计算LKH密钥: 如果使用LKH,更新受影响的密钥树节点
  3. 发送GROUPKEY-PUSH: 向剩余成员分发新密钥
  4. 删除旧密钥: 确保被删除的成员无法解密未来的流量

成员添加时的重密钥

当新成员加入群组时,如果配置了后向访问控制(Backward Access Control):

  1. 等待新成员注册: 新成员首先执行GROUPKEY-PULL
  2. 生成新密钥: 创建新的TEK和/或KEK
  3. 更新所有成员: 通过GROUPKEY-PUSH向所有成员(包括新成员)发送新密钥

维护组成员状态

GCKS应该 (SHOULD) 维护关于组成员的状态信息:

  • 成员列表: 当前授权的组成员
  • 第1阶段SA: 每个成员的第1阶段SA状态
  • 重密钥SA: 每个成员拥有的KEK
  • 数据SA: 每个成员拥有的TEK
  • LKH位置: 如果使用LKH,每个成员在密钥树中的位置

策略管理

GCKS可以 (MAY) 支持动态策略更新:

  1. 策略变更: 更新组的安全策略(如更改加密算法)
  2. 通知成员: 通过GROUPKEY-PUSH消息传递新策略
  3. 过渡期: 支持新旧策略的共存期间

审计和日志

GCKS应该 (SHOULD) 记录关键事件:

  • 组成员的加入和离开
  • 密钥生成和分发事件
  • 授权失败
  • 策略变更
  • 错误和异常情况

高可用性考虑

在高可用性部署中,多个GCKS可以 (MAY) 协作:

  • 主备模式: 主GCKS处理请求,备用GCKS接管故障
  • 状态同步: GCKS之间同步组状态和密钥材料
  • 负载均衡: 在多个GCKS之间分配GROUPKEY-PULL请求

具体的高可用性机制超出本规范的范围,留给实现决定。