一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

mqtt协议接入物联网设备鉴权实现方法及系统与流程

2022-02-20 00:29:15 来源:中国专利 TAG:


1.本发明涉及mqtt协议技术领域,特别涉及一种mqtt协议接入物联网设备鉴权实现方法及系统。


背景技术:

2.mqtt(message queuing telemetry transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于tcp/ip协议上,由ibm在1999年发布。mqtt最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
3.在通信过程中,mqtt协议中有三种身份:发布者(publish)、代理(broker/服务器)、订阅者(subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器。在物联网的框架下,有些客户端设备恶意接入mqtt平台,对mqtt平台的安全性带来了挑战。


技术实现要素:

4.本发明旨在至少解决现有技术中存在的技术问题。为此,本发明提出一种mqtt协议接入物联网设备鉴权实现方法及系统,能够防止客户端设备越过权限发布信息到mqtt平台或订阅mqtt平台的信息,提高了mqtt平台的安全性。
5.第一方面,本发明实施例提供mqtt协议接入物联网设备鉴权实现方法,包括以下步骤:
6.生成绑定设备型号的主密钥,并设置所述主密钥生成绑定主题消息的子密钥的权限;
7.获取接入设备为所述主题消息申请所述子密钥的请求信息,若所述接入设备对应的设备型号绑定的所述主密钥具有生成所述子密钥的权限,生成所述子密钥,并将所述子密钥推送给所述接入设备;
8.获取所述接入设备申请发布或订阅所述主题消息的申请信息,若从所述申请信息中解析出所述子密钥并鉴权成功,接收或推送所述主题消息。
9.根据本发明的实施例,至少具有如下技术效果:
10.通过生成对应设备型号的主密钥,以及生成对应主题消息的子密钥,分别对接入设备和接入设备发布或订阅的主题消息进行权限鉴定,使得没有子密钥的接入设备不能发布主题消息到mqtt平台或订阅mqtt平台的信息,提高了mqtt平台的安全性。
11.根据本发明的一些实施例,在所述获取所述接入设备为主题消息申请所述子密钥的请求信息之前,还包括步骤:设置白名单,并添加所述接入设备的国际移动设备识别码至所述白名单;获取所述白名单的信息,若所述接入设备的国际移动设备识别码在所述白名单内,允许所述接入设备接入mqtt。
12.根据本发明的一些实施例,通过证书生成所述主密钥。
13.根据本发明的一些实施例,所述证书包括:加密密钥、合约、识别标志、超期时间和证书类型;其中,所述加密密钥用于生成所述主密钥和所述子密钥,所述合约和所述识别标志用于将所述证书与所述主密钥和所述子密钥进行配对检查。
14.根据本发明的一些实施例,所述生成绑定设备的主密钥,包括步骤:构建第一数组,在所述第一数组中添加加盐值、身份标识号、权限标记位和超期时间,以及在所述第一数组中添加从所述证书中提取的所述合约和所述识别标志;将所述第一数组中非加盐值依次与所述加盐值进行异或计算,得到异或后的所述第一数组;提取所述证书中的所述加密密钥,使用所述加密密钥将所述异或后的所述第一数组进行base64转码处理,生成所述主密钥。
15.根据本发明的一些实施例,所述生成绑定所述主题消息的子密钥,包括步骤:构建第二数组,在所述第二数组中添加加盐值、主题消息路径、哈希值和超期时间,以及在所述第二数组中添加从所述主密钥中提取的所述身份标识号、所述合约和所述识别标志;将所述第二数组中非加盐值依次与所述加盐值进行异或计算,得到异或后的所述第二数组;提取所述证书中的所述加密密钥,使用所述加密密钥将所述异或后的所述第二数组进行base64转码处理,生成所述子密钥。
16.根据本发明的一些实施例,所述若所述接入设备对应的设备型号绑定的所述主密钥具有生成所述子密钥的权限,生成所述子密钥,包括步骤:从所述请求信息中查询所述接入设备对应的所述设备型号是否绑定主密钥;若查询到所述设备型号已绑定主密钥,查询所述接入设备对应的所述设备型号是否存在可操作的主题消息列表;若查询到所述可操作的主题消息列表,判断所述主题消息是否在允许的主题消息列表中;若所述主题消息在允许的主题消息列表中,判断所述主题消息的权限是否在允许权限范围内;若所述主题消息的权限在允许权限范围内,判断所述主密钥是否具有生成所述子密钥的权限;若所述主密钥具有生成所述子密钥的权限,生成所述子密钥。
17.根据本发明的一些实施例,所述从所述申请信息中解析出所述子密钥并验证成功,包括步骤:所述从所述申请信息中解析出所述子密钥并鉴权成功,包括步骤:从所述申请信息中解析出所述子密钥,并提取所述证书中的所述加密密钥,使用所述加密密钥解析出所述子密钥的原始内容;根据所述子密钥的原始内容,对所述子密钥的所述超期时间、所述合约、所述识别标志、所述身份标识号、所述权限、所述主题消息路径和所述哈希值进行验证,若所述子密钥的所述超期时间、所述合约、所述识别标志、所述身份标识号、所述权限、所述主题消息路径和所述哈希值全部验证通过,则鉴权成功。
18.第二方面,本发明实施例提供mqtt协议接入物联网设备鉴权实现系统,包括服务器,所述服务器包括:
19.主密钥生成模块,用于生成绑定设备型号的主密钥,并设置所述主密钥生成绑定主题消息的子密钥的权限;
20.主密钥鉴权及子密钥生成模块,用于获取接入设备为所述主题消息申请所述子密钥的请求信息,若所述接入设备对应的设备型号绑定的所述主密钥具有生成所述子密钥的权限,生成所述子密钥并将所述子密钥推送给所述接入设备;
21.子密钥鉴权模块,用于获取所述接入设备申请发布或订阅所述主题消息的申请信息,若从所述申请信息中解析出所述子密钥并鉴权成功,接收或推送所述主题消息。
22.根据本发明的实施例,至少具有如下技术效果:
23.通过生成对应设备型号的主密钥,以及生成对应主题消息的子密钥,分别对接入设备和接入设备发布或订阅的主题消息进行权限鉴定,使得没有子密钥的接入设备不能发布主题消息到mqtt平台或订阅mqtt平台的信息,提高了mqtt平台的安全性。
24.根据本发明的一些实施例,所述mqtt协议接入物联网设备鉴权实现系统还包括数据库,所述数据库包括:第一列表,用于保存所述设备型号的身份标识号、以及所述设备型号对应的证书和所述主密钥;第二列表,用于保存所述设备型号对应的可操作的主题消息列表和所述接入设备的权限;第三列表,用于保存所述接入设备的国际移动设备识别码。
25.本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
26.本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
27.图1为mqtt协议接入物联网设备鉴权实现方法实施例提供的流程步骤图;
28.图2为mqtt协议接入物联网设备鉴权实现方法实施例提供的证书原始数据图;
29.图3为mqtt协议接入物联网设备鉴权实现方法实施例提供的主密钥原始数据图;
30.图4为mqtt协议接入物联网设备鉴权实现方法实施例提供的子密钥原始数据图;
31.图5为mqtt协议接入物联网设备鉴权实现方法实施例提供的目标主题为 / /a/b/c/时的子密钥目标路径图;
32.图6为mqtt协议接入物联网设备鉴权实现方法实施例提供的目标主题为a/b/c/#/时的子密钥目标路径图;
33.图7为mqtt协议接入物联网设备鉴权实现方法实施例提供的设备权限检查并生成子密钥的流程图;
34.图8为mqtt协议接入物联网设备鉴权实现方法实施例提供的子密钥的鉴权方法示意图;
35.图9为mqtt协议接入物联网设备鉴权实现方法实施例提供的整体交互流程图;
36.图10为mqtt协议接入物联网设备鉴权实现方法实施例提供的设备与代理之间交互的数据格式定义图;
37.图11为mqtt协议接入物联网设备鉴权实现系统实施例提供的服务器结构示意图;
38.图12为mqtt协议接入物联网设备鉴权实现系统实施例提供的数据库keygen_license表结构设计图;
39.图13为mqtt协议接入物联网设备鉴权实现系统实施例提供的数据库keygen_topic_list表结构设计图;
40.图14为mqtt协议接入物联网设备鉴权实现系统实施例提供的数据库可操作topic列表模板格式图;
41.图15为mqtt协议接入物联网设备鉴权实现系统实施例提供的数据库某设备型号可操作的topic列表的默认topic格式图;
42.图16为mqtt协议接入物联网设备鉴权实现系统实施例提供的数据库某设备型号
可操作的topic列表的自定义topic格式图;
43.图17为mqtt协议接入物联网设备鉴权实现系统实施例提供的服务器管理界面初始界面图;
44.图18为mqtt协议接入物联网设备鉴权实现系统实施例提供的服务器管理界面生成证书后界面图;
45.图19为mqtt协议接入物联网设备鉴权实现系统实施例提供的服务器管理界面自定义界面图。
具体实施方式
46.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
47.非另有定义,本发明所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本发明中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本发明。
48.以某一小区为例,小区居民甲拥有两台智能家用设备,冰箱和手机。小区居民甲想将冰箱和手机连入小区的mqtt平台中,其中,冰箱作为发布者发布主题消息,手机作为订阅者订阅相关主题,这样小区居民甲不在家也能通过手机观测冰箱的状态。
49.如果小区居民甲使用常规的mqtt平台连入方法,那么他将面临如下问题:
50.第一:如果小区居民乙通过手机也订阅了甲的冰箱发布的主题消息,那乙也能接收到甲的冰箱发布的主题消息,但小区居民甲并不想让其他人知道他的冰箱消息。
51.第二:甲的冰箱有多个传感器,能够监测冰箱内的温度、湿度和气压,甲每次都能通过手机接收到冰箱发布的关于温度、湿度和气压的主题消息,但甲只想了解冰箱的温度信息,冰箱的湿度和气压甲并不关心。
52.综上,常规的mqtt平台存在平台信息泄露、无效信息占用带宽的问题。
53.为解决上述问题,参照图1,第一方面,本发明实施例提供mqtt协议接入物联网设备鉴权实现方法,包括以下步骤:
54.s110:生成绑定设备型号的主密钥,并设置主密钥生成绑定主题消息的子密钥的权限;
55.s120:获取接入设备为主题消息申请子密钥的请求信息,若接入设备对应的设备型号绑定的主密钥具有生成子密钥的权限,则生成子密钥并将子密钥推送给接入设备;
56.s130:获取接入设备申请发布或订阅主题消息的申请信息,若从申请信息中解析出子密钥并鉴权成功,接收或推送主题消息。
57.发布者、订阅者和代理是mqtt协议中的三种身份,其中发布者和订阅者为客户端,连接的是物联网设备,代理为服务端,连接的是服务器。在本实施例中,设备型号是一个抽象的概念,是指某一类设备的总和,设备是一个具体的东西,指连入mqtt协议中该设备型号的某个设备。
58.密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参
数。在本实施例中,将绑定设备型号的密钥称为主密钥,绑定主题消息的密钥称为子密钥。
59.主题消息是一种传输方式,具体表现为发布/订阅、一对多的模式,一个消息的生产者可能对应多个消息的消费者。
60.在步骤s110和步骤s120中,mqtt平台的服务器会生成主密钥,该主密钥用于与接入mqtt平台的设备进行鉴权认证,以上述小区为例,当小区居民甲的冰箱和手机连入小区的mqtt平台时,向服务器为主题消息申请子密钥的请求信息,此时mqtt平台的服务器会查询小区居民甲的冰箱和手机对应的设备型号是否绑定过主密钥,该主密钥是否具有生成子密钥的权限,只有同时满足上述两个条件,mqtt平台的服务器才会为小区居民甲的冰箱和手机派发子密钥。甲的冰箱和手机接收到子密钥后,冰箱和手机就有权限发布或订阅相关主题消息了。
61.在步骤s130中,服务器接收接入设备申请发布或订阅主题消息的申请信息,然后从该申请信息解析出子密钥,如果子密钥鉴权通过,则执行该申请信息的要求,接收来自发布者的主题消息或推送主题消息给订阅者。
62.以上述小区为例,小区居民乙通过手机申请订阅甲的冰箱发布的主题消息,但由于乙没有对应该主题消息的子密钥,服务器不同意订阅者的申请,乙无法接收甲的冰箱发布的主题消息。由于只给冰箱的“冰箱温度”主题申请了子密钥,如果冰箱发布湿度和气压的主题消息,服务器不同意发布者的申请,甲无法接收除“冰箱温度”之外的冰箱发布的主题消息。
63.综上,下面详细介绍了整套机制的实现原理。
64.为了实现该权限控制机制,需要生成主密钥。主密钥和设备型号一一对应。接入的设备型号可以是冰箱,空调,洗衣机等。通过主密钥可以生成子密钥。子密钥和mqtt发布和订阅的主题消息一一对应。当某个冰箱型号下面的某个设备需要通过主题/a/b/temperature发布温度信息到平台,需要获取/a/b/temperature主题对应的子密钥,该子密钥是接入云平台生成的。然后需要平台验证是否正确才能发布。同理当设备订阅某一个主题消息的时候,也需要获取该主题消息topic对应的子密钥。子密钥是云端broker生成,设备端申请和使用。
65.本发明实施例通过生成对应设备型号的主密钥,以及生成对应主题消息的子密钥,分别对接入设备和接入设备发布或订阅的主题消息进行权限鉴定,使得没有子密钥的接入设备不能发布主题消息到mqtt平台或订阅mqtt平台的信息,提高了mqtt平台的安全性。
66.在本发明的一些实施例中,为了防止设备的恶意接入,在获取接入设备为主题消息申请子密钥的请求信息之前,添加接入设备的国际移动设备识别码至白名单,只有接入设备对应的国际移动设备识别码在白名单内,才允许接入设备接入mqtt。白名单格式如表1所示:
67.idmajor_domain_idsub_domain_iddevice_id1129004001000000205212900400100000020631290040010000002074129004001000000208
5129004001000000209
68.表1
69.在本发明的一些实施例中,证书lisense可生成主密钥,由主密钥又可以生成子密钥。
70.license生成方法:
71.license的原始数据为32byte的数组,结构如图2所示。前24byte为随机数,其中:0~15byte表示加密密钥(encryption key),用于生成主密钥;16~19byte表示合约(contract),用于license和密钥配对匹配检查;20~23byte表示识别标志(signature),用于license和密钥配对匹配检查;24~27byte表示超期时间,也可以固定传入0;28~31byte表示证书类型,也可以固定某一原始数据通过base64转码得到最终输出的license。
72.主密钥生成方法:
73.主密钥为24byte的数组,原始信息如图3所示。0~1byte为随机数,表示加盐值;2~3byte表示主密钥id,目前固定为1;4~7byte表示contract,使用license中的contract值;8~11byte表示signature,使用license中的signature;15byte表示权限标记位,主密钥赋值为allowmaster,意为可以使用此密钥子密钥;20~23byte表示超期时间;其它位不赋值,默认为0。
74.主密钥转换方法:
75.1)原始信息v[2]~v[23]依次与盐值v[0]v[1]异或;
[0076]
2)异或后的结果使用license中的encryption key进行base64转码处理后生成最终的主密钥。
[0077]
子密钥生成方法:
[0078]
客户端主动申请,通过往/emitter/keygen/这个主题(topic)上面publish一条请求消息,即可申请子密钥,这个topic本身不需要添加子密钥进行鉴权。
[0079]
请求消息的格式为json串形式,定义如下:
[0080][0081]
服务器收到生成密钥的请求后,首先对主密钥进行鉴权,鉴权通过后生成子密钥
返回给客户端,形式如下:
[0082][0083]
子密钥的计算方法如图4所示。
[0084]
1)图4示意了子密钥原始信息的结构,与主密钥一样,为24byte数组
[0085]
2)前两个字节为随机盐值
[0086]
3)master id,contract,signature与主密钥一致
[0087]
4)target path共3byte(24bit),用于目标topic的级数标识,每一级占一个bit,如果是具体的名称则置1,如果是’ ’通配符则置0。最多支持23级,最高位表示topic最后一级是否是’#’通配符。
[0088]
假设目标topic为 / /a/b/c/,则target path表示如图5所示,假设目标topic为a/b/c/#/,则targetpath表示如图6所示。
[0089]
5)target channel哈希值,即用户传入的topic经过处理后的topic的哈希值。比如 / /a/b/c/,处理后会去掉最后的/,然后计算 / /a/b/c的哈希值。
[0090]
6)超期时间的计算方式是:
[0091]
expire=当前时间 用户传入的ttl值

