Capítulo 13. Iniciándose con GnuPG

Presentando GnuPG

Al preguntarse si el correo está libre de espias, es fácil pensar que el destinatario leerá el correo pero también es asumible pensar que el correo puede ser interceptado y modificado por extraños.

En "correo postal" tradicional, se cierra el sobre, se franque y se envía desde la oficina de correos desde donde va a su destino. Pero enviar correo vía Internet no es tan seguro; el correo electrónico se transmite como texto de servidor en en servidor. No se procede a proteger la correspondencia de ojos ávidos o comportamientos maliciosos.

Para proteger la privacidad, Red Hat Linux 6.2 incorpora GnuPG, GNU Privacy Guard, que se instala por defecto en Red Hat Linux.

GnuPG es una herramienta para comunicaciones seguras; es un sustituto completo y libre para la tecnología de encriptación PGP (Pretty Good Privacy, aplicación muy popular de encriptación). Con GnuPG, se puede encriptar datos y correspondencia, y autenticar el correo al firmarlo digitalmente. GnuPG también es capaz de desencriptar y verificar PGP 5.x.

Al ser GnuPG compatible con otros estándares de encriptación, la correspondencia segura será, probablemente, compatible con tecnologías de otras plataformas, como Windows y MacOS.

GnuPG utiliza criptrografía de clave pública para proporcionar intercambio seguro de datos. En un esqueme de clave pública, se generan dos claves: una clave pública y una clave privada. Se intercambia la pública con otros o un servidor de claves; nunca debe revelarse la clave privada.

La encriptación depende del uso de claves (véanse como anillos codificadores/decodificadores en formato de datos). En criptografía convencional o simétrica, en ámbos extremos se usa la misma clave, que se usa para decodificar. En criptografía de clave pública, coexisten dos claves: una pública y otra privada. Una persona u organización mantiene su clave privada en secreto, y publica la clave pública. Los datos codificados con la clave pública sólo pueden ser decodificados con la clave privada; los datos codificados con la clave privada sólo pueden ser decodificados con la clave pública.

SugerenciaMás información desde la shell
 

Como la mayoría de herramientas en Red Hat Linux, hay documentación de GPG en las páginas info y las de manual. Desde la shell, basta teclear man gpg o info gpg para ver apuntes sobre comandos GPG y opciones.

La criptografía está fuera del alcance de este documento; hay otros libros para aprender sobre ella. En este capítulo, sin embargo, se tratará de que se comprenda lo suficiente GnuPG para empezar a usar criptografía en el correo. Para saber más sobre GnuPG, incluyendo una guía online, visítese http://www.gnupg.org/. Si se quiere aprender más sobre GPG, PGP y tecnología de encriptación, váyase a las referencias de la sección de nombre Más información.

Hay varios interfaces gráficos para GnuPG, como SeaHorse, incluído con Red Hat Linux 7.0. Sin embargo, muchas tareas de GnuPG se ejecutan rápidamente desde la shell. Ese es el objetivo del capítulo.

Generando una pareja de Claves

Para empezar a usar GnuPG, debe primero generarse una nueva pareja de claves -- eso es, clave pública y privada.

Aunque ya se ha visto como se genera una pareja de claves (véase la sección de nombre Generar un nueva keypair en Capítulo 12), aquí hay un rápido resumen de los pasos necesarios.

Para generar una pareja de claves, ábrase un Xterm (o terminal) y, en la shell, teclear

gpg --gen-key
		  

Se deberá escoger entre algunas opciones, como que tipo de clave se quiere crear y la longitud de la clave. Hay opciones por defecto disponibles, que se pueden escoger pulsando simplemente Enter. A menos que se tenga una razón para no hacerlo, lo mejor es escoger las opciones por defecto.

Introduzcase un ID, con el nombre, dirección de correo y un comentario, opcional. Luego, una fraseseña que, como la contraseña de las cuentas, debe ser única y asegurar que nadie podrá averiguarla. Una fraseseña puede ser una palabra única o una frase que se teclea al ser pedida y que identifica al dueño de la pareja de claves. Por supuesto, lo que se escoja, hay que asegurarse de que se recordará

ImportanteUn apunte
 

La criptografía de clave pública es potente, pero no invulnerable. Uno de los aspectos débiles es la vulnerabilidad de las fraseseñas o contraseñas. Escoger una fraseseña que sea la fecha de nacimiento o una dirección relacionada no es buena idea. Escojase algo fuera de lo ordinario, mezclando letras y números. Para la fraseseña, se debe ser tan cuidadoso como con la contraseña de la cuenta.

Tras crear la clave pública y la privada, estas estarán en el directorio .gnupg. Para ver las claves, tecléese gpg --list-keys. Se verá la nueva clave, con un aspecto como este:

[newuser@localhost newuser]$ gpg --list-keys
/home/newuser/.gnupg/pubring.gpg
-----------------------------------------
pub  1024D/B7085C8A 2000-04-18 Your Name <you@yourisp.net>
sub  1024g/E12AF9C4 2000-04-18
	

Generar un Certificado de Revocación

Una vez creada la pareja de claves, hay que crear un certificado de revocación para la clave pública. Si se olvida la fraseseña, o si es descubierta, se puede publicar este certificado para informar que la clave pública no debe ser usada.

NotaRevocar una clave recien creada
 

Al generar un certificado de revocación, no se está revocando la clave recién creada. En su lugar, se está creado una salvaguarda para prevenir el uso público de la clave. Si se crea una clave, se olvida la fraseseña, se cambia de PSI (dirección de correo), o muere el disco duro. Entonces, en certificado de revocación es útil para descalificar el uso de la clave pública.

La firma será válida para otros que leen el correo hasta que la clave sea revocada, y se podrá desencriptar mensajes recibidos antes de la revocación. Para generar el certificado de recovación, úsese la opción --gen-revoke.

[newuser@localhost newuser]$ gpg --output revoke.asc --gen-revoke  <you@yourisp.net>
	

Nótese que si se omite --output revoke.asc en el ejemplo, el certificado de revocación saldrá por la "salida estándar," que suele ser la pantalla. Aunque se puede copiar y pegar el contenido a un archivo utilizando un editor de texto, como Pico, es seguro más fácil enviar la salida a un archivo del directorio de login. Así, se tiene el certificado a mano para su uso, o ponerlo en un disquette y guardarlo en algún lugar seguro.

La transacción para crear un certificado es como sigue:

[newuser@localhost newuser]$ gpg --output revoke.asc --gen-revoke  <you@yourisp.net>

sec  1024D/823D25A9 2000-04-26  Your Name <you@yourisp.net>

Create a revocation certificate for this key? y
                                               
You need a passphrase to unlock the secret key for
user: "Your Name <you@yourisp.net>"
1024-bit DSA key, ID 823D25A9, created 2000-04-26

ASCII armored output forced.
Revocation certificate created.

	

Una vez creado el certificado de revocación (revoke.asc), se pondrá en el directorio de login. Hay que asegurarse de el archivo está a salvo, así que lo mejor es copiarlo a un disquette y guardarlo en un lugar seguro. (Si no se sabe como copiar a un disquette en Red Hat Linux, véase la sección de nombre Uso de Disquetes en Capítulo 17.)

Exportar la clave pública

Antes de usar la criptografía de clave pública, los demás deben tener una copia de la clave pública. Para enviar la clave a otros, o a un servidor de contraseñas, hay que exportar la clave.

Para exportar la clave, de forma que se pueda ver en una página de web o enviar por correo, tecléese:

[newuser@localhost newuser]$ gpg --armor --export <you@yourisp.net> > mykey.asc
[newuser@localhost newuser]$
	  

No se verá nada, porque no sólo se exporto la clave, se redireccionó a un archivo llamado, por ejemplo, mykey.asc. (Sin poner > mykey.asc, la clave habría sido mostrada en la salida estándar -- en la pantalla del monitor.)

Ahora, el archivo mykey.asc puede ser puesto en el correo o exportado a un servidor de claves. Para ver la clave, tecléese less mykey.asc para ver el archivo (pulsar Q para salir). Debería parecer algo como lo siguiente:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org

mQGiBDkHP3URBACkWGsYh43pkXU9wj/X1G67K8/DSrl85r7dNtHNfLL/ewil10k2
q8saWJn26QZPsDVqdUJMOdHfJ6kQTAt9NzQbgcVrxLYNfgeBsvkHF/POtnYcZRgL
tZ6syBBWs8JB4xt5V09iJSGAMPUQE8Jpdn2aRXPApdoDw179LM8Rq6r+gwCg5ZZa
pGNlkgFu24WM5wC1zg4QTbMD/3MJCSxfL99Ek5HXcB3yhj+o0LmIrGAVBgoWdrRd
BIGjQQFhV1NSwC8YhN/4nGHWpaTxgEtnb4CI1wI/G3DK9olYMyRJinkGJ6XYfP3b
cCQmqATDF5ugIAmdditnw7deXqn/eavaMxRXJM/RQSgJJyVpbAO2OqKe6L6Inb5H
kjcZA/9obTm499dDMRQ/CNR92fA5pr0zriy/ziLUow+cqI59nt+bEb9nY1mfmUN6
SW0jCH+pIQH5lerV+EookyOyq3ocUdjeRYF/d2jl9xmeSyL2H3tDvnuE6vgqFU/N
sdvby4B2Iku7S/h06W6GPQAe+pzdyX9vS+Pnf8osu7W3j60WprQkUGF1bCBHYWxs
YWdoZXIgPHBhdWxnYWxsQHJlZGhhdC5jb20+iFYEExECABYFAjkHP3UECwoEAwMV
AwIDFgIBAheAAAoJEJECmvGCPSWpMjQAoNF2zvRgdR/8or9pBhu95zeSnkb7AKCm
/uXVS0a5KoN7J61/1vEwx11poLkBDQQ5Bz+MEAQA8ztcWRJjW8cHCgLaE402jyqQ
37gDT/n4VS66nU+YItzDFScVmgMuFRzhibLblfO9TpZzxEbSF3T6p9hLLnHCQ1bD
HRsKfh0eJYMMqB3+HyUpNeqCMEEd9AnWD9P4rQtO7Pes38sV0lX0OSvsTyMG9wEB
vSNZk+Rl+phA55r1s8cAAwUEAJjqazvk0bgFrw1OGO9m7fEeDlvPSV6HSA0fvz4w
c7ckfpuxg/URQNf3TJA00Acprk8Gg8J2CtebAyR/sP5IsrK5l1luGdk+l0M85FpT
/cen2OdJtToAF/6fGnIkeCeP1O5aWTbDgdAUHBRykpdWU3GJ7NS6923fVg5khQWg
uwrAiEYEGBECAAYFAjkHP4wACgkQkQKa8YI9JamliwCfXox/HjlorMKnQRJkeBcZ
iLyPH1QAoI33Ft/0HBqLtqdtP4vWYQRbibjW
=BMEc
-----END PGP PUBLIC KEY BLOCK-----
	

Exportar a un servidor de claves

Si se escribe con poca gente, se puede exportar la clave y enviarsela personalmente. Si son muchos, sin embargo, la distribución de la clave puede llevar tiempo. Es cuando los servidores de claves son útiles.

Figura 13-1. El portal de Keyserver.Net

Un servidor de claves es un repositorio en Internet que almacena y distribuye claves públicas a quienes las piden. Hay muchos servidores disponibles, tratando de mantenerse sincronizados entre ellos; enviar la clave a un servidor es como enviarla a todos. Todo lo que tiene que hacer uno, es pedir la clave a un servidor, importar la clave a su keyring, y ya está (un keyring es un archivo donde se mantienen claves públicas y privadas).

SugerenciaEscoger un servidor de claves
 

Al tratar de estar sincronizados los servidores, enviar la clave pública a un servidor es como enviarlo a todos. Se puede, sin embargo, localizar distintos servidores. Un lugar para empezar a buscar servidores e inforamción es Keyserver.Net, en http://www.keyserver.net; otro sitio es Robert's Crypto & PGP Links: Keyservers, en http://crypto.yashy.com/www/Keyservers/

Se puede enviar la clave pública desde la shell o desde un navegador (como es Figura 13-1); por supuesto, hay que estar conectado a Internet para enviar o recibir claves de/al servidor.

  • Desde la shell, tecléese:

    gpg --keyserver search.keyserver.net --send-key you@yourisp.net
    	      
  • Desde el navegado, váyase a Keyserver.Net (http://www.keyserver.net) y selecciónese la opción de añadir clave pública PGP.

    Lo siguiente es copiar y pegar la clave pública en el lugar apropiado del portal. Así:

    • ábrase el archivo de la clave (uno como mykey.asc, que se creó la sección de nombre Exportar la clave pública) con un paginador -- por ejemplo, less mykey.asc

    • Usando el ratón, cópiese el archivo seleccionando líneas desde BEGIN PGP a END PGP (véase Figura 13-2)

    • Pégar el contenido de mykey.asc en el área apropiada de Keyserver.Net pulsando el botón de en medio del ratón (o izquierdo y derecho si se usa un ratón de dos botones). Púlsese el botón Submit de la página del servidor. (Si se comete un error, púlsese el botón Reset de la página para borrar la clave pegada.)

Figura 13-2. Copiar la clave pública

Nótese que si se transmite la clave a otro servidor vía web, la transacción será básicamente la misma.

Así es. Ya se use la shell o la web, se verá un mensaje de que la clave se transmitió con éxito -- desde la Xterm o en el portal. Ahora, los que quieran comunicarse pueden importar la clave pública y añadirla a su keyring.

Importar una clave pública

También hay que importar la clave de otros que es tan sencillo como importarla. Cuando se importa la clave pública de alguien, se puede desencriptar su correo y comprobar su firma digital con la del keyring.

Una de las formas más fáciles de importar la clave es bajar la clave desde un portal (como al guardar la clave de Red Hat, por ejemplo, en la sección de nombre Importar llaves en Capítulo 12).

Tras descargar una clave, úsese el comando --import para adjuntarla al keyring.

Otro metodo de guardar una clave es usar es utilizar la característica Save As del navegador. Si se usa Navigator, y se localiza una clave en un servidor, se puede guardar la página como texto (váyase a File => Save As). En la lista desplegable junto a Format for saved document, escoja Text. Así, se puede importar -- siempre que se recuerde el nombre con el se guardó. Por ejemplo, digamos que se acaba de guardar una clave como un archivo de texto, llamado newkey.txt. Para importar el archivo, teclear desde la shell:

[newuser@localhost newuser]$ gpg --import newkey.txt
gpg: key F78FFE84: public key imported
gpg: Total number processed: 1
gpg:               imported: 1
[newuser@localhost newuser]$
	  

Para comprobar que todo ha salido bien, úsese --list-keys desde la shell, como en gpg --list-keys; debería verse la clave importada en el listado del keyring.

Firmas digitales

Las firmas digitales son como las firmas -- o sellos -- se pueden poner en un documento como el correo.

A diferencia del correo tradicional, en que es posible alterar la firma escrita, las firmas digitales no pueden ser modificadas. Es así porque la firma se ha creado con una única clave secreta, y puede ser verificada por el receptor utilizando la clave pública.

Una firma digital poner marca temporal a un documento; en esencia, eso implica que la hora a la que se firmó el documento se vuelve parte de la firma. Así que si alguien trata de modificar el documento, la comprobación de la firma fallará. Algunas aplicaciones de correo electrónico como Exmh o KMail de KDE, incorporan la capacidad de firmar documentos con GnuPG desde el interfaz de la aplicación.

Hay dos tipos útiles de firmas digitales, documentos de firma en claro y firma separada. ámbos tipos de firma incorporan la misma seguridad de autenticidad, sin requerir que el receptor desencripte el mensaje entero.

En un mensaje de firma en claro, la firma aparece como un bloque de texto en el contexto del mensaje; en uno de firma separada la firma es enviada en un archivo distinto al del mensaje (eso es, separada del mensaje).

Más información

Hay mucho más sobre tecnología de encriptación de lo que puede cubrirse en esta breve introducción a GPG. Aquí hay más recursos que permiten aprender más:

  • Portales:

  • Libros:

    • The Official PGP User's Guide, Philip R. Zimmermann; MIT Press, 1995

    • PGP: Pretty Good Privacy, Simson Garfinkel; O'Reilly & Associates, 1994

    • E-Mail Security: How to Keep Your Electronic Messages Private, Bruce Schneier; John Wiley & Sons, 1995