AES-GCM数据处理方法、装置、电子设备及存储介质与流程

文档序号:18884808发布日期:2019-10-15 20:43阅读:830来源:国知局
AES-GCM数据处理方法、装置、电子设备及存储介质与流程

本发明涉及一种aes加密技术,尤其涉及一种aes-gcm数据处理方法、装置、电子设备及存储介质。



背景技术:

aes算法(advancedencryptionstandard,高级数据加密标准)是一个对称分组加密算法,将二进制信息序列以128位进行分组,然后利用长度是128位、192位或256位的密码密钥处理该分组。

aes加解密中的变换可包括:轮密钥加,即将轮回(round)密钥(密钥扩展)同状态矩阵(字节的二维阵列)中的数据逐位异或;字节代换,即利用非线性字节替换表(s-box)处理状态;行移位,即对状态矩阵进行一定规则下的左循环移位操作;以及列混合,即经行移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵。

gcm(galois/countermode)指的是aes加密算法采用counter模式,用于对称密钥加密的块密码的操作模式,分别用aes的counter模式和定义在gf(0128)有限域上的ghash函数(ghash运算是一种迭代过程)来生成密文和消息认证码,其特殊的优点是可以提供对消息及附加鉴别数据的完整性检验。

gcm算法有如下几个输入变量(以加密为例):密钥k,初始化向量iv,明文p及附加鉴别信息a,由于有些信息不需要保密,但信息的接收者需要确认它的真实性的,例如源ip,源端口,目的ip等,因此,可以将这一部分作为附加消息即鉴别信息a加入gcm计算当中,输出变量有密文c和鉴别标签t。明文p和附加鉴别信息a需按照128位分组,如果最后一组不足128位,需要补零。

aes和ghash运算在硬件实现时需要大量的组合逻辑,所引起的时序问题对系统所能达到的处理频率带来很大影响,解决时序问题会引入大量触发器,导致加解密延迟增大,硬件面积增加。采用并行乘法器可以同时处理多组数据,而不需要预先确定等待处理的分组数据总数。也有方案在数据加密前计算出变量h及h整数次幂并用存储器存取,以在不增加触发器资源的基础上解决时序问题。

但是,通过分析gcm加密公式,可以看到对系统吞吐量提升有一个明显的压制因素,尤其是在目前互联网大数据下需要对不同来源的大量数据进行实时加密,h值的运算是一个完整的aes加密过程,aes的高速并行化实现一般需要20个或更多个时钟且占用较多的逻辑资源,h值的计算需要与后续的aes加密共用一套逻辑资源,所以h值的计算会严重降低系统的运算效率及吞吐率,使得数据处理延迟并加大了芯片的面积。



技术实现要素:

为了克服现有技术的不足,本发明的目的之一在于提供一种aes-gcm数据处理方法,其通过对密钥k建立优先级队列,进而提高计算h值的运算效率。

本发明的目的之一采用以下技术方案实现:

一种aes-gcm数据处理方法,包括以下步骤:

在优先级队列中根据输入的数据搜索密钥k;

对于不存在于优先级队列中的密钥k,称为第一密钥,用所述第一密钥进行aes加密得到h值,将所述第一密钥以及h值加入优先级队列,所述aes加密通过公式h=e(k′,0128)得到所述的h值,其中0128表示128bit长度的“0”,e表示aes加密或解密函数,k′表示第一密钥;

对于已存在于优先级队列中的密钥k,称为第二密钥,直接取出所述第二密钥对应的h值,减少了计算h值的时间,提升了系统的运算效率;

所述的优先级队列为根据优先级规则建立的第二密钥的优先级队列;所述优先级队列的优先级确定规则为第二密钥的报文对应的业务优先级、协议、源地址、目标地址、出现频率或密钥k随时间前后进行因子修正的频率中的任一种或多种;

根据输入的数据以及其对应的h值建立完整的加密流程或者解密流程。

进一步地,所述的优先级队列长度固定,通过删除优先级最小的元素保证所述优先级队列长度不超出限制,所述元素为所述第二密钥以及其对应的h值中的任一种;所述优先级队列长度的确定规则包括硬件的常规业务量、可用的存储资源大小中的任一种或多种。

进一步地,当根据输入的数据以及其对应的h值建立完整的加密流程时,执行加密操作;此时,所述输入的数据还包括初始化向量iv,明文p及附加鉴别信息a;

当根据输入的数据以及其对应的h值建立完整的解密流程时,执行解密操作;此时,所述输入的数据还包括初始化向量iv,密文c,鉴别标识t及附加鉴别信息a。

进一步地,当执行加密操作时,其包括以下步骤:

将所述的初始化向量iv、所述的第二密钥,通过ghash函数计算出结果y;

将所述的结果y、明文p及所述的第二密钥按照aes标准算法进行加密输出密文c,所述的aes标准算法包括轮密钥加、字节代换、行移位和列混合;

根据所述的附加鉴别信息a、所述的初始化向量iv及所述的密文c,通过ghash函数产生鉴别标识t;

当执行解密操作时,其包括以下步骤:

根据所述的第二密钥、所述的初始化向量iv、附加鉴别信息a及所述的密文c,通过ghash函数产生第一鉴别标识t′;

当所述的第一鉴别标识t′与鉴别标识t相同时,将所述的初始化向量iv、所述的第二密钥,通过ghash函数计算出结果y;

将所述的结果y、密文c及所述的第二密钥按照aes标准算法进行解密输出明文p,所述的aes标准算法包括轮密钥加、逆字节代换、逆行移位和逆列混合;

当所述的第一鉴别标识t′与鉴别标识t不同时,停止运算。

进一步地,在进行加密或解密操作时,当所述的初始化向量iv长度为96bit时,无需经过ghash函数计算就可得到结果y。

进一步地,所述的aes标准算法通过运算实例化完成,所述ghash函数采用低复杂度并行计算方法。

本发明的目的之二在于提供一种aes-gcm数据处理装置,其通过对密钥k建立优先级队列,进而提高计算h值的运算效率。

本发明的目的之二采用以下技术方案实现:

一种aes-gcm数据处理装置,其包括:

搜索模块,用于在优先级队列中根据输入的数据搜索密钥k;

计算模块,用于对于不存在于优先级队列中的密钥k,称为第一密钥,用所述第一密钥进行aes加密得到h值,将所述第一密钥以及h值加入优先级队列,所述aes加密通过公式h=e(k′,0128)得到所述的h值,其中0128表示128bit长度的“0”,e表示aes加密或解密函数,k′表示第一密钥;

取用模块,用于对于已存在于优先级队列中的密钥k,称为第二密钥,直接取出所述第二密钥对应的h值;

构建模块,用于根据输入的数据以及其对应的h值建立完整的加密流程或者解密流程;

所述的优先级队列为根据优先级规则建立的第二密钥的优先级队列;所述优先级队列的优先级确定规则为第二密钥的报文对应的业务优先级、协议、源地址、目标地址、出现频率或密钥k随时间前后进行因子修正的频率中的任一种或多种。

本发明的目的之三在于提供执行发明目的之一的电子设备,其包括处理器、存储介质以及计算机程序,所述计算机程序存储于存储介质中,其特征在于,所述计算机程序被处理器执行时实现上述的aes-gcm数据处理方法。

本发明的目的之四在于提供存储发明目的之一的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的aes-gcm数据处理方法。

相比现有技术,本发明的有益效果在于:

本发明通过对密钥k建立优先级队列并储存其对应的h值,无需对每次运算都计算h值,大幅降低了aes-gcm计算中对h值变量的计算量,并且,密钥k及其对应h值按照特定的优先级队列进行存储,使得优先级高的密钥k可以更快被查找到,降低了处理时延;优先级队列还可以满足高速通信场景下的实时加密,防止存储过多的h值导致系统运算效率降低,提高了系统吞吐率,同时也可减少芯片面积。

附图说明

