摘要
draft-tiloca-lake-private-use-ranges-01为 EDHOC 的方法类型、错误码和外部授权数据标签提出新的私用范围,所选整数以四字节 CBOR 参数表示,连同首字节共五字节。- 正端点
4294967295与负端点-4294967296都不属于有符号 32 位整数域;解析成功不能证明后续类型转换、范围检查或绝对值计算正确。 - 私用数值只在明确的协调域内有意义。认证同一段消息,并不证明两端采用同一语义,更不证明应用动作已经成功。
最值得测试的并不是一个常见的小整数,而是两端点。设备甲收到 4294967295,64 位 CBOR 解码器保留原值;设备乙的旧接口把它转成 int32,结果变为 -1 或直接拒绝。两台设备都可能声称“已支持 EDHOC”,但它们已经不再处理同一个数。
2026 年 9 月 30 日的个体 Internet-Draft 《为 LAKE 协议的 IANA 注册表增加私用范围》把这个问题写得很具体。修订版 01 把私用值放到现有短编码范围之外,使方法类型和错误码的正负范围延伸到四字节 CBOR 参数的极限;EAD 注册表则登记相应的绝对值正范围。
五个线上字节不等于一个 int32
RFC 8949 用主类型 0 表示无符号整数 N,用主类型 1 表示 -1-N。四字节参数最大为 4294967295。因此它既能表示同值的正整数,也能在负主类型下表示 -4294967296。首字节再加四字节参数,线上长度都是五字节;数学值域却比有符号 32 位多出一整侧。
草案因此要求支持完整范围的实现采用可保留所有值的表示,例如有符号 64 位,或把符号与无符号参数分开保存。该要求不能只停在解码器。分派表、枚举、序列化、数据库列、遥测字段和日志都可能再次收窄。
| 层次 | 成功能说明什么 | 仍不能说明什么 |
|---|---|---|
| CBOR 解析 | 字节构成合法整数 | 应用类型装得下 |
| 范围判断 | 数值属于拟议私用区间 | 双方赋予同一含义 |
| EDHOC 认证 | 受保护的 transcript 验证通过 | 本地策略授权了此扩展 |
| 本地分派 | 找到了一个处理器 | 对端选择了等价处理器 |
| 应用回执 | 观察到一次结果 | 私用编号具有全球唯一性 |
EAD 的符号不是装饰
RFC 9528 规定 IANA 登记 ead_label 的绝对值,而线上负值表示“关键”项目,非负值表示“非关键”项目。因此 65536 与 -65536 指向同一种私用 EAD,却要求未知接收方作出不同决定。
这组数还有一个编码陷阱。正 65536 需要四字节参数,总长五字节;负 -65536 对应的参数是 65535,只需两字节参数,总长三字节。若实现先取绝对值再决定关键性,可能丢掉符号;若在 32 位有符号类型中对 -4294967296 取绝对值,连原始值都无法表示。
审计记录必须分别保存:收到的有符号标签、用于注册表查找的绝对值、关键性判断。把三者压成一个“规范化编号”,会删除最需要解释的控制信息。
私用空间是范围,不是全球命名权
RFC 8126 明确说明,Private Use 不面向一般互操作,也不会阻止不同主体把同一数值用于不同目的。草案把防碰撞责任交给每个预定部署范围。
所以“70000”本身不是完整语义。它还需要私用协调域、配置版本和兼容集合。两家厂商可以各自正确使用 70000;当并购、共享网关或通用 SDK 把它们接在一起时,数值相同反而可能掩盖语义冲突。安全默认应是不认识协调域就拒绝,而不是凭数字猜测。
三个注册表意味着三种后果
方法类型决定认证方法;错误码决定故障解释;EAD 标签选择对 EDHOC 不透明的应用数据,并由符号携带关键性。相同的截断缺陷,在三个位置可能表现为错误方法、错误恢复路径或错误的继续/中止决定。
这不是在宣称 EDHOC 已被攻破。草案称新增范围不改变 RFC 9528 的安全考虑,也没有报告任何具体产品事故。它指出的是实现责任:协议可表示的整数必须被完整带过每个软件边界。
测试必须覆盖边缘而不是只覆盖入口
至少测试 65535/65536、4294967295、-65536/-65537、-4294967296 以及各范围外一格。EAD 同一私用项目要分别用正负标签;另应让两个私用配置故意为同一数值声明不同含义,确认系统能够识别并拒绝不兼容域。
断言对象包括原始字节、数学整数、转换结果、范围分类、处理器、关键性和日志。仅看到握手成功,不能证明这些环节一致。
当前 IANA EDHOC 注册表只是 RFC 9528 建立的基线。Datatracker把修订版 01 列为个体草案,并不表示 IANA 已执行请求、IETF 已形成共识或实现已经部署。RFC 9668 中相邻的凭据类型私用范围,也不能替这些新代码路径提供运行证据。
保住原值的回执
每次接收私用值,记录所属注册表、CBOR 原始字节、主类型、参数宽度、收窄前数学整数、每次受检转换、EAD 的符号/绝对值/关键性、本地协调域与版本、双方兼容集合、选中的处理器、认证 transcript 引用和下游结果。专有语义可以用稳定标识或配置摘要表示,不必公开正文。
这样的回执不会把私用编号变成全球编号,也不会证明应用正确;它只确保发生分歧时,组织仍能知道线上究竟来了什么、哪条本地规则解释了它、系统最终做了什么。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
