一种用于加密解密的方法和处理器技术

技术编号:15706395 阅读:437 留言:0更新日期:2017-06-26 19:28
本发明专利技术实施例公开的用于加密解密的方法和处理器,涉及加密解密技术,有效减少AES在FPGA的实现中占用的逻辑单元数。把输入数据存放在输入数据寄存器中,更新数据存储地址addr=addr1+addr8;如循环计数器小于该指令中的循环计数,变址寄存器和循环计数器分别加一,然后转移到addr8指定的指令地址,循环计数器置0,实现0到15范围内的循环操作;在进行寄存器写操作的同时把该寄存器原有数据保留到另一个寄存器,把存储器到寄存器的读取操作和该寄存器到另一寄存器的写操作组合在同一条指令中,用6条指令实现一个16次循环的程序块,用于加密解密。

Method and processor for encryption and decryption

The embodiment of the invention discloses a method and a processor used for encryption and decryption, relating to encryption and decryption technology, and effectively reducing the number of logical units occupied by AES in the implementation of FPGA. The input data stored in the data input register, update the data memory address addr = addr1+addr8; if the cycle counter is less than the instruction cycle count, index registers and the cycle counter respectively plus one, and then transferred to addr8 specifies the address of the instruction, cycle counting device 0, recycling operations 0 to 15 range; the original data retention register to another register in the register and write operation, the memory to a register read operation and the register to register write operations in the same instructions, 6 instructions to achieve a 16 cycle block, used for encryption and decryption.

