2. Panoramica sulla crittografia dei messaggi push
2. Panoramica sulla crittografia dei messaggi push
La crittografia di un messaggio push usa Elliptic Curve Diffie-Hellman (ECDH) [ECDH] sulla curva P-256 [FIPS186] per stabilire un segreto condiviso (vedere Sezione 3.1) e un segreto simmetrico per l'autenticazione (vedere Sezione 3.2).
Un user agent genera una coppia di chiavi ECDH e un authentication secret associati a ogni subscription che crea. La chiave pubblica ECDH e l'authentication secret sono inviati all'application server insieme agli altri dettagli della push subscription.
Quando invia un messaggio, l'application server genera una coppia di chiavi ECDH e un salt casuale. La chiave pubblica ECDH è codificata nel parametro « keyid » dell'intestazione della codifica di contenuto crittografata, e il salt nel parametro « salt » della stessa intestazione (vedere Sezione 2.1 di [RFC8188]). La coppia di chiavi ECDH può essere eliminata dopo la crittografia del messaggio.
Il contenuto del messaggio push è crittografato o decifrato usando una content encryption key e un nonce. Questi valori sono derivati prendendo « keyid » e « salt » come input del processo descritto nella Sezione 3.
2.1. Distribuzione di chiavi e segreti
L'applicazione che usa la subscription distribuisce la chiave pubblica della subscription e l'authentication secret a un application server autorizzato. Possono essere inviati insieme ad altre informazioni di subscription fornite dall'user agent, come l'URI della push subscription.
Un'applicazione MUST usare un mezzo di comunicazione autenticato e a riservatezza protetta per questo scopo. Oltre alle ragioni descritte in [RFC8030], ciò garantisce che l'authentication secret non sia rivelato a entità non autorizzate, che potrebbero generare messaggi push accettati dall'user agent.
La maggior parte delle applicazioni che usano la messaggistica push ha già una relazione con un application server che può essere usata per distribuire i dati di subscription. È sufficiente un meccanismo di comunicazione autenticato che offra adeguata protezione di riservatezza e integrità, come HTTPS [RFC2818].