Encriptar archivos con GnuPG

GnuPG es un sistema de encriptamiento de código abierto, el cual tiene la capacidad de:

  • Crear llaves públicas y privadas
  • Administrar las llaves públicas
  • Codificar datos usando las llaves públicas
  • Decodificar datos usando las llaves privadas

El GnuPG es muy potente, hasta el punto que es prohibido su uso en algunos lugares del mundo debido a la dificultad que representa romperle la seguridad.  Fue creado como un reemplazo completo del PGP (propietario), sin usar algoritmos de encriptamiento propietarios.

Se puede usar los algoritmos de encriptamiento:

  • ElGamal
  • DSA
  • RSA
  • AES
  • 3DES
  • Blowfish
  • Twofish
  • CAST5
  • MD5
  • SHA-1
  • RIPE-MD-160
  • TIGER

Es calificado como un software para el uso en producción y es comúnmente incluido en los sistemas operativos como FreeBSD, OpenBSD, NetBSD y últimamente con todas las distribuciones GNU/Linux. Aunque básicamente el programa tiene una interfaz textual actualmente hay varias aplicaciones gráficas que utilizan recursos de GPG, por ejemplo ha sido integrado dentro del Kmail y Evolution, también hay un plugin llamado Enigmail que se integra con Mozilla y Thunderbird.

Para demostrar un poco, pensemos en esto:  Un archivo con un número de cuenta (ficticio por ahora, por supuesto), el usuario y la contraseña para entrar al sistema en línea:

951-159753852-11
Usuario: Juan Perez
Contraseña: MiSuperP4ssword

Al viajar esto en texto plano, es posible ver los datos tanto en tránsito como en el servidor de correos.  Piensen que un hacker logró entrar al servidor de correos y tiene acceso a todos los casilleros.

Ahora, si yo codifico este mismo texto usando GnuPG, obtengo:

—–BEGIN PGP MESSAGE—–
Version: GnuPG v1.4.7 (MingW32)

hQIOA47ca7Y9fNCaEAf/XPeug0IY9cLLM/Zs0qXtncgJ6j2CLKSzFZn5dL32IVJY
EvdVYU+go8fjnV26Tn8Qc70V+8ObO3xf2+UBMDrPcn/Xmxj1n3q4K54Xce/OsZxL
FeCfv7mwV4yEhhHQPVtTIamXccphBT9yImlS1iW8e7w4N3rJ87y6sdSZ2J7zT4wl
Hs4wX1b760Sh5C0NKAno2qnvtkJEbsjgljog3LxlK7sf9vHbMu2F9XcpetIolHvt
MAr8m/mQlxUBqIsRz5qcA0GrmHUrK0pJXTomDbSPgVxZa4frb0KH2gbxJnP9mvV4
sOasljNZhzsx6DRbPEaACOunyOlVblJiWPo+ljwAZgf6Ase86SOkRWhvasOXGiFD
qHDKdeF0n0cSzBWk/qUsiChNN8cyagVEq+zmHhessrD1gfiLssTXn3YNraipzBUC
HDUTDZsWpIT46aYVA58/l9GboYOcBRy8sNyyLc5c60GMoPDT/OXvHDi6VqqbyN5X
zM1PjQhCxeJrlsObGmeqoEUkfjdtjsv/V1AOwvMBET13A5PTeTAymD+Nt8umEbNQ
7kCrj3xo+OQdJm+vj3Q0u1I9m1oAg+rTG18EMou7q0G3NmBScPhHQgORp+6l05qk
xBIs59iB+L6z9HfTVi1FH2HoLXFLHOIlxFbPOind2aXNcKe7sZSvXM+MuHv5nEvG
OtKLAdIKsNOFA/kZu20YDkhJyaZBFp96sT/CeiI+oev8Phaspt7NZgz/VGnzpXYq
TIx9lR1jLqX3TnzYk/oojsh8aA6xUqwfMhfv5RWploeG/BGOuts3jinAkEkzL/FG
2Y1x6gOKt9vZ8uudELbQ5qTAIl6Wjy7Q+c73Eg83BDlpoda9d8UMDvDlDOf5FQ==
=9b8R
—–END PGP MESSAGE—–

Simplemente, ilegible! Y esto es lo que vería un hacker en la red o en el casillero de correo.

