Deep-pwning是测试机器学习的轻量级框架,旨在评估抗动机对手的稳健性。 请注意,Deep-pwning目前不成熟、不完善。应对其进行测试、拓展与延伸。只有这样,才能使其真正成为统计机器学习模型的goto渗透测试工具。 背景研究人员发现,诱骗机器学习模型(分类器Classifier、clusterer、回归量regressor等)做出客观错误决定,没什么大惊小怪的。该研究领域被称为“对抗机器学习”(Adversarial Machine Learning)。任何有动机的攻击者能绕过机器学习系统这种并非危言耸听,只要时间充足,信息足够,成功绕过不是难事。但是,架构师和工程师在设计师在设计和构建机器学习系统时通常会忽略该问题。当这些系统应用到关键场景时(医疗、交通、金融或安全领域),后果令人堪忧。 因此,当评估应用机器学习应用程序的效力时,应在对抗设置下测量延展性、系统的准确度与召回率。 该工具今年8月在拉斯维加斯举办的DEF CON黑客大会上发布,发布的演讲标题为机器欺骗101:Pwning深度学习系统(Machine Duping 101: Pwning Deep Learning Systems) 结构这个框架建立在Tensorflow之上,仓库中包含的示例在Tensorflow(从Tensorflow GitHub仓库获取)示例的基础上经过修改。所有这些示例和代码使用深层神经网络,但它们能用来生成具有类似任务分类器(不使用深层神经网络)的对抗图像。这是因为,机器学习存在“可转移性现象”。这就意味着DNN模型A对抗样本也许能愚弄另一明显结构化DNN模型B,和一些其它SVM模型C。 本图显示源模型(用来生成对抗样本)成功对抗误分类在目标模型(对抗样本测试)上所占的百分比。 组件Deep-pwning含多个组件减少代码重复。因为潜在分类任务的性质大不相同,代码当前迭代被优化分类图片和短语(使用词条特征向量)。 组成 Deep-pwning当前迭代的代码模型如下: 1. 驱动程序(Driver) 驱动程序为代码主要执行点。可以将不同的模型与组件联系起来,还能在对抗生成过程注入更多自定义元素。 2. 模型 这是实现实际机器学习模型的地方。例如,提供的lenet5模型定义在lenet5.py 内的model()函数中。模型对网络的定义如下: -> Enter -> Convolutional Layer 1 -> Max Pooling Layer 1 -> Convolutional Layer 2 -> Max Pooling Layer 2 -> Dropout Layer -> Softmax Layer -> Output 3、对抗(advgen) 此模块包含生成模型对抗输出的代码。每个advgen类中定义的函数run()接收input_dict(包含多个Tensorflow中定义的机器学习模型预定义张量运算)。如果生成对抗样本的模型已知,input dict中的变量应根据模型定义。另外,如果模型未知,应使用替代模型(黑盒生成),并应使用模型定义。需要传递的变量为输入张量占位符变量和标签(通常指的是x -> input和y_ -> labels)、模型输出(通常指的是y_conv),对抗图片将依据的实际测试数据和标准。 4、配置 应用程序配置 5、Utils 各种其它工具,包括读取数据、处理Tensorflow列队输入等的辅助函数。 与该应用相关的资源目录: a. 检验点(Checkpoint) Tensorflow允许加载部分训练模型恢复训练,或将完全训练模型加载到评估或执行其它操作的应用程序。所有这些保存的检验点储存在这个资源目录。 b. 数据 该目录以驱动程序接收的格式存储输入数据。 c. 输出 这是针对所有应用输出的输出目录,包括生成的对抗图像。 开始入门安装 请按照以下指示安装tensorflow https://www./versions/r0.8/get_started/os_setup.html ,将允许选择tensorflow二进制安装。 $ pip set up -r necessities.txt 执行示例 为了从先前训练的checkpoint(config/mnist.conf中的配置)中恢复。 $ cd dpwn $ python mnist_driver.py --restore_checkpoint 从头开始训练。注意配置指定文件中的checkpoint(以前的)。 $ cd dpwn $ python mnist_driver.py 任务列表 · 实现生成对抗样本的显著图形方法。 · 将protection模块添加到项目,作为文献中提议的某些防御示例。 · 升级到Tensorflow 0.9.0 · 在情绪驱动程序中添加sentiment driving force,帮助使用预先训练word2vec模型 · 在模型(使用模型的+ example)添加SVM(Logistic Regression)fashions支持。 · 添加非图像和非短语分类器示例 · 添加多GPU训练支持,加快训练速度。 要求 注意dpwn需要Tensorflow 0.8.0。引入Tensorflow 0.9.0某些元素。 贡献 (借用了kennethreitz的请求仓库) · 检查开放问题或打开新问题围绕特征或漏洞展开讨论。 · Fork Github上的仓库(repository),开始修改主分支(或分支) · 编写测试,显示漏洞已修复或功能按预期运行。 · 发送请求并烦扰维修人员,直到请求合并发布。确保将自己添加到AUTHORS.md。 致谢 许多机器学习和安全研究人员直接或间接对项目做出的贡献令人印象深刻,框架因此受到启发。参考资源如下: 论文 · Szegedy 等 Intriguing properties of neural networks · Papernot 等 The Limitations of Deep Learning in Adversarial Settings · Papernot 等Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples · Goodfellow 等 Explaining and Harnessing Adversarial Examples · Papernot 等 Transferability in Machine Learning: from Phenomena to Black-Box Attacks using Adversarial Samples · Grosse 等 Adversarial Perturbations Against Deep Neural Networks for Malware Classification · Nguyen 等Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images · Xu 等Automatically Evading Classifiers: A Case Study on PDF Malware Classifiers · Kantchelian 等 Evasion and Hardening of Tree Ensemble Classifiers · Biggio 等 Support Vector Machines Under Adversarial Label Noise · Biggio 等 Poisoning Attacks against Support Vector Machines · Papernot 等Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks · Ororbia II 等Unifying Adversarial Training Algorithms with Flexible Deep Data Gradient Regularization · Jin 等 Robust Convolutional Neural Networks under Adversarial Noise · Goodfellow 等 Deep Learning Adversarial Examples – Clarifying Misconceptions 代码 · WildML Implementing a CNN for Text Classification in Tensorflow 数据集 · Krizhevsky等 The CIFAR-10 dataset · LeCun 等 THE MNIST DATABASE of handwritten digits Pang 等 Movie Review Data (v2.0 from Rotten Tomatoes) 获取deep-pwning:https://github.com/cchio/deep-pwning E安全注:本文系E安全独家编译报道,转载请联系授权,并保留出处与链接,不得删减内容。联系方式:① 微信号zhu-geliang ②邮箱eapp@easyaq.com |
|