Foros:
El Cifrado MTsaK
Mucho tiempo ha que la duda me consume.
Mucho tiempo ha que el congojo me acompaña.
Y hoy pongo al mundo por testigo que,
armado de valor,
decido ponerme en vuestras manos,
¡oh, grandes señores del oráculo!,
para que con vuestro don de la clarividencia
disipéis aquello que con gran infortunio corroe mis entrañas.
Como precio a vuestro esfuerzo
nada tengo con que pagaros.
Poca es mi gratitud para tanto que os merecéis,
pero más nada me queda
pues es lo que tiene la miseria.
Si alguien creía que el mensaje anterior tenía truco va equivocado; sólo pretendía llamar vuestra atención. Así que al lío, que se hace tarde y tengo el puchero en el fuego...
EL TABLERO DE JUEGO
Vamos a crear un tablero de 13 x 13 casillas (de las cuales quedarán libres 12 x 12) en el que más adelante ordenaremos nuestro alfabeto maestro. En él formamos el eje de abscisas (horizontal) por las letras minúsculas de la "a" a la "l" y el eje de ordenadas (vertical) por las minúsculas de la "m" a la "w" tal como se muestra:.

LAS FRECUENCIAS
Pueden encontrarse en internet distintos porcentajes para las frecuencias de las letras en castellano pero yo voy a basarme en los siguientes:

EL ALFABETO MAESTRO
Cogiendo estas frecuencias como válidas se creará un alfabeto que reduzca esos porcentajes hasta un mínimo más o menos manejable. Para ello se tomará ese porcentaje sin los decimales y se le sumará 2, quedando así:
18 E, 13 A, 10 O, 10 L, 9 S, 9 N, 8 D, 6 R, 6 U, 6 I, 5 T, 4 C, 4 P, 4 M, 3 Y, 3 Q, 2 B, 2 H, 2 G, 2 F, 2 V, 2 J, 2 Ñ, 2 Z, 2 X, 2 K, 2 W
(Total 140 letras)
Y respecto a los espacios/separadores pondremos sólo cuatro - (guiones).
El alfabeto maestro quedará así compuesto por un total de 144 caracteres (12 x 12).
LA CONTRASEÑA
La contraseña la sacaremos de un libro de claves de fácil acceso desde internet quedando formada por una o más frases del mismo. ¿Y qué libro de claves podríamos usar para que, encima, no despierte sospechas?. Pues sencillo, el libro de género fantástico más conocido mundialmente, más incluso que El señor de los anillos: la Biblia. Pero como el recordar una frase (o más) como clave puede ser complicado bastará con que nos acordemos, por ejemplo, de "Génesis 6:5-6" de la versión Reina Valera de 1960 para que tras una rápida consulta en internet encontremos en http://www.biblia12.com/ o en http://www.amen-amen.net/RV1960/ la contraseña en cuestión:
"Y vio Jehová que la maldad de los hombres era mucha en la tierra, y que todo designio de los pensamientos del corazón de ellos era de continuo solamente el mal. Y se arrepintió Jehová de haber hecho hombre en la tierra, y le dolió en su corazón"
Pero para que la contraseña nos resulte útil deberá modificarse:
1.- Eliminamos espacios entre palabras:
YVIOJEHOVAQUELAMALDADDELOSHOMBRESERAMUCHAENLATIERRA, YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZONDEELLOSER ADECONTINUOSOLAMENTEELMAL.YSEARREPINTIOJEHOVADEHABERH ECHOHOMBREENLATIERRA,YLEDOLIOENSUCORAZON
2.- Sustituimos los signos de puntuación por guiones (-):
YVIOJEHOVAQUELAMALDADDELOSHOMBRESERAMUCHAENLATIERRA- YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZONDEELLOSER ADECONTINUOSOLAMENTEELMAL-YSEARREPINTIOJEHOVADEHABERH ECHOHOMBREENLATIERRA-YLEDOLIOENSUCORAZON
3.- Ahora vamos a acabar de perfilar esta clave según el número máximo de letras que el alfabeto maestro nos permite eliminando aquellas que excedan de la cantidad (contando de izquierda a derecha) y añadiendo al final de la clave las que faltan. O sea deberemos comenzar las cuentas por los 4 - [Atención, primero los 4 guiones], las 18 E, las 13 A, las 10 O, etc.). Nos quedará ésto:
YVIOJEHOVAQUELAMALDADDELOSHOMBRESERAMUCAENLATIERRA- YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZNDEELLSER AECNTINUSLAENTLA-YSPNJBCN-UZ-PPQGFFÑÑXXKKWW
144 caracteres en total. Ya tenemos la clave.
COLOCACIÓN DE LA CONTRASEÑA EN EL TABLERO
Se introducirá la clave carácter a carácter siguiendo el patrón en espiral que se propone de forma que el primero estará en la posición "fr", el segundo en la "fq", el tercero en la "gq", el cuarto en la "gr", el quinto en la "gs", el sexto en "fs", etc.

Así quedará distribuida la clave en el tablero:
YVIOJEHOVAQUELAMALDADDELOSHOMBRESERAMUCAENLATIERRA- YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZNDEELLSERA ECNTINUSLAENTLA-YSPNJBCN-UZ-PPQGFFÑÑXXKKWW

