掌桥专利:专业的专利平台
掌桥专利
首页

Modbus RTU报文的加密方法和装置

文献发布时间:2023-06-19 19:30:30


Modbus RTU报文的加密方法和装置

技术领域

本发明涉及Modbus RTU报文技术领域,特别涉及一种Modbus RTU报文的加密方法和装置。

背景技术

随着电力物联网的快速发展,在信息流通过程中电力报文的信息安全就逐渐变成一个重要的研究方向,而密码安全作为信息安全的基石,其算法被学术界广泛研究。但由于电力报文的实时性要求非常苛刻,如何实现电力报文的高效性和安全性,是电力报文安全应用的难点。

Modbus RTU报文作为电力行业一种广泛使用的报文,当前Modbus RTU报文多只有CRC验证码作为安全防御手段,但Modbus RTU报文的CRC验证码没有抵御第三方恶意攻击的能力。由于当前智能电子设备多采用嵌入式硬件结构,性能相对有限,而一般的加解密方法较为耗时,当前还鲜见高效的Modbus RTU报文的加解密方法。

发明内容

本发明提供一种Modbus RTU报文的加密方法、装置、计算机设备和存储介质,旨在提升Modbus RTU报文的加密力度的同时保障加密效率。

第一方面,本发明提出一种Modbus RTU报文的加密方法,包括:

获取Modbus RTU报文的字节长度;

从所述Modbus RTU报文的每个字节的中间位置提取位数据得到所述字节长度数量的位数据,若所述位数据的长度不足AES加密算法加密对应的数据位长度,从所述每个字节中最接近所述中间位置的旁边位置提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据位长度;

对提取的位数据进行AES加密,得到加密后的位数据;

用所述加密后的位数据替代原来的位数据,得到加密后的Modbus RTU报文。

在其中一个实施例中,所述从所述Modbus RTU报文的每个字节的中间位置提取位数据得到所述字节长度数量的位数据,若所述位数据的长度不足AES加密算法加密对应的数据位长度,从所述每个字节中最接近所述中间位置的旁边位置提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据位长度包括:

从所述Modbus RTU报文的每个字节的第四位提取位数据得到所述字节长度数量的位数据;

若从第四位提取的位数据的长度不足AES加密算法加密对应的数据位长度,从所述每个字节的第五位提取位数据;

若提取的位数据的长度仍然不足所述AES加密算法加密对应的数据位长度,依次从第三位、第六位、第二位、第七位、第一位、第八位提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据位长度。

在其中一个实施例中,所述获取Modbus RTU报文的字节长度之后,还包括:

判断所述Modbus RTU报文的字节长度与所述AES加密算法加密对应的字节长度以及数据位长度的大小;

若所述Modbus RTU报文的字节长度小于所述AES加密算法加密对应的字节长度,不对所述Modbus RTU报文进行加密处理;

若所述Modbus RTU报文的字节长度等于所述AES加密算法加密对应的字节长度,对所述Modbus RTU报文的所有数据位按照所述AES加密算法进行加密;

若所述Modbus RTU报文的字节长度大于所述AES加密算法加密对应的字节长度,小于所述AES加密算法加密对应的数据位长度,执行步骤“从每个字节的中间位置提取位数据得到所述字节长度数量的位数据,若所述位数据的长度不足AES加密算法加密对应的数据长度,从所述每个字节中最接近所述中间位置的旁边位置提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据长度”;

若所述Modbus RTU报文的字节长度大于所述AES加密算法加密对应的数据位长度,按照多个AES加密算法加密对应的数据位长度从所述Modbus RTU报文中提取对应长度的位数据进行加密。

在其中一个实施例中,所述AES加密算法加密对应的数据位长度为128个数据位。

在其中一个实施例中,所述获取Modbus RTU报文的字节长度之前,还包括:

获取Modbus RTU报文;

除去所述Modbus RTU报文的1个字节的地址域、1个字节的功能码、2个字节的校验码以及两个字节的长度数据,得到所述Modbus RTU报文的正文;

