为了有效保护机器学习系统,我们必须首先了解可能遇到的对手。仅仅知道存在漏洞是不够的;我们需要一种结构化的方式来思考攻击者、他们的动机和手段。这就是威胁建模的作用。机器学习中的威胁模型提供了一个正式的框架,通过定义攻击者的目标、已知信息和能力来描述潜在攻击。系统地定义这些组成部分有助于我们预测攻击途径并设计适当的防御措施。让我们细分机器学习威胁模型的主要组成部分:攻击者目标攻击者想要实现什么?目标决定了他们可能采用的攻击类型。常见的目标包括:损害完整性: 导致模型产生错误输出。这是最常被研究的目标,通常表现为:规避: 在推断时对特定输入强制进行错误分类(例如,将恶意文件分类为良性文件)。这可以是有目标的(强制产生特定的错误输出类别)或无目标的(强制产生任何错误输出类别)。数据投毒/后门: 操纵训练过程,使最终模型表现出预期的恶意行为(例如,错误分类特定输入或总体表现不佳)。损害可用性: 降低模型的性能或使其无法使用,无论是对所有输入还是部分输入。可用性攻击通常与完整性攻击重叠,特别是不加区分的投毒攻击,旨在降低整体准确率。损害保密性/隐私: 提取有关模型或其训练数据的敏感信息。这包括:成员推断: 确定某个特定数据点是否属于模型的训练集。属性推断: 推断训练数据记录的敏感属性。模型窃取/提取: 复制专有模型的功能或提取其参数。数据重构: 恢复与训练中使用的样本相似的数据。了解攻击者的目标非常重要,因为对一种目标(例如规避)有效的防御可能对另一种目标(例如模型窃取)无效。攻击者已知信息攻击者对目标系统了解多少?这显著影响他们可以发起的攻击类型。我们通常将已知信息级别分为:白盒访问: 攻击者对模型有完整了解,包括其架构、参数(权重和偏差)、训练数据特性,以及可能的训练算法本身。这代表了从防御者角度来看的最坏情况,并允许进行强大的基于梯度和基于优化的攻击。例如,计算梯度需要访问模型内部。黑盒访问: 攻击者对模型了解很少。他们通常只能通过API与模型交互,提供输入并观察输出(例如,预测标签或置信度分数)。他们不知道模型的架构或参数。在这种设置下的攻击常常依赖于重复查询模型(基于分数或基于决策的攻击)或利用在替代模型上训练的对抗样本的迁移性。灰盒访问: 这代表了一种中间状态,攻击者具有部分了解。他们可能知道模型架构但不知道具体的权重,或者他们可能能够访问类似模型或训练数据的一个子集。假设的攻击者已知信息级别是评估防御措施鲁棒性的一个重要因素。对黑盒攻击显得强大的防御措施可能很容易被白盒对手规避。攻击者能力攻击者可以在系统上执行哪些操作?这定义了攻击面。主要能力包括:控制训练数据: 攻击者能否注入或修改用于训练模型的数据?这使得投毒和后门攻击成为可能。控制范围可能不同(例如,注入有限数量的点,修改现有数据点)。此能力在训练阶段相关。控制输入数据: 攻击者能否在推断时修改输入到模型的数据?这使得规避攻击成为可能。对这些修改的限制很重要,通常使用 $L_p$ 范数(例如 $L_0$, $L_2$, $L_\infty$)来建模,以限制感知差异或扰动的大小。此能力在推断阶段相关。查询访问: 攻击者能否查询已部署的模型?如果可以,查询是否受限?他们能否观察预测标签、置信度分数或其他输出?此能力对于黑盒攻击是必不可少的,包括规避和模型推断/窃取。计算资源: 攻击者是否拥有显著的计算能力来运行复杂的优化算法或训练替代模型?综合威胁模型一个完整的威胁模型结合这些要素。例如,规避攻击的常见威胁模型假设:目标: 无目标或有目标的错误分类(完整性)。已知信息: 白盒(访问梯度)或黑盒(仅查询访问)。能力: 在推断时修改输入数据,受限于 $L_\infty$ 扰动预算 $\epsilon$。digraph ThreatModel { rankdir=LR; node [shape=box, style=rounded, fontname="helvetica", fontsize=10]; edge [fontname="helvetica", fontsize=9]; Attacker [label="攻击者画像"]; Goals [label="目标\n(为何?)", shape=ellipse, style=filled, fillcolor="#a5d8ff"]; Knowledge [label="已知信息\n(已知什么?)", shape=ellipse, style=filled, fillcolor="#b2f2bb"]; Capabilities [label="能力\n(如何?)", shape=ellipse, style=filled, fillcolor="#ffec99"]; Attacker -> Goals [label="决定"]; Attacker -> Knowledge [label="拥有"]; Attacker -> Capabilities [label="具有"]; subgraph cluster_goals { label = "示例目标"; style=dashed; color="#495057"; fontsize=9; G1 [label="规避", style=filled, fillcolor="#e9ecef"]; G2 [label="投毒", style=filled, fillcolor="#e9ecef"]; G3 [label="推断", style=filled, fillcolor="#e9ecef"]; } subgraph cluster_knowledge { label = "示例已知信息级别"; style=dashed; color="#495057"; fontsize=9; K1 [label="白盒", style=filled, fillcolor="#e9ecef"]; K2 [label="黑盒", style=filled, fillcolor="#e9ecef"]; K3 [label="灰盒", style=filled, fillcolor="#e9ecef"]; } subgraph cluster_capabilities { label = "示例能力"; style=dashed; color="#495057"; fontsize=9; C1 [label="修改输入\n(推断)", style=filled, fillcolor="#e9ecef"]; C2 [label="修改数据\n(训练)", style=filled, fillcolor="#e9ecef"]; C3 [label="查询模型", style=filled, fillcolor="#e9ecef"]; } Goals -> {G1, G2, G3} [style=invis]; Knowledge -> {K1, K2, K3} [style=invis]; Capabilities -> {C1, C2, C3} [style=invis]; }机器学习威胁模型中定义攻击者的核心组成部分。通过明确定义威胁模型,我们为评估攻击和防御确立了基本规则。攻击只有相对于特定的威胁模型才具有意义,而防御只有在实际且具有挑战性的威胁模型下能够抵御攻击时才有效。在本课程中,我们将不断回顾这些组成部分——目标、已知信息和能力——以了解不同对抗技术和安全措施背后的背景和假设。这种结构化方法是构建更安全、更值得信赖的机器学习系统的根本所在。