sábado, 7 de marzo de 2015

Criptografía (I): cifrado Vigenère y criptoanálisis Kasiski

Hace unos días mi amigo Iñaki Regidor (@Inaki_Regidor), a quien dedico esta entrada :), compartió en las redes sociales un post titulado "Criptografía: el arte de esconder mensajes" publicado en uno de los blogs de EiTB.

En ese post se explican ciertos métodos clásicos para cifrar mensajes, entre ellos el cifrado de Vigenère, y, al final del mismo, se propone un reto consistente en descifrar un mensaje, lo que me ha animado a escribir este post sobre el método Kasiski para atacar un cifrado polialfabético (conociendo la clave descifrar el mensaje es muy fácil, pero lo que contaré en este post es la forma de hacerlo sin saberla).

El mensaje a descifrar es el siguiente:

LNUDVMUYRMUDVLLPXAFZUEFAIOVWVMUOVMUEVMUEZCUDVSYWCIVCFGUCUNYCGALLGRCYTIJTRNNPJQOPJEMZITYLIAYYKRYEFDUDCAMAVRMZEAMBLEXPJCCQIEHPJTYXVNMLAEZTIMUOFRUFC

Como ya he dicho el método de Vigenère es un sistema de sustitución polialfabético, lo que significa que, al contrario que en un sistema de sustitución monoalfabético, cada carácter del texto a cifrar NO se sustituye siempre por el mismo carácter en el texto cifrado, es decir, es un sistema en el que hay implicados varios alfabetos y dependiendo de ciertas circunstancias se aplica uno u otro.

Se trata también de un sistema de cifrado simétrico, es decir, el emisor del mensaje lo cifra utilizando una clave y el receptor debe descifrarlo utilizando esa misma clave. Por tanto, el emisor y el receptor se tienen que poner de acuerdo en la clave a utilizar.

Antes de pasar a resolver el problema planteado veamos muy brevemente como funciona el cifrado de Vigenère.

1º) Se basa en la siguiente tabla:


2º) Por ejemplo, para cifrar el mensaje "EJEMPLO CIFRADO" con la clave "CLAVE", ponemos la clave encima del texto a cifrar repitiendo la clave tantas veces como haga falta hasta cubrir completamente el texto a cifrar, de la siguiente manera:


Y ahora para obtener el texto cifrado sólo queda sustituir cada carácter del texto a cifrar por el carácter de la tabla anterior que se encuentra en la intersección entre la columna que corresponde al carácter a cifrar y la fila correspondiente al carácter de la clave que está justo encima, vamos como en el juego de los barcos.

Por ejemplo: a la primera "E" del texto a cifrar, que tiene justo encima la "C" de la clave, le correspondería como carácter en el texto cifrado la letra "G". Es decir:


Si repetimos esto para cada uno de los caracteres del texto a cifrar obtenemos el siguiente mensaje cifrado o criptograma:


3º) Fácil, ¿no?. Pues para descifrar sólo tenemos que poner la clave encima del texto cifrado repitiendo la clave tantas veces como haga falta hasta cubrir completamente el texto cifrado, de la siguiente manera:


Y ahora para descifrar el texto sólo queda sustituir cada carácter del texto cifrado por el carácter de la columna que le corresponde al carácter cifrado en la fila correspondiente al carácter de la clave que está justo encima.

Por ejemplo: a la letra "G" del texto cifrado, que tiene justo encima la "C" de la clave, le correspondería como carácter en el texto descifrado la letra "E". Es decir:


Si repetimos esto para cada uno de los caracteres del texto cifrado obtenemos el siguiente mensaje descifrado o texto en claro:



Hasta aquí todo muy fácil; conociendo la clave ningún problema para descifrar el mensaje, pero supongamos que interceptamos un mensaje de este tipo y queremos descifrarlo sin saber la clave: ¿es posible?.

Pues sí, siempre que el mensaje sea lo suficientemente largo para que sea eficaz el método de criptoanálisis aplicado a los cifrados de sustitución polialfabéticos al que he hecho referencia al principio de este post (método Kasiski).

Volvamos entonces al mensaje que se nos propone descifrar en el post titulado "Criptografía: el arte de esconder mensajes". El siguiente:

LNUDVMUYRMUDVLLPXAFZUEFAIOVWVMUOVMUEVMUEZCUDVSYWCIVCFGUCUNYCGALLGRCYTIJTRNNPJQOPJEMZITYLIAYYKRYEFDUDCAMAVRMZEAMBLEXPJCCQIEHPJTYXVNMLAEZTIMUOFRUFC

a) Lo primero que debemos hacer para descifrarlo sin conocer la clave es intentar averiguar cuál es la longitud de la misma.

Comentar que Kasiski se percató de la existencia de secuencias de caracteres repetidos en el texto cifrado, lo cual significaba casi con toda probabilidad que dichas secuencias no sólo eran la misma antes del cifrado sino que además la clave debía coincidir en la misma posición, por lo que lo primero que debemos hacer es detectar secuencias de letras cifradas repetidas.

Para nuestro criptograma (a simple vista, aunque esto sería mucho más fácil con un pequeño programa de ordenador) las siguientes:

LNUDVMUYRMUDVLLPXAFZUEFAIOVWVMUOVMUEVMUEZCUDVSYWCIVCFGUCUNYCGALLGRCYTIJTRNNPJQOPJEMZITYLIAYYKRYEFDUDCAMAVRMZEAMBLEXPJCCQIEHPJTYXVNMLAEZTIMUOFRUFC

Es decir:

- 3 cadenas "UDV" separadas por 8 y 32 posiciones.
- 2 cadenas "MUE" separadas por 4 posiciones.
- 2 cadenas "MUO" separadas por 108 posiciones.

