热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习_机器学习之逃逸攻击

篇首语:本文由编程笔记#小编为大家整理,主要介绍了机器学习之逃逸攻击相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了机器学习之逃逸攻击相关的知识,希望对你有一定的参考价值。






逃逸攻击

逃逸攻击是指攻击者在不改变目标机器学习系统的情况下,通过构造特定输入样本以完成欺骗目标系统的攻击。例如,攻击者可以修改一个恶意软件样本的非关键特征,使得它被一个反病毒系统判定为良性样本,从而绕过检测。攻击者为实施逃逸攻击而特意构造的样本通常被称为“对抗样本”。只要一个机器学习模型没有完美地学到判别规则,攻击者就有可能构造对抗样本用以欺骗机器学习系统。

前面我们学习了如何将AI应用于网络安全领域,那么AI自身是否会受到安全威胁呢?答案是肯定的。
AI模型的完整性主要体现在模型的学习和预测过程完整不受干扰,输出结果符合模型的正常表现上。这是研究人员能相信AI模型的输出结果的根本,也是AI模型最容易受到攻击的地方。
针对AI模型完整性发起的攻击通常称为“对抗攻击”。 对抗攻击通常分为两类,一类是从模型入手的逃逸攻击,一类是从数据入手的数据中毒攻击。
本次实验我们来学习逃逸攻击。
逃逸是指攻击者在不改变目标机器学习系统的情况下,通过构造特定输入样本以完成欺骗目标系统的攻击。例如,攻击者可以修改一个恶意软件样本的非关键特征,使得它被一个反病毒系统判定为良性样本,从而绕过检测。攻击者为实施逃逸攻击而特意构造的样本通常被称为“对抗样本”。只要一个机器学习模型没有完美地学到判别规则,攻击者就有可能构造对抗样本用以欺骗机器学习系统。例如,研究者一直试图在计算机上模仿人类视觉功能,但由于人类视觉机理过于复杂,两个系统在判别物体时依赖的规则存在一定差异。对抗图片恰好利用这些差异使得机器学习模型得出和人类视觉截然不同的结果,如下所示,攻击者生成对抗样本使系统与人类有不同的判断
在这里插入图片描述

一个著名的逃逸样本是Ian Goodfellow在2015年ICLR会议上用过的熊猫与长臂猿分类的例子。 被攻击目标是一个来谷歌的深度学习研究系统。该系统利用卷积神经元网络能够精确区分熊猫与长臂猿等图片。但是攻击者可以对熊猫图片增加少量干扰,生成的图片对人来讲仍然可以清晰地判断为熊猫,但深度学习系统会误认为长臂猿。 图2显示了熊猫原图以及经过扰动生成后的图片
在这里插入图片描述

这其中的根本原因,在于模型没有学到完美的判别规则。虽然图片识别系统一直试图在计算机上模仿人类视觉功能,但由于人类视觉机理过于复杂,两个系统在判别物体时依赖的规则存在一定差异。比如说我们可能是通过熊猫的黑眼圈,黑耳朵,黑手臂还有熊脸判断出它是一个熊猫,但图片识别系统可能只是根据它躺在树枝上的这个动作,就将其判断为了长臂猿。因此完美的判别规则和模型实际学到的判别规则之间的差距,就给了攻击者逃脱模型检测的可趁之机。

逃逸攻击目前已经受到了广泛的关注,并被应用到了大量场景上,如攻击自动驾驶汽车、物联网设备、语音识别系统等,可以说“哪里有AI,哪里就有逃逸攻击”。比如下面的例子
在这里插入图片描述

让自动驾驶汽车错误识别路边的标识。在原停止标志图像(左边)中,停止标志可以被成功地检测到。在中间图像,在整个图像中添加了小的干扰,停止标志不能被检测到。在最后一个图像中,在停止标志的符号区域添加小的干扰,而不是在整个图像,停止标志被检测成了一个花瓶。
在比如可以攻击语音识别系统
在这里插入图片描述

从正常命令倒推产生混淆的音频命令(如一段人类无法辨认的噪音),从而在三星Galaxy S4以及iPhone 6上面被正确识别为相对应的语音命令,变为让手机切换飞行模式、拨打911等

本次实验我们不会做工作量这么大的工作,我们将会以一个训练好的用于检测xss的waf模型为目标,尝试构造对抗样本,逃过该模型的检测。
首先我们给出一个样本,使用模型检测并生成预测概率
之后我们将对模型进行分析,找到在我们希望发生错误分类的方向上权重最大的特征。换句话说,我们找到某个特征,该特征可以导致模型对原始预测的confidence下降。
比如最开始模型判别为了1,为了实现逃逸攻击,我们希望能够让模型将样本判别为0,所以我们会迭代增加特征的大小,知道预测概率超过置信度阈值。
这里我们作为攻击者,已经拿到了用于检测的模型waf/trained_waf_model,并且可以访问序列化的scikit-learn的pipeline对象,并可以检查模型pipeline中的每一阶段。
首先我们加载训练好的模型,然后使用python内置的vars()查看pipeline包含的步骤:
在这里插入图片描述

结果如下
在这里插入图片描述

可以看到pipeline对象有两个步骤,一个是TfidfVectorizer,一个是LogisticRegression分类器。
我们指定一个典型的xss的payload来测试一下模型是否起作用。
在这里插入图片描述

测试如下
在这里插入图片描述

