Los tres grandes problemas de seguridad de la WWW

La usamos a diario, y seguramente muchos de nosotros no caemos en considerar qué es en realidad Internet.

http

La red de redes, o World Wide Web es una red a nivel mundial que se encarga de la distribución de documentos accesibles vía un navegador, o directamente desde servicios web.

Esto quiere decir que Internet se creó con el fin de enviar archivos de hipertexto (información con enlaces a más información) entre dos ordenadores, y no es sino con la evolución de diferentes protocolos que esta funcionalidad ha ido paulatinamente aumentando hasta la distribución de hipermedios y la gestión de lógicas de autenticación y roles de la actualidad.

Para establecer una comunicación entre servidor y cliente (la arquitectura más común en la web), utilizamos los protocolos de transporte, siendo el más conocido para estos menesteres el HTTP, aunque para según qué casos, se utilizan otros como SMTP (correo electrónico), FTP (conexión a directorios de un servidor), Beep (más eficiente que el primero al soportar canales múltiples),…

La información circula por estos canales de diversas formas. XML (y sus derivados) es una de ellas, usada por los servicios web, y que permite el envío de información indistintamente del lenguaje o plataforma que use el cliente. Las bases de datos podrían ser otra, necesitando de un lenguaje auxiliar para hacer las consultas y devolverlas.

La WWW de principios de los años 90 se usaba para la comunicación entre un muy reducido grupo de investigadores. No era algo público. Todos los que la usaban se conocían, y por tanto, en su creación no se tuvieron en cuenta requisitos de privacidad y seguridad. Con el paso del tiempo, acabó por transformarse en lo que es hoy en día. Una red mundial de acceso público que sigue funcionando bajo unos principios de confianza y ausencia de peligros. Algo que como bien sabemos, dista mucho de la realidad.

Así pues, la WWW lleva acarreando desde su desarrollo inicial tres grandes brechas de seguridad a considerar:

  1. Confidencialidad: Todo lo que se envía y recibe utilizando los canales tradicionales de transporte y mensajería de la arquitectura web, se hace de forma pública. Si alguien está conectado a la misma red (de datos) que un servidor, podría ver que estoy conectado a mi página web con mis credenciales de acceso, que tengo abiertas varias pestañas (siempre que éstas envíen o reciban información) y que estoy suscrito a varios servicios de notificaciones (tan pronto alguno entre en funcionamiento). Para solucionar este problema, se establecieron protocolos que permitían segurizar las comunicaciones. Así nació el SSL, que tiene como principal problema el que únicamente funciona en el trayecto en el que esté implementado, de forma que si en algún punto de la cadena entre servidor y cliente la información deja de enviarse mediante SSL (o pasa a ser gestionada por otro servicio), se rompe la seguridad. De aquí a unos años, se espera que la W3C acabe por fijar los requisitos necesarios para estandarizar el XML Encription (EN), una evolución del XML que permitiría segurizar el tráfico de información (no solo en formato XML) mediante esta tecnología.
  2. Autenticación: La WWW inicial no contemplaba una granularidad de roles. Todos los usuarios de WWW tenían los mismos permisos, y por tanto, no era necesario “loguearse”. En nuestros días esto es casi lo más habitual que hacemos. La mayoría de páginas y servicios que usamos funcionan bajo una antenticación, ya sea de forma directa (nosotros entramos con una cuenta de usuario al servicio) o indirecta (la información mostrada viene de servicios web que requieren una autenticación para su consulta opaca al usuario). Lo que se hace para solucionar esta debilidad es utilizar frameworks que interfieren en el funcionamiento tradicional de la WWW, encargándose de contemplar el envío de claves públicas para identificar de forma segura al usuario/servicio. SOAP-DSIG, SAML o XKMS son algunos ejemplos.
  3. Seguridad de la red: El tercer talón de aquiles de la WWW. HTTP está diseñado para la recuperación de documentos, y protocolos de mensajería como SOAP permiten la invocación de comandos en el servidor, lo que unido conlleva un peligro a la integridad del servicio y de los datos almacenados en el servidor. Hasta ahora, no había una propuesta razonable a este grave problema.

Por todo ello, me ha parecido interesante conocer que Tim Berners Lee (el que fuera la mente detrás del WWW) está dirigiendo un grupo de investigación en el MIT para el desarrollo de un nuevo protocolo de tráfico (EN), llamado “HTTPA” (HTTP con rendición de cuentas) que incluiría, mediante el uso de una URI única para cada información enviada, hacer un seguimiento por parte de su emisor y asegurarse de que quien lo recibe tiene los permisos necesarios para recuperarla. De esta manera, se daría solución de base (sin el uso de tecnologías en capas superiores) a buena parte de los problemas que tiene Internet desde la óptica de la seguridad.

La gestión de permisos de acceso a la información sería gestionada en una arquitectura de bloques semejante a la que ya conocemos de las monedas virtuales (un servidor que hace de intermediario mineando peticiones), lo que libra de ese trabajo al emisor y el receptor, evitando así una sobrecarga del tráfico/recursos.

Todo muy bonito en el papel, claro. Luego habrá que ver cuánto falta para que llegue al mundo real, y cuánto costará implementarlo de forma masiva (¿retrocompatibilidad? ¿requisitos de la red?…).