所述获取Modbus RTU报文的字节长度具体为,获取Modbus RTU报文的正文的字节长度。

在其中一个实施例中,还包括:

按照时间顺序依次获取若干个Modbus RTU报文;

对每个所述Modbus RTU报文进行加密处理。

在其中一个实施例中,所述用所述加密后的位数据替代原来的位数据,得到加密后的Modbus RTU报文之后,还包括:

将所述加密后的Modbus RTU报文通过电力物联网发送出去。

第二方面,本发明提出一种Modbus RTU报文的加密装置,包括:

字节长度获取单元,用于获取Modbus RTU报文的字节长度;

位数据提取单元,用于从所述Modbus RTU报文的每个字节的中间位置提取位数据得到所述字节长度数量的位数据,若所述位数据的长度不足AES加密算法加密对应的数据位长度,从所述每个字节中最接近所述中间位置的旁边位置提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据位长度;

加密单元,用于对提取的位数据进行AES加密,得到加密后的位数据;

替换单元,用于用所述加密后的位数据替代原来的位数据,得到加密后的ModbusRTU报文。

第三方面,本发明提出一种计算机设备,所述计算机设备包括处理器和存储器,所述存储其中存储有计算机程序,所述计算机程序在由所述处理器加载并执行时,实现如上述任意一项所述的方法。

第四方面,本发明提出一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序被执行时,实现如上述任意一项所述的方法。

本发明一种Modbus RTU报文的加密方法、装置、计算机设备和存储介质,采用目前的高级加密标准AES加密算法对Modbus RTU报文进行加密,由于AES加密算法在加密时需要对特定的数据位长度进行加密,本方法不对Modbus RTU报文进行扩充至字节数与AES加密算法在加密时需要的数据位长度一致后,从每个字节中提取位数据进行加密,而是从Modbus RTU报文已有的数据中提取位数据进行加密,以每个字节的中间位向两边依次提取的方式提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据位长度;减少了AES加密算法的运算量,提升了加密的效率,加密安全性强。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面对实施例中所需要使用的附图作简单的介绍,下面描述中的附图仅为本发明的部分实施例相应的附图,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他实施例的附图。

图1为本发明其中一个实施例中,Modbus RTU报文的加密方法的方法流程图;

图2为本发明其中一个实施例中,Modbus RTU报文的数据结构示意图;

图3为本发明另一个实施例中,Modbus RTU报文的加密方法的方法流程图;

图4为本发明其中一个实施例中,Modbus RTU报文加密前后的数据结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。

参见图1,本发明一种Modbus RTU报文的加密方法,在其中一个实施例中,包括:

步骤S01,获取Modbus RTU报文的字节长度。

参见图2,Modbus RTU报文为电力行业一种广泛使用的报文,其中,Modbus是一种串行通信协议,RTU为Remote Terminal Unit,远程终端单元。其数据结构如图所示,ModbusRTU报文包括1个字节的地址域、1个字节的功能码、L+2个字节的数据域以及2个字节的校验码,即CRC码,其中数据域包括两个字节的长度数据和L个字节的正文,本申请实施例的方法主要对L个字节的正文进行加密。一般Modbus RTU报文的长度不超过256个字节,因此正文L的长度不会多于250个字节。

步骤S02,从所述Modbus RTU报文的每个字节的中间位置提取位数据得到所述字节长度数量的位数据,若所述位数据的长度不足AES加密算法加密对应的数据位长度,从所述每个字节中最接近所述中间位置的旁边位置提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据位长度。

AES(Advanced Encryption Standard,高级加密标准)由美国国家标准与技术研究院公布,具有比较好的加密效果。AES加密算法如果不能满足AES加密所需的字节数,需要对原有加密数据进行扩充,直至满足AES加密需求后才能实现加密运算。

一般的,AES加密算法加密对应的数据位长度为128位数据位,16个字节。AES加密算法加密对应的数据位长度还可以为其他长度,本实施例对此不做限定。

步骤S03,对提取的位数据进行AES加密,得到加密后的位数据。

步骤S04,用所述加密后的位数据替代原来的位数据,得到加密后的Modbus RTU报文。

