姓名:朱晓宇 学号:15180110011
【嵌牛导读】:逃逸攻击就是要把百分之零点零零一的误判率变成百分之百的攻击成功率。虽然深度学习系统经过训练可以对正常输入达到很低的误判率,但是当攻击者用系统化的方法能够生成误判样本的时候,攻击的效率就可以接近100%,从而实现稳定的逃逸攻击。
【嵌牛提问】:什么是逃逸攻击?逃逸攻击的攻击方式又是什么?
【嵌牛鼻子】:深度学习 逃逸攻击
1.逃逸攻击简介
逃逸是指攻击者在不改变目标机器学习系统的情况下,通过构造特定输入样本以完成欺骗目标系统的攻击。例如,攻击者可以修改一个恶意软件样本的非关键特征,使得它被一个反病毒系统判定为良性样本,从而绕过检测。攻击者为实施逃逸攻击而特意构造的样本通常被称为“对抗样本”。只要一个机器学习模型没有完美地学到判别规则,攻击者就有可能构造对抗样本用以欺骗机器学习系统。例如,研究者一直试图在计算机上模仿人类视觉功能,但由于人类视觉机理过于复杂,两个系统在判别物体时依赖的规则存在一定差异。对抗图片恰好利用这些差异使得机器学习模型得出和人类视觉截然不同的结果,如图1所示[1]。
图1: 攻击者生成对抗样本使系统与人类有不同的判断
一个著名的逃逸样本是Ian
Goodfellow[2]在2015年ICLR会议上用过的熊猫与长臂猿分类的例子。被攻击目标是一个来谷歌的深度学习研究系统。该系统利用卷积神经元网络能够精确区分熊猫与长臂猿等图片。但是攻击者可以对熊猫图片增加少量干扰,生成的图片对人来讲仍然可以清晰地判断为熊猫,但深度学习系统会误认为长臂猿。图2显示了熊猫原图以及经过扰动生成后的图片。
图2: 在图片中添加扰动导致深度学习系统的错误识别实例
下面我们从攻击者的角度介绍如何系统生成对抗样本来达到稳定的逃逸攻击。不关心技术细节的读者可忽略这些内容,直接跳到文章结尾的总结部分。
2.基于机器学习的对抗样本生成
基于机器学习的逃逸攻击可分为白盒攻击和黑盒攻击。白盒攻击需要获取机器学习模型内部的所有信息,然后直接计算得到对抗样本;黑盒攻击则只需要知道模型的输入和输出,通过观察模型输出的变化来生成对抗样本。
2.1白盒攻击
深度神经网络是数学上可微的模型,在训练过程中通常使用反向传播算法得到每层的梯度来调整网络参数。假设神经网络的输入是X,类别标签是Y,网络参数是W,输出是F(X)=W*X。训练神经网络时,对于每个确定的输入样本X,我们反复调整网络参数W使得输出值F(X)趋向于该样本的类别标签Y。白盒攻击使用同样的方法,区别只是我们固定网络参数W,反复修改输入样本X使得输出值F(X)趋向于攻击目标Y’。这意味着我们只需要修改目标函数以及约束条件,就可以使用与训练神经网络同样的方法计算得到对抗性样本[3]。
白盒攻击的约束条件是一个关键部分。从X起始求解X’使得F(X’)=Y’的过程中,我们必须保证X’的标签不是Y’。例如,对于一个手写体输入“1”,如果我们把它改成“2”使得模型判别是“2”,那就不算是攻击。在计算机视觉领域,我们不太可能使用人力判定攻击方法生成的每一个样本X’,因此引入了距离函数Δ(X, X’)。我们假设在一定的距离内,X’的 含义和标签与X是一致的。距离函数可以选择不同的Norm来表示,比如L2, L∞, 和L0。
L-BFGS是第一种攻击深度学习模型的方法,它使用L2-Norm限制X’的范围,并使用最优化方法L-BFGS计算得到X’。后来基于模型的线性假设,研究者又提出了Fast Gradient Sign Method (FGSM)[2] 和DeepFool[4]等一些新方法。如果以距离Δ(X, X’)最小为目标,目前最先进的方法是Carlini-Wagner,它分别对多种距离函数做了求解优化。
2.2 黑盒攻击
黑盒攻击只依赖于机器学习模型的输出,而不需要了解模型内部的构造和状态。遗传(进化)算法即是一个有效的黑盒攻击方法。
遗传算法是在计算机上模仿达尔文生物进化论的一种最优化求解方法。它主要分为两个过程:首先通过基因突变或杂交得到新一代的变种,然后以优胜劣汰的方式选择优势变种。这个过程可以周而复始,一代一代地演化,最终得到我们需要的样本。
把遗传算法用于黑盒逃逸攻击时,我们利用模型的输出给每一个变种打分,F(X’)越接近目标标签Y’则得分越高,把高分变种留下来继续演化,最终可以得到F(X’)=Y’。这种方法已经成功用于欺骗基于机器学习的计算机视觉模型以及恶意软件检测器。
3.基于遗传算法的对抗样本生成
3.1对GmailPDF过滤的逃逸攻击
本文作者许伟林一年前在NDSS大会上发表了名为Automatically Evading
Classifiers的论文[5]。研究工作采用遗传编程(GeneticProgramming)随机修改恶意软件的方法,成功攻击了两个号称准确率极高的恶意PDF文件分类器:PDFrate
和Hidost 。这些逃逸检测的恶意文件都是算法自动修改出来的,并不需要PDF安全专家介入。图3显示了对抗样本生成的基本流程。
图3: 利用进化算法生成恶意PDF对抗变种
同样的算法可以用来对实际应用的机器学习系统进行逃逸攻击。上面提到的工作可以对 Gmail内嵌的恶意软件分类器进行攻击, 并且只需4行代码修改已知恶意PDF样本就可以达到近50%的逃逸率,10亿Gmail用户都受到影响。
3.2 利用 Fuzzing 测试的对抗样生成
除了对模型和算法的弱点进行分析,黑盒攻击还可以借鉴模糊测试的方法来实现对抗样本的生成。下面以手写数字图像识别为例,我们的目标是产生对抗图片,使其看起来是“1”,而人工智能系统却识别为“2”。我们的主要思路是将这样一个对抗样本生成的问题,转换为一个漏洞挖掘的问题,如下图4所示。
图4:针对手写数字图像识别的对抗样本生成
我们主要是利用灰盒fuzzing测试的方法来实现,首先给定数字“1”的图片作为种子,然后通过对种子图片进行变异,如果机器学习系统将变异后的图片识别为“2”,那么我们认为这样一个图片就是对抗样本。
利用Fuzzing测试的对抗样本生成是基于AFL来实现的,主要做了以下几方面的改进:
1.是漏洞注入,我们在机器学习系统中添加一个判断,当图片被识别为2时,则人为产生一个crash;
2.是在数据变异的过程中,我们考虑文件格式的内容,优先对一些图像内容相关的数据进行变异;
3.是在AFL已有的路径导向的基础上,增加一些关键数据的导向。
下图5是我们生成的一些对抗样本的例子。
图5:针对手写数字图像的对抗样本生成结果
基于Fuzzing测试的对抗样本生成方法也可以快速的应用到其他AI应用系统中,如人脸识别系统。
图6:针对人脸识别系统的对抗样本生成
4.基于软件漏洞进行逃逸攻击
针对AI系统的对抗性攻击,就是让人工智能系统输出错误的结果。还是以手写图像识别为例,攻击者可以构造恶意的图片,使得人工智能系统在分类识别图片的过程中触发相应的安全漏洞, 改变程序正常执行的控制流或数据流,使得人工智能系统输出攻击者指定的结果。 攻击思路基本分为两种:
1.基于数据流篡改可以利用任意写内存漏洞,直接将AI系统中的一些关键数据进行修改(如标签、索引等), 使得AI系统输出错误的结果;
2. 另一种则是通过常规的控制流劫持(如堆溢出、栈溢出等漏洞)来完成对抗攻击,由于控制流劫持漏洞可以通过漏洞实现任意代码的执行,因此必然可以控制AI系统输出攻击者预期的结果。
关于软件漏洞造成的问题我们在本系列第一篇文章里已有详细介绍。这里只做了一个简单介绍,更多细节请参考ISC 2017大会人工智能与安全论坛所发布的内容。
5.小结
本文的目的是继续介绍被大众所忽视的人工智能安全问题。虽然深度学习在处理自然生成的语音图像等以达到相当高的准确率,但是对恶意构造的输入仍然有巨大的提升空间。虽然深度学习系统经过训练可以对正常输入达到很低的误判率,但是当攻击者用系统化的方法能够生成误判样本的时候,攻击的效率就可以接近100%,
从而实现稳定的逃逸攻击。
随着人工智能应用的普及,相信对逃逸攻击的研究也会越来越深入。这些研究包括对抗样本生成以及增强深度学习对抗能力,我们未来会在后续文章里对这方面的工作进行更新。
*转自FreeBuf.COM