<<

Compact and Efficient /Decryption Module for FPGA Implementation of the AES Rijndael Very Well Suited for Small Embedded Applications

Gael¨ Rouvroy, Franc¸ois-Xavier Standaert, Jean-Jacques Quisquater and Jean-Didier Legat

UCL Crypto Group Laboratoire de Microelectr´ onique Universite´ catholique de Louvain Place du Levant, 3, B-1348 Louvain-la-Neuve, Belgium rouvroy,standaert,quisquater,[email protected]

Abstract systems.

Hardware implementations of the Advanced En- 1. Introduction cryption Standard (AES) Rijndael algorithm have re- cently been the object of an intensive evaluation. Sev- In October 2000, NIST (National Institute of Stan- eral papers describe efficient architectures for ASICs1 dards and Technology) selected Rijndael [4] as the new and FPGAs2. In this context, the highest effort was de- Advanced Encryption Standard (AES), in order to re- voted to high throughput (up to 20 Gbps) encryption- place the old (DES). The only designs, fewer works studied low area encryption- selection process included performance evaluation on only architectures and only a few papers have in- both software and hardware platforms and many hard- vestigated low area encryption/decryption structures. ware architectures were proposed. However, most of However, in practice, only a few applications need these architectures simply transcript the algorithm into throughput up to 20 Gbps while flexible and low cost hardware designs, without relevant optimizations and encryption/decryption solutions are needed to protect tradeoffs. Moreover, the throughput and area con- sensible data, especially for embedded hardware ap- straints considered are often unrealistic as shown by plications. This paper proposes an efficient solution the recently published results. to combine Rijndael encryption and decryption in one First, many very high-speed (≥ 10 Gbps) cipher FPGA design, with a strong focus on low area con- hardware implementations have been published in the straints. The proposed design fits into the smallest Xil- literature. These designs consists of FPGA imple- inx FPGAs3, deals with data streams of 208 Mbps, mentations of a complete unrolled and pipelined ci- uses 163 slices and 3 RAM blocks and improves by pher. The best such DES implementation is an encryp- 68% the best-known similar designs in terms of ra- tor/decryptor based on a new mathematical descrip- tio T hroughput/Area. We also propose implemen- tion. It can achieve data rates of 21.3 Gbps in Virtex-II tations in other FPGA Families (Xilinx Virtex-II) and FPGAs [15]. The encryption/decryption mode can be comparisons with similar DES, triple-DES and AES changed on a cycle-by-cycle basis with no dead cy- implementations. cles. For the AES, the best similar RAM-based solu- tion unrolls the 10 cipher rounds and pipelines them Keywords: , AES, DES, FPGA, com- in an encryption-only process. This implementation in pact encryption/decryption implementation, embedded a Virtex-E FPGA produces a throughput of 11.8 Gbps 1ASIC: Application Specific Integrated Circuit. [17, 18] and allows the to be changed at every cy- 2FPGA: Field Programmable Gate Array. cle. This DES implementation reaches higher through- 3Xilinx Spartan-3 XC3S50. put than the corresponding AES implementation.

1 However, these speed efficient designs are not al- a 4-input LUT, 16 bits of distributed SelectRAM ways relevant solutions. Many applications require memory, or a 16-bit variable-tap shift register element. smaller throughput (wireless communication, digital The output from the function generator in each slice cinema, pay TV, ...). Sequential designs based on a 1- drives both the slice output and the D input of the round loop may be judicious and attractive in terms of storage element. hardware cost for many embedded applications. Sev- eral such implementations have been published in the literature. For DES and triple-DES designs, the most efficient solution [16] encrypts/decrypts in 18 cycles with a fresh key. For AES, the best design based on 1-round loop [17, 18] produces a data rate of 1450 Mbps (Virtex-E) using 542 slices and 10 RAM blocks, but it does not support the decryption mode. Another efficient circuit [20] proposes a compact architecture that combines encryption and decryption. It executes 1 round in four cycles and produces a throughput of 166 Mbps (Spartan-II) using 222 slices and 3 RAM blocks. The design proposed in this paper is also based on a quarter of round loop implementation and improves by 68% (in term of ratio T hroughput/Area) the de- Figure 1. The Spartan3 CLB. sign detailed in [20]. We investigate a good combina- tion of encryption/decryption and place a strong focus on a very low area constraints. The resulting design fits in the smallest Xilinx devices (e.g. the Spartan- 3 XC3S50 and Virtex-II XC2V40), achieves a data stream of 208 Mbps (using 163 slices, 3 RAM blocks) and 358 Mbps (using 146 slices, 3 RAM blocks), re- spectively in Spartan-3 and Virtex-II devices. It at- tempts to create a bridge between throughput and cost requirements for embedded applications. The paper is organized as follows: section 2 de- scribes the smallest Spartan-3 and Virtex-II devices; the mathematical description of Rijndael is in sec- tion 3; section 4 describes our sequential AES encryp- tor/decryptor; finally, section 5 concludes this paper. Figure 2. The Spartan3 slice.

2. Spartan-3 and CLB description: the A specific feature of the slice is the 16-bit shift reg- XC3S50 component ister configuration. The write operation is synchronous with a clock input and an optional clock enable. A dy- The Spartan-3 configurable logic blocks (CLBs) are namic read access is performed through the 4-bit ad- organized in an array and are used to build combinato- dress bus. rial and synchronous logic designs. Each CLB element Spartan-3 devices also incorporate 18-Kbit RAM is tied to a switch matrix to access the general rout- blocks. These ones complement the distributed Selec- ing matrix, as shown in Figure 1. A CLB element in- tRAM resources provided by the CLBs. Each RAM cludes 4 similar slices, with fast local feedback within block is an 18-Kbit true dual-port RAM with two inde- the CLB. The four slices are split into two columns of pendently clocked and independently controlled syn- two slices with two independent carry logic chains and chronous ports that access a common storage area. one common shift chain. Both ports are functionally identical. Each slice includes two 4-input function genera- Virtex-II devices exploit the same architecture as tors, carry logic, arithmetic logic gates, multiplexers Spartan-3. and two storage elements. As shown in Figure 2, The XC3S50 and XC2V40 components are, respec- each 4-input function generator is programmable as tively, the smallest Spartan-3 and Virtex-II compo-

2 nents. Table 1 illustrates the logic resources available 2. An affine transform over GF (2). in both components. The SubByte transformation applied to the State can Component XC3S50 XC2V40 be represented as follows: CLB array: row × col. 16 × 12 8 × 8 SB(Statei) = Number of slices 768 256 i i i i SB(d15) SB(d11) SB(d7) SB(d3) Number of flip-flops 1, 536 512 i i i i  SB(d14) SB(d10) SB(d6) SB(d2)  Number of LUTs 1, 536 512 i i i i SB(d13) SB(d9) SB(d5) SB(d1) Max dist. selectRAM  i i i i  or shift reg. (bits) 24, 576 8, 192  SB(d12) SB(d8) SB(d4) SB(d0)  Number of RAM blocks 4 4 The inverse transformation is defined InvSubByte (ISB). Table 1. Resources available in XC3S50 ShiftRow (SR) performs a cyclical left shift on and XC2V40. the last three rows of the State. The second row is shifted of one byte, the third row is shifted of two bytes and the fourth row is shifted of three bytes. Thus, the 3. The AES algorithm ShiftRow transformation proceeds as follows: SR(SB(Statei)) = i i i i The Advanced Encryption Standard (AES, Rijn- SB(d15) SB(d11) SB(d7) SB(d3) i i i i dael) algorithm is a symmetric that pro-  SB(d10) SB(d6) SB(d2) SB(d14)  i i i i cesses data block of 128, 192 and 256 bits using, re- SB(d5) SB(d1) SB(d13) SB(d9)  i i i i  spectively, keys of the same length. In this paper,  SB(d0) SB(d12) SB(d8) SB(d4)  only the 128 bit encryption version (AES-128) is con- The inverse ShiftRow operation (InvShiftRow sidered. The 128-bit data block and key are consid- (ISR)) is trivial. ered as a byte array, respectively called State and MixColumn (MC) operates separately on every RoundKey, with four rows and four columns. th column of the State. A column is considered as a Let a 128-bit data block in the i round be defined 8 4 polynomial over GF (2 ) and multiplied modulo x +1 as: with the fixed polynomial c(x): i i i i i i i i 0 0 0 0 0 0 0 0 data block = d15|d14|d13|d12|d11|d10|d9| c(x) = 03 x3 + 01 x2 + 01 x + 02 i i i i i i i i d8|d7|d6|d5|d4|d3|d2|d1|d0 As an illustration, the multiplication by 0020 corre- i where d15 represents the most significant byte of the sponds to a multiplication by two, modulo the irre- 8 4 3 data block of the round i. The corresponding Statei ductible polynomial m(x) = x + x + x + x + 1. is: This can be represented as a matrix multiplication: i i i i i i d15 d11 d7 d3 R = MC(SR(SB(State ))) = i i i i 0 0 0 0 0 0 0 0 i  d14 d10 d6 d2  02 03 01 01 State = i i i i 0 0 0 0 0 0 0 0 d13 d9 d5 d1  01 02 03 01   i i i i  0 0 0 0 0 0 0 0 ⊗  d12 d8 d4 d0  01 01 02 03  0 0 0 0 0 0 0 0   03 01 01 02  i i i i AES-128 consists of ten rounds. One AES encryp- SB(d15) SB(d11) SB(d7) SB(d3) i i i i tion round includes four transformations: SubByte,  SB(d10) SB(d6) SB(d2) SB(d14)  i i i i ShiftRow, MixColumn and AddRoundKey. The SB(d5) SB(d1) SB(d13) SB(d9)  i i i i  first and last rounds differ from the other ones. Indeed  SB(d0) SB(d12) SB(d8) SB(d4)  there is an additional AddRoundKey transformation To achieve the inverse operation (InvMixColumn at the beginning of the first round and no MixColumn (IMC)), every column is transformed by multiplying transformation is performed in the last round. This is it with a specific multiplication polynomial d(x), de- done to facilitate the decryption process. fined by SubByte (SB) is a non-linear byte substitution. It 0 0 operates with every byte of the State separately. The c(x) ⊗ d(x) = 01 substitution box (S-box) is invertible and consists of 0 0 3 0 0 2 0 0 0 0 d(x) = 0B x + 0D x + 09 x + 0E two transformations:

