Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Criptografía Vigenere
Criptografía Vigenere
Decía en el post anterior que iba a poner un ejemplo de un ataque basado en el Índice de
Coincidencia (IC) a un criptograma cifrado con un sistema de sustitución
polialfabética con clave periódica, método de criptoanálisis desarrollado por William
Friedman en 1920. Pues vamos allá con el ejemplo.
Y supongamos también que creemos que, con casi toda certeza, el texto en claro está
escrito en español y que sospechamos que se ha empleado para cifrarlo un sistema de
sustitución monoalfabética o uno de sustitución polialfabética con clave periódica.
Veamos que información podría aportarnos el IC.
Tal y como se observa, este IC está bastante alejado del que se espera encontrar en un
texto cifrado utilizando una sustitución monoalfabética, o lo que es lo mismo
empleando una sustitución polialfabética con un período o longitud de la clave (t) igual a 1,
por lo que podríamos descartar esta longitud de la clave.
Donde:
t: período o longitud de la clave.
Ci: subcriptograma i-ésimo del que hay que calcular el IC (1 ≤ i ≤ t).
m: longitud del criptograma o mensaje cifrado.
ci: carácter i-ésimo del criptograma o texto cifrado (1 ≤ i ≤ m).
Es decir:
Donde:
t: período o longitud de la clave.
Ci: subcriptograma i-ésimo del que hay que calcular el IC (1 ≤ i ≤ t).
m: longitud del criptograma o mensaje cifrado.
ci: carácter i-ésimo del criptograma o texto cifrado (1 ≤ i ≤ m).
Es decir:
Calculamos:
Donde:
t: período o longitud de la clave.
Ci: subcriptograma i-ésimo del que hay que calcular el IC (1 ≤ i ≤ t).
m: longitud del criptograma o mensaje cifrado.
ci: carácter i-ésimo del criptograma o texto cifrado (1 ≤ i ≤ m).
Es decir:
IC(C1) = IC(c1, c5, c9, c13..., c425) = IC(GIZP... H).
IC(C2) = IC(c2, c6, c10, c14,..., c426) = IC(DUNG... Q).
IC(C3) = IC(c3, c7, c11, c15,..., c423) = IC(TFGS... R).
IC(C4) = IC(c4, c8, c12, c16,..., c424) = IC(ZNWF... V).
Donde:
t: período o longitud de la clave.
Ci: subcriptograma i-ésimo del que hay que calcular el IC (1 ≤ i ≤ t).
m: longitud del criptograma o mensaje cifrado.
ci: carácter i-ésimo del criptograma o texto cifrado (1 ≤ i ≤ m).
Es decir:
Es decir:
Por lo que la longitud más probable de la clave sería el máximo común divisor o mayor
número entero que divide a todas esas posiciones sin dejar resto, es decir, mcd(10, 15, 20,
25, 30, 40, 65, 120, 155, 160, 185, 210, 340) = 5.
Circunstancia que nos viene a confirmar, casi con total seguridad, que el mensaje o texto
en claro ha sido cifrado utilizando un sistema de sustitución polialfabética con clave
periódica y longitud de la clave igual a 5.
Realicemos ahora el análisis de frecuencias sobre los caracteres de cada uno de los
cinco subcriptogramas (en cada uno de ellos los caracteres del texto en claro habrían sido
cifrados con una misma letra de la clave, es decir, en cada uno de ellos la sustitución
realizada sería monoalfabética):
¿Qué información nos aporta este análisis de frecuencias?: el carácter más frecuente en
cada subcriptograma es el candidato a ser la "E" en el texto en claro (la letra más frecuente
en español), el siguiente más frecuente es el candidato a ser la "A" (la segunda letra más
frecuente), el tercero es el candidato a ser la "O" (la tercera letra más frecuente) y así
sucesivamente. Esto es así, con bastante probabilidad, para los caracteres más frecuentes en
textos muy grandes (en un texto en español se espera encontrar aproximadamente: 13,68%
de caracteres "E", 12,53% de caracteres "A" y 8,68% de caracteres "O",...), aunque en un
texto no suficientemente extenso esto podría no ser necesariamente así, por lo que
tendremos que afinar los resultados obtenidos en este análisis de frecuencias de las letras
con los correspondientes al análisis de frecuencias de bigramas y trigramas.
En cualquier caso veamos que información podemos obtener en un primer análisis de las
frecuencias obtenidas:
- En el segundo subcriptograma (C2) la letra "O" (16 veces) podría corresponderse con
la "E" y la "C" (12 veces) con la "A".
Si esto es así podríamos evitarnos realizar con mayor detalle el análisis de frecuencias, ya
que estaríamos en disposición de obtener la clave y después descifrar el mensaje.
Veamos: si el sistema empleado para cifrar el mensaje ha sido el cifrado de Vigenère, ese
desplazamiento (0, +4, +11) se mantendrá en todos los subcriptogramas para los caracteres
cuya suma de sus frecuencias relativas sea la mayor (o cerca de ser la mayor); el primero se
correspondería con la "A" en el texto en claro, el segundo con la "E" y el tercero con la
"O", y conforme a la tabla que emplea este sistema el primero de esos caracteres se
correspondería con el carácter de la clave. Es decir:
- C1: La suma mayor de frecuencias teniendo en cuenta esa distribución (0, +4, +11) se
corresponde con la de los caracteres: fC + fG + fQ = (8 + 16 + 5) = 29, pero hay otra suma
de frecuencias que se le aproxima: fG + fK + fU = (16 + 3 + 5) = 24, por lo que en este
caso me surge la duda de si el primer carácter de la clave sería la "C" o la "G", aunque
es más probable que sea la "C".
- C2: La suma mayor de frecuencias teniendo en cuenta esa distribución (0, +4, +11) se
corresponde con la de los caracteres: fL + fO + fZ = (7 + 16 + 5) = 28 y con la de los
caracteres: fO + fS + fD = (16 + 7 + 5) = 28, por lo que me surge la duda de si el segundo
carácter de la clave sería la "L" o la "O", ambas letras con igual probabilidad de serlo.
- C3: La suma mayor de frecuencias teniendo en cuenta esa distribución (0, +4, +11) se
corresponde con la de los caracteres fA + fE + fO = (14 + 10 + 10) = 34. No hay otros tres
caracteres que cumplan con esa distribución cuya suma de sus frecuencias relativas sea
mayor que ésta (ni siquiera que se le aproxime), lo que nos indica, con casi toda
probabilidad, que la "A" se correspondería con la "A" en el texto en claro, la "E" con
la "E" y la "O" con la "O", y que el tercer carácter de la clave (la fila de la tabla
del cifrado de Vigenère con la que se habría cifrado el texto en claro) sería la "A".
- C4: La suma mayor de frecuencias teniendo en cuenta esa distribución (0, +4, +11) se
corresponde con la de los caracteres: fZ + fD + fÑ = (11 + 10 + 7) = 28, pero hay otra
suma de frecuencias que se le aproxima: fV + fZ + fK = (9 + 11 + 5) = 25, por lo que en
este caso también me surge la duda de si el cuarto carácter de la clave sería la "Z" o la
"V", aunque es más probable que sea la "Z".
- C5: La suma mayor de frecuencias teniendo en cuenta esa distribución (0, +4, +11) se
corresponde con la de los caracteres: fE + fI + fS = (10 + 12 + 9) = 31, pero hay otra suma
de frecuencias que, aunque se encuentra algo alejada, apunto por si
acaso: fI + fM + fW = (12 + 7 + 6) = 25, por lo que en este caso, aunque es más probable que
el quinto carácter de la clave sea "E", anoto también la posibilidad de que sea "I". No
obstante, no consideraré a esta última, al menos en un primer intento de averiguar cuál es la
clave correcta.
A la vista de las claves más probables parece claro que la realmente empleada fue:
"CLAVE", por lo que intentaré descifrar el mensaje utilizando ésta en primer lugar y, si no
lo consigo, utilizaré las otras.
Con clave = "CLAVE" y utilizando la tabla del cifrado de Vigenère (caracteres del
español, "Ñ" incluido) o, lo que es lo mismo, la expresión indicada en el post anterior para
la función de descifrado (DK), obtenemos el siguiente texto en claro: