MQTT传输安全问题浅析
2018-12-23邢赛楠
邢赛楠
(湖北大学 计算机与信息工程学院,湖北 武汉 430062)
MQTT传输安全问题浅析
邢赛楠
(湖北大学 计算机与信息工程学院,湖北 武汉 430062)
物联网技术是信息科技发展演进形成的一项全新技术,它将各类设备,比如手机、电脑、可穿戴设备等,通过无线或有线的方式连接到公共网络,以便于人们能够随时随地操控,方便人们的生活。然而,物联网在方便人们生活的同时,在技术上提出了更多挑战,其中,最突出的一个问题便是安全问题,并且该问题是物联网技术革新中发展最慢的一类问题。MQTT协议是由IBM提出的一套物联网传输层协议,该协议基于客户端/服务器架构,具有传输非对称性特点,非常适用于物联网大规模非实时信息传输。通过讨论MQTT的传输安全性问题,提出了一些未来可能的研究方向。
MQTT;物联网;安全性;传输层
物联网(Internet Of Things,IOT)是一项全新的技术,它将各类设备连接到公共网络。国际电信巨头Cisco公司调查得出,预计在2020年,全球将有500亿设备相互连接。物联网推动了从智能家居到智能工业的整个自动化时代,将对人们的生活产生巨大的影响。世界各国都制定了物联网智能战略,比如德国的工业4.0等。我国也出台了相应的宏伟目标,名为“中国制造2025”。工业物联网将是未来科技发展、节能减排、自动化工业的强力推手。
然而,随着越来越多、数以亿计的设备连接入网使用,一系列技术限制和难题也随之而来。其中,最引人关注的问题便是安全问题。在传统的互联网时代,对安全问题的讨论由来已久,不少安全问题已经得到解决。然而这些办法可能在物联网时代不能直接使用,其最大的原因便是,物联网的设备多是轻量级设备,在能耗、尺寸以及计算能力上均多有限制。比如,由于资源受限,传感器网络中广泛使用的安全协议IPsec协议不能在无线传感网络中使用。
此外,物联网时代的设备互联问题也非常关键,各种各样的互联协议层出不穷,比如COAP(ConstrainedApplication Protocol)、MQTT(Message Queue Telemetry Transport)、XMPP(Exensible Messaging and Presence Protocol)等。其中,由OASIS组织提出的MQTT互联协议是一类轻量级协议。该协议已被广泛应用在工业物联网中,比如石油、勘探等领域。
本文重点探讨MQTT传输协议中的安全问题,分析了MQTT的安全传输机制及目前存在的一些技术问题。章节内容划分如下:第一节描述了MQTT协议信息传输架构;第二节探讨了MQTT信息传输存在的安全问题;第三节总结了本文的内容,提出了未来可能的发展方向。
1 MQTT协议信息传输架构
MQTT协议是消息队列电文传输协议的缩写,由IBM在1999年设计并提出,其设计的主要目的是为大量的计算能力有限,工作在低带宽、高延时、不可靠网络的无线传感网络设备或传感器提供一种开放、轻量、快捷的通信协议。MQTT通信架构如图1所示。
图1MQTT通信架构
图2MQTT信息传输帧结构
通常,一例MQTT通信包括2类终端,即MQTT客户端和MQTT服务端。MQTT客户端能够发送或者接收信息,在MQTT中,发送又被称作“发布”,接收又被称作“订阅”。发布者发送一些应用信息,订阅者接收这些信息。MQTT服务端连接所有的内网MQTT客户端,接收发布者发送的信息,并传递这些信息到那些完成信息订阅的MQTT客户端。通常,物联网终端传感器、手机设备等均为MQTT客户端,它们将要广播的信息发布到MQTT服务端。MQTT服务端收到信息后进行汇总分类,然后发送到MQTT订阅者。该种传输模式把复杂运算工作都放在了MQTT服务端,减少了MQTT客户端的工作量,非常适用于资源有限的物联网应用。MQTT信息传输帧结构如图2所示。
MQTT控制帧包含一个固定的头文件和数据流。
MQTT的数据信息遵循分级结构,每一级称为一个标题,每一个标题包含一个名字和一项内容,级与级之间由符号“/”相连接。
2 MQTT安全问题
MQTT支持以下3类QOS模式:①“Fire and Forget”模式,或者称为最多一次模式。在这类模式下,信息可能会丢失。②“Acknowledged delivery”模式,或者称为最少一次模式。在这类模式下,信息传输多次直到信息抵达为止。③“Exactly once”模式,或者称为保证交付模式。在该模式下,信息只传输一次,保证抵达。
虽然后2种模式更加可靠,但是在传输过程中需要增加更多的开销,占用更多的带宽,在一些资源有限制的应用场景中可行性受到制约。目前,MQTT协议并未在安全性问题上提出解决方案,笔者认为其安全问题能够在以下三个方面进行探索:认证,鉴权以及数据加密。认证方面,可以在建立连接后体检鉴权程序,认证过程通过用户名和密码实现。MQTT服务端存储所有MQTT客户端的用户名和密码,秘钥的通信采用密文。
鉴权方面,MQTT服务端对所有MQTT客户端进行分类分级,并制定对应的权限以及能够操作的对象。通过用户名和密码,MQTT服务端能够对所有MQTT客户端进行鉴权。在很多情况下,认证过程和鉴权过程能够合二为一。MQTT数据加密方面,能够在各个层对传输的数据进行加密。例如在传输层,由于MQTT数据传输是基于TCP/IP协议,因此,可以采用TLS进行加密。在数据链路层,可以采用传统的AES算法对数据进行加密。加密过程可以使用硬件加速器实现。
3 结束语
本文探讨了面向物联网应用的MQTT协议以及其安全性问题。可以看到,传统的安全问题解决方案由于其运算量巨大,不能直接适用于资源受限的物联网场景。因此未来的解决方案的方向将在轻量级和安全性能方面达到平衡。不久的将来,越来越多的设备将连接到公共网络,因此,笔者呼吁政府机关以及协议制定机构需要尽快对现有的MQTT协议进行安全性方面的完善。
[1]任享,马跃,杨海波,等.基于MQTT协议的消息推送服务器[J].计算机系统应用,2014(3).
[2]盖荣丽,钱玉磊,李鸿彬,等.基于MQTT的企业消息推送系统[J].计算机系统应用,2015(11).本文部分参考文献因著录项目不全被删除。
TP393.04
A
10.15913/j.cnki.kjycx.2018.01.017
2095-6835(2018)01-0017-02
〔编辑:刘晓芳〕