--- 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]] 分支)。 1. **模型提取攻击**(Overview:通过 API 查询重建近似模型——蒸馏): - Checklist: 1. 确认授权与用途(评估/取证声明记录) 2. 接口探测:读 API 文档/试查询 → 确认限额与输出字段(logits/概率或仅标签——可观测性决定策略,见 CORE RULE) 3. 查询采样(输入分布覆盖:代表性输入 + 边界扰动 + 标签分布均衡) 4. 蒸馏训练(以 API 输出为教师标签) 5. 评估近似度(同输入集输出对比:一致率 + 标签分布对比,不是只看精度) - 实现经验(soft label 优先、边界扰动、评估一致性、蒸馏基线、查询日志等)见 [[implementation-notes]] - 仅标签时:降级为决策边界采样(输出分布重建受限,见 [[gotchas]] 接口坑);查询预算内先小批估计(坑 1) 2. **模型指纹/水印检测**(Overview:**行为级**水印——模型表现出来是什么:trigger 触发响应 / 查询响应 / 黑盒指纹;文件级水印(权重 pattern/metadata/tensor hash)走 [[re-ai-model]]): - Checklist: 1. 嵌入检测:输入扰动(特定噪声/触发器)→ 输出特征比对(水印触发行为) 2. 指纹提取:模型行为签名(代表性输入集输出向量)→ 与疑似副本比对 3. 窃取取证:嫌疑模型与受害者模型的指纹距离 → 阈值判定相似(阈值校准见 [[decision-tree]] 证据分级) 4. 产出:指纹向量 + 距离报告(距离值 + 阈值依据 + 置信度) - 实现经验(输入集难度分层、归一化、反例对照组、抹除对抗、时效、水印枚举)见 [[implementation-notes]] - 抹除对抗:剪枝/微调/蒸馏会削弱指纹——用鲁棒指纹并标注「可能被抹除」(见坑 3) 3. **成员推断**(Overview:判定某样本是否在训练集中): - Checklist: 1. 确认输入形态:目标模型输出的概率向量 + 样本特征(可观测性见 CORE RULE) 2. 选攻击类型:白盒(有 loss)用阈值法;黑盒(只有输出)用影子模型(同分布代理模型校准) 3. 对照基线:同分布随机样本(非训练样本)的损失分布作基准线 4. 输出:统计判定(ROC/阈值曲线、给定 FPR 下的 TPR、置信区间),不是确定性结论 - 实现经验(基线设计、隐私脱敏、统计口径)见 [[implementation-notes]] - 局限:只能给出统计判定(误报控制:阈值校准;隐私保护训练目标可对抗,见 [[gotchas]]) 4. **对抗样本基础**(Overview:鲁棒性评估与防御验证,非攻击部署): - Checklist: 1. 选路径:白盒(模型权重可加载且 loss 可微)用梯度扰动(FGSM/PGD);黑盒用查询/迁移扰动(可观测性见 CORE RULE) 2. 设扰动预算(epsilon)——评估口径可比 3. 评估对照:先测干净样本基线(扰动前准确率),报告扰动前后对比 - 实现经验(预算梯度、迁移性边界)见 [[implementation-notes]] - 边界:对抗样本迁移性差(白盒扰动对黑盒目标不保证有效,见 [[gotchas]]) 5. **评估报告与存证**: - 三要素全记录:方法(采样集/蒸馏超参/距离阈值)、结果(指标)、参数(随机种子/框架版本) - 攻击脚本与评估产物 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]]