jueves, 27 de octubre de 2016

Criptografía (XXXVI): el algoritmo RSA (II)

En el post anterior puse un ejemplo de cifrado utilizando el algoritmo RSA y decía que este algoritmo se utiliza, además, para validar por parte del receptor la autenticidad del mensaje, es decir, tanto que la persona que lo ha enviado es el emisor legítimo (es quien dice ser), como que el mensaje no ha sido interceptado y alterado por un tercero (integridad), y en éste trataré sobre esto último.

Para ello es necesario hablar en primer lugar de las funciones hash, que obtienen un resumen del mensaje en forma de número, de tamaño fijo mucho menor que el mensaje original, asociado unívocamente a éste (es prácticamente imposible encontrar otro mensaje que dé como resultado el mismo resumen) e irreversible (es prácticamente imposible obtener el mensaje a partir del resumen), y que después el emisor cifrará con su clave privada.

1.- Para firmar digitalmente un mensaje (Mel emisor obtiene un resumen del mismo mediante una función hash (h), que como ya he dicho lo representa de una manera única.

2.- El emisor cifra el resumen del mensaje (h(M)) utilizando su clave privada (d, n). Ésto sólo puede hacerlo él mismo, ya que es el único que posee su clave privada, y cualquiera que tenga la clave pública del emisor (e, n) estará en condiciones de descifrar el resumen, que llamaremos firma o signatura (S), y verificarla. Para ello, el emisor realiza la siguiente operación: S = (h(M))d mod n.

3.- El emisor envía al receptor el mensaje y la firma digital cifrados (C, S). Ya comenté en el post anterior cómo se cifran y descifran los mensajes y en éste me centro únicamente en la firma.

4.- El receptor descifra ambos y obtiene M y h(M). En el caso de la firma utilizando la clave pública del emisor y mediante la siguiente expresión: h(M) = Se mod n.

5.- El receptor calcula ahora el resumen del mensaje que ha descifrado en el paso anterior, es decir, realiza la siguiente operación: h'(M).

6.- Si h'(M) = h(M) se acepta la firma como válida, en caso contrario se rechaza. Si la firma es válida el receptor se asegura de que el mensaje ha sido originado realmente por el emisor y de que el mensaje no ha sido interceptado y alterado por un tercero.

Ejemplos de funciones hash son los algoritmos MD5 y SHA-3.

miércoles, 26 de octubre de 2016

Criptografía (XXXV): el algoritmo RSA (I)

En este post me propongo contar, como siempre de la forma más comprensible de la que sea capaz, lo que voy aprendido sobre RSA, un algoritmo de cifrado asimétrico que debe su nombre a las iniciales de los apellidos de sus tres inventores: Ronald Rivest, Adi Shamir y Leonard Adleman, que lo desarrollaron en 1977.

Como en todo criptosistema de clave pública un usuario dispone de dos claves: una pública, que debe estar en posesión de cualquier persona que pretenda enviarle un mensaje cifrado, y otra privada, que el usuario utilizará para descifrar los mensajes que le envíen y que sólo él posee. Es decir, el emisor cifrará el mensaje con la clave pública del receptor y sólo éste podrá descifrarlo utilizando su clave privada.

El algoritmo RSA sirve también para firmar digitalmente un mensaje, es decir, para que el receptor valide que el emisor es realmente quien lo ha enviado y para comprobar que no ha sido interceptado y alterado por terceros (integridad).

Decía en este post que, debido a que los criptosistemas asimétricos presentan una complejidad de cálculo significativamente mayor que los criptosistemas simétricos, que los hace significativamente más lentos que estos últimos, en la práctica se utilizan sistemas criptográficos híbridos.
Es decir, el texto en claro se cifra mediante una clave de sesión, correspondiente a cada mensaje particular y generada aleatoriamente, y la clave de sesión se cifra utilizando la clave pública del receptor, de tal manera que sólo el receptor puede descifrar la clave de sesión mediante su clave privada (criptografía asimétrica) y posteriormente descifrar el texto en claro mediante la clave de sesión (criptografía simética).

Una vez dicho esto, los mensajes a enviar se representan mediante números y la seguridad del algoritmo RSA se basa en el elevado coste computacional de encontrar los dos factores primos de un número muy grande resultado del producto de éstos, y se considera que será seguro hasta que no se conozca una forma eficiente de hallarlos. Por tanto, se trata de un problema que es muy fácil de resolver en un sentido (multiplicar dos número primos), pero cuya resolución en sentido contrario (conocido el producto hallar esos dos factores) se vuelve inabordable en un tiempo razonable para números lo suficientemente grandes, por mucha potencia de cálculo de la que se disponga con los ordenadores actuales.

Como digo, en el algoritmo RSA las cláves pública y privada se calculan a partir del producto de dos números primos grandes, de la siguiente manera:

1.- Se eligen aleatoriamente dos números primos grandes (p y q) y se calcula el producto (n). Es decir, n = pq.

2.- Se calcula la función de Euler del módulo n, que para dos números primos es: j(n) = (p - 1)(q - 1).

3.- Se escoge un número e, en el intervalo 1 < ej(n)que sea coprimo o primo relativo con j(n), es decir, de forma que el máximo común divisor de ej(n) sea 1 (mcd(e, j(n))= 1). La clave pública será (e, n).

4.- Se calcula, mediante el algoritmo de Euclides extendido, el inverso mutiplicativo (d) de e módulo j(n), es decir, que satisfaga: de º 1 mod (j(n)). La clave privada será (d, n).

El cifrado del mensaje (m) lo realiza el emisor con la clave pública del receptor mediante la siguiente expresión: c = me mod (n), y el receptor lo descifra con su clave privada mediante la expresión: m = cd mod (n).

¿Fácil, no?, pues yo no me he enterado de nada y como he dicho que lo que voy a intentar explicar de una forma comprensible pongo el siguiente ejemplo para ver si lo entiendo (con números pequeños, para facilitar su comprensión por parte de torpes como yo).

1.- Para generar un par de claves:

1.1.- Elijo dos números primos, por ejemplo: p = 53 y q = 997, y calculo su producto: n = pq = 53 x 997 = 52.841.

1.2.- Calculo 
j(n) = (p - 1)(q - 1) = (53-1)(997-1) = 52 x 996 = 51.792.

1.3.- Escojo un número natural e que sea primo relativo con 51.792, por ejemplo 7, ya que el máximo común divisor de 7 y 51.792 es 1. La clave pública será (7, 52.841).

1.4.- Calculo el inverso multiplicativo (d) de e módulo j(n):

a) 51.792 = 7.398  x 7 + 6.

