基于fpga的超高速aes处理器及其实现方法

文档序号:7552038阅读:327来源:国知局
专利名称:基于fpga的超高速aes处理器及其实现方法
技术领域
本发明属于通信技术领域,更进一步涉及信息安全技术领域中的基于现场可编程门阵列(Field Programmable Gate Array, FPGA)的超高速高级加密标准(AdvancedEncryption Standard, AES)处理器及其实现方法。本发明在保证处理速度较高和资源占用最小的情况下,充分地利用了 FPGA编程的灵活性和硬件的可靠性,实现了对数据与信息的安全加密。本发明可以广泛地适用于智能卡(smart card),手机银行系统,ATM取款机中进行高级加解密,以确保数据与信息的安全。
背景技术
随着通信技术的发展,通信环境日趋复杂,与传统的软件加密方法相比,硬件加密具有计算速度快,成本低,效率高;性能可靠,安全性好,不易被攻击等优势。FPGA技术的优越点就是利用强有力的设计工具来缩短开发周期,提供丰富的片上资源,能够并行处理数据,容易实现流水线结构,提高设计的灵活性,且升级方便,降低设计成本。凭借这些优点,采用速度更快、并行度更大的FPGA芯片来实现AES已成为必然趋势。传统的AES处理器是完全基于AES算法,逐轮地进行运算。并且在加密的每一轮运算中又严格地按照密钥加、字节替换、行移位、列混合四个步骤依次进行,在解密的每一轮运算中又严格地按照逆行移位、逆字节替换、密钥加、逆列混合四个步骤依次进行。这种方式虽然在实时专用处理器中得到了广泛的应用,但在实现这种方式处理器的每一轮运算中,每一轮运算中有大量的移位、乘法、异或运算,从而增加了地址控制的难度和复杂度,其模块的移植性比较低,占用FPGA大量的资源,增加处理器的开销。记忆科技(深圳)有限公司申请的专利“一种实现AES加解密的方法及装置”(申请号201210236963.2,申请公开号CN102801519A,
公开日为2012.11.28)是用传统的方法设计AES处理器的,在加解密的每一轮运算中,严格按照传统方法的四个步骤进行运算的,该专利通过使用了相同的寄存器缓存加密和解密轮运算的结果,并使用相同的逻辑实现S盒和逆S盒运算,实现了降低芯片面积以及功耗的目的。该专利申请存在三个不足之处。其一,该专利没有对加解密提出好的优化方法,导致加解密步骤复杂。其二,该专利没有避免对S盒、逆S盒和列混合、逆列混合步骤的计算,导致加解密过程不能保证数据的正确性和安全性。其三,该专利要对初始密钥进行扩展,并且严格按照传统的四个步骤进行运算的,导致加解密数据的速度有一定的限制,从而不能很好地满足高速率应用场合的需要。Liakot Ali 教授等人的论文“Design of an ultra high speed AES processorfor next generation IT security,,(Liakot Ali, Ishak Aris, Fakir Sharif Hossain,Niranjan Roy.Design of an ultra high speed AES processor for next generationIT security [A].Computers and Electrical Engineering, 2011, 37:1160-1170.)提出了一种AES处理器装置,该AES处理器装置采用Altera公司的EP2SGX30DF780C3器件实现了 36.16Gbps的加密速率。该AES处理器装置的加密模块是完全基于查找表实现的,而在解密模块的每一轮运算中,还是严格按照传统的逆行移位(InShiftRow)、逆字节替换(InSubBytes)、逆列混合(InMixcolumn)、密钥加(AddRoundKey)四个步骤进行运算。该篇论文存在以下三个不足之处:其一,没有对加密提出更好的优化方法,导致这种方案实现的AES处理器对数据加密时,输入和输出之间有21个时钟周期延迟;其二,没有对AES处理器的存储器模块做进一步改善,导致AES处理器额外地多占用了 4K的只读存储器(Read OnlyMemory, ROM);其三,没有对AES处理器解密模块的内部结构做进一步改善,导致解密模块比较复杂。

发明内容
本发明的目的在于克服上述现有技术的不足,解决了传统AES处理器控制逻辑复杂、输入与输出之间延迟时间长、占用资源较多的问题,提出了一种计算速度更快、资源利用率更高、结构更简单的基于FPGA的超高速AES处理器及其实现方法,以改善其实用性能。本发明基于FPGA的超高速AES处理器,包括接口存储区缓冲模块、控制模块、AES加解密模块、只读存储器查找表模块、寄存器模块、输出模块,所述接口存储区缓冲模块、AES加解密模块通过数据总线和控制总线相连;所述只读存储器查找表模块、寄存器模块、控制模块、输出模块通过数据总线和控制总线相连;其中:接口存储区缓冲模块,用于暂时存储输入数据总线上的数据;控制模块,用于控制和协调AES加解密模块的运算单元、只读存储器查找表模块、寄存器模块之间的数据传输以及控制输出加密结果或者解密结果;AES加解密模块,分别用于对明文的标准加密、对密文的标准解密;只读存储器查找表模块,用于存储加解密过程中的临时数据,并把查找的结果送到数据总线上;寄存器模块,用于存储加解密过程中的扩展密钥,并根据控制器的控制号把寄存器的数据送到数据总线上;输出模块,用于从加密模块、解密模块选择输出加密或者解密结果。本发明超高速AES处理器的实现方法,包括如下步骤:(I)初始化数据表依据字节替换表、逆字节替换表和加密模块的扩展密钥寄存器的数据,计算查找向量表、查找逆列向量表以及解密模块的扩展密钥寄存器数据。(2)初始设置用户根据处理数据的速率计算出系统工作的时钟频率,把这个频率的时钟连接到处理器的时钟端口,给系统一个复位信号使得处理器处于复位状态。⑶接收数据将拟加解密的输入数据序列暂存到接口存储区缓冲模块,在控制模块的控制下,第一轮运算单元接收接口存储区缓冲模块输出的数据序列。将加解密模块的运算次数设定为I,完成初始化操作。(4)读取数据在控制模块的控制下,将加密模块中与运算次数对应的扩展密钥寄存器数据和解密模块中与运算次数对应的扩展密钥寄存器数据读出来。(5)选择数据的处理方式
5a)判断运算次数是否等于1,如果是,执行步骤5b)的操作,否则,执行步骤5c)的操作;5b)从加密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与接口存储区缓冲模块输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算结果;从解密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与接口存储区缓冲模块输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算结果;5c)从加密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与与运算次数对应的查找列向量表输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算的结果;从解密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与与运算次数对应的查找逆列向量表输出的数据同时送给与运算次数对应的运算单元,得到解密模块中与运算次数对应的运算的结果。(6)判断加解密是否完成判断运算次数是否等于11,如果是,则完成加解密数据,执行步骤(7)的操作;否贝IJ,未完成加解密数据,运算次数加I,执行步骤(4)的操作。(7)输出结果输出模块接收来自加解密模块运算的结果,在控制模块的控制下,选择输出加密结果或者解密结果。本发明与现有技术相比,具有以下特点:第一,由于本发明中加解密模块均采用优化后的算法,优化后的算法中一轮运算至多有两个步骤,可有效地克服现有技术加解密模块中在第2轮至第10轮的每一轮运算中都要进行四步操作的复杂性、模块可移植性差的问题,使得本发明的存储控制逻辑简单,模块的可移植性高。第二,由于本发明中加解密模块均采用优化后的算法,加解密模块的内部结构完全相同,可有效地克服现有技术中解密模块复杂的问题,使得本发明的内部结构对称,方便内部单元的布局布线。第三,由于本发明是完全基于查找表设计的,固化的查找表保证了系统数据不能轻易地被修改,可有效地克服现有技术在实用时容易被篡改的问题,使得本发明提高了可靠性;加解密模块中扩展密钥寄存器数据不同,本发明似乎是非对称加密,但其实质是对称加密,使得本发明提高了安全性能。通过查找固化的查找表,可有效地克服现有技术在实用时容易出现处理数据出错的问题,使得本发明保证了系统的有效性。第四,由于本发明是完全基于硬件语言设计的,硬件语言的简化使得本发明完成第一组数据加解密仅要10个时钟延迟,有效地克服了现有技术中完成第一组数据加解密需要21个时钟延迟问题,使得本发明有更好的实时性。第五,由于本发明充分地使用FPGA内部丰富的寄存器资源,有效的克服了现有技术中AES处理器额外地多占用了 4K ROM的问题,使得本发明提高了系统资源利用率和AES处理器的性价比。


