12 de marzo de 2012

Criptografia: la escritura secreta

Conceptos básicos:

Uno de los pilares básicos sobre los que descansan la mayoría de las soluciones de seguridad es la criptografía.
Problemas de autenticidad, o lo que es lo mismo, demostrar que alguien es quien dice ser y que la información no ha sido alterada; y de privacidad, es decir, ocultar la información a terceros, son resueltas     con esta técnica.
El término criptografía viene del griego "criptos" (secreto) y "grafos" (escritura), y su finalidad principal consiste en codificar una información original utilizando una clave, de forma que el resultado sea ininteligible para las personas que no posean la clave de descodificación. A esta codificación se la denomina cifrado y al proceso inverso, descodificación, se lo denomina descifrado.
A la información original, que no está aun cifrada, se la conoce como texto llano o claro, a la clave de cifrado nos referimos también como llave, mientras que a la información una vez codificada tras el cifrado se la denomina criptograma.
Otra disciplina relacionada con la criptografía es el criptoanálisis, que analiza la robustez de los sistemas de cifrado y se comprueba si realmente son seguros. Para ello, se intenta romper la seguridad que proporciona la criptografía, deshaciendo los sistemas de cifrado y accediendo de esta forma a la información secreta en su formato original. No debemos ver en estas técnicas una amenaza a la criptografía y, por consiguiente, a la seguridad, ya que en realidad se trata de una herramienta muy poderosa que permite mejorar los sistemas de criptografía constantemente y a desarrollar otros nuevos más efectivos.
Por último, y para terminar de recorrer el árbol de disciplinas, nos encontramos en la raíz a la criptología, que es la ciencia que engloba tanto las técnicas de criptografía como las de criptoanálisis.
En primer lugar nos encontramos con los algoritmos simétricos, también llamados de clave secreta o única. Estos sistemas utilizan una misma clave para cifrar y descifrar y es propia de los métodos clásicos, si bien todavía se utiliza en muchos procesos. El principio es sencillo: tomamos como ejemplo un texto cualquiera; a cada letra se le asigna un número, de manera que cambiamos cada letra por el número que le corresponde. Cualquier remitente que tenga una copia de la tabla que hemos empleado (clave) puede hacer el proceso inverso (sustituir cada número por la letra que le corresponde) y de esa manera descifrar el texto original.
Los algoritmos asimétricos o de llave pública, aparecidos en 1976 de la mano de Diffie y Helman, marcaron el inicio de la criptografía moderna. En estos sistemas las claves de cifrado y descifrado son diferentes. Por lo general la clave de cifrado es pública y la de descifrado debe permanecer secreta. Cuando alguien quiere enviar algo utiliza la clave pública del remitente, y solo éste con su clave privada podrá descifrar el criptograma. El proceso también funciona al revés, de manera que un remitente puede cifrar un mensaje con su clave privada y dicho mensaje sólo podrá ser descifrado utilizando la clave pública de dicho remitente.
Estos algoritmos resuelven los problemas de distribución de claves de la criptografía simétrica, donde el emisor y receptor tenían que acordar la misma clave en la mayoría de las ocasiones a través de canales     inseguros. 

Método de transposición:

En nuestro repaso por los métodos clásicos de criptografía, nos centramos en el método de transposición,
origen y fundamento de otros sistemas de cifrado más complicados.El método de transposición consiste en reordenar los elementos que forman el texto original, de modo que el criptograma resultante tiene los mismos elementos pero su nueva colocación impide que se pueda entender.

Pongamos como ejemplo el siguiente texto:
c o m p u t a c i ó n

Una transposición muy simple, y por tanto poco efectiva, podría consistir en escribir el mensaje al revés, con lo que quedaría:

1) Intercambiar lugares pares e impares en parejas, de forma que si la primera pareja es «gu», tras el proceso de transposición queda como «ug»:
c o m p u t a c i ó n
o c p m t u c a ó i n

2) Escribir el mensaje en tres columnas de izquierda a derecha, y leerlo verticalmente desde la primera columna hasta la tercera:
c o m p u t a c i ó n
Paso 1, escribirlo en tres columnas:

c o m
p u t
a c i
ó n

Paso 2, leerlo verticalmente:

c p a ó o u c n m t i

La combinación de los métodos de sustitución y transposición puede dar lugar a algoritmos de cifrado algo más complicados, por ejemplo, vamos a aplicar dos de los ejemplos más básicos de forma conjunta. Para llevar a cabo la sustitución vamos a escoger, por simplificar, un alfabeto reducido en el que se encuentran todos los elementos necesarios para escribir nuestro ejemplo.
Tomamos dos alfabetos:
a c i m n o p t u
alfabeto 1: a c i m n o p t u
alfabeto 2: + 0 1 2 3 4 5 6 7

Por el método de sustitución - que, recordemos, consistía en sustituir cada uno de los caracteres de un alfabeto por otro -, el texto queda de la siguiente forma:
c o m p u t a c i o n
0 4 2 5 7 6 + 0 1 4 3

A continuación, recogemos el criptograma resultante de la sustitución y le aplicamos el proceso de transposición basado en el intercambio por parejas de los lugares par e impar:
0 4 2 5 7 6 + 0 1 4 3
4 0 5 2 6 7 0 + 4 1 3

El cifrado final, tras realizar la sustitución y la transposición, sería el siguiente:
texto claro: c o m p u t a c i ó n
criptograma: 4 0 5 2 6 7 0 + 4 1 3

