Cifrar y firmar archivos con GnuPG

por | 2 septiembre, 2011

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 😉

19 pensamientos en “Cifrar y firmar archivos con GnuPG

  1. Pingback: Cifra tus archivos con ccrypt « La mirada del replicante

  2. Gregorio Espadas (@gespadas)

    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?

    Responder
    1. tannhausser

      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!

      Responder
  3. Pingback: Como exportar e importar las claves en GnuPG « La mirada del replicante

  4. Nahum

    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

    Responder
    1. excalibur965

      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:

      Responder
  5. Pingback: Liberado Tails 1.0: el sistema GNU/Linux con el que Snowden burló a la NSA - Iniciativa Debate

  6. Pingback: Liberado Tails 1.0: el sistema GNU/Linux con el que Snowden burló a la NSA « Camiri.net

  7. Ergo Esse

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

    Responder
  8. aldobelus

    Me ha costado tiempo dedicarle un momento al cifrado, pero aquí estoy por fin. Te agradezco mucho que hicieras esta ayuda. Para los que nos hacemos un lío con estas cosas nos viene muy bien.
    Por cierto, el comando

    gpg –armor –gen-revoke id

    no sirve si lo copias y pegas. No reproduce bien los guiones al hacerlo. Pero si lo reescribes, va de lujo, sin problema.
    ¡Saludos!

    Responder
    1. tannhausser Autor

      @aldobelus Gracias por el aviso! WordPress siempre da problemas con los guiones dobles y por algún motivo los toma como uno solo!

      Saludos!

      Responder
  9. Pingback: Cifrado en el móvil con OpenPGP | devuanita

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.