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:
- Alice (cliente) envía su certificado público a Bob (servidor), así como a la cadena de certificados.
- Bob hash el certificado.
- Bob descifra el certificado usando el certificado de nivel superior en la cadena.
- Bob compara los dos resultados; si coinciden, Bob tiene la prueba de que el certificado fue firmado con el certificado de la palanca superior.
- 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:
- Alice (cliente) genera un par de claves asimétricas.
- Una autoridad de confianza firma su clave pública y produce un certificado público.
- Alicia hash los datos.
- Alice encripta el hash usando su clave de encriptación (su clave privada).
- Bob (servidor) sabe, de un mensaje anterior: el certificado público de Alice y la cadena de certificados.
- Alice envía a Bob: firma, función hash y algoritmo de firma.
- Bob hash los datos.
- Bob descifra la firma usando el certificado público de Alice.
- 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