¿Tienes SSL?

Hoy en día, más personas se conectan a la Web que nunca, y desde más lugares.

Estamos en contacto con nuestras laptops, teléfonos y tablets, y probablemente pronto con dispositivos y accesorios personales. Accedemos a Internet desde redes que no son de confianza y, a veces, incluso hostiles. Con gran parte de nuestras vidas en línea, es fundamental que tomemos medidas para proteger nuestros datos y los de nuestros usuarios.

Sobre todo, como desarrolladores tenemos que entender la necesidad y practicidad de SSL.

¿Qué es SSL? Significa capa de conexión segura y es un protocolo criptográfico diseñado para proporcionar seguridad en la comunicación a través de Internet. Garantiza la privacidad, mediante integridad y encriptación, para evitar el espionaje o la manipulación de tu conexión a Internet. SSL tiene sus fallas, pero es el camino principal (y realmente el único) para garantizar cualquier tipo de seguridad para las comunicaciones de datos en Internet.

Según SSL Pulse, hace un año, la adopción de SSL fue de casi un 15% y, en la actualidad, superamos el 50%.

Dos siglas:

  • TLS: para la mayoría de los intents y propósitos, es igual que SSL. Para ser precisos, SSL 3.1 se renombró a TLS, y TLS es el nombre estándar IETF. ¡Pero son intercambiables!

  • HTTPS: Es HTTP sobre SSL, solo las capas de las capacidades de seguridad de SSL y HTTP estándar. En primer lugar, el protocolo de enlace entre el cliente y el servidor, que utiliza criptografía de clave pública/privada para crear una clave compartida, la utiliza la segunda parte del protocolo SSL para encriptar la comunicación.

Conectarse a Internet puede parecer seguro, inmediato y rápido. Parece que estamos hablando directamente al sitio web. Pero, en realidad, no es una conexión directa. Nuestras comunicaciones se realizan a través de un router Wi-Fi, un ISP y, posiblemente, otros proxies intermediarios entre tu dispositivo y el sitio web. Sin HTTPS, todas nuestras comunicaciones se expresan en texto sin formato.

El problema es que los usuarios rara vez escriben una URL completa que especifica HTTPS o hacen clic en un vínculo usando HTTP. Y lo que es peor, es posible activar un ataque de intermediario y reemplazar HTTPS por HTTP. Una herramienta llamada SSLstrip presentada en 2009 permite hacer justamente eso. Firesheep, de 2010, acaba de escuchar las redes Wi-Fi abiertas para las cookies que se enviaban en la claridad: eso significaba que podías escucharlos en el chat o acceder a la cuenta de Facebook de alguien.

Sin embargo, SSL es (relativamente) económico, rápido y fácil de implementar (consulte ssllabs.com, el libro de Ilya Grigorik sobre "Herramientas de redes de navegador de alto rendimiento"). Para uso no comercial, incluso puedes obtener certificados gratuitos en startssl.com. La fijación de clave pública está diseñada para brindarles a los operadores de sitios web un medio para restringir qué autoridades certificadoras pueden emitir certificados para sus sitios.

"En enero de este año (2010), Gmail pasó a usar HTTPS para todo de forma predeterminada. ... Para ello, no tuvimos que implementar máquinas adicionales ni hardware especial. En nuestras máquinas de frontend de producción, SSL representa menos del 1% de la carga de CPU, menos de 10 KB de memoria por conexión y menos del 2% de la sobrecarga de red...

Si dejas de leer ahora, solo debes recordar una cosa: SSL ya no es costoso desde el punto de vista de los recursos informáticos”.

Overclocking SSL, Adam Langley (Google)

Por último, existen los siguientes errores más comunes:

  • Contenido mixto: Sitios que usan HTTP y HTTPS. El usuario se molestará porque tiene que hacer clic en un botón de permiso para cargar el contenido. En realidad, Chrome y Firefox bloquean el contenido mixto de los iframes. Asegúrate de que el protocolo HTTPS cargue todos tus recursos en una página HTTPS; por ejemplo, usa URLs relativas o relativas al esquema, por ejemplo, <style src="//foo.com/style.css">
  • Cookies no seguras: se envían despejadas a través de una conexión HTTP. Para evitarlo, configura el atributo seguro en los encabezados de las cookies. También puedes usar un nuevo encabezado de "Seguridad de transporte estricta" para exigir la Seguridad de transporte SSL (HSTS).

Puck robado

  • Si te importa la privacidad y la integridad de los datos de los usuarios, debes usar SSL. Es más rápido, fácil y económico que nunca.
  • Evita los problemas comunes de implementación, como errores de contenido mixto o no configurar los bits de encabezado HTTP correctos.
  • Usa URLs relativas o relativas a esquemas.
  • Descubre lo nuevo y genial, como HSTS y la fijación de certificaciones

Presentaciones: ¿Tienes SSL?