Vous êtes sur la page 1sur 238

Teora de Cdigos y Criptografa

Pedro Valero Meja Apuntes UAM


Doble Grado Mat.Inf.
UAM - Curso 2015/2016 C1
11 de febrero de 2016 14:31
Cdigo en Github
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

ndice general

I Ideas generales 4
I.1 Modelo bsico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
I.1.1 Poca seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . 4
I.1.2 Poca fiabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . 5
I.1.3 Poca capacidad . . . . . . . . . . . . . . . . . . . . . . . . . 5

II Criptosistemas clsicos 6
II.1 Esteganografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
II.2 Criptografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
II.2.1 El criptosistema de Cesar . . . . . . . . . . . . . . . . . . . . 7
II.2.2 Formalizacin . . . . . . . . . . . . . . . . . . . . . . . . . . 7
II.3 Criptosistema afn (sobre letras) . . . . . . . . . . . . . . . . . . . . . 8
II.3.1 Para qu valores de a,b es fa,b inyectiva? . . . . . . . . . . . 9
II.3.2 La funcin de Euler . . . . . . . . . . . . . . . . . . . . . . . 10
II.4 Criptosistema de sustitucin . . . . . . . . . . . . . . . . . . . . . . . 14
II.5 Defincin de Criptabeto . . . . . . . . . . . . . . . . . . . . . . . . . 14
II.6 Lucha contra el anlisis de frecuencias . . . . . . . . . . . . . . . . . 15
II.6.1 Sustitucin polialfabtica . . . . . . . . . . . . . . . . . . . . 20
II.6.2 Criptosistema de Vigenre . . . . . . . . . . . . . . . . . . . . 23

III De la criptografa clsica a la de clave pblica 25


III.1 Enigma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
III.2 Criptosistemas de clave simtrica . . . . . . . . . . . . . . . . . . . . 28
III.3 Estimaciones de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . 29
III.4 Usos criptogrficos de las funciones de un slo sentido . . . . . . . . . 31
III.4.1 Comparticin de clave privada . . . . . . . . . . . . . . . . . . 31
III.4.2 Recibir mensajes cifrados sin necesidad de acordar claves a priori 32
III.4.3 Firmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
III.4.4 Identificacin . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
III.4.5 Challenge: Identificacin a partir de otro . . . . . . . . . . . . 33
III.4.6 Tarjeta de crdito . . . . . . . . . . . . . . . . . . . . . . . . 33
III.4.7 El gran cambio de la tecnologa moderna . . . . . . . . . . . . 34
III.5 Modos de ataque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

IV El criptosistema RSA 36
IV.1 Generacin de claves . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
IV.2 Manejo de las funciones . . . . . . . . . . . . . . . . . . . . . . . . . 37
IV.3 Tratamiento de los mensajes . . . . . . . . . . . . . . . . . . . . . . . 38
0
Documento compilado el 11 de febrero de 2016 a las 14:31

1 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

IV.4 Ataques contra RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . 38


IV.4.1 Ataque de texto en claro elegido . . . . . . . . . . . . . . . . . 39
IV.5 Cifrado y firma con RSA . . . . . . . . . . . . . . . . . . . . . . . . . 41
IV.6 Eleccin de primos para RSA . . . . . . . . . . . . . . . . . . . . . . 41
IV.7 Otros criptosistemas de clave pblica . . . . . . . . . . . . . . . . . . 42

V Algoritmos de factorizacin y tests de primalidad 43


V.1 Test de primalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
V.1.1 Tests probabilsticos . . . . . . . . . . . . . . . . . . . . . . . 45
V.1.2 Nmeros de Carmichael . . . . . . . . . . . . . . . . . . . . . 47
V.1.3 Test de primalidad de Miller-Marsin (1974) . . . . . . . . . . . 50
V.2 Algoritmos de Factorizacin . . . . . . . . . . . . . . . . . . . . . . . 52
V.2.1 Idea detrs de los mtodos modernos de criba . . . . . . . . . 55

VI Otros sistemas de clave pblica y ms aplicaciones 58


VI.1 Criptosistema de ElGamal . . . . . . . . . . . . . . . . . . . . . . . . 58

VIICdigos detectores y correctores de errores 59


VII.1 Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
VII.2 Distancia de Hamming . . . . . . . . . . . . . . . . . . . . . . . . . . 61
VII.3 Cdigo de barras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
VII.3.1 Deteccin de errores . . . . . . . . . . . . . . . . . . . . . . . 70
VII.3.2 Correccin de errores . . . . . . . . . . . . . . . . . . . . . . . 71
VII.4 International Standard Book Number . . . . . . . . . . . . . . . . . . 72
VII.4.1 Deteccin de errores . . . . . . . . . . . . . . . . . . . . . . . 73
VII.4.2 Correccin de errores . . . . . . . . . . . . . . . . . . . . . . . 74
VII.5 Nmero de Identificacin Fiscal . . . . . . . . . . . . . . . . . . . . . 74
VII.5.1 Deteccin de errores . . . . . . . . . . . . . . . . . . . . . . . 75
VII.5.2 Correccin de errores . . . . . . . . . . . . . . . . . . . . . . . 75
VII.6 Probabilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
VII.7 Cota de Hamming o del empaquetamiento de esferas . . . . . . . . . . 82
VII.7.1 Cdigo de Hamming . . . . . . . . . . . . . . . . . . . . . . . 84

VIIICdigos lineales 85
VIII.1Por qu cdigos lineales? . . . . . . . . . . . . . . . . . . . . . . . . 85
VIII.2Definicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
VIII.3Codificacin con cdigos lineales . . . . . . . . . . . . . . . . . . . . 88
VIII.4Decodificacin con cdigos lineales . . . . . . . . . . . . . . . . . . . 88
VIII.4.1 Decodificacin por sndrome para Ham(3,2) . . . . . . . . . . 91

IX Cdigos de Hamming 94
IX.1 Cdigos de Hamming binarios . . . . . . . . . . . . . . . . . . . . . . 94
IX.2 Cdigos BCH (Bose Ray-Chaudhury y Hocquenghem) . . . . . . . . . 98
IX.3 Cdigos binarios extendidos . . . . . . . . . . . . . . . . . . . . . . . 102
IX.4 Cdigos binarios acortados (o reducidos) . . . . . . . . . . . . . . . . 103

A Ejercicios 105
A.1 Hoja 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
A.2 Control 1 (22-09-2014) Modelo A . . . . . . . . . . . . . . . . . . . . 114

2 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

A.3 Hoja 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116


A.4 Control 2 (13-10-2014) Modelo A . . . . . . . . . . . . . . . . . . . . 135
A.5 Control 2 (13-10-2014) Modelo B . . . . . . . . . . . . . . . . . . . . 136
A.6 Hoja 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
A.7 Control 3 (6-11-2014) Modelo A . . . . . . . . . . . . . . . . . . . . 153
A.8 Hoja 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
A.9 Hoja 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
A.10 Hoja 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
A.11 Control 4 (1-12-2014) Modelo A . . . . . . . . . . . . . . . . . . . . 197
A.12 Control 4 (1-12-2014) Modelo B . . . . . . . . . . . . . . . . . . . . 199
A.13 Hoja 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
A.14 Hoja 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
A.15 Control 5 (18-12-2014) Modelo A . . . . . . . . . . . . . . . . . . . . 232
A.16 Control 5 (18-12-2014) Modelo B . . . . . . . . . . . . . . . . . . . . 235

ndice alfabtico 237

3 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Captulo I

Ideas generales

Matemticas de la transmisin de informacin

I.1. Modelo bsico


emisor (info)-> receptor
la flecha es el canal. Ejemplos de canales son:

cable

aire/espacio

papel

disco duro / USB / CD

El canal con el que vamos a trabajar tiene 3 defectos:

1. poco seguro

2. poco fiable

3. con poca capacidad

I.1.1. Poca seguridad


Existe un "malo", es decir, que no es el emisor o receptor y puede interferir con la
informacin (leerla y alterarla).
Se soluciona con criptografa.
Emisor -> [cifrador]canal>[descifrador] -> Receptor

4 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

I.1.2. Poca fiabilidad


El mensaje puede sufrir alteraciones involuntarias, tales como erratas (papel), polvo
o ralladuras (disco duro o CD), rayo csmico, ruido, etc...
Se soluciona con cdigos detectores/correctores de errores.
Emisor -> [codificador]canal>[descodificador] -> Receptor

I.1.3. Poca capacidad


Puede faltar capacidad en varios sentidos. Puede faltar tiempo (como en una clase
si el profesor repite mucho), capacidad (como en un disco duro) o energa (como
cuando un satlite tiene una energa limitada para transferir informacin).
Se soluciona con algoritmos de compresin (no es parte del temario).
Emisor -> [compresor]canal>[descompresor] -> Receptor

Si queremos resolver los tres problemas a la vez es obvio que debemos combinarlos
todos, pero en que orden?
Colocaremos en ltimo lugar (cerca del canal) el proceso de codificacin y desco-
dificacin, ya que depende mucho del canal y puede verse anulado con un posterior
proceso de cifrado o compresin.
Respecto a los otros dos, podemos debatir sobre su orden. Pero hay que tener en
cuenta, por lo menos en el caso de cadenas de texto, que conviene comprimir primero,
ya que algunos ataques sobre el cifrado se pueden realizar si los mensajes cifrados se
repiten y/o tienen patrones reconocibles. Estas posibilidades se reducen bastante al
comprimir primero.

5 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Captulo II

Criptosistemas clsicos

La criptografa tiene como objetivo resolver el siguiente problema:

Figura II.1: Cmo enviar un mensaje de manera segura entre Bob y Alice por un
canal al que Eve tiene acceso

El objetivo es garantizar tanto la confidencialidad del mensaje (Eve no es capaz de


saber qu se estn diciendo) como de autentifiacin (Alice est segura de que es Bob
quien mand el mensaje y viceversa)
A lo largo de este captulo veremos los mtodos que han sido empleados a lo largo
de la historia para lograr este objetivo.

II.1. Esteganografa
Intentar ocultar la existencia del mensaje. Es un mtodo con origen muy antigo
( 486-425 a.C)

II.2. Criptografa

Criptografa Definicin II.1 Criptografa. Tradicionalmente se ha definido como el mbito de la


criptologa el que se ocupa de las tcnicas de cifrado o codificado destinadas a alterar
las representaciones lingsticas de ciertos mensajes con el fin de hacerlos ininteligibles
a receptores no autorizados.

6 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

El primer mtodo de criptografa data del siglo V antes de cristo


La mayora de estos mtodos se basaban en transposicin.

Transposicin Definicin II.2 Transposicin. Cambio en el orden de las letras de un mensaje

II.2.1. El criptosistema de Cesar


Se utiliza la sustitucin como mtodo de cifrado, normalmente cambiando cada
letra por su correspondiente al desplazarse d espacios atrs en el abecedario. Por
ejemplo:

sin cifrar cifrado


A D
B E
C F
... ...

II.2.2. Formalizacin
Vamos a ver cmo denominamos formalmente los elementos que intervienen en un
proceso de cifrado:

Mensajes
Tenemos dos diferentes mensajes en todo proceso de cifrado

1. M = Mensajes en claro
2. C = Mensajes cifrados

Alfabeto Tendremos un alfabeto o dos, dependiendo de si los alfabetos de M y


C son el mismo o no.
Ejemplos de alfabetos seran:

A = {A, B...Z}
A = {0, 1}
A = {A, B...Z, . . . , , ?, 1, 2, 3, . . . , 9, 0}
A = Cdigo ASCII

Funciones para cifrar


Sern funciones de la forma f : M C donde f es inyectiva

Funciones para descifrar


Sern funciones de la forma f 1 : C M donde f es la misma funcin empleada
para cifrar el mensaje.

7 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Para que pueda llevarse a cabo la comunicacin entre A y B, A debe conocer f y


B debe conocer f 1 . A enva un mensaje m M a B usando f (m) = c y enviando
c. B puede obtener el mensaje calculando f 1 (c) = m.
En este modelo, romper el sistema de cifrado equivale a que un tercero averige
f 1 .
Podemos usar ms de una funcin para cifrar?
En el sistema de Cesar se puede cambiar, por ejemplo, la longitud desplazamiento
por el abecedario al realizar el cifrado, aunque no hay muchas posibilidades.

Criptosistema Definicin II.3 Criptosistema. Coleccin de functiones para cifrar. Se trata de fun-
ciones de la forma
fe : Me 7 Ce

Ejemplo: Como romper la criptografa Cesar


Se puede romper "facilmente" la criptografa Cesar con anlisis de frecuencias. Por
ejemplo, en castellano la letra ms frecuente es la E, con un 13,68 %, sabiendo la letra
ms frecuente de un mensaje cifrado se puede calcular la distancia entre esa y la E y
muy probablemente hayamos hallado la clave de cifrado.
La fiabilidad de este mtodo puede verse mermada por la genericidad del texto
cifrado. Si es corto y si habla de un tema en particular es posible que las frecuencias
varen respecto a otros textos genricos en Espaol.
De hecho, por ejemplo, en el manual de UNIX la frecuencia de la letra e baja al
9 % dejando a la letra relegada al cuarto puesto, por detrs de la t, la n y la i.
Veamos la frecuencia general de distintos grupos de letras en ingles.
grupos frec rango
e 12.7 % 12.7
taoiushr 56.9 6-9
cumwfgypb 19.9 1.5 - 3
vkjxqz 2.2 <1

II.3. Criptosistema afn (sobre letras)

Cifrado Definicin II.4 Cifrado afn. El cifrado afn tambin se le llama cifrado de transfor-
afn macin afn o cifrado monoalfabtico genrico. Es un tipo de cifrado por sustitucin en
el que cada smbolo del alfabeto en claro (el alfabeto del texto en claro) es sustituido
por un smbolo del alfabeto cifrado (el alfabeto del texto cifrado) siendo el nmero de
smbolos del alfabeto en claro igual que el nmero de smbolos del alfabeto cifrado.
Para hallar el smbolo del alfabeto cifrado que sustituye a un determinado smbolo del
alfabeto en claro, se usa una funcin matemtica afn en aritmtica modular. Para
poder aplicar la funcin matemtica lo primero que hay que hacer es asignar un orden
que a cada smbolo de cada uno de los alfabeto le asocie un nmero de orden.

8 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Si tenemos un alfabeto de N letras Z/N y denominamos a las claves: a, b Z/N ,


tenemos que el proceso de cifrado puede representarse mediante la siguiente frmula
matemtica:

fa,b :Z/N Z/N


x ax + b

II.3.1. Para qu valores de a,b es fa,b inyectiva?


1
Para verlo calculamos fa,b

ax + b = y
ax = y b

Si a U (Z/N ) = x = a1 (y b) = x = a1 y a1 b

1
fa,b = fa1 ,a1 b

As hemos demostrado que:

1. a U (Z/N ) fa,b inyectiva


2. En ese caso si e = (a, b) es la clave para cifrar d = (a1 , a1 b) es la clave
para descifrar.

El recproco de 1 es cierto: Usando que fa,b es inyectiva y aplicando la definicin


de inyectiva:
Z/N : a = 1 a + b = 1 + b

Proposicin II.1. fa,b inyectiva a U (Z/N )


Demostracin.
Vamos a demostrar los dos sentidos de la implicacin.

) Si la funcin es inyectiva, como nos estamos moviendo entre cuerpos


finitos, la funcin ser tambin sobreyectiva.
Por ser sobreyectiva sabemos que, en concreto:

 fa,b () = 1 + b = a + b = 1 + b = a = 1 = = 11

)
Si a U (Z/N ) sabemos que existe su inverso. Sabiendo esto, es fcil ver que

fa,b (x1 ) = fa,b (x2 ) = ax1 + b = ax2 + b = a(x1 x2 ) = 0 =


x1 x2 = a1 0 = x1 x2 = 0 = x1 = x2

9 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

As llegamos a la conclusin de que en realidad el par (a, b) tiene ciertas restriccio-


nes:

E = {(a, b) : a U (Z/N ), b Z/N }

#E = #U (Z/N ) #Z/N

Proposicin II.2. Sea a Z/N : a U (Z/N ) (a, N ) = 1 (son primos entre si).
Demostracin.

Z/N : a 1 mod n k : a + kN = 1

Si (a, N ) 6= 1 p primo : p|a, N p|ax + kN p|1 lo cual es imposible.


(a, n) = 1. Esto se demuestra usando el algoritmo de euclides.

Volvemos entonces al nmero de claves ya que sabemos como calcularlo:

#E = #U (Z/N ) #Z/N = (N ) N

II.3.2. La funcin de Euler

Funcin de Definicin II.5 Funcin de Euler. La funcin de Euler (tambin llamada funcin
Euler indicatriz de Euler) es una funcin importante en teora de nmeros. Si n es un nmero
entero positivo, entonces (n) se define como el nmero de enteros positivos menores
o iguales a n y coprimos con n, es decir, formalmente se puede definir como:


(m) = {n N  n m mcd(m, n) = 1}

En el caso de que queramos calcular la funcin de Euler de un nmero primo p


tenemos:

(p) = p 1

 
n n n1 n1 n 1
(p ) = p p =p (p 1) = p 1
p
Vamos a demostrar esta frmula que acabamos de ver por induccin:

10 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Demostracin. Es evidente que en el caso n = 1 la frmula es correcta.


Suponemos que la hiptesis es vlida para un cierto n y tratamos de ver qu
ocurre con n + 1.
Considerando el nmero pn+1 vamos a contar todos los enteros menores que l
y eliminaremos de la cuenta aquellos enteros que sabemos no son coprimos.

1. Empezamos teniendo pn+1 1 enteros menores que pn+1 .

2. Sabemos que todos los nmeros que no sean coprimos con pn tampoco lo
sen con pn+1 , con lo que debemos eliminar de la lista:

(pn ) = pn pn1 (hiptesis de induccin)

3. Por ltimo debemos eliminar de la lista los mltiplos de p, de p2 , p3 , ... pn


comprendidos entre pn+1 y pn .
Es sencillo ver que en este intervalo tendremos
p 1 mltiplos de pn .
As tambin tendremos p2 p mltiplos de pn1 . En general, tendremos
pi pi1 mltiplos de pi .

Combinando lo que acabamos de ver tenemos:


n1
X
n+1 n+1 n n1
(p )=p 1p +p pi pi1
i=1

En cuanto nos percatamos de que estamos ante una suma telescpica es sencillo
comprobar que:
(pn+1 ) = pn+1 pn

con lo que damos por concluida la demostracin por induccin.

pni 1 la factorizacin de N ,
Q
Como es una funcin multiplicativa, siendo N =
podemos escribir:

Y Y Y 1
 Y 1

(N ) = (pni i ) = pni i 1 =N 1
pi pi

Veamos un ejemplo de como un espa podra realizar un ataque contra un usuario


que emplea este sistema de cifrado.

Ejemplo: El objetivo es conseguir conocer los valores a y b que han sido empleados
para lo que deberemos resolver un sistema de dos ecuaciones de dos incgnitas, una
vez hemos obtenido una muestra de un texto cifrado y su original sin cifrar.
Como, en teora, el atacante no tendra acceso al texto original, emplear una tabla

11 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

de frecuencias que, en un texto en ingls, nos dice que las letras ms frecuentes son la
E y la T.
Ahora podemos estudiar el texto cifrado y ver que las letras ms usadas son,
respectivamente, U y D. Por tanto, convirtiendo estas letras en sus correspondientes
nmeros (segn la posicin que ocupan en el alfabeto ingls) tenemos el siguiente
sistema de ecuaciones: 
20 + = 4
3 + = 19

Que, si restamos a la primera ecuacin la segunda y nos apoyamos en el hecho de


que estamos trabajando en Z26 nos queda:

20 + = 4
17 = 11

Ahora debemos encontrar el inverso multiplicativo de 17 trabajando en mdulo 26,


para lo que emplearemos el algoritmo de Euclides.

1. 26 = 17 + 9

2. 17 = 9 + 8

3. 9 = 8 + 1

4. 8 = 8 1 + 0

12 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Como al final hemos obtenido un +0 el propio algoritmo de Euclides nos garantiza


que existe el inverso multiplicativo modulo 27 de 17.
Ahora aplicamos el algoritmo de Euclides para obtener el inverso y para ello expre-
samos cada resto sustituyendo en la frmula resultando el resto siguiente. Es decir:

1 = 98 = 9(179) = 2917 = 2(2617)17 = 226317 = 2426+2317 =

= 1 + 24 26 = 23 17 = 1 = 23 17
Con ello llegamos a que:
1
= 23 = = 23 11 = 19& = 14
17

Veamos otro ejemplo un poco ms interesante.

Ejemplo: En este caso consideramos que el conjunto de smbolos vlidos empleados


por el emisor al escribir el texto original son: el alfabeto ingls, el espacio y el smbolo
de interrogacin.
En este caso el espa intercepta un mensaje y encuentra que los smbolos ms
habituales en ese mensaje han sido la B y ?. En este caso no podemos emplear la
misma tabla de frecuencias que en el ejemplo anterior, puesto que el alfabeto inicial
ha cambiado.
Con las nuevas condiciones tenemos que las letras ms habituales se relacionan de
la forma:
B_
?E
que nos lleva al sistema de ecuaciones:

+ = 2
= 2 = 6
+ = 4

Pero en esta ocasin no podemos emplear el algoritmo de Euclides, pues el 2 no


es coprimo con 6 ni con su inverso aditivo.
En esta ocasin, el problema se debe a que estamos trabajando en Z28 que es un
cuerpo con divisores de 0 y, por tanto, el sistema de ecuaciones no tendr una nica
solucin sino varias. En este caso nos quedan que son soluciones posibles los pares de
valores:
= 11, = 15 & = 25 = 1

Ahora lo que podramos hacer es probar ambas combinaciones y ver cul de ellas
nos permite obtener un texto original con sentido.
Otra posibilidad es acudir a la tabla de frecuencias y ver cul de los dos sistemas
nos permite obtener la siguiente letra ms frecuente. Si las cosas funcionan bien, slo
uno de los dos sistemas nos funcionar.

13 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

As, tomamos la I, que es la tercera letra ms habitual en el mensaje cifrado y


vemos que nuestros valores de y nos llevan a que la letra original podra ser T o
F.
Puesto que la T es una de las letras menos habituales, la hiptesis razonable es
pensar que los valores correctos de y es (11, 15).
Tras estos ejemplos hay una duda que debera surgir directamente en el lector. En
ambos ejemplos nos hemos basado en un absoluto conocimiento acerca del sistema
alfanumrico empleado en el mensaje original, pero esto no es realista.
Para explicar esto debemos fijarnos en el Principio de Kerckhoffs que dice:
Proposicin II.3 (Principio de Kerckhoffs). No puede requerirse que un criptosistema
sea secreto. Tiene que poder caer en manos del enemigo sin que esto suponga un
inconveniente.
Es decir: la seguridad del sistema tiene que depender UNICAMENTE de mantener
secretas las claves.

Recordemos que el sistema de Cesar tena el gran inconveniente de que haba muy
pocas posibilidades. Es decir, con hacer 26 pruebas se puede obtener el mensaje original
a partir de un mensaje cifrado.
Este problema se ha relajado mediante el empleo de la criptografa afn pero, como
acabamos de ver, sigue siendo sencillo descifrar un mensaje.
Con el fin de mejorar la seguridad aparece el Criptosistema de sustitucin

II.4. Criptosistema de sustitucin


Este sistema simplemente consiste en una mejora del sistema Csar. En lugar de
desplazar todas las letras del alfabeto lo que se hace es tomar una reordenacin del
mismo.
El principal problema del sistema de cifrado Csar es que slo existen 26 posibles
claves (correctamente hay N posibles claves siendo N el tamao del alfabeto empleado),
que es un nmero muy pequeo.
Con el sistema de sustitucin simple pasamos a tener un total de 26! = 4 1026
posibles claves. Para que nos hagamos una idea de lo desorbitadamente grande que es
este nmero, tened en cuenta que la NASA calcul que con un procesador de Intel de
los ms potentes hasta la fecha de 2009, seran necesarios ms de 10.000 aos para
probar todas las posibles claves.
An as, el sistema de cifrado por sustitucin sigue siendo vulnerable a ataques por
anlisis de frecuencias.

II.5. Defincin de Criptabeto


El problema de los sistemas que hemos visto, y sobre todo del ltimo, es que es
necesario que el emisor y el receptor del mensaje se pongan de acuerdo en la relacin

14 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

alfabeto original - alfabeto cifrado que se va a emplear.


Para llevarlo a cabo existen diferentes alternativas:

Frase clave

Palabra clave - lectura clave

En este punto es interesante mirar las transparencias de la asignatura que pueden


encontrarse en moodle.

II.6. Lucha contra el anlisis de frecuencias


Una posible forma de hacer el sistema menos vulnerable a este tipo de ataques
consiste en cifrar las letras por grupos. Por ejemplo, podemos agruparlas de 2 en 2.
Una vez decidimos cmo de grande es el grupo de letras que vamos a juntar (y por
ahora suponemos es 2) podemos cifrarlo de dos formas diferentes:

Pares de letras vistas como nmeros de dos cifras en base 26


En este caso emplearamos funciones del tipo

f (m) = (Am + B) mod 262 , A, B Z262

Pares de letras vistas como vectores de dimensin 2 sobre Z26


Este sistema nos permite emplear matrices y se conoce como Criptosistema
de Hill
! !
a b m1
f (m1 m2 ) = con a, b, c, d Z26
c d m2

Ambos sistemas pueden extenderse a alfabetos ms grandes y a agrupaciones de


letras mayores. Sin embargo, el criptosistema de Hill (tambin conocido como lineal)
requiere que la matriz sea invertible, pues de lo contrario el mensaje no sera descifrable.
Veamos cundo la matriz ser invertible, teniendo en cuenta qu significa ser in-
vertible en el cuerpo en que estamos trabajando.

Proposicin II.4. Una matriz con coeficientes en ZN tiene inversa si y slo si el


determinante de la matriz pertenece al conjunto de las unidades de ZN

Demostracin. Vamos a demostrar los dos sentidos de la implicacin:

Suponemos que existe la matriz inversa de A, A1 . Entonces sabemos que

det(A A1 ) = det(A) det(A1 ) = det(I) = 1 = det(A) U (ZN )

15 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Antes de poder ver esta demostracin debemos recordar, de lo que aprendi-


mos en primero, que si multiplicmaos la matriz A por la traspuesta del adjunto
obtenemos una matriz diagonal con todos los elementos no nulos iguales a
det(A)
Una vez tenemos esto es claro ver que
 
1 t
A Adj(A) = I
det(A)

Es decir, una vez sabemos que el determinante de la matriz pertenece al con-


junto de unidades de ZN sabemos que tiene inverso, lo que nos permite escribir
1
det(A)
que es necesario para la definicin constructiva que todos conocemos
de matriz inversa.

La cuestin que surge ahora es bastante obvia. Y si al exigir que la matriz sea
invertible estamos acotando demasiado el espacio de claves posibles?. Vamos a contar
cuntas matrices hay invertibles para cada n dado.
De aqu en adelante N ser el nmero de letras que estamos agrupando, es decir,
el orden de la matriz y n ser el tamao del alfabeto empleado, que denotaremos como
p siempre que sea primo.

Agrupamos las letras por parejas


En este caso tendremos que el determinante sera de la forma ad bc.
Ahora vamos a contar cuntas matrices hay que tengan determinante 0. Podemos
ver que el determinante ser nulo siempre que:

ad = bc

As tenemos:
bc
d 6= 0 = a = (p 1)p2 matrices con determinante 01
d
Por otro lado, si d = 0 necesitaremos que b o c sean iguales a 0. Lo que nos da
un total de p(p 1) + p2 matrices posibles con determinante 0.
Para comprender la cuenta basta con ver que si b es cero entonces tenemos p
posibles valores para c y si b tiene uno de los otros p 1 posibles valores no
nulos, entonces c tendr que ser 0. Por otro lado, la a puede tomar cualquier
valor.
Por tanto, nos queda que existe un total de

p4 p2 p(p 1) p2 (p 1) = p4 p3 p2 + p matrices invertibles en Zp


1
Podemos combinar elementos cualesquiera de Zp puesto que es un cuerpo y est cerrado por la
divisin

16 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Observacin: Extensin del procedimiento a N mayores


Si repitiramos el razonamiento anterior para N mayores, por ejemplo N = 6
el nmero de sumandos de la frmula que representa el determinante crece de
forma factorial, llegando a 720 en el caso que acabamos de mencionar.
Evidentemente no es viable mantener el mismo procedimiento y, como el profesor
dice ...

NO SOMOS CONTABLES, SOMOS MATEMTICOS!

Por tanto tenemos que encontrar un mtodo alternativo. Para ello podemos
pensar qu caracterstica nos muestra si una matriz tiene determinante 0 o no.
Aqu est la idea genial. Una matriz tiene mdulo 0 si sus filas/columnas
no son linealmente independientes
En este caso tendremos una matriz de la forma:
!
a b
c d

Como hicimos en el apartado anterior, vamos a buscar de cuntas formas pode-


mos hacer las filas proporcionales, esto es, cuntos valores posibles permiten la
existencia de un tal que:
! !
a c
=
b d

Para el vector (c, d) podemos tener cualquier valor excepto el (0, 0), es decir,
tenemos p2 1 opciones. Para el vector (a, b) tendremos un total de p3 p
opciones.
Por otro lado, si (c, d) son ambos 0, tenemos un total de p2 matrices con de-
terminante nulo (segunda fila de 0s y lo que sea en la primera). As tenemos un
total de
p4 p3 p2 + p matrices invertibles en Z26

que, como era de esperar, coincide con lo calculado en el apartado anterior.


A partir de ahora emplearemos este razonamiento.

Agrupamos las letras en bloques de tamao N grande


En este caso tenemos que tener en cuenta el hecho de que Zp es un cuerpo.
Nuevamente queremos ver cuntas matrices invertibles pueden definirse con coe-
ficientes en Zp y para ello veremos de cuntas formas podemos seleccionar N
vectores de N coordenadas independientes.
Para la primera columna podemos escoger cualquier vector no nulo, es decir,
tendremos pN 1 posibilidades.
Para el segundo vector debemos escoger un vector que no sea mltiplo del pri-
mero, es decir, tendremos pN p posibles vectores.

17 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Para el tercer vector debemos escoger un vector que no sea mltiplo de posibles
combinaciones lineales entre el primero y el segundo a c2 + b c1 , es decir,
tendremos pN p2 posibles vectores (tenemos p elecciones para a y p para b).
De forma general, para el vector ci tendremos un total de pN pi1 posibilidades.
Finalmente, multiplicando todos estos valores, vemos el nmero de posibles ma-
trices es:
N
Y 1
N (p) = # matrices invertibles = (pN pi )
i=0

Hasta ahora hemos estado considerando que el alfabeto tiene un tamao primo y,
con esa condicin, hemos visto cmo calcular el nmero de claves posibles sea cual sea
la forma en que hemos agrupado las letras.
Sin embargo, la condicin de que n sea primero es demasiado restrictiva. Veamos
qu hacer cuando no es as:

Si el tamao del alfabeto es potencia de un primo


En esta ocasin lo que haremos ser reducir la matriz segn el homomorfismo
de anillos:
: M atN N (Zpr ) 7 M atN N (Zp )
tal que (aij mod pr ) = aij mod p
2
Dado A M atN N (Zp ), sabemos que #1 (A) = (pr1 )N (pues cada ele-
mento tiene pr1 inversos).
Adems, podemos ver que si elijo A tal que (A) = A tenemos que 1 (A) =
A + Ker().
Para encontrar la inversa de A nos basta que el el determinante est en las
unidades de Zp :

A GLn (Zrp ) (det(A), pr ) = 1 (det(A), p) = 1

Esto se debe a que det((A)) det(A) mod p, pues es homomorfismo de


anillos. Adems la congruencia se ve fcilmente si llevamos a cabo el desarrollo
del determinante:
X X
det(A) = aN (1) aN (N ) = a1N aN (N )
SN SN

De modo que:
: GLN (Zpr ) 7 GLN (Zp )
Y por tanto N (pr ) = N (p) #Ker(). As que:
N 1
r1 N 2
Y
r
N (p ) = (p ) (pN pi )
| {z } i=0
Ker. Permutaciones de inversos de 0 | {z }
Matrices invertibles en Zp

18 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Si el tamao del alfabeto puede escribirse como producto de coprimos


En esta ocasin emplearemos como reduccin el isomorfismo de anillos:

: ZN M 7 ZN ZM

Podemos ver que el ncleo estar formado por aquellos elementos que son ml-
tiplos de N y de M simultneamente (puesto que al calcular su mdulo N y M
obtendremos 0). Pero, puesto que N y M son coprimos, el nico factor comn
que tienen es su producto, es decir, N M = 0.
Por tanto, su ncleo es el trivial, lo que nos dice que la aplicacin es inyectiva.
Adems, por ser inyectiva entre anillos de igual cardinal finito, tendremos que
la aplicacin es biyectiva.
Al ser sobreyectiva tenemos que:

U (ZN M ) U (ZN ) U (ZM ) = (N M ) = (N ) (M )

Si extendemos ahora esta aplicacin a matrices con coeficientes en ZN M tendre-


mos que obtenemos nuevamente un isomorfismo2
Puesto que es un isomorfismo entre matrices, tenemos:

GLn (ZN M ) = GLn (ZN ) GLn (ZM ) = n (N M ) = n (N ) n (M )

A partir de aqu ya podemos deducir el caso general, pues dado cualquier nmero
podremos descomponerlo apoyndonos en esta propiedad.

Veamos ahora un ejemplo numrico

Ejemplo: Nuestro espa intercepta un mensaje cifrado escrito originalmente en ingls


y donde el alfabeto empleado es A = {A, B, ..., Z, _}, un total de 27 smbolos.
Sabemos, adems, que el mensaje se ha cifrado empleando un digrafo en ZN 2 y
una funcin afn fab : Z272 7 Z272 tal que fab (x) = ax + b
Puesto que no tenemos ms informacin, no nos queda otra que recurrir a un
anlisis de frecuencia (por pares). Tras este anlisis, obtenemos que los pares de letras
ms empleados son:

Mensaje cifrado Ingles


ZA E_
IA S_
IW _T

1
Ahora tenemos que buscar la funcin inversa fab = f, . Para ello observamos la
tabla y vemos que tenemos que el valor ZA = 25 27 + 0 = 675 tiene que ir a parar
a E_ = 4 27 + 26 = 134.
2
Lo podemos comprobar repitiendo el razonamiento anterior

19 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

As mismo obtenemos tambin que nuestra funcin debe cumplir f (IA = 216) =
S_ = 512.
Para encontrar y debemos resolver el sistema:
! ! !
675 1 134
=
216 1 512

Sin embargo, el sistema no puede resolverse puesto que la matriz del sistema no es
invertible, ya que su determinante es mltiplo de 27.
A partir de aqu, deberamos trata de trabajar con la tercera relacin para lograr
escribir un sistema soluble. Probamos por tanto con la primera y la ltima relacin,
con lo que llegamos al sistema:
! ! !
675 1 134
=
238 1 721

Para poder resolver el sistema necesitamos encontrar la inversa de la matriz, para lo


que necesitamos el inverso de su determinante, que es 437. Emplearemos el algoritmo
de Euclides para calcular este inverso:
729 = 1 437 + 292 1 = 145 72 2
437 = 1 292 + 145 2 = 292 2 145 1 = 145 72(292 2 145) = 145 145 72 292

292 = 2 145 + 2 145 = 437 292 1 = 145 (437 292) 72 292 = 145 437 217 292
145 = 72 2 + 1 292 = 729 437 1 = 145 437 217 (729 437) = 362 437 217 729
As tenemos que 4371 = 362. As el sistema nos queda:
! ! ! !
1 1 134 374
= 362 =
238 675 721 647

II.6.1. Sustitucin polialfabtica


Hasta ahora todos los sistemas de cifrado que hemos visto son susceptibles de ser
superados por medio de un anlisis de frecuencia.
Esto se debe a que una letra siempre es cifrada de la misma forma, pero esto puede
cambiar.
Antes de seguir avanzando veamos un concepto nuevo

Indice de Definicin II.6 Indice de coincidencia. Suponemos que tomamos todos los libros
coinciden- escritos en un idioma dado y metemos todas las letras de esos libros en un saco para
cia despus sacar dos de ellas.
El ndice de coincidencia nos da la probabilidad de que las dos letras sacadas
del saco coincidan. Si cada letra tiene una probabilidad pi donde i indica su posicin
en el alfabeto, tendremos:
XN
I= p2i
i=1

20 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

A modo de referencia, el ndice de coincidencia en ingls es un 6,5 % y en espaol


un 7.62 %.
Si tomamos un idioma
P26 fictceo en el que todas las letras son equiprobables tendre-
1 1
mos que su ndice es i=1 262 = 26 = 3.6 %
Esto puede ser til a la hora de descifrar un mensaje pues indica si es probable o
no que el texto haya sido cifrado por sustitucin monoalfabtica.

Ejemplo: Sabemos que se est usando un criptosistema lineal con la aplicacin

fA : (Z26 )2 7 (Z26 )2

El mensaje cifrado es WKNCCHSSJH y, adems, sabemos que el inicio del mensaje


dice GLUE.
Si quisisemos hacerlo a la fuerza, tendramos que (26) = 17248 que es asequible
con los ordenadores de hoy en da, pero no lo era hace aos, cuando este criptosistema
se empleaba.
Con los datos que tenemos, podemos plantear la ecuacin:
! ! ! !
W N G V 22 13 6 21
A = A = (II.1)
K C I E 10 2 8 4

El problema que tenemos ahora es que al despejar A, no podemos calcular la inversa


de la matriz que la multiplica, pues su determinante es 18, que no es coprimo con 26.
Sin embargo, podemos trabajar mdulo 13, puesto que dos matrices iguales en
mdulo 26 sern tambin iguales en mdulo 133 , con lo que obtendramos:
! !1 !  ! !
6 21 22 13 6 8 1 2 0 2 4
A= = =8 =
8 4 10 2 8 4 5 3 2 3 2

Ya tenemos la matriz mdulo 13, si conseguimos calcular tambin esta matriz


mdulo 2, por el Teorema chino del resto, tendramos la matriz mdulo 26 que
buscamos.

Teorema II.5 (Teorema chino del resto). Sean n, m N tales que mcd(n, m) =
1, es decir, son primos relativos.
Entonces dados cualesquiera b1 , b2 Z, existe un x Z tal que:

x b1 (mod n)
x b2 (mod m)

3
Si dos elementos son iguales es porque su diferencia es mltiplo de 26 y, por tanto, tambin es
mltiplo de 13

21 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Y adems, si existen otros v, w Z que satisfagan las dos congruencias ante-


riores entonces:

vw (mod n m)

No podemos calcular fcilmente la matriz mdulo 2, pero sabemos que ser una
matriz de orden 2 con coeficientes 1s y 0s con lo que hemos restringido el problema a
16 posibles matrices, que combinaremos con A mod 13 para escribir:
! !
2 4 a b
A= + 13
3 2 c d

Por lo pronto ya hemos reducido el total de matrices posibles de 17 000 a slo 16.
Pero realmente an podemos reducir ms este valor, puesto que necesitamos que A
sea invertible 4 .
En el espacio de matrices de orden 2 slo existen 6 matrices invertibles que son:
! ! ! ! ! !
1 0 1 1 1 0 0 1 0 1 1 1
, , , , ,
0 1 0 1 1 1 1 0 1 1 1 0

Por otro lado, igual que hemos reducido la ecuacin II.1 a mdulo 13, tambin
podemos reducirla a mdulo 2, obteniendo:
! !
0 1 0 1
A =
0 0 0 0

Como era de esperar, de aqu no podemos calcular A puesto que no podemos


despejar. Sin embargo, si podemos sacar cierta informacin. Por ejemplo, podemos ver
que la primera columna de A ser (1, 0).
Recordando que necesitamos que esta matriz sea invertible y que hay slo 6 matrices
invertibles de orden 2 con coeficientes 1s y 0s, podemos anticipar que la matriz A tendr
dos formas posibles: ! !
1 0 1 1
A= A=
0 1 0 1

Ahora ya estamos en disposicin de calcular la propia matriz A. Para ello nos


apoyamos en que sabemos si sus coeficientes sern pares o impares, de acuerdo a
cmo ser la matriz mdulo 2. Adems, sabemos cmo ser la matriz mdulo 13 y a
esos valores podemos sumarle 13 o dejarlos como estn, puesto que cuando hagmos
4
Qu sentido tiene emplear un sistema de cifrado que no es descifrable ni si quiera para aquellos
que conozcan la clave...

22 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

mdulo 26 no tendr sentido haber sumado 13 ms veces. Jugando con estos datos
llegamos a calcular la matriz A que buscbamos.
As obtenemos dos opciones para la matriz A en mdulo 26, que son:
! !
15 4 15 17
A= A=
16 15 16 15

Ahora simplemente debemos probar ambas matrices para descifrar el mensaje y ver
cul de las dos nos da un resultado con sentido.

II.6.2. Criptosistema de Vigenre


Este criptosistema se basa en emplear una palabra clave de longitud determinada
a priori y la funcin de cifrado:
f (m) = x + e siendo e la palabra clave

Se trata de un sistema afn y consiste en aplicar n sistemas de cesar simultnea-


mente, uno sobre cada letra y repitiendo cada n letras, siendo n la longitud de la
palabra e.
El sistema de Csar era muy fcil de descifrar, ya que podamos simplemente com-
probar todas las posibilidades. En este caso se complica un poco pero un anlisis de
frecuencia nos ayudara a hacerlo fcilmente. La fortaleza del sistema radica en que el
atacante no conoce a priori la longitud de la palabra clave.
Si llegamos a conocer esta longitud, el sistema sera fcil de romper puesto que el
problema se reducira a descifrar varios sistemas Csar.
Para poder luchar contra este sistema, resulta til el concepto que vimos anterior-
mente de ndice de coincidencia que, recordemos, nos meda la probabilidad de que
tomando dos letras al azar del texto obtuvisemos la misma.
Si calculamos el ndice de frecuencia del texto cifrado que hemos obtenido, tendre-
mos un resultado similar al de un texto aleatorio. Sin embargo, si tomamos slo las
letras que han sido cifradas empleando un mismo criptosistema de Csar, obtendremos
un ndice de coincidencia similar al del idioma empleado para escribir el texto en claro.
As, lo que haremos ser considerar el texto como una cadena circular de caracteres
y ver con qu frecuencia coincide la letra de la posicin i con la de la posicin i + n
para diferentes valores de n. Llegamos a un punto, esta frecuencia de coincidencia
coincidir con el ndice de frecuencia y esto nos har saber que la longitud de la
palabra clave era n.
Podemos ver que el conjunto de claves de Vigenre es la unin disjunta de todas
las posibles palabras de todas las diferentes longitudes. Una pregunta que podemos
plantearnos es qu pasara si la longitud de la palabra clave y la longitud del mensaje
son iguales.
En este caso, nuestro mtodo con los ndices de coincidencia no servira de nada
puesto que cada letra estara cifrada de una forma diferente. En este caso estaramos
ante lo que se conoce como cuaderno de una sola vez o cifrado de Vernam.

23 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

La nica forma de descifrar un mensaje cifrado con este sistema es conocer la clave,
puesto que todas las letras del mensaje cifrado son aparentemente aleatoria.
El inconveniente de este sistema es que para cada mensaje hay que emplear una
nueva clave aleatoria distinta de la anterior. El motivo por el que no se usa este sistema
es la necesidad de compartir ese cuaderno de claves y mantenerlo secreto.

II.6.2.1. Explicacin matemtica del ndice de coincidencia

Como ya hemos comentado, la forma prctica de hacer uso del ndice de coinci-
dencia consiste en tomar el texto cifrado y escribir debajo de l una copia del mismo.
Una vez tenemos las letras dispuestas de esta forma desplazamos el texto inferior una
poisicin a la derecha y comprobamos con que frecuencia letras colocadas una bajo la
otra coinciden. Tras esto desplazamos una vez ms y volvemos a calcular este valor y
as sucesivamente.
Cuando se comparan letras a distancia n, siendo n la longitud de la palabra clave,
estamos considerando letras que han sido cifradas con el mismo cifrado de Csar.
Sean estas letras:
a1 a2 a3 , ..., ar
Cuando calculsemos el ndice de coincidencia sobre esta secuencia de palabras
estamos calculando: r X r
1
1{ai =aj } 5
X
I.C. =
(n 1)2 i=1 j=i

Por otro lado, el valor que se calcula al aplicar el procedimiento que acabamos de
ver es: r
1 X
= 1{ai =ai+1 }
n 1 i=1

Puesto que el texto ha sido escogido al azar y estamos tomando simplemente una
serie de caracteres del texto escogidos de forma aleatoria, es sencillo convencerse de
que:
r
1 X
j < n ' 1{ai =ai+j }
n 1 i=1

Teniendo esto en cuenta basta con escribir:


r X r r
1 1
1{ai =aj } = 1ai =ai+1 + ... + 1ai =ai+n1 '
X X 
I.C. = 2 2
(n 1) i=1 j=i (n 1) i=1

r r
1 1 X
(n 1)1ai =ai+1 = 1a =a =
X
'
(n 1)2 i=1 n 1 i=1 i i+1

Por tanto, llegados a cierto punto obtendremos un valor similar al ndice de fre-
cuencia del idioma en que fue escrito el texto y, sabiendo cuntos desplazamientos
hemos realizado, conoceremos la longitud de la palabra clave empleada.
5
La funcin 1{ai =aj } toma el valor 1 nicamente cuando ai = aj , valiendo 0 en caso contrario.

24 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Captulo III

De la criptografa clsica a la de
clave pblica

A lo largo de la historia tuvieron lugar una serie de avances que propiciaron la


aparicin de la criptografa de clave pblica.
En 1917 Gilbert Sandford Vernam (1890-7 de febrero de 1960) invent un
cifrado en flujo y ms tarde coinvent un cifrado de libreta de un solo uso. Vernam
propuso un teletipo cifrado en el cual una clave previamente preparada y almacenada
en cinta perforada se combina carcter por carcter con el mensaje en texto plano para
obtener un texto cifrado. Para descifrar el texto cifrado, debe combinarse de nuevo con
la clave carcter a carcter para producir el mensaje en texto plano.
Poco tiempo despus, Joseph Mauborgne, en aquel entonces capitn en el US
Army Signal Corps, propuso, adems, que la cinta de papel con la llave tuviera infor-
macin aleatoria.
Las dos ideas, cuando se combinan, implementan de manera automtica una libreta
de un solo uso, aunque ninguno de los dos inventores us este nombre.
Aunque estos pequeos avances puedan parecer muy antiguos y lejanos, lo cierto
es que estn muy presentes en nuestro da a da. Por ejemplo, el cifrado de flujo sigue
siendo utilizado1 en los telfonos mviles.

1
Se emplea una adaptacin del mismo

25 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

III.1. Enigma
La mquina enigma funcionaba de acuerdo al siguiente esquema:

donde el nmero 8 representa uno de los modificadores, que simplemente conectaba


pares de letras para que fuesen intercambiadas; el nmero 5 representa los rotores y el
nmero 6 el reflector.
En rojo podemos ver el flujo que seguira la corriente en caso de que pulssemos
la letra A, que sera cifrada a una D.

Observacin: La configuracin que se muestra en la imagen slo se mantendra fija


durante un brevsimo periodo de tiempo. Tras finalizar el cifrado de la letra A, los
rotores giraran de modo que no se volvera a seguir el mismo camino nunca ms.
Si tenemos una mquina de enigma que funcione con 26 letras, 5 rotores de entre
los que hay que escoger 3 y modificando 6 pares de letras2 , la pregunta que surge es
clara, Cuntas claves posibles tenemos?
Para empezar tenemos que escoger qu tres rotores tomamos, teniendo en cuenta
que importa el orden, con lo que tenemos 5 4 3 = 60 opciones posibles.
Una vez hemos escogido los rotores, debemos ver qu posicin tendr cada rotor.
Puesto que tenemos 26 posiciones para cada rotor tenemos un total de 263 opciones.
2
Es decir, tenemos 6 modificadores

26 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por ltimo debemos colocar los modificadores, para lo que tenemos que elegir 6
pares de letras. Para ello tenemos un total de
           
26 24 22 20 18 16
opciones
2 2 2 2 2 2

Pero, puesto que no importa el orden, debemos dividir entre 6!.


Agrupando todo lo que hemos mencionado, tenemos que la mquina enigma per-
mite tener un total de:
60 263 26
 24 22 20 18 16
2 2 2 2 2
2
8.469 1017 claves
6!

La forma de trabajar con enigma era mediante un libro de claves donde cada clave
era empleada a lo largo de todo el da para todas las comunicaciones.
No obstante, si toda la flota empleaba el mismo sistema de cifrado y los mensajes
eran fcilmente interceptables (se comunicaban por radio) al final sera relativamente
sencillo que el enemigo descifrara la clave. Para solucionar esto, lo que se haca es que
al comienzo de cada mensaje se enviaban 3 letras, que indicaban la nueva posicin de
los rotores que debera emplearse a partir de ese momento.
As, un esquema de transmisin del mensaje sera:

1. Montamos la mquina con la clave del da.

2. Transmitimos la clave del mensaje dos veces.

3. Cambiamos la posicin de los rotores segn la clave que enviamos.

4. Transmitimos el mensaje.

Aqu tenemos la debilidad del criptosistema, el envo de la clave dos veces, puesto
que nos adelanta cierta informacin acerca de la posicin inicial de los rotores. Otro
problema radic en el hecho de que el primer mensaje del da siempre informaba del
tiempo y siempre comenzaba de la misma forma, lo que daba an ms informacin al
bando rival.
A la hora de descifrar, el mecanismo es sencillo. La forma en que funciona enigma
est basada en trasposiciones. Es decir, si a partir de la letra A obtengo la B, a partir
de la B obtendr la A, partiendo de la misma clave.
Por tanto, una vez recibido el mensaje lo nico que hay que hacer es introducir el
mensaje cifrado en la mquina y como salida obtendremos el texto original.
Veamos por qu esto es cierto:

Demostracin. Para comprobar que la funcin de cifrado y su inversa son la misma,


vamos a ver cmo funcionaba enigma sobre cada letra.
En primer lugar se intercambiaba una letra por otra mediante los modificadores.
Tras esto la letra pasa por los rotores y llega al reflector (que ser la clave de la
demostracin) y tras ello vuelve a pasar por los rotores y por el modificador.

27 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

As nos queda que

(m) = 1 1 R(m) = 1 (m) = 1 1 R(m) = (m)

Pero ahora el lector avispado se percatar de un detalle muy importante. De todas


las claves posibles que mencionamos al inicio de esta seccin, no todas darn lugar a
una funcin que coincida con su inversa.
En este caso, = 1 = (a1 a2 )(a3 a4 )...(a25 a26 ), puesto que necesitamos
que no haga ms que permutar pares de letras.
Dada esta restriccin tendremos un total de
26 24
  2
... 2 26!
2 2
= 1.01 1015 claves posibles
13! 13!213

III.2. Criptosistemas de clave simtrica


Todos los sistemas que hemos visto hasta ahora, englobados como criptosistemas
clsicos, comparten una misma propiedad: Si sabemos cmo cifrar sabremos cmo
descifrar. Esto se debe a que todos estos sistemas son de clave simtrica.
Si pretendemos que diferentes usuarios puedan emplear el mismo criptosistema
manteniendo seguridad entre ellos, necesitaremos una clave distinta para cada uno de
ellos.
En el mundo de la tecnologa en que vivimos ahora mismo esto es inviable puesto
que seran necesarias demasiadas claves (una por usuario/actividad). Adems, al llegar
un nuevo usuario sera necesario compartir con l la clave de alguna forma.
La solucin se encuentra en las funciones de un solo sentido como f (n) = 3n
en F1231 :

28 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Funcin Definicin III.1 Funcin de un slo sentido. Sea f : A 7 B una funcin inyectiva,
de un slo se dice que es de un slo sentido si:
sentido

1. f (a) es fcil de calcular

2. Dado b Im(f ) podemos encontrar a  f (a) = b pero, en la prctica, es difcil


de encontrar.

Como ejemplo trivial podemos considerar un puzle y la funcin f que consiste


en desmontarlo. Esta funcin es trivial, basta con darle una patada al puzle, pero su
inversa, que sera montar el puzle de nuevo, es compleja de calcular.
Vamos a definir formalmente dos adjetivos que emplearemos al referirnos a dife-
rentes problemas:

Fcil Definicin III.2 Fcil. Si k es el tamao de los datos, el tiempo necesario para resolver
el problema es polinmico en k, es decir T = O(k)

Difcil Definicin III.3 Difcil. Si k es el tamao de los datos, el tiempo necesario para resolver
el problema

es no polinmico. Puede ser exponencial T = O(ek ), o subexponencial
T = e k entre otros

III.3. Estimaciones de tiempo


Los datos con los que vamos a trabajar sern, de un modo u otro, nmeros. Por
tanto debemos ser capaces de estimar cmo son estos nmeros, a fin de ver si son
manejables o no.
El tamao de n Z puede venir dado por log(n). Nos da igual el tipo de logaritmo
que escojamos puesto que la relacin entre logaritmos viene dada por una constante.
Vamos a definir ahora una medida de unidad del tiempo.

Bit- Definicin III.4 Bit-operacin. Denominamos bit-operacin al proceso de sumar


operacin dos bits.

Ejemplo: Cunto tiempo es necesario para sumar dos enteros de k y l bits respec-
tivamente?
Sin prdida de generalidad podemos suponer que k l. En ese caso tendremos
que hacer un total de k bit-operaciones.
En general, si estamos trabajando con nmeros menores que N (como ocurre al
movernos en ZN ), el tiempo empleado ser T = O(log(N ))

Ejemplo: Cunto tiempo empleamos para multiplicar dos nmeros enteros de k y


l bits respectivamente?

29 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Recordando el procedimiento realizado para multiplicar nmeros cuando estbamos


en el colegio podemos ver que tendremos que realizar un total de l1 sumas de l+k1
dgitos.
As, considerando k l, el tiempo que necesitaremos ser de la forma (l 1)O(k +
l 1) = O(k)O(k) = O(k 2 )
En este ltimo ejemplo podemos encontrar diferentes excepciones en funcin de
la forma en que se realice la multiplicacin. Por ejemplo, si multiplicamos emplean-
do la transformacin de Fourier rpida tendramos T = O(log(N ) log(log(N )) =
O(k log(k)).
Estos ejemplos (a los que podemos aadir el caso de la divisin) constituyen ejem-
plos de operaciones que pueden realizarse en tiempo polinmico, es decir, seran cata-
logados como problemas fciles.
Veamos otro ejemplo un poco ms interesante:

Ejemplo: Cunto tiempo es necesario para calcular la exponencial mdulo N?


Lo que haremos para calcular esta exponencial ser multiplicar la base por s misma
una vez tras otra, realizando el clculo del mdulo cuando sea necesario. Es decir, en
cada paso tendremos T = O(k 2 ) + O(k 2 ) = O(k 2 ), es decir, la suma de los tiempos
empleados en la multiplicacin y la correspondiente divisin.
Adems, esta operacin se llevar a cabo un mximo de N veces, (puesto que
no tiene sentido poner un exponente mayor). Por tanto, el tiempo total ser T =
O(log2 (N )) O(N ) = O(N log2 (N ))
No obstante, hasta aqu estamos considerando que estamos multiplicando de la
forma ms lenta posible. Es decir, estamos calculando 3x = (((3 3) 3) 3)....
Si agrupamos los factores obtenidos al descomponer la potencia en productos de
dos en dos, tendremos que el nmero de productos necesarios ser mucho menor.
En general, empleando el algoritmo de los cuadrados iterados requiere un tiempo
total de O(log2 (N )).

Ejemplo: Cunto tiempo es necesario para realizar un cambio de base?


El razonamiento del resultado queda como ejercicio para el lector.
El tiempo empleado ser T = O(k 3 ).
Conocido este resultado, podemos ver que para calcular la exponencial, aunque
tengamos que realizar un cambio de base para movernos cmodamente en base 2,
tendremos un tiempo total T = O(k 3 ) + O(k 4 ) = O(k 4 ), es decir, exponenciar es
un proceso fcil.

Problema Definicin III.5 Problema del logaritmo discreto. Sea G =< g > un grupo cclico
del lo- de orden N , es decir, G = {g i }, el problema del logaritmo discreto, DLP para G
garitmo consiste en encontrar i  h = g i dado h G.
discreto
El mejor algoritmo conocido para resolver el DLP en (Zp ) necesita tiempo subex-
ponencial.

30 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Corolario III.1. El problema DLP con f : (Zp ) 7 (ZN ) es de un slo sentido si


p es suficientemente grande.

Una posible solucin sera escribir una tabla en la que asociamos cada entero de
i ZN con la potencia g i . No obstante, la construccin de esta tabla requerira elog N
veces el tiempo de una multiplicacin, lo que nos da un tiempo exponencial.

III.4. Usos criptogrficos de las funciones de un


slo sentido

III.4.1. Comparticin de clave privada


El problema es sencillo: Tenemos dos usuarios que quieren comunicarse de manera
secreta pero, previamente, deben establecer una clave empleando para ello un canal
no seguro.
El procedimiento es el siguiente (Suponemos que los dos usuarios que quieren
comunicarse son A y B):

1. A elige, al azar, un nmero 1 < a < p

2. A enva a B g a

3. B elige, al azar, un nmero 1 < b < p 1

4. B enva a A g b

5. La clave comn se establece como C = g ab = (g a )b = (g b )a

El generador g es perfectamente conocido por todo el mundo. Por tanto, aquel que
quiera descifrar el mensaje conocer perfectamente g, g a , g b y necesitar calcular g ab
para lo que necesita resolver un DLP. Si calcula a ya lo tiene todo hecho.
Tcnicamente, el atacante podra tratar de resolver un problema de Diffie-Hellman
(DFP) en lugar del DLP. Este problema consistira en encontrar g ab con los mismos
datos que antes, pero sin pasar por calcular a.
En general se cree que estos dos problemas son equivalentes, pero esto an no ha
sido demostrado.
La seguridad del sistema radica en que no hay forma de resolver rpidamente el
DLP pero en el momento en que desarrollemos ordenadores cunticos con capacidad
para trabajar con suficientes bits, tendremos la capacidad de resolver DLP de manera
inmediata, con lo que el criptosistema de clave pblica-privada dejar de ser seguro.
Este procedimiento slo nos explica como llegar a compartir una clave privada.
Una vez tenemos esta clave, podramos emplear cualquier mtodo para cifrar, incluido
cualquiera de los mtodos clsicos vistos hasta ahora

31 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

III.4.2. Recibir mensajes cifrados sin necesidad de acordar


claves a priori
Para hacer esto, A hace pblica una funcin de un slo sentido que slo A sabe
invertir. Si B quiere enva un mensaje a A, slo tiene que cifrarlos empleando esta
funcin, obteniendo un mensaje que slo A es capaz de descifrar, pues solo ella conoce
la funcin de descifrado.

III.4.3. Firmas
La idea de la firma es crear algo que no puedan imitar los dems. As, el emisor
puede emplear como firma el mensaje m cifrado con la inversa de la funcin pblica
que l mismo presenta a los dems.
Supongamos que queremos firmar con nuestro nombre. Evidentemente, no lo vamos
a enviar tal cual, puesto que cualquiera podra copiarlo.
Para evitarlo, tomamos nuestra funcin f y enviamos f 1 (f irma) con lo que
seremos los nicos capaces de escribir un mensaje m tal que f (m) = f irma, puesto
que nadie ms conoce f 1 .
Sin embargo, tenemos un problema. Una vez que enviemos la firma, cualquiera
puede copiarla y reutilizarla, an sin conocer f 1 . Copia y reenva f 1 (f irma) y
puede suplantar al original.
Por tanto, lo que se hace es emplear como firma f 1 (mensaje enviados).
Pero nuevamente tenemos un problema y es que si cada vez que enviamos un
mensaje tenemos que emplear una firma tan larga como el mensaje, la eficiencia se ve
drsticamente reducida.
Para solventar este problema existe una amplia variedad de opciones. Una de ellas
es el empleo de una funcin HASH que resume el mensaje. En la prctica se emplean
funciones HASH criptogrficamente seguras.
Esto consiste en emplear funciones resistentes a colisiones, es decir, funciones HASH
tales que en la prctica resulta prcticamente imposible que se produzcan colisiones.

Observacin: El receptor calcular la imagen por f de la firma y la funcin hash del


mensaje. Si obtenemos el mismo resultado, podemos confiar en la autora del mensaje.

III.4.4. Identificacin
Supongamos que queremos acceder a un sistema que requiere una clave.
En esta ocasin la relacin clave-usuario estar almacenada en el sistema lo que
deja un vaco de seguridad, pues el administrador del sistema tendr acceso a las claves.
Lo que se puede hacer para proteger al usuario es que el sistema almacene la
relacin usuario-f (clave). As a la hora de autentificarnos el sistema recibe la clave, no
la guarda, calcula su imagen a por nuestra f y compara.

32 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

III.4.5. Challenge: Identificacin a partir de otro


1. Suponemos que el usuario A quiere que el usuario B se identifique.

2. Entonces el usuario A le enva un reto a B, es decir, le enva fB (m)

3. Si el usuario B es capaz de responder con fA (m) es que es quien dice ser.

La idea subyacente es sencilla. Puesto que slo B conoce fB1 , slo l podr en-
contrar m y as enviar fA (m).

III.4.6. Tarjeta de crdito


Hay diferentes opciones a la hora de reconocer la tarjeta de crdito y validar que
el PIN introducido es el correcto:

La tarjeta contiene el PIN secreto grabado y el cajero slo tiene que comprobar
que el PIN introducido coincide con el grabado en la tarjeta.
Desventaja: Una banda magntica es fcil de leer y si te roban la tarjeta ests
jodido.

La tarjeta contiene f (P IN ) siendo f una funcin criptogrfica. As tecleo mi


PIN, la mquina calcula f (P IN ) y compara.
Desventaja: Si f es una funcin clsica, todo aquel que tenga acceso a la
mquina sabr como descifrar. Adems requerira una confianza absoluta entre
todos los bancos y, si f es simtrica, al proporcionarle un banco a otro f le est
permitiendo descifrar los PIN de los clientes.

La tarjeta contiene f (P IN ) siendo f una funcin de un slo sentido. As tecleo


mi PIN, la mquina calcula f (P IN ) y compara.
La funcin f ser creada por una persona (la nica que conocer f 1 ) y podr
ser pblica, pudiendo incluso estar grabada en la propia tarjeta.
Desventaja: Por ser el PIN un nmero de tan solo cuatro dgitos, los ataques
por fuerza bruta podran, fcilmente, encontrar el PIN a partir de la tarjeta.
Ms adelante veremos cmo se lucha contra estos ataques.
Otra desventaja: Con este sistema no puede usarse una tarjeta robada (si el
PIN fuese bastante grande) pero es sencillo crear y utilizar una tarjeta falsa.

En lugar de grabar en la tarjeta f (P IN ), grabamos f 1 (P IN ).


Desventaja: Como f es pblica, a partir de f 1 (P IN ) podemos encontrar el
PIN y emplear una tarjeta robada. Adems, puedo grabar un x cualquiera en la
tarjeta y emplear PIN=f (x)

Empleamos dos funciones de un slo sentido y grabamos en la tarjeta f21 (f1 (P IN )).
As, una vez que el usuario introduzca su PIN, el cajero calcular f2 de lo que
hay guardado en la tarjeta y lo comparar con f (P IN ).

33 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

As ser difcil emplear una tarjeta robada puesto que encontrar el PIN implica
encontrar f11 de G. Por otro lado, tampoco ser posible falsificar una tarjeta
pues sera necesario conocer f21 .
Desventaja: Puesto que el PIN es pequeo sigue siendo asequible que un ladrn
realice todas las pruebas necesarias en su casa, llegando a descubrir el PIN por
fuerza bruta.

Como el lector puede observar ninguno de estos mecanismos es perfecto y siempre


queda esperanza para el atacante, que podra usar una tarjeta de crdito de forma
ilcita sin excesivas complicaciones.

III.4.7. El gran cambio de la tecnologa moderna


La idea es que no es necesario que la tarjeta tenga grabado el PIN, ni ninguna
transformacin del mismo.
Para hacer esto, el cajero enviara a la central un identificador de transaccin,
recibiendo como respuesta desde la central un nuevo valor G = f (ID, P IN ).
As, una vez el usuario introduce su PIN, el cajero calcula f (ID, P IN ) y comprueba
si coincide el valor.
Con esta tcnica, conseguimos que cada transaccin funcione de forma ligeramente
distinta y, adems, no hay ninguna informacin grabada en la tarjeta.
Otra posibilidad es el empleo de una tarjeta de chip, en ocasiones conocida como
tarjeta inteligente.
Estas tarjetas permiten hacer que la funcin f dependa del usuario. Veamos cmo
funciona:

Cada usuario tiene una clave pblica e, a partir de la cual se genera una funcin
de un slo uso fe y una clave secreta d a partir de la cual se tiene fd .

La tarjeta contiene fd1

La central conoce la tupla (ID, P IN, e).

La tarjeta enva a la central (ID, T RAN SACCION ), es decir, enva un iden-


tificador del usuario que est accediendo al cajero y un cdigo aleatorio que
identifica la transaccin.

La central responde con fe (T RAN SACCION.P IN ) = G

El usuario teclea el PIN y la tarjeta comprueba si fd1 (G) = T RAN SACCION.P IN

Una vez el PIN introducido ha sido validado, la tarjeta enva de nuevo a la central
fe1 (T RAN SACCION.OK)

Adems de todo lo que hemos explicado, las comunicaciones tarjeta-banco podran


(y debern) ir cifradas de modo que la comunicacin no pueda ser interceptada por un
atacante.

34 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

No obstante, el mtodo que acabamos de explicar, an tiene un fallo: un atacante


podra hacerse pasar por el banco.
Para evitarlo, el banco puede responder enviando fBAN CO (fe1 (ID.P IN )) = G,
es decir, cifrando el mensaje con su clave privada. De este modo, todo el mundo que
tenga acceso a la clave pblica del banco (todo el mundo, por eso es pblica), podr
verificar que el mensaje ha sido escrito por el banco, puesto que nadie ms conocer
fBAN CO .

III.5. Modos de ataque


Es importante conocer, adems de los algoritmos de seguridad empleados, los ata-
ques ms habituales que pueden llevarse a cabo contra estos algoritmos, de modo que
podamos anticiparnos a las carencias del sistema de seguridad.

1. Con texto cifrado conocido


El atacante tiene acceso a una parte (sino el total) del texto cifrado.
Puesto que esto ocurre siempre, todo sistema de seguridad que se precie debe
ser capaz de defenderse de este tipo de ataques.

2. Con texto en claro conocido


El atacante tiene acceso a algunos pares de texto en claro con su correspondiente
texto cifrado.
Todos los sistemas clsicos tienen problemas ante este tipo de ataque, tal y como
hemos visto en las primeras dos hojas de ejercicios.

3. Con texto en claro elegido


El atacante tiene acceso a pares de texto en claro con su correspondiente texto
cifrado siendo el texto en claro elegido por l mismo, es decir, es capaz de cifrar
todos los textos que desee (como ocurri en la lucha contra Enigma, al hacerse
con una mquina).
As el atacante puede tomar textos en claro pequeos y hacer un ataque por
fuerza bruta.
Siempre que empleemos un sistema de clave pblica podemos ser vctimas de
este tipo de ataques.

35 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Captulo IV

El criptosistema RSA

Funcin Definicin IV.1 Funcin trampa. Tambin conocida como funcin ratonera, se trata
trampa de una funcin fe de un slo sentido que depende de un parmetro e conocido como
clave pblica, tal que su inversa fd1 depende de un parmetro d conocido como
clave privada y d slo se puede calcular a partir de e con ayuda de informacin
adicional.
La idea del RSA, criptosistema que estudiaremos a continuacin, consiste en el
uso de este tipo de funciones apoyndose en la idea de que encontrar primos es fcil
pero factorizar un nmero grande en primos es difcil

IV.1. Generacin de claves


Los pasos a seguir son:

1. Generamos dos nmeros primos p, q grandes que, como nos ha mostrado el


profesor en clase, es algo fcil de realizar.
Ms adelante veremos cmo se generan estos primos.

2. Encontramos un nmero e coprimo con (p 1)(q 1).


Para hacerlo empleamos el algoritmo de Euclides, empezando con un nmero
cualquiera e [1, (p 1)(q 1)] y le aplicamos el algoritmo de Euclides para
obtener el mximo comn divisor.
En caso de que este mximo comn divisor no sea 1, simplemente probamos con
otro nmero hasta dar con la clave.

3. Encontramos el nmero d inverso de e


Cuando tenemos el nmero e, podremos apoyarnos en la identidad de Bezout
para obtener su inverso.

4. Calculamos n = p q

5. Publicamos la clave pblica [n, e] y mantenemos oculta la clave para descifrar d.

36 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hay un punto importante de este procedimiento que puede hacernos dudar: la


bsqueda del nmero e, puesto que el algoritmo de Euclides podra llevarnos mucho
tiempo.
No obstante el algoritmo de Euclides es muy rpido, cosa que podemos comprobar
basndonos en el siguiente lema:
Lema IV.1. Al aplicar el algoritmo de Euclides, siendo rn el resto obtenido en la
iteracin n, se cumple que:
1
rn+2 < rn
2
Corolario IV.2. El nmero de pasos necesarios hasta completar el algoritmo de Eu-
clides es 2 log(N ) = O(log(N )).
Por tanto, el tiempo necesario para completar el algoritmo es O(log(N )3 )

Veamos ahora la demostracin del lema:

Demostracin. Para empezar, observamos que si rn+1 12 rn no tenemos nada ms


que hacer, puesto que los restos van decreciendo siempre.
Por otro lado, si
1
rn+1 > rn = 2rn+1 > rn
2
Pero sabemos que
1 1
rn = rn+1 + rn+2 = rn+2 = rn rn+1 < rn rn = rn
2 2

Queda claro por tanto, que el la aplicacin del algoritmo es posible, al menos
en cuanto al cumplimiento de los requisitos previos. Veamos ahora cmo funciona el
algoritmo.

IV.2. Manejo de las funciones


Los pasos a seguir en la aplicacin del algoritmo son:

1. Para escribirle, se transforman los mensajes en enteros m tales que 0 m


n 1, es decir, elementos de ZN
2. La funcin para cifrar es fe (m) = me mod n, fcil de aplicar y de conocer, pues
d y n son pblicos.
3. La funcin para descifrar es fd1 (c) = cd mod n, fcil de aplicar pero no de
conocer, pues d es secreto.
4. Gracias al teorema de Euler, tambin conocido como teorema de Euler-Fermat,
que es uno referente a nmeros compuestos anlogo al Pequeo Teorema de
Fermat:
fd1 (fe (m)) = med = m1+k(p1)(q1) = m mod n

37 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

5. Para romper el algoritmo (es decir, para encontrar la clave d a partir de (n, e))
hay que calcular (p 1)(q 1), lo que requiere factorizar n = pq, lo cual es
imposible.

IV.3. Tratamiento de los mensajes


Las funciones empleadas en RSA son de la forma:

fe , fd1 : Zn 7 Zn

Para poder cifrar los mensajes hay que convertirlos en enteros. Para ello, si el
alfabeto empleado tiene N letras, se eligen dos enteros r < s y se consideran los
mensajes como:
M = Ar = ZN r mensajes en claro
C = As = ZN s mensajes cifrados

La forma real de cifrar consiste en componer tres funciones inyectivas de la forma:

M = ZN r Zn fe Zn ZN s = C

y lo anlogo para descifrar.

IV.4. Ataques contra RSA


Veamos un ejemplo de ataque al algoritmo.

Ejemplo: Supongamos que queremos atacar al usuario Adolfo, que publica la clave
(n, e) = (24613, 6943) y recibe el mensaje ZVQ. Qu le dicen?.

Observacin: En este ejemplo estamos usando nmeros pequeos, que podramos


factorizar fcilmente con un ordenador actual pero, a fin de simular un caso real, no
usaremos la fuerza bruta y trataremos de trabajar como si de un nmero grande se
tratase.
Para empezar debemos factorizar el nmero n = 25613. Para ello nos apoyamos
en el mtodo de Fermat.

Mtodo Definicin IV.2 Mtodo de factorizacin de Fermat. Este mtodo se basa en la


de factori- representacin de un nmero natural impar como la diferencia de cuadrados:
zacin de
Fermat n = a2 b2 = (a b)(a + b) siendo (a b) 6= 1

Observacin: Todo nmero impar se puede representar de esta forma. Sea n = cd


tenemos:  2  2
c+d cd
n=
2 2

38 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

La necesidad de que sea impar nos garantiza que tanto c como d tambin lo sean
y, por tanto, su suma/diferencia es par1
Por tanto, vamos a tratar de buscar dos nmeros que satisfagan:
p
n = x2 y 2 = x = n + y 2

Por tanto, es lgico empezar a probar con el menor entero x > n y, para cada
uno de esos valores, tratar de encontrar un y que satisfaga la ecuacin.
Para cada x que probemos podemos comprobar la existencia de y calculando una
resta y una raz, lo cual es bastante rpido.
En este ejemplo nos encontramos con que

n = 151 163

1
Ahora procedemos a calcular d = e
mod (p 1)(q 1), es decir:

1
d= mod 150 162 = 7
6943

Una vez tenemos d podemos proceder a descifrar el mensaje:

ZV Q = 26 302 + 22 30 + 17 = 24077 mod 303

fd1 (ZV Q) = 240777 mod 24613 = 578 mod 302 = 19 30 + 8 = SI

IV.4.1. Ataque de texto en claro elegido


Imaginemos que queremos emplear el criptosistema RSA para cifrar los mensajes
en una votacin.
En este caso es muy sencillo para el atacante hacerse con mensajes de texto en
claro elegido (basta con que vote), momento a partir del cual el atacante ser capaz
de descubrir el sistema de descifrado.
Esto le permite no slo conocer la votacin de cada usuario, sino que habra des-
cifrado el sistema haciendo que el sistema no vuelva a ser seguro.
Para evitar este tipo de situaciones (que pueden darse en otros contextos, siempre
que tengamos mensajes cortos y previsibles) lo que se hace es rellenar los mensajes de
cierta forma para que un mensaje corto como SI sea transformado en una cadena
larga de bits que ser cifrada posteriormente.
A fin de lograr este efecto empleamos el optimal asymmetric encryption pad-
Optimal ding
asym-
metric
encryption n = nmero de bits (longitud) de la clave RSA.
padding 1
Si ambos fuesen pares tambin nos valdra, pero si n es par no podemos garantizar que tanto c
como d tambin lo sean

39 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

k0 , k1 = parmetros fijosdel sistema.


m = el mensaje, de n (k0 + k1 ) bits, que queremos transmitir.
r = k0 bits aleatorios.
G : {0, 1}k0 {0, 1}nk0 funcin hash criptogrfica pblica.
G : {0, 1}nk0 {0, 1}k0 funcin hash criptogrfica pblica.
X||Y el mensaje" de n bits que finalmente se cifra usando RSA.

Al final del procedimiento tenemos:


(
X = m||0...0 + G(r)
Y = r + H(X)

Con esto podemos ver que los mensajes m, por muy pequeos que fuesen, quedarn
convertidos en una secuencia aleatoria de caracteres de tamao n.
Una vez tenemos X||Y , lo enviamos al destinatario empleando RSA y cifrando
X||Y con la clave pblica del destino (como hacemos siempre con RSA).
El destinatario puede realizar el descifrado del mensaje como hemos visto siempre
y procede a deshacer las operaciones realizadas para recuperar m a partir de X||Y .
Para deshacer el padding calcula:

X H(X)

r = Y H(X)
m||0...0 = X G(X)

40 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

IV.5. Cifrado y firma con RSA


Como ya hemos visto anteriormente, si tenemos una serie de usuarios que se co-
munican empleando un criptosistema de clave pblica-privada, como puede ser RSA,
la forma de garantizar la autenticidad del mensaje consiste en el empleo de las firmas.
Si A quiere enviarle un mensaje a B, garantizando que es A, lo que enviar ser:

fA1 fB (m) = c


puesto que slo A conoce fA1 .


El usuario B, para descifrar el mensaje calcular:

m = fB1 fA (c)


IV.6. Eleccin de primos para RSA


Para empezar, y de manera obvia, los primos p, q tales que n = p q empleados
en el criptosistema deben cumplir unas ciertas propiedades, a fin de evitar que sean
descubiertos fcilmente:

1. Deben ser escogidos al azar


2. No pueden ser pequeos, ni primos de Fermat, ni alguno de los primos ms
grandes conocidos. En general no pueden ser primos presenten en ningn tipo
de tabla, puesto que el atacante tambin tendr acceso a esa tabla.
3. No pueden ser de primos cercanos, puesto que la idea de Fermat ayuda a facto-
rizar
4. Tampoco deben ser primos muy lejanos. Deben tener el mismo nmero de cifras.
El mtodo de Polland de curvas elpticas depende del tamao del menor factor.
5. El mnimo comn mltiplo de p 1 y q 1 debe ser grande puesto que, como
se puede ver en el primer ejercicio de la hoja 4, calcular un inverso mdulo a b
es equivalente a calcular el inverso en mdulo m.c.m.(a, b)
6. En resumen hay que evitar cualquier cosa que facilite factorizar n o ms exacta-
mente, encontrar el un d que funcione.

El procedimiento habitual para conseguir estas propiedades es el siguien-


te:

1. Elijo al azar primos p0 , q 0 con los mismos nmeros de dgitos, asegurando que no
estarn en ninguna tabla, ni sern demasiado cercanos ni lejanos.
2. Calculo p = p0 + 1 y q = q 0 + 1 con , pequeos hasta que p y q sean
primos.
Sabemos que este paso funciona por el Teorema de Dirichlet para primos en
progresin aritmtica, que garantiza que en una progresin aritmtica siempre hay

41 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

infinitos primos, que se equidistribuyen entre todas las progresiones con razones
primas menores que p 1.
Con esto garantizamos que, puesto que y son pequeos

m.c.d(p 1, q 1) = m.c.d.(, ) que es pequeo

IV.7. Otros criptosistemas de clave pblica


A partir de la dificultad de factorizar en primos nmeros grandes surge la idea de
RSA.
Otro problema que hemos visto hasta ahora es el del logaritmo discreto, que es
ElGammal aprovechado para idear un criptosistema conocido como ElGammal, en honor a su
creador, un egipcio que invent el criptosistema en torno a 1984.
Veamos los pasos a seguir para emplear este sistema:

1. Tomamos un grupo cclico G =< g > con |G| >> 0

2. Cada usuario elige al azar su exponente di secreto y establece como clave pblica
ei = g di .
Conocer el exponente a partir de la clave pblica es un problema de logaritmo
discreto que sabemos no puede resolverse en tiempo polinmico.

3. Para cifrar tomamos mensajes en G, para lo que seleccionamos un primo p tal


que:
ZN Fp
siendo N la longitud de los mensajes que cifraremos.

En el momento de enviar un mensaje al usuario A, el procedimiento a seguir es:

1. El usuario B mira eA , elige al azar 1 < k < |G| y enva:

c = (c1 , c2 ) = (g k , mekA )

2. El usuario A toma ekA = (g dA )k = (g k )dA = cd1A . Puesto que este usuario es


capaz de calcular el opuesto de dA , puede calcular

m = c2 c1dA

Para poder atacar a este sistema es necesario conocer dA , que es secreto o k que
es secreto y adems cambia en cada comunicacin.

42 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Captulo V

Algoritmos de factorizacin y
tests de primalidad

La base de la seguridad del sistema RSA es el hecho de que es fcil generar nmeros
primos grandes (por eso podemos usar el algoritmo) pero factorizar nmeros grandes
en factores primos es muy difcil.
A da de hoy, los ordenadores cunticos seran capaces de factorizar primos a gran
velocidad. En el momento en que estos ordenadores sean bastante grandes (con su-
ficiente memoria) para operar con grandes nmeros, el proceso de factorizacin ser
muy rpido, con lo que el algoritmo RSA dejar de ser seguro.
No obstante, vamos a seguir estudiando los procesos de factorizacin y primalidad
desde el punto de vista de los ordenadores y los medios actuales.
Si quisisemos factorizar un nmero, empleamos el algoritmo que usbamos en el
colegio en el que vamos probando con todos los nmeros primos. Es decir, empleamos
la criba de Eratstenes.

Para hacer esto, necesitamos tener una lista de todos los primos hasta n con los
que ir probando.

Teorema V.1 (Teorema del nmero primo). El nmero de primos menores que
un nmero x es:  
x
(x) = O
log(x)


Una vez tenemos la lista de primos existentes menores que n (cosa que en una
situacin real no se tiene pues n es enorme), tendramos que hacer un total (x)
divisiones y, puesto que cada divisin nos supone O(log3 (n)) bit-operaciones, tenemos
que el total del algoritmo nos supone:
!
n  1 
O(log3 (n)) O = O e 2 log(n) log2 (n) operaciones
log( n)

43 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejemplo: Supongamos que queremos factorizar un nmero del orden de 1075 em-
pleando el ordenador mas rpido del mundo.
El ordenador mas rpido del mundo es capaz de realizar 33,86 PETAFLOPS, es
decir, realizar un total de 33.86 1015 operaciones por segundo.
Puesto que un ao tiene 3, 1537 107 segundos, tenemos que en un ao podemos
realizar, con el ordenador ms potente del mundo un total de 1024 operaciones.
Suponiendo que cada divisin es una operacin (que no es as), necesitaremos 1050
aos para poder factorizar el nmero 1075 .

V.1. Test de primalidad


Si queremos comprobar si un nmero es primo, no podemos depender de la fac-
torizacin del mismo, puesto que entonces no podramos comprobar la primalidad de
nmeros grandes. Para hacerlo nos apoyamos en el siguiente teorema.

Teorema V.2 (Teorema de Wilson (1770)).

n es primo (n 1)! = 1 mod n

Demostracin.

=
Partiendo de que a b b a, vamos a demostrar que si n no es
primo, entonces no es cierto que (n 1)! = 1 mod n.
Supongamos que n no es primo. Entonces tenemos diferentes casos:

1. n = n1 n2 con 1 < n1 < n2 < n


En este caso tenemos

(n 1)! = 1 2... n1 ...n2 ... = 0 mod n

2. n = p2 siendo p primo impar


En este caso tenemos

(n 1)! = 1 2... p... 2p... (n 1) = 0 mod n

3. n = 4 = 22
En esta ocasin
3! = 6 = 2 mod 4

=
Sea n primo, dado un elemento a Zn tenemos:

a = a1 mod n a2 = 1 mod n a2 1 = 0 mod n

44 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

y la ecuacin a2 1 = 0 mod n tiene, como mucho, dos races en un cuerpo.


En este caso, estas races seran a = 1, a = (n 1).
Por tanto, puesto que estamos en Zp , todo elemento tiene su inverso por lo que
al escribir (n 1)! estamos multiplicando todos los elementos del cuerpo, por
lo que cada factor estar multiplicado por su inverso y se cancelar, excepto
1 y (n 1) que son sus propios inversos.
As nos queda:

(n 1)! mod n = 1 (n 1) mod n = n 1 mod n = 1 mod n

Este algoritmo, aunque parece muy bonito no vale para nada, puesto que no
factoriza (por tanto aporta menos informacin que la criba de Eratstenes) y requiere
calcular factoriales, lo que es muy costoso.
Sin embargo, en 2002 se desarroll
 un algoritmo
 (AKS) capaz de comprobar si un
nmero es primo en tiempo O log (log log(n) = O(log7 (n)).
12 2

Aos ms
 tarde, en 2006, se desarroll un algoritmo capaz de hacer esto mismo en
tiempo O log6 (n)
Sin embargo, con el tamao de nmeros que trabajamos, el algoritmo AKS no es
rentable, puesto que las constantes asociadas a la O son demasiado elevadas.

V.1.1. Tests probabilsticos


Estos tests se basan en la afirmacin filosfica de E. GJorel, que dice: Un suceso
cuya probabilidad es de 1050 o bien es imposible o nunca ser observado
As estos test buscarn nmeros que sern primos con probabilidad 1 1050 . Para
esto necesitamos observar alguna propiedad de los nmeros primos que sea fcilmente
comprobable, para lo que emplearemos el pequeo teorema de Fermat.

Teorema V.3 (Pequeo teorema de Fermat). Existen dos versiones de este teo-
rema:

1.
p primo = a Zp ap = a mod p

2.
p primo = a Zp ap1 = 1 mod p

45 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Nmero Definicin V.1 Nmero pseudoprimo en base a. Decimos que un nmero p es


pseudo- pseudoprimo en base a si se cumple que
primo en
base a ap1 = 1 mod p

Una vez visto esto podemos ver el lema en que se basan los test probabilsticos.

Lema V.4. Si existe b0 coprimo con n tal que b0n1 6= 1 mod n (es decir, tenemos un
nmero que no satisface el pequeo teorema de Fermat, por lo que n no sera primo),
entonces bn1 6= 1 mod n para, al menos la mitad de los b posibles en [1, n 1]
coprimos con n.

Con este lemma, si n no es primo, entonces bn1 6= 1 mod n con probabilidad


mayor que 12 . Por tanto, si tomo al azar 200 valores b y todos pasan el test (todos
satisfacen el teorema de Fermat), la probabilidad de que el nmero sea compuesto es
200 1 60
menor que 21

10
Veamos la demostracin del lemma

Demostracin. Consideramos el conjunto de valores {a1 , ...ar } (Zn ) tales que

an1
i =1 mod n

Entonces n no es pseudoprimo en la bases {b0 a1 , ..., b0 ar } ya que

(b0 ai )n1 = b0n1 ain1 = bn1


0 6= 1 mod n

Es decir, si existe una base en la que no es pesudoprimo entonces por


cada base en la que sea pseudo primo tenemos otra en la que no lo es con lo que
queda claro que al menos en la mitad de los casos no ser pesudoprimo.

Vamos a ver ahora cmo podramos construir un test probabilstico de primalidad


de manera incremental.
Empezamos considerando una versin beta del test.

1. Considero un nmero al azar b [2, n 1] Z

2. Compruebo si b es coprimo con n que, como ya vimos, es una tarea fcil

Si b no es coprimo con n entonces n no es primo, obviamente


Si b es coprimo con n calculo bn1 mod n que tambin vimos que era una
tarea fcil

3. Compruebo si bn1 = 1 mod n.

Si bn1 6= 1 mod n entonces n no es primo.


Si bn1 = 1 mod n entonces n podra ser primo. Volvemos al paso 1.

46 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Tras repetir el procedimiento 200 veces, si resulta que n es pseudoprimo en las 200
bases, concluimos que n es, probabilsticamente primo
Sin embargo, esta versin tiene un problema: Qu ocurre si n es pseudoprimo
en todas las bases?.
El origen de este problema, que estudiaremos en la siguiente seccin, es que el
Teorema de Fermat, en el que nos estamos apoyando, usa una implicacin y no un
si y slo si. Es decir, todo nmero primo cumple cierta propiedad pero cumplirla no
garantiza que estemos ante un nmero primo.

V.1.2. Nmeros de Carmichael

Nmero Definicin V.2 Nmero de Carmichael. Un nmero de Carmichael es un nmero


de Carmi- compuesto tal que bn1 = 1 mod n para todo b coprimo con n.
chael
Lo que nos interesa es comprobar si existen nmeros de Carmichael (evidentemente
existen, pues de lo contrario no hablaramos de ellos), ver cuntos son y si existe alguna
forma til de caracterizarlos.

Teorema V.5 (Teorema de Korselt (1899)). Sea n Z un nmero compuesto,


son equivalentes:

1.
bn = b mod n b Zn

2. n es un nmero de Carmichael, es decir:

bn1 = 1 mod n b Zn , t.q. (b, n) = 1

3. n es libre de cuadrados, es decir:

a2 |n = a = 1 si p es primo p2 |n

Adems, si p es primo y p divide a n entonces p 1 divide a n 1

Demostracin.

1 = 2
Sabemos que (b, n) = 1 b (Zn ) . Por tanto, podemos multiplicar a
ambos lados de la ecuacin por b1 obteniendo:

bn = b mod n = bn1 = 1 mod b

3 = 1

47 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Sabiendo que n es libre de cuadrados tenemos que:


bn = b mod n bn = b mod p p|n

Demostracin. La implicacin de izquierda a derecha siempre la tenemos


por definicin del mdulo. Es decir, si la diferencia entre dos nmeros es
mltiplo de n y p|n, entonces la diferencia ser mltiplo de p.
Para el otro sentido de la implicacin nos apoyamos en el hecho de que n
es libre de cuadrados.
Por ser n libre de cuadrados sabemos que p 1 divide a n 1 por lo que
podemos escribir:
k
(b, p) = 1 = bn = b bn1 = b bp1 = b mod p

donde la ltima igualdad se apoya en el teorema de Fermat, que nos ga-


rantiza que bp1 = b mod p por ser p un primo.

2 = 3

a) Supongamos que n no es libre de cuadrados, es decir, supongamos que


existe un primo p tal que n = pr n0 siendo r 2 y (n0 , p) = 1.
En estas condiciones tenemos
(Zn ) = (pr ) = pr1 (p 1) = p|(pr )

donde la ltima implicacin es vlida puesto que r 2


Sabemos, por el teorema de Cauchy, que
(
 a 6= 1 mod pr
a Zpr  ord(a) = p es decir
ap = 1 mod pr

Por el teorema chino del resto, sabemos que existe un elemento b Zn


tal que: (
b = a mod pr
b = 1 mod n0

Por hiptesis tenemos que bn1 = 1 mod n, por tanto:


bn1 = 1 mod pr = an1 = 1 mod pr = ord(a) = p|n 1

Pero entonces tenemos que p divide a n y tambin a n 1 con lo que


tenemos que p divide a 1, que es una contradiccin.
b) Tras llegar a la contradiccin del apartado anterior sabemos que n =
p1 ...pr con pi 6= pj . Sea p|n tenemos que n = pn0 con (n0 , p) = 1.
Sabemos entonces que (Zp ) =< a > es cclico.
Por el teorema chino del resto sabemos que
(
b = a mod p
b (Zn ) 
b = 1 mod n0

48 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Si n 1 = q(p 1) + r con 0 < r < p 1 tenemos que bn1 = 1


mod n lo que implica que

bn1 = 1 mod p = an1 = 1 mod p = (ap1 )q ar = 1 mod p =

= ar = 1 mod p = ord(a) = (p1)|r < p1 = r = 0 = p1|n1

Korset, con su teorema, dio un criterio para detectar nmeros que fuesen primos
en todas las bases. Sin embargo, nunca encontr un nmero que cumpliese estas
propiedades y no fue hasta el ao 1910 cuando Carmichael observ que 561 es un
nmero de Carmichael.
Otros ejemplos de nmeros de Carmichael son 1105, 252601, 62745 y 9746347772161.
Proposicin V.6. Todo nmero de Carmichael tiene, al menos, 3 factores primos
distintos.
Demostracin. Supongamos que tenemos un nmero de Carmichael n = p q, con
p < q, que slo tiene dos factores primos.
Entonces, por el teorema de Korset, sabemos que

q 1|n 1

pero sabemos que


n 1 = pq 1 = p(q 1) + p 1
lo que implicara que q 1|p 1 pero esto es imposible puesto que p < q.

Si los nmeros de Carmichael fuesen finitos podramos hacer una lista con todos
ellos de forma que al tratar de encontrar nuevos nmeros primos podamos descartar
todos los de la lista.
No obstante, el resultado de Alford-Granville-Pomerance obtenido en 1994
demuestra que
|{c  c es de Carmichael y c < x}| > x2/7
de donde se extiende que cuando x tiende a infinito, tenemos infinitos nmeros de
Carmichael.
Con esto llegamos al gran problema del algoritmo probabilstico de factorizacin que
hemos definido. El test considera como primos a los nmeros de Carmichael (que no lo
son) y no tenemos forma de comprobar si el nmero obtenido es o no de Carmichael,
salvo aplicando el teorema de Korset, pero esto nos requiere factorizar por lo que es
inviable.

Ejemplo: Vamos a comprobar si 21 es un nmero primo.


Empezamos a aplicar nuestro algoritmo. Al azar tomamos b = 13, que es coprimo
con 21 y el test nos dice que:
1320 mod 21 = (132 )10 mod 21 = 110 mod 21 = 1 mod 21

49 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

con lo que hemos pasado el test.


Este ejemplo nos sirve para ilustrar una idea importante, que apareci en los par-
ciales del ao pasado1 .

Si a2 = 1 mod n sabemos que n no es primo.

Si n fuese primo tendramos que Zn sera un cuerpo y la ecuacin x2 1 = 0


tendra exactamente dos soluciones en Zn que son x = 1 = 1, n 1.
Y es en esta idea en lo que se basar nuestro nuevo test de primalidad.

V.1.3. Test de primalidad de Miller-Marsin (1974)

Pseudoprimo Definicin V.3 Pseudoprimo fuerte en base b. Sea n Z impar con n > 9 y
fuerte en n 1 = r2s siendo r impar y s 1, diremos que n es pseudoprimo fuerte en base
base b
b si (n, b) = 1 y o bien:
br = 1 mod n
o bien para algn 0 i s 1 se cumple
i
br2 = 1 mod n

La idea de esta definicin es que si n es primo, tenemos:


s
(br )2 mod n = bn1 = 1 mod n

y por tanto
s1
(br )2 mod n = 1 mod n
puesto que tiene que ser un nmero que, en el cuerpo Zn tenga cuadrado igual a 1,
por lo que slo podra ser 1
s1
Si (br )2 = 1 satisface la condicin inicial por lo que podemos decir que n es
pseudoprimo fuerte en base b. Si fuese 1, repetimos el procedimiento.
Es decir, si n es primo, entonces ser pseudoprimo fuerte en toda base b tal que
(b, n) = 1. Pero esto no es ms que una forma de caracterizar primos pero nosotros
necesitamos justo lo contrario, a fin de poder determinar cundo un nmero es primo
o no.

Teorema V.7. Si n no es primo entonces no es pseudoprimo fuerte para al menos


1
4
de los b [1, n]. Es decir, no hay nmeros de Carmichael fuertes"

Test de A partir de este teorema podemos desarrollar el Test de Miller-Marsin de pri-


Miller- malidad:
Marsin
1
Estos parciales se encuentran resueltos al final de estos apuntes

50 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

1. Elijo b [1, n] de forma aleatoria y calculo (b, n). Si el mximo comn divisor
es distinto de 1, entonces hemos factorizado n y por tanto n no sera primo.

2. Si (b, n) = 1 miro si n es peudoprimo fuerte en base b. Si no lo es entonces n


no es primo

3. Si n es pseudoprimo fuerte en base b vuelvo al paso 1.

Si repetimos el test x veces, la probabilidad de que pasemos el tets todas esas veces
3 x

es de 4 . Es decir, la probabilidad de decir que un nmero n es primo sin serlo es de
3 x
4
.

Ejemplo: Veamos si el 21 pasa o no el Test de Miller-Robin:

n 1 = 20 = r 2s = 5 22
Saco al azar b = 13 y miramos si br = 1 mod n:

135 = 13 mod 21
i
Viendo que no se cumple probamos con br2 = 1 mod n y 0 i s 1. Para
i = 1 no se cumple:
(135 )2 = 1 mod 21
Y para i = 0 hemos visto que tampoco se cumple, de modo que 21 no es pseudoprimo
fuerte, y por tanto tampoco es primo.

Podemos ver que este algoritmo nos requiere calcular potencias de la forma br
mod n, que tiene un coste de O(log4 n). Tras esto tendremos que elevar al cuadrado
estos valores de forma recurrente, necesitando O(log n) operaciones.
Esta ltima potencia deber calcularse unas s = O(log n) veces por lo que en total
necesitaremos:
d O(log5 n) operaciones
d
donde d es lo bastante grande para que 43 < 10150
Al margen de este algoritmo existe otra idea: si la hiptesis de Riemann gene-
ralizada es cierta tenemos que

n no es primo = b [1, n] t.q.n no es pesudo primo fuerte en base b

Entonces puedo probar todas las bases b = 2, 3, 4, ..., 2 log2 n.


No obstante este procedimiento sera muy largo y estara apoyndose en una hip-
tesis an sin demostrar.

51 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejemplo: Algoritmo determinista


Sabemos que el menor pseudoprimo fuerte en bases 2 y 3 es el nmero 1373663 =
850x1657
Por tanto, si tenemos un nmero menor que un milln podemos comprobar si es
primo estudiando si es pesudoprimo fuerte en bases 2 y 3. De esta forma tendramos
una forma determinista y no probabilstica de ver si un nmero es primo o no.
Basndonos en esta idea podemos mejorar el algoritmo con los siguientes datos:

1. El menor nmero pseudoprimo en las bases 2, 3 y 5 es el nmero 2536001 =


2251x11231.
2. El nico nmero pseudoprimo en las bases 2, 3, 5, 7 menor que 25 109 es
3215031751 = 151z751x28351
3. El menor nmero pesudoprimo en base 2, 3, 5, 7, 11, 13, 17, 19 y 23 es del orden
de 3 1018

Teorema V.8 (Jim Sinclaire (2011)). Empleando la base de 7 elementos:

2, 325, 9375, 28178, 450775, 9780504, 1795265022

podemos decidir con certeza si un nmero n < 264 1.89 1019 es primo

V.2. Algoritmos de Factorizacin


El mejor algoritmo decimal (que no usa propiedades del nmero) para factorizar
Criba en nmeros n > 2100 es la criba en  cuerpos de nmeros (General Number Field
cuerpos 1/3 2/3
Sieve), que emplea un tiempo O e64/9(log n) (log log n) .
En general, a la hora de factorizar un nmero los pasos a seguir son:

1. Dividr entre los primos pequeos.


Recordemos que la divisin no es un problema puesto que es una operacin fcil.
El
problema surga cuando tenamos que dividir entre diferentes nmeros hasta
n.
El concepto de primo pequeo es un poco ambiguo, puesto que depende de la
capacidad de la mquina pero suelen considerarse los primos hasta 5 105 (hay
41538)
2. Mtodo de Polland o 1 de Polland, que nos permite factorizar hasta nmeros
de 15-20 cifras.
3. Mtodo de Curvas elpticas o curvas cuadrticas, que funciona bien para nmeros
de hasta 25 cifras.

52 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

4. Criba de cuerpos de nmeros (N F S), que resulta especialmente til si n = ba 1


con b un nmero pequeo como b = (2, 3) y a un nmero grande.

Ejemplo:
9
F9 = 22 + 1 = p7 p49 p99
donde pi representa un nmero de i cifras.

5. GN F S

Observacin: Si un nmero tiene propiedades especiales puede haber mtodos espe-


cficos ms rpidos para factorizar.

Proposicin V.9. Si un nmero primo p divide a un nmero de la forma bn 1


entonces p|bd 1 siendo d un divisor de n o bien p = 1 mod n.
En caso de darse la segunda opcin, si p 6= 2 y n es impar entonces p = 1 mod 2n

Demostracin. Sabemos que

p|bn 1 bn = 1 mod p

Ahora debemos observar que si b (Zp ) y d = ord(b) entonces

bd = 1 mod p = p|bd 1 y d|n

Adems, si d = n entonces n||(Zp ) | = p 1, puesto que el orden de cualquier


elemento divide al orden del grupo. Por tanto nos queda que p = 1 mod n
Si p 6= 2, entonces p 1 es par. Si n es impar entonces

n|p 1 = 2n|p 1 = p = 1 mod 2n

donde la primera implicacin se deduce del hecho de que si n divide a un par y


n es impar, sabemos que el 2 tambin es un divisor y por tanto 2n es divisor.

Ejemplo: Supongamos que queremos factorizar 211 1 = 2047.


Si tenemos un primo p que
(
p|21 1 = imposible
p|211 1 =
p = 1 mod 22


Si 2047 no es primo entonces tiene factores menores que 2045 45. Puesto que
es impar, tambin sabemos que p = 1 mod 22. Combinando ambas informaciones
tenemos que:
p {23}

53 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

2047 = 23 89

Ejemplo: Tratamos de factorizar 213 1 = 8191. Supongamos que tenemos el


factor primo p. Entonces:
(
p|21 1 = imposible
p|213 1 =
p = 1 mod 13

Por ser 13 un nmero impar tenemosque p = 1 mod 26. Teniendo en cuenta que
debe haber un factor primo menor que 8191 90, tenemos que:
p {27, 53, 79}

En este caso procedemos a comprobarlo y vemos que ningn primo en el intervalo


es un factor, por lo que podemos concluir que 8191 es primo.

Ejemplo: Vamos a tratar de factorizar 312 1 = 531440.


Para todo factor primo tenemos que:



p|(31 1) = p|2 = p = 2
p|32 1 = p|8 = no aporta nada nuevo




p|33 1 = p|26 = p = 13

p|312 1 =

p|34 1 = p|(32 1)(32 + 1) = p|32 + 1 = p|10 = p = 5
p|36 1 = p|(33 1)(33 + 1) = p|33 + 1 = p|28 = p = 7



p = 1 mod 12

Donde en todos los apartados hemos desarrollado slo aquellos datos que aportaban
informacin nueva.
Vamos a empezar a probar con las posibilidades que hemos obtenido hasta ahora.
As obtenemos que:
312 1 = 24 13 5 7 73

Ejemplo: Vamos a factorizar ahora el nmero 235 1 = 34359738367


Para todo factor primo tenemos:



p|(21 1) = imposible
p|35 1 = p|242 = p = 2 p = 11

p|235 1 =

p|37 1 = p|2186 = p|1093
p = 1 mod 70

Con los datos que tenemos podemos empezar a probar con lo que obtenemos:
34359738367 = 71 483939977

54 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

V.2.1. Idea detrs de los mtodos modernos de criba


Recordemos que la idea de Fermat era considerar que siendo n un nmero impar (si
no es impar sabemos que dos es factor y volvemos a esta situacin) podemos escribir:
n = x2 y 2 = (x y)(x + y)

Una vez sabemos esto podemos factorizar n empleando un algoritmo iterativo sobre
la funcin:
Q(x) = x2 n

Para aplicar el algoritmo empezamos probando con x 0 = d ne, es decir, el techo

de n. En cada iteracin comprobamos si Q(xi ) es un cuadrado perfecto y, en caso
de no serlo, pasamos a xi+1 = x0 + i.
Este algoritmo siempre nos permite factorizar un nmero n cualquiera. No obstante,
es posible que el tiempo necesario para hacerlo sea demasiado grande.

V.2.1.1. Idea de Kraitchik 1922

La idea es que no necesitamos que x2 y 2 = n sino que basta con tener:


x2 = y 2 mod n = x 6= y mod n
puesto que
x2 = y 2 mod n n|(x2 y 2 ) n|(x y)(x + y)

Si tenemos que n = p q tenemos diferentes opciones:

1.
n|(x y) = x = y mod n
Este caso no tiene sentido puesto que entonces n = 0.
2.
n|(x + y) = x = y mod n
Esta situacin tampoco tiene sentido ya que, igual que en el caso anterior, ten-
dramos n = 0
3.
p|(x + y), q|(x y)

As, lo que hacemos es calcular el mximo comn divisor de x y y de n para lo


que tenemos diferentes opciones:

n
Estamos en el caso 1
m.c.d.(x y, n) = 1 Estamos en el caso 22
p, q Estamos en el caso 3 y por tanto hemos factorizado

Vamos a ver ahora un algoritmo de factorizacin que se apoya en esta idea:


2
Si (x y, n) = 1, como n|(x y)(x + y) = n|(x + y)

55 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

1. Fijamos un conjunto pequeo de primos (pequeos), que denotamos como

P = {p1 , ..., pN }

2. Calculamos x0 = d ne y comenzamos a iterar con la funcin Q(x) = x2 n.

3. Calculamos Q(x0 ) y factorizamos en base P, es decir, escribimos:


Y
Q(x0 ) = pai i0
i

4. Calculamos Q(x1 ) y factorizamos en base P, es decir, escribimos:


Y
Q(x1 ) = pai i1
i

5. Seguimos factorizando los Q(xj = x0 + j) en P. En caso de que no factorice


en P, descartamos ese Q(xi ).
Al final tendremos todas las factorizaciones posibles en P para algunos x0 , ..., xr .
Estos nmeros que factorizan en P se denominan P-suaves

Observacin: Una gran ventaja hasta aqu es que estas factorizaciones pueden
hacerse en paralelo, teniendo muchos ordenadores trabajando de forma simultnea.
Una vez tenemos esto, multiplicamos todos estos nmeros en mdulo n obte-
niendo: r r
Y Y
Q(xj ) = x2j mod n
j=0 j=0

puesto que el trmino n de cada Q(xi ) nos desaparece al hacer el mdulo.


Queremos que el nmero obtenido a la derecha de la igualdad anterior sea un
cuadrado perfecto ya que entonces
YY a
pi ij = y 2 = x2 = y 2 mod n
j i

Pero, para que esto sea posible, necesitamos que el exponente de cada pi sea
un nmero par, es decir, necesitamos que
X
aij sea par para i = 1, . . . , N
j

Pues: P
YY a
Y aij
pi ij = pi j

j i i

En lugar de mirar el producto de todos los Q(xi ) que se factorizan en P,


podemos mirar el producto de solo algunos de los Q(xi ) que hemos calculado,

56 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

los necesarios para que su producto sea un cuadrado perfecto. Lo generalizamos


elevndolos a una funcin j que valga 1 0 segn corresponda.
r P
Y
j
Y
j j aij
Q(xj ) (con j = 1, 0) = pi mod n
j=1 i

Finalmente, tenemos que resolver el siguiente sistema de n incgnitas:



r
P a = 0 mod 2

ij j
j=1
para i = 1, ..., N

Observacin: Con r >> N , el sistema tendr seguro solucin.

Ejemplo: Vamos a factorizar el nmero n = 2041 tomando como conjunto de


primos:
P = {2, 3, 5, 7}

Procedemos a aplicar el algoritmo con lo que obtenemos:



d 2047e = 46 = x0
y0 = Q(46) = 75 = 3 52
y1 = Q(47) = 168 = 23 3 7
y2 = Q(48) = 263 no es factorizable en P
y3 = Q(49) = 360 = 23 32 5
y4 = Q(50) = 459 no es factorizable en P
y5 = Q(51) = 560 = 24 5 7

Ahora multiplicamos mdulo n los nmeros que factorizan en P, con lo que obte-
nemos:
49 51})2 = (2| 5 32{z 52 7})2
| 47{z
(46
x y

Lo siguiente es mirar mcd(x y, n) = mcd(46 47 49 51 25 32 52 7, 2041),


y en caso de que sea 2041 o 1 tendramos x = y mod n y no se satisfara el criterio
de Kraitchik (no nos valen x e y para decir que n = 2041 = x2 y 2 ).
En este caso concreto tenemos que m.c.d.(x y, n) = 13 lo que nos permite
escribir:
2041 = 13 157

57 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Captulo VI

Otros sistemas de clave pblica y


ms aplicaciones

VI.1. Criptosistema de ElGamal


ElGamal fue un criptgrafo egipcio que adems de ser conocido por la invencin
del criptosistema que lleva su nombre, colabor con el navegador web Netscape.
El proceso de generacin de la clave sigue los siguientes pasos:

Se elige un grupo cclico G =< g > que ser pblico y que deseablemente
cumplir que |G| >>> 0.

Cada usuario (por ejemplo A) elige al azar su exponente secreto dA : 1 < d <
|G|.

La clave pblica de cada usuario es calculada por l mismo como: eA = g dA .

Para el proceso de cifrado en el que B enva un mensaje m G a A se llevan a


cabo los siguientes pasos:

B elige al azar k : 1 < k < |G|.

B enva a A (g k , mekA ) = (c1 , c2 ) G G.

Para el descifrado que A tiene que hacer del mensaje recibido por B, realizar lo
siguiente:

Puesto que ekA = (g dA )k = (g k )dA , A puede obtener el mensaje original haciendo


c2 (cd1A )1 = m.

Observamos que para separar ekA de c2 es necesario conocer dA .

58 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Captulo VII

Cdigos detectores y correctores


de errores

VII.1. Motivacin
Ejemplo: Supongamos que tenemos un robot en Marte (o en cualquier lugar muy
lejano) y queremos comunicarnos con l, indicndole en cul de las 4 direcciones na-
turales queremos que se mueva:

N = 00


E = 01


O = 10
S = 11

En cualquier momento puede ocurrir un problema que dificulte la recepcin del


mensaje por parte del robot, ya sea el ruido del propio canal de comunicacin, o la
aparicin de un rayo csmico que modifique algn bit.
El problema de esto es que, en cuanto el robot reciba un par de rdenes perturbadas,
habremos perdido el control del mismo, pues no sabremos cul es su posicin.
La clave del problema es que, puesto que todas las palabras de longitud dos son
vlidas en nuestro cdigo, el robot no puede darse cuenta de si el mensaje ha sido
perturbado o no.
Para solventar este problema, una opcin es emplear cadenas ms largas para
codificar cada movimiento, a fin de poder encontrar errores posibles. Por ejemplo,
podemos duplicar el cdigo que representa cada posible movimiento.



N = 0000
E = 0101


O = 1010
S = 1111

Si enviamos al robot el mensaje 0101 y el robot recibe 0111, el robot detecta que
ha habido un error, pero no puede corregirlo con exactitud.

59 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por tanto, lo que har el robot ser corregir el mensaje minimizando la probabilidad
de fallo, es decir, trata de maximizar la probabilidad condicionada:

P han enviado m|he recibido m

Esta probabilidad depender de las caractersticas del canal. De forma general tene-
mos que un bit muta con probabilidad pequea p y, consecuentemente, llega de forma
adecuada con probabilidad p 1. Como hiptesis consideramos que p es pequeo
(desde luego p < 21 ).
Para simplificar el problema supondremos, adems, que los errores en los bits son
independientes.
Puesto que p es pequeo, es ms probable que un bit llegue de forma correcta a que
llegue mutado. Por tanto, a la hora de maximizar la probabilidad descrita anteriormente,
necesitamos encontrar el mensaje original al que se puede llegar mediante el menor
nmero de cambios posibles.
As tenemos que, dado m = 0111



m = N = 0000 con 3 cambios
m = E = 0101 con 1 cambio


m = O = 1010 con 3 cambios
m = S = 1111 con 1 cambio

Por tanto, lo ms probable es que la orden fuese desplazarse hacia el este o el sur,
pero no sabemos cul de las dos es.

Observacin: Si se produce un slo error sabemos detectarlo, aunque no corregirlo. No


obstante, si se producen dos errores es posible que no seamos capaces ni de detectarlo.
A fin de poder corregir un nico error lo que haremos ser repetir el cdigo tres
veces, de modo que tenemos



N = 000000
E = 010101


O = 101010
S = 111111

Con este mtodo, seremos capaces de detectar la presencia de hasta dos bits err-
neos.
Supongamos que recibimos el mensaje m = 011101, mirando, como antes, el
cdigo original ms probable tenemos:



m = N = 000000 con 4 cambios
m = E = 010101 con 1 cambio


m = O = 101010 con 5 cambios
m = S = 111111 con 2 cambios

En esta ocasin tenemos un vecino ms prximo que ser el mensaje m = E.

60 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Adems, si conseguimos garantizar que slo habr un error en el mensaje recibido,


podemos estar seguros de que hemos encontrado el mensaje original, pues no hay forma
de llegar hasta el mensaje que hemos recibido modificando un nico bit de alguno de
los otros mensajes posibles.

Observacin: Si se produce un error podemos corregirlo, dos errores podremos de-


tectarlos, a partir de 3 errores es posible que no los detectemos.
Con este mismo esquema, supongamos que recibimos la palabra m = 11101. En
este caso, como en el anterior, es sencillo detectar que se ha producido un error.
Si empleamos el mismo mtodo que en el caso anterior, tendramos que el vecino
ms cercano es m = S pero estamos restringindonos a asumir que slo hay un error.
No obstante, el mensaje podra haber sido m = E y encontrarnos con dos errores.

Observacin: O asumimos que slo hay un error y lo corregimos o aceptamos que


puede haber dos y no podemos corregirlo
Veamos ahora cmo generalizar este tipo de problemas y la solucin al mismo.

Cdigo q- Definicin VII.1 Cdigo q-nario. Dado un alfabeto con q elementos, Fq , un cdigo
nario (de bloques) q-nario de longitud n es C Fqn .
Los nmeros de telfono de Espaa, por ejemplo, constituyen un cdigo 10-ario de
9
longitud 9: F10
De manera general, siendo |C| = M querremos encontrar un cdigo con M grande,
para tener ms ordenes posibles para el robot, con un n pequeo, para que no tenga
que enviar demasiada informacin y que permita corregir muchos errores.

Observacin: Todo a la vez es imposible. La teora de cdigos trata de hacerlo


lo mejor posible.

VII.2. Distancia de Hamming

Distancia Definicin VII.2 Distancia de Hamming. Dados x = (x1 , ..., xn ), y = (y1 , ..., yn )
de Ham- F n se define la Distancia de Hamming como
ming
d(x, y) = #{i : xi 6= yi }

Proposicin VII.1 (d es una distancia). Puesto que somos matemticos debemos


convencernos de la que la funcin d definida es realmente una distancia. Para ello
comprobamos que se cumplen las propiedades de una distancia:

1.
d(x, y) 0

61 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Puesto que estamos mirando el cardinal de un conjunto, trivialmente esta pro-


piedad es cierta

2.
d(x, y) = 0 x = y

Puesto que estamos contando el nmero de bits diferentes, si el nmero es 0,


evidentemente las dos cadenas son la misma

3.
d(x, y) = d(y, x)

Esta propiedad es trivial puesto que el operador 6= es conmutativo

4.
d(x, y) d(x, z) + d(z, y)

Tenemos que comparar el nmero de cambios necesarios para convertir x en


z y luego z en y. Si tomamos d = dH , donde dH es la distancia mnima, la
desigualdad es obvia.

Distancia Definicin VII.3 Distancia mnima. Dado un cdigo C Fqn , su distancia


mnima mnima se define como:

d(C) = mn{d(x, y) t.q. x, y C, x 6= y}

Si utilizamos C Fqn con |G| = M para transmitir M mensajes, lo que queremos es


que las palabras empleadas estn lo ms espaciadas posible, de modo que un pequeo
cambio en un elemento de una palabra no nos haga caer en otra palabra vlida. Es
decir, queremos que la distancia mnima del cdigo, es decir, d(C) sea grande.

Teorema VII.2. Sea C Fqn un cdigo con d(C) = d, podemos detectar hasta
d 1 errores

Demostracin. El procedimiento estndar para detectar errores es:

1. Recibo x Fqn

2. Si x C seguimos trabajando.

3. Si x
/ C PITO.

Si el nmero de errores es menor o igual que d 1, es imposible que desde un


x C lleguemos a otro x C, puesto que, por definicin, d(x, x) d.
Es decir, el algoritmo descrito nunca podr confundirse si tenemos un mximo
de d 1 errores.

62 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Teorema VII.3. Sea C Fqn un cdigo con d(C) = d, podemos corregir hasta
j k
d1
2

Demostracin. Desde el punto de vista geomtrico (o topolgico) podemos ver que,


dados dos mensajes x, y C
 !  !
d1 d1
B x, B y, =
2 2

Apoyndonos en esta idea, veamos la demostracin del teorema.


El procedimiento para corregir errores es:

1. Dado un mensaje x
/ C, a fin de corregir el error buscamos x0 tal que

d(x, x0 ) = mn{d(x, x) : x C}

2. Si tenemos un empate, tomamos uno al azar.

Este algoritmo podra fallar si y slo si

x0 C  d(x0 , x) d(x, x)

Pero en este caso tenemos que


 
d1
d(x, x0 ) d(x, x) + d(x, x0 ) 2d(x, x) 2 d1<d
2

con lo que llegamos a una contradiccin, pues por definicin d(x, x0 ) d.

Ejemplo: Sea el lenguaje





N = 000000
E = 010101


O = 101010
S = 111111

Supongamos que se enva S=111111 y recibimos 010111 y empleamos un al-


goritmo de correccin de errores.
En este caso veremos que el mensaje ms cercano es E=010101 que implica un
nico error en el mensaje.
No obstante, en este caso el resultado es incorrecto pues en realidad se produjeron
2 errores.

63 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Con lo visto hasta ahora, es evidente que la forma de conseguir detectar/corregir


ms errores pasa por emplear cdigos con distancias mnimas grandes.
En general, podemos crear cdigos con distancias mnimas tan grandes como que-
ramos.

Cdigo Definicin VII.4 Cdigo binario de repeticin de longitud n. Este cdigo consiste
binario en repetir cada bit n veces.
de repe-
ticin de R2,n = {111....111 {z }}
| {z }, |000....000
longitud n n veces n veces

Si Fq = {a1 , ..., aq } es un alfabeto, el cdigo de repeticin de longitud n es:


R2,n = {a1 a1 a1 ....a1 a1 a1 , ..., aq aq aq ....aq aq aq }
| {z } | {z }
n veces n veces

Podemos ver que las distancias mnimas para un cdigo de repeticin de longitud
n ser siempre d(Rq , n) = n.
El problema de este mtodo es que acaba siendo muy costoso cuando queramos
hacer n grande.
Para poder clasificar y estudiar la calidad de los diferentes cdigos debemos definir
algunos trminos:

Distancia Definicin VII.5 Distancia relativa. Sea C Fqn con d(C) = d y |C| = M = q l
relativa definimos la distancia relativa como:
d
=
n

Tasa de Definicin VII.6 Tasa de transmisin. Sea C Fqn con d(C) = d y |C| = M = q l
transmi- definimos la tasa de transmisin como:
sin
l
R=
n

Ejemplo: En un cdigo de repeticin siempre tendremos una distancia relativa igual


a 1 y una tasa de transmisin inversamente proporcional a n. Es decir:
1
= 1, R =
n

Observacin: Dado un cdigo con ms de una palabra1 , es decir |C| > 1 tenemos:
0 < , R 1
1
Si slo tenemos una palabra es un caso trivial

64 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

En general intentaremos que tanto cono R sean cercanos a 1. No obstante, es


imposible que ambas tiendan a 1 a la vez por lo que se tratar de optimizar, dependiendo
de la situacin concreta en que vayamos a trabajar.

Cdigo li- Definicin VII.7 Cdigo lineal. Diremos que un cdigo C es un cdigo lineal si:
neal
1. Fq es un cuerpo [o un anillo conmutativo si uno sabe lo que es un mdulo sobre
un anillo]

2. C es un espacio vectorial de Fqn [o es un submdulo si Fqn es un anillo]

Ejemplo: Todos los cdigos que hemos visto hasta ahora son cdigos lineales.

C2 = {x F24 : x1 x3 = 0, x2 x3 = 0}
C3 = {x F36 : x1 = x3 = x5 , x2 = x4 = x6 }

Observacin: Sea |C| = M = q l tenemos que l = k = dimFq (C)

Peso Definicin VII.8 Peso. Si Fq es un cuerpo tal que x Fqn llamamos peso de x a:

w(x) = #{i : xi 6= 0}

Es decir, dada una palabra nos cuenta la cantidad de 1s.

Peso mni- Definicin VII.9 Peso mnimo de C.


mo de C
w(C) = mn{w(x) : x C, x 6= 0}

Lema VII.4. Si C es un cdigo lineal tenemos que:

1.
x 6= y C d(x, y) = w(x y)

2.
d(C) = w(C)

Demostracin.

1.
d(x, y) = #{i  xi 6= yi } = #{i  xi yi 6= 0} = w(x y)

65 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

2. Vamos a demostrar el lemma viendo que los siguientes dos conjuntos son
iguales. Es decir, vamos a probar que

{d(x, y) : x, y C, x 6= y} = {w(z) : z C, z 6= 0}

Esta igualdad es sencilla de ver comprobando los dos contenidos.


Para cada elemento del conjunto de la izquierda, tenemos uno en la derecha.

x, y C x 6= y d(x, y) = w(x y) = w(z)

y viceversa
w(z) = d(z, 0), 0 C

Slo nos queda la duda de si 0 C o no, pero es trivial ver que si puesto que
estamos trabajando con un cdigo lineal.

Observacin: La ventajade trabajar con el peso mnimo es que si |C| = M encontrar


2
d(C) requiere a priori M2 = M 2M comparaciones mientras que calcular w(C) slo
requiere M 1.
A partir de este momento vamos a empezar a mejorar los cdigos que hemos
empleado hasta ahora, pues slo hemos visto cdigos triviales basados en repeticin.

Ejemplo: Consideramos que tenemos al mismo robot de siempre con las mismas 4
rdenes posibles. En esta ocasin vamos a definir:

C4 = {x F23 x1 + x2 + x3 = 0} = {000, 011, 101, 110}

Comprobador La ecuacin en las xi se denomina comprobador global de paridad.


global de
paridad Con el cdigo que acabamos de definir tenemos:

d(C) = w(C4 ) = 2 = d(C)

Por tanto, este cdigo es capaz de detectar un error, igual que haca C2 pero a un
precio menor puesto que la longitud de C2 es 4 mientras que la de C4 es 2.
Podemos ver tambin que ambos cdigos tienen dimensin 2 lo que nos da unas
tasas de transmisin y distancias relativas de:
2 1 1 2 2
R(C2 ) = = , (C2 ) = R(C4 ) = , (C4 ) =
4 2 2 3 3

No obstante, el cdigo C4 que acabamos de ver no es capaz de corregir errores. A


fin de mejorar esta caracterstica veamos un nuevo cdigo.

66 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejemplo: Consideramos esta vez el cdigo





x1 + x3 =0


x + x5 =0

C3 = x F26  1

x2 + x4 =0

x2 + x6 =0

Lo que nos da una dimensin k = 2 y una distancia mnima d = 3.


Podemos hacerlo mejor y obtener un cdigo an ms corto?

Ejemplo: Sea el cdigo:



00000

x1 + x2 + x 3 = 0


01101

6
C 5 = x F 2  x1 + x4 = 0 =
10110
x2 + x5 = 0



11011

Es sencillo ver que este cdigo tiene dimensin k = 2 y una distancia mnima
d = 3.
Por tanto tenemos caracterstica iguales a las del ejemplo anterior salvo que con
mensajes de longitud menor, por lo que claramente hemos mejorado el cdigo del
anterior ejemplo.
Hasta ahora hemos visto un algoritmo de deteccin/correccin de errores capaz de
detectar hasta d 1 errores y de corregir hasta d1
2
, siendo d la distancia mnima del
cdigo empleado.
No obstante este algoritmo puede mejorarse como nos garantiza el siguiente teo-
rema.

Teorema VII.5. Sea C un cdigo con d(C) = d = 2r + s + 1, entonces existe un


algoritmo que corrige hasta r errores y simultneamente detecta hasta r + s.

Demostracin. La mejor forma de demostrar este teorema es definir el algoritmo


que satisface los requisitos esperados.

1. Recibo x Fqn

2. Calculo d0 = mn{d(x, x)x C}

3. Si d0 r leo x0 C tal que d(x0 , x) = d0

4. En otro caso PITO

Este algoritmo esta asumiendo que x0 calculado en el paso 3 es nico.

67 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Esta asuncin es totalmente legtima puesto que, en caso contrario:

x1 , x0 C con d(xo , x) = d0 = d(x1 , x) = d(x0 , x1 ) 2d0 2r < d

con lo que llegamos a una contradiccin, pues d es la distancia mnima


Por tanto, queda claro que hasta r errores sern corregidos puesto que si se
han producido menos de r errores hemos encontrado un candidato que corrige esos
errores: x0 .
Ahora nos queda comprobar que este algoritmo es capaz de detectar hasta r + s
errores.
Supongamos que se ha enviado el mensaje x pero hemos recibido x con r + 1
d(x, x) r + s.
Lo que debemos garantizar en este caso es que el algoritmo no va a leer un
x0 6= x, cosa que ocurrira si caemos en el paso 3.
Pero si existe x0 C con d(x0 , x) r entonces

d(x0 , x) d(x0 , x) + d(x, x) r + r + s < d

Ejemplo: Conisderamos el cdigo:

C6 = C4 C4 C4 F24

Que nos permite escribir las posibles rdenes como:



N = 00000000


E = 011011011


O = 101101101
S = 110110110

donde tenemos n = 9, dim = k = 2, d = 6.


En este caso tendremos:

Algoritmo Corrige hasta Detecta hasta


Algoritmo de correccin 0 -
6=22+1+1 2 3
6=21+3+1 1 4
Algoritmo de deteccin-correccin 0 5

Supongamos que recibimos x = 011111111, segn el algoritmo empleado tomare-


mos una decisin diferente.
En este caso tenemos:

68 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Algoritmo Accin
d(x, N ) = 8
6=22+1+1 Leo E


d(x, E) = 2

d(x, O) = 4 6=21+3+1 PITO

d(x, S) = 4
Algoritmo de deteccin-correccin PITO

VII.3. Cdigo de barras


Vamos a estudiar el cdigo de barras, un cdigo bien conocido por todos y presente
en todos los productos que compramos.
En los cdigos de barras las barras codifican exactamente la misma informacin que
los nmeros y se emplean puesto que resulta ms sencillo para la mquina interpretar
las barras que los nmeros.
Aunque la mquina trabaja con las barras, los nmeros siguen presentes a modo
de redundancia, para que cualquier persona pueda leerlos y corregir a la mquina si se
produce un error.
Existen dos tipos principales de cdigos de barras:

1. EAN: European Article Number


13
EAN F10

2. UPC: Universal Product Code


12
UPC F10

Es interesante considerar F10 = Z10 puesto que nos resultar ms intuitivo a la


hora de estudiar cmo funciona este sistema.
Si consideramos el cdigo de barras como la secuencia de nmeros:
x0 , x1 , ..., x12
en el caso EAN y sin el x0 para el caso UPC, la estructura general de un cdigo es:
x0 , x1 , ..., x6 x7 , x8 , ..., x11 x12
| {z } | {z } |{z}
cdigo del fabricante Cdigo de producto Redundancia

La redundancia se emplea para comprobar que el mensaje ha sido ledo correcta-


mente mediante la comprobacin de que se satisface la ecuacin:

X5 5
X
x12 = x2i + 3 x2i+1 mod 10
i=1 i=0

Con lo que hemos estudiado hasta ahora de cdigos podemos ver que, segn tra-
bajemos con EAN/UPC tenemos:
n = 13/12, k = 12/11, M = 1012 /1011

69 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

A priori podemos ver que la distancia mnima de estos cdigos es, como mucho,
2, puesto que cualquier combinacin de nmeros es vlida siempre que coincida en bit
de redundancia.

VII.3.1. Deteccin de errores


De primeras no sabemos si es posible cambiar un nico nmero sin necesidad de
cambiar el cdigo de redundancia.
Por tanto este sistema puede detectar, como mucho 1 error. Para comprobar que
realmente puede detectar un error necesitamos comprobar que la distancia nima es
exactamente 2.

Demostracin. Vamos a comprobar que siempre detecta un error.


Supongamos que tenemos un xi que, por algn motivo, se cambia por xi + e
donde e Z10 no nulo.
En este caso, cuando el cdigo de barras va a comprobar la validez del cdigo
ledo, calcula:
(
5 5
X X e si i es par
x12 + x2i + 3 x2i+1 mod 10 = mod 10
3e si i es impar
i=1 i=0

El sistema ser capaz de detectar el error siempre que e y 3e sean distintos de


0 mdulo 10.
Es evidente que e = 0 mod 10 siendo e Z10 solamente si e = 0, caso que no
nos preocupa ya que entonces no habra error.
Por otro lado, puesto que (3, 10) = 1 podemos ver que 3e = 0 mod 10 =
e = 0 mod 10.

Con esta demostracin tenemos claro que el cdigo de barras siempre va a detectar
los casos en que se ha cometido un error. Sin embargo, es posible que se produzcan
dos errores sin que el sistema sea capaz de detectarlo.
Por ejemplo, si dos posiciones pares se leen mal y en una se lee xi + e y en la otra
xj e el error no sera detectable.
A la hora de que el error sea detectado y un humano tenga que introducir el cdigo
de manera manual, el error ms probable que implica el cambio de ms de una cifra
es la permutacin de dos cifras.
Siempre que esta permutacin se produzca entre dos cifras en posicin par o dos
cifras en posicin impar el error puede no ser detectable de manera obvia.
Veamos que ocurre cuando se permutan dos cifras en posiciones par e impar res-
pectivamente.

Demostracin.
Sean las cifras x2i , x2j+1 , el error cometido en cada caso es e = x2j+1 x2i .

70 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Al comprobar la validez del cdigo, nos comeremos el error si tenemos que:

e 3e = 0 mod 10 = e = 5

No obstante, tenemos un total de 45 posibles intercambios de los cuales hay slo


5 que no son detectables:

{0 5, 1 6, 2 7, 3 8, 4 9}

Observacin: Si observamos un teclado estndar podemos ver que estas parejas de


dgitos nunca estn contiguas de forma que se reduce el riesgo de aceptar por vlido
un mensaje con un error.
De forma general, si cambiamos solamente el parmetro del cdigo de barras, es
decir, si tomamos:

X5 X5
x12 = x2i + A x2i+1 mod 10
i=1 i=0

obtendremos diferentes resultados en funcin del valor de A.

Si A es par
Detecta el intercambio de cifras en posicin par con cifras en posicin impar, pero
puede cambiar un nico dgito sin darnos cuenta, es decir, la distancia mnima
pasara a ser 1.

Si A = 5
Caso penoso, no hay error posible que podamos detectar.

Si A es impar distinto de 5
No siempre podremos detectar el intercambio de cifras en posiciones par e impar
respectivamente pero mantenemos distancia mnima igual a 2.

VII.3.2. Correccin de errores


Si sabemos que se ha producido un nico error y sabemos qu cifra es la que est
mal, es posible corregir el error puesto que podremos calcular el error e o 3e segn el
dgito que haya cambiado.
En el caso de que sea 3e = k el error, podremos despejar e puesto que 3 U (Z10 )

Ejemplo: Sean los siguientes productos:

Leche Lauki entera 8 414700 01101 3


Leche Lauki desnatada 8 414700 01102 0

71 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

En ocasiones hay cdigos reducidos empleados para productos donde no es viable


escribir todos los dgitos de un cdigo de barras estndar.

Yogur Danone de fresa 8410 5158

Tras ver estos ejemplos (no relacionados con lo que haremos en este ejemplo), lo
que haremos ser comprobar si el siguiente cdigo es vlido.

6 39844 06292 3

Para empezar, puesto que tiene 12 cifras podemos ver que es un cdigo UPC.
Realizando la comprobacin estndar vemos que:

X6 X5
x2i + 3 x2i+1 mod 10 = 2 6= 0
i=1 i=0

lo que nos indica que hay un error de distancia 2.


A partir de esto no tenemos forma de saber en qu cifra se ha producido el error
puesto que todas las cifras pueden cambiar dando lugar a este error con independencia
de que sea una cifra en posicin par o impar.

VII.4. International Standard Book Number

ISBN Definicin VII.10 ISBN. El International Standard Book Number (en espaol, Nme-
ro Estndar Internacional de Libros o Nmero Internacional Normalizado del Libro),
abreviado ISBN, es un identificador nico para libros, previsto para uso comercial.
Fue creado en el Reino Unido en 1966 por las libreras y papeleras britnicas W. H.
Smith y llamado originalmente Standard Book Numbering (en espaol, numeracin
estndar de libros), abreviado SBN. Fue adoptado como estndar internacional ISO
2108 en 1970.
Este cdigo se compone de un conjunto de nmeros de la forma:

x1 , x2 , ..., x9 x10 xi {0, ..., 9} para i = 1...9


| {z } |{z}
informacin control

El bit de control se emplea para comprobar que se mantiene la igualdad:


10
X 9
X 9
X
ixi = 0 mod 11 = 10x10 = ixi mod 11 = x10 = ixi mod 11
i=1 i=1 i=1

Ejemplo: Si tenemos el ISBN 84-239-5922-? podemos calcular el bit de control


como:
9
X
x10 = ixi mod 11 = 8
i=1

72 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Si ahora tomamos el cdigo ISBN 84-239-5921-? tenemos:


9
X
x10 = ixi mod 11 = 10
i=1

Pero no podemos representar el 10 con un solo dgito con nuestro sistema decimal.
En el caso del cdigo bancario deciden poner un 1 en estos casos lo que resulta en
una idea psima pues reducimos la distancia mnima del cdigo.
La opcin empleada en el ISBN es emplear un X, que representa con un slo
carcter el nmero 10 en el sistema romano.
Ahora que sabemos cmo est definido el ISBN podemos ver que:

ISBN (Z11 )10

pero no es un cdigo lineal puesto que podemos salirnos del cdigo al sumar dos
nmeros vlidos, ya que el 10 slo puede aparecer en el bit de control.
Con lo que hemos estudiado hasta ahora de cdigos podemos ver que para el ISBN
tenemos:
n = 10, k = , M = 109 6= 11k k N

VII.4.1. Deteccin de errores


A priori slo podemos garantizar que la distancia mnima es menor o igual que 2.
Si logramos probar que este cdigo siempre detecta un error, tendremos que su
distancia mnima es exactamente 2. Vamos a ello.

Demostracin. Supongamos que un dgito se ha cambiado y tenemos xi = xi + e.


Para comprobar si el mensaje es correcto debemos ver si
10
X
ixi = 0 mod 11
i=1

En esta ocasin obtendremos:


10
X
ixi = ie mod 11
i=1

pero, puesto que estamos en un cuerpo (ya que 11 es primo) todo elemento tiene
inverso.
Por tanto, para que nuestro cdigo no detecte un error tiene que ocurrir

ie = 0 = i1 ie = 0 = e = 0

Es decir, que no haya error.

73 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por otro lado es bien sencillo ver que dos errores no siempre sern detectados puesto
que pueden complementarse pero Qu ocurre si dos dgitos se intercambian?.
En esta ocasin tendremos xi = xi + e, xj = xj e siendo e = xj xi . Nuestro
cdigo no detectar el error siempre que
10
X
0= ixi = ie je = e(i j) = i = j e = 0
i=1

Por tanto slo no detectaremos el error en caso de que el dgito se intercambie


consigo mismo, es decir, si no hay error.
Queda claro por tanto que este cdigo siempre detecta el intercambio de dos dgitos.

VII.4.2. Correccin de errores


Supongamos que hay un dgito que se ha perdido y que sabemos qu dgito es.
En este caso podramos recuperar el valor perdido X resolviendo la ecuacin
10
X
ixi + i0 X = 0 mod 11
i=1,i6=i0

Nuevamente, como estamos en un cuerpo es posible calcular el inverso de i0 con


lo que fcilmente podremos despejar y resolver la ecuacin.

VII.5. Nmero de Identificacin Fiscal


El NIF consiste en una serie de caracteres de la forma:
x7 , x6 , x5 , x4 , x3 , x2 , x1 , x0 |{z}
L
| {z }
antiguo DNI control

Algunas entidades utilizan mal el NIF pues piden al usuario introducir nicamente
las cifras y dejan que la mquina calcule la letra con lo que se pierde el beneficio de la
redundancia.
La idea es que el usuario introduzca los 9 caracteres de modo que la mquina puede
comprobar si se ha producido algn error.
Veamos cmo se calcula la letra del NIF. Vamos a tratar de averiguarlo a modo de
ejercicio.

Ejemplo: Evidentemente, la letra debe calcularse como el mdulo de algn valor.


Este mdulo ser igual a la cantidad de letras que queremos emplear que ser,
como mucho 26.
Tenemos claro por tanto que calcularemos la letra haciendo una operacin del tipo:
algo mod n con 21 n 26

74 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Si tomamos dos NIF que tengan la misma letra y calculamos el valor del DNI en
los mdulos 19,21,22,23,24,25 vemos que slo coinciden los resultados si tomamos
mdulo 23.
Por tanto tenemos que la letra de control se utiliza para comprobar la validez del
NIF dado atendiendo a la frmula:
7
X
DNI mod 23 = 10i xi = n
i=0

donde n es un valor asociado a una letra segn una tabla que relaciona las letras
empleadas con los nmeros menores que 23 de forma aleatoria.
Una vez sabemos cules son los posibles valores de cada carcter del NIF podemos
ver que
N IF {0, ..., 9}8 {A, ..., Z} (Z23 )9

Con lo que hemos estudiado hasta ahora de cdigos podemos ver que para el cdigo
NIF tenemos:
n = 9, k = , M = 108 6= 23k k N

VII.5.1. Deteccin de errores


Nuevamente, como en los casos anteriores, tenemos que la distancia mnima ser
como mucho 2.
Vamos a demostrar que es exactamente 2.

Demostracin. Supongamos que un nmero es ledo de forma incorrecta y tenemos


xi = xi + e.
En esta ocasin tendremos tendremos
7
X
10i xi n mod 23 = 10i e mod 23
i=0

que slo podr ser 0 si e = 0.


Por tanto el NIF siempre es capaz de detectar un error por lo que la distancia
mnima ser 2.

VII.5.2. Correccin de errores


De la misma forma, tambin ser posible recuperar un carcter borrado (sabiendo
a qu posicin perteneca) resolviendo la ecuacin:

X7
X = (10i0 )1 n 10i xi
i=0,i6=i0

en la que podemos garantizar la existencia del inverso puesto que estamos trabajando
en un cuerpo.

75 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por otro lado, si se produce un intercambio de dos caracteres tendremos xi = xi +e,


xj = xj e siendo e = xj xi . Al comprobar la validez del cdigo, nos comeremos el
error siempre que:
7
X
0= 10i xi n mod 23 = (10i 10j )e = 10j (10ij 1)e
i=0

Puesto que estamos en un cuerpo sabemos que 10j 6= 0 j. No obstante an


tenemos el riesgo de que:
10ij 1 = 0 mod 23

Pero por el pequeo teorema de Fermat sabemos que 1022 = 1 mod 23, de modo
que para que no se detectara el intercambio necesitaramos i j = 22, pero esto es
imposible pues sabemos que en el NIF tan solo figuran 7 dgitos. Por tanto el NIF es
capaz de detectar el intercambio de 2 dgitos.

Observacin: Se puede comprobar que si en vez de haber tomado 23 letras se hubieran


escogido 17 o 19, el NIF seguira siendo capaz de detectar el intercambio de dos dgitos,
sin embargo con solo 11 letras no se podra corregir.

VII.6. Probabilidades
En general, empleamos los cdigos dectectores/correctores de errores para disminuir
la probabilidad de leer mal un mensaje.
Si tenemos que la probabilidad de que un bit se modifique durante la transmisin
del mensaje es p, hasta ahora hemos supuesto p < 21 .
Sin embargo, puede ocurrir que tengamos un canal de comunicacin tan psimo que
p > 21 . En este caso, lo que podemos hacer es invertir el mensaje recibido (cambiar
todos los bits) y empezar a emplear toda la teora vista hasta ahora, puesto que
acabamos de convertir nuestro canal en otro con p < 21 .
1
El gran problema lo alcanzamos cuando p = 2
puesto que en este caso llegaran 0s
y 1s al azar.
Generalizando este problema a un canal por el que transmitimos q posibles va-
lores con probabilidad de error p, consideramos que enviando un smbolo cualquiera,
podremos recibir cualquier otro con probabilidad pq .

Ejemplo: Supongamos que tenemos un cdigo C = {SI = 1, NO = 0} y lo


enviamos por un canal con p = 12 .
En este caso el mensaje ledo ser incorrecto con probabilidad p y correcto con
probabilidad 1 p.
Este ejemplo no nos dice nada, pues es extremadamente sencillo. Veamos otro con
ms inters.

76 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejemplo: Supongamos que tenemos un cdigo de tripiticin:

C = {SI = 111, NO = 000}

En este caso la probabilidad de leer el mensaje correctamente es:

P(correcto) = (1 p)3 + 3p(1 p)2

puesto que si slo se produce un error lo detectaremos y corregiremos correctamente


empleando la tcnica del vecino ms prximo.
Por otro lado, es sencillo ver que

P(incorrecto) = 1 P(correcto)

Hay que recalcar que la probabilidad de error en el canal es un dato que nos viene
dado y que no podemos modificar desde el punto de vista matemtico (eso ser cosa
de los ingenieros).
Nuestro objetivo como matemticos ser minimizar la probabilidad de error en el
cdigo restringindonos al canal de comunicacin dado.

(n, M, d)- Definicin VII.11 (n, M, d)-cdigo q-ario.


cdigo
q-ario Sea Fq un alfabeto con |Fq | = q, decimos que un (n, M, d)-cdigo q-ario es un
cdigo C tal que
C Fqn , d(C) = d y |C| = M

Es decir, tenemos un cdigo que emplea q smbolos distintos para formar M men-
sajes posibles de longitud n con distancia mnima d.

.Aq (n, d) Definicin VII.12 .Aq (n, d).

Aq (n, d) = max{M : (n, M, d)-cdigo q-ario}

Proposicin VII.6 (Cota de Singleton). Para todo cdigo se cumple que

M q nd+1

es decir
Aq (n, d) q nd+1

Demostracin. Consideramos la aplicacin

: Fqn 7 Fqnd+1

definida como una proyeccin sobre las primeras n d + 1 coordenadas.

77 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Puesto que C Fqn podemos restringir nuestra aplicacin al cdigo:

: C 7 Fqnd+1

Si la aplicacin fuese inyectiva tendramos que

|C| |Fqnd+1 | = M q nd+1

Por tanto, slo tenemos que probar que es inyectiva. Para ello supongamos que
hay dos puntos cuya imagen es la misma, es decir:

x, y Fqn F (x) = F (y) = d(x, y) d 1

Pero la distancia mnima es, por definicin d por lo que no es posible que tengamos
dos palabras a distancia d 1 a no ser que sean iguales, con lo que la distancia
entre ellas sera 0.
Es decir, tenemos x = y con lo que la funcin es inyectiva.

Observacin: La cota de Singleton no siempre se alcanza.

Ejemplo: Vamos a estudiar A2 (5, 3). Por la cota de Singleton sabemos que
|M | q nd+1 = 23 = 8

Sin embargo, en este caso sabemos que el valor mximo que puede alcanzar M es
A2 (5, 3) = 4, que dista bastante de la cota de Singleton. Para comprobarlo debemos
ver que existe un (5, 4, 3)-cdigo binario y que no existe un (5, 5, 3)-cdigo binario.
Vamos a ello.
Ya hemos visto en estos apuntes un (5, 4, 3)-cdigo binario cuando definimos c-
digos para un robot:

00000

x1 + x2 + x3 = 0


01101

6
C5 = x F2  1 x + x 4 = 0 =
10110
x2 + x5 = 0



11011

Antes de continuar con el ejemplo vamos a ver algunos conceptos nuevos, necesarios
para la finalizacin del mismo.

Cdigos Definicin VII.13 Cdigos equivalentes. Diremos que dos cdigos C1 y C2 (nece-
equivalen- sariamente de la misma longitud) son equivalentes si uno puede obtenerse a partir del
tes otro combinando los siguientes dos tipos de transformaciones:

1. Intercambiar dos variables.


Si escribimos todas las palabras posibles una debajo de otra formando una matriz,
esta operacin es equivalente a permutar dos columnas de la matriz.

78 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

2. Permutar los smbolos que aparecen en una posicin dada


Si escribimos todas las palabras posibles una debajo de otra formando una matriz,
esta operacin es equivalente a cambiar un nmero de la matriz por otro de su
misma columna.

Proposicin VII.7. Dos cdigos equivalentes tienen los mismo parmetros y la misma
capacidad de detectar/corregir errores, aunque los algoritmos a emplear sern distintos
en cada caso.

Lema VII.8. Si 0 Fq cualquier cdigo no vaco C es equivalente a otro C 0 con


0...0 C 0

Demostracin. Dada una palabra cualquiera sobre cada elemento ai de la palabra


aplicamos la permutacin ai 0 ai , con lo que obtenemos la palabra 0...0

Ahora estamos en condiciones de seguir con el ejemplo.

Ejemplo: Si existiera un (5, 5, 3)-cdigo binario, entonces existira uno equivalente


C con 0...0 C.
Adems este cdigo debe cumplir que

@x C  w(x) = 1, 2 puesto que d = 32

Por otro lado, si tomamos w(x) = 5, w(y) = 4 y w(z) = 4 tenemos d(x, y) = 1,


d(y, z) = 2. Por tanto no podemos tener en nuestro cdigo dos palabras de peso 4 ni
una de peso 4 y otra 5, puesto que entonces estaran ms cerca de lo permitido.
Con esto tenemos que en nuestro cdigo de longitud 5 puede haber como mucho
1 palabra de peso 5 4, otra de peso 0 y ninguna de pesos 1 ni 2. Por tanto, debe
haber, como mnimo 3 palabras de peso 3.
Si nos ponemos a buscar estas palabras vemos que slo hay dos posibles palabras
de peso 3 que disten, al menos 3. Estas palabras son 11100 y 00111.
Pero entonces an nos falta una palabra para nuestro cdigo con lo que acabamos
de comprobar que no es posible la existencia de un (5, 5, 3)-cdigo binario.

Ejemplo: Vamos a estudiar los dos casos extremos de Aq , para los que conocemos
el valor.

Aq (n, 1) = q n
En concreto tenemos el primer cdigo que vimos a principio de la seccin C0 que
alcanza este mximo con q = 2.
2
Si existiera una palabra con peso 1 o 2 estara a distancia 2 de la palabra 0...0 lo que contradice
el concepto de distancia mnima

79 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

A1 (n, n) = q
Si las palabras del cdigo han de estar a distancia n y tener longitud n, entonces
todas las palabras deben tener distintos todos sus caracteres.
Por tanto, como en cada carcter tenemos un total de q posibles valores, si
tenemos la palabra 0...0, otra posible palabra ser 1...1 y as sucesivamente
hasta los q posibles caracteres.

Proposicin VII.9. Siendo d impar

(n, M, d)-cdigo binario (n + 1, M, d + 1)-cdigo binario

Corolario VII.10. Si d es par

A2 (n, d) = A2 (n 1, d 1)

Lema VII.11. En F2n se cumple que

d(x, y) = w(x) + w(y) 2w(z y)

donde
z y = (x1 y1 , x2 y2 , ..., xn yn )

Demostracin. Ya sabemos que

d(x, y) = w(x y) = w(x + y)

Lo que tenemos que hacer es ver cundo hay 1s en x+y, cosa que ocurre cuando
hay un 1 en x, o en y de forma exclusiva.
Cuando hay un 1 en tanto en x como en y, w(x + y) = 0 mientras que w(x) +
w(y) = 2, por lo que en ese caso deberemos restar 2.
Si leemos con cuidado lo que acabamos de explicar obtenemos exactamente la
definicin de distancia que queremos demostrar.

Ahora nos encontramos en condiciones de demostrar la proposicin VII.9.

Demostracin. Vamos a demostrar los dos sentidos de la implicacin

= Sea C un (n, M, d)-cdigo definimos



n+1
X
n+1
C = x F2  (x1 , ..., xn ) C xi = 0 mod 2

i=1

Es decir, aado al cdigo C un bit de control global de paridad.


Es evidente ver que C tiene n + 1 elementos y que |C| = M pues estamos
aadiendo un dgito a cada palabra de C.
Comprobemos ahora que d(C) = d + 1.

80 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por construccin de C ya tenemos que d + 1 d(C) d puesto que los


primeros n caracteres de las palabras no pueden distar menos de d y sabemos
que al menos en un caso estn a distancia d.
Apoyndonos en el lema anterior tenemos que

d(x, y) = w(x) + w(y) 2w(x y)

Por construccin de C tenemos que todas las palabras van a ser de paridad
par por lo que a la derecha de la igualdad anterior tenemos combinacin de
trminos pares que deber ser par.
Pero hemos empezado considerando que d es impar, por tanto d(C) no puede
ser d.
= d + 1.
Por tanto queda claro que d(C)

=
Para demostrar esta direccin de la implicacin vamos a acortar o reducir el
cdigo.
Sea C un (n+1, M, d+1)-cdigo y sean x, y C tenemos que d(x, y) = d+1.
Sea i tal que xi 6= yi construimos C formado a partir de las palabras de C
quitando la coordenada i-sima, es decir, tomamos una proyeccin

: Fqn+1 7 Fqn

Es evidente que los elementos de C tienen longitud n.


Por otro lado podemos ver que |C| = M puesto que en caso de no ser as
tendramos

(x) = (y) = d(x, y) 1 contradiccin pues d(x, y) > d + 1 = 2


Por ltimo nos queda estudiar la distancia d(C).
d. Como
Es evidente que d(C)
=d
d(x0 , y0 ) = d + 1 = d((x0 ), (x1 )) = d = d(C)

Hasta ahora slo hemos visto conceptos muy triviales salvo la cota de Singleton
que era algo ms compleja.
Vamos a empezar con cosas de verdad.

81 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

VII.7. Cota de Hamming o del empaquetamiento


de esferas
Sea C un (n, M, 2t+1)-cdigo q-nario es sencillo ver que dados x, y C con x 6= y
se cumple
B(x, t) B(y, t) =

Podemos ver, adems que la unin disjunta de estas bolas se contiene en Fqn , es
decir a
B(x, t) Fqn
xC

Observacin: En cada bola la nica palabra que se contiene en el cdigo es el centro


de la misma.
Puesto que las bolas son disjuntas, el conjunto de elementos cubiertos por la unin
de las bolas es igual al producto del nmero de palabras cubiertas por una bola multi-
plicado por el nmero de bolas.

Cota de Definicin VII.14 Cota de Hamming. Sea C un (n, M, 2t+1)-cdigo q-nario tenemos
Hamming que:
|C||B(x, t)| q n

No obstante, esta cota es totalmente intil mientras no seamos capaces de contar


los elementos de la bola. Podemos ver que, por definicin de bola cerrada:
t
a
B(x, t) = {y Fqn : d(x, y) = i}
i=0

Y sabemos que
 
n
|{y Fqn d(x, y) = i}| = (q 1)i
i
puesto que tenemos ni formas de tomar i posiciones de la palabra y para cada una


de ellas tendremos (q i)i posibles caracteres que utilizar.


Por tanto podemos ver que
t  
X n
|B(x, t)| = (q 1)i
i=0
i

Por tanto, podemos reescribir la cota de Hamming como:


qn
|C| = M Pt n

i=0 i
(q 1)i
En particular
qn
Aq (n, 2t + 1) Pt n

i=0 i
(q 1)i

82 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejemplo:
qn
Aq (n, 3)
1 + n(q 1)

Cdigo Definicin VII.15 Cdigo perfecto. Decimos que un cdigo C con d = 2t + 1 es


perfecto perfecto si
qn
|C| = Pt n

i
i=0 i (q 1)

es decir, si Fqn se tesela por bolas cerradas de radio t alrededor de las x C


Existen una serie de cdigos que son perfectos de manera trivial. Vamos a verlos:
Cdigos perfectos triviales

1. C = Fq
Estamos tomando todos los posibles trminos de Fq por lo que tendremos d = 1
lo que nos implica t = 0

2. C = {a}
Tomamos un cdigo con una sola palabra de forma que d = (realmente no
tiene sentido definir la distancia) y por tanto t = aunque, puesto que estamos
en un cuerpo finito esto se traduce en considerar una bola de radio t = n que
engloba todo Fqn .

3. Cdigo de repeticin binaria de longitud n = 2t + 1.


Este cdigo tendr d = 2t + 1 = n.
Podemos comprobar que el cdigo es perfecto puesto que sabemos que tiene 2
palabras posibles (todo 0s o todo 1s).
Pero adems podemos comprobarlo formalmente viendo si se cumple la igualdad:

22t+1
2 = Pt 2t+1

i=0 i

Se puede ver que se cumple la ecuacin de la siguiente forma:



t   t    
X 2t + 1 X 2t + 1 2t + 1
2 = + =
i=0
i
i=0
i 2t + 1 i
| {z } | {z }
1a mitad tringulo Pascal 2a mitad

2t+1
X 
2t + 1
= = 22t+1
j=0
j

83 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

VII.7.1. Cdigo de Hamming

Cdigo Definicin VII.16 Cdigo de Hamming(3,2). El cdigo de Hamming (Hamming(3,2))


de Ham- es el primer cdigo perfecto que se cre. Es un cdigo binario, lineal, de longitud 7 y
ming(3,2) formado por 16 palabras.

La idea de Hamming consiste en dibujar tres x7


crculos con intersecciones no vacas y distribuir
los 7 dgitos entre los crculos. Formarn parte del x2 x3
cdigo nicamente las palabras tales que, al dis- x4
tribuir sus cifras como muestra el esquema de la x5 x6
derecha, cada crculo tiene un nmero par de 1s. x1

Esta relacin se traduce en que establecemos 3 ecuaciones lineales entre las cifras
de un mensaje:
x5 = x 1 + x2 + x4 mod 2
x6 = x 1 + x3 + x4 mod 2
x7 = x 2 + x3 + x4 mod 2

Proposicin VII.12.
d(Hamm(3, 2)) = 3

Corolario VII.13. Hamm(3,2) corrige siempre un error.

La forma de demostrar la proposicin pasa por comprobar que este cdigo de


Hamming siempre corrige un error, lo que nos garantiza que la distancia mnima ser
3.
Cuando recibimos un mensaje distribuimos sus cifras siguiendo el diagrama que
representa esta cdigo y procedemos a comprobar cuntos crculos satisfacen la pro-
piedad.
Si algn crculo no satisface la condicin, la regla del vecino ms prximo nos que el
cdigo original puede obtenerse modificando el bit que se encuentra en la interseccin
de los crculos que causan el problema.
Es evidente que este mtodo funciona y que siempre nos permite detectar un error,
sea cual sea la cifra errnea.
Para entender que est formado por 16 palabras basta con observar que podemos
dar valores cualesquiera a las cifras x1 , x2 , x3 y x4 (lo que ya nos da 16 combinaciones
posibles) y que el resto de cifras vienen determinadas por estas 4.

84 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Captulo VIII

Cdigos lineales

VIII.1. Por qu cdigos lineales?


Como ya se ha observado en el captulo anterior hay una gran ventaja en el empleo
de cdigos lineales y es que la distancia mnima puede calcularse de forma mucho ms
sencilla, pues podemos calcular los pesos de cada palabra para luego tomar el mnimo
en lugar de calcular todas las distancias entre posibles pares de palabras antes de tomar
el mnimo.
Otra ventaja de los cdigos lineales es que a la hora de definirlos no es necesario
listar todas las palabras que componen el cdigo sino que basta con dar una base del
espacio lineal que define el cdigo.
Esta ventaja tambin se puede aprovechar proporcionando las ecuaciones que defi-
nen el cdigo, de nuevo sin tener que listar todas las palabras del mismo. No obstante
se tendrn que proporcionar ms ecuaciones que elementos de la base aunque en
cualquier caso estamos teniendo que redactar muchsima menos informacin que si
disemos todas las palabras vlidas.
Por ltimo, pero no por ello menos importante, otra ventaja de los cdigos lineales
es que existen algoritmos rpidos de codificacin y descodificacin.
No obstante, los cdigos lineales tambin tienen algunas desventajas. En general
los cdigos lineales son mejores que los dems aunque esto no siempre es as y nos
encontraremos con excepciones en las que es mejor emplear cdigos no lineales.

VIII.2. Definicin

.(n, k, d)- Definicin VIII.1 .(n, k, d)-cdigo lineal q-nario. Un [n, k, d]-cdigo lineal q-nario
cdigo es un subespacio vectorial C Fqn tal que dim(C) = k y d(C) = d.
lineal
q-nario
Bq (n, d) Definicin VIII.2 Bq (n, d).

Bq (n, d) = max{q k  [n, k, d]-cdigo lineal q-nario}

85 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Observacin: Bq (n, d) Aq (n, d) y en ocasiones se tiene la desigualdad escrita.

Matriz ge- Definicin VIII.3 Matriz generadora. Sea C un [n,k,d]-cdigo lineal q-nario decimos
neradora que una matriz M es generadora de C si y slo si las filas de M son una base de C.
Esta matriz deber ser de dimensin k n.
Matriz Decimos que H Mat(Fq ) ser matriz controladora de paridad para C si dado
controla- x Fqn se cumple
dora de x C Hxt = 0
paridad

Ejemplo: Consideramos el cdigo Ham(3, 2) como se ha definido anteriormente.


En este caso tendremos:

1 0 0 0 1 1 1
1 1 1 0 0 0 1
0 1 0 0 0 1 1

H = 1 1 0 1 0 1 0 , G =

0 0 1 0 1 0 1

1 0 1 1 1 0 0

0 0 0 1 1 1 0

Proposicin VIII.1. Si la matriz generadora puede escribirse como la matriz identidad


complementada con algo, es decir:

G = [Ik | Ak(nk) ]

entonces podemos tomar


H = [At(nk)k | Ink ]
donde k es la dimensin del cdigo e I es la matriz identidad.

Observacin: Sea H la matriz de control de paridad de un cdigo lineal y sea G su


matriz generadora, siempre que satisface que: HGt = 0

Demostracin. Si escribimos
g1
g2
G = ..

.
gk
tenemos que, por definicin de matriz generadora, cada fila gi Fqn .
Por tanto, por definicin de matriz controladora de paridad tenemos que Hgit =
0, lo que nos muestra que:
HGt = 0

Observacin: Las siguientes operaciones en G o en H no cambian el cdigo:

86 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

1. Intercambiar dos filas

2. Multiplicar una fila por un Fq no nulo.

3. Sumar a una fila un mltiplo de otra

Cdigos Definicin VIII.4 Cdigos lineales equivalentes. Dos cdigos lineales son equivalen-
lineales tes si uno se obtiene del otro a partir de una combinacin de las siguientes operaciones
equivalen-
tes
1. Intercambiar dos variables.
Esta operacin se traduce en intercambiar dos columnas en las matrices G o H.

2. Multiplicar los smbolos de la variable xi por Fq no nulo.


Esta operacin se traduce en multiplicar toda una columna de G por o una
columna de H por 1 .

Ejemplo: Dado el cdigo Ham(3, 2), del que hemos hallado las matrices G y H
en el ejemplo anterior, podemos ver que la matriz

0 0 0 1 1 1 1
H = 0 1 1 0 0 1 1

1 0 1 0 1 0 1

define el mismo cdigo.


Podemos observar que la matriz H tiene 7 columnas y todas son no nulas, distintas
entre si y de longitud 3. Por tanto est considerando todas las posibles combinaciones
de tres bits (sin contar la combinacin 000) lo que nos garantiza que cualquier matriz
que satisfaga esta propiedad definir el mismo cdigo.

Proposicin VIII.2. Todo cdigo lineal es equivalente a otro de la forma:

G = [I | A], , H = [At | I]

Notacin este formato se denomina notacin estndar


estndar
Demostracin. La idea es que siempre podemos aplicar Gauss forzando a tener
columnas que slo tengan un elemento no nulo.
Una vez tenemos esto, si estas columnas no estn formando la matriz identidad,
siempre podemos intercambiar columnas para obtener esta matriz.
Para garantizar la presencia de At y At nos apoyamos en la proposicin VIII.1

Como ya comentamos al principio del captulo existen ciertas ventajas en el empleo


de cdigos lineales. Una de estas ventajas es la facilidad de codificacin y descodifica-
cin de mensajes cuando empleemos este tipo de cdigos.

87 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

VIII.3. Codificacin con cdigos lineales


Tenemos que, por lo visto en la seccin anterior, la matriz G tiene dimensin k n.
Sea
g1
g2
G = ..

.
gk

A partir de esta matriz podemos deducir el cdigo:



X k
C= i gi  i Fq = {(1 , , k )G  (1 , , k ) Fqk }

i=1

La forma de codificar pasar por emplear una funcin de la forma

f : Fqk 7 C

que tomar un vector cualquiera (1 , , k ) de Fqk y nos devolver una palabra de


nuestro cdigo.
Si tenemos que el cdigo es lineal y est en su forma estndar tenemos que las
primeras k cifras del cdigo codificado coinciden con el mensaje original, de modo que
la decodificacin ser trivial.

Ejemplo: Si el cdigo no est en forma estndar y ciframos la palabra (a, b) tenemos:


!
1 1 0 0
(a, b) = (a, a, b, b)
0 0 1 1

que no nos permite conocer de forma inmediata la palabra original.


Por otro lado, si el cdigo si que se encuentra en formato estndar tendremos:
!
1 0 1 0
(a, b) = (a, b, a, b)
0 1 0 1

Con lo que al principio de la palabra codificada tendremos la palabra original.

VIII.4. Decodificacin con cdigos lineales


Ya hemos visto al final del apartado anterior cmo puede leerse el mensaje original
a partir del mensaje codificado. El problema de la decodificacin radica en la correccin
de los posibles errores que nos encontremos.
Ahora supongamos que tenemos un cdigo lineal C Fqn y que hemos recibido un
mensaje y Fqn . Qu debemos hacer?.

88 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

El objetivo es encontrar un x C lo ms prximo posible a y, es decir, tendremos


que hacer que el error, y x = e, sea mnimo.
Si observamos el conjunto cociente Fqn /C, lo que tendremos que hacer es encontrar
el elemento de peso mnimo de entre todos los de la clase de equivalencia de y.
Slepian Esta es la idea de la tabla de Slepian. Veamos el funcionamiento de esta tabla con
un ejemplo.

Ejemplo: Sea el cdigo dado por la matriz generadora:


!
1 0 1 0
G=
0 1 1 1
.
La tabla se construye por filas. Para cada fila empezamos tomando una cadena de
peso mnimo que an no haya aparecido en la tabla.
Para continuar la construccin de la fila, aadiremos los elementos que pertenecen
a la misma familia. Lo haremos escribiendo los resultados de aplicar combinaciones
lineales de los generadores sobre el elemento que representa la clase de equivalencia.
Finalmente la tabla queda:

0000 1010 0111 1101


1000 0010 1111 0101
0100 1110 0011 1001
0001 1011 0110 1100

La idea que hay de fondo es que estamos tomando representantes de las diferentes
clases de equivalencia (primera columna) y vemos todos los elementos que pertenecen
a esa clase.
Ahora buscamos el mensaje recibido en esta tabla y tomamos su representante
con peso mnimo que, si hemos construido la tabla de la mejor forma posible, ser el
elemento ms a su izquierda.1
Una vez tenemos este representante, conocemos e, para conocer x simplemente
miramos la columna en la que se encuentra y de forma que se satisface

y =x+e

Observacin: Puesto que estamos realizando una divisin del cdigo en clases de
equivalencia, no puede haber ningn elemento repetido en la tabla pues estas clases
son disjuntas.
Con el procedimiento que acabamos de ver podemos corregir un error en los bits
primero, segundo y cuarto, pero no en el tercero.
1
En la tabla ejemplo y en las que debemos hacer, empezamos tomando un representante de peso
mnimo, que escribimos en la primera columna, y a su derecha escribimos el resto de elementos de
la clase. No obstante, se obtiene un resultado equivalente si empezamos tomando un representante
distinto.

89 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por otro lado, podamos haber construido de forma distinta la segunda fila, cam-
biando el representante de peso mnimo tomado. En ese caso seramos incapaces de
detectar errores en el primer bit.
Como conclusin podemos ver que este cdigo no es tan bueno para corregir errores.
Veamos otro ejemplo con un mejor cdigo, el que en su da llamamos C5 .

Ejemplo: Tomamos el cdigo dado por la matriz generadora


!
1 0 1 1 0
G=
0 1 1 0 1

En esta ocasin tenemos n = 5, k = 2, r(= n k) = 3, d = 3 y la tabla de


Slepian queda:
00000 10110 01101 11011
10000 00110 11101 01011
01000 11110 00101 10011
00100 10010 01001 11111
00010 10100 01111 11001
00001 10111 01100 11010
11000 01110 10101 00011
10001 00111 11100 01010

Con esta tabla seremos capaces de corregir un total de 7 errores: los 5 errores
simples, error en los dos primeros bits, y error en el primer y ltimo bit.
En este tipo de ocasiones en que el nmero de errores que podemos corregir est
Decodificacin limitado, lo que se suele hacer es decodificacin incompleta que consiste en tomar
incompleta slo una parte de la tabla, es decir, nos quedamos solo con aquellas filas en las que el
lder e tiene peso menor o igual que d12
.
d1
As siempre que recibamos un mensaje y [e] con w(e) 2
leemos x = y e
y en caso contrario PITO.
Para casos pequeos como el que estamos viendo es muy sencillo encontrar la
palabra recibida y en la tabla. No obstante, si trabajamos en un caso ms real con
palabras de longitud 256 tendremos tablas de 2256 elementos donde buscar es bastante
complicado.
Sin embargo, no es necesario tener todos los elementos de la tabla calculados.
Para empezar, hay un sndrome clarsimo que nos permite saber si la palabra no
est en el cdigo que consiste en emplear la matriz controladora de paridad. Se define
Sndrome as el sndrome de una palabra como:
de una
palabra S(y) = Hy t
y consideramos que
y C S(y) = 0 est sano, no tiene sndromes

Observacin:
y1 y2 mod C S(y1 ) = S(y2 )

90 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Demostracin.

y1 = y2 mod C y1 y2 C H(y1 y2 )t = 0 Hy1t = Hy2t S(y1 ) = S(y2 )

Por tanto, podemos saber en qu fila nos encontramos slo con calcular el sndrome
de la palabra recibida. Una vez tenemos la fila localizada, basta con que construyamos
esta fila, ahorrndonos el proceso de construccin de la tabla completa.

Ejemplo: Retomando el ejemplo anterior, tenemos



! 1 1 1 0 0
1 0 1 1 0
G= = H = 1 0 0 1 0

0 1 1 0 1
0 1 0 0 1

Ahora calculamos el sndrome de cada representante de clase de la tabla de Slepian:

00000 000
10000 110
01000 101
00100 100
00010 010
00001 001
11000 011
10001 111

Supongamos que hemos recibido el mensaje y = 01001 calculamos su sndrome,


que nos da (y) = 100 con lo que asumimos que e = 00100 con lo que leemos el
mensaje x = 01101 que es una palabra del cdigo.

VIII.4.1. Decodificacin por sndrome para Ham(3,2)


Cuando trabajamos con Ham(3,2), que es un (7, 16, 3)-cdigo binario, tenemos la
matriz comprobadora de paridad:

0 0 0 1 1 1 1
H= 0 1 1 0 0 1 1

1 0 1 0 1 0 1

Cuando recibimos una palabra y, calculamos su sndrome S(y) = Hy t . Si este


sndrome vale 0, entonces leemos la palabra y.
Puesto que todas las combinaciones posibles de 3 bits estn representadas como
columnas de la matriz H, en caso de que el sndrome no sea el vector 0, este ser igual
a una de las columnas de la matriz Hi . En esta ocasin leeramos y = y ei .

91 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Alternativamente:

s2
Sy = s1 = leo y = y es0 +2s1 +4s2

s0

siendo esto posible solamente si escribimos la matriz H como hemos mostrado al inicio
de la seccin, donde cada columna i se corresponde con la representacin binaria del
nmero i.
Dado un cdigo lineal con matriz generadora Gkn y matriz controladora de paridad
Cdigo Hrn siendo r = n k, el Cdigo dual C es aquel que tiene como matriz generadora
dual C la Hrn . Por construccin, la matriz controladora del cdigo dual ser la matriz Gkn .
A continuacin veremos el resultado ms importante de lo que resta de curso. La
idea es que en un cdigo lineal existen formas alternativas de calcular la distancia
mnima.

M
En general, si |C| = M , la primera forma de calcular d(C) que estudiamos requera
2
clculos de distancias entre palabras.
Esta cota ya la mejoramos al estudiar el concepto de los pesos con lo que logramos
reducir la cantidad de operaciones necesarias a M 1 clculos de pesos de palabras.
Pero esto puede mejorarse ms an, puesto que H contiene la informacin necesaria
para conocer d(C).

Observacin: Sea la matriz H = [H1 , ..., Hn ] y sea x C. Considerando w = w(x)


entonces sabemos que xi1 , ..., xiw 6= 0, por definicin de peso de una palabra.
Por definicin de la matriz controladora tenemos:

Hxt = 0 = xi1 H1 + + xiw Hw = 0

es decir, tenemos una combinacin lineal de w columnas de H en la que ningn


coeficiente es 0.

Proposicin VIII.3. Sea C un cdigo lineal con matriz controladora H y d(C) = d,


son ciertas las siguientes afirmaciones:

1. H no puede tener d 1 (o menos) columnas linealmente dependientes

2. H tiene d columnas linealmente dependientes

Demostracin.

1. Si tuviramos d 1 columnas linealmente independientes, atendiendo a la


observacin anterior, tendramos una palabra de peso d 1 que pertenece al
cdigo, lo que nos dara que la distancia mnima no podra ser d.

2. Sea x una palabra del cdigo con w(x) = d, entonces tenemos una relacin
de dependencia entre d columnas de la matriz H.

92 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Corolario VIII.4. Sea C un cdigo lineal con matriz controladora H, entonces d(C) =
d si y slo si se cumplen las dos propiedades siguientes:

1. d 1 columnas cualesquiera de H sean linealmente independientes

2. Existen d columnas de H linealmente dependientes.

Demostracin. La primera afirmacin nos garantiza que la distancia mnima del


cdigo ser al menos d.
Por otro lado, la segunda afirmacin nos garantiza que la distancia mnima del
cdigo sea como mucho d.
Combinando ambas afirmaciones, queda probado que la distancia mnima es
d.

Veamos un pequeo ejemplo en binario para entender estos conceptos.

Ejemplo: Tomamos el cdigo binario C con matriz controladora de paridad:



1 1 0 1 0 0
H= 1 0 1 0 1 0

0 1 1 0 0 1

Vamos a calcular ahora la distancia mnima del cdigo a partir de la matriz H.


Comprobamos si la distancia mnima puede ser mayor o igual que 2. Esto implicara,
por el corolario anterior, que toda columna es linealmente independiente es decir, que
toda columna es no nula.
Puesto que nuestra matriz cumple esta propiedad ya sabemos que la distancia
mnima ser, al menos, 2.
Vemos ahora que ocurre para d 3. Si esto fuese as, dos columnas cualesquiera
de la matriz seran independientes, propiedad que se cumple.
Vamos a ver si d 4. Para ello debemos ver si tres columnas cualesquiera son
linealmente independientes. En este caso es sencillo ver que

H1 = H4 + H5

por lo que la distancia mnima no puede ser 4.


Como conclusin tenemos que el cdigo dado tiene distancia mnima igual a 3.
Recordemos que el rango de una matriz nos daba el mximo nmero de columnas
linealmente independientes. Por tanto, siendo r el rango de la matriz controladora de
paridad, sabemos que r + 1 columnas siempre sern dependientes por lo que d r + 1.
Podemos ver que no tendremos siempre la igualdad (de hecho por eso hemos
escrito una desigualdad) puesto que el rango nos garantiza la existencia de r columnas
independientes pero no garantiza que todas las combinaciones de r columnas sean
independientes.

93 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Captulo IX

Cdigos de Hamming

IX.1. Cdigos de Hamming binarios


Trabajando con q = 2 y d = 3 vamos a trabajar con cdigos Ham(r,2). Fijando r
vamos a buscar cdigos con el mayor n posible.
Para garantizar que la distancia mnima sea mayor o igual que 3, simplemente
necesitamos:
i Hi 6= 0 i, j Hi 6= Hj
Es decir, basta con tomar cualquier conjunto {H1 , ..., Hn } F2r {0} con n vectores
distintos.
Si queremos que el n sea el mayor posible, tendremos un total de n = 2r 1.
Una vez tenemos n, sabiendo que la matriz controladora de paridad, H, tendr r
filas y n columnas (y sabiendo que la distancia del cdigo es 3) podemos concluir que
nos encontramos ante un (n = q r 1, q nr , 3)-cdigo q-ario.

Ejemplo: Si tenemos un cdigo Ham(4, 2) con distancia mnima d = 3, estamos


ante un (15, 211 , 3)-cdigo binario.
En general, si tenemos un cdigo Ham(r,q) con distancia mnima d = 3 queremos
tener q = ps sobre Fq . Pedimos que q sea potencia de un primo para poder trabajar
con lgebra de primero puesto que de no ser Fq un cuerpo el concepto de linealmente
independiente quedara bastante ms complejo.
Para tener distancia mnima d 3 necesitamos que ninguna columna de H sea
nula ni mltiplo de otra.
En el cuerpo Fqr {0} tenemos un total de q r 1 posibles columnas 1 . Sin embargo,
por cada columna Hi que fijamos, nos estamos eliminando q 1 opciones, ya que el
resto de columnas no podrn ser mltiplo de la primera.
q r 1
Por tanto, tenemos como mximo n = q1
.
Lo ms fcil es exigir que la coordenada ms alta sea distinta de 0, por ejemplo 1.
1
Ya estamos descontando la columna nula

94 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejemplo: Si queremos encontrar el cdigo Ham(2,3) ptimo con distancia mnima


2 1
d = 3 tenemos n = 331 = 4. En concreto tenemos
!
0 1 1 1
H=
1 0 1 2

Proposicin IX.1. Sean q, r 2 enteros (podramos tomar tambin r = 1 pero se


tratara de cdigos muy triviales), se cumple que:
qr 1
n= , M = q nr = M (1 + n(q 1)) = q n
q1
Demostracin.
qr 1
M (1+n(q1)) = q n 1+n(q1) = q r n(q1) = q r 1 n =
q1

Corolario IX.2. Si q es potencia de un primo, entonces el cdigo Ham(r, q) es


perfecto con d = 3

Observacin: Que los parmetros satisfagan la ecuacin de Hamming no garantiza


que el cdigo en cuestin exista.

Ejemplo: Podemos ver que no existe un (7, 65 , 3)-cdigo 6-ario.


Sin embargo, los parmetros de este cdigo son de Hamming pues satisfacen

62 1
= 7 = n = r + k siendo r = 2 k = 5 y d = 3
61

Si se buscan soluciones a las ecuaciones de Hamming, que recordemos son de la


forma:
t  
X n
M (q 1)i = q n
i=0
i
con n, t 1000 y q 100 salen los cdigos de Hamming que hemos visto hasta ahora
(cuando t = 1), los triviales y 3 soluciones ms que son:

Cdigo 1. (23, 212 , 7)-cdigo binario, conocido como Cdigo de Golay binario
de Golay
binario 2. (90, 278 , 5)-cdigo binario.

Cdigo de 3. (11, 36 , 5)-cdigo ternario, conocido como Cdigo de Golay ternario


Golay ter-
nario
En concreto, para los casos 1 y 3 si que existe un cdigo (el de Golay) con esas
caractersticas mas no as con el segundo caso.

95 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Teorema IX.3. No existe un (90, 278 , 5)-cdigo binario.

Teorema IX.4. Si q es potencia de un primo, entonces todo cdigo perfecto no


trivial tiene los parmetros de un Hamming o un Golay

Con esto tenemos que, definindolos sobre cuerpos, existen cdigos binarios para
corregir 1 o 3 errores (Hamming y Golay binario respectivamente) y cdigos ternarios
para corregir dos errores (Golay ternario).
Veamos cmo trabaja un algoritmo de correccin para un cdigo perfecto con
d = 2t + 1.

1. Recibo y Fqn

2. Busco x0 C tal que d(x0 , y) = mn{d(x, y)  x C}

3. Leo x0

Podemos observar que este cdigo nunca pita sino que siempre lee algo. Esto
funciona porque estamos trabajando con un cdigo perfecto que se caracteriza por
dividir el espacio total en el que se mueven las palabras en bolas disjuntas.
Puesto que todo el espacio est divido, siempre encontraremos algn x0 y, puesto
que las bolas son disjuntas, no tendremos conflictos con el x0 que ser nico.
Veamos ahora una versin de este algoritmo que utiliza los sndromes. Supongamos
que tenemos un cdigo Ham(r, q) con d = 3 = t = 1. Los pasos a seguir son:

1. Recibo y

2. Calculo S = S(y)

3. Si S = 0 leo y

4. Si S 6= 0 busco i, tales que S = Hi y leo y Hi .

Este algoritmo se apoya en la siguiente propiedad:

y Fqn \ {0} !i, ! Fq \ {0} t.q y = Hi

96 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Observacin: Sea S = (s1 , ..., sr ) con s1 = s2 = ... = se = 0 y se+1 6= 0 entonces



0
..
.

0

S = se+1 1 = se+1 Hi
se+2
s
e+1
..
.
sr
se+1

Ejemplo: Supongamos que estamos empleando un cdigo Ham(3, 3) y que recibi-


mos el mensaje y = 0112200000000, Qu leemos?.
Lo primero que debemos hacer es construir la matriz controladora de paridad:

0 0 0 0 1 1 1 1 1 1 1 1 1
H= 0 1 1 1 0 0 0 1 1 1 2 2 2

1 0 1 2 0 1 2 0 1 2 0 1 2

Ahora debemos calcular el sndrome de la palabra recibida:



2 1
S(y) = = 2 2 = 2H12
1

2 1

Por tanto leeremos y 2e12 = 0112200000010.

Ejemplo: Vamos a construir el cdigo Ham(2, 4).


Lo primero que tenemos que hacer es construir un cuerpo de 4 elementos que,
recordando algo de Galois, ser {0, 1, , + 1} siendo 2 = + 1.
4r 1
En el caso del cdigo que queremos construir tenemos que r = 2, n = 41
= 5.
Por tanto la matriz H tendr dimensin 2 5. Vamos a construirla:
!
0 1 1 1 1
H=
1 0 1 +1

Supongamos ahora que leemos el mensaje y = (0, 0, 1, , 0). Para corregirlo calcu-
lamos su sndrome obteniendo:
! !
+1 1
S(y) = = ( + 1) = ( + 1)H5
+1

Por tanto leemos y ( + 1)e5 = (0, 0, 1, , + 1)


Proposicin IX.5. Sean q, r 2 enteros y q una potencia de un primo, entonces
 r 
q 1
Aq , 3 = q nr
q1

97 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Demostracin. Sabemos de antemano que


 r 
q 1
Aq , 3 q nr
q1

por la cota de Hamming.


Por tanto tenemos que centrarnos en mostrar que se siempre se alcanza la igual-
dad.
Para ello basta con considerar un cdigo Ham(r, q) que, como ya hemos visto,
es un cdigo perfecto y alcanza la cota.
Por tanto queda claro que se da la igualdad.

Ya tenemos que la cota de Hamming se alcanza pero ocurre lo mismo con la cota
de Singleton?. Vamos a verlo.
Recordemos que la cota de Singleton establece:

Aq (n, d) q nd+1

Por tanto, lo que tenemos que hacer es ver si existe o no un cdigo lineal con r = d1.
Los cdigos que cumplan esta relacin se denominan cdigos Maximum Distance
Cdigos Separable.
Maximum
Distance Un ejemplo de cdigos de este tipo son los cdigos BCH.
Separable

IX.2. Cdigos BCH (Bose Ray-Chaudhury y Hoc-


quenghem)
Este tipo de cdigos son empleados en los CDs para evitar que rayajos, que daan
una serie de bits consecutivos, no dejen el CD inutilizable.
Se dice que un CD es 75 % msica y 25 % matemticas.
Veamos cmo construir un cdigo BCH.
Lo primero que debemos hacer es recordar que para generar el cdigo nos basta
con ser capaces de escribir la matriz controladora de paridad y esto se haca atendiendo
a la distancia mnima que queremos tener para el cdigo.
En este caso estamos buscando un cdigo con r = d 1 = d = r + 1. Por tanto
necesitamos encontrar n columnas Hi Fqr tales que r de ellas sean independientes.
Puesto que tenemos r vectores de dimensin r, podemos comprobar si son o no
independientes estudiando su determinante.
Por tanto, necesitamos encontrar vectores de tamao r: H1 , ..., Hn tales que

det(Hi1 ...Hir ) 6= 0 para cualquier combinacin de r vectores

Determinante Definicin IX.1 Determinante de Vandermonde. Se trata de un determinante


de Vander-
monde
98 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

famoso que ya hemos visto en lgebra lineal y que tiene la forma:



1
1 1
x1
x2 xr
x2 x22 x2r =
Y
1 (xi xj )
.. .. .. .. 1j<ir
. . . .
r1 r1 r1
x1 x2 xr

Si trabajamos sobre un dominio tenemos:


Y
(xi xj ) 6= 0 xi xj 6= 0 i, j xi 6= xj i, j
1j<ir

Por tanto, si en Fq existen n valores distintos podemos construir fcilmente una matriz
de la forma del determinante de Vandermonde, lo que nos garantiza que tomando r
columnas cualesquiera de esta matriz, tendremos un determinante no nulo.
Es decir, nos quedara la matriz:

1 1 1

x1 x2 xn

H=
x21 x22 x2n
.. .. ..

..
.

. . .
xr1
1 xr1
2 xr1
n

que define un [n, n r, r + 1]-cdigo.

Ejemplo: Veamos cunto vale A11 (7, 5).


Para calcular este valor empezamos estableciendo la cota de Singleton, que nos
garantiza:
A11 (7, 5) 113

Ahora tenemos que ver si se da la igualdad. Para que se de la igualdad debemos


ser capaces de construir una matriz controladora de paridad compuesta por 4 filas y 7
columnas.
Recordando lo que hicimos anteriormente debemos encontrar 7 elementos distintos
en F11 y ya lo tendremos. Esta tarea es bien sencilla y, como resultado, no permite
obtener la matriz:
1 1 1 1 1 1 1
1 2 3 4 5 6 7

H=
1 22 32 42 52 62 72

1 23 33 43 53 63 73

Teorema IX.6. Si q es potencia de un primo y d n q, se tiene que:

Aq (n, d) = q nd+1

99 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Teorema IX.7. Si q es potencia de un primo y d n q + 1, se tiene que:

Aq (n, d) = q nd+1

Observacin: Ya no hay q + 1 elementos distintos en Fq .

Demostracin. Con lo visto anteriormente es sencillo construir las primeras q co-


lumnas de la matriz H, pero necesitamos q + 1.
Basta con aadir una columna de 0s con un 1 al final. De esta forma, al calcular
el determinante por adjuntos obtendremos el determinante de VanderMonde con lo
que seguimos garantizando que q + 1 columnas sern independientes.

Los cdigos BCH con d n q se pueden decodificar usando tcnicas inspiradas


por Ramanujan. Veamos un ejemplo.

Ejemplo: Consideramos un cdigo con matriz controladora:



1 1 1 1
0 1 2 10

H=
0 12 22 102

0 13 23 103

de la que sabemos n = 11, r = 4, k = 7 y d = 5.


Este cdigo puede corregir hasta 2 errores. Vamos a corregir el error usando el
sndrome. El algoritmo sera:

10
1. Recibimos y = y1 , ..., y10 F11

2. Calculamos su sndrome obteniendo:



s1
s2

S(y) =
s3

s4

3. Si el sndrome es 0, leemos y y fin del algoritmo

4. Supongamos que se ha producido un error doble. En ese caso tenemos que


encontrar los valores a, b, i, j que satisface:

s1 1 1
s2 i j

= a 2 + b 2
s3 i j

3
s4 i j3

100 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Resolver este sistema no es tarea fcil, pues no es lineal. Si a cada ecuacin le


restamos i veces la de debajo, podemos llegar al sistema:
b(i j) = is1 s2
bj(i j) = is2 s3
bj 2 (i j) = is3 s4

Podemos ver que el lado izquierdo de la segunda ecuacin al cuadrado es igual


al producto de los lados izquierdos de las otras dos ecuaciones.
Gracias a esta relacin podemos escribir:
(s22 s1 s3 )i2 + (s1 s4 s2 s3 )i + s23 s2 s4 = 0
Polinomio que se denomina polinomio localizador de errores, cuyas races son i y j.
localizador
de errores 5. En el paso anterior suponemos que se han producido dos errores pero, Qu
ocurre si slo hay un error?
En este caso, aplicando el mismo procedimiento del apartado anterior, obtenemos
que el polinomio localizador de errores es el polinomio nulo.

Generalizando lo que acabamos de ver en el ejemplo, tenemos que el polinomio de


localizador de errores ser de la forma P x2 + Qx + R = 0 si hay dos errores, y ser la
constante 0 si slo hay un error.
A nivel terico, el algoritmo para corregir dos errores es

1. Recibo y F1n y calculo su sndrome S(y)


2. Si S(y) = 0, leemos y.
3. Si S(y) 6= 0 y s1 6= 02 y el polinomio detector de errores es nulo asumo que el
error tiene tamao s1 y leo
y s1 es2 /s1
4. Si S(y) 6= 0 y tenemos un polinomio detector de errores no nulo, asumo que se
han producido dos errores en las posiciones i, j, siendo estos las soluciones del
polinomio.
Adems, es perfectamente lgico asumir que i 6= j.
Por ltimo, tenemos que conocer el tamao de estos errores para lo que resol-
vemos la ecuacin:
a + b = s1
ai + bi = s2
con lo que obtenemos a y b que son los pesos buscados.
5. En cualquier otro caso, PITO

Observacin: El procedimiento funciona sobre cualquier Fq siempre que q sea potencia


de un primo distinto de 2. Esto se debe, entre otros motivos, a que la forma de
resolver la ecuacin del polinomio caracterstico cambia dependiendo del cuerpo en el
que estemos trabajando.
2
Siendo s1 el primer elemento de S(y).

101 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

IX.3. Cdigos binarios extendidos


Ya vimos un ejemplo de un cdigo binario extendido cuando pasamos de un
(n, M, d)-cdigo binario con d impar a un (n + 1, M, d + 1)-cdigo binario, cosa que
logramos mediante la adicin de un bit de paridad.
V

Otro ejemplo de extensin de cdigo binario es el cdigo Ham(r, 2), que ya hemos
visto. Recordemos que la construccin de este cdigo consista en aadir una fila de
1s debajo de la matriz H y una columna de 0s a la derecha de esta misma matriz.
Vamos a ver cmo funcionan los algoritmos de decodificacin sobre este tipo de
cdigos.
V

Si nos centramos en el caso Ham(3, 2), donde tenemos la matriz controladora de


paridad:
0 0 0 1 1 1 1 0
0 1 1 0 0 1 1 0

H=
1 0 1 0 1 0 1 0

1 1 1 1 1 1 1 1

1. Recibimos una palabra y F28

2. Calculamos el sndrome de la palabra recibida, S(y).

3. En funcin sel valor del sndrome calculado tendremos diferentes opciones:

Si S = 0 leemos la palabra y
Si S 6= 0 y s4 = 0 entonces se habrn producido al menos dos errores por
lo que el algoritmo PITA.
Si s4 6= 0 y s1 = s2 = s3 = 0 entonces leemos y e8 .
Si s4 6= 0 y (s1 , s2 , s3 ) 6= (0, 0, 0) leemos y es3 +2s2 +4s1 .

El negocio de la extensin de cdigos Hamming slo resulta rentable cuando nos


encontramos con cdigos binarios. En otro tipo de cdigos, al extender aumentamos la
longitud de cada palabra pero no logramos aumentar la cantidad de palabras posibles
ni la distancia mnima, por lo que simplemente obtenemos un cdigo ms caro.

Ejemplo: Voy a llamar Ham(2, 3) al cdigo lineal F3 con:



0 1 1 1 0
H= 1 0 1 2 0

1 1 1 1 1

Antes de hacer la extensin tenamos que Ham(2, 3) es un [4, 2, 3]-cdigo y hemos


hecho la extensin para ver si ahora la d es mayor, pero se ve que x = (0, 1, 1, 1, 0)
V V

Ham(2, 3) y por tanto Ham(2, 3) es un [5, 2, 3]-cdigo, es decir, no ganamos en


distancia mnima y encima ahora las palabras son ms largas.

102 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

IX.4. Cdigos binarios acortados (o reducidos)


Proposicin IX.8. Dado un [n, k, d]-cdigo lineal sobre Fq existe un [n 1, k 1, d0 ]-
cdigo lineal sobre Fq con d0 d.

Demostracin. Elejimos una posicin i y nos fijamos en

C 0 = {x C : xi = 0} |{z}
< C
subgrupo

Esta construccin nos permite garantizar que:


(
k si C 0 = C
dim(C 0 ) =
k 1 si C 0 C

El cdigo reducido que buscamos es:

C = {(x1 , ..., xi , ..., xn ) : x1 , ..., xi , ..., xn C 0 }


V

donde xi implica que esa cifra no est presente.


Queda claro que la longitud de las palabras en C es n 1. Del mismo modo
podemos comprobar que

x , y C d(x , y ) d

Si esta distancia fuese menor que d tendramos que dos palabras del cdigo original
se encuentran a distancia menor que d, puesto que sabemos que la cifra que hemos
eliminado es la misma en ambas palabras.
No podemos garantizar la igualdad puesto que puede ocurrir que entre el sub-
conjunto de palabras que hemos tomado del cdigo original no haya ningn par de
palabras a distancia d.
Si quiero un [n1, k 1, d0 ]-cdigo basta con elegir i tal que x C con xi 6= 0,
pues de este modo garantizamos C 0 C.

Aunque con el procedimiento empleado en la demostracin no podemos garantizar


que la distancia mnima sea d (lo cual es beneficioso puesto que siempre nos interesa
tener una distancia mnima lo mayor posible), podemos garantizar que se cumpla esta
distancia mnima.
La forma de conseguir esto pasa por tomar una palabra x C , que tendr:

xi1 6= 0, ..., xid0 6= 0 y los dems xj = 0

y tomar convertir d0 d cifras que no eran nulas en 0.


Una vez determinamos que columnas vamos a hacer 0, aplicamos esta misma
operacin sobre todas las palabras del cdigo.
Con esto garantizamos que alguna palabra tenga peso d, la palabra con la que
empezamos a trabajar) y sabemos que todas las dems palabras, que tenan peso al

103 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

menos d0 tendrn ahora peso al menos d con lo que, efectivamente, hemos reducido la
distancia del cdigo a d.
En general, siempre nos interesa obtener los mejores cdigos posibles pero Cmo
de bueno puede ser un cdigo?.
Para que un cdigo sea bueno necesitamos que la tasa de transmisin sea grande
y que la probabilidad de equivocarnos al leer el mensaje recibido sea pequea, es decir,
queremos que n sea pequeo con d grande.

logq (M )
tasa de transmisin = R =
n

Shannon dijo que cada canal tiene una capacidad.


Por ejemplo, para el canal binario simtrico con probabilidad de error en un bit p
tenemos que la capacidad del mismo es viene dada por
 
H2 (R)
C(p) = 1 + p log2 (p) + (p) log2 (1 p) = 1
entropa

Teorema IX.9 (Teorema de Shannon (1948)). Dado R menor que la capacidad


del canal y dado cualquier positivo, existe un cdigo con tasa de transmisin
mayor o igual que R y probabilidad de error al corregir menor que .

104 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Apndice A

Ejercicios

A.1. Hoja 1

Ejercicio 1.1: Un general espartano recibe el siguiente mensaje de un amigo


de Cantoblanco:
SONFAUHPINPEOCTOHRIANEQLSGCUTUOHEEEQOENRUBSETEIDRELEIT
Qu dice el mensaje?

Hecho por Jorge. Se aceptan correcciones.


Si consiguiramos una esctala cuyo dimetro hiciera que entraran 5 letras por fila
conseguiramos el mensaje:
SUPONGOQUELOHEHECHOBIENPORQUEESDIFICILTENERTANTASUERTE

Ejercicio 1.2: Recibes el mensaje VEILRW, cifrado usando una clave de


Cesar en el alfabeto castellano de 27 letras (con y W). Lee el mensaje, da las
transformaciones para cifrar y descifrar, y cifra el mensaje GRACIAS utilizando la
clave correspondiente.

Hecho por Jorge. Se aceptan correcciones.


Usando la transformacin:

f17 : Z/27 7 Z/27

f17 (x) = x + 17

Se consigue f17 ({V, E, I, L, R, , W }) = {M, U, Y, B, I, E, N }.


De modo que para cifrar nos basta:
1
f17 (x) = f17 (x) = f10 (x)

105 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

f10 ({G, R, A, C, I, A, S}) = {P, B, K, M, R, K, C}

Ejercicio 1.3: Utilizando el anlisis de frecuencias, descifra el siguiente


mensaje, del que sabes que est escrito en ingls (26 letras, con W pero sin ) y
que ha sido cifrado con una clave de Cesar: PXPXKXENVDRUXVTNLXHYMXG-
MAXYKXJNXGVRFXMAHWGXXWLEHGZXKVBIAXKMXQM

Hecho por Jorge. Se aceptan correcciones.


Al hacer el anlisis de frecuencias se obtiene:

P 0.03225806451612903
X 0.24193548387096775
K 0.06451612903225806
E 0.03225806451612903
N 0.04838709677419355
V 0.06451612903225806
D 0.016129032258064516
R 0.03225806451612903
U 0.016129032258064516
T 0.016129032258064516
L 0.03225806451612903
H 0.04838709677419355
Y 0.03225806451612903
M 0.08064516129032258
G 0.06451612903225806
A 0.04838709677419355
J 0.016129032258064516
F 0.016129032258064516
W 0.03225806451612903
Z 0.016129032258064516
B 0.016129032258064516
I 0.016129032258064516
Q 0.016129032258064516

Se puede ver que la ms frecuente entre todas es la letra X. Si tomamos como


letra ms usada del ings la E (en vez de la T) se obtiene el mensaje:
WEWERELUCKYBECAUSEOFTENTHEFREQUENCYMETHODNEEDSLONGERCIPHERTEXT
Gracias a la transformacin f7 (x) = x + 7.

Ejercicio 1.4: La distribucin de frecuencias (en porcentaje) en castellano


de las 26 letras (es decir, sin W) es aproximadamente la siguiente.

106 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

A B C D E F G H I J K L M
12,6 1,0 5,1 5,7 13,7 0,9 0,8 0,5 7,0 0,2 0,0 4,6 3,2
N O P Q R S T U V X Y Z
7,0 0,1 8,8 2,9 1,1 6,6 7,2 5,1 3,9 0,8 0,1 0,6 0,3
Recibes un mensaje escrito en castellano (con ese alfabeto) que ha sido cifrado
con el criptosistema de Cesar. Las dos letras ms frecuentes en el texto cifrado
son, por ese orden, la J y la N. Deduce razonadamente cual puede haber sido la
clave utilizada para cifrar.

Hecho por Jorge. Se aceptan correcciones.


Lo lgico sera que las letras ms frecuentes en el alfabeto se correspondieran con
las ms correspondientes en el mensaje, de modo que lo primero que a uno se le viene
a la cabeza es corresponder la J (la ms frecuente en el mensaje) con la E (la ms
frecuente en el alfabeto). Esto viene a ser la transformacin f5 = f21 , la cual manda la
N (la segunda ms frecuente en el mensaje) a la I (que no es la segunda ms frecuente
en el espaol).
De modo que igual la segunda ms frecuente en el mensaje es la que se corresponde
con la ms frecuente en el alfabeto (f9 = f17 ). Con esta transformacin se consigue:

f17 (J) = A

f17 (N ) = E
Lo cual es ms coherente, ya que hace una correspondencia entre las 2 letras ms
frecuentes del alfabeto (la E y la A) con las 2 ms frecuentes del mensaje.

Ejercicio 1.5: Interceptamos un mensaje en el que dos profesores hablan de


las asignaturas del plan de estudios de Matemticas. El mensaje es el siguiente:
DONQONHOSDGXQKCHDKSNSJSDOQOBDCUQ
Sabemos que el mensaje ha sido cifrado utilizando una sustitucin simple en el
alfabeto castellano de 27 letras (con y W), y sospechamos que en el mensaje
original apareca la palabra CALCULO. Lee el mensaje.

Hecho por Jorge. Se aceptan correcciones.


Haciendo el anlisis de frecuencias del mensaje interceptado se obtiene:

107 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

D 0.15625
O 0.15625
N 0.09375
Q 0.125
H 0.0625
S 0.125
G 0.03125
X 0.03125
K 0.0625
C 0.0625
J 0.03125
B 0.03125
U 0.03125

Dentro del mensaje interceptado CALCULO se corresponde con NQONHOS, para


darse cuenta basta con fijarse que hayan dos pares de letras iguales al igual que pasa
en CALCULO. Con dicha correspondencia de letras tenemos (mostramos el mensaje
cortado en 2, donde la fila de debajo de cada trozo se corresponde con lo que llevamos
descifrado):

D O N Q O N H O S D G X Q K C H
_ L C A L C U L O _ _ _ A _ _ U

D K S N S J S D O Q O B D C U Q
_ _ O _ O _ O _ L A L _ _ _ _ A

Puesto que el anlisis de frecuencias nos dice que la D es la letra que ms aparece,
probaremos a corresponderla con la letra E:

D O N Q O N H O S D G X Q K C H
E L C A L C U L O E _ _ A _ _ U

D K S N S J S D O Q O B D C U Q
E _ O _ O _ O E L A L _ E _ _ A

Fijndonos en que la K y la C son las siguientes letras con mayor frecuencia, y


que de entre las no utilizadas del alfabeto, la S y N son las siguientes que tienen ms
frecuencia en espaol. Probando se llega a que la K va a la N, y la C a la B.

D O N Q O N H O S D G X Q K C H
E L C A L C U L O E _ _ A N B U

D K S N S J S D O Q O B D C U Q
E N O _ O _ O E L A L _ E B _ A

108 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Llegados a este punto, somos capaces de adivinar que lo que pone el mensaje es:
EL CALCULO ES TAN BUENO COMO EL ALGEBRA

Ejercicio 1.6: Interceptamos cuatro mensajes cifrados. Sabemos que tanto


los mensajes en claro como los mensajes cifrados han sido escritos utilizando el
alfabeto ingls de 26 letras. Las frecuencias con que cada letra aparece en cada
mensaje son las siguientes:

Cules de los mensajes es razonable pensar que han sido cifrados utilizando
sustituciones simples sobre letras?

Hecho por Pedro. Se aceptan correcciones.


Lo nico que podemos hacer es fijarnos en las frecuencias de las diferentes letras y
ver en qu mensajes las letras tienen unas frecuencias similares a las del ingls.
Basndonos en la tabla de frecuencias de moodle podemos agrupar las letras del
alfabeto ingls segn la frecuencia con que se usan (en ingls y en cada uno de los
mensajes interceptados).
Si la columna de un mensaje se asemeja a la segunda columna, ese mensaje tendr
alta probabilidad de haber sido cifrado empleando una sustitucin simple sobre letras.

Porcentaje No Ingles No M1 No M2 No M3 No M4
0-2 10 2 9 12 0
2-4 6 3 4 3 5
4-6 1 8 5 3 7
6-8 7 6 1 3 8
8-10 1 5 3 2 5
>10 1 2 3 2 1

Antes de nada hay que comentar que no sabemos qu longitud tena cada mensaje
por lo que tampoco sabemos cmo de vlidas son las frecuencias calculadas. Por ello
se ha tomado la decisin de agrupar las frecuencias por valores.

109 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Si sabemos que cada mensaje era un Los Pilares de la Tierra en ingls y cifrado,
tendremos unas estimaciones de la frecuencia de cada letra muy muy buenas, por lo
que podramos agrupar las frecuencias por unidades.
El primer y el ltimo mensajes tienen muy pocas letras con baja frecuencia y
demasiadas con frecuencia 8-10 por lo que parece razonable descartar la posibilidad de
que hayan sido escritos en ingls.
Entre el segundo y el tercero, el que ms posibilidades tiene de haber sido escrito
originalmente en ingls es el tercero, pues el segundo tiene muy pocas letras con
frecuencia 6-8 y quizs demasiadas con frecuencias altas.
Para el espa experto otra posibilidad sera estudiar la media y la varianza de la
distribucin de frecuencias en cada mensaje y apoyarse tambin en eso a la hora de
tomar la decisin.

Ejercicio 1.7: En un alfabeto de 28 letras, las 27 del castellano y el espa-


cio=27, utiliza la clave afn sobre letras f (m) = 13m + 9 para cifrar el mensaje
MUY BIEN.

Hecho por Jorge. Se aceptan correcciones.


Utilizamos el _ para representar el espacio y que este se vea claro.

f (M U Y _BIEN 00 ) = SXT RP W _E 00

Ejercicio 1.8: Sabemos que el enemigo est utilizando transformaciones


afines sobre letras para cifrar mensajes escritos en ingls con el siguiente alfabeto
de 37 letras: los nmeros 0,...,9 que se codifican como ellos mismos; las letras
A,. . . ,Z (con W, sin ), que corresponden a 10,. . . ,35; y el espacio en blanco=36.
Interceptamos el siguiente mensaje cifrado
OH7F86BB46R3627O266BB9 (Atencin, no hay ceros, slo os)
Sabiendo que el mensaje original acaba con la firma 007 (cero, cero, siete),
qu dice el mensaje?

Hecho por Jorge. Se aceptan correcciones.


La transformacin afn ser de la forma:

fa,b (x) = ax + b

Luego planteando un sistema de ecuaciones obtenemos a y b, sabemos que B=11:

fa,b (11) = a 11 + b = 0

fa,b (9) = a 9 + b = 7

110 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

b = 11a = 26a

Luego
9a + 26a = 35a = 7 = a = 15 = b = 20

Aplicando fa,b al mensaje cifrado se obtiene:

AGENT 006 IS DEAD 007

Ejercicio 1.9: Una unidad de texto (en claro) m se dice que es fija para
una transformacin para cifrar si f (m) = m. Supongamos que estamos usando
transformaciones afines sobre letras en un alfabeto de N letras, f (m) = a m + b
con a 6= 1.

1. Demostrar que si N es primo hay exactamente una letra fija.

2. Demostrar que para N arbitrario cualquier transformacin lineal (es decir, con
b = 0) tiene al menos una letra fija, y que si N es par cualquier transformacin
lineal tiene al menos dos letras fijas.

3. Dar un ejemplo de una transformacin afn (para algn N) sin letras fijas.

Hecho por Jorge. Se aceptan correcciones.

1. m = am+b = (a1)m+b = 0 = m = (a1)1 b. En caso de que


N sea primo sabemos que existe (a 1)1 , ya que en ese caso U (Z/N ) = Z/N
y por tanto (a 1) U (Z/N ). As que m es nico al quedar determinado por
el producto de (a 1)1 y b.

2. En caso de que f (m) = a m sabemos que siempre tendremos la letra fija


asociada al 0 (ya que f (0) = 0) independientemente de qu N tengamos.
Si f (m) = a m con N par (N = 2M ), se cumple, adems, que f (M ) = M ,
ya que

f (M ) = M aM = M (a 1)M = 0 2M |(a 1)M

Y puesto que a debe ser unidad en Z2M , debe ser coprimo con 2M y, por tanto,
impar. Por tanto, es claro que (a1) ser par y, efectivamente (a1)M = k2M

3. Para N = 2 la transformacin f (x) = x + 1 no deja letras fijas.

111 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 1.10: Sea A un anillo conmutativo con 1. Diremos que a A es


un divisor de 0 si existe b A, b 6= 0 y tal que ab = 0 (con esta definicin, que
no es la normal, 0 es un divisor de 0, pero no importa, simplifica los enunciados).
Diremos que a A es una unidad si existe b A tal que ab = 1.
a) Demostrar que {Unidades de A} {Divisores de 0 en A} =
b) Dado a A, definimos la aplicacin multiplicar por a, ma : A 7 A
como ma (x) = ax. Caracterizar los divisores de 0 (o quiz los no divisores de 0)
y las unidades de A en trminos de propiedades de la correspondiente aplicacin
ma .
c) Utilizar la caracterizacin anterior para demostrar que si A es un anillo finito
se tiene:

{Unidades de A} {Divisidores de 0 en A} = A

(Esto generaliza lo que sucede en los anillos de congruencias Z/N Z.)


d) Demostrar que la hiptesis de finitud es esencial en el apartado 3.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Supongamos que tenemos un elemento x que es unidad y divisor de 0 simultnea-
mente.
En ese caso tendramos que existen dos nmeros a y b, ambos distintos de 0, tales
que: ax = 0 y bx = 1
En esta situacin podemos tomar la ecuacin bx = 1 y multiplicar por a a ambos
lados, con lo que mantenemos la igualdad, obteniendo:

bx = 1 abx = a axb = a 0 b = a 0 = a

Con lo que llegamos a una contradiccin, pues dijimos que a 6= 0

Apartado b)
Si tenemos que a es un divisor de 0, habr algn valor (distinto de 0) que nos
llevar a 0, con lo que la funcin fa no ser inyectiva.
A raz de esto podemos ver que si a no es un divisor de 0, la funcin ma (x) = ax
ser inyectiva. Para comprobarlo basta con ver que:

x 6= y, ax = ay = a(x y) = 0 = a divisor de 0 ya que x y 6= 0

lo que nos lleva a una contradiccin.


Por otro lado, si a es una unidad, la funcin ser sobreyectiva pues tendremos:

y ax = y = x = ya1 = x  ma (x) = y

112 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Adems, de esta misma frmula podemos deducir que si no es unidad, no ser


sobreyectiva la funcin (no podremos llegar al 1, por ejemplo)

Apartado c)
Si tenemos un elemento a A que no es unidad ni divisor de 0 en A, tendremos
que la funcin asociada ma ser inyectiva pero no sobreyectiva.
Si una funcin entre dos conjuntos finitos es inyectiva pero no sobreyectiva, esto
implica que el conjunto de partida es menor que el de llegada. Pero por definicin, la
funcin ma va de un conjunto en si mismo, con lo que es imposible que sea inyectiva
y no sobreyectiva.
Por tanto es imposible que exista un a como el que hemos definido. Es decir,
tenemos demostrado que

{Unidades de A} {Divisidores de 0 en A} A

El otro sentido del contenido es trivial por la propia construccin del conjunto de
unidades y de los divisores.

Apartado d)
Si A se tratase del anillo (Z, +, ), dado a = 2 podemos construir una aplicacin
ma que, como se prob en el apartado anterior, sera inyectiva pues 2 no es divisor de
0.
Sin embargo, al no ser un cuerpo finito no hay problema en que una funcin vaya
de un anillo en si mismo siendo inyectiva pero no sobreyectiva. Por tanto no podramos
deducir ninguna relacin de contencin.
Hecho por Edu. Se aceptan correcciones.

Apartado a)
Supongamos x Unidades de A y y 6= 0  xy = 0, ie, x Divisores de 0 en A:

x y = 0 = x1 x y = 0 = y = 0

Conclusin: si x Unidades de A = x 6 Divisores de 0 en A


Supongamos x Divisores de 0 en A, ie, y 6= 0  x y = 0 y supongamos
z 6= 0  x z = 1:

x z = 1 = y x z = y 1 = 0 z = y = 0 = y

Conclusin: si x Divisores de 0 en A = x 6 Unidades de A

Apartado b)
Si ma es inyectiva (y por ser A finito entonces es sobreyectiva)
= x, y 6= 0 A, ma (x) = xa = ya = ma (y) = x = y = a unidades
de A ya que, al ser sobreyectiva, y A  a y = 1.

113 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Si ma no es sobreyectiva, ie, GCD(ma, |A|) > 1 para algn a, x, y A, x 6= y 


a x = a y = a(x y) = 0 = a es divisor de 0.

Apartado c)
Como observacin, diremos que si la afirmacin es falsa, por el apartado 1, tiene
que existir un x que no pertenece a ninguno de los dos subconjuntos de A, lo cual es
imposible por el apartado anterior: si ma es inyectiva, entonces a es unidad, si ma no
es sobreyectiva, a es divisor de 0.

Apartado d)
Leer la parte negrita del apartado B y convencerse de que no tiene por qu existir
el inverso de a.

A.2. Control 1 (22-09-2014) Modelo A

Ejercicio 2.1: Dado N 2 y un elemento a ZN , consideramos la


aplicacin ma : ZN
7 ZN tal que m(x) = ax.
Demostrar que son equivalentes:

1. a es unidad en ZN

2. a y N son primos entre si.

3. ma es inyectiva

4. ma es sobreyectiva

Hecho por Pedro. Se aceptan correcciones.


Para demostrar que los enunciados son equivalentes vamos a demostrar una serie
de implicaciones de modo que, al final, desde cualquiera de esas afirmaciones podamos
llegar a cualquier otra.

1 = 2 Si a es una unidad en ZN sabemos que existe c ZN tal que


ac = kN + 1

Supongamos ahora que a y N no son primos entre si, es decir,


b  a = b a0 y N = b N 0

En ese caso tenemos:


b|ac y b|kN = b|1
lo que nos lleva a contradiccin, por lo que queda claro que (a, N ) = 1.

114 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

2 = 1.
Teniendo que (a, N ) = 1 el teorema de Bezout nos garantiza la existencia de c,
k tales que:
ac + kN = 1
que es equivalente a escribir:

ac = 1 mod N

lo que nos garantiza que a U (ZN ) pues hemos encontrado su inverso, c.

1 = 3
Supongamos que existen x, y ZN tales que ma (x) = mb (x). En este caso
tenemos:
ax = ay mod N = a(x y) = 0 mod N
multiplicando por el inverso de a a ambos lados y sabiendo que a1 = 0 tenemos:

xy =0 mod N = x = y mod N

As hemos demostrado que:

x, y ZN ma (x) = mb (y) = x = y mod N

es decir, hemos demostrado la inyectividad de la funcin.

3 = 4 Como estamos movindonos en un conjunto finito, si la funcin es


inyectiva debe ser tambin sobreyectiva.

4 = 1
Si la funcin es sobreyectiva, entonces

c ZN b ZN  ab = c

en concreto esto es cierto para c = 1 y por tanto a tiene inverso, es decir,


pertenece a las unidades de ZN

Ejercicio 2.2: En un idioma que se escribe usando el mismo alfabeto que


el ingls (26 letras), las letras ms frecuentes son B(20 %) y Z(13 %), sin que
ninguna de las dems letras tenga una frecuencia superior al 5 %
Interceptamos un texto escrito en este idioma que ha sido cifrado usando un
criptosistema afn sobre las letras vistas como elementos de Z26 . Las letras ms
frecuentes en el mensaje cifrado resultan ser, por este orden, H y D.
Qu letra en claro diras que corresponde con la E cifrada?

115 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Edu. Se aceptan correcciones.


Revisado por Pedro. Se siguen aceptando correcciones
Vamos a calcular directamente la funcin de descifrado, que ser de la forma
f (m) = m + . Sustituyendo los datos que tenemos nos queda el sistema:

7 + = 1
= 4 = 24 = 2
3 + = 25

Puesto que 26 = 213, el sistema de ecuaciones se mantiene si trabajamos mdulo


13 o mdulo 2.
As, trabajando mdulo 13 podemos escribir:

(
7 + = 1 mod 13 4 = 2 = = 20 mod 13 = 7 mod 13
=
3 + = 1 mod 13 = 22 mod 13 = 4 mod 13
y trabajando mdulo 2:
(
+ =1 mod 2
= y tienen paridades opuestas.
+ =1 mod 2

Por lo tanto tenemos como posibles soluciones = 7, = 4, = 7 + 13 =


20, = 17 que no es vlida ya que debe ser invertible y 20 es divisor de 0. Luego
= 7, = 4.
Ahora podemos descifrar la letra E obteniendo:
f (E) = f (4) = 7 4 + 4 = 32 = 6 = G

A.3. Hoja 2

Ejercicio 3.1: El enemigo escribe en ingls y, para cifrar sus mensajes,


utiliza transformaciones afines sobre digrafos en el siguiente alfabeto de 30 letras:
las letras A,...,Z (con W, sin ) corresponden a 0,...,25; el espacio=26; ?=27;
!=28; =29. Interceptamos el siguiente mensaje cifrado:

DXM SCE DCCUVGX

Un anlisis de frecuencias sobre texto interceptado con anterioridad muestra


que los digrafos ms frecuentes son, por este orden, M , U e IH.
En ingls escrito con este alfabeto los digrafos ms frecuentes son, por orden,
E , S y T.
a) Encuentra la clave para descifrar y lee el mensaje.
b) Encuentra la clave para cifrar y cifra el mensaje YES IM JOKING!

116 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
La funcin que emplearemos para descifrar el mensaje ser de la forma: f (m) =
m + siendo una matriz 2x2.
As podemos plantear el sistema de ecuaciones:

386 + = 146
= 240 = 420
626 + = 566

Ahora debemos calcular el inverso de 240 mdulo 302 = 900 pero 240 no es coprimo
con 900 por lo que no ser invertible.
Vamos a emplear el tercer par de letras ms frecuentes para intentar plantear un
sistema que podamos resolver. As llegamos a

386 + = 146
= 761 = 653
247 + = 799

Empleamos ahora el algoritmo de Euclides para calcular el inverso de 761 en Z900


900 = 761 + 139 1=723
761 = 5 139 + 66 3 = 66 9 7 = 1 = 19 7 2 66
139 = 2 66 + 7 = 7 = 139 2 66 = 1 = 19 139 40 66
66 = 9 7 + 3 66 = 761 5 139 = 1 = 40 761 + 219 139
7=23+1 139 = 900 761 = 1 = 219 900 259 761

As tenemos que el inverso de 761 es -259 = 641 con lo que podemos calcular
= 641 653 = 73 = = 768

Ahora podemos descifrar el mensaje llegando a:

ARE YOU JOKING?

Apartado b)
En esta ocasin debemos resolver el sistema de ecuaciones:

146 + = 386
= 653 = 761
799 + = 247
Empleamos ahora el algoritmo de Euclides para calcular el inverso de 653.
900 = 653 + 247 1=32
653 = 2 247 + 159 2 = 17 5 3 = 1 = 6 3 17
247 = 159 + 88 3 = 71 4 17 = 1 = 6 71 25 17
159 = 88 + 71 17 = 88 71 = 1 = 25 88 + 31 71
=
88 = 71 + 17 71 = 159 88 = 1 = 31 159 56 88
71 = 4 17 + 3 88 = 247 159 = 1 = 56 247 + 87 159
17 = 5 3 + 2 159 = 653 2 247 = 1 = 87 653 230 247
3=2+1 247 = 900 653 = 1 = 230 900 + 317 653

117 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por tanto el inverso de 653 es 317. Gracias a ello podemos calcular

= 317 761 = 37 = = 384

Por ltimo, solo nos queda cifrar el mensaje usando esta funcin, con lo que obte-
nemos

VQKCAVICN MIQM

Hecho por Jorge. Se aceptan correcciones.


Si la funcin de descifrado del apartado (a) es:

f (c) = c + = m

Tendremos que la de cifrado ser:

f 1 (m) = 1 m 1 = c

Echando cuentas (las he hecho con el ordenador :) ) se llega al mismo resultado


que Pedro.

Ejercicio 3.2: Ciframos un mensaje utilizando una transformacin afn sobre


n-grafos en un alfabeto de N letras vistos como elementos de ZN n . Escribimos el
texto original como m1 m2 m3 ... y el cifrado como c1 c2 c3 ..., donde cada mi , ci es
una letra.
a) Demuestra que cin depende slo de min , esto es, que cada n-sima letra
cifrada depende slo de la correspondiente letra sin cifrar.
b) Utiliza la observacin anterior para explicar cmo alguien que intercepte el
mensaje, que sepa que la clave es afn en n-grafos, pero que desconozca n, puede
utilizar el ndice de coincidencia para averiguar la longitud de la clave.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Cuando ciframos un mensaje agrupamos las letras a cifrar en bloques, en este caso
de longitud n. Es evidente que ci no depender de aquellas mj que no pertenezcan al
bloque cifrado.
Supongamos que ciframos las letras m1 , ..., mn . En este caso, la relacin entre las
letras sin cifrar y las cifradas queda representada por la ecuacin:
n
X n
X
mi N ni + = ci N ni mod N n
i=1 i=1

Pero la nica posibilidad de que esas ecuaciones coincidan es que mi = ci , i 6=


N y mN + = cN .

118 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Observacin: En el fondo estamos escribiendo nmeros en formato n ario. La


nica forma de que dos nmeros en la misma base sean iguales es que los coeficientes
sean iguales. Vase los casos a los que estamos acostumbrados como base 10 o base
2.
Hecho por Jorge. Se aceptan correcciones.
Sabemos que la cadena de letras m1 m2 . . . mn la codificamos como N n1 m1 +
N n2 m2 + . . . + N mn1 + mn = ni=1 N ni mi .
P

De modo que al pasar una cadena de este tipo por una funcin afn nos queda:

n
X X n
i
c1 . . . cn = f (m1 . . . mn ) = f N
n
N mi = N
n
N i mi +
i=1 i=0

Puesto que estamos en ZN n tendremos (escribiendo tambin la secuencia codificada


en forma de suma):
Xn X n
i
N mi + = N i ci
i=0 i=0
Pn
Expresando en forma de suma = i=0 N i i :
n
X n
X
N i (mi + i ) = N i ci
i=0 i=0

Para el caso particular n = 0 se tiene que m0 + 0 = c0 , y se ve que c0 es funcin


afn de m0 . Procediendo por induccin llegamos a que cada ci es funcin afn del mi
correspondiente. Es decir, para n = 1:

N 1 (m1 + 1 ) + (m0 + 0 ) =
= N 1 (m1 + 1 ) + c0 =
|{z} N 1 c1 + c0
por como est definifaf

Volvemos a ver que c1 es funcin afn de m1 , y a medida que pongamos ns mayores


obtenemos lo mismo (induccin).Demostracin del profesor

Apartado b)
Puesto que cada letra depende nicamente de la letra que ocupa su misma posicin
en el menaje original, nos encontramos ante la misma situacin que en Criptosistema
de Vigenre visto en clase y, de la misma forma, podramos apoyarnos en el ndice
de coincidencia para encontrar N .

Ejercicio 3.3: Interceptas el mensaje, escrito en ingls, !IWG-


VIEX!ZRADRYD que se ha cifrado usando una transformacin lineal sobre vec-
tores de Z229 , donde los nmeros del 0 al 25 equivalen a las letras de la A a la Z,

119 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

el espacio es el 26, 27 = ? y 28 = !. Sabemos que la ltimas 5 letras del mensaje


son la firma, MARIA.
a) Descifra el mensaje
b) Encuentra la matriz para cifrar y, hacindote pasar por JO, que es la amiga
a quien escriba Mara, enva cifrado el siguiente mensaje: DAMN FOG! JO

Hecho por Jorge. Se aceptan correcciones.


Revisado por Carolina. Se siguen aceptando correcciones
Apartado a)
Nos serviremos de que ADRYD es la codificacin de MARIA, y de que el mensaje
se cifra a pares. De modo que para obtener la matriz A para decodificar usaremos que
f (DR) = AR y f (Y D) = IA.
! ! !
a b 3 0
=
c d 17 17
! ! !
a b 24 8
=
c d 3 0

De estas matrices obtenemos los dos sistemas de ecuaciones:


(
3a + 17b = 0
24a + 3b = 8

(
3c + 17d = 17
24c + 3d = 0

Solucionando el primer sistema (restando la segunda a 8 veces la primera):

17b = 8 = 17b = 21 = b = 20 = a = 22

Solucionando el segundo sistema (restando la segunda a 8 veces la primera):

17d = 20 = d = 8 = c = 1 = 28

De modo que tendremos: !


22 20
A=
28 8

Si desciframos el mensaje usando A se obtiene:

f (!IW GV IEX!ZRADRY D00 ) = W HY N O GO? M ARIA00

Apartado b)

120 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Para obtener la matriz con la que cifrar, tenemos que encontrar la inversa de A.
Haciendo clculos se obtiene que det(A) = 22 = 221 = 4, y por tanto:
!T !
1 8 1 3 7
A1 = Adj T (A) = 4 =
det(A) 9 22 4 1

Haciendo uso de A1 para cifrar, se obtiene (la barra baja es un espacio):

f (DAM N _F OG!_JO00 ) = JM LD_W _EF W JV 00

Ejercicio 3.4: Interceptas el mensaje, escrito en ingls, KVW? TA!KJB?FVR


(ojo, acaba con un espacio en blanco) que se ha cifrado usando una transforma-
cin lineal sobre vectores de Z230 , donde los nmeros del 0 al 25 equivalen a las
letras de la A a la Z, el espacio es el 26, 27 = ?, 28 = ! y 29 es el punto. Descifra
el mensaje sabiendo que empieza con las 6 letras C.I.A.

Hecho por Pedro. Se aceptan correcciones.


Sabiendo que la funcin de descifrado ha transformado las letras KV W ?T en
C.I.A. podemos plantear la siguiente ecuacin:
! ! !
a b 10 22 2 8
=
c d 21 27 29 29

El determinante de la matriz que aparece multiplicando a nuestra matriz descono-


cida es 10 27 22 21 mod 30 = 18 que no es coprimo con 30, por lo que la matriz
no es invertible.
No obstante, tenemos informacin acerca de 6 letras, no solo 4, por lo que podemos
plantear ecuaciones diferentes. As, teniendo en cuenta el descifrado de las letras C.A.
tenemos: ! ! !
a b 10 26 2 0
=
c d 21 19 29 29

Aunque en este caso seguimos sin poder calcular la inversa de la matriz pues su
determinante es: 10 19 21 26 = 4, que no es coprimo con 30.
Lo mismo ocurre si trabajamos con las letras I.A. pues obtenemos una matriz con
determinante 22 19 27 26 = 16, que tampoco es coprimo con 30.
Por tanto, tenemos que pensar un poco ms. Tomamos la ltima ecuacin matricial
mencionada: ! ! !
a b 10 26 2 0
=
c d 21 19 29 29

121 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Vamos a trabajar mdulo 15, as podremos invertir la matriz, puesto que 4 y 15


son coprimos. Con esto obtenemos:
! ! !1 ! ! !
a b 2 0 10 26 2 0 4 4 2 2
A= = = 4 =
c d 29 29 21 19 14 14 9 10 8 4

Es decir, ya sabemos a qu es igual la matriz A mdulo 15.


Por otro lado, el sistema matricial del que partimos tambin ser cierto si trabaja-
mos mdulo 2, es decir,
! ! !
a b 0 0 0 0
=
c d 1 1 1 1

Gracias a esto, aunque no podemos calcular A mdulo 2, podemos ver que:



a 0 + b 1 = 0 = b = 0
c 0 + d 1 = 1 = d = 1

Puesto que A es invertible mdulo 30, lo ser tambin mdulo 2. Por tanto a, c no
pueden tener un valor cualquiera, deben ser tales que la matriz:
!
a 0
A=
c 1

sea invertible.
Una vez sabemos esto hay dos posibilidades para la matriz A mdulo 2, que dan
lugar a dos posibilidades para la matriz A mdulo 30. Estas posibilidades son:
! !
1 0 17 2
A= mod 2 = A =
0 1 8 19
! !
1 0 17 2
A= mod 2 = A =
1 1 23 19

Ahora slo nos queda probar a descifrar con ambas matrices y comprobar cul nos
da un resultado razonable.
Si probamos con la primera el mensaje obtenido es C.I.A. WILLLHTLA, mientras
que al probar con la segunda se obtiene un mensaje con sentido C.I.A. WILL HELP.
De modo que la segunda matriz es la correcta.

Ejercicio 3.5: Interceptamos el mensaje, escrito en ingls, S GN-


LIKD?KOZQLIOMKUL.VY que se ha cifrado usando una transformacin lineal
sobre vectores de Z230 donde 0...25 equivalen a las letras A...Z , 26 es el espacio
en blanco, 27 el punto, 28 la coma y 29 el cierre de interrogacin. Sabes que las

122 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

ltimas 6 letras corresponden a la firma: KARLA. (el punto es parte del mensaje).
Descifra el mensaje.

Observacin: Quizs interese empezar por calcular la matriz mdulo 3 y mdulo


10 para despus emplear el Teorema Chino del Resto.

Hecho por Jorge. Se aceptan correcciones.


El procedimiento a seguir ser el mismo del ejercicio anterior as que ahorraremos
dar demasiadas explicaciones.
Planteamos el sistema matricial:
! ! !
a b 10 11 10 17
=
c d 20 27 0 11

Tratamos de despejar la matriz de descifrado, A, pero la matriz que la multiplica


tiene determinante 20 que no es coprimo con 30 y por tanto no podemos despejar.
El determinante tampoco es coprimo con 15, ni con 10, por lo que no podremos
repetir lo que hicimos en el ejercicio anterior. Tendremos que tomar otros dos pares de
letras para plantear el sistema matricial, obteniendo:
! ! !
a b 10 21 10 0
=
c d 20 24 0 27

En esta ocasin la matriz que multiplica a A tiene determinante 0 por lo que no


podemos trabajar con ella. Vamos a plantear la ltima ecuacin matricial posible.
! ! !
a b 11 21 17 0
=
c d 27 24 11 27

En esta ocasin obtenemos que el determinante de la matriz que acompaa a A es 27,


que es coprimo con 10.
Por tanto, puesto que la ecuacin matricial se mantiene si pasamos a trabajar
mdulo 10, podemos escribir:

! ! !1 ! ! !
a b 7 0 1 1 7 0 2 7 4 9
= = = mod 10
c d 1 7 7 4 1 7 9 3 5 8

Lo siguiente es plantear el mismo sistema en mdulo 3:


! ! !
a b 2 0 2 0
= mod 3
c d 0 0 2 0

123 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

De esta igualdad se deduce que la matriz A tiene el siguiente aspecto en mdulo


3: ! !
a b 1 ?
= mod 3
c d 1 ?

En un principio podramos pensar que hay 9 posibles matrices que podamos usar,
pero esto no es cierto ya que las matrices han de ser invertibles mod 3. Como 3 es
primo, para ver si es invertible nos basta con ver que el determinante sea 6= 0.!Teniendo
a b
esto en cuenta, se consigue que las distintas posibilidades de A = mod 3
c d
son:

! ! ! ! ! !
1 0 1 1 1 0 1 2 1 1 1 2
, , , , ,
1 1 1 0 1 2 1 0 1 2 1 1

Estas son las 6 posibles matrices con las que podemos levantar A en mod 30.
Vamos a probar una a una y ver si el mensaje pasa a tener sentido tras descifrar:
! !
1 0 4 9
Si tenemos mod 3, y mod 10. Sabiendo que si A es
1 1 25 28
solucin mod 10, A + k 10 tambin ser solucin:
! ! !
a b 4 9 4 9
A= = = mod 30
c d 5 + 20 8 + 20 25 28

Esta matriz parece ser la buena, pues satisface los 3 sistemas propuestos al principio
del ejercicio. Adems si desciframos el mensaje sirvindonos de ella, obtenemos que el
mensaje original es:

GIVE THE PLANS TO KARLA.

124 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Observacin: Nos habramos ahorrado el probar con todas las matrices buscando un
sistema en el que la matriz fuera invertible mod 3.

Ejercicio 3.6: Interceptamos el mensaje, escrito en castellano, que se ha


cifrado usando una transformacin afn sobre vectores de Z230 , donde 0,...,26 equi-
valen a las letras A,...,Z, 27 es el espacio en blanco, 28=., 29=?, y para el que
sabes que el mensaje original est firmado por BAROJA. (con espacio al princi-
pio y punto al final). Encuentra las posibles funciones para cifrar, fA,B si el mensaje
cifrado termina con Z.MBGPCB

Hecho por Pedro. Se aceptan correcciones.


La funcin buscada ser de la forma f (m) = Am+B siendo m, B vectores columna
de dos coordenadas y A una matriz de orden dos.
Con los datos que tenemos vamos a tratar de plantear un sistema de ecuaciones
matriciales con el que podamos trabajar:
! !

27 0 26 12
A +B =


1 18 28 1
! !

15 0 6 2

A +B =

9 28 16 1

Para resolver este choricito tiramos de Sage:

var(a1,a2,a3,a4,b1,b2)

solve_mod([a1*27+a2+b1 == 26, a2*18+b1==12, a3*27+a4+b2==28, a4*18+b2==1,


a1*15+a2*9+b1 == 6, a2*28 + b1 == 2, a3*9+a4*28 +b2 == 16, a4*28+b2 == 1],
30)

SOL:

[(6, 14, 15, 24, 0, 19), (6, 14, 25, 24, 0, 19), (6, 14, 5, 24, 0, 19),
(16, 14, 15, 24, 0, 19), (16, 14, 25, 24, 0, 19), (16, 14, 5, 24, 0, 19),
(26, 14, 15, 24, 0, 19), (26, 14, 25, 24, 0, 19), (26, 14, 5, 24, 0, 19),
(21, 29, 15, 24, 0, 19), (21, 29, 25, 24, 0, 19), (21, 29, 5, 24, 0, 19),
(1, 29, 15, 24, 0, 19), (1, 29, 25, 24, 0, 19), (1, 29, 5, 24, 0, 19),
(11, 29, 15, 24, 0, 19), (11, 29, 25, 24, 0, 19), (11, 29, 5, 24, 0, 19)]

A continuacin mostramos la solucin del profesor


Empezamos planteando la ecuacin:
! !
27 0 15 0 26 12 6 2
A + [B, B, B, B, B, B] =
1 18 9 28 | {z } 28 1 16 1
B

125 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

El problema es que no hay forma de trabajar con estos datos en mdulo 30. Lo
que vamos a hacer es transformar este problema1 en tres problemas que si podremos
resolver: mdulo 3, 5 y 2.
Si reducimos la ecuacin a mdulo 5 tenemos:
! !
2 0 0 0 1 2 1 2
A + B =
1 3 4 3 3 1 1 1

Si extraemos ecuaciones tomando slo dos columnas de las matrices que hemos
escrito podemos llegar al sistema matricial:
   
A 03 + B = 21
   
0 4
    = A =
A 04 + B = 11
1 0

Con lo que ya conocemos la segunda columna de A mod 5.


Llevando a cabo un procedimiento que me he perdido llegamos a calcular la primera
columna de la matriz A mod 5 con lo que nos queda:
!  
1 4 0
A= mod 5, B = mod 5
1 0 1

Si trabajamos mdulo 3 llegamos al sistema:


! !
0 0 0 0 2 0 0 2
A + B =
1 0 0 1 1 1 1 1

Atendiendo a la segunda y tercera columnas de la matriz del texto descifrado


podemos ver fcilmente que
     
0 1 0
A +B = = B = mod 3
0 0 1

De forma similar podemos encontrar la segunda columna de A mod 3


         
0 1 2 0 2
A + = = A = mod 3
1 0 1 1 0

Sabiendo que la primera columna de A mod 3 no puede ser mltiplo de su segunda


columna vemos que tenemos un total de 6 posibilidades para A mod 3.
Por ltimo, si trabajamos mdulo 2 llegamos al sistema:
! !
1 0 1 0 0 0 0 0
A + B =
1 0 1 0 0 1 0 1
1
Nos apoyamos en el teorema chino del resto que nos permite conocer la solucin mdulo 30 si
la conocemos mdulo los primos en que factoriza 30

126 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Igual que cuando trabajamos en mdulo 3, podemos ver fcilmente que:


     
0 1 0
B= , A =
1 1 1

El vector columna (1, 1) puede considerarse un elemento de una base. Si llevsemos


la matriz a esa base, tendramos una de las columnas determinada y slo tendramos
dos opciones para la otra columna. Por tanto, ya tenemos la matriz A mod 2 reducida
a dos posibilidades:
! !
1 1 1 1
A=
0 1 1 0

Procedemos ahora a combinar todos los datos recogidos hasta ahora.


Tenemos un total de 12 posibles combinaciones de valores de A en diferentes
mdulos, por lo que tendramos un total de 12 posibles formas de calcular A mod 30
empleando el teorema chino del resto.
Como lo que nos queda por hacer es slo cuestin de cuentas, vamos a calcular
slo una de esas doce matrices.

! ! !
1 1 0 2 1 1
A= mod 5, mod 3, mod 2
1 0 2 0 0 1

Por la cuenta de la vieja llegamos a que:


!
21 29
A= mod 30
26 15

Ejercicio 3.7: Calcula el nmero de transformaciones afines (matriciales)


que existen sobre un alfabeto de N = 26, 27, 28, 29, 30 letras si utilizamos como
unidades de mensaje una sola letra, digrafos o trigrafos vistos como vectores, esto
es, como elementos de ZnN

Hecho por Pedro. Se aceptan correcciones.

n=1 Estaremos empleando una funcin de cifrado de la forma

f (m) = m + , , ZN

Por tanto tendremos un total de N posibles valores para .


Para la necesitamos encontrar valores que sean invertibles, es decir, coprimos
con N 2 . En concreto tenemos:
2
Para calcular el nmero de coprimos con N podemos emplear la funcin de Euler

127 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

N=26
12 26 = 312
N=27
18 27 = 486
N=28
12 28 = 336
N=29
28 29 = 812
N=30
8 30 = 240

n=2
En esta ocasin tendremos que encontrar matrices cuadradas de orden 2 con
todos sus elementos en ZN y que sean invertibles.
Lo que haremos ser emplear los mtodos visto en teora que nos permiten
calcular el nmero de matrices invertibles en ZN segn el valor N .
Siendo : Z 7 Z la funcin que nos da el nmero de matrices invertibles de
orden 2 con coeficientes en ZN tenemos:

N=26

(26) = (13) (2) = 157248


N=27
(27) = (32 )4 48 = 314928
N=28
(28) = (7) (4) = 2016 24 6 = 193536
N=29
(29) = 682080
N=30
(30) = (2)(5)(3) = 138240

n=3 Ahora debemos calcular cuntas matrices hay invertibles de orden 3 con
coeficientes en ZN
Lo que haremos ser emplear los mtodos visto en teora que nos permiten
calcular el nmero de matrices invertibles en ZN segn el valor N .
Siendo : Z 7 Z la funcin que nos da el nmero de matrices invertibles de
orden 3 con coeficientes en ZN tenemos:

N=26
(26) = (13)(2) = 1634038189056
N=27
(27) = (33 ) = (32 )9 (3) = 4351506932448

128 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

N=28
(28) = (7)(4) = 6129792184320
N=29
(29) = 13989670880640
N=30
(30) = (3)(2)(5) = 2807820288000

Ejercicio 3.8: Supongamos que estamos cifrando usando transformaciones


lineales (es decir, transformaciones de Hill) dadas por matrices A GL2 (ZN ) con
A 6= I. Un vector digrafo m = m 1
m2
se dice que es fijo para A si Am = m
a) Demuestra que el digrafo AA es siempre fijo, y encuentra una condicin
sobre la matriz A que sea equivalente a que AA no sea el nico digrafo fijo.
b) Si N es primo, y si AA no es el nico digrafo fijo, demuestra que hay
exactamente N digrafos fijos.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
La primera afirmacin es evidente si entendemos lo que nos piden.
La funcin de cifrado ser de la forma f (m) = Am donde m es un vector y A
una matriz. Es evidente ver que el vector (0, 0)T siempre pertenecer al ncleo de la
aplicacin A y por tanto f ((0, 0)T ) = (0, 0)T
Los vectores digrafos fijos son aquellos tales que Am = m = (A I)m =
0 = m Ker(A I).
Es decir, habr ms puntos fijos a parte del trivial si y slo si la matriz tiene un
autovalor 1.
El profesor hizo esto mismo en clase considerando que la condicin buscada (que
es equivalente al hecho de que A no tenga autovalor 1) es que la matriz A I sea
inyectiva.
Adems, por estar en un cuerpo finito, A I inyectiva A I biyectiva
A I invertible

Apartado b)
Si tenemos que AA no es el nico digrafo fijo tenemos que existe un digrafo
m= m

1
m2
tal que Am = m.
Es evidente ver que los digrafos m tambin sern fijos, puesto que Am =
Am {z + Am} = m.
| + Am...
veces

En geometra consideramos que dos vectores que son mltiplos uno de otro son el
mismo vector pero esto no es cierto aqu. Es decir, el digrafo AA y el BB no son lo
mismo.

129 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por tanto ya tenemos una forma de generar digrafos fijos a partir de uno dado.
Por ltimo, podemos ver que el procedimiento para generar nuevos digrafos tiene
sentido mientras no volvamos a obtener el digrafo inicial.
Bsicamente tenemos dos elementos de ZN y estamos calculando todos los mlti-
plos posibles. Puesto que sabemos que en el grupo (ZN , +) todo elemento tiene orden
N , sabemos que podremos obtener N mltiplos distintos. 3
Como conclusin queda claro que a partir de un digrafo fijo podemos obtener otro
N 1 digrafos fijos. Es decir, existen al menos N digrafos fijos.
Podramos plantearnos ahora qu ocurrira si existiera otro digrafo fijo. En caso de
ser as tendramos que Am An = A(m n) = m n, es decir, la diferencia entre
el nuevo punto fijo y el que ya tenamos sera un punto fijo.
Si el nuevo punto fijo no fuese de la forma m para algn , tendramos otro grupo
cclico < n > de puntos fijos. Adems, todos los puntos de la forma k = m + n
tambin seran puntos fijos y no seran mltiplo de n ni de m.
Por tanto nos encontraramos ante un total de N 2 puntos fijos, es decir, la aplicacin
sera la identidad.
Una vez suponemos que no es la identidad, puedo que no tendra sentido uns
sistema de cifrado as, vemos que en caso de haber un punto fijo, slo tenemos N
puntos fijos, los mltiplos del mismo.

Ejercicio 3.9: Demuestra que si cifrsemos un mensaje utilizando una


aplicacin lineal dada por una matriz A M2 (ZN ) que no fuese inversible, entonces
cualquier unidad de texto cifrado, es decir, un vector (c1 , c2 ) donde ci son letras,
podra ser el resultado de cifrar al menos dos unidades de mensaje en claro distintas.

Hecho por Pedro. Se aceptan correcciones.


Sabemos que una aplicacin lineal es invertible si y slo si es biyectiva. Por tanto,
en caso de no ser invertible es claro que no es biyectiva.
Por otro lado sabemos que una aplicacin entre conjuntos finitos, como ocurre en
este caso, es biyectiva si y slo si es inyectiva. Por tanto al no ser biyectiva no sera
inyectiva.
Finalmente, si tenemos una aplicacin que no es inyectiva, cualquier vector (c1 , c2 )
podra ser imagen de varios vectores distintos.

Ejercicio 3.10: Sean f1 : M1 7 C1 y f2 : M2 7 C2 dos funciones para


cifrar (o criptosistemas). Si C1 M2 podemos definir el criptosistema producto
mediante la funcin f = f2 f1 . Ms formalmente, si llamamos I = f1 (M1 )
C1 M2 (I=Intermedio), e criptosistema producto lo define la funcin f dada
por la composicin:
f : M1 f1 I f2 C2

3
Esto slo es cierto si N es primo

130 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Supongamos que trabajamos con funciones para cifrar afines fi : Zln 7 Zln
con n y l fijos, que vendrn dadas por fi (m) = Ai m + bi . Demuestra
a) El producto de dos traslaciones es una traslacin
b) El producto de dos funciones de Hill es una funcin de Hill
c) El producto de dos funciones afines cualesquiera es una funcin afn

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Si tenemos dos traslaciones fi (m) = m + bi y estudiamos su composicin tenemos:

f (m) = f2 (m + b1 ) = m + b1 + b2 = m + b3 siendo b3 = b1 + b2

y vemos que, efectivamente, sigue tratndose de una traslacin.

Apartado b)
Si tenemos dos funciones de Hill fi (m) = Ai m y estudiamos su composicin
tenemos:
f (m) = f2 (A1 m) = A2 A1 m = A3 m siendo A3 = A2 A1
y vemos que, efectivamente, sigue tratndose de una funcin de Hill

Apartado c)
Si tenemos ahora dos funciones afines cualesquiera fi (m) = Ai m + bi y estudiamos
su composicin tenemos:

f (m) = f2 (A1 m + b1 ) = A2 (A1 m + b1 ) + b2 = A2 A1 m + A2 b1 +b2 = A3 m + b3


|{z}
b4
| {z }
b3

y vemos que, efectivamente, sigue tratndose de una funcin afn.

Ejercicio 3.11: (Un ejemplo del ejercicio anterior que s introduce algo
nuevo). Escribes en el alfabeto ingls de 26 letras con las equivalencias usuales.
Para aumentar la dificultad de romper tu criptosistema decides cifrar tus mensa- !
3 11
jes escribindolos como vectores digrafos en Z226 , aplicarles la matriz
4 15
!
10 15
mod 26 y luego al resultado aplicarle la matriz pero esta vez traba-
5 9
jando mdulo 29.
As tu mensaje cifrado estar formado por vectores digrafos en Z229 que veremos
como escritos en el alfabeto de 29 letras donde el 26 es el espacio en blanco, 27=?
y 28=!.

131 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

a) Cifra el mensaje SEND


b) Descifra el mensaje ZMOY

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
El proceso de cifrado es sencillo y basta con seguir los pasos descritos en el enun-
ciado. Vamos a ello:
! ! !
3 11 18 13 20 20
=
4 15 4 3 2 19

! ! !
10 15 20 20 27 21
=
5 9 2 19 2 10

Con lo que el mensaje cifrado es ?CVK

Apartado b)
Hecho por Edu. Se aceptan correcciones. Para descifrar debemos calcular la inversa
de las dos matrices y deshacer el proceso.
Puesto que 29 es primo, la segunda matriz es invertible y, puesto que el determi-
nante de la primera es 1, esta tambin lo es. Procedemos a calcular las inversas.

!1 !
3 11 15 15
=
4 15 22 3
!1 !
10 15 18 28
=
5 9 19 20

Procedemos ahora a descifrar el mensaje.


! ! !
15 15 18 28 25 14
=
22 3 19 20 12 24
! ! !
15 15 3 25 18 14
=
22 3 19 21 19 15

Con lo que el mensaje descifrado es STOP

Ejercicio 3.12: (Un criptosistema ligeramente ms complicado). El texto


en claro est escrito en un alfabeto con N letras y el texto cifrado en un alfabeto

132 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

con M letras, M > N . Las unidades de texto en claro sern digrafos vistos como
nmeros de dos cifras en base N , es decir, enteros entre 0 y N 2 1,
Anlogamente, las unidades de texto cifrado sern enteros entre 0 y M 2 1.
Elegimos tres enteros positivos, L, a, b tales que N 2 L M 2 y
m.c.d.(a, L) = 1.
La funcin para cifrar viene dada por f (m) = am + b mod L.
Para ver un ejemplo concreto supongamos que el alfabeto en claro tiene N = 27
smbolos siendo los 26 primeros el alfabeto en ingls y 26= espacio en blanco; y
que el alfabeto cifrado tiene M = 30, aadiendo al anterior 27=?, 28=!, 29=.
Usamos un criptosistema como el descrito con L = 853. Sabemos que los
digrafos en claro ms frecuentes son E y S , que se cifran, respectivamente
como FQ y LE.
Lee el mensaje cifrado YAVAOCHD!

Hecho por Pedro. Se aceptan correcciones.


Por lo pronto sabemos que a es coprimo con L = 853. Por ahora no nos dice nada,
pero quin sabe qu nos deparar el futuro.
Procedemos a calcular la funcin de descifrado, que tendr la misma forma que la
de cifrado aunque con diferentes constantes.

166 + = 134
= 168 = 378 mod 853
334 + = 512

Puesto que 168 es coprimo con 853 podemos calcular su inverso mediante el algo-
ritmo de Euclides. Vamos a ello:
853 = 5 168 + 13 1 = 13 12
168 = 12 13 + 12 = 12 = 168 12 13 = 1 = 168 + 13 13
13 = 12 + 1 13 = 853 5 168 = 1 = 13 853 66 168

As llegamos a que el inverso de 168 mdulo 853 es -66 = 787.


Con esto podemos calcular =787 378 mod 853 = 642 = = 187
Una vez tenemos lista la funcin de descifrado slo nos queda descifrar el mensaje:
DUMB IDEA .

Ejercicio 3.13: (Combinar las ideas de los ejercicios 10 y 12 para, sin mucho
esfuerzo, conseguir un criptosistema ms difcil de romper). Sean f1 , f2 funciones
para cifrar como las del ejercicio anterior, es decir fi (m) = ai m + bi mod Li
donde N, M son iguales para las dos funciones pero ai , bi , Li pueden cambiar.
Supongamos L2 > L1 . Podemos construir entonces el criptosistema producto
f = f2 f1 donde, a partir de una unidad de texto en claro m, el correspondiente

133 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

texto cifrado se obtendr en dos pasos:

i = a1 m + b 1 mod L1 , c = a2 i + b2 mod L2

Observa que este criptosistema producto no es en general un criptosistema afn.


Fijados los alfabetos, las claves son sextuplas sujetas a ciertas condiciones:

N 2 L1 L2 M 2 mcd(ai , Li ) = 1

Para ver un ejemplo concreto supongamos que usamos para los textos en claro y
cifrados los alfabetos con N = 27 y M = 30 letras del problema anterior. Sabiendo
que la clave para cifrar es (L1 , a1 , b1 , L2 , a2 , b2 ) = (757, 247, 109, 881, 675, 402),
explica cmo descifrar y descifra el mensaje D!RAJKCTN

Hecho por Pedro. Se aceptan correcciones.


Puesto que conocemos la clave para cifrar, lo nico que debemos hacer es calcular
la funcin inversa a la de cifrado.
Nuestro proceso de cifrado es:

i = 247m + 109 mod 757 c = 675i + 402 mod 881

Puesto que podemos invertir, podemos escribir:

i = (c 402) 201 mod 881 = 201c + 250 mod 881

y una vez que tenemos la i procedemos a calcular m mediante la ecuacin:

m = (i 109) 331 mod 778 = 331i + 257 mod 757

Observacin: La inversin la he hecho a ordenador. Si quisisemos hacerlo a mano


tendramos que emplear el algoritmo de Euclides que ya hemos empleado a lo largo de
los ejercicios y la teora en diversas ocasiones.
Finalmente, procedemos a descifrar el mensaje tomando letras de 2 en 2 y obte-
niendo las siguientes relaciones:

f 1 (118) = 365, f 1 (510) = 719, f 1 (299) = 127, f 1 (302) = 463, f 1 (583) = 19

Por ltimo, debemos expresar esos nmeros en base N para poder tener el mensaje
descifrado. As obtenemos el mensaje:

N O_RET REAT

Poderosa magia hombre blanco, obtuvimos un resultado razonable.

134 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

A.4. Control 2 (13-10-2014) Modelo A


Los dos ejercicios siguientes se desarrollan en el mismo contexto:

1. Los mensajes (en claro y cifrados) se escriben con un alfabeto de 28 letras, las
27 del castellano y un punto.

2. Los mensajes se cifran utilizando funciones lineales fA : Z228 7 Z228 de la forma


fA (x) = Ax

Ejercicio 4.1: Demuestra que hay exactamente 193536 funciones fA como


las indicadas que puedan usarse para cifrar

Hecho por Pedro. Se aceptan correcciones.


El objetivo es contar el nmero de matrices de orden 2 invertibles en M2 (Z28 ).
Con las frmulas vistas en clase tenemos que:

GL2 (Z28 ) = GL2 (Z7 ) GL2 (Z22 )

siendo GL2 (Zx ) el nmero de matrices invertibles de orden 2 con coeficientes en Zx


El caso GL2 (Z7 ) es sencillo por ser 7 un nmero primo. La forma de razonarlo
consiste en tomar el total de matrices de orden 2 en con coeficientes en Z7 y restar
aquellas no invertibles (con columnas proporcionales). As tenemos:

GL2 (Z7 ) = 74 ((72 1) 7 + 72 ) = 74 73 72 + 7 = 2016

En el casto de GL2 (Z4 ), por ser 4 potencia de un primo, tenemos que reducir las
matrices a Z2 , contar cuntas hay con esos coeficientes y luego deshacer la reduccin,
sabiendo que hay 2 nmeros en Z4 que puedan dar lugar al mismo elemento en Z2
(mirar los apuntes para una explicacin ms detallada).
As nos queda:
GL2 (Z4 ) = 24 GL2 (Z2 ) = 16 6 = 96

Por ltimo, tenemos:

GL2 (Z28 ) = 96 2016 = 193536

Ejercicio 4.2: Usando la funcin fA , resulta que al texto en claro HABLAR


le corresponde el texto cifrado HHFEER. Encuentra la matriz A (que es nica)

Hecho por Pedro. Se aceptan correcciones.


Revisado por Carolina. Se siguen aceptando correcciones

135 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Con la relacin que tenemos entre el texto original y el texto cifrado podemos
plantear la siguiente ecuacin matricial:
! !
7 1 7 5
A =
0 11 7 4

Pero no podemos despejar la matriz A puesto que el determinante de la matriz que


la acompaa no es coprimo con 28 y, por tanto, no tiene inversa.
Podemos observar que no hay forma de plantear una ecuacin, con los datos que
tenemos, tal que podamos despejar la matriz A. Por tanto tendremos que trabajar un
poco ms duro.
Tomamos la ecuacin:
! !
1 0 5 4
A = mod 28
11 18 4 18

y podemos reducirla mdulo 7, manteniendo la igualdad, con lo que tenemos:

! !1 !  ! !
5 4 1 0 5 4 1 4 0 1 1
A= = =2 = mod 7
4 4 4 4 4 4 4 4 1 0 1

Ahora ya sabemos cmo es la matriz A mod 7


Con un razonamiento similar, partiendo de la ecuacin primera que planteamos,
podemos ver cmo es la matriz A mdulo 4:

! !1 ! ! !
3 1 3 1 3 1 3 1 1 0
A= = = mod 4
3 0 0 3 3 0 0 3 1 1

Conociendo la matriz mdulo 4 y mdulo 7, podemos deducir sus coeficientes


mdulo 28:
!
1 8
A= mod 28
21 1

A.5. Control 2 (13-10-2014) Modelo B


Los dos ejercicios siguientes se desarrollan en el mismo contexto:

1. Los mensajes (en claro y cifrados) se escriben con un alfabeto de 28 letras, las
27 del castellano y un punto.

136 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

2. Los mensajes se cifran utilizando funciones lineales fA : Z228 7 Z228 de la forma


fA (x) = Ax

Ejercicio 5.1: Demuestra que hay exactamente 193536 funciones fA como


las indicadas que puedan usarse para cifrar

Hecho por Pedro. Se aceptan correcciones.


Mirar el primer ejercicio del examen resuelto en la seccin anterior.

Ejercicio 5.2: Usando la funcin fA , resulta que al texto en claro HABLAR


le corresponde el texto cifrado HAISR. Encuentra la matriz A (que es nica)

Hecho por Edu. Se aceptan correcciones.


Tenemos los siguientes 3 sistemas:

! ! !
a b 7 1 7 8
= mod 28
c d 0 11 0 19
! ! !
a b 7 0 7 14
= mod 28
c d 0 18 0 18
! ! !
a b 1 0 8 14
= mod 28
c d 11 18 19 18

Ninguna de las matrices que multiplican a A son invertibles, ya que tienen, respec-
tivamente, determinantes 77, 126 y 18.
Sin embargo, podemos reducir a mdulo 4 un sistema y reducir mdulo 7 otro y
ver si somos capaces de sacar A.
Comenzamos reduciendo el primer sistema mdulo 4 y observamos que se puede
resolver:
! ! !
a b 3 1 3 0
= mod 4
c d 0 3 0 3

Calculamos la inversa de esa matriz:


!1 !
3 1 3 3
= mod 4
0 3 0 3

Y obtenemos A mdulo 4:
! ! ! !
a b 3 0 3 3 1 1
= = mod 4
c d 0 3 0 3 0 1

137 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Repetimos reduciendo el tercer sistema mdulo 7:


! ! !
a b 1 0 1 0
= mod 7
c d 4 4 5 4

Calculamos la inversa de esa matriz:


!1 !
1 0 1 0
= mod 7
4 4 6 2

Y obtenemos A mdulo 7:
! ! ! !
a b 1 0 1 0 1 0
= = mod 7
c d 5 4 6 2 1 1

Parntesis
Aunque no es necesario porque no aporta nueva informacin, podemos hacer la
siguiente comprobacin: como el determinante se comporta bien con el mdulo, sea
det(A) = x, tenemos: (
x 1 mod 4
x 1 mod 7
Luego la solucin mdulo 28 es 1, es decir, que A tiene determinante 1 mdulo 28 y
por tanto, ser invertible.
Fin del parntesis
Con toda esta informacin, y mirando componente a componente A4 , deducimos
que A es:
! !
a b 1 21
=
c d 8 1

A.6. Hoja 3

Ejercicio 6.1: Se propone el siguiente sistema para jugar al poker por correo
postal (el problema es como repartir las cartas sin que ninguno de los dos jugadores
sepa las cartas que tiene el otro).

1. El jugador A pone cada una de las 52 cartas en una caja (todas las cajas
son idnticas) y las cierra con candados para los que solo l tiene las llaves.
Enva las 52 cajas al jugador B.

4
por el Teorema Chino del Resto sabemos que cada solucin ser nica, y por tanto, A es nica.

138 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

2. El jugador B selecciona 5 de las cajas, que formarn la mano de A. Selecciona


otras 5 cajas, que formarn su propia mano, y a estas 5 les pone candados
para los que solo l tiene la llave. Enva las 10 cajas seleccionadas a A.

3. A retira sus candados de las 10 cajas. Se queda con las 5 cartas que forman
su mano y enva las otras 5 cajas a B.

4. B abre las 5 cajas y ya tiene sus cartas. Pueden empezar a jugar.

5. En caso de disputa B enva sus 5 cartas y las 42 cajas sin abrir a un arbitro
neutral, al que A le enva las llaves.

EJERCICIO: Convencerse de que no se pueden hacer trampas y dar un mtodo


para jugar al poker utilizando el correo electrnico.

Hecho por Pedro. Se aceptan correcciones.


Hacer trampas sera lograr que, de alguna forma, el un jugador pudiese ver cartas
que no estarn en su mano.
Para empezar, si las cajas son idnticas, el jugador A enva las 52 cartas sin ningn
conocimiento acerca de las relaciones carta-mano y, obviamente, sin saber cules sern
las cajas que acabarn formando su mano.
El jugador B no puede abrir ninguna de las cajas puesto que no tiene la llave de A.
Escoge 10 cajas al azar (puesto que todas son iguales) y pone su propio candado a 5
de ellas.
Ahora enva a A slo esas 10 cajas. Ahora A quitar todos los candados pero con
ello slo conseguir ver sus 5 cartas, ni hablar de las que pertenecen a B, que tienen
otro candado diferente.
Finalmente enviar 5 cajas a B que slo l podr abrir puesto que es el nico
poseedor de la llave.
Este sistema, de cuya seguridad acabamos de autoconvencernos, puede emplearse
para jugar al poker online usando funciones de un slo sentido fa y fb .
El procedimiento a seguir sera:

1. El jugador A calcula fa de cada una de las 52 cartas y enva los 52 valores


calculados al jugador B.

2. El jugador B selecciona 5 de las cajas, que formarn la mano de A. Selecciona


otras 5 cajas, que formarn su propia mano, y a estas 5 y calcula fb de los 5
valores esogidos. Enva los 10 nmeros a A.

3. A calcula fa1 de los 10 datos recibidos. 5 de ellos le darn una carta y los otros
5 le darn nmeros sin ningn significado para l. Enva los 5 ltimos a B.

4. B calcula fb1 de los cinco valores recibidos y ya tiene sus cartas. Pueden empezar
a jugar.

139 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

5. En caso de disputa B enva sus 5 cartas y las 42 nmeros sin descifrar a un


rbitro neutral, al que A le enva fa .

La dificultad de este mtodo es que necesitaramos funciones que conmuten. Esto


es sencillo de hacer si trabajamos con funciones fx (m) = mx

Ejercicio 6.2: En una red de comunicaciones cada usuario U tiene su


funcin para cifrar CU , que hace pblica, y su funcin para descifrar DU , que
mantiene secreta. Un mensaje m del usuario A al usuario B se enviar siempre en
el siguiente formato: (CB (m), A). La direccin A le indica a B quin ha enviado
el mensaje. El receptor B recuperar m a partir de (CB (m), A), y tambin, de
manera automtica, contestar (CA (m), B) a A (obsrvese que (CA (m), B) tiene
el formato adecuado). De esta manera A sabe que B ha recibido correctamente el
mensaje.
a) Prueba que un tercer usuario C puede tambin leer el mensaje m que A envi
a B. Podemos asumir que C puede interceptar todos los mensajes transmitidos por
la red (ya que una de las ventajas de la clave pblica es que elimina la necesidad
de que el canal sea seguro), y que C puede enviar sus propios mensajes, siempre
que utilice el formato correcto.
b) Demuestra que las comunicaciones utilizando esta red siguen sin ser seguras
si el protocolo es que A enva CB ((CB (m), A)) a B y B automticamente responde
CA ((CA (m), B)) a A.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Es sencillo, basta con que C se interponga en la comunicacin y enve a B
(CB (m), C) y as C le responder con (CC (m), B) y listo.

Apartado b)
El hombre C intercepta el mensaje de A y enva l mismo a B el mensaje (CB (CB ((CB (m), A)), C).
Ahora B descifrara dos veces el mensaje y enviar a C el mensaje: (CC (CC ((CB (m), A)), B).
Gracias a esto C ya conoce (CB (m), A) y ahora slo tiene que enviar a B el mensaje
CB ((CB (m), C)) y esperar la respuesta que slo l sabr descifrar.

Ejercicio 6.3:
Al pagar con una tarjeta de crdito los usuarios (compradores y vendedores)
deben comprobar una serie de cosas: el vendedor debe asegurarse de que la tarjeta
es autntica y tiene fondos, de que la tarjeta no es robada, de que el comprador no
va a negar haber hecho la compra,...; por su parte el comprador debe asegurarse de
que el vendedor no va a intentar cobrar de ms o antes de tiempo, de que no va a
utilizar posteriormente los datos de su tarjeta para hacer compras por su cuenta....
Para evitar todo esto se propone el siguiente sistema.

140 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

La autoridad emisora de las tarjetas (que llamaremos AE) elige una funcin de
un slo sentido, f que hace pblica, manteniendo secreta la funcin inversa f 1 .
Por su parte cada usuario i del sistema (comprador o vendedor) elige una serie de
datos de identificacin Ii y una funcin de un slo sentido fi (puede elegirla cada
usuario por su cuenta siguiendo las instrucciones de la AE). El usuario i enva Ii a
la AE, y sta le devuelve si = f 1 (Ii ). Con estos datos i construye su credencial:
(Ii , si , fi ), que hace pblica, manteniendo secreta fi1 . Con todos estos datos,
cuando el comprador i quiere pagar al vendedor j, siguen el siguiente protocolo:

1. Presentacin de credenciales: El comprador entrega al vendedor (Ii , si , fi )


junto con una descripcin de la transaccin (pago, fecha de cobro,...) desde
su punto de vista: ui . El vendedor comprueba si f (si ) = Ii , y acepta o no la
tarjeta. Se procede de manera simtrica entregando el vendedor sus datos,
(Ij , sj , fj , uj ), al comprador.

2. Autentificacin: El comprador y el vendedor unen (de modo adecuado de-


pendiendo del tipo de funciones que se use) ui y uj , creando un u = ui uj .
El comprador calcula ti = fi1 (u) y se lo da al vendedor, quin comprueba
si fi (ti ) = u. Se realiza la operacin simtrica intercambiando los papeles de
comprador y vendedor.

3. Recibos: el comprador guarda (Ij , sj , fj , ui , uj , ti , tj ) y el vendedor guarda


(Ii , si , fi , ui , uj , ti , tj ).

EJERCICIO: Discute la utilidad de este sistema para resolver los problemas


planteados en el primer prrafo, y cualquier otro que se te ocurra relacionado con
los pagos con tarjeta de crdito.

Hecho por Pedro. Se aceptan correcciones.


En la explicacin hablaremos de cmo el vendedor se cerciora de que el cliente es
confiable. Puesto que el protocolo es simtrico, lo que se haga en un sentido se est
haciendo tambin en el contrario
En el primer paso, cualquier usuario podra haber enviado f (si ), puesto que tanto
f como si son datos pblicos.
Con esta primera comprobacin nos aseguramos de que se est empleando la tarjeta
asociada al usuario que dice estar haciendo la compra. Es decir, no puedo decir que
soy el usuario Ii1 y enviar Ii2 .
A partir de este punto, si el usuario dice ser Ii con una i fija, nos restringimos a
ese dato. Ya comprobaremos ms tarde si es l de verdad o no.
An no hemos ganado prcticamente nada de seguridad puesto que basta con
falsificar la tarjeta introduciendo los datos pblicos y con ello ya habramos pasado
esta primera fase.
En el segundo paso nos podemos asegurar de que el cliente es de verdad quien dice
ser, puesto que slo l conoce fi1 , necesaria para realizar esta comprobacin.

141 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ninguna persona que intercepte estos mensajes ser capaz de obtener u puesto que
no conocer ninguna de las funciones inversas empleadas.
Del mismo modo, si el vendedor ha llegado a obtener ui es porque el cliente, el
nico que conoca fi1 se lo ha enviado. As queda constancia de que la compra se ha
realizado satisfactoriamente.
Toda la seguridad del sistema radica en que las fx1 son secretas. As, si el vendedor
conocer tj es porque de verdad el comprador hizo la compra y viceversa.
Adems, aunque alguien se haga con el recibo (compuesto por datos pblicos), es
sencillo comprobar si de verdad es l pidindole que enva fi1 (u) una vez ms.

Ejercicio 6.4: Supongamos que una red de inversores y agentes de bolsa


utiliza criptografa de clave pblica. Los inversores temen que sus agentes compren
acciones sin su autorizacin (para cobrar comisiones) y luego, si pierden dinero,
digan que recibieron instrucciones de hacerlo (mostrando un mensaje cifrado con
una indicacin en ese sentido y pretendiendo que vena del inversor). Los agentes,
por su parte, temen que, si compran acciones siguiendo las instrucciones del inversor
y stas pierden valor, el inversor pretenda que nunca dio la orden de compra y que
el mensaje est falsificado por un tercero o por el propio agente.
Explica cmo puede la criptografa de clave pblica resolver estos problemas de
modo que cuando todos estos indeseables acaben ante los tribunales demandndose
unos a otros, haya una prueba de quin es el culpable de las malas inversiones y
consecuente prdida de dinero. Puedes suponer que, en caso de una demanda entre
el inversor A y el agente B, se pone a disposicin del juez toda la informacin para
cifrar/descifrar, es decir, las claves eA , dA , eB , dB y el software necesario para cifrar
y descifrar. [PISTA: hace falta un acuse de recibo" de los mensajes.]

Hecho por Pedro. Se aceptan correcciones.


La base de la criptografa de clave pblica es que cada usuario del sistema tenga
una clave privada y una pblica.
Si simplemente enviamos las rdenes cifrando el mensaje con la clave pblica del
destino, conseguiremos confidencialidad, pero al final cualquiera podra fingir que ha
recibido un mensaje de una cierta persona.
Por ello lo que se debe hacer es enviar el mensaje m de A a B mediante el envo
de fB (m, fA1 (m)).
As el usuario B, tiene una prueba de que recibi una orden puesto que es la
nica forma de que B se haga con fA1 (m).
Con esto ya hemos solventado el problema de que el inversor se desentienda de la
orden y que el agente acte por su cuenta ya que la accin habr sido ordenada por el
inversor si y slo si el agente tenga f 1 (m).
Adems evitamos problemas posibles de suplantacin de identidad.

142 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 6.5: Ana y Beatriz cifran sus mensajes con el criptosistema de


Cesar sobre el alfabeto castellano de 27 letras. Para poder cambiar de clave con
frecuencia, deciden emplear el intercambio de claves de Diffie-Hellman. Para im-
plementar el intercambio acuerdan que vern las 27 claves, {A, . . . , Z} como las
clases {1, . . . , 27} (Z29 ) , y que utilizarn el logaritmo discreto en F29 = (Z29 )
con base g = 2.
a) Supn que Ana elige como exponente en el intercambio a = 5 y Beatriz
b = 8. Cmo cifrarn el mensaje HOLA con la clave resultante?
b) Cristina intercepta un mensaje 18" que Ana la enva a Beatriz y un mensaje
8" enviado por Beatriz a Ana. A continuacin intercepta el mensaje ELHQKHFKR
de Ana a Beatriz. Qu le ha dicho Ana a Beatriz?

Apartado a)
Ana enviar a Beatriz g 5 mod 29 = 25 mod 29 = 3 de forma que nadie que
intercepte el mensaje ser capaz de descubrir el valor del exponente. Beatriz responder
enviando g 8 mod 29 = 24 con lo que ya tienen ambas la nueva clave: e = (g 5 )8 =
(g 8 )5 mod 29.
A partir de aqu emplearan el cifrado de cesar empleando como clave del cifrado
de Csar el valor g 40 = 240 + 7 mod 29
As el mensaje HOLA quedar convertido en VRH

Apartado b)
Puesto que son nmeros pequeos podemos ser capaces de vulnerar la seguridad
del sistema por la cuenta de la vieja.
Para empezar podemos ver fcilmente que el nmero escogido por Beatriz es un 3
y podemos para conocer a podemos plantear la ecuacin: 2a mod 29 = 18
Puesto que 2 es un generador del grupo Z29 basta con que hagamos un total de
28 pruebas para encontrar el valor de a.
Haciendo un pequeo script en python en seguida encontramos que a = 11 es la
solucin que buscamos.
Ahora Cristina ya sabe que la clave del cifrado de Csar que se ha empleado es 233
mod 29 = 3, por lo que el mensaje cifrado quera decir: BIEHECHO
Podemos deducir que el profesor meti la pata al escribir el mensaje cifrado y cifr
sin tener en cuenta la al preparar el ejercicio.

El objetivo de los tres siguientes problemas es dar un mtodo para lanzar una
moneda al aire a distancia" usando una funcin 2-a-1 de un slo sentido. Por ejemplo,
para que dos personas que juegan al ajedrez por internet puedan acordar quin lleva
las blancas.

143 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 6.6: Un sistema de funciones 2-a-1 de un slo sentido es un


algoritmo que, dada una clave e, construye una funcin f : M C tal que
cada elemento c Im(f ) tiene exactamente dos preimgenes m1 , m2 tales que
f (mi ) = c; junto a a otro algoritmo que, dada una clave d que invierte e", puede
encontrar las dos preimgenes de cualquier c Im(f ). Suponemos ademas que es
computacionalmente imposible encontrar d conociendo slo e. Observa que, dado
mi M, podemos encontrar el otro elemento m2 tal que f (m1 ) = f (m2 ) si
conocemos tanto e como d; pero estamos asumiendo que, conociendo slo e, es
computacionalmente imposible calcular el compaero m2 de ningn m1 .
Supongamos que Ana y Beatriz quieren utilizar esto para lanzar una moneda
al aire". Ana genera un par de claves (e, d) y enva e, pero no d, a Beatriz. En-
cuentra un procedimiento en el que cada jugadora tenga una probabilidad del 50 %
de ganar" (empieza por dar una definicin adecuada de ganar") y que incluya
garantas de que no se puede hacer trampas.

Beatriz elige al azar un m M, calcula (usando e) c = f (m) y se lo manda


a Ana [Beatriz ha creado la moneda"]. Ana calcula (usando d) las dos preimgenes,
m1 , m2 , de c por f , y manda una, digamos m1 a Beatriz [Ana ha elegido cara o cruz"].
Diremos que Ana gana si m1 = m y que Beatriz gana si m1 6= m. Cada una de estas
dos posibilidades ocurre con probabilidad 50 %.
Tras recibir un m1 6= m, Beatriz puede mostrar m1 y m2 = m a Ana, demostrando
as que gana. Si no puede hacer esto (porque m1 = m), gana Ana.
En el segundo caso, Beatriz puede pedirle a Ana que le enve m2 y comprobar (usan-
do e) que, efectivamente, f (m1 ) = f (m2 ) = c, y por tanto c tiene dos preimgenes.
Esto es importante porque Ana podra haber hecho trampa y haber usado una clave e
que diese una funcin f para la que cada c Im(f ) tuviese una sola preimagen, con
lo que ella ganara siempre. Observa que a Ana no le interesa crear una f para la que
c tenga ms de dos preimgenes, porque su probabilidad de ganar sera menor.

Ejercicio 6.7:
a) Sea R un dominio de integridad [es decir, ab = 0 a = 0 b = 0] y
consideremos soluciones de ecuaciones en R. Demuestra que la ecuacin X 2 = 0
tiene exactamente una solucin. Ver que si a 6= 0, la ecuacin X 2 = a tiene a lo
sumo dos soluciones. Si adems suponemos que 2 6= 0 en R, demostrar que, si
X 2 = a con a 6= 0 tiene solucin, entonces tiene exactamente dos soluciones.
b) Sea N un nmero impar. Demuestra que en el anillo ZN existe algn a tal
que la ecuacin X 2 a mod N no tiene ninguna solucin. (Sugerencia: Cardinal
del conjunto de cuadrados?)
c) Demuestra que en el anillo Zp2 con p primo impar la ecuacin X 2 0
mod p2 tiene exactamente p soluciones, mientras que si una ecuacin X 2 a
mod p2 con a 6 0 tiene solucin, entonces tiene exactamente dos soluciones.
d) Sean p y q primos impares distintos. Trabajaremos ahora en el anillo Zpq .

144 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

d1 ) Demuestra que, dado x Zpq , existen a, b Z, 0 a < q, 0 b < p


tales que x ap + bq mod pq, y que adems a y b en estas condiciones son
nicos.

d2 ) Dados x ap + bq, x0 a0 p + b0 q Zpq , da condiciones sobre a, b, a0 , b0 que


sean equivalentes a x2 x0 2 mod pq.

d3 ) Lo mismo que en d2 ), pero exigiendo adems que x 6 x0 mod pq.

d4 ) Demuestra que la ecuacin X 2 2 mod pq tiene: 1 solucin si 0


mod pq; 4 soluciones si es una unidad en Zpq ; 2 soluciones si 6 0 y
no es una unidad en Zpq .

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Vamos a empezar probando que la ecuacin tiene una nica solucin. Para ello
basta con ver que cualquier solucin cumplir
x x = 0 = x = 0 por ser un dominio de integridad

Para trabajar con la ecuacin x2 = a con a 6= 0 podemos escribir:



x2 = a x2 a = 0 (x a)(x+ a) = 0 = x a = 0 x+ a = 0
donde la ltima implicacin se deduce del hecho de que trabajamos en un dominio de
integridad.
As llegamos a que las dos nicas posibles
soluciones, en caso de haberlas, de la
2
ecuacin
x = a son x = a y x = a. No obstante existe la posibilidad de que
a se salga del cuerpo en que nos movemos, de modo que no tendramos solucin.

El nmero de soluciones de la ecuacin ser exactamente dos: a 6= a. No
obstante, es posible que estas dos soluciones acaben siendo la misma. No obstante, un
nmero es igual a su opuesto en Zn slamente si n es par y el nmero en cuestin es
n
2
puesto que en ese caso tendramos n2 = n n2 .
Puesto que estamos en un dominio de integridad, la nica forma de que n sea par
es que sea 2 y, puesto que el enunciado nos dice que 0 6= 2 es claro que n 6= 2 con lo
que tendremos exactamente dos soluciones.

Apartado b)
Supongamos que vamos tomando elementos de ZN , calculando su cuadrado y
resulta que siempre obtenemos un nmero distinto dentro de ZN . Es decir, en ZN
todos los elementos son cuadrados perfectos mdulo N .
En este caso, tendramos que la funcin f (x) = x2 es biyectiva.
Sin embargo, podemos observar que para todo valor de i impar, se tiene que
2 2
N 2 N i i2 i4
 
N +i N i
mod N = + + mod N = mod N = mod N
2 4 2 4 2 2

145 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

con lo que claramente la funcin f (x) = x2 no es inyectiva por lo que no puede ser
biyectiva y su inversa tampoco.

Apartado c)
Todas las soluciones de la ecuacin x2 = 0 sern de la forma p, que al elevarlos
al cuadrado nos darn 2 p2 = 0, menores que p2 puesto que si fuesen mayores no
estaran en el anillo.
Una vez visto esto es sencillo ver que tendremos como soluciones los nmeros i p
con i = 0, 1, ...p 1, es decir, tendremos p soluciones.

Observacin:
Q La solucin ha de ser mltiplo de p puesto que en caso de no serlo
tendramos ai = kp2 pero, puesto que p es primo, la nica opcin es que i 6=
2

j, ai = aj = p.
Si suponemos ahora que la ecuacin x2 = a tiene una solucin , entonces sabemos
que 2 = a con lo que podemos escribir la ecuacin

(x )(x + ) = 0 x2 + x x 2 = 0 x2 = 2 x2 = a

que tiene exactamente dos soluciones x = .


Si no tuviese al menos una solucin, no sera un cuadrado perfecto y no podramos
aplicar este procedimiento puesto que al usar nos estaramos saliendo del anillo en
el que estamos trabajando.

Apartado d)

Apartado d1 )
Puesto que p, q son primos distintos de 2, es claro que x = m.c.d.(px, qx) y, por
el teorema de Bezout sabemos que existirn dos nmeros , (que incluso sabemos
calcular con el algoritmo de Euclides) tales que

x = px + qx = x = ax + bq siendo a = x b = x

Tenemos x escrito como x = ap + bq, supongamos que ahora podemos cambiar


las cantidades de p y q que estamos sumando, llegando a otro valor posible. Sea c Z
debemos escribir:
 
cp cp
x = ap + bq = (a c)p + bq + q = (a c)p + b + q
q q

La idea es que si solo tengo dos posibles nmeros que sumar y quito unos pocos
de uno de esos nmeros, tengo que ver cunto tengo que aadir del otro.
El problema que se nos plantea es que este razonamiento (con independencia del
signo de c) slo tiene sentido si la fraccin es un entero, cosa que es imposible puesto
que p y q son primos (salvo que c = q cosa que no tiene sentido puesto que estamos
trabajando en Zpq ).

Apartado d2 )

146 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Vamos a operar: (
x2 = a2 p2 + b2 q 2 + 2abpq
x02 = a02 p2 + b02 q 2 + 2a0 b0 pq

Como vamos a igualar los cuadrados en mdulo pq podemos (y debemos) ignorar


el ltimo sumando de cada ecuacin con lo que llegamos a:

a2 p2 + b2 q 2 = a02 p2 + b02 q 2

Sin prdida de generalidad podemos suponer que a2 = a02 + c con lo que tenemos
2
que b02 = cp
q2
b2
No obstante, como vimos en el apartado anterior, puesto que b02 es un entero, esto
slo tiene sentido si c = q 2 .
Es decir, llegamos a la relacin:

a2 = a02 mod q 2 y b02 = p2 b2 b02 = b2 mod p2

Apartado d3 )
Puesto que en el apartado d1 vimos que x = x0 slo si los coeficientes coincidan,
lo nico que tenemos que hacer es aadir la condicin a 6= a0 y b 6= b0 a la relacin
obtenida en el apartado anterior.

Apartado d4 )
La ecuacin x2 = 0 mod pq tiene la solucin trivial nicamente puesto que, en
caso de haber otra, tendramos 2 = 0 mod pq pero esto es imposible puesto que p
y q son primos.
Por otro lado, si es distinto de 0, la ecuacin x2 = 2 puede escribirse como

x2 2 = 0 (x )(a + ) = 0 = x =

Por lo que tendramos dos soluciones posibles.


Sin embargo, en caso de que fuese una unidad, tendramos que tambin es
unidad en Zp y en Zq .
Sean p , q los inversos de en cada uno de esos dos anillos, tendramos que
1 1
x= y x = son soluciones de x2 = 2 en Zp y Zq respectivamente
p q

A partir de estas soluciones podemos reconstruir la solucin en Zpq como hacamos


al descifrar criptosistemas afines y obtener 4 resultados distintos.
Solucin del profesor
a) X 2 = 0 significa X X = 0, y por ser R un dominio la nica solucin es X = 0.
Para a 6= 0, si en una solucin de X 2 = a, es decir, si 2 = a, tenemos que

X 2 = a X 2 a = 0 X 2 2 = 0 (X )(X + ) = 0.

147 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por ser R un dominio esto ocurre slo si X = 0 o X + = 0, es decir, X =


o X = . Queremos ver que estas dos soluciones son distintas. Si fuese =
sera 2 = 0. Como R es un dominio, si 2 6= 0 debe ser = 0 y por tanto a = 0.
En consecuencia, si a 6= 0 y 2 6= 0, X 2 = a o bien no tiene solucin o bien tiene
exactamente dos soluciones (distintas), y .

b) [Estamos asumiendo que N > 1, condicin que no hemos hecho explcita,


pero necesaria para que ZN no sea trivial]. Para 6= 0 se tiene 6= , ya que
= implica N | 2 y, por ser N impar, esto implica N | , es decir = 0.
Pero ()2 = ()2 , as que, como los cuadrados no nulos se obtienen (al menos) de
dos maneras, por lo que el nmero de elementos de ZN que son cuadrados es como
mucho N21 + 1 = N2+1 . [Esta es exactamente la cantidad de cuadrados si N es primo,
pero, para N compuesto, pueden ser menos porque puede haber ms repeticiones.
Por ejemplo, en Z1 5 hay slo 6 cuadrados]. Como N2+1 < N siempre que N > 1,
tiene que existir algn a ZN que no sea un cuadrado. De hecho, existen al menos
N N2+1 = N21 elementos a ZN , que no son cuadrados y para los que, por tanto,
X 2 a mod N no tiene solucin.

c) Primero, X 2 0 mod p2 p2 | X 2 p | X, y por tanto tenemos p


soluciones en Zp2 : los elementos de la forma kp para k = 0, 1, . . . , p 1.
Por otra parte, si X 2 a mod p2 con a 6 0 tiene solucin, es decir, si a 2
mod p2 , tenemos que X 2 a mod p2 X 2 2 mod p2 p2 | X 2
2 p2 | (X )(X + ).
Una posibilidad es p2 | (X ), es decir, X = ; otra es p2 | (X + ), lo que
nos da X = ; la tercera opcin sera p | (X ) y p | (X + ). Pero entonces,
restando, p | 2 y, como p es impar, p | , de donde p2 | 2 = a y sera a 0
mod p2 .
En resumen, para a 6 0, X 2 a mod p2 , o bien no tiene soluciones, o bien tiene
exactamente dos.

d1) Como p, q son primos distintos, tenemos (p, q) = 1 y, por tanto, existen ,
Z tales que 1 = p + q. Multiplicando por x resulta x = (x)p + (x)q. Pongamos
x = a + a0 q, x = b + b0 p con 0 a < q, 0 b < p [basta con dividir] y veamos
que x ap + bq mod pq.
Para eso basta con probar que x ap + bq mod p y x ap + bq mod q.
Para p tenemos x (x)q = bq + b0 pq bq ap + bq mod p. Anlogamente
x (x)p = ap + b0 qp ap ap + bq mod q.
Respecto a la unicidad, observa que p es una unidad mdulo q y q es unidad mdulo
p. De x ap + bq mod pq deducimos x bq mod p y x ap mod q, de modo que
b xq 1 mod p y a xp 1 mod q. La condicin adicional 0 a < q, 0 b < p
implica que estos representantes de xq 1 mod p y de xp 1 mod q son nicos.

DEMOSTRACIN ALTERNATIVA. Consideramos la aplicacin : Zq Zp


Zpq dada por (a, b) = ap + bq. Esta aplicacin est bien definida porque (a + a0 q)p +
(b + b0 p)q ap + bq mod pq y es un homomorfismo de grupos aditivos [no lo demos-
traremos].
El ncleo de es trivial porque ap+bq 0 mod pq p | ap+bq y q | ap+

148 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

bq p | bq y q | ap p | b y q | a (recordemos que p, q son primos distintos)


a 0 mod q y b 0 mod p.
Por tanto es inyectiva y, por ser los dos conjuntos del mismo cardinal, biyectiva.
Que sea sobre implica que todo x Zpq se escribe de la forma deseada y la unicidad
se sigue de la inyectividad de .

d2) Si x ap + bq, x0 a0 p + b0 q Zpq, tenemos x2 a2 p2 + b2 q 2 , x02


a p + b02 q 2 . De aqu, deducimos: x2 x0 2 mod pq x2 x0 2 mod p, x2 x0 2
02 2

mod q b2 q 2 b02 q 2 mod p, a2 p2 a02 p2 mod q. Usando de nuevo que p es


unidad mdulo q y q es unidad mdulo p esto es equivalente a pedir que b2 b02 mod p
y a2 a02 mod q, lo que, por ser p, q primos, equivale a b0 b mod p, a0 a
mod q, que son las condiciones buscadas.
Este es un buen momento para observar que, por ser q impar, si a 6 0 mod q
entonces a 6 a mod q, y la observacin anloga para b mod p.

d3) Teniendo en cuenta lo anterior y la unicidad en d2, tenemos que x2 x0 2


mod pq con x 6 x0 mod pq a a0 mod q y b b mod p, con a 6 a0
mod q o b 6 b0 mod p.

d4) Con las notacin de los apartados anteriores, escribamos = ap + bq y


X = a0 p + b0 q para una solucin X de X 2 2 mod pq. Sabemos que b0 b
mod p, a0 a mod q.

= 0 b 0 mod p, a 0 mod q. Por tanto la nica posibilidad es


b0 0, a0 0 y la solucin es nica.
es una unidad en Zpq (, pq) = 1 pq - b 6
0 mod p, a 6 0 mod q. Entonces b0 b mod p, a0 a mod q da 2
posibilidades para b0 y 2 posibilidades para a0 , 4 soluciones en total para la
ecuacin X 2 2 mod pq
6 0 y no es una unidad en Zpq significa (, pq) = p o (, pq) = q.
Supongamos sin prdida de generalidad que (, pq) = p, es decir, p | , q - .
Tenemos entonces b 0 mod p, a 6 0 mod q, de donde b0 0 mod p, una
nica opcin, y a0 a mod q da dos opciones. En total 2 soluciones para la
ecuacin X 2 2 mod pq.

NOTA: d4) se podra deducir tambin, quizs de forma menos explcita, del Teorema
Chino del Resto. Observa que la funcin en la demostracin alternativa de d1) es
homomorfismo de grupos aditivos, pero no es homomorfismo de anillos, mientras que
s lo es la funcin de reduccin mdulo p y mdulo q" que se suele (o se puede) usar
para demostrar el Teorema Chino del Resto.

Ejercicio 6.8: Supongamos que tenemos un mtodo rpido [existen algunos


probabilsticos] para resolver la ecuacin X 2 a mod p cuando p es primo y existe
solucin [esto es, a es un residuo cuadrtico mdulo p]. Supongamos tambin que
si n es compuesto y producto de dos primos distintos, n = pq, no hay forma

149 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

razonable de resolver X 2 a mod n que no pase por factorizar n (en cuyo caso
podemos resolver X 2 a mod p y X 2 a mod q y utilizar el Teorema Chino
del Resto). Supongamos por ltimo que p y q no son ambos 1 mod 4.
[RECUERDA: p 1 mod 4 existe a Zp tal que a2 1 mod p.]
Sea Ke = n y sea Kd = {p, q} su factorizacin. Pongamos P = C =
(Zn ) /{1}, esto es identificamos cada clase inversible x con su opuesta x,
y consideremos la funcin f : P C definida por f (x) = x2 . Demuestra que
todo esto es un ejemplo de la situacin descrita en el problema 6 y que por tanto
acabamos de dar una forma explcita de lanzar monedas al aire a distancia".

Hecho por Pedro. Se aceptan correcciones.


En el problema 6 tenamos una funcin de un slo sentido tal que todo elemento
tiene exactamente dos preimgenes. Esta funcin sera f (x) = x2 mod n siendo n la
clave pblica que todo el mundo puede conocer.
A partir del valor de f (x) mod n nadie puede encontrar x.
En esta versin del problema, el usuario A conoce n y la funcin f . Este usuario
escoge un nmero y enva a B f (x) mod n.
El jugador B, conocer p tal que pq = n y, puesto que tambin conoce n, tendr
q y podr conocer los posibles x1 , x2 que dan lugar al valor de f que ha recibido.
Selecciona uno al azar y pregunta a A si ha acertado a lo que ha debe responder
afirmando que B acert (con lo que ganara B) o diciendo cul es su nmero, nmero
que no puede haber calculado a posteriori puesto que A no sabe invertir la funcin f .
Por tanto, queda claro que a partir de los datos del enunciado podemos definir un
algoritmo para realizar el lanzamiento de monedas a distancia. No obstante, an hay
un par de detalles que debemos precisar.
Quin nos garantiza que haya dos soluciones a la ecuacin x2 = a
mod n?
A partir de la ecuacin que tenemos que resolver podemos escribir:
(
2 x2 = a mod p = x = a mod p
x = a mod n =
x2 = a mod q = x = a mod q

Por tanto tendramos 4 posibles soluciones de la ecuacin. Sin embargo, puesto


que estamos identificando cada
clase con
su opuesta, realmente tendremos solo dos
soluciones, pues tenemos que a = a.
Slo nos queda comprobar que realmente tenemos dos soluciones posibles, es decir,
que no puede ser que xp = xq .
Solucin del profesor:
Slo tenemos que demostrar que la funcin f es 2-a-1, es decir, que cada elemento
c Im(f ) tiene exactamente dos preimgenes, ya que el resto de las condiciones que
definen las funciones 2-a-1 de un slo sentido estn contempladas en el enunciado de
este problema:

150 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

un algoritmo que,dada una clave e, construye una funcin f : M C":


conocida la clave Ke = n, queda construida f : M C definida por f (x) = x2
[veremos que se puede pasar sin problema a los cocientes por {1}].
otro algoritmo que, dada una clave d que invierte e", puede encontrar las dos
preimgenes de cualquier c Im(f )": estamos suponiendo que tenemos un
mtodo rpido para resolver las ecuaciones X 2 a mod p y X 2 a mod q;
la clave secreta Kd = {p, q} nos da la factorizacin de n y nos permite, usando el
Teorema Chino del Resto, encontrar las soluciones de X 2 a mod pq a partir
de las de X 2 a mod p y X 2 a mod q.
es computacionalmente imposible encontrar d conociendo slo e": como estamos
suponiendo que no hay forma razonable de resolver X 2 a mod n que no pase
por factorizar n, esto no es otra cosa que la dificultad de factorizar un entero
grande.

Recordemos que (Zn ) denota las unidades en Zn . Para demostrar que cada ele-
mento c Im(f ) tiene exactamente dos preimgenes, empecemos por llamar A =
B = (Zn ) [para mayor claridad, vamos a distinguir los conjuntos rango e imagen] y
sea f1 : A B dada por f1 (x) = x2 .
El apartado d4) del problema anterior nos dice que si c Im(f1 ), entonces c tiene
exactamente 4 preimgenes, es decir, f1 es 4-a-1. Hay que modificarla, porque si no
tendramos una moneda con 4 caras.
Sabemos que f1 (x) = x2 = f1 (x), por lo que podemos pasar al cociente y definir
a partir de f1 una funcin f2 : A/{1} B. Como x A = (Zn ) implica x 6= x,
y hemos identificado estas dos preimgenes, la funcin f2 es 2-a-1.
Podramos parar aqu porque la funcin f2 ya cumple las condiciones del ejercicio
6 (donde no se pide que M = C), pero tambin podemos dar un paso ms bajo la
hiptesis adicional de que p y q no son ambos 1 mod 4.
Componiendo f2 con la aplicacin de paso al cociente B B/{1} obtenemos
la aplicacin
f : (Zn ) /{1} (Zn ) /{1}
del enunciado, para la que ahora M = C = (Zn ) /{1}. Para ver que esta funcin
sigue siendo 2-a-1 tenemos que comprobar que en el cociente B/{1} no hay dos
elementos de Im(f ) = Im(f1 ) = Im(f2 ) que estn en la misma clase ya que, si
pasase esto, al identificarlos volveramos a tener una funcin 4-a-1.
Que dos elementos de Im(f ) estn en la misma clase en B/{1} significa que
existen x, y (Zn ) tales que x2 y 2 mod n, y por tanto ( xy )2 1 mod n.
En particular ( xy )2 1 mod p y ( xy )2 1 mod q, lo que no es posible porque
sabemos que al menos uno entre p y q no es 1 mod 4, y por tanto 1 no puede
ser un residuo cuadrtico mdulo p y mdulo q.
As pues, nuestra f : (Zn ) /{1} (Zn ) /{1} construida a partir de f1 es
una funcin 2-a-1 de un slo sentido y hemos acabado.

Vamos a hacer ahora algunas estimaciones sencillas de tiempos. Utiliza siempre la


notacin O.

151 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 6.9: La siguiente frmula es bien conocida:


n
X n(n + 1)(2n + 1)
j2 = .
j=1
6

Estima en funcin de n el nmero de bit-operaciones necesarias para calcular tanto


el trmino de la izquierda como el de la derecha (sin usar la igualdad!).

Hecho por Pedro. Se aceptan correcciones.


Siguiendo el tipo de cuentas que hemos hecho en clase, estaremos trabajando con
l = log(n) bits.
Cada vez que elevamos al cuadrado tendremos que hacer l 1 sumas de 2l 1
elementos.

Observacin: Para verlo basta con recordar la forma en que multiplicbamos en el


colegio y tener en cuenta que debemos considerar todos los sumandos de igual longitud
a fin de poder hacer las sumas adecuadamente.
As, el lado de la izquierda de la igualdad requerir

n(l 1)O(2l 1) = nO(log(n))O(log(n)) = O(n log2 (n)) operaciones

Por otro lado, la parte de la derecha de la igualdad requiere:

1. Multiplicar n por dos, lo cual no consume operaciones puesto que se hace des-
plazando los bits y listo.

2. Sumar 1 para calcular 2n + 1. Esto requiere un total de O(log(n)) operaciones.

3. Sumar 1 para calcular n + 1. Esto requiere un total de O(log(n)) operaciones.

4. Multiplicar n(n + 1). Esto requiere O(log2 (n)) operaciones.

5. Multiplicar n(n + 1)(2n + 1). Esto requiere O(log(n)2 ) operaciones.

Finalmente, sumamos todas estas operaciones que, como estamos trabajando con
estimaciones de tipo O, nos da un total de O(log(n)2 ) operaciones.

Ejercicio 6.10: Se trata de estimar en funcin de n el nmero de bit-


operaciones necesarias para calcular el producto de todos los nmeros primos me-
nores que n. Suponemos que hemos calculado con anterioridad una lista muy larga
que contiene todos los primos menores que n
a) Si definimos

(n) = Card{p N | p < n, p es primo}

152 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

el Teorema del Nmero Primo nos dice que


lmn n/(n)
log n
= 1. Utiliza este resultado para estimar el nmero de dgi-
tos en el producto de todos los nmeros primos menores que n.
b) Da una cota para el nmero de bit-operaciones necesarias para hacer una
de las multiplicaciones que intervienen en dicho producto.
c) Estima el nmero total de bit-operaciones necesarias para calcular el pro-
ducto de todos los nmeros primos menores que n.

Apartado a)
El Teorema del Nmero Primo nos viene a decir que
n
lm (n) =
n log(n)

Es razonable asumir que el ltimo primo que tengamos que multiplicar, tendr
tantos dgitos como n.
Puesto que cada vez que multiplicamos dos nmeros obtenemos un nmero que
ocupa lo mismo que los dos factores juntos, podemos estimar el nmero de bits nece-
sarios para almacenar el producto de todos los nmeros primos como:
n/ log(n)  
X n
O(log(i)) = O O(log(n)) = O(n)
i=1
log(n)

Apartado b)
Basta con considerar el producto de los dos nmeros ms grandes posibles. As
nos quedara una cota de O(n log(n)) que se obtiene al calcular el nmero de bit
operaciones necesarias para elevar n al cuadrado.

Apartado c)
El nmero de operaciones necesarias para el producto de todos los primos ser el
producto del nmero de operaciones necesarias para hacer un producto por el nmero
de productos, es decir:
 
n  2

O(n log(n))O = O(n2 ) = O 2log(n)
log(n)

A.7. Control 3 (6-11-2014) Modelo A

153 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 7.1: Para garantizar la seguridad de las tarjetas que sus clientes
utilizan para sacar dinero de cajeros, la Asociacin de Bancos decide que cada
banco elegir una funcin de un slo sentido, f , cuya inversa, f 1 , mantendr
secreta. El banco grabar en el chip de la tarjeta de cada usuario el par (f, D),
con la funcin f que ha elegido y D = f (P IN ), donde P IN es la clave que el
usuario teclear en el cajero cuando quiera sacar dinero.
Los cajeros de todos los bancos estarn preparados para poder calcular con las
f que leern en las tarjetas (aunque las haya emitido otro banco). Una vez tecleado
P IN , el cajero calcula f (P IN ) y comprueba si coincide con D, en cuyo caso dar
el dinero.
Explica por qu si una ladrn se hace con una tarjeta, y tiene el equipo para leer
y escribir en los chips, le ser muy difcil utilizarla, pero podr con mucha facilidad
crear tarjetas falsas utilizables.

Hecho por Pedro. Se aceptan correcciones.


Para empezar, ser muy fcil falsificar la tarjeta puesto que basta con coger
una tarjeta cualquiera, tomar su f , inventarnos un pin P IN 2 y grabar en la tarje-
ta (f, f (P IN 2)).
As podremos pagar con esta tarjeta empleando el pin P IN 2.
Sin embargo, no podr utilizar la tarjeta tal cual puesto que no hay forma de
conocer P IN a partir de f (P IN ) puesto que no es posible calcular la inversa de f ,
que slo es conocida por los bancos.

Ejercicio 7.2: Sabiendo que 44338072 = 1 mod 7156801, demuestra que


7156801 no es primo.

Hecho por Pedro. Se aceptan correcciones.


Supongamos que queremos resolver la ecuacin

a2 = 1 mod p siendo p primo

Esto seria equivalente a resolver la ecuacin a2 1 = 0 que, puesto que nos movemos
en un cuerpo, slo tiene dos soluciones: 1, p 1.
Es decir, sabemos que si p es primo los nicos elementos en Zp que coinciden con
su inverso son 1 y p 1.
Puesto que aqu tenemos 1 6= 4433807 6= 7156801 1, es claro ver que 7156801
no puede ser primo.

Ejercicio 7.3: En la gua de una red de comunicaciones aparece la siguiente


informacin:

154 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Interceptamos un mensaje que el usuario A ha enviado al usuario B, y que


sabemos que termina con el nombre de A. El final del mensaje cifrado es EOE.
Cmo se llama el usuario A?

Hecho por Pedro. Se aceptan correcciones.


Lo que tenemos que hacer es descifrar el mensaje EOE para lo que necesitamos
factorizar nB .
Puesto que estamos trabajando con nmeros pequeos es sencillo comprobar que
nB = 69 = 23 3 con lo que tenemos p = 3, q = 23.
A modo de comprobacin, podemos ver que eB = 5 es coprimo con (p1)(q1) =
44.
Ahora calculamos el inverso de eB :
1
dB = mod 44 = 9
5

Este caso difiere un poco del caso habitual del algoritmo RSA visto en clase. Dado
un mensaje m, el usuario A enva a B el valor

c = (m eB )eB

Para recuperar el valor de m, el usuario B deber calcular:

cdB + eB = m eB + eB = m

Una vez conocemos e1


B podemos descifrar el mensaje:

EOE = 12 mod 63

fd1
B
(12) = (12)9 + 5 mod 69 = 32 mod 69 = 32 mod 36 = Y O

155 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

A.8. Hoja 4

Ejercicio 8.1: Una de las claves para que RSA funcione es el siguiente
resultado: si n = pq, con p, q primos distintos, y ed 1 mod (n), entonces
(me )d m mod n para cualquier entero m.
a) Sea ahora N = mcm(p 1, q 1) [mcm=mnimo comn mltiplo]. De-
0
muestra que si ed0 1 mod N , entonces (me )d m mod n para cualquier
entero m.
b) Dados dos enteros cualesquiera a, b, describe un algoritmo rpido para cal-
cular mcm(a, b), y explica por qu es rpido. [SUGERENCIA: Cul es la relacin
entre mcm(a, b), mcd(a, b) y ab?]

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Puesto que n = p q con p y q primos, sabemos que (n) = (p 1)(q 1).
Por definicin del mnimo comn mltiplo y del mximo comn divisor sabemos
que:
(p 1)(q 1)
N = m.c.m.(p 1, q 1) =
m.c.d.(q 1, p 1)

Ahora slo tenemos que ver que:


(p 1)(q 1)
ed0 = 1 mod N = ed0 = 1 + K
m.c.d.(q 1, p 1)

Puesto que el m.c.d.(p 1, q 1) divide tanto a (p 1) como a (q 1), podemos


ver que, (
ed0 = 1 mod (p 1)
ed0 = 1 mod (q 1)

Aplicando el Teorema chino del resto podemos deducir que


0
ed0 = 1 mod (p 1)(q 1) = (n) = (me )d = m mod n


La clave de este ejercicio es demostrar que N = (n).

Apartado b)
Podemos calcular el mnimo comn mltiplo con la relacin
ab
m.c.m.(a, b) =
m.c.d.(a, b)

lo que sera muy rpido pues la multiplicacin lleva tiempo O(log2 (N )) y el mximo
comn divisor se calcula de forma rpida y sencilla con el algoritmo de Euclides.

156 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 8.2: Encontrar la clave privada de un usuario de un criptosistema


basado en el RSA si su clave pblica es (7519, 35).

Hecho por Pedro. Se aceptan correcciones.


Sabemos que, por definicin del algoritmo RSA tenemos dos primos p, q tales que:
(
7519 = p q
35 = 1 mod (p 1)(q 1)

Por la cuenta de la vieja podemos ver que 7519 = 73103, por lo que ya conocemos
p y q.
Ahora slo tenemos que encontrar el inverso de 35 mdulo 72 102 = 7344 para
lo que podemos emplear el algoritmo de Euclides.

7344 = 209 35 + 29 1=65


35 = 1 29 + 6 5 = 29 4 6 = 1 = 5 6 29
=
29 = 4 6 + 5 6 = 35 29 = 1 = 5 35 6 29
6=5+1 29 = 7344 209 35 = 1 = 1259 35 6 7344

As tenemos que la clave privada es d = 1259

Ejercicio 8.3: En la gua de una red de comunicaciones aparece la siguiente


informacin:
ESTRUCTURA GENERAL: Los mensajes se cifrarn mediante el crip-
tosistema RSA. Se utilizar el alfabeto castellano de 30 letras con
0,. . . ,14,. . . ,26=A,. . . ,,. . . ,Z, 27=el punto, 28=espacio en blanco y 29=la in-
terrogacin. Las unidades de texto normal sern digrafos y las de texto cifrado
trigrafos. Los mensajes se mandan sin firma.
CLAVES DE LOS USUARIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (n, e)
Usuario A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (1711,125)
etctera

El usuario B enva el mensaje ASAW. al usuario A. Qu quiere decirle B a


A?

Hecho por Pedro. Se aceptan correcciones.


Lo que debemos hacer es encontrar los primos p, q con los que se dise este
sistema RSA.
Por la cuenta de la vieja llegamos a que 1711 = p 1 = 29 59.
Una vez tenemos esto podemos conocer (p 1) (q 1) = 28 58 = 1624 lo que
nos permite calcular la clave privada, que, en este caso, es el inverso de 125 mdulo
1624. Vamos a ello

157 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

1624 = 12 125 + 124 1 = 125 124


=
125 = 124 + 1 124 = 1624 12 125 = 1 = 13 125 1624

As tenemos que la clave privada, empleada para descifrar, ser d = 13.


Para descifrar el mensaje procedemos por bloques:
19 30 + 14 = 584 mod 1711 58413 mod 1711 = 225 = 7 30 + 15 = HO
23 30 + 27 = 717 mod 1711 71713 mod 1711 = 330 = 11 30 + 0 = LA

As tenemos que el mensaje enviado era HOLA

Ejercicio 8.4: En la gua de una red de comunicaciones aparece la siguiente


informacin:
ESTRUCTURA GENERAL: Los mensajes se cifrarn mediante el criptosistema
RSA. Se utilizar el alfabeto castellano de 26 letras (con y sin W). Las unidades
de texto normal sern digrafos y las de texto cifrado trigrafos. Los mensajes se
mandan firmados (usando el protocolo explicado en clase).
CLAVES DE LOS USUARIOS . . . . . . . . . . . . . . . . . . . (n, e)
Usuario A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (9797,17)
Usuario B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (8549,6083)
etctera

El usuario A enva un mensaje al usuario B y lo termina con la firma EOBIXD.


Cmo se llama el usuario A?

Hecho por Pedro. Se aceptan correcciones.


Para saber cmo se llama el usuario A lo que tenemos que hacer es descifrar el
mensaje para lo que debemos atacar al sistema RSA.
Procedemos a factorizar nB por la cuenta de la vieja obteniendo
nB = 83 103 = p q

A partir de aqu podemos calcular la clave privada calculando:


1 1
mod (p 1)(q 1) mod 8364
eb 6083

Empleamos el algoritmo de Euclides para calcular este inverso:

8364 = 1 6083 + 2281 1 = 1521 2 760


6083 = 2 2281 + 1521 760 = 2281 1521 = 1 = 3 1521 2 2281
=
2281 = 1 1521 + 760 1521 = 6083 2 2281 = 1 = 3 6083 8 2281
1521 = 2 760 + 1 2281 = 8364 6083 = 1 = 11 6083 8 8364

158 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por tanto tenemos que dB = 11.


Puesto que el mensaje ha sido firmado lo que hemos recibido es

C = fdA (feB (M))

luego para descifrarlo debemos emplear primero la clave pblica de A y luego la


privada de B, que acabamos de descubrir.
Una vez sabemos esto podemos descifrar el mensaje:

EOB = 3095 mod nA 309517 mod nA = 1431 mod nA 143111 mod nB = 255
255 = 9 26 + 21 = JU 00
IXD = 6009 mod nA 600917 mod nA = 1954 mod nA 195411 mod nB = 12
12 = 0 26 + 12 = AN 00

Ejercicio 8.5: Un grupo de espias decide cifrar sus mensajes, escritos en un


alfabeto de 27 letras (las 26 del castellano, con y sin W, y un espacio en blanco
_" que cifrarn como el 26), utilizando un sistema de Vigenre sobre pares de
letras. Para dificultar la labor del enemigo, y en particular el anlisis de frecuencias,
deciden cambiar la clave en cada mensaje. Para intercambiarse las claves acuerdan
utilizar el sistema RSA de clave pblica. El protocolo que utilizan es el siguiente:
Cuando A quiere enviar a B un mensaje m, busca una clave de Vigenre, K,
que ser un par de letras k1 k2 . Esta clave le da una funcin para cifrar gK . Adems
B tiene una funcin pblica para cifrar claves, fB , cuya correspondiente funcin
para descifrar, fB1 , es secreta. A interpreta K (en principio un par de letras) como
un digrafo (un nmero de dos cifras") al que puede aplicar fB , y lo que enva a
B es el par (fB (K), gK (m)). B puede recuperar K a partir de fB (K), y una vez
que conoce K puede leer m a partir de gK (m).
a) Si las claves para cifrar son de la forma (n, e), Hay alguna restriccin sobre
el tamao de n?
b) Las primeras lineas de la gua de claves pblicas para cifrar claves de Vigenre
dicen:
Usuario A . . . . . . . . . . . ((39 1)/2, 3629)
Usuario B . . . . . . . . . . . . ((215 1)/7, 643)
El usuario B recibe el mensaje (AGR, TPXUROXK_X). Qu le han querido
decir?
c) Como acabas de comprobar, el protocolo anterior tiene un serio problema
de autentificacin: cualquiera podra haber enviado el mensaje. Discute si para
resolver este problema es suficiente que cuando A escribe a B envie el mensaje en
la siguiente forma: (Hola soy A, fA1 (fB (K)), gK (m)); o si hace falta introducir
alguna firma adicional. Discute tambin si siempre se podr utilizar fA1 (fB (K))
o si habr casos en los que convenga sustituirlo por fB (fA1 (K)). Introduce esta
modificacin alguna nueva restriccin sobre el tamao de las posibles n de las
claves?

159 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

d) Supn que los espias han decidido cambiarse al nuevo protocolo descrito en
c), y que quien envi el mensaje de b) fue A. Como debera enviar ese mismo
mensaje con el nuevo protocolo?

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
La clave k1 k2 se interpretar como un nmero en Z272 .
Puesto que para cifrar este dato mediante el algoritmo RSA tendremos que calcular
su mdulo n, necesitaremos que n > 272 pues, de lo contrario, tendramos dos claves
distintas en claro que podran llevar a la misma clave cifrada.

Apartado b)
Para empezar debemos factorizar el nB .
Para todo factor primo tenemos distinto de 7, que sabemos que es factor, tenemos:

p|(21 1) = imposible


p|23 1 = p|7 = p = 7

15
p|2 1 =

p|25 1 = p|31 = p = 31
p = 1 mod 30

As tenemos que
2151
= 31 151 = p q
7
Ahora, para descifrar el mensaje debemos calcular el inverso de eb en mdulo
(p 1)(q 1), es decir, debemos calcular:
1
mod 4500
643

Como siempre, empleamos el algoritmo de Euclides

4500 = 6 643 + 642 1 = 643 642


=
643 = 642 + 1 642 = 4500 6 643 = 1 = 4500 + 7 643

Con esto procedemos a descifrar el mensaje:

AGR = 180 mod nB 1807 mod nB = 521 mod 151 31 = 521 mod nA
521 = 19 27 + 8

Una vez tenemos k1 , k2 = 19, 8 procedemos a descifrar el mensaje m obteniendo:

T P XU ROXK_X BIEN _HECHO

160 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Apartado c)
El nuevo sistema descrito nos permite garantizar la autora del mensaje puesto que
slo el usuario A conoce fA .
Puesto que ahora vamos a cifrar con fA1 el total del mensaje y calcularemos
mod n de ese valor, necesitaremos que n sea mayor que 27N siendo N la longitud
mxima de mensaje que vamos a definir.

Apartado d)
Para por ver como se enviara el mensaje con el nuevo protocolo debemos calcular
la clave privada de A y cifrar todo el mensaje con ella.
Procedemos a factorizar nA .
Para todo factor primo tenemos distinto de 2, que sabemos que es factor, tenemos:
(
p|33 1 = p|26 = p = 13 p = 2
p|39 1 =
p = 1 mod 18

As tenemos que
39 1
= 13 757
2
Llegados a este punto deberamos intentar factorizar el 757 pero, puesto que sa-
9
bemos que estamos trabajando con un algoritmo RSA, sabemos que 3 21 = p 1 por
lo que 757 ha de ser primo.
Ahora calculamos el inverso de eA mod nA , es decir:
1
mod 9072
3629

Vamos a ello
9072 = 2 3629 + 1814 1 = 3629 2 1814
=
3629 = 2 1814 + 1 1814 = 9072 2 3629 = 1 = 2 9072 + 5 3629

Con esto procedemos a descifrar el mensaje, puesto que al ser n = 3629 sabemos
que el tamao mximo del bloque es 2. (Lgicamente no tiene sentido que se usen
bloques de una sla letra, por lo que entendemos que los bloques son de longitud 2)
Puesto que el mensaje tiene un nmero de letras que no es mltiplo de 2, ste
deber ser completado de alguna forma previamente definida antes de ser cifrado.

Ejercicio 8.6: Supongamos que el alfabeto en claro tiene 29 letras con


0,...,26=A,...,Z [alfabeto castellano], 27=espacio en blanco, 28=el punto, y que el
alfabeto cifrado tiene 30 letras, aadiendo al anterior 29=?. Las unidades de texto
en claro sern digrafos vistos como nmeros de dos cifras en base 29, es decir,
enteros entre 0 y 840 [o elementos de Z841 ]. Anlogamente, las unidades de texto
cifrado sern digrafos vistos como enteros entre 0 y 899 [o elementos de Z900 ].

161 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

a) El cifrado de m es un entero 0 f (m) 850 tal que

f (m) := m13 + 2 (mod 851).

(Notar que (29)2 < 851 < (30)2 .) Descifra el mensaje LFN.

b) Es posible usar g(m) := m11 + 2 (mod 851) para cifrar?

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Para poder descifrar la clave podemos suponer que estamos trabajando con un
sistema RSA (una vez le restemos 2 al mensaje cifrado estaremos ante un sistema
RSA literalmente) con clave pblica e = 13 y n = 851.
Procedemos a factorizar 851 = p q = 37 23 por la cuenta de la vieja.
Ahora procedemos a calcular la clave privada:
1
d= mod 792 = 61
13

En esta ocasin es fcil ver que si multiplicamos por 13 60 andamos cerca de 792
y probando vemos rpido cul es el inverso.
Para quien no lo vea as de rpido siempre puede aplicar el algoritmo de Euclides.
Una vez conocemos la clave de descifrado procedemos a descifrar el mensaje:

LF = 335 mod 851 (335 2)61 mod 851 = 37 = BI 00


N N = 404 mod 851 (404 2)61 mod 851 = 129 = EN 00

Apartado b)
Podemos ver que no es posible emplear la funcin g para cifrar puesto que

(p 1)(q 1) = 792 = 11 72

Por tanto, si tratsemos de emplear esta funcin para cifrar, al tratar de encontrar
la clave privada veramos que es imposible puesto que e = 11 no es coprimo con
(p 1)(q 1).

Ejercicio 8.7: Supongamos que el alfabeto en claro tiene 29 letras con


0,...,26=A,...,Z [alfabeto castellano], 27=espacio en blanco, 28=el punto, y que el
alfabeto cifrado tiene 30 letras, aadiendo al anterior 29=? Las unidades de texto
en claro sern digrafos vistos como nmeros de dos cifras en base 29, es decir,
enteros entre 0 y 840 [o elementos de Z841 ]. Anlogamente, las unidades de texto
cifrado sern digrafos vistos como enteros entre 0 y 899 [o elementos de Z900 ].

162 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

a) El cifrado de m es un entero 0 f (m) 852 tal que

f (m) := m31 + 2 (mod 853).

(Notar que (29)2 < 853 < (30)2 .) Descifra el mensaje .CZE

b) Es posible usar g(m) := m32 + 2 (mod 853) para cifrar?

Hecho por Edu. Se aceptan correcciones.


Apartado a)
En primer lugar observamos que 853 es primo5 y podra entrar la duda si podremos
resolver el problema. La respuesta es que aunque RSA diga que n = pq es un requisito,
en realidad solo necesitamos que se pueda aplicar el Pequeo Teorema de Fermat (V.3)
y el Teorema Chino del Resto.
Por tanto, buscamos un d tal que e d = 1 mod (853). Como 853 es primo,
(853) = 852.
Procedemos al clculo de d usando el Algoritmo de Euclides Extendido:

852 = 27 31 + 15
31 = 2 15 + 1
1 = 55 31 2 852

Por tanto, d = 55; que en binario es 110111, y nuestra funcin inversa queda
fd1 (y) = (y 2)55 mod 853, con y = fe (x) para algn x.
Pasemos a descifrar. En primer lugar, pasamos el texto a nmeros:
.C = 28 30 + 2 = 842
ZE = 26 30 + 4 = 784
Por lo que tenemos que calcular:

(842 2)55 mod 853


(784 2)55 mod 853

Aplicamos el mtodo de exponenciacin binaria modular para calcular la potencia


5
n o
No es divisible por ningn primo en p  p {primes} , p 853 30 =
{2, 3, 5, 7, 11, 13, 17, 19, 23, 29}; y SAGE opina lo mismo.

163 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

55 en el primer caso:

8402 mod 853 = 169, 8404 mod 853 = 412


8408 mod 853 = 850, 84016 mod 853 = 9
84032 mod 853 = 81
8403 mod 853 = 840 8402 mod 853 = 362
8407 mod 853 = 8403 8404 mod 853 = 722
84023 mod 853 = 8407 84016 mod 853 = 527
84055 mod 853 = 84023 84032 mod 853 = 37

Y como 37 = 1 29 + 8, obtenemos BI, como primera unidad de texto en claro.


Y repitiendo el proceso en el otro caso obtenemos 78255 mod 853 = 129 =
4 29 + 13, que en texto es EN.
Juntndolo todo, el texto en claro es BIEN.

Apartado b)
No ser posible emplear la funcin g puesto que al calcular el inverso de 32 ten-
dramos que calcular el inverso de 32 en Z852 pero (32, 852) 6= 1 por lo que no tendr
inverso.

Ejercicio 8.8: Probar que 15 es un pseudo-primo en base 4, que 28 es un


pseudo-primo en base 9 y que 91 es un pseudo-primo en base 3.

Hecho por Edu. Se aceptan correcciones.


Apartado a)
Vamos a ver que esos nmeros son pseudoprimos para las bases dadas:
En primer lugar, vemos que (15, 4) = 1.
En segundo lugar, calculamos 4(151) mod 15. Como 14 = 1110 en base 2:

42 = 1 mod 15, 44 = 1 mod 15, 48 = 1 mod 15

luego 41 4 = 48 44 42 = 1 1 1 = 1 mod 15 por lo que vemos que efectivamente


da 1, luego 15 es pseudoprimo en base 4.

Apartado b)
Comprobamos que (28, 9) = 1.
Calculando 927 mod 28 comprobamos que efectivamente da 1. 27 en binario es
11011:

92 = 25 mod 28, 94 = 9 mod 28, 98 = 25 mod 28, 916 = 9 mod 28

164 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Luego 927 mod 28 = 9 25 25 9 = 1 mod 28, as que efectivamente, 28 es un


pseudoprimo en base 9.

Apartado c)
Nos cercioramos de que (91, 3) = 1.
Y tenemos que calcular: 390 mod 91. Que efectivamente, da 1.

Ejercicio 8.9: Sea n un nmero impar compuesto y sea (b, n) = 1.


a) Sea p un divisor primo de n y escribamos n0 = n/p. Probar que si n es un
0
pseudo-primo en base b entonces bn 1 1 mod p.
b) Demostrar que ningn entero de la forma n = 3p, con p > 3 primo, puede
ser un pseudo-primo en bases 2, 5 ni 7.
c) Demostrar que ningn entero de la forma n = 5p, con p > 5 primo, puede
ser un pseudo-primo en bases 2, 3 ni 7.
d) Probar que 91 es el menor pseudo-primo (impar) en base 3.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Si n es pseudoprimo en base b sabemos que

bn1 = 1 mod n = bn1 = 1 mod p puesto que p|n

Por tanto tenemos que


0 np
 np p
bn 1 = b p mod p = 6 b p mod p

As tenemos:
0 bn bn
bn 1 mod p = bnp mod p = mod p = mod p = bn1 mod p = 1
bp b

Apartado b)
Por el apartado a) sabemos que si n fuese pseudoprimo en base b, siendo n = 3 p
0
tomando n0 = 3 deberamos ver que bn 1 = 1 mod p.
Sin embargo, en este caso tenemos:

231 = 4 = 22 mod p

531 = 25 = 52 mod p
731 = 49 = 72 mod p
6
Por el pequeo teorema de Fermat ap = a mod p siendo p un primo cualquiera

165 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Recordemos que si tenemos una ecuacin de la forma

a2 = 1 mod p

siendo p un nmero primo, puesto que nos estamos moviendo en un cuerpo, necesita-
mos que a = 1 a = p 1.
En los casos que tenemos en este ejercicio es obvio ver que a 6= 1 y, en caso de
tener a = p 1 necesitaramos que p fuese 3,6 y 8 respectivamente.
El 3 es primo pero no cumple la condicin de ser estrictamente mayor que 3 y las
otras dos posibilidades no son valores primos.
En definitiva, no hay ningn primo p > 3 que haga que n = 3p sea pseudoprimo
en las bases 2,5 o 7.

Apartado c)
Con la misma idea del apartado anterior tenemos:

251 = 16 = 42 mod p

351 = 81 = 92 mod p
751 = 2041 = 492 mod p

Si tuvisemos que, en alguno de los casos anteriores:

a2 = 1 mod p

Ya hemos visto que necesitamos que a = 1 a = p 1


Puesto que 10 y 50 no son primos y 5 no es estrictamente menor que 5, es claro
que no hay ningn primo p, con las condiciones iniciales dadas, que haga que n = 5p
sea primo en bases 2,3 ni 7.

Apartado d)
Solucin del profesor:
Como 91 es impar no es divisible entre 2 y, como es pseudo-primo en base 3, no
es divisible entre 3. Por tanto su menor factor primo es 5.
Si tuviese 3 factores primos (iguales o distintos) seria entonces, como mnimo,
53 = 125 > 91, luego podemos suponer que slo tiene 2 factores primos, ambos
mayores o iguales que 5
Por el apartado anterior, deducimos que no puede ser n=5p con p>5, luego slo
tenemos que probar los casos 52 , 72 , 7 11 y 7 13 = 91, porque los dems ya son
ms grandes (7 17 = 119, 11 11 = 121).
Por tanto podemos comprobar los 4 casos a mano, que quedan como ejercicio para
el lector.

166 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 8.10:
a) Probar que si 2n 1 es primo entonces n es primo, y que si 2n + 1 es primo
entonces n = 2k . Los nmeros Mp := 2p 1, con p primo, se llaman nmeros
de Mersenne" y primos de Mersenne" en caso de ser primos. Los de la forma
k
Fk := 22 + 1 se llaman nmeros de Fermat" y primos de Fermat" si son primos.
Los primeros primos de Mersenne son 3,7, 31, 127, y todos los primos de Fermat
conocidos son 3, 5, 17, 257 y 65537.
b) Probar que todos los nmeros de Fermat y todos los nmeros de Mersenne
son pseudo-primos en base 2. (SUGERENCIA: Para los nmeros de Fermat, estudiar
k
primero 22 mod Fk , y comprobar que podemos calcular 2Fk a partir de este valor
por iteracin de cuadrados. Para los de Mersenne, empezar por ver que p|Mp 1
y deducir de ello que Mp = 2p 1|2Mp 1 1.)
c) A pesar de lo anterior, comprobar que uno puede ver que M11 = 2047 no
es primo utilizando un sencillo test de primalidad.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)

Demostramos que si 2n 1 es primo entonces lo es n


Hecho por Jorge. Se aceptan correcciones.
Por lo visto en teora, en la proposicin V.9, sabemos que si p|2n 1 entonces
bien p|2d 1 con d|n, d < n, bien p = 1 mod n.
Tomemos p = 2n 1 y supongamos n no primo, entonces sabemos que n tiene
algn divisor d|n con d < n, y por la proposicin V.9 tenemos p|2d 1 < 2n 1.
Sin embargo en nuestro caso tenemos precisamente p = 2n 1, con lo que
llegamos a la contradiccin de que 2n 1 < 2n 1.
7
Demostramos que si 2n + 1 es primo entonces n es potencia de 2
Si n es un nmero positivo que no es potencia de 2, debe tener un factor impar
s > 2, por lo que podemos escribir

n = r s con 1 r < n

Por otro lado sabemos que (a b)|(am bm ) (Wikipedia). Si tomamos a = 2r ,


b = 1 y m = s tenemos que

(2r + 1)|2rs + 1 puesto que s es impar = (2r + 1)|2n + 1

es decir, llegamos a que 2n + 1 no es primo.


Queda claro por tanto que n no puede tener ningn divisor impar y, por tanto,
ha de ser potencia de 2.

Apartado b)
7
Demostracin sacada de Wikipedia

167 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Demostramos que los nmeros de Fermat son pseudoprimos en bse 2


k
Nmero de Decimos que un nmero es un nmero de Fermat si Fk = 22 + 1.
Fermat
Atendiendo a la indicacin del enunciado vemos que
k
22 mod Fk = 1 mod Fk

Si queremos ver que Fk es pseudoprimo en base 2 debemos ver que


2k
2Fk 1 = 1 mod Fk 22 =1 mod Fk

k
Atendiendo al valor de 22 mod Fk , podemos ver que si multiplicamos este valor
k
por si mismo 22 k veces obtenemos:
 22k k k 22k k
2k 2k
2 = 22 = 22 =1 mod Fk puesto que 2 es par

Con lo que queda claro que Fk es pseudoprimo en base 2.

Demostramos que los nmeros de Mersenne son pseudoprimos en bse


2
Atendiendo a la sugerencia del enunciado vemos que

Mp 1 = 2p 2 = 2(2p1 1)

Recordando nuevamente la proposicin V.9 tenemos que si p = 1 mod n enton-


ces p|2n 1. En este caso tenemos que n = p 1 por lo que p, evidentemente
satisface la condicin, pues

p=1 mod p 1

Recordando una idea del apartado anterior tenemos que

(a b)|(am bm )

si tomamos a = 2p , b = 1 y m = Mpp1 (que sabemos que es un entero pues


acabamos de demostrar que p|Mp 1) nos queda

2p 1|2Mp 1 1

que es justo lo que queramos demostrar.

Apartado c)
Podemos explotar que 2047 = 211 1 y aplicar V.9. De hecho, este es el ejemplo
que vimos.

168 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 8.11:
a) Prueba que los siguientes son nmeros de Carmichael: 561, 1729, 2465,
41041, 825265.
b) Demuestra que 561 es el menor nmero de Carmichael.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Recordemos que un nmero es de Carmichael es aquel nmero compuesto, n, tal
que bn1 = 1 mod n para todo b coprimo con n.
Vamos a comprobar que los nmeros dados son de Carmichael comprobando, con
el ordenador, que se satisfacen las ecuaciones necesarias. A continuacin mostramos
la factorizacin de cada uno de los nmeros a estudiar




561 = 11 51 = 11 17 3
1729 = 7 247 = 7 13 19


2465 = 5 493 = 5 17 19
825265 = 5 165053 = 5 7 23579 = 5 7 17 1387 = 5 7 17 19 73

Apartado b)
Esta demostracin parece ser un Kaos al punto de que es ms fcil probar por
fuerza bruta que cascarse algunas demostraciones que he encontrado por internet.
Os dejo esta como ejemplo: Prueba de que 561 es el menor nmero de Carmichael
Solucin en clase:
Sabemos que los nmeros de Carmichael tienen, al menos, 3 factores primos y
que no tiene factores repetidos. (El Teorema de Korset nos lo garantiza). Adems
podemos descartar el 2 como factor, como demostraremos en el ejercicio 13 de esta
seccin.
El menor nmero posible que tenga 4 factores primos distintos es el nmero n =
3 5 7 11 > 561, luego sabemos que los posibles nmeros de Carmichael menores
que 561 tendrn slo tres factores primos.
Con esta idea podemos reducir la cantidad de candidatos posibles, al punto de
poder probar a mano.

Ejercicio 8.12: Supongamos que m es un entero positivo tal que 6m + 1,


12m + 1 y 18m + 1 son todos primos. Demostrar que n = (6m + 1)(12m +
1)(18m + 1) es un nmero de Carmichael. (Esta idea es una de las que han sido
utilizadas para intentar demostrar que hay infinitos nmeros de Carmichael, y du-
rante mucho tiempo fue el mtodo utilizado para encontrar nmeros de Carmichael
muy grandes.)

169 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Sabemos que n = p1 p2 p3 , con pi primos, ser un nmero de Carmichael si y


slo si pi 1|n 1, por el criterio de Korset
Lo que tenemos que hacer es demostrar que 6m, 12m y 18m divide a n 1. En
concreto basta con ver que 22 , 32 , m dividen a n 1.
Es decir, debemos comprobar que n = 1 mod 22 , 32 , m. Vamos a ello:

n mod m = (6m+1 mod m)(12m+1 mod m)(18m+1 mod m) = 1 mod m

n mod 4 = (2m + 1)(1)(2m + 1) mod 4 = 4m2 + 4m + 1 mod 4 = 1 mod 4


n mod 9 = (6m + 1)(3m + 1)(1) mod 9 = 1 9m2 mod 9 = 1 mod 9

Ejercicio 8.13: Dado que es muy facil saber si un nmero par es primo o no
(el nico par primo es el 2), no tiene demasiado sentido aplicar tests de primalidad
a los nmeros pares. Sin embargo, y por aquello de tener una teora completa, se
pide: demostrar que no existen nmeros de Carmichael pares, o sea, que para todo
n par existe b tal que (b, n) = 1 y bn1 6 1 mod n.

Hecho por Pedro. Se aceptan correcciones.


La demostracin es bien sencilla pues basta con tomar b = n 1.
As tenemos que n 1 y n son coprimos, pues en caso de tener un factor comn,
tendramos:

p|n p|n 1 = p|(n (n 1)) = p|1 = p = 1

En este caso tendramos

(n 1)n1 mod n = (1)n1 mod n = 1 mod n 6= 1 mod n

donde la ltima desigualdad se basa en que n 1 ser impar, puesto que n es par.

Ejercicio 8.14: Recordemos que la existencia de infinitos nmeros de Carmi-


chael es un resultado reciente (Alford, Granville, Pomerance 1992). Sin embargo,
la existencia de infinitos pseudo-primos (verdaderos, o sea, no primos) en base 2
era bien conocida. Posiblemente la demostracin ms simple es la siguiente (Ma-
lo 1903): probar que si n es un pseudo-primo en base 2 compuesto, entonces
n0 := 2n 1 tambin es un pseudo-primo en base 2 compuesto. (SUGERENCIA:
Tanto la composicin como la pseudo primalidad se basan en el hecho de que si a|b
entonces 2a 1|2b 1, y en observar que si n es pseudo-primo en base 2 entonces
n|n0 1.)

170 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Pedro. Se aceptan correcciones.


Si n es un pseudoprimo en base 2 tenemos que 2n = 2 mod n. A partir de esta
informacin queremos demostrar que
n 1 n 2
22 =2 mod 2n 1 22 =1 mod 2n 1

Sabiendo que n es pseudoprimo en base 2 tenemos que:

n|n0 1 n|2n 2 n|kn donde usamos que 2n = 2 mod n

Con lo que tenemos que n|n0 1.


Atendiendo de nuevo a la sugerencia del enunciado vemos que, dado que n|n0 1
sabemos que:
n 2 n 2 n 1
2n 1|22 1 = 22 1=0 mod 2n 1 = 22 =1 mod 2n 1

que es justo lo que queramos demostrar.

Ejercicio 8.15:
a) Encontrar los valores de b para cuales 21 es pseudoprimo fuerte en base b.
b) Encontrar los valores de b para cuales 35 es pseudoprimo fuerte en base b.

Hecho por Pedro. Se aceptan correcciones.


Recordemos que dado n Z impar con n > 9 y n 1 = r2s siendo r impar y
s 1, diremos que n es pseudoprimo fuerte en base b si (n, b) = 1 y o bien:

br = 1 mod n

o bien para algn 0 i s 1 se cumple


i
br2 = 1 mod n

Apartado a)
En este caso tenemos n 1 = 20 = 5 22 , por lo que tenemos r = 5.
Si tenemos que 21 es pseudoprimo en base b tenemos como posibles valores de b
aquellos nmeros coprimos con 21, es decir

b {2, 4, 5, 8, 10, 11, 13, 16, 17, 19}

Para ninguno de estos valores se satisface la condicin br = 1 mod n.


La segunda condicin nos da la posibilidad de que b2 r = 1 mod n para considerar
b como pseudoprimo fuerte.
Nuevamente no obtenemos ningn resultado, es decir, 21 no es pseudoprimo fuerte
en ninguna base.

171 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Apartado b)
En esta ocasin tenemos n 1 = 34 = 17 2 con lo que tenemos r = 17.
Los posibles candidatos son:
{2, 3, 4, 6, 8, 9, 11, 12, 13, 16, 17, 18, 19, 22, 23, 24, 26, 27, 29, 31, 32, 33, 34}

De todos estos, ninguno satisface la condicin b17 = 1 mod 35.


Nuevamente tenemos que el nmero dado (en este caso 35) no es pseudoprimo
fuerte en ninguna base.

Ejercicio 8.16: Encontrar el menor primo mayor que 7674. (La idea es
entender cmo se buscan primos grandes", aunque he limitado el tamao para
que podamos trabajar en la calculadora. Si tienes acceso a un ordenador puedes
buscar primos mayores (por ejemplo, de 6 cifras). Las dos pistas son: buscar siempre
los factores muy pequeos" y recordar que el menor nmero que es pseudoprimo
fuerte en bases 2 y 3 es 1.373.653 = 829 1657.)

Hecho por Pedro. Se aceptan correcciones.


Lo que haremos ser ir probando con todos los nmeros posibles a partir de 7674.
Para cada uno de estos nmeros comprobaremos si es divisible por los primos ms
pequos:
P = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 39}

Si es divisible por todos estos nmeros comprobaremos si es pseudoprimo en bases


2 y 3. En caso afirmativo sabremos que es primo, pues no hay ningn compuesto menor
que 1373653 que sea pseudoprimo fuerte en esas bases.
A base de ordenador llegamos a que el menor primo por encima de 7674 es el 7681,
que es pseudoprimo en las bases 2 y 3.

Los dos ejercicios siguientes muestran que la condicin de pseudo-primalidad fuerte


es mucho ms restrictiva que la de pseudo-primalidad, y cmo esto se puede aprovechar
para factorizar.

Ejercicio 8.17: Demuestra que 561, que es incluso un nmero de Carmichael,


no es un pseudo-primo fuerte en base 2. (De hecho, 561 solo es pseudo-primo fuerte
en 8 de las 318 bases no triviales posibles. Los otros dos pseudo-primos en base 2
menores que 1000, o sea, 341 y 645, tampoco son pseudo-primos fuertes en base
2.)

Hecho por Pedro. Se aceptan correcciones.


Para ver si es pseudoprimo fuerte en base 2 escribimos
561 1 = 560 = 35 24 = r = 35 s = 4

172 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Veamos si se cumple la primera condicin de los pseudoprimos fuertes 2r = 1


mod n:
235 = 263 mod 561
con lo que la primera condicin no se satisface.
i
Veamos la siguiente: siendo 0 i s 2r2 = 1 mod n para lo que tenemos
que probar los 4 posibles valores de i.
As obtenemos:
235 = 263 mod 561
2352 = 166 mod 561
2
2352 = 67 mod 561
3
2352 = 1 mod 561

Con lo que vemos que, efectivamente, el 561 no es pseudoprimo fuerte en base 2.

Ejercicio 8.18: Prueba que si encontramos un b tal que n es pseudo-primo


en base b, pero no pseudo-primo fuerte en base b, entonces no es difcil encontrar
un factor no trivial de n.

Hecho por Edu. Se aceptan correcciones.


Revisado por Jorge. Se siguen aceptando correcciones
Traducido de: http://www.maths.ed.ac.uk/~chris/NTh/Ch4_Primality_testing.
pdf
Sabemos que n es pseudo-primo en base b, luego

bn1 = 1 mod n

pero como no es pseudo-primo fuerte en base b, luego tenemos que si n 1 = 2s r


entonces
t t1 r
t s 1 tal que b2 r = 1 mod n y b2 6= 1 mod n

t
Luego b2 r 1 = 0 mod n, es decir,
t t1 r t1 r
b2 r 1 = (b2 1)(b2 + 1) = AB = k n

t1 r
Ahora, observamos que n no puede dividir a ningn (b2 1) ya que si lo hiciera
t1
tendramos que b2 r = 1 mod n.
t1 r t1 r
Tomando g1 = gcd(b2 1, n) y g2 = gcd(b2 + 1, n), se tiene que:

gcd(g1 , g2 ) = gcd(n, g1 , g2 ) = gcd(n, g1 , g2 g1 ) = gcd(n, g1 , 2) = 1,

La ltima igualdad se deduce delQhecho de que n es impar. Por tanto si expresamos


n como producto de primos n = i pni i , sabemos que cada potencia de primos pni i
solo divide A B, y de este modo podemos expresar n como producto de los factores:

173 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

t1 r
f1 = gcd(b2 1, n)
2t1 r
f2 = gcd(b + 1, n) y
n = f1 f2

A.9. Hoja 5

Ejercicio 9.1: Cifra la palabra CASA" usando el sistema ElGamal con


p = 997, g = 2 y e = 27, utilizando como unidades de texto en claro digrafos
en el alfabeto castellano de 27 letras (de la manera estndar o con la observacin
del problema siguiente) y como unidades de texto cifrado los elementos de F997
F997 (sin convertirlos en letras). Encuentra la clave privada d y comprueba que el
resultado es correcto.

Hecho por Pedro. Se aceptan correcciones.


Para enviar el mensaje separamos la palabra CASA en dos bloques de dos letras
y procedemos a cifrarlas, tomando como clave el valor k = 2.

Observacin: El valor k = 2 es ridculo pero al fin y al cabo estamos simplemente


con un ejercicio.

CA = 54 (g k , mek ) mod p = (4, 483) mod 997


SA = 513 (4, 102) mod 997

Para encontrar la clave privada es sencillo ver que 997 + 27 = 1024 = 210 con lo
que la d escogida por el usuario que recibe el mensaje es d = 10.
Para descifrar el mensaje el usuario calcula:

cd k 10
1 = (g ) = (g k )986 = mek (g k )986 = m

Es decir:

4986 mod 997 = 93 = m = 483 93 mod 997 = m = 54 = CA

m = 102 93 mod 997 = 513 = SA

Ejercicio 9.2: En la gua de una red de comunicaciones aparece la siguiente


informacin:
ESTRUCTURA GENERAL: Los mensajes, escritos en el alfabeto castellano de
27 letras (con y W) con los equivalentes nmericos habituales (A = 0, . . . , Z =

174 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

26), se cifrarn mediante el criptosistema de ElGamal sobre el cuerpo finito


F733 (= Z/733), y se utilizar g = 7 como generador de F733 . (Nota para el
lector interesado: 2, 3 y 5 NO son generadores de F733 .) Las unidades de tex-
to en claro sern digrafos, pero para evitar inconvenientes que se discutirn luego,
en lugar de hacer lo habitual, XY = X 27 + Y , sumaremos 1 a esta cuen-
ta: XY = X 27 + Y + 1. De este modo el conjunto de mensajes en claro es
{AA = 1, . . . , ZZ = 729} F733 . Todas las unidades de un mensaje se cifrarn
con la misma clave, es decir, para comunicar el mensaje N1 N2 N3 . . . al usuario A
se le enviar (g k , N1 ekA , N2 ekA , N3 ekA , . . . ). Este mensaje se enviar como nmeros.
CLAVES DE LOS USUARIOS . . . . . . . . e(= g d )
Usuario A . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Usuario B . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
etctera
a) Comprueba que no habra ninguna dificultad para usar el sistema si se utili-
zase la convencin usual para digrafos, XY = X 27+Y , pero que en ese caso AA
se cifrara siempre como 0, lo que sera una debilidad del sistema. Pon un ejemplo
de un mensaje en el que aparezca el digrafo AA.
b) El usuario A, cuya clave secreta es dA = 12, recibe de B el mensaje
(654, 449, 549). Qu le ha dicho B?
c) Ahora A quiere decirle SI a B. Elige como exponente para cifrar el mensaje
k = 8. Qu debe enviarle a B?
d) B ha sido descuidado y le ha dicho a A que ha utilizado como exponente
secreto dB un nmero menor que 10. Cmo es dB ?

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Si A emplea el sistema habitual para enviar un mensaje a B, una vez ha seleccionado
un k al azar, el procedimiento a seguir ser:
XY 27 X + Y (27X + Y )ekB mod 733

Una vez B reciba el mensaje, puesto que conoce eB = g ed , puede calcular el inverso
de dB = d0B y calcular
0
(27 X + Y )(g k )dB (g k )dB = (27 X + Y )

Puesto que descifrar el mensaje implica resolver el problema del logaritmo discreto
(salvo que conozcas dB ), el sistema es seguro.
Sin embargo, si tenemos que cifrar el digrafo AA, lo que enviaremos ser un 0, lo
que aporta bastante informacin al atacante acerca del mensaje que se est enviando.
Esto aporta mucha informacin al enemigo que puede realizar pruebas buscando
las letras ms probable que acompaan al digrafo AA llegando a encontrar la clave
para descifrar, pues todo el mensaje est cifrado con la misma clave.

175 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Apartado b)
Para poder descifrar el mensaje, lo primero que debemos hacer es encontrar el
inverso aditivo de dA = 12 mod 733 = 720.
Una vez tenemos este valor, procedemos a descifrar el mensaje:

449 654720 mod 733 = 205 = 7 27 + 15 + 1 = HO


549 654720 mod 733 = 298 = 11 27 + 0 + 1 = LA

Apartado c)
Procedemos a cifrar el mensaje

SI = 19 27 + 8 + 1 = 522

g k mod 733 = 78 mod 733 = 489 = Enviamos: (489, 236)
8
522 369 mod 733 = 236

Apartado d)
Podemos calcular las potencias posibles de g = 7 y ver qu ocurre:

dB =1 g db mod 733 = 7
dB =2 g db mod 733 = 49
dB =3 g db mod 733 = 343
dB =4 g db mod 733 = 202
dB =5 g db mod 733 = 681
dB =6 g db mod 733 = 369

Ya tenemos que dB = 6

Ejercicio 9.3: El Gamal hizo la siguiente propuesta de firma digital utilizando


el logaritmo discreto sobre un cuerpo Fp con p un primo grande.
Paso 1) Todo el mundo se pone de acuerdo en un primo p y en un generador
g de Fp .
Paso 2) Ana (y todos los dems usuarios), elige un exponente dA que mantiene
secreto, y hace pblico eA g dA mod p (exctamente como en el criptosistema
de El Gamal).
Paso 3) Para enviar su firma (para ese mensaje), que viene dada por un nmero
f , con 0 f p 1, Ana elige al azar un nmero k tal que (k, p 1) = 1. Luego
calcula r g k mod p y resuelve la ecuacin g f erA rx mod p en la incgnita
x. Finalmente Ana enva a Beatriz el par (r, x) junto a su firma f .
Paso 4) Beatriz comprueba que g f erA rx mod p, y se asegura de que la
firma f corresponde a Ana.
a) Comprueba que Ana conoce todo lo necesario para poder calcular x.

176 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

b) Comprueba que Beatriz conoce todo lo necesario para certificar la firma.


c) Comprueba que Cristina no puede hacerse pasar por Ana sin conocer dA ,
es decir, sin resolver el problema del logaritmo discreto, y que por tanto Beatriz
puede estar segura de que el mensaje procede de Ana.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Ana deber resolver la ecuacin:

g f = erA rx mod p g f = erA (g k )x mod p g f = g dA r g kx mod p

f = rdA + kx + h con g h = 1 mod p

Pero por ser p primo sabemos que

gp = 1 mod p = h = p

Puesto que A conoce f, r, dA y k, slo tiene que resolver una ecuacin lineal para
calcular x.

Apartado b)
Beatriz, de la misma forma, debe comprobar que

g f = erA rx

puesto que conoce eA , r, x, g slo tiene que comprobar que la f recibida encaja en
la ecuacin, de la cual conoce todos los dems valores.

Apartado c)
El atacante, Cristina en este caso, conocer f, eA , g tras haber interceptado una
comunicacin y haber realizado sus deberes de espa.
Es imposible que conozda dA sin resolver el problema de logaritmo discreto por lo
que es imposible que resuleva la ecuacin lineal f = rdA + kx + p y, por tanto, no
puede hacerse pasar por Ana, ya que no podr calcular el valor x necesario.
Otra posible forma de atacar sera calcular la x que emplear el destinatario para
descifrar el mensaje.
El atacante conce g f , erA y r. An en esta situacin, para poder calcular la x
que satisface la ecuacin necesitara resolver un problema de logaritmo discreto, que
sabemos no es viable.

Ejercicio 9.4: Factorizar los nmeros 200819 y 141467 usando el mtodo


de Fermat.

177 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Pedro. Se aceptan correcciones.


El mtodo de Fermat consiste en encontrar dos enteros cercanos tales que la dife-
rencia de sus cuadrados sea el nmero que queremos factorizar.
p
200819 = x2 y 2 = x = 200819 + y 2

Empezamos a probar con enteros x > 200819 = 448:

x = 449 y = 782
x = 450 y = 1681 = 41

As llegamos a que
200819 = (x + y)(x y) = 409 491

Vamos a por el otro nmero:



x> 141467 = 376

178 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja


x = 378 y = 1417 = 37.6430604494
x = 379 y = 2174 = 46.6261729075
x = 380 y = 2933 = 54.1571786562
x = 381 y = 3694 = 60.7782855961
x = 382 y = 4457 = 66.7607669219
x = 383 y = 5222 = 72.2634070606
x = 384 y = 5989 = 77.3886296558
x = 385 y = 6758 = 82.2070556583
x = 386 y = 7529 = 86.7698104181
x = 387 y = 8302 = 91.1153115563
x = 388 y = 9077 = 95.2732911156
x = 389 y = 9854 = 99.2673158698
x = 390 y = 10633 = 103.116439039
x = 391 y = 11414 = 106.836323411
x = 392 y = 12197 = 110.440028975
x = 393 y = 12982 = 113.938579946
x = 394 y = 13769 = 117.3413823
x = 395 y = 14558 = 120.656537328
x = 396 y = 15349 = 123.891081196
x = 397 y = 16142 = 127.051170794
x = 398 y = 16937 = 130.142229887
x = 399 y = 17734 = 133.169065477
x = 400 y = 18533 = 136.13596145
x = 401 y = 19334 = 139.046754727
x = 402 y = 20137 = 141.904897731
x = 403 y = 20942 = 144.713510081
x = 404 y = 21749 = 147.475421681
x = 405 y = 22558 = 150.193208901
x = 406 y = 23369 = 152.869225157
x = 407 y = 24182 = 155.505626908
x = 408 y = 24997 = 158.104395891
x = 409 y = 25814 = 160.667358228
x = 410 y = 26633 = 163.196200936
x = 411 y = 27454 = 165.692486251
x = 412 y = 28277 = 168.157664113
x = 413 y = 29102 = 170.593083095
x = 414 y = 29929 = 173.0
As llegamos a que
141467 = (x + y)(x y) = 587 241

Ejercicio 9.5: Los nmeros 85026517 y 85026567 son producto de dos


primos. Factorizarlos.

179 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Pedro. Se aceptan correcciones.


Empleamos de nuevo el mtodo de Fermat, que ya lo tengo implementado para
que me escriba el texto en latex y todo y voy a darle uso.

Empezamos con el 85026517, para el que tenemos que x > 85026517 = 9220

x = 9221 y = 324 = 18.0

Para factorizar el siguiente nmero, si empleamos el mismo algoritmo no acabamos


nunca (lo probe con ordenador con hasta 500 pasos sin lograr nada). Por tanto, nos
vemos obligados a pensar.
En este caso es sencillo ver que 85026567 es mltiplo de 3 por lo que tenemos:
85026567 = 3 28342189

Ejercicio 9.6: Sea n = 4633. Encontrar el conjunto de primos P tal que


los cuadrados de 699, 69 y 70 mdulo n son P-suaves. Usando esta informacin
factorizar n con en el mtodo de Kraitchik.

Hecho por Pedro. Se aceptan correcciones.


Los nmeros P-suaves son aquellos que factorizan en P.
Por tanto, lo que tenemos que hacer es factorizar los cuadrados de los nmeros
que se nos dan y agrupar estos factores formando el conjunto P.


6992 mod n = 2136 = 267 23 = 89 3 23

2 7
69 mod n = 128 = 2 = P = {2, 3, 89}
702 mod n = 267 = 89 3


Para aplicar el mtodo de Kraitchik empezamos calculando x0 = d ne = 69 y
comenzamos a iterar aplicando la funcin Q(x) = x2 n.
As obtenemos los valores:
Q(69) = x1 = 128 = 27
Q(70) = x2 = 267 = 89 3
Q(71) = x3 = 408 no es factorizable en P
Q(699) = x630 = 2136 = 267 23 = 89 3 23

Ahora multiplicamos mdulo n los nmeros que factorizan en P con lo que obte-
nemos:
69 70})2 = |210 3{z2 89}2 mod n
| {z
(699
x y2

Ahora slo tenemos que calcular el mximo comn divisor:


m.c.d.(xy, n) = m.c.d. 699 69 70 25 3 89, 4633 = m.c.d.(3367626, 4633) = 113


180 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

As nos queda que


n = 4633 = 113 41

Ejercicio 9.7: El nmero 12871 es el producto de dos primos. Utiliza el


mtodo de Kraitchik para factorizarlo. (Nota: al cribar los Q(x) no hace falta que
te preocupes de los primos p 17.)

Hecho por Pedro. Se aceptan correcciones.


Atendiendo a la indicacin del enunciado vamos a considerar

P = {2, 3, 5, 7, 11, 13}



Empezamos considerando x0 = d 12871e = 114
Procedemos a iterar:
Q(114) = x1 = 125 = 53
Q(115) = x2 = 354 no es factorizable en P
Q(116) = x3 = 585 = 5 32 13
Q(117) = x4 = 818 no es factorizable en P
Q(118) = x5 = 1053 = 34 13
Q(119) = x6 = 1290 no es factorizable en P
Q(120) = x7 = 1529 no es factorizable en P

Ahora tenemos

(114 116 118)2 = 54 36 132 mod n(= 12871)

Calculamos

m.c.d.(x y, n) = m.c.d.(1551657, 12871) = 61

Finalmente
12871 = 61 211

Ejercicio 9.8: Suponemos que N es producto de dos primos distintos.


Demostrar que si conocemos x ZN distinto de 0 y 1 tal que x2 = x, entonces
podemos factorizar N de forma eficiente.

Hecho por Pedro. Se aceptan correcciones.


Si sabemos que x2 = x mod n sabemos que

x2 x = kn

181 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

por tanto, todo factor primo de n cumple

p|n = p|(x2 x) = p|x(x 1) = p|x p|(x 1)

Por tanto, una vez tenemos el x con la condicin dada, basta con factorizar x y
x 1 para tener todos los posibles factores primos de n.
Una vez tenemos la lista de candidatos slo tenemos que probar.

Ejercicio 9.9: Sea n = 7785562197230017200 = 24 33 52 7 11 13 19


31 37 41 61 73 181.
a) Encontrar 6647362 modQn. (SUGERENCIA:Cunto vale 6647360 mod p
para cada p si escribimos n = p ?)
b) Sea a un entero tal que (a, n) = 1 encontrar una potencia positiva r, con
r < 500 y tal que ar a1 mod n.

Hecho por Edu. Se aceptan correcciones.


Apartado a)
Hay 3 formas de resolver el problema:

1. La matada (aka La mia):


Pensamos en que es un excelente ejercicio de prctica del algoritmo de expo-
nenciacin binaria modular. Escribimos 362 = 101101010 en base 2 y ya solo
hay que calcular 6647362 mdulo 24 , 33 , 52 , 7, 11, 13, 19, 31, 37, 41, 61, 73 y 181 y
luego resolver un sistema de inecuaciones aplicando el Teorema Chino del Resto
(II.5).

2. La pasota:
Le pedimos a Sage que haga todos esos clculos y resuelva el sistema. Hay
gente ms inteligente que nosotros que se dedica a optimizar estos clculos por
nosotros.

3. La inteligente o la buena o la de un matemtico de verdad:


Debido a que ninguna de las dos estrategias anteriores es ni eficiente ni de
provecho, le pedimos ayuda al profesor y nos comenta que la pista NO es una
errata y que recordemos el teorema de Euler8 :

Teorema A.1 (Teorema Euler-Fermat). Sean a y n enteros primos entre s,


entonces
a(n) = 1 mod n
donde (n) es la funcin phi de Euler (II.5).

8
https://en.wikipedia.org/wiki/Eulers_theorem

182 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Observacin: De este teorema se deduce trivialmente V.3.


Bien, con estas dos poderosas herramientas en mente:
Primero factorizamos 360 = 23 32 5. Despus, debemos calcular las 13 con-
gruencias, para finalmente aplicar el Teorema Chino del Resto.
Comenzamos calculando el valor de la () de cada uno de los trminos:

(24 ) = 23 (2 1) = 8
(33 ) = 32 (3 1) = 18
(52 ) = 5 (5 1) = 20
(7) = 6, (11) = 10
(13) = 12, (19) = 18
(31) = 30, (37) = 36
(41) = 40, (61) = 60
(73) = 72, (181) = 180

Y aplicando el teorema:

6647362 = 66472+458 = 66472 = 1 mod 24


6647362 = 66472+2018 = 66472 = 25 mod 33
6647362 = 66472+1820 = 66472 = 9 mod 52
6647362 = 66472+606 = 66472 = 2 mod 7
6647362 = 66472+3610 = 66472 = 9 mod 11
6647362 = 66472+3012 = 66472 = 3 mod 13
6647362 = 66472+2018 = 66472 = 9 mod 19
6647362 = 66472+1230 = 66472 = 14 mod 31
6647362 = 66472+1036 = 66472 = 21 mod 37
6647362 = 66472+940 = 66472 = 25 mod 41
6647362 = 66472+660 = 66472 = 4 mod 61
6647362 = 66472+572 = 66472 = 16 mod 73
6647362 = 66472+2180 = 66472 = 147 mod 181

Y ahora solo nos falta aplicar el Teorema Chino del Resto ya que todos los
mdulos son coprimos.
Llegados a este punto, nos plantearamos si tenemos que resolver este sistema
as, o si hay algo que no estamos enfocando correctamente.
Un matemtico de verdad saltara al siguiente apartado, y luego vera si esto se
puede resolver de forma ms eficiente.
Por otro lado... yo tiro por hacer las cuentas a mano.

183 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Calculamos los Mi y los bi :

M1 = 33 52 7 11 13 19 31 37 41 61 73 181
b1 = M11 mod m1 = 3 mod m1
M2 = 24 52 7 11 13 19 31 37 41 61 73 181
b2 = M21 mod m2 = 7 mod m2
M3 = 24 33 7 11 13 19 31 37 41 61 73 181
b3 = M31 mod m3 = 2 mod m3
M4 = 24 33 52 11 13 19 31 37 41 61 73 181
b4 = M41 mod m4 = 1 mod m4
M5 = 24 33 52 7 13 19 31 37 41 61 73 181
b5 = M51 mod m5 = 4 mod m5
M6 = 24 33 52 7 11 19 31 37 41 61 73 181
b6 = M61 mod m6 = 6 mod m6
M7 = 24 33 52 7 11 13 31 37 41 61 73 181
b7 = M71 mod m7 = 3 mod m7
M8 = 24 33 52 7 11 13 19 37 41 61 73 181
b8 = M81 mod m8 = 7 mod m8
M9 = 24 33 52 7 11 13 19 31 41 61 73 181
b9 = M91 mod m9 = 12 mod m9
M10 = 24 33 52 7 11 13 19 31 37 61 73 181
1
b10 = M10 mod m10 = 10 mod m10
4 3 2
M11 = 2 3 5 7 11 13 19 31 37 41 73 181
1
b11 = M11 mod m11 = 8 mod m11
4 3 2
M12 = 2 3 5 7 11 13 19 31 37 41 61 181
1
b12 = M12 mod m12 = 1 mod m12
4 3 2
M13 = 2 3 5 7 11 13 19 31 37 41 61 73
1
b13 = M13 mod m13 = 77 mod m13

13
P
Y si calculamos ai bi Mi mod 7785562197230017200 = 44182609.
i=1

Apartado b)
Utilizando el enfoque del ejercicio anterior, observamos que lo que buscamos es
que
r + 1 = lcm((24 ), (33 ), (52 ), . . . , (73), (181))
ya que ar+1 mdulo cada uno de los factores ser 1 por el Teorema de Euler, y
por el Teorema Chino del Resto, ar+1 = 1 mod n.9
Vemos que ese mnimo comn mltiplo es 360, luego r = 359.
9
Lo mejor es que esta solucin vale a tales que (a, n) = 1.

184 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por tanto, cualquier nmero coprimo con n elevado a 360 ser siempre 1. Con
este dato, como 6647 es primo10 y no divide a n, son coprimos, luego

6647362 = 66472 6647360 = 66472 1 = 44182609 mod n

como calculamos antes, pero con la diferencia de que esta cuenta se puede hacer
con la calculadora y es infinitamete ms sencilla.

A.10. Hoja 6

Ejercicio 10.1:
a) Encuentra el dgito de control (c) de los siguientes EAN: 5-449000-00099c,8-
410240-32700c.
b) Cules de los siguientes EAN puedes asegurar que son incorrectos?: 6-
39844-06292-3, 9-780198-538095, 8-410420-327003.
c) Al leer un UPC se ha borrado un nmero (que representamos por una a) y
hemos recibido 3-03a65-00879-5. Cunto vale a?

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
En los cdigos de barras el bit de control se calcula con la frmula:

X 5 5
X
x12 = x2i + 3 x2i+1 mod 10
i=0 i=0

Aplicando la frmula obtenemos:

5 449000 00099c c = (5 + 12 + 4 + 27 + 9 + 27) mod 10 = 3 mod 10 = 7


8 410240 32700c c = (8 + 12 + 1 + 2 + 12 + 9 + 2 + 21) mod 10 = 7

Apartado b)
Para comprobar si son incorrectos calculamos x12 y vemos si coincide con el x12
dado.
6 39844 06292 3 x12 = (16 + 3 + 27 + 8 + 12 + 4 + 6 + 6 + 9 + 6) mod 10 = 97 mod 10 = 3
9 780198 538095 x12 = (27 + 7 + 24 + 3 + 9 + 24 + 5 + 9 + 8 + 9) mod 10 = 125 mod 10 = 5
8 410420 327003 c = (24 + 4 + 3 + 12 + 2 + 3 + 6 + 7) mod 10 = 61 mod 10 = 9

Slo podemos asegurar que el ltimo cdigo es incorrecto.


10
creedme. O creed a Sage.

185 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Apartado c)
Calculamos de nuevo el dgito x12 forzamos a que el valor obtenido coincida con el
real.

5 = (9+9+a+18+5+24+7+27+5) mod 10 = (a+104) mod 10 = a+4 mod 10

Resolviendo la ecuacin llegamos a

a = 4 mod 10 = 6

Ejercicio 10.2:
a) Encuentra el dgito de control (c) de los siguientes ISBN: 3-540-96311-c,
84-8310-055-c.
b) Cules de los siguientes ISBN puedes asegurar que son incorrectos?: 84-
293-5922-8, 0-19-853803-0, 84-230-5921-X, 12-345-678X-5.
c) Al recibir un ISBN se ha borrado un nmero (que representamos por una a)
y hemos recibido 0-13-1a9139-9. Cunto vale a?
d) Al recibir un ISBN se han borrado parcialmente dos nmeros (que represen-
tamos por a y b) y hemos recibido 0-02-32ab80-0. Somos capaces de ver la parte
superior de a y b, y de ello deducimos que a, b {0, 8, 9}. Cunto valen a y b?

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Recordemos que el dgito de control en los cdigos ISBN se calcula segn la frmula:
10
X 9
X 9
X
ixi = 0 mod 11 = 10x10 = ixi mod 11 = x10 = ixi mod 11
i=1 i=1 i=1

3 540 96311 c c = 3 + 10 + 12 + 45 + 36 + 21 + 8 + 9 mod 11 = 144 mod 11 = 1


84 8310 055 c c = 8 + 8 + 24 + 12 + 5 + 40 + 45 mod 11 = 142 mod 11 = 9

Apartado b)
Para ver si son incorrectos calculamos x10 y comprobamos que coincida con el que
nos dan en el propio nmero.

84 293 5922 8 x10 = 156 mod 11 = 8


0 19 853803 0 x10 = 150 mod 11 = 3
84 230 5921 X x10 = 118 mod 11 = 2
12 345 678X 5 incorrecto

186 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Para el ltimo caso no hemos necesitado realizar la cuenta puesto que el caracter
X que representa el nmero 10 slo puede aparecer en el dgito de control.
Para el resto de casos, la comprobacin de la suma de control nos dice que los dos
ltimos cdigos contienen errores.

Apartado c)

0 = 2+9+4+5a+54+7+24+81+90 mod 11 = 5a+7 = a = 94 mod 11 = 3

Apartado d)
Los valores posibles sern aquellos que satisfagan la ecuacin:

0 = 6 + 12 + 10 + 6a + 7b + 64 mod 11 = 6a + 7b + 4 mod 11

Vamos a probar con los valores que tenemos:

a=0 b=1
a=8 b=2
a=9 b=9

Con lo que parece razonable asumir que (a, b) = (9, 9)

Ejercicio 10.3: P El NIF tiene la estructura x7 x6 x5 x4 x3 x2 x1 x0 r con xi


{0, . . . , 9} y r 7i=0 10i xi mod 23. Cada resto mdulo 23 se representa por
una letra de acuerdo con la siguiente tabla [no se utilizan I, ,O, U].

r 0 1 2 3 4 5 6 7 8 9 10 11
Letra T R W A G M Y F P D X B

r 12 13 14 15 16 17 18 19 20 21 22
Letra N J Z S Q V H L C K E

a) Encuentra la letra de control de los siguientes NIF: 2631173r, 841241r.


b) Cules de los siguientes NIF puedes asegurar que son incorrectos?: 2516344-
A, 76105-Q, 2516344-Y.
c) Demuestra que esta estructura permite: detectar un error; detectar el in-
tercambio de dos dgitos; recuperar un dgito (o la letra) borrado si se sabe qu
posicin ocupa.
d) Comprueba que el apartado c) seguira siendo cierto si r se calculase mdulo
17, pero no si se calculase modulo m con m < 17.
e) Al recibir un NIF se ha borrado un nmero (que representamos por una a)
y hemos recibido 0330a082 Q. Cunto vale a?

187 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Lo nico que debemos hacer es calcular el valor del DNI mdulo 23 y mirar las
tablas para ver con qu letra se relaciona el nmero obtenido.
As tenemos que los NIF seran 2631173 L y 841241 Q

Apartado b)
Para ver si son incorrectos vamos a calcular la letra correspondiente al DNI y
comprobar si coincide con la letra en el NIF.
As tenemos que parece ser correcto el NIF: 2516344 Y mientras que a los otros
dos les correspondera: 2516344 Y y 76105 K por lo que seguro son incorrectos
los dados por el enunciado.

Apartado c)
Este ejercicio esta hecho en teora a la hora de estudiar el NIF.

Apartado d)
Vamos a ver los diferentes casos que debemos comprobar

Detectar un error
Si el dgito xi pasa a ser xi + e tendremos que
r = r + 10i e mod 17

El error pasar desapercibido si r = r, cosa que slo ocurrir cuando


10i e = 0 mod 17 (101 )i 10i e = (101 )i 0 = e = 0 mod 17

donde la existencia de 101 es clara puesto que 17 es primo.


Por tanto, est claro que siempre se detectar el error.
Recuperar un nmero borrado
Si sabemos en qu posicin estaba la cifra que hemos perdido, podemos recal-
cularla mediante la frmula:

1 X
xi = i xj 10j L
10 j6=i

El nico problema que podramos tener es que la fraccin nos de un 0 en el


denominador, cosa que se evita siempre que (m, 10)=1 y funciona para m = 17.
Intercambio de dgitos
Siguiendo el mismo razonamiento del apartado anterior, no detectaremos el in-
tercambio de dos dgitos siempre que
10i e10j e = 0 mod 17 = 10i 10j = 0 mod 17 = 10j (10ij 1) = 0 mod 17

188 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Puesto que estamos asumiendo que i > j tenemos que el sistema falla si

10ij = 1 mod 17 10k = 1 mod 17 con k [1, 7]

Llegados a este punto es sencillo comprobar que siempre que ningn k del inter-
valo vlido satisface esa relacin.
Sin embargo, si tomamos m = 11 tendremos que k = 2 satisface la ecuacin,
con lo que no podramos emplear m = 11.
Por otro lado, si tomamos m = 13 tenemos un problema con k = 6 se satisface
106 = 1 mod 13

Con esto queda claro que tomando m = 17 no tenemos ningn problema pero si
tomamos un m menor no podramos detectar el intercambio de dos dgitos.

Apartado e)
Podemos ver que

16 mod 23 = 3300082+a1000 mod 23 = 19+11a23 = 11a = 20 mod 23 =

= a = 21 20 mod 23 = 6

Ejercicio 10.4: Si al escribir un ISBN se olvida una cifra se detecta in-


mediatamente: el ISBN 12-345-678-9 es forzosamente incorrecto, porque un ISBN
correcto tiene 10 cifras. Esto sucedera tambin con el NIF si siempre se escribiesen
8 cifras y una letra. Sin embargo es costumbre escribir el NIF 02516341-A simple-
mente como 2516341-A. Tomando esto en consideracin, hay NIFs en los que no
se detecte el olvido de una cifra? y de dos cifras consecutivas? y de dos cifras
no consecutivas?

Recordemos que en el NIF tenamos:


10
X
ixi = 0 mod 23
i=1

Si olvidamos una cifra y el sistema asume que lo que faltan son 0s sin valor al
inicio del nmero, cometeremos un error.
Por ejemplo, el NIF 02516341A es correcto y si le sumo 23000000 la letra no
cambiar, pues 23000000 = 0 mod 23 con lo que el NIF 25516341A tambin es
correcto.
Si el dueo de este segundo NIF lo introduce errneamente tecleando slo un 5,
escribir 2516341A que ser confundido con 02516341A.
Si olvidamos dos cifras y el sistema sume que lo que faltan son 0s al inicio del
nmero, cometemos un error.

189 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por ejemplo, el NIF 23000000T es vlido. Si el usuario olvida introducir una


cantidad cualquiera de 0s, puesto que la diferencia entre el nmero real y el introducido
es mltiplo de 23, tendrn la misma letra. Esto causa que 230000T sea tambin vlido
y sea confundido con 00230000T.

Ejercicio 10.5: El Cdigo de las Tarjetas de Crdito (CODABAR): El nmero


de las tarjetas de crdito esta compuesto por 16 cifras a las que se exige que:
2(a1 + a3 + a5 + a7 + a9 + a11 + a13 + a15 ) + a2 + a4 + a6 + a8 + a10 + a12 + a14 + a16 +
nmero de dgitos en posicin impar que son mayores que 4 = 0 mod 10

a) Comprueba que 4599-8834-3278-8311 y 4605-0521-5847-2052 son CODA-


BARs correctos.
b) Estudia la capacidad de este cdigo para: detectar un error; detectar dos
errores; detectar una permutacin de dos cifras; detectar una permutacin de dos
cifras consecutivas; corregir un error; recuperar un nmero borrado (sabiendo qu
lugar ocupa).

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Vamos a comprobar la correccin de la suma dada:

Nmero Suma pares Suma impares Dgitos impares > 4 total


4599-8834-3278-8311 40 43 4 130
4605-0521-5847-2052 34 22 2 80

Apartado b)

Detectar un error
Si se produce un error en una cifra y leemos xi = xi + e pueden ocurrir diferentes
opciones para que no lo detecte el sistema.

1. El error es tal que la cifra sigue siendo mayor o menor que 4


(como fuera antes)
En estas condiciones el ltimo trmino de la suma no cambia. An tenemos
dos opciones:
a) El dgito modificado ocupa una posicin par
En este caso nos comeramos el error si:

e=0 mod 10 = e = 0

Es decir, siempre detectamos el error.

190 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

b) El dgito modificado ocupa una posicin impar


En este caso nos comeramos el error si:
2e = 0 mod 10 = e = 0 e = 5
Pero el error no puede ser 5 ya que en ese caso la cifra pasara de ser
mayor que 4 a ser menor y viceversa, con lo que estaramos modificando
el ltimo dgito de la suma y estamos suponiendo que esto no ocurre.
Por tanto el error sera detectado.
2. El error hace que la cifra pase de ser menor que cuatro a ser
mayor o igual o viceversa
En estas condiciones tenemos dos opciones nuevamente:
a) El dgito modificado ocupa una posicin par
En este caso nos comeramos el error si:
e=0 mod 10 = e = 0
Es decir, detectaramos el error salvo que este no exista (sea 0)
b) El dgito modificado ocupa una posicin impar En este caso nos
comeramos el error si
2e 1 = 0 mod 10 = 2e = 1 2e = 9 mod 10
Pero ambos casos son imposibles puesto que 2e es par y su resto
mdulo 10 lo ser tambin, por lo que es imposible que se de alguna
de las condiciones que acabamos de mencionar.
Por tanto el cdigo siempre detectar el error.

Detectar dos errores


Es posible que se produzcan dos errores sin que el sistema lo detecte.
Basta con que dos cifras que ocupan la posicin par se intercambien.
Permutar dos cifras
Si las dos cifras ocupan una posicin par o impar (ambas el mismo tipo de
posicin) no seremos capaces de detectar el error.
Si una cifra ocupa la posicin par y otra una impar podemos distinguir dos casos:

1. La posicin impar pasa de ser mayor que 4 a no serlo o viceversa.


En este caso nos comeramos el error si:
)
2e e + 1 = 0 mod 10
= e = 9 mod 10
2e + e 1 = 0 mod 10

Si tenemos el caso en el que a1 = 0 y a2 = 9, en el primer caso sumamos


2a1 + a2 = 9
Sin embargo, si intercambiamos los dgitos tendramos a1 = 9 y a2 = 0
con lo que la suma nos da:
2a1 + a2 + 1 = 19 mod 10 = 9
Por tanto podemos ver que este error no sera detectado.

191 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

2. La posicin impar se conserva mayor 4 o menor o igual si lo era.


En este caso nos comeramos el error si:
)
2e e = 0 mod 10
= e = 0 mod 10
2e + e = 0 mod 10

Es decir, detectamos siempre el error.

Permutar dos cifras consecutivas


Este caso se incluye dentro de lo estudiado en el apartado anterior, pues es-
taramos cambiando el valor de una cifra en posicin par con una en posicin
impar.

Corregir un error
Si sabemos que slo se ha producido un error tendremos que la suma de compro-
bacin nos da e cuando debera dar 0, por lo que podemos conocer la magnitud
del error simplemente calculando el inverso aditivo de e.
No obstante no podremos corregirlo pues no hay forma de garantizar qu cifra
es la que ha sido modificada.

Recuperar un nmero borrado


Si un nmero se ha borrado, sumando todos los dems adecuadamente obten-
dremos algo de la forma
= 0 mod 10

Por tanto debemos encontrar el nmero tal que valor xi cumpla

+ xi = 0 mod 10

Si xi ocupa una posicin par tenemos

xi = mod 10

Si xi ocupa una posicin impar, si es par tomamos



xi = mod 10
2
si es impar tomamos
1
xi = +5
2

Ejercicio 10.6: El Cdigo de los Cheques: Esta es una lista de nme-


ros de cheques bancarios: 7.425.090.1, 7.425.091.2, 7.425.092.3, 7.425.093.4,
7.425.094.5, 7.425.095.6, 7.425.096.0, 7.425.097.1, 7.425.098.2, 7.425.099.3,
7.425.100.4, 7.425.101.5, 7.425.102.6, 7.425.103.0, 7.425.104.1.

192 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

a) Como puedes ver, si te olvidas de las ltimas cifras son nmeros consecutivos.
De hecho corresponden a cheques consecutivos, y el ltimo dgito es un dgito de
control, es decir, estamos ante un cdigo. Puedes averiguar cmo se calcula el
dgito de control de un nmero de cheque?
b) Estudia la capacidad de este cdigo para: detectar un error; detectar dos
errores; detectar una permutacin de dos cifras; detectar una permutacin de dos
cifras consecutivas; corregir un error; recuperar un nmero borrado (sabiendo qu
lugar ocupa).

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Podemos suponer que el dgito de control se calcula estudiando el mdulo de una
combinacin lineal del resto de cifras del cdigo.
Puesto que los dgitos de control de todos los ejemplos de cdigo dado son menores
que 7, parece razonable asumir que estos dgitos se calculan de forma similar a como
se hace con la letra de los DNIs pero trabajando mdulo 7.
Podemos comprobar que 7425090 mod 7 = 1 y a partir de ah todos los dems
cdigos proporcionados encajan con nuestra teora pues se trata de cdigos consecu-
tivos.

Apartado b)
Para formalizar el cdigo podemos ver que el dgito de control se calcula como:
6
X
c= 10i xi mod 7 siendo el cdigo de la forma x6 x5 x4 x3 x2 x1 x0 c
i=0

Si se produce un error en una cifra estaremos leyendo xi = xi + e con lo que


al calcular c e igualarlo con lo esperado tendremos:

c = c + 10i e mod 7 = 10i e = 0 mod 7 = e = 0

por lo que queda claro que podremos detectar un error.


Si se produce una permutacin de dos cifras, seremos incapaces de detectar
el error si

10i xi +10j xj = 10j xi +10i xj mod 7 10i xi +10j xi +10j e = 10j xi +10i xi +10i e mod 7

Simplificando y suponiendo i > j tenemos

e(10i 10j ) = 0 mod 7 e10j (10ij 1) = 0 mod 7

Es posible que no detectemos el error si 10ij = 1 mod 7, es decir 10k = 1


mod 7 donde k [1 6] asi que vamos a probar las posibilidades. Para ver todos los
casos nos basta con ver que 102 , 103 6= 1 mod 7, que se cumple.

193 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por tanto est cdigo detectar el intercambio de dos cifras


Si se permutan dos cifras consecutivas estamos en un caso particular de lo
que acabamos de hacer con lo que tambin ser detectado.
Si se borra un nmero podemos recuperarlo calculando
6
X
jxj = c 10i xi mod 7
i=0,i6=j

donde podemos despejar xj puesto que estamos en un cuerpo y j tiene inverso.

Ejercicio 10.7: Sea C un cdigo con d = 6. Encuentra un algoritmo que


permita simultneamente corregir un error y detectar cuatro cuando transmitimos
una palabra de C.

Hecho por Pedro. Se aceptan correcciones.


Atendiendo al teorema VII.5, puesto que

6=21+3+1

podemos tomar el algoritmo definido en el teorema:

1. Recibo x Fqn

2. Calculo d0 = mn{d(x, x)x C}

3. Si d0 r leo x0 C tal que d(x0 , x) = d0

4. En otro caso PITO

Este algoritmo, tal y como nos garantiza el teorema, corrige 1 error y detecta 4.

Ejercicio 10.8: Sea C el cdigo binario de longitud n obtenido aadiendo


a las palabras de longitud
Pn n 1 un comprobador de paridad global, o sea C =
n n1
{x1 . . . xn F2 | i=1 xi 0 mod 2}. Demuestra que C es un (n, 2 , 2)-
cdigo binario, y en particular que C siempre detecta un error. Encuentra todos
los errores que pueden ser detectados por C.

Hecho por Pedro. Se aceptan correcciones.


Es evidente que siempre detectamos un error puesto que un cambio en un bit har
que la suma de comprobacin vare en 1 que es distinto de 0 en mdulo 2.
En general, siempre que el nmero de errores sea impar el cdigo detectar que se
ha producido un error.

194 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Puesto que estamos aadiendo un bit a cada palabra de longitud n 1 es evidente


que en el nuevo cdigo todas las palabras sern de longitud n y que mantendremos el
nmero de palabras existentes 2n1 .
Por lo comentado al inicio del ejercicio es evidente que la distancia mnima de este
cdigo ser 2 pues cambiar cualquier bit implica cambiar tambin el bit de paridad si
queremos obtener otra palabra del cdigo.

Ejercicio 10.9: Consideramos el cdigo C de repeticin de longitud 4 sobre


el alfabeto de 29 letras F29 = Z/29Z.
a) Demuestra que C permite, simultneamente, corregir un error y detectar 2
en cada mensaje emitido.
b) Si hacemos corresponder los nmeros 0 - 26 a las letras A - Z (incluyendo
la y tambin la W) y adems 27=, 28=!, y recibimos el siguiente mensaje (los
guiones estn solo para separar los nmeros), 27 - 27 - 15 - 27 - 5 - 5 - 5 - 5 - 5 -
4 - 4 - 5 - 4 - 11 - 11 - 11 - 8 - 8 - 8 - 26 - 26 - 8 - 26 - 26 - 13 - 6 - 13 - 13 - 13
- 13 - 0 - 13 - 13 - 22 - 22 - 22 - 8 - 8 - 8 - 8 - 8 - 3 - 3 - 3 - 3 - 0 - 0 - 0 - 0 - 0
- 3 - 3 - 28 - 3 - 28 - 28
qu interpretaras que nos quieren decir?

Apartado a)
El cdigo de repeticin de longitud 4 significa que cada caracter va a aparecer
repetido 4 veces en el mensaje a modo de redundancia.
En concreto nos encontramos ante un cdigo lineal de dimensin 2.
Evidentemente si se produce un error veremos que, donde debera haber 4 cifras
iguales 1 es distinta, con lo que podemos reconocerla y corregirla.
Si en el bloque de 4 cifras que deberan ser iguales hay dos distintas y esas son
iguales entre ellas, podemos detectar que hay un error aunque no podremos corregirlas
pues no sabemos que par es errneo.
Adems, el teorema VII.5 nos garantiza que en este caso puesto que d = 4 =
2 1 + 1 + 1 nuestro cdigo podr detectar 2 errores y corregir 1 simultneamente.

Apartado b)
Hecho por Pedro. Se aceptan correcciones.
El mensaje dice:
FELIZNNVIDAD!
Donde parece razonable suponer que el mensaje 13-13-0-13 es realmente una A
en la que se ha producido una cadena poco probable de errores.

Ejercicio 10.10: Utilizamos el cdigo binario de repeticin de longitud 5


para transmitir a travs de un canal binario simtrico con probabilidad de error en

195 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

un smbolo p. Recibido un mensaje, siempre intentamos leerlo (es decir, lo usamos


como cdigo corrector). Demuestra que la probabilidad de decodificar errneamente
una palabra es Perr = 10p3 15p4 + 6p5 . Aproximadamente con que frecuencia
decodificaremos incorrectamente si p = 0.1? Y si p = 0.01? Compara con lo
que sucedera si utilizsemos el cdigo binario de repeticin de longitud 3, o si no
codificsemos en absoluto.

Hecho por Edu. Se aceptan correcciones.


Apartado a)
Tenemos el cdigo R2,5 = {00000,
j k11111}, con longitud 5, y d(R2,5 ) = 5, luego
el algoritmo de correccin corrige d1
2
= 2 errores.
Por tanto, Perr = P3 errores + P4 errores + P5 errores , ya que suponemos que usamos
un canal binario simtrico11 .
Luego,
     
3 52 4 5 5 5
Perr = p (1 p) + p (1 p) +p =
3 4 5
5! 5! 5!
= p3 (1 p)2 + p4 (1 p) + p5 =
3! 2! 4! 1! 5! 0!
= 10 p3 (1 p)2 + 5 p4 (1 p) + p5 = 10p3 15p4 + 6p5

Apartado b)
Basta sustituir en la frmula: Perr (0.1) = 8.56 103 y Perr (0.01) = 9.86 106

Apartado c)
En primer lugar, calculemos las tasas de R2,5 para poder compararlas con las de
los otros cdigos: = 55 = 1 y R = 51 .
Debido a que es el ms sencillo, comencemos por examinar el cdigo sin codifica-
cin: C = {0, 1}.
1 1
Tenemos que dC = 1 y Perr C = p, y sus tasas son = 1
= 1, R = 1
= 1.
Este cdigo tiene el problema de que no puede corregir errores, luego para p muy
pequea, puede compensar usarlo ya que su tasa de transmisin es mucho mayor que la
de R2,5 . Eso si, Perr C (0.1) = 0.1, 11.68 veces mayor que R2,5 y Perr C (0.01) = 0.01,
1015 veces mayor que R2,5 , luego la transmisin de cada bit tiene que ser muy cara
para que compense usar este cdigo.

j kR2,3 = {000, 111}. Que tiene los siguientes parmetros: d(R2,3 ) = 3,


Ahora, examinemos
d1 3
por tanto corrige 2
= 1 errores; = 3
= 1, R = 13 .
11
la probabilidad de error en un bit es p y los errores son independientes

196 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Calculemos su probabilidad de error:


   
2 2 3 3
Perr = P2 errores + P3 errores = p (1 p) +p = 3p2 (1 p) + p3 = 3p2 2p3
3 3

Luego tenemos: Perr (0.1) = 2.8102 , que es 3.27 veces mayor que la de R2,5 ; y
Perr (0.01) = 2.98104 que es 30 veces mayor que la de R2,5 .
De nuevo, R2,3 tiene mejor tasa de transmisin que R2,5 , pero mayor probabilidad
de error. Habra que evaluar el coste de transmitir un bit y sopesar si la tasa de error
es suficientemente baja para escoger un cdigo frente al otro.

A.11. Control 4 (1-12-2014) Modelo A

Ejercicio 11.1: El IBAN (International Banck Account Number) est for-


mado por dos letras, que indican el pas al que corresponde la cuenta, dos dgitos
de control y una serie de nmeros (o letras, aunque, para simplificar, nosotros NO
consideramos esta posibilidad), en cantidad que depende del pas, que indican el
nmero de cuenta. Este es un ejemplo de IBAN espaol:

ES7620770024003102575766

Los dos nmeros que siguen a las letras (76 en el ejemplo) son los dgitos de
control. El resto (20770024003102575766) son el nmero de la cuenta propiamente
dicho. Este es el modo de calcular los dos dgitos de control.

Las dos letras del cdigo del pas se transforman cada una en un nmero de
dos cifras del siguiente modo A = 10, B = 11, ..., Z = 35 (no hay N ),
obteniendo as 4 cifras (en nuestro ejemplo ES = 1428).

Estas 4 cifras, junto a dos desconocidas que corresponden a los dgitos de


control, c1 c2 se colocan detrs del nmero de la cuenta. En el ejemplo
207700240031025757661428c1 c2 .

Se calcula c1 c2 de manera que el nmero resultante sea 1 mod 97. En el


ejmplo
20770024003102575766142876 = 1 mod 97

Se ponen las dos letrs y los dos dgitos de control encontrados delan-
te del nmero de cuenta. En el ejemplo 142876 = ES76 se antepone a
20770024003102575766 para obtener el IBAN que hemos dado

Se pide:
a) Demuestra que el IBAN detecta un error en un nmero
b) Demuestra que el IBAN detecta un error en una letra

197 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

c) Demuestra que el IBAN no siempre detecta dos errores


d) Cul es la distancia mnima del cdigo IBAN?
e) Existe un algoritmo que permita corregir siempre un error en el IBAN?

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Si una cifra cambia, digamos la que ocupa la posicin xi , al reescribir el cdigo
colocando el equivalente de las letras y los dgitos al final del nmero y calcular su
mdulo obtendremos como resultado:
1 + 10i e mod 97

Nuestro cdigo no detectar el error si


10i e = 0 mod 97

Puesto que 97 es primo, la nica opcin para que el producto sea 0 es que uno de
los dos sea 0. En concreto 10i 6= 0 para cualquier i por lo que la nica posibilidad de
que el error no sea detectado es que e = 0, es decir, que no haya error.

Apartado b)
Si cambiamos una letra, el error obtenido al calcular el mdulo 97 del nmero y
restarle 1 ser
= e1000 si falla la segunda letra o 10000e si falla la primera

En ambos casos, no detectaremos el cambio de la letra si este error es 0. Nue-


vamente, como estamos en un cuerpo ya que 97 es primo, esto slo puede ocurrir si
e = 0, es decir, si no hay error.

Apartado c)
Es sencillo ver que no siempre detecta dos errores. Dado el ejemplo podemos ver
que:
20770024003102575766142873 = 1 3 mod 97 =
= 20770024003102575766142973 = 1 3 + 100 mod 97 = 1 mod 97
es decir, el IBAN
ET 7320770024003102575766
ser confundido con el IBAN del ejemplo, habiendo slo dos cifras de distancia entre
ellos.

Apartado d)
Puesto que el cdigo siempre detecta un error sabemos que la distancia mnima
debe ser al menos 2 (por el teorema que garantiza que dada la distancia mnima d
siempre podemos detectar d 1 errores).

198 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Pero, puesto que dos errores pueden no ser detectados es obvio que la distancia
mnima no puede ser 3, por el mismo teorema que acabamos de mencionar.
Es por tanto evidente que el cdigo tiene distancia mnima igual a 2.

Apartado e)
No puesto que si no sabemos en qu lugar se ha producido el error no podremos
corregirlo.
Por ejemplo, si lo que ocurre es que la segunda cifra del cdigo de control ha
aumentado en 3 unidades (al calcular el mdulo hemos obtenido 4 mod 97 en lugar
de 1) no sabemos si tenemos que reducir en 3 unidades esta ltima cifra o reducir en
una unidad la cifra primera cifra del cdigo de control.
Esto se debe a que 3 = 100 mod 97.

A.12. Control 4 (1-12-2014) Modelo B

Ejercicio 12.1: Para manejar un robot tenemos que transmitir cuatro instruc-
ciones de direccin que digitalizamos as: N N = 00, E = 01, O = 10, S = 11.
Para evitar errores decidimos utilizar un cdigo binario C de longitud 6 donde cada
uno de los bits x1 x2 x3 x4 x5 x6 tiene el siguiente significado

x1 x2 son los dos bits de la instruccin que queremos transmitir al robot

x3 x4 son una repeticin de x1 x2

x5 es un controlado de paridad para x1 x2 , es decir x1 + x2 + x5 = 0 mod 2

x6 es un controlado de paridad para x3 x4 , es decir x3 + x4 + x6 = 0 mod 2

a) Escribe las palabras de C que codifican cada uno de los cuatro mensajes y
encuentra la distancia mnima.
b) Escribe un algoritmo que permita simultneamente corregir un error y
detectar dos errores cuando se transmite una palabra de C.
c) Si aplicas el algoritmo anterior y el robot recibe 101100, qu debe hacer el
robot? Y si recibe 111111

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Las palabras quedan codificadas como:
N = 000000
E = 010111
O = 101011
S = 111100

199 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Empricamente podemos comprobar que la distancia mnima es 4.

Apartado b)
Apoyndonos en un teorema visto en clase, sabemos que si la distancia mnima es
4 = 2 1 + 1 + 1 existe un algoritmo que nos permite detectar dos errores y corregir 1.
Suponiendo que nos envan x y recibimos x, este algoritmo funciona como sigue:

1. Si la palabra recibida pertenece a nuestro cdigo la leemos y fin del algoritmo

2. Si la palabra recibida no pertenece al cdigo buscamos la palabra del cdigo ms


cerca a ella.

3. Si estaba a una distancia menor o igual que 1, leemos x0 y fin del algoritmo

4. Si la palabra ms cercana estaba a una distancia mayor, avisamos del error y fin
del algoritmo.

Apartado c)

Recibimos 101100
La palabra no est en el cdigo as que buscamos la ms cercana.
Lo ms cercano es S que est a distancia 1. Por tanto leemos S

Recibimos 111111
La palabra no est en el cdigo as que buscamos la ms cercana.
Lo ms cercano est a distancia 2 que es mayor que 1 por lo que simplemente
avisamos de que hay un error pero no leemos nada.

A.13. Hoja 7

Ejercicio 13.1: Construye, o demuestra la no existencia, de (n, M, d)-cdigos


binarios con los siguientes parmetros: (6,2,6), (3,8,1), (4,8,2), (5,3,4), (8,30,3).

Hecho por Pedro. Se aceptan correcciones.


Los parmetros de la forma (n, M, d) implican que el cdigo debe estar compuesto
por M palabras de longitud n con distancia mnima d. Vamos a ver los diferentes casos.

(6,2,6)

C = {000000, 111111}

200 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

(3,8,1)

C = {000, 001, 010, 011, 100, 101, 110, 111}

(4,8,2)
Si tomamos palabras que tengan siempre un nmero par de 1s, la distancia entre
ellas siempre ser al menos 2, puesto que la no coincidencia de un 1 implica que
en otro sitio hay un 0 que tampoco podr coincidir.

C = {0000, 0011, 1100, 1111, 1010, 0101, 0110, 1001}

(5,3,4)
Es imposible construir un cdigo con estas caractersticas.
Basndonos en el lemma VII.8 podemos considerar que el cdigo buscado con-
tendr la palabra 00000.
Sabiendo esto, la siguiente palabra que podemos aadir al cdigo que est a
distancia 4 implica tomar una palabra que tenga 4 1s.
Una vez tenemos estas dos palabras, no podemos aadir ninguna otra palabra
de 4 ni 5 1s, puesto que estarn a distancia menor de 2 de la segunda palabra
que hemos aadido.
Adems, cualquier palabra con menos de 4 1s estar a distancia menor que 4 del
00000.
Por tanto, es claro que no podemos encontrar tres palabras distintas de longitud
5 que esten a distancia 4 unas de otras.

(8,30,3)
Si estudiamos la cota de Hamming vemos que, en caso de existir el cdigo
tendramos:
28 256
30 = 28
1+8 9
por lo que es imposible que exista este cdigo.

Ejercicio 13.2:
a) Demuestra que todo (3, M, 2)-cdigo ternario debe tener M 9.
b) Construye un (3, M, 2)-cdigo ternario con M = 9 y concluye que
A3 (3, 2) = 9.
c) Generaliza lo anterior y demuestra que para cualquier q 2 se tiene
Aq (3, 2) = q 2 .

Hecho por Pedro. Se aceptan correcciones.


Apartado a)

201 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Basta con apoyarnos en la cota Singleton que nos garantiza que

M q nd+1 = 32 = 9

Apartado b)
Si logramos construir el cdigo pedido, la propia definicin de A3 (3, 2) nos dar
que su valor es 9, pues es el mayor M tal que existe un (3, M, 2)-cdigo ternario y
habremos encontrado uno con M = 9.
As podemos tomar el cdigo:

C = {000, 201, 102, 011, 110, 212, 121, 220, 022}

Con matriz controladora de paridad:


 
H= 1 2 1

Apartado c)
Para resolver este apartado debemos tratar de generalizar el razonamiento que nos
llev a escribir el cdigo del apartado anterior.
La idea es que tomando los dos ltimos bits podemos formar un total de q 2 dife-
rentes palabras con distancia mnima 1.
En estas q 2 palabras podemos agruparlas en q bloques de q palabras con distancia
1 entre todas ellas tomando todas las que empiecen con el mismo smbolo.
Ahora completamos cada palabra de estas listas de q elementos con uno de los q
smbolos distintos de modo que cada uno de los q bloques ya estar formado por q
palabras con distancia mnima 2.
Ahora es sencillo ver que entre esos bloques la distancia mnima es 2 puesto que si
tenemos dos palabras a distancia 1 entonces tenemos dos opciones:

1. La primera cifra no coincide.


En este caso llegamos a contradiccin puesto que exigira que las dos ltimas
cifras fuesen iguales y esto es imposible por construccin

2. La primera cifra coincide.


Esto exige que la segunda cifra no coincide (por construccin). Para evitar que
tambin coincida la ltima cifra, la asignacin de un q a cada palabra del bloque
de tamao q que hicimos al construir el cdigo se hace de forma que el par
primera letra - ltima letra nunca se repita.

202 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 13.3:
a) Demuestra que A2 (4, 3) = 2 y que, salvo equivalencia, existe un nico
(4, 2, 3)-cdigo binario.
b) Demuestra que A2 (8, 5) = 4 y que, salvo equivalencia, existe un nico
(8, 4, 5)-cdigo binario.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Por el lema VII.8 podemos empezar considerando la palabra 0000.
Para encontrar una palabra a distancia 3 de esta, debemos tomar una palabra con
tres 1s para lo que tendramos diferentes opciones.
Una vez que tomemos una palabra con tres 1s, cualquier nueva palabra que aada-
mos tendr cuatro 1s, estando a distancia 1 de la palabra de tres 1s que aadimos; o
tendr menos de tres 1s, estando a distancia menor o igual que 2 de la palabra 0000.
Recordando que dos cdigos eran equivalente si, entre otros casos, pasbamos de
uno a otro permutando las columnas, es claro ver que los posibles cdigos que pueden
obtenerse con estas caractersticas son equivalentes puesto que comparten la palabra
nula y simplemente reordenan los 1s de la segunda palabra.

Apartado b)
De forma similar al apartado anterior podemos ver que si empezamos considerando
la palabra 00000000, la siguiente palabra a aadir deber tener cinco 1s, por ejemplo:
11111000.
Cualquier palabra que aadamos con ms de cinco 1s tales que tres de ellos coin-
cidan con los tres 0s de la segunda palabra aadida, estar a distancia 5 de las dos
palabras que ya tenemos en el cdigo. Por ejemplo podemos tomar 00011111.
Cualquier palabra con cinco 1s que queramos aadir deber no compartir ms de
dos 0s con ninguna de las palabras ya aadidas.12 .
As toda palabra que aadamos ahora deber tener cinco 1s y sabemos donde
tendrn que estar dos de los 0s, pues ya hemos restringido 6 posiciones. Por ejemplo
tomamos la palabra: 11100011.
Cualquier nueva palabra que aadamos ahora, tendr al menos dos 0s en comn
con alguna de las palabras que ya tenemos en el cdigo, lo que fuerza que la distancia
mnima no pueda ser 5.

Ejercicio 13.4: Demuestra que todo (q + 1, M, 3)-cdigo q-nario satisface


M q q1 .

12
Si comparte dos 0s, con los restantes 6 dgitos tendr que meter cinco 1s forzando una distancia
mxima de 1

203 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Pedro. Se aceptan correcciones.


Por la cota de Singleton sabemos que:

M q n+d1 = q q+13+1 = q q1

Ejercicio 13.5: Demuestra que, si existe un (n, M, d)-cdigo binario con d


par, entonces existe un (n, M, d)-cdigo binario en el que todas las palabras tienen
peso par. [Sugerencia: Primero acortar el cdigo y luego alargarlo.]

Hecho por Pedro. Se aceptan correcciones.


Si tenemos el (n, M, d)-cdigo binario con d par y lo proyectamos eliminando la
ltima cifra de cada palabra, obtenemos un (n 1, M, d 1)-cdigo binario.
Si ahora aadimos a cada palabra una cifra a modo de bit de control de paridad,
forzando a que todas las palabras tengan paridad par, pasaremos a tener un (n, M, d)-
cdigo binario donde todas las palabras tienen peso par.
Vamos a comprobar esta ltima afirmacin.
Es evidente que seguimos teniendo M palabras, que estas tienen longitud n, que
son binarias y que tienen peso par. Slo debemos comprobar que la distancia mnima
es d.
Sabemos que la distancia mnima es, al menos, d 1 que es un nmero impar.
Tambin sabemos que no puede ser mayor que d, que es un nmero par.
Por otro lado sabemos que la distancia entre dos palabras del cdigo puede calcu-
larse de la siguiente forma:

d(x, y) = w(x y) = w(x) + w(y) 2w(x y)

Es trivial observar que, puesto que todas las palabras tienen peso par, la distancia que
acabamos de calcular ser par.
Por tanto, puesto que la distancia entre dos palabras de este cdigo siempre es par,
la distancia mnima tambin lo ser, lo que nos fuerza a que la distancia del nuevo
cdigo construido sea d.

Ejercicio 13.6:
a) Demuestra que, si existe un (n, M, d)-cdigo binario, entonces existe un
(n 1, M 0 , d)-cdigo binario con M 0 M/2. [Sugerencia: Clasifica las palabras
segn que la ltima letra sea 0 1.]
b) Deduce de esto que A2 (n, d) 2A2 (n 1, d).

Hecho por Pedro. Se aceptan correcciones.

204 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Apartado a)
Si tenemos un (n, M, d)-cdigo binario y tomamos slo aquellas palabras en las
que la primera cifra sea un 0, obtenemos un nuevo cdigo.
Este nuevo cdigo estar formado por M 0 palabras. Podemos considerar sin prdida
de generalidad que M 0 M2 pues, en caso de no cumplirse esta desigualdad, basta
con tomar las palabras con la primera cifra 1.
Si a estas palabras les quitamos la primera cifra, su distancia mnima no cambia,
puesto que la cifra que estamos quitando era una cifra comn a todas ellas.
Por ltimo slo nos queda comprobar que la distancia mnima entre estas palabras
es d. Sabemos que la distancia mnima entre estas palabras tiene que ser mayor que d
puesto que proceden de un cdigo con distancia mnima d.
Por otro lado, si ninguna par de palabras estuviesen a distancia d, podramos mo-
dificar una de las palabras forzando el acercamiento.

Apartado b)
Dando por vlido el enunciado del apartado anterior, aunque la demostracin no
sea lo bastante rigurosa, podemos ver que:
A2 (n, d) = max{M  (n, M, d)-cdigo binario}
Una vez tenemos el cdigo que da lugar a este mximo, podemos apoyarnos en el
apartado anterior y obtener un (n, M 0 , d)-cdigo binario con 2M 0 M lo que nos
garantiza que
M
A2 (n 1, d) = max{M  (n 1, M, d)-cdigo binario} = A2 (n, d)
2

Ejercicio 13.7:
a) Transmitimos utilizando el cdigo Ham(3, 2) y recibes el mensaje 0111001.
Qu haras si ests utilizando el cdigo para corregir errores? Y si ests unica-
mente interesado en la deteccin de errores?
b) Las mismas preguntas suponiendo que el vector recibido es 0110011.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Lo que tenemos que hacer es colocar las cifras del mensaje recibido formando la
estructura que caracteriza el cdigo (descrito en VII.16) y comprobar que todos los
crculos tienen paridad par.
En cuanto la paridad de algn crculo no sea 0, podemos concluir que hay un error.
Lo habremos detectado.
Si queremos corregir el error, deberemos tratar de corregir la paridad de todos los
crculos con el menor nmero de cambios posibles. Para ello basta con modificar el
dgito que se encuentra en la interseccin de los crculos con paridad incorrecta.

205 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Para el caso concreto que nos atae tenemos:

1
Todos los crculos contienen un nmero par de 1s 1 1
de modo que el mensaje es correcto. 1
0 0
0

Apartado b)

El crculo superior y el de la izquierda tienen un 1


nmero impar de 1s de modo que debemos cam-
biar el bit que aparece en la interseccin de ambos 1 1
crculos, haciendo que el cdigo quede: 0
0 1
0010011 0

Ejercicio 13.8: El cdigo Ham(3, 2) tiene d = 3, y por tanto, si se utiliza


slo para detectar, detecta todos los errores simples y dobles y no detecta todos
los errores triples. Sin embargo, puede detectar algn error triple? Cules exac-
tamente? Qu puedes decir sobre su capacidad para detectar errores de pesos
superiores?

Hecho por Pedro. Se aceptan correcciones.


Si que puede detectar algunos errores triples, siempre que estos se compensen.
Recordando la estructura del cdigo:
Si se produce un error en los bits x1 , x2 y x3 ca-
da crculo sufrir dos cambios lo que les permite
mantener la paridad. x7
Por otro lado, si todos los bits de un crculo cam-
bian, el cdigo tampoco ser capaz de detectarlos x2 x3
pues ese crculo mantendr la paridad (obtendre- x4
mos su negacin) y los otros dos crculos experi- x5 x6
mentarn cambios en dos bits. x1
Tambin se detectarn 4 errores si estos ocurren
en las posiciones x4 , x5 , x6 y x7 .

Ejercicio 13.9:

206 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

a) Demuestra que si C es un cdigo binario perfecto de longitud n con d = 7,


entonces n = 7 o n = 23.
b) Construye un cdigo binario perfecto de longitud n = 7 con d = 7. [Se
puede tambin construir un cdigo binario perfecto de longitud n = 23 con d = 7,
pero es ms difcil. Es uno de los llamados Cdigos de Golay.]

Apartado a)
El profesor dice que en clase que este examen no lo vamos a hacer y no entrar en
el examen, pues no consigue dar con una demostracin satisfactoria.
Para que el cdigo fuese perfecto tiene que satisfacerse la ecuacin:
2n
M = P3 n
i=0 i

Sabemos que M = 2k . Por tanto necesitamos ver que:

6 + 6n + 3n(n 1) + n(n 1)(n 2) = 6 2r

Siendo r un nmero arbitrario, es sencillo demostrar que n = 7 y n = 23 satisfacen


la ecuacin aunque no es nada sencillo comprobar que estas son las nicas soluciones
posibles.

Apartado b)
El nico cdigo posible es el cdigo de repeticin:

C = {0000000, 1111111}

Con esto garantizamos que el cdigo tenga la longitud y distancia mnima pedidas
por lo que slo nos queda comprobar que es un cdigo perfecto, cuenta trivial que
queda como ejercicio para el lector desconfiado.

Ejercicio 13.10: La cota de Hamming suele ser ms precisa que la de


Singleton, salvo para q grande. Para verlo en un par de situaciones, llamamos,
para d = 2t + 1,
qn
Sq (n, d) := q nd+1 = q n2t y Hq (n, d) := Pt n

i=0 i
(q 1)i

respectivamente a las cota de Singleton y de Hamming.


a) Demuestra, para q = 2, que H2 (n, d) S2 (n, d) cualesquiera que sean n y
d = 2t + 1.
b) Caracteriza los pares (q, n) para los que Sq (n, 3) < Hq (n, 3).

207 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Para comprobar H2 (n, d) S2 (n, d) nos basta con ver que
t   t
t
X n X 1
4 = n!
i=0
i i=0
i! (n i)!

Sabiendo que n > d > 2t podemos escribir:


t t
X n(n 1)...(n i + 1)
X 1
n! =
i=0
i! (n i)! i=0
i!

Como n > 2t + 1 sabemos que en el numerador tenemos ms de i trminos, todos


ellos mayores que i por lo que la fraccin ser mayor que i!.
As tenemos
t t
X 1 X
n! > i! > 4t
i=0
i! (n i)! i=0

Donde la ltima desigualdad es sencilla de comprobar.


Es obvio que la exponencial de t trminos es mayor que 4t a partir de t = 9
y para valores ms pequeos podemos comprobar que el sumatorio es mayor que la
exponencial.
Hecho por Jorge. Se aceptan correcciones.
Queremos ver que:
t  
2n n2t 2t
X n
Pt n
 2 = 2
i=0 i i=0
i

multiplicando por 2 a ambos lados:


t  
2t+1
X n
2 2
i=0
i

que es equivalente a:
t    ! 2t+1
X 2t + 1 X t    
X 2t + 1 2t + 1 n n
+ = +
i=0
i 2t + 1 i i=0
i i=0
i ni

Puesto que siempre tendremos d = 2t + 1 n, vemos que tanto el primer y


segundo trmino de la suma de la izquierda son menores o iguales que los primeros y
segundos que aparecen en la de la derecha del todo.

Observacin: Nos hemos apoyado en la igualdad:


2t+1
X 2t + 1
2t+1
2 =
i=0
i

208 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

cuya veracidad puede comprobarse fcilmente. Para ello basta con considerar un n-
mero binario de 2t + 1 bits. El sumatorio nos est contando las formas posibles de
tomar 1 bit, 2 bits, 3 bits y as sucesivamente. Si entendemos que los bits selecciona-
dos van a valer 1 y los restantes valdrn 0, estamos contando la cantidad de nmeros
representables con 2t + 1 bits.
Por otro lado sabemos que con 2t + 1 bits podemos representar 22t+1 nmeros
distintos, con lo que obtenemos la igualdad que estbamos estudiando.

Apartado b)
Revisado por Jorge. Se siguen aceptando correcciones
Sabiendo que d = 2 = 2t + 1 = t = 1, podemos ver que la desigualdad pedida
se dar siempre que
1  
2
X n q2 1
q > = 1 + n(q 1) = n <
i=0
i q1

Ejercicio 13.11: Sea Fq un alfabeto con q letras (no tiene por qu ser
un cuerpo ni tener estructura ninguna) y sea R(n, q) el cdigo de repeticin de
longitud n sobre Fq . Demuestra que R(n, q) es un cdigo perfecto si y slo si se
da alguna de las tres situaciones siguientes:

i) n = 1 (en cuyo caso R(n, q) = Fqn ).

ii) q = 1 (en cuyo caso R(n, q) tiene una sola palabra, y tambin R(n, q) =
Fqn ).

iii) q = 2 y n es impar.

Hecho por Pedro. Se aceptan correcciones.


Al tratarse de un cdigo de repeticin de longitud n, tendr un total de q palabras,
cada una de las cuales consistir en la repeticin de uno de los posibles q smbolos n
veces.
Para que el cdigo fuese perfecto, siendo d = 2t+1 (este caso d = n), necesitamos
que el nmero de palabras del cdigo, en este caso q cumpla:
qn
q = Pt n

i
i=0 i (q 1)

Comprobemos que ocurre en cada uno de los casos del enunciado.

i) n = 1 (en cuyo caso R(n, q) = Fqn ).


Este caso es el trivial. Sustituyendo en la igualdad que define los cdigos perfectos
tendramos:
q
q= =q
(q 1)0

209 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

ii) q = 1 (en cuyo caso R(n, q) tiene una sola palabra, y tambin R(n, q) = Fqn ).
En este caso la distancia mnima es 0, si es que tiene sentido hablar de distancia
mnima cuando el cdigo slo tiene una palabra. Tendremos t = 0 y sustituyendo
en la igualdad tenemos:
1n
1= =1
(q 1)0
iii) q = 2 y n es impar.
n1
En este caso tendremos t = 2
y sustituyendo en la igualdad tenemos:
qn
q = Pt n

i=0 i
(q 1)i

Tomando las indicaciones del apartado:


t 
2n

X 2t + 1
2 = Pt n
 = 22t
i=0 i i=0
i

Recordando el final del ejercicio anterior vemos que esta igualdad es cierta con
lo que hemos terminado.

Ejercicio 13.12: Cada habitante de Noruega tiene un nmero de identifi-


cacin de 11 cifras, x1 x11 , donde x1 x6 es la fecha de nacimiento, x7 x8 x9
es un nmero personal, y x10 y x11 son dgitos de control definidos por:

x10 (2x9 + 5x8 + 4x7 + 9x6 + 8x5 + x4 + 6x3 + 7x2 + 3x1 ) mod 11
x11 (2x10 + 3x9 + 4x8 + 5x7 + 6x6 + 7x5 + 2x4 + 3x3 + 4x2 + 5x1 ) mod 11.

Escribe una matriz comprobadora de paridad para este cdigo sobre F11 . Si el
cdigo se utiliza unicamente para detectar errores, se detectarn todos los errores
dobles? Si no es as, cules no se detectan?

Hecho por Pedro. Se aceptan correcciones.


La matriz comprobadora de paridad es una matriz tal que al multiplicar por la
traspuesta de un vector de dimensin adecuada nos dar 0 si y slo si el vector pertenece
al cdigo.
La matrz ser:
!
3 7 6 1 8 9 4 5 2 1 0
H=
5 4 3 2 7 6 5 4 3 2 1

Puesto que en cada fila de la matriz estn puestos los coeficientes de una de las
ecuaciones que deben cumplirse mdulo 11, es evidente que si un vector multiplica-
do por esta matriz da 0 mdulo 11, entonces satisfar las ecuaciones y, por tanto,
pertenecer al cdigo.

210 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

En general (y en este caso se cumple) todos los errores que no sern detectados
sern aquellos que, escritos como vector, pertenezca al ncleo de H.
Solucin del profesor Los errores dobles sern de la forma e = ei + ej . Estos
errores no sern detectados si al calcular su sndrome obtenemos 0, es decir:

S(ei + ej ) = Hi + Hj = 0 Hj = Hj

Ejercicio 13.13:
a) Demuestra que si a un cdigo lineal binario C le aadimos un comprobador
global de paridad, el cdigo que obtenemos sigue siendo lineal.
b) Escribe una matriz generadora para un [8, 4, 4]-cdigo lineal binario.

Apartado a)
Hecho por Pedro. Se aceptan correcciones.
Un cdigo ser lineal cuando puede verse como un espacio vectorial sobre Fq . Por
tanto, si C es lineal, tendremos una serie de palabras que constituirn la base del cdigo
y que, junto con la palabra nula, nos permiten generar todas las palabras del cdigo.
Aadiendo un bit de control de paridad seguimos teniendo el elemento nulo y la
base sigue generando todas las palabras, cada una de ellas ahora con su bit de paridad.
Si tenamos dos elementos de la base con nmero impar de 1s, la suma de ambos
tendr un nmero par de 1s por lo que el bit de paridad pasar de ser 1 en ambos
elementos de la base a ser 0 en el resultado final.
Solucin del profesor
En general podemos comprobar si un cdigo es lineal porque este podr represen-
tarse a partir de una matriz generadora.
Viendo la matriz controladora de paridad el cambio que estamos realizando al aadir
el bit de control consiste en completar la matriz H primero con una columna de 0s
(aadimos longitud sin cambiar los primeros bits) a la derecha y luego con una fila de
1s por abajo (control de paridad).

Apartado b)
Por el apartado anterior, si somos capaces de construir un [7, 4, 3]-cdigo lineal
binario slo tendremos que aadirle un bit de paridad para obtener el cdigo deseado.
As podemos construir el cdigo pedido como aquel dado por la matriz de control
de paridad:
0 0 0 1 1 1 1 0
0 1 1 0 0 1 1 0

H=

1 0 1 0 1 0 1 0


1 1 1 1 1 1 1 1

211 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 13.14: Sea C := {x F2n | w(x) es par}.


a) Demuestra que C es un cdigo lineal. Sin buscar la matriz comprobadora
de paridad H, cunto vale d(C)?
b) Encuentra H, calcula la dimensin de C y deduce que es un cdigo MDS
(un cdigo lineal que satisface la cota de Singleton).
c) Cuntos elementos tiene C? Cuntos elementos tiene el conjunto {x
F2n | w(x) es impar}?

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Sabemos que F2 es un cuerpo y es evidente que las palabras de C forman un espacio
vectorial pues si sumamos dos palabras de peso par, podremos calcular el peso de la
resultante como:
w(y) = w(x1 ) + w(x2 ) 2w(x1 x2 )
Es evidente ver que el peso de la palabra resultante ser un nmero par y, por tanto,
yC
La distancia mnima del cdigo sabemos que tiene que ser menor que 2 puesto que
la palabra nula y una cualquier con dos 1s estn en el cdigo.
Tambin sabemos que debe ser par y que ser distinta de 0.
Queda claro por tanto que la distancia mnima del cdigo es 2.

Apartado b)
La matriz H ser algo tan sencillo como un vector de 1s.
Recordemos que el nmero de filas de la matriz controladora de paridad, r, obedece
la ecuacin n k = r donde k es la dimensin del cdigo. As, es sencillo ver que la
dimensin del cdigo es n 1.
La cota de Singleton nos dice que:
M q nd+1
que, en este caso concreto, implica
q nd q n2+1 = 1n1

Apartado c)
Puesto que se trata de un cdigo lineal, sabemos que tendr 2k elementos. En este
caso concreto tendr
2k = 2n1 elementos

Al hablar del conjunto de elementos con peso impar estamos hablando del comple-
mentario del conjunto dado. Por tanto este conjunto tendr:
2n 2n1 = 2n1 elementos.

212 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Es decir, tendr el mismo nmero de elementos.

Ejercicio 13.15: Demuestra que el dual del cdigo de Hamming Ham(2, q)


es un [q + 1, 2, q]-cdigo.

Hecho por Jorge. Se aceptan correcciones.


" #
0 1 1 ... 1
H=
1 0 1 ... q 1
Tenemos r = 2, n = q + 1, d = 3. El dual tendr como matriz generadora H
(la ponemos en forma estndar por comodidad), y por tanto el tendr parmetros
n = q + 1, k = 2, r = q 1:
" #
1 1 1 ... 1
G =
 
= I|A
0 1 1 ... q 1
Por tanto la matriz controladora de paridad del dual ser:

q1 q1 1 0 ... 0
q1 q2 0 1 ... 0 h i
H = .. .. ..
t
.. . . .. = A(q1)2 |I(q1)(q1)

. . . . . .
q1 1 0 0 ... 1

H tiene rango q 1 y por tanto tenemos que q 1 columnas cualesquiera sern


linealmente independientes. Por lo que la distancia es q, pero adems vemos que no
es posible d = q + 1 porque entonces las ltimas q columnas de H seran linealmente
independientes, y esto no es cierto. De modo que tenemos que el dual es un [q +1, 2, q]-
cdigo.

Ejercicio 13.16: Escribe una matriz comprobadora de paridad y encuentra la


distancia mnima del cdigo binario generado por G1 , del cdigo sobre F3 generado
por G2 y del cdigo sobre F5 generado por G3 , donde


1 0 0 0 0 0 0 1 1 0 0
0 1 0 0 0 0 0 1 0 1 0


0 0 1 0 0 0 0 0 1 1 0 1 2 0 2 1 0


G1 = 0 0 0 1 0 0 0 1 1 1 1 , G2 = 2 0 1 2 0 1 ,

0 0 0 0 1 0 0 1 1 0 1 1 1 1 2 1 2


0 0 0 0 0 1 0 0 1 0 1


0 0 0 0 0 0 1 1 0 0 1

1 2 4 0 3
G3 = 0 2 1 4 1 .

2 0 3 1 4

213 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Pedro. Se aceptan correcciones.


Lo nico que tenemos que hacer es escribir las matrices G en la forma estndar
(como la identidad acompaada de algo), escribir la matriz H correspondiente y contar
el nmero de columnas independientes de la matriz H.
As tenemos:

1 1 0 1 1 0 1 1 0 0 0
1 0 1 1 1 1 0 0 1 0 0

H1 =

0 1 1 1 0 0 0 0 0 1 0


0 0 0 1 1 1 1 0 0 0 1

Reescribiendo G2 tenemos

1 0 0 2 1 0 1 1 1 1 0 0
G2 = 0 1 0 2 0 1 = H2 = 2 0 2 0 1 0

0 0 1 2 1 2 0 2 1 0 0 1

Para obtener G2 realizamos las siguientes operaciones:

C1 = C1 C4 C2 , C3 = C3 C1 , C2 = 2C2 2C1

Por ltimo vamos a por G3 .



1 0 0 4 3 !
1 4 2 1 0
G3 = 0 1 0 1 1 = H3 =

2 4 1 0 1
0 0 1 3 4

Para obtener G5 realizamos las siguientes operaciones:

C2 = 2(C2 2C1 + 4C4 ), C4 = C4 4C2 , intercambio C3 con C4 , C1 = C1 + 3C3

A.14. Hoja 8

Ejercicio 14.1:
a) Construye tablas de Slepian para los cdigos binarios generados por
" # " # " #
1 0 1 0 1 1 0 1 1 0
G1 = , G2 = , G3 = .
0 1 0 1 1 0 1 0 1 1

b) Supn que estas utilizando el cdigo generado por G3 para corregir errores.
Si recibes los vectores 11111 y 01011, cmo los decodificaras? Da un ejemplo de
un error doble en una palabra que se corrija y de un error doble que no se corrija.

214 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
La tabla para G1 tendr una nica fila y ser

00 10 01 11

Para G2 podemos ver de antemano que cada tendr dos filas pues cada fila tendr
4 elementos y la tabla tendr un total de 8.
000 101 011 110
001 100 010 111

Por ltimo, la tabla de G3 tendr 8 filas y ser:


00000 10110 01011 11101
00001 10111 01010 11100
00010 10100 01001 11111
00100 10010 01111 11001
01000 11110 00011 10101
10000 00110 11011 01101
11000 01110 10011 00101
10001 00111 11010 01100

Apartado b)
Lo que hacemos para decodificar los mensajes es calcular su sndrome. Si este es
0, entonces la palabra no tiene error. Si es distinto de 0, recurrimos a la tabla.
Puesto que la matriz G3 est en formato estndar, es sencillo calcular la matriz
controladora
1 0 1 0 0
H= 1 1 0 1 0

0 1 0 0 1

Ahora calculamos los sndromes:


S(11111) = 010, S(01011) = 000

Tenemos que la palabra 01011 pertenece al cdigo pero la otra no. Puesto que
tenemos la tabla de Slepian construida podemos buscarlas en el cdigo y conocer la
palabra de la que proceden (con mayor probabilidad y el error).
As tenemos que 11111 procede de la palabra 11101 sufriendo el error 00010.

Ejercicio 14.2:
a) Comprueba que el cdigo ternario generado por la matriz
" #
1 1 1 0
2 0 1 1

215 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

es perfecto.
b) Utiliza decodificacin por el sndrome para decodificar los vectores recibidos
2121, 1201 y 2222.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Puesto que es ternario tenemos que q = 3 y la distancia mnima de este cdigo es
d = 2 1 + 1.
Para ser perfecto debe cumplirse pues:

qn 34
|C| = Pt n
 = = 32
i=0 i
(q 1)i 1+42

Puesto que el cdigo puede definirse como:

C = {1 (1110) + 2 (2011)  1 , 2 Z3 }

Con lo que vemos claramente que el cdigo tiene 9 palabras posibles y, por tanto,
se satisface la definicin.

Apartado b)
Lo primero que tenemos que hacer es escribir la matriz de forma genrica para
poder encontrar fcilmente la matriz H.
Si a la primera columna le sumamos la ltima y a la segunda le sumamos la ltima
y dos veces la nueva primera tenemos:
! !
1 0 1 0 2 2 1 0
G= = H =
0 1 1 1 0 2 0 1

Si calculamos el sndrome de los vectores dados tenemos:

S(2121) = 20 S(1201) = 02 S(2222) = 10

Puesto que los sndromes dados coinciden con columnas de la matriz H es sencillo
ver que proceden del error ei (siendo Hi la columna con la que coinciden).
Una vez tenemos esto podemos ver de qu palabra proceden:

2121 1121, 1201 1202, 2222 2212

216 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 14.3:
a) Estamos llamando por telfono utilizando (el subcdigo de las palabras que
no incluyen el 10 de) el cdigo sobre F11 con matriz comprobadora de paridad:
" #
1 1 1 1 1 1 1 1 1 1 1
H= .
0 1 2 3 4 5 6 7 8 9 10

Qu har nuestro telfono inteligente si marcamos 20617960587? [Parte del ejer-


cicio es pensar qu es eso del telfono inteligente".]
b) Demuestra que, si en vez de un subcdigo de un cdigo sobre F11 , uti-
lizsemos
n para llamar por telfono el cdigo decimal (esto es, sobre Z10 )oC :=
P10 P10
(x1 , . . . , x10 ) (Z10 )10 : i=0 xi 0 mod 10, i=0 ixi 0 mod 10 , no
podramos corregir todos los errores simples.

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Supongamos que inteligente significa que el telfono comprueba si el nmero in-
troducido puede ser correcto o no y en caso de error busca el ms cercano.
Nuestro telfono calcular el sndrome del cdigo introducido obteniendo:

S(20617960587) = 79

Con lo que queda claro que hemos introducido un nmero errneo.


Es sencillo ver que el error ms pequeo que tambin nos causa ese mismo sndro-
mes es el 40030000000.
Por tanto nuestro telfono detectar que el cdigo es incorrecto y realmente llamar
a: 90697960587

Apartado b)
En este caso tendramos la matriz controladora de paridad:
!
1 1 1 1 1 1 1 1 1 1
H=
0 1 2 3 4 5 6 7 8 9

Si pudisemos corregir todos los errores simples, la distancia mnima sera mayor
o igual que 3, lo que implicara que dos columnas cualesquiera de la matriz sern
linealmente independientes.
No obstante podemos comprobar que 2 15 + 8 10 = 00 por lo que la distancia
  

mnima es menor que 2 y no corregir siempre un error.


En concreto si se incrementa el quinto dgito en dos unidades, el error ser confun-
dido con una reduccin del primer dgito en 8 unidades.

217 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 14.4: Consideramos el cdigo lineal binario que tiene como matriz
generadora
1 0 0 1 1 1 0
0 1 0 1 1 0 1 .

0 0 1 1 0 1 1

a) Calcula sus parmetros y demuestra que se puede utilizar simultneamente


para corregir un error y detectar dos.
b) Empleamos este cdigo para transmitir palabras castellanas que se pueden
escribir con las siguientes ocho letras: A, B, E, I, L, M, N, S [por supuesto, esto
es para simplificar el problema y no tener que utilizar cdigos demasiado largos].
Para ello, hacemos corresponder a cada letra un vector de F23 como sigue, A=000,
B=001, E=010, I=011, L=100, M=110, N=111, y antes de transmitir codificamos
la letra que corresponde al vector x = (x1 , x2 , x3 ) como xG F27 . Si ests
utilizando un canal que no permite retransmitir que leeras si recibes el siguiente
mensaje 0011111, 0110110, 0001111, 1111000 (las comas separan las letras)?

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
Este cdigo est formado por M = 23 = 8 palabras de longitud n = 7.
Para conocer la distancia mnima escribimos la matriz controladora de paridad:

1 1 1 1 0 0 0
1 1 0 0 1 0 0

H=
1 0 1 0 0 1 0

0 1 1 0 0 0 1

Una vez tenemos esta matriz construida podemos ver que la distancia mnima del
cdigo es 4 pues no hay tres columnas iguales mientras que si que existen 4 columnas
dependientes. (H1 = H4 + H5 + H6 )
Por el teorema VII.5 sabemos que este cdigo, con d = 4 = 2 1 + 1 + 1 es capaz
de corregir 1 error y detectar 2 simultneamente.

Apartado b)
Como ya hemos visto en ejercicios anteriores, el proceso a seguir consiste en calcular
el sndrome de cada palabra recibida. Si este sndrome es 0, leemos la palabra tal cual,
pues es una palabra de nuestro cdigo y asumimos que se ha recibido correctamente.
En caso de que el sndrome no sea 0, construimos la fila de la tabla Slepian co-
rrespondiente al error que, con mayor probabilidad, se est produciendo y buscamos la
palabra correspondiente.
Para las palabras recibidas tenemos:

S(00111111) = 0100, S(0110110) = 0000, S(0001111) = 1111, S(1111000) = 0000

218 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

En estas condiciones asumimos que la segunda y ltima palabra recibidas han sido
correctas. Gracias a que la matriz generadora se encuentra en forma estndar podemos
ver cmodamente que las letras correspondientes a esos dos mensajes son: I y N
respectivamente.
Para corregir el error de las otras dos letras recibidas calculamos los sndromes de
errores pequeos obteniendo:

S(0000100) = 0100, S(1000001) = 1111

Generamos ahora las filas de la tabla asociadas a esos dos errores obteniendo:
0000000 1001110 0101101 0011011 1100011 1010101 0110110 1111000
0000100 1001010 0101001 0011111 1100100 1010001 0110010 1111100
1000001 0001111 1101100 1011010 0100010 0010100 1110111 0111001

As para la primera y tercera letra leemos respectivamente 0011011 y 1001110.


Finalmente, podemos ver que estos cdigos se corresponden con las letras B y L.
Parece evidente que en este caso se han producido ms errores de la cuenta puesto
que nuestro programa leer BILN cuando parece evidente que el mensaje debera ser
BIEN.

Ejercicio 14.5: Estamos transmitiendo mensajes escritos en el alfabeto


castellano de 27 letras (con y W). Como el canal tiene ruido, decidimos utilizar
el siguiente cdigo sobre F3 : escribimos las letras como nmeros de tres cifras en
base 3, A=000, B=001, C=002, D=010,..., W=212, X=220, Y=221, Z=222, y
codificamos la letra x1 x2 x3 como el vector de F36 dado por

1 0 0 2 2 0
(x1 , x2 , x3 , x4 , x5 , x6 ) = (x1 , x2 , x3 )G, donde G = 0 1 0 2 0 2 .

0 0 1 0 2 2

a) Escribe la matriz comprobadora de paridad H y encuentra los parmetros


n, k y d del cdigo definido por G.
b) Ests utilizando el cdigo, y hablando de Matemticas recibes el mensaje

000000, 100201, 020101, 010021, 001022, 100110, 000000

(las comas estn slo para que te sea ms fcil separar las letras). Qu te han
querido decir?

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
La matriz controladora de paridad ser:

219 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja


1 1 0 1 0 0
H= 1 0 1 0 1 0

0 1 1 0 0 1

Se trata de un cdigo de M = 33 = 27 palabras de longitud n = 6 con distancia


mnima d = 3 puesto que dos columnas de la matriz H siempre son independientes
pero no tres.

Apartado b)
Calculamos el sndrome de cada cdigo recibido:

S(000000) = 000
S(100201) = 011
S(020101) = 020
S(010021) = 122
S(001022) = 000
S(100110) = 220
S(000000) = 000

De todas estas palabras tenemos 3 que parecen haber sido recibidas correctamente.
Como la matriz generadora se encuentra en forma estndar podemos descifrar fcil-
mente estas letras teniendo que el mensaje recibido ser de la forma:

A___B_A

Buscamos ahora los errores que propician esos sndromes obteniendo:

S(001000) = 011, S(0000020) = 020, S(002100) = 122, S(200000) = 220

En esta ocasin no vamos a escribir la tabla de Slepian sino que simplemente


calculamos a ojo que combinacin de las columnas de H da lugar a cada sndrome,
con lo que conoceremos el error asociado al mismo.
Vamos a ver en qu nos queda cada cdigo con error si le restamos el error que
causa su sndrome:

100201 102201, 020101 020111, 010021 011221, 100110 200110

Descifrando estas letras llegamos al mensaje:

ALGEBRA

220 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 14.6:
a) Escribe una matriz comprobadora de paridad para el [8, 6]-cdigo de Ham-
ming sobre F7 (recuerda, en [n, k], n =longitud y k =dimensin) y utilzala para
decodificar 35234106 y 10521360.
b) Escribe una matriz comprobadora de paridad para el [31, 28]-cdigo de
Hamming sobre F5 .

Hecho por Pedro. Se aceptan correcciones.


Revisado por Edu. Se siguen aceptando correcciones
Apartado a)
Sabemos que la matriz H tendr n = 8 columnas y n k = 2 filas siendo todos
sus elementos aij F7 .
Podemos comprobar que se satisface la propiedad de los cdigos de Hamming que
nos da el nmero de cifras del cdigo pues:

qr 1 72 1 48
8=n= = = =8
q1 71 6

Estamos trabajando, como se asume siempre en los cdigos de Hamming, que la


distancia mnima es d = 3.
Por tanto slo tenemos que buscar n = 8 vectores de tamao r = n k = 2 tales
que ninguno sea nulo ni mltiplo del anterior.
As obtenemos: !
0 1 1 2 3 4 5 6
H=
1 0 1 1 1 1 1 1

Apartado b)
Repitiendo los pasos del apartado anterior tenemos r = n k = 3 por lo que
tendremos que escribir una matriz H de 3 filas y 31 columnas compuesta por elementos
de F5 .

0 0 1 1 2 3 2 1 2 3 2 1 1 1 1 1 1 0 0 0 0 0 0 1 1 2 3 4 1 1 1
0 1 0 0 0 0 1 1 1 1 1 0 0 0 2 3 4 1 1 1 1 2 3 2 1 1 1 1 1 1 1

1 0 0 1 1 1 2 0 0 0 3 2 3 4 0 0 0 1 2 3 4 1 1 1 1 1 1 1 2 3 4

V
Ejercicio 14.7: Estamos utilizando el cdigo de Hamming extendido
Ham(3, 2) y un algoritmo de decodificacin incompleta. Si recibes los vectores
11100000, 01110000, 11000000 y 00110011, cmo los decodificaras?

Hecho por Pedro. Se aceptan correcciones.

221 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Para recordar la definicin del cdigo de Hamming extendido debemos atender la


solucin del profesor del ejercicio 13.13.
Una vez sabemos lo que es un cdigo de Hamming extendido procedemos a cons-
truir el cdigo Ham(3,2) y a extenderlo como se hizo en el ejercicio anteriormente
mencionado.

0 0 0 1 1 1 1 0
0 1 1 0 0 1 1 0

H=

1 0 1 0 1 0 1 0


1 1 1 1 1 1 1 1

Por otro lado, debemos recordad que, como se explic en teora, la decodificacin
incompleta es la que se basa en el clculo del sndrome de los posibles errores y de las
palabras recibidas, ahorrando la necesidad de construir la tabla de Slepian.
Los sndromes de los cdigos recibidos son:

S(11100000) = 0001, S(01110000) = 1011, S(11000000) = 0110, S(00110011) = 0000

La ltima palabra ser leda tal cual. Para las otras tres debemos tratar de corregirlas
para lo que buscamos el error asociado a cada palabra, que ser aquel con el mismo
sndrome. As:

S(00000001) = 0001, S(00001000) = 1011, S(11000000) = 0110

As los cuatro vectores ledos sern:

11100001, 01111000, 00000000, y 00110011

Para completar la decodificacin de estos vectores debemos encontrar la matriz


generadora del cdigo. Para ello debemos escribir la matriz H en su forma estndar,
lo que nos permitir escribir rpidamente la matriz generadora.

Ejercicio 14.8:
a) Demuestra que 8 A2 (6, 3) 9. [SUGERENCIA: para la construccin de
un (6, 8, 3)-cdigo binario utiliza algo parecido a la construccin de Ham(3, 2).]
b) Construye, un (7, 8, 4)- cdigo binario.
c) Cunto vale A2 (8, 4)? Construye, si es posible, un (8, 16, 4)- cdigo binario.
d) Demuestra que A2 (6, 3) = A2 (7, 4) = 8.

Hecho por Edu. Se aceptan correcciones.


Apartado a)
En primer lugar, tenemos que B2 (n, d) = 2k A2 (n, d) para algn k.
Utilizando la cota de Singleton, tenemos que A2 (n, d) 2nd+1 = 24 = 16;

222 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

pero como 3 = d = 2t + 1, podemos aplicar la cota de Hamming que es mejor,


6 26
luego A2 (6, 3) P1 2 n 1k = 1+6 9.1 . . .
0 (k )

Luego como A2 (n, d) debe ser entero, A2 (n, d) 9 y como la potencia de 2 ms


cercana a 9 es 8, tenemos que 8 A2 (6, 3) 9.

Apartado b)
Construyo a ojo el cdigo y obtengo:

{1101001, 0001111, 1010101, 0110011, 0111100, 1011010, 0000000, 1100110}

Apartado c)

De nuevo, tenemos que B2 (8, 4) = 2k A2 (8, 4) 25 por Singleton.


Por el Corolario VII.10, A2 (8, 4) = A2 (7, 3), y A2 (7, 3) 16 por Hamming, pero
adems, como el cdigo Ham(3, 2) extendido es un (8, 16, 4)-cdigo, A2 (8, 4) = 16.
Recordando lo visto en clase, la matriz controladora de paridad de ese cdigo es:

0 0 0 1 1 1 1 0
0 1 1 0 0 1 1 0


1 0 1 0 1 0 1 0


1 1 1 1 1 1 1 1

Apartado d)
Aqu hay que demostrar que no podemos construir el (6, 9, 3)-cdigo binario.
Pero suponiendo que en https://en.wikipedia.org/wiki/Plotkin_bound la
demostracin sea correcta, podemos usar que A2 (7, 4) 8 ya que 2d = 8 > 7, y
que A2 (7, 4) = A2 (6, 3) por el Corolario VII.10, luego por el apartado a) tenemos que
8 A2 (6, 3) = A2 (7, 4) 8.

Ejercicio 14.9: Construye un cdigo lineal sobre F11 de longitud n = 8 que,


simultneamente, corrija un error y detecte dos, y que tenga la mayor cantidad
posible de palabras.

Hecho por Pedro. Se aceptan correcciones.


Puesto que queremos que el cdigo corrija un error y detecte dos de manera si-
multnea, apoyndonos en el teorema VII.5 vemos que necesitamos un cdigo con
distancia mnima d = 4.
Es decir, buscamos un cdigo lineal con n = 8 y d = 4 con el mayor M posible.
Para definir el cdigo basta con construir la matriz H asociada al mismo que deber
tener rango 4 siendo lo ms pequea posible. As tenemos:

223 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja


1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8

H=

1 22 32 42 52 62 72 82


1 23 33 43 53 63 72 82

Este cdigo tendr dimensin k = nr = 4 lo que nos da un total de 114 = 14641


posibles palabras.

Ejercicio 14.10:
a) Construye, o demuestra que no existe, un [6, 3, 4]-cdigo sobre F5 .
b) Construye, o demuestra que no existe, un [10, 7, 5]-cdigo sobre F11 .
c) Construye un cdigo lineal perfecto sobre F3 con 315 palabras y d = 3, o
demuestra que tal cdigo no existe.

Apartado a)
Para intentar construir este cdigo debemos encontrar una matriz H36 en la que
3 columnas cualesquiera sean linealmente independientes. Esto automticamente nos
garantizara que 4 columnas seran dependientes.
Puesto que 6 q + 1 estamos ante un cdigo BCH extendido. As la matriz
controladora de paridad es

1 1 1 1 1 0
H= 0 1 2 3 4 0

0 12 22 32 42 1

Apartado b)
En este caso podemos ver que la cota de Singleton no se satisface puesto que
necesitamos
q k q nd+1
y en este caso tendramos:
117 116
que evidentemente no es cierto.

Apartado c)
Puesto que queremos que el cdigo sea perfecto, necesitamos que la longitud de
cada palabra sea:
3r 1
n=
2
Una vez tenemos esto y sabemos que n = 15 slo tenemos que probar a encontrar un
r que satisfaga la ecuacin.

224 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Con tan slo unas pocas cuentas podemos comprobar que no existe dicho r por lo
que podemos concluir que no existe el cdigo pedido.

Ejercicio 14.11: Supn que un cierto canal binario simtrico acepta palabras
de longitud 7, y que slo se observan los 8 tpos de errores siguientes: 0000000,
0000001, 0000011, 0000111, 0001111, 0011111, 0111111, 1111111. Disea un
[7, k]-cdigo lineal binario que corrija todos estos errores y que tenga una tasa de
transmisin lo ms alta posible.

Sabemos de antemano que la matriz controladora de paridad tendr 7 columnas


aunque no sabemos la dimensin de cada columna.
Puesto que sabemos qu errores vamos a poder encontrar, podemos forzar a que
nuestro cdigo sea capaz de detectar y corregirlos todos. Para ello simplemente tenemos
que garantizar que los sndromes de esos errores sean distintos de 0.
As podemos ver que la ltima columna no puede ser nula, ni la suma de las n
ltimas columnas puede ser 0, para cualquier valor de n.
Respetando estas relaciones vamos a construir la matriz con la idea de lograr que
la suma de las i ltimas columnas sea el nmero i representado en binario.
Con esta idea nos bastara con tomar vectores columna de 3 elementos.

0 0 0 1 0 0 0
0 1 0 1 0 1 0

1 1 1 1 1 1 1

Podemos observar que nuestra matriz tiene columnas repetidas pero esto nos da
igual. No podremos distinguir un error en la primera cifra de un error en la ltima pero
este error nunca se va a producir, puesto que conocemos exactamente los posibles
errores.

Observacin: Esta situacin no es tan artificial pues estamos diciendo que si se


produce un error en un bit, todos los siguientes tambin tendrn un error.

Ejercicio 14.12: Trabajamos con el cdigo lineal sobre F11 definido por

1 1 1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8 9 10

H= .

12 22 32 42 52 62 72 82 92 102
13 23 33 43 53 63 73 83 93 103

Encuentra, o explica por qu no lo puedes encontrar, el vector de error corres-


pondiente a cada uno de estos tres sndromes: (2, 0, 2, 2), (3, 4, 9, 1), (6, 5, 0, 3).

225 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Por definicin de la matriz H podemos ver que cualquier combinacin de 4 columnas


ser invertible por lo que podremos seleccionar cuatro columnas cualesquiera, tomar
la matriz que se forma y calcular su inversa.
Una vez tenemos esta inversa la aplicamos sobre los sndromes obtenidos y auto-
mticamente obtenemos el vector que da lugar al sndrome.

6
Ejercicio 14.13: Sea C F13 el cdigo lineal definido por la matriz
H = [hij ] de dimensin 4 6 con hij = (2j 1)i1 mod 13.
a) Escribe explcitamente la matriz H y calcula los parmetros d, k y M para
el cdigo C. Comprueba que C es un cdigo MDS.
b) Recibes el mensaje y = (4, 0, 0, 3, 0, 1). Cul crees que fue el mensaje x
enviado? (Comprueba que, efectivamente, x C.)
c) Recibes el mensaje y = (1, 9, 0, 9, 1, 0). Cul crees que fue el mensaje x
enviado? (Comprueba que, efectivamente, x C.)
d) Recibes el mensaje y = (1, 1, 1, 1, 1, 1). Explica por qu puedes asegurar
que en la transmisin se han producido al menos tres errores.

Apartado a)
Por la construccin de la matriz vemos que obtenemos una matriz cuyo deter-
minante es el determinante de Vandermonde. Por tanto parece que estamos ante un
cdigo BCH.
No obstante, la dimensin de la matriz no es la adecuada por lo que estamos ante
un BCH reducido.
La matriz controladora de paridad es:

1 1 1 1 1 1
1 3 5 7 9 11

H=
1 32 52 72 92 112

1 33 53 73 93 113

La distancia mnima del cdigo sabemos que es d = 5 puesto que 4 columnas de


la matriz siempre sern independientes y 5 columnas si que lo sern.
Adems sabemos que la dimensin es k = n r = 6 4 = 2.
Por ltimo, calculamos el nmero de palabras presentes en este cdigo, que es
M = 132 .

Apartado b)
Empezamos comprobando que la palabra y pertenece al cdigo para lo que calcu-
lamos su sndrome.
8
10

t
S(y) = Hy =
12

11

226 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Estudiando el sndrome sabemos que se ha producido nicamente un error si S(y)


coincide con una columna de la matriz.
Puesto que todas las columnas de la matriz empiezan por 1, lo que haremos ser
tratar de sacar factor comn 8 a todos los elementos del sndrome con lo que escribimos:

s1 8 1
s 10 11

S(y) = 2 = = 8
s3 12

s4 11

En cuanto comprobamos que es distinto de 112 tenemos que el error no es simple.


Por tanto tenemos que buscar errores dobles.
La forma de hacer esto consiste en emplear el polinomio localizador de errores,
que en este caso se ve ligeramente modificado debido a que para esta H la i-sima
columna lo que contiene no son potencias de i, sino potencias de (2i 1), es decir:

1 1
2i 1 2j 1

S(y) = a + b (A.1)
(2i 1)2 (2j 1)2

(2i 1)3 (2j 1)3

Para no hacer muy cargante la resolucin del sistema llamamos

i0 = (2i 1), j 0 = (2j 1)

a + b = s1

s2 i0 s1 = b(j 0 i0 )


0
ai + bj 0 = s2
= s3 i0 s2 = bj 0 (j 0 i0 ) = (s3 i0 s2 )2 = (s2 i0 s1 )(s4 i0 s3 )

ai02 + bj 02 = s3 s4 i0 s3 = bj 02 (j 0 i0 )

ai03 + bj 03 = s4

Conocidos s1 , s2 , s3 , s4 si sustituimos trminos en la ltima ecuacin llegamos a:



02 0 0 0 7 12 7 5
4i + 7i + 8 = 0 = i , j = = = i0 = 5, j 0 = 3
8 8

El siguiente paso es encontrar a, b en A.1:


(
8=a+b
= a = 6, b = 2
10 = 5a + 3b

Deshaciendo el cambio de variable tendremos i = 3, j = 2, y por tanto el error


doble es e = 6e3 + 2e2 . Si queremos leer el mensaje original, este sera:

x = y 6e3 2e2 = (4, 11, 7, 3, 0, 1)

Apartado c)

227 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hecho por Pedro. Se aceptan correcciones.


Una vez recibimos el mensaje y = (1, 9, 0, 9, 1, 0) lo primero que debemos hacer es
calcular su sndrome obteniendo:

7 1
5
9

S(y) = = = H3
6 12
4 8

Por tanto podemos concluir que, con mayor probabilidad, se a producido un nico
error la tercera cifra: e3
As, el mensaje que se debe leer es:

y 5e3 = (1, 9, 8, 9, 1, 0)

Apartado d)
Hecho por Pedro. Se aceptan correcciones.
En esta ocasin recibimos y = (1, 1, 1, 1, 1, 1) cuyo sndrome es:

6 1
10 6

S(y) = =
3 7

8 10

Podemos ver que este vector no es mltiplo de ninguna columna de la matriz


controladora de paridad.
Repitiendo los pasos del apartado b) obtenemos el polinomio caracterstico:

(s3 i0 s2 )2 = (s2 i0 s1 )(s4 i0 s3 ) (3 10i0 )2 = (10 6i0 )(8 3i0 )

Operando llegamos a:

9 + 100i02 60i0 = 80 78i0 + 18i02 118i02 + 18i 71 = 0

puesto que estamos trabajando en mdulo 13, el polinomio queda:



02 0 0 5 25 28 8 10
i + 5i + 7 = 0 = i = =
2 2

Puesto que la raz cuadrada no es exacta en este cuerpo, queda claro que la ecuacin
no tendr dos soluciones enteras por lo que el error no ser de dos cifras.

228 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Ejercicio 14.14: (El problema de la quiniela con n partidos")


Apostamos sobre los posibles resultados de n partidos (de futbol normalmente):
gana el equipo que juega en casa (1), empatan (X), o gana el equipo que juega
fuera de su campo (2). Tanto los resultados de los partidos como las posibles
apuestas se pueden ver como vectores en F3n (basta con sustituir la X por un 0).
Si hacemos una apuesta A y tras jugarse los partidos se produce un vector de
resultados R, ganamos un premio de primera categora si A = R, un premio de
segunda categora si A y R se diferencian en el resultado de un partido, y en general
un premio de i-sima categora si d(A, R) = i 1. (En Espaa, olvidndose del
llamado pleno al 15" que tiene reglas especiales, se juega con n = 14 y slo se
pagan premios si d(A, R) 4.)
El llamado problema de la quiniela con n partidos" es: Cal es el nmero
mnimo de apuestas que hay que hacer para asegurarse un premio de segunda
categora? Llamemos a este nmero f (n).
a) Interpreta el problema de la quiniela con n partidos en trminos de recubri-
mientos por esferas.
b) Utiliza los cdigos de Hamming ternarios para calcular f (n) en el caso de
que exista r tal que n = (3r 1)/2, esto es, para n = 4, 13, 40, . . . .
c) Demuestra que 23 f (5) 27. (De hecho se sabe que f (5) = 27, pero la
prueba no es fcil.)
d) Podemos generalizar el problema y definir fi (n) cmo el mnimo nmero
de apuestas necesario para garantizar un premio de i-sima categora. Interpreta
la bsqueda de este nmero como un problema de recubrimientos por esferas. Por
supuesto, con la notacin anterior, f2 (n) = f (n). Puedes explicar por qu el
problema clsico" es encontrar f2 (n) y no f1 (n)? Explica cmo usar un cdigo de
Golay para demostrar que f3 (11) = 36 = 729.
e) Escribe un boleto de quinielas con el mnimo nmero de columnas (= apues-
tas) que te garantice acertar el resultado de al menos tres de los cuatro partidos
siguientes:
ATLETICO DE MADRID - REAL MADRID
ESPANYOL - BARCELONA
SEVILLA - BETIS
LEVANTE - VALENCIA

Hecho por Pedro. Se aceptan correcciones.


Apartado a)
La idea del problema es tomar el espacio de todos los posibles vectores en F314 y
recubrirlo con esferas de radio d = 2. El nmero de esferas necesarias para lograr este
recubrimiento nos dice la cantidad de apuestas que deberemos realizar para garantizar
ese premio.
A su vez, los centros de estas esferas nos dicen qu apuestas hay que realizar para

229 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

garantizar la obtencin del segundo premio.

Apartado b)
El nmero de bolas se corresponde con el nmero de palabras, M , de un cdigo
ternario en Fq de longitud n.
r
En los casos indicados por el enunciado, en los que n = 3 21 , puesto que los
cdigos de Hamming son cdigos perfectos con distancias impares (como es este caso)
tendremos que:
3r 1
qn 3 2 3r 12r
M = Pt = r = 3 2
n
1 + 2 3 21

i=0 i
(q 1)i

As obtenemos los siguientes resultados:

r 1 2 3 4
n 1 4 13 40
M 1 9 59049 150094635296999121

Apartado c)
Con cada bola del recubrimiento, estamos considerando una palabra como centro
de la misma (que ser la que pertenecer a nuestro cdigo) y todas aquellas a distancia
1, es decir, estamos considerando un total de 2 5 = 10 variaciones respecto del origen
lo que nos da un total de 11 elementos en la esfera.
En el mejor de los casos, en que estas bolas pudieran ser disjuntas, tomando 22
bolas recubriramos 242 elementos del espacio (que no es suficiente) y tomando 23
bolas ya recubramos el total, pues 23 11 = 253 > 35 = 243.
Por tanto queda claro que necesitaremos, al menos, 23 bolas.
El espacio que tratamos de cubrir es un cubo pentadimensional, donde cada bola,
de dimensin 5 lgicamente, cubre el punto en el que est centrada y todos aquellos
puntos a distancia 1 del centro.

Apartado d)
Para garantizar el primer premio es necesario acertar todos los resultados por lo
que la nica forma de asegurar conseguirlo es apostando a todas las combinaciones
posibles.
Por tanto, y de manera trivial, se tiene:

f1 (n) = 3n

Apartado e)
Como hemos calculado en el apartado b), necesitamos realizar 9 apuestas. Estas
son:

230 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Atletico Madrid vs Real Madrid 1 2 1 X 1 2 1 2 1


Espanyol vs Barcelona 1 2 1 X 1 2 X X 2
Sevilla vs Betis 1 2 2 X X X 1 2 1
Levante Valencia 1 2 2 X X X X X 2

Ejercicio 14.15: Construye un [11, 6, 5]-cdigo perfecto sobre F3 . (Lo que


se pretende es que escribas la matriz de paridad. Quiz haya que experimentar un
poco. Si te ves incapaz de hacerlo sin aburrirte, asegrate de que sabes lo que
tendrs que hacer si tu aprobado en la asignatura dependiese de este
problema). Lo que has construido es un cdigo equivalente al [11, 6, 5]-cdigo
ternario de Golay.

Hecho por Pedro. Se aceptan correcciones.


Necesitamos construir una matriz controladora de paridad H511 , es decir, las pa-
labra sern de longitud 11 y r = n k = 11 6 = 5.
Puesto que la distancia mnima debe ser 5, necesitamos que 4 columnas siempre
sean independientes pero que haya 5 dependientes.
No se me ocurre nada mejor que probar por la cuenta de la vieja, pero sera un
infierno.
Hecho por Edu. Se aceptan correcciones.
Debido al tono amenazante de la frase resaltada en el enunciado, hay que combatir
el aburrimiento y vamos a hacer la cuenta de la vieja.
La forma de construir la matriz H es la siguiente:

Si suponemos que est en forma estndar, tenemos una matriz identidad 5x5 al
final. De manera que ya tenemos 5 de 11 columnas.

Al menos una columna debe ser combinacin lineal de otras 5, as que aadimos
una columna de 1s.

Ahora debemos aadir 5 columnas ms y viene la parte ms complicada. Si


hasta 4 columnas deben ser siempre independientes, quiere decir que el resto
de columnas deben contener 0s, 1s y 2s en sitios estratgicos para lograrlo. En
primer lugar, nos quedan 5 columnas, as que parece buena estrategia poner un
0 en cada una. As, hay al menos que sumar 2 columnas para obtener ese 0.

despus pensamos en que si cada columna tiene ms de un 0, entonces se podr


obtener sumando menos de 4 columnas, as que ya sabemos que el resto de
elementos sern 1s y 2s. Si ponemos 4 1s, la columna se puede construir sumando
la de 1s y una de las de la identidad, luego debe tener como mucho 3 unos. Pero
si tiene 3 1s, se puede obtener sumando la de 1s y 2 de la identidad, luego como
mucho debe tener 2 1s. Si tiene dos 1s (y por tanto, dos 2s) se puede obtener
sumando la columna de 1s y sumndole 3 de la identidad, luego ya lo tenemos:
las 5 columnas restantes son permutaciones de un 0, 2 unos y 2 doses.

231 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Hay que poner el 0 en filas distintas para evitar que estas nuevas columnas
puedan construirse sumando menos de 4 de las otras columnas. Por el mismo
motivo, hay que evitar que los dos 2s de una de estas columnas se alinee con los
dos 2s de otra, y lo mismo con los 1s.

Finalmente obtengo esta matriz:



1 0 1 2 1 2 1 0 0 0 0
1 1 0 1 2 2 0 1 0 0 0


H= 1 1 2 0 1 1 0 0 1 0 0


1 2 2 1 0 1 0 0 0 1 0


1 2 1 2 2 0 0 0 0 0 1

Este cdigo es famoso, sale hasta en https://en.wikipedia.org/wiki/Ternary_


Golay_code.
y la matriz que muestran es:

1 1 1 2 2 0 1 0 0 0 0
1 1 2 1 0 2 0 1 0 0 0


H= 1 2 1 0 1 2 0 0 1 0 0


1 2 0 1 2 1 0 0 0 1 0


1 0 2 2 1 1 0 0 0 0 1

A.15. Control 5 (18-12-2014) Modelo A

Ejercicio 15.1: Demuestra que A17 (9, 5) = 175 .

La cota de Singleton nos garantiza que:

A17 (9, 5) q nd+1 = 1795+4 = 175

Por tanto, lo que nos pide hacer el ejercicio es demostrar que esta cota se alcanza,
por lo que nos basta con construir un cdigo con estas caractersticas. Este cdigo ser
un (9, 175 , 5)-cdigo sobre un alfabeto de 17 letras.
Podemos construir un cdigo lineal de dimensin 5 con palabras de longitud 9 y
distancia mnima igual a 5, para lo que nos basta con encontrar la matriz de paridad.
Necesitamos encontrar una matriz tal que 4 columnas cualesquiera siempre sean
linealmente dependientes pero 5 de ellas no siempre lo sean.

232 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Empleando la idea de los cdigos BCH, que se apoyan en el determinante de


Vandermonde, tenemos la matriz

1 1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8 9

H=
1 22 32 42 52 62 72 82 92

1 23 33 43 53 63 73 83 93

Como era de esperar, si tomamos n < 4 columnas cualesquiera, obtenemos una ma-
triz de Vandermonde 44 o una parte de la misma donde no puede haber dependencia
lineal pues, de lo contrario, el determinante de Vandermonde sera 0.
Queda claro por tanto que la distancia mnima de este cdigo es mayor que 4. Por
otro lado sabemos que, dada la matriz H, la distancia mnima es menor o igual que
el rango ms 1. Por tanto queda claro que la distancia mnima del cdigo asociado a
esta matriz es d = 5.

Ejercicio 15.2: Sea C el cdigo lineal sobre F3 con matriz generadora:



1 0 0 2 2 2
G= 0 1 0 2 1 0

0 0 1 1 0 2

a) Cules son la longitud n y la dimensin k de C?


b) Escribe la matriz comprobadora de paridad de C
c) Cul es la distancia mnima d de C?
d) Es C un cdigo perfecto?
Tenemos un sistema de codificacin y decodificacin que utiliza el cdigo C
para enviar unidades de mensaje que son elementos m F33 . La codificacin se
hace convirtiendo m en x = mG, y es x lo que se transmite. Para decodificar, si
se recibe un mensaje y se usa el siguiente algoritmo:

1. Se calcula el sndrome S(y)

2. Se mira si hay un e Fn3 con S(e) = S(y) y w(e) b d1 2


c. En caso
afirmativo, x = y e C y el decodificador devuelve el mensaje m tal que
x = mG.

3. Si no existe ningn e que cumpla las condiciones, el decodificador nos dice


que hay errores.

e) Demuestra que el e del paso 2, si existe, es nico y que, efectivamente


y e C. Concluye que tambin son nicos el x y el m de ese paso del algoritmo.
f) Qu contestar el decodificador si recibe el mensaje y = 010201?

233 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Apartado a)
Puesto que las palabras se formarn como combinaciones lineales de las filas de la
matriz generadora, podemos ver que las palabras del cdigo tendrn longitud n = 6 y
ser un cdigo de dimensin k = 3.

Apartado b)
Puesto que la matriz generadora se encuentra en forma estndar, es sencillo ver
que la matriz controladora de paridad es:

1 1 2 1 0 0
H= 1 2 0 0 1 0

1 0 1 0 0 1

Apartado c)
Vamos por partes:

Puesto que ninguna columna es nula, podemos concluir que la distancia mnima
es mayor que 1.

Puesto que ninguna matriz es mltiplo de otra, podemos concluir que la distancia
mnima es mayor que 2.

Puesto que, siendo Hi la i-sima columna de la matriz, se satisface

H3 + 2H4 = H6

podemos ver que 3 columnas no son siempre independientes.


Por tanto podemos concluir que la distancia mnima es d = 3.

Apartado d)
Para ver si es o no un cdigo perfecto debemos comprobar si satisface la cota de
Hamming. Segn esta cota, un cdigo con d = 2t + 1 ser perfecto si y slo si:
qn
M = Pt n

i=0 i
(q 1)i

En este caso tenemos:


36 36
33 = =
1+32 7
Con lo que queda claro que no es un cdigo perfecto.

Apartado e)
Supongamos que existen dos errores (que no son ms que palabras del cdigo) con
el mismo sndrome.

234 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Entonces tendramos
S(e1 ) = S(e2 ) = S(y) = S(e1 e2 ) = 0 = e1 e2 C
pero entonces
d1
w(e1 e2 ) = w(e1 ) + w(e2 ) 2w(e1 e2 ) w(e1 ) + w(e2 ) = 2 b c=d1
2
lo que nos lleva a una contradiccin, pues la distancia mnima del cdigo es d.
Fijado ahora el vector x = (x1 , x2 , x3 , x4 , x5 , x6 ), puesto que la matriz G est en
formato estndar (o puede estarlo), es inmediato ver que el mensaje m est determi-
nado de manera unvoca por los primeros elementos de x.

Apartado f)
Aplicamos el algoritmo del decodificador:

1. Calculamos el sndrome del mensaje recibido


S(y) = 021

2. Buscamos un error con el mismo sndrome y peso 1.


Puesto que el sndrome obtenido no coincide con ninguna columna de la matriz,
podemos concluir que no hay error de peso 1 que provoque este sndrome por lo
que el algoritmo pitar.

A.16. Control 5 (18-12-2014) Modelo B

Ejercicio 16.1: Demuestra que A19 (8, 5) = 194 .

Empezamos viendo que, por la cota de Singleton, se cumple:


A19 (8, 5) 19nd+1 = 194

Por tanto, por definicin de Aq (n, d), basta con encontrar un cdigo que alcance
la cota para demostrar la igualdad.
Procedemos a buscar una matriz controladora de 8 columnas, y 8 4 = 4 filas.
Para garantizar que tengamos la distancia mnima deseada nos apoyamos en los
cdigos BCH, que se fundamentan en el empleo del determinante de Vandermonde.
As obtenemos la matriz

1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8 9

H=
1 22 32 42 52 62 72 82


1 23 33 43 53 63 73 83

235 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

Como era de esperar, si tomamos n < 4 columnas cualesquiera, obtenemos una ma-
triz de Vandermonde 44 o una parte de la misma donde no puede haber dependencia
lineal pues, de lo contrario, el determinante de Vandermonde sera 0.
Queda claro por tanto que la distancia mnima de este cdigo es mayor que 4. Por
otro lado sabemos que, dada la matriz H, la distancia mnima es menor o igual que
el rango ms 1. Por tanto queda claro que la distancia mnima del cdigo asociado a
esta matriz es d = 5.

El segundo ejercicio de este examen es exactamente el mismo que el del modelo


A.

236 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja

ndice alfabtico

d es una distancia, 61 Indice de coincidencia, 20


(n, M, d)-cdigo q-ario, 77 ISBN, 72
.(n, k, d)-cdigo lineal q-nario, 85
.Aq (n, d), 77 Jim Sinclaire (2011), 52

Bq (n, d), 85 Mtodo de factorizacin de Fermat, 38


Bit-operacin, 29 matriz controladora de paridad, 86
Matriz generadora, 86
Cdigo binario de repeticin de longitud n,
64 Nmero de Carmichael, 47
Cdigo de Golay binario, 95 nmero de Fermat, 168
Cdigo de Golay ternario, 95 Nmero pseudoprimo en base a, 46
Cdigo de Hamming(3,2), 84 notacin estndar, 87
Cdigo dual C , 92
optimal asymmetric encryption padding, 39
Cdigo lineal, 65
Cdigo perfecto, 83 Pequeo teorema de Fermat, 45
Cdigo q-nario, 61 Peso, 65
Cdigos equivalentes, 78 Peso mnimo de C, 65
Cdigos lineales equivalentes, 87 polinomio localizador de errores, 101
cdigos Maximum Distance Separable, 98 Principio de Kerckhoffs, 14
Cifrado afn, 8 Problema del logaritmo discreto, 30
comprobador global de paridad, 66 Pseudoprimo fuerte en base b, 50
Cota de Hamming, 82
Cota de Singleton, 77 sndrome de una palabra, 90
criba en cuerpos, 52 Slepian, 89
Criptografa, 6
Tasa de transmisin, 64
Criptosistema, 8
Teorema
decodificacin incompleta, 90 Euler-Fermat, 182
Determinante de Vandermonde, 98 Teorema chino del resto, 21
Difcil, 29 Teorema de Korselt (1899), 47
Distancia de Hamming, 61 Teorema de Shannon (1948), 104
Distancia mnima, 62 Teorema de Wilson (1770), 44
Distancia relativa, 64 Teorema del nmero primo, 43
Test de Miller-Marsin, 50
ElGammal, 42 Transposicin, 7
Fcil, 29
Funcin de Euler, 10
Funcin de un slo sentido, 29
Funcin trampa, 36

237 de 237

Vous aimerez peut-être aussi