チャットアプリで IP アドレスは見られるのか、各観測者が知り得ること
サービス経由のチャットでは、送信者とあなたのネットワーク上の相手は別の存在です。サービスが見るもの、あなたが見るもの、アプリ名が示唆するものを分けて考えます。
「誰と話しているのか」という問いは、実は一つの文に二つの問いが重なっています。一つはメッセージを書いたアカウントについて、もう一つはあなたのクライアントが実際に保持しているネットワーク接続の向こう側にある機械についてです。サービス経由のチャットでは、この二つはほとんど決して同じ存在ではなく、その違いが、VPN がメッセージ相手に対して何を隠し何を隠さないかという混乱の大半を説明します。トポロジーを正しく押さえれば、プライバシーの問いは感情論ではなく答えられる問いになります。
あなたのクライアントが話しているのはサービスであり、相手本人ではない
各参加者がサービスに接続し、サービスがアカウント間でメッセージを届けるテキストチャットアプリを考えてみましょう。あなたのクライアントはサービスへの接続を保持し、相手の参加者は同じサービスへの別の接続を保持します。メッセージは相手のクライアントからサービスへ、サービスからあなたのクライアントへと流れます。つまり、あなたの通信上の相手は相手の端末ではなく、サービスの端点です。
Alex's client -> chat service -> your client以降のすべては、この一つの図から導かれます。自分の接続を見ても分かるのはサービスであり、アレックスではありません。アレックスの接続を見ても、反対側から見たサービスが分かるだけです。どちらの観測も、それ単独では相手の端末に関するパケット単位の記録ではなく、自分の通信をどれだけ調べても、そうした記録にはなりません。
観測者が違えば集まる証拠も違う
サービスはどちらの参加者よりも強い立場にあります。両方の接続を終端し、さらにどちらの接続がどのアカウントのものかを知っているからです。何を保存するか、どれだけの期間か、どの記録を結び付けるか、誰に開示するかは別々の問いで、それぞれ別の答えがあり、「アプリは端末間で暗号化されている」という言葉ではどれも答えになりません。
受け取る側のあなたは、ネットワーク上の事実については弱い立場ですが、内容に関する事実については強い立場です。メッセージ本文、表示名、送信者が入力したり添付したりしたものすべてです。自分のアドレスを自分で入力した送信者はそれを開示しており、その開示はネットワークの観測ではありません。そう読めてしまうだけです。
| Observer | Sees | Cannot conclude |
|---|---|---|
| You | Your connection to the service, message contents, sender-supplied details | The other client's source address |
| The other participant | Their connection, message contents, what the service attaches | Your source address |
| The service | Both connections, account mapping, delivery metadata | What it does not retain, or what leaves its boundary |
アレックスが VPN 経由で接続している場合、サービスはその接続について、アレックスの自宅アドレスではなく出口アドレスを見ることがあります。それはサービスが見るものについての記述です。出口アドレスがあなたに渡されるという意味でも、ましてやアレックスの通信経路の選択によってあなた自身の接続が匿名化されるという意味でもありません。
アプリが本当にピアツーピアである場合
中継モデルはモデルであり、法則ではありません。メッセージ機能の中には、クライアント間に直接の経路を張るものがあります。たとえばシグナリングサーバーを介して交渉されるブラウザのデータチャネルや、大量のデータを中継しないよう二つの端末を直接つなぐファイル転送モードです。そうした場合、通信上の相手は本当に相手の端末であり、観測者の分析はまったく変わります。
アプリの親しみやすい名前だけでは、どちらの場合なのか分かりません。「ダイレクトメッセージ」が示すのは誰が読むかであって、どう運ばれるかではありません。同じアプリの中の通話や画面共有の機能が、隣のテキストスレッドとは別のトポロジーを使うこともあります。その機能についてベンダーの文書を読むか、使っている間にクライアントが開く接続を観察してください。
端末間暗号化の説明が扱うのは、保護された内容を誰が読めるかです。どのサーバーが接続を受け付けるか、どのメタデータを見るか、直接経路があるかについては何も述べていません。RFC 6973 の観測者の能力に関する議論は有用な規律です。まず観測者を名指しし、その観測者が実際に集められるものを列挙します。
これが VPN にとって何を意味するか
VPN が変えるのは、サービスがあなたの接続について見る内容です。通信上の相手が誰であるかは変わりませんし、相手にあなたのアドレスの新しい見え方を与えるわけでもありません。VPN がメッセージ相手からあなたを隠してくれると期待するのはカテゴリーの誤りです。相手のクライアントはそもそもあなたのクライアントと接続していません。
VPN が変えうるのは直接経路の機能です。アプリがそうでなければピアツーピア接続を交渉する場合、通信をトンネル経由にすると代わりに中継を強いられることがあり、一部の機能は動作が変わったり縮退したりします。これは実際の効果ですが、トポロジーの話であり、会話から消える話ではありません。
そのうえで、書き留めるものの中では二つの問いを分けておきましょう。どのアカウントが送ったのか、どの端点が運んだのか。両方に明示的に答え、それぞれの答えを誰が観測できるかを記し、メッセージが追跡できるかどうかという一つの判定にまとめるのはやめてください。