HTTPS – ¡Haz tu sitio más seguro!

¡Bienvenidos un día más a un nuevo rootie queridos amigos! Por fin es Jueves y otra semana vuelvo a ponerme a los mandos de ohmyroot!. En el artículo de hoy vamos a hablar sobre algo que interesa tanto a gente del mundillo como a usuarios finales, ¡hoy vamos a hablar sobre conexiones seguras HTTPS!

HTTP, el origen.

Como todos sabemos, HTTP (Hyper Text Transfer Protocol) es el protocolo que hace posible que ahora mismo estéis leyendo estas lineas. La primera versión se publicó en 1997 y su uso desde entonces no ha ido mas que en aumento. De hecho en 2015 se presento la versión 2 del protocolo, que ya ha empezado a revolucionar el mundo del desarrollo web.

El protocolo HTTP, trabaja en la capa mas alta del modelo de red, esto quiere decir que la forma en la que se comunica, es muy cercana al lenguaje humano. Cuando establecemos una conexión HTTP, el cliente y el servidor se comunican mediante mensajes. Estos mensajes tienen un formato de texto plano, lo que hace mas fácil su lectura y depuración. Un ejemplo de dialogo HTTP sería algo así:

  1. Se abre una conexión en el puerto 80 del host www.ohmyroot.com.
  2. Se envía un mensaje en el estilo siguiente:

Y el servidor responde de la siguiente forma (he recortado el HTML de la respuesta).

Como habéis podido deducir, el usar texto plano tiene muchas ventajas, pero presenta inconvenientes graves, el peor de todos, la falta de seguridad, ya que al no utilizar ningún tipo de seguridad, nuestras contraseñas (por ejemplo) puede ser leídas fácilmente.

Hablando con informaticos
HTTP, la forma perfecta de comunicación – XKCD

¡HTTPS al rescate!

Para resolver el problema de los posibles ataques man-in-the-middle o eavesdropping se desarrollo el protocolo HTTPS. La diferencia entre HTTP y HTTPS es… ¡la S! (Lo siento me he emocionado, no volverá a ocurrir). Bromas aparte esta simple S, marco un antes y un después, ya que esta simple S, hace referencia a la palabra Secure (seguro en Español).

HTTPS, al contrario que HTTP opera en una subcapa mas baja de red, cifrando el mensaje HTTP antes de transmitirse y descifrándolo al recibirlo. Gracias a esto con HTTPS podemos crear canales de comunicación seguros en medios virtualmente inseguros, garantizando (hasta cierto punto, nada es infalible) la autenticidad de los datos transmitidos.

Pero… ¿y como podemos fiarnos?

Si llegados a este punto, estáis mas perdidos que un pato en un garaje, podéis saltaros toda esta sección, porque voy a explicar a grosso modo como se garantiza la seguridad de los datos, si no estas interesado, puedes saltar a la sección de ventajas.

HTTPS hace uso, actualmente, de TLS (Transport Layer Security) y anteriormente SSL (Secure Sockets Layer) para la encriptación de los mensajes, y generalmente se hace uso del termino SSL para referirnos a ambos.

SSL proporciona autenticación y privacidad de la información entre extremos sobre Internet mediante el uso de criptografía. Habitualmente, sólo el servidor es autenticado (es decir, se garantiza su identidad) mientras que el cliente se mantiene sin autenticar.

SSL implica una serie de fases básicas:

  • Negociar entre las partes el algoritmo que se usará en la comunicación
    • Las implementaciones de TSL/SSL actuales proporcionan las siguientes opciones:
  • Intercambio de claves públicas y autenticación basada en certificados digitales
  • Cifrado del tráfico basado en cifrado simétrico

HTTPS hace uso de los certificados de clave publica para verificar la identidad de los extremos. La mayoría de los navegadores implementan soporte para TLS.

Como podéis ver, el proceso de seguridad junto con la correcta implementación nos va a dar un porcentaje de seguridad considerable.

Sobre los certificados.

Una cuestión muy importante acerca de los certificados es la autoridad certificadora. Un certificado de seguridad, puede ser generado con cualquier maquina y autofirmarse, pero normalmente este certificado no va a ser aceptado por los navegadores.

Las autoridades certificadoras (como Symantec, Comodo, GoDaddy and GlobalSign) son quien a través de la firma del certificado, garantizan la identidad del sitio a través de certificados validos. Por lo tanto, un usuario debe confiar en una conexión HTTPS solo y exclusivamente si lo siguiente es cierto:

  • El usuario confía en que el navegador implementa correctamente HTTPS con los certificados de las autoridades pre-instalados
  • El usuario confirma en que la autoridad certificadora respalda estos certificados.
  • El sitio web ofrece un certificado válido, firmado por una de estas autoridades.
  • El certificado identifica el sitio correctamente (nosotros usamos el certificado que proporciona CloudFlare, que esta firmado por Comodo e incluye el dominio *.ohmyroot.com)
  • El usuario considera que el protocolo de encriptación (SSL/TLS) es suficientemente seguro (esto es mas bien un acto de fe en la mayoría de los usuarios).
¡Quien no va a fiarse de uno de estos cuando dice que la web es segura!

Sobre TLS/SSL, implementaciones, técnicas de encriptación, etc. hay gran cantidad de información tanto en Internet como en bibliografía sobre el tema, con lo que no me voy a extender mas en esto.

Ventajas de usar HTTPS.

A día de hoy, el uso de HTTPS es cada vez más alto, hace no tanto tiempo, solo podías encontrar paginas con HTTPS que fuesen tiendas online o de una forma u otra manejase información altamente sensible (no se me ocurre ninguna ahora), pero en los últimos años el uso de HTTPS se ha extendido para garantizar la autenticidad de cualquier tipo de sitio.

https-https-everywhere

La gran ventaja que ofrece HTTPS es la confianza que puedes ofrecer a tus usuarios/clientes en relación a tu sitio web.

Ademas desde no hace mucho tiempo Google esta empezando a dar una ligera ventaja a los sitios que utilizan exclusivamente HTTPS (es decir que no pueden ser accedidas de forma insegura, como por ejemplo http://www.ohmyroot.com, que siempre, siempre te redirecciona al HTTPS)

Creo que también merece la pena destacar, que si tienes o estas pensando en abrir una tienda online, usar HTTPS va a ser un requisito obligatorio para las formas de pago, pero utilizarlo globalmente en tu tienda, agregará ese nivel extra de seguridad para construir relaciones de confianza con tus clientes.

Y con esto terminamos por hoy, espero haber arrojado un poquito de luz sobre este tema y que lo tratado os sea de ayuda. ¡Nos vemos la semana que viene!

Como siempre para cualquier duda, pregunta, comentario, soborno o amenaza, podéis usar los comentarios o en nuestras redes sociales Facebook y Twitter.

One Comment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *