Intercambios HTTP firmados

Kinuko Yasuda

El intercambio de HTTP firmado (o "SXG") es un subconjunto de la tecnología emergente denominado Paquetes web, que permite a los editores hacer que su contenido sea portátil de forma segura, es decir, que esté disponible para que otras partes lo redistribuyan sin perder la integridad y atribución del contenido. El contenido portátil tiene muchos beneficios, desde permitir una entrega más rápida de contenido hasta facilitar el uso compartido de contenido entre usuarios y experiencias sin conexión más simples.

¿Cómo funcionan los intercambios HTTP firmados? Esta tecnología permite que un publicador firma un solo intercambio HTTP (es decir, un par de solicitud/respuesta), de la forma en que el intercambio firmado se puede entregar desde cualquier servidor de almacenamiento en caché. Cuando el navegador carga este intercambio firmado, puede mostrar de forma segura la URL del editor en la barra de direcciones porque la firma en el intercambio es una prueba suficiente de que el contenido provino originalmente del origen del editor.

Intercambio firmado: la esencia

Esto desvincula el origen del contenido de la persona que lo distribuye. Tu contenido se puede publicar en la Web sin depender de un servidor, una conexión o un servicio de hosting específicos. Nos entusiasman los posibles usos de SXG, como los siguientes:

  • Carga previa que preserva la privacidad: Si bien la carga previa de recursos (p.ej., by link rel=prefetch) para una navegación posterior, puede hacer que la navegación se sienta mucho más rápida, pero también tiene desventajas de privacidad. Por ejemplo, la carga previa de los recursos para navegaciones de origen cruzado divulgará al sitio de destino que el usuario podría estar posiblemente interesado en un determinado fragmento de información, incluso si, en última instancia, el usuario no visitó el sitio. Por otro lado, SXG permite la carga previa de recursos de origen cruzado desde una caché rápida sin llegar nunca al sitio de destino, por lo que solo comunica el interés del usuario cuando se produce la navegación. Creemos que esto puede ser útil para los sitios cuyo objetivo es enviar a sus usuarios a otros sitios web. En particular, Google planea usarlo en las páginas de resultados de la Búsqueda de Google para mejorar las URLs de AMP y acelerar los clics en los resultados de la búsqueda.

  • Beneficios de tener una CDN sin ceder el control de la clave privada del certificado: El contenido que se vuelve popular de repente (p.ej., un vínculo desde la primera página de reddit.com) suele sobrecargar el sitio donde se entrega el contenido y, si es relativamente pequeño, tiende a volverse más lento o, incluso, a dejar de estar disponible temporalmente. Esta situación se puede evitar si el contenido se comparte con servidores de caché rápidos y potentes, y SXG lo hace posible sin compartir tus claves TLS.

Prueba de intercambios firmados

Los intercambios firmados están disponibles en Chrome 73 y versiones posteriores, y antes estaban disponibles como prueba de origen.

Creando tu SXG

A fin de crear SXG para tu origen (como publicador), necesitas una clave de certificado para firmar la firma, y el certificado debe tener una extensión “CanSignHttpExchanges” especial para procesarlo como una SXG válida. A partir de noviembre de 2018, DigiCert es la única AC que admite esta extensión, y puedes solicitar el certificado que funciona para SXG en esta página.

Una vez que obtengas un certificado para SXG, puedes crear tus propios SXG con las herramientas del generador de referencias publicadas en GitHub.

También puedes ver los archivos de ejemplo de SXG reales en el repositorio de código de Chrome (p.ej., este es el más simple creado para un archivo de texto simple). Ten en cuenta que se generan principalmente para pruebas locales; no se espera que tengan certificados y marcas de tiempo válidos en la firma.

Prueba la función de manera local

Para crear SXG con fines de prueba, puedes crear un certificado autofirmado y habilitar chrome://flags/#allow-sxg-certs-without-extension para que tu Chrome procese los SXG creados con el certificado sin la extensión especial.

El código como el siguiente debería funcionar si el servidor, el certificado y los SXG están configurados correctamente:

<!-- prefetch the sample.sxg -->
<link rel="prefetch" href="https://your-site.com/sample.sxg" />

<!-- clicking the link below should make Chrome navigate to the inner
     response of sample.sxg (and the prefetched SXG is used) -->
<a href="https://your-site.com/sample.sxg">Sample</a>

Ten en cuenta que SXG solo es compatible con la etiqueta de anclaje (<a>) y link rel=prefetch en Chrome 73 y versiones posteriores. Además, ten en cuenta que la validez de la firma se limita a 7 días por especificación, por lo que el contenido firmado vencerá relativamente rápido.

Comentarios

Nos gustaría recibir tus comentarios sobre este experimento en webpackage-dev@chromium.org. También puedes unirte al debate sobre especificaciones o informar un error de Chrome al equipo. Tus comentarios serán de gran ayuda con el proceso de estandarización y también nos ayudarán a abordar los problemas de implementación.

Comentarios