GPG es una herramienta liberada bajo licencia GPL que sirve para cifrado y firmas digitales. Su uso mas comun es como firma digital, asi le garantizamos al destinatario que fuimos nosotros quienes enviamos el documento, al tener nuestra firma. Tambien es usado para cifrar documentos, asi el documento que enviemos sera abierto solo con la llave que posee el destinatario.

Y que necesitamos para esto? pues en linux podemos hacer uso de un programita en modo consola llamado GnuPG y en modo grafico tenemos Seahorse y Kgpg. En windows pueden usar Gpg4win. Aqui me tocara explicar de manera breve como se hace en una terminal gnu/linux.

Para generar la clave GPG solo tenemos que usar el comando n0rm@pcn0rm:~$ gpg –gen-key lo cual nos dara el siguiente resultado

Por favor seleccione tipo de clave deseado:
(1) DSA y ElGamal (por defecto)
(2) DSA (sólo firmar)
(5) RSA (sólo firmar)
¿Su elección?:

Aqui elegimos la opcion por defecto, la numero uno y luego nos hace otra pregunta

El par de claves DSA tendrá 1024 bits.
las claves ELG-E pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (2048)

Aqui nos pregunta el tamaño, podemos escojer el que querramos, con algunos 1024 esta bueno, pero el que se sugiere poner es 2048, escribimos y ahora vemos que nos dice

Por favor, especifique el período de validez de la clave.
0 = la clave nunca caduca
(n) = la clave caduca en n días
(n)w = la clave caduca en n semanas
(n)m = la clave caduca en n meses
(n)y = la clave caduca en n años
¿Validez de la clave (0)?

Ahora nos tocara elegir el tiempo de validez de nuestra llave gpg, aqui igual podemos elegir el tiempo que querramos, es recomendable darle un tiempo de validez para poder cambiarla en un tiempo deseado o la dejamos indefinida si no queremos renovarla, luego de esto ya nos empieza a pedir nuestros datos como nombre, email y un comentario.

Necesita un identificador de usuario para identificar su clave. El programa construye el identificador a partir del Nombre Real, Comentario y Dirección de Correo Electrónico de esta forma:
“Heinrich Heine (Der Dichter) ”

Nombre y apellidos: user
Dirección de correo electrónico: user@gmail.com
Comentario:
Ha seleccionado este ID de usuario:
“user”

Luego de esto nos pide una contraseña que es la que estaremos utilizando para manipular nuestra gpg

Necesita una frase contraseña para proteger su clave secreta.

Introduzca frase contraseña

Luego empezara a crear nuestra clave

Es necesario generar muchos bytes aleatorios. Es una buena idea realizar alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar la red y los discos) durante la generación de números primos. Esto da al generador de números aleatorios mayor oportunidad de recoger suficiente entropía.
+++++++++++++++.+++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++…..+++++.+++++.++++++++++++++
+.+++++…+++++++++++++++++++++++++>+++++…..>+++++…………..
……….+++++^^^
gpg: clave AACEEBD4 marcada como de confianza absoluta
claves pública y secreta creadas y firmadas.

gpg: comprobando base de datos de confianza
gpg: 3 dudosa(s) necesarias, 1 completa(s) necesarias,
modelo de confianza PGP
gpg: nivel: 0 validez: 2 firmada: 0 confianza: 0-, 0q, 0n, 0m, 0f, 2u
gpg: siguiente comprobación de base de datos de confianza el: 2009-06-23
pub 1024D/AACEEBD4 2007-06-25
Huella de clave = 731A 4A29 0511 6F7F 5BFC B268 86ED F5B5 AACE EBD4
uid user
sub 1024g/7E41FC7C 2007-06-25

Hasta aquí vamos bien, ya creamos nuestra GPG pero aun nos falta algo, subirla a un keyserver ya que la usaremos para comunicarnos con el exterior y necesitamos compartirla. Para esto usamos el comando n0rm@pcn0rm:~$ gpg –send-keys AACEEBD4 (este numero es el id de nuestra llave publica), con este comando enviamos la llave al servidor que esta declarado en el archivo $HOME/.gnupg/gpg.conf, en mi caso el keyserver que tengo asignado se lee en la linea keyserver hkp://subkeys.pgp.net del archivo de configuración.

Se nos puede presentar el problema que no podamos enviar nuestra llave al server, entonces para no “quebrarnos” la cabeza, lo que podemos hacer es copiarla al server, y como hacemos esto? pues primero tendriamos que exportar la llave a un archivo, tecleando el comando

gpg -a –export -o archivo.asc key_id

Donde archivo.asc sera el nombre que le vamos a dar al archivo y key_id sera el identificador de la llave gpg que deseamos exportar. Luego de esto, abrimos el archivo con un editor de texto, copiamos todo el contenido del documento y nos vamos a la pagina del keyserverubuntu, en la seccion submit a key nos encontramos con un recuadro donde vamos a pegar lo que anteriormente habiamos copiado, pulsamos el boton “submit this key to the keyserver” y listo, ya logramos subir nuestra llave.

Ahora, como confirmamos que nuestra llave esta en el servidor? sencillo, entramos a http://keyserver.ubuntu.com:11371/ y escribimos 0x$GPGKEY donde $GPGKEY es la llave que andamos buscando.

Ya estamos listo para usar nuestra gpg en nuestros correos electrónicos. Y ahora nos preguntamos, como la usamos en nuestros correos? :P podemos bajar una extensión llamada enigmail para la suite mozilla y seamonkey y el uso en estas aplicaciones pues es muy fácil solo hay que seguir las indicaciones que nos sale cuando estamos escribiendo o leyendo algun correo electronico que contenga llave GPG, darles algunos datos y listo.