(57)【要約】【課題】投稿者とその投稿の閲覧者とを匿名のままメッセージの交換ができるようにする。【解決手段】掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第１伝送ルートを示す第１戻り匿名ルート情報、および第１伝送ルート上で隣接するノードの識別情報である第１隣接ノード識別子を含む自分宛の投稿データパケットの内容をデータベースに登録する。メッセージに対する検索条件、検索者の送信元から辿ってきた第２伝送ルートを示す第２戻り匿名ルート情報、第２伝送ルート上で隣接するノードの識別情報である第２隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、検索条件によりデータベース内を検索する。検出されたメッセージ、第１戻り匿名ルート情報、および第１隣接ノード識別子を送信元公開鍵で暗号化して、第２隣接ノード識別子で示されるノードに対して送信する。【選択図】図２４
2008109717.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上で匿名のメッセージ交換を行うための電子掲示板提供装置において、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第１伝送ルートを示す第１戻り匿名ルート情報、および前記第１伝送ルート上で隣接するノードの識別情報である第１隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録する登録手段と、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第２伝送ルートを示す第２戻り匿名ルート情報、前記第２伝送ルート上で隣接するノードの識別情報である第２隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索する検索手段と、
前記検索手段で検出された前記メッセージ、前記第１戻り匿名ルート情報、および前記第１隣接ノード識別子を前記送信元公開鍵で暗号化する暗号化手段と、
暗号化されたデータ、および前記第２戻り匿名ルート情報を含む応答データパケットを生成するパケット生成手段と、
前記第２隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する送信手段と、
を有することを特徴とする電子掲示板提供装置。
【請求項２】
ネットワーク上で匿名のメッセージ交換を行うための電子掲示板へメッセージをコンピュータで投稿するためのメッセージ投稿方法において、
前記コンピュータが、
前記メッセージの投稿要求を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻り匿名ルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、返信データ暗号化用の送信元公開鍵、および前記メッセージを含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とするメッセージ投稿方法。
【請求項３】
ネットワーク上で匿名のメッセージ交換を行うための電子掲示板に投稿されたメッセージをコンピュータで検索するための投稿メッセージ検索方法において、
前記コンピュータが、
前記メッセージの検索条件を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻り匿名ルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、および返信データ暗号化用の送信元公開鍵および前記検索条件を含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とする投稿メッセージ検索方法。
【請求項４】
ネットワーク上の匿名のメッセージ交換を行うための電子掲示板をコンピュータで提供するための電子掲示板提供プログラムにおいて、
前記コンピュータに、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第１伝送ルートを示す第１戻り匿名ルート情報、および前記第１伝送ルート上で隣接するノードの識別情報である第１隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録し、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第２伝送ルートを示す第２戻り匿名ルート情報、前記第２伝送ルート上で隣接するノードの識別情報である第２隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索し、
検索手段で検出された前記メッセージ、前記第１戻り匿名ルート情報、および前記第１隣接ノード識別子を前記送信元公開鍵で暗号化し、
暗号化されたデータ、および前記第２戻り匿名ルート情報を含む応答データパケットを生成し、
前記第２隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する、
処理を実行させることを特徴とする電子掲示板提供プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータの送受信者の匿名性を守った電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラムに関し、特にオニオンルーティングの手法を利用した電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラムに関する。
【背景技術】
【０００２】
インターネットを介した様々な情報交換が盛んに行われている。インターネットにおいて一般に利用されている技術では、伝送されているパケットを解析すれば、パケットのヘッダから受信者が割り出せると共に、パケットルートの追跡も可能である。その結果、インターネットの利用者個人のプライバシが侵害される虞がでてきている。たとえば、匿名の掲示板への投稿内容から、投稿者の使用している端末の所在（ＩＰアドレス等）が分かってしまうと、悪意の第三者から嫌がらせをうける危険性がある。
【０００３】
そこで、インターネット上のデータの送受信者の匿名性を守るための様々な技術が考えられている。データの送受信の匿名性を守るためには、全てのデータ通信を暗号化すると共に、パケットの伝送経路も漏洩しないようにする必要がある。
【０００４】
パケットの伝送経路の漏洩を防止するには、複数の中継地（ルータ）を活用することにより、通信中のパケットの受信元や転送先等の情報の漏洩をシャットアウトする必要がある。このような伝送経路の漏洩防止手法としては、「オニオンルーティング」と名付けられた手法が知られている（たとえば、特許文献１参照）。
【０００５】
オニオンルーティングの手法では、オニオンルータと呼ばれる堅牢で固定的なルータがルーティングを司る。送信端末では、送信相手までの伝送経路を予め決定し、パケットを中継する各オニオンルータの公開鍵を用いてパケットの伝送経路に関する情報を暗号化する。
【０００６】
パケットを受信したオニオンルータは、自身の秘密鍵で伝送経路に関する情報を復号する。この復号によりパケットの次の転送先が判別され、オニオンルータは、次のノード（オニオンルータ若しくは受信端末）にパケットを転送する。このように、各オニオンルータでは、次の転送先以外隠蔽された状態を保つことができるため、最終的な受信端末の情報を特定することができない。また、オニオンルータにおいて、パケットを送出する際に、それまでの伝送経路に関する情報をパケットに付加しないことで、送信元の漏洩を防止できる。
【０００７】
このように、オニオンルーティングでは、データパケットが目的地までの経路情報を多重に暗号化して保持することで、ルーティングを行う各ノードやネットワーク上でのスキミングを行う者に対して経路情報の一部しか参照できないようにしている。
【特許文献１】米国特許第６、２６６、７０４号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、従来のオニオンルーティングの手法は、ノード構成が動的に変化する環境に適用するのが困難である。ノード構成が動的に変化する環境としては、特にＰ２Ｐ(Peer to Peer)ネットワークがある。
【０００９】
Ｐ２Ｐネットワークでは、Peerノードのネットワークへの参加やネットワークからの退場は任意である。このため、Ｐ２Ｐネットワーク上で通信を行う場合、その時点で参加しているPeerノード間でＰ２Ｐの通信を行いながら、送信相手のPeerノードへパケットを転送する。このようなＰ２Ｐ環境に対してオニオンルーティングの手法を適用する場合、次の問題が生じる。
・  固定のルータ及び固定の経路を予め決定することができない。
・  ルーティング途中でのノード構成変更に対して動的に対処するのが困難である。
【００１０】
このため、Ｐ２Ｐネットワークなど不安定なネットワークで匿名通信を行うには、経路発見を動的且つ匿名的に行い、ルーティング途中でのノード構成変更への対処ができなければならない。
【００１１】
本発明はこのような点に鑑みてなされたものであり、投稿者とその投稿の閲覧者とを匿名のままメッセージの交換が可能な電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、ネットワーク上で匿名のメッセージ交換を行うための電子掲示板提供装置において、掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第１伝送ルートを示す第１戻り匿名ルート情報、および前記第１伝送ルート上で隣接するノードの識別情報である第１隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録する登録手段と、前記メッセージに対する検索条件、検索者の送信元から辿ってきた第２伝送ルートを示す第２戻り匿名ルート情報、前記第２伝送ルート上で隣接するノードの識別情報である第２隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索する検索手段と、前記検索手段で検出された前記メッセージ、前記第１戻り匿名ルート情報、および前記第１隣接ノード識別子を前記送信元公開鍵で暗号化する暗号化手段と、暗号化されたデータ、および前記第２戻り匿名ルート情報を含む応答データパケットを生成するパケット生成手段と、前記第２隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する送信手段と、を有することを特徴とする電子掲示板提供装置が提供される。
【００１３】
これにより、電子掲示板の投稿者を匿名のまま、投稿者のメッセージが他の国名の検索者に通知される。
【発明の効果】
【００１４】
本発明では、匿名のルートを介して電子掲示板に投稿されたメッセージに対する検索が行われると、そのメッセージに投稿者の送信元までの匿名ルート情報を付加して検索者に送信するようにしたため、検索者は、匿名の投稿者に対して匿名のルートを介して応答することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
【００１６】
［発明の概要］
図１は、実施の形態に適用される発明の概念図である。本発明に係る通信は、送信ノード１、中継ノード２および受信ノード３間で行われる。なお、後述するように、中継ノード２は一般には複数ある。
【００１７】
送信ノード１は、宛先識別子で宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報とする（ステップＳ１）。自分のみが復号可能に暗号化するには、たとえば、送信ノード１のみが有する秘密鍵（復号鍵）に対応する公開鍵（暗号鍵）で暗号化を行う。
【００１８】
次に、送信ノード１は、任意に生成した匿名識別子、宛先識別子、返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成する（ステップＳ２）。匿名識別子は、送信したルート探索パケットと返信されるルート通知パケットとの関連付けに利用される。宛先識別子は、宛先の受信ノード３を特定する情報である。宛先識別子は、予め公開された情報であってもよい。送信元公開鍵は、送信ノード１に対して他のノードが自己のノード識別子等の情報を渡すときに、その情報を暗号化するための暗号鍵である。送信元公開鍵に対応する秘密鍵（復号鍵）は、送信ノード１内に予め格納しておく。
【００１９】
最後に、送信ノード１は、ルート探索パケットをブロードキャストで送信する（ステップＳ３）。
中継ノード２は、ルート探索パケットを受け取ると、返信用匿名ルート情報と隣接ノード識別子とを自分のみが復号可能な形式で暗号化する（ステップＳ４）。隣接ノード識別子は、ルート探索パケットの伝送ルートにおいて中継ノード２に隣接するノードの識別子である。送信ノード１からルート探索パケットが直接送られたのであれば、送信ノード１のノード識別子が隣接ノード識別子である。また、暗号化処理では、たとえば、中継ノード２が有する秘密鍵（復号鍵）に対応する公開鍵（暗号鍵）で暗号化を行う。返信用匿名ルート情報は、送信ノード若しくは伝送途中に介在した他の中継ノードで既に暗号化されているため、ステップＳ４の暗号化により、多重に暗号化されることになる。しかも、隣接ノード識別子を含めて暗号化することで、その情報を復号した際に隣接ノードのノード識別子が認識可能となる。
【００２０】
次に、中継ノード２は、ルート探索パケットに自分の識別情報である自ノード識別子を追加する（ステップＳ５）。最後に、中継ノード２は、ルート探索パケットをブロードキャストで送信する（ステップＳ６）。送信されたルート探索パケットを第三者が解析した場合、中継ノード２から送信されたことは認識できるが、それ以前の転送ルートは知ることができない。
【００２１】
受信ノード３は、受信ノード３宛のパケットであることを示す宛先識別子を含むルート探索パケットを受け取ると、自分の識別情報であるノード識別子と、受信ノード３宛て情報の暗号化用の受信ノード公開鍵とを送信元公開鍵で暗号化してルート情報とする（ステップＳ７）。なお、送信元公開鍵は、ルート探索パケットから取得できる。ノード識別子と受信ノード公開鍵との組を送信元公開鍵で暗号化したため、これらの情報を参照できるのは、送信ノード１のみとなる。
【００２２】
次に、受信ノード３は、送信ノード１の匿名識別子でルート通知先が指定され、返信用匿名ルート情報、ルート情報、および送信元公開鍵を含むルート通知パケットを生成する（ステップＳ８）。最後に、受信ノード３は、隣接ノード識別子で示されるノードに対してルート通知パケットを送信する（ステップＳ９）。これにより、受信ノード３のノード識別子と公開鍵とを含むルート通知パケットが、返信用匿名ルート情報に従ったルートで返信される。
【００２３】
中継ノード２は、ルート通知パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の中継ノード公開鍵とを送信元公開鍵で暗号化してルート情報に追加する（ステップＳ１０）。このように、ルート情報に各中継ノードのノード識別子と公開鍵との組を追加していくことで、匿名ルートを送信ノードに通知することができる。なお、ルート情報にノード識別子と公開鍵との組を追加する際には、情報の追加順が判別できるように所定の規則に従って追加する。たとえば、ルート情報内の元の情報の前に、新たな情報を追加していく。これにより、送信ノード１では、匿名ルート上の各ノードの配列を認識できる。
【００２４】
次に、中継ノード２は、返信用匿名ルート情報を復号して、次の送信先となるノードを示す次ノード識別子（ルート探索パケットでの隣接ノード識別子）を取得すると共に、復号されたデータを返信用匿名ルート情報としてルート通知パケットに設定する（ステップＳ１１）。最後に、中継ノード２は、次ノード識別子で示されるノードに対して、ルート通知パケットを送信する（ステップＳ１２）。これにより、ルート情報に中継ノード２のノード識別子と公開鍵とが付加されたルート通知パケットが、返信用匿名ルート情報に従ったルートに転送される。
【００２５】
送信ノード１は、ルート通知パケットを受け取ると、ルート情報を送信元公開鍵に対応する送信元秘密鍵で復号する（ステップＳ１３）。そして、送信ノード１は、復号により得られた宛先までのルート上の各ノードの識別子と公開鍵との組を配列を保ったまま記録装置に格納する（ステップＳ１４）。格納された情報を参照すれば、受信ノード３までの匿名ルートを認識することができる。しかも、各ノードの公開鍵を用いれば、ルート上の各ノードに対して、匿名ルート上の次のノードのみを知らせることができる。
【００２６】
このようにして、データの送受信者の匿名性を守ると共に、データの送受信経路を動的に検索し、匿名性の高いデータ通信を行うことができる。しかも、ルーティングを実行時にノード構成が変更されても、先に検出された他の匿名ルート経由でデータを伝送することで、データ伝送の確実性を向上させることができる。
【００２７】
以上のような匿名通信の機能は、Ｐ２Ｐネットワークにも適用することができる。すなわち、各ノードが匿名ルートを適宜探索できるため、ネットワークの構成が動的に変化する場合であっても、匿名ルートにより送信元を秘匿したままのデータ通信が可能となる。
【００２８】
ところで、ルート探索パケットに含める送信元の匿名識別子や送信元公開鍵は、適宜変更することができる。たとえば、ルート探索パケットを送出する度に、異なる匿名識別子、異なる送信元公開鍵を用いることができる。送信元公開鍵を固定化しないことで、送信元の匿名性を高めることができる。すなわち、匿名識別子と公開鍵を常に送信者に対して固定にすると以下の問題が生じてしまう。
１．同一匿名識別子を持つ暗号化されないメッセージ（掲示板への投稿等）が複数集まると、その内容から発信者を特定できる可能性が生じる。
２．暗号化されたメッセージでも、暗号化を解いた人（たとえば、匿名掲示板の投稿に対する返信を投稿者が読む場合）が内容から発信者を特定できる可能性が生じる。
【００２９】
そこで、同一送信者の匿名識別子と公開鍵をメッセージ間で固定にしないことで、匿名掲示板を検索するノードや、ネットワーク上のスキミング、或いは、返信メッセージの受信者がメッセージの送信者を特定するのを防ぐことができる。すなわち、ノードの匿名識別子、公開鍵の使い捨て管理を行うことで、メッセージ間のアンリンカビリティ(unlinkability)を高めることができる。これを電子掲示板に利用すれば、データの送信者や受信者の匿名性を守った匿名掲示板機能を実現できる。なお、アンリンカビリティとは、二種類の処理が同じユーザによって行われたことを決定できないことを示す。
【００３０】
［発明の実施の形態］
以上のような機能を実現するための具体例を、本発明の実施の形態として以下に説明する。なお、以下の実施の形態は、Ｐ２Ｐネットワークに本発明を適用したものであり、匿名通信機能を、Ｐ２ＰオニオンプロキシとＰ２Ｐオニオンルータによって実現する。各Ｐ２ＰオニオンノードのＰ２ＰオニオンプロキシによりＰ２Ｐオニオンルート発見プロトコルに応じたルート探索が行われる。また、各Ｐ２ＰオニオンノードのＰ２Ｐオニオンルータにより、Ｐ２Ｐオニオンルーティングが行われ、Ｐ２Ｐオニオンルート情報が検出される。
【００３１】
ここで、Ｐ２Ｐオニオンルート発見プロトコルは、受信側のＰ２ＰオニオンノードまでのＰ２Ｐオニオンルートを発見するプロトコルである。Ｐ２Ｐオニオンプロキシは、Ｐ２ＰオニオンノードのＰ２Ｐオニオンルート発見プロトコルを司る機能単位である。Ｐ２Ｐオニオンルートは、多重に暗号化され、且つ、ノード構成変更に対処可能な経路情報である。Ｐ２Ｐオニオンルータは、Ｐ２Ｐオニオンノードにおいて、Ｐ２Ｐオニオンルート情報に従ったＰ２Ｐオニオンルーティング処理を司る機能単位である。
【００３２】
図２は、匿名通信網の概念図である。本実施の形態では、Ｐ２Ｐオニオンノード１００が、Ｐ２Ｐオニオンノード２００，３００，４１０，４２０，４３０，４４０，４５０を含む匿名通信網１０に参加する。ここで、Ｐ２Ｐオニオンノード１００のノード名を「Ａ」、Ｐ２Ｐオニオンノード２００のノード名を「Ｂ」、Ｐ２Ｐオニオンノード４１０のノード名を「Ｃ」、Ｐ２Ｐオニオンノード４２０のノード名を「Ｄ」、Ｐ２Ｐオニオンノード４３０のノード名を「Ｅ」、Ｐ２Ｐオニオンノード４４０のノード名を「Ｆ」、Ｐ２Ｐオニオンノード４５０のノード名を「Ｇ」、Ｐ２Ｐオニオンノード３００のノード名を「Ｘ」とする。
【００３３】
Ｐ２Ｐオニオンノード１００は、Ｐ２Ｐオニオンノード２００との間でＰ２Ｐ通信接続を行うことで匿名通信網１０に参加する。
Ｐ２Ｐオニオンノード２００は、他のＰ２Ｐオニオンノード４１０，４２０，４４０，４５０との間でＰ２Ｐ通信接続が確立している。Ｐ２Ｐオニオンノード４１０は、さらにＰ２Ｐオニオンノード４３０との間でＰ２Ｐ通信接続が確立している。Ｐ２Ｐオニオンノード４２０も同様に、Ｐ２Ｐオニオンノード４３０との間でＰ２Ｐ通信接続が確立している。Ｐ２Ｐオニオンノード４３０は、さらにＰ２Ｐオニオンノード３００との間でＰ２Ｐ通信接続が確立している。
【００３４】
このようにＰ２Ｐネットワークでは、多数のＰ２Ｐオニオンノード間でのＰ２Ｐ接続の連鎖によって通信網が確立している。
図３は、本発明の実施の形態に用いるＰ２Ｐオニオンノードのハードウェア構成例を示す図である。Ｐ２Ｐオニオンノード１００は、ＣＰＵ(Central Processing Unit)１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ(Random Access Memory)１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００３５】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００３６】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００３７】
通信インタフェース１０６は、他のＰ２Ｐオニオンノード２００との間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、Ｐ２Ｐオニオンノード１００のハードウェア構成例を示したが、他のＰ２Ｐオニオンノード２００，３００，４１０，４２０，４３０，４４０，４５０も同様のハードウェア構成で実現可能である。
【００３８】
ところで、本実施の形態に係る各Ｐ２Ｐオニオンノードは、大別して、匿名通信基盤接続認証機能、匿名経路発見機能、および匿名通信機能を有している。
匿名通信基盤接続認証機能は、自身が匿名通信網１０に参加するための認証要求機能、および他のＰ２Ｐオニオンノードが匿名通信網１０に参加する際にそのＰ２Ｐオニオンノードを認証するための機能である。匿名通信網１０に参加するＰ２Ｐオニオンノードに対して接続認証を行うことで、予め会員登録された者以外が匿名通信網１０に参加することを防止できる。
【００３９】
匿名経路発見機能は、Ｐ２Ｐオニオンルート発見プロトコルに従って、送信相手までの伝送路を探索する機能である。
匿名通信機能は、発見された経路を介して匿名通信を行う機能である。
【００４０】
図４は、Ｐ２Ｐオニオンノードの概略機能構成を示すブロック図である。Ｐ２Ｐオニオンノード１００は、Ｐ２Ｐオニオンプロキシ１１０、Ｐ２Ｐオニオンルータ１２０及び複数のアプリケーション１３１，１３２を有している。Ｐ２Ｐオニオンプロキシ１１０は、匿名通信基盤接続認証機能と匿名経路発見機能とを有している。また、Ｐ２Ｐオニオンルータ１２０は、匿名通信機能を有している。アプリケーション１３１，１３２は、ユーザからの操作入力等に応答して、メッセージの送信や受信を行う。図４の例では、アプリケーション１３１がメッセージを送信し、アプリケーション１３２がメッセージを受信する場合を示している。
【００４１】
Ｐ２Ｐオニオンノード２００には、Ｐ２Ｐオニオンプロキシ２１０とＰ２Ｐオニオンルータ２２０とを有している。Ｐ２Ｐオニオンプロキシ２１０は、匿名通信基盤接続認証機能と匿名経路発見機能とを有している。また、Ｐ２Ｐオニオンルータ２２０は、匿名通信機能を有している。
【００４２】
このような機能構成のＰ２Ｐオニオンノード１００，２００間では、たとえば、アプリケーション１３１，１３２から匿名通信網１０への接続要求が出されると、Ｐ２Ｐオニオンノード１００のＰ２Ｐオニオンプロキシ１１０とＰ２Ｐオニオンノード２００のＰ２Ｐオニオンプロキシ２１０との匿名通信基盤接続認証機能が連携して動作することで、接続相互認証が行われる。
【００４３】
また、アプリケーション１３１がユーザからのメッセージ送信依頼を受け付けると、Ｐ２Ｐオニオンプロキシ１１０に対して、Ｐ２Ｐオニオンルートの探索と獲得依頼が出される。すると、Ｐ２Ｐオニオンノード１００のＰ２Ｐオニオンプロキシ１１０とＰ２Ｐオニオンノード２００のＰ２Ｐオニオンプロキシ２１０との匿名経路発見機能がＰ２Ｐオニオンルート発見プロトコルに従って連携動作することで、ルート探索処理が行われる。ルート探索が終了すると、アプリケーション１３１からＰ２Ｐオニオンルータ１２０に対して、メッセージ送信要求が出される。すると、Ｐ２Ｐオニオンノード１００のＰ２Ｐオニオンルータ１２０とＰ２Ｐオニオンノード２００のＰ２Ｐオニオンルータ２２０との匿名通信機能が連携して動作することで、オニオンルーティングが行われ、データパケットによってメッセージが送信される。
【００４４】
また、他のＰ２ＰオニオンノードからＰ２Ｐオニオンノード１００に対するメッセージがオニオンルーティングによって送られると、Ｐ２Ｐオニオンルータ１２０からアプリケーション１３２にメッセージが渡される。
【００４５】
次に、本発明の実施の形態を実現するための各Ｐ２Ｐオニオンノードの機能を詳細に説明する。なお、各Ｐ２Ｐオニオンノードは、パケットの発信者（発信Peer）となる場合、パケットの受信者（受信Peer）となる場合、およびパケットのルーディングを行うルータ（中継Peer）となる場合があり得る。従って、各Ｐ２Ｐオニオンノードは、発信Peer、受信Peer、および中継Peerとしての機能を備えている必要がある。
【００４６】
図５は、Ｐ２Ｐオニオンノードの機能構成を示すブロック図である。Ｐ２Ｐオニオンノード１００は、Ｐ２Ｐオニオンプロキシ１１０、Ｐ２Ｐオニオンルータ１２０、アプリケーション１３１、会員証情報保持部１４１、固定鍵保持部１４２、匿名ルート情報保持部１４３、一時鍵生成部１５１、および匿名ＩＤ生成部１５２を有している。
【００４７】
Ｐ２Ｐオニオンプロキシ１１０は、匿名通信接続部１１１、匿名ルート探索要求部１１２、ルート探索要求中継部１１３、およびルート探索要求応答部１１４を有している。
匿名通信接続部１１１は、匿名通信基板接続認証処理を実行する。具体的には、匿名通信接続部１１１は、アプリケーション１３１から匿名基板への接続要求を受け取ると、会員証情報保持部１４１から会員証情報を取得するとともに、固定鍵保持部１４２から固定公開鍵１４２ａを取得する。そして、匿名通信接続部１１１は、接続可能な他のＰ２Ｐオニオンノードとの間で、会員証情報と固定公開鍵１４２ａとを用いて接続認証を行う。また、匿名通信接続部１１１は、他のＰ２Ｐオニオンノードから接続認証要求を受け取った際にも、会員証情報と固定公開鍵１４２ａとを用いて接続認証を行う。
【００４８】
匿名ルート探索要求部１１２は、Ｐ２Ｐオニオンルート発見プロトコルにおけるルート探索要求送信機能を実現する。具体的には匿名ルート探索要求部１１２は、アプリケーション１３１からＰ２Ｐオニオンルート探索要求を受け取ると、固定鍵保持部１４２から固定公開鍵１４２ａを取得すると共に、一時鍵生成部１５１から一時公開鍵と一時秘密鍵とを受け取る。また、匿名ルート探索要求部１１２は、匿名ＩＤ生成部１５２から匿名ＩＤを取得する。そして、匿名ルート探索要求部１１２は、取得した鍵情報、匿名ＩＤおよび自分のノードＩＤ等を含むルート探索パケットを生成し、ブロードバンドで送信する。なお、ノードＩＤは、公開鍵で暗号化された状態で、ルート探索パケット内に設定される。
【００４９】
ルート探索要求中継部１１３は、Ｐ２Ｐオニオンルート発見プロトコルにおけるルート探索要求の中継機能を実現する。具体的には、他のＰ２Ｐオニオンノードからルート探索パケットを受け取ると、ルート探索要求中継部１１３は、固定鍵保持部１４２から固定公開鍵１４２ａを取得する。次に、ルート探索要求中継部１１３は、ルート探索パケット内の戻りオニオン（ルートスタック：それまでの伝送経路を示している）内の情報を自分の固定公開鍵１４２ａで暗号化する。その後、ルート探索要求中継部１１３は、暗号化された情報に自分のノードＩＤを付加して、新たな戻りオニオンとする。そして、ルート探索要求中継部１１３は、ルートスタックが更新されたルート探索パケットを、他のＰ２Ｐオニオンノード（ルート探索パケットの送信元を除く）に対して転送する。
【００５０】
ルート探索要求応答部１１４は、Ｐ２Ｐオニオンルート発見プロトコルにおけるルート探索要求への応答機能を実現する。具体的には、ルート探索要求応答部１１４は、他のＰ２Ｐオニオンノードから送られたルート探索パケットにおける探索対象ノードとして自分が指定されていたとき、Ｐ２Ｐオニオンノードに対してルート通知パケットを生成する。応答する際には、ルート探索要求応答部１１４は、固定鍵保持部１４２から固定公開鍵１４２ａを取得する。そして、ルート探索要求応答部１１４は、ルート探索パケット送信元の一時公開鍵を用いて、自分のノードＩＤと固定公開鍵１４２ａとを暗号化してルート通知パケットに含める。ルート通知パケットは、Ｐ２Ｐオニオンルータ１２０の匿名データ送信部１２１を介して送信される。
【００５１】
Ｐ２Ｐオニオンルータ１２０は、匿名データ送信部１２１、匿名データ中継部１２２、および匿名データ受信部１２３を有している。
匿名データ送信部１２１は、匿名通信機能における匿名通信データパケットの送信機能を実現する。具体的には、匿名データ送信部１２１は、アプリケーション１３１等からの要求に応答して匿名通信のデータパケットを生成し、送信する。データパケットには、匿名ルートを示す宛先オニオンが含まれる。宛先オニオンは、匿名経路上の各Ｐ２Ｐオニオンノードの公開鍵を用いて、各Ｐ２Ｐオニオンノードの次の伝送先の情報を暗号化したものである。
【００５２】
匿名データ中継部１２２は、匿名通信機能における匿名通信のデータパケットの中継機能を実現する。具体的には、匿名データ中継部１２２は、データパケット内の宛先オニオンを自分の秘密鍵で復号し、次の伝送先を確認する。そして、匿名データ中継部１２２は、次の伝送先へデータパケットを転送する。
【００５３】
匿名データ受信部１２３は、匿名通信機能における匿名通信のデータパケットの受信機能を実現する。具体的には、匿名データ受信部１２３は、データパケットの送信先の匿名ＩＤが自分のＩＤであれば、自分宛のデータパケットであることを認識し、アプリケーション１３１にパケット内のデータ（ペイロード内のデータ）を渡す。なお、匿名データ受信部１２３は、受信した自分宛のパケットがルート通知パケットの場合、その内容から匿名ルートを認識し、匿名ルート情報保持部１４３に格納する。
【００５４】
アプリケーション１３１は、ユーザの操作入力等に応じて、匿名通信を利用した各種処理を実行する。
会員証情報保持部１４１は、匿名通信網１０に参加するための所定の手続きを行ったユーザに渡される情報である。会員証情報を有しているＰ２Ｐオニオンノードのみが匿名通信網１０に参加可能となる。
【００５５】
固定鍵保持部１４２は、予め用意された鍵情報を格納している。鍵情報は、固定公開鍵１４２ａと固定秘密鍵１４２ｂである。固定公開鍵１４２ａで暗号化した暗号データは、固定秘密鍵１４２ｂでのみ復号することができる。なお、固定公開鍵１４２ａと固定秘密鍵１４２ｂとは、会員証情報の一部として供給することもできる。
【００５６】
匿名ルート情報保持部１４３は、探索された匿名ルート情報を格納している。
一時鍵生成部１５１は、匿名ルート探索要求部１１２等からの要求に応答して、一時鍵を生成する。一時鍵は、一時公開鍵と一時秘密鍵の組である。
【００５７】
匿名ＩＤ生成部１５２は、匿名ルート探索要求部１１２等からの要求に応答して、匿名ＩＤを生成する。匿名ＩＤは、一連の匿名通信（匿名ルート探索とその匿名ルートによる匿名通信）毎に個別に設定する識別情報である。
【００５８】
以上のような構成のＰ２Ｐオニオンノード１００によって、本実施の形態に係る匿名通信基盤接続認証機能、匿名経路発見機能、および匿名通信機能が実現される。なお、図５には、Ｐ２Ｐオニオンノード１００が有する機能の構成要素を示したが、他のＰ２Ｐオニオンノード２００，３００，４１０，４２０，４３０，４４０，４５０も同様の機能を有している。
【００５９】
［匿名通信基盤接続認証機能］
まず、匿名通信基盤接続認証機能について説明する。
図６は、匿名通信基盤接続認証機能を示す図である。匿名通信基盤接続認証機能は、あるＰ２Ｐオニオンノード（図６の例では、Ｐ２Ｐオニオンノード１００）が、匿名通信網１０に参加するために他のＰ２Ｐオニオンノード（図６の例では、Ｐ２Ｐオニオンノード２００）へ接続するための機能である。なお、接続先となるＰ２Ｐオニオンノード２００を、Ｐ２Ｐオニオンノード１００から見たときの第１接続ノードと呼ぶこととする。ここでは、Ｐ２Ｐオニオンノード１００は、接続する第１接続ノードのＩＰアドレスやポート番号などを最初から分かっているものとする。たとえば、任意に接続可能なＰ２Ｐオニオンノード（第１接続ノードとなり得るＰ２Ｐオニオンノード）が予め公開されているものとする。
【００６０】
匿名通信網１０で使用するＰ２Ｐオニオンルートなどの暗号方式にはＲＳＡ暗号を用いる。ＲＳＡ暗号の公開鍵とその証明書（公開鍵証明書）、秘密鍵などは既に各Ｐ２Ｐオニオンノードが持っている状態を前提とする。この公開鍵証明書はこの匿名通信基盤の会員証として使用し、ノードがこの匿名通信基盤に参加するための認証に使用する。公開鍵証明書は、会員証情報保持部１４１に格納される。
【００６１】
ここで、図６を参照して、Ｐ２Ｐオニオンノード１００がＰ２Ｐオニオンノード２００を第１接続ノードとして匿名通信網１０に参加するときの匿名通信基盤接続認証機能の処理手順を説明する。このとき、匿名通信基盤接続認証機能は、Ｐ２Ｐオニオンノード１００のＰ２Ｐオニオンプロキシ１１０内の匿名通信接続部１１１と、Ｐ２Ｐオニオンノード２００のＰ２Ｐオニオンプロキシ２１０内の匿名通信接続部２１１との間で実行される。
【００６２】
［第１の処理］Ｐ２Ｐオニオンノード１００内の匿名通信接続部１１１は、第１接続ノードを決定する。ここで、第１接続ノードは、隣接するＰ２Ｐオニオンノード２００であり、複数の場合もある。第１接続ノードとして指定可能なノードのＩＰアドレス等は、会員証情報保持部１４１に予め格納しておくことができる。また、第１接続ノードのＩＰアドレス等を、ＧＵＩによりユーザが直接入力することもできる。
【００６３】
［第２の処理］新規参加ノード（Ｐ２Ｐオニオンノード１００）のＰ２Ｐオニオン・プロキシ（Ｐ２Ｐオニオンプロキシ１１０内の匿名通信接続部１１１）は第１接続ノード（Ｐ２Ｐオニオンノード２００）へ接続を開始して、自分の固定公開鍵１４２ａと会員証１４１ａとを渡す。
【００６４】
［第３の処理］接続された第１接続ノード（Ｐ２Ｐオニオンノード２００）のＰ２Ｐオニオン・プロキシ（Ｐ２Ｐオニオンプロキシ２１０内の匿名通信接続部２１１）も自分の固定公開鍵２４２ａと会員証２４１ａを新規参加ノード（Ｐ２Ｐオニオンノード１００）へ渡す。
【００６５】
［第４の処理］新規参加ノード（Ｐ２Ｐオニオンノード１００）および第１接続ノード（Ｐ２Ｐオニオンノード２００）の双方で会員証の確認を行う。失効しているなど問題があれば通信を停止する。
【００６６】
［第５の処理］新規参加ノード（Ｐ２Ｐオニオンノード１００）および第１接続ノード（Ｐ２Ｐオニオンノード２００）で、互いに相手の固定公開鍵で暗号化したデータを交換する。そして、双方のノードが、受け取ったデータを復号して相手に返す。各Ｐ２Ｐオニオンノード１００，２００は、相手方に送信したデータが正しく復号されて戻ってくれば匿名Ｐ２Ｐネットワーク基盤上サービス利用資格保有者と判断する。以後、Ｐ２Ｐオニオンノード１００は、Ｐ２Ｐオニオンノード２００を介して、匿名通信網１０に参加できる。すなわち、Ｐ２Ｐオニオンノード１００が匿名通信基盤上のノードとなる。その結果、図２に示すような匿名通信網１０が形成される。
【００６７】
［匿名経路発見機能］
次に、匿名経路発見機能について、Ｐ２Ｐオニオンノード１００からＰ２Ｐオニオンノード３００に対してデータを送信する際の匿名経路探索例を用いて説明する。
【００６８】
図７は、匿名経路発見機能を示す図である。匿名経路発見機能は、Ｐ２Ｐオニオンルート発見プロトコルを用いて、送信Peer（図７の例では、Ｐ２Ｐオニオンノード１００）から受信Peer（図７の例では、Ｐ２Ｐオニオンノード３００）までのルート情報を匿名的に収集し、収集したルート情報からＰ２Ｐオニオンルートを構築する機能である。ルート情報は受信Peerまでの経路を構成する各Peerの識別子と公開鍵からなる。Ｐ２Ｐオニオンルート発見プロトコルは以下の手順でＰ２Ｐオニオンルートを構築する。なお、匿名経路発見機能は、各Ｐ２Ｐオニオンノード１００，２００，３００のＰ２Ｐオニオンプロキシ１１０，２１０，３１０とＰ２Ｐオニオンルータ１２０，２２０，３２０によって実現される。特に送信Peer（Ｐ２Ｐオニオンノード１００）ではＰ２Ｐオニオンプロキシ１１０の匿名ルート探索要求部１１２が処理を実行し、中継Peer（Ｐ２Ｐオニオンノード２００）ではＰ２Ｐオニオンプロキシ２１０のルート探索要求中継部２１３が処理を実行し、受信Peer（Ｐ２Ｐオニオンノード３００）では、ルート探索要求応答部３１４が処理を実行する。
【００６９】
ルート探索の際には、送信Peer（Ｐ２Ｐオニオンノード１００）からルート探索パケット２０がブロードキャスト送信され、そのルート探索パケット２０を受信した受信Peer（Ｐ２Ｐオニオンノード３００）からルート通知パケット３０が返信される。
【００７０】
図８は、ルート探索パケットのデータ構造例を示す図である。ルート探索パケット２０は、メッセージフラグ２１、宛先（Ｔｏ）２２、送信元（Ｆｒｏｍ）２３、宛先オニオン２４、戻りオニオン２５、および返信暗号化用一時鍵情報２６で構成される。
【００７１】
メッセージフラグ２１は、パケットの種別を示している。ルート探索パケット２０の場合には、ルート探索ブロードキャスト送信用のパケットであることを示す情報が設定される。
【００７２】
宛先２２には、ルート探索パケット２０の宛先が設定される。宛先は、予め公開された受信Peerの識別情報（公開ＩＤ）等で示される。
送信元２３には、送信peerの匿名ＩＤが設定される。
【００７３】
宛先オニオン２４は、宛先までのルートを示す情報であるが、ルート探索パケット２０では空欄となる。
戻りオニオン２５には、ルート探索パケット２０に対してルート通知パケット３０を返信する際の伝送経路が、多重に暗号化されて設定される。
【００７４】
返信暗号化用一時鍵情報２６は、ルート通知パケット３０を返信する際に使用される送信Peerの一時公開鍵と暗号化された一時秘密鍵である。
図９は、ルート通知パケットのデータ構造例を示す図である。ルート通知パケット３０は、メッセージフラグ３１、宛先（Ｔｏ）３２、送信元（Ｆｒｏｍ）３３、宛先オニオン３４、戻りオニオン３５、ルート情報３６、および返信暗号化用一時鍵情報３７で構成される。
【００７５】
メッセージフラグ３１は、パケットの種別を示している。ルート通知パケット３０の場合には、ルート探索返信用のパケットであることを示す情報が設定される。
宛先３２には、ルート通知パケット３０の宛先が設定される。宛先は、ルート探索パケット２０の送信元２３に設定されている送信Peerの匿名ＩＤである。
【００７６】
送信元３３には、受信peerの公開されたＩＤ（公開ＩＤ）が設定される。
宛先オニオン３４は、宛先までのルートを示す情報である。これは、受信Peerにおいてルート探索パケット２０の戻りオニオン２５を転記したものである。ただし、宛先オニオン３４は、パケットが中継される毎に過去の伝送経路を示す情報が削除される。
【００７７】
戻りオニオン３５は、ルート通知パケット３０においては空欄となる。
ルート情報３６は、匿名通信の伝送ルートを示す情報である。ルート情報には、伝送ルート上の各Ｐ２ＰオニオンノードのノードＩＤと固定公開鍵とが、送信Peerの固定公開鍵で暗号化されて設定されている。また、ルート情報３６には、ルート探索パケット２０の返信暗号化用一時鍵情報２６も含まれている。
【００７８】
返信暗号化用一時鍵情報３７は、ルート探索パケット２０の返信暗号化用一時鍵情報２６の内容がそのまま設定される。
図１０は、匿名経路発見機能の処理手順を示すシーケンス図である。以下、図１０に示す処理をステップ番号に沿って説明する。
【００７９】
［ステップＳ２１］送信Peer（Ｐ２Ｐオニオンノード１００）の匿名ルート探索要求部１１２は、アプリケーション１３１からメッセージの送信依頼を受け取る。なお、Ｐ２Ｐオニオンノード１００のユーザは、受信PeerであるＰ２Ｐオニオンノード３００のノードＩＤを予め知っているものとする。
【００８０】
［ステップＳ２２］匿名ルート探索要求部１１２は、ルート探索パケット２０を生成する。ルート探索パケット２０には、受信Peerの公開ＩＤ、送信Peerの匿名ＩＤ、送信Peerの一時鍵（一時公開鍵と一時秘密鍵）等が含まれる。受信Peerの公開ＩＤは、ユーザからの操作入力等に基づいて、アプリケーション１３１が取得する。送信Peerの匿名ＩＤは、匿名ＩＤ生成部１５２から取得する。送信PeerのノードＩＤは、Ｐ２Ｐオニオンノード１００の一般の通信機能（通信プロトコル）から取得する。送信Peerの一時鍵は、一時鍵生成部１５１から取得する。
【００８１】
ルート探索パケット２０の戻りオニオン２５は、送信PeerのノードＩＤと固定公開鍵とから生成される。具体的には、匿名ルート探索要求部１１２は、固定鍵保持部１４２から固定公開鍵１４２ａを取得する。次に、匿名ルート探索要求部１１２は、送信PeerのノードＩＤを、固定公開鍵１４２ａで暗号化する。そして、匿名ルート探索要求部１１２は、暗号化された送信PeerのノードＩＤと、暗号化されていない送信PeerのノードＩＤとの組を、戻りオニオン２５とする。この際、暗号化されていない送信PeerのノードＩＤには、戻りフラグ（本実施の形態では「^」の記号）が付加される。戻りフラグは、送信元に戻るためのルートであることを示している。
【００８２】
返信暗号化用一時鍵情報２６は、送信Peerの一時鍵と固定公開鍵１４２ａとから生成される。具体的には、匿名ルート探索要求部１１２は、送信Peerの一時秘密鍵を固定公開鍵１４２ａで暗号化する。そして、匿名ルート探索要求部１１２は、暗号化された一時秘密鍵と、暗号化されていない一時公開鍵との組を、返信暗号化用一時鍵情報２６とする。
【００８３】
［ステップＳ２３］匿名ルート探索要求部１１２は、ルート探索パケットをブロードキャストで送信する。本実施の形態では、Ｐ２Ｐオニオンノード１００に接続されたノードは、Ｐ２Ｐオニオンノード２００のみであるため、一段目としては、Ｐ２Ｐオニオンノード２００のみに転送される（図２参照）。
【００８４】
［ステップＳ２４］中継Peer（Ｐ２Ｐオニオンノード２００）のルート探索要求中継部２１３は、ルート探索パケット２０を受け取ると、宛先２２に設定されている受信Peerの公開ＩＤを確認する。自分宛のルート探索パケット２０でなければ、パケット中継のためにステップＳ２５に処理を進める。なお、各Ｐ２Ｐオニオンノードは、自身の公開ＩＤについては、予めメモリ等（たとえば、会員証情報保持部）に保持している。
【００８５】
［ステップＳ２５］ルート探索要求中継部２１３は、戻りオニオンを更新する。具体的には、ルート探索要求中継部２１３は、受信したルート探索パケット２０内の戻りオニオン２５に中継Peerの固定公開鍵で暗号化する。そして、ルート探索要求中継部２１３は、暗号化された情報に中継PeerのノードＩＤ（戻りフラグ付き）を付加して、新たな戻りオニオン２５とする。
【００８６】
［ステップＳ２６］ルート探索要求中継部２１３は、ルート探索パケット２０をブロードキャストで送信する。本実施の形態では、Ｐ２Ｐオニオンノード２００に対して、送信Peer（Ｐ２Ｐオニオンノード１００）以外に４台のＰ２Ｐオニオンノード４１０，４２０，４４０，４５０が接続されているため、それら４台のＰ２Ｐオニオンノード４１０，４２０，４４０，４５０に対して、ルート探索パケット２０が送信される（図２参照）。
【００８７】
以後、各Ｐ２Ｐオニオンノード４１０，４２０，４４０，４５０において、ルート探索パケット２０が中継され、最終的に受信Peer（Ｐ２Ｐオニオンノード３００）に到達する。ルート探索パケット２０を受け取った受信Peer（Ｐ２Ｐオニオンノード３００）では、以下の処理が行われる。
【００８８】
［ステップＳ２７］ルート探索要求応答部３１４は、ルート探索パケット２０を受け取ると、宛先２２を確認する。自分宛のルート探索パケット２０であれば、応答するためにステップＳ２８に処理を進める。
【００８９】
なお、各Ｐ２Ｐオニオンノードにおけるルート探索パケット２０の宛先２２の確認機能は、ルート探索要求中継部とルート探索要求応答部とが共用する機能である。すなわち、実際には、ルート探索パケット２０受信時に宛先２２の確認機能が動作し、自分宛であればその旨の確認結果がルート要求応答部に伝えられ、自分宛でなければその旨の確認結果がルート探索要求中継部に伝えられる。
【００９０】
［ステップＳ２８］ルート探索要求応答部３１４は、ルート通知パケット３０を生成する。ルート通知パケット３０には、ルート探索パケット２０に含まれる情報以外に、受信PeerのノードＩＤと固定公開鍵とが含まれる。
【００９１】
具体的には、ルート探索要求応答部３１４は、ルート探索パケット２０の送信元２３の情報をルート通知パケットの３０の宛先３２に設定する。ルート探索要求応答部３１４は、ルート探索パケット２０の宛先２２の情報を、ルート通知パケットの３０の送信元３３に設定する。ルート探索要求応答部３１４は、ルート探索パケット２０の戻りオニオン２５の情報を、ルート通知パケットの３０の宛先オニオン３４に設定する。ルート探索要求応答部３１４は、ルート探索パケット２０の返信暗号化用一時鍵情報２６内の送信Peerの一時公開鍵を用いて、受信PeerのノードＩＤと固定公開鍵との組を暗号化し、ルート情報３６に設定する。そして、ルート探索要求応答部３１４は、ルート探索パケット２０の返信暗号化用一時鍵情報２６の情報を、ルート通知パケットの３０の返信暗号化用一時鍵情報３７に設定する。
【００９２】
ルート探索要求応答部３１４は、生成したルート通知パケット３０を、受信PeerのＰ２Ｐオニオンルータ３２０内の匿名データ送信部３２１に渡し、匿名通信を依頼する。
［ステップＳ２９］匿名データ送信部３２１は、ルート通知パケット３０の送信先をルート探索パケット２０の戻りオニオン２５に基づいて判断し、その送信先へルート通知パケット３０を送信する。具体的には、戻りオニオン２５には、暗号化されていないノードＩＤ（隣のＰ２ＰオニオンノードのノードＩＤ）と、暗号化された情報（隣のＰ２Ｐオニオンノードに到達するまでの経路が暗号化されたもの）が含まれている。そこで、匿名データ送信部３２１は、暗号化されていないノードＩＤのＰ２Ｐオニオンノードに対して、ルート通知パケット３０を送信する。
【００９３】
ルート通知パケット３０は、各Ｐ２Ｐオニオンノードにおいて中継される。Ｐ２Ｐオニオンノード２００における中継処理を以下に示す。
［ステップＳ３０］中継Peer（Ｐ２Ｐオニオンノード２００）のＰ２Ｐオニオンルータ２２０内の匿名データ中継部２２２は、宛先を確認する。なお、各Ｐ２Ｐオニオンノードは、自身が発行した匿名ＩＤのリストを記憶しており、その匿名ＩＤのリストとパケットの宛先とを比較することで、そのパケットが自分宛か否かを判断することができる。他のノード宛のルート通知パケット３０の場合、匿名データ中継部２２２は、処理をステップＳ３１に進める。
【００９４】
［ステップＳ３１］匿名データ中継部２２２は、ルート通知パケット３０の宛先オニオン３４を更新する。具体的には、匿名データ中継部２２２は、宛先オニオン３４に付加されている自分のノードＩＤを削除し、暗号化されている情報を、固定秘密鍵を用いて復号する。そして、匿名データ中継部２２２は、復号した情報を新たな宛先オニオン３４とする。
【００９５】
［ステップＳ３２］匿名データ中継部２２２は、ルート通知パケット３０のルート情報３６を更新する。具体的には、匿名データ中継部２２２は、自分のノードＩＤと固定公開鍵とを送信Peerの一時公開鍵で暗号化し、ルート情報３６にスタックする（本実施の形態では、それまでのルート情報の後に、暗号化した情報を追加格納する）。これにより、ルート情報３６には、伝送経路上の各Ｐ２Ｐオニオンノードに関する情報（ノードＩＤと固定公開鍵）が経路に沿った順番で並べられていく。
【００９６】
［ステップＳ３３］匿名データ中継部２２２は、ルート通知パケット３０の送信先を宛先オニオン３４に基づいて判断し、その送信先へルート通知パケット３０を送信する。具体的には、宛先オニオン３４には、暗号化されていないノードＩＤ（隣のＰ２ＰオニオンノードのノードＩＤ）と、暗号化された情報（隣のＰ２Ｐオニオンノードに到達するまでの経路が暗号化されたのも）が含まれている。そこで、匿名データ中継部２２２は、暗号化されていないノードＩＤのＰ２Ｐオニオンノードに対して、ルート通知パケット３０を送信する。
【００９７】
これにより、ルート通知パケット３０が送信PeerであるＰ２Ｐオニオンノード１００に渡される。Ｐ２Ｐオニオンノード１００では、以下の処理が行われる。
［ステップＳ３４］送信PeerのＰ２Ｐオニオンルータ１２０の匿名データ受信部１２３は、宛先を確認する。他のノード宛のルート通知パケット３０の場合、匿名データ中継部２２２は、処理をステップＳ３１に進める。
【００９８】
なお、各Ｐ２Ｐオニオンノードにおけるルート通知パケットの宛先３２の確認機能は、匿名データ中継部と匿名データ受信部とが共用する機能である。すなわち、実際には、ルート通知パケット３０受信時に宛先３２の確認機能が動作し、自分宛であればその旨の確認結果が匿名データ受信部に伝えられ、自分宛でなければその旨の確認結果が匿名データ中継部に伝えられる。
【００９９】
［ステップＳ３５］匿名データ受信部１２３は、ルート通知パケット３０内のルート情報３６から受信Peerまでの匿名ルート情報を取得し、匿名ルート情報保持部１４３に格納する。具体的には、匿名データ受信部１２３は、返信暗号化用一時鍵情報３７に含まれる暗号化された情報（一時秘密鍵を固定公開鍵１４２ａで暗号化したもの）を、固定秘密鍵１４２ｂを用いて復号する。これにより、一時秘密鍵が取得できる。なお、固定秘密鍵１４２ｂは、固定鍵保持部１４２から取得できる。
【０１００】
次に、匿名データ受信部１２３は、取得した一時秘密鍵を用いて、ルート情報３６に含まれる各情報を復号する。これにより、受信Peerまでの経路上のＰ２ＰオニオンノードのノードＩＤのリスト（経路に沿った順番に並べられている）が得られる。匿名データ受信部１２３は、取得したリストを、匿名ルート情報として匿名ルート情報保持部１４３に格納する。
【０１０１】
以上のようにして、匿名経路の探索が完了する。
図１１は、ルート探索パケットの伝送経路を示す図である。図１１には、送信PeerであるＰ２Ｐオニオンノード１００から出力されたルート探索パケット２０ａが内容の変更を受けながら中継され、受信PeerであるＰ２Ｐオニオンノード３００に到達するまでの様子を示している。
【０１０２】
Ｐ２Ｐオニオンノード１００から出力されたルート探索パケット２０ａを受け取ったＰ２Ｐオニオンノード２００は、戻りオニオンに自分の情報を付加したルート探索パケット２０ｂ，２０ｅを生成し、Ｐ２Ｐオニオンノード４１０やＰ２Ｐオニオンノード４２０等に送信する。
【０１０３】
Ｐ２Ｐオニオンノード４１０は、戻りオニオンに自分の情報を付加したルート探索パケット２０ｃを生成し、Ｐ２Ｐオニオンノード４３０に対して送信する。Ｐ２Ｐオニオンノード４３０は、戻りオニオンに自分の情報を付加したルート探索パケット２０ｄを生成し、Ｐ２Ｐオニオンノード３００に対して送信する。
【０１０４】
同様に、Ｐ２Ｐオニオンノード４２０は、戻りオニオンに自分の情報を付加したルート探索パケット２０ｆを生成し、Ｐ２Ｐオニオンノード４３０に対して送信する。Ｐ２Ｐオニオンノード４３０は、戻りオニオンに自分の情報を付加したルート探索パケット２０ｇを生成し、Ｐ２Ｐオニオンノード３００に対して送信する。
【０１０５】
このように、受信peerであるＰ２Ｐオニオンノード３００には、２つのルート探索パケット２０ｄ，２０ｇが到達する。すなわち、受信Peerには、様々な経路を通ってルート探索パケットが届く。そのため、ルート通知パケットも複数個返信される。
【０１０６】
ここで、Ｐ２Ｐオニオンノード４２０を経由して伝送されるルート探索パケットの内部情報について詳細に説明する。
図１２は、ルート探索パケットの状態遷移状況を示す図である。なお、以下の説明において、鍵の記号の右に括弧で他の情報を示した場合、括弧内の情報をその鍵で暗号化した情報を示す。
【０１０７】
Ｐ２Ｐオニオンノード１００からＰ２Ｐオニオンノード２００に渡されるルート探索パケット２０ａには、メッセージフラグ”ルート探索ブロードキャスト”、宛先（Ｔｏ）”ノード「Ｘ」の公開ＩＤ”、送信元（Ｆｒｏｍ）”ノード「Ａ」の匿名ＩＤ＃１”、宛先オニオン（無し）、戻りオニオン”^Aid+APk(Aid)”、返信暗号化用一時鍵情報”ATPk,APk(ATSk)”が登録されている。ここで、戻りオニオンにおける「＾」は戻りフラグである。Aidは、ノード「Ａ」のノードＩＤである。APkは、ノード「Ａ」の固定公開鍵である。また、返信暗号化用一時鍵情報において、ATPkはノード「Ａ」の一時公開鍵を示し、ATSkはノード「Ａ」の一時秘密鍵を示す。
【０１０８】
Ｐ２Ｐオニオンノード２００からＰ２Ｐオニオンノード４２０に渡されるルート探索パケット２０ｅでは、戻りオニオンが”^Bid+BPk｛^Aid+APk(Aid)｝”に変更されている。ここで、戻りオニオンにおけるBidはノード「Ｂ」のノードＩＤであり、BPkはノード「Ｂ」の固定公開鍵である。このように、ノード「Ｂ」の固定公開鍵でノード「Ａ」の情報を暗号化することで、送信元が隠される。
【０１０９】
Ｐ２Ｐオニオンノード４２０からＰ２Ｐオニオンノード４３０に渡されるルート探索パケット２０ｆでは、戻りオニオンが^Did+DPk｛^Bid+BPk｛^Aid+APk(Aid)｝｝に変更されている。ここで、戻りオニオンにおけるDidはノード「Ｄ」のノードＩＤであり、DPkはノード「Ｄ」の固定公開鍵である。
【０１１０】
Ｐ２Ｐオニオンノード４３０からＰ２Ｐオニオンノード３００に渡されるルート探索パケット２０ｇでは、戻りオニオンが^Eid+EPk｛^Did+DPk｛^Bid+BPk｛^Aid+APk(Aid)｝｝｝に変更されている。ここで、戻りオニオンにおけるEidはノード「Ｅ」のノードＩＤであり、EPkはノード「Ｅ」の固定公開鍵である。
【０１１１】
ルート探索パケット２０ｇを受け取ったＰ２Ｐオニオンノード３００は、宛先によって、自分宛であることを認識できる。しかし、どのような経路で送られてきたのかは、ノード名「Ｅ」のＰ２Ｐオニオンノード４３０から送られてきたことしか認識できない。
【０１１２】
次に、Ｐ２Ｐオニオンノード３００から送信されるルート通知パケットの伝送経路について説明する。
図１３は、ルート通知パケットの伝送経路を示す図である。図１３には、受信PeerであるＰ２Ｐオニオンノード３００から出力された２つのルート通知パケット３０ａ，３０ｅが内容の変更を受けながら中継され、送信PeerであるＰ２Ｐオニオンノード１００に到達するまでの様子を示している。
【０１１３】
Ｐ２Ｐオニオンノード３００から出力されたルート通知パケット３０ａを受け取ったＰ２Ｐオニオンノード４３０は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット３０ｂを生成し、Ｐ２Ｐオニオンノード４１０に送信する。Ｐ２Ｐオニオンノード４１０は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット３０ｃを生成し、Ｐ２Ｐオニオンノード２００に送信する。Ｐ２Ｐオニオンノード２００は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット３０ｄを生成し、Ｐ２Ｐオニオンノード１００に送信する。
【０１１４】
また、Ｐ２Ｐオニオンノード３００から出力されたルート通知パケット３０ｅを受け取ったＰ２Ｐオニオンノード４３０は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット３０ｆを生成し、Ｐ２Ｐオニオンノード４２０に送信する。Ｐ２Ｐオニオンノード４２０は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット３０ｇを生成し、Ｐ２Ｐオニオンノード２００に送信する。Ｐ２Ｐオニオンノード２００は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット３０ｈを生成し、Ｐ２Ｐオニオンノード１００に送信する。
【０１１５】
このように、送信peerであるＰ２Ｐオニオンノード１００には、２つのルート通知パケット３０ｄ，３０ｈが到達する。
ここで、Ｐ２Ｐオニオンノード４２０を経由して伝送されるルート探索パケットの内部情報について詳細に説明する。
【０１１６】
図１４は、ルート通知パケットの状態遷移状況を示す図である。
Ｐ２Ｐオニオンノード３００からＰ２Ｐオニオンノード４３０に渡されるルート通知パケット３０ｅには、メッセージフラグ”ルート探索返信”、宛先（Ｔｏ）”ノード「Ａ」の匿名ＩＤ＃１”、送信元（Ｆｒｏｍ）”ノード「Ｘ」の公開ＩＤ”、宛先オニオン”^Eid+EPk｛^Did+DPk｛^Bid+BPk｛^Aid+APk(Aid)｝｝｝”、戻りオニオン（無し）、ルート情報”ATPk(Xid,XPk)”、返信暗号化用一時鍵情報”ATPk,APk(ATSk)”が登録されている。ここで、ルート情報におけるXidはノード「Ｘ」のノードＩＤであり、XPkはノード「Ｘ」の固定公開鍵である。
【０１１７】
Ｐ２Ｐオニオンノード４３０からＰ２Ｐオニオンノード４２０に渡されるルート通知パケット３０ｆでは、宛先オニオンが^Did+DPk｛^Bid+BPk｛^Aid+APk(Aid)｝｝に変更されている。このように、ノード名「Ｅ」のＰ２Ｐオニオンノード４３０では、自分のノードＩＤを宛先オニオンから削除し、残りの情報を自分の固定秘密鍵で復号している。これにより、ルート通知パケットの伝送経路が秘匿されると共に、次の転送先（Did）のみが認識可能となる。また、ルート情報には、ATPk(Eid,EPk)がスタックされている。
【０１１８】
Ｐ２Ｐオニオンノード４２０からＰ２Ｐオニオンノード２００に渡されるルート通知パケット３０ｇでは、宛先オニオンが^Bid+BPk｛^Aid+APk(Aid)｝に変更されている。また、ルート情報には、ATPk(Did,DPk)がスタックされている。
【０１１９】
Ｐ２Ｐオニオンノード２００からＰ２Ｐオニオンノード１００に渡されるルート通知パケット３０ｈでは、宛先オニオンが^Aid+APk(Aid)に変更されている。また、ルート情報には、ATPk(Bid,BPk)がスタックされている。
【０１２０】
ルート通知パケット３０ｈを受け取ったＰ２Ｐオニオンノード１００は、宛先によって、自分宛であることを認識できる。また、ルート情報を、一時秘密鍵で復号すれば匿名通信の伝送経路（匿名ルート）を認識できる。その結果、匿名ルート情報保持部１４３には、１以上の匿名ルート情報が格納される。
【０１２１】
図１５は、匿名ルート情報保持部内のデータ構造例を示す図である。図１５には、図１３に示した２つの経路で返信されたルート通知パケット３０ｄ，３０ｈに基づいて格納された匿名ルート情報１４３ａ，１４３ｂを示している。
【０１２２】
匿名ルート情報１４３ａには、ルート情報として「Bid→Cid→Eid→Xid」が設定されている。これは、左側のノードＩＤで示されるＰ２Ｐオニオンノード程、送信PeerであるＰ２Ｐオニオンノードに近いことを示している。すなわち、ルート情報で示されるノードＩＤの配列の左から右に向かってパケットを転送することで、ノードＩＤ「Xid」のＰ２Ｐオニオンノード３００にパケットが到達する。
【０１２３】
また、匿名ルート情報１４３ａには、ルート上の各Ｐ２Ｐオニオンノードの固定公開鍵「BPk,CPk,EPk,XPk」が登録されている。この固定公開鍵を利用することで、オニオンルーティングを行うためのパケットの暗号化が可能となる。
【０１２４】
匿名ルート情報１４３ｂには、ルート情報として「Bid→Did→Eid→Xid」と、ルート上の各Ｐ２Ｐオニオンノードの固定公開鍵「BPk,DPk,EPk,XPk」とが登録されている。
［匿名通信機能］
次に、取得した匿名ルート経由の匿名通信機能について説明する。
【０１２５】
図１６は、匿名通信機能を示す概念図である。図１６には、Ｐ２Ｐオニオンノード１００からＰ２Ｐオニオンノード２００を経由してＰ２Ｐオニオンノード３００宛のデータパケット４０を送信する場合の例を示している。このとき、送信PeerであるＰ２Ｐオニオンノード１００では匿名データ送信部１２１が処理を実行し、中継PeerであるＰ２Ｐオニオンノード２００では匿名データ中継部２２２が処理を実行し、受信PeerであるＰ２Ｐオニオンノード３００では匿名データ受信部３２３が処理を実行する。
【０１２６】
図１７は、データパケットのデータ構造例を示す図である。データパケット４０は、メッセージフラグ４１、宛先（Ｔｏ）４２、送信元（Ｆｒｏｍ）４３、宛先オニオン４４、戻り＆バックトラックオニオン４５、およびペイロード４６で構成される。
【０１２７】
メッセージフラグ４１は、パケットの種別を示している。データパケット４０の場合には、データ通信用のパケット（通常のパケット）であることを示す情報が設定される。
宛先４２には、データパケット４０の宛先が設定される。宛先は、受信Peerのの公開ＩＤである。
【０１２８】
送信元４３には、送信peerの匿名ＩＤが設定される。この匿名ＩＤは、匿名ルート探索時とは別のものが使用される。
宛先オニオン４４は、宛先までのルートを示す情報である。これは、匿名ルート情報保持部１４３から取得した匿名ルート情報に基づいて生成される。宛先オニオン４４は、匿名ルート上の各Ｐ２Ｐオニオンノードにおいて、次のノードのみが認識できるように各Ｐ２Ｐオニオンノードの公開鍵でルート情報を暗号化したものである。
【０１２９】
戻り＆バックトラックオニオン４５は、戻りルートおよびバックトラック処理を行うときのルートを示すルート情報である。バックトラック処理は、予定したルートでの通信ができなかった場合に、他のルート経由でパケットを伝送する処理である。
【０１３０】
ペイロード４６は、転送すべきメッセージを受信Peerの固定公開鍵で暗号化したデータを含む実データである。
次に、匿名通信機能の処理手順について説明する。
【０１３１】
図１８は、匿名通信機能の処理手順を示すシーケンス図である。以下、図１８に示す処理をステップ番号に沿って説明する。
［ステップＳ４１］送信PeerであるＰ２Ｐオニオンノード１００のＰ２Ｐオニオンルータ１２０内の匿名データ送信部１２１は、アプリケーション１３１からメッセージ送信の指示を受け付ける。
【０１３２】
［ステップＳ４２］匿名データ送信部１２１は、匿名ルート情報保持部１４３の中から送信相手のＰ２Ｐオニオンノードまでの匿名ルートを選択する。この際、多数の匿名ルートが有る場合、その中から所定の数の匿名ルートを選択する。たとえば、中継するノード数が少ない匿名ルートを優先的に選択する。
【０１３３】
［ステップＳ４３］匿名データ送信部１２１は、データパケット４０を生成する。データパケット４０には、受信Peerの公開ＩＤ、自分の匿名ＩＤ、匿名ルート情報、メッセージデータ、自分の一時鍵（一時公開鍵と一時秘密鍵）、等の情報が含められる。
【０１３４】
具体的には、匿名データ送信部１２１は、メッセージフラグ４１に、データパケットであることを示す情報を設定する。宛先４２には、Ｐ２Ｐオニオンノード３００の公開ＩＤが設定される。送信元４３には、匿名ＩＤが設定される。設定される匿名ＩＤは、匿名ＩＤ生成部１５２によって新たに生成されたものである。
【０１３５】
宛先オニオン４４には、匿名ルート情報保持部１４３から選択した匿名ルート情報が設定される。この際、匿名データ送信部１２１は、匿名ルート情報で示されるノードＩＤを、宛先のノードに近い順に順次選択する。匿名データ送信部１２１は、最初に選択したノードＩＤ（宛先のノードＩＤ）を、次に選択したノードＩＤに対応する固定公開鍵で暗号する。そして、匿名データ送信部１２１は、順次選択するノードＩＤを直前に暗号化されたデータに付与し、その次に選択したノードＩＤに対応する固定公開鍵で全体を暗号化する。そして、匿名データ送信部１２１は、最後に選択されたノードＩＤを、直前に暗号化されたデータに付与し、宛先オニオン４４のデータが生成される。これにより、データパケットを中継する各ノードは、宛先オニオン４４を自分の固定秘密鍵で復号すると、次の送信先のみが認識可能となる。
【０１３６】
戻り＆バックトラックオニオン４５には、自分のノードＩＤと、そのノードＩＤを固定公開鍵１４２ａで暗号化したデータとが設定される。ペイロード４６には、アプリケーション１３１から渡されたメッセージデータに加え、所定の情報を受信Peerの固定公開鍵で暗号化した情報が設定される。暗号化対象の情報は、メッセージヘッダ、自分の一時公開鍵、および自分の一時秘密鍵を固定公開鍵で暗号化した情報である。なお、このときの一時公開鍵と一時秘密鍵とは、一時鍵生成部１５１によって新たに生成されたものである。
【０１３７】
［ステップＳ４４］匿名データ送信部１２１は、データパケットを匿名ルートに従って送信する。この例では、Ｐ２Ｐオニオンノード２００に送信される。
［ステップＳ４５］Ｐ２Ｐオニオンノード２００のＰ２Ｐオニオンルータ２２０内の匿名データ中継部２２２は、データパケット４０を受け取り宛先４２を確認する。他のＰ２Ｐオニオンノード宛であれば、以下の処理を行う。
【０１３８】
［ステップＳ４６］匿名データ中継部２２２は、次のルートを選択する。具体的には、匿名データ中継部２２２は、宛先オニオン４４から自分のノードＩＤを削除する。次に、匿名データ中継部２２２は、残りの情報を自分の固定秘密鍵で復号する。これにより、次の転送先のノードＩＤと匿名ルート情報との組が参照可能となる。転送先を示す１以上のノードＩＤの中から、次の転送先を１つ選択する。選択されなかった匿名ルート情報は、バックトラック処理に使用される。
【０１３９】
［ステップＳ４７］匿名データ中継部２２２は、宛先オニオン４４を更新する。具体的には、ステップＳ４６で選択したノードＩＤと、そのノードＩＤに応じた匿名ルートとの組を宛先オニオン４４に設定する。
【０１４０】
［ステップＳ４８］匿名データ中継部２２２は、戻り＆バックトラックオニオン４５を更新する。
具体的には、匿名データ中継部２２２は、データパケット４０の戻り＆バックトラックオニオン４５に、ステップＳ４６で選択されなかったノードＩＤと匿名ルート情報との組をバックトラック処理用に追加する。そして、匿名データ中継部２２２は、戻り＆バックトラックオニオン４５を自分の固定公開鍵で暗号化すると共に、自分のノードＩＤを戻り＆バックトラックオニオン４５に追加する。
【０１４１】
なお、バックトラック処理用の匿名ルート情報が無い場合、暗号化された情報の内容が戻りオニオンのみとなるため、自分のノードＩＤに戻りフラグ（＾）を付加する。
［ステップＳ４９］匿名データ中継部２２２は、データパケット４０を送信する。データパケット４０の送信先は、宛先オニオン４４の情報のうち参照可能なノードＩＤで示されている隣接のＰ２Ｐオニオンノードである。
【０１４２】
［ステップＳ５０］匿名データ中継部２２２は、送信したデータパケット４０が次のノードに正しく伝送されたかどうかを判断する。正常に伝送されていれば、処理を終了する。伝送に失敗したときは、ステップＳ５１に処理を進める。なお、データパケット４０送信前に、送信先のノードへの通信が途絶えていることが分かっている場合、ステップＳ４９の送信処理を行わずに処理がステップＳ５１に進められる。
【０１４３】
［ステップＳ５１］匿名データ中継部２２２は、別の匿名ルート情報があるか否かを判断する。送信に失敗したデータパケット４０の戻り＆バックトラックオニオン４５に戻りフラグが設定されている場合、別の匿名ルート情報は存在しない（ステップＳ４５で受信したデータパケット４０の宛先オニオン４４に１つしか匿名ルート情報が含まれておらず、そのデータパケット４０の戻り＆バックトラックオニオン４５に戻りフラグが設定されている場合）。別の匿名ルート情報があれば、処理がステップＳ５２に進められる。別の匿名ルート情報がない場合、処理がステップＳ５５に進められる。
【０１４４】
［ステップＳ５２］匿名データ中継部２２２は、データパケット４０の宛先オニオン４４を更新する。具体的には、匿名データ中継部２２２は、ステップＳ５１で復号したデータを、宛先オニオン４４に設定する。
【０１４５】
［ステップＳ５３］匿名データ中継部２２２は、データパケット４０の戻り＆バックトラックオニオン４５を更新する。具体的には、匿名データ中継部２２２は、データパケット４０の戻り＆バックトラックオニオン４５の内容を空(null)にする。
【０１４６】
［ステップＳ５４］匿名データ中継部２２２は、データパケット４０を送信する。このときのデータパケット４０の送信先は、ステップＳ５１で復号された戻りオニオンで認識可能なノードＩＤで示されるＰ２Ｐオニオンノードである。
【０１４７】
［ステップＳ５５］匿名データ中継部２２２は、別の匿名ルート情報が無い場合、データパケットをマルチキャストで、そのとき認識している全ての接続先に送信する。
［ステップＳ５６］データパケット４０が受信PeerであるＰ２Ｐオニオンノード３００に到達すると、Ｐ２Ｐオニオンノード３００のＰ２Ｐオニオンルータ３２０内の匿名データ受信部３２３は宛先を確認する。自分宛のデータパケット４０であれば、処理がステップＳ５７に進められる。
【０１４８】
［ステップＳ５７］匿名データ受信部３２３は、自分の固定秘密鍵でペイロード４６を復号する。
［ステップＳ５８］匿名データ受信部３２３は、復号されたメッセージヘッダ、送信Peerの鍵情報（一時公開鍵と暗号化された一時秘密鍵）、およびメッセージをアプリケーションに渡す。
【０１４９】
このようにして、データパケット４０が受信Peerに送信される。受信Peerから返信手順は、ルート通知パケット３０の送信手順と同様である。
図１９は、データパケットの伝送経路を示す図である。図１９に示すように、Ｐ２Ｐオニオンノード１００から出力されたデータパケット４０ａは、ルート探索時に発見された匿名ルートの伝送経路が存続していれば、中継Peerである複数のＰ２Ｐオニオンノード２００，４１０，４３０で内容の変更を受けながら、受信PeerであるＰ２Ｐオニオンノード３００に渡される。
【０１５０】
データパケット４０ａを受け取ったＰ２Ｐオニオンノード２００は、宛先オニオンと戻り＆バックトラックオニオンとを更新したデータパケット４０ｂを、Ｐ２Ｐオニオンノード４１０に送信する。データパケット４０ｂを受け取ったＰ２Ｐオニオンノード４１０は、宛先オニオンと戻り＆バックトラックオニオンとを更新したデータパケット４０ｃを、Ｐ２Ｐオニオンノード４３０に送信する。データパケット４０ｃを受け取ったＰ２Ｐオニオンノード４３０は、宛先オニオンと戻り＆バックトラックオニオンとを更新したデータパケット４０ｄを、Ｐ２Ｐオニオンノード３００に送信する。
【０１５１】
図２０は、データパケットの状態遷移状況を示す図である。Ｐ２Ｐオニオンノード１００から出力されるデータパケット４０ａは、メッセージフラグ”通常”、宛先（Ｔｏ）”ノード「Ｘ」の公開ＩＤ、送信元（Ｆｒｏｍ）”ノード「Ａ」の匿名ＩＤ＃２、宛先オニオン”Bid+BPk｛Cid+CPk(Eid+EPk(Xid)),Did+DPk(Eid+EPk(Xid))｝”、戻り＆バックトラックオニオン”^Aid+APk(Aid)”、ペイロード”XPk｛メッセージヘッダ、ATPk,APk(ATSk)、メッセージデータ｝”が設定されている。
【０１５２】
Ｐ２Ｐオニオンノード２００からＰ２Ｐオニオンノード４１０に渡されるデータパケット４０ｂでは、宛先オニオンが”Cid+CPk(Eid+EPk(Xid))”に変更され、戻り＆バックトラックオニオンが”Bid+BPk｛^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))｝”に変更されている。
【０１５３】
Ｐ２Ｐオニオンノード４１０からＰ２Ｐオニオンノード４３０に渡されるデータパケット４０ｃでは、宛先オニオンが”Eid+EPk(Xid)”に変更され、戻り＆バックトラックオニオンが”Cid+CPk｛Bid+BPk｛^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))｝｝”に変更されている。
【０１５４】
Ｐ２Ｐオニオンノード４３０からＰ２Ｐオニオンノード３００に渡されるデータパケット４０ｄでは、宛先オニオンが”Xid”に変更され、戻り＆バックトラックオニオンが”Eid+EPk｛Cid+CPk｛Bid+BPk｛^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))｝｝｝”に変更されている。
【０１５５】
このように、中継される毎に、宛先オニオンの暗号化された情報が１回ずつ復号され、その都度、次の転送先が認識可能となる。また、戻り＆バックトラックオニオンには、中継される毎に暗号化され、中継したＰ２ＰオニオンノードのノードＩＤが付加される。
【０１５６】
ここで、Ｐ２Ｐオニオンノード４１０からＰ２Ｐオニオンノード４３０へのデータパケット４０ｃの送信に失敗した場合を考える。そのとき、Ｐ２Ｐオニオンノード４１０では、バックトラック処理が行われる。
【０１５７】
図２１は、バックトラック処理におけるデータパケットの伝送経路を示す図である。Ｐ２Ｐオニオンノード４１０においてデータパケット４０ｃの送信に失敗すると、Ｐ２Ｐオニオンノード４１０からＰ２Ｐオニオンノード２００に対してデータパケット４０ｅが送信される。
【０１５８】
Ｐ２Ｐオニオンノード２００は、別ルートであるＰ２Ｐオニオンノード４２０に対してデータパケット４０ｆを送信する。Ｐ２Ｐオニオンノード４２０はＰ２Ｐオニオンノード４３０に対してデータパケット４０ｇを送信する。Ｐ２Ｐオニオンノード４３０は、Ｐ２Ｐオニオンノード３００に対してデータパケット４０ｈを送信する。
【０１５９】
図２２は、バックトラック転送時のデータパケットの状態遷移状況を示す図である。Ｐ２Ｐオニオンノード４１０から送信されるデータパケット４０ｅは、メッセージフラグ”通常”、宛先（Ｔｏ）”ノード「Ｘ」の公開ＩＤ、送信元（Ｆｒｏｍ）”ノード「Ａ」の匿名ＩＤ＃２、宛先オニオン”Bid+BPk｛^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))｝”、戻り＆バックトラックオニオン”null”、ペイロード“XPk｛メッセージヘッダ、ATPk,APk(ATSk)、メッセージデータ｝”が設定されている。
【０１６０】
この例では、宛先オニオンには、別の匿名ルート情報と、戻り匿名ルート情報とが含まれている。そこで、Ｐ２Ｐオニオンノード２００は、別の匿名ルート情報を以降の宛先オニオンとし、戻り匿名ルート情報は戻り＆バックトラックオニオンに設定する。
【０１６１】
Ｐ２Ｐオニオンノード２００からＰ２Ｐオニオンノード４２０に渡されるデータパケット４０ｆでは、宛先オニオンがDid+DPk(Eid+EPk(Xid))”に変更され、戻り＆バックトラックオニオンが”^Bid+BPk｛^Aid+APk(Aid)｝”に変更されている。戻り＆バックトラックオニオンは、内容が戻り匿名ルート情報のみであるため戻りフラグが設定されている。
【０１６２】
Ｐ２Ｐオニオンノード４２０からＰ２Ｐオニオンノード４３０に渡されるデータパケット４０ｇでは、宛先オニオンが”Eid+EPk(Xid)”に変更され、戻り＆バックトラックオニオンが”^Cid+CPk｛^Bid+BPk｛^Aid+APk(Aid),｝｝”に変更されている。
【０１６３】
Ｐ２Ｐオニオンノード４３０からＰ２Ｐオニオンノード３００に渡されるデータパケット４０ｈでは、宛先オニオンが”Xid”に変更され、戻り＆バックトラックオニオンが”^Eid+EPk｛^Cid+CPk｛^Bid+BPk｛^Aid+APk(Aid)｝｝｝”に変更されている。
【０１６４】
このようにして、バックトラック処理により、最初に選択した匿名ルートでのパケット転送に失敗しても、別の匿名ルート経由でデータパケットを受信Peerに届けることができる。このようなバックトラック処理は再帰的に行われる。すなわち、バックトラックによる伝送にも失敗したときは、さらに別の匿名ルートに基づいてデータパケットのバックトラック処理が行われる。
【０１６５】
ここで、データパケットの宛先オニオンに設定されている全ての匿名ルートにおいて伝送が失敗したときには、マルチキャストでデータパケットが転送される。なお、未送信の匿名ルートの存在の有無は、戻り＆バックトラックオニオン４５の戻りフラグの有無で判断できる。
【０１６６】
たとえば、Ｐ２Ｐオニオンノード４２０からＰ２Ｐオニオンノード４３０へのデータパケット４０ｇの送信に失敗したとき、Ｐ２Ｐオニオンノード４２０では、データパケット４０ｇの戻り＆バックトラックオニオン４５の戻りフラグの有無を判断する。戻りフラグが設定されている場合、他の匿名ルートはない。従って、Ｐ２Ｐオニオンノード４２０は、マルチキャスト送信が必要と判断する。
【０１６７】
図２３は、マルチキャストにおけるデータパケットの伝送経路を示す図である。Ｐ２Ｐオニオンノード４３０においてデータパケット４０ｇの送信に失敗すると、Ｐ２Ｐオニオンノード４２０からそのとき接続されている他のＰ２Ｐオニオンノード４６０（ノード名「Ｆ」）に対してデータパケット４０ｉが送信される。Ｐ２Ｐオニオンノード４６０からＰ２Ｐオニオンノード３００までの経路が存在していれば、データパケットがＰ２Ｐオニオンノード３００に伝送される。この場合でも、送信Peerや受信Peerの匿名性は保たれる。
【０１６８】
以上のようにして、受信Peerは送信peerの匿名性を保持したまま、受信メッセージに対する返信を行うことができる。返信経路は戻り＆バックトラックオニオンに保持されるため、受信Peerは送信peerに対して、戻りオニオン（戻りフラグ「＾」の設定された匿名ルート情報）を用いてオニオンルーティングで返信できる。返信時のオニオンルーティングは、返信用Ｐ２Ｐオニオンルートが経路を１本しか持たないことを除いて送信と同じである。つまり、Ｐ２Ｐオニオンルートを利用したルーティングに失敗した場合には、Ｐ２Ｐマルチキャスト機能によって返信メッセージを到達させる。この場合も匿名性は担保される。
【０１６９】
［匿名掲示板への適用例］
上記のような匿名通信網を電子掲示板に適用すれば、不特定多数のユーザ間の匿名の情報交換を安全に行うことができる。
【０１７０】
図２４は、匿名掲示板に適用した匿名通信網の構成例を示す図である。図２４の例では、匿名通信網１０内のＰ２Ｐオニオンノード３００にデータベース（ＤＢ）３６０が接続され、掲示板システムが構築されている。この掲示板システムは、一般に公開された公開ＤＢである。この場合、Ｐ２Ｐオニオンノード３００の公開ＩＤは、雑誌やインターネットのウェブページ等で公開されている。
【０１７１】
このように、匿名掲示板機能では、匿名通信網１０上のＰ２Ｐオニオンノード３００に匿名掲示板（公開ＤＢ）を実装し、他のＰ２Ｐオニオンノードから、匿名掲示板（公開ＤＢ）に投稿された情報を利用する。
【０１７２】
掲示板（公開ＤＢ）を利用するＰ２Ｐオニオンノードは、主に以下の機能を実現する。
１．匿名の掲示板（公開ＤＢ）に投稿できる。
２．匿名の掲示板（公開ＤＢ）の投稿データを検索できる。
３．匿名の掲示板（公開ＤＢ）に投稿された情報に返信できる。
【０１７３】
掲示板（公開ＤＢ）は、匿名通信網１０上の一Ｐ２Ｐオニオンノード３００上で動作するアプリケーションとして実装される。各Ｐ２Ｐオニオンノードには、この掲示板（公開ＤＢ）ノード（Ｐ２Ｐオニオンノード３００）に上記３つの機能を行うためのメッセージを匿名通信網１０経由で通知するための機能が実装される。掲示板（公開ＤＢ）ノード（Ｐ２Ｐオニオンノード３００）には、匿名通信網１０経由で通知されたメッセージに応答した投稿データの格納、投稿データの検索、検索結果の返信機能が実現される。
【０１７４】
以下に匿名掲示板が実現する機能を示す。
１．投稿された書き込みが誰によってなされたか探知できない（投稿者の秘匿機能）。
２．投稿された情報を指定時間経過すると自動的に消去する。
３．検索が誰によってなされたか探知できない（検索者の秘匿機能）。
４．検索したときに探している投稿データがなかった場合でも目的の投稿データが後から投稿された場合に通知されるよう予約可能とする。
５．検索予約は指定時間経過すると自動的にキャンセルされる。
【０１７５】
なお、ＤＢ３６０としては、たとえば、ＸＳＲ(XML Service Registry)を利用して実現できる。ＸＳＲは株式会社富士通プライムソフトテクノロジが所有するオブジェクトデータベース技術である。本ソフトの機能は以下の通りである。
【０１７６】
・ＵＰ機能：オブジェクトを保存する機能。
オブジェクトの保存期間に有効期限が設定できる。有効期限が切れたオブジェクトはＸＳＲから自動的に消去される。
【０１７７】
・LOOKUP機能：ユーザが探しているオブジェクトを検索できる。
検索を予約する機能を有する。
・RESPONSE機能：予約された検索にマッチする情報があればユーザに非同期に通知する。
【０１７８】
また、メッセージ間のアンリンカビリティを高めるために、Peerノードの匿名識別子、公開鍵の使い捨て管理を以下の様に行う。
１．秘密鍵とランダムな数値を使用して匿名識別子を生成する。その秘密鍵をもつ自分だけがその匿名識別子に対して自分の識別子であるとの確認ができる。
２．一時公開鍵・一時秘密鍵ペアを生成する。その一時秘密鍵を会員証の公開鍵で暗号化し、一時公開鍵といっしょに返信情報としてメッセージに付加する。返信者はその一時公開鍵で返信メッセージを暗号化し返信する。返信された暗号化データは会員証の秘密鍵を持つ自分だけが復号できる。
３．緊急事態において匿名識別子の匿名性を暴くには、上記「匿名通信基盤接続認証機能」での認証局へ匿名識別子（生成に使用したランダム数を含む）を持込み、登録されている全ての秘密鍵総当たりで匿名識別子に含まれるランダム数を使用して匿名識別子を生成し、一致する秘密鍵を特定する。
【０１７９】
以上のような構成の匿名掲示板を匿名通信網１０上に設置することで、匿名のメッセージ交換が可能となる。
たとえば、ユーザは、Ｐ２Ｐオニオンノード１００を用いてＰ２Ｐオニオンノード３００に投稿データを含むデータパケット５１を送信し、ＤＢ３６０に投稿データを登録することができる。投稿データは、たとえば、Ｐ２Ｐオニオンノード４２０を用いて、Ｐ２Ｐオニオンノード３００に検索要求を含むデータパケット５２を送信し、ＤＢ３６０に格納されている投稿データの検索行うことができる。
【０１８０】
Ｐ２Ｐオニオンノード３００は検索要求に応じてＤＢ３６０内の投稿データを検索し、検索結果を取得する。そして、Ｐ２Ｐオニオンノード３００は、Ｐ２Ｐオニオンノード４２０に対して検索結果を含むデータパケット５３を送信する。これにより、Ｐ２Ｐオニオンノード４２０に検索結果が渡される。
【０１８１】
なお、検索結果には、掲示板ノード（Ｐ２Ｐオニオンノード３００）から投稿者のＰ２Ｐオニオンノードまでの匿名ルート情報（戻りオニオン）や、投稿者のＰ２Ｐオニオンノード用の一時公開鍵などが含められる。これにより、検索要求を出力したＰ２Ｐオニオンノードにおいて、投稿者のＰ２Ｐオニオンノードまでの匿名ルート情報を得ることができると共に、投稿者宛のメッセージを投稿者のＰ２Ｐオニオンノードでのみ復号可能な形式で暗号化することができる。
【０１８２】
図２５は、投稿データを含むデータパケットの例を示す図である。Ｐ２Ｐオニオンノード１００で生成されるデータパケット５１ａは、メッセージフラグ”通常”、宛先（Ｔｏ）”ノード「Ｘ」の公開ＩＤ、送信元（Ｆｒｏｍ）”ノード「Ａ」の匿名ＩＤ＃３”、宛先オニオン”Bid+BPk｛Cid+CPk(Eid+EPk(Xid))｝”、戻り＆バックトラックオニオン”^Aid+APk(Aid)”、ペイロード”XPk｛メッセージヘッダ、ATPk,APk(ATSk)、メッセージデータ｝”が設定されている。なお、この例では説明を簡単にするために、宛先オニオンには１つの匿名ルート情報のみが設定されているものとする。
【０１８３】
このようなデータパケット５１ｂが伝送途中で一度も送信に失敗せずにＰ２Ｐオニオンノード３００に到達したとき、そのときのデータパケット５１ｂでは、宛先オニオンが”Xid”に変更され、戻り＆バックトラックオニオンが”Eid+EPk｛Cid+CPk｛Bid+BPk｛^Aid+APk(Aid)｝｝｝”に変更される。
【０１８４】
このようなデータパケット５１ａを受け取ったＰ２Ｐオニオンノード３００は、ＤＢ３６０に所定の情報を格納する。
図２６は、ＤＢ内のデータ構造例を示す図である。ＤＢ３６０内には、匿名ＩＤ、戻りオニオン、返信暗号化用一時鍵情報、及びメッセージデータの項目が、互いに関連付けて登録されている。たとえば、データパケット５１ｂに基づいて、匿名ＩＤの項目には、”ノード「Ａ」の匿名ＩＤ＃３”が登録されている。戻りオニオンには、”Eid+EPk｛Cid+CPk｛Bid+BPk｛^Aid+APk(Aid)｝｝｝”が登録されている。返信暗号化用一時鍵情報には、”ATPk,APk(ATSk)”が登録されている。メッセージデータの項目には、”投稿リクエスト、アップ日時、実データなどの情報が登録されている。
【０１８５】
その後、Ｐ２Ｐオニオンノード４２０からＰ２Ｐオニオンノード３００に対して、検索要求を含むデータパケット５２が送信される。
図２７は、検索要求を含むデータパケットの例を示す図である。Ｐ２Ｐオニオンノード４２０で生成されるデータパケット５２ａは、メッセージフラグ”通常”、宛先（Ｔｏ）”ノード「Ｘ」の公開ＩＤ、送信元（Ｆｒｏｍ）”ノード「Ｄ」の匿名ＩＤ＃４”、宛先オニオン”Eid+EPk(Xid)”、戻り＆バックトラックオニオン”^Did+DPk(Did)”、ペイロード”XPk｛メッセージヘッダ、DTPk,DPk(DTSk)、メッセージデータ｝”が設定されている。
【０１８６】
このようなデータパケット５２ａが伝送途中で一度も送信に失敗せずにＰ２Ｐオニオンノード３００に到達したとき、そのときのデータパケット５２ｂでは、宛先オニオンが”Xid”に変更され、戻り＆バックトラックオニオンが”Eid+EPk｛^Did+DPk(Did)｝”に変更される。ここで、ペイロード内のデータは「メッセージヘッダ、DPk(DTSk)、DTPk、メッセージデータ（検索リクエスト、アップ日時、・・・）」である。
【０１８７】
データパケット５２ｂを受け取ったＰ２Ｐオニオンノード３００は、検索リクエスト（検索キーワード等が示される）の指示に従ってＤＢ３６０を検索する。ここで、検索結果としてデータパケット５１ｂによって投稿された投稿データが得られたものとする。すると、Ｐ２Ｐオニオンノード３００は、Ｐ２Ｐオニオンノード４２０に対して、検索結果を含むデータパケット５３を送信する。
【０１８８】
図２８は、検索結果を含むデータパケットの例を示す図である。Ｐ２Ｐオニオンノード３００で生成されるデータパケット５３ａは、メッセージフラグ”リクエストレスポンス”、宛先（Ｔｏ）”ノード「Ｄ」の匿名ＩＤ＃４”、送信元（Ｆｒｏｍ）”ノード「Ｘ」の公開ＩＤ”、宛先オニオン”Eid+EPk｛^Did+DPk(Did)｝”、戻り＆バックトラックオニオン”^Xid+XPk(Xid)”、ペイロード”XPk｛メッセージヘッダ、DTPk,DPk(DTSk)、メッセージデータ｝”が設定されている。
【０１８９】
このようなデータパケット５３ａが伝送途中で一度も送信に失敗せずにＰ２Ｐオニオンノード３００に到達したとき、そのときのデータパケット５３ｂでは、宛先オニオンが” ^Did+DPk(Did)”に変更され、戻り＆バックトラックオニオンが”Eid+EPk｛^Xid+XPk(Xid)｝”に変更される。ここで、ペイロード内のデータは「メッセージヘッダ、DPk(DTSk)、DTPk｛ノード「Ａ」匿名ＩＤ#３、メッセージデータ（検索リクエスト、アップ日時、・・・）、Eid+EPk｛Cid+CPk｛Bid+BPk｛^Aid+APk(Aid)｝｝｝｝」である。DPk(DTSk)は、Ｐ２Ｐオニオンノード４２０の一時復号鍵を固定公開鍵で暗号化したものである。メッセージデータは、検索結果であり、この例では、データパケット５１ａに含まれる実データである。「Eid+EPk｛Cid+CPk｛Bid+BPk｛^Aid+APk(Aid)｝｝｝」は、Ｐ２Ｐオニオンノード３００からＰ２Ｐオニオンノード１００への戻りオニオンである。また、ノード「Ａ」匿名ＩＤ#３、メッセージデータ、およびEid+EPk｛Cid+CPk｛Bid+BPk｛^Aid+APk(Aid)｝｝（戻りオニオン）は、Ｐ２Ｐオニオンノード４２０の一時公開鍵(DTPk)で暗号化されている。
【０１９０】
ペイロード内の暗号化されたデータを、Ｐ２Ｐオニオンノード４２０の一時秘密鍵(DTSk)で復号することで、検索結果を参照できる。Ｐ２Ｐオニオンノード４２０を使用しているユーザは、検索結果を参照することで、投稿データの内容を確認する。投稿内容に対して応答する場合、ユーザは、Ｐ２Ｐオニオンノード４２０に対して返信メッセージを入力し、その後、返信の指示を入力する。
【０１９１】
すると、Ｐ２Ｐオニオンノード４２０は、投稿データへの返信メッセージを含むデータパケットをＰ２Ｐオニオンノード４３０に対して送信する。
図２９は、返信メッセージを含むデータパケットの例を示す図である。Ｐ２Ｐオニオンノード４２０で生成されるデータパケット６１は、メッセージフラグ”返信”、宛先（Ｔｏ）”ノード「Ａ」の匿名ＩＤ#３”、送信元”ノード「Ｄ」の匿名ＩＤ５”、宛先オニオン”Eid+EPk｛^Xid+XPk(Xid)｝、Eid+EPk｛Cid+CPk｛Bid+BPk｛^Aid+APk(Aid)｝｝｝”、戻り＆バックトラックオニオン”^Did+DPk(Did)”、ペイロード”メッセージヘッダ、DTPk、DPk(DTSk)、ATPk(返信メッセージ）、APk(ATSk)”が設定されている。
【０１９２】
ここで、宛先オニオンは、Ｐ２Ｐオニオンノード４２０からＰ２Ｐオニオンノード３００までの戻りオニオンに、Ｐ２Ｐオニオンノード３００からＰ２Ｐオニオンノード１００までの戻りオニオンを繋いだものである。中継Peerとなる各Ｐ２Ｐオニオンノードは、前に繋げられている戻りオニオンから順に処理する。これにより、Ｐ２Ｐオニオンノード４２０からＰ２Ｐオニオンノード１００までの匿名ルート情報が、宛先オニオンに設定されることとなる。
【０１９３】
また、ペイロード内の「DTPk、DPk(DTSk)」は、返信暗号化用一時鍵情報であり、Ｐ２Ｐオニオンノード１００からＰ２Ｐオニオンノード４２０への返信用に利用される。「ATPk(返信メッセージ）」は、Ｐ２Ｐオニオンノード１００宛の返信メッセージをＰ２Ｐオニオンノード１００の一時公開鍵で暗号化していることを示している。
【０１９４】
図３０は、返信内容を含むデータパケットの伝送経路を示す図である。Ｐ２Ｐオニオンノード４２０からＰ２Ｐオニオンノード４３０に送信されたデータパケット６１は、宛先オニオンや戻り＆バックトラックオニオンの更新を受けながら中継される。Ｐ２Ｐオニオンノード４３０は、データパケット６２をＰ２Ｐオニオンノード３００に送信する。Ｐ２Ｐオニオンノード３００は、データパケット６３をＰ２Ｐオニオンノード４３０に送信する。Ｐ２Ｐオニオンノード４３０は、データパケット６４をＰ２Ｐオニオンノード４１０に送信する。Ｐ２Ｐオニオンノード４１０は、データパケット６５をＰ２Ｐオニオンノード２００に送信する。Ｐ２Ｐオニオンノード２００は、データパケット６６をＰ２Ｐオニオンノード１００に送信する。
【０１９５】
このようにして、掲示板を介したユーザ間の互いに匿名の通信が可能となる。しかも、本発明を適用した掲示板を利用することにより、不特定多数のユーザ間で匿名の情報交換が行える。さらには、ノードＩＤや一時公開鍵が使い捨てであり、所定の手続き毎に別の値が使用されるため、同一投稿者が掲示板へ投稿した複数のメッセージに関して、投稿者の同一性を隠しておくことができる。
【０１９６】
このようなシステムを利用すれば、個人的な情報を交換しても、その情報に対応する個人を悪意のある第三者から隠すことができる。そのため、このような匿名掲示板の技術は、ネットワーク技術を活用した予防医療・ヘルスケアサービス（ＨＣＳ）に応用することができる。ＨＣＳ事業を実現するためには受益者本人の体調、生理データ等、秘匿の必要性の高いデータに対するセキュリティが非常に重要な要因となる。そこで、ＨＣＳに上記匿名掲示板を適用すると、ユーザの生理データを、Ｐ２Ｐオニオンノード１００を用いて匿名のままＰ２Ｐオニオンノード３００に登録することができる。そして、登録された生理データを他のＰ２Ｐオニオンノード４２０を使用する医者が参照し、生活習慣のアドバイス等をユーザに対して匿名のまま送信することができる。
【０１９７】
以上説明したように、本発明の実施の形態によれば、データ送信前に、送信相手までのルートを探索し、そのルート経由で匿名通信を行うための情報（各ノードの公開鍵）を収集する。そのため、ネットワーク構成が動的に変更する場合でも、匿名通信が可能となる。その結果、Ｐ２Ｐネットワークシステムなどの不安定なネットワークシステムにおいて、データを送受信する場合に、送信経路を動的に検索できると共に、送受信者の匿名性を守ることができるという効果を奏する。
【０１９８】
しかも、匿名通信を行う際のデータパケットには、転送中の匿名ルートとは別の匿名ルートの情報が含まれているため、送信に失敗した場合には、別の匿名ルート経由でデータを伝送させることができる。これにより、データ伝送の確実性が増す。
【０１９９】
また、データパケットに含まれる全ての匿名ルート経由でのデータ伝送に失敗した場合には、マルチキャストで他のルート経由でのデータ送信を試みるようにした。そのため、ルート探索時には存在していないが、データ送信時には存在している別のルートが有る場合、そのルート経由で宛先のＰ２Ｐオニオンノードにパケットを送信することが可能となる。
【０２００】
さらに、通信の際の匿名性を高めるために、他のＰ２Ｐオニオンノードに通知する公開鍵を一時公開鍵とし、所定の通信（たとえば、要求の送信とその要求に対する応答）毎に一時公開鍵を作り直すようにしたため、公開鍵の内容を監視しても、複数のパケットが同一のＰ２Ｐオニオンノードから出力されたか否かを同定することができない。
【０２０１】
さらに、匿名ＩＤによって自分宛のパケットであるか否かを判断し、しかも匿名ＩＤを、所定の通信（たとえば、要求の送信とその要求に対する応答）毎に作り直すようにしたため、これらの識別情報によってＰ２Ｐオニオンノードを同定することはできない。
【０２０２】
なお、上記の説明では返信暗号化用一時鍵情報の中に、固定公開鍵で暗号化された送信Peerの一時秘密鍵を含めているが、これは、一時公開鍵と一時秘密鍵との組を送信Peerで管理せずにするための処理である。
【０２０３】
また、上記の処理機能はコンピュータによって実現することができ、その場合、Ｐ２Ｐオニオンノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ(Digital Versatile Disc)、ＤＶＤ−ＲＡＭ(Random Access Memory)、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＣＤ−Ｒ(Recordable)／ＲＷ(ReWritable)などがある。光磁気記録媒体には、ＭＯ(Magneto-Optical disc)などがある。
【０２０４】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２０５】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２０６】
（付記１）  送信元を隠した状態で宛先までの伝送経路探索処理をコンピュータで実行するための匿名ルート探索要求方法において、
宛先識別子で前記宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報とし、
任意に生成した匿名識別子、前記宛先識別子、前記返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成し、
前記ルート探索パケットをブロードキャストで送信する、
ことを特徴とする匿名ルート探索要求方法。
【０２０７】
（付記２）  固定公開鍵と固定秘密鍵との組が予め用意されており、前記固定公開鍵を用いて前記自ノード識別子の暗号化を行うことを特徴とする付記１記載の匿名ルート探索要求方法。
【０２０８】
（付記３）  前記経路探索要求を受け取る毎に一時公開鍵と一時秘密鍵との組を生成し、生成した前記一時公開鍵を返信データ暗号化用の前記送信元公開鍵とすることを特徴とする付記１記載の匿名ルート探索要求方法。
【０２０９】
（付記４）  固定公開鍵と固定秘密鍵との組が予め用意されており、前記一時秘密鍵を前記固定公開鍵で暗号化し、前記ルート探索パケットに含めることを特徴とする付記３記載の匿名ルート探索要求方法。
【０２１０】
（付記５）  前記ルート探索パケットに対する応答として、前記コンピュータから前記宛先までのルート上の各ノードのノード識別子と公開鍵との組を前記送信元公開鍵で暗号化したルート情報を含むルート通知パケットを受け取ると、前記ルート情報を前記送信元公開鍵に対応する送信元秘密鍵で復号し、
復号により得られた前記ノード識別子と前記公開鍵との組を記録装置に格納する、
ことを特徴とする付記１記載の匿名ルート探索要求方法。
【０２１１】
（付記６）  送信元が隠された伝送経路探索要求をコンピュータで中継するための匿名ルート探索要求中継方法において、
前記送信元の匿名識別子、探索相手を指定する宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、前記返信用匿名ルート情報と前記隣接ノード識別子とを自分のみが復号可能な形式で暗号化し、
前記ルート探索パケットに自分の識別情報である自ノード識別子を追加し、
前記ルート探索パケットをブロードキャストで送信する、
ことを特徴とする匿名ルート探索要求中継方法。
【０２１２】
（付記７）  前記ブロードキャストでの送信は、前記ルート探索パケットが入力された伝送路以外の伝送路に対して行うことを特徴とする付記６記載の匿名ルート探索要求中継方法。
【０２１３】
（付記８）  匿名ルート経由の匿名通信をコンピュータで中継するための匿名データ中継方法において、
前記匿名ルート上の次の送信先を示す次ノード識別子と次の送信先から宛先までの匿名ルート情報とが前記コンピュータの公開鍵で暗号化された宛先匿名ルート情報、前記コンピュータから送信元までの伝送ルートを示す戻り匿名ルート情報、および前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子を含むデータパケットを受け取ると、前記宛先匿名ルート情報を前記公開鍵に対応する秘密鍵で復号して、前記次ノード識別子を判別するとともに、復号されたデータを新たな前記宛先匿名ルート情報として前記データパケットに設定し、
前記戻り匿名ルート情報と前記隣接ノード識別子とを前記公開鍵で暗号化して新たな前記戻り匿名ルート情報とし、
前記データパケットに前記コンピュータの自ノード識別子を追加し、
前記次ノード識別子で示されるノードに対して、前記データパケットを送信する、
ことを特徴とする匿名データ中継方法。
【０２１４】
（付記９）  前記宛先匿名ルート情報の復号により隣接ノードのノード識別子と前記匿名ルート情報との組が複数得られたとき、１つの組を新たな前記宛先ルート情報とし、他の組をバックトラック匿名ルート情報として前記戻り匿名ルート情報と合わせて前記公開鍵で暗号化し、暗号化されたデータに前記コンピュータの自ノード識別子を付加して新たな前記戻り匿名ルート情報とすることを特徴とする付記８記載の匿名データ中継方法。
【０２１５】
（付記１０）  前記データパケットの送信に失敗した場合、前記データパケットの前記宛先匿名ルート情報を前記データパケット受信時の前記戻り匿名ルート情報に置き換えて、前記データパケットを送信してきたノードへ前記データパケットを返送することを特徴とする付記８記載の匿名データ中継方法。
【０２１６】
（付記１１）  返送された前記データパケットの前記宛先匿名ルート情報を復号したとき、前記バックトラック匿名ルート情報が含まれていた場合、前記バックトラック匿名ルート情報で示されるノード識別子を前記次ノード識別子とすることを特徴とする付記１０記載の匿名データ中継方法。
【０２１７】
（付記１２）  前記データパケットの送信に失敗した場合、前記宛先匿名ルート情報と前記戻り匿名ルート情報とのいずれにも他の匿名ルート情報がなければ、前記コンピュータに隣接している各ノードに、前記データパケットをマルチキャストで送信することを特徴とする付記８記載の匿名データ中継方法。
【０２１８】
（付記１３）  送信元が隠された伝送経路探索要求に対して宛先となるコンピュータで応答するための匿名ルート探索要求応答方法において、
前記送信元の匿名識別子、前記コンピュータ宛のパケットを示す宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の受信ノード公開鍵とを前記送信元公開鍵で暗号化してルート情報とし、
前記匿名識別子でルート通知先が指定され、前記返信用匿名ルート情報、前記ルート情報、および前記送信元公開鍵を含むルート通知パケットを生成し、
前記隣接ノード識別子で示されるノードに対して前記ルート通知パケットを送信する、
ことを特徴とする匿名ルート探索要求応答方法。
【０２１９】
（付記１４）  宛先までの伝送経路を送信元を隠して探索するための匿名ルート探索要求プログラムにおいて、
コンピュータに、
宛先識別子で前記宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報とし、
任意に生成した匿名識別子、前記宛先識別子、前記返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成し、
前記ルート探索パケットをブロードキャストで送信する、
処理を実行させることを特徴とする匿名ルート探索要求プログラム。
【０２２０】
（付記１５）  送信元が隠された伝送経路探索要求を中継するための匿名ルート探索要求中継プログラムにおいて、
コンピュータに、
前記送信元の匿名識別子、探索相手を指定する宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、前記返信用匿名ルート情報と前記隣接ノード識別子とを自分のみが復号可能な形式で暗号化し、
前記ルート探索パケットに自分の識別情報である自ノード識別子を追加し、
前記ルート探索パケットをブロードキャストで送信する、
処理を実行させることを特徴とする匿名ルート探索要求中継プログラム。
【０２２１】
（付記１６）  匿名ルート経由の匿名通信を中継するための匿名データ中継プログラムにおいて、
コンピュータに、
前記匿名ルート上の次の送信先を示す次ノード識別子と次の送信先から宛先までの匿名ルート情報とが前記コンピュータの公開鍵で暗号化された宛先匿名ルート情報、前記コンピュータから送信元までの伝送ルートを示す戻り匿名ルート情報、および前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子を含むデータパケットを受け取ると、前記宛先匿名ルート情報を前記公開鍵に対応する秘密鍵で復号して、前記次ノード識別子を判別するとともに、復号されたデータを新たな前記宛先匿名ルート情報として前記データパケットに設定し、
前記戻り匿名ルート情報と前記隣接ノード識別子とを前記公開鍵で暗号化して新たな前記戻り匿名ルート情報とし、
前記データパケットに前記コンピュータの自ノード識別子を追加し、
前記次ノード識別子で示されるノードに対して、前記データパケットを送信する、
処理を実行させることを特徴とする匿名データ中継プログラム。
【０２２２】
（付記１７）  送信元が隠された伝送経路探索要求に対して宛先となるコンピュータで応答するための匿名ルート探索要求応答プログラムにおいて、
コンピュータに、
前記送信元の匿名識別子、前記コンピュータ宛のパケットを示す宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の受信ノード公開鍵とを前記送信元公開鍵で暗号化してルート情報とし、
前記匿名識別子でルート通知先が指定され、前記返信用匿名ルート情報、前記ルート情報、および前記送信元公開鍵を含むルート通知パケットを生成し、
前記隣接ノード識別子で示されるノードに対して前記ルート通知パケットを送信する、
処理を実行させることを特徴とする匿名ルート探索要求応答プログラム。
【０２２３】
（付記１８）  宛先までの伝送経路を送信元を隠して探索する匿名ルート探索要求装置において、
宛先識別子で前記宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報を生成する返信用匿名ルート情報生成手段と、
任意に生成した匿名識別子、前記宛先識別子、前記返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成するルート探索パケット生成手段と、
前記ルート探索パケットをブロードキャストで送信する送信手段と、
を有することを特徴とする匿名ルート探索要求装置。
【０２２４】
（付記１９）  送信元が隠された伝送経路探索要求を中継するための匿名ルート探索要求中継装置において、
前記送信元の匿名識別子、探索相手を指定する宛先識別子、前記送信元から自装置までの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、前記返信用匿名ルート情報と前記隣接ノード識別子とを自分のみが復号可能な形式で暗号化する暗号化手段と、
前記ルート探索パケットに自分の識別情報である自ノード識別子を追加する自ノード識別子追加手段と、
前記ルート探索パケットをブロードキャストで送信する送信手段と、
を有することを特徴とする匿名ルート探索要求中継装置。
【０２２５】
（付記２０）  送信元が隠された伝送経路探索要求に対して応答するための匿名ルート探索要求応答装置において、
前記送信元の匿名識別子、自装置宛のパケットを示す宛先識別子、前記送信元から自装置までの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の受信ノード公開鍵とを前記送信元公開鍵で暗号化してルート情報を生成するルート情報生成手段と、
前記匿名識別子でルート通知先が指定され、前記返信用匿名ルート情報、前記ルート情報、および前記送信元公開鍵を含むルート通知パケットを生成するルート通知パケット生成手段と、
前記隣接ノード識別子で示されるノードに対して前記ルート通知パケットを送信する送信手段と、
を有することを特徴とする匿名ルート探索要求応答装置。
【０２２６】
（付記２１）  ネットワーク上で匿名のメッセージ交換を行うための電子掲示板提供装置において、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第１伝送ルートを示す第１戻り匿名ルート情報、および前記第１伝送ルート上で隣接するノードの識別情報である第１隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録する登録手段と、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第２伝送ルートを示す第２戻り匿名ルート情報、前記第２伝送ルート上で隣接するノードの識別情報である第２隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索する検索手段と、
前記検索手段で検出された前記メッセージ、前記第１戻り匿名ルート情報、および前記第１隣接ノード識別子を前記送信元公開鍵で暗号化する暗号化手段と、
暗号化されたデータ、および前記第２戻りルート情報を含む応答データパケットを生成するパケット生成手段と、
前記第２隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する送信手段と、
を有することを特徴とする電子掲示板提供装置。
【０２２７】
（付記２２）  ネットワーク上で匿名のメッセージ交換を行うための電子掲示板へメッセージをコンピュータで投稿するためのメッセージ投稿方法において、
前記メッセージの投稿要求を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻りルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、返信データ暗号化用の送信元公開鍵、および前記メッセージを含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とするメッセージ投稿方法。
【０２２８】
（付記２３）  ネットワーク上で匿名のメッセージ交換を行うための電子掲示板に投稿されたメッセージをコンピュータで検索するための投稿メッセージ検索方法において、
前記メッセージの検索条件を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻りルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、および返信データ暗号化用の送信元公開鍵および前記検索条件を含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とする投稿メッセージ検索方法。
【０２２９】
（付記２４）  ネットワーク上の匿名のメッセージ交換を行うための電子掲示板をコンピュータで提供するための電子掲示板提供プログラムにおいて、
前記コンピュータに、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第１伝送ルートを示す第１戻り匿名ルート情報、および前記第１伝送ルート上で隣接するノードの識別情報である第１隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録し、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第２伝送ルートを示す第２戻り匿名ルート情報、前記第２伝送ルート上で隣接するノードの識別情報である第２隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索し、
検索手段で検出された前記メッセージ、前記第１戻り匿名ルート情報、および前記第１隣接ノード識別子を前記送信元公開鍵で暗号化し、
暗号化されたデータ、および前記第２戻りルート情報を含む応答データパケットを生成し、
前記第２隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する、
処理を実行させることを特徴とする電子掲示板提供プログラム。
【図面の簡単な説明】
【０２３０】
【図１】実施の形態に適用される発明の概念図である。
【図２】匿名通信網の概念図である。
【図３】本発明の実施の形態に用いるＰ２Ｐオニオンノードのハードウェア構成例を示す図である。
【図４】Ｐ２Ｐオニオンノードの概略機能構成を示すブロック図である。
【図５】Ｐ２Ｐオニオンノードの機能構成を示すブロック図である。
【図６】匿名通信基盤接続認証機能を示す図である。
【図７】匿名経路発見機能を示す図である。
【図８】ルート探索パケットのデータ構造例を示す図である。
【図９】ルート通知パケットのデータ構造例を示す図である。
【図１０】匿名経路発見機能の処理手順を示すシーケンス図である。
【図１１】ルート探索パケットの伝送経路を示す図である。
【図１２】ルート探索パケットの状態遷移状況を示す図である。
【図１３】ルート通知パケットの伝送経路を示す図である。
【図１４】ルート通知パケットの状態遷移状況を示す図である。
【図１５】匿名ルート情報保持部内のデータ構造例を示す図である。
【図１６】匿名通信機能を示す概念図である。
【図１７】データパケットのデータ構造例を示す図である。
【図１８】匿名通信機能の処理手順を示すシーケンス図である。
【図１９】データパケットの伝送経路を示す図である。
【図２０】データパケットの状態遷移状況を示す図である。
【図２１】バックトラック処理におけるデータパケットの伝送経路を示す図である。
【図２２】バックトラック転送時のデータパケットの状態遷移状況を示す図である。
【図２３】マルチキャストにおけるデータパケットの伝送経路を示す図である。
【図２４】匿名掲示板に適用した匿名通信網の構成例を示す図である。
【図２５】投稿データを含むデータパケットの例を示す図である。
【図２６】ＤＢ内のデータ構造例を示す図である。
【図２７】検索要求を含むデータパケットの例を示す図である。
【図２８】検索結果を含むデータパケットの例を示す図である。
【図２９】返信メッセージを含むデータパケットの例を示す図である。
【図３０】返信内容を含むデータパケットの伝送経路を示す図である。
【符号の説明】
【０２３１】
１  送信ノード
２  中継ノード
３  受信ノード
１０  匿名通信網
１００、２００，３００，４１０，４２０，４３０，４４０，４５０  Ｐ２Ｐオニオンノード
１１０，２１０，３１０  Ｐ２Ｐオニオンプロキシ
１２０，２２０，３２０  Ｐ２Ｐオニオンルータ
【図１】
2008109717.tif 000003
【図２】
2008109717.tif 000004
【図３】
2008109717.tif 000005
【図４】
2008109717.tif 000006
【図５】
2008109717.tif 000007
【図６】
2008109717.tif 000008
【図７】
2008109717.tif 000009
【図８】
2008109717.tif 000010
【図９】
2008109717.tif 000011
【図１０】
2008109717.tif 000012
【図１１】
2008109717.tif 000013
【図１２】
2008109717.tif 000014
【図１３】
2008109717.tif 000015
【図１４】
2008109717.tif 000016
【図１５】
2008109717.tif 000017
【図１６】
2008109717.tif 000018
【図１７】
2008109717.tif 000019
【図１８】
2008109717.tif 000020
【図１９】
2008109717.tif 000021
【図２０】
2008109717.tif 000022
【図２１】
2008109717.tif 000023
【図２２】
2008109717.tif 000024
【図２３】
2008109717.tif 000025
【図２４】
2008109717.tif 000026
【図２５】
2008109717.tif 000027
【図２６】
2008109717.tif 000028
【図２７】
2008109717.tif 000029
【図２８】
2008109717.tif 000030
【図２９】
2008109717.tif 000031
【図３０】
2008109717.tif 000032