Distribución de claves

Lo ideal sería que pudiéramos distribuir nuestra clave entregándosela en persona a nuestros corresponsales. Sin embargo, en la práctica las claves se distribuyen a menudo por correo electrónico o algún otro medio de comunicación electrónica. La distribución por correo electrónico es una buena práctica sólo cuando tengamos unos pocos corresponsales, e incluso si tuviéramos muchos corresponsales, podríamos usar un medio alternativo como puede ser publicar nuestra clave pública en nuestra página en internet. Sin embargo, esto es inútil si las personas que necesitan nuestra clave pública no saben dónde encontrar nuestra página.

Para solventar este problema existen los servidores de claves públicas, que recolectan y distribuyen las claves públicas. Cuando un servidor recibe una clave pública, bien la añade a la base de datos o bien la fusiona con una copia de la clave. Cuando alguien requiere al servidor una clave pública, éste la busca en la base de datos, y si la encuentra, la envía a quien se la haya solicitado.

Los servidores de claves también son útiles cuando hay muchas personas que firman las claves de otras con frecuencia. Sin un servidor de claves, cuando Arancha firma la clave de Javier, debería enviar a ésta una copia de la clave firmada por él, de manera que Javier pudiera añadir la clave firmada a su anillo de claves así como distribuirla a todos sus corresponsales. Mediante este proceso Javier y Arancha sirven a la totalidad de la comunidad construyendo lazos en forma de anillos de confianza, o lo que es lo mismo, mejorando la seguridad de PGP. De todos modos esto es una molestia si se firman las claves con frecuencia.

El uso de un servidor de claves facilita este proceso. Después de firmar la clave de Javier, Arancha puede enviar la copia firmada por él al servidor de claves. El servidor de claves añade la firma de Arancha a la copia que ya posee de Javier. Las personas que estén interesadas en actualizar su copia de la clave de Javier, consultan al servidor por propia iniciativa para obtener la clave actualizada. Javier no necesita distribuir la clave, y puede obtener las firmas en su clave requiriéndolas al servidor.

Se pueden enviar una o más claves usando la opción de la línea de órdenes --send-keys. Esta opción toma uno o más especificadores de claves, y envía las claves especificadas al servidor de claves. El servidor al que se envían las claves es especifica con la opción de la línea de órdenes --keyserver. Paralelamente, la opción --recv-keys se usa para obtener claves desde un servidor de claves, pero la opción --recv-keys requiere el uso de un identificador de claves para poder especificar la clave deseada. En el siguiente ejemplo Javier envía su clave pública al servidor de claves certserver.pgp.com, y a continuación actualiza su copia de la clave de Arancha desde el mismo servidor.

javier:~$ gpg --keyserver certserver.pgp.com
--recv-key D58711B7
gpg: requesting key D58711B7 from certserver.pgp.com ...
gpg: key D58711B7: 1 new signature

gpg: Total number processed: 1
gpg:         new signatures: 1
javier:~$ gpg --keyserver certserver.pgp.com
--send-key arancha@nav.es
gpg: success sending to 'certserver.pgp.com' (status=200)
Existen varios servidores de claves en funcionamiento en todo el mundo. Los servidores más importantes están sincronizados, de modo que es posible elegir un servidor de claves cercano a nosotros en Internet, y usarlo de forma regular para enviar y recibir claves.