Sobes.tech
Middle

¿Cómo se realiza el cifrado de mensajes entre el navegador y el servidor?

sobes.tech AI

Respuesta de la IA

El cifrado entre el navegador y el servidor se realiza mediante el protocolo HTTPS, que es una capa adicional sobre HTTP utilizando los protocolos SSL/TLS (Secure Sockets Layer / Transport Layer Security).

Proceso de establecimiento de una conexión segura (Handshake):

  1. Client Hello: El navegador envía al servidor un mensaje que contiene las versiones de SSL/TLS soportadas, la lista de algoritmos de cifrado (cipher suites), algoritmos de compresión y un número aleatorio (del cliente).
  2. Server Hello: El servidor selecciona la mejor versión del protocolo, el conjunto de cifrado y el algoritmo de compresión de los propuestos por el navegador, además de generar su propio número aleatorio (del servidor) y enviarlo al navegador junto con su certificado SSL/TLS.
  3. Autenticación: El navegador verifica el certificado del servidor:
    • La autoridad de certificación raíz (Root CA).
    • La validez del certificado.
    • La coincidencia del nombre de dominio en el certificado con la dirección del sitio web.
    • La ausencia del certificado en la lista de revocados (CRL o OCSP).
  4. Premaster Secret: El navegador genera un número aleatorio (premaster secret), lo cifra con la clave pública del servidor (del certificado) y lo envía al servidor.
  5. Generación de la clave de sesión: Tanto el navegador como el servidor utilizan los números aleatorios del cliente (Client Random), del servidor (Server Random) y el premaster secret para generar una clave de sesión simétrica.
  6. Change Cipher Spec: El navegador envía al servidor un mensaje informando sobre la transición a usar la clave de sesión generada para la comunicación futura.
  7. Finished: El navegador envía al servidor un hash de todos los mensajes anteriores del apretón de manos, cifrado con la clave de sesión. Este mensaje verifica la corrección del apretón de manos.
  8. Change Cipher Spec: El servidor envía al navegador un mensaje indicando la transición a una conexión cifrada.
  9. Finished: El servidor envía al navegador un hash de todos los mensajes anteriores del apretón de manos, cifrado con la clave de sesión.

Tras el apretón de manos exitoso, toda la transmisión de datos entre el navegador y el servidor se realiza usando cifrado simétrico basado en la clave de sesión generada. El cifrado simétrico es mucho más eficiente que el asimétrico, lo que lo hace adecuado para cifrar grandes volúmenes de datos.

Algoritmos utilizados (ejemplo):

  • Cifrado asimétrico (para el intercambio de la clave de sesión): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
  • Cifrado simétrico (para cifrar datos): AES, 3DES, ChaCha20.
  • Hashing (para verificar la integridad de los mensajes): SHA-256, SHA-384.