发明名称 基于FPGA的超高速AES处理器及其实现方法
摘要 本发明公开了一种基于FPGA的超高速AES处理器及其实现方法,本发明的AES处理器包括接口存储区缓冲模块、控制模块、AES加解密模块、只读存储器查找表模块、寄存器模块、输出模块。本发明处理器实现方法的具体步骤为:1初始化数据表;2、初始设置;3、接收数据;4、读取数据;5、选择数据的处理方式;6、判断加解密是否完成;7、结果输出。本发明主要解决现有技术AES处理器控制复杂,模块可移植性差、可靠性和安全性不高以及处理速度慢的问题;使用改进的算法和基于查找表的方法。本发明AES处理器的每级结构固定,控制逻辑简单,模块可移植性强,很适合在单片FPGA中实现,同时可以获得高速度、高精度的特性。
申请公布号 CN103152165B 申请公布日期 2016.01.20
申请号 CN201310047034.1 申请日期 2013.01.25
申请人 西安电子科技大学 发明人 刘景伟;蔡鑫;孙蓉;李勇;白宝明
分类号 H04L9/06(2006.01)I 主分类号 H04L9/06(2006.01)I
代理机构 陕西电子工业专利中心 61205 代理人 田文英;王品华
主权项 一种基于FPGA的超高速AES处理器实现方法,包括如下步骤:(1)初始化数据表依据字节替换表、逆字节替换表和加密模块的扩展密钥寄存器的数据,计算查找列向量表、查找逆列向量表以及解密模块的扩展密钥寄存器中的数据;所述查找列向量表的数据按照以下步骤获得:第一步,将查找列向量表中数据的计算次数设定为1;第二步,从字节替换表中读出与计算次数对应的数据,将读出的数据分别与[02,01,01,03]T、[03,02,01,01]T、[01,03,02,01]T、[01,01,03,02]T相乘获得四个数据,再将获得的四个数据分别存储到查找列向量表1、查找列向量表2、查找列向量表3、查找列向量表4中与计算次数对应的存储空间;第三步,判断查找列向量表中数据的计算次数是否等于256,如果是,则完成了四个查找列向量表数据的计算;否则,计算次数加1,执行第二步;所述查找逆列向量表的数据按照以下步骤获得:第一步,将逆列向量表中数据的计算次数设定为1;第二步,从逆字节替换表中读出与计算次数对应的数据,将读出的数据分别与[0E,09,0D,0B]T、[0B,0E,09,0D]T、[0D,0B,0E,09]T、[09,0D,0B,0E]T相乘获得四个数据,再将获得的四个数据分别存储到查找逆列向量表1、查找逆列向量表2、查找逆列向量表3、查找逆列向量表4与计算次数对应的存储空间;第三步,判断查找逆列向量表中数据的计算次数是否等于256,如果是,则完成了四个查找逆列向量表数据的计算;否则,计算次数加1,执行第二步;所述解密模块的扩展密钥寄存器中的数据按照以下步骤获得:第一步,将解密模块的扩展密钥寄存器数据的计算次数设定为2;第二步,从加密模块的与计算次数对应的扩展密钥寄存器中读出数据,将读出的数据与逆混合线性变换矩阵相乘获得1个128比特的数据,再将获得的数据存储到解密模块中与计算次数对应的扩展密钥寄存器;第三步,判断解密模块的扩展密钥寄存器数据的计算次数是否等于10,如果是,执行第四步;否则,计算次数加1,执行第二步;第四步,从加密模块的第1个、第11个扩展密钥寄存器中读出数据,将读出的数据直接分别存储到解密模块的第1个、第11个扩展密钥寄存器;(2)初始设置用户根据处理数据的速率计算出系统工作的时钟频率,把这个频率的时钟连接到处理器的时钟端口,给系统一个复位信号使得处理器处于复位状态;(3)接收数据将拟加解密的输入数据序列暂存到接口存储区缓冲模块,在控制模块的控制下,第一轮运算单元接收接口存储区缓冲模块输出的数据序列;将加解密模块的运算次数设定为1,完成初始化操作;(4)读取数据在控制模块的控制下,将加密模块中与运算次数对应的扩展密钥寄存器数据和解密模块中与运算次数对应的扩展密钥寄存器数据读出来;(5)选择数据的处理方式5a)判断运算次数是否等于1,如果是,执行步骤5b)的操作,否则,执行步骤5c)的操作;5b)从加密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与接口存储区缓冲模块输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算结果;从解密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与接口存储区缓冲模块输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算结果;5c)从加密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与与运算次数对应的查找列向量表输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算的结果;从解密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与与运算次数对应的查找逆列向量表输出的数据同时送给与运算次数对应的运算单元,得到解密模块中与运算次数对应的运算的结果;(6)判断加解密是否完成判断运算次数是否等于11,如果是,则完成加解密数据,执行步骤(7)的操作;否则,未完成加解密数据,运算次数加1,执行步骤(4)的操作;(7)输出结果输出模块接收来自加解密模块运算的结果,在控制模块的控制下,选择输出加密结果或者解密结果。
地址 710071 陕西省西安市太白南路2号