GPG: el cifrado robusto y las firmas digitales nunca han sido tan fáciles

29 Oct 2013

Las últimas noticias sobre la vigilancia que ejercía el gobierno de EE.UU. a países y ciudadanos de todo el mundo han vuelto a sacar a la luz el software PGP, un mecanismo robusto y seguro para nuestras comunicaciones online. Sin embargo, los avances en la industria de la informática requieren el uso de contraseñas cada vez más largas para paralizar los posibles ataques. En este caso, el objetivo de este post es proporcionaros la información necesaria para crear una pareja de claves RSA nueva con una longitud superior a 4096 bits. Cuanto mayor sea el tiempo de vida de nuestra información, más extensa será la contraseña. Sin embargo, nada es gratuito y cada vez que doblamos la longitud de la clave, el proceso de descifrado se ralentiza 6 ó 7 veces. Por este motivo, hemos escogido una clave de 8192 bits para el artículo.

PGPTodavía no existen suficientes herramientas que soporten ese tamaño de contraseña por defecto, así que para crear una nueva clave nos descargaremos y modificaremos la última versión de GnuPg (1.4.15). Utilizaremos Ubuntu de Linux para este ejemplo ya que este sistema operativo es bastante popular hoy en día y nos permite seguir los pasos de una forma simple y directa. Como alternativa, podríamos utilizar  Cygwin, una buena forma de tener un entorno básico parecido a Linux en nuestro sistema operativo Windows.

Primera Imagen

Una vez hayamos creado la clave tras seguir los próximos pasos, podremos usar las diferentes herramientas disponibles para cada sistema operativo para gestionar dicha clave. Por ejemplo, para los usuarios de Mac OSX, está disponible GPG Suite y para Windows GP4Win, ambos SO permiten generar y gestionar claves además del resto de operaciones que se realizan diariamente con PGP.

Por un lado, tenemos Gpg4win (GNU Privacy Guard for Windows) que proporciona un software de encriptación y firmas digitales para archivos y emails; el cual protege la información de valor y las comunicaciones online. Es gratuito y está especialmente recomendado para los usuarios de Windows.

Por el contrario, tenemos GPG Suite para Mac OSX que se integra perfectamente con el sistema operativo y ofrece un plugin de código abierto para Apple Mail, el cual permite cifrar y firmar los mensajes fácilmente. Además, está disponible una aplicación para gestionar nuestras claves y una versión de comando de GPG para explorar las alternativas que ofrece esta herramienta.

Segunda imagen

Empecemos, en primer lugar, consiguiendo las fuentes GnuPG y descomprimiéndolas en una carpeta de nuestro disco duro. Se recomienda verificar la firma SHA1 de este archivo para comprobar que todo está en orden y que hemos descargado la versión correcta del software. Para esto, podemos usar la función instalada “sha1sum” y si el hash calculado concuerda con el de la página de GnuPG, entonces tenemos vía libre para continuar.

Tercera imagen

Para esta guía, tendremos que modificar un par de archivos de código pero os prometo que no es una tarea complicada y que el esfuerzo obtendrá su recompensa.

Nos descargamos el gzip comprimido GnuPG 1.4.15 y con la ayuda del comando “tar xvzf [filename]”, obtenemos una carpeta descomprimida con el contenido original del archivo. Reemplazamos parte (nombre del archivo) del comando con el nombre real del archivo descargado. No se necesitan corchetes en el comando.

Cuarta imagen

Posteriormente, buscaremos el directorio extraído recientemente haciendo “cd [gnupg-folder]” y encontraremos el contenido necesario para crear nuestro binario GnuPG. Este primer paso incluye modificar el archivo “keygen.c” localizado en el “directorio g10”.

Quinta imagen

Podemos editar el archivo “keygen.c” usando, por ejemplo, “gedit” y una vez se muestre el contenido, buscamos “4096” que es el tamaño máximo que tiene establecido por defecto GnuPG. Cambiamos el valor a “8192” en la línea 1572. No olvidéis guardar los cambios y asegurarnos de que no habéis modificado algo más.

Sexta imagen

Después de este cambio tan simple, ya estamos listos para compilar la nueva versión de GnuPG. Para esto serán suficientes los comandos “./configure” y “make”. Además, si queremos reemplazar la versión de GPG que nos ofrece Ubuntu por defecto, ejecutaremos “sudo make install”. Por el momento, usaremos el binario creado localmente para establecer la pareja de claves RSA 8192.

Séptima imagen

Antes de ejecutar “gpg”, modificaremos el archivo gpg.conf localizado en el directorio de Inicio, en este caso “/home/Giuliani/.gnupg/gpg.conf”. Aunque no tenga contenido por defecto, añadiremos nuestra preferencia para los algoritmos de compresión y cifrado y los mecanismos de hashing.

Para esto, añadimos al final del archivo el siguiente contenido (podéis, por supuesto, cambiarlo según vuestras preferencias o necesidades).

personal-cipher-preferences AES256 TWOFISH AES192 AES

personal-digest-preferences SHA512 SHA384 SHA256

personal-compress-preferences ZLIB ZIP

Octava imagen

Después de este trabajo tan duro, estamos preparados para crear nuestra clave; ejecutaremos el comando “./gpg –gen-key” del directorio “g10”  (donde, previamente, hemos modificado el archivo “keygen.c”) y seguiremos las instrucciones de la pantalla. El proceso es bastante sencillo, elegimos la primera opción para crear una pareja de claves que usaremos para firmar y cifrar; seleccionando como longitud de la clave 8192 bits.

pgp-screenshot-09

Para añadir mayor realismo al ejemplo, estableceremos también la fecha de caducidad de la clave. Usaremos “5y” para decir a “gpg” que la contraseña caducará en 5 años.

pgp-screenshot-10

Después, añadimos el nombre, la dirección de email y el comentario (opcional) para esta identidad. Además, podemos añadir más identidades posteriormente así que no tenemos que preocuparnos si queremos incluir diferentes correos electrónicos a esta pareja de claves.

pgp-screenshot-11

Se nos pedirá introducir la clave o frase de contraseña (según nuestras preferencias personales). Os dejo una página donde encontraréis algunos consejos para crear y recordar frases de contraseñas robustas.

Recordad que si queremos cambiar la contraseña más tarde, lo podemos hacer sin la necesidad de volver a crear la clave o enviar, de nuevo, el código público a nuestros contactos.

Después de introducir toda la información, comenzará el proceso de creación de la pareja de claves. GPG empezará a recopilar bytes aleatorios para generar la mejor combinación numérica posible. Podemos seguir utilizando nuestro ordenador hasta que finalice la operación (puede llevar, dependiendo del equipo, sobre un cuarto de hora).

pgp-screenshot-12

Y, por fin, el proceso ha llegado a su fin. GPG nos mostrará la huella para la clave, la fecha de expiración y toda la información que hemos introducido anteriormente. Nos aseguraremos de que todo está correcto antes de enviar la clave pública a nuestros contactos.

pgp-screenshot-13

También podemos utilizar el comando “list” para verificar todas las claves disponibles en el sistema y exportar aquéllas que necesitamos. Si, por ejemplo, exportamos la clave pública para la identidad que hemos creado “Joe Doe”, el resultado será un archivo que podremos subir, manualmente, a un servidor de claves PGP o podremos enviar a nuestros contactos. La forma más sencilla de hacerlo será teclear “gpg –export –a [nombreusuario] > [nombre-clave-pública]”.

pgp-screenshot-14

Si queremos subir la clave pública desde la línea de comandos, entonces usaremos el comando “gpg –keyserver [serverurl] –send-keys [keyID]”.

pgp-screenshot-15

Además, también es posible importar las claves públicas utilizando “—recv-keys”. Todo esto dentro de la comodidad de la interfaz de la línea de comandos.

Por último, crearemos un backup de la clave privada. Debemos tener cuidado con este proceso y nunca compartir la contraseña con alguien. La operación es bastante parecida a lo que hemos visto anteriormente, podemos hacer una copia de seguridad utilizando “gpg export-secret-key –a [nombreusuario] > [nombre-archivo-clave-privada]”.

pgp-screenshot-16

Ahora ya disponéis de vuestra pareja de claves PGP y disfrutar de una  comunicación online segura y privada. ¡Bienvenidos!

“Un viaje de mil millas comienza con el primer paso” Lao-Tsé

Después de habernos adentrado en el mundo de PGP, espero que os haya entrado el gusanillo para seguir ahondando en este tema. Mientras tanto, podéis seguir informándoos al respecto en las múltiples chuletas de GPG disponibles; donde descubriréis las funcionalidades de cifrado y descifrado, firmas digitales y mucho más.