基于Modbus协议的数据并行加密通信方法和系统技术方案

技术编号:14564161 阅读:74 留言:0更新日期:2017-02-05 21:19
本发明专利技术公开了一种基于Modbus协议的数据并行加密通信方法和系统,该通信系统包括:数据采集站点和中心监控系统。数据采集站点包括站点配置模块、数据采集模块、改进SM4并行加密模块和数据传输模块;中心监控系统包括数据接收模块、改进SM4并行解密模块和数据显示监控模块。采用本发明专利技术的通信系统,能够提高工业数据传输的安全性,提高实时工业数据的加密速度,从而降低加密处理延迟。并且,该系统具有断线重连机制,确保对设备进行不间断监控。

【技术实现步骤摘要】

本专利技术属于工业监控领域,涉及数据加解密并行处理,特别涉及一种基于Modbus协议的数据并行加密通信方法和系统
技术介绍
随着物联网的发展,将不同厂商生产的设备连成工业网络,进行集中数据监控的需求日益增长,并且对工业网络传输的实时性要求也日益提升。Modbus总线协议由于其协议开放、实施简便、可靠性高的特点,已经成为一种工业标准,也得到了各设备厂商的产品支持。Modbus通信采用主从通信方式,主站发出数据请求信息,从站接收到正确的消息后就可以发送数据到主站以响应请求;主站也可以直接发消息修改从站的数据,实现双向读写。目前工业中常用的Modbus通信方式是通过以太网结合TCP/IP协议组成ModbusTCP/IP网络进行通信。然而,当设备数据监控系统与互联网相结合时,由于互联网的开放性,一旦监控数据被截获并被加以用进行破坏活动,其带来的损失是非常严重的。因而,对传输的监控信息进行加密,同时又保证监控数据传输的实时性是非常重要的。SM4(原SMS4)是国家密码局公布的分组密码算法,其分组长度和密钥长度均为128bit。加解密算法都采用32轮非线性迭代结构。算法的加密变换主要包含异或运算和合成变换T(·)运算。其中,T(·)是由非线性变换τ和线性变换L复合而成,即T(·)=L(τ(·))。非线性变换τ由4个并行的S盒变换构成,S盒是固定8比特输入8比特输出的变换;线性变换L主要包含异或运算和左移运算。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,即解密算法使用的轮密钥是加密算法使用的轮密钥的逆序。加密算法中用到的轮密钥是由加密密钥MK通过轮密钥扩展算法生成。该扩展算法基本结构与加解密算法相同,同样包含异或运算和合成置换运算。只是其中的线性变换的形式略有不同。由于SM4算法在计算过程中增加非线性变换,理论上具有较高的安全性。虽然利用SM4加密算法可以确保Modbus数据一定的安全。但是,由于SM4加密算法的公开性,轮密钥生成算法与加密算法结构相似,都导致其安全性降低。因此,如何提高Modbus数据在用SM4加密时的安全性成为一个亟待解决的问题。另外,在数据量较大的情况下,使用SM4串行加密的耗时成为了实时传输的瓶颈。而随着机构规模的扩大,设备的增加,势必会增加采集的数据量,如何高效便捷的对设备配置信息进行动态管理和提高工业数据动态采集传输过程中的实时性也是需要解决的问题。最后,在采集数据的过程中,采集系统与设备的连接有可能出现断开现象,如何在连接断开的时候进行断线重连也是一个需要解决的问题。
技术实现思路
本专利技术所要解决的面向工业数据采集传输过程中所存在的安全性和实时性的问题,提供一种基于Modbus协议的数据并行加密通信方法和系统。为解决上述问题,本专利技术是通过以下技术方案实现的:基于Modbus协议的数据并行加密通信方法,包括如下步骤:步骤1、配置应用程序,即根据数据采集站点的实际需求,产生配置信息表;步骤2、根据配置信息表里的信息对数据采集站点的设备运行信息进行采集,所采集到的数据为明文数据;步骤3、利用基于GPU的动态选择的改进SM4并行加密法对采集到的明文数据进行加密;即步骤3.1、利用AES-128密钥扩展法生成SM4加密法所需的32个扩展密钥;步骤3.2、随机生成1个32位的随机数G;步骤3.3、利用GPU进行并行SM4加密,即将明文数据分成每块128比特的数据分组,一个数据分组的加密任务分配给一个的GPU线程;每个GPU线程再进行32轮循环迭代加密处理,在每轮循环迭代加密处理时,根据迭代的轮数确定随机数G的对应位置,并根据随机数G的该位置上的取值选取加密轮函数;步骤3.4、将各个GPU线程加密输出的数据按分块的前后顺序进行组合后形成密文数据;步骤4、将数据采集站点的密文数据发送给中心监控系统;步骤5、中心监控系统接收到数据采集站点发送的密文数据;步骤6、利用基于GPU的动态选择的改进SM4并行解密法对密文数据进行解密;即步骤6.1、利用GPU进行并行SM4解密,即将密文数据分成每块128比特的数据分组,每个GPU线程解密一个数据分组;每个GPU线程再进行32轮循环迭代解密处理,在进行32轮循环迭代解密处理时,根据随机数G对应位置上的取值,动态选择解密的轮函数;步骤6.2、将各个GPU线程解密输出的数据按分块的前后顺序进行组合后获得明文数据;步骤7、将解密所得的明文数据进行显示,以获得数据采集站点的设备运行信息。步骤3.1中,扩展密钥只需要产生一次,该扩展密钥在各个GPU线程加密过程中循环使用。步骤3.1中所述密钥扩展的具体过程为:步骤3.1.1、将128bit的初始密钥按照列顺序组成4个32bit的字,分别记为w0-w3;步骤3.1.2、在初始密钥的基础上依次新增31个字wj,每一个新增的字wj的值依赖于wj-1和wj-4,即:当j除以4的余数不为0时,wj=wj-4⊕wj-1;当j除以4的余数为0时,wj=wj-4⊕g(wj-1);步骤3.1.3、利用上述产生的字生成SM4加密算法中用到的扩展密钥,即扩展密钥rki=wj+4;上述j=4,5,6……35;,i=0,1,…,31;g()是一个复杂函数。步骤3.1.2中,复杂函数g()的计算过程如下:步骤3.1.2.1、将字wj-1以字节为单位,排列表示成[B0,B1,B2,B3]的形式,并将[B0,B1,B2,B3]循环左移一个字节,变换成[B1,B2,B3,B0];步骤3.1.2.2、利用AES的S盒对输入字的每个字节进行字节替换,变为[B’1,B’2,B’3,B’0];步骤3.1.2.3、将产生的结果[B’1,B’2,B’3,B’0]与轮常数进行异或输出;上述j=4,5,6……35。步骤3中,根据迭代的轮数确定随机数G对应位置,该随机数G的每一位作为每一轮迭代时动态选择的依据,即:当随机数G的对应的位置的数值为0时,选择使用:Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕rki)作为轮函数;当随机数G的对应的位置的数值为1时,选择使用:Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi+1+Xi+2+Xi+3⊕rki)作为轮函数;其中,Xi-Xi+3表示第i轮输入的明文数据,F(本文档来自技高网
...

【技术保护点】
基于Modbus协议的数据并行加密通信方法,其特征是,包括如下步骤:步骤1、配置应用程序,即根据数据采集站点的实际需求,产生配置信息表;步骤2、根据配置信息表里的信息对数据采集站点的设备运行信息进行采集,所采集到的数据为明文数据;步骤3、利用基于GPU的动态选择的改进SM4并行加密法对采集到的明文数据进行加密;即步骤3.1、利用AES‑128密钥扩展法生成SM4加密法所需的32个扩展密钥;步骤3.2、随机生成1个32位的随机数G;步骤3.3、利用GPU进行并行SM4加密,即将明文数据分成每块128比特的数据分组,一个数据分组的加密任务分配给一个的GPU线程;每个GPU线程再进行32轮循环迭代加密处理,在每轮循环迭代加密处理时,根据迭代的轮数确定随机数G的对应位置,并根据随机数G的该位置上的取值选取加密轮函数;步骤3.4、将各个GPU线程加密输出的数据按分块的前后顺序进行组合后形成密文数据;步骤4、将数据采集站点的密文数据发送给中心监控系统;步骤5、中心监控系统接收到数据采集站点发送的密文数据;步骤6、利用基于GPU的动态选择的改进SM4并行解密法对密文数据进行解密;即步骤6.1、利用GPU进行并行SM4解密,即将密文数据分成每块128比特的数据分组,每个GPU线程解密一个数据分组;每个GPU线程再进行32轮循环迭代解密处理,在进行32轮循环迭代解密处理时,根据随机数G对应位置上的取值,动态选择解密的轮函数;步骤6.2、将各个GPU线程解密输出的数据按分块的前后顺序进行组合后获得明文数据;步骤7、将解密所得的明文数据进行显示,以获得数据采集站点的设备运行信息。...

【技术特征摘要】
1.基于Modbus协议的数据并行加密通信方法,其特征是,包括如下
步骤:
步骤1、配置应用程序,即根据数据采集站点的实际需求,产生配置
信息表;
步骤2、根据配置信息表里的信息对数据采集站点的设备运行信息进
行采集,所采集到的数据为明文数据;
步骤3、利用基于GPU的动态选择的改进SM4并行加密法对采集到的
明文数据进行加密;即
步骤3.1、利用AES-128密钥扩展法生成SM4加密法所需的32个扩展
密钥;
步骤3.2、随机生成1个32位的随机数G;
步骤3.3、利用GPU进行并行SM4加密,即将明文数据分成每块128
比特的数据分组,一个数据分组的加密任务分配给一个的GPU线程;每个
GPU线程再进行32轮循环迭代加密处理,在每轮循环迭代加密处理时,根
据迭代的轮数确定随机数G的对应位置,并根据随机数G的该位置上的取
值选取加密轮函数;
步骤3.4、将各个GPU线程加密输出的数据按分块的前后顺序进行组
合后形成密文数据;
步骤4、将数据采集站点的密文数据发送给中心监控系统;
步骤5、中心监控系统接收到数据采集站点发送的密文数据;
步骤6、利用基于GPU的动态选择的改进SM4并行解密法对密文数据
进行解密;即
步骤6.1、利用GPU进行并行SM4解密,即将密文数据分成每块128
比特的数据分组,每个GPU线程解密一个数据分组;每个GPU线程再进行
32轮循环迭代解密处理,在进行32轮循环迭代解密处理时,根据随机数
G对应位置上的取值,动态选择解密的轮函数;
步骤6.2、将各个GPU线程解密输出的数据按分块的前后顺序进行组
合后获得明文数据;
步骤7、将解密所得的明文数据进行显示,以获得数据采集站点的设
备运行信息。
2.根据权利要求1所述基于Modbus协议的数据并行加密通信方法,
其特征是,步骤3.1中,扩展密钥只需要产生一次,该扩展密钥在各个GPU
线程加密过程中循环使用。
3.根据权利要求1或2所述基于Modbus协议的数据并行加密通信方

\t法,其特征是,步骤3.1中所述密钥扩展的具体过程为:
步骤3.1.1、将128bit的初始密钥按照列顺序组成4个32bit的字,
分别记为w0-w3;
步骤3.1.2、在初始密钥的基础上依次新增31个字wj,每一个新增
的字wj的值依赖于wj-1和wj-4,即:
当j除以4的余数不为0时,当j除以4的余数为0时,wj=wj-4⊕g(wj-1);]]>步骤3.1.3、利用上述产生的字生成SM4加密算法中用到的扩展密钥,
即扩展密钥rki=wj+4;
上述j=4,5,6……35;,i=0,1,...,31;g()是一个复杂函数。
4.根据权利要求3所述基于Modbus协议的数据并行加密通信方法,
步骤3.1.2中,复杂函数g()的计算过程如下:
步骤3.1.2.1、将字wj-1以字节为单位,排列表示成[B0,B1,B2,B3]的
形式,并将[B0,B1,B2,B3]循环左移一个字节,变换成[B1,B2,B3,B0];
步骤3.1.2.2、利用AES的S盒对输入字的每个字节进行字节替换,
变为[B’1,B’2,B’3,B’0];
步骤3.1.2.3、将产生的结果[B’1,B’2,B’3,B’0]与轮常数进行异或输出;
上述j=4,5,6……35。
5.根据权利要求1所述的基于Modbus协议的数据并行加密通信方法,
其特征是,
步骤3.3中,进行并行SM4加密时,根据迭代的轮数确定随机数G对
应位置,该随机数G的每一位作为每一轮迭代时动态选择的依据,即:
当随机数G的对应的位置的数值为0时,选择使用:Xi+4=]]>F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕rki)]]>作为轮
函数;
当随机数G的对应的位置的数值为1时,选择使用:Xi+4=]]>F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi+1+Xi+2+Xi+3⊕rki)]]>作为轮函
数;
其中,Xi-Xi+3表示第i轮输入的明文数据,F()表示轮函数,T()表示
合成变换函数,rki表示第i轮加密使用的扩展密钥,i=0,1,...,31;
步骤6.1中,进行并行SM4解密时,根据迭代的轮数确定随机数G对
应位置,该随机数G的每一位作为每一轮迭代时动态选择的依据,即:
当随机数G的对应的位置的数值为0时,选择使用:Xi+4=]]>F(Xi,Xi+1,Xi+2,Xi+3,rk31-i)=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕rk31-i)]]>作
为轮函数;
当随机数G的对应的位置的数值为1时,选择...

【专利技术属性】
技术研发人员:张红梅黄剑张向利陈俊彦李世文刘国良
申请(专利权)人:桂林电子科技大学
类型:发明
国别省市:广西;45

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1