Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
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
3 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Captulo I
Ideas generales
cable
aire/espacio
papel
1. poco seguro
2. poco fiable
4 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
Figura II.1: Cmo enviar un mensaje de manera segura entre Bob y Alice por un
canal al que Eve tiene acceso
II.1. Esteganografa
Intentar ocultar la existencia del mensaje. Es un mtodo con origen muy antigo
( 486-425 a.C)
II.2. Criptografa
6 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
A = {A, B...Z}
A = {0, 1}
A = {A, B...Z, . . . , , ?, 1, 2, 3, . . . , 9, 0}
A = Cdigo ASCII
7 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Criptosistema Definicin II.3 Criptosistema. Coleccin de functiones para cifrar. Se trata de fun-
ciones de la forma
fe : Me 7 Ce
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
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
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
9 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
#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
(a, n) = 1. Esto se demuestra usando el algoritmo de euclides.
#E = #U (Z/N ) #Z/N = (N ) N
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}
(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
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:
En cuanto nos percatamos de que estamos ante una suma telescpica es sencillo
comprobar que:
(pn+1 ) = pn+1 pn
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
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
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
= 1 + 24 26 = 23 17 = 1 = 23 17
Con ello llegamos a que:
1
= 23 = = 23 11 = 19& = 14
17
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
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
14 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Frase clave
15 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
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
16 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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
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:
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
: 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:
A partir de aqu ya podemos deducir el caso general, pues dado cualquier nmero
podremos descomponerlo apoyndonos en esta propiedad.
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
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
fA : (Z26 )2 7 (Z26 )2
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
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
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.
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.
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
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
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:
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
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:
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:
27 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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
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 ))
29 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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.
2. A enva a B g a
4. B enva a A g b
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.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.
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
La idea subyacente es sencilla. Puesto que slo B conoce fB1 , slo l podr en-
contrar m y as enviar fA (m).
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.
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.
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 .
Una vez el PIN introducido ha sido validado, la tarjeta enva de nuevo a la central
fe1 (T RAN SACCION.OK)
34 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
4. Calculamos n = p q
36 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
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.
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
M = ZN r Zn fe Zn ZN s = C
Ejemplo: Supongamos que queremos atacar al usuario Adolfo, que publica la clave
(n, e) = (24613, 6943) y recibe el mensaje ZVQ. Qu le dicen?.
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
39 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
fA1 fB (m) = c
m = fB1 fA (c)
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
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.
c = (c1 , c2 ) = (g k , mekA )
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 .
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:
3. n = 4 = 22
En esta ocasin
3! = 6 = 2 mod 4
=
Sea n primo, dado un elemento a Zn tenemos:
44 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
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
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.
an1
i =1 mod n
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.
1.
bn = b mod n b Zn
a2 |n = a = 1 si p es primo p2 |n
Demostracin.
1 = 2
Sabemos que (b, n) = 1 b (Zn ) . Por tanto, podemos multiplicar a
ambos lados de la ecuacin por b1 obteniendo:
3 = 1
47 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
2 = 3
48 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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.
49 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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.
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.
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
.
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
51 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
podemos decidir con certeza si un nmero n < 264 1.89 1019 es primo
52 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Ejemplo:
9
F9 = 22 + 1 = p7 p49 p99
donde pi representa un nmero de i cifras.
5. GN F S
p|bn 1 bn = 1 mod p
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
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}
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
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
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.
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)
55 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
P = {p1 , ..., pN }
2. Calculamos x0 = d ne y comenzamos a iterar con la funcin Q(x) = x2 n.
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
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
56 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
57 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Captulo VI
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|.
Para el descifrado que A tiene que hacer del mensaje recibido por B, realizar lo
siguiente:
58 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Captulo VII
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
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.
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
60 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
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 }
1.
d(x, y) 0
61 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
2.
d(x, y) = 0 x = y
3.
d(x, y) = d(y, x)
4.
d(x, y) d(x, z) + d(z, y)
Teorema VII.2. Sea C Fqn un cdigo con d(C) = d, podemos detectar hasta
d 1 errores
1. Recibo x Fqn
2. Si x C seguimos trabajando.
3. Si x
/ C PITO.
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
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}
x0 C d(x0 , x) d(x, x)
63 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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
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
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]
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 }
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}
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}
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.
Ejemplo: Consideramos que tenemos al mismo robot de siempre con las mismas 4
rdenes posibles. En esta ocasin vamos a definir:
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
66 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
1. Recibo x Fqn
67 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
C6 = C4 C4 C4 F24
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
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.
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
e 3e = 0 mod 10 = e = 5
{0 5, 1 6, 2 7, 3 8, 4 9}
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.
71 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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:
72 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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:
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
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
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
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.
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
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
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.
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 .
76 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
Es decir, tenemos un cdigo que emplea q smbolos distintos para formar M men-
sajes posibles de longitud n con distancia mnima d.
M q nd+1
es decir
Aq (n, d) q nd+1
: Fqn 7 Fqnd+1
77 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
: C 7 Fqnd+1
Por tanto, slo tenemos que probar que es inyectiva. Para ello supongamos que
hay dos puntos cuya imagen es la misma, es decir:
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.
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:
78 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
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.
A2 (n, d) = A2 (n 1, d 1)
donde
z y = (x1 y1 , x2 y2 , ..., xn yn )
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.
80 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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
Podemos ver, adems que la unin disjunta de estas bolas se contiene en Fqn , es
decir a
B(x, t) Fqn
xC
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
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
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)
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 .
22t+1
2 = Pt 2t+1
i=0 i
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
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
84 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Captulo VIII
Cdigos 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).
85 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
G = [Ik | Ak(nk) ]
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
86 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
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
G = [I | A], , H = [At | I]
87 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
f : Fqk 7 C
88 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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 .
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.
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.
00000 000
10000 110
01000 101
00100 100
00010 010
00001 001
11000 011
10001 111
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).
Demostracin.
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:
H1 = H4 + H5
93 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Captulo IX
Cdigos de Hamming
94 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
62 1
= 7 = n = r + k siendo r = 2 k = 5 y d = 3
61
Cdigo 1. (23, 212 , 7)-cdigo binario, conocido como Cdigo de Golay binario
de Golay
binario 2. (90, 278 , 5)-cdigo binario.
95 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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
96 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
97 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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
Aq (n, d) = q nd+1
99 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Aq (n, d) = q nd+1
10
1. Recibimos y = y1 , ..., y10 F11
100 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
101 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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 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 .
102 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
C 0 = {x C : xi = 0} |{z}
< C
subgrupo
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.
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
104 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Apndice A
Ejercicios
A.1. Hoja 1
f17 (x) = x + 17
105 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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.
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.
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
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
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
Cules de los mensajes es razonable pensar que han sido cifrados utilizando
sustituciones simples 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.
f (M U Y _BIEN 00 ) = SXT RP W _E 00
fa,b (x) = ax + b
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
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.
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.
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
111 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
{Unidades de A} {Divisidores de 0 en A} = A
bx = 1 abx = a axb = a 0 b = a 0 = a
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:
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
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
x z = 1 = y x z = y 1 = 0 z = y = 0 = y
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
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.
1. a es unidad en ZN
3. ma es inyectiva
4. ma es sobreyectiva
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
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
4 = 1
Si la funcin es sobreyectiva, entonces
c ZN b ZN ab = c
115 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
(
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
A.3. Hoja 2
116 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
As tenemos que el inverso de 761 es -259 = 641 con lo que podemos calcular
= 641 653 = 73 = = 768
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 ltimo, solo nos queda cifrar el mensaje usando esta funcin, con lo que obte-
nemos
VQKCAVICN MIQM
f (c) = c + = m
f 1 (m) = 1 m 1 = c
118 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
N 1 (m1 + 1 ) + (m0 + 0 ) =
= N 1 (m1 + 1 ) + c0 =
|{z} N 1 c1 + c0
por como est definifaf
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 .
119 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
(
3c + 17d = 17
24c + 3d = 0
17b = 8 = 17b = 21 = b = 20 = a = 22
17d = 20 = d = 8 = c = 1 = 28
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
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
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.
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.
! ! !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
123 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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:
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.
var(a1,a2,a3,a4,b1,b2)
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)]
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
126 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
! ! !
1 1 0 2 1 1
A= mod 5, mod 3, mod 2
1 0 2 0 0 1
f (m) = m + , , ZN
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
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
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.
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
f (m) = f2 (m + b1 ) = m + b1 + b2 = m + b3 siendo b3 = b1 + b2
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:
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
! ! !
10 15 20 20 27 21
=
5 9 2 19 2 10
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
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!
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
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
i = a1 m + b 1 mod L1 , c = a2 i + b2 mod L2
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
Por ltimo, debemos expresar esos nmeros en base N para poder tener el mensaje
descifrado. As obtenemos el mensaje:
N O_RET REAT
134 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
1. Los mensajes (en claro y cifrados) se escriben con un alfabeto de 28 letras, las
27 del castellano y un punto.
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
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
! !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
! !1 ! ! !
3 1 3 1 3 1 3 1 1 0
A= = = mod 4
3 0 0 3 3 0 0 3 1 1
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
! ! !
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
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
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
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.
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.
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
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:
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.
142 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.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
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
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
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
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:
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 =
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
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.
148 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
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".
150 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
151 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
1. Multiplicar n por dos, lo cual no consume operaciones puesto que se hace des-
plazando los bits y listo.
Finalmente, sumamos todas estas operaciones que, como estamos trabajando con
estimaciones de tipo O, nos da un total de O(log(n)2 ) operaciones.
152 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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)
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.
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.
154 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
cdB + eB = m eB + eB = m
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?]
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
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.
157 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
158 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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?
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
AGR = 180 mod nB 1807 mod nB = 521 mod 151 31 = 521 mod nA
521 = 19 27 + 8
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.
161 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
(Notar que (29)2 < 851 < (30)2 .) Descifra el mensaje LFN.
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:
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).
162 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
(Notar que (29)2 < 853 < (30)2 .) Descifra el mensaje .CZE
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:
163 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
55 en el primer caso:
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.
Apartado b)
Comprobamos que (28, 9) = 1.
Calculando 927 mod 28 comprobamos que efectivamente da 1. 27 en binario es
11011:
164 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Apartado c)
Nos cercioramos de que (91, 3) = 1.
Y tenemos que calcular: 390 mod 91. Que efectivamente, da 1.
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
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
a2 = 1 mod p
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.
n = r s con 1 r < n
Apartado b)
7
Demostracin sacada de Wikipedia
167 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
Mp 1 = 2p 2 = 2(2p1 1)
p=1 mod p 1
(a b)|(am bm )
2p 1|2Mp 1 1
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.
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.
169 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
donde la ltima desigualdad se basa en que n 1 ser impar, puesto que n es par.
170 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
br = 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
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}
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.)
172 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
bn1 = 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:
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
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:
174 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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:
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
176 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
177 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
As llegamos a que
200819 = (x + y)(x y) = 409 491
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
179 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
180 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Ahora tenemos
Calculamos
Finalmente
12871 = 61 211
x2 x = kn
181 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
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.
8
https://en.wikipedia.org/wiki/Eulers_theorem
182 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
(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:
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
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
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?
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
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.
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?
Apartado b)
Para ver si son incorrectos calculamos x10 y comprobamos que coincida con el que
nos dan en el propio nmero.
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)
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
a=0 b=1
a=8 b=2
a=9 b=9
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
187 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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
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
= a = 21 20 mod 23 = 6
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
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.
e=0 mod 10 = e = 0
190 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
191 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
+ xi = 0 mod 10
xi = mod 10
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).
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
10i xi +10j xj = 10j xi +10i xj mod 7 10i xi +10j xi +10j e = 10j xi +10i xi +10i e mod 7
193 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
6=21+3+1
1. Recibo x Fqn
Este algoritmo, tal y como nos garantiza el teorema, corrige 1 error y detecta 4.
194 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
195 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
196 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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.
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).
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
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
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.
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
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
199 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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:
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
(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)
(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.
(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 .
201 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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:
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:
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.
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.
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
M q n+d1 = q q+13+1 = q q1
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).
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.
205 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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)
Ejercicio 13.9:
206 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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.
207 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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:
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.
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
Recordando el final del ejercicio anterior vemos que esta igualdad es cierta con
lo que hemos terminado.
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?
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
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
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
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
C1 = C1 C4 C2 , C3 = C3 C1 , C2 = 2C2 2C1
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
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
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
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.
qn 34
|C| = Pt n
= = 32
i=0 i
(q 1)i 1+42
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
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:
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
S(20617960587) = 79
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
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
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:
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:
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
(las comas estn slo para que te sea ms fcil separar las letras). Qu te han
querido decir?
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
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
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 .
qr 1 72 1 48
8=n= = = =8
q1 71 6
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?
221 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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:
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:
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.
222 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
Apartado b)
Construyo a ojo el cdigo y obtengo:
Apartado c)
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.
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
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.
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.
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
225 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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
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
Apartado c)
227 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
Operando llegamos a:
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
229 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
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
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
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.
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.
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
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.
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.
H3 + 2H4 = H6
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
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:
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.
236 de 237
Teora de Cdigos y Criptografa - Curso 2015/2016 C1 - UAM Pedro Valero Meja
ndice alfabtico
237 de 237