# 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 Design of Rinjdael on page 13.

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