图像缩放攻击

阅读量    504821 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

 

背景

在安全领域,对机器学习的模型、算法等已经有大量的研究工作,比如对抗攻击、后门攻击、成员推理攻击等,但机器学习系统并不仅仅只有这些弱点,在机器学习预处理环节也存在漏洞,不过很少受到关注,本文介绍预处理环节中存在的一种危害范围较广的漏洞类型—图像缩放攻击。

在预处理环节,图像缩放是一个必要的步骤,如果能够在图像缩放步骤进行攻击,由于该步骤与计算机视觉(Computer Vision,下文简称CV)中大多数学习算法并没有强烈的关联,所以图像缩放攻击可以影响大多数CV算法。而且不论是在训练阶段将缩放攻击得到的图像当做训练数据进行数据投毒,还是在训练阶段将缩放攻击得到的图像作为对抗攻击所用的测试样本都能实现完全的隐蔽性。

本文综合三篇顶会(USENIX Security 19[1],USENIX Security 20[2],TDSC[3])以及相关参考资料总结而成,首先介绍图像缩放及图像缩放攻击的基本概念,然后介绍其为什么可行,最后给出具体实验证明。

 

图像缩放

图像缩放是CV中的标准步骤。缩放算法,以源图像S为输入,缩放后输出所处后的版本D。在大多数宣发中,都输入的大小都是固定的,比下表所示,只有将图像缩放到要求的固定维度,才能使用。

图片.png

图像缩放一般可以分为“缩”和“放”,即缩小图像和放大图像,缩小通过插值实现,放大通过外推实现。不过在实际中,图像基本都比模型要求的输入维度大,所以图像缩放攻击考虑的是“缩”这一部分。
在常用的深度学习框架中,典型的缩放算法总结如下

图片.png

这些算法的任务都是一样的,只是在缩放过程中采用的算法不同而已。
例如Nearest缩放是简单地将像素从原网络复制到目标,而Bicubic缩放使用三次函数插值像素。

 

图像缩放攻击

对S进行轻微扰动得到A,A缩放后的版本D与目标图像T匹配。示意图如下

图片.png

图像缩放攻击需要满足两个目标
1.A缩放后得到的图像与T匹配,这是为了实现攻击的目的
2.A与S匹配,这是为了规避人眼的检测,实现攻击的隐蔽
为此我们从S生成A的过程中,我们需要找到最小的扰动,以实现上面说的目标,该过程可以归纳为下面的优化问题

图片.png

此外,A的每个像素值需要保持在固定范围内,对于8-bit图像而言,固定范围为[0,255]
该问题可以用二次规划来解决。
常见的图像库,比如OpenCV,Pillow,缩放的流程是这样的:
先水平调整图像大小,然后垂直调整图像大小实现缩放。
我们可以用基于矩阵乘法的解析解表达式来实现该操作以逼近公式(1)中的缩放操作

图片.png

上式中,矩阵L和矩阵R依赖于所选缩放算法的固定稀疏,这两个矩阵都可以预先计算,并可以重用。在矩阵乘法的基础上,攻击也可以分解为水平和垂直操作,其顺序与缩放的顺序相反,如下图所示。

图片.png

攻击首先计算S被resize后的版本S’,然后以S’为源图像,T为目标图像,求解公式(1)
我们只需要系数矩阵L,从而得到以下优化问题

图片.png

然后考虑水平方向,此时以S为源图像,A为目标图像,带入公式(3)计算得到最终的攻击图像A
为了进一步减少计算了,该优化过程可以进一步分解为单独维度。我们从垂直的缩放方向开始,将S’缩放到D的维度,在求解(3)式的时候不考虑整个矩阵,而是单独考虑S’的每一列,即:

图片.png

上式中的j指的是矩阵的第j列。对水平方向重复该优化过程,并最终对所有的color channel进行计算即可。

 

攻击分析

我们可以把图像也当成是一种信号,就像音频一样,音频是由一维时间序列描述而,而图像则是离散的二维信号,通常图像是在像素的空域进行编码。
我们知道,任何信号都可以用不同频率的正弦信号和来描述,所以图像也可以在频率中表现出来。
图像缩放会降低图像的维数,这个过程和信号处理中的下采样密切相关,下采样是将高频信号转换为低频信号。下采样的一个问题是,降低的分辨率可能无法描述图像中所有相关的频率。
根据奈奎斯特-香农定理,我们知道,只有当采样率大于等于信号中最高频率的两倍时,才能从离散的采样点中重构信号,如果采样率低于该阈值,则信号不能被明确重建,也就说此时采样点不能提供足够的信息来区分原始信号和其他信号。

图片.png

如上图所示,对于红色的采样点,其重构出的信号s和s hat都是符合要求的,虽然它们存在明显的不同,这就是所谓的混叠效应。
而图像缩放攻击就利用了这种效应,攻击者通过一定技术操纵信号,使其下采样版本称为一个新的信号。
不过缩放算法并不仅仅是降低图像的频率,这些算法会对源图像的像素进行插值,然后再缩小源图像以减轻混叠效应,该过程可以表述为源信号和核函数之间的卷积。缩放后的图像中的每个位置,都是核对来自源图像的一组像素赋予特定的加权和得到的。
举例而言,我们来看看单独一行的水平缩放,即将源图像中的一行s缩放为d
该过程可以用核函数w描述,如下所示

图片.png

直观上来看,w是一个权重函数,作为一个滑动窗口移动到s上。我们用核宽度a来表示窗口的大小,这个窗口内的每个像素乘以这个位置上相应的权重。下图是当a=2时,即窗口大小为2时的双线性核的过程

图片.png

图中,d中的第一个像素是s中第3和第4个像素的聚合结果,而d的第二个像素是s中第7个像素的估计结果。
当图像的缩放产生更少的像素时,核函数的窗口需要在s上移动一个特定的步长,这类似于信号处理中的采样过程。采样比例定义了这个步长,所以每个采样点由下式给出

图片.png

其中,p是d中的目标像素,g(p)是我们放置核窗口的位置。
所以缩放后得到的图像为:

图片.png

不同的缩放算法有不同的核函数,比如最近邻缩放的核函数为:

图片.png

该算法只使用最接近g(p)的值,换句话说,最近邻缩放只是简单的将像素从离散网格上的s复制到d。
不同核函数使用的像素数量以及为像素限定的权重都是不同的。
下图展示了通用缩放算法中的标准核函数的可视化

图片.png

上面已经介绍了信号处理的基本知识。现在我们可以研究图像缩放攻击可以存在的根本原因了。
我们从之前的分析已经知道,源图像中的所有像素对缩放后的图像的贡献是不同的,在缩放过程中,靠近核中心的像素获得较高的权重,而所有剩余的像素只有有限的作用,如果步长超过核宽,一些像素会被忽略,直接和缩放过程无关了。我们在上上副图也可以看到,在缩放时,我们只考虑了9个点中的3个。
源图像中的像素对缩放后图像的不平等的贡献,为图像缩放攻击提供了基础。攻击者只需要修改具有高权重的像素来控制缩放,同时可以保持图像的其余部分不变。
从信号处理的角度来看,图像缩放攻击可以被解释为有针对性的混叠,其中攻击者刻意选择下采样期间被会被采用的信号区域,而这些区域在源图像中产生一个高频信号,在空域不可见。
图像缩放攻击还依赖于高权重的像素的稀疏性,如果这些像素密集,则攻击者扰动后的图像就与源图像存在较大差异,不满足图像缩放攻击的隐蔽性。
事实上,两个因素决定了这些像素的稀疏性:缩放比率和核宽度
缩放比率越大,则缩放时考虑的像素越少,在下图可以看到,β= 4时,攻击图像看起来像源图像,而猫是不可见的。β= 1.3时,攻击图像是源图像和目标图像的混合。β = 1,攻击显然失败。
核宽度越小,那么每次卷积时考虑的像素就越少,在下图可以看到,a取下图的三个值,攻击图像都可以在缩放后得到猫,但是只有a=1时,攻击图像是咖啡杯,a=2时,虽然总体是咖啡杯,但是能看见猫的样子,a=4时则只有猫了,不满足前面提到的攻击目标2.
调整缩放比率和核宽度,从下图的结果可知,缩放比率高,核宽度小,则攻击更容易成功。

图片.png

 

实战:

我们首先需要一个源图像和目标图像。分别使用猫和咖啡杯

图片.png

接下来需要选择缩放算法和对应的图像处理库,这里缩放算法我们选择最近邻插值算法,这是最简单的图像缩放算法,也是默认的算法,图像处理库选择opencv

然后生成一个缩放对象来保存缩放矩阵

其中的create_scaling_approach定义如下

接下来可以开始攻击了,这里我们将eps设置为1,即确保缩放后的攻击图像与目标图像之间最大差值为1

图片.png

其中QuadraticScaleAttack类定义如下

关键函数有两个,分别是attack_in_one_direction以及solve_problem

我们前面已经说过,成功的缩放攻击需要满足两个目标
1.攻击图像和源图像尽可能相似
2.缩放后的攻击图像与目标图像尽可能相似
先来看看目标1是否满足

可以看到,源图像与目标图像差异不大,它们都是咖啡杯的样子而不是猫,满足目标1
再来看看目标2
需要将攻击图像进行缩放处理(这一步就是在正常的机器学习流程中的预处理步骤),然后同时打印出目标图像与缩放后的图像

可以看到缩放后的图像不是size更小的咖啡杯而是猫,且它和目标图像一模一样,说明也满足目标2,证明缩放攻击成功了。这个output图像是模型在训练时实际使用的图像,攻击者可以使用这项技术来进一步攻击模型:由于在人眼看起来图像是attack那张图像,即咖啡杯,但是在经过预处理后图像是output那种,即猫,所以可以用于发动规避攻击,或者数据投毒攻击,且能够轻易规避人眼的检测。

 

参考

1.Xiao Q, Chen Y, Shen C, et al. Seeing is not believing: Camouflage attacks on image scaling algorithms[C]//28th {USENIX} Security Symposium ({USENIX} Security 19). 2019: 443-460.
2.Quiring E, Klein D, Arp D, et al. Adversarial preprocessing: Understanding and preventing image-scaling attacks in machine learning[C]//29th {USENIX} Security Symposium ({USENIX} Security 20). 2020: 1363-1380.
3.Chen Y , Shen C , Wang C , et al. Scaling Camouflage: Content Disguising Attack Against Computer Vision Applications[J]. IEEE Transactions on Dependable and Secure Computing, PP(99):1-1.
4.https://towardsdatascience.com/image-processing-image-scaling-algorithms-ae29aaa6b36c
5.https://zh.wikipedia.org/zh-hans/%E6%B7%B7%E7%96%8A

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多