Summary

  • draft-sirkkavaara-vaara-receipt-12 可在同一观察边界内签入递增的 seq 与 runningCount;只要更后的收据仍在,中间被删的一条就会形成可点名的缺口。
  • 从 0 到 k 的完整前缀却可能只是被截短的历史。终止封印能固定总数 N,但若尾部连同封印一起消失,留存集合内部仍然自洽。
  • 草案用针对最终计数的 RFC 3161 时间锚处理这一残余。签名完整性、边界覆盖、内部完整性、正式闭合、外部见证与实际结果必须分开验证。

“正好 27 条”的两种含义

设想一个自主服务,每次工具调用都生成一条授权收据。审计方拿到编号 0..26,最后一条写着 runningCount: 27。二十七条都能通过签名与 JCS 哈希校验,边界标识一致,数量也正好是二十七。

第一种解释是:会话只发生了二十七次决策。第二种解释是:系统后来还生成了 27..34,但交付方把它们全部拿掉。收据 26 在生成当时并没有说谎;它只能说明截至自己共有二十七条,不能预言后面不会再有记录。

如果被删的是第 11 条,而第 12 条仍被持有,问题容易得多。更后的 runningCount 要求前面存在相应数量,缺号会直接暴露。Vaara Receipt 第 12 版的关键价值,正是把这种中段遗漏从怀疑变成可以复算的证据。它同样清楚地承认:连续性不是终局性。

先问“看见了什么”,再问“有多少”

授权 profile 可携带可选的 coverage 区块,写明观察关口、能力清单或命令表面的指纹,以及只有经该关口路由的调用才在范围内。绕过关口的直连、另一个代理或本地执行不在声明之中。

因此,零条拒绝收据不等于零次行动。即便已有 coverage,它也只能说明在所声明边界内没有记录到拒绝;没有 coverage 时,沉默最多只是“未观察到”。若不先固定观察全集,再精确的计数也只是在给一个未知分母做算术。

completeness 区块把 boundaryId、从零开始的 seq 和等于 seq + 1 的 runningCount 绑定进签名所覆盖的证据。后来的收据为早期集合提供一个应有数量,因此能揭示中段缺口。这个证明不需要在线询问发行方,却依赖审计方确实持有那条“后来”的收据。

封印固定总数,保管关系固定可信度

终止 sealing record 可以声明 {sealed: true, total: N}。一旦审计集合中存在该封印,少于 N 条的尾部不再能伪装成完整。可选的 maxClass 还可说明边界内获准过的最高行动类别,为缺失记录限定最坏级别。

封印本身仍是一条记录。能够删除后缀的人,也可能把封印一并删除。此时早期前缀继续全部通过校验,没有任何留存字节能证明未来曾有一条封印。草案把这称为仅凭 held set 无法消除的残余。

它给出的下一层是对最终计数做 RFC 3161 时间锚:某个时间戳权威证明,在时间 T 之前,与计数 N 对应的签名载荷已经存在。之后若有人只展示 k,审计方手中已有来自另一保管面的 N。

但“使用 RFC 3161”本身并不等于独立。若动作、收据、封印和时间戳服务都由同一运维权限控制,四种密码学对象仍共享一个压制点。真正要审计的是权威主体、密钥验证政策、时间来源、留存位置与利益边界。

透明登记不是时间锚的别名

草案还描述了向 SCITT Transparency Service 登记收据。SCITT 回执证明某个签名声明按服务政策被登记;它伴随 Vaara 收据传递,而不是塞进 timestampAnchors。

两者可以互补,却回答不同问题。时间锚把摘要连接到时间主张;透明回执把声明连接到登记事件;序列计数揭示已持有范围内的缺号;终止封印固定预期总数。RFC 9162 对 inclusion 与 consistency 的区分也说明,“已经上链或入日志”从来不是一个足够精确的审计结论。

能复算的是陈述,不是现实本身

RFC 8785 的 JCS 让生产者和验证者为同一个 JSON 对象生成相同字节。项目公开的 conformance vectors 能由不导入发行方代码的检查器复算签名、证据摘要、back link 与若干完整性场景。这是有价值的 running-code 证据。

它仍有边界。摘要相同,只能证明手中的证据正是被承诺的内容,不能证明内容真实或穷尽。签名有效,只能证明指定密钥签过这些字节;草案自己也说明没有定义密钥撤销和新鲜度机制。验证方必须另行确定密钥解析路径与可接受的陈旧窗口。

决定和执行也不能合并。decision receipt 记录允许、阻止或升级,并不证明动作已经发生。execution receipt 可通过 backLink 回指前序,签入 executed 或 refused 以及结果承诺。这个配对可阻止偷换结果,却不能代替外部系统对状态变化的观察。

用 Lu Heng 的现实层次看,这条链就很清楚:摘要不是完整集合,完整集合不是已关闭边界,封印不是独立见证,见证不是动作,动作也不是持续结果。最小共同规范可以定义薄而可互操作的外壳;边界、保管、时间与后果仍必须由本地责任主体明确承担。

Sources and limits

这些来源证明的是一份活跃的个人 Internet-Draft 与相关公开规范,不证明 IETF 共识、Vaara Receipt 已成为 RFC、工作组采纳、独立审计、广泛部署、完整覆盖、时间权威独立或行动结果。本文只占有第 12 版中段缺口、尾部封印与外部计数锚这一机制边界。