8. Adressvalidierung
8. Adressvalidierung
Die Adressvalidierung stellt sicher, dass ein Endpunkt nicht für einen Traffic-Amplification-Angriff verwendet werden kann. Bei einem solchen Angriff wird ein Paket mit gefälschten Quelladressinformationen, die ein Opfer identifizieren, an einen Server gesendet. Wenn ein Server als Antwort auf dieses Paket mehr oder größere Pakete generiert, kann der Angreifer den Server nutzen, um mehr Daten in Richtung des Opfers zu senden, als er selbst senden könnte.
Die primäre Verteidigung gegen Amplification-Angriffe ist die Überprüfung, dass ein Endpunkt in der Lage ist, Pakete an der Transportadresse zu empfangen, die es beansprucht. Daher MUSS ein Endpunkt nach dem Empfang von Paketen von einer noch nicht validierten Adresse die Menge der an die nicht validierte Adresse gesendeten Daten auf das Dreifache der von dieser Adresse empfangenen Datenmenge begrenzen.
8.1 Adressvalidierung während des Verbindungsaufbaus
Der Verbindungsaufbau bietet implizit eine Adressvalidierung für beide Endpunkte. Insbesondere bestätigt der Empfang eines mit Handshake-Schlüsseln geschützten Pakets, dass der Peer ein Initial-Paket erfolgreich verarbeitet hat. Sobald ein Endpunkt ein Handshake-Paket vom Peer erfolgreich verarbeitet hat, kann es die Peer-Adresse als validiert betrachten.
8.1.1 Token-Konstruktion
Ein in einem Retry-Paket oder NEW_TOKEN-Frame gesendetes Token MUSS so konstruiert sein, dass der Server identifizieren kann, wie es dem Client bereitgestellt wurde.
8.1.2 Adressvalidierung mit Retry-Paketen
Nach Erhalt des Initial-Pakets des Clients kann der Server eine Adressvalidierung anfordern, indem er ein Retry-Paket (Abschnitt 17.2.5) sendet, das ein Token enthält.
8.1.3 Adressvalidierung für zukünftige Verbindungen
Ein Server KANN Clients während einer Verbindung ein Adressvalidierungs-Token bereitstellen, das bei einer nachfolgenden Verbindung verwendet werden kann.
8.1.4 Integrität des Adressvalidierungs-Tokens
Ein Adressvalidierungs-Token MUSS schwer zu erraten sein. Die Einbeziehung eines ausreichend großen Zufallswerts mit mindestens 128 Bits Entropie im Token wäre ausreichend.
8.2 Pfadvalidierung
Die Pfadvalidierung wird während der Verbindungsmigration verwendet (siehe Abschnitt 9), um die Erreichbarkeit nach einer Adressänderung zu überprüfen. Bei der Pfadvalidierung testen Endpunkte die Erreichbarkeit zwischen einer bestimmten lokalen Adresse und einer bestimmten Peer-Adresse, wobei eine Adresse das Zweier-Tupel aus IP-Adresse und Port ist.
8.2.1 Initiierung der Pfadvalidierung
Um eine Pfadvalidierung zu initiieren, sendet ein Endpunkt einen PATH_CHALLENGE-Frame (Abschnitt 19.17) mit einer unvorhersehbaren Payload auf dem zu validierenden Pfad.
8.2.2 Pfadvalidierungs-Antworten
Beim Empfang eines PATH_CHALLENGE-Frames MUSS ein Endpunkt antworten, indem es die im PATH_CHALLENGE-Frame enthaltenen Daten in einem PATH_RESPONSE-Frame (Abschnitt 19.18) zurücksendet.
8.2.3 Erfolgreiche Pfadvalidierung
Die Pfadvalidierung ist erfolgreich, wenn ein PATH_RESPONSE-Frame empfangen wird, der die Daten enthält, die in einem vorherigen PATH_CHALLENGE-Frame gesendet wurden.
8.2.4 Fehlgeschlagene Pfadvalidierung
Die Pfadvalidierung schlägt fehl, wenn ein PATH_RESPONSE-Frame nicht innerhalb der erwarteten Zeit empfangen wird.