Zum Hauptinhalt springen

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.