7. Considérations de sécurité
7. Considérations de sécurité
Les considérations de confidentialité et de sécurité de [RFC8030] s'appliquent toutes à l'usage de ce mécanisme.
La section Considérations de sécurité de [RFC8188] décrit les limites du codage de contenu. En particulier, aucun champ d'en-tête HTTP n'est protégé par le schéma de codage de contenu. Un agent utilisateur MUST considérer que les champs d'en-tête HTTP proviennent du service push.
Bien que des champs d'en-tête puissent être nécessaires pour traiter correctement une réponse HTTP, ils ne sont pas requis au bon fonctionnement du protocole. Une application sur l'agent utilisateur qui se sert des champs d'en-tête pour modifier son traitement d'un message push s'expose à une attaque du service push.
Le moment et la durée des communications ne peuvent pas être cachés au service push. Un observateur extérieur peut voir des messages entremêlés, mais le service push voit quel serveur d'application parle à quel agent utilisateur et quel abonnement est utilisé. De plus, la longueur des messages peut être révélée à moins d'utiliser le remplissage du schéma de codage de contenu pour masquer la longueur.
L'agent utilisateur et l'application MUST vérifier que la clé publique reçue se situe sur la courbe P-256. L'absence de validation peut permettre à un attaquant d'extraire une clé privée. Les procédures de validation appropriées sont définies à la section 4.3.7 de [X9.62] et, en variante, à la section 5.6.2.3 de [KEYAGREEMENT]. Le processus comporte trois étapes :
-
Vérifier que Y n'est pas le point à l'infini (O),
-
Vérifier que pour Y = (x, y), les deux entiers sont dans l'intervalle correct,
-
S'assurer que (x, y) est une solution correcte de l'équation de la courbe elliptique.
Pour ces courbes, les implémentateurs n'ont pas besoin de vérifier l'appartenance au sous-groupe correct.
Si ce schéma de chiffrement devait être remplacé, un nouveau codage de contenu pourrait être défini. Pour un déploiement progressif, l'agent utilisateur peut exposer les codages de contenu qu'il prend en charge. Le paramètre « supportedContentEncodings » de l'API Push [API] en est un exemple.