Ce îți spune de fapt marca temporală a unui handshake WireGuard
Ora unui handshake nu este un istoric de navigare, dar leagă un cont de un eveniment. Comparați ce înregistrează WireGuard și OpenVPN și ce ascunde precizia.
O singură linie care spune „ultimul handshake, acum două minute“ pare o dovadă a activității continue și este mai slabă decât atât. Ea marchează ultimul schimb de chei finalizat pentru un peer, care are loc după un temporizator fix de reînnoire a cheilor cât timp curge traficul și se oprește când peer-ul devine tăcut. Dacă acea oră leagă o persoană de ceva depinde de identificatorii stocați alături și de ceasurile ambelor sisteme. Iată cum se comportă înregistrarea în cele două stive cele mai comune și unde citirea ei greșește.
Două înregistrări, două semnificații diferite
WireGuard păstrează o marcă temporală de handshake pentru fiecare peer, înlocuită la fiecare reînnoire de chei, plus contoare de octeți în fiecare direcție. OpenVPN înregistrează de obicei începutul unei sesiuni, o deconectare și tot ce adaugă verbositatea configurată, ceea ce face ca unitatea înregistrării să fie sesiunea, nu schimbul de chei.
Această diferență decide ce înseamnă o absență:
| 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 |
De ce un handshake nu este utilizare continuă
WireGuard reînnoiește cheile aproximativ la fiecare două minute cât timp există date de protejat, iar un peer care devine inactiv pur și simplu se oprește. Așadar, un handshake vechi poate însemna că laptopul doarme, că utilizatorul a încetat să lucreze sau că rețeaua a renunțat la pachetele care ar fi declanșat următorul schimb. Marca temporală este o limită inferioară a activității, nu un urmăritor al atenției.
Greșeala inversă este la fel de ușoară. Traficul keepalive persistent menține tunelul cald pe un dispozitiv inactiv, așa că un handshake recent poate apărea pe o mașină pe care nimeni nu a atins-o o oră. Contoarele de octeți ajută aici, pentru că disting un peer care trimite date reale de unul care schimbă doar keepalive, și spun și care direcție a dus volumul. Nimic din toate acestea nu dezvăluie o destinație, o pagină sau o interogare.
Identificatorii călătoresc împreună cu marca temporală
O oră fără cont, cheie publică sau adresă sursă este orfană. Asociați marca temporală cu identitatea peer-ului și observația devine corelabilă: o cheie publică persistă peste schimbările de adresă, în timp ce o adresă sursă poate fi partajată de mulți abonați în spatele traducerii de adrese a operatorului.
Această asimetrie este ceea ce ratează majoritatea discuțiilor despre confidențialitate. Adresa pare anonimă pentru că este partajată, iar cheia pare tehnică pentru că este lungă, dar cheia este identificatorul stabil. Păstrarea unui câmp și renunțarea la celălalt schimbă riscul de corelare fără a schimba precizia aparentă.
Corelarea în sine este îngrijorarea documentată. Unirea unei ore de conexiune cu un eveniment de autentificare al furnizorului, cu un tichet de suport sau cu o înregistrare de plată poate asocia o identitate cu activitatea chiar și atunci când nu a fost notată niciodată o destinație, și de aceea asocierea contează mai mult decât formatarea.
Corelarea între sisteme necesită grijă la ceasuri
Două sisteme care raportează același moment rareori sunt de acord până la secundă. Unul poate aplica un decalaj de fus orar în ieșirea sa, altul poate rula pe un ceas greșit cu câteva secunde, iar o mașină virtuală poate deriva după o suspendare.
Înainte de a concluziona că două evenimente s-au petrecut împreună, convertiți ambele în același fus și verificați decalajul în înregistrarea brută, nu în afișare. Dacă diferența pe care o măsurați este mai mică decât abaterea probabilă, nu aveți nicio ordonare.
Regula practică este să păstrați precizia de care are nevoie sarcina de depanare și nimic mai mult. Un număr de sesiuni pe oră răspunde la o întrebare de disponibilitate fără a ține un istoric pe cont, iar un agregat poate fi păstrat mult mai mult decât rândurile brute din care provine.
Citiți înregistrarea cu comenzi, nu cu imaginație
Tipăriți câmpurile despre care urmează să raționați, în unitățile pe care unealta le stochează și nu în cele pe care le afișează un tablou de bord.
Aceste două linii arată vechimea handshake-ului și contoarele de octeți pentru fiecare peer WireGuard, apoi același tip de material dintr-un fișier de stare OpenVPN:
wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.statusComparați vechimea cu intervalul de reînnoire a cheilor înainte de a trage o concluzie, și citiți contoarele împreună cu ea. Un peer cu un handshake recent și aproape fără transfer schimbă keepalive, în timp ce un peer cu un handshake vechi și contoare mari a fost ocupat până când s-a oprit. Niciuna dintre linii nu spune ce s-a făcut, iar a spune asta deschis este mai exact decât a sugera că marca temporală dovedește o vizită.