Els paquets protegits no caduquen criptogràficament, així que un que era vàlid fa cinc minuts encara és vàlid ara, perquè el xifratge i la protecció d’integritat no diuen res sobre quan es van produir els bytes. Un atacant que pot capturar i reenviar trànsit no necessita trencar el xifratge. Per això cada protocol de túnel seriós porta estat de seqüència al costat de les seves claus.

El mecanisme és petit, i els seus modes de fallada es confonen fàcilment amb la pèrdua de paquets.

El text xifrat vàlid no és text xifrat fresc

L’autenticació respon una pregunta: aquests bytes han arribat sense modificar d’algú que té la clau. No respon si és la primera vegada que el receptor els veu. Un paquet reproduït supera perfectament la primera prova, i per això exactament la comprovació d’integritat sola no pot aturar una reproducció i el protocol necessita una segona regla sobre l’acceptació. Un receptor que només autentica no té cap defensa contra un atacant que té un enregistrament.

Aquesta regla és barata d’implementar i barata d’enunciar: accepta un paquet protegit determinat una vegada, sota una clau determinada. Tota la resta en aquest àmbit es deriva de com la implementació fa el seguiment d’aquesta única vegada.

Llegir un descartament per reproducció com una fallada de desxifratge et porta al subsistema completament equivocat.

Un número de seqüència i una finestra

IPsec ESP porta un número de seqüència i el receptor manté una finestra lliscant dels valors acceptats recentment, amb l’especificació ESP que descriu la mida de finestra per defecte i l’opció d’ampliar-la. WireGuard segueix una ruta diferent amb un comptador per clau i una comprovació explícita contra ell. Cap dels dos dissenys no assumeix que els paquets arribin en ordre, perquè les xarxes reals els reordenen. Tots dos toleren el reordenament, i cap no tolera la repetició.

La finestra és el que fa possible aquesta tolerància. Un paquet una mica per darrere del valor més alt vist encara es pot acceptar si no s’havia acceptat abans; un de molt per darrere, o un amb la casella ja marcada, es descarta. Augmenta la finestra i toleraràs més reordenament a canvi de més estat per associació.

Els comptadors de diagnòstic et mostren en quin cas ets. Els descartaments per reproducció incrementen un comptador específic en lloc d’un error genèric, i llegir aquest comptador és la primera observació útil.

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

L’estat pertany a la clau, no a l’amfitrió

L’estat del comptador està lligat a una associació de seguretat o a una època de clau, així que una renovació de clau crea un context nou i el seu propi espai de seqüència. Esborrar un comptador sense substituir la clau, o reutilitzar una associació després d’un reinici manual, trenca la suposició de la qual depèn la finestra del receptor. Per això existeix la renovació de claus impulsada pel protocol en lloc d’un botó de reinici visible per a l’operador.

Quan un túnel es comporta malament després d’una intervenció manual, pregunta si la intervenció ha tocat l’estat de seqüència. Una configuració que sembla idèntica pot comportar-se diferent perquè l’estat que ha heretat no és l’estat que espera.

Diagnostica la causa abans de desactivar res

La pèrdua, el reordenament, el trànsit duplicat i un defecte d’implementació es manifesten tots com a retransmissions, i només un és un problema de reproducció. Desactivar la comprovació per silenciar el soroll elimina la propietat en què confiaves i fa més difícil trobar la causa original, perquè ara les retransmissions no tenen cap explicació.

Captura proves limitades: identificadors d’associació, números de seqüència i comptadors, sense les càrregues útils. Això n’hi ha prou per distingir un duplicat d’una arribada reordenada, i no converteix el teu fitxer de diagnòstic en una còpia del trànsit de l’usuari.

Què no promet la comprovació

La protecció contra reproducció és una propietat del processament de paquets dins d’un protocol. No significa que l’operador no guardi registres, que un lloc web no pugui reconèixer un compte o que una sessió sigui anònima. Són qüestions separades sobre sistemes separats, i un disseny sòlid contra la reproducció no respon cap d’elles.

El programari mantingut amb configuracions compatibles és el control pràctic de què disposa un usuari. El protocol s’encarrega del paquet; la resta continua sent una decisió operativa.

Articles relacionats