Reto criptógrafo 2: Prepare to die

Zerokkk

¡Buenas!

A raíz del viejo thread-reto, me propuse mejorar mi encriptador y llevarlo a un nivel superior. En realidad no es más que un elemento extra para un proyecto de fin de trimestre, pero le puse algo más de ímpetu, y finalmente creo haber conseguido un cifrado MUY potente y difícil de descifrar. De hecho, no se me ocurre forma humana de descifrarlo... ¿Me equivocaré?

Pues para eso estamos. Para que me demostréis que me equivoco. Para facilitaros un poco el trabajo, he escogido una fuerza de cifrado de nivel 2 (puedo meter la que quiera, pero el tiempo de procesamiento a partir del 3 se vuelve muy alto) para que no os cueste demasiado y no tengáis que trabajar sobre una cantidad de números ingente.

Pistas (no daré más):

  • Sistema de cifrado con 4 pasos principales que a su vez tienen varios pasos pequeños.
  • Cifrado matemático con clave privada (proporcionada por el user en cada cifrado) y clave pública (inherente al programa, pero se puede cambiar).
  • Cifrado recursivo de fuerza 2.
  • El texto apenas es de una línea, y está escrito en perfecto español.
  • El tiempo de procesamiento es corto, bastante inferior al segundo, y en fuerza 1 es prácticamente instantáneo incluso con textos enormes.
  • Ya en fuerza 1, la irregularidad es muy alta y por tanto, difícil de descifrar. Pero soy un cabrón y os lo pongo más difícil todavía.
  • El código es perfectamente descifrable por el programa.

¡A ello mediavideros!

Código
B

Solo un comentario.
Una cosa es que ahora mismo no sepamos resolverlo. Otra que el cifrado sea MUY potente o haya forma humana de descifrarlo o no (a no ser que te refieras a humana con papel y lápiz, entonces quizás se tarde más que con ordenador). Y te aviso que hay muchas técnicas de criptoanálisis que seguramente no conozcas ni tú ni yo xD.

A no ser claro que se requiera hacer algo como un logaritmo discreto o sea algo tipo el AES, entonces estaríamos hablando de dificultad real xD.

Oye, que a lo mejor me equivoco yo eh xD en ese caso preséntalo a concurso para ser el algoritmo de encriptación del futuro, que para el AES tardaron años :P.

1 1 respuesta
Zerokkk

#2 Oh, eso no lo dudo. Hay técnicas de criptoanálisis increíbles y yo no conozco casi nada sobre el tema, por lo que no dudo en que se pueda conseguir sacar algo de aquí.

En lo que me baso para decir que es complicado, es en que sigue numerosos pasos, y por lo tanto si quieres descifrar una parte tienes que conocer lo que hay arriba. Con el añadido de los niveles de dificultad (el de este es el 2) la dificultad sube de forma exponencial, tanto que si quieres cifrar un simple char puede salirte una cadena de varios cientos de números (varios trillones en valor numérico).

No digo que no se pueda desencriptar, pero... a ver quien es el guapo que lo hace xD.

PD: Intenté ponerlo en kryptópolis pero creo que no se pueden registrar cuentas nuevas :/ ... ahí sí que tenía interés en ponerlo.

1 respuesta
Soltrac

Tío, para poder descrifrar necesitamos ejemplos de cifrados y descifrados....es que es lógico.

Pero te aseguro que se puede romper, pero bueno, ya ese es otro tema, para lo que necesitas estoy seguro que está bien.

Piensa una cosa, los mejores algoritmos de encriptación son conocidos y no por ello son fáciles de romper. No conocer el sistema que sigues no implica que sea seguro.

PD: Si de una sola línea saca TODO eso....a mi no me llama mucho la atención, necesitas mucho espacio para guardar información.

1 2 respuestas
inkiet

