适用于工业数控场景的消息代理方法、设备及存储介质与流程
未命名
07-14
阅读:230
评论:0

1.本发明涉及数字信息传输领域,尤其涉及一种适用于工业数控场景的消息代理方法、设备及存储介质。
背景技术:
2.在智能工厂的建设中,消息代理能够实现数控装备之间的互联互通,将数控装备的应用程序连接起来,通过将不同发布者发布的消息在消息代理服务器里面进行路由,使得消息最终被正确的订阅者所接收。
3.目前,适用于工业数控场景的开源的消息代理大多是基于mqtt协议(message queuing telemetry transport,消息队列遥测传输协议)开发的,例如:mosquitto,实现了mqtt协议版本3.1和3.1.1。但随着物联网安全问题的越发严峻,在工业数控中存在数据交互的信任问题,由于mqtt运行于tcp层之上并以明文方式传输,这就相当于http的明文传输,使用wireshark可以完全看到mqtt发送的所有消息,消息指令一览无遗,这样可能会造成以下安全问题:设备被盗用;客户端和服务器的静态数据被修改;协议行为有副作用;拒绝服务攻击;通信被拦截、修改、重定向或者泄露;虚假控制报文注入等。由此可见,以明文方式传输消息会导致消息代理的安全性不足。
4.上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
技术实现要素:
5.本发明的主要目的在于提供一种适用于工业数控场景的消息代理方法、设备及存储介质,旨在解决现有技术中消息代理过程中消息以明文方式传输,从而导致安全性不足的技术问题。
6.为实现上述目的,本发明提供一种适用于工业数控场景的消息代理方法,所述消息代理方法由服务器执行,所述服务器应用于包含客户端和所述服务器的消息代理系统,所述客户端包括发布客户端和订阅客户端,所述方法包括以下步骤:
7.获取预先创建的第一双证书,所述第一双证书为所述服务器的数字证书;
8.在接收到所述发布客户端发送的待发布消息时,根据所述待发布消息确定所述消息代理系统中的目标订阅客户端;
9.根据所述第一双证书与所述目标订阅客户端的双证书将所述待发布消息加密后传输至所述目标订阅客户端。
10.可选地,所述第一双证书和所述客户端的双证书均包含有对应的签名公钥、签名私钥、加密公钥和加密私钥,所述签名公钥用于对所述待发布消息进行验签,所述签名私钥用于对所述待发布消息进行签名,所述加密公钥用于对所述待发布消息进行加密,所述加密私钥用于对所述待发布消息进行解密;
11.所述根据所述第一双证书与所述目标订阅客户端的双证书将所述待发布消息加
密后传输至所述目标订阅客户端的步骤,包括:
12.根据所述第一双证书中的签名私钥和所述目标订阅客户端的加密公钥对所述待发布消息分别进行签名和加密;
13.将签名和加密后的所述待发布消息传输至所述目标订阅客户端,以使所述目标订阅客户端在接收到所述待发布消息时,通过所述目标订阅客户端的加密私钥和所述第一双证书中的签名公钥分别进行解密和验证。
14.可选地,所述根据所述第一双证书中的签名私钥和所述目标订阅客户端的加密公钥对所述待发布消息分别进行签名和加密的步骤,包括:
15.根据所述第一双证书中的签名私钥对所述待发布消息进行签名;
16.获取目标订阅客户端的加密公钥;
17.通过所述目标订阅客户端的加密公钥对签名后的所述待发布消息进行加密。
18.可选地,所述在接收到所述发布客户端发送的待发布消息时,根据所述待发布消息确定所述消息代理系统中的目标订阅客户端的步骤之前,还包括:
19.接收所述订阅客户端发送的订阅消息,并根据所述订阅消息建立对应的主题筛选器;
20.相应地,所述在接收到所述发布客户端发送的待发布消息时,根据所述待发布消息确定所述消息代理系统中的目标订阅客户端的步骤,包括:
21.在接收到所述发布客户端发送的待发布消息时,根据所述待发布消息确定对应的发布主题;
22.将所述发布主题与所述主题筛选器进行匹配,并将匹配到的主题筛选器对应的订阅客户端作为目标订阅客户端。
23.可选地,所述第一双证书为采用openssl生成的所述服务器的数字证书。
24.此外,为实现上述目的,本发明还提出一种适用于工业数控场景的消息代理方法,所述消息代理方法由客户端执行,所述客户端应用于包含服务器和所述客户端的消息代理系统,所述方法包括:
25.获取预先创建的第二双证书,所述第二双证书为所述客户端的数字证书;
26.与所述服务器建立连接;
27.获取待传输消息,并根据所述第二双证书与所述服务器的双证书将所述待传输消息加密后传输至所述服务器。
28.可选地,所述第二双证书和所述服务器的双证书均包含有对应的签名公钥、签名私钥、加密公钥和加密私钥,所述签名公钥用于对所述待传输消息进行验签,所述签名私钥用于对所述待传输消息进行签名,所述加密公钥用于对所述待传输消息进行加密,所述加密私钥用于对所述待传输消息进行解密;
29.所述根据所述第二双证书与所述服务器的双证书将所述待传输消息加密后传输至所述服务器的步骤,包括:
30.根据所述第二双证书中的签名私钥和所述服务器的加密公钥对所述待传输消息分别进行签名和加密;
31.将签名和加密后的所述待传输消息传输至所述服务器,以使所述服务器在接收到所述待传输消息时,通过所述服务器的加密私钥和所述第二双证书中的签名公钥分别进行
unit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(random access memory,ram)存储器,也可以是稳定的非易失性存储器(non-volatile memory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
48.本领域技术人员可以理解,图1中示出的结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
49.如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及消息代理程序。
50.在图1所示的设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明适用于工业数控场景的设备中的处理器1001、存储器1005可以设置在所述设备中,所述设备通过处理器1001调用存储器1005中存储的消息代理程序,并执行本发明下述实施例提供的适用于工业数控场景的消息代理方法。
51.本发明实施例提供了一种适用于工业数控场景的消息代理方法,参照图2,图2为本发明适用于工业数控场景的消息代理方法第一实施例的流程示意图。
52.本实施例中,所述消息代理方法由服务器执行,所述服务器应用于包含客户端和所述服务器的消息代理系统,所述客户端包括发布客户端和订阅客户端,所述方法包括以下步骤:
53.步骤s201:获取预先创建的第一双证书,所述第一双证书为所述服务器的数字证书。
54.需要说明的是,本实施例的执行主体可以是一种具有消息代理、数据处理以及程序运行功能的电子服务设备,例如消息代理服务器等,或者是其它能够实现如同或相似功能的设备。此处以上述消息代理服务器(以下简称服务器)对本实施例和下述各实施例进行具体说明。
55.需要说明的是,上述消息代理系统可以是基于mqtt协议的消息代理模型建立的系统。参照图3,图3为本发明适用于工业数控场景的消息代理方法第一实施例中消息代理系统的模型图。如图3所示,上述消息代理系统的模型一般包括三种身份:发布者301(publish)、代理302(broker)、订阅者303(subscribe)。其中,消息的发布者和订阅者一般都是客户端,即发布客户端和订阅客户端,代理一般为服务器。上述客户端的作用可以包括:发布其他客户端可能会订阅的信息,即发布消息;订阅其它客户端发布的消息,即订阅消息;退订或删除应用程序的消息;断开与服务器的连接。上述服务器的作用可以包括:接受来自客户端的网络连接;接受客户端发布的应用信息;处理来自客户端的订阅和退订请求;向订阅的客户端转发应用程序消息,即推送消息。
56.可以理解的是,消息的发布者可以同时是订阅者。例如,在工业数控场景中,客户端可以是适配器,也可以是数控设备应用系统,在适配器发布消息时,应用系统可以作为最终接收消息的订阅者,而在应用系统发布消息时,适配器也可以作为对应的订阅者,消息代
理服务器一般是适配器和应用系统之间完成信息通信的中间件,其中,消息可以是工业数控场景中各数控设备的应用程序消息。
57.值得说明的是,上述第一双证书为所述服务器的数字证书,可以包括服务器的签名证书和服务器的加密证书。本实施例中,数字证书可以包括以下规则的描述:
58.版本:该证书使用的是哪种版本的x.509标准;
59.序列号:本项是ca分配给每一个证书的唯一的数字型编号,证书序列号的长度在不同的ca系统中是可配置的;
60.签名算法:本项用来指定颁发机构ca签发证书时使用的签名算法;
61.颁发者:issuer本项标识了颁发该证书的机构dn;
62.有效期:validity本项是证书的有效期和终止日期;
63.主题:subject证书拥有者的唯一是别名,这个字段必须是非空的;
64.有效的dn(distinct name)标识:
65.c country code(一般是c=cn)
66.o organization(组织)
67.ou organizational unit name(组织单位名)
68.cn common name(普通名)
69.e email(邮件地址)
70.l locality name(地址)
71.st state,or province name(国家或省份名)
72.dc domain component(领域)
73.uid user id(用户标识符)
74.t title(标题)
75.sn device serial number name;
76.公钥public key:本项用来标识公钥,公钥算法和公钥长度;
77.hash算法:和证书本身没关系,即哈希算法,通常用md5或sha1;
78.hash值:是指对整个证书进行hash运算之后生成的一段数据,就是对证书的哈希摘要。
79.进一步地,本实施例中,为了便于生成规范的双证书,可以采用openssl生成上述第一双证书。采用openssl生成第一双证书的步骤如下:
80.首先,使用openssl相关命令生成ca根证书。步骤1:制作ca.key私钥(aes256算法加密);步骤2:制作生成ca证书请求;步骤3:自签名得到根证书,这里也可以生成ca.crt文件。至此,ca根证书生成完毕,内容应当包含以下三个文件:ca.key、ca.csr以及ca.crt,分别为sm2算法私钥、证书请求文件以及使用私钥签名后的ca根证书。
81.其次,使用openssl相关命令生成服务器的签名证书。步骤1:生成签名证书的私钥ss_nclink.com.key;步骤2:生成签名证书的证书请求文件ss_nclin.com.csr;步骤3:使用根ca证书签发nclink.com的签名证书ss_nclink.com.crt;步骤4:校验整数。这样可以在服务器server文件夹下得到三个文件:ss_nclink.com.key、ss_nclink.com.csr以及ss_nclink.com.crt,即服务器签名证书的sm2私钥文件、服务器签名证书的请求文件以及经过ca私钥签名认证的服务器的签名证书。
82.最后,使用openssl相关命令生成服务器的加密证书。步骤1:生成加密证书的私钥se_nclink.com.key;步骤2:生成加密证书的证书请求文件se_nclink.com.csr;步骤3:使用根证书ca签发服务器的加密证书se_nclink.com.crt。与此同时,在服务器server文件夹下又增加了三个文件:se_nclink.com.key、se_nclink.com.csr以及se_nclink.com.crt,即服务器加密证书的sm2私钥文件、服务器加密证书的请求文件以及经过ca私钥签名认证的服务器的加密证书。
83.在具体实现中,服务器获取采用openssl预先创建的第一双证书。
84.步骤s202:在接收到所述发布客户端发送的待发布消息时,根据所述待发布消息确定所述消息代理系统中的目标订阅客户端。
85.需要说明的是,上述消息代理系统可以建立客户端到服务器的连接,提供两者之间的一个有序的、无损的、基于字节流的双向传输。客户端在与服务器保持连接的状态下,可以向服务端发布信息,也可以从服务端收取信息。通常把客户端向服务器发送信息的行为称为发布消息,而客户端要想从服务端收取信息,往往需要先向服务端订阅消息。
86.应当理解的是,上述发布客户端一般是指当前发布消息的客户端。上述待发布消息可以是上述发布客户端发送至服务器,并即将通过服务器发送给其他客户端的消息。上述目标订阅客户端可以是订阅了上述待发布消息的客户端。
87.在具体实现中,当服务器接收到发布客户端发送的待发布消息时,根据待发布消息查找对应的订阅了该消息的客户端作为目标订阅客户端。
88.进一步地,为了能够在接收到上述待发布消息时,更为准确地确定目标订阅客户端,本实施例中,上述步骤s202之前,还包括:
89.步骤s2001:接收所述订阅客户端发送的订阅消息,并根据所述订阅消息建立对应的主题筛选器。
90.需要说明的是,上述订阅客户端可以是向服务器发送过订阅消息的全部客户端。上述订阅消息可以包含上述主题筛选器(topic filter)和最大服务质量(qos)。上述主题筛选器可以是指订阅消息所匹配到的多个主题。
91.可以理解的是,在订阅客户端向服务器发送订阅消息之前,通常需要建立连接,每个客户端与服务器建立连接后可以是一个会话(session),上述连接一般是持续性连接,即连接成功后,会话会一直保持,订阅客户端可以多次订阅。上述订阅消息应当与一个会话(session)关联,一个会话可以包含多个订阅消息。每一个会话中的每个订阅消息都可以有一个不同的主题筛选器。
92.相应地,上述步骤s202,具体包括:
93.步骤s2002:在接收到所述发布客户端发送的待发布消息时,根据所述待发布消息确定对应的发布主题。
94.需要说明的是,上述待发布消息可以包括主题(topic)和负载(payload)两部分。上述发布主题可以理解为上述待发布消息的类型,负载可以理解为内容。通常在订阅者订阅后,便可以收到该主题的具体消息内容。
95.可以理解的是,在本实施例中,上述发布主题可以是连接到一个应用程序消息的一个标签,当该标签与上述订阅消息的主题筛选器相匹配时,服务器会将上述待发布消息发送给订阅了上述发布主题的每个客户端。
96.步骤s2003:将所述发布主题与所述主题筛选器进行匹配,并将匹配到的主题筛选器对应的订阅客户端作为目标订阅客户端。
97.在具体实现中,订阅客户端先向服务器发送订阅消息,并建立每个订阅消息对应的主题筛选器,当服务器接收到发布客户端发送的待发布消息时,根据待发布消息确定对应的发布主题,将发布主题与服务器中的全部主题筛选器依次进行匹配,若发布主题的标签存在于某个主题筛选器时,则表示匹配成功,并将匹配到的所有主题筛选器对应的订阅客户端作为目标订阅客户端。
98.可以理解的是,服务器向订阅客户端推送消息,通常需要在订阅客户端向服务器发送订阅消息之前进行连接建立会话,为了更为安全稳定地传输消息,作为一种实施方式,上述步骤s2001之前,还包括:通过服务器与客户端对应的双证书进行连接的单向或双向认证,当认证通过后则连接成功。
99.在具体实现中,在分别创建了服务器和客户端的双证书之后,客户端向服务器订阅消息或发布消息之前,先通过双证书与服务器进行单向或者双向的认证,在认证通过后则可以向服务器发送消息。
100.步骤s203:根据所述第一双证书与所述目标订阅客户端的双证书将所述待发布消息加密后传输至所述目标订阅客户端。
101.在具体实现中,在订阅客户端通过双证书认证建立连接并向服务器发送了订阅消息之后,在服务器接收到发布客户端发布的待发布消息时,将所述待发布消息通过双证书中包含的密钥将待发布消息进行加密传输至目标订阅客户端。
102.本实施例通过由服务器执行,服务器应用于包含客户端和服务器的消息代理系统,客户端包括发布客户端和订阅客户端。服务器获取预先创建的第一双证书,第一双证书为服务器的数字证书;在接收到发布客户端发送的待发布消息时,根据待发布消息确定消息代理系统中的目标订阅客户端;根据第一双证书与目标订阅客户端的双证书将待发布消息加密后传输至目标订阅客户端。由于本实施例通过在消息代理系统中预先创建服务器的双证书,然后在消息代理过程中,客户端与服务器使用双证书进行连接认证,并在连接成功后,通过双证书进行消息的加密传输,避免了现有的消息代理以明文方式传输消息导致的安全问题,提升了消息代理的安全性。采用市面上开源的openssl生成证书,使得双证书生成的效率更高更规范。
103.参考图4,图4为本发明适用于工业数控场景的消息代理方法第二实施例的流程示意图。
104.为了保证双证书的加密证书和签名证书不共用同一套密钥,符合国密标准,安全性更高,基于上述第一实施例,在本实施例中,所述第一双证书和所述客户端的双证书均包含有对应的签名公钥、签名私钥、加密公钥和加密私钥,所述签名公钥用于对所述待发布消息进行验签,所述签名私钥用于对所述待发布消息进行签名,所述加密公钥用于对所述待发布消息进行加密,所述加密私钥用于对所述待发布消息进行解密,上述步骤s203具体包括:
105.步骤s401:根据所述第一双证书中的签名私钥和所述目标订阅客户端的加密公钥对所述待发布消息分别进行签名和加密。
106.需要说明的是,上述服务器的第一双证书与客户端的双证书,可以包含对应的签
名证书和加密证书。其中,签名证书一般包括签名公钥和签名私钥,主要用于对用户信息进行签名,以保证信息的有效性和不可否认性;加密证书一般包括加密公钥和加密私钥,主要用于对用户传送信息进行加密,以保证信息的保密性和完整性。
107.可以理解的是,签名公钥和加密公钥一般是公布于外的。例如,签名时,用户a用签名证书的私钥进行签名,其他用户b、c等均可以利用公布于外网的签名公钥对签名进行验证。加密时,用户b利用用户a公布于外网的加密公钥对信息进行加密传送给用户a,用户a利用自己的加密私钥对加密后的信息进行解密得到完整的明文信息。
108.在具体实现中,服务器根据自身的第一双证书中的签名私钥对待发布消息进行签名,并获取目标订阅客户端公开的加密公钥对待发布消息进行加密。
109.步骤s402:将签名和加密后的所述待发布消息传输至所述目标订阅客户端,以使所述目标订阅客户端在接收到所述待发布消息时,通过所述目标订阅客户端的加密私钥和所述第一双证书中的签名公钥分别进行解密和验证。
110.在具体实现中,服务器将签名和加密后的待发布消息发送至目标订阅客户端。而目标订阅客户端在接收到待发布消息时,通过自身持有的加密私钥,对加密的待发布消息进行解密,并获取服务器公开的签名公钥,对上述签名进行验证。
111.进一步地,在考虑到若进行先加密后签名,可能使得签名信息被截获后遭受的彩虹表攻击,为了保证安全性,上述步骤s401,具体包括:
112.根据所述第一双证书中的签名私钥对所述待发布消息进行签名;获取目标订阅客户端的加密公钥;通过所述目标订阅客户端的加密公钥,对签名后的所述待发布消息进行加密。
113.在具体实现中,服务器根据自身的第一双证书中的签名私钥先对所述待发布消息进行签名,并获取目标订阅客户端公开的加密公钥,对签名后的待发布消息进行加密,最后将签名和加密后的待发布消息发送至目标订阅客户端。而此时,目标订阅客户端在接收到待发布消息时,通过自身持有的加密私钥,先对加密的待发布消息进行解密,再通过服务器公开的签名公钥,对解密后的待发布消息进行验签。
114.本实施例中,通过根据所述第一双证书中的签名私钥和所述目标订阅客户端的加密公钥对所述待发布消息分别进行签名和加密;将签名和加密后的所述待发布消息传输至所述目标订阅客户端,以使所述目标订阅客户端在接收到所述待发布消息时,通过所述目标订阅客户端的加密私钥和所述第一双证书中的签名公钥分别进行解密和验证。通过双证书进行认证,加密和签名各有一套密钥,相比于现有的单证书,双证书可以使得加密和签名功能一分为二,即加密证书只用来进行加密,签名证书只用来签名,更加符合国密标准,保证了必要的时候国家有能力对某些通讯进行监控,避免了采用单证书除了持有者谁也无法解密的风险,进一步提升了安全性。同时,在具体实现中,通过先签名后加密,可以避免签名信息被截获后遭受的彩虹表攻击,保证了消息代理加密传输的安全性。
115.本发明实施例提供了一种适用于工业数控场景的消息代理方法,参考图5,图5为本发明适用于工业数控场景的消息代理方法第三实施例的流程示意图。
116.本实施例中,所述消息代理方法由客户端执行,所述客户端应用于包含服务器和所述客户端的消息代理系统,所述方法包括以下步骤:
117.步骤s501:获取预先创建的第二双证书,所述第二双证书为所述客户端的数字证
书。
118.需要说明的是,本实施例的执行主体可以是一种具有信息通信、数据处理以及程序运行功能的电子设备,例如消息代理客户端设备、智能工厂中的适配器、数控设备应用系统等,或者是其它能够实现如同或相似功能的设备。此处以上述消息代理客户端设备(以下简称客户端)对本实施例和下述各实施例进行具体说明。
119.需要说明的是,上述消息代理系统可以是基于mqtt协议的消息代理模型建立的系统。上述消息代理系统的模型一般包括三种身份:发布者(publish)、代理(broker)、订阅者(subscribe)。其中,消息的发布者和订阅者一般都是客户端,即发布客户端和订阅客户端,代理一般为服务器。上述客户端的作用可以包括:发布其他客户端可能会订阅的信息,即发布消息;订阅其它客户端发布的消息,即订阅消息;退订或删除应用程序的消息;断开与服务器的连接。上述服务器的作用可以包括:接受来自客户端的网络连接;接受客户端发布的应用信息;处理来自客户端的订阅和退订请求;向订阅的客户端转发应用程序消息,即推送消息。
120.可以理解的是,消息的发布者可以同时是订阅者。例如,在工业数控场景中,客户端可以是适配器,也可以是数控设备应用系统,在适配器发布消息时,应用系统可以作为最终接收消息的订阅者,而在应用系统发布消息时,适配器也可以作为对应的订阅者,而消息代理服务器一般是适配器和应用系统之间完成信息通信的中间件,其中,消息可以是工业数控场景中各数控设备的应用程序消息。
121.值得说明的是,上述第二双证书为所述客户端的数字证书,可以包括客户端的签名证书和客户端的加密证书,本实施例中,数字证书可以包括以下规则的描述:
122.版本:该证书使用的是哪种版本的x.509标准;
123.序列号:本项是ca分配给每一个证书的唯一的数字型编号,证书序列号的长度在不同的ca系统中是可配置的;
124.签名算法:本项用来指定颁发机构ca签发证书时使用的签名算法;
125.颁发者:issuer本项标识了颁发该证书的机构dn;
126.有效期:validity本项是证书的有效期和终止日期;
127.主题:subject证书拥有者的唯一是别名,这个字段必须是非空的;
128.有效的dn(distinct name)标识:
129.c country code(一般是c=cn)
130.o organization(组织)
131.ou organizational unit name(组织单位名)
132.cn common name(普通名)
133.e email(邮件地址)
134.l locality name(地址)
135.st state,or province name(国家或省份名)
136.dc domain component(领域)
137.uid user id(用户标识符)
138.t title(标题)
139.sn device serial number name;
140.公钥public key:本项用来标识公钥,公钥算法和公钥长度;
141.hash算法:和证书本身没关系,即哈希算法,通常用md5或sha1;
142.hash值:是指对整个证书进行hash运算之后生成的一段数据,就是对证书的哈希摘要。
143.进一步地,本实施例中,为了便于生成规范的双证书,可以采用openssl生成上述第二双证书。采用openssl生成第二双证书的步骤如下:
144.首先,使用openssl相关命令生成ca根证书。步骤1:制作ca.key私钥(aes256算法加密);步骤2:制作生成ca证书请求;步骤3:自签名得到根证书,这里也可以生成ca.crt文件。至此,ca根证书生成完毕,内容应当包含以下三个文件:ca.key、ca.csr以及ca.crt,分别为sm2算法私钥、证书请求文件以及使用私钥签名后的ca根证书。
145.其次,使用openssl相关命令生成客户端的签名证书。步骤1:生成签名证书的私钥ss_nclink.com.key;步骤2:生成签名证书的证书请求文件ss_nclin.com.csr;步骤3:使用根ca证书签发nclink.com的签名证书ss_nclink.com.crt;步骤4:校验整数。这样可以在客户端文件夹下得到三个文件:ss_nclink.com.key、ss_nclink.com.csr以及ss_nclink.com.crt,即客户端签名证书的sm2私钥文件、客户端签名证书的请求文件以及经过ca私钥签名认证的客户端的签名证书。
146.最后,使用openssl相关命令生成客户端的加密证书。步骤1:生成加密证书的私钥se_nclink.com.key;步骤2:生成加密证书的证书请求文件se_nclink.com.csr;步骤3:使用根证书ca签发客户端的加密证书se_nclink.com.crt。与此同时,在客户端文件夹下又增加了三个文件:se_nclink.com.key、se_nclink.com.csr以及se_nclink.com.crt,即客户端加密证书的sm2私钥文件、客户端加密证书的请求文件以及经过ca私钥签名认证的客户端的加密证书。
147.在具体实现中,客户端获取采用openssl预先创建的第二双证书。
148.步骤s502:与所述服务器建立连接。
149.在具体实现中,在服务器和客户端分别创建了的各自的双证书之后,客户端与服务器通过双证书进行认证,若通过了双证书与服务器的单向或者双向的认证,客户端则与服务器建立了连接、进行会话,此时便能够互相发送消息。例如,如图6所示,图6为本发明适用于工业数控场景的消息代理方法第三实施例中双证书的生成和单向认证模型图,其中ca机构601(certificate authority)一般是证书授权中心,ca机构601将认证过的双证书分发给客户端a602、客户端b603以及服务器604,在客户端a602、客户端b603与服务器604建立连接之前,客户端a602获取服务器604的双证书对服务器进行单项认证,客户端b603也可以获取服务器604的双证书对服务器进行单项认证。
150.步骤s503:获取待传输消息,并根据所述第二双证书与所述服务器的双证书将所述待传输消息加密后传输至所述服务器。
151.需要说明的是,上述待传输消息可以是客户端将要发送至服务器的消息,可以包括待发布消息、订阅消息和退订消息。
152.在具体实现中,在客户端通过双证书认证建立连接之后,将所述待传输消息通过双证书中包含的密钥将待传输消息进行加密传输至服务器。
153.可以理解的是,为了保证双证书的加密证书和签名证书不共用同一套密钥,符合
国密标准,安全性更高,所述第二双证书和所述服务器的双证书均包含有对应的签名公钥、签名私钥、加密公钥和加密私钥,所述签名公钥用于对所述待传输消息进行验签,所述签名私钥用于对所述待传输消息进行签名,所述加密公钥用于对所述待传输消息进行加密,所述加密私钥用于对所述待传输消息进行解密,上述步骤503中:根据所述第二双证书与所述服务器的双证书将所述待传输消息加密后传输至所述服务器,具体包括:
154.步骤s5001:根据所述第二双证书中的签名私钥和所述服务器的加密公钥对所述待传输消息分别进行签名和加密。
155.需要说明的是,上述客户端的第二双证书与服务器的双证书,可以包含对应的签名证书和加密证书。其中,签名证书一般包括签名公钥和签名私钥,主要用于对用户信息进行签名,以保证信息的有效性和不可否认性;加密证书一般包括加密公钥和加密私钥,主要用于对用户传送信息进行加密,以保证信息的保密性和完整性。
156.可以理解的是,签名公钥和加密公钥一般是公布于外的。
157.在具体实现中,客户端根据自身的第二双证书中的签名私钥对待传输消息进行签名,并获取服务器公开的加密公钥对待传输消息进行加密。
158.步骤s5002:将签名和加密后的所述待传输消息传输至所述服务器,以使所述服务器在接收到所述待传输消息时,通过所述服务器的加密私钥和所述第二双证书中的签名公钥分别进行解密和验证。
159.在具体实现中,客户端将签名和加密后的待传输消息发送至服务器。而服务器在接收到待传输消息时,通过自身持有的加密私钥,对加密的待传输消息进行解密,并获取客户端第二双证书中公开的签名公钥,对签名进行验证。
160.进一步地,在考虑到若进行先加密后签名,可能使得签名信息被截获后遭受的彩虹表攻击,为了保证安全性,上述步骤s5001,具体包括:
161.根据所述第二双证书中的签名私钥对所述待传输消息进行签名;获取服务器的加密公钥;通过所述服务器的加密公钥,对签名后的所述待传输消息进行加密。
162.在具体实现中,客户端根据自身的第二双证书中的签名私钥先对所述待传输消息进行签名,并获取服务器公开的加密公钥,对签名后的待传输消息进行加密,最后将签名和加密后的待传输消息发送至服务器。而此时,服务器在接收到待传输消息时,通过自身持有的加密私钥,先对加密的待传输消息进行解密,再通过客户端第二双证书中公开的签名公钥,对解密后的待传输消息进行验签。
163.此外,本实施例中待传输消息若是订阅消息,上述步骤s5002中:将签名和加密后的所述待传输消息传输至所述服务器,具体包括:
164.步骤s5002’:将签名和加密后的所述订阅消息传输至所述服务器,以使所述服务器在接收到所述订阅消息时,通过所述服务器的加密私钥和所述第二双证书中的签名公钥分别进行解密和验证,并根据所述订阅消息建立对应的主题筛选器,在接收到与所述主题筛选器相匹配的待发布消息时,返回所述待发布消息。
165.需要说明的是,上述订阅消息可以是客户端向服务器订阅主题的消息。上述待发布消息可以是其他客户端发送至服务器,并即将通过服务器发送给订阅了相关主题的客户端的消息。
166.在具体实现中,客户端将签名和加密后的订阅消息发送至服务器。而服务器在接
收到订阅消息时,通过自身持有的加密私钥,对加密的订阅消息进行解密,并获取客户端第二双证书中公开的签名公钥,对签名进行验证。然后服务器根据所述订阅消息建立对应的主题筛选器,在接收到与所述主题筛选器相匹配的待发布消息时,返回所述待发布消息给客户端。
167.本实施例通过由客户端执行,所述客户端应用于包含服务器和所述客户端的消息代理系统,先获取预先创建的第二双证书,然后与所述服务器建立连接,再获取待传输消息,并根据所述第二双证书与所述服务器的双证书将所述待传输消息加密后传输至所述服务器。由于本实施例通过预先创建服务器和客户端对应的双证书,然后在消息代理过程中,客户端与服务器使用双证书进行连接认证,并在连接成功后,通过双证书进行消息的加密传输,避免了现有的消息代理以明文方式传输消息导致的安全问题,提升了消息代理的安全性。同时,采用市面上开源的openssl生成证书,使得双证书生成的效率更高更规范。再者,通过双证书进行认证,加密和签名各有一套密钥,相比于现有的单证书,双证书可以使得加密和签名功能一分为二,即加密证书只用来进行加密,签名证书只用来签名,更加符合国密标准,保证了必要的时候国家有能力对某些通讯进行监控,避免了采用单证书除了持有者谁也无法解密的风险,进一步提升了安全性。在具体实现中,通过先签名后加密,可以避免签名信息被截获后遭受的彩虹表攻击,保证了加密传输的安全性。
168.此外,本发明实施例还提出一种存储介质,所述存储介质上存储有消息代理程序,所述消息代理程序被处理器执行时实现如上文所述的消息代理方法的步骤。
169.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体,意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
170.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
171.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
172.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
技术特征:
1.一种适用于工业数控场景的消息代理方法,其特征在于,所述消息代理方法由服务器执行,所述服务器应用于包含客户端和所述服务器的消息代理系统,所述客户端包括发布客户端和订阅客户端,所述方法包括:获取预先创建的第一双证书,所述第一双证书为所述服务器的数字证书;在接收到所述发布客户端发送的待发布消息时,根据所述待发布消息确定所述消息代理系统中的目标订阅客户端;根据所述第一双证书与所述目标订阅客户端的双证书将所述待发布消息加密后传输至所述目标订阅客户端。2.如权利要求1所述的消息代理方法,其特征在于,所述第一双证书和所述客户端的双证书均包含有对应的签名公钥、签名私钥、加密公钥和加密私钥,所述签名公钥用于对所述待发布消息进行验签,所述签名私钥用于对所述待发布消息进行签名,所述加密公钥用于对所述待发布消息进行加密,所述加密私钥用于对所述待发布消息进行解密;所述根据所述第一双证书与所述目标订阅客户端的双证书将所述待发布消息加密后传输至所述目标订阅客户端的步骤,包括:根据所述第一双证书中的签名私钥和所述目标订阅客户端的加密公钥对所述待发布消息分别进行签名和加密;将签名和加密后的所述待发布消息传输至所述目标订阅客户端,以使所述目标订阅客户端在接收到所述待发布消息时,通过所述目标订阅客户端的加密私钥和所述第一双证书中的签名公钥分别进行解密和验证。3.如权利要求2所述的消息代理方法,其特征在于,所述根据所述第一双证书中的签名私钥和所述目标订阅客户端的加密公钥对所述待发布消息分别进行签名和加密的步骤,包括:根据所述第一双证书中的签名私钥对所述待发布消息进行签名;获取目标订阅客户端的加密公钥;通过所述目标订阅客户端的加密公钥对签名后的所述待发布消息进行加密。4.如权利要求1所述的消息代理方法,其特征在于,所述在接收到所述发布客户端发送的待发布消息时,根据所述待发布消息确定所述消息代理系统中的目标订阅客户端的步骤之前,还包括:接收所述订阅客户端发送的订阅消息,并根据所述订阅消息建立对应的主题筛选器;相应地,所述在接收到所述发布客户端发送的待发布消息时,根据所述待发布消息确定所述消息代理系统中的目标订阅客户端的步骤,包括:在接收到所述发布客户端发送的待发布消息时,根据所述待发布消息确定对应的发布主题;将所述发布主题与所述主题筛选器进行匹配,并将匹配到的主题筛选器对应的订阅客户端作为目标订阅客户端。5.如权利要求1至4中任一项所述的消息代理方法,其特征在于,所述第一双证书为采用openssl生成的所述服务器的数字证书。6.一种适用于工业数控场景的消息代理方法,其特征在于,所述消息代理方法由客户端执行,所述客户端应用于包含服务器和所述客户端的消息代理系统,所述方法包括:
获取预先创建的第二双证书,所述第二双证书为所述客户端的数字证书;与所述服务器建立连接;获取待传输消息,并根据所述第二双证书与所述服务器的双证书将所述待传输消息加密后传输至所述服务器。7.如权利要求6所述的消息代理方法,其特征在于,所述第二双证书和所述服务器的双证书均包含有对应的签名公钥、签名私钥、加密公钥和加密私钥,所述签名公钥用于对所述待传输消息进行验签,所述签名私钥用于对所述待传输消息进行签名,所述加密公钥用于对所述待传输消息进行加密,所述加密私钥用于对所述待传输消息进行解密;所述根据所述第二双证书与所述服务器的双证书将所述待传输消息加密后传输至所述服务器的步骤,包括:根据所述第二双证书中的签名私钥和所述服务器的加密公钥对所述待传输消息分别进行签名和加密;将签名和加密后的所述待传输消息传输至所述服务器,以使所述服务器在接收到所述待传输消息时,通过所述服务器的加密私钥和所述第二双证书中的签名公钥分别进行解密和验证。8.如权利要求7所述的消息代理方法,其特征在于,所述待传输消息包括订阅消息;所述将签名和加密后的所述待传输消息传输至所述服务器的步骤,包括:将签名和加密后的所述订阅消息传输至所述服务器,以使所述服务器在接收到所述订阅消息时,通过所述服务器的加密私钥和所述第二双证书中的签名公钥分别进行解密和验证,并根据所述订阅消息建立对应的主题筛选器,在接收到与所述主题筛选器相匹配的待发布消息时,返回所述待发布消息。9.一种适用于工业数控场景的设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的消息代理程序,所述消息代理程序配置为实现如权利要求1至5中任一项或6至8中任一项所述的消息代理方法的步骤。10.一种存储介质,其特征在于,所述存储介质上存储有消息代理程序,所述消息代理程序被处理器执行时实现如权利要求1至5中任一项或6至8中任一项所述的消息代理方法的步骤。
技术总结
本发明公开了一种适用于工业数控场景的消息代理方法、设备及存储介质,该方法由服务器执行,服务器应用于包含客户端和服务器的消息代理系统,客户端包括发布客户端和订阅客户端,该方法包括:获取预先创建的第一双证书,第一双证书为服务器的数字证书;在接收到发布客户端发送的待发布消息时,根据待发布消息确定消息代理系统中的目标订阅客户端;根据第一双证书与目标订阅客户端的双证书将待发布消息加密后传输至目标订阅客户端。由于本发明通过在消息代理系统中预先创建服务器的双证书,使得消息代理能够支持双证书连接,从而使消息代理过程中消息能够加密传输,避免了现有的消息代理以明文方式传输导致的安全问题,提升了消息代理的安全性。息代理的安全性。息代理的安全性。
技术研发人员:路松峰 邓晓旭 吴俊军 代超仁 冯冰艳 彭世坤 沈任飞 黄丽敏
受保护的技术使用者:武汉华中数控股份有限公司
技术研发日:2023.03.17
技术公布日:2023/7/13
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/