当前位置: 首页 > news >正文

AI安全入门-人工智能数据与模型安全

参考 人工智能数据与模型安全 from 复旦大学视觉与学习实验室

文章目录

  • 0. 计算机安全学术知名公众号
  • 1. 概述
    • 数据安全
    • 模型安全
  • 3. 人工智能安全基础
    • 3.1 基本概念
      • 攻击者
      • 攻击方法
      • 受害者
      • 受害数据
      • 受害模型
      • 防御者
      • 防御方法
      • 威胁模型
      • 目标数据
      • 替代数据
      • 替代模型
    • 3.2 威胁模型
      • 3.2.1 白盒威胁模型
      • 3.2.2 黑盒威胁模型
      • 3.2.3 灰盒威胁模型
    • 3.3 攻击类型
      • 3.3.1. 攻击目的
        • 3.3.1.1. 破坏型
        • 3.3.1.2. 操纵型
        • 3.3.1.3. 窃取型
      • 3.3.2. 攻击对象
        • 3.3.2.1. 数据
        • 3.3.2.2. 模型
      • 3.3.3. 攻击时机
        • 3.3.3.1. 训练阶段
        • 3.3.3.2. 测试阶段

0. 计算机安全学术知名公众号

  • 安全研究 GoSSIP (蜚语、上海交通大学软件安全小组,主要由李卷孺老师指导) 官网
  • 网安国际 (由清华大学段海新教授、复旦大学杨珉教授、蚂蚁韦韬博士、华为万涛博士等共同发起) 官网
  • 安全学术圈 (SecQuan) 官网
  • 漏洞战争 (林桠泉 泉哥)
  • 安全张之家 (中国科学院大学张玉清教授)
  • 隐者联盟 (AI 安全和多媒体安全,主要由复旦大学钱振兴教授运营)
  • NISL 实验室 (清华大学) 官网

1. 概述

数据安全

  • 数据投毒:通过操纵数据收集或标注过程来污染(毒化)部分训练样本,从而大幅降低最终模型的性能。
  • 数据窃取:从已训练好的模型中逆向工程出训练样本,从而达到窃取原始训练数据的目的。
  • 隐私攻击:利用模型的记忆能力,挖掘模型对特定用户的预测偏好,从而推理出用户的隐私信息。
  • 数据篡改:利用模型的特征学习和数据生成能力,对已有数据进行篡改或者合成全新的虚假数据。

模型安全

  • 对抗攻击:在测试阶段向测试样本中添加对抗噪声,让模型作出错误预测结果,从而破坏模型在实际应用中的性能。
  • 后门攻击:以数据投毒或者修改训练算法的方式,向模型中安插精心设计的后门触发器,从而在测试阶段操纵模型的预测结果。
  • 模型窃取:通过与目标模型交互的方式,训练一个窃取模型来模拟目标模型的结构、功能和性能。

3. 人工智能安全基础

当一个安全问题发生时,我们首先要弄清楚是*“谁攻击了谁”*。这就涉及到人工智能安全问题中三类主要的利益相关者:攻击者、受害者和防御者。

3.1 基本概念

攻击者

攻击者是指对数据、模型及其相关过程,包括数据收集、模型训练和模型部署等,发起恶意监听、窃取、干扰、甚至破坏行为的个人或组织。
注意具体发动攻击的是一个程序,但是会有人类或者组织来操纵,有一种刺人而杀之,曰“非我者,兵也。”的感觉。

攻击方法

攻击方法是指攻击者用来对数据、模型及其相关过程,包括数据收集、模型训练和模型部署等,发起攻击的具体手段。

受害者

受害者是指由于受到数据或模型攻击而利益受到损害的数据或模型所有者、使用者或其他利益相关者。
与受害者密切相关的两个概念是:受害数据(victim data)和受害模型(victim model);

受害数据

受害数据是指受到恶意攻击的训练或测试数据。

受害模型

受害模型是指受到恶意攻击的人工智能模型。

防御者

防御者是指通过一定的防御措施保护数据或者模型免受潜在恶意攻击的个人或组织。

防御方法

防御方法是指防御者用来对数据、模型及其相关过程,包括数据收集、模型训练和模型部署等进行保护,使其免受潜在攻击的具体手段。
下面定义攻防发生的“战场”,即威胁模型。

威胁模型

威胁模型定义了系统的运行环境、安全需求、所面临的安全风险、潜在攻击者、攻击目标和攻击方法、可能的防御策略、防御者可利用的资源等攻防相关的关键设置信息。
简而言之,威胁模型(threat model)是对真实场景的一种模拟,旨在清晰准确的划定攻击者与防御者之间边界,以便公平的开展攻防研究。数据与模型安全研究中常采用的威胁模型类型:白盒威胁模型、灰盒威胁模型和黑盒威胁模型。

目标数据

目标数据是指攻击者在进行攻击时的数据对象。

