• No se han encontrado resultados

Criptografía de curvas elípticas. Fundamentos matemáticos e implementación

N/A
N/A
Protected

Academic year: 2020

Share "Criptografía de curvas elípticas. Fundamentos matemáticos e implementación"

Copied!
92
0
0

Texto completo

(1)Universidad Politécnica de Madrid Criptografía de Curvas Elípticas Fundamentos Matemáticos e Implementación. Santiago Alfonso Raposo Briceño Director Prof. Ángel González Prieto. Escuela Técnica Superior de Ingeniería de Sistemas Informáticos Grado en Ingeniería de Computadores Departamento de Sistemas Informáticos. Curso 2018-2019.

(2)

(3) “It always takes longer than you expect, even when you take into account Hofstadter’s Law. " Hofstadter’s Law.

(4)

(5) ABSTRACT Criptografía de Curvas Elípticas by Santiago Alfonso Raposo Briceño. Abstract en español. En el presente trabajo hemos presentado los fundamentos matemáticos. necesarios para la implementación de una biblioteca de manejo de las curvas elípticas y sus aplicaciones para la criptografía. Comenzaremos exponiendo el concepto de grupo, fundamental en todos los tipos de criptografía. Seguidamente, presentaremos los conceptos de anillo y cuerpo, indispensables para definir las curvas elípticas. Centraremos nuestro estudio en los grupos y cuerpos finitos, ya que estos son las estructuras matemáticas detrás de la inmensa mayoría de algoritmos criptográficos actuales. Una vez sentadas las bases necesarias, presentaremos la definición formal de las curvas elípticas y la estructura de grupo que se puede definir sobre los puntos de las mismas. Con estas herramientas procederemos a implementar una librería criptográfica que nos permita trabajar con estos conceptos matemáticos, así como implementar algoritmos de criptografía asimétrica basados en las curvas elípticas. Se esbozarán también unos ataques al logaritmo discreto, la base de la seguridad de la criptografía de curvas elípticas. Finalmente, presentaremos los algoritmos criptográficos implementados y el diseño e implementación de la librería software. Palabras clave: criptografía, curvas elípticas, grupos, anillos, cuerpos finitos. Abstract in English. In this project we give an overview of the mathematical foundations ne-. cessary for the implementation of a library for working with elliptic curves, as well as their applications for cryptography. We begin by introducing the concept of the group, which is the basis for all modern standard cryptosystems. Following this, we expand the group concept by introducing rings and fields. We will focus our study on finite groups and fields, since these are the mathematical constructs behind most, if not all, cryptographic algorithms. Following this introduction, we will give the formal definition for an elliptic curve, as well as the group structure that can be defined over its points. Having these tools at hand, we can proceed with the implementation of the software library, which will allow us to work with the concepts defined previously, as well as implementing a selection of cryptographic algorithms based on elliptic curves. We will also sketch some attacks on the discrete logarithm problem, the basis of the security of elliptic curve cryptography. Finally, we will give some examples with the implemented cryptographic algorithms and we shall introduce the design and implementation of the software library. Keywords: cryptography, elliptic curves, groups, rings, finite fields.

(6)

(7) Agradecimientos Primero de todo, agradecer a mis padres que siempre me han prestado su apoyo y soporte a lo largo de toda mi vida. A mis amigos, por estar también siempre ahí cuando se les necesita. Por último y no menos importante, a mí tutor Ángel por sus fantásticas explicaciones y preocupación por el trabajo.. vii.

(8)

(9) Índice general Abstract. v. Agradecimientos. vii. Índice general. ix. Introducción. xi. 1. Fundamentos matemáticos de la criptografía 1.1. Grupos . . . . . . . . . . . . . . . . . . . . . . . 1.1.1. Ejemplos de grupos . . . . . . . . . . . . 1.1.2. El grupo simétrico Sn . . . . . . . . . . 1.1.3. El grupo diedral Dn . . . . . . . . . . . 1.1.4. El grupo lineal general GL(n, R) . . . . 1.1.5. El grupo unitario U(2) . . . . . . . . . . 1.1.6. Grupos abelianos . . . . . . . . . . . . . 1.1.6.1. El grupo (Zn ,+) . . . . . . . . 1.1.6.2. El grupo (Z∗n , ·) . . . . . . . . . 1.1.7. Subgrupos . . . . . . . . . . . . . . . . . 1.1.8. Isomorfismos y homomorfismos . . . . . 1.1.8.1. Teoremas de isomorfía . . . . . 1.2. Anillos . . . . . . . . . . . . . . . . . . . . . . . 1.2.1. Ejemplos de anillos . . . . . . . . . . . . 1.2.2. Homomorfismos de anillos . . . . . . . . 1.2.3. Teoremas de isomorfía para anillos . . . 1.2.4. Ideales primos y maximales . . . . . . . 1.2.5. Anillos de polinomios . . . . . . . . . . 1.2.6. Implementación de anillos de polinomios 1.3. Cuerpos . . . . . . . . . . . . . . . . . . . . . . 1.3.1. Cuerpos de escisión . . . . . . . . . . . . 1.4. Cuerpos finitos . . . . . . . . . . . . . . . . . . 1.4.1. Construcción de los cuerpos finitos . . . 1.4.2. Representación de los cuerpos finitos . . 1.4.3. Implementación de los cuerpos finitos .. . . . . . . . . . . . . . . . . . . . . . . . . .. 1 1 2 2 4 6 7 8 8 9 10 14 14 16 17 21 21 22 23 25 26 29 30 31 31 32. 2. Curvas elípticas 2.1. El plano proyectivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Curvas algebraicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 35 35 36. ix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sobre Zp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . ..

(10) Índice General. x. 2.3. Definición de curva elíptica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. Estructura de grupo en curvas elípticas . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1. La estructura de grupo en E(Zp ) . . . . . . . . . . . . . . . . . . . . . . . . . .. 37 39 40. 3. Criptografía de curvas elípticas 3.1. El problema del logaritmo discreto . . . . . . . . . . . . . . . . 3.1.1. Algunos algoritmos para el cálculo del logaritmo discreto 3.2. Algoritmos criptográficos . . . . . . . . . . . . . . . . . . . . . . 3.2.1. El algoritmo de cifrado de ElGamal . . . . . . . . . . . . 3.2.2. Firma digital con ElGamal . . . . . . . . . . . . . . . . 3.2.3. ECDSA . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.4. Intercambio de claves de Diffie-Hellman . . . . . . . . . 3.2.5. Cifrado de Massey-Omura . . . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. 43 43 44 46 46 48 50 53 55. 4. Librería criptográfica 4.1. Diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Implementación . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1. Lenguaje de programación . . . . . . . . . . . . . . 4.2.2. Estructura de la biblioteca software . . . . . . . . . 4.2.3. Implementación de los cuerpos Zp . . . . . . . . . 4.2.4. Implementación de los polinomios . . . . . . . . . . 4.2.5. Implementación de los cuerpos finitos Fpn . . . . . 4.2.6. Implementación de curvas elípticas . . . . . . . . . 4.2.6.1. La estructura de grupo . . . . . . . . . . 4.2.6.2. Multiplicación de un punto por un escalar 4.2.7. Pruebas del funcionamiento . . . . . . . . . . . . . 4.2.8. Consideraciones prácticas . . . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. 57 57 60 60 62 63 64 65 67 68 69 70 73. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. Conclusiones y trabajos futuros. 74. Bibliografía. 77.

(11) Introducción La criptografía es uno de los campos de la informática con mayor importancia en la actualidad. Esta es también una de las ramas de la informática con mayor base matemática, especialmente los últimos métodos basados en las curvas elípticas. En este trabajo vamos a realizar una revisión sobre los fundamentos matemáticos que subyacen a las implementaciones de los algoritmos criptográficos empleados actualmente. Asimismo, realizaremos una implementación de dichos métodos en software. El objetivo de este trabajo es realizar una introducción a un lector con una base matemática básica y una comprensión superficial de los algoritmos criptográficos clásicos a los elementos necesarios para comprender completamente el funcionamiento de la criptografía de curvas elípticas. Desde un punto de vista teórico, todos los métodos criptográficos actuales se basan en la dificultad de los ordenadores para realizar dos operaciones: El cálculo del logaritmo discreto y la factorización de números primos. Estas operaciones tienen la propiedad muy útil de que son muy fáciles de realizar en un sentido (dada una serie de enteros, multiplicarlos para obtener su resultado es trivial) pero, sin embargo, su operación inversa (dado un numero calcular sus factores) resulta computacionalmente costoso. Es en esta asimetría a la hora de realizar estas operaciones en lo que se basa la seguridad de los sistemas criptográficos en uso actualmente. El área de las matemáticas en la que se basan los algoritmos criptográficos modernos se denomina álgebra abstracta, que estudia el comportamiento de diferentes conjuntos de elementos y sus operaciones. Mientras que el álgebra clásica se centra en el estudio de los números, veremos más adelante que hay otro tipo de conjuntos y operaciones que se pueden definir, y que disponen de propiedades criptográficas de interés. Uno de los conceptos fundamentales para la criptografía es el concepto de grupo, el cual le resultará familiar a aquella persona que haya estudiado el comportamiento de los elementos de Zn , los restos de la división por n. Este concepto es familiar para los alumnos de grado de las ciencias de computación, ya que la mayoría de los algoritmos clásicos de criptografía se basan en estos grupos. A grandes rasgos, un grupo se trata de un conjunto de elementos con el que definimos una operación de multiplicación que cumple ciertas propiedades. Resulta que estos grupos se pueden estudiar en conjunto, lo que nos da herramientas matemáticas con un gran poder a la hora de analizarlos. Esto ocasiona que tengamos que escoger los grupos en los que definimos nuestros algoritmos criptográficos con suma precaución, ya que si escogemos un grupo erróneo puede ser que ya no sea tan computacionalmente costoso romper nuestro algoritmo. El problema con los grupos Zn es que al fin y al cabo son grupos de números enteros, y lo números son algo que ha sido estudiado muy extensivamente en la historia de las matemáticas. Por ello existen métodos muy sofisticados para “atacar” la estructura de estos grupos. Algunos de ellos serán presentados en el capítulo 3. xi.

