AN-06 L3 符合性等级: Guard 概念簇: 权限
Trust Labels 信任标签
来源与敏感度两个小标签,加上会话污点,强制执行 Rule of Two。
Trust Labels(信任标签) 是附在数据上的两个很小的标签集,来源(owner、agent、external)与敏感度(public、private、secret),再加上会话污点。NAS 把 Rule of Two 当作会话不变量来强制:一次会话不能同时拥有 [A] 读过外部内容、[B] 接触敏感数据、[C] 改变受保护状态或对外通信;要补全第三项,就走 Human Gate。
要解决的问题
提示词注入之所以奏效,是因为模型分不清“指令”和“数据”。模型层的防御(分类器、提示加固)会漏,攻击者还可以自适应。Meta 在 2025 年 10 月底提出 Agents Rule of Two:在注入问题被可靠解决之前,一次会话最多只应同时具备三个性质中的两个。
更可靠的做法是在模型之外限定后果。存储恰好是“读”和“写”的必经之地,所以适合把这条规则变成可以测试的不变量。
工作方式
- 标签。 来源 3 档、敏感度 3 档,外加
reviewed标记(由闸门批准设置)。导入点(网页、邮件、上传)默认标为external;密钥扫描器发现凭据时,自动标为secret。 - 会话污点。 一次运行读过的一切的汇总(来自读清单);在一个会话内只增不减,新会话重置。
- 不变量。 A = 会话读过
external;B = 租约允许读private或以上(阈值可配置);C = 租约允许向受保护树提议合并、共享、删除或出口。三者在同一会话里同时成立时,触发 C 的那次调用被拒绝或转交闸门。 - 实际效果: 在同时具备 B 和 C 的租约下,会话一旦读过外部内容,之后的 C 类动作都要经过人。想避免这种摩擦,就把“读外部内容”放到另一个没有 B 的会话里,只通过结构化交接传递结果。
- 传播。 NAS 自己的派生(索引、摘要)确定性地继承输入标签的并集;运行写入的文件继承该运行的会话污点(保守做法)。
- 降级。 只能经由 Human Gate,或结构化交接: 把受污染会话的输出限定为经 JSON Schema 校验的字段(枚举、ID、有界字符串),校验通过后才允许被特权会话读取。能被确定性校验的,才可能被信任。
- 强制点在网关与挂载层(它们知道租约与会话),不在模型内部。
从小处开始
- 只做两件事:给导入目录里的文件打上
external;读过external的运行默认没有出口和受保护合并的权限,需要闸门。 - 策略用 Cedar 或 Rego 写成确定性的规则,拒绝时给出可读的原因。
- 先用“仅记录”模式跑一周,看看会误拦什么,再打开强制。
接口草图
仅作示意。字段名在规范 v0.3 之前可能调整。
# Deterministic policy (Cedar- or Rego-style rules can express the same thing)
session_invariant: rule_of_two
properties:
A: session.read_origin includes "external"
B: lease.sensitivity_max >= "private"
C: lease allows propose_protected | share | delete | egress
on_would_complete_ABC: gate # never "allow"
rules:
- id: r-merge-1
when: session.A and op == "merge" and target.protected
then: gate
- id: r-secret-1
when: session.read_sensitivity == "secret" and op == "egress"
then: deny 规范的要求
- 每个导入点必须赋予默认标签;外部内容必须标为
external。 - 会话污点必须在会话内只增不减。
- 策略求值必须是确定的,不得调用 LLM。
- 会让同一会话补全 A+B+C 的调用必须被拒绝或转交闸门。
- 降级必须经过闸门或经模式校验的结构化交接。
- 派生数据必须继承其输入标签的并集。
借鉴与区别
下面这些都是现成的思路。真正新的部分: 在存储边界用读清单实现会话污点,并把标签用到记忆写入和派生数据上。我们刻意把标签格缩小到 3×3,因为细粒度的格在实践中会导致标签膨胀。OpenClaw 已经在单个运行时里做了来源标签与隔离,我们的区别只是把它放到共享的存储中。
- Agents Rule of Two (Meta)
- The lethal trifecta
- CaMeL
- Fides
- Design Patterns for Securing LLM Agents against Prompt Injections
- OpenClaw memory architecture
坦诚的局限
- 这不是提示词注入的防御,它限制的是后果。
- NAS 看不到它之外的工具(浏览器、邮件),需要运行时配合。
- 污点是保守的,会带来摩擦与误报;结构化模式之外的自由文本仍然可以携带攻击者的话。
- 隐蔽信道无法消除。
开放问题
- 标签的粒度应当是文件还是段落?
- 多租户下标签词汇表如何治理?
- 如何降低误报?
常见问题
Rule of Two 能防住提示词注入吗?
不能阻止注入发生。它让一次被注入的会话无法同时拥有“读过不可信内容、接触敏感数据、能改变受保护状态或对外发送”三项,从而限制后果。Meta 自己也强调它是减轻风险的启发式,不替代最小权限。
为什么只有三个来源和三个敏感度?
因为细粒度的标签格在实践中会膨胀、会被关掉。3×3 足够表达“谁写的、有多敏感”,也容易让人理解拒绝的原因。更细的分区可以靠路径与租约来做。
会话污点会不会让智能体什么都干不了?
只会限制三类动作:改动受保护树、共享或删除、对外发送。分支内的读写不受影响。需要避开摩擦时,可以把读外部内容的工作放进一个没有敏感数据的会话,只传回经模式校验的结果。
相关概念
- Human Gate (人类闸门) 只在不可逆、对外或提权的动作之前出现,展示真实的差异。
- Agent Memory (智能体记忆) 笔记是你能读能改的真相,索引只是可以丢弃的缓存。
- Capability Lease (能力租约) 发给一次运行的、有期限与预算的窄域授权;子租约只能更窄。
引用本页
为读者、搜索引擎和智能体提供稳定的网址与建议的引用格式。
- 建议引用格式
- Agent NAS project. “Trust Labels (信任标签).” agentnas.com, 2026-11-11. https://agentnas.com/zh-cn/concepts/trust-labels/