理解和减轻IoT消息协议的安全风险
介绍
这是一篇来自2020S&P论文,作者有Yan Jia, Luyi Xing, Yuhang Mao, Dongfang Zhao, XiaoFeng Wang, Shangru Zhao, and Yuqing Zhang。
概述
本文首次对主要的IoT云平台与设备通信消息协议的安全性进行了系统研究,作者发现这些云平台上的消息传输协议很容易受到攻击,并且利用这些漏洞进行攻击会造成严重后果。为此,作者提出了IoT云端通用消息协议的安全原则,并且提出和实施了端到端保护的方法。
前置知识
1.基于云平台的IoT通信
一个基于云端IoT系统通常包含三部分:cloud(本文中指云平台)、IoT Device、user’s management console(手机应用)。如图1 所描述的,云是这类系统的关键部分,它控制着设备和应用之间的通信,并且需要对设备和应用进行配对和身份认证。
2.MQTT协议
MQTT是IoT中常用的发布-订阅(publish-subscribe)消息传递协议,它是一个应用层轻量级协议,能够在资源受限的设备上运行。 MQTT通信协议的核心是MQTT消息代理(message broker),如图1所示。
以代理为连接枢纽,MQTT使用发布-订阅模式进行通信: - MQTT客户端(设备或应用)将消息发布到代理托管的特定主题(topic) - 代理将消息路由到另一个订阅了该主题的客户端
MQTT客户端向代理发送三类基本类型消息:CONNECT(建立连接)、PUBLISH(发布主题消息)、SUBSCRIBE(接收订阅消息),如图2所示。
首先,MQTT 客户端,例如智能空调或应用程序,发送 向代理发送用于建立 MQTT 会话的 CONNECT 消息(如果代理接受连接)。session和client由一个ClientId字段唯一标识(嵌入在CONNECT消息中)。在发布状态时,代理维护每个会话的订阅状态,并将发布到主题的 MQTT 消息传递给其订阅者。 通过此渠道,应用程序可以代表其用户在设备上运行,方法是向设备订阅的主题(例如,启动或停止)发布推荐。 此外,设备可以定期将其状态信息更新为主题,例如当前温度,所有订阅该主题的应用程序都会收到该信息。