LED (AES like) algorithm Decryption-Mixcolumn 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 &lt; 4; j++) //j=0 soton 0 
    {
        for (i = 0; i &lt; 4; i++) 
        {
            unsigned char sum = 0;
            for (k = 0; k &lt; 4; k++)
                sum ^= FieldMult(MixColMatrix[i][k], state[k][j]);
            tmp[i] = sum;
        }
        for (i = 0; i &lt; 4; i++) //taaghir sotoon
            state[i][j] = tmp[i];
    }
}
The inverse of LED MDS matrix is :

$$\left[
\begin{array}{c c c c}
12 &amp; 12 &amp; 13 &amp; 4 \\
3 &amp; 8 &amp; 4 &amp; 5\\
7 &amp; 6 &amp; 2 &amp; 14\\
13 &amp; 9 &amp; 9 &amp; 13\\
\end{array}\right]$$

you can verify it.

this is sage code that generates the inverse MDS matrix.

f=x^4+x^1+1  # irrudiciable polynomial
L.&lt;z&gt;= GF(2^4,modulus=f)
R=PolynomialRing(L,'x')
N=16
m=[(4,  1, 2, 2),(8,  6, 5, 6),(11,14,10, 9),(2,  2,15,11)]
T= matrix(m)
#print S.inverse()
print m
print T
P=matrix(L,4,4)
P_1=matrix(L,4,4)
for i in range(0,4):
    for j in range(0,4):
        P[i,j]= (T[i][j]) + z^1*(T[i][j]&gt;&gt;1) + z^2*(T[i][j]&gt;&gt;2) + z^3*(T[i][j]&gt;&gt;3)



print P
P_1=P.inverse()
print P_1
# print the matrix with clear distance
for i in range(0,4):
    for j in range(0,4):
        print P_1[i,j]
    print ""