P小二 P小二
← 返回文章 AIPwn 约 4 分钟

02.攻击模型的输出层

神经网络攻防专栏——02.攻击神经网络的输出层

01.模型到底是什么?中,我们解决了获取一个模型信息的任务。第二篇,我们进一步,利用获得的信息来搞事情。

假设我们有一个验证程序,只要模型识别到图片为数字4,则通过,不然就直接拒绝。

问题: 如果我们可以修改这个模型文件,应该怎么修改才能让任何图片都可以通过验证程序?

首先要明确一点,程序的逻辑是只有4才能通过,而且只能修改模型。那么我们能够控制的变量就只有模型的识别结果。如果我们把所有的识别结果都改为4,这样所有图片都可以通过验证。

那修改模型的识别结果,模型输出层的参数会是第一个考虑的点。如下图:  如果我们把bias设置为很大的值,就直接把预测结果修改得很大。

那修改模型的识别结果,模型输出层的参数会是第一个考虑的点。如下图: 如果我们把b

以model.h5为例, model.h5的输出层是dense_2,我们使用HDFView通过可读可写打开

以model.h5为例, model.h5的输出层是dense 2,我们使用HD

然后在model_weights/dense_2/dense_2中找到bias:0

然后在model weights/dense 2/dense 2中找到bias

修改分类4对应的值,这里把它改为100,我们再来测试是否满足我们的预期。

修改分类4对应的值,这里把它改为100,我们再来测试是否满足我们的预期。

我们准备了一张为2的手写图片,

我们准备了一张为2的手写图片

在修改前后进行了测试,可以看到结果:

修改前,被拒绝

[[1.8426473e-13 4.5459983e-16 1.0000000e+00 1.1816156e-13 3.9987751e-19 2.1004661e-18 7.1072603e-15 2.6362517e-12 7.3257994e-10 1.8768874e-17]]Access Denied


修改后,验证通过

- -
- ```
[[1.6611006e-38 0.0000000e+00 9.0147505e-26 0.0000000e+00 1.0000000e+00  0.0000000e+00 0.0000000e+00 2.3765060e-37 6.6040380e-35 0.0000000e+00]]Access Granted

具体加载模型代码和模型,在本专栏Github 项目中。

地址: 

https://github.com/AIPwn/HackingNeuralNetworks

往期回顾:

01.模型到底是什么?

(选学)神经网络攻防 | 机器学习预备知识(一)

开篇词——你所不知道的神经网络攻防

开篇词——你所不知道的神经网络攻防