draft-li-rttp-iqa-addressing-02 新增了什么:使用时刻、解释器的席位与在案的评审
规范解读 · 第 22 篇 · 本文引证来源 · 精读对象(引文逐字): draft-li-rttp-iqa-addressing-02(全文) · 其所取代的前版: draft-li-rttp-iqa-addressing-01(全文) · 系列页与修订史: datatracker · 地图新引的概念根: RFC 9315 · §12 与 §14 点名的一致性实验室: Agent-Authority-Conformance · 参考规范: rttp.com/URI/ · iqa.org/URI/ · 姊妹双柱: RTTP(rttp://,CRI 27)· IQA(iqa://,CRI 28)
draft-li-rttp-iqa-addressing 的 -02 修订版于 2026 年 11 月 1 日 06:48 UTC 提交——稳稳落在 11 月,与本博客前一天发布的《十月实录》为它记下的计划一致。ISE 列表给这一版盖的 10 月 31 日,是队列服务器自己的日历;距 10 月 27 日入列的 -01 五天。一版两日,各为其真。这五天买到了什么,正是本文的主题。先看算术,以 ISE 列表为准:40 页对 -01 的 34 页,2,279 行对 1,937 行。但算术是最不重要的部分。这是本系列第一份每个新增都能指向一位具名者在公开场合所提问题、且都能指向承载答案的那一节的修订版。五天不是仓促;它是问题抵达、答案找到自己章节所需的时间。两个 scheme 的语法——派生、句法、安全类,以及本系列自第 1 篇起逐块精读的 fail-closed 默认——一字未动;线格式字节级稳定,VERSION_ID 原样。 -02 新增的是语义、回执,以及本文档的一个首次:一份读起来像评审台账的致谢——每笔债都锚定在偿还它的那一节。本文只依据一手文本,按顺序精读这些新增。
两个时刻,一份回执
新增的 §6.3「使用时刻的评判」是整个修订版转动的轴,开篇就把时间切成两半:“An access policy is expressed when the delegation is made; the condition it states is judged when the resource is invoked. This document fixes only the second moment.”(访问策略在委托作出时表达;它陈述的条件在资源被调用时评判。本文档只固定第二个时刻。)条件所消费的事实——主体是谁、主体的授权是否经验证——MUST 可在使用时刻重新推导,而租约正是承载这种可重推性的东西。收尾那句是全修订版最锋利的一句:“A condition evaluated only at grant time says nothing about the state of the world at invocation.”(只在授予时刻评判的条件,对调用时刻的世界状态一言不发。)
边界情形被诚实陈述而非一笔带过。“A revocation that arrives just before, or just after, an invocation ends is a boundary no protocol can erase; the wire's job is to make that boundary legible.”(撤销恰在调用结束之前或之后抵达,是任何协议都无法抹除的边界;线的职责是让这条边界可读。)读过期的应答 MUST 以过期作答,绝不以新鲜重放——而应答无法及时到达时,按部署声明的模式与残留处理执行,调用方“decides with the age on the table instead of on a silent assumption”(把年龄摆在桌面上做决定,而非压在一个无声的假设之下)。§6.2 的伴随新增用同一纪律解决了任务中途的情形:当租约在任务中途到期——权限已终止的员工、窗口已关闭的授权——下一次验证会以 authority_revoked 或 evidence_expired 作答,而自第一份应答起就持有到期时间戳的调用方,“can arm its halt at the boundary before the boundary arrives”(可以在边界抵达之前武装好它的急停)。急停的物理动作仍是执法,留在调用层——线供给的是新鲜度,从来不是剑。
拒绝为什么必须可读
§8.1 的新增段落是全文档最具论证性的一段,它瞄准的是每一种访问控制部署里都见过尸体的失效模式:无声的拒绝。“If a refusal is fatal and unexplained, sharing credentials becomes the rational shortcut for the blocked party. A legible refusal — a closed set of reasons with an auditable receipt — gives the caller something to read, degrade on, retry, or reroute, and attenuation survives precisely because a refusal can be read, re-derived by a third party, and answered to.”(若拒绝既是致命的又不加解释,共享凭证就成为被挡下一方理性上的捷径。一份可读的拒绝——带可审计回执的闭集理由——让调用方有东西可读、可降级、可重试、可改道;而衰减得以幸存,恰恰因为一份拒绝可以被阅读、被第三方重新推导、被应答。)这就是凭证共享论证:不可读性不增添安全,它把合法调用方的定价推高到去借别人的钥匙。
论证随即被强制执行,而非仅作主张:“a refusal reason MUST be computed over the authority facts the response carries — facts a third party can re-derive from pinned inputs. A refusal computed over labels, opinions, or unrecorded context alone is not auditable.”(拒绝原因 MUST 在应答所携带的授权事实之上计算——第三方可从钉死的输入重新推导的事实。只在标签、意见或未记录的语境之上计算的拒绝不可审计。)§8.2 的伴随新增让回执兼作竞态记录:授权回执写明授权侧事实何时生效(issued_at_ms、expires_at_ms)、何时被观察(observation_as_of_ms)——与 §6.3 合起来,“lets the caller decide with the age of its inputs on the table — an expired read is answered as expired, never replayed as fresh.”(让调用方把输入的年龄摆在桌面上做决定——过期的读数以过期作答,绝不以新鲜重放。)
解释器得到一个席位,不是一张选票
第二个全新章节 §8.4「解释器消费应答」只有一段,却提前解决了迟早有人要问的问题——最可能问它的人,正是要把语言模型接到授权决定上的那位。规则:解读策略的读者,“a rule engine, a human, or a probabilistic program — MAY consume the answer as an input and rank what is permitted within it; it MUST NOT overrule it. Policy interpretation sorts choices among operations the authority layer has already allowed; it does not get a vote on whether the claimant stands.”(规则引擎、人,或概率程序——MAY 把应答当作输入、在它允许的范围内排序哪些是可做的;MUST NOT 推翻它。策略解读是在授权层已经允许的操作之间排序选择;它在「主张者是否站得住」这件事上没有投票权。)
随之而来的是两条结构性而非修辞性的性质。其一:“the audit target is the wire record: the answer is bytes a third party can re-derive from pinned inputs, while a model's reading of a mandate is an opinion about what the mandate meant — no reader can argue a timestamp into the future.”(审计对象是线记录:应答是第三方可从钉死输入重新推导的字节,而模型对授权的解读只是关于授权何意的意见——没有读者能把一个时间戳辩进未来。)其二,这一分工正是双 scheme 在根本没有解释器的地方也能使用的原因:气隙、降级、存储转发部署无模型可问,那里的 fail-closed 行为依赖本节定义的闭合线语义。收束的一句把边界安放得几何般平静:“If interpretation by language models works, it works one layer up — exactly where this document already places policy.”(若语言模型解读真的可行,它是在上一层可行——恰好是本文档安放策略的位置。)
地图朝着论证去的方向生长
§12 的新增有三处,每处都关上一扇此前含糊的门。第一处是动词句。文档现在一口气陈述了动作模型的两半:“this document defines no open enumeration of action verbs — the actions of "iqa" are a closed set of organ operations (Section 5.4), and the action of "rttp" is an open token that this document deliberately leaves unpopulated — it defines no vocabulary for policy text: standardizing the constraints someone happened to think of first would close an open set.”(本文档不定义动作动词的开放枚举——iqa 的动作是 organ 操作的闭集(§5.4),rttp 的动作是本文档刻意留白的开放 token——它不为策略文本定义词表:把有人碰巧先想到的约束标准化,等于关闭一个开放集。)该闭合处闭合,该开放处开放——而拒绝标准化策略词表被陈述为一个主动动作,不是遗漏。
第二处是被点名并留在原地的委托者回报开放问题:本文档所知的已部署委托系统中,没有任何一个向委托者回报,也没有一个为「某条具体策略为何被违反」的理由留有标准槽位。这套 scheme 同样不填那个槽——“the delegator learns from the receipt when the delegator chooses to look, not because the verifier pushes. Naming the delegator-reporting slot as an open problem is, as of this revision, where the problem stands.”(委托者在他选择去看的时候从回执中得知,而非验证者主动推送。把委托者回报槽位题名为开放问题,就是本修订版之下这个问题的现状。)一份点名校准自己缺失部位的规范——而且让已有的审计路径(授权回执)去干推送信道本来要干的活——比一份悄悄填掉缺口规范更难被指控越权。
第三处是一条根:地图现在回溯到 RFC 9315、Intent-Based Networking,并用一句话主张这条路径上的下一步:“IBN defines what an intent is; the schemes define where an intent claim is addressed and whether the claimant stands verified, and they carry no network configuration semantics.”(IBN 定义意图是什么;这套 scheme 定义意图主张被寻址到哪里、主张者是否经验证,且不携带任何网络配置语义。)换言之,这套 scheme“make an intent addressable and attestable rather than merely stated”(让一个意图可寻址、可认证,而不只是被陈述)——概念谱系写明,边界画出,而 IBN 读者会期待的那个传输邻接问题被明确婉拒。
什么没有动
值得与新增写得同样精确。语法——§4.1 至 §5.4——字节级稳定:没有任何句法变更、没有任何派生变更、没有任何安全类变更。两套线格式原封未动:VERSION_ID 仍为 130,扩展块偏移不变,AE-128 信封的十二字段与测试向量俱在。§7.2 里唯一改动的那句话,改动方向是收敛:主体是否在 standing 状态之间迁移,现在明确推迟到参考规范而非断言——线编码不变。新的 §4.5.4 为无查询要求安了它在客户端要求章的家——“A client MUST NOT perform a lookup in order to use an rttp or iqa URI: no DNS query, no registry query, and no fetch of any resource named or implied by the URI”(客户端 MUST NOT 为使用 rttp 或 iqa URI 而执行任何查询:无 DNS 查询、无注册表查询、无对 URI 所指或所涉任何资源的抓取)——这个家它一直隐含着,却从未被分配过。参考文献新增了 rttp 参考规范与 RFC 9315,iqa 参考改指向其规范站点,demos 参考改题为覆盖双 scheme。这里没有任何东西触碰 IANA 注册事实:两个 scheme 站在原位,暂定 CRI 27 与 CRI 28。文档也仍是它一直是的——两套实验性寻址 scheme 的 Informational 规范,为公开记录而发布。
一句话:-02 保持语法与线的字节级稳定,用编了号的章节回答了五天公开评审真正问出的三个问题——事实在何时被评判(使用时刻)、沉默为何是一种漏洞(可读的拒绝)、谁有投票权(解释器没有)——并把问题与提问者记进了一份建成台账结构的致谢。