Afirmația că un pachet VPN poartă exact două sume de control sună îngrijit și este destul de des falsă încât să merite desfăcută. Numărul depinde de versiunile IP care apar, de protocolul de transport purtat și de formatul de protecție folosit de tunel. O sumă de control a antetului, o sumă de control a stratului superior și o etichetă criptografică de integritate sunt trei mecanisme cu trei domenii. Numărarea lor începe prin a marca ce acoperă fiecare.

Verificați ce versiuni IP sunt efectiv pe fir

Antetele IPv4 poartă o sumă de control a antetului de 16 biți, iar antetele IPv6 nu poartă nimic de acest fel. Acest singur fapt schimbă numărul pentru fiecare tunel, pentru că împachetarea IPv4 în IPv6 și a IPv6 în IPv4 produce documente diferite. Un tunel poate purta ambele familii simultan, iar atunci o direcție poate conține un câmp pe care cealaltă nu îl are. Stabiliți versiunile înainte de a număra orice.

Scrieți aranjamentul ca o listă de antete, nu ca o imagine. Ordinea contează la citirea unei capturi, iar prezența sau absența câmpului sumei de control este primul lucru de marcat.

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

Prima linie nu are nicio sumă de control a antetului IP nicăieri în antetele sale IP, în timp ce a doua are două când ambele antete sunt IPv4. Aceeași tehnologie de tunel, un număr diferit, și niciuna dintre linii nu este un format complet de fir.

Verificați ce acoperă fiecare sumă de control

Acoperirea este partea pe care oamenii o sar, și ea este cea care dă sens unui număr. Suma de control a antetului IPv4 protejează antetul și nimic altceva, așa că nu spune nimic despre încărcătura din spatele lui. O sumă de control UDP peste IPv6 acoperă un pseudo-antet plus antetul și încărcătura UDP, ceea ce înseamnă că ajunge în pachetul purtat atunci când datagrama este tunelată. TCP are propria sumă de control cu o dependență similară de pseudo-antet. Sunt trei domenii diferite deși toate trei se numesc sume de control.

RFC 791 definește verificarea antetului IPv4 și recalcularea lui la fiecare salt, iar RFC 8200 definește tratarea stratului superior peste IPv6, inclusiv pseudo-antetul. Niciun document nu spune că un pachet VPN are un număr fix de sume de control, pentru că niciunul nu descrie un tunel.

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

Verificați protecția integrității separat

Integritatea ESP este o protecție criptografică cu acoperire proprie și o reprezentare dependentă de algoritm. Nu este o sumă de control IP sau UDP sub alt nume, iar lungimea ei variază cu construcția aleasă. O verificare de integritate acoperă o porțiune definită a pachetului, care în funcție de mod poate include antetul ESP și o parte din încărcătură. Numărarea ei ca un câmp de sumă de control de lățime cunoscută este locul unde majoritatea acestor explicații se destramă.

Citiți construcția aleasă înainte de a număra octeți, și descrieți rezultatul ca protecție a integrității, nu ca o sumă de control cu altă etichetă. Decodorul vă va numi câmpul dacă îl întrebați.

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

Verificați punctul de observare înainte de a număra

O captură pe interfața internă și o captură pe fir pot arăta straturi complet diferite. Pe interfața internă tunelul este deja îndepărtat, așa că vedeți pachetul purtat și niciunul dintre antetele exterioare. Pe fir vedeți antetele exterioare și o încărcătură criptată pe care nu o puteți citi. Niciuna dintre vederi nu este greșită, și nu sunt vederi ale aceluiași obiect. Precizați unde a fost făcută captura înainte de a cita orice număr.

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

Prima comandă arată pachetul exterior cu trailerul său de integritate, iar a doua arată pachetul purtat cu propria sumă de control de transport. Adunarea numerelor din ambele capturi nu numără nimic de două ori, dar explică același pachet de două ori.

Comparați numărul cu o captură reală

Decodificați un pachet complet și marcați fiecare câmp pe care decodorul îl numește sumă de control sau valoare de integritate. Apoi comparați fiecare marcă cu aranjamentul scris, și ștergeți-le pe cele care aparțin unui strat pe care nu îl numărați efectiv. Un număr care supraviețuiește acelui exercițiu este defendabil, iar un număr citat din memorie nu este.

Repetați pentru direcția de răspuns, pentru că un tunel care poartă ambele familii poate diferi pe direcție și pe flux. Apoi spuneți numărul împreună cu domeniul lui, de exemplu trei sume de control pentru acest pachet interior în acest punct de observare, și nu ca proprietate a pachetelor VPN în general.

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

Articole similare