8 AddRoundKey (AK) performs an addition (bit- 1. Multiplicative inverse in GF (2 ). The zero ele- i i wise XOR) of the State with the RoundKey : ment is mapped to itself.

3 i i i i R15 R11 R7 R3 i i i i 4.1. Implementation of ShiftRow and i  R14 R10 R6 R2  AK(R ) = i i i i ⊕ InvShiftRow operations R13 R9 R5 R1  i i i i   R12 R8 R4 R0  i i i i rk15 rk11 rk7 rk3 i i i i i  rk14 rk10 rk6 rk2  In our design, the way to access the State , i i i i rk13 rk9 rk5 rk1 for the first quarter of the round, is described  i i i i  i i i i  rk12 rk8 rk4 rk0  in Figure 3. We read d15,d10,d5,d0 in paral- lel from the input memory, and execute SubByte, The inverse operation (InvAddRoundKey MixColumn and AddRoundKey. Then we write re- (IAK)) is trivial. i+1 i+1 i+1 i+1 sults d15 ,d14 ,d13 , d12 to a different output mem- RoundKeys are calculated with the ory. The second, third, and fourth quarters of the for every AddRoundKey transformation. In AES- round are managed in a similar manner, depending on 0 128, the original cipher key is the first RoundKey ShiftRow. (rk0) used in the additional AddRoundKey at the beginning of the first round. RoundKeyi, where The best FPGA solution to implement such si- 0 < i ≤ 10, is calculated from the previous multaneous read and write memory accesses is pro- RoundKeyi−1. Let p(j) (0 ≤ j ≤ 3) be the column posed in [20]. The solution is based on a shift reg- j of the RoundKeyi−1 and let w(j) be the column ister design. As described above, all calculations j of the RoundKeyi. Then the new RoundKeyi is from the AddRoundKey are written into adjacent lo- cations of the output memory in consecutive cycles. calculated as follows: i+1 i+1 i+1 i+1 We store first d15 ,d14 ,d13 , d12 in parallel, then i i i i i +1 +1 +1 +1 w(0) = p(0) ⊕ (Rot(Sub(p(3))) ⊕ rcon , d11 ,d10 ,d9 , d8 in parallel, and so on. Therefore we can store the consecutive round results into shift w(1) = p(1) ⊕ w(0) registers (one shift register per row of the State, four w(2) = p(2) ⊕ w(1) shift registers for four rows). Xilinx FPGAs propose w(3) = p(3) ⊕ w(2) a very space efficient solution to achieve a 16-bit shift register with a dynamic variable access. Four slices Rot is a function that takes a four byte input can implement an 8-bit wide, 16-bit long shift register. [a0; a1; a2; a3] and rotates them as [a1; a2; a3; a0]. The four dynamic variable accesses are used to read The function Sub applies the substitution box (S-box) the input memory content at correct positions into the to four bytes. The round constant rconi contains val- rows. Four 8-bit wide shift register are needed, which [(0020)i−1;0 000;0 000;0 000]. corresponds to 16 slices.

i i i i d15 d11 d7 d3 4. Our sequential AES implementations i i i i  d14 d10 d6 d2  i i i i d13 d9 d5 d1  i i i i  Some designs propose an implementation based on  d12 d8 d4 d0  one complete round, and iteratively loop data through ⇓ this round until the entire encryption or decryption is achieved. Only one Statei is processed in one cy- SB + MC + AK cle. These designs are suited for feedback and non- ⇓ i+1 i+1 i+1 i+1 feedback modes of operation. d15 d11 d7 d3  i+1 i+1 i+1 i+1  As mentioned in [20], the AES round offers various d14 d10 d6 d2 i+1 i+1 i+1 i+1 opportunities of parallelism. The round is composed of  d13 d9 d5 d1  16 S-boxes and four 32-bit MixColumn operations,  i+1 i+1 i+1 i+1   d12 d8 d4 d0  working on independent data. Only ShiftRow needs to with the entire 128-bit State. Figure 3. Memory accesses involved in Based on this observation, we propose an imple- the first calculation step of the round i. mentation using four S-boxes and one MixColumn in order to compact the design. This decreases the area by a factor of four but increases the time of one round The InvShiftRow operation can be done using the to four cycles. In practice, only the time-space tradeoff same shift registers modifying the way to access the is modified. A similar approach was proposed in [20]. input memory.

4 4.2. Implementation of SubByte/MixColumn and InvSubbyte/InvMixColumn SB(a)  SB(a)  T3(a) = 0 0  03 • SB(a)  Compared to the paper [20], we propose a more  0 0  efficient combination of SubByte and MixColumn  02 • SB(a)  operations, i.e. we use less resources than separated The combination of SubByte followed by block implementations. Our solution takes advantage MixColumn can be expressed as: of specific features of the new Xilinx devices and per- 4 i fectly fits into the Spartan-3 or Virtex-II technologies . e15  i  The Spartan-3 and Virtex-II FPGAs have both dedi- e14 i i i i i = T0(d15) ⊕ T0(d10) ⊕ T0(d5) ⊕ T0(d0) 5 e13 cated 18-Kbit dual-port RAM blocks , that can be used  i   12  to store tables for the combination of SubByte and e MixColumn. The size of one Ti table is 8 Kbits for encryption. As also mentioned in [4], the consecutive SubByte The corresponding similar table for decryption also and MixColumn operations on the first quarter of the takes 8 Kbits (IT0 to IT3). It is therefore possible i round can be expressed as e15..12: to achieve the complete SubByte/MixColumn and

i InvSubByte/InvMicolumn operations using two e15 i dual-port 18-Kbit RAM blocks.  e14  i = The proposed solution significantly reduces the re- e13  i  sources used in [20].  e12  0 0 0 0 0 0 0 0 i 02 03 01 01 SB(d15) 0 0 0 0 0 0 0 0 i  01 02 03 01   SB(d10)  4.3. Encryption/Decryption design choices 0 0 0 0 0 0 0 0 ⊗ i 01 01 02 03 SB(d5)  0 0 0 0 0 0 0 0   i   03 01 01 02   SB(d0)  One of the inconveniences of AES comes from the fact that the AddRoundKey is executed after which is also equivalent to: MixColumn in the case of encryption and before

0 0 0 0 InvMixColumn in the case of decryption. Such en- 02 03 0 0 0 0 cryption/decryption implementation will therefore re-  01  i  02  i 0 0 ⊗ SB(d ) ⊕ 0 0 ⊗ SB(d ) ⊕ quire additional switching logic to select appropriate 01  15  01  10   0 0   0 0  data paths, which can also affects the time perfor-  03   01  0 0 0 0 mance. The paper [20] mentions this problem but 01 01 0 0 0 0 chooses to design like that anyway.  03  i  01  i 0 0 ⊗ SB(d ) ⊕ 0 0 ⊗ SB(d ) 02 5 03 0 AES decryption algorithm nevertheless allows  0 0     0 0     01   02  InvMixColumn and AddRoundKey to be re- ordered if we perform an additional InvMixColumn If we define four tables (T0 to T3) with 256 4-byte data operation on most of the RoundKeys (except the first as: and the last RoundKeys). More details about such scheduling of operations can be found in [4, 5]. At 0 0 • 02 SB(a) first sight, InvMixColumn could seem to require  SB(a)  T0(a) = much more area than the switching logic. This is es- SB(a)  0 0  pecially true if the InvMixColumn of the round is  03 • SB(a)  InvSubByte 0 0 narrowly combined with the in RAM 03 • SB(a) blocks. Nevertheless, the subsection 4.4 proposes  0 0  02 • SB(a) a solution using very few additional resources but T1(a) =  SB(a)    some extra cycles to generate all inverse Roundkeys  SB(a)  (InvRoundKeys). Figure 4 summarizes our design SB(a) choices concerning the data path round.  0030 • SB(a)  T2(a) = 0 0  02 • SB(a)     SB(a) 

4It is not the case with Spartan-II. 5The Spartan-II has dedicated 4-Kbit dual-port RAM blocks.

5 CIPHER PLAINTEXT_IN tion process takes 48 cycles to generate the complete ENABLE_OUT 32 InvRoundKeys Reset_IN . Due to InvRoundKey0 and InvRoundKey10, ta- bles (T0 to T3) need to be changed. InvSubByte has

RoundKeyi to replace the duplicated SubByte. We define new 16- 32 Kbit tables (CT0 to CT3) combined with (IT0 to IT3). 4 X 8 CT0 is illustrated below as an example: 0 0 0 0 0 ...... 02 • SB(a) 0E • SB(a) SRL16  0 0 •  4 X 8 SB(a) 09 SB(a) ...... CT0(a) = 0 0 ISB(a) 0D • SB(a) 15  0 0 • 0 0 •  4 X 4  03 SB(a) 0B SB(a)  Rd_ROW1 Rd_ROW2 Rd_ROW3 32 Rd_ROW4

2 RAM blocks Rot T0...T3 MODE_DECR rconi or KEY_IN IT0...IT3

32 SRL3 32

Figure 4. Our AES data path round. 32

2 RAM blocks MODE_DECR

CT0...CT3

4.4. Implementation of the key schedule ISB SB 32

ISB+IMC The implementation of our AES key sched- F5 SB(RoundKeyi) ISB(SB(RoundKeyi)) ule is based on precomputing RoundKeys and RoundKeyi IMC(ISB(SB(RoundKeyi))) InvRoundKey in advance and storing them in ADDRA DIA DIB 32 K_RAM one RAM block. The difficult computation of the 1 RAM block 6 ADDRB RoundKeys or Reset_K_RAM InvRoundkeys on-the-fly completely justifies this InvRoundKeys approach. Our implementation of the key schedule is shown Figure 5. Our AES key schedule. in Figure 5. First, it computes 32-bits of all the RoundKeyi per clock cycle. The results are stored in one dual-port block RAM, thanks to the first port. This step takes 44 clock cycles. In the same time, we 4.5. Implementation and results of our com also store SB(RoundKeys) data in the same RAM, plete AES but using the other port. It corresponds to the first step of the calculation process of InvRoundKeys. i Our final AES design combines the data path part As mentioned in the subsection 4.3, InvRoundKey −i and the key schedule part. Since the key schedule is equals to IMC(RoundKey10 ), except for the first done with precomputation, this part does not work si- InvRoundKey0 and last InvRoundKey10, which multaneously with the encryption/decryption process. equal to respectively RoundKey10 and RoundKey0. It is therefore possible to share resources between both If we need decryption processes, a second step circuits. Both parts of the circuit were thought to per- has to be applied to SB(RoundKeys). There- fectly fuse together without additional slices7 and tri- fore, we start to calculate ISB(SB(RoundKey10)) state buffers. This allows reaching higher frequency and store it as InvRoundKey0. Then, we eval- than in [20]. The global design is shown in Figure 6. uate the result IMC(ISB(SB(RoundKey10−i))) We fused the key and plaintext inputs to one register. which equals to IMC(RoundKey10−i) and we store The input and output registers are packed into IOBs to it as InvRoundKey1..9. InvRoundKey10 is gen- improve the resources used and the global frequency erated as InvRoundKey0. This optional decryp- of the design. 6It is a real weak aspect of AES algorithm. 7Only new F5 multiplexers are required.

6 Algo. Gaj’s Ours Ours Ours Ours AES AES AES DES 3-DES Device XC2S30-6 XC3S50-4 XC2V40-6 XC2V40-6 XC2V40-6 Slices 222 163 146 189 227 Through. (Mbps) 166 208 358 974 326 RAM blocks 3 3 3 0 0 Throughput/Area (Mbps/slices) 0.75 1.26 2.45 5.15 1.44

Table 2. Comparisons with other sequential block cipher implementations.

CIPHER INPUTS PLAINT/KEY Device XC3S50-4 XC2V40-6 ENABLE_OUT 32 LUTs used 293 288 32 Registers used 126 113 Reset_IN Slices used 163 146 32 K_RAM ROT 32 rconi RAM blocks 3 3 Latency (cycles) 46 46

...... Out. every (cycles) 1/44 1/44 SRL3 SRL16 Frequency 71.5 MHz 123 MHz ...... 32 15 4 X 4 Rd_ROW1 Table 3. Final results of our complete se F5 Rd_ROW2 Rd_ROW3 32 quential AES. Rd_ROW4

2 RAM blocks MODE_DECR

CT0...CT3 ISB SB 32 of three internal RAM blocks. However, 3-DES re- ISB+IMC mains interesting for applications that need to regularly F5 change the key for encryption or decryption. Indeed,

ADDRA DIA DIB our AES design takes 92 cycles, in the worst case, to 32 K_RAM 1 RAM block calculate a new complete InvRoundKeys. ADDRB RoundKeyi or Reset_K_RAM InvRoundKeyi 5. Conclusion Figure 6. Our complete AES design. In this paper, we propose solutions for a very com- pact and effective FPGA implementation of the AES. We combine narrowly the non-linear S-boxes and the The synthesis of our complete design was done us- linear diffusion layer thanks to specific features of re- ing Synpllify Pro 7.2 from Synplicity. The place and cent Xilinx devices. We also propose a low-cost so- route were done using Xilinx ISE 6.1.02i package. The lution to deal with the subkeys computed during the final results are given in Table 3 for Spartan-3 and decryption step. In addition, we merge efficiently the Virtex-II. key schedule and the data path parts. As a comparison, we also set up a table with the The resulting implementations fits in a very inex- previous AES [20], DES and 3-DES [16] results. Ta- pensive Xilinx Spartan-3 XC3S50 FPGA, for which ble 2 shows the results of these compact encryp- the cost starts below $10 per unit. This implementa- tion/decryption circuits. Like others papers, we also tion can encrypt and decrypt a throughput up to 208 define a ratio T hroughput/Area to facilitate compar- Mbps, using 163 slices. The design also fits in Xil- isons. We finally achieve an implementation of AES inx Virtex-II XC2V40 and produces data streams up which is 68% better in terms of T hroughput/Area to 358 Mbps, using 146 slices. In comparison with 3- assuming that Spartan-II and Spartan-3 are equivalent. DES, AES is more efficient if we do not care about the In comparison with the most efficient compact 3- use of three internal FPGA RAM blocks. DES circuits in XC2V40-6, we can conclude that AES The throughput, low-cost and flexibility of our solu- is more effective if we do not care about the use tion make it perfectly practical for cryptographic em-

7 bedded applications. [19] P. Chodowiec and K. Gaj. Comparison of the Hardware Performance of the AES Candidates using Reconfigurable Hardware. The Third Ad- vanced Encryption Standard (AES3) Candidate Conference, April 13-14 References 2000, New York, USA. [20] K. Gaj and P. Chodowiec. Very Compact FPGA Implementation of the AES Algorithm. In the proceedings of CHES 2003, Lecture Notes in [1] J.M. Rabaey. Digital Integrated Circuits. Prentice Hall, 1996. Computer Science, vol 2779, pp. 319-333, Springer-Verlag.

[2] Xilinx. The Virtex-II field programmable gate arrays data sheet,available [21] V. Fischer and M. Drutarovsky. Two Methods of RIJNDAEL Implemen- from http://www.xilinx.com. tation in Reconfigurable Hardware. In the proceedings of CHES 2001: The Third International CHES Workshop, Lecture Notes In Computer [3] National Bureau of Standards. FIPS PUB 46, The Data Encryption Stan- Science, LNCS2162, pp 65-76, Springer-Verlag. dard. U.S. Departement of Commerce, Jan 1977. [22] A. Rudra et al. Efficient RIJNDAEL Encryption Implementation with [4] J. Daemen and V. Rijmen. The Block Cipher RIJNDAEL, NIST’s AES Composite Field Arithmetic. In the proceedings of CHES 2001: The home page, available from http://www.nist.gov/aes. Third International CHES Workshop, Lecture Notes In Computer Sci- ence, LNCS2162, pp 65-76, Springer-Verlag. [5] P.Baretto, V.Rijmen, The KHAZAD Legacy-Level Block Cipher, Submission to NESSIE project, available from [23] M. McLoone and J.V. McCanny, High Performance Single Ship FPGA http://www.cosic.esat.kuleuven.ac.be/nessie/ RIJNDAEL Algorithm Implementations. In the proceedings of CHES 2001: The Third International CHES Workshop, Lecture Notes In Com- [6] S. Trimberger, R. Pang and A. Singh. A 12 Gbps DES encryp- puter Science, LNCS2162, pp 65-76, Springer-Verlag. tor/decryptor core in an FPGA. In Proc. of CHES’00, LNCS, pages 156–163. Springer, 2000. [24] M. McLoone and J.V. McCanny, Single-Chip FPGA Implementation of the Advanced Encryption Standard Algorithm. In the proceedings of [7] Xilinx, V. Pasham and S. Trimberger. High-Speed DES FPL 2002: The Field Programmable Logic Conference, Lecture Notes and Triple DES Encryptor/Decryptor. available from in Computer Science, LNCS 2147, p.152ff. http://www.xilinx.com/xapp/xapp270.pdf, Aug 2001. [25] K.U. Jarvinen, M.T. Tommiska and J.O. Skytta A fully Pipelined Mem- oryless 17.8 Gbps AES-128 Encryptor. In the proceedings of FPGA 2003: Symposium on Field-Programmable Gate Arrays, pp. 207-215, [8] Helion Technology. High Performance DES and Triple-DES Core for ACM. XILINX FPGA. available from http://www.heliontech.com. [26] N. Weaver and J. Wawrzynek. High Performance Com- [9] CAST, Inc. Triple DES Encryption Core. available from pact AES Implementations in Xilinx FPGAs. available from http://www.cast-inc.com. http://www.cs.berkeley.edu/ nweaver/Rijndael..

[10] CAST, Inc. DES Encryption Core. available from http://www.cast-inc.com.

[11] inSilicon. X 3 DES Triple DES Cryptoprocessor. available from http://www.insilicon.com.

[12] inSilicon. X DES Cryptoprocessor. available from http://www.insilicon.com.

[13] P. Chodowiec, K. Gaj, P. Bellows and B. Schott. Experimental Test- ing of the Gigabit IPSec-Compliant Implementations of RIJNDAEL and Triple DES Using SLAAC-1V FPGA Accelerator Board. In Proc. of ISC 2001: Information Security Workshop, LNCS 2200, pp.220-234, Springer-Verlag.

[14] J.P. Kaps and C. Paar. Fast DES Implementations for FPGAs and Its Application to a Universal Key-Search Machine. In Proc. of SAC’98: Selected Areas in Cryptography,LNCS 1556, pp. 234-247, Springer- Verlag.

[15] G. Rouvroy, FX. Standaert, JJ. Quisquater, JD. Legat. Efficient Uses of FPGA’s for Implementations of DES and its Experimental Linear Crypt- analysis. In IEEE Transactions on Computers, Special CHES Edition, pp. 473-482, April 2003.

[16] G. Rouvroy, FX. Standaert, JJ. Quisquater, JD. Legat. Design Strategies and Modified Descriptions to Optimize Cipher FPGA Implementations: Fast and Compact Results for DES and TripleDES. In the proceedings of FPL 2003, Lecture Notes in Computer Science, vol 2778, pp. 181-193, Springer-Verlag.

[17] FX. Standaert, G. Rouvoy, JJ. Quisquater, JD. Legat. A Methodology to Implement Block Ciphers in Reconfigurable Hardware and its Appli- cation to Fast and Compact AES Rijndael. In the proceedings of FPGA 2003, pp. 216-224, ACM.

[18] FX. Standaert, G. Rouvoy, JJ. Quisquater, JD. Legat. Efficient Im- plementation of Rijndael Encryption in Reconfigurable Hardware: Im- provements and Design Tradeoffs. In the proceedings of CHES 2003, Lecture Notes in Computer Science, vol 2779, pp. 334-350, Springer- Verlag.

8