参考 人工智能数据与模型安全 from 复旦大学视觉与学习实验室
当一个安全问题发生时,我们首先要弄清楚是*“谁攻击了谁”*。这就涉及到人工智能安全问题中三类主要的利益相关者:攻击者、受害者和防御者。
攻击者是指对数据、模型及其相关过程,包括数据收集、模型训练和模型部署等,发起恶意监听、窃取、干扰、甚至破坏行为的个人或组织。
注意具体发动攻击的是一个程序,但是会有人类或者组织来操纵,有一种刺人而杀之,曰“非我者,兵也。”的感觉。
攻击方法是指攻击者用来对数据、模型及其相关过程,包括数据收集、模型训练和模型部署等,发起攻击的具体手段。
受害者是指由于受到数据或模型攻击而利益受到损害的数据或模型所有者、使用者或其他利益相关者。
与受害者密切相关的两个概念是:受害数据(victim data)和受害模型(victim model);
受害数据是指受到恶意攻击的训练或测试数据。
受害模型是指受到恶意攻击的人工智能模型。
防御者是指通过一定的防御措施保护数据或者模型免受潜在恶意攻击的个人或组织。
防御方法是指防御者用来对数据、模型及其相关过程,包括数据收集、模型训练和模型部署等进行保护,使其免受潜在攻击的具体手段。
下面定义攻防发生的“战场”,即威胁模型。
威胁模型定义了系统的运行环境、安全需求、所面临的安全风险、潜在攻击者、攻击目标和攻击方法、可能的防御策略、防御者可利用的资源等攻防相关的关键设置信息。
简而言之,威胁模型(threat model)是对真实场景的一种模拟,旨在清晰准确的划定攻击者与防御者之间边界,以便公平的开展攻防研究。数据与模型安全研究中常采用的威胁模型类型:白盒威胁模型、灰盒威胁模型和黑盒威胁模型。
目标数据是指攻击者在进行攻击时的数据对象。
替代数据是指攻击者自己收集的、可以用来替代目标数据的傀儡数据。
替代模型是指攻击者自己拥有的、可以用来替代目标模型的攻傀儡模型。
白盒威胁模型主要是对攻击目标对象来说的,是指攻击者具有对目标数据或目标模型的完全访问权限。只要切实可行,攻击者可以利用任何关于目标数据或目标模型的信息发起攻击。需要注意的是,“白盒”一般指的是访问权限,并不意味着攻击者就可以随意修改目标数据或目标模型。否则,攻击者可以任意破坏数据和模型,而不再需要设计特殊的攻击方法。
与白盒威胁模型不同,黑盒威胁模型假设攻击者只能通过API(application programming interface)对模型发起查询请求并获得返回结果,而无法获取训练数据、训练方法、模型参数等其他信息。
灰盒威胁模型介于白盒威胁模型和黑盒威胁模型之间,假设攻击者可以知道攻击目标的部分信息,如任务类型、数据类型、模型结构等,但是无法获得具体的训练数据或模型参数。
在介绍具体的攻击类型之前,我们需要深入理解机器学习模型本身的特点,因为模型特性决定了它可能存在的弱点和所面临的攻击。这里我们以深度学习模型(即深度神经网络)为例,介绍对机器学习模型不同层次的理解。
破坏型攻击的目的只有一个,那就是“破坏”。破坏型攻击可以破坏机器学习的任何一个关键环节,包括数据收集过程、训练数据、模型的训练过程、训练得到的模型、模型部署、模型测试、测试数据等等。任何攻击都有一定的动机,对破坏型攻击来说,其攻击动机包括:破坏竞争对手的人工智能系统、以破坏来勒索受害用户、无意间使用了具有破坏性的样本等等。
操纵型攻击的目的是控制数据或模型以完成攻击者特定的目的。相比破坏型攻击,此类攻击要求攻击者完成对数据或模型更精细化的控制,攻击难度更大。
窃取型攻击的目的是通过窥探数据、模型或者模型的训练过程,以完成对训练数据、训练得到的模型、训练算法等关键信息的窃取。
机器学习大致遵循“数据收集-模型训练-模型部署”三个步骤。
训练数据和测试数据是两类主要数据,训练数据服务于模型训练,测试数据服务于模型评估。
数据投毒攻击通过污染收集到的训练数据以达到破坏数据、阻碍模型训练的目的。数据投毒攻击可以通过不同的方式进行,比如攻击数据的收集过程、标注过程、或者直接污染收集到的数据。数据窃取通过对模型进行逆向工程,从中恢复出原始训练数据。
针对模型的攻击主要包括对抗攻击、后门攻击和模型窃取三大类,这三类攻击分别代表了破坏型、操纵性和窃取型这三类攻击目的。
对抗攻击的思想是让模型在部署使用阶段犯错,其通过向测试样本中添加微小的对抗噪声来让模型做出错误的预测结果。有意思的是,这种通过修改输入样本来干扰模型预测的攻击方式并不稀奇,反而会引发两个疑问。
(1) 既然攻击者有修改测试数据的权限,那么他/她就可以随意修改数据,那就不会仅限于微小修改。
(2) 攻击者可以修改测试数据这一假设会面临“动机”方面的挑战,即为什么模型的使用者作为受益者一方要让模型犯错呢?
根据攻击时机的不同,现有攻击大约可以分为训练阶段攻击和测试阶段攻击。
与模型训练紧密相关的是训练数据、训练算法、超参数和模型,这些元素都有被攻击的可能。在训练阶段,攻击者可以对数据进行投毒攻击,通过污染训练数据来破坏模型的正常训练。例如对训练数据进行增、删、改、换等不同形式的改动,以此来降低最终训练得到的模型的性能或者其他属性(如鲁棒性、隐私保护性等)。
目前针对训练算法和超参数的攻击并不多见,但是可以想象的是模型训练对这些参数,比如学习率、初始化参数、训练周期,是很敏感的。但是对训练超参的攻击需要很强的威胁模型,比如攻击者可以控制训练过程或者恶意修改训练代码。一个有意思的观察是,部分研究工作开源的代码存在复现难的问题,需要对训练算法和超参数进行进一步调优才能达到论文中报告的结果。对于轻量级的训练来说这可能影响不大,但是对于大规模训练算法来说,这就会带来大量的训练开销,大大增加研究费用。如果在开源代码中故意对超参数进行隐藏或者过度复杂化以增加复现难度,就可以被视为是一种训练超参攻击。这个攻击很有趣,很像当年我写的代码里面有死循环,被当成病毒干掉了;
相比训练阶段,不论从数据还是模型的角度来说,测试阶段的攻击更多样化。其中很大一部分原因是测试阶段模拟的是模型的真实使用情况,此时模型会以不同的形式接收外部请求,会面临多种多样的攻击。在数据方面,可以以模型为媒介对训练数据进行窃取和隐私攻击,还可以借助模型进行数据篡改和伪造。 在模型方面,可以通过修改测试样本对模型发起对抗攻击,或者通过查询API对模型进行窃取攻击。
本文只做简要记录,详细信息还是细细研究参考书人工智能数据与模型安全