Sistemas de encriptación

Criptografía clásica, de llave privada o simétrica

La seguridad criptografía clásica se basa en el secreto de la clave, por lo que utilizando algoritmos simples puede dar lugar a textos tan seguros como los que ofrece la criptografía actual con un coste operacional mucho menor.

La clave de encriptación es la misma que la de desencriptación, de forma que los llamaremos también sistemas simétricos.

 

Algoritmos de sustitución.

Estos algoritmos se basan en sustituir un carácter o cadena de caracteres por otro carácter o cadena de caracteres.

 

Sustituciones monoalfabéticas.

Son los algoritmos de sustitución más simples y su utilización se remonta ya a Julio César. Por ejemplo, la A se sustituye por la B, la B por la C, etc... Podemos asociar este método a una suma. Si damos a cada carácter un valor (A=1, B=2, C=3, etc...) el cifrado se reduce a sumar 1 a cada carácter del texto. Si en vez de sumar 1 sumamos 2, 3 o cualquier otro valor, ese valor se convierte en la clave.

Este sistema nos enfrenta por primera vez al concepto de módulo.

Llamaremos módulo al valor máximo que puede adquirir una suma. En este sistema que hemos diseñado, el módulo será 27, el número de caracteres del alfabeto. Así, si a la Z, cuyo valor es 27, le sumamos 1, obtenemos 28, pero no tenemos 28 caracteres, por lo que, cuando al cifrar nos enfrentemos a estas situaciones, lo que haremos es restar el módulo a todo valor que lo supere.

Supongamos texto plano "TAXI". El valor de sus caracteres es: 21, 1, 25, 9. Si la clave es 7, sumamos 7 a cada carácter, y nos queda 28, 8, 32, 16. Pero no existen más que 27 caracteres, por lo que no podemos representar el primer carácter del texto cifrado, cuyo valor es 28. Para ello restamos 27 a cada valor que supere dicho número y nos queda 1, 8, 5, 16, que nos da el texto cifrado "AHEO".

Si nuestro alfabeto comprendiera caracteres en mayúscula, en minúscula y los diez dígitos, el módulo sería 64 y operaríamos exactamente igual, restando 64 a cada valor mayor que 64. En cierto modo, el concepto de módulo se reduce a decir que tras la Z viene la A.

En este caso los caracteres sustitutos tienen una cierta relación: primero la A, luego la B, luego la C etc... Podríamos hacer que los caracteres no guardaren relación alguna. Es decir, que al cifrar sustituimos la A por la D, la B por la Z, la C por la R... En este caso la clave sería una tabla con la correspondencia entre carácter del texto plano y su cifrado.

Estos algoritmos son muy vulnerables. Para abrirlos basta con estudiar las características de los lenguajes naturales. Por ejemplo, si nos enfrentamos a un texto cifrado, y sabemos que está escrito en castellano, contamos cada carácter. El que más aparezca será, probablemente, una A o una E, pues son las letras que más se utilizan. Después, en cada palabra de dos caracteres podemos tener la seguridad de que una es una vocal. Entre las palabras de un solo carácter, las más frecuentes son "a", "y" u "o", entre las de tres letras "que", "con", "más"... etc. De esta forma, y con paciencia, se puede abrir cualquier texto.

 

Sustituciones polialfabéticas.

Para añadir una dificultad surgieron los cifradores polialfabéticos. Un ejemplo es el cifrado Vigenère, que consiste en lo siguiente. Se crea una matriz de 27x27 y se rellena escribiendo en cada fila un alfabeto. A cada fila se la identifica con una letra

 

Fila A A B C D ... +0
Fila B Z A B C ... +26
Fila C Y Z A B ... +25
Fila D X Y Z A ... +24
... ... ... ... ... ... ...

 

Después se decide una palabra clave y se va rotando ininterrumpidamente, de forma que el carácter i-esimo de la clave decide qué fila de la matriz usamos para cifrar el carácter i-esimo del texto plano. Por ejemplo, con el texto plano "ESTO ES UN SECRETO" y la clave "PUERTA" procederíamos así:

 

Texto plano: E S T O E S U N S E C R E T ...
Clave: P U E R T A P U E R T A P U ...

 

El primer carácter del texto plano lo cifraríamos con el alfabeto de la fila P, el segundo con el de la fila U, el tercero con el de la fila E... hasta el séptimo, que corresponde de nuevo a la primera letra de la clave, que vamos repitiendo hasta el fin del mensaje.

También se puede hacer que los alfabetos de la matriz no se generen de forma ordenada, como en este caso, sino de forma aleatoria. El problema en este caso es que la matriz es parte de la clave.

Estos sistemas son más seguros que los monoalfabéticos, pero tampoco son inviolables. La seguridad viene dada por la longitud de la clave.

 

El algoritmo Playfair.

Este método fue desarrollado por Charles Weathstone en 1.854. Sin embargo se conoce por el nombre del Barón Playfair, quien insistió para que este método fuera utilizado por el servicio secreto Británico.

Este algoritmo se basa en la sustitución de parejas de caracteres o digramas.

