I want to program decryption algorithm for the LED cipher. The lightweight block cipher LED(Jian Guo, Thomas Peyrin, Axel Poschmann, Matt Robshaw:CHES 2011). All the things is routine except the MixColumn component which is like the MixColumn of AES but with a different matrix. In fact we have 64 bit of plain text in structure of a state[4][4]. In the MixColumn component each column of the state multiplies with the matrix M and the result will be replaced with the old column(in the encryption process)
I wanna to have decryption so I need ReverseMixcolumn function.For that i need the inverted matrix M which I have no idea about calculating it. I know nothing about calculating matrix inverse in the field of operation. Even I dont know what is the field of operation in algorithm hence it is not pronounced in paper(eprint.iacr.org/2012/600.pdf)
This is code of MixColumn component:
const unsigned char MixColMatrix[4][4] =
{
{ 4, 1, 2, 2 },
{ 8, 6, 5, 6 },
{ 11,14,10, 9 },
{ 2, 2,15,11 },
};
void MixColumn(unsigned char state[4][4])
{
int i, j, k;
unsigned char tmp[4];
for (j = 0; j < 4; j++) //j=0 soton 0
{
for (i = 0; i < 4; i++)
{
unsigned char sum = 0;
for (k = 0; k < 4; k++)
sum ^= FieldMult(MixColMatrix[i][k], state[k][j]);
tmp[i] = sum;
}
for (i = 0; i < 4; i++) //taaghir sotoon
state[i][j] = tmp[i];
}
}