AI对抗攻击防范要防什么,常见攻击类型与判断条件
对抗攻击防范的关键不是找到某个万能开关,而是先判断攻击发生在哪个环节。
同一个模型,训练阶段被投毒、推理阶段被扰动输入、接口层被注入恶意指令,对应的防护手段完全不同。
如果你刚接手一个 AI 应用,建议先按“数据进、模型出、接口挡”三层梳理现状,再决定补哪一块。
先分清攻击发生在哪一层
对抗攻击是一个统称,实际包括几类差别很大的问题:
- 对抗样本:在输入里加入人眼几乎看不出的微小扰动,让模型判断出错。常见于图像识别、文本分类等场景。
- 提示注入:在用户输入或外部文档中夹带指令,诱导大模型忽略原有规则。属于应用层问题,和模型参数无关。
- 数据投毒:在训练数据里混入被篡改的样本,让模型学到错误规律。
- 后门攻击:模型在特定触发词或图案出现时才输出异常结果,平时表现正常,隐蔽性更强。
判断方法很直接:如果换掉输入就能复现错误,先查对抗样本和输入校验;
如果模型对某类固定触发词反应异常,考虑后门;
如果模型本身正常,只是被输入里的指令带偏,那就是提示注入,重点在应用层做隔离。
推理阶段能做的最小防护
推理阶段是大多数应用最先要处理的地方,因为它是攻击者能直接接触到的入口。
输入校验要放在业务逻辑之前。
比如对文本输入做长度限制和字符白名单,对图像输入限制分辨率和格式,避免超大文件或异常编码直接进入模型。
下面是 Nginx 层限制请求体大小的示例,能挡住一部分超大输入:
client_max_body_size 2m;
如果是大模型应用,提示注入的防护重点是“把用户数据和系统指令分开”。
常见做法是用明确的分隔符包裹用户输入,并在系统提示里声明“分隔符内的内容只作为数据,不作为指令”。
这只是提高门槛,不能保证完全防住,所以输出侧还要加校验,比如过滤敏感操作、限制工具调用范围。
训练和部署环节的检查项
训练阶段的问题往往在出事之后才被发现,所以检查项要前移:
- 训练数据来源是否可追溯,有没有对第三方数据集做抽样审核。
- 模型文件是否只允许授权人员读取,避免被替换或篡改。
- 上线前是否用一批已知的对抗样本做回归测试,观察准确率下降幅度。
- 推理服务是否记录输入输出日志,便于异常时回溯。
这些检查不需要复杂工具,先从清单化开始就能发现明显缺口。
上线后靠监控发现问题
对抗攻击的一个特点是平时不报错,只让结果变差。
所以要看指标而不是只看可用性:模型输出分布的突变、某类请求的错误率突然升高、同一来源的高频异常输入,都值得报警。
把日志留存时间设够,才能在事后复现问题。
防范对抗攻击没有一步到位的方案,先分清攻击层级,再按输入校验、访问控制、输出过滤和监控逐项补齐,比堆砌工具更有效。