Vad en WireGuard-handskaknings tidsstämpel egentligen berättar
En handskakningstid är inte en webbläsarhistorik, men den kopplar ett konto till en händelse. Jämför vad WireGuard och OpenVPN registrerar, och vad precision döljer.
En enda rad med «senaste handskakning, för två minuter sedan» ser ut som bevis på ihållande aktivitet och är svagare än så. Den markerar det senaste slutförda nyckelutbytet för en peer, som sker enligt en fast nyckelrotations-timer medan trafiken flödar och upphör när peeren tystnar. Om den tiden kopplar en person till något beror på identifierarna som lagras bredvid och på båda systemens klockor. Här är hur posten beter sig i de två vanligaste staplarna, och var läsningen av den går fel.
Två poster, två olika betydelser
WireGuard håller en handskaknings-tidsstämpel per peer, ersatt vid varje nyckelrotation, plus byträknare i varje riktning. OpenVPN registrerar vanligtvis en sessionsstart, en frånkoppling och allt den konfigurerade detaljrikedomen lägger till, vilket gör postens enhet till en session snarare än ett nyckelutbyte.
Den skillnaden avgör vad en frånvaro betyder:
| Question | WireGuard handshake | OpenVPN session log |
|---|---|---|
| Did the peer send recently? | Strong hint within the rekey window | Not answered by start time alone |
| Did the peer stop? | Weak, because idle peers also stop rekeying | Only if a disconnect was written |
| What was visited? | Nothing | Nothing |
Varför en handskakning inte är ihållande användning
WireGuard roterar nycklar ungefär varannan minut så länge det finns data att skydda, och en peer som blir inaktiv slutar helt enkelt. En inaktuell handskakning kan därför betyda att laptopen sover, att användaren slutade arbeta eller att nätverket tappade paketen som skulle ha utlöst nästa utbyte. Tidsstämpeln är en undre gräns för aktivitet, inte en spårare av uppmärksamhet.
Det omvända misstaget är lika lätt. Ihållande keepalive-trafik håller tunneln varm på en inaktiv enhet, så en färsk handskakning kan dyka upp på en maskin som ingen har rört på en timme. Byträknare hjälper här, eftersom de skiljer en peer som skickar riktig data från en som bara utbyter keepalives, och de berättar också vilken riktning som bar volymen. Inget av detta avslöjar en destination, en sida eller en fråga.
Identifierare reser med tidsstämpeln
En tid utan konto, publik nyckel eller källadress är ett hittebarn. Para tidsstämpeln med peerens identitet och observationen blir länkbar: en publik nyckel består över adressbyten, medan en källadress kan delas av många abonnenter bakom leverantörens adressöversättning.
Den asymmetrin är det de flesta integritetsdiskussioner missar. Adressen ser anonym ut eftersom den delas, och nyckeln ser teknisk ut eftersom den är lång, men nyckeln är den stabila identifieraren. Att behålla ett fält och släppa det andra ändrar korrelationsrisken utan att ändra den skenbara precisionen.
Korrelationen i sig är den dokumenterade oron. Att koppla en anslutningstid till en leverantörs inloggningshändelse, ett supportärende eller en betalningspost kan koppla en identitet till aktivitet även när ingen destination någonsin skrevs ned, och därför betyder parningen mer än formateringen.
Korrelation mellan system kräver klokomtanke
Två system som rapporterar samma ögonblick är sällan överens till sekunden. Det ena kan tillämpa en tidszonsförskjutning i sin utdata, det andra kan gå på en klocka som är flera sekunder fel, och en virtuell maskin kan driva efter en avstängning.
Innan du drar slutsatsen att två händelser inträffade tillsammans, konvertera båda till samma zon och kontrollera förskjutningen i den råa posten i stället för i visningen. Om gapet du mäter är mindre än den sannolika avvikelsen har du ingen ordning alls.
Den praktiska regeln är att behålla den precision som felsökningsuppgiften behöver och inte mer. Ett antal sessioner per timme svarar på en tillgänglighetsfråga utan att föra historik per konto, och ett aggregat kan bevaras mycket längre än de råa raderna det kom från.
Läs posten med kommandon, inte fantasi
Skriv ut fälten du ska resonera om, i de enheter verktyget lagrar och inte de en instrumentpanel visar.
Dessa två rader visar handskakningens ålder och byträknarna för varje WireGuard-peer, och sedan samma slags material från en OpenVPN-statusfil:
wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.statusJämför åldern med nyckelrotationsintervallet innan du drar en slutsats, och läs räknarna tillsammans med den. En peer med färsk handskakning och nästan ingen överföring utbyter keepalives, medan en peer med inaktuell handskakning och stora räknare var upptagen tills den slutade. Ingen av raderna säger vad som gjordes, och att säga det rakt ut är mer exakt än att antyda att tidsstämpeln bevisar ett besök.