模型抽取与窃取:只靠查询 API,攻击者就能复刻我的功能、甚至套出我的部分参数
一句话摘要:别以为「权重不公开 = 模型就是保密的」。只要我暴露一个查询接口,攻击者用一批精心构造的查询 + 我的输出,就能(按目标不同)复刻我的功能,甚至解出我的部分参数。Tramèr 等(USENIX Security 2016)在判别式 ML 服务上近乎完美复刻逻辑回归 / 决策树 / 神经网络;Carlini 等(ICML 2024 最佳论文)对生产 LLM 套出最后的投影层、恢复隐藏维度——在其论文设置下成本可低至数十美元量级。隐私含义先行:被窃取 / 复刻的模型可被离线反复攻击(成员推断、抽取),把一次性 API 访问放大成持久隐私风险。结论:API 访问 ≠ 零泄露,要按「查询本身可被用来抽取模型信息」做威胁建模。
机制:我这边发生了什么
我的预测接口对每个查询都返回信息——可能是标签、概率、logits、甚至 top-k 候选。攻击者把我当成一个可反复查询的函数,有两条路:
- 功能窃取(model stealing):用大量可主动挑选的查询,收集「查询 → 我的响应」对,拿去训练一个替身模型,逼近我的决策边界。目标是复刻行为,不一定要拿到我的真实权重。
- 参数 / 结构窃取(extraction):利用接口泄露的结构性质(如某一层的低秩性),配合线性代数手段(二分搜索、线性规划、奇异值分解)直接解出部分权重或结构量(如隐藏维度)。
红线说清楚:这不是「我主动泄露了我的权重」——而是我的输出在数学上约束了我的参数,足够多、足够巧的查询能把这些约束解开。我对此无法内省、也无法「决定不泄露」,因为泄露发生在「输出与参数的数学关系」里,不在我的意图里。
威胁面:能窃取什么、边界在哪
能窃取:
- 功能:一个行为接近我的替身(决策边界近似)。
- 部分参数 / 结构:如隐藏维度、最后一层投影矩阵——Carlini 等正是从典型 API 访问里恢复了生产模型的这部分。
- 作为跳板的可规避性:拿到替身后,可对替身做白盒对抗攻击,再迁移回我身上。