🕓Galois Fields

Galois Fields (aka Finite Fields)

  • A Galois field is finite set of elements and two operations ++ (addition) and ×\times (multiplication), with the following properties:

    • Closure: if aa and bb are in the set, a+ba + b and a×ba \times b are also in the set.

    • Additive identity: a+0=aa + 0 = a

    • Multiplicative identity: a×1=aa \times 1 = a

    • Additive inverse: a+(a)=0a + (-a) = 0

    • Multiplicative inverse: a×a1=1a \times a^-¹ = 1

  • Field size is the number of elements in the set.

Elliptic curves that are defined over a finite field with a prime field size have interesting properties and are key to building of elliptic curve cryptographic protocols.

Let's define a PrimeGaloisField class that contains the intrinsic property of a finite field, prime. We also define a membership rule for a value in a given finite field, by overriding the __contains__ method.

@dataclass
class PrimeGaloisField:
    prime: int

    def __contains__(self, field_element: "FieldElement") -> bool:
        # called whenever you do: <FieldElement> in <PrimeGaloisField>
        return 0 <= field_element.value < self.prime

Let's also define a FieldElement class to make sure all mathematical operations are contained within a given PrimeGaloisField.

All parameters in an elliptic curve equation are actually elements in a given prime Galois field. This includes a,b,x, andy.

Last updated

Was this helpful?