Beskyttede pakker udløber ikke kryptografisk, så en pakke, der var gyldig for fem minutter siden, er stadig gyldig nu, fordi kryptering og integritetsbeskyttelse intet siger om, hvornår bytes blev fremstillet. En angriber, der kan opsnappe og gensende trafik, behøver ikke bryde chifferen. Derfor bærer enhver seriøs tunnelprotokol sekvenstilstand sammen med sine nøgler.

Mekanismen er lille, og dens fejltilstande er lette at forveksle med pakketab.

Gyldig chiffertekst er ikke frisk chiffertekst

Autentificering besvarer ét spørgsmål: kom disse bytes uændrede fra en, der har nøglen. Det besvarer ikke, om det er første gang, modtageren ser dem. En genafspillet pakke består den første prøve perfekt, og netop derfor kan integritetskontrol alene ikke stoppe en genafspilning, og derfor har protokollen brug for en anden regel om accept. En modtager, der kun autentificerer, har intet forsvar mod en angriber med en optagelse.

Den regel er billig at implementere og billig at formulere: accepter en given beskyttet pakke én gang under en given nøgle. Alt andet på dette område følger af, hvordan implementeringen holder styr på den ene gang.

At læse et genafspilningskast som en dekrypteringsfejl sender dig til det helt forkerte delsystem.

Et sekvensnummer og et vindue

IPsec ESP bærer et sekvensnummer, og modtageren holder et glidende vindue over nyligt accepterede værdier, mens ESP-specifikationen beskriver standardvinduets størrelse og muligheden for at udvide det. WireGuard tager en anden vej med en tæller per nøgle og et eksplicit tjek imod den. Ingen af designene antager, at pakker ankommer i rækkefølge, fordi rigtige netværk omarrangerer dem. Begge tolererer omarrangering, og ingen af dem tolererer gentagelse.

Vinduet er det, der gør den tolerance mulig. En pakke lidt bag den højeste sete værdi kan stadig accepteres, hvis den ikke er blevet accepteret før; en langt bagud, eller en hvis plads allerede er markeret, kastes. Øg vinduet, og du tolererer mere omarrangering på bekostning af mere tilstand per association.

Diagnostiske tællere viser dig, hvilket tilfælde du er i. Genafspilningskast øger en specifik tæller frem for en generisk fejl, og at læse den tæller er den første nyttige observation.

nstat -az | grep -i XfrmIn
ip -s xfrm state | head -n 30
wg show wg0 transfer

Tilstand hører til nøglen, ikke til værten

Tællertilstand er bundet til en sikkerhedsassociation eller en nøgleepoke, så en nøgleudskiftning skaber en frisk kontekst og sit eget sekvensrum. At rydde en tæller uden at udskifte nøglen, eller at genbruge en association efter en manuel nulstilling, bryder den antagelse, som modtagerens vindue afhænger af. Derfor findes protokolstyret nøgleudskiftning i stedet for en nulstillingsknap, som operatøren kan se.

Når en tunnel opfører sig dårligt efter en manuel indgriben, så spørg, om indgrebet rørte ved sekvenstilstanden. En konfiguration, der ser identisk ud, kan opføre sig anderledes, fordi den tilstand, den arvede, ikke er den tilstand, den forventer.

Diagnosticer årsagen, før du deaktiverer noget

Tab, omarrangering, duplikeret trafik og en implementeringsfejl viser sig alle som gensendelser, og kun én af dem er et genafspilningsproblem. At deaktivere kontrollen for at dæmpe støj fjerner den egenskab, du var afhængig af, og gør den oprindelige årsag sværere at finde, fordi gensendelserne nu slet ingen forklaring har.

Indsaml afgrænset evidens: associations-id'er, sekvensnumre og tællere, uden nyttelast. Det er nok til at skelne en dublet fra en omarrangeret ankomst, og det gør ikke din diagnostiske fil til en kopi af brugerens trafik.

Hvad kontrollen ikke lover

Genafspilningsbeskyttelse er en egenskab ved pakkebehandling inde i én protokol. Det betyder ikke, at operatøren ikke fører logfiler, at et websted ikke kan genkende en konto, eller at en session er anonym. Det er separate spørgsmål om separate systemer, og et stærkt anti-genafspilningsdesign besvarer ingen af dem.

Vedligeholdt software med understøttede indstillinger er den praktiske kontrol, en bruger har. Protokollen håndterer pakken; alt andet forbliver en driftsbeslutning.

Relaterede artikler