Anda di halaman 1dari 113

CCGS[ST]

TEORA DE CDIGOS
Y CRIPTOGRAFA

UNIVERSIDAD DE SEVILLA
DEPARTAMENTO DE LGEBRA
NDICE GENERAL

Introduccin 1

1 Fundamentos 3
Grupos 3

Anillos 9

Dominios eucldeos 12

Congruencias 17

Cuerpos nitos 20

Complejidad de algoritmos 25

Un nmero es un nmero es un nmero 31

Ejercicios 34

2 Cdigos correctores de errores 39


Cdigos correctores y cdigos detectores 40

Estrategias de correccin 42

Parmetros de los cdigos 43

Cdigos lineales 45

Decodicacin por sndromes y errores 49

Cdigos cclicos. 55

Cotas asociadas a un cdigo. 58

Ejercicios 63
iv

3 Criptografa de clave privada 69


Generalidades 69
Galia est omnis divisa in partes tres: el criptosistema de Csar 72
Criptosistema afn 74
Cifrados de sustitucin 75
La criptografa como arma infalible para ligar: criptosistema de Vigenre 77
Criptosistema de Hill 79
Permutando, que es udogreni 80
Enigma 81
Cifrado de un solo uso 83
Cdigos actuales 84
DES 85
Ejercicios 88

4 Criptografa de clave pblica 93


Lobos y corderos, y lechugas, y regalos 93
For your eyes only 95
Cifrado RSA 98
Cifrado de ElGamal 99
Cifrado de Rabin 100
Intermedio aritmtico: races cuadradas modulares 101
Yo no he dicho eso. Bueno, s. 102
Errores y secretos: criptosistema de McEliece 105

Bibliografa 113
I N T RO D U C C I N
En un telfono mvil cualquiera, un usuario (a partir de
ahora, Alicia), marca un nmero y hace una llamada a otro usuario
(a partir de ahora, Bob). Si el mvil no es antediluviano, cuando
Alicia habla, el telfono convierte su voz en cdigo digital, que es
enviado por la red de telefona mvil hasta el mvil de Bob, donde
vuelve a convertirse en sonido. Este proceso mgico, que ocurre
aproximadamente 12.400 millones de veces al da, es en realidad
muy sosticado.
De alguna forma, el telfono de Alicia tiene que identicar-
se ante la red de telefona, debe transmitir la informacin, que
tendr prdidas, debe encriptar la informacin, para que la comu-
nicacin sea privada; la red telefnica debe recibir la informacin
de Alicia, encontrar a Bob sin posibilidad de confusin, y pasarle
la informacin. En el otro extremo, el telfono de Bob debe re-
cuperar la informacin, a pesar de (posiblemente) haber perdido
parte por el camino, y desencriptarla. Todo esto, de forma rpida,
para que no se detecten cortes en la conversacin.
Hay muchos procesos implicados, y casi todos tienen que
ver con las matemticas. Y no slo en telefona mvil, sino en
todos los aspectos de la sociedad global. Transacciones seguras
entre bancos o entre empresas, previsiones de gastos, modelos de
prediccin futuros, etc.
En esta asignatura nos centraremos en entender dos de esos
procesos: la codicacin de la informacin para su recuperacin
sin errores, y la encriptacin para que slo el destinatario legtimo
tenga acceso a esa informacin. En palabras tcnicas, daremos
una introduccin (ms o menos elemental) a la Teora de cdigos
correctores de errores y la Criptografa.
Desde el punto de vista matemtico, las herramientas que
usaremos son pocas: un poco de grupos, un poco de cuerpos ni-
tos, un poco de lgebra lineal y un poco de lgebra conmutativa.
2 teora de cdigos y criptografa

Pero la potencia de esas pocas herramientas es enorme para las


dos aplicaciones que estudiaremos.
Para los profesores y los alumnos de
Wildstone la diversin y la recreacin no
son menos importante que el estudio
Son ms importantes.

Les Luthiers
F U N DA M E N T O S 1
Grupos
Denicin 1 Un grupo es un par (G, ), donde G es un conjunto Well, Ill tell you something that should
be of vital interest to you
(no vaco) y es una operacin binaria e interna que verica
The Doctor The ambassadors of Death
1. La operacin es asociativa. Doctor Who, 7.4

2. La operacin tiene elemento neutro, esto es, existe un e G tal que


para todo g G, se tiene

e g = g e = g.

3. Todo elemento g G tiene un simtrico respecto de , esto es, existe


un g G tal que

g g = g g = e.

4. Si adems

gh=hg

para todo par de elementos g, h G, se dice que G es abeliano o


conmutativo.

Si G es nito, se llama orden de G al entero G = card(G).


Un subconjunto H no vaco de G se dice que es un subgrupo de
(G, ) si es interna en H (es decir, si H H H) y (H, HH ) es
un grupo y se denota H G.

Ejemplo 1 Z, Q R, C son grupos aditivos.



R , Q , C son grupos multiplicativos.
R n = {races n-simas de la unidad} C es un grupo multipli-
cativo.
S X = {biyecciones X X} es un grupo con la composi-
cin. Si X = {1, 2, . . . , n}, se denota S X = S n .

Proposicin 1 Sea (G, ) un grupo y H G un subconjunto


no vaco. Las condiciones siguientes son equivalentes
4 teora de cdigos y criptografa

1. H es un subgrupo de (G, ).

2. Para todo par de elementos x, y H se tiene que x y H.

En lo sucesivo, denotaremos la operacin simplemente


como la multiplicacin, y ocasionalmente, la suma.

Ejemplo 2 Z42 = {mltiplos de 42} es un subgrupo de Z. De


hecho, todo subgrupo de Z es de la forma Z a.

Proposicin 2 Sea G un grupo y {H i }iI una familia de sub-


grupos. Entonces

H i es un subgrupo de G.
iI

Ejemplo 3 Z14 Z4 = Z28. Ms generalmente, Z a Zb =


Z mcm(a, b).

Denicin 2 Dado un subconjunto S G de un grupo, se llama


subgrupo generado por S a

S = H.
H subgrupo de G
HS

En esta situacin, se dice que S es un sistema de generadores de S, y veri-


ca que es el menor subgrupo de G que contiene a S.

Ejemplo 4 {2, 3} = Z; {14, 4} = Z2, y en general {a, b} =


Z mcd(a, b).

Proposicin 3 Sea S el conjunto de los inversos de los ele-


mentos de S G. Entonces,

S = {x1 x2 x n , tal que x i S S , y n 1}.

Dicho de otra forma, el subgrupo generado por S es el conjunto


de todos los productos nitos de elementos de S y de sus inversos.

Denicin 3 Sea (G, ) un grupo, a G y denotemos por a su


simtrico (o inverso). Se dene



e si m = 0



(m veces)
a m = a a si m > 0






(m veces)


a
a si m < 0.

(Anlogamente se dene ma en un grupo aditivo.)


fundamentos 5

Se dice que un elemento a de un grupo G es de orden nito si existen



0 k < k con a k = a k . Se dir que es de orden innito en caso contrario.
Si a es de orden nito, existen enteros positivos n tales que a n =
e. Se llama orden de a al menor entero positivo k tal que a k = e, y se
denota o(a). Si a es de orden innito, se denota o(a) = .

Lema 1 La denicin de potencias de un elemento a G


verica las propiedades habituales; en particular, para cualesquiera
enteros m y n, se tiene

a m a n = a m+n , a m = (a )m = (a m ) , (a m )n = a mn .

Ejercicio 1 Sea a un elemento del grupo G, y sea a su sim-


trico (o inverso).

1. o(a) = 1 a = e.

2. o(a) = o(a ) = a.

3. Si G es nito, entonces todo elemento es de orden nito.

4. Si a n = e, entonces o(a) n.

5. Si a es de orden nito,
o(a)
o(a k ) =
mcd(o(a), k)

6. Si o(a) y o(b) son coprimos y G es abeliano, entonces


o(ab) = o(a)o(b).

Teorema 1 (Teorema de Lagrange) Sea G un grupo nito y


H G un subgrupo. Entonces H divide a G. En particular, o(a) =
a divide a G para todo elemento a G.

Demostracin. Sean H G, y denamos la relacin de equiva-


lencia 1
Tambin se puede tomar la relacin
simtrica x y y x H, y
x y x y H. considerar H x.

En esta situacin, la clase de equivalencia de x, que denota-


mos [x], verica

[x] = x H.

El conjunto cociente G/ , que no ser en general un grupo, es


nito y de la forma

G/H = {x1 H, . . . , xr H}.


6 teora de cdigos y criptografa

Pero todas las clases x i H tienen el mismo cardinal, porque dado


a G, la aplicacin a G G dada por x xa es una biyeccin.
Por tanto,

card(H) = card( x i (H)) = card(x i H),

y as, G = r H.

Denicin 4 Un grupo G se llama cclico si existe un a G tal que

G = a = {a} = {a m m Z}.

Teorema 2 (Teorema Fundamental de los Grupos Ccli-


cos Finitos) Sea G un grupo cclico de orden nito G = n. Entonces
G es abeliano y se verica:

1. Todo subgrupo de G es cclico.

2. Para todo divisor d de G, existe un nico subgrupo de orden d, a


saber, Hd = a n/d .

Demostracin. La primera parte del enunciado es trivial.


Veamos que todo subgrupo de G = a es cclico: sea H G,
y sea s = min{k > 0 tales que a k H}. Este s existe y verica que
H = a s . Ms an, s es un divisor de n.
Para la ltima parte del enunciado, la existencia es clara
porque a n/d tiene orden exactamente d. Si H es otro subgrupo de
orden d, y H = a k , entonces k n y mcd(k, n) = k. Por tanto,
d = o(a k ) = n/ mcd(k, n) = n/k, luego k = n/d.

Obsrvese que en la demostracin de la segunda parte, he-


mos probado que todos los elementos de orden d pertenecen al
subgrupo cclico Hd . En particular, a n/d no ser en general el ni-
co generador de Hd . Cules son los otros generadores? Como
sabemos que

o(a n/d ) d
o((a n/d )k ) = = ,
mcd(o(a ), k) mcd(k, d)
n/d

concluimos que si o((a n/d )k ) = d, entonces mcd(k, d) = 1. En


otras palabras: hay exactamente tantos elementos de orden d
en G como enteros positivos menores que d y coprimos con l.
Euler hizo esta misma observacin:
fundamentos 7

Teorema 3 (Frmula de Euler) Sea n > 0, se verica

(d) = n,
0<dn

donde (k) es el nmero de enteros positivos menores que k y coprimos


con k.

Una familia especialmente importante de subgrupos es la


que permite inducir estructuras de grupos por relacin de equi-
valencia: los denominados subgrupos normales. Para denirlos,
jamos un grupo (G, ) y un subgrupo H G. Consideramos las
rbitas de un elemento x G cualquiera por H, esto es:

x H = {x h h H}, H x = {h x h H}

Denicin 5 Decimos que H es normal en G cuando, para todo


x G, se tiene x H = H x. Esta condicin se denota habitualmente
H G.

Observacin 1 Algunas propiedades equivalentes a H G


son

1. Para todo x G, x H x = {x h x h H} = H.

2. Para todo x G, x H x = {x h x h H} H.

Proposicin 4 Dado H G, la relacin denida en G por

x y x y H

es de equivalencia. La clase de equivalencia de x es, precisamente


x H. El conjunto cociente, que se denota habitualmente G/H,
tiene estructura de grupo con la operacin (notada tambin ):

(x H) (y H) = (x y) H.

Cuando G es abeliano (cosa que suceder con frecuencia en


los grupos que trataremos en este curso), es inmediato ver que to-
do subgrupo es normal y, por tanto, siempre podemos considerar
la estructura cociente.

Ejemplo 5 Z/Zm.

Denicin 6 La otra operacin esencial entre grupos es el producto.


Dados dos grupos (G, ) y (L, ) (eventualmente, se puede considerar
una cantidad nita arbitraria de grupos), se dene su producto (directo)
como el grupo G L, con la operacin denida por

(x, a) (y, b) = (x y, a b).


8 teora de cdigos y criptografa

Denicin 7 Un homomorsmo de grupos es una aplicacin

f (G, ) (L, )

que verica que para cualquier par de elementos x, y G,

f (x y) = f (x) f (y),

esto es, un homomorsmo es una aplicacin que respeta las operaciones de


grupo.

Un homomorsmo biyectivo se denomina un isomorsmo.


Cuando existe un isomorsmo entre G y L como arriba, esto se
suele denotar G L. Ambos grupos se dicen isomorfos y, dado
que desde el punto de vista de la Teora de Grupos, ambos objetos
son absolutamente equivalentes, se tratan como el mismo objeto.

Observacin 2 Algunos resultados importantes concernien-


tes a isomorsmos son:

1. Si dos conjuntos X e Y tienen el mismo cardinal (nito),


entonces S X SY .

2. Dos grupos cclicos nitos con el mismo nmeros de ele-


mentos son siempre isomorfos. Por este motivo, se denota
por Cn el grupo cclico de n elementos.

3. C p Cq C pq si y slo si mcd(p, q) = 1.

4. Todo grupo cclico innito es isomorfo a (Z, +).

Teorema 4 (de estructura de grupos abelianos nitamen-


Pure mathematics cannot lie! te generados) Todo grupo abeliano nitamente generado es isomorfo
The Doctor The Claws of Axos a uno de la forma
Doctor Who, 8.3
Cd 1 Cd n Zr ,

donde d1 d2 d n y r 0.

Corolario 1 Todo grupo abeliano nitamente generado es


isomorfo a uno de la forma

C p 1 C p n n Zr ,
1

donde p i es primo para i = 1, . . . , n, no necesariamente distintos;


y r 0.
fundamentos 9

Ejemplo 6 Algunos ejemplos de aplicacin del tegafg. 2


Hay un ejemplo muy interesante, pero
que no se acostumbra a ver en clase sobre
1. Hay exactamente dos grupos abelianos de orden cuatro el tegafg. Consideremos la curva elptica
y 2 = x 3 36x sobre R2 , y denotemos
(salvo isomorsmos), que son C4 y C2 C2 . por E(Q) el conjunto de puntos de la
curva con coordenadas racionales. El
2. Para cada p primo, existe un nico grupo abeliano de or- Teorema de Mordell (esto es magia, y
no lo que se ensea en Hogwarts) dice
den p, necesariamente cclico. que el conjunto de puntos racionales de
una curva elptica es un grupo abeliano
nitamente generado. En nuestra curva
A continuacin, y para terminar el recordatorio de teora en concreto,
de grupos que nos har falta, dejamos el enunciado del Primer E(Q) = {O, (0, 0), (6, 0)}
Teorema de Isomorfa, en la seguridad de que nuestros alumnos Z (3, 9)
C2 C2 Z ,
pueden escribir la demostracin con los ojos cerrados. A veces se
donde O es el punto del innito de
enuncia en forma de diagrama conmutativo, como en la Figura 1. la curva y la suma de puntos no es la
suma componente a componente, sino
Teorema 5 (Primer Teorema de Isomorfa) Sea una operacin que hay que denir con
cuidado. Por ejemplo, en nuestra curva,

f (G, ) (L, ) (6, 0) + (3, 0) = (2, 8)


25 35
2 (3, 9) = ( , ).
un homomorsmo de grupos, y denamos 4 8

ker( f ) = {g G f (g) = e L }
img( f ) = {l L existe g G con l = f (g)}

Entonces, ker( f ) es un subgrupo normal de G, img( f ) es un subgrupo f


(G, ) (L, )
de L y existe un isomorsmo G/ ker( f ) img( f ). i
f
G/ ker( f ) img( f )

Figura 1.1: Primer Teorema de isomorfa.


Aqu es la proyeccin natural (g) =
Anillos g + ker( f ), i es la inclusin y f(g +
ker( f )) = f (g) el isomorsmo natural.
Denicin 8 Un anillo es una terna (A, +, ) formada por un
conjunto A y dos operaciones internas y binarias +, vericando:

1. El par (A, +) es un grupo abeliano, cuyo elemento neutro llamare-


mos normalmente cero, denotado 0A, o simplemente 0.

2. La operacin binaria es asociativa y tiene elemento neutro, que


llamaremos normalmente uno, denotado 1A, o simplemente 1.

3. La operacin es distributiva a la derecha y a la izquierda respecto


de la operacin +, i.e. para todos x, y, z A, se tiene

(x + y) z = x z + y z, x (y + z) = x y + x z.

Si adems la operacin es conmutativa, diremos que el anillo es conmuta-


tivo.

En esta asignatura no veremos anillos no conmutativos, I wish the ring had never come to me.

aunque los hay y muy importantes (por ejemplo, los anillos de Frodo

matrices cuadradas). The Lord of the Rings, JRR Tolkien


10 teora de cdigos y criptografa

Observacin 3 Algunas notas a la denicin.

1. En general se usar la expresin sea A un anillo, sobreen-


tendiendo las operaciones. La operacin se notar normal-
mente por simple yuxtaposicin.

2. En un anillo A se tiene 0 x = x 0 = 0 para todo x A.

3. Si en un anillo A se tiene 1 = 0, entonces A = {0}.

4. Para todo x, y A, se tiene x(y) = (x)y = (x y).

5. Si A1 , . . . , A n son anillos, el producto cartesiano A1 A n


posee una estructura natural de anillo, donde las operaciones
estn denidas componente a componente.

Denicin 9 Sea A un anillo. Una unidad es un elemento que


posee un simtrico multiplicativo (a la izquierda y a la derecha), que
llamaremos inverso. El conjunto de las unidades de A es un grupo para el
producto y se notar A .

Un cuerpo es un anillo conmutativo tal que todo elemento


distinto de cero es una unidad, i.e., A = A {0}.

Ejemplo 7 Algunos casos sencillos de unidades.

1. Las unidades de Z son 1, 1.

2. Los anillos Q, R, C son cuerpos.

3. El grupo de las unidades del anillo M(n, k) con k = Q, R C


es GL(n, k) (las matrices con determinante no nulo).

4. Si A y B son anillos, (A B) = A B . (Esto lo usaremos


ms adelante.)

Denicin 10 Sea A un anillo. Un elemento x A se llamar un


divisor de cero si y slo si es distinto de cero y existe y A, y 0, tal que
3
Los divisores de cero no son tan raros x y = 0. Un anillo sin divisores de cero se llama un dominio de integridad
como podra pensarse; por ejemplo en
el anillo Z/Zm, si ab = m, se tiene que
(o dominio, a secas).
a + Zm y b + Zm son divisores de cero. En Un elemento x A se llamar nilpotente si es distinto de cero y existe
el anillo de matrices 2 2, se tiene que

1 1 1 1
un entero n > 0 tal que x n = 0.
( )( ) = 0.
2 2 1 1
En un dominio de integridad, los elementos no nulos veri-
can la propiedad cancelativa:

a 0 y ab = ac b = c.
fundamentos 11

lo cual hace que estos anillos sean particularmente cmodos a la


hora de hacer clculos. De hecho, se tiene:

Lema 2 Sea A un anillo. Las condiciones siguientes son equi-


valentes:

1. Todo elemento no nulo es cancelativo, i.e.

a 0 y ab = ac b = c.

2. A es un dominio de integridad.

El concepto equivalente a subgrupo para anillos no es, como


podra esperarse, el de subanillo. En efecto, si R A son dos ani-
llos (con las mismas operaciones) no se puede denir, en general,
una estructura coherente de anillo en el grupo cociente A/R. Es
necesario introducir una idea nueva, la de ideal de un anillo. La gnesis del nombre de ideal proviene
de una idea de Kummer cuando investiga-
ba los anillos de enteros algebraicos Z[]
Denicin 11 Sea A un anillo. Un ideal de A es un subconjunto I de y la condicin de factorizacin nica. Por
A que verica: centrar ideas, supongamos que tenemos
dos factorizaciones distintas del entero
42:
1. I es un subgrupo del grupo aditivo de A.
42 = 3 14 = 2 21.
2. Para cualesquiera a I y x A, se tiene xa I. Aunque parece que son distintas, sabe-
mos que lo que ocurre es que los enteros
Observacin 4 Sea I A un ideal de A. Se tiene: de la igualdad no estn completamente
factorizados. Si continuamos con la
factorizacin, obtenemos 42 = 2 3 7.
1. Si I contiene una unidad, entonces I = A. Si ahora consideramos el anillo

Z[ 5], y miramos a dos factorizaciones
2. A es un cuerpo si y slo si sus nicos ideales son {0} y A. del entero 6, obtenemos

6 = 2 3 = (1 + 5)(1 5),
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.
Kummer razon que deben existir unos
ciertos factores ideales que haran posible la
Lema 3 Un subconjunto I A es un ideal si y slo si factorizacin nica.
Claro, demostrar que los factores
1. Si a, b I, entonces a + b I. ideales existen y tienen sentido es un
trabajo bien complicado. Pero unos aos
2. Si a I y c A, entonces ac I. ms tarde, entra en escena Dedekind,
que tiene la siguiente idea: en Z, me
da lo mismo hablar del entero 2 que
Asombrosamente, el concepto de Dedekind es precisamente del conjunto de elementos divisibles
por 2. Es decir, lo esencial es la relacin
el que permite dotar de estructura de anillo a los cocientes.
de divisibilidad. Esto conduce de forma
natural a la denicin de ideal.
Proposicin 5 El grupo cociente A/I admite una estructura
cannica de anillo, con el producto denido por

(a + I)(b + I) = ab + I.
12 teora de cdigos y criptografa

Denicin 12 Sean A y B anillos, f A B una aplicacin. Se dir


que f es un homomorsmo de anillos si verica:

1. Para cualesquiera x, y A, es f (x + y) = f (x) + f (y).

2. Para cualesquiera x, y A, es f (x y) = f (x) f (y).

3. f (1) = 1.

Un homomorsmo biyectivo se llama un isomorsmo y los anillos entre


los cuales se puede establecer un isomorsmo se llaman anillos isomorfos.
Anlogamente al caso de grupos, trataremos los anillos isomorfos como el
mismo anillo, a todos los efectos.

Se verica tambin el Primer Teorema de Isomorfa, con el


enunciado anlogo (cuidado: ahora ker( f ) son los elementos de A
que van a 0B ) al caso de los grupos.

Dominios eucldeos
Denicin 13 Un dominio eucldeo es un dominio de integridad A
junto con una aplicacin A {0} Z0 , llamada la norma eucldea,
que verica

(a) (ab), para a, b A {0},

y tales que dados dos a, b A con b 0, existen unos r y q, tales que

a = bq + r, con r = 0, o bien 0 (r) < (b).

Estos elementos r y q se llaman resto y cociente de la divisin eucldea


de a por b.

Ejemplo 8

1. Z, con (x) = x.

2. k[X], el anillo de polinomios en la variable X y coecientes


en el cuerpo k, con ( f (X)) = grado( f (X)).

3. kX el anillo de series formales en la variable X sobre el


cuerpo k, con ( f (X)) = orden( f (X)).

4. Z[i], el anillo de enteros de Gauss, con (a + bi) = a 2 + b2 .

5. Z[], con una raz primitiva tercera de la unidad, es el


anillo de enteros de Eisenstein y (a + b) = a 2 ab + b2 .

En el resto de esta seccin, A ser un dominio eucldeo.


fundamentos 13

Denicin 14 Sean a y b A, con a distinto de cero. Se dir que a


divide a b si existe un c A tal que ac = b. En este caso se escribe a b.
Tambin se dice que b es divisible por a.

La relacin de divisin verica las siguientes propiedades4. 4


Es interesante comparar estas propie-
dades con la denicin de ideal de la
1. Si a b, y c es cualquiera, entonces a bc. pgina 11.
2. Si a b y a c, entonces a (b c).

Denicin 15 En un dominio eucldeo, si a b y b a, necesaria-


mente a = ub, donde u es una unidad. En este caso, se dir que a y b son
asociados.
Si a b y a no es unidad ni asociado de b, se dir que a es un divisor
propio de b.

Ejemplo 9 En Z, los asociados de a son a y a.


En k[X], los asociados de f (X) son c f (X) con c k .

Un elemento p se llama irreducible si no tiene divisores pro-


pios. En otras palabras,

Denicin 16 Un p A {0} no unidad se llama irreducible si

p = p1 p2 p1 unidad y p2 asociado (o al revs).

Denicin 17 Sea p A un elemento no nulo que no es una unidad.


Se dice que p es primo si verica la siguiente propiedad:

p (ab) p a o p b.

Aunque no tengamos mucho tiempo de profundizar en el


tema, no es lo mismo primo que irreducible. Lo fundamental lo
podemos resumir en el siguiente teorema.

Teorema 6 (de Euclides) Sea A un dominio.

1. Todo elemento primo es irreducible.

2. Si A es un dominio eucldeo5, todo irreducible es primo. 5


