![]()
本发明涉及到的是AES加密算法的数据块填充领域,主要是基于以太网帧结构的“全帧加解密”等应用场景。
(二)
背景技术:
:
高级加密标准(英语:Advanced Encryption Standard,缩写:AES)是对称密钥加密中最流行的算法之一,基本模式有AES128、AES192、AES256;以太网(英语:Ethernet)是目前应用最广泛的局域网通讯方式(帧长是64字节-1518字节),所以,基于以太网帧结构的AES加密算法有大量的应用场景,其中,“全帧加解密”是最简单的应用场景之一。AES作为块密码算法,需要把明文分割成固定大小的块,并以此对每块明文进行加解密。在加密侧,如果明文长度不是单位长度的整数倍,最后一个明文块的大小就会不足一块的长度,这时就要对最后一个明文块进行填充,在解密侧,按照算法解密之后的数据包能够按照约定的方式把填充数据去除,把明文数据恢复出来。
常见的AES加密算法的数据块填充方式有PKCS7,ANSIX923等,选取数据块填充算法PKCS7在AES128加解密应用中的功能做具体说明。AES128加密算法的块长度是“16”字节,PKCS7填充字符串由一个字节序列组成,每个字节填充该字节序列的长度。举例演示这种模式的工作原理,基于以太网帧结构的“全帧加解密”等应用场景,假定一个以太网帧的明文数据包长度是“69”字节,假定数据帧如图1所示,那么,在加密侧,数据包按顺序会分割成4个长度为“16”字节的数据块和1个长度为“5”字节的数据块,最后一个数据块长度小于AES128块长度,需要填充“11”字节,最后一个数据块的数据为“EE EE EE EE EE”,则填充之后的数据为“EE EE EE EE EE 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B”;在解密侧,会接收到5个长度为“16”字节的加密数据块,按照AES128加密算法规则进行解密,前4个数据块能够正确恢复出明文数据,最后1个数据块则恢复出数据“EE EE EE EE EE 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B”,然后按照PKCS7填充规则去掉填充数据,得到原始明文数据“EE EE EE EE EE”,上述的数据帧详细加解密过程如图2所示。显而易见,基于以太网帧结构的AES算法的加解密应用场景,PKCS7等数据块填充算法存在两个不足之处:一,明文数据块的填充操作增加了数据包的长度,降低了数据的传输效率,二,解密侧存在“误去除”填充数据的可能性。
因此,基于以太网帧结构的AES加密算法的“全帧加解密”等应用场景,发明一种新的数据块填充方法及相应的加解密装置有重要意义。
(三)
技术实现要素:
:
本发明在基于以太网帧结构的“全帧加解密”应用场景,首次提出了一种针对AES加密算法的“数据自填充”的数据块填充方法,并设计了以此方法作为数据块填充基础的加解密装置,解决了PKCS7等数据块填充算法存在的上述两个不足之处。
本发明所示的方法包括:
数据帧预处理;
数据帧基于AES算法的加解密;
数据填充;
数据帧重组;
本发明所示的装置分成加密部分和解密部分,具体包括:
数据帧预处理单元,完成异常数据帧的剔除及数据分割功能;
数据帧加解密单元,完成数据帧基于AES算法的加解密功能;
数据填充单元,完成数据块的填充功能;
数据帧重组单元,完成帧中数据的位置调整功能。
(四)附图说明:
图1假定数据帧示意图;
图2基于PKCS7数据块填充方式的加解密方法示意图;
图3基于“数据自填充”数据块填充方式的加解密方法示意图;
图4基于“数据自填充”数据块填充方式的加解密装置示意图。
(五)具体实施方式:
为了使本发明的方法、技术方案及优点更加明晰,以下结合附图和实例对本发明作进一步的详细说明。相关领域的技术人员应当理解,此处描述的具体实例仅仅用于理解本发明,并不用于限定本发明。
如图3A、图3B所示,在一个基于以太网帧结构的“全帧加解密”应用场景且采用AES128加密算法的实例中,提供了“数据自填充”作为数据块填充方法,具体内容包括:
步骤101,数据帧预处理,包括剔除异常数据帧和分割正常数据帧。由于有效以太帧长度最小字节数是64字节,所以长度小于64字节的数据帧被剔除;符合有效以太帧长度的数据帧按照16字节(AES128加密算法的块长度为16字节)为单位长度顺序进行数据分割,最后一个数据块的长度可能小于16字节,实例中数据帧分割成了5个数据块,最后一个数据块的长度为5字节。
步骤102,数据帧一次加密,分割的块长度等于AES128加密算法块长度的数据块按照AES128加密算法进行加密,实例中前4个数据块进行加密。
步骤103,数据自填充,最后一个数据长度小于加密算法“单位长度”的数据块需要填充,填充数据的“填充长度”是“单位长度”与最后一个数据块长度的差值,填充数据来源的起始位置是上一步骤处理完的数据帧的第一个字节,实例中第5个数据块需要填充,填充数据的来源是上一步骤处理完的第1个数据块的第1字节至第11字节。
步骤104,数据帧二次加密,填充后的数据块按照AES128加密算法进行加密,实例中填充后的第5个数据块进行加密。
步骤105,数据帧重组,首先从上一步骤处理完的数据帧的尾部截取“填充长度”的数据,然后依次替换上一步骤处理完的数据帧的头部数据,实例中截取第5个数据块第6字节至第16字节的数据依次替换第1个数据块第1字节至第11字节。
步骤201,与步骤101相同。
步骤202,与步骤103相同。
步骤203,数据帧一次解密,填充后数据帧的最后一个数据块按照AES128加密算法进行解密,实例中填充后的第5个数据块进行解密。
步骤204,与步骤105相同。
步骤205,数据帧二次解密,重组后的数据帧除去最后一个数据块的其他数据块按照AES128加密算法进行解密,实例中重组后的前4个数据块进行解密。
本发明中的装置如图4所示,其中包括:
数据帧预处理单元,完成异常数据帧的剔除及数据分割功能;
数据帧加解密单元,完成数据帧基于AES算法的一次加密、二次加密、一次解密和二次解密功能;
数据填充单元,完成数据块的填充功能;
数据帧重组单元,完成明文侧、密文侧帧中数据的位置调整功能。
如上所述,采用AES加密算法,且基于以太网帧结构的“全帧加解密”应用场景,本发明能够解决PKCS7等数据块填充算法存在的不足之处,保证传输的高效性和数据的准确性。