(12) Introducción. xii. La idea detrás de las curvas elípticas es elegir un grupo con una representación más compleja, en la que esta serie de ataques que existen para los grupos más simples no sean efectivos. No obstante, para poder entender las estructuras matemáticas detrás de las curvas elípticas, daremos una introducción a otros conceptos algo más avanzados que los de grupo, como el de anillo. Un anillo es un conjunto en el que, además de haber una operación de producto, se define también una operación de suma. Estas dos operaciones están bien interconectadas mediante la probablemente ya familiar para el lector propiedad distributiva. No obstante, mientras que a la suma le pediremos que cumpla que todos los elementos tengan inverso respecto a ella y que sea conmutativa, lo único que se requiere de la multiplicación para formar un anillo es que la operación de multiplicar sea asociativa. En particular, el ejemplo de anillo que más nos interesa es el anillo de polinomios, que son la manera genérica de estudiar los polinomios sobre R o C con los que ya están familiarizados los estudiantes de ingeniería. Cuando la operación de producto cumple las mismas propiedades que la operación de suma (conmutativa, todos los elementos no nulos tienen inverso multiplicativo) se dice entonces que el conjunto y las operaciones forman un cuerpo. Esto debe entenderse una “mejora” del anillo en la que, como ya hemos mencionado, la multiplicación se comporta correctamente. El ejemplo canónico de cuerpo con el que todo estudiante de ingeniería está familiarizado es R, el conjunto de todos los números reales junto con las operaciones de suma y producto. Todo elemento a de R tiene inversa respecto a la suma −a y la división 1/a (excluyendo al 0, que es “especial” como veremos más adelante). Dentro de los cuerpos los utilizados en la criptografía son los cuerpos finitos Fq . Los restos de dividir por un número primo, Zp , son un ejemplo de cuerpo finito, y son estos específicamente los utilizados por los algoritmos criptográficos clásicos como RSA. La construcción de estos cuerpos se verá en detalle más adelante, pero el concepto básico es que, de la misma manera que los cuerpos Zp son los restos de dividir por un número p, los cuerpos Fq son el resultado de dividir por un cierto polinomio f irreducible sobre Zp . Generalmente las curvas elípticas en la práctica se definen sobre los cuerpos Fq con q un número primo grande (por razones de seguridad y eficiencia). Sin embargo, en este trabajo implementaremos las curvas elípticas sobre cuerpos finitos de estructura arbitrariamente compleja. La ventaja de utilizar los grupos de las curvas elípticas respecto a los utilizados clásicamente es que hay varios ataques basados en la estructura de los grupos Zp que no son efectivos en el grupo de las curvas elípticas, al tener este una representación más compleja. Esto nos permite utilizar grupos de un tamaño mucho más pequeño que los utilizados actualmente en criptografía asimétrica. Por ejemplo, actualmente se utiliza el algoritmo RSA con claves de 3072 bits, mientras que usando criptografía de curvas elípticas se puede obtener un nivel de seguridad similar con 256 bits [1, Table 6.2] Este proyecto de fin de grado se estructura como sigue: en el capítulo 1 veremos en detalle los fundamentos del álgebra abstracta más relevantes a la hora de crear los cuerpos finitos. Daremos una explicación detallada de las estructuras de grupo, anillo y cuerpo, así como de sus propiedades más relevantes para el trabajo..

(13) Introducción. xiii. Seguidamente, en el capítulo 2 definiremos rigurosamente el concepto de curva elíptica, así como sus propiedades de interés a la hora de implementar algoritmos criptográficos. Asimismo, mostraremos que es posible dotar a los puntos de una curva elíptica de una estructura natural de grupo abeliano. Esta no es sino la ley de grupo que utilizaremos con fines criptográficos. Una vez tengamos estos fundamentos, pasaremos a implementar los algoritmos criptográficos, como se puede ver en el capítulo 3. Aquí presentaremos la característica fundamental detrás de la seguridad de toda la criptografía de curvas elípticas, el problema del logaritmo discreto. Veremos en qué consiste y esbozaremos algunos algoritmos generales que permiten obtener su solución, como pueden ser el algoritmo Baby-Step Giant-Step o el algoritmo rho de Pollard. De igual forma, daremos también una idea de los algoritmos que tienen un tiempo de ejecución mucho más rápido (el Index Calculus, que ha causado el paso a la utilización de la criptografía de curva elípticas). Veremos también varios algoritmos de criptografía asimétrica con curvas elípticas. Para cada uno de ellos, daremos demostraciones detalladas de corrección y ejemplos de su uso interactivo. Con el fin de ilustrar todos estos conceptos, se ha implementado una librería en el lenguaje de programación Julia que permite utilizar los cuerpos finitos y los polinomios con coeficientes sobre los mismos. Posteriormente, utilizando estas primitivas, se ha implementado un módulo de manejo de curvas elípticas y su aplicación a algoritmos criptográficos. De este modo, en el capítulo 4 describiremos las estructuras, diseño y algorítmica que subyacen a esta librería. Como beneficio social, este trabajo permitirá a los usuarios familiarizarse con los algoritmos de criptografía basada en curvas elípticas, con el objetivo de que los usuarios no escojan criptosistemas menos seguros por no entender el funcionamiento de los más modernos. La librería implementa varios algoritmos criptográficos y la habilidad de trabajar con los cuerpos finitos y los polinomios definidos sobre Zp . A partir del software generado, se abren varias vías de ampliación futura, como la realización de un análisis de vulnerabilidades que podría tener si se utilizase en un entorno de producción o ampliando la selección de cuerpos..

(14)

(15) Capítulo 1. Fundamentos matemáticos de la criptografía Los fundamentos matemáticos de la criptografía moderna descansan en las teorías de grupos y anillos (germen del álgebra conmutativa), así como en la teoría de cuerpos (primer paso hacia la celebrada teoría de Galois [13, Capítulo 8]). En este capítulo daremos una introducción a las partes más relevantes de estas teorías, que utilizaremos más adelante en la implementación de algoritmos criptográficos.. 1.1.. Grupos. Antes de poder introducir el concepto de cuerpo, tenemos que presentar unos conceptos más básicos. El primero de estos conceptos es el de grupo. En esta sección vamos a abordar una introducción a la teoría de grupos y algunos ejemplos de estos. Si se desea una introducción más profunda sobre teoría de grupos y anillos se puede consultar [3, Capítulos 3-7] o [9, Chapters 3-6, 9-11] Definición 1.1 (Grupo). Un grupo (G, ◦) es un conjunto de elementos G en el que se define una operación binaria ◦ definida como una función G × G → G que satisface ciertas propiedades. Estas son las siguientes: La operación ◦ es asociativa. Esto es, (a ◦ b) ◦ c = a ◦ (b ◦ c). Existe un elemento e ∈ G denominado la identidad de manera que, para todo a ∈ G e◦a=a◦e=e Para todo elemento a ∈ G existe un elemento denominado la inversa de a, a−1 que satisface que, para todo a ∈ G: a ◦ a−1 = a−1 ◦ a = e 1.

