《企业级物联网安全部署实战》
第4章 密码学基础

4. 密码学基础:对称加密与非对称加密、哈希函数、数字签名在物联网中的应用

在物联网(IoT)环境中,数以亿计的传感器、执行器、网关和云平台之间需要安全地交换数据。密码学是保障物联网通信机密性、完整性、身份认证和不可否认性的基石。本章将深入剖析对称加密、非对称加密、哈希函数与数字签名四大核心密码学原语,并结合物联网资源受限、海量连接、异构网络等特性,讲解其实际部署策略。

4.1 对称加密:轻量级、高性能的机密性保障

核心思想:通信双方使用同一个密钥进行加密和解密。在物联网中,对称加密常用于传感器节点与网关之间的数据链路层加密,因其计算开销小、吞吐量高,非常适合资源受限的MCU(微控制器)。

常用算法对比

算法 密钥长度 分组大小 IoT适用性
AES-128 128 bit 128 bit ✅ 硬件加速,极低功耗
AES-256 256 bit 128 bit ⚠️ 安全等级高,计算稍重
ChaCha20 256 bit 流加密 ✅ 无硬件加速时性能优异

物联网部署模式:CCM / GCM 认证加密

在IoT中,单纯加密是不够的,必须同时保证完整性。推荐使用 AES-CCM 或 AES-GCM 模式,它们将加密与MAC(消息认证码)结合,一次操作同时提供机密性和完整性校验。

📌 实战建议: 对于Zigbee、BLE Mesh等低功耗网络,默认使用AES-CCM*(CCM的变体)。对于Wi-Fi类IoT设备,优先选择AES-GCM,支持硬件加速且性能更优。
传感器节点 明文: 温度=25°C 🔒 AES加密 密钥K 🔐 密文 0x7A 3F ... 🔓 AES解密 网关 明文: 温度=25°C ⚠️ 密钥K需通过安全通道预置

图4-1 对称加密在传感器-网关通信中的应用

4.2 非对称加密:密钥分发与身份认证的基石

核心思想:使用一对密钥——公钥(公开)和私钥(秘密)。公钥加密的数据只能用对应的私钥解密,反之亦然。在物联网中,非对称加密主要用于安全密钥协商(如TLS握手)和数字签名,但计算开销较大,通常仅用于网关或云侧。

主流算法对比

算法 密钥长度 性能特征 IoT场景
RSA-2048 2048 bit 加密慢,签名验证较快 网关证书、固件签名
ECC P-256 256 bit 同等安全下密钥更短,速度快 ✅ 物联网首选
Curve25519 256 bit 侧信道攻击防护强,极快 ✅ 新兴IoT标准
🔑 密钥分发策略: 在IoT中,通常采用混合加密:使用非对称加密(如ECC)安全交换对称密钥(如AES密钥),后续通信使用对称加密。这既解决了密钥分发难题,又保证了高性能。
IoT设备 (A) 私钥: SK_A 公钥: PK_A 云平台 (B) 私钥: SK_B 公钥: PK_B ① 交换公钥 PK_A ↔ PK_B ② 用对方公钥加密对称密钥K E(PK_B, K) → 密文 ③ B用SK_B解密得K ④ 后续使用AES-GCM对称加密通信

图4-2 基于ECC的混合加密密钥交换流程

4.3 哈希函数:数据完整性校验的指纹

核心思想:哈希函数将任意长度的输入数据映射为固定长度的输出(摘要/哈希值)。它具有单向性(不可逆)和抗碰撞性(难以找到两个不同输入产生相同输出)。在物联网中,哈希函数用于固件完整性校验、消息完整性验证以及密码存储。

IoT常用哈希算法

  • SHA-256 — 最广泛使用的哈希算法,输出256位。用于TLS、固件签名验证。在ESP32、STM32等芯片上通常有硬件加速。
  • SHA-3 — 新一代标准,抗量子攻击潜力更好,但IoT硬件支持尚在普及中。
  • BLAKE2s — 针对8/16位MCU优化的轻量级哈希,速度比SHA-256快,安全性相当。
⚠️ 安全警告: 严禁在IoT中使用MD5或SHA-1!它们已被证明存在碰撞攻击,攻击者可伪造固件或消息。所有新设计必须使用SHA-256或更高强度算法。
固件镜像 firmware_v2.1.bin 🔢 SHA-256 哈希摘要 a3f2b8c9... (64字符) ✅ 比较 是否一致? 若哈希值匹配,则固件未被篡改;否则拒绝启动

图4-3 使用SHA-256验证固件完整性

4.4 数字签名:身份认证与不可否认性

核心思想:数字签名结合了哈希函数和非对称加密。发送方使用自己的私钥对消息的哈希值进行签名,接收方使用发送方的公钥验证签名。这提供了身份认证(确认发送方身份)、完整性(消息未被篡改)和不可否认性(发送方无法抵赖)。

物联网中的典型应用

场景 签名者 验证者 算法推荐
固件空中升级(OTA) 厂商签名服务器 IoT设备 ECDSA P-256
设备身份认证 IoT设备 云平台/网关 Ed25519
安全日志审计 网关 审计服务器 RSA-2048 / ECDSA
🛡️ 实战要点: 在IoT设备上执行签名验证时,务必使用恒定时间比较函数来比对签名,防止时序攻击。同时,公钥应硬编码在设备的安全存储区(如eFuse或TPM),不可被用户修改。
签名方 (厂商) 私钥: SK_vendor 消息M → Hash(M) 签名: Sign(SK, Hash(M)) 📦 消息 + 数字签名 M || Sig(SK_vendor, Hash(M)) 验证方 (IoT设备) 公钥: PK_vendor 验证: Verify(PK, M, Sig) ✅ 通过 / ❌ 拒绝 签名过程:Hash(M) → 私钥加密 → 附加到消息后 验证过程:Hash(M) → 公钥解密签名 → 比较哈希值 🔐 防篡改+防抵赖

图4-4 数字签名生成与验证流程

4.5 物联网密码学综合架构图

下图展示了一个典型的物联网安全通信架构,融合了对称加密、非对称加密、哈希函数和数字签名四种密码学原语,覆盖从传感器到云端的全链路安全。

感知层 网络层 应用层 ← 上一章 📖 返回目录 下一章 →