要約

  • RFC 3041が扱ったのは、IPv6の限られたプライバシー問題だった。リンク層の識別子から作られたインターフェース識別子は、端末が新しいネットワークプレフィックスへ移っても、アドレスに残ることがあった。
  • 一時アドレスはアドレスを使った単純な相関を難しくするが、プレフィックスを隠したり、アプリケーション識別子を消したり、ホストを匿名化したりはしない。

IPv6のステートレスアドレス自動設定(SLAAC)では、端末がローカルにある情報とルーターの通知するプレフィックスを組み合わせてアドレスを作る。RFC 3041が論じたアドレス構造では、プレフィックスがネットワーク上の位置を示し、残りをインターフェース識別子が埋める。初期の方式では、その識別子をIEEEやリンク層の値から導くことがあった。値が固定なら、プレフィックスが変わっても、アドレスの中に見分けられる部分が残る。

この継続性が問題になるのは、IPヘッダーにアドレスが載るからだ。ペイロードが暗号化されていても、見える送信元アドレスを手掛かりに、観測者が複数の通信を結び付ける余地は残る。ノートPCが別々のネットワークで異なるプレフィックスを得ても、各アドレスに共通の識別子があれば、同じインターフェースだと推測されるかもしれない。RFC 3041が記述したのは相関のリスクであって、観測者が本人を特定した証拠でも、全端末が同じ生成方式を使うという主張でもない。

この提案はSLAACを別のアドレス体系に置き換えず、通常のアドレスに一時的なグローバルアドレスを加えた。外向きの接続では一時アドレスを送信元として優先できる。一方、着信を受ける、DNSに登録する、管理者やアプリが安定して参照するといった用途には、安定アドレスが役立つ。二つの役割を併存させる設計では、送信元の選択が運用上の要となる。プライバシーを意識した送信と、安定した着信可能性は別の仕事だからだ。

RFC 3041は、変化する履歴状態からランダム化したインターフェース識別子を作り、それを使って通知済みプレフィックスごとの一時アドレスを生成する手順を示した。推奨デフォルトは優先有効期間が1日、有効期間が1週間だったが、利用者や実装の方針、プレフィックス自身の有効期間にも左右される。古いアドレスが非優先になる前に、新しいものを用意できる。非優先アドレスは既存接続のために引き続き有効でも、新しい接続では優先アドレスを使う。したがってローテーションとは、時間の重なる複数のアドレス状態を管理することであり、パケットごとに送信元を変えることではない。

設計が狙ったのは、異なる通信で同じアドレス要素を再利用するという、特定の相関手掛かりだった。ネットワークプレフィックスそのものは残るため、地理的な構成を示したり、同じ場所の活動をひとまとめにしたりすることはある。DNS名、Cookie、アカウント、アプリの挙動、通信時刻、その他の識別子も変わらない。サーバーはログインアカウントを認識でき、経路上の観測者は通信パターンを比較できる。通信に使われた一時アドレスが知られ、その有効期間中に到達可能なこともある。アドレスの再利用を減らすことと、匿名性を保証することは同じではない。

安定アドレスとの併用には代償もある。ローテーションはパケット記録の追跡、アクセス制御リスト、逆引きDNSへの期待、トラブル対応、一部の長時間接続を複雑にする。アプリには宛先として固定したアドレスが必要な場合があり、管理者は予測可能なログを望むこともある。そのためRFC 3041は、アプリケーション、実装、信頼された管理者が一時アドレスの使用方針に関われる余地を残した。ネットワークが各アプリの選択を一律に決めたわけではない。

規格の沿革は、2001年の細部が今も現行仕様だという意味ではない。2007年にRFC 4941がRFC 3041を置き換え、2021年にはRFC 8981がRFC 4941を置き換えた。現行の系譜でも一時アドレス生成は続くが、アルゴリズムと推奨事項は見直された。RFC 7217とRFC 8064は近接する別の選択肢、つまりハードウェア識別子をそのまま露出しない安定インターフェース識別子を扱う。一時アドレスは時間とともに変わるが、安定かつ不透明な識別子はネットワークごとに異なる値を使いながら、同一ネットワーク内では安定できる。

RFC 3041が残した問いは「IPv6アドレスをプライベートにできるか」ではない。ネットワークプレフィックスが変わったとき、活動をなお結び付ける要素はアドレスのどこに残り、アプリがどの送信元を示すかを誰が決めるのか、という問いだった。一時アドレスは一つの観測窓を狭める。本人確認、到達可能性、端末の活動を結び付けるあらゆる手段を解決するものではない。

出典