Security and Privacy in Machine Learning
第一篇正经读的Security文章,可以预见的是会遇到很多困惑和问题,所以写文章记录一下。
Concepts
因为我们关注的是机器学习系统的安全和隐私问题,因此首先需要理清两个领域相关概念:机器学习系统是怎样的,怎样评价这个系统是否“secure and private”?
Machine Learning
ML Security and Privacy主要考虑监督学习。对于一个机器学习模型,将它的训练(Training)和推理(Inference)分开有助于我们讨论后续问题。
摘录论文原文对Training的描述:
Most ML models can be described as functions $h_θ(x)$ taking an input $x$ and parametrized by a vector $θ ∈ Θ$. The output $h_θ(x)$ is the model’s prediction for $x$ of some property of interest.
在Inference时,则是有固定的$\theta$,对新的输入$x$求输出$h_θ(x)$.
上图一般化地表征了一个Maching Learning System的使用pipeline,并给出了两个实例。
Threat Model
威胁模型是什么? 我的理解就是找出高风险、易受攻击的点,然后设法保护它们。
The security of any system is measured with respect to the adversarial goals and capabilities that it is designed to defend against–the system’s threat model.
从另一个角度看,它也是攻击者可支配的行为和信息的总和
A threat model is also defined by the actions and information the adversary has at their disposal.
由此就可以谈到攻击面(attack surface),后面会从前图上不同的stage阐述攻击方式和类型。
What Is an Attack Surface? The attack surface is the number of all possible points, or attack vectors, where an unauthorized user can access a system and extract data. The smaller the attack surface, the easier it is to protect.
此处可以介绍一个和threat model听起来比较对称的概念:Trust Model. 实际上,我理解它表示的是一组权限或者规则,给系统中的每类个体设置对应的信任权限,例如哪些内容可以被访问,修改等等。
根据trust model的不同,该模型的攻击能力(Adversarial Capabilities)也有差异,可以理解为系统对攻击者的暴露程度,可以被获取的内容越多,攻击能力越强,反之则弱。
介绍完对抗能力,理所应当的应该有细分指标来具体区分一个攻击者的目标,即对抗目标(Adversarial Goals). 此处引入一些核心要素,并试图从ML system的角度做一点解释:
首先是CIA三要素:
Confidentiality: 即保密性,在这里一般指模型对未授权用户保密,强调不能访问
Integrity: 即完整性,此处的完整可以理解为数据的原始,即不能被修改
Availability: 即可用性,具体说就是模型的输出应当是及时准确且可被获取的
除此以外,还有几个需要额外强调的要素,
Privacy: 隐私性,和Confidentiality基本对应,指的是用户信息对不受信任的模型提供者或其他用户加密。
值得一提的是,在以上四组概念里,C&P 和 I&A从攻击者的方法和目的上看是高度相关的。因此在讨论安全时有时可以一起看待。
接下来,按照对抗的阶段和能力,目的和攻击面,逐个介绍对抗设置和解决方法。
Integrity
通常来说,对完整性的侵害主要是对抗攻击。主要的类型又分为投毒攻击和逃逸攻击,分别对Train 和 Inference 阶段进行攻击,下面分别详述。
Poisoning Attack——Training
在展开前补充,由文章,训练过程中ML本身不会影响模型和数据的confidentiality和privacy,而只是取决于攻击者对整个系统的accessibility,所以不讨论。在此Availability又是由Integrity决定的,所以对于Training,我们可以只关注adversary如何操纵数据来影响Intergrity。在图2的四种capabilities中,read无法影响Integrity,logic corruption则似乎过于理想(在我浅薄的认知中,如果adversary能够改动ML model的logic,这个系统相当于完全被操控了,任何安全都无法得到保障。)
某种意义上说,对训练数据的攻击可以视为在试图造成训练和推断之间的数据分布错配,文中用distribution drifts 来描述这种篡改训练数据引起的现象。
在训练过程中的攻击总是需要对该模型的学习流程有一定的了解,以便于操纵数据来扰乱模型。根据可获得信息量的多少,攻击者可能可以改变label,也可能可以改变训练集的输入特征。
要说Label Manipulation,可以举一个经典案例,对二元SVM分类器的training labels做翻转处理。仅仅随机的做翻转就能比较有效地降低预测性能,而对标签有所筛选(目的是找出对模型影响最大的那些数据)能够以更少的修改量获得更大的干扰程度。
操作输入则更符合我们对投毒的字面理解,即通过非正常的或者有害的输入来污染模型,恶意地造成了数据的分布变化。更详细的说,可以再次分类如下:
- Model Skewing 模型偏移,主要是通过修改训练数据,最后让模型的boundary发生偏离(往往是向着对攻击者有利的一侧,例如让False被判断为True)
- Feedback Weaponization 反馈武器化,举个通俗但不一定恰当的例子,2017年,特朗普支持者们大规模在应用市场给CNN打一星,成功降低了它的评分。(水军)
Inference
Evasion Attack
首先可以介绍逃逸攻击,它也是主流的攻击方式之一,那张流传甚广的熊猫图就可以作为典例。理解含义,evasion更像是躲避/欺骗过机器学习系统的判断
此处可以开始介绍对抗样本生成