Descubre cómo funciona HTTPS con esta infografía

Hoy en día la seguridad al navegar por los sitios web, se ha convertido en una prioridad para todo el mundo, y es que gracias al uso del protocolo HTTPS, que es el protocolo seguro de HTTP, podemos navegar por Internet con cifrado punto a punto, todo el tráfico desde nuestro navegador web hasta el servidor web estará cifrado y autenticado, gracias a la utilización del protocolo Transport Layer Security (TLS). Hoy en RedesZone nos hacemos eco de una completa infografía donde se puede ver en detalle, y de manera muy fácil de entender, cómo funciona este protocolo HTTPS que hoy en día es fundamental para navegar con seguridad.

¿Por qué necesitamos HTTPS?

El protocolo HTTPS se necesita principalmente por tres razones, privacidad, integridad e identificación. Vamos a usar como ejemplo, el envío de un mensaje para que lo entendáis fácilmente.

Privacidad

Cuando nuestro equipo envía un mensaje desde el navegador web hacia el servidor web donde nos estemos conectando, si no está protegido el mensaje, este puede ser capturado por alguien que esté escuchando el canal de comunicación, como, por ejemplo, en una red Wi-Fi. Este mensaje puede ser capturado para espiar absolutamente todo el tráfico. Por ejemplo, si navegamos por una página web e introducimos una contraseña, esta podrá ser capturada.

Cuando en la barra de direcciones web, donde introducimos la dirección del sitio web que queremos ir sale un candado cerrado, significa que la comunicación con el servidor web se realiza de manera segura, con cifrado punto a punto. Que salga el «candado» no significa que el sitio web sea seguro, simplemente que el canal de comunicación con dicho sitio web sí lo es.

Integridad

Cuando nuestro equipo envía un mensaje desde el navegador web hacia el servidor web donde nos estemos conectando, este mensaje puede ser capturado y modificado al vuelo mediante el canal de comunicación, con el objetivo de cambiar la información que haya en él. Una vez modificado, se envía al legítimo destinatario ya modificado, y no se podrá saber si ese mensaje se ha modificado o no. Este tipo de ataques son los populares «man in the middle».

Por este motivo, la integridad en las comunicaciones es fundamente, la integridad significa que, si el mensaje es modificado, el destinatario lo sabrá, y denegará la conexión. Por tanto, con la integridad, se puede garantizar que un mensaje no puede ser modificado (sin que el destinatario lo sepa) y llega a su destinatario exactamente como se envió.

Identificación

La identificación significa que puedo verificar quién ha enviado el mensaje mediante el uso de una firma digital, y cuando navegamos por una página web, significa que la página web en la que estamos es auténtica. Todo esto se consigue gracias al protocolo HTTPS, que a través de los certificados SSL, garantiza que estás conectado al lugar correcto. El certificado SSL que nos muestra el navegador web es válido y ha sido emitido por una autoridad de certificación legítima.

En conclusión, la privacidad, la integridad y la identificación son las principales razones por las que el protocolo HTTPS es muy importante.

Las claves

Para que funcione el protocolo HTTPS, necesita una forma de poder proporcionar privacidad, integridad e identificación en los sitios web. La manera de poder proporcionar esto se llama cifrado o encriptación.

Cifrado

Hay principalmente dos tipos de algoritmos de cifrado, el algoritmo de clave simétrica y asimétrica.

El algoritmo de clave simétrica, solo utiliza una única clave para cifrar y descifrar los mensajes, su funcionamiento es el siguiente:

  • Antes de enviar el mensaje, el navegador cifra el mensaje a enviar, una vez enviado, aunque sea interceptado, si no tiene la clave de descifrado no podrá leer o modificar el mensaje, por lo tanto, el único que puede leer el mensaje es el destinatario que tiene la clave de descifrado, que es la misma que la de cifrado. Si alguien intentase abrir el mensaje, solo vería una cadena de texto sin ningún sentido al estar cifrado.

Sin embargo, el principal problema del algoritmo de clave simétrica es que es muy difícil compartir la clave compartida.

