ite¹, which is maintained at the cryptographic research group of the Katholieke Universiteit Leuven (KUL). Their site includes code and links to other sites that have Rijndael implementations in C, Lisp, Ada, Visual Basic, Java, and other languages, as well as even a Matlab-based simulator of the algorithm. Daemen and Rijmen have also recently published a book called The Design of Rijndael: AES- Advanced Encryption Standard, which explains the design philosophy and the algorithm functionality in depth. All these sources are listed in the references at the end of the chapter. For the sake of clarity, we will just mention a few basic characteristics here to provide a first impression of the Rijndael algorithm compared to DES. 1. http://www.esat.kuleuven.ac.be/~rijmen/rijndael/index.html Downloaded from Digital Engineering Library @ McGraw-Hill (www.digitalengineeringlibrary.com) Copyright © 2004 The McGraw-Hill Companies. All rights reserved. Any use is subject to the Terms of Use as given at the website. SECURITY COPROCESSORS SECURITY COPROCESSORS 379 Substitution Shift Column Round FIGURE 17.6 Operations during one round of Rijndael processing Rijndael uses multiple rounds of a series of essentially repetitive operations except for a couple minor variations at the beginning and the end of the execution. Figure 17.6 shows the Rijndael oper- ations. They are as follows: Byte substitution, where each byte of the input block is replaced according to a substitute found in a specified way in an S box. Shift row, where the input block (for example, 128 bits) is composed of bytes ordered from 1 to 16. These byte orders are arranged vertically from 1 to 16 in 4 columns of 4 rows, each creating a 4X4 table. Then the rows of this table are made to rotate horizontally by a specific number of positions depending on the row number. For example, the first row stays intact, the second is rotated by one position, the third is rotated by two positions, and the fourth is rotated by three positions. As a result, a new 4X4 table is p