# Servidor de claves

En seguridad informática, un servidor de claves es un computador que recibe y posteriormente sirve claves criptográficas existentes a usuarios o a otros programas. Los programas de los usuarios pueden estarse ejecutando en la misma red que el servidor de claves, o bien, en otro computador de la red.
Las claves que distribuye el servidor de claves casi siempre se suministran como parte de un certificado de clave pública, protegido mediante cifrado, que contiene no solo la clave, sino información sobre la «entidad», o la parte propietaria de la clave. El certificado suele estar en un formato estándar, como el OpenPGP, el X.509 o el PKCS por mencionar algunos. Además, la clave casi siempre es pública para permitir su uso con un algoritmo de cifrado de claves asimétrico.

## Historia

Los servidores de claves desempeñan un papel importante en la criptografía asimétrica. En esta clase de criptografía, un individuo es capaz de generar un par de claves, una de las cuales permanece en privado mientras la otra se disemina públicamente. Conocer esta clave pública no compromete la seguridad de la criptografía asimétrica. Un individuo que posea la clave pública de un par de claves puede usarla para llevar a cabo operaciones cifradas que permitan comunicaciones secretas con una fuerte autenticación de quien posea la clave privada correspondiente. La necesidad de tener la clave pública de un par de claves para poder iniciar una comunicación o verificar firmas constituye un problema fundamental: localizar claves públicas en la web o pedirlas a otros individuos puede requerir mucho tiempo, además de ser un proceso inseguro. Los servidores de claves actúan como depósitos centrales para mitigar la necesidad de transmitir claves públicas de forma individual y pueden hacer las veces de raíz de una cadena de confianza.
El primer servidor de claves PGP para la web fue una creación de Marc Horowitz como parte de su tesis de grado del MIT. El servidor de Horowitz se llamaba HKP Keyserver, llamado así por el protocolo web para OpenPGP HTTP Keyserver Protocol (HKP, por sus siglas en inglés), y permitía la interacción de los usuarios con el servidor. Estos eran capaces de cargar, descargar y buscar claves tanto por HKP (en el puerto TCP 11371), como por páginas web que ejecutaban scripts CGI. Antes de la creación del HKP Keyserver, los servidores de claves recurrían a scripts de procesamiento de correos electrónicos para interactuar con ellos.

### Enterprise PGP

Un servidor de claves independiente, conocido como PGP Certificate Server, fue desarrollado por PGP, Inc. y se utilizó como el software (hasta la versión 2.5.x para el servidor) para el servidor de claves predeterminado en PGP hasta la versión 8.x (para el software cliente), keyserver.pgp.com. A Network Associates se le concedió una patente de la que es coautor Jon Callas (número de patente 6336186) sobre el concepto del servidor de claves.
Para reemplazar el ya anticuado Certificate Server, un servidor de claves basado en LDAP fue rediseñado en Network Associates en parte por Randy Harmon y Len Sassaman, con el nombre de PGP Keyserver 7. Con el lanzamiento de PGP 6.0, LDAP fue la interfaz de servidor de claves preferida para las versiones de PGP de Network Associates. Este servidor de claves LDAP y LDAPS (que también interoperaba con HKP por compatibilidad con versiones anteriores, aunque el protocolo se denominaba (podría decirse que correctamente) «HTTP» o «HTTPS») también constituyó la base de las herramientas de administración de PGP para servidores de claves privados en entornos corporativos, junto con un esquema para Netscape Directory Server.
PGP Keyserver 7 fue sustituido luego por el PGP Global Directory, lanzado en 2011 por la PGP Corporation, que permite la publicación y descarga de claves PGP mediante HTTPS o LDAP.

### OpenPGP

El mundillo OpenPGP utilizó en gran medida su propio desarrollo de software de servidor de claves independiente de la suite de PGP Corporation. El principal software utilizado hasta el ataque de spam de 2019 era «SKS» (sigla en inglés de Synchronizing Key Server), escrito por Yaron Minsky. El depósito público de SKS (formado por muchas instalaciones de SKS interconectadas) proporcionaba acceso a través de HKPS (HLP con TLS) y HTTPS. Finalmente se cerró en 2021 a raíz de una serie de medidas inducidas por el RGPD que no pudo procesar de forma eficaz.
Algunos otros depósitos basados en softwares distintos han aparecido a raíz del cierre del depósito de SKS; véase #Ejemplos de servidores de claves.

## Servidores de claves públicos frente a privados

Muchos servidores de claves de acceso público, situados en todo el mundo, son computadores que almacenan y proporcionan claves OpenPGP a través de Internet para los usuarios de ese criptosistema. En este caso, los computadores pueden ser, y son en su mayoría, gestionados por particulares como un servicio pro bono, facilitando el modelo de red de confianza que utiliza PGP.
Existen varios servidores de claves S/MIME de acceso público para publicar o recuperar certificados utilizados con el criptosistema S/MIME.
Existen asimismo múltiples sistemas, de licencia privativa, de infraestructura de clave pública que mantienen servidores de claves para sus usuarios; eotos pueden ser privados o públicos, y es probable que solo los usuarios participantes conozcan estos servidores de claves.

## Problemas de los servidores de claves
### Carencia de mecanismos de retractación

Los servidores de claves OpenPGP, desde su desarrollo en la década de 1990, adolecen de algunos problemas concretos. Una vez que se ha cargado una clave pública, es deliberadamente difícil quitarla, puesto que los servidores se sincronizan entre sí automáticamente (para evitar la censura gubernamental). Hay usuarios que dejan de usar sus claves públicas por varias razones, como el olvido de sus frases de contraseña o la pérdida o vulneración de sus claves privadas. En esos casos, aunque se lograra eliminar una clave pública del servidor, alguien más podría volver a cargar una copia nueva de la misma. Esto conduce a una acumulación de viejas claves públicas fósiles que nunca desaparecen en la práctica.
La falta de un mecanismo de retractación también incumplía el Reglamento General de Protección de Datos europeo, que se citó como motivo para el cierre del depósito común de SKS. Los servidores de claves PGP modernos permiten borrar claves. Dado que únicamente el propietario de la dirección de correo electrónico de una clave puede cargar una clave (véase la sección siguiente) en dichos servidores, la clave permanece borrada a menos que el propietario decida lo contrario.

### Falta de control de la propiedad

El servidor de claves tampoco tenía forma de comprobar si la clave era legítima (es decir, si pertenecía al verdadero propietario). Como consecuencia, cualquiera puede cargar una clave pública falsa en el servidor de claves, con el nombre de una persona que en realidad no es propietaria de esa clave, o incluso peor, utilizarla como vulnerabilidad para cometer, por ejemplo, un ataque de spam.$^{:§2.2}$
Los servidores de claves modernos, empezando por el PGP Global Directory, utilizan ahora la dirección de correo electrónico como validación. Este servidor de claves envía una solicitud de confirmación por correo electrónico al supuesto propietario de la clave, pidiéndole que confirme que la clave en cuestión es suya. Si lo confirma, el PGP Global Directory acepta la clave. La confirmación puede renovarse periódicamente, para evitar la acumulación de claves viejas. El resultado es una colección de claves públicas de mayor calidad, en la que cada clave ha sido verificada por correo electrónico con el respectivo propietario aparente. Sin embargo, surge otro problema: como PGP Global Directory permite el mantenimiento de cuentas de claves y verifica solamente por correo electrónico, no criptográficamente, cualquiera que tenga acceso a la cuenta de correo podría, por ejemplo, eliminar una clave y cargar una falsa.
El último borrador de la Grupo de Trabajo de Ingeniería de Internet para HKP también define una red distribuida de servidores de claves, basada en registros DNS SRV: para encontrar la clave de alguien@ejemplo.com, se puede pedir mediante la solicitud del servidor de claves de ejemplo.com.

### Filtración de relaciones interpersonales

Para muchas personas, el propósito de utilizar la criptografía es obtener un mayor nivel de privacidad en las interacciones y relaciones personales. Se ha señalado que permitir que una clave pública se cargue en un servidor de claves cuando se utilizan sistemas criptográficos descentralizados basados en redes de confianza, como PGP, puede revelar una buena cantidad de información que un individuo puede desear mantener en privado. Dado que PGP se basa en firmas sobre la clave pública de un individuo para determinar la autenticidad de esa clave, se pueden revelar posibles relaciones analizando a los firmantes de una clave determinada. De este modo, pueden desarrollarse modelos de redes sociales enteras. (La crítica de Mike Perry de 2013 a la red de confianza menciona que la cuestión ya se ha «debatido ampliamente»).
Varios servidores de claves modernos eliminan las firmas de terceros de la clave cargada. De este modo se eliminan todas las conexiones personales con la red de confianza y se evita cualquier filtración. El objetivo principal, sin embargo, era minimizar el espacio de almacenamiento necesario, ya que el «spam de firmas» puede sumar fácilmente varios megabytes a una clave.$^{:§2.1}$

## Ejemplos de servidores de claves

He aquí algunos servidores de claves usados a menudo para buscar claves con gpg --recv-keys. Se pueden consultar con https:// (HTTPS) o hkps:// (HKP sobre TLS) respectivamente.
* keys.openpgp.org
* keys.mailvelope.com/manage.html
* pgp.mit.edu
* keyring.debian.org (solamente contiene claves de miembros del proyecto Debian)
* keyserver.ubuntu.com (predeterminado en GnuPG a partir de la versión 2.3.2)
* pgp.surf.nl