Piattaforme di scambio HTTP firmate

Kinuko Yasuda

Signed HTTP Exchange (o "SXG") è un sottoinsieme della tecnologia emergente chiamata Web Packages, che consente ai publisher di rendere i propri contenuti portatili in tutta sicurezza, ovvero disponibili per la ridistribuzione da parte di altre parti, senza compromettere l'integrità e l'attribuzione degli stessi. I contenuti portatili hanno molti vantaggi, dal caricamento più rapido alla condivisione tra utenti, fino a esperienze offline più semplici.

Come funzionano gli scambi Signed HTTP Exchange? Questa tecnologia consente a un publisher di firmare un singolo scambio HTTP (ovvero una coppia di richiesta/risposta), in modo che lo scambio firmato possa essere pubblicato da qualsiasi server con cache. Quando il browser carica questo Signed Exchange, può mostrare in sicurezza l'URL del publisher nella barra degli indirizzi perché la firma nell'exchange è una prova sufficiente che i contenuti provengono originariamente dall'origine del publisher.

Signed Exchange: l'essenza

In questo modo, l'origine dei contenuti viene disaccoppiata da chi li distribuisce. I tuoi contenuti possono essere pubblicati sul web senza dover fare affidamento su un server, una connessione o un servizio di hosting specifico. Siamo entusiasti dei possibili utilizzi di SXG, ad esempio:

  • Precaricamento che tutela la privacy: anche se il precaricamento delle risorse (ad es. tramite il link rel=prefetch) per una navigazione successiva può rendere la navigazione molto più rapida, ha anche aspetti negativi per la privacy. Ad esempio, il pre-caricamento delle risorse per le navigazioni cross-origin comunica al sito di destinazione che l'utente è potenzialmente interessato a una determinata informazione, anche se alla fine non ha visitato il sito. D'altra parte, SXG consente di prelevare le risorse cross-origin da una cache rapida senza mai raggiungere il sito di destinazione, comunicando così l'interesse dell'utente solo se e quando si verifica la navigazione. Riteniamo che questa funzionalità possa essere utile per i siti il cui scopo è indirizzare gli utenti ad altri siti web. In particolare, Google intende utilizzare questa funzionalità nelle pagine dei risultati di ricerca di Google per migliorare gli URL AMP e velocizzare i clic sui risultati di ricerca.

  • Vantaggi di una CDN senza cedere il controllo della chiave privata del certificato: I contenuti che sono diventati improvvisamente popolari (ad es. collegati dalla prima pagina di reddit.com) spesso sovraccaricano il sito in cui vengono pubblicati e, se il sito è relativamente piccolo, tende a rallentare o addirittura a non essere disponibile temporaneamente. Questa situazione può essere evitata se i contenuti vengono condivisi utilizzando server cache potenti e veloci e SXG lo rende possibile senza condividere le chiavi TLS.

Provare Signed Exchange

Gli scambi firmati sono disponibili in Chrome 73 e versioni successive ed erano precedentemente disponibili come prova dell'origine.

Creazione del gruppo di sincronizzazione dei dati

Per creare SXG per la tua origine (in qualità di publisher), devi disporre di una chiave del certificato per firmare la firma e il certificato deve avere un'estensione speciale "CanSignHttpExchanges" per essere elaborato come SXG valido. A partire da novembre 2018, DigiCert è l'unica CA che supporta questa estensione e puoi richiedere il certificato che funziona per SXG da questa pagina.

Una volta ottenuto un certificato per SXG, puoi creare i tuoi SXG utilizzando gli strumenti di generazione di riferimenti pubblicati su GitHub.

Puoi anche dare un'occhiata ai file di esempio SXG effettivi nel repository del codice di Chrome (ad es. questo è il più semplice creato per un semplice file di testo). Tieni presente che vengono generati principalmente per i test locali, quindi non aspettarti che abbiano certificati e timestamp validi nella firma.

Testare la funzionalità localmente

Per creare SXG a scopo di test, puoi creare un certificato autofirmato e attivare chrome://flags/#allow-sxg-certs-without-extension per consentire a Chrome di elaborare gli SXG creati con il certificato senza l'estensione speciale.

Un codice come il seguente dovrebbe funzionare se il server, il certificato e gli SXG sono configurati correttamente:

<!-- 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>

Tieni presente che SXG è supportato solo dal tag anchor (<a>) e da link rel=prefetch in Chrome 73 e versioni successive. Tieni inoltre presente che la validità della firma è limitata a 7 giorni come da specifiche, pertanto i contenuti firmati scadranno relativamente rapidamente.

Inviare feedback

Saremo lieti di ricevere il tuo feedback su questo esperimento all'indirizzo webpackage-dev@chromium.org. Puoi anche partecipare alla discussione sulle specifiche o segnalare al team un bug di Chrome. Il tuo feedback contribuirà notevolmente alla procedura di standardizzazione e ci aiuterà anche a risolvere i problemi di implementazione.

Feedback