Zusammenfassung

  • Das Packet Number-Feld enthält nur 1 bis 4 niederwertige Bytes und ist durch header protection maskiert.
  • Der Empfänger wählt anhand der höchsten erfolgreich verarbeiteten Nummer desselben packet-number space einen Kandidaten nahe dem nächsten Erwartungswert.
  • Wiederholte niedrige Bits, Sprünge, Wraps oder Entschlüsselungsfehler beweisen allein weder Verlust noch Replay, Angriff oder Anwendungsschaden.

Eine passive Aufzeichnung verleitet zu einer falschen Einfachheit. Derselbe scheinbare 16-Bit-Wert wird als Replay bezeichnet, ein großer Sprung als Verlust von Millionen Paketen. RFC 9000 und RFC 9001 verlangen dagegen drei getrennte Zustände: die geschützten Bytes auf der Leitung, den gekürzten Wert nach dem Entfernen der header protection und die vollständige, aus Zustand rekonstruierte Packet Number. Die vollständige Nummer ist eine ganze Zahl von 0 bis 2^62-1. Im long header oder short header stehen jedoch nur 1 bis 4 Bytes ihrer niederwertigsten Bits. Auch die Feldlänge ist geschützt.

QUIC führt keine globale Verbindungssequenz. Es gibt die drei packet-number spaces Initial, Handshake und application data; application data umfasst 0-RTT und 1-RTT. Jeder Raum beginnt bei null. Sende- und Empfangsnummern werden je Richtung getrennt verwaltet. Deshalb kann derselbe Zahlenwert verschiedene Pakete bezeichnen. Retry und Version Negotiation tragen keine Packet Number und werden nicht über gewöhnliche ACKs bestätigt.

Die Sendeseite bestimmt die Codierungsbreite aus ihrem Zustand. Vor dem ersten ACK in einem Raum wird die vollständige Nummer gesendet. Danach wählt der Sender genügend Bits, um mehr als das Zweifache des Abstands zwischen der zu sendenden Nummer und Largest Acknowledged abzudecken. Die RFC-Beispiele zeigen den Algorithmus, etwa anhand zusammenhängender unbestätigter Nummern; sie sind keine Zeitgrenzen für den Betrieb und keine Garantie für jedes stark verspätete Paket.

Der Empfänger entfernt zuerst header protection. Erst dann kennt er den unmaskierten gekürzten Wert und die Länge. Der beispielhafte Wiederaufbau benötigt drei Eingaben: die größte im aktuellen Raum erfolgreich verarbeitete Nummer, den gekürzten Wert und die Feldlänge. Der nächste Erwartungswert ist die höchste erfolgreich empfangene Nummer plus eins. Innerhalb des Codierungsfensters wird der Kandidat gewählt, der diesem Erwartungswert am nächsten liegt. Eine passive Aufzeichnung besitzt diese Historie nicht automatisch.

Kommt ein Paket nach vielen höheren Nummern an, können seine niedrigen Bits näher an einem falschen Kandidaten liegen. Ein Fehler beim Entfernen der Schutzschicht oder bei der Authentifizierung ist deshalb allein kein Beweis für einen Protokollfehler des Peers oder einen Angriff. Die rekonstruierte Nummer fließt in die AEAD-Nonce ein; beim Entfernen der packet protection wird der ungeschützte Header bis einschließlich Packet Number als associated data authentifiziert. Ein geratener Wert ist keine authentifizierte Dekodierung.

Largest Acknowledged ist eine andere Evidenzklasse. Es ist eine vollständige Variable-Length Integer, nicht das gekürzte geschützte Headerfeld. ACK ranges nennen empfangene und verarbeitete Pakete im packet-number space des Pakets, das den ACK trägt. Sie können einen authentifizierten Endpunktfakt belegen, aber keine Lücken einer Aufzeichnung nachträglich schließen und nicht in einen anderen Raum übertragen werden. Duplikatverarbeitung erfolgt nach Schutzentfernung und authentischer Nummerngewinnung. Gleiche niedrige Bits reichen dafür nicht aus.

Das Evidenzregister sollte Verbindungsidentität und Richtung, Pakettyp und Raum, geschützte Bytes und Aufzeichnungsabdeckung, Schlüsselkontext und deprotection-Erfolg, codierte Länge und niedrigen Wert, höchste verarbeitete Nummer, Erwartungswert und Fenster, rekonstruierte Nummer und Paketauthentifizierung sowie ACK-Werte und deren Raum getrennt führen. Verlust, Retransmission, Umordnung, Replay, Injection, Angriff, Pfad und Anwendungslieferung benötigen zusätzliche Belege. Eine Lücke kann durch Messposition, Sampling, Kürzung, Entschlüsselungszustand oder tatsächlichen Verkehr entstehen.

Die Grenze ist von TR-038 spin-bit sampling, TR-042 key phase, TR-045 ACK-Liefersemantik, TR-049 Packet Coalescing und TR-051 PTO probing getrennt.