lunes, 25 de febrero de 2013

Criptografía: la ciencia de los secretos (Parte I)

[Esta es la primera parte de dos entregas relacionadas con la criptografía. Esta entrada tiene como objetivo  explicar cuáles son algunas de las técnicas tradicionales, así como dar una visión general de la labor de la criptografía. El viernes habrá otra publicación que tratará sobre el comportamiento de los sistemas criptográficos modernos, es decir, aquellos que empleamos a diario desde nuestros ordenadores]

La escítala, una de las primeras técnicas de cifrado de la Historia /  Eivind Lindbråten


Desde que el ser humano comenzó a comunicarse ha existido el deseo de que la información intercambiada se enmascarase de tal manera que posibles fisgones no pudieran comprender su significado. Algunos de nosotros hemos utilizado códigos a lo largo de nuestra vida, si bien de manera informal. Es hora de que veamos cómo se ha llevado a cabo la práctica de enviar secretos, desde un punto de vista más metódico.

La criptografía puede considerarse la rama de la ciencia que se encarga de realizar transformaciones sobre el lenguaje de los mensajes, de tal manera que lectores no autorizados sean incapaces de comprender su contenido. Un sistema criptográfico es la entidad encargada de aplicar una serie de transformaciones sobre un mensaje en claro (plaintext), para producir un criptograma o mensaje cifrado (cyphertext). Las transformaciones que se aplican son matemáticas, por lo que es imprescindible tener claro que cada letra puede representarse mediante un número distinto, sobre el cual pueden aplicarse operaciones, como la suma o la resta, para luego volver a la representación en forma de caracteres. Por ejemplo, a la letra A se corresponde con el número cero, la B con el uno y así sucesivamente. La potencia de esta asociación entre números y letras radica en las ventajas que aporta un marco formal.

La naturaleza de los sistemas criptográficos ha ido evolucionado con el paso del tiempo. En el siglo V a.C ya existían técnicas como la escítala o el cifrado Atsbah que permitían la codificación de mensajes. En general, estos procedimientos basaban su funcionamiento en la sustitución de cada una de las letras del abecedario por otra distinta, siguiendo una regla fija. A partir del conocimiento de los pasos seguidos para el cifrado, era posible recuperar el mensaje original. Debido a que estas técnicas emplean un único alfabeto alternativo para codificar el mensaje se denominan técnicas de sustitución monoalfabética, de entre las cuales destacamos el cifrado César.

El cifrado César sustituye cada letra del mensaje original por aquella letra que se encuentra a k unidades de la letra original, por lo que la regla empleada no es fija (como sucedía con el cifrado Atsbah), sino que dispone de una variable: el desplazamiento k a llevar a cabo. Por ejemplo, si k=3 la sustitución que se aplica a cada una de las partes del mensaje puede verse reflejada en la figura que se encuentra bajo estas líneas. 

Sustitución monoalfabética con desplazamiento k=3 / Cepheus

Para este caso concreto, A pasa a ser  B, C se transforma en E y así sucesivamente. Las últimas letras (X, Y y Z) se convierten en las tres primeras respectivamente (A, B y C). Una ventaja muy importante de este procedimiento de cifrado es que el mero conocimiento de la regla empleada para cifrar es inútil por sí sólo, porque también es necesario conocer el valor de k con el que se había cifrado el mensaje original. De manera muy sencilla, ese valor de k constituye un secreto compartido, una clave, que solo los interlocutores designados deben conocer. A continuación puede verse un ejemplo de texto original y su correspondiente texto cifrado.
Texto original: Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. 
Texto cifrado: Oruhp lsvxp groru vlw dphw, frqvhfwhwxhu dglslvflqj holw, vhg gldp qrqxppb qlek hxlvprg wlqflgxqw xw odruhhw groruh pdjqd doltxdp hudw yroxwsdw.
Como puede apreciarse, el resultado es completamente ininteligible, motivo por el cual las legiones romanas empleaban este esquema de cifrado para ocultar el contenido de sus mensajes. Su utilidad en dicho contexto histórico fue el que instigó los rumores de su uso por parte de Julio César, del cual toma su nombre.

Esta técnica se encuentra en desuso desde principios del año 1000 d. C. El motivo es que aplicar un desplazamiento a cada una de las letras, a primera vista produce resultados ininteligibles, pero deja intactos los patrones presentes en el texto original. Esto es debido a que las letras empleadas para comunicarse en un cierto idioma siguen una determinada distribución de frecuencias, es decir, puede saberse la proporción aproximada con la que aparece una determinada letra en un idioma concreto. Para comprender mejor lo que se quiere decir con distribución de frecuencias, puede verse a continuación un ejemplo de histograma de frecuencias para el idioma español.

Histograma de frecuencias para el español / WIKIPEDIA
El histograma situado a la izquierda se ha calculado a partir de varios textos en español y, para cada letra, indica el porcentaje de veces que aparece. Si lleváramos a cabo un cifrado César la única diferencia entre el histograma calculado a partir del mensaje sin cifrar y el obtenido a partir del cifrado, sería un desplazamiento en la distribución de frecuencias. Por ejemplo, el pico que se observa en la A pasaría a encontrarse k letras después, por lo que si construimos este histograma a partir de textos cifrados, el problema de encontrar la k empleada se transforma en encontrar el desplazamiento de los picos. En general, a la primera puede que el desplazamiento adivinado sea incorrecto, pero es posible encontrarlo con relativa facilidad, simplemente intentando averiguar a dónde han ido a parar los picos correspondientes a las letras más frecuentes. El problema se simplifica si se emplean ordenadores, ya que ni siquiera necesita calcularse un histograma porque la máquina es lo suficientemente potente como para descifrar el texto con todos los valores posibles de k y comprobar con cual de ellos se obtiene un texto con sentido.

