JP2005159911A - 情報検索方法、情報検索装置、および情報検索プログラム - Google Patents

情報検索方法、情報検索装置、および情報検索プログラム Download PDF

Info

Publication number
JP2005159911A
JP2005159911A JP2003398089A JP2003398089A JP2005159911A JP 2005159911 A JP2005159911 A JP 2005159911A JP 2003398089 A JP2003398089 A JP 2003398089A JP 2003398089 A JP2003398089 A JP 2003398089A JP 2005159911 A JP2005159911 A JP 2005159911A
Authority
JP
Japan
Prior art keywords
information
search
node
request
public
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003398089A
Other languages
English (en)
Other versions
JP4360883B2 (ja
Inventor
Susumu Sakamoto
勧 坂本
Tatsuya Kainuma
達也 貝沼
Tsutomu Kato
強 加藤
Kazukuni Kohara
和邦 古原
Hideki Imai
秀樹 今井
Shinji Yamanaka
晋爾 山中
Ryoichi Sasaki
良一 佐々木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Prime Software Technologies Ltd
Original Assignee
Fujitsu Prime Software Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Prime Software Technologies Ltd filed Critical Fujitsu Prime Software Technologies Ltd
Priority to JP2003398089A priority Critical patent/JP4360883B2/ja
Publication of JP2005159911A publication Critical patent/JP2005159911A/ja
Application granted granted Critical
Publication of JP4360883B2 publication Critical patent/JP4360883B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】 P2Pネットワークでの情報検索効率を向上させる。
【解決手段】 子装置4から情報公開要求7を受け取った場合、公開情報格納手段1aにより、公開情報記憶手段1bに公開情報が格納される。情報公開要求転送手段1cにより、情報公開要求7が親装置6に対して転送される。また、子装置5から情報検索要求8を受け取った場合、検索条件格納手段1dにより、検索条件記憶手段1eに対して検索条件が格納される。情報検索要求転送手段1fにより、情報検索要求8が親装置6に対して転送される。その後、検索条件記憶手段1eに記憶された検索条件に基づいて、公開情報記憶手段1bに記憶された公開情報が検索される。検索によって公開情報が合致した場合、情報検索要求8の送信元である検索元装置3に対して公開情報が送信される。
【選択図】 図1

Description

本発明は、ピアツーピア(P2P:Peer to Peer)ネットワーク上で共有する情報を検索するための情報検索方法、情報検索装置、および情報検索プログラムに関し、特に多数の装置において公開された情報を一括して検索するための情報検索方法、情報検索装置、および情報検索プログラムに関する。
近年の情報通信技術の発達に伴い、ネットワークを介した様々なサービスが提供されている。このとき、提供されるサービスの形態も多種多様であり、新たな形態のサービスを提供するには、そのサービスに応じたネットワーク上の構成要素の追加や変更が必要となる場合もある。
また、インターネットのような広域ネットワークでは、伝送されるパケットが悪意の第三者に渡る危険性がある。そのような場合でも、パケットの内容の秘匿性や通信相手の匿名性を保つ必要がある。
そこで、ネットワークを介したサービス提供の普及に伴い、ネットワーク構成が容易に変更できること、およびネットワークを介した通信に関する匿名性を保つことが望まれている。
・ネットワーク構成の変更の容易性について
構成を容易に変更できるネットワークとしてP2Pネットワークがある。P2Pネットワークとは、平等な機能を持ったノード(Peer)同士がブローカレス(中央集権的な管理部が無いこと)で直接通信する形態のネットワークである。
P2Pネットワークは、構成を動的に変更可能であるという特徴を持つ。すなわち、P2Pネットワークでは、ノードのネットワークへの参加やネットワークからの退場は任意である。そのため、P2Pネットワーク上で通信を行う場合、その時点で参加しているノード間でP2Pの通信を行いながら、送信相手のノードへパケットを転送する。P2Pネットワークを用いれば、特定のサーバを経由せずにコンピュータ同士の情報共有が可能となる。
・情報漏洩防止について
インターネット上のデータの送受信者の匿名性を守るための様々な技術が考えられている。データの送受信の匿名性を守るためには、全てのデータ通信を暗号化すると共に、パケットの伝送経路も漏洩しないようにする必要がある。
パケットの伝送経路の漏洩を防止するには、複数の中継地(ルータ)を活用することにより、通信中のパケットの受信元や転送先等の情報の漏洩をシャットアウトする必要がある。このような伝送経路の漏洩防止手法としては、「オニオンルーティング」と名付けられた手法が知られている(たとえば、特許文献1参照)。
オニオンルーティングの手法では、オニオンルータと呼ばれる堅牢で固定的なルータがルーティングを司る。送信端末では、送信相手までの伝送経路を予め決定し、パケットを中継する各オニオンルータの公開鍵を用いてパケットの伝送経路に関する情報を暗号化する。
パケットを受信したオニオンルータは、自身の秘密鍵で伝送経路に関する情報を復号する。この復号によりパケットの次の転送先が判別され、オニオンルータは次のノード(オニオンルータ若しくは受信端末)にパケットを転送する。このように、各オニオンルータでは、次の転送先以外隠蔽された状態を保つことができるため、最終的な受信端末の情報を特定することができない。また、オニオンルータにおいて、パケットを送出する際に、それまでの伝送経路に関する情報をパケットに付加しないことで、送信元の漏洩を防止できる。
このように、オニオンルーティングでは、データパケットが目的地までの経路情報を多重に暗号化して保持することで、ルーティングを行う各ノードやネットワーク上でのスキミングを行う者に対して経路情報の一部しか参照できないようにしている。
米国特許第6、266、704号
しかし、前述したP2Pネットワークにおける情報共有技術では、P2Pネットワーク上での検索の効率化が考慮されていなかった。そのため、ネットワーク上の情報の検索をリアルタイムに効率よく行うことができなかった。
たとえば、P2Pネットワーク上で公開されている全ての情報の中から、任意の検索条件を満たす情報を検索する場合、検索要求をブロードキャストにより全てのノードに対して送信する必要がある。このような検索をP2Pネットワーク内の多数のノードが同時に行うと、ネットワークの通信効率が低下してしまう。
また、P2Pネットワークに対してオニオンルーティング等の匿名性強化を行うと、ネットワーク上での情報のキャッシュを有効に行うことができないという問題が生じる。すなわち、P2P以外のネットワークでは、通信される情報を、その情報を中継したノードでキャッシュしておくことで、同一情報に対する以後のアクセスの効率化を図ることができる。ところが、P2Pネットワーク上の通信において情報発信者の匿名性の強化を行った場合、発信された情報がP2Pネットワーク上の不特定多数のノードにキャッシュされていても、キャッシュされた情報は情報発信者との関係付けを失っている。そのため、キャッシュされた情報を通じて情報発信者と受信者との間で双方向コミュニケーションを行うことができない。
しかも、ネットワーク上での情報量は増大化する傾向にあり、公開されている情報をそのまま各ノードでキャッシュしていたのでは、各ノードにかかる負荷が過大となる。そのため、公開情報のメタデータ(公開情報の特徴等を示すデータ)をキャッシュすることが考えられる。公開情報のメタデータをキャッシュさせた場合、そのメタデータを参照した情報受信側のノードから、情報発信側のノードにアクセスし、公開情報の実体を取得できることが必要である。
ところが、前述のように匿名性を強化していると、キャッシュされた情報と情報の発信者との間の関係付けが失われている。そのため、情報受信側のノードから情報発信者側のノードにアクセスし、公開情報の実体を取得することができなかった。すなわち、匿名性を強化したP2Pネットワークでは、情報のキャッシュによる情報検索の効率化を図ることが困難だった。
本発明はこのような点に鑑みてなされたものであり、P2Pネットワークでの情報検索効率を向上させることができる情報検索方法、情報検索装置、および情報検索プログラムを提供することを目的とする。
本発明の第1の態様では上記課題を解決するために、図1に示すようなピアツーピア方式のネットワーク上で公開されている情報を検索する情報検索方法が提供される。この情報検索方法では、情報検索装置1の公開情報格納手段1aが、他の装置から公開情報を含む情報公開要求7を受け取った場合、公開情報記憶手段1bに対して公開情報を格納する。このとき、ネットワーク内の装置間の関係が木構造で定義されており、情報検索装置1の情報公開要求転送手段1cが、情報公開要求7を木構造における親装置6に対して転送する。また、情報検索装置1の検索条件格納手段1dが、他の装置から検索条件を含む情報検索要求8を受け取った場合、検索条件記憶手段1eに対して検索条件を格納する。このとき、情報検索装置1の情報検索要求転送手段1fが、情報検索要求8を木構造における親装置6に対して転送する。その後、情報検索装置1の検索手段1gが、検索条件記憶手段1eに記憶された検索条件に基づいて、公開情報記憶手段1bに記憶された公開情報を検索する。そして、検索によって公開情報が合致した場合、情報検索装置1の検索結果通知手段1hが、情報検索要求8の送信元である検索元装置3に対して公開情報を送信する。
このような情報検索方法によれば、他の装置から情報公開要求7を受け取った場合、公開情報記憶手段1bに公開情報が格納され、情報公開要求7が親装置6に対して転送される。また、他の装置から情報検索要求8を受け取った場合、検索条件記憶手段1eに対して検索条件が格納され、情報検索要求8が親装置6に対して転送される。その後、検索条件記憶手段1eに記憶された検索条件に基づいて、公開情報記憶手段1bに記憶された公開情報が検索される。検索によって公開情報が合致した場合、情報検索要求8の送信元である検索元装置3に対して公開情報が送信される。
また、本発明の第2の態様では上記課題を解決するために、ピアツーピア方式のネットワーク上で公開されている情報を検索する情報検索方法において、前記情報公開要求の送信元である公開元装置が、情報の公開指示に応じて、前記ネットワーク内の複数の情報検索装置の中から少なくとも1つの前記情報検索装置を選択し、選択した前記情報検索装置に対して前記情報公開要求を匿名通信によって送信し、前記情報検索要求の送信元である検索元装置が、情報の検索指示に応じて、前記ネットワーク内の複数の前記情報検索装置の中から少なくとも1つの前記情報検索装置を選択し、選択した前記情報検索装置に対して、検索条件を含む前記情報検索要求を匿名通信によって送信し、前記ネットワークを構成する前記情報検索装置それぞれにおいて、公開情報格納手段が、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納し、情報公開要求転送手段が、前記情報公開要求を隣接する他の情報検索装置に対して転送し、検索条件格納手段が、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納し、情報検索要求転送手段が、前記情報検索要求を隣接する他の情報検索装置に対して転送し、検索手段が、前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索し、検索結果通知手段が、前記検索条件に前記公開情報が合致した場合、前記検索元装置に対して検索結果を匿名通信によって送信する、ことを特徴とする情報検索方法が提供される。
このような情報検索方法によれば、公開元装置により、情報の公開指示に応じて、複数の情報検索装置の中から少なくとも1つの情報検索装置が選択され、選択された情報検索装置に対して情報公開要求が匿名通信によって送信される。また、検索元装置により、情報の検索指示に応じて、複数の情報検索装置の中から少なくとも1つの情報検索装置が選択され、選択された情報検索装置に対して検索条件を含む情報検索要求が匿名通信によって送信される。そして、情報検索装置それぞれでは、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して公開情報が格納され、情報公開要求が隣接する他の情報検索装置に対して転送される。また、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して検索条件が格納され、情報検索要求が隣接する他の情報検索装置に対して転送される。さらに、検索条件記憶手段に記憶された検索条件に基づいて、公開情報記憶手段に記憶された公開情報が検索され、公開情報が合致した場合、検索元装置に対して検索結果が匿名通信によって送信される。
また、本発明の第3の態様では上記課題を解決するために、ピアツーピア方式のネットワーク上で公開されている情報を検索する情報検索装置において、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納する公開情報格納手段と、前記ネットワーク内の装置間の関係が木構造で定義されており、前記情報公開要求を前記木構造における親装置に対して転送する情報公開要求転送手段と、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納する検索条件格納手段と、前記情報検索要求を前記木構造における前記親装置に対して転送する情報検索要求転送手段と、前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索する検索手段と、前記検索条件に前記公開情報が合致した場合、前記情報検索要求の送信元である検索元装置に対して検索結果を送信する検索結果通知手段と、を有することを特徴とする情報検索装置が提供される。
このような情報検索装置によれば、上記第1の態様に示す情報検索方法に係る処理が情報検索装置上で実現される。
また、本発明の第4の態様では上記課題を解決するために、ピアツーピア方式のネットワーク上で公開されている情報を検索するための情報検索プログラムにおいて、コンピュータに、公開情報格納手段が、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納し、前記ネットワーク内の装置間の関係が木構造で定義されており、情報公開要求転送手段が、前記情報公開要求を前記木構造における親装置に対して転送し、検索条件格納手段が、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納し、情報検索要求転送手段が、前記情報検索要求を前記木構造における前記親装置に対して転送し、検索手段が、前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索し、検索結果通知手段が、前記検索条件に前記公開情報が合致した場合、前記情報検索要求の送信元である検索元装置に対して検索結果を送信する、処理を実行させることを特徴とする情報検索プログラムが提供される。
このような情報検索プログラムに従ってコンピュータを動作させれば、上記第1の態様に示す情報検索方法に係る処理がコンピュータ上で実現される。
以上説明したように本発明の第1、第3、第4の態様では、ネットワーク内の装置間の関係を木構造で定義し、受け取った公開情報を記憶すると共に親装置へ送信し、受け取った検索条件を記憶すると共に親装置へ送信するようにした。さらに、記憶した検索条件に合致する公開情報が記憶されていたとき、情報検索要求の送信元に対して公開情報を送信するようにした。これにより、ピアツーピアのネットワークにおいて、検索元装置の木構造で上位に位置する装置に記憶された公開情報を検索するだけで、ネットワーク内で公開されている全ての情報の検索が可能となる。その結果、検索効率が向上する。
また、本発明の第2の態様では、公開元装置は、匿名通信により複数の情報検索装置のうちの1つに対して情報公開要求を送信し、検索元装置は、匿名通信により複数の情報検索装置の内の1つに対して情報検索要求を送信するようにした。各情報検索装置は、受け取った情報公開要求と情報検索要求とを記憶し、他の隣接する装置に転送する。そして、検索条件に公開情報が合致したとき、検索結果を検索元装置に対して送信するようにした。これにより、匿名性を保ったまま、ピアツーピアのネットワーク上での効率的な情報検索を行うことができる。
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
図1は、実施の形態に適用される発明の概念図である。図1には、ピアツーピア方式のネットワーク上で公開されている情報を検索する情報検索装置1が示されている。この情報検索装置1は、公開情報格納手段1a、公開情報記憶手段1b、情報公開要求転送手段1c、検索条件格納手段1d、検索条件記憶手段1e、情報検索要求転送手段1f、検索手段1g、および検索結果通知手段1hを有している。
また、ネットワーク上の装置間の関係が木構造で定義されている。たとえば、情報検索装置1に対する子装置4,5や親装置6が定義されている。そして、木構造を構成している各装置に対して、情報公開要求7や情報検索要求8が渡される。図1の例では、公開元装置2から情報公開要求7を送信され、検索元装置3から情報検索要求8が送信されている。
公開情報格納手段1aは、他の装置から公開情報を含む情報公開要求7を受け取った場合、公開情報記憶手段1bに対して公開情報を格納する。たとえば、木構造における子装置4から情報公開要求7が渡される。
公開情報記憶手段1bは、コンピュータによって読み取り可能な情報を記憶可能な記録媒体内の記憶領域である。公開情報記憶手段1bに格納された公開情報は、情報のキャッシュ処理と同様に、一定期間使用されない等の所定の条件を満たしたときに削除することができる。
情報公開要求転送手段1cは、受け取った情報公開要求7を木構造における親装置6に対して転送する。このように木構造を構成する各装置が情報公開要求7をその親装置に対して転送していくことで、情報公開要求7が木構造における最上位(ルート)の装置まで転送される。
検索条件格納手段1dは、他の装置から検索条件を含む情報検索要求8を受け取った場合、検索条件記憶手段1eに対して検索条件を格納する。たとえば、木構造における子装置5から情報検索要求8が渡される。
検索条件記憶手段1eは、コンピュータによって読み取り可能な情報を記憶可能な記録媒体内の記憶領域である。検索条件記憶手段1eに格納された検索条件は、情報のキャッシュ処理と同様に、一定期間使用されない等の所定の条件を満たしたときに削除することができる。
情報検索要求転送手段1fは、情報検索要求8を木構造における親装置6に対して転送する。このように木構造を構成する各装置が情報検索要求8をその親装置に対して転送していくことで、情報検索要求8が木構造における最上位(ルート)の装置まで転送される。
検索手段1gは、検索条件記憶手段1eに記憶された検索条件に基づいて、公開情報記憶手段1bに記憶された公開情報を検索する。たとえば、検索手段1gは、新たな検索条件が検索条件記憶手段1eに格納されたとき、その検索条件に合致する公開情報を、公開情報記憶手段1b内から検索する。また、検索手段1gは、新たな公開情報が公開情報記憶手段1bに格納されたとき、その公開情報が検索条件記憶手段1eに格納されている各検索条件に合致するか否かを判断する。
検索結果通知手段1hは、検索条件に公開情報が合致した場合、該当する検索条件の情報検索要求8の送信元である検索元装置3に対して検索結果を送信する。検索結果には、たとえば、検索条件に合致した公開情報の全部または一部を含める。また、公開情報と共に、公開情報の送信元である公開元装置2の識別情報が格納されている場合、その識別情報を検索結果として検索元装置3に送信すればよい。検索元装置3は、公開元装置2の識別情報に基づいて公開元装置2にアクセスし、公開情報を取得することができる。
このような構成の情報検索装置1によれば、子装置4から情報公開要求7を受け取った場合、公開情報格納手段1aによって、公開情報記憶手段1bに公開情報が格納される。また、情報公開要求転送手段1cによって、情報公開要求7が親装置6に対して転送される。
また、子装置5から情報検索要求8を受け取った場合、検索条件格納手段1dによって、検索条件記憶手段1eに対して検索条件が格納される。また、情報検索要求転送手段1fによって、情報検索要求8が親装置6に対して転送される。
その後、検索手段1gによって、検索条件記憶手段1eに記憶された検索条件に基づいて、公開情報記憶手段1bに記憶された公開情報が検索される。検索によって公開情報が合致した場合、検索結果通知手段1hによって、情報検索要求8の送信元である検索元装置3に対して検索結果が送信される。
このように、情報公開要求7と情報検索要求8とを、木構造の上位の装置に順次転送すると共に、それらの要求を中継した装置に置いて公開情報や検索条件を格納するようにした。そのため、公開元装置2は、木構造を構成する何れかの装置に情報公開要求7を送信すれば、その情報公開要求7は最上位の装置まで転送される。同様に、検索元装置3は、木構造を構成する何れかの装置の情報検索要求8を送信すれば、その情報検索要求8は最上位の装置まで転送される。従って、情報公開要求7に含まれる公開情報は、木構造上の何れかの装置において、必ず情報検索要求8に含まれる検索条件に基づく検索の対象となる。すなわち、公開されている情報の検索漏れは無くなる。
しかも、木構造を構成する全ての装置に対して情報検索要求を送信する必要は無いため、検索効率が向上する。さらに、各装置において検索条件を記憶しておき、後で公開された情報があっても、先に格納されていた検索条件に基づいて検索するようにすることで、検索元装置3のユーザは、目的の情報を適宜受け取ることが可能となる。
ところで、公開元装置2から木構造内の装置(たとえば子装置4)に対して情報公開要求7を送信する際に、匿名通信路を経由して送信することができる。同様に、検索元装置3から木構造内の装置(たとえば子装置5)に対して情報検索要求8を送信する際に、匿名通信路を経由して送信することができる。匿名通信路による匿名通信は、たとえば、オニオンルーティングの技術によって行うことができる。オニオンルーティングでは、パケットを中継する各装置が、自分の暗号鍵で所定の情報を復号することで、パケットの次の転送先を知ることができる。すなわち、暗号化の鍵を不特定多数に分散することができる。そのため、暗号鍵の一極集中による匿名化の脆弱性を無くすることができる。
匿名通信路を経由して情報公開要求7や情報検索要求8が転送された場合、公開情報や検索条件と共に、匿名通信路の情報を格納しておく。そして、公開情報が検索でヒットしたとき、検索結果通知手段1hは、その公開情報が転送されてきたときの匿名通信路や子装置4の識別情報を含めて検索元装置3に送信する。この際、検索条件と共に格納されていた匿名通信路を経由して送信される。これにより、検索元装置3は、公開元装置2にアクセスするための匿名通信路を知ることができる。その結果、検索後に公開元装置2と検索元装置3との間で匿名的に双方向のコミュニケーションを行うことができる。
次に本発明の実施の形態について具体的に説明する。なお、以下の実施の形態では、公開される情報のメタデータをオニオンリファレンスと呼び、このオニオンリファレンスをP2Pネットワーク上の各ノードでキャッシュする。また、情報を検索する側のノードは、各ノード内の情報を検索する検索エージェントを送信し、この検索エージェントをP2Pネットワーク上の各ノードでキャッシュする。
図2は、本実施の形態のネットワーク構成例を示す図である。P2Pネットワーク10は、複数のノード100,200,310,320,330,340,350によって構成されている。各ノード100,200,310,320,330,340,350は、隣接ノードと接続されている。ノード100,200,310,320,330,340,350は、コンピュータとしての機能を備えた装置である。
図3は、本発明の実施の形態に用いるノードのハードウェア構成例を示す図である。ノード100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、および通信インタフェース106が接続されている。
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションプログラムが格納される。オニオンリファレンスや検索エージェントは、RAM102やHDD103に格納される。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス107を介してCPU101に送信する。
通信インタフェース106は、P2Pネットワーク10に接続されている。通信インタフェース106は、P2Pネットワーク10を介して、他のノードとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3にはノード100のハードウェア構成を示したが、他のノード200,310,320,330,340,350も同様のハードウェア構成で実現できる。
まずオニオンリファレンスと検索エージェントとをキャッシュすることによる検索システムの概念を説明する。
図4は、本発明の実施の形態における情報検索を示す概念図である。本発明に係る匿名P2P情報共有システムは、P2Pネットワークの各ノードが保持する発信情報を、匿名的に効率よく検索する機構である。ノード間の検索機能は、オニオンルーティング等の匿名機能を利用して行われる。
図4の例では、ノード100が情報を公開し、ノード200が公開された情報を検索するものとする。
情報の公開は、ノード100内の情報公開処理部110に対する情報公開者の指示に基づいて行われる。公開される情報は、ノード100内に格納される。また、ノード100からネットワークを介してオニオンリファレンス311,321,331が送信され、各ノード310,320,330で登録される。オニオンリファレンス311,321,331は、公開された情報の特徴を示す情報(メタデータ)である。オニオンリファレンス311,321,331には、公開された情報の作成日等の管理情報や、情報内のキーワードなどが含まれる。また、オニオンリファレンス311,321,331は、情報の公開元であるノード100までの通信ルートに関する情報を含んでいる。なお、オニオンリファレンス311,321,331に、公開する情報全体を含めることも可能である。
登録されたオニオンリファレンス311,321,331は検索の対象となる。さらに、登録されたオニオンリファレンス311,321,331は所定の条件を満たしたとき(たとえば、最後に利用されてからの経過時間が所定時間を超えたとき)に削除される。すなわち、オニオンリファレンス311,321,331は、ノード310,320,330にキャッシュされた情報である。
情報の検索は、ノード200内の情報検索処理部210に対する情報検索者の指示に基づいて行われる。ノード200に対して検索条件が入力されると、ノード200からネットワークを介して検索エージェント341,351,332が送信され、他のノード340,350,330に検索エージェント341,351,332が登録される。検索エージェント341,351,332は、指定された検索条件に基づいて、登録されたノード内のオニオンリファレンスを検索する機能である。なお、検索エージェント341,351,332は、情報の検索元であるノード200までの通信ルートに関する情報を含んでいる。
検索エージェント341,351,332は、登録時にノード340,350,330内のオニオンリファレンスを検索する。また、検索エージェント341,351,332は、後から登録されたオニオンリファレンスを検索する。検索条件に合致するオニオンリファレンスを検出した場合、検索エージェント341,351,332は、そのオニオンリファレンスの情報を、検索元のノード200に通知する。なお、登録された検索エージェント341,351,332は、所定の条件を満たしたとき(たとえば、最後に利用されてからの経過時間が所定時間を超えたとき)に削除される。すなわち、検索エージェント341,351,332は、ノード340,350,330にキャッシュされた情報である。
オニオンリファレンスと検索エージェントとは、ネットワーク上の何れかのノード上で同時にキャッシュされる。図4の例では、ノード330において、オニオンリファレンス331と検索エージェント332とがキャッシュされている。すると、検索エージェント332による検索処理によって、オニオンリファレンス331が対象となる。そのとき、検索エージェント332における検索条件にオニオンリファレンス331が合致すれば、オニオンリファレンス331が検出される(検索ヒットする)。
オニオンリファレンス331を検出した検索エージェント332は、オニオンリファレンス331とノード200からノード330までの通信ルートの情報とを、ノード200の情報検索処理部210に通知する。これにより、ノード200を利用する検索者は、ノード100において検索条件を満たす情報が公開されていることを知ることができる。
また、オニオンリファレンス331には、ノード330からノード100までの通信ルートの情報が含まれており、検索エージェント332からノード330からノード200までの通信ルートが通知されるため、ノード200は、ノード200からノード100までの通信ルートを知ることができる。
ところで、本発明の実施の形態では、検索エージェントによるオニオンリファレンスの検索を効率よく実行するために、ノード間の接続関係に対して、木構造上の親子関係を定義する。たとえば、P2Pネットワークに新たに参加するノードは、既にP2Pネットワークに参加している何れかのノードに対して接続要求を送信する。送信した接続要求が許可されることで、接続要求を出力したノードが新たにP2Pネットワーク上のノードとなる。そこで、本実施の形態では、接続要求を送信したノードを、子ノード、接続を許可したノードを親ノードとして定義する。
図5は、ネットワークの木構造を示す図である。図5に示すP2Pネットワークは、複数のノード21〜33で構成されている。通信可能なノード間は実線で結ばれている。また、木構造における親子関係がある場合、その親子関係がノード間を接続する実線の矢印で示されている。矢印は、親ノードから子ノードを指し示している。
図5の例では、ノード21が木構造上の最上位のノード(ルートノード)である。ルートノードは、たとえば、P2Pネットワークの運用を開始する際に、サービス提供を管理する機関によって設置される。P2Pネットワークに参加するノードは、ルートノードに対して直接接続するか、あるいはP2Pネットワークに既に参加しているノードに対して接続する必要がある。
ノード21には、ノード22,23が子ノードとして接続されている。ノード22には、ノード24,25が子ノードとして接続されている。ノード23には、ノード26,27が子ノードとして接続されている。ノード24には、ノード28が子ノードとして接続されている。ノード25には、ノード29が子ノードとして接続されている。ノード26には、ノード30が子ノードとして接続されている。ノード27には、ノード31が子ノードとして接続されている。ノード29には、ノード32が子ノードとして接続されている。ノード31には、ノード33が子ノードとして接続されている。
本実施の形態では、中央で木構造を管理するサーバを用意せず、ノード同士の情報交換により次のように自律的に木構造を構成する。
基本的には、新たにP2Pネットワークにノードが接続されるとき、接続要求を出力したノードが子ノード、接続要求を受け付けたノードが親ノードとして関係付けられる。
また、木構造を構成する際、基本構成はn分岐とする(nは自然数)。n分岐とは、1つのノードに隣接した接続されるノードの数がn個であることを意味する。構成遷移の途中など瞬間的にはn分岐にならない場合もあるがルーティングテーブル更新などで時間経過とともにn分岐で安定させることができる。n分岐で安定させる方法としては、なるべく兄弟となるノードの数を少なくすることと、木構造の階層を深くしないこととが考えられる。
すなわち、各ノードは、少なくとも、自分に隣接するノードとの間の親子関係を管理する。また、各ノードに対して、自分がどの階層にいるのか、子ノードはいくつかといった情報を持たせてルーティングテーブル交換時にその情報も共有する。各ノードが階層を管理することで、新たに接続してきた相手に対し、なるべく上位で子ノードの少ないノードへ接続しに行くように通知する。認識したノードの子ノードの数が制限値いっぱいの場合は、上位ノード、下位ノード両方の情報を通知する。その場合接続するノードはまず下位のノードへ接続を試みる。
さらに、階層に限界値を持たせてそれ以上下側に接続しない。限界値としては、たとえば初期値を6とし、そのノードの管理者が所定の範囲内で変更できるようにする。新たなノードを接続するとき、認識しているノード内に子ノードを持てるノードがない場合が考えられる。その場合、新たに木構造に参加するノードは、認識しているノードの上位ノードへ接続対象を換えながら接続を試みる。同様に最上位まで行った場合は、新たに木構造に参加するノードは、最上位のノードから下位のノードへ接続対象を換えながら接続を試みる。
子ノードを持っているノードがネットワーク上から消失した場合(たとえば、ノードの動作が停止した場合)、各子ノードは、消失したノードの親ノードへ接続を試みる。先に受け付けられたノードが、木構造における消失ノードの位置に配置される。遅れて受け付けられたノードは新規ノードの接続ロジックと同じ扱いになる。
なお、木構造は、以下のような処理を行うことで最適化される。
プライベートIPノードが木構造においてグローバルIPノードより上位にある場合は、プライベートIPノードを下位へ移動させる。さらに、プライベートIPノードもポーリング等によりサーバノードとして機能させる。
また、隣接ノード間の通信時間(セッション接続開始から終了まで)を測定し、速度が速く高性能なノードほど上位へ、速度が遅いノードほど下位へ移動させる。
このようにして、木構造を最適化できる。ノード間の関係が木構造で定義されると、オニオンリファレンスの伝送や検索エージェントの伝送を、木構造の上位のノードに向けて行うことができる。これにより、オニオンリファレンスの伝送や検索エージェントをブロードキャストで送信しなくても、確実にオニオンリファレンスと検索エージェントとを、何れかのノード上で合流させることができる。
しかも、本実施の形態では、公開元と検索元との匿名性を保つために、仮の公開元と仮の検索元とを設定することができる。公開元と仮の公開元との間のデータ通信は、オニオンルーティングによって匿名性が高められている。同様に、検索元と仮の検索元との間のデータ通信は、オニオンルーティングによって匿名性が高められている。
図6は、木構造を利用した情報検索の概念図である。図6の例には、複数のノード41〜63を含むP2Pネットワークが示されている。このP2Pネットワークには、ノード41をルートノードとする木構造が定義されている。ここで、ノード42が公開元であり、ノード51が検索元である。
ノード42は、公開する情報を送信する場合、まず、仮の公開元を選択する。P2Pネットワーク内の任意のノードを仮の公開元とすることができる。たとえば、ノード42は、ノード42自身が存在を認識している他のノードから、そのノードが認識しているノードの情報を取得する。そして、ノード42は、取得したノードの情報(たとえばノードIDやIPアドレス)から任意のノードを選択し、仮の公開元とする。この例では、ノード52を仮の公開元として選択したものとする。
次に、ノード42は仮の公開元までの匿名通信路を探索する。図6の例では、ノード56、ノード57、ノード58、ノード59、ノード52の順でパケットを受け渡すことができる。ノード42は、ルート探索の際に、各ノード52,56〜59の公開鍵を取得する。そして、ノード42は、検出したルートに沿って転送されるパケットを生成する。この際、各ノード52,56〜59の公開鍵を利用し、オニオンルーティングの技術を適用したパケットが生成される。生成されたパケットには、公開情報のオニオンリファレンスが含まれる。
ノード42は、生成したパケットを匿名通信路上で隣接するノード56に渡す。すると、そのパケットがオニオンルーティングによって転送され、仮の公開元として選択されたノード52に渡される。
オニオンルーティングでは、中継する各ノードがパケットのルート情報(オニオンルート)を自分自身の秘密鍵で復号することにより、次の転送先となるノードを知ることができる。この際、中継するノードにおいて知ることができるのは、パケットを転送してきた隣接ノードと、パケットを渡すべき隣接ノードだけである。すなわち、そのパケットの公開元のノードや宛先のノードについては、中継ノードでは知ることができない。これにより、パケットの送信元と宛先の匿名性が確保される。
また、中継する各ノードは、パケットの逆方向に転送する際の戻りルート情報を生成しながら、パケットを転送する。すなわち、各ノードは、自分の識別情報(IPアドレス等)を、パケット転送先の隣接ノードの公開鍵で暗号化して、転送するパケットに追加する。このように、各ノードが自分の識別情報を隣接ノードのみが復号可能な形式のデータでパケットに含めていくことで、戻りルート情報が構築される。戻りルート情報は、逆方向のパケット転送の際に、オニオンルートとして使用される。
宛先のノード52は、受け取ったパケットを、自分自身の秘密鍵で復号することにより、宛先が自分自身であることを知ることができるとともに、オニオンリファレンスを取得できる。ノード52は、自分宛のオニオンリファレンスを受け取ると、そのオニオンリファレンスをキャッシュする。その結果、ノード52にオニオンリファレンス71が保持される。このオニオンリファレンス71には、公開元のノード42までの戻りルート情報が含まれる。
さらにノード52は、戻りルート情報を含むオニオンリファレンスを、木構造における親に当たるノード46に渡す。ノード46は、受け取ったオニオンリファレンスをキャッシュする。その結果、ノード46にオニオンリファレンス72が保持される。
同様に、ノード46は、戻りルート情報を含むオニオンリファレンスを、親に当たるノード43に渡す。ノード43は、受け取ったオニオンリファレンスをキャッシュする。その結果、ノード43にオニオンリファレンス73が保持される。
同様に、ノード43は、戻りルート情報を含むオニオンリファレンスを、親に当たるノード41に渡す。ノード41は、受け取ったオニオンリファレンスをキャッシュする。その結果、ノード41にオニオンリファレンス74が保持される。
このようにして、仮の公開元であるノード52からルートのノード41までの経路上の各ノードに、オニオンリファレンスがキャッシュされる。
次に、情報検索手順を説明する。
ノード51は、情報を検索する場合、まず、仮の検索元を選択する。P2Pネットワーク内の任意のノードを仮の検索元とすることができる。たとえば、ノード51は、ノード51自身が存在を認識している他のノードから、他のノードが認識しているノードの情報を取得する。そして、ノード51は、取得したノードの情報(たとえばIPアドレス)から任意のノードを選択し、仮の検索元とする。この例では、ノード55を仮の検索元として選択したものとする。
次に、ノード51は仮の検索元までの匿名通信路を探索する。図6の例では、ノード60、ノード61、ノード62、ノード63、ノード55の順でパケットを受け渡すことができる。ノード51は、ルート探索の際に、各ノード55,60〜63の公開鍵を取得する。そして、ノード51は、検出したルートに沿って転送されるパケットを生成する。この際、ノード51は、各ノード55,60〜63の公開鍵を利用して、オニオンルーティングの技術を適用したパケットを生成する。生成したパケットには、検索エージェントが含まれる。
ノード51は、生成したパケットを隣接するノード60に渡す。すると、そのパケットがオニオンルーティングによって転送され、仮の検索元として選択されたノード55に渡される。オニオンルーティングの手法は、オニオンリファレンスを送信する場合と同様である。また、パケットが中継される際には、同じルートを逆方向に転送するための戻りルート情報が生成され、パケットに追加される。
宛先のノード55は、受け取ったパケットを、自分自身の秘密鍵で復号することにより、宛先が自分自身であることを知ることができるとともに、検索エージェントを取得できる。ノード55は、自分宛の検索エージェントを受け取ると、その検索エージェントをキャッシュする。その結果、ノード55に検索エージェント81が保持される。この検索エージェント81には、検索元のノード51までの戻りルート情報が含まれる。
さらにノード55は、戻りルート情報を含む検索エージェントを、木構造における親に当たるノード47に渡す。ノード47は、受け取った検索エージェントをキャッシュする。その結果、ノード47に検索エージェント82が保持される。
同様に、ノード47は、戻りルート情報を含む検索エージェントを、親に当たるノード43に渡す。ノード43は、受け取った検索エージェントをキャッシュする。その結果、ノード43に検索エージェント83が保持される。
同様に、ノード43は、戻りルート情報を含む検索エージェントを、親に当たるノード41に渡す。ノード41は、受け取った検索エージェントをキャッシュする。その結果、ノード41に検索エージェント84が保持される。
このようにして、仮の公開元であるノード52からルートのノード41までの経路上の各ノードに、検索エージェントがキャッシュされる。
各ノードにキャッシュされた検索エージェントは、対応するノード内にキャッシュされているオニオンリファレンスを検索対象として、検索処理を実行する。情報検索者がノード51に対して指示した検索条件に、ノード42で公開されている情報が合致している場合、ノード43の検索エージェント83がオニオンリファレンス73を検出する。
オニオンリファレンス73が検出されると、検索エージェント83に含まれる戻りルート情報を用いて、検索元のノード51に検索結果を転送するためのパケットが生成される。そのパケットには、オニオンリファレンス73の内容が含められる。生成されたパケットは、ノード63、ノード62、ノード61、ノード60、ノード51の順で転送される。その結果、ノード51においてオニオンリファレンスが取得できる。
オニオンリファレンスには、ノード42からノード52までの戻りルート情報が関連付けられており、この戻りルート情報も検索結果に含まれる。これにより、ノード51は、ノード42までの匿名通信路を取得することができ、匿名通信路を介してノード42で公開されている情報にアクセス可能となる。
このように、本実施の形態では全件検索を全P2Pマルチキャストメッセージ送信によらず効率よく行うために、P2Pネットワークのノード構成の部分構造として階層的な木構造を構築している。オニオンリファレンスは、最初にランダムに選択したノードから上位のノードへ向かって順次キャッシュされる。検索側も検索エージェントは、最初にランダムに選択したノードから上位のノードへ向かって順次キャッシュされる。キャッシュされた検索エージェントは、キャッシュされたノードの内のオニオンリファレンスの検索を行う。
オニオンリファレンスと検索エージェントとの双方が、木構造の上位へ順次転送されると共に、中継したノードでキャッシュされることで、オニオンリファレンスと検索エージェントとは、木構造内の何れかのノード上で出逢うことができる。すなわち、オニオンリファレンスや検索エージェントをブロードキャストで送信しなくても、ノード42で公開された情報をノード51から検出することができる。その結果、P2Pネットワーク上での効率の良い情報検索が可能となる。
しかも、仮の公開元と仮の検索元を設定するため、情報提供者や情報検索者の匿名性が守られる。すなわち、公開元のノード42と仮の公開元のノード52との間は、匿名通信が行われるため、中継する各ノード56〜59は公開元と仮の公開元とを知ることはできない。
さらに、公開元のノード42から仮の公開元のノード52への匿名通信を行う際に戻りオニオン情報を生成することで、検索ヒット後、検索元から公開元への匿名通信路を生成することができる。
なお、検索でヒットしたノードから上位側へは、ヒットした検索エージェントへの検索中止のメッセージを伝播させるなど、検索元のノードへの2重通知を防ぐことができる。また、検索でヒットしたノードは、発見したオニオンリファレンスを使用して公開元のノードから実体の情報を入手することもできる。そして、入手した公開情報の実体を、検索元のノードへのオニオンルート(オニオンルーティングにおける匿名通信路を示す)を使用して、検索元のノードへ送信してもよい。
次に、木構造の関係を利用した情報検索を実現するために各ノードが有すべき処理機能について具体的に説明する。
図7は、ノード内の処理機能を示すブロック図である。ノード100は、情報公開処理部110、情報検索処理部120、検索エンジン130、公開情報キャッシュ部140、仮公開元ノード選択部150、検索エージェントキャッシュ部160、仮検索元ノード選択部170、ルーティング部180、およびノード管理テーブル190を有している。
これらの要素のうち、情報公開処理部110、検索エンジン130、公開情報キャッシュ部140、および仮公開元ノード選択部150によって情報公開機能が構成される。また、情報検索処理部120、検索エンジン130、検索エージェントキャッシュ部160、および仮検索元ノード選択部170によって、情報検索機能が構成される。
情報公開処理部110は、情報公開者からの操作入力等に基づいて、情報公開処理を行う。具体的には、情報公開処理部110は、公開する情報を保持し、他のノードからの要求に応じてその情報を送信する。なお、公開する情報は、たとえば、HDD等に格納される。
さらに、情報公開処理部110は、仮公開元ノード選択部150に対して、仮公開元として動作するノードの選択処理を依頼する。また、情報公開処理部110は、情報公開の指示を受けたとき、公開情報キャッシュ部140に対して、オニオンリファレンスの送信を依頼する。
情報検索処理部120は、情報検索者からの操作入力等に基づいて、P2Pネットワークを介した情報検索を行う。具体的には、情報検索処理部120は、検索条件の入力を受け付ける。情報検索処理部120は、情報検索の実行指示を受けると、仮検索元ノード選択部170に対して、仮検索元として動作するノードの選択処理を依頼する。また、情報検索処理部120は、検索エージェントキャッシュ部160に対して、検索エージェントの送信処理を依頼する。
検索エンジン130は、オニオンリファレンスを検索対象として、検索エージェントに従った情報の検索を実行する。具体的には、検索エンジン130は、公開情報キャッシュ部140からオニオンリファレンスを受け取ると、そのオニオンリファレンスを記憶する(たとえば、RAM102やHDD103等の記憶装置に格納する)。また、検索エンジン130は、検索エージェントキャッシュ部160から検索エージェントを受け取ると、その検索エージェントを記憶する(たとえば、RAM102やHDD103等の記憶装置に格納する)。
そして、検索エンジン130は、記憶した検索エージェントを所定のタイミングで起動し、記憶しているオニオンリファレンスの検索を実行させる。具体的には、検索エンジン130は、新たに検索エージェントを記憶したときに、その検索エージェントを起動する。その際の検索対象は、既に記憶している全てのオニオンリファレンスである。
また、検索エンジン130は、新たなオニオンリファレンスを記憶したとき、そのとき既に記憶している全ての検索エージェントを起動する。その際の検索対象は、新たに記憶したオニオンリファレンスである。
検索エンジン130は、検索エージェントによる検索で検索条件に合致するオニオンリファレンスが検出された場合、検索元のノードに対して検索結果を通知する。検索結果には、オニオンリファレンスや、公開元のノードまでの匿名通信路の情報などが含まれる。
公開情報キャッシュ部140は、情報公開処理部110からオニオンリファレンスの送信依頼を受け取ると、公開する情報に関するメタデータ(作成日やキーワード等)を含むオニオンリファレンスを生成する。
また、公開情報キャッシュ部140は、仮公開元ノード選択部150から仮公開元ノードとして選択したノードのノードIDまたはIPアドレスを取得する。すると、公開情報キャッシュ部140は、ルーティング部180に対して、仮公開元ノードまでの匿名通信路の探索を依頼する。公開情報キャッシュ部140は、ルーティング部180から匿名通信路を受け取ると、仮公開元ノード宛に匿名通信路を介してオニオンリファレンスを送信する。
また、公開情報キャッシュ部140は、他のノードからオニオンリファレンスを受け取ると、そのオニオンリファレンスを検索エンジン130に渡し、キャッシュさせる。その後、公開情報キャッシュ部140は、受け取ったオニオンリファレンスを親ノードに対して送信する。キャッシュされたオニオンリファレンスは、以下の情報を有する。
・キャッシュされているノードから公開元ノードまでのオニオンルート
・複数のリファレンスが同一の実体を表すことを示すための一時識別子
・発信される情報、または、情報の内容を示すメタデータ。後者の場合、情報の実体は公開元のノードに置かれる。
オニオンリファレンスは、木構造における親ノードに順次転送されることで、P2Pネットワーク上の複数のノードにキャッシュされる。ここで、オニオンリファレンスのキャッシュには2種類の寿命が設定できるようにする。
・投稿者が最初に投稿した時間から設定時間を経過すると消滅する(いつか全部消える)。
・新しくキャッシュされた時間から設定時間を経過すると消滅する(検索対象は残る)。
公開情報キャッシュ部140は、寿命に達したオニオンリファレンスを、検索エンジン130内から削除する。
仮公開元ノード選択部150は、情報公開処理部110から仮公開元とするノードの選択要求を受け取ると、仮公開元とするノードの選択処理を行う。たとえば、仮公開元ノード選択部150は、ノード管理テーブル190を参照し、自分自身から7ホップ離れた位置にあるノードのIPアドレスを取得する。そして、仮公開元ノード選択部150は、取得したIPアドレスに基づき、7ホップ離れたノードに対し、そのノードからさらに7ホップ離れた位置にあるノードのIPアドレスのリスト(仮公開元ノード選択候補リスト)を要求する。仮公開元ノード選択候補リストが返されると、仮公開元ノード選択部150は、仮公開元ノード選択候補リストの中からIPアドレスを1つ選択する。選択したIPアドレスに対応するノードが仮公開元ノードとなる。仮公開元ノードを選択したら、仮公開元ノード選択部150は、仮公開元ノードのIPアドレスを公開情報キャッシュ部140に通知する。
また、仮公開元ノード選択部150は、他のノードから仮公開元ノード選択候補リストの取得要求を受け取ると、仮公開元ノード選択候補リストを生成して要求元に応答する。具体的には、仮公開元ノード選択部150は、仮公開元ノード選択候補リストの取得要求に応答してノード管理テーブル190を参照し、7ホップ離れたノードのIPアドレスを抽出する。そして、仮公開元ノード選択部150は、そのIPアドレスのリストを仮公開元選択候補リストとして、取得要求の送信元に対する応答として送信する。
検索エージェントキャッシュ部160は、情報公開処理部110から検索エージェントの送信依頼を受け取ると、指定された検索条件に該当するオニオンリファレンスの検索を行う検索エージェントを生成する。また、検索エージェントキャッシュ部160は、仮検索元ノード選択部170から仮検索元ノードとして選択したノードのIPアドレスを取得する。すると、検索エージェントキャッシュ部160は、ルーティング部180に対して、仮検索元ノードまでの匿名通信路の探索を依頼する。検索エージェントキャッシュ部160は、ルーティング部180から匿名通信路を受け取ると、仮検索元ノード宛に匿名通信路を介して検索エージェントを送信する。
また、検索エージェントキャッシュ部160は、他のノードから検索エージェントを受け取ると、その検索エージェントを検索エンジン130に渡し、キャッシュさせる。その後、検索エージェントキャッシュ部160は、受け取った検索エージェントを親ノードに対して送信する。
検索エージェントは、木構造の上位のノードに転送されながら、各ノードにキャッシュされる。検索エージェントキャッシュ部160は、検索エージェントをキャッシュしたとき、検索元ノードへの匿名通信路を示すオニオンルートも同時に格納する。キャッシュされた検索エージェントは、キャッシュ時に、検索エンジン130内のオニオンリファレンスを検索する。また、検索エージェントのキャッシュより後に、オニオンリファレンスが格納されたら、そのオニオンリファレンスが検索条件に合致するかどうかと判断する。検索条件にヒットしたら、検索エンジン130が、検索元ノードに検索結果を通知する。
なお、検索エージェントのキャッシュには寿命が設定できる。たとえば、検索者が最初に検索した時間から設定時間を経過すると消滅する(いつか全部消える)。具体的には、検索エージェントキャッシュ部160が、寿命に達した検索エージェントを検索エンジン130内から削除する。
仮検索元ノード選択部170は、情報公開処理部110から仮検索元とするノードの選択要求を受け取ると、仮検索元とするノードの選択処理を行う。具体的には、仮検索元ノード選択部170は、ノード管理テーブル190を参照し、自分自身から7ホップ離れた位置にあるノードのIPアドレスを取得する。そして、仮検索元ノード選択部170は、取得したIPアドレスに基づき、7ホップ離れたノードに対し、そのノードからさらに7ホップ離れた位置にあるノードのIPアドレスのリスト(仮検索元ノード選択候補リスト)を要求する。仮検索元ノード選択候補リストが返されると、仮検索元ノード選択部170は、仮検索元ノード選択候補リストの中からIPアドレスを1つ選択する。選択したIPアドレスに対応するノードが仮検索元ノードとなる。仮検索元ノードを選択したら、仮検索元ノード選択部170は、仮検索元ノードのIPアドレスを検索エージェントキャッシュ部160に通知する。
また、仮検索元ノード選択部170は、他のノードから仮検索元ノード選択候補リストの取得要求を受け取ると、仮検索元ノード選択候補リストを生成して要求元に応答する。具体的には、仮検索元ノード選択部170は、仮検索元ノード選択候補リストの取得要求に応答してノード管理テーブル190を参照し、7ホップ離れたノードのIPアドレスを抽出する。そして、仮検索元ノード選択部170は、そのIPアドレスのリストを仮検索元選択候補リストとして、取得要求の送信元に対する応答として送信する。
ルーティング部180は、パケットのルーティングを行う。たとえば、オニオンルーティングを技術により、発信者や宛先の匿名性を確保したルーティングを行うことができる。ルーティング部180は、接続された他のノードとの間でP2Pネットワーク上のノードの情報を交換し合っている。そして、ルーティング部180は、存在が確認されたノードの情報をノード管理テーブル190に登録する。
また、ルーティング部180は、指定されたノードまでの匿名通信路を探索することができる。たとえば、ルーティング部180は、仮公開元ノードまでの匿名通信路の探索要求を公開情報キャッシュ部140から受け取ると、匿名通信路の探索を行い、匿名通信路を示すオニオンルートを公開情報キャッシュ部140に渡す。同様に、ルーティング部180は、仮検索元ノードまでの匿名通信路の探索要求を検索エージェントキャッシュ部160から受け取ると、匿名通信路の探索を行い、匿名通信路を示すオニオンルートを検索エージェントキャッシュ部160に渡す。
ノード管理テーブル190は、P2Pネットワーク上で存在が確認されているノードに関する情報が登録された管理テーブルである。なお、本実施の形態におけるノード管理テーブル190は、パケットルーティングのためのルーティングテーブルを兼ねている。P2Pネットワークでは、IPアドレスは固定とならない場合が多いため、各ノードはノード管理テーブルの情報を互いに交換することで、各ノードの最新のIPアドレスを取得することができる。
図8は、ノード管理テーブルのデータ構造例を示す図である。ノード管理テーブル190には、ノードID、IPアドレス、ポート番号、ホップ数、テーブルをマージした隣接ノード、自ノードとの通信速度、ノードの設定速度あるいは固定サーバとの通信速度、データの暗号処理速度、単位時間あたりのメッセージ中継数、プライベートかグローバルか、自分との親子関係、階層レベル、及び子ノード数の情報が、存在が確認されたノード毎に登録されている。図8において横方向に並べられている情報同士が互いに関連付けられて、1つのノードのレコードを構成している。以下、各項目内の情報の説明において、その情報に対応するノードを、該当ノードと呼ぶこととする。また、ノード管理テーブル190が設けられているノード100を、自ノードと呼ぶこととする。
ノードIDは、P2Pネットワーク上で各ノードを一意に識別するための名称である。
IPアドレスは、各ノードのネットワーク上のアドレスである。
ポート番号は、該当するノードから通信が行われたときの、通信に使用されたアプリケーションを示す識別番号である。
ホップ数は、自ノードから該当するノードまでのホップ数(ホップカウント)である。ホップ数は、該当するノードにパケットが到達するまでにいくつのノードを経由するのかを示す数値である。自ノードのホップ数は0であり、隣接するノードのホップ数は1である。
テーブルをマージした隣接ノードとは、該当するノードと通信するためのパケットを渡すべき隣接ノードである。この項目には、該当する隣接ノードのノードIDが設定される。
自ノードとの通信速度は、該当するノードと自ノードとの間の通信速度である。
ノードの設定速度あるいは固定サーバとの通信速度の項目には、該当するノードにおいて通信速度が予め設定されている場合、その通信速度が登録される。たとえば、100Mbpsの速度で通信可能なネットワークであっても、あるノードと他のノードの間の通信に関して、最大で20Mbpsしか使用できないように制限されている場合がある。その場合、制限された通信速度が設定される。また、該当するノードに対して固定サーバを経由してアクセスする場合、その固定サーバとの間の通信速度が予め設定されている場合がある。その場合は、予め設定された固定サーバとの間の通信速度が、この項目に設定される。
データの暗号処理速度は、該当するノードにおいてデータの暗号処理が行われた場合に、どの程度の速度で暗号処理(データの暗号化や復号)が行われるかを示している。
単位時間あたりのメッセージ中継数は、単位時間あたりに何個のメッセージを中継できるのかを示している。
プライベートかグローバルかの項目には、該当するノードのIPアドレスがプライベートIPなのか、グローバルIPアドレスなのかが設定される。
自分との親子関係の項目には、自ノードから該当ノードに達するまでの木構造上での親子関係が設定される。親子関係は、自ノードの先祖であれば何代前の先祖であるのかが示され、自ノードの子孫であれば、何代後の子孫なのかが示される。
階層レベルには、該当ノードが、ルート(木構造の最上位)ノードから何代後のノードなのかが示される。
子ノード数には、該当ノードの子として接続されたノードの数が設定される。
なお、図7、図8には、ノード100の機能構成について説明したが、他のノードも同様の構成を有している。以下の説明では、ノード100以外の各ノードの構成要素は、図7内の同名の構成要素と同じ機能を有しているものとする。
このような機能を有するノードで木構造が構成されることにより、オニオンリファレンスと検索エージェントとによる情報検索が効率的に行われる。
次に、図7に示す各要素が情報公開および情報検索時にどのように動作するのかを具体的に説明する。まず、情報公開時に各ノードで行われる処理について説明する。
図9は、情報公開時の処理を示す図である。図9の例では、ノード100が公開情報の公開元ノードであり、ノード410が仮公開元ノードである。ノード100では、情報公開処理部110によって、仮公開元ノード選択要求と情報公開要求とが出される。仮公開元選択要求は、仮公開元ノード選択部150に渡される。仮公開元ノード選択部150は、P2Pネットワークから仮の公開元とするノードを選択する。この例では、ノード410が選択されたものとする。仮公開元ノード選択部150は、選択したノード410のIPアドレスを公開情報キャッシュ部140に渡す。
情報公開要求を受け取った公開情報キャッシュ部140は、仮公開元ノード選択部150から渡されたIPアドレスに該当するノード410までの匿名通信路を探索する。そして、公開情報キャッシュ部140は、匿名通信路に沿って、ノード410宛にオニオンリファレンスを送信する。
オニオンリファレンスがノード410に渡されると、ノード410内の公開情報キャッシュ部414がオニオンリファレンスを検索エンジン413に渡す。検索エンジン413は、受け取ったオニオンリファレンス413aを保持する。また、公開情報キャッシュ部414は、木構造における親ノードに対して、オニオンリファレンスを転送する。
図10は、情報検索時の処理を示す図である。図10の例では、ノード200が情報検索の検索元ノードであり、ノード420が仮検索元ノードである。ノード200では、情報検索処理部220によって、仮検索元ノード選択要求と情報検索要求とが出される。仮検索元選択要求は、仮検索元ノード選択部270に渡される。仮検索元ノード選択部270は、P2Pネットワークから仮の検索元とするノードを選択する。この例では、ノード420が選択されたものとする。仮検索元ノード選択部270は、選択したノード420のIPアドレスを検索エージェントキャッシュ部260に渡す。
情報検索要求を受け取った検索エージェントキャッシュ部260は、仮検索元ノード選択部270から渡されたIPアドレスに該当するノード420までの匿名通信路を探索する。そして、検索エージェントキャッシュ部260は、匿名通信路に沿って、ノード420宛に検索エージェントを送信する。
検索エージェントがノード420に渡されると、ノード420内の検索エージェントキャッシュ部426が検索エージェントを検索エンジン423に渡す。検索エンジン423は、受け取った検索エージェント423aを保持する。また、検索エージェントキャッシュ部426は、木構造における親ノードに対して、検索エージェントを転送する。
図11は、検索ヒット時の処理を示す図である。図11の例では、ノード430において、ノード200による検索に、ノード100が公開した情報がヒットした場合を示している。ノード430内の検索エンジン433では、検索エージェント433aで示される検索条件に合致するオニオンリファレンスの検索が行われる。この検索にオニオンリファレンス433bがヒットした場合、検索エンジン433は、検索元であるノード200に対して、オニオンリファレンス433bの内容を匿名通信路経由で送信する。そして、ノード200において、公開元ノードと検索元ノードとの間の匿名通信路が形成される。
図12は、匿名通信路形成過程の状態遷移を示す図である。図12の例では、ノード90をルートノードとした木構造が形成されている。
最初の状態(ST1)は、初期状態である。ここで、公開元をノード91、検索元をノード92とする。仮公開元はノード93であり、仮検索元はノード94である。
次の状態(ST2)は、情報公開要求に応じてオニオンリファレンスが配付された状況を示している。オニオンリファレンスは、仮公開元のノード93からルートのノード90までの経路上の各ノードにキャッシュされる。
次の状態(ST3)は、情報検索要求に応じて検索エージェントが配備された状況を示している。検索エージェントは、仮検索元のノード94からルートのノード90までの経路上の各ノードにキャッシュされる。
次の状態(ST4)は、形成された匿名通信路を示している。この例では、ノード95からルートのノード90までの経路上の各ノードで検索がヒットする。その場合、検索がヒットしたノードのうち木構造上で最も下位の要素となるノード95を経由した匿名通信路が形成される。
ところで、通信の匿名性は、公開元ノードと仮公開元ノードとの間でオニオンルーティングが行われること、および検索元ノードと仮検索元ノードとの間でオニオンルーティングが行われることによって強化される。ただし、P2Pネットワークは構成が動的に変わるため、任意のノード間の通信ルートを予めサーバ上で決めておくことは難しい。そこで、P2Pネットワークにおいてオニオンルーティングを行うには、宛先のノードまでのルート探索処理を行う必要がある。以下に、ルート探索処理を具体的に説明する。
図13は、ルート探索開始処理の手順を示すフローチャートである。ルート探索開始処理は、公開元ノードが仮公開元ノードまでの匿名通信路を探索する際に、公開元ノードのルーティング部において実行される。また、検索元ノードが仮検索元ノードまでの匿名通信路を探索する際にも、検索元ノードのルーティング部においてルート探索開始処理が実行される。以下、図7に示すノード100が公開元ノードであるものとして、図13に示す処理をステップ番号に沿って説明する。
[ステップS11]ルーティング部180は、ノード管理テーブル190に登録されているノードのうち、ホップ数が一番遠いノードの1つを、仮公開元ノードとして選択する。さらに、ルーティング部180は、仮公開元ノードまでの匿名通信路を探索するためのルート探索パケットを生成する。
[ステップS12]ルーティング部180は、自分の匿名IDを生成する。生成した匿名IDは、RAMやHDD等の記録媒体に記録しておく。以後、他のノードからパケットを受け取った際には、そのパケットの宛先の匿名IDと記録してある自分の匿名IDとを比較することで、そのパケットが自分宛か否かを判断可能となる。そして、ルーティング部180は、生成した匿名IDをパケットの転送履歴として設定する共に、その匿名IDをルート探索パケットの送信元とする。さらに、ルーティング部180は戻りオニオンを生成し、ルート探索パケット内に設定する。なお、匿名IDとは、一連の匿名通信毎に個別に設定する識別情報である。また、戻りオニオンとしては、たとえば、自分のノードIDを自分の公開鍵で暗号化し、さらに自分のノードIDを付加した情報を設定する。
[ステップS13]ルーティング部180は、プライベートIP以外の(グローバルアドレス)隣接ノード全てにルート探索パケットを送信する。
図14は、ルート探索パケットのデータ構造例を示す図である。ルート探索パケット510は、メッセージフラグ511、宛先(To)512、送信元(From)513、宛先オニオン514、戻りオニオン515、返信暗号化用一時鍵情報516および転送履歴517で構成される。
メッセージフラグ511は、パケットの種別を示している。ルート探索パケット510の場合には、ルート探索ブロードキャスト送信用のパケットであることを示す情報が設定される。
宛先512には、ルート探索パケット510の宛先が設定される。宛先は、仮公開元ノードの識別情報(公開ID)等で示される。
送信元513には、送信元ノードの匿名IDが設定される。
宛先オニオン514は、宛先までのルートを示す情報であるが、ルート探索パケット510では空欄となる。
戻りオニオン515には、ルート探索パケット510に対してルート通知パケットを返信する際の通信経路が、多重に暗号化されて設定される。
返信暗号化用一時鍵情報516は、ルート通知パケットを返信する際に使用される公開元ノードの一時公開鍵と暗号化された一時秘密鍵である。一時公開鍵と一時秘密鍵とは、ルート探索毎に生成される鍵である。
転送履歴517には、パケットの送信元のノードや、パケットを中継したノードで生成された匿名IDが設定される。パケットを受け取った各ノードは、転送履歴517内の匿名IDと自分が過去に生成した匿名IDとを比較し、一致する匿名IDがある場合、そのパケットを過去に転送したことがあることを認識できる。
ルート探索パケットを受信したノードは、ルート探索パケットの中継またはルート通知パケットの返信を行う。
図15は、ルート探索パケットの受信処理の手順を示すフローチャートである。以下、図7に示すノード100がルート探索パケットを受信した場合を想定して、図15に示す処理をステップ番号に沿って説明する。
[ステップS21]ルーティング部180は、ルート探索パケットを受信する。
[ステップS22]ルーティング部180は、自ノード宛のルート探索パケットかどうかを確認する。ルート探索パケットの宛先のフィールドを参照することで、自ノード宛か否かが判別できる。
[ステップS23]ルーティング部180は、自ノード宛であれば、処理をステップS24に進める。また、ルーティング部180は、自ノード宛でなければ、処理をステップS27に進める。
[ステップS24]ルーティング部180は、ルート探索パケットの戻りオニオンを宛先オニオンとして、ルート通知パケットを生成する。
[ステップS25]ルーティング部180は、ノード管理テーブル190内の自ノードのレコード情報を、探索者(公開元ノード)の暗号鍵で暗号化して、ルート通知パケットに設定する。
[ステップS26]ルーティング部180は、公開元ノードに対してルート通知パケットを返信する。その後、処理が終了する。
[ステップS27]ルーティング部180は、ルート探索パケットの転送履歴のフィールドに自ノードの匿名IDが登録されているかどうかを確認する。
[ステップS28]ルーティング部180は、自ノードを通過済のルート探索パケットか否かを判断する。すなわち、転送履歴のフィールドに自ノードの匿名IDが設定されていれば、自ノード通過済である。自ノード通過済であれば、処理がステップS29に進められる。自ノード通過済でなければ、処理がステップS30に進められる。
[ステップS29]ルーティング部180は、受信したルート探索パケットを破棄し、処理を終了する。
[ステップS30]ルーティング部180は、自分の匿名IDを転送履歴に設定する。さらに、ルーティング部180は、元の戻りオニオンを自ノードの秘密鍵で暗号化し、暗号化されたデータに自分のノードIDを加えた情報を新たな戻りオニオンとする。
[ステップS31]ルーティング部180は、ルート探索パケットを送信してきたノードとプライベートIPのノードを除く隣接ノード全てに、ルート探索パケットを送信する。その後、処理が終了する。
図16は、ルート通知パケットのデータ構造例を示す図である。ルート通知パケット520は、メッセージフラグ521、宛先(To)522、送信元(From)523、宛先オニオン524、戻りオニオン525、ルート情報526、および返信暗号化用一時鍵情報527で構成される。
メッセージフラグ521は、パケットの種別を示している。ルート通知パケット520の場合には、ルート探索返信用のパケットであることを示す情報が設定される。
宛先522には、ルート通知パケット520の宛先が設定される。宛先は、ルート探索パケット510の送信元513に設定されている送信元ノードの匿名IDである。
送信元523には、仮送信元ノードの公開されたID(公開ID)が設定される。
宛先オニオン524は、宛先までのルートを示す情報である。これは、受信Peerにおいてルート探索パケット510の戻りオニオン515を転記したものである。ただし、宛先オニオン524は、パケットが中継される毎に過去の伝送経路を示す情報が削除される。
戻りオニオン525は、ルート通知パケット520においては空欄となる。
ルート情報526は、匿名通信の伝送ルートを示す情報である。ルート情報には、伝送ルート上の各P2PオニオンノードのノードIDと固定公開鍵とが、送信元ノードの固定公開鍵で暗号化されて設定されている。また、ルート情報526には、ルート探索パケット510の返信暗号化用一時鍵情報516も含まれている。
返信暗号化用一時鍵情報527は、ルート探索パケット510の返信暗号化用一時鍵情報516の内容がそのまま設定される。
ルート通知パケットを受信したノードは、他のノード宛であればルート通知パケットの中継処理を行い、自分宛であれば最適ルートの生成処理を行う。
図17は、ルート通知パケット受信処理を示すフローチャートである。以下、図7に示すノード100がルート通知パケットを受信した場合を想定して、図17に示す処理をステップ番号に沿って説明する。
[ステップS41]ルーティング部180は、ルート通知パケットを受信する。
[ステップS42]ルーティング部180は、自ノード宛のルート通知パケットか否かを確認する。自ノード宛か否かは、宛先のフィールドに自分の匿名IDが設定されているか否かで判断できる。
[ステップS43]ルーティング部180は、自ノード宛のルート通知パケットであれば処理をステップS44に進める。また、ルーティング部180は、自ノード宛のルート通知パケットでなければ、処理をステップS45に進める。
[ステップS44]ルーティング部180は、ルート通知パケットのルート情報フィールド内の情報を復号し、最適ルートを生成する。すなわち、ルート情報には、自ノード(仮公開元ノードまでのルート探索を行った検索元ノード)の公開鍵で暗号化された状態で、匿名通信路上の各ノードのノードIDと公開鍵とが含まれている。また、ルート情報内での各ノードの情報の配列が、そのまま匿名通信路上のノードの配列になっている。そこで、復号して得られるノードIDの配列が最適ルートとなる。
[ステップS45]ルーティング部180は、宛先オニオンで示される次のノードをパケット送信先として決定する。
[ステップS46]ルーティング部180は、ノード管理テーブル190内の自ノードのレコード情報を探索者(公開元ノード)の暗号鍵で暗号化して、ルート通知パケットに設定する。
[ステップS47]ルーティング部180は、ルート通知パケットを宛先オニオンで示された次のノードに返信する。その後、処理が終了する。
以上のようにして、公開元ノードから仮公開元ノードまでの匿名通信路を探索することができる。送信元ノードは、この匿名通信路に沿って通信されるオニオンルーティングのパケット(データパケット)を生成し、その内容(ペイロード)として公開情報のオニオンリファレンスを設定する。データパケットを匿名通信路を介して仮公開元ノードに送ることで、送信元ノードの匿名性を保つことができる。
上記の例は、送信元ノードと仮送信元ノードとの間の匿名通信であるが、検索元ノードと仮検索元ノードとの間の匿名通信も同様の手順で行うことができる。仮送信元ノードから木構造上の上位のノードへオニオンリファレンスが転送され、仮想検索元ノードから上位のノードへ検索エージェントが転送されることで、木構造の何れかのノードにおいて、検索エージェントによる検索に、オニオンリファレンスがヒットする。その結果、送信元ノードと検索元ノードとの間の匿名通信路が生成される。
図18は、データパケットのデータ構造例を示す図である。データパケット530は、メッセージフラグ531、宛先(To)532、送信元(From)533、宛先オニオン534、戻り&バックトラックオニオン535、およびペイロード536で構成される。
メッセージフラグ531は、パケットの種別を示している。データパケット530の場合には、データ通信用のパケット(通常のパケット)であることを示す情報が設定される。
宛先532には、データパケット530の宛先が設定される。宛先は、通信相手のノードの公開IDである。
送信元533には、パケット送信元となるノードの匿名IDが設定される。この匿名IDは、匿名通信路探索時とは別のものが使用される。
宛先オニオン534は、宛先までのルートを示す情報である。これは、取得した匿名通信路情報に基づいて生成される。宛先オニオン534は、匿名通信路上の各ノードにおいて、次のノードのみが認識できるように各ノードの公開鍵でルート情報を暗号化したものである。
戻り&バックトラックオニオン535は、戻りルートおよびバックトラック処理を行うときのルートを示すルート情報である。バックトラック処理は、予定したルートでの通信ができなかった場合に、他のルート経由でパケットを伝送する処理である。
ペイロード536は、転送すべきメッセージを受信側のノードの公開鍵で暗号化したデータを含む実データである。たとえば、ペイロード536には、オニオンリファレンスや検索エージェントが含められる。
このようなデータパケットが、匿名通信路を介して、送信元ノードと検索元ノードとの間で送受信される。これにより、通信の匿名性が保たれる。
このような機能を利用すれば、匿名性の高い電子掲示板システムを提供することができる。
図19は、匿名性の高い電子掲示板の構成例を示す図である。この例では、掲示板への投稿者がノード601を使用し、掲示板の検索者がノード602を使用しているものとする。ノード611〜617によって木構造が構成されており、これらのノード611〜617によって、情報公開を行うための電子掲示板としての機能が提供される。また、ノード601は、ノード616を仮公開元ノードとして選択している。また、ノード602は、ノード617を仮検索元ノードとして選択している。
なお、ノード601のノードIDを「A」、ノード602のノードIDを「B」、ノード611のノードIDを「P」、ノード612のノードIDを「S」、ノード613のノードIDを「H」、ノード614のノードIDを「T」、ノード615のノードIDを「R」、ノード616のノードIDを「X」、ノード617のノードIDを「Y」、ノード621のノードIDを「K」、ノード622のノードIDを「L」、ノード623のノードIDを「G」、ノード624のノードIDを「E」、ノード625のノードIDを「W」、ノード626のノードIDを「V」とする。
掲示板への投稿者は、ノード601からノード616に対して、オニオンルーティングの技術を利用した匿名通信で、オニオンリファレンスを送信する。オニオンリファレンスは、ノード616から順次木構造上の親ノードに転送されていく。オニオンリファレンスを転送した各ノード616,614,613,612,611は、オニオンリファレンスをキャッシュする。
オニオンリファレンスには、投稿者が公開した情報のメタデータ(キーワードや作成日等)と共に、ノード601までの戻りルート情報が含まれている。このようにオニオンリファレンスが公開されたことによって、投稿者が投稿した情報が公開されたこととなる。
掲示板内の情報の検索者は、ノード602からノード617に対して、オニオンルーティングの技術を利用した匿名通信で、検索エージェントを送信する。検索エージェントは、ノード617から順次木構造上の親ノードに転送されていく。検索エージェントを転送した各ノード617,615,613,612,611は、検索エージェントをキャッシュする。
検索エージェントは、検索者が指定した検索キーワード等に基づいた検索条件を含んでいる。検索エージェントがキャッシュされたノードにおいて、検索エージェント内の検索条件に合致するオニオンリファレンスが検索される。その検索条件に、ノード601のユーザが投稿した情報が合致する場合、ノード613において検索がヒットする。このとき、ノード613にキャッシュされたオニオンリファレンスの戻りオニオンと、ノード613にキャッシュされた検索エージェントの戻りオニオンとを繋げることで、ノード601とノード602との間の匿名通信路が生成できる。
図20は、各ノードがキャッシュする情報を示す図である。なお、以下の説明において、戻りオニオンのルートを、戻りルート上の各ノードのノードIDの配列で示している。
ノード611がキャッシュする情報の1つは、ノード自身の匿名ID、ノードID「A」が投稿した公開情報(オニオンリファレンス)、P−S−H−T−X−A間の戻りオニオンである。また、ノード611は、ノード自身の匿名ID、ノードID「B」の検索エージェント、P−S−H−R−Y−B間の戻りオニオンもキャッシュしている。
ノード612がキャッシュする情報の1つは、ノード自身の匿名ID、ノードID「A」が投稿した公開情報(オニオンリファレンス)、S−H−T−X−A間の戻りオニオンである。また、ノード612は、ノード自身の匿名ID、ノードID「B」の検索エージェント、S−H−R−Y−B間の戻りオニオンもキャッシュしている。
ノード613がキャッシュする情報の1つは、ノード自身の匿名ID、ノードID「A」が投稿した公開情報(オニオンリファレンス)、H−T−X−A間の戻りオニオンである。また、ノード613は、ノード自身の匿名ID、ノードID「B」の検索エージェント、H−R−Y−B間の戻りオニオンもキャッシュしている。
ノード614がキャッシュする情報は、ノード自身の匿名ID、ノードID「A」が投稿した公開情報(オニオンリファレンス)、T−X−A間の戻りオニオンである。ノード615がキャッシュする情報は、ノード自身の匿名ID、ノードID「B」の検索エージェント、R−Y−B間の戻りオニオンである。
ノード616がキャッシュする情報は、ノード自身の匿名ID、ノードID「A」が投稿した公開情報(オニオンリファレンス)、X−A間の戻りオニオンである。ノード617がキャッシュする情報は、ノード自身の匿名ID、ノードID「B」の検索エージェント、Y−B間の戻りオニオンである。
図21は、生成された匿名通信路を示す図である。匿名通信路は、ノード613において、オニオンリファレンス側の戻りオニオンと、検索エージェント側の戻りオニオンとを繋げることで作成される。
ここで、ノード601とノード616との間は、ノード622を経由するルートとなっている。これは、オニオンリファレンスをノード616に送信した際に実際に通ったルートである。すなわち、戻りオニオンは、パケットを伝送しながら、その伝送を行ったノードの情報を付加していくことで作成されるため、送信時に実際に通ったルートが戻りルートとなる。
同様に、ノード602とノード617との間は、ノード626を経由するルートとなっている。これは、検索エージェントをノード617に送信した際に実際に通ったルートである。
このような匿名通信路を経由して、ノード601とノード602との間で通信を行うことができる。すなわち、ノード601が公開した情報の内容(ノード601内に保存されている)を、ノード602から参照することができる。
ところで、ノード622とノード626とを直接結ぶような匿名通信路を生成することもできる。
図22は、経路長を短縮させた匿名通信路生成例を示す図である。この例では、オニオンリファレンスを仮送信元ノードから親ノードへ転送する際に、オニオンリファレンスを送ってきた隣接ノードのノードID、IPアドレス、ポート番号等を含む中継ノード情報を同時に送信する。オニオンリファレンスを受け取った各ノードは、オニオンリファレンスと共に、中継ノード情報もキャッシュする。
状態ST11に示す例では、オニオンリファレンスがノードID「L」のノード622を介して送信されている。そこで、ノード622のノードID「L」やIPアドレス等の中継ノード情報をキャッシュの対象とする。そして、検索ヒットした場合には、検索エージェントは、オニオンリファレンスや各種戻りオニオンと共に、中継ノード情報を検索元ノードに送信する。
検索元のノード602は、ノード622の情報を取得したことで、ノード601との間の匿名通信を行う際に、ノード624〜626の何れかから、ノード622にパケットを転送するような匿名通信路を生成することができる。すなわち、検索エージェントを送信したときに中継したノードは、ノード626であっても、ノード624またはノード625を経由した匿名通信路を生成することが可能となる。
このとき、ノード624〜625に対して、ノード622のノードID、IPアドレス、ポート番号を通知する必要がある。
状態ST12に示すように、ノード625を経由した匿名通信路を生成して、その匿名通信路を介してノード601に対してパケットを送信すれば、実際にそのパケットが通った1本の通信路がノード601とノード602との間の匿名通信路として確定する。この例ではノード625とノード622とが直接パケットを受け渡すような匿名通信路が生成されている。
このようにして、仮送信元ノードと仮検索元ノードとの間を抜かした匿名通信路を生成することができる。これにより、匿名通信が木構造の上位のノードを経由せずに済み、上位のノードに係る負荷を軽減することができる。
なお、匿名通信を行う技術として、匿名ルート上の各ノードに通知するルート情報(ノード別ルート情報)を、該当ノードの公開鍵で暗号化してパケットに含める技術がある。ノード別ルート情報は、各ノードに対応するブロックに格納される。ノード別ルート情報には、対応するノードに隣接するノード(送信方向に隣接するノードと返信方向に隣接するノード)の識別情報と、隣接ノードが復号すべきブロックの位置とが含まれる。
さらに、送信元がパケットを送信する場合、隣接するノードが復号すべきブロックの位置を指定する情報(ブロック指定)パケットに含める。このパケットを受け取った中継ノードは、ブロック指定で示されるブロックを復号することで、隣接ノードと、その隣接ノードが復号すべきブロックの位置を認識する。そこで、中継ノードは、ブロック指定の内容を隣接ノードに対応するブロックの位置に変更し、その後、パケットを隣接ノードに転送する。その後、同様にパケットが中継される。
このようなパケット転送を行えば、各中継ノードでは、匿名ルートのうち、自分に隣接するノードしか認識できない。したがって、送信元や宛先を隠した状態でのパケット転送が可能となる。以下、このような匿名通信方法を、グレープルーティングと呼ぶこととする。
このようなグレープルーティングの技術を利用すれば、仮送信元ノードと仮検索元ノードとの間を抜かした匿名通信路を生成することができる。
図23は、グレープルーティングを行う際のデータパケットの構造例を示す図である。グレープルーティング用のデータパケット540は、メッセージフラグ541、宛先(To)542、送信元(From)543、ブロック指定544、グレープルート545、およびペイロード546で構成される。
メッセージフラグ541は、パケットの種別を示している。データパケット540の場合には、グレープルーティング用のデータパケットであることを示す情報が設定される。
宛先542には、データパケット540の宛先が設定される。宛先は、ルート探索パケット510の送信元513に設定されている送信元ノードの匿名IDである。
送信元543には、仮送信元ノードの公開されたID(公開ID)が設定される。
ブロック指定544には、そのパケットを受け取ったノードが復号すべきグレープルート内のブロックの位置が設定される。
グレープルート545は、匿名通信路上の各ノードに通知すべき情報が、ブロックに分けて格納されている。たとえば、各ブロックは、対応するノードの公開鍵で暗号化されている。データパケット540を受け取ったノードは、ブロック指定544によって、自分が復号すべきブロックを認識できる。
復号したブロックには、たとえば、匿名通信路上の次の隣接ノードのノードIDや、次の隣接ノードが復号するブロック位置等が含まれている。したがって、データパケット540を受け取ったノードは、復号したブロックに含まれるノードIDに対応する隣接ノードに対して、データパケット540を転送する。この際、ブロック指定544の内容を、次の隣接ノードが復号するブロック位置に置き換える。
ペイロード546は、転送すべきメッセージを受信のノードの公開鍵で暗号化したデータを含む実データである。
図24は、グレープルーティングを行うときのキャッシュ内容を示す図である。グレープルーティングを行う場合、オニオンリファレンスや検索エージェントをキャッシュする各ノードは、グレープルートや隣接ノードに関する情報も同時にキャッシュする。
図24の例では、仮送信元であるノード616から上位の各ノードは、ノード自身の一時識別子、ノードID「A」のノード601が投稿したオニオンリファレンス、ノードID「X」のノード616とノードID「A」のノード601との間の匿名グレープルート、ノード616,621〜623のノードIDやIPアドレスなどテーブル情報をキャッシュする。なお、キャッシュする匿名グレープルートには、グレープルート内のノード616,621〜623が復号すべきブロックの位置を示す情報も含まれている。
また、仮検索元であるノード617から上位の各ノードは、ノード自身の一時識別子、ノードID「B」の検索エージェント、ノードID「Y」のノード617とノードID「B」のノード602との間の匿名グレープルート、ノード617,624〜626のノードIDやIPアドレスなどテーブル情報をキャッシュする。なお、キャッシュする匿名グレープルートには、グレープルート内のノード617,624〜626が復号すべきブロックの位置を示す情報も含まれている。
ここでノードID「H」のノード613で検索がヒットすれば、ノード613は、仮検索元ノード617に対して検索結果を送信する。この際、ノード615を経由せずに直接送信することができる。
図25は、検索結果通知の様子を示す図である。ノード613は、ノード602とノード617との間のグレープルートに基づいて、ノード613からノード602にグレープルーティングで検索結果を送信するためのデータパケットを生成する。生成したデータパケットは、ノード617に対して送信される。そして、データパケットは、ノード617からノード602への匿名通信路を介し、グレープルーティングによって転送される。
検索結果には、オニオンリファレンスに加え、そのオニオンリファレンスや検索エージェントと共にキャッシュされていた情報も含まれる。すなわち、ノード601とノード616との間のグレープルート、ノード602とノード617との間のグレープルートや、ノード616,617,621〜626のノードIDやIPアドレスなどテーブル情報が検索結果に含まれる。
なお、ノード613は、ノード624〜ノード626のノードID、IPアドレス、およびグレープルート中の復号すべきブロックの位置を認識しているため、ノード624〜ノード626の何れかに対して、検索結果を示すデータパケットを送信することもできる。すなわち、ノード617を経由しないルート(図中、破線の矢印で示す)で検索結果を送信することができる。
なお、ノード602は、検索結果を受け取ったとき、検索結果を受け取ったことを示す応答を返す。このときは、常にノード617を経由する匿名通信路でグレープルーティングが行われる。すなわち、ノード624〜626では、グレープルーティングにおける隣接ノードであるノード617の情報しか認識できない。そのため、ノード602からノード613宛のパケットは、ノード624〜626の何れかを経由してノード617に渡される。そして、ノード617を介して、そのパケットがノード613に渡される。
なお、ノード602とノード617との間は、グレープルーティングであるため、複数のルートが存在する。同様に、ノード601とノード616との間も、グレープルーティングであるため、複数のルートが存在する。
検索結果を受け取ったノード602は、検索結果に含まれる情報に基づいて、ノード601までのグレープルートを生成する。なお、ノード602は、検索結果としてノード616からノード601にパケットを送信するためのグレープルートを受け取っているとともに、ルート616のIPアドレスやノードID等を受け取っている。したがって、ノード602からノード601宛にパケットを送信する場合、ノード616を経由した匿名通信路で送信される。
図26は、検索元ノードと公開元ノードとの間の匿名通信路を示す図である。検索元のノード602は、ノード616,621〜623のノードIDやIPアドレスなどのテーブル情報に基づいて、匿名グレープルートを作成する。たとえば、ノード602は、ノード616とノード601との間の匿名グレープルートに、ノード616からノード624〜626へのルート(図中、一点鎖線で示す)と、ノード621〜623へ戻る方向でのノード624〜626のルート(図中、破線で示す)などを作成する。作成したルートに、ノード624〜626とノード602との間の匿名グレープルートを追加すれば、ノード601からノード602向きの匿名グレープルートが作成される。
ノード602によるノード624〜626からノード602向きの匿名グレープルート作成は、検索結果受信時に行うことができる。また、ノード624〜626からノード602向きの匿名グレープルートを検索エージェントに予め持たせて送信して、検索結果と共に受け取ることもできる。
このとき、ノード624〜626に対して、ノード621〜623のノードIDやIPアドレスなどのテーブル情報を通知することで、ノード624〜626からノード621〜623へのパケット転送が可能となる。
結果的に、ノード624〜626とノード616との間は双方向の通信が可能となる。ノード624〜626からノード621〜623へはパケットの転送が可能であるが、逆方向のパケット転送はできない。これは、ノード601とノード621との間の匿名グレープルートでは、ノード624〜626に対して隣接ノード616に対して送信することしか示されていないためである。そのため、ノード601からノード602へ匿名通信を行う際には、ノード616を経由する必要が生じる。
ところで、グレープルーティングでは、ノードの結託による不正への対応策として、「データを受け取るべきノードの集合以外からのものは破棄する」という処理を行わせることができる。たとえば、ノード621〜623は、ノード601からの通信路上の隣接ノードおよびノード616以外のノードからのパケットを破棄する。同様に、ノード624〜626は、ノード602からの通信路上の隣接ノードおよびノード616以外のノードからのパケットを破棄する。
図27は、ノードの結託を防止した場合の匿名通信路の例を示す図である。図27に示すように、ノード601とノード602との間の通信路は、常にノード616を経由して行われる。これにより、ノード621〜623の管理者とノード624〜626の管理者とが結託して、ノード601とノード602との間の匿名通信路を解析する行為を防止できる。
また、グレープルーティングの匿名性や安全性のレベルを落とし、可用性(availability)を優先することができる。その場合、キャッシュ開始ノード(仮公開元ノードや仮検索元ノード)の直前のグレープ(直前のノード宛のルーティングに関する情報が登録されたブロック)は暗号化しないで書き換えが可能なようにする。なお、可用性とは、通信をダウンさせることなく継続稼働させる能力である。
図28は、可用性を重視したときの匿名通信路の例を示す図である。このように、グレープルート中のノード621〜626に対応するブロックを平文にしておくことで、その内容を適宜書き換えることができる。その結果、ノード621〜623とノード624〜626との間の相互の直接のパケットの受け渡しが可能となる。すなわち、ノード601とノード602との間のルートに多様性を持たせることができる。ルートに可用性があれば、通信路上の1つのノードが停止したとしても、別ルートを経由して通信が可能となる。
以上説明したような実施の形態により、以下のような効果が得られる。
P2Pネットワークの全体あるいは部分的なノード間の関係を木構造で定義したことにより、P2Pネットワーク上の情報の全件検索を効率よく行うことが可能となる。このとき、発信された情報(オニオンリファレンスや検索エージェント)はP2Pネットワーク上にキャッシュされている。しかも、オニオンリファレンスや検索エージェントは、匿名通信路を介して送信元と関連付けられている。そのため、木構造にしたことで匿名性が損なわれることはない。
また、仮公開元ノードや仮検索元ノードを設定し、公開元ノードと仮公開元ノードとの間で匿名通信を行い、検索元ノードと仮検索元ノードとの間で匿名通信を行っている。これにより、仮公開元ノードと仮検索元ノードとの上記の木構造で匿名性が十分でなくても、公開元ノードと検索元ノードとの匿名性を保つことができる。
また、匿名通信にオニオンルーティングを利用しているため、暗号化されたルート情報を復号するための鍵が不特定多数に分散する。そのため、鍵の一極集中による匿名化の脆弱性を無くすることができる。
また、検索にヒットしたとき、公開情報の送信元のノードまでの匿名通信路に関する情報を検索元のノードに送信するようにしたため、検索後に情報発信者と情報検索者とが匿名的に双方向のコミュニケーションを行うことが可能となる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、各ノードが有すべき機能の処理内容を記述した情報検索プログラムが提供される。その情報検索プログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述した情報検索プログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
情報検索プログラムを流通させる場合には、たとえば、その情報検索プログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、情報検索プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにその情報検索プログラムを転送することもできる。
情報検索プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録された情報検索プログラムもしくはサーバコンピュータから転送された情報検索プログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置から情報検索プログラムを読み取り、情報検索プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接情報検索プログラムを読み取り、その情報検索プログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータから情報検索プログラムが転送される毎に、逐次、受け取った情報検索プログラムに従った処理を実行することもできる。
(付記1) ピアツーピア方式のネットワーク上で公開されている情報を検索する情報検索方法において、
前記ネットワークに接続された情報検索装置の公開情報格納手段が、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納し、
前記ネットワーク内の装置間の関係が木構造で定義されており、前記情報検索装置の情報公開要求転送手段が、前記情報公開要求を前記木構造における親装置に対して転送し、
前記情報検索装置の検索条件格納手段が、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納し、
前記情報検索装置の情報検索要求転送手段が、前記情報検索要求を前記木構造における前記親装置に対して転送し、
前記情報検索装置の検索手段が、前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索し、
前記情報検索装置の検索結果通知手段が、前記検索条件に前記公開情報が合致した場合、前記情報検索要求の送信元である検索元装置に対して検索結果を送信する、
ことを特徴とする情報検索方法。
(付記2) 前記情報公開要求には情報公開要求の送信元である公開元装置までの通信路情報が含まれており、前記公開情報格納手段は、前記情報公開要求を受け取った際には、前記通信路情報を前記公開情報記憶手段に格納し、
前記検索結果通知手段は、前記検索条件に前記公開情報が合致した場合、前記検索元装置に対して、前記公開情報と前記公開元装置までの前記通信路情報とを送信する、
ことを特徴とする付記1記載の情報検索方法。
(付記3) 前記情報公開要求の送信元である公開元装置が、情報の公開指示に応じて、前記木構造を構成する複数の前記情報検索装置の中から少なくとも1つの前記情報検索装置を選択し、選択した前記情報検索装置に対して前記情報公開要求を匿名通信によって送信する、
ことを特徴とする付記1記載の情報検索方法。
(付記4) 前記情報検索要求の送信元である検索元装置が、情報の検索指示に応じて、前記木構造を構成する複数の前記情報検索装置の中から少なくとも1つの前記情報検索装置を選択し、選択した前記情報検索装置に対して、検索条件を含む前記情報検索要求を匿名通信によって送信する、
ことを特徴とする付記1記載の情報検索方法。
(付記5) 前記検索手段は、新たな前記検索条件が前記検索条件記憶手段に記憶されたとき、新たに記憶された前記検索条件に合致する前記公開情報を、前記公開情報記憶手段から検索することを特徴とする付記1記載の情報検索方法。
(付記6) 前記検索手段による検索は、新たな前記公開情報が前記公開情報記憶手段に記憶されたとき、新たに記憶された前記公開情報が、既に前記検索条件記憶手段に記憶されている前記検索条件に合致するか否かを判断することを特徴とする付記1記載の情報検索方法。
(付記7) 前記公開情報格納手段は、前記公開情報記憶手段に記憶された前記公開情報が所定の条件を満たしたとき、前記公開情報を削除することを特徴とする付記1記載の情報検索方法。
(付記8) 前記検索条件格納手段は、前記検索条件記憶手段に記憶された前記検索条件が所定の条件を満たしたとき、前記検索条件を削除することを特徴とする付記1記載の情報検索方法。
(付記9) ピアツーピア方式のネットワーク上で公開されている情報を検索する情報検索方法において、
前記情報公開要求の送信元である公開元装置が、情報の公開指示に応じて、前記ネットワーク内の複数の情報検索装置の中から少なくとも1つの前記情報検索装置を選択し、選択した前記情報検索装置に対して前記情報公開要求を匿名通信によって送信し、
前記情報検索要求の送信元である検索元装置が、情報の検索指示に応じて、前記ネットワーク内の複数の前記情報検索装置の中から少なくとも1つの前記情報検索装置を選択し、選択した前記情報検索装置に対して、検索条件を含む前記情報検索要求を匿名通信によって送信し、
前記ネットワークを構成する前記情報検索装置それぞれにおいて、
公開情報格納手段が、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納し、
情報公開要求転送手段が、前記情報公開要求を隣接する他の情報検索装置に対して転送し、
検索条件格納手段が、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納し、
情報検索要求転送手段が、前記情報検索要求を隣接する他の情報検索装置に対して転送し、
検索手段が、前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索し、
検索結果通知手段が、前記検索条件に前記公開情報が合致した場合、前記検索元装置に対して前記公開情報を匿名通信によって送信する、
ことを特徴とする情報検索方法。
(付記10) ピアツーピア方式のネットワーク上で公開されている情報を検索する情報検索装置において、
他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納する公開情報格納手段と、
前記ネットワーク内の装置間の関係が木構造で定義されており、前記情報公開要求を前記木構造における親装置に対して転送する情報公開要求転送手段と、
他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納する検索条件格納手段と、
前記情報検索要求を前記木構造における前記親装置に対して転送する情報検索要求転送手段と、
前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索する検索手段と、
前記検索条件に前記公開情報が合致した場合、前記情報検索要求の送信元である検索元装置に対して検索結果を送信する検索結果通知手段と、
を有することを特徴とする情報検索装置。
(付記11) ピアツーピア方式のネットワーク上で公開されている情報を検索するための情報検索プログラムにおいて、
コンピュータに、
公開情報格納手段が、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納し、
前記ネットワーク内の装置間の関係が木構造で定義されており、情報公開要求転送手段が、前記情報公開要求を前記木構造における親装置に対して転送し、
検索条件格納手段が、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納し、
情報検索要求転送手段が、前記情報検索要求を前記木構造における前記親装置に対して転送し、
検索手段が、前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索し、
検索結果通知手段が、前記検索条件に前記公開情報が合致した場合、前記情報検索要求の送信元である検索元装置に対して検索結果を送信する、
処理を実行させることを特徴とする情報検索プログラム。
(付記12) ピアツーピア方式のネットワーク上で公開されている情報を検索するための情報検索プログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータに、
公開情報格納手段が、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納し、
前記ネットワーク内の装置間の関係が木構造で定義されており、情報公開要求転送手段が、前記情報公開要求を前記木構造における親装置に対して転送し、
検索条件格納手段が、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納し、
情報検索要求転送手段が、前記情報検索要求を前記木構造における前記親装置に対して転送し、
検索手段が、前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索し、
検索結果通知手段が、前記検索条件に前記公開情報が合致した場合、前記情報検索要求の送信元である検索元装置に対して検索結果を送信する、
処理を実行させることを特徴とする情報検索プログラムを記録したコンピュータ読み取り可能な記録媒体。
実施の形態に適用される発明の概念図である。 本実施の形態のネットワーク構成例を示す図である。 本発明の実施の形態に用いるノードのハードウェア構成例を示す図である。 本発明の実施の形態における情報検索を示す概念図である。 ネットワークの木構造を示す図である。 木構造を利用した情報検索の概念図である。 ノード内の処理機能を示すブロック図である。 ノード管理テーブルのデータ構造例を示す図である。 情報公開時の処理を示す図である。 情報検索時の処理を示す図である。 検索ヒット時の処理を示す図である。 匿名通信路形成過程の状態遷移を示す図である。 ルート探索開始処理の手順を示すフローチャートである。 ルート探索パケットのデータ構造例を示す図である。 ルート探索パケットの受信処理の手順を示すフローチャートである。 ルート通知パケットのデータ構造例を示す図である。 ルート通知パケット受信処理を示すフローチャートである。 データパケットのデータ構造例を示す図である。 匿名性の高い電子掲示板の構成例を示す図である。 各ノードがキャッシュする情報を示す図である。 生成された匿名通信路を示す図である。 経路長を短縮させた匿名通信路生成例を示す図である。 グレープルーティングを行う際のデータパケットの構造例を示す図である。 グレープルーティングを行うときのキャッシュ内容を示す図である。 検索結果通知の様子を示す図である。 検索元ノードと送信元ノードとの間の匿名通信路を示す図である。 ノードの結託を防止した場合の匿名通信路の例を示す図である。 可用性を重視したときの匿名通信路の例を示す図である。
符号の説明
1 情報検索装置
1a 公開情報格納手段
1b 公開情報記憶手段
1c 情報公開要求転送手段
1d 検索条件格納手段
1e 検索条件記憶手段
1f 情報検索要求転送手段
1g 検索手段
1h 検索結果通知手段
2 公開元装置
3 検索元装置
4,5 子装置
6 親装置
7 情報公開要求
8 情報検索要求

Claims (10)

  1. ピアツーピア方式のネットワーク上で公開されている情報を検索する情報検索方法において、
    前記ネットワークに接続された情報検索装置の公開情報格納手段が、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納し、
    前記ネットワーク内の装置間の関係が木構造で定義されており、前記情報検索装置の情報公開要求転送手段が、前記情報公開要求を前記木構造における親装置に対して転送し、
    前記情報検索装置の検索条件格納手段が、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納し、
    前記情報検索装置の情報検索要求転送手段が、前記情報検索要求を前記木構造における前記親装置に対して転送し、
    前記情報検索装置の検索手段が、前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索し、
    前記情報検索装置の検索結果通知手段が、前記検索条件に前記公開情報が合致した場合、前記情報検索要求の送信元である検索元装置に対して検索結果を送信する、
    ことを特徴とする情報検索方法。
  2. 前記情報公開要求には情報公開要求の送信元である公開元装置までの通信路情報が含まれており、前記公開情報格納手段は、前記情報公開要求を受け取った際には、前記通信路情報を前記公開情報記憶手段に格納し、
    前記検索結果通知手段は、前記検索条件に前記公開情報が合致した場合、前記検索元装置に対して、前記公開情報と前記公開元装置までの前記通信路情報とを送信する、
    ことを特徴とする請求項1記載の情報検索方法。
  3. 前記情報公開要求の送信元である公開元装置が、情報の公開指示に応じて、前記木構造を構成する複数の前記情報検索装置の中から少なくとも1つの前記情報検索装置を選択し、選択した前記情報検索装置に対して前記情報公開要求を匿名通信によって送信する、
    ことを特徴とする請求項1記載の情報検索方法。
  4. 前記情報検索要求の送信元である検索元装置が、情報の検索指示に応じて、前記木構造を構成する複数の前記情報検索装置の中から少なくとも1つの前記情報検索装置を選択し、選択した前記情報検索装置に対して、検索条件を含む前記情報検索要求を匿名通信によって送信する、
    ことを特徴とする請求項1記載の情報検索方法。
  5. 前記検索手段は、新たな前記検索条件が前記検索条件記憶手段に記憶されたとき、新たに記憶された前記検索条件に合致する前記公開情報を、前記公開情報記憶手段から検索することを特徴とする請求項1記載の情報検索方法。
  6. 前記検索手段による検索は、新たな前記公開情報が前記公開情報記憶手段に記憶されたとき、新たに記憶された前記公開情報が、既に前記検索条件記憶手段に記憶されている前記検索条件に合致するか否かを判断することを特徴とする請求項1記載の情報検索方法。
  7. 前記公開情報格納手段は、前記公開情報記憶手段に記憶された前記公開情報が所定の条件を満たしたとき、前記公開情報を削除することを特徴とする請求項1記載の情報検索方法。
  8. ピアツーピア方式のネットワーク上で公開されている情報を検索する情報検索方法において、
    前記情報公開要求の送信元である公開元装置が、情報の公開指示に応じて、前記ネットワーク内の複数の情報検索装置の中から少なくとも1つの前記情報検索装置を選択し、選択した前記情報検索装置に対して前記情報公開要求を匿名通信によって送信し、
    前記情報検索要求の送信元である検索元装置が、情報の検索指示に応じて、前記ネットワーク内の複数の前記情報検索装置の中から少なくとも1つの前記情報検索装置を選択し、選択した前記情報検索装置に対して、検索条件を含む前記情報検索要求を匿名通信によって送信し、
    前記ネットワークを構成する前記情報検索装置それぞれにおいて、
    公開情報格納手段が、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納し、
    情報公開要求転送手段が、前記情報公開要求を隣接する他の情報検索装置に対して転送し、
    検索条件格納手段が、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納し、
    情報検索要求転送手段が、前記情報検索要求を隣接する他の情報検索装置に対して転送し、
    検索手段が、前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索し、
    検索結果通知手段が、前記検索条件に前記公開情報が合致した場合、前記検索元装置に対して検索結果を匿名通信によって送信する、
    ことを特徴とする情報検索方法。
  9. ピアツーピア方式のネットワーク上で公開されている情報を検索する情報検索装置において、
    他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納する公開情報格納手段と、
    前記ネットワーク内の装置間の関係が木構造で定義されており、前記情報公開要求を前記木構造における親装置に対して転送する情報公開要求転送手段と、
    他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納する検索条件格納手段と、
    前記情報検索要求を前記木構造における前記親装置に対して転送する情報検索要求転送手段と、
    前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索する検索手段と、
    前記検索条件に前記公開情報が合致した場合、前記情報検索要求の送信元である検索元装置に対して検索結果を送信する検索結果通知手段と、
    を有することを特徴とする情報検索装置。
  10. ピアツーピア方式のネットワーク上で公開されている情報を検索するための情報検索プログラムにおいて、
    コンピュータに、
    公開情報格納手段が、他の装置から公開情報を含む情報公開要求を受け取った場合、公開情報記憶手段に対して前記公開情報を格納し、
    前記ネットワーク内の装置間の関係が木構造で定義されており、情報公開要求転送手段が、前記情報公開要求を前記木構造における親装置に対して転送し、
    検索条件格納手段が、他の装置から検索要求を含む情報検索要求を受け取った場合、検索条件記憶手段に対して前記検索条件を格納し、
    情報検索要求転送手段が、前記情報検索要求を前記木構造における前記親装置に対して転送し、
    検索手段が、前記検索条件記憶手段に記憶された検索条件に基づいて、前記公開情報記憶手段に記憶された前記公開情報を検索し、
    検索結果通知手段が、前記検索条件に前記公開情報が合致した場合、前記情報検索要求の送信元である検索元装置に対して検索結果を送信する、
    処理を実行させることを特徴とする情報検索プログラム。
JP2003398089A 2003-11-27 2003-11-27 情報検索方法、情報検索装置、および情報検索プログラム Expired - Fee Related JP4360883B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003398089A JP4360883B2 (ja) 2003-11-27 2003-11-27 情報検索方法、情報検索装置、および情報検索プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003398089A JP4360883B2 (ja) 2003-11-27 2003-11-27 情報検索方法、情報検索装置、および情報検索プログラム

Publications (2)

Publication Number Publication Date
JP2005159911A true JP2005159911A (ja) 2005-06-16
JP4360883B2 JP4360883B2 (ja) 2009-11-11

Family

ID=34723056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003398089A Expired - Fee Related JP4360883B2 (ja) 2003-11-27 2003-11-27 情報検索方法、情報検索装置、および情報検索プログラム

Country Status (1)

Country Link
JP (1) JP4360883B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007074490A (ja) * 2005-09-08 2007-03-22 Brother Ind Ltd 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
WO2007074873A1 (ja) * 2005-12-29 2007-07-05 Brother Kogyo Kabushiki Kaisha コンテンツ配信システム、端末装置及びその情報処理方法並びにそのプログラムを記録した記録媒体
JP2007233652A (ja) * 2006-02-28 2007-09-13 Brother Ind Ltd コンテンツ配信システム、コンテンツ配信システムの情報処理方法および端末装置
WO2007113980A1 (ja) * 2006-03-30 2007-10-11 Brother Kogyo Kabushiki Kaisha 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラムを記録した記録媒体
JP2008242895A (ja) * 2007-03-28 2008-10-09 Nodc:Kk ツリー型分流路及び合流路を備えたデータ駆動型処理装置用通信路装置及びデータ駆動型処理装置用パケット転送方式
JP2008245145A (ja) * 2007-03-28 2008-10-09 D I System Co Ltd セキュリティプログラムおよびサーバ
JP2010108391A (ja) * 2008-10-31 2010-05-13 Brother Ind Ltd ノード装置、ノード処理プログラム及び利用状況管理方法
JP2012150793A (ja) * 2010-12-31 2012-08-09 Regify Sa セキュア通信ネットワークを提供及び運営するシステム及び方法
JP2020155085A (ja) * 2019-08-13 2020-09-24 富士ゼロックス株式会社 データ管理システム

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4622755B2 (ja) * 2005-09-08 2011-02-02 ブラザー工業株式会社 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
JP2007074490A (ja) * 2005-09-08 2007-03-22 Brother Ind Ltd 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
WO2007074873A1 (ja) * 2005-12-29 2007-07-05 Brother Kogyo Kabushiki Kaisha コンテンツ配信システム、端末装置及びその情報処理方法並びにそのプログラムを記録した記録媒体
JP2007184669A (ja) * 2005-12-29 2007-07-19 Brother Ind Ltd コンテンツ配信システム、端末装置及びその情報処理方法並びにそのプログラム
JP4692278B2 (ja) * 2005-12-29 2011-06-01 ブラザー工業株式会社 コンテンツ配信システム、端末装置及びその情報処理方法並びにそのプログラム
JP2007233652A (ja) * 2006-02-28 2007-09-13 Brother Ind Ltd コンテンツ配信システム、コンテンツ配信システムの情報処理方法および端末装置
JP4696972B2 (ja) * 2006-02-28 2011-06-08 ブラザー工業株式会社 コンテンツ配信システム、コンテンツ配信システムの情報処理方法および端末装置
WO2007113980A1 (ja) * 2006-03-30 2007-10-11 Brother Kogyo Kabushiki Kaisha 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラムを記録した記録媒体
JP4692355B2 (ja) * 2006-03-30 2011-06-01 ブラザー工業株式会社 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
JP2007274187A (ja) * 2006-03-30 2007-10-18 Brother Ind Ltd 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
US8619631B2 (en) 2006-03-30 2013-12-31 Brother Kogyo Kabushiki Kaisha Information communication system, information communication method, node device included in information communication system and recording medium recording information processing program
JP2008245145A (ja) * 2007-03-28 2008-10-09 D I System Co Ltd セキュリティプログラムおよびサーバ
JP2008242895A (ja) * 2007-03-28 2008-10-09 Nodc:Kk ツリー型分流路及び合流路を備えたデータ駆動型処理装置用通信路装置及びデータ駆動型処理装置用パケット転送方式
JP2010108391A (ja) * 2008-10-31 2010-05-13 Brother Ind Ltd ノード装置、ノード処理プログラム及び利用状況管理方法
JP2012150793A (ja) * 2010-12-31 2012-08-09 Regify Sa セキュア通信ネットワークを提供及び運営するシステム及び方法
US9419945B2 (en) 2010-12-31 2016-08-16 Regify S.A. Systems and methods for providing and operating a secure communication network
JP2020155085A (ja) * 2019-08-13 2020-09-24 富士ゼロックス株式会社 データ管理システム

Also Published As

Publication number Publication date
JP4360883B2 (ja) 2009-11-11

Similar Documents

Publication Publication Date Title
Bennett et al. GAP–practical anonymous networking
US20200137164A1 (en) Data storage and retrieval
JP2005275937A (ja) P2pネットワークシステム
US20100082785A1 (en) User interface in data forwarding network
CN101599968B (zh) 可靠匿名传输方法及系统
Chothia et al. A survey of anonymous peer-to-peer file-sharing
JP4360883B2 (ja) 情報検索方法、情報検索装置、および情報検索プログラム
US7565405B2 (en) Method and apparatus for providing data storage in peer-to-peer networks
JP2007535848A (ja) ゾーンベースのピアツーピア通信
JP2010113573A (ja) コンテンツ分散保存システム、コンテンツ保存方法、サーバ装置、ノード装置、サーバ処理プログラム、及びノード処理プログラム
JP2016059022A (ja) 端末装置、ゲートウェイ装置および中継装置
Saboori et al. Anonymous communication in peer-to-peer networks for providing more privacy and security
JP4128094B2 (ja) 匿名ルート探索要求方法、匿名ルート探索要求中継方法、匿名データ中継方法、および匿名ルート探索要求応答方法
JP2008109717A (ja) 電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラム
JP2007323255A (ja) 情報伝達装置、情報伝達方法、および情報伝達プログラムを記録した記録媒体
CN114338127B (zh) 匿名通信的数据传输方法及装置、电子设备、存储介质
Thaalbi et al. An enhanced chord-based P2P lookup protocol for mobile Ad hoc networks
Cui et al. Study of censorship in named data networking
Scott et al. Blocking-resistant network services using Unblock
Manzanares-Lopez et al. Anonymity in p2p systems
Tsaoussidis et al. Network Working Group P. Mendes, Ed. Internet-Draft Airbus Intended status: Experimental R. Sofia Expires: March 19, 2021 fortiss GmbH
JP2006221457A (ja) Pure型P2P通信におけるレプリケーション制御を行うサーバントとそのレプリケーション制御方法およびプログラム
Tokunaga et al. A Link State Routing Method for CCN with Blockchain
Bhoobalan et al. An Experimental Study and Analysis of Crowds based Anonymity
Daniel et al. Exploring the design space of privacy-enhanced content discovery for bitswap

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20050913

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050922

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081125

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090126

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090811

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090811

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120821

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120821

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130821

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees