Gracias a la herramienta GnuPG la encriptación de datos y creación de firmas digitales se convierte en una tarea relativamente sencilla. Disponemos de una serie de utilidades para la creación, importación y exportación de keys y por supuesto para la encriptación/cifrado y desencriptación de ficheros.
Lo primero que debemos hacer es instalarla en el sistema, para ello simplemente haced uso de cualquier sistema de gestión de paquetes (yum, apt) e instalar GnuPG.
Una vez instalado, deberíamos comenzar con los siguientes pasos y tareas básicas:
Creación de un nuevo key-pair
Generaremos nuestra pareja de llaves (pública y privada), que posteriormente utilizaremos para la encriptación de ficheros, utilizaremos el siguiente comando:
# gpg --gen-key
Hemos de responder a las distintas preguntas del asistente que aparece, podemos establecer de momento por defecto el tipo de llave, su tamaño y expiración, hemos de rellenar posteriormente nuestro nombre real, comentario con el que identificaremos la llave y nuestro email. La salida podría ser similar a lo siguiente:
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Por favor seleccione tipo de clave deseado: (1) RSA y RSA (predeterminado) (2) DSA y Elgamal (3) DSA (sólo firmar) (4) RSA (sólo firmar) ¿Su selección?: 1 las claves RSA pueden tener entre 1024 y 4096 bits de longitud. ¿De qué tamaño quiere la clave? (2048) El tamaño requerido es de 2048 bits Por favor, especifique el período de validez de la clave. 0 = la clave nunca caduca = la clave caduca en n días w = la clave caduca en n semanas m = la clave caduca en n meses y = la clave caduca en n años ¿Validez de la clave (0)? La clave nunca caduca ¿Es correcto? (s/n) s 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: Heinrich Heine Dirección de correo electrónico: heinrichh@duesseldorf.de Comentario: Der Dichter Ha seleccionado este ID de usuario: «Heinrich Heine (Der Dichter) » ¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V Necesita una frase contraseña para proteger su clave secreta. gpg: el agente gpg no esta disponible en esta sesión No ha especificado contraseña. Esto es probablemente una *mala* idea. Si más tarde quiere añadir una, puede hacerlo usando este programa con la opción "--edit-key". 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 CD0E7A06 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: 5 firmada: 0 confianza: 0-, 0q, 0n, 0m, 0f, 5u pub 2048R/CD0E7A06 2010-11-19 Huella de clave = C079 7D5D AD34 A0CA E9B6 B895 29B5 36CC CD0E 7A06 uid Heinrich Heine (Der Dichter) sub 2048R/FD47C2FB 2010-11-19
Importar y exportar keys
Tras crear nuestra llave, podemos importarla o exportarla en distintos equipos, desde los que tenemos intención de compartir ficheros encriptados, para importar una llave ejecutamos:
# gpg --import Public-key.asc
Podemos exportar nuestra key del siguiente modo (ascii), luego podríamos utilizar el comando anterior para importarla en otro equipo. –ascii crea una salida ascii con armadura.
gpg --export --armor > Public-key.asc
Una vez importada la key en nuestro sistema, conviene firmarla para verificar la veracidad de la llave, utilizaremos el siguiente comando, donde UID es el ID/nombre de la llave.
gpg --sign-key 'UID'
Encriptar y desencriptar
Una vez que tenemos la llave creada, instalada y firmada en el sistema, ya podemos empezar a encriptar y desencriptar ficheros. En el siguiente ejemplo vamos a encriptar un fichero de texto, los parámetros indican que se firma y cifra (-ser) para el usuario con su determinado UID/nombre creando una salida ascii con armadura (-a). tendremos que escirbir la frase contraseña de la llave para hacer efectivo el cifrado:
# gpg -sear 'UID' test2.txt Necesita una frase contraseña para desbloquear la clave secreta del usuario: "xxxx xxxx (xxx xxx) " clave DSA de 2048 bits, ID 7EEECF36, creada el 2010-11-08 gpg: el agente gpg no esta disponible en esta sesión Introduzca frase contraseña:
Para hacer el proceso inverso de descifrado, utilizaríamos el siguiente comando, donde -d indica desencriptar y mensaje-cifrado.asc es el fichero generado en el anterior comando, que guardaremos en salida.txt:
# gpg --output salida.txt -d mensaje-cifrado.asc
El proceso de desencriptar ficheros de equipos remotos es el mismo siempre que haya sido encriptado utilizando tu misma llave pública.
La gestión básica de llaves resumiría los siguientes comandos:
Listar las llaves instaladas en el sistema:
# gpg --list-keys
Borrar llave «test@test.com» instalada en nuestro sistema:
gpg --delete-key 'test@test.com'
Esto es simplemente un acercamiento al uso básico de gnuPG. Para profundizar más en este tema, os recomiendo revisar las siguientes referencias: