2. Aperçu du chiffrement des messages push
2. Aperçu du chiffrement des messages push
Le chiffrement d'un message push utilise Diffie-Hellman sur courbes elliptiques (ECDH) [ECDH] sur la courbe P-256 [FIPS186] pour établir un secret partagé (voir section 3.1) et un secret symétrique d'authentification (voir section 3.2).
Un agent utilisateur génère une paire de clés ECDH et un secret d'authentification (authentication secret) pour chaque abonnement qu'il crée. La clé publique ECDH et le secret d'authentification sont envoyés au serveur d'application avec les autres détails de l'abonnement push.
Lors de l'envoi d'un message, le serveur d'application génère une paire de clés ECDH et un sel (salt) aléatoire. La clé publique ECDH est encodée dans le paramètre « keyid » de l'en-tête du codage de contenu chiffré, et le sel dans le paramètre « salt » du même en-tête (voir section 2.1 de [RFC8188]). La paire de clés ECDH peut être supprimée après le chiffrement du message.
Le contenu du message push est chiffré ou déchiffré à l'aide d'une clé de chiffrement de contenu (content encryption key) et d'un nonce. Ces valeurs sont dérivées en prenant « keyid » et « salt » comme entrées du processus décrit à la section 3.
2.1. Distribution des clés et des secrets
L'application qui utilise l'abonnement distribue la clé publique d'abonnement et le secret d'authentification à un serveur d'application autorisé. Cela peut être envoyé avec d'autres informations d'abonnement fournies par l'agent utilisateur, telles que l'URI d'abonnement push.
Une application MUST utiliser un canal de communication authentifié et protégeant la confidentialité à cette fin. Outre les raisons exposées dans [RFC8030], cela garantit que le secret d'authentification n'est pas révélé à des entités non autorisées, ce qui leur permettrait de générer des messages push acceptés par l'agent utilisateur.
La plupart des applications qui utilisent la messagerie push ont déjà une relation avec un serveur d'application qui peut servir à distribuer les données d'abonnement. Un mécanisme de communication authentifié offrant une protection suffisante de la confidentialité et de l'intégrité, tel que HTTPS [RFC2818], suffit.