name: re-ai-attack
type: atomic
description: >
AI 模型安全评估与取证(行为层):extraction assessment(API 黑盒提取评估)、
fingerprint verification(行为指纹与归属验证)、privacy leakage evaluation(成员推断/隐私泄露评估)、
robustness evaluation(对抗鲁棒性评估)。
触发词:API模型窃取、黑盒模型复制、模型指纹、成员推断、对抗样本、行为水印、模型安全评估、隐私泄露评估。
guard: {"require_authorization": true, "forbidden": ["unauthorized_api_testing", "bypass_access_control", "model_theft_against_third_party"]}
capabilities: [ai-model-analysis]
AI 模型安全评估与取证(行为层)
CORE RULE:攻击面由可观测性决定,不由攻击名称决定
先问接口/资产给什么,再选攻击面——三者是三个世界:
| 可观测性 | 世界 |
|---|
logits available(API 返回概率/logits) | 蒸馏(soft label)、指纹、成员推断全部可用 |
labels only(API 只返回标签) | 降级:决策边界采样、黑盒迁移、影子模型 |
weights available(拿到模型文件) | 白盒:梯度方法(FGSM/PGD)、直接比对、阈值成员推断 |
同一攻击名在不同可观测性下可行性与实现完全不同——先按「输入资产盘点」确认 API 输出字段/模型文件,再选路径。
任务分类器(intent → 路径)
用户目的识别,命中即走对应分支;未命中落入下方「何时使用」判断:
| 用户目的(intent) | 路径 |
|---|
| 怀疑模型被复制 / 模型被盗用 / 嫌疑副本比对 | → fingerprint(模型指纹/水印检测,步骤 2) |
| 判断训练数据泄露 / 某样本是否在训练集 | → membership(成员推断,步骤 3) |
| 测试 API 是否容易被复制 / 接口可提取性 | → extraction(模型提取,步骤 1) |
| 测试鲁棒性 / 对抗样本效果 / 防御验证 | → adversarial(对抗样本评估,步骤 4) |
输入资产盘点(INPUT INVENTORY)
路径命中后先确认已有资产——不同资产组合决定可走路径,缺资产先向用户索要或说明局限:
| 资产 | 影响路径 |
|---|
| API endpoint(+ query budget) | extraction(步骤 1)必需——无 endpoint 无法提取 |
| model file(本地模型/权重) | fingerprint 比对与成员推断(步骤 2/3)可用;无则只能走 API 侧 |
| training dataset(疑似训练集样本) | membership(步骤 3)必需——无样本无法推断成员 |
| suspected copy(嫌疑副本) | fingerprint(步骤 2)必需——无副本无从比对 |
| baseline model(受害者/参考模型) | fingerprint 比对必需——无基线只有副本无法定指纹 |
| watermark hypothesis(水印假设) | fingerprint 水印验证(步骤 2)——有具体假设(触发集/后门)可定向验证 |
规则:intent 命中后检查该路径所需资产;缺失 → 先向用户询问(有无/能否提供),用户无法提供则说明该路径不可执行并转可用路径。
何时使用 / 何时不用
- 用:模型泄露/窃取取证、API 模型攻击评估(提取/指纹)、训练数据泄露判定、模型鲁棒性评估(对抗样本)
- 用:水印/指纹验证(嫌疑副本与受害者模型比对)
- 用:模型 API 一致性审计(同输入多查询/多端点比对,找副本/代理)
- 用:鲁棒性基线评估(上线前/防御验证前测一遍干净与扰动准确率)
- 不用:模型文件格式解析与权重提取(转 [[re-ai-model]]);模型训练/微调(非逆向);部署加固(防御侧不在本技能)
- 不用:无授权目标(红线:仅授权评估场景;授权边界见 [[gotchas]])
- RE_AUTH 前置(guard 联动):本技能 guard.require_authorization=true——执行前确认授权上下文(triage 第 0 步
RE_AUTH):owned / ctf / research 可执行;unknown 先询问目标归属(所有权 / 测试授权 / 研究环境),未说明只做静态评估不进入动态步骤
- 不用:提示注入/提示泄露评估(LLM 侧攻击面)与 API 服务本身的注入/越权测试(应用侧漏洞不在本技能)
工具准备
python3(核心运行时)
- 各平台安装见 [[re-python]] 工具准备
模型库(torch / tensorflow,按目标格式选)
- 多平台:
pip install torch / pip install tensorflow(按硬件可选 CPU 版;按目标框架选一即可,蒸馏脚本只依赖其张量操作)
- 验证:
python3 -c "import torch"
攻击评估库(ART,可选)
- 多平台:
pip install adversarial-robustness-toolbox(对抗鲁棒性工具箱,覆盖提取/指纹/对抗样本攻击模块)
- 验证:
python3 -c "import art"
查询接口客户端(API 目标)
- 多平台:
pip install requests;验证: python3 -c "import requests"
- 可视化(分布对比图,可选):
pip install matplotlib
操作步骤
按顺序执行;仅限授权评估场景(红线:不针对未授权目标)。方法学依据:模型提取(API 查询蒸馏)、成员推断(影子模型)、对抗样本(FGSM/PGD)为公开研究框架,实现细节按目标模型域调整(见 [[decision-tree]] 分支)。
-
模型提取攻击(Overview:通过 API 查询重建近似模型——蒸馏):
- Checklist:
- 确认授权与用途(评估/取证声明记录)
- 接口探测:读 API 文档/试查询 → 确认限额与输出字段(logits/概率或仅标签——可观测性决定策略,见 CORE RULE)
- 查询采样(输入分布覆盖:代表性输入 + 边界扰动 + 标签分布均衡)
- 蒸馏训练(以 API 输出为教师标签)
- 评估近似度(同输入集输出对比:一致率 + 标签分布对比,不是只看精度)
- 实现经验(soft label 优先、边界扰动、评估一致性、蒸馏基线、查询日志等)见 [[implementation-notes]]
- 仅标签时:降级为决策边界采样(输出分布重建受限,见 [[gotchas]] 接口坑);查询预算内先小批估计(坑 1)
-
模型指纹/水印检测(Overview:行为级水印——模型表现出来是什么:trigger 触发响应 / 查询响应 / 黑盒指纹;文件级水印(权重 pattern/metadata/tensor hash)走 [[re-ai-model]]):
- Checklist:
- 嵌入检测:输入扰动(特定噪声/触发器)→ 输出特征比对(水印触发行为)
- 指纹提取:模型行为签名(代表性输入集输出向量)→ 与疑似副本比对
- 窃取取证:嫌疑模型与受害者模型的指纹距离 → 阈值判定相似(阈值校准见 [[decision-tree]] 证据分级)
- 产出:指纹向量 + 距离报告(距离值 + 阈值依据 + 置信度)
- 实现经验(输入集难度分层、归一化、反例对照组、抹除对抗、时效、水印枚举)见 [[implementation-notes]]
- 抹除对抗:剪枝/微调/蒸馏会削弱指纹——用鲁棒指纹并标注「可能被抹除」(见坑 3)
-
成员推断(Overview:判定某样本是否在训练集中):
- Checklist:
- 确认输入形态:目标模型输出的概率向量 + 样本特征(可观测性见 CORE RULE)
- 选攻击类型:白盒(有 loss)用阈值法;黑盒(只有输出)用影子模型(同分布代理模型校准)
- 对照基线:同分布随机样本(非训练样本)的损失分布作基准线
- 输出:统计判定(ROC/阈值曲线、给定 FPR 下的 TPR、置信区间),不是确定性结论
- 实现经验(基线设计、隐私脱敏、统计口径)见 [[implementation-notes]]
- 局限:只能给出统计判定(误报控制:阈值校准;隐私保护训练目标可对抗,见 [[gotchas]])
-
对抗样本基础(Overview:鲁棒性评估与防御验证,非攻击部署):
- Checklist:
- 选路径:白盒(模型权重可加载且 loss 可微)用梯度扰动(FGSM/PGD);黑盒用查询/迁移扰动(可观测性见 CORE RULE)
- 设扰动预算(epsilon)——评估口径可比
- 评估对照:先测干净样本基线(扰动前准确率),报告扰动前后对比
- 实现经验(预算梯度、迁移性边界)见 [[implementation-notes]]
- 边界:对抗样本迁移性差(白盒扰动对黑盒目标不保证有效,见 [[gotchas]])
-
评估报告与存证:
- 三要素全记录:方法(采样集/蒸馏超参/距离阈值)、结果(指标)、参数(随机种子/框架版本)
- 攻击脚本与评估产物 sha256 存档;结论按 [[re-analyze/analysis-contract]] 交付
跨域联合
- [[re-ai-model]]:消费文件级证据(文件级证据 → 行为级验证单向流)——有模型文件时先经 re-ai-model 提取结构/权重/文件级 fingerprint,再在本技能做行为一致性验证;仅 API(无文件)时无文件侧输入,直接黑盒评估
- [[re-python]]:Python 工具链基础
- [[re-feedback]]:攻击案例经验沉淀(脱敏后)
- [[re-analyze/analysis-contract]]:评估结论交付格式
常见坑与陷阱
- 查询预算限制:现象——API 限流/计费中断;原因——高查询量;对策——预算内采样设计(先小批估计),记录已用配额
- 置信度不可得时降级:现象——接口只返回标签;原因——服务端裁剪输出;对策——决策边界采样 + 标注局限,不硬造概率
- 水印被抹除:现象——指纹比对失败;原因——嫌疑方做了剪枝/微调/蒸馏;对策——用鲁棒指纹(多触发器)并标注「可能被抹除」;距离接近但未达阈值时输出「弱相似」而非「无关」
- 成员推断误报:现象——统计判定错误;原因——阈值偏差/影子模型分布不匹配;对策——影子模型校准 + 报告置信区间
- 评估指标误导:现象——提取模型「精度高」但输出分布完全不同;原因——只比精度不比分布;对策——一致率 + 标签分布 + 校准度多指标联合
- 提取不收敛:现象——蒸馏效果差;原因——采样分布与目标分布不匹配/接口输出裁剪;对策——按目标数据域重采样,标注数据分布假设
- 输出解析错误:现象——logits 与标签错位;原因——API 响应字段解析错;对策——先打印原始响应核对字段再批量
- 结果不可复现:现象——复跑结果不同;原因——随机种子/采样顺序未固定;对策——固定 seed 并记录
- 对比对象口径错:现象——指纹比对用了不同任务模型;原因——未确认任务口径;对策——比对前确认任务/标签空间一致
- 多端点口径差异:现象——同一模型不同端点输出不同;原因——A/B 路由/版本不同;对策——锁定端点做前后对比,标注端点标识
- 批查询触发风控:现象——正常速率查询被风控;原因——触发速率阈值;对策——查询节奏控制(限速/随机间隔),记录风控事件
- 资源预算:现象——蒸馏 OOM/长任务中断;原因——学生模型过大/时长估计不足;对策——分阶段 checkpoint(采样/训练分步存档),小批量/CPU 降级
- 授权边界:现象——对未授权 API 发起攻击测试;原因——范围未确认;对策——先确认授权(使用边界红线)
- 场景分支与证据分级见 [[decision-tree]];边界与反例见 [[gotchas]]