替代数据

替代数据是指攻击者自己收集的、可以用来替代目标数据的傀儡数据。

替代模型

替代模型是指攻击者自己拥有的、可以用来替代目标模型的攻傀儡模型。

3.2 威胁模型

3.2.1 白盒威胁模型

白盒威胁模型主要是对攻击目标对象来说的,是指攻击者具有对目标数据或目标模型的完全访问权限。只要切实可行,攻击者可以利用任何关于目标数据或目标模型的信息发起攻击。需要注意的是,“白盒”一般指的是访问权限,并不意味着攻击者就可以随意修改目标数据或目标模型。否则,攻击者可以任意破坏数据和模型,而不再需要设计特殊的攻击方法。

3.2.2 黑盒威胁模型

与白盒威胁模型不同,黑盒威胁模型假设攻击者只能通过API(application programming interface)对模型发起查询请求并获得返回结果,而无法获取训练数据、训练方法、模型参数等其他信息。

3.2.3 灰盒威胁模型

灰盒威胁模型介于白盒威胁模型和黑盒威胁模型之间,假设攻击者可以知道攻击目标的部分信息,如任务类型、数据类型、模型结构等,但是无法获得具体的训练数据或模型参数。

3.3 攻击类型

在介绍具体的攻击类型之前,我们需要深入理解机器学习模型本身的特点,因为模型特性决定了它可能存在的弱点和所面临的攻击。这里我们以深度学习模型(即深度神经网络)为例,介绍对机器学习模型不同层次的理解。

  • 机器学习模型是一个学习器
    机器学习模型可以在学习算法,如有监督学习算法、无监督学习算法等的指导下,从给定训练数据中学习潜在的规律,并能将学习到的规律应用到未知数据上去,这是对机器学习模型最朴素的理解。
    学习器存在一系列共同的弱点,比如当任务定义、训练数据、学习算法、训练时长等任何一个环节出了问题,最终得到的模型就会出现性能下降、被恶意攻击等各种风险。所以攻击者可以攻击这其中任何一个环节,以此来阻止模型的正常训练、破坏模型的泛化、向模型里安插后门等等。
  • 机器学习模型是一个计算器
    训练好的机器学习模型可以理解为是一个计算器,其可以对输入样本进行一系列复杂的计算并最终输出预测结果。训练好的机器学习模型可以理解为是一个计算器,其可以对输入样本进行一系列复杂的计算并最终输出预测结果。
    由于机器学习模型的输入往往是多个样本(一批样本),输出也不是单维度的,所以不同维度的计算结果之间也会产生相互干扰。另外,计算器跟具体的任务一般都不是唯一绑定的,也就是说为一个任务涉及的计算器也有可能会被劫持来服务于另一个非法的任务。
  • 机器学习模型是一个存储器
    机器学习模型在训练数据上不断训练的过程也是其不断学习规律、不断存储信息的过程。
    既然机器学习模型是一个存储器,那么其存储的信息就一定可以通过某种方式“提取”出来,导致隐泄露攻击、数据窃取攻击等安全问题的出现。
  • 机器学习模型是一个复杂函数
    机器学习模型可以被理解为一个将输入空间映射到输出空间的复杂函数。
    高维的输入和输出空间决定了其难以通过有限训练数据点达到空间的完美覆盖,导致空间存在大量无法被探索到的高维口袋(high-dimensional pocket)。这样的函数也决定了其内部会存在一些近路(shortcut),在这些路径上输入和输出之间距离很近,不需要复杂的计算即可直接得出结论;同时也会存在一些死胡同(dead end),无论怎么计算也得不到某类输出。

3.3.1. 攻击目的

3.3.1.1. 破坏型

破坏型攻击的目的只有一个,那就是“破坏”。破坏型攻击可以破坏机器学习的任何一个关键环节,包括数据收集过程、训练数据、模型的训练过程、训练得到的模型、模型部署、模型测试、测试数据等等。任何攻击都有一定的动机,对破坏型攻击来说,其攻击动机包括:破坏竞争对手的人工智能系统、以破坏来勒索受害用户、无意间使用了具有破坏性的样本等等。

3.3.1.2. 操纵型

操纵型攻击的目的是控制数据或模型以完成攻击者特定的目的。相比破坏型攻击,此类攻击要求攻击者完成对数据或模型更精细化的控制,攻击难度更大。

3.3.1.3. 窃取型

窃取型攻击的目的是通过窥探数据、模型或者模型的训练过程,以完成对训练数据、训练得到的模型、训练算法等关键信息的窃取。

3.3.2. 攻击对象

机器学习大致遵循“数据收集-模型训练-模型部署”三个步骤。

3.3.2.1. 数据

