Ir al contenido principal

Criptografía (XXXI): ¿Sabías que...? (VII)

En el post anterior de esta serie puse un ejemplo de criptograma cifrado con la clave "Bocho" en la guerra civil española y comentaba que, según algunos autores, el descifrado de esta clave y de otras dos facilitó la captura del mercante "Mar Cantábrico" por parte del bando nacional, lo que contribuyó, quizás de forma decisiva, al resultado de la guerra en la zona norte republicana, y no sólo porque éste traía de América suministros de vital importancia para el desarrollo de la contienda, sino por el efecto desmoralizador que también tuvo para el bando republicano.  


También decía en el post anterior que voy a intentar descifrar yo también el criptograma que puse como ejemplo. ¿Cómo lo consiguieron ellos?. Pues no lo sé, pero descartado un criptoanálisis basado en la  fuerza bruta (incluido un ataque de diccionario) porque en aquella época no había ordenadores, supongo que realizando un análisis de frecuencias (caracteres, bigramas, trigramas,...) para intentar reconstruir la tabla de homófonos utilizada en el cifrado. Tarea que como también decía no es nada fácil, y diría que incluso imposible, si no se dispone de una gran cantidad de texto cifrado.

Pero bueno, este criptograma tiene una longitud de 880 caracteres, lo que, junto con algunas vulnerabilidades adicionales de los métodos de sustitución por homófonos empleados en la guerra civil española, puede ser suficiente para su descifrado utilizando un simple análisis de frecuencias.

Las citadas vulnerabilidades de las que nos vamos a intentar aprovechar son las siguientes:

- En todas las claves que he visto, y "Bocho" no es una excepción, los homófonos se colocan por decenas en la misma fila de la tabla. Es decir, por ejemplo, si consideramos que la tabla utilizada contiene los números del "00" al "99", la primera decena (del "00" al "09") se coloca siempre en una misma fila, la segunda (del "10" al "19") en otra misma fila, y así sucesivamente. Esto es claramente una vulnerabilidad, ya que si conseguimos, por ejemplo, identificar que "09" se corresponde con el carácter "E" en el texto en claro ninguno del resto de homófonos de la misma decena podría ser candidato a ser la "E".

- En la mayoría de las claves que he visto cada carácter tiene entre 3 y 5 homófonos, lo que hace que en criptogramas largos persistan en cierta medida las características propias del idioma en cuanto a la frecuencia de aparición de las letras.  

- Además, si consideramos que un carácter tiene una media de 4 homófonos y que cada uno de ellos tiene una probabilidad de 1/4 de ser elegido para sustituir a su letra, entonces, si multiplicamos por cuatro la frecuencia de aparición de cada uno de ellos en el criptograma nos aproximaremos bastante a la frecuencia del carácter al que sustituye en el texto en claro y, por tanto, podremos comparar esta última con la frecuencia de aparición de cada letra en un texto escrito en español.

Vamos a intentarlo:

1.- Criptograma:

28 83 72 05 27 23 57 53 64 05 27 42 34 88 34 77 82 62 88 01 21
04 54 21 04 53 54 52 62 53 98 53 38 04 73 25 93 14 52 88 61 31
12 05 45 88 52 03 93 22 54 33 82 12 28 57 04 73 10 56 04 57 04
78 23 34 57 36 65 31 63 65 63 33 19 01 28 73 05 24 54 03 88 08
23 88 59 91 38 63 78 54 12 49 27 88 95 72 01 12 19 61 27 19 17
16 53 14 45 49 39 15 53 65 36 03 91 83 86 34 82 03 56 53 30 23
43 53 14 62 28 88 14 93 73 30 28 73 42 04 65 61 54 53 38 23 12
88 56 97 63 98 23 51 04 95 77 53 83 04 65 18 01 51 01 82 04 34
43 54 27 93 54 78 23 16 91 94 24 49 12 93 21 49 43 53 28 17 97
88 01 77 91 05 34 82 17 50 01 30 33 77 88 50 49 83 43 82 62 04
59 53 12 08 61 46 99 56 28 33 13 63 67 23 77 95 63 33 73 95 91
00 34 93 04 87 22 62 54 57 91 27 33 72 04 03 42 54 62 91 46 99
31 04 13 33 73 77 04 53 62 04 33 38 83 91 53 34 56 34 23 69 49
36 03 23 27 61 77 28 62 49 22 00 33 43 36 01 27 05 67 38 91 85
91 03 93 25 43 28 67 33 38 88 45 05 52 38 01 78 88 78 73 88 58
93 49 83 42 46 01 09 00 62 36 05 34 53 54 59 28 34 08 53 47 31
21 63 05 73 22 82 12 17 72 65 31 42 65 46 53 54 09 52 82 46 67
95 63 27 28 65 54 22 21 93 51 63 82 34 53 46 28 73 98 23 73 36
65 05 38 43 61 98 88 14 88 50 91 22 50 23 32 28 12 98 23 34 77
63 22 01 82 73 28 57 65 53 43 33 97 01 18 88 46 53 95 01 77 33
77 69 78 61 34 72 53 38 95 04 34 23 90 03 23 94 01 59 61 55 56
91 91 21 05 33 78 61 12 50 42 78 42 82 34 05 95 17 53 67 88 03
33 33 91 38 23 50 59 61 50 93 98 91 27 04 10 00 04 91 73 98 54
46 23 38 53 56 34 88 33 09 19 88 49 73 21 01 51 93 49 73 04 17
26 05 27 00 50 01 82 50 23 34 50 28 01 73 57 36 49 83 28 45 05
52 38 01 51 05 28 46 90 28 38 33 34 44 05 10 31 53 05 34 72 04
04 74 88 62 62 88 52 05 91 73 84 54 65 29 31 93 12 33 32 61 72
65 49 88 57 67 36 61 33 53 17 36 00 50 63 05 38 01 34 27 91 21
63 54 97 33 09 53 12 97 04 28 82 17 63 25 42 43 01 77 33 77 03
04 31 34 42 38 54 41 42 78 82 34 03 54 90 93 44 32 86 38 92 04
12 51 42 05 51 88 83 49 38 04 81 56 42 28 95 91 36 23 21 49 53
09 91 34 97 61 59 53 98 88 12 93 51 82 67 88 65 88 47 03 23 21
86 51 98 01 53 46 95 91 85 53 65 93 21 05 83 16 46 86 47 62 63
78 49 75 91 36 49 09 28 22 59 54 37 93 09 23 04 84 67 91 12 82
91 83 08 33 93 12 01 98 93 05 97 42 48 88 04 77 04 22 31 53 73
08 54 57 31 21 53 17 05 95 03 82 62 14 49 75 47 38 04 18 27 53
12 97 53 77 91 27 91 46 28 02 00 95 01 77 88 21 53 17 81 00 53
53 46 47 61 03 91 46 47 04 22 36 61 67 23 17 01 25 63 62 93 21
54 21 38 91 33 43 63 26 28 46 08 04 24 65 49 69 91 78 97 23
En la siguiente tabla se indica para cada posible homófono: su frecuencia de aparición en el criptograma (número de veces y porcentaje) y el porcentaje resultado de multiplicar por cuatro la frecuencia anterior:

