摘要
- 远程证明报告可能必须在
SUIT_Command_Invoke之前完成签名;suit-report-reason-invoke-pending只说明即将尝试调用,最终结果仍未知。 SUIT_Record是借清单压缩过的路径坐标。没有与 digest 精确匹配并通过验证的清单,就不得用这些记录重建执行过程。- 可靠决策必须分别保存签名、鲜度、清单、报告环境测量、控制权交接、首次执行、持续运行与服务效果的凭证。
一份不能等到“事后”的报告
设备已经核验 SUIT 信封,走过清单中的条件和指令,接下来要执行调用。问题在于,被调用的代码可能不会把控制权还给 Manifest Processor。若远程证明要求报告由当前环境签名,签名动作只能发生在交接之前。
工程上最省事的做法,是先写“成功”,再跳过去执行。这样上游能及时收到一个签名完整、格式漂亮的对象。但它把尚未发生的未来写成了过去式。
draft-ietf-suit-report-22 专门为这个时间差定义 suit-report-reason-invoke-pending:调用即将被尝试,最终结果尚不清楚。草案解释,如果调用最终失败,预先签署无条件成功会造成误导。
这不是失败码的同义词。它也不是“基本成功”。它把签名发生的时间边界公开出来:报告系统已经走到交接点,但还没有资格陈述交接后的事实。
密码学可以证明一句话是谁说的、有没有被改,却不能让这句话提前变成真。签名越强,越需要限制它实际覆盖的时间和对象。
这份日志的一半含义在清单里
SUIT 报告并不复制完整执行日志。SUIT_Record 保存依赖树路径、当前命令序列、序列内字节偏移、组件索引和测量属性。具体是哪条指令、位于什么上下文,要回到原始 SUIT Manifest 才能解释。
这种把清单当作字典的设计节省受限设备的带宽和存储,却带来严格前提。报告接收方只有在取得匹配清单,并使用 suit-report-manifest-digest 完成验证后,才能重建记录。若根清单带 suit-reference-uri,报告里的 URI 还必须完全一致。没有匹配清单时,草案明确禁止用 SUIT_Record 做清单重建。
为什么不能只看序号?因为多名受信签署者可能产生相同 sequence number。序号可以描述各自历史中的顺序,却未必唯一指向某份清单。特征 digest 才把报告锁定到给这些偏移和索引赋予意义的那组字节。
system-property-claims 是有限例外:它直接携带组件标识,因此可以在尚未取得清单时单独处理。这个例外反过来说明,只有组件索引和字节偏移的 waypoint 并不能自我解释。
因此,只归档报告、不保存清单,不叫完整留证。报告仍然真实,却像一张没有图例的路线图,无法安全还原。
鲜度证明也不能代替结果
报告可用 suit-report-nonce 承载鲜度或防重放信息。如果外层认证容器已经提供鲜度,例如证明交互本身带挑战值,该字段可以省略。
这里至少有四个不同问题。签名回答内容是否来自预期密钥且未被篡改;鲜度回答它是否属于当前交互;manifest digest 回答该用哪份清单解释记录;结果字段回答处理器在签名时刻愿意陈述什么。
一份新鲜的 invoke-pending 仍然只是“即将调用”。上一轮启动的成功报告即使签名有效,也不能证明这一次启动。清单匹配精确,也不能自动证明报告生成环境可信。
如果界面只显示“验证通过”,就把多项不同核验压扁成了一个含义不明的绿灯。
测量“负责测量的人”
第 22 版草案明确指出:SUIT Report 要作为 Attestation Evidence 使用,生成报告的环境也必须被测量。通常包括执行清单命令的 Manifest Processor、组装报告的 Report Generator,以及承载它们的 bootloader 或操作系统。
原因并不抽象。被篡改的报告生成器仍可能使用合法密钥,签下一份内部自洽的故事。被替换的处理器也可能如实记录“错误代码”所做的决定。容器验证只保护输出;环境测量让验证方判断谁产生了这些输出。
RFC 9334 进一步分开角色。Attester 产生 Evidence,Verifier 按策略评估并产生 Attestation Results,Relying Party 再作信任与访问决定。信任是决策,可信性是系统属性,两者不能因为有签名就合并。
SUIT 的 waypoint 也不是 Relying Party 可以直接消费的业务结论。Verifier 需要取得匹配清单,重建路径,再转换成可供评估的 claims。缺少精确清单或环境测量时,结论可能格式完整,却证据链不完整。
安全传输只保护边界,不会跨越边界
草案要求设备向远端发送状态报告时使用已认证、保密的信道,或者放在具有相当保护的机制中。EAT 内的受保护测量、COSE 容器和安全传输都可以承担这项职责。如果本地政策要求认证,设备不得退回未认证报告;部分报告也必须满足同样的完整性规则。
这些要求防止伪造、修改和泄露,非常重要。但一份机密、已认证的 invoke-pending,含义仍是最终结果未知。传输层不会在途中替设备完成调用。
交接之后必须出现新的观察者。它可以是启动测量、watchdog 心跳、应用健康记录或外部探针。还应区分“入口执行过一次”和“在要求的时间内持续正常”。短暂启动不是服务结果。
把交接后的事实接回来
最小证据档案先保存报告原始字节、认证方法、签署者和验证结论,再保存鲜度机制。然后以根清单 digest 取得完全匹配的清单,重建依赖路径、命令序列、偏移和组件。接着评估处理器、生成器、bootloader 与 OS 的测量值。
报告结果应原样记录:成功、明确失败、隐式交接或 invoke-pending。不要用后来的结果覆盖原来那一刻的陈述。
之后再接入运行期凭证:控制权到达入口、代码持续存活、服务从指定观察点达到目标。完整链条是:
认证报告 → 鲜度 → 精确清单 → 路径重建 → 报告环境测量 → 控制权交接 → 首次执行 → 持续运行 → 服务效果
研究冻结时,第 22 版仍是拟成为 Proposed Standard 的有效 Internet-Draft。Datatracker 显示它已在 RFC Editor 队列,但因第二代引用尚未收到而阻塞。它不是 RFC,更不是部署成功证明。
来源
- IETF Datatracker API 记录
- IETF Datatracker — Secure Reporting of SUIT Update Status
- IETF 文档历史
- SUIT Report 第 22 版文本
- SUIT Report 第 22 版 HTML
- SUIT Report 第 22 版 XML
- SUIT Manifest 第 37 版
- RFC 9019 — 物联网固件更新架构
- RFC 9124 — 固件更新清单信息模型
- RFC 9334 — RATS 架构
- RFC 9711 — Entity Attestation Token
- Heng Lu — Running-Code Primacy
- Heng Lu — 最小初始规范与本地未来决策
- Heng Lu — 现实层次与符号权力
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
