domingo, 18 de enero de 2009

Criptografía

Breve historia de la criptografía




La criptografía es tan antigua como la escritura: siempre que ha habido comunicación entre dos personas, o grupos de personas, ha habido un tercero que podía estar interesado en interceptar y leer esa información sin permiso de los otros. Además, siempre que alguien esconde algo, hay personas interesadas en descubrirlo, así que ligado a la ciencia de esconder (la criptografía), se encuentra casi siempre la de descifrar (el criptoanálisis).

El primer cifrado que puede considerarse como tal (por tener evidencias no sólo del cifrado, sino también una metodología e instrucciones para llevarlo a cabo) se debe a Julio César: su método consistía en sustituir cada letra de un mensaje por su tercera siguiente en el alfabeto. Parece ser que también los griegos y egipcios utilizaban sistemas similares. Civilizaciones anteriores, como la Mesopotamia, India y China también utilizaban sus propios métodos.

Estos sistemas tan simples evolucionaron posteriormente a elegir una reordenación cualquiera (una permutación) del alfabeto, de forma que a cada letra se le hace corresponder otra, ya sin ningún patrón determinado (ss. XV-XVI).

Durante la I Guerra Mundial se utilizaron extensivamente las técnicas criptográficas, con no muy buen resultado, lo que impulsó al final de la guerra, el desarrollo de las primeras tecnologías electromecánicas. Un ejemplo de estos desarrollos es la máquina Enigma, utilizada por los alemanes para cifrar y descifrar sus mensajes.

Todos los métodos comentados anteriormente pueden ser más o menos seguros, dependiendo de la complejidad del sistema, del tiempo y la información adicional de que disponga el atacante; en cualquier caso, todavía tienen los siguientes inconvenientes:

Solamente dan cuenta del problema de la confidencialidad (primer punto de los comentados anteriormente): sirven para dificultar las escuchas, pero no sirven para afrontar ninguno de los otros tres problemas reseñados.

Hacen falta dos claves por persona con la que nos queremos comunicar (la que nos dé él, y la que usamos para él).

Para intercambiar las claves, es preciso un contacto personal, o bien, una comunicación a través de un medio seguro y no interceptable.

Como ventajas, cabe destacar su simplicidad y rapidez, que la hace fácil de usar en muchos contextos.

Afortunadamente, la criptografía actual tiene resueltos estos problemas, mediante la codificación basada en sistemas de clave pública. Cada persona tiene dos claves: una privada (esto es, sólo la conoce y maneja él) y una pública (esto es, accesible por quien la solicite). Estas claves (junto con el sistema de cifrado) satisfacen la siguiente propiedad: lo que se codifica utilizando una de ellas, se decodifica con la otra, de manera que utilizando las dos de modo consecutivo obtenemos el mensaje original.

Confidencialidad Cuando queremos enviar un mensaje a una persona, lo codificamos con su clave pública. De esta forma sólo él puede descifrarlo, utilizando su clave privada.

Autenticidad Sólo nosotros podemos codificar el mensaje con nuestra clave privada, y cualquiera puede leerlo con la pública. Esto sirve para garantizar el origen del mensaje. Habitualmente, en lugar de cifrar el texto del mensaje completo, se extrae un resumen del texto (mediante su adecuada transformación: nótese que no sirve cualquier resumen puesto que para mensajes diferentes deberíamos poder obtener resúmenes diferentes que imposibiliten la confusión) y es este resumen lo que se codifica y adjunta al final del mensaje. En este caso hablamos de firma digital.

Integridad Si la forma de obtener el resumen del punto anterior es correcta, dos mensajes diferentes tendrán resúmenes diferentes. En consecuencia, un mensaje modificado tendría un resumen diferente del original.

No repudio Cuando el mensaje lleva nuestra firma, o está cifrado con nuestra clave privada, sólo podemos haberlo generado nosotros.

Ahora, según el nivel de seguridad que necesitemos, podemos utilizar:
La clave pública del receptor.

Nuestra clave privada.

Ambas.

Nótese que con este cifrado en dos partes, el secreto lo proporciona la clave del receptor (sólo él puede descifrarlo) y la autenticidad del mensaje la proporciona mi clave (sólo yo tengo mi clave privada). Las características más relevantes de este sistema son:

La parte pública de mi clave es conocida

por todo el mundo.

La parte privada de mi clave no es transmitida por ningún medio, siendo mucho más sencillo conservarla secreta.

El uso de la clave pública del receptor garantiza que sólo él podrá leerlo.

El uso de mi clave privada garantiza que sólo yo he podido generarlo (salvo robo, claro).

Para comunicarse con varias personas, sólo necesitamos una clave por cada una de ellas (la pública).

Como inconvenientes de este tipo de sistemas, podemos hablar de la lentitud (necesitan operaciones con números grandes, que son muy costosas), y la necesidad de autoridades de certificación, que acrediten cuál es la clave pública de una determinada persona o entidad.