2. 感知层安全:传感器节点安全、RFID安全、物理攻击与防护
感知层是农业物联网的最前线。说白了,就是那些埋在土里、挂在枝头、装在田间的传感器和RFID标签。它们直接跟物理世界打交道,也是最容易被忽略的安全短板。我做了这么多年农业物联网项目,见过太多人把精力全放在云端和网络传输上,结果被一个几十块钱的传感器节点捅了篓子。
这一章,我们就来聊聊感知层那些绕不开的安全问题。我会结合自己踩过的坑,把传感器节点、RFID以及物理攻击这几个核心点讲透。
2.1 传感器节点安全
农业传感器节点,比如温湿度、土壤pH、光照强度这些,通常部署在露天环境。你想想看,一个在大棚里风吹日晒的小盒子,能有多强的防护能力?
我个人习惯把传感器节点的安全问题分成三类:数据伪造、节点劫持和通信窃听。
2.1.1 数据伪造与节点劫持
数据伪造是最常见的攻击方式。攻击者不需要破解你的加密算法,只需要在传感器附近模拟一个相同ID的节点,发送虚假数据就行。我在一个智慧大棚项目里就遇到过这种事——有人故意在灌溉高峰期发送“土壤湿度已饱和”的假数据,导致系统停止浇水,差点把一批高价值种苗干死。
节点劫持更危险。攻击者物理获取一个节点后,可以直接读取内部固件、密钥甚至通信协议。我记得有一次做现场评估,发现客户用的传感器竟然把WiFi密码明文存在EEPROM里。嗯,这种节点一旦被拆,整个网络就裸奔了。
核心防护思路:
- 身份认证:每个节点出厂时烧录唯一硬件ID,通信时做双向认证。
- 数据签名:每条上报数据都附带HMAC签名,防止篡改。
- 固件加密:关键密钥存储在安全芯片(如ATECC608A)中,而不是Flash里。
2.1.2 低功耗下的安全权衡
农业传感器大多靠电池供电,有的甚至用能量采集(比如太阳能)。这就带来一个现实问题:安全算法越强,功耗越高。
我曾经在一个果园项目里测试过,如果每次通信都做完整的RSA签名,一颗CR2032纽扣电池只能撑3天。后来我们换成了ECC(椭圆曲线密码),功耗降了70%,电池寿命恢复到3个月以上。
| 安全算法 | 单次签名功耗 (mJ) | 电池寿命 (CR2032) | 适用场景 |
|---|---|---|---|
| RSA-2048 | ~45 | 3 天 | 高安全、有供电的场景 |
| ECC-256 | ~12 | 3 个月 | 大多数农业传感器 |
| HMAC-SHA256 | ~2 | 6 个月以上 | 低安全、低成本节点 |
我的建议:别在低端节点上硬上非对称加密。用HMAC做数据完整性校验,配合定期更换密钥,性价比最高。等节点升级到网关级别时,再启用ECC或TLS。
2.2 RFID安全
RFID在农业里用得越来越广——牲畜耳标、农产品溯源、仓储管理都离不开它。但RFID天生就有几个硬伤:无接触通信、标签计算能力弱、容易被克隆。
2.2.1 标签克隆与重放攻击
标签克隆是RFID最头疼的问题。攻击者拿一个手持读写器,靠近你的牲畜耳标,几秒钟就能把标签ID读走,然后写到一个空白标签里。我见过一个案例:有人克隆了一批高端种猪的耳标,混进养殖场偷换种猪,直到基因检测才发现。
重放攻击更隐蔽。攻击者先记录下标签和读写器之间的通信数据,然后在关键时刻重新发送。比如在农产品溯源系统中,攻击者可以重放一个“有机认证”标签的认证数据,让普通农产品冒充有机产品。
2.2.2 防护手段
对付RFID攻击,不能指望标签本身有多强。我的经验是:在标签和后台系统之间建立安全通道。
- 使用密码标签:比如MIFARE DESFire系列,支持3DES/AES加密,能有效防止克隆。
- 动态ID机制:每次通信时标签生成一个随机数,与固定ID组合后发送。这样即使被截获,也无法重放。
- 读写器认证:标签只响应经过认证的读写器。我在一个仓储项目里就是这么做的,虽然增加了部署成本,但再也没有出现过标签被批量克隆的事。
注意:市面上很多便宜的RFID标签(比如低频125kHz的)根本不支持加密。如果你做的是高价值农产品溯源,千万别省这个钱。我曾经见过一个客户为了省5毛钱一个的标签差价,结果被克隆标签骗走了几十万的货款。
2.3 物理攻击与防护
物理攻击是感知层特有的威胁。网络攻击你还能靠防火墙、IDS挡一挡,但物理攻击是直接上手拆设备。农业环境又特别开放,一个传感器就挂在田埂上,谁都能碰。
2.3.1 常见的物理攻击手段
我总结了几种我在项目里真实遇到过的物理攻击方式:
| 攻击类型 | 具体手段 | 后果 |
|---|---|---|
| 侧信道攻击 | 通过分析功耗、电磁辐射来破解密钥 | 密钥泄露,整个网络沦陷 |
| 故障注入 | 用激光、电磁脉冲干扰芯片运行 | 跳过安全校验,执行恶意代码 |
| 物理拆解 | 直接打开外壳,读取Flash/EEPROM | 固件、密钥、配置信息全部暴露 |
| 环境篡改 | 更换传感器探头、短接电路 | 数据失真,系统误判 |
2.3.2 防护措施
物理防护不能只靠一个铁壳子。我个人的做法是分层设防:
- 外壳防护:使用防拆螺丝+环氧树脂灌封。攻击者想打开外壳,基本得把整个节点破坏掉。
- 电路防护:在关键芯片周围加装光敏传感器或防拆开关。一旦检测到外壳被打开,立即擦除密钥区。
- 主动检测:节点定期发送心跳包,如果网关连续N次没收到,就触发告警。我在一个果园项目里设置的是3次心跳丢失就报警,结果真抓到过有人半夜偷传感器。
避坑指南:我曾经在一个项目中只做了外壳防护,觉得环氧树脂灌封就万无一失了。结果攻击者直接用热风枪加热外壳,等树脂软化后撬开。后来我们改用了自毁电路——一旦温度超过85°C,内部电池就会触发密钥擦除。嗯,从那以后,再也没出过问题。
2.4 感知层安全体系框架
说了这么多,我把感知层安全的核心逻辑画成了一张图。你可以把它当作一个检查清单,做项目时对照着来。
这张图把感知层安全的三个核心方向串起来了。你不需要每个点都做到100%,但至少得清楚自己的薄弱环节在哪。我个人习惯在项目启动前,先拿这张图过一遍,看看哪些地方是裸奔的,然后按优先级补上。