CÓMO CIFRAR UN TEXTO PLANO
Tenemos el texto plano siguiente (demasiado corto por lo que debe tomarse simplemente como ejemplo):
ESTE CIFRADO ES UNA CHUFA MACABEA
Lo reconvertimos a voluntad poniendo en el lugar de los espacios un guión, o sustituyéndolos por letras con frecuencia de muy poco uso y que no compliquen la comprensión del mensaje (W, K, X, o Z), o simplemente eliminamos los espacios:
ESTECIFRADOXESWUNAKCHUFA-MACABEA
Ahora vamos sustituyendo cada carácter del texto plano resultante por las coordenadas del tablero. Desde mi punto de vista no es necesario aplicar una aleatoriedad a la operación, simplemente bastará con mirar de repetir lo menos posible las coordenadas. Y éste es el texto cifrado resultante:
fn dn bn hñ dm bp lñ jn kn en cn lr bo añ lv gm am lt hn eo gñ lo cñ fm go ep gu aq cb hp br
EL RETO
im bn fo bñ kñ gñ eo dñ am go km jp bm kn fo iñ cn jq bo eñ dr en gp fn ip ap dn cm fñ io kr eu jt kn cñ eq bt co lp dr gr io ip hp cr hq iq du do jr an gp en cu kp ft fn js aq dq ir gu er kr bu kt kq ar lq fu ho jn bv gñ hs dq et fo as añ gt ao iw iu hp fs jt hr dn gq dm bs cr fv es eo fñ dñ dw em in at hn hñ cñ ev br av kv ew ko ct bo dp am bt ep ds au an eq hv jr ht cu gs jv it bm cw en jñ iq kñ jn js bn eu cm go ku gv gn añ kn iv io fq co ao dm bv ip bñ cp do bu hq gñ hn gu jp ht cq hr bp du gp fo ft dn dw ir ew fp kp aq bq fñ im dp iw jq bo bt hs gq fr io et am cu km bv dr dv an dn br gt fv ar as fm is fñ lm jt bu dñ iñ jm dt bs ln es gr ds ho im hp kr gs iw hñ dp en cr at km ct aw gm fw bt au it kt bo hw lñ ep ip cs cu jm in eu ks bv hq hv jw bm jv jr cñ dn iv ir bp io kw cw fn cm hs bu js fu iw fñ iu dv iñ hu et kq dp bn gu bñ gt cv gn cn jt jn eñ ev eo fo jt gñ kn añ ho hm kv bo co gw kñ io go ao bt fq gq dq jp hp ko do cp gp bu cq fp jq hr bp jo hñ is dm cu ap bv lp ep eq dr cr gr br ip iq ku jr kr js dt ds hq bq kp er ir dw ft kt jñ hs gu aq ew du ar av dn fs fo et am em fw as fu fv bs gs iu lp ev it kñ gv kv an cs es cñ gt iw fo kñ bo fñ go en jp io hn hw cq aw at jn dv bo jt eu lm ct hp ht dp cr añ au hv iv kñ jw fs dñ go ao bt io dñ iq hñ in bñ ks ep bu dn kw iw ip bm hq cv jv bo jp lq cq eo ir gñ ko cw io jq ft fn bn bñ fn hs jr am fq an js gn en dq kn cm et jn in gñ dr añ co gu fñ do cp bn eo gn ao gr eq fo kn gq hr dp km gt dw ko co du hp do cp kr fp jt cr gp ew bq bt am im jr kt lp fu cs dñ an ks kp en aq js lm cu cv hñ gu ar jn fn fq hq cn bv bu ep añ
También puede descargarse desde aquí:
infosniper

