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 emerge gnupg. Muchas aplicaciones hoy en día tienen algún grado de soporte para gpg, así que es una buena idea definir  en su variable USE. Si quiere tener un cliente de correo electrónico que pueda usar gnupg, puede usar pine ( emerge pinepgp ), mutt ( emerge mutt ), Mozilla Thunderbird ( emerge thunderbird ), evolution (evolution es una aplicación del tipo Microsoft Outlook para GNOME) y el cliente de correo KMail propio de KDE ( emerge kde-base/kmail ).

Puede interesarle instalar ( emerge kde-base/kgpg ) 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 crear su clave, debe ejecutar gpg --gen-key. 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.

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.

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 gpg --list-keys 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
To export your key, you type gpg --armor --output john.asc --export john@nowhere.someplace.flick. You can almost always use the key ID or something that identifies the key (here we used an email address). John now has a that he can send his friends, or place on his web page so that people can communicate safely with him.

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.

Now we will be adding Luis Pinto's (a friend of mine) public key to our public keyring. After giving him a call and asking him for his key fingerprint, I compare the fingerprint with the output of the fpr command. As the key is authentic, I add it to the public keyring. In this particular case, Luis's key will expire in 2003-12-01 so I am asked if I want my signature on his key to expire at the same time.

Enviar claves a los servidores de claves
Now that you have your key, it is probably a good idea to send it to the world key server. There are a lot of keyservers in the world and most of them exchange keys between them. Here we are going to send John Doe's key to the keys.gnupg.net server. This uses HTTP, so if you need to use a proxy for HTTP traffic don't forget to set it ( export http_proxy= http://proxy_host:port/ ). The command for sending the key is: gpg --keyserver keys.gnupg.net --keyserver-options honor-http-proxy --send-key 75447B14 where 75447B14 is the key ID. If you don't need a HTTP proxy you can remove the --keyserver-options honor-http-proxy option.

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;).

As you can see from the server response I have a few keys submitted to the key server, but I currently only use B9F2D52A. Now John Doe can get it and sign it if he trusts it.

¿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 includes. Pinentry is a helper application that gpg-agent uses to request the passphrase in a graphical window. It comes in three flavors: it can popup a window using the gtk+, Qt, or curses libraries (depending on the USE flags set in ).

If you installed with more than one popup window type, it is possible to choose between them with the eselect pinentry command:

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.

This will create binary files. If you wish to create ASCII files, just add a --clearsign option to the beginning of the command.

Descifrar y verificar firmas
Suppose that you have received a file which is encrypted to you. The command used to decrypt it is gpg --output document --decrypt encrypted_doc.gpg. This will decrypt the document and verify the signature (if there is one).

Cifrar y descifrar sin claves
It is also possible to encrypt files using passwords instead of keys. Well, the password itself will function as the key - it will be used as a symmetric cypher. You can encrypt the file using gpg --symmetric ; decrypting uses the same command as we talked about before.

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

Search for the above two lines and uncomment them. With this any time GnuPG needs to check a signature and it does not find the public key on the local keyring it will contact the key server at keys.gnupg.net and will try to fetch it from there.

Another nice command is gpg --refresh-keys. This will contact the keyserver defined in the options file and refresh public keys in your local key ring from there, searching for revoked keys, new IDs, and new signatures on keys. You should probably run this once or twice a month so that if someone revokes his key you will be notified.

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.

There are two ways two sign/encrypt a email with GnuPG, the old way and the new way. In the old way messages would appear in plain text, with no possible formatting and attached files would be unsigned/unencrypted. Here is an example of a message signed the old way:

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 wish 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 aims to be a GnuPG GUI interface for the Gnome desktop. The software has been evolving fast, but it still lacks many important features that can be found in Kgpg or the command line version.

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.

To verify if KMail is properly configured navigate to. You should see a GpgME-based backend listed and you should be able to fill the OpenPGP checkbox. If it is listed but grayed out, click on. If the GpgME-based backend remains grayed out, KMail is not working properly.

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
This mail reader is very fast with big mailboxes, has all the nice features one wants in mail readers and works well with gpg. The only problem is that it does not work with the old PGP signatures, so when receiving those kind of mails the signatures must be hand checked.

To use your gpg key with Claws-Mail navigate to. Once there just choose which key to use, probably most users will go with the default key.

Criptografía de clave pública básica
The concept of public key cryptography was originally devised by Whitfield Diffie and Martin Hellman in 1976. When I first heard the words "public key" and "cryptography" in the same sentence back in '93 I thought to myself that it would be impossible to do such a thing. In those days there was no Internet (well there was, but not for me) so I went to the public library and asked for books on Cryptography. I must say that I was 16 at the time so the clerk there looked to me in astonishment and brought me a book for children on substitution cyphers (those where you change a letter for another like the famous Caesar Cypher or ROT-13 (Tragbb Ebpxf, naq lbh xabj vg vf tbbq orpnhfr lbh ner ernqvat guvf qbp.), ( emerge rotix if you cannot read the preceding text)). I was very upset with this and started to search for more info. It is good to have mathematicians in the family, because as soon as I talked to one of them I was introduced to a new world.

