15 abril 2009

Firma digital

Hace no mucho dediqué una entrada a describir cierta situación en la que, sin comerlo ni beberlo, me había visto sumida últimamente en relación a diversos intentos de robo de mi dirección de correo electrónico en Google Mail. Desgraciadamente, la situación no sólo no ha mejorado demasiado desde entonces, sino que incluso parece ir empeorando con la aparición de más tocayas latinoamericanas (esta vez, de Argentina) que comparten el hobby de incluirme entre los "CC" de sus cadenas de correos, de manera que he acabado conociendo detalles sobre mudanzas personales, costes estimativos de presupuestos empresariales internos y todo tipo de citas. Ni qué decir tiene que he sido repetidamente invitada a Facebook por sus amistades, recibido fotos de sus últimas fiestas y un largo etcétera tan ridículo como surrealista. Qué le vamos a hacer, me ha caído en desgracia un nombre común en una era de globalización.

Como quiera que aunque mis peticiones (a veces amables, a veces tajantes y enérgicas) parecen surgir efecto, al cabo de cierto tiempo surge una nueva homónima que inicia un nuevo ciclo, he desistido de encontrar una solución definitiva al problema que no pase por cambiarme de nombre. Y para asegurarme de que quienes me conocen pueden estar seguros de que se comunican conmigo y no con alguno de mis "clones" en la red, he decidido utilizar la firma digital en todos mis correos electrónicos personales a partir de ahora.

Crear una clave personal para firma digital de uso propio es de lo más sencillo. Yo tengo la mía ya desde hace años, y la uso regularmente, aunque fundamentalmente en mi entorno laboral. En cualquier distribución Linux, la disponibilidad de las utilidades GPG (que en las versiones más recientes ya vienen instaladas por defecto) y el dominio de unas sencillas órdenes nos permiten en un momento crear y publicar nuestra propia firma, e incluso actualizarla o revocarla llegado el caso.

Así pues, para crear una clave para firma digital, debemos ejecutar:

gpg --gen-key

e indicar al asistente que queremos una clave DSA & ElGamal (es decir, generada utilizando un algoritmo de encriptación específico), un tamaño entre 1024 y 4096 bits (la opción recomendada por defecto son 2048 bits) y su caducidad (que puede ser de días o semanas hasta meses o años, e incluso infinita). Finalmente asociaremos nuestro nombre y apellidos a la clave, la dirección de correo electrónico deseada, y protegeremos la clave con una contraseña segura (que será necesaria posteriormente, cada vez que queramos emplear la clave para firmar digitalmente un contenido):

Por favor seleccione tipo de clave deseado:
(1) DSA y ElGamal (por defecto)
(2) DSA (sólo firmar)
(5) RSA (sólo firmar)
Su elección: 1

El par de claves DSA tendrá 1024 bits.
las claves ELG-E pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (2048)
El tamaño requerido es de 2048 bits

Por favor, especifique el período de validez de la clave.
0 = la clave nunca caduca
<n> = la clave caduca en n días
<n>w = la clave caduca en n semanas
<n>m = la clave caduca en n meses
<n>y = la clave caduca en n años
¿Validez de la clave (0)? 1y
La clave caduca jue 15 abr 2010 11:26:14 CEST
¿Es correcto? (s/n) s

Necesita un identificador de usuario para identificar su clave.
Nombre y apellidos: Pepito Grillo
Dirección de correo electrónico: grillito.pepito[=]gmail.com
Comentario: Firma digital
Ha seleccionado este ID de usuario:
"Pepito Grillo (Firma digital) "
¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V

Necesita una frase contraseña para proteger su clave secreta.

gpg: clave XXXXXXXX marcada como de confianza absoluta
claves pública y secreta creadas y firmadas.

Como paso previo a la publicación final de nuestra firma, necesitaremos "firmarla" a su vez. Para ello teclearemos:

gpg --sign-key 0xXXXXXXXX

donde 0xXXXXXXXX es el identificador de clave generado tras el primer paso. Para terminar, enviaremos la firma a un servidor de claves público, lo que servirá para que todo el mundo prueda comprobar la autenticidad de contenidos que hayamos firmado. Hay muchos servidores de claves, pero pgp.mit.edu o pgp.rediris.es son un par de ellos que podemos usar:

gpg --keyserver pgp.rediris.es --send OxXXXXXXXX

Realizar una búsqueda en el servidor al que hayamos enviado la clave nos servirá para comprobar que hemos completado el proceso satisfactoriamente. A mayores, podemos solicitar a personas de nuestra confianza que corroboren la validez de nuestra firma, firmándola a su vez y enviando su garantía al propio servidor. Cuanto más respaldo tenga una firma pública, con más confianza será vista por quienes no nos conozcan. Para firmar una clave ajena debemos descargarla, firmarla y volver a enviarla al servidor:

gpg --recv-key 0xZZZZZZZZ
gpg --sign-key 0xZZZZZZZZ
gpg --send-key 0xZZZZZZZZ

Si en algún momento la integridad de nuestra firma se viese comprometida, o si dejásemos de utilizar la cuenta de correo asociada, o simplemente, por la razón que sea, quisiésemos invalidar la firma:

gpg --output revoke.asc --gen-revoke 0xXXXXXXXX
gpg --import revoke.asc
gpg --send-key 0xXXXXXXXX

Por supuesto, hay interfaces mucho más amigables que la línea de comandos para todas estas tareas, aunque son las mismas las órdenes que se ejecutan a través de ellas.

No hay comentarios:

Publicar un comentario