Cifrado
Hola infosniper, estupendo reto para inaugurar el sitio. Por cierto, para la clave del reto ¿sigues tomando la Palabra de Dios en vano, o puede ser cualquier texto?
Sigo, sigo
No querrás que de la noche a la mañana deje mi maldad en el armario, ¿verdad?.
No está nada mal
Es un cruce entre Cifrado Homófono, ADFGVX, Rail Fence y Escítala, con algunas gotas de azufre. Creo que va a ser duro de roer. Si LlamameX no te hace una de sus mundialmente famosos javascripts, intentaré preparar una implementacioncita del bicho. Non nobis, domine, sed nomine tuo da gloriam
Jopé, pues sí que ha salido con títulos la criatura
Quién iba a decir que el ron con café sirviera tanto para la creatividad...
Por cierto, diles que te bajen la medicación del potito que te está quedando la lengua como pastosa (Non nobis, domine, sed nomine tuo da gloriam). Así no se te entiende.
Uy pues a mi me ha recordado
a una de mis criaturas, el 36, una de las primeras aunque la mía era bastante más frágil, así a priori (os la merendásteis en un par de días).
Miraré de implementarlo, pero habrá que meterle un componente aleatorio para seleccionar el carácter.
El 36B
Con el 36B no se podía, salvo que cifraras el mismo mensjae, que es lo que pasó. Le he estado repasando.
Buen reto para inaugurar el
Buen reto para inaugurar el nuevo sitio. Por cierto, muy limpio y organizado ( como a mi me gusta ).
Enhorabuena
Cosillas a priori
Primeras impresiones
- La clave forzosamente ha de ser muy larga ya que la hemos de reducir a 144 carácteres con un mínimo de aparición de las letras según las frecuencias. Eso casi seguro que implicará que se ha usado texto inteligible para crearla.
- La eliminación de los caracteres sobrantes dejará los más infrecuentes al final de la clave y mantendrá porciones considerables de la original (no reducida) al principio. Si se ha usado texto inteligible también lo encontraremos ahí.
- Las posiciones de la clave en el grid son fijas por lo que el texto infrecuente aparecerá en la misma posición. Por ejemplo deberíamos esperar pocas "l*" en el texto cifrado.
Pero va a costar...
Las primeras impresiones son las que valen
Pero no olvides que los caracteres más infrecuentes pueden no haber sido dejados al final de la clave porque el cifrador los haya insertado enmedio de algunas palabras para quedarse con el personal. Puede que tengas razón, puede que no. Depende. Quizás. Tal vez. A lo mejor. Quién sabe.
Si si, seguro que se puede tunear
pero de todos modos las más probables (asumiendo siempre una clave con texto inteligible) ya las habremos ido usando con lo que nos quedarán pocas para meter en la última columna.
De todos modos, si la idea es un algoritmo mecanizable parece que dependemos demasiado de la "mala leche" del cifrador. Si se usa de manera más mecánica temo que se caerá en esas vulnerabildades.
Recuerda también
que donde pueden insertarse los caracteres más inusuales es en la clave. Pero tranquilo, en este caso no he hecho ninguna guarrería. El experimento es simplemente para ver si en condiciones normales consigue resistir el ataque.
Por cierto, acabas de gastar el comodín de la llamada.
eh, eh, que yo no lo he pedido XD
Esto ha sido un regalo por tu parte y Santa Rita Rita XD
Por lo demás, en un análisis básico de cryptool tenemos
Digrama Análisis de <Sin nombre1>. Tamaño del archivo 1622 bytes. Ordenados descendentemente por frecuencia. Nº Subcadena Frequencia (en %) Frecuencia 1 io 1.6917 9 2 bo 1.5038 8 3 fo 1.5038 8 4 bt 1.3158 7 5 bu 1.3158 7 6 dn 1.3158 7 7 en 1.3158 7 8 fñ 1.3158 7 9 jt 1.3158 7 10 añ 1.1278 6 11 am 1.1278 6 12 an 1.1278 6 13 bv 1.1278 6 14 cr 1.1278 6 15 cu 1.1278 6 16 dñ 1.1278 6 17 dp 1.1278 6 18 fn 1.1278 6 19 gñ 1.1278 6 20 gu 1.1278 6 21 hp 1.1278 6 22 hq 1.1278 6 23 ip 1.1278 6 24 iw 1.1278 6 25 jn 1.1278 6 26 jr 1.1278 6 27 js 1.1278 6 28 kñ 1.1278 6 29 kn 1.1278 6 30 ao 0.9398 5 31 bñ 0.9398 5 32 bn 0.9398 5 33 co 0.9398 5 34 do 0.9398 5 35 dr 0.9398 5 36 eo 0.9398 5 37 ep 0.9398 5 38 et 0.9398 5 39 go 0.9398 5 40 gp 0.9398 5 41 gt 0.9398 5 42 hñ 0.9398 5 43 hs 0.9398 5 44 ir 0.9398 5 45 jp 0.9398 5 46 kr 0.9398 5 47 aq 0.7519 4 48 ar 0.7519 4 49 bm 0.7519 4 50 cñ 0.7519 4 51 cm 0.7519 4 52 cp 0.7519 4 53 cq 0.7519 4 54 dq 0.7519 4 55 du 0.7519 4 56 dw 0.7519 4 57 eq 0.7519 4 58 eu 0.7519 4 59 ew 0.7519 4 60 fq 0.7519 4 61 ft 0.7519 4 62 fu 0.7519 4 63 gn 0.7519 4 64 gq 0.7519 4 65 gr 0.7519 4 66 hr 0.7519 4 67 im 0.7519 4 68 in 0.7519 4 69 iq 0.7519 4 70 jq 0.7519 4 71 km 0.7519 4 72 ko 0.7519 4 73 kp 0.7519 4 74 kt 0.7519 4 75 lp 0.7519 4 76 as 0.5639 3 77 at 0.5639 3 78 au 0.5639 3 79 bp 0.5639 3 80 bq 0.5639 3 81 br 0.5639 3 82 bs 0.5639 3 83 cn 0.5639 3 84 cs 0.5639 3 85 ct 0.5639 3 86 cv 0.5639 3 87 cw 0.5639 3 88 dm 0.5639 3 89 ds 0.5639 3 90 dv 0.5639 3 91 es 0.5639 3 92 ev 0.5639 3 93 fp 0.5639 3 94 fs 0.5639 3 95 fv 0.5639 3 96 gs 0.5639 3 97 hn 0.5639 3 98 ho 0.5639 3 99 ht 0.5639 3 100 hv 0.5639 3 101 iñ 0.5639 3 102 it 0.5639 3 103 iu 0.5639 3 104 iv 0.5639 3 105 jv 0.5639 3 106 ks 0.5639 3 107 kv 0.5639 3 108 lm 0.5639 3 109 ap 0.3759 2 110 av 0.3759 2 111 aw 0.3759 2 112 dt 0.3759 2 113 eñ 0.3759 2 114 em 0.3759 2 115 er 0.3759 2 116 fw 0.3759 2 117 gv 0.3759 2 118 hw 0.3759 2 119 is 0.3759 2 120 jñ 0.3759 2 121 jm 0.3759 2 122 jw 0.3759 2 123 kq 0.3759 2 124 ku 0.3759 2 125 kw 0.3759 2 126 lq 0.3759 2 127 fm 0.1880 1 128 fr 0.1880 1 129 gm 0.1880 1 130 gw 0.1880 1 131 hm 0.1880 1 132 hu 0.1880 1 133 jo 0.1880 1 134 lñ 0.1880 1 135 ln 0.1880 1La cosa está en si la diferencia entre las frecuencias entre "IO" y "LN" dependen de efectos estadísticos o de la "mala leche" que decía del cifrador (¡no me contestes, que no quiero gastar mas comodines! XD ), quien puede haberse guardado una única "E" para cifrarla como "LN" para despistar, cosa que difícilmente implementaríamos en un sistema automatizado.
Para ilustrar, un mapa de "temperaturas" por frecuencia:
Muy chulo lo de las temperaturas
Ahora dale, a ver qué sacas.
Sacar, lo que se dice sacar, pues poco
Antes que nada, gracias Admin por pegar la imagen.
Lo que venía a decir es que por construcción las últimas posiciones (concretamente la columna L) tendrá carácteres muy poco probables. De hecho en el reto acapara casi todos los ceros.
¿Qué se puede extraer de eso?, pues poco más que lo obvio, que los caracteres poco probables aparecen poco.
Ahora bien, parece que hay menos entropía de la que debería (no la he calculado) ya que hay bastante distancia entre las frecuencias más altas y las más bajas. También da la impresión de que determinados valores se han buscado o evitado adrede (como el 1 de la primera posición o el 4 de la última columna).
Dejar la elección en manos humanas tiene eso como ventaja e inconveniente. Por un lado puede sesgar la distribución (si no tiene cuidado) pero por otro puede decidir hacia donde orientar el sesgo.
Muy chulo
Realmente muy chulo lo de las temperaturas. A ver si admin puede pegar la imagen al post.
Oído cocina
A ver si a un rato habilito que podáis subir imágenes vosotros mismos.
Gracias
Valía la pena
A mano
El algoritmo MeTe_SaKa está pensado para el cifrado a mano, sin prisas, como las cosas bien hechas. ¿A que sí?
Ya me ha descubierto
Si es que a este hombre no se le escapa una. Yo que me lo curro para que el nombre del cifrado parezca algo elegante y míralo. A ver, la explicación es la siguiente: una sustitución ¿qué es?, pues un quita y pón, un mete-saca. De ahí, MTsaK. Hala.
Para tu pregunta de si está pensado para hacerlo a manubrio pues la respuesta es que sí, sólo que como siempre "agítese antes de usar". Y si algun ánima caritativa consigue crear un programa que lo automatice pues mejor: "sin manos".
Más. Porfa.
Hola, ¿por qué no nos pones más cifrado con esa clave? Sino me parece que MTsaK va a dormir el sueño de los justos, junto a mí TFTR. Después de todo la forma en que se reventaban las claves homofónicas en la guerra civil, era a base de ir juntando cifrados. Así veremos la resistencia de MTsak en un entorno "normal" ¿qué opinas?
Pues que tienes toda la razón
Por eso decía más arriba que a ver si un "ánima caritativa" se atrevía a crear un programa que lo automatizase. Y es que el texto que he presentado como reto lo hice a manubrio, oiga, y uno ya tiene una edad como para apoltronarse en el sillón.
Con mucho gusto
Con mucho gusto me pondría a implementar el engendro, pero sería mejor que lo hiciera LlamameX, porque estaría a la vista de todos, mientras que mis programas LOGO son una porquería.
De entrada ya veo que la espiral con la que se introduce la clave sólo es una complicación para el cifrador. En realidad es como si se fueran adjudicando las letras de la clave secuencialmente a esta lista de pares:
(s.e.u.o)
Lo siguiente es construir el alfabeto homofónico
Luego, cuando se asigna la clave a los pares, se van restando del alfabeto las letras que se asignan.
A partir de ahí, hay que asignar a cada letra, el conjunto de pares que la representan, por ejemplo, la F está representada por los pares lñ y lo.
De manera que cuando nos encontremos con una F en el texto a cifrar, iremos eligiendo aleatoriamente uno de los pares. Venga, LlamameX, ya te he hecho el análisis, el resto es fácil, salvo lo de meter ruido y caracteres extraños.
Desde el punto de vista del ataque, una vez que la serpiente -la espiral- ha sido eliminada, nos queda un cifrado más o menos homofónico, puro y duro. Como bien dice Tokamak, los cifrados homofónicos se rompen. Para ello hay que hacer uso de las características de la lengua, como que a toda "q" sigue una "u", etc. Pero eso no quiere decir que resulte fácil.
Implementación
Hola, estoy tratando de implementarlo pero tengo algunas dudas. Por ejemplo: tú cuentas la frecuencia de los caracteres del texto de clave, aunque ésta tenga una longitud mayor de 144. Por ejemplo, en este texto de 197 caracteres:
cuentas 5 u, así que solo añades una al final.
Sin embargo. ¿No habría que truncar a 144 caracteres, de manera que al añadir las que faltan y quitar las que sobran la longitud de la clave siguiese en 144?
Es decir, tendríamos:
y normalizando:
No sé si lo he entendido bien.
Errorzuelo
He encontrado un errorzuelo en el ejemplo de MT-Sak. Resulta que la clave colocada -bizarramente, eso sí- sobre el tablero maldito, según MT-SaK es
Y según LOGO sería:
(Las dos primeras líneas están bien)
Una de las causas de la divergencia es que en el ejemplo se asignan diez "N"s, mientras que en el alfabeto homofóbico sólo se establecen 9.
Hay otro problema en la asignación del 4º guión, que aún no he podido analizar.
Espero tus noticias, que mi modesta implementación está parada.
Err-orzuelo, again
Me temo que al MT-SaK le ha salido otro orzuelo, porque de las 6 "U"s que figuran en el alfabeto homofóbico, tan sólo se asignan 5 a la serpiente.
Eso, o es que no he pillado bien el algoritmo, que va a ser eso.
Ejemplo
Este es un ejemplillo de los resultados:
Clave
Y vio Jehová que la maldad de los hombres era mucha en la tierra, y que todo designio de los pensamientos del corazón de ellos era de continuo solamente el mal. Y se arrepintió Jehová de haber hecho hombre en la tierra, y le dolió en su corazón
Texto a cifrar
ESTE CIFRADO ES UNA CHUFA MACABEAClave frecuencias normalizadas
Cifrado:
fo,jñ,cm,kñ,jw,fw,ln,go,fn,kv,js,ju,dt,bm,ew,es,jw,ds,eq,ln,hs,hp,hs,cn,hs,jm,at,isDescifrado:
ESTECIFRADOESUNACHUFAMACABEAYo creo que va bien, vosotros direis...
Pues yo diría
Yo diría que tienes mal la serpiente (revisa mis últimos posts). Para el texto
yo obtengo el cifrado
Hay que tener en cuenta que para cada letra caben varios pares, que se eligen aleatoriamente, por lo que hay un número indeterminado de cifrados válidos.
Te descifra bien, porque la mecánica es correcta, salvo en la obtención y asignación de la clave, que no se ajusta del todo a las especificaciones, como verás en mis posts.
Dónde se habrá metido LlamameX, igual ha preferido ganarse el jornal en vez de jugar a los cifrados. Hay gente muy interesada.
Pues parece que está bien
En principio parece correcto: Toma 144 caracteres de la clave, normaliza el número de cada caracter a los estándares, quitando o bien añadiendo al final, y después codifica asignando aleatoriamente el homófono correspondiente. ¿Dónde está mal?
Preparación de la clave: se toman 144 caracteres, se quitan los espacios, se ponen guiones en lugar comas y puntos:
YVIOJEHOVAQUELAMALDADDELOSHOMBRESERAMUCHAENLATIERRA-YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZONDEELLOSERADECONTINUOS
Se suprimen caracteres con frecuencias superiores a las esperables y se añaden al final las que falten. Empezando por los guiones, como dice el autor.
YVIJEVAQUELAMALADDELSHMBRESERAMUCHAENLATIERRA-YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZONDEELLOSERADECONTINUOS---EAALLSNNUUTCPPPYQBGFFJÑÑZXXKKWW
La clave
Aplicando las reglas, la clave me queda así:
Hay algunas diferencias con la del autor, porque creo que no ha contado bien las Ns ni las Us, entre otras cosas.
Ya veo la diferencia
Es que tu suprimes las sobrantes a partir de la excedente: yo lo hago a posteriori, con lo que se eliminan desde el principo.
También las añades del mismo modo al final, yo también lo hago a posteriori.
No sé cual método será preferible, cualquiera es perfectamente válido, a ver que dice infosniper, antes de modificar nada.
Así a primera vista
me parece que tienes razón: hay una N de más y una U de menos en el ejemplo que ponía. Dadme tiempo a que lo revise antes de trabajar más en el tema porque está visto que por muchas veces que revises algo siempre acaba saliendo un gazapo.
Ah, que se me olvidaba:
¡MURPHY, CABRÓOOONNNN!
Los años no perdonan. Snif.
Bueno, teníamos la clave
YVIOJEHOVAQUELAMALDADDELOSHOMBRESERAMUCAENLATIERRA-
YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZNDEELLSER
AECNTINUSLAENTLA-YSPNJBCN-UZ-PPQGFFÑÑXXKKWW
y la correcta (corregidme si me he vuelto a equivocar) es esta vez
YVIOJEHOVAQUELAMALDADDELOSHOMBRESERAMUCAENLATIERRA-
YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZNDEELLSER
AECNTINUSLAENTLA-YSPNJBC-UZ-UPPQGFFÑÑXXKKWW
a la que como podréis comprobar se le ha quitado una N y añadido una U en los lugares correspondientes.
Por tanto el resultado final de cifrar
ESTECIFRADOXESWUNAKCHUFA-MACABEA
será
fn dn bn hñ dm bp lñ jn kn en cn lr bo añ lv fm
am cñ lt hn eo gñ lo ep em go aq gu br cm hp hr
Muchísimas gracias, Agustín, por estar ojo avizor. Por cierto, modifica el programa en LOGO (será un momento) porque obtienes con él esta clave
YVIOJEHOVAQUELAMALDADDELOSHOMBRESERAMUCAENLATIERRA-
YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZNDEELLSERA
ECNTINUSLAENTLA-YSPNJBC-UZUPPQGFFÑÑXXKKWW-
en la que el guión final no está en su sitio. Recuerda que la colocación del alfabeto empieza contando por los guiones y sigue con las letras (igual no me había explicado bien).
Respecto al comentario de Tokamak sobre si debiera truncarse el texto que debe formar la clave a los 144 caracteres justos ya se ve que no tiene nada que ver la clave que obtiene él con la mía:
YVIJEVAQUELAMALADDELSHMBRESERAMUCHAENLATIERRA-YQUE
TODODESIGNIODELOSPENSAMIENTOSDELCORAZONDEELLOSERAD
ECONTINUOS---EAALLSNNUUTCPPPYQBGFFJÑÑZXXKKWW
YVIOJEHOVAQUELAMALDADDELOSHOMBRESERAMUCAENLATIERRA-
YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZNDEELLSER
AECNTINUSLAENTLA-YSPNJBC-UZ-UPPQGFFÑÑXXKKWW
Con ello no quiero decir que MTsaK no pudiera emplear su sistema para determinar la clave pero, si no os sabe mal, prefiero seguir empleando el mío.
Ah, y la imagen del tablero ya modificada:
Ahora sí, compadre
El cifrado que yo obtengo usando aleatoriamente los pares equivalentes, es:
El programa LOGO está a tu disposicion, compadre -y de quien lo quiera-. Te lo mando a:
Inframundo
Séptimo Círculo
Novena caldera, por la derecha
Va por correo ordinario con franqueo en destino.
El cartero ha llamado dos veces y me lo ha entregado en mano
Felicidades, tu programa es estupendo. Lo he probado sobre el ejemplo y clava el resultado. Lo que he observado es que parece que le hayas dado una aleatoriedad por lo que elige las combinaciones del tablero al azar. Para explicarlo mejor, a mi el texto cifrado correspondiente a
ESTECIFRADOXESWUNAKCHUFA-MACABEA
me sale
fn dn bn hñ dm bp lñ jn kn en cn lr bo añ lv fm
am cñ lt hn eo gñ lo ep em go aq gu br cm hp hr
y a tí
ir cv bn fs dm gq lo io kn ds in ls cq bs lw cw
ko cñ lt dm es gñ lñ et hm iu fu hw hr cm fv cñ
Comprobándolo en el tablero ambos producen el mismo resultado. En mi caso la explicación es que al cifrar cada carácter voy eliminando la correspondiente combinación del tablero de arriba a abajo para evitar en lo posible la duplicidad de salidas. Como verás en tu cifrado se repiten dm y cñ, y en el mío ninguna (lo cual no quiere decir que mi método sea mejor sino todo lo contrario).
Como Murphy me sopla en la oreja ahora voy a comprobar si el programa funciona también con el texto del reto, no sea que el tío también tenga razón.
Aleatoriedad
En efecto, como las letras se corresponden con varios pares, se elige uno de ellos al azar. Eso libera al usuario de la tediosa responsabilidad de decidir cuál toma, y supongo que dificultará más el análisis estadístico.
Puedo preparar otra versión que lea directamente el fichero a cifrar, cuando éste sea demasiado grande para introducirlo línea a línea.
P.S.
Release note:
Cuando procesa el texto, además de quitar espacios, acentos y convertir todo a mayúsculas, toma como guiones "-" todos los caracteres que no pertenecen al alfabeto, tanto los signos de puntuación como signos de interrogación y admiración, paréntesis, arrobas, almohadillas y cagaditas de pájaro. Si se quiere que sólo algunos signos se conviertan en guiones habría que hacer una pequeña modificación. Ojo al parche.
Celebro que te haya gustado. Es un placer.
El gusto ha sido mío.
>"Cuando procesa el texto, además de quitar espacios, acentos y convertir todo a mayúsculas, toma como guiones "-" todos los caracteres que no pertenecen al alfabeto, tanto los signos de puntuación como signos de interrogación y admiración, paréntesis, arrobas, almohadillas y cagaditas de pájaro."
Pues me he dado cuenta con las pruebas que he efectuado. Es que ni queriendo se equivoca el jodido. Nuevamente recibe mis más efusivas felicitaciones. Lo de preparar una versión que lea directamente el archivo a cifrar ya sería un puntazo porque así un servidor de usté podría cifrar de una tacada mucho más texto.
Ya está, he aquí la implementación definitiva
Bueno, ya está, el problema era que me auto-limitaba a 144 caracteres de clave, y así no había suficientes caracteres para añadir.
Esta es:
Clave:
YVIOJEHOVAQUELAMALDADDELOSHOMBRESERAMUCAENLATIERRA-YQUETODODESIGNIODELOSPENSAMIENTOSDELCORAZNDEELLSERAECNTINUSLAENTLA-YSPNJBC-UZ-UPPQGFFÑÑXXKKWW
Cifrado:
fn,bs,bn,eu,hn,bp,lñ,jn,jw,gv,gr,lr,kv,bw,lv,im,at,ep,lu,hn,eo,fm,lñ,cñ,ap,go,br,hw,et,ho,kr,jw
Descifrado:
ESTECIFRADOXESWUNAKCHUFA-MACABEA
En el Botón Microsoft Office escojer sucesivamente:
- opciones de Excel
- Más frecuentes
- Mostrar ficha Programador
- Grupo Código
- Visual Basic
- Insertar Módulo
- Archivo Cerrar
Para obtener la clave de un texto, situado por ejemplo en la celda de Excel A60:
=haz_clave(A60)
para cifrar
=meter(A1;A62)
para descifrar
=sacar(A1;A2)
Parece que por fin lo has conseguido
Gracias también a tí por tu implementación, aunque desgraciadamente no he podido comprobar aún su funcionamiento. Te mando un privado.
Está muy bien
El código queda muy claro y escueto.
Lo bueno, si poco...
...y de lo malo, lo menos. Así me curo en salud, me gustan las cosas claritas y manejables, para tirar millones de líneas ya están los esclavos de Microsoft.
Por cierto, si miras TFTR el código aún es menor...y el reto sigue resistiendo. Ahora estoy pensando en algo AÚN más minimalista.
MtsaK no creo que se pueda resolver, a menos que se disponga de suficiente texto. Las claves homofónicas, si el texto es corto y se reparten con cuidado los homófonos son dificilísimas de romper, pero son engendros de laboratorio.
La gracia está en que en condiciones reales, esas circunstancias nunca se cumplen, vease el archiconocido episodio de la captura del "Mar Cantábrico" durante la Guerra Civil: los republicanos siguieron utilizando la Clave X -homofónica- aún después de la captura del buque, para gozo del Servicio de Descriptado Nacional que operaba en Mallorca.
Utilizando un programa puede que las frecuencias se repartan mejor que a mano pero claro, usando la función RND seguro que no vamos a llegar excesivamente lejos..
Ahora pregunto:
¿Como cuanto texto necesitáis para el ataque?. ¿Kilo y medio, dos?. Venga, que lo preparo en cuanto tenga un rato.
Pueees...todo lo que puedas
Los criptosistemas con homófonos pueden llegar a ser extremadamente difíciles de romper, especialmente si la asignación de tales valores no sigue una lógica como en los ejemplos anteriores, en que éstos eran obtenidos a partir de un texto muy conocido
http://es.scribd.com/doc/67404111
..que será poco, mira la cifra de Beale, o el criptograma del asesino del Zodiaco. Ahí siguen.
Como ejecutar el código VBA en Excel 2003
Como me habéis preguntado sobre como ejecutar el código, os pongo este breve resumen, para Excel 2003
Primero abrid el editor VBA:
https://sites.google.com/site/callaeciarisit/explicacion1.JPG
Después insertáis un nuevo módulo:
https://sites.google.com/site/callaeciarisit/explicacion2.JPG
Ahí pegáis el código propuesto:
https://sites.google.com/site/callaeciarisit/explicacion3.JPG
Cerráis el editor y ponéis la clave y el texto en claro en cualquier celda de la hoja. Además en otra, en este caso en A1, hay que llamar a la función de construcción de clave, pasándole como parámetro la referencia a la celda que contiene la clave, A8:
https://sites.google.com/site/callaeciarisit/explicacion4.JPG
Esto nos construye la clave:
https://sites.google.com/site/callaeciarisit/explicacion5.JPG
Ahora llamamos a la función de codificar, "meter", pasándole como parámetros las celdas donde están la clave y el texto (A1;A11):
https://sites.google.com/site/callaeciarisit/explicacion6.JPG
La función para descifrar es "sacar":
https://sites.google.com/site/callaeciarisit/explicacion7.JPG
Espero que haya quedado claro, el VBA es algo extraordianario que convierte Excel (y a Open Office) en unas herramientas poderosísimas.
Imágenes:
Muchas gracias, compañero de fatigas
La única parte de tu explicación que puede dar lugar a algún error de interpretación se halla en
"Cerráis el editor y ponéis la clave y el texto en claro en cualquier celda de la hoja."
Para cerrar el editor hay que ir, dentro de esa misma ventana cuyo título es "Microsoft Visual Basic - Libro1", a
Archivo > Cerrar y volver a Microsoft Excel. (Queda como más fino, ¿no?)
Te he dado más trabajo pero ahora seguro que no queda nadie que pueda decir que no sabe ejecutar tu programa.
Leer de un fichero
Si añades esta función al final del código, te devolverá en una celda de excel el contenido de un fichero. Además te convertirá el texto pasándolo a mayúsculas, quitando acentos, espacios, poniendo guiones, etc:
Está limitado al tamaño máximo de variable en vba, pero con ficheros pequeños, de 20 Kb o así, va bien. Si necesitas procesar archivos más grandes preparo una función que coja de un fichero y deje el cifrado en otro. Es un momento.
Hay que pasarle como parámetro el path completo del fichero:
Muy interesante
En otros tiempos conseguí implementar algún cifrado en Hoja de Cálculo a base de intoducir muchas celdas auxiliares que ejecutaban funciones numéricas y de string. De esta otra forma es mucho más claro y eficiente.
Buen trabajo.
Por fin el texto del reto ampliado
No os quejaréis, más de 200 KG de peso. Concretamente 200.537 gramos que podréis descargar desde aquí:
https://docs.google.com/open?id=0B-9teEAT254lYkJLbVloNlctVlk
Disculpad el retraso.
Tas disculpao
Je, je.
Aquí donde lo véis sentadito y dormidito como un lirón
que no os engañe, que lo hace para despistar porque su mente siempre está alerta. Este hombre es todo un artista programando en logo. Gracias a su programa inicial perfeccionado tenéis ahora en vuestras cestas de la compra todo ese kilaje de rico manjar que podréis degustar hasta atragantaros (ñieeejejeje).
Otra cosa más. Debido a mi falta de destreza con Excel no he podido comprobar el programa de tokamak en su versión ampliada para cifrar. Sin embargo sí lo he usado para descifrar de una tacada más de 20 KB de texto cifrado y he de decir que funciona perfectamente.
Muchísimas gracias a los dos por vuestro esfuerzo.
Al ataqueeeel
Se agradece el agradecimiento. Pero ahora toca el ataque. Un cifrado homofónico nunca lo es bastante. En el caso que nos ocupa debería haber más símbolos para la E y para la A. De hecho podría haberlos, sin más que formar un tablero más grande, por ejemplo de 27x27, o más grande aún.
Como tenemos 144 pares, si la homofonía fuera perfecta, esperaríamos una frecuencia bastante uniforme, en torno a 1/144 = 0.69 % para cada uno de ellos, en el cifrado. Pero, tomando por el ejemplo el caso de la E, al que se le supone una frecuencia relativa de un 16.78 % en el idioma, al representarla mediante 18 pares es de esperar que la frecencia real de cada uno en el cifrado sea de 16,78/18 = 0.93%, bastante mayor que el valor promedio 0.69%. Algo parecido ocurrirá con los símbolos de A, O, L, S, N y D. En cambio, los pares asignados a R, U, I, T, C, P están mucho más ajustados. Después, desde la M hasta la W, el número de pares asignados es mayor de lo que sería correcto, por lo que es de esperar que se obtengan valores más bajos que 0.69% para sus frecuencias en el cifrado.
En suma, encontraremos pares con frecuencias mayores que 0.69 %, que supuestamente corresponderan a las letras más frecuentes del idioma, luego un grupo de pares con frecuencias más ajustadas al 0.69%, en la zona media, y valores de frecuencias inferiores a 0.69 % que corresponderían a las letras menos frecuentes en el idoma. Por otra parte tendremos la conducta de los cuatro símbolos asignados al guión. Si se hubiera asignado al espacio hubiera necesitado casi 30 símbolos, o sería fácilmente detectable por su mayor abundancia, pero el malvado infosniper ha suprimido hábilmente los espacios. Sin embargo, se dispone de la frecuencia de algnos signos de puntuación, en el caso de la Regenta. Concretamente conocemos la frecuencia de los signos "." "," ";" y ":", que automáticamente se asignarán al guión "-". Y la frecuencia será mayor aún porque todo carácter que no corresponda a las letras del alfabeto (admiraciones, interrogaciones, paréntesis, números, etc.) se traducen en guiones en el algoritmo que le hemos suministrado al Maléfico. Que conste que no ha sido intencionado, que uno no piensa tanto cuando lo que le preocupa es que el programa funcione de una maldita vez. Pero visto ahora es como si le hubiéramos colado una pequeña puerta trasera. En efecto, la suma de las frecuencias de los citados signos de puntuación es de 3.86%, que repartido entre los cuatro pares asignados nos da 0.97, o quizá supere el valor de los pares de la A. Ya se verá
Me he permitido tomar los valores de frecuencias de la Regenta, en vez de los que propone el autor, eliminado la del espacio. Eso cambia bastante los valores de algunas de ellas, como la de la propia E. Las cuentas que me salen son:
Obsérvese que se distinguen perfectamente las tres zonas de las que antes hablábamos, aunque las letras involucradas son diferentes por usar otra fuente de frecuencias lingüísticas:
a) Frecuencias esperables de pares en el cifrado mayores que 0.69, desde la A a la T.
b) Frecuencias en torno a 0.69 (lo que sería el comportamiento homofónico), entre la E y la M
c) Frecuencias menores que 0.69, desde la P hasta la W
La otra vía de ataque es la de encontrar la frecuencia de dígrafos, trígrafos, etc. Combinando esta información con la frecuencia de los pares individuales, podríamos detectar las agrupaciones
Nada, chicos, que está chupao.
Lo malo es que yo ando escaso de tiempo de máquina estos días. Pero seguro que alguno de vosotros lo destripa.
Hasta pronto.
Páginas
opinar