De hecho, basta con que sea dominio
de factorizacin nica. Pero todo do-
minio eucldeo es dominio de ideales
Una consecuencia del Teorema de Euclides es el siguiente principales, que a su vez es dominio de
factorizacin nica.
Teorema.

Teorema 7 (fundamental de la aritmtica) Todo a 0 no


unidad de un dominio eucldeo se descompone en producto nito de elemen-
tos irreducibles, de forma nica salvo orden y producto por unidades.
14 teora de cdigos y criptografa

Denicin 18 Sean a, b A dos elementos distintos de cero de


un dominio eucldeo. Se llamar mximo comn divisor de a y b a todo
elemento c A que verique:
1. c a y c b.
2. Si d A verica que d a y d b, entonces d c.
Si existe un mximo comn divisor, es nico salvo producto por unidades.
Si c es el mximo comn divisor de a y b, se escribir c = mcd(a, b).

Es muy cmodo normalizar el mximo comn divisor para


que sea nico. Si A = Z, las unidades son 1 y 1, y se tomar el
mximo comn divisor positivo. Si A = k[X], las unidades son los
elementos de k , y se toma como mximo comn divisor el nico
polinomio mnico.
Naturalmente, todava debemos probar que existe el mxi-
mo comn divisor.

Teorema 8 (Algoritmo de Euclides) Sean a y b, con b 0.


Consideremos las sucesivas divisiones eucldeas
a = q0 b + r0
b = q1 r0 + r1
(1.1)
r0 = q2 r1 + r2
.............
Entonces
1. Existe un mnimo k 0 tal que r k = 0.
2. Si k 1, entonces r k1 es el mximo comn divisor de a y b. Si
k = 0, entonces b a y mcd(a, b) = b.

La demostracin se basa en dos hechos simples. En primer


lugar, los restos no nulos son de norma estrictamente decreciente
por la Denicin 13. Por otro lado, es fcil probar que si a = qb + r
es la divisin eucldea de a por b, se tiene

mcd(a, b) = mcd(b, r).

Corolario 2 (Identidad de Bzout) Sean a y b no nulos y


d = mcd(a, b). Existen , A tales que

a + b = d.

Toda igualdad de este tipo se llama una identidad de Bzout.

Se puede dar una prueba breve no constructiva usando el he-


cho de que un dominio eucldeo es dominio de ideales principales;
fundamentos 15

o se pueden despejar las Ecuaciones (1.1) desde r0 hasta r k1 para


calcular explcitamente y .

Denicin 19 Sean a, b dos elementos distintos de cero de un domi-


nio eucldeo. Se llamar mnimo comn mltiplo de a y b a un elemento
m Z que verique:
1. a m y b m.
2. Si r A verica que a r y b r, entonces m r.
Si existe un mnimo comn mltiplo de dos elementos, es nico salvo pro-
ducto por unidades. Si m es el mnimo comn mltiplo de a y b, se escribi-
r m = mcm(a, b).

Se puede usar la existencia del mximo comn divisor para


probar la del mnimo comn mltiplo, como hacemos a continua-
cin, o se puede demostrar directamente a partir del Algoritmo
de Euclides6. 6
ystein Ore. Theory of non commuta-
tive polynomialsmmutative polynomials.
The Annals of Mathematics, 34(3):480508,
Proposicin 6 a, b A distintos de cero. Entonces 1933

ab
mcm(a, b) = .
mcd(a, b)

Para la demostracin es suciente ver que (ab)/ mcd(a, b)


verica la Denicin 19.

vamos a terminar el repaso de dominios eucldeos con unas


breves aplicaciones sobre ecuaciones.

Proposicin 7 La ecuacin

ax + my = b

tiene solucin si y slo si d = mcd(a, m) divide a b. En este caso,


las soluciones son
7
Otra posible demostracin a partir
m a de este punto es resolver en primer
S = {(x = x0 + k , y = y0 k ), k Z, d = mcd(a, m)}, lugar la ecuacin homognea asociada
d d
ax + my = 0, (dividiendo por d y
aplicando el Teorema de Euclides), para
donde
obtener la familia
b b S 0 = {(km/d, ka/d)},
x0 = , y0 = , con d = a + m
d d y despus demostrar que las soluciones
es una solucin particular. de la ecuacin original son (x 0 , y 0 ) + S 0 .
En cierto sentido, es un anlogo de lo
que pasa en los sistemas de ecuaciones
Demostracin. Desde luego, si existe una solucin (x0 , y0 ), de lgebra Lineal: la solucin de un
sistema lineal es una solucin particular
entonces d b de forma trivial, porque divide a a y a m.7 Supon- ms una solucin del sistema homogneo
asociado.
gamos entonces que d m. Entonces, de la identidad de Bzout Aqu S 0 no es un subespacio vectorial
sino un subgrupo de Z2 .
16 teora de cdigos y criptografa

d = a + m podemos escribir
b b b
b= d = ( )a + ( )m = x0 a + y0 b,
d d d
y es claro que (x0 , y0 ) es una solucin.
Tambin es claro que cada elemento de la familia S es solu-
cin de la ecuacin; la cuestin est en ver que son todas. Para
eso, sea (x1 , y1 ) otra solucin; es decir,

ax0 + my0 = ax1 + my1 ,

de donde
a m
(x0 x1 ) = (y1 y0 ). (1.2)
d d
Como a/d y m/d son coprimos, se tiene que a/d (y1 y0 ),
luego y1 y0 = k(a/d). Anlogamente, se tiene que x0 x1 =
k (m/d). Sustituyendo en la Ecuacin (1.2), se obtiene k = k, de
forma que (x1 , y1 ) S.

La primera publicacin del Teorema


Chino del Resto es un ejemplo de clculo Teorema 9 (Teorema Chino del Resto) Sean m1 , , mr
que se debe a Sun Tzu, entre los siglos
3 y 5. La primera demostracin moderna elementos de A coprimos dos a dos, i.e., mcd(m i , m j ) = 1 para todo i j.
se debe, naturalmente, a Gauss. Entonces

A/m1 . . . mr A/m1 A/mr .

Demostracin. Bastar dar un homomorsmo de anillos bi-


yectivo. Consideremos el homomorsmo

a + m1 . . . mr (a + m1 , . . . , a + mr ),

cuya inversa viene dada por

(a1 + m1 , . . . , ar + mr ) a1 1 M1 + + ar r Mr ,

donde M i = M/m i , con M = ri=1 m i y 1 = i m i + i M i es una


identidad de Bzout.

Se puede reinterpretar el Teorema Chino del resto en trmi-


nos de ecuaciones:

Teorema 10 Sean m1 , . . . , mr elementos de A, coprimos dos a dos.


Entonces el sistema de ecuaciones
x + m1 = a1 + m1
....................
x + mr = ar + mr
fundamentos 17

tiene solucin nica mdulo m1 mr .

Por algn motivo que no entiendo muy bien, no es frecuente


dar el Teorema Chino del Resto Generalizado8: 8
ystein Ore. The general chinese re-
mainder theorem. American Mathematical
Monthly, pages 365370, 1952
Teorema 11 Sean m1 , . . . , mr elementos de A. Entonces el sistema
de ecuaciones
x + m1 = a1 + m1
....................
x + mr = ar + mr

tiene solucin si y slo si

a i + d i j = a j + d i j , d i j = mcd(m i , m j ).

En este caso, la solucin es nica mdulo mcm(m1 , . . . , mr ). Ms an,


una solucin particular del sistema es
M M
x0 = a1 c1 + + ar cr ,
m1 mr
donde M = mcm(m1 , . . . , mr ), y los c i vienen dados por una identidad
de Bzout
M M
1 = c1 + + cr .
m1 mr

Congruencias
Denicin 20 Sean a, b y m 0 tres enteros. Diremos que a es
congruente con b mdulo m, y escribimos

a b (mod m),

si b a es divisible por m.

Es inmediato probar que

a b (mod m) a b (mod m),

y, en lo sucesivo, supondremos que m > 0. Por otro lado, la con-


gruencia se puede expresar de otras formas equivalentes:

a b (mod m) el resto de la divisin


de a y b por m coinciden
existe k Z tal que a = b + km.

Denicin 21 La relacin

a b a b (mod m)
18 teora de cdigos y criptografa

es de equivalencia. Llamaremos clase de congruencia de a mdulo m a la


clase de equivalencia de a, que denotamos a + Zm. El conjunto de todas las
clases de equivalencia mdulo m se denota Z/Zm.

Alternativamente, podramos haber denido la relacin


a b a b Zm, e identicar congruencias con clases del
grupo cociente Z/Zm.
Es claro que toda clase de equivalencia a + Zm tiene uno y
slo un representante a + Zm = r + Zm donde 0 r < m. De hecho,
r es el resto de la divisin de a por m. Por tanto,

Z/Zm = {0 + Zm, . . . , (m 1) + Zm}.

Cualquier conjunto de enteros que verique esta propiedad se


llama un conjunto completo de representantes (o de residuos) m-
dulo m. En esta situacin, muchas veces se abusa de la notacin
y se escribe r en lugar de r + Zm. De la misma forma, a veces se
escribe r = (a mod m).

Ejercicio 2 Sean a, b y m 0 enteros.

1. Si a b (mod m), entonces a b (mod d) para cualquier


divisor d de m.

2. Si a b (mod m) y a b (mod n), con m y n coprimos,


entonces a b (mod mn).

3. Ms generalmente, Si a b (mod m) y a b (mod n),


entonces a b (mod mcm(m, n)).

4. Si a b (mod m), entonces mcd(a, m) = mcd(b, m).

Proposicin 8 La ecuacin

ax b (mod m)

tiene solucin entera si y slo si d = mcd(a, m) divide a b. En este


caso, las soluciones son
m b
x0 + k, k = 0, . . . , d 1, x0 = , con d = a + m.
d d
Demostracin. No es ms que releer la demostracin de la
Proposicin 7.

Corolario 3 Las unidades del anillo Z/Zm son exactamente


las clases a + Zm con mcd(a, b) = 1. El grupo multiplicativo de las
fundamentos 19

unidades de Z/Zm, que denotamos U m = (Z/Zm) , tiene cardinal


igual al conjunto de los enteros 0 a < m tales que mcd(a, m) = 1,
denotado (m).

Corolario 4 El anillo Z/Zm es un cuerpo si y slo si m es


primo.

Ya hemos encontrado la funcin antes, al hablar de la


Frmula de Euler (Teorema 3); pero es aqu donde veremos sus
propiedades.

Corolario 5 La funcin verica las siguientes propiedades

1. Si p es primo, (p) = p 1.

2. Si p es primo, (pn ) = pn pn1 = pn (1 1/p).

3. Si m y n son coprimos, (mn) = (m)(n).

4. Si n = p1n1 . . . pnr r es la descomposicin en factores primos


de n, entonces
1 1
(n) = n(1 ) . . . (1 ).
p1 pr

Demostracin. La nica dicultad est en probar 3. Del


Teorema Chino del Resto sabemos que los anillos Z/Zmn y
(Z/Zm) (Z/Zn) son isomorfos. Es inmediato que un isomormo
lleva unidades en unidades, de forma que U mn , el conjunto de las
unidades de Z/Zmn es biyectivo con el conjunto de las unidades
del anillo (Z/Zm) (Z/Zn), que es U m U n .

Teorema 12 (Teorema Pequeo de Fermat) Si p es primo y


a un entero arbitrario,

a p a (mod p).

Ms an, si p a, entonces

a p1 1 (mod p).

En realidad, el Pequeo Teorema de Fermat es un corolario


del Teorema de Euler:

Teorema 13 (Teorema de Euler) Sea a + Zm una unidad


de Z/Zm. Entonces

a (m) 1 (mod m).


20 teora de cdigos y criptografa

Demostracin. La demostracin corta es: si a + Zm U m , por


el Teorema de Lagrange su orden es un divisor de card U m = (n).
La demostracin larga es ver que los conjuntos U m y (a + Zm ) U m
son biyectivos, y por tanto,
(m) (m)
(u i + Zm ) = (au i + Zm ),
i=1 i=1

de donde se sigue que a (m) + Zm = 1 + Zm .

Cuerpos nitos
Esta seccin se puede resumir en el Teorema de Clasica-
cin de los Cuerpos Finitos. Antes de probar el Teorema, debe-
mos determinar y denir un concepto importante.

Denicin 22 Sea k un cuerpo. Denimos el homomorsmo de


anillos

ch Z k
1 z 1k

Por el Primer Teorema de Isomorfa, existe un n Z tal que


ker(ch) = Zn, y Z/Zn img(ch) k. Este n puede ser 0 o no.
Si n = 0, k contiene una copia de Z (y por tanto de Q, ya que
es un cuerpo). Si no, como Z/Zn debe ser un dominio, ha de ser
n primo (llamemos n = p), luego k contiene una copia de algn
F p . En el primer caso se dice que k es de caracterstica 0, y en el
segundo, de caracterstica p.
En cuerpos de caracterstica positiva pasan cosas raras.

Lema 4 Sea F un cuerpo de caracterstica p. Entonces


p
( ) = 0, 1 r p 1.
r
Corolario 6 Para todo par de elementos a y b de un cuerpo
de caracterstica p,

(a + b) p a p + b p .

Ms generalmente,
r r r
(a + b) p a p + b p , para todo r 1.

Teorema 14 (de Clasicacin de Cuerpos Finitos I) Sea


F un cuerpo nito. Entonces existe un primo p Z tal que F = p . Todo
r
fundamentos 21

cuerpo con pr elementos es isomorfo a F (como grupo abeliano). Cualquier


elemento de esta familia de cuerpos isomorfos se denota F pr .

Demostracin. Al ser F un cuerpo nito, ha de tener carac-


terstica p, por lo que contiene a F p . Por tanto, es un F p -espacio
vectorial, necesariamente de dimensin nita, luego es isomorfo a
Frp , para cierto r N y F = pr .
Si tenemos un cuerpo con pr elementos, es claro que ha de
ser de caracterstica p. Eso implica que ha de ser un F p -espacio
vectorial de dimensin r, luego es isomorfo a F (como espacio
vectorial y por tanto como grupo abeliano).

En la prctica, para hacer clculos con cuerpos nitos, nece-


sitamos una representacin de Fq que sea manejable. Una primera
opcin 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 . Esto permite fcilmente sumar elementos, pero no multi-
plicar porque la estructura de espacio vectorial no es compatible
con la del producto.
Una segunda opcin es la representacin polinomial, que pro-
viene directamente de la Teora de Galois9. En efecto, podemos 9
Que nuestros alumnos recuerdan
perfectamente
considerar el cuerpo Fq dado por

Fq F p [X]/ f (X).

donde f (X) es un polinomio irreducible de grado r.


Con esto, todo elemento de Fq se puede ver como un poli-
nomio de F p [X] de grado menor que r, y las operaciones de suma
y producto son las usuales de polinomios mdulo f (X). O, equi-
valentemente, como un polinomio en de grado menor o igual
que r, teniendo en cuenta que f () = 0 a la hora de operar. Esta
representacin es la que usaremos habitualmente.

Ejemplo 10 Veamos una construccin de F8 (por poner).


En primer lugar, elegimos un polinomio de grado 3 irreducible
sobre F8 , digamos f (X) = X 3 + X + 1. La lista completa de los
elementos de F8 es

F8 = {0, 1, , + 1, 2 , 2 + 1, 2 + , 2 + + 1},

donde es la clase de X + X 3 + X + 1. La aritmtica de F8 es la


aritmtica usual de polinomios mdulo X 3 + X + 1, o la arimtica
en F2 [] con la condicin 3 + + 1 = 0. La tabla completa de
multiplicar de (F8 ) se muestra en la Tabla 1.
22 teora de cdigos y criptografa

Tabla 1.1: Tabla de multiplicar de (F8 ) ,


representado como la extensin algebrai-
ca F2 [], con 3 + + 1 = 0.
Mucho ms compleja es la segunda parte del Teorema.

Teorema 15 (de Clasicacin de Cuerpos Finitos II)


Dado un primo p y un entero r > 0 existe siempre un cuerpo F tal que
F = pr . Dos de tales cuerpos son siempre isomorfos (como cuerpos).

Demostracin. Notemos, por abreviar q = pr , y consideremos


el polinomio X q X F p [X]. Claramente 0 es raz del polinomio,
y si tomamos a Fp , tenemos

= a [(p1)(p
r 1 r1 +p r2 ++1)]
a q1 = a p = 1,

dado que a p1 = 1, por el Pequeo Teorema de Fermat. Por tan-


to, si consideramos F, el conjunto de races de X q X en una
extensin de F p , tendremos que F p F. Adems, dadas dos
races , F es inmediato (aunque aburrido) comprobar que
+ , F, utilizando intensivamente que, en caracterstica p,
s s s
( + ) p = p + p .

Por tanto el conjunto F es un cuerpo que, adems, contiene


exactamente q elementos como buscbamos.
Adems, se tiene que dos cuerpos de q elementos son cuer-
pos de descomposicin de un mismo polinomio de F p [X], con
lo cual son isomorfos por un resultado general de Teora de Ga-
10
No parece tan complicado, verdad? lois0.
Podras localizar dnde hemos usado un
argumento no justicado?
Teorema 16 Dado un cuerpo nito Fq , el grupo de las unidades
(Fq , ) es un grupo cclico.

Demostracin. Dado un elemento x Fq , denotamos

o(x) = min{n x n = 1},

y observemos que o(x) siempre es un nmero entre 0 y q 1.


Consideremos entonces

n = mcm{o(x) x Fq } = p11 ...pr r .

La factorizacin nos indica que existen elementos x1 , , xr



tales que o(x i ) = i pi i , lo que implica que o(x i i ) = pi i , y, por
tanto

o(x1 1 . . . xr r ) = p11 . . . pr r = n,
fundamentos 23

por lo que basta demostrar que n = q 1 para probar el resultado.


Por un lado, es claro que n q 1, ya que hay un elemento de
orden n. Pero adems, por denicin de n se tiene que

x n = 1, para todo x Fq ,

con lo que el polinomio X n 1 Fq [X] tiene, al menos q 1 races


y por tanto n q 1.

Hay una demostracin alternativa que no es constructiva


pero que usa la Frmula de Euler.

Otra demostracin. Sea d un divisor de q 1, y supongamos


que existe un elemento a Fq de orden d.
Por el Ejercicio 1,
d
o(a k ) = ,
mcd(d, k)
luego existen otros (d) elementos de orden d. Naturalmente,
todos los a k con mcd(d, k) > 1 tendrn orden un divisor de d. As,
tenemos que existen al menos d elementos de orden d o divisor
de d.
Ahora bien, stos son todos los elementos de orden d o divi-
sor de d en Fq , porque todo elemento de orden d o divisor de d es
una raz del polinomio X d 1, que ya tiene d races distintas, que
son las potencias de a, luego no pueden existir ms elementos de
orden d o divisor de d.
Por tanto, concluimos que para cada divisor d de q 1, bien
existen exactamente (d) elementos de orden d, bien no existe
ninguno. Por la frmula de Euler,

(d) = q 1 = card(Fq ),
d(q1)

luego no puede ocurrir que para algn divisor d de q 1 no existan


elementos de orden d.

Denicin 23 Un elemento x Fq que genere Fq como grupo cclico


multiplicativo se denomina un elemento primitivo de Fq .

Para aqullos que recuerden otro concepto de elemento


primitivo (proveniente de la Teora de Galois), les traemos un
resultado tranquilizador.

Proposicin 9 Sea Fq un elemento primitivo. Entonces


Fq = F p [].
24 teora de cdigos y criptografa

Demostracin. Directa: si generase un subcuerpo de la


extensin F p Fq , no podra ser o() = q 1.

El recproco de la Proposicin 9 no es cierto; es decir, un


elemento primitivo de la extensin no es necesariamente un ele-
mento primitivo del grupo Fq .

Ejemplo 11 Consideremos el cuerpo F9 , dado por la exten-


sin de Galois F3 [], con 2 + 1 = 0. Como es inmediato, se
verica que

1 = , 2 = 2, 3 = 2, 4 = 1,

de donde deducimos que el orden de es 4, y por tanto, no pue-


de ser un generador de (F9 ) , que tiene 8 elementos. Hay, sin
embargo (8) = 4 generadores, 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 representacin de


Fq llamada representacin logartmica: supongamos que Fq es un
elemento primitivo. Entonces todo x Fq es necesariamente de la
forma x = s para cierto s {0, . . . , q 1}, e identicamos x con s.
Esta representacin funciona muy bien con el producto, como es
obvio. No es tan sencillo, sin embargo, obtener frmulas simples
para la suma.
Una opcin ms sosticada es considerar la representacin
matricial de Fq . La idea es la siguiente: consideremos un elemento
primitivo Fq , sea f (X) = a0 + a1 X + + ar1 X r1 + X r su
polinomio mnimo sobre F p , y consideremos la matriz compaera
de f (X),

0 0 0 a0

a1
1 0 0

M f = 0 1 0 a 2


. . . . . . . . . . . . . . . . . . . .

0 0 1 ar1

Tomemos ahora la base B = {1, , . . . , r1 } de Fq como F p -


espacio vectorial. En esta situacin, la matriz M f es la matriz
fundamentos 25

respecto de B del endomorsmo de F p -espacios vectoriales

Fq Fq
,
z

y el polinomio caracterstico de M f es (sorpresa!), f (X).


Por el Teorema de Hamilton-Cayley, tenemos que f (M f ) =
0, lo que nos dice que existe un isomorsmo entre Fq y F p [M f ],
el subanillo del anillo Mrr (F p ) de las matrices con cocientes
en F p generado por M f . Por tanto, tambin podemos asociar
cada elemento de Fq con una expresin polinmica en M f con
coecientes en F p y grado estrictamente menor que r. La ventaja
ahora es que las reglas de la suma y el producto son las reglas
usuales del lgebra matricial, y que todas las entradas de M f son
enteros mdulo p.

Complejidad de algoritmos
Antes de dar las deniciones formales, vamos a comenzar Its complicated

por analizar un problema concreto: supongamos que queremos Facebook relationship status

poner a un ordenador a calcular los nmeros de Fibonacci. Los 11


Fibonacci se llamaba en realidad
Leonardo Bonacci, aunque tambin
nmeros de Fibonacci estn denidos por la relacin de recurren- se le conoce como Leonardo de Pisa,
cia Leonardo Pisano o Leonardo Bigollo.
Entre otras cosas, populariz el uso de
F0 = 0 los dgitos indoarbigos en Occidente
con su libro Liber Abaci.
F1 = 1
Fn = Fn1 + Fn2 , n > 1.

Vamos a usar sage/python para implementar dos soluciones.


La primera es ms o menos evidente; es simplemente la traduc-
cin a sage/python de la denicin:

def fib1(n):

if n<2:

return n

else:

return fib1(n-1)+fib1(n-2)

Veamos ahora un clculo de los primeros valores de la funcin


fib1:

valores=range(0,10)

[fib1(n) for n in valores]

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]


26 teora de cdigos y criptografa

Pero en realidad, no es as como uno calcula los nmeros de


Fibonacci usando papel y lpiz. Lo que se hace a mano es empezar
desde F0 , llevando un registro de los dos ltimos nmeros.
Esta idea es el germen de nuestra siguiente versin, en la
que usamos dos variables temporales para guardar los dos ltimos
nmeros de Fibonacci calculados. El orden de asignacin de las
variables es importante.

def fib2(n):

i=1

j=0

for k in range(1,n+1):

t=i+j

i=j

j=t

return j

Naturalmente, da los mismos valores que antes:

valores=range(0,10)

[fib2(n) for n in valores]

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

Puesto que dan los mismos valores, merece la pena tomarse el


trabajo de pensar algoritmos nuevos?
Vamos a hacer otra prueba, pero esta vez vamos adems a
cronometrar nuestros clculos. Tambin usaremos una lista de
valores ms complicada: queremos calcular Fn para n = 0, 5, . . . , 40.
Esto nos dar una mejor idea de la diferencia entre algoritmos, si
es que la hay.

tests=range(0,41,5)

Cronometramos la primera versin:

%time [fib1(n) for n in tests]

CPU times: user 2min 52s, sys: 2.33 s, total: 2min 55s

Wall time: 2min 53s

[0, 5, 55, 610, 6765, 75025, 832040, 9227465, 102334155]

Casi tres (interminables) minutos. Si ahora cronometramos la


segunda versin, tenemos:

%time [fib2(n) for n in tests]

CPU times: user 68 s, sys: 23 s, total: 91 s


fundamentos 27

Wall time: 79.9 s

[0, 5, 55, 610, 6765, 75025, 832040, 9227465, 102334155]

que tarda 62 microsegundos! Qu est pasando aqu? Por qu


una forma de calcularla es varios rdenes de magnitud ms lenta
que la otra? Qu brujera es sta?

The Transformers Dinobots Island II,


