Existe un homomorfismo entre dos grupos si existe un mapeo que preserva la estructura entre los dos grupos.
Supongamos que tenemos dos estructuras de datos algebraicas y , donde el operador binario de es y el operador binario de es .
Un homomorfismo de a existe si y solo si existe una función tal que
En otras palabras, si , entonces .
Ten en cuenta que un homomorfismo es unidireccional. La función toma elementos en y los mapea a elementos en . No tenemos ningún requisito sobre “ir hacia atrás”.
Primero mostraremos algunos ejemplos simples, proporcionaremos algunas aclaraciones y luego presentaremos ejemplos más complejos.
Ejemplos simples de Homomorfismos
Todos los números enteros bajo la suma a todos los números enteros pares bajo la suma
Sea el conjunto de todos los números enteros bajo la suma, y sea el conjunto de todos los números enteros pares bajo la suma. Está claro que tanto como son grupos.
Sea
Vemos que define un homomorfismo de a porque lo siguiente es cierto para cualquier par de números enteros y
Todas las cadenas bajo la concatenación a todos los enteros iguales o mayores a cero
Por ejemplo, sea el Monoide de todas las cadenas (incluida la cadena vacía) bajo la concatenación, y sea el Monoide de todos los números enteros iguales o mayores a cero bajo la suma.
Existe un homomorfismo de a porque existe una función que mapea cadenas a números enteros iguales o mayores a cero y preserva la siguiente propiedad
En este caso, es la longitud de la cadena. Por ejemplo:
Aquí, tenemos
Todos los números reales bajo la suma a todas las matrices de números reales bajo la suma
Algunos homomorfismos pueden parecer bastante triviales una vez que les agarras el truco. Este es un ejemplo de tal homomorfismo. En este caso, nuestra función simplemente repite el número real veces. Por ejemplo, si y , entonces sería:
A modo de ejemplo, porque
Aclaraciones sobre los Homomorfismos
- debe funcionar con cada par posible de elementos de (incluidos pares del mismo elemento). Sin embargo, no necesita “acceder” a todos los elementos de . Por ejemplo, un homomorfismo que mapea cada elemento en al elemento neutro en es un homomorfismo válido, pero no uno útil. Se le llama homomorfismo trivial.
- Si elegimos dos conjuntos arbitrarios con un operador binario, un homomorfismo no existirá necesariamente.
- Puede haber un homomorfismo de a , pero no necesariamente de a .
- Si hay un homomorfismo de a y de a , y es el mapeo de a , la inversa de puede no ser necesariamente un mapeo válido para el homomorfismo de a .
Más ejemplos de homomorfismos
Números enteros bajo la suma a potencias enteras de bajo la multiplicación
Supongamos que tenemos el grupo (el conjunto de todos los números enteros bajo la suma) y el grupo , que es el conjunto de todas las potencias enteras de bajo la multiplicación, es decir, . Podemos establecer arbitrariamente para que el ejemplo sea más fácil de imaginar.
Existe un homomorfismo de a , definido por . Por las reglas del álgebra,
Para entender por qué se cumple esta relación, considera que
Números enteros bajo la suma a potencias enteras de bajo la multiplicación módulo un número primo
Esto es muy similar al ejemplo anterior, con la adición de un módulo. Dejamos como ejercicio para el lector identificar la función que define el homomorfismo.
Matrices bajo la suma a números enteros bajo la suma
En este caso, simplemente suma todos los elementos de una matriz. Por qué funciona esto se deja como ejercicio para el lector.
Matrices de números enteros bajo la multiplicación a números enteros bajo la multiplicación
Existe un homomorfismo del primer al segundo Monoide porque es el determinante de la matriz y se cumple la siguiente regla:
donde son matrices enteras de . Por qué estas dos estructuras de datos algebraicas son Monoides y no grupos se deja como ejercicio para el lector.
El grupo de los números racionales (excluyendo los números racionales donde el denominador es un múltiplo de ) a la suma módulo
Este concepto ya se enseñó en nuestro artículo sobre campos finitos, pero no usamos el término “homomorfismo” para describirlo.
Sea el grupo de todos los números racionales cuyos denominadores no son un múltiplo de , bajo la suma. Sea el campo finito módulo .
Existe un homomorfismo del grupo al grupo . es
O en Python:
p = 11
def phi(num, den):
return num * pow(den, -1, p) % p
Por ejemplo:
- es congruente con
- es congruente con
Decir que es congruente con es equivalente a la afirmación .
El Monoide de los números racionales (excluyendo los números racionales donde el denominador es múltiplo de ) a la multiplicación módulo (excluyendo el cero)
Usemos el mismo ejemplo de arriba, pero con la multiplicación. La función sigue siendo la misma.
- es congruente con
- es congruente con
Ejercicios para el lector
Encuentra un homomorfismo para los siguientes pares de estructuras de datos algebraicas. Si te quedas atascado (o simplemente no quieres resolver el problema), puedes buscar la respuesta en Google o consultar con un chatbot.
- Números reales bajo la suma a polinomios con coeficientes reales bajo la suma.
- Polinomios con coeficientes reales a números reales bajo la suma. Pista: aunque esto se parece al problema 1, la función no tendrá ninguna relación con la respuesta del problema anterior.
- Números reales positivos mayores que cero bajo la multiplicación a todos los números reales bajo la suma.
Cifrado Homomórfico
Si es computacionalmente difícil de invertir, entonces cifra homomórficamente los elementos de .
Sea todos los números enteros bajo la suma, y el grupo objetivo y el operador binario de .
Suma de Conocimiento Cero, ejemplo 1
Supongamos que deseamos probar a un verificador que hemos calculado . Le daríamos al verificador donde y el verificador comprobaría que:
Ten en cuenta que el cifrado homomórfico implica que el verificador conoce la función .
Suma de Conocimiento Cero, ejemplo 2
Un probador hace la afirmación: “Tengo dos números y , y es cinco veces ”. El probador envía y al verificador, y el verificador comprueba que
Recuerda, la “multiplicación” aquí no es el operador binario, es simplemente una forma abreviada de la suma repetida.
En estos ejemplos, nota que no dijimos nada sobre qué son los elementos de ni qué es . puede ser un objeto matemático aterrador, y puede ser un operador matemático aterrador, pero eso no importa.
Esta es la belleza del álgebra abstracta: no necesitamos saberlo. Siempre y cuando tenga las propiedades que nos importan, podemos razonar sobre su comportamiento incluso si no sabemos nada sobre la implementación.
Motivación
Vale, genial; entendemos los grupos y los homomorfismos, pero ¿cómo nos ayuda esto? La razón por la que hice todo el esfuerzo de explicar esto es porque quiero que entiendas la siguiente afirmación:
“Los puntos de la curva elíptica en un campo finito bajo la suma son un grupo cíclico finito y los números enteros bajo la suma son homomórficos a este grupo”.
Probablemente no sepas qué son los puntos de la curva elíptica o qué significa sumarlos, pero sí sabes:
- El conjunto de los puntos de la curva elíptica bajo la suma produce otro punto de la curva elíptica.
- El operador binario que toma dos puntos de la curva elíptica y devuelve otro punto de la curva elíptica es asociativo.
- El conjunto de puntos de la curva elíptica contiene un elemento neutro.
- El grupo de la curva elíptica tiene un elemento neutro, el cual es único.
- Cada punto de la curva elíptica tiene un inverso tal que al sumar un punto y su inverso se produce el elemento neutro.
- Debido a que el grupo es cíclico, cada punto de la curva elíptica puede ser generado aplicando repetidamente el operador binario a algún elemento generador.
- Debido a que el grupo de puntos de la curva elíptica es cíclico, también es un grupo abeliano.
- Debido a que es un grupo finito, el orden es finito.
- Debido al homomorfismo, tenemos una idea sólida de cómo se comporta el operador binario para los puntos de la curva elíptica. Podemos usar el operador binario de los puntos de la curva elíptica para “sumar enteros” en cierto sentido.
Incluso si no sabes qué son los puntos de la curva elíptica, ¡ya sabes nueve cosas sobre ellos!
Así que sean lo que sean estos extraños objetos llamados “puntos de la curva elíptica”, sabes cómo se comportan y que tienen las mismas propiedades que los grupos que discutimos anteriormente.
Lo creas o no, ya has recorrido el 90% del camino para comprender las curvas elípticas. Es mucho más fácil darle sentido a las curvas elípticas al comprender su similitud con otras estructuras familiares que tratar de entender su extraña matemática desde cero.
Esto es similar a que te diga que Ethereum usa “Patricia Merkle trees” para almacenar el estado. Puede que no sepas qué es un “Patricia tree” o un “Merkle tree”, pero sí sabes:
- Tiene una raíz.
- Probablemente puedas acceder a los elementos en tiempo logarítmico, o al menos esa es la intención.
- Algo útil se almacena en las hojas.
- Existe algún algoritmo para recorrer el árbol y acceder a una hoja que te interese.
Por lo tanto, cuando te digo que los puntos de la curva elíptica bajo la suma forman un grupo, ya deberías saber qué tener en cuenta cuando aprendas sobre ese tema.
Nuevamente, los grupos no necesitan ser matemáticas incomprensibles. Has trabajado con grupos de forma intuitiva como programador. Ahora tienes una palabra concreta para describir este fenómeno recurrente.
Es mucho más eficiente decir “grupo” que decir “este es un conjunto con una manera de combinar elementos asociativamente y todos los elementos tienen bla bla bla”.
Sé que esto puede parecer una gran desviación del tema, pero confía en mí, comprender el término “homomorfismo” nos permite describir de manera concisa un concepto que veremos con regularidad. También resultará útil nuevamente cuando discutamos sobre los Programas Aritméticos Cuadráticos. Los homomorfismos aparecen con frecuencia en el mundo ZK.
Imagina intentar hablar sobre estructuras de datos de árboles sin una palabra para “raíces” u “hojas”. Eso sería inmensamente frustrante.
Resumen
Un homomorfismo de a existe si y solo si existe una función que toma un elemento de y devuelve un elemento de y para todos los y en , donde es el operador binario de y es el operador binario de . La existencia de es suficiente para que el homomorfismo exista.
Los homomorfismos no son necesariamente bidireccionales. Solo se requiere que funcionen en una dirección, de a .
Si es computacionalmente difícil de invertir, entonces cifra homomórficamente los elementos de . Eso significa que podemos validar afirmaciones sobre cálculos en usando elementos en .
La buena noticia es que hemos terminado con nuestro tratamiento del álgebra abstracta, y ahora tenemos una base sólida para avanzar hacia las curvas elípticas.