从结果看出,模型成功将其预测为1,也就是认为这个payload是属于xss攻击,并且在第二行可以看到模型有0.99999998的置信度认为这个预测是对的。
确认模型是可以工作的,那么接下来就进入攻击阶段。

我们首先需要找到可以帮助最大化程度影响分类器的特定字符串token。
我们通过观察词汇表属性来检查的vectorizer的token词汇表
在这里插入图片描述

测试如下
在这里插入图片描述

从打印的结果中可以看到,每个token都与一个特定的权重相关联,这些权重会被作为单个文档的特征被喂给分类器。
经过训练的LogisticRegression分类器的系数可以通过coef_属性来访问。我们将这两个数组打印出来并尝试理解其意义。
在这里插入图片描述

测试如下
在这里插入图片描述

结果分别打印了IDF每项的权重与LogisticRegression系数,他们的乘积可以确定每个项对整体预测概率的影响程度。我们在下面的代码中将其相乘并打印
在这里插入图片描述

测试如下
在这里插入图片描述

接下来我们根据置信度对每一项进行排序,这里使用numpy.argpartition()进行排序并将值转为vec.idf_的索引,这样我们就可以从vectorizer的token字典(就是前面打印出的vec.vocabulary_)中找到相应的token字符串了。然后将排序后的结果打印出来
在这里插入图片描述

结果如下
在这里插入图片描述

可以看到索引为81937处的token对预测的置信度有最大的正向影响(positive influence,也就是是说出现这个字符串越多的话,那么越有可能将对应的payload判定为0,即非xss攻击的payload),那么我们从token字典中将对应这个索引的token提取出来
在这里插入图片描述

测试如下
在这里插入图片描述

那么我们来看看是不是在前面测试过的payload中加上这个token会使得判别器将判为0
在这里插入图片描述

测试如下
在这里插入图片描述

从结果中我们可以看到,模型还是将加上了“t/s”后的payload认为是xss攻击,不过在第二行可以看到此时的判为xss的置信度为0.99999816,比之前的要低。
说明其实加上”t/s”后还是有效的,我们继续往payload里增加”t/s”
在这里插入图片描述

结果如下
在这里插入图片描述

可以看到此时将我们的payload加上了258次”t/s”后,终于使得模型将其判别为0,即非xss攻击,从置信度也可以看到,判为xss的置信度低于了0.5
我们可以进一步打印出此时的字符串
在这里插入图片描述

测试如下
在这里插入图片描述

此时的payload虽然有t/s,但是我们人工去判断的话仍会认为这是一个有效的xss攻击,换句话说,这个payload确实有效,但是逃逸了模型的检测,这个payload就是我们前面提到的对抗样本。

在实验的最后我们来学习针对逃逸攻击的防御。
研究发现,对抗样本的对策有两种主要类型的防御策略:
1)被动型,即在构建完机器学习系统之后检查对抗样本;许多研究项目正在尝试在测试阶段检测对抗样本。Metzen等人为对抗样本创建了一个检测器作为原始神经网络的辅助网络。这个检测器是一个简单的小型神经网络,用于对二元分类做预测,也即预测输入样本是对抗样本的概率。SafetyNet提取每一个ReLU层的输出的二元阈值作为对抗检测器的特征,并且使用RBF-SVM来检测对抗图像。作者声称即便对手了解这个检测器,对手也很难击败此方法,因为对攻击者来说,为对抗样本和SafetyNet检测器的新特征找到一个最优值是困难的。
2)主动型,在对手产生对抗样本之前使机器学习系统更加健壮。
Papernot等人使用网络净化来防御深度神经网络抵御对抗样本,其背后的机理是作者发现攻击主要以网络的敏感度为目标,使用高温度的softmax可以降低模型对小的扰动的敏感度,进而达到对对抗样本的防御能力。同时,作者还指出,网络净化可以增强神经网络的泛化能力。Goodfellow等人[23]和Huang等人在训练阶段引入了对抗样本,即使用对抗样本来训练神经网络,并证明了这种对抗训练可以增强深度神经网络的健壮性。应用对抗样本的可转移特性,文献[28]还提出了集成式的对抗训练方法,使用来自不同源产生的对抗样本来训练模型,这个源可以是正在训练的模型,也可以是先前训练过的外部模型

参考:
1.https://www.anquanke.com/post/id/181879
2.https://blogs.360.cn/post/evasion-attacks-on-ai-system.html
3.https://towardsdatascience.com/evasion-attacks-on-machine-learning-or-adversarial-examples-12f2283e06a1
4.《机器学习系统面临的安全攻击及其防御技术研究》






推荐阅读
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • 通过使用七牛云存储服务,本文详细介绍了如何将本地图片高效上传至云端,并实现了内容的便捷管理。借助七牛云的 Python SDK,文章提供了从认证到文件上传的具体代码示例,包括导入必要的库、生成上传凭证以及处理文件路径等关键步骤。此外,还探讨了如何利用七牛云的 URL 安全编码功能,确保数据传输的安全性和可靠性。 ... [详细]
  • 每日一书丨AI圣经《深度学习》作者斩获2018年图灵奖
    2019年3月27日——ACM宣布,深度学习之父YoshuaBengio,YannLeCun,以及GeoffreyHinton获得了2018年的图灵奖, ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 在Django中提交表单时遇到值错误问题如何解决?
    在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
author-avatar
手机用户2502887521
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有