一种低复杂度的AES一体化加解密器实现方法技术

技术编号:14818702 阅读:49 留言:0更新日期:2017-03-15 12:09
本发明专利技术提供了一种低复杂度的基于FPGA的AES一体化加解密器的设计架构与实现方式。通过优化设计加解密器中的行变换单元、列变换单元、盒变换单元与数据缓存单元,使得加密器的架构与解密器的架构高度复用,从而减少了资源消耗,降低了复杂度,提高了运算速度。

【技术实现步骤摘要】

本专利技术属于通信领域,具体涉及一种低复杂度AES一体化加解密器实现方法。
技术介绍
随着科技的进步,信息的交换在人们生活中越加频繁,保证信息的安全传输成为通信中至关重要的一环。美国国家标准与技术研究院(NIST)在2001年制定和公布了AES(AdvancedEncryptionStandard)加密算法,它已取代DES加密算法成为现今最流行的加密方式之一。AES加密算法具有安全性高,流程简单,编码紧凑等特点,能满足大多数情况下信息加密的需要。AES是一种对称密钥分组的加密算法。为满足不同的情景需要,AES加密算法可以分别使用128、192或256位密钥,其中128位密钥最为常用,以下对AES算法的描述均是以128位密钥模式为例。同时,作为一种迭代加密算法,AES根据密钥长度的不同分别包括10,12或14轮循环,每轮循环又称作轮变换,包括以下四种运算:密钥异或:数据与密钥或子密钥进行异或。盒变换:通过查表的方式,对输入的数据按照字节进行替换,加密时进行S盒变换,解密时进行逆S盒变换。S盒与逆S盒的大小均为256字节。行变换:包括行位移与逆行位移,行位移和逆行位移分别用于加密和解密过程中,将输入的16字节的数据按照先后顺序进行排列,为便于描述,将这16个字节的数据命名为S0至S15,这些数据每4个字节分成一组,排列成如图1左侧行位移前所示的4行乘4列的矩阵形式。进行行位移时,矩阵中第一行数据的顺序保持不变,第二行的数据循环左移一个字节,第三行的数据循环左移两个字节,第四行的数据循环左移三个字节。逆行位移过程中,则改为循环右移。行位移与逆行位移的过程分别如图1与图2所示。列变换:包括列混淆与逆列混淆,在伽罗华域上对数据左乘一个矩阵,列混淆和逆列混淆分别用于加密和解密过程中,区别在于左乘的矩阵不同。列混淆与逆列混淆的过程分别如图3与图4所示,图中所有数据均采用16进制表示。使用AES算法对数据进行加密的流程如下:待加密数据先与密钥进行异或运算,接着依次完成S盒变换、行位移、列混淆以及密钥异或运算,至此完成第一轮轮变换。之后按照S盒变换、行位移、列混淆、密钥异或的顺序完成第二轮到第九轮轮变换后,数据进入第十轮轮变换过程,此时数据先后进行S盒变换,行变换与密钥异或操作即得到加密结果,第十轮中没有列混淆操作,使用AES算法对数据进行加密的流程如图5所示。使用AES算法对数据进行解密的流程如下:待解密数据先与密钥进行异或运算,接着依次完成逆行位移、逆S盒变换、密钥异或以及逆列混淆,至此完成第一轮解密轮变换。之后按照逆行位移、逆S盒变换、密钥异或以及逆列混淆的顺序完成第二至第九轮轮变换后,数据进入第十轮轮变换过程,此时数据先后进行逆行位移、逆S盒变换与密钥异或运算,解密第十轮轮变换中没有逆列混淆操作,使用AES算法对数据进行解密的流程如图6所示。AES加密算法在软件和硬件上都可以进行快速的加解密。尤其是在硬件上,AES加密的速度能够大幅度提升,但是,过高的速度是以巨大的资源消耗为代价,在实际应用中,还要着重考虑成本问题,如何在速度和资源这两方面达到平衡值得很好地研究。现有资料中,基于FPGA的AES加解密器大多面向高速应用,耗费很多的硬件资源,实现复杂度高。然而,在实际中,只有在很少的情形下才需要非常高的速率,更多情况下则是期望能够尽可能地降低复杂度,从而降低实现成本。
技术实现思路
本专利技术的目的在于,提供一种低复杂度的基于FPGA的AES一体化加解密器(以下简称加解密器)的实现方式,用以解决现有技术中AES加解密器实现复杂度过高的问题。首先重新定义AES加密过程的轮变换过程,从图5可以看出,待加密数据首先需要进行一次密钥异或操作,才开始进行第一轮加密,最后第十轮加密只包含三个运算过程。本专利技术中,将图5中待加密数据后的第一次密钥异或运算计入第一轮加密过程中,而将图5中每一轮加密中的密钥异或运算计入下一轮加密过程中,由此,本专利技术对数据进行加密的流程如图7所示,对比图5与图7可以看出,两者在对数据进行加密的流程上相同,只是在轮变换的定义上有所区别,因此,按照图7对数据进行加密的结果和按照图5对数据进行加密的结果相同。从前述可知,盒变换是对数据的内容进行替换,不影响数据各字节的先后,而行变换是对数据进行顺序调整,不影响数据的内容。因此,对数据进行加密或解密时,相邻的盒变换和行变换可以进行顺序调整,顺序调整后,运算结果不变。本专利技术对数据的解密流程如图8所示,对比图6和图8,可以看出,两者只在执行逆S盒变换和逆行位移的先后顺序上不同,而上述两种运算的执行顺序不影响运算结果。因此,按照图8对数据进行解密的结果和按照图6对数据进行解密的结果相同。本专利技术提供的加解密器包括密钥生成模块11,用于生成加密与解密时的密钥;密钥异或模块12,用于完成输入信息与密钥的异或;行变换模块14,对输入数据进行行位移与逆行位移运算;列变换模块16,对数据进行列混淆与逆列混淆运算;盒变换模块13,对数据进行S盒变换与逆S盒变换;数据缓存单元15,用于缓存行变换模块输出的数据;第一数据选择单元17-1,用于选择输入到密钥异或模块的数据来源;第二数据选择单元17-2,用于选择输入到盒变换模块的数据来源;第三数据选择单元17-3,用于选择输入到列变换模块的数据来源;第四数据选择单元17-4,用于选择输入到数据选择器17-1的数据来源;控制单元10,根据加解密器的工作模式与轮数,控制密钥生成模块、盒变换模块、行变换模块、数据缓存单元、列变换模块以及4个数据选择器,对加密或解密的流程进行控制。加解密器整体架构如图9所示。本专利技术所提供的加解密器中的盒变换模块13使用只读存储器(ROM)实现,此ROM包含两部分地址空间,前256个地址用于存储加密的S盒变换数据,后256个地址用于存储解密的逆S盒变换数据。根据AES加解密算法,在密钥生成时也需要进行S盒变换或逆S盒变换,本专利技术所提供的加解密器中的盒变换模块使用双口ROM实现,该双口ROM的1个端口用于完成数据的S盒与逆S盒变换,另一个端口用于完成密钥的S盒与逆S盒变换。在FPGA中,单口ROM与双口ROM耗用的存储器资源相同。本专利技术所提供的加解密器中的数据缓存单元15使用双口RAM实现,其一个口用于接收行变换模块的输出,另一个口用于将数据输出到数据选择器17-3。数据缓存单元的大小为32个字节,分成两个区域A与B,每个区域为16个字节,在进行加解密操作时,数据缓存单元的两个区域采用乒乓操作方式,从而避免前后两轮加密或者解密操作的数据冲突,进而提高对数据进行加密或者解密的速度。本专利技术所提供的加解密器中的行变换模块14包括计数器20、加法器21、第一寄存器22、第二寄存器23、数据选择器24、异或器25、移位器26。计数器20为16进制计数器,共包含4个比特,从高位到低位分别记为C[3],C[2],C[1]与C[0];寄存器22,共两比特,高位为B[1],低位为B[0],B[1]的值与C[1]相同,B[0]的值与C[0]相同;寄存器23,共两比特,高位为F[1],低位为F[0],F[1]的值为B[0]与B[1]异或的结果,F[0]的值与B[0]的值相同;数据选择器24为二选一数据选择器,其一个输入端为寄存器22本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/62/201611041653.html" title="一种低复杂度的AES一体化加解密器实现方法原文来自X技术">低复杂度的AES一体化加解密器实现方法</a>

