30 sept 2019

La seguridad en HTTP3 (QUIC - Quick UDP Internet Connections). Parte 1



Buenas a todos, al comienzo del verano tuvo lugar el congreso Euskalhack, uno de los eventos más importantes del panorama europeo, y donde se dieron cita numerosos ponentes nacionales e internacionales de gran relevancia.

Este año tuve la oportunidad de asistir como ponente junto a mi compañero de Zerolynx, Jesús Alcalde, para presentar una investigación que llevábamos unos meses realizando sobre el protocolo HTTP/3

En la conferencia tratamos brevemente el contexto histórico que rodeaba al protocolo, para después entrar en aspectos técnicos sobre su implementación, funcionamiento, medidas de seguridad, y lo más importante, los posibles problemas que podrían ocasionar la evasión de dichas medidas.

Durante los próximos artículos de esta cadena os detallaremos todos estos puntos, con el fin de que podáis ampliar vuestro conocimiento sobre este nuevo protocolo, y jugar con su implementación. Por lo que comencemos por el principio.

A lo largo de los últimos veinte años, Internet ha crecido y evolucionado hasta convertirse en uno de los núcleos de la sociedad, situándose como una infraestructura crítica sin la que una gran parte de los negocios que hoy se conocen, dejarían de existir. Desde finales de los 90 hasta la actualidad, el número de usuarios de Internet ha crecido desde los 360 a los 4.000 millones de usuarios. Este crecimiento ha sido posible gracias, entre otros elementos, al abaratamiento de las conexiones de Internet, lo que ha permitido que usuarios cotidianos puedan acceder a la World Wide Web desde sus domicilios y trabajos, sin necesidad de formar parte de universidades, ejércitos o gobiernos. De igual manera, el nacimiento de buscadores como Altavista, lanzado en 1995, y en especial, Google, cuyo desarrollo fue iniciado por Larry Page y Sergey Brin entre 1996 y 1998,  contribuyeron especialmente a facilitar el acceso a los contenidos existentes de Internet, y por tanto, a su acercamiento a una gran parte de la sociedad que carecía de conocimientos técnicos en informática. 

Sin embargo, no es posible hablar de Internet sin tratar los protocolos que han permitido su nacimiento y evolución, en especial, HTTP. HTTP, siglas de Hypertext Transfer Protocol, es un protocolo de comunicación desarrollado por el World Wide Web Consortium y la Internet Engineering Task Force, y que fue lanzado en 1991 en su primera versión, ya obsoleta, la cual permitía realizar peticiones GET para comunicarse con un servidor. No soportaba cabeceras, ni peticiones POST, pero fue la base necesaria para que en 1996 pudiese lanzarse una revisión de HTTP en la que fue su versión 1.0, con soporte para los métodos GET, HEAD y POST. Tres años después, fue lanzado HTTP 1.1, versión más utilizada en la actualidad, con soporte para pipelining, lo que permitía reducir los tiempos de cada petición. Esta versión de HTTP fue plasmada en la RFC 2616 y pronto se convirtió en referencia para la evolución del Internet tal y como hoy se conoce.

En el año 2000 fueron lanzados los primeros borradores de HTTP 1.2, bajo la RFC 2774 (experimental), la cual proponía entre otros puntos de interés, el Protocolo de Extensión de Protocolo (PEP) para la extensión de aplicaciones. Tras muchos años de estabilidad y consenso, con el extendido uso de HTTP 1.1, comienzan a surgir los primeros borradores de HTTP 2 entre 2012 y 2015, los cuales incorporaban interesantes mejoras enfocadas al empaquetamiento de datos y al transporte. Estas mejoras se han seguido evolucionando en diversos borradores bajo el nombre HTTP-over-QUIC, que finalmente ha sido renombrado como HTTP 3 tras una propuesta realizada por el presidente del grupo de trabajo de Ingeniería de Internet  (IETF) que estaba trabajando en ello .

HTTP 3, entre sus mayores cambios, propone el reemplazo del protocolo TCP, que da soporte en la actualidad a las aplicaciones más habituales y a los clientes FTP, entre otros, por el protocolo QUIC. 

QUIC (siglas de “Quick UDP Internet Connections”) es un nuevo protocolo diseñado en su origen por Google, que aúna las mejores ideas de HTTP 2, TCP, UDP y TLS. QUIC se basa en UDP, por lo que es más rápido que los métodos de transporte conocidos hasta el momento, y más seguro, al hacer uso por defecto de TLS 1.3. 

El uso de HTTP 3 está comenzando a extenderse, y ya es soportado por navegadores como Google Chrome, Firefox y Opera, y por sitios web como Facebook, tal y como podéis ver en la siguiente noticia de Genbeta:


En el próximo post de la cadena trataremos la evolución de las conexiones, y el papel que han jugado en el protocolo QUIC tal y como hoy es conocido.

Saludos!

No hay comentarios:

Publicar un comentario