Ir al contenido principal

Criptografía (XVII): criptología para todos (I)

Como se ha puesto de manifiesto en todos los posts de esta serie, no soy un experto en la materia y mis únicas pretensiones son aprender sobre un tema que me resulta apasionante y contribuir, en la medida que mi capacidad y talento me lo permitan (de verdad, poco en ambos casos), a divulgarlo de una forma comprensible entre aquellas personas que estén interesadas, espero que sin cometer demasiados errores.

Antes de continuar con otros posts de esta serie, en los que compartiré lo que voy aprendiendo sobre la criptografía moderna, aunque sin olvidarme de la clásica (ya que en mi opinión su conocimiento es fundamental para entender los criptosistemas modernos), creo que es necesario sentar ciertas definiciones y conceptos, algunos de lo cuales se han avanzado en los anteriores y serán empleados en los siguientes:

Criptografía (Diccionario RAE): (Del gr. κρυπτός, oculto, y -grafíaArte de escribir con clave secreta o de un modo enigmático.

Critptoanálisis (Diccionario RAE)(Del gr. κρυπτός, oculto, y análisisArte de descifrar criptogramas.

De lo que entiendo que la última es la contraria de la primera, aunque creo que lo más adecuado puede ser entender que ambas técnicas son complementarias (llamarles ciencias me parece muy pretencioso. La verdadera ciencia que subyace en todo esto, como en casi todo, son las matemáticas).

Criptología: Que yo haya visto no se recoge en el Diccionario de la RAE, pero entiendo que es un término que se emplea para agrupar a las dos definiciones anteriores, y de ahí el título dado a esta pequeña serie de posts, ya que en ellos hablaré tanto de criptografía como de criptoanálisis.


Criptosistema: Que yo haya podido ver tampoco se recoge en el Diccionario de la RAE, pero creo que se podría definir como el sistema mediante el cuál una quíntupla de elementos interactúan en la transformación de un mensaje inteligible en un mensaje cifrado o criptograma: (M, C, K, E, D).

Siendo:

M: Conjunto finito de todos los mensajes sin cifrar o texto en claro (en inglés plain text).
C: Conjunto finito de todos los mensajes cifrados o criptogramas (en inglés cipher text).
K: Conjunto finito de todas las claves (en inglés key) que se pueden emplear, tanto en el cifrado como en el descifrado.
E: Conjunto de funciones o transformaciones de cifrado (en inglés encrypt) que se aplica a cada elemento de M para obtener un elemento de C.
D: Conjunto de funciones o transformaciones de descifrado (en inglés decryptque se aplica a cada elemento de C para obtener un elemento de M.

Por lo que, evidentemente, el criptosistema debe cumplir necesariamente que si se cifra un mensaje m (m є Mutilizando la clave k (k є K) y después lo desciframos utilizando la clave (k), que puede o no ser la misma que la empleada para cifrar (de esto ya hablaremos después), se obtiene el mismo mensaje (m), es decir: Dk(Ek(m)) = m.

- Esteganografía: (Del gri στεγανος - steganos: cubierto u oculto, y γραφος - graphos: escritura) Estudio y aplicación de técnicas que permiten ocultar mensajes en otro tipo de información de tal manera que los primeros pasen inadvertidos para las personas que, aún teniendo acceso a su contenido, no sean los destinatarios de los mensajes. El mensaje oculto puede "viajar" dentro de la información que lo contiene en claro o cifrado.    

La esteganografía es también muy antigua y ha sido ámpliamente utilizada por multitud de culturas con técnicas muy diversas y también ha ido evolucionado a lo largo del tiempo. Ejemplos: letras situadas en un orden concreto en un determinado texto, tinta invisible, uso del bit menos significativo en una imagen digital, ocultación de mensajes en archivos digitales de vídeo y audio, etc.

Además, puede ser el complemento perfecto a la criptografia, ya que combinadas ambas técnicas, antes que nada, las personas que pudieran tener acceso a la información deberían sospechar que hay un mensaje oculto y, aún así, se encontrarían con que éste está cifrado.     

Repasemos ahora algunos de los criptosistemas clásicos para introducir algunos conceptos adicionales.

1.- La escítala espartana:
Se trata de uno de los sistemas criptográficos más antiguos que se conocen, utilizado en el siglo V a.C. en las guerras entre Atenas y Esparta, y era un sistema de transposición, es decir, sólo el orden de cada carácter del texto en claro resultaba alterado en el texto cifrado, sin que existiera ninguna sustitución de éstos por otro u otros caracteres.

El sistema consistía en varas de similar grosor o diámetro, que tenían que tener tanto el emisor como el receptor de los mensajes, y en cintas de cuero o papiro en las que se enviaba el mensaje.

Para cifrar un mensaje se enrollaba la cinta en la vara y se escribía el mensaje a cifrar longitudinalmente, de la siguiente manera (texto en claro: "ESCITALAEJEMPLODECIFRADO"):

Así, si algún ateniense interceptaba el mensaje no entendería un carajo, puesto que leería en la cinta desenrollada el mensaje cifrado: "EEESJCCEIIMFTPRALALODADO".

Evidentemente, para leer el texto en claro bastaba con volver a enrollar la cinta en una vara del mismo diámetro o similar.

2.- Cifrado de Polibio:
En el siglo II a.C Polybius ideó otro de los sistemas criptográficos más antiguos que se conocen.

En este caso se trata de un sistema criptográfico de sustitución, en contraposición con un sistema de transposición, ya que el orden de cada carácter del texto en claro no resulta alterado en el texto cifrado, sino que cada uno de ellos es sustituido por otro u otros caracteres.

Se trata, asimismo, de un sistema de sustitución monoalfabética, en contraposición con un sistema de sustitución polialfabética, porque se emplea un único alfabeto, es decir, cada carácter del texto en claro se sustituye siempre por el mismo o mismos caracteres en el texto cifrado.

El sistema consistía en un tablero de 5x5 cuadrículas en las que se colocaban las letras del alfabeto (ver figura).

Para cifrar un mensaje se sustituía cada uno de los caracteres del texto a cifrar por el dígrafo o grupo de dos letras que le correspondía en el tablero, es decir, cada letra del texto en claro se sustituía por la letra de la fila y de la columna que correspondían a la cuadrícula en la que estaba.

Por ejemplo, si el texto en claro fuera: "EJEMPLOCIFRADOPOLIBIO" obtendríamos el texto cifrado o criptograma: "AEBDAECBCECACDACBDBAVBAAADCDCECDCABDABBDCD". 

3.- Cifrado César:

Otro de los sistemas criptográficos más antiguos que se conocen, utilizado en el siglo I a.C. y que debe su nombre a Julio César. Era un sistema de sustitución monoalfabética.

En este caso cada carácter del texto en claro es sustituido por otro carácter del alfabeto situado un número fijo de posiciones por delante (típicamente tres posiciones), y es monoalfabético porque se emplea un único alfabeto, es decir, cada carácter del texto en claro se sustituye siempre por el mismo carácter en el texto cifrado.

Como digo, para cifrar un mensaje lo único que había que hacer era sustituir cada carácter del texto en claro por aquél que se encontraba tres posiciones por delante de éste en el alfabeto.

Ejemplo:
De esta forma, si algún bárbaro no analfabeto y versado en latín (digo yo que alguno habría) interceptaba el mensaje tampoco entendería un carajo, puesto que leería el mensaje cifrado que se muestra en la figura anterior.

Evidentemente, para descifrar el mensaje bastaba con sustituir cada uno de sus caracteres por aquél que se encontraba tres posiciones por detrás de cada uno de ellos en el alfabeto:
Este cifrado, lógicamente, puede generalizarse para utilizar cualquier desplazamiento (hasta 26) y, en ese caso, el desplazamiento utilizado para cifrar un mensaje sería la clave, pudiendo expresarse la función de cifrado como: Ek(m) = (m+k) mod 26,  y la de descifrado como: Dk(c) = (c-k) mod 26.

4. Cifrado de Alberti:
Fue inventado en el siglo XV por Leon Battista Alberti y era un sistema de sustitución polialfabética, es decir, en este caso, en contraposición con un sistema de sustitución monoalfabética, se pueden emplear diversos alfabetos (hasta un máximo de 24) y, por tanto, cada carácter del texto en claro no se sustituye siempre por el mismo carácter en el texto cifrado.

El sistema consistía en discos, que tenían dos círculos concéntricos o anillos, de los que debían disponer tanto el emisor como el receptor de los mensajes.

Cada disco tenía grabados en su anillo exterior, que era fijo, los caracteres del latín (excluidos "H", "K" e "Y", en mayúsculas y ordenados alfabéticamente; en total 20 caracteres) y los cuatro primeros dígitos (ordenados del 1 al 4). Por tanto, en total había 24 casillas. Este anillo se utilizaba para el texto en claro.

Cada disco disponía también de un anillo interior móvil en el que estaban grabados los 23 caracteres del latín ("h", "k" e "y" incluidos, en minúsculas y desordenados) más "&". Por tanto, en total tenía también 24 casillas. Este anillo se utilizaba para el texto cifrado.

Los dígitos del anillo exterior servían, entre otras cosas que veremos en un ejemplo un poco más adelante, para sustituir palabras o frases relevantes en el mensaje en claro por el grupo de dos, tres o cuatro dígitos que se les había asignado a cada una de ellas. Es decir, Alberti elaboró un libro de códigos con todas las combinaciones posibles de dos, tres y cuatro dígitos del 1 al 4 ("11" a "4444"; en total 336 combinaciones posibles) y le asignó a cada una de ellas un significado (palabra o frase). Esto es lo que se conoció como código de recifrado. Lógicamente, ese libro de códigos debía ser compartido también por el emisor y por el receptor de los mensajes. Para el ejemplo de cifrado que viene a continuación supongamos que "11" significa "ALBERTI".

Para cifrar un mensaje, supongamos que el texto en claro es: "CIFRADO DE ALBERTI", el emisor y el receptor se tenían que poner de acuerdo en la letra mayúscula del carácter del anillo externo fijo que utilizarían como clave, en nuestro ejemplo supongamos que la "A".

Entonces, el emisor giraba el anillo interno móvil hasta hacer coincidir la letra minúscula que deseaba, en nuestro ejemplo supongamos que la "m", con la letra mayúscula del carácter del anillo externo fijo que hemos elegido como clave (en nuestro ejemplo la "A"), tal y como se muestra en la figura.

En nuestro ejemplo el primer carácter del mensaje cifrado sería la "m", para indicar al receptor la posición relativa de los anillos que determina la correspondencia inicial de los caracteres, es decir, el primer alfabeto de sustitución a utilizar.

A partir de ahí (con esa posición de los anillos), el emisor cifraba los caracteres del texto en claro que quería hasta que decidía cambiar de alfabeto.

En nuestro ejemplo supongamos que decide cifrar con ese alfabeto la primera palabra del mensaje cifrado, "CIFRADO", con lo que obtendría como mensaje cifrado hasta ese momento: "miadpmhk" (recordar que el primer carácter "m" es para indicar al receptor la posición relativa de los anillos), y que a partir de ese momento decide cambiar de alfabeto.

Cuando el emisor decidía cambiar de alfabeto incluía en el texto cifrado el dígito (del 1 al 4) del anillo externo fijo (en nuestro ejemplo supongamos que elige el 3) cuya letra minúscula (la que coincidía en ese momento con el dígito seleccionado, en nuestro caso la "s") debía mover el receptor hasta hacer que coincidiera con el carácter utilizado como clave (en nuestro caso la "A"), tal y como se muestra en la figura.

Y después continuaba cifrando los caracteres del texto en claro que deseaba. Supongamos que en nuestro caso decide cifrar el texto en claro con el nuevo alfabeto hasta el final, con lo que el texto cifrado quedaría: "miadpmhk3qizz" (recordar que el dígito "3" se incluye para indicar al receptor que gire el anillo interno hasta la nueva posición relativa de los anillos, es decir, para utilizar un nuevo alfabeto).

Y, ¿de dónde salen los caracteres "zz" del final?. Para ello hay que tener en cuenta lo que he comentado sobre el código de recifrado y que en nuestro ejemplo hemos dicho que el grupo de dos dígitos "11" significa "ALBERTI", es decir, el emisor ha sustituido "ALBERTI" por "11" en el texto en claro y ha cifrado ese grupo de dos dígitos conforme a la posición relativa de los anillos en ese momento, obteniendo como resultado "zz".

Evidentemente, en el proceso de descifrado el receptor del mensaje giraba el anillo interno hasta hacer coincidir el primer carácter del texto cifrado (en nuestro ejemplo "m") con el carácter mayúscula del anillo externo correspondiente a la letra que había pactado con el emisor como clave (en nuestro caso "A". Ver la primera figura del ejemplo) e iba obteniendo el texto en claro (en nuestro caso: "CIFRADO"), y cuando se encontraba un dígito en el texto cifrado giraba el anillo interno hasta hacer coincidir la letra minúscula que en ese momento coincidiera con él (en nuestro ejemplo se encontraría con el 3 en el mensaje cifrado y este dígito coincide con la "s") con el carácter utilizado como clave (en nuestro caso la "A". Ver la segunda figura del ejemplo) y continuaba descifrando el mensaje con la nueva posición relativa de los anillos (obteniendo en nuestro caso el siguiente texto en claro: "CIFRADODE11").

Si en el texto en claro el receptor se encontraba con grupos de dos, tres o cuatro dígitos acudía al libro de códigos para conocer qué palabras o frases estaban asociadas a cada uno de ellos (en nuestro ejemplo "11" significa "ALBERTI"), obteniendo como resultado el texto en claro definitivo (en nuestro caso "CIFRADO DE ALBERTI").


Hasta aquí este post, por no hacerlo excesivamente largo, y en el siguiente continuaré repasando algunos de los criptosistemas clásicos que me servirán para introducir nuevas definiciones y conceptos que considero importantes.

Quizás también te interese:

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