Jedna linia „ostatnie uzgadnianie, dwie minuty temu“ wygląda jak dowód ciągłej aktywności i jest od tego słabsza. Oznacza ostatnią ukończoną wymianę kluczy dla jednego peera, która odbywa się według stałego licznika odświeżania kluczy, dopóki płynie ruch, i ustaje, gdy peer milknie. To, czy ten czas łączy osobę z czymkolwiek, zależy od identyfikatorów zapisanych obok i od zegarów obu systemów. Oto jak rekord zachowuje się w dwóch najczęstszych stosach i gdzie jego odczyt się myli.

Dwa rekordy, dwa różne znaczenia

WireGuard trzyma jeden znacznik czasu uzgadniania na peera, zastępowany przy każdym odświeżeniu kluczy, plus liczniki bajtów w każdym kierunku. OpenVPN zwykle zapisuje początek sesji, rozłączenie i wszystko, co dodaje skonfigurowana szczegółowość, przez co jednostką rekordu jest sesja, a nie wymiana kluczy.

Ta różnica decyduje o tym, co oznacza nieobecność:

QuestionWireGuard handshakeOpenVPN session log
Did the peer send recently?Strong hint within the rekey windowNot answered by start time alone
Did the peer stop?Weak, because idle peers also stop rekeyingOnly if a disconnect was written
What was visited?NothingNothing

Dlaczego uzgadnianie nie jest ciągłym użytkowaniem

WireGuard odświeża klucze mniej więcej co dwie minuty, dopóki są dane do ochrony, a peer, który staje się bezczynny, po prostu przestaje. Nieaktualne uzgadnianie może więc oznaczać, że laptop śpi, że użytkownik przestał pracować albo że sieć porzuciła pakiety, które wywołałyby następną wymianę. Znacznik czasu jest dolną granicą aktywności, a nie tropicielem uwagi.

Odwrotny błąd jest równie łatwy. Ciągły ruch keepalive utrzymuje tunel ciepłym na bezczynnym urządzeniu, więc niedawne uzgadnianie może pojawić się na maszynie, której nikt nie dotknął od godziny. Liczniki bajtów pomagają tutaj, bo odróżniają peera wysyłającego prawdziwe dane od tego, który wymienia tylko keepalive, i mówią też, który kierunek niósł wolumen. Nic z tego nie ujawnia celu, strony ani zapytania.

Identyfikatory podróżują ze znacznikiem czasu

Czas bez konta, klucza publicznego lub adresu źródłowego jest sierotą. Połącz znacznik z tożsamością peera, a obserwacja staje się łączliwa: klucz publiczny trwa mimo zmian adresów, natomiast adres źródłowy może być współdzielony przez wielu abonentów za tłumaczeniem adresów operatora.

Ta asymetria jest tym, co umyka większości dyskusji o prywatności. Adres wygląda anonimowo, bo jest współdzielony, a klucz wygląda technicznie, bo jest długi, ale to klucz jest stabilnym identyfikatorem. Zachowanie jednego pola i porzucenie drugiego zmienia ryzyko korelacji bez zmiany pozornej precyzji.

Sama korelacja jest udokumentowaną obawą. Połączenie czasu połączenia ze zdarzeniem logowania dostawcy, zgłoszeniem do pomocy technicznej lub zapisem płatności może powiązać tożsamość z aktywnością nawet wtedy, gdy nigdy nie zapisano żadnego celu, i dlatego łączenie ma większe znaczenie niż formatowanie.

Korelacja między systemami wymaga dbałości o zegary

Dwa systemy raportujące ten sam moment rzadko zgadzają się co do sekundy. Jeden może stosować przesunięcie strefy czasowej w swoim wyjściu, drugi może działać na zegarze mylącym się o kilka sekund, a maszyna wirtualna może dryfować po wstrzymaniu.

Zanim uznasz, że dwa zdarzenia zaszły razem, przelicz oba na tę samą strefę i sprawdź przesunięcie w surowym rekordzie, a nie w widoku. Jeśli mierzona luka jest mniejsza niż prawdopodobne odchylenie, nie masz żadnego porządku.

Praktyczna zasada to zachowanie precyzji potrzebnej do zadania diagnostycznego i nic więcej. Liczba sesji na godzinę odpowiada na pytanie o dostępność bez prowadzenia historii na konto, a agregat można przechowywać znacznie dłużej niż surowe wiersze, z których powstał.

Czytaj rekord poleceniami, nie wyobraźnią

Wydrukuj pola, o których będziesz rozumował, w jednostkach, które przechowuje narzędzie, a nie w tych, które pokazuje pulpit.

Te dwie linie pokazują wiek uzgadniania i liczniki bajtów dla każdego peera WireGuard, a następnie ten sam rodzaj materiału z pliku stanu OpenVPN:

wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.status

Porównaj wiek z interwałem odświeżania kluczy, zanim wyciągniesz wniosek, i czytaj liczniki razem z nim. Peer z niedawnym uzgadnianiem i prawie żadnym transferem wymienia keepalive, natomiast peer z nieaktualnym uzgadnianiem i dużymi licznikami był zajęty, dopóki nie przestał. Żadna z linii nie mówi, co zrobiono, a powiedzenie tego wprost jest dokładniejsze niż sugerowanie, że znacznik czasu dowodzi wizyty.

Powiązane artykuły