4. CoAP安全机制
CoAP 协议在设计之初就考虑了物联网设备的资源受限特性,其安全层直接复用 DTLS(Datagram Transport Layer Security)。DTLS 是 TLS 在 UDP 上的变体,解决了 UDP 不可靠传输下的分片、重排序和丢包问题。本章将深入剖析 DTLS 握手流程、两种主流认证模式(PSK 与证书),并量化分析 CoAP over DTLS 在低功耗设备上的实际开销。
4.1 DTLS 握手流程详解
DTLS 握手的目标是在客户端与服务器之间协商加密套件、交换密钥并建立安全会话。与 TLS 不同,DTLS 必须处理 UDP 的无序和丢包特性,因此引入了 显式序列号、重传定时器 和 分片重组 机制。
下图展示了 DTLS 1.2 完整握手流程(PSK 模式可省略 Certificate 和 CertificateVerify 步骤):
4.2 PSK 与 RSA 证书模式对比
ThingsBoard 支持两种 DTLS 认证模式:预共享密钥(PSK) 和 RSA 证书。选择哪种模式取决于设备的安全等级、计算能力和部署规模。
| 对比维度 | PSK 模式 | RSA 证书模式 |
|---|---|---|
| 密钥管理 | 对称密钥,需安全分发到每台设备 | 非对称密钥对,公钥可公开,私钥本地存储 |
| 握手 RTT | 2-RTT(4 条消息) | 3-RTT(6 条消息) |
| 计算开销 | 低(仅 HMAC 和对称加密) | 高(需 RSA 签名验证和密钥交换) |
| 内存占用 | 约 2-4 KB(密钥 + 会话状态) | 约 8-16 KB(证书链 + 私钥 + 会话状态) |
| 安全性 | 中等(密钥泄露影响单设备) | 高(私钥不传输,抗中间人攻击) |
| 适用场景 | 传感器节点、电池供电设备、大规模部署 | 网关、边缘计算节点、高安全要求设备 |
| ThingsBoard 配置 | 设备凭证类型选择 "PSK",填写 Identity 和 Key | 设备凭证类型选择 "X.509 Certificate",上传 CA 证书 |
4.3 CoAP over DTLS 在低功耗设备上的开销分析
低功耗设备(如基于 ESP32、STM32、nRF52 的传感器节点)在启用 DTLS 后,主要面临 计算开销、内存开销 和 网络开销 三方面的挑战。以下基于典型 Cortex-M4 内核(主频 80 MHz,RAM 64 KB)的实测数据进行分析。
4.3.1 计算开销:握手阶段 vs 数据阶段
| 操作阶段 | PSK 模式耗时 | RSA 证书模式耗时 | 能耗估算(@3.3V, 50mA) |
|---|---|---|---|
| 完整握手(含密钥协商) | 15-25 ms | 80-150 ms | PSK: 2.5-4.1 mJ / 证书: 13.2-24.8 mJ |
| 单条数据加密(AES-128-CCM) | 0.3-0.5 ms | 0.3-0.5 ms | 0.05-0.08 mJ |
| 单条数据解密 | 0.3-0.5 ms | 0.3-0.5 ms | 0.05-0.08 mJ |
| 会话恢复(Session Resumption) | 5-8 ms | 5-8 ms | 0.8-1.3 mJ |
4.3.2 内存开销:代码与运行时状态
DTLS 协议栈(如 mbedTLS、TinyDTLS)在低功耗 MCU 上的典型内存占用如下:
| 内存类型 | PSK 模式 | RSA 证书模式 | 说明 |
|---|---|---|---|
| Flash(代码段) | 18-25 KB | 35-50 KB | 证书模式需包含 RSA 和 ASN.1 解析库 |
| RAM(运行时堆栈) | 4-6 KB | 10-16 KB | 证书模式需缓存证书链和签名验证缓冲区 |
| RAM(会话状态) | 1-2 KB | 2-4 KB | 包含加密上下文、序列号、重传缓冲区 |
| 总计 RAM | 5-8 KB | 12-20 KB | 对于 64 KB RAM 的 MCU,证书模式占用 19-31% |
4.3.3 网络开销:握手消息大小与数据包膨胀
DTLS 握手消息和加密记录都会增加 CoAP 报文的传输字节数,这对低带宽网络(如 LoRaWAN、NB-IoT)影响显著。
4.3.4 低功耗优化策略
- 会话缓存与恢复: 设备端缓存 DTLS 会话票据(Session Ticket),下次连接时使用 abbreviated handshake,将握手 RTT 从 2-3 次降低到 1 次,能耗降低 60-70%。
- 长连接保持: 对于上报间隔小于 5 分钟的设备,建议保持 DTLS 会话不关闭,通过 CoAP 的 NON 消息(非确认模式)发送数据,避免频繁握手。
- 加密套件选择: 优先使用 TLS_PSK_WITH_AES_128_CCM_8(PSK + AES-128-CCM,8 字节认证标签),避免使用 GCM 模式(需要更多硬件加速支持)。
- 硬件加速: 选用集成 AES 和 SHA 硬件加速引擎的 MCU(如 ESP32-S3、STM32WBA),可将加密计算时间从毫秒级降至微秒级。
- 数据聚合: 在设备端缓存多个采样数据,合并为一条 CoAP 报文发送,减少 DTLS 记录数量,降低每字节开销比例。
4.4 本章小结
DTLS 为 CoAP 提供了与 TLS 等效的安全保障,但低功耗设备必须仔细权衡安全等级与资源开销。PSK 模式在计算、内存和网络开销上均优于 RSA 证书模式,适合大规模传感器部署;证书模式则适用于网关或高安全场景。通过会话恢复、长连接保持和硬件加速,可将 DTLS 开销控制在可接受范围内。在 ThingsBoard 中,设备接入时需根据硬件能力选择凭证类型,并合理配置 DTLS 会话参数。