(Nota, el ejemplo fue hecho con la opción –armor para obtener una salida en ASCII, de lo contrario se obtiene un archivo en binario encriptado, que no es posible publicar en esta página y por tanto no nos sirve para el ejemplo).

Bueno ahora vamos a dejar al un lado las presentaciones y vamos a ponernos con el encriptado y desencriptado de archivos.

Generando Claves

Una vez instalado el binario del GnuPG (incluido en la mayoría de distribuciones de GNU/Linux), hay que generar las llaves privada y pública así:

gpg –gen-key

Nos pregunta qué tipo de llave vamos a usar

   (1) DSA and ElGamal (default)
   (2) DSA (sign only)
   (4) ElGamal (sign and encrypt)

Luego los bits de codificación que vamos a usar.  Mientras más bits, más difícil romper la seguridad, y es más lento el proceso de codificación/decodificación.

              minimum keysize is  768 bits
              default keysize is 1024 bits
    highest suggested keysize is 2048 bits

Las llaves pueden tener una fecha de expiración, así que ahora la definimos:

         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years

Ahora hay que relacionar la llave con un usuario, por lo que hay que ingresar el nombre del propietario de las llaves, su correo electrónico y cualquier otra información adicional:

You need a User-ID to identify your key; the software constructs the user id
from Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Noel Vargas

Posteriormente pedirá la dirección de correo electrónico e info adicional.

Ahora ingresamos la contraseña.  Es recomendable usar contraseñas lo más seguras posibles, es decir, al menos 8 caracteres alfanuméricos y algunos símbolos de puntuación, y que además sea fácil de recordar (Ej. M1.m4ma_m3.m!ma). También podemos utilizar una frase ya que soporta los espacios y demás caracteres.  Sin esta contraseña, no es posible decodificar los datos encriptados, así que hay que asegurarse de no olvidarla y NO ESCRIBIRLA EN UN PAPELITO.

You need a Passphrase to protect your private key.
Enter passphrase:

Procede entonces a crear las llaves usando datos aleatorios.

Encriptar y Desencriptar

Una vez terminado esto, podemos entonces redistribuir nuestra llave pública para que nos envíen datos encriptados, o bien podemos encriptar documentos en nuestro sistema de esta manera:

gpg --output documento_secreto.gpg --encrypt --recipient juanperez@dominio.com.ni documento_secreto.txt

Si vamos a encriptar un documento para nuestro uso personal, hay que poner en la opción –recipient la dirección de correo electrónico que usamos para la creación de las llaves.

Para desencriptar un documento usamos

gpg --output documento_secreto.txt --decrypt documento_secreto.gpg

Servidores Gráficos

Para aquellos que no acaben de trabajar cómodamente a través de la consola, también podemos encontrar interfaces gráficas para el cifrado de archivos.

Para KDE encontramos KGPG:

Y para Gnome tenemos GPA:

Fuente: Seguridad y Software Libre de Nicaragua

    • anonimo
    • 15 de octubre de 2008

    Gracias por la info me fue super util, solo queiro agregar una pequieña cosa, donde dice ‘gpg -key-gen’ a mi me resulto con asi que use’gpg –key-gen’.

    Gracias

  1. Muchas gracias por el detalle.

  2. Pero gpg -key-gen y gpg –key-gen es lo mismo…
    ¿donde está la diferencia?

      • Martin
      • 26 de septiembre de 2012

      El segundo tiene doble guion.

      Saludos

  3. What you said made a lot of sense. However, what about this?
    suppose you added a little content? I am not suggesting your information is not good,
    however what if you added a post title that grabbed a person’s attention? I mean Encriptar archivos con GnuPG | Sekuela Digital is kinda vanilla. You should look at Yahoo’s home page
    and see how they create article headlines to get people to
    open the links. You might add a video or a pic or two to grab people excited about
    everything’ve got to say. Just my opinion, it could bring your posts a little bit more interesting.

  4. I’ve been browsing online greater than 3 hours today, but I never found any attention-grabbing article like yours. It’s beautiful worth sufficient for me.
    In my view, if all website owners and bloggers made excellent
    content material as you did, the internet shall be much more useful than ever before.

  1. 2 de May de 2014
    Trackback from : personal injury claim

Replica a the North Pacific gyre Cancelar la respuesta