3. 人工智能安全基础¶
本章主要介绍人工智能安全相关的概念,旨在帮助读者了解人工智能安全相关的背景知识,如安全问题所发生的环境、攻击者和防御者的目的、攻击和防御的常用手段等。 在实际场景中,数据和模型是密不可分的,其安全问题也往往会牵连发生。攻击者为了达到攻击目的,既可以攻击数据也可以攻击模型,同时防御者既要保护数据又要保护模型。鉴于此,本章的介绍将从攻击和防御两个方面进行,同时兼顾数据和模型两个角度,主要内容包括:基本概念、威胁模型、攻击类型和防御类型。
3.1. 基本概念¶
当一个安全问题发生时,我们首先要弄清楚是“谁攻击了谁”。这就涉及到人工智能安全问题中三类主要的利益相关者:攻击者、受害者和防御者。我们下面在对这三类参与者进行一个直观的定义。
定义 4.1. 攻击者。 攻击者是指对数据、模型及其相关过程,包括数据收集、模型训练和模型部署等,发起恶意监听、窃取、干扰、甚至破坏行为的个人或组织。
攻击者(attacker)又称为“对抗者”(adversary)。一方面,攻击者可以在不破坏现有数据和模型的情况下,通过监听和窃取获得关键信息,并从中获利。例如在联邦学习中,攻击者可以通过监听其他用户上传的模型(或梯度)信息而窃取对方的隐私数据。另一方面,攻击者也可以干扰和破坏模型的正常训练或部署使用,导致其发生性能下降和大规模决策错误。这些攻击严重时甚至可能会给大量用户带来生命和财产损失。值得注意的是,实际完成攻击的可能是一段程序(如一个攻击算法),但是真正的攻击者是程序背后的个人或组织,所以攻击者不等于攻击方法,二者是不同的概念。
定义 4.2. 攻击方法。 攻击方法是指攻击者用来对数据、模型及其相关过程,包括数据收集、模型训练和模型部署等,发起攻击的具体手段。
从上面的定义可以看出,攻击方法(attack method)是攻击者所使用的具体攻击手段,可能是一个软件、一段程序、一个算法。攻击方法往往受到现实条件的约束,在实际场景中,攻击者所掌握的信息往往是有限的,所以攻击者需要设计“精明”的攻击方法,最大化利用已有条件来完成高效的攻击。高效攻击方法的设计毋庸置疑是攻击研究中最核心的部分,此外,还需要确保攻击的隐秘性,避免暴漏给防御者。
定义 4.3. 受害者。 受害者是指由于受到数据或模型攻击而利益受到损害的数据或模型所有者、使用者或其他利益相关者。
受害者(victim)也往往是“被攻击者”。在实际场景中,受害者可能是数据或模型所有者,如个人、企业、政府机构等,也可能是数据或模型的实际使用者,如普通用户。在定义受害者的时候,有必要跳出数据或模型所有者的局限,充分考虑其他利益相关者。这是因为人工智能系统往往服务于大量的普通用户,当安全问题发生时,最先受到利益损害的往往是普通用户而非数据或模型所有者。比如当人脸识别模型发生数据泄漏时,泄露的是百万用户的人脸数据和隐私。再比如,当自动驾驶系统受到攻击而发生交通事故时,首先受到威胁的是乘客以及行人的生命安全。在人工智能广泛使用的今天,其安全问题已不再是一个人或者一个公司的问题,其影响往往是极其广泛的、全社会性的,很多时候可能很难去认定谁才是真正的受害者,这也给人工智能相关法律法规的制定带来巨大挑战。
与受害者密切相关的两个概念是:受害数据(victim data)和受害模型(victim model)。受害数据和受害模型是具体受到攻击的对象,如人脸数据、医疗数据、自动驾驶系统等,可简单定义如下:
定义 4.4. 受害数据。 受害数据是指受到恶意攻击的训练或测试数据。
定义 4.5. 受害模型。 受害模型是指受到恶意攻击的人工智能模型。
介绍完攻击者和受害者,下面我们介绍防御者。防御者可以是受害者本身,也可以是独立于攻击者和受害者之外的第三方。一般来说,如果受害者主动采取了一定的防御措施,那么受害者也就变成了防御者,而如果受害者没有采取任何防御措施,那么受害者就不能算是防御者。
定义 4.6. 防御者。 防御者是指通过一定的防御措施保护数据或者模型免受潜在恶意攻击的个人或组织。
防御者(defender)和攻击者之间的关系是不对等的,因为攻击者只需要单点攻破一个系统,而防御者需要全面防御所有的潜在攻击。这也就是说相比攻击而言,防御任务更具有挑战性,防御者必须利用一些可以利用的资源构建防御策略。目前领域内大部分的研究工作都面临这种单防御者困境,即一个防御者需要防御所有的攻击方法,包括已有的甚至是未知的攻击方法。在未来的研究中,我们迫切的需要突破单防御者困境,解决攻防之间的不均衡性。类比攻击方法,我们可以定义防御方法如下:
定义 4.7. 防御方法。 防御方法是指防御者用来对数据、模型及其相关过程,包括数据收集、模型训练和模型部署等进行保护,使其免受潜在攻击的具体手段。
防御方法(defense method)可以是一个软件、一段程序、一个算法或某种特殊设置(如一种安全协作协议)。当前防御方法的研究普遍受攻击方法的约束,也就是会直接采用想要防御的攻击的设置。在防御和攻击极其不对等的情况下,防御需要突破这样的限制,需要充分挖掘利用攻击者无法获取的信息,占据一定的先验优势。
定义了攻击者和防御者,下面定义攻防发生的“战场”,即威胁模型。
定义 4.8. 威胁模型。 威胁模型定义了系统的运行环境、安全需求、所面临的安全风险、潜在攻击者、攻击目标和攻击方法、可能的防御策略、防御者可利用的资源等攻防相关的关键设置信息。
简而言之,威胁模型(threat model)是对真实场景的一种模拟,旨在清晰准确的划定攻击者与防御者之间边界,以便公平的开展攻防研究。数据与模型安全研究中常采用的威胁模型类型:白盒威胁模型、灰盒威胁模型和黑盒威胁模型。这些威胁模型在章节4.2中有详细的介绍。不同类型的威胁模型揭示的是人工智能系统不同层面的安全风险,具有不同的实际意义。然而,现实场景中的攻防往往是没有边界的,是一个“自由竞技场”,攻击者和防御者都最大化他们所掌握的信息和资源,并不会对他们所采取的方法设限。如何在这种开放式威胁模型下开展攻防研究仍然是一个巨大的挑战。
下面介绍与威胁模型相关的几个概念:目标数据、目标模型、替代数据和替代模型。
定义 4.9. 目标数据。 目标数据是指攻击者在进行攻击时的数据对象。
目标数据(target data)一般是针对数据攻击来说的,比如投毒攻击、数据窃取攻击等,在此类攻击下,要投毒或者窃取的数据集就是目标数据。对于数据攻击来说,攻击者是无法接触整个目标数据集的,否则攻击就变得极其容易(比如“删库跑路”),攻击的性质也发生了变化,即从外部攻击变成了内部攻击。这类攻击可以通过严格控制数据访问权限来避免,通过多方数据备份来补救。在绝大多数情况下,攻击者最多也只能访问极小一部分目标数据,比如1%或0.1%的训练数据,甚至不能访问任何目标数据。
定义 4.10. 目标模型。 目标模型是指攻击者在进行攻击时的模型对象。
目标模型(target model)一般是针对模型攻击来说的,是指实际遭受攻击的模型。实际上,判断攻击的目标是数据还是模型本身就是一件有难度的事情。有些模型攻击方法,比如后门攻击,也可以通过数据投毒进行,但是它们攻击的终极目标是操纵模型的预测结果,所以最终的攻击目标应该是模型,而数据只是一种手段。再比如,对抗攻击通过扰动测试数据来让模型犯错,也是对数据进行了攻击,但最终的目标还是模型。相反,数据窃取攻击通过跟模型交互来达到数据窃取的目的,所以攻击目标是数据而不是模型。在实际的研究过程中,我们先要弄清楚攻击的真正目标是什么,才能制定对应的防御策略。
定义 4.11. 替代数据。 替代数据是指攻击者自己收集的、可以用来替代目标数据的傀儡数据。
替代数据(surrogate data)或傀儡数据(puppet data)是在某些威胁模型(如黑盒威胁模型)下,即攻击者无法访问目标数据的情况下,攻击者收集的用来替代目标数据、近似目标数据分布的辅助攻击数据。攻击者可以在替代数据上训练一个替代模型来设计和改良攻击方法,提高攻击效果。除了自我收集,替代数据也可以用大量存在的公开数据集,或者生成数据。比如,数据窃取攻击可以利用随机生成的替代数据来对目标模型发起查询,并根据模型的返回结果不断更新替代数据,并最终复原目标模型的原始训练数据。替代数据的规模可以很小,但是往往能够大幅提升攻击效果。替代数据的收集需要对要攻击的目标领域有一定的先验知识,比如是哪一类的任务,而这样的先验知识是很容易获得的。
定义 4.12. 替代模型。 替代模型是指攻击者自己拥有的、可以用来替代目标模型的攻傀儡模型。
跟替代数据类似,替代模型(surrogate model)是攻击者在无法获得目标模型时的一种替代,用来辅助设计和改进攻击算法。替代模型可以在替代数据上训练得到,也可以直接下载开源模型,还可以借助一定先验知识,在少量专有数据上做进一步微调,使其尽可能的接近目标模型。替代模型与目标模型越接近,所设计出来的攻击算法迁移性就越好。
一般来说,替代数据或替代模型的概念都是对攻击来说的,而防御则没有这些概念。这主要是因为防御者一般都假设对要保护的数据和模型具有完全访问权限。未来,防御者可能是第三方机构,并不具备完全访问数据和模型的权限,也会需要借助替代数据或模型设计更高效的防御方法。在这种情况下,我们可以将防御者所使用的替代数据和替代模型分别称为“辅助数据”(auxiliary data)和“辅助模型”(auxiliary model)。
3.2. 威胁模型¶
如定义4.8所述,威胁模型是对真实攻防场景的一种模拟,旨在清晰的定义攻击者、防御者以及双方的攻防规则。但是与真实开放的对抗环境相比,威胁模型在很多方面还是采用了一定的假设和约束,以便公平的进行攻防对抗。下面介绍几类经典的威胁模型。
3.2.1. 白盒威胁模型¶
白盒威胁模型主要是对攻击目标对象来说的,是指攻击者具有对目标数据或目标模型的完全访问权限。只要切实可行,攻击者可以利用任何关于目标数据或目标模型的信息发起攻击。需要注意的是,“白盒”一般指的是访问权限,并不意味着攻击者就可以随意修改目标数据或目标模型。否则,攻击者可以任意破坏数据和模型,而不再需要设计特殊的攻击方法。白盒威胁模型是一种最强的假设,会大大降低攻击的难度,也与现实场景差别较大。所以更实际一点的攻击方法通常在白盒威胁模型的基础上添加一些限制,以约束攻击的自由度,增加攻击难度,同时缩小跟现实场景的差距。
在已有研究中,白盒威胁模型主要被模型攻击所采用。白盒模型攻击假设攻击者可以获得模型参数、训练数据、训练方法以及训练超参数等所有关键信息。白盒模型攻击往往用来揭示模型的脆弱性,评估模型的安全风险,衡量模型在“最坏”情况下的表现。白盒模型攻击之间比拼的不再是简单的“攻击成功与否”,而是攻击成功率的具体大小,以及能否躲避防御方法。一些数据攻击方法,如数据投毒,也会采用白盒威胁模型,即攻击者可以利用整个训练数据集生成更高效的有毒样本。但是投毒攻击往往会限制攻击者可以控制的数据比例,即攻击者只可以改变一小部分训练数据或者向训练数据中添加少部分新的毒化数据。
与攻击相反,防御者一般都默认白盒威胁模型,即防御者完全掌握训练数据、模型参数以及训练过程,但是防御者也无法预知所有可能的攻击。在实际场景中,防御者往往只能根据已知攻击设计防御方法,同时要求所设计的防御方法可以防御未知攻击和适应性攻击(adaptive attack)。未知攻击是指新的、未被防御方法学习过的攻击方法,而适应性攻击是指专门针对防御方法的特定攻击。从这一点上来说,防御工作采用的威胁模型更接近后面要介绍的灰盒模型。
3.2.2. 黑盒威胁模型¶
与白盒威胁模型不同,黑盒威胁模型假设攻击者只能通过API(application programming interface)对模型发起查询请求并获得返回结果,而无法获取训练数据、训练方法、模型参数等其他信息。也就是说,黑盒攻击只能使用模型,而无法知道模型背后的细节信息。黑盒威胁模型是最接近现实场景的一种攻防假设,即模型和训练数据都是保密的,只有模型在部署使用后,攻击者才有机会通过API进行攻击。
在黑盒威胁模型下,攻击者只可以利用模型的返回结果设计攻击方法,大大增加了攻击的难度。为了适当降低攻击难度,很多黑盒攻击方法对API的使用次数并没有做任何限制。这样可以在提高攻击成功率的同时最大限度的模拟现实场景,虽然大部分API都有访问次数和频率限制。针对黑盒攻击的防御工作依然假设防御者完全控制训练数据、模型参数以及训练过程,但是无法预知所有的黑盒攻击,这实际上是一种白盒或灰盒威胁模型。未来当出现第三方防御时,比如防御者在不直接接触数据或模型的情况下提供防御服务,防御也会需要黑盒威胁(防御)模型。
从安全性评测方面来说,黑盒安全性评测比白盒安全性评测的可实施性更高,因为只需要远程调用模型就可以完成评测,而不需要用户上传数据或者模型,这使独立第三方安全性评估和监管成为可能。黑盒安全性评测与黑盒攻击类似,但是假设比黑盒攻击弱,评测者可以拥有一些先验知识和模型所有者提供的部分数据。人工智能模型的安全性评测研究还处于萌芽期,存在大量的研究机会。
3.2.3. 灰盒威胁模型¶
灰盒威胁模型介于白盒威胁模型和黑盒威胁模型之间,假设攻击者可以知道攻击目标的部分信息,如任务类型、数据类型、模型结构等,但是无法获得具体的训练数据或模型参数。与黑盒威胁模型类似,灰盒威胁模型也与现实场景非常接近,因为攻击者所知道的先验信息往往可以通过开源信息获得,尤其是当今人工智能大量采用类似开源数据集和预训练模型,正在发生严重的趋同效应,这也导致先验信息更容易获得。
根据灰盒威胁模型的定义,现有迁移攻击方法大都属于灰盒攻击方法而非黑盒攻击方法。这是因为,迁移攻击需要借助替代数据或者替代模型生成攻击,而替代数据往往假设跟目标数据有一定的分布重叠性、替代模型跟目标模型具有相似子结构,这些都是灰盒威胁模型里的先验知识。只有当迁移攻击可以利用完全不相关的替代数据或替代模型完成攻击的时候,迁移攻击才真正属于黑盒攻击。
先验知识的挖掘和利用是灰盒攻击的关键,是攻击者会全力探索的攻击点。正所谓“知己知彼,百战不殆”,大量搜集关于攻击目标的先验信息会大大提高攻击成功率。而在防御方面,针对灰盒攻击的防御跟白盒防御所需要的策略并不相同,在很多情况下只需要有针对性的掩盖或者扰乱可能暴露的先验信息即可。
3.3. 攻击类型¶
近年来,针对人工智能数据和模型的攻击被大量提出,揭示了当前人工智能实践在数据收集、模型训练、模型部署等方面存在的安全问题。相关研究比如对抗攻击、后门攻击、隐私攻击等已经快速成长为一个热门的研究方向。本章节尝试从攻击目的、攻击对象和攻击时机三个角度对现有攻击进行分类,并介绍每一类攻击的主要思想。
在介绍具体的攻击类型之前,我们需要深入理解机器学习模型本身的特点,因为模型特性决定了它可能存在的弱点和所面临的攻击。这里我们以深度学习模型(即深度神经网络)为例,介绍对机器学习模型不同层次的理解。
机器学习模型是一个学习器。机器学习模型可以在学习算法,如有监督学习算法、无监督学习算法等的指导下,从给定训练数据中学习潜在的规律,并能将学习到的规律应用到未知数据上去,这是对机器学习模型最朴素的理解。学习器存在一系列共同的弱点,比如当任务定义、训练数据、学习算法、训练时长等任何一个环节出了问题,最终得到的模型就会出现性能下降、被恶意攻击等各种风险。所以攻击者可以攻击这其中任何一个环节,以此来阻止模型的正常训练、破坏模型的泛化、向模型里安插后门等等。破坏学习最有效的方式就是提供错误的知识,所以针对训练数据的攻击可能会成为最有效的攻击。
机器学习模型是一个计算器。训练好的机器学习模型可以理解为是一个计算器,其可以对输入样本进行一系列复杂的计算并最终输出预测结果。比如,深度神经网络可以理解为一个多层的计算器,每层负责计算对应层次的转换。而计算器普遍都受计算精度(32位/64位)和微小扰动的影响。比如,在32位浮点数下鲁棒的模型,在64位浮点数下不一定鲁棒。此外,计算器容易受微小扰动的干扰,比如微小的图片旋转,可以得出完全不同的计算结果,性能的稳定性较差。由于机器学习模型的输入往往是多个样本(一批样本),输出也不是单维度的,所以不同维度的计算结果之间也会产生相互干扰。另外,计算器跟具体的任务一般都不是唯一绑定的,也就是说为一个任务涉及的计算器也有可能会被劫持来服务于另一个非法的任务。这都是作为一种计算器,机器学习模型可能存在的安全问题。
机器学习模型是一个存储器。机器学习模型在训练数据上不断训练的过程也是其不断学习规律、不断存储信息的过程。很多研究表明深度学习模型具有强大的记忆能力,会记住训练数据中某些特定的样本、敏感属性、敏感特征和标签等等。随着训练的进行,模型会将越来越多的训练数据信息存储在模型参数里,以便在推理阶段通过重新组合的方式得到正确预测结果。从这个角度来理解,泛化只是记忆碎片的重组。既然机器学习模型是一个存储器,那么其存储的信息就一定可以通过某种方式“提取”出来,导致隐泄露攻击、数据窃取攻击等安全问题的出现。有时候可能仅通过跟模型交互就可以从模型中逆向出原始训练数据的信息。
机器学习模型是一个复杂函数。机器学习模型可以被理解为一个将输入空间映射到输出空间的复杂函数。比如,深度神经网络是一个层层嵌套、极其复杂的非线性复合函数。这样的函数存在很多特性,比如因为错误会逐层累积所以微小的输入变化可能会导致巨大的输出变化。模型训练的过程就是在训练数据点周围进行局部函数拟合的过程,会在高维空间形成“决策边界”(decision boundary)和对应的“损失景观”(loss landscape),而函数的整体又会随着训练的进行不断变形,直至稳定到一个可以使整体损失最小的形式。由于整个函数完全是由训练数据点定义的,所以会容易过拟合到训练数据,而整个函数的泛化性能又由测试数据点在深度特征空间距离训练数据点的远近而决定。对深度神经网络来说,函数的每一层都尝试将数据点映射到一个统一划分、均匀覆盖的空间,以确保最终的泛化性能。从这个角度来讲,机器学习模型会对特定(无法正常映射到统一空间)的输入噪声敏感,而这样的噪声很容易通过一阶导数找到(比如对抗样本)。高维的输入和输出空间决定了其难以通过有限训练数据点达到空间的完美覆盖,导致空间存在大量无法被探索到的高维口袋(high-dimensional pocket)。这样的函数也决定了其内部会存在一些近路(shortcut),在这些路径上输入和输出之间距离很近,不需要复杂的计算即可直接得出结论;同时也会存在一些死胡同(dead end),无论怎么计算也得不到某类输出。高维的非线性空间给攻击和操纵模型留下了巨大的空间。
大部分现有针对人工智能数据和模型的攻击都可以从以上四个角度找到对应的动机。围绕这些理解,也可以启发新的攻击类型,暴露机器学习模型更多地弱点。下面将以不同的分类方式对现有攻击进行介绍,需要注意的是,这些分类方式并不是唯一或者完备的。一般来说,当需要从某一个特定的角度去分析攻防问题的时候,我们可以提出进行相应的分类方式,但是需要分类标准可以合理的解释并具备一定的排他性。
3.3.1. 攻击目的¶
根据攻击目的的不同,针对人工智能数据和模型的攻击可以分三种类型:破坏型攻击(disruptive attack)、操纵型攻击(manipulative attack)和窃取型攻击(stealing attack)。
3.3.1.1. 破坏型¶
破坏型攻击的目的只有一个,那就是“破坏”。破坏型攻击可以破坏机器学习的任何一个关键环节,包括数据收集过程、训练数据、模型的训练过程、训练得到的模型、模型部署、模型测试、测试数据等等。任何攻击都有一定的动机,对破坏型攻击来说,其攻击动机包括:破坏竞争对手的人工智能系统、以破坏来勒索受害用户、无意间使用了具有破坏性的样本等等。
针对数据的破坏型攻击可以以数据投毒的方式进行,通过上传“毒化”数据来破坏模型的正常训练,使整个模型或者模型的某个方面失去功能。可以想象,如果有大量用户往网上上传有毒数据,尤其是当有毒数据会占据所收集数据的大部分的时候,会对当今人工智能产生巨大威胁,以至于难以收集到干净的数据进行模型训练。目前,数据投毒攻击只是在一些公开数据集上进行测试,但是未来不排除出现大规模数据投毒攻击的可能性。根据具体的应用场景,投毒的方式和目的可能有所不同,比如投毒攻击联邦学习、投毒攻击生成模型、投毒攻击数字世界(元宇宙)等。在网络世界里,一方面,发现和判定投毒攻击的难度很大,另一方面,对投毒攻击者的追责也不容易执行。这些挑战都会导致更多投毒攻击的出现,使其成为当今人工智能所面临的一个重要安全问题。
此外,投毒攻击不仅限于简单的数据投毒,一些西方媒体惯用思想投毒,在各类新闻报道中故意扭曲事实,不断的给大众植入“有毒”的偏见。如何利用机器学习发现这样高级的投毒攻击行为,揭示其操纵大众思想的丑恶行径也是值得正义人工智能从业者思考的问题。实际上,世界上一些顶级研究机构已经开始进行类似的研究:raw-latex:cite{d2022machine}。
针对模型的破坏行为也可以通过破坏数据(比如数据投毒)来完成,当然其他的破坏型攻击也有很多种,比如直接修改模型的参数、生成专门针对模型的对抗样本等。不同的攻击方式需要不同的威胁模型,对应不同的实施难度。比如,攻击者可以在灰盒或者黑盒威胁模型下生成对抗样本,让模型做出错误的判断,借此绕过身份验证或者干扰自动驾驶汽车等。对抗样本可以通过向干净样本中添加微小、人眼不可见的噪声而得到,也可以生成在物理世界中也具有对抗性的对抗补丁。此外,在机器学习模型本身就缺乏泛化性的情况下,一些投毒攻击可以彻底破坏模型在某些方面的功能,比如让物体识别模型无法识别某类物体、自动驾驶系统无法在某种颜色的灯光下工作等。这类破坏型攻击实际上很难察觉,因为相关问题也有可能是模型自身泛化能力不足造成的。
当今人工智能开源数据和模型的下载量巨大,有一些还被政府机构所使用。如果这些所谓的“开源”数据和模型携带恶意的攻击,那么可能会引发广泛的负面影响。已经有一些研究工作展示了此类攻击的可能性,比如Wang等人:raw-latex:`cite{wang2021evilmodel}`发现一个178M的AlexNet模型可以携带36.9M的恶意软件,而这只会带来1%的准确率损失。这类攻击利用了深度神经网络的“存储器”属性。此外,需要警惕“趣味性”破坏攻击的出现,一旦攻击变得极具趣味性,则可能会吸引大量的互联网用户参与其中而忽略攻击本身所带来的危害。这在人工智能法律法规不健全的情况下,可能会引发大规模的攻击,产生负面的社会影响,且难以追责。一个现实的例子是微软在2016年发布的聊天机器人Tay,在Twitter上线仅一天即被广大用户“教坏”,开始发表攻击性和种族歧视言论。
3.3.1.2. 操纵型¶
操纵型攻击的目的是控制数据或模型以完成攻击者特定的目的。相比破坏型攻击,此类攻击要求攻击者完成对数据或模型更精细化的控制,攻击难度更大。理论上来讲,操纵型攻击也可以攻击机器学习的任何一个环节,但这些攻击的结果都是完成对目标模型的控制,所以属于一种模型攻击。此类攻击的动机比破坏型攻击更多样化,包括但不限于:让模型做出特定的预测从而可以躲过垃圾邮件过滤、身份审查、海关检查等;盗用别人的身份进行刷脸支付;得到指定的医疗诊断结果(比如患有某种疾病)进行保险欺诈;操纵智能体(如自动驾驶汽车、送货无人机等)等。操纵型攻击还可以完成破坏型攻击的攻击目标,此时只需要将攻击目标设置成破坏攻击的目标即可。
针对数据的操纵型攻击研究相对较少,大部分以前面介绍的破坏性和后面将要介绍的窃取型攻击为主。从动机上来说,如果获取了对数据的控制权,则基本上就等于完全拥有了数据。这是一个极强的假设,在实际中可能不太会发生,但不排除未来会出现专门对数据的操纵型攻击。比如,通过向数据中添加新样本来尝试往某一个方向扰乱数据的分布。数据控制是一个比较广义的概念,除了用于攻击还可以用来进行数据保护。比如控制数据的使用次数,使其在进行一定次数的模型训练后失去作用,或者对数据进行使用授权控制,没有获得授权的用户则无法使用数据。更严格的控制可以让个人数据被收集后无法用于模型训练,从而达到保护个人数据(如自拍照)的目的,比如“不可学样本”(unlearnable examples)相关的研究:raw-latex:cite{huang2020unlearnable}。
针对模型的操纵型攻击主要是后门攻击,其通过数据毒化或者模型篡改的方式向模型中注入后门触发器,以便在推理阶段控制模型做出对攻击者有利的预测结果。实际上,达到对模型的精准控制并不一定需要提前注入后门。对测试样本直接修改也可以达到同样的效果,比如有目标对抗攻击。这样的攻击方式反而会更灵活,因为不需要访问训练数据、训练过程、或者训练后的模型。当然,有目标对抗攻击对攻击者的要求比较高,因为它需要掌握先进的对抗攻击技术。相比之下,后门攻击的实施门槛较低,只要提前将后门触发器注入到目标模型中,任何拥有后门触发器的人都可以发起攻击。
不论是针对数据还是模型,要达到一定精度的控制就得需要对应级别的威胁模型。事实上,在现实场景中达到精准控制是及其困难的,需要物理可实现的攻击,比如后门攻击和对抗攻击要在实际场景中完成攻击,需要将后门或者对抗图案以实物的形式呈现出来,如妆容、穿着、3D打印的物体等。现有研究只能在真实物理环境下完成破坏攻击,尚不能达到精准的操纵攻击。鉴于操纵型攻击具有很强的目的性,预计未来会有更多操纵型攻击出现,暴漏人工系统更多方面的可被操纵性和脆弱性。
3.3.1.3. 窃取型¶
窃取型攻击的目的是通过窥探数据、模型或者模型的训练过程,以完成对训练数据、训练得到的模型、训练算法等关键信息的窃取。不可否认的是,数据和模型是人工智能最核心的两种资源,是宝贵的人工智能资产。很多人工智能模型,尤其是大规模的预训练模型,需要大量的训练数据、昂贵的计算资源和关键的训练技巧才能达到业界最优的性能。比如谷歌发布的自然语言处理(natural language processing,NLP)大规模预训练模型BERT的训练费用最高可达160万美元:raw-latex:cite{sharir2020cost}。很多时候,仅仅是收集训练数据本身也需要耗费大量的人力物力。再加上大模型的巨大商业价值,攻击者有很强的动机去窃取训练数据、大模型、甚至训练技巧,从而牟取非法利益。
针对数据的窃取攻击有很多种,包括窃取整个训练数据集的模型逆向攻击、推断某个样本是否是训练数据集成员的成员推理攻击、以及窃取敏感信息和属性的隐私类攻击等。这些攻击可以通过模型的参数或者仅仅是查询模型来完成对相关信息的窃取。一般来说,攻击者掌握的先验信息越多,所能逆向的数据和信息就越多。比如联邦学习中的成员推理攻击可以以全局模型为媒介获得其他用户的梯度信息,进而以很高的精准度窃取其他用户的训练数据。虽然已有窃取攻击并不能完全窃取原始训练数据集,但是窃取的数据足以训练一个性能还不错的模型,即信息泄露已经发生。在一些应用场景(如人脸识别)下,数据窃取攻击可能会导致大量用户隐私信息的泄露。
对模型的窃取可以通过与模型进行交互,即向模型中输入不同的样本并观测其输出的变化,进而采用知识蒸馏的方式训练一个跟目标模型性能相近的模型。由于机器学习模型可以理解为一个复杂的函数,而任何函数都是可以被近似的,所以模型窃取攻击能成功也就不足为奇了。现有攻击大部分针对的是功能窃取,其目的是得到一个跟目标模型功能相近的模型。也有一些工作将深度学习模型看做一个复杂的函数,通过大量的随机输入,对目标模型进行函数层面的高精度近似,此类工作又称为模型近似,此类攻击比功能窃取更加精准但是需要大量的模型查询。未来会出现更多样化的模型窃取攻击,如窃取模型的结构、窃取部分功能(攻击者只对某个子任务感兴趣)、窃取模型子结构、窃取模型的某些属性(如鲁棒性)等等。
由于窃取攻击可以带来巨大的经济利益,所以随着人工智能的不断发展,可能会出现越来越多的窃取攻击,比如窃取训练数据中最核心的部分、窃取训练算法、窃取训练超参、窃取模型的中间结果、窃取模型结构等。由于窃取攻击往往伴随着大量敏感信息的泄露,所以极易给国家安全带来威胁,难以想象泄露一个国家大量用户的隐私数据(如电话号码、银行账号、转账记录、社会保障号码等)会带来多大的负面影响。所以,保护人工智能不受数据和模型窃取攻击是需要长期关注的核心安全问题。
3.3.2. 攻击对象¶
机器学习大致遵循“数据收集-模型训练-模型部署”三个步骤。在此基本三步模式下,机器学习根据实际学习任务的不同又分为不同的学习范式,包括有监督学习、无监督学习、强化学习三个主要学习范式和联邦学习、增量学习、对比学习、迁移学习等不同的细分学习范式。数据和模型是这些范式中最核心的两个部分,也是收到最多攻击的两个对象。在不同的范式下,数据和模型攻击的具体形式不同,但是攻击目标相对确定。上一小节中介绍了不同攻击的目的和动机,本小节将围绕攻击对象,即数据和模型,进行另外一个角度的介绍。
3.3.2.1. 数据¶
训练数据和测试数据是两类主要数据,训练数据服务于模型训练,测试数据服务于模型评估。现有数据攻击大多是对训练数据的攻击,对测试数据的攻击则相对较少。这主要是由于训练数据是训练高性能机器学习模型的关键,具有巨大的商业价值。而测试数据是对真实环境的模拟,所以很多模型攻击(如对抗攻击)通过扰动测试样本的方式让模型犯错,最终的攻击对象是模型而非测试数据本身。 在当今机器学习范式中,训练数据和模型是紧密关联的,对数据的攻击往往会对模型产生影响(如投毒攻击),而通过模型也可以实施数据攻击(如数据窃取)。值得一提的是,不同类型的模型与数据间的关联方式并不相同,深入理解目标数据和目标模型间的关联模式可以启发设计新型的攻击方法。
主流机器学习模型,如深度神经网络,往往需要大量的训练数据才能达到不错的性能。所以,训练数据的质量,比如数据纯净度、类别均衡度、标注准确度、与真实数据分布之间的吻合度等,直接决定了模型的泛化性能。但是收集高质量的训练数据并不是一件容易的事情,比如在某些领域如医疗诊断和缺陷检测,关键类别(如患有某种罕见病或者有缺陷的样本)的数据极其稀少。即使常见的数据也需要投入大量的人力物力进行收集、筛选和标注,耗费巨大。此外,某些特定数据比如人脸数据则需要授权采集,未经授权的公司或个人不得非法采集。所以,高质量的训练数据具有巨大的商业价值,成为很多攻击者的攻击对象。针对训练数据的攻击主要包括数据投毒、数据窃取、隐私攻击和数据篡改和伪造。
数据投毒攻击通过污染收集到的训练数据以达到破坏数据、阻碍模型训练的目的。数据投毒攻击可以通过不同的方式进行,比如攻击数据的收集过程、标注过程、或者直接污染收集到的数据。数据窃取通过对模型进行逆向工程,从中恢复出原始训练数据。数据窃取攻击利用的是机器学习模型的存储器性质,因为既然模型可以在训练过程中将数据逐步学习到模型内部,也一定会存在一个逆过程逐步从模型中反推回训练数据。不过,现有数据窃取方法的计算开销很高,而且窃取效果并不理想。即便如此,窃取得到的数据还是可以用来训练一个性能不错的模型,这说明数据中的有用信息还是发生了大量泄露。从防御的角度来说,如何确保模型不能被逆向,或者使逆向得到的数据无法用来训练模型是一个研究难题。值得一提的是,数据窃取或者模型逆向与知识蒸馏(knowledge distillation,KD)有一定的联系,因为无数据知识蒸馏(data-free knowledge distillation)过程中得到的中间数据就是一种逆向数据。
随着互联网和元宇宙的进一步发展,会有越来越多的个人隐私数据(如自拍照、带有位置信息的照片)发布在网上,这难免会催生非法窃取和售卖个人隐私数据的黑色产业链。而人工智能模型的广泛使用以及基于互联网数据的大规模预训练都有可能会泄露更多的个人隐私信息。比如,基于医疗大数据训练的疾病诊断模型可能(被成员推理攻击)泄露关于某人得了某种难以启齿的疾病的信息(即受害者的医疗影像出现在了阳性训练样本里)。再比如,深度学习推荐模型可能会泄露某个用户的个人偏好、购物记录、或者位置信息。由于未来机器学习模型大都会在海量数据上训练,所以一旦某类信息发生泄露就可能会影响大量用户,极易造成大范围的影响。
人工智能是一把双刃剑,在带来技术变革的同时也可能会被滥用,比如被用来篡改和伪造数据。由于深度学习强大的特征学习和数据生成能力,由深度学习模型篡改和伪造的数据已经可以达到连人类都难以辨别真伪的程度。虽然提出数据修改和生成技术的初衷是帮助修复、美化和弥补数据,甚至解决某些场景下数据匮乏的问题,但是这些技术却频频被用来生成极其逼真的篡改和虚假数据。例如,针对知名人物(如美国前总统奥巴马和特朗普、英国女王等)的合成视频在网上大量传播,让很多人信以为真,造成了恶劣社会影响。此类信息不但会影响人们辨别是非的能力,挑战大众的道德底线,甚至可能会影响一个国家的政治形势,引发不必要的仇恨与冲突。数据篡改和伪造的目标比较直观,一般是为了达到某种篡改结果或伪造目标,如从图像中移除某个人或者生成某个名人的演讲视频等。这些目标往往可以转换为一个可优化的目标,通过机器学习轻松实现。而检测篡改和伪造的数据却是相当的困难,因为篡改和伪造的形式多种多样,伪造手段多种多样,即使是真实数据也有可能因为包含噪声而被误认为是“假”的。如何检测和防止数据篡改和伪造将会成为人工智能发展过程中长期存在的痛点问题。
3.3.2.2. 模型¶
针对模型的攻击主要包括对抗攻击、后门攻击和模型窃取三大类,这三类攻击分别代表了破坏型、操纵性和窃取型这三类攻击目的。下面将对这三类攻击的主要思想和其所对应的对机器学习模型的不同层次的理解进行介绍。
对抗攻击的思想是让模型在部署使用阶段犯错,其通过向测试样本中添加微小的对抗噪声来让模型做出错误的预测结果。有意思的是,这种通过修改输入样本来干扰模型预测的攻击方式并不稀奇,反而会引发两个疑问。首先,既然攻击者有修改测试数据的权限,那么他/她就可以随意修改数据,那就不会仅限于微小修改。其次,攻击者可以修改测试数据这一假设会面临“动机”方面的挑战,即为什么模型的使用者作为受益者一方要让模型犯错呢?实际上,对抗样本(攻击)的出现是为了更好的理解深度学习模型。但是随着此方向研究的增多,研究者逐渐把对抗样本视为是一种对深度学习模型的安全威胁,并在实际场景(如自动驾驶、物体识别等)中进行了威胁性验证。本质上,对抗样本只是代表了一种“最坏结果”(worst-case result),即模型最不能处理的一类数据,标记了模型的性能下界。
后门攻击通过向目标模型预先注入后门触发器的方式来控制模型在推理阶段的预测结果。从某种程度上来说,后门攻击是一种特殊形式的有目标对抗攻击,即“通用有目标对抗攻击”(universal targeted adversarial attack,UTAA)。“通用”是指整个类别或者数据集都可以通过单个扰动图案进行攻击,而“有目标”是指模型在被攻击后会预测一个特定的错误类别。但二者还是有一定区别的,后门攻击通过预埋触发器的方式可以大大提高测试阶段的高攻击成功率,而UTAA只能在测试阶段生成攻击,成功率难以保证。后门攻击的触发器注入可以以不同的方式实现,比如数据投毒、篡改训练过程、修改模型参数等。实际上,相比对抗攻击来说,后门攻击的威胁性可能更大。从“机器学习模型是一个存储器”的角度来说,其存储能力是巨大的,很容易携带大量隐蔽的后门触发器。这就意味着很多看似“友善”的数据或者模型共享都有可能存在后门攻击。这比对抗攻击更隐蔽,影响也会更广泛,比如对一个上游预训练模型的攻击可能会影响所有下游任务。
模型窃取攻击通过模型部署后的开放接口(比如查询API)对其推理行为进行模仿和近似,以此达到功能和性能窃取的目的。攻击的难度和效果跟模型返回值的类型息息相关,模型返回的信息越丰富,泄露的信息也就越多,窃取也就会越准确。在实际场景中,模型的查询次数和频率都会收到限制或者按需收费,大量的查询操作不但提高攻击代价而且会增加被暴露的几率。所以模型窃取需要最大化的降低窃取所需要的查询次数,或者采取更隐蔽的女巫攻击(sybil attack),通过伪造身份来发起多点攻击。模型窃取的设置跟知识蒸馏类似,知识蒸馏使用大的教师(teacher)模型去指导小的学生(student)模型,从而提高学生模型的性能。在模型窃取设置下,要窃取的目标模型即是教师模型,而窃取得到的模型则是学生模型,两个模型可以通过查询交互,将目标模型的功能蒸馏到窃取模型中。模型窃取是对人工智能知识产权的一种侵犯,迫切需要建立完善的保护方法体系和法律法规来解决相关问题。
3.3.3. 攻击时机¶
根据攻击时机的不同,现有攻击大约可以分为训练阶段攻击和测试阶段攻击。下面将从这个两个角度对现有攻击进行介绍。
3.3.3.1. 训练阶段¶
与模型训练紧密相关的是训练数据、训练算法、超参数和模型,这些元素都有被攻击的可能。在训练阶段,攻击者可以对数据进行投毒攻击,通过污染训练数据来破坏模型的正常训练。例如对训练数据进行增、删、改、换等不同形式的改动,以此来降低最终训练得到的模型的性能或者其他属性(如鲁棒性、隐私保护性等)。 此外,近期提出的个人数据保护技术“不可学样本”:raw-latex:`cite{huang2020unlearnable}`也算是一种对训练数据的攻击。这类技术的思想是从训练数据中删除有价值的信息,从而达到数据保护的目的。
对于训练阶段的模型攻击来说,最被广泛研究的莫过于后门攻击。如前文所述,后门攻击向目标模型中安插后门的方式可以控制模型的预测行为。我们认为后门攻击是一种针对模型(而非针对数据)的攻击,因为其实现方式并不局限于数据投毒。当然,如果后门攻击是通过数据投毒的方式实现的,那么其也就可以被认为是一种数据攻击。事实上,不止后门攻击,其他很多攻击的攻击效果最后都体现在模型上,比如数据投毒攻击会导致模型性能下降。针对模型训练阶段的攻击还包括其他几种尚未被充分探索过的类型,如模型结构篡改、预训练参数攻击等。举例来说,攻击者可以修改预训练模型的结构降低其特征迁移能力,或者预训练得到一组特殊的参数初始化使模型无法收敛等。当然这些都只是猜想的攻击方式,具体如何实施、效果如何还需实验探索验证。
目前针对训练算法和超参数的攻击并不多见,但是可以想象的是模型训练对这些参数,比如学习率、初始化参数、训练周期,是很敏感的。但是对训练超参的攻击需要很强的威胁模型,比如攻击者可以控制训练过程或者恶意修改训练代码。一个有意思的观察是,部分研究工作开源的代码存在复现难的问题,需要对训练算法和超参数进行进一步调优才能达到论文中报告的结果。对于轻量级的训练来说这可能影响不大,但是对于大规模训练算法来说,这就会带来大量的训练开销,大大增加研究费用。如果在开源代码中故意对超参数进行隐藏或者过度复杂化以增加复现难度,就可以被视为是一种训练超参攻击。
3.3.3.2. 测试阶段¶
相比训练阶段,不论从数据还是模型的角度来说,测试阶段的攻击更多样化。其中很大一部分原因是测试阶段模拟的事模型的真实使用情况,此时模型会以不同的形式接收外部请求,会面临多种多样的攻击。在数据方面,可以以模型为媒介对训练数据进行窃取和隐私攻击,还可以借助模型进行数据篡改和伪造。 在模型方面,可以通过修改测试样本对模型发起对抗攻击,或者通过查询API对模型进行窃取攻击。
针对测试数据本身的攻击相对较少,大部分攻击是通过对测试样本的修改来攻击模型(而非测试数据本身)。这主要是因为相比测试数据,训练数据的价值往往更高,而测试数据数量相对较少且具有不确定性。有些机器学习范式,比如在线学习和主动学习,会在依序到达的测试样本上更新模型参数。针对此类学习范式,攻击者可以发起测试数据攻击,比如通过控制测试数据的到达顺序使在线更新的模型发生功能或性能退化,或者通过毒化测试数据的方式对模型进行在线后门攻击(online backdoor attack)。
在测试阶段可以发起模型逆向攻击,攻击者可以通过白盒模型或者查询API来窃取原始训练数据。由于机器学习模型是一个存储器,所以攻击者可以设计一个机器学习的逆过程,将模型逐步退化成初始化状态,并在此过程中反向推导出原始训练数据。此外,攻击者可以通过数据蒸馏的方式,根据模型在不同输入样本上的输出结果去蒸馏一个近似模型,并在此过程中完成对训练数据和模型的同时窃取。隐私攻击的成功(如成员推理和敏感信息泄露)是“机器学习模型是一个存储器”的强有力证据。有趣的是,到底机器学习模型(深度神经网络)到底能记住多少训练样本的独特信息目前仍没有一个明确的结论。
针对模型的测试阶段攻击主要是对抗攻击和模型窃取。对抗攻击是人工智能安全的核心研究领域,相关研究推动了可信机器学习领域的快速发展。对抗攻击通过把普通样本转换为对抗样本的方式使模型发生预测错误,虽然对抗样本跟原始样本往往只有微小的差别,在很多时候差别可以小到人都无法察觉。当然后续的研究已经慢慢的将对抗样本的“微小变化”扩展到可物理实现的贴图、花纹、配饰、衣服图案等等。除对抗攻击外,模型在测试阶段还可能会面临大量未知攻击,这就需要在模型部署时搭配另外一个攻击检测模型才能够及时的检测未知攻击并对其拒绝服务。
在模型窃取方面,前面讲过现有攻击方法通过类似知识蒸馏的方式对目标模型进行功能和性能近似,窃取一个跟目标模型功能和性能相近的替代模型。如果目标模型的结构是已知的并且查询次数没有限制,那么从理论上来说攻击者可以对目标模型进行任意精度的近似。而即使目标模型的结构是未知的,攻击者也可以用一个尽量复杂的模型来对目标模型进行替代性近似。需要注意的是,如果模型窃取所需要的计算开销超过了攻击者从头训练一个类似模型的代价,那么模型窃取也就失去了意义,二者之间的比值可以用来衡量窃取攻击的性能。一种更高明的模型窃取方式是攻击者利用模型窃取来提高自身模型的泛化能力,比如先预训练一个尽量大的模型,然后以性能窃取的方式通过攻击目标模型来提升自己的性能。此外,模型窃取还可以与后门攻击结合形成复合攻击类型,达到更准确的窃取。
数据篡改和伪造也是测试阶段的攻击,这个研究方向对比较独立,相当于模型和数据的不当使用。事实上,一旦当一个技术开放使用以后,我们往往很难控制它的使用目的。比如,自从人工智能技术逐渐成熟以来,对人工智能技术的滥用时有发生,如人工智能武器化、人工智能用以人肉搜索、经济诈骗、谣言传播和舆论操纵、数据篡改和伪造等。这其中数据篡改和伪造可能是最简单、最容易处理的一种技术滥用。
3.4. 防御类型¶
攻击揭示问题,攻击解决问题。目前,大部分的防御工作都是围绕已有攻击展开的,根据攻击提出有针对性的防御策略,于此同时,力求能够对多种攻击方法都有效。一般来说,防御一种攻击相对比较简单,而防御多种攻击则特别困难,需要抓住模型最本质的脆弱点。在有些情况下,还会存在“鱼与熊掌不可兼得”的困境,解决安全问题与学习任务本身有着难以调和的冲突,导致必须在性能和鲁棒性之间做出权衡。
前面我们多次提到过,数据攻击往往与针对模型攻击存在紧密的关联,因为机器学习本身就是数据和模型相互作用的结果。然而,这种相关性却难以用来同时解决数据安全问题和模型安全问题。其主要原因是当前机器学习模型,尤其是深度学习模型,主要以记忆的方式进行学习,并没有反思机制。正如伊恩·古德费罗(Ian Goodfellow)在其受邀发表在ICLR 2019上的论文:raw-latex:`cite{goodfellow2019research}`所指出的那样,我们可能需要动态模型(dynamic models)来解决现有机器学习模型的对抗脆弱性问题。动态模型指能在每一次推理之后都会发生变化的模型,比如分类模型输出的第一个位置所对应的类别从“猫”变成了“卡车”。当然,这并不是一种反思机制,但是它能启发我们去思考现有机器学习范式的根本性缺陷。
从防御策略上来说,防御者可通过以下三种不同策略进行防御:
检测。检测潜在的攻击并对其拒绝服务,这是一种对目标模型影响最小的防御方式,也是一种最容易落地应用的防御方式。
增强。增强模型本身的鲁棒性,使其具备抵御各种攻击的能力,这是一种最根本的防御方式,也最难实现。
法律。通过法律法规禁止对人工智能系统的攻击行为,明确攻击者所需要承担的责任和后果,对恶意的攻击行为做出适度的惩罚。
由于人工智能的应用场景非常广泛,所以在短时间内构建完备的法律体系并不现实。这就需要在检测和增强两种技术解决方案上下大力气,最大限度的降低安全隐患。下面将从攻击检测、数据保护和模型增强三个方面讨论现有防御工作的基本思想。
3.4.1. 攻击检测¶
攻击检测旨在模型部署阶段对潜在的攻击行为做出实时的检测并拒绝服务,避免模型受到不必要的攻击。攻击检测的核心是“差异性”,即攻击行为在某些方面一定有别于正常的模型使用行为。这种差异性一般体现在以下几个方面:
数据差异。攻击者所使用的数据(如有毒样本、对抗样本、随机样本等)往往与普通数据不同,存在分布上的明显差异,且攻击数据分布一般比较单一,往往过拟合到攻击者所使用的攻击方法上。
行为差异。攻击者往往不止一次发起攻击,经常是在一定时间内周期性的发起大量查询请求,而普通用户的请求频率往往分布比较均匀,即使不均匀,其请求频率也不会只集中在一个单一的时间段。
目标差异。攻击者和普通用户的目标不同,攻击者往往是利益驱动的,会在攻击过程中大量获利,所以了解了某个应用场景的商业利益所在和利益相关方,也就能大约的界定出攻击所发生的范围和攻击目的。
那具体有哪些检测任务呢?在数据安全方面,我们可以检测投毒和后门样本、检测投毒和后门模型、检测隐私和数据窃取行为、检测篡改和伪造数据等等。在模型安全方面,我们可以检测对抗样本、检测(测试阶段的)后门样本、检测模型窃取行为、检测模型逆向行为等等。实际上,已有攻击大都比较容易检测,如对抗样本和后门样本的检测准确率往往都在80%以上:raw-latex:cite{lee2018simple,2021Anti}。虽然单次检测准确率不算高,但是攻击者会多次发起攻击,那么在多次攻击后被检测出来的概率是很高的,比如80%的单次检测准确率相当于99%上的三检一(三次攻击中检测出来一次)准确率。
在上述检测任务中,投毒和后门样本检测主要是基于攻击数据来自于(与干净数据)不同分布的假设,对攻击数据的分布、深度特征、预测结果等进行刻画和区分。投毒和后门模型检测主要是对模型在不同测试数据上的行为差异进行建模,从而检测模型存在的功能异常。隐私和数据窃取行为检测可以通过对攻击者的查询行为进行建模,暴露其“拼图”行为,阻止其通过多次联合查询来窃取数据或隐私信息。而篡改和伪造数据检测则是假设修改数据与天然数据具有不同分布,并通过寻找这种不同来检测修改或伪造的样本。测试阶段的对抗和后门样本检测主要是通过这两种异常样本对模型产生的异常激活或输出分布来检测。而对模型窃取来说,攻击者往往需要对目标模型发出大量的查询请求,且这些请求从简单到复杂体现出“课程表”的特性,很容易被检测出来。
3.4.2. 数据保护¶
数据保护旨在对数据本身、模型训练算法以及推理机制进行改进,防止训练数据被投毒、窃取、篡改或者伪造。值得注意的是,数据安全不只涉及数据本身,也需要训练算法和模型增强的配合。这是因为,在机器学习中数据会借助模型而存在,即其在训练过程中以某种形式学习到模型内部,与模型参数的更新融为一体。可惜的是,目前关于数据和模型参数之间的相互作用并没有确切的理论刻画,只能从不同方面进行实验探索。
在训练数据方面,防御者可以通过数据替换、特征替换、数据加噪等方式,防止模型对原始训练样本的记忆,降低数据或者关键隐私信息被窃取或篡改的风险。针对数据投毒,可以采用特定的数据增广(data augmentation)方法打破有毒样本对目标模型的负面影响,打破后门样本与后门标签之间的关联等。此外,还可以通过数据集压缩(dataset condensation)、数据过滤(data filtering)等方法,将问题样本从训练数据集中隔离并移除。这类方法对大规模预训练比较有利,一方面可以从海量预训练数据中剔除有问题的样本;另一方面可以压缩数据集,降低训练成本。
在训练方法方面,可以通过差分隐私(differential privacy, DP)或者隐私保护学习方法(如联邦学习)等来降低模型对训练数据的记忆,避免对私有数据的简单聚合,防止大规模隐私泄露。当然也可以设计特定的鲁棒训练方法来降低模型训练对原始数据的依赖,如通过“反后门”学习机制来防止模型对简单后门样本的学习。实际上,这些训练方法往往会牺牲模型的部分性能,因为对数据的“模糊学习”(即只学习非敏感部分的信息)往往会带来一定的信息损失。如何设计高效的模糊学习方法是实现数据保护的机器学习的关键。
在推理机制方面,防御者可以通过策略性的隐藏原始模型输出,防止敏感信息的泄露。如前文所述,机器学习模型可以看做是一个复杂的函数,在模型结构确定以后,函数的形式就决定了,其具体的参数值由训练数据所决定。也就是说,我们可以在任何一个训练数据点处进行泰勒展开(Taylor expansion),得到一个局部定义。这些局部定义的独特性就决定了模型整体的隐私性。如果我们对模型的输出进行一定的加噪和模糊化,那么多个数据点可能会得到类似的展开,攻击者就不容易根据局部信息推理出某个数据点的特性,避免潜在的信息泄露。对于窃取类攻击,防御者甚至可以实施反向攻击,比如将模型的输出进行修改向攻击模型中反向安插后门,也就是所谓的“以攻为守”。
此外,还可以采用同态加密(homomorphic encryption,HE)算法,对模型的输入进行加密,在密文上进行运算后返回预测结果(也是密文),从而完全避免了真实数据的传输。相关研究领域称为加密机器学习(encrypted machine learning,EML)。加密方法还可以与安全增强的训练方法结合使用,如联邦学习加同态加密,全面提升各个环节的安全性。需要注意的是,隐私保护的推理机理往往会降低模型的性能和推理效率,在某些场景下可能会降低用户的使用体验。
3.4.3. 模型增强¶
模型安全增强的目的是提高模型自身对潜在攻击的鲁棒性,其中研究最多的是对抗鲁棒性和后门鲁棒性。虽然模型对常见损坏(common corruptions)的鲁棒性也需要提高,如对噪声标签、噪声输入、损坏输入等的鲁棒性,但是这些鲁棒性通常被认为是常见鲁棒性,并不是安全方面的鲁棒性。常见鲁棒性旨在模拟现实世界中充满噪声且又多变的应用环境,而对抗和后门则是在此基础上再加上恶意攻击者的存在。针对对抗和后门攻击的模型安全性增强往往也会对常见鲁棒性有所提升。
目前,模型安全性增强主要通过输入增强、鲁棒训练、鲁棒模型结构设计和鲁棒后处理四种方式进行。其中,输入增强又包含输入去噪、输入压缩、输入转换(如像素偏转)、输入随机化等不同方法;鲁棒训练包括对抗训练、对抗蒸馏、后门鲁棒训练等方法;鲁棒模型结构设计可以从探索全新的模型谱系(如transformer模型)或者改进现有结构两个方向进行;鲁棒后处理主要是对已经训练完毕的模型进行量化、剪枝、压缩、微调等操作进一步提升其鲁棒性。
一般来说,输入增强技术通用性强、实现简单,可以配合其他增强技术灵活使用。例如,当前最优的对抗鲁棒性提升方法就是通过数据增广加对抗训练来达到的。而一些新兴的去噪模型如扩散模型(diffusion model)也可以用来进行高质量的输入去噪和安全性增强,切此类模型对微小的对抗噪声极其鲁棒。鲁棒训练方法一般被认为是最可靠的鲁棒性增强技术,因为它们可以从优化的角度对模型自身的鲁棒性产生根本性的提升,但是鲁棒训练方法的计算开销较高,每次尝试都需要进行一次耗时的模型训练。在对抗鲁棒性方面,对抗训练还会降低模型在干净数据上的性能,在一定程度上阻碍了模型的可用性。
鲁棒模型结构设计是最具有挑战性的任务,设计鲁棒的模型结构往往比设计高性能的模型结构更加困难。实际上,只通过结构的改变来提高模型的鲁棒性极其困难,可以说是一个不可完成的任务,因为结构固然重要但是不会直接决定模型的鲁棒性。想从根本上解决现有模型的安全性问题需要模型结构和学习范式的双重改变,需要对现有学习范式进行本质性的改变。鲁棒后处理方法能对不鲁棒的模型起到一定的补救效果,但是往往不能从根本上解决模型自身不鲁棒的问题,很多后处理方法也陆续被发现被后来的攻击方法攻破。但是后处理方法在灵活性和及时性方面相较其他方法存在一定优势,因为任何模型都无法保证在训练完成后就能完成预期的鲁棒性提升。此外,也有可能会在模型部署后发现新的安全问题,这就需要后处理方法进行及时的修补,这种有针对性的鲁棒性增强往往是比较高效的。
在对抗鲁棒性方面,模型安全增强无非就是弥补模型中所存在的对抗脆弱性,比如数据分布不均衡、决策边界扭曲、损失景观不平滑、梯度大小不一致等等。这些问题的最终体现就是模型对微小的输入噪声极其敏感,很容易就会被干扰跨过决策边界,损失会在小范围内会陡增,梯度易被恶意利用等等。总结已有研究,对抗鲁棒模型应该具备以下特点:
安全模型在干净测试样本上可以达到与普通模型相当的性能;
安全模型在对抗样本上可以达到与在干净测试样本上相当的性能。
要同时实现上述两个目标是极其困难的,因为已有模型并不具备区分干净样本与对抗样本、普通噪声与对抗噪声的能力,即模型对所有输入信息都“一视同仁”。这迫使防御方法需要提高模型在所有输入上的鲁棒性。比如,对抗训练需要对所有训练样本做对抗增广,将其变为对抗样本后再进行模型训练,这难免会损害模型在干净样本上的干净准确率(clean accuracy)。训练更鲁棒的机器学习模型需要在样本区分上做出一定的突破,否则无法做到准确率和鲁棒性的兼得。
在后门鲁棒性方面,模型安全增强可以在两个不同的阶段进行,在学习阶段避免模型对投毒(后门)数据的学习,在推理阶段移除触发器或阻止触发器的激活。其中,学习阶段的增强方法一般都是后门鲁棒训练方法,这类方法让模型在训练过程中避免对投毒数据的学习。后门鲁棒训练可以分两步来完成:1)有毒样本检测和2)有毒样本处理;也可以一步完成,让模型在学习过程中自动识别并忽略有毒样本。有毒样本检测可以基于模型在有毒样本的学习特点来完成。需要注意的是,有毒样本只有被学习的时候才能被观测到特点,所以当能检测到有毒样本的时候,有毒样本就已经被学进模型内部了,这多少有点“试毒”的意思。实际上,可以通过一个辅助模型(比如一个小模型)去做检测,然后基于检测结果从模型中“遗忘”或者“反学习”掉有毒样本。有毒样本也有不同的处理方式,丢弃有毒样本是一种更简单粗暴的处理方案,但是当检测数量较多时,会损失大量训练数据。最好是可以将这些样本进行净化,净化后继续用于模型训练,但是这种策略存在一定的风险,容易因净化不彻底而再次被投毒。