teor a de c odigos y criptograf a

83
Teor´ ıa de C´ odigos y Criptograf´ ıa Grado en Matem´ aticas Departamento de ´ Algebra Ejercicios resueltos Alberto Casta˜ no Dom´ ınguez, Mar´ ıa de la Paz Tirado Hern´ andez 1 20 de febrero: anillos y congruencias Ejercicio 1.19. Demuestra que la aplicaci´ on Z Z/Z3 × Z/Z5 tal que x 7(x, x) es un homomor- fismo sobreyectivo de anillos y calcula su n´ ucleo. ¿Qu´ e condiciones tienen que verificar m y n para que exista un homomorfismo de anillos Z/Zn Z/Zm? Da un ejemplo expl´ ıcito o demuestra que no existe un homomorfismo de Z/Z5 en Z/Z20. Soluci´on. Llamemos φ a nuestra aplicaci´ on en cuesti´ on. Como no es m´ as que el producto de las proyecciones Z Z/Z3y Z Z/Z5, que son homomorfismos de anillos 2 , φ tambi´ en lo es. Que φ es sobreyectivo no es m´ as que una consecuencia del teorema chino del resto: como 3 y 5 son primos entre s´ ı, para cualquier sistema de congruencias de la forma x a mod 3 x b mod 5 , existe una ´ unica soluci´ on m´ odulo 3 · 5 = 15. Por tanto, para cualquier elemento (a + Z3,b + Z5) Z/Z3 × Z/Z5, existir´ a un x ∈{0, 1, 2,..., 15}⊂ Z tal que φ(x)=(a + Z3,b + Z5). Otra manera de probar la sobreyectividad es darse cuenta de que todo elemento (a + Z3,b + Z5) (vamos a suponer sin p´ erdida de generalidad que tanto a como b son enteros positivos) se puede escribir como a veces (1 + Z3, 0+ Z5) m´ as b veces (0 + Z3, 1+ Z5). Por tanto, basta encontrar una preimagen de los dos ´ ultimos elementos x 1 y x 2 , respectivamente, para tener que (a + Z3,b + Z5) = φ(x 1 )+ (a) ... +φ(x 1 )+ φ(x 2 )+ (b) ... +φ(x 2 )= φ(x 1 + (a) ... +x 1 + x 2 + (b) ... +x 2 ). Los x i buscados pueden ser, por ejemplo, x 1 = 10 y x 2 = 6. (De todos modos, esto no deja de ser una aplicaci´ on del teorema chino del resto en el fondo.) 1 2020 Alberto Casta˜ no Dom´ ınguez, Mar´ ıa de la Paz Tirado Hern´ andez Este trabajo est´ a publicado bajo licencia Creative Commons 3.0 Espa˜ na (Reconocimiento-NoComercial-CompartirIgual 3.0 Espa˜ na) http://creativecommons.org/licenses/by-nc-sa/3.0/es/ Usted es libre de: Compartir: copiar y redistribuir el material en cualquier medio o formato Adaptar: remezclar, transformar y crear a partir del material Bajo las condiciones siguientes: Reconocimiento: Debe reconocer adecuadamente la autor´ ıa, proporcionar un enlace a la licencia e indicar si se han realizado cambios. Puede hacerlo de cualquier manera razonable, pero no de una manera que sugiera que tiene el apoyo del licenciador o lo recibe por el uso que hace. No comercial: No puede utilizar el material para una finalidad comercial. Compartir bajo la misma licencia: Si remezcla, transforma o crea a partir del material, deber´ a difundir sus contribuciones bajo la misma licencia que el original. 2 En general, para un anillo A y un ideal I A, el morfismo can´ onico A A/I : x 7x + I es un homomorfismo sobreyectivo de anillos. 1

Upload: others

Post on 22-Jul-2022

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teor a de C odigos y Criptograf a

Teorıa de Codigos y Criptografıa

Grado en Matematicas

Departamento de Algebra

Ejercicios resueltosAlberto Castano Domınguez, Marıa de la Paz Tirado Hernandez1

20 de febrero: anillos y congruencias

Ejercicio 1.19. Demuestra que la aplicacion Z→ Z/Z3×Z/Z5 tal que x 7→ (x, x) es un homomor-fismo sobreyectivo de anillos y calcula su nucleo.

¿Que condiciones tienen que verificar m y n para que exista un homomorfismo de anillos Z/Zn→Z/Zm? Da un ejemplo explıcito o demuestra que no existe un homomorfismo de Z/Z5 en Z/Z20.

Solucion. Llamemos φ a nuestra aplicacion en cuestion. Como no es mas que el producto de lasproyecciones Z→ Z/Z3 y Z→ Z/Z5, que son homomorfismos de anillos2, φ tambien lo es.

Que φ es sobreyectivo no es mas que una consecuencia del teorema chino del resto: como 3 y 5son primos entre sı, para cualquier sistema de congruencias de la forma{

x ≡ a mod 3x ≡ b mod 5

,

existe una unica solucion modulo 3 · 5 = 15. Por tanto, para cualquier elemento (a + Z3, b + Z5) ∈Z/Z3×Z/Z5, existira un x ∈ {0, 1, 2, . . . , 15} ⊂ Z tal que φ(x) = (a+Z3, b+Z5).

Otra manera de probar la sobreyectividad es darse cuenta de que todo elemento (a+ Z3, b+ Z5)(vamos a suponer sin perdida de generalidad que tanto a como b son enteros positivos) se puede escribircomo a veces (1+Z3, 0+Z5) mas b veces (0+Z3, 1+Z5). Por tanto, basta encontrar una preimagende los dos ultimos elementos x1 y x2, respectivamente, para tener que

(a+Z3, b+Z5) = φ(x1)+(a). . . +φ(x1) + φ(x2)+

(b). . . +φ(x2) = φ(x1+(a). . . +x1 + x2+

(b). . . +x2).

Los xi buscados pueden ser, por ejemplo, x1 = 10 y x2 = 6. (De todos modos, esto no deja de ser unaaplicacion del teorema chino del resto en el fondo.)

1©2020 Alberto Castano Domınguez, Marıa de la Paz Tirado HernandezEste trabajo esta publicado bajo licencia Creative Commons 3.0 Espana (Reconocimiento-NoComercial-CompartirIgual

3.0 Espana)http://creativecommons.org/licenses/by-nc-sa/3.0/es/

Usted es libre de:

� Compartir: copiar y redistribuir el material en cualquier medio o formato

� Adaptar: remezclar, transformar y crear a partir del material

Bajo las condiciones siguientes:

� Reconocimiento: Debe reconocer adecuadamente la autorıa, proporcionar un enlace a la licencia e indicar sise han realizado cambios. Puede hacerlo de cualquier manera razonable, pero no de una manera que sugiera quetiene el apoyo del licenciador o lo recibe por el uso que hace.

� No comercial: No puede utilizar el material para una finalidad comercial.

� Compartir bajo la misma licencia: Si remezcla, transforma o crea a partir del material, debera difundir suscontribuciones bajo la misma licencia que el original.

2En general, para un anillo A y un ideal I ≤ A, el morfismo canonico A → A/I : x 7→ x + I es un homomorfismosobreyectivo de anillos.

1

Page 2: Teor a de C odigos y Criptograf a

El nucleo de φ es bien sencillo de calcular; no es mas que Z3 ∩Z5 = Z15.

Vayamos con la segunda pregunta, y supongamos que existe un homomorfismo de anillos ψ :Z/Zn→ Z/Zm. Dado que 1+Zn debe ir a 1+Zm, al igual que antes, para cualquier entero positivoa, debemos tener que

ψ(a+Zn) = ψ(1 +Zn)+ (a). . . +ψ(1 +Zn) = (1 +Zm)+ (a). . . +(1 +Zm) = a+Zm.

Por tanto, si existe algun homomorfismo ψ de anillos de Z/Zn a Z/Zm, debe mandar cada clase a+Znen la clase a+Zm. Ahora bien, eso solo tiene sentido si ψ esta bien definido; para verlo basta comprobarque para todo entero x tal que x + Zn = 0 + Zn que escojamos3, ψ(x + Zn) = x + Zm = 0 + Zm.Y en este caso tenemos que x+ Zm = 0 + Zm si y solo si m divide a x. Como x era un multiplo den cualquiera, podremos definir ψ si y solo si m divide a n. En este caso, ψ serıa un homomorfismosobreyectivo de nucleo Z/Zn(m+Zn).

La propia demostracion nos demuestra que no puede haber un homomorfismo de Z/Z5 a Z/Z20,pero sı de Z/Z20 a Z/Z5, que mandarıa necesariamente a+Z20 en a+Z5.

Ejercicio 1.25. (Teorema de Wilson) Sea p ∈ Z. Probar que p es primo si y solo si (p− 1)! ≡ −1mod p.

1) Pruebese que si p es primo y a ≡ ±1 mod p, entonces el inverso de la clase de a en Fp es distinto4

de a.

2) Pruebese que 2 · 3 · . . . · (p− 2) ≡ 1 mod p.

3) Pruebese el teorema de Wilson.

Solucion. Vamos a suponer a lo largo de todo el ejercicio que si p es primo tambien es impar. Si p es2 la prueba de todos los apartados es muy facil.1) Sea a ∈ Fp, y supongamos que a−1 = a. Entonces a2 = 1, o dicho de otro modo, a2 − 1 =(a + 1)(a − 1) = 0. Como Fp es cuerpo, o bien a + 1 = 0 o bien a − 1 = 0. Por lo tanto, si a ≡ ±1mod p, necesariamente (a+Zp)−1 = a+Zp.2) Como para todo elemento del conjunto {2, 3, . . . , p − 2} ⊂ Fp su inverso es distinto de sı mismo,podemos separar dicho conjunto en la union disjunta de subconjuntos de la forma {a, a−1}, con lo queel producto 2 · 3 · · . . . · (p− 2) (donde los factores estan en Fp ahora) contiene (p− 2)/2 productos deun elemento y su inverso, ası que debe ser uno. Dicho de otro modo, 2 · 3 · . . . · (p− 2) ≡ 1 mod p.3) Si p es primo basta aplicar el apartado anterior, para tener que

(p− 1)! = 2 · 3 · . . . · (p− 2) · (p− 1) ≡ (p− 1) ≡ −1 mod p.

Si p es compuesto, podremos escribirlo de la forma p = ab, donde tanto a como b seran dos numerosenteros positivos entre 2 y p− 1. Por tanto, ambos apareceran como factores de (p− 1)!, haciendo quemodulo p dicho factorial se anule.

Ejercicio 1.30. Usa el Teorema Chino del Resto para encontrar un polinomio f(x) tal que

f(x) ≡ 1 mod (x+ 1),

f(x) ≡ 2 mod (x− 1),

f(x) ≡ 7 mod (x− 2).

3Deberıamos probarlo para cualquier representante de cualquier clase a+Zn, pero por linealidad basta hacerlo paralos representantes de 0 +Zn. ¿Por que?

4Notese que estamos escribiendo los enteros y sus correspondientes clases en Fp del mismo modo.

2

Page 3: Teor a de C odigos y Criptograf a

Prueba (usando el TCR) el teorema de interpolacion de Lagrange: sobre un cuerpo K dados k + 1puntos (a0, b0), . . . , (ak, bk) de K2 donde los ai son distintos dos a dos, existe un unico polinomiof(x) ∈ K[x]de grado k tal que f(ai) = bi para todo i = 0, . . . , k.

Solucion. Para el sistema concreto del principio, basta seguir la receta que aparece en las notasde teorıa (Teorema 10), aprovechando que los modulos son primos entre sı dos a dos. Sean pues,m1 = x + 1, m2 = x − 1 y m3 = x − 2, de modo que M1 = m2m3 = x2 − 3x + 2, M2 = m1m3 =x2 − x − 2 y M3 = m1m2 = x2 − 1. Sabemos que el sistema tiene una unica solucion moduloM = m1m2m3 = x3 − 2x2 − x+ 2.

Debemos plantear ahora identidades de Bezout5 para cada par (mi,Mi):

−x− 4

6m1 +

1

6M1 = 1,

x

2m2 −

1

2M2 = 1,

−x+ 2

3m3 +

1

3M3 = 1.

Por ultimo, la solucion buscada sera

1 · 16M1 + 2

(−1

2

)M2 + 7

1

3M3 =

3

2x2 +

1

2x.

En cuanto al teorema de interpolacion de Lagrange, podemos escribirlo como un problema de congru-encias en el dominio euclıdeo K[x]:

f(x) ≡ b0 mod (x− a0),...

f(x) ≡ bk mod (x− ak).

Como los aj son distintos entre sı dos a dos, los polinomios x− aj seran primos entre sı dos a dos enK[x]. Sean mj y Mj , para j = 0, . . . , k los polinomios correspondientes, y consideremos, para cadaj = 0, . . . , k las identidades de Bezout 1 = αjmj + βjMj . Ası, podemos afirmar que existe una unica

solucion f(x) modulo∏k

j=0(x− aj) del sistema, que vendra dada por

f(x) =k∑

j=0

bjβjMj .

Nos basta probar que un polinomio como el de arriba tiene grado k. En efecto, cada Mj es de gradok, porque es producto de k factores lineales, los bj son constantes y los βj tambien: al efectuar ladivision de polinomios de Mj entre mj podemos escribir Mj = mjqj + rj , donde deg rj < degmj = 1,es decir, rj sera un elemento de K no nulo, porque mj no divide a Mj . Por tanto, dividiendo entre rjpodemos escribir r−1

j Mj − r−1j qjmj = 1, con lo que βj = r−1

j es una constante para todo j.

Ejercicio 1.40. Sea N ∈ Z del cual conocemos φ(N) y tambien que es producto de dos primos. Darun procedimiento para hallar la factorizacion de N .

Solucion. Sean p y q los factores de N , esto es, N = pq. Como φ(N) = (p− 1)(q− 1) = N − p− q+1,sabemos que p y q seran soluciones del sistema de ecuaciones

xy = Nx+ y = N − φ(N) + 1

},

5¿Como se pueden conseguir de manera facil estas igualdades? La solucion esta unas lıneas mas abajo al final delejercicio.

3

Page 4: Teor a de C odigos y Criptograf a

pero es lo mismo afirmar que p y q son las soluciones de la ecuacion de segundo grado

z2 − (N − φ(N) + 1)z +N = 0.

Basta resolver dicha ecuacion (un procedimiento muy sencillo) para hallar la factorizacion de N .

Ejercicio 1.42. Demuestra que para todo entero n, 30|(n5 − n).Solucion. Tenemos dos maneras de demostrarlo. La primera es usar el pequeno teorema de Fermat.En efecto, tenemos que n2 ≡ n mod 2 para todo entero n, y por tanto, n5 ≡ n4 ≡ . . . ≡ n mod 2.Por otro lado, n3 ≡ n mod 3, ası que n5 ≡ n3 ≡ n mod 3 tambien. Y por ultimo, n5 ≡ n mod 5.En conclusion, como 2, 3 y 5 dividen a n5 − n para todo entero n y son primos entre sı, su producto,que es 30, tambien dividira a n5 − n.

La segunda prueba esta pergenada para que funcione en este caso concreto y no usa la potencia delpequeno teorema de Fermat (o el de Euler). Se trata de factorizar n5−n como n(n−1)(n+1)(n2+1).Como de dos (o tres) numeros consecutivos siempre hay uno par (o multiplo de 3), n(n − 1)(n + 1)sera multiplo de 2 y 3, y por tanto de 6, para todo n. El ultimo paso es ver que si ni n ni n + 1 nin − 1 son multiplos de 5, entonces n ≡ ±2 mod 5, con lo que n2 + 1 ≡ 0 mod 5. Es decir, n5 − ntambien es multiplo de 5, y por tanto de 30.

27 de febrero: Cuerpos finitos y complejidad

Ejercicio 1.52. Demuestra que ningun cuerpo finito es algebraicamente cerrado.

Solucion. Un cuerpo K es algebraicamente cerrado si todo polinomio f(x) ∈ K[x] tiene una raız enK. Por tanto, lo que podemos hacer para demostrar lo que nos piden es dar, para cuerpo finito, unpolinomio sin raıces en el.

Vamos a usar dos hechos fundamentales: Todo cuerpo finito es de la forma Fq, donde q = pr esuna potencia de un primo p. Por otro lado, todo elemento a de Fq verifica que aq = a. Como Fq

tiene q elementos, es lo mismo decir que el polinomio xq − x ∈ Fq[x] tiene como raıces a todos loselementos6 de Fq.

En conclusion, ningun elemento de Fq es solucion del polinomio xq − x+ 1 ∈ Fq[x], ası que Fq nopuede ser algebraicamente cerrado.

Ejercicio 1.53. Representamos F9 como F3[α], donde α verifica α2 + 1. Discute, en funcion delparametro m, la existencia de soluciones del siguiente sistema y hallalas cuando existan:{

(α+ 2)X + (2α+ 1)Y = 2mX + (α+ 1)Y = 0

.

Da los elementos de F9 en forma logarıtmica y matricial. (Atencion: α no es primitivo y hay quetener un poco de cuidado.)

Solucion. Como el rango de la matriz ampliada del sistema es 2, tendremos que comprobar para quevalor de m se anula el determinante∣∣∣∣α+ 2 2α+ 1

m α+ 1

∣∣∣∣ = (α+ 2)(α+ 1)− (2α+ 1)m = α2 + 3α+ 2− (2α+ 1)m = 1− (2α+ 1)m,

en donde hemos usado que, por definicion, α2 = 2. Por tanto, el sistema sera incompatible si y solo sim = (2α+ 1)−1, siendo compatible determinado en caso contrario.

6De hecho, para ser mas precisos, podrıamos decir que Fq es el cuerpo de descomposicion del polinomio sq − s ∈Fp[s].

4

Page 5: Teor a de C odigos y Criptograf a

Si queremos dar una expresion polinomica en funcion de α a (2α + 1)−1 y no queremos probarcon los elementos de F9 uno a uno, podemos escribir (2α + 1)−1 = aα + b. Los valores de a y bpodemos hallarlos si tenemos en cuenta que (aα + b)(2α + 1) = 1, es decir, (a + 2b)α + (a + b) = 1.Resolviendo este sistema (con coeficientes e incognitas en F3), obtenemos que a = b = 2, esto es,(2α+ 1)−1 = 2α+ 2.

Vamos a suponer entonces que m = (2α+1)−1 = 2α+2 y resolvamos el sistema, por ejemplo, porreduccion. Sumando 2α+ 2 veces la primera ecuacion y 2α+ 1 veces la segunda, obtenemos que

((2α+ 2)(α+ 2) + (2α+ 1)m)X = α+ 1,

por lo queX = (α+ 1)(2 + (2α+ 1)m)−1.

Por otro lado, sumando 2m veces la primera ecuacion y α+ 2 veces la segunda, conseguiremos

(2m(2α+ 1) + (α+ 2)(α+ 1))Y = m,

ası queY = m(1 + 2m(2α+ 1))−1.

Nos dice el enunciado que α no es primitivo. En efecto, sabemos que el grupo de unidades de F9 escıclico de orden 8, por lo que los posibles ordenes de un elemento β ∈ F∗

9 seran los divisores de 8, 1, 2, 4o el propio 8. Si calculamos dichas potencias de α, vemos que α2 = 2 = 1 y α4 = (α2)2 = 1. Debemosencontrar otro elemento no nulo β de orden 8. Podemos intentar hallarlo de modo que β2 = ±α,porque ası sabrıamos directamente que ord(β) = 2 ord(α) = 8. Una de las cuatro7 posibilidades quetenemos es β = α+1. Y de hecho, β2 = 2α. Para hallar la expresion de los elementos de F9 en formalogarıtmica (con respecto al elemento primitivo β) nos basta hallar sus potencias:

Elemento 0 1 2 α α+ 1 α+ 2 2α 2α+ 1 2α+ 2

Potencia 0 β8 β4 β6 β β7 β2 β3 β5.

Acabamos con la representacion matricial. Para ello, hallaremos primero el polinomio mınimo(visto como polinomio de F3[x]) de β. Como β2 = 2α = 2β + 1, un candidato a polinomio mınimoserıa f(x) = x2 + x + 2. Como es monico e irreducible (basta ver que f no se anula en F3), ya lotenemos. Su matriz companera es entonces

Mf =

(0 11 2

)∈M(2× 2,F3).

En conclusion, los elementos de F9 se pueden representar como

{02, Id2, 2 Id2,Mf ,Mf + Id2,Mf + 2 Id2, 2Mf , 2Mf + Id2, 2Mf + 2 Id2} ,

donde M2f = 2Mf + 1 y 02 es la matriz nula de orden 2× 2.

Mezcla de los ejercicios 1.59, 1.64 y 1.65. Sean a, n y m tres enteros. Para el calculo de an

mod m podrıa darse un algoritmo que realizase ese calculo multiplicando por sı mismo n veces yposteriormente reduciendo modulo m el resultado obtenido. ¿Que complejidad tendrıa?

Sin embargo, si n es muy grande, un calculo del tipo anterior serıa impracticable, entre otrasrazones por el numero excesivo de multiplicaciones y porque los calculos intermedios de estos productosproporcionarıan numeros de tamano creciente, que podrıan superar la capacidad de almacenamiento

7De hecho, salvo los elementos de F3 y ±α, cualquier otro nos valdrıa. ¿Por que?

5

Page 6: Teor a de C odigos y Criptograf a

de un ordenador. Da un algoritmo que resuelva el segundo inconveniente, reduciendo modulo m todaslas potencias de a obtenidas. ¿Cual serıa su complejidad?

Vamos un paso mas alla; da un algoritmo que solo calcule las potencias de amodulom de exponenteuna potencia de dos y calcula su complejidad.

Solucion. Para describir los algoritmos que vamos a estudiar usaremos la notacion x→ y para indicarque realizamos primero el procedimiento x y justo despues y y ası aclarar que operaciones efectuaremosy en que orden las llevaremos a cabo. Tambien vamos a suponer por simplicidad que m ≤ a.

En nuestro primer algoritmo, el que parece mas sencillo (al menos de definir), haremos lo siguiente:

a→ a2 = a · a→ a3 = a2 · a→ . . .→ an = an−1 · a→ an mod m.

(Cada paso usa informacion obtenida en el anterior.)La complejidad de multiplicar dos numeros b y c es O(log b log c), ası que podemos afirmar que la

de tomar el producto de a por a es O(log2 a). Igualmente, para obtener a3 como a2 por a necesitare-mos O(log(a2) log a) = O(2 log2 a) operaciones. Ahora podemos decir que O(2 log2 a) = O(log2 a) oconservar la constante; si prestamos atencion a lo que hacemos ambos procederes nos van a devolver elmismo resultado. Seguimos multiplicando potencias de a por el propio a hasta llegar a an = an−1 · a,que necesita O((n − 1) log2 a) operaciones. Si hemos optado por escribir los sucesivos exponentes enla expresion de la complejidad, vemos que para todos estos calculos hemos necesitado

O((1 + 2 + . . .+ n− 1) log2 a

)= O(n2 log2 a)

operaciones. Si hemos optado por no incluir los exponentes, deberıamos darnos cuenta de que hemosrealizado n veces un proceso que requiere a lo sumo O((n− 1) log2 a) = O(n log2 a) operaciones; aquın es un parametro mas del problema y no lo podemos tratar como una constante. Por tanto, el costetotal hasta este punto habra sido O(n · n log2 a) = O(n2 log2 a) operaciones.

Por ultimo, hallar el valor de an mod m necesitaO(log2(an)) = O(n2 log2 a) operaciones. Sumandoambas cantidades, llegamos a que el procedimiento mas sencillo tiene complejidad O(n2 log2 a).

El segundo procedimiento evitarıa el coste en espacio al tener que almacenar numeros mas pequenos;vamos a ver que tambien su coste temporal es menor. Vamos a esquematizarlo del siguiente modo:

a→ a1 ≡ a mod m→ a21 → a2 ≡ a21 mod m→ a2·a→ a3 ≡ a2·a mod m→ . . .→ an ≡ an−1a mod m.

Es decir, tomamos un representante menor que m de a modulo m, y tomamos su cuadrado. Volvemosa tomar modulo m, multiplicamos por a y reducimos una vez mas, que nos darıa un representantede a3 + Zm menor que m. Repetimos el proceso hasta la n-esima potencia y acabamos tomandomodulo m. Cada ak sera conguruente con ak modulo m de esta manera. Desde luego hemos divididonuestro nuevo algoritmo en muchos mas procedimientos menores, pero el coste no aumentara, sinoque descendera.

El primer paso requiere O(log2 a) operaciones (no es mas que el resto de la division euclıdea). Elsiguiente necesitaraO(log2 a1) ≤ O(log2 a). Ahora reducir a21 modulom tiene complejidadO(log2(a21)),es decir, O(log2 a1) ≤ O(log2 a). Y ya se aprecia la tonica general del proceso: al acotar todos losvalores por m (y por tanto por a), no estamos aumentando el tamano de los numeros con los queoperamos y ası la complejidad de las operaciones. Si seguimos hasta el final, habremos realizado nreducciones modulo m y n − 1 productos de numeros acotados por a. Por tanto, la complejidad detodo el procedimiento sera

O(n log2 a) +O(n log2 a) = O(n log2 a),

con lo que ganamos un exponente en n.

6

Page 7: Teor a de C odigos y Criptograf a

Todo esto se puede mejorar aun mas si calculamos solo las potencias de a de exponentes de la forma2k, elevando al cuadrado reiteradamente. Como en las ocasiones anteriores, describamos el proceso.Vamos a suponer que tenemos la expresion binaria de n, de modo que n = s0 + s12 + . . .+ sk2

k. Enprimer lugar calculamos determinadas potencias de a como hemos dicho:

a1 ≡ a mod m→ a21 → a2 ≡ a21 mod m→ a22 → a3 ≡ a22 mod m→ . . .→ ak ≡ a2k−1 mod m.

De este modo, cada ak sera congruente con a2kmodulo m. El segundo proceso es multiplicar los aj

para los que sj = 1. Para describirlo vamos a suponer que estamos en el peor de los casos posibles, esdecir, si = 1 para todo i = 0, . . . , k. Haremos lo siguiente:

a ·a2 → b2 ≡ a ·a2 mod m→ b2 ·a3 → b3 ≡ b2 ·a3 mod m→ . . .→ bk−1 ·ak → bk ≡ bk−1 ·ak mod m.

Por la construccion de todo el proceso, cada bj sera congruente con a2j+1−1 modulo m.

Ahora tenemos dos sucesiones de procedimientos, pero solo hay k ≃ log n en cada una. Esto va aser una diferencia crucial. Para hallar la complejidad de la primera sucesion de operaciones, podemosrazonar como con el segundo algoritmo, dandonos cuenta de que ahora multiplicamos dos numeros detamano menor que a unas log n veces y los reducimos modulo m tantas otras ocasiones, para llegara que la primera etapa tiene complejidad O(log n log2 a). La segunda etapa se basa exactamente enlas mismas operaciones, ası que tambien tendra complejidad O(log n log2 a). En conclusion, hallar an

mod m por este ultimo metodo tiene complejidad

O(log n log2 a),

que es polinomial y supone un avance enorme comparado con lo que habıamos hecho antes.

Ejercicio 1.57. Responder a las siguientes cuestiones:1) En el F5-espacio vectorial F3

5, determina si los siguientes elementos son linealmente independienteso no:

⟨(1, 4, 2), (3, 3, 1), (4, 0, 4)⟩, ⟨(1, 4, 1), (3, 3, 3), (4, 0, 4)⟩.

2) Se considera el cuerpo F49 = F7[x]/(x2+2x+2), donde expresamos los elementos de forma matricial.

En el F49-espacio vectorial F249, estudia si

⟨(2Mf ,Mf + Id2)⟩ = ⟨(2Mf + 5 Id2, 5Mf + Id2)⟩.

Solucion. Este ejercicio es sencillo, lo unico que tenemos que hacer es calcular varios determinantes.1) Tenemos que ∣∣∣∣∣∣

1 4 23 3 14 0 4

∣∣∣∣∣∣ = 1 y

∣∣∣∣∣∣1 4 13 3 34 0 4

∣∣∣∣∣∣ = 0,

por lo que la primera terna son linealmente independientes (y ası generan F35) y la segunda no (por

ejemplo, el tercer vector es el doble del primero menos el segundo).2) En este caso, ∣∣∣∣ 2Mf Mf + Id2

2Mf + 5 Id2 5Mf + Id2

∣∣∣∣ = 3M2f + 2Mf + 5M2

f + 2 Id2 = 0,

ası que ambas direcciones son la misma.

Ejercicio 1.35. Sea Z[i] el anillo de los enteros de Gauss. Identifica los cuerpos finitos Z[i]/(1 + i) yZ[i]/(2 + i).

7

Page 8: Teor a de C odigos y Criptograf a

Solucion. Habrıa que preguntarse en un primer momento como es que ambos cocientes sean cuerpos(la finitud vendra despues). Resulta que como tanto 1 + i y 2 + i son elementos de norma prima,deben ser irreducibles. Por otro lado, como Z[i] es un dominio de factorizacion unica ambos elementosdeterminan un ideal primo. Y como Z[i] es un dominio de ideales principales, todo ideal primo esmaximal, con lo que los cocientes por ellos seran cuerpos.

De todos modos, basta notar que los enteros de Gauss se pueden representar como Z[x]/(x2 + 1),donde la clase de x se corresponde con la unidad imaginaria i, ası que

Z[i]/(1 + i) ∼= Z[x](x2 + 1, x+ 1).

Ahora basta dividir un generador por el otro de nuestro ultimo ideal, pues x2+1 = (x+1)(x− 1)+2,y ası

Z[i]/(1 + i) ∼= Z[x](x2 + 1, x+ 1) ∼= Z[x]/(x+ 1, 2) ∼= Z/Z2,

es decir, el cuerpo finito que buscabamos era F2.De igual modo, como x2 + 1 = (x+ 2)(x− 2) + 5,

Z[i]/(2 + i) ∼= Z[x](x2 + 1, x+ 2) ∼= Z[x]/(x+ 2, 5) ∼= Z/Z5,

y el cuerpo finito que buscabamos era F5.

3 de marzo: Prueba del tema 1

Ejercicio 1. Sean x e y dos elementos de un grupo abeliano G de ordenes coprimos. Probar que:

a) Si para ciertos enteros a y b se tiene que xa = yb, entonces xa = yb = e.

b) En consecuencia, ord(xy) = ord(x) ord(y).

Solucion. a) Sea z = xa = yb ∈ G. Como ord(xa) es un divisor de ord(x) y ord(yb) es un divisor deord(y), tenemos que ord(z) sera un divisor comun de ord(x) y ord(y), pero como estos son coprimos,necesariamente ord(z) = 1, es decir, z = e.

b) Supongamos ahora que exista un entero k tal que (xy)k = e. En ese caso, tambien podemos escribirque xk = y−k. Por el apartado anterior, xk = y−k = e, ası que k sera un multiplo tanto de ord(x)como de ord(y). Usando nuevamente que son primos entre sı, k sera un multiplo de su producto,siendo este ultimo el valor mas pequeno que podemos tomar de modo que (xy)k = e; dicho de otromodo, ord(xy) = ord(x) ord(y).

Ejercicio 2.

1. Sea A un dominio euclıdeo. Probar que para todos elementos a y b no nulos existe su multiplocomun mınimo mcm(a, b) := m, de modo que tanto a como b dividen a m, y si ambos dividen aun x ∈ A, entonces m divide a x. Probar que m es unico salvo asociados.

2. Sea A un anillo de caracterıstica p > 0. Probar que si a es un elemento nilpotente de A, 1 + aes unipotente, esto es, existe una potencia de 1 + a igual a 1.

Solucion. 1. Como A es en particular un dominio de ideales principales, vamos a definir su multiplocomun mınimo como el generador del ideal (a) ∩ (b) de A. Es facil ver que como (m) ⊆ (a), a seraun divisor de m, y de igual modo b dividira a m. Por otro lado, si existe un elemento x ∈ A que seamultiplo comun a a y b, entonces x ∈ (a) ∩ (b) = (m), es decir, m sera un divisor de x. Por ultimo, siexistiera otro elemento m′ ∈ A cumpliendo las dos caracterısticas anteriores, tendrıamos que m y m′

se dividirıan mutuamente, es decir, serıan asociados.

8

Page 9: Teor a de C odigos y Criptograf a

Otro modo de definir el multiplo comun mınimo de a y b es tomar mcm(a, b) := ab/mcd(a, b),sabiendo que existe mcd(a, b) por ser A un dominio de factorizacion unica. En este caso, comomcd(a, b) es un divisor de b, a dividira a mcm(a, b), y razonamos de modo analogo con b. Ahora, sitanto a como b dividen a cierto x, tambien lo haran a/mcd(a, b) y b, que son primos entre sı (porqueal dividir por mcd(a, b) no comparten factores), y por tanto tambien su producto, que es mcm(a, b).Finalmente, y al igual que en el parrafo anterior, la segunda propiedad nos garantiza la unicidad salvoasociados de mcm(a, b) Tambien podemos usar que mcd(a, b) es unico salvo asociados.

Si consideramos las factorizaciones primas de a y b, podrıamos definir m tambien como el productode los primos comunes a ellas elevados al maximo exponente con el que aparecen por el producto de losprimos no comunes elevados al exponente con el que aparezcan en alguna de las dos factorizaciones,pero eso es equivalente a la definicion de arriba8.

2. Por un lado sabemos que a es nilpotente, es decir, que existe un entero positivo N tal que aN = 0.Por otro lado A es de caracterıstica p (que al ser positiva debe ser un primo), y por consiguiente(x+y)p

r= xp

r+yp

rpara todos x e y en A y r ≥ 0. Ası, tomando unM > 0 lo suficientemente grande

como para que pM > N , tendremos que (1 + a)pM

= 1 + apM

= 1, es decir, 1 + a sera unipotente.

Ejercicio 3. Consideremos el anillo F2[x].

1. Probar que el polinomio x4 + x + 1 es irreducible en F2[x]. (Pista: hallar antes los posiblespolinomios irreducibles de grado dos en F2[x].)

2. Sea k el cuerpo F2[x]/(x4+x+1). Determinar el cardinal y la caracterıstica de k. Dicho cuerpo

es un espacio vectorial sobre F2. ¿De que dimension? Dar una base.

3. Dar un grupo isomorfo a k∗. ¿Que ordenes posibles pueden tener sus elementos? Usando elejercicio 1, demostrar que α =

[(x3 + x)(x2 + x)

]es un generador de k∗. ¿Cuantos generadores

hay en k∗? ¿Que forma tendran?

Solucion. 1. Es inmediato probar que f(x) := x4 + x+ 1 no tiene raıces en F2, lo que nos excluye laposibilidad de que f tenga factores lineales. La unica posibilidad que queda es que sea el productode dos polinomios irreducibles (porque si tuvieran una raız tambien lo serıa de f) de grado 2. Vamosa seguir la pista, y ver cuantos candidatos a factores podemos considerar. En F2[x] tenemos cuatropolinomios de grado 2: x2, x2+1, x2+x y x2+x+1. Los tres primeros son reducibles (porque tienenraıces en F2) y el cuarto no, ası que de ser f reducible, deberıa ser (x2 + x + 1)2 = x4 + x2 + 1, queno es el caso.

2. Como k se ha obtenido tomando cociente a F2[x] por el ideal generado por un polinomio irreduciblede grado 4, necesariamente sera un cuerpo finito isomorfo a F24 = F16. Por tanto, su caracterısticasera 2 y su cardinal 16. En efecto, tambien podemos ver a k como un F2-espacio vectorial de dimension4. Denotando por [g(x)] a la clase g(x)+ (x4+x+1), una base de k sobre F2 serıa {[1], [x], [x2], [x3]}.3. Sabemos que k∗, por ser el grupo de unidades de un cuerpo finito, es isomorfo a un grupo cıclico.En k hay 16 elementos, ası que en k∗ habra 15 y ası k∗ ∼= Z/Z15. Los ordenes de sus elementos serandivisores del orden del grupo, esto es, 1, 3, 5 y 15. Para ver que α es un generador, tenemos quecomprobar que su orden es 15, que es producto de dos enteros primos entre sı. Como tenemos queusar el ejercicio 1, vamos a hallar el orden de [x3 + x].

