MQTT安全篇

http://dataguild.org/?p=6866

MQTT安全篇

物联网的核心是连接万物,通过交换并分析数据使得生活更舒适与便捷。不过,敏感数据泄露或者设备被非法控制可不是闹着玩的。比如前段时间国内某著名家电企业的智能洗衣机,使用了某著名电商基于XMPP协议的物联网平台,不费吹灰之力便被黑客攻破并远程遥控,给智能家居的发展带来了一些阴影。究其本质,并不是物联网技术本身有缺陷,而是在物联网系统的设计中最基本的安全设计被工程师轻视了,才导致整个系统的崩塌。

在这里我们将介绍为何以及如何运用MQTT提供的安全特性来保证物联网项目的顺利实施。

安全对于几乎所有的项目都是一个挑战,对于物联网项目更是如此:

  • 设备安全性与设备可用性之间往往是零和博弈。
  • 加密算法需要更多的计算能力,而物联网设备的性能往往非常有限。
  • 物联网的网络条件常常要比家庭或者办公室的网络条件差许多。

对于以上挑战,MQTT提供了多个层次的安全特性:

  1. 网络层:有条件可以通过拉专线或者使用VPN来连接设备与MQTT代理,以提高网络传输的安全性。
  2. 传输层:传输层使用TLS加密是确保安全的一个好手段,可以防止中间人攻击(Man-In-The-Middle Attack)。客户端证书不但可以作为设备的身份凭证,还可以用来验证设备。
  3. 应用层:MQTT还提供客户标识(Client Identifier)以及用户名密码,在应用层验证设备。

虽然MQTT提供了多重安全设计,不过世界上并没有银弹能够保障数据的绝对安全,所以应该在设计的时候就把安全放在设计目标之中并拥有相当的优先级,否则上文提到的智能洗衣机就是一个活生生的教训。

网络层可以使用专线或者VPN超出了本文的范围,下面我们结合Mosquitto仔细了解一下传输层和应用层的MQTT安全特性。

留言

這個網誌中的熱門文章

Virtual Machine 中進行開發專案優點 => VM & Docker

Why not Python?

Linux OS Class [20170710] vmare new and resize command demo