Kolik kontrolních součtů má paket VPN? Záleží
Počet závisí na verzích IP, přenášeném protokolu a formátu ochrany. Kontrolní součty hlavičky, horní vrstvy a značky integrity se liší.
Tvrzení, že paket VPN nese přesně dva kontrolní součty, zní uklizeně a je dost často nepravdivé, aby stálo za rozebrání. Počet závisí na tom, které verze IP se objeví, který transportní protokol se přenáší a jaký formát ochrany tunel používá. Kontrolní součet hlavičky, kontrolní součet horní vrstvy a kryptografická značka integrity jsou tři mechanismy se třemi rozsahy. Jejich počítání začíná označením toho, co každý z nich pokrývá.
Zkontrolujte, které verze IP jsou skutečně na drátě
Hlavičky IPv4 nesou 16bitový kontrolní součet hlavičky, hlavičky IPv6 nenesou nic takového. Tento jediný fakt mění počet pro každý tunel, protože zabalení IPv4 do IPv6 a IPv6 do IPv4 vytváří různé dokumenty. Tunel může nést obě rodiny najednou, a pak jeden směr může obsahovat pole, které druhý nemá. Zjistěte verze dřív, než začnete cokoli počítat.
Zapište rozvržení jako seznam hlaviček, ne jako obrázek. Pořadí je při čtení záznamu důležité a přítomnost nebo nepřítomnost pole kontrolního součtu je první věc, kterou je třeba označit.
outer IPv6 | ESP | inner IPv6 | UDP | application data
outer IPv4 | ESP | inner IPv4 | TCP | application data
První řádek nemá nikde ve svých IP hlavičkách kontrolní součet IP hlavičky, zatímco druhý má dva, když jsou obě hlavičky IPv4. Stejná tunelová technologie, jiný počet a ani jeden řádek není úplný formát drátu.
Zkontrolujte, co každý kontrolní součet pokrývá
Pokrytí je část, kterou lidé přeskakují, a právě ona dává počtu smysl. Kontrolní součet hlavičky IPv4 chrání hlavičku a nic jiného, takže nic neříká o užitečném zatížení za ní. Kontrolní součet UDP nad IPv6 pokrývá pseudohlavičku plus hlavičku a užitečné zatížení UDP, což znamená, že dosahuje do přenášeného paketu, když je datagram tunelován. TCP má vlastní kontrolní součet s podobnou závislostí na pseudohlavičce. To jsou tři různé rozsahy, i když se všechny tři nazývají kontrolními součty.
RFC 791 definuje kontrolu hlavičky IPv4 a její přepočet na každém hopu a RFC 8200 definuje zpracování horní vrstvy nad IPv6 včetně pseudohlavičky. Ani jeden dokument neříká, že paket VPN má pevný počet kontrolních součtů, protože ani jeden nepopisuje tunel.
tshark -r capture.pcap -Y "ip.proto == 50" -V | grep -i checksum
Zkontrolujte ochranu integrity zvlášť
Integrita ESP je kryptografická ochrana s vlastním pokrytím a reprezentací závislou na algoritmu. Není to kontrolní součet IP nebo UDP pod jiným jménem a její délka se mění podle zvolené konstrukce. Kontrola integrity pokrývá definovanou část paketu, která může podle režimu zahrnovat hlavičku ESP a část užitečného zatížení. Počítat ji jako pole kontrolního součtu známé šířky je místo, kde se většina těchto vysvětlení rozpadá.
Přečtěte si zvolenou konstrukci dřív, než začnete počítat bajty, a popište výsledek jako ochranu integrity, ne jako kontrolní součet s jinou etiketou. Dekodér vám pole pojmenuje, když se zeptáte.
tshark -r capture.pcap -Y esp -V | grep -iE "integrity|icv"
Zkontrolujte pozorovací bod před počítáním
Záznam na vnitřním rozhraní a záznam na drátě mohou ukázat zcela různé vrstvy. Na vnitřním rozhraní je tunel už odstraněn, takže vidíte přenášený paket a žádnou z vnějších hlaviček. Na drátě vidíte vnější hlavičky a šifrované užitečné zatížení, které nemůžete přečíst. Ani jeden pohled není špatný a nejsou to pohledy na stejný objekt. Uveďte, kde byl záznam pořízen, než uvedete jakýkoli počet.
sudo tcpdump -ni eth0 -vv -c 5 esp
sudo tcpdump -ni tun0 -vv -c 5
První příkaz ukazuje vnější paket s jeho trailerem integrity a druhý ukazuje přenášený paket s jeho vlastním transportním kontrolním součtem. Sčítání čísel z obou záznamů nic nepočítá dvakrát, ale vysvětluje stejný paket dvakrát.
Porovnejte počet se skutečným záznamem
Dekódujte jeden paket úplně a označte každé pole, které dekodér nazve kontrolním součtem nebo hodnotou integrity. Potom porovnejte každou značku s rozvržením, které jste zapsali, a smažte ty, které patří vrstvě, kterou skutečně nepočítáte. Počet, který toto cvičení přežije, je obhajitelný, a počet citovaný zpaměti není.
Zopakujte to pro směr odpovědi, protože tunel přenášející obě rodiny se může lišit podle směru a podle toku. Potom uveďte počet spolu s jeho rozsahem, například tři kontrolní součty pro tento vnitřní paket v tomto pozorovacím bodě, a ne jako vlastnost paketů VPN obecně.
tshark -r capture.pcap -T fields -e ip.checksum -e udp.checksum -e tcp.checksum