Campos de Galois
Una explicación más detallada (en inglés) puede encontrar en este video sobre el que se basa este texto.
Un campo de Galois es una estructura algebráica utilizada entre otras muchas cosas en algoritmos como el AES, o el Reed-Solomon. La intención de este artículo es dotar al lector de unos conocimientos mínimos que le permitan comprenderlos e implementarlos en algún lenguaje de programación.
Estructuras algebraicas
Una estructura algebraica viene dada por una tupla de elementos y un conjunto de operaciones aplicables a estos elementos.
Un ejemplo de estructura (
Cuerpos
Son un tipo de estructura algebráica más estricta:
Las operaciones adición
sustracción
multiplicación
y división
se pueden realizar siempre que se cumplan las siguientes propiedades:
- Existe un elemento neutro para la adición y la multiplicación.
- El orden en que se ejecuten las operaciones no altera el resultado. (Propiedad Asociativa)
- El orden de los sumandos no altera la suma, o el orden de los factores no altera el producto. (Propiedad Conmutativa)
- El resultado de un número multiplicado por la suma de dos o más sumandos, es igual a la suma de los productos de cada sumando por ese número. (Propiedad Distributiva)
Cuerpos finitos
También llamados campos de Galois son un cuerpo definido sobre un conjunto finito de elementos donde el número de elementos (
Si
Campos primos
Conocidos como
- Suma: Relizar la suma normalmente módulo p
- Resta: Realizar la resta normalmente módulo p
- Multiplicación: Realizar la multiplicación normalmente módulo p.
- División: Realizar la división normalmente módulo p.
Ejemplo
GF(7)
Elementos: {0,1,2,3,4,5,6}
Operaciones: {+, -, *, /}
Suma:
1 + 1 = 2 mod 7 = 2
1 + 6 = 7 mod 7 = 0
2 + 6 = 8 mod 7 = 1
Multiplicación:
2 * 3 = 6 mod 7 = 6
3 * 3 = 9 mod 7 = 2
Hasta aquí todo es bastante simple, pero ¿Qué pasa cuando
Extension fields
Llamaremos extension field a un cuerpo finito donde el número de elementos es una potencia de un número primo y los elementos del conjunto son polinómios de la forma:
Donde
Pongamos como ejemplo el caso donde
p = 2
m = 3
GF(p) = GF(2) = {0,1}
Sabemos que todos polinomios
y que a solamente puede tener dos posibles valores
Esta naturaleza permite representar los polinomios utilizando solamente el valor de sus coeficientes.
Sumas y restas
Para sumar o restar polinomios en un
Ejemplos de suma de polinomios en GF(8)
000 + 000 = 000
111 + 001 = 110
101 + 101 = 010
Multiplicación
La multiplicación se vuelve más compleja ya que si se hace de forma habitual, obtendremos polinomios que están fuera del campo
por lo que se hace necesario reducir el resultado módulo un polinomio elemento neutro
.
La principal caracteristica de estos polinomios es que son irreducibles (no se pueden factorizar). También son conocidos como primitivas
y se puede demostrar que para todo