Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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 pasatiempo: como resolver
crucigramas, acertijos, etc.; y la tercera es que, por deformación profesional, tiendo a
automatizar dichos procesos (cifrado, descifrado y criptoanálisis), lo que también me sirve
para no olvidar los principios de programación aprendidos hace también mucho tiempo.
1.- Cifra el texto en claro considerando bloques de k símbolos del mismo (bigramas,
trigramas, etc.).
3.1..- Dadas dos matrices K y M éstas se pueden multiplicar sí y sólo sí el número de
columnas de K es igual al número de filas de M (como es nuestro caso) y el elemento cij
de la matriz producto (C) se obtiene como el sumatorio de los productos de cada elemento
de la fila i de la matriz K por cada elemento de la columna j de la matriz M. Es decir:
En nuestro caso, como la matriz K tiene k filas y k columnas, y la matriz M tiene k filas y 1
columna, la matriz producto (C) tendrá k filas y 1 columna:
3.2.- Por otra parte, para que la matriz K tenga inversa (K-1) se debe cumplir la
siguiente condición (necesaria pero no suficiente):
Donde:
K: matriz que se utilizará como clave para cifrar el texto en claro.
K-1: matriz inversa de K, que se utilizará para descifrar el mensaje cifrado o criptograma.
In: matriz identidad de orden n.
Por lo que esto impone una condición (tal y como he dicho necesaria
pero no suficiente): sólo las matrices cuadradas tienen matriz inversa y,
por tanto, la matriz K que se utilice como clave debe ser cuadrada
(mismo número de filas que de columnas), como también es nuestro
caso.
Donde:
K-1: matriz inversa de K.
CT: matriz de cofactores de K transpuesta.
|K|: determinante de la matriz K.
3.6.- Y, por último y para terminar este repaso de matemáticas, me tengo que referir a
los números primos entre sí (coprimos o primos relativos), es decir, aquellos cuyo máximo
común divisor (mcd) es 1 o -1, o, lo que es lo mismo, aquellos que no tienen un divisor en
común diferente de 1 y -1, ya que |K| y n (tamaño del alfabeto) deben ser coprimos para
que la matriz K sea invertible en módulo n.
4.1.- Cifrado:
Texto en claro: "EJEMPLO DE CIFRADO HILL".
Longitud texto en claro = 20.
Clave de cifrado: "CLAVEEJEM".
Longitud de la clave: 9.
Como clave (K) vamos a utilizar una matriz cuadrada de orden k = 3 (3 filas y 3
columnas), para lo que distribuimos las letras de la clave en tres filas de tres caracteres cada
una y sustituimos cada uno de los caracteres por el número correspondiente a la posición
que ocupa en el alfabeto español, de la siguiente manera:
Antes que nada, vamos a comprobar si esta matriz (K) tiene inversa (K-1) mod 27, ya que
si no es así no se podría utilizar como clave:
det K mod 27= |K| mod 27 = -2.444 mod 27 = -14, por lo que la matriz K es invertible en
módulo 27, ya que su determinante es distinto de cero y -14 y 27 son coprimos.
mod 27 = 26 = Z.
c = (k21 x m1 + k22 x m2 + k23 x m3) mod 27 = (22 x 4 + 4 x 9 + 4 x 4) mod 27 = 140 mod 27
2
= 5 = F.
c = (k31 x m1 + k32 x m2 + k33 x m3) mod 27 = (9 x 4 + 4 x 9 + 12 x 4) mod 27 = 120 mod 27
3
= 12 = M.
Después repetimos lo mismo con el segundo trigrama del texto en claro ("MPL"), de tal
forma que el cifrado se realizaría de la siguiente manera:
mod 27 = 11 = L.
c = (k21 x m4 + k22 x m5 + k23 x m6) mod 27 = (22 x 12 + 4 x 16 + 4 x 11) mod 27 = 372 mod
5
27 = 21 = U.
c = (k31 x m4 + k32 x m5 + k33 x m6) mod 27 = (9 x 12 + 4 x 16 + 12 x 11) mod 27 = 304 mod
6
27 = 7 = H.
"ZFMLUHJHGLOCJDJZMPIEZ".
4.2.- Descifrado:
Criptograma: "ZFMLUHJHGLOCJDJZMPIEZ".
Clave de descifrado: matriz inversa (K-1) mod 27. La calculamos con la
fórmula ya vista anteriormente:
Donde:
K-1: matriz inversa de K.
CT: matriz de cofactores de K transpuesta.
|K|: determinante de K, que debe calcularse en mod n (tamaño del alfabeto), en
nuestro caso en módulo 27, y que tal y como hemos calculado antes, en nuestro ejemplo,
es -14.
(|K|)-1: inverso del determinante de la matriz K, es decir: 1/|K|. Debe calcularse en mod n
(tamaño del alfabeto), en nuestro caso en módulo 27, y que sería -2, ya que -2 es el inverso
multiplicativo de -14 en módulo 27.
Por tanto:
787 mod 27 = 4 = E.
m = (k x c1 + k x c2 + k x c3) mod 27 = (24 x 26 + 6 x 5 + 16 x 12) mod 27 = 846 mod
2
-1
21
-1
22
-1
23
27 = 9 = J.
m = (k x c1 + k x c2 + k x c3) mod 27 = (4 x 26 + 7 x 5 + 9 x 12) mod 27 = 247 mod
3
-1
31
-1
32
-1
33
27 = 4 = E.
768 mod 27 = 12 = M.
m = (k x c4 + k x c5 + k x c6) mod 27 = (24 x 11 + 6 x 21 + 16 x 7) mod 27 = 502 mod
5
-1
21
-1
22
-1
23
27 = 16 = P.
m = (k x c4 + k x c5 + k x c6) mod 27 = (4 x 11 + 7 x 21 + 9 x 7) mod 27 = 254 mod
6
-1
31
-1
32
-1
33
27 = 11 = L.
"EJEMPLODECIFRADOHILLX".