雷锋网按:Clarence Chio,毕业于斯坦福大学,师从吴恩达,现为Shape Security 安全研究工程师。本文整理自Clarence Chio在GeekPwn 2016上的分享,雷锋网做了不改变愿意的修改。
今天的主题是Gmail对抗式机器学习。
我是学计算机科学、机器学习的,也是负责AI相关的研究者,在湾区那边做很多的数据挖掘、安防等相关的工作,我们非常高兴地看到现在很多的人都在做这些对抗机器学习或者深层次学习。
首先Gmail本身还是属于一个非常新兴的领域,虽然我们可以看到AI已经无处不见。很多网络安全的会议、包括一些世界级的会议,大家都在深入地使用这些技术。这也引起了我个人的兴趣,我也很好奇当看到安全这个主题下为什么Gmal机器学习为什么成为天作之合,当我们在工作中用了机器学习,你希望减少一些模型的功能。
我们看到有很多的人都能够利用机器学习来做很好的编程,就好象面部识别,里面有数以万计的探测、识别,这些机器学习都能够做很好。另外对于安防这块的主题,你可能也可以去控制你所产生的功能,但是考虑到不同的内容,你需要做的是有关的工程学,而不是减少这些功能。你要考虑到,在不同的对抗性的尝试当中如何把它放到某个结构里。
我今天做这个演讲主要是和大家分享如何来触发机器学习的模型,帮助它作出错误的决策。
这几年这些理念讲的很多,另外一方面它也有自己的复杂性。
幻灯片上有我列出的架构,这个架构特别复杂。首先它能做分类,它分成三类。
这中间的三类的定义也是取决于不同的层当中的单元量,这也是非常经典的。
在做这种神经网络的培训当中我们会关注两个,一个是站点,你是往前推的,那可能会激活一系列的功能,取决于你所在的不同的单元,通过你来做这个输入,另外还有这种所谓的传播。你可能就要把一些不同的任务布置出去,有的时候你做的一些决定正好是错的,然后把它进行一个组合,看一看它对这个错误的决定背后,都有哪些是重要的影响因素。
同时要做不同的优化的算法,否则的话很难作出追溯。还有对于每个单元你要考虑它的效应,去看每一批所包含的东西,看它背后隐藏的单元意味着什么。
对于对抗式机器学习已经好多年了,一个是提高它的假正面率,另一个是帮助它做错误的决策。根据不同的样本,我们在这边做一个展示。
首先这种图像成像错误的分类,这些分类的目标其实非常简单。我们首先会给到某一个具体的图像,比如说你是不是可以找到一个模型来告诉你这个图像是什么,这里面有飞机、鸟、汽车、船等等。
我们有一个所谓的预培训的概念,你可以在这个成像上增加一些噪音,来扰乱它。我们可以看到你引入的噪声可能会非常的小,非常的简单,不是非常的复杂。有的时候从神经网络引入噪声,然后你从神经端来迫使这个网络学习一些方法,可能要保持一定的稳健性。
这是一个小狗的例子,还有车,这里有不同图像的例子。而我在这里想做的是能够生成一些对抗性的网络,在这个图片上增加一些噪音,让它最后得出的结论是错的。一般这个狗得出的结论就应该是一只狗,正常的识别应该是没错的。
我在这里如果要输入第二个图,可能看起来它还应该是一张狗的图,但是如果把它输入了,看起来就把它视作一条船了,这个看起来非常怪,这其实就是属于有噪音的环境,这个对抗式的网络,包括它的预览就犯了错误。因为本身这个图也不是具有高解析度的图,后面再给大家看它是不是有额外的价值。同样对于汽车我也可以做类似的事情,虽然它明明是一台车,但是这上面把它视作是一只猫了。
它的格式是RGB的,也就是红绿蓝,从0到55,这是它所看起来的样子,有不同的显示值,有的时候是真彩的图像显示。在这里这个图可能就会对这个经典的分类器上面使它作出错误的决定。我们看在某一个具体的图像上面增加一些什么噪声能够让它作出错误的决定。
首先我们看到图像之间是有差异的,我在大家的大屏幕上来展示,这是一个所谓的噪声的图像,增加到整个狗上,大最终导致了分类器把这个图像分错了。让我们再回到前面这个幻灯片,再总结一下我们的三步走。我们也希望宏观地为大家介绍一下具体的操作流程,这是我们在培训阶段都会做的。
首先我们会输入一个分类器模型,完成这个过程之后一切都会变得很简单,如果这个过程不做的话我们可以使用其他不同类型的模型。同时我们也有专门的矩阵来对它的分类进行处理,第二步也是有三种不同的方法,在这三个步骤完成之后我们会对最一开始的输入来进行处理。这是我们整个第二部可能要走的的三步。
下面让我们再来看一看如何去攻破深度神经网络,这取决于你对这个网络的掌握程度。如果说你只有测试样本的话,你就必须要做一个具体的分析。比如说你想让这个羊看起来像条狗,你就要找到一定的方法来去欺骗。
在现实世界中,我们很多时候是不知道其系统使用的模型是什么,同时也不知道这些深度神经网络是用怎样的操作机制。但是,对于图像识别,我们可以做出很多不同的猜测。
我们可以做语音识别,同时大多数还可以使用一些通用的工具来进行处理。基本上我们可以有两个小的秘诀,就像我们做各种不同的研究也会发布相关的论文。我们不管你现在使用的模式是什么样的,我们要做的就是要制定出、打造出自己的模型,稍后给大家做示范。
接下来是我们想攻击的第二个目标,其实在美国它还是非常受欢迎的,是这个邮件服务。我们每次去上传了附件之后他们都会去扫描这个附件来检查是否有病毒。这种模式其实很多邮件服务商都在做,这也是及其学习的一种方式 。
谷歌也是会时不时的去改变他们本后所使用的模型。就在今天早上,弗吉尼亚大学做了研究,我们把这个漏洞提供给了谷歌,并且也对它进行了修复。
这里我们有一个恶意软件,这个软件会在虚拟层面运行,这里还有一个脚本,这里大家可以具体的看到它的代码情况,它是Windows的一个虚拟机,这是一个非常典型的软件,是今年3月份的时候出来的。
如果说你的资源已经被耗尽,它会告诉你正在扫描你的文件系统。在它完成扫描之后会这样来一句,除非你对它进行分区或者是做什么,或者是给我一点比特币之后我们才会为你解锁。
下面我们会来执行一下这一行代码,它基本上需要花40分钟的时间去生成。同时我要运行虚拟机,这里生成了5个样本,他们是有一定的可能性来越过这个分类器的安全防护体系。
我们通常来讲,通过5个样本的话,大概有两三个是可以通过这个防火墙的保护。我们来测试一下哪个可以通过这个分类器其实非常的简单。
为了再详细的介绍一下,我们会把这个文件重命名,然后再把它上传到附近。看起来还是没错的,它并没有去自动检查可能会存在的一些病毒,然后下载它,看看它是否存在软件攻击的问题。
我们来看一下这个软件是否继续在生效。现在让我们重新启动这个虚拟机,然后再去扫描你的文件系统。我们已经确定了是可以通过这个软件的扫描。它可以做各种不同格式的恶意软件的扫描,但是在这里,我们只要关注Windows,它们的标签都做的非常详细,今天也不会过多的赘述。
其实按照刚才所做的演示,即使在今天整个技术还是非常不错的。我们是把这些恶意软件提取到提取器上,再通过另外一个来对它进行传播。我们还有一些种子文件,这些种子文件都是这些恶意软件的样本,可以去帮助我们通过这类的分类器,进入到不断的扩展阶段,就像今年早期我们发布的相关的研究一样。
到了这里,尽管我们能做的还是受到了一些限制,但是我们依旧可以让整个系统变得更加安全。我们希望可以让我们的模型更好地去获得学习,并且更好地实现处理。
我们要做的第二件事情就是采用一些其他的技巧,这样可以降低整个样本的数量,同时也能够使整个文件的尺寸越来越小,加强我们的学习。
当然还有其他这些小技巧,我们在过去几年已经写过很多的研究论文,介绍了很多方法。在这里我们是把它称作深度攻击,同时它也是可以去配置的,哪怕它对深度学习了解的并不多,我们依旧可以自主地去实现,并且生成一些代码看看这个模型是否能够得到提升。
我们希望大家能够加入我们,让我们为网络环境的安全做出点贡献。除此指纹,还包括图像识别、自动识别交通灯都是我们在做的。所以说深度学习已经是我们关注的要点所在。
注:文中图系演讲者在GeekPwn上的ppt内容,雷锋网已获授权。