Usaremos constantemente a partir de ahora que en k se tiene que [x4] = [x+ 1], [x5] = [x2 + x] y[x6] = [x3+x2]. En primer lugar, [x3+x]2 = [x3+x2+x2] = [x3], ası que [x3+x]3 = [x3+x2+x+1]y ord([x3 + x]) > 3. Vamos a ver si el orden es 5: [x3 + x]5 = [x3 + x2 + x+ 1][x3] = [x3 + x2 + x2 +x + x + 1 + x3] = [1], por lo que, en efecto, ord([x3 + x]) = 5. Para que todo cuadre deberıa ocurrir

8¿Por que?

9

Page 10: Teor a de C odigos y Criptograf a

que ord([x2 + x]) = 3, y ası es, pues [x2 + x]2 = [x+ 1 + x2] y [x2 + x]3 = [x2 + x+ x+ 1 + x2] = [1].En conclusion, ord(α) = 3 · 5 = 15, ası que α es un generador de k∗.

Por ultimo, sabemos que en un grupo cıclico Cn hay φ(n) generadores (el cardinal de (Z/Zn)∗),ası que en este caso en k∗ tendremos φ(15) = 8 generadores. Su expresion general debera ser de laforma9 αj , donde j es primo con 15 (o mas explıcitamente, j ∈ {1, 2, 4, 7, 8, 11, 13, 14}).

Ejercicio 4. Sean a y b dos enteros, con a > b > 0. Describe un procedimiento para resolver cadauno de los siguientes problemas y justifica su complejidad (Observacion: la evaluacion puede dependerde la complejidad que se consiga):

i) Hallar los coeficientes de una identidad de Bezout de la forma αa+ βb = mcd(a, b).

ii) Dado a en notacion decimal, escribir a en formato hexadecimal.

iii) Dado a en notacion binaria, escribir a en formato hexadecimal de modo mas eficiente que en elanterior apartado.

Solucion. i) Vamos a suponer que hemos realizado el algoritmo de Euclides para hallar mcd(a, b). Ası,habremos realizado m divisiones euclideas de la forma

a =q0b+ r0,

b =q1r0 + r1,

r0 =q2r1 + r2,

...

rm−2 =qmrm−1 + rm,

rm−1 =qm+1rm.

(1)

De este modo, mcd(a, b) = rm =: d. Definamos r−1 := b y r−2 := a. En cada paso hemos realizado unadivision euclıdea de complejidad menor o igual que O(log2 a), porque todos los restos estan acotadospor nuestro mayor entero de partida. Como la cantidad de pasos es, en el peor de los casos, similaral tamano de a, la complejidad de este algoritmo es O(log3 a). (Esto lo vamos a dar por conocidoteniendo en cuenta que se vio en clase.)

Para hallar los coeficientes de la identidad de Bezout nos basta con desandar de manera apropiadael camino que hemos recorrido arriba en (1), y eso es lo que vamos a estudiar. Fijemonos en la ultimadivision euclıdea que hemos realizado, la que es exacta, y tomemos αm := −qm y βm := 1. Paracualquier k = 1, . . . ,m, escribiremos

αm−k := βm−k+1 y βm−k := αm−k+1 − βm−k+1qm−k.

Esta eleccion se justifica en los siguiente: Supongamos que para cierto 1 ≤ s ≤ m tenemos la identidadde Bezout parcial d = αsrs−2 + βsrs−1. Dado que rs−1 = rs−3 − qs−1rs−2, podemos sustituir el valorde rs−1 en la identidad anterior para obtener que

d = βsrs−3 + (αs − qs−1βs)rs−2 = αs−1rs−3 + βs−1rs−2.

En conclusion, para obtener la ultima identidad

d = α0r−2 + β0r−1 = αa+ βb

habremos realizado m productos y m diferencias de enteros acotados todos por a, obteniendo unacomplejidad O(log3 a).

9O tambien βγ, donde β y γ son elementos no nulos de k de ordenes respectivos 3 y 5. Piensalo.

10

Page 11: Teor a de C odigos y Criptograf a

Este procedimiento es sencillo y polinomial en tiempo, pero requiere almacenar todos los restos ycocientes obtenidos en las m divisiones enteras que hemos realizado, por lo que es bastante complejoen espacio, es decir, es necesario un uso elevado de la memoria de la maquina. Para evitar esto, loscoeficientes de la identidad de Bezout se pueden ir calculando tambien a la vez que se van realizando lasdivisiones, almacenando unicamente el cociente y el resto del paso anterior. Este algoritmo, llamadoalgoritmo de Euclides extendido, tambien tiene complejidad O(log3 a) en tiempo, pero es mucho maseficiente en terminos de espacio.

ii) El procedimiento que vamos a describir consiste en hacer divisiones enteras para conocer los dıgitoshexadecimales de a. Supongamos que (a)16 = hrhr−1 · · ·h0. Esto significa que podemos escribir

a =16q0 + h0,

q0 =16q1 + h1,

...

qr−1 =16qr + hr,

donde los hk son los restos de cada division y qr = 0 (es decir, qr−1 = hr < 16). Para llevar a caboeste procedimiento realizamos r ≃ log16 a divisiones enteras, cada una de complejidad menor o igualque log2 a, porque todos los enteros que participan estan acotados por a. Como log16 a es igual, salvoproducto por una constante, que log a, la complejidad total del procedimiento sera O(log3 a).iii) En este caso nos vamos a aprovechar de que una base divide a la otra. Mas concretamente, siescribimos (a)2 = bkbk−1 · · · b0 y (a)16 = hrhr−1 · · ·h0, estas expresiones significan que

a = 2kbk + 2k−1bk−1 + . . .+ b0 = 16rhr + 16r−1hr−1 + . . .+ h0.

Como b4j + 2b4j+1 + 4b4j+2 + 8b4j+3 = hj para todo j = 0, . . . , r, para obtener la representacionhexadecimal de a bastara con hacer dichas sumas por cada dıgito hexadecimal de a, es decir, realizaraproximadamente log16 a veces un proceso de complejidad constante, pues los enteros involucrados nocrecen mas alla de 8. En conclusion, este procedimiento tiene complejidad O(log a).

12 de marzo: Codigos correctores y detectores de errores, codigoslineales, parametros y matrices asociadas

Ejercicio 2.1 El codigo nif funciona de la siguiente manera: las palabras son pares (n, l), donden ∈ Z y l ∈ {0, 1, . . . , 22}, siendo n ≡ l mod 23. Demuestra que el codigo nif detecta un error en latransmision de (n, l), ası como dos errores, si corresponden a la permutacion de dos cifras decimalesconsecutivas. ¿Puede detectar dos errores cualesquiera? ¿Puede corregir un error?

Solucion. Hay que tener claro que significa que un codigo detecte o corrija errores. La deteccionde errores ocurre cuando la palabra erronea no esta en el codigo (esto es, sabemos que algo falla),mientras que la correccion se puede realizar cuando no solo se sabe que hay errores, sino que tambiense sabe de que palabra proviene la erronea recibida (asumiendo ciertas hipotesis como estrategias decorreccion). Usaremos estos significados de manera implıcita en este ejercicio y el siguiente.

Para demostrar la primera afirmacion, supongamos primero que el error esta presente en n, recibi-endo un n′ que difiere de n en el k-esimo dıgito (empezando a contar desde la derecha, con k = 1, . . . , 8),es decir, n′−n = 10k−1a, donde a es un entero no nulo en {−9, . . . , 9}. De ese modo, n′−n ≡ 10k−1amod 23, pero como 23 es primo y no puede dividir ni a 10k−1 ni a a, n′ ≡ l mod 23 y ası podemosdetectar el error. Si el error se encuentra en l, recibiendo cierto l′, es obvio, pues el dıgito de control(letra en realidad) es distinto del que deberıa recibirse.

11

Page 12: Teor a de C odigos y Criptograf a

Asumamos ahora que el numero recibido, n′, es el resultado de intercambiar dos dıgitos consecutivosde n; digamos que permutaremos las cifras k- y (k + 1)-esimas10. Por tanto, si escribimos

n = 108a8 + . . .+ 10a1 + a0,

tendremos quen′ = 108a8 + . . .+ 10kak−1 + 10k−1ak + . . .+ a1.

Por consiguiente, n′ − n = 10k−19(ak−1 − ak). Como ak−1 − ak es un entero no nulo entre −9 y 9, 23no puede dividir a ningun factor de la diferencia n′ − n y ası podemos detectar el error con l.

Para probar que el codigo nif ni detecta dos errores ni corrige uno, podemos ver que su distanciamınima es dos. En efecto, es mayor que uno porque detecta un error. Sin embargo, las palabras (1, 1)y (24, 1) (correspondientes a los DNI 00000001R y 00000024R) se distinguen en dos caracteres y sonambas validas, ası que la distancia mınima es dos a lo sumo, y por tanto igual a dos. De ese modo yapodemos afirmar que no se pueden corregir errores con este codigo, pero para verlo con un ejemplo, sirecibimos la palabra (1, 2) (o 00000001W), no podemos saber si proviene de (1, 1) o de (2, 2), ambaspalabras del codigo que se encuentran a distancia uno de la recibida.

Ejercicio 2.2 El codigo isbn (International Standard Book Number), utilizado para catalogar libros,utiliza el alfabeto A = {0, 1, . . . , 9, X}, donde la X debe entenderse como 10. El codigo isbn es,entonces

C ={(a1, . . . , a10) : ai ∈ A,

10∑i=1

(11− i)ai = 0 mod 11}⊂ A10.

Estudiar el tamano del codigo y si es lineal o no. Demostrar que el codigo isbn detecta un error, aunqueno lo corrige y que no detecta dos errores, aunque sı lo hace cuando corresponden a la permutacionde dos cifras consecutivas.

Solucion. Este ejercicio se puede realizar de manera muy parecida al anterior usando que a10 :≡∑9i=1 iai mod 11, pero podemos aprovecharnos del hecho de que el codigo sea lineal. Al fin y al cabo,

podemos identificar el alfabeto con F11 y a C como el subespacio vectorial de F1011 dado por la ecuacion

a1 + 2a2 + . . .+ 10a10 = 0.Como una matriz de control de C serıa A = (1 2 3 4 5 6 7 8 9 10), el tamano del codigo serıa

119 (porque su dimension serıa 10− 1 = 9) y su distancia mınima serıa dos, porque cualesquiera doscolumnas de A son proporcionales. Por tanto, C detecta un error y no corrige ninguno.

Lo unico que no podemos estudiar al expresarlo como codigo lineal es la deteccion de la permutacionde dos cifras consecutivas. Sean pues a y a′ dos palabras de C de modo que a = (a1, . . . , a10) ya′ = (a′1, . . . , a

′10) = (a1, . . . , ak, ak−1, . . . , a10), siendo k cierto ındice entre 2 y 10 y ak distinto de ak−1

(si no no hay error). Por tanto,

10∑i=1

(11− i)a′i =10∑i=1

(11− i)ai − (ak−1 − ak) ≡ −(ak−1 − ak) mod 11.

Como ak−1 − ak es un entero no nulo entre −10 y 10, jamas puede ser multiplo de 11, luego a′ nopuede pertenecer a C y detectamos el error.

Ejercicio 2.7 Dado un codigo lineal C ⊂ Fn2 , definimos el codigo truncado de C como

C− = {(x1, . . . , xn−1) : existe xn ∈ F2 con (x1, . . . , xn) ∈ C}.10No hace falta considerar permutaciones en las que se intercambia l con la primera cifra de n; al fin y al cabo en la

realidad son letras y en este modelo ambos caracteres pertenecen a sendos alfabetos distintos.

12

Page 13: Teor a de C odigos y Criptograf a

Estudie si C− es lineal, ası como sus parametros (en funcion de los de C).Solucion. Consideremos el homomorfismo de F2-espacios vectoriales π dado por

π : Fn2 → Fn−1

2

(x1, . . . , xn) 7→ (x1, . . . , xn−1),

es decir, la proyeccion canonica en las primeras n − 1 componentes de Fn2 . Con esta notacion,

C− = π(C), es decir, C− es la imagen de la restriccion de π a C, ası que tambien es un F2-espaciovectorial y es por tanto lineal. Denotaremos por (n, 2k, d) y (n−, 2k

−, d−) a los parametros de C y C−,

respectivamente. En ese caso, es obvio que n− = n− 1.Gracias al primer teorema de isomorfıa, C− ∼= C/ kerπ|C . Ahora bien,

kerπ|C = kerπ ∩ C = {0, (0, . . . , 0, 1)} ∩ C.

Si la palabra (0, . . . , 0, 1) esta en el codigo, entonces dim C− = dim C − 1, siendo ambas dimensionesiguales en cualquier otro caso.

El calculo de d− es un poco mas delicado. Supongamos que d ≥ 2, de manera que (0, . . . , 0, 1)no pueda ser una palabra de C. Como d− = w(C−), dicha distancia mınima sera igual a d solosi todas las palabras de peso mınimo de C tienen la n-esima componente nula. En caso contrario,d− = d− 1. Por otro lado, si d = 1 tenemos dos opciones: si hay una palabra distinta de (0, . . . , 0, 1)de peso uno, d− = d = 1. Y por ultimo, si la unica palabra de peso uno de C es (0, . . . , 0, 1),entonces d− sera mayor que d, y puede ser tan grande como se quiera. Por ejemplo, si C es el codigo⟨(1, . . . , 1, 0), (0, . . . , 0, 1)⟩ ⊂ Fn

2 , d = 1 pero d− = n− 1. (Es decir, si se pretende que la construccionC− sirva de algo, mejor aplicarla a codigos de distancia mınima mayor que uno, aunque si d = 1 elcodigo C ya sea bastante inutil de por sı.)

Ejercicio 2.9 Dados dos codigos lineales C1 ⊂ Fn2 y C2 ⊂ Fm

2 , se define su suma directa como

C1 ⊕ C2 ={(x|y) : x ∈ C1, y ∈ C2

}.

Pruebe que C1 ⊕ C2 es un codigo lineal que verifica

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

Solucion. La denominacion de C1 ⊕ C2 no es baladı; es en efecto la suma directa de los subespaciosvectoriales C1 × {0} y {0} × C2 de Fn+m

2 , por lo que es un codigo lineal tambien. Ademas, dadacualquier palabra (x, y) ∈ C1 ⊕ C2, tanto (x, 0) como (0, y) son otras dos palabras del codigo sumadirecta. En conclusion, w(x, y) ≥ w(x), w(y), que a su vez son mayores o iguales a los respctivos pesosmınimos de C1 y C2, con lo que d(C1 ⊕ C2) ≥ min{d(C1), d(C2)}. Para ver la otra desigualdad, bastavolver a notar que las palabras (x, 0) y (0, y) estan en C1 ⊕ C2 para cualesquiera x ∈ C1 e y ∈ C2, conlo que d(C1 ⊕ C2) ≤ d(C1), d(C2).

Ejercicio 2.23 Supongamos que tenemos una cadena de 106 bits, (por ejemplo, un programa deordenador o un conjunto de datos) y que tenemos una probabilidad de 10−5 de que se cometa un erroren la transmision de cada bit, de forma independiente. Halle la probabilidad de que la transmisionresulte correcta.

Supongamos ahora que introducimos el codigo de Hamming; dado por su matriz generatriz

G =

1 1 0 11 0 1 11 0 0 00 1 1 10 1 0 00 0 1 00 0 0 1

.

13

Page 14: Teor a de C odigos y Criptograf a

Para cada grupo de 4 bits del mensaje original, que denotamos x, se considera la palabra delcodigo z = Gx, que es lo que se transmite. Al recibir una palabra z′, primero se corrigen los erroresy luego se recupera x resolviendo el sistema z = Gx (que esta preparado para ser inmediato).

1. Calcule la nueva longitud del mensaje a transmitir.

2. Calcule la probabilidad de recuperar los datos iniciales exactos tras la correccion de errores y larecuperacion de la palabra transmitida.

Solucion. El ejercicio 2.4 es igual que este cambiando el tamano del mensaje de 106 bits a 105 bits.Consideraremos ambos casos a la vez. Este ejercicio es una muestra espectacular de la utilidad yla potencia de los codigos correctores de errores a la hora de permitir la recepcion correcta la granmayorıa de las veces de cualquier informacion enviada a traves de un canal con ruido (que son todosen la practica).

Como el suceso consistente en que se produzca un error en un bit es independiente de lo que ocurraen el resto, la probabilidad de que el mensaje sea correcto sera la probabilidad de que un bit se recibacorrectamente, p := 1− 10−5, elevado a la longitud del mensaje. En nuestros dos ejemplos,

p1 = p105 ≃ 0, 368 y p2 = p10

6 ≃ 4, 54 · 10−5.

Observese que mientras hay cierta esperanza de recibir el mensaje correcto en el primer caso, cuandoel tamano del mensaje llega a 106 bits11 es imposible esperar que el mensaje se reciba intacto.

Si codificamos x obteniendo z = Gx como se explica en el enunciado, el nuevo mensaje a transmitirtiene longitud 7/4 veces la del original (el codigo de Hamming original tiene dimension cuatro ylongitud siete), esto es, 1, 75 · 105 o 1, 75 · 106 bits.

Ahora sabemos que el codigo de Hamming corrige un error en cada grupo de siete bits recibidos,con lo que si queremos averiguar el mensaje original nos podemos permitir el lujo de que se produzcahasta un error por cada siete bits del mensaje. La probabilidad de que en siete bits enviados seproduzca un error a lo sumo es

q := (1− 10−5)7 + 7 · 10−5(1− 10−5)6 ≃ 2 · 10−9.

Ası, la probabilidad de recuperar los datos originales despues de enviar la palabra codificada es

q1 = q(105)/4 ≃ 0, 9998 y q2 = q(10

6)/4 ≃ 0, 998.

Como se puede apreciar, hay una diferencia enorme entre usar o no el codigo.

Ejercicio 2.29 Para cada uno de los siguientes codigos calcula sus parametros (n,m, d) y para aquellosque sean lineales da una matriz generatriz:

1. C1 = {00, 01, 02, 10, 20, 11, 12, 21, 22} ⊆ F23.

2. C2 = {00, 10, 01, 11} ⊂ F27.

3. C3 = {(x1, ..., xn+1) | (x1, ..., xn) ∈ C ′ y∑n+1

i=1 xi = 0} ⊂ Fn+12 , con C ′ ⊂ Fn

2 un codigo lineal.

Solucion. Notese que en las hojas de ejercicios hay una errata en el primer enunciado: la palabra 22aparece dos veces y una de ellas deberıa ser 12. El apartado 3 es el realmente interesante, siendo unpoquito mas extenso que el ejercicio 2.8.

11Ojo, aproximadamente un megabit, no megabyte; entre 24 y 32 veces menos que el tamano de una foto hecha conun movil de resolucion media...

14

Page 15: Teor a de C odigos y Criptograf a

1. El codigo C1 es todo F23, ası que sus parametros son (2, 9, 1) y es lineal, siendo una matriz generatriz

M1 =

(1 00 1

).

2. El codigo C2 no es lineal, porque la palabra 20 = 10 + 10 no esta en el codigo. Sus parametros son(2, 4, 1) de manera evidente.

3. Vamos a denotar C = C′, de parametros (n, 2k, d), y C+ = C3, siguiendo la notacion del ejercicio2.8. El codigo C+ es lineal, porque ademas de las ecuaciones implıcitas que satisfagan las palabras deC+ en sus primeras n componentes, anadimos la ecuacion x1 + . . . + xn + xn+1 = 0. Dicho de otromodo, si llamamos H al hiperplano definido por esa ultima ecuacion, C+ = (C × F2) ∩ H. Como lainterseccion de espacios vectoriales es un espacio vectorial, C+ es lineal.

Aunque no se pida en el enunciado, su matriz de control sera, por todo lo argumentado antes,

A+ =

0

A ...0

1 · · · 1 1

.

La longitud n+ de C+ es evidentemente n + 1, y como aumentamos en uno la dimension del espaciovectorial ambiente y tambien la cantidad de ecuaciones, la dimension k+ de C+ sera igual a k. Elcalculo de la distancia mınima es algo mas intrincado.

Como las palabras de C son vectores de Fn2 , su peso sera igual a la cantidad de unos que posean.

Supongamos que existe una palabra no nula x ∈ C de peso mınimo y par. Entonces existe unapalabra de la forma (x, 0) en C+, ası que d+ := d(C+) ≤ d. Por otro lado, es claro que cualquierpalabra (x1, . . . , xn+1) ∈ C+ tiene peso mayor (en una unidad) o igual que (x1, . . . , xn) ∈ C, ası qued+ 1 ≥ d+ ≥ d. En conclusion, ambos pesos son iguales. En el caso en el que d sea impar, cualquierpalabra x de peso mınimo de C se corresponde con (x, 1), que tiene peso d + 1. Por la discusionanterior, si existiera una palabra de peso d en C+, deberıa ser de la forma (x, 0) con x de peso mınimod en C. Pero como d es impar, es imposible que (x, 0) este en C+. En conclusion, d+ = d+ 1.

Podrıamos haber hallado la distancia mınima de C+ usando tambien su matriz de control. Sabemosque d es el cardinal del menor conjunto de columnas linealmente dependientes de A. Aquı volvemos ausar que el unico coeficiente no nulo posible de F2 es uno, ası que una combinacion lineal es realmenteuna suma. Si d es par, al sumar las correspondientes columnas de A+ obtendremos el vector nulo(de longitud n− k) seguido de un cero, pues sumamos 1 ∈ F2 una cantidad par de veces. Por tanto,tenemos una combinacion lineal nula no trivial de d columnas de A+, con lo que d+ ≤ d. Por otrolado, como una combinacion lineal de columnas de d+ nos da una combinacion lineal de columnasde A (tomando las primeras n componentes) incluyendo, si acaso, la columna nula, sabemos que12

d+1 ≥ d+ ≥ d. Por tanto, d = d+. Si d es impar, al igual que antes d ≤ d+ ≤ d+1, y cualquier sumanula de d columnas de A podra extenderse a otra de d columnas de A+ que resulte (0, . . . , 0, 1)t. Sisumamos la ultima columna de A+ anulamos esa ultima componente, ası que gracias a la desigualdaddel principio, d+ = d+ 1. (Como curiosidad, una formula unica y cerrada (y totalmente innecesaria)para d+ en funcion de d es d+ = d+ (1− (−1)d)/2.)

Para escribir la matriz generatriz M+ de C+, denotemos la de C como M = (m1| . . . |mk), dondeescribiremos las columnas como mj = (m1j , . . . ,mnj) ∈ Fn

2 , y sean α1, . . . , αk ∈ F2 tales que mj1 +

12¿Suena de algo esa desigualdad?

15

Page 16: Teor a de C odigos y Criptograf a

. . .+mjn = αj . Vamos a probar que

M+ =

M

α1 · · · αk

.

Sabemos que C = ⟨m1, . . . ,mk⟩. Como para cualquier palabra (x1, . . . , xn+1) ∈ C+ se tiene quex1 + . . . + xn+1 = 0, tambien tendremos que xn+1 = x1 + . . . + xn. Por tanto, cualquier palabrade C+ es de la forma (x1, . . . , xn, x1 + . . . + xn), donde x = (x1, . . . , xn) ∈ C. Por tanto, existiranλ1, . . . , λk ∈ F2 tal que x = λ1m1 + . . .+ λkmk, ası que xi = λ1mi1 + . . .+ λkmik, y por tanto,

(x, x1 + . . .+ xn) =

k∑j=1

λjmj ,n∑

i=1

k∑j=1

λjmij

=k∑

j=1

λj(mj ,m1j + . . .+mnj) =k∑

j=1

λj(mj , αj).

En conclusion, los vectores (mj , αj) generan C+. Como es un espacio vectorial de dimension k y hayk vectores, deben formar una base, con lo que la matriz M+ tiene la expresion arriba escrita.

19 de marzo: Distancia mınima, decodificacion por sındromes y erro-res

Mezcla de los ejercicios 2.11, 2.12 y 2.27 El codigo de Hamming de redundancia r, denotadocomo H(r), es el codigo lineal definido por una matriz de control en la que aparecen (en vertical) todoslos vectores no nulos de Fr

2.

i) Pruebe que H(r) tiene longitud 2r − 1, dimension 2r − r − 1 y distancia 3. Por tanto, corrigeexactamente un error.

ii) Demuestre que el calculo del sındrome es suficiente para decodificar en H(r) (supuesto que se hacometido a lo mas un error).

iii) Pruebe que toda palabra esta a distancia menor o igual que uno de un elemento de H(r). Dichode otro modo, las bolas cerradas centradas en los elementos de H(r) y radio 1 recubren todo elespacio de forma disjunta. Esto es, H(r) es un codigo perfecto.

Construya explıcitamente H(2) y H(3).

Los codigos de Hamming binarios pueden generalizarse a cualquier alfabeto. Se denomina codigoq-ario de Hamming Hq(r) al definido por una matriz de control cuyas columnas son el mayor numerode vectores no nulos de Fr

q de forma que cualquier par de columnas sean linealmente independientes(o sea, ninguna columna es multiplo de otra), pero con algun conjunto de tres columnas que sealinealmente dependiente. Las columnas de la matriz de control se corresponden con los puntos de unespacio proyectivo de dimension r − 1 sobre un cuerpo finito Fq.

a) Dar la matriz de control y la matriz generatriz de un codigo ternario de Hamming de orden r = 2.¿Cual es la longitud del codigo?

b) Sea C1 un codigo de Hamming Hq(r) y A1 una matriz de control de C1. Demostrar que si C2 escualquier otro codigo de Hamming Hq(r), podemos obtener una matriz de control A2 de C2 a partirde A1 permutando sus columnas y multplicandolas por escalares no nulos13. (Cuando dos codigosC1 y C2 cumplen esta relacion se dice que son equivalentes.)

13Es decir, multiplicando por la matriz de control por una matriz monomial. O dicho de otro modo, reordenando lasvariables y multiplicandolas por escalares no nulos.

16

Page 17: Teor a de C odigos y Criptograf a

c) Calcular la longitud, dimension y distancia de un codigo Hq(r).

Solucion. Aunque no se dice en el enunciado, los codigos de Hamming solo tienen sentido si r ≥ 2. Lamatriz de control de H(r) serıa de tamano 1× 1, con lo que H(1) = {0} ⊂ F2.

i) Como en Fr2 hay 2r vectores, los no nulos seran 2r − 1. Por tanto la matriz de control A(r) del

codigo H(r) sera de orden r × (2r − 1), ası que la longitud de H(r) debe ser 2r − 1 y su dimension2r−r−1. (En general, una matriz de control de un codigo lineal de parametros (n, qk, d) es de tamano(n−k)×n.) En cuanto al calculo de la distancia, nos fijaremos en las columnas de A(r). Dos columnasson linealmente dependientes si y solo si son proporcionales, que sobre F2 es equivalente a ser iguales,pues el unico escalar por el que podemos multiplicar es 1. Como las columnas de A(r) son distintasdos a dos, ningun par de ellas sera linealmente dependiente. Ahora bien, la terna de columnas formadapor (1, 0, 0, . . . , 0)t, (0, 1, 0, . . . , 0)t y (1, 1, 0, . . . , 0)t es linealmente dependiente, ası que la distanciamınima de todos los H(r) es 3. En consecuencia, los codigos de Hamming H(r) detectan dos erroresy corrigen uno.

ii) Sea z ∈ F2r−12 una palabra del codigo, y supogamos que al enviarla recibimos y ∈ F2r−1

2 . Susındrome sera, como sabemos, s = Ay ∈ Fr

2. Si s = 0, y = z y no hay errores. Supongamos puesque s = 0. Como s es un vector no nulo de Fr

2, sera una columna de A(r), digamos la k-esima, paracierto k. Sea ek el k-esimo vector de la base canonica de F2r−1

2 . Dado que A(r)ek es tambien lak-esima columna de A(r) y ek es de peso uno, siguiendo la estrategia habitual podemos asumir quedicho vector es el error cometido al enviar z.

Resumiendo, la estrategia de correccion con un codigo H(r) se lleva a cabo como sigue: a la palabrarecibida se le suma el vector de la base canonica correspondiente a la columna que coincide con elsındrome obtenido.

iii) Por el razonamiento anterior, para cualquier y ∈ F2r−12 , como Ay es, digamos, la k-esima columna

de A, z = y+ ek es una palabra del codigo que esta a distancia uno de y. Que las bolas sean disjuntases facil de ver: sean z1 y z2 dos palabras de H(r), y supongamos que exista y ∈ B(z1, 1)∩B(z2, 1) = ∅.Pero entonces, 3 ≤ d(z1, z2) ≤ d(z1, y) + d(y, z2) = 2, que es claramente imposible.

Por definicion, H(2) y H(3) vendran dados, respectivamente, por las matrices de control

A(2) =

(1 0 10 1 1

)y A(3) =

1 0 0 1 1 0 10 1 0 1 0 1 10 0 1 0 1 1 1

,

y dos matrices generatrices respectivas de ellos seran

M(2) =

111

y M(3) =

1 1 0 11 0 1 10 1 1 11 0 0 00 1 0 00 0 1 00 0 0 1

.

(Las matrices generatrices se han construido siguiendo una regla similar a la que pide el ejercicio 2.6.)

Vamos a probar primero que las columnas de una matriz de control Aq(r) del codigo Hq(r) formanlos elementos de Pr−1

Fq. Sabemos que para cualquier cuerpo k, podemos construir el espacio proyectivo

Pr−1k como el cociente de Ar(k) − {0} por la accion dada por multiplicar por un escalar de k. Por

un lado, las columnas de Aq(r) son vectores no nulos de Frq (ası que se pueden ver como puntos de

Ar(Fq)−{0}) y no pueden coincidir ni ser una un multiplo escalar de la otra, es decir, son elementos

17

Page 18: Teor a de C odigos y Criptograf a

distintos de Pr−1Fq

. Como en Aq(r) debe haber el mayor numero posible de columnas, podemos ir

tomando el maximo de puntos de Pr−1Fq

que queramos14. Que al menos tres de esas columnas formen

un conjunto linealmente dependiente significa en Pr−1Fq

que dichos tres puntos esten alineados, que es

perfectamente posible, y ocurrira seguro si tomamos todos los puntos de Pr−1Fq

.

a) Siguiendo las pautas marcadas por el enunciado, una matriz de control de H3(2) sera

A3(2) =

(1 0 1 10 1 1 2

)y una matriz generatriz,

M3(2) =

2 22 11 00 1

.

Al igual que antes, la matriz generatriz esta construida de manera parecida a lo que afirma el ejercicio2.6. Para ver que en P1

F3no hay mas puntos nos basta considerar los pares no nulos de F2

3:

(1, 0), (2, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 1), (2, 2).

El segundo es proporcional al primero, el cuarto al tercero, el septimo al quinto y el octavo al sexto.Y el resto son las columnas de A3(2).

Gracias a la forma de la matriz de control, podemos afirmar que H3(2) es un codigo lineal deparametros (4, 32, 3); en particular, su longitud es 4.

b) Sea n la longitud de C1 y C2. Sabemos que las columnas de ambas matrices vienen dadas por todoslos elementos del espacio proyectivo Pr−1

Fq. Salvo reordenacion de las columnas, podemos suponer que

las columnas j-esimas a1j y a2j de A1 y A2, respectivamente, representan el mismo punto de Pr−1Fq

, para

todo j = 1, . . . , n. Por tanto, para todo j existira un escalar λj ∈ F∗q tal que a2j = λa1j , es decir, C1 y

C2 son equivalentes.

c) Dado que en Ar(Fq) − {0} hay qr − 1 palabras y cada vez que escogemos una nos quitamosla posibilidad de elegir sus otros q − 2 multiplos no nulos, la matriz de control de Hq(r) tendra(qr− 1)/(q− 1) columnas, que sera la longitud del codigo. Otro modo de probarlo es notando que haytantas columnas como puntos en Pr−1

Fq, es decir,

|Pr−1Fq| = |Ar−1(Fq)|+ |Ar−2(Fq)|+ . . .+ |A0(Fq)| = qr−1 + . . .+ q + 1 =

qr − 1

q − 1.

Como la redundancia de Hq(r) (la cantidad de filas de su matriz de control) es r, su dimensionsera (qr − 1)/(q − 1)− r. Y por construccion, la distancia mınima es 3, como ocurrıa con los codigosbinarios H(r). (De hecho, los codigos Hq(r) tambien permiten corregir errores simplemente calculandoel sındrome y son perfectos, como ocurrıa con los binarios. Pero eso es otra historia...)

14Por si no te habıas enterado aun, querido lector: todos.

18

Page 19: Teor a de C odigos y Criptograf a

Ejercicio 2.13 Consideramos el codigo lineal C sobre F2, definido por la matriz generatriz

M =

1 00 11 01 11 11 10 10 1

.

Halle los parametros del codigo y una matriz de control. Calcule todos los sındromes con lıder de pesomenor o igual que 2. Si recibimos la palabra 11011011 y sabemos que se han cometido, a lo sumo, doserrores, ¿cual es la palabra enviada y cual el error cometido?

Solucion. Por el tamano de la matriz generatriz sabemos que C tendra parametros (8, 22, d). Parahallar la distancia mınima vamos a calcular una matriz de control de C. Tenemos dos metodos. Elclasico es imponer que la matrizx1 x2 x3 x4 x5 x6 x7 x8

1 0 1 1 1 1 0 00 1 0 1 1 1 1 1

tenga rango dos, pero es mas facil usar el ejercicio 2.6 (ahora sı tal cual esta enunciado), puesto quela matriz generatriz esta escrita en forma sistematica. Una matriz de control de C serıa entonces

A = (B| Id6) =

1 0 1 0 0 0 0 01 1 0 1 0 0 0 01 1 0 0 1 0 0 01 1 0 0 0 1 0 00 1 0 0 0 0 1 00 1 0 0 0 0 0 1

,

donde M = (Id2 |B)t. A la vista de esta matriz, podemos afirmar que d = 5. Probemos primero quecualquier conjunto de cuatro columnas de A es linealmente independiente (recordando, como siempre,que las combinaciones lineales sobre F2 son siempre sumas). Llamemos, como de costumbre, aj a lascolumnas de A. Si las cuatro columnas pertenecen a las seis que forman la identidad Id6 (es decir,a3, . . . , a8) es obvio. Si nuestro grupo de cuatro esta formado por a1 o a2 y tres columnas de Id6,tampoco podemos obtener el vector cero sumandolas, porque el peso de las dos primeras columnas esmayor que tres. Por ultimo, como el peso de a1 + a2 es tres, tampoco nos bastan dos columnas dela derecha para anular a dicha suma. En conclusion, ninguna suma de cuatro columnas de A resultaser el vector nulo y ası d ≥ 5. Por otro lado, como a1 + a3 + a4 + a5 + a6 = 0, tenemos que d ≤ 5,teniendose la igualdad.

Para denotar a los sındromes y sus lıderes, llamaremos ei y uj a los vectores de las respectivasbases canonicas de F6

2 y F82. Los vectores de F8

2 de peso dos a lo sumo son de la forma 0, uj , conj = 1, . . . , 8, y uj + uk, con j, k = 1, . . . , 8 distintos. Los sındromes asociados a cada uno de esosvectores son:

Lıder 0 u1 u2 uj u1 + u2 u1 + uj u2 + uj uj + ukSındrome 0 a1 a2 ej−2 e1 + e5 + e6 a1 + ej−2 a2 + ej−2 ej−2 + ek−2

