FC2ブログ

ルーティング技術 2

オニオンルーティングの続き

Onion Routing - CasWiki
http://www.cas.mcmaster.ca/wiki/index.php/Onion_Routing

Onion Routing provides a way for two computers to communicate on a network anonymously.

オニオンルーティングはネットワーク上において2つのコンピュータが匿名で通信できる方法を提供する。

Onion routing focuses on hiding the source and destination addresses of a packet, rather than the contents of the packet In order for this to work, a message is encrypted and placed inside an 'onion'.

オニオンルーティングはパケットの送信元と送信先を秘匿することに重点が置かれている。そのオニオンルーティングを行うためにパケットの中にあるコンテンツ、メッセージは暗号化され、玉ねぎ(オニオン)の内部に置かれる。

The intermediate nodes along the path, called onion routers, decrypt (peel off a layer) of the onion to reveal the next router along the path to receive the onion. Onion routing runs on top of TCP.

それら発信元のノードから受信先へのノードの中間に位置するノードをオニオンルータという、そして、それは「玉ねぎ」の一つの暗号層をめくることによって復号化し、次のルーターへ渡す事によって発信元から受信先へのパスを伝導していく。オニオンルーティングはTCP技術のプロトコル層の上に位置している。(つまり、TCPあってのオニオンルーティングだということ。)

CF.Tor

概要

当初はオニオンルーティングの開発元でもある、米海軍調査研究所(United States Naval Research Laboratory)によって支援されていたが、2004年以降は電子フロンティア財団(Electronic Frontier Foundation)により支援されるプロジェクトとなった。2005年11月以降はEFFによる金銭の支援は終了した。なお、ウェブホスティングは継続されている。

オニオンルーティングと呼ばれる仮想回線接続により、通信を複数のノードを経由させることにより、匿名性を高めている。 暗号化が、あたかもタマネギの皮のように1ホップごとに積み重ねられることが名前の由来である。現実装においてはTCPでの通信を行うことができるがUDPやICMPなどのプロトコルは使用することができない。

仮想回線構築の概略

以下は、TorクライアントA(発信元)から、TorサーバB、Cを順に経て、行き先D(一般のWebサーバ等)に至る場合の説明である。

  • Aはあらかじめ得ているディレクトリリストの中から無作為的にBとCを選択する。
  • AはBに対し仮想回線接続の要求を、A-B間の暗号化通信用のセッション鍵を交換するための情報と共に送信する。
  • BはAに対し仮想回線接続の承諾とともに、セッション鍵交換のための情報を送信する。
  • A-B間に前段までで得られたセッション鍵により、暗号化通信路が得られる。以後A-B間の通信は本暗号化通信路を用いて行われる。
  • AはBに対し「BがCに対して仮想回線接続を要求する送信をすること」を要求する送信をする。
  • BはCに対し仮想回線接続の要求を、B-C間の暗号化通信用のセッション鍵を交換するための情報と共に送信する。
  • CはBに対し仮想回線接続の承諾とともに、セッション鍵交換のための情報を送信する。
  • B-C間に前段までで得られたセッション鍵により、暗号化通信路が得られる。以後B-C間の通信は本暗号化通信路を用いて行われる。
  • BはAに対しB-C間の仮想回線接続が完了したことを連絡する。
  • 以上により構築されたA-B-C間の仮想回線を通して、AはDと任意の通信を行うことができ、その通信のパケットはあたかもCが送信元のようにDからは見える。

A-B間、B-C間のセッション鍵はそれぞれAとB、BとCしか知らないので、中継により匿名性が得られるとされている。 中継サーバが3つ以上の場合も上記の手順を繰り返すことで同様に回線構築が行われる。

セッション鍵交換のためにはDiffie-Hellman鍵交換方式が用いられ、通信の暗号化としてはAESが使用される。 なお、仮想回線構築を含めたTorノード間の全通信は、途中の盗聴や改竄を防ぐために、TLSによる通信の上で行われる。

問題点

通信傍受

2007年8月30日、スウェーデンのセキュリティー研究者、Dan Egerstad氏は世界中の大使館や人権擁護団体の電子メールを傍受することに成功したと発表した。

Torノード間の通信は暗号化されているものの、末端(出口)となるTorノードと通常のTCP通信先との間ではその暗号化が解除されるという点を利用したもので、LANアナライザを搭載したTorノードを設置することで、そこからTorネットワークを抜けようとする通信を監視するだけで簡単に傍受できてしまうというものである。

なお、この問題はTorネットワークに対して送信するデータ自体を、たとえばHTTPSやSMTP over SSLなどを用いて別途暗号化することで防ぐことができる。

DNS漏洩

ほとんどのソフトウェアは、UDPを用いてDNSを参照するため、TCP専用であるTorネットワークを経由せず直接参照してしまい、匿名性が不完全になる可能性がある。

DNS規格自体はUDPとTCPの両方をサポート(RFC 2136)しており、多くのDNSサーバー実装も両対応となっているが、DNSを参照する多くのソフトウェアではUDPを用いるのが一般的であるという事が問題の根底にある。なお、TCPを用いたDNS参照をサポートしているソフトウェアであれば、この問題の影響を受けることはない。

以上のことより、古いバージョンのTorでは、HTTP通信を行う場合に、TCPを用いたDNS参照をサポートしているPrivoxyをWebブラウザとTorの間に設置し、併用することが推奨されていた。

バージョン0.2.0.1-alpha以降のTorには、DNS参照をTorネットワーク経由で行うDNSリゾルバが搭載された。これにより、DNS漏洩問題は解決され、SOCKSに非対応のソフトでも後述の秘匿サービスへのアクセスが可能となった。

トラフィック分析

2005年5月8日~11日に米国カリフォルニア州オークランドで開催された2005 IEEE Symposium on Security and Privacyにおいて、ケンブリッヂ大学のSteven J. MurdochとGeorge Danezisは論文「Low-Cost Traffic Analysis of Tor」を提示した。この論文によると、Torの匿名性を大幅に低下させる手法が存在する。当該論文はDanezis自身のページないしIEEE Computer Society digital libraryなどで閲覧可能である

中国とTorプロジェクトの攻防

中華人民共和国(中国)は、2009年9月30日の建国60周年記念式典に併せるかたちでインターネット検閲を強化し、Torを始めとする類似技術を用いた金盾回避を行う者の摘発、Tor公式サイトへのアクセス遮断、Torリレーノードへのアクセス遮断などを強化した。

これに対抗するようにTorプロジェクトでは、Torリレーノードとなってくれるボランティアの増強を呼びかけている。

秘匿サービス(Hidden Service)

Torの特徴として、身元を明かさずに各種のサーバ(Webサーバ、メールサーバ、IRCサーバなど)を運用することが可能である。 これは、.onionの識別子を持つ、特殊な疑似アドレスを持たせることにより、特定のIPアドレスと結びつけることなく、Torを実行させているノード同士が接続することができる。

これは、あらかじめ指定したノード(多くの場合はランダムに指定される)をランデブーポイントとして指定することにより、点から点への暗号化接続を行う。

 

このようにP2P技術は人権の最前線で活躍しているのです。

しかし、同時にオニオンルーティングの欠点も示されています。発信元と受信先の両方が監視されていては意味が無いのです

インテリジェントルーティング

ゲイツに買収されたスカイプ様のありがたいご解説

Skype P2P telephony explained-for geek only(スカイプのP2P技術の解説-キモヲタのためだけ)

Intelligent routing.

By using every possible resource, Skype is able to intelligently route encrypted calls through the most effective path possible.

すべての利用可能なリソースを活用し、スカイプは暗号化された会話を効率よのよい道のりで賢くお届けすることが出来ます。

Skype even keeps multiple connection paths open and dynamically chooses the one that is best suited at the time.

スカイプはさらに複数の道筋への接続を行っており、その時その時で最適な道筋をダイナミックに選択します。

This has the noticeable effect of reducing latency and increasing call quality throughout the network.

この技術は、ネットワークの遅延時間の短縮や会話の音質の向上などの目に見えた効果をもたらします。

スポンサーサイト



ルーティング技術

オニオンルーティング -匿名通信路

TCPによる通信経路の匿名化

・データ自体が暗号化されていても、だれとだれが通信しているかは攻撃者に知られてしまう。

→オニオンルーティング

オニオンルータは各々公開鍵基盤(PKI)を持っており、各オニオンルータはそれぞれが公開鍵・秘密鍵のペアをもっている必要がある。

全体像の説明はここが詳しい。

Onion Routerの紹介

探索技術

フラッディング

隣接するノードに次々と探索クエリを発行、やりとり

→何も工夫をしないと、探索クエリで帯域を占領してしまい、肝心のファイル交換に支障をきたす

 

工夫1 探索結果のキャッシュ化

工夫2 TTL(TimeToLive)の設定

以下の論文を参照

Revisiting the TTL-based Controlled Flooding Search:Optimality and Randomization

http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBwQFjAA&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.58.5350%26rep%3Drep1%26type%3Dpdf&rct=j&q=flooding%20time%20to%20live&ei=dAXnTenXOITuvQPIvsD-DQ&usg=AFQjCNGG3c68Rv4c86CzV9Sp4yUcrU_lVg&cad=rja

 

ABSTRACT
In this  paper we  consider  the  problem of  searching  for  a node or an object (i.e., piece of data, ?le, etc.)  in a large network.

Applications of this problem include searching for a destination node in a mobile ad hoc network,  querying for a piece of desired data in a wireless sensor network,

and searching for a shared ?le in an unstructured peer-to-peer network.

この論文で、我々は巨大なネットワークから一つのノードやオブジェクトをどのように探し出すべきなのかを述べることにする。

この問題を抱えているアプリケーションはアドホック(P2Pテクノロジ-基礎1参照:一過性の物)な関係にあるうちのなかから目的のノードを探し出すもの、

無線センサのネットワーク上においてほしい情報の断片を求める物、そしてP2Pネットワークにおいて共有ファイルを探し出す物も含む。

 

We limit our attention in this study to the class of controlled ?ooding search strategies where query/search packets are broadcast and propagated in the network until a preset TTL (time-to-live) value carried in the packet expires.

今回はパケットのTTLの期限が切れるまで、クエリ/探索のパケットが送信され、伝搬していくフラッディング検索戦略の類にのみ焦点をあてて考えていくことにしましょう。


Every unsuccessful search attempt results in an increased TTL value (i.e., larger search area) and the same process is repeated.

検索が失敗するときはTTLの値の増加や同じ処理を繰り返すことを試みる。

 

The primary goal of this study is to derive search strategies (i.e., sequences of TTL values) that will minimize the cost of such searches associated with packet transmissions.

この研究の目的は検索のパケットによって送受信のパケットが最小のコストになるような探索戦略を得ることである。

 

The main results of this paper are as follows.

この論文では結果は以下のようになる。

 

When the probability distribution of the location of the object is known a priori, we present a dynamic programming formulation with which optimal search strategies can be derived that minimize the expected search cost.

もし目的のオブジェクトの流通している可能性のある場所を経験的に知りうるとき、私たちは最小の探索コストで、ダイナミックな策定によって最適な探索戦略を示すことが出来る。

 

We also derive the necessary and su?cient conditions for two very commonly used search strategies to be optimal.

我々はさらに、探索戦略を最適にするために使う2つの非常に共通している必要十分条件を得る。

 

When the probability distribution of the location of the object is not known a priori and the object is to minimize the worst-case search cost,we show that the best strategies are randomized strategies, i.e.,  successive  TTL  values are  chosen  from  certain probability distributions rather than deterministic values.  

目的のオブジェクトが流通している可能性のある場所を経験的に知りえないとき、また、目的のオブジェクトが小さすぎて検索コストが最悪になるとき、我々は最良の戦略としてランダマイズされた戦略を提案する。TTLの値は決定的な値よりも配布物の可能性を重視して決定される。

 

We show that given any deterministic TTL sequence, there exists a randomized version that has a lower worst-case expected search cost.

我々は既に決定されたTTLシーケンスを示す、その中にはランダマイズされたものもあって最大のコストを消費してしまうケースがより少ない。

 

We also derive an asymptotically (as the network size increases) optimal strategy within a class of randomized strategies.

我々はさらに、ランダマイズされた戦略により、漸近的に最適な戦略を得ることを示す。

 

車車間通信に適したフラッディング

フラッディングとは、送信したいパケットをブロードキャストにて電波到達範囲内の全ノードへ送信し、受信したノードが再びそのパケットをブロードキャストすることを繰り返すことで、ネットワーク内の不特定ノードへ同一情報の配信を行うものである。

不特定ノードへ送信するのではなく、自身のルーティングテーブルに載っていない特定のノードへ送信するために利用することもある。

この場合は、目的のノードに届いたら、そのノードは転送をしない。また、TTL(Time To Live)にて転送回数を制限することもある。

フラッディングでは、新しいパケットを受け取ったノードは、必ず1度だけブロードキャストして近隣ノードへ転送することになる。

近隣ノードが全て受け取っていたとしても、それを認識することができないからである。

フラッディングされるパケットには、送信元ノード ID とシーケンス番号のような、他のフラッディングパケットと区別できるようなデータが入れられており、受け取ったノードはこの情報をローカルで保存しておく。

この情報を用いて、ノードが同一内容のパケットを2度目以降受け取った場合には転送はしない。

 

Design of P2P Communication System with using Flashより抜粋

工夫3 検索対象の工夫

データ構造の工夫。

EX.オブジェクト一つ一つではなくて、オブジェクト群のようなものを定義しておき、その群のリストに対してクエリを発行する。

 

分散ハッシュテーブル

従来の探索技術の限界

・インデックス鯖の利用/フラッディング・・・利用者増加により、検索クエリの増大による、ファイル転送帯域の減少。

 

分散ハッシュテーブル(DHT)・・ハッシュ値とデータの存在する位置(ノードのハッシュ値)とのマッピングが行われる。

・データとデータの保存場所のハッシュ値の組

・インデクスノード同士、近いハッシュ値のものを登録先として選ぶ。

・探索要求ノードも同じように近いハッシュ値のインデクスノードに投げる。投げられたノードになければ、そのノードも同じようにハッシュ値の近いインデクスノードに投げる。

・これを繰り返すことにより探索範囲が1/d(dは2以上)になる。

→フラッディングのように発散することがなく、効率的に探索が行える。

→インデクスを分散してもつことで安定性を保っている。

→クエリをダイナミックに処理することでアドホック性も担保されている。

NAT/ファイアウォール透過技術

参考:http://www.ms.u-tokyo.ac.jp/lecture/2006/901-35/2007-01-25.pdf

↑てかこいつは俺と同じ文献読んでるのがまるわかり。せめて文章表現ぐらい少しは変えろよw

 

NAT越え

 

NATファイアウォール越えとは簡単に言うものの、しかしながらP2Pオーバレイネットワークとはかなり大まかな概念でしかありません。

なので、現実にはルータやファイアウォールなどの障壁を乗り越えなくてはなりません。

今後はこの具体的な技術を見ていくことにしましょう。

 

逆向き接続

スライド2

 

Napster、GnutellaなどのP2Pアプリケーションでは当然のテクニックとして採用されている。

 

リレー通信

スライド3

今度は上で、もう片方のノードもファイアウォールで保護されている場合。その場合は両者以外のノードを中継として利用することでファイアウォール越えを実現している。

 

UPnP

スライド4

そもそもNATの静的ポートフォワーディングが出来れば必要ない技術。

いわゆるポート開放をしなくてもP2Pソフトウェアが利用出来るようにするための技術。

Torrentのクライアントのほとんどは導入している。故にTorrentが初心者に優しいP2Pソフトの代表になっているのはそのため。

しかしながら、これはルーターがUPnPに対応していることが条件。

 

UDP Hole PunchingとSTUM

スライド5

AとBというホストが、それぞれのプライベートネットワークにあるとする。N1とN2はそれぞれのNATデバイスである。SはグローバルIPアドレスを持つパブリックサーバである。

  1. A と B は S との UDP 通信を開始する。NATデバイス N1 と N2 は UDP 変換状態を作成し、一時的な外部ポート番号を割り当てる。
  2. S はそれらのポート番号を A と B にリレーして通知する。
  3. A と B は相手のNATデバイスと通知されたポート番号で直接通信する。NAT デバイスはそれ以前に生成されていた変換状態を使い、A および B の間でパケットの送受信が可能になる。

STUN(Simple Traversal of UDP through NATs)は、音声、映像、文章などの双方向リアルタイムIP通信を行うアプリケーションにおいて、NAT traversal(NAT通過)の方法の1つとして使われる標準化された(standards-based)インターネットプロトコルである。 STUNプロトコルは、アプリケーションがNATの存在と種類とを発見し、リモートホストへのUDP(User Datagram Protocol)接続にNATが割り当てたグローバルIPアドレスとポート番号とを得ることを許す。 STUNプロトコルが動作するには、インターネット上にSTUNサーバが存在する必要がある。 STUNプロトコルは、RFC(Request for Comments) 3489に定められる。

STUNはNATゲートウェイとファイアウォールとの存在を発見するために、RFC 3489から構成される下図のアルゴリズムを使用する。

図を通る経路が赤い箱で終わる所ではUDP通信は可能でない。経路が黄色であるか緑の箱で終わる所で、UDP通信は可能である。

 

HTTPカプセル化

スライド6

ようはHTTP通信であると偽造してP2Pパケットの送受信を行うという手法。

P2Pテクノロジ-オーバレイ・ネットワークを実現するための技術-概論

IPネットワーク

+

・NAT/ファイアウォール通信

・探索手段

・アプリケーション層ルーティング技術

・ダイナミッククラスタリング高速データ配信

・PCによるキャッシュで効率化

オーバレイ・ネットワーク

プロフィール

Naka210

Author:Naka210
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR