写点什么

神经网络攻防: 02. 攻击模型的输出层

用户头像
P小二
关注
发布于: 2021 年 03 月 04 日
神经网络攻防: 02.攻击模型的输出层

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


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


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


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



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




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


我们准备了一张为 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.模型到底是什么?



发布于: 2021 年 03 月 04 日阅读数: 7
用户头像

P小二

关注

公众号:P小二 2017.12.09 加入

架构师,创业者,关注AI与安全

评论

发布
暂无评论
神经网络攻防: 02.攻击模型的输出层