b) 7 = 1 x 6 + 1.

c) 1 = 7 - 1 x 6.

d) 6 = 51.792 - 7.398 x 7.

e) 1 = 7 - 1 x (51.792 -7.398 x 7) = -1 x 51.792 + 7.398 x 7 + 7 = -1 x 51.792 + 7.399 x 7.

Por tanto, el inverso multiplicativo (d) de e módulo j(n) es 7.399 y la clave privada será (7.399, 52.841).

2.- Y ahora voy intentar ver si los resultados obtenidos me permiten cifrar y descifrar un mensaje (M) con ese par de claves. Hay que recordar lo que he dicho anteriormente sobre criptografía híbrida, es decir, que RSA se utiliza sólo para cifrar la clave de sesión y no para cifrar el texto en claro, porque en la práctica es un sistema mucho más lento que la criptografía simétrica. Por tanto, aunque sería posible cifrar también el propio texto en claro siempre que se transforme previamente la información de éste en un conjunto de números, lo que voy a hacer no pasa de ser un mero ejercicio teórico para ver si lo he comprendido correctamente.

a) Texto en claro (M) = "CIFRADORSA".

b) Como el módulo es 52.841, que en binario es: 1100111001101001 ((1 x 20) + (0 x 21) + (0 x 22) + (1 x 23) + (0 x 24) + (1 x 25) +  (1 x 26) + (0 x 27) + (0 x 28) + (1 x 29) + (1 x 210) + (1 x 211) + (0 x 212) + (0 x 213) +  (1 x 214) + (1 x 215)  = 1 + 8 + 32 + 64 + 512 +1.024 +2.048 + 16.384 + 32.768 = 52.841), es decir, 16 bits, deberemos cifrar bloques con una longitud máxima de 16 bits (2 bytes) inferiores a dicho valor. Por ejemplo, cifraremos los siguientes bloques: "CI", "FR", "AD", "OR", "SA" convirtiendo cada uno de ellos en un bloque de 2 bytes (1 byte por cada carácter).

c) Para ello, por ejemplo, transformamos esos bloques a números según el valor decimal de cada uno de ellos en código ASCII, de la siguiente manera:

"CI" = 01000011 01001001 = m1 = 17.225.
"FR" = 01000110 01010010 = m2 = 18.002. 
"AD" = 01000001 01000100 m3 = 16.708.
"OR" = 01001111 01010010 m4 = 20.306.
"SA" = 01010011 01000001 m5 = 21.313.

