隐私攻击与防御
隐私攻击(Privacy Attack) 是AI安全领域中一类重要的威胁,与对抗攻击和后门攻击不同,隐私攻击的目标不是让模型产生错误输出,而是从模型中窃取敏感信息——包括训练数据、模型参数、甚至个人隐私信息。
随着 Machine Learning as a Service(MLaaS) 的普及,越来越多的模型以黑盒API的形式部署在云端。用户只能通过输入获取输出,无法直接访问模型内部。然而,研究表明,即便是黑盒访问也足以发起多种隐私攻击。其根本原因在于:机器学习模型会记忆(memorize)训练数据,而这种记忆可以通过精心设计的查询被提取出来。
隐私攻击的三大威胁面(Threat Surface):
- 训练数据(Training Data):攻击者试图推断或重建训练集中的数据点
- 模型参数(Model Parameters):攻击者试图窃取模型的架构和权重
- 模型预测(Model Predictions):攻击者通过分析输出的置信度分布来推断隐私信息
成员推理攻击(Membership Inference Attack, MIA)
定义与动机
成员推理攻击的目标是:给定一个数据点 \(x\) 和一个已训练模型 \(f_\theta\),判断 \(x\) 是否属于模型的训练集 \(D_{train}\)。
这看起来似乎微不足道,但在医疗、金融等敏感领域,仅仅知道某人的数据"被用于训练某个疾病预测模型",就足以泄露其健康状况等隐私信息。
为什么成员推理攻击可行?
核心原因是过拟合(Overfitting)。模型在训练数据上的表现往往优于未见过的数据,具体表现为:
- 对训练样本的预测置信度更高
- 对训练样本的预测损失更低
- 对训练样本的输出熵更低(即更"确定")
这种训练集和测试集之间的行为差异,正是成员推理攻击的突破口。
Shokri et al. (2017) — 影子模型训练方法
Shokri等人在2017年提出了经典的影子训练(Shadow Training)方法,这是成员推理攻击的奠基性工作。其核心思想是:攻击者无法直接访问目标模型的训练集,但可以训练多个"影子模型"来模拟目标模型的行为,从而学习区分"成员"和"非成员"的模式。
完整攻击流程:
- 构建影子数据集:攻击者收集或生成与目标模型训练数据分布相似的数据集
- 训练影子模型:在影子数据集上训练多个结构相似的模型,使其行为尽量接近目标模型
- 收集标注数据:对每个影子模型,将其训练集中的样本标记为"member",测试集中的样本标记为"non-member",记录模型对这些样本的预测向量(prediction vector)
- 训练攻击分类器:用 \(\{(\text{prediction vector}, \text{membership label})\}\) 对训练一个二分类器(attack model)
- 执行攻击:将目标模型对待测样本的预测向量输入攻击分类器,判断其成员身份
基于置信度的MIA(Confidence-based MIA)
一种更简单直接的方法:直接对模型输出的最大置信度进行阈值判断。如果模型对某个样本的最大预测概率超过阈值 \(\tau\),则判定该样本为训练集成员:
这种方法虽然简单,但在过拟合严重的模型上效果出奇地好。
基于熵的MIA(Entropy-based MIA)
训练样本倾向于产生低熵(更确定)的预测分布。攻击者计算预测分布的熵:
如果 \(H(f_\theta(x))\) 低于阈值,则判定为成员。
基于度量的方法(Metric-based Approaches)
除了置信度和熵,还有多种度量可用于成员推理:
- 预测损失(Prediction Loss):训练样本的交叉熵损失通常更低
- 校准置信度(Calibrated Confidence):经过温度缩放等校准后的置信度得分
- 对抗扰动距离:训练样本到决策边界的距离往往更远
特征推理攻击(Feature/Attribute Inference Attack)
特征推理攻击针对的场景是:攻击者已知某个数据点的部分特征,试图利用模型推断其缺失的敏感属性。
这类攻击利用了模型在训练过程中学到的特征间相关性。例如,一个在人口统计数据上训练的模型可能学到了收入与职业、教育水平之间的关联。攻击者可以利用这些关联,从已知的非敏感特征(如邮编、职业)推断出敏感属性(如种族、收入水平)。
与成员推理不同,特征推理攻击不是判断"是否在训练集中",而是利用模型的泛化能力来补全信息,这使得它即便在没有过拟合的模型上也可能奏效。
模型逆向攻击(Model Inversion Attack)
定义与目标
模型逆向攻击的目标是:从模型的访问权限中重建具有代表性的训练数据。与成员推理(仅判断是/否)不同,模型逆向试图直接"看到"训练数据长什么样。
MI-FACE(Fredrickson et al., 2015)
Fredrickson等人在2015年提出了经典的MI-FACE攻击,针对人脸识别模型。其核心思想是:通过梯度下降在输入空间中迭代优化,找到一个输入图像,使得模型对目标类别的置信度最大化。
优化目标:
其中: * \(f_c(x)\) 是模型对目标类别 \(c\) 的输出置信度 * \(R(x)\) 是正则化项(如Total Variation正则化),用于保证重建图像的视觉合理性 * \(\lambda\) 控制正则化强度
攻击过程:
- 从随机噪声或均值图像初始化 \(x_0\)
- 计算目标函数关于输入的梯度 \(\nabla_x [f_c(x) - \lambda R(x)]\)
- 沿梯度方向更新输入(梯度上升/下降)
- 重复直到收敛,得到重建图像 \(x^*\)
通过这种方法,攻击者可以从人脸识别模型中重建出目标个体的"平均人脸"——虽然不是精确的训练样本,但足以辨识身份。
局限性与改进
MI-FACE的局限性: * 重建的图像往往是模糊的平均,而非精确的训练样本 * 当类内方差较大时,重建效果较差 * 依赖于模型输出的梯度信息(需要白盒或近白盒访问)
高级方法: 后续研究引入了GAN先验来提升重建质量。将优化过程限制在GAN的隐空间中进行,而非直接在像素空间中搜索,可以生成更真实、更清晰的重建图像。
模型窃取攻击(Model Extraction / Model Stealing)
目标与动机
模型窃取攻击的目标是:创建一个与目标模型功能等价的副本。这在商业上构成了对知识产权的严重威胁,同时窃取的模型还可以被用于进一步发起白盒攻击。
替代模型训练(Substitute Model Training)
最经典的模型窃取方法遵循以下流程:
- 查询目标模型:攻击者用合成数据或真实数据查询目标模型的API,获取 \(\{(x_i, f_{target}(x_i))\}\) 对
- 训练替代模型:用收集到的(输入,预测)对作为训练数据,训练一个本地模型 \(f_{sub}\) 来模仿目标模型的行为
- 迭代优化:可以使用主动学习策略,选择信息量最大的查询点来提高效率
训练得到的替代模型可以被用于: * 发起白盒对抗攻击(因为攻击者完全掌握替代模型的参数) * 规避API调用费用(不再需要付费查询目标模型) * 知识产权窃取(直接复制竞争对手的模型能力)
方程求解攻击(Equation-solving Attacks)
对于结构简单的模型(如线性回归、逻辑回归),攻击者可以通过少量查询直接求解模型参数。例如,对于 \(d\) 维线性模型 \(f(x) = w^T x + b\),只需 \(d+1\) 个精心选择的查询即可唯一确定所有参数。
准确率 vs 保真度
评估模型窃取攻击时,需要区分两个指标:
- 准确率(Accuracy):替代模型在原始任务上的性能(与真实标签比较)
- 保真度(Fidelity):替代模型与目标模型的预测一致性(与目标模型的输出比较)
高保真度意味着替代模型不仅学会了任务,还完整复制了目标模型的行为模式(包括其错误和偏差),这对于后续的白盒攻击至关重要。
联邦学习中的隐私攻击(Privacy in Federated Learning)
背景
联邦学习(Federated Learning) 的设计初衷是保护隐私——各参与方(client)将数据保留在本地,只向中央服务器上传模型更新(梯度或参数差),从而避免直接共享原始数据。然而,研究表明即便是共享的梯度信息也会泄露大量隐私。
来源推理攻击(Source Inference Attack)
攻击者(通常是中央服务器或恶意参与方)试图判断某个特定数据点来自哪个客户端。这利用了不同客户端的数据分布差异在模型更新中留下的"指纹"。
梯度泄露攻击(Gradient Leakage)
Deep Leakage from Gradients (DLG) 是Zhu等人在2019年提出的里程碑式工作。该方法证明了:仅从共享的梯度中,就可以精确重建原始训练数据。
核心思想: 优化一组虚拟输入 \((x^*, y^*)\),使其产生的梯度与观察到的共享梯度尽可能接近:
通过迭代优化,虚拟输入会逐渐逼近真实的训练数据,最终实现像素级的重建。
重要启示: 即使对梯度进行聚合(如FedAvg中的多客户端平均),仍然可能泄露信息。这对联邦学习"保护隐私"的核心假设构成了根本性挑战。
LLM训练数据提取(Training Data Extraction from LLMs)
大型语言模型因其海量参数和强大的记忆能力,成为训练数据提取攻击的重灾区。
GPT-2 数据提取(Carlini et al., 2020)
Carlini等人在2020年发表了开创性工作,首次系统性地证明了大型语言模型会记忆并能逐字吐出训练数据。
攻击方法: 1. 文本生成:使用模型生成大量文本样本(采用不同的采样策略如top-k、temperature等) 2. 筛选排序:使用多种度量指标对生成的文本进行排序,识别最可能是"记忆内容"的输出
6种排序/筛选度量指标:
- 困惑度(Perplexity):低困惑度的输出更可能是被记忆的内容,因为模型对记忆内容的"确定性"更高
- 小模型 vs 大模型困惑度比值:如果大模型的困惑度远低于小模型,说明该内容可能是大模型特有记忆
- Zlib压缩熵对比:将文本的zlib压缩比与模型困惑度对比,排除本身就具有低熵(高度规律性)的文本
- 小写化困惑度对比:比较原始文本与全部小写化后的困惑度差异
- 基于窗口的困惑度分析:检测文本中是否存在困惑度突然下降的"窗口",标志着从生成内容切换到记忆内容
- 成员推理分数:使用MIA技术辅助判断
提取到的内容包括: 个人身份信息(PII,如姓名、电话号码、邮箱地址)、URL、代码片段、以及大段逐字复制的文本段落。
关键发现:模型越大,记忆越多。 这意味着随着模型规模的不断扩大,隐私泄露的风险也在同步增长。
GPT-Neo 数据提取(Yu et al., 2023)
Yu等人在2023年提出了改进的提取技术,提高了攻击效率:
- 后缀生成(Suffix Generation):向模型提供一个前缀(prefix),让模型自动补全(complete),然后检查补全内容是否与已知训练数据匹配。这比盲目生成更加高效
- 多度量排序(Multi-metric Ranking):综合使用多种度量指标对生成输出进行排序,筛选出最可能是记忆内容的结果
- 相比暴力生成,这种定向提取方法的效率显著提升
ChatGPT 数据提取
针对ChatGPT等经过RLHF对齐的模型,研究者发现了更具创意的攻击方式:
- 多步越狱提示(Multi-step Jailbreaking):通过精心设计的多轮对话,逐步绕过模型的安全过滤器,诱导模型输出训练数据
- 发散攻击(Divergence Attack):使模型"偏离"其正常行为模式,从而开始输出记忆的训练数据。一个典型案例是让模型无限重复某个词(如"poem poem poem..."),当模型的生成过程因重复而"崩溃"时,会转而输出记忆中的训练数据片段
这些发现表明,即使经过安全对齐,LLM的记忆问题仍然无法彻底消除。
扩散模型的记忆问题(Diffusion Model Memorization)
扩散模型(Diffusion Models)同样存在训练数据记忆问题。研究发现,扩散模型可以几乎像素级地复现训练图像,而非生成真正的"新"图像。
这种记忆现象在以下情况中尤为严重:
- 训练集中的重复图像:出现多次的图像更容易被记忆
- 独特/罕见的图像:与训练集中其他样本差异很大的图像更容易被完整记忆
- 训练数据包含个人照片时:构成严重的肖像权和隐私侵犯风险
嵌入模型攻击(Embedding Model Attacks)
从嵌入推断属性(Attribute Inference from Embeddings)
嵌入向量(Embeddings)虽然是高维的抽象表示,但其中编码了大量可被提取的敏感属性信息。攻击者可以训练一个探测分类器(probe classifier),从嵌入向量中推断出原始输入的敏感属性(如性别、年龄、种族等)。
生成式嵌入逆向(Generative Embedding Inversion)
更进一步,攻击者可以从嵌入向量重建原始输入。方法是训练一个以嵌入为条件的解码器/生成器:
- 文本嵌入逆向:从文本嵌入向量恢复原始文本内容
- 人脸嵌入逆向:从人脸嵌入向量重建人脸图像
这说明嵌入向量并非"安全的"数据表示形式,共享嵌入同样会泄露隐私。
隐私保护方法(Privacy Mitigation Strategies)
数据层面
- 数据去重与筛选(Data Selection/Deduplication):在训练前去除重复数据和敏感数据。重复数据是记忆问题的主要诱因之一,去重可以显著降低记忆风险
- 数据脱敏(Data Sanitization):从训练数据中清洗PII(个人身份信息)和其他敏感信息,如使用NER模型自动识别并替换姓名、电话、地址等
训练层面
- 差分隐私(Differential Privacy, DP):这是目前最具理论保障的隐私保护方法。其核心思想是在训练过程中向梯度添加经过校准的噪声(即DP-SGD),使得模型的输出对单个训练样本的存在与否不敏感。
形式化定义: 一个随机机制 \(\mathcal{M}\) 满足 \((\epsilon, \delta)\)-差分隐私,当且仅当对于任意仅相差一条记录的数据集 \(D, D'\),以及任意输出集合 \(S\):
其中 \(\epsilon\) 是隐私预算(越小隐私保护越强),\(\delta\) 是失败概率(允许的微小例外概率)。
核心权衡: 更强的隐私保护(更小的 \(\epsilon\))意味着更大的噪声,从而导致模型效用(utility)的下降。这是隐私保护领域的根本性trade-off。
- 联邦学习(Federated Learning):将数据保留在本地,仅共享模型更新。但如前所述,联邦学习本身并不能完全防止隐私泄露,通常需要与差分隐私结合使用。
部署层面
- 输出扰动(Output Perturbation):向模型的预测结果中添加随机噪声,降低攻击者从输出中提取信息的能力
- 置信度遮蔽(Confidence Masking):只返回top-k个预测类别,或将置信度分数取整(如保留两位小数),避免泄露过于精确的概率分布信息
- 审计与监控(Auditing):定期使用基于金丝雀(canary) 的技术审计模型是否存在记忆问题——在训练数据中插入特定的"金丝雀"序列,然后检测模型是否能被诱导输出这些序列
重要论文时间线
| 年份 | 论文/方法 | 贡献 |
|---|---|---|
| 2015 | MI-FACE (Fredrickson et al.) | 模型逆向攻击,从人脸识别模型重建训练人脸 |
| 2017 | MIA Shadow Training (Shokri et al.) | 成员推理攻击的影子模型训练方法 |
| 2019 | Deep Leakage from Gradients (Zhu et al.) | 从共享梯度重建训练数据 |
| 2020 | GPT-2 Data Extraction (Carlini et al.) | 首次系统性提取LLM训练数据 |
| 2021 | DP-SGD improvements | 差分隐私训练的实用化改进 |
| 2023 | GPT-Neo Extraction (Yu et al.) | 改进的LLM数据提取技术 |
| 2023 | ChatGPT Divergence Attack | 通过发散攻击提取ChatGPT训练数据 |
| 2023 | PoisonGPT (Mithril Security) | 基于ROME的LLM事实篡改 |