Y ahora veamos un poco de matemáticas:

If I give you the number 35 and I tell you that this number is the product of two prime numbers it is easy to find that it was 5 and 7. But if I tell you the same for 1588522601 you will spend a lot of time (or CPU cycles) to find it was 49811*31891. And if this number is really really big this task becomes "impossible". So now if I give the world my large number that is the product of two primes I know something about that number that no one else knows.

This is the basis for Public Key Cryptography (PKC) implementations today. As an (unrealistic) example, I give anyone my number and that someone will use if for cyphering a message to me. Anyone can see the cyphered message, because I am the only one who knows a shortcut to read it, anyone else will first have to "split" that big number to be able to read the message, and it is a "fact" that it is impossible to do that in a short amount of time (today's methods and the fastest computers in the world would take thousands of years to do that). In this setup the two large prime numbers would be called the PRIVATE KEY, and the large non prime number is the PUBLIC KEY.

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.

Como consecuencia de lo descrito más arriba, si cifra un mensaje dirigido a mi y pierde el mensaje original no cifrado no será capaz de recuperarlo a partir de la versión cifrada.

Firmas
Ya vimos cómo alguien puede enviarnos un mensaje cifrado si tiene nuestra clave pública. Pero, ¿Cómo sabemos que el autor del mensaje es realmente quien dice ser?. En otras palabras: Si recibo un mensaje de correo electrónico ¿Cómo se que es realmente suyo y no de otra persona que trata de suplantarlo?

¿Recuerda que le mencioné que la PKC no era tan simple como había dicho? La idea es que cuando cifre un mensaje dirigido a mi, tiene que firmarlo con su clave privada para que, cuando lo reciba pueda usar su clave pública para verificar su firma y luego usar mi clave privada para descifrar el mensaje. Como puede ver, no podríamos hacer eso con la configuración descrita arriba.

También es muy importante firmar mensajes de modo que no tenga que cifrarlos antes. Ahora puede crear mensajes que puede leer cualquiera pero que vienen con su "marca". Y si se cambió algún carácter del mensaje, éste puede (y será) detectado.

Servidores de claves y claves firmadas
Pero digamos que no hemos tenido contacto previo hasta que me envía un mensaje. La pregunta es ¿Cómo obtengo su clave pública? y ¿Cómo sé que realmente es suya?

Para resolver este problema se crearon los Servidores de Claves. Cuando crea su par de claves (pública y privada), debería enviar su clave pública al servidor de claves. A partir de aquí cualquier persona puede recuperarla desde el servidor. Esto resuelve el problema de encontrar la clave. Pero ¿Cómo sé realmente que la clave corresponde a la clave del autor del mensaje? Para esto, se debe introducir otro concepto, y es el de firmado de claves:

Firmar una claves significa que, si tiene la clave pública de otra persona, y sabe con seguridad que realmente es la clave de esa persona (es su amigo personal, alguien que conoce en la vida real, etc.) puede firmar la clave pública y enviarla a los servidores de claves, de esa manera estará diciéndole al mundo: "Esta clave realmente pertenece a la persona que dice ser". Así, las personas que tengan su clave pública puede usar esa confianza para confiar en otras claves.

Esto algunas veces puede causar confusión, así que veamos una situación real.

Imaginemos una situación en que participan tres personas: Juan, María y Lisa. Juan es un buen amigo de María pero no conoce a Lisa; Lisa es buena amiga de María pero no conoce a Juan. Un día Lisa le envía a Juan un mensaje de correo electrónico firmado. Juan recuperará la clave pública de Lisa desde algún servidor de claves y chequea el mensaje, si todo marcha bien, verá que quien haya creado el mensaje también creó la clave. Pero, ¿Cómo sabe que es realmente la persona que dice ser?

Juan entonces ve que la clave está firmada por María, puede chequearlo porque ya tiene la clave de María y confía en esa clave. Con este llavero de confianza, Juan puede concluir que el correo que recibió realmente fue escrito por Lisa.

Ahora está listo para usar esta guía, puede volver al capítulo 1 y aprender a usar gpg.

Algunos problemas
He tenido algunos problemas con fotos en las claves. Verifique la versión que está usando. Si tiene la versión GnuPG 1.2.1-r1 o mayor probablemente no tenga problemas, puede tener problemas con versiones más antiguas. A muchos servidores de claves tampoco le gustan mucho las claves con fotos, por lo que es mejor no añadir fotos.

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

¿Qué no se ha incluido aquí?
La herramienta  es muy compleja, le permite hacer mucho más de lo cubierto aquí. Este documento está indicado para los nuevos usuarios de GnuPG. Para más información, deberá leer el sitio web de GnuPG.

No he escrito nada sobre otras herramientas como,  ,   o tal vez herramientas para Windows, pero probablemente extienda este documento en el futuro.

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