Este es mi primer post, así que no sé si exactamente hago bien con colocar esta pregunta en este foro.
Bien, el caso es que me gustaría saber si un posible método de codificación tiene o no posible solución (puede ser desencriptado y cómo).
A continuación os explico el método:
Supongamos que tenemos el siguiente texto:
"Este texto sera codificado".
Para codificarlo lo primero que tenemos que hacer es dividirlo en grupos de 3 o menos caracteres. Quedaría de la siguiente manera:
Est.e.tex.to.ser.a.cod.ifi.cad.o
Ahora, para cada grupo de 3 o menos letras podemos diferenciar éstas según su posición como: iniciales, medias y finales.
Bien ahora pasamos a codificar:
Dispondremos 3 tablas (una para letras iniciales, otra para medias y otra para finales). Cada tabla contendrá cada una de las 27 letras del alfabeto español; y cada letra podrá ser codificada por al menos 2 números, no tienen por qué ser elegidos aleatoriamente (supondría a la larga un 50% de posibilidad para cada número), puede ser utilizado en diferentes proporciones (80% uno y 20% otro, 70% uno y 30% otro...). Estas son las tablas:
INICIALES MEDIAS FINALES ========== ========== ========= A 15 34 A 07 32 A 20 44 B 19 51 B 14 53 B 15 40 C 12 49 C 02 56 C 06 31 D 02 30 D 22 40 D 19 39 E 07 39 E 06 52 E 14 55 F 17 38 F 16 30 F 08 49 G 11 33 G 15 35 G 23 30 H 03 45 H 21 41 H 01 43 I 20 52 I 01 48 I 22 38 J 24 37 J 27 43 J 07 42 K 09 47 K 17 31 K 21 52 L 01 50 L 11 39 L 09 56 M 18 40 M 24 44 M 25 32 Ñ 16 56 Ñ 23 36 N 03 41 N 27 31 N 04 42 Ñ 13 47 O 08 41 O 12 49 O 26 34 P 14 36 P 18 54 P 16 50 Q 25 42 Q 10 34 Q 10 37 R 10 32 R 03 46 R 17 48 S 04 46 S 25 38 S 11 35 T 26 53 T 13 50 T 02 53 U 21 43 U 19 55 U 18 33 V 13 55 V 05 45 V 05 54 W 22 48 W 09 51 W 24 45 X 06 35 X 20 47 X 04 51 Y 23 54 Y 08 33 Y 27 36 Z 05 44 Z 16 37 Z 12 46
(Espero que se vean bien las tablas, sino copiarlas y editarlas en el bloc de notas).
De esta manera el texto codificado sería el siguiente:
E s t . e . t e x . t o . s e r . a . c o d . i f i . 07 38 02. 39. 26 13 51. 53 12. 46 06 17. 34. 12 49 39. 52 30 38.
c a d . o 12 32 19.08
*Notar que en vez de números podrían ser combinaciones de 2 o más letras, con lo que el resultado sería algo parecido a palabras!
¿A alguien se le ocurre cómo poder desencriptar el código codificado si desconocemos de las tablas y sabemos que la elección de uno de los dos números de cada tabla no ha sido de forma aleatoria (con lo que el uso de cada uno no es del 50% exacto)?
Agradecería mucho posibles soluciones.
Gracias de antemano!
Forma para cifrar
Mono17 Junio 2005 - 3:09am
Se me ocurrió que encíma del teclado se ponga un papel con el abecedario y que calse con cada una de las letras:
q w e r t y u i o p a s d f g h j k l ñ z x c v b n m teclado
a b c d e f g h i j k l m n ñ o p q r s t u v w x y z papel
así se podría escribir más facil y para descifrar se busca la letra
Ñqsxrhñ rt Dhfh.
Kriptojuegos
Mono12 Junio 2005 - 2:47pm
Quiero saber por qué ya no hay Kriptojuegos, porque así practico más para descifrar y después de cada Kriptojuegos había un "Charlando metodos" como el Celosía,Cesar,etc.en el que explicaba de como se descifra con algunos métodos.
criptografia basica
chesare16 Marzo 2005 - 11:18pm
igual que barretm98a1 Quisiera que me informen en donde puedo acceder a información para poder aprender bien criptografia desde lo más básico en adelante.
Gracias
Recomendación
Crusader17 Marzo 2005 - 1:57am
Yo te recomendaría para empezar el libro de Jorge Ramió. Te lo puedes descargar como presentaciones Power Point o en formato pdf en:
http://www.criptored.upm.es/guiateoria/gt_m001a.htm
Un saludo
Crusader
Pues empezaría por...
Fernando Acero16 Marzo 2005 - 11:44pm
Yo empezaría con el libro de Manuel Lucena, que te puedes descargar de la red. Es asequible, toca bastantes palos y está en castellano cañí.
"Copyleft 2005 Fernando Acero Martín. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved".
criptografia básica
barretm98a110 Marzo 2005 - 9:31pm
Quisiera que me informen en donde puedo acceder a información para poder aprender bien criptografia desde lo más básico en adelante.
Cualquier cosa me pueden responder:aprende_criptografia@yahoo.com.ar
Hola a tod@s ! ! !
latin012 Marzo 2005 - 5:59am
Como ya se habran dado cuenta, soy nuevo y me gustaria hacer amistades para que compartieramos informacion sobre metodos de criptografia, ahora mismo no cuento con ningun documento de cripto, pero tengo uno que otro de informatica, cualquier documento que yo tenga y vea que le sea util a alguien o necesite, estare complacido de ayudar.
Saludos.
Hola a tod@s ! ! !
latin012 Marzo 2005 - 5:58am
Como ya se habran dado cuenta, soy nuevo y me gustaria hacer amistades para que compartieramos informacion sobre metodos de criptografia, ahora mismo no cuento con ninguno de cripto, pero tengo uno que otro de informatica, cualquier documento que yo tenga y vea que le sea util a alguien o necesite, estare complacido de ayudar.
Saludos.
Hola a tod@s ! ! !
latin012 Marzo 2005 - 5:51am
Como ya se habran dado cuenta, soy nuevo y me gustaria que compartieramos informacion sobre criptografia, cualquier documento que yo tenga y vea que le sea util a alguien o necesite, estare complacido de ayudar
¿Cómo saber cuan predecible es un texto?
camufling5 Enero 2005 - 12:49am
Buenas.
Ya sé que finalmente el post actual no tiene ya demasiado interés (lógico, siempre repitiendo lo mismo por mi parte: que creo que es difícil desencriptarlo, que si es más dificil en forma de texto porque se asemejan a palabras y no son más que sílabas, blablabla... jeje).
No pasa nada. Lo que sí que agradecería enormemente es que alguien pudiera indicarme cómo obtener la "predictibilidad" de un determinado texto. Ojo, no estoy indicando la entropía sino cojiendo una letra al azar del texto saber cual es la probabilidad de que acierte con la siguiente, sabiendo cual es la frecuencia relativa de cada letra.
Pondré un ejemplo.
Supongamos el texto: "abcaccbba".
Veamos dada una letra cual es la siguiente y cuantas veces se da este caso:
aa = 1; ba = 1; ca = 1;
ab = 1; bb = 1; cb = 1;
ac = 1; bc = 1; cc = 1;
*Observar que el último y el primer caracter se consideran como consecutivos.
Bien, es evidente que si sabemos que la primera letra es una 'a' (por ejemplo), adivinar cual es la segunda representa un 33 % de probabilidad. Ya que como vemos en la tabla, si la primera es una 'a' la segunda puede ser una 'a', 'b', o 'c' con la misma probabilidad. Con lo que como comento: la probabilidad es: 100 / 3 = 33.3 %.
¿Pero alguien sabe como obtener este valor? Me estoy referiendo a textos que no son tan sencillos como el ejemplo que he puesto, sino que podría analizar perfectamente, por ejemplo, El Quijote. Con lo que tendríamos una matriz de 27x27 (desde la 'a' hasta la 'z').
Agradecería mucho saber como poder obtenerlo. Gracias.
¡Ah!, por cierto. Si nadie comenta nada más (a parte de la predicitibilidad, claro está :P) daré por acabado el post, y prometo no hacerme más "pesao" con el tema, jeje. Y gracias por todo ;)
Venga, saludos!
predecir texto
madmax1235 Abril 2005 - 2:23pm
para la predicción de textos se puede utilizar un autómata predictivo, lo cual lo puedes estudiar de cualquier página que contenga teoría de compiladores, es un poco complicado y requiere algo de práctica, ni mas está decir que se trata de algo avanzado y requiere ciertos conocimientos de teoría de lenguaje
Buenas, Muchas gracias mad
camufling9 Abril 2005 - 9:19pm
Buenas,
Muchas gracias madmax123 ;) pensaba que no iba a encontrar respuesta después de tanto tiempo publicado, jeje.
Ahora lo siguiente que haré es investigar sobre el tema. Si alguien está interesado ya le comentaré como ha ido todo :P
Ahora sí, respuesta a anteriores posts!
camufling16 Diciembre 2004 - 10:31pm
Buenas a todos.
Por fin he tenido un rato para poder escribir y comentar (como dije anteayer) sobre vuestras respuestas.
En cuanto a las estadísticas de JoseLo:
=======================================
Una vez más te felicito por todo el estudio que has realizado sobre el texto, ya que al tratarse simplemente de eso: un simple texto, y codificado por un método que ya expongo cual es, pues pierde toda la gracia ;) Y está claro, comprendo que pueda parecer una tontería realizar el análisis (y sinceramente, no lo digo por ningún comentario de nadie, todo lo contrario he visto buena disposición al análisis), pues como digo, ya comento el algoritmo de encriptación, pero estaba interesado en oír ideas y sugerencias sobre posibles ataques al texto.
Gracias, JoseLo, por la explicación del método para la obtención de los diferentes átomos de los que el texto se compone. Me ha quedado bien claro ;) Pero por otra parte, ¿Es un método conocido?, o bien ¿Ha sido de tu ocurrencia?
En respuesta a Igor21:
======================
Comentabas en el post titulado: "Trabajo fino" lo siguiente:
"Esta situación es un poco rara porque no se hasta que punto podemos utilizar todo lo que sabemos pero si podemos usar TODO lo que sabemos, Camufling dijo que las silabas de dos letras serían consonante+vocal y las de tres consonante+vocal+consonante (Camufling corrígeme si no lo dijiste y/o no lo has cumplido)"
Sí, es cierto. Dije que el método que propondría consistiría cada sílaba en consonante+vocal o consonante+vocal+consonante.
De esta manera me evitaba posibles problemas (diferente división de sílabas) a la hora de decodificar. No obstante, considero que es posible crear cada una de las sílabas con otro orden que no sea el de C+V+C, pues esto complicaría la identificación de cada uno de los grupos de sílabas que se han utilizado para un posible interceptor del mensaje, pues no sería tan evidente como este ejemplo.
De todas formas, ya lo digo: sólo ha sido para simplificar un poco el análisis y la generación de las sílabas.
También comentabas:
"Una vez establecida la lista de átomos, el paso siguiente es hacer el analisis de frecuencia según la posición en la molécula. Después hay que buscar combinaciones de frecuencias que sumadas den la frecuencia de cada letra (en cada posición)."
Estoy de acuerdo contigo. El primer paso, es evidentemente el de localizar y descubrir qué atomos son usados en cada una de las posiciones. A continuación habría que obtener la frecuencia de cada uno para cada una de las posiciones de la "molécula" (inicial, media y final). Y acto seguido realizar un estudio de frecuencia.
No obstante, volvemos a lo de siempre. Pero realmente es posible realizar un estudio de frecuencia??!! Es verdad que la suma de dos frecuencias tienen que dar un valor similar a la frecuencia de cada letra. Pero si el texto consta de (por ejemplo) 27 letras diferentes, obtendremos 54 (27 x 2) grupos de dos o tres letras para cada letra a codificar de cada una de las tres posiciones. Si sólo existieran 27 grupos para 27 letras sería muy sencillo, pero pensad que con 54 grupos existen 1431 combinaciones posibles!!! (aunque algunas de ellas serían fácilmente descartables). Y es más, existen letras cuya frecuencia es muy parecida, sólo se diferencian por algunos decimales; e incluso la frecuencia de las mismas varía en función del texto a analizar.
Perdonad que sea tan insistente, pero ¿todo el mundo opina que un análisis de frecuencia sería fácil de realizar comentado lo anterior? ¿O es que soy un poco pesimista y lo veo complicado? :P
Por último me comentabas en el post titulado: "Esconder vs. proteger"
"es legítimo darse cuenta que este texto es "raro" porque es demasiado pronunciable para ser fruto de algo minimamente aleatorio."
De acuerdo, el texto es "raro" puesto que es demasiado pronunciable. Esta ha sido mi intención, que así lo fuera, pues si no hubiese obtado por hacer una clara diferencia entre consonante+vocal[+consonante] no se hubiera asemejado a palabras!! Sería muy probable que en ocasiones aparecieran grupos de 4 o más consonantes juntas, y ¿quien puede pensar que ante grupos de 4 o más consonantes juntas nos encontremos con un texto dividido por palabras?, ¿el hecho de una fácil "legibilidad" del texto codificado no haría pensar a la persona que está delante de un texto cuyas "palabras" sólo son palabras y no sílabas?, es más: ¿no podría hacerla pensar que se encuentra delante de una lengua que desconoce: bien porque es agena a él, bien porque está extinguida, o bien por que es un lenguage artificial?!! Esto incrementaría la dificultad del análisis del texto.
¿Alguien me comparte mi idea? ¿O soy un incomprendido? :P
Tambíen comentas:
"Camufling no nos ha dicho cuantas sílabas diferentes debería haber en un texto castellano de la misma longitud pero seguro que son más de 54 (yo solo sé las sílabas del hawaiando que es el que tiene menos y tiene como 250) que es el número que necesita para hacer que cada átomo represente a tres letras según la posición y así complicar el analisis de frecuencia".
Sí, es cierto que en este texto pueden diferenciarse pocas sílabas. Pero mi intención fue de hacerlo razonablemente fácil para que alguien pudiese llegar a algún resultado concreto. Si nuestra intención es complicar el análisis de frecuencia debemos incrementar el número de sílabas que codificarían a cada letra (esto ya lo comenté cuando expuse el algoritmo). Es por este motivo que, aunque el texto codificado sea aparentemente fácil de decodificar, con el incremento de sílabas sería mucho más complicado decodificarlo.
En respuesta a Ipsa:
====================
Comentabas en un post anterior:
"En primer lugar el número de homófonos no es proporcional a la frecuencia de aparición de las letras. Fijate por ejemplo en los dos tripletes "tex" y "ser", la e se codificaría igual(En el cifrado creo que hay un error)."
Sí, ha sido un error. La 'e' de "tex" debería ser codificada como 06 ó bien 52.
Tambíen comentas:
" El sistema es parecido al método de cinta movil o 'Método oficial de guerra' que se utilizó por el Ejército y los diferentes Ministerios desde finales del XIX hasta principios de los cuarenta"
Gracias por el apunte, desconocía este método. Buscaré información al respecto ;)
Por último me gustaría hacer una propuesta, haber si alguien puede aportar alguna idea. Es la siguiente:
Bien comenta Igor21 que el texto es algo "raro" contiene palabras muy legibles. ¿Pero cuan legibles? Me gustaría si alguien podría exponer algún algoritmo sobre como comparar la "legibilidad" (o predictibilidad) de diferentes textos.
Es decir supongamos el texto imaginario:
"denano nadido nenodi dodoni nadeno" (jeje, que mal suena)
Y luego el texto:
"ejemplo de una frase en castellano".
Bien, es evidente que el primer texto es mas "predecible" (dada una letra podemos deducir más fácilmente cual será la que le sigue) que no el segundo. ¿Cómo podríamos obtener ese valor? Daros cuenta que no os estoy preguntando por la diferente entropía de los textos, sino el grado de "predectibilidad".
De este modo, si hicieramos el análisis de predectibilidad del texto que he codificado obtendríamos un valor mucho más elevado que un texto en castellano, pues hacemos uso una y otra vez de las mismas estructuras (sílabas), las cuales no son demasiadas. ¡¡Éste sería el veradero indicador de que el texto no está formado por palabras sino sílabas codificadas con apariencia de palabras!!
Bueno, espero que alguien pueda aportar alguna idea a esto de la "predictibilidad".
Una vez más, gracias por todo, y espero no hacerme muy pesado con el tema.
Saludos!
Comentarios sobre los posts
camufling14 Diciembre 2004 - 9:38pm
Buenas!
Siento no haber podido contestar antes, pero no he podido.
Hoy tampoco a penas dispongo de tiempo, únicamente escribo para decir que mañana contestaré y comentaré de forma detallada los posts de aquellos que habéis contestado y si alguno otro más lo hace.
Sólo es eso, como ya dije: aunque tarde en contestar siempre lo hago ;)
Saludos.
camufling
Chapela14 Diciembre 2004 - 12:34am
Me habeis dejado alucinado, como me gustaria esta al tanto de lo que haceis y entenderlo, ¡y como trabajais! tratare de seguiros para enterarme de algo.
Podia alguien enviarme alguna direccion donde empezar a conocer la encriptacion. Gracias
Aprender sobre criptografia
ipsa14 Diciembre 2004 - 3:59pm
Hola, en primer lugar indicanos que aspecto de la criptografía te interesa (criptografía clásica, moderna, historia de la criptología, ..) y te podremos dar una idea. En cuanto a cifrado clásico, Un artículo introductorio al cifrado clásico utilizado en la guerra civil lo tienes en http://es.geocities.com/gce_euzkadi/paginas/cifra.html. Tienes además el boletín Enigma del profesor Arturo Quirantes. En cuanto a criptografía moderna el libro de Manuel Lucena es una buena referencia. Un saludo
Analisis inicial.
ipsa10 Diciembre 2004 - 3:45pm
Hola, no soy muy experto en el tema, pero en principio se me ocurren un par de vulnerabilidades. En primer lugar el número de homófonos no es proporcional a la frecuencia de aparición de las letras. Fijate por ejemplo en los dos tripletes "tex" y "ser", la e se codificaría igual(En el cifrado creo que hay un error). Por otra parte el hecho de que aparezcan los puntos ya te da una idea de que se puedan utilizar más de una tabla de homófonos. El sistema es parecido al método de cinta movil o "Método oficial de guerra" que se utilizó por el Ejército y los diferentes Ministerios desde finales del XIX hasta principios de los cuarenta. Un saludo.
Esconder vs. proteger
igor219 Diciembre 2004 - 11:04pm
Esto tendría que haber salido publicado debajo de "Casi al mismo tiempo" pero lo he hecho mal :(
JoseLo : como tu eres el que está currando me parece bien que hagas el caso general :D pero creo que es legítimo darse cuenta que este texto es "raro" porque es demasiado pronunciable para ser fruto de algo minimamente aleatorio. Además todas las sílabas de la primera iteración lo cumplen. Quizás no falten átomos (27x2=54). Creo que hemos de ser sinceros con Camufling y decirle que el hecho que a él le parece que proteje al mensaje (que parezcan palabras en rumano o en piamontés) es la principal debilidad ya que revela la separación de grupos, induce a contar las sílabas además y obliga a forzar la estructura de los átomos haciendo un trabajo posible como dices tú, aún más fácil. Camufling no nos ha dicho cuantas sílabas diferentes debería haber en un texto castellano de la misma longitud pero seguro que son más de 54 (yo solo sé las sílabas del hawaiando que es el que tiene menos y tiene como 250) que es el número que necesita para hacer que cada átomo represente a tres letras según la posición y así complicar el analisis de frecuencia. Es como una caja fuerte, si está escondida es mejor pero si para esconderla la has de hacer más débil, mejor que esté en medio del comedor porque al final estará sola contra el ladrón y se tendrá que defender.
Algunos "átomos" más :)
JoseLo9 Diciembre 2004 - 8:44pm
Para empezar explico un poco el método que uso.
Sabemos que los bloques separados por espacios deben de estar compuestos por bloques de longitudes 2 y 3 (lo que llamo 'átomos'), y sabemos que todos los bloques deben descomponerse en grupos de 1,2 y 3 átomos.
Las descomposiciones de los bloques de longitud 2,3,4 y 9 determinan el conjunto inicial de átomos porque sólo se pueden descomponer de una única manera, pero no determinan todos los átomos.
La primera iteración consiste en obtener un conjunto (A_0) de grupos de 2 y 3 letras a partir de los grupos de 2,3,4 y 9 letras y a partir de ese conjunto eliminar todos los bloques, de cualquier longitud, que se puedan descomponer de forma única en sub-bloques que pertenezcan a A_0.
Los bloques que quedan son los que aparecen en el listado del comentario anterior, y como se puede ver admiten varias descomposiciones en las que el número de elementos de A_0 es diferente y en las que hay posibles átomos que no pertenecen a A_0. Digo posibles porque no todos los grupos de 2 y 3 letras serán elementos de 'A' (llamo 'A' al conjunto real de átomos)
Nuestro objetivo, antes de ponernos a hacer ninguna estadística, es obtener 'A'. :)
Para ello tomo la lista de átomos que aparece en las descomposiciones incompletas, y a cada uno de ellos le asigno una tupla con tres valores enteros. El primer valor es el número de descomposiciones que ese átomo completaría en caso de pertenecer a 'A'. Aquí me refiero a que el número de signos '-' sea cero. El segundo valor es el número de descomposiciones en las que el número de signos '-' sería uno en caso de que ese átomo se incluyera en 'A'. El tercer valor es lo mismo que en los casos anteriores con un número de '-' igual a dos.
No sé si esto ha quedado claro, pero un ejemplo puede aclararlo: tomemos el átomo 'val', su inclusión en 'A' haría que se completasen 5 descomposiciones, que 3 de ellas quedasen marcadas con sólo un '-' y que una quedase marcada con dos '-'. La tupla asociada a ese átomo sería (5,3,1).
Bien, ya tenemos la lista de átomos, cada uno de ellos con su tupla:
La lista de arriba está ordenada con el siguiente criterio: dadas las tuplas x=(x0,x1,x2) e y=(y0,y1,y2), tenemos
Dicho sea de paso, este es el criterio habitual para comparar tuplas en Python :)
El proceso iterativo que sigo a partir de aquí es simple: retiro el primer átomo de la lista, se lo añado a A_0 y obtengo A_1, repito el cáculo de la lista y estoy como al principio de este paso. En cada paso retiramos el primer elemento {a} de la lista y obtenemos el conjunto A_{i+1} = A_{i} + {a}. Es importante señalar que la lista debe ser recalculada cada vez.
Bueno, siguiendo este procedimiento (que no es perfecto) obtengo los siguientes nuevos elementos: 'ba', 'ro', 'po', 'val', 'ler', 'dij', 'men', 'go', 'sri'.
Hay una duda con 'sri' cuya alternativa es 'ri' ya que ambos completan el grupo 'desrile'={('de','sri','le'),('des','ri','le')} y en ambos casos la descomposición es igualmente válida. :/
Vale. "Pa otro rato más". :D
--
Eso es una cuestión de opinión :)
Trabajo fino
igor219 Diciembre 2004 - 8:41pm
Yo también te felicito. Esta situación es un poco rara porque no se hasta que punto podemos utilizar todo lo que sabemos pero si podemos usar TODO lo que sabemos, Camufling dijo que las silabas de dos letras serían consonante+vocal y las de tres consonante+vocal+consonante (Camufling corrígeme si no lo dijiste y/o no lo has cumplido).
Una vez establecida la lista de átomos, el paso siguiente es hacer el analisis de frecuencia según la posición en la molécula. Después hay que buscar combinaciones de frecuencias que sumadas den la frecuencia de cada letra (en cada posición).
Casi al mismo tiempo.
JoseLo9 Diciembre 2004 - 8:59pm
Hemos posteado casi al mismo tiempo. :)
La verdad es que con el "tochazo" de comentario que acabo de poner no había visto el tuyo. :D
Lo de consonante-vocal-consonante no lo he tenido en cuenta porque la idea es criptoanalizar el mensaje con la mínima info extra posible.
Es más, la longitud de los átomos es algo que se puede deducir/establecer a partir de la longitud de los grupos. Es complicado, pero se puede.
--
Eso es una cuestón de opinión :)
Estadísticas.. O casi.
JoseLo8 Diciembre 2004 - 5:21am
--
Eso es una cuestón de opinión :)
Comentario sobre las estadísticas
camufling8 Diciembre 2004 - 6:16pm
Buenas!
Ante todo dar las gracias a JoseLo por el esfuerzo a la hora de obtener las estadísticas ;) (Y a aquellos que lo hayan intentado pero no hayan llegado a una conclusión aparente). De verdad.
Creo que te habrá llevado bastante tiempo, pero creo que los resultados son muy buenos y acertados. A continuación los comentaré y a ver si puedes resolverme alguna duda.
La primera indicación que apuntas es la siguiente:
Número de grupos= 2879
Número de grupos distintos= 1348
Si obtenemos el porcentaje del número de grupos distintos respecto del número de grupos obtendremos un porcentage del: 46.822 %. Lo que quiere decir, que el 46.822% de las supuestas "palabras" son diferentes.
Ahora, hagamos lo mismo con el inicio de "El Quijote". Para ello cogeremos las primeras 2879 palabras y compararemos los resultados. De esta manera tenemos:
Número de grupos= 2879
Número de grupos distintos= 1006
Con lo que el porcentage del número de grupos distintos respecto del número de grupos es: 34.943%.
Finalmente, dividiremos "El Quijote" en sílabas, y realizaremos el mismo análisis con las 2879 primeras sílabas. Los resultados son los siguientes:
Número de grupos= 2879
Número de grupos distintos= 399.
Ahora el porcentage es: 13.859%.
Veamos los tres resultados en una tabla:
Texto Codificado El Quijote El Quijote
(NO es el Quijote) (Sin codificar) (Sílabas)
=====================================================================
Porcentage: 46.822 % 34.943 % 13.859 %
Conclusiones:
Cabe resaltar el "elevado" porcentage del texto codificado, el cual es comparable a "El Quijote" pero no a éste dividido en sílabas! Este dato haría pensar (y despistaría) a cualquier desencriptador que tuviese el texto delante suyo que éste se compone de palabras y no de sílabas o pequeños grupos de letras! ¿Alguien opina lo contrario?
El valor elevado lo conseguimos con obtener varias representaciones para una misma letra dependiendo de la posición de ésta en el texto original. De ahí la gracia de este algoritmo. Pues el resultado es aparentemente un texto formado por palabras que con esta estadística no revelaría su verdadera estructura (grupos de letras) !!
En cuanto a la tabla con el número de apariciones de cada grupo:
Bien, ahora mismo no recuerdo exactamente cuales eran las leyes Zipf (supongo que las conoceréis). Sería interesante que alguien pudiese comparar si cumple la primera ley de Zipf (creo recordar que es ésta), y por lo tanto se asemeja a las estadísticas del número de apariciones de otro texto (por ejemplo el Quijote).
Por otra parte, como bien dices: la longitudes de los "átomos" son de 2 y 3 letras; mientras que las "moléculas" están compuestas por 1, 2 o 3 átomos.
Dices que: "Existen 54 átomos que se pueden determinar en una primera iteración". Qué método usas (o cómo haces) para obtener estos átomos?? Qué es eso de la iteración? Podrías explicarlo?? ;)
Finalmente, comentar que digamos el "método" que usas para encontrar el resto de los "átomos" me a parecido original. Generalmente la división acertada es aquella que contiene más párticulas "+". Claro, esto tiene su sentido, ya que es más probable que la división sea acertada (y por lo tanto tendremos un nuevo átomo) cuando podamos dividir la molécula en mayor número de átomos conocidos.
Bien, creo que esto era todo lo que quería comentar.
Una vez más resalto el esfuerzo que te habrá supuesto realizar estas estadísticas, pero creo que este método puede llegar a ser útil. Tiempo al tiempo... jeje
Agradecería que alguien pudiese aportar algún dato más o hacer algun que otro comentario.
Gracias.
Estadísticas
camufling7 Diciembre 2004 - 5:40pm
Buenas!
¿Alguien puede aportar algunas estadísticas?
¿O puede conseguir descifrarlo? Espero ideas ;)
Saludos.
¿Has formateado bien el texto?
JoseLo6 Diciembre 2004 - 3:15am
Porque cortando de la página obtengo uno con 2390 palabras y cortando del código fuente otro con 2468
El problema es la separación entre palabras y el '\n'
Y así no hay manera, claro. :/
--
Eso es una cuestón de opinión :)
A mí me dan 2879 palabras
camufling6 Diciembre 2004 - 1:12pm
Hola Joselo.
He realizado el recuento de palabras cortando de la página y cortando del código fuente y obtengo el mismo valor: 2879 palabras.
Es más, puedes hacer un recuento fácil de las palabras multiplicando el número de líneas-1 por 7. Ya que cada línea contiene exactamente 7 palabras salvo la última que tiene 2. Con lo que el resultado coincide con el número de palabras que había obtenido: 411 lineas * 7 palabras + 2 palabras = 2879 palabras !!
Es posible que sea culpa del editor que usas, que no cuente de forma correcta las palabras. Prueba de usar un editor llamado EditPlus (aunque es una versión de prueba). Éste realiza el recuento de forma correcta.
Alguien me puede confirmar que también obtiene 2879 palabras??
Gracias!
En un tercer recuento 2787 ...
JoseLo6 Diciembre 2004 - 2:13pm
.. y no uso un editor. Corto del código html y pego a una shell de Python.
Luego hago:
....
Bueno, ahora hago lo mismo cortando de la página y haciendo:
Ya está más claro.
Dentro de un rato algunas estadísticas :)
--
Eso es una cuestón de opinión :)
Ejemplo de texto codificado!!
camufling5 Diciembre 2004 - 1:23am
Buenas!
Aquí estoy de nuevo. Como ya avanzaba creo recordar que ayer, a continuación dejaré un texto codificado con el método propuesto. Como podréis observar, se trata de un texto algo más extenso que el anterior por lo que posiblemente se pueden aplicar los mencionados análisis de frecuencia.
Me gustaría ver que opináis sobre el texto y sería interesante que alguien intentara descifrarlo, de este modo podría explicarnos el método que ha empleado para ello.
Claro está que hay un texto cifrado, no me he inventado el contenido! a ver que os parece. También es cierto que una vez habiendo os explicado el método de encriptación os será mucho más fácil resolverlo que no habiéndooslo explicado, pues estoy seguro que a poca gente se le pasaría por la cabeza pensar que lo que se encuentra ante él no son palabras sino grupos de letras!
El texto es el siguiente:
"doscommo da casanta maremer di torasdi radi
romoda sesadi resrecder sansinmer reder cabdoda rasoman
ser dessona tesana teser todparsa mancilo par
rasmaci tanlece terama da rasan sadocon dosancon
raman dessanta conpermer di semanron conroda sandodi
race leci destander sansinlo delesin der tensacom
persamer tarasmo na tedodi cabmocom parbal mansan
conrelo recda commodi saparsan cabmansan mannos recmannos
mer taresda di cabcabder recdoman sanmandi teser
tocabnos cimana tencomdi tacomce taser despergun cinoci
rasdi cabcabcom resdoman tamannos teser tanmanron selo
te doscomdi tader cabmanma manperdi dessinmer nos
der parrada man tanmanman reradi parcomgun rasreda
nos racider masan dadsadi mancida parser colo
delo comda perna dadmodi resmader tanrasman lo
reder tarassan rosmer tacomsan tana desrile mosalo
san romoser desmoce comsace manpergun manreca raresron
na comcabda remer cabrata rala der sedomo
mannos perna tanleman tasagun concider recser conperna
dopada parna par toda soledi lo recomdi
dosraman cadi tomoda parrecder nos dosmanco manlesan
telo commodi soleta resrena nos toparman capersin
lo remandi roscici tanmandi recda demangun cadi
tocomdi lo daddoce rasdi capabal menleca desdi
recomdi parlepar desdi reradi comrastes resmale parmaci
remannos remandi tacile desperta consanlo nos par
recomdi mandesba manmale radi teser manrecmo manrecda
parcomnos romoser redena tolesan resanna sedonos par
tarasin lo racasa mer comsace cabmanma tanresda
desinser man maperna dimangun na sanle lecommo
caman toleron recpargun lo raron tancimer serasmo
dosmer cabrasan comrasmo marasce tada cabrasan tole
tocomce resna sadoba cacada remannos cabcabna tedoman
demandi par remer tancile todoman lo rocabser
toser resander tolo rena cateda deconle rasce
todmoda romoser camosan romoser mansan rena consangun
resroder socomta resperna doscomcom resder radesgun na
socomda dessoman na percomgun resperder sinlesan semoron
roslela mansan tamansin cadi reledi rassoman desnos
todsasan resnos reder sedola tecomca raresna rocabda
rada tosadi manciser parda delo radesgun catander
tadola tosasan casinlo tanmanman romoser reder dadcabdi
resmader demer dessanmos desredos dessoder comsasan lo
noledi tader manron tedomo ciranlo serasman comsamo
consanmer racagun lo pocabser leparsan recmosin na
perlo romoda toser persanna tolo rena desrecser
deconbal rassan tancibal dadrasman desranser derecda sodola
lo recabser mimer romoda toda posaco ser
conce soramo mer mansan relenos dosmanco canos
teda tomodi cimader toser cabmilo cablo tocomdi
descabsan raron dosodi mancicon caman rocabser rasan
serasdi recda mancana di tancomron dessoman desdi
restena resana decomdi romoda tanrace mansan rasan
tamansin canos cabmantes lo dadcomda comrecmer comlo
dessanron mandosla lo sasagun descisin careca lo
tanparci sesato lo na tanparder cabrasman ser
doslecom cina conperlo di pardosan rossanlo sandodi
racamo parsagun dodi cabrasan perdogun sader tocabte
dadrassan consinder par mansan cadeser dadlesan recda
remannos cabcabna rerasnos dessanta conremer di lerasman
sesader ce tanleman na casincon racigun resman
cabradi desdi talesan teparten resconle perdodi teser
doscommo manman cabmanma lo mancagun lo cabciras
didosan cabcici dirassan remandi dosmoda commandi par
teser commodi dadrasca consander nos doslesan recda
tancomman ramada la romoda comcomda rasan remannos
casander sasasin rasdi lo racagun der doteman
der rena momoda partader desmoda perna comsasan
tesanos cabmanman teleman raron todogun desron carecman
madosan na comsasan manpernos docica manconser la
tanraman mancalo commoda deder tamanca lo par
sanlo leda cabmansan todmoce recda sanlesin na
par tarasin mer mandi reder dosmoma caperle
teleca romoser commanron remandi na par rossama
ser mer perna toledi rascile rossasan desda
teser sinrasin cadi leparce temosin na pardomos
doranser sansinder pana desron tanparda tedoron consangun
ciranlo serasla lesamo consanmer perledi derasa canos
commansan dosmoser comradi cabmocom resrasman sinmandi teser
cabcomman deser remoma paresda resperser gotele denoci
ressoron da permandi mosada remandi par comci
descites dorele der pomoda parronna todcabda saronna
par recmoda damoman na comcomcom rasanos romoda
mandi mancagun mer tanresser micabsan tada der
consan separser didomo cirecmer romoda toser camalo
totenna menlecom na desron desmana tencomman teda
torassin reslo taresder tecabmo ciman mandessa rasdi
sarassan rossanmer derasdi rocabda tancomman manmale dessan
todcider comrasdi racamo parsasa desdi tanraman conce
remanmo mer rada desremo reslesan mer toser
cabmansan sinlo rapergun dopermos radi rena reraspar
manpersin na romoser serapar na pardoten racile
saranos le doslemo ser cona tomomos dosmandi
despolo di rasan conperder demanmo dosser resanci
sesamer leder par rasdesmo macina persanser milo
na rena tancabser sarecder cabsanna concasa parleron
recda racagun na casona tesana consan sarama
mancilo par tanparca reslo consan somanmo lo
teda remoma tenciser tanleman der comrasmo desman
lemodi parmanba desdi masan tandosin caronmer recser
tanlesan cabmance romoser comlegun resdesten desmada la
leci doslema tenresda par conce dessanra manresta
conser cabcabder perdadras cirasman na terace teser
radesba racina man rena tocomros desperder par
soresmer comdota maparman cabmance rena permodi terasda
commanron comci cablema cipermer comci tomanca racagun
na cabrada desmabal dosan comci soracom parser
redomo doslo te comci manremos rapersin ressinmer
dosmanta desman somodi lo rada dosdoman tocomsan
lo na rocable race comda dossadi lo
mancagun na tedoma caresin der der tesadi
soradi resconle dosan terasda cablema resperna derecser
cada mocabna ron recdodi tancabser di romoser
comser nomocom lo parrasba condodi tamer teser
leci cablesan lelesan cabparmer respersa manresla rasnomer
desmada saconna tedoron rassoco manrecmer teser comci
parrama racile der par tedoron tanmoce talo
der rocabda comser manpermo caranle sanlecom der
dijlo lemante tomonos resmalo parrasnos tanmansan tesalo
manron respersa raciba rasanna recmer dosda sancommo
ressinlo tocabpar perrasco rasnos recda desdadci le
par mansan tobal tanlegun sasader rosramo da
conce recsana teda roscider ce parrassan rasrancom
parser rasan tole dicabcon manpergun conca dossamo
ser teda dadle descigun da consan carestes
na tanmansin racimer comder teser comrassin conmamo
resrace par manremo manpersin le momansan manron
tancomnos resmansan radi rocabda toda caciman cacagun
parlela doce der consan mocile todosan race
tole valrasco mandi romole racimer momance serasla
taparman cada tensaser ce reledi todlemo consansa
casinser di ranmoda dosda raranba perrasna temer
tanleman na manda tocomda pardosin resranle raperca
doranser tanmanman recmansan teda topardi tolo socabca
ser cabmansan terassan caresma da morama mer
reledi manperbal rosrander tasamo cadi socomda casoman
desdi terasda recdonos cabrasan rasmale temer delo
tanleman ramale racaser ce tedoron tamanca lo
cabsanna parcomdi cada dosdoman tocomsan mer perrasta
lo rasan ranmole mansan dijder momanma raperdi
casoder rena cabmoman cimandi restana sin na
tedodi sodola tacomla leser ser resperdi tasata
casinmer tanmanla mancagun der cabmansan tasasan conlela
na mansan commodi tancida roscabsan tacomnos comras
respergun manciron domaras tamanman tanreslo comsata consamer
recda radesgun ser torasin mer persanlo parlecom
na dijlo rasan manron todrace temer teser
tole dessanma der reder cabmoron sona romoda
nolecom resna cabmanma manrecbal telo dadledi cada
respergun manregun caman sodosin resciron ser na
teparmer di tosadi raresle cabraman recsader delo
raremo dopergun sacomcom der tancomron dessoman desdi
tanleman der ralerba parrasnos desman teparta delema
manpergun da dadle caciman rapaser derecle tosaser
sanreclo cabcabna detamer consan recsana comda todparco
careslo san tosadi raslosmer di tanmanman cabledi
macomron ressinna sin comracom parda masan resara
salo lelesan tamer casoman bal cadadci manron
resacom salo par race conreder teda commodi
tanleta cireder di rapermo raspergun parda mace
rosparta despergun da rosresbal talo teser cabmansan
taresle moparlo ce valdoman tecomca manresna masan
leleron tomer recda tecomcon resca manron romoda
cabrama resrassan dana tosadi raciser sada daddole
tedoci di terasdi teda rada resperdi tacomce
sinda rasan romoda dosmocom ser redobal telo
lecabdi radesgun parraro desdi dadle maperle molo
sodosan comlema resrassan talo todmoda dosleron relela
maperna todmanman dadna dadmodi resmader da tacomsan
tocomta desaten resconna talece commocom resama da
romoda tencomdi taledi ser der cabrasan tarasce
manman raron rosresder desinle docalo dossama delo
teser teraron rasman recrasron sadopar socilo toddogun
na camoce sanlo perder dosda raremo raspergun
parlesin mer tandoman mer lele permanta parmer
ralerba sarasnos caman relo rocabda comparda derecmer
rasan tole cabraman desronmer san relo romoser
rassata mer cabrasan todmodi caranda sanrecser rasan
dadbal cablecom raronder mandesgun dopar comdota concilo
recser doslemo manla consan tosadi mancida saser
tacomda par tacomsan tocomla desdijle persanlo commer
ranmoser demer doscompar desce rassasin mer rasrecla
mer comdoma ralosna derecda reradi delemo cisinlo
di taleron par tacomsan tedodi rosleman parlesin
doman ranmoda desda radesmos conconres desman manron
tancibal torasman camamer parsinda reradi desresmo caperta
mandeda nos teparman dessan momance tosata lo
cabcabcom cirasman tamandi reradi rasloslo di teda
recomta parsama desdi par recsaman cidosbal raresin
docada desron comrasros doman tosadi manresbal cabrala
recsana par raron comdoros dola reder tadosan
tecider teser leci tanmancom parser cabcile carecras
parna raron parrama racilo caron resanda micomman
na racagun da tancabce talo recser comras
deleman parcommo resmance cabcomron relo tanmanla conce
respernos tacomsan tada par tedodi tanmoda di
ralerde dessanna detamer conce commodi tansaman lo
tamanman delo der cabrata raman rada dossaron
lo recser comras tesanos cabmoman lelo raron
dosdoman tolesan lo perdota lo casancab maperlo
di tedoba manpersin resdosan tadodi recda rena
casoder tesana par temannos lo taciser nos
tancomnos tamanla mandi teser perder rosresna delosna
recser remandi todcider ressanda di romoser todmanman
tolera casan cabparman cabmoron lo dessanman rasinda
recmanman terasron dosmancab cala reda mancamo conmade
casoder ce race mace tanreslo todmosan reclo
comparda manremo cilo terasdi socabser nos cabmansan
tasasan malo teser parrasmo rasciman rala tamansin
der desdeda tocomsan resna tamansin der resrecder
resana par reder tolepar doman tancomman tada
teda radesgun da tanlele di cabsander comsamo
lo tanleman na rena tocabdi resmader pardoda
cinobal dodesder camoce sanmer dosser rassasin lo
conce tosadi mancida parda rasan romoda somoser
recna respernos tanparman desresma da dele conperlo
sanbal marelo par noda dosasin lo talece
tamandi romoser tanmoser temer tedomo resman rocabda
remandi dosser dosasin mer tamansin donos tamanca
rasdi tesaco lo manpergun rasremo radi respergun
manciman maranba resrasce temanda ser maremer teser
reranos parcomcom dessinder dedodi na ranmoser demer
doscomcom manpardi dosasin lo desmosan raron tosadi
raresser parda teser reder tomansan talese na
rada tosanos racida saser recda reder dadrace
tacomros der ralermo recomma lo raron tomonos
resmamer cabmansan dessaman ser teda mangogun parleros
radina romoda tosadi raciser parda radi racada
sanlo recsaco da tomoman tomoman mer manron
cablema tanrasdi respermer par remoda rosmer tancilo
comsata consalo cabmansan conperder manpergun rasperna cabsamer
ce topardi tarasla cimandi der mandesda topardi
mancida parser romoser lemanron lo dobalser san
tanmanla cabledi conleron ressinna sin remannos romoda
cabmanma lo colo capersin casan tesader par
demanmo dosser tacider di raron roslesan casinlo
tanmanman rapersa parda tencida mencomdi te tanrasros
cacamo dessanser di radi tamansin der conperder
dosparnos tamanla resna conperna nosanos tamanman resna
tocabpar despergun resnoras na tandola mer talece
serasman recleca racina cabmanma lo caron tancomman
manmaser man cipermo parrasle pasanser radi raron
cabcomnos mer ranmoser mance relo tolenos poresna
rosmandi lo recser mancana di cabraman teparron
redoman cadi teser dadrace tacomros cadi rocabser
repartes resrecder san rada dosrala resronmer derecser
terasron secomron reser rasan manron todmansan reclo
terasda momona ron leda dosleda rena reder
dessoder teparder dosmocom mer doscommo da cona
dadcabmos dosmandi despolo di romoda tesata mer
dadmomos dosmandi despolo nos tomomo dosranos leparta
reradi masan tomansan cacagun racile mer polema
dodeslo dadrasan descasa racile lo rocabda der
relo rocabser tancomman ramada rasinbal todsamo lo
der commodi ralerba manperdi cadi consan comdoros
dola cabmance permannos tenparser sandodi romoser doslera
resna recser rerasta desla der comci dosparco
lo caron cabmoder ron terasdi nodoman rasinlo
desron toraman resman mance tanrasce na teda
commodi toleron tecomsin radi doscomdi tana cadadci
bal tamansin mer todmoda tenmoser delo tanrasman
mer radi manron cabledi mer rocabser mancasa
ser dossatan lo romoda tanmanman relo romoda
comser serasla der dadledi dessinda percomsan taser
recdocom cilo teda comrasla teser reder tansada
ron terasron recsana tensanlo comle demer mancina
raron dadsanos tomer tesader tensanmer mansan tandoman
comrasan na comcomra mantamer man recda romoser
comcabdi pasaser derasnos mancasa dessona san race
tanmansin rala teser reradi sadoron resnobal docamer
di par recda romoda comci mocomdi tasaron
relo leda doslecom resder tacina decaten doresma
casinlo race resnoron radesle na parrasci desalo
na marelo nos cabcabna sanrecmer di palesan
recmanron manreslo di cabcomma cacider reccomnos commote
rasnos rasan reder sesaca na teda tanrasman
recsamo resmansan romoda manranba parrasce teparser parna
desron dessoder desinlo sanleman rena cabledi na
teser lemodi tanlesin pardonos par maperder demanmo
dosser recda dimoda sedodi comcomsan talo mansan
romoser permandi dadmansan dirasdi leda dosleron recomcom
cace mansan raron cabmanman lo par mance
manron tancabce tamer par dosmanman na rasan
romoser ressoder ce na cabrates manredi caman
lo doscomcom reslesan momanma manperdi catalo rada
dadsadi mancida saser tancabdi resrasman dosan pocabser
milo desda torace descagun mancibal lo leledes
madona parrasan reder resnoron mandesbal na par
der mancasa da romole mancilo na desdadci
manron sanlo comser tesamo ser romoda demer
tedoco desreslo san todcina ressanser cabmansan separsin
der terasdi tancabser nos teser mancagun der
desrecman rasconle tecomsin leda tocomla cabmina parrasan
permandi tencomsan recsaca dodi par leci resrenos
tasata casinlo man momance rasanron rasdi dessinmer
desinda delo leda lecomcom ser der remandi
tancilo pocabsan temandi tacomron serasdi recomdi rededer
tolenos pardosin conlosda parmance manron tomansan descagun
raresbal mer der mandesmo rasrocom samandi teda
reder cinoron mancale der camosan ranmoda reccomsan
rasan tansada reledi parcabbal delenos lemancom parda
manron cabmansan cableto lo tanrasros rassan teda
terasan recser decommo ser reder cabcomdi cablesin
der ranmoda terasnos somoda di teser radesgun
pardoron releman comda teser tanrasros na rasan
tanrasse na todmanman dadna manda sasana cabmici
mandelo romoda sesada deser na tenlese caman
remandi tomoman rasdi teser racagun der catander
tesana tanrasla lo respergun raciman conranba reslo
ciranba caconle manpergun da raron tomodi resmamer
par raron tosanos manresser parser desnoras desressin
desmannos cabmansan tasasan malo cabmansan rosresna ce
commanman dena manron parcomcom destader san romoda
sinmansin lo rescina tanmanman tancomman tarasdi recsamo
doslo remer cabmoder ron comsata consalo descabal
comci dossadi taraman resder relenos rosdosan sindodi
teser reradi cabrasan tamanman demandi comser mancamo
careca dessanbal dacomman doce recdoron cabcibal torassan
teda tancomsin sadodi der dossaco donos par
teda dossaco dodi der desaser sinmandi leda
pardoten rescile mer cabrasan dosmanla parmanla rasan
perlenos relela rosledi demanmo dosdodi teser serasda
dessinder tanrasman lo remer rocabda tolesan tasaser
deda tocomdi separcon der comci dadrasma rascile
der mandi rocabda sinmansin rasdi permannos despomer
di sinleron deramo noser cabmanma lo rena
mansan rancabser comda momansan commoma mer leda
valrasce tencile redena man recabmo mandi der
sincina sedodi teser reledi parmansa desnos sedosan
sinlesan canos recser rena cinoda radesle na
leser rasbalser cabmanma mer conperna mancaba manmale
ser teda tomodi resmana ralersa sacomros der
par conrelo nos cablesan sinmandi percabta masoman
radi par carecser parresna recmanla radi romoda
leser tanrasman moparra mance na respergun racicon
desdelo di rasan relenos parleten desnona di
recdoron dessaman da lemansan remandi tomansan dirasnos
remandi cabmona redodi dadmoser parreclo nos taleron
sedodi comsace dosleda releman comser tanciser tancomla
dessinmer nos soleman der tancida comrassan taleman
comda rasan rada tacile tenmosan desda teda
teparmer di persama tansalo di teser tamansin
na cabcabron sona separda dedoce desmosan recrasron
tancabman micomgun doresle mer der ciranba rarecman
desman leci tosadi racibal cabmanman tesana cablesan
sincomsan telo manron tosadi raciser parda remannos
cabsaman momosan comtena deteser di comser tosaman
descilo ce conperlo nos na doteman donos
cabrasan tomoser comrecman cadi teser cipermo sadosin
masanbal tecomsin leraron lo manron samanma mancimer
romoser tanleman ramabal na sesacon caranser derecser
tancida domaci tanlesin lo cabmance perna deleman
salemo cimansan teda perder dossadi sinmanman resder
sociser rosmoce talo momansan despernos resdosin desca
desron romoser reder doslera resna pardoten manresle
telo par terasmo resdi rocabda mancaser tanmanman
tadosan talo comda parrasba resrecser descabce terassan
tacilo teda sincida di nomanman desnos momanma
manperdi descider comparsan todleron sinna dessanta maperna
somanman romoda tancida mosadi desranda derecser radesgun
na sanmanmo dosser ranos perna teser dimoda
sedonos comlesan tamer par desconna tencomce teser
teleman perledi rasmares lo mansan raron pardoron
rasco teser reder dessona recparna na romoser
recsadi talesan mosader comser manpermo condosan tacina
raron dadmance descasa racile lo na conperder
rerasta conna par todosin cider radesmo descader
tandoman lo romoda nocommo rapardi casinlo sansinser
secomle nos momansan conperder deramo dosda cabmanma
lo racasa der racagun casadi terasco dessinlo
recser rena tocomsan mer teda recsalo nos
ralermo relema cacimer san tamansin rasdi desron
sedoman romoda manron parmanma racimer rerascon capergun
caresin docada recser comci racamos despomer par
tamanma despersin lo manron tenmanman temansan casona
desinlo sanlera na raron nomanta desla tanlela
na tesaman resnobal sacaser der reder tanmoda
sarecder na temansan teser serapar na doparman
mandesder tolela cacole redemer comna tocabdi resmana
na doparman manda roscina desinda manron serasla
tecomsin raresmer tosadi racida parser manda tosanos
manresda parser teda remandi romoda semoda redijser
ce desron tocabsan recmer recdodi tanmoser di
teser tomoser sarecmer nos te comcomcom mansan
relo romoser mannos tomanman resla rasan manron
sorasmos casinlo te mancagun mer recsamo resdosan
telo terasdi despana parrasmo resmer recda reder
separdi sinder terasron mandesba despersa catalo redocab
mer par teser remannos delo todosan dodi
destelo sansagun donos soledi tamanla mannos raron
valsada dereclo dacabma tencomcom na par doslemo
cina moresras disaman perledi tanmoser parrecna di
cabrama mer lebal conperder tocomsan lo tanmansin
racilo comna tanmocab decomnos da tanmanman desciman
despermo caciron desnos teda lecabdi romole cabparmer
di perder resanci valparna molele na rasan
sincabman pasamer derasdi desronmer tacomsan temer reradi
separsin sasalo di teser reledi serasce tacomsan
cadi par teser cabcabder detamer race momoder
desinmer rena remodi teser masan sadoron desranba
canolo ressanras dadparsan dessoder tanmanla conce resrenos
tacomce sinser tarasin lo raron norala resronmer
derecda rocabda terasdi teser raderon desnos comser
terasdi cabmocom parsana tanlenos dessinmer rada tancile
daddola tomantes raregun lo teser racagun mapamer
man ralermo perlema mer raron redota lo
mancagun der remanmo mer mancagun na reramo
lo parraspo resrecle mancilo san remannos tancomdi
tamanman ranos te destele dacomman rassan teser
demoser semer perna percabma tenciser par leser
canoman contenna parmansan desdeman mansinser teraman tedoron
dosmanta desman".
A ver si alguien se atreve ;)
Saludos a todos!
Vas por mal camino
igor213 Diciembre 2004 - 10:18pm
En cuanto a lo de "NO INIDCAR ESTA SEPARACION AL ENVIAR EL MENSAJE." como explico más arriba es MUY necesária para el desencriptador conocer cual es la separación de los bloques, pues sinó como iba a saber en que tabla mirar?!
Si son dos abuelas que se comunican los regalos de Navidad de sus nietos comunes para no repetirse entonces tienes razón. Pero si el que escribiera el mensaje fuera un topo francés en el ejercito prusiano creo que no estaría nada de acuerdo contigo. El descifrador legítimo tiene todo el tiempo del mundo y puede probar las diferentes opciones. Prefiere gastar un poco de tiempo extra que leer en el periódico que en Berlín han fusilado a un espía. El sistema tal como lo pones con tus últimas aclaraciones es una mera suma de tres monoalfabetos con homofonos y SI que puede ser criptoanalizado por analisis de frecuencia y contacto. No es fácil pero todo el rato sabes el terreno que pisas y que números forman parte de la misma tabla lo cual es de lo más conveniente.
Bien, el hecho de que se use un número cada dos veces y otro solamente cada vez es simplemente para mostrar un ejemplo de cómo poder hacer para que no sea de forma aleatoria con lo que las frecuencias de los dos números sería aproximadamente el 50% cada uno.
Uno de los peligros de este sistema es que el cifrador (sobre todo si está bajo tensión) tienda a utilizar solo una de las dos opciones que tiene para cada letra porque se acuerda más o por el motivo que sea. Darle algún tipo de criterio no está mal. Se le podría decir que tirase una moneda que aunque a la larga daría 50% en mensajes cortos provocaría mucha irregularidad. Otra idea es que tomase un libro y utilizara la cadencia consonante-vocal para seleccionar las opciones. Con tu idea de indicar la separación de los bloques (y por tanto posibilitar el analisis de frecuencias) este problema se vuelve crítico y al cifrador se le empieza a complicar mucho la vida a cambio de poca seguridad.
Es cierto que existiría inflación (el texto codificado sería más del doble que el de entrada). Pero el resultado sería que tendríamos gurpos de letras que se asemejarían a palabras! (pues tendríamos grupos de consonate + vocal + consonante + ...). Y no creeis que a nadie se le pasaría por la cabeza pensar que estas falsas "palabras" no son palabras sino grupos de 3 o menos sílabas?? Con lo que esto despistaría mucho a un posible desencriptador...
A un experto esto no le engañaría mucho tiempo porque la cantidad de silabas iguales le indicaría que lo que se están sustituyendo son letras. De todas formas, la seguridad de un método no puede basarse en que el criptoanalista no lo conoce porque 1)a veces lo conoce y 2)como va a probarlo TODO al final probará eso también. Y el tema de la inflación es muy importante porque si el mensaje va por radio hace que puedan haber más errores y si hay que ocultarlo mediante tinta invisible o como sea cuanto más pequeño mucho mejor. Aunque también hay que decir que la elección entre números y letras es más importante de lo que parece porque cada medio de transmisión tiene su ventaja. Si te estás comunicando mediante un espejo que refleja desde tu ventana mejor números, si vas a enviarlo por telegráfo te interesan grupos de cinco letras para simular un nomenclator y si tienes una radio morse en tu habitación te interesan letras para que un oyente casual no sospeche de una emisión de solo números.
Nota final : Todo el rato parto de la base que el que lo envía y el que lo recibe no tiene acceso a un ordenador porque si no hay métodos infinitamente mejores pero eso también me recuerda el problema que tiene el cifrador de conservar una clave tan larga en sitio seguro. En caso de un registro a fondo sería hombre muerto.
Un saludo para Camufling y el resto de foristas.
Propuesta
Enoch el rojo2 Diciembre 2004 - 1:01pm
Viendo que el sistema de cifrado esta ofreciendo mucho juguillo, ( y muy interesante) se me ha ocurrido la idea de, si a camufling le parece bien y tiene tiempo, que nos envie un texto cifrado con su sistema, aunque con otras tablas, para que podamos probar el sistema en vivo. No se que os parecera la idea, pero ahi queda.
Texto para codificar
camufling2 Diciembre 2004 - 7:47pm
Buenas!
Me parece perfecta la idea ;) además, ya lo tenía en mente (como ya comenté en el anterior post). Este fin de semana encriptaré un texto mucho más largo y lo pondré aquí para que os hagáis una idea, y ver como queda de "majo". jeje.
No me imaginaba que el tema fuese tan interesante y llevase a tantos comentarios por vuestra parte :D Gracias.
Venga, un saludo!
Las tablas inversas
JoseLo2 Diciembre 2004 - 10:00am
Aquí van:
Como se puede ver es la salida (un poco retocada) de un script en python. La posición de cada letra en la lista se corresponde con la tabla con la que es codificada por el grupo de dos dígitos. Es decir: la letra 'L' es codificada con los grupos '01' y '50' en la primera tabla, con los grupos '11' y '39' en la segunda y con el '09' y el '56' en la tercera. De lo que no he dejado constancia es de la columna.
Hay algunas cosa que no están claras: en primer lugar el código '16' aparece dos veces en la primera columna de la segunda tabla codificando a la 'F' y a la 'Z'. En segundo lugar llama la atención el "hueco" en la lista del número '26' que sólo codifica a dos letras en lugar de tres como hace el resto salvo el '16' que codifica a cuatro.
Supongo que esto tendrá alguna influencia a la hora de descodificar un mensaje.
Bueno, no se si esto aporta algo o no, pero no deja de ser curioso. :)
--
Eso es una cuestión de opinión :)
Respuesta a la duda
camufling2 Diciembre 2004 - 11:30pm
Buenas JoseLo.
La duada que tienes sobre si el número 16 de la tabla intermedia codifica a dos letras: 'F' y 'Z' ha sido únicamente una confisión por parte mía.
Así, la 'F' supondremos que vale 16 y la 'Z' 26.
Eso era todo ;)
Respuestas a dudas sobre el algoritmo (continuación)
camufling1 Diciembre 2004 - 8:31pm
(No me cogió todo el texto en una misma ventana, esto es la continuación del anterior):
Como podemos observar, se separa la última 'e' de la palabra "este", con respecto a la palabra siguiente: "texto", sin que se cree el grupo "ete" (Est-ete-xto) ( Esto sería incorrecto!!)
Igor21 también comenta:
"A estas alturas ya no se si el algoritmo se la ha inventado Camufling o me lo estoy inventando yo pero tal como lo veo el cifrador debe separar las letras en grupos de tres con la restricción que si la palabra termina se comienza un nuevo grupo y NO INIDCAR ESTA SEPARACION AL ENVIAR EL MENSAJE."
Bueno, posiblemente no lo haya inventado yo, ya que supongo que a alguien alguna vez se le habrá ocurrido una manera similar o incluso idéntica de encriptación (y sospecho que no resultaría nada sencillo que alguien hubiese podido desencriptar cualquier información codificada con este método). Aunque lo cierto es que la idea ha sido mía, es verdad.
En cuanto a lo de "NO INIDCAR ESTA SEPARACION AL ENVIAR EL MENSAJE." como explico más arriba es MUY necesária para el desencriptador conocer cual es la separación de los bloques, pues sinó como iba a saber en que tabla mirar?!
Y al acabar comenta:
"Los espacios hay que quitarlos SIEMPRE con cualquier sistema porque no hacen ninguna falta y son una debilidad muy grande puesto que todo el mundo que ha hecho crucigramas sabe lo bien que va saber la longitud de la palabra. Una vez descifrado hasta un niño de seis años puede poner los espacios que faltan"
Bien, es verdad que pueden dar una idea sobre la longitud de la palabra, pero quien nos dice que un grupo de 3 y otro seguido de 2 son una palabra de 5?? No pueden ser una palabra de 3 y otra de 2?? Y de que sirve la longitud de la palabra si como hemos visto el análisis de frecuencias no nos sirve y por lo tanto no podemos conocer ninguna letra de la palabra?
mlucena comenta de nuevo:
=========================
"Suponed que cifro la palabra "paraguas". Cuando el descifrador termina con PARA, puede suponer que ha terminado una palabra, con lo que la siguiente letra tendría que descifrarla como primera de un nuevo grupo de tres, o pensar que la palabra sigue, con lo que el siguiente carácter sería segunda de un grupo de tres. Tenemos una clara ambiguedad en el sistema, que complicaría la vida bastante al destinatario, ¿no creéis?. Incluso, si uno se lo propone, podría generar un mensaje que diera lugar a dos textos claros diferentes y ambos con sentido."
Sí, ya he dicho que puede dar lugar a cierta ambiguedad, pero serían pocos casos en todo el texto que se diera este caso. Es más, seguro que por el contexto del texto se podría deducir.
Bueno, esto es todo, no creo que me haya dejado ningún mensaje por contestar o por lo menos las dudas que ha generado este algoritmo. Espero haberme explicado bien y que me hayais entendido.
Para un próximo día intentaré realizar un ejemplo de mayor tamaño de un texto, el cual codificaré por este método, para que podáis comprovar in situ si es fácil o no de desencriptar, y sobretodo si de esta manera pueden aparecer otras maneras más efectivas de análisis, ya que como hemos visto el análisis de frecuencia no es válido para este algoritmo.
Ah, por cierto, si tardo en ocasiones a contestaros es porque no dispongo de excesivo tiempo libre ;) Pero siempre intentaré responderos.
Nada más, y gracias por vuestras respuestas.
Saludos!
Pues entonces
sac2 Diciembre 2004 - 2:53am
Si en el mensaje cifrado se ve la separación en bloques de 3, 2 o 1... definitamvemente creo que es bastante facil de descifrar. A mi parecer te separas los caracteres en tres grupos dependiendo de en que posición esten, y una vez separados, si que un número (par de cifras) representa a una única letra, asi que no puede ser muy dificil. Tenemos dos números por letra, cierto, pero cada par de números (cada par de dos cifras) representa una única letra, asi que... los expertos dirán, pero yo creo que no puede ser muy dificil la cosa (Como ya han dicho muchos antes).
Y aprovecho para decir que comentarios así hacían falta mínimo uno a la semana, pa comentar métodos y cosas de estas, que es lo bonito :)
------------------------------------------------------------------
http://aojodebuencubero.blogspot.com
Tienes toda la razón
igor213 Diciembre 2004 - 4:21pm
Si en el mensaje se transmite la separación de bloques se puede aplicar analisis de frecuencia y de contacto con lo que es un sistema bastante poco seguro y su criptoanalisis puede ser muy sistemático. Insisto en que sin esa separación es muchisimo más seguro y que en la criptografía de lápiz y papel nos hemos de quitar la mentalidad de ordenador. De hecho como iremos contra un ordenador hemos de aprovechar que el receptor conoce el contexto y no tiene prisa. Teniendo las tablas, al receptor legitimo le llevará diez minutos solucionar cualquier ambigüedad y pagará gustoso el precio si sabe que eso ha evitado que el mensaje fuera interceptado que es lo que pasará si se adjunta la estructura de bloques.
Si elimina los espacios...
mlucena30 Noviembre 2004 - 3:44pm
Suponed que cifro la palabra "paraguas". Cuando el descifrador termina con PARA, puede suponer que ha terminado una palabra, con lo que la siguiente letra tendría que descifrarla como primera de un nuevo grupo de tres, o pensar que la palabra sigue, con lo que el siguiente carácter sería segunda de un grupo de tres. Tenemos una clara ambiguedad en el sistema, que complicaría la vida bastante al destinatario, ¿no creéis?. Incluso, si uno se lo propone, podría generar un mensaje que diera lugar a dos textos claros diferentes y ambos con sentido.
Respuestas a dudas sobre el algoritmo
camufling1 Diciembre 2004 - 8:26pm
Una vez más doy las gracias a todos los que habéis vuelto a sugerir ideas ;)
Bien, observo en algunas respuestas que no se ha entendido el método de forma precisa y existen algunas dudas. Posiblemente no me explicara de forma correcta o incluso me faltase algún dato más.
Intentaré aclarar confusiones uno por uno:
Igor21 comentaba:
=================
"Si como propone Camufling en su último post el cifrador aplica una norma fija para escojer entre los dos valores posibles (2 veces uno por una vez el otro) de cada letra esto facilita porque la frecuencia es conocida antes de empezar".
Bien, el hecho de que se use un número cada dos veces y otro solamente cada vez es simplemente para mostrar un ejemplo de cómo poder hacer para que no sea de forma aleatoria con lo que las frecuencias de los dos números sería aproximadamente el 50% cada uno. Se podrían utilizar otros métodos para generar valores diferentes del 50%, sólo puse este ejemplo por ser un método fácil!. (Esto aclararía también la duda de Papabob)
La idea del algoritmo no es que todos los números tienen que aparecer en proporción 2 a 1 (como en el ejemplo), sino que cada letra puede tener diferentes proporciones!!! De esta manera el posible análisis de frecuencia ("conocida antes de empezar", como sugiere Igor21) no es posible, y de esta manera introduciría una mayor dificultad a la hora de tratar de desencriptar el texto codificado.
También comentaba lo siguiente:
"El criptotexto es el doble de largo que el texto en claro (inflación)".
Ahora supongamos que las tablas no se componen de números, sino de grupos de 2 o 3 letras (comentado también en mi contestación anterior). Supongamos también, que estas letras están formadas por consonante + vocal + consonante (en el caso de ser un grupo de 3 letras. En el caso de 2, sólo por consonante + vocal).
Es cierto que existiría inflación (el texto codificado sería más del doble que el de entrada). Pero el resultado sería que tendríamos gurpos de letras que se asemejarían a palabras! (pues tendríamos grupos de consonate + vocal + consonante + ...). Y no creeis que a nadie se le pasaría por la cabeza pensar que estas falsas "palabras" no son palabras sino grupos de 3 o menos sílabas?? Con lo que esto despistaría mucho a un posible desencriptador...
Qué pensáis?
mlucena comentaba:
==================
"Los números que aparezcan repetidos más veces deberán proceder de letras probables en el idioma correspondiente. Fijáos que si ponemos a una letra poco probable un 80-20, por ejemplo, el símbolo con 20% prácticamente no aparecerá, y el de 80% aparecerá pocas veces. Si la letra es probable, y tenemos un 80-20 de nuevo, el símbolo con 80% deberá aparecer varias veces."
Bien, esto es cierto para el caso que indicas: letras poco probables y muy probables 80% y 20%. Pero el encriptador puede optar por poner los poco probables en un 80% y 20% y los probables: 50 % y 50%. Con lo que la frecuencia de aparición de los poco probable del 80% vendría a ser equiparable a la frecuencia de aparición de las letras muy probables del 50%!! Con lo que el análisis de frecuencia no tiene tampoco sentido! Esto implicaría que el posterior análisis que propone mlucena de ir reconociendo palabras a través de la fuerza bruta (mediante un diccionario) no sea posible.
Igor21 comentaba:
==================
"Creo que ha llegado el momento que Camufling diga si en el envio del criptotexto se deja la división de bloques o no".
La división de bloques (3, 2 ó 1) se divide por un espacio o bien un punto. De la manera que el texto de ejemplo cifrado quedaría de la siguiente manera:
073802 39 261351 5312 460617 34 124939 523038
Cómo se desencriptaría?
(Esto respondería a la duda de Elwyd donde comenta: "si no entiendo mal, quieres subtituir dos letras de la misma posicion por un mismo signo, siempre que sucedan algunas circunstancias probabilisticas... entonces, como va a saber el algoritmo de descifrado si es una o la otra?")
1º Se miraría de cuanto es cada bloque (3, 2 ó 1 número):
-Si es de 3; el primer número de 2 cifras se busca en la tabla inicial, el segundo en la intermedia y el 3º en la final.
-Si es de 2; el primer número de 2 cifras se busca en la tabla inicial, el segundo en la intermedia (o final, dependiendo como se haya establecido a la hora de encriptar).
-Si es de 1 se busca en la inicial (también puede ser en media o final, dependiendo de lo establecido).
2º Obtendríamos una cadena de este tipo:
"Est e tex to ser a cod ifi cad o"
3º A pesar que en el texto desencriptado existan espacios en medio de algunas palabras (mayores de 3 letras) resulta bastante fácil leer el resultado, y no considero que lleve a ningún error de interpretación. ¿Qué os parece?
*Notar que los grupos son de 3 letras, siempre que no hayamos llegado al final de una palabra. Cada cambio de palabra se termina el grupo anterior. De tal manera que una palabra de 4 letras generará un grupo de 3 números y uno sólo de 1. Si después viniera otra palabra se empezaría a codificar en otro grupo y no se uniría al que había de 1.
Ejemplo:
"Este texto" => Est e tex to
(3)(1)(3)(2)
Como podemos observar, se separa la última 'e' de la palabra "este", con respecto a la palabra siguiente: "texto", sin que se cree el grupo "ete" (Est-ete-xto) Esto sería incorrecto!!
Igor21 también comenta:
"A estas alturas ya no se si el algoritmo se la ha inventado Camufling o me lo estoy inventando yo pero tal como lo veo el cifrador debe separar las letras en grupos de tres con la restricción que si la palabra termina se comienza un nuevo grupo y NO INIDCAR ESTA SEPARACION AL ENVIAR EL MENSAJE."
Bueno, posiblemente no lo haya inventado yo, ya que supongo que a alguien alguna vez se le habrá ocurrido una manera similar o incluso idéntica de encriptación (y sospecho que no resultaría nada sencillo que alguien hubiese podido desencriptar cualquier información codificada con este método). Aunque lo cierto es que la idea ha sido mía, es verdad.
En cuanto a lo de "NO INIDCAR ESTA SEPARACION AL ENVIAR EL MENSAJE." como explico más arriba es MUY necesária para el desencriptador conocer cual es la separación de los bloques, pues sinó como iba a saber en que tabla mirar?!
Y al acabar comenta:
"Los espacios hay que quitarlos SIEMPRE con cualquier sistema porque no hacen ninguna falta y son una debilidad muy grande puesto que todo el mundo que ha hecho crucigramas sabe lo bien que va saber la longitud de la palabra. Una vez descifrado hasta un niño de seis años puede poner los espacios que faltan"
Bien, es verdad que pueden dar una idea sobre la longitud de la palabra, pero quien nos dice que un grupo de 3 y otro seguido de 2 son una palabra de 5?? No pueden ser una palabra de 3 y otra de 2?? Y de que sirve la longitud de la palabra si como hemos visto el análisis de frecuencias no nos sirve y por lo tanto no podemos conocer ninguna letra de la palabra?
mlucena comenta de nuevo:
=========================
"Suponed que cifro la palabra "paraguas". Cuando el descifrador termina con PARA, puede suponer que ha terminado una palabra, con lo que la siguiente letra tendría que descifrarla como primera de un nuevo grupo de tres, o pensar que la palabra sigue, con lo que el siguiente carácter sería segunda de un grupo de tres. Tenemos una clara ambiguedad en el sistema, que complicaría la vida bastante al destinatario, ¿no creéis?. Incluso, si uno se lo propone, podría generar un mensaje que diera lugar a dos textos claros diferentes y ambos con sentido."
Sí, ya he dicho que puede dar lugar a cierta ambiguedad, pero serían pocos casos en todo el texto que se diera este caso. Es más, seguro que por el contexto del texto se podría deducir.
Bueno, esto es todo, no creo que me haya dejado ningún mensaje por contestar o por lo menos las dudas que ha generado este algoritmo. Espero haberme explicado bien y que me hayais entendido.
Para un próximo día intentaré realizar un ejemplo de mayor tamaño de un texto, el cual codificaré por este método, para que podáis comprovar in situ si es fácil o no de desencriptar, y sobretodo si de esta manera pueden aparecer otras maneras más efectivas de análisis, ya que como hemos visto el análisis de frecuencia no es válido para este algoritmo.
Ah, por cierto, si tardo en ocasiones a contestaros es porque no dispongo de excesivo tiempo libre ;) Pero siempre intentaré responderos.
Nada más, y gracias por vuestras respuestas.
Saludos!
La seguridad ante todo
igor2130 Noviembre 2004 - 4:23pm
Quitando los espacios se le complica la vida un poco al descifrador legítimo pero un muchisimo al ilegitimo por lo que vale la pena. Lo mejor es no solo quitar los espacios sino hacer faltas de ortografía a posta como cambiar 'qu' por 'k', introducir 'x' a voleo en medio de las palabras y usar sintaxis raras.
creo que hay un problema
elwyd30 Noviembre 2004 - 1:50pm
si no entiendo mal, quieres subtituir dos letras de la misma posicion por un mismo signo, siempre que sucedan algunas circunstancias probabilisticas... entonces, como va a saber el algoritmo de descifrado si es una o la otra?
con esto afirmo que el algoritmo dificulta la resolucion no solo para un atacante, sino tambien para el destinatario, con lo que no nos sirve de nada, no?
otro lado oscuro es el hecho de no encriptar los espacios en blanco, con lo que el algoritmo de descodificado tampoco sabra reconstruir las palabras del original. si añadimos esas marcas, aunque sean muchas, son faciles de detectar, con lo que obtenemos una gran informacion del texto. despues siempre se puede empezar por un calculo de frecuencias o incluso de un diccionario. empezaremos por las palabras cortas, de dos letras, y obtenemos unos cuantos signos que son casi triviales. despues seguimos con las de tres y asi, siempre apoyandonos en los simbolos ya descodificados y de nuestro querido diccionario. cuanto mas largo sea el texto, mejor.
sigue asi, pero nunca olvides que la seguridad de un metodo nunca tiene que depender del secretismo del mismo, ya que siempre se hace publico y el algoritmo deja de ser util.
Aclaración
igor2130 Noviembre 2004 - 2:28pm
A estas alturas ya no se si el algoritmo se la ha inventado Camufling o me lo estoy inventando yo pero tal como lo veo el cifrador debe separar las letras en grupos de tres con la restricción que si la palabra termina se comienza un nuevo grupo y NO INIDCAR ESTA SEPARACION AL ENVIAR EL MENSAJE. Esto es lo que da la estructura irregular desconocida en la aplicación de las tablas que impide el analisis de frecuencia. El descifrador legítimo no tiene ningún problema porque como empieza por el principio ya ve que la palabra se ha terminado (o que lleva tres caracteres) y por tanto cambia de tabla. El hecho de que un mismo caracter puede estar representado por dos números tampoco es un problema para descifrar. Este sistema es un método polialfabético no-cíclico en el que los alfabetos tienen homofonos (dos criptocaracteres representan el mismo caracter en claro).
Los espacios hay que quitarlos SIEMPRE con cualquier sistema porque no hacen ninguna falta y son una debilidad muy grande puesto que todo el mundo que ha hecho crucigramas sabe lo bien que va saber la longitud de la palabra. Una vez descifrado hasta un niño de seis años puede poner los espacios que faltan.
Yo lo haría así...
mlucena30 Noviembre 2004 - 11:26am
Podemos dividir el mensaje en tres grupos de letras (eso forma parte del algoritmo, no de la clave, así que podemos hacerlo), y realizar un análisis de frecuencias, razonando de la siguiente forma:
* Los números que aparezcan repetidos más veces deberán proceder de letras probables en el idioma correspondiente. Fijáos que si ponemos a una letra poco probable un 80-20, por ejemplo, el símbolo con 20% prácticamente no aparecerá, y el de 80% aparecerá pocas veces. Si la letra es probable, y tenemos un 80-20 de nuevo, el símbolo con 80% deberá aparecer varias veces.
* En cuanto tengamos alguna letra del mensaje, podemos empezar a intentar adivinar palabras, e ir reconstruyéndolo. En el ejemplo se repite un único número en la misma posición relativa (el 12). Podríamos buscar en un diccionario palabras de 10 letras con la misma letra en la posición 1 y 7, a ver cuántas salen... La verdad es que suponer que los cuatro últimos bloques representan una única palabra es una cosa que habría que adivinar, pero es un análisis que yo intentaría. En el ejemplo, puesto que no hay más símbolos repetidos, únicamente podríamos, con suerte, llegar a deducir esa última palabra. Con un texto más largo, podríamos ir rellenando huecos para intentar adivinar más palabras...
* Obviamente, el mensaje del ejemplo es demasiado corto para practicar este análisis con garantías de éxito. Eso es debido a que esta técnica de cifrado probablemente multiplica por seis la distancia de unicidad del criptosistema con respecto a la necesaria para criptoanalizar un cifrado monoalfabético.
Por cierto, la distancia de unicidad es la cantidad de texto cifrado que se necesita para deducir de forma unívoca la clave.
Lo que está clarísimo es que, a la vista del mensaje cifrado, es posible inventarse tablas que lo descifren en multitud de mensajes. Por ejemplo, si supongo que el mensaje del ejemplo empieza por "esta ventana", puedo deducir posibles valores para la tabla de descifrado que no sean contradictorios. Con un mensaje más largo, existirá una única posible tabla que descifra a algo con sentido en castellano.
Conclusión: El método es (relativamente) fácil de criptoanalizar, pero necesitamos más cantidad de texto cifrado.
No y no.
igor2130 Noviembre 2004 - 2:08pm
Creo que ha llegado el momento que Camufling diga si en el envio del criptotexto se deja la división de bloques o no. Yo propongo que no porque es lo que da seguridad al sistema y no hace ninguna falta para descifrar legitimamente (teniendo la clave). En ese caso todo el analisis de Lucena o es erróneo o no lo he entendido bien. Lo que si se podría es hacer una lista de las estructuras de bloques 1-2-3 compatibles con el castellano y entonces hacer un analisis de frecuencia para cada una.
una duda
papabob30 Noviembre 2004 - 10:34am
cómo se eligen los valores de cada tabla? es decir, vale que cuando estes cifrando, cada valor que representa a la A por ejemplo se escoja de manera mas o menos aleatoria, ¿pero cómo decides que la A va a ser representada por 17 y 34? ¿es siempre el mismo valor? ¿se cambia para cada mensaje cifrado? Porque cambia sustancialmente la cosa. Si los valores son los mismos siempre, un estudio de frecuencias es perfectamente valido como dicen mas arriba, pero si la generacion de la tabla es aleatoria (aunque no lo sea el escoger entre un valor y otro) estariamos ante un caso de algoritmo
one-time-pad(cambiando elonepor las veces que vayas a usar la misma tabla ;-) y entonces estamos ante un sistema que no admite criptoanalisis si la generacion se hace para cada mensaje.un saludo
No tanto...
mlucena30 Noviembre 2004 - 11:01am
Siempre que usemos más de una vez la tabla, el sistema es criptoanalizable. Es más, aunque se use una única tabla por mensaje, si el mensaje tiene suficiente longitud, también se puede criptoanalizar (será más fácil o más difícil, pero se puede).
Seguro pero no ideal
igor2129 Noviembre 2004 - 4:14pm
Confieso que el primer día minusvaloré la dificultad. Los métodos que hemos propuesto hasta ahora no funcionan porque ni es monoalfabético con homofonos (adios suma de frecuencias) ni es cíclico (adios Kasiski). Al usar la longitud de las palabras como criterio de cambio de alfabeto se dificulta mucho porque a priori es casi aleatorio para el criptoanalista mientras que salta a la vista para el receptor legítimo. Al usar cada tabla dos valores que además son usados en las demás tablas se introduce una dificultad para mi insalvable porque no hay forma de discriminar qué tabla se está usando en cada cáracter.
Esto solo solo deja de cumplirse para los primeros números ya que sabemos que por lo menos el primer número pertenece a la primera tabla ya que evidentemente es un principio de palabra (y lo mismo al final). Con un solo mensaje es una debilidad muy pequeña pero si tuvieramos muchos podría llegar a servir de algo.
Ahora bien, la división para el cambio de alfabeto aunque es aleatoria no lo es completamente. La mayoría de palabras en castellano tienen 2, 3 o 4 letras y además una palabra de dos letrás rara vez va seguida de otra, etc.... Esto hace que el patrón 3-2-1 se vea obligado a cumplir con los patrones del castellano. Por ello se podría crear un subconjunto de estructuras 3-2-1 imposibles y hacer fuerza bruta (frecuencia, contacto y diccionario) con el resto. Si como propone Camufling en su último post el cifrador aplica una norma fija para escojer entre los dos valores posibles (2 veces uno por una vez el otro) de cada letra esto facilita porque la frecuencia es conocida antes de empezar. El hecho de que el texto sea corto paradojicamente facilita el trabajo ya que hay menos estructuras 3-2-1 que probar. Sin embargo, el hecho de que el texto sea corto obligaría a terminar el trabajo a mano ya que ni la frecuencia, ni los analisis de contacto serían determinantes. Esta parte me la invento porque nunca he sido capaz de calcular distancias de unicidad pero infiero que los 24 del texto propuesto son menos de los necesarios para que todo esto sea determinante. Esto último también es importante porque en textos cortos podrían haber varias soluciones lo cual sería ideal a favor del método (debe haber como medio millón de tablas posibles por lo que a lo mejor hay 20 que dan textos legibles con el mismo mensaje que no pueden ser discriminados sin contexto).
Y esto me lleva a hacer un comentario final. El problema de este método no es que sea débil sino que 1)es pesado de aplicar 2)si se introducen normas adicionales (como la propuesta por Camufling en su nota) para evitar vicios en el cifrador se debilita el sistema 3) la clave es muy larga y crea un problema de negociación 4) el criptotexto es el doble de largo que el texto en claro (inflación) y 5)los errores de transmisión afectan a caracteres diferentes que aquel en el que ocurren (será más o menos fácil darse cuenta pero afectan).
Es decir que es muy seguro (comparado con monoalfabeticos con homofonos o con polialfabeticos ciclicos) y se puede cifrar/descifrar a mano pero tiene problemas porque la seguridad no es el único criterio.
Como comentario final, para trabajar a mano con textos cortos lo mejor es usar una sustitución de digrafos Playfair seguida de una transposición y una segunda sustitución Playfair con la misma clave que la primera. Es muy seguro, no hay inflación y la clave es corta (Sí, hay mucha difusión de los errores pero que le vamos a hacer)
Un gran analisis
sac29 Noviembre 2004 - 10:22pm
Solo le veo un problema, no creo que sean muchos los que hayan entendido todo (o yo soy más inculto de lo que pensaba).
¿Podrías explicar un par de cosas? Por ejemplo, cuando dices "Kasiski" me suena bastante, pero no estoy seguro de si es el método que tengo en mente y ni idea de donde lo encontré la primera vez. Por otro lado lo de "Playfair" ni idea :(
¿Serías tan amable de congraciarnos con una pequeña explicación?
------------------------------------------------------------------
http://aojodebuencubero.blogspot.com
Aclaración
igor2130 Noviembre 2004 - 3:03pm
Lo de Kasiski no le dije yo sino que lo propuso Virtualfox. El método de Kasiski se aplica para descifrar mensajes cifrados con algoritmos polialfabéticos. Los sistemas polialfabeticos se basan en aplicar cifrados monoalfabeticos consecutivamente. Para ello se generan alfabetos con una tabla mediante una clave. Hay varias maneras de hacerlo pero está claro que trabajando a mano no se pueden usar muchos. Por tanto sabemos que cada cierto número de caracteres se ha usado el mismo otra vez. De hecho se ha vuelto a empezar la secuencia. Por tanto si dos letras iguales se repiten por casualidad en el texto en un punto en el que también por casualidad se han usado los mismos dos alfabetos, tenemos dos grupos de dos letras que se repiten en el criptotexto a una cierta distancia. El método consiste en medir esa distancia y afirmar que es un múltiplo del número de alfabetos usados. Si encontramos dos repeticiones como quiera que las dos distancias son multiplas del mismo número, este será un divisor de ambas. Si tenemos suerte solo hay un divisor común pero si hay dos probamos los dos. Sabiendo el número de alfabetos usados podemos reunir las letras cifradas con el mismo alfabeto y aplicar analisis de frecuencia al subconjunto. Este método es contra el que iba la máquina Enigma que al usar miles de alfabetos impedía la repetición en el mismo mensaje.
Y sobre el off-topic lo dije porque pensé que tampoco era correcto cargarme el método de camufling sin ofrecerle algo a cambio. El método Playfair consiste en formar un cuadrado de cinco por cinco con todas las letras a base poner la clave sin repetir letras y luego ir poniendo el resto del alfabeto (en castellano hay que despreciar dos letras como por ejemplo la V y la K, o la Ñ y la K, o la H y la V, etc..). Luego se divide el texto a cifrar en parejas de letras. Se va tomando cada pareja y se mira su posición relativa en el cuadrado. Siguiendo unas normas muy fáciles, cada pareja se sustituye por otra. Hasta aquí Playfair. Pero si luego haces una transposición poniendo la mitad del texto en una línea y la otra mitad debajo (metiendo una letra de relleno si hace falta) y vuelves a escribir el texto tomando una letra de la primera línea y luego una de la segunda, y otra de la primera y etc.. y aplicas Playfair otra vez, se obtiene un cifrado muy sólido y muy sencillo en el que la clave es una sola palabra. Para descifrarlo hace falta mucho texto sobre todo si la clave no es una palabra sino las inciales de una frase como por ejemplo YNEURDAVSHL (Yo naci en una rivera del Arauca vibrador, soy hermano de la espuma). A base de mezclar dígrafos y transposiciones se pueden crear métodos que requieran miles de letras para ser descifrados y que sean invulnerables para mensajes cortos y claves que no se repitan pero más fáciles de recordar y transmitir que las hojas de los one-time-pad.
Un ataque simple
Alfonso Muñoz27 Noviembre 2004 - 3:31pm
Te comente anteriormente que es trivial, y mas con la configuración que muestras. Te puedo comentar multitud de ataques, pero por ejemplo un siempre basado en 27 textos en claro y 27 textos cifrados:
Dado el algoritmo de cifrado deducir las tablas, es un mero ejemplo:
->EEEEEEEEEEEE (tan E como quieras para que se muestre la probabilidad de sustitución de cada valor de la tabla, por ejemplo)
-> EEE.EEE.EEE.EEE (supon probabilidad de 50% y 2 valores como tu ejemplo)
-> 070614.395255.070614.395255 ... (ves que he supuesto que primero para las iniciales es 07 luego 39 luego 07, y asi.....)
Pues te vas dando cuenta que la posición de la letra en el texto influye y según los valores descubres que la sustitución va por inicial, media y final.
Repites esto para cada una de las letras del alfabeto (27 textos en claro y 27 textos cifrados) y deduces todas las tablas.
Te sigo repitiendo que esto es un ejemplo para que lo entiendes, pero se puede automatizar un estudio de frecuencias.
Un Saludo!
Comentario sobre las soluciones propuestas
camufling27 Noviembre 2004 - 7:13pm
Buenas
Antes que nada quiero agradecer a todos los que me han contestado: InMemoriam, sac, virtualfox, igor21 y handler. Y si durante el tiempo que tardo en escribir esto contesta alguién más, también a él ;)
También quiero hacer notar que posiblemente me pasé con el título del tópic de "Nuevo método de cifrado!!" ya que como algunos me indicáis es conocido desde hace considerable tiempo. Quizá debia haberlo titulado: "Duda sobre un método de cifrado" o "Ataque a un método de cifrado". No quise ensalzar el tópic, sino simplemente no lo pensé demasiado y coloqué el mencionado título. Disculpas.
El motivo por el cual escribía era por saber si podía existir algún posible ataque a este método de cifrado o si a alguno se le ocurría alguno digamos que "infalible". Comentaré algunas de vuestras respuestas:
Veo que la solución que la mayoría de vosotros propone es un análisis de frecuencias de las letras en función de su situación (inicial, media y final):
Me sugerís que es posible descifrar el mensaje realizando análisis de frecuencia y secuencia. Bien, cabe recordar que comenté que la proporción de aparición de uno de los dos números para cada letra no tienen que corresponder al 50% cada uno! sino que se verían sujetos algún tipo de regla que controlase la proporción de cada uno, haciendo que por ejemplo un número para una misma letra aparezca el 80% de las veces y el otro sólo el 20% (sería tan sencillo como ir representando cada vez que aparezca una letra: cuatro veces el mismo número para luego sólo una vez; manteniendo así la proporción 4/1 ó
80/20. Esto me parece que complicaría enormemente el análisis de frecuencia haciéndolo inviable.
Ejemplo:
Supongamos que la letra 'A' (unas de las más frecuentes en el idioma castellano) es representada por el 15 y 34 con una proporción del 50% cada una. Y que la letra 'R' (menos frecuente que la A pero no por ello poco frecuente) es representada por el 10 y el 32 en una proporción del 90% y el 10%. Es casi seguro que el número de estos 4 que nos encontraremos con mayor frecuencia será el 10 (90% de las R's), con lo que sería fácil pensar que éste correspondería a la letra 'A', y por lo tanto nos estaríamos equivocando! Lo mismo ocurriría con otras muchas letras haciendo, como ya he comentado, este método inviable.
Perdón si me equivoco, pero creo que es cierto esto, no?
Algunos de vosotos me habéis comentad otros posibles métodos: caso de virtualfox, que me indica que sería posible realizar un análisis de secuencia a cada número en función de la posición que ocupe (inicial, media, o final). O caso de igor21 que me comenta que se puede apoyar con un analisis de contacto. En cuanto a esta solución: ¿os referís a estudiar que dos números se muestran con más frecuencia uno al lado del otro? Si es así, ¿no influiría también el hecho de que los números no se asignan de forma aleatroria sino bajo unas reglas que hacen que sus frecuencias no sean las mismas para cada letra?
¿Creo que estas son las soluciones que proponéis. No os parece que el hecho de la diferencia de frecuencias entre la misma letra complique de forma excesiva la desencriptación del mensaje (por muy extenso que éste sea)? Vamos, a mí me lo parece.
Y sólo con incluir una nueva columna de números complicaríamos su desciframiento de una manera muy considerable!
En cuanto a la idea de handler de analizar 27 textos encriptados como consecuencia de 27 sin encriptar y que cada uno se componga de cada una de las 27 letras, me parece que es la solución cuando disponemos del programa o en su defecto la tabla para codificar. No es válido para cuando sólo se conoce el archivo encriptado y partíamos de la idea que sólo disponemos de éste!!
Esto es todo. Que opináis? Creéis que estoy equivocado, o tenéis una solución alternativa? Espero vuestros comentarios.
Gracias de nuevo por todo. Saludos!