偏移量(2010/1/1 00:00:00)
[0092]
子密钥转换方法:
[0093]
原始信息v[2]~v[23]依次与盐值v[0]v[1]异或
[0094]
异或后的结果使用license中的encryption key进行base64转码处理后生成最终的子密钥。
[0095]
在本发明的一些实施例中,需要对主密钥和子密钥进行鉴权验证,当收到生成子密钥的请求时,权限检查并生成密钥的流程如图7所示。
[0096]
1)从请求信息中查询接入设备对应的设备型号是否绑定主密钥;
[0097]
2)若查询到设备型号已绑定主密钥,查询接入设备对应的设备型号是否存在可操作的主题消息列表;
[0098]
3)若查询到可操作的主题消息列表,判断主题消息是否在允许的主题消息列表中;
[0099]
4)若主题消息在允许的主题消息列表中,判断主题消息的权限是否在允许权限范围内;
[0100]
5)若主题消息的权限在允许权限范围内,判断主密钥是否具有生成子密钥的权限;
[0101]
6)若主密钥具有生成子密钥的权限,生成子密钥。
[0102]
以发布消息为例,子密钥的鉴权方法示意如图8所示。
[0103]
1)从申请信息中解析出子密钥,并提取证书中的密钥,使用密钥解析出子密钥的原始内容;
[0104]
2)根据子密钥的原始内容,对子密钥的超期时间、合约、识别标志、身份标识号、权限、主题消息路径和哈希值进行验证,若子密钥的超期时间、合约、识别标志、身份标识号、权限、主题消息路径和哈希值全部验证通过,则验证成功。
[0105]
整体交互流程:
[0106]
如图9所示,客户端在发布和订阅时要携带子密钥用于服务端鉴权,下面设计的一套密钥交互流程,可以实现动态申请密钥,控制权在服务端,便于灵活配置。其中,图中broker服务说明如下:warehouse服务用于设备白名单鉴权;keygen服务用于生成子密钥和子密钥鉴权;business服务用于和业务系统对接。设备与broker之间交互的数据格式定义如图10所示。
[0107]
参照图11,第二方面,本发明实施例提供mqtt协议接入物联网设备鉴权实现系统包括服务器,该服务器包括:
[0108]
主密钥生成模块210,用于生成绑定设备型号的主密钥,并设置所述主密钥生成绑定主题消息的子密钥的权限;
[0109]
主密钥鉴权及子密钥生成模块220,用于获取接入设备为所述主题消息申请所述子密钥的请求信息,若所述接入设备对应的设备型号绑定的所述主密钥具有生成所述子密钥的权限,生成所述子密钥并将所述子密钥推送给所述接入设备;
[0110]
子密钥鉴权模块230,用于获取所述接入设备申请发布或订阅所述主题消息的申请信息,若从所述申请信息中解析出所述子密钥并鉴权成功,接收或推送所述主题消息。
[0111]
通过生成对应设备的主密钥,以及生成对应设备主题消息的子密钥,分别对设备和设备发布或订阅的主题消息进行权限鉴定,使得没有子密钥的设备不能发布主题消息到mqtt平台或订阅mqtt平台的信息,提高了mqtt平台的安全性。
[0112]
在本发明的一些实施例中,该mqtt协议接入物联网设备鉴权实现系统还包括数据库。
[0113]
keygen服务设计:
[0114]
keygen服务模块,负责处理设备的发布订阅密钥的生成请求,与前端页面对接,提供产品级可操作topic的查询,配置接口。
[0115]
数据库设计:
[0116]
新建keygen数据库,keygen数据库下建立keygen_license和keygen_topic_list两张数据库表。
[0117]
keygen_license:
[0118]
为了实现broker的灵活扩展,兼容产品级定制broker,该表保存了broker的基本信息(license和主密钥,需配对使用)和对设备提供的域名地址(不同broker可映射到不同的子域名)。表结构设计如图12所示。
[0119]
keygen_topic_list:该表保存了产品级对应的可操作topic列表,表结构设计如图13所示。
[0120]
参数说明:
[0121]
1)default_topic_list
[0122]
表示产品创建时默认赋予的可操作topic列表,通过模板派生。模板通过配置项或文件定义,根据目前的设计,模板格式如图14所示。
[0123]
当新产品创建,第一次调用ac-keygen.getdefaulttopiclist时,ac-keygen服务根据模板,替换rentid为主域id,对应厂商,productid为子域id,对应产品,devicename为 通配符,派生出当前产品级可操作的topic列表,如图15所示。
[0124]
2)custom_topic_list
[0125]
表示自定义topic列表,当is_permit_custom为true时,用户可以通过界面进行增加、删除操作。
[0126]
可用于扩展当前产品的topic定义,也可以用于关联其它产品的topic,实现场景联动,m2m通信扩展需求。例如,custom_topic_list采用与default_topic_list相同的格式定义,形式如图16所示。
[0127]
3)is_permit_custom
[0128]
表示是否允许自定义topic列表,默认值为false。
[0129]
在本发明的一些实施例中,该mqtt协议接入物联网设备鉴权实现系统还包括服务器管理界面。
[0130]
1)增加网关配置页,用于broker证书、主密钥、topic管理。
[0131]
产品创建后,初始页面效果如下,用户可以选择生成证书或使用默认。生成证书意味着需要给产品提供单独的broker服务,使用默认则使用已有的broker提供服务。同时产品默认可以使用的topic列表显示出来,界面效果如图17所示。
[0132]
2)用户选择生成证书或使用默认后,界面效果如图18所示。
[0133]
3)用户是否可以自定义topic,应该放在产品定义之外控制,比如租户管理中配置。如果支持自定义,界面效果如图19所示。
[0134]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0135]
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献