AI Security Engineering: Foundations and Threat Models
Chapter 1: AI Security Engineering: Foundations and Threat Models
1.1 AI安全工程的学科定位与知识体系构成
AI安全工程(AI Security Engineering)作为一门新兴的交叉学科,其核心使命是为人工智能系统构建系统性、可量化的安全保障体系。与传统的网络安全工程侧重于保护数据的机密性、完整性和可用性不同,AI安全工程必须同时应对两层截然不同的威胁向量:一是对抗性输入(Adversarial Inputs)对模型行为的操纵,二是针对AI系统独特架构的新型攻击手段。这两重维度的交织使得AI安全成为当今信息安全领域最为复杂的研究前沿之一。
理解AI安全工程的学科定位,需要从三个知识支柱的交汇点来审视。首先是机器学习理论基础——这构成了理解AI系统脆弱性的认知前提。不掌握反向传播、梯度下降、注意力机制等技术原理,就无法真正理解对抗样本为何有效、模型窃取攻击如何运作、或是后门植入的技术可行性。安全研究者必须能够"像攻击者一样思考模型",而这要求对模型的数学本质有足够深入的理解。
第二个支柱是传统网络安全工程方法论。经过数十年发展,网络安全已经形成了成熟的威胁建模框架、攻击面分析工具和防御策略体系。AI安全工程并非从零开始,而是需要将这些经过实践检验的方法论进行适配和扩展。STRIDE、PASTA、Kill Chain等模型为理解攻击路径提供了结构化思维,而渗透测试、代码审计、模糊测试等实践技术则为发现AI系统漏洞提供了方法工具箱。
第三个支柱是AI系统特有的工程实践。现代AI系统通常是复杂的软件栈,涵盖数据管道、模型训练、推理服务、API网关、向量数据库等多个组件。每个组件都引入独特的安全考量:从训练数据的投毒风险,到模型部署的完整性验证,再到推理阶段的安全边界设置。理解这个完整的技术栈,是构建端到端安全方案的前提。
这三个知识支柱的交叉地带,产生了AI安全工程独特的方法论空间。本书后续章节将逐一深入探讨这些领域的具体议题,而本章的任务是为读者建立整体框架,使后续的技术细节能够在清晰的概念地图中找到自己的位置。
1.2 AI系统与传统软件的安全模型对比分析
AI系统与传统软件系统在安全威胁模型上存在本质性差异,这些差异源于两者在计算范式和信任边界定义上的根本不同。传统软件的安全性建立在确定性的输入-处理-输出映射上:给定相同输入,执行相同代码路径,必然产生相同输出。这种确定性使得传统安全测试可以系统化地枚举所有可能的执行路径,攻击面的覆盖度可以作为可量化的指标来评估。
相比之下,AI系统——尤其是深度学习模型——的核心是统计学习过程。模型的输出是其参数与输入在高维空间中进行复杂交互的结果,而非显式编程的逻辑分支。这意味着"正确行为"的定义本身就是模糊的:同一个输入可能存在多个合理输出,而模型的真实决策边界对于设计者而言往往是不可完全观测的黑箱。这种本质不确定性使得传统的代码审计式安全分析方法难以直接应用。
信任边界的根本性转移
传统软件的安全模型以代码边界为核心:可信代码与不可信输入之间的接口(如系统调用、API边界、文件解析器)构成了主要攻击面。安全控制措施聚焦于在这个边界上实施输入验证和访问控制。攻击者的目标是找到从边界外部到内部执行权限的跳跃路径——缓冲区溢出、SQL注入、命令注入等经典漏洞模式都遵循这一逻辑。
AI系统的信任边界则发生了根本性转移。在AI系统中,边界不再位于代码与数据的接口,而是延伸到模型内部的表示空间。攻击者不再需要寻找代码缺陷来实现任意代码执行,而是可以通过构造特定的输入模式,在模型的表示空间中触发预定义的响应。这种攻击方式通常被称为对抗性攻击(Adversarial Attack),其本质是在模型的能力范围内、按照模型"理解"输入的方式来操纵其行为。
一个简化的对比可以帮助理解这一差异:
| 维度 | 传统软件安全 | AI安全 | |------|-------------|--------| | 核心资产 | 代码逻辑、数据 | 模型参数、训练数据、推理能力 | | 攻击目标 | 执行任意代码、获取未授权访问 | 操纵模型行为、窃取模型能力 | | 攻击向量 | 漏洞利用(代码缺陷) | 对抗样本、投毒攻击、模型窃取 | | 防御边界 | 输入验证、权限控制 | 输入扰动检测、模型硬化、输出审计 | | 验证方法 | 符号执行、模糊测试 | 对抗样本测试、鲁棒性评估 |
威胁模型的结构性差异
传统安全威胁建模通常从资产识别出发,界定需要保护的核心资源,然后分析攻击者画像——包括其能力、动机和可能的攻击路径,最终确定攻击面并制定相应的安全控制措施。这一框架在AI安全领域仍然适用,但其内涵发生了深刻变化。
在AI安全场景中,核心资产不仅包括模型本身,还包括训练数据——这是模型知识的来源,其泄露或被污染直接威胁模型的可信度;包括模型推理API——这是模型能力对外暴露的接口,攻击者可以通过大量查询来逆向推断模型架构和参数;还包括模型的输出空间——对于某些应用场景,模型输出的隐私信息本身就需要保护。
攻击者的画像也呈现出新的特征。传统的攻击者可能是外部入侵者或恶意内部人员,其目标通常是数据窃取或系统破坏。AI系统的攻击者可能是一个竞争对手,试图通过模型窃取攻击获取商业价值的模型;可能是一个恶意用户,通过提示注入或对抗输入来滥用AI助手的权限;也可能是一个内部数据科学家,试图在训练过程中植入后门或在部署的模型中留下可利用的弱点。这些不同的攻击者画像需要完全不同的防御策略。
确定性与随机性的张力
AI系统中存在一个独特的张力:模型的随机性与安全性的确定性需求。现代深度学习模型通常包含随机初始化、Dropout、采样步骤等随机性元素,这使得相同输入可能产生不同输出。在某些应用场景中(如对话生成),这种随机性是可接受的甚至是有益的特性;但在安全敏感的决策场景中(如自动驾驶的障碍物识别),缺乏确定性就意味着无法建立可验证的安全边界。
这一张力催生了AI安全领域的一个重要研究方向:可验证的鲁棒性(Verified Robustness)。与传统的基于测试的安全验证不同,可验证鲁棒性尝试使用数学证明来确保模型在某个输入扰动范围内不会改变其决策。虽然完全的可验证鲁棒性在实践中仍然难以达成,但这一方向代表了AI安全工程追求确定性保障的努力。
理解这些本质性差异,是建立适用于AI系统的威胁建模方法论的认知前提。后续小节将探讨如何将传统的威胁建模框架适配到AI场景,并建立系统化的攻击面分析方法。
1.3 AI系统攻击面的多维度识别与分类
建立AI系统的系统性攻击面分析,需要从多个维度对潜在的攻击向量进行分解。与传统软件系统类似,AI系统的攻击面可以从入口点(Entry Points)、资产(Assets)、信任边界(Trust Boundaries)等角度进行识别;但AI系统的独特架构又要求引入新的分析维度。本节将建立一个多层次的攻击面分类框架,涵盖输入层、推理层、输出层和数据层的完整攻击向量图谱。
输入层攻击面
输入层是AI系统与外部世界交互的首要接口,也是最直观、最频繁的攻击面。无论AI系统的具体应用形态如何——聊天机器人、图像识别系统、推荐引擎——它们都接收某种形式的输入并进行处理。这一层级的攻击向量主要包括:
对抗性输入构造(Adversarial Input Crafting) 是输入层最核心的威胁。攻击者通过精心设计的扰动来操纵模型的输出,而这种扰动对于人类观察者而言往往是不可察觉的。以图像分类模型为例,添加一层肉眼无法辨别的噪声模式,就可以使模型对图像的分类结果产生完全不同的判断。这类攻击利用了模型在高维输入空间中的决策边界脆弱性,其数学本质是梯度优化:攻击者利用模型的梯度信息来寻找使损失函数最大化的输入扰动方向。
对抗性输入分为两大类别:白盒攻击假设攻击者完全了解模型架构和参数,可以直接计算梯度来构造最优扰动;黑盒攻击则假设攻击者只能通过查询模型API来观察输入-输出映射,通过多次查询来推断模型行为并构造对抗样本。即使在黑盒场景下,对抗样本也往往具有一定的迁移性(Transferability)——在一个模型上构造的对抗样本,有较大概率能够成功攻击结构相似或训练数据相似的其他模型。
提示注入(Prompt Injection) 是针对大语言模型(LLM)系统的特定攻击向量。在传统的输入验证框架中,输入被假定为无害的数据。但在LLM系统中,输入本身就是可执行的内容——文本指令可以与用户提示混合,模型会按照指令序列依次处理。这种设计使得攻击者可以通过在输入中嵌入恶意指令来劫持模型的推理过程。例如,一个表面上是无害文档的文本,可能包含隐藏的指令来改变模型的系统提示、忽略安全限制或泄露对话上下文。
数据扰动(Data Perturbation) 发生在训练数据层面,攻击者无法直接操纵模型输入,但可以通过污染训练数据来影响模型行为。如果攻击者能够影响训练数据的收集或标注过程,就可以植入后门(Backdoor)——模型在正常输入下表现正常,但对于包含特定触发器模式的输入会做出攻击者预设的错误响应。后门攻击的威胁在于其隐蔽性:模型在标准测试集上可能表现优异,但在部署后面对特定构造的输入时会暴露恶意行为。
推理层攻击面
推理层是AI系统执行模型计算、生成输出的核心环节。这一层级的攻击面涉及模型本身的完整性和可用性,其威胁往往更加隐蔽但可能造成更严重的危害。
模型窃取(Model Extraction) 攻击针对的是AI系统的知识产权和商业价值。攻击者通过大量查询目标模型,分析其输出响应,尝试重建或近似原始模型的功能。这类攻击在模型即服务(Model-as-a-Service)场景下尤为严峻:API的便利性使得攻击者可以以较低的成本获取大量模型行为样本。模型窃取不仅造成直接的经济损失,还可能为后续的攻击提供基础——攻击者获得本地副本后,可以进行白盒对抗攻击、寻找后门或设计更精确的后续攻击。
模型逆向(Model Inversion) 攻击试图从模型的输出中推断训练数据或模型参数的敏感信息。对于包含个人隐私数据训练的模型,模型逆向攻击可能导致训练数据的泄露。例如,通过反复查询人脸识别模型并分析其响应,攻击者可能重构出训练集中特定个体的面部图像。模型逆向的威胁程度取决于模型对训练数据的记忆程度,这与模型的容量、数据分布的稀疏性等因素密切相关。
成员推断(Membership Inference) 攻击是模型逆向的一种变体,其目标是判断某个特定样本是否被用于模型训练。这类攻击利用了模型对训练数据过度拟合时产生的异常行为:如果一个样本被用于训练,模型对该样本的预测通常会表现出更高的置信度。虽然成员推断本身不直接泄露训练数据,但它可以为更严重的隐私泄露提供信息——在某些敏感场景下,仅知道某个人的数据被用于训练本身就构成隐私侵犯。
推理时拒绝服务(Inference-time DoS) 攻击试图通过构造特定输入来耗尽推理资源。与传统的DoS攻击不同,AI系统的推理时DoS可能利用模型的计算复杂性——某些输入模式可能导致推理过程消耗远超平均水平的时间和内存。一个典型的例子是针对Transformer模型的长度泛化(Length Generalization)攻击:模型在训练时主要接触短序列,对某些长序列输入的推理时间可能呈指数级增长,使得系统资源被耗尽。
输出层攻击面
输出层是AI系统与下游应用或用户交互的终端,其安全性直接关系到AI系统在实际部署中的可信度。
输出操控(Output Manipulation) 发生在模型输出被下游系统使用时。攻击者可能通过精心设计的输入来引导模型生成特定类型的输出,这些输出在下游系统中被误用或造成安全漏洞。例如,生成有害内容、通过信息注入来操纵下游决策、或生成能够绕过输出过滤器的规避性内容。更隐蔽的形式是间接提示注入(Indirect Prompt Injection):攻击者不是在用户直接提供的输入中注入恶意指令,而是在AI系统可能访问的外部资源(如文档、网页、数据库)中植入指令,期望系统自主读取并执行这些指令。
上下文污染(Context Contamination) 是大语言模型特有的输出层威胁。当对话上下文被攻击者部分控制时,恶意内容可能被混入上下文中,影响后续对话的生成。一个典型的场景是:当AI系统需要总结用户提供的长文档时,如果文档被植入恶意内容,可能会影响系统提示或污染对话历史,导致后续生成的内容带有偏见或有害信息。
多轮对话操纵(Multi-turn Dialogue Manipulation) 利用了AI助手在长对话中的上下文累积效应。攻击者可能通过一系列看似无害的交互来逐步建立对话状态,最终在某个关键时刻利用累积的上下文来实现恶意目标。这种攻击方式的威胁在于其长程依赖性:单独审视任何一轮对话都无法发现异常,只有在完整的对话序列中才能识别攻击模式。
数据层攻击面
数据层是AI系统的根基,包含训练数据、模型参数、向量数据库、配置信息等核心资产。对数据层的攻击往往具有持久性和隐蔽性。
训练数据投毒(Training Data Poisoning) 发生在模型的训练阶段。攻击者如果能够影响训练数据的收集、清洗或标注过程,就可以在数据层面植入恶意信号。这类攻击的实现方式多样:可以通过影响数据源来污染原始数据,可以通过在数据增强过程中注入扰动模式,可以通过在标注阶段引入标签噪声,甚至可以在联邦学习场景下通过恶意参与方来污染聚合后的模型。投毒攻击的有效性取决于多个因素,包括攻击者对训练过程的可见度、训练数据的规模和多样性、以及模型架构的鲁棒性。
向量数据库攻击(Vector Database Attack) 针对的是检索增强生成(RAG)系统的核心组件。RAG系统依赖向量相似度搜索来检索相关信息,如果攻击者能够操纵向量数据库的内容,就可以影响检索结果,进而影响最终生成的回答。这包括通过注入虚假文档来污染检索结果、通过操纵向量表示来引导不相关的检索匹配、以及通过删除或修改关键文档来影响系统知识完整性。
模型参数篡改(Model Parameter Tampering) 涉及对模型权重文件的直接修改。如果攻击者能够获得模型文件的写入权限,就可能直接修改模型参数来植入后门、削弱安全机制或引入偏见。这种攻击方式与传统的软件供应链攻击有很强的关联性——一旦模型在训练、导出、部署的某个环节被篡改,后续所有使用该模型的应用都将受到影响。
攻击面的交互与级联
理解AI系统攻击面的另一个关键维度是攻击向量之间的交互和级联。在复杂的AI系统中,单一攻击向量可能触发连锁反应,形成完整的攻击链(Attack Chain)。例如,对输入层的一次成功的提示注入攻击,可能导致模型忽略其安全系统提示,随后生成的输出可能包含用于进一步攻击的指令,这些指令被下游系统执行后可能导致数据泄露,而数据泄露又可能为后续更精确的模型窃取攻击提供信息。
这种攻击级联的可能性要求安全分析不能孤立地审视各个攻击向量,而需要建立系统性的攻击面视图,识别潜在的跨层级攻击路径。本章后续将通过一个RAG系统的完整攻击链分析来展示这种系统性方法论的价值。
```mermaid flowchart TD subgraph InputLayer[输入层] A1[对抗性输入] A2[提示注入] A3[数据扰动] end
subgraph InferenceLayer[推理层] B1[模型窃取] B2[模型逆向] B3[成员推断] B4[推理时DoS] end
subgraph OutputLayer[输出层] C1[输出操控] C2[上下文污染] C3[多轮对话操纵] end
subgraph DataLayer[数据层] D1[训练数据投毒] D2[向量数据库攻击] D3[模型参数篡改] end
A1 --> B1 A2 --> C1 A2 --> C2 B1 --> B2 B2 --> D1 C1 --> D2 D1 --> B1 D3 --> B2 ```
*图1.1 AI系统攻击面向量分布与交互关系图*
1.4 威胁建模方法论:STRIDE与PASTA的AI场景适配
将成熟的威胁建模方法论适配到AI安全场景,是建立系统性AI安全分析能力的关键步骤。本节将深入探讨STRIDE和PASTA两种主流威胁建模框架在AI领域的适配与扩展,展示如何将传统方法论的框架优势与AI系统的独特特征相结合。
STRIDE威胁模型的AI适配
STRIDE是微软开发的一种成熟的威胁分类方法,按威胁类型将安全威胁分为六个类别:Spoofing(欺骗)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、Denial of Service(拒绝服务)和Elevation of Privilege(权限提升)。这一框架为威胁分析提供了结构化的分类视角,但在AI场景下需要对每个类别进行重新诠释和扩展。
欺骗(Spoofing) 在传统软件中通常指伪造身份来获取未授权访问。在AI场景下,欺骗具有更丰富的内涵。身份欺骗仍然适用——攻击者可能伪装成合法用户来访问AI服务。但更值得关注的是模型欺骗:攻击者通过对抗性输入来欺骗AI模型,使其产生错误判断。图像分类器被欺骗将停止标志识别为限速标志,垃圾邮件过滤器被欺骗将恶意邮件判定为正常——这些都是AI系统中欺骗威胁的具体表现。此外,数据欺骗也是一个重要维度:攻击者通过投毒训练数据来欺骗整个模型,使其在学习过程中获得错误的关联知识。
篡改(Tampering) 在传统场景中指对数据或代码的未授权修改。在AI系统中,篡改的层次更加多样。模型篡改涉及对模型参数的直接修改,这可能发生在训练阶段(通过投毒)或部署阶段(通过供应链攻击)。数据篡改涉及对训练数据或推理上下文的修改,这在RAG系统中尤为突出——攻击者通过篡改检索到的文档来影响生成结果。配置篡改涉及