一种基于Emqx broker架构的物联平台设备数据安全连接方法
文献发布时间:2023-06-19 13:43:30
技术领域
本发明属于计算机信息数据安全技术领域,具体地说,涉及一种基于Emqx broker架构的物联平台设备数据安全连接方法。
背景技术
随着国家电网公司在提出了建设“三型两网”的目标,物联平台围绕电力系统各环节,充分应用移动互联、人工智能等现代信息技术、先进通信技术,实现电力系统各环节万物互联、人机交互,在物联平台的建设中,不同种类的设备将会被大量接入,设备数据的安全尤为重要,若在物联平台建设过程中,安全性考虑不足或存在漏洞,将给设备厂商带来安全风险,所以在设备接入、设备数据上报、设备连接通道等各个环节都需要考虑安全性方案。
设备接入协议众多,目前使用最广泛的是MQTT协议,MQTT协议是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境,MQTT拥有该协议的特点有:
●使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
●对负载内容屏蔽的消息传输;
●使用 TCP/IP 提供网络连接;
●有三种消息发布服务质量:
√“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送;
√“至少一次”,确保消息到达,但消息重复可能会发生;
√“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果;
●小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
●使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
Emqx (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT消息服务器。MQTT 是轻量(Lightweight)、发布订阅模式 (PubSub)的物联网消息协议。Emqx 设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由:稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接;分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由;消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库;完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持。
在建设物联平台时,可基于Emqx broker作为开源MQTT消息服务器,用于设备连接协议支持,完成设备接入、协议解析、设备管理。但其具有以下缺陷和需求:
a、在物联平台建设中,设备安全认证连接、设备业务数据安全是基本需求和重要环节,必须拥有一套完善的安全方案。
b、目前采用基于Emqx broker开源物联平台,在安全连接上并不完善,Emqxbroker作为开源MQTT消息服务器,提供了基础的安全插件,但方案还需根据自身物联平台的设计和安全要求,完善各个插件的安全功能。
除此以外,在打造物联平台时,如果完全基于开源Emqx broker消息服务器进行设计开发打造,在安全方面,方案存在不足之处:
○、Emqx支持使用TLS安全连接只是一个技术支撑,业务条件不足,比如证书如何生成,按什么维度生成、证书如何发放,如何配合物联平台使用等方面都没有明确方法,需要物联平台结合自身业务进行业务方案设计;
○、MQTT协议本身支持用户名密码验证,但是仅仅支持用户名密码验证完全不够,可能会出现越权访问控制现象的发生,产生泄密危险,例如用户认证通过后,监听非此用户设备信息;
○、emqx规则引擎插件仅支持明文格式的数据流式计算,在网络中明文传输数据存在明文泄漏安全隐患。
发明内容
本发明基于现有技术的上述缺陷和需求,提出了一种基于Emqx broker架构的物联平台设备数据安全连接方法,通过使用本发明设计的一套安全机制,完善上述分析中各个技术点的安全缺陷,解决基于Emqx broker架构的物联平台设备数据安全问题。
本发明具体实现内容如下:
本发明提出了一种基于Emqx broker架构的物联平台设备数据安全连接方法,用于将设备接入物联平台的场景中,具体操作为:首先,开发者从物联平台中获取SDK数据包;然后根据SDK数据包的开发规则和设备的相应业务进行设备APP的开发;接着,将设备APP烧写到设备中;然后,并进行设备APP的启动,将设备通过设备APP与物联平台建立连接;最后,通过设备APP与物联平台进行数据安全连接传输。
为了更好地实现本发明,进一步地,设备与物联平台建立连接并进行数据安全连接传输的具体步骤为:
步骤1:在物联平台设置证书模块,通过证书模块进行设备与物联平台之间的连接认证,设备连接物联平台时,物联平台通过证书管理功能对设备的证书进行解析和验签,通过证书认证后,才允许设备与物联平台建立安全连接通道,否则设备连接失败;
步骤2:结合物联平台数据结构设计,在物联平台修改Emqx_auth_mysql插件,根据连接报文中的username数据、en_password数据和ClientID数据共同校验连接报文的正确性,只有认证成功的才可以用于设备接入物联平台;
步骤3:对于成功接入到物联平台的设备,进行业务数据上传时,使用物联平台配套工具生成用户特有的公私钥,并对上传的数据进行非对称加密;
步骤4:将加密后的业务数据发送到物联平台;在物联平台中设置规则引擎,通过规则引擎将加密后的业务数据解密并进行规则计算,最后将规则计算的计算结果再次加密后进行密文数据流转到上层业务系统。
为了更好地实现本发明,进一步地,所述步骤1中,当设备上线连接物联平台的Emqx broker消息服务器时,将在TCP/IP协议之上建立MQTT连接通道;将物联平台设计为MQTT 启用双向 SSL/TLS 安全连接,在进行设备的连接认证时,要求服务端和客户端都需要证书,双方都要进行身份认证,以确保通信中涉及的双方都是受信任的。
为了更好地实现本发明,进一步地,在开发设备APP的过程中,根据物联平台及SDK的规则生成ClientID,所述ClientID包含了设备标识信息;在所述步骤2中,设备建立连接时,连接报文包含了username、en_password和ClientID三元信息;对于Emqx_auth_mysql插件,在用户密码验证基础上加入ClientID认证进行两层验证;所述两层验证具体为:一层验证用户名/密码正确性,二层鉴权设备与租户所有权关系,防止租户越权连接其它设备。
为了更好地实现本发明,进一步地,在步骤3中,所述加密算法为对于原明文A进行加密得到密文B,具体加密公式为:
B={crypto}+SM2(A+SM3(A)+随机数);
式中,{crypto}为进行拼接的固定的字符串,SM2()为一种国密算法,SM3()为一种国密算法。
为了更好地实现本发明,进一步地,所述步骤4中,租户通过物联平台界面创造规则引擎的规则,所述规则引擎的规则中包括加密解密算法的公私钥信息;在实际解密过程中,通过解析出规则的公私钥进行解密操作。所述规则中包括加密算法的公私钥信息;
对于设备上传的加密业务数据首先用规则中的私钥解密出原文,然后进行规则计算;然后将计算的结果再次用公钥加密后,流转到上层业务系统。通过以上流程保证所有网络传输环节的数据是加密后传输。
本发明与现有技术相比具有以下优点及有益效果:
设备安全风险主要是在设备接入时和设备数据传输过程中,本发明从此处着手,设计一整套机制。设计TLS证书生成、发放、使用机制,数据通道使用双向传输层安全性协议(Transport Layer Security,TLS)机制进行验签,构造数据安全通道;连接消息服务器时使用emqx_auth_mysql插件认证物联平台租户的用户名/密码,结合物联平台开发组件生成的ClientID,进行两层验证;设计数据传输使用国密算法加解密,满足规则引擎数据格式要求,数据整个传输过程加密流转。
附图说明
图1为本发明流程示意图;
图2为本发明设备与物联平台连接的示意图。
具体实施方式
为了更清楚地说明本发明实施例的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,应当理解,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例,因此不应被看作是对保护范围的限定。基于本发明中的实施例,本领域普通技术工作人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;也可以是直接相连,也可以是通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
实施例1:
本实施例提出了一种基于Emqx broker架构的物联平台设备数据安全连接方法,用于将设备接入物联平台的场景中,如图1所示,具体操作为:首先,开发者从物联平台中获取SDK数据包;然后根据SDK数据包的开发规则和设备的相应业务进行设备APP的开发;接着,将设备APP烧写到设备中;然后,并进行设备APP的启动,将设备通过设备APP与物联平台建立连接;最后,通过设备APP与物联平台进行数据安全连接传输。
工作原理:本方案在整个流程中封装与各个环节,方便用户在使用过程中,达到安全便捷的效果。TLS安全证书生成机制在物联平台中实现,下载SDK时,随SDK一起下载给开发者使用;基于SDK开发APP时,需要配置物联平台中添加设备生成的设备元数据信息,基于这些元数据信息和用户的账号信息,可以在APP启动后接入物联平台时,实现两层验证鉴权;数据加密传输和解密则是在SDK发送接口和物联平台中实现。
实施例2:
本实施例在上述实施例1的基础上,如图2所示安全接入步骤有:
1、用户注册物联平台账号,物联平台后台根据租户管理规则为租户生成独有的TLS安全证书,此安全证书可用于租户在物联平台所有产品下所有设备接入上云时,与物联平台建立安全连接通道的认证。
2、租户在物联平台建立好产品及设备元数据信息后,即完成了物联平台侧的开发工作,可从物联平台界面获取证书、设备三元组信息、设备开发SDK等用于设备侧开发信息数据。
3、设备侧基于业务开发好APP后,即可烧写到设备上运行,准备连接进入物联平台。设备连接物联平台时,物联平台通过证书管理功能对设备的证书进行解析和验签,通过证书认证后,才允许设备与物联平台建立安全连接通道,否则设备连接失败。
4、安全连接通道建立后,对设备的接入信息(用户名、密码、ClientID)进行验证,物联平台SDK设计了ClientID独有的生成规则,ClientID生成原理是利用设备接入的三元组信息进行拼接,再结合用户名、密码进行两层验证,一层验证用户名/密码正确性,二层鉴权此设备与租户所有权关系,防止租户越权连接其它设备,同时防止恶意用户随意模拟接入。
5、设备接入物联平台后,即可上报业务数据,同时在物联平台通过规则引擎流转数据。物联平台制作了一个封装了国密算法的工具GMTool,用于生成基于国密算法SM2+SM3的公私钥,可利用公钥在设备上报数据时,对数据加密传输;然后再物联平台使用规则引擎创建规则时,编写规则SQL语句使用私钥解密数据,再进行规则运算,将运算好的结果通过公钥再次加密,最后流转加密后的数据到业务系统,防止数据泄露。
工作原理:如图2展示可知,在连接过程中主要有三个环节:
1、设备上线连接Emqx broker消息服务器时,将在 TCP/IP协议之上建立MQTT连接通道,为了连接通道安全,物联平台设计为 MQTT 启用双向 SSL/TLS 安全连接,在进行通信认证时要求服务端和客户端都需要证书,双方都要进行身份认证,以确保通信中涉及的双方都是受信任的,设备连接时强认证,保证会话机密性、安全性,加密通讯中的数据很难被篡改而不被发现,保证数据完整性。设备APP基于客户端证书与物联平台Emqx broker建立双向信任的MQTT/TLS安全通道,租户设备接入连云不必关注安全通道内在细节,仅需按照SDK的指导说明关注业务开发,就可获取安全高效的服务,提高设备接入物联平台效率和安全性。TLS技术是开源并广泛应用于计算机领域,本专利在于在物联平台业务上设计了一套证书规则,以租户为维度在后台生成证书,降低租户操作难度,直接从平台获取证书使用即可。
2、租户在设备侧使用SDK开发APP时,根据物联平台及SDK的规则生成ClientID,ClientID包含了设备标识信息,设备建立连接时,连接报文包含了username、en_password和ClientID三元信息。通过优化修改Emqx_auth_mysql插件,插件可识别出ClientID中设备标识信息,并结合用户名/密码数据进行两层验证,一层验证用户名/密码正确性,二层鉴权此设备与租户所有权关系,防止租户越权连接其它设备。原生插件只支持用户名密码验证,不能做到在业务上进行验证,本专利在于用户密码验证基础上加入了ClientID认证进行两层验证,一层验证用户名/密码正确性,ClientID包含设备三元组信息,与业务进行了关联,二层鉴权此设备与租户所有权关系,防止租户越权连接其它设备,同时防止恶意用户随意模拟接入。
3、物联平台设计了一套数据加解密机制,租户在设备侧开发时,使用GMTool生成一套国密加密算法公私钥(privatekey/publickey),公私钥是一对非对称加解密字符串,公钥字符串用于加密,私钥字符串用于解密。设备业务数据从原明文A加密到密文B,公式如下为:
B={crypto}+SM2(A+SM3(A)+随机数);
设备APP使用公钥加密采集的设备数据发送到物联平台,这样出设备的数据是加密的,只有对应生成的私钥才可以解密,私钥只由租户知晓保管,无安全风险;租户可通过物联平台界面创建规则引擎的规则,规则中可以包含公私钥信息,解析出规则SQL的公私钥,用于规则引擎计算前后的加解密;还新增emqx_rule_engine插件支持启明星公司基于国密SM2+SM3的融合加密算法,该算法融合了SM2和SM3两种国密算法,更加复杂,也更加安全,加解密效率接近SM2。对设备数据进行规则计算时,首先使用私钥解密出数据,然后对原始JSON格式数据进行规则计算,计算命中后,对计算命中结果数据再用公钥加密,满足租户业务需求的设备数据加密流转到租户的中间件或http服务中,这样流出物联平台的数据也是加密的,无安全风险。总结起来,原理就是数据加密传输,解密后规则计算,再次加密后流转。工作流程为:a、先用工具生成公私钥;b、设备上报数据时,使用设计的加密算法加密数据;c、物联平台规则引擎原本不支持加密数据的运算,通过本专利方法优化,支持把加密数据解密后进行规则引擎计算提取;d、最后将计算结果加密后流转到业务系统。
规则引擎规则SQL本身支持数据计算,但是数据如果是明文传输,可通过抓包工具获取,存在信息泄露风险;如果加密传输,则原生规则引擎插件不支持基于国密算法的加解密数据流转功能。本专利在于基于国密设计了一个非对称的加解密算法,修改规则引擎插件支持此算法密文数据解析后,再进行规则运算,同时还优化支持将运算后的数据再次加密流转到上层业务系统,实现数据在各个网络流动环节,均确保是密文传输,保证设备业务数据安全。
本实施例的其他部分与上述实施例1相同,故不再赘述。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。
- 一种基于Emqx broker架构的物联平台设备数据安全连接方法
- 一种基于云物联平台实现工业设备采集的方法