WireGuardのハンドシェイクのタイムスタンプが実際に教えてくれること
ハンドシェイクの時刻は閲覧履歴ではないが、アカウントを出来事に結びつける。WireGuardとOpenVPNが何を記録し、精度が何を隠すかを比較する。
「最終ハンドシェイク、二分前」と書かれた一行は、継続的な活動の証拠に見えるが、それより弱い。これは一つのピアについて最後に完了した鍵交換を示すもので、通信が流れている間は固定の鍵更新タイマーで起こり、ピアが静かになると止まる。その時刻が人を何かに結びつけるかどうかは、そばに保存された識別子と両システムの時計にかかっている。以下では、最も一般的な二つのスタックでこの記録がどう振る舞うか、そしてその読み方がどこで誤るかを示す。
二つの記録、二つの異なる意味
WireGuardはピアごとに一つのハンドシェイクのタイムスタンプを保持し、鍵更新のたびに置き換えられ、さらに各方向のバイトカウンタを持つ。OpenVPNは通常、セッションの開始、切断、設定された冗長度が加える内容を記録するため、記録の単位は鍵交換ではなくセッションになる。
この違いが、不在の意味を決める:
| 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 |
ハンドシェイクが継続利用ではない理由
WireGuardは守るべきデータがある間、およそ二分ごとに鍵を更新し、アイドル状態になったピアは単に止まる。したがって古いハンドシェイクは、ノートPCがスリープしている、利用者が作業をやめた、ネットワークが次の交換を起こすはずだったパケットを落とした、のいずれかを意味しうる。タイムスタンプは活動の下限であり、注意の追跡者ではない。
逆の誤りも同じくらい簡単だ。持続的なkeepalive通信はアイドル状態の端末でもトンネルを温め続けるので、一時間誰も触っていない機械に最近のハンドシェイクが現れうる。ここでバイトカウンタが役立つのは、実際のデータを送るピアとkeepaliveだけを交換するピアを区別し、どちらの方向が量を運んだかも教えてくれるからだ。そのどれも宛先、ページ、クエリを明かさない。
識別子はタイムスタンプと一緒に運ばれる
アカウント、公開鍵、送信元アドレスのない時刻は孤児である。タイムスタンプをピアの身元と組み合わせると、観測は結びつけ可能になる:公開鍵はアドレスの変化を越えて存続し、送信元アドレスは事業者のアドレス変換の背後で多くの加入者に共有されうる。
この非対称性こそ、ほとんどのプライバシー議論が見落とす点だ。アドレスは共有されているため匿名に見え、鍵は長いため技術的に見えるが、安定した識別子は鍵のほうである。一方のフィールドを残してもう一方を捨てると、見かけの精度を変えずに相関リスクが変わる。
相関そのものが、文書化された懸念である。接続時刻をプロバイダのログイン事象、サポートチケット、支払い記録と結びつけると、宛先が一度も記録されていなくても身元を活動に結びつけうる、だからこそ書式よりも組み合わせのほうが重要なのだ。
システム間の相関には時計の注意が要る
同じ瞬間を報告する二つのシステムが秒まで一致することはまれだ。一方は出力にタイムゾーンのずれを適用し、他方は数秒ずれた時計で動き、仮想マシンはサスペンド後にずれることがある。
二つの出来事が同時に起きたと結論する前に、両方を同じタイムゾーンに変換し、ずれを表示ではなく生の記録で確認する。測っている差が想定されるずれより小さいなら、順序はまったくない。
実務上の原則は、トラブルシューティングに必要な精度だけを保ち、それ以上は保たないことだ。一時間あたりのセッション数はアカウントごとの履歴を残さずに可用性の問いに答え、集計値は元の生の行よりはるかに長く保持できる。
記録は想像ではなくコマンドで読む
これから推論するフィールドを、ダッシュボードが描く単位ではなく、ツールが保存する単位で出力する。
次の二行は、各WireGuardピアのハンドシェイクの経過時間とバイトカウンタを示し、続いてOpenVPNのステータスファイルから同種の材料を示す:
wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.status結論を出す前に経過時間を鍵更新の間隔と比べ、カウンタも一緒に読む。最近のハンドシェイクで転送がほとんどないピアはkeepaliveを交換しており、古いハンドシェイクで大きなカウンタを持つピアは止まるまで忙しかった。どちらの行も何が行われたかを語らず、そう明言するほうが、タイムスタンプが訪問を証明すると示唆するより正確だ。