Análisis de Frecuencias

El Análisis de Frecuencias o ataque de texto cifrado, (Distribución frecuencial), se produce cuando la información conocida es sólo el texto cifrado. Básicamente se cuenta el número de veces que cada letra aparece en el texto cifrado y se compara con la frecuencia de aparición de las letras más comunes del idioma en el cual (se supone) está escrito el texto. Al-Kindi, en el siglo IX, escribe el primer tratado que sienta las bases del estudio del criptograma en base a la repetición de signos del alfabeto utilizado, el análisis de frecuencias.

 

Existen variantes en función del tipo de cifrado utilizado:

  • Si identificamos frecuencias de letras comunes en el criptograma con un idioma, posiblemente el texto cifrado sea de transposición.
  • Si las letras comunes en un idioma no son las más comunes en el texto cifrado, posiblemente el texto cifrado sea de sustitución.
  • El más difícil de los casos es encontrarnos cifrados sofisticados o que utilicen cifrados polialfabéticos

 

Todos los cifrados por sustitución son vulnerables a este tipo de análisis, para ello debemos obtener un tamaño de código lo suficientemente largo para tener promedios significativos, dado que las propiedades estadísticas del texto claro se conservan en el texto cifrado.

 

El análisis de frecuencias se basa en la cadencia de letras o combinaciones de las mismas que aparecen en determinados textos. Para abordar el análisis de un criptograma, con este método, se utiliza/ban las cunas, son las palabras que se espera se incluyan en la presentación o finalización del mensaje, este método fue el primero utilizado por al-Kindi en el estudio de los mensajes cifrados que le enviaba el emperador de Bizancio.

 

En el análisis de más abajo (español), la letra E y A son las que más aprecen en los textos, la evidencia nos dice que para el texto cifrado deberemos sustituir los símbolos más frecuentes por ellas. Seguiremos haciendo parejas entre la frecuencia que hemos obtenido y la aparición de cada símbolo en el mensaje cifrado, con el histograma de frecuencias del idioma en el que se supone está el texto claro podremos descifrar el mensaje.

 

El análisis se debería realizar para textos de la época en la cual se considera que el cifrado ha sido realizado. A continuación tablas de frecuencias de los idiomas más próximos y después otra tabla con el análisis de tres libros distintos del español más hablado. He tomado distintas tablas de distintos idiomas y he encontrado diferencias sustanciales en los decimales e incluso en alguna cifra entera, algunas de esas tablas son del siglo pasado y he pensado en la conveniencia en obtener algunas nuevas.

 

 

 

 

Frecuencias en otros idiomas                                        Frecuencias en Español
Autor Libro Autor Libro Autor Libro
Unamuno La niebla García Márquez Crónica de una muerte anunciada Juan Rulfo Pedro Páramo
Alemán Francés Inglés Italiano Portugués Letra % % %
6,596% 7,236% 7,475% 11,753% 14,421% a 25.521 11,63966 16.909 13,89617 17.583 12,80860
1,868% 0,901% 1,372% 0,923% 1,139% b 3.068 1,39926 2.296 1,88690 2.147 1,56401
3,072% 3,160% 2,733% 4,505% 3,888% c 7.991 3,64455 4.902 4,02857 4.613 3,36041
5,376% 3,169% 4,357% 3,737% 4,769% d 10.362 4,72592 6.391 5,25226 7.127 5,19177
17,497% 13,115% 12,121% 11,792% 11,943% e 30.620 13,96522 14.951 12,28705 18.612 13,55819
1,659% 9,210% 2,320% 0,953% 1,022% f 1.094 0,49895 744 0,61143 573 0,41741
3,107% 0,866% 2,048% 1,641% 1,309% g 2.797 1,27566 1.351 1,11028 1.612 1,17429
4,736% 0,737% 5,971% 1,545% 1,285% h 2.708 1,23507 1.296 1,06508 1.698 1,23693
7,545% 7,309% 7,373% 11,295% 6,492% i 11.762 5,36443 6.835 5,61715 6.263 4,56237
0,280% 0,545% 0,101% 0,002% 0,412% j 1.259 0,57421 583 0,47912 947 0,68986
1,209% 0,049% 0,696% 0,000% 0,020% k 11 0,00502 1 0,00082 2 0,00146
3,418% 5,100% 4,014% 6,511% 2,756% l 11.133 5,07756 7.310 6,00751 7.869 5,73229
2,528% 2,668% 2,633% 2,509% 4,641% m 7.454 3,39963 3.517 2,89034 4.188 3,05081
9,362% 7,015% 7,010% 6,885% 5,183% n 13.836 6,31035 8.435 6,93206 8.788 6,40175
0,000% 0,000% 0,000% 0,000% 0,000% ñ 576 0,26270 189 0,15532 281 0,20470
2,508% 5,168% 7,746% 9,834% 10,633% o 21.587 9,84543 11.073 9,10002 13.056 9,51084
0,789% 3,021% 1,836% 3,051% 2,530% p 5.199 2,37117 3.395 2,79008 3.400 2,47678
0,022% 1,262% 0,111% 0,506% 1,201% q 3.821 1,74269 1.347 1,10699 2.258 1,64487
7,097% 6,253% 6,072% 6,377% 6,540% r 13.792 6,29028 8.561 7,03561 9.259 6,74486
7,268% 7,518% 6,334% 4,975% 7,767% s 17.391 7,93172 8.620 7,08410 10.663 7,76762
6,037% 7,114% 9,179% 5,625% 4,756% t 8.817 4,02127 4.815 3,95707 5.401 3,93444
4,297% 6,011% 2,905% 3,009% 4,812% u 11.478 5,23490 5.019 4,12472 6.844 4,98561
0,660% 1,628% 1,120% 2,081% 1,774% v 2.656 1,21135 1.466 1,20479 1.791 1,30468
1,878% 0,114% 2,108% 0,000% 0,010% w 0 0,00000 4 0,00329 0 0,00000
0,030% 0,387% 0,171% 0,000% 0,215% x 306 0,13956 85 0,06985 37 0,02695
0,040% 0,308% 2,128% 0,000% 0,011% y 3.222 1,46949 1.112 0,91386 1.636 1,19177
1,119% 0,136% 0,071% 0,491% 0,471% z 798 0,36395 473 0,38872 627 0,45675

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Programa en Java para la obtención de frecuencias.

 

Programa en Java para la obtención de frecuencias.