En este artículo, HTTPS para Dummies,  vamos a escribir sobre qué es HTTPS, porqué es tan importante esa S final. Como resumen, HTTP es un protocolo de comunicación y HTTPS es HTTP con una capa de seguridad que añade confidencialidad y más propiedades de seguridad que a continuación veremos en detalle.

 

HTTPS para Dummies: encriptación asimétrica

La encriptación asimétrica se basa en una codificación de información basado en dos claves, una privada y una pública. Como sus nombres indican, la privada debe ser guardada por el emisor y la pública se puede entregar a cualquier receptor. Con la privada podemos desencriptar todos los mensajes encriptados con la clave pública y, de forma especular, con la pública sólo podremos desencriptar los mensajes encriptados con la clave privada.

1.Encriptar con la clave pública
Como hemos comentado previamente, la clave pública puede encriptar mensajes que luego sólo se podrá desencriptar con la clave privada. Esto significa que nadie que tenga la clave pública (ni él mismo) podrá desencriptar ese mensaje.
Con esto conseguimos confidencialidad. El emisor ha encriptado el mensaje con la clave pública del receptor por lo cual, supuestamente, nadie que no sea el receptor podrá interpretar el mensaje.

 

2.Encriptar con la clave privada (firma digital)
Con la clave privada conseguimos encriptar información que pueda leer todo aquel que posea la clave pública pareja a la privada. Este proceso no nos ofrece confidencialidad (ya que cualquiera con la clave pública podría leer el mensaje), lo que conseguimos sin embargo es autenticidad e integridad.
La autenticidad viene porque sólo el que posea la clave privada consigue encriptar información de manera que sólo el que posea la clave pública es capaz de desencriptar.
También forzamos el no repudio respecto al mensaje, el emisor no podría decirte que no es suyo ese mensaje, ya que sólo él ha podido encriptarlo.
La integridad la conseguimos con en el momento en el que sólo el que encripta con la clave privada consigue un paquete capaz de ser desencriptado por la clave pública, nadie podría desencriptar, modificarlo y volverlo a encriptar de nuevo si no tienes la clave privada.

 

HTTPS para Dummies: encriptación simétrica

Antes de empezar, es importante saber que existe también el concepto de encriptación simétrica. Es un tipo de encriptación más básico que el asimétrico pero es importante en una comunicación cliente-servidor usando el protocolo HTTPS.
La diferencia reside en que la encriptación simétrica se basa en una única clave tanto para encriptar como para desencriptar, no se consigue autenticidad ni confidencialidad pero a su vez es mucho menos costosa, pero implica la compartición de la clave entre emisor y receptor.

 

HTTPS para Dummies: certificado SSL

Según la wikipedia, un certificado (digital) es: “fichero informático generado por una entidad de servicios de certificación que asocia unos datos de identidad a una persona física, organismo o empresa, confirmando de esta manera su identidad digital en Internet”. Hasta ahora tenemos los mecanismos para que una persona u organización encripta un mensaje y demostrar que es suyo, pero no sabemos quienes son ellos, como sabríamos que el mensaje es de Google, Facebook o Herboristeria Random?
Aquí entra el concepto de CA (Certification Authority o Autoridad de Certificación), es una entidad encargada de verificar dicha identidad. Válida que tu realmente eres la organización que dices ser.

El proceso para solicitar un certificado es simple, la organización debe generar un CSR (certificate request), se lo envías al CA, este válida la información, genera un certificado basado en ese CSR firmado digitalmente y te lo devuelve, fácil no? Pero que es un CSR?
Un CSR es un bloque de texto que contiene información del solicitante como el nombre del dominio, nombre de la organización, ciudad, email, etc y la clave pública. Este CSR se debe firmar digitalmente y enviarselo a la CA. La CA, junto con el CSR, encontrará la clave pública con la que desencriptar ese mensaje y validar los datos. Cuando la CA confirma que tu eres quien dices ser, te envía ese mismo certificado pero firmado digitalmente por ellos.
Llegados a este punto lo único que nos faltaría por entender es que esos CA son unas entidades en las cuales nuestros sistemas operativos o incluso aplicaciones confían de serie (tienen la clave pública de esas CA), si una empresa como GoDaddy o Comodo te emite un certificado firmado digitalmente por ellos, todos los ordenadores confiaran en que esa información es válida.

 

HTTPS para Dummies: como funciona HTTPS?

Ya hemos visto todos los elementos necesarios para tener una comunicación HTTPS, ahora tenemos que combinarlos. Lo que vamos hacer es intercambiar una clave para usar una encriptación simétrica (performance) entre cliente/servidor usando encriptación asimétrica (seguridad).

https for dummies

El proceso a grandes rasgos es simple, la primera comunicación es para que el servidor (emisor) envíe el certificado junto con la clave pública al cliente (receptor). El cliente genera la “secret” que se usará para la comunicación con encriptación simétrica, la encripta con la clave pública y se la envía al servidor, lo cual nos asegura que sólo el cliente/servidor tienen esta clave.
Una vez el servidor desencripta el mensaje con la session-key ya puede comenzar la comunicación simétrica de manera segura, ya que la clave sólo es válida para una sesión y un tiempo determinado.

 

Si este artículo sobre HTTPS para Dummies te gustó, te puede interesar: 

 

La Deuda Técnica 

Simular respuestas del servidor con Nodejs

Principio de responsabilidad única 

Por qué Kotlin ?

Patrón MVP en iOS

Arquitectura de microservicios  

F-bound en Scala: traits genéricos con higher-kinded types

Scala Generics I : Clases genéricas y Type bounds