type
status
date
slug
summary
tags
category
icon
password
Background
blind backdoor attack
文章提出了一种新的 backdoor attack 的方式。文中称为 blind backdoor attack
文中关于 blind backdoor attack 的解释如下:
Our attack is blind: the attacker cannot modify the training data, nor observe the execution of his code, nor access the resulting model
具体来说:攻击者知道主要任务,可能的模型架构和常用的数据。但是不知道具体的训练数据,参数和结果模型。由于上述限制,blind attack 比其他 backdoor attack 更加难做到。
其中 blind backdoor attack 的方法属于 backdoor attack 中的 Code poisoning 的方法。即对开源代码库进行攻击。
上图总结了 5 中常见的代码攻击类型:
Poisoning:对训练数据进行投毒
Trojaning:对模型进行修改,注入后门
model replacement:替换模型。联邦学习中的一种攻击方式
Adversarial Example:对抗样本
Code poisoning:对代码进行投毒
Code poisoning
为什么可以进行代码攻击?
因为机器学习很多代码和开源框架都托管在Github等代码平台,这就导致了攻击者可以向开源代码中注入恶意代码,而且这些恶意代码比较难被审核者发现。文中的方法就是在代码中加入了一个后门学习的任务,导致使用者使用该代码训练模型会留下后门。
Code poisoning 和 data Poisoning 有什么区别?
Code poisoning 可以不用知道训练数据是什么。在 Data Poisoning 中,为了实现更好的效果往往需要根据数据的分布学习出一个带有目标类信息的 trigger 。所以 Data Poisoning 要预先得到训练数据,并在训练数据上构建模型,生成用于攻击的 poison data 。而 Code poisoning 不用考虑训练集的分布,只需要在 batch 中对数据集进行修改,即不管是什么样的训练集都可以用同一种方式攻击。
Data Poisoning 也有一定的局限性,在文章中提出,有一些数据是难以更改的(例如使用安全相机产生的数据)
Attack
攻击使用的方法为多任务学习。多任务学习同时优化多个目标函数loss,学习出来的模型可以适应与不同任务。文章中将原本的分类任务视为主任务,将 backdoor attack 视为另一个任务。加入代码,让模型在学习主任务的同时,学习到次要任务。
同时,考虑到不同任务的loss不同,使用 MGDA 算法,动态调整损失函数的权重
(这个大概不是我要做的东西)
- Author:faii
- URL:https://www.faii.top/article/af4d9211-ea79-4c97-9ea2-462ec58abd06
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts