はじめに(この記事で分かること)#

onionサイトを運営する場合、Torネットワークは接続元と接続先を直接結びつけない。しかし、運営者側の設定ミスや相関攻撃により、サーバーのorigin IPが漏れるリスクがある。

この記事では、onionサービスをIPアドレスを露出させずに運営するための構成と、相関攻撃への対策を整理する。

前提: 脅威モデルの整理#

onionサイト運営の脅威モデルでは、脅威モデル入門で整理した5種類の相手のうち、主に法執行機関と標的型攻撃者が問題になる。

onionサービスの構造#

onionサービスは、Torネットワーク内でイントロダクションポイント(IP)とレンデブーポイント(RP)を使って接続を確立する。サーバー側は自身のIPアドレスを一切公開しない。

HiddenServicePortの設定#

onionサービスのバックエンドサーバーがグローバルIPにポートを開けていると、Tor経由のアクセスだけでなくclearnet経由のアクセスも可能になり、origin IPが漏れる。

対策として、バックエンドはローカルLAN / VPN / Tor内部のみでリッスンし、HiddenServicePortで仮想ポートをローカルポートにマッピングする。

OnionBalanceによる分散#

OnionBalanceを使用すると、onionサービスのフロントを複数のバックエンドに分散できる。これにより、DDoS耐性とデアノニマイズ耐性が向上する。

CARONTE型の位置漏れへの対策#

CARONTE(ACM CCS 2015)は、onionサービスのページに含まれるURL・メールアドレスのドメイン・IPアドレスと、解析タグのID・ビットコインのアドレス・ページタイトルといった固有の文字列、それにHTTPS証明書を手がかりに、同じ内容や同じ証明書を出しているインターネット上のサーバーを探した。候補に実際に接続して応答の中身とWebサーバーを比べ、1,974件のうち101件(5%)で実IPを特定している。Torプロトコルの欠陥には頼っていない。漏れたのは、運営者がページと証明書に残した手がかりだった。

対策は以下の通りである。

  • onionサービスのページや証明書に、clearnet側のURL・メールアドレス・IPアドレスを書かない。
  • clearnetのサイトとonionサービスで、同じTLS証明書や、解析タグのID・ページタイトルなどの固有の文字列を使い回さない。
  • バックエンドはTor内に完全隔離する。

なお、vanguards-lite(Tor 0.4.7で導入)は、onionサービスの回線の2段目のリレーを固定して、guard discovery攻撃を難しくする仕組みである。入口のガードを固定するものではなく、上のようなページや証明書からの漏れも防がない。

まとめ#

onionサイトの運営は、Torネットワークの匿名性を利用しつつ、アプリケーション層や運用層の漏洩を防ぐ総合設計が必要である。

clearnet側のIP隠蔽は、クリアネットIP隠蔽で、origin IPの探索経路と対策は、origin IP探索の7経路と対策で詳しく扱う。