摘要

  • RFC 1949 把密钥分发嵌入 CBT 的安全入树过程:主核心先充当群组密钥分发中心,认证后的树上节点可继承名单与密钥材料,再服务后续加入者。
  • 这种扩展减少的是中心计算与传输工作,不是权力;规范自己也承认信任全部树上路由器风险过大,并提出只让核心保留分发能力的收缩方案。
  • 共享群组密钥不能证明具体发送者,而从名单删除成员也不能收回其已经知道的秘密;发送者认证与排除都需要新的密码学状态。

一个离开枝头却仍握有旧秘密的节点

先从退出说起。某个接收者已被访问名单删除,连接它的枝条也断开了,可它此前得到的群组密钥仍在本地。名单写下了“现在不允许”,内存保存的秘密却来自“过去曾允许”。若其余成员继续使用旧密钥,行政状态已经改变,未来通信的现实却没有改变。

RFC 1949 对这个边界并不含糊:若要把某些成员排除在全部或部分通信之外,它没有提供在原树上局部撤回秘密的办法,只能以新密钥建立新的 CBT 群组/树。撤权不是改一行名单,而是创造被退出者无法获得的新状态。

RFC Editor 的当前记录 显示,这份由 A. Ballardie 编写的实验性 RFC 发布于 1996 年 5 月。“实验性”意味着它提供的是设计命题,不是已经部署、互操作或成功的证明。

这项设计所面对的规模问题很直接。传统密钥分发中心必须逐个认证接收者,并为每个接收者单独加密群组密钥。即使把这些密文一次组播出去,认证和加密工作仍随成员数增长。更棘手的是发送者特定密钥:如果所有人只共享同一个秘密,接收者最多知道“发送方属于这个安全关联”,无法知道究竟是哪一位成员发送。

数据路径为何变成信任路径

CBT 为每个群组建立共享分发树。主机先向本地路由器报告加入意愿,JOIN_REQUEST 朝核心前进,JOIN_ACK 沿反向路径回来并固定枝条。后来的 CBT 路由架构 明确了父子接口关系;CBTv2 协议 则把“收到确认后才算上树”写得更清楚。显式邻居和确认状态给安全设计提供了可命名的交接点。

RFC 1949 让主核心最初承担 GKDC 角色。群组发起者交给它一份签名访问控制名单,主核心创建群组密钥和用于换钥的 KEK。主机提交签名 token,沿途路由器验证控制消息。加入被批准后,包含名单、密钥、KEK 与安全关联参数的访问包沿原路返回,其中交给每个下一跳的材料都针对该接收者加密。

真正的扩展发生在确认之后。已认证节点可以保存名单和密钥材料,并为更下游的加入者进行认证与重新封装。主核心不再亲自处理每一片叶子,但“谁可以把秘密发给谁”的权力被复制到了树上。计算负载被分摊,权限边界也被拉长。

这与同时期的 GKMP 形成有用对照。GKMP 明确命名群组控制者,由它创建、分发和更新密钥,收集确认并检查权限凭证。两种方案都没有让控制消失,只是把控制放在不同角色和路径上。所谓“没有中央 KDC”,绝不等于没有任命、复核和失陷恢复。

规范主动问出了“不该默认信谁”

RFC 1949 自己提出:能否合理地相信分发树上的所有路由器都不会作恶、也能免于攻击?最分布式的方案让普通树上路由器接触或重新加密密钥材料,并可能继承分发能力。路由器一旦失陷,后果不只是错转一个包,还可能是越权加入、秘密泄露或使用过期名单。

于是文档给出更严格的变体:安全加入必须继续上送核心,密钥分发权仅留在核心路由器。系统因此没有那么“分布式”,却缩小了特权节点集合。真正决策不是在中心化与去中心化两个标签之间选边,而是决定:为了减少多少中心工作,愿意让多少运行节点取得何种密钥权力。

一棵物理树同时承载数据和信任,最容易制造证据混淆。分组能沿某条路径到达,只能证明转发状态;邻居曾经被确认,只能证明一次加入过程。它们都不能自动证明当前名单一致、节点未失陷、密钥已安全擦除或退出者不能读取新流量。

群组成员不是发送者身份

共享密钥把多个主体压缩为同一个证明域。使用它验证的消息说明发送方拥有群组材料,却无法从群组中点名。RFC 1949 因而另设发送者特定密钥:成员发送者可在群组密钥保护下发布签名材料;非成员发送者则先与主核心协商,再由核心把其密钥和参数发给群组。

这里至少有三种不同事实:某主体有权读取、某主体有权发送、某一包确实来自该主体。共享秘密只能覆盖其中一部分。把“属于群组”提升成“这位成员发出”,就把密码学范围夸大成身份结论。

换钥才让退出进入现实

后来的 RFC 2627 用逻辑密钥树把排除成本算得更细:删除一名用户时,凡是它曾掌握、从叶子通向共享根的密钥都必须替换,并只交给剩余成员。这不是 RFC 1949 的 CBT 转发树,也不证明因果继承;它只是用另一种树揭示同一条事实——旧成员已经知道的位串,无法靠修改名册收回。

RFC 4046 的群组密钥管理架构 后来把成员加入与移除、可扩展换钥、授权来源、抗合谋和失陷恢复列为不同要求。一个“群组密钥”背后其实有注册状态、数据安全关联、换钥安全关联和控制者政策;任何单一成功都不能替代其他证明。

“分布式”标签之下

Heng Lu 关于运行代码优先的判断提醒我们,实验性文本只能描述机制。ACL 是否收敛、路由器是否擦除旧密钥、换钥是否抵达所有保留成员、退出节点是否真的失去未来访问,都需要实现与观测证据。

最小初始规范与自愿采用也解释了方案的吸引力:CBT 已有显式加入和确认,密钥分发可以作为可选能力嵌入,不必另造完整传输体系。但“可选”不能让权力继承变成无人察觉的副作用。

用现实层与符号权力的区分看,符号层说“分布式密钥分发”,运行层却是主核心、签名名单、可信路由器集合、群组密钥、KEK、发送者凭证和换钥历史。中心的工作可以消散进树,中心所代表的判断权却只会迁移、复制或收缩。

RFC 1949 最值得留下的历史教训,不是某种树解决了组播安全,而是秘密每多一个保管者,就多一个有权交付它、也可能错误交付它的位置。规模要计算消息和加密次数;信任规模则要计算特权节点、过期副本、失陷路径与真正让退出者看不见未来所需的换钥成本。

来源

  1. RFC Editor — RFC 1949 当前记录
  2. RFC 1949 — 可扩展组播密钥分发
  3. RFC 2093 — GKMP 规范
  4. RFC 2189 — CBTv2 协议规范
  5. RFC 2201 — CBT 组播路由架构
  6. RFC 2627 — 组播密钥管理
  7. RFC 4046 — MSEC 群组密钥管理架构
  8. Heng Lu — 运行代码优先
  9. Heng Lu — 最小初始规范、本地化未来决策与自愿采用
  10. Heng Lu — 现实层、符号权力与清晰为何令人敌视