Is there a difference between $\mathbb{Z}_2^b$, $\text{GF}(2^b)$ and $\text{GF}(2)^b$?
$\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 &gt; 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 &gt; 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)$.