Ile sum kontrolnych ma pakiet VPN? To zależy
Liczba zależy od wersji IP, transportowanego protokołu i formatu ochrony. Sumy kontrolne nagłówka, wyższej warstwy i znaczniki integralności różnią się.
Twierdzenie, że pakiet VPN niesie dokładnie dwie sumy kontrolne, brzmi schludnie i jest dość często fałszywe, by warto je rozłożyć. Liczba zależy od tego, jakie wersje IP występują, który protokół transportowy jest niesiony i jakiego formatu ochrony używa tunel. Suma kontrolna nagłówka, suma kontrolna wyższej warstwy i kryptograficzny znacznik integralności to trzy mechanizmy o trzech zakresach. Ich liczenie zaczyna się od zaznaczenia, co obejmuje każdy z nich.
Sprawdź, które wersje IP faktycznie są na łączu
Nagłówki IPv4 niosą 16-bitową sumę kontrolną nagłówka, a nagłówki IPv6 nie niosą niczego takiego. Ten jeden fakt zmienia liczbę dla każdego tunelu, ponieważ pakowanie IPv4 w IPv6 i IPv6 w IPv4 daje różne dokumenty. Tunel może nieść obie rodziny naraz, a wtedy jeden kierunek może zawierać pole, którego nie ma drugi. Ustal wersje, zanim cokolwiek policzysz.
Zapisz układ jako listę nagłówków, a nie jako obrazek. Kolejność ma znaczenie przy czytaniu zrzutu, a obecność lub brak pola sumy kontrolnej to pierwsza rzecz do zaznaczenia.
outer IPv6 | ESP | inner IPv6 | UDP | application data
outer IPv4 | ESP | inner IPv4 | TCP | application data
Pierwszy wiersz nie ma sumy kontrolnej nagłówka IP nigdzie w swoich nagłówkach IP, podczas gdy drugi ma dwie, gdy oba nagłówki są IPv4. Ta sama technologia tunelu, inna liczba, i żaden z wierszy nie jest pełnym formatem łącza.
Sprawdź, co obejmuje każda suma kontrolna
Zakres to część, którą ludzie pomijają, i to ona nadaje liczbie sens. Suma kontrolna nagłówka IPv4 chroni nagłówek i nic więcej, więc nie mówi nic o ładunku za nim. Suma kontrolna UDP nad IPv6 obejmuje pseudo-nagłówek oraz nagłówek i ładunek UDP, co oznacza, że sięga do niesionego pakietu, gdy datagram jest tunelowany. TCP ma własną sumę kontrolną z podobną zależnością od pseudo-nagłówka. To trzy różne zakresy, choć wszystkie trzy nazywa się sumami kontrolnymi.
RFC 791 definiuje sprawdzanie nagłówka IPv4 i jego przeliczanie na każdym skoku, a RFC 8200 definiuje obsługę wyższej warstwy nad IPv6, w tym pseudo-nagłówka. Żaden dokument nie mówi, że pakiet VPN ma stałą liczbę sum kontrolnych, bo żaden nie opisuje tunelu.
tshark -r capture.pcap -Y "ip.proto == 50" -V | grep -i checksum
Sprawdź ochronę integralności osobno
Integralność ESP to ochrona kryptograficzna z własnym zakresem i reprezentacją zależną od algorytmu. To nie jest suma kontrolna IP lub UDP pod inną nazwą, a jej długość zmienia się wraz z wybraną konstrukcją. Kontrola integralności obejmuje określoną część pakietu, która w zależności od trybu może zawierać nagłówek ESP i część ładunku. Liczenie jej jako pola sumy kontrolnej o znanej szerokości to miejsce, w którym większość takich wyjaśnień się sypie.
Przeczytaj wybraną konstrukcję, zanim policzysz bajty, i opisz wynik jako ochronę integralności, a nie jako sumę kontrolną z inną etykietą. Dekoder nazwie pole, jeśli go zapytasz.
tshark -r capture.pcap -Y esp -V | grep -iE "integrity|icv"
Sprawdź punkt obserwacji, zanim policzysz
Zrzut na interfejsie wewnętrznym i zrzut na łączu mogą pokazywać zupełnie różne warstwy. Na interfejsie wewnętrznym tunel jest już zdjęty, więc widać niesiony pakiet i żadnego z zewnętrznych nagłówków. Na łączu widać zewnętrzne nagłówki i zaszyfrowany ładunek, którego nie można odczytać. Żaden widok nie jest błędny i nie są to widoki tego samego obiektu. Wskaż, gdzie wykonano zrzut, zanim podasz jakąkolwiek liczbę.
sudo tcpdump -ni eth0 -vv -c 5 esp
sudo tcpdump -ni tun0 -vv -c 5
Pierwsze polecenie pokazuje pakiet zewnętrzny z jego końcówką integralności, a drugie pokazuje niesiony pakiet z jego własną sumą kontrolną transportu. Sumowanie liczb z obu zrzutów niczego nie liczy podwójnie, ale dwa razy wyjaśnia ten sam pakiet.
Zestaw liczbę z rzeczywistym zrzutem
Zdekoduj jeden pakiet w całości i zaznacz każde pole, które dekoder nazywa sumą kontrolną lub wartością integralności. Następnie porównaj każde zaznaczenie z zapisanym układem i usuń te, które należą do warstwy, której faktycznie nie liczysz. Liczba, która przetrwa to ćwiczenie, jest do obrony, a liczba przytoczona z pamięci nie jest.
Powtórz to dla kierunku odpowiedzi, ponieważ tunel niosący obie rodziny może się różnić w zależności od kierunku i przepływu. Następnie podaj liczbę wraz z jej zakresem, na przykład trzy sumy kontrolne dla tego wewnętrznego pakietu w tym punkcie obserwacji, a nie jako właściwość pakietów VPN w ogóle.
tshark -r capture.pcap -T fields -e ip.checksum -e udp.checksum -e tcp.checksum