【论文阅读】深度学习中的后门攻击综述
深度学习中的后门攻击综述
- 1.深度学习模型三种攻击范式
- 1.1.对抗样本攻击
- 1.2.数据投毒攻击
- 1.3.后门攻击
- 2.后门攻击特点
- 3.常用术语和标记
- 4.常用评估指标
- 5.攻击设置
- 5.1.触发器
- 5.1.1.触发器属性
- 5.1.2.触发器类型
- 5.1.3.攻击类型
- 5.2.目标类别
- 5.3.训练方式
1.深度学习模型三种攻击范式
后门攻击是一种隐秘而具有挑战性的网络安全威胁,它指的是攻击者利用漏洞或特殊访问权限,在系统中植入隐藏的访问通道。这种方法让攻击者能够在未被发现的情况下进入系统,绕过常规的安全控制,潜伏在其中,进行潜在破坏或数据窃取。在这篇博客文章中,我们将深入探讨后门攻击的本质、影响以及防范方法,帮助您了解并保护自己免受这种隐秘威胁的影响。
现阶段, 针对深度学习模型的攻击手段主要有对抗样本攻击、数据投毒攻击以及后门攻击,三者存在一定的区别,如下表所示:
| 攻击类型 | 攻击阶段 | 对模型的影响 |
|---|---|---|
| 对抗样本攻击 | 推理阶段 | 欺骗模型(模型没有发生变化) |
| 数据投毒攻击 | 训练阶段 | 破坏模型 |
| 后门攻击 | 训练阶段 | 诱导模型 |
1.1.对抗样本攻击
定义: 针对一个已经训练好的模型, 希望构造一个能够欺骗模型的样本, 而不会修改和破环已有的模型。
理解: 对抗样本攻击是发生在 推理阶段 的一种针对 模型 进行的攻击:通过构造 人眼无法察觉 的对抗样本(作为推理时模型的输入),使模型在推理时发生判断错误。
1.2.数据投毒攻击
定义: 使模型的泛化性能变差, 也即在测试集上的效果变差, 模型不能进行有效的学习, 甚至无法收敛。
理解: 数据投毒攻击是发生在 训练阶段 的一种针对 模型 进行的攻击。通过训练时掺入一些有毒的训练数据,导致模型的泛化性变差,即:训练时训练的挺好也已经收敛了,但在测试集上进行测试时效果就不好了,模型没有得到有效的学习。
1.3.后门攻击
定义: 使模型学习到攻击者指定的内容, 其对正常样本仍旧具有良好的测试效果, 但对于中毒样本则会输出攻击者预先设定的标签。
理解: 后门攻击是发生在 训练阶段 的一种针对 模型 进行的攻击。在训练时,同样掺入了一些特殊的训练数据(这类数据带有特定的触发器),导致模型测试的时候,在正常样本上测试效果很多,但在特定样本(带有触发器的样本)上性能会急剧下降。
2.后门攻击特点
复杂性: 后门攻击发生在训练阶段,涉及更多的步骤,包括:数据采集、数据预处理、模型构建、模型训练、模型保存、模型部署,更多的步骤意味着攻击者有更多的机会,模型的安全威胁也更多。
隐蔽性: 植入后门的模型,对正常样本来说不会表现出异常,只有面对带有特定触发器的样本时才会表现出异常,因此用户难以察觉。此外,后门攻击注入的中毒样本通常非常之少, 仅需 0.5%左右。
实际性: 后门攻击在正常测试集上仍具有良好的效果,因此经过后门攻击的模型很大概率会部署并投入使用。
3.常用术语和标记
| 符号 | 中文 | 解释 |
|---|---|---|
| x i x_i xi | 正常样本 | 未经后门攻击的原始数据 |
| x b x_b xb | 中毒样本 | 通过后门攻击手段得到的样本数据,通常是对正常样本进行修改得到的 |
| y i y_i yi | 源标签 | 正常样本对应的标签 |
| t t t | 目标标签 | 攻击者所指定的用于埋藏后门的类别标签,通常是使模型错误分类的类别 |
| D D D | 正常数据集 | 不含中毒样本的原始数据集 |
| D b D_b Db | 中毒数据集 | 含中毒样本的数据集 |
| M M M | 正常模型 | 通过正常数据集训练的模型 |
| M b M_b Mb | 中毒模型 | 通过中毒样本训练得到的含有后门的模型 |
| Δ \Delta Δ | 触发器/后门模式 | 后门攻击中用来生成中毒样本和激活模型后门的一种模式 |
4.常用评估指标
对于深度学习模型中的后门攻击来说, 主要通过以下三个指标进行评估。
-
攻击成功率 (Attack Success Rate, ASR): 指成功使模型误分类为目标类别的中毒样本所占的比例。
-
准确率下降 (Accuracy Decline, AD) : 指模型在后门攻击前后,对于正常样本预测准确率的下降值。
-
攻击隐匿性 (Attack Stealthiness, AS): 指后门攻击方法躲避人类视觉检查以及一些检测方法的能力。
注意:
- ASR 和 AD 针对模型的表现而言,通常来说模型经过后门攻击后,对于正常样本预测的准确率会有所下降, 而准确率下降越少,越不易引起使用者或防御者的察觉,模型也会更可能部署使用。因此攻击者希望尽可能减小对模型正常性能的损害, 使 ASR 尽量高而 AD 尽量低。
- AS 则从攻击方法本身的隐蔽性或不可见性出发,对后门攻击方法的设计提出要求。为了躲避人类视觉检查或一些检测方法,通常需要对触发器的形状、 大小、透明度以及投毒率等进行限制。为了量化体现 AS,可以定义例如数值变化率、结构相似性等指标进行评估。
5.攻击设置
5.1.触发器
5.1.1.触发器属性
触发器属性包括:大小、形状、位置、透明度。
5.1.2.触发器类型
触发器类型主要包括:确定图案、动态图案、良性特征。
- 确定图案: 使用攻击者设计的固定图案作为触发器。
- 动态图案: 具有输入感知功能的攻击方式,可以根据不同输入产生不同图案的触发器。
- 良性特征: 不植入额外特征,使用原数据本身具有的良性特征作为触发器,例如:人脸面部特征。
5.1.3.攻击类型
- 单对单攻击: 指单个触发器激活单类目标后门。
- 多对单攻击: 使用多个触发器, 当多个触发器同时触发时才激活某单类目标的后门。
- 单对多攻击: 使用同一触发器, 根据不同的触发强度来激活不同目标的后门。
5.2.目标类别
- 单对单攻击: 仅使某一类别的数据,在添加触发器后被分类为目标类别,其他类别添加触发器 后仍正常分类。单对单攻击希望模型学习某一类数据和触发器的特征组合与目标标签之间的联系。(举例:自动驾驶物体分类领域,只针对“行人”这一个类别进行攻击,添加了触发器之后使“行人”类别进行了错误分类,但汽车、交通灯等类别分类则没有发生变化。)
- 多对单攻击: 使所有或多个类别的数据(如:“行人”、“汽车”两个类别),在添加触发器后被分类为目标类别。多对单攻击则希望模型学习触发器本身的特征, 从而使模型对所有带有触发器的数据都按照预定的标签输出。
5.3.训练方式
- 从头训练: 使用中毒数据集对模型从零开 进行训练, 通常耗时较长, 但效果通常较好。
- 微调: 使用中毒数据集对已在正常数据集上训练好的模型进行重训练,耗时较短,但有时效果 一般。
- 不训练: 直接篡改模型参数达到与训练注入后门同样的效果。
相关文章:
【论文阅读】深度学习中的后门攻击综述
深度学习中的后门攻击综述 1.深度学习模型三种攻击范式1.1.对抗样本攻击1.2.数据投毒攻击1.3.后门攻击 2.后门攻击特点3.常用术语和标记4.常用评估指标5.攻击设置5.1.触发器5.1.1.触发器属性5.1.2.触发器类型5.1.3.攻击类型 5.2.目标类别5.3.训练方式 1.深度学习模型三种攻击范…...
Spring Boot中加@Async和不加@Async有什么区别?设置核心线程数、设置最大线程数、设置队列容量是什么意思?
在 Spring 中,Async 注解用于将方法标记为异步执行的方法。当使用 Async 注解时,该方法将在单独的线程中执行,而不会阻塞当前线程。这使得方法可以在后台执行,而不会影响主线程的执行。 在您提供的代码示例中,a1() 和…...
Vue_00001_CLI
初始化脚手架 初始化脚手架步骤: 第一步(仅第一次执行):全局安装vue/cli。 命令:npm install -g vue/cli 第二步:切换到要创建项目的目录,然后使用命令创建项目。 命令:vue creat…...
kubernetes ResourceQuotas Limits(资源配额)
开头语 写在前面:如有问题,以你为准, 目前24年应届生,各位大佬轻喷,部分资料与图片来自网络 内容较长,页面右上角目录方便跳转 简介 当多个用户或团队共享具有固定节点数目的集群时,人们会…...
【ARMv8架构系统安装PySide2】
ARMv8架构系统安装PySide2 Step1. 下载Qt资源包Step2. 配置和安装Qt5Step3. 检查Qt-5.15.2安装情况Step4. 安装PySide2所需的依赖库Step5. 下载和配置PySide2Step6. 检验PySide2是否安装成功 Step1. 下载Qt资源包 if you need the whole Qt5 (~900MB): wget http://master.qt…...
ECMAScript6详解
ECMAScript 6,也被称为 ES6 或 ECMAScript 2015,是 JavaScript 编程语言标准的一个主要更新。它于 2015 年正式发布,并带来了许多新特性和改进,使得 JavaScript 开发更加现代化和高效。下面是 ES6 的一些关键特性的详解࿱…...
[C#]使用PaddleInference图片旋转四种角度检测
官方框架地址】 https://github.com/PaddlePaddle/PaddleDetection.git 【算法介绍】 PaddleDetection 是一个基于 PaddlePaddle(飞桨)深度学习框架的开源目标检测工具库。它提供了一系列先进的目标检测算法,包括但不限于 Faster R-CNN, Ma…...
stable diffusion 基础教程-提示词之光的用法
基图 prompt: masterpiece,best quality,1girl,solo,looking at viewer,brown hair,hair between eyes,bangs,very long hair,red eyes,blush,bare shoulders,(white sundress),full body,Negative prompt: EasyNegative,badhandv4,nsfw,lowres,bad anatomy,bad hands,text…...
第9课 回声抑制(AEC+AGC+ANS)的实现
在第8课中,我们将推流端与播放端合并实现了一对一音视频聊天功能,一切看起来还不错。但在实际使用时,会遇到一个烦心的问题:说话时会听到比较大的回声,影响正常使用。所以,这节课我们来重点解决这个问题。 …...
软件测试|Python中的变量与关键字详解
简介 在Python编程中,变量和关键字是非常重要的概念。它们是构建和控制程序的基本要素。本文将深入介绍Python中的变量和关键字,包括它们的定义、使用方法以及一些常见注意事项。 变量 变量的定义 变量是用于存储数据值的名称。在Python中࿰…...
修改安卓apk设置为安卓主屏幕(launcher)
修改安卓apk 将apk可以设置安卓主屏幕 原理: 将打包好的apk文件进行拆包增加配置文件在重新编译回apk包 需要得相关文件下载 解包 apktool :https://pan.baidu.com/s/1oyCIYak_MHDJCvDbHj_qEA?pwd5j2xdex2jar:https://pan.baidu.com/s/1Nc-0vppVd0G…...
unity中 canvas下物体的朝向跟随
public Transform target; private Vector3 direction; void Update() { //第一种 //direction target.position - transform.position; //transform.up -direction.normalized; //第二种 if (target ! null ) { …...
HarmonOS 日期选择组件(DatePicker)
本文 我们一起来看基础组件中的 DatePicker 这就是 日程开发中的日期组件 他可以创建一个日期的范围 并创建一个日期的滑动选择器 这里 我们先写一个组件的骨架 Entry Component struct Index {build() {Row() {Column() {}.width(100%)}.height(100%)} }然后 我们先在Column组…...
linux中的系统安全
一.账号安全 将非登录用户的shell设为/sbin/nologin 系统中用户有三种:超级管理员 普通用户 程序用户 前两种用户可以登录系统,程序用户不给登录 所以称为非登录用户 命令格式: usermod -s /sbin/nologin(改已有用户&#…...
LeetCode(209)长度最小的子数组⭐⭐
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。 示例: 输入:s 7, nums [2,3,1,2,4,3]输出:2…...
【JAVA】MySQL中datetime类型23:59:59自动变为下一天的00:00:00
如:2024-08-11 23:59:59 变成了 2024-08-12 00:00:00。 解析:数据库入库的时候会有500毫秒的进位,然而程序在赋值时间给变量的时候很大概率会超过500ms,有时是999ms。 解决方案 // DateUtil Hutool官网 将生成的时间往前偏移99…...
Unity游戏内相机(主角头部视角)的旋转问题:“万向节锁定”(Gimbal Lock)
前言: 在Unity中,相机的正前方是Z正半轴,相机的正右方是X正半轴,相机的正上方是Y正半轴。这个很好理解。 现在,我想要相机看向左前上方45,你会觉得要怎么做呢? 如果是我的话,我的第一…...
Keras实现seq2seq
概述 Seq2Seq是一种深度学习模型,主要用于处理序列到序列的转换问题,如机器翻译、对话生成等。该模型主要由两个循环神经网络(RNN)组成,一个是编码器(Encoder),另一个是解码器…...
1080p 1k 2k 4k 8k 分辨率,2K就不应该存在。
众所周知 1K(1080P):分辨率为19201080像素,2K:分辨率为25601440像素4K:分辨率为38402160像素8K:分辨率为76804320像素 边长比例,和像素比例如下: 2K宽高都是1k的1.333…...
接口芯片选型分析 四通道差分驱动可满足ANSI TIA/EIA-422-B 和ITU V.11 的要求 低功耗,高速率,高ESD
四通道差分驱动可满足ANSI TIA/EIA-422-B 和ITU V.11 的要求 低功耗,高速率,高ESD。 其中GC26L31S可替代AM26LS31/TI,GC26L32S替代AM26LS32/TI,GC26E31S替代TI的AM26LV31E...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
