Bit Slice Implementation
Bit Slice Implementation
1 Introduction
Security is the most important feature of a cryptographic algorithm. An im-
portant secondary requirement is an efficient implementation in hardware and
software. The most efficient implementations are generally done in dedicated
hardware engines such as in FPGAs and ASICs. However, there are several ap-
plications such as networking software, operating system modules, etc., which
require fast encryptions but do not have these hardware engines. These appli-
cations make an efficient software implementation of cryptographic algorithms
important.
The bitslice implementation of DES [1][5] is the most efficient software imple-
mentation of DES. It involves converting the algorithm into a series of logical bit
operations using XOR, AND, OR and NOT logical gates. When implemented
on a microprocessor with a N -bit register width, each bit in the register acts as
a 1-bit processor doing a different encryption, therefore N encryptions are done
in parallel. This results in significant improvements in throughput.
D. Pointcheval, Y. Mu, and K. Chen (Eds.): CANS 2006, LNCS 4301, pp. 203–212, 2006.
c Springer-Verlag Berlin Heidelberg 2006
204 C. Rebeiro, D. Selvakumar, and A.S.L. Devi
The AES algorithm operates on a 4×4 matrix of bytes called state. The state un-
dergoes a series of transformations during the encryption process [Algorithm:1].
Each iteration in the encryption process is called a round. The number of rounds
(Nr ) is determined by the size of the AES key. Nr = 10, 12 or 14 for key sizes
of 128, 192 or 256 bits respectively. All operations on the state are in the Galois
Field GF (28 ). The SubstituteByte function substitutes each byte with a value
from a lookup table called Sbox. The entries in the Sbox are obtained by taking
the inverse of each element in GF (28 ) followed by a linear affine transformation.
The ShiftRow function shifts each byte in the row by an offset. The MixColumn