Temporada 2, Episodio 4
vamos a analizar qu pasa en el primer algoritmo. En esen-
cia, lo que tarde un algoritmo depende de cuntos clculos nece-
site hacer. Vamos a llamar c1 (n) al nmero de operaciones que 12
Esto no es exacto; una implementacin
de un algoritmo depende tambin de
realiza la funcin fib1(n), y c2 (n) al entero anlogo para fib2(n). detalles tcnicos tales como el coste
de invocar una funcin, el coste de
Cunto vale c1 (n)? Para n = 0 o n = 1, la funcin fib1 sim- mantener la pila de funciones, etc. Pero,
plemente tiene que calcular si n < 2, es decir, una comprobacin. asintticamente, el valor que cuenta ms
es el nmero de operaciones elementales, que
Para n > 1, primero hay que calcular Fn1 , luego Fn2 , y luego se dene ms adelante.

sumar esos dos enteros, de forma que

c1 (0) = 1, c1 (0) = 1, c1 (n) = c1 (n 2) + c1 (n 1) + 1.

La funcin fib2, que en apariencia es ms complicada, hace dos


asignaciones en todos los casos, y dos asignaciones y una suma por
cada valor entre 1 y n. As, tenemos

c2 (n) = 2 + 3n.

No vamos a entrar en detalle, pero se puede calcular una expre-


sin cerrada para c1 (n), aunque lo esencial es que

c1 (n) 2n .

Claro, para valores grandes de n, digamos n = 100, la diferencia


es brutal:
c1 (100) 1267650600228229401496703205376 operaciones
c2 (100) = 302 operaciones.

Para hacernos una idea ms clara, en un ordenador Intel Core i7,


que calcula a razn de 128 millones de operaciones por segundo,
calular F1000 usando la funcin fib2 tardara 15 millonsimas de
segundo, mientras que si usamos la funcin fib1, tardara aproxi-
madamente 314 billones de aos. 13
Billones espaoles, 1012 .

en muchas ocasiones, contar exactamente el nmero de opera-


ciones de un algoritmo puede ser muy complicado, motivo por el
cual se suele simplicar el problema de la siguiente forma:
28 teora de cdigos y criptografa

1. En primer lugar, se cuentan slo las operaciones del peor


caso posible.

2. En segundo lugar, con frecuencia estaremos slo interesados


en el comportamiento asinttico de un algoritmo.

La funcin que cuenta el nmero de operaciones que debe reali-


zar un algoritmo (en funcin de los datos de entrada) se llama la
complejidad del algoritmo. Vamos a introducir una herramienta
formal, conveniente para analizar las estimaciones de complejidad
(o de nmero de operaciones, o de tiempo).
La idea fundamental de la teora de la complejidad es poder
dar una estimacin del tiempo que va a tardar en completarse un
algoritmo. Esta estimacin se realiza, esencialmente, contando
operaciones elementales. En su forma ms estricta, una operacin
elemental es una suma de bits. Esto es

0 + 0 = 0, 1 + 0 = 1, 0 + 1 = 1, 1 + 1 = 10

Por este motivo, es habitual trabajar en base 2 cuando tra-


tamos con asuntos de complejidad. A la hora de manejar estas
estimaciones temporales debemos tener en cuenta, obviamente, la
magnitud de los datos iniciales del problema. No es lo mismo

1+1

que

101010101010101010101011111111010010101010101
+ 101100111000000000111101010101011010101010101.

Por ello se suele adoptar, en el contexto de la computacin


con nmeros enteros, una medida del tamao de los datos que no
es sino el nmero de cifras. O, lo que es lo mismo, dado x Z,

[log2 (x)] + 1,

aunque en la prctica se suele tomar simplemente [log2 (x)].


A la hora de contar operaciones, sin embargo, no podemos
garantizar (salvo en casos muy especiales) que nuestro algoritmo
sea el mejor posible para realizar el clculo deseado. En realidad, al
dar un algoritmo estamos dando una cota superior para el nmero
de operaciones que se necesitan. En estas condiciones es habitual
utilizar la siguiente notacin:
fundamentos 29

Denicin 24 Sean f y g funciones N R0 . Diremos que f es


del orden de g, notado f = O(g), si existe una constante positiva C tal que
f (n) < C g(n) para todo n N con n n0 . En otras palabras,
f (n)
f = O(g) lim R>0 .
n g(n)
En esta situacin, se dir que f es de orden g.

Otras notaciones relacionadas con sta y utilizadas, sobre


todo en textos no demasiado modernos, son
f
f = o(g) lim = 0,
x g
f
f g lim = 1.
x g

Ejemplo 12 Con las funciones de los ejemplos anteriores,

c1 = O(2n ) c2 = O(n).

En la Tabla 1 se representan algunos de los nombres de las


funciones de complejidad ms habituales, y un ejemplo de las
estimaciones de tiempo

tiempos para
lgoritmos
Nombre O( f ) Tiempo
Constante O(1) 1s
Logartmico O(log(n)) 3s
Lineal O(n) 1ms
Polinomial O(n k ) 1s (para k = 2)
1/2
Subexponencial 2o(n) 55s (para 2n .)
Exponencial 2O(n) 40 1015 aos
O(n)
Doble exponencial 22 Hasta que vuelvan los Valar

Tiempo aproximado para n = 1000, a razn de 106 operaciones por segundo.

Ejemplo 13 Vamos a calcular la complejidad de sumar dos


enteros de k y l cifras (binarias) por el algoritmo habitual.
Supongamos que tenemos dos enteros, a y b, de k y l ci-
fras binarias, y vamos a sumarlos por el procedimiento habitual.
Observamos en primer lugar que por el procedimiento habitual,
da igual si k y l son diferentes; slo importa la longitud del ms
grande. Por ejemplo, si l k, podramos tener

1010 . . . 10110 k cifras


0001 . . . 10111 l cifras.
30 teora de cdigos y criptografa

Ahora podemos sumar, empezando por la derecha4: 14


Y con llevad

0 1 1 1 ... 1 1 1 1 0
1010 . . . 10110
0001 . . . 10111
1100 . . . 11111
Al acabar, si la ltima llevada es un 1, entonces la suma tiene k + 1
cifras; de lo contrario, tiene k cifras. La cuestin es: Cuntas
operaciones elementales hay que realizar?
Tal vez sea ms fcil contar el nmero de operaciones del
peor caso usando el algoritmo directamente. Supongamos que a y
b vienen dado como dos listas de k cifras, y pongamos:

a=[a_0, a_1, ..., a_k-1]

b=[b_0, b_1, ..., b_k-1]

suma(a,b):

llevada = 0

para cada i = 0, 1, ..., k-1:

si a[i]==0 and b[i]==0:

c[i] = llevada

llevada = 0

si no, 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, debemos contar siempre


el peor caso posible. En nuestra situacin, eso quiere decir:

1. Una asignacin (llevada = 0)

2. k iteraciones de:

(a) 8 comprobaciones
(b) 7 asignaciones
fundamentos 31

3. Una comprobacin y una asignacin al nal.

Si contamos las comprobaciones y asignaciones como operaciones


elementales, tendremos 15k + 3 operaciones elementales en total.
Pero esto quiere decir que

complejidad de sumar a y b = O(15k + 3) = O(k).

Al nal del ejemplo hemos hecho un poco de trampa, usan-


do que

15k + 3 = O(k).

La siguiente proposicin permite simplicar los clculos de las


complejidades, o, en otras palabras, podemos hacer muchas ms
trampas: Sorry guys, looks like you dont get to see
my party trick after all.

Proposicin 10 Se verican las siguientes propiedades: The Hulk Marvels The Avengers

1. Si f1 = O(g1 ) y f2 = O(g2 ), entonces f1 f2 O(g1 g2 ).

2. f O(g) O( f g).

3. Si f = O(g), para todo k R+ , k f = O(g).

4. Si f = O(g), para todo k R+ , f = O(kg).

5. Si f1 , f2 = O(g), entonces f1 + f2 = O(g).

Un nmero es un nmero es un nmero

Supongamos por un momento que los profesores de esta


asignatura son aliengenas. Ms an, que son aliengenas con
siete apndices que llamaremos dedos, por el momento. Y que
queremos hablar de matemticas.
El primer problema que vamos a tener para entendernos,
es hablar de nmeros, porque nosotros, los aliengenas de siete
dedos, contamos de forma diferente. Nuestros siete primeros
nmeros van as:

0, 1, 2, 3, 4, 5, 6.

Tras muchas discusiones y mucho mover los dedos, llegamos a la


conclusin de que lo que nosotros llamamos 0, los humanos5 15
Hemos llegado a la Tierra en un pas
que usa los dgitos 0 a 9.
lo llaman 0, y que lo que nosotros llamamos 1, los humanos lo
llaman 1. Ahora sabemos que 2 = 2, 3 = 3, 4 = 4, 5 = 5 y 6 = 6.
Y a continuacin? Nuestro siguiente nmero es 10, mientras
32 teora de cdigos y criptografa

que el siguiente nmero humano es 7. Sin embargo, un nmero


es un nmero en la Tierra y en nuestro planeta natal Ursa Minor
16
En este planeta siempre es sbado por Beta6. El nmero que los humanos llaman 7 es el cardinal de un
la tarde.
conjunto cualquiera de siete cosas, igual que en umb.
Lo que cambia, entre la Tierra y umb es la representacin de
17
En este momento, los profesores los nmeros. Los nmeros que usamos7 a diario son en realidad
volvemos a ser humanos.
bastante sosticados. Normalmente, usamos un sistema de nume-
racin posicional de base 10, donde

365,242 = 3 103 + 6 102 + 5 10 + 2 101 + 4 102 + 2 103 .

18
Nosotros consideraremos slo el En general, un sistema posicional de numeracin8 de base b
caso en que b sea natural; pero existen
sistemas de numeracin donde b no es
se dene por la regla
positivo. Ni siquiera entero. Ni real.
(. . . a3 a2 a1 a0 .a1 a2 . . . )b
= + a3 b3 + a2 b2 + a1 b1 + a0 + a1 b1 + a2 b2 + ,

donde b es un entero mayor que 1 y se verica 0 a k < b. El pun-


19
En espaol se usa una coma decimal, to que aparece entre a0 y a1 se llama el punto decimal9. Cuando
pero los ordenadores usan el punto. Para
esta seccin, para evitar confusin, voy a
b = 10, no se suelen escribir los parntesis ni la base. Los naturales
usar tambin un punto. a i se llaman los dgitos del nmero.
Nuestro sistema de numeracin, claro, tiene b = 10 y los
dgitos a i son 0, 1, 2, 3, 4, 5, 6, 7, 8, y 9. Pero esta eleccin no tiene
20
Nuestro sistema de numeracin es nada de especial0, y se pueden usar muchas otras elecciones de
decimal porque la mayora de nosotros
tenemos 10 dedos, sin contar a Frodo
bases y dgitos.
Nuevededos.
La representacin no es perfecta; por ejemplo, en el sistema
decimal hay ms de una forma de escribir el 1:

1 = 0,9999 . . .

En el sistema binario se toma b = 2 y los dgitos son 0 y 1. En


el sistema hexadecimal, se toma b = 16 y los dgitos son

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

As, por ejemplo, se tiene que

(143)10 = (10001111)2 = (8F)16 ,

y un poco ms complicado,

(6,25)10 = (110.01)2 = (6.4)16 .

Proposicin 11 Sea b un natural mayor que 1, y a un entero


no negativo. Entonces, existe una nica representacin de a en
fundamentos 33

base b de la forma

a = (a k . . . a0 )b .

Antes de pasar a la demostracin, conviene aclarar algo


acerca de la unicidad: la representacin de a en base b no es, en
general nica, porque, si a0 0, podemos escribir c0 = a0 1, y
c = b 1, para i 1, de forma que

a = (a k . . . a0 )b = (a k . . . a1 c0 .ccccc . . . )b .

En el caso en que a0 = 0, tambin existe una expresin similar,


aunque un poco ms compleja. La unicidad de la Proposicin se
reere, por tanto, a las representaciones enteras nitas.

Demostracin. Consideremos las divisiones eucldeas sucesi-


vas,

a = q0 b + r0
q0 = q1 b + r1
q1 = q2 b + r2
............
En esta situacin, se tiene que q i+1 < q i , porque si fuera q i+1 q i ,
como b > 1 y r i+1 0, se tendra q i = q i+1 b + r i+1 > q i , lo que no
es posible. Como adems los cocientes son positivos existe un k a
partir del cual q k+ j = 0 para todo j 0. Es decir, podemos escribir

a = q0 b + r0
q0 = q1 b + r1
q1 = q2 b + r2
...............
q k1 = 0 b + r k

donde 0 r i < b. Usando sucesivamente las igualdades, 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
........................................
= r0 + r1 b + r2 b2 + + r k1 b k1 + r k b k
= (r k . . . r0 )b .

La unicidad es ms sencilla. Si

a = (a k . . . a0 )b = (c t . . . c0 )b ,
34 teora de cdigos y criptografa

son dos expresiones enteras nitas, entonces

a a0 (mod b)
c0 (mod b),

y como 0 a0 , c0 < b, tiene que ser a0 = c0 . Si ahora consideramos


(a a0 )/b, obtenemos

(a a0 )/b = (a k . . . a1 )b = (c t . . . c1 )b ,

y por recurrencia se tiene que t = k y que a j = c j para 0 j k.

Denicin 25 Si a = (a k , . . . , a0 )b , los enteros a i se llaman los


dgitos de la representacin; el dgito a k se llama el dgito ms signicativo
y el a0 el dgito menos signicativo.

Observacin 5 Aunque en general consideraremos represen-


taciones a = (a k , . . . , a0 )b con a k 0, a veces conviene agrupar los
dgitos en bloques de longitud ja, y se rellenan con los ceros que
haga falta a la izquierda.

El caso tpico es considerar nmeros binarios agrupados en


bloque de 8 dgitos, donde 101 se representara (01100101)2 . De la
misma forma, 42 = (00101010)2
Tras toda esta discusin, queda claro que los aliengenas de
umb, en realidad, estn usando una representacin en base b = 7, y
por tanto, 42 = 60.

Ejercicios
Ejercicio 1.1. Halla todos los posibles grupos abelianos de 40
elementos.

Ejercicio 1.2. Halla todos los grupos abelianos de orden 60 que:

1. Contengan un grupo cclico de orden 6.

2. No contengan un grupo cclico de orden 4.

Ejercicio 1.3. Sea A un dominio eucldeo, I = x A un ideal.


Demuestra que

A/I es dominio A/I es cuerpo x es irreducible.

Ejercicio 1.4. Halla un polinomio f (X) F5 [X] que verique:

deg( f ) = 6.
fundamentos 35

Su resto al dividir entre X 2 + 2 es X + 1.

f (2) = 4.

Ejercicio 1.5. Prueba que las siguientes condiciones son equiva-


lentes:

Existe un inverso multiplicativo de a + Zn, esto es, existe


b Z tal que

(a + Zn)(b + Zn) = 1 + Zn.

mcd(a, n) = 1.

Ejercicio 1.6. Demuestra el Teorema de Wilson:

p es primo (p 1)! 1 (mod p).

Ejercicio 1.7. Sea N Z del cual conocemos (N) y tambin


que es producto de dos primos. Dar un procedimiento para hallar
la factorizacin de N.

Ejercicio 1.8. Sea m Z. Demuestra que

card{n Z (n) = m} < .

Ejercicio 1.9. Demuestra que, para todo n Z0 , 30(n5 n).

Ejercicio 1.10. Usando el Pequeo Teorema de Fermat, da un


polinomio de F p [X] sin races en F p .

Ejercicio 1.11. Construye explcitamente F4 y da sus elementos


en forma matricial.

Ejercicio 1.12. Construye explcitamente F9 y da sus elementos


en forma logartmica y matricial.

Ejercicio 1.13. Representando F9 como F3 [], donde verica


2 + 1 = 0, discute, en funcin del parmetro a, la existencia de
soluciones del siguiente sistema, y hllalas cuando existan:


( + 2)X + (2 + 1)Y = 2


aX + ( + 1)Y = 0

Ejercicio 1.14. Responder las siguientes cuestiones:

1. En el F5 -espacio vectorial F35 , determina si los siguientes


elementos son linealmente independientes o no:

(1, 4, 2), (3, 3, 1), (4, 0, 4), (1, 4, 1), (3, 3, 3), (4, 0, 4)
36 teora de cdigos y criptografa

2. Se considera el cuerpo F49 = F7 [x]/ (x 2 + 2x + 2), donde


expresaremos los elementos de forma matricial. En el F49 -
espacio vectorial F249 , estudia si

(2M f , M f + 1) = (2M f + 5, 5M f + 1).

Ejercicio 1.15. Sea n Z. Demuestra que convertir n a notacin


binaria tiene una complejidad O(log2 n).

Ejercicio 1.16. Sean a, n, m Z0 . Halla la complejidad de


n
calcular a 2 mod m y a 2 mod m.

Ejercicio 1.17. Sean a, n, m Z0 .

1. Halla la complejidad de calcular a n mod m por el mtodo


que parezca ms simple.

2. Halla la complejidad de calcular a n mod m por un mtodo


que comience calculando la expresin binaria de n.

Ejercicio 1.18. Sean a, b Z, con a > b.

1. Prueba que la divisin eucldea de a entre b (esto es, hallar


cociente y resto) tiene complejidad O(log2 a).

2. Prueba que hallar mcd(a, b) usando el algoritmo de Euclides


tiene complejidad O(log3 a).

3. Prueba que hallar los coecientes de la Identidad de Bezout


tiene complejidad O(log3 a).

Ejercicio 1.19. Sea n Z. Probar que calcular n! tiene compleji-


dad O(n2 log2 n).

Ejercicio 1.20. Calcula la complejidad de resolver un sistema de


congruencias por el Teorema Chino del Resto.
CDIGOS
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 supercie del planeta Plutn, y recogi unos 1
A veces Plutn es un planeta, y a veces
no.
6.25 Gb de datos en un par de discos duros (endurecidos para
radiacin) de 32Gb. Despus, pas algunos meses mandando
datos de vuelta a razn de unos 38 kbit/s, hasta Octubre de 2016.

Sonda New Horizons

Jpiter

Tierra Plutn

Figura 2.1: El viaje de la sonda New


Horizons. En este representacin, las
distancias entre los planetas son pro-
porcionales a las distancias reales, pero
La New
los planetas estn Horizons noLatiene una pila elctrica innita; sino que
a escala 2000x.
imagen de la sonda no est a escala. Tras
obtiene
la asistenciasu energa de
gravitacional algo llamado
de Jpiter, la un rtg. Un rtg, o generador
New Horizons lleg a Plutn tras 10 aos
trmico de radioistopos, es, en esencia, una lata de Plutonio 238,
de viaje, en los que recorri 4,76 mil
calientedepor
millones km. la desintegracin radioactiva, unido a una termocupla

para generar electricidad, que permite dedicar unos 24 vatios de


potencia a las antenas de transmisin de datos de la New Horizons. As with most of lifes 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 cmo recuperar la informacin
que enva un artefacto del tamao de una moto grande, con la po-
tencia de una bombilla domstica pequea, a 6.000 millones de
kilmetros.
Parte de la solucin es el cdigo corrector de errores que
lleva incorporada la programacin de la New Horizons. En las
transmisiones, usa un turbo cdigo BPSK de ratio 1/6, que es un cdi-
38 teora de cdigos y criptografa

go corrector diseado en los aos 90 del siglo xx, y que permite


maximizar los datos por potencia de transmisin.
Nosotros no veremos cdigos tan especcos en esta asigna-
tura; pero s que introduciremos los conceptos bsicos de la teora
de cdigos 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 Amys Choice empezar por las deniciones bsicas.
Doctor Who 5.7

Cdigos correctores y cdigos detectores

Denicin 26 Un alfabeto A es un conjunto no vaco de smbolos,


sin signicado individual. Una palabra de cdigo de n caracteres, o un
bloque de cdigo longitud n es un elemento de An . Un cdigo es un
conjunto no vaco de palabras, es decir es un C An .
Dado un cdigo C An , se llama longitud del cdigo al entero n, y
tamao del cdigo al entero C.

ascii signica American Standard Code for Ejemplo 14 El cdigo ascii evolucion a partir de un cdigo
Information Interchange. Debido a que slo
anterior, llamado el cdigo de la cinta de papel, que consista en un
tena espacio para 127 caracteres, muchos
fabricantes de hardware y software am- cdigo en bloque de 8 caracteres binarios. Esto es, A = {0, 1} = F2
pliaron de forma no estndar el cdigo
y C = A8 = F82 , que se construa de la siguiente forma:
ascii. Esto ha causado mucho dolor, ira
y confusin. Pero no es comparable al su-
frimiento que ha causado el otro sistema 1. Los enteros 0, 1, , 127 se codicaban en binario, usando
similar, el ebcdic. Hoy da hay un cdigo
7 bits, es decir, (0000000)2 a (1111111)2 .
ms general, el estndar unicode, y la
codicacin 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 n_de_lnea o tabulacin_horizontal.
Tambin se reservaba la palabra 127 = (1111111)2 , con signi-
cado carcter 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 cdigos distintos. La de la
4. A cada palabra de 7 bits se le aada a la izquierda, una cifra
izquierda corresponde a un cdigo de que consista en la suma (mdulo 2) de las 7 primeras cifras
5 bits, y la de la derecha a un cdigo de
8 = 7 + 1 bits, como se describe en el
binarias. Esto se denominaba clsicamente bit de paridad.
texto. Imagen en dominio pblico.
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 corresponda al decimal 97, es decir,

a 97 (1100001)2 Cdigo a = 11000011.


cdigos correctores de errores 39

Es sencillo ver que si en el cdigo de la cinta de papel comete-


mos un error al copiar o transmitir un carcter (es decir, un error
en 8 bits), ese error se detectar por la presencia del bit de pari-
dad. Es un ejemplo rudimentario de deteccin de errores, esto es, Pero quin se da cuenta de sus yerros?

cmo el aadir informacin redundante a las palabras de un cdigo puede Salmo 19 13

resultar til ante la presencia de errores en la transmisin.

En la Tabla 2 representamos el cdigo 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 denir una mtrica en el sentido decimal y binaria (en 7 bits). El carcter
32 es el espacio entre palabras y el 127 el
usual del trmino, que nos permite dotar al conjunto de una topo- carcter DEL.
loga que nos ser de utilidad.

Denicin 27 Denimos la mtrica o distancia de Hamming en An


como
d An An R0
(x, v) z card{i x i v i , i = 1, . . . , n}

esto es, d(x, v) mide el nmero de coordenadas distintas de x y v. Para el caso ms frecuente, cuando A =
F2 , podemos denir equivalentemente

Ejemplo 15 Consideremos A = F3 , y C = F33 . En esta situa-


n
d(x, v) = x i v i .
i=1
cin,

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)}.
40 teora de cdigos y criptografa

Ejercicio 3 Demuestra que la distancia de Hamming es una


distancia, en el sentido topolgico.

Estrategias de correccin

El problema que intentamos resolver con los cdigos correc-


tores de errores es el siguiente: supongamos dos usuarios, Alice
y Bob, que usan un canal de comunicacininternet, telefona
mvil, etc. Alice quiere transmitir una cierta informacin a Bob,
y supondremos que la informacin viene dada por una (o ms)
palabras de un cdigo x C.
En la operacin de transmisin pueden producirse erro-
Nothing is more intolerable than to have res, de manera que Bob no recibe exactamente x sino que recibe
to admit to yourself your own errors.
z = x + e, donde e es un cierto vector de errores de transmisin,
Ludwig van Beethoven
a priori desconocido. La pregunta del milln 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.

Denicin 28 (Decodicacin por mxima verosimiliud)


Supongamos recibida una palabra z, denimos su decodicacin como la
palabra del cdigo x (si existe) tal que x maximiza

P[z recibidax enviada].

En condiciones de uso en el mundo real, con frecuencia se


tiene informacin adicional sobre un cdigo, que permite evaluar
de forma precisa esta probabilidad condicionada. Por ejemplo,
no es lo mismo un cdigo corrector para imgenes enviadas por
sondas espaciales, donde los errores son esencialmente aleatorios
y uniformemente distribuidos, que un cdigo corrector de errores
para decodicar las pistas de un cd, donde los errores ocurren
con frecuencia por rfagas.

Denicin 29 (Decodicacin por distancia mnima)


Si hemos recibido una palabra z An , denimos su decodicacin por
distancia mnima a la nica palabra x del cdigo (si existe) que minimiza

d(x, z),

es decir, x ser la palabra ms prxima a z

Como se puede comprobar, en muchos casos ambas estrate-


gias coinciden.
cdigos correctores de errores 41

Ejercicio 4 Sea C An un cdigo, x C, y sean v, z C tales


