第一章:安全威胁概述
各位同学,咱们今天聊聊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的工具链,给大家演示实际的操作流程。
课后思考:你手头的项目里,哪个环节最容易成为攻击目标?不妨先自己评估一下风险等级。