本实施例的Modbus RTU报文的加密方法采用目前的高级加密标准AES加密算法对Modbus RTU报文进行加密,由于AES加密算法在加密时需要对特定的数据位长度进行加密,本方法不对Modbus RTU报文进行扩充至字节数与AES加密算法在加密时需要的数据位长度一致后,从每个字节中提取位数据进行加密,而是从Modbus RTU报文已有的数据中提取位数据进行加密,以每个字节的中间位向两边依次提取的方式提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据位长度。本方法减少了AES加密算法的运算量,提升了加密的效率,充分选取Modbus RTU报文中的位数据进行加密,加密安全性强。

在其中一个实施例中,参见图3,该Modbus RTU报文的加密方法包括:

步骤S201,获取Modbus RTU报文的字节长度。

步骤S202,判断所述Modbus RTU报文的字节长度L与所述AES加密算法加密对应的字节长度L1以及数据位长度L2的大小。

以AES加密算法加密对应的数据位长度为128位数据位,16个字节为例,即L1=16,L2=128。

步骤S203,若L

当Modbus RTU报文的字节长度小于16个字节时,由于报文中正文内容太少,为了遵循Modbus RTU报文格式,避免采用AES加密算法后需要扩展到16个字节而破坏了原有报文格式,不对正文内容进行加密,直接将Modbus RTU报文内容通过电力物联网进行发送。

步骤S204,若L=L1,对所述Modbus RTU报文的所有数据位按照所述AES加密算法进行加密。

当Modbus RTU报文的字节长度等于16个字节时,恰好能够满足AES加密算法的要求,为了保障报文在传输过程当中的安全性,则对报文的正文全部内容,即全部数据位进行加密处理,通过AES算法对全部正文内容进行加密。

步骤S205,若L1

当Modbus RTU报文的字节长度大于16个字节,小于128字节时,从每个字节的中间位置提取位数据得到所述字节长度数量的位数据,具体的,在其中一个实施例中,从所述Modbus RTU报文的每个字节的第四位提取位数据得到所述字节长度数量的位数据;

若从第四位提取的位数据的长度不足AES加密算法加密对应的数据位长度,从所述每个字节的第五位提取位数据;

若提取的位数据的长度仍然不足所述AES加密算法加密对应的数据位长度,依次从第三位、第六位、第二位、第七位、第一位、第八位提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据位长度。

在其中一个实施例中,参见图4,若Modbus RTU报文的字节长度为124个字节,提取每个字节的第四位,得到124个位数据,还需要获取4个位数据就可以得到128个位数据,满足AES加密算法加密对应的数据位长度的要求,则再从Modbus RTU报文的四个字节的第五位提取4个位数据,一共得到128个位数据。

步骤S206,若L>L2,按照多个AES加密算法加密对应的数据位长度从所述ModbusRTU报文中提取对应长度的位数据进行加密。

当Modbus RTU报文的字节长度大于128个字节时,由于从每个字节提取一位数据后得到的位数据长度大于128,超过了AES加密算法加密所需的数据位长度,可以按照两个AES加密算法需要32个字节,256个数据位进行加密。

步骤S207,对提取的位数据进行AES加密,得到加密后的位数据。

步骤S208,用所述加密后的位数据替代原来的位数据,得到加密后的Modbus RTU报文。

参见图4,若Modbus RTU报文的字节长度为124个字节,通过AES加密算法对ModbusRTU报文加密之后,用加密后的结果替代Modbus RTU报文原来的数据位,得到加密后的Modbus RTU报文。然后将加密后的Modbus RTU报文通过电力物联网发送出去。

具体实现中,按照时间顺序依次获取若干个Modbus RTU报文,对每个所述ModbusRTU报文进行上述加密处理后依次通过电力物联网发送出去。

