> 有了人工智能,网络安全就能高枕无忧了吗?_赛迪网
很多人谈到人工智能(AI)时,首先想到的就是特斯拉的自动驾驶汽车或亚马逊 ECHO 等技术或产品,因为他们只把 AI 看作是一个“流行语”。但事实上,AI 的应用场景很广泛。早在 2016 年底,Gartner 就曾在报告中指出,人工智能将成为服务提供商的主要战场,“AI 会成为一种新常态”,且到 2021 年,会有 30% 的经济增长与 AI 相关。

【一、逃逸攻击】

逃逸是指攻击者在不改变目标机器学习系统的情况下,通过构造特定输入样本以完成欺骗目标系统的攻击。例如,攻击者可以修改一个恶意软件样本的非关键特征,使得它被一个反病毒系统判定为良性样本,从而绕过检测。攻击者为实施逃逸攻击而特意构造的样本通常被称为“对抗样本”。
只要一个机器学习模型没有完美地学到判别规则,攻击者就有可能构造对抗样本用以欺骗机器学习系统。例如,研究者一直试图在计算机上模仿人类视觉功能,但由于人类视觉机理过于复杂,两个系统在判别物体时依赖的规则存在一定差异。对抗图片恰好利用这些差异使得机器学习模型得出和人类视觉截然不同的结果。
一个著名的逃逸样本是Ian Goodfellow[2]在2015年ICLR会议上用过的熊猫与长臂猿分类的例子。被攻击目标是一个来谷歌的深度学习研究系统。该系统利用卷积神经元网络能够精确区分熊猫与长臂猿等图片。但是攻击者可以对熊猫图片增加少量干扰,生成的图片对人来讲仍然可以清晰地判断为熊猫,但深度学习系统会误认为长臂猿。图2显示了熊猫原图以及经过扰动生成后的图片。
下面我们从攻击者的角度介绍如何系统生成对抗样本来达到稳定的逃逸攻击。不关心技术细节的读者可忽略这些内容,直接跳到文章结尾的总结部分。

【二、基于机器学习的对抗样本生成】

深度神经网络是数学上可微的模型,在训练过程中通常使用反向传播算法得到每层的梯度来调整网络参数。假设神经网络的输入是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 。
黑盒攻击只依赖于机器学习模型的输出,而不需要了解模型内部的构造和状态。遗传(进化)算法即是一个有效的黑盒攻击方法。 遗传算法是在计算机上模仿达尔文生物进化论的一种最优化求解方法。它主要分为两个过程:首先通过基因突变或杂交得到新一代的变种,然后以优胜劣汰的方式选择优势变种。这个过程可以周而复始,一代一代地演化,最终得到我们需要的样本。
把遗传算法用于黑盒逃逸攻击时,我们利用模型的输出给每一个变种打分,F(X’)越接近目标标签Y’则得分越高,把高分变种留下来继续演化,最终可以得到F(X’)=Y’。这种方法已经成功用于欺骗基于机器学习的计算机视觉模型以及恶意软件检测器。

【三、基于遗传算法的对抗样本生成】

本文作者许伟林一年前在NDSS大会上发表了名为Automatically Evading Classifiers的论文[5]。研究工作采用遗传编程(GeneticProgramming)随机修改恶意软件的方法,成功攻击了两个号称准确率极高的恶意PDF文件分类器:PDFrate 和Hidost 。这些逃逸检测的恶意文件都是算法自动修改出来的,并不需要PDF安全专家介入。图3显示了对抗样本生成的基本流程。
同样的算法可以用来对实际应用的机器学习系统进行逃逸攻击。上面提到的工作可以对 Gmail内嵌的恶意软件分类器进行攻击, 并且只需4行代码修改已知恶意PDF样本就可以达到近50%的逃逸率,10亿Gmail用户都受到影响。

【四、基于软件漏洞进行逃逸攻击】

针对AI系统的对 抗性攻击,就是让人工智能系统输 出 错误的结果。 还是以手写 图 像识别为例,攻击者可以构造恶 意的 图片,使得人工智能系统在分类 识别图 片的过程中触发相 应 的安全漏洞, 改变程序正常执行的控制流或数据流,使得人工智能系 统输 出攻击者指定的结果。 攻击思路基本分为两种:
1. 基于数据流篡改可以利用任意写内存漏洞,直接将AI系统中的一些关 键数据进行修改(如标签、索引等), 使得AI系 统输 出错误的结果; 2. 另一种则 是通 过常规的控制流劫持(如堆溢出、栈溢出等漏洞)来完成 对抗攻击,由于控制流劫持漏洞可以通过漏洞 实现任意代码的执 行,因此必然可以控制AI系统输出攻击者预 期的结果。