Overview:
这篇文章首次提出了Bit-Flip Attack(BFA), 作为一种DNN权重攻击方法,来攻击神经网络,是一种untargeted-attack 方式
Summary一下流程:
1、利用本文提出的一种算法——渐进位搜索(PBS)来识别DNN权重参数中最脆弱的位(个人理解是攻击是Expensive的,所以需要针对脆弱,实现少,快的目标)
2、通过Row-Hammer attack(众所周知的行锤攻击)实现二进制位翻转
3、查看攻击结果,9300万位中的仅仅13位翻转而攻击成功率从69.8%降低到0.1%。当然,为了全方位证明攻击的非偶然,作者随机翻转100位,证明了只会降低不到1%的准确率。
Part 1 Introduction
常规扯神经网络的安全问题凑字数,最后说明部署的DNN容易受到流行的故障注入技术的影响
Part 2 Related Work
1、解释了row-hammer攻击:通过频繁的数据访问导致内存位翻转的方法,row-hammer可以有效地翻转软件堆栈中任何地址的单个位。
2、神经网络参数攻击:不同级别的硬件特洛伊木马攻击神经网络参数需要特定的触发器,也就是说要对输入的图像进行修改,添加Trigger,在许多实际应用中可能不可行。故障注入攻击(fault injection attacks)的优越性得以体现。
3、前人工作的局限性:作者说以前的攻击算法是基于全精度模型开发的,随机浮点数权重的最高有效指数位的位翻转可能导致网络完全故障,即随机翻转浮点权重的指数部分很容易压倒DNN的功能。(意思是之前他们提出的攻击全精度网络模型的方法是无效的,作者证明只需要翻转用IEEE浮点数标准表示的小数中的最重要指数位就能实现攻击,也就是说只要随机翻转网络中的指数位就可以了,而且实验表明翻转那么一位后攻击效果就显著。再加上最近的大多数深度神经网络应用都是在量化平台上进行的,权重以量化的形式进行存储,所以这种攻击方式无效,即攻击权重受限的DNN是本项工作的主要重点。)
Part 3 Approach
1、首先,要寻找权重,执行位翻转,寻找的权重要足够“脆弱”,即该权重进行翻转后,对DNN的Lost function有最大的影响(式子中L代表DNN的全连接层数目,B代表以指定格式存储的量化权重W,x和t是输入和目标输出)
2、接下来是权重的量化和编码,这部分没有详细看,在其他文章中也有相似描述,我认为大概是获得权重B的二进制表示
3、在通过梯度排序找到最“脆弱”的权重后,即可执行位翻转攻击,这里就提出了算法 BFA(Bit-Flip Attack),其核心机制类似对抗样本中的FGSM算法,就是沿着梯度上升的方向完成一锤子买卖式的攻击(One-Step)。
以式子4中的二元向量b为例子,依旧是损失函数对b求偏导,然后使用得到梯度方向,直接执行位翻转,并获得扰动位。
但这存在数据溢出的情况,因为位值被限制在0和1之间,为了防止溢出,做处理如下:()(⊕是异或运算符(相同出0),sign就是对括号内的数字取符号,如果>0则返回1,<0则返回-1,=0返回0)
比如下面的一种结果示范,直接从沿着梯度改变的角度+防溢出还是很好理解的:
接下来文章重点介绍了新创的渐进位搜索算法(PBS):
该算法主要分为层内搜索和层间搜索,首先来看层内搜索,还是同上述步骤,在当前层迭代搜索最“脆弱”的权重,执行BFA,翻转位,并且计算并且存储此时网络的Loss,接下来各位恢复到执行BFA之前(取消攻击,恢复原状,因为我们已经计算了那时的DNN Loss),就这样遍历完所有的全连接或卷积层(我们记作Ln层),这时候max(L1-loss,L2-loss,....Ln-loss),找出最大的损失是在哪层发生的,最后,我们就在这层Perform BFA。
Part 4 Experiments
包括在ImageNet、CIFAR-10数据集上的测试,和控制变量的Ablation study,以及和其他方法的对比.....................
......................................
最后附上论文链接:https://arxiv.org/abs/1903.12269
因为读的文章比较少,理解难免会趋于浅显和存在各种纰漏,只是简单记录和分享,望理解。