摘要
- RFC 9597 注册 COSE 标头参数 15,以一个映射承载 CWT 声明,适用于加密载荷、分离式签名以及根本不是 CWT 或 CBOR 的载荷。
- 提前看到发行者、受众或标识符,可以启动受限的密钥发现,却不能提前产生身份、授权或完成状态;密码处理结束后必须确认暂定决定。
- 标头和 CWT 载荷中若同时出现同一声明,通常必须相等;但相等、真实、保密、密钥权限和行动结果仍是不同证据。
一个网关收到加密的 COSE 对象。载荷还打不开,标头里的发行者却已经可见。网关据此选择密钥目录、发起查询,并把任务放入相应租户的处理队列。几毫秒后,签名验证失败。
如果队列、缓存和租户映射都随失败撤销,这次选择确实只是暂定步骤。如果发行者已经写入长期审计身份、计费空间或共享缓存,验证虽然拒绝了对象,系统却没有撤销声明造成的现实。
RFC 9597 解决的正是前半段互操作问题:部分 CWT 声明需要在解密前可见;分离式签名可能没有内嵌载荷;某些载荷甚至不是 CWT 声明集,也不是 CBOR。标准给出共同放置方式,却没有把“能看见”升级为“可相信”。
一个容器隔开两个数字命名空间
COSE 标头参数和 CWT 声明都使用紧凑整数。若把每个声明直接塞进标头,两个注册表的数字会冲突。RFC 9597 因此在 IANA COSE 注册表中登记“CWT Claims”,标签为 15;它的值是映射,内部键来自 CWT 注册表。
RFC 8392 定义发行者、主体、受众、过期时间、生效时间、签发时间和令牌标识符等常见声明。RFC 8610 的 CDDL 可以描述映射形状。形状和编号让不同实现谈论同一对象,却不决定某个端点必须接受哪些声明、由谁断言、触发什么操作。
参数也不限于 CWT。一个图像、固件包或任意二进制载荷可以被 COSE 签名,同时在标头暴露发行者以帮助找钥匙。因此,看见 CWT 声明映射并不能证明载荷就是 CWT。公共层只负责名字和结构,运行端点仍须定义后果。
受保护不等于已授权
RFC 9052 把 COSE 标头分成受保护和不受保护映射。RFC 9597 建议把 CWT Claims 放进受保护映射,因为不受保护值可以被篡改;同一参数在两处合计只能出现一次。
“建议”不能被接收方当成“必然”。端点配置必须说明:不受保护的标签 15 是立即拒绝、仅可作为不可信提示,还是在极窄场景下容许。否则,生产代码会在没有明确决策人的地方自行发明政策。
即使值受到密码保护,它也只证明特定字节参与了某次成功的密码运算。它不证明签名密钥有权代表该发行者,不证明受众包含本服务,不证明声明仍新鲜,也不证明业务操作被允许。
解释规则同样需要保护。RFC 9597 建议在没有天然上下文时使用 RFC 9596 的 typ。类型负责选择解释合同,合同再处理声明。如果声明受保护,决定其含义的类型或端点上下文却可被替换,证据链仍在关节处断裂。
提前动作必须有可撤销上限
发行者用于密钥发现,是标准给出的典型例子。接收方可能先知道“去哪里找钥匙”,才能完成验证。这不是可以消除的循环;真正能治理的是提前动作的权限。
未验证发行者可以缩小候选目录,可以选择隔离队列,可以分配一个很小的解析预算。它不应最终确定租户、打开无限查找、写入永久缓存、选择计费主体或执行外部动作。
暂定收据应记录原始字节、标签 15 位于哪类标头、精确声明值、所选分支、查询目标和候选密钥。最终收据再加入密码结果、解释来源、类型与配置版本、标头/载荷比较、受众与时间检查、本地政策、行动和可观察结果。
若验证失败,暂定状态必须被撤销或隔离。只写“稍后会验证”的架构图没有证据价值。负面测试应证明:密钥查询成功后签名失败、类型不匹配、受众错误、分离载荷错误时,早先形成的缓存、身份和资源都不会留下。
这正符合 Heng Lu 的运行代码优先:规范声明意图,执行轨迹才证明意图成为现实。
两份声明必须能被同一个决定重建
RFC 7519 已为 JWT/JOSE 定义过类似复制机制。RFC 9597 要求:CWT 载荷和标头若都含同一声明,接收应用必须确认值相等,除非应用另有具体处理规则。
比较可以阻止代理按发行者 A 找钥匙,而下游服务按载荷中的发行者 B 授权,然后双方都声称处理了同一令牌。例外也必须具体说明哪个组件使用哪一份、各自保护范围、允许差异的原因和配置版本。模糊的“配置允许”只会掩盖权限分裂。
但相等只是“一致”收据,不是“真实”收据。两份相同的过期时间都可能已失效;两份相同的受众都可能排除当前端点;两份相同的发行者都可能来自无权的密钥。RFC 8725 强调明确、彼此排斥的验证规则,正因为熟悉的字段名不能代替上下文判断。
从加密区搬出来就是一次披露
声明之所以能在解密前被看见,是因为它没有随载荷加密。发行者可能暴露机构,主体可能暴露人员或设备,受众可能暴露服务目标,令牌标识符可能支持跨流量关联。为了“可观测性”复制全部声明,完全可能在算法没有被攻破的情况下掏空隐私保护。
配置应从最小需求出发:提前任务究竟只需要哪一个粗粒度值?网络观察者、代理、队列、日志、追踪、缓存和错误响应分别能看到什么?保存多久?能否用短期路由域代替稳定主体?密码有效不能授权披露。
这体现 Heng Lu 的最小初始规范与本地未来决策:共同层只定义容器与一致性,本地系统保留语义、隐私和授权责任。
分离载荷让证据链更长
COSE 可以保护另行传输的内容,但 RFC 9052 明确把无变化运输责任留给应用。正确的标头发行者和有效的 COSE 结构,不证明验证器取回了正确文件,也不证明文件属于同一事务。
系统需要保留载荷定位与取回上下文、精确字节或散列、与 COSE 对象的绑定结果。否则,一个真实的提前提示可能被接到另一份载荷上。
最终结论必须窄而可审计:声明曾经可见;这个值及其解释由这个已验证对象保护;载荷副本满足这条比较规则;本地政策允许这项操作;操作被尝试;结果被观察。Heng Lu 的现实层之所以重要,正因为每一句都不能替下一句作证。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance

