摘要
draft-nikolaichuk-scitt-continuity-receipts-01提议把有状态资产的恢复声明签名后登记到 SCITT 透明服务,并用 RFC 9942 Receipt 证明该声明进入了特定日志位置。- 服务可以先返回 HTTP 202 与条目编号;这只证明异步流程已受理,不等于 Receipt。此时若向消费者放行资产,恢复仍是“未被见证”的状态。
- Receipt 证明的是签名断言被登记,不证明恢复真的发生、证明结果有利、实际字节忠实于原件,或系统在语义和行为上等价。
同一个绿色状态,混进了五种事实
灾备面板上常见一个诱人的状态:恢复成功。它可能只表示解密任务退出码为零,也可能表示应用健康探针已经响应。更精致的系统还会附上一份证明结果、一个日志条目编号,最后把整行染成绿色。
问题不在于这些记录虚假,而在于它们各自回答不同的问题。密钥是否获准释放?恢复环境是否处于某个可接受状态?实际生成了哪些明文字节?恢复机构签署了什么声明?透明日志是否已经收录该声明?消费者最终拿走了什么?
2026 年 9 月 29 日提交的 draft-nikolaichuk-scitt-continuity-receipts-01 尝试给其中一段补上可验证记录。它是一份目标状态为 Informational 的个人 Internet-Draft,不是 SCITT 工作组采纳文本,也不是 RFC。它设计的是恢复声明的载荷和登记方式,而不是新的透明服务、证明格式或密钥放行机制。
它最重要的价值,是拒绝让一个绿色状态吞掉所有现实层。
从密钥到消费者,中间没有万能证明人
草案描述的流程先由恢复环境中的 Attester 产生 Evidence,再由 Verifier 评估并给出 Attestation Results。另一个密钥放行机制决定是否向该环境释放封存材料。环境解密、重组资产,并对真正生成的明文计算 recovered-digest。
Recovery Authority 随后构造 claims,以资产稳定标识为 subject,签成符合 RFC 9943 的 Signed Statement。Transparency Service 根据 Registration Policy 决定是否接收,把声明追加到日志,并依据 RFC 9942 返回 Receipt。Relying Party 最后仍要验证签名、收据、声明、证明引用和自己的使用政策。
这条链故意没有设置一位“全知审计人”。密钥服务只知道自己为何放行密钥;它未必看见最终产物。Recovery Authority 负责其断言,但可能与恢复操作属于同一组织。透明服务见证声明进入日志,却没有重新执行恢复。消费者拥有最后的效果面,也因此不能把前一层的凭证直接当成使用许可。
按照 Lu Heng 关于现实层与运行代码的纪律,共享记录的权威必须被限定在它真正观察到的对象上。登记的权威是登记,不能自动上升为事件真实。
Receipt 的证明对象很窄
草案给出的边界十分明确。Continuity Receipt 证明:某一特定 Issuer 签署的特定 Recovery Statement,被登记到某一特定 Transparency Service 的追加式日志中的特定位置,而且服务对这项事实签了证明。
它不证明恢复事件确实发生;不证明恢复后的字节与原资产一致;不证明被引用的 Attestation Results 已经验证或结论有利;不证明环境实际处于声明描述的状态;也不证明登记策略检查了这些命题。
这不是“证明太弱”。恰恰相反,边界清楚的证明比冒充审计的服务更可靠。Receipt 让断言具有归属、次序、持久性,并使事后悄悄撤回变得困难。它留下可追责的记录,却不会神奇地让错误断言变真。
因此,“收据有效”与“恢复已验证”不能共用一个布尔值。合格的验证界面至少要分开展示:Issuer 声称了什么、独立检查建立了什么、哪些事实仍无法验证。
HTTP 202 是最容易被染绿的一段
当前 SCRAPI 草案允许异步登记。透明服务收到 Signed Statement 后,可以返回 HTTP 202 和条目编号,之后再通过该条目资源提供 Receipt。
条目编号当然有用。它让发行方能够轮询、对账和最终附加收据。但它证明的是工作流已被受理,而不是声明已经包含在日志里。连续性收据草案要求操作方明确二选一:等到 Receipt 再放行,或者在没有 Receipt 的情况下继续,并把恢复记为 unwitnessed,直到收据真正解析出来。
高可用系统有时必须选择继续。若透明服务暂时不可用,而等待会让医院、交易或关键控制系统停摆,恢复负责人可能有充分理由先恢复业务。关键是把这个决定写成受限例外:由谁批准、适用于哪类资产和消费者、持续多久、有哪些补偿控制、何时必须完成对账。
最危险的不是选择可用性,而是让 202 在界面上看起来与 Receipt 无异。只有条目编号而没有收据,仍是一项承诺,不是一项证明。
不要拿期望值冒充测量值
recovered-digest 必须来自恢复结束时真正存在的明文字节。备份清单中记录的期望摘要可以用来比较,却不能直接复制到恢复声明中。复制会把“应该得到什么”伪装成“实际得到了什么”。
环境测量同样必须保留原生算法和原生长度。草案特别指出,与其相邻的参考实现把 AWS Nitro PCR0 和 AMD SEV-SNP 的 48 字节 SHA-384 测量截短为 32 字节。即使字段仍然长得像摘要,也已经无法与使用完整值的策略引擎做逐字节比较。
运行代码优先,不是代码输出什么就相信什么,而是让记录能够回到实际执行产生的字节、算法与比较规则。模式名称不能替代物理测量。
有 Attestation Results,不等于结果新鲜且有利
Attestation Results 可以采用三种方式。引用模式只在声明中保存摘要,减少公开内容,但未来验证依赖原始字节持续可取。嵌入模式把结果带在声明里,增强自包含性,却可能泄露硬件、区域和工作负载信息。单独登记模式让证明结果拥有自己的 Receipt 与日志位置,也增加了另一个对象和服务依赖。
新鲜度也不是一个模糊标签。草案列出 nonce、epoch ID、timestamp 和 none。none 表示底层 Evidence 没有绑定挑战,可以重放。它是诚实披露,不是格式错误,但消费者不能把它显示成“实时证明”。
同样,签名真实的 Attestation Results 也可能给出不利结论。对象存在、签名有效、证据新鲜、评估有利,是四件事。
“能启动”只是最弱的一类等价
equivalence 是可选字段;缺失就等于 none。byte-identical 需要恢复摘要与封存时记录的明文摘要完全一致,并由 Issuer 实际完成比较。operational 只表示通过了一个明确定义的检查,例如加载、启动或健康探针,而且必须引用检查定义与结果。
草案把 operational 明确视为弱断言。数据库能启动,不代表所有记录都在。模型能加载,不代表输出行为相同。应用能回答探针,不代表业务不变量已经恢复。
草案刻意不定义“语义等价”或“行为等价”的代码值,因为一条烟雾测试不足以支撑这种结论。Receipt 与忠实性属于两个独立轴:收据可以完全有效,而等价状态仍是 none。
Issuer 的前后关系,不是日志的全局次序
连续的恢复声明可以用 prev-event 连接,形成同一 subject 下的 Continuity Chain。它表达的是 Issuer 在签署当前声明时承认的上一项恢复。追加式日志则表达所有登记记录的全局先后。
两者之间出现缺口时,验证者必须报告,而不能自动修复。缺口可能意味着 Issuer 不知道中间事件,也可能意味着它选择不承认。prev-entry-id 与 leaf index 是定位线索;真正有密码学意义的是上一份 Signed Statement 的摘要。
如果链跨越多个 Transparency Service,每个服务只能证明自己的顺序。跨服务不存在天然可组合的全局次序。长期审计还需要 consistency Receipt 把新旧树根连接起来;仅证明记录属于某个孤立树根,无法排除日志昨天被重建。
隐私保护会改变谁还能验证
把 claims 附在声明中,透明服务可以对内容执行登记策略,但稳定 subject、恢复频率、区域、服务关系和硬件标识可能进入永久日志。把 payload 分离出来可以减少公开暴露,却也意味着服务无法检查它没有收到的内容,Relying Party 还必须通过旁路取得原文。
用 HMAC 生成假名 subject 可以降低公众关联能力,却会打断跨机构拼接,把 Issuer 密钥变成长寿关联秘密,并在密钥轮换时切断链。隐私不是写完日志后再加的遮罩;它预先决定未来能验证哪些连续性。
参考代码与规范仍处在不同层
草案主动说明,相邻的参考实现并未实现本文件。它不生成 RFC 9942 COSE Receipts,使用另一套日志链结构,证明验证不完整,也没有 nonce 绑定。其重建模块是一个确定性的三阶字节 Markov chain,并不能证明语义恢复。
这段坦白不是对 SCITT 的失败判决。它只是提醒读者:文档提出的结构、代码实际做的事、生产部署的效果,三者必须分别记账。仓库存在不等于机制已经落地。
来源与限制
- https://www.ietf.org/archive/id/draft-nikolaichuk-scitt-continuity-receipts-01.txt
- https://datatracker.ietf.org/doc/draft-nikolaichuk-scitt-continuity-receipts/
- https://datatracker.ietf.org/doc/draft-nikolaichuk-scitt-continuity-receipts/history/
- https://www.ietf.org/archive/id/draft-ietf-scitt-scrapi-11.txt
- https://www.rfc-editor.org/rfc/rfc9943.html
- https://www.rfc-editor.org/rfc/rfc9942.html
- https://www.rfc-editor.org/rfc/rfc9334.html
- https://www.rfc-editor.org/rfc/rfc9162.html
- https://www.rfc-editor.org/rfc/rfc9052.html
- https://www.rfc-editor.org/rfc/rfc9597.html
- https://www.rfc-editor.org/rfc/rfc9782.html
- https://www.rfc-editor.org/rfc/rfc9999.html
- https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
这些来源记录了草案、现有收据与远程证明架构,以及相邻实现自述的差距;它们没有证明生产部署、真实恢复、攻击、互操作性、采纳状态或语义忠实。下文的放行档案是 Daniel Kade 的运营分析,不是 revision 01 已经规定的标准要求。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance

