Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| master_cs:secom:tm1_v2 [2026/05/22 19:27] – thejuanvisu | master_cs:secom:tm1_v2 [2026/05/22 23:43] (actual) – thejuanvisu | ||
|---|---|---|---|
| Línea 9: | Línea 9: | ||
| La arquitectura de TLS en internet es la siguiente: | La arquitectura de TLS en internet es la siguiente: | ||
| {{drawio> | {{drawio> | ||
| + | |||
| + | ==== Competidores de TLS ==== | ||
| + | * SSH (Secure Shell) | ||
| + | * También en capa de aplicación | ||
| + | * Usa cifrado de clave pública para la autenticación pero también puede usar contraseñas | ||
| + | * Confiada basada en hosts conocidos e intercambio de claves en vez de PKI | ||
| + | * Se suele usar para acceso remoto a servidores, transferencia de archivos o tunelado de otros protocolos. | ||
| + | * PGP(Pretty Good Privacy): | ||
| + | * Confianza de web descentralizada en vez de usar PKI jerárquico. | ||
| + | * Se suele usar para email, archivos y verificación de paquetes de software. | ||
| + | |||
| + | ==== Protocolo TSL (1.2 y 1.3) ==== | ||
| + | Transporta y, opcionalmente, | ||
| + | {{drawio> | ||
| + | |||
| + | * Trasnsporte de mensaje: Se transportan buffers opacos enviados por subcapas del protocolo superarioes. Puede fragmentar mensajes mayores de 16384 bytes y combinar varios mensajes pequeños en un solo regisotr. | ||
| + | * Cifrado y validación de integridad: Los primeros mensajes se transmiten en claro, una vez finaliza el handshake, se cifra y valida de acuerdo a los parámetros negociados | ||
| + | * Compresión: | ||
| + | * Extensibilidad: | ||
| + | * Handshake | ||
| + | * Change cipher spec | ||
| + | * Datos de aplicación | ||
| + | * Alert. | ||
| + | |||
| + | === Protocolo de Handshake === | ||
| + | Responsable de la negociación de los parámetros de conexión y realizar la autenticación. Intercambia entre 6 y 10 mensajes, dependiendo de las características. Suelen haber 3 flujos comunes: | ||
| + | * Handshake completo con autenticación de servidor | ||
| + | * Handshake abreviado continuando una sesión anterior | ||
| + | * Handshake completo con autenticación mutua. | ||
| + | |||
| + | <code c especificación_del_mensaje> | ||
| + | struct { | ||
| + | HandshakeType msg_type; //1 Byte | ||
| + | uint24 length; | ||
| + | HandshakeMessage message; //Depende del tipo de mensaje | ||
| + | } Handshake; | ||
| + | </ | ||
| + | |||
| + | El funcionamiento de un handshake con autenticación de servidor sería el siguiente: | ||
| + | |||
| + | - Intercambio de capacidades y negociación de parámetros | ||
| + | - Autenticación, | ||
| + | - Se establece una clave secreta maestra para proteger la sesión | ||
| + | - Se verifica la integridad de los mensajes de handshake | ||
| + | |||
| + | Siguen los siguientes pasos: | ||
| + | |||
| + | <WRAP column half> | ||
| + | {{drawio> | ||
| + | |||
| + | </ | ||
| + | |||
| + | <WRAP column half> | ||
| + | - [Cliente] solicita sesión TLS y se envían las capabilities | ||
| + | - Client Hello: Compueto por los siguientes campos | ||
| + | - Random: Previene ataques de replay y asegura la integridad | ||
| + | - Session ID: Vacío para la primera conexión | ||
| + | - Cipher Suites: Ordenadas por preferencia. | ||
| + | - [Server] selecciona los parámetros de conexión | ||
| + | - Server Hello: La versión puede ser inferior a la del cliente. Contiene solo una opción por campo. | ||
| + | - [Server] envía la cadena de certificados si es necesaria autenticación | ||
| + | - Certificate Message: Sirve un certificado X.509 | ||
| + | - Primero viene el certificado principal y luego los intermedios. No se debe enviar el certificado raid | ||
| + | - El certificadod epende de la cipher suite | ||
| + | - Un server puede ser configurado con múltiples certificados | ||
| + | - [Server] envía información adicional para generar la clave maestra | ||
| + | - Key Exchange: Los contenidos dependen de la cipher suite. | ||
| + | - El ClientKeyExchange es obligatorio y el SeverKeyExchange es opcional. | ||
| + | - [Server] Indica la finalización de la negociación | ||
| + | - [Cliente] Envía información adicional para generar la clave maestra | ||
| + | - [Cliente] Cambia el cifrado e informa al servidor | ||
| + | - [Cliente] Envía un MAC (Message Authentication Code) para todos los mensajes intercambiados | ||
| + | - [Server] Cambia el cifrado e informa al cliente | ||
| + | - [Server] Envía un MAC para todos los mensajes intercambiados | ||
| + | </ | ||
| + | |||