,

donde a1 = e1 + . . .+ e4 y a2 = e2 + . . .+ e6 son las dos primeras columnas de A, y los ındices j y kque aparecen en la tabla son distintos y varıan siempre en {3, . . . , 8}.

19

Page 20: Teor a de C odigos y Criptograf a

Vamos a corregir la palabra recibida 11011011. Su sındrome es (1 1 1 0 0 0) = a1 + e4, ası queel error cometido, asumiendo que sea de peso dos a lo sumo, debe ser u1 + u6. Por tanto, la palabraenviada fue 01011111.

Ejercicio 2.31 Consideremos el codigo lineal binario C ⊂ F102 dado por la matriz de control

A =

1 0 0 0 1 0 1 1 1 11 1 0 0 0 0 1 0 0 10 1 1 0 1 1 1 0 0 11 1 0 1 0 1 1 0 1 0

.

1. Determinar los parametros (n,m, d) del codigo.

2. Encontrar una matriz generatriz de C.

3. Decodificar los mensajes recibidos 1110110000 y 0100110010.

4. Sea C′ el codigo formado por las palabras de F112 que se obtienen anadiendo a la derecha de cada

c ∈ C el dıgito 1 si w(c) es impar, o el dıgito 0 en caso contrario. Determinar la distancia mınimade C′ y una matriz de control, anadiendo a A una fila y una columna apropiadas.

Solucion. 1. En vista de la matriz A, la longitud del codigo es 10 y su tamano es 26. Su distanciamınima es al menos 3, porque dos vectores sobre F2 nunca pueden ser proporcionales y distintos, yde hecho es justo 3, ya que la suma a3 + a4 + a6 se anula.

2. Una matriz escalonada reducida por filas de A es1 0 0 0 1 0 1 1 1 10 1 0 0 1 0 0 1 1 00 0 1 0 0 1 1 1 1 10 0 0 1 0 1 0 0 1 1

= (Id4 |B),

de donde podemos obtener la matriz generatriz

M =

(B

Id6

)=

1 0 1 1 1 11 0 0 1 1 00 1 1 1 1 10 1 0 0 1 11 0 0 0 0 00 1 0 0 0 00 0 1 0 0 00 0 0 1 0 00 0 0 0 1 00 0 0 0 0 1

.

3. Sean z = (1 1 1 0 1 1 0 0 0 0) y z′ = (0 1 0 0 1 1 0 0 1 0). Sus respectivos sındromes sons = Az = (0 0 0 1) y s′ = Az′ = (0 1 1 1), ası que asumiendo que hemos cometido a lo sumo unerror (porque ⌊(d − 1)/2⌋ = 1) y ya que s = Ae4 y s′ = Ae2, las palabras correctas enviadas serany = z + e4 = (1 1 1 1 1 1 0 0 0 0) e y′ = z′ + e2 = (0 0 0 0 1 1 0 0 1 0), respectivamente.

4. De acuerdo con el enunciado, C′ no es mas que C+, segun la notacion del ejercicio 2.8 (ver el ejercicio

20

Page 21: Teor a de C odigos y Criptograf a

2.29.3 en la sesion anterior). Como d(C) = 3 es impar, d(C′) = 4, y una matriz de control de C′ serıa

A′ =

0

A ...0

1 · · · 1 1

=

1 0 0 0 1 0 1 1 1 1 01 1 0 0 0 0 1 0 0 1 00 1 1 0 1 1 1 0 0 1 01 1 0 1 0 1 1 0 1 0 01 1 1 1 1 1 1 1 1 1 1

.

26 de marzo: Codigos cıclicos

Ejercicio 2.18 Decimos que un vector x ∈ Fnq es una rafaga si todas sus coordenadas no nulas

son consecutivas. Las rafagas son particularmente interesantes cuando representan errores en codigosbinarios. Pruebe que un codigo cıclico C ⊆ Fn

2 de dimension k no contiene ninguna rafaga de pesol ≤ n− k. Pruebe que, por este motivo, detecta cualquier error rafaga de peso menor o igual a n− k.Solucion. Supongamos que exista una rafaga a = (a0 a1 . . . an) ∈ C de peso l > 0. Como C es cıclico,podemos suponer tambien que las componentes no nulas de a son las l primeras. Por tanto, mediantela correspondencia entre C y el ideal generado por cierta clase g(X) en F2[X]/(Xn − 1), podemosconsiderar que a esta asociada a la clase del polinomio a(X) := X l−1 + . . .+X + 1.

Si a fuera una palabra de C, eso serıa equivalente a que a(X) ∈ ⟨g(X)⟩, es decir, que existirıan dospolinomios p(X) y q(X) de F2[X] tales que

a(X) = p(X)g(X) + q(X)(Xn − 1) = p(X)g(X) + q(X)g(X)h(X) = (p(X) + q(X)h(X))g(X),

donde h(X) es el polinomio de control (Xn − 1)/g(X).Por lo tanto, a(X) tambien serıa un multiplo de g(X) en F2[X]. Ahora bien, g(X) es un polinomio

de grado n − k, y el grado de a(X) es l − 1 ≤ n − k − 1. Como a(X) = 0, eso es una contradiccion,ası que a no esta en nuestro codigo C.

En cuanto a la deteccion de errores rafaga, sabemos que en un codigo lineal los errores se detectansi ellos mismos no pertenecen al codigo15, ası que la ultima afirmacion es consecuencia de lo anterior.

Ejercicio 2.26 Responder a las siguientes preguntas:

1. Estudiar si es cıclico el codigo de F52 con matriz de control1 0 1 0 0

0 1 0 1 00 0 1 0 1

2. Estudiar si es cıclico el codigo de F7

3 con matriz de control2 0 1 1 1 0 02 2 1 2 2 1 00 0 2 0 1 1 1

3. Sean C1 y C2 codigos cıclicos de longitud n sobre un cuerpo Fq, con polinomios respectivos g1(X)

y g2(X). Probar que el subespacio vectorial C1 + C2 es un codigo cıclico y dar su polinomiogenerador.

15Porque si al enviar z ∈ C recibimos z′ = z + e y no detectamos error alguno, es porque z′ tambien esta en C, y asıe = z′ − z.

21

Page 22: Teor a de C odigos y Criptograf a

Solucion. Sabemos que dado un polinomio de control h(X) = hkXk + . . . + h1X + h0 de un codigo

cıclico C = ⟨g(X)⟩ ⊆ Fq[X]/(Xn − 1), una matriz de control de C eshk · · · h0 · · · 0 0...

. . .. . .

......

0 · · · hk · · · h0 00 · · · 0 hk · · · h0

.

¿Que ocurre, si como en este ejercicio, tenemos una matriz de control de un formato parecido yqueremos hallar un polinomio de control? Supongamos que recibimos una matriz de control comoarriba (pero no conocemos h(X)), y llamemosla H. Las filas de H nos determinan un polinomio,h(X) = hkX

k+. . .+h0, tal que h(X)a(X) ≡ 0 mod (Xn−1) para toda palabra a(X) del codigo C; enparticular, h(X)g(X) debe ser un multiplo de Xn−1 = h(X)g(X), y por tanto, h(X) sera un multiplode h(X). Ahora bien, como h(X) y h(X) tienen ambos grado k (porque la dimension del codigo es k,que viene dada por el tamano de la matriz de control H), seran asociados, es decir, se diferenciaranen una constante. Por ello, cada vez que tengamos un matriz que parezca que provenga del polinomiode control de un codigo cıclico, podemos afirmar sin temor a equivocarnos que efectivamente vienedada por dicho polinomio de control, siempre y cuando sea un divisor de Xn − 1 en Fq[X]. Vamos aaplicarlo en los dos siguientes apartados.

1. La matriz del enunciado serıa una matriz de control de un codigo cıclico si el polinomio h(X) =X2 + 1 fuera un divisor de X5 + 1 en F2[X], de modo que el polinomio generador g(X) del codigoserıa (X5 +1)/h(X). Sin embargo, X5 +1 = (X +1)(X4 +X3 +X2 +X +1), siendo ambos factoresirreducibles (dos parrafos mas abajo hay consejos sobre como comprobarlo), y como X2+1 = (X+1)2

y (X4 +X3 +X2 +X + 1) no tiene a 1 como raız en F2 (a 0 tampoco), X2 + 1 no es un divisor deX5+1 (de hecho X5+1 = (X3+X)(X2+1)+X+1), ası que el codigo dado por la matriz de controldel enunciado no puede ser cıclico.

Este apartado se podrıa haber resuelto incluso directamente, porque la matriz de control es pequenay el cuerpo base mas aun: resolviendo el sistema de ecuaciones asociado a la matriz dada, obtenemosque el espacio vectorial de sus soluciones (es decir, el codigo) es {0, (1, . . . , 1), (1, 0, 1, 0, 1), (0, 1, 0, 1, 0)}.Salta a la vista que no es un codigo cıclico.

Es mas, a la vista de los divisores de X5+1 en F2[X], no hay codigos cıclicos sobre F2 de longitud 5mas alla de los triviales, y los de dimension 1 y 4, que son el de repeticion y el de control de paridad16.

Ampliacion: Como hemos dicho, X5 + 1 no tiene mas factores irreducibles que los que hemosescrito. Se puede comprobar de muchas maneras: probando que el factor de grado cuatro no tienefactores de grado dos, directamente o como en el ejercicio 3.1 del examen del tema 1, usando Sage (ocualquier otro recurso informatico) o usando el ejercicio 17. Eso sı, en este caso solo podemos haceralgo si usamos el enunciado correcto; la cantidad de factores irreducibles del polinomio Xn − 1 enFq[X] es ∑

d|n

φ(d)

ordd(q),

donde orda(b) es el orden de b en el grupo multiplicativo (Z/Za)∗; en el enunciado original solo seincluye el ultimo sumando, φ(n)/ ordn(q). En este caso, la formula anterior nos dice que la cantidadde factores irreducibles de X5 + 1 en F2[X] es 1/1 + 4/4 = 2, que deben ser los que hemos escritoarriba.

2. La matriz dada en el enunciado no puede provenir claramente de ningun polinomio de control deun codigo cıclico. Sin embargo, el subespacio vectorial de F7

3 definido por dicha matriz es el mismo

16¿Por que?

22

Page 23: Teor a de C odigos y Criptograf a

que el dado por

A =

2 0 1 1 1 0 00 2 0 1 1 1 00 0 2 0 1 1 1

,

que se puede ver teniendo en cuenta que para pasar de A a la matriz del enunciado hemos realizadouna operacion elemental por filas, con lo que el subespacio definido por ambas matrices es el mismo.

Al igual que antes, la matriz A es una matriz de control de un codigo cıclico si y solo si elpolinomio h(X) = X4 + 2X2 + 2X + 2 es un divisor de X7 + 2 en F3[X]. Sin embargo, tenemos queX7+2 = (X3+X+1)h(X)+2X3+2X2+2X, por lo que al igual que antes, el codigo dado por la matrizdel enunciado (o por A) no es cıclico. (Por cierto, X7+2 = (X+2)(X6+X5+X4+X3+X2+X+1)en F3[X] y ambos factores son irreducibles.)

3. En este apartado trabajaremos directamente con las representaciones de C1 y C2 de la formaI1 := ⟨g1(X)⟩ y I2 := ⟨g2(X)⟩, vistos como ideales en Fq[X]/(Xn − 1). El codigo lineal C1 + C2 esta

formado por las sumas a1(X) + a2(X), donde aj(X) ∈ Ij , con j = 1, 2. Pero entonces, existiranpolinomios p1, p2, q1 y q2 de Fq[X] tales que

a1(X) = p1(X)g1(X) + q1(X)(Xn − 1) y a2(X) = p2(X)g2(X) + q2(X)(Xn − 1),

ası quea1(X) + a2(X) = (p1(X)g1(X) + p2(X)g2(X)) + (q1(X) + q2(X))(Xn − 1).

Si llamamos g(X) = mcd(g1(X), g2(X)) ∈ Fq[X], podremos expresar la suma p1(X)g1(X)+p2(X)g2(X)

como p(X)g(X) para cierto p(X) ∈ Fq[X], ası que a1(X) + a2(X) ∈ ⟨g(X)⟩ ⊆ Fq[X]/(Xn − 1).

Por otro lado, cualquier clase a(X) del ideal ⟨g(X)⟩ se puede expresar como una suma de la formap1(X)g1(X) + p2(X)g2(X) por la identidad de Bezout en Fq[X], ası que a(X) ∈ C1 + C2.

En conclusion, la suma de codigos cıclicos es otro codigo cıclico y viene dado por el polinomiogenerador mcd(g1(X), g2(X)).

Codificacion y descodificacion con un codigo cıclico en forma polinomial

En este apartado vamos a ver como usar la versatilidad de los codigos cıclicos para codificar y descodi-ficar mensajes usando la notacion polinomial. Para fijar la notacion, vamos a considerar un codigocıclico C de tipo (n, qk, d), que consideraremos como un ideal ⟨g(X)⟩ del anillo Fq[X]/(Xn−1), dondeg(X), el polinomio generador, es un divisor de Xn − 1 de grado n− k.

Supongamos que tenemos un mensaje, que lo trataremos como un polinomio m(X) ∈ Fq[X] degrado k−1 a lo sumo (recuerdese que los polinomios de Fq[X] de grado menor o igual que N−1 formanun espacio vectorial isomorfo a FN

q ). Para codificarlo lo unico que hay que hacer es multiplicarlo por

g(X), obteniendo un polinomio a(X) = m(X)g(X) que podremos ver como una palabra a(X) denuestro codigo C.

Esa es la parte facil. Supongamos ahora que recibimos un mensaje, visto como un polinomiop(X) ∈ Fq[X] de grado n−1 o menos. La pregunta que nos debemos hacer es como hallar su sındrome.Vamos a ver que esto se puede definir de dos maneras equivalentes; la que usemos dependera de comoqueramos representarlos.

Sabemos que p(X) sera una palabra de C si y solo si h(X)p(X) ≡ 0 mod Xn − 1. Si dividimosnuestro mensaje p(X) entre g(X), podremos escribir p(X) = q(X)g(X) + r(X), donde r(X) es unpolinomio de grado n− k − 1 como mucho. Por tanto,

h(X)p(X) ≡ h(X)r(X) mod Xn − 1,

23

Page 24: Teor a de C odigos y Criptograf a

porque h(X)g(X) = Xn − 1. Por otro lado, si escribimos p(X) = a(X) + e(X), donde a(X) es unapalabra de C y e(X) es el error cometido, tendremos que e(X) ≡ r(X) mod g(X) (pero no tienen porque ser iguales, ojo) y consecuentemente,

h(X)e(X) ≡ h(X)r(X) mod h(X)g(X) = Xn − 1.

Podemos definir el sındrome de la palabra recibida p(X) como h(X)r(X), que es un polinomio degrado n − 1 a lo sumo, o como r(X), que tiene grado n − k − 1 o menos. Notese que los polinomiosde grado menor o igual que n − k − 1 estan en correspondencia biyectiva con los multiplos de h(X)de grado menor o igual que n − 1, y que ambos conjuntos tienen una estructura de espacio vectorialsobre Fq de dimension n− k, como debe ser, ası que todo funciona bien.

Una vez que hallamos el sındrome de nuestra palabra (definido de cualquiera de las manerasanteriores), nos basta con asociarlo a un error. Si el sındrome no aparece en nuestra tabla (y sabemosque no hemos cometido mas errores de los que el codigo puede corregir), tenemos que permutarcıclicamente nuestra palabra y empezar de nuevo. Esto, en terminos de polinomios, no es mas quemultiplicar por X, es decir, considerar la palabra Xp(X) mod Xn − 1 y volver a hallar su restoal dividir por g(X) o multiplicarla por h(X) modulo Xn − 1. Realizamos este proceso hasta que elsındrome este en nuestra tabla, correspondiendo a un error e′(X). Para deshacer los l ciclos efectuados,con 0 ≤ l ≤ n − 1, multiplicamos por Xn−l. En efecto, ahora hemos corregido la palabra X lp(X),expresandola como a′(X) + e′(X). Como

Xn−lX lp(X) = Xnp(X) ≡ p(X) mod Xn − 1,

el mensaje correcto original a(X) no sera mas que Xn−la′(X) mod Xn − 1, y el error, e(X) ≡Xn−le′(X) mod Xn−1. Estas dos ultimas igualdades son consecuencia de que existe un lıder de pesomenor o igual que ⌊(d− 1)/2⌋ asociado al sındrome calculado, y por tanto el error cometido e(X) estadefinido unıvocamente en funcion de p(X) y su sındrome.

2 de abril: Codigos perfectos, cotas, procedimiento GSV

Ejercicio 2.16 Sabemos que, en un codigo perfecto de tipo (n,m, d),

m =2n

V (⌊(d− 1)/2⌋).

Sin embargo, eso no quiere decir que si 2n/V (⌊(d − 1)/2⌋) es un entero m, exista un codigo perfectotipo (n,m, d).

1. Pruebe que290

V2(90, 2)= 278.

2. Sea C un codigo binario perfecto tipo(90, 278, 5

)sobre F2 y supongamos17 que 0 ∈ C. Consid-

eremos el conjuntoX =

{x ∈ F90

2 : x1 = x2 = 1 y d(x, 0) = 3}.

Halle el numero de elementos de X y pruebe que, para cada x ∈ X existe una unica z ∈ C talque d(x, z) = 2.

3. Para x y z como antes, pruebe que d(z, 0) = 5 y que zi = 1 si xi = 1.

17¿Por que suponer esto no hace que perdamos generalidad?

24

Page 25: Teor a de C odigos y Criptograf a

4. Dados ahora dos x, x′ ∈ X, construya los z, z′ ∈ C correspondientes y demuestre que d(z, z′) = 6.Deduzca que cada z ∈ C esta asociada a exactamente tres elementos de X y llegue a unacontradiccion que demuestra que no existe un codigo perfecto (90, 278, 5).

Solucion. Recordamos en primer lugar que denotamos por Vq(n, r) al cardinal de una bola cerrada deradio r y centro arbitrario en Fn

q , es decir,

Vq(n, r) =

r∑j=0

(n

j

)(q − 1)j .

1. Aplicando la formula de arriba, V2(90, 2) = 1 +(901

)+

(902

)= 4096 = 212.

2. Como las palabras de X tienen dos componentes fijas no nulas y otra no nula en el lugar j-esimo,con j = 3, . . . , 90, sabemos que X tendra 88 elementos. Por otro lado, como C es perfecto de distaciamınima d = 5, toda palabra de F90

2 (y en particular las de X) se encontrara a distancia ⌊(5−1)/2⌋ ≤ 2de un unica palabra del codigo C. Ahora bien, por un lado, cualquier palabra de X tiene peso 3, porlo que no puede pertenecer al codigo C porque su distancia es 5. Por otro lado, el que una palabrax de X este a distancia 1 de alguna otra de C (llamemosla y) significa que solo se diferencian en unacomponente, con lo que w(y) ≤ 4, que no es posible. En resumen, x esta a distancia 2 de una unicapalabra de C.3. Sea por un lado z ∈ C de modo que se encuentra a distancia 2 de una palabra x de X. Como 0esta en el codigo, d(z, 0) ≥ 5, pero por otro lado, aplicando la desigualdad triangular,

d(z, 0) ≤ d(z, x) + d(x, 0) = 2 + 3 = 5.

Por tanto, d(z, 0) = 5, es decir, z tiene 5 componentes no nulas. Veamos a que distancia puede estarde una palabra de X.

Si z1 = z2 = 0, hay seis u ocho componentes de z y x que no coinciden (si tomamos x de modoque su tercera componente no nula y alguna de las de z coincidan o si ninguna componente de z y xcoinciden, respectivamente). Dicho de otro modo, d(z, x) puede ser 6 o 8. Como sabemos que es 2, nopuede ser que z1 y z2 se anulen.

Supongamos pues que solo una componente de entre z1 y z2 se anula. Razonando de modo analogo,tenemos que la distancia d(x, z) valdra 4 o 6, que tampoco nos vale.

Por ultimo, supongamos que z1 = z2 = 1. Ası z y x se diferencian solo en 2 o 4 componentes, conlo que no queda mas remedio que d(x, z) = 2, es decir, z tiene un uno en todas las componentes endonde x lo tiene, y un par mas de ellos en otros lugares.

4. Sabemos por un lado que d(z, z′) ≥ 5 (estamos suponiendo que no son la misma palabra). Porotro lado, como z1 = z2 = z′1 = z′2 = 1, ambas palabras se distinguiran en dos componentes, cuatroo seis (por un razonamiento similar al del anterior apartado). Por tanto, la unica posibilidad que nosqueda es que d(z, z′) = 6, y ası, ademas de las dos primeras, ninguna de las otras tres componentesen las que z no se anula coincide con aquellas en las que lo hace z′. Digamos que z es el vectore1 + e2 + ei + ej + ek, siendo i, j, k ındices en {3, . . . , 90} distintos dos a dos. Ası, z esta a distancia 2de las palabras xi = e1 + e2 + ei, xj = e1 + e2 + ej y xk = e1 + e2 + ek, y ninguna otra palabra z de Cse encuentra a esa distancia de xi, xj o xk.

Concluyendo, las palabras de X pueden agruparse como una union disjunta de trıos, cada unoformado por las palabras asociadas a alguna palabra del codigo C. Sin embargo, |X| = 88, que no esmultiplo de tres. Por consiguiente, C no es perfecto (que es la unica asuncion que hemos hecho desdeentonces).

25

Page 26: Teor a de C odigos y Criptograf a

Ejercicio 2.24 Sea C el codigo lineal sobre F3 con matriz generatriz:1 00 11 11 2

.

1. De la lista de todas las palabras de C.

2. Calcule la distancia mınima del codigo.

3. ¿Cuantas palabras hay en cada bola de radio 1?

4. Pruebe que las distintas bolas de radio 1 son disjuntas y cubren todo el espacio. Los codigoscon esta caracterıstica se llaman codigos perfectos.

Solucion. 1. Llamemos x e y a las columnas de la matriz generatriz. Entonces,

C = {0, x, 2x, y, x+ y, 2x+ y, 2y, x+ 2y, 2x+ 2y}.

2. La matriz generatriz esta escrita en forma sistematica (ver ejercicio 2.6), con lo que una matriz decontrol de C sera

A =

(2 2 1 02 1 0 1

).

Observando sus columnas, vemos que cualquier conjunto de tres de ellas es linealmente dependiente,por lo que d(C) ≤ 3. Por otro lado, no hay dos columnas proporcionales, ası que d(C) > 2. Enconclusion, d(C) = 3.

3. En cada bola cerrada de radio uno se encuentran, ademas de su centro, 8 palabras mas, correspon-dientes a las alteraciones del centro en una componente (de las cuatro que hay) que resultan al sumaralguno de los dos elementos de F∗

3. Dicho de otro modo, V3(4, 1) = 1 +(41

)21 = 9.

4. Las bolas cerradas de radio 1 son disjuntas porque la distancia mınima de C es 3 y 1 = ⌊(3− 1)/2⌋.Como son disjuntas, ∣∣∣∣∣∣

⊔x∈C

B(x; 1)

∣∣∣∣∣∣ =∑x∈C

V3(4, 1) ≤∣∣F4

3

∣∣ = 34 = 81.

Como el miembro de la izquierda es 9 · 9 = 81 tambien, el codigo es perfecto.

Ejercicio 2.30 Un codigo C ⊆ An de tipo (n,m, d) verificando⋃x∈C

B

(x,

⌊d− 1

2

⌋)= An y B

(x,

⌊d− 1

2

⌋)∩B

(y,

⌊d− 1

2

⌋)= ∅, ∀x, y,∈ C, con x = y.

se denomina un codigo perfecto.

1. Intenta crear un codigo perfecto no trivial en F52. Si no es posible, explica por que.

2. Sea C ⊆ An un codigo. Definimos la relacion Rl en An como

aRlb ⇐⇒ ∃x ∈ C tal que a, b ∈ B (x, l) .

Estudia si Rl es una relacion de equivalencia en An, para 0 ≤ l ≤ ⌊(d− 1)/2⌋. ¿Cambia algo siel codigo es perfecto?

26

Page 27: Teor a de C odigos y Criptograf a

Solucion. 1. El codigo C podra tener como distancia mınima cualquier entero entre 1 y 5. Sea d dichadistancia. Sabemos que si C es perfecto, las bolas de radio r = ⌊(d − 1)/2⌋ y centro las palabras delcodigo, que son disjuntas, rellenan todo F5

2, es decir, que si el tamano de C es m, 25 = mV2(5, r), odicho de otro modo, V2(5, r) = 25/m. En particular, m y V2(5, r) deben ser potencias de dos. Comod varıa entre 1 y 5, r lo hara entre 0 y 2.

Para r = 0, V2(5, 0) = 1, con lo que si C fuera perfecto deberıa ser F52, y ese caso esta excluido por

hipotesis. Si r = 1, V2(5, 1) = 1 + 5 = 6, que no es una potencia de dos, ası que tampoco es posible.Nos queda unicamente que r = 2, es decir, que d = 5. En ese caso, V2(5, 2) = 1 + 5 + 10 = 16 = 24,con lo que si C fuera perfecto deberıa tener tamano 2, es decir, constarıa de la palabra nula 0 ∈ F5

2

y la unica palabra de F52 de peso cinco, (1, . . . , 1), es decir, el codigo de repeticion de longitud 5 (en

una bola se encontrarıan todas las palabras de peso menor o igual que dos y en la otra las de pesoal menos tres). Queda al arbitrio de nuestros queridos lectores decidir si dicho codigo es trivial o no.Desde luego, util lo es en pocas ocasiones.

2. Que la relacion Rl es simetrica es evidente. Por otro lado, tambien es transitiva, ya que si existentres palabras a, b y c en An tales que aRlb y bRlc, tenemos que existen dos palabras x e y de C tales

que, en particular, b ∈ B(x; l)∩B(y; l). Como las bolas son disjuntas porque son de radio ⌊(d−1)/2⌋ alo sumo, necesariamente x = y, ası que aRlc tambien. Por ultimo, es la propiedad reflexiva la que nosva a dar problemas en la mayorıa de los casos. En efecto, que aRla para todo a ∈ An es equivalentea decir que para toda palabra a ∈ An existe una del codigo (llamemosla x) tal que a ∈ B(x; l), peroeso solo lo tenemos garantizado si C es perfecto.

En conclusion, Rl es una relacion de equivalencia si y solo si C es perfecto y l = ⌊(d− 1)/2⌋.

Ejercicio 2.19 Aplique el procedimiento Gilbert-Shannon-Varshamov para crear un codigo sobre F3

de tipo (6, 34, 2).

Solucion. En primer lugar debemos comprobar que un codigo lineal de ese tipo puede existir, es decir,vamos a asegurarnos de que se cumplen las condiciones de la cota de Gilbert-Shannon-Varshamov. Enefecto, como 36−4+1 = 27 > |V3(6, 1)| = 1+6 · 2 = 13, tenemos la seguridad de que podemos empezar.

En primer lugar debemos tomar una palabra de peso 2, que puede ser x1 := (1, 1, 0, 0, 0, 0),siendo C1 := ⟨x1⟩. Hagamos los dos siguientes pasos a la vez, y tomemos x2 = (0, 0, 1, 1, 0, 0) yx3 = (0, 0, 0, 0, 1, 1). Con esta eleccion nos garantizamos que cualquier palabra de C3 := ⟨x1, x2, x3⟩tenga peso 2 al menos. En efecto, cualquier palabra de C3 es de la forma x = (α, α, β, β, γ, γ), conα, β, γ ∈ F3. Es evidente que si w(x) < 2, debemos tener que α = β = γ = 0.

El ultimo paso es mas difıcil, porque la cuarta palabra tendra alguna componente ya usada nonula; si lo hacemos con cuidado no habra problema. Tomemos x4 := (1, 0, 1, 0, 0), de peso 2. Paraver que d(x4, y) ≥ 2 para toda palabra y ∈ C3 tomamos una palabra y = αx1 + βx2 + γx3 como en elanterior parrafo y tenemos que d(x4, y) es el peso de la palabra

x4 − y = (1 + 2α, 2α, 1 + 2β, 2β, 2γ, 2γ).

Si pretendemos imponer que w(x4 − y) < 2, necesariamente caeremos en una contradiccion del tipo1 + 2α = 2α = 0, por lo que x4 esta lo suficientemente alejada de C3 y nuestro codigo buscado es

C = ⟨x1, x2, x3, x4⟩.

Ejercicio 2.20 Pruebe que el procedimiento inductivo de Gilbert-Shannon-Varshamov crea, efectiva-mente, un codigo con las condiciones enunciadas.

Solucion. Supongamos que el teorema de Gilbert-Shannon-Varshamov nos garantiza la existencia deun codigo sobre Fq de parametros concretos (n, qk, d). Tenemos que verificar que el codigo C obtenidomediante el procedimiento homonimo tiene dichos parametros. La longitud es evidente, puesto que

27

Page 28: Teor a de C odigos y Criptograf a

todo sucede en un espacio vectorial Fnq fijado. Por otro lado, como en el j-esimo paso inductivo

anadimos una palabra xj ∈ Fnq tal que d(xj , y) ≥ d para toda y ∈ Cj−1, para cualquier palabra de

Cj = Cj−1 + ⟨xj⟩ de la forma x = αxj + z, con α ∈ Fq y z ∈ Cj−1 tendremos que

w(x) = w(αxj + z) = w(xj + α−1z) = d(xj ,−α−1z) ≥ d,

como querıamos. Por ultimo, como xj se encuentra a distancia al menos d (realmente es r + 1 paraun r < d ≤ d(Cj−1) concreto, pero podemos obviar esa sutileza y asumir que la segunda desigualdades una igualdad) de las palabras de Cj−1, no dependera linealmente de x1, . . . , xj−1, y ası dim Cj = j,consiguiendo en el ultimo paso que dim Ck = k.

Ejercicio 2.25 Consideremos el codigo cıclico C ⊂ F92 dado por

C = ⟨X6 +X3 + 1⟩ ⊂ F2[X]/⟨X9 + 1⟩.

1. Hallar (sin SAGE) una matriz de control, una matriz generatriz y la distancia mınima del codigo.

2. Decodificar la palabra recibida 011111011.

3. Compara los parametros del codigo con las cotas de Hamming, Singleton, Plotkin y Gilbert-Shannon-Varshamov. ¿Cuales son igualdades?

Solucion. 1. Al dividirX9+1 porX6+X3+1 en F2[X], obtenemos queX9+1 = (X3+1)(X6+X3+1),ası que el polinomio de control de C es h(X) = X3+1 (y su polinomio generador, g(X) = X6+X3+1).Por tanto, una matriz de control y una matriz generatriz de C vendrıan dadas, respectivamente, por

A =

1 0 0 1 0 0 0 0 00 1 0 0 1 0 0 0 00 0 1 0 0 1 0 0 00 0 0 1 0 0 1 0 00 0 0 0 1 0 0 1 00 0 0 0 0 1 0 0 1

y M =

1 0 00 1 00 0 11 0 00 1 00 0 11 0 00 1 00 0 1

.

Observando la matriz A, vemos que no hay dos columnas proporcionales, con lo que cualquier subcon-junto de dos de sus columnas serıa linealmente independiente y ası d(C) > 2. Por otro lado, llamandoa1, . . . , a9 a sus columnas, tenemos que a1 + a4 + a7 = 0, ası que d(C) ≤ 3, dandose la igualdad.

2. Sea z = (0 1 1 1 1 1 0 1 1) ∈ F92. Su sındrome es (1 0 0 1 0 0) ∈ F6

2, que es justo la cuarta columnade A, ası que asumiendo que se ha cometido un error a lo sumo en la transmision (al fin y al caboC no corrige mas), dicho error debe ser e4, el cuarto vector de la base canonica de F9

2, con lo quela palabra correcta serıa x = z + e4 = (0 1 1 0 1 1 0 1 1). (Esta palabra corresponde al polinomioX +X2 +X4 +X5 +X7 +X8 = (X2 +X)g(X).)

3. Ninguna de las cotas es una igualdad, y algunas se quedan bastante lejos. Veamoslo:Hamming: qkVq(n, ⌊(d− 1)/2⌋) = 23 · (1 + 9) = 80 < qn = 29 = 512.Singleton: d+ k = 3 + 3 < n+ 1 = 10.Plotkin: d = 3 < nqk−1(q − 1)/(qk − 1) = 9 · 4/7.Gilbert-Shannon-Varshamov: Vq(n, d− 1) = (1 + 9 + 36) < qn−k+1 = 27 = 128.Ninguna de las cotas aporta informacion en sı, puesto que C es un codigo lineal y por tanto debe

verificar todas. Sin embargo, la ultima se puede afinar: como V2(9, 2) < 26 podrıamos construir uncodigo lineal de parametros (8, 23, 3) o (9, 24, 3), algo mas eficiente que el del ejercicio.

28

Page 29: Teor a de C odigos y Criptograf a

Ejercicio 2.28 Aplicar el procedimiento Gilbert-Shannon-Varshamov para crear un codigo de tipo(5, 93, 3) sobre F9 = F3[x]/⟨x2 + 1⟩.Solucion. Vamos a denotar F9 como F3[a], con a

2 = −1. Este ejercicio se resuelve de manera parecidaal 2.19 que esta algo mas arriba. En primer lugar, igual que entonces, verificamos que un codigo deparametros tales es factible, pues V9(5, 2) = 1 + 5 · 8 + 1064 = 681 < 95−3+1 = 729.

Una vez hecha la comprobacion, comencemos tomando x1 := (1, 1, 1, 0, 0), de peso 3. No tenemostres coordenadas libres, pero podemos maximizar la distancia a los multiplos de C1 definiendo x2 :=(0, 0, 1, 1, 1). En efecto, cualquier palabra de la forma x2 + λx1 = (λ, λ, λ+ 1, 1, 1) ∈ F5

9, con λ ∈ F9,tiene peso al menos 3; vamos con el ultimo paso.

Las palabras de C2 := ⟨x1, x2⟩ son de la forma (λ, λ, λ + µ, µ, µ) con λ, µ ∈ F9. Para definir x3y evitar que este a distancia menor que 3 de las palabras de C2 debemos salirnos de F3 y tomarx3 := (1, 0, a, 1, 0). Ası, para cualquier palabra y = λx1 + µx2 ∈ C2 tenemos que

x3 + y = (λ+ 1, λ, λ+ µ+ a, µ+ 1, µ).

Si la primera componente se anula, no ası la segunda y viceversa, y en cualquiera de esos dos casos almenos dos de las ultimas tres componentes tampoco se anularan, independientemente del valor de µ.Por tanto, w(x3 + y) ≥ 3 y hemos terminado, tomando C = ⟨x1, x2, x3⟩.

Notese que era realmente necesario salirse de F3 para definir x3. Si hubiera tenido todos suscoeficientes en F3, como x1 y x2, el espacio vectorial F3⟨x1, x2, x3⟩ serıa un codigo lineal de longitud5 y dimension 3, pero su distancia no podrıa ser 3. Por un lado, V3(5, 2) = 51 > 35−3+1, ası que elteorema de Gilbert-Shannon-Varshamov no es concluyente. Es mas, dichos parametros verifican tantola cota de Singleton como la de Plotkin. Sin embargo, no la de Hamming, pues V3(5, 1) = 11 > 32.

23 de abril: Cifrados clasicos

Ejercicio 3.1. Al enfrentarnos a un texto cifrado por sustitucion tipo Cesar, un metodo alternativoa la fuerza bruta consiste en hacer un diagrama de frecuencias con los sımbolos del texto. Explicacomo el analisis de este diagrama puede conducirnos a averiguar la clave de cifrado.