Uf este da miedo ver todo ese chorreo de números, si eso es sólo de una línea... Y como dicen por arriba, una cosa es que no seamos nosotros capaces de descifrarlo y otra que realmente sea un buen sistema. Pero bueno, echaré un ojo a ver si veo algo por donde ir tirando del hilo :)

Y por cierto, la seguridad por oscuridad (la seguridad en sí del algoritmo está en que no se conoce el algoritmo) es una chufla xD Lo suyo es que aun sabiendo como funciona perfectamente el algoritmo sea "imposible" descifrar un texto sin la contraseña con la que se cifró.

Así cosas rápidas que veo:
Todos los números delimitados entre los espacios terminan en 0, eso es información redundante, deberías eliminarlos, pues ocupan mucho espacio y no aportan nada.
Lo dos primeros números de cada serie son muy parecidos entre ellos, no se de que, pero pienso que eso es una pista importante xd

2 respuestas
Zerokkk

#4 No ocupa tanto espacio, y el tiempo de procesamiento es aceptable. Y eso hablando del nivel 2. En nivel 1 es muy rápido e igualmente bastante complicado, aunque obviamente no tiene tanta fuerza como el segundo. Donde sí podemos encontrarnos con problemas a la hora de manejar grandes textos es de 3 en adelante, que ahí sí que se vuelve complicado xD. No obstante para textos pequeños y muy importantes es más que suficiente (¿cifrado de claves?).

#5 Lo sé, si eso es obvio xD. Y yo no sé casi nada de criptografía. Pero para las pocas horas de trabajo que tiene esto y el poco conocimiento que poseo sobre la materia, creo que está muy bien.

Sigo diciéndolo... Intentadlo, pero os va a costar xD.

2 respuestas
allmy

Primera deducción, si me la puedes confirmar #6...:

Todos los números comienzan o por 38 - 44 (excepto excepciones) por lo que lo más lógico es que en determinado paso se multiplique algo por algo. ¿Porqué? Por que el rango está muy acotado, y lo más lógico es que si describe letras, fuera un rango mucho más bajo.

Hay unos pocos que empiezan por 6 o por 8 o 9. Lo que me hace pensar que el cifrado es directo sobre la tabla ascii, y no sobre el abeceradio o asi.

1 respuesta
S

#6 No ocupa tanto espacio, solo 300 veces mas que el original.

1 respuesta
Zerokkk

#7 Si fuera una operación directa sobre el ASCII daría risa. Hay muchos pasos intermedios, incluido unos pocos anteriores al que dices, que te saltas al ir tan lejos (pista!).

#8 Cualquier cifrado decente ocupa mucho más que el original xD. Este al no tener operaciones matemáticas demasiado complejas para el equipo, gana en velocidad de cifrado y descifrado, aunque ocupe más que otros más seguros. Además, no importa si tenemos en cuenta que hoy en día la capacidad de almacenamiento es enorme.

#5 Que los números sean parecidos entre ellos es precisamente un grado más de dificultad. Si conseguís cargaros el código, explico el por qué de esto.

#10 Qué pesaditos estamos con las comparaciones, eh? Si pongo esto aquí es para poner un reto, no para decir que mi cifrado es súperchuliguay de la muerte y que es indescifrable y mejor que cualquier otro. Los cojones. Simplemente afirmo que es bastante seguro para ser simple y rápido, y que me gustaría saber su fuerza poniéndolo como reto para los demás.

1 respuesta
Soltrac

Cifrado AES 256 de Hola Mundo con la clave 1234567890

CgAAADpn2TqC3VGqJmIQdPzgAaA=

1 respuesta
S

#9 Pero vamos a ver, tendrás que poner al menos una solución (o muchos textos para diferentes palabras). Si no eso texto puede ser cualquier cosa.

2 respuestas
Zerokkk

#11 Bien, creo que tienes razón y que de hecho no se puede descifrar esto sin tener un texto con el que compararlo. No a menos que tengas mucho tiempo, recursos y conocimientos dedicado a ello.