que d(x, v) < d(x, z). Supongamos que la probabilidad de que
se produzca un error en la transmisin de la coordenada i-sima
de x es 0 < p i < 1/2; y que son idependientes. Demuestra que la
probabilidad de transmitir x y recibir v es estrictamente menor
que la probabilidad de transmitir x y recibir z.

Parmetros de los cdigos


Intuitivamente, estamos interesados en cdigos donde las
palabras estn cuanto ms lejos mejor. Esto nos permitir poder
detectar (y eventualmente corregir) errores, ya que si las palabras
del cdigo estn muy separadas las unas de las otras, si se cometen
(no demasiados) errores al transmitir una palabra, la transmisin
errnea quedar, o eso esperamos, cerca nicamente de la palabra
correcta, de entre todas las del cdigo.

Ejemplo 16 El cdigo de repeticin de longitud n sobre el Este es el cdigo ms usado por los
progenitores de todo el mundo.
alfabeto A consiste en

C = {(a, a, . . . , a) a A} A n .

Para este cdigo, se toma tpicamente n = 8 y A = F2 . Obsrvese


que la distancia entre dos palabras cualesquiera de este cdigo es
exactamente n.

Ejemplo 17 El cdigo de la cinta de papel de n agujeros con-


siste en
n
C = {(x1 , x2 , . . . , x n ) x i F2 , x i = 0} F2 ,
n
i=1

y es una generalizacin del cdigo de la cinta de papel original.


Aqu, x n juega el papel de bit paridad. La distancia mnima entre
palabras de este cdigo es 2 (se justica ms adelante).

Vemos que hay diferencias muy importantes entre las dis-


tancias entre palabras de los dos ejemplos anteriores. Parece que
la distancia mnima crece de forma inversamente proporcional a
la cantidad de informacin transmitida. Por ejemplo, en el cdi-
go de repeticin tenemos una distancia mnima bastante grande Nunca est de ms repetirlo!
Nunca est de ms repetirlo!
(tanta como queramos, si podemos hacer crecer n), pero a cambio
Nunca est de ms repetirlo!
la informacin transmitida en cada palabra del cdigo es escasa;
Les Luthiers Consejos para padres
nada ms que un bit. Sin embargo, en la cinta de papel, n 1 bits
son informacin pura, porque pueden variar como queramos, y
42 teora de cdigos y criptografa

slo un bit es dependiente de los otros. Sin embargo, la distancia


mnima en este cdigo es siempre 2.

Denicin 30 Supongamos que A = q. Dado un cdigo C An ,


llamamos:

1. Distancia mnima del cdigo al nmero

d(C) = min{d(x, v) x, v C}.

2. Distancia mnima relativa del cdigo al nmero


d(C)
(C) = .
n
3. Tasa de transmisin de informacin del cdigo al nmero
logq (C)
R(C) = .
n
4. Redundancia del cdigo al nmero

n logq (C).

Normalmente diremos que C es un cdigo tipo (n, m, d)


para decir que es un cdigo de longitud n, tamao m y distancia
mnima d. Cuando sea necesario especicar q = card(A), escri-
biremos (n, m, d)q . Las dems constantes relacionadas con el
cdigo, denominadas parmetros del cdigo, se pueden calcular a
partir de stas (conocido C, claro est).

Lema 5 (deteccin de errores) Sea C un cdigo tipo


(n, m, d). Entonces, para todos x C y v An , si d(x, v) < d,
se tiene que v C.
Diremos que un cdigo C detecta d 1 errores cuando se da
esta situacin.

Lema 6 (correccin de errores) Sea C un cdigo tipo


(n, m, d). Entonces, para cualesquiera x1 , x2 C, y para todo v
An , no es posible

d 1
d(x i , v) , i = 1, 2.
2
Dicho de otro modo,
d 1 d 1
B(x1 , ) B(x2 , ) = .
2 2

Diremos que un cdigo C corrige (d 1)/2 errores cuando se da


esta situacin.
cdigos correctores de errores 43

Ejemplo 18 (Cdigo original de Hamming) El cdigo


original de Hamming, el primer ejemplo de la historia de cdigo
corrector de errores pensado como tal, era en un cdigo (7, 24 , 3)
sobre A = F2 . El cdigo 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 , x6 , y x7 como parme-
tros y los valores de x1 , x2 , y x4 vienen determinados por nuestra
eleccin. La distancia mnima relativa es 3/7 y la redundancia de
este cdigo es 3, siendo su tasa de transmisin 4/7. Es un cdigo
que detecta dos errores y corrige uno.

Visto lo anterior la teora de cdigos correctores presenta


algunos problemas interesantes, desde el punto de vista matemti-
co:

Encontrar un compromiso adecuado entre los errores que se


pretenden detectar o corregir y la tasa de informacin, que
est directamente involucrada con el coste de transmisin (a
mejor tasa, menos cuesta enviar el mismo mensaje).

Estudiar errores de distinta naturaleza, para adecuar los


cdigos a los errores ms comunes, dependiendo del tipo de
transmisin (ejemplo, isbn vs. cd).

Dar, si es posible, un algoritmo eciente para detectar y


corregir los errores de transmisin.

Cdigos lineales
A partir de ahora trabajaremos con el espacio vectorial An =
Fnq , donde notaremos sus vectores como columnas.

Denicin 31 Un cdigo lineal de longitud n sobre el alfabeto


A = Fq es un subespacio vectorial de Fnq .

Observacin 6 Un cdigo lineal C Fnq , como subespacio


vectorial que es, tiene una dimensin, digamos dim(C) = k. En
estas condiciones es claro que C es un cdigo tipo (n, q k , d) (no
sabemos quin es d, al menos por ahora), con R(C) = k/n y re-
dundancia n k. Esto es, de las n coordenadas que tiene cada
44 teora de cdigos y criptografa

palabra de C, k contienen informacin, lo cual es perfectamente


coherente con el hecho de que dim(C) = k.

El uso tpico de los cdigos lineales es el siguiente. Suponga-


mos que tenemos un mensaje que queremos transmitir sin errores,
escrito como bloques de longitud k sobre un cuerpo nito Fq .
El caso tpico es una transmisin binaria de bytes, donde q = 2
y k = 8. Elegimos o diseamos un cdigo de dimensin k y lon-
gitud n, con distancia mnima d adecuada a la tasa de errores del
canal de transmisin. Supongamos que C = u1 , . . . , u k (Fq )n .
Dado un mensaje m Ak = Fqk , llamamos la codicacin de m
al vector del cdigo

z = m1 u1 + + m k u k C.

El vector z es lo que se transmite, y en el canal de transmisin


ocurren unos ciertos errores. Podemos denotar la transmisin con
errores por

z z + e = x,

donde e es el vector de errores.


Ahora, supuesto que nuestro cdigo es sucientemente
bueno, se procece a la correccin de x, recuperndose z:

x z,

y recuperado z, es posible calcular de nuevo m como las coorde-


nadas de z en la base elegida; esta operacin se llama decodicacin.
Esquemticamente,

m z x z m.

Ejercicio 5 Estudia cules de los ejemplos que hemos visto en


la seccin anterior son cdigos lineales y determina su dimensin.

Para hallar la distancia mnima de un cdigo lineal nos apo-


yamos en un concepto auxiliar. Dado x Fnq denimos su peso
como

w(x) = card{i x i 0} = d(x, 0).

Proposicin 12 Si C es un cdigo lineal tipo (n, q k , d), enton-


ces

d = min w(x).
0xC
cdigos correctores de errores 45

Demostracin. Basta aplicar que, para todo x, v C, tambin


se tiene que x v C, y

d(x, v) = d(x v, 0) = w(x v).

Falta por dar una manera explcita (a ser posible sencilla) de


calcular la distancia mnima de un cdigo lineal. Para ello recu-
rriremos a la artillera del lgebra lineal y, en particular, a las dos
maneras ms habituales de expresar un subespacio vectorial: me-
diante una base y mediante un sistema de ecuaciones implcitas.

Denicin 32 Sea C Fnq un cdigo lineal. Diremos que M es una


matriz generatriz de C cuando las columnas de M formen una base de C
como subespacio vectorial.

Denicin 33 Sea C Fnq un cdigo lineal. Si C viene expresado


por un sistema de ecuaciones implcitas independientes,

AX = 0 M((n k) 1, Fq ),

diremos que A es una matriz de control de C.

Proposicin 13 Sea C Fnq un cdigo lineal tipo (n, q k , d)


con matriz generatriz M y matriz de control A. Entonces:

1. M M(n k, Fq ), A M((n k) n, Fq ).

2. rg(M) = k, rg(A) = n k.

3. A M = 0 M((n k) k, Fq ).

4. Dado un vector x Fnq ,

x C Ax = 0 M((nk)1, Fq ) rg(M) = rg(Mx).

Ejemplo 19 El cdigo binario original de Hamming, tiene


por matriz de control

1 0 1 0 1 0 1

A = 0 1 1 0 0 1 1 ,

0 0 0 1 1 1 1
46 teora de cdigos y criptografa

y una matriz generatriz es

1 1 0 1

1 0 1 1


1 0 0 0


M = 0 1 1 1 .


0 1 0 0


0 0 1 0

0 0 0 1

Obsrvese que la matriz generatriz est pensada de forma que sea


especialmente fcil resolver sistemas de la forma Mm = z, para
que la fase de decodicacin sea rpida.

Proposicin 14 La distancia mnima de C es la menor canti-


dad de columnas de A que necesitamos para formar un conjunto
linealmente dependiente.

Demostracin. Probaremos que existe un vector de peso


exactamente r en el cdigo si y slo si existe una combinacin
lineal de exactamente r columnas con coecientes no nulos que
da 0. Sea x C, con w(x) = r. Entonces

x C Ax = 0 x1 C(A)1 + + x n C(A)n = 0 Fnk


q ,

donde exactamente r de las n coordenadas de x son no nulas. Por


2
Atencin: esto no es rango de A. tanto, d es precisamente el cardinal del menor conjunto de colum-
nas de A que formen un conjunto linealmente dependiente.

Ejercicio 6 Calcular las matrices asociadas a los cdigos


de repeticin, de la cinta de papel y de Hamming y estudiar la
distancia mnima en cada caso.

La estructura extra que nos proporcionan los cdigos li-


neales nos permite una decodicacin sistemtica, siguiendo el
principio de distancia mnima. Supongamos que tenemos un c-
digo lineal C Fnq , con matriz de control A, y que hemos emitido
una palabra x C, recibiendo en cambio

z = x + e,
cdigos correctores de errores 47

donde e es el vector de errores en la transmisin, a priori descono-


cido.
Algoritmo 1: Decodicacin por distancia mnima (sin
optimizar)
Entrada: Un cdigo C de tipo (n, q k , d) y una palabra z
Salida: La correccin por distancia mnima de z
min = n
para cada palabra w C hacer
d = d(z, w)
si d < min entonces
x=w
min = d
devolver x
La asignacin d = d(z, w) es de orden lineal O(n), y el algorit-
mo completo tiene complejidad O(nq k ).
Aunque este algoritmo funciona, y funciona bien, tiene
una complejidad altsima para cdigos de tamao mediano o
grande. Afortunadamente, existe una forma de mejorar mucho la
eciencia, pero tendremos que introducir una herramienta, que
llamamos los sndromes.

Decodicacin por sndromes y errores

Denicin 34 Llamamos sndrome de v al vector

s(v) = Av Fnk
q .

Proposicin 15 Algunas propiedades elementales del sndro-


me son:

1. s(z) = 0 z C.

2. Si v = x + e, y x C, entonces s(v) = s(e).

3. El sndrome de un vector es una combinacin lineal de las


columnas de A correspondientes a las coordenadas en las
que se ha cometido un error de transmisin.

En realidad, pues, el sndrome no es sino la aplicacin lineal


s Fnq q , denida por la matriz A, que verica ker(s) = C.
Fnk
48 teora de cdigos y criptografa

Ejemplo 20 De nuevo consideramos el cdigo original de


Hamming, 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 cdigo y hemos


recibido z = (1011011), que no est en el cdigo. Entonces,

1

Az = 1 .

1

que es precisamente la sptima columna de A. Por tanto, supo-


niendo que slo hayamos cometido un error, el error est en la
sptima coordenada, luego la palabra original era

1011011 0000001 = 1011110.

Cuidado: aqu podramos haber supuesto que se han cometido


errores en las coordenadas 1 y 6, porque

1 0 1

0 + 1 = 1 ,

0 1 1

Sin embargo, por el principio de la distancia mnima suponemos


que se ha cometido un error y no dos.

Una observacin importante es que dos palabras tienen


el mismo sndrome si y slo si su diferencia es una palabra del
cdigo. Formalmente

s(u) s(v) = s(u v) = 0 u v C,

y esto permite interpretar el sndrome en trminos de espacios


cociente.
Dado un cdigo lineal C Fnq , de tamao q m , consideramos
el espacio Fnq /C, que es un espacio vectorial de dimensin n m.
Sus elementos son las clases

x + C = {x + u u C}.

Cada clase tiene q m elementos. Dos vectores u, v estn en la mis-


Dicho de otra forma, el sndrome determi- ma clase si y slo si sus sndromes coindicen:
na de forma unvoca la clase.
u v C u + C = v + C s(u) = s(v).
cdigos correctores de errores 49

Si ahora pensamos en un vector e como en un vector de


errores en la transmisin, la clase e + C consiste en las todas las
palabras del cdigo afectadas del mismo error, y todas sndrome
igual a s(e). Si adems supiramos que no hay dos errores con el
mismo sndrome, podramos recuperar la palabra original simple-
mente restando e.
Por poner un ejemplo concreto, supongamos un cdigo
lineal C y supongamos que la palabra e = (1, 0, . . . , 0) no est en el
cdigo. Supongamos tambin que hemos calculado su sndrome,
s(e). Si ahora recibimos una palabra z de forma que s(z) = s(e),
sera idneo que pudiramos asegurar que el error cometido es
exactamente e. Para asegurarlo, necesitamos algunas condiciones
de unicidad.

Denicin 35 Diremos que un elemento u es lder de una clase


Fnq /C cuando sea el nico elemento de peso mnimo.

Obviamente, no tiene por qu haber un nico elemento de


peso mnimo, pero, en la prctica, en las clases que nos interesan,
s que hay uno y slo uno.

Proposicin 16 Sea C Fnq un cdigo lineal tipo (n, q m , d).


Sea e Fnq tal que w(e) (d 1)/2. Entonces, para todo u e + C
distinto de e, se tiene que w(u) > (d 1)/2. En particular, e es
el lder de su clase.

Demostracin. Supongamos que existen dos vectores u e + C


con peso menor o igual que t = (d 1)/2. Entonces u e C y

w(u e) w(u) + w(v) 2t < d(C),

por lo que d(u, e) = 0 y u = e.

La Proposicin 16 nos permite usar el algoritmo del lder o Ves? Ahora me respetas, porque soy
una amenaza
algoritmo de sndromes y errores para decodicar. Para este algoritmo,
Sndrome en Los increbles (2004)
50 teora de cdigos y criptografa

supondremos que hemos precalculado una tabla con los sndro-


mes de todos los vectores de peso menor o igual que (d 1)/2.
Algoritmo 2: Decodicacin por sndromes y errores (sin
optimizar)
Entrada: Una tabla T{sndrome error} de un cdigo
lineal C y una palabra z
Salida: La correccin por sndromes y errores de z
1 s = s(z) = Az
2 para cada sndrome t de T hacer
3 si s = t entonces
4 x = z T[t]
devolver x
devolver No es posible decodicar z
Vamos a examinar someramente la complejidad de este algo-
ritmo. La complejidad de calcular s en el paso 1 es la del producto
de una matriz de tamao (n k) k por otra de tamao (n k) 1,
y es O((n k)n). La complejidad del ciclo de la lnea 2 es propor-
cional al tamao de la tabla, es decir a
d1
2
n
B(0, (d 1)/2) = ( )(q 1) j q nk .
j=0 j

(La ltima desigualdad la veremos un poco ms adelante.) Las


operaciones de las lneas 3 y 4 son lineales en la longitud de los
vectores, de forma que la complejidad total es

O((n k)n + (n k)q nk ) = O((n k)q nk ).

De nuevo, la necesidad de precalcular una tabla de sndro-


mes y errores implica que este mtodo no es prctico para c-
digos de gran tamao o longitud, como los que se demandan en
muchas aplicaciones actuales. Sin embargo, no es menos cierto
que la gran mayora de los cdigos actuales no son sino ejemplos
(familias) de cdigos lineales para los cuales existe una variacin
creativa del algoritmo del lder que permite decodicar de manera
ecaz.

Observacin 7 La proposicin anterior nos muestra que para


crear la tabla podemos tomar los elementos de B(0, (d 1)/2) y
considerar los sndromes correspondientes, ya que forzosamente
ellos sern lderes de las clases en las que, con seguridad, podre-
mos decodicar. Sin embargo, puede haber otras clases con lder,
siendo ste de peso mayor que (d 1)/2. Calcular estas cla-
cdigos correctores de errores 51

ses y aadirlas a la tabla pueden suponer una capacidad extra de


correccin, a costa de aumentar la memoria utilizada.

Aunque sage tiene un mdulo sobre cdigos lineales, es muy


fcil implementar una versin ingenua del algortimo de sndromes
y errores. Veamos un ejemplo para el cdigo original de Hamming.
En primer lugar, denimos el cdigo de Hamming por su matriz
de control,

# encoding: utf-8

F=GF(2)

A=matrix(F,[[1,0,1,0,1,0,1],[0,1,1,0,0,1,1],[0,0,0,1,1,1,1]])

C=A.right_kernel()

A continuacin denimos la distancia de Hamming y el peso:

# Primer paso: disco de centro 0 y radio [(d-1)/2].

def distancia_Hamming(v1,v2):

assert(len(v1)==len(v2))

return sum( [0 if x==y else 1 for (x,y) in zip(v1,v2) ] )

def peso(v):

return Integer(distancia_Hamming(v, len(v)*[0]))

No nos preocupamos mucho de las buenas prcticas de progra-


macin y usaremos variables globales para denir el sndrome, el
tamao y la distancia mnima

def s(v):

return A*v

d=3 # La distancia mnima de C es 3. Ajustar para otros ejemplos

An=VectorSpace(F, 7) # La longitud del cdigo es 7. Ajustar para otros ejemplos

A continuacin, calculamos las palabras de peso menor o


igual que (d 1)/2 y la tabla de sndromes y errores, tambin
por un procedimiento simple, pero lento:

Disco=[]

for v in An:

if peso(v)<= floor((d-1)/2):

Disco.append(v)

# Tabla de sndromes y errores.

Tabla=dict([ ( tuple( s(v) ) , v ) for v in Disco ] )


52 teora de cdigos y criptografa

Por ltimo, la funcin para decodicar:

def decodificar(v):

sindrome=tuple(s(v))

if sindrome in Tabla:

return v-Tabla[sindrome]

else:

return None

La tabla de sndromes y errores que hemos creado la repre-


sentamos en Tabla 4. Con esta tabla, es sencillo decodicar todas
y cada una de las palabras posibles, lo que hacemos en la Tabla 4.

Cdigos cclicos.
Veamos a continuacin un ejemplo de una familia de cdigos
lineales que tiene un mtodo propio de decodicacin que mejora
el de sndromes y errores.

Denicin 36 Un cdigo cclico es un cdigo lineal C Fnq que


verica la siguiente propiedad:

(x1 , . . . , x n ) C (x n , x1 , . . . , x n1 ) C.

Observacin 8 Por motivos que despus resultarn obvios,


cambiamos la notacin habitual y consideraremos los elementos
de Fnq escritos como

x = (x0 , x1 , . . . , x n1 ) .

Importante: En lo sucesivo supondremos mcd(n, q) = 1


para poder aplicar algunas de las propiedades ms interesantes de
los cdigos cclicos.
La descripcin de los cdigos cclicos se hace en dos contex-
tos distintos, que normalmente se usan de manera indiferenciada:

1. Interpretacin en el espacio vectorial de los polinomios:


Identicamos Fnq con Fq [X]n1 , el conjunto de polinomios
sobre Fq con grado menor o igual que n 1. Esta identica-
cin es, explcitamente:

u = (u0 , u1 , . . . , u n1 ) u0 + u1 X + u2 X 2 + + u n1 X n1 .

2. Interpretacin en el anillo cociente de polinomios: Alter-


nativamente, interpretamos Fnq Fq [X]n1 con el anillo
cdigos correctores de errores 53

Fq [X]/X n 1, usando las congruencias habituales (que no


son sino polinomios de grado menor o igual que n 1).

En esta interpretacin, los cdigos cclicos verican una


propiedad curiosa.

Proposicin 17 Sea C Fnq un cdigo lineal. Entonces es


cclico si y slo si es un ideal, como subconjunto de Fq [X]/X n
1.

Demostracin. La suma es cerrada, por ser un cdigo lineal (y


por tanto un subespacio vectorial). 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. Pero si 3
Por qu?

f (X) = a0 + a1 X + + a n1 X n1 ,

entonces

X f (X) = a n1 + a0 X + a1 X 2 + + a n2 X n1 ,

y por tanto X f (X) C es, precisamente, la condicin de que C


sea cclico.

Observacin 9 Dado que en Fq [X]/X n 1 todos los ideales


son principales, y estn generados por un divisor de X n 1, pode-
mos identicar cada cdigo lineal C con un polinomio4 g(X) tal 4
Para estar seguros de que se ha en-
tendido esta observacin: Cul es el
que g(X) (X 1) y, en esta identicacin, C = g(X).
n
polinomio g(X) divisor de X 8 1 tal que
X 7 X = g(X) + X 7 1?
Proposicin 18 Sea C = g(X) Fq [X]/X n 1 un cdigo
cclico, con deg(g) = n k. Entonces

B = {g(X), X g(X), . . . , X k1 g(X)}

es una base de C como espacio vectorial.

Vamos a llamar h(X) al polinomio que verica gh = X n 1,


del que sabemos que deg(h) = k.

Demostracin. Supongamos que tomamos un elemento ge-


nrico f (X)g(X) C, para f (X) Fq [X] y sea f0 (X) el resto de
f (X) mdulo h(X). Entonces

f (X)g(X) f0 (X)g(X) = ( f f0 )g = q(X)h(X)g(X) X n 1,

con lo cual

f (X)g(X) = f0 (X)g(X) (mod X n 1).


54 teora de cdigos y criptografa

As pues, en lugar de tomar f g tomaremos f0 g. Dado que deg( f0 ) <


k, es elemental ver que f0 g se escribe como combinacin lineal de
los polinomios de B.
El hecho de que B es linealmente independiente viene moti-
vado porque una combinacin lineal nula debe vericar:
k1 k1
0 = (a i X i g(X)) = g(X) (a i X i ) = g(X) f (X),
i=0 i=0

pero como deg(g) = n k, deg( f ) k 1, se tiene que deg(g f )


n 1 < n, por lo que slo puede ser 0 en Fq [X]/X n 1 cuando
a i = 0 para i = 0, . . . , k 1.

Corolario 7 En las condiciones anteriores, dim(C) = k y, si


g(X) = g0 + g1 X + + g nk X nk , una matriz generatriz de C es,
precisamente:

g0 0 0 0

g1 g0 0 0


g2 g1 g0 0


M= M(n k; Fq ).


g0




0 0 0 . . . g nk

El clculo de la matriz de control tambin puede realizarse


en trminos polinomiales. Dado C = g(X) Fq [X]/X n 1,
consideremos el polinomio
Xn 1
h(X) = = h0 + h1 X + + h k X k .
g(X)
Corolario 8 En las condiciones anteriores, una matriz de
control de C es
0 ... . . . h2 h1 h0

0 ... . . . h1 h0 0


A=0 ... . . . h0 0 0 M((n k) n, Fq ).




h k . . . h0 . . . 0 0 0

Demostracin. nicamente (!) hay que darse cuenta de que, si


hacemos AM, el elemento (i, j) del producto es precisamente el
coeciente de grado n i j + 1 del polinomio gh = X n 1.

El algoritmo del lder, aplicado a los cdigos cclicos, resulta


particularmente simple y sta es una de las razones por las cuales
cdigos correctores de errores 55

resulta interesante esta subfamilia de cdigos. Veamos cmo


funciona.
Algoritmo 3: Decodicacin cclica por sndromes y errores
(sin optimizar)
Entrada: Una tabla truncada T{sndrome error} de un
cdigo lineal C y una palabra z
Salida: La correccin por sndromes y errores de z
s = Az
para cada sndrome t de T hacer
para cada i = 0, . . . , n 1 hacer
w = s << i
si s = t entonces
x = (w T[t]) >> i
devolver x
devolver No es posible decodicar z
La complejidad de la decodicacin cclica es O((nk)q nk1 ).