Solucion. El ataque por analisis de frecuencias se basa en que en cualquier idioma las letras noaparecen de forma aleatoria, sino que algunas se usan mas frecuentemente que otras. Y por otrolado, hay letras que aparecen raramente en un texto. Por lo tanto, si estudiamos un gran numero dedocumentos podemos crear una tabla con la frecuencia (siempre aproximada) de veces que aparececada letra en un texto. Por ejemplo, los porcentajes en espanol es aproximadamente la siguiente18:

A B C D E F G H I J K L M N

12,50 1,27 4,43 5,14 13,24 0,79 1,17 0,81 6,91 0,45 0,08 5,84 2,61 7,09

~N O P Q R S T U V W X Y Z

0,22 8,98 2,75 0,83 6,62 7,44 4,42 4,00 0,98 0,03 0,19 0,79 0,42

Vemos entonces la letra que suele aparecer mas es la E mientras la que menos es la letra W. Porsupuesto, las frecuencias de aparicion varıan en cada idioma. Por ejemplo, en ingles tenemos elsiguiente diagrama19:

18Este diagrama y el del ingles estan obtenidos de la pagina Practical Cryptography, donde se han tomado la molestiade calcularlos a partir de los datos de la increıble coleccion de corpus de Leipzig

19Vamos a hacer como si alguien se hubiera preocupado de ello y advertiremos que las frecuencias suman 100,01 porel redondeo aplicado a cada una.

29

Page 30: Teor a de C odigos y Criptograf a

A B C D E F G H I J K L M

8,55 1,60 3,16 3,87 12,10 2,18 2,09 4,96 7,33 0,22 0,81 4,21 2,53

N O P Q R S T U V W X Y Z

7,17 7,47 2,07 0,10 6,33 6,73 8,94 2,68 1,06 1,83 0,19 1,72 0,11

Dependiendo de la muestra de texto analizada apareceran diferencias en los porcentajes, aunquepodemos concluir que los valores se mantienen en el rango indicado. Si ademas incluimos en el computosignos tipograficos los porcentajes tambien pueden cambiar.

Al enfrentarnos a un texto cifrado de tipo Cesar, el analisis de frecuencias es un buen metodopara averiguar la clave de cifrado, pues la letra que aparezca mas veces en el texto sera, con granprobabilidad, la letra cifrada de la que sea mas frecuente en el idioma en el que este escrito el texto.Por ejemplo, supongamos que tenemos un texto cifrado en espanol en el que la letra mas frecuente seala H. Entonces, lo mas probable es que la H sea la letra cifrada de E, por lo que la clave serıa 3.

Ejercicio 3.2. Descifra el siguiente mensaje en ingles, cifrado por sustitucion

PXPXKXENVDRUXVTNLXHYMXGMAXYKXJNXGVRFXMAHWGXXWLEHGZXKVBIAXKMXQM

Solucion. Vamos a usar parte del razonamiento del ejercicio anterior y calcular un analisis de fre-cuencias. (No seran relativas como antes, sino absolutas, es decir, contaremos el numero de veces queaparece cada letra en el texto. Tampoco pasa nada.)

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

3 1 0 1 2 1 4 3 1 1 4 2 5 3 0 2 1 2 0 1 1 4 2 15 2 1

Podemos ver que hay 15 X en el texto, por lo que podemos suponer que la letra cifrada de E esX, ya que la E es la mas frecuente en ingles. Esto no tiene que ser cierto en general ya que puedenexistir textos en los que la E no sea la que aparezca con mayor frecuencia. De hecho, la distribucionde frecuencias de arriba esta bastante sesgada y no nos aporta mucha mas informacion.

De todos modos, vamos a ver si aun podemos exprimir un poco mas la tabla. Despues de la X, lasiguiente letra mas repetida es la M, que se podrıa corresponder con alguna de las ocho (por andar sobreseguro) mas frecuentes del ingles: A, I, O, T, H, N, R, S. Resulta que en el texto aparece el fragmentoMXGM. Analizando las ocho posibilidades antes mencionadas con nuestro conocimiento del ingles (quees el que es), desechamos las vocales y nos quedamos con las otras cinco opciones.

Por otro lado, al principio del texto aparece la secuencia PXPXKX, que podrıamos descifrar (parcial-mente) como *E*E?E, siendo * y ? dos letras desconocidas. Nuevamente conjeturamos que la letra P

podrıa corresponder a H, M o W, y la K a R.Ahora nos fijamos que la distancias entre la K, la M y la P son las mismas que entre la R, la T y la

E, por lo que nos aventuramos a ver si el cifrado es un cifrado tipo Cesar, de clave 19. La tabla decorrespondencias entre caracteres quedarıa como sigue:

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

T U V W X Y Z A B C D E F G H I J K L M N O P Q R S

Usando esta tabla para intentar descifrar el mensaje, obtenemos (anadiendo los espacios entre laspalabras)

WE WERE LUCKY BECAUSE OFTEN THE FREQUENCY METHOD NEEDS LONGER CIPHERTEXT.

30

Page 31: Teor a de C odigos y Criptograf a

Como tiene sentido (y tanto que lo tiene), estabamos en lo cierto, y ademas el cifrado era de tipoCesar, no solo de sustitucion.

Ejercicio 3.3. Descifra el texto de El escarabajo de oro. Esta escrito en ingles.

Solucion. Primero recordemos el texto de El escarabajo de oro:

53���305))6*;4826)4�.)4�);806*;48�8¶60))85;1�(;:�*8�83(88)5*�;46(;88*96*?;8)*�(;485);5*�2:*�(;4956*2(5*-4)8¶8*;4069285);)6�8)4��;1(�9;48081;8:8�1;48�85;4)485�528806*81(�9;48;(88;4(�?34;48)4�;161;:188;�?;

Este texto tiene el inconveniente de que no esta escrito en un alfabeto habitual, sino que estacomprendido por unos sımbolos de los que no sabemos nada a priori. Sin embargo, no podemosdejarnos vencer, este texto esta cifrado por sistema de sustitucion, por lo que el mejor ataque se basaen un analisis de frecuencias. Su diagrama de frecuencias (absolutas) es:

8 ; 4 � ) * 5 6 ( � 1 0 2 9 3 : ? ¶ . -33 26 19 16 16 13 12 11 10 8 8 6 5 5 4 4 3 2 1 1

Como podemos apreciar en el diagrama el caracter 8 es el que se repite con mayor frecuencia, porlo que como la letra mas frecuente en ingles es E, podemos suponer que 8 se corresponde con esta letra.La siguiente con mas frecuencia en el ingles es la T, ası que tambien la vamos a hacer corresponder conel segundo sımbolo mas repetido, el punto y coma (;). Ahora, THE es de lejos la palabra y el trıgrafomas frecuente en ingles20, y podemos observar que la secuencia ;48 se repite hasta siete veces en eltexto, por lo que vamos a suponer que 4 es en realidad H (aunque nos podrıamos estar equivocando).Vamos a sustituirlo en el texto y ver que apariencia tiene ahora:

53���305))6*THE26)H�.)H�)TE06*THE�E¶60))E5T1�(T:�*E�E3(EE)5*�TH6(TEE*96*?TE)*�(THE5)T5*�2:*�(TH956*2(5*-H)E¶E*TH0692E5)T)6�E)H��T1(�9THE0E1TE:E�1THE�E5TH)HE5�52EE06*E1(�9THET(EETH(�?3HTHE)H�T161T:1EET�?T

En la quinta lınea del texto (ya medio cifrado o medio descifrado, segun se vea), aparece la secuenciaTHET(EETH. Si no nos hemos equivocado aun, deberıamos buscar una letra, que al sustituir ( por ella,dotara de sentido a ese fragmento. Parece que la unica que funciona es R, ya que tendrıamos THE TREE

TH. Por lo tanto, vamos a tomar el sımbolo ( como la letra R. Ademas, teniendo esto en cuenta, estaparte del texto continua THE TREE THR�?3H THE. Podrıa decir THROUGH, ası que vamos a asumir que‡ es O, ? es U y 3 es G. Hasta ahora, hemos conseguido averiguar lo siguiente:

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

8 3 4 � ( ; ?

Vamos a sustituir en el texto las nuevas letras que hemos ido deduciendo, a ver si nos ayuda conel resto de los sımbolos:

20Nuevamente segun Practical Cryptography.

31

Page 32: Teor a de C odigos y Criptograf a

5GOO�G05))6*THE26)HO.)HO)TE06*THE�E¶60))E5T1ORT:O*E�EGREE)5*�TH6RTEE*96*UTE)*ORTHE5)T5*�2:*ORTH956*2R5*-H)E¶E*TH0692E5)T)6�E)HOOT1RO9THE0E1TE:EO1THE�E5TH)HE5�52EE06*E1RO9THETREETHROUGHTHE)HOT161T:1EETOUT

Ahora nos fijamos en la segunda lınea, en la que aparece la secuencia TH6RTEE*. El sımbolo 6 escasi seguro una vocal, y puesto que la A no parece tener mucho sentido ahı, vamos a asumir que 6 esla letra I y entonces * es la N. Por otro lado, en esa misma lınea, un poco antes aparece la secuencia�EGREE), Parece que podrıa ser la palabra DEGREES, ası que vamos a suponer que † se correspondecon D y ) con S. Con esto, el principio del texto es 5GOOD, de lo que podemos deducir que 5 es, enrealidad, A. Entonces, nuestra tabla y texto actualizados (con las separaciones de palabras, que ya sevan intuyendo) son:

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

5 � 8 3 4 6 * � ( ) ; ?

A GOOD G0ASS IN THE 2ISHO.S HOSTE0 IN THE DE¶I0SSEAT 1ORT: ONE DEGREES AND THIRTEEN 9INUTESNORTHEAST AND 2: NORTH 9AIN 2RAN-H SE¶ENTH0I92 EAST SIDE SHOOT 1RO9 THE 0E1T E:E O1THE DEATHS HEAD A 2EE 0INE 1RO9 THE TREE THROUGH

THE SHOT 1I1T: 1EET OUT

Ahora podemos reconocer muchas palabras en el texto. En la primera lınea tenemos G0ASS, por loque lo mas razonable es que 0 se corresponda con L. En la tercera lınea, tenemos THIRTEEN 9INUTES,luego parece evidente que 9 es M. Teniendo en cuenta esto, en la quinta lınea tenemos LINE 1ROM

THE TREE, de donde concluimos que 1 es F. Si volvemos a la segunda lınea, nos encontramos FORT:ONE DEGREES, y ya podemos decir que : es Y. Gracias a esto, en la tercer lınea, aparece 2Y NORTH

MAIN 2RAN-H SE¶ENTH, de lo que deducimos que 2 es B, la virgulilla - es C y ¶ es V. Por ultimo, en laprimera fila, encontramos IN THE BISHO.S, por lo que el punto (.) sera P y con esto hemos concluidoel descifrado. La tabla queda como

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

5 2 - � 8 1 3 4 6 0 9 * � ( ) ; ? ¶ :

y el texto es

A GOOD GLASS IN THE BISHOP’S HOSTEL IN THE DEVIL’S

SEAT FORTY-ONE DEGREES AND THIRTEEN MINUTES

NORTHEAST AND BY NORTH MAIN BRANCH SEVENTH

LIMB EAST SIDE SHOOT FROM THE LEFT EYE OF

THE DEATHS HEAD A BEE LINE FROM THE TREE THROUGH

THE SHOT FIFTY FEET OUT.

Nota: Para los lectores interesados, el relato El escarabajo de oro se puede encontrar aquı, porejemplo. Se puede comprobar que el texto cifrado en la obra difiere ligeramente del de este ejercicio;lo atribuimos a errores en la fuente de donde se tomo.

Ejercicio 3.4. Estudia de cuantas claves distintas se puede disponer usando el cifrado de funcionesafines bidimensionales.

32

Page 33: Teor a de C odigos y Criptograf a

Solucion. Vamos a considerar primero el alfabeto espanol, que tiene 27 letras, es decir, vamos atrabajar sobre el anillo Z/Z27. Las claves de cifrado por funciones afines bidimensionales son pares(A, b) donde A ∈ GL2(Z/Z27) es una matriz invertible y b es un elemento21 de (Z/Z27)2. Por tanto,para b hay 272 = 729 posibilidades. Nos centraremos pues en calcular el cardinal de GL2(Z/Z27).

Sabemos que A es invertible si y solo si su determinante es invertible modulo 27, es decir, si no esmultiplo de 3 (es conveniente recordar que los multiplos de 3 son los divisores de cero de Z/Z27). Estoes equivalente a decir que su determinante es distinto de cero modulo 3 o lo que es lo mismo, que lamatriz A reducida modulo 3 (es decir, la matriz que se obtiene al tomar cada entrada de A modulo22

3) es invertible sobre F3. Por tanto, vamos a calcular el cardinal de GL2(F3) y luego veremos cuantasmatrices de GL2(Z/Z27) se reducen a una misma matriz de GL2(F3).

Consideremos una matriz B invertible de orden 2 sobre F3 de la forma

B =

(a bc d

).

Para la primera fila, dada por el vector (a, b) ∈ F23 (ahora sı es un vector), tenemos 32 posibilidades,

pero debemos descartar el vector (0, 0), ya que en ese caso |B| se anularıa. Por tanto, para la primerafila tenemos 32 − 1 posibles vectores. Fijemos la primera fila (a, b).

Para la segunda fila, el vector (c, d) ∈ F23, tenemos, al igual que antes, 32 posibilidades, pero para

que B sea invertible las filas deben ser linealmente independientes. Por consiguiente, (c, d) no puedeser multiplo de (a, b). Puesto que hay 3 multiplos distintos de la primera fila, nos quedan 32−3 posiblesvectores. En conclusion, hay (32 − 1)(32 − 3) = 48 matrices invertibles de orden 2 con coeficientes enF3.

Ahora vamos a contar cuantas matrices A ∈ GL2(Z/Z27) se reducen a una misma matriz deGL2(F3) al tomar sus entradas modulo 3. Por cada elemento de F3 hay 32 elementos en Z/Z27congruentes con x modulo 3, y por tanto, hay (32)4 matrices de orden 2 × 2 que se reducen a unamisma matriz modulo 3. En consecuencia, |GL2(Z/Z27)| = (32 − 1)(32 − 3)(32)4 = 314928, y ası, elnumero total de claves es 729 · 314928 = 229582512.

Vamos a ver cuantas tendrıamos si trabajaramos con el alfabeto ingles. En este caso contamos con26 letras. Como antes, es claro que hay 262 elementos distintos en (Z/Z26)2, y que el punto importantees hallar el cardinal de GL2(Z/Z26). Ahora bien, en este caso 26 es producto de dos primos, no unapotencia de uno, ası que el razonamiento no puede ser en pincipio el mismo que antes. Gracias alteorema chino del resto, podemos afirmar23 que una matriz A ∈ M(Z/Z26, 2 × 2) es invertible si ysolo si lo es modulo 2 y 13, respectivamente, y por cada matriz de GL2(Z/Z26) tenemos un unico parde matrices de GL2(F2) y GL2(F13). Ahora sı podemos usar el razonamiento anterior, porque hayque considerar el producto de los cardinales de los grupos lineales sobre un cuerpo finito primo. Enconclusion, sustituyendo 3 por 2 y 13 en el parrafo anterior,

|GL2(Z/Z26)| = |GL2(F2)| · |GL2(F13)| = (22 − 1)(22 − 2)(132 − 1)(132 − 13) = 157248.

En conclusion, manejando 26 caracteres disponemos de 676 · 157248 = 106299648 claves.

Podrıamos ir un paso mas alla y suponer que manejamos un numero arbitrario de caracteresdistintos en nuestro sistema de escritura. (¿Que nos impide cifrar textos en el silabario Hiragana, o elalfabeto ruso, el esperanto, el griego o el hawaiano, con 46, 33, 28, 24 y 13 caracteres, respectivamente?)

21No es un vector porque (Z/Z27)2 no es un espacio vectorial, sino un modulo libre.22Ojo: este 3 no es el entero 3, sino el elemento 3 := 3 + Z27 de Z/Z27; estamos usando que (Z/Z27)/(Z/Z27)3 es

isomorfo a Z/Z3 ∼= F3.23¿Por que?

33

Page 34: Teor a de C odigos y Criptograf a

En general, dado un entero positivo N = pa11 · . . . · parr , el cardinal de GL2(Z/ZN) es

r∏i=1

(pai−1i )4

r∏i=1

(p2i − 1)(p2i − pi) = N4r∏

i=1

(1− 1

pi

)(1− 1

p2i

).

Dejamos la prueba a los alumnos concernidos por la criptografıa en otros idiomas. En cualquier caso,no es mas que una combinacion de los argumentos usados en los dos casos anteriores.

Ejercicio 3.5. Razona por que el analisis de frecuencias no es util para el cifrado por funciones afinesbidimensionales. ¿Es posible que alguna variante de este ataque sı sea util?

Solucion. La razon fundamental es que una misma letra puede ser cifrada de distintas formas, puesen este sistema se cifran pares de letras. Podemos verlo en el Ejemplo 24 de las notas de teorıa: laletra T se cifra como M, C o L, en funcion de la otra letra que la acompana en cada pareja en la queaparece. Por consiguiente, no podemos atacar un texto cifrado por funciones afines bidimensionalescon un analisis de frecuencias usual, pero sı podemos usar una variante de este ataque: estudiar lasfrecuencias de los dıgrafos (parejas de letras) del texto. Al igual que pasa con las letras individuales,en cada idioma existen dıgrafos que se repiten mas que otros y algunos que (casi) nunca se dan (enlos enlaces de Practical Criptography que hemos proporcionado antes vienen los mas frecuentes).

La estrategia entonces es similar a la del ejercicio 1, esto es, estudiar las frecuencias de aparicionde los dıgrafos del texto. Ahora bien, hay que tener en cuenta que por lo general se cifran los dıgrafoscuya primera letra ocupe un lugar impar, por lo que por la misma razon que antes, solo ellos se cifraransiempre al mismo. Podemos ver este fenomeno en el Ejemplo 24 tambien: el dıgrafo IS se cifra ambasveces como QS porque la I ocupa el tercer y el quinto lugar en el mensaje, mientras que el dıgrafo OU

se cifra una vez como WQ y otra como KJ, porque la O ocupa los lugares septimo y vigesimo cuarto(por tanto, en el segundo caso no estamos cifrando el dıgrafo OU en sı, sino HO y UR).

Por consiguiente, si el texto es lo suficientemente grande, habra una cantidad considerable dedıgrafos en las posiciones correctas que se cifren igual. Entonces, los pares del texto cifrado quetengan mayor frecuencia de aparicion se corresponderan presumiblemente con aquellos con mayorfrecuencia de aparicion en el idioma que estemos usando. De esta forma, para poder encontrar laclave, bastara plantear un sistema de ecuaciones como en el ejercicio 7.

Ejercicio 3.6. Cifra el texto siguiente:

SWEARNOTBYTHEMOONTHEINCONSTANTMOON

mediante una funcion afın bidimensional (ojo, consideramos 26 sımbolos) dada por

A =

(2 37 8

), b =

(1123

).

Solucion. Para hacer este ejercicio debemos recordar como se cifra utilizando un sistema afın bidi-mensional. Llamemos m a nuestro mensaje, que dividiremos en bloques de dos sımbolos m1, . . . ,mr.Con esta notacion, asignamos a cada mi su valor numerico, en este caso un elemento de (Z/Z26)2, ycalculamos sustituimos cada bloque mi por Ami + b.

Vamos a aplicar este sistema al texto que nos da el enunciado de este ejercicio. Comenzaremos,como hemos dicho, dividiendo nuestro mensaje en bloques de dos y asignandoles los pares correspon-dientes:

SW EA RN OT BY TH EM OO NT

(18,22) (4,0) (17,13) (14,19) (1,24) (19,7) (4,12) (14,14) (13,19)

HE IN CO NS TA NT MO ON

(7,4) (8,13) (2,14) (13,18) (19,0) (13,19) (12,14) (14,13)

34

Page 35: Teor a de C odigos y Criptograf a

Para cifrar el primer bloque, SW, debemos calcular A(18, 22)t + b, es decir,(2 37 8

)(1822

)+

(1123

)=

(913

).

De esta forma SW se cifra en JN. Analogamente, el resto de pares se cifran como aparece en la siguientetabla:

SW EA RN OT BY TH EM OO NT HE IN CO NS TA NT MO ON

JN TZ GM SN HO SE DR DZ QG LA OB FT NY XA QG ZL AR

Es decir, nuestro texto cifrado es:

JNTZG MSNHO SEDRD ZQGLA OBFTN YXAQG ZLAR

Ejercicio 3.8. Se ha interceptado un mensaje. Sabemos que el emisor del mensaje utiliza un cifradopor funciones afines bidimensionales y el siguiente alfabeto:

A = 0, . . . , Z = 25, _ = 26, . = 27, , = 28, ? = 29.

El texto del mensaje es S_GNLIKD?KOZQLLIOMKUL.VY y sospechamos que el emisor ha finalizado elmensaje con su firma: KARLA. (incluyendo el punto final). Descifra el mensaje.

Solucion. Puesto que hay treinta sımbolos en este alfabeto, debemos trabajar en Z/Z30 y, comoestamos utilizando un sistema de cifrado por funciones afines bidimensionales, nuestra clave tiene queser una matriz invertible de orden 2 sobre Z/Z30, que denotaremos

A =

(x yz t

),

y b = (u, v)t ∈ (Z/Z30)2.Como sospechamos que el mensaje termina en KARLA., supondremos que los ultimos seis sımbolos

del texto que nos dan, es decir, KUL.VY, es el cifrado de KARLA..Los sımbolos que aparecen en ambos fragmentos se corresponden con un entero modulo 30, a saber,

A K L R U V Y .

0 10 11 17 20 21 24 27.

Entonces, cambiando los caracteres por elementos de Z/Z30 como en el ejercicio 6, tenemos que

A

(100

)+ b =

(1020

), A

(1711

)+ b =

(1127

)y A

(027

)+ b =

(2124

).

Estas igualdades nos proporcionan el siguiente sistema de ecuaciones:

10x + u = 1010z + v = 20

17x + 11y + u = 1117z + 11t + v = 27

27y + u = 2127t + v = 24

Resolviendo este sistema, obtenemos que nuestra clave esta formada por

A =

(4 35 22

)y b =

(00

).

35

Page 36: Teor a de C odigos y Criptograf a

Para descifrar el texto debemos dividir el mensaje en bloques de dos caracteres y luego aplicar lafuncion inversa de f : (Z/Z30)2 → (Z/Z30)2 : f(m) = Am + b = Am, que no es otra que laaplicacion f−1 : (Z/Z30)2 → (Z/Z30)2 : n 7→ A−1n. La matriz inversa de A es

A−1 =

(4 925 28

)Ahora seguimos el mismo camino24 que en el ejercicio 6. Primero, vamos a dividir el mensaje en

bloques de 2 sımbolos y les asignamos sus pares correspondientes.

S_ GN LI KD ?K OZ QL LI OM KU L. VY

(18,26) (6,13) (11,8) (10,3) (29,10) (14,25) (16,11) (11,8) (14,12) (10,20) (11,27) (21,24)

Desciframos el primer dıgrafo, S_:, es decir, calculamos

A−1

(1826

)=

(68

)que se corresponde con el dıgrafo GI. Procediendo analogamente con el resto de bloques, obtenemos:

S GN LI KD ?K OZ QL LI OM KU L. VY

GI VE T HE P LA NS T O KA RL A.,

por lo que el mensaje queda GIVE_THE_PLANS_TO_KARLA..

Ejercicio 3.9 Cifrar el siguiente mensaje segun el metodo de Vigenere con la clave HAMLET.

THERE ARE MORE THINGS IN HEAVEN AND EARTH HORATIO THAN ARE DREAMT OF IN YOUR

PHILOSOPHY

Solucion. En un cifrado de Vigenere de longitud n, las letras que se encuentran en las posicioneskn + a, para algunos enteros k ≥ 0 y a ∈ {1, . . . , n} se cifran por un sistema de tipo Cesar donde laclave es la letra (o mas bien su valor numerico) que se encuentra en la posicion a en la clave del cifradode Vigenere. En este ejercicio, nuestra clave es HAMLET, que es de longitud 6, ası que, por ejemplo, loscaracteres que se encuentren en las posiciones de la forma 6k se cifraran con un sistema de tipo Cesarcon clave H (y desplazamiento 7, por tanto).

Para cifrar vamos a dividir el texto del enunciado en bloques de 6 letras (sin contar espacios) y acada bloque le “sumaremos” la clave HAMLET caracter a caracter (sin llevada), es decir, al valor de laprimera letra le sumaremos 7, al de la segunda 0, al de la tercera 12, y ası con las otras tres, es decir, acada bloque le sumaremos la tupla (7, 0, 12, 11, 4, 19) ∈ (Z/Z26)6. De esta forma, el primer bloque deseis elementos, THEREA, que se corresponde con (19, 7, 4, 17, 4, 0), se cifra como (0, 7, 16, 2, 8, 19), quese corresponde a su vez con AHQCIT. Repitiendo el proceso para el resto de bloques, obtenemos:

THEREA REMORE THINGS INHEAV

(19,7,4,17,4,0) (17,4,12,14,17,4) (19,7,8,13,6,18) (8,13,7,4,0,21)

(0,7,16,2,8,19) (24,4,24,25,21,23) (0,7,20,24,10,11) (15,13,19,15,4,14)AHQCIT YEYZVX AHUYKL PNTPEO

ENANDE ARTHHO RATIOT HANARE

(4,13,0,13,3,4) (0,17,19,7,7,14) (17,0,19,8,14,19) (7,0,13,0,17,4)

(11,13,12,24,7,23) (7,17,5,18,11,7) (24,0,5,19,18,12) (14,0,25,11,21,23)LNMYHX HRFSLH YAFTSM OAZLVX

24Porque descifrar es lo mismo que cifrar usando la clave inversa.

36

Page 37: Teor a de C odigos y Criptograf a

DREAMT OFINYO URPHIL OSOPHY

(3,17,4,0,12,19) (14,5,8,13,24,14) (20,17,15,7,8,11) (14,18,14,15,7,24)

(10,17,16,11,16,12) (21,5,20,24,2,7) (1,17,1,18,12,4) (21,18,0,0,11,17)KRQLQM VFUYCH BRBSME VSAALR

Si juntamos todos los bloques, el texto cifrado es:

AHQCI TYEYZ VXAHU YKLPN TPEOL

NMYHX HRFSL HYAFT SMOAZ LVXKR

QLQMV FUYCH BRBSM EVSAA LR.

Ejercicio 3.10 Supongamos que tenemos que descifrar un texto del cual sabemos que ha sido cifradopor el metodo de Vigenere. Explica como es posible confirmar o descartar una hipotesis sobre lalongitud de la clave (formulada, por ejemplo, usando el metodo de Kasiski), calculando un unicodiagrama de frecuencias.

Solucion. Sea n la (supuesta) longitud de la clave. Entonces, los elementos que se encuentran enlas posiciones de la forma kn, con k ≥ 1, deben formar un texto que esta cifrado con un sistema detipo Cesar. Si calculamos el diagrama de frecuencias de dicho texto, el conjunto de los porcentajesque aparecen debe coincidir (aproximadamente) con el de los de cada letra del alfabeto que estemosutilizando. De esta forma, si no coinciden, lo mas probable es que la longitud de la clave no sea n,mientras que si sı coincide, es posible que lo sea.

Nota: El metodo de Kasiski se usa para obtener una hipotesis sobre la longitud de la clave. Estemetodo se basa en la busqueda de fragmentos repetidos en el texto cifrado. Si existe una secuenciaque se repita es posible que provenga de la misma secuencia en el texto original y que se haya cifradocon la clave en la misma posicion. En ese caso, la distancia entre secuencias repetidas es un multiplo dela longitud de la clave. Si buscamos no solo uno, sino varios fragmentos que se repitan en el texto (demodo que la distancia entre ellos pueda ser un multiplo de la longitud de la clave), podemos suponerque el maximo comun divisor de las distancias es la longitud de la clave o un multiplo cercano a esta.

Ejercicio 3.20 de teorıa Disena un porcedimiento para descifrar correctamente un mensaje cifradocon un sistema de Vigenere en modo CBC.

Solucion. Recordemos que en un cifrado de Vigenere de clave k de longitud n, la funcion de cifrado esF (k,m) = m+k y la de descifrado es G(k,M) =M−k, donde entendemos a k, m yM como elementosde cierto modulo libre (Z/ZN)n. Por tanto, si estamos cifrando un mensaje m = m1m2 · · ·ms (dondecada bloque mi tiene longitud n, la misma que la clave) con un sistema Vigenere en modo CBC, elprocedimiento de cifrado es

M1 =k +m1

M2 =m1 +m2

...

Mi =mi +mi−1

...

Ms =ms +ms−1

y nuestro mensaje cifrado es M1M2 · · ·Ms. Ahora, para descifrar este mensaje, basta hacer las opera-

37

Page 38: Teor a de C odigos y Criptograf a

ciones inversas. Se puede probar por induccion que en este caso,

m1 =M1 − km2 =M2 −m1 =M2 −M1 + k

...

mi =Mi −mi−1 =Mi −Mi−1 + . . .+ (−1)ik =i∑

k=1

(−1)i−kMk + (−1)ik

...

ms =Ms −ms−1 =s∑

k=1

(−1)s−kMk + (−1)sk,

con lo que conseguirıamos nuestro mensaje original usando solo el mensaje cifrado y la clave privada.

7 de mayo: Cifrados clasicos, de permutacion y Enigma

Ejercicio 3.7. Uno de los criptosistemas que no hemos visto como romper es el criptosistema deHill. En este ejercicio vamos a romper un criptosistema de Hill conociendo parte del texto cifrado.La idea es la siguiente: supongamos que tenemos un criptosistema de Hill de longitud n, de claveA ∈ GLn(Z/Z26), donde el cifrado es

K(A,m) = Am.

Supongamos que podemos adivinar un trozo del texto en claro: un nombre, un lugar, una fecha, etc.Esto nos darıa un bloque o una sucesion de bloques en texto claro, m1, . . . ,mr. En principio nosabemos en que posicion del texto estan los correspondientes bloques cifrados, pero supongamos porel momento que estan en la primera posicion. Si pensamos en la matriz A como en una matriz deincognitas, podemos plantear el siguiente sistema:

Am1 = M1, Am2 = M2, . . . , Amr = Mr,

y con suficientes ecuaciones es posible averiguar A. Alternativamente, si encontramos n vectoresmi1 , . . . ,min linealmente independientes, podemos tomar

B = (mi1 | . . . |min), C = (Mi1 | . . . |Min),

y entonces25 A = CB−1.Si los vectores mi conocidos no estuvieran en las primeras posiciones, tendrıamos que probar con

todas las posiciones posibles del texto.El siguiente texto se ha cifrado con un criptosistema Hill 2× 2:

YWQDO RUZBE BSUAO EILYY CGMQO IHXNQ IEYFX VRUPI XVWMK PQDMW

ILERB YFIMC QKMQM XIXBT YNWSP PWCJQ QTGEW BYYGG UHTRI XKAAV

EHFYM CEHTR SHOZW WFURE WBMXX FIYBE EPNSL YIXIL EHGSI YTRCG

MQPIK FILXO MDEPA SYNJR UUYFL DBEFU UTORT RIIWK ZZYEH UORBU

IEWSS MGMLL BSUXY LKCDS KOFXR UAAPP UUYFH ANQRK TGJMG LKSKJ

25¿Como podrıamos implementar este metodo para hallar la clave en el caso de un criptosistema afın multidimensionalcomo el del ejercicio 8? Pista: es util recordar la geometrıa afın de primero.

38

Page 39: Teor a de C odigos y Criptograf a

HHNEQ MOZXO IBITR JVMIX AUHXV OFSRI XVRUF ITWMR XOPIM XXVKA

KANEA SASYJ KGRIX VWCQT GTEPN SLYIX YBHAU ZERBY UYMXE HLJSY

SLNGK COQMO CNEUX VWCHT QUYXH UTWFK TWVOR UNQMX YNUQA NFXRU

AALLY NEYCW VKUQJ QUTTA RULYD GMQDT TWQLS IQHMW OBBEB SUAMQ

EHIEX OYDWL KF

Sabiendo que es un mensaje dirigido al general Kenobi, descifra el texto. (Muchos bothans han muertopara traer esta informacion.)

Solucion. Puesto que el ingles es la lengua vehicular en todas las galaxias conocidas, vamos a suponerque el texto esta en este idioma, es decir, vamos a trabajar con el alfabeto ingles de 26 letras, o lo quees lo mismo, en Z/Z26. Ademas, como el mensaje va dirigido, segun nos cuentan, al general Kenobi,vamos a suponer que en la primera lınea del texto aparece GENERAL KENOBI.

Sabemos que este mensaje ha sido cifrado con un criptosistema Hill 2 × 2, por lo que la clave esuna matriz invertible de orden 2× 2 que denotaremos A y cuyas entradas seran

A =

(x yz t

).

Ahora, usaremos lo aprendido en el enunciado de este ejercicio e intentaremos resolver un sistema deecuaciones teniendo en cuenta el texto en claro que sabemos (o suponemos) que aparece.

Tenemos dos posibilidades, o bien que el texto en claro conocido comience en una posicion imparo bien que empiece en una posicion par. Vamos a ver cada una de las opciones:

1. Si el texto en claro conocido empieza en una posicion impar. En este caso, cuando realizamosla division en bloques de nuestro mensaje original, nos quedara algo de la forma

· · · |GE|NE|RA|LK|EN|OB|I· · · ,

donde GE es un bloque en la posicion d, para algun d ≥ 1. Entonces, debemos plantear el sistemade ecuaciones (sustituyendo cada letra por su valor numerico correspondiente)

A

(64

)=Md, A

(134

)=Md+1, A

(170

)=Md+2,

A

(1110

)=Md+3, A

(413

)=Md+4, A

(141

)=Md+5.

2. Si el texto en claro conocido empieza en una posicion par. En este caso, la division del mensajeoriginal serıa

· · · G|EN|ER|AL|KE|NO|BI|· · · ,

donde el bloque EN esta en la posicion d y nuestro sistema de ecuaciones serıa

A

(413

)=Md, A

(417

)=Md+1, A

(011

)=Md+2,

A

(104

)=Md+3, A

(1314

)=Md+4, A

(18

)=Md+5.

39

Page 40: Teor a de C odigos y Criptograf a

Vamos a empezar a buscar el texto en claro en nuestro texto cifrado. Comenzaremos suponiendoque se encuentra en la primera posicion, es decir, que el mensaje empieza GENERAL KENOBI, de maneraque el cifrado debe ser YWQDORUZBEBS. Entonces, el texto empieza en una posicion impar y debemosusar el primer sistema de ecuaciones:

A

(64

)=

(2422

), A

(134

)=

(163

), A

(170

)=

(1417

),

A

(1110

)=

(2025

), A

(413

)=

(14

), A

(141

)=

(118

).

Ahora podemos seguir las indicaciones del enunciado y nos podemos quedar, por ejemplo, con losbloques cuarto y quinto del texto en claro conocido, que son linealmente independientes26. Por tanto,la clave A se puede escribir como

A =

(20 125 4

)(11 410 13

)−1

=

(10 171 4

).

Esta matriz es invertible (no podıa ser de otro modo), y su matriz inversa es

A−1 =

(16 239 14

).

Para comprobar la clave, vamos a descifrar el siguiente bloque de texto, que es UA. Recordemos quepara descifrarlo basta multiplicarlo por la izquierda con la matriz inversa de A (o dicho de otro modo,cifrarlo con la clave inversa), es decir,

A−1

(200

)=

(824

),