El algoritmo de clave asimétrica, utiliza dos claves, una privada y otra pública. Su funcionamiento es el siguiente:

  • El algoritmo asimétrico usa una clave que es pública y la otra es privada. Están emparejadas y trabajan conjuntamente. La clave pública se puede compartir con cualquiera, por eso es pública. Cuando alguien envía un mensaje, cifra el mensaje usando la clave pública del destinatario, y cuando se recibe el mensaje, usa su clave privada que solo él tiene para descifrar el mensaje. Solo la clave privada puede abrir el mensaje cifrado de la clave pública.

Este tipo de algoritmo de clave pública, no solo nos vale para la privacidad, sino que también nos sirve para la identificación de quien envía el mensaje.

Handshake de SSL/TLS

Cuanto estás en una página web segura como RedesZone, habrás observado que, en la barra de direcciones, donde introdujiste www.redeszone.net aparece en el lado izquierdo un candado cerrado. Esto significa que cuando entraste en nuestra web, tu navegador se comunicó con nuestro servidor web, y ambos establecieron una conexión segura para transmitirse los datos.

Antes de que esto ocurriese, el navegador y servidor web tienen que ponerse de acuerdo en cómo se van a comunicar de forma segura. Si durante la negociación ocurriese un fallo, el navegador mostraría un error o advertencia, en cambio, si la negociación es correcta, nos muestra un candado cerrado en la barra de direcciones. Este proceso de negociación se denomina Handshake, y dependiendo del protocolo TLS que utilices, es más rápido o menos rápido, ya que la última versión TLS 1.3 incorpora una gran cantidad de mejoras para acelerar al máximo el establecimiento de la conexión.

Cómo funciona

El servidor web envía una lista de versiones de SSL / TLS compatibles que hayan configurado, y un conjunto de algoritmos de cifrado con los que puede trabajar con el navegador web. Por otra parte, el navegador web también envía su respectiva lista también. Entonces, se elige la mejor versión de los protocolos SSL / TLS y el algoritmo de cifrado según las preferencias del servidor.

El servidor responderá al navegador web enviando su certificado, que incluye su clave pública para que pueda verificar la identidad del servidor web. El navegador comprueba que el certificado enviado por el servidor sea auténtico, y, entonces, el navegador genera una clave maestra para que tanto navegador como servidor puedan usarla más tarde cuando generen una clave única. Esta clave maestra previa es enviada al servidor usando la clave pública del servidor para cifrarla, y luego, es descifrada por el servidor usando su clave privada.

Todo lo ocurrido hasta ahora ha sido mediante una comunicación abierta y no cifrada, excepto el envío de la clave maestra previa que fue cifrada usando claves asimétricas. Una vez recibido por el servidor la clave maestra previa, ambos generan un “secreto compartido” que es la clave simétrica que usarán, y es entonces cuando todos los datos que van y vienen entre el navegador y servidor están asegurados para el resto de la sesión.

Diferencias entre HTTPS, SSL y TLS

Vamos a repasar cuáles son las diferencias entre estos protocolos ya que es muy sencillo confundirlos.

  • HTTPS es la versión segura de HTTP: «Protocolo de transferencia de hipertexto». El protocolo HTTP es el utilizado por el navegador y servidores web para comunicarse e intercambiar información. Pero cuando el intercambio de datos se cifra con SSL / TLS, entonces se llama HTTPS. La «S» significa «Seguro».
  • SSL significa «Capa de sockets seguros». Es un protocolo creado por Netscape. Su versión 2 se lanzó en el año 1995 con el navegador Netscape 1.1. En 1996 se lanzó la versión SSL 3,0 que solucionaba grandes fallos de seguridad de su versión anterior. Pero en 1999 hubo una guerra de muchos navegadores, y, al final, Netscape como todos sabemos desapareció, pero antes cedió el control del protocolo SSL a la IETF, “Internet Engineering Task Force”. Este organismo, antes de finales de 1999 lanzó la versión de TLS 1.0 que en realidad era SSL 3.1. Es decir, SSL cambio su nombre a TLS “Transport Layer Security”, creando confusión que sigue aún hoy para diferenciar a los protocolos. Actualmente la última versión de TLS es la 1.3, e incorpora muchas mejoras en seguridad, pero, sobre todo, en rendimiento.

