一鸣报道

破解神经网络、攻击GPU,AI黑客教程来了,已登GitHub热榜

深度学习的广泛使用也让很多黑客跃跃欲试,想利用 AI 的弱点发起攻击。本项目总结了很多相关的方法和经验,用于教学示范,目前已登 GitHub 热榜,今天获得了 200 多赞。

随着深度学习的发展,各行各业都在考虑将相关新技术引入业务场景中,网络安全领域也不例外。近一段时间以来,很多网络安全公司都尝试用神经网络去检测病毒、发现程序后门等,而一些数据公司也使用了神经网络发现和检测恶意爬虫程序。但是,神经网络真的在软件层面上是安全吗?今日的 GitHub 趋势榜上有一个「骇入神经网络指南」项目。作者提供了一系列教学资料和代码,告诉了我们黑客会怎样对神经网络发起攻击。和对抗样本攻击不同,这些攻击都是从软件层面进行的,和使用对抗样本混淆模型能力的攻击不同。

项目地址:https://github.com/Kayzaks/HackingNeuralNetworks

安全攻防战蔓延到 AI

在项目中,作者主要介绍了几种利用神经网络弱点对其发动攻击的方法,包括从使用神经网络的应用中找到漏洞,进行信息窃取、恶意程序注入和后门入侵等。此外还有利用深度学习训练中的内存加速,从 GPU 攻入系统的方法。项目具体分为多个章节,每个章节都提供了对应的代码和练习教程。除此以外,作者还提供了一篇文章,详细介绍了攻击原理和思路。

教程文章地址:https://github.com/Kayzaks/HackingNeuralNetworks/blob/master/Article.pdf

课程目录

项目分为 8 个章节,目录如下:

  1. 最后一层攻击

  2. 寻找神经网络后门

  3. 信息窃取

  4. 暴力破解

  5. 神经溢出

  6. 恶意软件注入

  7. 神经混淆

  8. 寻找漏洞

  9. 攻击 GPU

如何攻击 AI 系统

作者在教程文章中提供了一个例子:攻击使用神经网咯的虹膜识别系统。假设黑客可以部分地进入到某虹膜识别系统中,但是该系统的识别认证是由一个神经网络组成的,黑客无法获取完整代码,仅有模型文件「model.h5」,怎样才能进行攻击?

具体而言,这种 HDF5 文件几乎存储了模型所有的相关信息,包括架构和权重等。因此,作者认为修改文件中的权重等信息,特别是在模型的最后一层上。以一个二分类问题为例,模型的最后一层可能有两个神经元,正样本得到一个权重,而负样本则是另一个。黑客可以改变负样本的权重,使其也对本应当识别为陌生人的人授予进入的权利。

修改神经网络权重以改变识别结果。

此外,神经网络也可以被修改,以窃取输入数据。例如,黑客可以在网络的输入层前加入一层,让这个层根据反向传播调整自身权重(其他层不参与训练),最后根据特定的标签获得对应的层和权重。这样一来,如果需要一个能够绕过虹膜识别 AI 的数据,只需要利用这样的神经网络生成一个对应的输入即可。

研究者将一个新层加在已有层上。这时候只需要训练新层,旧层不训练。

攻击 GPU 缓存

除了这些以外,作者还谈到了如何让深度学习中使用的 GPU 发生缓存溢出,以便于获取控制系统权限的方法。在一个图像任务中,为了对图片进行预处理并分配给模型,系统可能会将图像和模型加载到 DRAM 中并使用两个不同的核进行处理。

由于预训练需要处理图像,而模型本身也很大,如果同时对两者使用全局内存(global memory),就可能使得分配给图像的内存发生溢出。溢出后,黑客就有了可以修改模型的能力。通过修改模型,则可以进一步控制整个系统。

安装依赖和使用

作者表示,本项目需要 Python 和相关依赖。项目相关代码是在 VS Code 上完成的。

具体需要的依赖包包括:

  1. Keras

  2. Numpy

  3. SciPy

  4. PyCuda

  5. NLTK 

安装后就可以使用教程了。在每个章节的代码目录中都附有具体的说明信息,读者可参考说明和代码研究实现。

入门黑客攻击神经网络
2
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

对抗样本技术

对抗样本是一类被设计来混淆机器学习器的样本,它们看上去与真实样本的几乎相同(无法用肉眼分辨),但其中噪声的加入却会导致机器学习模型做出错误的分类判断。

推荐文章
暂无评论
暂无评论~