d) Cifrado: el emisor utiliza para ello la clave pública del receptor (7, 52.841), obteniéndose los siguientes bloques del criptograma:

c1 = 17.2257 mod 52.841 = 1.855.
c2 = 18.0027 mod 52.841 = 25.633.
c3 = 16.7087 mod 52.841 = 52.061.
c4 = 20.3067 mod 52.841 = 16.353.
c5 = 21.3137 mod 52.841 = 20.222.

e) Descifrado: el receptor utiliza su clave privada (7.399, 52.841):

m1 = 1.8557.399 mod 52.841 = 17.225 = 01000011 01001001 = "CI".
m2 = 25.6337.399 mod 52.841 = 18.002 = 01000110 01010010 = "FR".
m3 = 52.0617.399 mod 52.841 = 16.708 = 01000001 01000100 = "AD".
m4 16.3537.399 mod 52.841 = 20.306 = 01001111 01010010 = "OR".
m5 20.2227.399 mod 52.841 = 21.313 = 01010011 01000001 = "SA".

Texto en claro (M) = "CIFRADORSA".

En el siguiente post, teniendo en cuenta todo lo comentado en éste, hablaré de cómo puede el receptor validar la autenticidad del mensaje recibido, tanto identidad del emisor como integridad (no modificación) del mensaje.

lunes, 17 de octubre de 2016

Criptografía (XXXIV): cifrado cinta móvil (II)

En el post anterior puse un ejemplo de criptograma cifrado con la clave "Bocho" y que fue interceptado y descifrado por el bando nacional en la guerra civil española.

Decía también que a partir de la tabla de homófonos a la que llegué tras criptoanalizar otro mensaje cifrado con la misma clave sería mucho más fácil su descifrado si se mantenía la tabla de homófonos empleada, aunque se hubiera cambiado el alfabeto aleatorio.

Pues bien, voy a intentar su descifrado suponiendo que se mantienen ambas cosas, tabla de homófonos y alfabeto aleatorio.

Si fuera así el texto en claro sería algo parecido a:

B
P
N
V
M
D
M
70
Z
20
N
M
P
F
G
76
A
O
P
G
F
V
60
35
A
N
F
V
M
76
M
O
P
Z
F
Y
F
I
N
A
89
A
O
F
Y
20
V
L
A
11
A
O
P
N
F
G
B
A
D
A
B
A
N
M
G
T
20
X
07
A
O
P
A
S
60
N
E
C
F
O
M
X
20
Y
P
G
M
I
C
M
20
D
76
F
I
P
L
M
F
N
D
P
89
60
H
M
X
P
F
D
Q
M
G
Z
A
L
Y
P
E
C
60
P
S
B
A
N
A
60
Q
M
76
A
N
G
M
Z
C
A
X
M
P
D
F
G
O
M
B
Y
P
V
A
Z
M
X
A
G
O
F
70
A
M
N
A
O
A
G
80
A
O
A
O
P
P
N
O
F
D
F
G
N
F
B
N
F
70
60
D
76
A
D
76
F
G
F
D
F
H
76
N
A
D
11
F
N
P
B
A
N
A
E
C
20
D
P
G
60
O
F
G
B
A
X
66
F
D
O
60
B
C
20
N
76
P
70
F
D
E
C
60
G
60
F
D
X
C
F
D
Z
N
A
D
A
06
Z
C
A
Y
V
F
D
Z
60
L
A
N
X
P
G
V
A
76
N
M
X
C
Y
A
O
P
G
V
20
H
M
X
P
A
D
C
F
G
Z
N
P
G
G
F
N
Q
M
06
M
P
G
B
P
N
Z
A
D
Z
P
L
A
N
X
P
G
F
D
F
G
Z
A
G
M
Z
C
A
X
M
P
D
E
C
F
G
F
66
A
Y
Y
F
D
20
D
20
G
B
A
D
A
D
P
O
20
L
60
D
G
A
Y
M
N
S
A
L
A
40
P
B
A
L
F
Y
Y
P
D
V
60
H
M
X
A
D
P
S
O
60
L
60
N
A
D
G
60
N
Z
P
V
A
O
A
G
V
F
O
M
O
A
70
X
P
D
N
20
G
B
F
X
Z
P
A
Y
P
G
E
C
60
70
20
20
D
06
C
60
D
Z
N
F
D
20
D
F
H
Z
N
A
D
11
F
N
P

Por lo que queda claro que, al menos, tuvieron la precaución de cambiar el alfabeto aleatorio y ya el descifrado no será tan directo, pero ¿cambiaron también la tabla de homófonos?. Lo compruebo.

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

Por otra parte, recordar que 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. (%)
E13,6810,944
A12,5310,024
O8,686,944
S7,986,384
R6,875,496
N6,715,368
I6,255
D5,864,688
L4,973,976
C4,683,744
T4,633,704
U3,933,144
M3,152,52
P2,512,008
B1,421,136
G1,010,808
V0,90,72
Y0,90,72
Q0,880,704
H0,70,56
F0,690,552
Z0,520,416
J0,440,352
Ñ0,310,248
X0,220,176
W0,020,016
K0,010,008

Pues bien, si sólo hubieran cambiado el alfabeto aleatorio y no la tabla de homófonos las columnas de la tabla empleada serían las mismas que las de la tabla utilizada en el cifrado del primer criptograma. Voy a ver si es así.

El homófono "45" (20,31%), que es el que presenta una mayor frecuencia estimada de aparición en el texto en claro de la letra a la que sustituiría, es el candidato más probable a corresponderse con la "E".

Si esto es así, partiendo de la tabla obtenida tras el criptoanálisis del primer criptograma:
El homófono "85", que está en la misma columna, también sería la "E" en el texto en claro y los otros dos homófonos que se corresponderían con dicha letra, suponiendo que cada letra tiene cuatro, serían dos de los que faltan en la tabla:

- En la primera decena faltan: 06 (2,65%) y 07(0,88%).
- En la segunda decena faltan: 11 (2,65%).
- En la tercera decena faltan: 20 (13, 25%).
- En la cuarta decena faltan: 35 (0,88%).
- En la quinta decena el "45" es el candidato a ser la "E".
- En la sexta decena no faltan homófonos.
- En la séptima decena faltan: 60 (15,89%), 66 (1,77%) y 68 (0,00%).
- En la octava decena faltan: 70 (5,30%), 71 (0,00%), 76 (7,95%) y 79 (0,00%).
- En la novena decena el "85" es el candidato a ser la "E".
- En la décima decena faltan: "96" (0,00%)

Por lo que creo que es muy probable que los homófonos "20" y "60" se correspondan con la "E".

Por tanto tendríamos hasta el momento:

E: 45 (20,31%), 85 (15,01%), 60 (15,89%), 20 (13, 25%).

Una vez que he establecido los candidatos a ser la "E", los bigramas más frecuentes en español que empiezan por "E" son: "ES", "EN", "EL" y "ER".

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:

Bigrama Fr.

2077 3

4502 3
4550 3
6073 3
8577 3

A la vista de los resultados obtenidos hasta ahora, parece claro que los homófonos "77" (14,13%), "02" (14,13%), "50" (9,71%) y "73" (14,13%) son candidatos ser la "S", "N" y "R".

El homófono "77", que sigue inmediatamente en los bigramas repetidos a candidatos a ser la "E" en seis ocasiones, junto con el "50" que sigue a éstos tres veces y se encuentra en la misma columna de la tabla, hace que lo más probable es que ambos, junto con el otro que se encuentra en esa misma columna ("21"), sean los candidatos más probables a ser la "S".

Los otros dos homófonos, "02" y "73", junto con el resto de homófonos situados en sus respectivas columnas (por una parte: "02", "30" y "92", y por la otra: "73", "12" y "34"), serían candidatos a ser la "N" o "R".

Creo que lo anterior, la asignación realizada de columnas cuyos homófono se corresponderían con las consonantes más frecuentes ("S", "R" y "N"), no estará muy equivocado, pero habrá que prestar especial atención a la asignación concreta de cada columna a cada letra, ya que pueden estar intercambiadas entre sí debido a que en textos cortos no es fácil distinguir entre ellas, ni por su frecuencia de aparición en un texto en claro escrito en español ni por los bigramas más frecuentes en dicho idioma.

Dicho esto, siguiendo el mismo razonamiento que el empleado para la "E", considerando los resultados obtenidos hasta el momento y la frecuencia estándar de aparición de las letras en un texto en claro escrito en español, el homófono "88" (17,66%) es el candidato más probable a corresponderse con la "A", lo que implica que los homófonos: "05", "33" y "54", que están en la misma columna de la tabla, también serían la "A" en el texto en claro.

Es decir, hasta el momento tenemos la siguiente tabla de candidatos:

E: 45 (20,31%)85 (15,01%), 60 (15,89%), 20 (13, 25%).
A: 88 (17,66%), 54 (14,13%), 33 (7,95%), 05 (7,06%).

Una vez determinados los homófonos candidatos a ser la "A", 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:

Bigrama Fr.
8873 3
8877 3

Por tanto,si, como he dicho antes, el homófono "77" es más probable que sea la "S", entonces el "73", junto con el resto de homófonos situados en su misma columna, es más probable que sea la "R". Por tanto, de momento la tabla de candidatos quedaría como sigue:

E: 45 (20,31%)85 (15,01%), 60 (15,89%), 20 (13, 25%).
A: 88 (17,66%)54 (14,13%)33 (7,95%)05 (7,06%).
S: 77 (14,13%), 50 (9,71%), 21 (7,95%).
R: 73 (14,13%), 34 (8,83%), 12 (5,30%).
N: 02 (14,13%), 30 (7,95%), 92 (5,30%).

Intento ahora asignar la columna con los candidatos más probables a ser la "O", la tercera letra más frecuente en español. Los bigramas más frecuentes en español que empiezan por "O" son: "OS", "ON" y "OR".

los bigramas repetidos (3 o mas veces) que se observan en el criptograma y que terminan por los candidatos establecidos hasta el momento para la "S", "N" o "R" son los siguientes:

Bigrama Fr.
2077 3
4502 3
4550 3
6073 3
8577 3
8873 3
8877 3

Lo que no me dice gran cosa, ya que todos ellos comienzan con candidatos ya establecidos a ser la "E" o "A" (letras que muy frecuentemente preceden a estas consonantes), por lo que intento identificar al hómofono u homófonos que con mayor probabilidad se corresponderían con la "O" a partir de los bigramas repetidos dos veces en el criptograma que terminan con candidatos a ser la "S", "N" o "R", los siguientes:

Bigrama Fr.
2021 2
2073 2
2402 2
4434 2
4521 2
4530 2
4592 2
5450 2
6777 2
8550 2
9002 2

Por tanto, creo que con bastante probabilidad (atendiendo a los resultados obtenidos hasta el momento - descartando inicialmente aquellos bigramas repetidos dos veces en el criptograma que comienzan con candidatos ya establecidos a ser la "E" y "A" -, a los hómofonos que aparecen precediendo a los candidatos a ser la "S", "N" o "R" en dichos bigramas y a la frecuencia estándar de cada letra en el idioma español) los homófonos "24" (7,06%), "44" (11,48%), "67" (8,83%) y "90" (7,95%) son candidatos a ser la "O".

Los homófonos "24", "67" y "90" se encuentran en la misma columna de la tabla junto con el homófono "47" (8,83%), por lo que esta circunstancia, junto con que la frecuencia estimada de aparición en el texto en claro de la letra a la que cada uno de ellos sustituiría encaja muy bien con la que se espera para la letra "O", me hace pensar que éstos son los homófonos que con mayor probabilidad se podrían corresponder con la "O".

Por tanto hasta el momento la tabla de homófonos candidatos quedaría como sigue:

E: 45 (20,31%)85 (15,01%), 60 (15,89%), 20 (13, 25%).
A: 88 (17,66%)54 (14,13%)33 (7,95%)05 (7,06%).
O: 47 (8,83%), 67 (8,83%), 90 (7,95%), 24 (7,06%).
S: 77 (14,13%), 50 (9,71%), 21 (7,95%).
R: 73 (14,13%), 34 (8,83%), 12 (5,30%).
N: 02 (14,13%), 30 (7,95%), 92 (5,30%).

Voy a ver si en base a los bigramas repetidos que comienzan por candidatos a ser la "A" consigo completar un poco la tabla de candidatos. Dichos bigramas son los siguientes:

Bigrama Fr.
0561 2
3361 2
5450 2
8861 2
8894 2

Según la tabla de candidatos hasta el momento, "5450" podría corresponderse con "AS", por lo que conforme a los bigramas más frecuentes en español que comienzan con "A" e indicados anteriormente, el homófono "61", que sigue inmediatamente a candidatos a ser la "A" en 6 ocasiones, es probable que se corresponda con "D", "I" o "C".

Los homófonos "23", "49" y "82" se encuentran en la misma columna que el "61" y, por tanto, si no se ha modificado la tabla de homófonos respecto al primer mensaje cifrado, todos ellos sustituirían en el criptograma a la misma letra del texto en claro. La suma de la frecuencia de aparición de estos homófonos en el criptograma es 4,41%, lo que podría indicar que es más probable que los homófonos de esta columna se correspondan con la "D", pero no estoy seguro.

Intento salir de dudas en base a los bigramas repetidos (2 o más veces) que comienzan por homófonos que todavía no hemos asignado en la tabla y terminan con candidatos a ser la "E", ya que el bigrama más frecuente en español que termina por esa letra es "DE". Estos son los siguientes:

Bigrama Fr.
1185 2
1460 2
1860 2
2220 2
7860 2

Pocas conclusiones saco de ésto, sólo que "22" y "78" se encuentran en la misma columna y podrían ser la "D", pero no me convence la frecuencia de aparición en el criptograma del conjunto de los homófonos situados en esa columna (3,31%) para que éstos se correspondan con la "D". En base a dicha frecuencia los homófonos de esa columna podrían corresponderese con la "U", ya que "UE" es el segundo bigrama más frecuente en español que termina por "E".

Hago un último intento en base a trigramas antes de realizar una primera aproximación, para intentar despejar la duda de a qué letra del texto en claro sutituye el homófono "61" y aquellos que se encuentran en su misma columna ("23", "49" y "82"). En español los trigramas más frecuentes que empiezan por "A" son: "ARA", "ADO" y "ADA", y si acudimos al criptograma hay 21 trigramas que empiezan por los candidatos a ser la "A" y terminan con candidatos a ser la "A" y "O", de los que, descartando los trigramas que incluyen homófonos ya establecidos como candidatos, podrían formar los trigramas "ADO" y "ADA" los 14 siguientes:

054905
056147
056190
331188
333247
336154
336188
542588
548224
548988
881488
882367
884024
886190

Como se observa los homófonos "23", "49", "61" y "82" podrían formar ambos trigramas en 7 ocasiones, lo que me lleva a la conclusión de que es más probable que estos homófonos se correspondan con la "D" en lugar de la "I" o la "C".

Los trigramas repetidos no me aportan mayor información por ahora, por lo que hasta el momento la tabla de homófonos candidatos quedaría como sigue:

E: 45 (20,31%)85 (15,01%), 60 (15,89%), 20 (13, 25%).
A: 88 (17,66%)54 (14,13%)33 (7,95%)05 (7,06%).
O: 47 (8,83%), 67 (8,83%), 90 (7,95%), 24 (7,06%).
S: 77 (14,13%), 50 (9,71%), 21 (7,95%).
R: 73 (14,13%), 34 (8,83%), 12 (5,30%).
N: 02 (14,13%), 30 (7,95%), 92 (5,30%).
D: 61 (7,95%), 23 (4,42%), 49 (3,53%), 82 (1,77%).

Y ahora intento una primera aproximación para averiguar si en el cifrado de este criptograma se ha mantenido la misma tabla de homófonos que en el cifrado del primero. Quizás puede ver ya algo (palabras o parte de ellas) que me indique si se confirma esta circunstancia y, si es así, me permita avanzar más rápido en el descifrado.

Con la tabla de candidatos establecida hasta el momento, el texto en claro podría ser algo parecido al siguiente:

52 O R 18 27 S 59 70 44 E R 27 O E N 76 A D O N E 18 E 35 A R E 18
59 76 84 D O 26 E 16 E 93 R A 89 A D E 32 E 48 43 A 11 A D O R E N
52 A S A 25 A R 59 N 72 E 64 07 A D O A 46 E R 53 51 E D 27 94 E 69
O N 59 01 98 09 E S 76 E 42 O 62 59 E R S O 89 E 13 59 37 O E S 29 27
N 44 A 14 32 O 28 22 E O 46 19 A R A E 29 09 76 A R N 59 44 98 A 94 27
O S E N D 27 25 69 O 18 A 44 59 64 A N D E 70 A 59 R A D A N 80 A
D A D O O R D E S E N R E 19 R E 70 E S 76 A S 76 E N E S E
58 76 R A S 11 E R O 52 A R A 91 22 E S O N E D E N 19 A 94 66 E
S D E 19 22 E R 76 O 70 E S 04 78 E N E E S 37 78 E S 44 R A S A
06 26 22 A 69 75 E S 44 E 14 A R 64 O N 48 A 76 R 09 37 98 16 A D O N
48 E 41 27 94 O A S 78 E N 44 R O N N E R 29 27 06 27 O N 52 O R 44
A S 44 O 43 A R 94 O N E S E N 26 A N 84 26 22 A 37 09 O S 53 78 E
N E 66 A 32 87 E S E S E N 52 A S A S O D E 14 E S N A 69 27 R
17 A 14 A 40 O 19 A 62 E 69 32 O S 18 E 74 27 64 A S O 46 D E 14 E R
A S N E R 44 O 48 A D A N 18 E D 09 D A 70 94 O S R E N 52 E 37
44 O A 32 O N 04 78 E 70 E E S 06 51 E S 44 R E S E S E 41 44 R A
S 11 E R O























Creo que bastante mejor y, por tanto, que en este segundo criptograma puede que, pese a haberse cambiado la cinta aleatoria, se haya mantenido la misma tabla de homófonos con la que se cifró el primero. He marcado en color azul palabras de cuatro letras muy frecuentes en español que podrían estar en el texto en claro: "PARA", "PERO", "ESTE", "ESTA" y "ESTO", y aquellas palabras o parte de ellas que entiendo que podrían estar descifradas o parcialmente descifradas.

En mi opinión, lo más significativo de esta aproximación es que en la séptima fila podría leerse "DADO ORDENES REGRESE" si los homófonos de la columna que se corresponderían con la "S" fueran realmente la "N" en el texto en claro y viceversa, el "19" sustituyera a la "G" y el "70" a la "S", ya he dicho anteriormente que era probable que las columnas asignadas a las consonantes de mayor frecuencia estuvieran intercambiadas entre sí. Por tanto voy a considerar que esto es efectivamente así y antes de continuar corregir esta primera aproximación, ya que esta circunstancia puede influir bastante a la hora de detectar palabras o parte de ellas.

E: 45 (20,31%)85 (15,01%), 60 (15,89%), 20 (13, 25%).
A: 88 (17,66%)54 (14,13%)33 (7,95%)05 (7,06%).
O: 47 (8,83%), 67 (8,83%), 90 (7,95%), 24 (7,06%).
S: 02 (14,13%), 30 (7,95%), 92 (5,30%).
R: 73 (14,13%), 34 (8,83%), 12 (5,30%).
N: 77 (14,13%), 50 (9,71%), 21 (7,95%).
D: 61 (7,95%), 23 (4,42%), 49 (3,53%), 82 (1,77%).

52 O R 18 27 N 59 70 44 E R 27 O E S 76 A D O S E 18 E 35 A R E 18
59 76 84 D O 26 E 16 E 93 R A 89 A D E 32 E 48 43 A 11 A D O R E S
52 A N A 25 A R 59 S 72 E 64 07 A D O A 46 E R 53 51 E D 27 94 E 69
O S 59 01 98 09 E N 76 E 42 O 62 59 E R N O 89 E 13 59 37 O E N 29 27
S 44 A 14 32 O 28 22 E O 46 19 A R A E 29 09 76 A R S 59 44 98 A 94 27
O N E S D 27 25 69 O 18 A 44 59 64 A S D E 70 A 59 R A D A S 80 A
D A D O O R D E N E S R E 19 R E 70 E N 76 A N 76 E S E N E
58 76 R A N 11 E R O 52 A R A 91 22 E N O S E D E S 19 A 94 66 E
N D E 19 22 E R 76 O 70 E N 04 78 E S E E N 37 78 E N 44 R A N A
06 26 22 A 69 75 E N 44 E 14 A R 64 O S 48 A 76 R 09 37 98 16 A D O S
48 E 41 27 94 O A N 78 E S 44 R O S S E R 29 27 06 27 O S 52 O R 44
A N 44 O 43 A R 94 O S E N E S 26 A S 84 26 22 A 37 09 O N 53 78 E
S E 66 A 32 87 E N E N E S 52 A N A N O D E 14 E N S A 69 27 R
17 A 14 A 40 O 19 A 62 E 69 32 O N 18 E 74 27 64 A N O 46 D E 14 E R
A N S E R 44 O 48 A D A S 18 E D 09 D A 70 94 O N R E S 52 E 37
44 O A 32 O S 04 78 E 70 E E N 06 51 E N 44 R E N E N E 41 44 R A
N 11 E R O

Y ya se pueden intuir muchas más palabras o parte de ellas, y a partir de ellas otras (marco sólo algunas porque creo que son más que suficientes para obtener el texto en claro casi completo en la siguiente aproximación), lo que sin duda quiere decir que definitivamente, aunque cambiaron la cinta móvil con la que se cifró el primer mensaje, mantuvieron la tabla de homófonos.

Con todo ello completo la tabla de homófonos y realizo otra aproximación al texto en claro:

E: 45 (20,31%)85 (15,01%), 60 (15,89%), 20 (13, 25%).
A: 88 (17,66%)54 (14,13%)33 (7,95%)05 (7,06%).
O: 47 (8,83%), 67 (8,83%), 90 (7,95%), 24 (7,06%).
S: 02 (14,13%), 30 (7,95%), 70 (5,30%), 92 (5,30%).
R: 73 (14,13%), 34 (8,83%), 12 (5,30%).
N: 77 (14,13%), 50 (9,71%), 21 (7,95%).
I: 27 (9,71%), 59 (7,95%), 09 (4,42%), 84 (1,77%).
D: 61 (7,95%), 23 (4,42%), 49 (3,53%), 82 (1,77%).
L: 32 (4,42%), 69 (4,42%), 16 (1,77%), 87 (0,88%).
C: 94 (5,30%), 37 (4,42%), 64 (3,53%), 06 (2,65%).
T: 44 (11,48%), 76 (7,95%), 26 (3,53%).
U: 22 (4,42%), 78 (4,42%), 98 (2,65%), 51 (1,77%).
M: 18 (5,30%)48 (3,53%), 75 (0,88%).
P: 52 (5,30%), 19 (4,42%), 25 (1,77%).
B: 14 (4,42%), 43 (1,77%), 62 (1,77%).
G: 42 (0,88%), 01 (0,88%), 93 (0,88%), 63 (0,00%).
V: 29 (2,65%), 10 (0,00%), 55 (0,00%), 81 (0,00%), 99 (0,00%).
Q: 04 (1,77%)53 (1,77%)28 (0,88%)91 (0,88%).
H: 66 (1,77%).
J: 11 (2,65%).
X: 41 (1,77%), 13 (0,88%), 58 (0,88%), 74 (0,88%).

Lo homófonos que figuran en la tabla anterior con una frecuencia estimada de aparición en el texto en claro de la letra a la que sustituyen de 0,00% no figuran en el criptograma, pero, conforme a la tabla de homófonos que se utilizó en el cifrado del primer mensaje, están ubicados en la misma columna que los homófonos marcados en azul y que en el criptograma sustituirían a la letra que se indica.

Con esta tabla de homófonos el texto en claro sería algo parecido a lo siguiente:

P O R M I N I S T E R I O E S T A D O S E M E 35 A R E M
I T I D O T E L E G R A 89 A D E L E M B A J A D O R E S
P A N A P A R I S 72 E C 07 A D O A 46 E R Q U E D I C E L
O S I G U I E N T E G O B I E R N O 89 E X I C O E N V I
S T A B L O Q U E O 46 P A R A E V I T A R S I T U A C I
O N E S D I P L O M A T I C A S D E S A I R A D A S 80 A
D A D O O R D E N E S R E P R E S E N T A N T E S E N E
X T R A N J E R O P A R A Q U E N O S E D E S P A C H E
N D E P U E R T O S E N Q U E S E E N C U E N T R A N A
C T U A L M E N T E B A R C O S M A T R I C U L A D O S
M E X I C O A N U E S T R O S S E R V I C I O S P O R T
A N T O B A R C O S E N E S T A S I T U A C I O N Q U E
S E H A L L E N E N E S P A N A N O D E B E N S A L I R
17 A B A 40 O P A B E L L O N M E X I C A N O 46 D E B E R
A N S E R T O M A D A S M E D I D A S C O N R E S P E C
T O A L O S Q U E S E E N C U E N T R E N E N E X T R A
N J E R O

Con lo que resulta evidente que los homófonos "35", "07" y "80" se corresponden con la "H", el "89" sustituye a la "M", el "72" a la "F", el "46" y "17" a la "Y" y el "40" a la "J", y que el texto en claro es:

"Por Ministerio Estado se me ha remitido telegrama del embajador España París fechado ayer que dice lo siguiente: Gobierno México en vista bloqueo y para evitar situaciones diplomáticas desairadas ha dado ordenes representantes en extranjero para que no se despachen de puertos en que se encuentran actualmente barcos matriculados México a nuestros servicios, por tanto barcos en esta situación que se hallen en España no deben salir ya bajo pabellón mexicano y deberán ser tomadas medidas con respecto a los que se encuentren en extranjero".
Con lo que, considerando los homófonos que aparecen tanto en el primer criptograma como en el segundo, sólo faltarían "68", "71", "79" y "96" para reconstruir la tabla completa.