Piattaforme di scambio HTTP firmate

Kinuko Yasuda

Signed HTTP Exchange (o "SXG") è un sottoinsieme della tecnologia emergente chiamata Web Packages, che consente agli editori di rendere in sicurezza portabili i propri contenuti, ovvero renderli disponibili per la ridistribuzione da parte di altre parti, mantenendo al contempo l'integrità e l'attribuzione dei contenuti. I contenuti portatili presentano numerosi vantaggi, tra cui la distribuzione più rapida dei contenuti, la facilitazione della condivisione dei contenuti tra utenti e la semplificazione delle esperienze offline.

Come funzionano le piattaforme Signed HTTP Exchange? Questa tecnologia consente a un editore di firmare un singolo scambio HTTP (ovvero una coppia di richiesta/risposta), in modo che il Signed Exchange possa essere fornito 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 nello scambio è una prova sufficiente che i contenuti provengono originariamente dall'origine dell'editore.

Signed Exchange: l'essenza

che separa l'origine dei contenuti 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 specifici. Siamo entusiasti dei possibili usi di SXG, come ad esempio:

  • Precaricamento incentrato sulla tutela della privacy: sebbene il precaricamento delle risorse (ad es. tramite link rel=prefetch) per una navigazione successiva possa rendere la navigazione molto più veloce, presenta anche degli svantaggi in termini di privacy. Ad esempio, il precaricamento delle risorse per le navigazioni multiorigine indicherà al sito di destinazione che l'utente è potenzialmente interessato a un'informazione anche se alla fine non ha visitato il sito. SXG consente invece di precaricare le risorse multiorigine da una cache rapida senza mai raggiungere il sito di destinazione, comunicando così l'interesse dell'utente solo se e quando avviene la navigazione. Riteniamo che questo possa essere utile per i siti il cui obiettivo è indirizzare gli utenti ad altri siti web. Nello specifico, Google prevede di utilizzare questa impostazione 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 improvvisamente diventati popolari (ad esempio, collegati dalla prima pagina di reddit.com) spesso sovraccaricano il sito su cui vengono pubblicati i contenuti e, se il sito è relativamente piccolo, tendono a rallentare o persino a non essere temporaneamente disponibili. Questa situazione può essere evitata se i contenuti vengono condivisi tramite server di cache veloci e potenti e SXG rende possibile tutto questo senza condividere le chiavi TLS.

Prova di Signed Exchange

Signed Exchange sono disponibili in Chrome 73 e versioni successive. In precedenza erano disponibili come prova dell'origine.

Creazione di SXG

Per creare SXG per la tua origine (come editore), devi avere una chiave di certificato per firmare la firma e il certificato deve avere un'estensione "CanSignHttpExchanges" speciale per essere elaborato come un SXG valido. A partire da novembre 2018, DigiCert è l'unica CA che supporta questa estensione ed è possibile 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 di 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.

Test della funzionalità a livello locale

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

Un codice come il seguente dovrebbe funzionare se server, certificato e 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 dall'anchor tag (<a>) e da 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.

Invio di feedback

Ci piacerebbe 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à molto utile per il processo di standardizzazione e ci aiuterà a risolvere i problemi di implementazione.

Feedback