# Multiplication in Tower Field $GF(2^4)^2$

I'm currently reading an article which deals with "Squeezing Polynomial Masking into Tower Fields " for performing an efficient multiplication of elements in $$GF(2^8)$$. Thereby it is explained that one first hast to do an affine transformation on the elements in $$GF(2^8)$$ and apply the actual multiplication in the tower field $$GF(2^4)^2$$. The paper defines an overall algorithm to perform the multiplication in the smaller field according to:

Multiplication: The multiplication $$c = ab$$ of two elements $$a,b \in GF(2^8)$$ can be computed in $$GF(2^8)$$ as:

$$\begin{equation*} \begin{cases} c_h = &(b_h + b_l) (a_h + a_l) + b_l a_l\\ c_l \ = &b_ha_h\gamma +b_l a_l \end{cases} \end{equation*}$$

where

• $$a \mapsto \phi(a_h, a_l)$$,

• $$b \mapsto \phi(b_h, b_l)$$,

• $$(c_h,c_l) \mapsto \phi^{-1}(c_h, c_l)$$

and all operations defined in $$GF(2^4)$$. Apparently $$\phi$$ denotes the isomorphic mapping, which bijectively maps the elements from $$GF(2^8)$$ to $$GF(2^4)^2$$. In the follwoing it is also stated that the generator polynomial is given according to $$\mathbb{F}_{2^4}[y]/(y^2 + y + \gamma)$$.

Consequently, I started to tabulate the required multiplications in the smaller field which yield the following code

for(uint8_t i = 0; i <= 0xF; i++)
{
for(uint8_t j = 0; j <= 0xF; j++)
{
uint8_t result = gf_2_4_multiply(i, j);
gf_2_4_table[i][j] = result;
}
}


Nevertheless, now I fail to understand how the decomposition into the smaller field has to be done. Thereby, I encountered a post from intuition-behind-mapping which I do not really understand. In particular I do not understand how the mapping matrix must be applied to perform the transformation into the smaller subfileds. Additional to that, I do not understand the meanig of $$\gamma$$ in this context. For that reason, I would be gradeful if anyone could give me a few hints or explain how the overall multiplication/mapping to the smaller field works.

Best regards

ratbaldmeyer