que corresponde al bloque IY. Ası, nuestro mensaje empezarıa de la forma GENERAL KENOBI Y; pareceque funciona. Si continuamos descifrando el texto, obtenemos el ansiado mensaje (con los espacios yalguna cosa mas para facilitar la comprension del texto) 27:

GENERAL KENOBI: YEARS AGO YOU SERVED MY FATHER IN THE CLONE WARS; NOW HE BEGS

YOU TO HELP HIM IN HIS STRUGGLE AGAINST THE EMPIRE. I REGRET THAT I AM UNABLE

TO PRESENT MY FATHER’S REQUEST TO YOU IN PERSON; BUT MY SHIP HAS FALLEN UNDER

ATTACK AND I’M AFRAID MY MISSION TO BRING YOU TO ALDERAAN HAS FAILED. I HAVE

PLACED INFORMATION VITAL TO THE SURVIVAL OF THE REBELLION INTO THE MEMORY

SYSTEMS OF THIS R2 UNIT. MY FATHER WILL KNOW HOW TO RETRIEVE IT. YOU MUST SEE

THIS DROID SAFELY DELIVERED TO HIM ON ALDERAAN. THIS IS OUR MOST DESPERATE

HOUR. HELP ME, OBI-WAN KENOBI; YOU’RE MY ONLY HOPE.

Ejercicio 3.11. Intenta descifrar el siguiente texto. Esta escrito en ingles y cifrado por el metodo deVigenere.

a= "ZMXZBVIDYAWAEALGTPTEAMZRVNMOCZWBAHNDSIWGZGAINYIUBOWKMIFWIHWFAWZGBXBXMP

JMQDVFOXSSLQFGFWMPGJZQXSVOIEGYWMBWAYIZRGZMHWFAWZHUSBIOFHTMBGWLUBZQJDOVFAFW

YDZQANAVEKVLPUBGZMECHFLATFATQBPWQZFRKBXSFKLDSNEAUKNDSQRNDWZSASZDCJKBDSRLAA

TPGJNZRKBABRFMMHULPQVNDWATNKBDSRLTMACABGFAWLYMPGTXOELWFVRUWXRNFLPOZHETSAEG

26Debemos calcular los determinantes de las matrices (mk|mj), sin olvidarnos de cuales son las unidades de Z/Z26.27Al menos ningun bothan ha muerto en vano. El caracter en azul falta de la fuente original.

40

Page 41: Teor a de C odigos y Criptograf a

QMRKEQFRKBMPOWLNMGZMRZNKPATNFMABYAOTHGZIFGCDQFHUWVUUULIZRGGCOVRVBTSFGCZRBX

AUZRFKQOAVQZHUWVMYRVTUUULQEOJLMZHUGCEOAVXQCCDMYOLTMYCEWXQCCDMFOYCQZUJABTCH

LABSNCQZUCWWBZRZMMFVFOIWGZWGHYAAFSAAVSDRGXXSJJQFWAYAABTKBTOGNWUQRKVQJRJATO

EWIZRAGWZSQSZQRQAAFIETBTSFGCZRBXAUZRFKQTBGTEGNALUMBMLABBLSZCJKQXSAUMXWXWIO

OAUMDUEGEEVRSZYMJGZPGGZIFWZAOTHGWIOVLGCFOXWUKOEEAFVNLQYWTZBDSNUPKCHTCFALOW

DRFDQWSFATQBGJIUBQJWBGSWTXOAVMOVBWLUBGZMISYDAATFATQBPWIZRGZMBSBHTQPBOMPOAV

XDOLWLFCGZMZSBFOARGZMKANVMMBQLPQGVYVRZNKPQRBMBUHFOIDBVFOUBGZMICEVAFVNLQFKN

KNAFZAVSOAVBTSFAOZGNALFVROWDRFGNFVRHZADUWBEOEWEDWGLMZCALPQGHTEMMJSTXGNFLFS

AWUQBGZIXZFSVPKUAABSEWLUBGZMECHFLECSKQXSAUM"

Solucion. Puesto que este texto esta cifrado por el metodo de Vigenere, lo primero que tenemos quehacer es buscar la longitud de la clave. Para ello vamos a utilizar el metodo de Kasiski que se describeen la solucion del ejercicio 10, es decir, vamos a buscar fragmentos repetidos en el texto cifrado, puesel maximo comun divisor de las distancias entre estos fragmentos sera probablemente la longitud dela clave o un multiplo cercano a ella.

En nuestro caso, mirando el texto hemos encontrado que el dıgrafo ZM se repite bastante, 11veces. (¿Sera una parte de THE? Recordemos que esta palabra es la mas frecuente del ingles, como yahemos visto en ejercicios anteriores 28.) Para facilitar la tarea de encontrar estos fragmentos, vamosa marcarlos en el texto:

ZMXZBVIDYAWAEALGTPTEAMZRVNMOCZWBAHNDSIWGZGAINYIUBOWKMIFWIHWFAWZGBXBXMP

JMQDVFOXSSLQFGFWMPGJZQXSVOIEGYWMBWAYIZRGZMHWFAWZHUSBIOFHTMBGWLUBZQJDOVFAFW

YDZQANAVEKVLPUBGZMECHFLATFATQBPWQZFRKBXSFKLDSNEAUKNDSQRNDWZSASZDCJKBDSRLAA

TPGJNZRKBABRFMMHULPQVNDWATNKBDSRLTMACABGFAWLYMPGTXOELWFVRUWXRNFLPOZHETSAEG

QMRKEQFRKBMPOWLNMGZMRZNKPATNFMABYAOTHGZIFGCDQFHUWVUUULIZRGGCOVRVBTSFGCZRBX

AUZRFKQOAVQZHUWVMYRVTUUULQEOJLMZHUGCEOAVXQCCDMYOLTMYCEWXQCCDMFOYCQZUJABTCH

LABSNCQZUCWWBZRZMMFVFOIWGZWGHYAAFSAAVSDRGXXSJJQFWAYAABTKBTOGNWUQRKVQJRJATO

EWIZRAGWZSQSZQRQAAFIETBTSFGCZRBXAUZRFKQTBGTEGNALUMBMLABBLSZCJKQXSAUMXWXWIO

OAUMDUEGEEVRSZYMJGZPGGZIFWZAOTHGWIOVLGCFOXWUKOEEAFVNLQYWTZBDSNUPKCHTCFALOW

DRFDQWSFATQBGJIUBQJWBGSWTXOAVMOVBWLUBGZMISYDAATFATQBPWIZRGZMBSBHTQPBOMPOAV

XDOLWLFCGZMZSBFOARGZMKANVMMBQLPQGVYVRZNKPQRBMBUHFOIDBVFOUBGZMICEVAFVNLQFKN

KNAFZAVSOAVBTSFAOZGNALFVROWDRFGNFVRHZADUWBEOEWEDWGLMZCALPQGHTEMMJSTXGNFLFS

AWUQBGZIXZFSVPKUAABSEWLUBGZMECHFLECSKQXSAUM

Si nos fijamos en la distancia entre los fragmentos repetidos, obtenemos que las distancias entrelos pares i- e (i+ 1)-esimos son

1º–2º 2º–3º 3º–4º 4º–5º 5º–6º 6º–7º 7º–8º 8º–9º 9º–10º 10º–11º110 50 150 145 245 20 25 10 40 115

El maximo comun divisor de estas distancias es 5, por lo que vamos a suponer que la longitud de la clavees 5, es decir, nuestra clave es un elemento k = (k1, k2, k3, k4, k5) ∈ (Z/Z26)5. Ahora calcularemos laclave.

Sabemos que en un cifrado Vigenere con una clave de longitud n tenemos que las letras que seencuentran en la posicion rn+l para r ≥ 0 y l ∈ {1, 2, . . . , n} se cifran por un cifrado de desplazamientodonde la clave es la letra que se encuentra en la posicion l de la clave del cifrado de Vigenere. Portanto, en nuestro caso (y siempre suponiendo que nuestra hipotesis sobre la longitud sea cierta), kldebe ser la clave del cifrado de desplazamiento de las letras que se encuentran en la posicion 5r+ l conl ∈ {1, 2, 3, 4, 5}. Por otro lado, el mejor ataque para este tipo de cifrados es un analisis de frecuencias.Por tanto, vamos a hacer un diagrama de frecuencias (absolutas) para cada uno de los cifrados dedesplazamiento.

28Observese que el dıgrafo ZM no tiene por que ser siempre el cifrado del mismo texto simple.

41

Page 42: Teor a de C odigos y Criptograf a

l 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

1 19 0 2 10 3 13 14 4 0 5 14 16 2 2 5 0 1 0 6 4 5 10 26 3 4 18

2 15 17 6 0 5 0 2 0 15 2 3 14 29 2 7 7 14 0 3 12 2 8 13 4 0 6

3 14 6 0 13 11 19 2 2 5 0 3 0 9 2 6 6 20 2 2 9 15 0 1 14 5 20

4 5 18 14 3 0 5 12 10 3 1 4 0 7 0 19 2 1 14 24 7 5 10 11 0 2 8

5 18 12 5 0 10 16 20 5 0 8 0 5 0 21 2 5 4 19 3 2 9 8 0 2 6 5

Para calcular la clave haremos corresponder el caracter que aparece mas veces en cada una de lasposiciones (marcados en rojo en la tabla anterior) con la letra E, que es la que mayor frecuencia deaparicion tiene en ingles. De esta forma, por ejemplo, en l = 1, suponemos que W es el cifrado de E, esdecir, sustituyendo sus valores numericos, 22 = 4+k1 mod 26, por lo que k1 = 18, que se correspondecon la letra S. Para las posiciones l = 1, 2, 4, 5 la letra mas frecuente esta clara. Razonando del mismomodo, obtenemos tambien que k2 = 8, k4 = 14 y k5 = 9, que se corresponden respectivamente con lasletras E, O y J.

Vamos a ver que ocurre en la posicion 3. Tenemos dos posibilidades, que la letra cifrada de E seaQ o Z, o lo que es lo mismo, que la clave k3 sea 12 o 21, respectivamente. Supongamos que sea 21.Entonces, la letra cifrada de A es V (ya que 0 + 21 = 21 mod 26, que se corresponde con V). Si nosfijamos en el diagrama de frecuencias, vemos que V no aparece ninguna vez a pesar de que la letra A esuna de las mas frecuentes en ingles; algo no cuadra. Si tomamos entonces k3 = 12, el cifrado de A esM, que aparece nueve veces. No es mucho, pero algo es algo, por lo que vamos a suponer que k3 = 12es nuestra clave para el cifrado de desplazamiento en la tercera posicion.

Por consiguiente, nuestra clave para el cifrado de Vigenere es k = (18, 8, 12, 14, 9), que se cor-responde con la palabra SIMOJ. Vamos a probar si hemos acertado comenzando a descifrar nuestromensaje. Para ello, dividimos el texto en bloques de cinco, lo pasamos a su valor numerico y le resta-mos la clave modulo 26. Por ejemplo, el primer bloque es ZMXZB, que se corresponde con la quıntupla(25, 12, 23, 25, 1). Al restarle la clave k (siempre modulo 26) nos queda (7, 4, 11, 11, 18), que en textoes HELLS. Si continuamos descifrando el mensaje queda:

HELLS|DARKR|ESSMC|...

Esta claro que nuestra clave k no es del todo correcta; sin embargo ya podemos leer algo del textoy parece que nuestra clave falla solo en la ultima componente, k5. Si nos fijamos en el diagrama defrecuencias 29 de esta parte del mensaje, es decir, el texto formado por los caracteres que se encuentranen la posicion 5r+5 para r ≥ 0, hay otras dos letras que se repiten bastante, R y G, y quizas una de estasdos sea la cifrada de E. Si optamos por G, entonces k5 = 2 y nuestra clave queda k = (18, 8, 12, 14, 2),que representa la palabra SIMOC. Si intentamos descifrar el texto, obtenemos

HELLZ|DARKY|ESSMJ|...

De nuevo no parece tener mucho sentido, ası que vamos a tomar R como el cifrado de E, de formaque k5 serıa 13 y nuestra nueva clave, k = (18, 8, 12, 14, 13), que se corresponde con la palabra SIMON.Vamos a ver si esta vez sı tenemos suerte.

Para el primer bloque, que es el elemento (25, 12, 23, 25, 1), el descifrado es (7, 4, 11, 11, 14), que secorresponde con la palabra HELLO. Si continuamos descifrando el texto, obtenemos el mensaje simple,que queda como (con separacion en las palabras y algun anadido mas para que sea mas facil de leer):

HELLO DARKNESS, MY OLD FRIEND

I’VE COME TO TALK WITH YOU AGAIN

BECAUSE A VISION SOFTLY CREEPING

29Tambien podemos observar el texto, pues parece que el mensaje correcto es HELLO DARKNESS..., y por tanto la letraB del primer bloque debe ser O y k5 = 1− 14 = 13 mod 26. Ahora, la ultima letra del segundo bloque es A y queremosque sea N, lo que concuerda con nuestra suposicion, pues 0 = 13 + 13 mod 26.

42

Page 43: Teor a de C odigos y Criptograf a

LEFT ITS SEEDS WHILE I WAS SLEEPING

AND THE VISION THAT WAS PLANTED IN MY BRAIN

STILL REMAINS

WITHIN THE SOUND OF SILENCE

IN RESTLESS DREAMS I WALKED ALONE

NARROW STREETS OF COBBLESTONE

’NEATH THE HALO OF A STREET LAMP

I TURNED MY COLLAR TO THE COLD AND DAMP

WHEN MY EYES WERE STABBED BY THE FLASH OF A NEON LIGHT

THAT SPLIT THE NIGHT

AND TOUCHED THE SOUND OF SILENCE

AND IN THE NAKED LIGHT I SAW

TEN THOUSAND PEOPLE, MAYBE MORE

PEOPLE TALKING WITHOUT SPEAKING

PEOPLE HEARING WITHOUT LISTENING

PEOPLE WRITING SONGS THAT VOICES NEVER SHARE

AND NO ONE DARED

DISTURB THE SOUND OF SILENCE

"FOOLS", SAID I, "YOU DO NOT KNOW

SILENCE LIKE A CANCER GROWS

HEAR MY WORDS THAT I MIGHT TEACH YOU

TAKE MY ARMS THAT I MIGHT REACH YOU"

BUT MY WORDS, LIKE SILENCE RAINDROPS FELL

AND ECHOED IN THE WELLS OF SILENCE

AND THE PEOPLE BOWED AND PRAYED

TO THE NEON GOD THEY MADE

AND THE SING FLASHED OUT ITS WARNING

IN THE WORDS THAT IT WAS FORMING

AND THE SING SAID "THE WORDS OF THE PROPHETS ARE WRITTEN ON THE SUBWAY WALLS

AND TENEMENT HALLS"

AND WHISPERED IN THE SOUNDS OF SILENCE

Ejercicio 3.29 Estudiar, sin utilizar sage, el siguiente criptograma de 404 caracteres cifrado por elmetodo de Vigenere para obtener la posible longitud de la clave y calcular la clave.

PBVRQ VICAD SKA~NS DETSJ PSIED BGGMP SLRPW R~NPWY EDSDE ~NDRDP CRCPQ MNPWK

UBZVS FNVRD MTIPW UEQVV CBOVN UEDIF QLONM WNUVR SEIKA ZYEAC EYEDS ETFPH

LBHGU ~NESOM EHLBX VAEEP U~NELI SEVEF WHUNM CLPQP MBRRN BPVI~N MTIBV VE~NID

ANSJA MTJOK MDODS ELPWI UFOZM QMVNF OHASE SRJWR SFQCO TWVMB JGRPW VSUEX

INQRS JEUEM GGRBD GNNIL AGSJI DSVSU EEINT GRUEE TFGGM PORDF OGTSS TOSEQ

O~NTGR RYVLP WJIFW XOTGG RPQRR JSKET XRNBL ZETGG NEMUO TXJAT ORVJH RSFHV

NUEJI BCHAS EHEUE UOTIE FFGYA TGGMP IKTBW UE~NEN IEEU.

Indicacion: Estudiar las cadenas GGMP, YEDS, HASE y VSUE.

Solucion. Puesto que la letra ~N aparece en nuestro texto, vamos a suponer que el idioma elegido paraeste mensaje es el espanol30, es decir, que trabajamos en Z/Z27. Para descifrar este texto debemosbuscar la clave de este cifrado, que sera un elemento de (Z/Z27)n, siendo n la longitud de dicha clave.

30Aunque podrıa ser el gallego, o el quechua, o el breton, o el...

43

Page 44: Teor a de C odigos y Criptograf a

Lo primero que debemos hacer es hallarla, y para ello usaremos el metodo de Kasiski. Vamos a buscarfragmentos repetidos en el texto. Siguiendo las indicaciones que nos dan, buscaremos los fragmentosGGMP, YEDS, HASE y VSUE:

PBVRQ VICAD SKA~NS DETSJ PSIED BGGMP SLRPW R~NPWY EDSDE ~NDRDP CRCPQ MNPWK

UBZVS FNVRD MTIPW UEQVV CBOVN UEDIF QLONM WNUVR SEIKA ZYEAC EYEDS ETFPH

LBHGU ~NESOM EHLBX VAEEP U~NELI SEVEF WHUNM CLPQP MBRRN BPVI~N MTIBV VE~NID

ANSJA MTJOK MDODS ELPWI UFOZM QMVNF OHASE SRJWR SFQCO TWVMB JGRPW VSUEX

INQRS JEUEM GGRBD GNNIL AGSJI DSVSU EEINT GRUEE TFGGM PORDF OGTSS TOSEQ

O~NTGR RYVLP WJIFW XOTGG RPQRR JSKET XRNBL ZETGG NEMUO TXJAT ORVJH RSFHV

NUEJI BCHAS EHEUE UOTIE FFGYA TGGMP IKTBW UE~NEN IEEU.

Ahora miramos la distancia que hay entre los mismos fragmentos:

1º–2º 2º–3ºGGMP 28 23 · 13YEDS 23 · 32 –

HASE 22 · 3 · 13 –

VSUE 25 –

El metodo de Kasiski nos dice que el maximo comun divisor de estas distancias es (o puede ser) lalongitud de la clave o un multiplo cercano a ella. En este caso, el maximo comun divisor es 4 y vamosa suponer que esta es la longitud de la clave. Una vez que tenemos esta hipotesis sobre la longitud,debemos buscar la clave, que denotaremos k = (k1, k2, k3, k4) ∈ (Z/Z27)4, de este mensaje cifrado.Como es un cifrado de Vigenere, el mejor ataque es el analisis de frecuencias para cada texto formadopor los caracteres que se encuentran en la posicion 4r + l donde r ≥ 0 y l ∈ {1, 2, 3, 4} (ya que lalongitud de la clave es en este caso 4), pues cada uno de estos textos esta cifrado por un sistema dedesplazamiento cuya clave es kl. Tenemos el siguiente diagrama de frecuencias:

l A B C D E F G H I J K L M N ~N O P Q R S T U V W X Y Z

1 12 0 2 3 12 1 0 0 11 0 0 5 6 9 1 10 2 1 9 7 4 5 1 0 0 0 02 0 14 1 6 4 12 1 0 0 4 1 0 3 6 8 0 14 2 1 6 9 7 1 0 0 0 13 0 0 2 2 18 0 7 3 7 1 0 1 7 1 0 6 2 6 1 12 3 0 4 12 3 2 14 0 0 3 5 7 0 12 6 1 7 5 4 1 1 0 0 2 1 13 2 3 6 14 1 2 3 2

Vamos a estudiar la clave kl para cada l ∈ {1, 2, 3, 4}; comencemos con la posicion l = 1. Hay dosletras que se repiten igual numero de veces, que son A y E. Por tanto vamos a suponer que alguna deestas dos es el cifrado de E, que es la letra con mayor frecuencia en espanol. Vamos a suponer primeroque A es el cifrado de E. Ası, tenemos que 0 = 4 + k1 mod 27, es decir, k1 = 23. En este caso, laletra cifrada de A se corresponderıa con 0 + 23 = 23 mod 26, es decir, serıa W. Si nos fijamos en eldiagrama de frecuencias, esta letra no aparece, lo cual es bastante extrano, pues A es la segunda letramas frecuente en espanol (de hecho, la frecuencia de aparicion de A y E son muy parecidas). Vamos aver que ocurre si consideramos como E la letra cifrada de E. En este caso, tenemos que k1 = 0, luego lacifrada de A es la propia A, que es el otro grafo que aparece con mas frecuencia. Vamos a arriesgarnos(solo un poco) y optar por k1 = 0. (Con todo este razonamiento no estamos descartando que k1 puedaser 23, solo nos parece que lo mas probable es que sea k1 = 0 pero, por supuesto, podrıamos estarequivocandonos.)

En la posicion l = 2 pasa lo mismo que en el anterior caso: tenemos dos letras que se repiten con lamisma frecuencia maxima, B y P. Haciendo un razonamiento similar al caso anterior, podemos suponerque Ese cifra en B y ası la clave es k2 = 24, pero entonces el cifrado de A serıa X, que no aparece en eltexto. Si la letra cifrada de E es P, tenemos que la clave es k2 = 12 y A se cifra como M, que aparece

44

Page 45: Teor a de C odigos y Criptograf a

tres veces en el texto. En principio no es descabellado optar por la clave k2 = 12. Sin embargo, nonos convece mucho que la letra A solo aparezca tres veces (aunque podrıa ocurrir perfectamente queni apareciera), ası que vamos a volver a mirar el diagrama de frecuencias. Observamos que hay unaletra que aparece 12 veces en el texto, la F, solo dos veces menos que B y P. Vamos a ver que ocurre siconsideramos F la cifrada de E. Si esto es cierto, k2 = 1 y ası A se cifra como B, que aparece 14 veces.Teniendo en cuenta nuestro conocimiento sobre el espanol (que es el que es), parece algo mas probableque esta sea la clave. En resumen, vamos a asumir que k2 = 1.

Para las posiciones l = 3 y l = 4 solamente hay una letra con la maxima frecuencia, la E y la V,respectivamente. Si las hacemos corresponder con el cifrado de E, tenemos que k3 = 0 y k4 = 18. Deesta forma, nuestra clave es k = (0, 1, 0, 18), correspondiendose con ABAS.

Para comprobar si hemos acertado, debemos descifrar el texto. Para ello, dividimos nuestro men-saje en bloques de cuatro caracteres y a cada bloque le restamos la clave k. Por ejemplo, nuestroprimer bloque PBVR, que se corresponde con el elemento (16, 1, 22, 18) ∈ (Z/Z27)4, se descifra como(16, 0, 22, 0), es decir, PAVA, y si continuamos descifrando el texto, obtenemos

PAVA|QUIL|ACSS|A....,

que no tiene sentido. Sin embargo, sı nos podemos hacer una idea de como empieza, pues parece quepone PARA QUE LA COSA.... Si tenemos razon, entonces la clave k falla en la posicion 3 y nuestra clavek3 sera la que cifre R como V, E como I y S como O, es decir, k3 = 4. Por tanto, parece bastante posibleque k3 = 4 sea la clave. Tomemos nuestra nueva clave como k = (0, 1, 4, 18), que se corresponde conla palabra ABER. Si usamos esta clave para descifrar el texto (pues debemos comprobar que el mensajetiene sentido) nos queda (con las separaciones pertinentes) de la siguiente forma31:

PARA QUE LA COSA NO ME SORPRENDA COMO OTROS A~NOS HE COMENZADO YA CON UNOS

SUAVES EJERCICIOS DE PRECALENTAMIENTO: MIFNTRAS DESAYUNABA HE CONTEMPLADO UNA

BOLA PLATEADA Y UNA TIRA EE ESPUMILLON Y MA~NANA ME INICIARE EN EM AMOR AL

PROJIMO CON LOS QUE LIMPIEN EL PARABRISAS EN LOS SEMAFOROS. ESTA GIMNASIA DEL

CORAZON METAFORICO ES TAN IMPORTANTE COMO LA DEL OTRO CORAZON, PORQUE LOS

RIESGOS CORONARIOS ESTAN AHI ESCONDIDOS TRAS LA VIDA SEDENTARIA Y PARAPETADOS

EN FECHAS COMO ESTAS DE NAVIDAD.

Ejercicio 3.12. Aplica la permutacion

k =

(1 2 3 4 54 3 5 2 1

)al siguiente mensaje

MUCHOS A~NOS DESPUES FRENTE AL PELOTON DE FUSILAMIENTO EL CORONEL AURELIANO

BUENDIA HABIA DE RECORDAR AQUELLA TARDE REMOTA EN QUE SU PADRE LO LLEVO A

CONOCER EL HIELO

Solucion. Para cifrar un texto con el metodo de permutacion, debemos dividir el texto en bloquesde longitud igual a la de la permutacion y luego aplicar dicha permutacion. En este caso, nuestrapermutacion tiene longitud 5, ası que dividimos el texto en bloques de 5 caracteres (quitando losespacios):

31Los caracteres que aparecen en rojo son, obviamente, fallos en la transmision del mensaje.

45

Page 46: Teor a de C odigos y Criptograf a

MUCHO|SA~NOS|DESPU|ESFRE|NTEAL|PELOT|ONDEF|USILA|MIENT|OELCO|RONEL|

AUREL|IANOB|UENDI|AHABI|ADERE|CORDA|RAQUE|LLATA|RDERE|MOTAE|NQUES|

UPADR|ELOLL|EVOAC|ONOCE|RELHI|ELO

Observese que el texto acaba en un bloque de tres letras y no cinco. Podrıamos anadir algunoscaracteres al texto hasta completar el ultimo bloque, pero en la practica eso da algo de informacionsobre la longitud de la clave o parte de la permutacion usada. El procedimiento habitual es anadircualquier caracter repetido (una letra o espacios en blanco), aplicar la permutacion, y eliminarlos deltexto resultante; eso no compromete la seguridad del sistema y el receptor del mensaje sabe comorecuperar el texto original. Anadamos pues dos caracteres al final del texto, digamos la letra X. Portanto, el texto que vamos a cifrar es:

MUCHO|SA~NOS|DESPU|ESFRE|NTEAL|PELOT|ONDEF|USILA|MIENT|OELCO|RONEL|

AUREL|IANOB|UENDI|AHABI|ADERE|CORDA|RAQUE|LLATA|RDERE|MOTAE|NQUES|

UPADR|ELOLL|EVOAC|ONOCE|RELHI|ELOXX

Vamos a cifrar el primer bloque, MUCHO. Para ello debemos aplicar la permutacion k a estas letras,llevando la letra i-esima a la posicion k(i)-esima, es decir,

1 2 3 4 5

M U C H O

O H U M C

1 2 3 4 5

De esta forma, obtenemos OHUMC. Si hacemos esta operacion en cada bloque obtendremos

MUCHO SA~NOS DESPU ESFRE NTEAL PELOT ONDEF USILA MIENT OELCO

OHUMC SOAS~N UPEDS ERSEF LATNE TOEPL FENOD ALSUI TNIME OCEOL

RONEL AUREL IANOB UENDI AHABI ADERE CORDA RAQUE LLATA RDERE

LEORN LEUAR BOAIN IDEUN IBHAA ERDAE ADOCR EUARQ ATLLA ERDRE

MOTAE NQUES UPADR ELOLL EVOAC ONOCE RELHI ELOXX

EAOMT SEQNU RDPUA LLLEO CAVEO ECNOO IHERL XXLEO

En conclusion, nuestro texto cifrado queda como sigue:

OHUMCSOAS~NUPEDSERSEFLATNETOEPLFENODALSUITNIMEOCEOLLEORNLEUARBOAINIDEU

NIBHAAERDAEADOCREUARQATLLAERDREEAOMTSEQNURDPUALLLEOCAVEOECNOOIHERLLEO

Ejercicio 3.13. Descifra el siguiente texto, cifrado por una permutacion de longitud indeterminada.

b="LOOECRENCNLESTSEIOTNAEETCNOYIC~NSOAOLSTNSEEACNTYIO~NSCAOE

UIDSVAIUDMNOMNTAITPRUOALEAALGASIREESATNTNSSNEEIIPRTOUEPIOX

LIONCTIECBVNIENLLEEOETMMNDRSOEEODRPNEIRAMED"

Solucion. Lo primero que debemos observar es que nuestra querida ~N aparece en el texto, por loque suponemos que esta en espanol32. Para atacar este texto no nos sirve el analisis de frecuencias,

32Aunque podrıa ser el vasco, o el guaranı, o el wolof, o el...

46

Page 47: Teor a de C odigos y Criptograf a

por lo que debemos usar otra estrategia. En primer lugar intentaremos deducir la longitud de lapermutacion, que vamos a suponer que es un divisor de la longitud del texto (por el ejercicio anteriorsabemos que eso es mucho suponer, pero menos da una piedra), que denotaremos por l. Este textotiene 156 = 22 · 3 · 13 caracteres. La longitud 2 la descartamos por razones obvias. Si consideramosl = 3, entonces el texto queda dividido de la forma

LOO|ECR|ENC|NLE|STS|EIO|TNA|EET|CNO|YIC|~NSO|AOL|STN|SEE|ACN|TYI|O~NS|CAO

EUI|DSV|AIU|DMN|OMN|TAI|TPR|UOA|LEA|ALG|ASI|REE|SAT|NTN|SSN|EEI|IPR|TOU

EPI|OXL|ION|CTI|ECB|VNI|ENL|LEE|OET|MMN|DRS|OEE|ODR|PNE|IRA|MED

Si nos fijamos en la parte del texto que aparece en rojo vemos que con cualquier permutacion quepodamos considerar nos van a aparecer en el texto en claro seis consonantes seguidas (que no es muyusual que digamos en espanol), por lo que vamos a descartar esta longitud.

Si consideramos l = 4, tenemos que la division en bloques de nuestro texto queda como:

LOOE|CREN|CNLE|STSE|IOTN|AEET|CNOY|IC~NS|OAOL|STNS|EEAC|NTYI|O~NSC

AOEU|IDSV|AIUD|MNOM|NTAI|TPRU|OALE|AALG|ASIR|EESA|TNTN|SSNE|EIIP

RTOU|EPIO|XLIO|NCTI|ECBV|NIEN|LLEE|OETM|MNDR|SOEE|ODRP|NEIR|AMED

De nuevo, fijandonos en el texto marcado en rojo, en el descifrado nos aparecera una permutacionde la letras M, N, D y R. Como no se nos ocurre ninguna posible combinacion para estas letras que tengasentido en espanol, descartamos tambien esta longitud (hay que recordar que siempre podemos estarcometiendo un error, pues estamos deduciendo en funcion de la probabilidad, pero que la probabilidadsea ınfima no significa que no sea posible). Por tanto, vamos a suponer que la longitud es 6, el siguientedivisor mas pequeno de 156. Como antes, vamos a dividir el texto en bloques de longitud 6.

LOOECR|ENCNLE|STSEIO|TNAEET|CNOYIC|~NSOAOL|STNSEE|ACNTYI|O~NSCAO

EUIDSV|AIUDMN|OMNTAI|TPRUOA|LEAALG|ASIREE|SATNTN|SSNEEI|IPRTOU

EPIOXL|IONCTI|ECBVNI|ENLLEE|OETMMN|DRSOEE|ODRPNE|IRAMED

Vamos a considerar el bloque OETMMN. Si nos fijamos en las letras que aparecen podemos ver que unaposible (que no unica) combinacion es MOMENT y como en el siguiente bloque aparece una O, puede queno andemos muy mal desencaminados. Vamos a ver si tenemos razon y hemos ganado. Para calcularla clave de este sistema primero vamos a estudiar la permutacion inversa (que es la que necesitamospara descifrar) y a partir de ella daremos la clave. Vamos a ver como se permutan las letras en elbloque que hemos elegido.

1 2 3 4 5 6

O E T M M N

M O M E N T

1 2 3 4 5 6

Como tenemos dos M, tenemos dos posibilidades, sin embargo, si nos fijamos en el siguiente bloque,que hemos supuesto que empieza por O, tenemos que la cuarta posicion debe ir a la primera, por tanto,

47

Page 48: Teor a de C odigos y Criptograf a

nuestra permutacion debe ser:

1 2 3 4 5 6

O E T M M N

M O M E N T

1 2 3 4 5 6

Si traducimos este diagrama a una permutacion, tenemos que la clave inversa es

k−1 =

(1 2 3 4 5 62 4 6 1 3 5

),

y por tanto, la clave de este cifrado es

k =

(1 2 3 4 5 64 1 5 2 6 3

).

A continuacion, vamos a comprobar si nos hemos equivocado o no con nuestra clave. Debemos aplicark−1 a cada bloque. Vamos a ver el primero: LOOECR. Si le aplicamos k−1 tenemos

1 2 3 4 5 6

L O O E C R

E L C O R O

1 2 3 4 5 6

Si hacemos lo mismo con todos los bloques, podemos leer el siguiente texto (de nuevo, formateadopara facilitar la lectura):

EL CORONEL NECESITO SETENTA Y CINCO A~NOS -LOS SETENTA Y CINCO A~NOS DE SU VIDA,

MINUTO A MINUTO- PARA LLEGAR A ESE INSTANTE. SE SINTIO PURO, EXPLICITO,

INVENCIBLE, EN EL MOMENTO DE RESPONDER:

-MIERDA.

Ejercicio 3.14. Estudia que datos debıa contenter la clave de cifrado del modelo militar de Enigmaque esta descrito en los apuntes de teorıa. ¿Cuantas eran las posibles claves para ese modelo?

Solucion. Recordemos que el modelo militar de la maquina Enigma en cuestion constaba de:

� Cinco rotores. De ellos, se elegıan tres, que se les podıa hacer funcionar en el orden que sequisiera.

� Unos anillos que permitıan modificar el movimiento del segundo y el tercer rotor y tambien elpunto de inicio de la permutacion.

� Un tablero de pares de clavijas, normalmente habıa seis pares.

Entonces, la clave debıa contener los siguientes datos:

48

Page 49: Teor a de C odigos y Criptograf a

1. Los tres rotores elegidos, el orden en el que debıan funcionar y la posicion inicial de estos tresrotores.

2. Las posiciones de giro de los rotores II y III.

3. Los pares de clavijas que se usaban.

Vamos a calcular el numero de claves posibles para este cifrado con el alfabeto aleman basico, queconsta de 26 caracteres (obviamos, como ocurrıa en la maquina Enigma, los caracteres con dieresis A,O y U y la ligatura ß). Dividiremos el calculo en las partes antes descritas de la clave.

1. Debemos elegir los tres rotores entre los cinco que hay, por lo que tenemos(53

)posibilidades.

Ademas, existen 3! formas diferentes de ordenar los tres rotores. Por otro lado, tambien podemosdecidir la posicion inicial de los tres rotores. Como cada rotor tiene 26 letras, tenemos 263 posiblesposiciones iniciales. Multiplicando todo, tenemos

(53

)· 3! · 263 posibles combinaciones.

2. Debemos elegir las posiciones de giro de dos rotores, que no es mas que escoger dos letras (quepueden ser la misma) en un conjunto de 26 caracteres, por lo que hay 262 posibles posiciones degiro.

3. Vamos a suponer que hay n pares de clavijas. Primero debemos tomar 2n letras de nuestroalfabeto, para lo que hay

(262n

)combinaciones, y despues debemos elegir las parejas que se forman

entre ellas. Hay (2n − 1)(2n − 3) · . . . · 5 · 3 formas distintas de unir los pares de letras, por loque en esta parte tenemos

(262n

)((2n− 1)(2n− 3) · . . . · 5 · 3) posibilidades distintas.

En conclusion, tenemos un total de(5

3

)· 3! · 263 · 262

(26

2n

)((2n− 1)(2n− 3) · . . . · 5 · 3)

claves posibles.Por ejemplo, si consideramos seis pares de clavijas (que era lo estandar segun las notas de teorıa)

tenemos 71567557327506240000 posibles claves.

Ejercicio 3.15. Descifra el siguiente mensaje codificado en Enigma:

RFXLH PYIYW XGHHD CIJVR WVBXW RHMGB JIROE DLHWD JCLPS LIF

Las claves diarias utilizadas son:

� Rotores: 3-1-2

� Posicion de giro del rotor siguiente: 1-1-1

� Stecker pairs: AF WZ PR HL

� Posicion inicial de los rotores: F P W

Se recomienda usar el simulador de Enigma disponible en la pagina web de Bletchley Park33.

Solucion. La pagina web que aparece en estos ejercicios ha dejado de existir, por lo que no podemosusarla. Sin embargo podemos encontrar otros simuladores por el maravilloso (y a veces peligroso)mundo de internet. Por ejemplo, podemos usar el simulador que se encuentra en esta pagina, uno delos mas completos que existen.

33http://www.bletchleypark.org.uk/content/enigmasim.rhtm

49

Page 50: Teor a de C odigos y Criptograf a

Ahı nos encontramos con varias maquinas Enigma, de las que debemos escoger el modelo M3 (elque usaban los ejercitos de tierra y aire). Debemos usar el reflector C y tener en cuenta que la posicionde giro se introduce como letras, es decir, en este caso la posicion de giro es A-A-A. Si introducimostodos los datos en el simulador, obtenemos el siguiente mensaje (formateado como de costumbre):

TROPAS ALIADAS VISTAS CERCA DE ARLES. ACCION INMEDIATA. HH.

Ejercicio 3.16. Para reforzar la seguridad del sistema Enigma, los alemanes decidieron que no secifrarıa todo el texto con la clave del dıa. En lugar de eso, solo se cifrarıan las tres primeras letrasde cada mensaje, que se corresponderıan con una nueva posicion inicial de los rotores, con la que secifraba realmente el mensaje. Explica como esto aumentaba la seguridad del sistema 34.

Solucion. Antes de empezar, vamos a explicar un poco en que consistıa este procedimiento.Tenemos la clave del dıa, que consiste en los rotores elegidos, el orden y la posicion inicial de los

rotores, la posicion de giro y los pares de clavijas. Entonces, el encargado de cifrar los textos elegıauna posicion de giro de los rotores, por ejemplo C-F-D, y entonces tecleaba su eleccion con la maquinaconfigurada con la clave del dıa. En el enunciado pone una vez, pero el procedimiento habitual hastaseptiembre de 1938 era hacerlo dos veces para evitar errores de transmision (un ejemplo muy basicode codigo detector de errores). Ası, en nuestro ejemplo tecleaba dos veces CFD, con lo que se obtenıaRSMLTP, por ejemplo. El mensaje verdadero se cifraba entonces con la posicion de giro C-F-D y dichotexto cifrado se enviaba junto con el fragmento RSMLTP al principio.

Para descifrar el mensaje, se ponıa la maquina en la configuracion dada por la clave del dıa y sedescifraban las seis primeras letras del mensaje recibido, de forma que se obtenıa la posicion de girocon la que habıa sido cifrado el resto del mensaje. En nuestro caso, por tanto, aparecıa CFDCFD. Paradescifrar el resto del mensaje bastaba poner los anillos que controlaban el giro en la posicion C-F-D yteclear el texto.

La ventaja de este metodo es que en cada base militar se cifraba con una clave distinta, de formaque en principio era mucho mas difıcil encontrar la clave. Este procedimiento tenıa dos debilidades:la primera era que todos los mensajes enviados en el mismo dıa utilizaban la misma clave inicial,y por tanto el descifrado de uno solo podıa implicar el del resto. Por otro lado, los criptoanalistasaveriguaron esta costumbre, y ello les permitio establecer relaciones entre los caracteres primero ycuarto del texto, y de igual modo para los segundo y quinto y tercero y sexto, sabiendo que provenıandel mismo caracter original. Si para colmo algun operario usaba (casi) siempre la misma posicioninicial la estrategia era aun mas debil. (A veces se usaba la posicion final del mensaje anterior, quetampoco aportaba ninguna seguridad adicional.)

En septiembre de 1938, cuando las hostilidades iban aumentando, se cambio el protocolo por unomas seguro: en cada mensaje el operador elegıa una clave de mensaje y otra posicion inicial arbitraria,digamos XJW y P-C-A, respectivamente. Mandaba la posicion inicial PCA sin cifrar (para despistar),a continuacion cifraba su clave de mensaje XJW con la posicion P-C-A, y por ultimo el texto en sı conla clave XJW de su eleccion. El receptor del mensaje sabıa que el trıgrafo inicial era la posicion delos rotores necesaria para descifrar el siguiente grupo de tres caracteres, que le darıa a su vez, comoocurrıa con el procedimiento anterior, la clave de mensaje para descifrar el mensaje autentico.

Con este nuevo procedimiento se evitaba tanto usar una misma posicion inicial comun a todas lasestaciones como repetir la clave de mensaje, con lo que ambas debilidades desaparecıan. Eso sı, sinuevamente el operario de la estacion usaba muy frecuentemente los mismos tres caracteres iniciales

34Paradojicamente, este esquema supuso una debilidad por el uso habitual de ciertas claves de mensaje (generalmentevulgarismos o nombres personales). Explica como una eleccion inadecuada de claves de mensaje hacen que este pro-cedimiento se convierta en un gran fallo de seguridad que compromete todo el sistema a partir del error de una unicaestacion.

50

Page 51: Teor a de C odigos y Criptograf a

o combinaciones triviales, del estilo de AAA, BBB o caracteres ubicados en lınea recta en el teclado, lacoincidencia levantaba las sospechas de los equipos de descifrados, que podıan deducir en que consistıael protocolo y nuevamente descifrar todos los mensajes cifrados del mismo modo, cosa que finalmentehicieron.

Estas claves mal elegidas es lo que llamaban “cillies” en Bletchley Park (por Cilly, la novia deuno de los operadores alemanes, que casi siempre la recordaba al enviar un mensaje). Lo que hemosrelatado se aplico hasta julio de 1937 a todo el ejercito aleman, pero a partir de entonces la marinacomenzo a usar un metodo bastante mas intrincado y seguro, que se fue modificando hasta 1940,cuando se anadieron los ultimos rotores, hasta un total de ocho. Algunos pocos mensajes, de hecho,siguen sin haberse descifrado, a pesar de los intentos mediante computacion distribuida.

14 de mayo: Cifrados actuales (Feistel y DES) y generalidades

Ejercicio 3.18. Suponemos que ciframos en bloques de 64 bits y con claves de 32 bits. Describeexplıcitamente un cifrado iterado de Feistel con tres aplicaciones, donde la funcion F sea simplemente

F (k, r) = σ(k ⊕ r),

donde σ es la operacion que permuta los 16 primeros bits con los 16 ultimos.

Solucion. Recordemos que una ronda de Feistel se compone de tres pasos:

1. Dividir el mensaje m =[l∣∣r] en dos mitades. En este caso cada mitad tendra 32 bits.

2. Calcular F (k, r), donde k es nuestra clave que, en general, cambia en cada ronda.

3. El mensaje cifrado es M = [r|l ⊕ F (k, r)].

Consideramos el mensaje m =[l∣∣r], donde cada bloque tiene 32 bits. Calcularemos las tres rondas

de Feistel usando tres claves que denotaremos k, k′ y k′′, una en cada paso.Debido a la permutacion σ que esta presente en la funcion F vamos a dividir l, r y las k(i) en

bloques de 16 bits. Por ejemplo, escribiremos la clave k de la forma k = [k1|k2] y el mensaje en textoclaro sera m =

[l1|l2

∣∣r1|r2].∗ Primera ronda de Feistel

Debemos realizar los tres pasos que hemos especificado antes. Como ya hemos dividido m en susdos mitades, vamos a calcular F (k, r):

F (k, r) = σ(k ⊕ r) = σ([k1 ⊕ r1|k2 ⊕ r2]) = [k2 ⊕ r2|k1 ⊕ r1] .

Es preciso recordar que ⊕ indica la suma sin llevada, por lo que 1⊕ 1 = 0⊕ 0 = 0 y 1⊕ 0 = 0⊕ 1 = 1.Nuestro mensaje cifrado con solo una ronda de Feistel es M = [L|R], siendo L = r y R = l⊕F (k, r) =[l1 ⊕ k2 ⊕ r2|l2 ⊕ k1 ⊕ r1]. Por tanto, si dividimos M en bloques de 16 bits para la siguiente ronda deFeistel, podemos escribir

M = [r1|r2|l1 ⊕ k2 ⊕ r2|l2 ⊕ k1 ⊕ r1] .

∗ Segunda ronda de Feistel

Debemos cifrar el texto M con la clave k′ = [k′1|k′2]. Hallemos F (k′, R):

F (k′, R) = σ(k′⊕R) = σ([k′1 ⊕ l1 ⊕ k2 ⊕ r2|k′2 ⊕ l2 ⊕ k1 ⊕ r1

]) =

[k′2 ⊕ l2 ⊕ k1 ⊕ r1|k′1 ⊕ l1 ⊕ k2 ⊕ r2

].

51

Page 52: Teor a de C odigos y Criptograf a

Por tanto, despues de esta ronda obtenemos M ′ = [L′|R′], con L′ = R y R′ = L ⊕ F (k′, R), o dichode otro modo,

R′ =[r1 ⊕ k′2 ⊕ l2 ⊕ k1 ⊕ r1|r2 ⊕ k′1 ⊕ l1 ⊕ k2 ⊕ r2

]=

[k′2 ⊕ l2 ⊕ k1|k′1 ⊕ l1 ⊕ k2

],

donde hemos usado que a ⊕ a = 0 para todo bloque a. Ası, nuestro mensaje cifrado con dos rondasde Feistel es

M ′ =[l1 ⊕ k2 ⊕ r2|l2 ⊕ k1 ⊕ r1|k′2 ⊕ l2 ⊕ k1|k′1 ⊕ l1 ⊕ k2

].

∗ Tercera ronda de Feistel

Para esta ronda nuestra clave sera k′′ = [k′′1 |k′′2 ]. Siguiendo los mismos pasos que en las rondasanteriores, F (k′′, R′) = σ(k′′ ⊕R′) se puede escribir como

σ([k′′1 ⊕ k′2 ⊕ l2 ⊕ k1|k′′2 ⊕ k′1 ⊕ l1 ⊕ k2

]) =

[k′′2 ⊕ k′1 ⊕ l1 ⊕ k2|k′′1 ⊕ k′2 ⊕ l2 ⊕ k1

]Por consiguiente,

L′ ⊕ F (k′′, R′) =[l1 ⊕ k2 ⊕ r2 ⊕ k′′2 ⊕ k′1 ⊕ l1 ⊕ k2|l2 ⊕ k1 ⊕ r1 ⊕ k′′1 ⊕ k′2 ⊕ l2 ⊕ k1

]=

[r2 ⊕ k′′2 ⊕ k′1|r1 ⊕ k′′1 ⊕ k′2

].

En conclusion, nuestro mensaje cifrado es

M ′′ =[R′|L′ ⊕ F (k′′, R′)

]=

[k′2 ⊕ l2 ⊕ k1|k′1 ⊕ l1 ⊕ k2|r2 ⊕ k′′2 ⊕ k′1|r1 ⊕ k′′1 ⊕ k′2

]= [σ(l)⊕ k ⊕ σ(k′)|σ(r)⊕ k′ ⊕ σ(k′′)] = [σ(l ⊕K)|σ(r ⊕K ′)],

donde K := k ⊕ σ(k′) y K ′ := k′ ⊕ σ(k′′).

Ejercicio 3.19. Como DES cifra en bloques de 64 bits, en la practica, un bloque cifra un texto de 8caracteres ASCII (imprimibles o no). Cifra el mensaje RIJNDAEL tomando como clave (de 56 bits, osea, 7 caracteres ASCII) FEISTEL. Se recomienda disponer de bastante tiempo por delante.

Solucion. Lo primero que debemos hacer es pasar nuestro mensaje m = RIJNDAEL y nuestra clavek = FEISTEL a caracteres ASCII. Para ello, solo tenemos que buscar el codigo que tiene asignado cadaletra en el codigo ASCII. Por ejemplo, la letra R es 01010010. Si hacemos esto con todas las letras,nuestro mensaje es

m = 01010010|01001001|01001010|01001110|01000100|01000001|01000101|01001100.

(Nos hemos tomado la libertad de anadir las barras para distinguir cada letra, pero obviamente noforman parte del mensaje.) Igualmente, nuestra clave es

k = 01000110|01000101|01001001|01010011|01010100|01000101|01001100.

El cifrado DES tiene dos partes fundamentales: el calculo de las claves de cada ronda basica deFeistel y el cifrado del mensaje en sı; vamos a calcular primero las claves de cifrado.

∗ Calculo de las claves para la ronda de Feistel

En esta parte hay cuatro pasos fundamentales que iremos haciendo poco a poco.

1. Cada siete bits se intercala un bit de paridad, de forma que obtenemos 64 bits.

52

Page 53: Teor a de C odigos y Criptograf a

Lo que tenemos que hacer en este paso es dividir la clave k en bloques de siete bits

k = 0100011|0010001|0101001|0010101|0011010|1010001|0001010|1001100.

Ahora, detras de cada uno de estos bloques anadimos el bit de paridad, es decir, la suma de los sietebits anteriores modulo 2, de forma que obtenemos

k′ = 0100011100100010010100110010101100110101101000110001010010011001,

donde los bits rojos representan los bits de paridad que hemos anadido.

2. Aplicamos la permutacion (PC−1), de modo que obtenemos (PC−1)(k′) de 56 bits (descartandolos bits de paridad).

La permucion (PC − 1) viene dada por la siguente tabla, que se lee por filas:

PC − 1

57 49 41 33 25 17 91 58 50 42 34 26 1810 2 59 51 43 35 2719 11 3 60 52 44 3663 55 47 39 31 23 157 62 54 46 38 30 2214 6 61 53 45 37 2921 13 5 28 20 12 4

En la primera posicion de (PC − 1)(k′) debemos colocar el bit 57 de k′:

k′ =01000111001000100101001100101011001101011010001100010100571O0011001

(PC − 1)(k′) =1

Ahora, en la segunda posicion debemos colocar el bit 49:

k′ =010001110010001001010011001010110011010110100011490O001010010011001

(PC − 1)(k′) =10

Y proseguimos analogamente. Al final obtenemos que

(PC − 1)(k′) = 10100000000001010011101011010010111101010001100010000100.

3. Se divide (PC − 1)(k′) en dos mitades [c0|d0] de 28 bits cada una y, dependiendo de la ronda enla que nos encontremos, debemos ciclar hacia la izquierda un numero determinado de bits.

53

Page 54: Teor a de C odigos y Criptograf a

En este paso, para cada ronda, debemos calcular dos bloques de 28 bits cada uno, que denotaremosci y di para i = 1, . . . , 16. Estos bloques se obtienen de ci−1 y di−1 respectivamente, ciclando a laizquierda el numero de veces que le corresponde a cada ronda. Este numero esta recogido en lasiguiente tabla:

1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª 11ª 12ª 13ª 14ª 15ª 16ª1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

Vamos a calcular c1 y d1. Para ello, debemos dividir (PC − 1)(k′) = [c0|d0] en dos bloques c0 yd0 de 28 bits, es decir, los primeros 28 bits de (PC − 1)(k′) forman c0 y el resto d0. En nuestro caso,estos bloques son

c0 = 1010000000000101001110101101 y d0 = 0010111101010001100010000100.

Como estamos en la primera ronda, segun la tabla debemos ciclar c0 y d0 una vez a la izquierda, esdecir, pasamos el primer bit a la ultima posicion y el i-esimo bit a la posicion i− 1:

c0 = 1←−−−−−−−−−−−−−−−−−−−−−−−010000000000101001110101101⇒ c1 = 0100000000001010011101011011

d0 = 0←−−−−−−−−−−−−−−−−−−−−−−−010111101010001100010000100⇒ d1 = 0101111010100011000100001000

Si hacemos esta operacion 15 veces mas ciclando siempre el numero de bits correspondiente en cadaetapa, hallamos los ci y di para i = 1, . . . , 16:

i ci di1 0100000000001010011101011011 0101111010100011000100001000

2 1000000000010100111010110110 1011110101000110001000010000

3 0000000001010011101011011010 1111010100011000100001000010

4 0000000101001110101101101000 1101010001100010000100001011

5 0000010100111010110110100000 0101000110001000010000101111

6 0001010011101011011010000000 0100011000100001000010111101

7 0101001110101101101000000000 0001100010000100001011110101

8 0100111010110110100000000001 0110001000010000101111010100

9 1001110101101101000000000010 1100010000100001011110101000

10 0111010110110100000000001010 0001000010000101111010100011

11 1101011011010000000000101001 0100001000010111101010001100

12 0101101101000000000010100111 0000100001011110101000110001

13 0110110100000000001010011101 0010000101111010100011000100

14 1011010000000000101001110101 1000010111101010001100010000

15 1101000000000010100111010110 0001011110101000110001000010

16 1010000000000101001110101101 0010111101010001100010000100

4. Una vez obtenidos ci y di, se juntan para formar [ci|di], que tiene 56 bits. Se le aplica lapermutacion (PC − 2) que reordena cada bloque y descarta los bits en las posiciones 9, 18, 22,25, 35, 38, 43 y 54, obteniendo la clave ki de 48 bits.

Al igual que la permutacion (PC − 1) (y en realidad, todas las que aparecen en este ejercicio), lapermutacion (PC − 2) es conocida y esta determinada por la siguiente tabla

54

Page 55: Teor a de C odigos y Criptograf a

PC − 2

14 17 11 24 1 53 28 15 6 21 1023 19 12 4 26 816 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 32

De nuevo, esta tabla (y todas las de permutaciones que aparecen) se lee por filas. Ası, en el primerbit de la salida ponemos el bit 14 de la entrada. En el siguiente paso buscamos el bit 17 y lo ponemosen la segunda posicion y ası sucesivamente hasta completar todos los bits.

Haciendo esto para cada par [ci|di] con i = 1, . . . , 16 tenemos que las claves son:

CLAVES

k1 =000100011000010000001111000100100011101011000001

k2 =110110000010111010001000011010000010000010010111

k3 =010100001011011000101000101001110100000010001111

k4 =110000001001110001000110000001100001001111000011

k5 =011000001110101001000110100101101000000101100101

k6 =001000001111010100100010010000101000111111000000

k7 =111000000000010101110011010110001010010100011001

k8 =111001011100001000010001011010110101010000001000

k9 =101011000101000101101010000010101001111011100010

k10 =101000100100001101001001000111001100110100110001

k11 =000010010101101100010001000010110100110001010000

k12 =000001010011100111011001110010011110000100010000

k13 =000101110110010011000001101000010100011000001100

k14 =010110110100110110000000110110000001001010000110

k15 =010110001010000110001101100101000100001010101101

k16 =100010110010110010100100001000010110110010000100

Con esto hemos terminado una de las partes fundamentales que hemos comentado al prinpicio delejercicio. Ahora nos queda la segunda, el cifrado del mensaje.

∗ Cifrado del mensaje

Recordemos que nuestro mensaje es

m = 0101001001001001010010100100111001000100010000010100010101001100

(que significaba RIJNDAEL). Como antes, vamos a seguir los pasos que nos marca la teorıa.

1. Aplicamos la permutacion inicial a m, obteniendo IP (m).

Recordamos que la permutacion inicial viene dada por la tabla

55

Page 56: Teor a de C odigos y Criptograf a

IP

58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 7

Como anteriormente, esta tabla se lee por filas. Ası, esta permutacion pone el bit 58 de m en laposicion 1, el bit 50 en la posicion 2 y ası sucesivamente. Por tanto, muestro mensaje, despues deaplicar la permutacion IP es

IP (m) = 1111111100000001110110000110001000000000000000001000111000001101.

2. Realizamos las 16 rondas basicas de Feistel, obteniendo M16.

Este apartado consta de varios pasos; para ilustrarlos iremos haciendo los calculos que debemoshacer en la primera ronda basica, es decir, vamos a aplicar a IP (m) un cifrado de Feistel con la clavek1.

En general, supongamos que hemos acabado de hacer la ronda i − 1-esima, con 1 ≤ i ≤ 16,obteniendo Mi−1 que tiene 64 bits (llamando M0 = IP (m)). Para hacer la ronda i-esima, debemosdar los siguientes pasos:

a. Dividimos el mensaje Mi−1 en dos mitades Mi−1 = [li−1|ri−1] de 32 bits y aplicamos la per-mutacion E a ri−1, que lo extiende hasta 48 bits a base de repetir algunos de ellos.

La permutacion E viene dada por la siguiente tabla y se lee exactamente igual que las anteriores:

E

32 1 2 3 4 54 5 6 7 8 98 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 1

Siguiendo las instrucciones que tenemos, vamos a dividir IP (m) en dos bloques:

IP (m) = 11111111000000011101100001100010︸ ︷︷ ︸l1

| 00000000000000001000111000001101︸ ︷︷ ︸r1

.

Ahora debemos aplicar la permutacion E a r1, es decir, el bit 32 se pone en la posicion 1, el bit 1 enla posicion 2, etc:

E(r1) = 100000000000000000000001010001011100000001011010.

b. Calculamos ki ⊕ E(ri).

56

Page 57: Teor a de C odigos y Criptograf a

En nuestro caso, como estamos en la primera ronda, debemos usar k1. Para sumar k1 con E(r1)vamos sumando los bits que se encuentran en la misma posicion. Recuerdese que esta suma, al ser sinllevada, esta definida como 0⊕ 0 = 1⊕ 1 = 0, 0⊕ 1 = 1⊕ 0 = 1.

000100011000010000001111000100100011101011000001 = k1⊕ 100000000000000000000001010001011100000001011010 = E(r1)

= 100100011000010000001110010101111111101010011011 = k1 ⊕ E(r1)

c. Los 48 bits resultantes de esta suma se distibuyen en grupos de 6 y se “introducen” en 8 S-cajas,de cada una de las cuales salen 4 bits, es decir, obtenemos un total de 32 bits.

Llamaremos r′i a los 32 bits resultantes de esta operacion. Lo primero vamos a dividir k1 ⊕ E(r1)es 8 bloques de 6 bits:

k1 ⊕ E(r1) =

1︷ ︸︸ ︷100100

2︷ ︸︸ ︷|011000 |

3︷ ︸︸ ︷010000 |

4︷ ︸︸ ︷001110 |

5︷ ︸︸ ︷010101 |

6︷ ︸︸ ︷111111 |

7︷ ︸︸ ︷101010 |

8︷ ︸︸ ︷011011

Vamos a ver el funcionamiento de las S-cajas. Para ello debemos seguir los siguientes pasos (sehace igual en todos los bloques y en todas las rondas):

Paso 1. Los bits 1 y 6 del bloque de 6 bits se juntan formando un numero en binario que representa aun entero entre 0 y 3, al cual le sumamos 1. Los bits 2,3,4,5 se juntan para formar otro numeroen binario, que en este caso, representa a un entero entre 0 y 15 al cual, al igual que antes, lesumamos 1. Con estos numeros formamos el par (f, c).

En nuestro caso, vamos a considerar el primer bloque 100100 de k1⊕E(r1). El primer bit es un1 y el sexto un 0, por lo que tenemos 102, que representa al 2. A este numero le sumamos 1, conlo que obtenemos que f = 3. Ahora debemos considerar el bloque central de los 6 bits, es decir,00102. En este caso vuelve a representar al 2, por lo que c = 3 y tenemos el par (3, 3).

Paso 2. Si nuestro bloque de seis bits es el l-esimo bloque de ki ⊕ E(ri), nos vamos a la S-caja Sl ybuscamos el numero que se encuentra en la posicion (f, c). Todas las entradas son enteros entre0 y 15. Las cifras de este entero en base 2 seran los cuatro bits de salida.

Si volvemos a nuestro ejemplo, como estamos calculando el bloque primero debemos ir a la cajaS1 y mirar el numero que se encuentra en la posicion (3, 3).

↓14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 70 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8

→ 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 015 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

Ahora, expresamos el 14 en binario, que es 11102. Esa es nuestra primera salida, es decir,r′1 = 1110 . . .. Si hacemos esta operacion con todos los bloques de k1 ⊕ E(r1), cada uno con surespectiva S-caja, obtenemos que

r′1 = 1110|1100|0001|1010|1111|1101|0011|1110

(las barras, que no forman parte de r′1, las ponemos para indicar cual es el resultado de hacereste paso en cada S-caja).

57

Page 58: Teor a de C odigos y Criptograf a

A continuacion, damos las ocho S-cajas necesarias para este proceso:

S1

14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 70 15 7 4 14 2 13 1 10 6 12 11 9 5 3 84 1 14 8 13 6 2 11 15 12 9 7 3 10 5 015 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

S2

15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 103 13 4 7 15 2 8 14 12 0 1 10 6 9 11 50 14 7 11 10 4 13 1 5 8 12 6 9 3 2 1513 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

S3

10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 813 7 0 9 3 4 6 10 2 8 5 14 12 11 15 113 6 4 9 8 15 3 0 11 1 2 12 5 10 14 71 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

S4

7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 1513 8 11 5 6 15 0 3 4 7 2 12 1 10 14 910 6 9 0 12 11 7 13 15 1 3 14 5 2 8 43 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

S5

2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 914 11 2 12 4 7 13 1 5 0 15 10 3 9 8 64 2 1 11 10 13 7 8 15 9 12 5 6 3 0 1411 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

S6

12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 1110 15 4 2 7 12 9 5 6 1 13 14 0 11 3 89 14 15 5 2 8 12 3 7 0 4 10 1 13 11 64 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

S7

4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 113 0 11 7 4 9 1 10 14 3 5 12 2 15 8 61 4 11 13 12 3 7 14 10 15 6 8 0 5 9 26 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

S8

13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 71 15 13 8 10 3 7 4 12 5 6 11 0 14 9 27 11 4 1 9 12 14 2 0 6 10 13 15 3 5 82 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

d. Aplicamos la permutacion P a los 32 bits que salen de las 8 S-cajas, es decir, a r′i.

58

Page 59: Teor a de C odigos y Criptograf a

La permutacion P es

P

16 7 20 2129 12 28 171 15 23 265 18 31 102 8 24 1432 27 3 919 13 30 622 11 4 25

Puesto que esta tabla funciona exactamente igual que el resto de tablas del criptosistema, yasabemos como realizar esta operacion. De esta forma obtenemos que

P (r′1) = 00111111110011101010011011111000.

e. Calculamos Mi = [ri|l1 ⊕ P (r′i)].

En nuestro caso, recordamos que

l1 = 11111111000000011101100001100010 y r1 = 00000000000000001000111000001101.

Realizando la suma sin llevada como ya hemos visto en anteriores ocasiones, tenemos que

M1 = 00000000000000001000111000001101︸ ︷︷ ︸r1

11000000110011110111111010011010︸ ︷︷ ︸l1⊕P (r′1)

Con esto hemos terminado la primera ronda de Feistel. Para la segunda ronda tomamos M1 = [l2|r2],donde l2 = r1 y r2 = l1 ⊕ P (r′1). Como se puede comprobar, este proceso, aunque largo, es bastanteautomatico, por lo que vamos a omitir las cuentas que se realizan para las siguientes 15 rondas deFeistel35. Al final, despues de las 16 rondas obtenemos (si no nos hemos equivocado),

M16 = 1000111011101001110100101011100011100001010010101001011001011111

Ojo, aun no hemos terminado, nos falta el ultimo paso.

3. Aplicamos a M16 la permutacion final FP , que es la inversa de la permutacion inicial, y obten-emos el mensaje cifrado M = FP (M16).

La tabla que representa a esta permutacion es la siguiente y funciona exactamente igual que lasanteriores (nada sorprendente):

FP

40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25

35Que le vamos a hacer...

59

Page 60: Teor a de C odigos y Criptograf a

En conclusion, nuestro mensaje cifrado es

M = 1001001001101110010010100111001100001111100100011011011011011101,

y por fin hemos concluido.

Ejercicio 3.21. Alfredo, un informatico, decide usar un cifrado de rondas de Feistel con solo tresrondas. Pero ademas decide que puede hacer las rondas sencillas, eligiendo F (k, r) = k ⊕ r.

1. Calcula el resultado de hacer tres rondas de Feistel sobre un mensaje m = [l|r].

2. Demuestra que con una unica pareja (texto en claro, texto cifrado) un atacante puede falsificary descifrar cualquier mensaje.

Solucion.

1) Debemos realizar tres rondas basicas de Feistel. En cada ronda utilizaremos las claves k, k1y k2 distintas entre sı36. Recordemos que una ronda de Feistel esta constituida por tres pasosesenciales:

a. Dividimos el mensaje en dos mitades m = [l|r].b. Calculamos F (k, r), siendo k la clave.

c. Hallamos M = [r|l ⊕ F (k, r)].

Vamos a comenzar a realizar los calculos.

∗ Primera ronda de Feistel

Basta aplicar la definicion de F dada por el enunciado: el cifrado de m con una ronda de Feisteles M1 = [r|l ⊕ r ⊕ k].

∗ Segunda ronda de Feistel

En este paso, ciframos M1 con la clave k1. En primer lugar dividimos el mensaje M1 = [l1|r1]donde l1 = r y r1 = l ⊕ r ⊕ k, y despues calculamos

F (k1, r1) = r1 ⊕ k1 = l ⊕ r ⊕ k ⊕ k1.

Por consiguiente,

M2 = [r1|l1 ⊕ F (k1, r1)] = [l ⊕ r ⊕ k|r ⊕ l ⊕ r ⊕ k ⊕ k1] = [l ⊕ r ⊕ k|l ⊕ k ⊕ k1].

∗ Tercera ronda de Feistel

En esta ronda, usamos M2 = [l2|r2] con la clave k2. Si miramos M2 en el paso anterior, tenemosque l2 = l ⊕ r ⊕ k y r2 = l ⊕ k ⊕ k1. Por tanto,

F (k2, r2) = l ⊕ k ⊕ k1 ⊕ k2

Finalmente, el mensaje cifrado es

M = [r2|l2 ⊕ F (k2, r2)] = [l ⊕ k ⊕ k1|l ⊕ r ⊕ k ⊕ l ⊕ k ⊕ k1 ⊕ k2]= [l ⊕ k ⊕ k1|r ⊕ k1 ⊕ k2] = m⊕ [k ⊕ k1|k1 ⊕ k2].

36Instamos a nuestros lectores a que, despues de leer la solucion, piensen que sucederıa si k = k1 = k2

60

Page 61: Teor a de C odigos y Criptograf a

2) Supongamos que tenemos un mensaje en claro m = [l|r] de Alfredo y su cifrado M = [L|R].Puesto que sabemos el funcionamiento del sistema que se ha utilizado para cifrar, tenemos queM = m ⊕ K, con K = [k ⊕ k1|k1 ⊕ k2] y k, k1 y k2 son las claves que se han usado. Comoconocemos m, podemos hallar K =M ⊕m.

Ahora es inmediato descifrar cualquier mensaje de Alfredo. Supongamos que hemos interceptado(por medios que no vamos a desvelar) un mensaje de este infomatico M ′ cuyo mensaje en textoclaro vamos a denotar m′. Como ya sabemos, M ′ = m′ ⊕K (suponiendo que no ha cambiandolas claves). Por tanto, para hallar el mensaje basta hacer M ′ ⊕ (M ⊕m) =M ′ ⊕K = m′.

Por ultimo, podemos suplantar la identidad de Alfredo falsificando cualquier mensaje: si quer-emos hacer llegar a alguien el mensaje m′ cifrado con las claves de Alfredo basta calcularm′ ⊕ (M ⊕m) = m′ ⊕K y nadie podrıa darse cuenta de esta falsificacion.

Ejercicio 3.30. Un informatico disena un nuevo criptosistema dividiendo el texto en claro en bloquesde 8 bits y cifrando cada bloque b del modo siguiente: genera aleatoriamente una cadena c de 8 bitsy obtiene como texto cifrado el resultado de concatenar los bits de b⊕ c con los de c e interpretar elresultado como un caracter unicode de 16 bits. Justificar cual de las siguientes afirmaciones es masacertada sobre la seguridad del criptosistema:

� Es muy seguro ya que la clave es tan larga como el mensaje y siempre se genera aleatoriamente.

� Tiene secreto perfecto puesto que en realidad se trata de un cifrado de un solo uso.

� Es muy debil porque basta conocer el algoritmo utilizado para recuperar el texto en claro apartir del texto cifrado.

� Es un nuevo criptosistema que requiere que pase una baterıa de pruebas suficiente, pero enprincipio es muy seguro.

Solucion. Tenemos un texto en claro dividido en bloques de 8 bits, se genera una clave aleatoria c de8 bits y consideramos el bloque de 16 bits [b⊕ c|c].

Veamos ahora el descifrado. Que recibamos el mensaje en formato Unicode es irrelevante, porquecada caracter se corresponde de manera unıvoca con un bloque de 16 bits concreto. Centremonos enun unico bloque de 16 bits, dividiendolo en dos de 8 bits de la forma [d|e]. Sabemos por construccion,que [d|e] es de la forma [b⊕ c|c] para dos palabras b y c de ocho bits, ası que e = c es la clave aleatoriausada para cifrar ese bloque. Como sabemos que d = b⊕ c, basta con realizar la operacion d⊕ c = bpara conseguir el mensaje original.

En conclusion, la afirmacion correcta es la tercera, ya que el texto original se puede recuperar sinesfuerzo alguno a partir del cifrado.

Ejercicio 3.35. (Claves debiles del DES). Una clave k del criptosistema DES se llama debilo semidebil si Ek(Ek(x)) = x. Esto ocurre, por ejemplo, si las 16 claves de ronda son iguales:k1 = k2 = . . . =16. En este caso se llaman debiles, y en este ejercicio vamos a dar ejemplos de dichotipo de claves37. Consideremos las siguientes claves de 64 bits (incluyendo los bits de paridad):

e1 = 0000000100000001000000010000000100000001000000010000000100000001

e2 = 1111111011111110111111101111111011111110111111101111111011111110

e3 = 1110000011100000111000001110000011110001111100011111000111110001

e4 = 0001111100011111000111110001111100001110000011100000111000001110.

37De hecho las cuatro que incluimos son las claves debiles que hay en el criptosistema DES, salvo bits de paridad.Como dichos bits no aportan informacion ni grados de libertad, estamos hablando de 4 claves de 256 posibles.

61

Page 62: Teor a de C odigos y Criptograf a

Para cada una de las claves ei, calcula:

1. Las mitades c0 y d0 del algoritmo key schedule del DES.

2. Demuestra que a partir de este punto, el key schedule es predecible y calcula el resto de lasclaves. ¿Es ei una clave debil para el DES?

Solucion.

1) Sea i = 1, . . . , 4. Para hallar c0 y d0 debemos aplicar la permutacion (PC − 1) a la clave ei ydividir el resultado en dos mitades de 28 bits. (Ver la tabla correspondiente en el ejercicio 19.)De esta forma obtenemos:

c0 d0e1 0000000000000000000000000000 0000000000000000000000000000

e2 1111111111111111111111111111 1111111111111111111111111111

e3 1111111111111111111111111111 0000000000000000000000000000

e4 0000000000000000000000000000 1111111111111111111111111111

2) Recordamos que una vez hallados c0 y d0, el siguiente paso para hallar las claves es ciclar, es decir,si hemos conseguido cj−1 y dj−1, tenemos que cj y dj se obtienen de cj−1 y dj−1, respectivamente,ciclando a la izquierda un numero determinado en cada ronda. De ahı obtenemos nuestras clavesde cada ronda, que son38 kj = (PC − 2)([cj |dj ]).En los casos que nos da el ejercicio, tenemos que cj = c0 y dj = d0 para todo j = 1, . . . , 16 deforma obvia, esto es, para todo j = 1, . . . 16 tenemos que