Ejemplo 21 Para hacernos una idea del avance que esto supo-
ne, si tenemos un cdigo lineal binario de tipo (23, 212 , 7), (por
ejemplo, el denominado G23 , de la familia de cdigos de Golay)
tendremos que calcular sndromes y lderes, al menos para
23 23
1 + 23 + ( ) + ( ) = 2025
2 3
casos, los que tenemos seguridad que podemos corregir. En cam-
bio, si nicamente nos jamos en los que tienen la ltima coorde-
nada no nula, necesitamos
22
1 + 22 + ( ) = 133
2
entradas.

Una de las familias ms utilizadas de cdigos correctores en


la actualidad son los cdigos bch (Bose, Chaudhuri, Hocqueng-
hem). Es el tipo de cdigo que utilizan, por ejemplo, los lectores
de cd. Son cdigos cclicos y se basan en la estructura de las races
n-simas de la unidad sobre Fq .

Cotas asociadas a un cdigo.

Hasta ahora hemos hablado de cdigos, pasando supercial-


mente por cuestiones de optimizacin. Aunque s ha debido que-
dar claro a estas alturas que un cdigo no es, en principio, bueno
56 teora de cdigos y criptografa

o malo, salvo a la luz de las circunstancias en las que se utilice. El


cdigo de repeticin, por ejemplo, es ptimo para transmisiones
donde el coste es escaso, pero la necesidad de que el mensaje lle-
gue ntegro es enorme. La cinta de n agujeros, en cambio, es ideal
para situaciones donde la probabilidad de error es muy escasa, la
transmisin es muy costosa y los posibles errores no corregidos
carecen de importancia (si son pocos). Ahora vamos a intentar dar
formalismo a estas consideraciones.
Fijamos entonces un alfabeto A tal que A = q, y un cdigo
C sobre A de tipo (n, m, d). Al hablar de decodicacin, es claro
que hablamos de bolas cerradas, luego una primera idea a consi-
derar es cuntas palabras de An entran en la bola centrada en una
palabra de C. Claramente, para todo x An ,

B(x, r) = B(0, r),

por lo que designaremos este nmero entero por V (r). Si hubira-


mos de ser precisos, la notacin sera Vq (n, r) (dado que q y n son
importantes, aunque para nosotros estn jados de antemano).

Proposicin 19 En las condiciones anteriores


r
n
V (r) = ( )(q 1) j .
j=0 j

Cota de Hamming En las condiciones anteriores,


d 1
mV ( ) q n .
2

Observacin 10 Esta cota, que involucra los parmetros


principales de C, ilustra la dencin de cdigo perfecto, que es aqul
que verica
d 1
mV ([ ]) = q n ,
2
esto es, el espacio An est recubierto (de forma disjunta) por las
bolas centradas en las palabras de C. Lamentablemente, no exis-
ten muchos cdigos perfectos, y estn bien estudiados. Forman
dos familias importantes, los cdigos de Hamming (ver ejercicios) y
los cdigos de Golay.

Para cdigos lineales podemos renar mucho ms. Suponga-


mos a partir de ahora, pues, que C es lineal, de tipo (n, q k , d).

Cota de Singleton En las condiciones anteriores, k +d n+1.


cdigos correctores de errores 57

Demostracin. Sea A una matriz de control de C. Como la


distancia mnima es el menor nmero de columnas de A que ne-
cesitamos para formar un conjunto linealmente dependiente, y
rg(A) = n k, se tiene d n k + 1.

Observacin 11 La cota de Singleton pone de maniesto de


forma precisa que la distancia mnima y el tamao del cdigo no
pueden crecer a la vez, algo que ya habamos intuido.

Denicin 37 Los cdigos que verican k + d = n + 1 se llaman


cdigos de mxima distancia de separacin, o cdigos mds.

Cota de Plotkin En las condiciones anteriores


nq k1 (q 1)
d .
qk 1

Demostracin. Aplicamos la frmula de la dimensin de los


espacios vectoriales a C y a H x i = 0,

dim(C) + dim(H) = dim(C + H) + dim(C H).

Tenemos dos casos posibles. El primero, que todas las palabras


de C tengan coordenada i-sima nula. Entonces C H, y hay
exactamente q k tales palabras.
El otro caso es que no sea as. Entonces C + H = Fnq , luego
dim(C H) = k 1, y por tanto las palabras de C con coordenada
i-sima nula son q k1 . Por tanto

w(x) n (q q ) = nq (q 1).
k k1 k1
xC

Por otra parte, todas las palabras (salvo 0) tienen al menos d coor-
denadas no nulas, luego

w(x) d (q 1) ,
k
xC

y esto naliza la demostracin.

La ltima cota que daremos ser distinta: hasta ahora hemos


demostrado lo que no puede hacer un cdigo. Gilbert, Shannon y
Varshamov demostraron lo que puede hacer un cdigo.

Cota de Gilbert-Shannon-Varshamov Si se verica

q nk+1 > V (r),

entonces existe un cdigo lineal de tipo (n, q k , d) con d > r.


58 teora de cdigos y criptografa

Demostracin. La construccin del cdigo es inductiva. Co-


menzamos jando un vector cualquier x1 tal que w(x1 ) > r, y
hacemos C1 = x1 .
En el paso general, supongamos construido C j1 = x1 , . . . , x j1
de tipo (n, q j1 , d), con d > r y j 1 < k. Entonces, por hiptesis,

q j1 V (r) < q n ,

luego existe algn vector x j cuya distancia con las palabras de C j1


es mayor que r. Hacemos entonces C j = x1 , . . . , x j y continua-
mos.

a nivel de aplicaciones interesantes, lo que buscamos no son


cdigos individuales, sino familias de cdigos. Eso hace que el resul-
tado anterior carezca de inters prctico per se, ya que los cdigos
que nos promete deben crearse de manera artesanal. Y, de hecho,
nos interesa que podamos variar la longitud arbitrariamente, con
lo cual estamos en el terreno de las denominadas familias asintti-
cas de cdigos. Aqu pierde inters ya hablar de n y de d, y hemos
de sustituir estos parmetros por otros menos dependientes del
contexto, como la tasa de informacin y la distancia relativa.

Denicin 38 Sean d, n Z+ . Denimos

a q (n, d) = max{ k N C lineal sobre Fq de tipo (n, q k , d)}.

As mismo, recordemos que = d/n y denamos


a q (n, n)
q () = lim sup .
n n

Esto es, q () nos mide cmo de grande puede ser, ideal-


mente, la tasa de informacin de un cdigo de distancia relativa
. Las cotas que hemos estudiado anteriormente tienen todas una
versin asinttica (no siempre inmediata a partir de las versiones
absolutas, pero no daremos las demostraciones).

Cota asinttica de Hamming En las condiciones anterio-


res,
logq (V ([/2] 1))
q () 1 lim
n n

Cota asinttica de Singleton En las condiciones anteriores,


q () 1 .
cdigos 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.2: En estas grcas se representan


las cotas de Plotkin (en rojo), la de
Hamming (en azul) y la de Gilbert-
Shannon-Varshamov (en verde) para
Cotavalores
diversos asinttica deinteresante
de q. La zona Plotkin En las condiciones anteriores, si
es la que queda por debajo de las cotas de
= (q 1)/q,
Plotkin y Hamming, pero por encima de
la cota GSV

1 / si
q ()

=0
si >

Cota asinttica de Gilbert-Shannon-Varshamov En las


condiciones anteriores, si ,
logq (V ())
q () 1 lim .
n n

La zona interesante, el espacio que nos queda entre la curva


de Plotkin y la de Gilbert-Shannon-Varshamov, es el objetivo de
los constructores de buenos cdigos. Este espacio ha estado du-
rante muchos aos desprovisto de familias, hasta que Tsfasman,
60 teora de cdigos y criptografa

5
M.A. Tsfasman, S.G. Vladut, Th. Zink: Vladut y Zink5, en 1982 crearon la primera familia de cdigos que
On Goppa codes which are better than the
Varshamov-Gilbert bound. Mathematische
mejoraba la cota GSV. Su trabajo combinaba la teora clsica de
Nachrichten 109 (1982) 2128. cdigos de Goppa con los espacios vectoriales de funciones aso-
ciados a curvas algebraicas proyectivas planas. Lejos de terminar
el problema, este trabajo abri una conexin inesperada y muy fr-
til entre la teora de cdigos, la teora de nmeros y la geometra
algebraica.

Ejercicios
Ejercicio 2.1. El cdigo nif funciona de la siguiente manera: las
palabras son pares (n, l), donde n Z y l {0, 1, . . . , 22}, siendo
n l (mod 23). Demuestra que el cdigo nif detecta un error
en la transmisin de n, as como dos errores, si corresponden
a la permutacin de dos cifras decimales consecutivas. Puede
detectar dos errores cualesquiera? Puede corregir un error?

Ejercicio 2.2. El cdigo isbn (International Standard Book Num-


ber), utilizado para catalogar libros, utiliza el alfabeto A = {0, 1, . . . , 9, X},
donde la X debe entenderse como 10. El cdigo isbn es, entonces
10
C = {(a1 , . . . , a10 ) a i A, (11i)a i = 0 mod 11} A .
10
i=1

Estudiar el tamao del cdigo y si es lineal o no. Demostrar que


el cdigo isbn detecta un error, aunque no lo corrige y que no
detecta dos errores, aunque s lo hace cuando corresponden a la
permutacin de dos cifras consecutivas.

Ejercicio 2.3. Sea C F2n un cdigo lineal de dimensin k. Pro-


bar que, bien todas, bien exactamente la mitad de las palabras de
C tienen peso par.

Ejercicio 2.4. Supongamos que enviamos una cadena de, ponga-


mos 100.000 caracteres (por ejemplo, un programa de ordenador o
un conjunto de datos) y que tenemos una probabilidad de 105 de
que se cometa un error en la transmisin de cada carcter. Halle
la probabilidad de que la transmisin resulte correcta. Si deci-
dimos utilizar el cdigo de Hamming, halle la probabilidad de
que la transmisin resulte correcta (eventualmente, tras corregir
errores).

Ejercicio 2.5. Sea C un cdigo lineal tipo (n, q k , d), con matriz
generatriz M y matriz de control A. La matriz At puede entonces
cdigos correctores de errores 61

interpretarse como la matriz generatriz de un cdigo lineal C ,


denominado cdigo dual de C. Pruebe que C coincide con el
subespacio ortogonal de C respecto del producto escalar usual y,
en particular:

1. C es un cdigo de tipo (n, q nk , d ) (para cierta d N).

2. (C ) = C.

Ejercicio 2.6. Un cdigo lineal tipo (n, q k , d) se dice que est en


forma sistemtica cuando viene dado por una matriz generatriz de
la forma
Ik
M= ,
Mk

donde I k es la matriz unidad kk y M k M((nk)k, Fq ). Pruebe


que todo cdigo lineal se puede escribir de forma sistemtica, si
admitimos permutaciones entre las coordenadas. Hallar la matriz
de control de un cdigo en forma sistemtica.

Ejercicio 2.7. Dado un cdigo lineal C F2n , denimos el cdigo


truncado de C como

C = {(x1 , . . . , x n1 ) x n F2 con (x1 , . . . , x n ) C}.

Estudie si C es lineal, as como sus parmetros (en funcin de los


de C).

Ejercicio 2.8. Dado un cdigo lineal C F2n , denimos el cdigo


con extensin de paridad de C como
n+1
C+ = {(x1 , . . . , x n+1 ) (x1 , . . . , x n ) C y x i = 0} .
i=1

Estudie si C+ es lineal, as como sus parmetros.

Ejercicio 2.9. Dados dos cdigos lineales C1 F2n y C2 F2m , se


dene su suma directa como

C1 C2 = {(xy) x C1 , y C2 }.

Pruebe que C1 C2 es un cdigo lineal que verica

d(C1 C2 ) = min{d(C1 ), d(C2 )}.

Ejercicio 2.10. Dados dos cdigos lineales C2 C1 F2n , se


dene su producto como

C1 C2 = {(xx + y) x C1 , y C2 }.
62 teora de cdigos y criptografa

Pruebe que C1 C2 es un cdigo lineal que verica

d(C1 C2 ) min{2d(C1 ), d(C2 )}.

Ejercicio 2.11. El cdigo de Hamming de redundancia r, notado


H(r) es el cdigo lineal denido por una matriz de control en la
que aparecen (en vertical) todos los vectores no nulos de F2r .

1. Pruebe que H(r) tiene longitud 2r 1, dimensin 2r r 1 y


distancia 3. Por tanto, corrige exactamente un error.

2. Demuestre que el clculo del sndrome es suciente para


decodicar en H(r) (supuesto que se ha cometido a lo ms
un error).

3. Pruebe que toda palabra est a distancia menor o igual que


uno de un elemento de H(r). Dicho de otro modo, las bolas
cerradas centradas en los elementos de H(r) y radio 1 recu-
bren todo el espacio de forma disjunta. Esto es, H(r) es un
cdigo perfecto.

Ejercicio 2.12. Construya explcitamente H(2) y H(3).

Ejercicio 2.13. Consideramos el cdigo lineal C sobre F2 , deni-


do por la matriz generatriz

1 0

0 1


1 0


1 1
M=



1 1


1 1


0 1

0 1

Halle los parmetros del cdigo y una matriz de control. Calcule


todos los sndromes con lder de peso menor o igual que 2. Si
recibimos la palabra 11011011 y sabemos que se han cometido,
a lo sumo, dos errores, cul es la palabra enviada y cul el error
cometido?

Ejercicio 2.14. Imaginemos que tenemos un cdigo lineal C


sobre Fq . Pruebe que existen exactamente qr sndromes, donde r
es la redundancia de C.
cdigos correctores de errores 63

Ejercicio 2.15. Imaginemos que tenemos un cdigo lineal bina-


rio C, tipo (63, 251 , 5) (un tal cdigo existe). Halle cuntos sndro-
mes posee C y, de entre estos, cuntos tendrn un lder de peso 1
y cuntos un lder de peso 2. Por qu no tiene sentido considerar
pesos mayores?

Ejercicio 2.16. Sabemos que, en un cdigo perfecto de tipo


(n, m, d),
2n
m= .
V ((d 1)/2)

Sin embargo, eso no quiere decir que si 2n /V ((d 1)/2) es un


entero m, exista un cdigo perfecto tipo (n, m, d).

1. Pruebe que
290
= 278 .
V2 (90, 2)

2. Sea C un cdigo binario perfecto tipo (90, 278 , 5) sobre F2 y


supongamos6 que 0 C. Consideremos el conjunto 6
Por qu suponer esto no hace que
perdamos generalidad?
X = {x F90
2 tqx1 = x2 = 1, d(x, 0) = 3}.

Halle el nmero de elementos de X y pruebe que, para cada


x X existe una nica z C tal que d(x, z) = 2.
3. Para x y z como antes, pruebe que d(z, 0) = 5, que z i = 1 si
x i = 1.
4. Dados ahora dos x, x X, construya los z, z C correspon-
dientes y demuestre que d(z, z ) = 6. Deduzca que cada z C
est asociada a exactamente tres elementos de X y llegue a
una contradiccin que demuestra que no existe un cdigo
perfecto (90, 278 , 2).

Ejercicio 2.17. Sean n Z, mcd(n, q) = 1. Supongamos que el


orden de q en el grupo multiplicativo (Z/Zn , ) es d. Entonces el
polinomio X n 1 Fq [X] factoriza en (n)/d polinomios mnicos
irreducibles. Para demostrar esto, pruebe:

1. Hay exactamente (n) races n-simas primitivas de la uni-


dad en Fq (o sea, no son races m-simas de la unidad, con
m < n).

2. Sea una raz n-sima primitiva de la unidad en Fq . El ente-


ro d se puede caracterizar como el menor entero positivo tal
d 1
que q = 1.
64 teora de cdigos y criptografa

3. Deduzca que [Fq [] Fq ] = d y el resultado.

Ejercicio 2.18. Decimos que un vector x Fnq es una rfaga si


todas sus coordenadas no nulas son consecutivas. Las rfagas son
particularmente interesantes cuando representan errores en cdi-
gos binarios. Pruebe que un cdigo cclico C F2n de dimensin
k no contiene ninguna rfaga de peso l n k. Pruebe que, por
este motivo, detecta cualquier error rfaga de peso menor o igual
a n k.

Ejercicio 2.19. Aplique el procedimiento Gilbert-Shannon-


Varshamov para crear un cdigo sobre F3 de tipo (6, 34 , 2).

Ejercicio 2.20. Pruebe que el procedimiento inductivo de


Gilbert-Shannon-Varshamov crea, efectivamente, un cdigo con
las condiciones enunciadas.
CRIPTOGRAFA DE
C L AV E P R I VA D A
3
Generalidades

El problema de la criptografa de clave secreta es bsicamen-


te el siguiente: tenemos dos individuos, clsicamente notados A,
Alice, y B, Bob, que quieren establecer un canal seguro de comuni-
cacin, y un tercer individuo E Eve, o en trminos ms genricos,
el adversario, que tiene la capacidad de interceptar y leer los men-
sajes que se intercambian por este canal.
Supondremos que los mensajes que Alice y Bob quieren
intercambiar son nmeros enteros en una base previamente acor-
dada (tpicamente 2), y conocida por todos los actores, o bien una
congruencia mdulo un cierto entero N, tambin conocido por
todos, incluida Eve. Eventualmente necesitaremos mensajes ms
complicados y consideraremos vectores de enteros o congruen-
cias.
Para lograr que su correspondencia sea condencial, Alice y
Bob crean un criptosistema que es, fundamentalmente, una aplica-
cin biyectiva bajo ciertas condiciones. Alice halla la imagen por
esta aplicacin de su mensaje para Bob, y esto es lo que se enva
por el canal de comunicacin. Posteriormente, Bob recibe la ima-
gen y calcula el original, hallando as el mensaje de Alice. Veamos
la formulacin precisa.
Para facilitar la comprensin del criptosistema, notaremos
con letras minsculas los objetos (enteros, aplicaciones,) que
slo conocen Alice y Bob, y con maysculas aquellos objetos a los
que Eve tiene acceso. En estas condiciones, en un criptosistema 1
No necesariamente de forma legal.
de clave privada, los objetos involucrados son:

0. Hay dos usuarios legtimos del sistema, Alice y Bob. Hay un


usuario ilegtimo, que escucha todas las conversaciones, Eve.
66 teora de cdigos y criptografa

Figura 3.1: El problema de intercambio F(k, ) = G(k, ) =


de informacin. Eva tiene acceso al
canal de informacin, de forma legal o

A E b

ilegal, y puede obtener copias de todo
la informacin transmitida. Adems,
normalmente tiene informacin acerca
de las funciones F y G. Lo nico que no
suele tener es k.

Alice Bob

Eve

1. Alice quiere enviar un mensaje m a Bob. El mensaje puede


ser una letra, un bloque de letras, un entero, una congruen-
cia, un elemento de un cuerpo nito, un vector, etc.

2. Alice y Bob comparten una clave secreta, k. Suponemos que


se han intercambiado esta clave de forma segura, y que Eva
no la conoce.

3. Alice dispone de una aplicacin (conocida) de cifrado F(, ),


y puede calcular en tiempo polinomial F(k, m) = M.

4. Bob dispone de una aplicacin (conocida) de descifrado


G(, ), y puede calcular en tiempo polinomial G(k, M) = m.

5. Eve, conoce F(, ), G(, ) y M, pero sin conocer k no pue-


de calcular m. En trminos prcticos, esto quiere decir
que sin conocer k, el algoritmo para calcular m es al menos
(sub)exponencial.

Aunque parezcan arbitrarias, las letras tie- Denicin 39 Un sistema criptogrco de clave privada es un par
nen signicado: K de key, P de plaintext
de funciones
y C de cyphertext, que son los trminos
en ingls que corresponden a clave, texto F K P C, G K C P,
en claro y texto cifrado. La funcin F se
llama funcin de cifrado, y la funcin G donde K es el conjunto de claves posibles, P es el conjunto de men-
la de descifrado. Desde 2014, la rae
acepta tambin encriptado y desencriptado,
sajes posibles, y C el conjunto de mensajes cifrados posibles, tales
supongo que al mismo nivel que toballa, que para todo k K y todo m P, si ponemos F(k, m) = M, entonces
almndiga y asn.
G(k, M) = m. Es decir,

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

Se podra razonar que supone una prdida innecesaria de


seguridad el que Eve conozca F y G. Esto es, a priori resulta mu-
cho ms seguro que Eve no sepa cmo se cifra y se descifra. Pero
en la prctica esto no es as. Muchos sistemas criptogrcos han
criptografa de clave privada 67

basado su seguridad en la opacidad del cifrado y, cuando ste ha


sido desvelado (y, tarde o temprano, sucede), toda el sistema se
ha visto comprometido. Una postura de cifrado abierto, donde
todo el mundo es retado a derrotar al sistema, garantiza mucha
ms abilidad.
Formalmente, stas son slo parte de las exigencias que debe
cumplir un sistema. Tradicionalmente, se asumen los denomina-
dos Principios de Kerckhos: 2
Evidentemente, algunos de estos
principios no son de aplicacin ahora (los
principios de Kerckhoffs datan de nales
1. Si el sistema no es tericamente irrompible, debe serlo en la del siglo xix).
prctica.

2. La efectividad del sistema no debe depender de que su dise-


o permanezca en secreto.

3. La clave debe ser fcilmente memorizable de manera que no


haya que recurrir a notas escritas.

4. Los mensajes cifrados debern dar resultados alfanumricos.

5. El sistema debe ser operable por una nica persona.

6. El sistema debe ser fcil de utilizar.

para varios de los sistemas criptogrficos que estudiaremos


a continuacin ser necesario convertir un mensaje en uno o ms
nmeros. Vamos a detenernos brevemente en un par de formas de
hacer esta conversin.
La forma ms simple es considerar el alfabeto de las ma-
ysculas, (quiz con el espacio en blanco contado como carcter,
aunque no es usual), y asignar a cada letra su nmero, empezando
por 0. Esto es, identicamos cada letra con un entero mdulo 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 espaol, en Z/Z27,
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, un mensaje no es ms que un elemento de Z/Z N r ,


donde N y r varan en cada criptosistema.
Otra forma ms sosticada es usar la tabla de caracteres
ascii para enumerar mensajes: cada carcter de un mensaje se sus-
tituye por su nmero binario, los nmeros binarios se componen
68 teora de cdigos y criptografa

uno a continuacin de otro, y el entero decimal resultante es el


mensaje. Un ejemplo sencillo:

Unmensaje. (1010101 1101110 0100000 1101101


1100101 1101110 1110011 1100001
1101010 1100101 0101110)2
25342398497542236887406.

Naturalmente, algunos mensajes habr que partirlos en bloques


del tamao adecuado antes de aplicarle un criptosistema; y en
otros casos habr que alargarlos hasta un tamao suciente.

para varios de los criptosistemas que expondremos a conti-


Many Bothans died to bring us this nuacin, usaremos como ejemplo el siguiente texto (en ingls):
information
This is our most desperate hour. Help me, Obi-Wan Kenobi.
Mon Mothma, The Return of the Jedi
Youre my only hope.

Adems, para simplicar los ejemplos, consideraremos que el alfa-


beto consiste nicamente en las letras maysculas, sin contar los
espacios ni los signos de puntuacin. Y para rematar, lo presenta-
remos agrupados de cinco en cinco letras, como es tradicional en
criptografa.

THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI WANKE NOBIY OUREM

YONLY HOPE

Vamos a recapitular en las secciones siguientes los criptosis-


temas histricos ms notables.

Galia est omnis divisa in partes tres: el criptosistema de Csar

En el siglo i a.c., aparece una tcnica de cifrado conocida


con el nombre genrico de cifrado de Csar en honor a Julio Csar,
que dej constancia escrita de cmo utiliz este cdigo durante
la guerra de las Galias. Consiste en la transformacin del mensaje
mendiante un desplazamiento constante de tres caracteres.
Identicamos el alfabeto con Z/Z N. Las unidades de mensa-
je son las letras del alfabeto m Z/Z N. El criptosistema de Csar
queda denido por

Denicin 40 Sean K = Z/ZN y P = Z/ZN = C. El criptosiste-


ma de Csar es el criptosistema denido por

F(k, m) = k + m, G(k, M) = M k.
criptografa de clave privada 69

Aqu, las unidades de mensaje tienen longitud 1, es decir, son letras, y el


cifrado de un mensaje de longitud mayor que 1 es simplemente la yuxtaposi-
cin de los cifrados.

Ejemplo 22 Histricamente, el cifrado de Csar es el de-


