Viernes 30/07/2010 13:03:45 PM

La felicidad es como una mariposa, que cuando se la persigue, siempre está fuera de nuestro alcance; pero que si te sientas silenciosamente, puede posarse en tí. - "Nathaniel Hawthorne."

GnuPG básico

  Introducción   Creación de claves  
  Ver claves públicas disponibles   Ver claves privadas disponibles  
  Borrar claves de los anillos   Ver huella de la clave  
  Exportar claves   Importar claves  
  Encriptar mensajes   Desencriptar mensajes  
  Firmar mensajes   Verificar mensajes firmados  
  Trabajar con claves en servidores   GnuPG subshell  
  Clave de revocación   Anillo de confianza  
  Programas que soportan GnuPG   Historial del manual  

Introducción

GnuPG es una aplicación que sirve para encriptar mensajes, documentos ... GnuPG usa un sistema de claves públicas lo que quiere decir que cada usuario tiene una clave privada y una clave pública.

La clave privada es la que se usa para desencriptar aquello que nos envían encriptado con nuestra clave pública, La clave privada es una clave que solo ha de conocer el propietario ya que si alguien más la conociese podría desencriptar lo que nos mandan encriptado.

La clave pública es la que se da a la gente para que nos manden cosas encriptadas y usaran para encriptar aquello que nos quieran pasar.

El programa se puede obtener de la siguiente url http://www.gnupg.org


Creación de claves

Lo primero que hay que hacer una vez que se tiene GnuPG instalado es crear nuestra clave pública y privada. Para hacerlo hay usar el comando gpg --gen-key.

Generación de claves - Tipo de clave

Al ser la primera vez que se ejecuta nos crea un directorio en el que guardara el fichero de configuración así como los archivos secring.gpg y pubring.gpg. En el primero se almacenaran las claves privadas y en el segundo las claves públicas.

La primera pregunta que hace es que tipo de clave queremos. Lo normal suele ser seleccionar la primera opción (DSA and ElGamal) que nos permite encriptar y firmar.

Generación de claves - Tamaño de las claves

La siguiente pregunta es el tamaño de las claves que se puede elegir entre 1024 y 4096 bits. Por defecto se recomienda 2048, a mayor tamaño más segura es la clave. También a mayor tamaño más tiempo lleva encriptar y desencriptar.

Generación de claves - Periodo de validez de las claves

La siguiente pregunta es cuanto tiempo de validez queremos que tenga la clave. La periocidad se puede poner que no caduque nunca, que dure ciertos semanas, meses o años. En el caso de poner que caduque al cabo de cierto tiempo habrá que volver a generar las claves y volver a mandar la nueva clave pública a aquellos que usaban la que ha caducado. Por defecto viene la opción 0 que es que no caduque nunca.

Generación de claves - Datos para el ID de la clave

Ahora pregunta nuestro nombre y apellidos, dirección de correo y un comentario para la llave. Una vez introducidos todos los datos nos muestra cual es nuestro ID de usuario que lo crea a partir de los datos que le hemos introducido antes. Luego pregunta si queremos cambiar algún dato o si están bien los datos. Si estan correctos respondemos "V" y sigue adelante el proceso.

Generación de claves - Creación de las claves

Por último se pregunta cual va a ser el password para nuestra clave privada. Al introducir el password no se ve nada de lo que se escribe ni se ve avanzar el cursror. Despu´s de introducirla nos vuelve a preguntar el password y si coincide con el primer password comienza la generación de las claves. Cuando se produce el proceso de generación de las claves es buena idea reproducir mp3, mover el ratón ... para que se generen números aleatorios y se creen antes las claves.


Ver claves públicas disponibles

Para ver las claves públicas que tenemos disponibles hay que hacerlo con el comando gpg --list-keys. Esto lo que haces listar las claves que hay disponibles dentro del fichero pubring.gpg.

Listado de claves públicas disponibles

El identificador de las claves es lo que hallamos metido en el nombre, en el apellido, en la dirección de correo o el número que aparece después del 1024D al hacer gpg --list-keys. Si en algún caso coincide el ID se mostrarán los que coinciden.

Listar una clave pública en concreto

Ver claves privadas disponibles

Para ver las claves privadas que tenemos disponibles hay que hacerlo con el comando gpg --list-secret-keys. Esto lo que haces listar las claves que hay disponibles dentro del fichero secring.gpg.

