模型提取攻击与防御:保护模型知识产权与 API 安全
当你把训练好的模型以 API 形式对外开放,调用方每发一次请求,模型就吐回一个预测。这个看似平常的交互里,藏着一个常被低估的威胁:攻击者不需要知道你的模型结构、参数或训练数据,只要能反复查询,就有可能「复刻」出行为高度相似的替身模型。这类攻击被称为模型提取攻击(model extraction attack),也是 AI 安全里与数据隐私、模型水印紧密交织的一条主线。本文先讲清攻击的本质与分类,再逐条拆解防御手段,最后讨论如何衡量缓解效果,并厘清它与成员推断、Prompt Injection 的边界。文中涉及的论文结论均已通过 arXiv 原文核验,版本敏感的数字统一标注「待核实」。
什么是模型提取攻击
模型提取攻击指的是:攻击者在仅拥有黑盒查询权限(输入样本、拿到输出预测)的前提下,通过构造大量查询,重建出一个在功能上逼近受害者模型的替身模型。这里的「提取」不一定是拿到逐参数的精确副本,更多时候是拿到一个「行为克隆」——替身模型在受害者分布内的输入上,给出几乎一致的输出。早期奠基性工作由 Tramèr 等人在 2016 年提出(论文「Stealing Machine Learning Models via Prediction APIs」,arXiv:1609.02943,发表于 USENIX Security 2016),他们证明对逻辑回归、神经网络、决策树等模型,仅靠预测 API 就能以接近完美的保真度把模型「偷」出来,并在当时 BigML 与 Amazon Machine Learning 的在线服务上做了实证。
攻击之所以可行,根子在查询接口泄露了「多余信息」。很多 ML-as-a-Service 平台不仅返回预测类别,还返回每个类别的置信度(概率或 logit)。置信度把决策边界的几何形状暴露给了攻击者——通过在不同位置试探,攻击者能用线性回归或求解方程组反推出模型的参数。即便只返回硬标签(不返回置信度),Tramèr 等人也证明攻击仍然可能发生,只是成本更高。换句话说:只要接口对外暴露预测能力,攻击者就有办法用查询量换取模型能力。
攻击分类
模型提取不是一个单一动作,按攻击目标可拆成三类,它们在技术难度与危害面上各不相同。
功能提取(克隆行为)
这是最主流的一类,目标不是复现参数,而是复现「输入到输出」的映射。攻击者准备一批查询样本(可以是对受害者训练分布一无所知、只从其他分布随机采样的图片,也可以是自己构造的文本),把样本喂给受害者 API 拿到标签或概率,再用这些「输入-输出」对作为训练数据,训练自己的替身模型。Orekondy 等人在 2018 年的「Knockoff Nets: Stealing Functionality of Black-Box Models」(arXiv:1812.02766)中给出关键观察:即便攻击者不知道受害者的训练数据、内部结构与输出语义,仅用来自不同分布的随机图像查询,也能训出表现良好的 knockoff;替身甚至可以用不同架构;用强化学习还能提升查询样本效率。他们在某流行图像分析 API 上,仅花费约三十美元就做出了可用的替身(具体金额随汇率与定价变化,待核实)。这说明功能提取的门槛比直觉低得多。
参数与架构推断
这一类更进一步,试图还原模型的参数甚至结构。当 API 返回连续置信度时,攻击者可以把模型当作可查询的「方程式」,对线性模型直接求解权重;对更复杂模型,则通过边界探测、等价查询、路径搜索等方法推断决策树分裂点,或推断神经网络的层数、宽度与激活。参数提取的威胁在于:一旦参数泄露,攻击者等于完整拥有了你的资产,可以无限免费部署、逆向你的训练数据,甚至针对具体弱点做对抗样本攻击。
训练数据抽取(与成员推断关联)
模型不仅泄露参数,也会以某种方式「记忆」训练数据。攻击者可以通过查询接口,间接抽取出训练样本的特征,或确认某条特定记录是否出现在训练集中。后者正是成员推断攻击(membership inference):给定一条数据记录与对模型的黑盒访问,判断它是否在模型的训练集里。Shokri 等人在 2017 年的「Membership Inference Attacks against Machine Learning Models」(arXiv:1610.05820,发表于 IEEE S&P 2017)中,训练一个独立的推断模型,来区分目标模型对「训练过的输入」与「没训练过的输入」的预测差异,并在 Google、Amazon 等商业服务上验证了可行性。成员推断与训练数据抽取共享同一条技术脉络:模型对见过的数据和没见过的数据,输出分布存在可检测的差异。缓解这类泄露,常与缓解过拟合、降低泛化差距、加入差分隐私等手段绑定。
风险:为何必须防御
把攻击者能造成的后果摊开看,模型提取至少带来四重风险。
第一,知识产权泄露。训练一个高质量模型要消耗算力、数据与工程投入。替身模型让竞争对手零成本获得等价能力,等于把核心资产无偿分发出去。
第二,调用成本被转嫁。受害者按查询次数计费,攻击者用低价批量查询「预买」出替身后,就不再调用你的 API,转而自己免费部署。你既损失了后续收入,还替别人的爬取行为支付了算力。
第三,合规与隐私风险。训练数据里可能含个人信息、商业机密。一旦模型可被提取、记忆被反向读取,隐私合规(如个人信息保护相关法规)的边界就被打破。
第四,信誉与滥用。攻击者拿到替身后可针对原模型定制对抗攻击、生成误导内容,或把能力用于你不希望的场景,最终损害的是你的品牌与用户信任。
防御手段
防御的核心思路是:在不破坏正常可用的前提下,让攻击者的「单位查询收益」尽可能低,让攻击成本高于收益。下面五类手段可组合使用。
查询限速与配额
最朴素也最有效的一道闸,是限制单个密钥、单个账号、单个 IP 在一段时间窗口内的查询量。用令牌桶或滑动窗口做速率限制,对超额请求直接拒绝或降权。配额配合阶梯式计费,能让大规模爬取在经济上变得不划算。代价是可能影响合法的批量客户,因此限速阈值要按业务画像细分,对高价值企业客户设更高的合理上限。
输出加噪与置信度裁剪(top-k 截断、温度调整)
这是针对「置信度泄露」的直接对策,也是 Tramèr 等人论文中讨论的自然缓解方向。要点有三:其一,不返回完整概率分布,只返回 top-k 个类别,其余置为极低或隐藏;其二,对置信度做裁剪或四舍五入(降低精度),拉平决策边界附近的细节;其三,在输出里加入受控高斯噪声,或在解码前调高温度,模糊模型对边界样本的真实把握。下面是一段对模型输出做防御性后处理的示例,所有注释均为行尾注释,避免被误判为标题。
import numpy as np
from typing import List
def defend_outputs(logits: List[float], temperature: float = 1.0,
top_k: int = 3, noise_std: float = 0.01) -> List[float]:
arr = np.array(logits, dtype=float) / temperature # 先按温度缩放,温度越高分布越平
if top_k and top_k < len(arr): # 保留 top-k 类别,其余置为负无穷实现截断
threshold = np.sort(arr)[-top_k]
arr[arr < threshold] = -np.inf
if noise_std > 0: # 对保留 logit 加高斯噪声,进一步模糊置信度
rng = np.random.default_rng()
arr = arr + rng.normal(0.0, noise_std, size=arr.shape)
arr = arr - np.max(arr) # 数值稳定后计算 softmax
exps = np.exp(arr)
probs = exps / np.sum(exps)
return probs.tolist() # 返回加噪并裁剪后的概率,供 API 对外输出
需要强调的是:Tramèr 等人已证明,单纯省略置信度并不能彻底堵住功能提取,攻击者仍能用硬标签重建部分能力。因此加噪与裁剪应与其他手段叠加,而非单兵作战。
模型水印
水印把「产权声明」嵌进模型本身,让即便模型被提取,你也能在法庭或技术上证明所有权。Adi 等人在 2018 年的「Turning Your Weakness Into a Strength: Watermarking Deep Neural Networks by Backdooring」(arXiv:1802.04633)提出用后门方式嵌入水印:在训练时注入一组特殊样本(触发样本),让模型对这些样本输出预设的异常标记;正常任务精度不受影响,而只有持有触发集的版权方才能验证该模型是否被盗用。水印的价值在于「事后追责」而非「事前阻止」,它和加密不同,不阻止提取发生,但让提取可被取证。水印的鲁棒性(能否抵抗微调、剪枝、蒸馏)是需要持续评估的课题。
异常批量查询检测
在限速之外,用行为分析识别「像爬虫一样的调用」。可观测特征包括:查询的时间分布是否高度规律、输入是否覆盖异常均匀的网格或随机采样、是否反复探测相似语义的变体、是否对某些临界区域集中试探。把这些信号接入风控系统,对疑似批量提取的流量做二次验证、临时封禁或故意返回降级结果。检测难点在于,正常用户的探索式使用与水印探测在统计上可能有重叠,需要平衡误杀率。
结合缓存降低被探测成本
这一条常被忽略:受害者服务端自己也可以被攻击「薅」成本。借助提示词缓存或结果缓存,把高频前缀、常见查询的答案缓存复用,既降自己的算力账单,也压缩了攻击者的探测收益空间——当大量查询命中缓存而非真正触发模型计算时,单位爬取对你真实算力的消耗被摊薄。缓存本身不阻止提取,但能显著抬高攻击者的「性价比门槛」,与限速、加噪形成成本侧的协同。具体缓存键与 TTL 配置请参考各厂商官方文档(标注待核实)。
与模型水印、成员推断、Prompt Injection 的关系与边界
这几个概念常被混用,厘清边界有助于对症下药。模型提取与成员推断都建立在「模型输出泄露信息」之上,但目标不同:提取要的是可部署的替身,成员推断要的是某条记录是否参与训练这一二值结论。两者技术可复用(都用查询构造与分布差异分析),缓解手段也部分重叠(降噪、提高泛化、差分隐私)。
模型水印与提取的关系是「攻防互补」:提取是攻击,水印是提取发生后的取证与威慑。水印不阻止提取,但让提取能被追溯,因此常作为纵深防御的一环,而非第一道防线。
Prompt Injection 与模型提取则不属于同一层威胁:Prompt Injection 是让模型偏离预设指令、执行攻击者注入的内容,危害集中在行为越权与数据泄露;而模型提取关注「把模型能力整体复制走」。二者可能在多模态或智能体场景交汇(例如用注入诱导模型泄露系统提示或训练细节),但防御栈不同——防注入靠输入净化、权限隔离与输出约束,防提取靠上面的成本与输出管控。
如何评估缓解效果(可用性 vs 安全性权衡)
所有防御都是权衡。限速太严,正常客户被误伤;加噪太重,模型可用性下降、用户体验受损;水印太弱,容易被洗掉。评估缓解效果要同时看两端。
安全性指标:在固定攻击预算下,测量替身模型与受害者模型的「保真度」(如在不同测试集上的输出一致率、在受害者分布上的准确率差距)。防御越好,替身保真度越低、攻击方所需查询量越高。可用性指标:对正常请求测量准确率、延迟、置信度可用性的下降幅度。用「攻击成本-可用性损失」曲线来选型——理想状态是正常用户几乎无感,而攻击者的单位查询收益被压到不划算。建议在小流量做 A/B 对照,逐步调参(top-k 大小、噪声强度、限速阈值),用监控数据反推最优档位,而不是一次性设死。
小结
模型提取攻击利用公开查询接口,以查询量换取对受害者模型的功能克隆甚至参数还原,其门槛比直觉低得多,Knockoff Nets 等工作已证明随机分布的查询也能训出可用替身。攻击分为功能提取、参数与架构推断、训练数据抽取三类,后者与成员推断共享技术脉络。风险集中在知识产权泄露、成本被转嫁、隐私合规与信誉四个方面。防御应当组合出击:用查询限速与配额抬高经济门槛,用置信度裁剪、top-k 截断、温度调整与加噪压缩输出信息,用模型水印做事后取证,用异常批量查询检测拦截爬虫式流量,并用缓存摊薄自身被探测成本。评估缓解效果必须同时看安全性(替身保真度、所需查询量)与可用性(准确率、延迟损失),在两者的权衡曲线上持续调参。模型提取与成员推断目标不同但技术相通,与 Prompt Injection 则分属不同威胁层,应分别布防。
参考与延伸阅读
-
Tramèr 等,「Stealing Machine Learning Models via Prediction APIs」,arXiv:1609.02943,USENIX Security 2016。模型提取攻击的奠基性论文,提出基于置信度的提取方法,并讨论省略置信度、降低精度等自然缓解方式的局限。标题、作者、年份、会议与核心结论已核验。链接:https://arxiv.org/abs/1609.02943 (已核验,访问于 2026-08-18)
-
Shokri 等,「Membership Inference Attacks against Machine Learning Models」,arXiv:1610.05820,IEEE Symposium on Security and Privacy 2017。成员推断攻击的开创工作,训练独立推断模型区分目标模型在训练/非训练输入上的预测差异,并验证于 Google、Amazon 等商业服务。标题、作者、年份、会议与核心结论已核验。链接:https://arxiv.org/abs/1610.05820 (已核验,访问于 2026-08-18)
-
Adi 等,「Turning Your Weakness Into a Strength: Watermarking Deep Neural Networks by Backdooring」,arXiv:1802.04633,2018。用后门方式对深度神经网络做黑盒水印,正常任务精度不受影响且对多种实用攻击具备鲁棒性。标题、作者、年份与核心思路已核验;具体发表会议标注待核实。链接:https://arxiv.org/abs/1802.04633 (已核验,访问于 2026-08-18;会议信息待核实)
-
Orekondy 等,「Knockoff Nets: Stealing Functionality of Black-Box Models」,arXiv:1812.02766,2018。将功能提取建模为「查询取对、再训 knockoff」两步,证明不同分布随机查询、换架构、强化学习提效均可成立,并在某图像 API 上低成本做出替身。标题、作者、年份与核心观察已核验;具体发表会议与实证金额随定价变化标注待核实。链接:https://arxiv.org/abs/1812.02766 (已核验,访问于 2026-08-18;会议与金额待核实)
-
OWASP Top 10 for Large Language Model Applications(LLM 应用十大安全风险):将模型抽取(Model Extraction)列为独立风险项,并给出限速、输出限制、监控等应对建议。具体条目编号与内容随版本更新,本文未逐一核验,请以来源最新版本为准。链接:https://owasp.org/www-project-top-10-for-large-language-model-applications/ (待核实)