正如本章前面所说,仅仅实施防御措施是不够的。我们需要方法来衡量我们的模型究竟有多安全。衡量过程的一个重要方面是,需要根据具体的、明确定义的威胁模型来调整安全评估。一种防御机制可能对一类攻击者有效,但面对拥有不同知识或能力的另一类攻击者时则完全失效。因此,理解如何在各种威胁情境下进行评估,对于获得模型安全性的真实认知非常必要。回想第一章,威胁模型定义了潜在攻击者的假定特征,通常侧重于他们的目标、对目标系统的了解以及与系统交互或操纵其输入的能力。在评估模型抵抗攻击的能力时,我们必须模拟与这些假设相符的攻击者。基于攻击者知识的评估攻击者对目标模型的了解程度,显著影响他们可以发动的攻击类型,进而影响我们应如何评估针对这些攻击的防御。白盒评估: 这种情境假设攻击者对模型拥有完整知识,包括其架构、参数(权重和偏置),以及可能的训练数据或过程。就信息泄露而言,这通常被认为是防御者的最坏情况。评估策略: 使用直接借助模型梯度和内部结构的攻击。像投影梯度下降(PGD)这类强力基于梯度的攻击或像Carlini & Wagner (C&W)这类基于优化的攻击是标准选择。 " * 目的: 白盒评估测试模型和防御机制在给定扰动约束下对抗最强攻击的能力。它们对于研究和开发,以了解根本性弱点非常重要。即使攻击者可能没有完整的白盒访问权限,在这种设置下的模型抵御攻击的能力也提供了一个强大的基准保障。如果一个模型在白盒攻击下不安全,那么在较弱假设下也不太可能安全。""* 黑盒评估: 在此,攻击者对模型内部信息知之甚少。他们通常只能查询模型(例如通过API)并观察其输出。这通常反映了部署情境。黑盒设置可以进一步细分:" * 基于分数: 攻击者除了预测标签外,还能收到置信度分数或概率。 * 基于决策: 攻击者只收到最终的预测标签。 * 评估策略: 采用仅依赖模型查询的攻击。 * 迁移攻击: 训练一个本地替代模型,并针对它构造攻击,希望这些攻击能够迁移到目标模型上。这需要合理的查询次数来构建替代模型。 * 基于分数的攻击: 使用基于置信度分数变化来估计梯度或搜索方向的技术(例如,NES、SPSA)。 * 基于决策的攻击: 使用以最少信息考察决策边界的算法,例如边界攻击。这些通常需要更多的查询。 * 目的: 黑盒评估在部署情境下评估安全性。它们测试了对缺乏内部信息的攻击者的抵御能力。然而,解释结果需要谨慎。一个在某种设置下看似具有抵御能力的模型,如果评估攻击的查询效率不够高,或者迁移攻击没有得到充分考量,它仍然可能存在弱点。digraph ThreatModels { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fontcolor="#495057"]; edge [fontname="sans-serif", fontsize=10, color="#868e96"]; subgraph cluster_white { label = "白盒评估"; bgcolor="#e9ecef"; AttackerW [label="攻击者"]; ModelW [label="目标模型\n(完整访问)"]; AttackerW -> ModelW [label="访问梯度,\n参数, 架构"]; ModelW -> AttackerW [label="预测结果,\n分数, 梯度"]; AttackW [label="PGD / C&W 攻击", shape=ellipse, style=filled, fillcolor="#ffc9c9"]; AttackerW -> AttackW; } subgraph cluster_black_score { label = "黑盒(基于分数)评估"; bgcolor="#e9ecef"; AttackerBS [label="攻击者"]; ModelBS [label="目标模型\n(API访问)"]; AttackerBS -> ModelBS [label="输入查询"]; ModelBS -> AttackerBS [label="预测结果 + 分数"]; AttackBS [label="基于分数的攻击\n(例如, NES)", shape=ellipse, style=filled, fillcolor="#bac8ff"]; AttackerBS -> AttackBS; } subgraph cluster_black_decision { label = "黑盒(基于决策)评估"; bgcolor="#e9ecef"; AttackerBD [label="攻击者"]; ModelBD [label="目标模型\n(API访问)"]; AttackerBD -> ModelBD [label="输入查询"]; ModelBD -> AttackerBD [label="仅预测结果"]; AttackBD [label="基于决策的攻击\n(例如, 边界攻击)", shape=ellipse, style=filled, fillcolor="#d0bfff"]; AttackerBD -> AttackBD; } }不同评估设置下攻击者的信息访问级别。白盒攻击者拥有完整的内部访问权限,而黑盒攻击者则依赖查询输出(分数或仅决策结果)。灰盒评估: 这代表了中间情境,攻击者可能知道系统部分信息,例如模型架构或所用防御类型,但不知道具体参数。评估策略通常结合了白盒和黑盒方法的元素,可能使用已知的架构信息来指导黑盒查询策略或替代模型训练。基于攻击者能力的评估攻击者的能力限制了他们的行动。评估必须遵守这些限制。扰动约束: 大多数规避攻击都涉及扰动输入。允许的扰动量是多少?这通常使用$L_p$范数来衡量:$L_\infty$: 对任何单个特征(像素、词嵌入维度)的最大改变。常用于图像攻击。$L_2$: 改变的总欧几里得范数。也常用于图像和连续数据。$L_0$: 改变的特征数量。适用于稀疏攻击或希望改变少量词语的文本。评估策略: 使用特定的扰动预算(表示为$\epsilon$)进行攻击。报告在各种 $(\epsilon, L_p)$ 组合下的攻击精度。例如,“模型在 PGD $L_\infty$ 攻击下,当 $\epsilon=0.03$ 时达到 75% 的准确率”,或者“平均而言,愚弄模型所需的最小 $L_2$ 畸变为 1.5”。将准确率随$\epsilon$增加而下降的情况可视化,是一种标准做法。{"layout": {"title": "模型准确率与L-无穷扰动预算对比 (PGD攻击)", "xaxis": {"title": "Epsilon (L-无穷预算)", "range": [0, 0.1]}, "yaxis": {"title": "攻击下的准确率", "range": [0, 1]}, "font": {"family": "sans-serif", "size": 12, "color": "#495057"}, "legend": {"bgcolor": "#f8f9fa", "bordercolor": "#dee2e6"}}, "data": [{"name": "标准模型", "x": [0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1], "y": [0.92, 0.65, 0.35, 0.15, 0.08, 0.04, 0.02, 0.01, 0.01, 0.00, 0.00], "type": "scatter", "mode": "lines+markers", "line": {"color": "#fa5252"}, "marker": {"color": "#fa5252"}}, {"name": "具抵御能力模型 (对抗训练)", "x": [0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1], "y": [0.88, 0.85, 0.81, 0.75, 0.68, 0.61, 0.55, 0.49, 0.43, 0.38, 0.33], "type": "scatter", "mode": "lines+markers", "line": {"color": "#228be6"}, "marker": {"color": "#228be6"}}]}标准模型与经过对抗训练的模型在PGD攻击下,随$L_\infty$扰动预算($\epsilon$)增加时的准确率对比。允许的扰动越大,模型保持的准确率越高。查询限制: 对于黑盒攻击,攻击者可以进行的查询次数可能受到成本、时间或API速率限制的制约。评估策略: 衡量攻击成功率或模型准确率随允许查询次数的变化情况。如果一种防御措施迫使攻击者使用不切实际的大量查询,那么它可能被认为是有效的。语义或领域约束: 攻击可能需要遵守领域特有的规则。对抗性文本示例应保持语法上的合理性;对抗性补丁必须是可打印的,并能适应环境变化。评估策略: 在评估过程中,将这些约束纳入攻击生成过程。这通常需要专门的攻击算法(部分在第七章介绍)。综合不同威胁模型的评估全面的安全评估不应仅仅依赖于单一威胁模型。相反,它应建立模型在一系列相关情境下的安全概况。从强白盒攻击开始: 使用标准、强大的攻击,如PGD($L_\infty$和$L_2$),以及普遍接受的$\epsilon$值(例如,针对CIFAR-10图像的$L_\infty$为$8/255$)作为基准。这确立了模型基本的抵御能力。考虑现实的黑盒情境: 如果模型部署在API后端,则根据API类型(基于分数或基于决策)对其进行基于查询的攻击评估。如果攻击者可能训练替代模型,应考虑迁移攻击。注意查询预算。使用自适应攻击: 请记住,如前一节所述,攻击应适应所采用的具体防御措施。这一原则适用于所考虑的每个威胁模型。不要仅仅运行现成的PGD;确保攻击参数(步长、迭代次数)适当,并且攻击不会被梯度掩蔽等机制规避。清晰记录假设: 在报告结果时,务必说明进行评估时所依据的威胁模型:攻击者知识(白盒/黑盒/灰盒)、能力($L_p$范数、$\epsilon$值、查询限制)以及所使用的具体攻击算法。在不同威胁模型下进行评估,可以避免产生虚假的安全感。一个在弱黑盒攻击下显得安全的模型,在白盒审查下可能会崩溃。反之,如果攻击者实际只拥有有限的黑盒访问权限,那么追求完美的白盒安全性可能就是过度防御。通过系统地针对威胁模型定义的合理攻击者概况进行测试,我们能够对机器学习系统的安全状况获得更可靠、更具指导意义的认识。ART和CleverHans等框架提供了工具,用于在这些多种多样的假设下配置和执行攻击。