En seguridad informática, un servidor de claves es un ordenador que recibe y luego entrega claves criptográficas existentes a usuarios u otros programas. Los programas de los usuarios pueden estar ejecutándose en la misma red que el servidor de claves o en otro ordenador en red.
Las claves distribuidas por el servidor de claves casi siempre se proporcionan como parte de certificados de clave pública protegidos criptográficamente que contienen no solo la clave, sino también información de la "entidad" sobre el propietario de la clave. El certificado suele tener un formato estándar, como el formato de clave pública OpenPGP, el formato de certificado X.509 o el formato PKCS. Además, la clave es casi siempre una clave pública para su uso con un algoritmo de cifrado de clave asimétrica.
Los servidores de claves desempeñan un papel importante en la criptografía de clave pública . En la criptografía de clave pública, un individuo puede generar un par de claves , donde una de las claves se mantiene privada mientras que la otra se distribuye públicamente. El conocimiento de la clave pública no compromete la seguridad de la criptografía de clave pública. Un individuo que posee la clave pública de un par de claves puede usar esa clave para llevar a cabo operaciones criptográficas que permiten comunicaciones secretas con una autenticación sólida del titular de la clave privada correspondiente. La necesidad de tener la clave pública de un par de claves para iniciar la comunicación o verificar firmas es un problema de arranque. Localizar claves en la web o escribirle al individuo pidiéndole que transmita sus claves públicas puede llevar mucho tiempo y ser inseguro. Los servidores de claves actúan como repositorios centrales para aliviar la necesidad de transmitir individualmente claves públicas y pueden actuar como la raíz de una cadena de confianza .
El primer servidor de claves PGP basado en la web fue escrito para una tesis de Marc Horowitz [1] , mientras estudiaba en el MIT . El servidor de claves de Horowitz se llamó HKP Keyserver en honor a un protocolo de servidor de claves HTTP OpenPGP basado en la web (HKP), [2] utilizado para permitir que las personas interactuaran con el servidor de claves. Los usuarios podían cargar, descargar y buscar claves a través de HKP en el puerto TCP 11371 o a través de páginas web que ejecutaban scripts CGI. Antes de la creación del HKP Keyserver, los servidores de claves dependían de scripts de procesamiento de correo electrónico para la interacción.
PGP, Inc. desarrolló un servidor de claves independiente, conocido como PGP Certificate Server, y lo utilizó como 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 del cliente), keyserver.pgp.com. Network Associates obtuvo una patente con Jon Callas como coautor (Patente de los Estados Unidos 6336186) [3] sobre el concepto de servidor de claves.
Para reemplazar al antiguo servidor de certificados, en Network Associates se rediseñó en parte un servidor de claves basado en LDAP , obra de Randy Harmon y Len Sassaman , llamado PGP Keyserver 7. Con el lanzamiento de PGP 6.0, LDAP se convirtió en la interfaz de servidor de claves preferida para las versiones PGP de Network Associates. Este servidor de claves LDAP y LDAPS (que también hablaba HKP para compatibilidad con versiones anteriores, aunque el protocolo se denominaba (posiblemente correctamente) “HTTP” o “HTTPS”) también formó la base para las herramientas de administración de PGP para servidores de claves privadas en entornos corporativos, junto con un esquema para Netscape Directory Server .
Posteriormente, PGP Keyserver 7 fue reemplazado por el nuevo PGP Global Directory de PGP Corporation de 2011, que permite publicar y descargar claves PGP mediante HTTPS o LDAP. [4]
El mundo OpenPGP utilizaba 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" (Synchronizing Key Server), escrito por Yaron Minsky. [5] El grupo público de SKS (que consta de muchas instancias de SKS interconectadas) proporcionaba acceso a través de HKPS (HKP con TLS) y HTTPS. Finalmente, cerró en 2021 tras una serie de GDPR que no pudo procesar de manera efectiva. [6]
Luego del cierre del pool SKS, se han puesto a disposición varios pools más nuevos que utilizan otro software, consulte § Ejemplos de servidores de claves.
Muchos servidores de claves de acceso público, ubicados en todo el mundo, son computadoras que almacenan y proporcionan claves OpenPGP a través de Internet para los usuarios de ese criptosistema. En este caso, las computadoras pueden ser, y en su mayoría son, operadas por individuos como un servicio pro bono , facilitando el modelo de red de confianza que utiliza PGP.
Hay varios servidores de claves S/MIME de acceso público disponibles para publicar o recuperar certificados utilizados con el sistema criptográfico S/MIME .
También existen múltiples sistemas de infraestructura de clave pública propietarios que mantienen servidores de claves para sus usuarios; estos pueden ser privados o públicos, y es probable que solo los usuarios participantes tengan conocimiento de dichos servidores de claves.
Los servidores de claves OpenPGP desde su desarrollo en los años 90 han sufrido algunos problemas. Una vez que se ha cargado una clave pública, se ha dificultado deliberadamente su eliminación, ya que los servidores se sincronizan automáticamente entre sí (se hizo para luchar contra la censura del gobierno). Algunos usuarios dejan de utilizar sus claves públicas por diversas razones, como cuando olvidan su frase de contraseña o si su clave privada se ve comprometida o se pierde. En esos casos, era difícil eliminar una clave pública del servidor, e incluso si se eliminaba, otra persona podía cargar una copia nueva de la misma clave pública en el servidor. Esto conduce a una acumulación de claves públicas fósiles antiguas que nunca desaparecen, una forma de "placa del servidor de claves".
La falta de un mecanismo de retractación también infringió el Reglamento General de Protección de Datos de la Unión Europea , lo que se citó como motivo del cierre del grupo SKS. [6] Los servidores de claves PGP modernos permiten la eliminación de claves. Debido a que solo el propietario de la dirección de correo electrónico de una clave puede cargar una clave (consulte la siguiente sección) en dichos servidores, la clave permanece eliminada a menos que el propietario decida lo contrario.
El servidor de claves tampoco tenía forma de comprobar si la clave era legítima (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 posee esa clave, o peor aún, utilizarla como vulnerabilidad: el ataque de spam de certificados. [5] [7] : §2.2
Los servidores de claves modernos, comenzando por el Directorio Global PGP, ahora utilizan la dirección de correo electrónico para la confirmació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 Directorio Global PGP acepta la clave. La confirmación se puede renovar periódicamente, para evitar la acumulación de placa del servidor de claves. El resultado es una colección de claves públicas de mayor calidad, y cada clave ha sido examinada por correo electrónico con el aparente propietario de la clave. Pero como consecuencia, surge otro problema: debido a que el Directorio Global PGP permite el mantenimiento de la cuenta de claves y verifica solo por correo electrónico, no criptográficamente, cualquiera que tenga acceso a la cuenta de correo electrónico podría, por ejemplo, eliminar una clave y cargar una falsa.
El último borrador del Grupo de Trabajo de Ingeniería de Internet para HKP también define una red de servidores de claves distribuida, basada en registros SRV de DNS : para encontrar la clave de [email protected] , uno puede preguntarle solicitando el servidor de claves de ejemplo.com .
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 se cargue una clave pública en un servidor de claves cuando se utilizan sistemas criptográficos descentralizados basados en la red de confianza, como PGP, puede revelar una gran cantidad de información que una persona podría desear que se mantuviera privada. Dado que PGP se basa en firmas en la clave pública de una persona para determinar la autenticidad de esa clave, se pueden revelar relaciones potenciales analizando los firmantes de una clave determinada. De esta manera, se pueden desarrollar modelos de redes sociales completas. (La crítica de Mike Perry de 2013 a la red de confianza menciona que el tema ya ha sido "discutido extensamente".) [8]
Muchos servidores de claves modernos eliminan las firmas de terceros de la clave cargada. De esta manera, se eliminan todas las conexiones personales con la red de confianza, lo que evita que se produzcan fugas. Sin embargo, el objetivo principal era minimizar el espacio de almacenamiento necesario, ya que el "spam de firmas" puede agregar fácilmente megabytes a una clave. [9] [7] : §2.1
Estos son algunos servidores de claves que se utilizan a menudo para buscar claves con gpg --recv-keys
. [10] Estos se pueden consultar a través de https://
( HTTPS ) o hkps://
(HKP sobre TLS ) respectivamente.