7. Sécurité des messages initiaux (Security of Initial Messages)
Les paquets Initial ne bénéficient pas d'authentification basée sur un secret. L'authentification pour ces paquets provient entièrement du handshake qui suit. Un adversaire pourrait :
- Injecter, modifier ou supprimer des paquets Initial
- Rejouer des paquets Initial
- Provoquer l'envoi de grands volumes de trafic d'attaque par réflexion
Les exigences énoncées dans cette section limitent l'impact de ces attaques.
7.1. Attaques par amplification (Amplification Attacks)
Les attaques par amplification sont une préoccupation pour tous les protocoles, mais QUIC ajoute des contraintes supplémentaires. Un serveur DOIT (MUST) utiliser les mécanismes anti-amplification décrits dans la section 8.1 de [QUIC-TRANSPORT].
7.2. Authentification de la négociation de version (Version Negotiation Authentication)
Le paquet Version Negotiation n'a aucune protection cryptographique. Les endpoints DOIVENT (MUST) vérifier l'intégrité du résultat de la négociation de version en vérifiant que :
- Le ClientHello contient une version prise en charge par le client
- La version sélectionnée par le serveur est également prise en charge par le client
Cette vérification empêche un attaquant de forcer une dégradation de version en modifiant les paquets Version Negotiation.
7.3. Intégrité de la négociation de version étendue
Comme décrit dans la section précédente, le mécanisme de base garantit que si une connexion QUIC est établie avec succès, elle utilise une version acceptable pour les deux pairs. Cependant, un attaquant pourrait toujours influencer la sélection de version en supprimant sélectivement des paquets Initial.
Pour détecter de telles attaques, la version réellement utilisée est authentifiée en incluant sa valeur dans les messages de handshake TLS. Le client inclut une extension dans le ClientHello qui contient toutes les versions que le client tente d'utiliser (voir section 8.1).
7.4. Déni de service avec paquets Initial modifiés
Un attaquant peut modifier des paquets Initial pour provoquer une utilisation inefficace des ressources. Par exemple, un attaquant pourrait modifier des paquets Initial pour augmenter la taille des messages de handshake, provoquant le gaspillage de ressources serveur.
Les serveurs NE DOIVENT PAS (MUST NOT) conserver l'état de connexion (allouer des ressources) jusqu'à ce que les informations du client aient été authentifiées avec succès.