AES加密解密装置和方法
文献发布时间:2024-01-17 01:27:33
技术领域
本申请总体上涉及数据加密和解密,更具体地涉及一种高级加密标准(AdvancedEncryption Standard,AES)加密解密装置和方法。
背景技术
AES是密码学中的高级加密标准,是美国联邦政府采用的一种区块加密标准。经过多年的推广与发展,AES高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于联邦信息处理标准出版物197(Federal Information Processing StandardsPublication 197)中,并在2002年5月26日成为有效的标准。AES用于替代之前的数据加密标准(Data Encryption Standard,DES),具有密钥复杂、破解难度高等特点。AES是目前对称密钥加密中最流行的算法之一。
采用AES进行加解密时需要基于种子密钥(例如128位、256位等的种子密钥)通过密钥扩展算法生成多个加解密时需要的轮密钥。传统的AES加解密装置需要对多个128位或256位等的轮密钥进行存储,以便于在接下来的过程中读取这些轮密钥进行加解密运算。
在硬件实现过程中,存储和读取大量的轮密钥对硬件设备有比较高的要求,在实现时可能比实现加解密算法本身占用更多的资源。
发明内容
鉴于以上所述的问题,本申请提供了一种新的AES加密解密装置和方法,可以在有效地实现AES加密解密过程的同时减少存储和读取轮密钥所占用的资源。
根据本申请的一方面,提供了一种AES加密装置,用于对待加密的明文信息进行多轮次加密,该AES加密装置包括密钥扩展模块和加密模块,其中,对于多轮次加密中的第一轮次加密:密钥扩展模块被配置用于将加密种子密钥提供给加密模块,并存储加密种子密钥作为第一轮次的加密轮密钥,并且加密模块被配置用于基于加密种子密钥来对明文信息进行第一轮次加密;对于多轮次加密中的第二轮次加密至最后轮次加密中的每个当前轮次加密:密钥扩展模块被配置用于基于上一轮次的加密轮密钥进行密钥扩展以生成当前轮次的加密轮密钥,将该当前轮次的加密轮密钥提供给加密模块,并存储该当前轮次的加密轮密钥以替换上一轮次的加密轮密钥,并且加密模块被配置用于基于当前轮次的加密轮密钥来对经上一轮次加密后的明文信息进行当前轮次加密。
根据本申请的另一方面,提供了一种AES解密装置,用于对经多轮次加密得到的加密信息进行多轮次解密,该AES解密装置包括反向密钥扩展模块和解密模块,其中,对于多轮次解密中的第一轮次解密:反向密钥扩展模块被配置用于将解密种子密钥提供给解密模块,并存储解密种子密钥作为第一轮次的解密轮密钥,并且解密模块被配置用于基于解密种子密钥来对加密信息进行第一轮次解密;对于多轮次解密中的第二轮次解密至最后轮次解密中的每个当前轮次解密:反向密钥扩展模块被配置用于基于上一轮次的解密轮密钥进行反向密钥扩展以生成当前轮次的解密轮密钥,将该当前轮次的解密轮密钥提供给解密模块,并存储该当前轮次的解密轮密钥以替换上一轮次的解密轮密钥,并且解密模块被配置用于基于当前轮次的解密轮密钥来对经上一轮次解密后的加密信息进行当前轮次解密。
根据本申请的另一方面,提供了一种AES加密解密装置,包括上述的AES加密装置和上述的AES解密装置,其中,密钥扩展模块与反向密钥扩展模块耦接,并且被配置用于将所生成的最后轮次的加密轮密钥提供给AES解密装置,用作AES解密装置的解密种子密钥。
根据本申请的又一方面,提供了一种AES加密方法,用于对待加密的明文信息进行多轮次加密以得到加密信息,该AES加密方法包括:对于多轮次加密中的第一轮次加密:由密钥扩展模块将加密种子密钥提供给加密模块,并存储加密种子密钥作为第一轮次的加密轮密钥,并且由加密模块基于加密种子密钥来对明文信息进行第一轮次加密;以及对于多轮次加密中的第二轮次加密至最后轮次加密中的每个当前轮次加密:由密钥扩展模块基于上一轮次的加密轮密钥进行密钥扩展以生成当前轮次的加密轮密钥,将该当前轮次的加密轮密钥提供给加密模块,并存储该当前轮次的加密轮密钥以替换上一轮次的加密轮密钥,并且由加密模块基于当前轮次的加密轮密钥来对经上一轮次加密后的明文信息进行当前轮次加密。
根据本申请的又一方面,提供了一种AES解密方法,用于对经多轮次加密得到的加密信息进行多轮次解密,该AES解密方法包括:对于多轮次解密中的第一轮次解密:由反向密钥扩展模块将解密种子密钥提供给解密模块,并存储解密种子密钥作为第一轮次的解密轮密钥,并且由解密模块基于解密种子密钥来对加密信息进行第一轮次解密;以及对于多轮次解密中的第二轮次解密至最后轮次解密中的每个当前轮次解密:由反向密钥扩展模块基于上一轮次的解密轮密钥进行反向密钥扩展以生成当前轮次的解密轮密钥,将该当前轮次的解密轮密钥提供给解密模块,并存储该当前轮次的解密轮密钥以替换上一轮次的解密轮密钥;并且由解密模块基于当前轮次的解密轮密钥来对经上一轮次解密后的加密信息进行当前轮次解密。
附图说明
从下面结合附图对本申请的具体实施方式的描述中可以更好地理解本申请,其中:
图1示出了传统AES加密解密装置的示意性框图;
图2示出了传统AES加密解密过程的示意性框图;
图3a示出了根据本申请的实施例的AES加密装置的示意性框图;
图3b示出了根据本申请的实施例的AES解密装置的示意性框图
图4示出了根据本申请的实施例的AES加密解密装置的示意性框图;
图5示出了根据本申请的实施例的AES加密过程的示意性流程图;以及
图6示出了根据本申请的实施例的AES解密过程的示意性流程图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本申请的全面理解。但是,对于本领域技术人员来说很明显的是,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请的更好的理解。本申请决不限于下面所提出的任何具体配置,而是在不脱离本申请的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本申请造成不必要的模糊。
图1示出了传统AES加密解密装置的示意性框图。如图1所示,该AES加密解密装置包括密钥扩展模块、密钥保存模块、加密模块和解密模块。该AES加密解密装置可以对待加密的明文信息进行多轮次加密以得到加密信息,并且反过来对加密信息进行多轮次解密以得到明文信息。
在该AES加密解密装置中,密钥扩展模块被配置为基于种子密钥Key[0]通过密钥扩展算法生成各轮次加密和解密所需要的轮密钥Key[N],密钥保存模块被配置用于保存这些轮密钥,加密模块被配置用于正向读取密钥保存模块中的轮密钥,并基于这些轮密钥对明文信息进行多轮次加密以生成加密信息,解密模块被配置用于反向读取密钥保存模块中的轮密钥,并基于这些轮密钥对加密信息进行多轮次解密以得到原始的明文信息。
下面以128位的种子密钥Key[0]为例并且参考图1和图2具体描述传统的AES加密解密过程。
首先,密钥扩展模块通过密钥扩展算法对种子密钥Key[0]进行密钥扩展以生成11个轮密钥Key[0]至Key[10],其中密钥扩展算法可以例如包括以下三个步骤(a)、(b)和(c)。
(a)将128位的种子密钥Key[0]分为4个32位的子密钥W0、W1、W2、W3,其中W0为Key[0]中的高32位,W3为Key[0]中的低32位。
(b)按照下面的公式,利用W0、W1、W2、W3依次算出表征轮密钥Key[1]至Key[10]的子密钥W4、W5、W6……W43,其中每个轮密钥Key[N]由四个子密钥Wi组合而成。
在该公式中,ω
(c)利用所生成的子密钥W4、W5、W6……W43,组合生成轮密钥Key[1]至Key[10],如下式所示,其中W4*i为Key[i]的高32位,W4*i+3为Key[i]的低32位。
Key[i]={ω
然后,由密钥扩展模块生成的所有轮密钥(包括种子密钥)Key[0]至Key[10]被保存在一个固定的存储空间(即,密钥保存模块)中。
接下来,如图2所示,加密模块和解密模块可以分别基于各个轮次的轮密钥进行11轮的加密和解密。具体而言,加密模块针对每一轮次从密钥保存模块中读取当前轮次所需要的轮密钥Key[N],并基于该轮密钥进行当前轮次的加密,直至完成11轮的加密之后生成并输出加密信息。其中,加密模块的首轮加密使用Key[0],最后一轮加密使用Key[10]。反过来,解密模块针对每一轮次从密钥保存模块中读取当前轮次所需要的轮密钥Key[N],并基于该轮密钥进行当前轮次的解密,直至完成11轮的解密之后生成并输出明文信息。其中,解密模块的首轮解密使用Key[10],最后一轮解密使用Key[0]。
从以上描述可以看出,在传统AES加密解密装置和AES加密解密过程中,需要大量的存储空间来存储多轮次加密过程中所需要的多个轮密钥,同时存储这些轮密钥将占用很多的资源,对硬件设备有比较高的要求。
根据本申请的实施例,提出了一种新的AES加密解密装置,可以实现类似的多轮次AES加密和解密,而且又可以避免同时存储多个轮密钥。
图3a和图3b分别示出了根据本申请的实施例的AES加密装置和AES解密装置的示意性框图。如图3a所示,根据本申请的一种实施例,AES加密装置可以用于对待加密的明文信息进行多轮次加密,该AES加密装置可以包括密钥扩展模块和加密模块。需要注意的是,在该实施例中,密钥扩展模块也是要基于种子密钥Key[0]通过密钥扩展算法生成各轮次加密所需要的轮密钥Key[N],但是这些轮密钥是按轮次逐步生成的,不需要同时被存储,因此,根据该实施例的AES加密装置不需要专门的密钥保存模块来保存大量的轮密钥数据。下面结合图5所示的示例性加密过程来描述根据本申请的实施例的AES加密装置的工作过程。
在图5所示的示例加密过程中,假设种子密钥Key[0]为128位的密钥,加密模块需要对待加密的明文信息进行11轮次的加密,即从第一轮次(N=0)到第11轮次(N=10)的加密。
如图5所示,对于多轮次加密(例如11个轮次的加密)中的第一轮次加密(N=0):密钥扩展模块可以将加密种子密钥提供给加密模块,并存储加密种子密钥作为第一轮次的加密轮密钥,并且加密模块可以基于加密种子密钥来对明文信息进行第一轮次加密;然后,对于多轮次加密中的第二轮次加密(N=1)至最后轮次加密(N=10)中的每个当前轮次加密:密钥扩展模块可以基于上一轮次的加密轮密钥进行密钥扩展以生成当前轮次的加密轮密钥,将该当前轮次的加密轮密钥提供给加密模块,并存储该当前轮次的加密轮密钥以替换上一轮次的加密轮密钥,并且加密模块可以基于当前轮次的加密轮密钥来对经上一轮次加密后的明文信息进行当前轮次加密。当加密模块进行了总共11轮次的加密之后,加密过程结束,加密模块可以输出所得到的加密信息。
在上述加密过程中,密钥扩展模块可以采用以上针对传统AES加密解密过程所描述的密钥扩展算法来进行密钥扩展以生成每个轮次的加密轮密钥。当然,以上所描述的密钥扩展算法只是一种示例性的密钥扩展算法,本领域技术人员可以采用任何其它合适的密钥扩展算法来生成每个轮次的轮密钥,本申请在这方面不做具体限制。
此外,在上述加密过程中,不需要基于种子密钥生成所有轮次的轮密钥并同时存储这些轮密钥,而是在进行每一轮次的加密之前由密钥扩展模块基于上一轮次的轮密钥通过密钥扩展算法来生成当前轮次的轮密钥,并存储当前轮次的轮密钥以替换上一轮次的轮密钥,从而避免由于同时存储多个轮次的轮密钥而占用过多的存储空间。
与上述AES加密装置和AES加密过程相对应的,图3b示出了根据本申请的实施例的AES解密装置,并且图6示出了根据本申请的实施例的AES解密过程。下面将结合图3b和图6来描述根据本申请的实施例的AES解密装置和AES解密过程。
如图3b所示,根据本申请的一种实施例的AES解密装置用于对经多轮次加密得到的加密信息进行多轮次解密,该AES解密装置包括反向密钥扩展模块和解密模块。需要注意的是,与传统的AES加密解密装置不同,根据本申请的AES解密装置可以包括反向密钥扩展模块,用于基于密钥扩展模块生成的最后轮次的加密轮密钥(在本文中也被称为解密种子密钥)通过反向密钥扩展算法进行反向密钥扩展,以生成各个轮次的解密轮密钥。该反向密钥扩展模块所使用的反向密钥扩展算法可以与上述密钥扩展算法相对应。下面将仍然以128位的种子密钥为示例来描述该反向密钥扩展算法。
在以上参考图3a和图5所描述的AES加密装置和加密过程中,密钥扩展模块基于种子密钥Key[0]生成各个轮次的加密轮密钥,直到生成最后一个轮次的加密轮密钥Key[10]。该加密轮密钥Key[10]可以作为反向密钥扩展模块的解密种子密钥,使得反向密钥扩展模块可以基于该解密种子密钥通过反向密钥扩展算法生成各个轮次的解密轮密钥。这里的反向密钥扩展算法可以与上述的密钥扩展算法相对应。具体而言,该反向密钥扩展算法可以例如包括以下三个步骤(a)、(b)和(c)。
(a)将128位的解密种子密钥Key[10]分为4个32位的子密钥W40、W41、W42、W43,其中W40为Key[10]中的高32位,W43为Key[10]中的低32位。
(b)按照下面的公式,利用W40、W41、W42、W43可以依次算出表征轮密钥Key[9]至Key[0]的子密钥W39、W38、W37……W3、W2、W1、W0,其中每个轮密钥Key[N]由四个子密钥Wi组合而成。
在该公式中,ω
(c)利用所生成的子密钥W39、W38、W37……W3、W2、W1、W0,组合生成轮密钥Key[9]至Key[0],如下式所示,其中W4*i为Key[i]的高32位,W4*i+3为Key[i]的低32位。
Key[i]={ω
这里需要注意的是,反向密钥扩展算法不限于以上描述的反向密钥扩展算法,当加密过程中所用的密钥扩展算法改变时,这里的反向密钥扩展算法也相应地改变。
下面结合图6所示的示例性解密过程来描述根据本申请的实施例的AES解密装置的工作过程。在图6所示的示例解密过程中,假设解密种子密钥Key[10]为128位的密钥,该解密种子密钥可以是反向密钥扩展模块从AES加密装置中的密钥扩展模块接收的最后轮次的加密轮密钥,解密模块需要对加密信息进行11轮次的解密,即从第一轮次(N=0)到第11轮次(N=10)的解密。
如图6所示,对于多轮次解密中的第一轮次解密(N=0):反向密钥扩展模块可以将解密种子密钥提供给解密模块,并存储解密种子密钥作为第一轮次的解密轮密钥,并且解密模块可以基于解密种子密钥来对加密信息进行第一轮次解密;对于多轮次解密中的第二轮次解密至最后轮次解密中的每个当前轮次解密:反向密钥扩展模块可以基于上一轮次的解密轮密钥进行反向密钥扩展以生成当前轮次的解密轮密钥,将该当前轮次的解密轮密钥提供给解密模块,并存储该当前轮次的解密轮密钥以替换上一轮次的解密轮密钥,并且解密模块可以基于当前轮次的解密轮密钥来对经上一轮次解密后的加密信息进行当前轮次解密。当解密模块进行了总共11轮次的解密之后,解密过程结束,解密模块可以输出所得到的明文信息。
与根据本申请的加密过程相类似,在上述解密过程中,也不需要基于种子密钥生成所有轮次的轮密钥并同时存储这些轮密钥,而是在进行每一轮次的解密之前由反向密钥扩展模块基于上一轮次的轮密钥通过反向密钥扩展算法来生成当前轮次的轮密钥,并存储当前轮次的轮密钥以替换上一轮次的轮密钥,从而避免由于同时存储多个轮次的轮密钥而占用过多的存储空间。
如上所述,根据本申请的实施例的AES加密装置和AES解密装置可以作为单独的装置而存在,但根据本申请的一些实施例,可以提供一种AES加密解密装置,包括彼此耦接的AES加密装置和AES解密装置。具体而言,AES加密装置中的密钥扩展模块可以与AES解密装置中的反向密钥扩展模块耦接,并且将所生成的最后轮次的加密轮密钥(例如Key[10])提供给AES解密装置,用作AES解密装置的解密种子密钥。
图4示出了根据本申请的实施例的AES加密解密装置的示意性框图。在该AES加密解密装置中,密钥扩展模块、加密模块、反向密钥扩展模块和解密模块的操作与上述AES加密装置和AES解密装置中对应的模块的操作是一样的,因此这里不再进行重复描述。
利用根据本申请的AES加密、解密装置和过程,可以避免由于同时存储多个轮次的轮密钥而占用过多的存储空间,从而可以在有效地实现AES加密解密过程的同时减少存储和读取轮密钥所占用的资源。
上文中提到了“实施例”、“一种实施例”、“一些实施例”,应理解,在各个实施例中提及的特征并不一定只能应用于该实施例,而是可能用于其他实施例。一个实施例中的特征可以应用于另一实施例,或者可以被包括在另一实施例中。
此外,各种操作或步骤以最有助于理解说明性实施例的方式被描述为多个离散操作;然而,描述的顺序不应被解释为暗示这些操作或步骤必须依赖于顺序。特别是,这些操作或步骤不需要按照呈现的顺序执行。
本申请可以以其他的具体形式实现,而不脱离其精神和本质特征。例如,特定实施例中所描述的特征可以被修改,而系统体系结构并不脱离本申请的基本精神。因此,当前的实施例在所有方面都被看作是示例性的而非限定性的,本申请的范围由所附权利要求而非上述描述定义,并且,落入权利要求的含义和等同物的范围内的全部改变从而都被包括在本申请的范围之中。
- 空调机组加密解密方法、装置和加密解密终端
- 一种基于AES算法的加密解密装置
- 一种基于AES算法的加密解密装置