Co vám časové razítko handshake u WireGuardu skutečně říká
Čas handshake není historie prohlížení, ale spojuje účet s událostí. Porovnejte, co zaznamenává WireGuard a OpenVPN a co přesnost skrývá.
Jeden řádek „poslední handshake, před dvěma minutami“ vypadá jako důkaz nepřetržité aktivity a je slabší než to. Označuje poslední dokončenou výměnu klíčů pro jednoho peer, k níž dochází podle pevného časovače obnovy klíčů, dokud teče provoz, a končí, když peer ztichne. Zda tento čas spojuje člověka s čímkoli, závisí na identifikátorech uložených vedle něj a na hodinách obou systémů. Zde je, jak se záznam chová ve dvou nejběžnějších sestavách a kde se jeho čtení zvrtne.
Dva záznamy, dva různé významy
WireGuard drží jedno časové razítko handshake na peer, nahrazované při každé obnově klíčů, plus počítadla bajtů v každém směru. OpenVPN obvykle zaznamenává začátek relace, odpojení a vše, co přidá nastavená podrobnost, což dělá jednotkou záznamu relaci, nikoli výměnu klíčů.
Tento rozdíl rozhoduje o tom, co znamená nepřítomnost:
| 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 |
Proč handshake není nepřetržité používání
WireGuard obnovuje klíče zhruba každé dvě minuty, dokud jsou data, která je třeba chránit, a peer, který se dostane do nečinnosti, prostě přestane. Zastaralý handshake tedy může znamenat, že notebook spí, uživatel přestal pracovat nebo že síť zahodila pakety, které by spustily další výměnu. Časové razítko je dolní hranice aktivity, nikoli sledovač pozornosti.
Opačná chyba je stejně snadná. Trvalý keepalive provoz udržuje tunel v teple i na nečinném zařízení, takže nedávný handshake se může objevit na stroji, kterého se hodinu nikdo nedotkl. Počítadla bajtů zde pomáhají, protože rozlišují peer, který posílá skutečná data, od toho, který si vyměňuje jen keepalive, a také říkají, který směr nesl objem. Nic z toho neprozrazuje cíl, stránku ani dotaz.
Identifikátory cestují s časovým razítkem
Čas bez účtu, veřejného klíče nebo zdrojové adresy je sirotek. Spárujte razítko s identitou peeru a pozorování se stane propojitelným: veřejný klíč přetrvává napříč změnami adres, zatímco zdrojovou adresu může sdílet mnoho účastníků za překladem adres operátora.
Tato asymetrie je to, co většina debat o soukromí přehlíží. Adresa vypadá anonymně, protože je sdílená, a klíč vypadá technicky, protože je dlouhý, ale stabilním identifikátorem je klíč. Zachování jednoho pole a zahození druhého mění riziko korelace, aniž by měnilo zdánlivou přesnost.
Samotná korelace je dokumentovaná obava. Spojení času připojení s přihlašovací událostí poskytovatele, se žádostí na podporu nebo se záznamem o platbě může spojit identitu s aktivitou, i když nebyl nikdy zapsán žádný cíl, a proto je párování důležitější než formátování.
Korelace mezi systémy vyžaduje péči o hodiny
Dva systémy hlásící stejný okamžik se málokdy shodnou na sekundu. Jeden může ve výstupu použít posun časového pásma, druhý může běžet na hodinách posunutých o několik sekund a virtuální stroj se může po pozastavení rozejít.
Než uzavřete, že se dvě události staly společně, převeďte obě do stejného pásma a zkontrolujte posun v surovém záznamu, ne v zobrazení. Pokud je mezera, kterou měříte, menší než pravděpodobné zkreslení, nemáte vůbec žádné pořadí.
Praktické pravidlo je zachovat přesnost, kterou úloha řešení potíží potřebuje, a nic víc. Počet relací za hodinu odpovídá na otázku dostupnosti bez vedení historie pro každý účet a agregát lze uchovávat mnohem déle než surové řádky, z nichž vznikl.
Čtěte záznam pomocí příkazů, ne představivosti
Vypište pole, o kterých budete uvažovat, v jednotkách, které nástroj ukládá, a ne v těch, které vykresluje panel.
Tyto dva řádky ukazují stáří handshake a počítadla bajtů pro každý peer WireGuardu a poté stejný druh materiálu ze stavového souboru OpenVPN:
wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.statusPorovnejte stáří s intervalem obnovy klíčů, než uděláte závěr, a čtěte počítadla spolu s ním. Peer s nedávným handshake a téměř žádným přenosem si vyměňuje keepalive, zatímco peer se zastaralým handshake a velkými počítadly byl zaneprázdněn, dokud nepřestal. Ani jeden řádek neříká, co se udělalo, a říci to otevřeně je přesnější než naznačovat, že razítko dokazuje návštěvu.