# rm-rf.es

Encriptación y desencriptación con GnuPG

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:

Documentación oficial GNnuPG
Guía GnuPG de tldp.org

Salir de la versión móvil