Menu
GPG / PGP: envía tus correos cifrados de forma segura y fácil

GPG / PGP: envía tus correos cifrados de forma segura y fácil

GPG / PGP

Situación

Continuamente usamos aplicaciones y servicios que nos permiten comunicarnos con otras personas. El correo electrónico y aplicaciones de mensajería instantánea, entre otras, son las que más usamos. En ocasiones enviamos información sensible por estos medios (contraseñas, informes del trabajo, credenciales, información de carácter personal, etc...).Pero toda esta información la enviamos en "texto plano". Es decir, la enviamos de forma clara, lo que permite que la lea no solo el destinatario si no también todos los intermediarios (ISP y proveedor de correo, entre otros).

Solución

La solución a este problema es usar una técnica se cifrado E2E, que cifre la información en el emisor y la descifre en el destinatario, y que todos los intermediarios solo puedan ver información cifrada, pero no su contenido.

GPG es una tecnología que implementa está solución.Cada usuario puede crearse una clave GPG que puede compartir con todo el mundo, que permite al resto enviarle mensajes que solo esta persona podrá descifrar.

 

Tabla de contenidos

 

Instalación en GNU/Linux

Debian, Ubuntu:

apt install gnupg

Arch:

pacman -S gnupg

Fedora:

dnf install gnupg

CentOS:

dnf install gnupg

Uso: crear claves

El primer paso es generar una clave GPG para nuestra dirección de correo electrónico. Esto se hace con el comando:

gpg --full-gen-key

Nos pedirá una serie de datos sobre la clave y sobre la persona que la crea:

  • Tipo de clave: lo normal es elegir la opción por defecto (actualmente: RSA and RSA)
  • Longitud de la clave: a mayor longitud, mayor seguridad. El valor 2048 es aceptable, pero yo prefiero usar claves de 4096 bits de longitud.
  • Tiempo de validez: tiempo hasta que la clave expire. Por defecto este valor es "0", es decir, la clave nunca caduca. Esto no es recomendable, ya que es posible que perdamos la clave o que por cualquier motivo otras personas nos la roben. Lo normal suele ser elegir una validez de 1 año, aunque también es común 6 meses o 2 años. Las claves se pueden renovar, es ecir, se puede extender su valiez en un futuro cuando nos estemos aproximando a la fecha de expiración. Para mi clave elegiré un periodo de validex de 1 año: 1y
  • Nombre: el nombre personal de la identidad
  • Email: la dirección de correo electrónico de la identidad
  • Comentario: el comentario de la identidad
  • Contraseña de la clave privada

La identidad está formada por nombre, correo y comentario., con el siguiente formato: 

Nombre y Apellidos (Comentario) <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>

El comentario es opcional. Comúnmente se usa para indicar si esa dirección de correo es "Personal", "De trabajo", ...

Por ejemplo aquí podéis ver el correo de Richard Stallman, y una larga lista de personas que han firmado su clave (más abajo veremos qué significa firmar una clave y cómo se hace).

En esta lista veréis las identidades de cada persona, con el formato propio de una identidad, y en algunos casos veréis identidades con comentarios.

La contraseña de la clave privada que pide en el último paso es muy importante no perderla nunca. Nos pedirá esa contraseña siempre que queramos usar nuestra clave privada, cuando queramos descifrar o firmar mensajes, cuando queramos ampliar el periodo de valiez de la clave, o realizar otas modificaciones.

La clave se añadirá automáticamente te al "keyring", una cartera de claves en el ordenador que contiene todas las claves que tú ordenador conoce.

Se puede listar las claves de las que se dispone (propias y de contactos) con

gpg --list-keys

Si se desea ver solo las claves propias, es decir, solo las claves de las que se dispone clave privada, entonces usar: 

gpg --list-secret-keys

En ambos casos deberíamos ver la clave que acabamos de crear.

Uso: compartir clave pública

Para que alguien nos pueda mandar un correo necesitan nuestra clave pública. Hay 2 formas principales de distribuirla:

Compartir el archivo

Exportamos la clave pública a un archivo:

gpg --output clavepublica.key --armor --export IDENTIFICADOR

Cambiando IDENTIFICADOR  por el id de la clave (que se puede obtener en "gpg --list-keys") o el correo electrónico asociado a esa clave.

Eso creará un archivo "clavepublica.key" que podremos compartir, publicar en nuestra web, enviar por correo, etc...

Si un contacto te envía su archivo de clave pública, puedes importarla a tu cartera de claves (keyring) con:

gpg --import clavedecontacto.key

Usar un servidor de claves GPG (keyserver)

Usando keyserver podemos subir nuestra clave pública (para que esté disponible a todo el que nos quiera enviar correos cifrados) y podemos descargar las claves públicas de aquellas personas a las que queramos enviar correos cifrados (si subieron una clave).

Para subir nuestra clave pública a un servidor de claves usaremos:

gpg --send-keys IDENTIFICADOR

Se puede especificar el servidor de claves al que subir la clave:

gpg --keyserver pgp.rediris.es --send-keys IDENTIFICADOR

Los servidores de claves se sincronizan entre sí, por lo que tras subir una clave a uno, esa clave estará disponible en el resto.

Si queremos buscar si un contacto tiene claves en algún servidor (y, si tiene, listarlas):

gpg --search-keys Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Para importar la clave pública del servidor de claves al keyring local:

gpg --recv-keys IDENTIFICADOR

donde IDENTIFICADOR puede ser el correo, o el id de la clave pública (que se puede obtener de la búsqueda con el comando anterior "gpg --search-keys Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.").

Uso: Cifrado de texto para un contacto

Suponiendo que disponemos de un texto que queremos cifrar en el archivo "correo.txt", para cifrarlo usaríamos:

gpg --recipient IDENTIFICADOR --armor --encrypt correo.txt

Usando el identificador del contacto al que vamos a enviar el mensaje.

Antes de ejecutar este comando tenemos que haber importado la clave pública de este contacto.

El resultado tendrá la forma:


-----BEGIN PGP MESSAGE-----
Version: [...]
[..........]
[..........]
-----END PGP MESSAGE-----


Todo este texto es el que tenemos que enviar a nuestro contacto.

La persona que reciba el mensaje, para descifrarlo, suponiendo que el mensaje cifrado está guardado en "texto_cifrado.gpg" tendrá que usar el siguiente comando:

cat texto_cifrado.gpg | gpg

GPG detectará automáticamente cual de las claves privadas de las que disponemos es la necesaria para descifrar el mensaje.

Nos pedirá la contraseña con la que ciframos nuestra clave privada, y descifrará el mensaje.

También podemos enviar archivos binarios cifrados con GPG, no solo texto plano.

Para cifrar, por ejemplo, la imagen "screenshot.jpg" usaremos el mismo comando qie para cifrar texto, pero sin el argumento "--armor"

gpg --recipient IDENTIFICADOR --encrypt screenshot.jpg


Clientes con GPG incorporado

Las aplicaciones que hacen uso de GPG facilitan gran parte del trabajo.

En ocasiones no es necesario ni abrir la terminal.

Un ejemplo común son las aplicaciones de correo: marcando una casilla, se cifra el correo para el destinatario adecuado con su clave GPG pública, y eso es todo lo que hay que hacer: marcar una casilla.

Keyserver de LibreLabUCM

 

En LibreLabUCM hemos querido poner nuestro granito de arena para contribuir en la comunidad del software libre y de la privacidad en internet.

Para ello estamos hosteando un servidor de claves GPG en la siguiente dirección:

https://pgp.librelabucm.org/

Este servidor usa el software "SKS Keyserver", un proyecto de software libre en el que los distintos keyservers se sincronizan entre sí para que todos tengan todas las claves.

Puedes usar nuestro servidor de claves desde la web o con el comando gpg:

gpg --keyserver pgp.librelabucm.org --search-keys LibreLabUCM
gpg --keyserver pgp.librelabucm.org --recv-keys 0x3607372187ba32bc
gpg --keyserver pgp.librelabucm.org --send-keys IDENTIFICADOR

Además, podrás usar pgp.librelablmozifzc.onion en lugar de pgp.librelabucm.org para usar nuestro servicio oculto y que el tráfico se cifre y pase por la red TOR. Para ello hace falta tener el proxy de TOR instalado.

 

 

 

Facebook Twitter Google+ Pinterest
Modificado por última vez enMartes, 16 Octubre 2018 21:16
(0 votos)
email: librelab@ucm.es
Facultad de Informática de la UCM
Calle del Profesor José García Santesmases 9, Despacho 120
28040, Madrid
×
Probando acceso a TOR... Web disponible en TOR! ;) La web está disponible en TOR, pero el navegador no tiene acceso a TOR