|
How to compute the inverse of a polynomial under GF(2^8) ?
It's well known that AES cryptography algorithm uses
Galois Field GF(2^8) multiplication to process the step
MixColumn, and each column of the 4*4 matrix on encrypting
should multiply the polynomial 3X^3 + X^2 + X + 2 which
is usually notated as an array {0x03, 0x01, 0x01, 0x02},
while on decrypting, the matrix should multiply the inverse
of the polynominal mentioned above, namely 0x0B*X^3 +
0x0D*X^2 + 0x09*X + 0x0E which can also notated as
an array {0x0B, 0x0D, 0x09, 0x0E}.
Now I wonder two things:
(1) Why the multiplication of {0x03, 0x01, 0x01, 0x02} *
{0x0B, 0x0D, 0x09, 0x0E} mod (X^4 + 1) is not equal to 1 ?
My multiplication program's result is {0x06, 0x04, 0x06, 0x05} which is
expected to be {0x00, 0x00, 0x00, 0x01}, and my program
has been proven to be correct at processing MixColumn.
(2) If only one polynomial is known, e.g. {0x03, 0x01, 0x01, 0x02},
how can I compute its inverse mod (X^4 + 1), namely
{0x0B, 0x0D, 0x09, 0x0E}, and vice versa.
Thank you.
Last edited by BlackWhite; 10-10-2015 at 21:32.
|