Listado de claves privadas disponibles

Borrar claves de los anillos

Se llama anillos a los archivos en los que se guardan las claves públicas y las privadas. Generalmente donde se guardan las claves públicas es el archivo pubring.gpg y en el que se guardan las claves secretas secring.gpg. Si se quiere borrar alguna clave primero hay que borrar la clave privada y después la pública. Si se intenta borrar primero la clave pública y esta tiene asociada una clave privada da un mensaje de error.

Error al intentar borrar una clave pública que tiene una clave privada asociada

Para borrar claves privadas se hace con el comando gpg --delete-secret-key ClaveID
Para borrar claves públicas se hace con el comando gpg --delete-key ClaveID

Borrado de claves públicas y privadas de los anillos de claves

Ver huella de la clave

Las claves están identificadas por lo que se llama huella. La huella es una serie de números que se usa para verificar si una clave pertenece realmente al propietario. Si se recive una clave podemos ver cual es su huella y luego pedirle a su propietario que nos diga su huella. Si ambas coinciden la clave es correcta y no ha sido manipulada. Si no fuese igual es que ha sido modificada. La huella es como el md5 que verifica que un archivo no ha sido manipulado.

Huella de una clave

Exportar claves

Las claves se pueden exportar a ficheros para que las podamos distribuir entre la gente que queremos que nos encripte o firme cosas o bien porque vamos a formatear el equipo y necesitamos salvarlas.

Para exportar la clave publica se hace poniendo gpg --armor --output fichoeDeSalida --export ClaveID

Exportat clave pública

Para exportar la clave privada se haría poniendo gpg --armor --output fichoeDeSalida --export-secret-key ClaveID

Exportar clave privada

Si quisieramos salvar todas las claves que tenemos valdría con copiar los archivos pubring.gpg y secring.gpg y luego cuando vayamos al nuevo equipo poneralas en el directorio de GnuPG.


Importar claves

Si se quiere importar claves nuevas porque por ejemplo hemos formateado el equipo y queremos volver a tener nuestras claves las importamos con el comando gpg --import ClaveID. En el apartado anterior se han salvado las claves publica y privada pues ahora vamos a importarlas. Primero importamos la publica y luego la privada.

Importar claves públicas y privadas a los anillos

Ahora si queremos importar la clave de una amigo pues se haría igual.

Importar clave pública al anillo de claves públicas

Encriptar mensajes

Si se quiere encriptar mensajes se puede hacer poniendo gpg --armor --recipient ClaveID --encrypt mensaje. Si por ejemplo queremos encriptar el archivo a.txt habría que poner gpg --armor --recipient prueba@prueba.com --encrypt a.txt

Encriptar un fichero

También se puede encriptar a un fichero en concreto con la opción --output nombreFichero

Encriptar un fichero indicando el fichero de salida

Si en las opciones no se le pasa el parámetro --armor lo que se encripta lo deja en un archivo de tipo binario. Al poner la opción --armor transforma lo que se encripta en texto ASCII con el mensaje encriptado.


Desencriptar mensajes

Para desencriptar el mensaje que hemos encriptado antes hay que poner gpg --decrypt archivo. Para el caso anterior sería gpg --decrypt a.txt.asc.

Desencriptar un fichero

Cuando desencriptamos algo se pide la password de nuestra clave para poder desencriptarlo. Para nuestro caso tenemos el archivo a.txt.asc encriptado al desencriptarlo nos deja el archivo a.txt y nos muestra su contenido.


Firmar mensajes

Firmar mensajes sirve para que cuando a alguien le llegue un mensaje que hemos firmado la persona que lo ha recibido verifique con GnuPG que la firma es buena y que entonces hemos sido nosotros quien le ha enviado el mensaje. Por ejemplo vamos a firmar el archivo a.txt para ello se pondría gpg --clearsign a.txt. Esto nos creara el arhivo a.txt.asc con el contenido que se ve en la imagen.

Firmar un fichero con armadura ASCII

Para firmar algo se pide la contraseña para poder firmarlo. Como se ve en la imagen lo que se ha hecho en el fichero firmado es añadir unas líneas que contienen la firma.

A la hora de fimar si se firma con el parámetro --sign en lugar de --clearsign nos generara un fichero de salida en binario con extensión .gpg. Para validar la firma y ver el contenido hay desencriptarlo con la opción --decrypt.

Firmar un archivo binario y comprobar firma