Homóf.   Fr. Fr. (%) Fr. x 4 (%)
00 8 0,91% 3,64%
01 24 2,73% 10,91%
02 2 0,23% 0,91%
03 14 1,59% 6,36%
04 35 3,98% 15,91%
05 23 2,61% 10,45%
06 0 0,00% 0,00%
07 0 0,00% 0,00%
08 7 0,80% 3,18%
09 7 0,80% 3,18%
10 3 0,34% 1,36%
11 0 0,00% 0,00%
12 18 2,05% 8,18%
13 2 0,23% 0,91%
14 7 0,80% 3,18%
15 1 0,11% 0,45%
16 3 0,34% 1,36%
17 12 1,36% 5,45%
18 3 0,34% 1,36%
19 4 0,45% 1,82%
20 0 0,00% 0,00%
21 15 1,70% 6,82%
22 11 1,25% 5,00%
23 24 2,73% 10,91%
24 4 0,45% 1,82%
25 4 0,45% 1,82%
26 2 0,23% 0,91%
27 16 1,82% 7,27%
28 26 2,95% 11,82%
29 1 0,11% 0,45%
30 3 0,34% 1,36%
31 11 1,25% 5,00%
32 4 0,45% 1,82%
33 24 2,73% 10,91%
34 25 2,84% 11,36%
35 0 0,00% 0,00%
36 12 1,36% 5,45%
37 1 0,11% 0,45%
38 21 2,39% 9,55%
39 1 0,11% 0,45%
40 0 0,00% 0,00%
41 1 0,11% 0,45%
42 13 1,48% 5,91%
43 12 1,36% 5,45%
44 2 0,23% 0,91%
45 4 0,45% 1,82%
46 19 2,16% 8,64%
47 8 0,91% 3,64%
48 2 0,23% 0,91%
49 21 2,39% 9,55%
50 11 1,25% 5,00%
51 10 1,14% 4,55%
52 7 0,80% 3,18%
53 38 4,32% 17,27%
54 23 2,61% 10,45%
55 1 0,11% 0,45%
56 9 1,02% 4,09%
57 11 1,25% 5,00%
58 1 0,11% 0,45%
59 7 0,80% 3,18%
60 0 0,00% 0,00%
61 17 1,93% 7,73%
62 14 1,59% 6,36%
63 17 1,93% 7,73%
64 1 0,11% 0,45%
65 19 2,16% 8,64%
66 0 0,00% 0,00%
67 9 1,02% 4,09%
68 0 0,00% 0,00%
69 3 0,34% 1,36%
70 0 0,00% 0,00%
71 0 0,00% 0,00%
72 7 0,80% 3,18%
73 20 2,27% 9,09%
74 1 0,11% 0,45%
75 2 0,23% 0,91%
76 0 0,00% 0,00%
77 16 1,82% 7,27%
78 11 1,25% 5,00%
79 0 0,00% 0,00%
80 0 0,00% 0,00%
81 2 0,23% 0,91%
82 17 1,93% 7,73%
83 11 1,25% 5,00%
84 3 0,34% 1,36%
85 2 0,23% 0,91%
86 5 0,57% 2,27%
87 1 0,11% 0,45%
88 31 3,52% 14,09%
89 0 0,00% 0,00%
90 3 0,34% 1,36%
91 32 3,64% 14,55%
92 1 0,11% 0,45%
93 21 2,39% 9,55%
94 2 0,23% 0,91%
95 13 1,48% 5,91%
96 0 0,00% 0,00%
97 9 1,02% 4,09%
98 10 1,14% 4,55%
99 2 0,23% 0,91%
880 100%

Por otra parte, la frecuencia de aparición (%) de las letras en un texto escrito en español es la siguiente (adicionalmente he establecido una frecuencia mínima de aparición suponiendo un margen de error del 20%):

Letra     Fr. (%)    Fr. Mín (%)
   
E 13,68 10,944
A 12,53 10,024
O 8,68 6,944
S 7,98 6,384
R 6,87 5,496
N 6,71 5,368
I 6,25 5
D 5,86 4,688
L 4,97 3,976
C 4,68 3,744
T 4,63 3,704
U 3,93 3,144
M 3,15 2,52
P 2,51 2,008
B 1,42 1,136
G 1,01 0,808
V 0,9 0,72
Y 0,9 0,72
Q 0,88 0,704
H 0,7 0,56
F 0,69 0,552
Z 0,52 0,416
J 0,44 0,352
Ñ 0,31 0,248
X 0,22 0,176
W 0,02 0,016
K 0,01 0,008

2.- Ahora comparo ambas tablas para establecer los homófonos candidatos a ser la "E" (la letra significativamente más frecuentes en español). Serán candidatos a ser la "E" aquellos homófonos cuya frecuencia estimada de aparición de la letra a la que sustituye en el texto en claro (Fr. x 4) supere a la Frecuencia mínima (Fr. Mín.) establecida para dicho carácter.

E: 53 (17,27%), 04 (15,91%), 91 (14,55%), 88 (14,09%), 28 (11,82%), 34 (11,36%).

Los bigramas más frecuentes en español que empiezan por "E" son: "ES", "EN", "EL" y "ER".

Y los bigramas repetidos (3 o más veces) que se observan en el criptograma que comienzan con los candidatos establecidos para la "E" son los siguientes:

Bigr.  F.

5312 3
5317 3
5338 3
5346 5
9127 3
9146 3
2873 3
3453 3


A la vista de los resultados obtenidos hasta ahora, parece claro que el homófono "53" es el candidato más probable a corresponderse con la "E" en el texto en claro, debido a que es el que presenta una significativa mayor frecuencia de aparición en el criptograma (4,32%) y según nuestra extrapolación de aparición de la letra a la que sustituye en el texto en claro (17,27%), y, además, a que los bigramas que empiezan por ese homófono son los que se repiten con mayor frecuencia en el criptograma (en catorce ocasiones).

Además, creo que con bastante probabilidad (atendiendo a los hómofonos que aparecen siguiendo a los candidatos a ser la "E" en los bigramas repetidos y a la frecuencia estándar de cada letra en el idioma español) los homófonos "12", "17", "27", "38", "46" y "73" son candidatos a ser la "S", "N" o "R" en el texto en claro. Inicialmente descartamos que el "34" se corresponda con la "E" porque va seguido del "53" en tres ocasiones y este último es el candidato más probable a ser la propia "E" en el texto en claro.

El homófono "46" que sigue a dos candidatos a ser la letra "E" en 8 ocasiones sería el que con mayor probabilidad se correspondería con la "S" en el texto en claro.

Por tanto, tendríamos (voy marcando en rojo los candidatos más probables):

E: 53 (17,27%), 04 (15,91%), 91 (14,55%), 88 (14,09%), 28 (11,82%).
S: 38 (9,55%), 73 (9,09%), 46 (8,64%), 12 (8,18%), 27 (7,27%), 17 (5,45%).
R: 38 (9,55%), 73 (9,09%), 46 (8,64%), 12 (8,18%), 27 (7,27%), 17 (5,45%).
N: 38 (9,55%), 73 (9,09%), 46 (8,64%), 12 (8,18%), 27 (7,27%), 17 (5,45%).

3.- Comparo ambas tablas para establecer los homófonos candidatos a ser la "A" (la segunda letra significativamente más frecuentes en español). Teniendo en cuenta los candidatos ya establecidos, serán candidatos a ser la "A" aquellos homófonos cuya frecuencia estimada de aparición de la letra a la que sustituye en el texto en claro (Fr. x 4) supere a la Frecuencia mínima (Fr. Mín.) establecida para dicho carácter (descartando inicialmente aquellos homófonos que hemos seleccionado como candidatos a ser la "E").

A: 01 (10,91%), 23 (10, 91%), 33 (10,91%), 05 (10,45%), 54 (10,45%).

Entre los bigramas más frecuentes en español que empiezan por "A" se encuentran: "AR", "AS", "AD", "AI" y "AC".

los bigramas repetidos (3 o más veces) que se observan en el criptograma que comienzan con los candidatos establecidos para la "A" son los siguientes:

Bigr. F.
0151 3
0177 4
0182 3
0527 3
0534 3
2334 3
3377 3

Por tanto, creo que con bastante probabilidad (atendiendo a los resultados obtenidos hasta el momento, a los hómofonos que aparecen siguiendo a los candidatos a ser la "A" en los bigramas repetidos y a la frecuencia estándar de cada letra en el idioma español) se confirma que el homófono "27" es candidato a ser la "S", "N" o "R".

El homófono "77" que sigue a dos candidatos a ser la letra "A" en 7 ocasiones  es candidato a corresponderse con la "R", "S" o "N" (con mayor probabilidad de ser la "R").

El homófono "34" que sigue a dos candidatos a ser la letra "A" en 6 ocasiones (añadido a que sigue en 3 ocasiones al "53", el que con mayor probabilidad se correspondería con la "E") es candidato a corresponderse con la "S", "N" o "R".

El homófono "82" que sigue a dos candidatos a ser la letra "A" en 3 ocasiones  es candidato a corresponderse con la "R", "S" o "N" (con mayor probabilidad de ser la "R").

