模型窃取攻击:通过 API 窃取模型知识产权
什么是模型窃取攻击?
模型窃取攻击是一种针对机器学习即服务(MLaaS)的攻击方式。攻击者通过反复调用模型推理 API,在不直接接触内部参数或训练数据的情况下,逐步复制出功能高度相似甚至完全一致的“克隆模型”。这本质上是对模型知识产权的盗取,一旦成功,企业长期投入研发的心血将被人轻易复制,造成巨大的商业损失和竞争优势丧失。
对于初学者来说,你可以把模型想象成一个装在保险箱里的“黑盒技术”——保险公司只给你一个窗口(API),你往里面递一张图片或一组数据,它就从窗口递出一份结果。模型窃取攻击者就是通过不断递交精心设计的问题,并记录窗口返回的答案,在外部重新训练出一个自己的保险箱,里面装的“技术”与原版相差无几。
模型窃取攻击的工作原理
攻击流程概览
大多数模型窃取攻击遵循以下步骤:
-
API 探查与信息收集
攻击者首先了解 API 的输入输出格式、请求频率限制、返回结果的丰富程度(如是否返回置信度分数、Top-K 标签等)。返回信息越详细,窃取效率越高。 -
构造查询样本
攻击者生成大量的合成数据或收集公开数据,作为查询的输入。这些样本需要尽可能覆盖模型的决策边界,以便克隆模型能够学习到完整的行为。 -
发送查询并收集标签
通过 API 逐一提交样本,接收并保存模型的输出。如果 API 返回的是类概率向量或完整置信度,那么攻击者就能获得更丰富的监督信号。 -
训练克隆模型
使用收集到的“输入-输出”对作为训练数据集,训练一个结构可能完全不同但功能相似的模型。通常采用知识蒸馏的思想:原模型作为“教师”,克隆模型作为“学生”,通过模仿教师输出进行学习。 -
验证与迭代
攻击者对比克隆模型与原模型在测试集上的表现,如果不满意,就调整查询策略或增加查询量,直至克隆模型达到预定性能。
技术本质:黑盒知识蒸馏
模型窃取在技术层面与知识蒸馏高度一致。知识蒸馏原本是一种模型压缩技术,用一个大型教师模型指导小型学生模型训练,目标是保留教师模型的泛化能力。在攻击场景中,攻击者没有合法授权,却利用 API 公开的预测结果作为蒸馏信号,将大模型的“知识”转移到自己的模型中。这种攻击不需要任何关于原模型架构、参数或训练数据的先验知识,因此属于黑盒攻击。
攻击成功的关键在于两点:
- 输出信息的丰富性:如果 API 只返回最终的分类标签(硬标签),攻击者需要更多查询才能逼近决策边界;如果返回完整概率向量(软标签),少量查询就能提供足够的信息。
- 查询的高效性:攻击者必须用尽可能少的查询样本覆盖尽可能多的决策空间,从而避开 API 的用量审计和费用限制。
常见的模型窃取方法
基于采样的直接复制
这是最直观的方法:使用大量无标注数据(例如从互联网抓取的图片、通用文本)作为查询,收集 API 返回的标签或概率,然后直接训练一个模型去拟合这些输出。这种方法简单粗暴,但需要海量查询,容易被服务提供商的频控机制发现。
攻击场景示例:
某图像分类 API 提供付费调用,攻击者每天爬取数千张公开图片进行查询,积累数十万条结果后,训练了一个 ResNet-18 克隆模型,该模型在标准测试集上的准确率达到原模型的 95% 以上。
基于主动学习的策略
为了提高查询效率,攻击者使用主动学习思想:先随机采样少量样本并收集标签,训练一个初始克隆模型;然后根据克隆模型的“不确定性”或“信息量”生成新的查询样本,优先询问原模型那些克隆模型当前最不确定的样本。这样每一次查询都能带来最大的信息增益,大幅降低所需查询量。
常用策略:
- 不确定性采样:选择克隆模型预测概率熵最高的样本进行查询。
- 边界查询:生成位于决策边界附近的合成样本(如 DeepFool、边界攻击等方法),这些样本能精确描绘原模型的决策边界。
- 集成查询:同时训练多个克隆模型,使用它们的分歧度来决定下一个查询点。
针对回归模型和语言模型的窃取
模型窃取不仅限于分类任务。对于回归模型(如房价预测、风险评估),攻击者同样可以通过大量输入-输出对拟合一个功能等价的模型。对于大语言模型(LLM),攻击者可能通过 API 收集问答对,然后微调一个开源模型,使其在特定任务上表现出与商业模型类似的回答风格和准确性。虽然完全复制一个大语言模型的全部能力极其困难,但在垂直领域(如代码生成、法律咨询)中的局部窃取已构成实际威胁。
为什么模型窃取攻击非常危险?
- 知识产权被盗:模型开发和训练耗费大量资金、数据和算力,克隆模型的出现直接侵蚀原创者的商业回报。
- 次级攻击跳板:攻击者获得白盒克隆模型后,可以进一步发动对抗性攻击、成员推断攻击或模型反演攻击,暴露原模型的训练数据和弱点。这些攻击在黑盒条件下难以实施,但有了克隆模型就变得容易。
- 服务绕行与市场竞争:克隆模型可以完全脱离 API 独立运行,攻击者能以此提供与原始服务相同功能但更低价(甚至免费)的竞争服务,抢夺客户。
- 合规与声誉风险:如果被盗用的模型处理的是敏感数据(如医疗、金融),克隆模型可能被用于未经授权的决策,引发法律纠纷和数据泄露。
防御模型窃取攻击
模型提供方可以从多个层面部署防御措施,核心思路是增加攻击成本、降低信息泄漏、及时检测异常行为。
限制输出信息量
- 仅返回硬标签:不提供置信度分数,只给出最终的分类结果。这会迫使攻击者进行更大量的查询才能逼近期望的决策边界。
- 标签截断与平滑:返回 Top-K 标签而非完整概率向量;或者对输出概率进行平滑处理(如温度缩放后再舍入),减少精确信息的泄漏。
- 差分隐私(Differential Privacy):在输出结果中添加经过校准的噪声,使得攻击者无法从单次查询中准确推断模型的真实参数。这通常在模型训练阶段引入,但也可在推理 API 的输出上应用。
API 查询监控与限制
- 速率限制与计费:设置严格的每分钟/每日查询上限,并采用阶梯定价,使大规模查询行为在经济上和战术上变得不可行。
- 查询日志分析与异常检测:检测那些表现为扫描决策边界的查询模式(如输入样本高度相似却略有扰动、覆盖广袤输入空间的均匀采样等)。当出现可疑序列时,可触发验证码、封禁或延迟响应。
- 自适应防御:利用博弈论思想,当系统检测到疑似窃取行为时,有意返回错误或模糊的结果,误导克隆模型的训练,同时不给正常用户带来明显体验下降。
模型级别的保护
- 模型水印:在训练时注入特定的水印样本(如具有特殊标记的图片对应特殊标签)。如果怀疑某个模型是窃取所得,可以通过验证这些水印行为来举证。
- 集成与动态模型:将内部模型拆分为多个子模型,并根据输入动态选择推理路径或对输出进行加密混淆,使攻击者难以通过简单的输入-输出对还原一个固定模型。
- 主动取证:在 API 返回中嵌入可追踪的隐写信息,一旦发生窃取,可以通过克隆模型的输出来溯源。
真实世界案例
| 案例 | 简述 | 影响 |
|---|---|---|
| 商业 NLP 模型窃取(2020) | 某公司通过大量调用顶尖云服务商的命名实体识别 API,收集数百万条实例,成功训练出一个性能相近的模型,并用于自己的企业产品中,省去了自行标注数据的巨大成本。 | 直接经济损失和市场份额流失。 |
| 人脸识别系统盗用 | 攻击者利用公开照片集向付费人脸比对 API 发送请求,获得相似度分值,并以此构建了一个可离线运行的人脸识别克隆系统,随后将其出售给第三方。 | 绕过授权,侵犯隐私,引发法律诉讼。 |
| 语音合成模型窃取 | 攻击者通过数千次查询语音合成 API,收集音频与文本对,训练了一个基于 Taco tron 的克隆模型,其合成语音质量接近原服务。 | 盗版语音服务上线,冲击正版市场。 |
总结
模型窃取攻击是机器学习生态系统中的一个现实且严峻的威胁。它利用对外服务不可避免的信息泄漏,以极低成本复制商业模型的核心价值。对于企业而言,完全没有防范措施的 API 相当于向攻击者免费赠送模型。有效的防御需要组合多种策略:严格控制输出精度、智能监控查询行为、并辅以模型水印等法律取证手段。同时,安全人员应定期对内部模型进行红队演练,模拟窃取过程,以评估当前防御的真实有效性。
对于学习者来说,理解模型窃取攻击不仅能帮助你保护自己开发的模型,也能让你在设计 API 时做出更明智的权衡——在用户体验与知识产权安全之间找到最佳平衡点。