在我们继续审视高级攻击方法时,我们将转向两种特别隐蔽的技术:模型反演和模型窃取。这些攻击超越简单的输出操纵。它们旨在重建用于训练或查询模型的敏感信息,或非法复制模型功能本身。掌握这些方法对红队人员十分重要,他们负责评估大型语言模型部署中更深层的安全和隐私风险。模型反演攻击:重建敏感数据模型反演攻击侧重于从已训练模型 $M(x; heta)$ 中获取信息,以泄露其训练数据或已处理的特定输入的信息。此类攻击旨在让模型泄露其参数 $ heta$ 中包含的秘密,或从其输入-输出行为中推断出的秘密。什么是模型反演?其本质上,模型反演是尝试逆向工程模型的学习过程,至少是部分逆向。如果大型语言模型是在包含私人用户通信的数据集上训练的,一次成功的反演攻击可能会重建这些电子邮件的片段,即使模型并未明确设计为逐字存储或检索它们。同样,如果模型处理敏感文档作为输入,反演攻击可能会尝试从模型的后续响应或内部状态变化中恢复该文档的部分内容。大型语言模型“记忆”部分训练数据的可能性是一个已知问题。模型反演攻击是系统地尝试针对这种记忆进行攻击的手段。反演攻击如何运作攻击者采用多种策略,通常根据其访问类型(白盒与黑盒)和所寻求的信息量身定制。白盒反演: 如果攻击者可以访问模型的架构和参数 $\theta$,他们可以使用基于梯度的优化技术。目标是找到一个输入 $x'$,使模型对特定(已知或推断的)训练标签的置信度最大化,或者重建与某些训练样本密切相关的特征。对于大型语言模型,这可能涉及迭代地改进输入提示,以引出在统计上与目标训练数据特征相似的输出。黑盒反演: 仅有查询权限时,攻击者依靠观察模型对精心制作的输入的输出。他们可能会用部分输入探测模型并分析完成内容,或使用置信度分数(如果可用)来引导他们寻找类似于训练数据的输入。例如,攻击者可能会通过在信息可能出现的情境下提示模型来尝试获取个人身份信息(PII)(例如,“我的社会安全号码是...”)。模型反演的种类模型反演通常可以分为:训练数据反演: 攻击者旨在重建模型训练集中的实际样本。这是一种严重的隐私泄露,尤其当训练数据包含敏感或专有信息时。对于大型语言模型,这可能意味着提取它们所训练的特定句子、代码片段或个人详细信息。输入特征反演(或重建): 攻击者试图重建导致特定输出的特定输入的特征。例如,如果大型语言模型生成机密文档的摘要,攻击者可能会尝试从摘要和他们对模型的了解中重建原始文档的部分内容。对大型语言模型的影响对于大型语言模型,其影响很大:隐私违规: 在从互联网抓取的数据集或私人公司数据上训练的大型语言模型,可能会无意中记住并泄露敏感信息,例如姓名、地址、财务详细信息或专有业务逻辑。版权侵犯: 如果大型语言模型从其训练数据中重建受版权保护的材料,可能导致法律问题。偏见显现: 反演还可能通过重建导致偏向性输出的数据点类型,暴露出模型学到的偏见。红队人员应通过尝试提取已知或可能存在的敏感字符串、模式甚至风格元素来测试模型反演,这些元素可能表明模型记住了特定的训练源。模型窃取攻击:复制大型语言模型功能模型窃取,也称为模型提取或克隆,是一种攻击,其目标是创建一个复制品(一个“替代”或“克隆”模型),以模仿目标大型语言模型(“受害”或“预言机”模型)的功能。这通常在无法访问受害模型的架构 $\theta$ 或其原始训练数据的情况下完成,仅依赖于查询权限。什么是模型窃取?想象一家公司投入巨资开发了一个专有的大型语言模型,它在特定任务上表现非常出色,也许是医疗诊断支持或专业代码生成。攻击者通过模型窃取,可以创建他们自己的这个大型语言模型版本,从而有效地获取有价值的知识产权或避免API使用成本。被窃取模型 $M_{clone}(x; \phi)$ 旨在为给定输入 $x$ 生成与受害模型 $M_{victim}(x; \theta)$ 非常相似的输出。窃取模型的流程黑盒情境下模型窃取的典型流程包括几个步骤:查询受害大型语言模型: 攻击者系统地向目标大型语言模型发送大量查询(提示)。这些查询的设计很重要;它们可能是随机的,可能从类似于预期使用的分布中抽取,或者自适应地选择以更有效地了解模型的行为。收集输入-输出对: 对于发送到受害大型语言模型的每个查询 $x_i$,攻击者记录相应的输出 $y_i = M_{victim}(x_i; \theta)$。这些 $(x_i, y_i)$ 对构成一个新的数据集。训练替代模型: 攻击者随后使用这个收集到的数据集来训练他们自己的大型语言模型 $M_{clone}(x; \phi)$。替代模型 $\phi$ 的架构可能与受害模型不同,通常更简单,但选择它旨在能够学习观察到的输入-输出映射。迭代与完善: 该过程可以是迭代的,克隆模型的性能指导进一步的查询选择以提高其准确性。下面的图表展示了这一流程:digraph G { rankdir=TB; graph [fontname="Helvetica", bgcolor="transparent", label="模型窃取:训练克隆模型", labelloc=t, fontsize=14]; node [shape=box, style="filled,rounded", fontname="Helvetica", margin=0.2, color="#495057"]; edge [fontname="Helvetica", color="#495057", fontsize=10]; attacker [label="攻击者系统", shape=cylinder, fillcolor="#ffc9c9"]; query_engine [label="查询引擎", fillcolor="#ffd8a8"]; data_store [label="输入-输出对\\n(x, M_victim(x))", fillcolor="#ffec99", shape=folder]; clone_training [label="克隆训练模块", fillcolor="#d8f5a2"]; cloned_model [label="克隆大型语言模型\\nM_clone(x; \u03c6)", fillcolor="#b2f2bb", style="filled,rounded,bold", color="#37b24d"]; victim_llm [label="受害大型语言模型\\nM_victim(x; \u03b8)", fillcolor="#a5d8ff", style="filled,rounded,bold", color="#1c7ed6"]; attacker -> query_engine [label=" 启动 "]; query_engine -> victim_llm [label=" 查询 (x)"]; victim_llm -> data_store [label=" 输出 (M_victim(x))"]; data_store -> clone_training [label=" 提供数据 "]; clone_training -> cloned_model [label=" 训练 "]; cloned_model -> attacker [label=" 提供功能 "]; }模型窃取过程涉及攻击者查询受害大型语言模型以收集数据,然后将这些数据用于训练模型的本地克隆。查询策略与挑战模型窃取的成功常常取决于查询策略和受害模型API泄露的信息量:查询预算: API通常有速率限制或每次查询的成本。攻击者需要最大化每次查询获得的信息。输出粒度: 如果API不仅返回最佳响应,还返回备选响应的置信度分数或概率,这种更丰富的信息可以极大地帮助训练更准确的克隆模型。自适应查询: 更复杂的攻击者可能会使用主动学习等技术,其中查询的选择基于克隆模型的当前状态,以期获得最大信息量。这通常侧重于克隆模型不确定或与先前(有限的)观察不一致的输入。窃取为何重要模型窃取会带来几个负面后果:知识产权盗窃: 最直接的影响是宝贵知识产权的损失。经济削价: 攻击者可以基于被窃取的模型以更低价格或免费提供服务。促进其他攻击: 被窃取的模型可以在离线状态下分析漏洞。如前所述,它可用于制作对抗性样本,以对原始受害模型进行迁移攻击,即使受害者是黑盒。了解专有行为: 即使是部分成功的克隆也能提供有关专有大型语言模型在某些输入上行为方式的了解,这对于竞争情报可能很有价值。与红队行动的关联及影响模型反演和模型窃取不仅仅是理论上的问题。随着大型语言模型越来越多地集成到关键应用中,执行这些攻击的动机也随之增加。对于红队人员而言,了解这些技术意味着:评估API防御: 是否有有效的速率限制?是否有过多信息(例如,详细的逻辑)通过API暴露,从而可能促成更容易的窃取?探测记忆痕迹: 设计测试以尝试获取可能属于训练数据的特定、潜在敏感信息(用于反演)。这可能涉及基于已知的公共泄露或常见PII格式来制作提示。模拟窃取尝试: 尽管完全窃取一个大型商业大型语言模型是一项浩大的工程,但红队可以模拟该过程的部分内容,以了解在有限的查询预算下可以提取多少信息,以及可以达到何种替代模型的准确性。这有助于量化风险。评估数据来源: 对于反演,了解训练数据来源以及如何进行清洗对于评估潜在风险非常重要。这些攻击强调了对超越简单输入/输出过滤的强大防御的需求。训练中的差分隐私、模型输出水印和谨慎的API设计等技术变得更加重要,因为模型反演和窃取等威胁日益普遍。您作为红队人员的角色是测试现有防御措施对抗这些高级攻击策略的能力。本章中的实践练习将让您有机会思考一个信息外泄情境,它可能与模型反演尝试具有相似之处。