在之前讨论过的旨在获取训练数据相关信息的推理攻击基础上,我们现在转而关注一种不同的提取方式:复制目标模型的功能。这被称为模型窃取或功能提取。这里的目的不一定是获取单个训练点的信息,而是创建一个行为与目标模型完全一致或至少非常相似的代理模型,通常不了解其内部架构或参数。设想一种情形,机器学习模型作为服务部署,通过API可供访问。攻击者可能只能发送输入(查询)并观察相应的输出(预测)。这是模型窃取中常见的黑盒环境。攻击者的目标是构建自己的模型 $f_{surrogate}$,有效复制目标模型 $f_{target}$ 的输入-输出映射。模型窃取的原因为什么攻击者想要窃取模型的功能?存在以下几个原因:知识产权(IP)盗窃: 一个高性能模型可能代表着数据收集、特征工程和训练方面的巨大投入。窃取其功能使得竞争对手可以绕过这些投入。理解专有算法: 竞争对手或研究人员可能窃取模型,以逆向推导其行为特点或其训练数据。找出缺陷: 攻击者可以离线分析一个高度相似的代理模型,找出其中的缺陷(例如对抗样本),然后用于攻击原始目标模型。这对于构建迁移攻击尤其有用。避免使用成本: 如果目标模型的API存在速率限制或费用较高,攻击者可能会窃取它,以获得对其功能的无限制、免费访问。核心提取流程模型窃取的基本方法依靠查询目标模型。攻击者执行以下步骤:查询选择: 选择一组输入数据点,$X_{query} = {x_1, x_2, ..., x_n}$。查询目标模型: 向目标模型 $f_{target}$ 提交每个 $x_i \in X_{query}$,以获得相应的输出 $y_i = f_{target}(x_i)$。这些输出可以是类别标签(硬标签)或概率/置信度分数(软标签)。训练数据生成: 创建一个新数据集 $D_{surrogate} = {(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)}$。训练代理模型: 在 $D_{surrogate}$ 上训练一个新模型 $f_{surrogate}$。攻击者选择 $f_{surrogate}$ 的架构。此过程的有效性在很大程度上取决于查询选择策略和所选的代理模型架构。digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fillcolor="#e9ecef", style="filled,rounded"]; edge [fontname="sans-serif", color="#495057"]; Attacker [label="攻击者系统", shape=cylinder, fillcolor="#ffc9c9"]; TargetModel [label="目标模型API\n(f_target)", shape=box3d, fillcolor="#a5d8ff"]; SurrogateModel [label="代理模型\n(f_surrogate)", shape=box3d, fillcolor="#b2f2bb"]; QueryData [label="查询输入\n(X_query)", shape=note, fillcolor="#ffec99"]; ResponseData [label="目标输出\n(Y_target)", shape=note, fillcolor="#bac8ff"]; TrainingData [label="代理训练数据\n(D_surrogate)", shape=folder, fillcolor="#d8f5a2"]; Attacker -> QueryData [label="1. 选择"]; QueryData -> TargetModel [label="2. 以x_i查询"]; TargetModel -> ResponseData [label="3. 返回y_i = f_target(x_i)"]; ResponseData -> Attacker [label="4. 收集"]; Attacker -> TrainingData [label="5. 创建(x_i, y_i)对"]; TrainingData -> SurrogateModel [label="6. 训练f_surrogate"]; Attacker -> SurrogateModel [label="拥有"]; }模型窃取过程包括攻击者选择查询、将其发送到目标模型的API、收集响应,并利用这些输入-输出对来训练一个代理模型。查询选择策略查询 $X_{query}$ 的选择对提取的成功很重要。随机采样: 查询可以从某个先验分布(例如均匀噪声)中随机抽取,或者从假定与目标模型训练数据相似的公开可用数据集中抽取。这方法简单,但可能无法有效发现 $f_{target}$ 的决策边界。基于分布的采样: 如果攻击者能够获取到代表目标模型操作范围的未标记数据(例如,图像分类器公开可用的图像),用这些输入进行查询可以获得一个更真实的数据集 $D_{surrogate}$。自适应查询(主动学习): 更巧妙的攻击采用自适应策略。攻击者可能首先训练一个粗略的代理模型,然后选择旨在改进它的新查询。示例包括:不确定性采样: 查询当前代理模型最不确定的点。边界优化: 查询当前代理模型决策边界附近的点以进行优化。合成数据生成: 使用生成对抗网络(GAN)等技术,根据目前收到的响应生成有用的查询。与随机采样相比,自适应策略通常需要更多交互,但可以用更少的查询生成更高相似度的代理模型。代理模型架构攻击者必须为 $f_{surrogate}$ 选择一个架构。架构猜测: 如果攻击者有理由相信 $f_{target}$ 使用特定类型的架构(例如,图像分类的ResNet-50),他们可能会为 $f_{surrogate}$ 选择相同或类似的架构。标准架构: 通常,攻击者只是使用一个足够强大且与任务范围相关的标准架构(例如,常见的CNN、Transformer),而不假设它与 $f_{target}$ 匹配。简单模型: 对于简单模型可能就足够的任务,或者如果查询预算非常有限,攻击者可能会使用多层感知器(MLP)、支持向量机(SVM)甚至决策树等模型。选择取决于所需的相似度和观察到的输入-输出行为所表明的复杂度。硬标签与软标签从 $f_{target}$ 获取的信息类型影响提取质量:硬标签: 只返回最终预测的类别(例如,“猫”、“狗”)。每次查询提供的信息较少。软标签: 模型返回每个类别的置信度分数或概率(例如,{"cat": 0.9, "dog": 0.1})。这些更丰富的信息能极大帮助 $f_{surrogate}$ 的训练,通常可以更快、更准确地完成提取。训练代理模型以匹配概率分布(使用Kullback-Leibler散度等损失函数)通常比仅匹配预测类别更有效。方程提取对于线性回归或逻辑回归等非常简单的目标模型,有时可以提取精确参数(系数和截距)。这通常涉及精心选择的查询。例如,使用基向量或特别设计的输入进行查询,可以使攻击者解线性方程组来恢复模型权重。然而,这些技术不太适用于深度神经网络等复杂的非线性模型。挑战与防御模型窃取面临几个挑战:查询预算: API速率限制、查询成本或检测机制可以限制攻击者可以进行的查询数量。 "* 数据分布: 攻击者的查询数据可能无法完全匹配目标模型操作的数据分布,从而产生一个在该类数据上表现不佳的代理模型。"相似度衡量: 在无法获得目标所有者使用的代表性测试集的情况下,攻击者很难评估其代理模型与目标模型的相似程度。针对模型窃取的潜在防御措施包括:API速率限制和成本: 使查询变得昂贵或缓慢。输出扰动: 对预测结果添加噪声(例如,通过差分隐私)可以使提取更困难,特别是当只返回硬标签时。水印: 在模型的预测结果中嵌入隐藏模式,以识别被窃取的副本。预测保护: 只返回硬标签或量化概率,而不是完整的软标签。与其他方面的关联模型窃取与以下方面密切关联:迁移攻击: 成功窃取的代理模型可用于构建对抗样本,这些样本很可能迁移到原始目标模型上。隐私: 尽管不像成员推理那样直接显露单个训练数据点,但一个高度精确的代理模型可能会泄露关于训练分布的聚合信息或模型学到的偏差。模型窃取对机器学习模型中的知识产权投入构成重大风险,并可作为其他攻击的跳板。了解这些技术对通过API部署模型的组织十分重要,促使它们考虑平衡可用性与安全性的防御措施。