Esta técnica para averiguar la clave empleada en cifrados como el anterior recibió el nombre de análisis de frecuencias. Los cifrados de sustitución monoalfabéticos quedaron inservibles, pero persistía la necesidad de comunicarse de manera secreta, por lo que aparecieron nuevas técnicas. Si en este tipo de cifrados sólo se empleaba un alfabeto, es decir, para cada mensaje sólo se disponía de un alfabeto alternativo, que era el mismo que el original pero desplazado k unidades, el paso siguiente era usar más alfabetos. Es decir, que a una misma letra no le correspondiese siempre la misma cifrada, sino que hubiera alguna alternativa.

Si se emplean varios alfabetos, el histograma de frecuencias no guarda ningún parecido porque cada una de las letras sigue un cifrado independiente al resto. Por este motivo, este tipo de cifrados reciben el apelativo de polialfabéticos ya que emplean varios alfabetos. La más sencilla de estas técnicas recibe el nombre de cifrado Vignère y fue planteado en 1553. La idea principal de esta técnica es utilizar para cada letra del mensaje original un cifrado César distinto. Debido a que cada letra se codifica de manera independiente necesitamos un elemento adicional, la clave, que es mucho más compleja que la k empleada en el cifrado César.

Veamos un ejemplo. Necesitamos dos elementos para cifrar, el primero de todos es el mensaje a transmitir. En este caso escogemos una palabra de actualidad, SOBRESPARATODOS. Para poder cifrarla necesitamos una clave,  la cual escogemos que tome el valor de AMIGOS. Aquí surge el primer problema, la clave debe ser igual de larga que el mensaje a cifrar, por lo que es necesario expandirla. Este proceso de expansión consiste en rellenar el final de clave con el principio de la misma, hasta que la longitud sea idéntica a la del mensaje. La clave extendida sería entonces AMIGOSAMIGOSAMI

Una vez establecidos estos parámetros de entrada, el cifrado Vignère recorre el mensaje original y la clave al mismo tiempo. De tal manera que en cada paso de cifrado se dispone de una letra del mensaje original y otra letra de la clave. Para cifrar la letra del mensaje se calcula la posición que ocupa en el alfabeto el carácter de la clave. Esa posición es el valor k que emplea para cifrar (mediante cifrado César) la letra correspondiente del mensaje.

Proceso de cifrado Vignère para las tres primeras letras del mensaje SOBRESPARATODOS, empleando para ello la clave AMIGOS / Elaboración propia.
En la figura anterior puede verse como a la S (primer carácter del mensaje) le corresponde el ordinal 18 y a la A (primera letra de la clave) el número 0. La suma de ambos resulta en el ordinal 18 (esto es, hemos aplicado un cifrado César sobre la letra del mensaje), el cual se corresponde con la letra S. El proceso se repite para la segunda posición de la clave y el mensaje. La letra O se corresponde con el ordinal 14 y la M con el ordinal 12 que sumados producen el número 26. Debido a que hay exactamente 26 letras (desde 0 hasta la 25) la letra 26 es equivalente a la letra cero (el resto de dividir 26 entre 26 es cero, es como si la suma diera la vuelta, volviendo a empezar a partir del 26), por lo que se obtiene la A como resultado. La figura anterior concluye con el resultado de cifrar la tercera letra, la B, con la tercera letra de la clave, la I. En este caso la suma resulta en 9, lo cual equivale a la letra J. El proceso se repite para cada una de las letras del mensaje. Los elementos involucrados en el proceso pueden verse a continuación:


texto: SOBRESPARATODOS
clave: AMIGOS
cifrado: SAJXSSBIXOTALUG

Debido a que este tipo de cifrado intenta usar una letra distinta para cifrar cada parte del mensaje, su fortaleza su mantuvo hasta 1863, cuando Friedrich Kasiski determinó que algunos patrones típicos del texto en claro seguían apareciendo en el texto cifrado. Esto se debe a que la clave suele ser, en la mayoría de los casos, más corta que el mensaje. Este hecho fuerza a que la clave tenga que extenderse, repitiéndose fragmentos a lo largo de la misma. Entonces es cuando, por azar, es posible encontrarse letras iguales del texto en claro por fragmentos iguales (repetidos) de la clave. De esta manera algunos patrones pueden aparecer en el texto cifrado y es posible reconstruir la clave que se empleó.

Estas técnicas no son complejas, pero dominaron gran parte de la historia de la criptografía. Este viernes veremos cómo hemos pasado de estos esquemas de cifrado tan básicos a disponer de comunicaciones seguras en Internet. 

Pepe "Puertas de Acero" Perez

No hay comentarios:

Publicar un comentario

Comparte este post

Related Posts Plugin for WordPress, Blogger...