图1为本发明实施例一的h值计算流程图;

图2为本发明实施例一的aes-gcm数据处理方法流程图;

图3为本发明实施例二的aes-gcm解密过程的流程图;

图4位本发明实施例四的aes-gcm数据处理实现装置的结构框图;

图5是本发明实施例五提供的一种电子设备的结构示意图。

具体实施方式

以下将结合附图,对本发明进行更为详细的描述,需要说明的是,下参照附图对本发明进行的描述仅是示意性的,而非限制性的。各个不同实施例之间可以进行相互组合,以构成未在以下描述中示出的其他实施例。

实施例一

实施例一提供了一种aes-gcm数据处理方法,旨在通过对密钥k建立优先级队列并保存密钥k对应的h值,进而减少计算h值的时间,提高系统吞吐率。

需要对一个明文或密文进行操作时,需要将对应的密钥k在优先队列中进行搜索,如果存在,那么直接取出其对应的h值用于建立一次完整的加密流程,省去了计算h值所需要的几十个时钟的时间;如果不存在,那么必须先通过密钥k对128bit长度的“0”进行aes加密得到h,然后建立一次完整的加密或解密流程,并将得到的h值存入优先级队列;在目前互联网大数据环境下,需要对不同来源的数据进行加密,这些数据的来源、数量都是未知的,因此,必须具有一个优先级队列的机制来保证h值的高效存储和使用,不然当h量存储量过大时,会造成处理效率的急剧下降。

请参照图1所示,密钥k搜索过程包括以下步骤:

s1、在优先级队列中根据输入的数据搜索密钥k,输入数据通常包括输入的数据包括初始化向量iv,明文p,密钥k及附加鉴别信息a,需要将p和a按照128位分组,如果最后一组不足128位,需要补零;其中,初始化向量iv,它可有1到264之间的任意比特数。对于固定值的密钥,每个iv值必须不同,但是不要求有相同的长度;明文p,它可以具有0-239-256之间的任意比特数;鉴别信息a的数据可被认证,但不能被加密,它可以具有0-264之间的任意比特数。

s2、对于不存在于优先级队列中的密钥k,称为第一密钥,用所述第一密钥进行aes加密得到h值,将所述第一密钥以及h值加入优先级队列,所述aes加密通过公式h=e(k′,0128)得到所述的h值,其中0128表示128bit长度的“0”,e表示aes加密或解密函数,k′表示第一密钥;

对于已存在于优先级队列中的密钥k,称为第二密钥,直接取出所述第二密钥对应的h值;

s3、根据输入的数据以及其对应的h值建立完整的加密流程。

其中,对优先级队列的调度规则包括:

设定优先队列的大小,主要基于当前硬件的常规业务量,可用的存储资源大小中的任一种或多种;

插入:对新来的密钥k,在优先队列中查找是否存在,按照优先级算法计算其优先级;

查找:查找操作用来搜索优先权最小的元素,所述元素为所述第二密钥以及其对应的h值中的任一种;

删除:删除操作用来删除查找到的优先权最小的元素。

优先级队列中密钥的优先级按照以下规则确定但并不局限于以下规则:

该密钥的报文对应的业务优先级,比如根据音频、视频等;

该密钥的报文对应的协议,比如tcp、udp等;

该密钥的报文的源地址(对应于解密),或者目的地址(对应于加密);

该密钥在一段时间内出现的频率,出现的频率越高则优先级越高,出现的频率越低则优先级越低;

该密钥随时间前后进行因子修正的频率,比如1小时内出现一次的因子比在1-2小时内出现的因子优先级要高。

通过优先级队列的设置,可以保证储存的密钥k及其对应的h值是优先级较高的密钥,对于优先级较高的密钥可以更快的查找到其h值。

请参照图2所示,完整的加密流程包括以下步骤:

将所述的初始化向量iv、所述的第二密钥,通过ghash函数计算出结果y;当所述的初始化向量iv长度为96bit时,无需经过ghash函数计算就可得到结果y;

