Solución Exa Jun 95 - 002
Solución Exa Jun 95 - 002
SOLUCION AL EXAMEN
Sol: Porque si no se cumple que ambos números sean primos entre sí, por teoría
de números se demuestra que no se obtiene el conjunto completo de restos
del módulo, o lo que es lo mismo, no se puede generar el alfabeto completo de
cifrado con los mismos elementos del texto en claro o no hay inversos.
b) ¿Qué significa que la entropía de una clave sea alta? Bajo el punto de vista de
la criptografía, ¿es bueno o malo que sea un valor alto y por qué?
Sol: Cometemos un error ya que suponemos que Fi/N = pi lo cual no es cierto pues
al calcular IC en el que interviene pi2, este valor es en realidad Fi(Fi-1)/N(N-1).
Este error tiene importancia cuando la cantidad de criptograma a analizar es
pequeña, por ejemplo menos de 100 palabras. Siempre aumentará el valor de
IC, es decir, el error será por exceso pues Fi2 > Fi(Fi-1) si bien N(N-1) N2,
siendo más significativo cuando Fi es un número pequeño, por ejemplo < 10.
No obstante, como una primera aproximación o cuando no se cuenta con los
medios adecuados, se puede llegar a resultados satisfactorios de
criptoanálisis.
0 0 1 1
Cadena cifrante
Sol: Los cuatro primeros dígitos a transmitir serán los de la clave, es decir 1100.
Los próximos cuatro bits serán el resultado de aplicar la operación XOR de las
celdas 1ª y 4ª, por ejemplo, el primer resultado (semilla) será 0 XOR 1 = 1. En
resumen, se tendrán los siguientes estados, en el que el bit de la izquierda es
el resultado de la operación XOR y el bit de la derecha (en negrita y
subrayado) corresponde al próximo bit a transmitir junto con el desplazamiento
del registro:
Estado i: 0011 Estado i+1: 1001 Estado i+2: 0100 Estado i+3: 0010
Estado i+4: 0001 Estado i+5: 1000 Estado i+6: 1100 Estado i+7: 1110
Sol: Como los bits de entrada a la caja S1 son 101110, separamos estos dígitos
para buscar filas y columnas: los dígitos de los extremos (1....0) nos entregan
la fila y los cuatro dígitos centrales (..0111..) la columna en dicha caja.
Fila: 102 = 210 Fila 2; Columna: 01112 = 710 Columna 7
Según las tablas de Cajas S, en caja S1 la intersección de fila 2 y columna 7
entrega el número 11 que pasado a notación binaria es: 1011.
Luego, la secuencia de salida de la caja S1 es: 1011.
C = ZI UC FA FQ TS JB AC BF UZ
Se pide descriptarlo y encontrar el mensaje M.
Solución: La matriz de Playfair para cifrar queda como la indicada que, utilizando
el algoritmo de este tipo de cifrado, entrega el mensaje M que se indica.
S A B I N
C D E F G
H J L M Ñ
O P Q R T
U V X Y Z
C = ZI UC FA FQ TS JB AC BF UZ
Luego: M = YN OS DI ER ON LA SD IE ZY
Solución:
d) Se debe transmitir con 6 bits porque el mayor criptograma parcial posible para
esta mochila de cuatro elementos será precisamente para un mensaje 1111
cuyo valor cifrado es 37. Es decir, se cumple que 25 < 37 < 26.
Entonces: m1 = 3; m2 = 9; m3 = 3; m4 = 19
Alicia (A) desea transmitir un mensaje M a Bernardo (B) dentro de un cuerpo finito Zn,
con n = 27, el número de letras del alfabeto utilizado, el español. El cifrado mediante
RSA será letra a letra. Si el grupo y claves que utiliza cada usuario es:
Solución:
da = inv (ea, (na)) = inv (5,24) = 5 db = inv (eb, (nb)) = inv (3,20) = 7
SOLUCIÓN AL EXAMEN
Solución: Significa que es necesario contar al menos con 23 caracteres para que
exista una solución única en el espacio de mensajes con sentido. No
obstante, este valor no asegura que se pueda descriptar el criptograma
inmediatamente; es necesario un mayor esfuerzo y, en general, se
deberá contar con un texto cifrado mucho más largo.
EJERCICIOS PRÁCTICOS
Solución:
Haciendo un recuento de frecuencias relativas de aparición de
caracteres en el criptograma (de longitud 39 caracteres), obtenemos:
a) Dado que se nos dice que el texto en claro cumple con la distribución de
frecuencia característica del lenguaje español, supondremos que los tres
caracteres de mayor frecuencia en el criptograma (V,C,W) se corresponden
con las letras (E,A,O). Entonces:
(1) (a 4 + b) mod 27 = 22
(2) (a 0 + b) mod 27 = 2 b=2
(3) (a 15 +b) mod 27 = 23
NOTA: Para asegurar que es ésta la función de cifrado habría que aplicarla a parte
del criptograma para obtener texto en claro con sentido.
Solución:
k11 k12 2 0
a) K = =
k21 k22 1 1
M = H A K U N A M A T A T A
M = 7 0 10 21 13 0 12 0 20 0 20 0
Cálculo de c1c2:
2 0 7
c1c2 = K(m1m2) = x mod 27
1 1 0
Cálculo de c3c4:
2 0 10
c3c4 = K(m3m4) = x mod 27
1 1 21
Cálculo de c5c6:
2 0 13
c5c6 = K(m5m6) = x mod 27
1 1 0
Cálculo de c7c8:
2 0 12
c7c8 = K(m7m8) = x mod 27
1 1 0
Cálculo de c9c10:
2 0 20
c9c10 = K(m9m10) = x mod 27
1 1 0
b) k11 k12 2 0
K = = K =2 1-1 0=2
k21 k22 1 1
14 0 14 0
-1
K = mod 27 =
-14 28 -14 1 y se comprueba que:
2 0 14 0 1 0
K x K-1 = x =
1 1 -14 1 0 1 es la matriz de identidad
c) Como C = Ñ H T E Z N X M N T N T
C = 14 7 20 4 26 13 24 12 13 20 13 20
14 0 ci
-1
mimj = K cicj = x mod 27
-14 1 cj
Solución:
c) Como el mayor número que puede obtenerse con esta mochila es el 109,
correspondiente a una entrada 1111, necesitan 7 bits puesto que:
PARTE TEÓRICA
Solución:
a) El texto 1 nos servirá para atacar un cifrado de Hill trigrámico pues AAB, ABA y
BAA son los vectores unitarios del sistema.
b) El texto 2 nos servirá para atacar un cifrado por desplazamiento, decimación o
afín, con cualquier tipo de alfabeto en módulo 27.
c) El texto 3 nos servirá para atacar cifradores polialfabéticos. Si la longitud de la
clave es menor que 15 caracteres, al cifrarlo obtendremos la clave en claro.
Solución:
16 18 15
a) K = 3 21 2 => det(K) mod 27 = - 27 = 0 No es válida (matriz singular mod 27)
20 15 19
3 4 19
b) K = 2 21 1 => det(K) mod 27 = - 8 = 19 Es válida.pues mcd (19,27) = 1
18 8 18
12 8 18
c) K = 0 13 3 => det(K) mod 27 = - 9 = 18 No es válida pues mcd (18,27) = 9
15 11 0
Solución:
a) En binario la entrada a las cajas S será: A4 = 1010 0100; E2 = 1110 0010;
DF = 1101 1111; EF = 1110 1111; 8C = 1000 1100; D4 = 1101 0100.
Luego en las cajas S entran los siguientes 6 bits:
S1 = 101001; S2 = 001110; S3 = 001011; S4 = 011111;
S5 = 111011; S6 = 111000; S7 = 110011; S8 = 010100.
Por lo tanto la salida de cada caja S será:
S1 = 4; S2 = 4; S3 = 4; S4 = 9; S5 = 4; S6 = 1; S7 = 5; S8 = 3.
b) El número total de bits de salida de las cajas S será 32, correspondientes a los
valores de Si, es decir: S = 0100 0100 0100 1001 0100 0001 0101 0011.
c) Agrupando S en bloques de 8 bits obtenemos los siguientes valores decimales:
68 73 65 83 (44 49 41 53 en hexadecimal) que en ASCII se corresponden con
la cadena de caracteres DIAS.
4. Para un sistema de cifra RSA con p = 97 y q = 31, nos dicen que podemos
usar cualquiera de las siguientes claves públicas:
a) e = 24 b) e = 33 c) e = 45 d) e = 49
¿Cuáles de ellas son válidas y cuáles no? Justifique su respuesta.
Solución:
(n) = (p-1)(q-1) = (97-1)(31-1) = 96 30 = 2880 = 26 32 5
Luego la clave pública e no podrá tener factor común con 2, 3 ó 5.
a) 24 tiene factor común con 2 y 3. Luego, no es una clave pública válida.
b) 33 tiene factor común con 3. Luego, no es una clave pública válida.
c) 45 tiene factor común con 3 y 5. Luego, no es una clave pública válida.
d) 49 no tiene estos factores comunes. Luego, es la única clave pública válida.
Solución:
El valor mínimo del grupo de trabajo n deberá ser el primer primo mayor que el
máximo valor ASCII a cifrar que es 255. Luego nmín = 257.
PARTE PRÁCTICA
Solución:
Solución:
Luego, inv (242,1997) = 982. Por lo tanto, Bernardo descifra el mensaje calculando:
Paco y Lola se envían mensajes de amor por correo electrónico que desean se
mantengan en secreto. Además, para evitar malos entendidos y una que otra
sorpresa desagradable, todos sus mensajes los firman digitalmente. Para ello deciden
"pasar del ASCII" y enviar sus mensajes codificados sólo con 28 elementos de forma
que A=00, B=01, C=02 ... X=24, Y=25, Z=26 y Blanco=27 usando técnica de cifrado
RSA.
El grupo de trabajo y clave pública de cada uno son:
PACO: ZnP = 7*5 = 35 eP=11.
LOLA: ZnL = 3*11 = 33 eL=7.
Después de una fuerte discusión, Paco envía a Lola el mensaje "SÍ" a lo cual
Lola le contesta como es de esperar con el mensaje "NO". Ambos firman usando sólo
el primer carácter enviado (es decir, la S para Paco y la N para Lola). Se pide:
a) Enviar los dos mensajes. Paco: MP = M1P, M2P; Lola: ML = M1L, M2L.
b) Firmar cada uno de los mensajes: rP para Paco y rL para Lola.
c) Descifrar los criptogramas y comprobar la firma en cada caso.
Solución:
SOLUCIÓN AL EXAMEN
Solución:
Solución:
a1) Cálculo de u, w:
El módulo u debe ser mayor que la suma de los elementos de la mochila fácil. Como
este valor es igual a 57, elegimos u=58.
Como 58=2 29, elegimos w = 3 pues es el número menor que cumple mcd (u,w) = 1.
a2) La mochila difícil S será w S' mod u, luego:
S1 = 3 3 mod 58 = 9 S2 = 3 9 mod 58 = 27
S3 = 3 15 mod 58 = 45 S4 = 3 30 mod 58 = 32
La mochila difícil será: S = [9, 27, 45, 32] que no es supercreciente.
a3) Para cifrar representamos el mensaje en su código binario y lo pasamos por la
mochila de forma que:
M= MISION
IMPOSIBLE
STOP, se transmitirá como:
a) Cifrar con RSA el mensaje M = "OLE TUS VIDEOS" por bloques de dos
caracteres eligiendo consecuentemente un grupo de trabajo mínimo de cifra.
Asimismo, deberá elegirse como clave pública el número más pequeño
posible.
b) ¿Es posible representar el criptograma con caracteres? Justifique su
respuesta.
Solución:
El cuerpo mínimo para cifrar mensajes con este alfabeto será el número
inmediatamente superior a 2828 (ZZ). Luego, hay que buscar dos primos p y q de
valores parecidos y cuyo producto sea ligeramente superior a este valor. Calculando
la raíz cuadrada de 2828 se obtiene 53,18 por lo tanto elegiremos los siguientes
valores:
p = 53; q = 59 n = p q = 3127
Luego (n) = (p-1)(q-1) = 52 58 = 3016
Elegimos e=3 pues es el número más bajo que cumple mcd (e, (n)) = 1.
Solución:
b) Ha sido muy fácil romper la cifra (clave privada de los emisores) porque el número
n es el producto de dos primos muy pequeños y el problema de la factorización es
simple.
Solución al Examen
Nota: Este archivo corresponde al documento original del examen.
PARTE TEÓRICA
1. ¿Cuál de los dos textos M1 o M2 tiene una entropía mayor y por qué?
Nota: No es necesario calcular el valor de dichas entropías.
Los espacios en blanco y signos de puntuación no se consideran.
M1 : HABIA UNA VEZ UN CIRCO.
M2 : AHI ESTA, AHI ESTA, LA PUERTA DE ALCALA.
Solución: La letra más frecuente del criptograma F, que aparace 8 veces, debería
corresponder a la E, A, O, S,... etc. del texto en claro. Si F=E, entonces
el desplazamiento b=1 con lo que M = PI LEQ VSFES... que es
ininteligible. Si F=A, entonces b=5 y M = ME HAN ROBAO... que es
texto en claro.
Luego b=5 será el único desplazamiento que entrega un texto inteligible
en castellano, con lo cual desciframos el criptograma como sigue:
M = Me han robao la mountain bike, fue un yonqui de la Plaza Real.
A igual resultado se llega mediante un ataque por fuerza bruta,
aplicando sucesivos desplazamientos. En este caso se rompe el
criptograma con un desplazamiento b' igual a 27-b = 27-5 = 22
espacios.
3. Nos dicen que al transformar una mochila fácil A' multiplicando sus elementos
por w y reduciendo el resultado módulo u, de forma que mcd (w,u) = 1, se
obtiene siempre una mochila difícil A, independientemente del tamaño de la
mochila. ¿Es esto cierto o no? Justifique su respuesta con un ejemplo.
Solución: a) Los valores p=17 y q=19, son primos; además n = p q = 17*19 = 323.
Como este valor es mayor que 256, sirve para cifrar ASCII.
(n) = (p-1)(q-1) = (17-1)(19-1) = 16*18 = 288. Como mcd (5,288) = 1,
entonces la clave pública e = 5 también es apropiada.
b) El segundo mensaje M2 tiene los mismos caracteres que el primero,
con la excepción de la letra I. Como su valor ASCII es 73, este carácter
se cifrará como 735mod 323 = 99. Esto significa que el criptograma C2
será: C2 = 12 229 12 102 129 223 229 99 129.
PARTE TEÓRICA
Solución:
1a) a) Ci = (Mi + b) mod n Mi = (Ci - b) mod n
b) Ci = a Mi mod n Mi = a -1 Ci mod n
c) Ci = (a Mi + b) mod n Mi = a -1 (Ci - b) mod n
-1
donde a = inv(a,n) y se puede reemplazar -b por (n-b).
1b) SOL = M1M2M3 = 19 15 11. Por otro lado, a -1 = inv (7,27) = 4.
a) C1 = (19+3) mod 27 = 22 = V M1 = (22 - 3) mod 27 = 19 = S
C2 = (15+3) mod 27 = 18 = R M2 = (18 - 3) mod 27 = 15 = O
C3 = (11+3) mod 27 = 14 = Ñ M3 = (14 - 3) mod 27 = 11 = L
b) C1 = 7 19 mod 27 = 25 = Y M1 = 4 25 mod 27 = 19 = S
C2 = 7 15 mod 27 = 24 = X M2 = 4 24 mod 27 = 15 = O
C3 = 7 11 mod 27 = 23 = W M3 = 4 23 mod 27 = 11 = L
c) C1 = (7 19+3) mod 27 = 01 = B M1 = 4 (01 - 3) mod 27 = 19 = S
C2 = (7 15+3) mod 27 = 00 = A M2 = 4 (00 - 3) mod 27 = 15 = O
C3 = (7 11+3) mod 27 = 26 = Z M3 = 4 (26 - 3) mod 27 = 11 = L
Solución:
2a) Todas las operaciones algebraicas deben tener inversa. Es el caso de las dos
sumas. En cambio si el cuerpo de la multiplicación es 216 no se obtienen todos los
restos y por lo tanto no se asegura la existencia de inverso. Si el módulo es 216 +1 y
se considera que el bloque de 16 ceros es igual al número 216 = 65.536, se obtiene
para cada multiplicación el conjunto completo de restos y por tanto la existencia de un
único inverso para cada valor. La tabla del producto X Y (números de 16 bits cada
uno) se obtiene haciendo la multiplicación en decimal o binario de todos los posibles
valores de X e Y en el cuerpo 216 (0, …, 65.535) considerando que 0 = 65.536 y
reduciendo todas las operaciones en módulo 216+1.
3. En una vuelta del algoritmo DES entra en las Cajas S la siguiente cadena de 48
bits: S = 01110010 00001100 11001011 01101011 00100110 11111000. Si los bits
más significativos afectan a la caja S1 y así sucesivamente, se pide:
a) Indicar para cada caja S la entrada en bits, la fila y columna dentro de ella
para obtener el valor de salida y la salida en decimal.
b) ¿Cuál es la cadena completa de bits de salida en esta fase del DES en
octetos?
Solución:
2b) Pasando a binario esta cadena de bits se tiene la siguiente salida en octetos:
S = 00000000 11111111 00000000 11111111
Solución:
El único archivo posible cifrado con PGP es DOC3.PGP porque para un archivo con
formato como es este caso con un tamaño de algunos kbytes, al aplicar por defecto la
opción de compresión ZIP, el tamaño final se reduce significativamente, incluso si
luego se modifica el formato con armadura (Radix 64) para su transmisión por
Internet. DOC1.PGP y DOC2.PGP tienen un tamaño igual o mayor que el documento
fuente y DOC4PGP no tiene la extensión de archivos cifrados por defecto (.PGP) de
este programa.
5. Segismundo dice que no firma digitalmente sus mensajes cifrados enviados por
email porque el archivo resultante tiene un tamaño igual al doble del que no incluye
firma. Venancio afirma estar seguro de que eso no es cierto y que el tamaño del
fichero sólo se ve incrementado en unas decenas de bits. Prudencio asegura que
el hecho de firmar un mensaje no altera el tamaño del archivo final pues va
implícito en el mismo mensaje. Si los tres están hablando de un sistema real como
por ejemplo el PGP:
a) ¿Quién de los tres tiene razón y porqué?
b) ¿Qué función hace que el tamaño del archivo final con firma digital sea el
doble, algo mayor o no se vea afectado por la inclusión de la firma?
Solución:
a) Tiene la razón Venancio porque la firma digital sólo aumenta el tamaño del
documento en un valor del orden de las centenas de bits debido al resumen que se
le añade a éste.
b) Se trata de una función hash que en PGP es el algoritmo MD5, que actúa sobre el
texto en claro convirtiéndolo en n bloques de tamaño 512 bits cada uno (añadiendo
bits si es el caso) y que produce como salida una cadena de 128 bits que es
función de todo el mensaje original.
PARTE PRÁCTICA
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
C1 6 6 13 0 14 5 3 6 6 2 8 0 0 0 1 0 11 1 5 4 23 0 1 0 14 0 0
C2 0 0 3 0 11 2 3 6 13 0 2 2 13 1 0 7 7 15 0 12 3 6 6 5 5 7 0
C3 0 2 0 12 1 1 3 24 1 4 1 11 0 0 2 5 7 0 14 2 5 14 5 4 10 0 0
C4 1 0 4 5 11 1 10 3 8 12 5 3 8 1 0 0 2 1 10 1 5 2 22 3 2 0 8
C5 2 9 0 12 5 7 8 4 5 11 3 0 0 2 0 11 0 2 4 18 0 1 0 15 0 0 9
Solución:
1a) En la tabla se ha indicado en negrita los valores que ocupan las posiciones
relativas de las letras AEO en cada subcriptograma. Las cadenas en las que se
cumple esta regla y en las que además la letra con mayor frecuencia corresponde a la
letra E del texto en claro serán PTE, EIS, DHR, RVG y OSD. Puesto que la primera
letra correspondiente al texto en claro A dará la clave, se obtiene los caracteres P, E,
D, R, y O luego la clave es K = PEDRO.
1b) Aplicando directamente la Tabla de Vigenère o aritmética modular se tiene:
C = CMWJW IXHEW POHXG TQLDJ RLREW FSFGB
K = PEDRO PEDRO PEDRO PEDRO PEDRO PEDRO
M = NITRI STENI ALEGR ENIMU CHONI POCON
Ante el trascendental partido de mañana sábado, aparece una pintada en las paredes
del estadio Santiago Bernabéu con el criptograma de cinco números: C =165.739,
50.688, 152.500, 128.125, 150.543. Si existe la sospecha de que se ha cifrado con la
mochila pública S = [839, 1.678, 3.356, 6.712, 13.424, 26.848, 53.696, 41.855,
18.173, 36.346, 7.155, 14.310, 28.620, 57.240, 48.943, 32.349] y además sabemos
que el módulo de trabajo es = 65.537 y que la mochila fácil S’ = [1, 2, 4, 8, 16, 32,
64, 128, 256, 512, 1.024, 2.048, 4.096, 8.192, 16.384, 32.768], se pide:
a) Encontrar la trampa w -1 con el Algoritmo Extendido de Euclides de Restos.
b) Descifrar el criptograma y representarlo como una cadena de octetos (bits).
Nota: C w -1 mod = 12.930, 1.154, 33.458, 18.978, 8.850
c) Si el texto es ASCII, ¿cual es el mensaje para los merengues?
d) Si se incluye una marca de firma con una función hash suma or exclusivo de todos
los caracteres tomados de dos en dos: M1M2 M3M4 M5M6 etc., ¿cómo lo
haría?
e) ¿Cuáles serían el módulo de trabajo y factor w mínimos para esta mochila?
Solución:
2a) El valor de w se puede deducir fácilmente de los valores de las mochilas difícil y
fácil pues es el primer valor de S que se obtiene como S = S’ w mod .
La trampa w -1 será inv (w, ) = inv (839, 65.537). Usando el método de Euclides:
65.537 = 78 839 + 95 Restos: 95 = 65.537 - 78 839
839 = 8 95 + 79 79 = 839 - 8 95
95 = 1 79 + 16 16 = 95 - 1 79
79 = 4 16 + 15 15 = 79 - 4 16
16 = 1 15 + 1 1 = 16 - 1 15
15 = 15 1 + 0
Ordenando por restos se tiene:
1 = 16 - 1 15 = (95 - 1 79) - 1(79 - 4 16)
1 = (95 - 79) - (79 - 4(95 - 1 79))
1 = 5 95 - 6 79 = 5 95 - 6(839 - 8 95) = 53 95 - 6 839
1 = 53(65.537 - 78 839) - 6 839
1 = (53 65.537 - 4140 839) mod 65.527 Luego inv (839, 65.537) = -4140
-1
Por lo tanto, la trampa w = (-4140 + 65.537) mod 65.537 = 61.397
2b) Para descifrar el criptograma habrá que multiplicarlo por w -1 en el cuerpo
=65.537 pero en el enunciado ya nos indican que C w -1 mod = 12.930, 1.154,
33.458, 18.978, 8.850 por lo tanto lo único que hay que hacer es pasar estos valores
por la mochila fácil de mayor a menor según el algoritmo para encontrar los vectores:
M1’ (12.930) = 0100 0001 0100 1100 M2’ (1.154) = 0100 0001 0010 0000
M3’ (33.458) = 0100 1101 0100 0001 M4’ (18.978) = 0100 0100 0101 0010
M5’ (8.850) = 0100 1001 0100 0100
M = 01000001 01001100 01000001 00100000 01001101
01000001 01000100 01010010 01001001 01000100
2c) Buscando la equivalencia ASCII de estos valores (tabla dada en clase) se obtiene
en mensaje M = ALA MADRID
Observación: El mensaje correcto debería tener 13 caracteres M = ¡HALA MADRID!
pero sería un error presuponer que un individuo que pinta las paredes tenga un
Solución:
3a) Se cifra carácter a carácter porque el grupo p y q no permiten una cifra mayor.
Para enviar un mensaje a Brunilda se trabajará con sus parámetros públicos.
C = [ab , Ci] = [ab , Mi(abb) ] mod p
Mi=M1M2M3M4 = HOLA = 72 79 76 65
Como: ab mod p = 713 mod 991 = 777 (dado en el enunciado)
y (abb) mod p = 2213 mod 991 = 323 (dado en el enunciado) entonces:
C1 = 72 323 mod 991 = 463 C2 = 79 323 mod 991 = 742
C3 = 76 323 mod 991 = 764 C4 = 65 323 mod 991 = 184 Luego:
C = [777, 463, 742, 764, 184]
3b) Para la firma se trabaja con los parámetros de Adelaida. Firma = [r, s]
r = aa h mod q = 45 mod 1009 = 15
PARTE TEÓRICA
Solución:
Solución:
C A R 2 0 18 A V E 0 22 4
I Ñ O = 8 14 15 N T U = 13 20 21
S A S 19 0 19 R A S 18 0 19
a) Clave K1 = CARIÑOSAS:
|K1| = 2 (14 19 - 0 15) - 0 + 18 (8 0 - 19 14) mod 27 = -4256 mod 27 = 10
La clave simbólica CARIÑOSAS es válida porque |K1| > 0 y mcd (|K1|,n) = 1
b) Clave K2 = AVENTURAS:
|K2| = 0 - 22 (13 19 - 18 21) + 4 (13 0 - 18 20) mod 27 = 1442 mod 27 = 11
La clave simbólica AVENTURAS es válida porque |K2| > 0 y mcd (|K2|,n) = 1
3. Se propone utilizar como función hash para obtener un resumen del mensaje en
claro y poder así firmar digitalmente un documento la siguiente: contabilizar los
caracteres del mensaje, agruparlos por frecuencia de aparición y asignar códigos
binarios de forma que el código más bajo posible corresponda al carácter menos
frecuente y el código binario más alto posible al carácter más frecuente. Hecho
esto, se efectúa la suma or exclusivo dos a dos de todos estos valores.
a) Comente si el algoritmo de firma es adecuado y en cualquier caso justifique
su respuesta.
b) Compare esta firma con el método MD5 que utiliza el PGP.
Solución:
a) Independientemente del alfabeto usado, ASCII por ejemplo, existirá una frecuencia
característica de aparición de los caracteres que como mucho ocupará 8 bits de
forma que 0000 0000 sería el valor correspondiente al carácter menos frecuente y
un valor a lo sumo igual a 1111 1111 (incluyendo la tabla ASCII completa) al
carácter más frecuente. En todo caso, la suma or exclusivo dos a dos de todos
estos valores podría entregar como máximo 1111 1111, que representa el valor 28-
1 = 255, con lo que existirán tan sólo 255 firmas distintas posibles con este
algoritmo, un valor muy bajo y por lo tanto nada adecuado para usarlo como firma
digital. Si el texto tiene mucho formato o bien muestra una fuerte repetición de
algunos caracteres y ausencia de otros, este valor puede ser incluso menor.
b) En el caso de la función hash que se obtiene con el algoritmo MD5, ésta no
depende de las estadísticas del lenguaje y además entrega un resumen de 128
bits con lo que el número de firmas distintas asciende en este caso a 3,4x1038 que
es un valor mucho más lógico.
Solución:
a) Paquito tiene las claves públicas de sus tres amigos en su archivo o anillo de
claves públicas PUBRING.PGP.
b) Tiene que haber creado su par de claves, una pública que está en el anillo indicado
en el apartado anterior y una privada que está en el archivo o anillo de claves
privadas SECRING.PGP a la que accede a través de una frase de paso secreta.
c) Debería incluir la opción armadura para convertir el texto resultante de la cifra en
caracteres que puedan transmitirse por la red, en formato a Radix o Base 64.
PARTE PRÁCTICA
Un criptoanalista se propone atacar un cifrado de Hill digrámico y para ello cuenta con
el texto en claro M y su correspondiente criptograma C:
M = HABIA UNA VEZ UN CIRCO
C = PIEBR DVLBA IYHKZ ECP
a) Encontrar la matriz de cifra K y la matriz inversa K-1 mediante el método de
vectores unitarios.
b) Comprobar la cifra del primer digrama con la matriz K encontrada.
Solución:
a) M = HA BI AU NA VE ZU NC IR CO
C = PI EB RD VL BA IY HK ZE CP
En el criptograma encontramos el
vector unitario BA = (1 0) que le 22 X 1
corresponde el mensaje en claro VE = K-1 =
4 X2
(22 4), luego ésta será la primera
columna de la matriz inversa:
Los valores de X1 y X2 lo obtenemos a partir de algún par digrámico mediante la
ecuación M = K-1 C. En este caso sólo nos servirán los digramas C cuyo segundo
elemento sea distinto de cero y además primo relativo con el módulo n = 27 para que
exista el inverso; es decir todos excepto RD y el ya usado BA. La elección óptima por
razones obvias es el digrama C = EB puesto que B=1 y entonces inv (B,n)=1. Luego:
B 22 X 1 E
=
I 4 X2 B
19 4 19 21
Adj(K-1) = T (Adj (K-1)) =
21 22 4 22
19 19 21 19 10 6
Luego K= mod 27 K=
4 19 22 19 5 13
En plena guerra fría, el comandante Anatoli Kremlin desea enviar un disquete con un
archivo que contiene un mensaje cifrado a su camarada Boris Vodka sobre la suerte
que ha corrido el espía Igor Smirnoff (conocido en el mundillo como Curro) y que en
una misión secreta ha caído prisionero por el bando enemigo y luego ha
desaparecido. El mensaje de 17 caracteres es M = ESTA EN EL CARIBE.
Si las claves pública y privada de Anatoli (A) y Boris (B) son las indicadas, el sistema
de cifra utilizado es el RSA óptimo en cuanto a la longitud del bloque a cifrar y los
caracteres se representan por su valor ASCII de 8 bits, se pide:
a) Expresar las ecuaciones de la cifra para este mensaje, sin calcular valores.
b) Expresar las ecuaciones de descifrado del criptograma, sin calcular valores.
Anatoli: pA = 16.011; qA = 16.019; eA = 5; dA = 51.296.042
Boris: pB = 16.001; qB = 16.007; eB = 7; dB = 36.585.143
Solución:
a) Según los datos del enunciado, los grupos de trabajo de cada uno será:
Anatoli: nA = pA qA = 16.011 16.019 = 256.480.209
Boris: nB = pB qB = 16.001 16.007 = 256.128.007
Como los mensajes se intercambian en formato ASCII y el valor mayor es 255,
entonces cada uno puede cifrar bloques de hasta tres caracteres porque el hipotético
valor máximo sería 255.255.255 menor que el grupo de ambos. Si representamos _
como el carácter blanco, formamos seis bloques de 3 caracteres con lo que se
obtiene:
M1 = EST = 069083084 M2 = A_E = 065032069 M3 = N_E = 078032069
M4 = L_C = 076032067 M5 = ARI = 065082073 M6 = BE = 066069
eB 7
La ecuación de cifra será Ci = Mi mod nB = Mi mod 256.128.007
Las valores que se obtienen (no se pide calcularlos en el examen) son:
C1 = 224.293.659 C2 = 243.934.054 C3 = 180.473.117
C4 = 54.226.997 C5 = 64.371.557 C6 = 159.760.689
b) Las ecuaciones de descifrado serán Mi = Ci mod nB = Ci36.585.143 mod
dB
256.128.007.
Firmar digitalmente el mensaje del punto 2 mediante el algoritmo RSA, usando para
ello como función resumen del mensaje en claro el esquema que se indica:
M1 M2 Mn+R
V0 V1 V2 Vn = r
XOR XOR XOR
a) Indicar todas las salidas del último bloque (bloque n) de Cajas S en decimal.
b) Si los vectores V1 y V2 son V1 = 0AA5 9FEB y V2 = 647E 9E34, encontrar el
valor del resumen r = r1 r2 en decimal.
c) Expresar la ecuación de firma digital a partir del resumen r encontrado en el
apartado anterior, sin calcular su valor.
Solución:
Los valores de las tres cajas S serán los que se indican en la tabla:
Salida Bloque I: 1010 0001 0110 1000 1000 1101 1101 1101
Vector V0: 1010 1011 1100 1101 0001 0010 0011 0100 (ABCD 1234)
Vector V1: 0000 1010 1010 0101 1001 1111 1110 1011 (Suma or
exclusivo)
Salida Bloque II: 0110 1110 1101 1011 0000 0001 1101 1111
Vector V1: 0000 1010 1010 0101 1001 1111 1110 1011 (0AA5 9FEB)
Vector V2: 0110 0100 0111 1110 1001 1110 0011 0100 (Suma or
exclusivo)
Salida Bloque III: 0011 0001 0011 0110 1000 1111 1100 1011
Vector V2: 0110 0100 0111 1110 1001 1110 0011 0100 (647E 9E34)
Vector V3 = r: 0101 0101 0100 1000 0001 0001 1111 1111 (Suma or exclusivo)
Luego: r1 = 0101 0101 0100 1000 = 21.832
r2 = 0001 0001 1111 1111 = 4.607
Nota: Si no se divide la firma digital en dos partes, el mayor valor posible de la función
hash sería 32 bits unos, lo que es igual a 4.294.967.295 que resulta ser mayor que el
tamaño del cuerpo de cifra. Con dos trozos de firma de 16 bits cada uno el mayor
valor de cada uno sería 65.535, que ahora es mucho menor que el módulo en
cuestión y además muy pequeña por lo que puede dar lugar a muchas colisiones.
Ninguna de las dos situaciones son las más indicadas para una firma digital. Lo ideal
(y lo que se hace en la práctica) es que el módulo de trabajo sea del orden de los
1.000 bits (1.024 o al menos 512) y el resumen de 128 ó 160 bits.
PARTE TEÓRICA
Solución:
a) En la tabla se han marcado las posiciones relativas de las letras A (en negrita), la
letra E (subrayado doble) y la O (subrayado simple). En este caso por ser la cifra de
Beaufort Ci = (-mi + ki) mod n, la rotación modular de la regla se lee de derecha a
izquierda. Leyendo entonces los caracteres donde está la posición relativa de la letra A
se obtiene la clave K = MUNDIAL.
b) Aplicando la ecuación Mi = (ki - Ci) mod 27 o bien directamente desde la tabla de
Beaufort:
K = M U N D I A L M U N D I A L M U N D I A
C = I K B Z V I L D Q X O P S R E Z F L O A
M = E L M E N S A J E P O S I T I V I S T A
Como es un texto bastante largo y con sentido, se comprueba que la clave es la
verdadera. El texto en claro es parte de una noticia aparecida el martes 23 de junio en
el periódico El País, antes del trascendental partido de la selección española ante
Bulgaria en Francia 98.
El mensaje positivista de Clemente ha calado en el grupo. Hay que espantar la pesadilla de una
eliminación prematura, conciliar el sueño y aguardar a una radiante mañana estival. Unos hablan de no
perder las virtudes teologales. Es el caso de Zubizarreta: "Pase lo que pase y se diga lo que se diga, hay
que mantener la fe y la esperanza". Y otros apuntan ya incluso grandes proyectos. "Más de una vez
durante el día o la noche debes afrontar la imagen de una posible derrota", confiesa Amor, "te pasa por la
cabeza, pero la apartas, y piensas: 'si pasamos a los octavos, borraremos todo lo que ha ocurrido hasta
ahora y podremos aspirar a grandes cosas".
Frente a una situación tan extrema, parece imponerse más un ejercicio de voluntarismo que no una
autocrítica o reflexión más bien táctica. A tenor de las palabras de algún futbolista, para remontar
conviene recuperar la furia española. Alkorta fue el más explícito: "Las tácticas no sirven para nada; son
los jugadores los que sacan los partidos adelante poniendo mala leche". Hay que apelar pues a valores
como "la casta, la garra, la velocidad, las ganas". Y remacha el central: "El corazón es la mejor táctica".
(Sin comentarios)
2) Un sistema de cifra en bloque con clave secreta (IDEA) tiene una clave de 128 bits y
uno de clave pública (RSA) usa 512 bits para generar un par de números primos.
Preguntas: a) ¿Qué significa esto bajo el punto de vista de la entropía de la clave? b)
¿Puede decirse que los 512 bits de RSA dan una mayor fortaleza que los 128 bits de
IDEA?
Solución:
a) En el caso del cifrador IDEA, al ser la clave binaria equiprobable, la entropía de la clave
será la máxima, es decir H(X) = H(X)máx = log2 n = log2 2128 = 128.
En el caso del sistema RSA, con 512 bits lo que hacemos es generar un par de números
primos cada uno de 256 bits, pero en ningún caso podemos decir que la entropía de esta
clave tenga 512 ó 256 estados equiprobables. La cantidad de números primos que
existen y cuyo producto sea de 512 bits es muchísimo menor.
b) No son comparables los 512 bits de RSA con los 128 de IDEA. 512 bits para generar
un par de claves en RSA es un valor muy bajo y para sistemas simétricos, 128 bits de
clave es muy alto. Además, en el primer caso el ataque sería por fuerza bruta en tanto
que en el segundo hablamos de algoritmos de factorización. Por ello, las “longitudes” de
las claves en sistemas simétricos como el IDEA son mucho menores que la de los
sistemas asimétricos como RSA si se desea que sus niveles de seguridad sean
comparables
3) Se nos pide utilizar un sistema de clave pública para que un protocolo de intercambio
de ficheros ftp sea seguro en el sentido de que el cliente pueda certificar en cualquier
momento al servidor.
Preguntas: a) Indique el número mínimo de claves a usar. b) Describa el protocolo de
intercambio de claves necesario.
Solución:
a) Si lo que se desea es sólo certificar al servidor, hará falta solamente el par de claves
por ejemplo del tipo RSA que éste genera, de forma que su clave pública la conocen
todos sus usuarios. Si además se quiere que la transmisión sea segura en el sentido de
confidencialidad, habrá que intercambiarse una clave secreta de sesión, por ejemplo en la
misma forma que lo plantea pgp.
b) El protocolo podría ser el siguiente: cuando un cliente desea conectarse al servidor,
busca la clave pública de éste y le envía un mensaje de inicio de transmisión cifrado. El
servidor lo descifra con su clave privada (sólo él puede hacerlo) y lo devuelve en claro al
cliente. A partir de ese momento el cliente está seguro de que el servidor es quien dice
ser. Si se desea además confidencialidad, el cliente genera una clave de sesión que
envía al servidor cifrada con la clave pública de éste. Descifrada la clave en destino, se
procede a la cifra de mensajes con un algoritmo simétrico.
1) María José afirma que si un cifrado de Vigenère con una clave de longitud 7 no puede
romperse, menos podrá hacerse si la clave es de longitud 12. José Mari por el
contrario cree que no tiene razón y dice que la longitud de la clave no es en este
sentido un sinónimo de fortaleza en el cifrado ante un ataque por el método de Kasiski.
Solución:
a) Tiene razón José Mari porque puede darse el caso de que con longitud de clave 7 no
se formen cadenas repetidas de longitud suficiente y, en cambio, con longitud 12 (no
múltiplo del anterior) sí existan cadenas repetidas. Aunque el criptograma se rompa en
subcriptogramas más pequeños y por tanto se tenga un número menor de caracteres
para aplicar estadísticas y la regla AEO (y por ende mayor posibilidad de fallo), son
suficientes para encontrar dichas posiciones relativas y romper así la clave. Véase la
práctica de Vigenère en el Cuaderno de Prácticas.
b) Puesto que en el algoritmo de Beaufort con respecto al de Vigenère sólo cambia el
signo del alfabeto (negativo), se sigue cumpliendo la misma característica indicada
anteriormente.
2) Nos muestran las cuatro mochilas M’ que se indican: M’1 = {2,3,7,18}; M’2 =
{3,5,10,25,44}; M’3 = {3,6,11,30,50,105} y M’4 = {2,3,6,13,25,52,103,210}.
Preguntas: a) ¿Cuáles de estas cuatro mochilas pueden usarse para crear una mochila
pública de M-H? b) Bajo el punto de vista de seguridad, ¿cuál de ellas elegiría?
Solución:
a) De las cuatro mochilas, de tamaño n=4, n=5, n=6 y n=8, la tercera no es de tipo
supercreciente (50=3+6+11+30), luego sólo podríamos utilizar M’ 1, M’2 y M’4 para generar
una mochila M-H.
b) Si bien el tamaño y los valores de cada una de las mochilas son extremadamente
pequeños y facilitan un ataque por fuerza bruta, la que entrega una mayor seguridad sería
M’2 ya que su tamaño no es múltiplo de 8, que es el número de bits de la representación
ASCII del mensaje. Los demás criptogramas podrían romperse aplicando simplemente
estadísticas del lenguaje al igual que en los sistemas de cifra monoalfabética por
sustitución. También dependerá la seguridad del valor del módulo u elegido que no debe
tener factores comunes con S’1 y S’2. Véase la práctica de Mochilas en el Cuaderno de
Prácticas y el Informe Final de Prácticas.
PARTE PRÁCTICA
Solución:
C3 3 8 M3 3 8 4 3x4 8x12 0 A
mod 27
C4 4 26 M4 4 26 12 4x4 26x12 4 E
Solución:
a) Como S’ = {3, 8, 12, 25, 50, 99} es supercreciente y sus elementos suman 197, el valor
mínimo de u será 197 + 1 = 198. Como 198 = 2x3 2x11, el valor mínimo de w tal que mcd
(u, w) = 1 será 5; por lo tanto el valor que nos exigen es 52 = 25. Luego, u = 198, w = 25.
S1 = S’1 x w mod u = 3 x 25 mod 198 = 75
S2 = S’2 x w mod u = 8 x 25 mod 198 = 2
S3 = S’3 x w mod u = 12 x 25 mod 198 = 102
S4 = S’4 x w mod u = 25 x 25 mod 198 = 31
S5 = S’5 x w mod u = 50 x 25 mod 198 = 62
S6 = S’6 x w mod u = 99 x 25 mod 198 = 99
Luego la mochila pública será: S = {75, 2, 102, 31, 62, 99}
b) La representación de los caracteres del mensaje es:
F = 07010 = 0100 01102 R = 08210 = 0101 00102 A = 06510 = 0100 00012
N = 07810 = 0100 11102 C = 06710 = 0100 00112 I = 07310 = 0100 10012
= 03210 = 0010 00002 9 = 05710 = 0011 10012 8 = 05610 = 0011 10002
Agrupando de seis en seis bits para cifrar con la mochila S, se obtienen 15 bloques:
010001 100101 001001 000001 010011 100100 001101 001001 010000 010010 000000
111001 001110 000000 (estos últimos ceros son de relleno)
Pasando los bloques por la mochila S, se obtiene el siguiente criptograma:
C = 101 205 201 099 163 106 232 201 002 064 000 278 195 000
c) Puesto que el mayor mensaje posible será una cadena de seis unos (111111) y los
elementos de la mochila difícil suman (75+2+102+31+62+99) = 371 = 1011100112, valor
que se representa en binario con 9 bits, deberán transmitirse los elementos del
criptograma con 9 bits.
d) Para descifrar el criptograma anterior, multiplicamos cada elemento por w-1 y pasamos
este resultado por la mochila fácil S’. Cálculo de w-1 según método de restos de Euclides:
198 = 7x25 + 23 23 = 198 - 7x25
25 = 1x23 + 2 2 = 25 - 1x23 2 = 25 - (198 - 7x25) = -198 + 8x25
23 = 11x2 + 1 1 = 23 - 11x2 1 = (198 - 7x25) - 11x(-198 + 8x25)
2 = 2x1 + 0 1 = 12x198 - 95x25 mod 198
El inv (25, 198) = -95 = 103.
Multiplicado entonces y pasando por la mochila simple S’ = {3, 8, 12, 25, 50, 99} se tiene:
101 x 103 mod 198 = 10.403 mod 198 = 107 = [0 1 0 0 0 1]
205 x 103 mod 198 = 21.115 mod 198 = 127 = [1 0 0 1 0 1]
201 x 103 mod 198 = 20.703 mod 198 = 111 = [0 0 1 0 0 1]
099 x 103 mod 198 = 10.197 mod 198 = 099 = [0 0 0 0 0 1]
163 x 103 mod 198 = 16.789 mod 168 = 157 = [0 1 0 0 1 1]
106 x 103 mod 198 = 10.918 mod 198 = 028 = [1 0 0 1 0 0]
232 x 103 mod 198 = 23.896 mod 198 = 136 = [0 0 1 1 0 1]
201 x 103 mod 198 = 20.703 mod 198 = 111 = [0 0 1 0 0 1]
002 x 103 mod 198 = 00.206 mod 198 = 008 = [0 1 0 0 0 0]
064 x 103 mod 198 = 06.592 mod 198 = 058 = [0 1 0 0 1 0]
000 x 103 mod 198 = 00.000 mod 168 = 000 = [0 0 0 0 0 0]
278 x 103 mod 198 = 28.634 mod 198 = 122 = [1 1 1 0 0 1]
195 x 103 mod 198 = 20.085 mod 198 = 087 = [0 0 1 1 1 0]
000 x 103 mod 198 = 00.000 mod 198 = 000 = [0 0 0 0 0 0]
La última columna coincide con los bloques de seis bits formados para cifrar por lo que
agrupándolos en bytes de obtiene nuevamente la cadena M = FRANCIA 98.
e) Como mcd (S1, u) = mcd (75, 198) = 3 y mcd (S2, u) = mcd (2, 198) = 2; es decir no se
cumple la primalidad entre ellos, no podrá plantearse un ataque del tipo Shamir a la
mochila M-H y la mochila bajo este concepto sería segura. Desgraciadamente su tamaño
y valores son muy pequeños por lo que resulta fácil un ataque por fuerza bruta a partir de
la mochila difícil.
Adelaida (A) y Benito (B) se envían mensajes cifrados con el algoritmo DES. Como
ambos tienen muy mala memoria, olvidan a menudo su clave secreta; cuando no es uno
es el otro. Como solución, deciden utilizar el algoritmo de Diffie-Hellman para intercambiar
una clave de sesión única. Para ello eligen en cada comunicación valores primos que
estén comprendidos entre 5 y 50 y un generador que van cambiando en cada sesión. El
algoritmo es el siguiente: a través del protocolo de Diffie-Hellman comparten un número
secreto dentro de ese cuerpo que luego utilizan para buscar caracteres separados esa
misma distancia dentro de un texto predeterminado y secreto (el texto base se muestra
en el apartado b). Una vez encuentran los 8 caracteres necesarios para la clave, cifran en
el modo habitual. Como puede ver, este sistema resulta bastante más complicado que el
anterior pero como nuestros amigos se lo pasan muy bien haciendo estas cosas lo
adoptan como estándar.
a) Encuentre el número secreto de sesión si A elige a = 10 y B elige b = 8, trabajando
ambos en el cuerpo Z*47 con el generador = 10.
b) Si el texto base es el indicado, encuentre la clave en caracteres y la clave efectiva en
binario.
ENUNL UGARD ELAMA NCHAD ECUYO NOMBR ENOQU IEROA CORDA RMENO
HAMUC HOTIE MPOQU EVIVÍ AUNHI DALGO DELOS DELAN ZAENA STILL
EROAD ARGAA NTIGU AROCÍ NFLAC OYGAL GOCOR REDOR UNAOL LADEA
LGOMÁ SVACA QUECA RNERO SALPI CÓNLA SMÁSN OCHES DUELO SYQUE
BRANT OSLOS SÁBAD OSLEN TEJAS LOSVI ERNES YALGÚ NPALO MINOD
EAÑAD IDURA LOSDO MINGO SCONS UMÍAN LASTR ESPAR TESDE SUHAC
IENDA ELRES TODEL LACON CLUÍA NSAYO VELAR TECAL ZASDE VELLU
DOPAR ALASF IESTA SCONS USPAN TUFLO SDELO MESMO.
c) Con respecto a la fortaleza de este sistema, ¿qué sucede si el secreto del texto base
Solución:
a) Adelaida elige a = 10 y calcula a mod p = 1010 mod 47 = 21, valor que envía a Benito.
Por su parte, Benito elige b = 8 y calcula b mod p = 108 mod 47 = 27 que envía a
Adelaida. Luego, Adelaida calcula 27a mod p = 2710 mod 47 = 25 y Benito calcula 21b
mod p = 218 mod 47 = 25. Ambos comparten el valor ab mod p = 1010*8 mod 47 = 1080
mod 47 = 42*42 mod 47 = 25.
b) Se recorre el texto eligiendo un carácter cada 25 posiciones (indicado en el texto en
negrita y subrayado) por lo que la clave es K = OOILCAIE. Pasando a código ASCII, la
clave binaria de 64 bits será como se indica
O = 0100 1111 O = 0100 1111 I = 0100 1001 L = 01001100
C = 0100 0011 A = 0100 0001 I = 0100 1001 E = 0100 0101
Eliminando el último bit de cada carácter (aunque aquí no exista el concepto de paridad)
se obtiene la clave efectiva de 56 bits que se indica:
K = 0100111 0100111 0100100 0100110 0100001 0100000 0100100 0100010
c) Si se conoce el texto y el algoritmo de selección de caracteres, el número de claves
posibles es muy pequeño. Para p = 47 se tendrán p-1 = 46 combinaciones posibles,
desde letras separadas 1 espacio hasta letras separadas 46 espacios por lo que las
primeras y últimas claves serán:
K1 = ENUNLUGA; K2 = NNUADLMN; …………..….. K45 = ANRASOLF; K46 = RADSIULO
Si trabajan con primos comprendidos entre 5 y 50, éste podrá ser cualquiera: 5, 7, 11, 13,
17, 19, 23,29, 37, 41 ó 47.
El número de claves sería 4+6+10+12+16+18+22+28+36+40+46 = 238, un valor muy bajo
que permite un fácil ataque por fuerza bruta. La entropía de la clave y, por tanto, la
distancia de unicidad serán muy bajas al no ser los 64 bits de clave equiprobables. Más
aún, de todas estas claves, 40 serán repetidas por lo que para, un mismo texto base, el
número de claves distintas será solamente 46 facilitando sobremanera el ataque por
fuerza bruta. En resumen, podemos decir que nuestros amigos, criptográficamente
hablando, lo han hecho muy mal.
d) El valor de = 10 es un generador en el grupo Z*47 ya que r mod 47, siendo r todos
los restos del cuerpo, genera el conjunto completo de restos. En cambio, = 2 no es un
generador en este cuerpo ya que produce un ciclo de repetición a partir de r = 23. Por lo
tanto elegir = 2 sería una peor elección ya que daríamos ventajas al posible
criptoanalista.
PARTE TEÓRICA
Solución:
Solución:
IN = 0001 0010 0011 0100 0101 0110 1010 1011 1100 1101 1110 1111.
Agrupando en bloques de 6 bits, IN = 000100 100011 010001 010110 101010
111100 110111 101111.
a) En la tabla se muestra las entradas y salidas de cada caja S.
b) En la tabla se muestran las salidas en binario y en hexadecimal.
S1 S2 S3 S4 S5 S6 S7 S8
ENTRADA 000100 100011 010001 010110 101010 111100 110111 101111
FILA 0 3 1 0 2 2 3 3
COLUMNA 2 1 8 11 5 14 11 7
SALIDA10 13 8 2 5 13 11 15 13
SALIDA2 1101 1000 0010 0101 1101 1011 1111 1101
SALIDA16 D 8 2 5 D B F D
Solución:
Solución:
2) Trabajando con PGP se crean las claves de dos usuarios Usr1 y Usr2, en
este mismo orden. Hecho esto, el usuario Usr1 desea enviar un mensaje en
claro y firmado al usuario Usr2.
Preguntas: a) ¿Qué usuario queda por defecto y cómo se fuerza por
programa a que el usuario sea siempre el mismo si hay más de una clave
privada? b) ¿Qué comando debe usar Usr1 en este entorno para enviar a
Usr2 el mensaje document.txt en claro incluyendo su firma digital? Justifique
cada uno de los elementos que incluya en la línea de comando.
Solución:
a) Siempre queda como usuario el último en crearse por lo que en este caso el
usuario por defecto será Usr2. Forzamos por programa a un usuario añadiendo la
línea MyName = “Nombre de usuario” en el programa config.txt del pgp.
b) Como Usr1 no es el usuario por defecto, el comando será:
pgp sta document.txt Usr2 - u Usr1 donde:
pgp: comando principal del programa
s: inclusión de la firma de Usr1 a partir de su clave privada y frase de paso
t: fuerza a que se transmita el mensaje como texto en claro
a: indica que se incluya armadura en el proceso de firma
Usr2: es el usuario de destino o receptor
-u Usr1: fuerza al cambio de usuario por defecto a Usr1, el transmisor.
PARTE PRÁCTICA
Preguntas:
a) ¿Cuál podría ser la clave usada en la cifra y por qué descarta a las demás?
b) Encuentre la matriz inversa de la clave de cifra.
c) Si el criptograma de la cifra es C = SDN PIN HYX, encuentre el mensaje en
claro.
Solución:
12 8 11
K1 8 20 0 |K1| = [12(20*4-20*0) - 8(8*4-13*0) + 11(8*20-13*20)] mod
13 20 4
27=9
2 0 11
K2 0 22 4 |K2 = [2(22*19-0*4) - 0 + 11(0*0-18*22)] mod 27 = 17
18 0 19
0 12 0
K3 20 8 19 |K3| = [0 - 12(20*19-20*19) + 0] mod 27 = 0
20 0 19
a) La única clave válida es K2 ya que mcd (17, 27) = 1. K1 no es una clave válida
porque mcd (3, 27) = 3 y la clave K3 tampoco es válida porque entrega una matriz
singular con determinante igual a cero.
b) K-1 = T[Adj(K)]/|K|
2 0 11 13 18 9 13 0 1
K 0 22 4 Adj( K) 0 2 0 T(Adj( K)) 18 2 19
18 0 19 1 19 17 9 0 17
Como el inv (|K|, n) = inv (17, 27) = 8 entonces la matriz de descifrado será:
13 0 1 23 0 8
inv (K ) 18 2 19 8 mod 27 9 16 17
9 0 17 18 0 1
c) C = SDN PIN HYX C1 = (19 3 13); C2 = (16 8 13) y C3 = (7 25 24).
23 0 8 19
M1 9 16 17 3
18 0 1 13
M1 (23*19+0*3+8*13) mod 27 = 541 mod 27 = 01 = B
(9*19+16*3+17*13) mod 27 = 440 mod 27 = 08 = I
(18*19+0*3+1*13) mod 27 = 355 mod 27 = 04 = E
23 0 8 16
M2 9 16 17 8
18 0 1 13
M2 (23*16+0*8+8*13) mod 27 = 472 mod 27 = 13 = N
(9*16+16*8+17*13) mod 27 = 493 mod 27 = 07 = H
(18*16+0*8+1*13) mod 27 = 301 mod 27 = 04 = E
23 0 8 7
M3 9 16 17 25
18 0 1 24
M3 (23*7+0*25+8*24) mod 27 = 353 mod 27 = 02 = C
(9*7+16*25+17*24) mod 27 = 871 mod 27 = 07 = H
(18*7+0*25+1*24) mod 27 = 150 mod 27 = 15 = O
X Y X+Y X Y X Y
32.768 32.765 65.533 65.533 16.386
32.768 32.766 65.534 65.534 49.154
32.768 32.767 65.535 65.535 16.385
32.768 32.768 0 0 49.153
32.768 32.769 1 1 16.384
32.768 32.770 2 2 49.152
32.768 32.771 3 3 16.383
15
Nota: 32.768 = 2
Preguntas:
a) Rellene las siete operaciones de suma módulo 216 comentando la operación
hecha.
b) Rellene las cinco operaciones de suma módulo 2 comentando la operación
hecha.
c) Rellene las tres operaciones de multiplicación módulo 216 + 1 comentando la
operación hecha.
d) ¿Cómo se calculan los inversos de cada una de estas operaciones
algebraicas?
e) Encuentre los inversos de la línea intermedia (para X = Y = 32.768) de la
tabla anterior para cada una de las operaciones X+Y, X Y, X Y. Para el
producto X Y deberá usar el Teorema de Euclides de Restos y la propiedad
de reducibilidad para trabajar con números grandes.
Solución:
a) Los resultados de las siete operaciones X+Y están expresados en la tabla. Para
la suma módulo 216 simplemente se suman X e Y y se reduce el resultado módulo
65.536.
b) Los resultados de la cinco operaciones X Y están expresados en la tabla.
Para el primer valor (32.768 32.765) se tiene 1000000000000000
0111111111111101 cuyo resultado es 1111111111111101 = 65.533.
Y así todos los demás. Como curiosidad, obsérvese que se repiten los valores
de resultados en las operaciones OR y XOR para este caso particular en que X
es par y la mitad del módulo. Para otros valores no se da esta particularidad.
Los resultados de la operación X Y están expresados en la tabla. Los cálculos
de la multiplicación se hacen con calculadora y se reducen módulo n = 2 16+1 =
65.537. Si el número en cuestión desborda la calculadora, se aplica la
propiedad de reducibilidad dentro de un cuerpo. Por ejemplo, si al calcular
Adelaida (A) desea enviar a Benito (B) un mensaje en claro incluyendo su firma
digital a través del algoritmo de ElGamal. El resumen MD de 128 bits del texto
en claro lo obtiene con un algoritmo similar a MD5 y es el que se indica: MD =
87AB 198D 6E2F F103 E0DA E8F6 1BA4 AA8F C382. Ambos deciden trabajar
con p = 65.551 y = 51. Adelaida tiene como clave privada a = 10.
Preguntas:
a) Envíe la firma digital correspondiente al primer bloque de 16 bits de ese
resumen si Adelaida elige el valor h = 11 para la generación de la firma.
b) ¿Con cuántos bits se debe transmitir la operación hecha en el apartado a)?
c) ¿Es acertada la elección del primo 65.551 para operar con bloques de 16
bits?
d) Indique (no calcule) las operaciones que debería realizar Benito para
comprobar la firma de Adelaida
e) ¿Qué debería cumplir para que Benito pudiera comprobar la firma digital?
Solución:
a) Primer bloque será M16 = 87AB M2 = 1000 0111 1010 1011 M10 = 34.731
Adelaida elige h = 11 que cumple con la condición mcd (h, (p)) = mcd (11,
65.550) = 1 y calcula su inverso usando el Teorema Extendido de Euclides:
65.550 = 11 5959 + 1
Por lo tanto: 1 = 65.550 - 5.959 11. El inverso h-1 es -5.959 + 65.550 = 59.591
Adelaida calcula ahora su rúbrica r:
r = h mod p = 5111 mod 65.551 = 18.609
Adelaida resuelve entonces la congruencia M [a r + h s] mod (p) es decir:
s = [M - a r] h-1 mod (p) = [34.731 - 10 18.609] 59.591 mod 65.550
s = -19.719 mod 65.550 = 45.831
Luego, la firma de Adelaida será el par (r, s) = (18.609, 45.831)
b) Como los valores se reducen mod 65.551 y se tiene que 216 < 65.551 < 217,
habría que transmitir con un mínimo de 17 bits para asegurar que aquellos valores
comprendidos entre 65.535 (216-1) y 65.551 y que puedan ser resultado de las
operaciones hechas se envíen correctamente. La firma entonces anterior será:
(r,s) = (00100100010110001, 01011001100000111)
c) Sin entrar en otras consideraciones de pertenencia o no al grupo del bloque de
resumen tratado, se podría decir que esa elección es acertada. Al realizar
operaciones sobre bloques de 16 bits del resumen, que significan valores
comprendidos entre 0 y 65.535, y ser el primo ligeramente superior a este último
valor, fuerza a que todas las operaciones vayan en bloques de 17 bits. En cambio
si se elige el primo inmediatamente inferior a 65.535 (65.521) se podrá transmitir el
resultado de la firma con 16 bits pero a costa de limitar el espacio de M.
d) Aunque no se pide en el examen, se incluyen los resultados numéricos de
cada una de las operaciones que realiza Benito.
Benito calcula rs mod p = 18.60945.831 mod 65.551 = 43.254
A continuación calcula k = ( a)r rs mod p = (5110)18.609 18.60945.831 mod 65.551
En esta operación, Benito sólo conoce la clave pública de Adelaida, es decir,
( a) mod p = (5110) mod 65.551 = 58.204, luego:
k = 58.20418.609 43.254 mod 65.551 = 34.153 43.254 mod 65.551 = 62.077
Puesto que se recibe M10 = 34.731, Benito compara ahora el valor anterior con
( M) mod p = (5134.731) mod 65.551 = 62.077.
Los valores coinciden por lo que cabe esperar que = 51 sea un generador
dentro del cuerpo p = 65.551. No obstante, en realidad 51 no es un generador.
e) Es recomendable, aunque no estrictamente necesario, que el valor fuese
un generador del cuerpo p = 65.551.
NOTA:
Si es un generador dentro de un cuerpo p, entonces j mod p, siendo j los valores
comprendidos entre 1 y p-1, entregará el conjunto completo de restos. El valor no
(p-1)/q
será un generador en p si mod p con q los factores primos de (p-1) entrega para
alguno de ellos el resultado igual a la unidad. Si, por el contrario, todos los cálculos
para los diferentes qi entregan valores distintos de la unidad, entonces el valor será
un generador en el cuerpo p. 51 no es generador porque: p-1 = 65.550 =
2x3x52x19x23 y 51(65550/3) mod 65.551 = 1. Sí lo son por ejemplo = 6, 12, ... 46,...
Usar un generador asegura la firma única y su comprobación.
SOLUCIÓN
PARTE TEÓRICA
SOLUCIÓN:
Los mensajes M1 y M3 tienen la misma distribución de caracteres como se
muestra:
M1 N = 2; O = 2; M = 1; E = 1; C = 1; A = 1; S = 1
M3 E = 2; A = 2; Q = 1; U = 1; T = 1; P = 1; S = 1
Por lo tanto tendrán la misma entropía. El mensaje M2 tiene la siguiente
distribución:
M2 M = 6; I = 2; A = 3; E = 1
A simple vista, la distribución de M2 se parece menos a una distribución uniforme,
con valores equiprobables, y por lo tanto cabe esperar una entropía menor que la
de M1 y M3. Los valores (que no se piden en el examen) son H(M1) = H(M3) = 2,73
y H(M2) = 1,73.
SOLUCIÓN:
La conversión a binario de la entrada en hexadecimal es:
1FA3 BD81 EF3416 = 0001 1111 1010 0011 1011 1101 1000 0001 1110 1111 0011 0100
Entrada a las Cajas S = 000111 111010 001110 111101 100000 011110 111100 110100
S2 = 0100 0011 0101 0010 0100 1011 1001 1010; S16 = 4352 4B9A
SOLUCIÓN:
f(x) = f1(x) f2(x) = (x2 + x +1) (x + 1) = (x3 + x2)+(x2 + x)+(x + 1) = x3 + 2x2 + 2x + 1
Reduciendo módulo 2 nos queda f(x) = x3 + 1 cuya representación es:
S1 S2 S3
Si
Como no hay suma de los elementos del registro y sólo se realimenta una muestra
del bit que sale, simplemente se transmitirá como secuencia la semilla S3S2S1.
Esto no es un generador de secuencia cifrante y por lo tanto no pertenece a
ningún sistema LFSR.
SOLUCIÓN:
a) Es normal y lógico que la longitud de la clave del sistema simétrico (DES,
IDEA, RC2, etc.) sea mucho menor que la del sistema asimétrico (RSA,
ElGamal, etc.) con una relación típica de 1/10 aproximadamente. Esto es
debido a que son dos tipos de cifra distintos. En la cifra simétrica la fortaleza
reside en que en la práctica debe hacerse un ataque por fuerza bruta, en
cambio en el ataque a la cifra asimétrica se pueden utilizar distintos algoritmos
de factorización o de logaritmo discreto. Podríamos decir que en muchos casos
el espacio efectivo de claves es mayor en el primer caso de cifra simétrica al
ser los 2n valores equiprobables.
b) Estos valores (que son los que entregan por defecto los clientes Netscape y
Explorer para correo electrónico bajo S/MIME fuera de los EEUU) sólo son
apropiados para uso personal y en documentos que tengan poco valor
comercial o bien cuyo tiempo de caducidad del secreto sea pequeño. Una
empresa hoy en día no puede aceptar este nivel tan bajo de seguridad en las
claves simétrica y asimétrica. Lo normal son 128 bits mínimo de clave simétrica
y 1.024 bits mínimo de clave asimétrica.
c) Puestos a elegir, se usaría SHA-1 pues con 160 bits de resumen ofrece mejor
nivel de seguridad que MD5 que sólo tiene 128. Las probabilidades de
SOLUCIÓN:
Si no se encuentra el candidato a S’1 dentro del conjunto de múltiplos CM en el
m+1
espacio 2 , continuar la búsqueda en Cm+1 con i>1 sólo tiene sentido si se
puede encontrar este valor rápidamente en el próximo conjunto CM en función del
tamaño de módulo y los elementos de la mochila. Por ejemplo, para este caso
de mochila con 10 elementos y módulo = 3.295, el valor máximo de S’1 que
cumple con esta condición si es el mínimo valor de módulo ( i + 1), saldrá de la
siguiente mochila supercreciente:
{i, (i+1), (2i+2), (4i+4), (8i+8), (16i+16), (32i+32), (64i+64), (128i+128), (256i+256)}
Por lo tanto sumando ( i +1) = 512i + 511 + 1 = = 3.295 i < 5.4.
Si la mochila fácil fuese generada de esta forma, el valor máximo de i para este
resultado es igual a 5. Para este valor es más fácil realizar un ataque por fuerza
bruta preguntado si S’1 = 1, 2, 3, 4, 5... y en cada caso generando una mochila fácil
a partir de la difícil con los mismos cálculos de Shamir-Zippel, es decir,
encontrando w-1 en caso de que exista. Haríamos un máximo de 5 cálculos de
m+3 13
inversos y generación de mochila fácil en vez de 2 =2 = 8.192 multiplicaciones
y reducción módulo en búsqueda del candidato a S’1.
No obstante, podrían darse otras situaciones, pero siempre bajo la condición de
que = 3.295 sea mayor que i.
Por ejemplo, una mochila del módulo en cuestión es {3, 5, 10, 20, 80, 215, 390,
800, 1.730}. La suma de todos sus elementos es igual a 3.294, luego mín = 3.295.
SOLUCIÓN:
a) Significa que PGP generará dos valores primos p y q de una longitud
aproximada a 512 bits cada uno de forma que el producto tenga 1.024 bits.
b) Se almacena cifrada con el algoritmo IDEA y la clave son los 128 bits del
resumen MD5 de su frase de paso. Para usarla, el programa solicita la frase de
paso, obtiene el resumen de 128 bits de la misma y con dicha clave la descifra.
c) Al tener ahora que generar dos primos de unos de 1000 bits cada uno, el
proceso de generación de claves tarda algo más (puede tardar algunos
segundos o más de un minuto en función de la velocidad del ordenador). No
obstante, esta operación no es crítica pues se hace una sola vez, cuando se
crean las claves del usuario.
d) Debe usar un comando para revocar su clave, crear un nuevo par de claves y
comunicarlo a todos los usuarios con los que mantiene correspondencia. En
PGP es el usuario afectado quien debe tomar la iniciativa de revocación en
este sistema de gestión de claves algo caótico y no jerarquizado.
PARTE PRÁCTICA
1 8 0 11 3 19
0 1 0 11 12 26
0 23 25 8 4 1
0 4 11 1 5 26
0 0 19 19 19 15
SOLUCIÓN:
a) El segundo vector unitario 010 = ABA se encuentra en la fila segunda.
Para el primer vector unitario 100 = BAA, restamos 8 veces la fila 2ª a la fila 1ª:
1ª Fila = (1ª Fila – 8 2ª Fila) mod 27
Columnas de Mensaje Columnas de Criptograma
(1 – 8 0) mod 27 = 1 (11 – 8 11) mod 27 = 4
(8 – 8 1) mod 27 = 0 (3 – 8 12) mod 27 = 15
(0 – 8 0) mod 27 = 0 (19 – 8 26) mod 27 = 0
Para obtener el tercer vector unitario 001 = AAB, multiplicamos la 5ª fila por el
inverso de 19, es decir inv (19, 27) = 10:
5ª Fila = 5ª Fila inv (19, 27) mod 27
Columnas de Mensaje Columnas de Criptograma
(0 10) mod 27 = 0 (19 10) mod 27 = 1
(0 10) mod 27 = 0 (19 10) mod 27 = 1
(19 10) mod 27 = 1 (15 10) mod 27 = 15
Luego, los tres vectores unitarios de la matriz de Gauss-Jordan son:
1 0 0 4 15 0 4 11 1
Luego:
0 1 0 11 12 26 K 15 12 1
0 0 1 1 1 15 0 26 15
En este caso, la clave será la traspuesta de la matriz de los vectores unitarios.
SOLUCIÓN:
a)
S1 S2 S3 S4 S5 Si
b) Como los últimos 5 bits transmitidos son 10101 esos serán los bits de la semilla
en ese este orden, el primero S5 = 1, luego S4 = 0, luego S3 = 1, luego S2 = 0 y
finalmente S1 = 1. Esa será la semilla con la que partimos en la continuación de
la secuencia, que se escribe en bloques de 4 y de arriba hacia abajo.
Semilla Bit Si Semilla Bit Si Semilla Bit Si Semilla Bit Si
10101 1 10111 1 00011 1 11110 0
SOLUCIÓN:
a) 012345678
HE VOTADO
Primer bloque de firma: 2º 6º 8º mod 9
00100000 (espacio)
01000001 (A)
01001111 (O)
00101110 B1 = 0010 1110
Segundo bloque de firma: 4º 12º 16º = 4º 3º 7º mod 9
01001111 (O)
01010110 (V)
01000100 (D)
01011101 B2 = 0101 1101
Luego: HASH(M)2 = 0010 1110 0101 1101
HASH(M)10 = 11.869
b) El valor de h debe cumplir con: mcd (h, (p)) = 1
(p) = p – 1 = 70.001 – 1 = 70.000 = 24 x 54 x 7
Luego h no debe tener estos factores primos
Como h1 = 55 = 5 x 11 (no es válido) y h2 = 27 = 33 (sí es válido)
Elegirá h = 27 para generar la firma.
c) r = h mod p = 2127 mod 70.001 = [(2113 mod 70.001)]2 (21) mod 70.001
Como 2113 mod 70.001 = 20.570 (entregado como dato)
r = (20.570)2 21 mod 70.001 = 45.965
S = [M - a r] inv (h, (p)) mod (p) = [11.869 – 10 45.965] inv (27, 70.000) mod
70.000
Cálculo del inverso de 27 en módulo 70.000 (Teorema Extendido de Euclides)
70.000 = 2.592 27 + 16 Ordenando por restos
27 = 1 16 + 11 16 = 70.000 – 2.592 27
16 = 1 11 + 5 11 = 27 – 1 16
11 =2 5+1 11 = 27 – 1 (70.000 – 2.592 27)
5 =5 1+0 11 = -1 70.000 + 2.593 27
5 = 16 – 1 11
5 = (70.000 – 2.592 27) – 1 (-1 70.000 + 2.593 27)
5 = 2 70.000 – 5.185 27
1 = 11 – 2 5
1 = (-1 70.000 + 2.593 27) – 2 (2 70.000 – 5.185 27)
1 = -5 70.000 + 12.963 27
Luego inv (27, 7000) = 12.963. Entonces:
S = [11.869 – 10 45.965] 12.963 mod 70.000 = 24.897
Por lo tanto la firma de Adelaida será: r, s = (45.965, 24.897)
d) Sí es apropiado porque el resumen será como máximo una cadena de 16 unos
cuyo valor decimal es igual a 65.535, un valor ligeramente menor que p =
70.001. Por lo tanto, todas las firmas posibles serán elementos del cuerpo.
e) No es segura en absoluto porque con 16 bits la resistencia fuerte a colisiones
es tan sólo de 28 (un valor muy bajo) y la resistencia débil implica un esfuerzo
de 216 intentos = 65.536 operaciones, que sigue siendo un valor bajo.
PARTE TEÓRICO/PRÁCTICA
SOLUCIÓN:
a) Si el alfabeto es de 27 caracteres entonces el espacio de claves viene dado por
la expresión N = H(K)/D en donde H(K) es la entropía (el espacio de claves es
2H(K)) y D la redundancia del lenguaje para 27 caracteres e igual a 3,4. Luego
H(K) = N D = 23,5 3,4 = 79,9 que podemos aproximar a 80 y el espacio 280.
b) Significa que para estas condiciones se deberá tener como mínimo 24
caracteres para intentar un ataque y no nos encontremos con soluciones falsas
o bien, a lo más, éstas sean igual a la unidad. No quiere decir que se pueda
romper la cifra.
c) No es válido este valor si se cifran caracteres ASCII ya que en este caso el
alfabeto es de 256 caracteres y deberíamos volver a calcular la redundancia
del lenguaje D para este caso en particular, obteniéndose una nueva Distancia
de Unicidad.
SOLUCIÓN:
En este caso, una vez hayamos encontrado el nuevo valor de la redundancia
dentro de este alfabeto de 70 caracteres, tendrá mayor Distancia de Unicidad el
que usa una clave propiamente dicha puesto que la entropía de la clave será
mucho mayor.
Aunque no se pide su cálculo, se tiene el siguiente escenario: Para el sistema con
clave, su entropía será H(K) = log2 (n!) = log2 (70!) por lo que usando la
aproximación de Sterling se obtiene H(K) 70 log2 (70/e) 328, en tanto que para
el sistema sin clave H(K) = log2 (n (n)) = log2 (70 (70)) = log2 (70 24) = 10.7.
SOLUCIÓN:
a) La empresa MuchaFirma firmará nuestra clave pública con su clave privada.
Como los demás navegadores tendrán a esta empresa incorporada (o pueden
incorporarla posteriormente) en las preferencias de seguridad del mismo y por
lo tanto tienen la clave pública de MuchaFirma, los usuarios pueden estar
seguros que somos quienes decimos ser puesto que sólo MuchaFirma puede
firmar nuestra clave pública. Las dos claves de MuchaFirma –pública y privada-
se cancelan y así nos autentifican.
b) Porque es una Autoridad de Certificación. Esa es la única manera de asegurar
que nuestra clave pública corresponde solamente a nosotros. Hace el papel de
Notario.
SOLUCIÓN:
a) En este sistema de codificación se convierte cada 3 caracteres ASCII de 8 bits
(24 bits) en 4 caracteres de código Base 64 de 6 bits cada uno (24 bits) en este
caso todos son imprimibles: letras mayúsculas, minúsculas, 10 dígitos, los
signos + , / y el signo = como relleno. Con ello se permite la transmisión por
Internet y posterior recepción por cualquier servidor de correo electrónico.
b) Tiene razón Benito porque el código Base 64 como su nombre indica, no se
trata de una cifra sino de una codificación. Además, el algoritmo de conversión
es público por lo que resulta extremadamente sencillo descodificar –que no
descifrar- ese mensaje y convertirlo nuevamente a código ASCII.
SOLUCIÓN:
a) Ni mucho menos. Significa solamente que Benito tiene más amigos que dicen
conocerle y han firmado su clave pública, pero esto no puede asociarse con un
mayor nivel de seguridad o autenticidad de dicha clave. No obstante, puede ser
un factor más de confianza si entre los firmantes de ambos usuarios hay
coincidencias de personas, pero nada más.
b) El sistema de Gestión de Claves propuesto por PGP sólo es válido en entornos
cerrados (empresas, organizaciones, asociaciones, grupos, amigos, etc.). Para
entornos abiertos, como podrían ser todas las aplicaciones asociadas con
Internet en donde se requiera un cierto grado de confianza, la única solución
está en la aceptación de Autoridades de Certificación ACs usando, por
ejemplo, el estándar SET en el comercio electrónico.
SOLUCIÓN:
a) Se ha roto parcialmente la cifra porque no se contaba con la cantidad
adecuada de caracteres al aplicar las estadísticas del lenguaje. Como la clave
tiene una longitud de 20 caracteres, será necesario romper el criptograma en
20 subcriptogramas de cifra monoalfabética en los que aplicar dichas
estadísticas con cierta probabilidad de éxito en función del número de datos
con que se cuenta. No obstante, en este caso sólo han fallado 4 letras entre 20
lo que equivale a una tasa de error del 5%, un valor verdaderamente bajo que
dejará entrever el contenido del texto en claro. Resulta obvio que la clave
verdadera es K = MASVALETARDEQUENUNCA.
b) Como sólo han fallado 4 letras entre 20, podemos suponer que la longitud del
texto cifrado era bastante aceptable para aplicar cálculos estadísticos fiables.
Dado que es necesario contar entre 50 y 100 caracteres para estos
menesteres en una cifra monoalfabética y aquí tendremos 20 subcriptogramas
de este tipo, la longitud del texto cifrado estará entre 20 50 = 1.000 y 20 100 =
2.000 caracteres. Con menos de 1.000 caracteres seguramente la tasa de
error sería mayor que la que se ha obtenido y con más de 2.000 este valor
tendería a cero y se encontraría la clave completa.
PARTE EJERCICIOS
Ejercicios: 7.0 puntos
UV IW GZ VC DF ZN QV PD VN FZ CQ WD WP VB CS QO FC QW NI VN
QW VP ZN EO DS QV PC KW FC QW GZ VP ON BO XM CQ VC BL VN PO
WN CB LW EV MK WZ NC WM CP OW NG ZV VD ML VS WB LW BO MO CS
WH EO CS BC FW CM OV LU WH CL WN MW NC DK CT CP QV PZ NW EO
CS IV CN ZD WS IV CU LO HZ DW SI OK WN WL NW QO PO IZ DW BZ VP
CZ NG ZV VD NW IH LV UV CP WI HL VG ZO VN WH LC CP OU OV NV ZN
NW IH LV SV PV NW IH LV VP VD QV MK ZD WD CE VN FC NX CQ VQ WN
IV NQ WB VQ LW IZ RW XP VM CT WL NC QC BL OI VL C
Sabemos que ha sido cifrado mediante una sustitución monoalfabeto afín
trabajando en módulo 27, es decir, sólo letras mayúsculas.
a) Encuentre el algoritmo de cifra: valores de las constantes a y b. (Vea la
Ayuda).
b) Complete el alfabeto de cifrado (faltan 10 caracteres).
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
_ _ _ _ _ _ F K O T Y D I N R W B G L P U Z E _ _ _ _
c) Descifre los primeros 23 caracteres del criptograma (cuatro palabras).
AYUDA: Las letras más frecuentes en el criptograma y su frecuencia relativa
son: C = 10,345%, V = 12,853%, W = 11,599%.
SOLUCIÓN:
a) Supondremos que dos de las tres letras más frecuentes en el criptograma C, V
y W se corresponden con las letras A y E del alfabeto, siendo la E la más
frecuente. Por lo tanto podemos plantear las siguientes ecuaciones:
Texto en claro E Texto cifrado V
Texto en claro A Texto cifrado C
(a E + b) mod 27 = V (a 4 + b) mod 27 = 22
(a A + b) mod 27 = C (a 0 + b) mod 27 = 2
Por lo tanto, b = 2
Reemplazando: (a 4 + 2) mod 27 = 22 a 4 = 20
Como inv (4, 27) = 7 a = 20 7 mod 27 = 140 mod 27 = 5
Como a y b son valores válidos para cifrar en el cuerpo, la función de cifra sería:
C = (5 M + 2) mod 27 siendo M el carácter del mensaje
Como el primer elemento del texto en claro debe ser la letra T según apartado b):
C = (5 T + 2) mod 27 = (5 20 + 2) mod 27 = 102 mod 27 = 21 = U.
Coincide en este carácter y en los demás, entregando un texto con sentido. Por lo
tanto el algoritmo de cifra es C = (5 M + 2) mod 27.
Si hubiésemos supuesto que la letra V de mayor frecuencia del criptograma
corresponde con la letra A del texto en claro y que la letra C se corresponde ahora
con la letra E del texto en claro, tenemos:
(a E + b) mod 27 = C (a 4 + b) mod 27 = 2
(a A + b) mod 27 = V (a 0 + b) mod 27 = 22
Por lo tanto, b = 22
Reemplazando: (a 4 + 22) mod 27 = 2 a 4 = -20 mod 27 = 7
Como inv (4, 27) = 7 a = 7 7 mod 27 = 49 mod 27 = 22
Como a y b son valores válidos para cifrar en el cuerpo n = 27, la función de
cifra podría ser C = (22 M + 22) mod 27: No obstante, para el primer elemento
del texto que es la letra T se tiene C = (22 T + 22) mod 27 = (22 20 + 22) mod
SOLUCIÓN:
a) Para encontrar la mochila fácil S’ debemos usar la fórmula Si’ = Si w-1 mod
luego hay que calcular w-1 = inv (w, ) = inv (40, 9.999). Usando el teorema
extendido de Euclides de restos o bien de forma directa es fácil encontrar
que w-1 = 250, luego:
-1
S1’ = S1 w mod = 120 250 mod 9.999 = 30.000 mod 9.999 = 3
S2’ = S2 w-1 mod = 160 250 mod 9.999 = 40.000 mod 9.999 = 4
S3’ = S3 w-1 mod = 360 250 mod 9.999 = 90.000 mod 9.999 = 9
S4’ = S4 w-1 mod = 720 250 mod 9.999 = 180.000 mod 9.999 = 18
Luego S’ = { 3, 4, 9, 18, 37, 73, 152, 300, 599, 1.200, 2.401, 5.000}
b) Para descifrar hay que aplicar la ecuación Ci w-1 mod y pasar este valor
por la mochila fácil S’:
C1 w-1 mod = 9.644 250 mod 9.999 = 2.411.000 mod 9.999 = 1.241
Pasando este valor por S’: 1.241 = 1.200+37+4 0100 1000 0100
-1
C2 w mod = 16.246 250 mod 9.999 = 4.061.500 mod 9.999 = 1.906
SOLUCIÓN:
a) Con los valores ASCII en decimal (tabla entregada junto al enunciado del
examen) se tiene para el primer mensaje de 11 caracteres:
MA = TE AMO BENI
fHA = 84+69+32+65+77+79+32+66+69+78+73 = 724 mod 256 = 212 1101 0100
Tamaño del mensaje en caracteres = 11 0000 1011
b) Sí pueden cifrar en sus grupos pues la parte baja del ASCII tiene 128
caracteres (restos del 0 al 127) y Adelaida elige n A = 187 y Benito nB = 133,
ambos mayores que el máximo carácter ASCII a cifrar, en este caso el 127.
La cifra se realizará en bloques de un carácter. Además, ambos grupos
cumplen con la condición de que mcd ( (n), e) = 1.
c) Los valores de cada usuario serán:
Adelaida: Benito:
pA = 17 pB = 7
qA = 11 qB = 19
nA = 17 11 = 187 nB = 7 19 = 133
(nA) = 16 10 = 160 (nB) = 6 18 = 108
eA = 3 eB = 5
Luego se calcula dA = inv (eA, (nA)) Luego se calcula dB = inv (eB, (nB))
dA = inv (3, 160) = 107 dB = inv (5, 108) = 65
No tiene sentido una firma con 16 bits en un sistema (el elegido por Adelaida y
Benito) con sólo 3 dígitos como módulo. De hecho, en la firma de Adelaida el
valor 59 se obtiene tanto para 54.283 107 mod 187 como para el equivalente
dentro del cuerpo que es 53 ya que 54.283 mod 187 = 53. Es decir 53 107 mod
183 = 59 y todas las restantes 290 = (54.283 – 53)/187 equivalencias hasta
llegar, en este caso al valor 54.283, darán el mismo resultado: 53 107+k*183 mod
183 = 59. Esto es debido a que la función hash tiene un tamaño mayor que el
módulo de trabajo y por lo tanto, aunque la firma máxima posible sería una
cadena de 16 unos, es decir 65.535, esto sólo se representa luego en valores
dentro del cuerpo al reducir mod n; de hecho, para Adelaida 65.535 mod 187 =
85. Lo mismo ocurre para Benito, aún peor ya que su módulo 133 es más
pequeño y por tanto podría haber más equivalencias en función del resumen
MHB. La firma 16.13765 mod 133 = 74 también se obtiene con 44 65 mod 133 ya
que 16.137 mod 133 = 44.
PARTE TEÓRICA
Cuestiones de Teoría: 2.0 pts
Cuestiones de Prácticas: 1.0 pto.
SOLUCIÓN:
a) Aunque la distancia mayor corresponda al sistema clásico y la entropía de la
clave también es mayor (se trata de un Vigenère con clave de 20 caracteres
aleatorios de la A a la Z) esto no quiere decir que sea más seguro que el DES.
En absoluto.
b) En el primer sistema se puede hacer un ataque estadístico elemental (Kasiski)
y ante el DES esto es imposible. Luego, aunque el espacio de claves es menor
en el DES, su seguridad es muchísimo mayor que la de un Vigenère con una
clave muy larga.
SOLUCIÓN:
a) Se le introduciría cualquier procedimiento que le añadiese no linealidad a la
cifra.
b) Si bien el espacio de claves que se generan en un sistema de cifra con
matrices (por ejemplo cifrado de Hill) es inmenso y el ataque por fuerza bruta
prácticamente imposible, el criptosistema es débil debido a la linealidad de
estas matrices. Esto permite plantear un sistema lineal de ecuaciones y,
mediante el método de Gauss-Jordan, dejar la diagonal principal de la matriz n-
grámica de clave con “unos”, dando lugar a los denominados vectores unitarios
que permiten romper fácilmente la clave.
SOLUCIÓN:
SOLUCIÓN:
a) El comando indica que siendo el usuario de destino Benito, el usuario que está
por defecto en PGP, Adelaida, cifrará el archivo archivo.doc con la clave
pública del destino (e), luego lo firmará con la clave privada del emisor (s) y le
añadirá armadura (a), dejando todo el mensaje en codificación base-64 para
que el mensaje sea compatible con todos los clientes de correo en Internet.
b) Sí puede comprobar la integridad porque en recepción recuperará el mensaje
en claro, descifrará con la clave pública de Adelaida la función hash aplicada
en emisión y la comparará con la que haga en destino. Si no son iguales puede
ser debido a que el mensaje ha sido modificado en el camino.
c) Sí puede comprobar la autenticidad de Adelaida. Sólo ella tiene la clave
privada con la que ha firmado. En este caso, si al comparar los resultados de
las dos funciones hash en destino como en el punto anterior éstas no
coinciden, es muy posible que alguien haya intentado falsificar la firma de
Adelaida.
d) Sólo Benito puede leerlo porque todo viene cifrado con su clave pública y es el
único que posee la clave privada, inversa a la anterior. Es más, esta clave
SOLUCIÓN:
a) Es muy mala elección porque al cifrar en modo Libro Electrónico de Códigos,
un mensaje con muchos bloques de 64 bits iguales da origen a bloques de 64
bits de criptograma también iguales. Los archivos con formato (aplicaciones,
programas, etc.) poseen muchas y largas cadenas de caracteres ANSI
repetidas que dan pistas al criptoanalista al aparecer también en el
criptograma. Permite el ataque por repetición de bloque. Debe usarse un modo
de cifra con encadenamiento o realimentación.
b) Sí se puede hacer DES múltiple porque, al no formar un grupo, cada cifrado en
cascada con una nueva clave no es igual a un cifrado de una sola etapa con
una clave resultado de las dos anteriores como sucede, por ejemplo, en
Vigenère. En este caso se elige tres etapas, TripleDES, con una clave real de
tamaño 2xK.= 112 bits. No se usa el “doble DES” porque permite el ataque
denominado “Encuentro a Medio Camino” cuyo efecto es reducir la clave de
longitud supuesta 22n bits a sólo 2n+1 bits, es decir una mejora de sólo un bit en
la fortaleza de la clave, lo que no tiene sentido.
SOLUCIÓN:
a) La única forma de recuperar el mensaje es atacando la mochila con algún
algoritmo de “backtracking” y buscar para cada objetivo (primero para el valor
11317, luego para 25149, etc.) el vector de ceros y unos que selecciona en la
mochila difícil los números cuya suma da lugar a ese valor. Agrupando de 8
bits, dará el ANSI binario del texto.
b) Aunque la mochila tiene un tamaño muy pequeño (n = 12), los números son
casi todos del mismo orden, lo que dificulta en parte el criptoanálisis.
= 5.905; = 4.321.
PARTE PRÁCTICA
Ejercicios: 7.0 pts.
SOLUCIÓN:
Repeticiones: 28 y 329 corresponden al n-grama PQMI
28 corresponde al n-grama PQMIZXO
42 corresponde al n-grama QAWA
98 corresponde al n-grama ASJU
112 corresponde al n-grama BLVE
154 corresponde al n-grama QOSO
a) Como el Indice de Coincidencia IC = 0.035, mucho más bajo que el típico de
una cifra monoalfabética (0.072) y existen varias repeticiones, es muy probable
que se trate de un sistema de sustitución/desplazamiento polialfabético como,
por ejemplo, Vigenère.
b) Como 28 = 22x7; 42 = 2x3x7; 98 = 2x72; 112 = 24x7; 154 = 2x7x11y 329 =
7x47, el mcd será 7. Luego sólo son claves candidatas K1 = CARMELE y K4 =
JOAQUIN.
c) Usando la Tabla de Vigenère o restando el valor de la clave al criptograma se
obtiene:
Clave K1 = CARMELE M1 = FSBTH RNFDY (esto no tiene sentido).
Clave K4 = JOAQUIN M4 = YESOQ UEYO que es castellano “Y eso que yo
...”
El mensaje es un estribillo de la Canción de Joaquín Sabina “19 días y 40
noches”:
Y eso que yo
para no agobiar con flores a María
para no asediarla con mi antología
de sábanas frías y alcobas vacías
Para no comprarla con bisutería
ni ser el fantoche que va en romería
con la cofradía del santo reproche
Tanto la quería
que tardé en aprender a olvidarla
diecinueve días y cuarenta noches
Dijo hola y adiós
y el portazo sonó como un signo de interrogación
sospecho que así
se burlaba a través del olvido cupido de mí
no, no pido perdón
para que me va a perdonar porque nada le importa
siempre tuvo la frente muy alta la lengua muy larga y la falda muy corta.
SOLUCIÓN:
a) Hablar de la filosofía y funciones básicas de IDEA significa usar tres
operaciones algebraicas en un cuerpo finito: suma mod 2n, multiplicación
mod 2n+1 y XOR o suma mod 2 sobre bloques o palabras de n bits. Para
calcular las claves de descifrado, es necesario que estas tres operaciones
dentro del cuerpo tengan un inverso. La suma mod n y el XOR siempre lo
tienen pero para la multiplicación es necesario que el módulo de esa
operación sea un número primo. IDEA usa n = 16 pues 2 16+1 = 65537 es un
número primo. Luego, en este escenario hay que preguntarse sobre la
primalidad de 2n+1 para los tres valores dados:
26+1 = 64+1 = 65 (no es primo pues 65 = 5 13)
8
2 +1 = 256+1 = 257 (es un número primo, puede ser candidato)
210+1 = 1024+1 = 1025 (no es primo pues 1025 = 5 2 41)
La única posibilidad es trabajar con palabras de n = 8 bits y cuerpo 2 8 = 256.
b) Para esta pregunta, podemos tener distintas respuestas. Una de ellas
puede ser: El cuerpo de trabajo de las operaciones básicas (n) no tiene
necesariamente una relación directa con el espacio de claves en IDEA,
aunque sí con el bloque de mensaje a cifrar. No obstante, si mantenemos el
mismo tamaño de clave de 128 bits del sistema original, habrá que
modificar el algoritmo de cálculo de subclaves a partir de la clave principal.
Al trabajar todo con palabras de 8 bits, se deben generar subclaves del
SOLUCIÓN:
a) Para generar la firma (r, s) el emisor hace los siguientes cálculos:
h 33
Cálculo r = mod p = 5 mod 65.537 h10 = 33 h2 = 100001 =
b5b4b3b2b1b0
Usando el algoritmo de exponenciación rápida tenemos:
j 0 1 2 3 4 5
j
52 5 25 625 62.940 59.635 33.457
(los dos últimos cálculos con números grandes están dados en los datos)
Luego 533 mod 65.537 = 5 33.457 mod 65.537 = 36.211. (r = 36.211)
Cálculo de s = {[H(M) - a r] inv [h, (p)]} mod (p) donde (p) = p-1 =
65.536
H(M)16 = 3F0AB5 H(M)2 = 0011 1111 0000 1010 1011 0101
H(M)10 = 4.131.509 (dado en los datos)
inv[h, (p)] = inv (33, 65.536)
65.536 = 1.985x33 + 31 31 = 65.536 – 1.985x33
33 = 1x31 + 2 2 = 33 – 1x31
31 = 15x2 + 1 2 = 33 – (65.536 – 1.985x33)
2 = 2x1 + 0 2 = -65.536 + 1.986x33
1 = 31 – 15x2
1 = (65.536 – 1.985x33) – 15x(-65.536 + 1.986x33)
Luego (16x65.536 – 31.775x33) mod 65.536 = 1 inv (33, 65.536) = - 31.775
-1
h = (-31.775 + 65.536) = 33.761 (h-1 = 33.761)
s = [(4.131.509 - 114 36.211) 33.761] mod 65.536
s = [3.455 33.761] mod 65.536 = 55.711 (s = 55.711)
Firma: (r, s) = (36.211, 55.711) (Valores que aparecen en los datos: r s mod p).
b) Para comprobar la firma se realizan los siguientes pasos:
rs mod p = 36.21155.711 mod 65.537 = 7.806 (dado en los datos)
( a)r mod 65.537 = (5114)36.211 mod 65.537
Clave pública de Benito ( a) mod 65.537 = (5114) mod 65.537
Como a = 114 = 1110010 = b6b5b4b3b2b1b0, (dado en los datos) usamos otra
vez el algoritmo de exponenciación rápida:
j 0 1 2 3 4 5 6
j
52 5 25 625 62.940 59.635 33.457 64.426
(los tres últimos cálculos con números grandes están dados en los datos)
Luego 5114 mod 65.537 = (25 59.635 33.457 64.426) mod 65.537 = 48.949
Clave pública de Benito ( a) mod 65.537 = 48.949.
Luego ( a)r mod 65.537 = 48.94936.211 mod 65.537 = 30.665 (dado en los
datos)
s a r
Luego se calcula k=(r ) ( ) mod 65.537 = 7.806 30.665 mod 65.537 = 29.866
Como H(M) mod 65.537 = 54.131509 mod 65.537 = 29.866 (dado en los datos) y
los valores coinciden, la firma es correcta y válida.
c) El generador = 5 debe ser correcto porque la firma se comprueba y esto
no puede ser debido a la casualidad. Para que un valor sea generador
dentro de un cuerpo deberá cumplirse que p-1/q mod p 1 para todos los
factores q de dicho número (p-1). En nuestro caso p-1 = 65.536 = 216 es
decir hay un único factor igual a 2. Calculamos 65.536/2 mod 65.537 = 532.768
mod 65.537 = 65.536 (dado en los datos) y como es distinto a la unidad,
comprobamos que = 5 es un generador en 65.537. Si no fuese un
Todos los resultados y valores de este examen puede comprobarlos con el software de
prácticas de la asignatura al que se accede desde la página Web de la misma. En particular:
CripClas, CripMod, Fortaleza, Mochilas, CryptoIdea y Tutorial PGP.
(*) Los apartados b) y c) del Ejercicio 2 son preguntas del tipo “abiertas”, en el sentido de que
cabe más de una respuesta correcta. En el examen se comentan un par. Lo que aquí se
pretende es evaluar el conocimiento adquirido por el alumno sobre el algoritmo de cifra
IDEA, su gestión de claves, las operaciones que realiza y el tamaño de palabra usado,
vueltas que hace el algoritmo, etc.
PARTE TEÓRICA
Cuestiones de Teoría : 2.0 puntos
Cuestiones de Prácticas: 1.0 punto
SOLUCIÓN:
a)
(1) p(x) = x2 + 1 (número de etapas n = 2)
+
No corresponde a un generador ya que no existe
una realimentación al XOR, salvo la de salida de x2.
S1 S2 No genera secuencia y no es un polinomio válido.
S
3
(2) p(x) = x + x + 1 (número de etapas n = 3)
Semilla (111) y secuencia cifrante:
+ S1 S2 S3 S
1 1 1 1
S1 S2 S3 S 0 1 1 1
1 0 1 1
0 1 0 0
0 0 1 1
1 0 0 0
1 1 0 0
1 1 1 Ciclo
S = {1 1 1 0 1 0 0}
Período T = 7 = 2n – 1 = 23 – 1 (máximo)
4 3 2
(3) p(x) = x + x + x + 1 (número de etapas n = 4)
SOLUCIÓN:
a) Como SF = 2H(K) – DN (entregado como dato) entonces log2 SF = H(K) – DN.
Luego H(K) = log2 SF + DN.
Como nos dicen que el texto es castellano, podemos suponer que trabajamos
con 27 caracteres pues el documento serán todas mayúsculas o todas
SOLUCIÓN:
a) Las firmas no iguales puesto que al cambiar el mensaje, también se
modificará la función hash. La firma digital depende, entre otras cosas, de
este resumen.
b) Aunque el mensaje en este escenario sea exactamente el mismo, las firmas
no coincidirán porque en ella se añade una indicación del tiempo (time
stamp) y éste ha cambiado con el nuevo mensaje.
c) Podrá leer el mensaje cualquier usuario que lo intercepte (no va dirigido a
ellos) ya que éste va en claro, no cifrado. Para leer el mensaje no es
necesario que tengan instalado el PGP; esto sólo les serviría en este caso
para comprobar la firma, siempre que tuviesen la clave pública de
Segismundo en su anillo de claves públicas, en tanto que dicha firma se
añade al texto enviado, y ellos fuesen los destinatarios del mensaje.
PARTE PRÁCTICA
Ejercicios: 7.0 puntos
SOLUCIÓN:
a) Según el método de Gauss-Jordan, escribimos el texto en claro y el
criptograma en una matriz digrámica [M | C] como se indica:
L O Z S 11 15 26 19
V O Y F 22 15 25 5
Y A K F (*) 25 0 10 5
S U N W = 19 21 13 23
P E B D (**) 16 4 1 3
R A R J 18 0 18 9
R X R X 18 24 18 24
(*) Como inv (25,27) = 13, multiplicamos por 13 toda esa fila (*) y obtenemos:
(25 0 | 10 5) 13 mod 27 = (1 0 | 22 11)
(A) (1 0 | 22 11) (tenemos el primer vector unitario)
Buscamos ahora un valor unitario (1) en la segunda columna de texto en claro:
(**) Como inv (4,27) = 7, multiplicamos la fila (**) por 7 obteniendo:
(16 4 | 1 3) 7 mod 27 = (4 1 | 7 21)
(B) (4 1 | 7 21)
Tenemos: 1 0 22 11 (A)
4 1 7 21 (B)
Para tener un cero en la primera columna de (B) hacemos (B) = (B) – 4(A). Así:
(B) (0 1 | 0 4). Luego:
1 0 22 11 Como ésta es la traspuesta
0 1 0 4 de la matriz K, entonces:
K= 22 0 Como 22 = V, 0 = A, 11 = L y 4 = E,
11 4 la clave simbólica es K = VALE.
|K| = (224 - 110) mod 27 = 88 mod 27 = 7. Como inv (7, 27) = 4 entonces:
22 0 16 0 mod 27 = I1 I2
11 4 10 7 I3 I4
SOLUCIÓN:
a) Teníamos un resumen Ri con tres bloques de texto igual a:
Ri = 1111 1011 1011 1100 0000 0000 1111 1000. Siguiendo el método:
M4 = 010100 110010 000001 010101 010011 100100 000100 100000 (dato dado)
M5 = 010000 100100 111101 001101 010000 100100 000100 000000 (dato dado)
Salida de las Cajas S para cada bloque de 6 bits de Mi: Fila (F) y Columna (C)
M4 = 010100 110010 000001 010101 010011 100100 000100 100000
M4 010100 S1(F=0, C=10) = 6 = 0110 (8 bloques de 6 bits)
110010 S2(F=2, C= 9) = 8 = 1000
000001 S3(F=1, C= 0) =13 = 1101
010101 S4(F=1, C=10) = 2 = 0010
010011 S5(F=1, C= 9) = 0 = 0000
100100 S6(F=2, C= 2) =15 = 1111
000100 S7(F=0, C= 2) = 2 = 0010
100000 S8(F=2, C= 0) = 7 = 0111
R4 = 0110 1000 1101 0010 0000 1111 0010 0111
(8x4 = 32 bits de resumen)
M5 = 010000 100100 111101 001101 010000 100100 000100 000000
M5 010000 S1(F=0, C= 8) = 3 = 0011 (8 bloques de 6 bits)
100100 S2(F=2, C= 2) = 7 = 0111
111101 S3(F=3, C=14) = 2 = 0010
001101 S4(F=1, C= 6) = 0 = 0000
010000 S5(F=0, C= 8) = 8 = 1000
100100 S6(F=2, C= 2) =15 = 1111
000100 S7(F=0, C= 2) = 2 = 0010
000000 S8(F=0, C= 0) =13 = 1101
R5 = 0011 0111 0010 0000 1000 1111 0010 1101 (8x4 = 32 bits de
resumen)
Para obtener el Resumen final R aplicamos XOR a Ri, R4 y R5:
Ri = 1111 1011 1011 1100 0000 0000 1111 1000
R4 = 0110 1000 1101 0010 0000 1111 0010 0111
R5 = 0011 0111 0010 0000 1000 1111 0010 1101
R = 1010 0100 0100 1110 1000 0000 1111 0010
b) Sí cumple con la unidireccionalidad pedida a las funciones hash. La no
linealidad de las Cajas S hace que la salida de una de ellas (S i) pueda ser
debido a cuatro posibles entradas. Por ejemplo, la salida decimal seis
(0110) de la caja S1 puede ser resultado de cualquiera de estas cuatro
entradas:
010100 Fila 0, Columna 10
010011 Fila 1, Columna 9
101010 Fila 2, Columna 5
111101 Fila 3, Columna 14
Luego, para la salida de 8 cajas S concatenadas, el número de iteraciones
para una única salida correcta será 48 = 65.536. Aunque entran 5 bloques de
48 bits a las cajas S para formar el resumen –que podría inducir a pensar que
el total de estados posibles sería en este caso (48)5 = 440 = 280 lo que es falso–
hay que recordar que el resumen tiene sólo 32 bits por lo que el sistema
sucumbe ante un ataque por fuerza bruta de sólo 2 32.
c) El peor inconveniente de esta propuesta es su baja representación en bits
por lo que habrá muchos mensajes distintos que tengan igual resumen. La
resistencia débil ante colisiones, conocido un mensaje encontrar otro con
igual resumen, será de 232 y la resistencia fuerte ante colisiones (en este
caso la coincidencia de resúmenes de dos mensajes distintos elegidos al
azar) será solamente de 216, valores extremadamente bajos. No obstante,
no resulta tan sencillo invertir el algoritmo por fuerza bruta.
2 4 8 16 32
50.035 = 30.535; 50.035 = 55.506; 50.035 = 68.322; 50.035 = 12.947; 50.035 = 82.369;
64
50.035 = 42.533
Operaciones de exponenciación rápida en módulo 112.169:
2 4 8 16 32
39.656 = 101.125; 39.656 = 42.233; 39.656 = 27.020; 39.656 = 84.548; 39.656 = 58.272.
SOLUCIÓN:
a) Adelaida: nA = pA x qA = 223 x 503 = 112.169
(nA) = (pA –1)(qA –1) = 222 x 502 = 111.444
eA = 41 dA = inv [41, (nA)] = inv (41, 111.444)
Algoritmo Extendido de Euclides:
111.444 = 2.718 41 + 6 Restos: 6 = 111.444 – 2.718 41
41 = 6 6 + 5 5 = 41 – 6 6
6=15+1 1=6–15
5=51+0 Ordenando por restos:
5 = 41 – 6(111.444 – 2.71841) = – 6111.444 + 16.30941
1 = 6 - 15 = (111.444 – 2.71841 ) – 1(– 6111.444 + 16.30941)
= 7111.444 – 19.02741
inv (41, 111.444) = - 19.027 mod 111.444 = 92.417 dA = 92.417
Benito: nB = pB x qB = 211 x 509 = 107.399
(nB) = (pB –1)(qB –1) = 210 x 508 = 106.680
eB = 73 dB = inv [73, (nB)] = inv (73, 106.680)
Algoritmo Extendido de Euclides:
106.680 = 1.461 73 + 27 Restos: 27 = 106.680 - 1.461 73
73 = 2 27 + 19 19 = 73 – 2 27
27 = 1 19 + 8 8 = 27 – 1 19
19 = 2 8 + 3 3 = 19 – 2 8
8= 23+2 2=8–23
3=12+1 1=3–12
2=21+0 Ordenando por restos:
19 = 73 - 2(106.680 – 1.46173)
= - 2106.680 + 2.92373
8 = 27 - 119 = (106.680 – 1.461 73) – 1(- 2106.680 + 2.92373)
= 3106.680 – 4.38473
3 = 19 – 28 = (– 2106.680 + 2.92373) – 2(3106.680 – 4.38473)
= – 8106.680 + 11.69173
2 = 8 – 23 = (3106.680 – 4.38473) – 2(- 8106.680 + 11.69173)
= 19106.680 – 27.76673
1 = 3 – 12 = (– 8106.680 + 11.69173) – 1(19106.680 – 27.76673)
= 27106.680 + 39.45773
inv (73, 106.680) = 39.457 mod 106.680 = 39.457 dB = 39.457
b) Firma de Adelaida:
rA = HMAdA mod nA = 38.79392.417 mod 112.169
Según los datos del examen y usando la propiedad de reducibilidad:
rA = (38.79392.314 mod 112.169)(38.793103 mod 112.169) mod 112.169
rA = 37.394 523 mod 112.169 = 39.656 (valor dado en el examen)
Firma de Benito:
RB = HMBdB mod nB = 7.81539.457 mod 107.399
j 0 1 2 3 4 5 6
j
50.0352 50.035 30.535 55.506 68.322 12.947 82.369 42.533
j 0 1 2 3 4 5
j
39.6562 39.656 101.125 42.233 27.020 84.548 58.272
NOTA: Todos los resultados y valores de este examen puede comprobarlos con el software de
prácticas de la asignatura al que se accede desde la página Web de la misma.
http://www.lpsi.eui.upm.es/Sinformatica/Sinformatica.htm
2. Justifique la respuesta anterior sin usar ecuaciones, sólo conceptos. (0.5 puntos)
SOLUCIÓN: Para un dado normal la entropía valdrá H(X) = H(X)máx = log2 6 = 2,58, puesto
que pi = 1/n = 1/6. En este caso al haber un estado (el 3) con más probabilidad que los otros
cinco, la entropía será obviamente menor y se descarta así la afirmación a). Además, la
entropía nunca es negativa y se anula sí y sólo si uno de los estados de la variable tiene
probabilidad 1 y los demás probabilidad 0, por lo que se descarta ahora la afirmación c) .
3. Queremos usar este dado para generar passwords numéricas de 8 dígitos. ¿Es ésta una
fuente apropiada? ¿Por qué sí o por qué no? (0.3 puntos)
SOLUCIÓN: Este sistema no es una fuente apropiada para generación de passwords porque
ésta debería ser aleatoria y, como tal, con estados equiprobables. Al lanzar el dado 8 veces
para obtener la password, el estado 3 aparecerá en media cuatro veces más que los demás
y, por lo tanto, la seguridad de esa clave será menor al ser más predecibles sus elementos.
3. ¿Qué deberá cumplir una función hash para que sea considerada apropiada y segura
como resumen en una firma digital? Indique al menos 3 características. (0.2 puntos)
SOLUCIÓN: 1) Ser unidireccional; 2) Fácil de generar; 3) Resistente a colisiones débiles;
4) Resistente a colisiones fuertes; 5) Comprimir el mensaje; 6) Difusión de los bits.
2ª PARTE: EJERCICIOS (7 puntos: 120 minutos)
c) El ataque por Kasiski falla puesto que el cifrador no es periódico y, por lo tanto, la
clave no tiene una longitud fija. Es imposible encontrarla con este método aunque
existan en el criptograma varios bloques repetidos de dos caracteres y uno de 10
caracteres (indicados en criptograma). Esta última repetición tan larga es sólo una
casualidad al repetirse un conjunto de letras del texto en claro con un conjunto de
letras de la clave como ya se ha comentado. (0.8 puntos)
0 1 1 1 0
SOLUCIÓN:
a) Para la semilla 01110 se tiene:
Estado Bit de Salida
Semilla 01110 0 Si = 01110 01
00111 1 El período es T = 7
10011 1
01001 1
10100 0
11010 0
11101 1
01110 semilla (0.5 puntos)
1 0 0 0 1
11100 0
11110 0
11111 1
01111 1
10111 1
01011 1
10101 1
01010 0
00101 1
10010 0
11001 1
01100 0
00110 0
00011 1
10001 semilla (0.5 puntos)
SOLUCIÓN:
j 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
j
7.683.1302 (los valores están dados en la hoja Anexa)
(1.0 punto)
Multiplicamos sólo los bits con valor 1 es decir: b15b10b9b8b2b1b0 mod 18.039.011.
Según los datos que se entregan en el Anexo, esta multiplicación será:
(7.683.130)(5.819.731)(15.575.245)(12.448.189)(13.935.324)(430.963)(2.688.794) mod 18.039.011 = 12.005.852
Es decir se obtiene el mismo valor entregado en el enunciado H(M) = 12.005.852.
Se comprueba así la validez de la firma ya que se obtendrá H(M‟) = H(M) en destino.
http://www.lpsi.eui.upm.es/Sinformatica/Sinformatica.htm
http://www.criptored.upm.es
Madrid, septiembre de 2001
ANEXO:
X
Cálculo de 7.683.130 mod 18.039.011 (x = 1, 2, 4, 8, 16, etc.) de izda. a dcha. y de arriba hacia abajo:
7.683.130 5.819.731 15.575.245 15.701.256 17.706.476 388.795
12.678.856 5.673.006 12.448.189 13.935.324 430.963 17.489.124
5.810.387 10.754.917 8.619.613 2.688.794 (16 bits de clave pública)
(7.683.130)(5.819.731)(15.575.245)(12.448.189)(13.935.324)(430.963)(2.688.794) mod 18.039.011 = 12.005.852
Alfabeto Base: 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
Alfabeto Cifra: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Solución:
a) Para que un sistema tenga secreto perfecto deberá cumplirse que el espacio de
claves sea igual o superior al espacio de los mensajes, situación teórica que no se da
en la práctica. No obstante si el tamaño del mensaje es muy pequeño (pocas letras
por ejemplo) puede darse el caso de lograr este secreto perfecto incluso en sistemas
de cifra muy rudimentarios como podrían ser los de tipo César. Por ejemplo, si el
resultado de una cifra monoalfabética mod 27 es C = XPKÑGF, esto bien podría ser
debido a mensajes como : HOLA TU; PEDAZO, MI CASO; MONEDA; TU CAFÉ;
DULCES; HUESCA; EL ROCK; BOLETA; SOLDAR; CAMINO; GUAPOS; PIEDRA;
FONEMA; PETALO; FLORES; etc., todos mensajes de 6 caracteres distintos.
b) Se produce una paradoja porque cabe esperar que una cifra tan elemental como ésta
sea muy vulnerable a ataques de tipo estadístico. En este caso, tras el criptoanálisis
por fuerza bruta nos podemos encontrar con un gran número de soluciones probables
y verdaderas. Si no tenemos idea de qué va el mensaje, no habremos logrado nada.
Solución:
a) No es adecuada porque, sin contar aquellas matrices clave de tipo singular (determinante
igual a cero), habrá un gran número de matrices K candidatas a clave con determinante
par y como 64 = 26 no podrá usarse al tener factores comunes y no existir la inversa K-1.
Esto, además de reducir el espacio de claves posibles, dificulta su generación.
b) Al mensaje le aplicaríamos antes el algoritmo de codificación Base 64 de forma que todos
los elementos de M’ tendrán esos 64 símbolos imprimibles. Para descifrar se procede
como siempre y, luego, se aplicaría el código Base 64 para recuperar el ASCII o ANSI.
c) El módulo 2.357 no puede utilizarse porque en estos sistemas de cifra el cuerpo de trabajo
debe coincidir con el alfabeto utilizado y este valor está muy por encima de cualquier
codificación para texto que se nos pueda ocurrir.
Solución:
a) El atacante no podrá descubrir nuevos mensajes puesto que la clave de sesión cambia
cada vez. No obstante, debemos preocuparnos si en esos 3 meses de tiempo transcurrido
la información que habíamos protegido sigue siendo confidencial en cualquier sentido.
Esto es conocido como el problema de la caducidad del secreto de la información
b) Como el intercambio de claves se hace con el algoritmo de D-H, se habrá enfrentado al
problema del logaritmo discreto. La clave la ha obtenido por fuerza bruta (para cuerpos
pequeños) calculando b = ax mod p para todos los valores posibles de x en el cuerpo p
conocidos a, b y p, bien aplicando diversos algoritmos existentes o por acierto fortuito.
Solución:
a) La empresa o Autoridad de Certificación guarda nuestra clave pública firmada con su
clave privada. Esto nos autentica la clave ante esa autoridad por lo que cualquiera
puede comprobar que nuestra clave es auténtica, ya que tendrá en su cliente de
correo la clave publica de esa AC (la ha dado de alta como autoridad en el cliente).
b) Habrá que pedir un certificado de revocación de clave y solicitar una nueva.
c) Caducado el certificado, el cliente de correo avisará de la caducidad del certificado. Si
se envía, aparece un mensaje de firma incorrecta. Sí podemos seguir recibiendo e-
mails de otros usuarios firmados con su clave (de la misma AC o de otras) ya que ésta
y las demás se encontrarán dadas de alta (o lo haremos) en nuestro cliente de correo.
b) ¿Cómo hacemos para que Adelaida envíe (cifre y firme) el archivo carta1_2001.doc y
Benito lo reciba (descifre y autentique) en el mismo ordenador, simulando un envío
por Internet?
No se piden los comandos o movimientos del ratón, tan sólo el tipo de operaciones.
Solución:
a) Para poder hacer esta demostración, lo primero que hay que hacer con PGP es crear
el par de claves para cada uno de ellos, con las características que deseemos.
b) Todo puede hacerse bien desde teclado MS-DOS o UNIX o bien con los menús y el
ratón en versiones Windows. Dejamos como usuario por defecto a Adelaida, elegimos
cifrar y firmar el archivo carta1_2001.doc y se elige como destinatario a Benito. Para la
firma del documento nos pedirá la frase de paso de Adelaida para operar con su clave
privada. Se guardará el archivo como carta1_2001.pgp. Para descifrar se cambia de
usuario por defecto a Benito y se abre el archivo carta1_2001.pgp. Como éste iba
dirigido a Benito (cifrado con su clave pública), pregunta por su clave privada, éste
introduce su frase de paso y puede ver el mensaje en claro. Por último PGP
comprueba la firma de Adelaida pues su clave pública está en el anillo de claves
públicas del ordenador. NOTA: Hecho y explicado en la clase de PGP.
Solución:
a) Para tener unos datos relativamente aceptables y hacer estadísticas (que es de lo que
se trata) la base de datos o espacio de mensajes debería ser mucho mayor que el
espacio de resúmenes posibles. Como hablamos de 80 bits, el espacio equiprobable
de hash será 280 (1.208.925.819.614.629.174.706.176) por lo que deberíamos contar
al menos con 283 mensajes distintos en una relación de 1 a 8. Es preferible aumentar
esta relación por lo que sería aconsejable aproximadamente 2 85 mensajes.
b) Deberíamos tener como resultado que hace falta muchos menos intentos para
encontrar colisiones de dos mensajes al azar que en el otro caso, a partir de un
mensaje encontrar otro con igual función. Esto es conocido como el problema de la
paradoja del cumpleaños. Como conclusión diremos que una función hash de n bits
en realidad tiene una seguridad de 2n/2; es la llamada resistencia fuerte a colisiones.
NOTA: Es el tema de la práctica obligatoria de este año y además explicado en clase.
Solución:
a) Resolviendo mediante el Algoritmo Extendido de Euclides para inv (61.772, 65.533):
i yi gi ui vi Algoritmo:
0 - 65.533 1 0 x = inv (A, B)
1 - 61.772 0 1 (g0,g1,u0,u1,v0,v1,i) =
(B,A,1,0,0,1,1)
2 1 3.761 1 -1 Mientras gi 0 hacer
3 16 1.596 -16 17 yi+1 = parte entera (gi-1/gi)
4 2 569 33 -35 gi+1 = gi-1 - yi+1 gi
5 2 458 -82 87 ui+1 = ui-1 - yi+1 ui
6 1 111 115 -122 vi+1 = vi-1 - yi+1 vi
7 4 14 -542 575 i = i+1
8 7 13 3.909 -4.147 Hacer x = vi-1
9 1 1 -4.451 4.722 Luego inv (61.772, 65.533) = 4.722
b) La mochila fácil se da en la hoja anexa: S’ = {119, 161, 503, 929, 2.039, 4.001, 8.183}
Los resultados de multiplicar C w-1 mod u se dan en la hoja anexa, es decir tenemos:
(8.344; 1.432; 11.312; 6.543; 12.464; 10.222; 2.319; 161;
8.847; 1.432; 11.312; 6.543; 12.464; 10.222; 2.319; 4.784) Se ha subrayado lo repetido.
Pasando estos valores por la mochila fácil S’ de derecha a izquierda tenemos:
0100001 0011000 0101101 0010110 1100011 0000101 1100100 0100000
0110001 0011000 0101101 0010110 1100011 0000101 1100100 1110010
Agrupando cada 8 bits e indicando abajo el código ASCII (hoja de datos) se tiene:
01000010 01100001 01101001 01101100 01100001 01110010 00100000
B a i l a r
01100010 01100001 01101001 01101100 01100001 01110010 01110010
b a i l a r r
El mensaje es M = Bailar bailarr.
c) Esta mochila podrá criptoanalizarse por el método de Shamir-Zippel porque, además de
conocer el módulo u, se cumple que mcd (S1’, u) = 1 y mcd (S2’, u) = 1 como se indica:
2
mcd (S1’, u) = mcd (119, 65.533) = 1 porque 119 = 7 17 y 65.533 = 13 71 (datos
dados)
mcd (S2’, u) = mcd (161, 65.533) = 1 porque 161 = 7 23 y 65.533 = 13 712 (datos
dados)
NOTA: con el software de prácticas se logra romper la mochila en el intento nº 96.
hace con números pequeños. La clave DES simulada (5 + 5 bits) es K = 921 = 11100
11001 y los datos simulados de A y B son:
pA = 7; qA = 11; eA = 7 pB = 3; qB = 13; eB = 5
a) Realice el intercambio de clave mediante algoritmo RSA de A hacia B y viceversa.
Debe usar la propiedad de reducibilidad o el algoritmo de exponenciación rápida
según la hoja de datos.
b) Si ahora desean intercambiar la clave K = 3.435 = 110101 101011 ¿Qué sucede?
Solución:
a) El algoritmo puede usarse en este entorno simulado puesto que el grupo de trabajo de
Adelaida es nA = 7 11 = 77 y el de Benito nB = 3 13 = 39, ambos mayores que la clave
de 5 bits que van a intercambiar y cuyo valor máximo 11111 es igual a 31.
Claves de Adelaida: pA = 7; qA = 11; eA = 7
nA = 77; nA = 6 10 = 60; dA = inv (eA, nA); dA = inv (7, 60) = 43
i yi gi ui vi Algoritmo:
0 - 60 1 0 x = inv (A, B)
1 - 7 0 1 (g0,g1,u0,u1,v0,v1,i) = (B,A,1,0,0,1,1)
2 8 4 1 -8 Mientras gi 0 hacer
3 1 3 -1 9 yi+1 = parte entera (gi-1/gi)
4 1 1 2 -17 gi+1 = gi-1 - yi+1 gi
ui+1 = ui-1 - yi+1 ui
vi+1 = vi-1 - yi+1 vi
i = i+1
Hacer x = vi-1
Como vi = -17, obtenemos (-17 + 60) mod 60 = 43. Luego dA = inv (7, 60) = 43.
Claves de Benito: pB = 3; qB = 13; eB = 5
NB = 39; nB = 2 12 = 24; dB = inv (eB, nB); dB = inv (5, 24) = 5
Este inverso dB es obvio porque 5 5 mod 24 = 25 mod 24 = 1.
Adelaida cifra su parte de clave 11100 = 28 con las claves públicas de Benito:
KA = 285 mod 39 = (282) (282) 28 mod 39 = 4 4 28 mod 39 = 19 que envía a B.
Benito descifra el criptograma recibido con su clave privada d B = 5:
Kizq. = 195 mod 39 = (192) (192) 19 mod 39 = 10 10 19 mod 39 = 28 = 11100 (5 bits)
Ahora Benito cifra su parte de clave 11001 = 25 con las claves públicas de Adelaida:
KB = 257 mod 77 = (252) (252) (252) 25 mod 77 = 9 9 9 25 mod 77 = (93) 25 mod 77
= 36 25 mod 77 = 53 que envía a A.
Adelaida descifra el criptograma recibido con su clave privada d A = 43:
X = 5343 mod 77
Usamos en este caso el algoritmo de exponenciación rápida con datos de hoja anexa.
j 0 1 2 3 4 5 43 = 101011 = b5b4b3b2b1b0
j
532 53 37 60 58 53 37
X = 5343 mod 77 = b9b1b3b5 mod 77 = 53 37 58 37 mod 77 = (372) 53 58 mod 77
X = 60 53 58 mod 77 = 25
Kder = 5343 mod 77 = 25 = 11001 (5 bits)
Ahora ambos tienen las dos mitades de la clave de sesión K = 11100 11001 de 10 bits.
b) Si cada uno mantiene el mismo grupo de trabajo, Adelaida debería enviar el valor
110101 (en decimal 53) cifrado en el grupo de Bernardo que es 39; no debe hacerse
porque está fuera del cuerpo. Benito sí podría enviar su parte 101011 (43 en decimal)
pues el grupo de Adelaida es 77 y éste sí es un elemento de él. Como una parte de
algoritmo no puede realizarse, no es posible el intercambio de esta clave de 12 bits en
este escenario.
Solución:
Las firmas, todas de 3 bits, podrán ser 000, 001, 010, 011, 101, 110, 111.
Es decir, en decimal podemos encontrarnos con los valores: 0, 1, 2, 3, 4, 5, 6, ó 7.
Generación de Firma: (r, s) r = h mod p; s = [H(M) - a r] h-1 mod (p)
¿ k = {(r mod p) [( a) r mod p]} = H(M) mod p ?
s
Comprobación de Firma:
a
a = 4 (clave privada) mod p = 24 mod 11 = 5 (clave pública)
h=3 h-1 = inv [h, (p)] = inv (3, 10) = 7 (este valor es obvio porque 3 7 mod 10 = 1.
Todos los valores, excepto la resta en el cálculo de s, están en la hoja de datos anexa.
a) Para = 2:
Cálculos para H(M) = 0
r = 23 mod 11 = 8 s = [0 - 4 8] 7 mod 10 = 6 k = [86 mod 11 58 mod 11]
mod 11
H(M)
k = 3 4 mod 11 = 1 -- comprobación -- mod p = 20 mod 11 = 1 (SÍ)
Cálculos para H(M) = 1
r = 23 mod 11 = 8 s = [1 - 4 8] 7 mod 10 = 3 k = [83 mod 11 58 mod 11]
mod 11
H(M)
k = 6 4 mod 11 = 2 -- comprobación -- mod p = 21 mod 11 = 2 (SÍ)
Cálculos para H(M) = 2
r = 23 mod 11 = 8 s = [2 - 4 8] 7 mod 10 = 0 k = [80 mod 11 58 mod 11]
mod 11
H(M)
k = 1 4 mod 11 = 4 -- comprobación -- mod p = 22 mod 11 = 4 (SÍ)
Cálculos para H(M) = 3
r = 23 mod 11 = 8 s = [3 - 4 8] 7 mod 10 = 7 k = [87 mod 11 58 mod 11]
mod 11
H(M) 3
k = 2 4 mod 11 = 8 -- comprobación -- mod p = 2 mod 11 = 8 (SÍ)
Cálculos para H(M) = 4
r = 23 mod 11 = 8 s = [4 - 4 8] 7 mod 10 = 4 k = [84 mod 11 58 mod 11]
mod 11
H(M)
k = 4 4 mod 11 = 5 -- comprobación -- mod p = 24 mod 11 = 5 (SÍ)
Cálculos para H(M) = 5
r = 23 mod 11 = 8 s = [5 - 4 8] 7 mod 10 = 1 k = [81 mod 11 58 mod 11]
mod 11
H(M)
k = 8 4 mod 11 = 10 -- comprobación -- mod p = 25 mod 11 = 10
(SÍ)
Cálculos para H(M) = 6
apartado anterior. En este caso, por ejemplo a partir de un valor hash H(M) = 0102 = 210
con una firma (r, s) igual a (5, 4), dando un valor k = H(M) mod p = 32 mod 11 = 9,
podríamos aceptar en recepción como valor de firma comprobada el resultado de una
función hash alterada durante la transmisión igual a H(M) = 1112 = 710 ya que al calcular
H(M)
mod p = 37 mod 11 obtendríamos el mismo valor k = 9 que en el caso anterior. Es
decir, estamos aceptando como firmas iguales la primera de ellas (5, 4) para H(M) = 0102
y esta otra (5, 9) para H(M) = 1112 lo cual no es cierto. Para que esto no suceda, a cada
resumen le debe corresponder un número de comprobación k único y en este escenario
con = 3 no se cumple. Por el contrario, si es un generador en p (por ejemplo el 2 entre
otros números) se podrá siempre comprobar la firma y, además, el parámetro que se usa
para la comprobación k = H(M) mod p será siempre distinto para cada uno de los valores
H(M) posibles -por definición propia de raíz primitiva de un número- lo que no ocurre en el
otro caso. De hecho, en H(M) mod p para = 3 se repiten en este ejemplo los resultados
de k igual a 1, 3 y 9, y se repetirían también el 5 y 4 si se firmasen los valores H(M) = 8 y
H(M) = 9. Existe, además, un problema añadido y es la debilidad en la fortaleza de la clave
privada ya que la clave pública a mod p tendrá valores repetidos para distintos valores de
clave privada a, al no ser un generador en p, facilitando así el ataque por fuerza bruta.
Esto reduce en muchos casos el espacio de claves de forma espectacular.
(Verdadero / Falso) El producto p q = 101 701 = 70.801 y dos bloques ASCII concatenados podrían
llegar a valer en su expresión máxima 255.255, mayor que 70.801. Es Falso porque este cuerpo y de
esta forma sólo se podrá cifrar bloques de un carácter ASCII, máximo valor decimal igual a 255. No
16
obstante, si se concatena en bits, dos bytes serán 16 bits y como 2 es menor que 70.801 se podría
así cifrar hasta dos caracteres siendo en este caso la respuesta es Verdadero. 0,4 Puntos
b) Se puede firmar digitalmente ese hash dentro del cuerpo.
(Verdadero / Falso) El hash indicado es de 16 bits y como 216 es igual a 65.536 y esto es menor que el
cuerpo de cifra 70.801, sí se puede hacer la firma de ese hash. 0,2 Puntos
c) Si pudiéramos cifrar un mensaje M y el criptograma resultante fuese 0110 1101 1001 1110, no
podríamos representarlo en código Base 64.
(Verdadero / Falso) Independientemente del mensaje y del cuerpo de cifra, con la condición de que
este cuerpo sea mayor o igual que un byte (255), podremos representar siempre cualquier mensaje o
criptograma en su formato base 64. En este caso C64 = 011011 011001 111000 en donde los últimos
dos ceros corresponden a un relleno. El resultado (no se pide aquí) será bZ4=. 0,4 Puntos
0 1 0 0 4 4 1 0 4 23 22 8
0 21 13 21 9 7 0 1 0 0 4 4
0 21 13 21 9 7
2 b) Fila 3 = Fila 3 - 21 fila 2 mod 27
1 0 4 23 22 8
0 1 0 0 4 4
0 0 13 21 6 4
3) Multiplicamos fila 3 por inv (13, 27) = 25 3 a) Luego convertimos la columna 3 en ceros:
1 0 4 23 22 8 Fila 1 = Fila 1 - 4 fila 3 mod 27
0 1 0 0 4 4 1 0 0 2 16 13
0 0 1 12 15 19 0 1 0 0 4 4
0 0 1 12 15 19
La matriz de cifra K será la 2 0 12 C A M
traspuesta de la entregada 16 4 15 = P E O
por los vectores unitarios: 13 4 19 N E S
b) C1 2 0 12 E (4) 0,7 Puntos
C2 = 16 4 15 X S (19) mod 27
C3 13 4 19 P (16)
C1 = (2 4 + 0 19 + 12 16) mod 27 = 200 mod 27 = 11 = L
C2 = (16 4 + 4 19 + 15 16) mod 27 = 380 mod 27 = 2 = C
C3 = (13 4 + 4 19 + 19 16) mod 27 = 432 mod 27 = 0 = A El primer trigrama de C.
c) C = LCA = 0100 1100 0100 0011 0100 0001 (según Código ASCII entregado en Anexo)
C = 010011 000100 001101 000001 = TENB (según Código Base 64 entregado en Anexo)
No tiene sentido codificar el criptograma en base 64 puesto que, al ser el módulo de trabajo 27,
todos sus elementos estarán entre la A y la Z, y son imprimibles. El código Base 64 se usa para
representar los 256 elementos ASCII a través de caracteres imprimibles. 0,3 Puntos
Usarán RSA para intercambiarse una clave de sesión del DES. Para ello el usuario A genera una
clave 0x 10BD FA8C 9022 DE83 que envía a B. La cifra se hace en cuatro bloques de 16 bits.
NOTA: Deberá usar obligatoriamente el algoritmo extendido de Euclides para el cálculo de
inversos y el algoritmo de exponenciación rápida para el cálculo de la cifra.
a) Exprese en valores (sin calcularla) la ecuación del primer bloque de clave K1 que A envía a B.
b) Calcule el valor del primer bloque (K1) de clave cifrada que A envía a B.
c) ¿Qué tamaño máximo de bloque de clave Ki en bits podrían intercambiarse A y B?
Datos del examen:
Operaciones en mod 271.477:
4.2852 = 172.266 172.2662 = 152.409 152.4092 = 116.730
2 2
116.730 = 190.793 190.793 = 160.873 160.8732 = 219.719
2 2 2
219.719 = 227.005 227.005 = 48.839 48.839 = 50.999
2 2
50.999 = 148.341 148.341 = 212.569 212.5692 = 133.450
2 2
133.450 = 11.300 11.300 = 95.810 95.8102 = 104.299
(104.299) (148.341) (160.873) (116.730) = 160.873
Otros datos de interés: 33.833 = 1000010000101001; 10BD = 1000010111101 = 4.285
15 16 17 18 19 20
2 = 32.768; 2 = 65.536; 2 = 131.072; 2 = 262.144; 2 = 524.288; 2 = 1.048.576
SOLUCIÓN:
eB
a) La ecuación de envío del bloque 1 de la clave K desde A hacia B será: K1 mod nB
Conocemos el valor de K1 en hexadecimal = 10BD = 1000010111101 = 4.285
nB = pB qB = 401 677 = 271.447. Nos falta conocer la clave pública de B, eB = inv [dB, (nB)].
Como (nB) = (pB -1) (qB -1) = 400 676 = 270.400 eB = inv [dB, (nB)] = inv (105.497, 270.400)
Usando el algoritmo extendido de Euclides:
i yi gi ui vi Algoritmo: (apuntes de clase)
0 - 270.400 1 0 x = inv (A, B)
1 - 105.497 0 1 (g0,g1,u0,u1,v0,v1,i) = (B,A,1,0,0,1,1)
2 2 59.406 1 -2 Mientras gi 0 hacer
3 1 46.091 -1 3 yi+1 = parte entera (gi-1/gi)
4 1 13.315 2 -5 gi+1 = gi-1 - yi+1 gi
5 3 6.146 -7 18 ui+1 = ui-1 - yi+1 ui
6 2 1.023 14 -41 vi+1 = vi-1 - yi+1 vi
7 6 8 -91 264 i = i+1
8 127 7 11.571 –33.569 Hacer x = vi-1
9 1 1 -11.662 33.833 1,0 Punto
10 7 0
Clave pública eB = inv (105.497, 270.400) = 33.833 (aparece en los datos)
La ecuación del primer bloque de clave con valores será: K1eB mod nB = 4.28533.833 mod 271.477.
b) Como dato tenemos 33.833 = 1000010000101001 = b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0,
j 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
j
4.2852 (los valores desde j = 1 hasta j = 15 están en los datos)
Multiplicamos sólo los bits con valor 1 (en negrita) es decir: b15b10b5b3b0 mod 271.477.
Según los datos que se entregan en el examen, esta multiplicación será:
K1 = (104.299) (148.341) (160.873) (116.730) 4.285 = 160.873 4.285 mod 271.477
K1 = 160.873 4.285 mod 271.477 = 60.702. 1,0 Punto
c) Como nA = pA qA = 653 991 = 557.933 y nB = pB qB = 401 677 = 271.477, viendo los datos
entregados en el examen, A puede enviar a B un bloque máximo de 18 bits (218 < 271.477 < 219),
en cambio B puede enviar a A un bloque máximo de 19 bits (219 < 557.933 < 220). Por lo tanto la
clave de B fuerza a que el intercambio de bloques de clave sea como máximo de 18 bits. 0,5
Puntos
ANEXO (TABLAS)
Módulo 27
Alfabeto Base: 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
Alfabeto Cifra: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Para explicar a alguien el funcionamiento del sistema de cifra RSA y a modo de ejemplo, creamos un
par de claves asimétricas con números primos muy pequeños. Para ello elegimos p = 7 y q = 11.
a) ¿Podemos elegir como clave pública e = 5? ¿Y el valor e = 3? ¿Por qué sí o por qué no?
Como p = 7 y q = 11, luego n = p q = 7 11 = 77 y (n) = (p-1)(q-1) = 6 10 = 60. Como 60 = 22 3 5, las
dos claves públicas propuestas e = 3 y e = 5 tienen factores con (n) luego no son válidas. Al tener
factores en común con (n), no existirá la clave privada d, inversa de e en el cuerpo (n). 0,3 Puntos
b) ¿Es el par de claves e = 7, d = 43 válida para la cifra? ¿Por qué sí o por qué no?
La clave e = 7 es válida porque no tiene factores en común con (n). Para saber ahora si la clave d es
efectivamente la inversa de e, debe cumplirse que e d mod (n) = 1 que en este caso se cumple ya
que 7 43 mod 60 = 301 mod 60 = 5 60 + 1 mod 60 = 1. 0,4 Puntos
c) ¿Podríamos cifrar en ese cuerpo caracteres ASCII? ¿Por qué sí o por qué no?
No, porque el cuerpo de cifra será 77 y los caracteres ASCII van desde el 0 al 255. Podríamos cifrar
como mucho un alfabeto codificado de 77 elementos con letras mayúsculas, minúsculas, números,
signos etc. o bien si transformamos antes el código ASCII a Base 64. 0,3 Puntos
Instalamos una versión Windows de PGP (por ejemplo 6.5 o superior) en nuestro ordenador.
a) ¿Qué es lo primero que nos sugiere el programa una vez terminada la instalación?
Terminada la instalación de PGP, aunque no es obligatorio en ese momento pero sí recomendable, el
programa nos invita a crear un par de claves asimétricas: clave pública y clave privada. 0,3 Puntos
b) ¿Qué tipos de claves asimétricas podemos elegir? ¿De qué tamaños aproximadamente?
Podemos elegir entre claves asimétricas clásicas RSA o del tipo Diffie y Hellman (DH/DSS). Valores
típicos de tamaño de clave pueden ser 512 bits, 1024 bits (recomendado) y 2.048 bits. 0,3 Puntos
c) ¿Debemos crear ahora una clave simétrica de cifrado? ¿Por qué sí o no?
No hay que crear ninguna clave simétrica. Ésta se crea mediante una frase de paso sólo en el caso de
querer realizar cifrados locales o bien de forma automática por el programa para una operación de cifra
con un segundo usuario para el intercambio de una clave simétrica de sesión. 0,4 Puntos
clave es constante y periódica como sería un cifrado de Vigenère, que no es el caso de los
cifrados tipo autoclave como en este problema donde la clave no es periódica, y hacer luego
coincidir estas repeticiones con el texto en claro de forma que quede reflejada la redundancia
del lenguaje. Tras este ataque, se puede encontrar la longitud de la clave y luego se intenta
por métodos estadísticos encontrar cada uno de los caracteres de ésta. Este sistema sólo
podría atacarse mediante el método de Friedman para cifradores no periódicos. 0,5 Puntos
NOTA: Para una mayor facilidad en la comprobación de los resultados del examen, se incluye en
esta solución la tabla con los valores de las cajas S del DES. Además, las encontrará en los
apuntes, notas y libro de clase o bien en otras soluciones de exámenes de la asignatura.
ANEXO (TABLAS)
Módulo 27
Alfabeto Base: 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
Alfabeto Cifra: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
CAJA S1 C O L U M N A
FILA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
CAJA S2 C O L U M N A
FILA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
CAJA S3 C O L U M N A
FILA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
CAJA S4 C O L U M N A
FILA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 7 13 14 3 0 9 6 10 1 2 8 5 11 12 4 15
1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
CAJA S5 C O L U M N A
FILA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
CAJA S6 C O L U M N A
FILA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
3 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
CAJA S7 C O L U M N A
FILA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
CAJA S8 C O L U M N A
FILAS8 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Un amigo que tiene nuestra clave pública exporta su par de claves de PGP 8.0, nos envía por
correo el archivo y lo añadimos a nuestros anillos de claves. Responda y justifique.
¿Podemos enviarle sólo a partir de ahora mensajes cifrados confidencialmente? ¿Por qué?
Solución: Sí, porque antes al no tener su clave pública, no podíamos enviarle junto al correo la clave de
cifrado simétrico de forma segura, cifrada con su clave pública. 0,2 Puntos
¿Podemos enviarle sólo a partir de ahora mensajes firmados digitalmente? ¿Por qué?
Solución: No, porque no es necesario que los mensajes además de firmados vayan cifrados.
Podíamos enviarle mensajes en claro firmados pues ya tenía nuestra clave pública. 0,2 Puntos
¿Nos indica algo especial PGP al importar las claves de este amigo? ¿Por qué?
Solución: Sí, nos advierte que la clave no tiene confianza porque no es nuestra y además no se
trata de un backup de ese anillo de claves sino de una importación. 0,3 Puntos
Solución:
a) S = {3.625, 2.921, 1.513, 2.586, 843}; w = 3.801; m = 3.889; w-1 = inv (3.801, 3.889) = 2.519
S’ = S w-1mod m = {3.625, 2.921, 1.513, 2.586, 843} 2.519 mod 3.889. Usando calculadora:
S’ = {3, 11, 27, 59, 123}
-1
b) C1 = 5.507 M1 = C1 w mod m = 5.507 2.519 mod 3.889 = 70 [01010]
-1
C2 = 843 M2 = C2 w mod m = 843 2.519 mod 3.889 = 123 [00001]
Los 10 primeros bits son 0101 0000 01, luego la primera letra es P.
La solución completa del descifrado (no pedido en el examen) es M = Pocholo.
c) Esta mochila es muy insegura por ser muy pequeño el número de elementos; de hecho es
posible recuperar el texto en claro directamente desde la mochila pública, incluso mentalmente lo
cual es inaceptable. Entre 15 y 16 elementos es preferible usar una mochila de tamaño 15 pues,
aunque sigue siendo un valor muy bajo, al menos no permite hacer un ataque por estadísticas del
lenguaje como sucedería con 16, al ser precisamente el tamaño de dos bytes, un digrama.
Sf(x1) = 0110 1011 1100 010; Sf(x2) = 101 110 0. Haciendo ahora Si = Sf(x1) Sf(x2) con 20 bits:
01101011110001001101 10111001011100101110 = 11010010101101100011
b) C = Sol Si = 01010011 01101111 01101100 11010010 10110110 00110010 (4 bits nuevos)
C = 10000001 11011001 01011110 = 81 B9 5E.
c) El periodo de Sf(x1) es 15, m-secuencia de 4 celdas y el de Sf(x2) 7, m-secuencia de 3 celdas.
d) El periodo de Si será mayor que ambos. Su valor será mcm (T1,T2) = 15 7 = 105.
e) Rompe la linealidad de las dos m-secuencias por lo que se aumenta la complejidad lineal del
cifrador y se anula así la posibilidad de un ataque por el método de Berlekamp-Massey.
Solución:
a) dA = inv [(eA, (nA)] = inv [17, 3.152.391.060]. Desarrollando algoritmo extendido de Euclides:
i yi gi ui vi
0 - 3.152.391.0601 0
1 - 17 0 1
2 185.434.768 4 1 -185.434.768 (entregado como dato)
3 4 1 -4 741.739.073
4 4 0 Luego: dA = 741.739.073 (30 bits)
eA 17
b) C = KS mod nA = 25 mod 3.152.520.713. Como 17 = 10001 = b0b1b2b3b4
j 0 1 2 3 4
j
252 25 625 390.625 1.266.896.401 754.687.549 (entregados como datos)
Luego C = 25 754.687.549 mod 3.152.520.713 = 3.104.585.160 = B90C35C8. (Dato entregado)
c) C16 = B90C35C8 = 1011 1001 0000 1100 0011 0101 1100 1000 (00 00). Luego, C64= uQw1yA==.
Si la clave C fuera texto ANSI, entonces C64= QjkwQzM1Qzg=.
d) Resumiendo, para el servidor A y el cliente B tenemos:
A: n = 32 bits, p = 15 bits, q = 17 bits, e = 5 bits, d = 30 bits, CP = 1, MNC = 9.
B: n = 32 bits, p = 15 bits, q = 17 bits, e = 4 bits, d = 32 bits, CP = 9, MNC = 121.
En este escenario de 32 bits (10 dígitos) podemos decir que:
Ambas claves tienen valores correctos de p y q ya que difieren sólo en unos pocos bits.
Las claves públicas son valores pequeños, de pocos bits, y por contrapartida las claves privadas
son valores del orden de los n bits del cuerpo, lo cual indica que también son valores acertados.
La clave del servidor A es más robusta que la del cliente B puesto que tiene los valores mínimos
por diseño de claves parejas CP y mensajes no cifrables MNC.
Estos datos de cifra asimétrica reflejan en cierta medida los de un sistema real simulado.
e) KS tiene 5 bits y la cifra RSA 32; una relación de 6,4 veces. En un sistema real, KS es de 128
bits y la clave asimétrica de 1024 bits, una relación igual a 8. Luego también en este escenario en
el ejercicio se cumple aproximadamente la relación de tamaño entre ambas.
f) Sí, siempre cambiará la clave de sesión KS que se generará de forma aleatoria. Se cambia por
razones de seguridad para evitar ataques por repetición de clave o, lo que es lo mismo, seguir la
filosofía del cifrado de uso único, one time pad. Las claves asimétricas cambiarán sólo si caduca
un certificado digital, termina la vida de la clave o dicha clave se revoca.
Verdadero / Falso:
¿Por qué? Porque aunque se trata de un valor estándar que puede ser MD5, no es el más seguro ya
que 128 bits tienen poca fortaleza. En la actualidad es más recomendable usar otras funciones hash
como SHA-1 de 160 bits.
c) Podemos firmar sobre ese hash pero primero lo convertimos a Base 64.
Verdadero / Falso:
¿Por qué? La conversión de un texto ASCII a Base 64 se usa sólo por motivos de compatibilidad entre
clientes de correo. Ese hash de 128 bits se firma directamente con el algoritmo que se desee, por
ejemplo RSA o DSS.
¿Puede exportar Manolito este par de claves a otros amigos? ¿Por qué?
Solución: Sí. Puede enviar o exportar ese par de claves a sus amigos si bien sólo tendrá validez para
esos amigos la clave pública de Rosaura, no la privada pues desconocen la frase de paso.
¿Puede enviar Manolito sus mensajes personales firmados a Rosaura? ¿Por qué?
Solución: Sí. No obstante Rosaura sólo podrá comprobar la firma si tiene la clave pública de
Manolito. Éste sólo necesita tener su clave privada (la de Manolito) en condiciones (válida) y
abrirla con su frase de paso para firmar. Si, además, quisiera enviar esos mensajes de forma
confidencial, también puede hacerlo porque tiene la clave pública de Rosaura que es válida.
Solución:
Como sólo falta un 1 en la cuarta columna de la cuarta fila para tener todos los vectores unitarios,
multiplicamos la 4ª Fila por inv (17, 27) = 8 y nos queda:
4ª FILA x 8 mod 27: [ 0 0 0 1 | 13 0 0 15]
Con este vector deberemos ahora lograr que toda la cuarta columna, excepto el último elemento
sean cero, por lo tanto usando vector de 4ª fila hacemos:
1ª FILA (convertir el 15 en 0) 1ª fila = 1ª fila – 15 x 4ª fila mod 27
1ª FILA: [ 1 0 0 0 | 4 8 19 18]
2ª FILA (convertir el 2 en 0) 2ª fila = 2ª fila – 2 x 4ª fila mod 27
2ª FILA: [ 0 1 0 0 | 11 6 4 15]
3ª FILA (convertir el 16 en 0) 3ª fila = 3ª fila – 16 x 4ª fila mod 27
3ª FILA: [ 0 0 1 0 | 4 12 7 20]
Obtenemos así los cuatro vectores unitarios y la matriz 2n-grámica se muestra a la izquierda.
Como ésta es la traspuesta de clave la [K], la clave [K] y su simbólica se muestran a la derecha.
1 0 0 0 | 4 8 19 18 1 0 0 0 | 4 11 4 13 E L E N
0 1 0 1 | 11 6 4 15 0 1 0 1 | 8 6 12 0 I G M A
0 0 1 0 | 4 12 7 20 0 0 1 0 | 19 4 7 0 S E H A
0 0 0 1 | 13 0 0 15 0 0 0 1 | 18 15 20 15 R O T O
La clave simbólica es K = EL ENIGMA SE HA ROTO
Solución:
a) Salida cajas S si entrada = 101011 010010 111010 001011 011111 110100 110111 100001:
S1 1010112: Fila = 112 = 3; Columna = 01012 = 5 Salida celda = 9 = 11012 = 916
S2 0100102: Fila = 002 = 0; Columna = 10012 = 9 Salida celda = 7 = 01112 = 716
S3 1110102: Fila = 102 = 2; Columna = 11012 = 13 Salida celda = 10 = 10102 = A16
S4 0010112: Fila = 012 = 1; Columna = 01012 = 5 Salida celda = 15 = 11112 = F16
S5 0111112: Fila = 012 = 1; Columna = 11112 = 15 Salida celda = 6 = 01102 = 616
S6 1101002: Fila = 102 = 2; Columna = 10102 = 10 Salida celda = 4 = 01002 = 416
S7 1101112: Fila = 112 = 3; Columna = 10112 = 11 Salida celda = 15 = 11112 = F16
S8 1000012: Fila = 112 = 3; Columna = 00002 = 0 Salida celda = 2 = 00102 = 216
La salida en hexadecimal de las cajas S será: 97AF 64F2
b) No, porque DES usa una clave de 64 bits con paridad o 56 bits sin paridad y la salida de estas
cajas S son sólo 32 bits.
c) Menos aún porque IDEA usa una clave de 128 bits.
d) Como el valor ASCII de la letra U = 8510 = 010101012, esta cadena de ceros y unos se repetirá
desde el bit primero hasta el último en la entrada, por lo que todas las entradas a las cajas S i
serán iguales, el valor 010101. Luego, en todas las cajas Si deberá leerse en las celdas de la
fila 012 = 1 y columna 10102 = 10. La salida hexadecimal será ahora C152 FD56.
e) En DES, para cada valor de salida de cada caja Si hay cuatro valores de entrada posibles. Por
ejemplo, en la caja S1 la salida 11112 = F se obtiene independientemente para entradas
001010, 000011, 110000 y 100001. Por lo tanto, para una salida cualesquiera de 32 bits,
habrá 48 = 262.144 posibles entradas, un valor bajo que permitiría hacer un ataque por fuerza
bruta. Nota: recuerde que el algoritmo DES entrega un bloque de texto cifrado después de 16
vueltas por lo que este tipo de ataque (aunque haya otras operaciones en dicho algoritmo y
con tamaños de cadenas de bits distintas) se vuelve computacionalmente imposible.
a) ¿Qué valor numérico de KS cifrada E1(KS) envía Adela (A) a Benito (B), es decir A B?
b) ¿Qué valor numérico de KS cifrada E2(KS) envía Benito (B) a Adela (A), es decir B A?
c) Encuentre la clave privada dA de Adela (A).
d) Encuentre la clave privada dB de Benito (B).
e) Descifre en el extremo de Adela (A) la clave KS cifrada E2(Ks) que ha enviado Benito (B).
f) Descifre en el extremo de Benito (B) la clave KS cifrada E1(Ks) que ha enviado Adela (A).
Valores binarios para la exponenciación rápida: 72 = 111; 112 = 1011; 312 = 11111; 592 = 111011.
Solución:
a) Puesto que nB = pB x qB = 5 x 19 = 95, (A) envía a (B) el valor E1(KS) = EeB(KS) = KseB mod nB =
7
36 mod 95. Y dado que 7 = 1112 = b2b1b0 entonces:
j 0 1 2
j
362 36 61 16
EeB(KS) = 36x61x16 mod 95 = 81 (A B el valor 81)
b) Puesto que nA = pA x qA = 7 x 13 = 91, (B) envía a (A) el valor E2(KS) = EeA(KS) = KseA mod nA =
3611 mod 91. Y dado que 11 = 10112 = b3b2b1b0 entonces:
j 0 1 2 3
j
2
36 36 22 29 22
EeA(KS) = 36x22x22 mod 91 = 43 (B A el valor 43)
c) El indicador de Euler de (A) será (nA) = (pA –1)(qA –1) = (7–1)(13–1) = 6x12 = 72, luego su
clave privada será dA = inv [eA, (nA)] = inv (11, 72):
i yi gi ui vi
0 -- 72 1 0
1 -- 11 0 1
2 6 6 1 -6
3 1 5 -1 7
4 1 1 2 -13 La clave privada será dA = -13 mod 72
5 5 0 -- -- dA = 59
d) El indicador de Euler de (B) será (nB) = (pB –1)(qB –1) = (5–1)(19–1) = 4x18 = 72, luego su
clave privada será dB = inv [eB, (nB)] = inv (7, 72):
i yi gi ui vi
0 -- 72 1 0
1 -- 7 0 1
2 10 2 1 -10
3 3 1 -3 31 La clave privada será dB = 31 mod 72
4 2 0 -- -- dB = 31
e) (A) recibe E2(KS) = EeA(KS) = 43. Como su clave privada es dA = 59, calculará 4359 mod 91 y
dado que 59 = 1110112 = b5b4b3b2b1b0 entonces:
j 0 1 2 3 4 5
j
432 43 29 22 29 22 29
DdA[EeA(KS)] = 43x29x29x22x29 mod 91 = 36 Esta era la clave KS a intercambiar.
f) (B) recibe E1(KS) = EeB(KS) = 81. Como su clave privada es dB = 31, calculará 8131 mod 95 y
dado que 31 = 111112 = b4b3b2b1b0 entonces:
j 0 1 2 3 4
j
812 81 6 36 61 16
DdB[EeB(KS)] = 81x6x36x61x16 mod 95 = 36 Esta era la clave KS a intercambiar.
Curiosidad: observe la distribución interesante de los restos (29 .. 22 .. 29 ..) para el módulo 91.
a) Una clave será buena para cifrar si, entre otras cosas, su entropía es: | muy baja | muy alta |
relativamente alta | relativamente baja | R: muy alta.
b) La cifra de Vigenère consiste en una: | sustitución monoalfabética | transposición con clave |
sustitución polialfabética | permutación simple | R: sustitución polialfabética.
c) El DES no es recomendable porque: | tiene claves débiles | genera bloques repetidos | es un
algoritmo débil | el espacio de claves es bajo | R: el espacio de claves es bajo.
d) Si ciframos con IDEA: | la clave será de 128 bits | la clave será de 80 bits | la clave será de
160 bits | la clave será de 124 bits | R: la clave será de 128 bits.
e) El AES no es tipo Feistel porque cifra texto como: | bloques de 128 bits | bloque completos |
bloques por mitades | texto en binario | R: bloque completos.
f) Si una clave pareja d’ en RSA es igual a 1, habrá: | n mensajes no cifrables | 9 mensajes no
cifrables | 9 claves parejas | n claves parejas | R: n mensajes no cifrables.
g) Al importar una clave PGP completa, el programa nos pedirá: | convertirla a tipo DH/DSS |
modificar el nivel de confianza | confirmar la passphrase | firmarla por el usuario que esté en
el sistema por defecto | R: modificar el nivel de confianza.
h) Si una clave pública PGP termina con los siguientes caracteres 1HgORgdinIGUmAA==
decimos que: | tiene un relleno de 8 bits | tiene un relleno de 2 bits | tiene un relleno de 4 bits
| tiene un relleno de 6 bits | R: tiene un relleno de 4 bits.
i) Si ciframos un documento con PGP en momentos distintos: | el criptograma es el mismo | el
criptograma es totalmente distinto | el criptograma es más largo | el criptograma cambia la
mayoría de sus bits | R: el criptograma cambia la mayoría de sus bits.
j) Si usamos esteganografía podemos: | ocultar una firma digital | ocultar un mensaje y cifrarlo |
cifrar una clave pública | ocultar un texto | R: ocultar un mensaje y cifrarlo.
c) La firma de ElGamal es más eficiente en bits que la firma DSS, Digital Signature Standard.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 1
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2004
FALSO. La firma de ElGamal entrega dos valores dentro del cuerpo de firma, es decir del orden que
tenga el primo p, por lo general sobre 1.024 bits. En cambio la firma DSS, basada en el algoritmo de
ElGamal, usa dos primos –p y q- de forma que q es bastante menor que p y todas las operaciones se
hacen dentro de ese cuerpo más pequeño. Luego DSS entrega dos valores pero de tamaño menor sin
que ello signifique que la seguridad de dicha firma sea menor a la de ElGamal.
d) Al convertir un documento en Base 64, éste mantiene su tamaño en bits al transmitirlo.
FALSO. Puesto que se convierten (en general) 3 bytes (24 bits) en 4 bloques del código Base64 de 6
bits cada uno, todos caracteres imprimibles, y luego esos cuatro caracteres Base64 se vuelven a
convertir en ANSI de 8 bits, esta conversión aumenta el tamaño del fichero en un 33%.
SOLUCIÓN:
Apartado a)
A06F86269C52 = 1010 0000 0110 1111 1000 0110 0010 0110 1001 1100 0101 0010
Entrada Cajas Si: 101000 000110 111110 000110 001001 101001 110001 010010
En hoja anexa al examen se han entregado las tablas S del DES.
Entradas Fila/Columna Caja Si: S1 S2 S3 S4 S5 S6 S7 S8
2/4 0/3 2/15 0/3 1/4 3/4 3/8 0/9
Salida decimal de Cajas Si: 13 14 7 3 4 9 9 9
Salida binario de Cajas Si: 1101 1110 0111 0011 0100 1001 1001 1001
Salida hexadecimal de Cajas Si: DE73 4999
Apartado b)
Cada salida (valores de 0 a 15) de una caja Si tiene cuatro posible entradas. Por ejemplo, para la
caja S1 la salida 15 se obtiene para estas cuatro entradas de Filas/Columnas: 0/5, 1/1, 2/8 y 3/0.
Por lo tanto, para 8 cajas Si concatenadas, deberemos realizar 48 = 65.536 intentos en el pero de
los casos por fuerza bruta para volver de la salida DE734999 a la entrada A06F86269C52. Para
una vuelta completa del DES serían (48)16 = 1,16 x 1077 intentos, un valor ya desmesurado.
Ejercicio Nº 2 2,5 puntos (0,5 c/u). Tiempo recomendado: 45 minutos
Adela (A) y Benito (B) desean intercambiar una clave KS usando el método de Diffie y Hellman.
Eligen el primo p = 43 y comienzan a buscar un generador en el cuerpo p.
a) Encuentra el primer generador (el número más pequeño que lo sea) dentro del cuerpo p.
b) Con ese , Adela (A) elige a = 7 y Benito (B) elige b = 8. Calcula qué clave se intercambian.
c) Cristina (C) que conoce y p, intercepta la comunicación anterior y elige c = 10. Demuestra
con un ejemplo numérico cómo engaña a Adela y a Benito al interceptar dicho intercambio.
d) ¿Qué sucede si Adela (A) y Benito (B) no eligen un generador en el cuerpo p?
e) ¿Es el primo elegido por Adela (A) y Benito (B) un primo seguro? ¿Importa eso?
SOLUCIÓN:
Apartado a)
Buscamos un generador desde 1 < g < 42. Para ello utilizamos la ecuación de los apuntes de
clase en donde dice que un número g es un generador si g(p-1)/qi mod p 1.
Tenemos p = 43; p-1 = 42 = 2x3x7; luego:
q1 = 2 (p-1)/ q1 = 42/2 = 21; q2 = 3 (p-1)/ q2 = 42/3 = 14; q3 = 7 (p-1)/ q3 = 42/7 = 7
Sea g = 2: 221 mod 43 = 42; 214 mod 43 = 1; 27 mod 43 = 42 No es generador
Sea g = 3: 321 mod 43 = 42; 314 mod 43 = 36; 37 mod 43 = 37 Sí es generador
Luego elegimos = 3.
Apartado b)
Adela envía a Benito: a mod p = 37 mod 43 = 37
Benito envía a Adela: b mod p = 38 mod 43 = 25
Benito calcula: 37b mod p = 378 mod 43 = 36
a 7
Adela calcula: 25 mod p = 25 mod 43 = 36. Esta (36) es la clave que se intercambian A y B.
Apartado c)
a 7
Adela envía a Benito: mod p = 3 mod 43 = 37
c 10
Cristina intercepta el 37, elige c = 10 y envía a Benito mod p = 3 mod 43 = 10
b 8
Benito envía a Adela: mod p = 3 mod 43 = 25
Cristina intercepta el 25, elige c = 10 y envía a Adela c mod p = 310 mod 43 = 10
Benito calcula su clave de comunicación con Adela: 10b mod p = 108 mod 43 = 17
Adela calcula su clave de comunicación con Benito: 10a mod p = 107 mod 43 = 6
b c 10
Cristina calcula su clave con Benito: ( ) mod p = 25 mod 43 = 17 (la misma que Benito)
a c 10
Cristina calcula su clave con Adela: ( ) mod p = 37 mod 43 = 6 (la misma que Adela)
Y con ello podría hacer un ataque del tipo “men in the middle”.
Apartado d)
Si Adela y Benito no eligen un generador en el primo p, pueden seguir utilizando el protocolo, sólo
que en este caso será mucho más fácil un ataque por fuerza bruta pues el problema del logaritmo
discreto pierde fuerza al no generarse todos los restos del primo p. En principio no tiene mayor
importancia elegir un primo de los llamados seguros o fuertes en este escenario.
Apartado e)
El primo 43 no es un primo seguro porque no proviene de 2p+1 (p sería 21, no es primo). Esto no
tiene ninguna importancia en la seguridad del intercambio de clave, salvo que hay más raíces en
los primos seguros (sobre el 50% de los números) y entonces es más fácil encontrarlos.
En el siguiente ejercicio es obligatorio usar el Teorema Extendido de Euclides para los cálculos de
inversos y el algoritmo de exponenciación rápida para los cálculos de potencia.
Ejercicio Nº 3 2,5 puntos (0,5 c/u). Tiempo recomendado: 45 minutos
Adela (A) ha enviado a Benito (B) su clave pública PGP si bien no tiene ningún dato de él. Si esta
clave es de tipo RSA con los valores que se indican (p = 131, q = 197, e = 31), se pide:
a) Encontrar la clave privada d de Adela (A).
b) Cifrar el mensaje numérico M = 13.620 que Benito (B) envía confidencialmente a Adela (A).
c) ¿Puede en este escenario enviar Adela (A) un mensaje confidencial a Benito (B)? ¿Por qué?
d) ¿Puede en este escenario enviar Adela (A) un mensaje firmado a Benito (B)? ¿Por qué?
e) ¿Cuántas operaciones de multiplicación y su reducción a módulo n debe hacer Adela (A) con
el algoritmo de exponenciación rápida para recuperar el mensaje original? ¿Cuántas debería
hacer si esa exponenciación si tratase como si fuesen multiplicaciones sucesivas?
Datos de interés para el problema: 13.15110 = 110011010111112
824.464 mod n = 24.447 13.102.440 mod n = 18.291 38.763.076 mod n = 962
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 3
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2004
Es común que quienes no han estudiado temas de criptografía confundan los términos en inglés
“meet in the middle” con “man in the middle”. Como esto es un error, define y explica qué hace
cada uno de ellos. Comenta además en qué entorno se usa cada uno de dichos términos.
Se refiere a un ataque de interceptación activa por parte de un tercero de la información que se están
enviando un emisor y un receptor, como puede ser una fase del protocolo de intercambio de clave. El
“hombre en el medio”, lee la información cifrada que envía un extremo al otro, la modifica para su
beneficio y tras ello la reenvía al verdadero destinatario. Realiza esta operación en ambos sentidos y
de prosperar el ataque, domina la situación y es capaz de leer en claro toda la información que pasa
por la línea que tiene interceptada, sin que los usuarios se percaten de ello. El entorno típico de este
ataque, que tiene diversas soluciones, es un intercambio de clave asimétrica tipo Diffie y Hellman.
Al realizar un ataque por búsqueda exhaustiva (en un espacio de clave reducido) de una clave ASCII
en un sistema de cifra DES ECB con el programa safeDES suceden ciertas cosas. Se pide contestar:
SOLUCIÓN:
Apartado a)
Si la clave es K, como M tiene siete bytes y sea el relleno byteR, entonces:
H(M) = byte1byte2 XOR K XOR byte3byte4 XOR byte5byte6 XOR byte7byteR
En este caso la operación XOR se puede ejecutar simultáneamente por lo que habrá un 1 si en la
fila correspondiente hay un número impar de 1s y 0 en caso contrario.
K 0100 0001 0011 0111 (A7)
Mi 0100 1101 0110 1001
_c 0010 0000 0110 0011
as 0110 0001 0111 0011
abR 0110 0001 1000 0000
XOR 0010 1100 1100 1110
H(M)16 = 2CCE
Apartado b)
El hash es de 16 bits, luego la media de intentos para la comprobar la resistencia débil a
colisiones será 2n = 216 = 65.536 intentos.
En cambio, para comprobar la resistencia fuerte a colisiones será necesario realizar en este caso
tan sólo 2n/2 = 216/2 = 28 = 256 intentos, basado en la paradoja del cumpleaños.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 2
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2004
SOLUCIÓN:
Apartado a)
Buscamos el generador más pequeño desde g = 4. Para ello utilizamos la ecuación de los
apuntes de clase en donde dice que un número g es un generador si g(p-1)/qi mod p 1.
Tenemos p = 23; p-1 = 22 = 2x11; luego:
q1 = 2 (p-1)/ q1 = 22/2 = 11; q2 = 11 (p-1)/ q2 = 22/11 = 2
11 2
Sea g = 4: 4 mod 23 = 1; 4 mod 23 = 16 El 4 no es un generador
11 2
Sea g = 5: 5 mod 23 = 22; 5 mod 23 = 2 El 5 sí es un generador ( = 5)
Apartado b)
Primer paso: (A) envía a (B): a mod p = 52 mod 23 = 2
(B) envía a (C): b mod p = 54 mod 23 = 4
(C) envía a (A): c mod p = 56 mod 23 = 8
a b 4
Segundo paso: (B) envía a (C): ( ) mod p = (2) mod 23 = 16
b c 6
(C) envía a (A): ( ) mod p = (4) mod 23 = 2
(A) envía a (B): ( c)a mod p = (8)2 mod 23 = 18
ab c 6
Tercer paso: (C) envía a (A): ( ) mod p = (16) mod 23 = 4
bc a 2
(A) envía a (B): ( ) mod p = (2) mod 23 = 4.
(B) envía a (C): ( ca)b mod p = (18)4 mod 23 = 4. La clave es 4.
Apartado c)
No se puede trabajar en el cuerpo 49 porque no es un primo y la condición necesaria de este
protocolo es que el cuerpo sea un primo. No obstante siempre que elijamos un primo mayor, el
algoritmo será computacionalmente más seguro por el problema del logaritmo discreto.
Apartado d)
El intruso puede interceptar todas las comunicaciones entre (A), (B) y (C) pero como la clave que
se intercambian los usuarios no se encuentra exactamente en “el medio” de una transferencia de
datos como sucedía en el intercambio de clave entre dos usuarios, el ataque por el método “man
in the middle” aquí no es posible en los mismos términos que sucedía con (A) y (B).
No obstante, sí podría darse un ataque -entre otros escenarios posibles- en este sentido que se
indica a continuación:
Paso 1: (A) envía a (B): a mod p
(B) envía a (C): b mod p
(C) envía a (A): c mod p el intruso I sólo lee y guarda estos valores (pasivo)
c a i
Paso 2: (A) envía a (B): ( ) mod p el intruso lo intercepta y envía a (B) mod p
(B) envía a (C): ( a)b mod p el intruso lo intercepta y envía a (C) i mod p
(C) envía a (A): ( b)c mod p el intruso lo intercepta y envía a (C) i mod p
Paso 3: (A) envía a (B): ( i)a mod p el intruso tiene la clave de A calculando ( a) i mod p
(B) envía a (C): ( i)b mod p el intruso tiene la clave de B calculando ( b) i mod p
(C) envía a (A): ( i)c mod p el intruso tiene la clave de C calculando ( c) i mod p
Apartado e)
a ab c
Paso 1: (A) envía a (B): mod p Paso 3: (C) envía a (D): ( ) mod p
b bc d
(B) envía a (C): mod p (D) envía a (A): ( ) mod p
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 3
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2004
SOLUCIÓN:
Apartado a)
NA = 91 pA = 7; qA = 13; eA = 5
(nA) = (pA-1)(qA-1) = (7-1)(13-1) = 6x12 = 72
dA = inv [e A, (nA)] = inv (5, 72).
Aplicando el Algoritmo Extendido de Euclides:
i yi gi ui vi
0 -- 72 1 0
1 -- 5 0 1
2 14 2 1 -14
3 2 1 -2 29
4 2 0 --- ---
La clave privada será dA = 29.
Apartado b)
NB = 85 pB = 5; qB = 17; eB = 7
(nB) = (pB-1)(qB-1) = (5-1)(17-1) = 4x16 = 64
dB = inv [e B, (nB)] = inv (7, 64).
Aplicando el Algoritmo Extendido de Euclides:
i yi gi ui vi
0 -- 64 1 0
1 -- 7 0 1
2 9 1 1 -9
3 7 0 --- ---
La clave privada será dB = -9 + 64 = 55.
Apartado c)
M = 24 C = MeB mod nB = 247 mod 85.
Como 710 = 1112 = b2b1b0 entonces:
j 0 1 2 mod 85
j
242 24 66 21
Luego: C = 24x66x21 mod 85 = 29
O bien usando el algoritmo exponenciación rápida:
i = 2 b2 = 1 x = 1x24 mod 85 = 24
i = 1 b1 = 1 x = 242 x 24 mod 85 = 54
i = 0 b0 = 1 x = 542 x 24 mod 85 = 29
C = 29.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 4
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2004
Apartado d)
h(M) = 10 C = h(M)dB mod nB = 1055 mod 85.
Como 5510 = 1101112 = b5b4b3b2b1b0 entonces:
j 0 1 2 3 4 5 mod 85
j
102 10 15 55 50 35 35
Luego: C = 10x15x55x35x35 mod 85 = 5.
O bien usando el algoritmo exponenciación rápida:
i = 5 b5 = 1 x = 1x10 mod 85 = 10
i = 4 b4 = 1 x = 102 x 10 mod 85 = 65
i = 3 b3 = 0 x = 652 mod 85 = 60
i = 2 b2 = 1 x = 602x10 mod 85 = 45
2
i = 1 b1 = 1 x = 45 x 10 mod 85 = 20
i = 0 b0 = 1 x = 202 x 10 mod 85 = 5
C = 5.
Apartado e)
Adela: A = mcm [(pA-1), (qA-1)] = mcm [(7-1), (13-1)] = mcm (6, 12) = 12.
d A = inv (eA, A) = inv (5, 12)
Aplicando el Algoritmo Extendido de Euclides:
i yi gi ui vi
0 -- 12 1 0
1 -- 5 0 1
2 2 2 1 -2
3 2 1 -2 5
4 2 0 --- ---
La clave d A = 5
Luego: A = (n - d A)/ A = (91 - 5)/12 = 86/12 = 7,166 = 7.
Efectivamente, las claves parejas de Adela serán:
dpA = d A + i A = 5 + i 12 (con i = 0, 1 ... hasta que dpA sea superior a nA)
dpA = 5, 17, 29, 41, 53, 65, 77 y 89.
El 29 era la clave privada, luego el número de claves parejas es 7.
Nota: estos datos no se piden en el examen y no inciden en la puntuación del ejercicio.
Benito: B= mcm [(pB-1), (qB-1)] = mcm [(5-1), (17-1)] = mcm (4, 16) = 16
d B = inv (eB, B) = inv (7, 16)
Aplicando el Algoritmo Extendido de Euclides:
i yi gi ui vi
0 -- 16 1 0
1 -- 7 0 1
2 2 2 1 -2
3 3 1 -3 7
4 2 0 --- ---
La clave d B = 7
Luego: B = (n - d B)/ B = (85 - 7)/16 = 78/16 = 4,875 = 4.
Efectivamente, las claves parejas de Benito serán:
dpB = d B + i B = 7 + i 16 (con i = 0, 1 ... hasta que dpB sea superior a nB)
dpB = 7, 23, 39, 55, 71.
El 55 era la clave privada, luego el número de claves parejas es 4.
Nota: estos datos no se piden en el examen y no inciden en la puntuación del ejercicio.
a) La entropía de una clave de 128 bits será igual a: | 64 | 8 | 128 | 1024 | | R: 128
b) La cifra tipo Vigenère puede atacarse con cierta facilidad usando técnicas de: | fuerza bruta |
Kasiski | índice de coincidencia | criptoanálisis diferencial | | R: Kasiski
c) La seguridad verdadera del doble DES sería equivalente a un cifrado con: | clave de 64 bits |
clave de 56 bits | clave de 112 bits | clave de 57 bits | | R: 57 bits
d) El AES es un algoritmo de cifra: | asimétrica | simétrica tipo Feistel | simétrica no tipo Feistel |
simétrica con clave de 64 bits | | R: simétrica no tipo Feistel
e) El DES Challenge III rompió la clave tras un ataque: | distribuido en red | por frecuencias |
criptoanálisis diferencial | texto en claro conocido | | R: distribuido en red
f) Una clave real RSA de 1024 bits en un certificado digital X.509 tiene una clave pública igual a: |
17 bits | 128 bits | 1024 bits | 2048 bits | | R: 17 bits
g) La firma DSS usa dos primos: | y calcula su producto | de 1024 y 160 bits | de 1024 bits cada
uno | más de 1000 bits y tamaños similares | | R: de 1024 y 160 bits
h) La relación bloque de texto / tamaño del hash en SHA-1 será: | 512/128 bits | 512/148 bits |
512/160 bits | 1024/160 bits | | R: 512/160
i) Si ciframos un documento con PGP modo SDA: | la firma se incluye por defecto | se cifra con
armadura | el criptograma será más largo pero más seguro | el criptograma se guarda en un
archivo ejecutable | | R: el criptograma se guarda en un archivo ejecutable
j) Exportamos nuestro par de claves PGP a un archivo y luego borramos la clave del anillo. Para
importar nuestra clave: | nos pide la contraseña | no nos pide nada | debemos antes firmarla |
debemos crear un nuevo par de claves | | R: nos pide la contraseña
SOLUCIÓN:
Apartado a)
SCS = AF32 7B13 = 1010 1111 0011 0010 0111 1011 0001 0011
Salida caja S1 = A = 10102 = 10 Fila 0; Columna 9 Entrada caja S1 = 0 1001 0
Salida caja S2 = F = 11112 = 15 Fila 0; Columna 0 Entrada caja S2 = 0 0000 0
Salida caja S3 = 3 = 00112 = 3 Fila 0; Columna 5 Entrada caja S3 = 0 0101 0
Salida caja S4 = 2 = 00102 = 2 Fila 0; Columna 9 Entrada caja S4 = 0 1001 0
Salida caja S5 = 7 = 01112 = 7 Fila 0; Columna 4 Entrada caja S5 = 0 0100 0
Salida caja S6 = B = 10112 = 11 Fila 0; Columna 15 Entrada caja S6 = 0 1111 0
Salida caja S7 = 1 = 00012 = 1 Fila 0; Columna 15 Entrada caja S7 = 0 1111 0
Salida caja S8 = 3 = 00112 = 3 Fila 0; Columna 10 Entrada caja S8 = 0 1010 0
Apartado b)
Como hay cuatro entradas posibles para cada salida de las cajas S -una para cada fila- existirán 48
posibles combinaciones, es decir 65.536 en cada vuelta.
FUERA DEL EXAMEN (no se considera ni se evalúa):
Las cuatro combinaciones de cada caja Si que entregarían el valor indicado de AF32 7B13 serán las
siguientes (F = fila; C = columna):
Caja S1 = A = 10102 = 10 (F0, C9); (F1, C8); (F2, C13); (F3, C12)
Caja S2 = F = 11112 = 15 (F0, C0); (F1, C4); (F2, C15); (F3, C5)
Caja S3 = 3 = 00112 = 3 (F0, C5); (F1, C4); (F2, C6); (F3, C11)
Caja S4 = 2 = 00102 = 2 (F0, C9); (F1, C10); (F2, C13); (F3, C14)
Caja S5 = 7 = 01112 = 7 (F0, C4); (F1, C5); (F2, C6); (F3, C3)
Caja S6 = B = 10112 = 11 (F0, C15); (F1, C13); (F2, C14); (F3, C8)
Caja S7 = 1 = 00012 = 1 (F0, C15); (F1, C6); (F2, C0); (F3, C4)
Caja S8 = 3 = 00112 = 3 (F0, C10); (F1, C5); (F2, C13); (F3, C12)
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 2
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2005
Para generar una clave en un cifrado en flujo, vamos a usar dos LFSR primitivos de 2 y 3 celdas,
caracterizados por los polinomios p1 = x2 + x + 1 (con semilla 11) y p2 = x3 + x + 1 (con semilla 101).
La salida de estos LFRS se conecta a una puerta XOR que entrega la secuencia cifrante S.
a) Encuentra las secuencias de S1 y S2.
b) ¿Cuál es el período de S1 y S2? ¿Cuál será el periodo de S?
c) Encuentra la secuencia de clave S.
d) Con esa secuencia S cifra el mensaje M = OK.
e) ¿Cumple la cifra anterior la condición estipulada por Vernam para estos cifradores? ¿Por qué?
SOLUCIÓN:
Apartado a)
2
Generador S1 con polinomio p1 = x + x + 1 (semilla 11):
Semilla 11 1
01 1
10 0
11 semilla ... luego S1 = 110.
3
Generador S2 con polinomio p1 = x + x + 1 (semilla 101):
Semilla 101 1
010 0
001 1
100 0
110 0
111 1
011 1
101 semilla ... luego S1 = 1010011.
Apartado b)
El período de S1 es igual a 3, el período de S2 es igual a 7 y el período de S será el mcm (S1, S2) es
decir mcm (3, 7) = 21.
Apartado c)
Como el período de S1 = 110 es el más pequeño (3) haremos la suma xor de tres en tres de S1 con
la secuencia S2 = 1010011 hasta que se repitan los operandos y por tanto la secuencia de salida:
110 101 = 011
110 001 = 111
110 110 = 000
110 100 = 010
110 111 = 001
110 010 = 100
110 011 = 101
110 101 = se repiten los operandos.
Luego S = 011 111 000 010 001 100 101 (período 21)
Apartado d)
M = OK = 0100 1111 0100 1011
C=M S
M 0100111101001011
S 0111110000100011
C= 0011001101101000
Apartado e)
Se puede cifrar el mensaje M de 16 bits pues la clave S de 21 bits es mayor que el mensaje, una
condición que debería cumplirse para que este cifrado verificase el diseño de Vernam. Si ciframos
un texto mayor, ya no debería usarse esta clave en tanto sería de longitud menor que el mensaje y
por tanto estaríamos ante un cifrado con clave periódica, algo no recomendable en estos sistemas.
Bartolo (B) ha creado un programa similar a PGP que permite generar claves de cualquier tipo y
tamaño así como operaciones típicas de PGP y que comparte con Amparo (A).
Amparo tiene una clave RSA con las siguientes características: p = 17; q = 5 (clave pública e = 3).
Bartolo recibe la clave de Amparo y va a firmarla con el algoritmo DSS y los siguientes valores de
firma: p = 31; q = 5; = 16; k = 3 (clave privada b = 2).
a) Encuentra la clave pública de la firma de Bartolo y la clave privada de Amparo, usando en este
último caso el algoritmo extendido de Euclides.
b) Muestra ecuaciones y valores de la firma de Bartolo sobre la clave pública (e = 3) de Amparo.
c) Muestra ecuaciones y valores de la comprobación de esta firma por parte de Amparo.
d) Comprueba que Bartolo ha elegido g = 3 para encontrar la raíz de orden q en el primo p para la
firma DSS.
e) ¿Es el valor anterior una raíz primitiva del primo p = 31?
SOLUCIÓN:
Apartado a)
La clave pública de la firma de Bartolo será y = b mod p = 162 mod 31 = 8.
Como n = p x q = 17 x 5 = 85; (n) = (p-1)(q-1) = 16 x 4 = 64
d A = inv [e A, (nA)] = inv (3, 64)
i yi gi ui vi
0 -- 64 1 0
1 -- 3 0 1
2 21 1 1 -21
3 3 0
La clave privada de A será d A = = -21 + 64 = 43.
Apartado b)
Valor a firmar M = 3.
k 3
r = ( mod p) mod q = (16 mod 31) mod 5 = 4 mod 5 = 4
inv (k, q) = inv (3, 5) = 2
s = [(M + br) inv (k, q)] mod q = [(3 + 2x4) 2] mod 5 = 22 mod 5 = 2
(r, s) = (4, 2)
Apartado c)
w = inv (s, q) = inv (2, 5) = 3
u = M w mod q = 3 x 3 mod 5 = 9 mod 5 = 4
v = r w mod q = 4 x 3 mod 5 = 12 mod 5 = 2
u v
Amparo comprueba si ( y mod p) mod q es igual a r
El valor y es la clave pública de Bartolo ya calculada, 8
( u yv mod p) mod q = (164 82 mod 31) mod 5 = (2 2) mod 5 = 4 = r (se comprueba la firma)
Apartado d)
Usa g = 3 porque se cumple que g(p-1)/q mod p 1
3(31-1)/5 mod 31 = 36 mod 31 = 16 y es distinto de la unidad por lo que = 16, será el generador de
orden q (5) en el primo p (31).
Apartado e)
No obstante, el valor 16 no es una raíz primitiva del primo 31 puesto que hacemos el siguiente
cálculo usando las ecuaciones de comprobación de raíces primitivas de los apuntes:
Sabemos que p - 1 = 31 - 1 = 30 = 2 x 3 x 5
1630/2 mod 31 = 1615 mod 31 = 1; 1630/3 mod 31 = 1610 mod 31 = 1; 1630/5 mod 31 = 166 mod 31 = 16.
Como hay al menos un resultado igual a la unidad, 16 no es una raíz primitiva de p = 31.
Observación: el formato está ajustado para impresión óptima en DIN A4 con un total de 5 páginas
a) La segunda condición de Golomb (distribución de rachas) significa que: | la secuencia S pasa por
todos sus restos posibles | S es una secuencia binaria | la secuencia S no es predecible | la
secuencia S tiene período impar | R: la secuencia S pasa por todos sus restos posibles
b) Si usando PGP el criptograma se guarda en un archivo ejecutable: | hemos usado cifra local |
hemos incluido armadura a la cifra | hemos cifrado con la clave privada | hemos cifrado en modo
SDA | R: hemos cifrado en modo SDA
c) Si H(K) = 256, el número de bits de esa clave binaria K será: | 128 | 256 | 8 | 64 | R: 256
d) Triple DES tipo EDE significa: | compatibilidad con DES | cifrar tres veces con igual clave | usar
claves de 128 bits | cifrar-descifrar-cifrar con 3 claves distintas | R: compatibilidad con DES
e) A5 es un algoritmo: | asimétrico | de mochilas | simétrico Feistel | de flujo | R: de flujo
f) La relación en bits (clave pública / clave privada) de una clave RSA típica en un certificado digital
X.509 es: | 17/1024 | 16/1024 | 1024/1024 | 1024/2048 | R: 17/1024
g) Para fortalecer una firma tipo ElGamal debemos: | elegir p como primo | elegir p como un primo
relativo | elegir como generador | codificar en base64 | R: elegir como generador
h) Para firmar un documento con PGP: | nos pide siempre la contraseña | nos pide la contraseña si
no está activado ya el SSO | nos pide la contraseña dos veces | nos pide la contraseña si el
documento no va cifrado | R: nos pide la contraseña si no está activado ya el SSO
i) El algoritmo que reemplaza a DES es: | RC5 | RC4 | RIJNDAEL | IDEA | R: RIJNDAEL
j) Para la cifra de tipo Vernam se usan funciones: | de un solo sentido | no lineales | basadas en
cajas S | lógicas de puertas XOR | R: lógicas de puertas XOR
VERDADERO. En el juego de póquer mental con RSA, las claves pública e y privada d de todos los
jugadores deben mantenerse en secreto. Ello les permitirá realizar el reparto de cartas de forma secreta
mediante un protocolo en que las cartas de una mano las elige a ciegas otro jugador mediante una cifra.
SOLUCIÓN:
Apartado a)
S = {27, 36, 72, 20, 58, 80}, módulo M = 160, w = 9
La mochila fácil será S’ = S x w-1 = S x inv (w, M) = S x inv (9, 160)
inv [w, M] = inv (9, 160) = - 71 + 160 = 89
i yi gi ui vi
0 -- 160 1 0
1 -- 9 0 1
2 17 7 1 -17
3 1 2 -1 18
4 3 1 4 -71
S’1 = S1 x w-1 mod 160 = 27x89 mod 160 = 2.403 mod 160 = 3
S’2 = S2 x w-1 mod 160 = 36x89 mod 160 = 3.204 mod 160 = 4
S’3 = S3 x w-1 mod 160 = 72x89 mod 160 = 6.408 mod 160 = 8
S’4 = S4 x w-1 mod 160 = 20x89 mod 160 = 1.780 mod 160 = 20 (valor dado en el examen)
S’5 = S5 x w-1 mod 160 = 58x89 mod 160 = 5.162 mod 160 = 42 (valor dado en el examen)
S’6 = S6 x w-1 mod 160 = 80x89 mod 160 = 7.120 mod 160 = 80 (valor dado en el examen)
S’ = {3, 4, 8, 20, 42, 80}
Que es una mochila simple o supercreciente.
Apartado b)
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 2
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre de 2005
Creamos una función hash que agrupa bloques de 6 bytes, los pasa por las cajas S del DES y a esa
salida le aplica un XOR con el vector inicial ABCD de valor hexadecimal FFFF0000. El mensaje en
ASCII es M = AMIGOS.
Se pide:
a) Encuentra la función hash h(M).
b) Sólo indica –sin calcularlo- qué habría que hacer para obtener h(M) si ahora M = COLEGAS.
c) ¿Cuál sería el vector ABCD de la segunda vuelta si el mensaje M tuviese más de 6 bytes?
d) Si el vector ABCD fuese otro, por ejemplo D5F95AB3, ¿sería más seguro el hash?
e) Aceptando que el valor de bloque a tratar es bajo, ¿sería adecuada y segura esta función?
SOLUCIÓN:
Apartado a)
AMIGOS = 01000001 01001101 01001001 01000111 01001111 01010011
Estos 48 bits entrarán en bloques de 6 bits a las 8 cajas S del DES agrupados así:
Entrada cajas S1-S8: 010000 010100 110101 001001 010001 110100 111101 010011
Entrada caja S1 = 0 1000 0 Fila 0; Columna 8 Salida caja S1 = 3 = 0011
Entrada caja S2 = 0 1010 0 Fila 0; Columna 10 Salida caja S2 = 2 = 0010
Entrada caja S3 = 1 1010 1 Fila 3; Columna 10 Salida caja S3 = 14 = 1110
Entrada caja S4 = 0 0100 1 Fila 1; Columna 4 Salida caja S4 = 6 = 0110
Entrada caja S5 = 0 1000 1 Fila 1; Columna 8 Salida caja S5 = 5 = 0101
Entrada caja S6 = 1 1010 0 Fila 2; Columna 10 Salida caja S6 = 4 = 0100
Entrada caja S7 = 1 1110 1 Fila 3; Columna 14 Salida caja S7 = 3 = 0011
Entrada caja S8 = 0 1001 1 Fila 1; Columna 9 Salida caja S8 = 5 = 0101
Haciendo el XOR con el vector ABCD se obtiene:
Cajas S 0011 0010 1110 0110 0101 0100 0011 0101
ABCD 1111 1111 1111 1111 0000 0000 0000 0000
Resumen 1100 1101 0001 1001 0101 0100 0011 0101
h(M) CD195435
Apartado b)
Como el mensaje COLEGAS tiene 7 bytes, habrá que usar dos bloques para calcular el hash, un
primer bloque con los caracteres COLEGA y un segundo bloque con los caracteres S###### en donde
# significa un relleno de 8 ceros.
Apartado c)
El vector ABCD de la segunda vuelta será precisamente la salida o hash encontrado en el apartado
primero,. es decir, ABCD = 11001101 00011001 01010100 00110101
Apartado d)
No sería más seguro porque la seguridad de las funciones hash, y de esta función hash en particular,
deberá residir en la no linealidad de las operaciones que se realizan (en este caso en las cajas S) y no
en la aleatoriedad del valor del vector inicial.
Apartado e)
En principio sí; porque está basada en una función no lineal (cajas S) al igual que las operaciones que
usan por ejemplo MD5 y SHA-1. No obstante, tiene en su contra que las operaciones son pocas y muy
sencillas y no hay tanta mezcla de bits como en estas funciones por lo que cabría esperar que su
efecto de avalancha (cambio de un bit en la entrada significa un cambio de más de la mitad de los bits
de salida) no fuera tan significativo como en estas últimas. Resulta entonces un algoritmo muy
elemental y además propenso a demasiadas colisiones por su pequeño resumen.
SOLUCIÓN:
Apartado a)
Como nA = 187 = p x q, entonces es fácil ver que p = 11 y q = 17.
Luego (nA) = (p-1)(q-1) = 10 x 16 = 160. La clave privada de Amparo será:
dA = inv [eA, (nA)] = inv (3, 160) = -53 + 160 = 107
i yi gi ui vi
0 -- 160 1 0
1 -- 3 0 1
2 53 1 1 -53
3 3 0
La clave privada de A será dA = 107.
Apartado b)
Como nB = 91 = p x q, entonces es fácil ver que p = 7 y q = 13.
Luego (nB) = (p-1)(q-1) = 6 x 12 = 72. La clave privada de Bartolo será:
DB = inv [eB, (nB)] = inv (11, 72) = -13 + 72 = 59
i yi gi ui vi
0 -- 72 1 0
1 -- 11 0 1
2 6 6 1 -6
3 1 5 -1 7
4 1 1 2 -13
La clave privada de B será dB = 59.
Apartado c)
Cifra: C = 4111 mod 91. El exponente 11 en binario es 1011 = b3b2b1b0
x=1
i = 3 b3 = 1 x = x2 41 mod 91 = 12 41 mod 91 = 41 x = 41
i = 2 b2 = 0 x = x2 mod 91 = 412 mod 91 = 43 x = 43
i = 1 b1 = 1 x = x2 mod 91 = 432 41 mod 91 = 6 x=6
2 2
i = 0 b0 = 1 x = x 41 mod 91 = 6 41 mod 91 = 20 x = 20
Luego 4111 mod 91 = 20
Apartado d)
59
La firma será 77 mod 91. El exponente 59 en binario es 111011 = b5b4b3b2b1b0
x=1
i = 5 b5 = 1 x = x2 77 mod 91 = 12 77 mod 91 = 77 x = 77
i = 4 b4 = 1 x = x2 77 mod 91 = 772 77 mod 91 = 77 x = 77
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 4
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre de 2005
===========================
Fuera de la evaluación del examen:
De hecho las claves privadas parejas y los valores no cifrables serán:
Amparo:
2 claves privadas parejas: {27, 187}
9 valores no cifrables: {0, 1, 33, 34, 67, 120, 153, 154, 186}
Bartolo:
6 claves privadas parejas: {11, 23, 35, 47, 71, 83}
9 valores no cifrables: {0, 1, 13, 14, 27, 64, 77, 78, 90}
Puede comprobar estos valores y los del problema de la mochila usando el software de prácticas
de la asignatura que encontrará en la página web de la misma: mochilas, genRSA, ExpoCrip.
a) Un tipo de ataque en red puede ser | openssl | winmax | phising | PKCS | | phising |
b) Si la ratio de un lenguaje con 27 caracteres es 4,75 y la ratio verdadera es 1,5 entonces se
podría codificar todos los mensajes usando códigos de : | 8 bits | 4 bits | 2 bits | 5 bits | | 5 bits |
c) Si las cifras Ek1(M2) = C1 y Ek3(M5) = C1 se dice que el criptograma C1 será: | una solución falsa |
una solución verdadera | una solución extraña | una solución débil | | una solución falsa |
d) A medida que los números son más grandes, la probabilidad de encontrar números primos en
ese intervalo será: | menor | constante | mayor | aleatoria | | menor |
e) Relación % raíces primitivas (primo / primo seguro): | 50/50 | 30/50 | 30/75l | 50/30 | | 30/50 |
f) El código Atbash que aparece en el libro El Código Da Vinci cifra la letra A como z, la letra B
como y, la letra C como x, … la letra Y como b, la letra Z como a. Luego, se trata de un cifrador:
| por permutación | por transposición | del César | por sustitución | | por sustitución |
g) La relación (clave de sesión / clave asimétrica) de un certificado X.509 en bits en una conexión
típica actual SSL es: | 128/512 | 64/1024 | 1024/128 | 128/1024 | | 128/1024 |
h) Un ataque mediante el método de Berlekamp-Massey a la clave de un cifrado en flujo obtenida
con un generador primitivo de n etapas requiere: | n bits | n/2 bits | 2n bits | 2n bits | | 2n bits |
i) El TripleDES EDE Encrypt-Decrypt-Encrypt usa: | dos claves de 64 bits | una clave de 64 bits |
tres claves de 64 bits | una clave de 128 bits | | dos claves de 64 bits |
j) Si un ataque a RSA basado en la paradoja de cumpleaños prospera, el atacante obtendrá: | la
clave privada | el mensaje en claro | una clave privada pareja | la clave privada o una clave
privada pareja | | la clave privada o una clave privada pareja |
Indica Verdadero o Falso en estas afirmaciones, justificando siempre y en cada caso tu respuesta.
a) La clave pública de RSA es el valor 65.537 porque, entre otras cosas, acelera la operación de cifra.
VERDADERO: Ese número (conocido como nº 4 de Fermat) es 216 + 1 = 100000000000000012, por lo
que la operación de cifra o exponenciación a esa clave pública del destinatario (caso de intercambio de
clave) es muy rápida al afectar en la multiplicación sólo los dos dígitos iguales a 1. Además ese número,
siendo bajo, es lo suficientemente alto para como evitar otros tipos de ataques basados en claves públicas
muy pequeñas.
b) Si la clave pública e RSA es pequeña y el módulo n muy grande, la clave privada d será muy grande.
VERDADERO: Por el concepto de inverso entre la clave pública e y la clave privada d en (n), se cumple
que e d mod (n) = 1 y como (n) = (p-1)(q-1) tiene la misma cantidad de bits que el cuerpo de cifra n
(típico 1024) entonces se fuerza a que la clave privada d sea un valor muy alto, en torno a los n bits, para
que se cumpla esa igualdad.
c) Sin conocer la clave privada, es imposible descifrar o atacar el criptograma y obtener el texto en claro.
FALSO: En un sistema como RSA, el ataque por cifrado cíclico, en el que se cifra el criptograma con la
clave pública del destinatario y los subsiguientes criptogramas con la misma clave pública de forma
iterativa hasta que se encuentre nuevamente el criptograma original, en caso de prosperar entrega en el
penúltimo paso el mensaje o número cifrado en claro. También es posible romper la cifra descifrando el
criptograma con una de las claves privadas parejas (al menos hay una) que se obtienen si prospera un
ataque basado en la paradoja del cumpleaños.
d) Si sus dos hash coinciden, entonces los archivos a los que se les ha aplicado ese hash son iguales.
FALSO: Pueden darse colisiones de forma que aunque los archivos sean distintos sus hahs son iguales.
En sentido contrario sí es verdad: dos mensajes iguales generarán hash iguales.
Responde estas cuestiones de las prácticas y justifica cada una de tus respuestas.
a) Primalidad y factorización entera usados en RSA, ¿son problemas tipo NP exactamente iguales?
Ambos son problemas de tipo NP pero el de primalidad tiene un comportamiento que podríamos calificar
como suave en el entorno típico de trabajo, en tanto la curva exponencial del tiempo en función del tamaño
de entrada tiene una pendiente muy baja. Así, saber si un número de 1.000 bits es o no primo significa
solo un par de segundos. En cambio la factorización entera es un problema mucho más difícil, en tanto la
pendiente de esa curva exponencial (y por tanto el tiempo de cómputo) crece extremadamente rápido..
b) ¿Por qué se vuelve difícil encontrar los números no cifrables a medida que aumenta n en RSA?
Encontrar dichos números significa resolver una ecuación en la que hay que encontrar los números N que
confirman que Ne mod p = N para N = 2,3,4... p-1 y Ne mod q = N para N = 2,3,4,… q-1.Si los valores de p
y q son altos (típico 512 bits) esta tarea se vuelve computacionalmente imposible al convertirse en un
ataque por fuerza bruta.
c) Una clave RSA de 2.048 bits tiene 783 claves privadas parejas. ¿Podría tener una de ellas 200 bits?
No. En la ecuación del cálculo de las claves privadas di = d + i , siendo = mcm[(p-1)(q-1)] y d = inv (e, ).
Como será del orden de los n bits, entonces la primera clave privada pareja d0 será d = inv (e, ) y como
ya se ha comentado en una cuestión anterior, al ser e pequeño y un valor alto, esto forzará que d0 sea
también alto y las demás claves privadas aún más.
d) ¿Qué hace el comando openssl genrsa –out MiClave 1024? ¿Cómo se puede conocer p y q?
Genera una clave RSA de 1024 bits a partir de dos primos p y q de 512 bits cada uno y la guarda en un
archivo de nombre MiClave. Si el archivo MiClave se convierte con otro comando el mismo programa
openssl en un archivo texto con valores en hexadecimal donde se puede ver los valores de p y q.
Datos de interés:
55 mod 41 = 9; 65 mod 41 = 27 (Use la propiedad de reducibilidad).
SOLUCIÓN:
Apartado a)
A a = 3; B b = 3; C c = 3, p = 41, = 6.
3
p-1 = 40 = 2 x 5 q1 = 2; q2 = 5.
p/q1
mod p = 640/2 mod 41 = 620 mod 41 = 40 (usando reducibilidad y ayuda entregada en examen)
p/q2
mod p = 640/5 mod 41 = 68 mod 41 = 10 (usando reducibilidad y ayuda entregada en examen)
Ambos son distintos de 1 por lo que 6 es efectivamente un generador del primo 41.
Apartado b)
A B: a mod p = 63 mod 41 = 11 (Claudia captura el 11 enviado por Adela)
B A: b mod p = 64 mod 41 = 25 (Claudia captura el 25 enviado por Benito)
C A: c mod p = 65 mod 41 = 27; C B: c mod p = 65 mod 41 = 27 (entregado en el examen)
Apartado c)
Adela calcula 27a mod p = 273 mod 41 = 3
Benito calcula 27b mod p = 274 mod 41 = 40
c 5
Claudia calcula 11 mod p = 11 mod 41 = 3 (clave que comparte con Adela)
25 mod p = 255 mod 41 = 40 (clave que comparte con Benito)
c
A partir de este momento toda la comunicación secreta tras este intercambio de clave entre Adela y
Benito pasa antes por Claudia como texto en claro.
Apartado d)
Si ahora = 5:
p/q1
mod p = 540/2 mod 41 = 520 mod 41 = 1 (usando reducibilidad y ayuda entregada en examen)
p/q2 40/5 8
mod p = 5 mod 41 = 5 mod 41 = 18 (usando reducibilidad y ayuda entregada en examen)
Como uno de los resultados es igual a la unidad, 5 no será un generador del primo 41. Esto significa
que el protocolo de intercambio de clave sigue funcionando como tal pero es más inseguro
Una función hash MD5 usa DES al final de su cálculo sobre un mensaje M de forma que el hash
calculado h(M) se divide en dos trozos de 64 bits cada uno que luego se cifran con DES en modo
CBC, usando una clave K y un vector inicial IV, es decir C = EK[h(M)]. Las dos cifras se encadenan al
final para formar una salida nuevamente de 128 bts.
El mensaje de 94 caracteres es M = VAMOS A PROBAR AHORA SI ESTE HASH ES ALGO
MEJOR AL HACER EN SU ULTIMO BLOQUE UNA CIFRA CON DES. El hash MD5 sobre M es
h(M) = D04EF9B3751020EBC3BB1B2283934306 (valor real)
Se pide:
a) Dibujar en bloques el sistema completo con todos sus datos.
b) ¿Se hace o no relleno en el último bloque? En caso afirmativo, ¿de qué tamaño?
c) ¿Cuál es el valor en decimal de las dos últimas palabras de 32 bits del último bloque de M? (*)
d) Si los valores de las claves K e IV que usa el algoritmo DES han sido previamente enviados
mediante un protocolo de intercambio de clave entre el cliente y el servidor, ¿serviría este sistema
para comprobar autenticación además de la integridad? ¿Por qué?
Teniendo en cuenta que se cifra el hash al final, ¿sería este hash más o menos seguro ante
colisiones que el hash inicial h(M)? ¿Por qué?
SOLUCIÓN:
Apartado a)
K
IV
64 bits
512 bits M1 512 bits M2
Bloque h(M)1 + DES
El mensaje tiene 94 bytes = 752 bits se tratarán dos bloques M1 y M2; h(M)1 = D04EF9B3751020EB,
h(M)2 = C3BB1B2283934306. ABCD es el vector característico en MD5 y A’B’C’D’ será el resultado
del hash del primer bloque de 512 bits. Las claves IV y K del algoritmo DES serán de 64 bits dando
como resultado dos criptogramas de 64 bits que se concatenan al final para recuperar los 128 bits.
Apartado b)
El texto tiene 94x8 = 752 bits. Se tratan entonces dos bloques de 512 bits. Como siempre hay relleno,
en el segundo bloque (M2) quedan 240 bits de texto en claro a lo que hay que añadir el relleno y los
64 bits finales (2 palabras de 32 bits) que indicarán el tamaño del archivo. Luego el relleno será igual
a 512 - 240 - 64 = 208 bits, un uno seguido de 207 ceros
Apartado c)
Las dos últimas palabras de 32 bits indican la longitud del mensaje que en este caso será de 94
caracteres, es decir 752 bits. El valor decimal será 752.
(*) NOTA: Se ha corregido el enunciado según lo indicado y comentado en el mismo examen. En el
documento original ponía “¿… 32 bits del hash h(M)?” por lo que en la revisión se ha tenido en
cuenta que las dos respuestas eran válidas.
Apartado d)
Sí porque en este caso la función hash daría integridad al mensaje (cualquier modificación al
mensaje se vería reflejada en el hash) y la clave secreta del algoritmo simétrico permitirá la
autenticación del usuario porque sólo cliente y servidor compartirán dicha clave mediante algún
protocolo de intercambio de clave.
Nota: guardando las distancias de este simple ejemplo, algo similar aunque mucho más complejo se
usará en el sistema de autenticación conocido como HMAC en una conexión SSL.
Apartado e)
No es más seguro. Las colisiones podrían darse con igual probabilidad que si usamos el hash de 128
bits que nos entrega MD5. Esto porque la cifra con DES sólo añade una difusión de los bits de cada
mitad del hash. Ante colisiones, se comportaría de igual manera pues su tamaño final no cambia y la
distribución de bits sigue siendo aleatoria. Sólo será más difícil encontrar el mensaje original tras un
ataque porque hay que resolver antes una cifra con DES.
En un ejemplo de laboratorio, un cliente (C) y un servidor (S) que trabajan con RSA y un módulo de 9
bits, intercambiarán una clave de sesión KS siempre de 6 bits para una comunicación en la que se
autentica sólo el servidor, similar a un protocolo SSL. Los datos de cada extremo son:
Cliente C: p = 13; q = 31; e = 13
Servidor S: p = 19; q = 23; e = 5
Nota: todos los cálculos de inversos deben hacerse obligatoriamente con el Algoritmo Extendido de
Euclides.
Se pide:
a) Encontrar la clave privada del cliente C y del servidor S.
b) Encontrar las claves privadas parejas del cliente C.
c) Encontrar las claves privadas parejas del servidor S.
d) Si la clave de sesión KS que la genera el cliente C y se la envia al servidor S es KS = 61, envíe la
clave cifrada y luego descífrela en recepción. Es obligatorio aquí el uso de Algoritmo de
Exponenciación Rápida.
e) Si se cambian los propietarios de las claves RSA del ejercicio, de forma que los valores de p, q y e
del cliente pasan al servidor y los del servidor al cliente, ¿el intercambio de clave para este nuevo
escenario sería mejor o peor que el anterior? Justifique su respuesta.
Datos de interés:
Mínimo Común Múltiplo: mcm (12, 30) = 60 y mcm (18, 22) = 198.
612 mod 437 = 225; 2252 mod 437 = 370.
31710 = 1001111012
432 mod 437 = 101; 1012 mod 437 = 150; 1182 mod 437 = 377; 1532 mod 437 = 248;
2 2 2 2
264 mod 437 = 213; 283 mod 437 = 118; 377 mod 437 = 104; 410 mod 437 = 292.
- Números no cifrables del la clave RSA del cliente C: Total 91
0, 1, 5, 6, 25, 26, 30, 31, 32, 36, 37, 56, 57, 61, 62, 63, 67, 68, 87, 88, 92, 93, 94, 98, 99, 118, 119,
123, 124, 125, 129, 130, 149, 150, 154, 155, 156, 160, 161, 180, 181, 185, 186, 187, 191, 192, 211,
212, 216, 217, 218, 222, 223, 242, 243, 247, 248, 249, 253, 254, 273, 274, 278, 279, 280, 284, 285,
304, 305, 309, 310, 311, 315, 316, 335, 336, 340, 341, 342, 346, 347, 366, 367, 371, 372, 373, 377,
378, 397, 398, 402.
- Números no cifrables de la clave RSA del servidor S: Total 9
0, 1, 114, 115, 208, 229, 322, 323, 436.
SOLUCIÓN:
Apartado a)
Cliente C: p = 13, q = 31, e = 13. Luego n = p x q = 13 x 31 = 403; (n) = (p-1)(q-1) = 12 x 30 = 360.
dC = inv [eC, (nC)] = inv (13, 360) = 277
i yi gi ui vi
0 -- 360 1 0
1 -- 13 0 1
2 27 9 1 -27
3 1 4 -1 28
4 2 1 3 -83
5 4 1 - - La clave privada de C será dC = -83 + 360 = 277.
Servidor: p = 19, q = 23, e = 5. Luego n = p x q = 19 x 23 = 437; (n) = (p-1)(q-1) = 18 x 22 = 396.
dS = inv [eS, (nS)] = inv (5, 396) = 317
i yi gi ui vi
0 -- 396 1 0
1 -- 5 0 1
2 79 1 1 -79
3 5 0 - - La clave privada de S será dS = -79 + 396 = 317.
Apartado b)
Cliente: = mcm[(p-1),(q-1)] = mcm (12, 30) = 60 (Valor dado en el enunciado)
d = inv (e, ) = inv (13, 60)
i yi gi ui vi
0 -- 60 1 0
1 -- 13 0 1
2 3 8 1 -4
3 1 5 -1 5
4 1 3 2 -9
5 1 2 -3 14
6 1 1 5 -23
7 2 0 La clave d = -23 + 60 = 37.
Las claves privadas parejas serán 6. = (n - d )/ = (403 - 37)/ 60 = 6.
Luego di = d + i = 37 + i60 = 37, 97, 157, 217, 277, 337, 397 (Subrayada la clave privada)
Apartado c)
Servidor: = mcm[(p-1),(q-1)] = mcm (18, 22) = 198 (Valor dado en el enunciado)
d = inv (e, ) = inv (5, 198)
i yi gi ui vi
0 -- 198 1 0
1 -- 5 0 1
2 39 3 1 -39
3 1 2 -1 40
4 1 1 2 -79
5 2 0 La clave d = -79 + 198 = 119.
Las claves privadas parejas serán 1. = (n - d )/ = (437 - 119)/ 198 = 1.
La clave privada pareja será 1: di = d + i = 119 + i198 = 119, 317 (Subrayada la clave privada)
Apartado d)
KS = 61.
Cifra de cliente a servidor:
eS 5
C = KS mod nS = 61 mod 396
5 = 1012 (b2b1b0); x = 1
i = 2 b2 = 1 x = 12 x 61 mod 437 x = 61
i = 1 b1 = 0 x = 612 mod 437 x = 225
2
i = 0 b1 = 1 x = 225 x 61 mod 437 x = 283 (valores entregados en el enunciado)
C = 283
Descifrado en el servidor;
KS = CdS mod nS = 283317 mod 437
317 = 1001111012 (b8b7b6b5b4b3b2b1b0); x = 1 (entregado como dato)
i = 8 b8 = 1 x = 12 x 283 mod 437 x = 283
2
i = 7 b7 = 0 x = 283 mod 437 x = 118
2
i = 6 b6 = 0 x = 118 mod 437 x = 377
2
i = 5 b5 = 1 x = 277 x 283 mod 437 x = 153
i = 4 b4 = 1 x = 1532 x 283 mod 437 x = 264
i = 3 b3 = 1 x = 2642 x 283 mod 437 x = 410
2
i = 2 b2 = 1 x = 410 x 283 mod 437 x = 43
2
i = 1 b1 = 0 x = 43 mod 437 x = 101
i = 0 b0 = 1 x = 1012 x 283 mod 437 x = 61 (valores entregados en el enunciado)
Apartado d)
Si se cambian las claves se observa que el sistema es bastante peor puesto que la clave RSA del
cliente era de peor calidad que la del servidor. En este último, es la mejor posible con sólo una clave
privada pareja y 9 números no cifrables como se muestra en el enunciado, en tanto que la del cliente
tiene 6 claves privadas parejas y 91 números no cifrables.
Esto porque la autenticación proviene del cliente y es el cliente quien envía la clave al servidor.
Si fuera al revés (o lo mismo, intercambiando las claves RSA entre los dos) se observa que el valor
KS = 61 es uno de los números no cifrables.
Como las claves de sesión serán siempre de 6 bits, habría 8 valores de 6 bits que irían en claro (32,
36, 37, 56, 57, 61, 62 y 63). Es decir de 32 valores posibles de claves de 6 bits, 8 valores irían en
claro, lo que significa un 25% y es totalmente inaceptable. Para la verdadera clave del servidor,
ningún valor entre 32 y 63 (de 6 bits) está entre sus números no cifrables
Comentario fuera del examen: en la práctica y con los valores típicos en una comunicación SSL (128
bits de clave de sesión y 1.024 bits de clave asimétrica), no se puede dar una situación como ésta en
que un 25% de las posibles claves vayan en claro porque, aunque la clave del servidor no sea la
óptima, es prácticamente imposible que exista un valor de 128 bits (clave de sesión) que sea uno de
los valores no cifrables del servidor.
Además, si la clave fuese tan mala como la de este ejemplo en el apartado d), todas esas claves
privadas parejas estarían muy cerca de los 1.024 bits y no con una distribución como la vista en este
ejercicio, en tanto e es un valor de sólo 17 bits y mcm[(p-1),(q-1)] es un valor muy grande, por lo que
d también será grande y así también la distribución de las claves privadas parejas.
Para cada frase, elige una opción (separadas por signos | |) y escribe la respuesta más acertada:
a) Si la entropía de una clave es alta, la clave será | mala | regular | buena | elemental | Buena
b) La cifra clásica por sustitución polialfabética permite difuminar: | las estadísticas del lenguaje | la
ratio absoluta | la ratio verdadera | la relación señal/ruido del canal | Las estadísticas del lenguaje
c) La cifra en RSA se hace en el cuerpo n y las claves se calculan en: | el mismo cuerpo n | el
cuerpo n del emisor | el cuerpo n del receptor | el cuerpo (n) | El cuerpo (n)
d) Para romper la clave privada del sistema de ElGamal, se deberá resolver: | una ecuación de 2º
grado | el problema del logaritmo discreto | el problema de la factorización entera | el problema de
las raíces en cuerpos finitos | El problema del logaritmo discreto
e) La fortaleza ante ataques de una clave asimétrica tipo RSA de 1.024 bits será equivalente a la de
una clave de cifra simétrica de | 56 bits | 64 bits | 128 bits | 256 bits | 128 bits
f) Un ataque por denegación de servicio es una amenaza que nos vulneraría | la confidencialidad |
la integridad | la disponibilidad | el no repudio | La disponibilidad
g) Un ataque por Encuentro a Medio Camino sería efectivo ante | doble DES | triple DES | IDEA |
Intercambio de clave de Diffie y Hellman | Doble DES
h) Un certificado digital X.509 que nos presenta un sitio Web para una conexión SSL tiene una
validez estándar de | 6 meses | 12 meses | 18 meses | 24 meses | 12 meses
i) Para que un archivo cifrado de forma local con PGP pueda abrirlo cualquiera que tenga la clave,
aunque no tenga instalado PGP, la cifra se habrá hecho como | PGP | PKR | SKR | SDA | SDA
j) Las funciones resumen hash MD5 y SHA-1 cifrarán bloques de “texto en claro”, cada uno de ellos
con un tamaño igual a | 128 bits | 256 bits | 512 bits | 1.024 bits | 512 bits
a) El Triple DES que se usa en la práctica se conoce también como una cifra tipo EDE.
VERDADERO: EDE significa Encrypt-Decrypt-Encrypt, que cifra el texto en claro de forma encadenada con
una clave K1, luego descifra esto con la clave K2 y vuelve a cifrar el resultado con la clave K1. Esta cifra es
equivalente y tiene la misma fortaleza a cifrar encadenadamente con tres claves distintas K1, K2, K3 y sin
embargo es compatible con el DES normal, simplemente haciendo que K1 = K2.
b) Los hash SHA-1 de dos archivos de igual contenido y guardados con formatos distintos son iguales.
FALSO: Si cambia el formato del archivo, por ejemplo un Word guardado como Word 2000 y el mismo
documento guardado luego como RTF, los dos archivos evidentemente tendrán un hash distinto. Toda
función hash, sea SHA-1, MD5 u otra calcula el resumen a partir de los bits del mensaje o documento que
agrupa normalmente en bloques de 512 bits, y no del contenido mensaje.
c) Excepto la primera, las demás claves privadas parejas en RSA están separadas por valor constante.
VERDADERO: La ecuación del cálculo de las claves privadas parejas es di = d + i , con = 0, 1, ... . Por
lo tanto, después de la primera clave d todas las demás estarán separadas por un valor constantes igual a
. Para primos p y q grandes, la primera clave d será bastante alta puesto que d = inv (e, ), el valor de la
clave pública e es pequeño (típico 17 bits) y el valor de = mcm [(p-1),)(q-1)] es decir un valor muy alto.
d) En la firma ElGamal, aunque no se use un generador del cuerpo la firma siempre podrá comprobarse.
FALSO: Es condición sine qua non que en este tipo de firma digital se use un generador o raíz primitiva
del cuerpo de cifra. Si se usa un valor distinto de , se podrá realizar la operación de firma en el extremo
emisor pero nunca la operación de comprobación de dicha firma en el extremo receptor.
a) ¿Por qué es tan fácil generar una clave RSA y en cambio muy difícil romper su clave privada?
Porque en la generación de la clave sólo necesitamos tener números aleatorios grandes (e.g. 512 bits)
que, aunque no es un problema polinomial, sí es muy rápido y en la práctica hay algoritmos que nos los
entregan en tiempo razonable: menos de 1 segundo. En cambio, para romper la clave privada mediante
factorización del cuerpo n = p q, el problema NP es muy difícil y tardaríamos miles de billones de años.
b) ¿Qué intentan vulnerar un ataque por cifrado cíclico y uno por paradoja del cumpleaños en RSA?
Si ambos prosperan, en el ataque por cifrado cíclico romperíamos el secreto del mensaje; es decir, se
vulneraría la confidencialidad del mensaje, y en el ataque basado en la paradoja del cumpleaños, se
encontrará en la mayoría de los casos la clave privada o bien una clave privada pareja, que hace las
mismas funciones que la otra, vulnerando en este caso el secreto de dicha clave privada.
c) ¿Por qué es prácticamente imposible saber los números no cifrables de una clave RSA de 1.024 bits?
Porque los números no cifrables serán en el mejor de los casos 9: 0, 1, n-1 y otros seis valores que están
distribuidos en todo el cuerpo de cifra. Si n = 1.024 bits, p y q primos de 512 bits, entonces para encontrar
estos otros 6 valores o más si la clave los tiene, habrá que hacer cálculos por fuerza bruta dentro de p y
dentro de q, lo que resulta imposible en la práctica al ser esto equivalente a un problema de tipo NP. No
obstante, podemos saber fácilmente la cantidad de números no cifrables.
d) Generamos una clave RSA de 1.024 bits con OpenSSL. ¿Cómo sabemos la calidad de la clave?
Con ese software no lo sabremos. Habrá que usar otros programas o aplicaciones, por ejemplo genRSA,
que nos permita generar esa misma clave y nos entregue información sobre el número de claves privadas
parejas y la cantidad de números no cifrables, conociendo además en ambos casos su distribución.
Adela (A) envía a Benito (B) un mensaje M y su firma digital RSA añadida sobre h(M) = 90.
Los datos de la clave de Adela son pA = 23, qA = 43, eA = 13:
Se pide:
a) Encontrar la clave privada dA de Adela usando el algoritmo extendido de Euclides. [0,5 p]
b) Firmar el hash del mensaje h(M) = 90 usando el algoritmo de exponenciación rápida. [0,5 p]
c) Comprobar la validez de la firma usando el algoritmo de exponenciación rápida. [0,5 p]
d) Comentar y justificar lo que sucede si Benito intenta comprobar la firma de Adela con una
clave pública e’ = 475. [0,5 p]
Datos: 8532 = 1101010101; 4752 = 111011011
SOLUCIÓN:
Apartado a)
pA 23; qA = 43 nA = 989; eA = 13; h(M) = 90, h’(M) = 91.
nA = (pA - 1)( qA – 1) = 22 42 = 924; dA = inv (eA, nA) = inv (13, 924)
i yi gi ui vi
0 -- 924 1 0
1 -- 13 0 1
2 71 1 1 -71
3 13 0 La clave privada dA será: -71 + 924 = 853.
Apartado b)
Firma rA = h(M)dA mod nA = 90853 mod 989
8532 = 1101010101 = b9b8b7b6b5b4b3b2b1b0 (entregado en el examen)
x=1
i = 9 b9 = 1 x = 12 x 90 mod 989 x = 90
i = 8 b8 = 1 x = 902 x 90 mod 989 x = 107
i = 7 b7 = 0 x = 1072 mod 989 x = 570
2
i = 6 b6 = 1 x = 570 x 90 mod 989 x = 226
i = 5 b5 = 0 x = 2262 mod 989 x = 637
i = 4 b4 = 1 x = 6372 x 90 mod 989 x = 385
i = 3 b3 = 0 x = 3852 mod 989 x = 864
i = 2 b2 = 1 x = 8642 x 90 mod 989 x = 881
2
i = 1 b1 = 0 x = 881 mod 989 x = 785
2
i = 0 b0 = 1 x = 785 x 90 mod 989 x = 97
Nota: estos valores pueden calcularse con cualquier calculadora simple, no científica, dividiendo el
producto por el módulo, restando la parte entera y multiplicando la parte decimal por el módulo. El
resultado que se obtiene es siempre por defecto, por ejemplo 96,99123 = 97 para el último valor.
Apartado c)
Comprobación: rAeA mod nA = 9713 mod 989
132 = 1101 = b3b2b1b0
x=1
i = 3 b3 = 1 x = 12 x 97 mod 989 x = 97
2
i = 2 b2 = 1 x = 97 x 97 mod 989 x = 815
i = 1 b1 = 0 x = 8152 mod 989 x = 606
2
i = 0 b0 = 1 x = 606 x 97 mod 989 x = 90 = h(M).
Apartado d)
Si e’ = 475 la comprobación de la firma sería: rAe’A mod nA = 97475 mod 989
4752 = 111011011 = b8b7b6b5b4b3b2b1b0 (entregado en el examen)
x=1
i = 8 b8 = 1 x = 12 x 97 mod 989 x = 97
2
i = 7 b7 = 1 x = 97 x 97 mod 989 x = 815
2
i = 6 b6 = 1 x = 815 x 97 mod 989 x = 431
i = 5 b5 = 0 x = 4312 mod 989 x = 818
2
i = 4 b4 = 1 x = 818 x 97 mod 989 x = 914
i = 3 b3 = 1 x = 9142 x 97 mod 989 x = 686
2
i = 2 b2 = 0 x = 686 mod 989 x = 821
i = 1 b1 = 1 x = 8212 x 97 mod 989 x = 176
i = 0 b0 = 1 x = 1762 x 97 mod 989 x = 90
Se llega al mismo resultado que usando la clave pública de Adela eA. Esto se debe a que el valor 475
es una de las claves públicas parejas de eA = 13.
Una entrada a las cajas S del DES activa las siguientes filas (F) y columnas (C) como se indica:
S1F,C = 0,9; S2F,C = 0,10; S3F,C = 3,12; S4F,C = 1,4; S5F,C = 0,8; S6F,C = 2,10; S7F,C = 3,2; S8F,C = 1,7.
Tabla con cajas S del DES en el anverso del examen.
Se pide:
a) Los 48 bits de entrada a las cajas S (be) y la palabra en ASCII que forma. [1,0 p]
b) Los 32 bits de salida (bs) de esas cajas S. [1,0 p]
c) El número de entradas (be) posibles que podrían dar lugar a esa salida (bs) en una vuelta. [0,5 p]
SOLUCIÓN:
Apartado a)
Como las cajas S se activan seleccionando filas F y columnas C a partir de 6 bits b6b5b4b3b2b1 de forma
que los bits b6b1 indican la fila F y los bits b5b4b3b2 la columna C, entonces:
S1F,C = 0,9 0 1001 0; S2F,C = 0,10 0 1010 0; S3F,C = 3,12 1 1100 1; S4F,C = 1,4 0 0100 1;
S5F,C = 0,8 0 1000 0; S6F,C = 2,10 1 1010 0; S7F,C = 3,2 1 0010 1; S8F,C = 1,7 0 0111 1.
Agrupando los 48 bits en bloques de 8 bits (un byte) se tiene:
Entrada bits: 01001001 01001110 01001001 01000011 01001001 01001111
Entrada ASCII: I N I C I O
Apartado b)
S1F,C = 0,9 Salida 10 Salida2 = 1010 S2F,C = 0,10 Salida 2 Salida2 = 0010
S3F,C = 3,12 Salida 11 Salida2 = 1011 S4F,C = 1,4 Salida 6 Salida2 = 0110
S5F,C = 0,8 Salida 8 Salida2 = 1000 S6F,C = 2,10 Salida 4 Salida2 = 0100
S7F,C = 3,2 Salida 13 Salida2 = 1101 S8F,C = 1,7 Salida 4 Salida2 = 0100
Luego bs = 1010 0010 1011 0110 1000 0100 1101 0100
Apartado c)
En una vuelta cada una de las cajas S tiene 4 posibles entradas para una única salida; por lo tanto,
habrá 48 = 65.536 entradas be que entregan una misma salida bs.
Sospechamos que la cadena ci = 0110001111 de 10 bits es una parte de la secuencia cifrante o clave
Si para una cifra en flujo mediante registro LFSR primitivo de 5 etapas.
Se pide:
a) Plantear el sistema de ecuaciones del ataque de Berlekamp – Massey. [1,0 p]
b) Resolver el sistema de ecuaciones y encontrar el tipo de registro utilizado. NOTA: en este caso
no es necesario utilizar matrices: simple lógica de operaciones XOR en las ecuaciones, en
tanto se sabe además que la última celda siempre estará conectada y tiene el valor 1. [1,0 p]
c) ¿Qué longitud en bits tendrá la secuencia cifrante Si? [0,5 p]
SOLUCIÓN:
Apartado a)
El sistema de ecuaciones de Berlekamp-Massey para este generador de 5 celdas primitivo será:
S6 = C1S1 C2S2 C3S3 C4S4 C5S5
S7 = C1S6 C2S1 C3S2 C4S3 C5S4
S8 = C1S7 C2S6 C3S1 C4S2 C5S3
S9 = C1S8 C2S7 C3S6 C4S1 C5S2
S10 = C1S9 C2S8 C3S7 C4S6 C5S1
En donde la cadena ci = 0110001111 encontrada corresponderá a los primeros 5 bits de semilla y los
siguientes 5 bits serán producto de la realimentación del registro. Luego, tenemos la secuencia:
S5 S4 S3 S2 S1 S6 S7 S8 S9 S10
0 1 1 0 0 0 1 1 1 1
Apartado b)
Reemplazando valores en el sistema de ecuaciones anterior y dado que C5 = 1, se tiene:
0 = C10 C20 C31 C41 1 0 (A)
1 = C10 C20 C30 C41 1 1 (B)
1 = C11 C20 C30 C40 1 1 (C)
1 = C11 C21 C30 C40 1 0 (D)
1 = C11 C21 C31 C40 1 0 (E)
Una forma de solución rápida puede ser:
1 = C10 C20 C30 C41 1 1 (B) C4 = 0
1 = C11 C20 C30 C40 1 1 (C) C1 = 0
Si C4 = 0 y 0 = C10 C20 C31 C41 1 0 (A) C3 = 0
Si C1 = 0 y 1 = C11 C21 C30 C40 1 0 (D) C2 = 1
El polinomio primitivo del registro LFSR será f(x) = x5 + x2 + 1
Apartado c)
5
Como el registro tiene 5 celdas y el polinomio f(x) es primitivo, su período será T = 2 – 1 = 31.
1. Si al volver a cifrar un criptograma con la misma clave se obtiene el mensaje en claro, se habla de
| clave débil | clave simétrica | solución falsa | solución ambigua | Sol.: clave débil / solución falsa
2. Una cifra clásica por sustitución se rompe fácilmente usando | sustitución de caracteres | análisis
de frecuencias | anagramación | el método de Hill | Sol.: análisis de frecuencias
3. Si en cifra simétrica la clave afecta sólo a una mitad del texto en claro en cada vuelta se habla de |
cifrado múltiple | cifrado Feistel | cifrado híbrido | cifrado afín | Sol.: cifrado Feistel
4. El DES y el AES tienen en común que ambos | son cifras asimétricas | trabajan módulo n | son de
tipo Feistel | usan cajas de sustitución | Sol.: usan cajas de sustitución
5. Una ataque por fuerza bruta significará buscar | repeticiones de caracteres | en todo el espacio de
claves | fallos en el algoritmo | las claves débiles | Sol.: en todo el espacio de claves
6. En RSA una clave pública pequeña y módulo muy grande implican una clave privada | pequeña |
de tamaño medio | del orden del módulo | de cualquier tamaño | Sol.: del orden del módulo
7. Con openSSL se crean claves RSA | mitad buenas y mitad malas | casi siempre óptimas | siempre
óptimas | siempre buenas pero nunca óptimas | Sol.: casi siempre óptimas
8. En PGP y S/MIME para enviar un correo confidencial, la clave de cifra simétrica para abrir el
criptograma se envía cifrada con | la clave pública del emisor | la clave privada del emisor | la clave
pública del receptor | la clave privada del receptor | Sol.: la clave pública del receptor
9. La principal vulnerabilidad del hash son ataques basados en | la paradoja del cumpleaños | los bits
de relleno | la fuerza bruta | Berlekamp-Massey | Sol.: la paradoja del cumpleaños
10. Para que la firma ElGamal pueda comprobarse es necesario que el primo p sea | muy grande | un
primo seguro | un número impar | un generador del cuerpo | Sol.: un generador del cuerpo
a) ¿Qué es una solución falsa? ¿Qué ecuación de cifra es una clara muestra de ello, por ejemplo en DES?
Respuesta:
Una solución falsa es toda aquella que no cumple con la condición de que un criptograma C será resultado
solamente de la cifra de un mensaje M con una clave K. Una ecuación típica de una solución falsa es el uso
de una clave débil en DES de forma que se recupera e mensaje en clareo volviendo a cifrar el criptograma
con la misma clave EK1[EK1(M)] = M, en tanto que lo que debe cumplirse es que sólo pueda recuperarse el
texto en claro si se descifraron la misma clave DK1[EK1(M)] = M.
b) Indica –sin comentar- cinco diferencias entre los sistemas de cifra simétrica y asimétrica.
Respuesta:
Cifra Simétrica Cifra Asimétrica
- Tiene una mala gestión de claves - La gestión de claves eficiente
- No permite intercambio de claves - Permite el intercambio de claves
- No tiene firma digital (al menos fácil) - Posee firma digital completa
- Velocidad de cifra muy rápida:100 Mbyte/s - Velocidad de cifra muy lenta: 100 Kbyte/s
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 1 (véase el anverso)
SOLUCIÓN AL EXAMEN DE LA ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2007
- Longitud de claves de centenas de bits (128) - Longitud de claves de miles de bits (1.024)
- Vida típica de una clave: segundos, minutos - Vida típica de una clave: un año
- Sus inicios se remontan antes del siglo V a.C. - Su origen es el trabajo de Diffie y Hellman en 1976
- Seguridad basada en longitud de clave (bits) - Seguridad basada en funciones de un solo sentido
- Se usa para cifrar la información verdadera - Se usa para intercambio de clave y firma digital
- Usa una sola clave (y vector inicial en CBC) - Usa dos claves inversas entre sí en cuerpo finito
a) Explica en pasos cómo has podido comprobar la calidad de las claves que has generado con openSSL.
Respuesta:
01. Se generan las claves RSA desde openSSL en modo comando.
02. Se guarda la clave en un archivo forzando un formato texto.
03. Se edita ese archivo texto con un editor (conveniente que permita buscar y sustituir).
04. Se borran los 4 espacios en blanco que aparecen antes de laca dila de valores de las claves
05. Se borran los cambios de línea en los valores de p y q de forma que sean un solo número.
06. Se ejecuta el programa genRSA, claves en modo hexadecimal.
07. Se copian al portapapeles los valores de p y q y se pegan en las ventanas del programa genRSA.
08. Se copia la clave pública y se pega en la ventana respectiva de genRSA.
09. Se genera ahora de forma manual dicha clave.
10. Se obtienen todas las claves privadas parejas, guardando la clave generada en html.
11. Se obtiene sólo la cantidad de números no cifrables.
12. La calidad viene expresada por la cantidad de claves privadas parejas y números no cifrables.
b) A una clave RSA le realizas un ataque basado en la paradoja del cumpleaños. ¿Qué tipo de resultados
puedes encontrarte y qué significa cada uno de ellos?
Respuesta:
Si el ataque prospera, podemos tener 3 resultados. El algoritmo encuentra la clave privada; el algoritmo
encuentra una clave privada parejas; el algoritmo encuentra un falso positivo. Un falso positivo significa que
esa supuesta clave que se ha encontrado efectivamente descifra el criptograma pero sólo para esa entrada,
no para cualquier entrada; es decir, no es una solución genérica y por lo tanto es falsa. Si se encuentra la
clave privada o una clave privada pareja, se ha roto el sistema. Lo más frecuente es que tras este tipo de
ataques se encuentre alguna clave privada pareja, ello depende del valor de entrada como mensaje usado
y rara vez se obtiene un falso positivo.
Se pide:
a) ¿Qué clave se usará para el descifrado en el paso de la operación hecha por K1?
Solución:
La clave K1= 783 se habrá usado en el cifrado en una operación multiplicación por lo en el descifrado
se usará su inverso multiplicativo en el cuerpo 216+1 = 65537, es decir K49 = inv (783, 65.537) = 837.
i yi gi ui vi
0 -- 65.537 1 0
1 -- 783 0 1
2 83 548 1 - 83
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 2 (véase el anverso)
SOLUCIÓN AL EXAMEN DE LA ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2007
3 1 235 -1 84
4 2 78 3 - 251
5 3 1 -10 837
6 78 0
b) ¿Qué clave se usará para el descifrado en el paso de la operación hecha por K2?
Solución:
La clave K2 se usa en el cifrado en una operación suma por lo en el descifrado se usará el inverso
aditivo en 216 = 65.536 que será el complemento al cuerpo.
La clave será: K50 = 65.536 - 13.860 = 51.676.
c) ¿Qué clave se usará para el descifrado en el paso de la operación hecha por K3?
Solución:
La clave K3 se usa en el cifrado en una operación suma por lo en el descifrado se usará el inverso
aditivo en 216 = 65.536 que será el complemento al cuerpo.
La clave será: K51 = 65.536 - 35.851 = 29.685.
d) ¿Qué clave se usará para el descifrado en el paso de la operación hecha por K4?
Solución:
La clave K4= 42.673 se usa en el cifrado en una operación multiplicación; en el descifrado se usará su
16
inverso multiplicativo en el cuerpo 2 +1 = 65537, es decir K52 = inv (42.673, 65.537) = 62.834.
i yi gi ui vi
0 -- 65.537 1 0
1 -- 42.673 0 1
2 1 22.864 1 -1
3 1 19.809 -1 2
4 1 3.055 2 -3
5 6 1.479 -13 20
6 2 97 28 - 43
7 15 24 - 433 665
8 4 1 1.760 - 2.703 (+ 65.537) = 62.834
9 24 0
Nota: es obligatorio usar el algoritmo Extendido de Euclides para el cálculo de las claves privadas y el
algoritmo de exponenciación rápida visto en clase para la cifra.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 3 (véase el anverso)
SOLUCIÓN AL EXAMEN DE LA ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2007
Se pide:
a) Calcula la clave privada de Amparo.
Solución:
Usando el algoritmo extendido de Euclides se obtiene:
d = inv [e, Φ(n)] = inv [31, 2.400] = 1.471
i yi gi ui vi
0 -- 2.400 1 0
1 -- 31 0 1
2 77 13 1 - 77
3 2 5 -2 155
4 2 3 5 - 387
5 1 2 -7 542
6 1 1 12 - 929 (+ 2.400) = 1.471
7 2 0
b) Calcula la clave privada de Bartolo.
Solución:
Usando el algoritmo extendido de Euclides se obtiene:
d = inv [e, Φ(n)] = inv [37, 3.036] = 1.477
i yi gi ui vi
0 -- 3.036 1 0
1 -- 37 0 1
2 82 2 1 - 82
3 18 1 - 18 1.477
4 2 0
c) Envía el mensaje de Amparo a Bartolo de forma confidencial.
Solución:
Amparo usa la clave pública e = 37 de Bartolo y calcula: 1137 mod 3.149 = 2.846
37 = 100101 = b5b4b3b2b1b0.
x=1
2
i = 5 b5 = 1 x = 1 x 11 mod 3.149 x = 11
i = 4 b4 = 0 x = 112 mod 3.149 x = 121
i = 3 b3 = 0 x = 1212 mod 3.149 x = 2.045
i = 2 b2 = 1 x = 2.0452 x 11 mod 3.149 x = 1.683
i = 1 b1 = 0 x = 1.6832 mod 3.149 x = 1.538
2
i = 0 b0 = 1 x = 1.538 x 11 mod 3.149 x = 2.846
Amparo envía a Bartolo el valor 11 cifrado como 2.846.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 4 (véase el anverso)
SOLUCIÓN AL EXAMEN DE LA ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2007
PASOS PREVIOS
- Adela realiza los siguientes cálculos:
o Encuentra un primo pA
o Encuentra un generador A
o Elige un valor a
o Calcula CPubA = A a mod pA
a
o Hace público los valores (pA, A, CPubA = A mod pA)
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 5 (véase el anverso)
SOLUCIÓN AL EXAMEN DE LA ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2007
Se pide:
a) Termina el protocolo e indica a qué resultado llegan Adela y Benito.
Solución:
En el último paso Benito recupera B ab mod pB = KAB que había calculado Adela ( B ba mod pB).
Con ese valor de clave de sesión Benito descifra el mensaje cifrado que le había enviado Adela.
Lo interesante de este algoritmo es que realiza el intercambio de clave de Diffie y Hellman pero sin la
necesidad de que ambos interlocutores lo hagan en tiempo real, permitiendo así enviar una clave de
sesión dentro de un sobre de correo cifrado con la seguridad que nos da el problema del logaritmo
discreto, en vez de hacerlo con el clásico sistema RSA.
b) Indica a qué claves corresponden cada uno de los valores calculados en todos los pasos del
protocolo, tanto previos como en el protocolo en sí.
Solución:
pA = primo usado por Adela
A = generador usado por Adela
a = clave privada de Adela
a
A mod pA = clave pública de Adela
KAB = ( B b mod pB)a mod pB = B ba mod pB = clave de sesión calculada por Adela
pB = primo usado por Benito
B = generador usado por Benito
b = clave privada de Benito
b
B mod pB = clave pública de Benito
KAB = ( B a mod pB)b mod pB = B ab mod pB = clave de sesión recuperada por Benito
c) ¿Qué habría que hacer con el tamaño de KAB para poder usarla en una aplicación real?
Solución:
El valor debe ser del tamaño de una clave de un algoritmo simétrico, por ejemplo 128 bits de AES. En
ese caso, la clave de sesión pueden ser los primeros 128 bits del valor KAB que comparten ambos
extremos.
d) ¿Qué relación tendría este algoritmo con la versión 8.0 de programa PGP visto en clases?
Solución:
Este algoritmo posibilita el uso del intercambio de clave de Diffie y Hellman en un sistema en el que los
usuarios no interactúan simultáneamente como lo es el correo electrónico. Como PGP 8.0 genera
claves DH/DSS por defecto, el intercambio de clave secreta para abrir el correo cifrado en este
entorno se realiza de esta manera.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 6 (véase el anverso)
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2007
1. La entropía de una clave de cifra simétrica debería ser | baja | media | alta | cero | alta
2. El código Base 64 se usa para: | la compatibilidad entre clientes de correo | cifrar con 64 bits |
poder codificar con 264 bits | obtener código óptimo | compatibilidad entre clientes de correo
3. La trampa en RSA para el cálculo de inversos para las claves pública y privada es | el cuerpo n | el
cuerpo (n) | el cuerpo n-1 | el cuerpo (n) - 1 | el cuerpo (n)
4. El cifrado de matrices tipo Hill es vulnerable a ataques | de Berlekamp-Massey | por fuerza bruta |
de Diffie-Hellman | de Gauss-Jordan | de Guass-Jordan
5. El número medio de intentos para que prospere un ataque basado en la paradoja del cumpleaños
2n n/4 n n/2 n/2
ante una clave o valor de n bits será | 2 | 2 | 2 | 2 | 2
6. Los tamaños de clave por defecto en algoritmo AES en bits son | 80 / 128 / 192 | 128 / 192 / 256 |
128 / 256 / 512 bits | 128 / 512 / 1024 bits | 128 / 192 / 256
7. El estándar de firma Digital Signature Standard DSS propuesto por el NIST es una variante de la
firma | ElGamal | Diffie-Hellman | Merkle-Hellman | RSA | ElGamal
8. Para cifrar un archivo de forma convencional con PGP y que el archivo criptograma resultante sea
un ejecutable que pueda abrirse sin la necesidad de tener instalado ese programa en destino, lo
hacemos con la opción | DH/DSS | Base64 | PGP | SDA | SDA
9. La clave pública por defecto que genera PGP en su versión 8.0 y número de bits es | RSA 1204 |
DH/DSS 2048/1024 | DH/DSS 1024/2048 | DH/SHA-1 1024/160 | DH/DSS 2048/1024
10. El algoritmo simétrico y longitud de clave en SSL | lo fuerza el cliente | lo fuerza el servidor | es
siempre 3DES o AES | se negocia entre cliente y servidor | se negocia entre cliente y servidor
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 1 (véase el anverso)
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2007
cuida el diseño de la clave eligiendo adecuadamente p, q y e, estos valores pueden llegar a ser muy altos y
en algunos casos podrían resentir seriamente la seguridad de esa clave. También se podría decir que es
verdadero pero argumentando que dicho valor indeterminado parte de los mínimos antes comentados.
b) Si usamos genRSA para cifrar el mensaje de texto M = 123_PRUEBA y el cuerpo de cifra del destino es
n = 482.884.243 (29 bits), ¿cuáles son los bloques a cifrar y de qué tamaño son los bloques de salida?
Se cifrarán bloques de 3 bytes y la salida se representará en bloques de 4 bytes. Esto porque el módulo de
cifra es de 29 bits y por tanto sólo podemos cifrar 3 bytes = 24 bits, pero como la cifra se hace en ese
módulo de 29 bits la salida serán bloques de 4 bytes. Luego, los bloques de entrada serán los valores
resultantes en hexadecimal de 123; _PR; UEB; A.
Se intenta criptoanalizar las cajas S del DES. Si en una de las vueltas del algoritmo, la salida de las
cajas en hexadecimal es igual a B5AF8D1F = 10110101 10101111 10001101 00011111.
Se pide:
a) Encuentra en binario todas las entradas posibles de la caja S8.
b) ¿Es más fácil atacar por fuerza bruta la cifra o romper las cajas S en 16 vueltas? ¿Por qué?
c) ¿Qué pasaría si el algoritmo tuviese sólo 3 vueltas?
Caja S8 C O L U M N A
Fila 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
SOLUCIÓN:
Apartado a: (1,0 punto)
La salida de la caja S8 serán los últimos 4 bits del valor entregado, es decir F = 1111. Luego, habrá
que buscar en dicha caja las filas y columnas que entreguen el valor decimal 15.
Fila 0 Columna 5 Valores de entrada para esta combinación: 0 0101 0
Fila 1 Columna 1 Valores de entrada para esta combinación: 0 0001 1
Fila 2 Columna 12 Valores de entrada para esta combinación: 1 1100 0
Fila 3 Columna 8 Valores de entrada para esta combinación: 1 1000 1
Apartado b: (0,5 puntos)
Hay que realizar un mayor trabajo para hacer un seguimiento hacia atrás de las cajas S en 16 vueltas
que atacar la clave del DES por fuerza bruta (256). Como en cada caja hay 4 entradas posibles para
cada salida, existirán 48 = 216 combinaciones de entrada. Como tenemos 16 vueltas, deshacer todas
las operaciones de las cajas S en un bloque de cifra del DES implicaría (216)16 = 2256 intentos, un valor
56
muchísimo mayor que 2 .
Apartado b: (0,5 puntos)
Si sólo tenemos 3 vueltas, independiente de que el algoritmo sea muy básico y poco seguro, atacar las
cajas S será ahora mucho más fácil porque significaría tan sólo (216)3 = 248 intentos, un valor bastante
menor que 256.
Amparo y Bartolo desean intercambiar una clave usando el algoritmo de Diffie y Hellman. El primo
elegido es 661 y como generador han optado por = 6.
Nota: no es obligatorio usar en este ejercicio el algoritmo de exponenciación rápida. Además, los
valores de cálculo son muy bajos.
Se pide:
a) Si Amparo elige el valor privado a = 12, calcula el valor que envía a Bartolo.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 2 (véase el anverso)
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2007
SOLUCIÓN:
Apartado a: (0,25 puntos)
A B: a mod p = 612 mod 661 = 271 (Amparo envia a Bartolo el valor 271)
Apartado b: (0,25 puntos)
B A: b mod p = 68 mod 661 = 15 (Bartolo envia a Amparo el valor 15)
Apartado c: (0,25 puntos)
La clave compartida es 2718 mod 661 = 1512 mod 661 = 497
Apartado d: (1,0 punto)
Crispín sabe que = 6 y que p = 661. Haría un ataque por fuerza bruta capturando el valor 227 que
Amparo envía a Bartolo y calculando xa mod 661 = 227 para todos los valores de xa dentro del cuerpo
p hasta que se dé la igualdad para obtener la clave de Amparo y lo mismo con el valor 15 que Bartolo
envió a Amparo y calculando xb mod 661 = 15 para todos los valores de xb dentro del cuerpo hasta
que se dé la igualdad para obtener la clave de Bartolo. Si se comienza por xa,b = 2, dado que las
claves privadas elegidas por Amparo y Bartolo son muy bajas (12 y 8), podemos afirmar que Crispín
las encontrará rápidamente.
Un segundo ataque más eficiente (independientemente del tamaño de a y b) es despejar los valores
de xa y xb mediante el uso de diversos algoritmos de solución del Problema del Logaritmo Discreto. Es
decir calcularía log6 271 mod 661 para la clave de Amparo y log6 15 mod 661 para la clave de Bartolo.
El tercer ataque, ya en un entorno distinto, sería un ataque del tipo “man in the middle” de forma que,
por ejemplo, intercepta el valor que Amparo envía a Bartolo y envía a Bartolo el valor calculado por él
mod p y hace lo mismo con Amparo. Tras ello Crispín se podra hacer dueño de la sesión.
c
Adela desea enviar a Benito el mensaje en claro HOLA cifrando con el sistema RSA byte a byte.
Los datos son:
Se pide:
a) Usando el algoritmo extendido de Euclides encuentra la clave privada de Adela.
b) Usando el algoritmo extendido de Euclides encuentra la clave privada de Benito.
c) Usando el algoritmo de exponenciación rápida cifra sólo el primer byte del mensaje HOLA que
Adela desea enviar de forma confidencial a Benito.
d) Usando el algoritmo de exponenciación rápida descifra el criptograma en el extremo receptor de
Benito.
e) Si Adela desea además firmar digitalmente ese mensaje, usando como “hash” la acción de
concatenar sólo los bits pares del texto HOLA (aunque sea una pésima opción y no tenga
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 3 (véase el anverso)
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2007
absolutamente nada que ver con un hash) y así obtener un número, ¿podría hacerlo? En su caso,
¿qué solución le queda si desea firmar?
Ayuda: HASCII = 0100 1000; 937 = 11 1010 1001; 2.623 = 1010 0011 1111
SOLUCIÓN:
Apartado a: (0,6 puntos)
Adela: p = 43, q = 61, eA = 19. Luego nA = p x q = 2.623; (nA) = (p-1)(q-1) = 42 x 60 = 2.520.
Luego, dA = inv [eA, (nA)] = inv (19, 2.520) = 1.459
i yi gi ui vi
0 -- 2.520 1 0
1 -- 19 0 1
2 132 12 1 -132
3 1 7 -1 133
4 1 5 2 -265
5 1 2 -3 398
6 2 1 8 -1.061
7 2 0
La clave privada de Adela será dA = -1.061 + 2.520 = 1.459.
Apartado b: (0,6 puntos)
Benito: p = 31, q = 59, eB = 13. Luego nB = p x q = 1.829; (nB) = (p-1)(q-1) = 30 x 58 = 1.740.
Luego, dB = inv [eB, (nB)] = inv (13, 1.740) = 937
i yi gi ui vi
0 -- 1.740 1 0
1 -- 13 0 1
2 133 11 1 -133
3 1 2 -1 134
4 5 1 6 -803
5 2 0
La clave privada de Benito será dB = -803 + 1.740 = 937.
Apartado c: (0,6 puntos)
HOLA = 72, 79, 76, 65 en valor decimal del código ASCII. Como es Adela quien cifra para Benito,
usará la clave pública de Benito:
eB 13
C1 = H mod nB = C1 = 72 mod 1.829 (132 = 1101 = b3b2b1b0). Y según el algoritmo pedido:
2
i = 3 b3 = 1 x = 1 x 72 mod 1.829 x = 72
2
i = 2 b2 = 1 x = 72 x 72 mod 1.829 x = 132
2
i = 1 b1 = 0 x = 132 mod 1.829 x = 963
i = 0 b0 = 1 x = 9632 x 72 mod 1.829 x = 1.094
C1 = 1.094
Todos estos cálculos se pueden hacer con una calculadora no científica: ver exámenes anteriores.
Apartado d: (0,6 puntos)
Para descifrar, usaremos la clave privada de Benito:
M1 = C1dB mod nB = M1 = 1.094937 mod 1.829 (9372 = 1110101001 = b9b8b7b6b5b4b3b2b1b0). Valor binario
entregado como dato en el examen.
i=9 b8 = 1 x = 12 x 1.094 mod 1.829 x = 1.094
i=8 b8 = 1 x = 1.0942 x 1.094 mod 1.829 x = 1.380
i=7 b7 = 1 x = 1.3802 x 1.094 mod 1.829 x = 1.529
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 4 (véase el anverso)
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2007
2
i = 6 b6 = 0 x = 1.529 mod 1.829 x = 379
i = 5 b5 = 1 x = 3792 x 1.094 mod 1.829 x = 1.061
i = 4 b4 = 0 x = 1.0612 mod 1.829 x = 886
i = 3 b3 = 1 x = 8862 x 1.094 mod 1.829 x = 622
2
i = 2 b2 = 0 x = 622 mod 1.829 x = 965
i = 1 b1 = 0 x = 9652 mod 1.829 x = 264
i = 0 b0 = 1 x = 2642 x 1.094 mod 1.829 x = 72 Valor ASCII decimal del carácter H.
Todos estos cálculos se pueden hacer con una calculadora no científica: ver exámenes anteriores.
Apartado e: (0,6 puntos)
Si el hash consiste en concatenar los bits pares del mensaje (independientemente de que no sea ésta
ni mucho menos una función hash ni tampoco recomendable) dado que el mensaje HOLA tiene 32 bits
y el cuerpo de cifra de Adela nA = 2.623 = 101000111111 tiene 12 bits (valor dado como dato en el
examen), Adela no podrá firmar pues el hash resultante serían 16 bits y estaría fuera del cuerpo de cifra.
Si desea seguir con esta “función” hash, podría realizar la firma en dos bloques, cada uno de 8 bits, pero
esto no tendría sentido por ser demasiado costoso. También podría aumentar el valor de su clave de forma
que le permita firmar mensajes de mayor tamaño.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 5 (véase el anverso)
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2008
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 1 (véase el anverso)
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2008
en cualquier lugar de ella y realizar un ataque de Berlekamp-Massey. Ese ataque prosperará porque
tendremos 10 ecuaciones con 9 incógnitas.
b) Cuando generamos una clave RSA con openSSL, además de los valores propios de la clave (p, q, n, e,
d), el programa nos entrega como datos exponent1, exponent2 y coefficient. ¿Para qué sirven?
Datos: exponent1 = dP = (1/e) mod (p-1); exponent2 = dQ = (1/e) mod (q-1); coefficient = qInv = 1(q) mod p (si p > q)
Estos tres valores (no pedidos en el examen) son los que permiten hacer un descifrado usando el Teorema
del Resto Chino y por tanto usar sólo operaciones en módulo p y módulo q, lo que reduce el tiempo de
cómputo en unas 4 veces.
Las operaciones (tampoco se piden en el examen) son:
M = m2 + hq siendo: m1 = CdP mod p; m2 = CdQ mod q; h = qInv (m1 – m2) mod p
Un nuevo algoritmo de cifra simétrica incluye en una etapa intermedia el uso de las cajas S del DES
para así aumentar su fortaleza. En una de las 20 vueltas de ese algoritmo, los 48 bits que entran en
estas cajas vienen representados en hexadecimal por C83A 8E9A F5D0.
Se pide:
a) Encontrar la salida de cada caja S y representarla en hexadecimal (1,0 punto)
b) ¿Qué cadena en hexadecimal se obtiene como salida? (0,5 puntos)
c) ¿Se puede recuperar con facilidad la entrada a partir de la salida? ¿Por qué? (0,5 puntos)
SOLUCIÓN:
Apartado a:
Pasamos la entrada C83A 8E9A F5D0 a binario y nos queda
1100 1000 0011 1010 1000 1110 1001 1010 1111 0101 1101 0000
Agrupando de 6 bits que son los que entran en cada caja S:
110010 000011 101010 001110 100110 101111 010111 010000
S1 S2 S3 S4 S5 S6 S7 S8
Leyendo los bits de los extremos para las filas F y los cuatro centrales para columnas C, tenemos:
S1 S2 S3 S4 S5 S6 S7 S8
(F,C) (2,9) (1,1) (2,5) (0,7) (2,3) (3,7) (1,11) (0,8)
Que corresponde a las salidas: 12, 13, 15, 10, 11, 10, 12, 10 respectivamente.
Apartado b:
Pasando estos valores a hexadecimal se tiene: CDFABACA.
Apartado c:
Para una sola vuelta sí sería muy fácil porque para cada salida hay 4 entradas posibles y así
tendríamos que hacer sólo 4^8 = 65.536 intentos con todas las combinaciones. Pero si, como se indica
en el enunciado, el algoritmo realiza 20 vueltas, intentar atacar las cajas S (de valores conocidos) por
96
fuerza bruta significaría realizar (4^8)^20 = 2,14 x 10 intentos, un valor muy alto.
Se diseña un algoritmo de cifra en flujo contando con dos registros LFSR de tipo primitivo:
3
- Generador LFSR1: polinomio x + x + 1
- Generador LFSR2: polinomio x4 + x + 1
La salida de ambos generadores entra a una etapa de multiplicación (X) en la que los bits de cada
secuencia se multiplican entre sí, dando lugar a la secuencia cifrante del sistema o clave K.
Nota: las secuencias que se piden hay que encontrarlas, no sólo escribir el conjunto de bits.
Se pide:
a) Encuentra la secuencia cifrante y el periodo de LFSR1 para la semilla: 101 (0,5 puntos)
b) Encuentra la secuencia cifrante y el periodo de LFSR2 para la semilla: 1001 (0,5 puntos)
c) Encuentra los 20 primeros bits de la secuencia de salida clave K (0,5 puntos)
d) ¿Cuál será el periodo de la secuencia de salida K y porqué? (0,5 puntos)
e) ¿Qué le encuentras de bueno y qué de malo a este sistema? (0,5 puntos)
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 2 (véase el anverso)
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2008
SOLUCIÓN:
Apartado a:
Registro LFSR1:
S1 S2 S3
1 0 1 Si
El XOR se realizará entre el bit de la tercera celda y el de la primera.
Evolución del registro:
1 0 1 1
0 1 0 0
0 0 1 1
1 0 0 0
1 1 0 0
1 1 1 1
0 1 1 1
1 0 1 semilla
Si = 1010011
El periodo es igual a 7 = 23 – 1, máximo para este tipo de registro.
Apartado b:
Registro LFSR2:
S1 S2 S3 S4
1 0 0 1 Si
El XOR se realizará entre el bit de la cuarta última celda y el de la primera.
Evolución del registro:
1 0 0 1 1
0 1 0 0 0
0 0 1 0 0
0 0 0 1 1
1 0 0 0 0
1 1 0 0 0
1 1 1 0 0
1 1 1 1 1
0 1 1 1 1
1 0 1 1 1
0 1 0 1 1
1 0 1 0 0
1 1 0 1 1
0 1 1 0 0
0 0 1 1 1
1 0 0 1 semilla
Si = 100100011110101
4
El periodo es igual a 15 = 2 – 1, máximo para este tipo de registro.
Apartado c:
Registro LFSR1: 10100111010011101001
Registro LFSR1: 10010001111010110010
Producto: 10000001010010100000 (suponiendo que se trata de una función AND)
Apartado d:
El periodo del sistema de cifra será mcm (7, 15) = 105
Apartado e:
Aunque aumenta el periodo al producto entre ambos generadores y así también la complejidad lineal, lo
que es un factor a favor, al tratarse de un producto habrá muchos ceros en la secuencia de clave, por lo
que ésta será poco aleatoria. Incluso podría darse el caso que algunos bytes del mensaje se transmitiesen
en claro si alguna(s) cadena(s) de 8 ceros seguidos coincide con los bytes del mensaje.
Ejercicio Nº 3 2,5 puntos. Recomendado: 45 minutos
Adela enviará de forma confidencial el mensaje HOLA a Benito, usando RSA y cifrando bloques de 1
carácter según el valor decimal del ASCII correspondiente. Por ejemplo A = 65.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 3 (véase el anverso)
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2008
SOLUCIÓN:
Apartado a:
HOLA = 72, 79, 76, 65 en valor decimal del código ASCII entregada en examen. Como Adela cifra el
mensaje a Benito, usaremos la clave pública de Benito nB, eB:
eB 13
C1 = H mod nB = C1 = 72 mod 713
C2 = O mod nB = C2 = 7913 mod 713
eB
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 4 (véase el anverso)
SOLUCIÓN AL EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Junio 2008
Criptograma recibido C1 = 9:
i = 8 b8 = 1 x = 12 x 9 mod 713 x=9
I = 7 b7 = 1 x = 92 x 9 mod 713 x = 16
i = 6 b6 = 1 x = 162 x 9 mod 713 x = 165
2
i = 5 b5 = 0 x = 165 mod 713 x = 131
i = 4 b4 = 0 x = 1312 mod 713 x = 49
I = 3 b3 = 1 x = 492 x 9 mod 713 x = 219
i = 2 b2 = 0 x = 2192 mod 713 x = 190
i = 1 b1 = 0 x = 1902 mod 713 x = 450
2
i = 0 b0 = 1 x = 450 x 9 mod 713 x = 72
Que es el valor ASCII del carácter H enviado.
Apartado d:
Si el mensaje es la letra D (68), se cifrará como:
C = DeB mod nB = C = 6813 mod 713
Como 1310 = 1101 = b3b2b1b0, según el algoritmo pedido
Criptograma C, M = 68:
i = 3 b3 = 1 x = 12 x 68 mod 713 x = 68
I = 2 b2 = 1 x = 682 x 68 mod 713 x = 712
2
i = 1 b1 = 0 x = 712 mod 713 x=1
i = 0 b0 = 1 x = 12 x 68 mod 713 x = 68
Se obtiene el mismo carácter, se transmite en claro. Esto es debido a que se trata de uno de los
números no cifrables de dicha clave.
Los 21 números no cifrables (no pedido en este examen) de la clave de Benito son los siguientes:
0, 1, 68, 92, 93, 160, 161, 185, 253, 254, 346, 367, 459, 460, 528, 552, 553, 620, 621, 645, 712.
Nota: todos estos cálculos se han hecho con una calculadora simple, no científica.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 5 (véase el anverso)
SOLUCIÓN EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2008
1. La clave del antiguo sistema de cifra conocido como escítala residía en la siguiente propiedad del
artilugio usado | su longitud | su diámetro | su peso | su color | su diámetro
2. Para una buena seguridad del algoritmo de cifra simétrica, se requiere que la entropía de su clave
sea | muy baja | mayor que 1 | muy alta | menor que 1 | muy alta
3. Las claves pública y privada en RSA se calculan en el cuerpo | (N) | N-1 | N | N/2 | (N)
4. | A5 | ElGamal | AES | RSA | basa su seguridad en el problema del logaritmo discreto ElGamal
5. El nuevo estándar de algoritmo de cifra simétrica es | TripleDES | RC4 | WEP | AES | AES
6. Sistemas como openSSL y PGP se dicen que son criptográficamente híbridos porque | realizan
un cifrado doble | usan criptografía simétrica y asimétrica | usan dos o más claves | lo cifrado se
descifra usando claves inversas | usan criptografía simétrica y asimétrica
7. El espacio de claves de una clave simétrica de 128 bits será igual a | 264 | 2128 | 2127 | 2256 | 2128
8. Para firmarle la clave pública a otra persona usamos | nuestra clave pública | la clave de sesión
intercambiada | la clave de un tercero | nuestra clave privada | nuestra clave privada
9. Usando openSSL generamos una clave RSA de 1.024 bits y comprobamos que tiene 37 claves
privadas parejas. Las dimensiones de las claves privadas parejas podrían estar en la siguiente
franja de bits | 1.010 a 1.024 | 516 a 1.024 | 1.023 a 1.204 | 1.024 a 2.048 | 1.010 a 1.024
10. Si usamos PGP para cifrar un mismo documento con la misma clave K pero en dos instantes
distintos, el resultado será | dos criptogramas exactamente iguales | dos criptogramas iguales
pero con distintas fechas de guardado | dos criptogramas que difieren sólo en el tamaño en bits |
dos criptogramas distintos | dos criptogramas distintos
a) Adela y Benito quieren intercambiar un mensaje secreto corto (una palabra) usando para ello RSA.
Ambos han creado sus claves y poseen la clave pública del otro. ¿Pueden hacerlo? ¿Qué deberían
hacer en este caso? ¿Es común el uso de RSA para este intercambio de mensajes de texto?
Sí pueden hacerlo. En este caso, deberían codificar el mensaje a un valor numérico en función del tamaño
del cuerpo de cifra n, por ejemplo de cifrando el valor decimal ASCII byte a byte o bien agrupando más bits
si así lo permite el valor de n, o incluso menos si n fuese muy pequeño. No obstante, dado que el sistema
RSA es muy lento, no se usa para cifrar mensajes. Este sistema se usa sólo para cifrar números, como es
el caso del intercambio de una clave de sesión o bien la firma digital de un hash.
b) Cuando ciframos un correo usando por ejemplo PGP o GnuPG al criptograma resultante se le añade lo
que se conoce como armadura o en inglés “armor”. ¿Qué significa eso y por qué se usa?
Significa que se cambia el resultado de la cifra agrupando los bits en grupos de 6 y codificando esa nueva
salida en el código base 64, que consiste en las 26 letras mayúsculas (sin la Ñ), las 26 letras minúsculas
(sin la ñ), los 10 dígitos y los signos + y / es decir 64 elementos. Si no se forma un nuevo grupo de 6 bits al
final de la cadena, se añade el signo = para indicar relleno. Esta operación sirve para que cualquier cliente
de correo pueda interpretar el código (todos son valores imprimibles). Todos los archivos que se añaden
(attach) a un e-mail vienen codificados de esta manera.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 1 (véase el anverso)
SOLUCIÓN EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2008
a) Indica en qué consiste un ataque de Berlekamp-Massey. ¿A qué sistemas de cifra en flujo afecta, cómo
y porqué prospera? ¿Qué debe hacerse para que la cifra no se vea afectada por este ataque?
Consiste en conseguir 2n bits de una secuencia de 2n-1 bits de una clave de un sistema de cifra en flujo
cuya clave se genera con LFSR de polinomio primitivo. Se resuelve un sistema de n ecuaciones con n-1
incógnitas con datos binarios, de fácil solución mediante matrices. Como resultado del ataque, se obtiene
la configuración de ese LFSR y como cualquier secuencia de n bits excepto todos 0s es válida como
semilla, se puede generar la secuencia completa de de 2n-1 bits.
La solución es aumentar la complejidad lineal añadiendo varios LFSR y otros dispositivos de selección de
bits de los mismos, de forma que el comportamiento de la secuencia final de clave no sea predecible.
b) ¿Por qué al crear una clave RSA de gran tamaño se pueden conocer fácilmente los valores de todas las
claves privadas parejas y por el contrario es muy difícil conocer todos los números no cifrables?
Porque el cálculo de las claves privadas parejas es el resultado de una ecuación simple en que todas
estas claves se encuentran separadas por un valor constante. En cambio, para conocer los valores de los
números no cifrables hay que plantear un conjunto de ecuaciones en los primos p y q, dos de esas
ecuaciones requieren un cómputo por fuerza bruta, que es imposible realizarlo en un tiempo razonable
cuando el valor de n es grande. Estas ecuaciones son ¿Xe mod p = X? y Xe mod q = X? que deben
valorarse para los valores de 1 < X < n-1. Si n = 1.204 bits, lo común es que p y q sean primos de 512 bits
cada uno, un número decimal con unos 160 dígitos.
Tras una vuelta del algoritmo DES, nos encontramos que la salida en hexadecimal de las cajas S es
SCajasS = FB12FA34
Se pide:
a) Indica si alguna de estas posibles 8 entradas es la verdadera.
Entrada 1) 110000 001010 100001 111010 010110 101111 010000 100110
Entrada 2) 110000 001010 100001 111010 010110 101111 001000 100100
Entrada 3) 110000 001010 100001 111010 010110 101101 010000 100100
Entrada 4) 110000 001010 100001 111010 110110 101111 010000 100100
Entrada 5) 110000 001010 100001 101010 010110 101111 010000 100100
Entrada 6) 110000 001010 100111 111010 010110 101111 010000 100100
Entrada 7) 110000 011010 100001 111010 010110 101111 010000 100100
Entrada 8) 110000 001010 100001 111010 010110 101111 010000 100100
Ninguna de las anteriores.
b) Justifica porqué has descartado cada una de las entradas o todas.
SOLUCIÓN:
Apartado a:
Para que la salida de la primera caja S1 sea F = 1111, la entrada a S1 debe ser (2,8) = 1 1000 0
Las 8 entradas comienzan con esta cadena de seis bits. Todas lo cumplen.
Para que la salida de la segunda caja S2 sea B = 1011, la entrada a S2 debe ser (0,5) = 0 0101 0
Fallo: la entrada 7 = 011010 no cumple con esta cadena de bits.
Para que la salida de la tercera caja S3 sea 1 = 0001, la entrada a S3 debe ser (3,0) = 1 0000 1
Fallo: la entrada 6 = 100111 no cumple con esta cadena de bits.
Para que la salida de la cuarta caja S4 sea 2 = 0010, la entrada a S4 debe ser (2,13) = 1 1101 0
Fallo: la entrada 5 = 101010 no cumple con esta cadena de bits.
Para que la salida de la quinta caja S5 sea F = 1111, la entrada a S5 debe ser (0,11) = 0 1011 0
Fallo: la entrada 4 = 110110 no cumple con esta cadena de bits.
Para que la salida de la sexta caja S6 sea A = 1010, la entrada a S6 debe ser (3,7) = 1 0111 1
Fallo: la entrada 3 = 101101 no cumple con esta cadena de bits.
Para que la salida de la séptima caja S7 sea 3 = 0011, la entrada a S7 debe ser (0,8) = 0 1000 0
Fallo: la entrada 2 = 001000 no cumple con esta cadena de bits.
Para que la salida de la octava caja S8 sea 4 = 0100, la entrada a S8 debe ser (2,2) = 1 0010 0
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 2 (véase el anverso)
SOLUCIÓN EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2008
Vamos a cifrar el mensaje M en ASCII = ABBA usando cifrado en flujo. El generador usado es un
LFSR simple caracterizado por el polinomio generador x5 + x3 + x + 1 y con la semilla 10001.
Se pide:
a) Encuentra la secuencia cifrante y el periodo del generador.
b) ¿Qué puedes decir de la secuencia de clave encontrada?
c) Cifra el mensaje ABBA bit a bit con la secuencia de clave encontrada (AASCII = 0100 0001).
d) Representa el criptograma en formato Base 64 y comenta alguna particularidad de ese resultado.
e) Descifra el criptograma bit a bit.
SOLUCIÓN:
Apartado a:
5 3
Registro LFSR: x + x + x + 1 con una semilla = 10001
S1 S2 S3 S4 S5
1 0 0 0 1 Si
El XOR se realizará entre el bit de la cuarta última celda y el de la primera.
Evolución del registro:
1 0 0 0 1 1
0 1 0 0 0 0
0 0 1 0 0 0
1 0 0 1 0 0
1 1 0 0 1 1
0 1 1 0 0 0
1 0 1 1 0 0
0 1 0 1 1 1
1 0 1 0 1 1
1 1 0 1 0 0
1 1 1 0 1 1
1 1 1 1 0 0
0 1 1 1 1 1
0 0 1 1 1 1
0 0 0 1 1 1
1 0 0 0 1 Semilla: se repite la secuencia.
La secuencia cifrante será Si = 100010011010111
Apartado b:
El periodo es igual a 15 y la secuencia encontrada es mala para este registro. Se trata de un
polinomio irreducible pero no primitivo y en este caso el periodo es siempre Smáx-1/2, es decir para un
registra de 5 celdas (31-1)/2 = 15.
Apartado c:
ABBA = 01000001 01000010 01000010 01000001
Si = 100010011010111
Para cifra se hace un XOR entre el mensaje M y la clave S se obtiene:
M=01000001010000100100001001000001
S=100010011010111100010011010111100010011010111
Obteniendo:
C=110010001110110101010001000111110000
La secuencia cifrante se repite dos veces dado que el texto en claro tiene 32 bits y ésta 30.
Los últimos 4 ceros (0 0 0 0) indican el relleno que habrá que hacer al pasarlo a código Base 64.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 3 (véase el anverso)
SOLUCIÓN EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2008
Apartado d:
C = 110010 001110 110101 010001 000111 110000
Usando la tabla del código Base 64 obtenemos:
C = yO1RHw==
Hay dos rellenos ==, puesto que faltan los cuatro bits indicados en negrita para formar el último
bloque de 6 bits de la codificación Base 64.
Apartado e:
C=11001000111011010101000100011111
S=10001001101011110001001101011110
Haciendo el XOR:
M=01000001010000100100001001000001
M = 01000001 01000010 01000010 01000001 = ABBA
Nota: puedes comprobar la solución usando el software FlujoLab.
Adela enviará a Benito el mensaje 101 de forma confidencial con RSA, añadiendo además su firma al
mismo mensaje. Las claves públicas de ambos son las que se indican:
Adela: nA = 589, eA = 11; Benito: nB = 559, eB = 17 (Valores de los primos: 10 < p < 20).
Se pide:
a) Encuentra las claves privadas de Adela y Benito.
b) Cifra el mensaje 101 que A envía a B.
c) Descifra el criptograma recibido por B.
d) Firma el mensaje 101 que A envía a B.
e) Comprueba la firma en el extremo de B.
Usar siempre el Algoritmo Extendido de Euclides y el Algoritmo de Exponenciación Rápida vistos
en clase y que encontrarás también en soluciones de exámenes.
SOLUCIÓN:
Apartado a:
Viendo si los valores 589 y 559 son divisibles por 13, 17 ó 19 (los únicos primos en el intervalo dado),
se obtiene:
- Claves de Adela:
Adela: nA = 589, pA = 19, qA = 31, eA= 11, (nA) = 18x30 = 540
Clave privada de Adela: dA
dA = inv [eA, (nA)] = inv (11, 540)
i yi gi ui vi
0 -- 540 1 0
1 -- 11 0 1
2 49 1 1 - 49
3 11 0
La clave privada de Adela será dA = - 49 + 540 = 491
- Claves de Benito:
En este caso:
Benito: nB = 559, pB = 13, qB = 43, eB = 17, (nB) = 12x42 = 504
Clave privada de Benito: dB
dB = inv [eB, (nB)] = inv (17, 504)
i yi gi ui vi
0 -- 504 1 0
1 -- 17 0 1
2 29 11 1 - 29
3 1 6 -1 30
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 4 (véase el anverso)
SOLUCIÓN EXAMEN ASIGNATURA SEGURIDAD INFORMÁTICA Convocatoria Septiembre 2008
4 1 5 2 - 59
5 1 1 -3 89
6 1 0
La clave privada de Benito será dB = 89
Apartado b:
Adela usará la clave pública de Benito (17, 559) y enviará el criptograma C = MeB mod nB
17
C = 101 mod 559 (172 = 10001 = b4b3b2b1b0)
i = 4 b4 = 1 x = 12 x 101 mod 559 x = 101
2
i = 3 b8 = 0 x = 101 mod 559 x = 139
i = 2 b2 = 0 x = 1392 mod 559 x = 315
i = 1 b1 = 0 x = 3152 mod 559 x = 282
2
i = 0 b0 = 1 x = 282 x 101 mod 559 x = 212
El criptograma que A envía a B es C = 10117 mod 559 = 212
Apartado c:
Benito usará su clave privada (89) y descifrará el criptograma M = CdB mod nB
C = 21289 mod 559 (892 = 1011001 = b6b5b4b3b2b1b0)
i = 6 b6 = 1 x = 12 x 212 mod 559 x = 212
2
i = 5 b5 = 0 x = 212 mod 559 x = 224
2
i = 4 b4 = 1 x = 224 x 212 mod 559 x = 101
i = 3 b3 = 1 x = 1012 x 212 mod 559 x = 400
i = 2 b2 = 0 x = 4002 mod 559 x = 126
i = 1 b1 = 0 x = 1262 mod 559 x = 224
i = 0 b0 = 1 x = 2242 x 212 mod 559 x = 101
B recupera el mensaje enviado M = 101.
Apartado d:
Adela usará su clave privada (491) para firmar el documento F = MdA mod nA
F = 101491 mod 589 (4912 = 111101011 = b8b7b6b5b4b3b2b1b0)
i = 8 b8 = 1 x = 12 x 101 mod 589 x = 101
2
i = 7 b7 = 1 x = 101 x 101 mod 589 x = 140
2
i = 6 b6 = 1 x = 140 x 101 mod 589 x = 560
i = 5 b5 = 1 x = 5602 x 101 mod 589 x = 125
2
i = 4 b4 = 0 x = 125 mod 589 x = 311
i = 3 b3 = 1 x = 3112 x 101 mod 589 x = 256
i = 2 b2 = 0 x = 2562 mod 589 x = 157
i = 1 b3 = 1 x = 1572 x 101 mod 589 x = 435
i = 0 b3 = 1 x = 4352 x 101 mod 589 x = 442
La firma que A envía a B es F = 101491 mod 589 = 442
Apartado e:
Benito usará la clave pública de Adela (11, 589) para comprobar la firma FeA mod nA
¿44211 mod 589 = M? (112 = 1011 = b3b2b1b0)
i = 3 b3 = 1 x = 12 x 442 mod 589 x = 442
i = 2 b2 = 0 x = 4422 mod 589 x = 405
i = 1 b1 = 1 x = 4052 x 442 mod 589 x = 218
i = 0 b1 = 1 x = 2182 x 442 mod 589 x = 101
B comprueba la firma de A al obtener el mismo mensaje M = 101.
Nota: todos estos cálculos se pueden hacer con una simple calculadora no científica (ver explicación
en exámenes anteriores) y también con la calculadora de Windows. Puedes además comprobar la
solución de las claves y cifras usando el software genRSA o bien ExpoCrip.
Departamento de Lenguajes, Proyectos y Sistemas Informáticos – EUI - UPM pág. 5 (véase el anverso)









