蒸馏攻击(Distillation Attack),也叫模型蒸馏攻击、知识蒸馏攻击或模型提取攻击中的蒸馏方式,本质上是针对闭源/商业大模型的一种知识产权窃取手段。它利用了原本合法的"知识蒸馏"(Knowledge Distillation)技术,但以恶意、未经授权的方式实施。
正常知识蒸馏(合法用途) vs 蒸馏攻击(恶意用途)
| 维度 | 正常知识蒸馏 | 蒸馏攻击(恶意蒸馏) |
|---|---|---|
| 目的 | 模型压缩、加速、降低推理成本 | 窃取闭源模型能力,免费/低成本复刻竞品 |
| 是否有授权 | 有(自己训练的teacher) | 无(攻击别人的商用/闭源模型) |
| teacher模型 | 自己控制、可访问logits/中间层 | 只能通过API黑盒访问,只能拿到最终输出 |
| 数据来源 | 自有数据集或合成数据 | 通过大量查询对方API自己构造 |
| 合法性 | 完全合法 | 违反服务条款,通常也触碰知识产权红线 |
蒸馏攻击的核心技术原理(黑盒场景)
攻击者根本看不到目标模型(比如Claude、GPT-4、Gemini等)的权重、中间层、logits,只能通过API得到文本输出。整个攻击分为两个主要阶段:
查询-数据收集阶段(Querying / Data Harvesting Phase)
- 目标:尽可能收集到"目标模型独有的高价值知识对",数量通常要达到几百万到几千万条。
- 攻击者批量构造大量精心设计的prompt(问题、指令、代码、数学题、翻译、推理题等)
- 通过API大量调用目标模型,收集 input → output 对
- 常见优化手段:
- 用多样化、高质量种子prompt(从开源数据集、reddit、论文、LeetCode等爬取)
- 自我迭代生成(让模型自己生成更难的问题)
- 针对性采集稀有能力(越狱提示、罕见语言、专业领域知识等)
- 分布式、多账号规避风控(这就是为什么常看到几千上万账号)
蒸馏/微调阶段(Distillation / Fine-tuning Phase)
- 拿一个开源基础模型(Llama-3、Qwen、DeepSeek、Mistral等)做student
- 用上面收集到的海量 input → teacher output 对进行监督微调(SFT)
- 损失函数基本就是经典的交叉熵(Cross-Entropy),让student的输出分布尽可能接近teacher的输出文本
- 有时还会加一些技巧:
- rejection sampling(只保留高质量回答)
- DPO / ORPO 等偏好对齐方法进一步模仿风格
- 多轮对话数据蒸馏(更难,但效果更好)
最终结果:一个成本只有原模型几十分之一甚至几百分之一的新模型,却在很多任务上表现接近甚至局部超过原模型 → 这就是"蒸馏成功"。
实际工业级蒸馏攻击是怎么做的(典型套路)
- 准备几千到几万个账号(真人/接码/虚拟号)
- 写分布式爬虫脚本,控制速率、换ip、模拟人类行为
- 种子prompt池 → 滚雪球式扩展(model自己生成更难的问题)
- 收集到几百万~几千万高质量对话对
- 选一个强开源base(比如DeepSeek-R1、Qwen2.5、Llama-3.1 70B等)
- 海量显卡上跑SFT(有时几百到上千张H100/A100级别)
- 得到一个"偷学"了Claude/GPT能力的廉价模型
防御方能做什么(为什么很难完全防住)
- 频率限制、账号风控 → 可以被多账号+慢速爬绕过
- 输出加水印/指纹 → 可以被后处理洗掉
- 拒绝回答某些高危问题 → 攻击者就绕着问低危但有信息量的问题
- 故意输出错误/低质量答案 → 攻击者会过滤掉低质量样本
- 完全不开API → 商业上基本不可能
目前最有效的实际手段是组合拳:强风控 + 输出扰动 + 法律威慑 + 持续模型升级,但完全杜绝工业级蒸馏攻击在技术上仍然非常困难。
简单一句话总结:蒸馏攻击 = 用海量API调用"偷"闭源模型的回答 → 再用这些回答去微调一个开源模型 → 最终低成本复刻了原模型的大部分能力。这就是为什么现在很多公司把API调用次数、单用户QPS、对话历史长度等限制得越来越严格。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)


