19.6 The MixColumn Transformation

Team-Fly

19.6 The MixColumn Transformation

After the rowwise permutation in the last step, in this step each column (bi,j), i = 0,..., 3, j = 0,..., Lb of a block is taken to be a polynomial over and multiplied by the constant polynomial a(x) := a3x3 + a2x2 + a1x + a0, with coefficients a0(x) = x, a1(x) = 1, a2(x) = 1, a3(x) = x + 1, and reduced modulo M(x) := x4 + 1. Each byte of a column thus interacts with every other byte of the column. The rowwise operating ShiftRow transformation has the effect that in each round, other bytes are mixed with one another, resulting in strong diffusion.

We have already seen (see page 363) how this step can be reduced to a matrix multiplication

Multiplication by '02' (respectively x) has already been reduced to the application of the function xtime; multiplication by '03' (respectively x + 1) was already handled similarly (cf. page 366).

For inverting the MixColumn transformation every column (bi,j) of a block is multiplied by the polynomial r(x) := r3x3 + r2x2 + r1x + r0 with coefficients r0(x) = x3 + x2 + x, r1(x) = x3 + 1, r2(x) = x3 + x2 + 1, and r3(x) = x3 + x + 1 and reduced modulo M(x) := x4 + 1. The corresponding matrix is


Team-Fly


Cryptography in C and C++
Cryptography in C and C++
ISBN: 189311595X
EAN: 2147483647
Year: 2001
Pages: 127

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net