Luego podemos pensar que el número de caracteres de la clave puede ser el mcd(4, 8, 32, 108) = 4. Es decir, la longitud más probable de la clave es 4, que es el máximo común divisor o mayor número entero que divide a todos estos números (posiciones) sin dejar resto.

b) Una vez que hemos averiguado la longitud de la clave (L), si no nos hemos equivocado, lo siguiente que tenemos que hacer es dividir el criptograma en L subcriptogramas (en nuestro caso 4), ya que estos han sido cifrados por una misma letra de la clave, a partir de lo que estaríamos en disposición de realizar un ataque simple de tipo estadístico monoalfabético.


Por tanto:

- El primer subcriptograma (CA) contendría los siguientes caracteres del criptograma: 1º, 5º, 9º, etc.

En nuestro caso:


- El segundo subcriptograma (CB) contendría los siguientes caracteres del criptograma: 2º, 6º, 10º, etc.

En nuestro caso:


- El tercer subcriptograma (CC) contendría los siguientes caracteres del criptograma: 3º, 7º, 11º, etc.

En nuestro caso:


- Y, finalmente, el cuarto subcriptograma (CD) contendría los siguientes caracteres del criptograma: 4º, 8º, 12º, etc.

En nuestro caso:


c) Ahora estamos ya en disposición de realizar un ataque simple de tipo estadístico monoalfabético.


A partir de aquí y considerando que la posición relativa de la letra "A" es el valor 0, la letra "E" está 4 espacios a la derecha de la "A" y la letra "O" está 11 de la letra "E"buscaremos en cada subcriptograma (Ci) caracteres frecuentes que cumplan con esa distribución: 0, +4, +11 mod 27:

- Para CA elegimos RVG (2, 8, 2), luego la letra clave sería la "R".

- Para CB elegimos AEO (5, 5, 1), luego la letra clave sería la "A".

- Para CC elegimos UYJ (11, 6, 1), luego la letra clave sería la "U".

- Para CD elegimos LOZ (3, 2, 3), luego la letra clave sería la "L".

Con la clave = "RAUL", utilizando la tabla y siguiendo los pasos para descifrar este tipo de mensajes indicados en este post, obtenemos el siguiente texto plano a partir del texto cifrado:

UNASEMANAMASELREGALODELPROBLEMADEMATEMATICASESELLIBROGARDNERPARAPRINCIPIANTESQUESESORTEARAENTRETODASLASPERSONASQUEDESCIFRENESTEMENSAJEFIRMADORAUL

Es decir:

UNA SEMANA MAS EL REGALO DEL PROBLEMA DE MATEMATICAS ES EL LIBRO GARDNER PARA PRINCIPIANTES QUE SE SORTEARA ENTRE TODAS LAS PERSONAS QUE DESCIFREN ESTE MENSAJE FIRMADO RAUL

Nota: Como se ha incluido un comentario en este post en el que me plantean ciertas dudas sobre el último paso indicado, y he recibido por otras vías dudas en el mismo sentido, he escrito un nuevo post en el que trato de contar mejor la última parte del criptoanálisisCriptografía (XIX): cifrado Vigenère y criptoanálisis Kasiski (II).