nido por k = 3 sobre el alfabeto latino, pero aqu usaremos el
ingls (N = 26). Podemos calcular la imagen de cada letra de forma
exhaustiva, usando que F(k, 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, obviamente, G(M) = M 3


mod 27.
Por ejemplo, si nuestro mensaje es

m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI

WANKE NOBIY OUREM YONLY HOPE

tenemos
F(3, m) = WKLVL VRXUP RVWGH VSHUD WHKRX UKHOS PHREL

ZDQNH QRELB RXUHP BRQOB KRSH

F(18, 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.

You underestimate the power of the Dark Side. If you will not ght,
then you will meet your destiny

Descifre, por cualquier medio posible, el siguiente mensaje cifra-


do con un criptosistema Csar:

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 tamao

K = N ,

por lo que es si el alfabeto es pequeo, o incluso aunque sea gran-


de, es factible generar por ordenador las N claves posibles e ins-
peccionar cul de ellas produce un resultado con sentido. Este
ataque, que no es el nico posible, se llama de fuerza bruta.
70 teora de cdigos y criptografa

Criptosistema afn

El sistema de Csar se puede complicar, pero no mucho,


3
Para muchos de nuestros estudiantes usando una funcin afn.
de lgebra Lineal y Geometra, las
funciones anes ya estn cifradas.
Denicin 41 Un criptosistema afn viene denido por K =

(Z/Z N) (Z/Z N), P = Z/Z N = C, y el par de funciones

F(k, m) = am + b, G(k, M) = a 1 (M b),

donde k es una clave de la forma k = (a, b) Z/Z N Z/Z N.

Ejemplo 23 Fijemos N = 26 y k = (11, 4). Si queremos


cifrar C = 2, sabemos que

F(k, C) = F(k, 2) = 11 2 + 4 = 22 + 4 = 0 = A.

Para nuestro mensaje

m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI

WANKE NOBIY OUREM YONLY HOPE

tenemos

F((11, 4), m) = FDOUO UCQJG CUFLW UNWJE FWDCQ JDWVN

GWCPO MERKW RCPOI CQJWG ICRVI DCNW

Ejercicio 8 Cifre el siguiente mensaje con un cifrado afn de


clave k = (25, 8).

You underestimate the power of the Dark Side. If you will not ght,
then you will meet your destiny

Descifre, por cualquier medio posible, el siguiente mensaje cifra-


do con un criptosistema afn:

HFRNO PRNHP OPHOI NMNFM KNYFF YNZLY PRLBP YNLYX OIPYB FUJIF

GFOIN OIPYB HYFFY NZLYP RLBPY NLKLY OVAPY B

Igual que el cifrado de Csar, el cifrado afn es fundamental-


mente dbil debido al tamao del espacio de claves. Si el alfabeto
tiene N signos, el espacio de claves tiene tamao

(Z/Z N) (Z/Z)N = (N) N ,

que no suele ser muy grande. Por tanto, se pueden generar todas
las claves posibles y descifrar el mensaje por inspeccin.
criptografa de clave privada 71

Cifrados de sustitucin
Los dos criptosistemas que hemos visto, el criptosistema de
Csar y el criptosistema afn, son ejemplos de cifrados por sustitu-
cin: aqullos en los que a cada letra (a veces incluyendo en letra
los espacios o smbolos de puntuacin) se le asocia un smbolo
concreto (otra letra o tal vez no), pero siempre el mismo para to-
do el mensaje. Algunos ejemplos notables de esta tcnica fueron:
El disco cifrador de Alberti (Leon Battista Alberti fue un
estudioso genovs del siglo XV) consista, materialmente, en dos
discos concntricos. En el exterior aparecan los 20 caracteres del
Figura 3.2: Disco cifrador descrito en
latn, esto es, los mismos del alfabeto castellano excepto las letras De cifris de L. B. Alberti. Imagen de
H, J, , K, U, W e Y, y se incluyen los nmeros 1, 2, 3 y 4 para cdigos Mateureka.it

especiales. En el disco interior aparecen todos los caracteres del


latn adems del signo & y las letras H, K e Y. Para cifrar un mensaje,
Alice escoge una posicin inicial del disco (por ejemplo, en el
dibujo: disco interior p, disco exterior E) y cambiaba cada letra
de m (en el disco exterior) por su correspondiente (en el disco
interior).
Adems este sistema permita cambiar de posicin en medio
del texto, bien tras cifrar una longitud ja de texto, bien cuando
aparece un smbolo acordado. Descifrar el mensaje para Bob es
igualmente simple (en este caso hay que ir del disco interno al ex-
terno). Conviene jarse en que si hay que enviar el procedimiento
de cifrado, esto puede representar una debilidad potencial del
protocolo.
El escarabajo de oro4, uno de los cuentos ms famosos de Ed- 4
Disponible en espaol en http://
www.gutenberg.org/ebooks/46196, y
gar Allan Poe, donde el protagonista se enfrenta a la tarea de en la versin original inglesa en http:
descifrar este mensaje: //www.gutenberg.org/ebooks/2147.

53305))6*;4826)4.)4);806*;488