cj dje1 0000000000000000000000000000 0000000000000000000000000000

e2 1111111111111111111111111111 1111111111111111111111111111

e3 1111111111111111111111111111 0000000000000000000000000000

e4 0000000000000000000000000000 1111111111111111111111111111

Veamos por que. Si nuestra clave inicial es e1 o e2 esta claro que todas las claves de ronda vana ser kj = [cj |dj ] = [c0|d0] con j = 1, . . . , 16. Y si nuestra clave inicial es e3 o e4, tambien, perotenemos que mirar un poco la permutacion (PC − 2):

PC − 2

14 17 11 24 1 53 28 15 6 21 1023 19 12 4 26 816 7 27 20 13 2

41 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 32

Fijemonos en las cuatro primeras y las cuatro ultimas filas de la tabla. Solo aparecen, respectiva-mente, numeros del 1 al 28 y del 29 al 56, es decir, PC−2 reordena los bits del bloque izquierdo,

38Aquı viene un buen diagrama explicando como funciona el algoritmo.

62

Page 63: Teor a de C odigos y Criptograf a

cj , y del derecho, dj , sin mezclarlos. Por tanto, en nuestros ejemplos las claves siempre serankj = [cj |dj ] = [c0|d0] para j = 1, . . . , 16.

En conclusion, e1, e2, e3 y e4 son claves debiles para el DES, pues todas las claves de rondageneradas a partir de ellas son la misma.

Ejercicio 3.17. Un ataque de texto escogido o chosen plaintext attack se basa en la hipotesis deque en un determinado texto cifrado aparece una palabra para intentar deducir la clave, como en losejercicios 7 y 8. Razona en que tipo de cifrado (de los estudiados en este tema) es mas eficaz esteataque. En Bletchley Park se utilizo fundamentalmente sobre mensajes cifrados que incluıan partesmeteorologicos y sobre las ultimas palabras de los mensajes.

Solucion. Obviamente tener una parte del mensaje en claro siempre nos puede venir bien. Sin embargo,hay algunos cripstosistemas en los que es mas util que otros, bien porque existen otros metodos deataque mas eficaces o bien porque aunque tengamos esta parte en claro no nos sirva de nada paradeducir la clave.

En los criptosistemas de sustitucion y de Vigenere, el analisis de frecuencia o el metodo de Kasiskies un ataque mejor que el de texto escogido; esto no quiere decir que si tenemos un texto en clarono nos ayude a atacar estos tipos de criptosistemas, pero el texto deberıa ser largo, para cubrir unaparte significativa de los caracteres posibles en el primer caso o acercarse a la longitud de la clave enel segundo (si alguna de estas condiciones se cumplen, el ataque es muy efectivo, por supuesto). Sino, la dificultad depende de muchas cosas (longitud del texto, donde se encuentra el texto claro queconocemos...). En el cifrado de un solo uso tampoco nos sirve de nada pues no vamos a poder deducirla clave en general.

Uno de los criptosistemas en el que puede ser util este ataque es el de permutacion pues si lapermutacion es muy larga, aunque dicho cifrado es casi indescifrable, si tenemos un parte del texto enclaro, bastarıa (este “bastarıa” es bastante relativo) encontrar el grupo de letras que forman el textoen claro en el texto cifrado, lo que nos darıa al menos una parte de la permutacion, reduciendo ası elnumero de posibles claves.

Otra familia de criptosistemas en la que es de gran utilidad es la de los cifrados afines (englobandoal unidimensional, el de Cesar o el de Hill, por las razones que se dan en el ejercicio 7 de esta relacion).Conocer una parte del texto puede proporcionarnos informacion sobre la clave, como vimos en dichoejercicio y en el 8 y vamos a ver a continuacion.

Ejercicio 3.20. Descifrar el siguiente texto, escrito originalmente en ingles, que ha sido cifradocon un codigo desconocido:

RQZERJIBRMNEOMRJZCQQBEMIRVJHZRZBJIRNXQHHIPCDEQHVBRQPBYBHLEQVRQZCRQBRQXHYHPB

TERRNCKPHRQIBPXRRMZHPHDHYBTERMELHXHIBHXQHMIHPHAHQCRJIREMIRVME~NPRPRZQHNHXBPZ

BNCVHOXBPZBMIENDPRXBPBDQCKHZCBJQQBPHQCNXCBVRZEQXHMRSIRJEHVBGHMIHTERRQMERFBQ

BVRMZHQC~NCZHEMIRVHNHMRIPHJM~NCKEPHOHNHXBPEJHRIRPJCVHVIHJXPBACMBPCHTERGHMIHRQ

BPKEQQBMRQRAERQARICRPJBORQZBPHLBJXPB~NRICZBMRZBJACRPIRRJRMZBNDPBMEMIRVHXPRJV

ROEMHQBHXPRJVCVBXHPHABQARPMRQRJIHNRJIRMHDCBXHPHMHDRPTERHQ~NCJRQNEJVBRMRMIBRJ

MENRYBPNBNRJIBEJHJBMIHQKCHRJMEXRBPNBNRJIBEJVRMHNXHPBOMCRNXPRMCRNXPREJQCBRJI

BJZRMEMIRVNERPR

Solucion. Observemos que el enunciado dice que el texto original esta escrito en ingles, pero en el textoaparecen varias ~N, que sabemos que no es una letra del ingles (aunque sı de otras muchas lenguas...)En cualquier caso, suponemos que estamos utilizando un alfabeto de 27 letras aunque el texto este eningles.

Puesto que no sabemos cual es el metodo utilizado para cifrar este mensaje comenzaremos con losmas sencillo de atacar e iremos subiendo en dificultad. El primer metodo que vamos a probar es el

63

Page 64: Teor a de C odigos y Criptograf a

de desplazamiento o tipo Cesar. Para ello vamos a hacer un diagrama de frecuencias (absolutas) deaparicion.

A B C D E F G H I J K L M N ~N O P Q R S T U V W X Y Z

7 52 26 7 32 1 2 58 29 31 5 3 37 21 5 6 38 35 78 1 5 0 18 0 21 4 18

Fijandonos en la tabla vemos que la letra que mas se repite es R, por lo que vamos a suponer queR es el cifrado de E, es decir, sustituyendo sus valores numericos, 18 = 4 + k, por lo que nuestra claveserıa k = 14. Si probamos nuestra clave descifrando el texto obtenemos

EDMQEV...,

que no tiene mucho sentido, ası que esta no puede ser la clave. Si probamos haciendo corresponderla letra E con las siguientes letras con mayor frecuencia, que son H y B, tampoco obtenemos ningunmensaje. Las demas letras tienen muy poca frecuencia en comparacion con las tres primeras por loque no parece probable que este sea el sistema de cifrado. Evidentemente podemos ver si lo es ono probando con todas las posibles claves, que no son tantas, y ası descartamos con seguridad estemetodo.

Pasemos al siguiente que consideramos mas facil de romper, el afın unidimensional. Recordemosque la clave de este sistema es un par (a, b) ∈ (Z/Z27)∗×Z/Z27, y que se cifraba del siguiente modo:Dado un mensajem = m1m2m3 . . ., el texto cifrado esM =M1M2M3 . . . dondeMi = ami+b mod 27(observese, como en otros ejercicios, que aquı estamos identificando los caracteres con sus respectivosnumeros). El mejor ataque vuelve a ser un analisis de frecuencias, pues la que aparezca mas vecesdentro del texto cifrado se correspondera (o al menos eso esperamos) con la letra mas frecuente enel idioma en el que esta escrito el mensaje. Puesto que nuestra clave tiene dos incognitas, debemosbuscar un sistema de dos ecuaciones lineales: tomaremos los dos letras mas frecuentes del idioma enel que estemos cifrando y supondremos que las letras del texto cifrado con mayor frecuencia seran lascifradas de estas dos letras.

En nuestro caso, se supone que estamos descifrando en ingles y aunque las letras mas frecuentes sonla E y la T vamos a tomar como letras mas frecuentes la E y la A. La razon es muy sencilla: la intuicionnos dice (y esto es mucho decir) que el texto no esta en ingles, sino en espanol, pues apararece la ~N

(que ya sabemos que esta en muchos idiomas, pero siendo esto un ejercicio no pensamos que quieneslo hayan escrito hayan cifrado en guaranı ni nada por el estilo). Es evidente que esto NO es una razonde peso para suponerlo, porque como ya hemos dicho se podrıa usar un alfabeto de 27 letras y utilizarsolo 26 o incluso menos, pero como la A es la segunda letra mas frecuente en espanol y la tercera eningles, no parece muy arriesgado cambiar la T por la A.

