第一章:安全威胁概述

各位同学,咱们今天聊聊AI模型的安全问题。说实话,很多人觉得把模型部署到STM32上就万事大吉了。我刚开始做嵌入式AI时也这么想——直到在项目里栽了跟头。

你想想看,一个跑在MCU上的神经网络,它真的安全吗?

1.1 投毒攻击:数据源头被污染

投毒攻击,说白了就是在训练数据里掺沙子。攻击者往数据集中塞入精心构造的样本,让模型学到错误的知识。

核心原理:攻击者修改训练数据中的标签或特征,使模型在特定输入下产生预期外的输出。

我在一个工业缺陷检测项目里遇到过这种事。客户提供的训练数据里,有几张图片被人为加上了噪声。结果模型在产线上把正常产品误判为次品,差点造成批量退货。嗯,后来排查了三天才找到问题根源。

投毒攻击的常见手法:

  • 标签翻转:把猫的图片标成狗,让模型学错
  • 后门注入:在图片右下角加个特定像素块,模型看到它就输出攻击者想要的结果
  • 数据污染:混入大量噪声样本,降低模型整体精度

注意:嵌入式设备上的模型一旦被投毒,重新训练的成本极高。我曾经有个客户,因为数据被污染,整个项目延期了两个月。

1.2 对抗样本:输入端的障眼法

对抗样本是什么?就是给正常图片加一点人眼看不出的扰动,让模型彻底认错。

举个例子:一张熊猫的照片,加上一点点噪声后,模型就认为它是长臂猿。你想想看,这在自动驾驶场景下有多危险?

对抗样本的特点:

  • 微小扰动:修改幅度通常小于像素值的1%
  • 定向攻击:让模型输出指定错误类别
  • 黑盒攻击:攻击者不需要知道模型结构

我的经验:在STM32上部署模型时,我习惯在预处理阶段加一个简单的输入校验。虽然不能完全防御对抗样本,但能过滤掉大部分明显的异常输入。

对抗样本的生成方法有很多,比如FGSM(快速梯度符号法)、PGD(投影梯度下降)等。这些方法在PC上跑起来很快,但在MCU上做防御就需要权衡计算资源了。

1.3 模型逆向:偷走你的算法

模型逆向攻击,说白了就是攻击者通过反复查询你的模型,反推出模型的参数或训练数据。

我记得有个做智能门锁的客户,他们的模型部署在STM32上。攻击者通过分析模型的输出概率分布,成功还原了训练数据中的部分人脸特征。这问题严重不?相当严重。

模型逆向的常见类型:

攻击类型 目标 对嵌入式系统的影响
模型窃取 获取模型权重和结构 算法被复制,商业价值受损
成员推断 判断某样本是否在训练集中 用户隐私泄露(如医疗数据)
属性推断 推断训练数据的统计特征 敏感信息暴露

避坑指南:我曾经在项目里直接把模型权重明文存储在Flash里。结果被逆向工具一读就全暴露了。后来改用加密存储+运行时解密,虽然增加了启动时间,但安全性提升了一个量级。

1.4 攻击对嵌入式系统的影响

这些攻击落到嵌入式系统上,后果比PC端更严重。为什么?因为MCU资源有限,你没法跑复杂的防御算法。

具体影响包括:

  • 功能失效:模型输出错误,导致设备做出错误动作
  • 资源耗尽:攻击者构造特殊输入,让模型推理时间暴增,耗尽CPU
  • 物理破坏:在工业控制场景,错误输出可能导致设备损坏
  • 隐私泄露:模型逆向攻击暴露训练数据中的敏感信息

关键点:嵌入式AI的安全不是可选项,而是必选项。尤其是部署在汽车、医疗、工业控制等场景的模型,一次攻击可能造成人身伤害。

我建议大家在设计阶段就把安全考虑进去。别等到产品上线了再打补丁,那成本高得吓人。

1.5 本章小结

咱们这一章聊了三种主要攻击类型:投毒攻击污染数据源头,对抗样本欺骗模型推理,模型逆向窃取算法隐私。每种攻击对嵌入式系统都有实实在在的影响。

下一章我会讲如何在STM32上做具体的防御设计。嗯,到时候会结合CubeAI的工具链,给大家演示实际的操作流程。

课后思考:你手头的项目里,哪个环节最容易成为攻击目标?不妨先自己评估一下风险等级。