GnuPG/es

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

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

Esta guía ofrece instrucciones a los usuarios de Gentoo sobre cómo instalar GnuPG, cómo crear un par de claves, cómo agregar claves a un anillo de claves, cómo enviar una clave pública a un servidor de claves y cómo firmar, cifrar y verificar o decodificar tanto los mensajes enviados como los recibidos. Los lectores también aprenderán a cifrar archivos para evitar que otros lean el contenido de los mensajes.

Otro software
En un nivel muy básico, se debe hacer emerge de GnuPG. Actualmente muchas aplicaciones ofrecen algún tipo de soporte para PGP por lo es una buena idea definir la variable USE. Si queremos un cliente de correo que pueda utilizar GnuPG contamos con las siguientes alternativas:
 * PinePGP.
 * Mutt . Un cliente de correo basado en texto pequeño pero muy potente.
 * Thunderbird . El cliente de correo de Mozilla.
 * Evolution . Un cliente similar a Microsoft Outlook de GNOME.
 * KMail . El cliente de correo de KDE.
 * Puede ser interesante instalar KGPG cuando se utiliza el entorno de escritorio KDE. Este pequeño programa permite la generación de pares de claves, importar claves desde ficheros ASCII, firmar las claves importadas y exportar claves entre otras ingeniosas características.

Crear una clave
To create a key, use the gpg --gen-key command. The first time it is run, it will create some directories essential to the correct operation and implementation of GnuPG; run it again to create the keys:

En este momento se puede 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 mayor sea la clave, mejor, pero no utilice un tamaño superior a 2048 con claves DSA/ElGamal. Normalmente 2048 es más que suficiente para comunicaciones normales a través del correo electrónico.

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 tienen una fecha de expiración de dos o tres años.

Ahora es el momento de introducir información personal sobre la clave del usuario. Cuando se envía la clave pública a otros usuarios, es importante escribir una dirección de correo electrónico (contrariamente a una dirección de correo electrónico falsa).

Ahora teclee una contraseña dos veces. Es una buena idea utilizar una contraseña fuerte. Si alguien consigue la clave privada y obtiene la contraseña, podrán suplantar al usuario enviando mensajes firmados en su nombre como si se tratara del usuario legítimo. El usuario malicioso podría engañar a los contactos víctima que creen que los mensajes los envía el usuario legítimo. Esto puede causar problemas muy serios.

A continucación, GnuPG generará una clave. Mover el ratón, navegar por la web o escuchar audio ayudará a acelerar el proceso ya que GnuPG generará datos aleatorios incrementando la seguridad del par de claves.

Generar un certificado de revocación
After creating the keys a revocation certificate should be created. Doing this allows the user to revoke the key in case something nasty happens (think of a malicious user gaining control of the key/passphrase).

The gpg --list-keys command lists keys in the public keyring. It may be used to see the ID of the key so that a revocation certificate can be created. It is a good idea to copy the entire directory and the revocation certificate (in ASCII armor - ) to some secure medium (a CD-R or a USB drive stored in a safe location). Remember that the file can be used to revoke the keys and make them unusable in the future.

Exportar claves
Para exportar una clave, teclee gpg --armor --output larry.asc --export larry@gentoo.org. Casi siempre podrá utilzar el ID de la clave o algo que la identifique (en este ejemplo hemos usado una dirección de correo electrónico). Larry tiene ahora un archivo que puede enviar a sus amigos, o poner en su sitio web para que otros se comuniquen con él de forma segura.

Importar claves
To add files to a public keyring the following steps should be taken:
 * 1) Import it the key;
 * 2) Check the key fingerprint;
 * 3) After verifying the fingerprint, validate it.

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 fpr. 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
Now that a key has been generated, it is probably a good idea to send it to a world key server. There are a lot of key servers in the world and most of them exchange keys. In this next example Larry the cow's key will be sent to the keys.gnupg.net server. Sending keys uses HTTP, so if a proxy is used for HTTP traffic do not forget to set it accordingly (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  is the key ID. If a HTTP proxy is not needed then the  option can be removed.

Sending other people's keys that Larry has signed signed to the key server is also a good idea. We could send Luis Pinto's key to the key server. This way someone who trusts Larry's key can use the signature that he has placed there to trust Luis's key.

Obtener claves desde los servidores de claves
Now we are going to search for Gustavo Felisberto's key and add it to the keyring of Larry the cow (just in case you did not notice Gustavo Felisberto is the author this guide :)).

From the server response it is possible to see few keys have been submitted to the key server, however only  is used. Now Larry the cow can get the key and sign it if he trusts it.

¿Qué es un Agente GPG?
Sometimes working with certain applications requires the use of a GPG key very frequently, which means that a passphrase must be frequently entered. In the past many applications supported a passphrase caching mechanism. This would make life easier for users because passphrases were automatically entered. However, this disallowed sharing this cache across programs (how secure would that be?) and forced applications to reinvent the wheel over and over again.

