《消费物联网安全入门指南》
第3章 通信协议安全

3、通信协议安全:MQTT、CoAP、HTTP协议的安全特性与常见漏洞

在消费物联网中,设备与云端、设备与设备之间的通信依赖于各种应用层协议。MQTT、CoAP 和 HTTP 是三种最主流的协议。理解它们的安全机制与潜在风险,是构建安全物联网系统的基石。

特性 MQTT CoAP HTTP
传输层 TCP UDP TCP
消息模型 发布/订阅 请求/响应 请求/响应
安全传输 TLS/SSL (MQTTS) DTLS (CoAPS) TLS/SSL (HTTPS)
认证机制 用户名/密码、证书 预共享密钥、证书 Basic、Bearer Token
典型漏洞 未授权订阅、明文传输 IP 欺骗、重放攻击 中间人攻击、会话劫持
MQTT 发布/订阅模型 TLS 加密通道 用户名/密码认证 ⚠ 通配符订阅泄露 ⚠ 明文 MQTT 风险 CoAP 请求/响应模型 DTLS 加密通道 预共享密钥 (PSK) ⚠ UDP 放大攻击 ⚠ 重放攻击 HTTP 请求/响应模型 TLS 加密通道 Token / Basic 认证 ⚠ 中间人攻击 ⚠ 会话劫持

3.1 MQTT 协议安全

MQTT 是物联网中最流行的轻量级协议,采用发布/订阅模式。其安全核心在于 传输加密 和 访问控制。

  • 安全特性:
    • 支持 TLS 加密(MQTTS),防止数据被窃听。
    • 支持用户名/密码认证,以及客户端证书认证。
    • 支持 Last Will 和 Testament(遗嘱消息),用于异常断开通知。
  • 常见漏洞:
    • 未授权订阅: 如果 Broker 未做 ACL(访问控制列表),攻击者可订阅所有主题,窃取传感器数据。
    • 明文传输: 使用未加密的 MQTT(1883端口),数据包可被网络嗅探工具直接读取。
    • 暴力破解: 弱密码导致攻击者轻易登录 Broker 并发布恶意指令。
传感器 发布数据 MQTT Broker TLS 加密 云平台 订阅数据 🔒 加密通道 🔒 加密通道 🔐 🔐

3.2 CoAP 协议安全

CoAP 专为受限设备设计,基于 UDP 协议。其安全依赖于 DTLS(数据报传输层安全)协议。

  • 安全特性:
    • DTLS 加密:提供与 TLS 类似的安全保障,但针对 UDP 优化。
    • 支持预共享密钥(PSK)和基于证书的认证。
    • 支持观察模式(Observe),允许客户端持续接收资源更新。
  • 常见漏洞:
    • IP 欺骗: 由于 UDP 无连接特性,攻击者可伪造源 IP 发送恶意请求。
    • 重放攻击: 攻击者截获合法请求后重复发送,导致设备误操作。
    • DTLS 握手耗尽: 攻击者发起大量 DTLS 握手请求,耗尽设备资源(DoS 攻击)。
客户端 服务器 ClientHello (加密套件) ServerHello + 证书 密钥交换 (PSK/证书) ChangeCipherSpec + Finished ✅ DTLS 安全通道建立

3.3 HTTP 协议安全

HTTP 是互联网的基础协议,在物联网中常用于设备配置、固件升级等场景。其安全核心是 HTTPS。

  • 安全特性:
    • HTTPS 通过 TLS 加密所有通信内容。
    • 支持多种认证方式:Basic Auth、Bearer Token(JWT)、OAuth 2.0。
    • 支持 HSTS(HTTP Strict Transport Security),强制使用 HTTPS。
  • 常见漏洞:
    • 中间人攻击(MITM): 如果未正确验证证书,攻击者可拦截并篡改通信。
    • 会话劫持: 通过窃取 Cookie 或 Token,冒充合法设备。
    • 跨站请求伪造(CSRF): 诱导设备执行非预期的操作(如修改配置)。
HTTP (不安全) 明文传输 数据可被嗅探 ❌ 无加密 HTTPS (安全) TLS 加密传输 数据防窃听防篡改 ✅ 加密 + 证书验证 ➡️

3.4 安全实践建议

  1. 始终启用加密: 使用 MQTTS、CoAPS、HTTPS,避免明文传输。
  2. 实施强认证: 使用证书或强密码,避免使用默认凭证。
  3. 最小权限原则: 在 MQTT 中严格限制主题订阅和发布权限(ACL)。
  4. 防止重放攻击: 在 CoAP 和 HTTP 中使用时间戳或 Nonce 值。
  5. 固件与配置更新: 定期更新协议库,修补已知漏洞。
🔒 加密 TLS/DTLS 始终启用 🔑 认证 证书/强密码 拒绝默认凭证 📋 权限 最小权限 ACL 控制 🔄 更新 固件升级 漏洞修补

专注课程资料整理