Repasemos los lanzamientos del protocolo TLS

En 1999 se lanzó la versión 1.0 de TLS, pero hasta el año 2006, no se lanzó la versión 1.1 de TLS. Dos años más tarde en 2008, se lanzó TLS 1.2 que solucionaba algunos fallos y vulnerabilidades. Sin embargo, hasta el año 2013, es decir 5 años después, los navegadores no empezaron a agregar soporte para TLS 1.2. Para más inri en el asunto, en el año 2015 el protocolo SSL 3.0 quedó oficialmente en desuso. Llegados al año 2018, se aprobó TLS 1.3. TLS 1.3 aporta grandes mejoras de seguridad y elimina viejas características que son débiles.

Autoridades de certificación (CA)

Una autoridad de certificación (CA) es una organización de terceros, que tiene 3 objetivos principales:

  1. Emitir certificados.
  2. Confirmar la identidad del titular del certificado.
  3. Proporcionar pruebas de que el certificado es válido.

Para convertirse en una CA, se requiere de unos requisitos de seguridad y auditorías que se deben pasar. Debes demostrar que eres confiable para ser aceptado en un “almacén root”. Un “almacén root” es una base de datos de CA confiables. Por ejemplo, sistemas operativos y empresas como Apple, Windows y Mozilla tienen sus propios “almacenes root” que preinstalan en sus ordenadores.

¿Qué certificados existen?

Básicamente existen tres tipos de certificados que emiten las autoridades de certificación:

  • Domain validated: Este certificado solo verifica el nombre de dominio.
  • Organization validated: Este certificado requiere la validación y verificación manual de la organización que está detrás del certificado.
  • Extended validation: Este certificado requiere una verificación exhaustiva del negocio para el que será emitido.

Cuando un certificado es válido, se muestra una insignia segura en la barra del navegador. Los certificados, además, pueden también mostrar el nombre de la empresa para la que son válidos.

¿Cómo se validan los certificados?

Cuando una CA emite un certificado, está lo firma con su certificado raíz que viene preinstalado en el almacén root que tenemos en nuestro equipo o navegador. Tenemos que tener en cuenta que normalmente, la mayoría de las veces, es un certificado intermedio firmado con un certificado raíz. Esto es así porque en caso de que el certificado raíz se viera comprometido, es más fácil revocar los certificados intermedios, porque que los certificados raíz están instalados en cada dispositivo.

Para validar un certificado el proceso es el siguiente:

  1. El navegador se conecta a una página web usando el protocolo HTTPS y descarga el certificado.
  2. El certificado que se descarga no es un certificado raíz.
  3. El navegador descarga el certificado que se utilizó para firmar el certificado en la página web.
  4. Pero este certificado aún no es el certificado raíz.
  5. Entonces el navegador vuelve a buscar el certificado que firmó el certificado intermedio que se acaba de descargar.
  6. Y una vez lo encuentra y lo valida, se confía en toda la cadena de certificados, y por lo tanto, también se confía en el certificado de la página web.

En caso de que el último certificado no sea un certificado raíz, y no haya más certificados para descargar, entonces la página web no es de confianza.

¿Por qué usar una autoridad de certificación CA cuando puedo auto firmar mis certificados?

Aunque un certificado auto firmado proporciona el mismo nivel de cifrado que uno generado por una autoridad, los navegadores verifican que el certificado haya sido emitido por una autoridad confiable, y, si no lo es, muestra un aviso al respecto diciendo que el certificado no es seguro. Los certificados SSL/TLS se compran a diferentes CA, aunque existen CA como Let’s Encrypt que proporcionan certificados totalmente gratuitos.

Los certificados auto firmados solo son útiles para realizar pruebas o usarlos en intranets, pero no se deben usar en páginas web públicas, ya que a los visitantes les aparecerá un aviso en el navegador indicando que no se confía en el certificado, y que la página web podría no ser segura.

Tal y como podéis ver, detrás del protocolo HTTPS que utilizamos continuamente en miles de páginas web, hay una gran cantidad de protocolos trabajando por debajo. Esperamos que os haya quedado claro cómo funciona este protocolo tan importante hoy en día.