A GPG agent is a separate application that GPG uses to cache the passphrase in a standard and secure way. It allows applications to use GPG concurrently: if the passphrase is entered while working in one application, the other application can work with GPG without reiterating the request for the passphrase to unlock the key — if the GPG Agent is configured to allow so, of course.

Gentoo provides a few GPG agent applications. The package contains what could be considered the reference one, and will be the primary choice used in this article.

Configurar gpg-agent y pinentry
GnuPG includes gpg-agent. 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 ).

Si se instaló con más de un tipo de gestión de ventana, es posible elegir entre las ventanas utilizando la orden eselect-pinentry</tt>:

Now create a file called and enter the following lines which define the default timeout of the passphrase (e.g. 30 minutes) and the application to be called for when the passphrase should be retrieved the first time (e.g. the GTK+ version of Pinentry).

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

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

Iniciar automáticamente el agente GPG
If KDE is used as the desktop environment, edit the following (system-wide) or  (local user) file. Add the following command to the appropriate file to have KDE automatically starting the GPG Agent:

Additionally, uncomment the following lines in (system-wide) or add it to  (local user):

When using a desktop environment other than KDE, put that line (the same as mentioned above) in the file (if the startx</tt> command is used to invoke the GUI) or the  file (if XDM, GDM, KDM are used).

Cifrar y firmar
Supongamos que Larry tiene un archivo que quiere enviar a Luis. Larry puede cifrarlo, firmarlo, o cifrarlo y firmarlo. Cifrarlo significa que solo Luis podrá abrirlo. La firma le indica a Luis que el archivó realmente lo creó Larry.

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

Esto creará archivos binarios. Cuando se quieren crear archivos ASCII, únicamente se agrega una opción  al principio de la orden.

Descifrar y verificar firmas
Suppose that Larry has received a file which is encrypted to him. The command used to decrypt it is gpg --output document --decrypt encrypted_doc.gpg</tt>. This will decrypt the document and verify the signature (if there is one).

Cifrar y descifrar sin claves
It is possible to encrypt files using passwords instead of keys. The password itself will function as the key — it will be used as a symmetric cypher. The file can be encrypted using gpg --symmetric</tt>; decrypting uses the same command as mentioned previously.

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 modification made, any time GnuPG needs to check a signature and does not find the public key on the local keyring it will contact the key server at keys.gnupg.net in attempt to fetch the public key from from the server.

Another nice command is gpg --refresh-keys</tt>. This will contact the key server defined in the configuration file and refresh the public keys in the local key ring from there. It is capable of searching for revoked keys, new IDs, and new signatures on keys. It is a wise idea run this command once or twice a month; if a user revokes their key this can provide a notification the key can no longer be trusted.

Acerca de las firmas en los correos electrónicos
95% of the time GnuPG is used with email by signing/encrypting outgoing messages or reading signed/encrypted messages.

Hay dos formas de firmar o cifrar un correo electrónico con GnuPG, la antigua y nueva. 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:

Messages this way are not good in today's world, where there are nice GUIs and email readers that understand HTML.

To solve this an addition to the MIME (Multipurpose Internet Mail Extensions) was created. This adds a field to the email that tells the mail reader that the full content of the message is signed and/or encrypted. The problem with this is that not all mail readers support such features. Some even mess up the content (Microsoft's Outlook is famous for not working with this).

Kgpg
Kgpg is a wonderful GUI for GnuPG. The main screen provides an area to paste text to signed or encrypted, the reverse is also true; ASCII armored text to be decrypted can also be entered.

From within the main screen text decrypted (a password is needed), files encrypted, and pasted text can be signed.

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 órdenes.

KMail
If the  USE flag is set, KMail will be compiled with gpg support, and will be able to encrypt and decrypt inline PGP mails automatically as well as encrypting OpenPGP/MIME mails. To decrypt OpenPGP/MIME mails as well (most users want) a GPG agent must be running.

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

When unable to get KMail to behave, see the official KMail PGP page for more information.

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 a GPG key with Claws-Mail navigate to. Once there choose which key to use, most users should go with the default key.

Algunos problemas
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 key servers do not like keys with photos, so you are better if you don't add photos.

The latest versions of GnuPG do not seem to work with the gpg --send-keys</tt> that was used to send all keys in a keyring to the public server.

¿Qué no se ha incluido aquí?
La herramienta gpg</tt> es muy compleja, permite al usuario hacer mucho más de lo que se ha cubierto aquí. Este documento está indicado para usuarios novatos en GnuPG. Para más información, eche un vistazo al sitio web oficial de GnuPG.

Este artículo no cubre herramientas como pgp4pine</tt>, gpgpine</tt>, evolution</tt> ni herramientas GPG para Windows.

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.