El descifrado tan sólo depende de conocer el método de transposición y el alfabeto de sustitución para, tras aplicarlo al revés, obtener el texto claro.

Método César

Ahora vamos a conocer uno de los sistemas más clásicos de la Historia de esta disciplina: el método César, cuyo origen se sitúa en el siglo I antes de Cristo.

Este sistema se basa en el método de sustitución monoalfabética, es decir, el proceso de sustitución se lleva a cabo en cada uno de los elementos del texto claro.<BR>En el método César, a cada letra le corresponde la que está 3 posiciones por delante en un proceso circular que recorre todo el alfabeto. Por ejemplo, a la letra «a» le corresponde la «d», a la «b» la «e», y así sucesivamente. Cuando hablamos de proceso circular nos referimos a que si llegamos al final del alfabeto, por ejemplo la «z», se entiende que volvemos al principio del mismo, por lo que tras contar tres posiciones a la «z» le corresponde la letra «c», a la «y» le corresponde la «b» y a la «x», la «a».

En términos más formales podríamos describir al método César como Criptograma(i) = Texto_claro(i) + 3 (mod 26), (i) es la posición de las letras y (mod 26) indica que se trata de una suma módulo 26, en la que 26 es el número de letras del alfabeto que utilizamos.
Para entenderlo más claramente vamos a realizar un sencillo ejemplo:
texto claro: p a n t a l l a
criptograma: s d q w d o o d

Como puede apreciarse, este método arrastra las debilidades propias de los algoritmos de sustitución. En vez de utilizar siempre la suma de 3 posiciones podría cambiarse este valor por otro cualquiera. En cualquier caso, y para dar con la solución, podemos acudir a un sencillo criptoanálisis basado en la frecuencia de los elementos del criptograma.
Observamos que la letra que más se repite es la «d». Acudiendo a datos estadísticos del lenguaje nos encontramos con que dos de las letras que más se repiten son las vocales «a» y «e» (tanto en español, como en inglés).
Una prueba básica consiste en ver la diferencia que hay entre el elemento más repetido, la «d», y estas vocales. En el caso de la «a» nos da un valor de 3 posiciones de diferencia, y el valor 25 al calcular la diferencia con la letra «e». Para probar si la solución corresponde a uno de los dos casos más probables, tan solo tenemos que aplicar el mismo método, pero restando.
Al restar 25 nos da lo siguiente:
criptograma: s d q w d o o d
resta 25: t e r x e p p e

Como vemos, en este caso el intento sería fallido, ya que el proceso nos devuelve un nuevo texto sin sentido. Si ahora lo intentamos con el valor 3, otro de los probables según la frecuencia de las letras, obtenemos la solución.
criptograma: s d q w d o o d
resta 3: p a n t a l l a

Método Vigenère

Tanto en los métodos de sustitución, como en los de transposición, las modificaciones a los que sometíamos el texto claro eran fijas, bien teniendo en cuenta la correspondencia con un segundo alfabeto en el caso de la sustitución, o64 en barajar las letras en función de un algoritmo preestablecido en las transposiciones.
El cifrado de Vigenère utiliza una clave externa para realizar las sustituciones, con lo que este mismo algoritmo puede dar diferentes criptogramas para el mismo texto claro en función de la clave que utilicemos.

Veamos un sencillo ejemplo para ilustrar este método:

texto claro: s e g u r i d a d
clave de cifrado: a b c

Para llevar a cabo el cifrado dividimos el texto claro en grupos de tantas letras como tenga la clave, y a continuación las hacemos corresponder con las letras de la clave de cifrado:

texto claro: s e g u r i d a d
clave: a b c a b c a b c

El proceso de sustitución es similar al método César, por el que a cada letra del texto claro le corresponde la que está 3 posiciones después en el alfabeto. En esta ocasión, el número de posiciones que debemos contar viene dado por la posición que ocupa en el alfabeto la letra clave que le corresponde. Así, cuando la clave sea la letra «a», avanzaremos una posición, si la clave es «b» serán dos, y si fuera «c» serán 5.
En el ejemplo que nos ocupa, en primer lugar deberíamos transformar la letra «s» del texto claro según su clave «a», es decir, avanzamos una letra en el alfabeto, el resultado será «t». En el segundo caso, la letra «e» según la clave «b» dará una «g», porque se avanza dos posiciones.

texto claro: s e g u r i d a d
clave: a b c a b c a b c
criptograma: t g l v t n e c i
resultado final: t g l v t n e c i

Ahora que conocemos el proceso, vamos a comprobar cómo, cambiando la clave de cifrado y con el mismo texto claro, obtenemos un criptograma totalmente diferente:

clave: bcbc
texto claro: s e g u r i d a d - - -
clave: b c b c b c b c b c b c
criptograma: u j i z t n f f f - - -
resultado final: u j i z t n f f f

Para poder realizar el descifrado la única condición es conocer la clave que se ha utilizado en el proceso, y hacer los pasos a la inversa. Partiendo del criptograma, tendremos que dividir en grupos según la clave y, en esta ocasión, restar posiciones en vez de sumar.
Este método es algo más seguro que los vistos con anterioridad, debido principalmente a que el criptograma varía según una clave externa, no conocida en principio por un hipotético atacante. Sin embargo se ha demostrado que no resulta difícil romper este cifrado utilizando técnicas de criptoanálisis basadas en la incidencia de coincidencias en el criptograma.
Dura tarea es la de mantener la seguridad..

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...