GenAI 安全攻防实战课程
模块五 数据投毒实验

实验 5.2:后门攻击

实现 BadNets 后门攻击,理解触发器植入过程和攻击效果

实验目标

本实验将帮助你理解后门攻击的原理,通过实现经典的 BadNets 攻击来体验如何在模型中植入后门。

学习目标

完成本实验后,你将能够:

  • 理解 BadNets 后门攻击的完整流程
  • 设计和实现简单的触发器(像素块触发器)
  • 构造包含触发器的投毒数据集
  • 训练包含后门的模型
  • 验证后门攻击的效果:干净准确率 vs 攻击成功率
  • 观察不同投毒比例对攻击效果的影响

实验前提

环境要求

  • Python 3.8+
  • PyTorch 1.10+
  • torchvision
  • matplotlib
  • numpy

确保已安装所需依赖后再开始实验。

实验内容

实验总结

完成检查

完成本实验后,你应该已经:

  • 成功实现了 BadNets 后门攻击
  • 在 MNIST 数据集上训练了包含后门的模型
  • 观察到模型在干净数据上保持高准确率
  • 观察到模型在带触发器数据上的高攻击成功率
  • 理解了后门攻击的隐蔽性特征
  • 可视化了触发器和后门样本

延伸思考

  1. 为什么后门模型在干净数据上的准确率几乎不受影响?这与模型的学习机制有什么关系?

  2. 如果触发器设计得更加隐蔽(例如使用混合触发器而非明显的像素块),攻击的效果和检测难度会有什么变化?

  3. 假设你拿到一个来源不明的预训练模型,在不知道触发器形态的情况下,你如何判断它是否可能包含后门?

相关资源

🛡️ AI 安全助教

随时为你解答 AI 安全相关问题