60))85;1(;:*883(88)5*;46(;88*9

6*?;8)*(;485);5*2:*(;4956*2(5*4

)88*; 4069285);)68)4;1(9;48081

;8:81;4885;4)485528806*81(9;48;

(88;4(?34;48)4;161;:188;?;

La aventura de los bailarines, uno de los relatos de El retorno de


Sherlock Holmes5, Sherlock descifra varios mensajes y atrapa a un 5
Disponible en http://www.
en espaol, y
peligroso criminal con el siguiente mensaje:
sherlock-holmes.es
en la versin original inglesa en
http://www.gutenberg.org/ebooks/221.

comEherEaToncE
72 teora de cdigos y criptografa

En este relato en concreto aparece un enfoque muy cons-


tructivo del ataque por anlisis de frecuencias que veremos ms
adelante. Entre otras cosas, 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.
Formalmente, podramos denir un criptosistema de sustitu-
cin general de la siguiente forma.

Denicin 42 Sea A un alfabeto de N signos, que identicamos


con Z/Z N. Un criptosistema de sustitucin est denido por P = C = A,
y K = SA una permutacin en A. Las funciones de cifrado y descifrado son

F( , m) = (m), G( , M) = 1 (M).

En la prctica, sin embargo, como hemos visto en los ejem-


plos, se pueden usar alfabetos distintos para los textos en claro y
cifrados, aunque formalmente esto no es ninguna dicultad: 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 denicin.
El tamao del espacio de claves es

SA = S N = N!,

por lo que si N es grande, digamos N = 256, tendramos

256! = 8578177753428426541190822716812326251577
8152027948561985965565037726945255314758
9377440291360451408450375885342336584306
1571968346936964753222892884974260256796
3733256336878644267520762679456018796886
7971521143307702077526646451464709187326
1008328763257028189807736717814541702505
2301860849531906813825748107025281755945
9476987034665712738139286205234756808218
8607012036110831520935019474371091017269
6826286160626366243502284094419140842461
5936000000000000000000000000000000000000
000000000000000000000000000 21684

posibles claves. Esto impide el ataque por fuerza bruta con un


ordenador. Sin embargo, el tamao del espacio de claves no es por
criptografa de clave privada 73

s solo una medida de la seguridad. Los criptosistemas de sustitu-


6
Giacomo Casanova fue muchas cosas
cin son susceptibles de un ataque estadstico, como veremos un (no todas ellas decentes). Entre otras fue
poco ms adelante. diplomtico y espa (la distincin entre
ambos trabajos, todava a da de hoy, es
a menudo difusa) y como tal fue un gran
experto en cifrados y cdigos. En sus
memorias cuenta la siguiente ancdota
La criptografa como arma infalible para ligar: criptosistema de Vige- acerca de cmo utiliz sus conocimientos
en este campo para propsitos algo
nre alejados de su profesin:

El siguiente cdigo que estudiaremos es el cdigo de Vige- Cinco o seis semanas despus, ella (Madame
dUrf) me pregunt si haba descifrado el
nre y durante varios siglos (desde el XVII hasta nales del XIX) manuscrito donde se encontraba el proceso de
transmutacin. Le dije que as era.
se consider seguro e infranqueable6 (aunque la verdad es que no
Sin la clave, seor, perdneme pero creo
era para tanto, como veremos). El cifrado toma su nombre en ho- que es imposible.
Quiere que le diga cul es la clave que ha
nor al criptlogo francs Blaise de Vigenre (1523-1596), y utiliza, utilizado?
realmente, el mismo mtodo que el cifrado de Csar, una sustitu- Si no le importa.
Entonces le dije la palabra clave, que no
cin por desplazamiento de k caracteres en el texto, donde k es perteneca a ningn idioma, y pude ver su
sorpresa. Me dijo que era imposible, pues ella
un nmero mdulo 27. Pero la diferencia (y lo que lo hace mucho era la nica poseedora de la palabra clave y la
ms robusto) es que dicho desplazamiento viene indicado por el guardaba en su memoria, sin haberla puesto
nunca por escrito.
valor numrico asociado a uno de los caracteres de una clave que Le poda haber dicho la verdad (que el
mismo clculo que me permiti descifrar el
se escribe cclicamente bajo el mensaje. texto me haba permitido obtener la clave)
Veamos primero un ejemplo y luego daremos la denicin pero por capricho le dije que un genio me la
haba revelado. Esta falsa revelacin hizo
formal. Como siempre, tenemos nuestro mensaje que Madame dUrf se rindiera a m. Ese da
me convert en el poseedor de su alma, y abus
de dicho poder. Cada vez que pienso en ello
m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI
me avergenzo de lo que hice, y ahora hago
WANKE NOBIY OUREM YONLY HOPE penitencia obligndome a contar la verdad al
escribir estas memorias.
Supongamos que elegimos como clave de cifrado ORGANA. Empe- Cmo se las apa Casanova para
zaramos por cifrar de la siguiente forma: o bien, identicando romper el cdigo de Madame dUrf?
El hecho de que existiese una palabra
letras y nmeros, El mensaje cifrado completo es clave nos da a entender que, en efecto,
se trataba de un cdigo de Vigenre. A
pesar de ser considerado irrompible (por
M = HYOSV SCLXM BSHUK SCEFR ZEUOI INEYP AVUBV
Madame dUrf entre otros, como hemos
WOEQE AOPZE OHRSD EOALM YUPR visto), a un criptoanalista sagaz no se le
escapa el hecho de que, en el fondo, el
cdigo de Vigenre y el cdigo de Csar
Veamos la denicin formal de este criptosistema. no son tan distintos.

Denicin 43 Sea K = (Z/Z26)r = P = C. Se dene el criptosis-


tema de Vigenre de longitud r y clave k = (k1 , . . . , kr ), como el par de
funciones

F(k, m) = k + m, G(k, M) = M k,

donde los bloques de mensaje son de la forma m = (m1 , . . . , mr )

Como se puede ver, una misma letra se puede cifrar de ma-


neras diferentes, dependiendo de qu letra de la clave le toque
para cifrarse en cada momento. La posibilidad de elegir la propia
clave (caso pionero de customizacin7) fue clave para el xito de 7
Neologismo aberrante por personaliza-
cin.
74 teora de cdigos y criptografa

este cifrado.
A pesar de que se crea que el criptosistema de Vigenre
era seguro, es posible (incluso fcil) atacarlo con el mtodo de
Kasiski, que veremos ms adelante. La idea es sencilla en el fon-
do: primero averiguar la longitud de la clave r, y luego resolver
r cifrados de Csar.

una mejora posible de este criptosistema sin memorizar ms cla-


ves, es la siguiente: en lugar de usar la misma clave para todos los
bloques, se usa la clave slo en el primer bloque. En bloques su-
cesivos, la clave que se usa es el texto cifrado del bloque anterior.
Formalmente, si tenemos un mensaje en bloques m = m1 m2 m3 . . . ,
y una clave k, el esquema de cifrado sera

M1 = F(k, m1 ),
M2 = F(M1 , m2 ),
M3 = F(M2 , m3 ),
.................
8
Del ingls, code block chaining, y se usa Este esquema de cifrado se llama cifrado en modo cbc8. El desci-
tambin en cifrados modernos. No es el
nico modo posible; otros son pcbc, cfb,
frado sigue un patrn similar:
ofb, ctr y otros. El normal se llama
ebc, de electronic code book. m1 = G(k, M1 )
m2 = G(m1 , M2 )
m3 = G(m2 , M3 )
................
Ejercicio 9 Cifre el siguiente mensaje con un cifrado Vigen-
re de clave k = DARKSIDE, primero en modo ebc y luego en modo
cbc.

You underestimate the power of the Dark Side. If you will not ght,
then you will meet your destiny

Descifre, por cualquier medio posible, el siguiente mensaje cifra-


do con un criptosistema Vigenre:

UCXSL AGWUW EWKLB WRSZD DWHGQ BPQSF CECUT BWSHQ VVTBY GZOJC

OCLZY LJWYU KFIGP SNOFA GSIWY SSDUF VICWF Y

Criptosistema de Hill
Si el cifrado Vigenre se puede ver como una generalizacin
del cifrado Csar, la idea ahora es generalizar el cifrado afn usan-
do dimensin ms alta.
criptografa de clave privada 75

Denicin 44 El criptosistema de Hill es el denido por k = A


K = GL(n, Z/Z26), i.e., la clave es una matriz invertible n n sobre
Z/Z26, m (Z/Z26)n = P = C, y el par de funciones

F(k, m) = Am, G(k, M) = A1 M.

Ejemplo 24 Tenemos nuestro mensaje de siempre,

m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI

WANKE NOBIY OUREM YONLY HOPE

9 7 ), cuyo
Supongamos que elegimos n = 2, y la clave k = ( 11 6

determinante es una unidad en Z/Z26. Entonces, nuestro mensaje


cifrado ser

m = MHQSQ SWQJE ECCFY UTOFY LMVKJ FJSWP MWHNA

UNNQK JUFKA IJFWE AIIZP LDH

Este criptosistema es bastante difcil de romper si se conoce


nicamente el texto cifrado; pero es posible atacarlo de forma
relativamente fcil si es posible inferir algn trozo del texto en
claro, planteando un sistema de ecuaciones.
Es posible generalizar un poco este criptosistema:

Denicin 45 El criptosistema afn generalizado o de Hill genera-


lizado viene denido por k = (A, b) GL(n, Z/Z26) (Z/Z26)n , con
A GL(n, Z/Z26), una matriz invertible, b (Z/Z26)n un vector.
m (Z/Z26)n = P = C, y el par de funciones

F(k, m) = Am + b, G(k, M) = A1 (M b).

En la prctica, sin embargo, este criptosistema se puede


reducir a un criptosistema de Hill de longitud n + 1, por lo que no
es especialmente til.

Permutando, que es udogreni


Parece ser que el cifrado de permutaciones, en la forma de Locura? Esto es Esparta!

la esctala espartana, es el primero del que tenemos constancia his- Rey Lenidas en 300.

trica. Lo menciona por primera vez Arquloco, en el siglo vii ac,


aunque la primera descripcin clara de la esctala como mecanis-
mo de cifrado criptogrco es del siglo iii ac, de Apolonio de
Rodas9. 9
Nada que ver con Apolonio de Perga, el
gemetra. Apolonio de Rodas era poeta.
En esencia, la esctala era un par de varas de madera de un
grosor determinado. El emisor y el receptor se ponan de acuerdo
76 teora de cdigos y criptografa

en el grosor de la esctala antes de intercambiar mensajes. Para


cifrar un mensaje se enrollaba una piel o papiro alrededor de
una esctala y se escriba el mensaje de forma transversal. Para
descifrarlo, el receptor tena que volver a enrollar el papiro en la
otra esctala.
Por poner un ejemplo, el mensaje ATACALASTERMPILAS, se
podra codicar como ALRLTAMAASOSCTP-AEI-. Aqu ha sido nece-
sario aadir un par de signos en blanco al nal del mensaje para
hacerlo de longitud 20. Esta es una de las debilidades del cifrado
de permutaciones.
Este es un ejemplo de cifrado de trasposicin, que es un caso
particular del cifrado de permutacin. El cifrado por permutacin,
Figura 3.3: Una reconstruccin con piezas
modernas de una esctala espartana con el como su propio nombre indica, consiste en aplicar una permuta-
mensaje ataca las termpilas. cin a bloques del texto en claro m. En este caso, tanto la clave
como el proceso se identican con la permutacin. Normalmente
se utilizaban permutaciones de pocos elementos, por ejemplo 7, y
entonces se permutaban las primeras 7 letras, luego las 7 siguien-
tes, y as sucesivamente.

Denicin 46 Fijado un alfabeto A, un criptosistema de permuta-


cin de r letras del alfabeto A viene dado por P = Ar = C, K = Sr , y el par
de funciones

F( , (m1 , . . . , mr )) = (m 1 (1) , . . . , m 1 (r) ),


G( , (c1 , . . . , cr )) = (c (1) , . . . , c (r) ).

Ejemplo 25 Para

m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI

WANKE NOBIY OUREM YONLY HOPEX XXX

ha sido necesario aadir cuatro smbolos para que el texto tenga


longitud mltiplo de 9, y la permutacin s = ( 17 21 38 54 59 62 73 84 96 ),
tenemos

M = HSOUS RTIIO ESPTE MSDAO UREHR THLOB IMWEP

ENOBI EYAKN UYONE LORMH XXXPX YOE

Descifrar el mensaje no es difcil para Bob; simplemente hay


que reordenar utilizando la permutacin inversa.

Enigma
La mquina Enigma, creada por Arthur Scherbius en 1918
y patentada en 1928, supuso un hito denitivo en la criptografa.
criptografa de clave privada 77

En el fondo era una evolucin de otros modelos electromecni-


cos que intentaban hacer ms sencilla y automatizada la tediosa
tarea de cifrar y descifrar mensajes (sobre todo de contenido mi-
litar). Sin embargo, la sutileza de su diseo y la versatilidad del
sistema la convirtieron, con justicia, en la joya de la corona de la
criptografa de clave privada de la era pre-digital.
Enigma consista, en su modelo ms sencillo (el modelo co-
Figura 3.4: Mquina Enigma modelo m3,
mercial, no el que se dise para uso militar) en tres rotores, que en la que se aprecian las teclas, las ruedas
no eran sino permutaciones de las letras que actuaban consecuti- para la conguracin de los rotores
y la zona de letras de salida, que se
vamente. Pongamos por ejemplo0 la siguiente situacin, donde iluminaban segn se escriba. (Fotografa
los rotores son las las de abajo de los tres primeros bloques (las de Tim Gage, Licencia cc by-sa 2.0)

de arriba estn puestas como cortesa):

Rotor ABCDEFGHIJKLMNOPQRSTUVWXYZ

iii BDFHJLCPRTXVZNYEIWGAKMUSQO

ii AJDKSIRUXBLHWTMCQGZNPYFVOE

i EKMFLGDQVZNTOWYHXUSPAIBRCJ
Figura 3.5: Detalle de un rotor montado
reflector YRUHQSLDPXNGOKMIEBFZCWVJAT (izquierda) y el montaje de los rotores.
El anillo numerado permita deslizar las
Si pulsbamos, por ejemplo E, en primer lugar se mova el conexiones elctricas, aadiendo ms
permutaciones a la conguracin general
rotor iii, de forma que quedaba en esta disposicin de la mquina. (Fotografa en dominio
pblico.)
Rotor ABCDEFGHIJKLMNOPQRSTUVWXYZ
10
sta era una conguracin autntica de
un modelo de Enigma.
iii DFHJLCPRTXVZNYEIWGAKMUSQOC

ii AJDKSIRUXBLHWTMCQGZNPYFVOE

i EKMFLGDQVZNTOWYHXUSPAIBRCJ

reflector YRUHQSLDPXNGOKMIEBFZCWVJAT

y a continuacin se cifraba la letra E de la siguiente forma:

E L L T Z J C F,

donde la echa indica la permutacin del reector. Para la


siguiente letra, digamos la N, se volva a avanzar el rotor III, y el
cifrado era

N E D F S S G Q.

Una vez que el primer rotor daba una vuelta completa, el segundo
se mova un lugar, y cuando el segundo haba dado la vuelta com-
pleta, se mova un lugar el tercero. El reector, obviamente, era 11
En realidad, el movimiento de los
rotores era ms complicado; en algunas
invariante. situaciones algunos rotores daban un
doble paso.
Ejercicio 10 Cuntas letras haba que cifrar para que la
conguracin de los rotores volviese a la posicin original?
78 teora de cdigos y criptografa

Una de las grandes ideas que subyacen en este aparato, y que


lo convierten en una maravilla del diseo industrial, es precisa-
mente la presencia del reector. Gracias a l, el proceso de cifra-
do y de descifrado es exactamente el mismo. Dicho de otro modo,
si Alice decide enviar E a Bob (un mensaje bastante escueto, pero
mensaje al n y al cabo), lo cifra como W y lo enva. Bob entonces,
cifra Q y, como se puede comprobar inmediatamente, gracias al
diseo del cifrado, obtiene E, el mensaje original.
En este modelo simple, la clave de cifrado para Alice (y la
de descifrado para Bob) consista nicamente en tres letras: la
posicin inicial de los tres rotores (en el ejemplo anterior sera
EAB), que se podan escoger libremente, dando lugar a un total
de 263 claves, un nmero ms que respetable para una seguridad
robusta (en los aos 20). Los modelos militares, sin embargo,
12
Los ms complejos, que eran los que eran bastante ms complejos. Uno de los ms bsicos consista
utlizaba la Kriegsmarine, la Marina
alemana, no fueron completamente
tpicamente en:
descifrados hasta la dcada de los 70.
Un conjunto de cinco rotores. De ellos, se elegan tres, que
se podan hacer funcionar en el orden que se quisiera.

Unos anillos que permitan modicar el movimiento del


segundo y el tercer rotor, y tambin el punto de inicio de
la permutacin. Esto es, en lugar de que cada rotor girase
cuando el anterior hubiera dado una vuelta completa, se po-
da hacer que el segundo rotor girara, por ejemplo, cuando N
pasara por la primera posicin en el primer rotor (y anloga-
mente, escoger una posicin concreta para el giro del tercer
rotor).

Un steckerbrett. Esto era un tablero de clavijas, cada una


asociada a una letra. Si se conectaban dos de estas clavijas
mediante un cable, las dos letras conectadas eran intercam-
biadas en el proceso de cifrado por la mquina. Un sistema
de cifra estndar inclua seis stecker pairs.

Ejercicio 11 Estudiar qu datos deba contenter la clave de ci-


frado del modelo militar de Enigma que hemos descrito. Cuntas
eran las posibles claves para ese modelo?

La proeza (no puede denominarse de otra manera) del equi-


po de matemticos, lingistas, criptogrfos y personal de apoyo
del Servicio de Inteligencia Britnico, enclaustrados en la man-
sin de Bletchley Park (los equipos denominados Ultra y Estacin
criptografa de clave privada 79

X) representa un hito espectacular en la coordinacin de investi-


gacin pura, desarrollo tecnolgico y recursos humanos. Cons- 13
Por no mencionar que representa
la mayor inversin jams realizada
tancia de ello deja, por ejemplo, la fabricacin (casi artesanal) de por un gobierno en una investigacin
Colossus, uno de los primeros ordenadores de la historia, pensado y matemtica.

diseado por Alan Turing con el nico objetivo de ltrar las posi-
bles claves alemanas mediante el ataque que l mismo concibi, el
denominado ataque de texto escogido o chosen plaintext attack.

Cifrado de un solo uso

Llegados a este punto podramos preguntarnos si existe


un cifrado que resista, al menos por ahora, cualquier ataque. La
respuesta es s y el protocolo se denomina cifrado de un solo uso,
o one-time pad. Tambin se conoce como cifrado de Vernam. La idea
de este protocolo perfecto es tan sencilla como un cdigo de
Vigenre, pero con una clave tan larga como el propio mensaje.
De esta forma cada letra se cifra de una manera completamente
diferente (si no, lo es por coincidencia, no por mtodo).

Denicin 47 Consideramos una clave de longitud innita k


(Z/Z26) , y aleatoria. Para un mensaje de longitud nita, m = (m1 , . . . , m n ),
las funciones de cifrado y descifrado son

F(k, m) = (m1 + k1 , . . . , m n + k n ),
G(k, M) = (M1 k1 , . . . , M n k n ).

Este criptosistema se llama cifrado de Vernam.

Es inatacable este sistema? La respuesta, sorprendente-


mente (o quizs no tanto porque lo hemos mencionado arriba)
es s. Los problemas de este protocolo no tienen que ver con la
seguridad sino con la gestin y la logstica. Sin embargo, para co-
municaciones donde la seguridad era prioritaria sobre cualquier
otra cuestin, es el sistema que se ha utilizado hasta tiempos rela-
tivamente modernos (concretamente hasta los aos 80-90 en los
ltimos coletazos de la Guerra Fra)4. 14
Una referencia excelente, sobre todo
como novela en s misma, es El espejo de
En la prctica, un one-time pad de andar por casa se puede los espas, de John LeCarr.
tomar como un cdigo de Vigenre, tomando como clave un
texto previamente acordado (tpicamente se trataba de un pasaje
de un libro). A da de hoy, un cifrado de este tipo estara a salvo
de los mejores equipos de las agencias de inteligencia de cualquier
pas.
80 teora de cdigos y criptografa

Cdigos actuales

Nineteen fty ve? Enla codicacin en clave privada, tal y como la entendemos
Marty McFly Back to the future hoy, hay a grandes rasgos dos familias importantes que operan de
forma cualitativamente distinta:

cdigos de flujo. Estos cdigos estn asociados a una funcin


(conocida), denominada generador de claves, que denotarmos K().
Esta funcin genera una clave para cifrar a partir de nuestra clave
privada k, y esta clave K(k) es la que realmente se usa en el ci-
frado. Si la funcin est bien escogida la seguridad es prxima a la
que proporciona un one-time pad. Con bien escogida queremos
decir:

Que la longitud de la clave K(k) debe ser grande. Esto es


necesario porque una clave k genera siempre la misma clave
de cifrado, de manera que este hecho puede usarse para
atacar el descifrado. Cuanto ms largo sea el periodo de
repeticin menos opciones habr de que un ataque de estas
caractersticas tenga xito.

Que la clave K(k) tiene que ser esencialmente aleatoria. Es-


to quiere decir que debe pasar unos test, denominados test
aleatorios, que determinan que, en la prctica, el resultado ob-
tenido es indistinguible de una cadena aleatoria de nmeros.

Que la complejidad del algoritmo para hallar K(k) sea poli-


nomial.

El cdigo de ujo ms 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 inalmbricas.5
da de hoy, no tanto por el uso del cifrado
rc4, sino porque el protocolo wep est
diseado de forma tal que suciente
informacin criptogrca se ltra en
cdigos de bloque. Estos cdigos funcionan rompiendo el men-
el trco de los datos, hasta ser posible saje en bloques de un tamao prejado anteriormente y, por su-
hallar la clave inicial.
puesto, conocido. En los casos que veremos con detalle son de 64
bits (des) y 128 bits (aes). La clave para cifrar se aplica entonces
a cada bloque por separado. En estos cdigos, la misma opera-
cin de cifrado se realiza varias veces (16 en el caso de des, una
cantidad variable en el caso de aes).

antes de ver el cdigo des con detalle, vamos a deternenos


en un cdigo en bloque no iterado: el cifrado de Feistel que, como
criptografa de clave privada 81

veremos ms adelante, es la base del sistema des y que tiene cier-


tas similitudes con los cifrados de ujo. En el cifrado de Feistel
jamos (pblicamente) una funcin F(, ) 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. Operamos como sigue:

1. Dividimos nuestro mensaje en dos mitades: m = [lr].

2. Hallamos F(k, r).

3. Calculamos6 M = [rl F(k, r)]. 16


La operacin , en el contexto de
cifrado binario, es la operacin denida
por 1 + 1 = 0 + 0 = 0, 1 + 0 = 0 + 1 = 1, o
A primera vista no parece gran cosa. De hecho, la primera mitad sea, es la suma sin llevada, tambin llamada
XOR.
del texto cifrado es la segunda mitad del texto original. Sin embar-
go, si realizamos una nueva codicacin, ya todo resto del texto r0 r1
original desaparece. El protocolo fue originalmente diseado (por
Feistel y otros investigadores de ibm en los aos 70) pensando Fk 1

desde un principio en aplicarlo de forma iterada.


l0 l1
Gracias a su peculiar y simple estructura, el descifrado es
Figura 3.6: Esquema de una ronda de
muy simple. Bob, una vez recibido M = [rl F(k, r)] = [LR] cifrado Feistel. La clave k 1 se usa sobre la
y calculada F(k, r) (Bob conoce r ya que r = L), puede recuperar mitad derecha del mensaje y al resultado
se le aplica con la mitad izquierda.
m = [R F(k, L)L]. Notemos que la sencillez de ambos procesos
no dependen de la funcin F(, ), lo cual conere a este protocolo
una enorme capacidad de adaptacin a las necesidades concretas
de Alice y Bob.

DES

El Data Encryption Standard odes ha sido el protocolo de


cifrado en clave privada ms usado desde mediados de los 70
(cmo eran los ordenadores entonces?) hasta el ao 2000 con la
llegada de aes-Rijndael. El asombroso progreso en el campo de
la computacin del que esos aos fueron testigo, y el hecho de
que des se mostrara resistente a los sucesivos ataques dan una
idea de su enorme versatilidad y de lo bien diseado que estaba
el protocolo. La idea bsica est en utilizar de forma iterada las
rondas de Feistel que acabamos de ver. Concretamente, los datos
tcnicos del sistema son los siguientes:

Es un cdigo en bloque, que usa bloques de 64 bits (en ascii,


tendramos 8 bloques de 8 caracteres).

La clave secreta que comparten Alice y Bob, k, posee 56 bits.


82 teora de cdigos y criptografa

La operacin bsica es un cifrado de Feistel, que se repite 16


veces (ms detalles a continuacin).

Recordemos que el cifrado de Feistel operaba esencialmente


Permutacin IP como sigue:
58 50 42 34 26 18 10 2 m = [lr] M = [rl F(k, r)]
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6 Aparte de realizar esta operacin 16 veces, des comienza apli-
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1 cando una permutacin y termina aplicando la inversa de esta
59 51 43 35 27 19 11 3 permutacin. El esquema sera:
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).

El primer y el ltimo paso son sencillos, simplemente aplicamos la


Permutacin FP
permutacin IP y su inversa (tambin llamada FP).
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, obtenidas a partir de la clave original de 48 bits. 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,
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25 1. Cada 7 bits, se intercala un bit de paridad, se obtienen 64
bits.
Tabla 3.3: Permutaciones inicial y nal del
des. Las imgenes se leen siguiendo las 2. Se aplica la permutacin (PC 1), se obtiene (PC 1)(k),
las. Esto es, el bit 1 pasa a ser el 52, el 2
pasa a ser el 50 y as sucesivamente.
de 56 bits, descartando los bits de paridad.

3. (PC 1)(k) se divide en dos mitades [c0 d0 ].


(PC 1)
A c0 y d0 se les aplica la siguiente operacin:
57 49 41 33 25 17 9
1 58 50 42 34 26 18
(a) Si estamos en la ronda 1, 2, 9 o 16 giramos (ciclamos) un
10 2 59 51 43 35 27
19 11 3 60 52 44 36 bit a la izquierda.
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. Los c i , d i obtenidos, vuelven a unirse para formar [c i d i ], de
56 bits. Se aplica ahora (IP 2) que los reordena y descarta
los bits 9, 18, 22, 25, 35, 38, 43 y 54, obteniendo k i de 48 bits.
(PC 2)

14 17 11 24 1 5
3 28 15 6 21 10 lo realmente interesante del cifrado des es, por tanto, el
23 19 12 4 26 8
16 7 27 20 13 2 funcionamiento de la funcin bsica de cada ronda de Feistel. La
41 52 31 37 47 55 funcin F no es compleja, aunque s bastante intrincada. Primero
30 40 51 45 33 48
44 49 39 56 34 53 veamos los pasos:
46 42 50 36 29 32
1. La mitad derecha de nuestro mensaje original, que denota-
Tabla 3.6: Permutaciones (PC 1) y mos r, posee 32 bits. Mediante una permutacin, denomina-
(PC 2) para el clculo de las 16 claves da permutacin de expansin, o simplemente E, esos 32 bits
de rondas Feistel para el des.
se convierten en 48.
criptografa de clave privada 83

2. Esos 48 bits se suman sin llevada (operacin xor o ) con 48


bits que provienen de la clave k.

3. Los 48 bits resultantes de esta suma se distribuyen en grupos


de 6 y se introducen en 8 S-cajas, de cada una de las cuales
salen 4 bits.

4. Los 32 bits que salen de las 8 S-cajas se permutan utilizando


una permutacin de S32 , denotada habitualmente P.

Veamos con ms detenimiento cada paso: En el primer pa-


so, aplicamos E que no es en sentido estricto una permutacin,
ya que toma 32 bits y nos devuelve 48, a costa de repetir 16 de
estos bits (y reordenarlos de forma no trivial). El motivo de esta
expansin, o ms precisamente, cules son los bits que se repiten
Permutacin E
y dnde se colocan se har explcito luego.
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 cul de las 16 rondas Feistel sea la que 8 9 10 11 12 13
12 13 14 15 16 17
estamos efectuando. 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. Notemos que los bits de una S-caja son todos 28 29 30 31 32 1
distintos (esto es, nunca provienen dos del mismo bit original de
m). De hecho, el diseo es tal que, en cada caja, de los 6 bits que
Permutacin P
entran, 4 son siempre bits que estn representados en otra caja.
16 7 20 21
Esto es esencial para que el proceso sea reversible, ya que al pasar 29 12 28 17
de 6 bits a 4 no se pierde informacin. 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, entendidos como un nmero en base 2, nos 19 13 30 6
22 11 4 25
dan un entero entre 0 y 3, al cual le sumamos 1.
Tabla 3.9: Permutaciones E y P para cada
Los bits 2, 3, 4 y 5, entendidos como un nmero en base 2, ronda de Feistel del des.
nos dan un entero entre 0 y 15, al cual le sumamos 1.

Usando ambos nmeros, miramos en la caja, que no es ms


que una matriz 4 16, y obtenemos un elemento de esta
matriz, que es un entero entre 0 y 15. Las cifras en base 2 de
este entero es la salida de la S-caja.

El cuarto paso no es ms que aplicar la permutacin P. Que


ya est bien, digo yo.
84 teora de cdigos y criptografa

Ejercicios
Ejercicio 12 Al enfrentarnos a un texto cifrado por sustitu-
cin tipo Csar, un mtodo alternativo a la fuerza bruta consiste
en hacer un diagrama de frecuencias con los smbolos del texto.
Explica cmo el anlisis de este diagrama puede conducirnos a
averiguar la clave de cifrado.

Ejercicio 13 Descifra el siguiente mensaje en ingls, cifrado


por sustitucin

PXPXKXENVDRUXVTNLXHYMXGMAXYKXJNXGVRFXMAHWGXXWLEHGZXKVBIAXKMXQM

Ejercicio 14 Descifra el texto de El escarabajo de oro. Est


escrito en ingls.

Ejercicio 15 Estudia de cuntas claves distintas se puede


disponer usando el cifrado de funciones anes bidimensionales.

Ejercicio 16 Razona por qu el anlisis de frecuencias no


es til para el cifrado por funciones anes bidimensionales. Es
posible que alguna variante de este ataque s sea til?

Ejercicio 17 Cifra el texto siguiente:

SWEARNOTBYTHEMOONTHEINCONSTANTMOON

mediante una funcin afn bidimensional (ojo, consideramos 26


smbolos) dada por

2 3 a 11
A= , = .
7 8 b 23

Ejercicio 18 Se ha interceptado un mensaje. Sabemos que el


emisor del mensaje utiliza un cifrado por funciones anes bidi-
mensionales, y el siguiente alfabeto:

A = 0, ..., Z = 25, _ = 26, . = 27, , = 28, ? = 29.

El texto del mensaje es S_GNLIKD?KOZQLLIOMKUL.VY y sospechamos


que el emisor ha nalizado el mensaje con su rma: KARLA. (inclu-
yendo el punto nal). Descifra el mensaje.

Ejercicio 19 Cifrar el siguiente mensaje segn el mtodo de


Vigenre con la clave HAMLET.

THERE ARE MORE THINGS IN HEAVEN AND EARTH HORATIO THAN ARE

DREAMT OF IN YOUR PHILOSOPHY


criptografa de clave privada 85

Ejercicio 20 Disea un procedimiento para descifrar correc-


tamente un mensaje cifrado con Vigenre en modo cbc.

Ejercicio 21 Supongamos que tenemos que descifrar un texto


del cual sabemos que ha sido cifrado por el mtodo de Vignere.
Explica cmo es posible conrmar o descartar una hiptesis sobre
la longitud de la clave (formulada, por ejemplo, usando el mtodo
Kasiski), calculando un nico diagrama de frecuencias.

Ejercicio 22 Intenta descifrar el siguiente texto. Est escrito


en ingls y cifrado por el mtodo de Vignere.

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 permutacin

1 2 3 4 5
k=
4 3 5 2 1

al siguiente mensaje

MUCHOS AOS 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, cifrado por una


permutacin de longitud indeterminada.

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
86 teora de cdigos y criptografa

Ejercicio 25 Estudia qu datos deba contenter la clave de


cifrado del modelo militar de Enigma que descrito en los apuntes
de teora. Cuntas eran las posibles claves para ese modelo?

Ejercicio 26 Descifra el siguiente mensaje codicado en


Enigma:

RFXLH PYIYW XGHHD CIJVR WVBXW RHMGB JIROE DLHWD JCLPS LIF

Las siguientes claves diarias utilizadas son:

Rotores: 3-1-2

Posicin de giro del rotor siguiente: 1-1-1

Stecker pairs: AF WZ PR HL

Posicin inicial de los rotores: F P W

Se recomienda usar el simulador de Enigma disponible en la pgi-


17
http://www.bletchleypark.org.uk/ na web de Bletchley Park7.
content/enigmasim.rhtm

Ejercicio 27 Para reforzar la seguridad del sistema Enigma,


los alemanes decidieron que no se cifrara todo el texto con la cla-
ve del da. En lugar de eso, slo se cifraran las tres primeras letras
de cada mensaje, que corresponderan con una nueva posicin
inicial de los rotores, con la que se cifraba realmente el mensaje.
18
Paradjicamente, este esquema supuso Explica cmo esto aumentaba la seguridad del sistema8.
una debilidad por el uso habitual de
ciertas claves de mensaje (generalmente
vulgarismos o nombres personales). Ejercicio 28 Un ataque de texto escogido o chosen plaintext
Explica cmo una eleccin inadecuada
de claves de mensaje hacen que este attack se basa en la hiptesis de que en un determinado texto ci-
procedimiento se convierta en un gran
frado aparece una palabra para intentar deducir la clave, como en
fallo de seguridad que compromete todo
el sistema a partir del error de una nica el ejercicio 3.08. Razona en qu tipo de cifrado (de los estudiados
estacin.
en este tema) es ms ecaz este ataque. En Bletchley Park se utili-
z fundamentalmente sobre mensajes cifrados que incluan partes
meteorolgicos y sobre las ltimas palabras de los mensajes.

Ejercicio 29 Suponemos que ciframos en bloques de 64 bits y


con claves de 32 bits. Describe explcitamente un cifrado iterado
de Feistel con tres aplicaciones, donde la funcin F sea simple-
mente
F(k, r) = (k r),

donde es la operacin que permuta los 16 primeros bits con los


16 ltimos.
criptografa de clave privada 87

Ejercicio 30 Como des cifra en bloques de 64 bits, en la prc-


tica, un bloque cifra un texto de 8 caracteres ascii (imprimibles
o no). Cifra el mensaje RIJNDAEL tomando como clave (de 56 bits,
o sea, 7 caracteres ascii) FEISTEL. Se recomienda disponer de
bastante tiempo por delante.
CRIPTOGRAFA DE
C L AV E P B L I C A
4
Lobos y corderos, y lechugas, y regalos

Planteamos un antiguo problema, bastante simple:

Un barquero tiene que transportar al otro lado de un ro tres cosas:


un lobo, un cordero y una lechuga. El problema es que slo puede
transportar una cosa cada vez, y si deja solos al cordero y a la lechu-
ga, cuando vuelva slo quedar uno de ellos (y no ser la lechuga).
Del mismo modo, si deja solos al lobo y al cordero, cuando vuelva
se lo va a encontrar todo perdido de sangre. Qu puede hacer el
barquero?

Aunque resulte algo extrao, este problema no est muy ale-


jado del que motiv, a principios de los aos 70, el nacimiento de
un concepto que revolucion completamente la criptografa mo-
derna: la clave pblica. Los primeros en plantearse un concepto 1
En realidad no, pero la condencialidad
de los archivos del GCHQ, el servicio de
diferente de criptografa fueron Diffie y Hellman a mediados de comunicaciones del espionaje britnico,
los 70. hicieron que sta fuera la historia ocial.

En aquel entonces, el enorme desarrollo de las comunica-


ciones y la tecnologa de la informacin que se experiment a
partir de los aos 60 comenz a hacer posibles aplicaciones crip-
togrcas a entornos distintos de los tradicionales (el militar,
bsicamente). En concreto, el mundo comercial comenz a intere-
sarse por las posibilidades que ofreca la comunicacin segura, al
principio entre corporaciones (evitando los problemas derivados
del espionaje industrial), hasta llegar al da de hoy en el cual tam-
bin las comunicaciones entre clientes y empresas estn sujetas a
encriptaciones que velan por la privacidad de estos mensajes.
En trminos criptogrcos, el problema al que se enfrenta-
ron Diffie y Hellman era complejo. Las comunicaciones se esta-
ban desarrollando a una velocidad vertiginosa, y por primera vez
en la historia haba grupos no militares interesados en tener ca-
nales seguros: las nuevas empresas demandaban comunicaciones
90 teora de cdigos y criptografa

rpidas (eso se lo dejamos a los ingenieros) y ables. De hecho, a


diferencia de la situacin tipo en el mbito militar, donde el pro-
tocolo era uno a uno, las empresas normalmente queran poder
comunicarse con cualquier otra empresa.
Ellos pensaban en realidad en una dicultad derivada de
la criptografa de clave privada, que no era otra que el intercam-
bio de claves. Con este aumento exponenecial de mensajes, los
usuarios de protocolos criptogrcos se enfrentaban al siguiente
problema: las claves bien usadas tienen una vida til y, si se quiere
que el sistema sea robusto, es procedente tener un sistema e-
xible y sencillo de intercambio de claves que se pueda usar con
frecuencia. El problema que se planteaba para la gestin de claves,
en el contexto de la criptografa de clave privada, era por tanto
muy difcil con las herramientas disponibles.
El problema que ilustra mejor la inspiracin de Whiteld
Diffie y Richard Hellman es el siguiente:

Ejemplo 26 Alice quiere enviar un regalo de cumpleaos


a Bob que est pasando unas vacaciones en el extranjero. Sin
embargo, Bob le dice que all (en el extranjero, as, en general)
el correo no es nada seguro y que cualquier paquete que no vaya
en una caja con candado es sistemticamente abierto y robado.
Alice puede comprar candados y Bob tambin, pero obviamente
ninguno de los dos tiene una llave que le valga a los candados que
compre el otro. Cmo puede hacer llegar Alice su regalo?

La idea de Diffie y Hellman cristaliz en el denominado


DHEP (DiffieHellman Exchange Protocol) y se centraba en el
siguiente hecho: escojamos un primo p y un g, un natural menor
que p. Ahora escogemos un entero a Z cualquiera. Entonces:

Calcular g a mod p es un problema sencillo (complejidad


logartmica, concretamente O(log a log2 p), ver ejercicio
1.17.).

Sin embargo, el problema inverso (esto es, dado h del cual


sabemos que es de la forma g a mod p, hallar a) es un proble-
ma extremadamente complejo.

Este problema,

Conocidos {h = g a mod p, p, g}, hallar a


criptografa de clave pblica 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, funciones en las que es muy sencillo calcular la
imagen de un elemento dado, mientras que hallar la inversa de un
elemento concreto es mucho ms complejo an en este caso, en el
que existen innitas soluciones para a. Hay varios algoritmos que
resuelven este problema, la mayora de los cuales estn diseados
para ser ecaces sobre familias particulares de mdulos.

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, por un canal de comunicacin
no necesariamente seguro que van a usar para generarla un primo P y
un G mod P. Por otra parte, Alice escoge un entero a Z y Bob
escoge un entero b Z. Entonces Alice calcula H1 = G a y lo enva
a Bob, que hace lo propio con H2 = G b . Finalmente Alice puede
hallar
h = H2a = G ab

y Bob puede hallar


h = H1b = G ab ,

que ser la clave que usen ambos en lo sucesivo.

Si nos situamos en la perspectiva de Eve, que quiere hallar la


clave acordada, podemos comprobar que la informacin a la que
tiene acceso, porque ha sido transmitida por un canal no seguro,
sera:
P, G, H1 = G a , H2 = G b .

Si Eve quiere hallar h necesita entonces a o b, con lo cual


debe resolver el problema del logaritmo discreto, y esto (si estn
bien escogidos los actores matemticos de este drama) no es facti-
ble computacionalmente. A fecha de hoy, el DLP no es resoluble
si uno ja P 21024 .

For your eyes only.

Tras la idea de DiffieHellman, establezcamos un protocolo


formal de criptografa de clave pblica. La idea fundamental es
abandonar los conceptos tradicionales:
92 teora de cdigos y criptografa

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 funcin 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 slo remitente y


destinatario puedan desencriptar: en lugar de eso encriptare-
mos de forma que slo el destinatario pueda desencriptar.

As, tenemos que Alice tiene una clave pblica K A que todo
el mundo conoce. En la vida real, todas las claves aparecen y se
pueden mirar en una especie de listn telefnico, y as mismo Bob
tiene la suya K B (incluso Eve, como usuaria del sistema). Lo im-
portante es que K A viene acompaada, cuando se crea, de una
clave privada k A que es la que se usa para desencriptar. Terica-
mente k A se puede hallar a partir de K A, pero en la prctica no es
posible, y slo Alice conoce k A (y anlogamente slo Bob conoce
k B ,...).
Tenemos una funcin de encriptacin pblica que depende
de dos parmetros: la clave de encriptacin pblica y el mensaje a
encriptar. Tenemos tambin una funcin de desencriptacin que
verica dos condiciones:

El clculo de la desencriptacin conociendo la clave de des-


encriptado es rpido.

El clculo de la desencriptacin sin conocer la clave de desencrip-


tado es demasiado lento.

Si Alice quiere enviar un mensaje m a Bob, realiza el clculo


de encriptar, con la clave pblica de Bob, y halla el mensaje en-
criptado M. Este mensaje ni siquiera Alice podra descifrarlo (aunque
no lo necesita, porque sabe qu pone). Enva M y entonces Eve, si
quiere recuperar m debe desencriptar M sin conocer k B , mientras
que Bob puede realizar este clculo sin problema.
Por tanto, la idea es dejar de pensar en la encriptacin como
un protocolo entre dos usuarios idnticos para pasar a pensar
criptografa de clave pblica 93

en un protocolo donde ser emisor y ser receptor son conceptos


distintos, porque poseen informacin distinta. En este contexto
se encripta pensando en que slo el receptor pueda leer el mensaje. sta
diferencia de acceso a la informacin hace que estos cdigos se
denominen en ocasiones cdigos asimtricos, por contraposicin
a los cdigos simtricos, que seran aqullos en los que emisor y
receptor (legtimo) comparten la misma informacin.
Es obvio que el diseo 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 funcin trampilla, ese sutil sacricio de informacin que hace
pblico un dato (la clave de encriptacin) que, tericamente, per-
mite calcular otro dato (la clave de desencriptacin) el cual, sin
embargo, hay que mantener en secreto.
Las funciones trampilla no son sencillas de encontrar. De
hecho, en los ltimos aos cada problema del que se sabe que es
un buen candidato a funcin trampilla ha sido probado como base
para un criptosistema de clave pblica. En la actualidad, existen
varias opciones interesantes. No por casualidad, casi todas las
funciones que se usan tienen que ver con aritmtica modular:

La factorizacin. 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 funcin trampilla se utiliza en la actualidad
en el protocolo rsa, que veremos a continuacin con detalle.
Es el mtodo ms 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 mtodo de
encriptacin llamado ElGamal, que es la base de dos de los
mtodos ms usados en internet hoy en da: pgp y gpg.

El problema de las races 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 raz cuadrada mdulo n) es impracticable.
Este problema es la base del mtodo de Rabin.

Vamos a modicar adecuadamente la denicin de sistema


criptogrco para adaptarlo a la situacin de criptografa de clave
pblica.
94 teora de cdigos y criptografa

Denicin 48 Un sistema criptogrco de clave pblica es un par


de funciones

F K P C, G K C P,

donde K es el conjunto de claves pblicas 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 verica
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 pblicamente.

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 anlisis criptogrco
del sistema, de forma pblica y abierta, y de preferencia,
con una prueba matemtica de la dicultad de resolver el
problema.

Cifrado RSA.

En el protocolo RSA no hay ningn 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 nmero E A, primo con (N A).

Calcula d A, vericando E A d A = 1 mod (N A).

La clave pblica de Alice es entonces el par (N A , E A). El


resto lo mantiene privado.
criptografa de clave pblica 95

Supongamos que Bob quiere enviar un mensaje m a Alice.


Supongamos, sin perder generalidad, que m < N A. Entonces Bob
lo encripta haciendo

M = m E A mod N A .

Una vez recibido M, 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 ,

por el Teorema de Euler.

Observacin 12 Los parmetros de seguridad actuales son


