# Server-based Certificate Validation Protocol

El Protocolo de validación de certificados basado en servidor, también conocido por las sigals SCVP (del inglés Server-based Certificate Validation Protocol), es un protocolo de Internet para determinar la ruta entre un certificado digital X.509 y una raíz de confianza (Delegated Path Discovery) y la validación de dicha ruta (validación de ruta delegada) de acuerdo con una política de validación particular.
SCVP fue propuesto en 1999 y publicado en 2007 por el IETF, por el grupo de trabajo PKIX, en el RFC 5055. SCVP permite a los clientes PKI delegar los procesos de construcción, descubrimiento y validación de trayectorias de certificación cuando intervienen varias PKI. Además facilita la administración de políticas de validación de certificados en un servidor. La validación de certificados digitales es muy compleja en el contexto PKI sobre todo cuando hay una gran cantidad de aplicaciones y ambientes que requieren manejar certificados digitales, el servidor dedicado SCVP mitiga la sobrecarga que implica para el cliente el descubrimiento, la construcción o validación de trayectorias de certificación.

## Utilidad

El SCVP es útil para dos clases de aplicaciones que usan certificados:
* Aplicaciones que requieren de una confirmación de que la clave pública pertenece a la entidad nombrada en el certificado digital, así como la confirmación de que la llave pública puede ser usada para el propósito requerido. En este caso los clientes de esa aplicación pueden delegar completamente a un servidor SCVP, la construcción de la trayectoria de certificación y su validación. A esto se le llama Validación de Trayectoria Delegada (DPV, Delegated Path Validation).
* Aplicaciones que pueden realizar la validación de la trayectoria de certificación, pero carecen de un método fiable y eficiente para construir una trayectoria válida de certificación. Los clientes de este tipo de aplicación delegan a un servidor SCVP la construcción de trayectorias de certificación válidas, pero no validan la trayectoria de certificación proporcionada por el servidor SCVP. A esto se le denomina Descubrimiento de Trayectoria Delegada (DPD, Delegated Path Discovery).
El objetivo de SCVP es hacer más fácil el despliegue de PKI permitiendo a las aplicaciones delegar en un servidor el proceso del descubrimiento y/o validación de trayectorias y permitir la administración centralizada de políticas de validación en una organización para ser aplicadas consistentemente. SCVP pueden usarlo clientes PKI que hagan gran parte del procesamiento del certificado, pero simplemente buscan que un servidor dedicado obtenga la información necesaria para ellos. Los servidores SCVP, además de proporcionar a los clientes las trayectorias de certificación, también pueden ofrecer la información para la revocación de certificados, como por ejemplo, las Listas de Revocación de Certificados (CRL, Certificate Revocation List) y las respuestas del Protocolo del Estado de Certificados en Línea (OCSP, Online Certificate Status Protocol) que necesitan los clientes para validar las trayectorias de certificación construidas por el servidor SCVP. Estos servicios pueden ser valiosos para los clientes que no tienen implementados los protocolos necesarios para encontrar los certificados intermedios, CRLs y respuestas OCSP.

## Confianza

La confianza que pueden tener los clientes en el servidor SCVP se da por dos razones:
* El cliente no cuenta con el software necesario para la validación de rutas de certificación de los certificados que recibe.
* El cliente es una organización o comunidad que quiere centralizar las políticas de validación en un servidor dedicado. Estas políticas pueden dictar anclas de confianza particulares y ser usadas en las políticas de verificación que se hayan cumplido durante la validación de trayectorias de certificación.
SCVP usa el modelo simple de petición-respuesta. El cliente SCVP crea una solicitud y la envía al servidor SCVP, entonces el servidor SCVP crea una respuesta única y la envía al cliente. Este intercambio de mensajes se puede dar por medio de HTTP, pero también puede ser mediante el correo electrónico o por cualquier otro protocolo que transporte objetos firmados digitalmente.
La arquitectura de SCVP incluye dos tipos de petición-respuesta. En el primero se maneja la validación de certificados. Mientras que el segundo se usa para determinar la lista de políticas de validación y parámetros de defecto soportados por el servidor SCVP.
Las políticas especifican las reglas y parámetros que usa SCVP para validar certificados, ya sea que en la solicitud del cliente haga referencia de ellas por medio de parámetros o sin ellos. En cualquier caso la definición de las políticas implica la especificación del algoritmo que será usado asociado a los parámetros de la política de validación.
El algoritmo de validación es uno de los parámetros de la política de validación. El algoritmo de validación básico está definido en PKIX, este permite al cliente solicitar información adicional acerca de los certificados acerca de los certificados a ser validados. Los algoritmos de validación sirven como guía para el desarrollo de nuevos algoritmos de validación específicos para ciertas aplicaciones. Por ejemplo una aplicación pudiera requerir la presencia de un formato específico para el nombre del sujeto u organización en el certificado digital.
Existen dos tipos de solicitud de validación: Protegida y no protegida.
La protegida se usa para autenticar al cliente con el servidor o para proporcionar el anonimato del cliente sobre la solicitud-respuesta.
La protección se da mediante una firma digital o un código de mensaje de autenticación (MAC). En el último de los casos, la llave MAC se deriva usando un algoritmo de establecimiento de la llave como el algoritmo Diffie Hellman. Si la llave pública del cliente está contenida en un certificado, entonces esta puede usarse para autenticar al cliente. Comúnmente, esta llave será efímera, para dar soporte a un cliente anónimo.
Un servidor puede requerir protección para todas las solicitudes, y puede descartar todas las solicitudes no protegidas. Pero también el servidor puede elegir si procesa las solicitudes no protegidas.
Las solicitudes no protegidas son peticiones de validación de certificado encapsuladas en mensajes CMS (Cryptographic Message Syntax) [RFC 5940]
Durante el procesamiento de ruta de certificación, el servidor SCVP puede encontrar una gran porción de objetos PKI generados por una PKI en particular. Estos objetos se almacenan, aun cuando no se realice ninguna consulta del cliente, durante largos periodos de tiempo con la finalidad de atender futuras peticiones en cualquier momento.
El SCVP permite a los clientes solicitar tanta información como sea necesaria, ya sea que se trate de certificados de la entidad final, trayectorias de certificación que contengan un certificado de la entidad final hasta un ancla de confianza, trayectorias de certificación que contengan un certificado de la entidad intermedia hasta un ancla de confianza, o Información de revocación.
Las respuestas del servidor proporcionan las evidencias registradas para:
* Una ruta de certificación completa.
* Una ruta de certificación parcial.
* Un certificado público.
* Información de revocación.
* Cualquier respuesta.

## Bibliografía

* Adams C. and Lloyd S. Understanding PKI, 2nd Edition. Addison Wesley. PP. 146-149.