关于在FPGA上实现AES算法的笔记

针对 key 长度为 128 bits 的AES算法。

1. AES算法要做10轮运算,最基本的实现实现用11cycles。

2. 每轮加密要用到16个Sbox,每个Sbox要占用1个2048 bit 的ROM。key expansion要用4个Sbox。如果on-the-fly 地进行,那么一共要20个Sbox;如果提前做好key expansion,那么需要16个Sbox外加1408bits RAM来存放Subkey。

3. 在Altera FPGA上每个Sbox要占用一个ESB或EAB,在Xilinx FPGA上,每两个Sbox占用一个Block RAM(因为每个Block RAM都是dual-port的)。那么理论上,AES encryption 可以用一片Spartan-II XC2S100(10 Block RAMs)或者一片FLEX EPF10K200S (24 EABs)实现。

4.为了能在ACEX 1K30这种便宜的芯片(6 EABs)上实现,要把一轮分解为4步来做,这样只用4个Sbox,连同存放Subkey,一共用5 EABs。当然,完成一个128-bit block加密就需要41 cycles,吞吐量也降为1/4。

你可能感兴趣的:(算法,Flex)