Latest Posts:

2 de octubre de 2013

Criptografía: Entre el lenguaje y las matemáticas



Durante los últimos años, se ha hablado mucho sobre la seguridad en Internet y los peligros que tiene enviar tus datos. La solución que nos ofrecen: encriptar. Las páginas de los bancos, o de comercio electrónico, vienen encriptadas (lo distinguiréis porque en la barra de la dirección, en vez del típico http, veréis https). Pero ¿Sabemos realmente qué es la encriptación?¿En qué consiste?
Teoría clásica de la comunicación y encriptación
Una visita a la wikipedia ya nos deja una definición bastante exacta: "Criptografía (del griego κρύπτω krypto, «oculto», y γράφως graphos, «escribir», literalmente «escritura oculta») tradicionalmente se ha definido como la parte de la criptología que se ocupa de las técnicas, bien sea aplicadas al arte o la ciencia, que alteran las representaciones lingüísticas de mensajes, mediante técnicas de cifrado y/o codificado, para hacerlos ininteligibles a intrusos (lectores no autorizados) que intercepten esos mensajes."
Para entender bien la definición, primero hay que entender como se produce la comunicación de un mensaje:

Como vemos, en todo mensaje hay un emisor (emite el mensaje), un receptor (quien lo recibe), un canal por el que se envía el mensaje y un código. El código es el sistema común que hace que el receptor entienda el mensaje. Un ejemplo clásico es el propio idioma, que es comprensible por aquellos que lo hablan. En el código es donde entra en marcha la criptografía. De hecho, cuando alguien habla en un idioma que desconocemos, en cierta manera están hablando de forma "cifrada" para nosotros. Este no es un hecho menor, dados casos como el del ejercito norteamericano, que usaron Indios Navajos como operadores de radio, para que los Japoneses no se enteraran de las conversaciones. Pero el objetivo de la criptografía es obtener un método genérico de encriptado, independiente del idioma. Hoy en día, este sistema no tendría mucho éxito, dada la cantidad de buenos traductores que hay por Internet.
Imaginemos un Capitán que quiera enviar información a un General que se encuentre lejos, y teme que al mensajero le atrapen las tropas enemigas. Si leyeran ese mensaje, sería fatal para ellos, pues podrían enterarse de sus planes. Así que lo mejor es escribirlo cifrado.
Los principios: el cifrado de "El Cesar"
Ya los antiguos y belicosos romanos se dieron cuenta, como bien decíamos antes, de lo importante que era que el enemigo no pudiera interceptar sus comunicaciones. Pero como ésto era inevitable, crearon el primer sistema de cifrado, conocido como el cifrado de "El Cesar", por ser las tropas del ejercito romano en usarlo. Aunque el nombre técnico sería el de "Cifrado por Trasposición".
Este sistema de cifrado seguía una lógica muy simple: elegías un coeficiente de trasposición (vamos, eliges un número), por ejemplo el 2. Así que lo añadías a las letras del abecedario. De tal manera que sustituías las letras originales, por la letra que se encontraba dos posiciones más adelante. Por ejemplo, sustituías la A por la C, la B por la D, etc...  Para ver un ejemplo, supongamos el siguiente mensaje: "Saludos a todos". Le aplicamos un coeficiente de trasposición 2, con lo que quedaría: "Tcnwfqt c vqfqt". Algo totalmente ilegible e incongruente para alguien que no conozca dicho coeficiente.
Vulnerabilidades
Este sistema de cifrado se mostró altamente eficiente para textos cortos, pero daba problemas con textos largos. Entonces era más fácil descifrarlos. Esto se debía a que realmente seguía manteniendo la estructura propia del lenguaje. Es decir, la palabra "Saludos" siempre se escribiría "Tcnwfqt " con un coeficiente de trasposición = 2. De tal manera que, si el texto estuviera en español, sabremos que la letra que aparece en mayor número de ocasiones es la 'A' (ver Wikipedia: Frecuencia de aparición de letras). Entonces si vemos que en un texto la letra que más aparece es la 'C',  podemos deducir el coeficiente de trasposición. A este método se le llama "Criptoanálisis Estadístico".
Mediante este método, cuanto más largo es un texto, más fácil es obtener una estadística fiable, que con un texto corto. Aún así, conociendo el método, solo es cuestión de paciencia.

Métodos con Claves: Critografía Simétrica y Asimétrica

Dada la importancia de controlar el tráfico de datos, el cifrado ha ido cogiendo gran importancia hasta nuestros días. De esta manera, se ha buscado formas de encriptar que, aunque sean públicos y conocidos, no permitan hacer un simple criptoanálisis estadístico para obtener el mensaje deseado.
La idea inicial del cifrado es el uso de una palabra clave conocida solamente por el emisor y el receptor (deseado, claro. El que reciba el mensaje va a ser un receptor, pero éste sólo será informativo si es capaz de decodificar la información que el mensaje contiene). De esta manera la palabra clave serviría para encriptar y desencriptar la información.
Una forma sencilla usada en el siglo XVII, fué una variante del método de trasposición. Asignemos un número a cada letra del abecedario, de tal manera que la A = 001, la B = 002, etc... Ahora cojamos el texto: "Saludos". Y elegimos como palabra clave ABETO. Si en vez de escribirlo con palabras, lo pasamos a números, el texto quedaría: '022001013024005018022' y la palabra clave sería '001002006023018'.
Ahora cogemos ambos códigos numéricos y los ponemos uno encima del otro, en grupos de tres, sumando el primer código de la primera letra del texto a la primera letra de la clave, y así, sucesivamente. En caso de que la clave no llegue a cubrir la longitud del texto, la repetimos, hasta donde haga falta...
022 001 013 024 005 018 022
+
001 002 006 023 018 001 002
======================
023 003 019 047 023 019 024

Como vemos la suma de la letra U, sumada a la letra T, se escapa del alcance del abecedario. Que tiene un total de 29 letras (Ver Método DIMQV, que se está tomando como base en este ejemplo, aunque pudiera no ser del todo exacto). En este caso, lo más sencillo es restarle 29 a 47, que daría 18. De tal manera que el texto cifrado quedaria: "TCPOTPU". Cuando se recepcionara el texto, solo tendríamos que hacer la operación inversa para obtener la clave final. Este ejemplo es muy sencillo, dado que hemos asignado simplemente números a las diferenes letras y hemos hecho una simple suma. Los sistemas actuales usan complejas ecuaciones para que el cifrado sea más efectivo.
Este sería un ejemplo de lo que se conoce como Criptografía Simétrica, o de una sola clave. La mayor parte de los sistemas de encriptación actuales están basados en sistemas de Criptografía Asímetrica, de llave pública y llave privada, en la que el programa crea una clave privada (de forma autónoma) que no es conocida más que por él (mediante sistemas matemáticos de cálculo) y el usuario introduce una clave alfanumérica (es decir, formada por números y letras, así como caracteres especiales, como la @ o la #) que puede dar a otras personas (llave pública).
En todos los programas informáticos que se usan actualmente (en webs o en Windows), las contraseñas van encriptadas con Criptografía Simétrica, en ficheros, que después son leídos para hacer la comparación pertinente. En sistemas Unix usan sistemas que llaman de "one way encription", encriptación de una sola vía, que se trata de sistemas de encriptación que no se pueden desencriptar.
Fuente:
google.com, pub-7451761037085740, DIRECT, f08c47fec0942fa0