Koľko kontrolných súčtov má paket VPN? Záleží
Počet závisí od verzií IP, prenášaného protokolu a formátu ochrany. Kontrolné súčty hlavičky, hornej vrstvy a značky integrity sa líšia.
Tvrdenie, že paket VPN nesie presne dva kontrolné súčty, znie upravene a je dosť často nepravdivé, aby stálo za rozobratie. Počet závisí od toho, ktoré verzie IP sa objavia, ktorý transportný protokol sa prenáša a aký formát ochrany tunel používa. Kontrolný súčet hlavičky, kontrolný súčet hornej vrstvy a kryptografická značka integrity sú tri mechanizmy s tromi rozsahmi. Ich počítanie začína označením toho, čo každý z nich pokrýva.
Skontrolujte, ktoré verzie IP sú skutočne na drôte
Hlavičky IPv4 nesú 16-bitový kontrolný súčet hlavičky, hlavičky IPv6 nenesú nič také. Tento jediný fakt mení počet pre každý tunel, pretože zabalenie IPv4 do IPv6 a IPv6 do IPv4 vytvára odlišné dokumenty. Tunel môže niesť obe rodiny naraz, a vtedy môže jeden smer obsahovať pole, ktoré druhý nemá. Zistite verzie skôr, než začnete čokoľvek počítať.
Zapíšte rozloženie ako zoznam hlavičiek, nie ako obrázok. Poradie je pri čítaní záznamu dôležité a prítomnosť alebo neprítomnosť poľa kontrolného súčtu je prvá vec, ktorú treba označiť.
outer IPv6 | ESP | inner IPv6 | UDP | application data
outer IPv4 | ESP | inner IPv4 | TCP | application data
Prvý riadok nemá nikde vo svojich IP hlavičkách kontrolný súčet IP hlavičky, kým druhý má dva, keď sú obe hlavičky IPv4. Rovnaká tunelová technológia, iný počet a ani jeden riadok nie je úplný formát drôtu.
Skontrolujte, čo každý kontrolný súčet pokrýva
Pokrytie je časť, ktorú ľudia preskakujú, a práve ona dáva počtu zmysel. Kontrolný súčet hlavičky IPv4 chráni hlavičku a nič iné, takže nič nehovorí o užitočnom zaťažení za ňou. Kontrolný súčet UDP nad IPv6 pokrýva pseudohlavičku plus hlavičku a užitočné zaťaženie UDP, čo znamená, že dosahuje do prenášaného paketu, keď je datagram tunelovaný. TCP má vlastný kontrolný súčet s podobnou závislosťou od pseudohlavičky. To sú tri rôzne rozsahy, hoci všetky tri sa nazývajú kontrolné súčty.
RFC 791 definuje kontrolu hlavičky IPv4 a jej prepočet na každom hopu a RFC 8200 definuje spracovanie hornej vrstvy nad IPv6 vrátane pseudohlavičky. Ani jeden dokument nehovorí, že paket VPN má pevný počet kontrolných súčtov, pretože ani jeden neopisuje tunel.
tshark -r capture.pcap -Y "ip.proto == 50" -V | grep -i checksum
Skontrolujte ochranu integrity samostatne
Integrita ESP je kryptografická ochrana s vlastným pokrytím a reprezentáciou závislou od algoritmu. Nie je to kontrolný súčet IP alebo UDP pod iným názvom a jej dĺžka sa mení podľa zvolenej konštrukcie. Kontrola integrity pokrýva definovanú časť paketu, ktorá podľa režimu môže zahŕňať hlavičku ESP a časť užitočného zaťaženia. Počítať ju ako pole kontrolného súčtu známej šírky je miesto, kde sa väčšina týchto vysvetlení rozpadá.
Prečítajte si zvolenú konštrukciu skôr, než začnete počítať bajty, a opíšte výsledok ako ochranu integrity, nie ako kontrolný súčet s inou etiketou. Dekodér vám pole pomenuje, keď sa ho opýtate.
tshark -r capture.pcap -Y esp -V | grep -iE "integrity|icv"
Skontrolujte pozorovací bod pred počítaním
Záznam na vnútornom rozhraní a záznam na drôte môžu ukázať úplne odlišné vrstvy. Na vnútornom rozhraní je tunel už odstránený, takže vidíte prenášaný paket a žiadnu z vonkajších hlavičiek. Na drôte vidíte vonkajšie hlavičky a šifrované užitočné zaťaženie, ktoré nedokážete prečítať. Ani jeden pohľad nie je nesprávny a nie sú to pohľady na ten istý objekt. Uveďte, kde bol záznam urobený, skôr než uvediete akýkoľvek počet.
sudo tcpdump -ni eth0 -vv -c 5 esp
sudo tcpdump -ni tun0 -vv -c 5
Prvý príkaz zobrazuje vonkajší paket s jeho príveskom integrity a druhý zobrazuje prenášaný paket s jeho vlastným transportným kontrolným súčtom. Sčítanie čísel z oboch záznamov nič nepočíta dvakrát, ale vysvetľuje ten istý paket dvakrát.
Porovnajte počet so skutočným záznamom
Dekódujte jeden paket úplne a označte každé pole, ktoré dekodér nazýva kontrolným súčtom alebo hodnotou integrity. Potom porovnajte každú značku s rozložením, ktoré ste zapísali, a vymažte tie, ktoré patria vrstve, ktorú v skutočnosti nepočítate. Počet, ktorý toto cvičenie prežije, je obhájiteľný a počet citovaný spamäti nie je.
Zopakujte to pre smer odpovede, pretože tunel prenášajúci obe rodiny sa môže líšiť podľa smeru a podľa toku. Potom uveďte počet spolu s jeho rozsahom, napríklad tri kontrolné súčty pre tento vnútorný paket v tomto pozorovacom bode, a nie ako vlastnosť paketov VPN všeobecne.
tshark -r capture.pcap -T fields -e ip.checksum -e udp.checksum -e tcp.checksum