Ko patiesībā stāsta WireGuard rokasspiediena laika zīmogs
Rokasspiediena laiks nav pārlūkošanas vēsture, bet tas saista kontu ar notikumu. Salīdziniet, ko reģistrē WireGuard un OpenVPN, un ko slēpj precizitāte.
Viena rinda „pēdējais rokasspiediens, pirms divām minūtēm“ izskatās kā nepārtrauktas aktivitātes pierādījums un ir vājāka par to. Tā iezīmē pēdējo pabeigto atslēgu apmaiņu vienam partnerim, kas notiek pēc fiksēta atslēgu atjaunošanas taimera, kamēr plūst trafiks, un apstājas, kad partneris apklust. Vai šis laiks saista cilvēku ar kaut ko, ir atkarīgs no blakus glabātajiem identifikatoriem un abu sistēmu pulksteņiem. Lūk, kā ieraksts uzvedas divos izplatītākajos sakrautos risinājumos un kur tā lasīšana kļūdās.
Divi ieraksti, divas dažādas nozīmes
WireGuard glabā vienu rokasspiediena laika zīmogu katram partnerim, kas tiek aizstāts katrā atslēgu atjaunošanā, kā arī baitu skaitītājus katrā virzienā. OpenVPN parasti reģistrē sesijas sākumu, atvienošanos un visu, ko pievieno konfigurētā detalizācija, kas padara ieraksta vienību par sesiju, nevis atslēgu apmaiņu.
Šī atšķirība nosaka, ko nozīmē prombūtne:
| 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 |
Kāpēc rokasspiediens nav nepārtraukta lietošana
WireGuard atjauno atslēgas aptuveni ik pēc divām minūtēm, kamēr ir dati, kas jāaizsargā, un partneris, kas kļūst neaktīvs, vienkārši apstājas. Tāpēc novecojis rokasspiediens var nozīmēt, ka klēpjdators guļ, lietotājs pārstāja strādāt vai tīkls nometa paketes, kas būtu izraisījušas nākamo apmaiņu. Laika zīmogs ir aktivitātes apakšējā robeža, nevis uzmanības izsekotājs.
Pretējā kļūda ir tikpat viegla. Pastāvīgs keepalive trafiks uztur tuneli siltu arī neaktīvā ierīcē, tāpēc nesen rokasspiediens var parādīties mašīnā, kurai stundu neviens nav pieskāries. Baitu skaitītāji šeit palīdz, jo tie atšķir partneri, kas sūta īstus datus, no tā, kas apmainās tikai ar keepalive, un arī norāda, kurš virziens nesa apjomu. Nekas no tā neatklāj galamērķi, lapu vai vaicājumu.
Identifikatori ceļo kopā ar laika zīmogu
Laiks bez konta, publiskās atslēgas vai avota adreses ir bārenis. Savienojiet laika zīmogu ar partnera identitāti, un novērojums kļūst saistāms: publiskā atslēga saglabājas adrešu maiņas laikā, bet avota adresi var kopīgot daudzi abonenti aiz operatora adrešu tulkošanas.
Šī asimetrija ir tas, ko palaiž garām lielākā daļa privātuma diskusiju. Adrese šķiet anonīma, jo tā ir kopīga, un atslēga šķiet tehniska, jo tā ir gara, taču stabilais identifikators ir atslēga. Viena lauka saglabāšana un otra atmešana maina korelācijas risku, nemainot šķietamo precizitāti.
Pati korelācija ir dokumentētās bažas. Savienojuma laika apvienošana ar pakalpojumu sniedzēja pieteikšanās notikumu, atbalsta biļeti vai maksājuma ierakstu var saistīt identitāti ar aktivitāti pat tad, ja galamērķis nekad nav pierakstīts, un tāpēc savienošana pāros ir svarīgāka par formatējumu.
Korelācijai starp sistēmām vajadzīga pulksteņu piesardzība
Divas sistēmas, kas ziņo par vienu un to pašu brīdi, reti vienojas līdz sekundei. Viena var piemērot laika joslas nobīdi savā izvadē, otra var darboties ar pulksteni, kas ir par vairākām sekundēm nepareizs, un virtuālā mašīna var novirzīties pēc apturēšanas.
Pirms secināt, ka divi notikumi notika kopā, pārvērtiet abus uz vienu un to pašu joslu un pārbaudiet nobīdi neapstrādātā ierakstā, nevis attēlojumā. Ja mērītā atstarpe ir mazāka par iespējamo novirzi, jums nav nekādas kārtības.
Praktiskais noteikums ir saglabāt precizitāti, kas nepieciešama problēmu novēršanas uzdevumam, un ne vairāk. Sesiju skaits stundā atbild uz pieejamības jautājumu, neuzglabājot vēsturi katram kontam, un kopsavilkumu var glabāt daudz ilgāk nekā neapstrādātās rindas, no kurām tas radies.
Lasiet ierakstu ar komandām, nevis iztēli
Izdrukājiet laukus, par kuriem gatavojaties spriest, vienībās, ko rīks glabā, nevis tajās, ko attēlo informācijas panelis.
Šīs divas rindas parāda rokasspiediena vecumu un baitu skaitītājus katram WireGuard partnerim, pēc tam līdzīgu materiālu no OpenVPN statusa faila:
wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.statusSalīdziniet vecumu ar atslēgu atjaunošanas intervālu, pirms izdarāt secinājumu, un lasiet skaitītājus kopā ar to. Partneris ar nesenu rokasspiedienu un gandrīz bez pārsūtīšanas apmainās ar keepalive, bet partneris ar novecojušu rokasspiedienu un lieliem skaitītājiem bija aizņemts, līdz apstājās. Neviena rinda nesaka, kas tika darīts, un to pateikt tieši ir precīzāk nekā norādīt, ka laika zīmogs pierāda apmeklējumu.