图1为本发明处理器的整体结构框图;图2为本发明处理器加解密模块结构框图;图3为本发明处理器加解密模块的一轮运算优化结构框图;图4为本发明处理器实现方法的流程图;图5为本发明处理器加解密仿真结果图。
具体实施方式
:下面结合附图对本发明做进一步的描述。参照附图1对本发明的处理器的整体结构做进一步的描述。本发明的处理器包括接口存储区缓冲模块、控制模块、AES加解密模块、只读存储器查找表模块、寄存器模块、输出模块;接口存储区缓冲模块、AES加解密模块通过数据总线和控制总线相连;只读存储器查找表模块、寄存器模块、控制模块、输出模块通过数据总线和控制总线相连。接口存储区缓冲模块,用于暂时存储输入数据总线上的数据。接口存储区缓冲模块包括设置在加解密模块前端缓冲区的四个随机存储器RAM ;每个RAM的32位输入数据总线、输出数据总线分别与外部数据输入数据线、加解密模块输入数据线相连。本发明实施例中AES处理器每个时钟能够处理128比特数据,如果外部输入的数据过快,AES处理器可能丢失数据,不能有效地处理数据;如果外部输入的数据较慢,FPGA得不到充分的利用。为解决输入数据总线与AES加解密数据处理宽度不同以及外设工作频率与FPGA工作时钟频率不同这两个矛盾,本发明AES处理器采用接口存储区缓冲模块实现对外部输入的数据及内部待处理数据的暂时存储,这样在输入数据过快时,确保数据不丢失,在输入数据速率较慢时,FPGA可以被充分地利用。本发明AES处理器将四个RAM并列起来,每个RAM输出的总线占32位,将128个时钟下串行的128比特数据转为一个时钟下并行的128比特数据。控制模块,用于控制和协调AES加解密模块的运算单元、只读存储器查找表模块、寄存器模块之间的数据传输以及控制输出加密结果或者解密结果。在控制模块的控制下,当复位信号(reset)有效后,就能进行正常加解密工作;当控制信号(en_de)是高电平时,此时是加密模式,输出总线(data_out)上的加密数据总比输入总线(text)的数据晚10个时钟;当控制信号(en_de)是低电平时,此时是解密模式,输出总线(data_out)上的解密数据总比输入总线(text)的数据晚10个时钟。参照附图2对本发明的处理器的加解密模块做进一步的描述。AES加解密模块,分别用于对明文的标准加密、对密文的标准解密;AES加解密模块的128比特的输入、输出端口分别与接口存储区缓冲模块的输出数据线、输出控制模块的输入数据线相连;AES加解密模块包括加密的11轮运算单元和解密的11轮运算单元;力口解密的11轮运算单元均以流水线的方式级联。AES加密模块第I轮运算单元只有密钥加一个步骤,AES加密模块的第2轮、第3轮、第4轮、第5轮、第6轮、第7轮、第8轮、第9轮以及第10轮运算单元均包括查找列向量表、密钥加两个步骤;AES加密模块的第11轮运算单元包括字节替换、密钥加两个步骤;AES解密模块第I轮运算单元只有密钥加一个步骤,AES解密模块的第2轮、第3轮、第4轮、第5轮、第6轮、第7轮、第8轮、第9轮以及第10轮运算单元均包括查找逆列向量表密钥加两个步骤;AES解密模块的第11轮运算单元包括逆字节替换、密钥加两个步骤;加密模块和解密模块的内部结构完全相同。参照附图3对本发明的处理器的加解密模块中一轮优化步骤做进一步的描述。现有技术的加密算法中每一轮计算都是基于状态矩阵的,每一轮计算的数学表达形式如下表1,其中1、j分别是字节替换表中的行数、列数;bu、S[au]是字节替换表中的第i行、第j列数据;Cw、Cu、(^、(^分别表示状态矩阵中第I行第j列、第2行第j列、第3行第j列、第4行第j列对应的数据;‘、Cllj, d2j、d3J分别是C(lj、Cij, c2j、c3J与逆混合线性变换矩阵相乘后的数据,km I^ik2Pk3j、是当前一轮密钥状态矩阵中第I行第j列、第2行第j列、第3行第j列、第4行第j列对应的数据。表I现有技术的加密操作中每轮运算的数学表达形式
权利要求
1.一种基于FPGA的超高速AES处理器,包括接口存储区缓冲模块、控制模块、AES加解密模块、只读存储器查找表模块、寄存器模块、输出模块,所述接口存储区缓冲模块、AES加解密模块通过数据总线和控制总线相连;所述只读存储器查找表模块、寄存器模块、控制模块、输出模块通过数据总线和控制总线相连;其中: 所述接口存储区缓冲模块,用于暂时存储输入数据总线上的数据; 所述控制模块,用于控制和协调AES加解密模块的运算单元、只读存储器查找表模块、寄存器模块之间的数据传输以及控制输出加密结果或者解密结果; 所述AES加解密模块,分别用于对明文的标准加密、对密文的标准解密; 所述只读存储器查找表模块,用于存储加解密过程中的临时数据,并把查找的结果送到数据总线上; 所述寄存器模块,用于存储加解密过程中的扩展密钥,并根据控制器的控制号把寄存器的数据送到数据总线上; 所述输出模块,用于从加密模块、解密模块选择输出加密或者解密结果。
2.根据权利要求1所述的基于FPGA的超高速AES处理器,其特征在于,所述接口存储区缓冲模块包括设置在加解密模块前端缓冲区的四个随机存储器RAM ;每个RAM的32位输入数据总线、输出数据总线分别与外部数据输入数据线、加解密模块输入数据线相连。
3.根据权利要求1所述的基于FPGA的超高速AES处理器,其特征在于,所述AES加解密模块的128比特的输入、输出端口分别与接口存储区缓冲模块的输出数据线、输出控制模块的输入数据线相连;AES加解密模块包括加密的11轮运算单元和解密的11轮运算单元;加解密的11轮运算单元均以流水线的方式级联;AES加密模块第I轮运算单元只有密钥加一个步骤,AES加密模块的第2轮、第3轮、第4轮、第5轮、第6轮、第7轮、第8轮、第9轮以及第10轮运算单 元均包括查找列向量表、密钥加两个步骤;AES加密模块的第11轮运算单元包括字节替换、密钥加两个步骤;AES解密模块第I轮运算单元只有密钥加一个步骤,AES解密模块的第2轮、第3轮、第4轮、第5轮、第6轮、第7轮、第8轮、第9轮以及第10轮运算单元均包括查找逆列向量表、密钥加两个步骤;AES解密模块的第11轮运算单元包括逆字节替换、密钥加两个步骤;加密模块和解密模块的内部结构完全相同。
4.根据权利要求1所述的基于FPGA的超高速AES处理器,其特征在于,所述只读存储器查找表模块,包括加密模块的字节替换查找表、查找列向量表,解密模块的字节逆替换查找表以及查找逆列向量表四种查找表;其中查找列向量表包括查找列向量表1、查找列向量表2、查找列向量表3、查找列向量表4,查找逆列向量表包括查找逆列向量表1、查找逆列向量表2、查找逆列向量表3、查找逆列向量表4 ;字节替换查找表、字节逆替换查找表的输入、输出端口分别与AES加解密模块中第10轮运算单元的输出、AES加解密模块中第11轮运算单元的输人相连;在AES加解密模块的第2轮、第3轮、第4轮、第5轮、第6轮、第7轮、第8轮、第9轮、第10轮运算单元中,每一轮的查找列向量表和查找逆列向量表的输出、输入端口通过数据线分别与AES加解密模块中当前一轮运算单元的输入、AES加解密模块中上一轮运算单元的输出相连。
5.根据权利要求1所述的基于FPGA的超高速AES处理器,其特征在于,所述寄存器模块包括加密模块的11个扩展密钥寄存器和解密模块的11个扩展密钥寄存器;加密模块的每一轮扩展密钥寄存器和解密模块的每一轮扩展密钥寄存器通过数据总线分别与每一轮运算单元的输入端口相连。
6.根据权利要求1所述的基于FPGA的超高速AES处理器,其特征在于,所述输出模块的256比特输入端口分别与加密模块输出的128比特数据线和解密模块输出的128比特数据线相连;输出模块的128比特的输出,通过数据总线与处理器的输出相连。
7.基于FPGA的超高速AES处理器实现方法,包括如下步骤: (1)初始化数据表 依据字节替换表、逆字节替换表和加密模块的扩展密钥寄存器的数据,计算查找向量表、查找逆列向量表以及解密模块的扩展密钥寄存器数据; (2)初始设置 用户根据处理数据的速率计算出系统工作的时钟频率,把这个频率的时钟连接到处理器的时钟端口,给系统一个复位信号使得处理器处于复位状态; (3)接收数据 将拟加解密的输入数据序列暂存到接口存储区缓冲模块,在控制模块的控制下,第一轮运算单元接收接口存储区缓冲模块输出的数据序列;将加解密模块的运算次数设定方I,完成初始化操作; (4)读取数据 在控制模块的控制下,将加密模块中与运算次数对应的扩展密钥寄存器数据和解密模块中与运算次数对应的扩展密钥寄存器数据读出来; (5)选择数据的处理方式 5a)判断运算次数是否等于1,如果是,执行步骤5b)的操作,否则,执行步骤5c)的操作; 5b)从加密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与接口存储区缓冲模块输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算结果;从解密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与接口存储区缓冲模块输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算结果; 5c)从加密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与与运算次数对应的查找列向量表输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算的结果;从解密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与与运算次数对应的查找逆列向量表输出的数据同时送给与运算次数对应的运算单元,得到解密模块中与运算次数对应的运算的结果; (6)判断加解密是否完成 判断运算次数是否等于11,如果是,则完成加解密数据,执行步骤(7)的操作;否则,未完成加解密数据,运算次数加I,执行步骤(4)的操作; (7)输出结果 输出模块接收来自加解密模块运算的结果,在控制模块的控制下,选择输出加密结果或者解密结果。
8.根据权利要求7所述的基于FPGA的超高速AES处理方法,其特征在于,所述步骤(I)中查找列向量表的数据按照以下步骤获得:第一步,将查找列向量表中数据的计算次数设定为I; 第二步,从字节替换表中读出与计算次数对应的数据,将读出的数据分别与
τ、
τ、
τ、
τ 相乘获得四个数据,再将获得的四个数据分别存储到查找向量表1、查找向量表2、查找向量表3、查找向量表4中与计算次数对应的存储空间; 第三步,判断查找列向量表中数据的计算次数是否等于256,如果是,则完成了四个查找向量表数据的计算;否则,计算次数加1,执行第二步。
9.根据权利要求7所述的基于FPGA的超高速AES处理方法,其特征在于,所述步骤(I)中查找逆列向量表的数据按照以下步骤获得: 第一步,将查找逆列向量表中数据的计算次数设定为I ; 第二步,从逆字节替换表中读出与计算次数对应的数据,将读出的数据分别与
T、
T、
τ、
T 相乘获得四个数据,再将获得的四个数据分别存储到查找逆向量表1、查找逆向量表2、查找逆向量表3、查找逆向量表4与计算次数对应的存储空间; 第三步,判断查找逆列向量表中数据的计算次数是否等于256,如果是,则完成了四个查找逆向量表数据的计算;否则,计算次数加1,执行第二步。
10.根据权利要求7所述的基于FPGA的超高速AES处理方法,其特征在于,所述步骤(I)中解密模块的扩展密钥寄存器数 据按照以下步骤获得: 第一步,将解密模块的扩展密钥寄存器数据的计算次数设定为2 ; 第二步,从加密模块的与计算次数对应的扩展密钥寄存器中读出数据,将读出的数据与逆混合线性变换矩阵相乘获得I个128比特的数据,再将获得的数据存储到解密模块中与计算次数对应的扩展密钥寄存器; 第三步,判断解密模块的扩展密钥寄存器数据的计算次数是否等于10,如果是,执行第四步;否则,计算次数加1,执行第二步; 第四步,从加密模块的第I个、第11个扩展密钥寄存器中读出数据,将读出的数据直接分别存储到解密模块的第I个、第11个扩展密钥寄存器。
全文摘要
本发明公开了一种基于FPGA的超高速AES处理器及其实现方法,本发明的AES处理器包括接口存储区缓冲模块、控制模块、AES加解密模块、只读存储器查找表模块、寄存器模块、输出模块。本发明处理器实现方法的具体步骤为1初始化数据表;2、初始设置;3、接收数据;4、读取数据;5、选择数据的处理方式;6、判断加解密是否完成;7、结果输出。本发明主要解决现有技术AES处理器控制复杂,模块可移植性差、可靠性和安全性不高以及处理速度慢的问题;使用改进的算法和基于查找表的方法。本发明AES处理器的每级结构固定,控制逻辑简单,模块可移植性强,很适合在单片FPGA中实现,同时可以获得高速度、高精度的特性。
文档编号H04L9/06GK103152165SQ20131004703
公开日2013年6月12日 申请日期2013年1月25日 优先权日2013年1月25日
发明者刘景伟, 蔡鑫, 孙蓉, 李勇, 白宝明 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1