L'afirmació que un paquet VPN porta exactament dues sumes de verificació sona ordenada i és prou sovint falsa perquè valgui la pena desmuntar-la. El nombre depèn de quines versions d'IP apareixen, quin protocol de transport es porta i quin format de protecció utilitza el túnel. Una suma de verificació de capçalera, una suma de verificació de capa superior i una etiqueta criptogràfica d'integritat són tres mecanismes amb tres abasts. Comptar-les comença per marcar què cobreix cadascuna.

Comproveu quines versions d'IP hi ha realment al cable

Les capçaleres IPv4 porten una suma de verificació de capçalera de 16 bits, i les capçaleres IPv6 no en porten res de semblant. Aquest sol fet canvia el nombre per a cada túnel, perquè embolcallar IPv4 dins d'IPv6 i embolcallar IPv6 dins d'IPv4 produeixen documents diferents. Un túnel pot portar les dues famílies alhora, i llavors una direcció pot contenir un camp que l'altra no té. Establiu les versions abans de comptar res.

Escriviu la disposició com una llista de capçaleres i no com una imatge. L'ordre importa en llegir una captura, i la presència o absència del camp de suma de verificació és la primera cosa a marcar.

outer IPv6 | ESP | inner IPv6 | UDP | application data
outer IPv4 | ESP | inner IPv4 | TCP | application data

La primera línia no té cap suma de verificació de capçalera IP enlloc de les seves capçaleres IP, mentre que la segona en té dues quan les dues capçaleres són IPv4. La mateixa tecnologia de túnel, un nombre diferent, i cap de les línies no és un format de cable complet.

Comproveu què cobreix cada suma de verificació

La cobertura és la part que la gent salta, i és el que fa que un nombre tingui sentit. La suma de verificació de capçalera IPv4 protegeix la capçalera i res més, així que no diu res de la càrrega útil que hi ha darrere. Una suma de verificació UDP sobre IPv6 cobreix una pseudo-capçalera més la capçalera i la càrrega útil UDP, cosa que significa que arriba fins al paquet transportat quan el datagrama va per túnel. TCP té la seva pròpia suma de verificació amb una dependència similar de la pseudo-capçalera. Aquests són tres abasts diferents encara que tots tres s'anomenin sumes de verificació.

L'RFC 791 defineix la comprovació de capçalera IPv4 i el seu recàlcul a cada salt, i l'RFC 8200 defineix el tractament de la capa superior sobre IPv6, inclosa la pseudo-capçalera. Cap dels dos documents no diu que un paquet VPN tingui un nombre fix de sumes de verificació, perquè cap no descriu un túnel.

tshark -r capture.pcap -Y "ip.proto == 50" -V | grep -i checksum

Comproveu la protecció d'integritat per separat

La integritat ESP és una protecció criptogràfica amb cobertura pròpia i una representació que depèn de l'algorisme. No és una suma de verificació IP o UDP amb un altre nom, i la seva longitud varia segons la construcció triada. Una comprovació d'integritat cobreix una porció definida del paquet, que segons el mode pot incloure la capçalera ESP i part de la càrrega útil. Comptar-la com un camp de suma de verificació d'amplada coneguda és on la majoria d'aquestes explicacions es desfan.

Llegiu la construcció triada abans de comptar bytes, i descriviu el resultat com a protecció d'integritat i no com una suma de verificació amb una altra etiqueta. El descodificador us nomenarà el camp si li ho demaneu.

tshark -r capture.pcap -Y esp -V | grep -iE "integrity|icv"

Comproveu el punt d'observació abans de comptar

Una captura a la interfície interna i una captura al cable poden mostrar capes completament diferents. A la interfície interna el túnel ja s'ha tret, així que veieu el paquet transportat i cap de les capçaleres externes. Al cable veieu les capçaleres externes i una càrrega útil xifrada que no podeu llegir. Cap de les dues vistes no és incorrecta, i no són vistes del mateix objecte. Digueu on es va fer la captura abans de citar cap nombre.

sudo tcpdump -ni eth0 -vv -c 5 esp
sudo tcpdump -ni tun0 -vv -c 5

La primera ordre mostra el paquet extern amb el seu tràiler d'integritat, i la segona mostra el paquet transportat amb la seva pròpia suma de verificació de transport. Sumar nombres de les dues captures no compta res dues vegades, però explica el mateix paquet dues vegades.

Comproveu el nombre contra una captura real

Descodifiqueu un paquet completament i marqueu cada camp que el descodificador anomeni suma de verificació o valor d'integritat. Després compareu cada marca amb la disposició que heu escrit, i esborreu les que pertanyin a una capa que no esteu comptant. Un nombre que sobrevisqui a aquest exercici és defensable, i un nombre citat de memòria no ho és.

Repetiu-ho per a la direcció de resposta, perquè un túnel que porti les dues famílies pot diferir per direcció i per flux. Després digueu el nombre amb el seu abast, per exemple tres sumes de verificació per a aquest paquet intern en aquest punt d'observació, i no com una propietat dels paquets VPN en general.

tshark -r capture.pcap -T fields -e ip.checksum -e udp.checksum -e tcp.checksum

Articles relacionats