技术深度解析
Fawkes 是一种专为数据投毒场景设计的定向对抗攻击的实用实现。其核心算法,详见 SAND Lab 的论文《Fawkes: Protecting Personal Privacy against Unauthorized Deep Learning Models》,基于一个称为特征空间对抗性遮蔽的原理。
隐身衣的工作原理
1. 目标选择: 用户选择一组图像(通常是自己的面部)。算法需要一个参考点——一个与用户真实身份不同的“目标”身份。这个目标可以是名人、数据集中随机的人脸,甚至是由 GAN 生成的合成人脸。目标的选择会显著影响隐身衣的鲁棒性。
2. 扰动生成: Fawkes 使用一个预训练的特征提取器(通常是 ResNet-50 或类似的 CNN,在 MS-Celeb-1M 或 VGGFace2 等大型人脸数据集上训练)来计算用户原始图像的特征向量。然后计算目标图像的特征向量。目标是找到一个微小的扰动 `δ`,当将其添加到用户图像 `x` 上时,生成新图像 `x' = x + δ`,使得 `x'` 的特征向量尽可能接近目标图像的特征向量,同时扰动 `δ` 保持在用户定义的感知阈值以下(例如,L-infinity 范数 ≤ 16/255)。
3. 优化: 这被形式化为一个优化问题,通常使用投影梯度下降(PGD) 求解。算法迭代调整 `x'` 的像素值,以最小化 `x'` 与目标特征向量之间的距离(例如余弦相似度或 L2 距离),同时将扰动投影回允许的 L-infinity 球内,以保持其不可察觉。
架构与工程细节
GitHub 仓库(`shawn-shan/fawkes`)是一个基于 Python 的命令行工具和库。关键的架构选择:
- 客户端处理: 所有计算都在本地进行。用户在自己的机器上运行脚本。没有图像发送到服务器。这是一个刻意的隐私设计决策,但这意味着用户需要一块相当现代的 GPU(或者在 CPU 上有足够的耐心)来处理一批照片。在消费级 GPU 上处理一张高分辨率图像可能需要 10-30 秒。
- 模型无关性: 该工具附带多个预训练的特征提取器。用户可以选择不同的底层模型(例如 `high_extract`、`mid_extract`)。基于更深层网络的 `high_extract` 模型倾向于产生更鲁棒的隐身衣,但需要更多计算。
- 批量处理: 该工具支持目录的批量处理,使得希望在上传前遮蔽整个照片库的用户能够实用。
性能与基准测试
SAND Lab 的原始论文报告了令人印象深刻的结果。下表总结了他们针对商业级面部识别系统(类似于 DeepFace)进行评估的关键性能指标。
| 攻击场景 | 遮蔽成功率(保护率) | 平均图像质量(SSIM) | 扰动预算(L-inf) |
|---|---|---|---|
| 定向遮蔽(高提取) | 95%+ | 0.98 | 16/255 |
| 定向遮蔽(中提取) | 88% | 0.99 | 8/255 |
| 非定向遮蔽(基线) | 75% | 0.99 | 8/255 |
| 无遮蔽(对照组) | 0% | 1.0 | 0 |
数据要点: 具有更高扰动预算(仍不可察觉)的定向遮蔽在阻止模型正确识别用户方面达到了 95% 以上的成功率。代价是图像质量略有下降,但在视觉上可以忽略不计(SSIM 为 0.98 vs 1.0)。
猫鼠游戏问题
根本限制在于 Fawkes 是一种针对动态对手的静态防御。隐身衣是使用特定的特征提取器(“代理模型”)生成的。如果攻击者使用不同的架构(例如 Vision Transformer 而非 ResNet),或者他们的模型在包含同一人遮蔽和未遮蔽版本的数据集上训练,那么这种防御就可能被规避。论文表明,如果攻击者在未遮蔽图像上训练模型,然后在遮蔽图像上进行微调,保护率会下降到 40-50% 左右。这是核心的军备竞赛:每一种新的防御都可能被更复杂的攻击所破解。
关键参与者与案例研究
Fawkes 的开发是对主要面部识别参与者构建的生态系统的直接回应。
防御者:SAND Lab(芝加哥大学)
由 Ben Zhao 教授领导,包括 Shawn Shan 等研究人员,SAND Lab 在构建实用隐私工具方面有着良好的记录。他们之前的工作包括 Fawkes 和 LowKey,后者是一个用于检测照片是否已被用于模型训练集的工具。他们的方法是将学术严谨性与现实世界的可部署性相结合。他们没有将该工具商业化,而是以开源形式发布,这建立了信任。