Está en la página 1de 113

CCGS[ST

]

TEORÍA DE CÓDIGOS
Y CRIPTOGRAFÍA

UNIVERSIDAD DE SEVILLA
DEPARTAMENTO DE ÁLGEBRA

ÍNDICE GENERAL

Introducción 1

1 Fundamentos 3
Grupos 3

Anillos 9

Dominios euclídeos 12

Congruencias 17

Cuerpos finitos 20

Complejidad de algoritmos 25

Un número es un número es un número 31

Ejercicios 34

2 Códigos correctores de errores 39
Códigos correctores y códigos detectores 40

Estrategias de corrección 42

Parámetros de los códigos 43

Códigos lineales 45

Decodificación por síndromes y errores 49

Códigos cíclicos. 55

Cotas asociadas a un código. 58

Ejercicios 63

iv 3 Criptografía de clave privada 69 Generalidades 69 Galia est omnis divisa in partes tres: el criptosistema de César 72 Criptosistema afín 74 Cifrados de sustitución 75 La criptografía como arma infalible para ligar: criptosistema de Vigenère 77 Criptosistema de Hill 79 Permutando. y lechugas. 102 Errores y secretos: criptosistema de McEliece 105 Bibliografía 113 . Bueno. sí. y regalos 93 For your eyes only 95 Cifrado RSA 98 Cifrado de ElGamal 99 Cifrado de Rabin 100 Intermedio aritmético: raíces cuadradas modulares 101 Yo no he dicho eso. que es udogreni 80 Enigma 81 Cifrado de un solo uso 83 Códigos actuales 84 DES 85 Ejercicios 88 4 Criptografía de clave pública 93 Lobos y corderos.

En esta asignatura nos centraremos en entender dos de esos procesos: la codificación de la información para su recuperación sin errores. para que no se detecten cortes en la conversación. Todo esto. Transacciones seguras entre bancos o entre empresas. marca un número y hace una llamada a otro usuario (a partir de ahora. En palabras técnicas. debe transmitir la información. modelos de predicción futuros. que es enviado por la red de telefonía móvil hasta el móvil de Bob. daremos una introducción (más o menos elemental) a la Teoría de códigos correctores de errores y la Criptografía. un usuario (a partir de ahora. el teléfono de Bob debe re- cuperar la información. y desencriptarla. cuando Alicia habla. sino en todos los aspectos de la sociedad global. la red telefónica debe recibir la información de Alicia. y pasarle la información.400 millones de veces al día. Este proceso “mágico”.I N T RO D U C C I Ó N En un teléfono móvil cualquiera. de forma rápida. Si el móvil no es antediluviano. que ocurre aproximadamente 12. etc. y casi todos tienen que ver con las matemáticas. a pesar de (posiblemente) haber perdido parte por el camino. un poco de álgebra lineal y un poco de álgebra conmutativa. el teléfono de Alicia tiene que identificar- se ante la red de telefonía. Alicia). Hay muchos procesos implicados. Bob). es en realidad muy sofisticado. para que la comu- nicación sea privada. . el teléfono convierte su voz en código digital. encontrar a Bob sin posibilidad de confusión. las herramientas que usaremos son pocas: un poco de grupos. debe encriptar la información. que tendrá pérdidas. y la encriptación para que sólo el destinatario legítimo tenga acceso a esa información. Desde el punto de vista matemático. En el otro extremo. De alguna forma. previsiones de gastos. donde vuelve a convertirse en sonido. un poco de cuerpos fini- tos. Y no sólo en telefonía móvil.

2 teoría de códigos y criptografía Pero la potencia de esas pocas herramientas es enorme para las dos aplicaciones que estudiaremos. Para los profesores y los alumnos de Wildstone la diversión y la recreación no son menos importante que el estudio… Son más importantes. Les Luthiers .

R n = {raíces n-ésimas de la unidad} ⊂ C es un grupo multipli- cativo. esto es. si H ⋆ H ⊆ H) y (H. C son grupos aditivos. Si además g⋆h=h⋆g para todo par de elementos g. Todo elemento g ∈ G tiene un simétrico respecto de ⋆. Las condiciones siguientes son equivalentes . Proposición 1 Sea (G. Doctor Who. h ∈ G. Un subconjunto H no vacío de G se dice que es un subgrupo de (G. se llama orden de G al entero ∣G∣ = card(G).4 2. I’ll tell you something that should be of vital interest to you (no vacío) y ⋆ es una operación binaria e interna que verifica The Doctor — The ambassadors of Death 1. Q R. Si G es finito. 7. . . se tiene e ⋆ g = g ⋆ e = g. . n}. ⋆). Ejemplo 1 Z. C son grupos multiplicativos. 2. 4. donde G es un conjunto Well. ⋆) si ⋆ es interna en H (es decir.F U N DA M E N T O S 1 Grupos Definición 1 Un grupo es un par (G. Si X = {1. ⋆) un grupo y H ⊆ G un subconjunto no vacío. existe un e ∈ G tal que para todo g ∈ G. S X = {biyecciones σ∶ X → X} es un grupo con la composi- ción. se denota S X = S n . La operación ⋆ tiene elemento neutro. existe un g ′ ∈ G tal que g ⋆ g ′ = g ′ ⋆ g = e. Q . ⋆∣H×H ) es un grupo y se denota H ≤ G. 3. se dice que G es abeliano o conmutativo. . esto es. ∗ ∗ ∗ R . La operación ⋆ es asociativa.

b}⟩ = Z mcd(a. 3}⟩ = Z. y ocasionalmente. ⟨{14. Entonces ⋂ H i es un subgrupo de G.4 teoría de códigos y criptografía 1. y en general ⟨{a. b). Ejemplo 2 Z42 = {múltiplos de 42} es un subgrupo de Z. ⟨S⟩ = {x1 ⋆ x2 ⋆ ⋅ ⋅ ⋅ ⋆ x n . tal que x i ∈ S ∪ S ′ . i∈I Ejemplo 3 Z14 ∩ Z4 = Z28. Proposición 2 Sea G un grupo y {H i }i∈I una familia de sub- grupos. 4}⟩ = Z2. Definición 3 Sea (G. H es un subgrupo de (G. todo subgrupo de Z es de la forma Z a. y verifi- ca que es el menor subgrupo de G que contiene a S. la suma. En lo sucesivo. ⋆). Definición 2 Dado un subconjunto S ⊆ G de un grupo. Entonces. De hecho. el subgrupo generado por S es el conjunto de todos los productos finitos de elementos de S y de sus inversos.) . Dicho de otra forma. Se define ⎧ ⎪ ⎪ ⎪ e si m = 0 ⎪ ⎪ ⎪ ⎪ (m veces) a m = ⎨a ⋆ ⋅ ⋅ ⋅ ⋆ a si m > 0 ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ′ (m veces) ′ ⎪ ⎩ ⋆ ⋅⋅⋅ ⋆ a a si m < 0. Ejemplo 4 ⟨{2. H subgrupo de G H⊇S En esta situación. denotaremos la operación ⋆ simplemente como la multiplicación. 2. y ∈ H se tiene que x ⋆ y′ ∈ H. se llama subgrupo generado por S a ⟨S⟩ = ⋂ H. se dice que S es un sistema de generadores de ⟨S⟩. (Análogamente se define ma en un grupo aditivo. b). a ∈ G y denotemos por a ′ su simétrico (o inverso). Más generalmente. Para todo par de elementos x. Proposición 3 Sea S ′ el conjunto de los inversos de los ele- mentos de S ⊆ G. Z a ∩ Zb = Z mcm(a. y n ≥ 1}. ⋆) un grupo.

o(a) = ∣⟨a⟩∣ divide a ∣G∣ para todo elemento a ∈ G. se denota o(a) = ∞. que denota- mos [x]. 3. . En esta situación. considerar H ⋆ x. En particular. o(a) o(a k ) = mcd(o(a). Se dirá que es de orden infinito en caso contrario. Si a es de orden infinito. Lema 1 La definición de potencias de un elemento a ∈ G verifica las propiedades habituales. Si o(a) y o(b) son coprimos y G es abeliano. . Si a n = e. la clase de equivalencia de x. entonces o(ab) = o(a)o(b). se tiene a m ∗ a n = a m+n . y x ∼ y ⇐⇒ x ′ ⋆ y ∈ H. en particular. . entonces o(a) ∣ n. Si a es de orden finito. entonces todo elemento es de orden finito. Si a es de orden finito. Se llama orden de a al menor entero positivo k tal que a k = e. k) 6. que no será en general un grupo. El conjunto cociente G/ ∼. . y sea a′ su simé- trico (o inverso). a −m = (a ′ )m = (a m )′ . para cualesquiera enteros m y n. es finito y de la forma G/H = {x1 ⋆ H. 4. Si G es finito. fundamentos 5 Se dice que un elemento a de un grupo G es de orden finito si existen ′ 0 ≤ k < k ′ con a k = a k . y definamos la relación de equiva- lencia¹ 1 También se puede tomar la relación “simétrica” x ∼ y ⇐⇒ y ⋆ x ′ ∈ H. o(a) = o(a′ ) = ∣⟨a⟩∣. (a m )n = a mn . 1. Demostración. existen enteros positivos n tales que a n = e. Entonces ∣H∣ divide a ∣G∣. o(a) = 1 ⇐⇒ a = e. Sean H ≤ G. verifica [x] = x ⋆ H. . y se denota o(a). Teorema 1 (Teorema de Lagrange) Sea G un grupo finito y H ⊆ G un subgrupo. 5. 2. Ejercicio 1 Sea a un elemento del grupo G. xr ⋆ H}.

La primera parte del enunciado es trivial. he- mos probado que todos los elementos de orden d pertenecen al subgrupo cíclico Hd .6 teoría de códigos y criptografía Pero todas las clases x i ⋆ H tienen el mismo cardinal. k) mcd(k. card(H) = card(µ x i (H)) = card(x i ⋆ H). ¿Cuáles son los otros generadores? Como sabemos que o(a n/d ) d o((a n/d )k ) = = . la existencia es clara porque a n/d tiene orden exactamente d. Veamos que todo subgrupo de G = ⟨a⟩ es cíclico: sea H ≤ G. d) n/d concluimos que si o((a n/d )k ) = d. Todo subgrupo de G es cíclico. d) = 1. Teorema 2 (Teorema Fundamental de los Grupos Cícli- cos Finitos) Sea G un grupo cíclico de orden finito ∣G∣ = n. y sea s = min{k > 0 tales que a k ∈ H}. a n/d no será en general el úni- co generador de Hd . Por tanto. 2. porque dado a ∈ G. mcd(o(a ). Euler hizo esta misma observación: . En particular. a saber. Demostración. Para la última parte del enunciado. entonces mcd(k. d = o(a k ) = n/ mcd(k. Hd = ⟨a n/d ⟩. Más aún. Entonces G es abeliano y se verifica: 1. y H = ⟨a k ⟩. luego k = n/d. Este s existe y verifica que H = ⟨a s ⟩. y así. ∣G∣ = r ⋅ ∣H∣. existe un único subgrupo de orden d. Obsérvese que en la demostración de la segunda parte. Si H es otro subgrupo de orden d. la aplicación µ a ∶ G → G dada por x ↦ xa es una biyección. s es un divisor de n. entonces k ∣ n y mcd(k. En otras palabras: hay exactamente tantos elementos de orden d en G como enteros positivos menores que d y coprimos con él. Para todo divisor d de ∣G∣. n) = k. Definición 4 Un grupo G se llama cíclico si existe un a ∈ G tal que G = ⟨a⟩ = ⟨{a}⟩ = {a m ∣ m ∈ Z}. Por tanto. n) = n/k.

Ejemplo 5 Z/Zm. 2. x ⋆ H ⋆ x ′ ∶= {x ⋆ h ⋆ x ′ ∣ h ∈ H} = H. precisamente x ⋆ H. fundamentos 7 Teorema 3 (Fórmula de Euler) Sea n > 0. Proposición 4 Dado H ◁ G. Para todo x ∈ G. que se denota habitualmente G/H. se tiene x ⋆ H = H ⋆ x. con la operación ◇ definida por (x. El conjunto cociente. esto es: x ⋆ H = {x ⋆ h ∣ h ∈ H}. fijamos un grupo (G. para todo x ∈ G. Cuando G es abeliano (cosa que sucederá con frecuencia en los grupos que trataremos en este curso). a ⊙ b). H ⋆ x = {h ⋆ x ∣ h ∈ H} Definición 5 Decimos que H es normal en G cuando. a) ◇ (y. por tanto. se verifica ∑ ϕ(d) = n. ⊙) (eventualmente. Una familia especialmente importante de subgrupos es la que permite inducir estructuras de grupos por relación de equi- valencia: los denominados subgrupos normales. 0<d∣n donde ϕ(k) es el número de enteros positivos menores que k y coprimos con k. es inmediato ver que to- do subgrupo es normal y. la relación definida en G por x ∼ y ⇐⇒ x ′ ⋆ y ∈ H es de equivalencia. se define su producto (directo) como el grupo G × L. b) = (x ⋆ y. . Definición 6 La otra operación esencial entre grupos es el producto. siempre podemos considerar la estructura cociente. se puede considerar una cantidad finita arbitraria de grupos). x ⋆ H ⋆ x ′ ∶= {x ⋆ h ⋆ x ′ ∣ h ∈ H} ⊂ H. La clase de equivalencia de x es. ⋆) y (L. Consideramos las órbitas de un elemento x ∈ G cualquiera por H. Esta condición se denota habitualmente H ◁ G. tiene estructura de grupo con la operación (notada también ⋆): (x ⋆ H) ⋆ (y ⋆ H) = (x ⋆ y) ⋆ H. Para definirlos. Observación 1 Algunas propiedades equivalentes a H ◁ G son 1. Dados dos grupos (G. ⋆) y un subgrupo H ≤ G. Para todo x ∈ G.

+). entonces S X ≃ SY . ⊙) que verifica que para cualquier par de elementos x. se tratan como el mismo objeto. q) = 1. ambos objetos son absolutamente equivalentes. f (x ⋆ y) = f (x) ⊙ f (y). y ∈ G.3 Cd 1 × ⋅ ⋅ ⋅ × Cd n × Zr . Corolario 1 Todo grupo abeliano finitamente generado es isomorfo a uno de la forma C p α 1 × ⋅ ⋅ ⋅ × C p αn n × Zr . Todo grupo cíclico infinito es isomorfo a (Z. esto se suele denotar G ≃ L. Ambos grupos se dicen isomorfos y. Teorema 4 (de estructura de grupos abelianos finitamen- Pure mathematics cannot lie! te generados) Todo grupo abeliano finitamente generado es isomorfo The Doctor — The Claws of Axos a uno de la forma Doctor Who. Dos grupos cíclicos finitos con el mismo números de ele- mentos son siempre isomorfos. 4. . . un homomorfismo es una aplicación que respeta las operaciones de grupo. Observación 2 Algunos resultados importantes concernien- tes a isomorfismos son: 1. . dado que desde el punto de vista de la Teoría de Grupos. donde d1 ∣ d2 ∣ ⋅ ⋅ ⋅ ∣ d n y r ≥ 0.8 teoría de códigos y criptografía Definición 7 Un homomorfismo de grupos es una aplicación f ∶ (G. se denota por Cn el grupo cíclico de n elementos. y r ≥ 0. no necesariamente distintos. C p × Cq ≃ C pq si y sólo si mcd(p. 1 donde p i es primo para i = 1. esto es. n. Si dos conjuntos X e Y tienen el mismo cardinal (finito). 2. . 8. Por este motivo. 3. Cuando existe un isomorfismo entre G y L como arriba. . ⋆) Ð→ (L. Un homomorfismo biyectivo se denomina un isomorfismo.

i es la inclusión y f˜(g + ker( f )) = f (g) el isomorfismo natural. A veces se donde O es el punto del infinito de enuncia en forma de diagrama conmutativo. i. +. La operación binaria ⋅ es asociativa y tiene elemento neutro. pero que no se acostumbra a ver en clase sobre 1. The Lord of the Rings. necesariamente cíclico. denotado 0A. 3. Teorema de Mordell (esto es magia. diremos que el anillo es conmuta- tivo. Hay exactamente dos grupos abelianos de orden cuatro el tegafg. Si además la operación ⋅ es conmutativa. Consideremos la curva elíptica y 2 = x 3 − 36x sobre R2 . 9) ≃ C2 × C2 × Z . o simplemente 1. (±6.1: Primer Teorema de isomorfía. dejamos el enunciado del Primer E(Q) = {O. ⊙) de L y existe un isomorfismo G/ ker( f ) ≃ img( f ). ⋅) formada por un conjunto A y dos operaciones internas y binarias +. 0) = (−2. π i f˜ G/ ker( f ) img( f ) Figura 1. existe un único grupo abeliano de or. por E(Q) el conjunto de puntos de la curva con coordenadas racionales. los anillos de Frodo matrices cuadradas). ⋅ verificando: 1. En esta asignatura no veremos anillos no conmutativos. +) es un grupo abeliano. En nuestra curva A continuación. 0). (0. y para terminar el recordatorio de teoría en concreto. ⋆) Ð→ (L. img( f ) es un subgrupo f (G. Para cada p primo. cuyo elemento neutro llamare- mos normalmente cero. en la seguridad de que nuestros alumnos × Z ⋅ (−3. f ∶ (G. —I wish the ring had never come to me. para todos x. o simplemente 0. que llamaremos normalmente uno. 2. El par (A. ⋆) (L. x ⋅ (y + z) = x ⋅ y + x ⋅ z. −8) 25 −35 2 ⋅ (−3. La operación ⋅ es distributiva a la derecha y a la izquierda respecto de la operación +. ⊙) (6. denotado 1A. como en la Figura 1. 0) + (−3. JRR Tolkien . y. pueden escribir la demostración con los ojos cerrados. que son C4 y C2 × C2 . Definición 8 Un anillo es una terna (A. se tiene (x + y) ⋅ z = x ⋅ z + y ⋅ z. ker( f ) es un subgrupo normal de G. y no lo que se enseña en Hogwarts) dice den p. 0)} Teorema de Isomorfía. fundamentos 9 Ejemplo 6 Algunos ejemplos de aplicación del tegafg. El 2. Por ejemplo. y definamos 4 8 ker( f ) = {g ∈ G ∣ f (g) = e L } img( f ) = {l ∈ L ∣ existe g ∈ G con l = f (g)} Entonces. la curva y la suma de puntos no es la suma componente a componente. un homomorfismo de grupos. 9) = ( . sino Teorema 5 (Primer Teorema de Isomorfía) Sea una operación que hay que definir con cuidado. que el conjunto de puntos racionales de una curva elíptica es un grupo abeliano finitamente generado.² 2 Hay un ejemplo muy interesante. z ∈ A. ). de grupos que nos hará falta. aunque los hay y muy importantes (por ejemplo. en nuestra curva. Aquí π es la proyección natural π(g) = Anillos g + ker( f ).e. y denotemos (salvo isomorfismos).

A∗ = A ∖ {0}. Una unidad es un elemento que posee un simétrico multiplicativo (a la izquierda y a la derecha).10 teoría de códigos y criptografía Observación 3 Algunas notas a la definición. . a secas). 3.) Definición 10 Sea A un anillo. El conjunto de las unidades de A es un grupo para el producto y se notará A∗ . . el producto cartesiano A1 × ⋯ × A n posee una estructura natural de anillo. R. 2. Ejemplo 7 Algunos casos sencillos de unidades. k) con k = Q. que llamaremos inverso. En Un elemento x ∈ A se llamará nilpotente si es distinto de cero y existe el anillo de matrices 2 × 2. 5. C son cuerpos. Un cuerpo es un anillo conmutativo tal que todo elemento distinto de cero es una unidad. donde las operaciones están definidas componente a componente. (A × B)∗ = A∗ × B∗ . Las unidades de Z son 1. (Esto lo usaremos más adelante. . El grupo de las unidades del anillo M(n. 2. se tiene que (o dominio. R ó C es GL(n. A n son anillos. a + Zm y b + Zm son divisores de cero. La operación ⋅ se notará normal- mente por simple yuxtaposición. 1. entonces A = {0}. Para todo x.. −1. Si en un anillo A se tiene 1 = 0. se tiene x(−y) = (−x)y = −(x y). 2 2 −1 −1 En un dominio de integridad. . si ab = m. Un elemento x ∈ A se llamará un divisor de cero si y sólo si es distinto de cero y existe y ∈ A. i. Definición 9 Sea A un anillo. Si A1 . 4. 1. 4. Si A y B son anillos. tal que 3 Los divisores de cero no son tan raros x y = 0.e. y ∈ A. sobreen- tendiendo las operaciones. En un anillo A se tiene 0 ⋅ x = x ⋅ 0 = 0 para todo x ∈ A. Los anillos Q. se tiene que 1 1 1 1 un entero n > 0 tal que x n = 0. ( )( ) = 0. los elementos no nulos verifi- can la propiedad cancelativa: a ≠ 0 y ab = ac Ô⇒ b = c. y ≠ 0. por ejemplo en el anillo Z/Zm. Un anillo sin divisores de cero³ se llama un dominio de integridad como podría pensarse. k) (las matrices con determinante no nulo). En general se usará la expresión “sea A un anillo”. 3. .

obtenemos √ √ 6 = 2 ⋅ 3 = (1 + −5)(1 − −5). Por A que verifica: centrar ideas. más tarde. Para cualesquiera a ∈ I y x ∈ A. El concepto equivalente a subgrupo para anillos no es. lo esencial es la relación el que permite dotar de estructura de anillo a los cocientes. si R ⊂ A son dos ani- llos (con las mismas operaciones) no se puede definir. La génesis del nombre de ideal proviene de una idea de Kummer cuando investiga- ba los anillos de enteros algebraicos Z[ζ] Definición 11 Sea A un anillo. En realidad no hace falta comprobar que I es un subgrupo pero aquí ocurre que todos los enteros aditivo (comparar con las propiedades que buscaba Dedekind): algebraicos que aparecen son irreducibles. Si a. i. Si a ∈ I y c ∈ A. se tiene xa ∈ I. 2. Es necesario introducir una idea nueva. Claro. y miramos a dos factorizaciones 2. entonces ac ∈ I. De hecho. ideales existen y tienen sentido es un trabajo bien complicado. Esto conduce de forma natural a la definición de ideal. en general. . del entero 6. demostrar que los factores 1. de divisibilidad. Aunque parece que son distintas. Proposición 5 El grupo cociente A/I admite una estructura canónica de anillo. me da lo mismo hablar del entero 2 que Asombrosamente. Si continuamos con la factorización. Kummer razonó que deben existir unos ciertos factores ideales que harían posible la Lema 3 Un subconjunto ∅ ≠ I ⊆ A es un ideal si y sólo si factorización única. Se tiene: de la igualdad no están completamente factorizados. que tiene la siguiente idea: en Z. Si ahora consideramos el anillo √ Z[ −5]. sabe- mos que lo que ocurre es que los enteros Observación 4 Sea I ⊂ A un ideal de A. A es un dominio de integridad. Pero unos años 2. entonces a + b ∈ I. el concepto de Dedekind es precisamente del conjunto de elementos divisibles por 2. como podría esperarse. 2. Es decir. En efecto. la de ideal de un anillo. una estructura coherente de anillo en el grupo cociente A/R. fundamentos 11 lo cual hace que estos anillos sean particularmente cómodos a la hora de hacer cálculos. Si I contiene una unidad. entra en escena Dedekind. supongamos que tenemos dos factorizaciones distintas del entero 42: 1. Las condiciones siguientes son equi- valentes: 1. b ∈ I. entonces I = A. con el producto definido por (a + I)(b + I) = ab + I. I es un subgrupo del grupo aditivo de A. Un ideal de A es un subconjunto I de y la condición de factorización única. a ≠ 0 y ab = ac Ô⇒ b = c. A es un cuerpo si y sólo si sus únicos ideales son {0} y A. 42 = 3 ⋅ 14 = 2 ⋅ 21.e. Todo elemento no nulo es cancelativo. se tiene: Lema 2 Sea A un anillo. obtenemos 42 = 2 ⋅ 3 ⋅ 7. el de subanillo. 1.

Ejemplo 8 1. 5. a todos los efectos. que verifica µ(a) ≤ µ(ab). Para cualesquiera x. con µ(x) = ∣x∣. y tales que dados dos a. Análogamente al caso de grupos.12 teoría de códigos y criptografía Definición 12 Sean A y B anillos. con ω una raíz primitiva tercera de la unidad. existen unos r y q. con µ( f (X)) = grado( f (X)). Se verifica también el Primer Teorema de Isomorfía. A será un dominio euclídeo. Para cualesquiera x. f ∶ A → B una aplicación. el anillo de enteros de Gauss. 2. es f (x + y) = f (x) + f (y). k⟦X⟧ el anillo de series formales en la variable X sobre el cuerpo k. 2. es f (x y) = f (x) f (y). Se dirá que f es un homomorfismo de anillos si verifica: 1. con r = 0. trataremos los anillos isomorfos como el mismo anillo. 3. En el resto de esta sección. Z[ω]. Estos elementos r y q se llaman resto y cociente de la división euclídea de a por b. f (1) = 1. y ∈ A. con µ( f (X)) = orden( f (X)). el anillo de polinomios en la variable X y coeficientes en el cuerpo k. b ∈ A ∖ {0}. b ∈ A con b ≠ 0. con el enunciado análogo (cuidado: ahora ker( f ) son los elementos de A que van a 0B ) al caso de los grupos. llamada la norma euclídea. 4. o bien 0 ≤ µ(r) < µ(b). Dominios euclídeos Definición 13 Un dominio euclídeo es un dominio de integridad A junto con una aplicación µ∶ A ∖ {0} → Z≥0 . k[X]. Z[i]. Un homomorfismo biyectivo se llama un isomorfismo y los anillos entre los cuales se puede establecer un isomorfismo se llaman anillos isomorfos. . tales que a = bq + r. con µ(a + bi) = a 2 + b2 . para a. Z. 3. es el anillo de enteros de Eisenstein y µ(a + bω) = a 2 − ab + b2 . y ∈ A.

los asociados de a son a y −a. También se dice que b es divisible por a. basta con que sea dominio de factorización única. donde u es una unidad. . Si a ∣ b. entonces a ∣ bc. Teorema 6 (de Euclides) Sea A un dominio. Definición 16 Un p ∈ A ∖ {0} no unidad se llama irreducible si p = p1 p2 Ô⇒ p1 unidad y p2 asociado (o al revés). y c es cualquiera. se dirá que a y b son asociados. Si a ∣ b y a ∣ c. Definición 17 Sea p ∈ A un elemento no nulo que no es una unidad. En k[X]. no es lo mismo primo que irreducible. Teorema. necesaria- mente a = ub. Aunque no tengamos mucho tiempo de profundizar en el tema. si a ∣ b y b ∣ a. Definición 15 En un dominio euclídeo. página 11. Si a ∣ b y a no es unidad ni asociado de b. En este caso. Todo elemento primo es irreducible. La relación de división verifica las siguientes propiedades4. con a distinto de cero. de forma única salvo orden y producto por unidades. todo irreducible es primo. se dirá que a es un divisor propio de b. 1. que a su vez es dominio de factorización única. 2. Lo fundamental lo podemos resumir en el siguiente teorema. Un elemento p se llama irreducible si no tiene divisores pro- pios. Pero todo do- minio euclídeo es dominio de ideales Una consecuencia del Teorema de Euclides es el siguiente principales. Teorema 7 (fundamental de la aritmética) Todo a ≠ 0 no unidad de un dominio euclídeo se descompone en producto finito de elemen- tos irreducibles. Se dirá que a divide a b si existe un c ∈ A tal que ac = b. Ejemplo 9 En Z. 5 De hecho. fundamentos 13 Definición 14 Sean a y b ∈ A. En este caso se escribe a ∣ b. 2. los asociados de f (X) son c ⋅ f (X) con c ∈ k ∗ . Se dice que p es primo si verifica la siguiente propiedad: p ∣ (ab) Ô⇒ p ∣ a o p ∣ b. En otras palabras. entonces a ∣ (b ± c). 4 Es interesante comparar estas propie- dades con la definición de ideal de la 1. Si A es un dominio euclídeo5.

La demostración se basa en dos hechos simples. Si d ∈ A verifica que d ∣ a y d ∣ b. Existe un mínimo k ≥ 0 tal que r k = 0. Si k ≥ 1. las unidades son los elementos de k ∗ . Toda igualdad de este tipo se llama una identidad de Bézout.1) r0 = q2 r1 + r2 . y se toma como máximo común divisor el único polinomio mónico. r).14 teoría de códigos y criptografía Definición 18 Sean a.. 2. es único salvo producto por unidades. Entonces 1. los restos no nulos son de norma estrictamente decreciente por la Definición 13. Se llamará máximo común divisor de a y b a todo elemento c ∈ A que verifique: 1. b) = b. todavía debemos probar que existe el máxi- mo común divisor. Existen α. b). las unidades son 1 y −1. se tiene mcd(a. Si A = k[X]. Por otro lado. En primer lugar. Teorema 8 (Algoritmo de Euclides) Sean a y b.. β ∈ A tales que αa + βb = d. con b ≠ 0. Corolario 2 (Identidad de Bézout) Sean a y b no nulos y d = mcd(a. b) = mcd(b. Se puede dar una prueba breve no constructiva usando el he- cho de que un dominio euclídeo es dominio de ideales principales.. y se tomará el máximo común divisor positivo.. Si A = Z.. Consideremos las sucesivas divisiones euclídeas a = q0 b + r0 b = q1 r0 + r1 (1. entonces d ∣ c. 2.. entonces r k−1 es el máximo común divisor de a y b.. c ∣ a y c ∣ b.. es fácil probar que si a = qb + r es la división euclídea de a por b. Naturalmente. se escribirá c = mcd(a.. Si existe un máximo común divisor. Es muy cómodo normalizar el máximo común divisor para que sea único.. b).. . entonces b ∣ a y mcd(a. b ∈ A dos elementos distintos de cero de un dominio euclídeo.. Si k = 0. Si c es el máximo común divisor de a y b.

.7 Supon. y0 = β. b) = . Proposición 7 La ecuación ax + my = b tiene solución si y sólo si d = mcd(a. con d = αa + βm d d y después demostrar que las soluciones es una solución particular. Entonces. −ka/d)}. las soluciones son 7 Otra posible demostración a partir m a de este punto es resolver en primer S = {(x = x0 + k . Si m es el mínimo común múltiplo de a y b. k ∈ Z.1) desde r0 hasta r k−1 para calcular explícitamente α y β. Definición 19 Sean a. m)}. se escribi- rá m = mcm(a. vamos a terminar el repaso de dominios euclídeos con unas breves aplicaciones sobre ecuaciones. d = mcd(a. más una solución del sistema homogéneo asociado. En cierto sentido. y = y0 − k ). b ∈ A distintos de cero. b) verifica la Definición 19. b dos elementos distintos de cero de un domi- nio euclídeo. si existe una solución (x0 . es único salvo pro- ducto por unidades. 2. de Álgebra Lineal: la solución de un sistema lineal es una solución particular entonces d ∣ b de forma trivial. fundamentos 15 o se pueden despejar las Ecuaciones (1. En este caso. Se puede usar la existencia del máximo común divisor para probar la del mínimo común múltiplo. mcd(a. b). b) Para la demostración es suficiente ver que (ab)/ mcd(a. The Annals of Mathematics. Proposición 6 a. gamos entonces que d ∣ m. Si r ∈ A verifica que a ∣ r y b ∣ r. Entonces 1933 ab mcm(a. lugar la ecuación homogénea asociada d d ax + my = 0. y 0 ) + S 0 . 34(3):480–508. (dividiendo por d y aplicando el Teorema de Euclides). m) divide a b. de la ecuación original son (x 0 . Si existe un mínimo común múltiplo de dos elementos. como hacemos a continua- ción. y0 ). o se puede demostrar directamente a partir del Algoritmo de Euclides6. Theory of non commuta- tive polynomialsmmutative polynomials. porque divide a a y a m. Se llamará mínimo común múltiplo de a y b a un elemento m ∈ Z que verifique: 1. x0 = α. a ∣ m y b ∣ m. Desde luego. 6 Øystein Ore. es un análogo de lo que pasa en los sistemas de ecuaciones Demostración. entonces m ∣ r. para donde obtener la familia b b S 0 = {(km/d. de la identidad de Bézout Aquí S 0 no es un subespacio vectorial sino un subgrupo de Z2 .

. Entonces el sistema de ecuaciones x + ⟨m1 ⟩ = a1 + ⟨m1 ⟩ . x + ⟨mr ⟩ = ar + ⟨mr ⟩ . es decir. . .. de donde a m (x0 − x1 ) = (y1 − y0 ). . Entonces A/⟨m1 . d d d y es claro que (x0 . ... Se puede reinterpretar el Teorema Chino del resto en térmi- nos de ecuaciones: Teorema 10 Sean m1 . m j ) = 1 para todo i ≠ j. Análogamente.. Para eso.2).. ..... . luego y1 − y0 = k(a/d). mr que se debe a Sun Tzu. mr ⟩ ≃ A/⟨m1 ⟩ × ⋅ ⋅ ⋅ × A/⟨mr ⟩. ax0 + my0 = ax1 + my1 . mr ⟩ ↦ (a + ⟨m1 ⟩.. y1 ) otra solución.. la cuestión está en ver que son todas.. se tiene que x0 − x1 = k ′ (m/d). . . mr elementos de A. . . . se tiene que a/d ∣ (y1 − y0 ). a + ⟨mr ⟩). y0 ) es una solución.16 teoría de códigos y criptografía d = αa + βm podemos escribir b b b b= d = (α )a + (β )m = x0 a + y0 b.e. . La primera publicación del Teorema Chino del Resto es un ejemplo de cálculo Teorema 9 (Teorema Chino del Resto) Sean m1 . .. a Gauss. (1. Demostración. Consideremos el homomorfismo a + ⟨m1 ..2) d d Como a/d y m/d son coprimos. La primera demostración moderna elementos de A coprimos dos a dos. se obtiene k ′ = −k. se debe. y1 ) ∈ S. Bastará dar un homomorfismo de anillos bi- yectivo. sea (x1 . coprimos dos a dos. naturalmente. cuya inversa viene dada por (a1 + ⟨m1 ⟩... Sustituyendo en la Ecuación (1.. de forma que (x1 . . mcd(m i . . con M = ∏ri=1 m i y 1 = α i m i + β i M i es una identidad de Bézout. donde M i = M/m i .. ar + ⟨mr ⟩) ↦ a1 β1 M1 + ⋅ ⋅ ⋅ + ar βr Mr . . ….. También es claro que cada elemento de la familia S es solu- ción de la ecuación. entre los siglos 3 y 5. i.

no es frecuente dar el Teorema Chino del Resto Generalizado8: 8 Øystein Ore. m1 mr Congruencias Definición 20 Sean a. fundamentos 17 tiene solución única módulo ⟨m1 ⋯mr ⟩. Definición 21 La relación a ∼ b ⇐⇒ a ≡ b (mod m) . . Por algún motivo que no entiendo muy bien. mr )⟩. y escribimos a ≡ b (mod m).. Es inmediato probar que a ≡ b (mod m) ⇐⇒ a ≡ b (mod − m). d i j = mcd(m i .. ... y.. .. supondremos que m > 0. Diremos que a es congruente con b módulo m. .. y los c i vienen dados por una identidad de Bézout M M 1 = c1 + ⋅ ⋅ ⋅ + cr ... The general chinese re- mainder theorem.. una solución particular del sistema es M M x0 = a1 c1 + ⋅ ⋅ ⋅ + ar cr . en lo sucesivo... la solución es única módulo ⟨mcm(m1 . . En este caso. . b y m ≠ 0 tres enteros. Más aún. 1952 Teorema 11 Sean m1 . pages 365–370. American Mathematical Monthly.. . si b − a es divisible por m. . m j ). . Entonces el sistema de ecuaciones x + ⟨m1 ⟩ = a1 + ⟨m1 ⟩ .. . mr elementos de A.. la con- gruencia se puede expresar de otras formas equivalentes: a ≡ b (mod m) ⇐⇒ el resto de la división de a y b por m coinciden ⇐⇒ existe k ∈ Z tal que a = b + km. Por otro lado. x + ⟨mr ⟩ = ar + ⟨mr ⟩ tiene solución si y sólo si a i + ⟨d i j ⟩ = a j + ⟨d i j ⟩.. . mr ).. m1 mr donde M = mcm(m1 .. ..

r es el resto de la división de a por m. Si a ≡ b (mod m) y a ≡ b (mod n). El grupo multiplicativo de las . Es claro que toda clase de equivalencia a + Zm tiene uno y sólo un representante a + Zm = r + Zm donde 0 ≤ r < m. Z/Zm = {0 + Zm. Llamaremos clase de congruencia de a módulo m a la clase de equivalencia de a. Si a ≡ b (mod m) y a ≡ b (mod n). . d d Demostración. Más generalmente. El conjunto de todas las clases de equivalencia módulo m se denota Z/Zm. . Proposición 8 La ecuación ax ≡ b (mod m) tiene solución entera si y sólo si d = mcd(a. En este caso. 2. . Si a ≡ b (mod m). . con m y n coprimos. que denotamos a + Zm. podríamos haber definido la relación a ∼ b ⇐⇒ a − b ∈ Zm. d − 1. En esta situación. Alternativamente. Cualquier conjunto de enteros que verifique esta propiedad se llama un conjunto completo de representantes (o de residuos) mó- dulo m. 4. Ejercicio 2 Sean a. b y m ≠ 0 enteros. Corolario 3 Las unidades del anillo Z/Zm son exactamente las clases a + Zm con mcd(a. m) divide a b. n)). . entonces a ≡ b (mod mn). m) = mcd(b. entonces mcd(a. k = 0. las soluciones son m b x0 + k. con d = αa + βm. b) = 1. . De hecho. muchas veces se abusa de la notación y se escribe r en lugar de r + Zm. a veces se escribe r = (a mod m). 1. . entonces a ≡ b (mod mcm(m. Por tanto. De la misma forma.18 teoría de códigos y criptografía es de equivalencia. Si a ≡ b (mod m). m). 3. . x0 = α. No es más que releer la demostración de la Proposición 7. entonces a ≡ b (mod d) para cualquier divisor d de m. (m − 1) + Zm}. e identificar congruencias con clases del grupo cociente Z/Zm.

. pnr r es la descomposición en factores primos de n. Si p es primo. 4. de forma que U mn . el Pequeño Teorema de Fermat es un corolario del Teorema de Euler: Teorema 13 (Teorema de Euler) Sea a + Zm una unidad de Z/Zm. . a p ≡ a (mod p). pero es aquí donde veremos sus propiedades. que es U m × U n . ϕ(mn) = ϕ(m)ϕ(n). denotado ϕ(m). 2. Teorema 12 (Teorema Pequeño de Fermat) Si p es primo y a un entero arbitrario. . Si n = p1n1 . Entonces a ϕ(m) ≡ 1 (mod m). Corolario 4 El anillo Z/Zm es un cuerpo si y sólo si m es primo. Del Teorema Chino del Resto sabemos que los anillos Z/Zmn y (Z/Zm) × (Z/Zn) son isomorfos. tiene cardinal igual al conjunto de los enteros 0 ≤ a < m tales que mcd(a. Si p es primo. entonces a p−1 ≡ 1 (mod p). Si m y n son coprimos. ϕ(pn ) = pn − pn−1 = pn (1 − 1/p). Corolario 5 La función ϕ verifica las siguientes propiedades 1. si p ∤ a. Es inmediato que un isomorfimo lleva unidades en unidades. Más aún. que denotamos U m = (Z/Zm)∗ . p1 pr Demostración. entonces 1 1 ϕ(n) = n(1 − ) . fundamentos 19 unidades de Z/Zm. ϕ(p) = p − 1. . (1 − ). . 3. En realidad. al hablar de la Fórmula de Euler (Teorema 3). Ya hemos encontrado la función ϕ antes. m) = 1. La única dificultad está en probar 3. el conjunto de las unidades de Z/Zmn es biyectivo con el conjunto de las unidades del anillo (Z/Zm) × (Z/Zn).

y en el segundo. luego k contiene una copia de algún F p . Este n puede ser 0 o no. (a + b) p ≡ a p + b p . La demostración corta es: si a + Zm ∈ U m . por el Teorema de Lagrange su orden es un divisor de card U m = ϕ(n). En el primer caso se dice que k es de característica 0. Definición 22 Sea k un cuerpo. y por tanto. existe un n ∈ Z tal que ker(ch) = Zn. Si n = 0. Más generalmente. como Z/Zn debe ser un dominio. k contiene una copia de Z (y por tanto de Q. r Corolario 6 Para todo par de elementos a y b de un cuerpo de característica p. Todo r . Definimos el homomorfismo de anillos ch ∶ Z Ð→ k 1 z→ 1k Por el Primer Teorema de Isomorfía. Antes de probar el Teorema. ϕ(m) ϕ(m) ∏ (u i + Zm ) = ∏ (au i + Zm ).20 teoría de códigos y criptografía Demostración. para todo r ≥ 1. Teorema 14 (de Clasificación de Cuerpos Finitos I) Sea F un cuerpo finito. y Z/Zn ≃ img(ch) ⊂ k. debe- mos determinar y definir un concepto importante. La demostración larga es ver que los conjuntos U m y (a + Zm ) ⋅ U m son biyectivos. 1 ≤ r ≤ p − 1. de característica p. ya que es un cuerpo). Entonces existe un primo p ∈ Z tal que ∣F∣ = p . Si no. i=1 i=1 de donde se sigue que a ϕ(m) + Zm = 1 + Zm . Lema 4 Sea F un cuerpo de característica p. r r r (a + b) p ≡ a p + b p . ha de ser n primo (llamemos n = p). Entonces p ( ) = 0. En cuerpos de característica positiva pasan cosas raras. Cuerpos finitos Esta sección se puede resumir en el Teorema de Clasifica- ción de los Cuerpos Finitos.

y las operaciones de suma y producto son las usuales de polinomios módulo f (X). Cualquier elemento de esta familia de cuerpos isomorfos se denota F pr . Demostración. pero no multi- plicar porque la estructura de espacio vectorial no es compatible con la del producto. todo elemento de Fq se puede ver como un poli- nomio de F p [X] de grado menor que r. . necesariamente de dimensión finita. como un polinomio en α de grado menor o igual que r. En la práctica. α. α 2 + α. ha de tener carac- terística p. equi- valentemente. elegimos un polinomio de grado 3 irreducible sobre F8 . nece- sitamos una representación de Fq que sea manejable. para hacer cálculos con cuerpos finitos. fundamentos 21 cuerpo con pr elementos es isomorfo a F (como grupo abeliano). teniendo en cuenta que f (α) = 0 a la hora de operar. Una primera opción es usar que F pr es un F p -espacio vectorial (Teorema 14) y representar cada elemento de F pr como una r-upla de elementos de F p . En efecto. Al ser F un cuerpo finito. luego es isomorfo a Frp . que pro- viene directamente de la Teoría de Galois9. Con esto. α 2 + α + 1}. α + 1. para cierto r ∈ N y ∣F∣ = pr . Ejemplo 10 Veamos una construcción de F8 (por poner). donde f (X) es un polinomio irreducible de grado r. Esta representación es la que usaremos habitualmente. α 2 + 1. La tabla completa de multiplicar de (F8 )∗ se muestra en la Tabla 1. La lista completa de los elementos de F8 es F8 = {0. Eso implica que ha de ser un F p -espacio vectorial de dimensión r. Por tanto. donde α es la clase de X + ⟨X 3 + X + 1⟩. Si tenemos un cuerpo con pr elementos. O. luego es isomorfo a F (como espacio vectorial y por tanto como grupo abeliano). En primer lugar. es claro que ha de ser de característica p. Una segunda opción es la representación polinomial. La aritmética de F8 es la aritmética usual de polinomios módulo X 3 + X + 1. α 2 . digamos f (X) = X 3 + X + 1. por lo que contiene a F p . o la arimética en F2 [α] con la condición α 3 + α + 1 = 0. es un F p -espacio vectorial. Esto permite fácilmente sumar elementos. 1. podemos 9 Que nuestros alumnos recuerdan perfectamente… considerar el cuerpo Fq dado por Fq ≃ F p [X]/⟨ f (X)⟩.

en característica p. tendremos que F p ⊂ F. Claramente 0 es raíz del polinomio. por abreviar q = pr . …. se tiene que dos cuerpos de q elementos son cuer- pos de descomposición de un mismo polinomio de F p [X]. Consideremos entonces n = mcm{o(x) ∣ x ∈ F∗q } = p1α1 . y observemos que o(x) siempre es un número entre 0 y q − 1. xr β tales que o(x i ) = β i pαi i .pαr r .1: Tabla de multiplicar de (F8 )∗ . Mucho más compleja es la segunda parte del Teorema. αβ ∈ F. . utilizando intensivamente que. La factorización nos indica que existen elementos x1 . Demostración. y si tomamos a ∈ F∗p . con α 3 + α + 1 = 0. tenemos = a [(p−1)(p r −1 r−1 +p r−2 +⋅⋅⋅+1)] a q−1 = a p = 1. β ∈ F es inmediato (aunque aburrido) comprobar que α + β. Por tan- to. con lo cual son isomorfos por un resultado general de Teoría de Ga- 10 No parece tan complicado. y consideremos el polinomio X q − X ∈ F p [X].. Teorema 15 (de Clasificación de Cuerpos Finitos II) Dado un primo p y un entero r > 0 existe siempre un cuerpo F tal que ∣F∣ = pr . Notemos. ⋅) es un grupo cíclico. . el grupo de las unidades (F∗q . ¿verdad? lois¹0. s s s (α + β) p = α p + β p . por tanto β β o(x1 1 .22 teoría de códigos y criptografía Tabla 1. además. Dos de tales cuerpos son siempre isomorfos (como cuerpos). dadas dos raíces α. Por tanto el conjunto F es un cuerpo que. representado como la extensión algebrai- ca F2 [α]. . si consideramos F. dado que a p−1 = 1. Además. denotamos o(x) = min{n ∣ x n = 1}. pαr r = n. . Además. Dado un elemento x ∈ Fq . xr r ) = p1α1 . y. el conjunto de raíces de X q − X en una extensión de F p . ¿Podrías localizar dónde hemos usado un argumento no justificado? Teorema 16 Dado un cuerpo finito Fq . . contiene exactamente q elementos como buscábamos. Demostración. lo que implica que o(x i i ) = pαi i .. por el Pequeño Teorema de Fermat.

d o(a k ) = . d∣(q−1) luego no puede ocurrir que para algún divisor d de q − 1 no existan elementos de orden d. mcd(d. Por el Ejercicio 1. Por la fórmula de Euler. Otra demostración. y supongamos que existe un elemento a ∈ F∗q de orden d. éstos son todos los elementos de orden d o divi- sor de d en F∗q . Por tanto. tenemos que existen al menos d elementos de orden d o divisor de d. Ahora bien. Proposición 9 Sea α ∈ F∗q un elemento primitivo. Hay una demostración alternativa que no es constructiva pero que usa la Fórmula de Euler. Por un lado. bien existen exactamente ϕ(d) elementos de orden d. con lo que el polinomio X n − 1 ∈ Fq [X] tiene. k) luego existen otros ϕ(d) elementos de orden d. todos los a k con mcd(d. k) > 1 tendrán orden un divisor de d. luego no pueden existir más elementos de orden d o divisor de d. que son las potencias de a. Sea d un divisor de q − 1. es claro que n ≤ q − 1. bien no existe ninguno. para todo x ∈ Fq . Entonces Fq = F p [α]. ya que hay un elemento de orden n. Así. por definición de n se tiene que x n = 1. Naturalmente. al menos q − 1 raíces y por tanto n ≥ q − 1. les traemos un resultado tranquilizador. . ∗ ∑ ϕ(d) = q − 1 = card(Fq ). que ya tiene d raíces distintas. Pero además. Definición 23 Un elemento x ∈ F∗q que genere F∗q como grupo cíclico multiplicativo se denomina un elemento primitivo de Fq . Para aquéllos que recuerden otro concepto de elemento primitivo (proveniente de la Teoría de Galois). concluimos que para cada divisor d de q − 1. porque todo elemento de orden d o divisor de d es una raíz del polinomio X d − 1. fundamentos 23 por lo que basta demostrar que n = q − 1 para probar el resultado.

Directa: si α generase un subcuerpo de la extensión F p ⊂ Fq . la matriz M f es la matriz . . e identificamos x con s. . . . No es tan sencillo. El recíproco de la Proposición 9 no es cierto. . . β 3 = 2β. . Ejemplo 11 Consideremos el cuerpo F9 . dado por la exten- sión de Galois F3 [β]. . β4 = 1. . Una opción más sofisticada es considerar la representación matricial de Fq . . con β 2 + 1 = 0. sin embargo. como es obvio. es decir. que tienen orden 8: o(1) = 1 o(2) = 2 o(β) = 4 o(β + 1) = 8 o(β + 2) = 8 o(2β) = 4 o(2β + 1) = 8 o(2β + 2) = 8. los elementos primitivos nos dan una nueva representación de Fq llamada representación logarítmica: supongamos que α ∈ Fq es un elemento primitivo. no podría ser o(α) = q − 1. β 2 = 2. q − 1}. . La idea es la siguiente: consideremos un elemento primitivo α ∈ Fq . . obtener fórmulas simples para la suma.24 teoría de códigos y criptografía Demostración. . sea f (X) = a0 + a1 X + ⋅ ⋅ ⋅ + ar−1 X r−1 + X r su polinomio mínimo sobre F p . . Entonces todo x ∈ Fq es necesariamente de la forma x = α s para cierto s ∈ {0. . se verifica que β 1 = β. . . de donde deducimos que el orden de β es 4. α r−1 } de Fq como F p - espacio vectorial. En esta situación. . Como es inmediato. α. Hay. un elemento primitivo de la extensión no es necesariamente un ele- mento primitivo del grupo F∗q . . . . Esta representación funciona muy bien con el producto. sin embargo ϕ(8) = 4 generadores. y consideremos la matriz compañera de f (X). . ⎛0 0 ⋯ 0 −a0 ⎞ ⎜ ⎟ ⎜ −a1 ⎟ ⎜1 0 ⋯ 0 ⎟ ⎜ ⎟ M f = ⎜0 1 ⋯ 0 −a 2⎟ ⎜ ⎟ ⎜ ⎟ ⎜. y por tanto. que tiene 8 elementos. . no pue- de ser un generador de (F9 )∗ .⎟ ⎜ ⎟ ⎝0 0 ⋯ 1 −ar−1 ⎠ Tomemos ahora la base B = {1. . . . .

Complejidad de algoritmos Antes de dar las definiciones formales. es simplemente la traduc- ción a sage/python de la definición: def fib1(n): if n<2: return n else: return fib1(n-1)+fib1(n-2) Veamos ahora un cálculo de los primeros valores de la función fib1: valores=range(0. lo que nos dice que existe un isomorfismo entre Fq y F p [M f ]. el subanillo del anillo Mr×r (F p ) de las matrices con coficientes en F p generado por M f . fundamentos 25 respecto de B del endomorfismo de F p -espacios vectoriales µ α ∶ Fq Ð→ Fq . Los 11 Fibonacci se llamaba en realidad Leonardo Bonacci. 1. aunque también números de Fibonacci están definidos por la relación de recurren. tenemos que f (M f ) = 0. 34] .10) [fib1(n) for n in valores] [0. se le conoce como Leonardo de Pisa. y que todas las entradas de M f son enteros módulo p. 21. n > 1. 5. 2. Vamos a usar sage/python para implementar dos soluciones. cia Leonardo Pisano o Leonardo Bigollo. ± f (X). Entre otras cosas. La ventaja ahora es que las reglas de la suma y el producto son las reglas usuales del álgebra matricial. popularizó el uso de F0 = 0 los dígitos indoarábigos en Occidente con su libro Liber Abaci. 13. Por tanto. vamos a comenzar It’s complicated por analizar un problema concreto: supongamos que queremos Facebook relationship status poner a un ordenador a calcular los números de Fibonacci¹¹. La primera es más o menos evidente. Por el Teorema de Hamilton-Cayley. 1. 8. también podemos asociar cada elemento de Fq con una expresión polinómica en M f con coeficientes en F p y grado estrictamente menor que r. F1 = 1 Fn = Fn−1 + Fn−2 . β z→ αβ y el polinomio característico de M f es (¡sorpresa!). 3.

832040. 1. tests=range(0. total: 91 µs .26 teoría de códigos y criptografía Pero en realidad. 13. 5. 2. 55. 75025.5) Cronometramos la primera versión: %time [fib1(n) for n in tests] CPU times: user 2min 52s. 610. 5. 34] Puesto que dan los mismos valores. Lo que se hace a mano es empezar desde F0 . no es así como uno calcula los números de Fibonacci usando papel y lápiz. 5.10) [fib2(n) for n in valores] [0. . 6765. Si ahora cronometramos la segunda versión. sys: 23 µs. Esto nos dará una mejor idea de la diferencia entre algoritmos. 9227465. da los mismos valores que antes: valores=range(0. si es que la hay.n+1): t=i+j i=j j=t return j Naturalmente. total: 2min 55s Wall time: 2min 53s [0. 102334155] Casi tres (interminables) minutos. El orden de asignación de las variables es importante. Esta idea es el germen de nuestra siguiente versión. llevando un registro de los dos últimos números. .33 s. 40. 21. 1. pero esta vez vamos además a cronometrar nuestros cálculos. . sys: 2. 3. def fib2(n): i=1 j=0 for k in range(1. tenemos: %time [fib2(n) for n in tests] CPU times: user 68 µs. También usaremos una lista de valores más complicada: queremos calcular Fn para n = 0. . en la que usamos dos variables temporales para guardar los dos últimos números de Fibonacci calculados. 8.41. ¿merece la pena tomarse el trabajo de pensar algoritmos nuevos? Vamos a hacer otra prueba.

de forma que c1 (0) = 1. luego Fn−2 . tardaría aproxi- madamente… 314 billones¹³ de años. lo que tarde un algoritmo depende de cuántos cálculos nece- site hacer¹². en muchas ocasiones. pero se puede calcular una expre- sión cerrada para c1 (n).9 µs [0. Episodio 4 vamos a analizar qué pasa en el primer algoritmo. la función fib1 sim. 9227465. mantener la pila de funciones. primero hay que calcular Fn−1 . una comprobación. Vamos a llamar c1 (n) al número de operaciones que 12 Esto no es exacto. Para hacernos una idea más clara. 1012 . 102334155] que tarda… ¡62 microsegundos! ¿Qué está pasando aquí? ¿Por qué una forma de calcularla es varios órdenes de magnitud más lenta que la otra? ¿Qué brujería es ésta? The Transformers — Dinobots Island II. Temporada 2. contar exactamente el número de opera- ciones de un algoritmo puede ser muy complicado. y dos asignaciones y una suma por cada valor entre 1 y n. 832040. para valores “grandes” de n. motivo por el cual se suele simplificar el problema de la siguiente forma: . mientras que si usamos la función fib1. hace dos asignaciones en todos los casos. En esen- cia. 55. la diferencia es brutal: c1 (100) ≃ 1267650600228229401496703205376 operaciones c2 (100) = 302 operaciones. sumar esos dos enteros. c1 (0) = 1. 6765. aunque lo esencial es que c1 (n) ≃ 2n . No vamos a entrar en detalle. Así. una implementación de un algoritmo depende también de realiza la función fib1(n). el coste de ¿Cuánto vale c1 (n)? Para n = 0 o n = 1. que calcula a razón de 128 millones de operaciones por segundo. Claro. tenemos c2 (n) = 2 + 3n. calular F1000 usando la función fib2 tardaría 15 millonésimas de segundo. fundamentos 27 Wall time: 79. c1 (n) = c1 (n − 2) + c1 (n − 1) + 1. detalles técnicos tales como el coste de invocar una función. asintóticamente. Pero. 75025. La función fib2. digamos n = 100. y c2 (n) al entero análogo para fib2(n). 13 Billones españoles. 5. que en apariencia es más complicada. 610. y luego se define más adelante. es decir. plemente tiene que calcular si n < 2. etc. en un ordenador Intel Core i7. el valor que cuenta más es el número de operaciones elementales. que Para n > 1.

esencialmente.28 teoría de códigos y criptografía 1. contando operaciones elementales. una medida del tamaño de los datos que no es sino el número de cifras. la magnitud de los datos iniciales del problema. o de tiempo). Vamos a introducir una herramienta formal. La función que cuenta el número de operaciones que debe reali- zar un algoritmo (en función de los datos de entrada) se llama la complejidad del algoritmo. En segundo lugar. A la hora de contar operaciones. No es lo mismo 1+1 que 101010101010101010101011111111010010101010101 + 101100111000000000111101010101011010101010101. 1 + 1 = 10 Por este motivo. O. A la hora de manejar estas estimaciones temporales debemos tener en cuenta. lo que es lo mismo. en el contexto de la computación con números enteros. se cuentan sólo las operaciones del peor caso posible. [log2 (x)] + 1. conveniente para analizar las estimaciones de complejidad (o de número de operaciones. es habitual trabajar en base 2 cuando tra- tamos con asuntos de complejidad. no podemos garantizar (salvo en casos muy especiales) que nuestro algoritmo sea el mejor posible para realizar el cálculo deseado. aunque en la práctica se suele tomar simplemente [log2 (x)]. 2. Esta estimación se realiza. dado x ∈ Z. Por ello se suele adoptar. Esto es 0 + 0 = 0. 1 + 0 = 1. En estas condiciones es habitual utilizar la siguiente notación: . una operación elemental es una suma de bits. 0 + 1 = 1. En primer lugar. obviamente. En su forma más estricta. La idea fundamental de la teoría de la complejidad es poder dar una estimación del tiempo que va a tardar en completarse un algoritmo. sin embargo. al dar un algoritmo estamos dando una cota superior para el número de operaciones que se necesitan. con frecuencia estaremos sólo interesados en el comportamiento asintótico de un algoritmo. En realidad.

10111 l cifras. . da igual si k y l son diferentes. si existe una constante positiva C tal que f (n) < C ⋅ g(n) para todo n ∈ N con n ≥ n0 . c1 = O(2n ) c2 = O(n). si l ≤ k. . n→∞ g(n) En esta situación. x→∞ g Ejemplo 12 Con las funciones de los ejemplos anteriores. Diremos que f es del orden de g. podríamos tener 1010 . En otras palabras. se dirá que f es de orden g. sobre todo en textos no demasiado modernos. fundamentos 29 Definición 24 Sean f y g funciones N → R≥0 . notado f = O(g). de k y l ci- fras binarias. y vamos a sumarlos por el procedimiento habitual. Otras notaciones relacionadas con ésta y utilizadas. son f f = o(g) ⇐⇒ lim = 0. . . En la Tabla 1 se representan algunos de los nombres de las funciones de complejidad más habituales. Por ejemplo. y un ejemplo de las estimaciones de tiempo tiempos para lgoritmos Nombre O( f ) Tiempo∗ Constante O(1) 1µs Logarítmico O(log(n)) 3µs Lineal O(n) 1ms Polinomial O(n k ) 1s (para k = 2) 1/2 Subexponencial 2o(n) 55s (para 2n . a razón de 106 operaciones por segundo.) Exponencial 2O(n) 40 ∗ 1015 años O(n) Doble exponencial 22 Hasta que vuelvan los Valar ∗ Tiempo aproximado para n = 1000. sólo importa la longitud del más grande. Ejemplo 13 Vamos a calcular la complejidad de sumar dos enteros de k y l cifras (binarias) por el algoritmo habitual. . f (n) f = O(g) ⇐⇒ lim ∈ R>0 . Observamos en primer lugar que por el procedimiento habitual. a y b. 10110 k cifras 0001 . x→∞ g f f ∼ g ⇐⇒ lim = 1. Supongamos que tenemos dos enteros.

Una asignación (llevada = 0) 2. entonces la suma tiene k + 1 cifras. 1. 10110 0001 .. . Supongamos que a y b vienen dado como dos listas de k cifras. 10111 1100 .. b_1.b): llevada = 0 para cada i = 0. En nuestra situación. 1 1 1 1 0 1010 . . 11111 Al acabar. b_k-1] suma(a. .... a_1. debemos contar siempre el peor caso posible. . tiene k cifras.. de lo contrario.. . . k iteraciones de: (a) 8 comprobaciones (b) 7 asignaciones . La cuestión es: ¿Cuántas operaciones elementales hay que realizar? Tal vez sea más fácil contar el número de operaciones del peor caso usando el algoritmo directamente.. eso quiere decir: 1... si a[i]!=[i]: si llevada==1: c[i] = 0 # y llevada =1 si no: c[1] = 1 llevada = 0 si no si llevada==1: c[i] = 1 # y llevada =1 si no: c[i] = 0 # y llevada =1 si llevada==1: c[k+1] = 1 Si ahora decidimos contar operaciones.30 teoría de códigos y criptografía Ahora podemos sumar.. . y pongamos: a=[a_0. a_k-1] b=[b_0. empezando por la derecha¹4: 14 ¡Y con llevad 0 1 1 1 . k-1: si a[i]==0 and b[i]==0: c[i] = llevada llevada = 0 si no. . . si la última llevada es un 1.

La siguiente proposición permite simplificar los cálculos de las complejidades. f2 = O(g). tendremos 15k + 3 operaciones elementales en total. Y que queremos hablar de matemáticas. Más aún. Si f = O(g). en otras palabras. Pero esto quiere decir que complejidad de sumar a y b = O(15k + 3) = O(k). los humanos lo llaman 1. Un número es un número es un número Supongamos por un momento que los profesores de esta asignatura son alienígenas. 3. k f = O(g). por el momento. contamos de forma diferente. Si f = O(g). entonces f1 f2 ∈ O(g1 g2 ). Proposición 10 Se verifican las siguientes propiedades: The Hulk — Marvel’s The Avengers 1. looks like you don’t get to see my party trick after all. lo llaman 0. 6. 1. mientras . que son alienígenas con siete apéndices que llamaremos “dedos”. 4. Ahora sabemos que 2 = 2. El primer problema que vamos a tener para entendernos. o. Nuestros siete primeros números van así: 0. Si contamos las comprobaciones y asignaciones como operaciones elementales. 5. podemos hacer muchas más trampas: Sorry guys. f ⋅ O(g) ⊂ O( f g). para todo k ∈ R+ . 2. Si f1 = O(g1 ) y f2 = O(g2 ). entonces f1 + f2 = O(g). es hablar de números. Al final del ejemplo hemos hecho un poco de trampa. 4 = 4. f = O(kg). 5 = 5 y 6 = 6. 2. ¿Y a continuación? Nuestro siguiente número es 10. 3. 4. llegamos a la conclusión de que lo que nosotros llamamos 0. y que lo que nosotros llamamos 1. para todo k ∈ R+ . usan- do que 15k + 3 = O(k). fundamentos 31 3. 3 = 3. Una comprobación y una asignación al final. Tras muchas discusiones y mucho mover los dedos. porque nosotros. los humanos¹5 15 Hemos llegado a la Tierra en un país que usa los dígitos 0 a 9. 5. Si f1 . los alienígenas de siete dedos.

conjunto cualquiera de siete cosas. Así.a−1 a−2 . . un sistema posicional de numeración¹8 de base b caso en que b sea natural. Cuando pero los ordenadores usan el punto. Para esta sección. bastante sofisticados. (6. 4. . to que aparece entre a0 y a1 se llama el punto decimal¹9. Ni real. voy a b = 10. y se pueden usar muchas otras elecciones de decimal porque la mayoría de nosotros tenemos 10 dedos. (. . B. 9. por ejemplo. Normalmente. )b = ⋅ ⋅ ⋅ + a3 b3 + a2 b2 + a1 b1 + a0 + a−1 b−1 + a−2 b−2 + ⋯. 5. claro. y 9. 2. Proposición 11 Sea b un natural mayor que 1. Nuestro sistema de numeración. 18 Nosotros consideraremos sólo el En general. 5. entre la Tierra y umb es la representación de 17 En este momento. C. a3 a2 a1 a0 . .9999 . Entonces.242 = 3 ⋅ 103 + 6 ⋅ 102 + 5 ⋅ 10 + 2 ⋅ 10−1 + 4 ⋅ 10−2 + 2 ⋅ 10−3 . E. 8.32 teoría de códigos y criptografía que el siguiente número humano es 7. usamos un sistema de nume- ración posicional de base 10. 4. tiene b = 10 y los dígitos a i son 0. Los números que usamos¹7 a diario son en realidad volvemos a ser humanos. Nuevededos. El número que los humanos llaman 7 es el cardinal de un la tarde. F. se tiene que (143)10 = (10001111)2 = (8F)16 . por ejemplo. En el sistema binario se toma b = 2 y los dígitos son 0 y 1. 1. igual que en umb. Ni siquiera entero. En el sistema hexadecimal. D. 6. . donde 365.4)16 . La representación no es perfecta. El pun- 19 En español se usa una coma decimal. los profesores los números. 3. 7. A. para evitar confusión. y un poco más complicado. y a un entero no negativo. Lo que cambia. 2. se toma b = 16 y los dígitos son 0. 8. Sin embargo. un número es un número en la Tierra y en nuestro planeta natal Ursa Minor 16 En este planeta siempre es sábado por Beta¹6. en el sistema decimal hay más de una forma de escribir el 1: 1 = 0. pero existen sistemas de numeración donde b no es se define por la regla positivo. sin contar a Frodo bases y dígitos. 7. no se suelen escribir los paréntesis ni la base.25)10 = (110. 3. donde b es un entero mayor que 1 y se verifica 0 ≤ a k < b. existe una única representación de a en . Los naturales usar también un punto.01)2 = (6. a i se llaman los dígitos del número. 6. 1. Pero esta elección no tiene 20 Nuestro sistema de numeración es nada de especial²0. .

... a0 )b . ... .. En el caso en que a0 = 0. ... c0 )b . se tiene que q i+1 < q i .. podemos escribir a = q0 b + r0 q0 = q1 b + r1 q1 = q2 b + r2 .... Consideremos las divisiones euclídeas sucesi- vas. obtenemos a = r0 + q0 b = r0 + (q1 b + r1 )b = r0 + r1 b + q1 b 2 = r0 + r1 b + r2 b 2 + q3 b 3 .ccccc . se tendría q i = q i+1 b + r i+1 > q i . En esta situación. r0 )b . .. si a0 ≠ 0... y c = b − 1. a = q0 b + r0 q0 = q1 b + r1 q1 = q2 b + r2 . para i ≥ 1. aunque un poco más compleja. . ........ ...... como b > 1 y r i+1 ≥ 0.. .. . conviene aclarar algo acerca de la unicidad: la representación de a en base b no es... Demostración. a las representaciones enteras finitas..... podemos escribir c0 = a0 − 1. por tanto... a0 )b = (a k . Es decir.. La unicidad de la Proposición se refiere.... Como además los cocientes son positivos existe un k a partir del cual q k+ j = 0 para todo j ≥ 0. porque. .... ... . a0 )b = (c t .. .. ... Si a = (a k .. en general única. La unicidad es más sencilla.. fundamentos 33 base b de la forma a = (a k . q k−1 = 0 ⋅ b + r k donde 0 ≤ r i < b... de forma que a = (a k .. también existe una expresión similar. = r0 + r1 b + r2 b2 + ⋅ ⋅ ⋅ + r k−1 b k−1 + r k b k = (r k ..... porque si fuera q i+1 ≥ q i .. Antes de pasar a la demostración.. Usando sucesivamente las igualdades. lo que no es posible. a1 c0 .. ... )b .

. 42 = (00101010)2 Tras toda esta discusión. c1 )b . . Ejercicio 1. obtenemos (a − a0 )/b = (a k . donde 101 se representaría (01100101)2 . Halla todos los grupos abelianos de orden 60 que: 1. Halla un polinomio f (X) ∈ F5 [X] que verifique: • deg( f ) = 6. el dígito a k se llama el dígito más significativo y el a0 el dígito menos significativo. . y se rellenan con los ceros que haga falta a la izquierda. queda claro que los alienígenas de umb. entonces a ≡ a0 (mod b) ≡ c0 (mod b). De la misma forma. Ejercicio 1. a veces conviene agrupar los dígitos en bloques de longitud fija. Contengan un grupo cíclico de orden 6. . Ejercicio 1. Demuestra que A/I es dominio ⇐⇒ A/I es cuerpo ⇐⇒ x es irreducible.3. .1.34 teoría de códigos y criptografía son dos expresiones enteras finitas. No contengan un grupo cíclico de orden 4. . los enteros a i se llaman los dígitos de la representación. tiene que ser a0 = c0 . a1 )b = (c t . y por recurrencia se tiene que t = k y que a j = c j para 0 ≤ j ≤ k. en realidad. . Si ahora consideramos (a − a0 )/b. Sea A un dominio euclídeo. 2.4. . Ejercicios Ejercicio 1. 42 = 60. . c0 < b. Definición 25 Si a = (a k . I = ⟨x⟩ ⊂ A un ideal. y por tanto. . a0 )b con a k ≠ 0. . y como 0 ≤ a0 .2. Observación 5 Aunque en general consideraremos represen- taciones a = (a k . El caso típico es considerar números binarios agrupados en bloque de 8 dígitos. . . a0 )b . están usando una representación en base b = 7. Halla todos los posibles grupos abelianos de 40 elementos.

Ejercicio 1. para todo n ∈ Z≥0 . esto es. Prueba que las siguientes condiciones son equiva- lentes: • Existe un inverso multiplicativo de a + Zn. Ejercicio 1. Ejercicio 1. Dar un procedimiento para hallar la factorización de N. (4. en función del parámetro a. (4. 3. 0. 0.6. Representando F9 como F3 [α]. n) = 1. Construye explícitamente F9 y da sus elementos en forma logarítmica y matricial. 30∣(n5 − n).7. 4. 4)⟩ . determina si los siguientes elementos son linealmente independientes o no: ⟨(1. Construye explícitamente F4 y da sus elementos en forma matricial.12.13. Ejercicio 1. da un polinomio de F p [X] sin raíces en F p . (3. Demuestra el Teorema de Wilson: p es primo ⇐⇒ (p − 1)! ≡ −1 (mod p). 2). 4)⟩. existe b ∈ Z tal que (a + Zn)(b + Zn) = 1 + Zn. ⟨(1. fundamentos 35 • Su resto al dividir entre X 2 + 2 es X + 1. Demuestra que card{n ∈ Z ∣ ϕ(n) = m} < ∞. (3.9. 3.11. Sea m ∈ Z.14. Sea N ∈ Z del cual conocemos ϕ(N) y también que es producto de dos primos. discute. • f (2) = 4. Responder las siguientes cuestiones: 1. Ejercicio 1. Ejercicio 1. 1). 3). y hállalas cuando existan: ⎧ ⎪ ⎪ (α + 2)X + (2α + 1)Y = 2 ⎨ ⎪ ⎪ aX + (α + 1)Y = 0 ⎩ Ejercicio 1. Usando el Pequeño Teorema de Fermat. • mcd(a. Demuestra que. Ejercicio 1. Ejercicio 1. 1). la existencia de soluciones del siguiente sistema.8. 4.5. En el F5 -espacio vectorial F35 . Ejercicio 1. donde α verifica α 2 + 1 = 0.10.

Probar que calcular n! tiene compleji- dad O(n2 log2 n). Sean a. hallar cociente y resto) tiene complejidad O(log2 a).15. 2. Ejercicio 1. Prueba que hallar mcd(a. 1. b) usando el algoritmo de Euclides tiene complejidad O(log3 a). Sean a. m ∈ Z≥0 . M f + 1)⟩ = ⟨(2M f + 5. Ejercicio 1. m ∈ Z≥0 . 5M f + 1)⟩. n. . Halla la complejidad de calcular a n mod m por un método que comience calculando la expresión binaria de n. Demuestra que convertir n a notación binaria tiene una complejidad O(log2 n). donde expresaremos los elementos de forma matricial.19. En el F49 - espacio vectorial F249 .20. Calcula la complejidad de resolver un sistema de congruencias por el Teorema Chino del Resto. Sean a.18.16. 1. 2. Se considera el cuerpo F49 = F7 [x]/ (x 2 + 2x + 2). n. Halla la complejidad de n calcular a 2 mod m y a 2 mod m. 3. Sea n ∈ Z. con a > b. Ejercicio 1. Ejercicio 1. estudia si ⟨(2M f . Ejercicio 1. Ejercicio 1. Prueba que hallar los coeficientes de la Identidad de Bezout tiene complejidad O(log3 a).17.36 teoría de códigos y criptografía 2. Prueba que la división euclídea de a entre b (esto es. Sea n ∈ Z. b ∈ Z. Halla la complejidad de calcular a n mod m por el método que parezca más simple.

CÓDIGOS
CORRECTORES DE
2
E R RO R E S
El 14 de Julio de 2015, la sonda espacial New Horizons pasó
a 12.000 km de la superficie del planeta¹ Plutón, y recogió unos 1
A veces Plutón es un planeta, y a veces
no.
6.25 Gb de datos en un par de discos duros (endurecidos para
radiación) de 32Gb. Después, pasó algunos meses mandando
datos de vuelta a razón de unos 38 kbit/s, hasta Octubre de 2016.

Sonda New Horizons

Júpiter

Tierra Plutón

Figura 2.1: El viaje de la sonda New
Horizons. En este representación, las
distancias entre los planetas son pro-
porcionales a las distancias reales, pero
La New
los planetas están Horizons noLatiene una pila eléctrica infinita; sino que
a escala 2000x.
imagen de la sonda no está a escala. Tras
obtiene
la asistenciasu energía de
gravitacional algo llamado
de Júpiter, la un rtg. Un rtg, o generador
New Horizons llegó a Plutón tras 10 años
térmico de radioisótopos, es, en esencia, una lata de Plutonio 238,
de viaje, en los que recorrió 4,76 mil
calientedepor
millones km. la desintegración radioactiva, unido a una termocupla

para generar electricidad, que permite dedicar unos 24 vatios de
potencia a las antenas de transmisión de datos de la New Horizons. As with most of life’s problems, this one
can be solved by a box of pure radiation.
Es decir, el problema que tuvieron que resolver los inge-
Andy Weir — The Martian
nieros de telecomunicaciones es cómo recuperar la información
que envía un artefacto del tamaño de una moto grande, con la po-
tencia de una bombilla doméstica pequeña, a 6.000 millones de
kilómetros.
Parte de la solución es el código corrector de errores que
lleva incorporada la programación de la New Horizons. En las
transmisiones, usa un turbo código BPSK de ratio 1/6, que es un códi-

38 teoría de códigos y criptografía

go corrector diseñado en los años ’90 del siglo xx, y que permite
maximizar los datos por potencia de transmisión.
Nosotros no veremos códigos tan específicos en esta asigna-
tura; pero sí que introduciremos los conceptos básicos de la teoría
de códigos correctores de errores, y veremos algunas familias co-
This is going to be a tricky one nocidas de ejemplos; algunos de ellos muy interesantes. Vamos a
The Doctor — Amy’s Choice empezar por las definiciones básicas.
Doctor Who 5.7

Códigos correctores y códigos detectores

Definición 26 Un alfabeto A es un conjunto no vacío de símbolos,
sin significado individual. Una palabra de código de n caracteres, o un
bloque de código longitud n es un elemento de An . Un código es un
conjunto no vacío de palabras, es decir es un C ⊆ An .
Dado un código C ⊂ An , se llama longitud del código al entero n, y
tamaño del código al entero ∣C∣.

ascii significa American Standard Code for Ejemplo 14 El código ascii evolucionó a partir de un código
Information Interchange. Debido a que sólo
anterior, llamado el código de la cinta de papel, que consistía en un
tenía espacio para 127 caracteres, muchos
fabricantes de hardware y software am- código en bloque de 8 caracteres binarios. Esto es, A = {0, 1} = F2
pliaron de forma no estándar el código
y C = A8 = F82 , que se construía de la siguiente forma:
ascii. Esto ha causado mucho dolor, ira
y confusión. Pero no es comparable al su-
frimiento que ha causado el otro sistema 1. Los enteros 0, 1, …, 127 se codificaban en binario, usando
similar, el ebcdic. Hoy día hay un código
7 bits, es decir, (0000000)2 a (1111111)2 .
más general, el estándar unicode, y la
codificación utf-8.
2. Las primeras 32 (de (0000000)2 a (0011111)2 ) palabras del có-
digo se reservaban para “caracteres no imprimibles” o carac-
teres de control, como ⟨fin_de_línea⟩ o ⟨tabulación_horizontal⟩.
También se reservaba la palabra 127 = (1111111)2 , con signi-
ficado ⟨carácter borrado (delete)⟩.

3. Las palabras 32 a 126 se asignaban a caracteres imprimibles,
de forma similar a las que se muestran en la Tabla 2.
Figura 2.2: Dos tipos de cintas de papel,
con dos códigos distintos. La de la
4. A cada palabra de 7 bits se le añadía a la izquierda, una cifra
izquierda corresponde a un código de que consistía en la suma (módulo 2) de las 7 primeras cifras
5 bits, y la de la derecha a un código de
8 = 7 + 1 bits, como se describe en el
binarias. Esto se denominaba clásicamente bit de paridad.
texto. Imagen en dominio público.
5. Cada bloque de 8 bits se representaba como un segmento de
agujeros en lugar de los unos, como en la Figura 2.2.

Así, por ejemplo, la a correspondía al decimal 97, es decir,

a ←→ 97 ←→ (1100001)2 Ô⇒ Código a = 11000011.

códigos correctores de errores 39

Es sencillo ver que si en el código de la cinta de papel comete-
mos un error al copiar o transmitir un carácter (es decir, un error
en 8 bits), ese error se detectará por la presencia del bit de pari-
dad. Es un ejemplo rudimentario de detección de errores, esto es, Pero ¿quién se da cuenta de sus yerros?

cómo el añadir información redundante a las palabras de un código puede Salmo 19 13

resultar útil ante la presencia de errores en la transmisión.

En la Tabla 2 representamos el código ascii moderno
en 7 bits, que, a diferencia del de la cinta de papel no contiene
bit de paridad.

0100000 32 ! 0100001 33 " 0100010 34 # 0100011 35 $ 0100100 36
% 0100101 37 & 0100110 38 ' 0100111 39 ( 0101000 40 ) 0101001 41
* 0101010 42 + 0101011 43 , 0101100 44 - 0101101 45 . 0101110 46
/ 0101111 47 0 0110000 48 1 0110001 49 2 0110010 50 3 0110011 51
4 0110100 52 5 0110101 53 6 0110110 54 7 0110111 55 8 0111000 56
9 0111001 57 : 0111010 58 ; 0111011 59 < 0111100 60 = 0111101 61
> 0111110 62 ? 0111111 63 @ 1000000 64 A 1000001 65 B 1000010 66
C 1000011 67 D 1000100 68 E 1000101 69 F 1000110 70 G 1000111 71
H 1001000 72 I 1001001 73 J 1001010 74 K 1001011 75 L 1001100 76
M 1001101 77 N 1001110 78 O 1001111 79 P 1010000 80 Q 1010001 81
R 1010010 82 S 1010011 83 T 1010100 84 U 1010101 85 V 1010110 86
W 1010111 87 X 1011000 88 Y 1011001 89 Z 1011010 90 [ 1011011 91
\ 1011100 92 ] 1011101 93 ^ 1011110 94 _ 1011111 95 ` 1100000 96
a 1100001 97 b 1100010 98 c 1100011 99 d 1100100 100 e 1100101 101
f 1100110 102 g 1100111 103 h 1101000 104 i 1101001 105 j 1101010 106
k 1101011 107 l 1101100 108 m 1101101 109 n 1101110 110 o 1101111 111
p 1110000 112 q 1110001 113 r 1110010 114 s 1110011 115 t 1110100 116
u 1110101 117 v 1110110 118 w 1110111 119 x 1111000 120 y 1111001 121
z 1111010 122 { 1111011 123 | 1111100 124 } 1111101 125 ~ 1111110 126

Tabla 2.1: Lista de los caracteres ascii
imprimibles y su correspondencia
Dentro de An podemos definir una métrica en el sentido decimal y binaria (en 7 bits). El carácter
32 es el espacio entre palabras y el 127 el
usual del término, que nos permite dotar al conjunto de una topo- carácter ⟨DEL⟩.
logía que nos será de utilidad.

Definición 27 Definimos la métrica o distancia de Hamming en An
como
d∶ An × An Ð→ R≥0
(x, v) z→ card{i ∣ x i ≠ v i , i = 1, . . . , n}

esto es, d(x, v) mide el número de coordenadas distintas de x y v. Para el caso más frecuente, cuando A =
F2 , podemos definir equivalentemente

Ejemplo 15 Consideremos A = F3 , y C = F33 . En esta situa-
n
d(x, v) = ∑ ∣x i − v i ∣.
i=1
ción,

B((0, 0, 0), 1) = {(0, 0, 0), (1, 0, 0), (2, 0, 0), (0, 1, 0),
(0, 2, 0), (0, 0, 1), (0, 0, 2)}.

Definición 28 (Decodificación por máxima verosimiliud) Supongamos recibida una palabra z. x será la palabra más próxima a z Como se puede comprobar. que un código corrector de errores para decodificar las pistas de un cd. Estrategias de corrección El problema que intentamos resolver con los códigos correc- tores de errores es el siguiente: supongamos dos usuarios. de manera que Bob no recibe exactamente x sino que recibe to admit to yourself your own errors. Definición 29 (Decodificación por distancia mínima) Si hemos recibido una palabra z ∈ An . definimos su decodificación por distancia mínima a la única palabra x del código (si existe) que minimiza d(x. en muchos casos ambas estrate- gias coinciden. definimos su decodificación como la palabra del código x (si existe) tal que x maximiza P[z recibida∣x enviada]. La pregunta del millón es: ¿se puede recupe- rar x a partir de z sin conocer previamente e? Hay varias estrategias para intentar recuperar x a partir de z. telefonía móvil. que permite evaluar de forma precisa esta probabilidad condicionada. Alice quiere transmitir una cierta información a Bob. En la operación de transmisión pueden producirse erro- Nothing is more intolerable than to have res. donde los errores ocurren con frecuencia por ráfagas. con frecuencia se tiene información adicional sobre un código. z). no es lo mismo un código corrector para imágenes enviadas por sondas espaciales. es decir. z = x + e. etc. que usan un canal de comunicación–internet. donde los errores son esencialmente aleatorios y uniformemente distribuidos. y supondremos que la información viene dada por una (o más) palabras de un código x ∈ C. en el sentido topológico.40 teoría de códigos y criptografía Ejercicio 3 Demuestra que la distancia de Hamming es una distancia. Ludwig van Beethoven a priori desconocido. Alice y Bob. Por ejemplo. En condiciones de uso en el mundo real. donde e es un cierto vector de errores de transmisión. .

. en el códi- go de repetición tenemos una distancia mínima bastante grande ¡Nunca está de más repetirlo! ¡Nunca está de más repetirlo! (tanta como queramos. Aquí. . pero a cambio ¡Nunca está de más repetirlo! la información transmitida en cada palabra del código es escasa. Supongamos que la probabilidad de que se produzca un error en la transmisión de la coordenada i-ésima de x es 0 < p i < 1/2. en la cinta de papel. Parece que la distancia mínima crece de forma inversamente proporcional a la cantidad de información transmitida. Esto nos permitirá poder detectar (y eventualmente corregir) errores. si se cometen (no demasiados) errores al transmitir una palabra. y sean v. z ∉ C tales que d(x. Parámetros de los códigos Intuitivamente. n − 1 bits son información pura. estamos interesados en códigos donde las palabras estén cuanto más lejos mejor. n i=1 y es una generalización del código de la cinta de papel original. cerca únicamente de la palabra correcta. v) < d(x. La distancia mínima entre palabras de este código es 2 (se justifica más adelante). se toma típicamente n = 8 y A = F2 . Ejemplo 16 El código de repetición de longitud n sobre el Este es el código más usado por los progenitores de todo el mundo. ∑ x i = 0} ⊂ F2 . Para este código. . . Les Luthiers — Consejos para padres nada más que un bit. ya que si las palabras del código están muy separadas las unas de las otras. x n juega el papel de bit paridad. porque pueden variar como queramos. x ∈ C. Por ejemplo. x n ) ∣ x i ∈ F2 . Vemos que hay diferencias muy importantes entre las dis- tancias entre palabras de los dos ejemplos anteriores. Sin embargo. y que son idependientes. . Ejemplo 17 El código de la cinta de papel de n agujeros con- siste en n C = {(x1 . . x2 . códigos correctores de errores 41 Ejercicio 4 Sea C ⊂ An un código. a) ∣ a ∈ A} ⊂ A n . la transmisión errónea quedará. si podemos hacer crecer n). Obsérvese que la distancia entre dos palabras cualesquiera de este código es exactamente n. y . . Demuestra que la probabilidad de transmitir x y recibir v es estrictamente menor que la probabilidad de transmitir x y recibir z. de entre todas las del código. a. z). o eso esperamos. . alfabeto A consiste en C = {(a.

v) ≤ ⌊ ⌋. 2 2 Diremos que un código C corrige ⌊(d − 1)/2⌋ errores cuando se da esta situación. v ∈ C}. 2 Dicho de otro modo. n 3. Las demás constantes relacionadas con el código. d). tamaño m y distancia mínima d. Normalmente diremos que C es un código tipo (n. Lema 6 (corrección de errores) Sea C un código tipo (n. Lema 5 (detección de errores) Sea C un código tipo (n. Cuando sea necesario especificar q = card(A). v) < d. d)q . escri- biremos (n. para todos x ∈ C y v ∈ An . Entonces. denominadas parámetros del código. ⌊ ⌋) ∩ B(x2 . m. llamamos: 1. Dado un código C ⊂ An . n 4. v) ∣ x. d) para decir que es un código de longitud n. Definición 30 Supongamos que ∣A∣ = q. y para todo v ∈ An . 2. Tasa de transmisión de información del código al número logq (∣C∣) R(C) = . i = 1. m. Redundancia del código al número n − logq (∣C∣). d).42 teoría de códigos y criptografía sólo un bit es dependiente de los otros. claro está). Distancia mínima del código al número d(C) = min{d(x. Distancia mínima relativa del código al número d(C) δ(C) = . x2 ∈ C. Sin embargo. m. si d(x. la distancia mínima en este código es siempre 2. se pueden calcular a partir de éstas (conocido C. d −1 d −1 B(x1 . para cualesquiera x1 . no es posible d −1 d(x i . Entonces. m. ⌊ ⌋) = ∅. 2. Diremos que un código C detecta d − 1 errores cuando se da esta situación. . se tiene que v ∉ C.

desde el punto de vista matemáti- co: • Encontrar un compromiso adecuado entre los errores que se pretenden detectar o corregir y la tasa de información. como subespacio vectorial que es. Visto lo anterior la teoría de códigos correctores presenta algunos problemas interesantes. siendo su tasa de transmisión 4/7. al menos por ahora). era en un código (7. Esto es. q k . x2 . Códigos lineales A partir de ahora trabajaremos con el espacio vectorial An = Fnq . d) (no sabemos quién es d. donde notaremos sus vectores como columnas. un algoritmo eficiente para detectar y corregir los errores de transmisión. y x4 vienen determinados por nuestra elección. para adecuar los códigos a los errores más comunes. menos cuesta enviar el mismo mensaje). digamos dim(C) = k. que está directamente involucrada con el coste de transmisión (a mejor tasa. x6 . 24 . y x7 como paráme- tros y los valores de x1 . dependiendo del tipo de transmisión (ejemplo. el primer ejemplo de la historia de código corrector de errores pensado como tal. si es posible. En estas condiciones es claro que C es un código tipo (n. El código C era el conjunto de soluciones en F72 del sistema ⎧ ⎪ ⎪ ⎪ x1 +x3 +x5 +x7 = 0 ⎪ ⎪ ⎨ x2 +x3 +x6 +x7 = 0 ⎪ ⎪ ⎪ ⎪ ⎪ x4 +x5 +x6 +x7 = 0 ⎩ Es sencillo ver que podemos tomar x3 . x5 . Es un código que detecta dos errores y corrige uno. • Estudiar errores de distinta naturaleza. 3) sobre A = F2 . tiene una dimensión. con R(C) = k/n y re- dundancia n − k. cd). • Dar. códigos correctores de errores 43 Ejemplo 18 (Código original de Hamming) El código original de Hamming. de las n coordenadas que tiene cada . isbn vs. Observación 6 Un código lineal C ⊂ Fnq . La distancia mínima relativa es 3/7 y la redundancia de este código es 3. Definición 31 Un código lineal de longitud n sobre el alfabeto A = Fq es un subespacio vectorial de Fnq .

0). y recuperado z. El uso típico de los códigos lineales es el siguiente. q k . . Dado un mensaje m ∈ Ak = Fqk . es posible calcular de nuevo m como las coorde- nadas de z en la base elegida. El vector z es lo que se transmite. escrito como bloques de longitud k sobre un cuerpo finito Fq . donde q = 2 y k = 8. . enton- ces d = min w(x). d). Podemos denotar la transmisión con errores por z ↝ z + e = x. Elegimos o diseñamos un código de dimensión k y lon- gitud n.44 teoría de códigos y criptografía palabra de C. 0≠x∈C . k contienen información. recuperándose z: x ↦ z. Para hallar la distancia mínima de un código lineal nos apo- yamos en un concepto auxiliar. u k ⟩ ⊆ (Fq )n . donde e es el vector de errores. supuesto que nuestro código es suficientemente bueno. Ahora. esta operación se llama decodificación. se procece a la corrección de x. . Proposición 12 Si C es un código lineal tipo (n. El caso típico es una transmisión binaria de bytes. con distancia mínima d adecuada a la tasa de errores del canal de transmisión. . Supongamos que C = ⟨u1 . Dado x ∈ Fnq definimos su peso como w(x) = card{i ∣ x i ≠ 0} = d(x. llamamos la codificación de m al vector del código z = m1 u1 + ⋅ ⋅ ⋅ + m k u k ∈ C. m ↦ z ↝ x ↦ z ↦ m. Suponga- mos que tenemos un mensaje que queremos transmitir sin errores. y en el canal de transmisión ocurren unos ciertos errores. Ejercicio 5 Estudia cuáles de los ejemplos que hemos visto en la sección anterior son códigos lineales y determina su dimensión. Esquemáticamente. lo cual es perfectamente coherente con el hecho de que dim(C) = k.

Dado un vector x ∈ Fnq . v ∈ C. A ⋅ M = 0 ∈ M((n − k) × k. rg(A) = n − k. 2. Fq ). Diremos que M es una matriz generatriz de C cuando las columnas de M formen una base de C como subespacio vectorial. Proposición 13 Sea C ⊂ Fnq un código lineal tipo (n. en particular. Si C viene expresado por un sistema de ecuaciones implícitas independientes. diremos que A es una matriz de control de C. x ∈ C ⇐⇒ Ax = 0 ∈ M((n−k)×1. v) = d(x − v. Entonces: 1. para todo x. a las dos maneras más habituales de expresar un subespacio vectorial: me- diante una base y mediante un sistema de ecuaciones implícitas. 3. códigos correctores de errores 45 Demostración. 0) = w(x − v). 4. ⎜ ⎟ ⎝0 0 0 1 1 1 1⎠ . Fq ) ⇐⇒ rg(M) = rg(M∣x). Fq ). rg(M) = k. también se tiene que x − v ∈ C. q k . Para ello recu- rriremos a la artillería del álgebra lineal y. M ∈ M(n × k. AX = 0 ∈ M((n − k) × 1. y d(x. Basta aplicar que. A ∈ M((n − k) × n. Definición 33 Sea C ⊂ Fnq un código lineal. Ejemplo 19 El código binario original de Hamming. Fq ). Definición 32 Sea C ⊂ Fnq un código lineal. Fq ). d) con matriz generatriz M y matriz de control A. tiene por matriz de control ⎛1 0 1 0 1 0 1⎞ ⎜ ⎟ A = ⎜0 1 1 0 0 1 1⎟ . Falta por dar una manera explícita (a ser posible sencilla) de calcular la distancia mínima de un código lineal.

siguiendo el principio de distancia mínima. con w(x) = r. para que la fase de decodificación sea rápida. Demostración.46 teoría de códigos y criptografía y una matriz generatriz es ⎛1 1 0 1⎞ ⎜ ⎟ ⎜1 0 1 1⎟ ⎜ ⎟ ⎜ ⎟ ⎜1 0 0 0⎟ ⎜ ⎟ ⎜ ⎟ M = ⎜0 1 1 1⎟ . d es precisamente el cardinal del menor² conjunto de colum- nas de A que formen un conjunto linealmente dependiente. La estructura extra que nos proporcionan los códigos li- neales nos permite una decodificación sistemática. ⎜ ⎟ ⎜ ⎟ ⎜0 1 0 0⎟ ⎜ ⎟ ⎜ ⎟ ⎜0 0 1 0⎟ ⎜ ⎟ ⎝0 0 0 1⎠ Obsérvese que la matriz generatriz está pensada de forma que sea especialmente fácil resolver sistemas de la forma Mm = z. y que hemos emitido una palabra x ∈ C. Supongamos que tenemos un có- digo lineal C ⊂ Fnq . tanto. . Sea x ∈ C. Ejercicio 6 Calcular las matrices asociadas a los códigos de repetición. con matriz de control A. Por 2 Atención: esto no es rango de A. recibiendo en cambio z = x + e. Proposición 14 La distancia mínima de C es la menor canti- dad de columnas de A que necesitamos para formar un conjunto linealmente dependiente. Entonces x ∈ C ⇐⇒ Ax = 0 ⇐⇒ x1 C(A)1 + ⋅ ⋅ ⋅ + x n C(A)n = 0 ∈ Fn−k q . Probaremos que existe un vector de peso exactamente r en el código si y sólo si existe una combinación lineal de exactamente r columnas con coeficientes no nulos que da 0. de la cinta de papel y de Hamming y estudiar la distancia mínima en cada caso. donde exactamente r de las n coordenadas de x son no nulas.

entonces s(v) = s(e). s(z) = 0 ⇐⇒ z ∈ C. Proposición 15 Algunas propiedades elementales del síndro- me son: 1. definida por la matriz A. Aunque este algoritmo funciona. el síndrome no es sino la aplicación lineal s∶ Fnq q . y x ∈ C. que llamamos los síndromes. pues. que verifica ker(s) = C. existe una forma de mejorar mucho la eficiencia. w) si d < min entonces x=w min = d devolver x La asignación d = d(z. w) es de orden lineal O(n). códigos correctores de errores 47 donde e es el vector de errores en la transmisión. Si v = x + e. tiene una complejidad altísima para códigos de tamaño mediano o grande. El síndrome de un vector es una combinación lineal de las columnas de A correspondientes a las coordenadas en las que se ha cometido un error de transmisión. → Fn−k . 2. d) y una palabra z Salida: La corrección por distancia mínima de z min = n para cada palabra w ∈ C hacer d = d(z. Decodificación por síndromes y errores Definición 34 Llamamos síndrome de v al vector s(v) = Av ∈ Fn−k q . y el algorit- mo completo tiene complejidad O(nq k ). Algoritmo 1: Decodificación por distancia mínima (sin optimizar) Entrada: Un código C de tipo (n. Afortunadamente. pero tendremos que introducir una herramienta. a priori descono- cido. 3. En realidad. q k . y funciona bien.

Cada clase tiene q m elementos. que es un espacio vectorial de dimensión n − m. con ⎛1 0 1 0 1 0 1⎞ ⎜ ⎟ A = ⎜0 1 1 0 0 1 1⎟ . ⎜ ⎟ ⎝0 0 0 1 1 1 1⎠ Supongamos que hemos emitido una palabra del código y hemos recibido z = (1011011). luego la palabra original era 1011011 − 0000001 = 1011110. u − v ∈ C ⇐⇒ u + C = v + C ⇐⇒ s(u) = s(v). consideramos el espacio Fnq /C. el síndrome determi. ⎜ ⎟ ⎝1⎠ que es precisamente la séptima columna de A. ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝0⎠ ⎝1⎠ ⎝1⎠ Sin embargo. Sus elementos son las clases x + C = {x + u ∣ u ∈ C}. el error está en la séptima coordenada. porque ⎛1⎞ ⎛0⎞ ⎛1⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜0⎟ + ⎜1⎟ = ⎜1⎟ .48 teoría de códigos y criptografía Ejemplo 20 De nuevo consideramos el código original de Hamming. v están en la mis- Dicho de otra forma. Entonces. Dos vectores u. Una observación importante es que dos palabras tienen el mismo síndrome si y sólo si su diferencia es una palabra del código. ma clase si y sólo si sus síndromes coindicen: na de forma unívoca la clase. Cuidado: aquí podríamos haber supuesto que se han cometido errores en las coordenadas 1 y 6. y esto permite interpretar el síndrome en términos de espacios cociente. por el principio de la distancia mínima suponemos que se ha cometido un error y no dos. . de tamaño q m . que no está en el código. Dado un código lineal C ⊂ Fnq . Por tanto. supo- niendo que sólo hayamos cometido un error. ⎛1⎞ ⎜ ⎟ Az = ⎜1⎟ . Formalmente s(u) − s(v) = s(u − v) = 0 ⇐⇒ u − v ∈ C.

La Proposición 16 nos permite usar el algoritmo del líder o —¿Ves? Ahora me respetas. Para asegurarlo. Si además supiéramos que no hay dos errores con el mismo síndrome. q m . Supongamos también que hemos calculado su síndrome. Definición 35 Diremos que un elemento u es líder de una clase Fnq /C cuando sea el único elemento de peso mínimo. Supongamos que existen dos vectores u ∈ e + C con peso menor o igual que t = ⌊(d − 1)/2⌋. Demostración. pero. Para este algoritmo. En particular. supongamos un código lineal C y supongamos que la palabra e = (1. Sea e ∈ Fnq tal que w(e) ≤ ⌊(d − 1)/2⌋. Por poner un ejemplo concreto. e) = 0 y u = e. Obviamente. 0. . d). no tiene por qué haber un único elemento de peso mínimo. para todo u ∈ e + C distinto de e. . se tiene que w(u) > ⌊(d − 1)/2⌋. 0) no está en el código. sería idóneo que pudiéramos asegurar que el error cometido es exactamente e. sí que hay uno y sólo uno. y todas síndrome igual a s(e). en las clases que nos interesan. . porque soy una amenaza algoritmo de síndromes y errores para decodificar. Síndrome en Los increíbles (2004) . e es el líder de su clase. Proposición 16 Sea C ⊂ Fnq un código lineal tipo (n. códigos correctores de errores 49 Si ahora pensamos en un vector e como en un vector de errores en la transmisión. la clase e + C consiste en las todas las palabras del código afectadas del mismo error. necesitamos algunas condiciones de unicidad. podríamos recuperar la palabra original simple- mente restando e. Entonces u − e ∈ C y w(u − e) ≤ w(u) + w(v) ≤ 2t < d(C). Si ahora recibimos una palabra z de forma que s(z) = s(e). s(e). . Entonces. en la práctica. por lo que d(u.

) Las operaciones de las líneas 3 y 4 son lineales en la longitud de los vectores. no es menos cierto que la gran mayoría de los códigos actuales no son sino ejemplos (familias) de códigos lineales para los cuales existe una variación creativa del algoritmo del líder que permite decodificar de manera eficaz. j=0 j (La última desigualdad la veremos un poco más adelante. puede haber otras clases con líder. ya que forzosamente ellos serán líderes de las clases en las que. podre- mos decodificar. siendo éste de peso mayor que ⌊(d − 1)/2⌋. como los que se demandan en muchas aplicaciones actuales. es decir a ⌊ d−1 ⌋ 2 n ∣B(0. la necesidad de precalcular una tabla de síndro- mes y errores implica que este método no es práctico para có- digos de gran tamaño o longitud. y es O((n − k)n). Algoritmo 2: Decodificación por síndromes y errores (sin optimizar) Entrada: Una tabla T{síndrome → error} de un código lineal C y una palabra z Salida: La corrección por síndromes y errores de z 1 s = s(z) = Az 2 para cada síndrome t de T hacer 3 si s = t entonces 4 x = z − T[t] devolver x devolver No es posible decodificar z Vamos a examinar someramente la complejidad de este algo- ritmo. La complejidad del ciclo de la línea 2 es propor- cional al tamaño de la tabla. con seguridad. ⌊(d − 1)/2⌋) y considerar los síndromes correspondientes. de forma que la complejidad total es O((n − k)n + (n − k)q n−k ) = O((n − k)q n−k ). De nuevo. La complejidad de calcular s en el paso 1 es la del producto de una matriz de tamaño (n − k) × k por otra de tamaño (n − k) × 1. Observación 7 La proposición anterior nos muestra que para crear la tabla podemos tomar los elementos de B(0. Sin embargo.50 teoría de códigos y criptografía supondremos que hemos precalculado una tabla con los síndro- mes de todos los vectores de peso menor o igual que ⌊(d − 1)/2⌋. Sin embargo. Calcular estas cla- . ⌊(d − 1)/2⌋)∣ = ∑ ( )(q − 1) j ≤ q n−k .

# encoding: utf-8 F=GF(2) A=matrix(F. len(v)*[0])) No nos preocupamos mucho de las buenas prácticas de progra- mación y usaremos variables globales para definir el síndrome.1]. también por un procedimiento simple.1]. es muy fácil implementar una versión ingenua del algortimo de síndromes y errores.0. Veamos un ejemplo para el código original de Hamming.0. códigos correctores de errores 51 ses y añadirlas a la tabla pueden suponer una capacidad extra de corrección.[0.1.1.1.y) in zip(v1.v2): assert(len(v1)==len(v2)) return sum( [0 if x==y else 1 for (x.[[1. En primer lugar.1. Ajustar para otros ejemplos An=VectorSpace(F.v2) ] ) def peso(v): return Integer(distancia_Hamming(v. Aunque sage tiene un módulo sobre códigos lineales.1.0. Tabla=dict([ ( tuple( s(v) ) .0.1. calculamos las palabras de peso menor o igual que ⌊(d − 1)/2⌋ y la tabla de síndromes y errores.0.[0.right_kernel() A continuación definimos la distancia de Hamming y el peso: # Primer paso: disco de centro 0 y radio [(d-1)/2]. 7) # La longitud del código es 7. def distancia_Hamming(v1.0. Ajustar para otros ejemplos A continuación.1. v ) for v in Disco ] ) .append(v) # Tabla de síndromes y errores. definimos el código de Hamming por su matriz de control. pero lento: Disco=[] for v in An: if peso(v)<= floor((d-1)/2): Disco.1.0.1]]) C=A. el tamaño y la distancia mínima def s(v): return A*v d=3 # La distancia mínima de C es 3. a costa de aumentar la memoria utilizada.

. . Códigos cíclicos. Interpretación en el anillo cociente de polinomios: Alter- nativamente. La descripción de los códigos cíclicos se hace en dos contex- tos distintos. el conjunto de polinomios sobre Fq con grado menor o igual que n − 1. . . x1 . u1 . Observación 8 Por motivos que después resultarán obvios. Veamos a continuación un ejemplo de una familia de códigos lineales que tiene un método propio de decodificación que mejora el de síndromes y errores. Esta identifica- ción es. x n ) ∈ C Ô⇒ (x n . . . x n−1 ) ∈ C. Con esta tabla. es sencillo decodificar todas y cada una de las palabras posibles. que normalmente se usan de manera indiferenciada: 1. . 2. . Interpretación en el espacio vectorial de los polinomios: Identificamos Fnq con Fq [X]≤n−1 . . la función para decodificar: def decodificar(v): sindrome=tuple(s(v)) if sindrome in Tabla: return v-Tabla[sindrome] else: return None La tabla de síndromes y errores que hemos creado la repre- sentamos en Tabla 4. x1 . lo que hacemos en la Tabla 4. u n−1 ) ←→ u0 + u1 X + u2 X 2 + ⋅ ⋅ ⋅ + u n−1 X n−1 . q) = 1 para poder aplicar algunas de las propiedades más interesantes de los códigos cíclicos. . . x n−1 ) .52 teoría de códigos y criptografía Por último. . . . explícitamente: u = (u0 . Importante: En lo sucesivo supondremos mcd(n. cambiamos la notación habitual y consideraremos los elementos de Fnq escritos como x = (x0 . . interpretamos Fnq ≃ Fq [X]≤n−1 con el anillo . Definición 36 Un código cíclico es un código lineal C ⊂ Fnq que verifica la siguiente propiedad: (x1 . .

. La suma es cerrada. entonces X f (X) = a n−1 + a0 X + a1 X 2 + ⋅ ⋅ ⋅ + a n−2 X n−1 . Para ver que el producto de un polinomio f (X) ∈ C por uno arbitrario g(X) ∈ Fq [X]/⟨X n − 1⟩ está siempre en C podemos suponer³ que g(X) = X. Supongamos que tomamos un elemento ge- nérico f (X)g(X) ∈ C. Vamos a llamar h(X) al polinomio que verifica gh = X n − 1. del que sabemos que deg(h) = k. Proposición 17 Sea C ⊂ Fnq un código lineal. En esta interpretación. . . . Entonces f (X)g(X)− f0 (X)g(X) = ( f − f0 )⋅g = q(X)h(X)g(X) ∈ ⟨X n −1⟩. la condición de que C sea cíclico. precisamente. Observación 9 Dado que en Fq [X]/⟨X n − 1⟩ todos los ideales son principales. X g(X). por ser un código lineal (y por tanto un subespacio vectorial). n polinomio g(X) divisor de X 8 − 1 tal que X 7 − X⟩ = g(X) + ⟨X 7 − 1⟩? Proposición 18 Sea C = ⟨g(X)⟩ ⊂ Fq [X]/⟨X n − 1⟩ un código cíclico. . con deg(g) = n − k. para f (X) ∈ Fq [X] y sea f0 (X) el resto de f (X) módulo h(X). Demostración. C = ⟨g(X)⟩. y están generados por un divisor de X n − 1. Entonces B = {g(X). en esta identificación. como subconjunto de Fq [X]/⟨X n − 1⟩. los códigos cíclicos verifican una propiedad curiosa. Entonces es cíclico si y sólo si es un ideal. usando las congruencias habituales (que no son sino polinomios de grado menor o igual que n − 1). Pero si 3 ¿Por qué? f (X) = a0 + a1 X + ⋅ ⋅ ⋅ + a n−1 X n−1 . X k−1 g(X)} es una base de C como espacio vectorial. pode- mos identificar cada código lineal C con un polinomio4 g(X) tal 4 Para estar seguros de que se ha en- tendido esta observación: ¿Cuál es el que g(X) ∣ (X − 1) y. con lo cual f (X)g(X) = f0 (X)g(X) (mod X n − 1). códigos correctores de errores 53 Fq [X]/⟨X n − 1⟩. y por tanto X f (X) ∈ C es. Demostración.

si hacemos AM. Únicamente (!) hay que darse cuenta de que. . . . ⎜ ⎟ ⎜ ⎟ ⎜⋮ ⋮ ⋮ ⋮⎟ ⎜ ⎟ ⎝h k . El algoritmo del líder. consideremos el polinomio Xn − 1 h(X) = = h0 + h1 X + ⋅ ⋅ ⋅ + h k X k . . ⎜ ⎟ ⎜ ⎟ ⎜ g0 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜⋮ ⋮ ⋮ ⋱ ⋮ ⎟ ⎜ ⎟ ⎝0 0 0 . el elemento (i. k − 1. Fq ). . . . en lugar de tomar f g tomaremos f0 g. dim(C) = k y. h1 h0 0 ⎟ ⎜ ⎟ ⎜ ⎟ A=⎜0 . h0 0 0 ⎟ ∈ M((n − k) × n. i=0 i=0 pero como deg(g) = n − k. . . h2 h1 h0 ⎞ ⎜ ⎟ ⎜0 . . si g(X) = g0 + g1 X + ⋅ ⋅ ⋅ + g n−k X n−k .. j) del producto es precisamente el coeficiente de grado n − i − j + 1 del polinomio gh = X n − 1. . El hecho de que B es linealmente independiente viene moti- vado porque una combinación lineal nula debe verificar: k−1 k−1 0 = ∑ (a i X i g(X)) = g(X) ∑ (a i X i ) = g(X) f (X). por lo que sólo puede ser 0 en Fq [X]/⟨X n − 1⟩ cuando a i = 0 para i = 0. g(X) Corolario 8 En las condiciones anteriores. . una matriz de control de C es ⎛0 . 0 0 0⎠ Demostración. precisamente: ⎛ g0 0 0 ⋯ 0 ⎞ ⎜ ⎟ ⎜ g1 g0 0 ⋯ 0 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ g2 g1 g0 ⋯ 0 ⎟ ⎜ ⎟ ⎜ ⎟ M=⎜ ⋮ ⋮ ⋮ ⋱ ⋮ ⎟ ∈ M(n × k. . . g n−k ⎠ El cálculo de la matriz de control también puede realizarse en términos polinomiales. . Fq ). h0 . Corolario 7 En las condiciones anteriores. . deg( f ) ≤ k − 1.. aplicado a los códigos cíclicos. . Dado C = ⟨g(X)⟩ ⊂ Fq [X]/⟨X n − 1⟩.54 teoría de códigos y criptografía Así pues.. . resulta particularmente simple y ésta es una de las razones por las cuales . es elemental ver que f0 g se escribe como combinación lineal de los polinomios de B. una matriz generatriz de C es. se tiene que deg(g f ) ≤ n − 1 < n.. Dado que deg( f0 ) < k... .

Hocqueng- hem). . códigos correctores de errores 55 resulta interesante esta subfamilia de códigos. por ejemplo. Hasta ahora hemos hablado de códigos. necesitamos 22 1 + 22 + ( ) = 133 2 entradas. Son códigos cíclicos y se basan en la estructura de las raíces n-ésimas de la unidad sobre Fq . bueno . En cam- bio. los que tenemos seguridad que podemos corregir. el denominado G23 . . 212 . si únicamente nos fijamos en los que tienen la última coorde- nada no nula. Una de las familias más utilizadas de códigos correctores en la actualidad son los códigos bch (Bose. Aunque sí ha debido que- dar claro a estas alturas que un código no es. pasando superficial- mente por cuestiones de optimización. . Cotas asociadas a un código. Es el tipo de código que utilizan. . los lectores de cd. (por ejemplo. al menos para 23 23 1 + 23 + ( ) + ( ) = 2025 2 3 casos. 7). n − 1 hacer w = s << i si s = t entonces x = (w − T[t]) >> i devolver x devolver No es posible decodificar z La complejidad de la decodificación cíclica es O((n−k)q n−k−1 ). de la familia de códigos de Golay) tendremos que calcular síndromes y líderes. Ejemplo 21 Para hacernos una idea del avance que esto supo- ne. si tenemos un código lineal binario de tipo (23. Chaudhuri. en principio. Algoritmo 3: Decodificación cíclica por síndromes y errores (sin optimizar) Entrada: Una tabla truncada T{síndrome → error} de un código lineal C y una palabra z Salida: La corrección por síndromes y errores de z s = Az para cada síndrome t de T hacer para cada i = 0. Veamos cómo funciona.

Suponga- mos a partir de ahora. pues. Al hablar de decodificación.56 teoría de códigos y criptografía o malo. Ahora vamos a intentar dar formalismo a estas consideraciones. Si hubiéra- mos de ser precisos. la notación sería Vq (n. en cambio. r) (dado que q y n son importantes. . ∣B(x. 2 Observación 10 Esta cota. q k . pero la necesidad de que el mensaje lle- gue íntegro es enorme. aunque para nosotros estén fijados de antemano). 2 esto es. salvo a la luz de las circunstancias en las que se utilice. Proposición 19 En las condiciones anteriores r n V (r) = ∑ ( )(q − 1) j . Forman dos familias importantes. la transmisión es muy costosa y los posibles errores no corregidos carecen de importancia (si son pocos). no exis- ten muchos códigos perfectos. El código de repetición. por lo que designaremos este número entero por V (r). m. La cinta de n agujeros. para todo x ∈ An . es ideal para situaciones donde la probabilidad de error es muy escasa. que involucra los parámetros principales de C. r)∣ = ∣B(0. luego una primera idea a consi- derar es cuántas palabras de An entran en la bola centrada en una palabra de C. ilustra la definción de código perfecto. Cota de Singleton En las condiciones anteriores. d −1 mV (⌊ ⌋) ≤ q n . Para códigos lineales podemos refinar mucho más. los códigos de Hamming (ver ejercicios) y los códigos de Golay. es óptimo para transmisiones donde el coste es escaso. Fijamos entonces un alfabeto A tal que ∣A∣ = q. y un código C sobre A de tipo (n. d). Claramente. que es aquél que verifica d −1 mV ([ ]) = q n . r)∣. d). de tipo (n. por ejemplo. j=0 j Cota de Hamming En las condiciones anteriores. es claro que hablamos de bolas cerradas. y están bien estudiados. que C es lineal. k +d ≤ n+1. Lamentablemente. el espacio An está recubierto (de forma disjunta) por las bolas centradas en las palabras de C.

k k−1 k−1 x∈C Por otra parte. qk − 1 Demostración. se tiene d ≤ n − k + 1. Entonces C + H = Fnq . Tenemos dos casos posibles. Como la distancia mínima es el menor número de columnas de A que ne- cesitamos para formar un conjunto linealmente dependiente. . que todas las palabras de C tengan coordenada i-ésima nula. códigos correctores de errores 57 Demostración. todas las palabras (salvo 0) tienen al menos d coor- denadas no nulas. luego dim(C ∩ H) = k − 1. luego ∑ w(x) ≥ d (q − 1) . q k . Definición 37 Los códigos que verifican k + d = n + 1 se llaman códigos de máxima distancia de separación. y hay exactamente q k tales palabras. entonces existe un código lineal de tipo (n. Gilbert. algo que ya habíamos intuido. d) con d > r. y por tanto las palabras de C con coordenada i-ésima nula son q k−1 . Entonces C ⊂ H. El primero. Aplicamos la fórmula de la dimensión de los espacios vectoriales a C y a H ∶ x i = 0. dim(C) + dim(H) = dim(C + H) + dim(C ∩ H). La última cota que daremos será distinta: hasta ahora hemos demostrado lo que no puede hacer un código. Sea A una matriz de control de C. Por tanto ∑ w(x) ≤ n (q − q ) = nq (q − 1). Shannon y Varshamov demostraron lo que puede hacer un código. o códigos mds. Observación 11 La cota de Singleton pone de manifiesto de forma precisa que la distancia mínima y el tamaño del código no pueden crecer a la vez. Cota de Gilbert-Shannon-Varshamov Si se verifica q n−k+1 > V (r). k x∈C y esto finaliza la demostración. El otro caso es que no sea así. y rg(A) = n − k. Cota de Plotkin En las condiciones anteriores nq k−1 (q − 1) d≤ .

q j−1 V (r) < q n . Co- menzamos fijando un vector cualquier x1 tal que w(x1 ) > r. . y hacemos C1 = ⟨x1 ⟩. Las cotas que hemos estudiado anteriormente tienen todas una versión asintótica (no siempre inmediata a partir de las versiones absolutas. . La construcción del código es inductiva. .58 teoría de códigos y criptografía Demostración. . Definición 38 Sean d. ya que los códigos que nos promete deben crearse de manera artesanal. α q (δ) nos mide cómo de grande puede ser. la tasa de información de un código de distancia relativa δ. pero no daremos las demostraciones). Cota asintótica de Hamming En las condiciones anterio- res. q j−1 . q k . lo que buscamos no son códigos individuales. nδ) α q (δ) = lim sup . logq (V ([δ/2] − 1)) α q (δ) ≤ 1 − lim n→∞ n Cota asintótica de Singleton En las condiciones anteriores. Aquí pierde interés ya hablar de n y de d. Entonces. nos interesa que podamos variar la longitud arbitrariamente. d) = max{ k ∈ N ∣ ∃C lineal sobre Fq de tipo (n. sino familias de códigos. y hemos de sustituir estos parámetros por otros menos dependientes del contexto. n ∈ Z+ . por hipótesis. Así mismo. ideal- mente. . d)}. Y. En el paso general. . . n→∞ n Esto es. Definimos a q (n. Eso hace que el resul- tado anterior carezca de interés práctico per se. x j ⟩ y continua- mos. d). a nivel de aplicaciones interesantes. Hacemos entonces C j = ⟨x1 . como la tasa de información y la distancia relativa. con lo cual estamos en el terreno de las denominadas familias asintóti- cas de códigos. de hecho. . recordemos que δ = d/n y definamos a q (n. . α q (δ) ≤ 1 − δ. x j−1 ⟩ de tipo (n. con d > r y j − 1 < k. luego existe algún vector x j cuya distancia con las palabras de C j−1 es mayor que r. supongamos construido C j−1 = ⟨x1 .

La zona Plotkin En las condiciones anteriores. . Plotkin y Hamming. hasta que Tsfasman. pero por encima de la cota GSV ⎧ ⎪ ⎪ ≤ 1 − δ/θ si δ ≤ θ α q (δ) ⎨ ⎪ ⎩ =0 ⎪ si δ > θ Cota asintótica de Gilbert-Shannon-Varshamov En las condiciones anteriores. el espacio que nos queda entre la curva de Plotkin y la de Gilbert-Shannon-Varshamov. códigos correctores de errores 59 1 1 1 0 1 2 0 1 2 0 1 2 q=3 q=5 q=7 1 1 1 0 1 2 0 1 2 0 1 2 q = 23 q = 32 q = 11 1 1 1 0 1 2 0 1 2 0 1 2 q = 13 q = 24 q = 17 1 1 1 0 1 2 0 1 2 0 1 2 q = 19 q = 23 q=5 2 Tabla 2. si es la que queda por debajo de las cotas de θ = (q − 1)/q. Este espacio ha estado du- rante muchos años desprovisto de familias. n→∞ n La zona interesante. si δ ≤ θ. la de Hamming (en azul) y la de Gilbert- Shannon-Varshamov (en verde) para Cotavalores diversos asintótica deinteresante de q. logq (V (δ)) α q (δ) ≥ 1 − lim . es el objetivo de los constructores de buenos códigos.2: En estas gráficas se representan las cotas de Plotkin (en rojo).

10 i=1 Estudiar el tamaño del código y si es lineal o no. q k . entonces 10 C = {(a1 . Demuestra que el código nif detecta un error en la transmisión de n. l). .G. Demostrar que el código isbn detecta un error. utiliza el alfabeto A = {0.4. bien exactamente la mitad de las palabras de C tienen peso par.000 caracteres (por ejemplo. El código isbn (International Standard Book Num- ber). Ejercicio 2. así como dos errores. a10 ) ∣ a i ∈ A.2. Vladut. con matriz generatriz M y matriz de control A. Supongamos que enviamos una cadena de. bien todas. . . donde la X debe entenderse como 10. Tsfasman. Ejercicio 2.3. ponga- mos 100. un programa de ordenador o un conjunto de datos) y que tenemos una probabilidad de 10−5 de que se cometa un error en la transmisión de cada carácter. ¿Puede detectar dos errores cualesquiera? ¿Puede corregir un error? Ejercicio 2. Ejercicios Ejercicio 2. la teoría de números y la geometría algebraica. aunque no lo corrige y que no detecta dos errores. en 1982 crearon la primera familia de códigos que On Goppa codes which are better than the Varshamov-Gilbert bound. . 1. . .60 teoría de códigos y criptografía 5 M. El código isbn es. 1. tras corregir errores). Sea C ⊂ F2n un código lineal de dimensión k. Zink: Vladut y Zink5. Su trabajo combinaba la teoría clásica de Nachrichten 109 (1982) 21–28. este trabajo abrió una conexión inesperada y muy fér- til entre la teoría de códigos.A. donde n ∈ Z y l ∈ {0. Mathematische mejoraba la cota GSV. Ejercicio 2. si corresponden a la permutación de dos cifras decimales consecutivas. El código nif funciona de la siguiente manera: las palabras son pares (n. utilizado para catalogar libros. siendo n ≡ l (mod 23). códigos de Goppa con los espacios vectoriales de funciones aso- ciados a curvas algebraicas proyectivas planas. Th. . halle la probabilidad de que la transmisión resulte correcta (eventualmente. S. . 9. Halle la probabilidad de que la transmisión resulte correcta. La matriz At puede entonces . ∑(11−i)a i = 0 mod 11} ⊂ A . . .1.5. Sea C un código lineal tipo (n. aunque sí lo hace cuando corresponden a la permutación de dos cifras consecutivas. Pro- bar que. . X}. . Lejos de terminar el problema. 22}. d). Si deci- dimos utilizar el código de Hamming.

d(C2 )}. si admitimos permutaciones entre las coordenadas. x n−1 ) ∣ ∃x n ∈ F2 con (x1 . i=1 Estudie si C+ es lineal.9. . Un código lineal tipo (n. . Ejercicio 2. Dados dos códigos lineales C2 ⊂ C1 ⊂ F2n . . Ejercicio 2. . y ∈ C2 }. Pruebe que todo código lineal se puede escribir de forma sistemática. . Pruebe que C1 ⊕ C2 es un código lineal que verifica d(C1 ⊕ C2 ) = min{d(C1 ). . Ejercicio 2. Ejercicio 2. así como sus parámetros (en función de los de C). Estudie si C− es lineal. . definimos el código truncado de C como C− = {(x1 . se define su suma directa como C1 ⊕ C2 = {(x∣y) ∣ x ∈ C1 . así como sus parámetros. x n ) ∈ C y ∑ x i = 0} . . en particular: 1. d ′ ) (para cierta d ′ ∈ N). . se define su producto como C1 ∣ C2 = {(x∣x + y) ∣ x ∈ C1 . x n+1 ) ∣ (x1 . q n−k .10. d) se dice que está en forma sistemática cuando viene dado por una matriz generatriz de la forma ⎛ Ik ⎞ M= . ⎝ Mk ⎠ donde I k es la matriz unidad k×k y M k ∈ M((n−k)×k. x n ) ∈ C}. . . códigos correctores de errores 61 interpretarse como la matriz generatriz de un código lineal C⊥ .7. definimos el código con extensión de paridad de C como n+1 C+ = {(x1 . . q k . . Fq ). Hallar la matriz de control de un código en forma sistemática. denominado código dual de C. .6. Dado un código lineal C ⊂ F2n . Pruebe que C⊥ coincide con el subespacio ortogonal de C respecto del producto escalar usual y. C⊥ es un código de tipo (n. (C⊥ )⊥ = C. 2. . Dados dos códigos lineales C1 ⊂ F2n y C2 ⊂ F2m . y ∈ C2 }. Ejercicio 2. .8. . Dado un código lineal C ⊂ F2n .

Demuestre que el cálculo del síndrome es suficiente para decodificar en H(r) (supuesto que se ha cometido a lo más un error). notado H(r) es el código lineal definido por una matriz de control en la que aparecen (en vertical) todos los vectores no nulos de F2r . donde r es la redundancia de C.12. Pruebe que toda palabra está a distancia menor o igual que uno de un elemento de H(r). a lo sumo. Construya explícitamente H(2) y H(3).62 teoría de códigos y criptografía Pruebe que C1 ∣ C2 es un código lineal que verifica d(C1 ∣ C2 ) ≥ min{2d(C1 ). Pruebe que existen exactamente qr síndromes. . defini- do por la matriz generatriz ⎛1 0⎞ ⎜ ⎟ ⎜0 1⎟ ⎜ ⎟ ⎜ ⎟ ⎜1 0⎟ ⎜ ⎟ ⎜ ⎟ ⎜1 1⎟ M=⎜ ⎜ ⎟ ⎟ ⎜1 1⎟ ⎜ ⎟ ⎜ ⎟ ⎜1 1⎟ ⎜ ⎟ ⎜ ⎟ ⎜0 1⎟ ⎜ ⎟ ⎝0 1⎠ Halle los parámetros del código y una matriz de control. ¿cuál es la palabra enviada y cuál el error cometido? Ejercicio 2. dimensión 2r − r − 1 y distancia 3. Dicho de otro modo. Ejercicio 2. corrige exactamente un error. Consideramos el código lineal C sobre F2 . Si recibimos la palabra 11011011 y sabemos que se han cometido. Pruebe que H(r) tiene longitud 2r − 1. Calcule todos los síndromes con líder de peso menor o igual que 2. 2. Por tanto. las bolas cerradas centradas en los elementos de H(r) y radio 1 recu- bren todo el espacio de forma disjunta. El código de Hamming de redundancia r. Esto es. Ejercicio 2. Imaginemos que tenemos un código lineal C sobre Fq . 1. 3. H(r) es un código perfecto.11. Ejercicio 2. dos errores.14.13. d(C2 )}.

2. 1. m.15. Consideremos el conjunto 6 ¿Por qué suponer esto no hace que perdamos generalidad? X = {x ∈ F90 2 tqx1 = x2 = 1. 278 . x ′ ∈ X. V (⌊(d − 1)/2⌋) Sin embargo. pruebe que d(z. El ente- ro d se puede caracterizar como el menor entero positivo tal d −1 que β q = 1. no son raíces m-ésimas de la unidad. eso no quiere decir que si 2n /V (⌊(d − 1)/2⌋) es un entero m. pruebe: 1. z ′ ) = 6. Dados ahora dos x. m. V2 (90. 4. Sabemos que. ⋅) es d. d(x. Ejercicio 2. 251 . códigos correctores de errores 63 Ejercicio 2. construya los z. 2) 2. exista un código perfecto tipo (n. 0) = 3}. de entre estos. Sea β una raíz n-ésima primitiva de la unidad en Fq . Halle cuántos síndro- mes posee C y.16. 2). Para x y z como antes. Deduzca que cada z ∈ C está asociada a exactamente tres elementos de X y llegue a una contradicción que demuestra que no existe un código perfecto (90. 0) = 5. z) = 2. en un código perfecto de tipo (n. mcd(n. con m < n). que z i = 1 si x i = 1. ¿Por qué no tiene sentido considerar pesos mayores? Ejercicio 2. Sean n ∈ Z. Pruebe que 290 = 278 . 5) (un tal código existe). Entonces el polinomio X n −1 ∈ Fq [X] factoriza en ϕ(n)/d polinomios mónicos irreducibles. . 278 . Supongamos que el orden de q en el grupo multiplicativo (Z/Zn∗ . 5) sobre F2 y supongamos6 que 0 ∈ C. d). Sea C un código binario perfecto tipo (90. q) = 1. para cada x ∈ X existe una única z ∈ C tal que d(x. 2n m= . Halle el número de elementos de X y pruebe que. d). Para demostrar esto. Hay exactamente ϕ(n) raíces n-ésimas primitivas de la uni- dad en Fq (o sea. z ′ ∈ C correspon- dientes y demuestre que d(z.17. tipo (63. 3. cuántos tendrán un líder de peso 1 y cuántos un líder de peso 2. Imaginemos que tenemos un código lineal bina- rio C.

64 teoría de códigos y criptografía 3. efectivamente. Ejercicio 2. Ejercicio 2. Deduzca que [Fq [β] ∶ Fq ] = d y el resultado. 2). Decimos que un vector x ∈ Fnq es una ráfaga si todas sus coordenadas no nulas son consecutivas. 34 . Pruebe que.18. detecta cualquier error ráfaga de peso menor o igual a n − k. Aplique el procedimiento Gilbert-Shannon- Varshamov para crear un código sobre F3 de tipo (6. por este motivo. Las ráfagas son particularmente interesantes cuando representan errores en códi- gos binarios. .19. Pruebe que el procedimiento inductivo de Gilbert-Shannon-Varshamov crea. Pruebe que un código cíclico C ⊂ F2n de dimensión k no contiene ninguna ráfaga de peso l ≤ n − k.20. un código con las condiciones enunciadas. Ejercicio 2.

Alice y Bob. de clave privada. incluida Eve. Alice. Para facilitar la comprensión del criptosistema. que escucha todas las conversaciones. o bien una congruencia módulo un cierto entero N. Para lograr que su correspondencia sea confidencial. y conocida por todos los actores. también conocido por todos. Bob. . y un tercer individuo E Eve. Eventualmente necesitaremos mensajes más complicados y consideraremos vectores de enteros o congruen- cias. una aplica- ción biyectiva bajo ciertas condiciones. aplicaciones. y con mayúsculas aquellos objetos a los que Eve tiene acceso¹. En estas condiciones. que tiene la capacidad de interceptar y leer los men- sajes que se intercambian por este canal. los objetos involucrados son: 0. hallando así el mensaje de Alice. en un criptosistema 1 No necesariamente de forma legal. y B.…) que sólo conocen Alice y Bob. Bob recibe la ima- gen y calcula el original. clásicamente notados A. fundamentalmente. Alice y Bob crean un criptosistema que es. Hay dos usuarios legítimos del sistema. Hay un usuario ilegítimo. que quieren establecer un canal seguro de comuni- cación. Eve. o en términos más genéricos. Alice halla la imagen por esta aplicación de su mensaje para Bob. Supondremos que los mensajes que Alice y Bob quieren intercambiar son números enteros en una base previamente acor- dada (típicamente 2). el adversario. Posteriormente.CRIPTOGRAFÍA DE C L AV E P R I VA D A 3 Generalidades El problema de la criptografía de clave secreta es básicamen- te el siguiente: tenemos dos individuos. notaremos con letras minúsculas los objetos (enteros. y esto es lo que se envía por el canal de comunicación. Veamos la formulación precisa.

Pero en la práctica esto no es así. etc. sajes posibles. Muchos sistemas criptográficos han . m) = M. que son los términos en inglés que corresponden a clave. m)) = m. M) = m. 4. y puede obtener copias de todo la información transmitida. y puede calcular en tiempo polinomial G(k. pero sin conocer k no pue- de calcular m. ⋅). El mensaje puede ser una letra. G(k. Alice quiere enviar un mensaje m a Bob. ⋅). un bloque de letras. k. y C el conjunto de mensajes cifrados posibles. M) = m. G∶ K × C → P. Eva tiene acceso al canal de información. normalmente tiene información acerca de las funciones F y G. 2. P de plaintext de funciones y C de cyphertext. Bob dispone de una aplicación (conocida) de descifrado G(⋅. 3. esto quiere decir que sin conocer k.1: El problema de intercambio F(k. Aunque parezcan arbitrarias. Desde 2014.66 teoría de códigos y criptografía Figura 3. ⋅) y M. y la función G donde K es el conjunto de claves posibles. la rae acepta también encriptado y desencriptado. un vector. Eve. ⋅). Suponemos que se han intercambiado esta clave de forma segura. que para todo k ∈ K y todo m ∈ P. m) = M. Definición 39 Un sistema criptográfico de clave privada es un par nen significado: K de key. una congruen- cia. P es el conjunto de men- la de descifrado. G(⋅. de forma legal o A E b  ilegal. Alice dispone de una aplicación (conocida) de cifrado F(⋅. tales supongo que al mismo nivel que toballa. conoce F(⋅. ) =  G(k. Alice y Bob comparten una clave secreta. Lo único que no suele tener es k. 5. y que Eva no la conoce. y puede calcular en tiempo polinomial F(k. en claro y texto cifrado. a priori resulta mu- cho más seguro que Eve no sepa cómo se cifra y se descifra. Además. las letras tie. F(k. un entero. Es decir. Esto es. Se podría razonar que supone una pérdida innecesaria de seguridad el que Eve conozca F y G. En términos prácticos. un elemento de un cuerpo finito. si ponemos F(k. texto F∶ K × P → C. La función F se llama función de cifrado. entonces almóndiga y asín. G(k. Alice Bob Eve 1. el algoritmo para calcular m es al menos (sub)exponencial. ) =  de información.

debe serlo en la del siglo xix). garantiza mucha más fiabilidad. aunque no es usual). donde todo el mundo es retado a derrotar al sistema. práctica. éstas son sólo parte de las exigencias que debe cumplir un sistema. (quizá con el espacio en blanco contado como carácter. toda el sistema se ha visto comprometido. Una postura de cifrado abierto. Vamos a detenernos brevemente en un par de formas de hacer esta conversión. donde N y r varían en cada criptosistema. y asignar a cada letra su número. 5. en Z/Z27. sucede). identificamos cada letra con un entero módulo 27: G H I J K L M N O P Q R S T U V W X Y Z 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 O en español. criptografía de clave privada 67 basado su seguridad en la opacidad del cifrado y. un mensaje no es más que un elemento de Z/Z N r . A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Ahora. Otra forma más sofisticada es usar la tabla de caracteres ascii para enumerar mensajes: cada carácter de un mensaje se sus- tituye por su número binario. La clave debe ser fácilmente memorizable de manera que no haya que recurrir a notas escritas. 6. El sistema debe ser fácil de utilizar. empezando por 0. 3. El sistema debe ser operable por una única persona. Si el sistema no es teóricamente irrompible. tarde o temprano. La forma más simple es considerar el alfabeto de las ma- yúsculas. algunos de estos principios no son de aplicación ahora (los principios de Kerckhoffs datan de finales 1. para varios de los sistemas criptográficos que estudiaremos a continuación será necesario convertir un mensaje en uno o más números. los números binarios se componen . cuando éste ha sido desvelado (y. Formalmente. 4. 2. Los mensajes cifrados deberán dar resultados alfanuméricos. Esto es. La efectividad del sistema no debe depender de que su dise- ño permanezca en secreto. se asumen los denomina- dos Principios de Kerckhoffs²: 2 Evidentemente. Tradicionalmente.

y en otros casos habrá que alargarlos hasta un tamaño suficiente. algunos mensajes habrá que partirlos en bloques del tamaño adecuado antes de aplicarle un criptosistema.. The Return of the Jedi You’re my only hope. Obi-Wan Kenobi. Las unidades de mensa- je son las letras del alfabeto m ∈ Z/Z N. como es tradicional en criptografía. M) = M − k.68 teoría de códigos y criptografía uno a continuación de otro. Además. lo presenta- remos agrupados de cinco en cinco letras. usaremos como ejemplo el siguiente texto (en inglés): information This is our most desperate hour. Consiste en la transformación del mensaje mendiante un desplazamiento constante de tres caracteres. THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI WANKE NOBIY OUREM YONLY HOPE Vamos a recapitular en las secciones siguientes los criptosis- temas históricos más notables. G(k. Help me. m) = k + m. sin contar los espacios ni los signos de puntuación. para simplificar los ejemplos. El criptosiste- ma de César es el criptosistema definido por F(k.c. Identificamos el alfabeto con Z/Z N. y el entero decimal resultante es el mensaje. Galia est omnis divisa in partes tres: el criptosistema de César En el siglo i a. ↦ (1010101 1101110 0100000 1101101 1100101 1101110 1110011 1100001 1101010 1100101 0101110)2 ↦ 25342398497542236887406. . que dejó constancia escrita de cómo utilizó este código durante la guerra de las Galias. Mon Mothma. Y para rematar. aparece una técnica de cifrado conocida con el nombre genérico de cifrado de César en honor a Julio César. Naturalmente. consideraremos que el alfa- beto consiste únicamente en las letras mayúsculas. para varios de los criptosistemas que expondremos a conti- Many Bothans died to bring us this nuación. El criptosistema de César queda definido por Definición 40 Sean K = Z/ZN y P = Z/ZN = C. Un ejemplo sencillo: Un␣mensaje.

Por ejemplo. You underestimate the power of the Dark Side. o incluso aunque sea gran- de. si nuestro mensaje es m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI WANKE NOBIY OUREM YONLY HOPE tenemos F(3. por cualquier medio posible. . criptografía de clave privada 69 Aquí. m) = m + k: m A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z M D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z A B C El descifrado que realiza Bob es. usando que F(k. Podemos calcular la imagen de cada letra de forma exhaustiva. Ejemplo 22 Históricamente. son letras. G(M) = M − 3 mod 27. then you will meet your destiny Descifre. se llama de fuerza bruta. el cifrado de César es el defi- nido por k = 3 sobre el alfabeto latino. m) = WKLVL VRXUP RVWGH VSHUD WHKRX UKHOS PHREL ZDQNH QRELB RXUHP BRQOB KRSH F(18. obviamente. pero aquí usaremos el inglés (N = 26). el siguiente mensaje cifra- do con un criptosistema César: QMKCR GKCQG RGQRF CNCMN JCLMM LCAYL GKYEG LCYLW RFGLE MDUFM BMRFC RFGLE QLMML CAYLG KYEGL CYJYL RSPGL E Es importante hacer notar lo siguiente: el espacio de claves de este criptosistema tiene tamaño ∣K∣ = N . Este ataque. por lo que es si el alfabeto es pequeño. es factible generar por ordenador las N claves posibles e ins- peccionar cuál de ellas produce un resultado con sentido. If you will not fight. y el cifrado de un mensaje de longitud mayor que 1 es simplemente la yuxtaposi- ción de los cifrados. m) = LZAKA KGMJE GKLVW KHWJS LWZGM JZWDH EWGTA OSFCW FGTAQ GMJWE QGFDQ ZGHW Ejercicio 7 Cifre el siguiente mensaje con un cifrado de Cé- sar de clave k = 13. que no es el único posible. es decir. las unidades de mensaje tienen longitud 1.

m) = am + b. Para nuestro mensaje m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI WANKE NOBIY OUREM YONLY HOPE tenemos F((11. then you will meet your destiny Descifre. pero no mucho. el cifrado afín es fundamental- mente débil debido al tamaño del espacio de claves. de Álgebra Lineal y Geometría. If you will not fight. sabemos que F(k. 3 Para muchos de nuestros estudiantes usando una función afín³. Ejemplo 23 Fijemos N = 26 y k = (11. Definición 41 Un criptosistema afín viene definido por K = ∗ (Z/Z N) × (Z/Z N). se pueden generar todas las claves posibles y descifrar el mensaje por inspección.70 teoría de códigos y criptografía Criptosistema afín El sistema de César se puede complicar. que no suele ser muy grande. el espacio de claves tiene tamaño ∣(Z/Z N)∗ × (Z/Z)N∣ = ϕ(N) ⋅ N . M) = a −1 (M − b). G(k. por cualquier medio posible. 4). m) = FDOUO UCQJG CUFLW UNWJE FWDCQ JDWVN GWCPO MERKW RCPOI CQJWG ICRVI DCNW Ejercicio 8 Cifre el siguiente mensaje con un cifrado afín de clave k = (25. donde k es una clave de la forma k = (a. 8). P = Z/Z N = C. Si el alfabeto tiene N signos. Si queremos cifrar C = 2. 4). . C) = F(k. y el par de funciones F(k. 2) = 11 ⋅ 2 + 4 = 22 + 4 = 0 = A. el siguiente mensaje cifra- do con un criptosistema afín: HFRNO PRNHP OPHOI NMNFM KNYFF YNZLY PRLBP YNLYX OIPYB FUJIF GFOIN OIPYB HYFFY NZLYP RLBPY NLKLY OVAPY B Igual que el cifrado de César. Por tanto. las funciones afines ya están cifradas. b) ∈ Z/Z N ∗ × Z/Z N. You underestimate the power of the Dark Side.

son ejemplos de cifrados por sustitu- ción: aquéllos en los que a cada letra (a veces incluyendo en letra los espacios o símbolos de puntuación) se le asocia un símbolo concreto (otra letra o tal vez no).5*†2:*‡(.1‡(.48)4‡.4826)4‡. B.4(‡?34. (88. 2. uno de los relatos de El retorno de Sherlock Holmes5.88*9 6*?. Para cifrar un mensaje. Algunos ejemplos notables de esta técnica fueron: El disco cifrador de Alberti (Leon Battista Alberti fue un estudioso genovés del siglo XV) consistía. 53‡‡†305))6*. y gar Allan Poe.4956*2(5*—4 )8¶8*. bien cuando aparece un símbolo acordado. 4069285).gutenberg.gutenberg.‡?. criptografía de clave privada 71 Cifrados de sustitución Los dos criptosistemas que hemos visto. esto es.)4‡). disco exterior E) y cambiaba cada letra de m (en el disco exterior) por su correspondiente (en el disco interior). en el dibujo: disco interior p.2: Disco cifrador descrito en latín.46(. y peligroso criminal con el siguiente mensaje: sherlock-holmes.it especiales. 4 Disponible en español en http:// www.org/ebooks/2147. En el exterior aparecían los 20 caracteres del Figura 3. en dos discos concéntricos.:188. uno de los cuentos más famosos de Ed. en español. Alberti. Además este sistema permitía cambiar de posición en medio del texto. y se incluyen los números 1.8:8‡1.48†8 ¶60))85. Descifrar el mensaje para Bob es igualmente simple (en este caso hay que ir del disco interno al ex- terno).1(‡9.161.es en la versión original inglesa en http://www.org/ebooks/46196. esto puede representar una debilidad potencial del protocolo.gutenberg. El escarabajo de oro4.485). Ñ.)6†8)4‡‡.:‡*8†83(88)5*†.48081 . el criptosistema de César y el criptosistema afín. W e Y. J. pero siempre el mismo para to- do el mensaje.4)485†528806*81(‡9. los mismos del alfabeto castellano excepto las letras De cifris de L. En el disco interior aparecen todos los caracteres del latín además del signo & y las letras H.48. bien tras cifrar una longitud fija de texto. 3 y 4 para códigos Mateureka. U. K. Imagen de H.8)*‡(. comEherEaToncE . materialmente. Alice escoge una posición inicial del disco (por ejemplo. Sherlock descifra varios mensajes y atrapa a un 5 Disponible en http://www. donde el protagonista se enfrenta a la tarea de en la versión original inglesa en http: descifrar este mensaje: //www. Conviene fijarse en que si hay que enviar el procedimiento de cifrado.org/ebooks/221.48†85. La aventura de los bailarines. K e Y.806*.

digamos N = 256. por lo que si N es grande. se pueden usar alfabetos distintos para los textos en claro y cifrados. sin embargo. podríamos definir un criptosistema de sustitu- ción general de la siguiente forma. Definición 42 Sea A un alfabeto de N signos. Formalmente. que identificamos con Z/Z N. aunque formalmente esto no es ninguna dificultad: basta asignar un entero de A = Z/Z N a cada signo de C y de P para tenerlo en la forma descrita en la definición. El tamaño del espacio de claves es ∣SA ∣ = ∣S N ∣ = N!. Esto impide el ataque por fuerza bruta con un ordenador. Entre otras cosas.72 teoría de códigos y criptografía En este relato en concreto aparece un enfoque muy cons- tructivo del ataque por análisis de frecuencias que veremos más adelante. Holmes (que juega aquí el papel del adversario) hace hincapié en un factor muy importante a tener en cuenta: la seguridad del sistema disminuye conforme aumenta la cantidad de texto cifrado con el mismo procedimiento. M) = σ −1 (M). el tamaño del espacio de claves no es por . G(σ . Las funciones de cifrado y descifrado son F(σ . En la práctica. Un criptosistema de sustitución está definido por P = C = A. tendríamos 256! = 8578177753428426541190822716812326251577 8152027948561985965565037726945255314758 9377440291360451408450375885342336584306 1571968346936964753222892884974260256796 3733256336878644267520762679456018796886 7971521143307702077526646451464709187326 1008328763257028189807736717814541702505 2301860849531906813825748107025281755945 9476987034665712738139286205234756808218 8607012036110831520935019474371091017269 6826286160626366243502284094419140842461 5936000000000000000000000000000000000000 000000000000000000000000000 ≈ 21684 posibles claves. y K = SA una permutación en A. Sin embargo. m) = σ(m). como hemos visto en los ejem- plos.

como el par de funciones F(k. El cifrado toma su nombre en ho. sin haberla puesto nunca por escrito. Cada vez que pienso en ello m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI me avergüenzo de lo que hice. El mensaje cifrado completo es clave nos da a entender que. Pero la diferencia (y lo que lo hace mucho era la única poseedora de la palabra clave y la más robusto) es que dicho desplazamiento viene indicado por el guardaba en su memoria. tenemos nuestro mensaje que Madame d’Urfé se rindiera a mí. G(k. como veremos). que es imposible. . kr ). el mismo método que el cifrado de César. criptografía de clave privada 73 sí solo una medida de la seguridad. Cinco o seis semanas después. Entonces le dije la palabra clave. . identificando romper el código de Madame d’Urfé? El hecho de que existiese una palabra letras y números. todavía a día de hoy. dependiendo de qué letra de la clave le toque para cifrarse en cada momento. Entre otras fue poco más adelante. una sustitu. Como siempre. Le dije que así era. . pues ella un número módulo 27. es a menudo difusa) y como tal fue un gran experto en cifrados y códigos. . el código de Vigenère y el código de César Veamos la definición formal de este criptosistema. a un criptoanalista sagaz no se le escapa el hecho de que. ella (Madame d’Urfé) me preguntó si había descifrado el nère y durante varios siglos (desde el XVII hasta finales del XIX) manuscrito donde se encontraba el proceso de transmutación. diplomático y espía (la distinción entre ambos trabajos. Supongamos que elegimos como clave de cifrado ORGANA. — ¿Quiere que le diga cuál es la clave que ha nor al criptólogo francés Blaise de Vigenère (1523-1596). Esta falsa revelación hizo formal. valor numérico asociado a uno de los caracteres de una clave que Le podía haber dicho la verdad (que el mismo cálculo que me permitió descifrar el se escribe cíclicamente bajo el mensaje. Se define el criptosis- tema de Vigenère de longitud r y clave k = (k1 . . Los criptosistemas de sustitu- 6 Giacomo Casanova fue muchas cosas ción son susceptibles de un ataque estadístico. m) = k + m. una misma letra se puede cifrar de ma- neras diferentes. y ahora hago WANKE NOBIY OUREM YONLY HOPE penitencia obligándome a contar la verdad al escribir estas memorias. como hemos WOEQE AOPZE OHRSD EOALM YUPR visto). donde los bloques de mensaje son de la forma m = (m1 . en efecto. La posibilidad de elegir la propia clave (caso pionero de customización7) fue clave para el éxito de 7 Neologismo aberrante por personaliza- ción. — Si no le importa. se consideró seguro e infranqueable6 (aunque la verdad es que no — Sin la clave. Empe. como veremos un (no todas ellas decentes). . M) = M − k. En sus memorias cuenta la siguiente anécdota La criptografía como arma infalible para ligar: criptosistema de Vige. perdóneme pero creo era para tanto. se trataba de un código de Vigenère. . . Ese día me convertí en el poseedor de su alma. señor. que no ción por desplazamiento de k caracteres en el texto. A pesar de ser considerado irrompible (por M = HYOSV SCLXM BSHUK SCEFR ZEUOI INEYP AVUBV Madame d’Urfé entre otros. en el fondo. donde k es pertenecía a ningún idioma. ¿Cómo se las apañó Casanova para zaríamos por cifrar de la siguiente forma: o bien. texto me había permitido obtener la clave) Veamos primero un ejemplo y luego daremos la definición pero por capricho le dije que un genio me la había revelado. Me dijo que era imposible. y pude ver su sorpresa. . Definición 43 Sea K = (Z/Z26)r = P = C. acerca de cómo utilizó sus conocimientos en este campo para propósitos algo nère alejados de su profesión: El siguiente código que estudiaremos es el código de Vige. y utiliza. no son tan distintos. mr ) Como se puede ver. utilizado? realmente. y abusé de dicho poder.

You underestimate the power of the Dark Side.... then you will meet your destiny Descifre. la clave que se usa es el texto cifrado del bloque anterior. En bloques su- cesivos. M1 ) m2 = G(m1 ..... la idea ahora es generalizar el cifrado afín usan- do dimensión más alta.. El “normal” se llama ebc.. If you will not fight. M2 ) m3 = G(m2 . frado sigue un patrón similar: ofb. se usa la clave sólo en el primer bloque.. . m2 ). . Formalmente. No es el único modo posible..... M3 ) .. si tenemos un mensaje en bloques m = m1 m2 m3 . primero en modo ebc y luego en modo cbc.. m1 = G(k. cfb. A pesar de que se creía que el criptosistema de Vigenère era seguro. otros son pcbc.. que veremos más adelante. M3 = F(M2 .. m1 ).. una mejora posible de este criptosistema sin memorizar más cla- ves. .. 8 Del inglés. de electronic code book. code block chaining. ... m3 ). ctr y otros... y se usa Este esquema de cifrado se llama cifrado en modo cbc8. es posible (incluso fácil) atacarlo con el método de Kasiski. el siguiente mensaje cifra- do con un criptosistema Vigenère: UCXSL AGWUW EWKLB WRSZD DWHGQ BPQSF CECUT BWSHQ VVTBY GZOJC OCLZY LJWYU KFIGP SNOFA GSIWY SSDUF VICWF Y Criptosistema de Hill Si el cifrado Vigenère se puede ver como una generalización del cifrado César....74 teoría de códigos y criptografía este cifrado. Ejercicio 9 Cifre el siguiente mensaje con un cifrado Vigenè- re de clave k = DARKSIDE. La idea es sencilla en el fon- do: primero averiguar la longitud de la clave r.. M2 = F(M1 . el esquema de cifrado sería M1 = F(k. y luego resolver r cifrados de César. por cualquier medio posible. y una clave k. es la siguiente: en lugar de usar la misma clave para todos los bloques... .. El desci- también en cifrados modernos.

el geómetra. por lo que no es especialmente útil. criptografía de clave privada 75 Definición 44 El criptosistema de Hill es el definido por k = A ∈ K = GL(n.. Ejemplo 24 Tenemos nuestro mensaje de siempre. la clave es una matriz invertible n × n sobre Z/Z26. Permutando. Z/Z26). En la práctica. con A ∈ GL(n. de Apolonio de Rodas9. en la forma de —¿Locura? Esto es ¡Esparta! la escítala espartana.e. y la clave k = ( 11 6 determinante es una unidad en Z/Z26. tórica. 9 Nada que ver con Apolonio de Perga. m ∈ (Z/Z26)n = P = C. sin embargo. G(k. G(k. m) = Am. Lo menciona por primera vez Arquíloco. m ∈ (Z/Z26)n = P = C. Entonces. Z/Z26) × (Z/Z26)n . nuestro mensaje cifrado será m = MHQSQ SWQJE ECCFY UTOFY LMVKJ FJSWP MWHNA UNNQK JUFKA IJFWE AIIZP LDH Este criptosistema es bastante difícil de romper si se conoce únicamente el texto cifrado. planteando un sistema de ecuaciones. aunque la primera descripción clara de la escítala como mecanis- mo de cifrado criptográfico es del siglo iii ac. Es posible generalizar un poco este criptosistema: Definición 45 El criptosistema afín generalizado o de Hill genera- lizado viene definido por k = (A. y el par de funciones F(k. b) ∈ GL(n. Rey Leónidas en 300. en el siglo vii ac. la escítala era un par de varas de madera de un grosor determinado. m) = Am + b. Z/Z26). En esencia. Apolonio de Rodas era poeta. una matriz invertible. este criptosistema se puede reducir a un criptosistema de Hill de longitud n + 1. M) = A−1 (M − b). i. que es udogreni Parece ser que el cifrado de permutaciones. es el primero del que tenemos constancia his. M) = A−1 M. pero es posible atacarlo de forma relativamente fácil si es posible inferir algún trozo del texto en claro. y el par de funciones F(k. cuyo Supongamos que elegimos n = 2. m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI WANKE NOBIY OUREM YONLY HOPE 9 7 ). b ∈ (Z/Z26)n un vector. El emisor y el receptor se ponían de acuerdo .

Para cifrar un mensaje se enrollaba una piel o papiro alrededor de una escítala y se escribía el mensaje de forma transversal. mr )) = (m σ −1 (1) . creada por Arthur Scherbius en 1918 y patentada en 1928. el receptor tenía que volver a enrollar el papiro en la otra escítala. El cifrado por permutación. (m1 . G(σ . K = Sr . consiste en aplicar una permuta- mensaje ‘ataca las termópilas’. . Para descifrarlo. .3: Una reconstrucción con piezas modernas de una escítala espartana con el como su propio nombre indica. un criptosistema de permuta- ción de r letras del alfabeto A viene dado por P = Ar = C. cr )) = (c σ(1) . . . . tenemos M = HSOUS RTIIO ESPTE MSDAO UREHR THLOB IMWEP ENOBI EYAKN UYONE LORMH XXXPX YOE Descifrar el mensaje no es difícil para Bob. . c σ(r) ). . por ejemplo 7. y así sucesivamente. . Definición 46 Fijado un alfabeto A. En este caso. . Este es un ejemplo de cifrado de trasposición. Enigma La máquina Enigma. . Normalmente se utilizaban permutaciones de pocos elementos. . y el par de funciones F(σ . tanto la clave como el proceso se identifican con la permutación. . que es un caso particular del cifrado de permutación. ción a bloques del texto en claro m. . supuso un hito definitivo en la criptografía. Ejemplo 25 Para m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI WANKE NOBIY OUREM YONLY HOPEX XXX ha sido necesario añadir cuatro símbolos para que el texto tenga longitud múltiplo de 9. Por poner un ejemplo.76 teoría de códigos y criptografía en el grosor de la escítala antes de intercambiar mensajes. . se podría codificar como ALRLTAMAASOSCTP-AEI-. el mensaje ATACALASTERMÓPILAS. y la permutación s = ( 17 21 38 54 59 62 73 84 96 ). Figura 3. . y entonces se permutaban las primeras 7 letras. simplemente hay que reordenar utilizando la permutación inversa. Aquí ha sido nece- sario añadir un par de signos en blanco al final del mensaje para hacerlo de longitud 20. m σ −1 (r) ). . (c1 . . Esta es una de las debilidades del cifrado de permutaciones. luego las 7 siguien- tes.

iii DFHJLCPRTXVZNYEIWGAKMUSQOC ii AJDKSIRUXBLHWTMCQGZNPYFVOE i EKMFLGDQVZNTOWYHXUSPAIBRCJ reflector YRUHQSLDPXNGOKMIEBFZCWVJAT y a continuación se cifraba la letra E de la siguiente forma: E ↦ L ↦ L ↦ T ↔ Z ↦ J ↦ C ↦ F. el segundo se movía un lugar. (Fotografía en dominio público. en su modelo más sencillo (el modelo co- Figura 3.0) de arriba están puestas como cortesía): Rotor ABCDEFGHIJKLMNOPQRSTUVWXYZ iii BDFHJLCPRTXVZNYEIWGAKMUSQO ii AJDKSIRUXBLHWTMCQGZNPYFVOE i EKMFLGDQVZNTOWYHXUSPAIBRCJ Figura 3. que en la que se aprecian las teclas. en la joya de la corona de la criptografía de clave privada de la era pre-digital. con justicia. y el cifrado era N ↦ E ↦ D ↦ F ↔ S ↦ S ↦ G ↦ Q. se volvía a avanzar el rotor III. Ejercicio 10 ¿Cuántas letras había que cifrar para que la configuración de los rotores volviese a la posición original? . Para la siguiente letra. que se vamente. digamos la N. El anillo numerado permitía deslizar las Si pulsábamos. mercial. añadiendo más permutaciones a la configuración general rotor iii. Una vez que el primer rotor daba una vuelta completa. Licencia cc by-sa 2.4: Máquina Enigma modelo m3. El reflector. criptografía de clave privada 77 En el fondo era una evolución de otros modelos electromecáni- cos que intentaban hacer más sencilla y automatizada la tediosa tarea de cifrar y descifrar mensajes (sobre todo de contenido mi- litar). (Fotografía los rotores son las filas de abajo de los tres primeros bloques (las de Tim Gage. en primer lugar se movía el conexiones eléctricas. no el que se diseñó para uso militar) en tres rotores. Sin embargo. por ejemplo E. Enigma consistía. era 11 En realidad.) Rotor ABCDEFGHIJKLMNOPQRSTUVWXYZ 10 Ésta era una configuración auténtica de un modelo de Enigma.5: Detalle de un rotor montado reflector YRUHQSLDPXNGOKMIEBFZCWVJAT (izquierda) y el montaje de los rotores. Pongamos por ejemplo¹0 la siguiente situación. para la configuración de los rotores y la zona de letras de salida. de forma que quedaba en esta disposición de la máquina. y cuando el segundo había dado la vuelta com- pleta. obviamente. situaciones algunos rotores daban un doble paso. donde iluminaban según se escribía. las ruedas no eran sino permutaciones de las letras que actuaban consecuti. en algunas invariante. donde la flecha ↔ indica la permutación del reflector. se movía un lugar el tercero¹¹. la sutileza de su diseño y la versatilidad del sistema la convirtieron. el movimiento de los rotores era más complicado.

obtiene E. Si se conectaban dos de estas clavijas mediante un cable. es precisa- mente la presencia del reflector. Ejercicio 11 Estudiar qué datos debía contenter la clave de ci- frado del modelo militar de Enigma que hemos descrito. cada una asociada a una letra. lingüistas. como se puede comprobar inmediatamente. Esto es. • Un conjunto de cinco rotores. un número más que respetable para una seguridad robusta (en los años 20). escoger una posición concreta para el giro del tercer rotor). Dicho de otro modo. enclaustrados en la man- sión de Bletchley Park (los equipos denominados Ultra y Estación . Uno de los más básicos¹² consistía utlizaba la Kriegsmarine. En este modelo simple. criptográfos y personal de apoyo del Servicio de Inteligencia Británico. gracias al diseño del cifrado. pero mensaje al fin y al cabo). y que lo convierten en una maravilla del diseño industrial. ¿Cuántas eran las posibles claves para ese modelo? La proeza (no puede denominarse de otra manera) del equi- po de matemáticos.78 teoría de códigos y criptografía Una de las grandes ideas que subyacen en este aparato. Gracias a él. cifra Q y. 12 Los más complejos. De ellos. que se podían hacer funcionar en el orden que se quisiera. se po- día hacer que el segundo rotor girara. la clave de cifrado para Alice (y la de descifrado para Bob) consistía únicamente en tres letras: la posición inicial de los tres rotores (en el ejemplo anterior sería EAB). que eran los que eran bastante más complejos. si Alice decide enviar E a Bob (un mensaje bastante escueto. cuando N pasara por la primera posición en el primer rotor (y análoga- mente. Los modelos militares. Esto era un tablero de clavijas. que se podían escoger libremente. lo cifra como W y lo envía. y también el punto de inicio de la permutación. dando lugar a un total de 263 claves. las dos letras conectadas eran intercam- biadas en el proceso de cifrado por la máquina. Un sistema de cifra estándar incluía seis stecker pairs. el proceso de cifra- do y de descifrado es exactamente el mismo. el mensaje original. en lugar de que cada rotor girase cuando el anterior hubiera dado una vuelta completa. • Un steckerbrett. por ejemplo. la Marina alemana. no fueron completamente típicamente en: descifrados hasta la década de los 70. se elegían tres. sin embargo. • Unos anillos que permitían modificar el movimiento del segundo y el tercer rotor. Bob entonces.

Sin embargo. . es El espejo de En la práctica. Este criptosistema se llama cifrado de Vernam. . no por método). . 14 Una referencia excelente. . Los problemas de este protocolo no tienen que ver con la seguridad sino con la gestión y la logística. Cons. un cifrado de este tipo estaría a salvo de los mejores equipos de las agencias de inteligencia de cualquier país. . desarrollo tecnológico y recursos humanos¹³. por ejemplo. Definición 47 Consideramos una clave de longitud infinita k ∈ (Z/Z26)∞ . pero con una clave tan larga como el propio mensaje. . el denominado ataque de texto escogido o chosen plaintext attack. las funciones de cifrado y descifrado son F(k. diseñado por Alan Turing con el único objetivo de filtrar las posi- bles claves alemanas mediante el ataque que él mismo concibió. cualquier ataque. de John LeCarré. Para un mensaje de longitud finita. o one-time pad. . . tomar como un código de Vigenère. La respuesta es sí y el protocolo se denomina cifrado de un solo uso. lo es por coincidencia. . También se conoce como cifrado de Vernam. tomando como clave un texto previamente acordado (típicamente se trataba de un pasaje de un libro). m) = (m1 + k1 . criptografía de clave privada 79 X) representa un hito espectacular en la coordinación de investi- gación pura. De esta forma cada letra se cifra de una manera completamente diferente (si no. La idea de este protocolo perfecto es tan sencilla como un código de Vigenère. Cifrado de un solo uso Llegados a este punto podríamos preguntarnos si existe un cifrado que resista. . 13 Por no mencionar que representa la mayor inversión jamás realizada tancia de ello deja. . la fabricación (casi artesanal) de por un gobierno en una investigación Colossus. m = (m1 . sorprendente- mente (o quizás no tanto porque lo hemos mencionado arriba) es sí. pensado y matemática. ¿Es inatacable este sistema? La respuesta. m n ). para co- municaciones donde la seguridad era prioritaria sobre cualquier otra cuestión. y aleatoria. M) = (M1 − k1 . sobre todo como novela en sí misma. G(k. M n − k n ). . un one-time pad de andar por casa se puede los espías. uno de los primeros ordenadores de la historia. al menos por ahora. es el sistema que se ha utilizado hasta tiempos rela- tivamente modernos (concretamente hasta los años 80-90 en los últimos coletazos de la Guerra Fría)¹4. A día de hoy. m n + k n ). .

Es- to quiere decir que debe pasar unos test. Con “bien escogida” queremos decir: • Que la longitud de la clave K(k) debe ser grande.80 teoría de códigos y criptografía Códigos actuales Nineteen fifty five? Enla codificación en clave privada. conocido. hay a grandes rasgos dos familias importantes que operan de forma cualitativamente distinta: códigos de flujo. denominada generador de claves. En los casos que veremos con detalle son de 64 bits (des) y 128 bits (aes). una cantidad variable en el caso de aes). que denotarmos K(⋅). por su- hallar la clave inicial. sino porque el protocolo wep está diseñado de forma tal que suficiente información criptográfica se filtra en códigos de bloque. Cuanto más largo sea el periodo de repetición menos opciones habrá de que un ataque de estas características tenga éxito. En estos códigos. como . que determinan que. Si la función está bien escogida la seguridad es próxima a la que proporciona un one-time pad. denominados test aleatorios. el resultado ob- tenido es indistinguible de una cadena aleatoria de números. y esta clave K(k) es la que realmente se usa en el ci- frado. La clave para cifrar se aplica entonces a cada bloque por separado. la misma opera- ción de cifrado se realiza varias veces (16 en el caso de des. antes de ver el código des con detalle. hasta ser posible saje en bloques de un tamaño prefijado anteriormente y. Esta función genera una clave para cifrar a partir de nuestra clave privada k.¹5 día de hoy. Estos códigos funcionan rompiendo el men- el tráfico de los datos. • Que la clave K(k) tiene que ser esencialmente aleatoria. en la práctica. de manera que este hecho puede usarse para atacar el descifrado. El código de flujo más conocido es tal vez el rc4. que forma la 15 El cifrado wep no se considera seguro a base del sistema de cifrado wep de las redes inalámbricas. • Que la complejidad del algoritmo para hallar K(k) sea poli- nomial. vamos a deternenos en un código en bloque no iterado: el cifrado de Feistel que. puesto. Esto es necesario porque una clave k genera siempre la misma clave de cifrado. no tanto por el uso del cifrado rc4. tal y como la entendemos Marty McFly — Back to the future hoy. Estos códigos están asociados a una función (conocida).

lo cual confiere a este protocolo una enorme capacidad de adaptación a las necesidades concretas de Alice y Bob. que usa bloques de 64 bits (en ascii. Bob. 16 La operación ⊕. La idea básica está en utilizar de forma iterada las rondas de Feistel que acabamos de ver. . 1 + 0 = 0 + 1 = 1. El asombroso progreso en el campo de la computación del que esos años fueron testigo. una vez recibido M = [r∣l ⊕ F(k. La clave k 1 se usa sobre la y calculada F(k. en el contexto de cifrado binario. es la base del sistema des y que tiene cier- tas similitudes con los cifrados de flujo. ya todo resto del texto r0 r1 original desaparece. del texto cifrado es la segunda mitad del texto original. De hecho.6: Esquema de una ronda de muy simple. Concretamente. Hallamos F(k. y el hecho de que des se mostrara resistente a los sucesivos ataques dan una idea de su enorme versatilidad y de lo bien diseñado que estaba el protocolo. también llamada XOR. • La clave secreta que comparten Alice y Bob. r)]. k. puede recuperar mitad derecha del mensaje y al resultado se le aplica ⊕ con la mitad izquierda. Dividimos nuestro mensaje en dos mitades: m = [l∣r]. es la suma sin llevada. 2. Sin embar- go. Operamos como sigue: 1. En el cifrado de Feistel fijamos (públicamente) una función F(⋅. r) (Bob conoce r ya que r = L). ⋅). l0 ⊕ l1 Gracias a su peculiar y simple estructura. DES El Data Encryption Standard odes ha sido el protocolo de cifrado en clave privada más usado desde mediados de los 70 (¿cómo eran los ordenadores entonces?) hasta el año 2000 con la llegada de aes-Rijndael. la primera mitad sea. m = [R ⊕ F(k. es la operación definida por 1 + 1 = 0 + 0 = 0. si realizamos una nueva codificación. tendríamos 8 bloques de 8 caracteres). o A primera vista no parece gran cosa. Calculamos¹6 M = [r∣l ⊕ F(k. L)∣L]. 3. r). r)] = [L∣R] cifrado Feistel. Notemos que la sencillez de ambos procesos no dependen de la función F(⋅. posee 56 bits. ⋅) que toma como entrada la clave de cifrado k (o algo obtenido a partir de ella) y un bloque de texto que se la mitad del texto a cifrar. los datos técnicos del sistema son los siguientes: • Es un código en bloque. el descifrado es Figura 3. El protocolo fue originalmente diseñado (por Feistel y otros investigadores de ibm en los años 70) pensando Fk 1 desde un principio en aplicarlo de forma iterada. criptografía de clave privada 81 veremos más adelante.

(PC − 1)(k) se divide en dos mitades [c0 ∣ d0 ]. que se repite 16 veces (más detalles a continuación).6: Permutaciones (PC − 1) y mos r.3: Permutaciones inicial y final del des. o simplemente E. r)] 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 Aparte de realizar esta operación 16 veces. se intercala un bit de paridad. el 23 19 12 4 26 8 16 7 27 20 13 2 funcionamiento de la función básica de cada ronda de Feistel. des comienza apli- 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 cando una permutación y termina aplicando la inversa de esta 59 51 43 35 27 19 11 3 permutación. (PC − 2) 14 17 11 24 1 5 3 28 15 6 21 10 lo realmente interesante del cifrado des es. Mediante una permutación. La 41 52 31 37 47 55 función F no es compleja. Los c i . El 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 procedimiento es como sigue: dada k de 56 bits. Recordemos que el cifrado de Feistel operaba esencialmente Permutación IP como sigue: 58 50 42 34 26 18 10 2 m = [l∣r] ↦ M = [r∣l ⊕ F(k. 9 o 16 giramos (ciclamos) un 10 2 59 51 43 35 27 19 11 3 60 52 44 36 bit a la izquierda. El primer y el último paso son sencillos. el 2 pasa a ser el 50 y así sucesivamente. 35.82 teoría de códigos y criptografía • La operación básica es un cifrado de Feistel. se convierten en 48. El esquema sería: 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 m ↦ IP(m) ↦ 16 × Feistel ↦ N ↦ M = IP −1 (N). filas. (PC − 1) A c0 y d0 se les aplica la siguiente operación: 57 49 41 33 25 17 9 1 58 50 42 34 26 18 (a) Si estamos en la ronda 1. obteniendo k i de 48 bits. La mitad derecha de nuestro mensaje original. se obtienen 64 bits. esos 32 bits de rondas Feistel para el des. Cada 7 bits. Se aplica la “permutación” (PC − 1). Tabla 3. 18. 2. que denota- Tabla 3. 25. . Las imágenes se leen siguiendo las 2. 63 55 47 39 31 23 15 7 62 54 46 38 30 22 (b) En las otras rondas giramos 2 bits a la izquierda 14 6 61 53 45 37 29 21 13 5 28 20 12 4 4. de 56 bits. aunque sí bastante intrincada. por tanto. 3. 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 otro de los elementos que necesitamos son las claves de 37 5 45 13 53 21 61 29 cada ronda. de 56 bits. posee 32 bits. Esto es. d i obtenidos. vuelven a unirse para formar [c i ∣d i ]. 22. Primero 30 40 51 45 33 48 44 49 39 56 34 53 veamos los pasos: 46 42 50 36 29 32 1. obtenidas a partir de la clave original de 48 bits. se obtiene (PC − 1)(k). simplemente aplicamos la Permutación FP permutación IP y su inversa (también llamada FP). 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 1. 43 y 54. descartando los bits de paridad. Se aplica ahora (IP − 2) que los reordena y descarta los bits 9. 38. denomina- (PC − 2) para el cálculo de las 16 claves da permutación de expansión. el bit 1 pasa a ser el 52.

a costa de repetir 16 de estos bits (y reordenarlos de forma no trivial). nos 19 13 30 6 22 11 4 25 dan un entero entre 0 y 3. 4. el diseño es tal que. miramos en la caja. El motivo de esta expansión. 16 7 20 21 Esto es esencial para que el proceso sea reversible. cuáles son los bits que se repiten Permutación E y dónde se colocan se hará explícito luego. La forma de determinar la 1 15 23 26 5 18 31 10 salida de cada caja es la siguiente: 2 8 24 14 32 27 3 9 • Los bits 1 y 6. Las cifras en base 2 de este entero es la salida de la S-caja. digo yo. De hecho. Esos 48 bits se suman sin llevada (operación xor o ⊕) con 48 bits que provienen de la clave k. aplicamos E que no es en sentido estricto una permutación. ya que al pasar 29 12 28 17 de 6 bits a 4 no se pierde información. Tabla 3. nunca provienen dos del mismo bit original de m). al cual le sumamos 1. criptografía de clave privada 83 2. entendidos como un número en base 2. ronda de Feistel del des. Los 32 bits que salen de las 8 S-cajas se permutan utilizando una permutación de S32 . 16 17 18 19 20 21 En el tercer paso pasamos cada grupo de 6 bits por la S-caja 20 21 22 23 24 25 24 25 26 27 28 29 correspondiente. al cual le sumamos 1. de cada una de las cuales salen 4 bits. en cada caja. 3. entendidos como un número en base 2.9: Permutaciones E y P para cada • Los bits 2. El cuarto paso no es más que aplicar la permutación P. de los 6 bits que Permutación P entran. 32 1 2 3 4 5 En el segundo paso realizamos un xor con una clave k i de 4 5 6 7 8 9 48 bits dependiendo de cuál de las 16 rondas Feistel sea la que 8 9 10 11 12 13 12 13 14 15 16 17 estamos efectuando. Veamos con más detenimiento cada paso: En el primer pa- so. y obtenemos un elemento de esta matriz. Notemos que los bits de una S-caja son todos 28 29 30 31 32 1 distintos (esto es. 4 y 5. Que ya está bien. ya que toma 32 bits y nos devuelve 48. Los 48 bits resultantes de esta suma se distribuyen en grupos de 6 y se introducen en 8 S-cajas. nos dan un entero entre 0 y 15. que no es más que una matriz 4 × 16. • Usando ambos números. denotada habitualmente P. o más precisamente. que es un entero entre 0 y 15. 3. . 4 son siempre bits que están representados en otra caja.

¿Es posible que alguna variante de este ataque sí sea útil? Ejercicio 17 Cifra el texto siguiente: SWEARNOTBYTHEMOONTHEINCONSTANTMOON mediante una función afín bidimensional (ojo. consideramos 26 símbolos) dada por ⎛2 3⎞ ⎛a ⎞ ⎛11⎞ A= . Está escrito en inglés. . Ejercicio 16 Razona por qué el análisis de frecuencias no es útil para el cifrado por funciones afines bidimensionales. Sabemos que el emisor del mensaje utiliza un cifrado por funciones afines bidi- mensionales. = 28. Explica cómo el análisis de este diagrama puede conducirnos a averiguar la clave de cifrado. . Ejercicio 15 Estudia de cuántas claves distintas se puede disponer usando el cifrado de funciones afines bidimensionales. = 27. . ⎝7 8⎠ ⎝b ⎠ ⎝23⎠ Ejercicio 18 Se ha interceptado un mensaje. Z = 25. = . Descifra el mensaje. (inclu- yendo el punto final). y el siguiente alfabeto: A = 0. ? = 29. _ = 26. Ejercicio 13 Descifra el siguiente mensaje en inglés..VY y sospechamos que el emisor ha finalizado el mensaje con su firma: KARLA. THERE ARE MORE THINGS IN HEAVEN AND EARTH HORATIO THAN ARE DREAMT OF IN YOUR PHILOSOPHY .84 teoría de códigos y criptografía Ejercicios Ejercicio 12 Al enfrentarnos a un texto cifrado por sustitu- ción tipo César. un método alternativo a la fuerza bruta consiste en hacer un diagrama de frecuencias con los símbolos del texto.. El texto del mensaje es S_GNLIKD?KOZQLLIOMKUL. cifrado por sustitución PXPXKXENVDRUXVTNLXHYMXGMAXYKXJNXGVRFXMAHWGXXWLEHGZXKVBIAXKMXQM Ejercicio 14 Descifra el texto de El escarabajo de oro.. Ejercicio 19 Cifrar el siguiente mensaje según el método de Vigenère con la clave HAMLET.

Ejercicio 22 Intenta descifrar el siguiente texto. criptografía de clave privada 85 Ejercicio 20 Diseña un procedimiento para descifrar correc- tamente un mensaje cifrado con Vigenère en modo cbc. Está escrito en inglés y cifrado por el método de Vigènere. ZMXZB VIDYA WAEAL GTPTE AMZRV NMOCZ WBAHN DSIWG ZGAIN YIUBO WKMIF WIHWF AWZGB XBXMP JMQDV FOXSS LQFGF WMPGJ ZQXSV OIEGY WMBWA YIZRG ZMHWF AWZHU SBIOF HTMBG WLUBZ QJDOV FAFWY DZQAN AVEKV LPUBG ZMECH FLATF ATQBP WQZFR KBXSF KLDSN EAUKN DSQRN DWZSA SZDCJ KBDSR LAATP GJNZR KBABR FMMHU LPQVN DWATN KBDSR LTMAC ABGFA WLYMP GTXOE LWFVR UWXRN FLPOZ HETSA EGQMR KEQFR KBMPO WLNMG ZMRZN KPATN FMABY AOTHG ZIFGC DQFHU WVUUU LIZRG GCOVR VBTSF GCZRB XAUZR FKQOA VQZHU WVMYR VTUUU LQEOJ LMZHU GCEOA VXQCC DMYOL TMYCE WXQCC DMFOY CQZUJ ABTCH LABSN CQZUC WWBZR ZMMFV FOIWG ZWGHY AAFSA AVSDR GXXSJ JQFWA YAABT KBTOG NWUQR KVQJR JATOE WIZRA GWZSQ SZQRQ AAFIE TBTSF GCZRB XAUZR FKQTB GTEGN ALUMB MLABB LSZCJ KQXSA UMXWX WIOOA UMDUE GEEVR SZYMJ GZPGG ZIFWZ AOTHG WIOVL GCFOX WUKOE EAFVN LQYWT ZBDSN UPKCH TCFAL OWDRF DQWSF ATQBG JIUBQ JWBGS WTXOA VMOVB WLUBG ZMISY DAATF ATQBP WIZRG ZMBSB HTQPB OMPOA VXDOL WLFCG ZMZSB FOARG ZMKAN VMMBQ LPQGV YVRZN KPQRB MBUHF OIDBV FOUBG ZMICE VAFVN LQFKN KNAFZ AVSOA VBTSF AOZGN ALFVR OWDRF GNFVR HZADU WBEOE WEDWG LMZCA LPQGH TEMMJ STXGN FLFSA WUQBG ZIXZF SVPKU AABSE WLUBG ZMECH FLECS KQXSA UM Ejercicio 23 Aplica la permutación ⎛1 2 3 4 5⎞ k= ⎝4 3 5 2 1⎠ al siguiente mensaje MUCHOS AÑOS DESPUES FRENTE AL PELOTON DE FUSILAMIENTO EL CORONEL AURELIANO BUENDIA HABIA DE RECORDAR AQUELLA TARDE REMOTA EN QUE SU PADRE LO LLEVO A CONOCER EL HIELO Ejercicio 24 Descifra el siguiente texto. por ejemplo. usando el método Kasiski). LOOEC RENCN LESTS EIOTN AEETC NOYIC ÑSOAO LSTNS EEACN TYIOÑ SCAOE UIDSV AIUDM NOMNT AITPR UOALE AALGA SIREE SATNT NSSNE EIIPR TOUEP IOXLI ONCTI ECBVN IENLL EEOET MMNDR SOEEO DRPNE IRAME D . calculando un único diagrama de frecuencias. Explica cómo es posible confirmar o descartar una hipótesis sobre la longitud de la clave (formulada. Ejercicio 21 Supongamos que tenemos que descifrar un texto del cual sabemos que ha sido cifrado por el método de Vigènere. cifrado por una permutación de longitud indeterminada.

Ejercicio 29 Suponemos que ciframos en bloques de 64 bits y con claves de 32 bits.08. . en este tema) es más eficaz este ataque. que corresponderían con una nueva posición inicial de los rotores.rhtm Ejercicio 27 Para reforzar la seguridad del sistema Enigma. con la que se cifraba realmente el mensaje. Razona en qué tipo de cifrado (de los estudiados estación.uk/ na web de Bletchley Park¹7. r) = σ(k ⊕ r). Describe explícitamente un cifrado iterado de Feistel con tres aplicaciones. En Bletchley Park se utili- zó fundamentalmente sobre mensajes cifrados que incluían partes meteorológicos y sobre las últimas palabras de los mensajes.86 teoría de códigos y criptografía Ejercicio 25 Estudia qué datos debía contenter la clave de cifrado del modelo militar de Enigma que descrito en los apuntes de teoría. donde la función F sea simple- mente F(k. 18 Paradójicamente.org. este esquema supuso Explica cómo esto aumentaba la seguridad del sistema¹8. donde σ es la operación que permuta los 16 primeros bits con los 16 últimos. como en fallo de seguridad que compromete todo el sistema a partir del error de una única el ejercicio 3. sólo se cifrarían las tres primeras letras de cada mensaje. una debilidad por el uso habitual de ciertas claves de mensaje (generalmente vulgarismos o nombres personales). los alemanes decidieron que no se cifraría todo el texto con la cla- ve del día.bletchleypark. content/enigmasim. ¿Cuántas eran las posibles claves para ese modelo? Ejercicio 26 Descifra el siguiente mensaje codificado en Enigma: RFXLH PYIYW XGHHD CIJVR WVBXW RHMGB JIROE DLHWD JCLPS LIF Las siguientes claves diarias utilizadas son: • Rotores: 3-1-2 • Posición de giro del rotor siguiente: 1-1-1 • Stecker pairs: AF WZ PR HL • Posición inicial de los rotores: F P W Se recomienda usar el simulador de Enigma disponible en la pági- 17 http://www. Ejercicio 28 Un ataque de texto escogido o chosen plaintext Explica cómo una elección inadecuada de claves de mensaje hacen que este attack se basa en la hipótesis de que en un determinado texto ci- procedimiento se convierta en un gran frado aparece una palabra para intentar deducir la clave. En lugar de eso.

o sea. criptografía de clave privada 87 Ejercicio 30 Como des cifra en bloques de 64 bits. un bloque cifra un texto de 8 caracteres ascii (imprimibles o no). . en la prác- tica. Cifra el mensaje RIJNDAEL tomando como clave (de 56 bits. Se recomienda disponer de bastante tiempo por delante. 7 caracteres ascii) FEISTEL.

.

bastante simple: Un barquero tiene que transportar al otro lado de un río tres cosas: un lobo. En concreto. Las comunicaciones se esta- ban desarrollando a una velocidad vertiginosa. El problema es que sólo puede transportar una cosa cada vez. En aquel entonces. Los primeros¹ en plantearse un concepto 1 En realidad no. hicieron que ésta fuera la historia oficial. y regalos Planteamos un antiguo problema. el servicio de diferente de criptografía fueron Diffie y Hellman a mediados de comunicaciones del espionaje británico. En términos criptográficos. y por primera vez en la historia había grupos no militares interesados en tener ca- nales seguros: las nuevas empresas demandaban comunicaciones . hasta llegar al día de hoy en el cual tam- bién las comunicaciones entre clientes y empresas están sujetas a encriptaciones que velan por la privacidad de estos mensajes. los 70. básicamente). cuando vuelva se lo va a encontrar todo perdido de sangre. ¿Qué puede hacer el barquero? Aunque resulte algo extraño. el problema al que se enfrenta- ron Diffie y Hellman era complejo. Del mismo modo. el mundo comercial comenzó a intere- sarse por las posibilidades que ofrecía la comunicación segura.CRIPTOGRAFÍA DE C L AV E P Ú B L I C A 4 Lobos y corderos. si deja solos al lobo y al cordero. al principio entre corporaciones (evitando los problemas derivados del espionaje industrial). este problema no está muy ale- jado del que motivó. y lechugas. cuando vuelva sólo quedará uno de ellos (y no será la lechuga). a principios de los años 70. un cordero y una lechuga. pero la confidencialidad de los archivos del GCHQ. el enorme desarrollo de las comunica- ciones y la tecnología de la información que se experimentó a partir de los años 60 comenzó a hacer posibles aplicaciones crip- tográficas a entornos distintos de los tradicionales (el militar. el nacimiento de un concepto que revolucionó completamente la criptografía mo- derna: la clave pública. y si deja solos al cordero y a la lechu- ga.

Con este aumento exponenecial de mensajes. • Sin embargo. si se quiere que el sistema sea robusto. De hecho. en general) el correo no es nada seguro y que cualquier paquete que no vaya en una caja con candado es sistemáticamente abierto y robado. hallar a) es un proble- ma extremadamente complejo.90 teoría de códigos y criptografía rápidas (eso se lo dejamos a los ingenieros) y fiables. p. las empresas normalmente querían poder comunicarse con cualquier otra empresa. donde el pro- tocolo era uno a uno. Conocidos {h = g a mod p. Bob le dice que allí (en el extranjero. Sin embargo. era por tanto muy difícil con las herramientas disponibles. ver ejercicio 1. Alice puede comprar candados y Bob también. concretamente O(log a log2 p). a diferencia de la situación tipo en el ámbito militar. en el contexto de la criptografía de clave privada. Ahora escogemos un entero a ∈ Z cualquiera. Este problema. dado h del cual sabemos que es de la forma g a mod p. así. los usuarios de protocolos criptográficos se enfrentaban al siguiente problema: las claves bien usadas tienen una vida útil y. es procedente tener un sistema fle- xible y sencillo de intercambio de claves que se pueda usar con frecuencia. un natural menor que p. pero obviamente ninguno de los dos tiene una llave que le valga a los candados que compre el otro. Ellos pensaban en realidad en una dificultad derivada de la criptografía de clave privada.). El problema que ilustra mejor la inspiración de Whitfield Diffie y Richard Hellman es el siguiente: Ejemplo 26 Alice quiere enviar un regalo de cumpleaños a Bob que está pasando unas vacaciones en el extranjero. hallar a . Entonces: • Calcular g a mod p es un problema sencillo (complejidad logarítmica. el problema inverso (esto es. que no era otra que el intercam- bio de claves. ¿Cómo puede hacer llegar Alice su regalo? La idea de Diffie y Hellman cristalizó en el denominado DHEP (Diffie–Hellman Exchange Protocol) y se centraba en el siguiente hecho: escojamos un primo p y un g. g}. El problema que se planteaba para la gestión de claves.17.

que será la clave que usen ambos en lo sucesivo. funciones en las que es muy sencillo calcular la imagen de un elemento dado. Hay varios algoritmos que resuelven este problema. y esto (si están bien escogidos los actores matemáticos de este drama) no es facti- ble computacionalmente. que quiere hallar la clave acordada. A fecha de hoy. Entonces Alice calcula H1 = G a y lo envía a Bob. Si Eve quiere hallar h necesita entonces a o b. criptografía de clave pública 91 conocido por el sugerente nombre de problema del logaritmo dis- creto (DLP) es un primer ejemplo de lo que se ha dado en llamar funciones trampilla. sería: P. Finalmente Alice puede hallar h = H2a = G ab y Bob puede hallar h = H1b = G ab . H1 = G a . el DLP no es resoluble si uno fija P ≃ 21024 . mientras que hallar la inversa de un elemento concreto es mucho más complejo aún en este caso. que hace lo propio con H2 = G b . G. por un canal de comunicación no necesariamente seguro que van a usar para generarla un primo P y un G mod P. Por otra parte. Tras la idea de Diffie–Hellman. podemos comprobar que la información a la que tiene acceso. porque ha sido transmitida por un canal no seguro. establezcamos un protocolo formal de criptografía de clave pública. Alice escoge un entero a ∈ Z y Bob escoge un entero b ∈ Z. la mayoría de los cuales están diseñados para ser eficaces sobre familias particulares de módulos. Si nos situamos en la perspectiva de Eve. Diffie y Hellman utilizaron astutamente este hecho para resolver el problema del intercambio de claves de la siguiente ma- nera: Alice y Bob quieren compartir una clave (que supondremos que es un entero mod p) y acuerdan. con lo cual debe resolver el problema del logaritmo discreto. La idea fundamental es abandonar los conceptos tradicionales: . For your eyes only. H2 = G b . en el que existen infinitas soluciones para a.

92 teoría de códigos y criptografía

• Dejamos de pensar en dos usuarios: pensamos en una comu-
nidad de usuarios que incluye a Alice, Bob y, por qué no, a
Eve.

• Dejamos de pensar que la clave de cifrado y la clave de des-
cifrado son esencialmente lo mismo (o sea, a partir de una
se calcula la otra de forma trivial). En lugar de eso tenemos
una función trampilla: conociendo la clave de cifrado es sen-
cillo averiguar la de descifrado, pero el camino inverso no es
factible (computacionalmente).

• Dejamos de pensar en encriptar para que sólo remitente y
destinatario puedan desencriptar: en lugar de eso encriptare-
mos de forma que sólo el destinatario pueda desencriptar.

Así, tenemos que Alice tiene una clave pública K A que todo
el mundo conoce. En la vida real, todas las claves aparecen y se
pueden mirar en una especie de listín telefónico, y así mismo Bob
tiene la suya K B (incluso Eve, como usuaria del sistema). Lo im-
portante es que K A viene acompañada, cuando se crea, de una
clave privada k A que es la que se usa para desencriptar. Teórica-
mente k A se puede hallar a partir de K A, pero en la práctica no es
posible, y sólo Alice conoce k A (y análogamente sólo Bob conoce
k B ,...).
Tenemos una función de encriptación pública que depende
de dos parámetros: la clave de encriptación pública y el mensaje a
encriptar. Tenemos también una función de desencriptación que
verifica dos condiciones:

• El cálculo de la desencriptación conociendo la clave de des-
encriptado es rápido.

• El cálculo de la desencriptación sin conocer la clave de desencrip-
tado es demasiado lento.

Si Alice quiere enviar un mensaje m a Bob, realiza el cálculo
de encriptar, con la clave pública de Bob, y halla el mensaje en-
criptado M. Este mensaje ni siquiera Alice podría descifrarlo (aunque
no lo necesita, porque sabe qué pone). Envía M y entonces Eve, si
quiere recuperar m debe desencriptar M sin conocer k B , mientras
que Bob puede realizar este cálculo sin problema.
Por tanto, la idea es dejar de pensar en la encriptación como
un protocolo entre dos usuarios idénticos para pasar a pensar

criptografía de clave pública 93

en un protocolo donde ser emisor y ser receptor son conceptos
distintos, porque poseen información distinta. En este contexto
se encripta pensando en que sólo el receptor pueda leer el mensaje. Ésta
diferencia de acceso a la información hace que estos códigos se
denominen en ocasiones códigos asimétricos, por contraposición
a los códigos simétricos, que serían aquéllos en los que emisor y
receptor (legítimo) comparten la misma información.
Es obvio que el diseño de un tal protocolo ha de ser muy cui-
dadoso para evitar un ataque alternativo al esperado que rompa
la seguridad del sistema. Toda la seguridad del sistema recae en
la función trampilla, ese sutil sacrificio de información que hace
público un dato (la clave de encriptación) que, teóricamente, per-
mite calcular otro dato (la clave de desencriptación) el cual, sin
embargo, hay que mantener en secreto.
Las funciones trampilla no son sencillas de encontrar. De
hecho, en los últimos años cada problema del que se sabe que es
un buen candidato a función trampilla ha sido probado como base
para un criptosistema de clave pública. En la actualidad, existen
varias opciones interesantes. No por casualidad, casi todas las
funciones que se usan tienen que ver con aritmética modular:

• La factorización. Si tomamos dos primos grandes (del orden
de 2512 ), pongamos p y q, cualquier ordenador multiplica
enseguida p ⋅ q = N. Sin embargo, dado N, hallar p y q no es
tan simple. Este función trampilla se utiliza en la actualidad
en el protocolo rsa, que veremos a continuación con detalle.
Es el método más usado en la actualidad.

• El dlp. Dado un primo p y un natural g < p, hallar h = g a
mod p para un a cualquiera es muy sencillo. Pero dado h
hallar el exponente a es, como hemos comentado, imposible
(para p grande). Esto se usa en el dhep y en un método de
encriptación llamado ElGamal, que es la base de dos de los
métodos más usados en internet hoy en día: pgp y gpg.

• El problema de las raíces cuadradas. Dado un entero no
primo n y g mod n, es sencillo hallar x = g 2 mod n. Pero
dado a, hallar g (su raíz cuadrada módulo n) es impracticable.
Este problema es la base del método de Rabin.

Vamos a modificar adecuadamente la definición de sistema
criptográfico para adaptarlo a la situación de criptografía de clave
pública.

94 teoría de códigos y criptografía

Definición 48 Un sistema criptográfico de clave pública es un par
de funciones

F∶ K × P → C, G∶ K′ × C → P,

donde K es el conjunto de claves públicas posibles, K′ es el conjunto
de claves privadas posibles, P es el conjunto de mensajes posibles,
C el conjunto de mensajes cifrados posibles, y tales que para un
cierto conjunto de pares (k, K) ∈ K × K′ , y todo m ∈ P, se verifica
F(K, m) = M, entonces G(k, M) = m. Es decir,

G(k, F(K, m)) = m.

En general, supondremos que F, G, M y K son conocidas públicamente.

Hacen falta dos condiciones para el criptosistema sea intere-
sante:

1. Debe ser computacionalmente infactible calcular k A a partir
de K A. Aquí es donde entran en juego las funciones trampi-
lla.

2. Debe ser computacionalemente infactible calcular m a partir
de M, K A, F y G. Es fundamental el análisis criptográfico
del sistema, de forma pública y abierta, y de preferencia,
con una prueba matemática de la dificultad de resolver el
problema.

Cifrado RSA.

En el protocolo RSA no hay ningún tipo de dato compartido
entre todos los usuarios. Cada uno de ellos, por ejemplo Alice,
genera su clave de la siguiente forma:

• Escoge dos primos grandes, p A , q A y los multiplica N A =
p A ⋅ q A.

• Calcula ϕ(N A) = (p A − 1)(q A − 1).

• Escoge un número E A, primo con ϕ(N A).

• Calcula d A, verificando E A ⋅ d A = 1 mod ϕ(N A).

La clave pública de Alice es entonces el par (N A , E A). El
resto lo mantiene privado.

G ∈ F∗P . y por tanto. Una vez recibido M. Supongamos. pero que funcionan muy bien para factorizar determinados números). Sin embargo lo que Eve necesita es d A. La clave . una opción obvia es factorizar N A y actuar como lo hace Alice. que siempre es solución. p − 1))(1 + mcd(e − 1. la elección de p A y q A debe ser cui- dadosa. Ahora Alice crea su clave pública escogiendo un entero n A. todos los usuarios del sistema comparten cierta información. Se escoge un cuerpo finito FP . Entonces Bob lo encripta haciendo M = m E A mod N A . Se escoge. criptografía de clave pública 95 Supongamos que Bob quiere enviar un mensaje m a Alice. Observación 12 Los parámetros de seguridad actuales son NA ∼ 2 1024 . con la única condición de que se cumpla n A < P − 1. ¿Es necesario factorizar N A para resolver este problema? Ejercicio 32 Un mensaje rsa se llama no cifrable si verifica que m e ≡ m (mod N). que tenga orden divisible por Q. y la Fórmula de Euler para Cifrado de ElGamal contar las soluciones parciales. Además de eso. m = 1 y m = n − 1. Atención al cero. una base común. que debe ser muy grande. sin perder generalidad. es un número pequeño en la práctica. Ejercicio 31 Si Eve quiere descifrar el mensaje. En realidad pedimos que G (P−1)/Q ≠ 1 mod P. En el cifrado de ElGamal. por el Teorema de Euler. por ejemplo m = 0. q − 1)). Alice lo desencripta haciendo M d A = (m E A )d A = m E A d A = m1+rϕ(N A ) = m mod N A . Se puede usar el Teorema Chino del Resto para calcular las soluciones de la ecuación módulo cada primo por separado. así mismo. para evitar que la factorización de N A sea factible por alguno de los métodos específicos existentes en la actualidad (esto es. que m < N A. y otro primo Q de tal forma que Q∣(P − 1). En un sistema rsa siempre existe mensajes no cifrables. métodos que no son buenos en general. Demuestra que el número de mensajes no cifrables es (1 + mcd(e − 1.

M1n A G h⋅n A Observación 13 Los parámetros de seguridad actuales son P ∼ 21024 . Alice escoge dos primos p A y q A. calcula √ √ E A2 EA (2m + E A)2 E A 2m + E A E A +M− = − = − mod N A . y calcula M = (M1 . al recibir M. Q ∼ 2160 . que mencionamos anteriormente. Una de las grandes ventajas de este protocolo es que las elecciones de parámetros que deben ser cuidadosas las realiza el sistema. Alice. 4 2 4 2 2 2 . La clave pública de Alice es. Alice. primero genera una clave efímera h (un entero cualquiera). Ejercicio 33 ¿Qué objeto puede tener el escoger G con orden divisible por Q? Cifrado de Rabin El cifrado de Rabin se basa en el problema de las raíces cuadradas. al recibirlo. La encriptación se realiza como sigue: si Bob quiere encrip- tar m. entonces. E A). Este problema es esencialmente equivalente en dificultad a factorizar (ver hoja de problemas para una de las implicaciones). mientras que a los usuarios individuales sólo les compete elegir la clave privada n A. que no tiene incidencia sobre la fortaleza del protocolo. calcula M = m (m + E A) mod N A . (N A . descifra como sigue M2 m ⋅ E Ah = = m mod P. Si Bob quiere enviar un mensaje m a Alice. m ⋅ E Ah ) . verifi- cando p A = q A = 3 mod 4.96 teoría de códigos y criptografía pública de Alice es entonces E A = G n A mod P. y un entero E A tal que 0 < E A < N A = p A q A. M2 ) = (G h . Para crear su clave.

Alice calcula varios descifrados (porque hay varias raíces cuadradas. Sea k k una solución de la congruencia x 2 ≡ a (mod p k ). Básicamente. también dividiría a la suma y a la diferencia. Sea y k una solución de 2x k y k ≡ 1 (mod p k ). supongamos que x 2 ≡ y 2 ≡ a (mod pn ).10. dividiría a x y a y. es claro que si x 2 ≡ a (mod m) tiene una solución. Si p dividiera a los dos factores. en realidad. en esta situación. . criptografía de clave pública 97 con lo cual. que es −x. Sea m = p1e1 . Reducción de potencias de primos impares Ahora. en ese caso.). Ahora hacemos la siguiente afirmación: si existe una solución x para la congruencia x 2 ≡ a (mod pn ). Entonces. divide al producto (x + y)(x − y). a y m coprimos. Ejercicio 34 ¿Por qué se encripta haciendo m (m + E A) en lugar de simplemente m2 ? Intermedio aritmético: raíces cuadradas modulares Este parece un buen momento para hablar de raíces cuadra- das modulares. En otras palabras. y por tanto p. pero obviamente sólo uno tendrá sentido. Entonces pn . que son 2x y 2y. como x 2 = kpn + a. ver ejercicio 4. entonces es también solución de las congruencias x 2 ≡ a (mod p ei i ). En efecto. Recí- procamente. si se encuentran soluciones de la r ecuaciones en congruencias. entonces existe exactamente otra solución. . usando el Teorema Chino del Resto se tiene una solución a la congruencia original. pre r . Ahora bien. vamos a reducir ca- da congruencia de potencia de primo. el cálculo de raíces cuadradas módulo N A es mucho más rápido usando el algoritmo de Shanks. queremos resolver la ecuación x 2 ≡ a (mod m). y como p es un primo impar. Reducción a potencias de primos En primer lugar. Entonces x k+1 = x k − (x k2 − a)y k es una solución de x 2 ≡ a (mod p k+1 ). vamos a usar algo llama- do Lema de Hensel para levantar soluciones de x 2 ≡ a (mod p)k a soluciones de x 2 ≡ a (mod p)k+1 . podemos reducir el problema a potencias de primos. tendríamos que . Observación 14 El hecho de escoger p A y q A congruentes con 3 en Z/Z4 se basa en que. que no estudiaremos en este curso. Veamos en primer lugar el caso de los primos impares.

Por tanto. Para el caso en que a ≡ 3 (mod p). de repente. x y −x. sí. lo que no es posible por hipótesis. es distinto saber que existe una solución que dar un algoritmo. Por tanto. Entonces. pn divide también a uno de los dos. Módulo primo impar Sólo falta ver el caso de x 2 ≡ a (mod p). Si x 2 ≡ a (mod p) tiene solución. p divide bien a x + y. operamos por inducción: supongamos que x k2 ≡ a (mod 2k ) para algún k ≥ 3. 2k divide a x 2 − a. Para el caso a ≡ 1 (mod p) no existe un fórmula análoga pero se puede usar el algoritmo de Tonelli-Shanks. 1. Entonces x k+1 = x k + i2k−1 es solución de 2 x k+1 ≡ a (mod 2k ). bien a x − y. por tanto a tiene que ser impar. tiene exactamente dos soluciones. La ecuación x 2 ≡ a (mod 2) tiene exactamente una solu- ción x ≡ 1 (mod 2). Para n > 3. en cuyo caso las soluciones son x ≡ 1 (mod 4) y x ≡ 3 (mod 4). la ecuación x 2 ≡ a (mod 2n ) tiene cuatro solucio- nes si a ≡ 1 (mod 8) y no tiene solución en los otros casos. la criptografía de clave pública nos ha proporcionado. Si a ≡ 1 (mod 8). Reducción de potencias de 2 Las potencias de 2 se tratan aparte: recordemos que a y m son coprimos. Veamos cómo se construyen. ponemos i = 0. una mane- ra mucho más eficaz de gestionar las claves en un entorno de . 2. en- tonces x = a(p+1)/4 es una solución. luego x ≡ pmy (mod pn ). La ecuación x 2 ≡ a (mod 4) tiene solución si y sólo si a ≡ 1 (mod 4). En efecto. La ley de acción y reacción o el principio del yin y el yang también tienen su versión criptográfica. y si es par. Ahora bien. Sabemos (por Euler) que la congruencia tiene solución si y sólo si a (p−1)/2 ≡ 1 (mod p).98 teoría de códigos y criptografía p divide a a. p no divide ni a x ni a y. Bueno. Si (x 2 − a)/2k es impar. Por tanto. con p un primo impar y a coprimo con p. Yo no he dicho eso. ponemos i = 1.5 y 7). 3. Para n ≥ 3.3. entonces x 2 ≡ a (mod 8) tiene exactamente cuatro soluciones (1. pero no a los dos.

criptografía de clave pública 99 múltiples usuarios: basta un listado público (y un protocolo bien diseñado. Con la clave privada. habitualmente. De esta forma Eve puede monitorizar toda la correspondencia sin ser ni siquiera detectada. Este tipo de ataques se conoce. Bob recibirá el mensaje convencido de que viene de Alice (y así es. Actuando de forma análoga con Bob.E y enviarlo a Bob. A Eve le basta interceptar el mensaje. claro) y nos podemos olvidar de los problemas de al- macenamiento e intercambio de claves de los viejos tiempos… ¿o no? La verdad es que no. Ejemplo 27 La cosa va como sigue: Supongamos que.E y lo manda. Entonces en el DHEP. . En cambio. descifrarlo (posee la clave K A. en efecto. en efecto. podía estar razonablemente seguro de que. Eve es capaz de hacerse pasar por Bob cuando escribe a Alice. Ejercicio 35 Intenta pensar cómo se podría garantizar la identidad del remitente en un protocolo de clave pública. un aspecto que se ha perdido con el uso de las claves privadas es el de la confianza. firmarlo como Alice y ¿cómo puede saber Bob que en efecto es Alice quien lo manda? Los problemas de suplantación de identidad cobraron un interés enorme en criptografía cuando por primera vez se diseñó un ataque a un protocolo (en este caso el DHEP que vimos antes) bajo la hipótesis de que el atacante (Eve. el mensaje había sido enviado por Alice. en cierto sentido). y viceversa (nada descabellado en un mundo donde las comunicaciones rara vez son personales). cuando Bob recibía un mensaje encriptado de Alice. pongamos K A. Eve intercepta los mensajes de Alice a Bob y. acuerda una clave privada con Alice.E ).E . después de la publicidad. en el nuevo contexto. La solución a los eventuales problemas de identidad falsa que se plantearon en los protocolos de clave pública se resolvieron con el uso de la denominada firma digital. La solución. con el nombre de man in the middle. Para empezar. cualquiera puede enviar a Bob un mensaje. volver a cifrarlo con K B. cómo no) era capaz de fingir identidades.E ). Lo codifica con K A. actuando como Bob. Ahora supongamos que Alice quiere mandar un mensaje a Bob. acuerda una clave privada con él haciéndose pasar por Alice (K B.

y es pública). una opción para firmar el texto por parte de Alice es hacer [m∣s] z→ [m E B ∣s d A ] Ejemplo 29 El sistema DSS (Digital Signature Standard) está basado en el DLP y fue propuesto en 1991 como sistema de firma estandarizado por el NIST (National Institute of Standards and Technology). o una frase que le guste o lo que sea) y lo codifica usando SU propia cla- ve privada de descifrado k A. Es muy parecido a los sistemas de firma de Schnorr y de ElGamal (ver hoja de ejercicios). como clave privada. y adopta como . jugando un papel análogo al DES en encriptación. G A = g (PA −1)/Q A es un genera- dor del subgrupo cíclico de orden Q A. Alice. Esto confirma que sólo Alice puede haber mandado el men- saje. Alice finalmente escoge un entero aleatorio 0 < x A < Q A. luego escoge otro PA ∼ 21024 . que sólo él conoce. Ejercicio 36 Explica por qué no es una buena idea que Alice escoja un texto fijo como firma. Alice escoge un entero aleatorio g y calcula g (PA −1)/Q A mod PA . k B . A continuación. Bob al recibir [M∣S] decodifica la primera parte usando su clave privada. Después decodifica S usando K A. la clave pública de Alice. obteniendo M. y recuperando m. En efecto. verificando PA = 1 mod Q A. pero en la firma no hay ninguna información re- levante. Alice genera una firma s (que puede ser simplemente su nombre y dirección. Ejemplo 28 En el protocolo RSA. puesto que sólo ella puede haber codificado un mensaje de tal forma que K A lo decodifique. Finalmente Alice envía [M∣S]. para lo cual lo cifra con la clave públi- ca de Bob k B . El grupo F∗PA tiene un único subgrupo cíclico de orden Q A. y recuperando s. Si este cálculo es disinto de 1. obteniendo S. La única información que contiene es que el remitente es.100 teoría de códigos y criptografía La idea es muy simple. Alice crea sus parámetros para firma digital como sigue: primero escoge un primo Q A ∼ 2160 . Pongamos que estamos en una co- munidad con un protocolo de cifrado público y que Alice quiere enviar un mensaje m a Bob. cualquiera puede decoficar la firma (sólo hace falta K A. inequívocamente.

llamémosla S. T). Para firmar un mensaje. aunque parece ser que este tipo de criptosistemas resistiría un ataque de gran tamaño de las claves públicas que se usan. sólo que ha sido manipulado. YA = G Ax A mod PA) . La forma de escoger S es pública. así que el código disfrazado podría ser la clave pública y el 3 En concreto. La firma de Alice para este mensaje es entonces (R. Un criptosistema que usa esta idea es el criptosistema de McEliece. para después hallar T verificando T k = S + x A R mod Q A . y calcula R = [ G Ak mod PA ] mod Q A . Si la firma es correcta. computación cuántica. la imagen del mensaje por una función hash²). . Decodificar un código lineal arbitrario es un problema di- fícil³. calcula U1 = T −1 S mod Q A . en el curso. más generalmente. basado en códigos correcto- res de errores. Alice escoge una firma (o el en- cabezamiento del mensaje. pero no las trataremos se va a firmar digitalmente). y disfrazar el código como un código lineal general. firma 0 < S < Q A. U2 = T −1 R mod Q A . código eficiente la clave privada. PA . En la práctica. o. Errores y secretos: criptosistema de McEliece Un criptosistema especialmente interesante para esta asigna- tura es el criptosistema de McEliece. criptografía de clave pública 101 clave pública (Q A . T). este criptosistema no se usa mucho4 por el 4 Aún. y calcula G AU1 YAU2 mod PA . La idea principal es elegir un código corrector del que se tenga un algoritmo eficiente de decodificación. entonces este cálculo módulo Q A debe ser igual que R. NP-difícil. A continuación. así que S lo es (no digital y garantía de que el mensaje no estamos suponiendo que el mensaje se vaya a encriptar. a un tiempo. de forma que sea 2 Las funciones hash tienen la ventaja de que proporcionan. Son objeto de un trabajo personal. Alice escoge un entero aleatorio (clave efímera) 0 < k < Q A. Cuando Bob recibe (R. que usa códigos de Goppa para las claves privadas. G A .

Bob le dice que allí (en el extranjero. y calcula G̃ A = PAG A S A. PA). Para empezar.102 teoría de códigos y criptografía Veamos cómo se crean las claves públicas y privadas en este esquema. para decodificar. PA). m) = G̃ A m + z. Alice puede . Obsérvese que G((S A .1. M) = S −1 (decodG A (P −1 M)). donde decodG (x) es la decodificación del código definido por G aplicado a un vector arbitrario x. Veamos cómo se usan estas claves para la operación de cifrado y descifrado. por su parte. y para el que se tenga un algoritmo de decodificación eficiente. Estos parámetros son públicos y definen el sistema criptográfico. k) que corrige t errores. M) = S −1 (decodG A (P −1 M)) = S −1 decodG A P −1 (G̃ A m + z) = S −1 (decodG A (G A S A m + PA−1 z)) = S A−1 (S A m) = m. A continuación. así. G A . Si Bob quiere mandar un mensaje m para Alice. McElice propuso el uso de códigos de Goppa. G A . su dimensión. PA). Alice elige una matriz generatriz G A de tamaño n × k para un código lineal binario (n. k. La clave pública de Alice es (G̃ A . donde el paso crucial es que decodG A (G A S A m + PA−1 z) = S A m. G A . y calcula M = F((G̃ A . la longitud del código. Alice. Sin embar- go. elige un vector efímero de errores z de peso w(z) ≤ t. el número de errores que corrige. fijamos los parámetros n. Ejercicios Ejercicio 4. en general) el correo no es nada seguro y que cualquier paquete que no vaya en una caja con candado es sistemáticamente abierto y robado. calcula G((S A . primero identifica m con uno o más bloques binarios de longitud k que in- terpretaremos como vectores. que es lo que envía a Alice. Alice quiere enviar un regalo de cumpleaños a Bob que está pasando unas vacaciones en el extranjero. elige una matriz binaria no singular aleatoria S A de tamaño k × k y una matriz de permutación PA de tamaño n × n. t) y su clave privada es (S A . t). y t.

3. T2 = . Las claves públicas de éstos son. dado que no tenemos problemas en que otros usuarios de la comunidad lean los mensajes que nos intercambia- mos. E y d tales que d ⋅ E = 1 mod ϕ(N). Supongamos que queremos usar RSA en una co- munidad de confianza y. interceptado por Eve en la forma M1 = m3 mod N A . cómo factorizar N (de manera eficaz) si conocemos d. Supongamos que Alice. Bob y Chuck escogen E A = E B = EC = 3 y que otro usuario les envía el mismo mensaje. factorizar N y desen- criptar RSA son problemas equivalentes. m. EC ). en un protocolo RSA y dado un usuario con clave pública (N . por ejemplo): ⎧ ⎪ ⎪ ⎪ x = M1 mod N A ⎪ ⎪ ⎨ x = M2 mod N B ⎪ ⎪ ⎪ ⎪ ⎩ x = M3 ⎪ mod NC Una elección habitual hoy para los sistemas RSA es escoger E = 65537. Supongamos que Eve (que no es miembro de la comunidad) intercepta un mensaje que Alice ha enviado a dos usuarios. para ahorrar costes. utilizamos todos el mismo N = pq. (N . Ejercicio 4. Supongamos pues que conocemos N. M2 = m3 mod N B . Eve puede recuperar el mensaje original m. Dado que en RSA hay libertad para escoger la cla- ve de encriptación. M3 = m3 mod NC . . Calcula entonces los siguientes números 1 − T1 E B T1 = E B−1 mod EC . los usuarios podrían estar tentados de escoger una clave sencilla. EC Probar que con estos datos.4. respectivamente. Eve conoce por tanto M1 = m E B y M2 = m E C . pero obviamente ninguno de los dos tiene una llave que le valga a los candados que compre el otro. Bob y Chuck. ¿Cómo puede hacer llegar Alice su regalo? Ejercicio 4. Este ejercicio estudia. Probar que Eve puede recuperar el mensaje m hallando la solución al siguiente sistema de congruencias (por el Teorema Chino del Resto. como por ejemplo 3. Ejercicio 4. Por tanto. criptografía de clave pública 103 comprar candados y Bob también. E). E B ) y (N .2.

Entonces tenemos que p+q 2 p−q 2 2 2 N =( ) −( ) = t −s . q − 1). 2 2 La idea de Fermat para factorizar consistía en buscar enteros √ t > N tales que t 2 − N es un cuadrado perfecto. Ejercicio 4. Probar que si escogemos en RSA (por error. si en el paso anterior.5. Intenta factorizar. Ejercicio 4. que es una raíz cuadrada de 1 en Z/Z N. Este algoritmo es un algoritmo Las Vegas.6. podemos √ calcular y2 = y1 mod N y es de nuevo raíz cuadrada de 1 en Z/Z N. Probar que entonces podemos calcular en tiempo polinomial un divisor de N • Probar que el divisor calculado anteriormente es no trivial si y ≠ ±1 mod N • Probar que si escogemos un entero cualquiera x podemos hallar (en tiempo polinomial) y1 = x (d⋅E−1)/2 . Supongamos que estamos creando una clave para RSA y hemos escogido ya p. Esta clase de algo- ritmos son probabilísticos. Ejercicio 4.9. usando el algoritmo anterior. Ejercicio 4. y que debemos a Fermat. se entiende) N de manera que es primo. Ejercicio 4.8. N = 1441499. Explica por qué esto hace que escoger dos primos muy próximos p y q no es buena idea en RSA.104 teoría de códigos y criptografía • Supongamos que tenemos y ∈ Z tal que y2 = 1 mod N. conocidos E = 17 y d = 507905. y1 = 1 mod N. funciona como sigue: imaginemos que N = pq.7. . Sin embargo. Probar que podemos escoger d como d = E −1 mod mcm(p − 1. Eve puede descifrar fácil- mente cualquier mensaje que nos envíen. y bien pueden no terminar o no dar una respuesta. es siempre una respuesta correcta. si la dan. Una idea que liga factorización con diferencias de cuadrados. Factoriza 23360947609 usando la idea del ejercicio anterior. q y E. • Probar que.

14. Una variante del DLP utilizada en criptografía es el protocolo Massey–Omura. es posible hallar raíces cuadradas módulo N en tiempo polinomial (ver 4. ¿Cuántas raíces cuadra- das tiene un elemento no nulo de Z/Z pq? Ejercicio 4.12. calculemos z = x 2 y halle- √ mos z.). Para ello. exactamente. criptografía de clave pública 105 Ejercicio 4. Ejercicio 4. que tiene la particularidad de no usar claves públicas.16. y halla las raíces de 15 módulo 1441499.11. cero o dos raíces cuadradas. Si ahora Alice quiere enviar un mensaje m a Bob. exac- tamente la mitad nos conducen (en tiempo polinomial) a una factorización de N. implementado en la mayoría de los programas de cálculo simbólico. escojamos un x ∈ (Z/Z N)∗ . En este protocolo. Estudia la fragilidad del sistema Massey–Omura a ataques man in the middle. estamos ante un algoritmo probabi- lístico con probabilidad de éxito 1/2. Alice escoge entonces e A y d A tales que e A ⋅ d A = 1 mod P − 1. ¿Para qué enteros se puede aplicar exactamente el mismo procedimiento? Ejercicio 4. Desarrolla un procedimiento para calcular todas las raíces cuadradas de un elemento de Z/Z pq. El cálculo de raíces cuadradas en un cuer- po F p se puede hacer en tiempo polinomial con el algoritmo de Shanks. y Alice y Bob han . Ejercicio 4.). Trabajamos en un grupo cíclico ⟨G⟩. si podemos hallar en tiempo polino- mial raíces cuadradas en Z/ZN. Bob. Asumiendo que es posible calcular raíces cuadra- das en F p en tiempo polinomial (ver 4. Vanstone). si conoce- mos la factorización de N = pq.10. Por tanto. Ejercicio 4. Intenta imaginar cómo continúa el protocolo. por su parte. todos los usuarios acuerdan trabajar en un cuerpo primo FP . de entre todos los valores posibles de z. Probar que. Probar que un elemento no nulo de F p tiene.11.13.11. calcula M1 = m e A y lo envía. Ejercicio 4. √ Probar que.15. sabiendo que para que Bob recupere m hace falta un envío más. podemos factorizar N = pq ∈ Z. probar que. Un protocolo de intercambio de claves alterna- tivo al DHEP es el denominado protocolo MQV (Menezes. halla M2 = M1e B y lo envía a Alice. Qu.

• Calcula S A = (KC mod 2l ) + 2l . en el sistema DSS. respectivamente. • Calcula TA = (K D mod 2l ) + 2l . que se hace de una manera conocida y previamente fijada.19. cada uno. Ejercicio 4. se puede considerar t = 160 y. d) (Bob). Un sistema de firma digital debido a ElGamal que usa también el DLP funciona como sigue: se fijan un primo P y un G ∈ F∗P . pues se toma G = F∗P . . l = 80. y ahora quieren acordar una clave privada común (por ejemplo. Prueba que tanto Alice como Bob pueden reali- zar los cálculos del MQV en tiempo polinomial. Éste es el único intercambio de men- sajes del protocolo (comparar con DHEP). por tanto. Demuestra que. Ejercicio 4. Ejercicio 4. Esto casi siempre es inmedia- to. mientras que Eve necesita resolver el DLP. un nuevo par de claves público / privadas efímeras: (KC = G c .18. a) (K B = G b . Ejercicio 4. Supongamos que ∣G∣ = 2t . hA • Halla k = (K D K BTA ) . Alice calcula entonces: • Convierte KC y K D en enteros. Explica por qué no es una buena idea que Alice escoja un texto fijo como firma. pares de claves público / privadas: (K A = G a . para usar DES). y tomamos l = t/2.17. Primero genera.20. [ G AU1 YAU2 mod PA ] = R mod Q A. c) (Alice) (K D = G d .106 teoría de códigos y criptografía generado. Razona qué calculos debe hacer Bob para llegar. con los datos de los que dispone. en general. En parámetros de seguridad actuales. y se intercambian KC y K D . Alice escoge 0 < x A < P − 1 y publica YA = G x A . pero asumiremos. b) . a k. • Halla h A = c + S A ⋅ a.

. criptografía de clave pública 107 Para firmar un mensaje m (del que supondremos 0 < m < P − 1) Alice escoge un entero aleatorio k tal que mcd(k. P − 1) = 1. calcula R = G k mod P. Probar que Bob puede verificar la autenticidad del mensaje comprobando G m = YAR R S mod P. S = (m − x A R)k −1 mod P − 1 y envía (R. S).

.

A classical introduction to cryptography: Applications for communications security. 2006. The Transformers. 2011. 2003. pages 365–370. A course in number theory and cryptography. 2008. 34(3):480–508. Springer. and Cryptography. Jeffrey Hoffstein. Groups. rings and Galois theory. Jill Pipher. Celine Carstensen. Øystein Ore. 2006. Serge Vaudenay. American Mathematical Monthly. volume 114 of Graduate Texts in Mathematics. Victor Percy Snaith. Algebraic Geometry. Springer. . Episodio 4. The general chinese remainder theorem.BIBLIOGRAFÍA Dinobot Island II. Temporada 2. Neal Koblitz. Øystein Ore. and Joseph H Silverman. Theory of non commutative polynomialsmmu- tative polynomials. 1933. An introduction to cryptography. 1952. 1994. An intro- duction to mathematical cryptography. Benjamin Fine. Walter de Gruyter. Richard A Mollin. The Annals of Mathematics. Springer. Abstract Algebra: Applications to Galois Theory. World Scientific. and Gerhard Rosenberger. CRC Press. volume 11. 1985.