NA 2 1024
. Adems de eso, la eleccin de p A y q A debe ser cui-
dadosa, para evitar que la factorizacin de N A sea factible por
alguno de los mtodos especcos existentes en la actualidad (esto
es, mtodos que no son buenos en general, pero que funcionan muy
bien para factorizar determinados nmeros).

Ejercicio 31 Si Eve quiere descifrar el mensaje, una opcin


obvia es factorizar N A y actuar como lo hace Alice. Sin embargo
lo que Eve necesita es d A. Es necesario factorizar N A para resolver
este problema?

Ejercicio 32 Un mensaje rsa se llama no cifrable si verica


que m e m (mod N). En un sistema rsa siempre existe mensajes
no cifrables, por ejemplo m = 0, m = 1 y m = n 1. Demuestra que
el nmero de mensajes no cifrables es

(1 + mcd(e 1, p 1))(1 + mcd(e 1, q 1)),

y por tanto, es un nmero pequeo en la prctica. Se puede usar el Teorema Chino del
Resto para calcular las soluciones de
la ecuacin mdulo cada primo por
separado, y la Frmula de Euler para
Cifrado de ElGamal contar las soluciones parciales. Atencin
al cero, que siempre es solucin.
En el cifrado de ElGamal, todos los usuarios del sistema
comparten cierta informacin. Se escoge un cuerpo nito FP , que
debe ser muy grande, y otro primo Q de tal forma que Q(P 1).
Se escoge, as mismo, una base comn, G FP , que tenga orden
divisible por Q. En realidad pedimos que

G (P1)/Q 1 mod P.

Ahora Alice crea su clave pblica escogiendo un entero n A,


con la nica condicin de que se cumpla n A < P 1. La clave
96 teora de cdigos y criptografa

pblica de Alice es entonces

E A = G n A mod P.

La encriptacin se realiza como sigue: si Bob quiere encrip-


tar m, primero genera una clave efmera h (un entero cualquiera), y
calcula
M = (M1 , M2 ) = (G h , m E Ah ) .

Alice, al recibir M, descifra como sigue

M2 m E Ah
= = m mod P.
M1n A G hn A

Observacin 13 Los parmetros de seguridad actuales son


P 21024 , Q 2160 . Una de las grandes ventajas de este protocolo
es que las elecciones de parmetros que deben ser cuidadosas las
realiza el sistema, mientras que a los usuarios individuales slo les
compete elegir la clave privada n A, que no tiene incidencia sobre
la fortaleza del protocolo.

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 races


cuadradas, que mencionamos anteriormente. Este problema es
esencialmente equivalente en dicultad a factorizar (ver hoja de
problemas para una de las implicaciones).
Para crear su clave, Alice escoge dos primos p A y q A, veri-
cando
p A = q A = 3 mod 4,

y un entero E A tal que 0 < E A < N A = p A q A. La clave pblica de


Alice es, entonces, (N A , E A).
Si Bob quiere enviar un mensaje m a Alice, calcula

M = m (m + E A) mod N A .

Alice, al recibirlo, calcula



E A2 EA (2m + E A)2 E A 2m + E A E A
+M = = mod N A ,
4 2 4 2 2 2
criptografa de clave pblica 97

con lo cual, en realidad, Alice calcula varios descifrados (porque


hay varias races cuadradas, ver ejercicio 4.10.), pero obviamente
slo uno tendr sentido.

Observacin 14 El hecho de escoger p A y q A congruentes


con 3 en Z/Z4 se basa en que, en ese caso, el clculo de races
cuadradas mdulo N A es mucho ms rpido usando el algoritmo
de Shanks, que no estudiaremos en este curso.

Ejercicio 34 Por qu se encripta haciendo m (m + E A) en


lugar de simplemente m2 ?

Intermedio aritmtico: races cuadradas modulares

Este parece un buen momento para hablar de races cuadra-


das modulares. En otras palabras, queremos resolver la ecuacin

x 2 a (mod m), a y m coprimos.

Reduccin a potencias de primos En primer lugar, podemos reducir


el problema a potencias de primos. Sea m = p1e1 . . . pre r . Entonces,
es claro que si x 2 a (mod m) tiene una solucin, entonces es
tambin solucin de las congruencias x 2 a (mod p ei i ). Rec-
procamente, si se encuentran soluciones de la r ecuaciones en
congruencias, usando el Teorema Chino del Resto se tiene una
solucin a la congruencia original.

Reduccin de potencias de primos impares Ahora, vamos a reducir ca-


da congruencia de potencia de primo. Veamos en primer lugar el
caso de los primos impares. Bsicamente, 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 . Sea k k una solucin de la
congruencia x 2 a (mod p k ). Sea y k una solucin de 2x k y k 1
(mod p k ). Entonces x k+1 = x k (x k2 a)y k es una solucin
de x 2 a (mod p k+1 ). Ahora hacemos la siguiente armacin:
si existe una solucin x para la congruencia x 2 a (mod pn ),
entonces existe exactamente otra solucin, que es x.
En efecto, supongamos que x 2 y 2 a (mod pn ). Entonces
pn , y por tanto p, divide al producto (x + y)(x y). Si p dividiera
a los dos factores, tambin dividira a la suma y a la diferencia,
que son 2x y 2y, y como p es un primo impar, dividira a x y a y.
Ahora bien, en esta situacin, como x 2 = kpn + a, tendramos que
98 teora de cdigos y criptografa

p divide a a, lo que no es posible por hiptesis. Por tanto, p no


divide ni a x ni a y. Por tanto, p divide bien a x + y, bien a x y,
pero no a los dos. Por tanto, pn divide tambin a uno de los dos,
luego x pmy (mod pn ).

Reduccin de potencias de 2 Las potencias de 2 se tratan aparte:


recordemos que a y m son coprimos; por tanto a tiene que ser
impar.

1. La ecuacin x 2 a (mod 2) tiene exactamente una solu-


cin x 1 (mod 2).

2. La ecuacin x 2 a (mod 4) tiene solucin si y slo si a 1


(mod 4), en cuyo caso las soluciones son x 1 (mod 4) y
x 3 (mod 4).

3. Para n 3, la ecuacin x 2 a (mod 2n ) tiene cuatro solucio-


nes si a 1 (mod 8) y no tiene solucin en los otros casos.
Veamos cmo se construyen.

Si a 1 (mod 8), entonces x 2 a (mod 8) tiene exactamente


cuatro soluciones (1,3,5 y 7). Para n > 3, operamos por induccin:
supongamos que x k2 a (mod 2k ) para algn k 3. Entonces,
2k divide a x 2 a. Si (x 2 a)/2k es impar, ponemos i = 1, y si es
par, ponemos i = 0. Entonces x k+1 = x k + i2k1 es solucin de
2
x k+1 a (mod 2k ).

Mdulo primo impar Slo falta ver el caso de x 2 a (mod p), con
p un primo impar y a coprimo con p. Si x 2 a (mod p) tiene
solucin, tiene exactamente dos soluciones, x y x. Sabemos (por
Euler) que la congruencia tiene solucin si y slo si a (p1)/2 1
(mod p). Ahora bien, es distinto saber que existe una solucin
que dar un algoritmo. Para el caso en que a 3 (mod p), en-
tonces x = a(p+1)/4 es una solucin. Para el caso a 1 (mod p)
no existe un frmula anloga pero se puede usar el algoritmo de
Tonelli-Shanks.

Yo no he dicho eso. Bueno, s.

La ley de accin y reaccin o el principio del yin y el yang


tambin tienen su versin criptogrca. En efecto, la criptografa
de clave pblica nos ha proporcionado, de repente, una mane-
ra mucho ms ecaz de gestionar las claves en un entorno de
criptografa de clave pblica 99

mltiples usuarios: basta un listado pblico (y un protocolo bien


diseado, 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. Para empezar, un aspecto que se ha
perdido con el uso de las claves privadas es el de la conanza. Con
la clave privada, cuando Bob reciba un mensaje encriptado de
Alice, poda estar razonablemente seguro de que, en efecto, el
mensaje haba sido enviado por Alice. En cambio, en el nuevo
contexto, cualquiera puede enviar a Bob un mensaje, rmarlo
como Alice y cmo puede saber Bob que en efecto es Alice quien
lo manda?
Los problemas de suplantacin de identidad cobraron un
inters enorme en criptografa cuando por primera vez se dise
un ataque a un protocolo (en este caso el DHEP que vimos antes)
bajo la hiptesis de que el atacante (Eve, cmo no) era capaz de
ngir identidades. Este tipo de ataques se conoce, habitualmente,
con el nombre de man in the middle.

Ejemplo 27 La cosa va como sigue: Supongamos que, en


efecto, Eve es capaz de hacerse pasar por Bob cuando escribe
a Alice, y viceversa (nada descabellado en un mundo donde las
comunicaciones rara vez son personales).
Entonces en el DHEP, Eve intercepta los mensajes de Alice
a Bob y, actuando como Bob, acuerda una clave privada con Alice,
pongamos K A,E . Actuando de forma anloga con Bob, acuerda una
clave privada con l hacindose pasar por Alice (K B,E ).
Ahora supongamos que Alice quiere mandar un mensaje a
Bob. Lo codica con K A,E y lo manda. A Eve le basta interceptar
el mensaje, descifrarlo (posee la clave K A,E ), volver a cifrarlo con
K B,E y enviarlo a Bob. Bob recibir el mensaje convencido de que
viene de Alice (y as es, en cierto sentido). De esta forma Eve
puede monitorizar toda la correspondencia sin ser ni siquiera
detectada.

La solucin a los eventuales problemas de identidad falsa


que se plantearon en los protocolos de clave pblica se resolvieron
con el uso de la denominada rma digital.

Ejercicio 35 Intenta pensar cmo se podra garantizar la


identidad del remitente en un protocolo de clave pblica. La
solucin, despus de la publicidad.
100 teora de cdigos y criptografa

La idea es muy simple. Pongamos que estamos en una co-


munidad con un protocolo de cifrado pblico y que Alice quiere
enviar un mensaje m a Bob, para lo cual lo cifra con la clave pbli-
ca de Bob k B , obteniendo M. A continuacin, Alice genera una
rma s (que puede ser simplemente su nombre y direccin, o una
frase que le guste o lo que sea) y lo codica usando SU propia cla-
ve privada de descifrado k A, obteniendo S. Finalmente Alice enva
[MS].
Bob al recibir [MS] decodica la primera parte usando su
clave privada, que slo l conoce, k B , y recuperando m. Despus
decodica S usando K A, la clave pblica de Alice, y recuperando s.
Esto conrma que slo Alice puede haber mandado el men-
saje. En efecto, cualquiera puede decocar la rma (slo hace falta
K A, y es pblica), pero en la rma no hay ninguna informacin re-
levante. La nica informacin que contiene es que el remitente es,
inequvocamente, Alice, puesto que slo ella puede haber codicado
un mensaje de tal forma que K A lo decodique.

Ejercicio 36 Explica por qu no es una buena idea que Alice


escoja un texto jo como rma.

Ejemplo 28 En el protocolo RSA, una opcin para rmar el


texto por parte de Alice es hacer

[ms] 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 rma
estandarizado por el NIST (National Institute of Standards and
Technology), jugando un papel anlogo al DES en encriptacin.
Es muy parecido a los sistemas de rma de Schnorr y de ElGamal
(ver hoja de ejercicios).
Alice crea sus parmetros para rma digital como sigue:
primero escoge un primo Q A 2160 , luego escoge otro PA 21024 ,
vericando PA = 1 mod Q A.
El grupo FPA tiene un nico subgrupo cclico de orden Q A.
Alice escoge un entero aleatorio g y calcula

g (PA 1)/Q A mod PA .

Si este clculo es disinto de 1, G A = g (PA 1)/Q A es un genera-


dor del subgrupo cclico de orden Q A. Alice nalmente escoge un
entero aleatorio 0 < x A < Q A, como clave privada, y adopta como
criptografa de clave pblica 101

clave pblica

(Q A , PA , G A , YA = G Ax A mod PA) .

Para rmar un mensaje, Alice escoge una rma (o el en-


cabezamiento del mensaje, o, ms generalmente, la imagen del
mensaje por una funcin hash), llammosla S, de forma que sea 2
Las funciones hash tienen la ventaja de
que proporcionan, a un tiempo, rma
0 < S < Q A. La forma de escoger S es pblica, as que S lo es (no digital y garanta de que el mensaje no
estamos suponiendo que el mensaje se vaya a encriptar, slo que ha sido manipulado. Son objeto de un
trabajo personal, pero no las trataremos
se va a rmar digitalmente). en el curso.

A continuacin, Alice escoge un entero aleatorio (clave


efmera) 0 < k < Q A, y calcula

R = [ G Ak mod PA ] mod Q A ,

para despus hallar T vericando

T k = S + x A R mod Q A .

La rma de Alice para este mensaje es entonces (R, T).


Cuando Bob recibe (R, T), calcula

U1 = T 1 S mod Q A , U2 = T 1 R mod Q A ,

y calcula
G AU1 YAU2 mod PA .

Si la rma es correcta, entonces este clculo mdulo Q A


debe ser igual que R.

Errores y secretos: criptosistema de McEliece

Un criptosistema especialmente interesante para esta asigna-


tura es el criptosistema de McEliece, basado en cdigos correcto-
res de errores. La idea principal es elegir un cdigo corrector del
que se tenga un algoritmo eciente de decodicacin, y disfrazar
el cdigo como un cdigo lineal general.
Decodicar un cdigo lineal arbitrario es un problema di-
fcil, as que el cdigo disfrazado podra ser la clave pblica y el 3
En concreto, NP-difcil.
cdigo eciente la clave privada. Un criptosistema que usa esta
idea es el criptosistema de McEliece, que usa cdigos de Goppa
para las claves privadas.
En la prctica, este criptosistema no se usa mucho4 por el 4
An, aunque parece ser que este tipo
de criptosistemas resistira un ataque de
gran tamao de las claves pblicas que se usan. computacin cuntica.
102 teora de cdigos y criptografa

Veamos cmo se crean las claves pblicas y privadas en este


esquema. Para empezar, jamos los parmetros n, la longitud del
cdigo, k, su dimensin, y t, el nmero de errores que corrige.
Estos parmetros son pblicos y denen el sistema criptogrco.
Alice elige una matriz generatriz G A de tamao n k para un
cdigo lineal binario (n, k) que corrige t errores, y para el que se
tenga un algoritmo de decodicacin eciente. A continuacin,
elige una matriz binaria no singular aleatoria S A de tamao k k
y una matriz de permutacin PA de tamao n n, y calcula G A =
PAG A S A.
La clave pblica de Alice es (G A , t) y su clave privada es (S A , G A , PA).
Veamos cmo se usan estas claves para la operacin de cifrado y
descifrado.
Si Bob quiere mandar un mensaje m para Alice, primero
identica m con uno o ms bloques binarios de longitud k que in-
terpretaremos como vectores, elige un vector efmero de errores z
de peso w(z) t, y calcula

M = F((G A , t), m) = G A m + z,

que es lo que enva a Alice. Alice, por su parte, para decodicar,


calcula

G((S A , G A , PA), M) = S 1 (decodG A (P 1 M)),

donde decodG (x) es la decodicacin del cdigo denido por G


aplicado a un vector arbitrario x. Obsrvese que

G((S A , G A , PA), 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 + PA1 z))
= S A1 (S A m) = m,

donde el paso crucial es que decodG A (G A S A m + PA1 z) = S A m.


McElice propuso el uso de cdigos de Goppa,

Ejercicios

Ejercicio 4.1. Alice quiere enviar un regalo de cumpleaos a


Bob que est pasando unas vacaciones en el extranjero. Sin embar-
go, Bob le dice que all (en el extranjero, as, en general) el correo
no es nada seguro y que cualquier paquete que no vaya en una caja
con candado es sistemticamente abierto y robado. Alice puede
criptografa de clave pblica 103

comprar candados y Bob tambin, pero obviamente ninguno de


los dos tiene una llave que le valga a los candados que compre el
otro. Cmo puede hacer llegar Alice su regalo?

Ejercicio 4.2. Supongamos que queremos usar RSA en una co-


munidad de conanza y, para ahorrar costes, utilizamos todos el
mismo N = pq, dado que no tenemos problemas en que otros
usuarios de la comunidad lean los mensajes que nos intercambia-
mos. Supongamos que Eve (que no es miembro de la comunidad)
intercepta un mensaje que Alice ha enviado a dos usuarios, Bob y
Chuck. Las claves pblicas de stos son, respectivamente, (N , E B )
y (N , EC ).
Eve conoce por tanto M1 = m E B y M2 = m E C . Calcula
entonces los siguientes nmeros
1 T1 E B
T1 = E B1 mod EC , T2 = .
EC
Probar que con estos datos, Eve puede recuperar el mensaje
original m.

Ejercicio 4.3. Dado que en RSA hay libertad para escoger la cla-
ve de encriptacin, los usuarios podran estar tentados de escoger
una clave sencilla, como por ejemplo 3. Supongamos que Alice,
Bob y Chuck escogen E A = E B = EC = 3 y que otro usuario les
enva el mismo mensaje, m, interceptado por Eve en la forma

M1 = m3 mod N A , M2 = m3 mod N B , M3 = m3 mod NC .

Probar que Eve puede recuperar el mensaje m hallando la


solucin al siguiente sistema de congruencias (por el Teorema
Chino del Resto, por ejemplo):



x = M1 mod N A


x = M2 mod N B




x = M3
mod NC

Una eleccin habitual hoy para los sistemas RSA es escoger


E = 65537.

Ejercicio 4.4. Este ejercicio estudia, en un protocolo RSA y


dado un usuario con clave pblica (N , E), cmo factorizar N (de
manera ecaz) si conocemos d. Por tanto, factorizar N y desen-
criptar RSA son problemas equivalentes. Supongamos pues que
conocemos N, E y d tales que d E = 1 mod (N).
104 teora de cdigos y criptografa

Supongamos que tenemos y Z tal que y2 = 1 mod 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 (dE1)/2 , que es una raz
cuadrada de 1 en Z/Z N.

Probar que, si en el paso anterior, y1 = 1 mod N, podemos



calcular y2 = y1 mod N y es de nuevo raz cuadrada de 1
en Z/Z N.

Este algoritmo es un algoritmo Las Vegas. Esta clase de algo-


ritmos son probabilsticos, y bien pueden no terminar o no dar
una respuesta. Sin embargo, si la dan, es siempre una respuesta
correcta.

Ejercicio 4.5. Intenta factorizar, usando el algoritmo anterior,


N = 1441499, conocidos E = 17 y d = 507905.

Ejercicio 4.6. Supongamos que estamos creando una clave para


RSA y hemos escogido ya p, q y E. Probar que podemos escoger d
como
d = E 1 mod mcm(p 1, q 1).

Ejercicio 4.7. Probar que si escogemos en RSA (por error, se


entiende) N de manera que es primo, Eve puede descifrar fcil-
mente cualquier mensaje que nos enven.

Ejercicio 4.8. Una idea que liga factorizacin con diferencias


de cuadrados, y que debemos a Fermat, funciona como sigue:
imaginemos que N = pq. Entonces tenemos que
p+q 2 pq 2 2 2
N =( ) ( ) = t s .
2 2
La idea de Fermat para factorizar consista en buscar enteros

t > N tales que t 2 N es un cuadrado perfecto. Explica por qu
esto hace que escoger dos primos muy prximos p y q no es buena
idea en RSA.

Ejercicio 4.9. Factoriza 23360947609 usando la idea del ejercicio


anterior.
criptografa de clave pblica 105

Ejercicio 4.10. Probar que un elemento no nulo de F p tiene,


exactamente, cero o dos races cuadradas. Cuntas races cuadra-
das tiene un elemento no nulo de Z/Z pq?

Ejercicio 4.11. Desarrolla un procedimiento para calcular todas


las races cuadradas de un elemento de Z/Z pq, y halla las races
de 15 mdulo 1441499. El clculo de races cuadradas en un cuer-
po F p se puede hacer en tiempo polinomial con el algoritmo de
Shanks, implementado en la mayora de los programas de clculo
simblico.

Ejercicio 4.12. Probar que, si podemos hallar en tiempo polino-


mial races cuadradas en Z/ZN, podemos factorizar N = pq Z.
Para ello, escojamos un x (Z/Z N) , calculemos z = x 2 y halle-

mos z.

Probar que, de entre todos los valores posibles de z, exac-
tamente la mitad nos conducen (en tiempo polinomial) a una
factorizacin de N. Por tanto, estamos ante un algoritmo probabi-
lstico con probabilidad de xito 1/2.

Ejercicio 4.13. Asumiendo que es posible calcular races cuadra-


das en F p en tiempo polinomial (ver 4.11.), probar que, si conoce-
mos la factorizacin de N = pq, es posible hallar races cuadradas
mdulo N en tiempo polinomial (ver 4.11.). Para qu enteros se
puede aplicar exactamente el mismo procedimiento?

Ejercicio 4.14. Una variante del DLP utilizada en criptografa


es el protocolo MasseyOmura, que tiene la particularidad de
no usar claves pblicas. En este protocolo, todos los usuarios
acuerdan trabajar en un cuerpo primo FP . Alice escoge entonces
e A y d A tales que e A d A = 1 mod P 1.
Si ahora Alice quiere enviar un mensaje m a Bob, calcula
M1 = m e A y lo enva. Bob, por su parte, halla M2 = M1e B y lo enva a
Alice. Intenta imaginar cmo contina el protocolo, sabiendo que
para que Bob recupere m hace falta un envo ms.

Ejercicio 4.15. Estudia la fragilidad del sistema MasseyOmura


a ataques man in the middle.

Ejercicio 4.16. Un protocolo de intercambio de claves alterna-


tivo al DHEP es el denominado protocolo MQV (Menezes, Qu,
Vanstone). Trabajamos en un grupo cclico G, y Alice y Bob han
106 teora de cdigos y criptografa

generado, respectivamente, pares de claves pblico / privadas:

(K A = G a , a) (K B = G b , b) ,

y ahora quieren acordar una clave privada comn (por ejemplo,


para usar DES). Primero genera, cada uno, un nuevo par de claves
pblico / privadas efmeras:

(KC = G c , c) (Alice) (K D = G d , d) (Bob),

y se intercambian KC y K D . ste es el nico intercambio de men-


sajes del protocolo (comparar con DHEP).
Supongamos que G = 2t , y tomamos l = t/2. En parmetros
de seguridad actuales, se puede considerar t = 160 y, por tanto,
l = 80.
Alice calcula entonces:

Convierte KC y K D en enteros. Esto casi siempre es inmedia-


to, pues se toma G = FP , pero asumiremos, en general, que se
hace de una manera conocida y previamente jada.

Calcula
S A = (KC mod 2l ) + 2l .

Calcula
TA = (K D mod 2l ) + 2l .

Halla h A = c + S A a.
hA
Halla k = (K D K BTA ) .

Razona qu calculos debe hacer Bob para llegar, con los


datos de los que dispone, a k.

Ejercicio 4.17. Prueba que tanto Alice como Bob pueden reali-
zar los clculos del MQV en tiempo polinomial, mientras que Eve
necesita resolver el DLP.

Ejercicio 4.18. Explica por qu no es una buena idea que Alice


escoja un texto jo como rma.

Ejercicio 4.19. Demuestra que, en el sistema DSS, [ G AU1 YAU2 mod PA ] =


R mod Q A.

Ejercicio 4.20. Un sistema de rma digital debido a ElGamal


que usa tambin el DLP funciona como sigue: se jan un primo P
y un G FP . Alice escoge 0 < x A < P 1 y publica YA = G x A .
criptografa de clave pblica 107

Para rmar 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, S = (m x A R)k 1 mod P 1

y enva (R, S). Probar que Bob puede vericar la autenticidad del
mensaje comprobando

G m = YAR R S mod P.
BIBLIOGRAFA
Dinobot Island II. The Transformers, Temporada 2, Episodio 4,
1985.

Celine Carstensen, Benjamin Fine, and Gerhard Rosenberger.


Abstract Algebra: Applications to Galois Theory, Algebraic Geometry,
and Cryptography, volume 11. Walter de Gruyter, 2011.

Jeffrey Hoffstein, Jill Pipher, and Joseph H Silverman. An intro-


duction to mathematical cryptography. Springer, 2008.

Neal Koblitz. A course in number theory and cryptography, volume


114 of Graduate Texts in Mathematics. Springer, 1994.

Richard A Mollin. An introduction to cryptography. CRC Press,


2006.

ystein Ore. Theory of non commutative polynomialsmmu-


tative polynomials. The Annals of Mathematics, 34(3):480508,
1933.

ystein Ore. The general chinese remainder theorem. American


Mathematical Monthly, pages 365370, 1952.

Victor Percy Snaith. Groups, rings and Galois theory. World


Scientic, 2003.

Serge Vaudenay. A classical introduction to cryptography: Applications


for communications security. Springer, 2006.

Anda mungkin juga menyukai