Manual básico de criptografía I: conceptos

Manual básico de criptografía I: conceptos
Facebook Twitter Flipboard E-mail

El caso Megaupload y sus derivados ha puesto ligeramente en entredicho la fiabilidad y seguridad de la nube. Lo que parecía “la solución” para nuestros datos se ha revelado como lo que es: poner nuestros ficheros en manos de una empresa que puede desaparecer de la noche a la mañana y dejarnos con las manos vacías.

Y no solo eso, si no que, si los servidores desaparecen, ¿qué pasa con nuestros datos? En el ejemplo de Megaupload, el FBI tiene vía libre para fisgar en ficheros personales de todos los usuarios que los subieron.

Pero si, además, vemos la deriva que está tomando todo, es más necesario que nunca empezar a tomar medidas de seguridad para proteger nuestra privacidad y el secreto de nuestras comunicaciones. Una de ellas, quizá la más factible por el momento, es empezar a usar esquemas de cifrado sistemático en nuestras actividades en Internet.

Si, en teoría, el secreto de las comunicaciones es uno de los derechos fundamentales, pero al paso que vamos, es mejor que nos adelantemos a los acontecimientos y nos empecemos a buscar las castañas por nosotros mismos, por si acaso.

Para ello, tenemos herramientas muy buenas y fiables que podemos usar desde ya para proteger nuestras comunicaciones, así como nuestros ficheros almacenados en servidores ajenos, ya sea nuestro propio servidor de alojamiento, o en la nube.

Es personal. Es privado. Y no le importa a nadie más que a ti.

Así empezaba el manual de Pretty Good Privacy (PGP), el software de cifrado creado por Phil Zimmerman en los años 90 que se convirtió en poco tiempo en el estándar criptográfico a nivel de usuario, y en que se basó luego OpenPGP, el estandar criptográfico de Internet.

Actualmente, PGP forma parte de la división de cifrado de Symantec (los de los antivirus), y para usarlo hay que pagar unos 190 dólares por año. Por otro lado, el Proyecto GNU lleva años desarrollando su reemplazo libre, llamado Gnu Privacy Guard, o GPG.

A diferencia de PGP, éste funciona tanto en sistemas operativos Windows, Mac y cualquier derivado de Unix. De hecho, cualquier instalación de Ubuntu viene con GPG instalado por defecto.

Mediante Gnu Privacy Guard cualquier usuario puede empezar a cifrar ficheros individuales de datos, así como mensajes de correo electrónico y usarlo también en programas de mensajería instantánea basados en Jabber. Además, también se puede añadir una firma para demostrar la autenticidad de los mismos.

Para el tema de ficheros, nos basta con tener instalada la última versión de GPG, pero para añadir la protección a los correos electrónicos necesitaremos alguna de las extensiones disponibles para clientes de correo como pueden ser Enigmail para Thunderbird. Si usamos los clientes de correo Kmail o Evolution, ambos disponibles en GNU/Linux, el soporte ya está integrado.

El sistema OpenPGP se basa en un sistema de llaves pública y privada. La llave pública es la que usamos para que otros usuarios puedan mandarnos mensajes o ficheros cifrados, mientras que la privada es la que usaremos para descifrarlos. Una cosa a tener en cuenta: el propio software se encarga de separar ambas llaves.

Mientras que la llave pública es un pequeño fichero que incluye el número de identificación único de la llave, nuestra/s direccion/es de correo electrónico asociadas, un poco de información sobre nosotros (la que hayamos puesto previamente, luego veremos cómo), la huella digital de la llave (fingerprint) y las identidades de los que han firmado nuestra llave (adicionalmente, podemos añadir una foto nuestra).

La llave privada incluye la contraseña para descifrarlo todo. Obviamente, esa llave privada debe quedar siempre a buen recaudo, ya que si la perdemos o la sustraen, estamos vendidos.

¿Qué es esto de las llaves públicas y privadas y firmas?

