APP下载

基于A结E构S 共享和多级流水线的加密算法的研究

2012-08-22王群

科技视界 2012年2期
关键词:设计

王 群

(青岛科技大学信息学院 山东 青岛 266061)

2000年10月,美国国家标准技术局(NIST)选择了两位比利时研究者Daemen和Rijmen提出的Rijndael算法,即AES(高级加密标准)。它具有128bits的分组长度,三种可选的密钥长度,即128bits、196bits和 256bits。

AES可以抵抗所有设计中已知的攻击方法,具有较高的安全强度。文中阐述了AES算法的原理,并对其加解密模块进行优化,提出了一种基于结构共享和多级流水线的AES算法实现方案,并重点阐述了实现过程。

1 AES算法介绍

AES算法是一种迭代分组算法,采用128bits的分组长度,三种可选密钥长度128bits,192bits和256bits。对于不同的密钥长度,所需的加解密轮数不同。本文主要讨论分组长度和密钥长度128bits的情况。

整个加密过程包括11轮迭代。其中Round0只有Add Round Key操作。Round1-Round9具有完全相同的操作, 依次经过 SubBytes、Shift Rows、Mix Columns和Add Round Key四种操作。Round10只包括 SubBytes、Shift Rows和 Add Round Key 三种操作。解密过程是加密过程的逆过程。关于AES算法的详细描述见参考文献[1]。

2 加解密模块的结构共享

2.1 字节变换(SubBytes)

当前实现字节变化的方法有两种:一是有限域运算的方法;一是查找表的方法。前者运算复杂,后者容易实现,并且运行速度更快,但是硬件开销较大。考虑到可以利用FPGA自带的Block RAM资源,在设计中采用了查找表的实现方式。

如果将用于加密的Sbox表和用于解密的Inverse Sbox表同时存放在FPGA的Block RAM中,会造成RAM资源的大量消耗。为降低硬件资源的消耗,设计中采用重新配置的方法。加密时一次性加载16个Sbox表,而在解密时,对存放这些Sbox表的RAM重新写入Inverse Sbox表的数据。

2.2 行移位(Shift Rows)

本文采用128bits并行算法,行移位变换可按照移位的方向和字节数连线,几乎不占用硬件资源和产生延时,然后通过选通器选择正向或逆向行移位变换。……

登录APP查看全文

猜你喜欢

设计
二十四节气在平面广告设计中的应用
何为设计的守护之道?
《丰收的喜悦展示设计》
基于PWM的伺服控制系统设计
基于89C52的32只三色LED摇摇棒设计
基于ICL8038的波形发生器仿真设计
瞒天过海——仿生设计萌到家
设计秀
有种设计叫而专
从平面设计到“设计健康”