検証は、誰かが真実であってほしいと願う一文から始まり、証拠はその狭い版を支えるか、何も支えないかのどちらかである。公開アドレスの確認は、ある一つのリクエストがどの出口を使ったかを示す。提供事業者が何を保持し、誰がそれを読め、決して完了しないセッションがどうなるかは示さない。検証を文書化された手順としてたどれば、計測が担える以上のことを主張せずに済む。

観察できる主張を一つ選ぶ

どの道具を開く前にも、主張を一つの検証可能な文として書く:このプロファイルで、このネットワーク上で、公開アドレスのエコーへのリクエストは提供事業者が明示した出口から出る、という文である。この文は主体・条件・観察を名指ししており、だからこそ反証可能になる。VPNはプライバシーを守るといった主張には観察できる形がなく、どの計測も決着をつけられない。検証が扱わない範囲については二つ目の文を用意する、なぜなら保持、第三者によるアクセス、通信の相関はいずれもブラウザでの検証の外にあるからである。

その二つ目の文は、結果が届いてからではなく、あらかじめ書く。結果がまだ不明なうちに範囲について正直でいるほうが、安心させるスクリーンショットがチケットに届いてから正直でいるよりはるかに容易である。後から足す範囲の注記は、問いではなく結果を描写しがちである。

計測を再現するために読者が必要とする設定の事実

設定は結果を再現可能にするものであり、答えが良く見えるときに人々が飛ばすのもそこである。バージョン文字列、プロファイル名、接続ネットワーク、アドレスファミリーに加え、通信をトンネルの外に出しうる分割トンネルの規則もメモに入れる。検証する出来事も名指しする、動作中の接続、予期しない切断、手動の切断、ネットワークの切り替えでは働く規則が異なるからである。これらの出来事を混ぜた検証は、どれについてもほとんど何も証明しない。

検証する権限のある環境で、機微でない通信を使う。無関係なパケットを取得すると、記録は技術的に見えるようになり、証拠を増やさずに露出だけを増やす。取得はトンネルのインターフェースだけに向け、長時間の実行でディスクを埋めないようファイルサイズの上限を設ける。何かを変える前に取得を止め、ファイルが書いた設定行と一致するようにする。

何を測り、それが何を意味するかを述べる

道具が何を出力し、道具が何を見られたかを記録する。リゾルバの応答、アドレスエコーの結果、経路の照会はそれぞれ別の問いに答える、ウェブページ内の位置表示はデータベースについての推論であり、出口についての事実ではない。各行を生み出したコマンドをその隣に書く、コマンドのない値は再現できないからである。タイムスタンプは変更チケットと同じ時間帯に保つ、さもないと一週間後には順序が読めなくなる。

curl -s https://icanhazip.com
curl -s https://ipinfo.io/ip; echo
resolvectl status --no-pager | head -15

一致する二つの独立したエコーサービスは一つより強く、不一致そのものが書き留める価値のある発見である。 リゾルバの出力は、DNSがトンネルに従ったか、ローカルネットワークを使い続けたかを示す、これは出口アドレスとは別の主張である。生の出力をタイムスタンプ付きで保存し、最も安心させるスクリーンショットではなく反対の結果を残す。変更が結果を動かすときは一度に一つの変数だけを適用する、なぜならサーバーとクライアントを同時に変えるとどちらが効いたのか言えなくなるからである。

記録に入るもの、削除すべきもの

方法、秘密でない出力、限界を残し、それ以外は削除する。資格情報を含むプロファイル、私的なホスト名、アカウント識別子は証拠とともに持ち運ぶ必要がなく、それらを漏らす検証記録は示すはずだったものを損なっている。下の五つの項目は、引き継ぎに耐える最短の形である。

FieldWhat to write
ClaimOne testable sentence naming the profile, the network and the observation
Observer and scopeWho could see the traffic or the record, and under which conditions
SetupClient and server versions, profile name, access network, address families, split-tunnel rules, event under test
Raw resultTool output with a timestamp, exit addresses from both echo services, resolver answer
What it does not supportRetention, third-party access, correlation, untested address families

比較しているポリシー声明を、その日付と範囲とともに添付する。RFC 6973は、名指しされた観察者と定義された範囲を中心にプライバシー分析を枠づける:誰が何を、どの条件で観察でき、どの部分が未検討のまま残ったか、という形で検証記録に適している。

証拠が何を支え、何を支えないかを述べる一段落で締める。その段落が成果物であり、その上のすべてはそれを正直にするためにある。あらゆる節を和らげずに書けないなら、検証はチケットの主張より少ないものしか測っていない。

関連記事