Criptografia

EVEN RSA CAN BE BROKEN??? - picoCTF

La descripcion nos dice lo siguiente:

“Este servicio te proporciona una bandera (flag) encriptada. ¿Puedes desencriptarla solo con N y e?” y nos pide conectarnos usando netcat, tambien nos da el codigo fuente del programa

Imagen del ctf

El enunciado sugiere que:

• Se usa RSA

• El reto omite la clave privada (d)

• Se debe romper la seguridad con solo N, e y el ciphertext

¿Qué es RSA?

RSA es un algoritmo de criptografía asimétrica inventado en 1977 por Rivest, Shamir y Adleman (de ahí el nombre R–S–A).

¿Qué significa criptografía asimétrica?

Usa dos claves diferentes:

• Una clave pública para cifrar

• Una clave privada para descifrar

Descargamos el codigo fuente que contiene la siguiente informacion:

Imagen del ctf

Vemos que el mensaje se cifra de la siguiente manera:

Imagen del ctf

y se generaba con:

Imagen del ctf

Esto nos confirmó que si podíamos factorizar N, podíamos obtener d y descifrar c.

Usamos la pagina

https://factordb.com/

para ver si es factoriable:

N = 2 × q → esto no debería pasar nunca en RSA

Eso nos dio acceso a p = 2 y q = N // 2

Construimos el script :

Imagen del ctf

tenemos:

Imagen del ctf

usando la formula:

m = pow(c, d, N)

Y luego lo convertimos de número a texto con:

long_to_bytes(m)

Ejecutando el script tenemos:

Imagen del ctf

Una vez obtenida la flag lo ponemos en el desafio:

Imagen del ctf

y Resuelto!!!!!!