Sobes.tech
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):

  1. ClientHello: El cliente envía una lista de versiones TLS soportadas, conjuntos de cifrados y otros parámetros.
  2. ServerHello: El servidor selecciona los parámetros óptimos de los propuestos por el cliente.
  3. Certificate: El servidor envía su certificado.
  4. ServerKeyExchange (opcional): Intercambio de claves de cifrado.
  5. CertificateRequest (opcional): El servidor puede solicitar un certificado del cliente para autenticación mutua.
  6. ServerHelloDone: El servidor indica que ha terminado su parte del Handshake.
  7. Certificate (opcional): El cliente envía su certificado.
  8. 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.
  9. CertificateVerify (opcional): El cliente verifica la firma del servidor.
  10. ChangeCipherSpec: El cliente y el servidor indican que cambiarán a las claves de sesión acordadas.
  11. 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.