将所述的结果y、明文p及所述的第二密钥按照aes标准算法进行加密输出密文c,所述的aes标准算法包括轮密钥加、字节代换、行移位和列混合;

根据所述的附加鉴别信息a、所述的初始化向量iv及所述的密文c,通过ghash函数产生鉴别标识t;

其中,结果y和鉴别标识t的计算符合以下公式:

其中len是变量的二进制位数,t表示鉴别标签t的长度;u代表对明文p的长度取128的模的值,e(k,y)表示用密钥k对y进行aes加解密;incr()表示将参数的最低32位视为无符号数,将其加1后并取模。

ghash函数的定义如下:

点乘定义在gf(2128)有限域上,length(a)返回变量a的位数的64位表示。

实施例二

实施例二是在实施例一基础上进行的,其主要对完整的解密流程进行说明。

当根据输入的数据以及其对应的h值建立完整的解密流程时,执行解密操作;此时,所述输入的数据包括初始化向量iv,密文c,密钥k,鉴别标识t及附加鉴别信息a。

请参照图3所示,当执行解密操作时,其包括以下步骤:

根据所述的第二密钥、所述的初始化向量iv、附加鉴别信息a及所述的密文c,通过ghash函数产生第一鉴别标识t′;

当所述的第一鉴别标识t′与鉴别标识t相同时,即两个标识的长度和值相同,将所述的初始化向量iv、所述的第二密钥,通过ghash函数计算出结果y;

将所述的结果y、密文c及所述的第二密钥按照aes标准算法进行解密输出明文p,所述的aes标准算法包括轮密钥加、逆字节代换、逆行移位和逆列混合;

当所述的第一鉴别标识t′与鉴别标识t不同时,停止运算。

结果y和第一鉴别标识t′的计算符合以下公式:

其中,tr的计算过程即t′的计算过程。

实施例三

实施例三是在实施例一或/和实施例二的基础上进行的。实施例三对于aes标准算法及ghash函数的计算进行了进一步优化。

按照aes标准算法完成数据加解密时,通过轮密钥加、字节代换、行移位和列混合(解密时为轮密钥加、逆字节代换、逆行移位和逆列混合)分别实例化10轮,而不是复用这些流程,以达到最大化系统吞吐率的目的;ghash函数的计算采用低复杂度并行计算方法,以达到在一个时钟之内完成128比特的伽罗华域乘法。

对fpga或者芯片实现而言,如果复用这些aes标准算法的流程,假如1轮运算在1个时钟之内可以完成,那么复用意味着每个aes运算都需要独占10个时钟,其他输入在此期间是不能使用这些运算资源的,这需要至少10个时钟才可以完成aes运算;如果分别将这10轮运算实例化,那么可以实现aes的流水线操作,第一轮处理完直接输出到第二轮的计算单元并开始处理下个数据,虽然得到每个结果的依然需要10个时钟的延迟,但每个时钟都可以得到一个输出结果,增加了计算的效率。

实施例四

实施例四公开了一种对应上述实施例的一种设备控制界面实现装置,为上述实施例的虚拟装置结构,请参照图4所示,包括:

搜索模块110,用于在优先级队列中根据输入的数据搜索密钥k;

计算模块120,用于对于不存在于优先级队列中的密钥k,称为第一密钥,用所述第一密钥进行aes加密得到h值,将所述第一密钥以及h值加入优先级队列,所述aes加密通过公式h=e(k′,0128)得到所述的h值,其中0128表示128bit长度的“0”,e表示aes加密或解密函数,k′表示第一密钥;

取用模块130,用于对于已存在于优先级队列中的密钥k,称为第二密钥,直接取出所述第二密钥对应的h值;

构建模块140,用于根据输入的数据以及其对应的h值建立完整的加密流程或者解密流程。

所述的优先级队列为根据优先级规则建立的第二密钥的优先级队列;所述优先级队列的优先级确定规则为第二密钥的报文对应的业务优先级(如根据音频、视频等)、协议(如tcp、udp等)、源地址(对应解密)、目标地址(对应加密)、出现频率或密钥k随时间前后进行因子修正的频率中的任一种或多种。

