Criptoanalizar ¿Por dónde empezar?

Iniciado por vrael, 31 Mayo 2012, 19:04 PM

0 Miembros y 1 Visitante están viendo este tema.

vrael

Bueno, voy al tema. Estoy estudiando una asignatura de Seguridad, donde he visto diferentes cifrados (simétrico, asimétrico, DES, RSA, ElGamal, DSA...) y algunos tipos de ataque para intentar romperlos. Ahora bien. Todo el criptoanálisis del que nos han hablado, son en prácticas preparadas expresamente, por ejemplo, teniendo parte del texto en claro, o con elección de primos no seguros y claves parejas, etc...

Mi problema es cuando sales del ecosistema "académico" y te encuentras con un cifrado que no sabes ni que algoritmo han utilizado y me pregunto ¿"por donde le meto mano"?

Voy a poner un caso concreto, que me parece el más interesante. Tengo una cookie que de todas las de un sito web, es la única que está cifrada. Vale, pista 1 (creo), debe de tratarse por tanto de algo importante ¿una cookie de sesión, tal vez?

Esto me hace pensar que casi seguro se trate entonces de un cifrado simético o una función hash.

Vale, ahora otra pista, tiene 128 caracteres, es decir, 1024 bits. Esto me hace descartar las funciones hash (md5 sha-1, etc...). Luego, tiene que ser algún tipo de cirado simétrico.

Y hasta aquí llego como criptólogo novato. Porque ya no sé cuál de todos los múltiples algoritmos de cifrado simétrico podría ser.

Solo me queda especular que la tecnología del lado del servidor es PHP, y que por tanto, es muy probable que utilicen la clase "mycrypt", y que aunque soporta muchos algoritmos de cifrado, puede que sea DES o TripleDES, por lo extendido de este algoritmo.

Pero de todas formas, no tengo ni idea de por donde avanzar ahora. En clase siempre es: "Tienes tal mensaje cifrado con tal algoritmo y tal tal tal..."

¿Cómo prosigo a partir de aquí?

Muchas gracias.

lapras

#1
El camino que sigues es bueno, ir descartando. La verdad es que no siempre puedes descartar tantos como para quedarte con uno. Sin embargo, cuando te quedas con con 7 u 8 por ejemplo, lo que puedes hacer es intentar descifrar asumiendo que se ha usado el algoritmo más fácil de criptoanalizar(sobre todo los algoritmos inyectivos, osea que dado un mensaje cifrado solo existe un posible descirado, por que suelen ser mas eficientes de calcular). Si no se consigue con ninguno de estos algoritmos "faciles de des cifrar", puedes pasar a los difíciles (no inyectivo(aunque no necesariamente)) como md5 etc...
El descifrado de un md5 puede ser muy difícil ya que solo se puede con diccionarios y fuerza bruta. Y aun así no tienes certeza de que sea el algoritmo usado(siempre es posible que el algoritmo que se ha usado no lo conoces o que sea un algoritmo secreto), ni de que habiendo sido exitoso el descifrado del mensaje hayas obtenido el mensaje original por que varios mensajes al encriptarlos pueden tener una misma imagen.
En todo caso si durante el proceso llegas a algo que tiene sentido(por ejemplo usas un diccionario y te da que el mensaje descifrado es "soy un tio molon") puedes estar suguro al 99.99999% de que has descifrado el mensaje y conoces el algoritmo que se ha usado, pero sin embargo si al descifrar un mensaje que es por ejemplo un correo electrónico llegas a algo como "g5Tujnd7%6"@3tººªx" puedes estar seguro al 0.001% de que eso no es el mensaje ya que no es lo que se diga muy frecuente en un correo electrónico. De todas maneras depende del contexto.
Quiero decir, hay veces que un mensaje puedes descifrarlo y otras veces no...