Problem with transformations in Rijndael's finite field

Click For Summary

Discussion Overview

The discussion revolves around the implementation of the AES algorithm, specifically focusing on the transformations within Rijndael's finite field GF(2^8). Participants are examining the polynomial multiplication and reduction process, and the resulting matrix operations that should yield a unit matrix when multiplying a polynomial and its inverse.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Mathematical reasoning

Main Points Raised

  • One participant describes their implementation of AES and the confusion arising from polynomial multiplication in GF(2^8) and its representation as matrix multiplication.
  • The participant provides specific polynomial coefficients in hexadecimal and their corresponding matrix representations, noting that the product does not yield a unit matrix as expected.
  • Another participant questions whether the hexadecimal values should be converted to decimal for clarity.
  • There is a discussion about the relevance of base representation, with some participants suggesting that the base only affects human readability and not the mathematical operations.
  • One participant asserts that the equality involving finite field operations is indeed correct, implying that there may be an oversight in the original participant's calculations.
  • Another participant expresses confusion and suggests that if the equality is correct, then there must be an issue with the multiplication process leading to incorrect results.

Areas of Agreement / Disagreement

Participants do not reach a consensus on the source of the problem. There are competing views regarding the correctness of the finite field operations and the implications of the matrix multiplication results.

Contextual Notes

Participants reference finite field arithmetic and logarithm tables for multiplication, but there are unresolved questions about the specific calculations and assumptions being made in the matrix operations.

qxcdz
Messages
8
Reaction score
0
I'm trying to implement AES as practice for my C++ skills, but I've come across a confusing problem that I think belongs here rather than in programming.

Rijndael's finite field is GF(28), with reducing polynomial x8+x4+x3+x+1

There is a step in the algorithm that takes a polynomial a(x)=a3x3+ a2x2+a1x+a0 with coefficients in GF(28), and multiplies it by a polynomial b(x)=b3x3+ b2x2+b1x+b0

and reduces it modulo x4+1, to get d(x)=d3x3+ d2x2+d1x+d0

This operation is equivalent, if a is a constant polynomial, according to the text, to the matrix multiplication:

[tex]\left( \begin{array}{c}<br /> d_0 \\<br /> d_1 \\<br /> d_2 \\<br /> d_3 \end{array} \right)=<br /> \left( \begin{array}{cccc}<br /> a_0 & a_3 & a_2 & a_1 \\<br /> a_1 & a_0 & a_3 & a_2 \\<br /> a_2 & a_1 & a_0 & a_3 \\<br /> a_3 & a_2 & a_1 & a_0 \end{array} \right)<br /> \left( \begin{array}{c}<br /> b_0 \\<br /> b_1 \\<br /> b_2 \\<br /> b_3 \end{array} \right)[/tex]

it gives the constant polynomial a(x) as [tex]a(x)=\{03\}x^3+\{01\}x^2+\{01\}x+\{02\}[/tex], and the inverse polynomial [tex]a^{-1}(x)=\{0b\}x^3+\{0d\}x^2+\{09\}x+\{0e\}[/tex] (all numbers in curly braces are hexadecimal).

Now, being as I'm using a computer to do this, and proper polynomial handling is hard to do, I'm using the matrix multiplication to do the calculation. Now, if I'm thinking about this properly, then the matrix representations of [tex]a(x)[/tex] and [tex]a^{-1}(x)[/tex] should have a product that is a unit matrix. But, if my calculations (done by my program) are correct, then:
[tex] \left( \begin{array}{cccc}<br /> \{02\} & \{03\} & \{01\} & \{01\} \\<br /> \{01\} & \{02\} & \{03\} & \{01\} \\<br /> \{01\} & \{01\} & \{02\} & \{03\} \\<br /> \{03\} & \{01\} & \{01\} & \{02\} \end{array} \right)<br /> \left( \begin{array}{cccc}<br /> \{0e\} & \{0b\} & \{0d\} & \{09\} \\<br /> \{09\} & \{0e\} & \{0b\} & \{0d\} \\<br /> \{0d\} & \{09\} & \{0e\} & \{0b\} \\<br /> \{0b\} & \{0d\} & \{09\} & \{0e\} \end{array} \right)=<br /> \left( \begin{array}{cccc}<br /> \{01\} & \{00\} & \{e5\} & \{00\} \\<br /> \{00\} & \{01\} & \{00\} & \{e5\} \\<br /> \{e5\} & \{00\} & \{01\} & \{00\} \\<br /> \{00\} & \{e5\} & \{00\} & \{01\} \end{array} \right)[/tex]

Which is almost a unit matrix, but not quite. And, when I use these polynomials to calculate the function, and then the inverse, I get a different polynomial to my input. I checked my matrix multiplication algorithm, it seems to be working fine.

Two other matrices that should have a unit matrix product (for another step in the algorithm) do. I'm definitely doing finite field arithmetic. I'm using a logarithm table for my multiplication, base three, which I know for a fact is a generator. I can't find anything wrong with the procedure, so I'm asking you guys if you could please tell me why it doesn't work.
 
Physics news on Phys.org
Are those hex values or something?
 
Yeah, that's how they're normally stated. Should I convert to decimal?
 
I have no idea if that would make a difference. I've never thought of using base 16 when doing matrix operations. I'd be interested to find out though.
 
I meant for readability, base only makes a difference for the humans reading the numbers.
 
I guess.
So {02}{0e} + {03}{09} + {01}{0d} + {01}{0b} = {01} ?

I don't man, all that only for human talk. To me, that don't look right.
 
You do realize that I'm talking about a finite field, right? That equality is indeed correct, using finite field operations.
 
Well I guess it's all just over my head then. Of course, if that equality is correct then it's clear that there's a problem with something that you are not taking into account as your multiplication is coming out incorrect.
 

Similar threads

  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 27 ·
Replies
27
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 2 ·
Replies
2
Views
4K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 15 ·
Replies
15
Views
4K