“无论物联网是如何配置的,都会有许多支持微控制器的设备分布在连接到基于云的数据中心的大面积区域。为实现这一目标,工程师需要一种小型、简单、稳健且安全的连接协议。
”作者:David Brook
无论物联网是如何配置的,都会有许多支持微控制器的设备分布在连接到基于云的数据中心的大面积区域。为实现这一目标,工程师需要一种小型、简单、稳健且安全的连接协议。
迎接这一挑战的主要候选人是 MQTT,或消息队列遥测传输。MQTT 是一个简单的协议,它允许嵌入式设备在云中发布/接收消息。与 HTTP 等协议相比,它的数据包开销最小,因此非常高效,适合低功耗环境。
MQTT 发布/订阅系统由许多客户端组成,这些客户端连接到充当代理的服务器。客户端既是 MQTT 数据的生产者,也是消费者。图 1 展示了一个简单的 MQTT 发布/订阅事务。MQTT 消息传递协议是围绕几个基本原则构建的:
消息代理充当多个订阅者之间的中介。它是一个服务器和一个集中的系统,通过它传递客户端数据。
发布和订阅元素永远不需要连接。
订阅者订阅一个或多个主题。
一条发布的消息可以发送给有兴趣接收有关某个主题的信息的许多订阅者。
订阅者可以接收来自多个发布者的消息。
订阅者可以随时取消订阅主题。
图1 一个简单的发布和订阅操作
客户端使用应用程序定义的“主题”向代理发布自由格式的数据。代理将数据传输到订阅该主题的所有客户端。使用通配符,单个订阅可能会导致接收来自多个客户端的数据。类似地,来自单个发布操作的数据可能会转发给许多客户端。
用户手机上的应用程序请求汽车锁定主题“Message_Car001”的车门。
经纪人收到请求。
Car001 通过订阅接收消息。
汽车锁门并发送确认信息。
应用程序收到确认。
消息负载包含锁定门的指令。可以通过相同的发布/订阅系统发送一系列其他指令。
图2 这是如何使用 MQTT 监视和控制汽车锁定系统。
MQTT 提供了三个服务质量 (QoS) 级别,代表了通信开销和消息到达保证之间的权衡。0 级是“即发即弃”,不保证会收到消息。级别 1 将保证消息将至少到达一次,但可能不止一次。级别 2 将确保消息只收到一次。选择支持所有三个级别的 MQTT 实现将使开发人员能够灵活地针对他们的数据需求进行优化。
MQTT 不保证安全连接,但与传输层安全性 (TLS) 一起使用时可以形成安全的通信机制。TLS 处理安全连接:服务器和客户端使用密钥交换相互验证,并协商一个双方都可以接受的数据交换加密套件。MQTT 3.1 版允许在数据包中使用用户名和密码,以允许客户端向代理进行身份验证。
安全策略中一个经常被忽视的弱点是 MQTT 消息传递软件本身的质量。最近发生的一连串备受瞩目的安全漏洞不是因为算法被黑,而是因为源代码质量差。诸如 Heartbleed 之类的事件表明,质量差的代码可以提供漏洞,黑客可以利用这些漏洞获取访问权限。由于这些原因,选择一个使用并能够证明质量软件开发过程证据的供应商是有利的。HCC Embedded 实施了 MQTT 协议,该协议在其受信任的符合 MISRA 的 TCP/IP 堆栈上运行,并提供生命周期证据来验证其质量声明。
MQTT 代表一种小型、通用的通信协议,当与 TLS 等安全机制一起使用时,可以为无数小型设备提供高效、可靠和安全的连接。但是,并非所有 MQTT 实现都是相同的。应用程序必须建立在高质量、可靠的软件平台上,以确保安全性和可靠性。
分享到:
猜你喜欢