54 comentarios:

  1. Hola, tengo una duda, en el mensaje cifrado la cadena VMU aparece 4 veces, siendo este el trigrama más frecuente, pero no se tiene en cuenta para el análisis. ¿Por que no se tiene en cuenta?. Y si se tuviera en cuenta funcionaría igual?.... aunque creo que si porque la distancia que los separa es 24, 4, 4, 4... y también se obtendría 4 como el máximo común divisor.

    ResponderEliminar
  2. Hola Diego: efectivamente la cadena VMU aparece 4 veces y no la he tenido en cuenta porque simplemente no me di cuenta :), pero como bien como las distancias que las separa son 24, 4 y 4 no influiría en el resultado puesto que el máximo común divisor seguiría siendo cuatro.

    Muy buena observación y gracias por comentar.

    Un saludo,

    ResponderEliminar
  3. Hola Mikel, no termino de entender la última parte, la del análisis de frecuencias. ¿Por qué has escogido las letras A, E y O como referencia? Entiendo que la A es por ser la primera del alfabeto, pero, ¿y las demás? En la primera subcadena ¿por qué eliges la letra R como primera letra, si la letra V es la que más frecuencia tiene en el texto? ¿En el gráfico de al lado, qué frecuencias expresas exactamente? Las del idioma en español no, ¿verdad? Como podrás comprobar me he hecho un lío =S
    Un saludo.

    ResponderEliminar
  4. Buenas tardes Javier:

    - Las letras A, E y O se cogen como referencia por ser las letras más frecuentes en español, tal y como se muestra en la figura con la que trato de ilustrar la última parte del análisis de frecuencias (aunque esto depende de los autores, ya que algunos dicen que sería: E, A y O, pero esto tampoco es demasiado importante porque la suma de aparición de estas tres letras en un texto en español sí que es la más frecuente sin duda, y obtendríamos también la clave sin problemas).

    - La idea, por tanto, consistiría en obtener, en cada subcadena o subcriptograma, la suma mayor de frecuencias relativas de caracteres del texto cifrado que cumplan con la distribución de esos caracteres en español (0, +4, +11).

    - Una vez obtenida la suma mayor de frecuencia de aparición de caracteres en cada subcriptograma, la primera letra de esa distribución más frecuente sería la letra de la clave (de la fila de la tabla que se muestra en el post) con la que se cifró ese subcriptograma, es decir, la que indica el alfabeto (carácter de la clave) utilizado de los 27 posibles (las 27 letras del alfabeto español).

    - Sobre este tema, por si te puede servir para despejar las dudas que te surgen, he escrito otro post en este blog http://mikelgarcialarragan.blogspot.com.es/2015/09/ejemplo-criptoanalisis-kasiski-cifrado.html en el que intento explicarlo en detalle sobre otro ejemplo de texto cifrado.

    No obstante, tras releer éste y el post que te digo, creo que no lo he explicado muy bien, por lo que en breve pondré otro post intentando explicarme mejor y utilizando este mismo ejemplo (el que figura en este post).

    Un saludo y muchas gracias por comentar.

    ResponderEliminar
  5. Buenas tardes Javier:

    He publicado un nuevos post en el que intento explicar mejor la última parte del método Kasiski.

    Espero haberlo contado bien y de forma más comprensible que en este post.

    Un saludo,

    ResponderEliminar
  6. Muchísimas gracias Mikel, nos ha servido de mucha ayuda para un trabajo de la universidad. Aquí dejo el enlace del script en Python que hemos hecho mi amigo y yo, por si a alguien le interesa: https://github.com/javibolibic/SPSI/blob/master/kasiskiAttack.py

    ResponderEliminar
  7. Me alegro de que os haya servido y gracias a ti.

    Un saludo,

    ResponderEliminar
  8. Buenas tardes necesito traducir un mensaje que viene en un Cryptogram , quien me puede ayudar

    ResponderEliminar
  9. Buenas tardes necesito traducir un mensaje que viene en un Cryptogram , quien me puede ayudar

    ResponderEliminar
    Respuestas
    1. Buenas tardes:
      Si quieres pon el criptograma como comentario y lo intentamos.

      Eliminar
  10. no entiendo de donde sale el 11

    ResponderEliminar
  11. Buenas Anónimo:

    Supongo que te refieres a que no entiendes el 11 cuando pone: 0, +4, +11 mod 27.

    Para ello, considera las letras del abecedario español: A,B,C,D,E,F,G,H,I,J,K,L,M,N,Ñ,O,...

    Es decir: La "A" ocuparía la posición 0, la "E" está 4 posiciones a la derecha de la "A" y la "O" está a 11 posiciones de la "E".

    Un saludo,

    ResponderEliminar
  12. Estoy intentando hacer un ejercicio, pero el mcd me da 1, entonces que debo hacer?

    ResponderEliminar
    Respuestas
    1. Si me pasas el criptograma en forma de comentario te comento por qué puede ser. Sin ver el criptograma es complicado.

      Un saludo,

      Eliminar
    2. IHSLMDLTN IM ONAIRQL
      BLGL HAIGTNSX ANTRIH ITTL IH HQIRBGI TL RKUIG. GLGL ÑIY TI NQ
      RIMSQNMLGL DI NJGN RNDN. L HKH NUNH, ITTL ISTQBHL W DNRQML L
      JNDN HK HIVN. W MN IH FKI HQMJQIGL BNG QGIMI LDTIG MLDL BLGISQDN
      LT LRNG. JNDLH TLH IRNSQNMIH, W IM IHBISQLT IHL, GIHKTJLOLM
      LONRQMLOTIH BLGL HK QMJITQZIMSQL EGQL W BGISQHL BIGN
      LDRQGLOTIRIMJI IFKQTQOGLDL. HQIRBGI TN AI JIMQDN BNG TL RLFKQML
      DI NOHIGÑLG W GLYNMLG RLH BIGEISJL FKI AL SNMNSQDN IT RKMDN,
      BIGN SNRN LRLMJIMN ALOGQL HLOQDN FKI ALSIG. ULRLH ALOTLOL DI
      TLH BLHQNMIH RLH JQIGMLH, HQ MN IGL SNM DIHBGISQN W HLGSLHRN.
      IGLM SNHLH LDRQGLOTIH BLGL IT NOHIGÑLDNG, IVSITIMJIH BLGL
      TIÑLMJLG IT ÑITN FKI SKOGI TNH TNJQÑNH W TNH LSJNH DI TL ZIMJI. BIGN
      BLGL KM GL YNMLDNG IVBIGJN, LDRQJQG JLTUH QMJGKHQNMIH IM HK
      DITQSLDN DI DQHJGLDDQNM SLBL Y DI HIROGLG DI DKDLH JNDNH TNH
      GIHKTJLDNH DI HK RIMJI. BLGL KM SLGLSJIG SNRN IT HKWN, KML
      IRNSQNM EKIGJI GIHKTJLOL JLM BIGJKGOLDNGL SNRN TL BGIHIMSQL DI
      LGIML IM KM QMHJGKRIMJN DI BGISQNM N TL GNJKGL DI KML DI HKH
      BNJIMJIH TKBLH.

      Eliminar
    3. Buenas anónimo:

      El criptograma que me pasas no ha sido cifrado con un criptosistema de sustitución polialfabética.

      Lo que me hace sospechar esto es la gran cantidad de cadenas repetidas (algunas de ellas de bastante longitud) que se encuentran en el criptograma y que, como bien dices el mcd de las posiciones que las separan es 1.

      Por tanto, una vez que he sospechado esto, he calculado el IC (Índice de Coincidencia) del criptograma, ya expliqué cómo hacerlo en un post de este blog, y obtengo un resultado que se aproxima muchísimo al IC del idioma español, lo que me lleva a concluir que ha sido cifrado con un criptosistem de sustución monoalfabética (se ha empleado un único alfabeto, o si lo prefieres que la longitud de la clave es 1) o de transposición.

      Cuando tenga un rato intentaré descifrarlo y pondré el resultado en el siguiente comentario.

      Un saludo,

      Eliminar
    4. Buenas otra vez Anónimo:

      Ya he tenido un rato para descifrar el criptograma.

      Con lo que te he indicado en el comentario anterior es muy fácil descifrarlo realizando un simple análisis de frecuencias (en este caso aún más, ya que como se incluyen en el texto cifrado los espacios y signos de puntuación, nos da pistas sobre las palabras de texto en claro), ya que he verificado que se trata de una sustitución monoalfabética (se ha utilizado un único alfabeto para sustituir las letras del texto en claro por sus correspondientes letras en el criptograma).

      Te dejo a ti que hagas el análisis de frecuencias, lo descifres y pongas la solución como comentario ;).

      Tres pistas sobre el texto en claro (que como te dije en el anterior comentario está escrito en español). Tiene que ver con:

      1.- Arthur Conan Doyle.
      2.- Sherlock Holmes, su personaje más famoso.
      3.- El primer relato corto que escribió en el que aparece ese personaje ("Escándalo en Bohemia").

      Si no te sale pongo yo la solución ;).

      Un saludo,

      Eliminar
  13. oo muchas gracias ya lo logre...Gracias por tu ayuda

    ResponderEliminar
  14. Interesante post y sin duda un magnífico blog.
    Un saludo

    ResponderEliminar
  15. Hola buenos, días! Necesito ayuda para descifrar un criptograma que me han hecho para mi cumpleaños. Creo que cumple las caracteristicas del criptograma polialfabetico porque las letras van cambian de sustitucion. lo que pasa es que me ha dicho que la clave son numeros (191294) y con eso debo resolverlo. Como se haria en ese caso?

    ResponderEliminar
    Respuestas
    1. A continuación te pongo el texto:

      Ñx tqh qbmjg yesj brjvflft nq ud wkme z
      jstnfbcbtci mj ggtmdqecm. C bd´ñ cbm´ mx jociñcp
      rxvrdf ox wf´ bj vd isnt nj pjj. Mq qqunñvx,
      tbab fnwddctqv mj wqa hbm.

      Eliminar
    2. Los apóstrofes son tildes

      Eliminar
    3. Buenas Anónimo:

      A ver que podemos hacer :), déjame un poco de tiempo, y ¡FELIZ CUMPLEAÑOS!.

      Un saludo,

      Eliminar
    4. ¡Muchas gracias! ¿Cómo va eso? ¿Ha descubierto algo?

      Eliminar
    5. Buenas Anónimo:

      Me he puesto con ello hace un rato y no es difícil, te han dado muchas pistas.

      Lo primero que debes hacer es dividir el criptograma en 6 subcriptogramas (la clave es '191294', que tiene una longitud de 6).

      Cada uno de esos subcriptogramas está cifrado con el alfabeto correspondiente a uno de los dígitos de la clave (el primero con el correspondiente al '1', el segundo con el del '9',..., y el sexto con el del '4').

      Cada dígito de la cave indica el desplazamiento con respecto al alfabeto normal utilizado para cifrar el texto en claro. por ejemplo:

      - En el primer subcriptograma, cifrado con '1', se ha sustituido la letra del texto en claro por la que ocupa una posición más adelante en el alfabeto (la 'a' por la 'b', la 'b' por la 'c',..., y la 'z' por la 'a').

      - En el segundo subcriptograma, cifrado con '9', se ha sustituido la letra del texto en claro por la que ocupa nueve posición más adelante en el alfabeto (la 'a' por la 'j', la 'b' por la 'k',..., y la 'Z' por la 'i'.

      - Y así sucesivamente.

      Una pista sobre el texto en claro, empieza por:

      "No soy nadie para aparecer en tu vida y arrebatarte la felicidad...".

      Un saludo,

      Eliminar
    6. Buenas Anónimo:

      Como complemento al comentario anterior te pongo la solución completa, por si no me he explicado muy bien.

      1.- Dividimos el criptograma en 6 subcriptogramas (porque “191294” es la clave, que tiene una longitud de 6 dígitos):

      Para ello completamos una tabla de 6 filas que vamos rellenando por columnas con las letras del criptograma (la primera columna con los seis primeros caracteres del criptograma, la segunda con los seis siguientes, la tercera con los seis siguientes,… y así hasta agotar todos los caracteres del criptograma), de la siguiente manera:

      Ñ b s f u z b m d b m ñ r f s j u b d m b
      x m j l d j c j q d x c d b n j n a d j m
      t j b f w s b g e ñ j p f j t M ñ b c w
      q g r t k t t g c c o r o v n q v f t q
      h y j n m n c t m b c x x d j q x n q a
      q e v q e f i m C m i v w i p q t w v h

      2.- Cada una de estas filas (subcriptogramas) ha sido cifrada utilizando el alfabeto correspondiente a un dígito de la clave: la primera fila con el correspondiente al “1”, la segunda con el correspondiente al “9”, la tercera con el correspondiente al “1”, …, la sexta con el correspondiente al “4”.

      Cada uno de los dígitos de la clave indica el desplazamiento con respecto al alfabeto normal que se ha utilizado para el cifrado, es decir, el alfabeto empleado para cifrar.

      Alfabeto “1”: En la primera fila (subcriptograma), cifrado con el alfabeto correspondiente al “1” (primer dígito de la clave)', se ha sustituido cada letra del texto en claro por la que ocupa una posición más adelante en el alfabeto normal (la 'a' por la 'b', la 'b' por la 'c',..., y la 'z' por la 'a').

      Y, por tanto, para descifrar la primera fila (subcriptograma) sólo tenemos que sustituir cada letra de ella por la que ocupa la posición anterior en el alfabeto normal:

      N a r e t y a l c a l n q e r i t a c l a

      Alfabeto “9”: En la segunda fila (subcriptograma), cifrado con el alfabeto correspondiente al “9” (segundo dígito de la clave)', se ha sustituido cada letra del texto en claro por la que ocupa nueve posiciones más adelante en el alfabeto normal (l la 'a' por la 'j', la 'b' por la 'k',..., y la 'z' por la 'i'):

      Y, por tanto, para descifrar la segunda fila (subcriptograma) sólo tenemos que sustituir cada letra de ella por la que ocupa la novena posición anterior en el alfabeto normal:

      o d a c u a t a i u o t u s e a e r u a d

      Y así sucesivamente con el resto de filas (subcriptogramas).

      3.- Lo que nos da:

      N a r e t y a l c a l n q e r i t a c l a
      o d a c u a t a i u o t u s e a e r u a d
      s i a e v r a f d n i o e i s L n a b v
      o e p r i r r e a a n p n t l o t d r o
      y p a e d e t l d s t o o u a i o e i r
      n a r n a b e i Y i e r s e m n p s r d

      Y ahora, para obtener el texto en claro sólo hay que leer esta tabla por columnas, es decir:

      NosoynadieparaaparecerentuvidayarrebatartelafelicidadYaunasilointentoporquenosesituereslamiaLointentoparadescubrirlaverdad.

      Con lo que el texto en claro sería algo así como:

      No soy nadie para aparecer en tu vida y arrebatarte la felicidad. Y aún así lo intento porque no sé si tú eres la mía. Lo intento para descubrir la verdad.

      Eliminar
  16. Hola, buenas tarde, tengo una duda para sacar la ultima letra de la clave, ya que si si cogieramos PTE (5,2,3), seria mayor que al coger LOZ (3,2,3). ¿Porque cogeriamos la L y no la P?
    Muchas gracias.

    ResponderEliminar
  17. Buenas Álvaro:

    El análisis de frecuencias en cada uno de los subcriptogramas nos dará una idea de cuál puede ser la letra de la clave, con mayor probabilidad de que así sea cuanta mayor sea la longitud del subcriptograma en cuestión.

    En nuestro ejemplo los subcriptogramas no son muy largos y, por tanto, la suma de frecuencias relativas de los caracteres más frecuentes en cada uno de ellos que cumplan con la distribución 0, +4, +11 mod 27 nos dará una pista muy importante de qué letras pueden corresponderse en el cifrado de Vigenère con las tres letras más frecuentes en castellano (considerando la tabla en que se basa ese criptosistema y la frecuencia de las letras en un texto en claro escrito en español: "A", "E" y "O"), pero bien entendido que nos da una pista muy importante, pero no definitiva, ya que en subcriptogramas no muy largos podría ser que esa suma de frecuencias de los caracteres de mayor aparición no se corresponda necesariamente con la "A", "E" y "O", pero casi con total seguridad otra suma de frecuencias que se aproxime a ésta se corresponda con esos caracteres.

    Por tanto, no se trata de una ciencia "exacta" y deberemos considerar también sumas de frecuencias relativas que se aproximen a la mayor, sobre todo, tal y como digo en subcriptogramas no muy largos.

    Un saludo,

    ResponderEliminar
  18. Hola.

    Di por casualidad con este interesante blog. Si alguien tiene la curiosidad de pasarse por el mío, hay un concurso literario/criptográfico hasta el 6 de Enero. El código a descifrar es muy sencillo, si se anima alguien.

    De premio, un libro y un paraguas.

    La explicación, aquí:

    http://paraguascongoteras.blogspot.com.es/2016/11/concurso-navideno-de-premio-un-paraguas.html

    El código a descifrar (es muy sencillo), aquí:

    http://paraguascongoteras.blogspot.com.es/p/blog-page_24.html

    Saludos.

    ResponderEliminar
  19. Hola,
    me gustaría saber si me podrías ayudar a desencriptar por el método Kasiski un texto que encriptado por Vigenere. En concreto me gustaría que me ayudaras a encontrar la longitud de la clave y el proceso por el cual la has conseguido.
    El texto cifrado es el siguiente:
    oajq aapa um yo cuv keeqmfa duq ej qzparkiatq mv tb pmrvkr. nu ec éfvta, nz my padvz, ai ql uqaedo, dáa nlxá dv tb iypimfcunuqolq przn vuvzz poz dzoaipau. xnsa dv tns ooiwaae dv tnudecmf y pe cwf hmlrobs eutqbs. ugliy qge gifo pec nnnso um ya qnmqqim, dv tn mmlvlvcqntqn y ql acvcuo rrrna. agieta a cwf qgeaczbdojwf y yacphmarrlbs, m lfa rgaískif y mmsqpiasfa duq ajxvrmn r zrpasrz rn fudjns xlvvns pe ywaodej g puqnkif bmntieims, jworq lra duq nrlve peiznmmrá lvn salr tátrumr ma lm qlm duqpr caa baibípuxa dqaúsouci qe beei ieddrlrrm. dvbrsfo cwf cacymf dq llrb qge vvfuoirv rl yuelb, las rjeisoj lr puecmf adrrvpapaj lr uz clmepa tzjvo k prtcifaebr, lms awlae frjeioauif sabim yae pvvnludrlrs pe ywzbdej mfcxamwf qge giqeoee ma lms dqaae dv mfmqrrtqae y um bra a tizbuo um hn beuimo pe gia. rqcyimo ql tqaiemf lr uza jwpiqdrl duq sócw ciqnji rn eu gzbpuo sqrnqskie y ee umfeztzmadq dvt zaxejbnr pe cwf ofrfa, n bmsv lrl ourt pozskzhyq sl lrrdotpr. y m lfa zaxdzbbs unuqsedeebrs cuv vhnoa jm zefee ma lías. jmñnla cfv rl peuw n las yqcócdikif qge umcoeikia uza dwaepa vv yae hlkuae dv tns yijqbnqs gmeo zo twzpmrkma lm mvan can lv vnyixznnfe. r tbs cuv br ablrcqez cliada eimf rqiei l tq asiadanrv pumnuw ge eacma púetltns. m lfa duq cimrn cuv aóyo qs zucodtrvge feeme y qxyqoid ee thgmr um feztzz, cezsrz l sqr.p iuoda, rpbrm, ee mftq mfurnfo um zi hiui, ao cuzmeo oajq aapa. kia sóxo ci gednlzn dq mz izod y ci tlarzwfa oodxnñía pe dqf ayixwf. uzaj khaztra padcrrndms p caae prtnbdaj lr cmrzñw nnfej lr idmv i ya oadi. rl detcrrpo ucycq dv uvs yuvzgoe. ue xnr pe áijblqs rt btdo ciqo pe cwf cdijbnlqs p ca pqdrhb dq czmyo ml hcr sq ajwzez lr thz k lr vbcte.

    ResponderEliminar
  20. Buenas tardes Anónimo:

    Acabo de ver tu comentario y si puedo ayudarte a descifrar el criptograma cuenta con ello :).

    No obstante, tras un análisis preliminar del mismo, comentarte que, aunque me cuadra que puede haberse utilizado un sistema de sustitución polialfabética (el Índice de Coincidencia - IC - del criptograma así parece indicarlo), no me cuadra tanto que se haya cifrado utilizando el método de Vigenère. Es más, tras ese primer análisis yo diría que no.

    Por tanto, una primera pregunta: ¿estás seguro de que el método utilizado en el cifrado es el de Vigenère?. Como te digo, los resultados que a mí me dan, tanto utilizando el método de Kasiski como el IC, no parecen indicarlo así en un primer análisis.

    Un saludo,

    ResponderEliminar
  21. Felicidades por el blog, me encanta.
    Saludos

    ResponderEliminar
  22. Muchas gracias por el comentario Angel.

    Un saludo,

    ResponderEliminar
  23. hola sera que me puedes colaborar con este criptograma es de mucha urgencia porfavor:

    GDMDPSPBPDBDSMPDIFSGDMXFWXAFSMKPFZRPXSIRXXWZRXPSVOPKDFIXKHFG

    XVPSBKXPQWXZRXWDZRXWWFHFHDVEDJBDDKMXSFMFVBFKGXVPFSFVIRXKDSPSCXBPDSMXIXKHFGOFKFKXVDWCXKOKDQWXHFVTXDHXGKPBDVRGPWPUFSMDXWFWTXQKF

    OXKDWDVKXVRWGFMDVZRXEPBPXKDSIFHDVDFIXKHFGIRXKDSWDVPSVOPKFMDVODKMPDIFSGDZRXMPXKDSDKPTXSFWFGXDKPFMXSRHXKDV

    ResponderEliminar
  24. Lo intentaré Paola, pero ahora mismo no tengo mucho tiempo. No obstante, tras un primer análisis yo diría que se ha cifrado utilizando sustitución monoalfabética, es decir cada letra del texto en claro se sustituye siempre por la misma letra en el criptograma, por lo que con un análisis de frecuencias (letras, bigramas,...) es posible que se logre descifrar.

    Lo dicho, cuando tenga un rato lo intento y pongo un comentario con lo que consiga.

    ResponderEliminar
  25. Paola: ya he tenido un poco de tiempo para intentar descifrar el criptograma. Como te decía éste se ha cifrado utilizando sustitución monoalfabética, conclusión a la que llegué después de calcular el índice de coincidencia del criptograma (muy próximo al del idioma español).

    Con un análisis de frecuencias a mí me sale que el texto en claro podría ser el siguiente:

    TODO INICIÓ CON DIOFANTO DE ALEJANDRÍA QUE FUE EL QUE INSPIRÓ FERMAT.

    ES INCREIBLE QUE LO QUE LLAMAMOS HOY COORDENADAS CARTESIANAS FUERON INVENCIÓN DE FERMAT PARA RESOLVER PROBLEMAS GEOMÉTRICOS UTILIZANDO EL ALGEBRA.

    PERO LOS RESULTADOS QUE HICIERON FAMOSO A FERMAT FUERON LOS INSPIRADOS POR DIOFANTO QUE DIERON ORIGEN A LA TEORÍA DE NÚMEROS

    ResponderEliminar
    Respuestas
    1. Perdón, que hay alguna errata. El texto en claro sería:

      TODO INICIÓ CON DIOFANTO DE ALEJANDRÍA QUIEN FUE EL QUE INSPIRÓ A FERMAT.

      ES INCREÍBLE QUE LO QUE LLAMAMOS HOY COORDENADAS CARTESIANAS FUERON INVENCIÓN DE FERMAT PARA RESOLVER PROBLEMAS GEOMÉTRICOS UTILIZANDO EL ÁLGEBRA.

      PERO LOS RESULTADOS QUE HICIERON FAMOSO A FERMAT FUERON LOS INSPIRADOS POR DIOFANTO QUE DIERON ORIGEN A LA TEORÍA DE NÚMEROS.

      Eliminar
  26. Una sugerencia RWLIWV VPD FUWEHOVV EE ?

    ResponderEliminar
  27. Buenas Cristian:

    Perdona por no haberte contestado antes, pero es que últimamente tengo el blog un poco desatendido.

    No sé muy bien a qué te refieres, ¿alguna pista más?.

    Salvo que parece un cifrado de sustitución polialfabética, poco más. Con tan pocos caracteres y sin saber el sistema de cifrado empleado no es fácil.

    Un saludo,

    ResponderEliminar
  28. Hola Mikel me podrias ayudar con este esta cifrado por vigenere.

    THZEIPHMRRRGOSRKRUDWVLKNUSITAGSOKOEPHMRRRG

    ResponderEliminar
    Respuestas
    1. Hola Anónimo:

      Lo intento y pongo en los siguientes comentarios lo que vaya avanzando en el descifrado, si es que logro avanzar algo, ya que con tan pocos caracteres no es fácil.

      En cualquier caso, si el criptosistema empleado, tal y como dices, es Vigenère, a simple vista, se ve que la cadena de caracteres "PHMRRRG" se encuentra repetida en dos ocasiones en el criptograma, separada ambas por 30 posiciones.

      Esta circunstancia es muy poco probable que se produzca por mera casualidad (máxime teniendo en cuenta que esta cadena tiene bastante longitud, 7 caracteres), por lo que muy probablemente ambas cadenas eran las mismas antes del cifrado y la clave ha debido coincidir en la misma posición en el momento del cifrado.

      Por tanto, parece claro que 30 es un múltiplo de la longitud de la clave y, en consecuencia, ésta debe tener 2, 3, 5, 6, 10 o 15 caracteres.

      No veo más repeticiones de caracteres que me den mayor pista para determinar más exactamente cuál es la longitud de la clave.

      No obstante, intento el descifrado y pongo los resultados que vaya obteniendo en los siguientes comentarios.

      Un saludo,

      Eliminar
    2. Lo siguiente que voy a hacer es intentar determinar la longitud más probable de la clave para empezar el criptoanálisis por una longitud concreta, y si no consigo nada lo intentaré con la siguiente más probable y así sucesivamente.

      Para ello utilizaré el IC (Índice de coincidencia) ya que, aunque con tan pocos caracteres no es muy fiable, puede ser un buen punto de partida.

      Antes que nada voy a comprobar si el criptosistema empleado puede ser un cifrado de sustitución monoalfabética. Para ello, calculo el IC de todo el criptograma y obtengo, si no me he equivocado, que éste es: 0,05691, por lo que creo que se puede descartar la sustitución monoalfabética y establecer como hipótesis que el criptosistema empleado es de sustitución polialfabética.

      Eliminar
    3. a) Si la clave tuviera una longitud de 2 caracteres se habrían empleado dos alfabetos para cifrar el texto en claro. Uno para los caracteres de las posiciones impares y otro para los caracteres de las posiciones pares. Por tanto, podemos dividir el criptograma o texto cifrado en dos subcriptogramas (C1 = caracteres del criptograma en posiciones impares y C2 = caracteres del criptograma en posiciones pares), ambos con una longitud de 21 caracteres.

      En cada uno de ellos la sustitución sería monoalfabética y, por tanto, el IC (Índice de Coincidencia) debería estar cercano o superar el IC del idioma en que esté escrito el texto en claro, ya que en una sustitución monoalfabética el IC del texto en claro se traslada al criptograma.

      Si no me he equivocado al calcularlos:

      IC(C1)=0,08571; IC(C2)=0,0381

      Ambos subcriptogramas tienen muy pocos caracteres (21) y, como digo, con tan pocos caracteres el IC no es muy fiable, pero en el resultado obtenido vemos que mientras el IC de C1 supera al del idioma español (0,0775) el IC de C2 se aproxima bastante al de una distribución uniforme (0,0370) considerando las 27 letras del español ("Ñ" incluida).

      Eliminar
    4. b) Si la clave tuviera una longitud de 3 caracteres se habrían empleado tres alfabetos para cifrar el texto en claro. Uno para los caracteres de las posiciones 1, 4, 7,…, otro para los caracteres de las posiciones 2, 5, 8,.. y otro para los caracteres de las posiciones 3, 6, 9,... Por tanto, podemos dividir el criptograma o texto cifrado en tres subcriptogramas (C1 = TEH… , C2 = HIM… y C3 = ZPR…), los tres con una longitud de 14 caracteres.

      En este caso, el IC de cada subcriptograma sería:

      IC(C1)=0,04396; IC(C2)=0,05495; IC(C3)=0,07692

      En este caso, sólo el IC de C3 se aproxima al del idioma español (0,0775).

      Eliminar
    5. c) Si la clave tuviera una longitud de 5 caracteres se habrían empleado cinco alfabetos para cifrar el texto en claro. Uno para los caracteres de las posiciones 1, 6, 11,…, otro para los caracteres de las posiciones 2, 7, 12,…, otro para los caracteres de las posiciones 3, 8, 13,..., otro para los caracteres de las posiciones 4, 9, 14,… y otro para los caracteres de las posiciones 5, 10, 15,… Por tanto, podemos dividir el criptograma o texto cifrado en cinco subcriptogramas (C1 = TPR… , C2 = HHG…, C3 = ZMO,…, C4 = ERS y C5 = IRR…), los dos primeros con una longitud de 9 caracteres y los tres últimos de 8 caracteres.

      En este caso, el IC de cada subcriptograma sería:

      IC(C1)=0,08333; IC(C2)=0,11111; IC(C3)=0,07143; IC(C4)=0,03571; IC(C5)=0,10714

      En este caso, todos ellos superan o están próximos al IC del idioma español (0,0775) y sólo el IC de C4 se aproxima al de una distribución uniforme (0,0370) considerando las 27 letras del español ("Ñ" incluida).

      Eliminar
    6. d) Si la clave tuviera una longitud de 6 caracteres se habrían empleado seis alfabetos para cifrar el texto en claro. Uno para los caracteres de las posiciones 1, 7, 13,…, otro para los caracteres de las posiciones 2, 8, 14,…, otro para los caracteres de las posiciones 3, 9, 15,..., otro para los caracteres de las posiciones 4, 10, 16,…, otro para los caracteres de las posiciones 5, 11, 17,… y otro para los caracteres de las posiciones 6, 12, 18,… Por tanto, podemos dividir el criptograma o texto cifrado en seis subcriptogramas (C1 = THO… , C2 = HMS…, C3 = ZRR,…, C4 = ERK, C5 = IRR y C6 = PGU…), todos ellos con una longitud de 7 caracteres.

      En este caso, el IC de cada subcriptograma sería:

      IC(C1)=0,04762; IC(C2)=0,09524; IC(C3)=0,14286; IC(C4)=0,04762; IC(C5)=0,14286; IC(C6)=0,19048

      En este caso, cuatro de ellos superan el IC del idioma español (0,0775) y dos de ellos están bastante por debajo.

      Eliminar
    7. e) Inicialmente descarto las posibles claves de 10 y 15 caracteres, ya que considero que con tan pocos caracteres (42) es muy poco probable que con claves tan largas se produzcan repeticiones significativas de caracteres en el criptograma.

      Eliminar
    8. A la vista de los resultados obtenidos, aunque insisto en que el IC no es muy fiable en el caso de contarse con pocos caracteres, yo diría que la longitud de la clave más probable (en orden de mayor a menor) es: 5, 6, 2 y 3 (desechando inicialmente 10 y 15).

      Eliminar
    9. Por tanto, en primer lugar, voy a probar con una longitud de la clave de 5 caracteres y establecer la hipótesis de que el idioma en el que está escrito el texto en claro es el español.

      Entonces, obtenemos los 5 subcriptogramas: uno para los caracteres de las posiciones 1, 6, 11,… del criptograma, otro para los caracteres de las posiciones 2, 7, 12,…, otro para los caracteres de las posiciones 3, 8, 13,…, otro para los caracteres de las posiciones 4, 9, 14,… y otro para los caracteres de las posiciones 5, 10, 15,… (que es lo mismo que distribuir los caracteres del criptograma en una tabla de 5 filas rellenándola por columnas de arriba a abajo y de izquierda a derecha con todos los caracteres del criptograma. Cada fila será uno de los subcritogramas):

      C1 = TPRKVSSPR
      C2 = HHGRLIOHG
      C3 = ZMOUKTKM
      C4 = ERSDNAOR
      C5 = IRRWUGER

      Y ya estamos en condiciones de atacar cada uno de estos subcriptogramas mediante un ataque de tipo estadístico monoalfabético. Hay que recodar que si la clave tiene una longitud de 5 caracteres cada uno de ellos habrá sido cifrado por un mismo carácter de la clave y, por tanto, la sustitución en cada uno de ellos será monoalfabética.

      Eliminar
    10. Utilizando la regla EAO (las tres letras más frecuentes en español) en cada subcriptograma, es decir, buscando en cada uno de ellos la suma mayor de frecuencias de los tres caracteres que cumplan que sus posiciones relativas en el subcriptograma siguen la distribución (0,+4,+11) mod 27, obtenemos para cada subcriptograma lo siguiente:

      C1: la suma mayor de frecuencias de los caracteres cuyas posiciones relativas cumplen con la distribución indicada se da para las letras (P,T,E) y (R,V,G), y, por tanto, el primer carácter de la clave es probable que sea P o R.

      C2: la suma mayor de frecuencias de los caracteres cuyas posiciones relativas cumplen con la distribución indicada se da para las letras (D,H,R) y (H,L,V), y, por tanto, el segundo carácter de la clave es probable que sea D o H.

      C3: la suma mayor de frecuencias de los caracteres cuyas posiciones relativas cumplen con la distribución indicada se da para las letras (G,K,U) y (V,Z,K), y, por tanto, el tercer carácter de la clave es probable que sea G o V.

      C4: la suma mayor de frecuencias de los caracteres cuyas posiciones relativas cumplen con la distribución indicada se da para las letras (A,E,O), (D,H,R) y (O,S,D), y, por tanto, el cuarto carácter de la clave es probable que sea A, D u O.

      C5: la suma mayor de frecuencias de los caracteres cuyas posiciones relativas cumplen con la distribución indicada se da para las letras (R,V,G), y, por tanto, el quinto carácter de la clave es probable que sea R.

      Eliminar
    11. Ya decía yo que esto no iba a ser nada fácil, ya que con tan pocos caracteres el análisis de frecuencias realizado para cada subcriptograma puede estar totalmente equivocado y, además, inicialmente surgen hasta 24 claves como las más probables, pero continúo para ver si obtengo algo.

      Eliminar
  29. Pruebo el descifrado del criptograma con las claves obtenida a ver si puedo sacar alguna conclusión (lógicamente ésto es mucho más fácil y rápido con un pequeño programa de ordenador o incluso con una hoja de cálculo).

    Utilizando en el descifrado la primera de las claves más probables "PDGAR" (utilizando la tabla de Vignère sin la "Ñ") da como texto en claro el siguiente:

    EETERAEGRACDISAUOODFGIENDDFNAPDLEONAEGRACD

    Con lo que la cadena "NAPDLEON" podría ser "NAPOLEON" si el primer carácter de la clave fuera E en lugar de P. Si esto fuera así, la clave empleada en el cifrado sería "EDGAR" y el texto en claro sería:

    PETERLEGRANDISAGOODFRIENDOFNAPOLEONLEGRAND

    Con lo que queda claro que efectivamente la clave utilizada fue "EDGAR" y el texto en claro no está escrito escrito en español, sino en inglés:

    PETER LEGRAND IS A GOOD FRIEND OF NAPOLEON LEGRAND

    Como se observa, las dos cadenas de caracteres repetidas en el criptograma efectivamente eran las mismas antes del cifrado "LEGRAND" y la clave coincidió en ellas en la misma posición:

    THZEI PHMRRRG OS R KRUD WVLKNU SI TAGSOKOE PHMRRRG (CRIPTOGRAMA)
    EDGAR EDGARED GA R EDGA REDGAR ED GAREDGAR EDGARED (CLAVE)
    PETER LEGRAND IS A GOOD FRIEND OF NAPOLEON LEGRAND (TEXTO EN CLARO)

    ResponderEliminar