【技术实现步骤摘要】
一种用于加密解密的方法和处理器
本专利技术涉及加密解密
,尤其涉及一种用于加密解密的方法和处理器。
技术介绍
AES是目前流行程度比较高,可靠性比较好的一种加密解密算法。该算法在1998年提出,很快被定美国国家标准与技术研究所(NIST)定为高级加密标准,2006年之后在国际上广泛流行。AES算法的秘钥分成128位,192位和256位三种。大众产品普遍采用128位版本,最高机密可用256位版本。在实现技术方面,AES算法分成采用软件实现,FPGA实现以及ASIC实现。软件实现价格低廉灵活高,ASIC实现代价高性能也高。FPGA实现是两者之间的折中。目前,很多嵌入式系统中都包含了FPGA,因此适用于FPGA的AES实现有广泛的需求。AES在硬件中的直接实现方案占用较大的面积。FPGA资源有限,FPGA的价格同FPGA中的资源量直接关联,资源越多价格越贵。因此,怎样减少面积是AES的FPGA实现所要解决的一个重要问题。AES算法中包含了大量的并行操作。在硬件实现中,并行操作增加了面积。因此,减少AES面积的一个重要途径就是把并行操作通过顺序方式实现。虽然这样做会降低算法的速度,但是在很多情况下,顺序AES算法也足以满足应用的需要。文献[1,2]采用一种把128位数据路径转变成32位数据路径的技术。这类变换能够把某些子模块的面积减少到原来的四分之一。为了进一步减少面积,文献[3,4]通过引入专用处理器实现了8位数据路径的AES实现。但这两篇文献并没有公布他们所涉及的处理器指令集以及处理器的实现细节。从文献介绍来看,某些实现技术并没有采用面积最小的实现方案。比如,在处理器中引入对子程序调用的支持,这一方案需要多占用一定的FPGA面积。
技术实现思路
本专利技术的目的在于克服现有技术不足,提供了一种用于加密解密的方法和处理器,能够有效的减少AES在FPGA的实现中所占用的逻辑单元数。本专利技术的技术解决方案:一方面,一种用于加密解密的处理器,包括:秘钥生成模块和加密、解密模块;其中,所述秘钥生成模块,用于通过第一指令启动端口数据读入操作,并设置数据存储器ram的写操作使能为1,并把输入数据存放在数据存储器ram的输入数据寄存器中,以便下一时钟周期把输入数据读入数据存储器,所述第一指令用指令中的地址addr8域和变址寄存器addr1更新数据存储地址:addr=addr1+addr8;第二指令在循环计数器cnt2小于该指令中的循环计数cntv的条件下把变址寄存器addr1和循环计数器cnt2分别加一,然后转移到addr8指定的指令地址,循环计数器cnt2置0,所述第一指令和所述第二指令相结合实现0到15范围内的循环操作;所述加密、解密模块,用于AES加密和解密过程中,在进行寄存器写操作的同时把该寄存器原有数据保留到另一个寄存器,把存储器到寄存器的读取操作和该寄存器到另一寄存器的写操作组合在同一条指令中,以实现两个并行的寄存器数据转移操作;用6条指令实现一个16次循环的程序块,该程序块能够完成数据存储区中的待加密文本数据同密钥做XOR操作并且把结果放回数据存储区,用以实现AES算法中的AddRoundkey操作,以上所涉及指令的结构包括操作符op、循环计数cntv和地址addr8。进一步可选的,所述在进行寄存器写操作的同时把该寄存器原有数据保留到另一个寄存器为:第三指令在cntv=0时把addr1同addr8相加,结果放入addr,用于把数据存储器ram的数据ram[addr]读入到输出数据缓存寄存器mem_out中,同时,把输出数据缓存寄存器mem_out中原先的数据存入通用数据寄存器reg8。进一步可选的,所述把存储器到寄存器的读取操作和该寄存器到另一寄存器的写操作组合在同一条指令中为:在指令2中实现reg8<-mem_out和addr<-addr1+addr8两个操作:后一操作将把ram[addr]读入到输出数据缓存寄存器mem_out中,指令2的一个应用是在密钥扩展中从数据存储器中读取前一次存放的密钥数据。进一步可选的,所述用6条指令实现一个16次循环的程序块为:指令A和指令B进行循环的初始化,循环终结指令9做循环结束判断并且在未结束的情况下将控制跳转到指令B的下一条指令,循环次数通过指令C的cntv域设定为16进制的F,表示向后跳转15次,循环体总计执行16次,文本数据和密钥数据通过指令D的两次调用读取,指令D的第一次调用读取文本数据到输出数据缓存寄存器mem_out,第二次调用读取密钥数据到输出数据缓存寄存器mem_out,同时把原先输出数据缓存寄存器mem_out中数据转储到通用数据寄存器reg8,指令E把输出数据缓存寄存器mem_out和通用数据寄存器reg8两个寄存器的内容做XOR操作并保存在写入数据缓存寄存器mem_in,同时把写入地址保存在addr,下一个时钟上升沿将把数据写入数据存储器,在这一过程中,指令D和指令E均同时执行多项并行操作。进一步可选的,所述加密、解密模块在Galois乘二操作的基础上实现其他常数乘法时,通过自然数的二进制表示方式把任意的常数乘法操作转换为乘二操作和Galois加法操作。另一方面、一种用于加密解密的方法,包括以下步骤;秘钥生成模块,通过第一指令启动端口数据读入操作,并设置数据存储器ram的写操作使能为1,并把输入数据存放在数据存储器ram的输入数据寄存器中,以便下一时钟周期把输入数据读入数据存储器,所述第一指令用指令中的地址addr8域和变址寄存器addr1更新数据存储地址:addr=addr1+addr8;第二指令在计数器cnt2小于该指令中的循环计数cntv的条件下把变址寄存器addr1和循环计数器cnt2分别加一,然后转移到addr8指定的指令地址,循环计数器cnt2置0,所述第二指令同指令0相结合实现0到15范围内的循环操作;加密、解密模块在AES加密和解密过程中,在进行寄存器写操作的同时把该寄存器原有数据保留到另一个寄存器,把存储器到寄存器的读取操作和该寄存器到另一寄存器的写操作组合在同一条指令中,以实现两个并行的寄存器数据转移操作;用6条指令实现一个16次循环的程序块,该程序块能够完成数据存储区中的待加密文本数据同密钥做XOR操作并且把结果放回数据存储区,用以实现AES算法中的AddRoundkey操作。本专利技术实施例提供的一种用于加密解密的方法和处理器,该处理器包括秘钥生成模块,从输入秘钥出发,按照AES算法生成内部秘钥;加密模块,在秘钥生成之后,实现AES加密;解密模块,在秘钥生成之后,实现AES解密。在完成AES加密和解密功能的情况下,对处理器的架构和指令集进行优化,采用较少的指令数,并且使每条指令结构简单;同时,为了保证一定的性能,每条指令执行尽可能多的操作。附图说明所包括的附图用来提供对本专利技术实施例的进一步的理解,其构成了说明书的一部分,用于例示本专利技术的实施例,并与文字描述一起来阐释本专利技术的原理。显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的一种用于加密解密的处理器结构示意图;本文档来自技高网
...
一种用于加密解密的方法和处理器

