Cifrar y firmar archivos con GnuPG

GnuPG es una aplicación completa y libre de la norma estandar OpenPGP, que reemplaza al conocido software privativo PGP. GNU Privacy Guard o GPG permite cifrar y firmar sus datos y comunicaciónes y cuenta además con un versátil sistema de gestión de claves.

GnuPG se basa en un sistema de claves lo que quiere decir que cada usuario tiene 2 claves: una clave privada (que por lo tanto solo conoce él) y una clave pública. En este mini tutorial vamos a ver como crear dichas claves, lo cual nos servirá para cifrar-descifrar archivos, firmar documentos y verificar las firmas digitales.

  • Una vez instalado GnuPG 2 lo primero que haremos será generar ese par de claves con el comando:
gpg --gen-key

Seleccionamos el tipo de clave deseada (1) por defecto y elegimos su periodo de validez/caducidad.

  • A continuación nos pide generar el usuario que va a utilizar la clave
  • E introducimos la contraseña privada



  • Para poder comunicarse con otros, el usuario debe intercambiar las claves públicas. Para obtener una lista de las claves públicas, utilizariamos el comando:
gpg --list-public-keys

En mi caso la clave pública sería AE8B6E3D

 
  • Ahora lo que podemos hacer es exportar nuestra clave pública a un documento  y así utilizarla en otros equipos o enviarla por correo.
gpg --export -a "user name" > publica.key
  • Si queremos podemos colocar nuestra clave pública en un servidor de claves, para darla a conocer. Existen varios servidores de claves en funcionamiento en todo el mundo, que además suelen están sincronizados.
gpg --keyserver [server] --send-keys [clavepublica]

  • Si necesitamos importar una clave pública la orden a ejecutar sería:
gpg --import publica.key
  • Desde el propio menú contextual o mediante GUI’s como kgpg o gpa tendremos la opción de cifrar y firmar nuestros archivos, solo necesitaríamos introducir nuestra contraseña privada.

Si preferimos utilizar la terminal para cifrar haríamos:

gpg -e nombre_archivo
  • Para descifrar archivos la orden sería(en este caso hay que dar el nombre al archivo de salida):
gpg -d nombre_archivo.pgp>nombre_archivosalida
  • Si lo que queremos es firmar un archivo por ejemplo un documento de texto sencillo haríamos algo así:
 gpg --clearsign documento.txt
  • Es conveniente crear también un certificado de revocación por si en algún momento nos olvidamos o nos roban nuestra clave secreta. Una manera sencilla de hacerlo es

gpg –armor –gen-revoke id

donde id puede ser nuestra dirección de correo electrónico

clave de revocación1

El resultado lo podemos pegar en un editor, de texto y guardarlo en un lugar bien seguro ;-)

16 thoughts on “Cifrar y firmar archivos con GnuPG”

  1. adopte une cougar says:

    Thank god some bloggers can write. My thanks for this piece of writing

  2. Pingback: Cifra tus archivos con ccrypt « La mirada del replicante
  3. Trackback: Cifra tus archivos con ccrypt « La mirada del replicante
  4. Gregorio Espadas (@gespadas) says:

    Duda: Si formateo mi máquina, o si quiero usar otro equipo, ¿cómo exporto e importo las claves pública y privada? ¿qué otras consideraciones debo tener para que todo quede perfecto y funcional en el nuevo sistema?

    1. tannhausser says:

      Hola Gregorio! A ver si te puedo responder que este tema ya lo tengo algo oxidado:

      – A la hora de exportar la CLAVE PUBLICA lo hacemos tal como explico en la entrada:
      gpg --export -a “user name” > publica.key

      y después la podríamos importar en el nuevo equipo con
      gpg --import publica.key

      – Con la CLAVE PRIVADA hacemos algo similar, la exportamos:
      gpg --export-secret-keys -a “user name” > mySecret.Key

      Ej con mi user:
      gpg --export-secret-keys -a tannhausser > mySecret.Key

      Y lo importaríamos:

      gpg --import mySecret.Key

      PD: esto es la teoría desde linea de comandos aunque creo que también se puede hacer de forma gráfica (por lo menos con las public,key), de todas maneras me has dado la idea para una entrada, a ver si mañana me pongo a ello y compruebo si realmente funciona.

      Un saludo!

      1. Gregorio Espadas (@gespadas) says:

        Gracias por la respuesta, estaré esperando ese post para ya empezar a usar gpg a full :-)

  5. Pingback: Como exportar e importar las claves en GnuPG « La mirada del replicante
  6. Trackback: Como exportar e importar las claves en GnuPG « La mirada del replicante
  7. Nahum says:

    Hola… Cuando pones el comando:

    gpg –export -a “user name” > public.key

    exporta sólamente la llave pública o la privada también? es mi duda porque en seahorse donde dice Exportar todo exporta ambas llaves y eso es lo que no quiero que haga, solamente que esporte la pública, gracias

    1. tannhausser says:

      Hola Nahum! Sólo exporta la pública.

      Echale un vistazo a esta entrada si tienes alguna duda

      http://lamiradadelreplicante.com/2012/10/25/como-exportar-e-importar-las-claves-en-gnupg/

    2. excalibur965 says:

      jejeje ya revisé y si solamente pasa la pública ahora mi duda es cómo cifrar un archivo ya que cuando uso los comandos que pones ahí me sale algo así:

      No ha especificado un ID de usuario (puede usar “-r”)

      Destinatarios actuales:

      XXXXXXXXXXXX XX/XX/XXX “XXXXXXXXXXXXXXXXXXX”

      Introdusca ID de usuario. Acabe con la línea vacía:

      1. excalibur965 says:

        Listo ya solucioné esos problemas, ya más o menos entiendo cómo funciona esto, muchaes gracias por la atención…

  8. tannhausser says:

    @escalibur965 Me alegro de que te funcione y gracias a ti por comentar!

    Saludos

  9. Pingback: Liberado Tails 1.0: el sistema GNU/Linux con el que Snowden burló a la NSA - Iniciativa Debate
  10. Trackback: Liberado Tails 1.0: el sistema GNU/Linux con el que Snowden burló a la NSA - Iniciativa Debate
  11. Pingback: Liberado Tails 1.0: el sistema GNU/Linux con el que Snowden burló a la NSA « Camiri.net
  12. Trackback: Liberado Tails 1.0: el sistema GNU/Linux con el que Snowden burló a la NSA « Camiri.net
  13. chanbalamb says:

    Exelente Guía me salió un error: gpg problem with the agent no pinentry
    pero lo corregí con esta ayuda.

    http://chaosfreakblog.wordpress.com/2013/06/21/gpg-problem-with-the-agent-no-pinentry-solved/

    openSUSE 13.1

  14. Ergo Esse says:

    ¿Cuando firmas y cuando verificas firma? :S solo cifras y descifras…

Deja un comentario

A %d blogueros les gusta esto: