GnuPG es una herramienta de seguridad en comunicaciones electrónicas. Este capítulo es una guía rápida que cubre las funciones básicas de GnuPG. Estas funciones incluyen generar un par de claves, intercambiar y comprobar la autenticidad de claves, cifrar y descifrar documentos, y firmar documentos y verificar firmas digitales. En este capítulo no se detallan los conceptos de la criptografía de clave pública, cifrado, y firmas digitales. Todo esto se cubrirá en detalle en el Capítulo 2. Tampoco se explica el uso avanzado the GnuPG. Esto se explica en los Capítulos 3 y 4.
GnuPG utiliza criptografía de clave pública para que los usuarios puedan comunicarse de un modo seguro. En un sistema de claves públicas cada usuario posee un par de claves, compuesto por una clave privada y una clave pública. Cada usuario debe mantener su clave privada secreta; no debe ser revelada nunca. La clave pública se puede entregar a cualquier persona con la que el usuario desee comunicarse. GnuPG implementa un esquema algo más sofisticado en el que un usuario tiene un par de claves primario, y ninguno o más de un par de claves adicionales subordinadas[1]. Los pares de claves primarios y subordinados se encuentran agrupados para facilitar la gestión de claves, y el grupo puede ser considerado como un sólo par de claves.
La opción de la línea de órdenes --gen-key
se usa para generar un nuevo par de claves primario.
javier:~$ gpg --gen-key gpg (GnuPG) 0.9.8; Copyright (C) 1999 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. Please select what kind of key you want: (1) DSA and ElGamal (default) (2) DSA (sign only) (4) ElGamal (sign and encrypt) Your selection?GnuPG es capaz de crear varios tipos diferentes de pares de claves, pero debe existir una clave primaria capaz de generar firmas. Por lo tanto, existen sólo tres opciones. La opción 1 genera dos pares de claves. Un par de claves DSA que es el par de claves primario que se usará sólo para firmar. Un par de claves subordinadas ElGamal que se usará para el cifrado. La opción 2 es parecida a la anterior, pero sólo genera un par de claves DSA. La opción 4[2] genera un único par de claves ElGamal, que se usará tanto para firmar como para cifrar. En todos los casos existe la posibilidad de añadir subclaves adicionales para cifrar y firmar «a posteriori». La mayoría de los usuarios tienen suficiente con la opción por definición.
También hay que escoger un tamaño para la clave. El tamaño de una clave DSA debe estar entre los 512 y 1024 bits, y una clave ElGamal puede ser de cualquier tamaño. Sin embargo, GnuPG requiere que las claves no sean menores de 768 bits. Por tanto, si se escogió la opción 1 y también un tamaño de claves mayor de 1024 bits, la clave ElGamal tendrá el tamaño deseado pero la DSA se limitará a 1024 bits.
DSA keypair will have 1024 bits. About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is 1024 bits highest suggested keysize is 2048 bits What keysize do you want? (1024)Cuanto más larga sea la clave, más segura será contra ataques de «fuerza bruta», pero por lo demás el tamaño de la clave que se da por definición es el adecuado, ya que sería más barato circunvalar el cifrado que intentar entrar mediante ataques de fuerza. Además, el cifrado y descifrado de mensajes se ralentizaría a medida que se incrementara el tamaño de la clave, y un tamaño de clave más grande podría afectar a la longitud de la firma digital. Una vez seleccionado, el tamaño de una clave no se puede cambiar nunca.
Para terminar, hay que escoger un fecha de caducidad. Si se escogió anteriormente la opción 1, la fecha de caducidad se usará para sendos pares de claves, ElGamal y DSA.
Requested keysize is 1024 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct (y/n)?Para la mayoría de los usuarios, una clave sin fecha de caducidad es la adecuada. Sin embargo, si se escoge con fecha de caducidad, el tiempo para ésta debe ser escogido con cuidado, ya que, aunque es posible cambiar la fecha de caducidad posteriormente a la generación de la clave, puede ser difícil comunicar un cambio a aquellos usuarios que posean esta clave pública.
Además de los parámetros de la clave, el usuario debe dar un identificador. El identificador de usuario se usa para asociar la clave que se está creando con una usuario real.
You need a User-ID to identify your key; the software constructs the user id from Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Real name: Email address: Comment:Sólo se creará un identificador de usuario al generar una clave, pero es posible crear identificadores adicionales si se desea usar la clave en dos o más contextos, v.g., si se usa por una parte en la oficina como empleado y por otra parte en casa como activista político. Hay que tener cuidado al crear un identificador de usuario, ya que después éste no puede ser editado para introducir cambios.
Aunque los caracteres especiales en iso-8859-1 son aceptados, GnuPG nos avisa si los usamos para rellenar estos campos[3]. Por ejemplo, si rellenáramos los campos con los siguientes datos,
Real name: Javier
Email address: javier@mad.es
Comment: Páramo S.L.
You are using the `iso-8859-1' character set. You selected this USER-ID: "Javier (Paramo S.L.) <javier@casa.es>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?Aún así, dependiendo de la versión que estemos usando, al listar las claves veremos una serie de carácteres extraños en lugar de vocales acentuadas, ñ, ç, etc...
GnuPG necesita una contraseña con el fin de proteger las claves privadas, primarias y secundarias, que posea el usuario[4].
You need a Passphrase to protect your private key. Enter passphrase:No hay límite para la longitud de una contraseña, y ésta debe ser escogida con sumo cuidado. Desde un punto de vista de seguridad, la contraseña que desbloquea la clave privada es uno de los puntos más débiles en GnuPG (y en otros sistemas de cifrado de clave pública), ya que es la única protección que tiene el usuario si alguien se apoderara de su clave privada. Para una contraseña lo ideal es que no se usen palabras de un diccionario, y que se mezclen mayúsculas y minúsculas, dígitos, y otros caracteres. Una buena contraseña es crucial para el uso seguro de GnuPG.
Repeat passphrase:Como antes con los campos de identificación del usuario, las contraseñas aceptan caracteres especiales de iso-8859-1. No obstante, debemos tener en cuenta que si alguna vez tuviéramos que usar nuestra contraseña desde una máquina con un teclado distinto al nuestro, nos veríamos imposibilitados a menos que cambiáramos la configuración del sistema.
Después de haber generado un par de claves, el usuario debe, de forma
inmediata, generar un certificado de revocación para la clave pública
primaria, mediante el uso de la opción
--gen-revoke
.
Si el usuario olvidara la contraseña, o si su clave privada estuviera en
peligro o extraviada, este certificado de revocación podría ser hecho público
para notificar a otros usuarios que la clave pública no debe ser usada nunca
más.
Una clave pública revocada puede ser usada para verificar firmas hechas por
el usuario en el pasado, pero no puede ser usada para cifrar datos.
Esto tampoco afecta a la capacidad de descifrar mensajes que hayan sido
cifrados con la clave antes de su revocación, siempre y cuando el usuario
todavía tenga acceso a la clave privada.
javier:~$ gpg --output D58711B7.asc --gen-revoke 0xD58711B7 sec 1024D/D58711B7 1999-09-24 Javier (Paramo S.L.) <javier@casa.es>El argumento miclave debe ser un especificador de clave, ya sea éste el identificador de clave ("key ID") del par primario del usuario, o ya sea cualquier otra parte de un identificador de usuario ("user ID") que identifique el par de claves del susodicho usuario. El certificado que se genere se encontrará en el fichero revoke.asc. Si se omite la opción
--output
, el resultado se pondrá en
la salida típica.
Dado que el certificado es corto, es posible que el usuario desee imprimir
una copia en papel del certificado para guardarla en algún sitio seguro, como
por ejemplo una caja fuerte de seguridad.
El certificado no debería ser guardado en lugares a los que otros puedan
tener acceso, ya que cualquiera podría hacer público el certificado de
revocación e inutilizar la correspondiente clave pública.[1] | N. de T. En este y otros documentos se intercambia el término «claves subordinadas» con el de «subclaves» |
[2] | La opción 3 es para generar un par de claves ElGamal que no puede ser usado para firmar. |
[3] | Se aceptan excepto en la dirección de correo electrónico. En el resto pueden dar problemas, así que se recomienda no usarlos. |
[4] | N. de T. Esta contraseña adopta la forma de una «frase» ("passphrase"), no de una sola «palabra» ("password"). |