Así que voy a ser bueno y daré la última "pista" que puedo dar (a menos que directamente os dé el programa, pero en tal caso el reto cambiaría y también se haría algo más fácil).

He sido tan buena persona que hasta he usado la misma contraseña. Así que lo tenéis doblemente fácil:

Cifrado:

Descifrado:

Código completo:

spoiler

Al solucionaros ya varios pasos con sólo daros esta imagen y poniendo la misma contraseña, voy a comprobar (y muy expectante) la fortaleza de mis operaciones de irregulación y otros pasos menores. No están muy trabajadas, pero creo que lo suficiente como para daros aún un poquito de guerra :).

PD: Tarda menos de un milisegundo en hacer el cifrado de un texto de este tamaño en fuerza 2, para los curiosos.

1 respuesta
Kiroushi

Aparte de que no le veo demasiada utilidad... un único texto de entrada y salida lo veo insuficiente como para poder sacar conclusión alguna.

De todas formas hablo desde el conocimiento mínimo sobre el tema, supongo que algún criptógrafo o dedicado al tema podrá sacarte hasta las tripas xD

B

#12 me cago en sos, me había currado un post explicando el motivo por el cual sin mensaje original ni nada no se puede saber nada más xD. Básicamente poner una serie de números y decir "es un mensaje de una línea encriptado" no añade información a no poner nada y decir "adivinad qué mensaje he pensado". Por qué? Porque cualquier mensaje que se nos ocurra se puede encriptar de alguna manera con alguna clave para convertirlo en este.

Esto es lo que se conoce como información y entropía de un mensaje y de un sistema, te animo a que te lo mires, a mí me parece sumamente interesante.

Como ya te han dicho, la idea de un sistema de encriptación es que sea seguro independiente del conocimiento del algoritmo, es decir a nosotros no nos debería aportar información el hecho de conocer el algoritmo si no conocemos la clave. Fíjate que tú estás jugando al revés, que no es que esté mal ni mucho menos y te felicito porque a mí no se me ocurre por dónde empezar, quizás comprobaría si el número de letras y de números coincide, aprendería las técnicas de criptoanálisis que no conozco (xD) y esperaría a que enviaras más mensajes (que al final para descifrar un algoritmo lo que se hace es eso, interceptar mensajes encriptados, intentar acceder a la versión sin encriptar y tal, piensa que un método de encriptación en general se crea para enviar repetidos mensajes).

Pero así de primeras, con dos mensajes y eso yo no veo cómo se sacaría, enhorabuena.

1 respuesta
Zerokkk

#14 Si me parece muy interesante, tengo que ponerme un día a ver estos temas más detenidamente :).

Aquí tenéis otro texto, misma clave:

Texto: Duronman, paquete :3

Cifrado
Buffoncete

#3 Hay algo que no has entendido bien.

Un buen criptosistema sólo tiene como secreto la clave, no el proceso.

Poner una encriptación con 4 pasos para ver si alguien lo resuelve lo veo más que tirar el tiempo, en cambio si pusieras el algoritmo pero dejaras oculta la clave secreta, ganarías adeptos, yo entre ellos.

1 respuesta
Zerokkk

#16 Si el resto están de acuerdo y no se atreven con el reto, publico el programa y el código fuente para que intentéis romper una hipotética clave. Aunque precisamente la fuerza de este sistema es el desconocimiento de su funcionamiento, ya que la clave no puede ser demasiado larga y no puede contener caracteres alfanuméricos (podría implementarlo, eso sí).

Piensa que el código una vez está compilado, no puedes sacar nada en claro de él, por lo que vas a seguir desconociendo el sistema. Si a esto le añades que en cada programa puedes cambiar la clave pública (que también entra en cada proceso de cálculo), además de la privada, pues resulta en un sistema de cifrado decentemente seguro para archivos de texto, bases de datos, etc... He ahí la gracia para el uso comercial y útil del cifrado.