Las letras mas frecuentes en el texto cifrado son, es este orden, R, H y B (estan senaladas en eldiagrama de frecuencias). Vamos a probar con las dos primeras, es decir, vamos a suponer que R es elcifrado de E y H es el cifrado de A. De esta forma tenemos el siguiente sistema de ecuaciones (donde(a, b) es la clave): {

4a+ b = 18b = 7

Resolviendo este sistema, tenemos que (a, b) = (23, 7). Vamos a descifrar las primeras letras del textoRQZE.... Si hemos hecho las cuentas bien, R debe ser E cuando descifremos, ası que vamos a pasara la siguiente: Q. Para descifrar esta letra debemos calcular el inverso de a mod 27 que es a−1 = 20mod 27. Ahora la letra descifrada de Q se corresponde con 20(17 − 7) = 11 mod 27, es decir, L. Sihacemos esto con todas las letras obtenemos el siguiente mensaje (que estaba en espanol):

EL CUENTO ES MUY SENCILLO

USTED NACE

64

Page 65: Teor a de C odigos y Criptograf a

CONTEMPLA ATRIBULADO

EL ROJO AZUL DEL CIELO

EL PAJARO QUE EMIGRA

EL TORPE ESCARABAJO

QUE SU ZAPATO APLASTARA

VALIENTE

USTED SUFRE

RECLAMA POR COMIDA

Y POR COSTUMBRE

POR OBLIGACION

LLORA LIMPIO DE CULPAS

EXTENUADO

HASTA QUE EL SUE~NO LO DESCALIFICA

USTED AMA

SE TRANSFIGURA Y AMA

POR UNA ETERNIDAD TAN PROVISORIA

QUE HASTA EL ORGULLO SE LE VUELVE TIERNO

Y EL CORAZON PROFETICO

SE CONVIERTE EN ESCOMBROS

USTED APRENDE

Y USA LO APRENDIDO

PARA VOLVERSE LENTAMENTE SABIO

PARA SABER QUE AL FIN EL MUNDO ES ESTO

EN SU MEJOR MOMENTO UNA NOSTALGIA

EN SU PEOR MOMENTO UN DESAMPARO

Y SIEMPRE SIEMPRE

UN LIO

ENTONCES

USTED MUERE.

Ejercicio 3.31. Un matematico inventa un nuevo sistema de cifrado usando el alfabeto {□ =0, A = 1, . . . , Z = 27}. Define la funcion

f(i) =

1 si i es multiplo de 3−2 si i es par y no multiplo de 3−3 si i es impar y no multiplo de 3

y entonces cifra el mensaje M = x0x1 . . . en C = y0y1 . . . haciendo

xi → yi = xi + f(i) mod 28.

Por ejemplo, para cifrar el mensaje ABA harıa

x0 = A, x1 = B, x2 = A→ y0 = B, y1 = Z, y2 = Z

ya quex0 = A → 1 + f(0) = 1 + 1 = 2⇒ y0 = Bx1 = B → 2 + f(1) = 2− 3 = −1⇒ y1 = Zx2 = A → 1 + f(2) = 1− 2 = −1⇒ y2 = Z

65

Page 66: Teor a de C odigos y Criptograf a

Analiza este criptosistema, indicando si es alguno de los conocidos.

Solucion. El cifrado desplaza el i-esimo caracter una cantidad de lugares que depende de su posicion,f(i). Por tanto, estamos ante un criptosistema similar al de Vigenere. Decimos similar, porque paraello tendrıamos que tener que f tomara valores distintos (cosa que se cumple), para descartar elcriptosistema de Cesar, y que sea periodica, para descartar el cifrado de un solo uso. Veamos que secumple esto ultimo. Si nos volvemos a fijar en la definicion de f , podemos reescribirla como:

f(i) =

1 si i = 6k, 6k + 3, con k ≥ 0−2 si i = 6k ± 2, con k ≥ 0−3 si i = 6k ± 1, con k ≥ 0

Ası es mas sencillo comprobar que f es periodica de periodo 6, con lo que este cifrado no es mas queuno de tipo Vigenere de longitud seis (que no es nada seguro, por cierto), cuya clave estara formadapor las letras cuyos valores numericos son f(0), . . . , f(5). Estos son 1, −3, −2, 1, −2 y −3, es decir,la clave es AXYAYX.

21 de mayo: generalidades y raıces cuadradas modulo N = pq

Ejercicio 3.22. Sean p y q primos impares, y sea N = pq. En este ejercicio veremos un metodo parafactorizar N sin conocer previamente p y q.

1. Supongamos que (p− 1) |M pero (q − 1) ∤M . Demuestra que existe al menos un entero a, conmcd(a,N) = 1, tal que aM ≡ 1 mod p pero aM ≡ 1 mod q.

2. Da una cota inferior del cardinal del conjunto

{a+ZN ∈ (Z/ZN)∗ : aM ≡ 1 mod p y aM ≡ 1 mod q}.

Puedes usar el apartado 1. ¿Es probable que escogiendo a al azar en el conjunto de enteroscoprimos con N pertenezca al conjunto anterior?

3. Dado un par de enteros (a,M) que verifique las condiciones del primer apartado, da un algoritmopara calcular p a partir de N .

4. Supongamos que existe un numero natural k tal que:

� (p− 1)|(k!)� q − 1 tiene un factor primo mayor que k

Describe un algoritmo que calcule la factorizacion de N a partir de k.

Solucion.

1. En general, para cualquier entero a primo con p y q (es decir, con N), como p− 1|M , sabemosque aM ≡ 1 mod p por el pequeno teorema de Fermat, y por la misma razon no tenemos porque tener que aM ≡ 1 mod q. Veamos que efectivamente existe un entero ası.

El teorema chino del resto, en su version mas conceptual, nos dice que el anillo Z/ZN es isomorfoa Z/Zp×Z/Zq, esto es, Fp × Fq, mediante el isomorfismo dado por

ψ : a+ZN 7→ (a+Zp, a+Zq).

66

Page 67: Teor a de C odigos y Criptograf a

Por tanto, podemos rastrear las unidades de Z/ZN en Fp × Fq. Sabemos que a ∈ (Z/ZN)∗ sia y N son coprimos, es decir, si a no es multiplo de p ni q. Por tanto, el grupo de unidades(Z/ZN)∗ sera isomorfo mediante ψ a F∗

p × F∗q .

Sea b + Zq uno de los generadores de F∗q , y dividamos M entre q − 1, de forma que podamos

escribir M = Q(q − 1) + R, con 0 < R < q − 1. Tenemos entonces, de nuevo por el pequenoteorema de Fermat, que bM ≡ bR mod q. Ahora bien, como R < q − 1 y ord(b + Zq) = q − 1,necesariamente bR ≡ 1 mod q. Cualquier elemento a + ZN que se reduzca a b + Zq modulo qnos servira.

2. Sea C el conjunto que nos da el enunciado. La prueba de la existencia del anterior apartadosolo dependıa de que el elemento a+ZN , al reducirlo modulo q, resultara un generador de F∗

q .Como en F∗

q hay φ(q − 1) generadores y cada elemento de (Z/ZN)∗ se corresponde con un par(x, y) ∈ F∗

p × F∗q , podemos afirmar que |C| ≥ (p− 1)φ(q − 1). De este modo, la probabilidad de

escoger al azar un entero a coprimo con N que este en C es al menos

(p− 1)φ(q − 1)

(p− 1)(q − 1)=φ(q − 1)

q − 1.

Esta probabilidad no parece que este mal, pero como q − 1 es par, no pasa de 1/2.

Para ver que se puede mejorar bastante en algunos casos, vamos a afinar nuestra cota inferior yconvertirla en una igualdad en funcion de M . (Ojo: esto se vuelve “interesante”39.)

Por el apartado anterior, podemos reescribir C como el conjunto

C = {a+ZN ∈ (Z/ZN)∗ : aM ≡ 1 mod q}.

Vamos a definir un conjunto relacionado con C:

D = {a+Zq ∈ F∗q : aM ≡ 1 mod q}.

Si b ∈ D, por un lado ord(b)|M , y como b ∈ F∗q , tambien ord(b)|q−1 por el teorema de Lagrange.

Por consiguiente,ord(b)|mcd(M, q − 1).

Es facil ver40 el enunciado recıproco: si ord(b)|mcd(M, q − 1) entonces b ∈ D. En conclusion,podemos reescribir D como

D = {b ∈ F∗q : ord(b)|mcd(M, q − 1)}.

El siguiente paso es hallar el cardinal de D. Para cada divisor d de mcd(M, q − 1), hay φ(d)elementos de F∗

q de orden exactamente d. Por tanto,

|D| =∑

d|mcd(M,q−1)

φ(d) = mcd(M, q − 1),

por la formula de Euler.

Ya conocemos D, pero ahora deberıamos volver a trabajar modulo N , no q. En general, enZ/ZN hay p elementos que se reducen modulo q a un a + Zq dado. Concretamente, todos losdel conjunto

{a+ZN, a+ q +ZN, . . . , a+ (p− 1)q +ZN}.39Como decıa cierto mapa medieval, hic sunt dracones. No es necesario entender al dedillo lo que queda del segundo

apartado, pero si se intenta, mejor.40Dejamos la tarea para nuestros queridos y atentos lectores.

67

Page 68: Teor a de C odigos y Criptograf a

Vamos a ver que de los p enteros representantes de los elementos de arriba hay uno y solo uno quesea multiplo de p, y por tanto en (Z/ZN)∗ habra exactamente p− 1 elementos que se reduzcana un b ∈ F∗

q dado.

En efecto, hemos visto en la prueba del primer apartado que el teorema chino del resto nos da unisomorfismo entre (Z/ZN)∗ y F∗

p×F∗q , ası que cualquier elemento de la forma (x+Zp, b+Zq),

con x ∈ {1, . . . , p− 1}, se correspondera con un elemento distinto de (Z/ZN)∗, y todos ellos sereducen a b.

En conclusion, hay p− 1 elementos de (Z/ZN)∗ que se reducen al mismo b ∈ D modulo q, y ası,

|(Z/ZN)∗ − C| = (p− 1)|D| = (p− 1)mcd(M, q − 1).

Finalmente,|C| = (p− 1)((q − 1)−mcd(M, q − 1)),

por lo que la probabilidad de encontrar en C una unidad a+ZN se puede escribir tambien como

1− mcd(M, q − 1)

q − 1;

si tomamos M de modo que comparta pocos factores con q − 1 esta probabilidad puede serbastante alta.

3. Volvamos a la vida. Sabemos que aM ≡ 1 mod p y aM ≡ 1 mod q. Por tanto, aM − 1 es unmultiplo de p pero no de q. Dicho de otro modo, aM − 1 = cp donde q ∤ c, y por consiguiente,mcd(aM − 1, N) = p. Entonces podemos plantear el siguiente algoritmo:

I. Calcular B = aM − 1 mod N .

II. Calcular mcd(B,N).

Cambiar aM − 1 por B no altera el resultado de hallar el maximo comun divisor con N , porqueambos enteros se diferencian en un multiplo de N . Sin embargo, es mucho mas rapido realizaruna exponenciacion modular que sin tomar modulo N .

4. De las condiciones sobre k, sabemos que p − 1|k! pero q − 1 ∤ k!. En efecto, si q − 1 sı fueraun divisor de k!, todos los factores primos del primero deberıan aparecer entre los del segundo.Ahora bien, los factores primos de k! son todos los primos menores que k. Sabiendo esto, elalgoritmo es muy parecido al anterior, concretamente el siguiente:

I. Seleccionamos a ∈ Z tal que mcd(a,N) = 1.

II. Calculamos B = ak! − 1 mod N .

III. Hallamos d = mcd(B,N). Ahora no sabemos si ak! − 1, o equivalentemente B, es unmultiplo de p solo o tambien de q. Entonces:

a. Si 1 < d < N , entonces d es un factor primo de N y N/d sera el otro, con lo que hemosaveriguado la factorizacion.

b. Si d = N , entonces a + ZN no esta en el conjunto C. Volvemos al paso dos y selec-cionamos otro a.

Ejercicio T.4.1041. Probar que un elemento no nulo de Fp, siendo p un primo impar, tiene exacta-mente cero o dos raıces cuadradas. ¿Cuantas raıces cuadradas tiene un elemento no nulo de Z/Zpq,siendo p y q dos primos distintos?

41De ahora en adelante, denotaremos por “Ejercicio T.4.X” al ejercicio X del final del tema 4 de las notas de teorıa.

68

Page 69: Teor a de C odigos y Criptograf a

Solucion. Sea a un elemento de F∗p y consideremos el polinomio f(x) := x2 − a ∈ Fp[x]. En dicho

anillo, f se podra factorizar o no. Si se puede factorizar, debe ser como producto de dos polinomiosde grado uno, es decir, f = (x + b)(x − b) = x2 − b2, y como p = 2, los elementos b y −b de Fp sondistintos42. Por tanto, a tiene dos raıces cuadradas. Si f no se puede factorizar, a no tendra raıcescuadradas en Fp.

Sea N = pq. Veamos que en Z/ZN un elemento a := a+ZN ∈ Z/ZN−{0} puede tener cero, una,dos o cuatro raıces cuadradas distintas. Vamos a suponer por simplicidad que a < N , y consideremosen primer lugar las reducciones ap y aq modulo p y q de a como elementos de Fp y Fq, respectivamente.Si existiera una raız cuadrada de a en Z/ZN , digamos b, tendrıamos que b2 ≡ a mod N , y por tantob2 ≡ a mod p, q, con lo que b

py b

qserıan raıces cuadradas de ap y aq, respectivamente.

Supongamos pues que a tiene alguna raız cuadrada modulo N . Si a es multiplo de p, entoncesap = 0 ∈ Fp solo tiene una unica raız cuadrada modulo p, y lo mismo ocurre si a es multiplo de q,mutatis mutandis. Por ultimo, si p = 2, independientemente de la paridad de a solo tendremos unaraız cuadrada de ap. Vamos a asumir que no estamos en ninguno de esos casos y a tiene dos raıcescuadradas tanto modulo p como modulo q, y llamemoslas, respectivamente, ±bp y ±cq. Como p y qson primos entre sı, podemos plantear el sistema de congruencias dado por:{

x ≡ b mod px ≡ c mod q

.

Este sistema nos darıa, en virtud del teorema chino del resto, una unica solucion x0 modulo N , queverificarıa que x20 ≡ b2 ≡ a mod p y x20 ≡ c2 ≡ a mod q. Nuevamente por el TCR, esto significaque x20 ≡ a mod N , es decir, x0 serıa una raız cuadrada de a modulo N . Cambiando b o c por susopuestos obtendrıamos tres raıces mas de a modulo N .

Volviendo a los casos en los que a tiene solo una raız modulo p, planteando un sistema de congru-encias similar podrıamos deducir que tiene una o dos raıces modulo N . Por ejemplo, si p = 5 y q = 11y a = 5, hay solo dos raıces de a modulo 55, concretamente 15 y 40. Y si p = 2 y q = 3 = a, la unicaraız cuadrada de a modulo 6 es el propio a.

Ejercicio T.4.11. Desarrolla un procedimiento para calcular todas las raıces cuadradas de un ele-mento de Z/Zpq y halla las raıces de 15 modulo 1441499. El calculo de raıces cuadradas en un cuerpoFp se puede hacer en tiempo polinomial con el algoritmo de Shanks, implementado en la mayorıa delos programas de calculo simbolico.

Solucion. El procedimiento es lo que hemos planteado en el anterior ejercicio. Supongamos querecibimos dos enteros a y N = pq, conociendo ambos primos de la factorizacion de N . Planteamos lossiguientes pasos:

1. Tomamos a modulo p y q; llamemoslos ap y aq.

2. Hallamos las raıces cuadradas de ap en Fp y de aq en Fq, llamandolas ±bp y ±cq respectivamente.Si en alguno de los dos casos no existen raıces cuadradas, tampoco las hay modulo N . Y si haysolo una, tomamos solo una.

3. Con las raıces del apartado anterior resolvemos los sistemas de congruencias del ejercicio anterior.Cada una de estas soluciones sera una raız cuadrada de a modulo N .

Aplicando el procedimiento a a = 15 y N = 1441499 = 1013 · 1423, obtenemos que hay cuatroraıces cuadradas de a modulo N : 4650, 590164, 851335 y 1436849.

42Y si p = 2, el unico elemento no nulo de F2 tiene una raız cuadrada, el mismo.

69

Page 70: Teor a de C odigos y Criptograf a

Ejercicio T.4.12. Sea N el producto de dos primos impares. Probar que, si podemos hallar entiempo polinomial raıces cuadradas en Z/ZN , podemos factorizar N = pq. Para ello, escojamos unx ∈ (Z/ZN)∗, calculemos z = x2 y hallemos

√z.

Probar que, de entre todos los valores posibles de√z, exactamente la mitad nos conducen (en

tiempo polinomial) a una factorizacion de N . Por tanto, estamos ante un algortimo probabilıstico conprobabilidad de exito 1/2.

Solucion. Antes de empezar, debemos darnos cuenta de que si N es producto de dos primos imparesy x, y por tanto z, es primo con N , habra cuatro raıces cuadradas de z modulo N , atendiendo a loque hemos explicado en el ejercicio T.4.10.

Sabemos que −x es otra raız cuadrada de z modulo N , pero obtener esa o x no nos va a aportarmas informacion de la que ya tenemos. Supongamos entonces que al calcular

√z obtenemos una de

las otras dos raıces, digamos y o −y, ambas distintas de x. En ambos casos podemos escribir quex2 ≡ y2 ≡ z mod N , es decir, N |x2 − y2 = (x+ y)(x− y). Como sabemos que N es producto de dosnumeros primos, uno de ellos (digamos p) dividira a x+ y y otro (digamos q) a x− y, pero no ambosa una de las dos cantidades43. Teniendo en cuenta que los posibles valores de mcd(N, x+ y) son 1, p,q o N , la discusion anterior nos demuestra que debe ser p. Y ya hemos ganado, porque para hallar qnos basta calcular N/p.

En conclusion, el algoritmo siguiente nos devuelve una factorizacion de N con probabilidad 1/2:

1. Tomar x ∈ (Z/ZN)∗.

2. Hallar una raız cuadrada y de x2. Si y = ±x, paramos. (Realmente se vuelve a calcular y.)

3. Uno de los factores primos de N es p = mcd(x+ y,N).

4. El otro factor es q = N/p.

Es interesante ver que este algoritmo, si funciona, devuelve una factorizacion en tiempo polinomial:hallar raıces cuadradas modulo N es de complejidad polinomial por asuncion, y el resto de operacionesson sumas, divisiones enteras (exactas) o hallar el maximo comun divisor de dos enteros. Como todoslos datos estan acotados por N y hay una cantidad concreta de pasos, el procedimiento anterior espolinomial en N . (Y si no funciona se vuelve a intentar; la probabilidad de que no funcione despuesde k pasos es 1/2k, que es menor cada paso.)

Ejercicio T.4.13. Asumiendo que es posible calcular raıces cuadradas en Fp en tiempo polinomial(ver ejercicio T.4.11), probar que si conocemos la factorizacion de N = pq es posible hallar raıcescuadradas modulo N en tiempo polinomial (ver ejercicio T.4.11). ¿Para que enteros se puede aplicarexactamente el mismo procedimiento44?

Solucion. El procedimiento relatado en el ejercicio T.4.11 es de complejidad polinomial en N : sabemosque hallar raıces cuadradas modulo p o q lo es, y el resto de operaciones son tomar restos de divisioneseuclıdeas (es decir, considerar un entero modulo algun otro) y resolver un sistema de congruencias,que por el teorema chino del resto (y el ejercicio 1.68) es de complejidad polinomial en N .

Si N = p1 · . . . · pr es producto de r primos distintos, el procedimiento se puede generalizar sinproblema, pero ojo, no podemos hallar todas las raıces de a modulo N en tiempo polinomial. Enefecto, eso implicarıa resolver al menos 2r−1 sistemas de congruencias, y como r es similar a logN(salvo constante), la complejidad de calcular una raız se verıa multiplicada por 2r−1 ∼ N/2, que esexponencial.

43¿Por que?44Este ejercicio y el anterior demuestran que hallar la factorizacion de un entero N que es el producto de dos primos

es tan difıcil (probabilidades aparte) como hallar raıces cuadradas modulo N .

70

Page 71: Teor a de C odigos y Criptograf a

En cuanto N no es libre de cuadrados la cosa se complica. Vease el epıgrafe de raıces cuadradasmodulares en las notas de teorıa.

Ejercicio T.4.14. Una variante del DHEP utilizada en criptografıa es el protocolo Massey-Omura,que tiene la particularidad de no usar claves publicas. En este protocolo, todos los usuarios acuerdantrabajar en un cuerpo primo FP . Alice escoge entonces eA y dA tales que eAdA ≡ 1 mod P − 1.

Si ahora Alice quiere enviar un mensaje m a Bob, calculaM1 = meA y lo envıa. Bob, por su parte,halla M2 = M eB

1 y lo envıa a Alice. Intenta imaginar como continua el protocolo, sabiendo que paraque Bob recupere m hace falta un envıo mas.

Solucion. Coloquemonos en la situacion del enunciado: despues de dos envıos, Alice recibe M2 =M eB

1 = meAeB . Como eAdA ≡ 1 mod P − 1, por el pequeno teorema de Fermat sabemos que

MdA2 = meAeBdA ≡ meB mod P,

ası que eso es lo que Alice le envıa a Bob, M3 := MdA2 = meB . Bob, por la misma razon que antes,

solo tiene que calcular MdB3 = meBdB ≡ m mod P para hallar el mensaje original45.

Ejercicio T.4.15. Estudia la fragilidad del sistema Massey-Omura a ataques de intermediario.

Solucion. Los ataques de intermediario, llamados en ingles man-in-the-middle, siguen el siguienteesquema: ademas de Alice y Bob, tenemos a Mallory, un agente malicioso que a diferencia de Eve,que es una atacante pasiva, puede interceptar y modificar los mensajes emitidos sin que se detectesu presencia, haciendose pasar por Alice o Bob frente al otro personaje de la comunicacion enviandomensajes distintos a los originales. Es mucho mas difıcil proteger un criptosistema de los ataques deMallory que de los de Eve.

Supongamos pues que Alice y Bob acuerdan utilizar un protocolo Massey-Omura para comunicarse,usando como claves privadas eA, eB, dA y dB, sin mas seguridad adicional, y que Mallory pretendeinmiscuirse y al menos averiguar los mensajes enviados. Antes que nada, ella tambien escoge un parde claves privadas (eM , dM ).

En este caso, Alice quiere enviar a Bob el mensajem, para lo que en un primer paso hallaM1 = meA

y se lo envıa a Bob. Mallory intercepta el mensaje y se lo envıa a Bob haciendose pasar por Alice.En segundo lugar, Bob envıa a Mallory (el cree que se esta comunicando con Alice) el mensaje

M2 = M eA1 = meAeB . Esta vez, en vez de enviarle lo mismo a Alice, Mallory, haciendose pasar por

Bob, le envıa el mensaje M ′2 = M eM

1 = meAeM . Nuevamente, Alice usa su clave de descifrado y halla

M3 = M ′dA2 = meAeMdA ≡ meM mod P , que le envıa al falso Bob (Mallory). Ahora Mallory no

necesita mas que tomar MdM3 para descifrar m.

Si Mallory quiere continuar con el engano y no ser descubierta, debe poder enviarle a Bob elmensaje meB . Los datos que obran en su poder son m, meA , meAeB y el primo P , ası que si eAesta bien escogido, para hallar meB debe resolver el problema del logaritmo discreto, para lo que nohay una solucion rapida. Por consiguiente, Mallory no puede anular la seguridad de todo el sistemaaveriguando las claves de cifrado de Alice y Bob (o por lo menos no inmediatamente), pero si lograinterceptar todas las comunicaciones el efecto sera el mismo. Notese que, al contrario que Mallory,Eve no puede descifrar el mensaje: ella no averigua mas que meA , meB y meAeB , siendole imposiblecalcular m.

Ejercicio T.4.16. Un protocolo de intercambio de claves alternativo al DHEP es el denominadoprotocolo MQV (Menezes, Qu, Vanstone). Trabajamos en un grupo cıclico ⟨G⟩, y Alice y Bob han

45Este protocolo se conoce en otras fuentes como el protocolo de tres envıos de Shamir, siendo el de Massey-Omurauno similar, hecho en F2R , que simplifica el calculo de Alice y Bob.

71

Page 72: Teor a de C odigos y Criptograf a

generado, respectivamente, pares de claves publico/privadas:

(KA = Ga, a) (KB = Gb, b),

y ahora quieren acordar una clave privada comun (por ejemplo, para usar DES). Primero genera, cadauno, un nuevo par de claves publico/privadas efımeras:

(KC = Gc, c) (Alice) (KD = Gd, d) (Bob),

y se intercambian KC y KD. Este es el unico intercambio de mensajes del protocolo.Supongamos que |G| = 2t, y tomamos l = t/2. En parametros de seguridad actuales, se puede

considerar t = 160 y, por tanto, l = 80.Alice calcula entonces:

� Convierte KC y KD en enteros. Esto casi siempre es inmediato, pues se toma ⟨G⟩ = F∗P , pero

asumiremos, en general, que se hace de una manera conocida y previamente fijada.

� CalculaSA = (KC mod 2l) + 2l.

� CalculaTA = (KD mod 2l) + 2l.

� Halla hA = c+ aSA.

� Halla k =(KDK

TAB

)hA

.

Razona que calculos debe hacer Bob para llegar, con los datos de los que dispone, a k.

Solucion. Basta con desarrollar la expresion de k en funcion de G. Como KD = Gd y KB = Gb,entonces

k =(KDK

TAB

)hA

=(GbTA+d

)hA

= G(d+bTA)(c+aSA).

Sea hB := d+ bTA, calculo que puede efectuar Bob. Con esto en mente,

k =(G(c+aSA)

)hB

=(KCK

SAA

)hB

.

Ejercicio T.4.17. Prueba que tanto Alice como Bob pueden realizar los calculos del MQV en tiempopolinomial, mientras que Eve necesita resolver el DLP.

Solucion. Las operaciones que Alice y Bob necesitan son la reduccion modulo cierto entero, sumas yproductos y la exponenciacion modular. Todas ellas son polinomiales en el tamano del grupo y nohay problema alguno en llevarlas a cabo.

Por otro lado, Eve tiene casi toda la informacion de los calculos que efectuan Alice y Bob: KA,KB, KC , KD, SA y TA. Sin embargo, no tiene manera de averiguar hA ni hB, necesarios si quierehallar k. Para ello entonces necesita poseer a y c o b y d, es decir, los logaritmos discretos en base Gde KA y KC o de KB y KD.

72

Page 73: Teor a de C odigos y Criptograf a

28 de mayo: criptosistemas de clave publica: RSA, ElGamal, Rabin

Pasar de texto a entero

Antes de resolver el primer ejercicio de descifrado por RSA, debemos abordar como se pasa un textoa un numero entero y viceversa. La idea basica de como se realiza este proceso cuando ciframos conun codigo actual (RSA, ElGamal, Rabin, etc.) es la siguiente (aunque no es el unico metodo posible):

1. Fijamos el alfabeto que vamos a utilizar, que puede estar formado por letras mayusculas,minusculas, sımbolos o cualquier tipo de caracter (espacios, saltos de lınea, etc.).

2. A cada elemento del alfabeto le asignamos un valor numerico. Por ejemplo, si estamos utilizandoel alfabeto latino internacional, podemos asignarle a cada letra el valor numerico habitual eneste curso, es decir, A = 0, B = 1, . . . , Z = 25. Sin embargo, tambien podemos utilizar el codigoASCII o Unicode, que cubren (muchos) mas caracteres.

3. Sea N el tamano maximo de los mensajes que podemos cifrar o descifrar mas uno (N = pqen los cifrados RSA y de Rabin o P en el cifrado de ElGamal), y sea b ≤ N el tamano denuestro alfabeto. Por ejemplo, si usamos el alfabeto espanol o el codigo ASCII tendrıamosb = 27 o b = 128. Alternativamente, si nuestro alfabeto tiene muchos caracteres (como Unicode)podemos escoger b tal que sea mayor que el maximo valor numerico de los caracteres que usamos.

4. Supongamos que queremos cifrar el mensaje m = (mi,mi−1, . . . ,m0) ∈ Zi+1 (aquı ya hemoscambiado cada caracter por su valor numerico). Lo podemos ver como el numero entero n =mib

i +mi−1bi−1 + . . .+m0, es decir, los numeros mi que forman el mensaje son las cifras de n

en base b. Si este numero es menor que N , lo ciframos directamente. Si n ≥ N , debemos dividirel mensaje en bloques.

Ejercicio 23 (Continuacion del ejercicio 22). Para evitar que los mensajes sean interceptados,por ejemplo cuando un cuervo mensajero es abatido o se extravıa, el Rey de Poniente encarga al GranMaestre que disene un sistema de clave publica para comunicarse con los distintos castillos del reino.El Gran Maestre propone la clave publica (N,E) siguiente:

(60869243510984327548920480334764221031528317061919895872188326837710964

601326691274754827139103609057208668321707506860158489485581270759474247

596852351243863755597326760390302215963689187717033995334204192434547116

099024366870046321256313218395241208889089679187729759785540818221496934

3034761608061441848442184213068973586368674946796643477191,

34601874415523051387241062787106439790608096991146709784330373799961688

756232110096572987663030648998920937502149637540135701164965668394894450

882970900370642830699032390633636009489936956108326776085938487426375990

000902140838508469512944767566489094115543493759444111910426475987733554

3897881677906912990278738995435951631300385554317834389071).

Sin embargo, el Gran Maestre no ha estudiado bastante criptografıa, y ha escogido N = pq, de talforma que p− 1 es divisor de k!, para un cierto entero k entre 100 y 200.

Usando el ejercicio anterior, desencripta el siguiente mensaje, formado por cuatro numeros, queha llegado esta manana a Desembarco del Rey y que un pajarito te ha susurrado al oıdo46:

46No contiene spoilers.

73

Page 74: Teor a de C odigos y Criptograf a

256555214027850087690193272196293050537457956596552591996735206383314315

940001450082371134803802687230400545310280590466904456522308138943491257

338044124650762661205752874913411180877574405069184672112669935205859846

779844766968742111919057288456428724409064621964135939041211291526269403

393705864993292610762657245841981148679600331075939672473,

275032163162822988535826235795025828347394962820910136776813016979693108

142125532578842830119063125558091338042892795170340468377468121934881484

227264404904978703306170536194260891811908982563743985192675909948273615

871471335321374255091395277578976139731685559224233885699599727133006294

006448600792261727008702099185868178749160758281795724130,

378073427271621234503261359609002711262541758780941458458665384050569303

452007780150711822441788096265056228600491788112199759843665500637247364

065110048967530518948373029648001642987612666641993240816806871358130336

047752881675208959782211665304161281074287834688517380374713590079022127

225972812636756601628682601392272360495646104760300673904,

973224779193888034999513392433236286746084154494619793360330966424202856

194615330093294122663979586557754622671428589355996670162719881478861700

905382550493720704650672898660495844699469799095334597492706930701054832

210749834617602440555177501425294781679425510129115926041481991634283816

5647213802046413112481881647188063534743987540493865544.

(Los bloques se han cifrado usando 1000 como base.)

Solucion. Es evidente que este ejercicio no se ha hecho a mano, sino con la ayuda de Sage; invitamosa nuestros queridos lectores a que mientras lean el resultado vayan realizando los calculos con la ayudade la practica dedicada al RSA.

Lo primero que debemos hacer para descifrar el mensaje es factorizar N ; como este ejercicio escontinuacion del 22, utilizaremos el procedimiento descrito ahı. En el tenemos el siguiente algoritmo,dado un entero positivo k tal que (p− 1)|k! y q − 1 tiene un factor primo mayor que k:

I. Seleccionamos a ∈ Z tal que mcd(a,N) = 1.

II. Calculamos B = ak! − 1 mod N .

III. Hallamos d = mcd(B,N). Ahora no sabemos si ak!− 1, o equivalentemente B, es un multiplo dep solo o tambien de q. Entonces:

a. Si 1 < d < N , entonces d es un factor primo de N y N/d sera el otro, con lo que hemosaveriguado la factorizacion.

b. Si d = N , entonces a+ ZN no esta en el conjunto C. Volvemos al paso dos y seleccionamosotro a.

Como sabemos que p− 1 divide a k! con cierto k entre 100 y 200, esta claro que (p− 1)|200!, porlo que vamos a tomar k = 200. Recordemos que este algoritmo funciona si q − 1 no divide a k!, puessi esto ocurriera, siempre tendrıamos que mcd(ak! − 1, N) = N .

74

Page 75: Teor a de C odigos y Criptograf a

Tenemos que elegir un entero a tal que mcd(a,N) = 1, tomemos a = 2 y veamos si nos vale. Ahoracalculamos d = mcd(ak! − 1, N) (ojo: como ak! − 1 es muy grande, se puede –y debe– usar ak! − 1mod N) y obtenemos que 1 < d < N , por lo que es nuestro primer primo,

p =339310868445189820119825609358857320323966355569942077019636620881232653141763

303362545359712071811696988685849919416077801110739282362611996046917975705058

51011072000000000000000000000000001.

Si calculamos N/p, tenemos el otro factor de N :

q =179390786360315979145169450178097528899866406706338789477378081347571634565502

96882051309646013746053148780979305465461063754316973586368674946796643477191.

Ya tenemos la factorizacion de N , pero lo que realmente queremos hallar es d, la clave privada paradescifrar el sistema RSA, que no es otra cosa que E−1 mod φ(N). Para ello, calculamos φ(N) =φ(p)φ(q) = (p− 1)(q − 1), es decir,

φ(N) =608692435109843275489204803347642210315283170619198958721883268377109646013

266912747548271391036090572086683217075068601584894855812707594742475968523

512404706469128748621891039598701006145120004239149016118728990553884310650

496300241556243769033467099586440759835755359365576761495027360720413222390

338812475269447680000000000000000000000000000,

y por ultimo d = E−1 mod φ(N), que es

d =35470804147400097510595152808603490055770861076362283554508284896167970328988

44232687529916100508798087951168602360260696024868500893763423150218919387385

25099158170030282519906145159010885079467774549379810523313859545686550402151

34378481590097944169977056488457373734065989173052566536585392894029572498746

0044966327628020226724041540492742831.

Ya tenemos la clave para descifrar el mensaje. El mensaje que nos han susurrado esta formado porcuatro enteros M1,M2,M3,M4. Para decifrarlo basta hacer mi = Md

i mod N para i = 1, 2, 3, 4 ynuestro mensaje sera m1,m2,m3,m4. De esta forma, obtenemos

m1 =8710511011610111403210511503209911110910511010304403209711010003211910410111

0032116104101032076111110103032078105103104116032102097108108115044032111110

1081210321161041010320781051031041160391150320870971160991040321191051081080

32115116097110100032098101116119101101110032116104101032114101097108109,

m2 =3209711010003211610410103210009711410711010111511503211610409711603211511910

1101112115032102114111109032116104101032078111114116104046032079117114032115

1161141011101031161040321051150321081011151150321161040971160320970321161041

11117115097110100032110111119046032083104111117108100032097110032097116,

m3 =1160970991070320991111091010440320730321040971181010321161041141011010321091

0111003211611103210010110210111010003210109709910403210910510810103211110203

2116104101032087097108108046032084104101032103111100115032104101108112032117

115032097108108032105102032119101032097114101032110111116032114101097100,

m4 =121046.

75

Page 76: Teor a de C odigos y Criptograf a

Pero estos numeros no nos dicen mucho, debemos pasarlos a texto. En este caso, le asignamosa cada caracter su valor numerico como caracter Unicode, usando 1000 como base. Para pasar cadabloque mi a texto, debemos expresar mi como un entero en base 1000, y sus “dıgitos” en dicha basese corresponden con los valores Unicode de los caracteres del texto claro, espacios y demas sımbolosincluidos. Ası por ejemplo, las primeras cifras del primer numero en base 1000 son

(87, 105, 110, 116, 101, 114, 32, 105, 115, . . .),

que se corresponden con Winter is. En general, el texto decifrado es:

Winter is coming, and when the Long Night falls, only the Night’s Watch will

stand between the realm and the darkness that sweeps from the North. Our

strength is less that a thousand now. Should an attack come, I have three men

to defend each mile of the Wall. The gods help us all if we are not ready.

Ejercicio 28. Mi clave publica RSA es (N,E) = (9797, 1477). Alguien la ha usado para mandarmeel mensaje

NIWJRJHXAIBNNDC

pero como soy muy despistado, no encuentro donde guarde mi clave secreta para poder descrifrar elmensaje. Calcula mi clave secreta y descifra el mensaje.

Observacion: En este caso se usa el alfabeto espanol de 26 caracteres.

Solucion. La observacion es bastante extrana, porque el alfabeto espanol tiene 27 letras. Vamos asuponer que lo que quiere decir es que el texto original esta escrito en espanol (aunque no lo necesitemossaber) y que decimos adios a la ene. Ası los correspondientes valores numericos de las letras seran losusuales, es decir, A=0, B=1,. . . ,Z=25 y nuestra base va a ser b = 26.

Siguiendo el orden logico, primero calcularemos la clave privada y luego descifraremos el mensaje.La clave secreta de un cifrado RSA es d = E−1 mod φ(N). Por un lado, φ(N) = 9600, (de hecho,como N es pequeno, podrıamos incluso factorizar N a mano, obteniendo que N = 97 ·101, y conseguirde ahı φ(N)) y por el otro, d = E−1 mod φ(N) = 13.

Recordemos que debemos pasar los caracteres del mensaje a numeros, obteniendo

(13, 8, 22, 9, 17, 9, 7, 23, 0, 8, 1, 13, 13, 3, 2),

y ver esta lista como las cifras de un entero en base 26. Sin embargo, como se puede observar, esteentero es mucho mas grande que N y esto no puede ocurrir. En consecuencia, esto nos indica que elmensaje en texto claro ha sido cifrado por bloques y ası tambien debemos descifrar por bloques.

La longitud de cada bloque viene determinada por el numero de cifras que tiene N − 1 (el maximomensaje que podemos considerar) en base 26, que es (N)26 = (14, 12, 20). Por lo tanto, cada bloquedebe tener longitud tres y el mensaje queda dividido de la siguiente forma:

NIW|JRJ|HXA|IBN|NDC⇒ ((13, 8, 22), (9, 17, 9), (7, 23, 0), (8, 1, 13), (13, 3, 2)).

Cada bloque son las cifras de un entero en base 26 y, si hacemos la conversion a enteros en todasla tuplas, es decir, si calculamos a · 262 + b · 26 + c para cada tupla (a, b, c), obtenemos que nuestromensaje en bloques es:

(9018, 6535, 5330, 5447, 8868).

Ahora todos los numeros son menores queN . Si aplicamos la funcion de descifrado, es decir, calculamosMd

i mod N para cada bloque Mi, conseguimos (66, 327, 456, 26, 92). Por ultimo, tomamos los dıgitosen base 26 de cada componente de la tupla,

((2, 14), (12, 15), (17, 14), (1, 0), (3, 14)),

76

Page 77: Teor a de C odigos y Criptograf a

y uniendo los caracteres que corresponden a cada numero obtenemos el texto claro COMPROBADO.

Ejercicios 32 y 33. Este ejercicio estudia, en un protocolo RSA y dado un usuario con clave publica(N,E), como factorizar N (de manera eficaz) si conocemos d. Por tanto, factorizar N y desencriptarRSA son problemas equivalentes. Supongamos pues que conocemos N , E y d tales que dE = 1mod φ(N).

� Supongamos que tenemos y ∈ Z tal que y2 = 1 mod N . Probar que entonces podemos calcularen tiempo polinomial un divisor de N .

� Probar que el divisor calculado anteriormente es no trivial si y = ±1 mod N .

� Probar que si escogemos un entero cualquiera x podemos hallar (en tiempo polinomial) y1 =x(d·E−1)/2, que es una raız cuadrada de 1 en Z/ZN .

� Probar que, si en el paso anterior y1 = 1 mod N , podemos calcular y2 =√y1 mod N , que es

de nuevo una raız cuadrada de 1 en Z/ZN .

Este algoritmo es un algoritmo Las Vegas. Esta clase de algoritmos son probabilısticos, y bienpueden no terminar o no dar una respuesta. Sin embargo, si la dan, es siempre una respuesta correcta.

Intenta factorizar, usando el algoritmo anterior, N = 1441499, conocidos E = 17 y d = 507905.

Solucion.

� En general, dado cualquier entero x ∈ Z sabemos que mcd(x,N) es un divisor de N , es decir,1, p, q o N . Sin embargo, la mayorıa de las veces sera un divisor trivial, ası que vamos a hacercaso al enunciado y vamos a considerar y ∈ Z tal que y2 ≡ 1 mod N . Ahora estamos en unasituacion como la del ejercicio T.4.12: como y2 − 1 = (y − 1)(y + 1) ≡ 0 mod N , entoncesN divide a (y − 1)(y + 1), luego tanto p y q dividen a (y − 1)(y + 1). Ahora consideremosmcd(y− 1, N) y mcd(y+1, N). Ambos se pueden calcular en tiempo polinomial, y si escogemosbien y ambos nos daran los dos divisores no triviales de N , como veremos en el siguiente punto.

� Sabemos que N divide a y2−1 = (y+1)(y−1). Sin embargo, y ≡ ±1 mod N , conque y±1 ≡ 0mod N , y ası N no divide a y − 1 ni a y + 1. Por tanto, p y q dividen a alguno de los factores,pero no los dos a uno de ellos; por la discusion del punto anterior mcd(y − 1, N) sera un factorno trivial de N y mcd(y + 1, N) sera el otro.

� Antes que nada hay que refinar el enunciado del tercer punto, porque x debe ser coprimo con N , olo que es lo mismo, una unidad en Z/ZN . En caso contrario, supongamos que z = mcd(x,N) =1. Si z = N , entonces N divide a x y x ≡ 0 mod N , por lo que ninguna potencia de x puede seruna raız cuadrada de 1 en Z/ZN (todas son 0). Si z = p (o analogamente, si z = q), entonces xtampoco puede ser una raız cuadrada de 1 pues, en este caso, x es un divisor de cero en Z/ZN .En conclusion, vamos a considerar x ∈ Z coprimo con N .

Con esa asuncion es facil ver que y21 = xdE−1 ≡ 1 mod N por el Teorema de Euler, ya quedE − 1 ≡ 0 mod φ(N), y ası y1 es una raız cuadrada de 1 modulo N . Dicha raız cuadrada sepuede calcular en tiempo polinomial, porque no requiere mas que efectuar una exponenciacionmodular.

� Supongamos que y1 ≡ 1 mod N . Reparemos en que φ(N) = (p−1)(q−1) y ambos factores sonpares, por lo que φ(N) es un multiplo de 4. Por tanto, como dE− 1 es un multiplo de φ(N), enparticular lo sera de 4, y ası podemos calcular y2 = x(dE−1)/4 mod N . En ese caso y22 = y1 = 1mod N , por lo que y2 es una raız cuadrada de y1 ≡ 1 mod N .

77

Page 78: Teor a de C odigos y Criptograf a

En general, si φ(N) = 2ks, con s ≥ 1 impar, podemos seguir dividiendo dE− 1 por dos al menos kveces para buscar raıces cuadradas. Concretamente, el algoritmo que debemos seguir es el siguiente:

I. Calcular e = (dE − 1)/2, escoger x ∈ Z coprimo con N y hallar y ≡ xe mod N .

II. ¿y ≡ ±1 mod N?

a. Sı. Calcular m = mcd(y − 1, N); m es un factor primo de N y N/m es el otro. Hemosterminado la factorizacion.

b. No.

i. Si e es par, tomar e = e/2 e y = xe mod N y volver al paso II.

ii. Si e no es par, volver al paso I, tomando otro x.

Vamos a intentar factorizar N = 1441499 sabiendo que E = 17 y d = 507905 usando el algoritmoanterior.

Vamos a tomar x = 2 y calculamos e1 = (dE−1)/2 = 4317192 = 23·539649 e y1 ≡ xe1 ≡ 1 mod N .Por tanto, la respuesta al paso II es no. Como e1 es par, podemos calcular una raız cuadrada de y1.Tomamos e2 = e1/2 = (dE−1)/4 = 22·539649 y calculamos y2 = xe2 ≡ 1 mod N . Por tanto, tampoconos sirve este y2 para calcular la factorizacion de N . Como e2 sigue siendo par, podemos calcular unaraız cuadrada de y2, que denotaremos y3 = xe3 mod N , donde e3 = e2/2 = (dE − 1)/8 = 2 · 539649.Ahora y3 ≡ 119533 mod N , por lo que ya estamos en el paso II.a. Ası, p = mcd(y3, N) = 1423 yq = N/p = 1013.

Ejercicio 34. Pedro ha recibido el mensaje GTAF?. Descifrarlo sabiendo que su clave publica RSA es(N,E) = (8388607, 5864343). Se usa un alfabeto de 30 caracteres, donde ¡ = 26, ! = 27, ¿ = 28, ? =29. (Los bloques se han cifrado usando 30 como base.)

Solucion. Primero debemos calcular la clave privada d para descifrar el mensaje, el inverso de Emodulo φ(N). Con la ayuda de Sage, calculamos φ(N) = 8210080, por lo que d = 7.

Como nos dice el enunciado del ejercicio, el alfabeto que utilizaremos es el habitual junto con lossignos de exclamacion e interrogacion. Tiene 30 caracteres, y esa sera nuestra base. Para descifrar,tomamos los valores numericos correspondientes al texto cifrado, (6, 19, 0, 5, 29), y vemos esta tuplacomo las cifras de un entero M en base 30:

M = 6 · 304 + 19 · 303 + 5 · 30 + 29 = 5373179 < N.

(Sabemos que no hay por que dividir el mensaje en bloques.) Por ultimo, tomamos Md mod N =324360 para descifrar el mensaje y lo escibimos en base 30, (M)30 = (12, 0, 12, 0), es decir, la palabraMAMA.

Ejercicio 36 (Debilidades del RSA – Primera parte). Sean p, q dos primos impares y seaN = pq. Sea e ∈ {2, . . . , N} tal que mcd(e, φ(N)) = 1, y consideremos el sistema RSA con clavepublica (N, e). Diremos que un mensaje es no cifrable si verifica que me ≡ m mod N . Siempreexisten mensajes no cifrables; por ejemplo 0, 1 y N − 1. Demuestra que el numero de mensajes nocifrables es exactamente

(1 + mcd(e− 1, p− 1))(1 + mcd(e− 1, q − 1)). (2)

Puedes seguir los pasos siguientes:

1. Supongamos que tenemos a y b en Z tales que ae ≡ a mod p y be ≡ b mod q. Por el TeoremaChino del Resto, sabemos que existe x ∈ Z, unico modulo N , tal que x ≡ a mod p y x ≡ bmod q. Calcula xe mod N .

78

Page 79: Teor a de C odigos y Criptograf a

2. Demuestra que el numero de soluciones de la ecuacion xh ≡ 1 mod p es mcd(p− 1, h).

3. Demuestra que existen exactamente mcd(e−1, p−1)+1 soluciones a ∈ Z/NZ de la congruenciaae ≡ a mod p (atencion al cero, que siempre es solucion) y termina la demostracion de (2).

Solucion. Vamos a seguir los pasos que nos proponen.

1. Como nos dice el enunciado del ejercicio, existe una unica solucion modulo N = pq al sistemade ecuaciones {

x ≡ b mod px ≡ c mod q

.

Sea y = xe. Tenemos que y es congruente con ae modulo p, pero como ae ≡ a mod p, tambieny ≡ a mod p. El razonamiento analogo se puede realizar con b y q, ası que de nuevo por elteorema chino del resto, y = xe ≡ x mod N y x es un mensaje no cifrable.

2. El numero de soluciones de esta ecuacion ya la hemos calculado en el ejercicio 22 de esta relacionde ejercicios, es el cardinal del conjunto D = {x ∈ F∗

p : xh ≡ 1 mod p} (simplemente hemoscambiado la notacion).

3. Es evidente que 0 ∈ Fp es una solucion de la congruencia ae ≡ a mod p. Ademas, si a = 0 ∈ Fp,o lo que es lo mismo, a ∈ F∗

p, dicha congruencia se da si y solo si ae−1 ≡ 1 mod p. De aquı, elnumero de soluciones de la congruencia es 1 + |{a ∈ F∗

p : ae−1 ≡ 1 mod p}|. Por el apartado2 sabemos que el cardinal de este ultimo conjunto es mcd(e − 1, p − 1), luego el numero desoluciones de la congurencia ae ≡ a mod p es 1 + mcd(e− 1, p− 1).

Queremos saber cual es el numero de mensajes no cifrables para el sistema RSA con clave publica(N, e), es decir, queremos calcular el cardinal del conjunto M = {m ∈ Z/ZN : me ≡ m mod N}(recordamos que los mensajes cifrados por RSA tienen que cumplir que m < N , y si no es ası, sedivide en bloques mas pequenos de forma que sı se cumpla esta condicion). Si ahora consideramos elisomorfismo que nos proporciona el teorema chino del resto,

ψ : m+ZN ∈ Z/ZN 7→ (m+Zp,m+Zq) ∈ Fp × Fq,

vemos que M se corresponde con el conjunto

C = {(a+Zp, b+Zq) ∈ Fp × Fq : ae ≡ a mod p, be ≡ b mod q},

es decir, ψ(M) = C y ψ−1(C) =M47. Por tanto, el cardinal de M , el que buscamos, es igual al de C,y por el apartado 3 tenemos que |C| = (1 +mcd(e− 1, p− 1))(1 + mcd(e− 1, q − 1)).

Ejercicio 37 (Debilidades del RSA - Segunda parte). Sean p y q dos primos impares y seaN = pq. Sea e ∈ {2, . . . , N} tal que mcd(e, φ(N)) = 1, y consideramos el sistema RSA con clavepublica (N, e). Sea m ∈ Z≤N un mensaje en claro y c = me mod N el correspondiente mensajecifrado.

1. Demuestra que existe k ≥ 1 tal que

cek ≡ c mod N. (3)

2. Concluye que m ≡ cek−1mod N . ¿Puedes disenar una estrategia para encontrar el mensaje m?

47¿Por que? La prueba es mas facil con el argumento del primer apartado por delante.

79

Page 80: Teor a de C odigos y Criptograf a

3. Dada la clave publica (N = 1252061, e = 25), supongamos que hemos interceptado el mensajecifrado c = 581888. Utiliza la ecuacion (3) para descifrar c.

Solucion. Supongamos antes que nada que m no es un mensaje no cifrable, porque entonces c escongruente con m modulo N y ası tambien cualquier potencia de la forma ce

kpara k ≥ 1. Tambien

vamos a suponer que c es primo con N . Si no fuera ası, habiendo evitado ya el caso en el que c = m = 0(que es no cifrable), tendrıamos que mcd(c,N) (una operacion sencilla de realizar) serıa p o q. Esaeleccion permite hallar a cualquiera que capte el mensaje cifrado la factorizacion de N , que debemantenerse en secreto a toda costa. En conclusion, supongamos que c = m es una unidad en Z/ZN .

1. Como mcd(e, φ(N)) = 1, se tiene que e ∈ (Z/Zφ(N))∗. Consideremos el orden multiplicativode e en ese ultimo grupo, y denotemoslo por k (este orden es finito, de hecho sera un divisor deφ(φ(N))). Entonces, ek ≡ 1 mod φ(N), es decir, ek = 1+ rφ(N) para cierto r ∈ Z. Por tanto,

cek ≡ c1+rφ(N) = ccφ(N)r ≡ c mod N

por el teorema de Euler (aquı es donde usamos que mcd(c,N) = 1).

2. En el apartado anterior hemos visto que ek ≡ 1 mod φ(N), por lo que ek−1 ≡ e−1 mod φ(N),es decir, ek−1 es la clave privada d de la persona que recibe el mensaje cifrado, y podemosconcluir que cd = ce

k−1 ≡ m mod N .

Otra forma de verlo es haciendo el calculo directamente (aunque esencialmente es lo mismo):

cek−1 ≡ (me)e

k−1= mek ≡ m mod N,

nuevamente por el teorema de Euler; como mcd(me, N) = 1, entonces mcd(m,N) = 1.

La estrategia para encontrar el mensaje es la siguiente: calcular cek

mod N para todo k ≥ 1hasta que ce

k ≡ c mod N . La potencia anterior, cek−1

, sera m mod N . (Esta estrategia, queparece derrumbar la seguridad del sistema RSA, no es tan efectiva si se elige bien e. Aunqueefectuar exponenciacion modular es de complejidad polinomial, hacerlo k veces es exponencialen k; si el orden multiplicativo de e en Z/Zφ(N) es lo suficientemente grande estaremos a salvo.)

3. Siguiendo el procedimiento marcado arriba y con la ayuda de Sage, comenzamos calculando ce

mod N ≡ 797532, que no es congruente con c. Luego seguimos con el resto de las potencias cek

mod N , con k ≥ 2 hasta que alguna de ella es congruente con c modulo N . Esto ocurre conk = 138, por lo que el mensaje original es m = ce

137mod N = 691954.

Ejercicio T.4.2. Supongamos que queremos usar RSA en una comunidad de confianza y, para ahorrarcostes, utilizamos todos el mismo N = pq, dado que no tenemos problemas en que otros usuarios de lacomunidad lean los mensajes que nos intercambiamos. Supongamos que Eve (que no es miembro dela comunidad) intercepta un mensaje que Alice ha enviado a dos usuarios, Bob y Chuck. Las clavespublicas de estos son, respectivamente, (N,EB) y (N,EC).

Eve conoce por tanto M1 = mEB y M2 = mEC . Calcula entonces los siguientes numeros:

T1 = E−1B mod EC , T2 =

1− T1EB

EC.

Probar que con estos datos, Eve puede recuperar el mensaje original m.

80

Page 81: Teor a de C odigos y Criptograf a

Solucion. En este ejercicio debemos suponer que mcd(EB, EC) = 1 para poder calcular T1, puesen caso contrario EB no serıa invertible modulo EC . Observemos tambien que T2 es un entero: siT1 = E−1

B mod EC , entonces T1EB = 1 + rEC para algun r ≥ 1. El cociente T2 no es mas que −r.Con eso en mente, a Eve le basta simplemente con calcular MT1

1 MT22 mod N , pues

MT11 MT2

2 ≡ mEBT1+ECT2 = m mod N.

Ejercicio T.4.3. Dado que en RSA hay libertad para escoger la clave de encriptacion, los usuariospodrıan estar tentados de escoger una clave sencilla, como por ejemplo 3. Supongamos que Alice, Boby Chuck escogen EA = EB = EC = 3 y que otro usuario les envıa el mismo mensaje, m, interceptadopor Eve en la forma

M1 = m3 mod NA, M2 = m3 mod NB, M3 = m3 mod NC .

Probar que Eve puede recuperar el mensajem hallando la solucion al siguiente sistema de congruencias(por el teorema chino del resto, por ejemplo):

x = M1 mod NA,x = M2 mod NB,x = M3 mod NC .

Una eleccion habitual hoy para los sistemas RSA es escoger E = 65537.

Solucion. En este ejecicio suponemos que los Ni, para i ∈ {A,B,C}, son todos distintos. Ademas,supongamos por un momento que NA y NB no sean primos entre sı. Entonces mcd(NA, NB) es undivisor no trivial de NA y de NB, por lo que ya tenemos la factorizacion de NA y de NB y podemoscalcular la clave de descifrado de Alice y Bob, obteniendo el mensaje en claro.

Por tanto, vamos a suponer que los Ni son primos entre sı dos a dos. De esta forma, por el teoremachino del resto, sabemos que el sistema de congruencias del enunciado tiene una unica solucion xmodulo NANBNC . Por otro lado, m3 es menor que NANBNC , pues m < Ni para todo i, y satisface elsistema, ası que x = m3. Ahora ya nos basta calcular la raız cubica del entero x, que se puede realizaren tiempo polinomial por el metodo de Newton como ya comentamos en la solucion del ejercicio 34 delas notas de teorıa. (Es decir, la flaqueza del planteamiento esta en que es facil averiguar unos pocosmensajes cifrados, todos ellos proviniendo del mismo mensaje en claro, y no en que calcular una raızde cierto exponente sea difıcil.)

Ejercicio T.4.6. Supongamos que estamos creando una clave para RSA y hemos escogido ya p, q yE. Probar que podemos escoger d como

d ≡ E−1 mod mcm(p− 1, q − 1).

Solucion. Llamamos s = mcm(p − 1, q − 1). Si dE ≡ 1 mod s, entonces tambien tenemos la mismaigualdad modulo p − 1 y q − 1. Por tanto, siempre y cuando m no sea un multiplo de p ni de q (yahemos explicado en el ejercicio 37 por que no conviene tomarlo ası), podemos usar el pequeno teoremade Fermat para obtener que

mEd ≡ m mod p,

mEd ≡ m mod q.

Usando una vez mas el teorema chino del resto, podemos afirmar que mEd ≡ m modulo N = pq, yesto significa que podemos descifrar el mensaje.

81

Page 82: Teor a de C odigos y Criptograf a

Ejercicio T.4.7. Probar que si escogemos en RSA (por error, se entiende) N de manera que es primo,Eve puede descifrar facilmente cualquier mensaje que nos envıen.

Solucion. Consideremos nuestra clave publica (N,E). Si N es primo, conocemos φ(N), que es N − 1,ası que cualquiera puede calcular d, que es el inverso de E modulo φ(N). Y conociendo d se puedendescifrar los mensajes rapidamente. (Ojo: determinar si un numero es primo o no se puede realizaren tiempo polinomial.)

Ejercicio T.4.8. Una idea que liga factorizacion con diferencias de cuadrados, y que debemos aFermat, funciona como sigue: imaginemos que N = pq. Entonces tenemos que

N =

(p+ q

2

)2

−(p− q2

)2

=: t2 − s2.

La idea de Fermat para factorizar consistıa en buscar enteros t >√N tales que t2−N es un cuadrado

perfecto. Explica por que esto hace que escoger dos primos muy proximos p y q no sea buena idea enRSA.

Solucion. El algoritmo para factorizar un numero mediante este metodo es el siguiente:

I. Considerar t = ⌈√N⌉, el menor entero mayor que

√N (N no es un cuadrado perfecto).

II. Calcular r = t2 −N .

a. Si r no es un cuadrado perfecto, tomar t = t+ 1 y volver al paso II.

b. Si r es un cuadrado perfecto, digamos r = s2, entonces N = (t− s)(t+ s) y ya tenemos lafactorizacion.

Si p y q son dos primos muy proximos, tenemos que el cuadrado(p−q

2

)2es un numero relativamente

pequeno, por lo que el algoritmo descrito anteriormente, conocido como metodo de Fermat, va aencontrar ese cuadrado relativamente pronto (al fin y al cabo, en este metodo la diferencia r := t2−Ncomienza siendo lo menor posible y aumenta en cada etapa). Ese sera el caso del siguiente ejercicio.

Ejercicio T.4.9. Factoriza 23360947609 usando la idea del ejercicio anterior.

Solucion. Vamos a aplicar el metodo de Fermat descrito en el anterior ejercicio. Primero, tenemosque la parte entera superior de

√N es t = 152843. Ahora tenemos que t2 −N = 35040, que no es un

cuadrado perfecto. Entonces, renombramos t := t+1 = 152844 y volvemos a calcular t2−N = 340727que de nuevo no es un cuadrado perfecto. Por consguiente, tenemos que aumentar en una unidadt := t+ 1 = 152845. Si calculamos t2 −N = 646416 = s2 con s = 804. Con esto ya podemos calcularla factorizacion de N , pues

N = t2 − s2 = (t− s)(t+ s) = 152041 · 153649.

Merece la pena resaltar que en este caso son primos muy proximos y que hemos encontrado la factor-izacion despues de solo tres iteraciones del algoritmo anterior.

Ejercicio 31 de teorıa. Si Eve quiere descifrar un mensaje cifrado por un protocolo RSA, unaopcion obvia es factorizar NA y actuar como lo hace Alice. Sin embargo, lo que Eve necesita es dA.¿Es necesario factorizar NA para resolver este problema?

Solucion. Realmente no es necesario; nos basta conocer φ(NA), pues dA ≡ E−1A mod φ(NA). El

problema es que averiguar φ(NA) es igual de difıcil que factorizar NA. Una implicacion es evidente, yya vimos en el ejercicio 1.40 que la otra tambien es cierta. (Por otro lado, si conocemos dA tambienpodemos –como en el ejercicio 32– encontrar la factorizacion de N .)

82

Page 83: Teor a de C odigos y Criptograf a

Ejercicio 33 de teorıa. En el cifrado de ElGamal, ¿que objeto puede tener el escoger G con ordendivisible por Q?

Solucion. La clave de el cifrado de ElGamal esta en que Alice conoce Mna1 = GhnA , y solo ella puede

calcularlo utilizando nA. Recordemos tambien que G, EA = GnA son publicos, y M1 = Gh puede serinterceptado por Eve. Ası pues, para garantizar la seguridad del criptosistema, hace falta que no sepueda calcular GhnA conociendo G, Gh, GnA .

Ahora bien, resulta que GhnA esta en ⟨Gh⟩ y ⟨GnA⟩, luego si alguno de estos dos grupos (quedenotaremos por H) es muy pequeno, Eve podrıa probar un ataque por fuerza bruta, calculando elconjunto {M2/g : g ∈ H}.

Por tanto, necesitamos escoger G de forma que ⟨G⟩ no tenga subgrupos de orden pequeno, o, si lostiene, que sean pocos, para que no sea muy probable que GnA o Gh esten contenidos en uno de ellos.Lo ideal serıa escoger G de forma que el orden de G fuera exactamente Q; en ese caso, ⟨G⟩ ∼= Z/QZ,que no tiene subgrupos no triviales. Si escribimos P −1 = Qr, con r un numero pequeno, un modo dehacer esto serıa escoger G0 ∈ F∗

P y tomar G = Gr0. En este caso, tenemos que G estarıa contenido en

el subgrupo de F×P de orden Q (¿puedes razonar por que?), y por tanto si no es el elemento identidad,

necesariamente tendra orden Q.

Ejercicio 34 de teorıa. ¿Por que en el cifrado de Rabin se encripta haciendo m(m+ EA) en lugarde simplemente m2?

Solucion. En una version simplificada se puede tomar M = m2 sin problemas, porque al fin y al cabola dificultad del descifrado estriba en el calculo de las raıces cuadradas desconociendo la factorizacionde NA. Sin embargo, si m es lo suficientemente pequeno, de modo que m2 < NA, podemos usar elmetodo de Newton para calcular la raız cuadrada del entero M (sin tomar modulo NA) en tiempopolinomial y descifrar sin dificultad el mensaje. Si tomamos EA grande, el producto m(m + EA) esmayor que NA y evitamos el ataque anterior.

83