TEORA DE CDIGOS
Y CRIPTOGRAFA
UNIVERSIDAD DE SEVILLA
DEPARTAMENTO DE LGEBRA
NDICE GENERAL
Introduccin 1
1 Fundamentos 3
Grupos 3
Anillos 9
Dominios eucldeos 12
Congruencias 17
Cuerpos nitos 20
Complejidad de algoritmos 25
Ejercicios 34
Estrategias de correccin 42
Cdigos lineales 45
Cdigos cclicos. 55
Ejercicios 63
iv
Bibliografa 113
I N T RO D U C C I N
En un telfono mvil cualquiera, un usuario (a partir de
ahora, Alicia), marca un nmero y hace una llamada a otro usuario
(a partir de ahora, Bob). Si el mvil no es antediluviano, cuando
Alicia habla, el telfono convierte su voz en cdigo digital, que es
enviado por la red de telefona mvil hasta el mvil de Bob, donde
vuelve a convertirse en sonido. Este proceso mgico, que ocurre
aproximadamente 12.400 millones de veces al da, es en realidad
muy sosticado.
De alguna forma, el telfono de Alicia tiene que identicar-
se ante la red de telefona, debe transmitir la informacin, que
tendr prdidas, debe encriptar la informacin, para que la comu-
nicacin sea privada; la red telefnica debe recibir la informacin
de Alicia, encontrar a Bob sin posibilidad de confusin, y pasarle
la informacin. En el otro extremo, el telfono de Bob debe re-
cuperar la informacin, a pesar de (posiblemente) haber perdido
parte por el camino, y desencriptarla. Todo esto, de forma rpida,
para que no se detecten cortes en la conversacin.
Hay muchos procesos implicados, y casi todos tienen que
ver con las matemticas. Y no slo en telefona mvil, sino en
todos los aspectos de la sociedad global. Transacciones seguras
entre bancos o entre empresas, previsiones de gastos, modelos de
prediccin futuros, etc.
En esta asignatura nos centraremos en entender dos de esos
procesos: la codicacin de la informacin para su recuperacin
sin errores, y la encriptacin para que slo el destinatario legtimo
tenga acceso a esa informacin. En palabras tcnicas, daremos
una introduccin (ms o menos elemental) a la Teora de cdigos
correctores de errores y la Criptografa.
Desde el punto de vista matemtico, las herramientas que
usaremos son pocas: un poco de grupos, un poco de cuerpos ni-
tos, un poco de lgebra lineal y un poco de lgebra conmutativa.
2 teora de cdigos y criptografa
Les Luthiers
F U N DA M E N T O S 1
Grupos
Denicin 1 Un grupo es un par (G, ), donde G es un conjunto Well, Ill tell you something that should
be of vital interest to you
(no vaco) y es una operacin binaria e interna que verica
The Doctor The ambassadors of Death
1. La operacin es asociativa. Doctor Who, 7.4
e g = g e = g.
g g = g g = e.
4. Si adems
gh=hg
1. H es un subgrupo de (G, ).
H i es un subgrupo de G.
iI
S = H.
H subgrupo de G
HS
a m a n = a m+n , a m = (a )m = (a m ) , (a m )n = a mn .
1. o(a) = 1 a = e.
2. o(a) = o(a ) = a.
4. Si a n = e, entonces o(a) n.
5. Si a es de orden nito,
o(a)
o(a k ) =
mcd(o(a), k)
[x] = x H.
y as, G = r H.
G = a = {a} = {a m m Z}.
o(a n/d ) d
o((a n/d )k ) = = ,
mcd(o(a ), k) mcd(k, d)
n/d
(d) = n,
0<dn
x H = {x h h H}, H x = {h x h H}
1. Para todo x G, x H x = {x h x h H} = H.
2. Para todo x G, x H x = {x h x h H} H.
x y x y H
(x H) (y H) = (x y) H.
Ejemplo 5 Z/Zm.
f (G, ) (L, )
f (x y) = f (x) f (y),
3. C p Cq C pq si y slo si mcd(p, q) = 1.
donde d1 d2 d n y r 0.
C p 1 C p n n Zr ,
1
ker( f ) = {g G f (g) = e L }
img( f ) = {l L existe g G con l = f (g)}
(x + y) z = x z + y z, x (y + z) = x y + x z.
En esta asignatura no veremos anillos no conmutativos, I wish the ring had never come to me.
aunque los hay y muy importantes (por ejemplo, los anillos de Frodo
1 1 1 1
un entero n > 0 tal que x n = 0.
( )( ) = 0.
2 2 1 1
En un dominio de integridad, los elementos no nulos veri-
can la propiedad cancelativa:
a 0 y ab = ac b = c.
fundamentos 11
a 0 y ab = ac b = c.
2. A es un dominio de integridad.
(a + I)(b + I) = ab + I.
12 teora de cdigos y criptografa
3. f (1) = 1.
Dominios eucldeos
Denicin 13 Un dominio eucldeo es un dominio de integridad A
junto con una aplicacin A {0} Z0 , llamada la norma eucldea,
que verica
Ejemplo 8
1. Z, con (x) = x.
p (ab) p a o p b.
a + b = d.
ab
mcm(a, b) = .
mcd(a, b)
Proposicin 7 La ecuacin
ax + my = b
d = a + m podemos escribir
b b b
b= d = ( )a + ( )m = x0 a + y0 b,
d d d
y es claro que (x0 , y0 ) es una solucin.
Tambin es claro que cada elemento de la familia S es solu-
cin de la ecuacin; la cuestin est en ver que son todas. Para
eso, sea (x1 , y1 ) otra solucin; es decir,
de donde
a m
(x0 x1 ) = (y1 y0 ). (1.2)
d d
Como a/d y m/d son coprimos, se tiene que a/d (y1 y0 ),
luego y1 y0 = k(a/d). Anlogamente, se tiene que x0 x1 =
k (m/d). Sustituyendo en la Ecuacin (1.2), se obtiene k = k, de
forma que (x1 , y1 ) S.
a + m1 . . . mr (a + m1 , . . . , a + mr ),
(a1 + m1 , . . . , ar + mr ) a1 1 M1 + + ar r Mr ,
a i + d i j = a j + d i j , d i j = mcd(m i , m j ).
Congruencias
Denicin 20 Sean a, b y m 0 tres enteros. Diremos que a es
congruente con b mdulo m, y escribimos
a b (mod m),
si b a es divisible por m.
Denicin 21 La relacin
a b a b (mod m)
18 teora de cdigos y criptografa
Proposicin 8 La ecuacin
ax b (mod m)
1. Si p es primo, (p) = p 1.
a p a (mod p).
Ms an, si p a, entonces
a p1 1 (mod p).
Cuerpos nitos
Esta seccin se puede resumir en el Teorema de Clasica-
cin de los Cuerpos Finitos. Antes de probar el Teorema, debe-
mos determinar y denir un concepto importante.
ch Z k
1 z 1k
(a + b) p a p + b p .
Ms generalmente,
r r r
(a + b) p a p + b p , para todo r 1.
Fq F p [X]/ f (X).
F8 = {0, 1, , + 1, 2 , 2 + 1, 2 + , 2 + + 1},
= a [(p1)(p
r 1 r1 +p r2 ++1)]
a q1 = a p = 1,
x n = 1, para todo x Fq ,
1 = , 2 = 2, 3 = 2, 4 = 1,
0 0 0 a0
a1
1 0 0
M f = 0 1 0 a 2
. . . . . . . . . . . . . . . . . . . .
0 0 1 ar1
Fq Fq
,
z
Complejidad de algoritmos
Antes de dar las deniciones formales, vamos a comenzar Its complicated
por analizar un problema concreto: supongamos que queremos Facebook relationship status
def fib1(n):
if n<2:
return n
else:
return fib1(n-1)+fib1(n-2)
valores=range(0,10)
def fib2(n):
i=1
j=0
for k in range(1,n+1):
t=i+j
i=j
j=t
return j
valores=range(0,10)
tests=range(0,41,5)
CPU times: user 2min 52s, sys: 2.33 s, total: 2min 55s
c2 (n) = 2 + 3n.
c1 (n) 2n .
0 + 0 = 0, 1 + 0 = 1, 0 + 1 = 1, 1 + 1 = 10
1+1
que
101010101010101010101011111111010010101010101
+ 101100111000000000111101010101011010101010101.
[log2 (x)] + 1,
c1 = O(2n ) c2 = O(n).
tiempos para
lgoritmos
Nombre O( f ) Tiempo
Constante O(1) 1s
Logartmico O(log(n)) 3s
Lineal O(n) 1ms
Polinomial O(n k ) 1s (para k = 2)
1/2
Subexponencial 2o(n) 55s (para 2n .)
Exponencial 2O(n) 40 1015 aos
O(n)
Doble exponencial 22 Hasta que vuelvan los Valar
Tiempo aproximado para n = 1000, a razn de 106 operaciones por segundo.
0 1 1 1 ... 1 1 1 1 0
1010 . . . 10110
0001 . . . 10111
1100 . . . 11111
Al acabar, si la ltima llevada es un 1, entonces la suma tiene k + 1
cifras; de lo contrario, tiene k cifras. La cuestin es: Cuntas
operaciones elementales hay que realizar?
Tal vez sea ms fcil contar el nmero de operaciones del
peor caso usando el algoritmo directamente. Supongamos que a y
b vienen dado como dos listas de k cifras, y pongamos:
suma(a,b):
llevada = 0
c[i] = llevada
llevada = 0
si no, si a[i]!=[i]:
si llevada==1:
c[i] = 0 # y llevada =1
si no:
c[1] = 1
llevada = 0
si no
si llevada==1:
c[i] = 1 # y llevada =1
si no:
c[i] = 0 # y llevada =1
si llevada==1:
c[k+1] = 1
2. k iteraciones de:
(a) 8 comprobaciones
(b) 7 asignaciones
fundamentos 31
15k + 3 = O(k).
Proposicin 10 Se verican las siguientes propiedades: The Hulk Marvels The Avengers
2. f O(g) O( f g).
0, 1, 2, 3, 4, 5, 6.
18
Nosotros consideraremos slo el En general, un sistema posicional de numeracin8 de base b
caso en que b sea natural; pero existen
sistemas de numeracin donde b no es
se dene por la regla
positivo. Ni siquiera entero. Ni real.
(. . . a3 a2 a1 a0 .a1 a2 . . . )b
= + a3 b3 + a2 b2 + a1 b1 + a0 + a1 b1 + a2 b2 + ,
1 = 0,9999 . . .
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
y un poco ms complicado,
base b de la forma
a = (a k . . . a0 )b .
a = (a k . . . a0 )b = (a k . . . a1 c0 .ccccc . . . )b .
a = q0 b + r0
q0 = q1 b + r1
q1 = q2 b + r2
............
En esta situacin, se tiene que q i+1 < q i , porque si fuera q i+1 q i ,
como b > 1 y r i+1 0, se tendra q i = q i+1 b + r i+1 > q i , lo que no
es posible. Como adems los cocientes son positivos existe un k a
partir del cual q k+ j = 0 para todo j 0. Es decir, podemos escribir
a = q0 b + r0
q0 = q1 b + r1
q1 = q2 b + r2
...............
q k1 = 0 b + r k
a = r0 + q0 b = r0 + (q1 b + r1 )b
= r0 + r1 b + q1 b 2
= r0 + r1 b + r2 b 2 + q3 b 3
........................................
= r0 + r1 b + r2 b2 + + r k1 b k1 + r k b k
= (r k . . . r0 )b .
La unicidad es ms sencilla. Si
a = (a k . . . a0 )b = (c t . . . c0 )b ,
34 teora de cdigos y criptografa
a a0 (mod b)
c0 (mod b),
(a a0 )/b = (a k . . . a1 )b = (c t . . . c1 )b ,
Ejercicios
Ejercicio 1.1. Halla todos los posibles grupos abelianos de 40
elementos.
deg( f ) = 6.
fundamentos 35
f (2) = 4.
mcd(a, n) = 1.
(1, 4, 2), (3, 3, 1), (4, 0, 4), (1, 4, 1), (3, 3, 3), (4, 0, 4)
36 teora de cdigos y criptografa
Jpiter
Tierra Plutn
ascii signica American Standard Code for Ejemplo 14 El cdigo ascii evolucion a partir de un cdigo
Information Interchange. Debido a que slo
anterior, llamado el cdigo de la cinta de papel, que consista en un
tena espacio para 127 caracteres, muchos
fabricantes de hardware y software am- cdigo en bloque de 8 caracteres binarios. Esto es, A = {0, 1} = F2
pliaron de forma no estndar el cdigo
y C = A8 = F82 , que se construa de la siguiente forma:
ascii. Esto ha causado mucho dolor, ira
y confusin. Pero no es comparable al su-
frimiento que ha causado el otro sistema 1. Los enteros 0, 1, , 127 se codicaban en binario, usando
similar, el ebcdic. Hoy da hay un cdigo
7 bits, es decir, (0000000)2 a (1111111)2 .
ms general, el estndar unicode, y la
codicacin utf-8.
2. Las primeras 32 (de (0000000)2 a (0011111)2 ) palabras del c-
digo se reservaban para caracteres no imprimibles o carac-
teres de control, como n_de_lnea o tabulacin_horizontal.
Tambin se reservaba la palabra 127 = (1111111)2 , con signi-
cado carcter borrado (delete).
esto es, d(x, v) mide el nmero de coordenadas distintas de x y v. Para el caso ms frecuente, cuando A =
F2 , podemos denir equivalentemente
B((0, 0, 0), 1) = {(0, 0, 0), (1, 0, 0), (2, 0, 0), (0, 1, 0),
(0, 2, 0), (0, 0, 1), (0, 0, 2)}.
40 teora de cdigos y criptografa
Estrategias de correccin
d(x, z),
Ejemplo 16 El cdigo de repeticin de longitud n sobre el Este es el cdigo ms usado por los
progenitores de todo el mundo.
alfabeto A consiste en
C = {(a, a, . . . , a) a A} A n .
n logq (C).
d 1
d(x i , v) , i = 1, 2.
2
Dicho de otro modo,
d 1 d 1
B(x1 , ) B(x2 , ) = .
2 2
Cdigos lineales
A partir de ahora trabajaremos con el espacio vectorial An =
Fnq , donde notaremos sus vectores como columnas.
z = m1 u1 + + m k u k C.
z z + e = x,
x z,
m z x z m.
d = min w(x).
0xC
cdigos correctores de errores 45
AX = 0 M((n k) 1, Fq ),
1. M M(n k, Fq ), A M((n k) n, Fq ).
2. rg(M) = k, rg(A) = n k.
3. A M = 0 M((n k) k, Fq ).
1 0 1 0 1 0 1
A = 0 1 1 0 0 1 1 ,
0 0 0 1 1 1 1
46 teora de cdigos y criptografa
1 1 0 1
1 0 1 1
1 0 0 0
M = 0 1 1 1 .
0 1 0 0
0 0 1 0
0 0 0 1
z = x + e,
cdigos correctores de errores 47
s(v) = Av Fnk
q .
1. s(z) = 0 z C.
1 0 1 0 1 0 1
A = 0 1 1 0 0 1 1 .
0 0 0 1 1 1 1
1
Az = 1 .
1
1 0 1
0 + 1 = 1 ,
0 1 1
x + C = {x + u u C}.
La Proposicin 16 nos permite usar el algoritmo del lder o Ves? Ahora me respetas, porque soy
una amenaza
algoritmo de sndromes y errores para decodicar. Para este algoritmo,
Sndrome en Los increbles (2004)
50 teora de cdigos y criptografa
# encoding: utf-8
F=GF(2)
A=matrix(F,[[1,0,1,0,1,0,1],[0,1,1,0,0,1,1],[0,0,0,1,1,1,1]])
C=A.right_kernel()
def distancia_Hamming(v1,v2):
assert(len(v1)==len(v2))
def peso(v):
def s(v):
return A*v
Disco=[]
for v in An:
if peso(v)<= floor((d-1)/2):
Disco.append(v)
def decodificar(v):
sindrome=tuple(s(v))
if sindrome in Tabla:
return v-Tabla[sindrome]
else:
return None
Cdigos cclicos.
Veamos a continuacin un ejemplo de una familia de cdigos
lineales que tiene un mtodo propio de decodicacin que mejora
el de sndromes y errores.
(x1 , . . . , x n ) C (x n , x1 , . . . , x n1 ) C.
x = (x0 , x1 , . . . , x n1 ) .
u = (u0 , u1 , . . . , u n1 ) u0 + u1 X + u2 X 2 + + u n1 X n1 .
f (X) = a0 + a1 X + + a n1 X n1 ,
entonces
X f (X) = a n1 + a0 X + a1 X 2 + + a n2 X n1 ,
con lo cual
g0 0 0 0
g1 g0 0 0
g2 g1 g0 0
M= M(n k; Fq ).
g0
0 0 0 . . . g nk
Ejemplo 21 Para hacernos una idea del avance que esto supo-
ne, si tenemos un cdigo lineal binario de tipo (23, 212 , 7), (por
ejemplo, el denominado G23 , de la familia de cdigos de Golay)
tendremos que calcular sndromes y lderes, al menos para
23 23
1 + 23 + ( ) + ( ) = 2025
2 3
casos, los que tenemos seguridad que podemos corregir. En cam-
bio, si nicamente nos jamos en los que tienen la ltima coorde-
nada no nula, necesitamos
22
1 + 22 + ( ) = 133
2
entradas.
w(x) n (q q ) = nq (q 1).
k k1 k1
xC
Por otra parte, todas las palabras (salvo 0) tienen al menos d coor-
denadas no nulas, luego
w(x) d (q 1) ,
k
xC
q j1 V (r) < q n ,
1 1 1
0 1 2 0 1 2 0 1 2
1 1 1
0 1 2 0 1 2 0 1 2
q = 23 q = 32 q = 11
1 1 1
0 1 2 0 1 2 0 1 2
q = 13 q = 24 q = 17
1 1 1
0 1 2 0 1 2 0 1 2
q = 19 q = 23 q=5 2
5
M.A. Tsfasman, S.G. Vladut, Th. Zink: Vladut y Zink5, en 1982 crearon la primera familia de cdigos que
On Goppa codes which are better than the
Varshamov-Gilbert bound. Mathematische
mejoraba la cota GSV. Su trabajo combinaba la teora clsica de
Nachrichten 109 (1982) 2128. cdigos de Goppa con los espacios vectoriales de funciones aso-
ciados a curvas algebraicas proyectivas planas. Lejos de terminar
el problema, este trabajo abri una conexin inesperada y muy fr-
til entre la teora de cdigos, la teora de nmeros y la geometra
algebraica.
Ejercicios
Ejercicio 2.1. El cdigo nif funciona de la siguiente manera: las
palabras son pares (n, l), donde n Z y l {0, 1, . . . , 22}, siendo
n l (mod 23). Demuestra que el cdigo nif detecta un error
en la transmisin de n, as como dos errores, si corresponden
a la permutacin de dos cifras decimales consecutivas. Puede
detectar dos errores cualesquiera? Puede corregir un error?
Ejercicio 2.5. Sea C un cdigo lineal tipo (n, q k , d), con matriz
generatriz M y matriz de control A. La matriz At puede entonces
cdigos correctores de errores 61
2. (C ) = C.
C1 C2 = {(xy) x C1 , y C2 }.
C1 C2 = {(xx + y) x C1 , y C2 }.
62 teora de cdigos y criptografa
1 0
0 1
1 0
1 1
M=
1 1
1 1
0 1
0 1
1. Pruebe que
290
= 278 .
V2 (90, 2)
A E b
ilegal, y puede obtener copias de todo
la informacin transmitida. Adems,
normalmente tiene informacin acerca
de las funciones F y G. Lo nico que no
suele tener es k.
Alice Bob
Eve
Aunque parezcan arbitrarias, las letras tie- Denicin 39 Un sistema criptogrco de clave privada es un par
nen signicado: K de key, P de plaintext
de funciones
y C de cyphertext, que son los trminos
en ingls que corresponden a clave, texto F K P C, G K C P,
en claro y texto cifrado. La funcin F se
llama funcin de cifrado, y la funcin G donde K es el conjunto de claves posibles, P es el conjunto de men-
la de descifrado. Desde 2014, la rae
acepta tambin encriptado y desencriptado,
sajes posibles, y C el conjunto de mensajes cifrados posibles, tales
supongo que al mismo nivel que toballa, que para todo k K y todo m P, si ponemos F(k, m) = M, entonces
almndiga y asn.
G(k, M) = m. Es decir,
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
O en espaol, en Z/Z27,
A B C D E F G H I J K L M N O P Q R S T U V W X Y
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI WANKE NOBIY OUREM
YONLY HOPE
F(k, m) = k + m, G(k, M) = M k.
criptografa de clave privada 69
m A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
M D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
tenemos
F(3, m) = WKLVL VRXUP RVWGH VSHUD WHKRX UKHOS PHREL
You underestimate the power of the Dark Side. If you will not ght,
then you will meet your destiny
QMKCR GKCQG RGQRF CNCMN JCLMM LCAYL GKYEG LCYLW RFGLE MDUFM
K = N ,
Criptosistema afn
F(k, C) = F(k, 2) = 11 2 + 4 = 22 + 4 = 0 = A.
tenemos
You underestimate the power of the Dark Side. If you will not ght,
then you will meet your destiny
HFRNO PRNHP OPHOI NMNFM KNYFF YNZLY PRLBP YNLYX OIPYB FUJIF
que no suele ser muy grande. Por tanto, se pueden generar todas
las claves posibles y descifrar el mensaje por inspeccin.
criptografa de clave privada 71
Cifrados de sustitucin
Los dos criptosistemas que hemos visto, el criptosistema de
Csar y el criptosistema afn, son ejemplos de cifrados por sustitu-
cin: aqullos en los que a cada letra (a veces incluyendo en letra
los espacios o smbolos de puntuacin) se le asocia un smbolo
concreto (otra letra o tal vez no), pero siempre el mismo para to-
do el mensaje. Algunos ejemplos notables de esta tcnica fueron:
El disco cifrador de Alberti (Leon Battista Alberti fue un
estudioso genovs del siglo XV) consista, materialmente, en dos
discos concntricos. En el exterior aparecan los 20 caracteres del
Figura 3.2: Disco cifrador descrito en
latn, esto es, los mismos del alfabeto castellano excepto las letras De cifris de L. B. Alberti. Imagen de
H, J, , K, U, W e Y, y se incluyen los nmeros 1, 2, 3 y 4 para cdigos Mateureka.it
53305))6*;4826)4.)4);806*;488
60))85;1(;:*883(88)5*;46(;88*9
6*?;8)*(;485);5*2:*(;4956*2(5*4
)88*; 4069285);)68)4;1(9;48081
;8:81;4885;4)485528806*81(9;48;
(88;4(?34;48)4;161;:188;?;
comEherEaToncE
72 teora de cdigos y criptografa
F( , m) = (m), G( , M) = 1 (M).
SA = S N = N!,
256! = 8578177753428426541190822716812326251577
8152027948561985965565037726945255314758
9377440291360451408450375885342336584306
1571968346936964753222892884974260256796
3733256336878644267520762679456018796886
7971521143307702077526646451464709187326
1008328763257028189807736717814541702505
2301860849531906813825748107025281755945
9476987034665712738139286205234756808218
8607012036110831520935019474371091017269
6826286160626366243502284094419140842461
5936000000000000000000000000000000000000
000000000000000000000000000 21684
El siguiente cdigo que estudiaremos es el cdigo de Vige- Cinco o seis semanas despus, ella (Madame
dUrf) me pregunt si haba descifrado el
nre y durante varios siglos (desde el XVII hasta nales del XIX) manuscrito donde se encontraba el proceso de
transmutacin. Le dije que as era.
se consider seguro e infranqueable6 (aunque la verdad es que no
Sin la clave, seor, perdneme pero creo
era para tanto, como veremos). El cifrado toma su nombre en ho- que es imposible.
Quiere que le diga cul es la clave que ha
nor al criptlogo francs Blaise de Vigenre (1523-1596), y utiliza, utilizado?
realmente, el mismo mtodo que el cifrado de Csar, una sustitu- Si no le importa.
Entonces le dije la palabra clave, que no
cin por desplazamiento de k caracteres en el texto, donde k es perteneca a ningn idioma, y pude ver su
sorpresa. Me dijo que era imposible, pues ella
un nmero mdulo 27. Pero la diferencia (y lo que lo hace mucho era la nica poseedora de la palabra clave y la
ms robusto) es que dicho desplazamiento viene indicado por el guardaba en su memoria, sin haberla puesto
nunca por escrito.
valor numrico asociado a uno de los caracteres de una clave que Le poda haber dicho la verdad (que el
mismo clculo que me permiti descifrar el
se escribe cclicamente bajo el mensaje. texto me haba permitido obtener la clave)
Veamos primero un ejemplo y luego daremos la denicin pero por capricho le dije que un genio me la
haba revelado. Esta falsa revelacin hizo
formal. Como siempre, tenemos nuestro mensaje que Madame dUrf se rindiera a m. Ese da
me convert en el poseedor de su alma, y abus
de dicho poder. Cada vez que pienso en ello
m = THISI SOURM OSTDE SPERA TEHOU RHELP MEOBI
me avergenzo de lo que hice, y ahora hago
WANKE NOBIY OUREM YONLY HOPE penitencia obligndome a contar la verdad al
escribir estas memorias.
Supongamos que elegimos como clave de cifrado ORGANA. Empe- Cmo se las apa Casanova para
zaramos por cifrar de la siguiente forma: o bien, identicando romper el cdigo de Madame dUrf?
El hecho de que existiese una palabra
letras y nmeros, El mensaje cifrado completo es clave nos da a entender que, en efecto,
se trataba de un cdigo de Vigenre. A
pesar de ser considerado irrompible (por
M = HYOSV SCLXM BSHUK SCEFR ZEUOI INEYP AVUBV
Madame dUrf entre otros, como hemos
WOEQE AOPZE OHRSD EOALM YUPR visto), a un criptoanalista sagaz no se le
escapa el hecho de que, en el fondo, el
cdigo de Vigenre y el cdigo de Csar
Veamos la denicin formal de este criptosistema. no son tan distintos.
F(k, m) = k + m, G(k, M) = M k,
este cifrado.
A pesar de que se crea que el criptosistema de Vigenre
era seguro, es posible (incluso fcil) atacarlo con el mtodo de
Kasiski, que veremos ms adelante. La idea es sencilla en el fon-
do: primero averiguar la longitud de la clave r, y luego resolver
r cifrados de Csar.
M1 = F(k, m1 ),
M2 = F(M1 , m2 ),
M3 = F(M2 , m3 ),
.................
8
Del ingls, code block chaining, y se usa Este esquema de cifrado se llama cifrado en modo cbc8. El desci-
tambin en cifrados modernos. No es el
nico modo posible; otros son pcbc, cfb,
frado sigue un patrn similar:
ofb, ctr y otros. El normal se llama
ebc, de electronic code book. m1 = G(k, M1 )
m2 = G(m1 , M2 )
m3 = G(m2 , M3 )
................
Ejercicio 9 Cifre el siguiente mensaje con un cifrado Vigen-
re de clave k = DARKSIDE, primero en modo ebc y luego en modo
cbc.
You underestimate the power of the Dark Side. If you will not ght,
then you will meet your destiny
UCXSL AGWUW EWKLB WRSZD DWHGQ BPQSF CECUT BWSHQ VVTBY GZOJC
Criptosistema de Hill
Si el cifrado Vigenre se puede ver como una generalizacin
del cifrado Csar, la idea ahora es generalizar el cifrado afn usan-
do dimensin ms alta.
criptografa de clave privada 75
9 7 ), cuyo
Supongamos que elegimos n = 2, y la clave k = ( 11 6
la esctala espartana, es el primero del que tenemos constancia his- Rey Lenidas en 300.
Ejemplo 25 Para
Enigma
La mquina Enigma, creada por Arthur Scherbius en 1918
y patentada en 1928, supuso un hito denitivo en la criptografa.
criptografa de clave privada 77
Rotor ABCDEFGHIJKLMNOPQRSTUVWXYZ
iii BDFHJLCPRTXVZNYEIWGAKMUSQO
ii AJDKSIRUXBLHWTMCQGZNPYFVOE
i EKMFLGDQVZNTOWYHXUSPAIBRCJ
Figura 3.5: Detalle de un rotor montado
reflector YRUHQSLDPXNGOKMIEBFZCWVJAT (izquierda) y el montaje de los rotores.
El anillo numerado permita deslizar las
Si pulsbamos, por ejemplo E, en primer lugar se mova el conexiones elctricas, aadiendo ms
permutaciones a la conguracin general
rotor iii, de forma que quedaba en esta disposicin de la mquina. (Fotografa en dominio
pblico.)
Rotor ABCDEFGHIJKLMNOPQRSTUVWXYZ
10
sta era una conguracin autntica de
un modelo de Enigma.
iii DFHJLCPRTXVZNYEIWGAKMUSQOC
ii AJDKSIRUXBLHWTMCQGZNPYFVOE
i EKMFLGDQVZNTOWYHXUSPAIBRCJ
reflector YRUHQSLDPXNGOKMIEBFZCWVJAT
E L L T Z J C F,
N E D F S S G Q.
Una vez que el primer rotor daba una vuelta completa, el segundo
se mova un lugar, y cuando el segundo haba dado la vuelta com-
pleta, se mova un lugar el tercero. El reector, obviamente, era 11
En realidad, el movimiento de los
rotores era ms complicado; en algunas
invariante. situaciones algunos rotores daban un
doble paso.
Ejercicio 10 Cuntas letras haba que cifrar para que la
conguracin de los rotores volviese a la posicin original?
78 teora de cdigos y criptografa
diseado por Alan Turing con el nico objetivo de ltrar las posi-
bles claves alemanas mediante el ataque que l mismo concibi, el
denominado ataque de texto escogido o chosen plaintext attack.
F(k, m) = (m1 + k1 , . . . , m n + k n ),
G(k, M) = (M1 k1 , . . . , M n k n ).
Cdigos actuales
Nineteen fty ve? Enla codicacin en clave privada, tal y como la entendemos
Marty McFly Back to the future hoy, hay a grandes rasgos dos familias importantes que operan de
forma cualitativamente distinta:
DES
14 17 11 24 1 5
3 28 15 6 21 10 lo realmente interesante del cifrado des es, por tanto, el
23 19 12 4 26 8
16 7 27 20 13 2 funcionamiento de la funcin bsica de cada ronda de Feistel. La
41 52 31 37 47 55 funcin F no es compleja, aunque s bastante intrincada. Primero
30 40 51 45 33 48
44 49 39 56 34 53 veamos los pasos:
46 42 50 36 29 32
1. La mitad derecha de nuestro mensaje original, que denota-
Tabla 3.6: Permutaciones (PC 1) y mos r, posee 32 bits. Mediante una permutacin, denomina-
(PC 2) para el clculo de las 16 claves da permutacin de expansin, o simplemente E, esos 32 bits
de rondas Feistel para el des.
se convierten en 48.
criptografa de clave privada 83
Ejercicios
Ejercicio 12 Al enfrentarnos a un texto cifrado por sustitu-
cin tipo Csar, un mtodo alternativo a la fuerza bruta consiste
en hacer un diagrama de frecuencias con los smbolos del texto.
Explica cmo el anlisis de este diagrama puede conducirnos a
averiguar la clave de cifrado.
PXPXKXENVDRUXVTNLXHYMXGMAXYKXJNXGVRFXMAHWGXXWLEHGZXKVBIAXKMXQM
SWEARNOTBYTHEMOONTHEINCONSTANTMOON
2 3 a 11
A= , = .
7 8 b 23
THERE ARE MORE THINGS IN HEAVEN AND EARTH HORATIO THAN ARE
ZMXZB VIDYA WAEAL GTPTE AMZRV NMOCZ WBAHN DSIWG ZGAIN YIUBO
WKMIF WIHWF AWZGB XBXMP JMQDV FOXSS LQFGF WMPGJ ZQXSV OIEGY
WMBWA YIZRG ZMHWF AWZHU SBIOF HTMBG WLUBZ QJDOV FAFWY DZQAN
AVEKV LPUBG ZMECH FLATF ATQBP WQZFR KBXSF KLDSN EAUKN DSQRN
DWZSA SZDCJ KBDSR LAATP GJNZR KBABR FMMHU LPQVN DWATN KBDSR
LTMAC ABGFA WLYMP GTXOE LWFVR UWXRN FLPOZ HETSA EGQMR KEQFR
KBMPO WLNMG ZMRZN KPATN FMABY AOTHG ZIFGC DQFHU WVUUU LIZRG
GCOVR VBTSF GCZRB XAUZR FKQOA VQZHU WVMYR VTUUU LQEOJ LMZHU
GCEOA VXQCC DMYOL TMYCE WXQCC DMFOY CQZUJ ABTCH LABSN CQZUC
WWBZR ZMMFV FOIWG ZWGHY AAFSA AVSDR GXXSJ JQFWA YAABT KBTOG
NWUQR KVQJR JATOE WIZRA GWZSQ SZQRQ AAFIE TBTSF GCZRB XAUZR
FKQTB GTEGN ALUMB MLABB LSZCJ KQXSA UMXWX WIOOA UMDUE GEEVR
SZYMJ GZPGG ZIFWZ AOTHG WIOVL GCFOX WUKOE EAFVN LQYWT ZBDSN
UPKCH TCFAL OWDRF DQWSF ATQBG JIUBQ JWBGS WTXOA VMOVB WLUBG
ZMISY DAATF ATQBP WIZRG ZMBSB HTQPB OMPOA VXDOL WLFCG ZMZSB
FOARG ZMKAN VMMBQ LPQGV YVRZN KPQRB MBUHF OIDBV FOUBG ZMICE
VAFVN LQFKN KNAFZ AVSOA VBTSF AOZGN ALFVR OWDRF GNFVR HZADU
WBEOE WEDWG LMZCA LPQGH TEMMJ STXGN FLFSA WUQBG ZIXZF SVPKU
1 2 3 4 5
k=
4 3 5 2 1
al siguiente mensaje
LOOEC RENCN LESTS EIOTN AEETC NOYIC SOAO LSTNS EEACN TYIO
SCAOE UIDSV AIUDM NOMNT AITPR UOALE AALGA SIREE SATNT NSSNE
EIIPR TOUEP IOXLI ONCTI ECBVN IENLL EEOET MMNDR SOEEO DRPNE
IRAME D
86 teora de cdigos y criptografa
RFXLH PYIYW XGHHD CIJVR WVBXW RHMGB JIROE DLHWD JCLPS LIF
Rotores: 3-1-2
Stecker pairs: AF WZ PR HL
Este problema,
As, tenemos que Alice tiene una clave pblica K A que todo
el mundo conoce. En la vida real, todas las claves aparecen y se
pueden mirar en una especie de listn telefnico, y as mismo Bob
tiene la suya K B (incluso Eve, como usuaria del sistema). Lo im-
portante es que K A viene acompaada, cuando se crea, de una
clave privada k A que es la que se usa para desencriptar. Terica-
mente k A se puede hallar a partir de K A, pero en la prctica no es
posible, y slo Alice conoce k A (y anlogamente slo Bob conoce
k B ,...).
Tenemos una funcin de encriptacin pblica que depende
de dos parmetros: la clave de encriptacin pblica y el mensaje a
encriptar. Tenemos tambin una funcin de desencriptacin que
verica dos condiciones:
F K P C, G K C P,
Cifrado RSA.
M = m E A mod N A .
M d A = (m E A )d A = m E A d A = m1+r(N A ) = m mod N A ,
y por tanto, es un nmero pequeo en la prctica. Se puede usar el Teorema Chino del
Resto para calcular las soluciones de
la ecuacin mdulo cada primo por
separado, y la Frmula de Euler para
Cifrado de ElGamal contar las soluciones parciales. Atencin
al cero, que siempre es solucin.
En el cifrado de ElGamal, todos los usuarios del sistema
comparten cierta informacin. Se escoge un cuerpo nito FP , que
debe ser muy grande, y otro primo Q de tal forma que Q(P 1).
Se escoge, as mismo, una base comn, G FP , que tenga orden
divisible por Q. En realidad pedimos que
G (P1)/Q 1 mod P.
E A = G n A mod P.
M2 m E Ah
= = m mod P.
M1n A G hn A
Cifrado de Rabin
M = m (m + E A) mod N A .
Mdulo primo impar Slo falta ver el caso de x 2 a (mod p), con
p un primo impar y a coprimo con p. Si x 2 a (mod p) tiene
solucin, tiene exactamente dos soluciones, x y x. Sabemos (por
Euler) que la congruencia tiene solucin si y slo si a (p1)/2 1
(mod p). Ahora bien, es distinto saber que existe una solucin
que dar un algoritmo. Para el caso en que a 3 (mod p), en-
tonces x = a(p+1)/4 es una solucin. Para el caso a 1 (mod p)
no existe un frmula anloga pero se puede usar el algoritmo de
Tonelli-Shanks.
[ms] z [m E B s d A ]
clave pblica
(Q A , PA , G A , YA = G Ax A mod PA) .
R = [ G Ak mod PA ] mod Q A ,
T k = S + x A R mod Q A .
U1 = T 1 S mod Q A , U2 = T 1 R mod Q A ,
y calcula
G AU1 YAU2 mod PA .
M = F((G A , t), m) = G A m + z,
Ejercicios
Ejercicio 4.3. Dado que en RSA hay libertad para escoger la cla-
ve de encriptacin, los usuarios podran estar tentados de escoger
una clave sencilla, como por ejemplo 3. Supongamos que Alice,
Bob y Chuck escogen E A = E B = EC = 3 y que otro usuario les
enva el mismo mensaje, m, interceptado por Eve en la forma
(K A = G a , a) (K B = G b , b) ,
Calcula
S A = (KC mod 2l ) + 2l .
Calcula
TA = (K D mod 2l ) + 2l .
Halla h A = c + S A a.
hA
Halla k = (K D K BTA ) .
Ejercicio 4.17. Prueba que tanto Alice como Bob pueden reali-
zar los clculos del MQV en tiempo polinomial, mientras que Eve
necesita resolver el DLP.
y enva (R, S). Probar que Bob puede vericar la autenticidad del
mensaje comprobando
G m = YAR R S mod P.
BIBLIOGRAFA
Dinobot Island II. The Transformers, Temporada 2, Episodio 4,
1985.