(16) Fundamentos matemáticos. 2. Un grupo se denomina finito si G es un conjunto finito. En este caso, el orden de G será el número de elementos de este y se denotará por |G|. De aquí en adelante la operación ◦ solo se indicará si puede haber lugar a confusión. En otro caso, la representaremos como a ◦ b = ab.. 1.1.1.. Ejemplos de grupos. En esta sección presentaremos unos cuantos ejemplos de grupos tanto para familiarizarnos con su estructura como para concretar los ejemplos algo abstractos dados en la parte anterior.. 1.1.2.. El grupo simétrico Sn. Vamos a presentar diversos ejemplos de grupo. En primer lugar, estudiemos grupo simétrico de orden n, denotado como Sn . Este grupo es el grupo de las permutaciones de los elementos de un conjunto de tamaño n, esto es, las diferentes formas de ordenarlos. Para ser precisos, sea A = {1, · · · , n} el conjunto formado por los n primeros números naturales, entonces Sn es el conjunto de todas las biyecciones de A sobre sí mismo. Esto es la manera formal de decir “todas las formas de ordenar los elementos de A”. La operación de grupo para Sn es entonces la composición de funciones, ◦. La composición de funciones es cerrada ya que, si tenemos x, y ∈ A y f, g aplicaciones biyectivas sobre A, tenemos que g ◦ f es biyectiva. Supongamos que g ◦ f (x) = g ◦ f (y), esto significa que g(f (x)) = g(f (y)). Como g es biyectiva, es inyectiva, y por lo tanto f (x) = f (y). Lo mismo ocurre con f al ser esta también inyectiva, luego x = y, luego vemos que la composición de funciones es inyectiva. La demostración de que esta es sobreyectiva se realiza de manera similar. La identidad e en este grupo, que se suele denotar IA , es la función identidad en A. Si tenemos f ∈ Sn , su inversa f −1 también pertenece a Sn . Los elementos de Sn se pueden representar si se conocen las imágenes de los n primeros números naturales. Esto es, si se tiene un α ∈ Sn , se puede representar con la matriz:. α=. 1. 2. .... n−1. n. !. α(1) α(2) . . . α(n − 1) α(n). Observación: La composición de aplicaciones no es conmutativa. Esto es, si tenemos α, β ∈ Sn , α ◦ β 6= β ◦ α. Esto implica que, en general, Sn no es un grupo abeliano (véase apartado 1.1.6)..

