GnuPG/es

Esta pequeña guía le enseñará lo básico del uso de GnuPG, una herramienta para comunicaciones seguras.

Lo que aprenderá en esta guía
Esta guía asume que está familiarizado con la criptografía de clave pública, cifrado y firmas digitales. Si no es el caso, eche un vistazo al manual de GnuPG, capítulo 2, y luego vuelva a esta guía.

Esta guía le enseñará cómo instalar GnuPG, cómo crear su par de claves, cómo agregar claves a su anillo de claves, cómo enviar su clave pública a un servidor de claves y cómo firmar, cifrar y verificar o decodificar los mensajes que recibe o envía. También aprenderá cómo cifrar archivos en su computadora local para prevenir que la gente vea el contenido.

Instalación del software necesario
En primer lugar, necesita ejecutar. Muchas aplicaciones hoy en día tienen algún grado de soporte para gpg, así que es una buena idea definir crypt en su variable USE. Si quiere tener un cliente de correo electrónico que pueda usar gnupg, puede usar pine, mutt , Mozilla Thunderbird , evolution (evolution es una aplicación del tipo Microsoft Outlook para GNOME) y el cliente de correo KMail propio de KDE.

puede interesarle si usa KDE. Este pequeño programa le permite generar pares de claves, importar claves desde archivos ASCII, firmar claves importadas, exportar claves y algunas características más.

Crear su clave
Para crea su clave, debe ejecutar. La primera vez que lo haga, el programa creará algunos directorios; ejecútelo de nuevo para crear las claves:

En este momento tiene la posibilidad de elegir el tipo de clave que quiere usar. La mayoría de los usuarios elegirán la predeterminada RSA y RSA. Lo siguiente a elegir es el tamaño de la clave, recuerde que cuanto más grande se la clave, mejor. No use un tamaño superior a 2048 con claves DSA/ElGamal. Normalmente 2048 es más que suficiente para mensajes de correo electrónico normales.

Después del tamaño viene la fecha de expiración. Cuanto antes sea esta fecha, mejor. Sin embargo, la mayoría de los usuarios usan claves que nunca expiran o a lo sumo lo hacen en dos o tres años.

Elegir el tamaño de la clave

Ahora es el momento de introducir alguna información personal. Si va a enviar su clave pública a otras personas tendrá que usar su dirección real de correo electrónico.

Introducir información de usuario

Ahora introduzca la contraseña de su clave dos veces. Es una buena idea usar una contraseña segura. Si alguien consigue acceder a su clave privada y obtiene su contraseña, podrá enviar mensajes de correo electrónico en "su nombre", haciendo creer a todo el mundo que fue usted el que envió el mensaje.

A continuación, GnuPG generará su clave. Mover el ratón o reproducir un mp3 en segundo plano ayudará a acelerar el proceso porque esto genera datos aleatorios.

Generar un certificado de revocación
Después de crear sus claves debería crear un certificado de revocación. Hacer esto le permite revocar su clave en caso que algo desagradable ocurra (por ejemplo, que alguien obtenga su clave privada o contraseña).

La orden  muestra las claves en su llavero de claves públicas. Puedes usarlo para ver el ID de su clave y poder crear el certificado de revocación. Ahora es un buen momento para copiar todo el directorio .gnupg y el certificado de revocación (en escudo ASCII, ) a un medio seguro (dos disquetes o un CD-R que guarde en un lugar seguro). Recuerde que puede usar para revocar sus claves y hacerlas inutilizables en el futuro.

Exportar claves
Para exportar su clave, teclee. Casi siempre puede usar el ID de la clave o algo que la identifique (aquí hemo usado una dirección de correo electrónico). Juan tiene ahora un archivo que puede enviar a sus amigos, o poner en su sitio web para que la gente se comunique con él de forma segura.

Importar claves
Para agregar archivos a llavero de claves públicas, primero debe importarlas, luego comprobar la huella digital de la clave. Y después de verificar la huella digital debe validarla.

Ahora agregaremos la clave pública de Luis Pinto (un amigo mio) a nuestro llavero de claves públicas. Despúes de hablar con él por teléfono y de haberle preguntado por su huella digital, comparo esta huella con la salida de la orden. Como la clave es auténtica, la agrego al llavero de claves públicas. En este caso particular, la clave de Luis expira el 2003-12-01 entonces se me preguntará si quiero que mi firma en su clave expire en el mismo día.

Enviar claves a los servidores de claves
Ahora que tiene su clave, es buena idea enviarla a un servidor de claves. Hay un montón de servidores de claves en el mundo y muchos de ellos intercambian claves entre sí. Vamos a enviar la clave de Juan Nadie al servidor subkeys.pgp.net. Usaremos HTTP, por lo que si necesita usar un proxy para el tráfico HTTP, no olvide configurarlo. La orden para enviar la clave es:  donde   es el ID de la clave. Si no necesita un proxy HTTP puede quitar la opción --keyserver-options honor-http-proxy.

Puede también enviar las claves de otras personas que ha firmado al servidor de claves. Podríamos enviar la clave de Luis Pinto al servidor. De esta forma alguien que confía en su clave puede usar la firma que pusimos ahí para confiar en la clave de Luis.

Obtener claves desde los servidores de claves
Ahora buscaremos la clave de Gustavo Felisberto y agregarla al llavero de claves de Juan Nadie (solo en el caso que no se haya enterado que Gustavo Felisberto es la persona que escribió esta guía :&#41;).

Como puede ver en la respuesta del servidor tengo un par de claves que he enviado al servidor, pero actualmente solo uso B9F2D52A. Ahora Juan Nadie podrá obtenerla y firmarla si confía en ella.

¿Qué es un Agente GPG?
Hay casos cuando se está trabajando con ciertas aplicaciones donde usa su clave GPG muy frecuentemente, lo que significa debe teclear su contraseña muchas veces. Diversas aplicaciones solían ofrecer un mecanismo de cacheo de la contraseña para facilitar la vida de los usuarios. Esto, sin embargo, inhabilitaba el poder compartir esta caché con otros programas (¿Sería esto seguro?) y forzaba a las aplicaciones a reinventar la rueda una y otra vez.

Un agente GPG es una aplicación no incluida en GPG que se utiliza para mantener en caché la contraseña de forma estándar y segura. Permite a las aplicaciones usar GPG de forma concurrente: si teclea su contraseña mientras trabaja en una aplicación, otra puede trabajar con GPG sin pedir reiteradamente la contraseña para acceder a la clave, siempre y cuando el se configure correctamente el agente GPG.

Gentoo proporciona algunas aplicaciones de agente GPG. El paquete se puede considerar como referencia, y será el que usaremos en este documento.

Configurar gpg-agent y pinentry
GnuPG incluye. es la herramienta de ayuda que utiliza gpg-agent para solicitar la contraseña en una ventana gráfica. Se puede utilizar de tres formas: Puede mostrar una ventana utilizando gtk+, Qt, o la librería curses (dependiendo de sus ajustes USE en ).

Si instaló con más de un tipo de gestión de la ventana, puede elegir entre ellas utilizando  :

A continuación, cree un archivo llamado e introduzca las siguientes líneas que definen el tiempo de espera por defecto para mantener al contraseña (por ejemplo, 30 minutos) y la aplicación que se llamará cuando se recupere la contraseña por primera vez (por ejemplo, la versión gtk+ de pinentry).

Ahora configure GnuPG para que use un agente cuando sea conveniente. Edite y agregue la siguiente línea:

Ahora su sistema está (casi) listo para usar el agente GPG.

Iniciar automáticamente el agente GPG
Si utiliza KDE como entorno gráfico, edite el fichero y elimine el comentario siguiente (para todo el sistema) o  (para el usuario local) y añada la siguiente orden para que KDE inicie automáticamente el agente GPG:

Además, elimine los comentarios siguiente en  (para todo el sistema) o añádalo a  (para el usuario local):

Si utiliza otro entorno gráfico, coloque la línea mencionada arriba en (si usa  ) o  (si usa XDM/GDM/KDM/...).

Cifrar y firmar
Digamos que tiene un archivo que quiere enviar a Luis. Puede cifrarlo, firmarlo, o cifrarlo y firmarlo. Cifrarlo significa que solo Luis podrá abrirlo. La firma le indica a Luis que el archivó lo creó la persona que lo ha firmado.

Las tres órdenes siguientes harán solo eso, cifrar, firmar y cifrar/firmar.

Esto creará archivos binarios. Si desea crear archivos ASCII, agregue únicamente el parámetro  al principio de la orden.

Descifrar y verificar firmas
Suponga que ha recibido un archivo cifrado. La orden para descifrarlo es. Esto descifrará el documento y verificará la firma (si es que hay una).

Cifrar y descifrar sin claves
También es posible cifrar archivos usando contraseñas en vez de claves. La contraseña funcionará como clave y se utilizará como cifrado simétrico. Se puede cifrar el archivo usando el parámetro  de la orden  ; el descifrado usa la misma orden.

GnuPG le pedirá una una contraseña y su verificación.

Características avanzadas
Hay algunas características avanzadas agradables en GnuPG. Para encontrarlas, abra el archivo

Busque las dos líneas anteriores y elimine los comentarios. Con esto, cada vez que GnuPG necesite comprobar una firma y no encuentre la clave pública en el llavero de claves local, contactará con el servidor de claves en subkeys.pgp.net e intentará obtenerla allí.

Otra orden a tener en cuenta es. Esta contacta con el servidor de claves definido en el archivo de opciones y actualizará las claves públicas de su llavero de claves local a partir de ahí, buscando claves revocadas, nuevos identificadores, nuevas firmas en claves. Probablemente debería ejecutar esto una o dos veces al mes así puede saber si alguien revocó su propia clave.

Acerca de las firmas en los correos electrónicos
El 95 % del tiempo usará GnuPG con el correo, firmando o cifrando sus mensajes salientes y leyendo mensajes firmados o cifrados. Así que es justo que hablemos acerca de esto en primer lugar.

Hay dos formas de firmar o cifrar un correo electrónico con GnuPG, la antigua y nueva :&#41;. En la antigua, los mensajes aparecían en texto plano sin formato posible y los archivos adjuntos estaban sin firmar o sin cifrar, a continuación se muestra un ejemplo de un mensaje firmado a la antigua:

Una firma en texto plano

Mensajes como este no son buenos en el mundo actual, en el que tenemos preciosas interfaces gráficas y lectores de correo que comprended html.

Para solucionar esto se creó un extensión a MIME (Extensiones de Correo de Internet Multipropósito). Esto añade un campo al mensaje de correo electrónico que notifica al programa lector de correo que el contenido completo del mensaje está firmado o cifrado. El problema es que no todos los lectores de correo lo soportan. Y en algunos casos incluos desordena el contenido, el programa Microsoft Outlook es famoso por no funcionar bien con esto.

Kgpg
Kgpg is a nice GUI for GnuPG. In the main screen you can paste the text that you wish to sign or encrypt, and you can also paste the ASCII armored text that you which to decrypt.

Desde la ventana principal puede descifrar texto (tendrá que introducir su contraseña), cifrar otros ficheros, pegar nuevo texto para firmar...

Seahorse
Seahorse pretende ser un interfaz GUI de GnuPG para el escritorio Gnome. El software ha evolucionado rápido, pero aún carece de muchas características importantes que se pueden encontrar en Kgpg o en la versión de línea de comandos.

KMail
Si tiene definido el ajuste USE, KMail se compilará con soporte gpg y podrá cifrar y descifrar mensajes de correo electrónico PGP en línea así como cifrar mensajes OpenPGP/MIME. Si quiere también descifrar mensajes OpenPGP/MIME (probablemente sea así) necesita tener un agente GPG corriendo.

Puede verificar si KMail está configurado apropiadamente yendo a,  ,  ,. Debería ver un entorno basado en GpgME y poder marcar la casilla OpenPGP. Si está listada pero en color gris, haga clic en. Si el entorno permanece en color gris esto indica que KMail no está funcionando correctamente.

Si aún es incapaz de hacer funcionar correctamente KMail, por favor lea la página KMail PGP HowTo para obtener más información.

Claws-Mail
Este lector de correo electrónico es muy rápido con buzones de correo grandes, tiene todas las buenas características que uno quiere en un programa de este tipo y funciona bastante bien con gpg. El único problema es que no funciona con las firmas PGP antiguas, así que cuando reciba correos de ese tipo tendrá que comprobar las firmas manualmente.

Para usar su clave gpg con Claws-Mail simplemente vaya a la configuración de la cuenta y seleccione la pestaña privacy. Una vez ahí, elija qué clave va a utilizar. Probablemente la mayoría de los usuarios elegirá la clave por defecto.

Criptografía de clave pública básica
El concepto de criptografía de clave pública lo idearon originalmente Whitfield Diffie y Martin Hellman in 1976. Cuando escuché por primera vez las palabras "clave pública" y "criptografía" en la misma frase en 1993, pensé que sería imposible hacer aquello. Entonces no existía Internet (bueno había, pero no para mí) así que fui a la biblioteca pública y pregunté por libros sobre Criptografía. Debo decir que tenía 16 años así que el encargado me miró con asombro y me trajo un libro para niños sobre cifrados por substitución (esos en que uno cambia una letra por otra como en el famoso Cifrador César o ROT-13 (Tragbb rf yb zrwbe, l fnor dhr rf ohrab cbedhr rfgn yrlraqb rfgr qbphzragb.), (instale rotix si es que no puede leer el texto anterior)). Me enojé mucho por esta situación y empecé la búsqueda de más información al respecto. Es bueno tener matemáticos en la familia, porque tan pronto hablé con uno de ellos, se abrieron las puertas de un nuevo mundo.

Y ahora veamos un poco de matemáticas:

Conceptos matemáticos

Si le doy el número 35 y le digo que este número es el producto de dos números primos, es fácil encontrar que son el 5 y 7. Pero si le digo lo mismo para el número 1588522601 empleará bastante tiempo (o ciclos de CPU) para encontrar que es 49811*31891. Y si este número es realmente grande la tarea se vuelve "imposible". Así que ahora si le digo al mundo el número más grande que conozco que es el producto de dos primos sé entonces algo acerca de ese número que nadie más conoce.

Esta es la base de las implementaciones de hoy en día de Criptografía de Clave Pública (PKC en inglés). Como ejemplo (no realista) le doy a alguien mi número que esa persona usará para cifrar un mensaje dirigido a mi. Cualquier persona puede ver el mensaje cifrado porque soy el único que conoce una forma rápida de leerlo, cualquier otra persona tendría primero que "dividir" el número grande para poder leer el mensaje, y es un "hecho" que es imposible de hacer eso en un periodo corto de tiempo (los métodos actuales y las computadoras más rápidas del mundo emplearía miles de años en hacerlo). En esta configuración los dos números primos grandes serían la CLAVE PRIVADA y el número grande no primo es la CLAVE PÚBLICA.

En la práctica esto no es correcto al 100% pero le dará una buena idea al neófito. Puede encontrar más información en la Wikipedia sobre el protocolo Diffie-Hellman. Para obtener más información, vaya a una biblioteca pública y obtenga una copia del libro "Handbook of Applied Cryptography" de Alfred J. Menezes, Paul C. van Oorschot y Scott A. Vanstone, este libro también está disponible en línea sin costo alguno en el sitio mencionado anteriormente.

One consequence of the above is that if you cypher a message to me, and you loose the original uncyphered message you will no longer be able to retrieve it from the cyphered version.

Signatures
We already saw how someone can send us a cyphered message if they have our public key. But how do we know that the author of the message is really who he claims to be? Or in other words: If I receive an email from you how do I really know it was you and not someone else claiming to be you?

Remember me saying that PKC was not as simple as I had said? The idea is that when you cypher a message to me you sign it with your private key so that, when I receive it, I can first use your public key to check your signature and then use my private key to decypher the message. As you can see we could not do that in the setup I described before.

It's also very important to sign messages so that you don't have to cypher them beforehand. Now you can create messages that can be read by anyone, but that come with your "branding". And if any single character is changed in the message it can (and will) be detected.

Key Servers and Signed Keys
But let's say that I have no previous contact with you until you send me a message: how do I get your public key, and how do I really know it is yours?

To solve this problem public Key Servers were created. When you create your key pair (Public and Private key), you send your public key to the key server. After this everyone can retrieve your key from there. This solves the problem of finding the key. But how do I really know that that key is the author's key? For this another concept must be introduced, and that is key signing:

Key signing means that if I have the public key of another person, and I know for sure that it is really that persons key (it is my personal friend, someone I know in real life, etc.) I can sign that public key and send it to keyservers, that way I am telling the world: "This key really belongs to the person it claims to belong.". That way persons that have my public key and trust me can use that trust to trust other keys.

This can sometimes be confusing so let's see a real world situation.

Let's imagine a 3 person situation: John, Mary, and Lisa. John is a good friend of Mary but does not know Lisa; Lisa is a good friend of Mary but does not know John. One day Lisa sends John a signed email. John will fetch Lisa's Public Key from the keyserver and test the message, if all went ok he will see that whoever wrote that message also created that key. But how do I know it was really the person it claims to be?

He then sees that it is signed by Mary, which he can check because he already has Mary's key and he trusts that key. With this ring of trust he continues to conclude that the email he received was really written by Lisa.

You are now ready to use this guide, you can go back to chapter 1 and learn how to use gpg.

Some problems
I had some problems with photos in keys. Check the version you are using. If you have GnuPG 1.2.1-r1 and up you are probably OK, older versions may have problems. Also most keyservers don't like keys with photos, so you are better if you don't add photos.

The latest versions of gnupg don't seem to work with the  that was used so send all keys in your keyring to the public server.

What is not here
is a very complex tool, it lets you do much more than what I have covered here. This document is for the user who is new to GnuPG. For more information, you should check the GnuPG Website.

I did not write about other tools like,  ,   and maybe Windows tools, but I will probably extend this document in the future.

Créditos
El Manual GnuPG de John Michael Ashley es un buen libro para principiantes.

Swift (Sven Vermeulen) por animarme a reescribir esta guía.

A todos los miembros del equipo #gentoo-doc, tíos, moláis.

Gracias a Tiago Serra por apoyarme en el estudio de la privacidad.

Agradecimientos
Nos gustaría dar las gracias a los siguientes autores y editores por sus contribuciones a esta guía:


 * Gustavo Felisberto
 * John P. Davis
 * Sven Vermeulen
 * nightmorph