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

7 comentarios en “Encriptación y desencriptación con GnuPG

  1. Lo que ha explicado está muy bien, pero le rogaría explicase también cómo desencriptar un mensaje de una página web.
    Por ejemplo, la página http://bitcoin-otc.com/otps/94EB26F683593169 devuelve:
    —–BEGIN PGP MESSAGE—–

    hQEMA5TrJvaDWTFpAQf/YfVHYxjfdTFaB2812+wPgeARaP61ODf5d9wRH6mNqncE
    Zwefe9w2G226QmjwcAYsXI8QGgYI4a7E72lfhst+Ngh9A2WiLZM+lCfMcVKISdSC
    hn9z16NMyW9mWprBa4SU0+2ogYUg9EM2hfDklI3V60Ua67Koo1fF+9HMG/Z3n/ye
    0vpn3qEAg/TO8M6puweO2usLa4nn+OE7gMkv4NM99txlu+40Hd2NqaPEh9xSsLCj
    IJN5cy//oY1hKOq61WeFmEVtumFOPhVt/DtieqomZQJViL4mCGhhbsqnxvaheQ2h
    HAfnUg+97g0BXPv5PTRv/c4YJ2rJ/xDf4AVLFp6WYtKGAVVw2Sz5MAYqPfoliC9W
    uWxZ371mKg8nZxysXd62D4TfmpUjybnbdt1xmv7H6al5aQk394c3kvLIDfn8yrDm
    BehQO4BMacI/1U59vGqS9MrSwwpvv6+WrXHYkp6yPliPg+3ioN1hAzlB+Yi5NPRm
    T0lNi+Khb35Pmn9oglBViBJRVNSlV/A=
    =1ET4
    —–END PGP MESSAGE—–
    Pues bien, la pregunta es cómo desencriptar ese mensaje y con qué programa.
    Un saludo.

  2. Hola creo que quiere saber si los archivos infectados por Cryptowall 3.0 (Virus) se pueden desencrytar.

    La forma de encryptacion que utiliza es RSA-2048.

  3. Hola,me an encriptado archivos de fotos con el virus rsa 4096,hay alguna forma de desencriptar mis fotos,gracias y un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *