如前所述,即使是良好对齐的大型语言模型也可能受到精心设计的输入或操作的影响。为了系统地应对这些弱点,将模型可能面临的攻击类型进行分类是很有帮助的。这种分类提供了一个理解威胁和制定针对性防御的结构。针对大型语言模型的对抗性攻击可以利用模型生命周期的不同环节,从训练数据摄入到提示处理和输出生成。我们可以基于攻击方式和预定目标,将这些攻击大致分为以下几类:攻击分类digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fontcolor="#495057"]; edge [color="#adb5bd"]; subgraph cluster_input { label = "输入操纵攻击"; style=filled; color="#e9ecef"; node [shape=box, style=rounded, fontname="sans-serif", color="#1c7ed6", fontcolor="#1c7ed6"]; jailbreaking [label="越狱攻击"]; prompt_injection [label="提示注入"]; adversarial_prompts [label="对抗性提示"]; } subgraph cluster_data { label = "数据与训练攻击"; style=filled; color="#e9ecef"; node [shape=box, style=rounded, fontname="sans-serif", color="#f76707", fontcolor="#f76707"]; data_poisoning [label="数据投毒"]; } subgraph cluster_privacy { label = "隐私与信息泄露攻击"; style=filled; color="#e9ecef"; node [shape=box, style=rounded, fontname="sans-serif", color="#ae3ec9", fontcolor="#ae3ec9"]; membership_inference [label="成员推断"]; data_extraction [label="训练数据提取"]; } Attacks [shape=ellipse, style=filled, fillcolor="#495057", fontcolor="#ffffff"]; Attacks -> jailbreaking; Attacks -> prompt_injection; Attacks -> adversarial_prompts; Attacks -> data_poisoning; Attacks -> membership_inference; Attacks -> data_extraction; }针对大型语言模型的常见对抗性攻击方式分类。接下来我们对这些分类进行详细说明:1. 输入操纵攻击这类攻击侧重于精心设计恶意输入(提示),以引发部署的大型语言模型产生非预期或有害行为,通常无需访问模型内部(黑盒攻击)。越狱攻击: 这涉及设计提示,绕过大型语言模型的安全过滤器和对齐训练。目标是诱导模型生成其被明确训练为 不 应生成的内容,例如有害指令、仇恨言论或虚假信息。这通常利用安全规则中的漏洞或使用复杂的角色扮演情景。我们将在下一部分介绍具体方法。提示注入: 这种攻击方式旨在劫持大型语言模型的功能,通过注入指令来覆盖或无视原始系统提示或预定任务。例如,攻击者可能会提供导致大型语言模型忽略其先前指令的输入,转而执行攻击者指定的命令,可能泄露敏感信息或在集成系统中执行未经授权的操作。主要有两种类型:直接提示注入:攻击者直接在用户输入中提供恶意指令。间接提示注入:恶意指令隐藏在大型语言模型作为任务一部分处理的检索数据(例如网页、文档)中。对抗性提示(引发特定故障): 与越狱攻击或注入攻击不同,这些提示可能不明确旨在绕过安全措施,而是为了引发特定的、有目的的故障。这可能包括生成无意义的输出、暴露偏见或消耗过多的计算资源。这些提示可能包含细微的字符级扰动、特定措辞,或利用通过大量测试发现的模型已知弱点。2. 数据与训练攻击这类攻击在模型部署 之前,在其训练或微调阶段进行,通过操纵其学习的数据。数据投毒: 这涉及有意向训练或微调数据集中插入恶意或损坏的例子。目标是在模型本身植入后门、偏见或特定弱点。例如,攻击者可能通过投毒微调数据,以确保模型对某些触发器做出不当响应,或无法识别与特定主题相关的有害内容。尤其是在大规模网络数据集中,检测被投毒的数据可能具有挑战性。3. 隐私与信息泄露攻击这类攻击旨在提取关于模型或其训练数据的敏感信息。成员推断: 这里的目的是确定特定数据是否包含在模型的训练集中。如果训练数据包含个人或机密信息,这是一个重要的隐私问题。攻击者可能会用特定输入探查模型,并分析其输出(例如置信度分数、确切措辞)以推断成员身份。训练数据提取: 这是一种更严重的隐私攻击形式,攻击者精心设计提示,导致大型语言模型复述其训练数据中的字面序列。如果模型使用包含电子邮件、代码或个人信息的私有数据集进行训练,这尤其成问题。模型有时会过拟合并记住特定的训练实例,使其易于被提取。“理解这种分类是建立强大防御的第一步。尽管这些类别提供了结构,但许多攻击可能很复杂,会结合不同类别的元素。后续部分将更详细地分析越狱攻击和提示注入等具体攻击机制,然后讨论防御策略。”