Beveiligde pakketten verlopen niet cryptografisch, dus een pakket dat vijf minuten geleden geldig was, is nu nog geldig, omdat encryptie en integriteitsbescherming niets zeggen over wanneer de bytes zijn gemaakt. Een aanvaller die verkeer kan onderscheppen en opnieuw kan versturen, hoeft het cijfer niet te breken. Daarom draagt elk serieus tunnelprotocol sequentietoestand naast zijn sleutels.

Het mechanisme is klein, en de faalmodi ervan zijn makkelijk te verwarren met pakketverlies.

Geldige ciphertext is geen verse ciphertext

Authenticatie beantwoordt één vraag: kwamen deze bytes ongewijzigd van iemand met de sleutel. Ze beantwoordt niet of dit de eerste keer is dat de ontvanger ze ziet. Een herspeeld pakket doorstaat de eerste test perfect, en daarom kan integriteitscontrole alleen een herhaling niet stoppen en daarom heeft het protocol een tweede regel over acceptatie nodig. Een ontvanger die alleen authenticeert, heeft geen verdediging tegen een aanvaller met een opname.

Die regel is goedkoop te implementeren en goedkoop te formuleren: accepteer een gegeven beveiligd pakket één keer, onder een gegeven sleutel. Al het andere in dit gebied volgt uit hoe de implementatie die ene keer bijhoudt.

Een herspelingsafwijzing lezen als een ontsleutelingsfout stuurt je naar het volledig verkeerde subsysteem.

Een sequentienummer en een venster

IPsec ESP draagt een sequentienummer en de ontvanger houdt een schuivend venster bij van recent geaccepteerde waarden, waarbij de ESP-specificatie de standaardvenstergrootte en de optie om die te vergroten beschrijft. WireGuard neemt een andere route met een teller per sleutel en een expliciete controle daartegen. Geen van beide ontwerpen veronderstelt dat pakketten in volgorde aankomen, omdat echte netwerken ze herordenen. Beide tolereren herordening, en geen van beide tolereert herhaling.

Het venster is wat die tolerantie mogelijk maakt. Een pakket iets achter de hoogste geziene waarde kan nog worden geaccepteerd als het niet eerder is geaccepteerd; een pakket ver daarachter, of een waarvan de plaats al is gemarkeerd, wordt weggegooid. Vergroot het venster en je tolereert meer herordening tegen de kosten van meer toestand per associatie.

Diagnostische tellers laten zien in welk geval je zit. Herspelingsafwijzingen verhogen een specifieke teller in plaats van een algemene fout, en die teller lezen is de eerste nuttige observatie.

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

Toestand hoort bij de sleutel, niet bij de host

Tellertoestand is gebonden aan een beveiligingsassociatie of een sleutelperiode, dus een sleutelwissel maakt een verse context en een eigen sequentieruimte. Een teller wissen zonder de sleutel te vervangen, of een associatie hergebruiken na een handmatige reset, breekt de aanname waarop het venster van de ontvanger leunt. Daarom bestaat er protocolgestuurde sleutelwissel in plaats van een resetknop die de operator ziet.

Als een tunnel zich na een handmatige ingreep slecht gedraagt, vraag dan of de ingreep de sequentietoestand heeft aangeraakt. Een configuratie die er identiek uitziet kan zich anders gedragen omdat de geërfde toestand niet de verwachte is.

Diagnosticeer de oorzaak voordat je iets uitschakelt

Verlies, herordening, gedupliceerd verkeer en een implementatiefout komen allemaal naar voren als hertransmissies, en slechts één ervan is een herspelingsprobleem. De controle uitschakelen om ruis te dempen verwijdert de eigenschap waarop je vertrouwde en maakt de oorspronkelijke oorzaak moeilijker te vinden, omdat de hertransmissies nu helemaal geen verklaring hebben.

Verzamel beperkt bewijs: associatie-identificaties, sequentienummers en tellers, zonder de payloads. Dat is genoeg om een duplicaat van een herordende aankomst te onderscheiden, en het maakt je diagnosebestand niet tot een kopie van het verkeer van de gebruiker.

Wat de controle niet belooft

Herspelingsbescherming is een eigenschap van pakketverwerking binnen één protocol. Het betekent niet dat de operator geen logboeken bijhoudt, dat een website geen account kan herkennen of dat een sessie anoniem is. Dat zijn aparte vragen over aparte systemen, en een sterk anti-herspelingsontwerp beantwoordt geen daarvan.

Onderhouden software met ondersteunde instellingen is de praktische controle die een gebruiker heeft. Het protocol verwerkt het pakket; al het andere blijft een operationele beslissing.

Gerelateerde artikelen