Daydreaming: Stealing Hidden Agent Skills through Black-Box Task Interaction —— 精读
论文链接:https://arxiv.org/abs/2608.26733
发表时间:2026 年 8 月(arXiv:2608.26733v1,2026-08-27 提交,USENIX 风格排版)
机构:UC Berkeley(伯克利加州大学,4 位作者,含 Raluca Ada Popa)+ National Yang Ming Chiao Tung University(国立阳明交通大学,台湾,3 位作者)。纯高校合作,无企业参与。
领域标签:cs.CR(密码学与安全)· Agent 知识产权窃取 / LLM Agent 安全
备注:代码与 benchmark 评审期间匿名托管,承诺发表后按 USENIX 开放科学准则公开。
一、论文背景
1.1 Agent Skill:把专家经验打包送给大模型
通用大模型是"广而不深"的:什么都能聊两句,但遇到真正的专业任务——法律尽调、安全告警研判、医疗编码——光靠模型本身远远不够。专业能力往往依赖详细指令、领域参考数据、精调过的阈值参数、辅助脚本和反复打磨的工作流。
Agent 生态因此发展出了 skill(技能) 这一封装形式:把上述专业资产打包成一个文件包,挂在通用 agent 身上,让它在合适的时候自动加载。按照 Anthropic 与 OpenAI 的开放技能标准,一个 skill 通常包含:
- SKILL.md:主指令文档,写明能力范围、决策规则、专业术语、操作流程——可以理解为一份"岗位操作手册";
- 参考数据:指标列表、阈值表、模板等参考文件;
- 可执行脚本:helper 脚本等直接干活的代码。
关键设计是渐进式披露(progressive disclosure):对客户只暴露 skill 的名字和一句简介(所谓 skill card),指令文档和捆绑文件只在执行时按需加载。skill 挂在通用模型外层而不是合并进权重——这意味着一个重建出来的 skill 可以被拷贝、安装到另一个 agent 上独立运行。这个"可移植性"正是它成为攻击目标的原因。
1.2 Skill-as-a-Service:把技能当服务卖
论文把正在成形的商业模式命名为 SkaaS(Skill-as-a-Service):厂商在自己托管的 agent 上安装 skill,客户按任务付费或订阅。论文的对比很精辟:
SaaS 扣下的是程序,收的是它算出来什么的钱;SkaaS 扣下的是专业知识,收的是它判断出什么的钱。
现实中的厂商已经不少:Harvey(法律)、Dropzone(安全运营)、Nym(自主医疗编码)、Intercom 的 Fin(按解决量计费的客服)。这些厂商的服务条款普遍禁止逆向工程、禁止用输出构建竞品——说明他们清楚隐藏的 skill 是核心商业资产。
为什么 skill 比单个系统提示词值钱得多?论文举了个贯穿全文的例子:一家安全运营厂商对外只宣传一句话——“调查安全告警并返回带证据的裁定”——但背后藏着多年工程与运营经验:升级规则(哪些告警值得半夜叫醒分析师)、威胁指标库、校准过的检测阈值。这些决策逻辑、参考数据、调参成本,都是真金白银堆出来的知识产权。
1.3 核心矛盾:保密的技能 vs 开放的工作路径
厂商的防线长什么样?现有防御全部聚焦披露路径(disclosure path):检测"试图套出 skill"的可疑请求、在系统提示里加"禁止泄露"的指令(如 SkillGuard)、过滤输出中复现受保护文本的内容。
但 SkaaS 的商业本质决定了另一条路必须敞开:工作路径(work path)——客户提交普通任务,服务完成并返回结果。这条路径不可能关,关了就没有生意。
于是产生了一个此前没人系统研究的攻击面:执行本身就是观测与行为推断的信息源。安全运营厂商的客户恰恰是那些自己的网络产生了告警的企业——每个客户都可以把精心挑选的告警放到 skill 面前,观察厂商的裁定。看多了,你就学会了它的判断标准。
1.4 黑盒系统辨识:一个来自控制理论的视角
要把这件事做严密,需要一个理论透镜。控制理论里有个经典问题叫黑盒系统辨识(black-box system identification):不知道系统内部结构,只能给输入、看输出,据此重建一个行为上等价的系统模型。机器学习领域的"模型提取攻击"(Tramèr 等人 2016 年开创)是同一思想:通过查询 API 恢复专有模型的功能,而不必复现其实现字节。
本文做的事,就是把 skill 窃取严格地形式化为对 agent 系统的黑盒辨识问题,并在最不利的信息条件下(只能看到最终输出)给出高效解法。这也是论文标题"Daydreaming"(白日梦)的意味:受害者从没被告知自己在被窃取,攻击者只是不断"做梦"出各种可能的 skill 版本,再用真实任务的结果去筛选。
二、论文定位和关联工作
2.1 谱系一:从模型提取到技能窃取
黑盒模型提取(Tramèr et al., USENIX Security 2016)奠定了"查询访问即可恢复功能"的范式。skill 窃取继承了这一思想,但目标从"训练好的模型"换成了"自然语言规则 + 脚本 + 参考数据组成的模块化可部署程序",评估标准也从功能等价变为行为复现。这是从"偷模型"到"偷手艺"的迁移。
2.2 谱系二:系统提示词窃取
最接近的既有研究方向是偷系统提示词:PLeak(CCM 2024)优化对抗性查询诱导直接披露;PRSA(USENIX Security 2025)攻击真实提示词服务;Sha & Zhang 等从输入输出对重建功能相似的提示词。两项工作给了本文重要启发:一是 Tan 等人的实地研究表明词汇相似度是功能复现的不完整度量——这直接影响了本文"以行为效用为主指标"的评估哲学;二是 Kaneko & Baldwin 的信息论分析表明"每查询泄露的比特数取决于暴露的响应通道"——这是本文三级观测水平形式化的思想源头。
但提示词是一段文本,skill 是可执行的多文件程序:要恢复的不只是措辞,还有文件组织、各自角色与协作方式,最终要能装上就能跑。
2.3 谱系三:Agent skill 作为研究对象(同期工作)
一部分工作把 skill 当作可复用能力抽象来研究(PolySkill 的多态技能、LLM-as-Tool-Makers、Agent Workflow Memory),但它们不关心"skill 作为机密资产"的属性。真正与本文同期交叠的有三项:
- BBS(arXiv 2604.21829):诱导 agent 吐出自己的 SKILL.md 文本,对泄露文本打分——依赖披露路径;
- SigLeak(arXiv 2607.25560):读取执行轨迹推断指令,但需要服务方配合做一次"关闭 skill 的对照运行"——现实中不存在这种配合;
- RedAct(arXiv 2606.10813):防御方工作,发布前对轨迹做脱敏。
没有一项能在披露防御开启的前提下重建多文件 skill。
2.4 定位总结
| 维度 | BBS | SigLeak | Daydreaming |
|---|---|---|---|
| 与受害者的交互 | 请求受害者泄露 SKILL.md,读披露文本 | 正常跑一次 + 关闭 skill 跑一次,比对轨迹 | 提交为区分候选行为而挑选的客户任务,读结果 |
| 前提条件 | 披露路径可用 | 轨迹可见 + 服务方愿意做 skill-off 运行 | 仅需工作路径 + 预算 B 次调用 |
| 重建产物 | 泄露的指令文件文本 | 从轨迹推断的指令 | 带支撑文件的可安装 skill |
| 观测级别 | Output(但被防御拦截) | 增强轨迹 | Output(最严格级) |
定位结论:本文是第一个在披露防御全程开启、仅凭最终输出的设定下完整重建多文件可安装 skill 的攻击工作,同时贡献了三级观测水平的形式化框架与"精确源不可恢复、行为效用才是正确目标"的理论刻画。
三、问题定义
3.1 从具体场景到抽象结构
具体场景:付费客户面对一个 SkaaS 服务,只能看到 skill 名字和一句话简介,能提交任务、拿结果,有调用预算。它想偷走 skill。
本文的核心洞察是发现了一个深层结构相似性:这本质上不是安全攻防问题,而是黑盒系统辨识问题。一旦这样看,“偷 skill"就脱离了钓鱼、越狱、提示注入这些对抗性技巧的范畴,变成一个纯粹的"如何用最少实验最大化信息"的实验设计问题。对应关系如下:
| 黑盒系统辨识 | skill 窃取 |
|---|---|
| 被辨识的未知系统 | 隐藏 skill S =(指令文档 m,资源文件集 R) |
| 激励信号设计 | 判别性任务构造 |
| 输出观测 | 受害者返回的最终响应与文件 y_S(x) |
| 参数估计与模型结构选择 | 属性推断 / 候选计划 / 文件版本三层假设 |
| 模型验证(新输入上的拟合度) | held-out 任务上的行为效用 U |
| 实验预算 | 受害者调用预算 B |
3.2 三级嵌套观测水平
一个关键的形式化贡献:按部署方向客户暴露多少信息,定义三级嵌套的观测水平 Differential(o1)⊇ Trace(o2)⊇ Output(o3):
| 级别 | 攻击者可见 | 现实部署例子 |
|---|---|---|
| Differential(o1) | 技能卡 + 模型/编排/工具栈 + 带技能轨迹与结果 + 配对的无技能孪生执行 | 开源权重 + 公开 harness,skill 从 enclave 单独提供 |
| Trace(o2) | 技能卡 + 带技能的轨迹与结果 | agent 网关 / 遥测系统暴露工具调用及返回值(供客户审计) |
| Output(o3) | 技能卡 + 仅最终响应与返回文件 | 自主医疗编码、按解决量计费的客服 |
级别越低(下标越大)假设越弱、攻击越难。本文主攻最严格的 Output 级——在最严格级成功的攻击,向上自动适用于所有更强观测级。
3.3 形式化定义
- 受害者 agent V_S =(模型 M,编排策略 Π,工具集 T,隐藏技能 S);攻击者从无技能 agent V_∅ 出发,只见公开技能卡 d =(名字 ν,简介 σ);
- 攻击者在预算 B 次受害者调用内,自适应地提交任务 x、观察 y_S(x),目标是构造可部署的重建 Ŝ =(m̂,R̂);
- 攻击目标不是源码一致,而是行为效用:U(P) = E_{x∼D_eval}[v_x(y_P(x))],即在完全 held-out 的任务集上(任务与验证器从不用于查询、影子任务、候选选择、停止条件或调参),重建 skill 挂载后完成任务、通过验证器的期望得分。攻击者最大化 U(Ŝ)。
3.4 这个抽象的精妙之处
Proposition 4.1(精确源不可辨识):固定任一观测级,若两个不同 skill 在所有自适应任务策略下产生相同的交互记录分布,则任何随机化攻击者都无法区分它们——等先验下精确源恢复的成功率至多 1/2。这类不可区分的 skill 在所有三级都存在(例如修改运行时从不读取、也不影响任何输出的"惰性内容”)。
这个命题是整篇论文的定海神针:它从信息论上证明了逐字节恢复源文件是错误的目标,正确的目标是行为效用。这一定义直接决定了后面的一切设计——攻击者不需要抄对答案,只需要做出一份行为等价的复制品;相应地,防御者也不能靠"文本没泄露"来宣称安全。论文附录还配套证明了访问级单调性(观测越多最优风险不增)、单阈值自适应二分对非自适应调度的指数级差距、以及有限预算下的 Fano 型误差下界,给攻击的查询效率提供了理论参照。
四、问题解法
4.1 总体架构:三阶段层次化假设细化 + 一个共享循环
Daydreaming 不试图一口气合成整个 skill,而是从抽象到具体逐层细化假设:行为属性 → 候选 skill 计划 → 具体文件版本。预算 B=96 被拆分为(64,12,20)分配给三个阶段。
每个阶段内部跑同一个假设细化循环:
- Update & Propose(更新与提议):用已有任务结果更新当前认知,提出下一批竞争假设;
- Craft & Execute(构造与执行):构造一个让各假设预测出不同可见结果的任务,提交给受害者执行(并做阶段所需的本地对比);
- Observe & Select(观察与选择):比对结果,选出更受支持的假设,或记录"无法判定"。
4.2 核心查询策略:判别性任务
贯穿三阶段的用钱原则只有一个:只在前置假设能被一个任务区分开时才花受害者调用,这样的任务称为判别性任务。若无法构造出判别性任务,就不调用受害者;若结果不支持任何一方,记为 undetermined 而不是瞎猜。
Stage 1 有三类构造手法:
- 普通行为:为"结果按严重度还是按检测时间排序"这类属性设计一个低严重度事件先发生、高严重度事件后发生的报告任务,两种假设预测出相反的行序;
- 数值阈值:对"升级阈值是多少"这类属性,构造一组其他输入完全固定、只有目标量递变的成批案例(像正常业务批处理一样提交),观察决策在哪个区间翻转,再自适应地收窄区间——本质是二分查找的伪装;
- 计数规则:对"一个 DNS 包算 DNS 一类,还是算 DNS+UDP 两类,还是 DNS+UDP+IP 三类"这类约定差异,构造一个小输入,让各规则预测出不同的精确总数,然后对答案。
论文附录披露的提示词设计很见功力,几条规则全部为"看起来像正常客户"服务:绝不过问"怎么做、用什么、为什么";把区分性数据直接揉进任务正文;要求交付工作产物本身(成品脚本、最终数字、转换后的表格);并且巧妙地要求"产物 + 简短交接说明"两者都要——一份可运行的产物区分假设,一页方法说明暴露工具名、选项、术语,同一次请求双倍信息量,成本为零。
4.3 Stage 1:属性推断
输入:公开技能卡、任务格式、观测级、预算 B₁。输出:已测试属性记录集 P、任务-结果证据集 O、受害者结果中观察到的文件名集 A。
攻击者模型从技能卡播种 14–18 个候选属性(能力、约束、流程、术语、输入输出格式、规则范式、捆绑资产七类),每属性提出 2–4 个互斥取值,每轮最多四个属性打包进一个探针任务,共 4 轮细化——新结果可以催生下一层属性(深度 +1)。
两个防"自欺欺人"的机制值得注意:
- 无技能影子对照:每个任务同时让 generalist shadow(无技能的通用 agent)做一遍,判断观察到的行为是 skill 特有的还是通用模型就会的——只有前者值得记入 P;
- 接地规则:属性措辞只允许保留受害者结果中实际可见的细节,攻击者自己猜的、结果里没有的内容一律丢弃。一个只含猜测的失败测试直接作废。
Stage 1 还会零成本回收附加证据:扫描已存储的代码与结果,收割模块名、函数名、命令、路径(剔除任务自带的名字后进入 A),供 Stage 2 组装文件清单。
4.4 Stage 2:候选 skill 计划选择
属性知道了,但同样的行为可以有不同的文件组织(规则写在 SKILL.md 里还是脚本里?)。Stage 2 生成 n_H = 6 个完整候选计划 H_i =(SKILL.md 草稿 m_i + 各支撑文件的路径/用途/内容草图 R_i),每个计划锚定一个不同的代表性客户画像来保证结构多样性,全部强制保留 P 中已测属性并包含 A 中观察到的文件名。
比较采用邻对淘汰赛:相邻两个计划 (H_a, H_b) 配对,先让攻击者模型列出最多 8 条会改变任务结果的行为分歧 D(H_a, H_b)(纯文件名或文件位置差异被排除——任何任务都无法区分它们);围绕分歧构造判别性任务 x_{a,b} 提交受害者;同时用 candidate shadow(挂载该候选计划的本地影子 agent)分别执行同一任务,得到两个本地预测 y_a、y_b;三方比对 y_v vs y_a、y_b,匹配分歧多者晋级,并用受害者结果中暴露的新行为修订晋级者。平局或都不可判定时走显式兜底(优先覆盖 A 多的 → 文件少的 → 先提出的),保证循环不卡死。6 个计划最多 5 次比较决出 H★。
4.5 Stage 3:逐文件细化
H★ 中每个支撑文件只有路径 + 用途 + 草图。Stage 3 把结构冻结、逐文件补全:先处理支撑文件、最后处理 SKILL.md——这样最终指令可以引用已完成文件的真实函数名、接口与路径。
对每个文件:提出最多 3 个在不确定选择上互异的完整版本(例如阈值用 > 还是 ≥),构造暴露该差异的任务,提交一次受害者;各版本再由 candidate shadow 本地执行同一任务比对。指令/参考文件还会复用 Stage 1/2 已存储的任务-结果对做额外比对——旧结果涉及该文件管辖的行为时,就是一次免费的验证。可执行文件额外跑本地依赖检查与自测试(self-test 提示词要求验证"工具声称的效果真的发生了",并区分 CRITICAL 检查——一个嘴上说成功但什么都不做的脚本必须挂掉测试)。修订规则:只修最弱项,平均分不降才保留;畸形文件、依赖不可得外部副本的包装器、改变已恢复常量的版本一律拒绝。
4.6 Assembly:零调用的离线收尾
把选定文件按计划路径落盘后,做两项受保护的重写:把固定电子表格区间、写死的缺失值占位符泛化为通用规则;把绝对输出路径改为调用方可选的占位符。重写只有在"去掉可疑细节且不丢已恢复接口、不改其他路径"时才保留。全程零受害者调用。
4.7 Shadow Agent 的双重角色
Shadow agent(攻击者本地运行的 agent)是省钱的枢纽,承担两个角色:
| 角色 | 装配 | 作用 |
|---|---|---|
| generalist shadow | 不挂 skill | 提供无技能基线,判断行为是否 skill 特有 |
| candidate shadow | 挂载候选计划/文件版本 | 本地预测该假设下任务会怎么做 |
有了它,“预测各假设的行为"这个最烧钱的环节全部转移到攻击者本地,受害者只在"裁决"时被调用一次。这是 32 次调用能撑起三阶段细化的直接原因。
五、评估指标与实验证据
5.1 指标体系
- SR(成功率):held-out 任务上端到端二元完成的平均通过率——衡量"任务做成了吗”;
- U(行为检查):任务中间验证器(trace 级检查点)的通过率——衡量"做对了吗",即行为与原始 skill 的保真度。这是 U(P) 的经验实例化,也是论文最看重的主指标;
- NSR / NU(归一化恢复率):(方法 − 无技能) / (原始 skill − 无技能)。0 = 等于裸模型,1 = 等于原版 skill,负值 = 比裸模型还差;
- 结构恢复 P/R/F1:常量、阈值分支、工具前置条件、文件路径、脚本与原版一对一匹配——辅助指标。
双层指标(SR + U)的设计本身就是论文观点的一部分:SR 高不代表行为对,U 才区分"凑巧成功"与"忠实复现"。
5.2 数据集与设置
从 SkillsBench 改编 7 个技能包作为窃取目标(xlsx 表格处理、pddl-skills 规划、pcap-analysis、threat-detection、cvss-score-extraction、trivy-offline-vulnerability-scanning、vulnerability-csv-reporting),覆盖查表、数值算法、流程清单、工作流编排、文档产出五类真实用法,且要求安装原版 skill 必须优于无技能基线(保证"有东西可偷")。5 个完全 held-out 任务(自带可执行验证器)做评估,每个任务依赖 1–3 个技能。
受害者三个:claude-opus-5(默认)、gpt-5.6-sol、kimi-k3;攻击者模型 gemini-3.7-flash;重建 skill 默认装在 glm-5.3 上评估;默认编排策略 deepagents。扩展实验覆盖同家族不同规模受害者(Claude 家族 3 档、GPT-5.6 家族 3 档)与四种编排策略。
5.3 主结果:Output 级能恢复多少
| 条件 | SR | U | NSR | NU |
|---|---|---|---|---|
| 无技能 | .314 | .566 | 0 | 0 |
| 原始 skill | .629 | .843 | 1 | 1 |
| Daydreaming @ kimi-k3 | .543 | .806 | .727 | .868 |
| Daydreaming @ claude-opus-5 | .400 | .764 | .273 | .716 |
| Daydreaming @ gpt-5.6-sol | .371 | .665 | .182 | .358 |
核心数字:kimi-k3 作受害者时,在最严格的 Output 级恢复原始能力 86.8%(NU)——论文报告总体恢复超 SigLeak 近 4 倍(kimi-k3 上 NSR 0.727 对 0.168;而 SigLeak 的 NU 在三个受害者上全为负值,即重建品比不用还差)。每个技能中位仅 32 次受害者调用(预算 96,实际用量约三分之一),攻击者成本每技能 3.47–15.07 美元。
对基线的横向对比(三受害者取最高 U 者):SigLeak 在 claude-opus-5 上 U 仅 0.450 对 Daydreaming 的 0.764;BBS 因输入检测器在 251/252 次尝试中就拒绝了其请求而基本失效(其 U 全面低于无技能基线);Fixed Probes 在两个受害者上 SR 略高但 U 显著更低;One-pass synthesis(只给技能卡一次性生成)最弱。
5.4 结构恢复:几乎为零,但没关系
claude-opus-5 下的结构恢复:精确常量 F1 0.018(P .111 / R .010)、阈值分支 F1 .050、工具前置条件 F1 0、文件路径与脚本 F1 .200、1% 容差内常量 F1 .088。更扎心的证据来自相关性分析:重建文本与原版的 ROUGE-L、文件树 F1、文本余弦相似度与行为效用 U 的 Spearman 相关系数全部趋近于零(ρ 从 −.225 到 .145,置信区间全部跨零)。
**结论:有用行为不需要精确复制,文本相似也不保证行为正确。**这从评估侧反向印证了 Proposition 4.1 的预判。
5.5 消融:每个组件都在贡献
去掉任一组件 U 都下降:影响最大的两项是 Stage 1 文件名选择协议(U 降至 .624)与 Stage 2 判别性任务生成(U 降至 .626);去掉 Stage 3 逐文件细化 U 降至 .714;把候选计划数减到 1 降至 .736。有趣的是去掉 Stage 1 属性标注机制反而让 SR 升到 .497 但 U 降到 .696——属性验证给的是行为保真信号而非端到端成功,再次说明 SR 与 U 测的不是一回事。
预算扫描:B 从 16 到 96,U 从 .740 稳定升到 .785(128 时 .788,收益递减),SR 非单调。更多调用稳定改善的是行为质量而非运气。
5.6 观测水平实验(RQ2)
固定同一批判别任务,只变观测级:Output → Trace 使 SR .400→.567、U .764→.807、NSR .273→.804、NU .716→.870;Differential 与 Trace 几乎持平(略低 2.3 点 SR,作者明确不解读为"信息更多反而有害")。结论:主要的信息增量来自执行轨迹而非最终输出,再往上加模型栈与无技能对照的边际收益很小。
5.7 迁移性(RQ3)
重建 skill 冻结后跨模型、跨编排策略部署(零追加查询):Opus-5 重建品最通用,在全部四个部署模型上有效,甚至在 GPT-5.6-Sol 上比源匹配部署更好;Kimi-K3 重建品向 GLM-5.3 迁移最佳(NSR/NU = .727/.868);GPT-5.6-Sol 重建品最脆。跨模型迁移还存在成功与行为的分离:某些部署能用重建品完成任务(NSR 中等)但行为轮廓完全走样(NU 骤降)——只用任务成功率评估迁移会完全掩盖这一区别。跨编排策略:deepagents 下 NSR/NU 达 .909/.965(逼近原版),claude_agent_sdk 调用最多(355 次)却 NU 最低——可移植性取决于执行策略能否忠实兑现重建 skill。
5.8 防御实验:七重防线,无一同时压住 SR 和 U
所有实验从始至终开着三重披露防护:提取输入检测器 + SkillGuard 非披露指令 + 输出过滤。在此之上再加四种作用于不同环节的防御:
| 防御 | 作用点 | SR | U | 相对无附加防御(D0:.286/.395) |
|---|---|---|---|---|
| D1 查询重写 + 指令防御 | 提示 | .308 | .621 | U 反升;仅致 8 次模型拒答,无一输入被拦 |
| D2 5-gram 输出过滤 | 回复/轨迹 | .308 | .367 | 唯一降低 U 的(−2.8 点),但 SR 不降;滤掉 10.1% 回复后剩余结果仍够用 |
| D3 PSM shield | 系统提示 | .400 | .707 | 两项反升 |
| D4 精简技能卡描述 | 技能描述 | .308 | .638 | U 反升 |
没有任何一种防御能同时降低 SR 和 U。 D1 把攻击者开销从 $0.22 抬到 $4.68,重建品反而更有用。作者的诊断:这些防御检查的是"可疑请求"与"复制文本",而 Daydreaming 的每一次查询都是真实客户任务——合法任务执行的累积行为泄露,不在它们的检查范围内。保护工作路径仍是开放问题。
六、效果优势的根源解释
6.1 对比对象为什么曾经有效、又为什么在这里失效
- BBS 靠诱导泄露——在无防御时最快最便宜,但它的整个信息来源就是披露路径,输入检测器开启后 251/252 次尝试被拒,机制性死亡;
- SigLeak 靠读轨迹 + 对照运行——比 BBS 稳健,但需要服务方提供"关闭 skill 跑一遍"的配合(现实 SkaaS 不会给),且其产物只是从轨迹推断的指令文本,不含可执行文件;
- Fixed Probes 预构造一批任务再统一生成——不依赖任何特权,但任务清单在观察到任何结果前就定死了,无法跟进线索;
- One-pass synthesis 只看技能卡——信息量天然不足。
6.2 因果链一:判别性任务构造 → 每次调用的信息增益最大化 → 行为效用领先
表面解释是"它用了判别性任务所以好"。根源要追到信息流:普通探测(Fixed Probes)提交的是"有意思的任务",不同假设在这些任务上的预测高度重合,一次调用的期望信息增益接近零;判别性任务在构造时就保证了竞争假设预测可见地不同的结果,因此每一次调用的输出必然淘汰至少一个假设空间分支。这在数学上对应论文附录的 Proposition B.3:自适应二分 B 次误差 2^−(B+1),而任何非自适应调度最坏误差至少 1/(2(B+1))——自适应 + 区分性构造对预固定探测存在指数级效率差。
指标上的对应落点:Fixed Probes 在 claude-opus-5/gpt-5.6-sol 上 SR 略高于 Daydreaming(.533/.600 对 .400/.371),但 U 显著更低(.640/.637 对 .764/.665)——预固定任务能撞对一些端到端成功,却无法系统收敛到行为保真;消融去掉 Stage 2 判别性任务生成后 U 从 .764 跌到 .626,反证该设计是行为效用的主要来源之一。
6.3 因果链二:shadow agent 本地预测 → 受害者预算的角色转变 → 32 次调用完成三阶段
没有 shadow 时,“知道某假设会预测什么结果"只能靠问受害者,每轮假设筛选都要烧预算。引入 candidate shadow 后,信息流被切成两半:预测在本地免费做,受害者只做最终裁决——Stage 2 的三方比对(y_v 对 y_a、y_b)中两个预测零成本,只有 x_{a,b} 花一次调用;Stage 3 进一步复用 Stage 1/2 的存储结果做免费验证,每文件至多一次新调用。预算从"探索的燃料"变成"裁决的门票”,这是 96 的预算只用 32 次、还能在 B=16 时保持 U .740 的结构性原因。
6.4 因果链三:从工作路径而非披露路径获取信息 → 机制上绕过所有针对可疑请求的防御
这是"为什么七重防御全部失灵"的根源。逐个看防御的检查对象:D1 检测"提取形状"的请求——而判别性任务在构造规则上就禁止询问"怎么做/用什么",每个查询都是拿着真实数据要交付物的正常业务单,8 次拒答之外零拦截;D2 过滤与受保护文本共享 5-gram 的输出——而重建品本来就不复制原文(结构 F1 0.018),滤掉 10.1% 回复后剩余的行为证据依然充分;D3 改变指令遵循倾向——不改变合法任务结果中的信息含量;D4 删掉技能卡里的机制暗示——只削弱攻击者的初始先验,而 Stage 1 的接地规则本来就要求以受害者结果为准。
所以不是防御"不够强",而是防御守护的门(披露路径)与攻击走的门(工作路径)根本不是同一扇。工作路径必须在商业上敞开,这使得该攻击在机制层面不可被此类防御阻断——除非防御愿意限制输出精度、约束或审计自适应查询,以牺牲可用性为代价。
6.5 反事实推理:抽掉任一支柱会怎样
- 抽掉 execution-only(改为请求泄露或让受害者打分):立即落入输入检测器/输出过滤的打击面,重演 BBS 的 251/252 被拦截;
- 抽掉判别性构造:退化为 Fixed Probes——SR 或许不差,U 显著塌方(.640 级别);
- 抽掉 shadow agent:假设筛选成本全部转嫁给受害者,同等预算下细化深度骤降,或需数倍预算才能维持 32 次调用达到的 U;
- 抽掉接地规则(允许把猜测写进属性记录):错误假设会作为"事实"向下游传播(论文提示词里反复强调"一个错误分支会被下游当作事实记录"),重建质量被自污染。
四条支柱(execution-only、判别性、shadow、接地)分别解决"能不能绕防御、每次调用值不值、预算够不够、记录可不可信"四个独立瓶颈——这是效果优势的结构性必然,而非工程调参的凑巧。
七、必要知识反推
假设一个毫无背景的人要完成这项工作,最少必须知道什么?
7.1 领域知识层
- Agent skill 生态与标准:SKILL.md 结构、渐进式披露、skill card 的可见边界、skill 挂载而非合并进权重的可移植性——不知道这些就无法定义"偷到了什么";
- SkaaS 商业现实:哪些厂商在卖 hosted skill、怎么计费(按任务/按解决量)、服务条款如何禁止逆向——这是威胁模型"付费客户 + 工作路径敞开"的现实依据;
- 执行可观测性实践:哪些产品暴露 trace(审计需要)、哪些只回最终结果——三级观测水平的划分直接来自对这些部署形态的了解。
7.2 方法论知识层
- 黑盒系统辨识与模型提取研究脉络(Tramèr 一系):把"偷"翻译成"辨识"的范式来源;
- 最优实验设计 / 主动学习:信息增益最大化、判别性实验、自适应二分对非自适应的指数优势——Stage 1 阈值阶梯的理论骨架;
- 信息论不可辨识性:观察等价、惰性内容论证、Fano 界——Proposition 4.1 与"行为效用目标"的推导基础;
- 提示词窃取领域的评估教训:词汇相似度不等于功能复现——决定本文双层指标 + 归一化锚点 + held-out 协议的评估设计;
- 对抗性伪装的提示词工程:如何让探测请求读起来像真实客户(不问机制、自带数据、要交付物、要交接说明)。
7.3 工程知识层
- 多 agent 编排:shadow agent 的装配与调用、本地沙箱执行、自测试脚本生成与 CRITICAL 检查设计;
- benchmark 改编与防泄漏协议:held-out 的严格定义(不用作查询/影子任务/停止条件/调参信号)、多技能任务的指标聚合;
- 预算计量与成本核算:调用计费、重试的预算归属、Differential 孪生调用单独计价;
- 提示词工程的失败模式经验:例如论文注释中记录的"JSON 里嵌多行 markdown 导致解析崩溃改用哨兵标记"、“重建品包含’先读文档再干活’的规则会让 agent 浪费开局轮次”——这些是实打实踩坑后的工程知识。
7.4 知识融合的关键节点
- 节点一(安全 → 控制论的视角迁移):把 skill 窃取重述为黑盒系统辨识,攻击设计从"骗"变成"测"——这是全部方法论的支点;
- 节点二(理论驱动评估):Proposition 4.1 的不可辨识性证明 → 放弃源码匹配、确立行为效用主指标 → 结构恢复降级为辅助证据,理论与实验设计在此处闭环;
- 节点三(两机制互补的化学反应):判别性任务(保证每次调用有信息)× shadow agent(让信息筛选不在受害者侧发生)× 工作路径(保证调用不被拦截)——三者单独都不够,组合才同时满足"高效、便宜、不可挡"三个约束。
八、论文中可以提取的通用性灵感
灵感一:保护"字节"不等于保护"能力"——行为等价才是 IP 的真实边界
核心思想:一份知识产权的价值在于它的行为/决策输出,而非其文本表示;任何以"原文未泄露"为标准的保护都是假安全。
论文证据:结构恢复 F1 仅 0.018(常量)、文本相似度与行为效用相关性趋近于零(ρ = .037 等),但行为恢复达 NU 0.868;反向地,BBS 拿到了泄露文本,行为却比不用 skill 还差。
推广场景:模型 IP 保护与蒸馏合规的审计标准设计;代码/文档保密制度的重新评估(脱敏 ≠ 去能力);竞业与数据出境场景中"输出即泄露"的风险评级。
灵感二:用最大信息增益决定"下一次问什么"——判别性实验设计
核心思想:在查询昂贵的环境里,不要问"有意思的问题",要问"最能区分我现有假设的问题";问不出来就不问。
论文证据:判别性任务消融使 U 从 .764 跌至 .626;Fixed Probes 的非自适应探测 SR 尚可而 U 塌方;附录证明自适应二分对预固定调度存在指数级误差差。
推广场景:主动学习与样本标注的优先级排序;调试复杂系统时的二分定位;红队测试的用例生成;用户研究/需求澄清中的追问设计;科学实验的实验设计(DOE)自动化。
灵感三:本地模拟器替代昂贵 oracle——预测与裁决分离
核心思想:当你能粗略模拟一个昂贵系统的行为时,把它用于"批量预测",让昂贵系统只做"最终裁决",成本可以降一个量级。
论文证据:candidate shadow 承担全部假设行为预测,受害者中位仅被调 32 次(预算 96);Stage 3 复用历史结果做免费验证;B=16 时 U 仍达 .740。
推广场景:LLM 评测中的代理模型预筛 + 精评两段式流水线;数字孪生辅助的真实系统测试;A/B 测试中用离线模拟预演;任何 API 成本敏感的 agent 工作流。
灵感四:“正当路径"的累积泄露——防御面必须覆盖业务的必经之门
核心思想:如果一个系统的正常使用本身就在泄露其核心能力,那么所有针对"异常请求"的防御都守错了门;能力泄露是累积的、单次无害的。
论文证据:三重披露防护 + D1–D4 四种防御,无一种能同时降低 SR 和 U;D1 甚至使重建品更有用;每次泄露只是"一个正常任务的结果”,防线逐次放行。
推广场景:API 产品设计的输出精度权衡(返回判定还是返回打分细节);企业内部权限体系中"高频低敏"访问的长期聚合风险;数据分析服务的查询审计与自适应查询限流;模型即服务(MaaS)的提取攻击面评估。
灵感五:层次化假设细化——复杂重建先拆维度再逐层收窄
核心思想:面对高维未知对象(多文件技能),不要一次性生成完整答案,而是按"可测试原子属性 → 整体方案 → 具体实现"三层假设逐层细化,每层都用可观测证据收窄。
论文证据:三阶段架构中每层假设粒度递减、可测试性递增;消融显示三个阶段分别贡献于行为效用(去掉任一阶段 U 均降);接地规则保证每层只沉淀已被证据支持的细节。
推广场景:逆向工程与协议分析的标准化流程;程序合成与规格细化;科学假说的分层验证(定律 → 机制 → 参数);复杂系统调试时的分层定位。
附录:术语速查
| 术语 | 含义 |
|---|---|
| SkaaS | Skill-as-a-Service,厂商托管隐藏 skill、按任务收费的商业模式 |
| SKILL.md | skill 的主指令文档(岗位操作手册) |
| 披露路径 / 工作路径 | 前者指套出 skill 的请求通道,后者指正常任务执行通道 |
| o1/o2/o3 | Differential / Trace / Output 三级嵌套观测水平 |
| 判别性任务 | 让竞争假设预测出不同可见结果的任务 |
| shadow agent | 攻击者本地运行的影子 agent(generalist 无技能基线 / candidate 挂载候选计划) |
| SR / U | 端到端成功率 / 行为检查(中间验证器通过率) |
| NSR / NU | 相对"无技能 → 原始 skill"区间的归一化恢复率 |
| Proposition 4.1 | 精确源恢复在任一观测级均不可辨识,行为效用才是正确目标 |