【技术保护点】
一种用于加密解密的处理器,其特征在于,包括:秘钥生成模块和加密、解密模块;其中,所述秘钥生成模块,用于通过第一指令启动端口数据读入操作,并设置数据存储器ram的写操作使能为1,并把输入数据存放在数据存储器ram的输入数据寄存器中,以便下一时钟周期把输入数据读入数据存储器,所述第一指令用指令中的地址addr8域和变址寄存器addr1更新数据存储地址:addr=addr1+addr8;第二指令在循环计数器cnt2小于该指令中的循环计数cntv的条件下把变址寄存器addr1和循环计数器cnt2分别加一,然后转移到addr8指定的指令地址,循环计数器cnt2置0,所述第一指令和所述第二指令相结合实现0到15范围内的循环操作;所述加密、解密模块,用于AES加密和解密过程中,在进行寄存器写操作的同时把该寄存器原有数据保留到另一个寄存器,把存储器到寄存器的读取操作和该寄存器到另一寄存器的写操作组合在同一条指令中,以实现两个并行的寄存器数据转移操作;用6条指令实现一个16次循环的程序块,该程序块能够完成数据存储区中的待加密文本数据同密钥做XOR操作并且把结果放回数据存储区,用以实现AES算法中的Add Roundkey操作,以上所涉及指令的结构包括操作符op、循环计数cntv和地址addr8。...

【技术特征摘要】
1.一种用于加密解密的处理器,其特征在于,包括:秘钥生成模块和加密、解密模块;其中,所述秘钥生成模块,用于通过第一指令启动端口数据读入操作,并设置数据存储器ram的写操作使能为1,并把输入数据存放在数据存储器ram的输入数据寄存器中,以便下一时钟周期把输入数据读入数据存储器,所述第一指令用指令中的地址addr8域和变址寄存器addr1更新数据存储地址:addr=addr1+addr8;第二指令在循环计数器cnt2小于该指令中的循环计数cntv的条件下把变址寄存器addr1和循环计数器cnt2分别加一,然后转移到addr8指定的指令地址,循环计数器cnt2置0,所述第一指令和所述第二指令相结合实现0到15范围内的循环操作;所述加密、解密模块,用于AES加密和解密过程中,在进行寄存器写操作的同时把该寄存器原有数据保留到另一个寄存器,把存储器到寄存器的读取操作和该寄存器到另一寄存器的写操作组合在同一条指令中,以实现两个并行的寄存器数据转移操作;用6条指令实现一个16次循环的程序块,该程序块能够完成数据存储区中的待加密文本数据同密钥做XOR操作并且把结果放回数据存储区,用以实现AES算法中的AddRoundkey操作,以上所涉及指令的结构包括操作符op、循环计数cntv和地址addr8。2.根据权利要求1所述的处理器,其特征在于,所述在进行寄存器写操作的同时把该寄存器原有数据保留到另一个寄存器为:第三指令在cntv=0时把addr1同addr8相加,结果放入addr,用于把数据存储器ram的数据ram[addr]读入到输出数据缓存寄存器mem_out中,同时,把输出数据缓存寄存器mem_out中原先的数据存入通用数据寄存器reg8。3.根据权利要求2所述的处理器,其特征在于,所述把存储器到寄存器的读取操作和该寄存器到另一寄存器的写操作组合在同一条指令中为:在指令中实现reg8<-mem_out和addr<-addr1+addr8两个操作:后一操作将把ram[addr]读入到输出数据缓存寄存器mem_out中,该指令的一个应用是在密钥扩展中从数据存储器中读取前一次存放的密钥数据。4.根据权利要求3所述的处理器,其特征在于,所述用6条指令实现一个16次循环的程序块...

【专利技术属性】
技术研发人员:陈钢闫昆李娜魏伟波魏鑫张志刚王杰王颖舒毅吕宗辉于润泽
申请(专利权)人:北京京航计算通讯研究所
类型:发明
国别省市:北京,11

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

1