爱星物联IoT平台如何保障千万级设备安全连接上云?

作为一个面向智能家电的物联网基础平台,支持大量设备接入、同时在线,满足大量C端用户的注册和使用,这是平台需要满足的最基本要求。一般来说,随着产品品类的增加、智能设备出货量的增加,平台的设备接入量、用户量也都是持续增长的。因此,平台也必须支持水平扩展,能够在不影响系统现有设备和用户的情况下,满足这种持续增长的要求。

爱星物联IoT云平台定位为面向智能家电各细分领域的物联网基础平台,在接入量、用户量、水平扩展方面,自然也是支持的。但当设备突破千万甚至达到亿级时,这对于一个loT平台来说,是一个不小的技术挑战,爱星物联IoT云平台是如何保证海量设备快速安全接入呢?

接下来笔者会给大家一一详解爱星物联IoT云平台的业务核心技术。

目前平台对外主要提供Web端与App端

管理平台Web端

面向平台运营用户和设备/App开发者,主要以硬件厂商与品牌商为主。通过Web端的云管平台与开放平台,为企业提供产品开发、OEM App开发、用户和设备数据管理等。

img

移动端App

面向大量的设备使用者,也就是C端消费者,通过App对设备进行智能控制、管理以及查看运行日志等。

img

也就是说,爱星物联loT云平台为企业提供了产品快速智能化与市场运营一站式技术服务。

爱星物联loT云平台原理如下

img

智能设备(香薰机、加湿器、扫地机器人等)的开发,在硬件方面,需要集成爱星物联的IoT通讯模组,比如WIFI模组、蓝牙-WIFI双模模组等,实现设备联网接入云端。在软件方面,需要集成跟通讯模组配套提供的MCU SDK,以便实现数据和指令的上下行、应用端的数据交互。在MCU开发时,开发者集成通讯模组的SDK,实现其中预定义的产品功能,以及与业务对应的采集和控制逻辑,即可实现设备的数据上行和指令接收处理。

爱星物联IoT云平台,涵盖产品开发、OEM App开发、设备管理、设备接入服务、数据统计分析、App和云端API等核心功能。其中,设备接入服务负责设备MQTT连接认证、MQTT消息鉴权、MQTT消息转发等核心功能。这块由多个服务组成,也是接下来要着重介绍的主要内容。

平台设备接入技术示意图

img

智能设备,通过配置的域名,会解析到位于云端的某台MQTT负载均衡服务器IP。智能设备与MQTT负载均衡服务建立MQTT TLS连接,负载均衡服务会进行TLS证书认证,确保建立TLS连接的设备是通过是本平台信任的设备。如果智能设备的证书错误,会在此终止MQTT连接,不再将MQTT连接请求路由到后边的MQTT集群。当TLS认证通过后,MQTT负载均衡服务再根据配置的分发算法,自动选择对应的MQTT Broker服务,并建立MQTT连接,实现后端的数据上行和指令下行。MQTT负载均衡服务确保每台MQTT Broker服务的负载是相对较为均衡的。

云端方面,各个MQTT Broker节点内部,各个节点对等,无主从节点之分,无中心节点。所有节点与集群中的其它节点均保持TCP连接,实时同步客户端会话信息和订阅关系。

容错性方面,当某节点因异常离开集群,集群其它节点能感知该节点异常,负载均衡服务也能感知异常,从而避免继续给该节点分发请求。扩展性方面,当增加一台MQTT Broker节点后,需要将其加入到集群中,并在负载均衡服务上增加该服务的配置,以便后续请求分发给该服务。这就是水平扩展的方式,通过这种减少或增加节点的方式,满足设备接入量持续增长的需求。

笔者用一张图给大家展示一下,当某个节点出现故障时,整个工作流是如何智能进行的。

img

假设初始时MQTT集群有A、B、C共3个MQTT节点,其中节点A开始出现故障,MQTT连接会异常终止,智能设备感知到连接终止,关闭旧的连接;节点B、节点C和MQTT负载均衡服务也同时感知到节点A出现故障,负载均衡服务会断开到节点A的连接,同时会定时探测节点A是否恢复正常。节点B和节点C则出现状态同步异常,并继续尝试建立连接和同步。智能设备断开旧的连接后,会重新发起新的MQTT连接,设备新建的连接会被负载均衡服务路由到其它正常节点,如图中的节点B,智能设备继续可以通过节点B进行数据与指令上下行,整个切换过程完全自动。故障出现到被感知并重连,时间间隔很短,如果不是高频控制设备,用户几乎无感知。

近年来,安全问题频发,物联网平台一旦发生重大安全问题,影响范围相当广泛。

面向C端用户的物联网平台,其接入服务需要在公网上运行,对外开放了公网端口,以便分布在全球各地的设备和App实行数据上行、指令下行等功能。公网的网络环境复杂。因此,安全这块也是物联网平台需要重点考虑的板块。

安全方面,其中涉及到设备这块的,主要包括传输安全、接入认证、操作鉴权。

img

传输安全

智能设备通过MQTT Over TLS与云端MQTT负载均衡服务建立加密连接进行传输。

TLS需要服务证书,爱星物联IoT云平台的TLS证书目前采用自签名证书,预先内置到IoT通讯模组,该证书单向认证服务器的服务,即对服务器的MQTT接入服务进行认证,确保设备连接的对端服务是正确的、并且没有被非法纂改的服务。认证通过之后,交换了对称密钥,该连接上的所有数据传输,均会自动加密,传输过程中的数据即为加密数据。网络上的攻击者,如果没有私钥证书的话,传输的数据无法被解密,也无法被纂改。这样就确保了数据传输的安全。

设备认证

除了设备要认证MQTT服务的真实身份外,MQTT服务也要对设备的身份进行认证。

爱星物联IoT云平台采用“一机一密”方案,预先在平台中生成三元组信息,包括deviceKey、userName、password等,将三元组信息烧录进IoT通讯模组中,后续IoT通讯模组利用该三元组信息作为身份信息,在建立MQTT连接时上报至MQTT服务,MQTT服务验证三元组的有效性。设备的三元组信息若是合法有效的,MQTT服务允许设备建立MQTT连接进行后续数据收发。如果被判定是无效的,则连接被拒绝,连接被MQTT服务主动断开,无法进行后续的数据收发。

设备鉴权

当设备认证通过后,设备和MQTT服务建立了长连接。假设设备不做鉴权,那么设备在工作过程中可能会出现乱发指令,或者订阅不恰当的主题数据。这就需要MQTT消息主题topic的权限控制了。

大多数MQTT服务,都提供topic ACL控制功能,爱星物联IoT云平台也不例外。MQTT服务针对App和设备的topic都做了点对点的权限控制,设备发布与订阅对应的topic消息,均已经进行了细粒度的权限控制。设备发布topic消息到MQTT服务后,MQTT服务调用鉴权服务API进行鉴权,如果鉴权通过,则放行该消息;如果鉴权失败,则阻止发布该消息。同样,设备订阅的topic也是一样,也执行类似的鉴权过程。

当然,物联网设备接入和安全相关的内容,远远不止这些。爱星物联loT云平台的技术详解笔者会在后面逐步介绍,欢迎各位开发者来免费体验我们的云平台!