El homófono "51" presenta una frecuencia estimada de aparición de la letra a la que sustituye en el texto en claro que podría corresponderse con la letra "C" (no suficiente, según la frecuencia mínima establecida, ni para ser la "D" ni la "I"). Por si acaso, anoto que podría ser cualquiera de las tres, pero con mayor probabilidad de ser la "C".

E: 53 (17,27%), 04 (15,91%), 91 (14,55%), 88 (14,09%), 28 (11,82%).
A: 01 (10,91%), 23 (10, 91%), 33 (10,91%), 05 (10,45%), 54 (10,45%).
S: 34 (11,36%), 38 (9,55%), 73 (9,09%), 46 (8,64%), 12 (8,18%), 82 (7,73%), 27 (7,27%), 77 (7,27%), 17 (5,45%).
R: 34 (11,36%), 38 (9,55%), 73 (9,09%), 46 (8,64%), 12 (8,18%), 82 (7,73%), 27 (7,27%), 77 (7,27%), 17 (5,45%).
N: 34 (11,36%), 38 (9,55%), 73 (9,09%), 46 (8,64%), 12 (8,18%), 82 (7,73%), 27 (7,27%), 77 (7,27%), 17 (5,45%).
I: 51 (4,55%).
D: 51 (4,55%).
C: 51 (4,55%).

Y hasta aquí esta primera fase para intentar determinaren base a un análisis de frecuencias de los caracteres, los homófonos que podrían corresponderse con las dos letras ("E" y "A") más identificables del castellano, y, a partir de éste y de los bigramas más frecuentes que comenzarían por ellas, de aquellos que serían candidatos a ser las consonantes más frecuentes (he anotado un candidato más a corresponderse con otras letras, pero con todas las reservas).

Como digo tarea nada fácil, me temo que no me queda más que armarme de paciencia para, con mucha suerte, intentar reconstruir una tabla de candidatos que en una primera aproximación me dé las pistas necesarias para "tirar del hilo y desmadejar el ovillo". ¿Alguna idea?.

Yo, por mi parte, en el próximo post intentaré avanzar en el descifrado de este mensaje.  

Comentarios

Entradas populares de este blog

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

Criptografía (XXIII): cifrado de Hill (I)

En este post me propongo explicar de forma comprensible lo que he entendido sobre el cifrado de Hill , propuesto por el matemático Lester S. Hill , en 1929, y que se basa en emplear una matriz como clave  para cifrar un texto en claro y su inversa para descifrar el criptograma correspondiente . Hay tres cosas que me gustan de la criptografía clásica, además de que considero que ésta es muy didáctica a la hora de comprender los sistemas criptográficos modernos: la primera de ellas es que me "obliga" a repasar conceptos de matemáticas aprendidos hace mucho tiempo y, desgraciadamente, olvidados también hace demasiado tiempo, y, por consiguiente, que, como dice  Dani , amigo y coautor de este blog, me "obliga" a hacer "gimnasia mental"; la segunda es que, en la mayoría de las ocasiones, pueden cifrarse y descifrase los mensajes, e incluso realizarse el criptoanálisis de los criptogramas, sin más que un simple lápiz y papel, es decir, para mi es como un pasat

¿Qué significa el emblema de la profesión informática? (I)

Todas o muchas profesiones tienen un emblema que las representa simbólicamente y en el caso de la  informática: " es el establecido en la resolución de 11 de noviembre de 1977  para las titulaciones universitarias superiores de informática, y  está constituido por una figura representando en su parte central  un  núcleo toroidal de ferrita , atravesado por  hilos de lectura,  escritura e inhibición . El núcleo está rodeado por  dos ramas : una  de  laurel , como símbolo de recompensa, y la otra, de  olivo , como  símbolo de sabiduría. La  corona  será la  de la casa real  española,  y bajo el escudo se inscribirá el acrónimo de la organización. ". Veamos los diferentes elementos tomando como ejemplo el emblema del COIIE/EIIEO (Colegio Oficial de Ingenieros en Informática del País Vasco/ Euskadiko Informatikako Ingeniarien Elkargo Ofiziala ) . Pero no sólo el COIIE/EIIEO adopta el emblema establecido en dicha resolución, sino que éste se adopta también como im