Junior
¿Qué es TLS?
sobes.tech AI
Respuesta de la IA
TLS (Transport Layer Security) es un protocolo criptográfico que garantiza comunicaciones seguras en la red, por ejemplo, entre un navegador web y un servidor.
Funciones clave:
- Autenticación: Verificación de la identidad de las partes (generalmente mediante certificados X.509).
- Confidencialidad: Cifrado de los datos transmitidos para evitar accesos no autorizados.
- Integridad: Verificación de que los datos no han sido modificados durante la transmisión.
El protocolo TLS opera en la capa de transporte del modelo OSI (o superior, dependiendo de la implementación y el contexto). Reemplazó a SSL (Secure Sockets Layer). Las versiones actuales son TLS 1.2 y TLS 1.3.
En el contexto de Go, TLS se usa en la biblioteca estándar net/http para soportar HTTPS.
package main
import (
"crypto/tls"
"net/http"
"log"
)
func main() {
// Ejemplo de configuración de un servidor HTTP con soporte TLS
// Se requieren archivos de certificado y clave privada
certFile := "server.crt"
keyFile := "server.key"
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("¡Hola, mundo seguro!"))
})
// Iniciar servidor HTTPS
log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}
La interacción ocurre en varias etapas (Handshake):
- ClientHello: El cliente envía una lista de versiones TLS soportadas, conjuntos de cifrados y otros parámetros.
- ServerHello: El servidor selecciona los parámetros óptimos de los propuestos por el cliente.
- Certificate: El servidor envía su certificado.
- ServerKeyExchange (opcional): Intercambio de claves de cifrado.
- CertificateRequest (opcional): El servidor puede solicitar un certificado del cliente para autenticación mutua.
- ServerHelloDone: El servidor indica que ha terminado su parte del Handshake.
- Certificate (opcional): El cliente envía su certificado.
- ClientKeyExchange: El cliente envía un secreto pre-maestro cifrado con la clave pública del servidor, que se usa para generar las claves de sesión.
- CertificateVerify (opcional): El cliente verifica la firma del servidor.
- ChangeCipherSpec: El cliente y el servidor indican que cambiarán a las claves de sesión acordadas.
- Finished: Finalización del Handshake con el intercambio de mensajes cifrados con las nuevas claves, para verificar el éxito del proceso.
TLS proporciona un nivel confiable de seguridad para las comunicaciones en red, siendo un estándar para HTTPS y otros protocolos que requieren protección de datos.