Reto criptográfico (con premio)

LOc0

Visto que se ha puesto de moda esto de los retos criptográficos...

Algoritmo -> http://pastebin.mozilla.org/2217441

Encriptador/desencriptador -> http://hackvalue.org/chorradas/cifrador/

Mensaje a descifrar:

juggyeq+polstg.:j+tbgfd.wyv+fjb.olpbfh,tqfe,vkbzngds

Pista 1 xD -> La longitud del mensaje cifrado y descifrado es la misma.

Premio para el primero que lo consiga descifrar (límite hasta el domingo 17 de marzo de 2013 13:37) -> http://www.zotac.com/es/z-zone/promotion/ac-3-game-pack.html

¡A jugar!

Salu2 ;)

Nota: en los mensajes cifrados los espacios se cambian por el signo '+' para no confundir cuando coinciden varios espacios seguidos.

7
Merkury

#1 Tengo una duda, la key es un número entero siempre?

1 respuesta
LOc0

#2

La clave es un conjunto de enteros (negativos tb valen).

Ejemplos de claves:

(1,2,3,4)
(1,3,2,4)
(1,2,3,4,5,6,7,8)
(1,10,-45,12,-1)

Si el código no está claro, no es más que un cifrado de sustitución polialfabético. ANTES de cifrar cada letra, el alfabeto se desplaza hacia derecha o izquierda el número de posiciones que marque la clave (y cuando se llega al final de la clave se empieza por el principio de ésta otra vez).

En cuanto a las pasadas se refiere a si una vez cifrado el mensaje se vuelve a cifrar (con la misma clave).

Salu2 ;)

2 respuestas
elkaoD

Oh my god no sé ni por dónde empezar a atacar.

1 2 respuestas
LOc0

#4 y su manejo de la ironía me mata xD

Salu2 ;)

1 respuesta
elkaoD

#5 nononono, ¡va en serio! El criptoanálisis siempre me ha parecido difícil que te cagas. Lo voy a intentar pero pufff de primeras lo veo negro.

B

#3 jeje es un Vigenere pues, qué coincidencia que justo estaba diciendo que no sabría descifrar ni ese xDD. Supongo que lo entiendo bien, esos números se hacen modulo la longitud del alfabeto no? Es decir -4 = 27 (o lo que sea contando los guiones y esas cosas)

2 respuestas
Merkury

Yo lo tengo ahí destripado #3 #4 y haciendo pruebas y sinceramente entiendo el funcionamiento, pero no veo como sacar la frase original sin la clave XD

1 respuesta
elkaoD

#7 creo que no es Vigenère porque la clave va rotando acumulando.

#8 same :P

1 respuesta
Merkury

Mañana le meteré otro rato a ver si cae.

De todas formas #1 el domingo si no lo hemos sacado, nos explicas como o que? :D

1 respuesta
LOc0

#7
Claro, -4 + 30 = 26 (elemento 27 si se empieza a contar en 0)

#9 Yo creo que es un Vigenere descafeinado xD

#10 Jajajaja ¿pero qué coño voy a explicar? Si lo he puesto es precisamente para ver si podemos romperlo entre todos porque siempre me ha pasado como a elkaoD. Me fascina el criptoanálisis pero lo veo algo reservado a genios rollo el de una Mente maravillosa xD En resumen, se me ocurren métodos para atacarlo pero no pasan de fuerza bruta y un diccionario (pista-2 el mensaje está en español).

Salu2 ;)

1 respuesta
Merkury

#11 Pues ya somos tres, es ponerse delante de esto y sentirme un inútil.

De todas formas yo pensaba que tu sabías romperlo XD

1 respuesta
LOc0

#12
Según la Wikipedia:

Los Estados confederados de América, por ejemplo, utilizaron un disco de cifrado para implementar el cifrado Vigenère durante la Guerra Civil Estadounidense. Los mensajes confederados fueron poco secretos, ya que los miembros de la Unión solían descifrar los mensajes.

No me creo que en pleno 2013 no tengamos las herramientas y conocimientos necesarios en MV para follarnos mi cifrador pufero xD

Salu2 ;)

2 respuestas
Merkury

#13 Jajajajajaj bueno mañana le echare dos horas o así a ver que pasa.

B

#13 pero tú conoces la clave? Espero que sea lo suficientemente corta como para que eso no se convierta en un código de Vernam xD que entonces es imposible de romper.

Voy a echarle ahora un ratejo, digo cómo lo voy a atacar por si alguien mejor que yo quiere intentarlo también: Método de Kasiski

1 respuesta
LOc0

#15

Si, lo he cifrado yo ;)

A ver, pista 3, la clave tiene menos elementos que letras el mensaje, pero de todas formas, no sé hasta qué punto importa la longitud de la clave en este cifrado...

Y sí, Kasiski rules ;)

Piro a sobar.

¡Suerte camaradas!

Salu2 ;)

2 respuestas
c0b4c

Mola

B

#16 bueno, importa porque si la clave es igual de larga que el mensaje da lo mismo probar claves que probar mensajes xD

Edito: Kasiski no me sirve de mucho, solo se repite un dígrafo: ol y me sale que la clave tiene longitud divisor de 23, es decir 23 xD, con lo cual no puedo analizar nada...

elkaoD

Yo creo que necesitamos textos más largos para poder atacar, ¿no?

S

#16 De hecho importan bastante, para acotar las soluciones. Pero no obstante estoy convencido de que este problema tiene infinitas soluciones. O lo que es lo mismo, hay infinitas claves que forman una frase con ese mensaje. Aquí unas de ejemplo:

20,-4,7,-23,10,4,-11,11,-3,-6,-2,4,1,14,-7,10,1,-12,-3,18,-23,20,-7,-4,-3,12,-17,16,-22,20,-2,9,-1,
-24,26,-18,16,-9,9,-15,4,-13,-3,22,-18,-2,15,5,-13,-5,15,-10

1,6,-6,27,-17,15,1,-1,1,-9,5,-19,4,8,4,-5,11,-4,-21,4,12,10,2,-14,3,10,-11,-9,8,-11,0,8,14,0,
-13,6,-19,24,2,-4,-7,3,-5,9,2,-3,1,6,-22,-1,8

Estas claves tienen la misma longitud que el mensaje original, que las quieres mas cortas? pues quitar el ultimo elemento es bastante sencillo. Ir quitando mas se ira complicando pero en cualquier caso van a seguir habiendo muchas soluciones. Tu mensaje original desencriptado esta entre miles (o cientos de miles) de posibles mensajes que con cierta clave dan ese resultado, imposible de saber cual es el tuyo.

He hecho una pequeña funcion para sacar las claves para que de como resultado la frase que uno quiera:

var abc = 'abcdefghijklmnopqrstuvwxyz+,.:abcdefghijklmnopqrstuvwxyz+,.:';
var x=0;

function reverse(strfrom,strto) {
  var codes = [];
  for(var i=0;i<strfrom.length;i++){
  	var res = codeChar(strfrom[i],strto[i])
  	x += res;
    codes.push(res);
  }
  return codes.join(',');
}

function codeChar(fromChar,toChar){
  var i = abc.indexOf(fromChar);
  var abcsliced = abc.slice(i);
  return abcsliced.indexOf(toChar)-x;
}
console.log(reverse('aaaaaaaaaaaaaaaaamevoyasobaraaaaaaaaaaaaaaaaaaaaaaaa','juggyeq+polstg.:j+tbgfd.wyv+fjb.olpbfh,tqfe,vkbzngds'));
2 2 respuestas
LOc0

#20 +1

Es el problema de este tipo de cifradores no aleatorios, que hay muchos mensajes "válidos" que dan el mismo resultado cifrado.

De todas formas, veo que con un mensaje sin contexto y usando una clave lo bastante larga no es tan mal cifrado como pensaba...

Lo dejo si queréis hasta el domingo, pero por mi, #20 -> WIN

Salu2 ;)

1 respuesta
elkaoD

#21 yo insisto en #19. Con mensajes tan cortos no hay contexto alguno. Estos cifrados se rompen porque normalmente se mandan muchos mensajes o mensajes largos donde se puede atacar de forma estadística.

2 respuestas
LOc0

#22

Está claro ;) Además, cuantos más mensajes cifrados (con la misma clave) tengas más puedes acotar el mensaje original porque cada vez es más difícil encontrar una clave que produzca las mismas parejas claro/cifrado.

Yo lo veo como el típico solver de sudokus por backtraking. Cuantos más mensajes cifrados con la misma clave tienes, más "restricciones" tienes y puedes ir "podando" el aŕbol de búsqueda y quitando "soluciones" imposibles.

Salu2 ;)

S

#22 El tamaño del mensaje no va a hacer ninguna diferencia, siempre vas a tener muchas formas de formar ese mensaje, lo que es necesario son muchos mensajes encriptados con la misma clave (cuantos mas mejor), o el mismo mensaje con claves diferentes.
Es parecido al problema del otro post, donde solo te ponía un mensaje encriptado (y por lo tanto con infinitas soluciones)

1 respuesta
B

#24 tienes razón pero con un mensaje de ponle 500 carácteres y asumiendo que la contraseña no tendrá más de 20 números puedes empezar a hacer estadística y sacar algo. Si no, es como ya dije en #15 asumir que estás delante de un cifrado Vernam que es el único que es totalmente seguro.

S

Si claro, cuanto mas pequeña sea la clave con respecto al texto menos soluciones hay. Pero nada te garantiza que solo vaya a haber una solución, pero con muchos mensajes si que puedes conseguir tener la certeza de tener la solución correcta.

LOc0

Bueno, casi se me pasa ;)

spoiler

Salu2 ;)

Usuarios habituales