【技术保护点】
一种低复杂度的AES一体化加解密器,其特征在于:加解密器包括密钥生成模块、密钥异或模块、行变换模块、列变换模块、盒变换模块、数据缓存单元、第一数据选择单元、第二数据选择单元、第三数据选择单元、第四数据选择单元和控制单元,其中,密钥生成模块用于生成加密与解密时的密钥;密钥异或模块用于完成输入信息与密钥的异或;行变换模块用于对输入数据进行行位移与逆行位移运算;列变换模块用于对数据进行列混淆与逆列混淆运算;盒变换模块用于对数据进行S盒变换与逆S盒变换;数据缓存单元用于缓存行变换模块输出的数据;第一数据选择单元用于选择输入到密钥异或模块的数据来源;第二数据选择单元用于选择输入到盒变换模块的数据来源;第三数据选择单元用于选择输入到列变换模块的数据来源;第四数据选择单元用于选择输入到第一数据选择单元的数据来源;控制单元根据加解密器的工作模式与轮数,控制密钥生成模块、盒变换模块、行变换模块、数据缓存单元、列混淆单元以及四个数据选择单元,对加密或解密的流程进行控制。

【技术特征摘要】
1.一种低复杂度的AES一体化加解密器,其特征在于:加解密器包括密钥生成模块、密钥异或模块、行变换模块、列变换模块、盒变换模块、数据缓存单元、第一数据选择单元、第二数据选择单元、第三数据选择单元、第四数据选择单元和控制单元,其中,密钥生成模块用于生成加密与解密时的密钥;密钥异或模块用于完成输入信息与密钥的异或;行变换模块用于对输入数据进行行位移与逆行位移运算;列变换模块用于对数据进行列混淆与逆列混淆运算;盒变换模块用于对数据进行S盒变换与逆S盒变换;数据缓存单元用于缓存行变换模块输出的数据;第一数据选择单元用于选择输入到密钥异或模块的数据来源;第二数据选择单元用于选择输入到盒变换模块的数据来源;第三数据选择单元用于选择输入到列变换模块的数据来源;第四数据选择单元用于选择输入到第一数据选择单元的数据来源;控制单元根据加解密器的工作模式与轮数,控制密钥生成模块、盒变换模块、行变换模块、数据缓存单元、列混淆单元以及四个数据选择单元,对加密或解密的流程进行控制。2.根据权利要求1所述的一种低复杂度的AES一体化加解密器,其特征在于:所述的盒变换模块使用只读存储器(ROM)实现,此ROM包含两部分地址空间,前256个地址用于存储加密的S盒变换数据,后256个地址用于存储解密的逆S盒变换数据;更进一步,所述的盒变换模块使用双口ROM实现,该双口ROM的1个端口用于完成数据的盒变换,另一个端口用于完成密钥的盒变换。3.根据权利要求1所述的一种低复杂度的AES一体化加解密器,其特征在于:所述的数据缓存单元使用双口RAM实现,其一个口用于接收行变换模块的输出,另一个口用于将数据输出到第三数据选择器;数据缓存单元的大小为32个字节,分成两个区域A与B,每个区域为16个字节,在进行加解密操作时,数据缓存单元的两个区域采用乒乓操作方式,从而避免前后两轮加密或者解密操作的数据冲突,进而提高对数据进行加密或者解密的速度。4.根据权利要求1所述的一种低复杂度的AES一体化加解密器,其特征在于:所述的行变换模块包括计数器、加法器、第一寄存器、第二寄存器、数据选择器、异或器与移位器,其中,计数器为16进制计数器,共包含4个比特;第一寄存器包含两比特,数值分别与计数器的低两比特相同;第二寄存器包含两比特,高位为第一寄存器两比特的异或结果,低位与第一寄存器低位的值相同;数据选择器为二选一数据选择器,其一个输入端为第一寄存器,另一个输入端为第二寄存器,数据选择器的选通信号由控制模块提供;移位器,用于对数据选择器的输出向左移动两比特;加法器用于完成计数器与移位器的输出相加的功能;异或器用于完成对第一寄存器两比特进行异或运算的功能。5.根据权利要求1所述的一种低复杂度的AES一体化加解密器,其特征在于:所述的列变换模块包括伽罗华域乘法器单元、加法单元、数据选择器单元、异或器单元、寄存器组、数据缓存器单元、四选一数据选择器与计数器,其中,伽罗华域乘法器单元包含三个伽罗华域乘法器,分别完成对输入数据进行乘2、乘4与乘8的运算;加法单元包含六个加法器,配合乘法器完成对输入数据乘以3,乘以9,乘以11,乘以13与乘以14的功能;数据选择器单元包括4个二选一数据选择器,根据选通信号的设置,将输入信号乘以2的结果、输入信号、输入信号、输入信号乘以3的结果输出,或者将输入信号乘以14的结果、乘以9的结果、乘以13的结果、输入信号乘以11的结果输出;异或器单元包括4个异或器,分别用于完成4个数据选择器的输出与寄存器组中的A0、A1、A2与A3的异或运算;寄存器组包括4个8比特数据存储单元A0、A1、A2与A3,分别用于存储异或器单元的输出结果;数据缓存器单元包括4个8比特缓存器D0、D1、D2与D3,分别用于缓存寄存器组中A0、A1、A2与A3的数据;四选一数据选择器,在计数器的控制下,将数据缓存器单元中D0、D1、D2与D3的数据依次输出;计数器,为一个4进制计数器,共两个比特,控制四选一数据选择器进行数据选择以及控制数据缓存器单元对寄存器组的数据进行缓存。6.根据权利要求1所述的一种低复杂度的AES一体化加解密器,且假定在列变换模块中插入了一级流水线,对数据进行加密时,有以下步骤:步骤1:密钥异或运算分别地、顺序地,待加密的128比特数据(16字节)按照字节顺序依次输入到加解密器中的密钥异或模块,完成密钥异或运算,每个时钟输入一个字节的数据,16个时钟后,16字节的数据完成密钥异或运算;步骤2:S盒变换运算分别地、顺序地,完成密钥异或运算的数据按照字节顺序依次输入到盒变换模块,完成S盒变换运算,每个时钟输入一个字节的数据,16个时钟后,16字节的数据完成S盒变换运算;由于采用ROM完成S盒变换运算,...

【专利技术属性】
技术研发人员:赵岭胡杨王天娇李勣
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京;11

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

1