HTTPS

 


Como la mayoría sabréis HTTP (Hypertext Transfer Protocol) es el protocolo mediante el cual “funciona” internet, obviamente cuando digo funciona me refiero a lo que todo el mundo conoce como internet, aunque no es verdad, que son las páginas web (WWW). Este protocolo tiene una serie de comandos (get, post, put, delete,...) que hacen que funcionen las web al estilo cliente-servidor sin estado. El motivo de este artículo no es describir el funcionamiento de HTTP ni sus peculiaridades sino realizar unas anotaciones sobre su “hermano” HTTPS.

El problema que tiene HTTP es que no es seguro, ejemplo: si rellenas en un formulario un campo contraseña, esa contraseña viaja en abierto, por tanto, cualquiera que pueda “pinchar” o acceder a esa comunicación puede saberla. Para solucionar esto aparece HTTPS (HTTP secure).
HTTPS usa dos protocolos de cifrado para enviar los datos, SSL/TLS. En realidad TLS es una mejora de SSL pero se sigue usando el nombre del primero aunque realmente se esté usando el segundo. TLS usa primero un cifrado asimétrico para el intercambio de claves y luego uno simétrico para mantener la seguridad, debido al alto coste del cifrado asimétrico. TLS trabaja en la capa de transporte del modelo de referencia OSI y ofrece cifrado, integridad y autenticación.
Los pasos que sigue el navegador son:
  • Intenta conectarse a un sitio protegido con SSL.
  • Solicita que el servidor web se identifique.
  • El servidor envía una copia de su certificado SSL al navegador.
  • El navegador comprueba si el certificado SSL es de confianza. Si es así, envía un mensaje al servidor.
  • El servidor devuelve un acuse de recibo firmado digitalmente para comenzar una sesión
  • SSL cifrada.
  • Los datos cifrados se comparten entre el navegador y el servidor.
Obviamente el servidor web debe poseer un certificado de clave pública, el cual debe estar firmado por una autoridad de certificación, si no es así la seguridad depende de que te fíes de ese servidor (a veces se usa en redes locales).

Volviendo al primer ejemplo, si alguien intercepta la comunicación no verá cuál es la contraseña, ya que viaja cifrada.

Ahora viene la pregunta: ¿es seguro HTTPS? Y la contestación: NO, me explico:
En seguridad informática no podemos afirmar que un sistema, protocolo o algoritmo es seguro al 100%, eso no existe. En seguridad la pregunta no es si es seguro sino cuanto tiempo se necesita  para romperlo. Por ejemplo, si yo uso un protocolo para comunicarme con mi banco, el cual estimo que, teniendo en cuenta la tecnología que hay, se puede tardar 1.000 años en romperse, pues podríamos decir que es seguro, porque de aquí a mil años todos calvos, la información a la que pudieran acceder ya no es válida. Obviamente esto es un ejemplo simple y hay más factores.
Por tanto, lo único seguro que hay es que todos vamos a morir algún día.

Por otro lado hay que tener en cuenta algo muy importante que la gente no suele pensar: Una
conexión segura no equivale a un sitio seguro. Yo puedo estar usando HTTPS y el servidor tener un certificado válido, pero resulta que ese servidor recopila información para realizar un ataque de phishing. Por tanto no vale con ver el candadito cerrado sino que tenemos que ver si el servidor es de fiar, no es lo mismo comprar en Amazon que un servidor con mal aspecto, mezcla de idiomas etc.
Y para terminar de liarla HTTPS también puede ser atacado:

  • Bettercap:https://hackpuntes.com/obtener-credenciales-https-con-bettercap-y-sslstrip/
  • Ataque de renegociación
  • Falsificación de certificados:
  • https://elpais.com/diario/2011/03/25/radiotv/1301007601_850215.html
  • Ataque Lucky Thirteen: https://blog.segu-info.com.ar/2013/02/ssl-y-tls-en-peligro-
  • lucky-thirteen.html
  • ...
En resumen, el hecho de usar HTTPS no nos asegura nada ¿entonces qué puedo hacer? Pues lo que digo siempre, sentido común, firewalls, usar servidores de confianza, investigar de quien es, donde está, etc... Todos conocemos páginas de compra/venta de reputación y páginas que nada más entras ya te la han fastidiado (me vais a permitir que no ponga nombres, en este momento no me viene bien tener que desplazarme al juzgado ;) )

Saludos y navegad a favor del viento.

Comentarios