# Is there a difference between $\mathbb{Z}_2^b$, $\text{GF}(2^b)$ and $\text{GF}(2)^b$?

I have read a lot about Galois Fields (GF). They are also presented in The The Design of Rijndael: AES - The Advanced Encryption Standard on pages 13 and 14.

In computer memory, the polynomials in $$F[x]|_l$$ with $$F$$ a finite field can be stored efficiently by storing the $$l$$ coefficients as a string.

Example 2.1.6. The polynomial in GF$$(2)|_8$$ $$x^6+x^4+x^2+x+1$$ corresponds to the bit string $$01010111$$.

In their paper Differential propagation analysis of Keccak, they also use the notation $$\mathbb{Z}_2^b$$ :

In general, for a function $$f$$ with domain $$\mathbb{Z}_2^b$$, we define the weight of a differential $$(u′, v')$$ as $$w(u' \xrightarrow{f} v') = b - \log_2 |\{u: f(u) \oplus f(u \oplus u') = v'\}|$$

While I do understand the meaning of this notation (a binary input of length $$n$$), I also know that we can use finite fields to model such numbers. Hence my question: Is there a difference between $$\mathbb{Z}_2^b$$, $$\text{GF}(2^b)$$ and $$\text{GF}(2)^b$$

• yes it is related but I want to make sure of the notation from a formal point of view. – Biv May 30 '16 at 16:11

$\mathbf{Z}_2^b$ is the direct product of $b$ copies of $\mathbf{Z}_2$ ($\mathbf{Z}_2 \times\cdots \times \mathbf{Z}_2$, $b$ times). That is, its elements are $b$-tuples of elements of $\mathbf{Z}_2$, with both addition and multiplication defined componentwise. If $b > 1$, it is not a field. In fact it is not even an integral domain, because $(0,1)\times (1,0) = (0,0)$.
$\mathrm{GF}(2^b)$ is the field with $2^b$ elements. Because it is a field, it is not the same thing as $\mathbf{Z}_2^b$ if $b > 1$.
You should know that for any prime $p$, $\mathbf{Z}_p$ is a field with $p$ elements, so it is the same thing as $\mathrm{GF}(p)$.
• Of course, $\mathbf{Z}_2 = \mathrm{GF}(2)$ implies $\mathbf{Z}_2^b = \mathbf{GF}(2)^b$. – fkraiem May 31 '16 at 4:32