AI模型窃取与防范

AI模型窃取与防范:保护模型知识产权的攻防战

引言 训练一个高性能AI模型需要大量的数据、计算资源和时间。一个顶级大模型的训练成本可能高达数千万美元。然而,攻击者可以通过相对低廉的成本"窃取"模型的能力——这就是模型窃取(Model Stealing)攻击。 2026年,随着模型即服务(MaaS)的普及,模型窃取已经成为AI公司面临的最严重的知识产权威胁之一。本文将系统探讨模型窃取攻击的手法和防范策略。 一、模型窃取攻击分类 1.1 按攻击目标分类 功能窃取(Functionality Stealing) 目标:构建一个功能相似的替代模型。 方法:通过大量查询API,用输入输出对训练替代模型。 影响:绕过API费用,竞争产品。 参数窃取(Parameter Stealing) 目标:直接获取模型参数。 方法:通过侧信道攻击、梯度泄露等手段。 影响:完全复制模型,最严重的攻击。 架构窃取(Architecture Stealing) 目标:推断模型架构。 方法:通过API响应时间、输出分布等推断。 影响:降低后续攻击难度。 1.2 按攻击方式分类 黑盒查询攻击 攻击者只能访问模型API,通过查询推断模型。 特点:最常用,难度中等。 侧信道攻击 利用模型推理过程中的侧信道信息(时间、功耗、内存访问模式)。 特点:需要物理访问或云环境内的共置。 供应链攻击 攻击模型训练/部署的供应链环节。 特点:影响深远但难度大。 二、功能窃取攻击详解 2.1 基础查询攻击 最简单的模型窃取:大量查询API,用结果训练替代模型。 async def basic_model_extraction(target_api, num_queries=100000): """基础模型提取攻击""" # 1. 生成查询样本 queries = generate_queries(num_queries) # 2. 查询目标模型 results = [] for query in tqdm(queries): response = await target_api.query(query) results.append((query, response)) # 3. 用查询结果训练替代模型 surrogate_model = train_surrogate_model(results) return surrogate_model 防御:查询限制、结果扰动、水印。 2.2 主动学习增强攻击 不是随机查询,而是智能选择最有价值的查询: async def active_model_extraction(target_api, budget=10000): """主动学习增强的模型提取""" # 初始查询(小样本) initial_queries = generate_initial_queries(1000) results = await query_api(target_api, initial_queries) # 训练初始替代模型 surrogate = train_surrogate_model(results) # 主动选择查询 for i in range(budget // 100): # 选择替代模型最不确定的样本 candidates = generate_candidate_queries(10000) uncertainties = surrogate.predict_uncertainty(candidates) top_uncertain = select_top_k(uncertainties, k=100) # 查询目标模型 new_results = await query_api(target_api, top_uncertain) results.extend(new_results) # 重新训练 surrogate = train_surrogate_model(results) return surrogate 防御:检测异常查询模式(不确定性采样模式)。 ...

2026-07-02 · 3 min · 590 words · 硅基 AGI 探索者
model privacy attacks

模型隐私攻击与防护:你的模型在泄露什么?

模型即数据库:你的模型在泄露训练数据 LLM 训练数据包含大量敏感信息:个人身份信息、商业机密、医疗记录、法律文件。模型"记住"这些数据的程度远超预期——研究表明,GPT-2 (1.5B) 可以被引导逐字输出训练数据中的个人电话号码和邮箱地址。 模型隐私攻击的核心理念:模型不是黑盒,它是一个可以被查询的数据库。 四大攻击类型 攻击全景 攻击类型 目标 前提条件 危害等级 成员推断 (MIA) 判断样本是否在训练集中 黑盒查询 高 模型提取 复制模型功能 大量查询 高 训练数据提取 恢复训练数据原文 模型访问 严重 属性推断 推断训练集统计属性 黑盒查询 中 1. 成员推断攻击(Membership Inference Attack) 核心问题:“这条数据是否被用于训练你的模型?” 攻击原理:模型对训练数据和非训练数据的置信度不同——训练数据通常置信度更高(过拟合)。 import numpy as np from sklearn.metrics import roc_auc_score class MembershipInferenceAttack: def __init__(self, target_model, shadow_model=None): self.target = target_model self.shadow = shadow_model # 攻击者训练的影子模型 def compute_loss(self, model, inputs, labels): """计算模型在输入上的损失""" outputs = model(inputs) loss = cross_entropy(outputs, labels) return loss.detach().cpu().numpy() def attack_via_loss_threshold(self, member_data, non_member_data): """基于损失阈值的简单 MIA""" member_losses = [self.compute_loss(self.target, x, y) for x, y in member_data] non_member_losses = [self.compute_loss(self.target, x, y) for x, y in non_member_data] # 寻找最佳阈值 all_losses = member_losses + non_member_losses all_labels = [1]*len(member_losses) + [0]*len(non_member_losses) best_threshold = 0 best_auc = 0 for t in np.linspace(min(all_losses), max(all_losses), 100): preds = [1 if l < t else 0 for l in all_losses] auc = roc_auc_score(all_labels, preds) if auc > best_auc: best_auc = auc best_threshold = t return {"threshold": best_threshold, "auc": best_auc} def attack_via_reference_model(self, target_inputs, shadow_inputs): """基于参考模型的 MIA(更高级)""" # 训练一个攻击分类器,输入 = (目标模型loss, 影子模型loss) attack_features = [] attack_labels = [] for x, y in target_inputs: # 训练集 target_loss = self.compute_loss(self.target, x, y) shadow_loss = self.compute_loss(self.shadow, x, y) if self.shadow else 0 attack_features.append([target_loss, shadow_loss, target_loss - shadow_loss]) attack_labels.append(1) for x, y in shadow_inputs: # 非训练集 target_loss = self.compute_loss(self.target, x, y) shadow_loss = self.compute_loss(self.shadow, x, y) if self.shadow else 0 attack_features.append([target_loss, shadow_loss, target_loss - shadow_loss]) attack_labels.append(0) # 训练攻击分类器 from sklearn.ensemble import RandomForestClassifier attack_clf = RandomForestClassifier() attack_clf.fit(attack_features, attack_labels) return attack_clf LLM 场景的 MIA: ...

2026-06-24 · 6 min · 1130 words · 硅基 AGI 探索者
鲁ICP备2026018361号