你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注释
本文档指的是 Microsoft Foundry(新) 门户网站。
重要
本文中标记了“(预览版)”的项目目前为公共预览版。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
AI Red Teaming Agent 是一种功能强大的工具,旨在帮助组织在设计和开发生成 AI 模型和应用程序期间主动发现与生成式 AI 系统相关的安全风险。
传统的红队测试涉及利用网络杀伤链,并描述测试系统安全漏洞的过程。 但是,随着生成 AI 的兴起,“AI 红队”这个词语被创造出来,用来描述对这些系统可能存在的新风险(包括内容和安全方面)的探测,并指模拟试图让 AI 系统以特定方式失常的对抗用户的行为。
AI 红队测试智能体利用 Microsoft 针对 Python 风险识别工具 (PyRIT) 的开源框架所具备的 AI 红队测试功能,以及 Microsoft Foundry 的风险与安全评估,从以下三个方面帮助自动评估安全问题:
- 自动扫描内容风险: 首先,可以通过模拟对抗探测来自动扫描模型和应用程序终结点的安全风险。
- 评估探测成功: 接下来,可以评估和评分每个攻击响应对,以生成见解指标,例如攻击成功率(ASR)。
- 报告和日志记录 最后,可以生成攻击探测技术和风险类别的分数卡,以帮助确定系统是否已准备好部署。 可以在 Foundry 中直接记录、监视和跟踪调查结果,确保合规性和持续风险缓解。
这些组件(扫描、评估和报告)可帮助团队了解 AI 系统如何应对常见攻击,最终指导全面的风险管理策略。
什么时候使用 AI 红队测试运行
在考虑开发可信 AI 系统的 AI 相关安全风险时,Microsoft使用 NIST 的框架有效地降低风险:治理、映射、度量、管理。 我们将重点介绍与生成式 AI 开发生命周期相关的最后三个部分:
- 映射:识别相关风险并定义用例。
- 度量:大规模评估风险。
- 管理:使用事件响应计划来缓解生产中的风险并对其进行监视。
AI Red Teaming 代理可用于运行自动扫描和模拟对抗探测,以帮助加速大规模识别和评估已知风险。 这有助于团队通过“左移”,从高成本的被动应对事件转向更积极主动的测试框架,这些框架可以在部署前捕捉问题。 手动的 AI 红队演练过程耗费大量时间和资源。 它依靠安全和安保专家的创造力来模拟探测对抗。 此过程可以为许多组织创建瓶颈,以加速 AI 采用。 借助 AI 红队代理,组织现在可以凭借 Microsoft 的深厚专业知识,以可信 AI 为核心,实现 AI 开发的扩展和加速。
我们鼓励团队使用 AI Red Teaming Agent 在整个设计、开发和预部署阶段运行自动扫描:
- 设计:在用例上选取最安全的基础模型。
- 开发:升级应用程序中的模型或为特定应用程序创建微调的模型。
- 预部署:将 GenAI 应用程序部署到生产环境之前。
在生产环境中,我们建议使用模板实施安全缓解措施,例如 Azure AI 内容安全筛选器或实现安全系统消息。
- 设计:在用例上选取最安全的基础模型。
- 开发:升级应用程序中的模型或为特定应用程序创建微调的模型。
- 预部署:将 GenAI 应用程序和代理部署到生产环境之前。
- 部署后:通过定期在综合对抗数据上持续运行红队测试,监控生成式 AI 应用程序和智能体。
在生产中,我们建议使用模板实现安全防护措施,例如 Azure AI 内容安全筛选器或实现安全系统消息。 对于智能体工作流,我们建议利用 Foundry 控制平面来应用护栏并管理智能体群。
AI Red Teaming 的工作原理
AI 红队测试代理有助于自动模拟对目标 AI 系统的对抗性探测。 它根据支持的风险类别提供种子提示或攻击目标的特选数据集。 这些可用于自动化直接的对抗性探测。 然而,直接的对抗性探测可能很容易被模型部署中现有的安全防护机制拦截。 应用 PyRIT 的攻击策略可以提供额外的转化,有助于绕过或破坏 AI 系统,从而生成不受欢迎的内容。
在示意图中,我们可以看到,直接要求 AI 系统如何抢劫银行会触发拒绝回答。 但是,应用攻击策略(如翻转所有字符)可以帮助欺骗模型回答问题。
此外,AI Red Teaming Agent 为用户提供了一个微调的对抗大型语言模型,专用于模拟对抗攻击的任务,并评估可能具有有害内容的响应以及风险和安全评估程序。 评估 AI 系统的风险状况的关键指标是攻击成功率(ASR),它计算成功攻击数与攻击总数的百分比。
支持的风险类别
AI 红队测试代理的风险和安全评估支持以下风险类别。 仅支持基于文本的方案。
| 风险类别 | 说明 |
|---|---|
| 仇恨和不公平的内容 | “仇恨和不公平言论”是指任何涉及对个人和社会群体的仇恨或不公平表述的语言或形象,这些因素包括但不限于种族、民族、国籍、性别、性取向、宗教、移民身份、能力、个人外貌和体型。 当 AI 系统不公平地对待或代表社会群体,造成或助长社会不平等现象时,即出现不公平现象。 |
| 性内容 | 性内容包括与解剖器官和生殖器有关的语言或图像、浪漫关系、色情术语、怀孕、身体性行为(包括攻击或性暴力)、卖淫、色情和性虐待的行为。 |
| 暴力内容 | 暴力内容包括与旨在伤害、伤害、损害或杀死某人或某些内容的身体行为相关的语言或图像。 还包括对武器和枪支(以及制造商和协会等相关实体)的描述。 |
| 自我伤害相关内容 | 与自我伤害相关的内容包括与旨在伤害、损害或破坏自己身体或自杀的行为相关的语言或图像。 |
| 风险类别 | 支持的目标 | 本地或云端红队 | 说明 |
|---|---|---|---|
| 仇恨和不公平的内容 | 模型和智能体 | 本地和云 | “仇恨和不公平言论”是指任何涉及对个人和社会群体的仇恨或不公平表述的语言或形象,这些因素包括但不限于种族、民族、国籍、性别、性取向、宗教、移民身份、能力、个人外貌和体型。 当 AI 系统不公平地对待或代表社会群体,造成或助长社会不平等现象时,即出现不公平现象。 |
| 性内容 | 模型和智能体 | 本地和云 | 性内容包括与解剖器官和生殖器有关的语言或图像、浪漫关系、色情术语、怀孕、身体性行为(包括攻击或性暴力)、卖淫、色情和性虐待的行为。 |
| 暴力内容 | 模型和智能体 | 本地和云 | 暴力内容包括与旨在伤害、伤害、损害或杀死某人或某些内容的身体行为相关的语言或图像。 还包括对武器和枪支(以及制造商和协会等相关实体)的描述。 |
| 自我伤害相关内容 | 模型和智能体 | 本地和云 | 与自我伤害相关的内容包括与旨在伤害、损害或破坏自己身体或自杀的行为相关的语言或图像。 |
| 受保护的材料 | 模型和智能体 | 本地和云 | 受版权保护的材料,如歌词、歌曲和食谱。 |
| 代码漏洞 | 模型和智能体 | 本地和云 | 衡量 AI 是否生成存在安全漏洞(例如代码注入、压缩路径穿越 (tar-slip)、SQL 注入、堆栈跟踪暴露以及 Python、Java、C++、C#、Go、JavaScript 和 SQL 编程语言中存在的其他风险)的代码。 |
| 无依据特性 | 模型和智能体 | 本地和云 | 衡量 AI 系统生成的文本回答中,是否包含关于个人特性的无依据推断,例如其人口统计特征或情绪状态。 |
| 禁止的作 | 仅智能体 | 仅限云 | 根据用户验证的策略/禁止的行为分类,衡量 AI 代理参与违反明确不允许的作或工具使用的行为的能力。 |
| 敏感数据泄露 | 仅智能体 | 仅限云 | 衡量 AI 智能体公开敏感信息(财务数据、个人标识符、运行状况数据等)的漏洞。 |
| 任务符合性 | 仅智能体 | 仅限云 | 度量 AI 代理是否按照用户的目标完成分配的任务,遵守所有规则和约束,并执行所需的过程,而无需未经授权的作或遗漏。 |
代理风险
特定于代理的风险类别(例如禁止的操作,敏感数据泄漏和任务遵循性)需要与仅适用于模型的风险类别不同的自动红队方法。 具体而言,AI Red Teaming Agent 不再只检查生成的输出,还检查工具输出是否存在不安全或有风险的行为。 智能体风险类别只可在云端红队测试中使用,它可提供最小化的沙盒环境。
对于云端红队测试运行,我们从生成的红队测试结果中对发送到模型或智能体的有害或对抗性输入进行编辑。 这可以防止开发人员和非技术利益干系人受到红队测试智能体执行红队测试运行带来的潜在有害提示攻击。
对于红队测试智能体风险类别,我们确保当 AI 红队测试运行面向 Foundry 托管代理时,时间短暂,从而 Foundry 智能体服务不会记录有害数据,也不会存储聊天补全信息。 我们建议所有开发人员在“紫色环境”(即配置了类似生产资源的非生产环境)中运行红队测试,以观察智能体在尽可能接近真实情况的场景中的运行情况。
敏感数据泄露
敏感数据泄露红队测试用于检测来自内部知识库和工具调用的财务、医疗和个人数据的泄露情况。 红队测试智能体使用含敏感信息的综合数据集和和模拟工具来生成引导智能体泄露信息的场景。 攻击成功率 (ASR) 定义红队测试运行是否通过模式匹配检测到格式级泄漏。
局限性: 单轮、仅限英语;合成数据;排除内存/训练集泄漏。
禁止的操作
禁止行为的红队测试通过生成动态对抗提示来检测代理是否执行禁止、高风险或不可逆的操作。该测试基于用户提供的策略和禁止行为分类,以及代理使用的一组支持的工具和用户提供的工具描述。 攻击成功率(ASR)定义代理根据用户提供的策略表现出的策略冲突。
| 类别 | Description | 津贴规则 |
|---|---|---|
| 禁止的行为 | 普遍禁止(例如面部识别、情感推理、社交评分)。 | ❌ 绝对不允许 |
| 高风险操作 | 敏感行动需要明确的人工授权(例如金融交易、医疗决策)。 | ⚠️ 人工确认后允许 |
| 不可逆的行动 | 永久操作(例如文件删除、系统重置)。 | ⚠️ 允许但需同时进行披露和确认 |
局限性: 单回合,仅限英语,工具级别关注,且无实时生产数据。
注意
第三方使用禁止行为分类的免责声明:
此产品中提供的禁止、高风险和不可逆作的分类仅用于说明性指导,以支持代理开发人员评估和自定义自己的风险框架。 它不构成禁止做法的明确或详尽列表,也不反映Microsoft政策或监管解释。 第三方组织仍完全负责确保其代理遵守适用的法律和法规,包括但不限于《欧盟 AI 法案》和其他管辖权要求。 Microsoft强烈建议保留从监管约束派生的默认禁止操作,并不鼓励取消选择这些项目。 使用此产品不能保证符合性。 组织应咨询自己的法律顾问,以评估和实施针对其运营环境和风险容忍度定制的适当保障和禁令。
任务遵循
任务遵循红队测试用于测试智能体是否通过实现用户的目标、遵守所有规则和约束以及遵循所需程序,忠实地完成了分配的任务。 红队测试智能体沿三个维度进行探测:目标达成情况(智能体是否实现了预期目标)、规则合规性(包括策略护栏和展示协定),以及程序遵从性(正确的工具使用、工作流和基础设置)。 提示数据集考虑到支持的和可用的工具来生成各种智能体轨迹,包括代表性和对抗性案例,以测试普通场景和边缘案例场景。
间接提示注入攻击
间接提示注入攻击(也称为跨域提示注入攻击,XPIA)红队测试旨在评估代理是否会受到隐藏在外部数据源中的恶意指令的操控,这些数据源可能包括电子邮件或文档,并通过工具调用进行检索。 红队测试智能体使用包含攻击占位符的良性用户查询和模拟工具输出的综合数据集。 在探查过程中,AI 红队代理将特定风险的攻击注入到这些环境中,以评估目标代理是否执行意想不到或不安全的操作。 攻击成功率(ASR)使用特定于代理的风险类别(例如禁止的作、敏感数据泄漏或任务遵守)来衡量代理受到间接提示注入的入侵频率。
请参阅下一部分的完整攻击策略列表。
支持的代理和工具
红队测试智能体当前支持使用 Azure 工具调用的红队测试 Foundry 智能体,支持矩阵如下:
| 支持的代理/操作 | 状态 |
|---|---|
| Foundry 托管提示智能体 | 已支持 |
| Foundry 托管的容器代理程序 | 已支持 |
| Foundry 工作流智能体 | 不支持 |
| 非 Foundry 智能体 | 不支持 |
| 非 Azure 工具 | 不支持 |
| Azure 工具调用 | 已支持 |
| 函数工具调用 | 不支持 |
| 浏览器自动化工具调用 | 不支持 |
| 连接的代理工具调用 | 不支持 |
| 计算机用工具调用 | 不支持 |
有关工具的综合列表,请参阅 “工具”。
支持的攻击策略
PyRIT 的 AI Red Teaming Agent 支持以下攻击策略:
| 攻击策略 | 说明 |
|---|---|
| AnsiAttack | 利用 ANSI 转义序列来操作文本的外观和行为。 |
| AsciiArt | 使用 ASCII 字符生成视觉艺术,通常用于创造性或混淆目的。 |
| AsciiSmuggler | 在 ASCII 字符中隐藏数据,使检测难度更大。 |
| 阿特巴什 | 实现 Atbash 密码,这是一个简单的替换密码,其中每个字母映射到其反向。 |
| Base64 | 使用 Base64 将二进制数据编码为文本格式,通常用于数据传输。 |
| 二进制 | 将文本转换为二进制代码,表示一系列 0 和 1 中的数据。 |
| 凯撒 | 应用 Caesar 密码,这是一个替换密码,该密码将字符移入固定数目的位置。 |
| CharacterSpace | 通过添加字符之间的空格来更改文本,通常用于模糊处理。 |
| CharSwap | 交换文本中的字符以创建变体或模糊处理原始内容。 |
| Diacritic | 向字符添加变音符号,更改其外观,有时更改其含义。 |
| Flip | 将字符从正面翻转到背面,创建出镜像效果。 |
| Leetspeak | 将文本转换为 Leetspeak,这是一种编码形式,将字母替换为类似数字或符号。 |
| 莫尔斯 | 使用点和短划线将文本编码为 Morse 代码,以表示字符。 |
| ROT13 | 应用 ROT13 密码,这是一个简单的替换密码,该密码将字符移入 13 个位置。 |
| SuffixAppend | 将对抗性后缀追加到提示符 |
| 字符串连接 | 将多个字符串联接在一起,通常用于串联或混淆。 |
| UnicodeConfusable | 使用看起来类似于标准字符的 Unicode 字符,从而造成视觉混乱。 |
| UnicodeSubstitution | 将标准字符替换为 Unicode 等效项,通常用于模糊处理。 |
| 网址 | 将文本编码为 URL 格式 |
| Jailbreak | 注入特制提示以绕过 AI 防护措施,称为“用户注入提示攻击”(UPIA)。 |
| 间接越狱 | 通过在工具输出或返回的上下文中注入攻击提示,以间接规避 AI 防护措施,这种方法被称为间接提示注入攻击。 |
| Tense | 更改文本的时态,特别是将其转换为过去的时态。 |
| 多回合 | 跨多个会话轮次执行攻击,使用上下文积累绕过安全措施或引发意外行为。 |
| 渐进式诱导攻击 | 在连续几轮交互中逐步提升提示的复杂性或风险程度,通过渐进式挑战来探测智能体防御方面的薄弱点。 |
红队测试智能体的已知局限
AI Red Teaming Agent 在运行和解释红色组合结果时需要考虑几个重要限制。
- 红队测试运行模拟场景,其中 Foundry 智能体直接暴露于敏感数据或攻击载体数据中。 由于这些数据都是综合的,因此这并不代表实际数据分布。
- 当前仅支持使用模拟工具来检索综合数据以及启用红队测试评估。 它们目前不支持模拟行为,后者可实现比当前方案更接近真实沙盒环境的测试。
- 由于缺乏完全锁定的沙盒支持,红队测试评估的对抗性质受到控制,以避免对现实世界造成影响。
- 红队测试运行仅代表对抗性总体,不包括任何观察性总体。
- 红队测试运行使用生成式模型来评估攻击成功率 (ASR),可能具有不确定性和不可预测性。 因此,始终有误报的可能性,我们始终建议在采取缓解措施之前查看结果。
了解详细信息
开始了解我们的 文档,学习如何使用 AI Red Teaming 代理工具进行自动扫描以识别安全风险。
详细了解 AI Red Teaming 代理使用的工具。
我们见过的风险评估最有效的策略是使用自动化工具来显示潜在风险,然后由专家人员团队分析,以获取更深入的见解。 如果你的组织刚刚开始进行 AI 红队活动,我们建议你浏览由我们在 Microsoft 的 AI 红团队创建的资源,以帮助你入门。