训练数据和测试数据是两类主要数据,训练数据服务于模型训练,测试数据服务于模型评估。
数据投毒攻击通过污染收集到的训练数据以达到破坏数据、阻碍模型训练的目的。数据投毒攻击可以通过不同的方式进行,比如攻击数据的收集过程、标注过程、或者直接污染收集到的数据。数据窃取通过对模型进行逆向工程,从中恢复出原始训练数据。

3.3.2.2. 模型

针对模型的攻击主要包括对抗攻击、后门攻击和模型窃取三大类,这三类攻击分别代表了破坏型、操纵性和窃取型这三类攻击目的。
对抗攻击的思想是让模型在部署使用阶段犯错,其通过向测试样本中添加微小的对抗噪声来让模型做出错误的预测结果。有意思的是,这种通过修改输入样本来干扰模型预测的攻击方式并不稀奇,反而会引发两个疑问。
(1) 既然攻击者有修改测试数据的权限,那么他/她就可以随意修改数据,那就不会仅限于微小修改。
(2) 攻击者可以修改测试数据这一假设会面临“动机”方面的挑战,即为什么模型的使用者作为受益者一方要让模型犯错呢?

3.3.3. 攻击时机

根据攻击时机的不同,现有攻击大约可以分为训练阶段攻击和测试阶段攻击。

3.3.3.1. 训练阶段

与模型训练紧密相关的是训练数据、训练算法、超参数和模型,这些元素都有被攻击的可能。在训练阶段,攻击者可以对数据进行投毒攻击,通过污染训练数据来破坏模型的正常训练。例如对训练数据进行增、删、改、换等不同形式的改动,以此来降低最终训练得到的模型的性能或者其他属性(如鲁棒性、隐私保护性等)。

目前针对训练算法和超参数的攻击并不多见,但是可以想象的是模型训练对这些参数,比如学习率、初始化参数、训练周期,是很敏感的。但是对训练超参的攻击需要很强的威胁模型,比如攻击者可以控制训练过程或者恶意修改训练代码。一个有意思的观察是,部分研究工作开源的代码存在复现难的问题,需要对训练算法和超参数进行进一步调优才能达到论文中报告的结果。对于轻量级的训练来说这可能影响不大,但是对于大规模训练算法来说,这就会带来大量的训练开销,大大增加研究费用。如果在开源代码中故意对超参数进行隐藏或者过度复杂化以增加复现难度,就可以被视为是一种训练超参攻击。这个攻击很有趣,很像当年我写的代码里面有死循环,被当成病毒干掉了;

3.3.3.2. 测试阶段

相比训练阶段,不论从数据还是模型的角度来说,测试阶段的攻击更多样化。其中很大一部分原因是测试阶段模拟的是模型的真实使用情况,此时模型会以不同的形式接收外部请求,会面临多种多样的攻击。在数据方面,可以以模型为媒介对训练数据进行窃取和隐私攻击,还可以借助模型进行数据篡改和伪造。 在模型方面,可以通过修改测试样本对模型发起对抗攻击,或者通过查询API对模型进行窃取攻击。


本文只做简要记录,详细信息还是细细研究参考书人工智能数据与模型安全

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 免费长效IP在业务场景中的深度应用解析
  • 移掉 K 位数字
  • RK3568 安卓12 EC20模块NOCONN没有ip的问题(已解决)
  • elasticsearch过滤器filter:原理及使用
  • [Linux]基本指令(二)
  • 【C语言】深入解析希尔排序
  • Spring Boot项目的控制器貌似只能get不能post问题
  • Scala之基础面向对象编程
  • [Linux CMD] 文件编辑 nano (待更新)
  • WSL-Ubuntu20.04训练环境配置
  • 所有权与生命周期:Rust 内存管理的哲学
  • 什么是跨链交换,以bitget钱包为例
  • 谷歌Gmail账号又被封了?原因与解决方法
  • excel及panda的部分内容
  • ffmpeg 时间相关--时间基,timebase,pts,dts,duration
  • C++入门教程(10):for 语句
  • canvas 五子棋游戏
  • centos安装java运行环境jdk+tomcat
  • DataBase in Android
  • Docker 笔记(2):Dockerfile
  • es6要点
  • HTTP中的ETag在移动客户端的应用
  • js中的正则表达式入门
  • Otto开发初探——微服务依赖管理新利器
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 读懂package.json -- 依赖管理
  • 高度不固定时垂直居中
  • 利用DataURL技术在网页上显示图片
  • 两列自适应布局方案整理
  • 码农张的Bug人生 - 见面之礼
  • 原生js练习题---第五课
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • MPAndroidChart 教程:Y轴 YAxis
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # Java NIO(一)FileChannel
  • # SpringBoot 如何让指定的Bean先加载
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (160)时序收敛--->(10)时序收敛十
  • (39)STM32——FLASH闪存
  • (5)STL算法之复制
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (四)Linux Shell编程——输入输出重定向
  • (四)linux文件内容查看
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • (自用)gtest单元测试
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core Swagger 过滤部分Api
  • .net wcf memory gates checking failed