2 respuestas
Kiroushi

#17 Pero... qué ventaja o qué añadido tiene este sistema sobre un AES, Blowfish o similares?

1 respuesta
Zerokkk

#18 Coño, no pretendas que un sistema de cifrado hecho en unas pocas horas y con la dedicación de pensarlo unos pocos días, vaya a tener alguna mejora sobre el AES o cualquier otro sistema de cifrado potente xD.

Así por encima, según lo que sé y lo que veo y teniendo como característica que el código sea privado, sólo sé que éste es rápido de procesar (desconozco el tiempo de procesado del AES), por lo demás obviamente no tiene comparación.

Lo que sí que le veo de positivo es que si no posees el programa o el código de desencriptación, no puedes sacarlo con fuerza bruta ni a patadas, mientras que en el AES si pones una contraseña algo pequeña, sí se puede, pues termina dependiendo únicamente del bruteforce. Cuando la computación cuántica esté a un nivel decente, ya veo yo a todo cristo bruteforceando los AES y sacándolos como mantequilla...

Ya sabes, sólo pretende ser un reto y de paso una prueba para ver cómo de difícil puede volverse descifrar algo así, nada más.

#20 Eso pensando que puedas siquiera tener el programa. A eso me refiero, el programa no sería público o bien variaría según el usuario. No es tan fácil... y por cierto, no tengo muy claro que se pueda invertir ese código, habría que verlo. De hecho creo que el código de los programas también es codificable.

1 respuesta
Kiroushi

#19 Tal vez me equivoque pero el código de encriptación se podrá deconstruir con algo tipo ensamblador y demases para "destripar" su funcionamiento... así que estás en las mismas.

#19 No es cuestión de invertir, es "analizar" los movimientos de bits a nivel de código máquina.

1 respuesta
1 comentario moderado
Zerokkk

#21 Hola soy BLZKZ y estoy aprendiendo a criticar (Y no tengo ni puta idea).

Además de decirte que tienes un reporte por listo, me dignaré a contestar lo que has escrito:

1 - No has entendido la temática del post. Si la primera palabra del título es RETO, será por algo, no? Qué va, seguro que sólo está para adornar. En realidad el autor viene a presentar algún producto chupi-guay de la muerte.

2 - Nunca he dicho que haya creado el sistema de cifrado del futuro, ni mucho menos. Dije que con el desconocimiento del código era muy difícil de descifrar, y vaya, creo que nadie se ha aproximado siquiera a conseguir un resultado. Desde luego que no es la mejor forma de cifrar, pero vamos, ni que hubiera hecho un programa serio para vender o algo.

3 - Aún tras todo esto, afirmar que "no vale nada" cuando ni siquiera sabes cómo funciona ni los resultados que ofrece, es de completo ignorante. No lo voy a comparar con el AES principalmente porque estaríamos comparando sistema de cifrado de unas pocas horas con uno de más de dos años de desarrollo, pero creo que hace su labor de cifrado sencillo perfectamente.

Y por último, guárdate esos ad-hominem y expresiones insultantes entre líneas para otro momento, no sé de qué coño vas con esos aires contra mí como si te hubiera hecho algo.

PD: Si tan malo te parece el cifrado, ¿por qué no averiguas el procedimiento y por tanto la clave, entonces?

2 respuestas
Soltrac

#22 Te lo está explicando.

Porque tu encriptación, al basarse en un algoritmo, puede analizarse por ingenieria inversa, además, de que solo serviría para programas propietarios tuyos (al distribuir la DLL te la romperían).

El juego tuvo su gracia la primera parte porque era sencillo, esto, es un aburrimiento y no demuestra fuerza para nada, a parte, que como te dije, lo veo poco práctico por el tochaco q guarda.

Te han pedido esto como trabajo? Es que no le encuentro nada de sentido por ningún lado.

