¿Cómo valida un servidor el mensaje de verificación de certificado en SSL / TLS?

4

La autenticación del cliente se puede utilizar en una negociación SSL / TLS.

Para esto, el cliente enviará un Mensaje de verificación de certificado después de que el servidor lo haya solicitado.

El mensaje de verificación de certificado contiene el certificado del cliente que será verificado por el servidor.

Mi pregunta es: ¿cómo verifica el servidor que el certificado del cliente (que contiene la clave pública del cliente) es legítimo?

    
pregunta Duke Nukem 01.10.2016 - 02:28
fuente

2 respuestas

0

El servidor tiene algunas raíces de confianza, que utiliza, o dependiendo de la aplicación, puede tener un certificado de CA, o simplemente el certificado de ese cliente, fijado.

De todos modos, o pasa por su almacén de confianza y verifica si el certificado de cliente está firmado por algo en su tienda, o si está anclado, solo comparará con la CA o certificado con el que está configurado para verificar.

    
respondido por el returneax 01.10.2016 - 03:59
fuente
2

La parte de protocolo de enlace TLS 1.3 tiene tres objetivos:

  • certificados de intercambio;
  • permita que el servidor confirme que el cliente realmente tiene la clave secreta asociada con el certificado público proporcionado, sin intercambiar la clave secreta;
  • intercambiar claves efímeras.

Parte 1 - Confianza del certificado

El cliente envía su certificado con el mensaje Certificate .

El servidor determina si el certificado es de una fuente confiable. Verifica la firma del certificado del cliente, luego la firma de cada certificado intermedio, hasta que encuentra un certificado confiable, ya sea de una lista del lado del servidor de certificados confiables, o de una autoridad certificadora (CA) confiable.

Pseudo-código:

  1. Alice (cliente) envía su certificado público a Bob (servidor), así como a la cadena de certificados.
  2. Bob hash el certificado.
  3. Bob descifra el certificado usando el certificado de nivel superior en la cadena.
  4. Bob compara los dos resultados; si coinciden, Bob tiene la prueba de que el certificado fue firmado con el certificado de la palanca superior.
  5. Bob continúa a través de la cadena (pasos 2, 3, 4) hasta que encuentra un certificado de confianza.

Parte 2 - Confianza del cliente

El cliente envía el mensaje Certificate Verify :

struct {
  SignatureScheme algorithm;
  opaque signature<0..2^16-1>;
} CertificateVerify;

El signature scheme le dice a la función hash utilizada y al algoritmo de firma.

El cliente produce el signature y lo verifica el servidor. Los datos realmente firmados son conocidos por el cliente y el servidor y, por lo tanto, no se reenvían (son espacios, una cadena de contexto, un byte cero y los mensajes anteriores).

Pseudo-código:

  1. Alice (cliente) genera un par de claves asimétricas.
  2. Una autoridad de confianza firma su clave pública y produce un certificado público.
  3. Alicia hash los datos.
  4. Alice encripta el hash usando su clave de encriptación (su clave privada).
  5. Bob (servidor) sabe, de un mensaje anterior: el certificado público de Alice y la cadena de certificados.
  6. Alice envía a Bob: firma, función hash y algoritmo de firma.
  7. Bob hash los datos.
  8. Bob descifra la firma usando el certificado público de Alice.
  9. Bob compara los dos resultados; si coinciden, Bob tiene la prueba de que la firma está asociada con los datos y la clave privada de Alice generó la firma.

Ahora, Alice debe mantener su clave en secreto, y los datos deben variar entre las solicitudes para evitar que Eve vuelva a reproducir la solicitud con los mismos datos y la misma firma.

Espero que te ayude a comprender mejor.

Referencias:
enlace
enlace
enlace
enlace

    
respondido por el rjobidon 19.08.2017 - 06:46
fuente

Lea otras preguntas en las etiquetas