Como decía, OpenPGP trabaja con un sistema de cifrado asimétrico, y para ello dispone de un par de llaves. Como vimos, la llave privada es la que nos permite tanto cifrar como descifrar, y debe quedar siempre en nuestro disco duro.

La llave pública, por el contrario, es la que usamos para darnos a conocer. Esa llave pública puede contener “firmas” de otros usuarios, que son algo parecido a “avales”. Por ejemplo, el usuario A y el usuario B tienen ambos su par de llaves. Como se conocen de hace años, ambos firman la llave del otro. Con este gesto, A está diciendo que la llave de B pertenece efectivamente a B, y B afirma que la llave de A pertenece efectivamente a A.

¿Por qué es importante? Porque el sistema OpenPGP se basa en la confianza que las llaves pertenecen a sus dueños. Cuantas más firmas “de peso” tengamos en nuestra llave pública, más confianza.

¿Por qué es importante firmar llaves públicas y cómo y cuando puede hacerse? GPG trabaja con anillos de confianza. Cuantos más usuarios nos firmen nuestra llave, más confianza en su autenticidad. Firmar una llave pública puede hacerse de varias formas. Una de ellas son las “keyparties”, en que un grupo de usuarios GPG/PGP se reúnen, intercambian sus llaves, comprueban y verifican los datos y finalmente, ya en casa, firman la llave de todos los asistentes.

Pero también puede hacerse de uno a uno. Digamos que un día intercambias tarjetas de visita con una persona, y ambos veis que en la tarjeta del otro se incluye el número de identificación de una llave GPG. Cada uno le muestra al otro un documento de identificación (DNI, pasaporte, etc…) para demostrar que es quien dice ser, le dicta la cuenta de correo asociada, y también le apunta todo el fingerprint.

Una vez en casa, podemos buscar la llave pública de nuestro nuevo conocido en un servidor de llaves, descargarla y comparar los datos de la misma con los que nos ha facilitado la persona. Si todos los datos son correctos, podremos firmar su llave, añadiendo una nota al respecto de los niveles de confianza que nos inspira: nula, poca, alguna, o que confiamos sin dudarlo. Ya firmada la llave pública, lo cortés es mandarla de vuelta para que nuestro nuevo conocido decida si subirla a un servidor o no.

¿Pero puedes firmar la llave de alguien sin conocerle? Si, y por eso antes comenté lo de las “firmas de peso”. Lo normal es que no se firme ninguna llave de nadie a quien no conozcamos previamente ya que, de entrada, nada nos garantiza que esa llave pertenezca realmente a esa persona.

El nivel de confianza que comentaba no tiene que ver con si creemos que es buena persona o no, se basa en la confianza que tenemos en que lleva el proceso de firma de forma estricta y segura: si comprueba todos los datos, nos pide un documento de identificación con foto, se apunta el fingerprint, etc, podemos asignar “confianza total”.

Estos niveles sirven para poder firmar luego “a ciegas”. A medida que vayamos ampliando nuestro círculo de usuarios afines, puede ser que ellos ya tengan su llave firmada por varias personas a las que nosotros les hayamos firmado la llave. Digamos que un día importamos la llave de una persona N, y vemos que está firmada por B, C, D y E.

Anteriormente, hicimos todas las comprobaciones y firmamos las llaves de B, C, D y E y les asignamos una confianza total. A N no le conocemos en persona, pero a B, C, D y E si, y como ellos cuatro han firmado la llave de N, confiamos en ellos y firmamos la llave de N sin necesidad de quedar en persona (aunque tampoco le otorgaremos confianza total, a menos que le conozcamos y sepamos fehacientemente que realiza todo el proceso). Y esto, a grosso modo, es el “anillo de confianza”.

En el próximo artículo veremos como empezar a usar GPG con un gestor gráfico en cualquier sistema operativo, para poder empezar a comunicarnos y almacenar nuestros ficheros y backups de forma segura.

Foto | Zimpenfish

Comentarios cerrados
Inicio