1 respuesta
E

Ya lo he desencriptado, pero voy a esperar antes a crear la documentación y ayudar a gente a entender mejor el proceso

Ahora edito

1 respuesta
Zerokkk

#24 Ese ekis! Nos has de estar trolleando, aunque espero equivocarme, sería toda una sorpresa ver el cifrado hecho trizas y averiguada la contraseña y método de cifrado.

#23 No ha explicado nada no dicho anteriormente, de hecho se ha saltado muchas debilidades importantes del sistema que sí nombraron otros users antes. Y todo lo ha dicho con un tono poco adecuado.

Lo puse como reto pensando que habría buenos criptógrafos por aquí capaces de sacar algo incluso sólo de de esa cadena, pero veo que no lo hice de la manera correcta.

Nos pidieron un trabajo para fin de trimestre utilizando un poco de todo, y bueno, tenemos un proyecto de gestión bastante trabajado y arreglado listo, y este sistema de cifrado (con fuerza básica, 1) es lo que usaremos para cifrar la información. Es un extra chulo, oye.

Si quieres aquí tienes un ejemplo en fuerza 1, que ocupa bastante menos (misma clave):

codigo

Edit: Con esto lo tenéis como 8 veces más fácil.

BLZKZ

#22 con tu respuesta veo que no entiendes la mía. De hecho no entiendes en qué consiste la encriptación que planteas ni lo que te están respondiendo.

El otro hilo tenia su gracia, este no tiene sentido, pero tu a lo tuyo, y repórtame sin sentido que no me pasará nada. El día que llegues a entender mi respuesta llegarás a entender lo absudo de tu "reto".

Edit: usar sistemas propios de cifrado es una gilipollez como un templo que aportan seguridad -1. Si quieres meterte en el mundillo empieza por leer y no por hacer la primera estupidez que se te ocurra.

1 respuesta
elkaoD

#4 "Tío, para poder descrifrar necesitamos ejemplos de cifrados y descifrados....es que es lógico." y #11 también.

En verdad no. Un algoritmo "weak" como el de #1 se puede romper. Lo que pasa es que aquí ninguno somos criptoanalistas y es un tema muuuuuy jodido.

#17 "precisamente la fuerza de este sistema es el desconocimiento de su funcionamiento"

Como te han dicho eso es seguridad por oscuridad, que ni es seguridad ni es nada.

Ojo, no te estoy echando mierda, sólo comento.

1 respuesta
Zerokkk

#26 La he entendido de sobra, pero no me parecen formas. Ni tampoco este post. Reconozco que quizás me haya pasado poniendo esto como reto, por lo menos de la manera que lo puse.

#27 Me gustaría que algún criptoanalista le echase un ojo. Por curiosidad, más que nada. Tiene algunas funciones interesantes como la irrepetibilidad, irregularidades aleatorias y demás cosas chulas que creo que lo hacen bastante complicado cuando se profundiza al nivel de fuerza 2. Y ardo en curiosidad por saber cómo se descifra eso.

1 respuesta
elkaoD

#28 por el formato del cifrado sospechaba que estabas usando timestamps. Lo de la irrepetibilidad me hace sospechar aún más. ¿Voy bien encaminado?

No creo que vayas a encontrar ningún criptoanalista en MV. Hay pocos, son genios matemáticos y muy bien pagados como para descifrar un cifrado simple de un foro random xD

Si te interesa la criptografía: http://cacr.uwaterloo.ca/hac/

Eso sí, yo si me subes el binario te lo rompo y te demuestro que eso de la seguridad porque el código es cerrado es una ilusión.

2 respuestas
Zerokkk

#29 Me imagino lo del código cerrado. Respecto a lo otro, no, no uso timestamps. La irrepetibilidad la hago con una fórmula matemática, y bastante simple, aunque tuve que buscar una buena para que no hubieran similitudes.

3 respuestas