Kaj vam časovni žig rokovanja WireGuard v resnici pove
Čas rokovanja ni zgodovina brskanja, a poveže račun z dogodkom. Primerjajte, kaj beležita WireGuard in OpenVPN, in kaj natančnost skriva.
Ena vrstica »zadnje rokovanje, pred dvema minutama« je videti kot dokaz nenehne dejavnosti in je šibkejša od tega. Označuje zadnjo dokončano izmenjavo ključev za enega partnerja, ki se zgodi po fiksnem časovniku obnavljanja ključev, dokler teče promet, in se ustavi, ko partner utihne. Ali ta čas poveže osebo s čim, je odvisno od identifikatorjev, shranjenih ob njem, in od ur obeh sistemov. Tukaj je, kako se zapis obnaša v dveh najpogostejših skladih in kje njegovo branje zgreši.
Dva zapisa, dva različna pomena
WireGuard hrani en časovni žig rokovanja na partnerja, ki se zamenja ob vsakem obnavljanju ključev, plus števce bajtov v vsaki smeri. OpenVPN običajno zabeleži začetek seje, prekinitev in vse, kar doda nastavljena podrobnost, zaradi česar je enota zapisa seja in ne izmenjava ključev.
Ta razlika odloči, kaj pomeni odsotnost:
| 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 |
Zakaj rokovanje ni neprekinjena uporaba
WireGuard obnavlja ključe približno vsaki dve minuti, dokler so podatki, ki jih je treba zaščititi, in partner, ki postane nedejaven, preprosto preneha. Zato lahko zastarelo rokovanje pomeni, da prenosnik spi, da je uporabnik prenehal delati ali da je omrežje zavrglo pakete, ki bi sprožili naslednjo izmenjavo. Časovni žig je spodnja meja dejavnosti, ne sledilnik pozornosti.
Nasprotna napaka je prav tako lahka. Nenehen promet keepalive ohranja tunel topel na nedejavni napravi, zato se lahko nedavno rokovanje pojavi na stroju, ki se ga nihče ni dotaknil eno uro. Števci bajtov tu pomagajo, ker ločijo partnerja, ki pošilja resnične podatke, od tistega, ki izmenjuje samo keepalive, in povedo tudi, katera smer je nosila obseg. Nič od tega ne razkrije cilja, strani ali poizvedbe.
Identifikatorji potujejo s časovnim žigom
Čas brez računa, javnega ključa ali izvornega naslova je sirota. Povežite časovni žig z identiteto partnerja in opazovanje postane povezljivo: javni ključ vztraja skozi spremembe naslovov, medtem ko si lahko izvorni naslov deli veliko naročnikov za pretvorbo naslovov operaterja.
Ta asimetrija je tisto, kar večina razprav o zasebnosti spregleda. Naslov je videti anonimen, ker je deljen, ključ pa je videti tehničen, ker je dolg, a stabilni identifikator je ključ. Ohranitev enega polja in opustitev drugega spremeni tveganje korelacije, ne da bi spremenila navidezno natančnost.
Korelacija sama je dokumentirana skrb. Povezovanje časa povezave z dogodkom prijave pri ponudniku, s zahtevkom za podporo ali z evidenco plačila lahko poveže identiteto z dejavnostjo tudi takrat, ko ni bil nikoli zapisan noben cilj, in zato je seznanjanje pomembnejše od oblikovanja.
Korelacija med sistemi zahteva skrb za ure
Dva sistema, ki poročata o istem trenutku, se redko ujameta do sekunde. Eden lahko v svojem izpisu uporabi zamik časovnega pasu, drugi lahko teče na uri, ki je nekaj sekund napačna, virtualni stroj pa lahko po zaustavitvi zaide.
Preden sklepate, da sta se dva dogodka zgodila skupaj, pretvorite oba v isti pas in preverite zamik v surovem zapisu, ne v prikazu. Če je vrzel, ki jo merite, manjša od verjetnega odstopanja, sploh nimate nobenega reda.
Praktično pravilo je ohraniti natančnost, ki jo potrebuje naloga odpravljanja težav, in nič več. Število sej na uro odgovori na vprašanje razpoložljivosti, ne da bi vodilo zgodovino na račun, agregat pa je mogoče hraniti veliko dlje kot surove vrstice, iz katerih izhaja.
Zapis berite z ukazi, ne z domišljijo
Natisnite polja, o katerih boste sklepali, v enotah, ki jih shranjuje orodje, in ne v tistih, ki jih prikazuje nadzorna plošča.
Ti dve vrstici prikazujeta starost rokovanja in števce bajtov za vsakega partnerja WireGuard, nato pa enako vrsto gradiva iz statusne datoteke OpenVPN:
wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.statusPrimerjajte starost z intervalom obnavljanja ključev, preden sklepate, in števce berite skupaj z njo. Partner z nedavnim rokovanjem in skoraj brez prenosa izmenjuje keepalive, medtem ko je bil partner z zastarelim rokovanjem in velikimi števci zaseden, dokler ni prenehal. Nobena vrstica ne pove, kaj je bilo storjeno, in to povedati naravnost je natančneje kot namigovati, da žig dokazuje obisk.