Una sola riga che dice «ultimo handshake, due minuti fa» sembra una prova di attività continua ed è più debole di così. Segna l'ultimo scambio di chiavi completato per un peer, che avviene secondo un timer fisso di rinnovo delle chiavi finché il traffico scorre e si ferma quando il peer tace. Se quell'ora colleghi una persona a qualcosa dipende dagli identificatori memorizzati accanto e dagli orologi di entrambi i sistemi. Ecco come si comporta il record nei due stack più comuni e dove la sua lettura sbaglia.

Due record, due significati diversi

WireGuard conserva un timestamp di handshake per peer, sostituito a ogni rinnovo delle chiavi, più contatori di byte in ciascuna direzione. OpenVPN di solito registra l'inizio di una sessione, una disconnessione e tutto ciò che aggiunge la verbosità configurata, il che rende l'unità del record una sessione anziché uno scambio di chiavi.

Questa differenza decide cosa significa un'assenza:

QuestionWireGuard handshakeOpenVPN session log
Did the peer send recently?Strong hint within the rekey windowNot answered by start time alone
Did the peer stop?Weak, because idle peers also stop rekeyingOnly if a disconnect was written
What was visited?NothingNothing

Perché un handshake non è uso continuo

WireGuard rinnova le chiavi all'incirca ogni due minuti finché ci sono dati da proteggere, e un peer che resta inattivo semplicemente si ferma. Un handshake vecchio può quindi significare che il portatile dorme, che l'utente ha smesso di lavorare o che la rete ha scartato i pacchetti che avrebbero innescato lo scambio successivo. Il timestamp è un limite inferiore dell'attività, non un tracciante dell'attenzione.

L'errore opposto è altrettanto facile. Il traffico keepalive persistente mantiene il tunnel caldo su un dispositivo inattivo, così un handshake recente può comparire su una macchina che nessuno ha toccato per un'ora. I contatori di byte aiutano qui, perché distinguono un peer che invia dati reali da uno che scambia solo keepalive, e dicono anche quale direzione ha portato il volume. Nulla di ciò rivela una destinazione, una pagina o una query.

Gli identificatori viaggiano con il timestamp

Un'ora senza account, chiave pubblica o indirizzo di origine è orfana. Abbina il timestamp all'identità del peer e l'osservazione diventa collegabile: una chiave pubblica persiste attraverso i cambi di indirizzo, mentre un indirizzo di origine può essere condiviso da molti abbonati dietro la traduzione degli indirizzi dell'operatore.

Questa asimmetria è ciò che sfugge alla maggior parte dei dibattiti sulla privacy. L'indirizzo sembra anonimo perché è condiviso, e la chiave sembra tecnica perché è lunga, ma la chiave è l'identificatore stabile. Conservare un campo e scartare l'altro cambia il rischio di correlazione senza cambiare la precisione apparente.

La correlazione stessa è la preoccupazione documentata. Unire un'ora di connessione a un evento di accesso del fornitore, a un ticket di assistenza o a un record di pagamento può associare un'identità all'attività anche quando non è mai stata annotata alcuna destinazione, ed è per questo che l'abbinamento conta più della formattazione.

La correlazione tra sistemi richiede cura degli orologi

Due sistemi che riportano lo stesso istante raramente concordano al secondo. Uno può applicare uno scostamento di fuso orario nel proprio output, un altro può funzionare con un orologio sbagliato di alcuni secondi, e una macchina virtuale può derivare dopo una sospensione.

Prima di concludere che due eventi siano avvenuti insieme, converti entrambi nello stesso fuso e controlla lo scostamento nel record grezzo anziché nella visualizzazione. Se il divario che misuri è inferiore allo scostamento probabile, non hai alcun ordinamento.

La regola pratica è conservare la precisione necessaria all'attività di diagnosi e non di più. Un conteggio di sessioni all'ora risponde a una domanda di disponibilità senza tenere una cronologia per account, e un aggregato può essere conservato molto più a lungo delle righe grezze da cui proviene.

Leggi il record con i comandi, non con l'immaginazione

Stampa i campi su cui stai per ragionare, nelle unità che lo strumento memorizza e non in quelle che un cruscotto mostra.

Queste due righe mostrano l'età dell'handshake e i contatori di byte per ogni peer WireGuard, poi lo stesso tipo di materiale da un file di stato OpenVPN:

wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.status

Confronta l'età con l'intervallo di rinnovo delle chiavi prima di trarre una conclusione, e leggi i contatori insieme a essa. Un peer con un handshake recente e quasi nessun trasferimento sta scambiando keepalive, mentre un peer con un handshake vecchio e contatori grandi è stato occupato finché non si è fermato. Nessuna delle due righe dice cosa è stato fatto, e dirlo apertamente è più accurato che insinuare che il timestamp provi una visita.

Articoli correlati