8. Validation d'adresse
8. Validation d'adresse
La validation d'adresse garantit qu'un point de terminaison ne peut pas être utilisé pour une attaque par amplification de trafic. Dans une telle attaque, un paquet est envoyé à un serveur avec des informations d'adresse source usurpées qui identifient une victime. Si un serveur génère plus ou de plus gros paquets en réponse à ce paquet, l'attaquant peut utiliser le serveur pour envoyer plus de données vers la victime qu'il ne pourrait le faire seul.
La défense principale contre les attaques par amplification consiste à vérifier qu'un point de terminaison est capable de recevoir des paquets à l'adresse de transport qu'il revendique. Par conséquent, après avoir reçu des paquets d'une adresse qui n'est pas encore validée, un point de terminaison DOIT limiter la quantité de données qu'il envoie à l'adresse non validée à trois fois la quantité de données reçues de cette adresse.
8.1 Validation d'adresse lors de l'établissement de connexion
L'établissement de connexion fournit implicitement une validation d'adresse pour les deux points de terminaison. En particulier, la réception d'un paquet protégé avec des clés Handshake confirme que le pair a traité avec succès un paquet Initial. Une fois qu'un point de terminaison a traité avec succès un paquet Handshake du pair, il peut considérer l'adresse du pair comme ayant été validée.
8.1.1 Construction de jeton
Un jeton envoyé dans un paquet Retry ou une trame NEW_TOKEN DOIT être construit de manière à permettre au serveur d'identifier comment il a été fourni au client.
8.1.2 Validation d'adresse à l'aide de paquets Retry
Lors de la réception du paquet Initial du client, le serveur peut demander une validation d'adresse en envoyant un paquet Retry (Section 17.2.5) contenant un jeton.
8.1.3 Validation d'adresse pour les connexions futures
Un serveur PEUT fournir aux clients un jeton de validation d'adresse pendant une connexion qui peut être utilisé sur une connexion ultérieure.
8.1.4 Intégrité du jeton de validation d'adresse
Un jeton de validation d'adresse DOIT être difficile à deviner. L'inclusion d'une valeur aléatoire suffisamment grande avec au moins 128 bits d'entropie dans le jeton serait suffisante.
8.2 Validation de chemin
La validation de chemin est utilisée pendant la migration de connexion (voir Section 9) pour vérifier l'accessibilité après un changement d'adresse. Dans la validation de chemin, les points de terminaison testent l'accessibilité entre une adresse locale spécifique et une adresse de pair spécifique, où une adresse est le doublet d'adresse IP et de port.
8.2.1 Initiation de la validation de chemin
Pour initier une validation de chemin, un point de terminaison envoie une trame PATH_CHALLENGE (Section 19.17) contenant une charge utile imprévisible sur le chemin à valider.
8.2.2 Réponses de validation de chemin
Lors de la réception d'une trame PATH_CHALLENGE, un point de terminaison DOIT répondre en renvoyant les données contenues dans la trame PATH_CHALLENGE dans une trame PATH_RESPONSE (Section 19.18).
8.2.3 Validation de chemin réussie
La validation de chemin réussit lorsqu'une trame PATH_RESPONSE est reçue contenant les données qui ont été envoyées dans une trame PATH_CHALLENGE précédente.
8.2.4 Échec de la validation de chemin
La validation de chemin échoue lorsqu'une trame PATH_RESPONSE n'est pas reçue dans le délai attendu.