viernes, 3 de abril de 2009

LA CRIPTOGRAFIA ASIMETRICA: Dos claves mejor que una

El sistema criptográfico debe garantizar ciertas cualidades de la información de una manera sencilla. Hasta ahora, la criptografía compuesta por una clave para cifrar y descifrar datos no satisface este ideal. Esto implicaría que cada persona debe compartir una clave con todas las otras con las que quiera enviar mensajes, para cifrar su canal de comunicación y que nadie excepto ellos dos puedan descifrar su contenido.

Sería bastante complicado mantener una clave distinta por cada persona con la que uno se quiera comunicar, y prácticamente imposible establecer comunicación con personas a las que no se conoce. La criptografía asimétrica resuelve uno de los grandes problemas del cifrado en general con la introducción de los conceptos de clave pública y clave privada.

Como señala Simon Singh en su libro "The Code Book", "a medida que la información se convierte en uno de los bienes más valiosos, el destino político, económico y militar de las naciones dependerá de la seguridad de los criptosistemas". Así, en 1976, Diffie y Hellman idearon la criptografía asimétrica. Se basa en la posesión de dos llaves o claves por persona. Una a disposición de todo el mundo, y otra privada. Las dos son complementarias y lo que una cifre, sólo podrá ser descifrado por la otra. Si se desea cifrar un mensaje para que sólo Ana pueda leerlo, todo el mundo puede tomar su clave pública y aplicarla al mensaje, seguro de que sólo Ana con su clave privada podrá descifrarlo. Si PUA es la clave pública de Ana, PRA es la clave privada de Ana, y M es el mensaje, PUA (M) sería equivalente a cifrar el mensaje M. Ana tendría que hacer PRA (PUA (M))= M para poder leerlo.

Ana usará su clave privada para firmar sus documentos. Cuando se pase por un algoritmo esa clave y su mensaje, quedará codificado de manera que todo el mundo que desee, podrá aplicar la clave pública de Ana, decodificarlo, y así sabrá que ha sido escrito indudablemente por Ana, pues su clave pública ha sido la única capaz de interactuar con su privada. Gráficamente PUA (PRA (M))= M.

Si se combinan estas dos técnicas, un mensaje puede quedar firmado y cifrado a la vez para que lo reciba por ejemplo, Berta. Ana tendría que aplicar su clave privada en el mensaje, lo que equivaldría a firmarlo. Luego podría tomar la clave pública de Berta, disponible para todos, y aplicarla al mensaje. Tendríamos PUB (PRA (M)). Ahora, sólo Berta es capaz, con su clave privada, de descifrar el mensaje, que aparecerá firmado. Tendríamos PRB (PUB (PRA (M))= (PRA (M)). Si le aplica la clave pública de Ana, comprobará que efectivamente es un mensaje de Ana y lo obtendrá en texto plano. PUA (PRA (M))=M.

Cualquiera con la clave pública puede cifrar un mensaje, pero no descifrarlo. Sólo la persona con la clave privada puede descifrar el mensaje. Cifrar el mensaje con la clave pública es como poner el correo en un buzón (todo el mundo puede hacerlo.) Descifrar el mensaje con la clave privada es como coger el correo del buzón (sólo el que tiene la llave del buzón puede hacerlo).

Esta técnica, aunque resulta complicada en un principio, se automatiza fácilmente con software específico, y es muy usada en el mundo de la seguridad. Por ejemplo, existen programas que se integran completamente en los clientes de correo y permiten cifrar y firmar mensajes con claves públicas y privadas. Para obtener un par de estas llaves, es necesario, por ejemplo, usar un programa basado en este tipo de criptografía llamado PGP (Pretty Good Privacy) disponible para todas las plataformas y que integra en una sola aplicación, todas las utilidades necesarias para manejar claves y cifrar información.

Las claves no son más que números desorbitantemente altos con ciertas propiedades y relaciones entre ellos, normalmente primos. Matemáticamente, estos algoritmos se basan en la facilidad de realizar operaciones complementarias en un sentido y en la dificultad de realizarlas en sentido contrario. Por ejemplo, se juega con la facilidad de elevar un número a otro (esto se subdivide en rápidas sumas), y la dificultad para calcular raíces de números extremadamente altos (que necesita de muchas más operaciones complejas para ser calculada).

Y muchos pensarán que esto no es necesario, que es demasiado problemático si lo único que queremos es consultar nuestro saldo en Internet o escribir correos a los amigos. Este pensamiento empobrece el sistema de la privacidad en general, porque su verdadera potencia está en la popularidad. Cuántas más personas lo usen, más útil será. Pocos saben que el artículo 18 de la Constitución reza así: "[...] Se garantiza el secreto de las comunicaciones y, en especial, de las postales, telegráficas y telefónicas, salvo resolución judicial. La ley limitará el uso de la informática para garantizar el honor y la intimidad personal y familiar de los ciudadanos y el pleno ejercicio de sus derechos."

Tenemos derecho a las comunicaciones cifradas, y debemos ejercerlo como nos venga en gana, utilizando sistemas seguros que garanticen que nosotros y sólo nosotros podemos decidir quién consulta nuestros mensajes enviados. La firma digital, que se consigue de forma sencilla usando el programa PGP, tiene una utilidad incluso mayor. Hoy en día la suplantación de identidad supone uno de los mayores problemas de seguridad para todos los internautas, que responden confiados a correos que dicen ser quienes representan, pero no lo confirman de ninguna manera. El uso popular del cifrado para firmar documentos acabaría con este tipo de problemas.

Quizás es que no sabemos apreciar los derechos que nos amparan. Todavía tenemos la suerte de no llegar a los extremos de Estados Unidos, donde las comunicaciones cifradas están permitidas, pero no las más seguras, digamos que sólo son legales las de "gama baja". No puedes cifrar tus documentos de manera que queden completamente blindados, sino que debes usar una clave de menor longitud "por si acaso" el Gobierno Norteamericano necesita espiar esa comunicación. ¿Qué garantía es esta?

No hay comentarios:

Publicar un comentario