La firma también se puede hacer que se muestre en un fichero aparte con la opción -b. Esta opción se suele usar para firmar archivos binarios.

Firmar un archivo poniendo la firma en un archivo aparte

Verificar mensajes firmados

Para verificar mensajes firmados se hace poniendo gpg --verify mensaje. Para el caso anterior seria poner gpg --verify a.txt.asc

Verificar una firma

Si la firma no fuese correcta podríamos ver un mensaje como el siguiente:

Mensaje de error en una firma incorrecta

Trabajar con claves en servidores

Podemos buscar claves públicas de gente a la que qeremos enviar mensajes cifrados en servidores de claves. Para hacer una busqueda se hace poniendo los parámetros --keyserver NombreDelServidor --search-keys ClaveID. Si encuentra claves que coinciden con esa ID nos las muestras, luego tenemos tres opciones mostrar los siguientes si es que se han encontrado muchos, poner el número del registro que nos interesa (en ese caso nos importa la clave al anilllo de claves públicas) o salir.

Buscar claves públicas en servidores

Si queremos importar una clave en concreto se hace con los parámetros --keyserver NombreDelServidor --recv-keys ClaveID.

Importar una clave desde un servidor

Si queremos subir una clave a un servidor para que esté disponbile para la gente se hace con los parámetros --keyserver NombreDelServidor --send-keys ClaveID

Exportar una clave a un servidor

GnuPG subshell

GnuPG viene con una especie de shell que nos da multitud de opciones para trabajar con la clave, Nos permite firmar la clave, cambiar la contraseña, cambiar la fecha de expiración de la llave ...

Para acceder a esta shell hay que poner el parametro --edit-key ClaveID.


Clave de revocación

La clave de revocación es una clave que lo que hace es que cuando la importemos a nuestro anillo de claves inavalide esa clave. Para generarla se hace con la opción --gen-revoke. Esta clave se puede crear nada más generar las llaves o bien cuando se halla comprometido. Hay gente que lo crea nada más crear las claves porque si por ejemplo ha olvidad la contraseña no podra generar la clave de recovación ya que al final del proceso de generación se pide la contraseña. Esta clave ha de guardarse en un lugar seguro ya que si alguien la obtuviese podría revocar nuestras claves y dejarnos las claves inutilizadas.

Generación de una clave de revocación

Si queremos revocar la clave hay que importar el fichero que tiene la clave de revocación y ya está. Una vez revocada la clave ya no podemos cifrar mensajes aunque si se pueden desencriptar, aunque al desencriptar se avisa de que la clave ha sido revocada..

Importar una clave de revocación

Al invalidar la clave tampoco se pueden firmar mensajes.

Mensaje de error al intentar firmar con una clave revocada

Anillo de confianza

Crear un anillo de confianza consiste en tener claves de gente firmada por otra gente que la han firmado y que con su firma aseguran que esa clave es realmente de quien dice ser y no ha sido alterada.

Si por ejemplo tenemos las persona A y B. Las personas A y B son amigas y se intercambian entre ellas las claves públicas, verifican sus fingerprints para ver que las claves son las correctas y quedan para ver las claves que se han pasado son correctas. Entonces una vez verificado que todo es correcto cada uno firma la clave de su amigo. Ahora si por ejemplo yo obtengo la clave de B y veo que está firmada por A (que es una persona que conozco y en la que confió) entonces me fio de que esa clave es la clave correcta de B y la puedo usar. Si por un casual quedría firmar la clave de B con mi firma para abalar que su clave es buena sería bueno que me pusiese en contacto con él y verficásemos la clave.

Firmar una clave pública y ver firmas de una clave pública

Programas que soportan GnuPG

Para utilizar GnuPG de forma gráfica y no tener que estar escribiendo los comandos podemos encontrar para KDE el programa KGPG y para Gnome el programa SeaHorse.

Hay algunos clientes de correo que también soportan GnuPG como Evolution o Mozilla Thunderbird al que hay que ponerle el plugin Enigmail para que tenga soporte de GnuPG.


Historial del manual


25 de Agosto del 2005

Añadido al manual las siguientes secciones:

  1. Ver claves privadas disponibles
  2. Borrar claves de los anillos
  3. Clave de revocación
  4. Anillo de confianza
  5. Trabajar con claves en servidores
  6. GnuPG subshell

14 de Agosto del 2005

Subida la primera versión del manual.