Se genera una matriz con el conjunto de caracteres que se van a utilizar. La primera línea es la palabra clave y el resto de la matriz se rellena con los demás caracteres de forma ordenada. La sustitución se realiza de la siguiente forma:

  • Si una pareja de caracteres del texto original se encuentra en filas y columnas diferentes se sustituyen por los caracteres situados en las intersecciones de las filas y columnas que ocupan. Es decir, se considera que los caracteres originales son los extremos de una diagonal de un rectángulo y se sustituyen por los extremos de la otra diagonal. El orden se determina de la siguiente forma: primero se toma la intersección de la fila de la primera letra con la columna de la segunda, después la intersección de la fila de la segunda letra con la columna de la primera.
  • Si una pareja de caracteres está en la misma fila se sustituyen por las letras que tienen a su derecha. El carácter a la derecha del carácter situado en la última columna de una fila es el carácter situado en la primera columna de la misma fila.
  • Si una pareja de letras está en la misma columna se sustituyen por las letras que tienen debajo. El carácter debajo del carácter situado en la última fila de una columna es el carácter situado en la primera fila de la misma columna.
  • Si una pareja de caracteres son dos caracteres iguales se pone una X en medio.

El alfabeto Playfair no reconoce la Ñ y representa igual la I que la J.

Veamos un ejemplo con la palabra clave "CLAVE" y el texto "ESTO ES UN SECRETO".

 

C L A V E
 
B D F G H
I J K M N O
P Q R S T
U W X Y Z

 

ES TO ES UN SE CR ET OX
vt zt vt yi tv ap hz mz

 

Del mismo modo que usamos una X para separar los caracteres de una pareja cuando son iguales, hemos usado aquí una para emparejar un carácter que estaba solo.

Este algoritmo en muy vulnerable al estudio estadístico de digramas. Al igual que hacíamos para vulnerar un texto cifrado mediante una sustitución monoalfabética, estudiando los caracteres más usuales en los lenguajes naturales, en este caso buscamos los digramas más habituales "un", "el", "la", "lo"...

 

"Rebeca".

En su novela "La clave está en Rebeca" Ken Follet describe el siguiente algoritmo, utilizado por un espía alemán en El Cairo durante la II guerra mundial.

 

Wolff fue hasta el armario donde guardaba la radio. Sacó la novela inglesa y la hoja de papel con la clave del código. Estudió la clave. Era 28 de mayo. Tenía que sumar 42 -el año- al 28 para calcular el número de la página de la novela que debía utilizar en el cifrado de su mensaje. Mayo era el quinto mes, así que debía descartar una de cada cinco letras de la página.

Decidió comunicar: "He arribado. Control equipo. Confirmen recepción." Empezó a buscar, desde la primera línea de la página 70, la letra H. Era el décimo signo, descartando cada quinta letra. Por lo tanto, en su código estaría representada por la décima letra del alfabeto, la J. Luego necesitaba una E. En la página la tercera letra después de la H era una E. Por consiguiente, la E de "he" estaría representada por la tercera letra del alfabeto, la C. Las letras raras, como la X, se codificaban en forma especial.

Este tipo de código era una variante de los cuadernillos de un solo uso, único tipo de código inviolable en teoría y en la práctica. Para descifrar el mensaje, el escucha debía tener el libro [Para nosotros la clave] y conocer la clave [Para nosotros el algoritmo].

[Ken Follet, "La clave está en Rebeca"]

 

El algoritmo stream.

Este algoritmo se basa en la suma de valores de los caracteres del texto plano y de la clave. De esta forma el valor del primer carácter del texto cifrado es el de la suma del valor del primer carácter del texto plano y el del primero de la clave, el valor del segundo carácter del texto cifrado es el de la suma del segundo carácter del texto plano y el del segundo de la clave, etc...

Una vez más, nos valemos del concepto de módulo, de forma que cuando un valor excede el módulo se lo restamos.

 

Texto plano: E S T O E S U N S E C R E T ...
Valor: 5 20 21 16 5 20 22 14 20 5 3 19 5 21 ...
 
Clave: P U E R T A P U E R T A P U ...
Valor 17 22 5 19 21 1 17 22 5 19 21 1 17 22 ...
 
Suma: 22 42 26 35 26 27 39 36 25 24 24 20 22 43 ...
Módulo (27): 22 15 26 8 26 27 12 9 25 24 24 20 22 16 ...
 
Texto cifrado: U Ñ Y H Y Z L I X W W S U O ...

 

Con una clave aleatoria y tan larga como el propio texto plano este algoritmo es, en teoría y en la práctica, inviolable, pues cualquier texto plano de la misma longitud es un posible candidato.

Una forma práctica de generar una clave tan larga como se desee es recurrir a un libro que sería nuestra clave. De esta forma, podríamos indicar a nuestro destinatario que la clave comienza (por ejemplo) en el tercer párrafo de la página 25 o utilizar un método parecido al del algoritmo "Rebeca" para decidir la página.

Sin embargo, no se debe utilizar dos veces la misma clave. El texto cifrado es la suma del texto plano y la clave. Si tenemos dos textos planos y los ciframos con la misma clave, la resta de los dos textos cifrados anula la clave en ambos y da un texto vulnerable.

 

X1 = P1 + K

[1]

X2 = P2 + K

[2]
 

X1 - X2 = P1 - P2

[1]-[2]

 

P1 - P2 puede parecernos seguro, pero un criptoanalista puede obtener a partir de él los textos originales.

 

web@alt64.org

Índice de artículos
Página principal de Alt+64