Sie sind auf Seite 1von 3

Ejemplo de una pregunta compleja sobre RSA

Alicia va a enviar firmado el siguiente mensaje a Bernardo M = HOLA BERNI, TE CONFIRMO


QUE NOS REUNIMOS MAÑANA A LAS 12:00 EN EL LUGAR DE SIEMPRE PARA HACER EL
INFORME EJECUTIVO DE LA EMPRESA.

Para ello, primero calcula la función hash MD5 de ese mensaje: h(M) =
3F8A53CFBB7EC6147AD2D21B47F4AFF5.

Desgraciadamente Alicia tiene una clave RSA de un tamaño muy bajo por lo que no puede
firmar el hash completo y, por tanto, firmará sólo los x primeros caracteres hexadecimales que
le permita su módulo n de RSA.

Los valores públicos de Alicia son un módulo n = 180.157, con el primo p ligeramente superior
a 250, y la clave pública e = 17.

PREGUNTA 1)
Indica cuáles son los primos p y q de la clave de Alicia.

SOLUCIÓN 1)
Los primos mayores que el 5 sólo pueden terminar en 1, 3, 7 o 9. Por lo tanto los valores
candidatos a primo p en este caso serían 251, 253, 257, 259, 261, ...
Si se elige el valor 257 y se divide n = 180.157 por ese valor, la división será entera y saldrá
como resultado el otro primo.
Por tanto: p = 257, q = 701.

PREGUNTA 2)
Calcula la clave privada de Alicia. Debes usar obligatoriamente el algoritmo extendido de
Euclides.

SOLUCIÓN 2)
La clave privada de Alicia será d = inv (e, φ(n))
φ(n) = (p-1)(q-1) = (257-1)(701-1) = 256x700 = 179.200
d = inv (17, 179.200) = 115.953
Aplicando el teorema extendido de Euclides se tiene:
i yi gi ui vi
0 - 179.200 1 0
1 - 17 0 1
2 10.541 3 1 - 10.541
3 5 2 -5 52.706
4 1 1 6 - 63.247
5 2 0
d = - 63.247 + 179.200 = 115.953

PREGUNTA 3)
Calcula cuántos elementos en hexadecimal de h(M) contados desde la izquierda podrá firmar
Alicia con esa clave y justifica ese valor.
Dato: 180.157 = 101011111110111101

SOLUCIÓN 3)
Como el módulo n = 180.157 tiene 18 bits y cada carácter hexadecimal son 4 bits, podrá firmar
sólo los 4 primeros elementos de h(M): 3F8A y sería válido para cualquier hash en tanto el
valor más alto sería FFFF que en decimal es 65.535, un valor menor que n = 180.157. En
cambio si firmase 5 elementos hexadecimales, podría darse el caso que fuese FFFFF =
1.048.575 que lógicamente excede el tamaño de n.
Por lo tanto x = 4 y se firmará 3F8A.

PREGUNTA 4)
Escribe la ecuación con la cual Alicia va a calcular su firma con números, no calcules su
resultado pues se conoce que la firma es s = 3.769.
Datos: 3F = 63; 3F8 = 1.016; 3F8A = 16.266; 3F8A5 = 260.261; 3F8A53 = 4.164.179.

SOLUCIÓN 4)
Como 3F8A = 16.266, para firmar digitalmente Alicia hace este cálculo:
s = h(M)dA mod nA = 16.266115.953 mod 180.157 = 3.769

PREGUNTA 5)
Comprueba que la firma es válida en el extremo receptor de Bernardo.

SOLUCIÓN 5)
Para comprobar la firma s, Bernardo hace la siguiente operación seA mod nA = 3.76917 mod
180.157 = 16.266 y compara ese valor con los primeros x elementos del hash MD5 que calcula
además al mensaje que ha recibido de Alicia.
Si el mensaje es el mismo, el hash será el mismo y los primeros 4 elementos serán 3F8A =
16.266. Como 17 = 10001 = b4b3b2b1b0 mediante el algoritmo de exponenciación rápida,
calcula:
i=4 b4 = 1 x = 12 x 3.769 mod 180.157 x = 3.769
2
i=3 b3 = 0 x = 3.769 mod 180.157 x = 153.115
i=2 b2 = 0 x = 153.1152 mod 180.157 x = 12.501
i=1 b1 = 0 x = 12.5012 mod 180.157 x = 78.882
2
i=0 b0 = 1 x = 78.882 x 3.769 mod 180.157 x = 16.266
Que corresponde a 3F8A

PREGUNTA 6)
Si Alicia además quisiese que el mensaje fuese confidencial para Bernardo que la siguiente
clave pública RSA n = 44.270.357 y e = 131, ¿qué debería hacer? ¿En este caso, cómo lo haría?
Sólo explícalo. Indica cuáles son los primeros tres bloques que cifraría.
Dato: 44.270.357 = 10101000111000001100010101

SOLUCIÓN 6)
Como el módulo n = 44.270.357 tiene 36 bits, al igual que hizo con la firma ahora puede cifrar
bloques de 4 bytes = 32 bits, usando obviamente la clave pública de Bernardo y el módulo n de
Bernardo. Cifraría los siguientes bloques: HOLA + _BER + NI,_ + ...

PREGUNTA 7)
¿Es una buena decisión de Alicia firmar solamente esos x elementos en vez del hash completo?
¿Cuántas colisiones podrían existir?

SOLUCIÓN 7)
Alicia ha hecho lo que ha podido con su clave RSA tan baja porque no puede firmar o cifrar
elementos que sean mayores que el cuerpo de cifra n. Independiente de que su clave RSA
tiene un tamaño ridículo, no es una buena idea firmar sólo una parte del hash, en este caso
3F8A de sólo 16 bits, porque permite una inmensa cantidad de colisiones con funciones MD5
diferentes en las que los cuatro primeros caracteres sean 3F8A, siendo válidos los hash que
van desde 3F8A0000000000000000000000000000 hasta 3F8AFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
es decir 112 bits que pueden tomar los valores 0 ó 1 y, por tanto, 2^118 posibilidades de
colisión pero a partir de mensajes M con y sin sentido.

PREGUNTA 8)
¿Qué es lo que realmente no funciona en este ejemplo de firma con RSA y MD5?

SOLUCIÓN 8)
Lo que aquí no funciona en este ejemplo es que usemos una función hash de 128 bits como es
MD5, aunque sea menos segura que SHA-1, con una clave RSA ridícula de tan sólo 18 bits que
sí es inmensamente insegura porque resulta elemental encontrar los primos secretos p y q y
romper el sistema. Esa clave RSA debería ser como mínimo de 1.024 bits y obviamente en ese
caso sí se firmaría el hash MD5 completo.

Das könnte Ihnen auch gefallen