优选地,所述的优先级队列长度固定,通过删除优先级最小的元素保证所述优先级队列长度不超出限制,所述元素为所述第二密钥以及其对应的h值中的任一种;所述优先级队列长度的确定规则包括硬件的常规业务量、可用的存储资源大小中的任一种或多种。

优选地,当根据输入的数据以及其对应的h值建立完整的加密流程时,执行加密操作;此时,所述输入的数据还包括初始化向量iv,明文p及附加鉴别信息a;

当根据输入的数据以及其对应的h值建立完整的解密流程时,执行解密操作;此时,所述输入的数据还包括初始化向量iv,密文c,鉴别标识t及附加鉴别信息a。

优选地,当执行加密操作时,其包括以下步骤:

将所述的初始化向量iv、所述的第二密钥,通过ghash函数计算出结果y;

将所述的结果y、明文p及所述的第二密钥按照aes标准算法进行加密输出密文c,所述的aes标准算法包括轮密钥加、字节代换、行移位和列混合;

根据所述的附加鉴别信息a、所述的初始化向量iv及所述的密文c,通过ghash函数产生鉴别标识t;

当执行解密操作时,其包括以下步骤:

根据所述的第二密钥、所述的初始化向量iv、附加鉴别信息a及所述的密文c,通过ghash函数产生第一鉴别标识t′;

当所述的第一鉴别标识t′与鉴别标识t相同时,将所述的初始化向量iv、所述的第二密钥,通过ghash函数计算出结果y;

将所述的结果y、密文c及所述的第二密钥按照aes标准算法进行解密输出明文p,所述的aes标准算法包括轮密钥加、逆字节代换、逆行移位和逆列混合;

当所述的第一鉴别标识t′与鉴别标识t不同时,停止运算。

优选地,在进行加密或解密操作时,当所述的初始化向量iv长度为96bit时,无需经过ghash函数计算就可得到结果y。

优选地,所述的aes标准算法通过运算实例化完成,所述ghash函数采用低复杂度并行计算方法。

实施例五

图5为本发明实施例五提供的一种电子设备的结构示意图,如图5所示,该电子设备包括处理器210、存储器220、输入装置230和输出装置240;计算机设备中处理器210的数量可以是一个或多个,图5中以一个处理器210为例;电子设备中的处理器210、存储器220、输入装置230和输出装置240可以通过总线或其他方式连接,图5中以通过总线连接为例。

存储器220作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的aes-gcm数据处理方法对应的程序指令/模块(例如,设备aes-gcm数据处理实现装置中的搜索获取模块110、计算模块120、取用模块130和构建模块140)。处理器210通过运行存储在存储器220中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述实施例一至实施例三的aes-gcm数据处理方法。

存储器220可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器220可进一步包括相对于处理器210远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置230可用于接收密钥、初始化向量iv等。输出装置240可包括显示屏等显示设备。

实施例六

本发明实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行aes-gcm数据处理方法,该方法包括:

在优先级队列中根据输入的数据搜索密钥k;

对于不存在于优先级队列中的密钥k,称为第一密钥,用所述第一密钥进行aes加密得到h值,将所述第一密钥以及h值加入优先级队列,所述aes加密通过公式h=e(k′,0128)得到所述的h值,其中0128表示128bit长度的0,e表示aes加密或解密函数,k′表示第一密钥;

对于已存在于优先级队列中的密钥k,称为第二密钥,直接取出所述第二密钥对应的h值;

所述的优先级队列为根据优先级规则建立的第二密钥的优先级队列;所述优先级队列的优先级确定规则为第二密钥的报文对应的业务优先级、协议、源地址、目标地址、出现频率或密钥k随时间前后进行因子修正的频率中的任一种或多种;

根据输入的数据以及其对应的h值建立完整的加密流程或者解密流程。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的基于aes-gcm数据处理方法中的相关操作。

对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1