(17) Fundamentos matemáticos. 3. El grupo S3 En esta sección vamos a trabajar un poco el grupo S3 para ver cómo funcionan estas estructuras. El grupo S3 es el grupo de permutaciones de conjuntos de 3 elementos. Antes de trabajar con los elementos del grupo, vamos a introducir una forma de denotar los elementos de Sn de manera más compacta. Si tenemos α=. ! 1 2 3 2 3 1. Podemos denotar α como α = (123). La manera de interpretar esta notación es leyendo elemento a elemento de izquierda a derecha de manera que el elemento que estamos leyendo lo movemos a la posición del siguiente elemento en la serie. Cuando lleguemos al final, volvemos al principio. Para este ejemplo en concreto, la interpretación es “el 1 se mueve a la posición del 2, el 2 a la del 3 y el 3 a la del 1, que coincide con la representación matricial inicial. Es posible que no podamos explicar la permutación como un ciclo completo como en este caso. Para poder realizar dos ciclos disjuntos, veamos por ejemplo β ∈ S4 (el grupo de permutaciones de 4 elementos) de manera que. β=. ! 1 2 3 4 3 4 1 2. Evidentemente si hacemos lo anterior nos quedaríamos en que el elemento 1 lo movemos al 3 y el 3 al 1, es decir (13). La manera de continuar en este caso es empezar un nuevo ciclo con el siguiente elemento que no esté presente (en este caso el 2). El resultado en este caso sería que β = (13)(24). De ahora en adelante se empleará esta notación. Para hacer el cálculo del producto de dos permutaciones escritas con esta notación es muy sencillo. Simplemente hay que recordar αβ denota la biyección en la que primero se aplica β y luego α. Por ejemplo, si tenemos las permutaciones α = (254) y β = (132), el resultado de multiplicarlas se obtendría diciendo: 1. Comenzamos con el elemento 1. Consideramos primero la imagen por la permutación β el elemento 1 (al 3). Visto esto vamos a la permutación α y vemos donde envía esta el elemento 3 (lo mantiene en su sitio). Por lo tanto, tenemos que de momento nuestro resultado αβ = (13. 2. Seguimos con el último elemento de la solución. Veamos donde envía la permutación β (al 2) el 3. La permutación α manda el elemento 2 al elemento 5 luego nuestra solución es ahora αβ = (135. 3. Vemos ahora que β(5) = 5 y α(5) = 4. Luego añadimos esto al resultado: αβ = (1354 4. β(4) = 4 y α(4) = 2. Luego el resultado es ahora αβ = (13542.

(18) Fundamentos matemáticos. 4 ◦ I α α0 β β0 β 00. I I α α0 β β0 β 00. α α α0 I β 00 β β0. α0 α0 I α β0 β 00 β. β β β0 β 00 I α α0. β0 β0 β 00 β α0 I α. β 00 β 00 β β0 α α0 I. Cuadro 1.1: Tabla de Cayley para S3. 5. β(2) = 1 y α(1) = 1, que es el elemento inicial de nuestro ciclo. Cerramos el ciclo αβ = (13542). Como ya no quedan más elementos, hemos terminado. Introducida esta notación, los elementos de S3 son la identidad I, las permutaciones que cambian todos los elementos de lugar (α) y las permutaciones que mantienen uno fijo e intercambian los otros dos(β). Estos elementos, escritos en la notación introducida son:. α = (123), α0 = (132) β = (12), β 0 = (13), β 00 = (23) Otra forma de representar los grupos es mediante su tabla de Cayley. En esta tabla, se representan en las filas y las columnas los elementos del grupo, y en las celdas el resultado de operar esos dos elementos. Por ejemplo, con los anteriores ejemplos tenemos que α ◦ α = (123)(123) = (132) = α0 . Si realizamos todas las multiplicaciones necesarias, podemos ver que obtenemos la tabla 1.1. Lo interesante de la tabla de Cayley es que describe al grupo completamente, ya que en esta están presentes todos los elementos del grupo, así como el resultado de operarlos entre ellos con la operación de este.. 1.1.3.. El grupo diedral Dn. Otro ejemplo típico de grupo es el grupo diedral de orden n, denotado habitualmente como Dn . Este es el grupo de las simetrías de un polígono regular de n lados. Las simetrías son los movimientos M en el plano de manera que dado un polígono Pn , M (Pn ) = Pn , es decir, que mantienen la forma del polígono idéntica. La composición de simetrías, ◦, es también una simetría, ya que R ◦ S(Pn ) = R(S(Pn )) = R(PN ) = Pn ; luego la operación está cerrada en el grupo. La identidad es I, la rotación de 0 grados y la composición es asociativa, luego efectivamente Dn es un grupo. Todo elemento tiene inverso puesto que R−1 (Pn ) = R−1 (R((Pn )) = R−1 ◦ R(Pn ) = Pn . [3, Proposición 3.6.1].

(19) Fundamentos matemáticos. 5. El grupo D3 El grupo D3 es el grupo de las simetrías de un triángulo equilátero. En este grupo, se puede ver que existen 6 elementos: La identidad I, que mantiene la posición de todos los vértices del triángulo (que se puede ver como una rotación de 0 grados; las rotaciones R y R2 de 120 y 240 grados respectivamente y las simetrías respecto a la bisectriz de cada uno de los vértices, S1 , respecto al vértice superior, S2 , respecto al vértice inferior derecho y S3 , respecto al vértice inferior izquierdo. De este modo, nuestro grupo es (D3 = {I, R1 , R2 , S1 , S2 , S3 } , ◦), Esto se puede ver ilustrado en las figuras 1.1 y 1.2 a. a. I. b. c. b. c. a. c. R. b. c. a. b. a. b. 2. R. c. b. a. Figura 1.1: Rotaciones en D3. c.

(20) Fundamentos matemáticos. 6. a. a. S1. b. c. c. b. a. c. S2. b. c. b. a. a. b. S3. b. c. a. c. Figura 1.2: Simetrías en D3. Podemos describir este grupo también a través de su tabla de Cayley, que podemos ver en el cuadro 1.2. ◦. I. R. R2. S1. S2. S3. I. I. R. R2. S1. S2. S3. R. R. R2. I. S3. S1. S2. R2. R2. I. R. R2. S3. S1. S1. S1. S2. S3. I. R. R2. S2. S2. S3. S1. R2. I. R. S3. S3. S1. S2. R. R2. I. Cuadro 1.2: Tabla de Cayley para D3. 1.1.4.. El grupo lineal general GL(n, R). Otro de los ejemplos usuales de grupo es el grupo lineal general. Este es el grupo de todas las matrices invertibles con coeficientes en R. Esto es, el grupo de matrices . a1,1. a1,2. ···.   a2,1 a2,2 · · ·  A= . .. ..  .. . .  an,1 an,2 · · ·. a1,n. .  a2,n   ..  .   an,n.

(21) Fundamentos matemáticos. 7. de manera que existe A−1 tal que AA−1 = I. La matriz identidad I se trata de una matriz con unos en su diagonal y ceros en el resto de posiciones. Esto es: . 1 0 ···.  0 1 · · ·  I = . . . ..  .. ..  0 0 ···. 0. .  0  ..  .  1. Este conjunto junto a la operación de multiplicación usual de matrices forma el grupo GL(n, R). Se observa que la inversa de A es A−1 , que existe por definición (ya que nuestra definición del conjunto incluye las inversas de todos los elementos del grupo). La identidad del grupo es I. Observación 1.2. Recuérdese que, si una matriz tiene inversa, esto significa que su determinante es distinto de 0. El resultado de multiplicar dos matrices n × n con determinante distinto de 0 también tiene de resultado una matriz n × n con determinante 6= 0. Luego la operación de multiplicación está cerrada sobre nuestro conjunto GL(n, R). La operación de multiplicación de matrices es asociativa, luego satisface todas las propiedades y (GL(n, R), ·) es un grupo.. 1.1.5.. El grupo unitario U(2). Como último ejemplo de grupo, vamos a describir el grupo unitario de orden 2 para trabajar con un grupo de una estructura algo más complicada. Consideremos el grupo de las matrices de la siguiente forma: ( U (2) =. A=. a b c d. !. ) : a, b, c, d ∈ C y A · A∗ = I. El significado de A∗ es la matriz traspuesta y conjugada de A. Esto es, el grupo de matrices 2 × 2 con coeficientes complejos y cuya multiplicación por su traspuesta conjugada tiene como resultado la matriz identidad I. Veamos que el conjunto anterior junto con la operación de multiplicación de matrices forma un grupo. ! ! a b e f En efecto, si tenemos dos elementos A = yB= de SU(2), tenemos entonces que su c d g h producto es el siguiente: AB =. a b c d. ! ·. e f h g. ! =. ae + bg af + bh. !. ce + dg cf + dh. La suma de y multiplicación de números complejos es un número complejo, luego AB satisface la primera condición de que todos sus elementos pertenecen a C..

(22) Fundamentos matemáticos. 8. Tenemos que comprobar ahora que AB · (AB)∗ = I. Esto es consecuencia de que AA∗ = I y BB ∗ . En efecto, operando tenemos que: AB · (AB)∗ = AB · ((AB)t )c = (AB) · (B t At )c = ABB ∗ A∗ = AIA∗ = AA∗ = I. Donde At denota la matriz traspuesta de A y Ac la conjugada de la misma. Obsérvese que (AB)t = B t At pero (AB)c = Ac B c . Vemos que efectivamente el resultado de operar dos elementos del grupo es a su vez un elemento del grupo. Es evidente que todo elemento tiene inversa, puesto que es su matriz transpuesta conjugada. La identidad es por tanto la matriz I, quedando así demostrado que SU(2) es un grupo.. 1.1.6.. Grupos abelianos. Si, además de las anteriores propiedades, el grupo satisface que para todo g, h ∈ G : g ◦ h = h ◦ g entonces decimos que el grupo es abeliano. El ejemplo canónico de grupo abeliano es el conjunto de los números enteros Z junto con la operación de suma +. Observamos que la identidad sería el elemento 0 y la inversa de cada elemento n es −n. Es un grupo abeliano ya que satisface que la suma es conmutativa, es decir, para todo m, n ∈ Z se tiene que m + n = n + m Observación 1.3 (Notación Aditiva). Cuando se trata de grupo abelianos, se suele utilizar el símbolo + para denotar la operación de grupo. De esta manera, el elemento identidad se suele identificar también como 1, y la notación multiplicativa g n = g · g . . . g se pasa a denotar en la notación aditiva como | {z } n · g = ng = g + g + . . . g para cierto n ∈ N. | {z }. n veces. n veces. 1.1.6.1.. El grupo (Zn ,+). Fijemos n ≥ 1. El grupo cociente Z/nZ = Zn 1 , los restos de dividir por n, es un grupo junto con la operación de la suma módulo n, por las mismas razones expuestas en el párrafo anterior. Recordamos que los elementos de Zn son clases, esto es, conjuntos de elementos que satisfacen una relación de equivalencia. Para este caso, nuestra relación es que a ∼ b si a − b = kn para algún k ∈ Z. Dada esta relación, los elementos de Zn normalmente se denotan eligiendo el representante de la clase entre 0 y n − 1. De este modo, 0 es la clase de los elementos que tienen resto 0 al dividir por n. Esto es, los múltiplos de n. Similarmente, 1 es la clase de los elementos cuyo resto es 1 al dividir por n. Es evidente que el número de elementos de Zn es n, ya que los restos posibles son los números desde 0 hasta n − 1. Por lo tanto, Zn es un grupo finito de orden n. 1. Para una introducción a los grupos cocientes, ver apartado 1.1.7..

(23) Fundamentos matemáticos. 9. Una vez definidas estas clases, tenemos que la operación del grupo será la suma módulo n. Esto es, si tenemos a, b ∈ Zn , a + b = a + b = a + b (mod n). Esta operación satisface las propiedades de grupo, ya que está cerrada en Zn , y dado cierto a ∈ Zn , su inversa no es otra que −a.. 1.1.6.2.. El grupo (Z∗n , ·). Visto que el grupo Zn es un grupo con la operación de suma en módulo n, sabemos que la multiplicación de enteros es también una operación asociativa y conmutativa. Luego es lógico plantearse si Zn junto con la multiplicación tiene una estructura de grupo. Por Z∗n denotaremos las unidades de Zn . Las unidades son los elementos invertibles de una operación. En (Zn , +) todos los elementos son unidades, puesto que si tenemos cierto a su inversa simplemente es −a. Sin embargo, no ocurre lo mismo con el producto en módulo n, puesto que la inversa de cierto a ya no se obtiene de manera directa (no podemos hacer 1/a y tomar su clase). La condición para que un elemento tenga inversa es que sea coprimo con n, esto es, que gcd(a, n) = 1. siendo gcd(a, b) el máximo común divisor de a y b. Si esto ocurre, podemos obtener la inversa mediante la identidad de Bézout, que nos dice que para a y b dos números enteros, existen enteros x e y tales que:. ax + by = gcd(a, b). (Identidad de Bézout). Luego si tenemos que a es coprimo con n, gcd(a, n) = 1. Si tomamos clases módulo n en la ecuación anterior, nos queda que: ax + ny = 1 (mod n) ⇔ ax + 0 = 1 (mod n) ⇔ ax = 1 (mod n) ⇔ a · x = 1 (mod n). Y, por lo tanto, x es la inversa de a en módulo n. Visto esto, tenemos que efectivamente (Z∗n , ·) es un grupo abeliano, ya que la identidad es 1, dado un elemento a, podemos obtener a−1 mediante la Identidad de Bézout y la operación de grupo a · b = ab = ab (mod n) es asociativa y conmutativa. El número de elementos de este cuerpo queda definido por la función ϕ de Euler, que se define como: ϕ(n) = |{m ∈ N : m ≤ n y gcd(n, m) = 1}|. (Función ϕ de Euler). O dicho de otra forma, el número de elementos menores o iguales que m coprimos con el mismo. Luego |Z∗n | = ϕ(n). Proposición 1.4. Si a no es coprimo con n, entonces a no tiene inverso en (Zn , ·).

(24) Fundamentos matemáticos. 10. Demostración. Si tenemos gcd(a, n) 6= 1 esto significa que existe cierto d de manera que d|a y d|n. Podemos escribir que: a=r·d n=s·d Visto esto, podemos hacer las siguientes operaciones: a · s = r · d · s ⇔ a · s = r · s · d ⇔ a · s = r · n ⇔ as = rn (mod n) ⇔ as = 0 Luego existe cierto s 6= 0 tal que a · s = 0. Cuando esto sucede se dice que a es un divisor de cero. Si un elemento es divisor de cero, este no tiene inversa. Esto lo podemos demostrar de la siguiente manera: Supongamos que tenemos un a divisor de cero con inversa a−1 y b 6= 0 tal que ab = 0. Entonces:. b = 1b = a−1 ab = a−1 · 0 = 0 Luego b = 0 y b 6= 0. Esto es una contradicción, y por lo tanto no existe a−1 . Con este grupo, se puede ver el siguiente teorema. sean a y n dos números coprimos, Teorema 1.5. Identidad de Euler Sean a y n que satisfacen que gcd(a, n) = 1. Entonces: aϕ(n) ≡ 1 (mod n) La demostración de este teorema requiere unos conceptos que se presentan en el apartado 1.1.7. (Véase 1.7).. 1.1.7.. Subgrupos. Es útil en ciertas ocasiones investigar el comportamiento de grupos más pequeños “contenidos” dentro de un grupo mayor. Decimos que un subconjunto H de G es un subgrupo si H, junto con la operación de G, es un grupo. Observamos que esto significa que, si tenemos g, h ∈ H, entonces gh ∈ H y g −1 ∈ H. Hay ciertos grupos en los que conociendo un único elemento podemos computar todos los demás elementos del grupo. A este elemento lo denominaremos elemento generador. Tenemos entonces que, dado cierto a ∈ G, definimos hai = {ak : k ∈ Z}, donde ak significa aplicar la operación del grupo k veces. Si G contiene algún elemento a de manera que hai = G, decimos entonces que G es un grupo cíclico y, en este caso, se dice que a es un elemento generador de G. Definimos también el orden de a como el entero n más pequeño de manera que an = e y lo denotaremos |a|. Si no existe dicho entero, decimos que el orden de a es infinito..

(25) Fundamentos matemáticos. 11. Ejemplo 1.1. Ejemplos de subgrupos y elementos generadores. Tenemos que 2Z ⊆ Z es un grupo de orden infinito, y sin embargo está generado por 2, un único elemento (y por tanto obviamente finito). En el caso de (Zn , +) un grupo de orden n, tenemos que 1 es un generador. Definimos gH = {gh : h ∈ H} y Hg = {hg : h ∈ H} como las clases por la izquierda y por la derecha de H en G. Podemos definir una relación de equivalencia ∼ en G de manera que x ∼ y si x = yh para algún h ∈ H. Se puede demostrar que las particiones generadas por dicha relación de equivalencia no son otras que las clases de H por la izquierda. De la misma forma podemos ver las clases por la derecha de H como particiones de G. Definimos también el índice de H en G como el número de clases por la izquierda de H. Esto lo denotaremos como [G : H]. Teorema 1.6 (Lagrange). Sea G un grupo finito y H un subgrupo de G. Entonces, |H| divide a |G| y [G : H] =. |G| |H|. Demostración. La idea de la demostración se basa en que, si tenemos un subgrupo H de G, ambos grupos finitos, entonces tenemos que el número de clases por la izquierda de H en G es también finito, y además todas estas clases tienen el mismo número de elementos. Esto lo podemos ver observando que si podemos definir una biyección entre el número de elementos de gH y H. Sea ϕ : H → gH la aplicación h → gh. Se puede ver que esta aplicación es inyectiva ya que, si tenemos dos elementos h1 y h2 , entonces podemos ver que f (h1 ) = f (h2) ⇒ gh1 = gh2 ⇒ h1 = h2 , ya que tenemos la propiedad cancelativa por la izquierda. Esta aplicación es también sobreyectiva, ya que si tenemos cierto gh ∈ gH entonces su contraimagen no es otra que h, ya que f (h) = gh. Luego la aplicación ϕ es una biyección. Luego todas las clases por la izquierda de H tienen el mismo número de elementos, en concreto |H|. Una vez visto esto, podemos definir el G/H como el conjunto de las clases de equivalencia definidas por la relación g ∼ g 0 ⇔ g = g 0 h para cierto h ∈ H. Esta relación define las clases por la izquierda de H en g, y por lo tanto el conjunto será G/H = {H, g1 H, g2 H . . . gn H}. Si queremos calcular |G/H|, entonces basta con observar que, como hemos visto anteriormente, todos los elementos gi H tienen el mismo número de elementos que H y, por lo tanto, |G/H| = |H| + |H| . . . |H| = n|H|. De aquí podemos {z } | n veces. despejar que, si vemos que n es justamente el índice de G en H llegamos a que [G : H] = Visto este teorema, obtenemos el siguiente resultado de gran importancia:. |G| |H| ..

(26) Fundamentos matemáticos. 12. Corolario 1.7 (Identidad de Euler). Sean a y n dos números enteros tales que gcd(a, n) = 1. Entonces:. aϕ(n) ≡ 1(mod n) donde ϕ(n) es la función ϕ de Euler (Véase Función ϕ de Euler) Demostración. La demostración de este teorema es sencilla con las herramientas que hemos desarrollado, puesto que sabemos que si tenemos el grupo (Z∗n , ·), el orden de este grupo es precisamente ϕ(n). Luego tenemos que para cualquier a ∈ Z∗n , |hai| divide a ϕ(n) (por teorema 1.6). Escribimos ϕ(n) = km para algún entero m. Luego: aϕ(n) = akm = (ak )m = 1m = 1 (mod n). Observación 1.8. Para el caso particular de que n sea un número primo p, ϕ(p) = p − 1 y se obtiene lo siguiente: ap−1 ≡ 1 mod n. Este resultado es conocido como el Pequeño teorema de Fermat.. Subgrupos normales Los subgrupos normales son subgrupos que satisfacen la condición de que, dados dos grupos G y N , N será un subgrupo normal de G si satisface que, para todo n ∈ N y para todo g ∈ G: gng −1 ∈ N Esta operación de “rodear” un elemento n con otro elemento g y su inversa g −1 se denomina conjugar, y los subgrupos normales tienen la propiedad de que “absorben” la conjugación. Esto es que, si se conjuga un elemento de N con uno de G, el resultado estará en N . Se puede dar una definición equivalente utilizando el concepto de clases por la izquierda y derecha, de manera que un subgrupo N de un grupo G diremos que es normal si gN = N g para todo g ∈ G. Es decir, que sus clases por la derecha y por la izquierda sean iguales. Esta estructura es importante porque nos permite definir una estructura de grupo utilizando las clases de N en G, lo que denominaremos el grupo cociente. Sea N un subgrupo normal de G, entonces las clases de N en G forman un grupo con la operación (aN )(bN ) = abN . Este es el que se denomina el grupo cociente, y se denota G/N ..

(27) Fundamentos matemáticos. 13. Lema 1.9. Sea un grupo G y un subgrupo H de G. Se tiene que si [G : H] = 2 entonces H es normal. Demostración. Si tenemos que [G : H] = 2 entonces es cierto que |G|/|H| = 2 por teorema 1.6. Esto implica que las clases por la izquierda de G son {H, gH}, ya que solo tenemos dos clases de por la izquierda posibles, el propio H y la “otra”. En las clases por la derecha nos sucede lo mismo, ya que las únicas clases por la derecha de G posibles son {H, Hg}. Tenemos que una definición de normal el que gH = Hg. De estos dos grupos, si tomamos gH, y esta tiene que ser igual a una de las clases de equivalencia por la derecha. Tenemos dos posibilidades, o gH = H o gH = Hg. Si gH = H, esto implica que g ∈ H y luego, por lo tanto no es posible (ya que tiene que haber dos clases). La única otra posibilidad es que gH = Hg, lo que implica que H es un subgrupo normal. Ejemplo 1.2. Subgrupos normales en y no normales en S3 . Podemos observar que en S3 existen los siguientes subgrupos: Los subgrupos triviales: Estos es sencillo que ver que son subgrupos normales, puesto que en el caso del subgrupo {I}, gIg −1 ∈ {I} y para el caso del subgrupo total, evidentemente cualquier operación estará dentro del grupo completo ya que la operación de grupo es cerrada en el grupo. Los subgrupos generados por las permutaciones de dos elementos: Esto es, hβi, hβ 0 i y hβ 00 i. Estos subgrupos constan únicamente de dos elementos, el generador e I. De estos ninguno es normal, ya que al conjugar por una permutación de 3 elementos no se obtiene un elemento del subgrupo. Por ejemplo, si tomamos hβi = {I, (12)} y calculamos αβα−1 = αβα0 obtenemos que αβα0 = (123)(12)(132) = (123)(13) = (23) ∈ / hβi. Se hacer la misma cuenta y ver que sucede lo mismo para hβ 0 i y hβ 00 i. El subgrupo generado por α: Tenemos que hαi = {α, α0 , I} sí que es un subgrupo normal por 1.9, puesto que tenemos que [S3 : hαi] = 2. Observación 1.10. Obsérvese que, si un grupo G es abeliano, todos sus subgrupos son normales. Demostración. Si G es abeliano, entonces la operación de grupo es conmutativa. Hemos dicho que un subgrupo es normal si sus clases por izquierda y derecha son iguales. En efecto: gN = {gn : n ∈ N } = {ng : n ∈ N } = N g.

(28) Fundamentos matemáticos. 1.1.8.. 14. Isomorfismos y homomorfismos. Decimos que dos grupos (G, ◦) y (H, ·) son isomorfos si existe una aplicación biyectiva φ : G → H de manera que se mantiene la estructura de grupo. φ(a ◦ b) = φ(a) · φ(b) En este caso, se dice que la aplicación φ es un isomorfismo. Los isomorfismos nos permiten definir la “igualdad” entre dos grupos con elementos diferentes. Cuando definimos un isomorfismo entre dos grupos G y H lo que estamos diciendo es que, aunque sean grupos diferentes, se comportan de la misma manera y por lo tanto para el estudio de sus propiedades los podemos considerar equivalentes. Un ejemplo de isomorfismo es el existente entre S3 y D3 . Este se puede observar a simple vista viendo sus tablas de Cayley: Cuadro 1.3: Tablas de Cayley para S3 y D3. ◦ I α α0 β β0 β 00. I I α α0 β β0 β 00. α α α0 I β 00 β β0. α0 α0 I α β0 β 00 β. β β β0 β 00 I α α0. β0 β0 β 00 β α0 I α. β 00 β 00 β β0 α α0 I. ◦ I R R2 S1 S2 S3. I I R R2 S1 S2 S3. R R R2 I S2 S3 S1. R2 R2 I R S3 S1 S2. S1 S1 S3 R2 I R2 R. S2 S2 S1 S3 R I R2. S3 S3 S2 S1 R2 R I. Es evidente al ver esto que podemos definir un isomorfismo φ : S3 → D3 de la siguiente manera: IS3 → ID3 , α → R, α0 → R2 , β → S1 , β 0 → S3 , β 00 → S2 Se pueden definir también relaciones entre grupos no tan “fuertes” como un isomorfismo. A estas relaciones se les denomina homomorfismos, y son también una aplicación φ : G → H que mantiene la estructura de grupo. Sin embargo, en el caso de los homomorfismos, φ no es biyectiva. Definimos también el kernel de la aplicación φ : G → H como ker(φ) = {g : φ(g) = eh }. Este grupo es interesante porque es un subgrupo normal de G.. 1.1.8.1.. Teoremas de isomorfía. Teorema 1.11 (Primer teorema de isomorfía). Sean G y H dos grupos y φ : G → H un homomorfismo. Entonces: 1. ker(φ) es un subgrupo normal de G.

(29) Fundamentos matemáticos. 15. 2. La imagen de φ es un subgrupo de H 3. La imagen de φ es isomorfa al grupo G/ker(φ) Demostración. Vamos a demostrar los elementos del anterior teorema de uno en uno. Se observa lo siguiente: 1. Tenemos que ker(φ) = {g ∈ G : φ(g) = e}. Podemos comprobar si un subgrupo H de G es normal si para todo g ∈ G, ghg −1 ∈ H. Comprobemos si esta igualdad se mantiene con ker(φ). Sea h ∈ ker(φ) φ(ghg −1 ) = φ(g)φ(h)φ(g −1 ) = φ(g) · e · φ(g −1 ) = φ(g)φ(g −1 ) = e ∈ ker(φ). Luego la primera aserción queda demostrada. 2. Para demostrar la segunda aserción, tenemos que φ(eG ) = eH , luego eH ∈ Im(φ). Consideremos dos elementos a, b ∈ H. Al ser φ un homomorfismo, tenemos que ambos tienen una contraimagen en G que denotaremos como aG , bG . Por la definición de homomorfismo, entonces:. ab = φ(aG )φ(bG ) = φ(aG bG ). Luego si a y b pertenecen a H, ab también. La demostración con las inversas se realiza de la misma manera sustituyendo b por a−1 . 3. Para la tercera parte, sea el morfismo π : G/K → Im(φ) definido por π(gK) = φ(g) donde K = ker(φ). Tenemos entonces que π está bien definido, ya que si gK = g 0 K entonces g 0 = gk para cierto k ∈ K. Luego: φ(g 0 ) = φ(gk) = φ(g)φ(k) = φ(g) · e = φ(g). La aplicación π es también un homomorfismo, ya que se puede observar que π(gKg 0 K) = π(gg 0 K) = φ(gg 0 ) = φ(g)φ(g 0 ) = π(gK)π(g 0 K). El homomorfismo π es también inyectivo, ya es sencillo ver que si tenemos π(gK) = e entonces φ(g) = e y por lo tanto g ∈ K, de lo que sigue que gK = K. Es sobreyectiva ya que φ también lo es (sobre su imagen)..

(30) Fundamentos matemáticos. 16. Lo que nos viene a decir este teorema es que los grupos cocientes y los homomorfismos de grupos son equivalentes. Como consecuencia este resultado fundamental, se desprenden dos importantes consecuencias: Teorema 1.12 (Segundo teorema de isomorfía). Sea G un grupo. Definimos S como un subgrupo de G y N como un subgrupo normal de G. Se cumple que: 1. SN es un subgrupo de G. 2. S ∩ N es un subgrupo normal de S. 3. (SN )/N y S/(S ∩ N ) son isomorfos. Teorema 1.13 (Tercer teorema de isomorfía). Sea G un grupo y N y H subgrupos normales de G con N ⊂ H. Entonces: G/H es isomorfo a. G/N . H/N. Para una demostración de los dos últimos teoremas, véase [3, Capítulo 4.5]. 1.2.. Anillos. Los anillos son una estructura algebraica algo más compleja que los grupos. Si tenemos un grupo abeliano (R, +), podemos construir un anillo (R, +, ·) añadiéndole otra operación · que satisfaga que, para todo a, b, c ∈ R (a · b) · c = a · (b · c) (Asociatividad). a · (b + c) = a · b + a · c (Distributiva por la izquierda). (a + b) · c = a · c + b · c (Distributiva por la derecha). Recordamos que en este caso también omitiremos el escribir la operación de multiplicación, de manera que a · b = ab. En los anillos, nos referiremos a la unidad aditiva e como 0, y a la identidad multiplicativa como 1. En principio, un anillo no tiene por qué tener unidad multiplicativa, pero nosotros nos restringiremos a los que sí que tienen, denominados anillos unitarios. La unidad multiplicativa cumple que 1 6= 0 y que para todo a ∈ R : a1 = 1a = a Observación 1.14. En un anillo, la operación · no tiene por qué ser conmutativa, o que todos los elementos dispongan de inverso respecto a la misma..

(31) Fundamentos matemáticos. 17. A los anillos que cumplen que el producto es conmutativo se les denomina anillos conmutativos. De ahora en adelante, trabajaremos siempre con anillos conmutativos y unitarios. Si además satisfacen que para todo a, b ∈ R si ab = 0 entonces a = 0 o b = 0, se denomina al anillo un dominio de integridad. Como última característica “extra”, si resulta que todos los elementos de cierto R − {0} tienen inversa respecto al producto, decimos que R es un cuerpo. A los elementos con inversa respecto al producto en cierto anillo R se les denomina unidades de R. En los anillos existe el concepto de divisor de cero, que ocurre si para cierto a ∈ R, existe b 6= 0 tal que ab = 0 En este caso, a sería un divisor de cero. Ejemplo 1.3. Un ejemplo canónico de anillo es el conjunto de enteros Z junto con las operaciones de suma y producto. De hecho, este anillo tiene más propiedades que las mínimas requeridas, ya que el producto es conmutativo y, si tenemos dos elementos de Z a y b de manera que ab = 0, se cumple que a = 0 o b = 0, luego es también un dominio de integridad. Se observa que Z no es un cuerpo, ya que existen elementos que no tienen inversa respecto al producto (2 ∈ Z pero. 1 2. ∈ / Z).. Definimos también la característica de un anillo como el entero n más pequeño de manera que n1 = 1 + 1 + · · · + 1 = 0, donde r es cualquier elemento del anillo. | {z } n veces. Si no existe ningún n que satisfaga esto, se dice que la característica de R es 0. Proposición 1.15. La característica de un dominio de integridad es 0 o un número primo. Demostración. Sea D un dominio de integridad con característica n no prima y no cero. Por lo tanto, podemos escribir n como un producto de dos enteros positivos a y b de manera que n = ab con a y b menores que n. La característica de n es el entero más pequeño de manera que n1 = 1 + 1 + 1 + · · · = 0. | {z } n veces. Tenemos entonces que 0 = n1 = (ab)1 = (a)1(b)1. Como en D no hay divisores de 0, tenemos que o bien a = 0 o b = 0, lo que implica que la característica de D sería menor que n, lo cual es una contradicción. Por lo tanto, n tiene que ser primo. Si no existe ningún n de manera que n1 = 0, entonces la característica de D será 0, que es la otra alternativa.. 1.2.1.. Ejemplos de anillos. El anillo Z[i] Se define el conjunto Z[i] = a + bi : a, b ∈ Z donde i2 = −1 como los enteros gaussianos. Estos son los números complejos de manera que tanto su parte real como imaginaria son un número entero..

(32) Fundamentos matemáticos. 18. Este conjunto junto con las operaciones de suma y producto de números complejos forma un anillo, ya que podemos ver lo siguiente: La suma de dos elementos α, β de Z[i] es sumar la parte real de α con la parte real de β y la parte imaginaria de α con la parte imaginaria de β. Todos estos números son enteros, luego como sabemos que la suma de enteros es una operación conmutativa, asociativa y con inversas para todo elemento, tenemos que (Z[i], +) es un grupo abeliano. El producto de dos enteros gaussianos se define de la misma manera que el producto de dos números complejos. Este producto ya sabemos que es conmutativo y asociativo, luego como los elementos de Z[i] son un subconjunto de los números complejos, en este caso también lo es. Solo faltaría comprobar que el producto de dos enteros gaussianos es también un número gaussiano: Sean dos enteros gaussianos a + bi, c + di. Su producto está definido como: (a + bi)(c + di) = ac + adi + bic + bdi2 . Como i2 = −1, tenemos que ac + adi + bic + bdi2 = ac + adi + bic − bd. Reorganizamos los términos de manera que nos quede de la forma a + bi, y obtenemos (a + bi)(c + di) = (ac − bd) + (ad + bc)i. El producto y suma de números enteros es también un número entero, luego tanto ac − bd como ad + bc serán números enteros y por lo tanto el resultado de multiplicar dos enteros gaussianos es otro entero gaussiano. Observación 1.16. Z[i] no es un cuerpo: Se puede ver que, aunque Z[i] es un anillo, este no es un cuerpo. En efecto, es fácil comprobar que 2 + 0i ∈ Z[i], pero sin embargo este elemento no tiene inversa respecto al producto en Z[i].. Las funciones continuas sobre los números reales Sea X el conjunto de funciones continuas f : R → R. Se tiene que X es un anillo con las operaciones de suma y multiplicación punto a punto de funciones. Esto es, f +g(x) = f (x)+g(x) y f ·g(x) = f (x)·g(x). Es sencillo ver que esto es un anillo, puesto que tanto las funciones como las operaciones están definidas sobre los números reales (que ya sabemos que satisfacen las propiedades de anillo) y por lo tanto este conjunto también lo será. Podemos comprobar si este anillo cumple las condiciones necesarias para ser un dominio de integridad. Recordamos que para esto se tiene que cumplir que, para todos los elementos del anillo, si ab = 0, entonces a = 0 o b = 0. La unidad con la suma en este caso es sencillo ver que es c(x) = 0, mientras que para la multiplicación tenemos que la identidad será i(x) = 1..

(33) Fundamentos matemáticos. 19. Proposición 1.17. X no es un DIP. Demostración. Consideremos las funciones:  0 x < 0 f (x) = 1 x ≥ 0.  1 x < 0 g(x) = 0 x ≥ 0. Se puede ver que f 6= c(x) y g 6= c(x). Sin embargo, es sencillo ver que f · g(x) = c(x). Es de interés ver también cuáles son las unidades de R. Como las operaciones que hemos definido son punto a punto, la inversa de una función f se puede ver como las funciones en las que se pueda tomar inversas punto a punto de cada elemento. Como hemos definido nuestras funciones sobre R, las unidades de X son entonces las funciones en las que para todo x ∈ R, la función no tome nunca un valor no invertible. En concreto en R el único valor sin inversa es el 0, y por lo tanto las unidades de X será el conjunto {f (x) : f (x) 6= 0 para todo x ∈ R}.. Subanillos e ideales Al igual que en teoría de grupos, también existe el concepto de subanillo para los anillos. Dado cierto anillo R, decimos que un subconjunto S de R es un subanillo si S junto con las operaciones de R tiene estructura de anillo. Del mismo modo que en teoría de grupos había subgrupos “especiales” que denominábamos normales porque tenían ciertas características interesantes (teorema 1.11), existe también este concepto para los anillos. Denominamos a un anillo I un ideal de R si para todo r ∈ R se tiene que rI ⊆ I e Ir ⊆ I. Una manera intuitiva de interpretar esto es que los elementos del ideal “absorben” a los del anillo mediante el producto. Cuando multiplicamos un elemento del anillo y uno del ideal, el resultado pertenece al ideal. Todo anillo tiene por lo menos dos ideales triviales, {0} y R. Para los anillos conmutativos, dado un a ∈ R, definimos (a) = ar : r ∈ R como el ideal principal generado por a. El conjunto de todos estos ideales son los ideales principales de R. Ejemplo 1.4. El conjunto nZ, los múltiplos de n ∈ Z es un ideal. Es evidente que para cualquier b∈ / nZ, dado cierto a = nk ∈ nZ, ab = bnk ∈ nZ. Vemos también que el ideal nZ es un ideal principal.. Dominios de ideales principales Si para cierto anillo R tenemos que todos sus ideales son principales, decimos que R es un dominio de ideales principales, a veces denotado como DIP. Estos tienen la propiedad de que todos sus elementos pueden ser factorizados como un producto de elementos primos del anillo..

(34) Fundamentos matemáticos. 20. Ejemplo 1.5. Z es un DIP. Demostración. Tenemos que comprobar si para cualquier ideal I de Z, I son los múltiplos de cierto entero n. Si I = {0} entonces I es el ideal generado por 0 y es principal. Si I 6= {0}, consideremos n el entero positivo más pequeño de I. Evidentemente (n) ⊆ I, ya que por definición todos los múltiplos de n tienen que estar en I. Supongamos que tenemos otro elemento m de I. Entonces podemos escribir que m = nq + r, con 0 ≤ r < n. Por lo tanto, r = m − qn, donde se ve que tanto m como qn son elementos del ideal. Como hemos escogido m de manera que sea el elemento positivo más pequeño de I, r tiene que ser 0, ya que tiene que ser más pequeño que n. Luego tenemos que m = nq + 0 y, por lo tanto, m = nq, y pertenece tanto a I como (n). Por lo tanto, necesariamente I = (n).. Más en general, tenemos Teorema 1.18. Si K es un cuerpo, K[x] es un DIP. Demostración. La demostración de este resultado es similar a la de que Z es un DIP. Consideremos cierto ideal I ∈ K[x], del cual escogeremos un polinomio de grado mínimo q(x). Es evidente que (q(x)) ⊂ I. Tenemos que demostrar que (q(x)) ⊃ I. Consideremos cierto p(x) ∈ I. Por teorema 1.26, tenemos que p(x) = q(x)c(x) + r(x), donde deg(r) < deg(q) y por lo tanto r(x) = p(x) − q(x)c(x) ∈ I, ya que tanto p(x) como q(x)c(x) son elementos del ideal I. Como q(x) era de grado mínimo, tenemos entonces que r(x) = 0 y por lo tanto q(x) = p(x)c(x) ∈ I. Proposición 1.19. Z[x] no es un DIP. Demostración. Para demostrar que Z[x] no es un DIP, consideremos I = (2, x). Es evidente que I 6= Z[x], ya que 1 ∈ / I. Este ideal no es principal, ya que si tuviésemos cierto polinomio p(x) de manera que (p(x)) = I, esto implicaría que 2 = p(x)q(x). De esto deducimos que el grado de p(x) tiene que ser 0, y las únicas posibilidades para p(x) son ±1 y ±2. Si p(x) = ±1 entonces (p(x)) = I (ya que los múltiplos de 1 son todo el anillo). Si por el contrario p(x) = 2, tendríamos que existe cierto r(x) ∈ Z[x] tal que x = r(x)2, lo cual es una contradicción puesto que vemos que el coeficiente director de x es impar y el de r(x) será siempre par. Luego Z[x] no es un DIP..

(35) Fundamentos matemáticos. 1.2.2.. 21. Homomorfismos de anillos. Definición 1.20. Sean R y S dos anillos. Decimos que una aplicación φ : R → S es un homomorfismo de anillos si esta mantiene la estructura de grupo. Esto es, φ(a + b) = φ(a) + φ(b) φ(ab) = φ(a)φ(b). Del mismo modo que con los grupos, si φ es biyectiva, decimos que φ es un isomorfismo de anillos. Dado un homomorfismo φ : R → S se define también su kernel como ker(φ) = {r ∈ R : φ(R) = 0}. En anillos también se define el anillo cociente R/I, que es el conjunto de las clases de equivalencia en R de la relación a ∼ b si y solo si a − b ∈ I. Las operaciones se definen de manera similar a como las hemos definido en la sección de grupos. Dados a, b ∈ R/I, a + b = (a + I) + (b + I) = (a + b) + I = a + b a · b = (a + I)(b + I) = ab + I = ab El conjunto R/I junto con estas operaciones tiene una estructura de anillo [13, Teorema 6.3].. 1.2.3.. Teoremas de isomorfía para anillos. Los anillos, al igual que los grupos, también tienen un teorema de isomorfismo: Teorema 1.21 (Teorema de isomorfía (Anillos)). Sean R y S dos anillos en los que se ha definido un isomorfismo φ : R → S. Entonces: 1. El kernel de φ es un ideal de R. 2. La imagen de φ es un subanillo de S. 3. La imagen de φ es isomorfa a el anillo R / ker(φ). Demostración. La demostración se realiza de manera equivalente a la del teorema de isomorfismo en grupos, y se puede consultar en [7]..

(36) Fundamentos matemáticos. 1.2.4.. 22. Ideales primos y maximales. No todos los ideales son iguales. Hay ciertos ideales I de R que, al realizar el anillo cociente R/I, este no es “solo” un anillo, sino que resulta tener estructura de dominio de integridad o de cuerpo. Estos ideales “especiales” los denominaremos ideales primos y maximales. Un ideal I de R es maximal si no existe ningún ideal no trivial “más grande” que I. Es decir, que si se tiene un ideal I de R y I ⊆ J, entonces o J = I o J = R. De la misma manera podemos definir el concepto de ideal primo. Sea P un ideal no trivial de R. P será un ideal primo si y solo si para todo ab ∈ P , o a ∈ P o bien b ∈ P . Teorema 1.22. Si K es cuerpo, los únicos ideales de K son los triviales, es decir, {0} y K Demostración. Es sencillo ver que el ideal generado por 1 es el total, puesto que para cualquier k ∈ K, 1k = k ∈ I y por lo tanto K = I. En los cuerpos sabemos que todos los elementos tienen inversa, y por lo tanto 1 = kk −1 ∈ (k). Luego para cualquier k 6= 0 ∈ K, (k) = K. Para k = 0 evidentemente (k) = {0}. Corolario 1.23. Todo homomorfismo ϕ de cuerpos no nulo es inyectivo. Demostración. Sea ϕ : K1 → K2 un homomorfismo de cuerpos. Por teorema 1.21, tenemos que el kernel de ϕ es un ideal de K1 . Por lo que hemos visto en teorema 1.22, los ideales de K1 son solo los triviales. Luego tenemos dos casos: 1. ker(ϕ) = {0}. En este caso, ϕ es inyectiva. En efecto, si ϕ(k1 ) = ϕ(k2 ) entonces ϕ(k1 − k2 ) = 0, es decir, k1 − k2 ∈ ker(ϕ). Sin embargo, tenemos que ker(ϕ) = 0, y por lo tanto k1 − k2 = 0, como queríamos. 2. ker(ϕ) = K1 . En este caso, ϕ es manda todos los elementos a 0K2. Teorema 1.24. Existen las siguientes relaciones entre estos ideales y los anillos cocientes: Sea R un anillo conmutativo con identidad y M un ideal de R. Entonces R/M es un cuerpo si y solo si M es un ideal maximal [3, Teorema 6.3.4]. Sea R un anillo conmutativo con identidad y P un ideal de R. Entonces R/M es un dominio de integridad si y solo si P es un ideal primo [3, Proposición 6.2.8]. Corolario 1.25. Se observa que un ideal maximal siempre es un ideal primo. Demostración. Por teorema 1.24, tenemos que si un ideal M de R es maximal entonces R/M es un cuerpo. Al ser R/M un cuerpo, es también un dominio de integridad, y por lo tanto por el mismo teorema tenemos que M es un ideal primo..

(37) Fundamentos matemáticos. 1.2.5.. 23. Anillos de polinomios. Los anillos de polinomios son un ejemplo importante en las aplicaciones criptográficas, puesto que son necesarios para construir los cuerpos finitos que trabajaremos más adelante en este capítulo. Su definición es la siguiente: Sea cierto R un anillo conmutativo con identidad, consideremos las expresiones de la siguiente forma:. f (x) =. n X. ai xi. i=0. junto con el polinomio cero f (x) = 0. Los términos ai ∈ R se denominan coeficientes y el término x es la variable. Las expresiones de esta forma se denominan polinomios sobre R. Al último coeficiente an con an 6= 0 se le denomina coeficiente director y diremos que un polinomio es mónico si su coeficiente director es 1. El grado de un polinomio se define como deg(f ) = n. Si f es el polinomio 0, se define su grado como −∞. Denotaremos el conjunto de todos los polinomios con coeficientes en R como R[x]. Observamos que P P dos polinomios p(x) = ni=0 ai xi , q(x) = ni=0 bi xi son iguales si para todo ai ∈ p(x), bi ∈ q(x) se tiene que ai = bi . Definimos las siguientes operaciones de polinomios: P P i La suma de dos polinomios p(x) = ni=0 ai xi , q(x) = m i=0 bi x se define como. p(x) + q(x) =. n X. ai xi ,. i=0. mientras que el producto se define como sigue. p(x)q(x) =. n+m X. i X. i=0. k=0. ! ai bj. xk .. Dado un a ∈ R, en los anillos de polinomios se define el homomorfismo de evaluación ea : R[x] → R P mediante ea (p) = p(a), donde p(a) = ni=0 ai ai . Esto nos permite definir las raíces de un polinomio como los elementos r ∈ R que satisfacen que er (p) = 0. En los anillos de polinomios se puede ver que también existe un algoritmo de división como el que se encuentra en los números enteros. Teorema 1.26 (Algoritmo de división). Sean dos polinomios f, g ∈ R[x], con el coeficiente director de g una unidad de R. Entonces existen dos polinomios únicos que satisfacen que f = gc + r.

(38) Fundamentos matemáticos. 24. donde deg(r) < deg(c). Demostración. Véase [13, Teorema 6.7] Esto es interesante porque nos permite definir el máximo común divisor de dos polinomios y resulta que ecuación (Identidad de Bézout) también se mantiene para los polinomios. Diremos a su vez que dos polinomios son coprimos si su máximo común divisor es un polinomio constante. Proposición 1.27 (Bézout para polinomios). Sean f, g ∈ R[x] y d = gcd(f, g) con d, f, g polinomios, existen dos polinomios r, s que satisfacen que: d = rf + sg Son de especial interés los polinomios irreducibles, que son los polinomios f de manera que f no se puede expresar como el producto de dos polinomios no constantes g y h de menor grado. Los polinomios irreducibles se comportan como los elementos “primos” de un anillo de polinomios, ya que se ve que para cierto f irreducible, su máximo común divisor con cualquier otro polinomio es 1.. Ideales en anillos de polinomios En los anillos de polinomios tenemos que para cierto polinomio p ∈ R[x], su ideal principal (p) es {pq : q ∈ R[x]}, es decir, los múltiplos de p. Tenemos entonces el siguiente teorema: Teorema 1.28. Sea un cuerpo K y un polinomio p ∈ K[x]. Entonces (p) es maximal si y solo si p es irreducible. Demostración. Supongamos primero que (p) es maximal. Esto significa que no puede ser un polinomio constante, ya que en este caso (p) = K[x]. Luego supongamos que podemos descomponer p en dos polinomios f y g de manera que p = f g. Como todo ideal maximal es también un ideal primo (véase teorema 1.24), entonces tenemos que o bien f ∈ (p) o bien g ∈ (p). Sin embargo, esto implicaría que (p) es un subconjunto de (f ), que es una contradicción con nuestra asunción de que (p) es maximal. Por otro lado, supongamos que p es irreducible sobre K. Sea I un ideal con (p) ⊆ I. Sabemos que K[x] es un DIP por teorema 1.18, luego existirá algún polinomio f de manera que p ∈ (f ). Como p pertenece a este ideal, tenemos que p se puede descomponer entonces como p = f g, donde g ∈ K[x]. Tenemos que p es irreducible, luego o f o g tienen que ser un polinomio de grado 0. Si f es un polinomio de grado 0, entonces (f ) = K[x]. Si por el contrario el polinomio constante es g, f es un múltiplo constante de I y por lo tanto I = (p). Luego no existen ideales propios de K que contengan a p. Este es un resultado de gran interés ya que más adelante utilizaremos este teorema para generar cuerpos a partir de polinomios irreducibles (ya que por teorema 1.24, el anillo cociente K[x]/(p) con p irreducible será un cuerpo)..

(39) Fundamentos matemáticos. 1.2.6.. 25. Implementación de anillos de polinomios sobre Zp. Vamos a introducir ahora una de las implementaciones realizadas en nuestra librería criptográfica. El lenguaje de programación escogido ha sido Julia, del cual se dará una introducción más extensa en el capítulo 4. Para los algoritmos criptográficos que hemos implementado, era necesario disponer de una representación de los polinomios, la cual se ha realizado en el fichero Polynomials.jl del código. La estructura de datos escogida para representar los polinomios es el siguiente: struct Polynomial{T <: Field, S <: FieldElement} field::T coef::Array{S, 1} end Listado 1: Definición de Polinomios. Un polinomio se compone de cierto número de coeficientes sobre un cuerpo determinado. Estos están representados por coef, un array de FieldElement y field respectivamente. Se ha escogido esta representación porque nuestro interés es realizar operaciones de cifrado y descifrado, para lo cual veremos más adelante que necesitaremos realizar operaciones con polinomios. Implementándolos de esta manera las operaciones de suma y multiplicación de polinomios se reducen a sumar o multiplicar los elementos de un array, que es lo más eficiente. La representación del polinomio 0 se ha implementado como una lista de coeficientes vacía, y su grado se ha representado con el valor −1. Como un ejemplo, podemos ver definida la operación de suma como:.

(40) Fundamentos matemáticos. 26. function Base.:+(f::Polynomial, g::Polynomial) if f.field != g.field error("Polinomios sobre cuerpos distintos") elseif f == zero(f) # Si f = 0, devolver g return g elseif g == zero(g) # Si g = 0, devolver f return f elseif deg(f) > deg(g) # Escogemos el de mayor grado nuevos_coef = copy(f.coef) # Copiamos los coeficientes for i in 1:(deg(g)+1) nuevos_coef[i] += g.coef[i] # Sumamos los del otro polinomio end return Polynomial(f.field, nuevos_coef) # Devolvemos el nuevo polinomio else nuevos_coef = copy(g.coef) for i in 1:(deg(f)+1) nuevos_coef[i] += f.coef[i] end return Polynomial(g.field, nuevos_coef) end end Listado 2: Suma de polinomios. Vemos que si el grado de alguno de los dos polinomios es el polinomio f (x) = 0, devolvemos el otro sumando. En caso contrario, copiamos el array de coeficientes de mayor longitud y le sumamos los elementos del otro sumando. También se han implementado otras operaciones, como la multiplicación de polinomios y el algoritmo extendido de Euclides para los mismos. Estas se pueden consultar en el módulo Polynomials, que se encuentra en el fichero Polynomials.jl. Algunas de estas implementaciones se comentarán también más adelante en el capítulo 4.. 1.3.. Cuerpos. Como se ha visto en la sección anterior, un cuerpo es un anillo conmutativo con identidad en el cual todos los elementos no nulos tienen inversa respecto al producto. En esta sección daremos una introducción a los teoremas y definiciones más importantes para nuestro caso, pero le lector que desee profundizar en el tema puede consultar [13, Capítulos 6-7] o [9, Chapters 21-22]..

Referencias

Documento similar