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 portabili i propri contenuti, ovvero di renderli disponibili per la ridistribuzione da parte di altre parti, pur conservando l'integrità e l'attribuzione dei contenuti. I contenuti portatili offrono molti vantaggi, ad esempio consentendo una distribuzione più rapida dei contenuti, facilitando la condivisione dei contenuti tra gli utenti ed esperienze offline più semplici.

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

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 fare affidamento su un server, una connessione o un servizio di hosting specifici. Siamo entusiasti di possibili utilizzi di SXG quali:

  • Precaricamento incentrato sulla tutela della privacy: il precaricamento delle risorse (ad es. tramite link rel=prefetch) per una navigazione successiva può rendere la navigazione molto più veloce, ma presenta anche svantaggi legati alla privacy. Ad esempio, il precaricamento delle risorse per le navigazioni multiorigine comunica al sito di destinazione che l'utente è potenzialmente interessato a un'informazione anche se alla fine non ha visitato il sito. D'altra parte, SXG consente di precaricare le risorse multiorigine da una cache veloce senza mai raggiungere il sito di destinazione, comunicando così l'interesse dell'utente solo se e quando avviene la navigazione. Riteniamo che questa opzione possa essere utile per i siti il cui obiettivo è indirizzare gli utenti su altri siti web. In particolare, Google prevede di utilizzarlo sulle 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. quelli a cui rimanda la prima pagina di reddit.com) spesso sovraccaricano il sito in cui vengono pubblicati i contenuti e, se il sito è relativamente piccolo, tende a rallentare o addirittura a diventare temporaneamente non disponibile. Questa situazione può essere evitata se il contenuto viene condiviso utilizzando server cache veloci e potenti, e SXG lo rende possibile senza condividere le chiavi TLS.

Prova di Signed Exchange

Signed Exchange è disponibile in Chrome 73 e versioni successive ed era precedentemente disponibile come prova dell'origine.

Creazione di SXG

Per creare SXG per la tua origine (in qualità di editore), hai bisogno di una chiave del certificato per firmare la firma e il certificato deve avere un'estensione "CanSignHttpExchanges" speciale 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.

Dopo aver ottenuto un certificato per SXG, puoi creare i tuoi SXG utilizzando gli strumenti per la 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 test locali, pertanto nella firma non devono essere presenti certificati e timestamp validi.

Test della funzionalità in locale

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

Se il server, il certificato e i SXG sono configurati correttamente, il codice come quello riportato di seguito dovrebbe funzionare:

<!-- 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 dall'anchor tag (<a>) e link rel=prefetch in Chrome 73 e versioni successive. Inoltre, tieni presente che la validità della firma è limitata a sette giorni per specifica, quindi i contenuti firmati scadranno relativamente rapidamente.

Feedback

Ci farebbe piacere ricevere il tuo feedback su questo esperimento all'indirizzo webpackage-dev@chromium.org. Puoi anche partecipare alla discussione sulle specifiche o segnalare un bug di Chrome al team. Il tuo feedback sarà di grande aiuto per il processo di standardizzazione e per la risoluzione dei problemi di implementazione.

Feedback