Ir al contenido principal

Entradas

Mostrando entradas de enero, 2019

Criptografía (CXXVII): Solución Reto 26

El  enunciado del reto de criptografía que formulé en este   post   era el siguiente : " Y como no hay dos sin tres, otro reto en el que se nos viene a recordar que el tamaño sí importa. Supón que interceptas tres criptogramas, que sabes que se corresponden con un mismo texto en claro (m) y que dichos criptogramas han sido enviados a tres personas diferentes, ¿puedes obtener el texto en claro (m)?. Nota: en el archivo asociado al reto se indican los valores en decimal correspondientes al módulo (n) y al exponente público (e) de las respectivas claves de las tres personas y los valores en decimal de los criptogramas remitidos a éstas". Solución : Decía en la primera pista que puse para ayudar a resolver este reto que  como en el enunciado se establece que los tres criptogramas se corresponden con un mismo texto en claro (m1 = m2 = m3 = m) y en el archivo asociado al reto ( reto_26.txt ) vemos que los tres exponentes públicos son iguales a 3 (e1 = e2 = e3 = 3), si los módul

Gimnasia mental (XXXII): los siete ladrones

Siete ladrones roban un cargamento de lingotes de oro y a la hora de repartir el botín a partes iguales sobran 6 lingotes . Como no se ponen de acuerdo en la forma de repartir los lingotes sobrantes, se pelean entre ellos y mueren dos ladrones . Tras realizar de nuevo el reparto entre los supervivientes sobran dos lingotes , por lo que se vuelve a desatar una pelea entre ellos y muere otro ladrón . Ahora sí, el reparto de los lingotes se realiza a partes iguales entre los ladrones que quedan vivos . a) ¿Cuál es el número mínimo de lingotes que han robado los ladrones para que pueda ser cierto el enunciado?. b) ¿Cuál es el siguiente número de lingotes que podría hacer cierto el enunciado?.  Si eres capaz de resolver este problema, sin duda, podrás resolver también este reto de criptografía . Solución :  utilizo lo que he entendido del teorema chino del resto para resolver este problema. Tenemos el siguiente sistema de congruencias lineales simultáneas : X ≡ 6 (mo

Criptografía (CXXVI): Reto 26

Otro reto de dificultad media sobre criptografía , relacionado con el anterior y, por tanto, en el que también se  ve involucrado el criptosistema RSA . Como siempre, se admiten soluciones en forma de comentarios a esta entrada. Pasado un tiempo iré proporcionando pistas para su resolución, un máximo de tres, y posteriormente actualizaré este post con la solución. Reto 26 : "El tamaño sí importa (III)". Y como no hay dos sin tres, otro reto en el que se nos viene a recordar que el tamaño sí importa. Supón que interceptas tres criptogramas, que sabes que se corresponden con un mismo texto en claro (m) y que dichos criptogramas han sido enviados a tres personas diferentes, ¿puedes obtener el texto en claro (m)?. Nota: en el archivo asociado al reto se indican los valores en decimal correspondientes al módulo (n) y al exponente público (e) de las respectivas claves de las tres personas y los valores en decimal de los criptogramas remitidos a éstas. Dificultad : Ti

Criptografía (CXXV): Solución Reto 25

El  enunciado del reto de criptografía que formulé en este   post   era el siguiente : " El primer reto que puse en este blog con este mismo título,  "El tamaño sí importa" , era un reto de esteganografía, pero como en él decía creo que el tamaño importa en muchos ámbitos de nuestra vida, y la criptografía no es una excepción. Dados los archivos asociados al reto, con la clave pública y el criptograma, ¿puedes descifrar este último? ". Solución : En primer lugar creo un script en python para obtener los parámetros de la clave pública ( public_key.pem ) que nos dan como recurso asociado al reto : from Crypto.PublicKey import RSA # Obtener parametros de la clave publica pubkey = open('public_key.pem', 'r') param_pubkey = RSA.importKey(pubkey.read()) print '' print '   n  ...:', param_pubkey.n print '   e  ...:', param_pubkey.e pubkey.close() Tras ejecutar este script veo el módulo (n) y el exponente de la clave

Criptografía (CXXIV): Reto 25

Continúo con un reto fácil sobre criptografía . En esta ocasión se ve involucrado el criptosistema moderno de cifrado asimétrico más utilizado actualmente, RSA . Como siempre, se admiten soluciones en forma de comentarios a esta entrada. Pasado un tiempo iré proporcionando pistas para su resolución, un máximo de tres, y posteriormente actualizaré este post con la solución. Reto 25 : "El tamaño sí importa (II)". El primer reto que puse en este blog con este mismo título, "El tamaño sí importa" , era un reto de esteganografía, pero como en él decía creo que el tamaño importa en muchos ámbitos de nuestra vida, y la criptografía no es una excepción. Dados los archivos asociados al reto, con la clave pública y el criptograma, ¿puedes descifrar este último?. Dificultad : Tipo :           Criptografía. Recursos :    public_key.pem .                     criptograma.enc . ******** 20/01/2019 Pista 1 :     Como habrás observado el exponente de la clave públi

Criptografía (CXXIII): Solución Reto 24

El  enunciado del reto de criptografía que puse en este   post   era el siguiente : " Para descifrar el contenido del archivo asociado al reto y así obtener la solución necesitarás la clave: U0FNVUVM ". Solución :  En la primera pista que puse para ayudar a resolver este reto decía que si  sabías o averiguabas quién es la persona que aparece en la imagen que ilustra este post entonces también sabrías el criptosistema involucrado en este reto. Pues bien, busco con Google imágenes  y obtengo:   " Consulta más probable para esta imagen: Georges Painvin " ,  y la Wikipedia nos cuenta que éste  fue un criptoanalista francés cuyo principal logro fue romper el cifrado ADFGVX utilizado por el ejército alemán durante la Primera Guerra Mundial. Con lo que, como también decía, puedo concluir que el criptosistema involucrado en este reto es el ADFGVX (ya escribí en su día varios posts sobre él en este blog. Ver primero de ellos ). Además, en el post en el que plante

Criptografía (CXXII): Solución Reto backdoor "rsalot"

En este post la  solución a otro de los retos de criptografía de la plataforma backdoor . Este reto tiene el  título  "rsalot"  y mi valoración sobre su  dificultad  es:   ★ ★ ★ ★ ☆ . Su  enunciado  dice lo siguiente: The flag is encrypted using a system that makes use of prime factorization of large numbers. Decrypt the flag from this . Solución:  lo primero que se me ocurrió fue crear un  script en python para obtener  el módulo y el exponente  (n y e, respectivamente) de las 100 claves públicas  que nos dan como recursos asociados al reto. from Crypto.PublicKey import RSA i = 1 print '' print '[+] Obteniendo el modulo (n) y el exponente publico (e) de las 100 claves' while i < 101:     pubkeyi = open(str(i)+'.pem', 'r')     publickeyi = RSA.importKey(pubkeyi.read())     ni = publickeyi.n     ei = publickeyi.e     print ''     print 'n'+str(i)+' ...', ni     print 'e'+str(i)+' ...&

Criptografía (CXXI): Solución Reto backdoor "complex-rsa"

En este post la  solución a uno de los retos de criptografía de backdoorctf17 . Este reto tiene el  título  "complex-rsa"  y mi valoración sobre su  dificultad  es:   ★ ★ ★ ★ ☆ . Su  enunciado  dice lo siguiente: noob heard that single RSA encryption can be cracked sometimes due to bad implementation, so he encrypted the message twice. See if you can break it . Y como recursos asociados al reto nos dan los siguientes: - pubkey1 . - pubkey2 . - flag.enc . Solución:  creo un script en python para obtener  el módulo y el exponente (n y e, respectivamente) de ambas claves públicas . from Crypto.PublicKey import RSA # Obtener parametros de ambas claves publicas print '' print 'pubkey1:' pubkey1 = open('pubkey1', 'r') param_pubkey1 = RSA.importKey(pubkey1.read()) n1 = param_pubkey1.n e1 = param_pubkey1.e print '   n1  ...:', n1 print '   e1  ...:', e1 pubkey1.close() print '' print 'pubkey