本实施例的Modbus RTU报文的加密方法,按照时间顺序依次对Modbus RTU报文进行加密,在加密的过程中,根据Modbus RTU报文的数据长度,选取适宜的加密方式,主要采用AES加密算法,从Modbus RTU报文已有的数据中提取AES加密算法所需的数据位长度,具体为从每个字节的中间向两边扩展的方式进行选取,加密过程中不向正文增添内容,减小了报文加密时的内存占用。仅对自身已有内容进行加密,使加密过程运算量降低,提高了加密效率。且从每个字节最中间位置的内容开始加密,能够最大限度地阻断加密后报文的连贯,保证了报文的安全性。

本发明还提出一种Modbus RTU报文的加密装置,在其中一个实施例中,包括:

字节长度获取单元,用于获取Modbus RTU报文的字节长度;

位数据提取单元,用于从所述Modbus RTU报文的每个字节的中间位置提取位数据得到所述字节长度数量的位数据,若所述位数据的长度不足AES加密算法加密对应的数据位长度,从所述每个字节中最接近所述中间位置的旁边位置提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据位长度;

加密单元,用于对提取的位数据进行AES加密,得到加密后的位数据;

替换单元,用于用所述加密后的位数据替代原来的位数据,得到加密后的ModbusRTU报文。

在其中一个实施例中,位数据提取单元具体用于:

从所述Modbus RTU报文的每个字节的第四位提取位数据得到所述字节长度数量的位数据;

若从第四位提取的位数据的长度不足AES加密算法加密对应的数据位长度,从所述每个字节的第五位提取位数据;

若提取的位数据的长度仍然不足所述AES加密算法加密对应的数据位长度,依次从第三位、第六位、第二位、第七位、第一位、第八位提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据位长度。

在其中一个实施例中,Modbus RTU报文的加密装置还包括:

判断单元,用于判断所述Modbus RTU报文的字节长度与所述AES加密算法加密对应的字节长度以及数据位长度的大小;

若所述Modbus RTU报文的字节长度小于所述AES加密算法加密对应的字节长度,不对所述Modbus RTU报文进行加密处理;

若所述Modbus RTU报文的字节长度等于所述AES加密算法加密对应的字节长度,对所述Modbus RTU报文的所有数据位按照所述AES加密算法进行加密;

若所述Modbus RTU报文的字节长度大于所述AES加密算法加密对应的字节长度,小于所述AES加密算法加密对应的数据位长度,执行步骤“从每个字节的中间位置提取位数据得到所述字节长度数量的位数据,若所述位数据的长度不足AES加密算法加密对应的数据长度,从所述每个字节中最接近所述中间位置的旁边位置提取位数据,直到提取的位数据的长度达到所述AES加密算法加密对应的数据长度”;

若所述Modbus RTU报文的字节长度大于所述AES加密算法加密对应的数据位长度,按照多个AES加密算法加密对应的数据位长度从所述Modbus RTU报文中提取对应长度的位数据进行加密。

在其中一个实施例中,Modbus RTU报文的加密装置还包括:

数据处理单元,用于获取Modbus RTU报文;除去所述Modbus RTU报文的1个字节的地址域、1个字节的功能码、2个字节的校验码以及两个字节的长度数据,得到所述ModbusRTU报文的正文;

所述获取Modbus RTU报文的字节长度具体为,获取Modbus RTU报文的正文的字节长度。

在其中一个实施例中,Modbus RTU报文的加密装置还包括:

报文获取单元,用于按照时间顺序依次获取若干个Modbus RTU报文;对每个所述Modbus RTU报文进行加密处理。

在其中一个实施例中,Modbus RTU报文的加密装置还包括:

发送单元,用于将所述加密后的Modbus RTU报文通过电力物联网发送出去。

本发明实施例还提供一种计算机设备,所述计算机设备包括处理器和存储器,所述存储其中存储有计算机程序,所述计算机程序在由所述处理器加载并执行时,实现上述方法实施例中任一实施例所述的方法步骤。

本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序被执行时,实现上述方法实施例中任一实施例所述的方法步骤。

在本发明所提供的上述实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。

基于这样的理解,本申请的技术方案本质上或者说做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是移动终端,个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。

综上所述,虽然本发明已以优选实施例揭露如上,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案的构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

技术分类

06120115931447