電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラム
【課題】投稿者とその投稿の閲覧者とを匿名のままメッセージの交換ができるようにする。
【解決手段】掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットの内容をデータベースに登録する。メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、検索条件によりデータベース内を検索する。検出されたメッセージ、第1戻り匿名ルート情報、および第1隣接ノード識別子を送信元公開鍵で暗号化して、第2隣接ノード識別子で示されるノードに対して送信する。
【解決手段】掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットの内容をデータベースに登録する。メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、検索条件によりデータベース内を検索する。検出されたメッセージ、第1戻り匿名ルート情報、および第1隣接ノード識別子を送信元公開鍵で暗号化して、第2隣接ノード識別子で示されるノードに対して送信する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータの送受信者の匿名性を守った電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラムに関し、特にオニオンルーティングの手法を利用した電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラムに関する。
【背景技術】
【0002】
インターネットを介した様々な情報交換が盛んに行われている。インターネットにおいて一般に利用されている技術では、伝送されているパケットを解析すれば、パケットのヘッダから受信者が割り出せると共に、パケットルートの追跡も可能である。その結果、インターネットの利用者個人のプライバシが侵害される虞がでてきている。たとえば、匿名の掲示板への投稿内容から、投稿者の使用している端末の所在(IPアドレス等)が分かってしまうと、悪意の第三者から嫌がらせをうける危険性がある。
【0003】
そこで、インターネット上のデータの送受信者の匿名性を守るための様々な技術が考えられている。データの送受信の匿名性を守るためには、全てのデータ通信を暗号化すると共に、パケットの伝送経路も漏洩しないようにする必要がある。
【0004】
パケットの伝送経路の漏洩を防止するには、複数の中継地(ルータ)を活用することにより、通信中のパケットの受信元や転送先等の情報の漏洩をシャットアウトする必要がある。このような伝送経路の漏洩防止手法としては、「オニオンルーティング」と名付けられた手法が知られている(たとえば、特許文献1参照)。
【0005】
オニオンルーティングの手法では、オニオンルータと呼ばれる堅牢で固定的なルータがルーティングを司る。送信端末では、送信相手までの伝送経路を予め決定し、パケットを中継する各オニオンルータの公開鍵を用いてパケットの伝送経路に関する情報を暗号化する。
【0006】
パケットを受信したオニオンルータは、自身の秘密鍵で伝送経路に関する情報を復号する。この復号によりパケットの次の転送先が判別され、オニオンルータは、次のノード(オニオンルータ若しくは受信端末)にパケットを転送する。このように、各オニオンルータでは、次の転送先以外隠蔽された状態を保つことができるため、最終的な受信端末の情報を特定することができない。また、オニオンルータにおいて、パケットを送出する際に、それまでの伝送経路に関する情報をパケットに付加しないことで、送信元の漏洩を防止できる。
【0007】
このように、オニオンルーティングでは、データパケットが目的地までの経路情報を多重に暗号化して保持することで、ルーティングを行う各ノードやネットワーク上でのスキミングを行う者に対して経路情報の一部しか参照できないようにしている。
【特許文献1】米国特許第6、266、704号
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかし、従来のオニオンルーティングの手法は、ノード構成が動的に変化する環境に適用するのが困難である。ノード構成が動的に変化する環境としては、特にP2P(Peer to Peer)ネットワークがある。
【0009】
P2Pネットワークでは、Peerノードのネットワークへの参加やネットワークからの退場は任意である。このため、P2Pネットワーク上で通信を行う場合、その時点で参加しているPeerノード間でP2Pの通信を行いながら、送信相手のPeerノードへパケットを転送する。このようなP2P環境に対してオニオンルーティングの手法を適用する場合、次の問題が生じる。
・ 固定のルータ及び固定の経路を予め決定することができない。
・ ルーティング途中でのノード構成変更に対して動的に対処するのが困難である。
【0010】
このため、P2Pネットワークなど不安定なネットワークで匿名通信を行うには、経路発見を動的且つ匿名的に行い、ルーティング途中でのノード構成変更への対処ができなければならない。
【0011】
本発明はこのような点に鑑みてなされたものであり、投稿者とその投稿の閲覧者とを匿名のままメッセージの交換が可能な電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上記課題を解決するために、ネットワーク上で匿名のメッセージ交換を行うための電子掲示板提供装置において、掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および前記第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録する登録手段と、前記メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、前記第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索する検索手段と、前記検索手段で検出された前記メッセージ、前記第1戻り匿名ルート情報、および前記第1隣接ノード識別子を前記送信元公開鍵で暗号化する暗号化手段と、暗号化されたデータ、および前記第2戻り匿名ルート情報を含む応答データパケットを生成するパケット生成手段と、前記第2隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する送信手段と、を有することを特徴とする電子掲示板提供装置が提供される。
【0013】
これにより、電子掲示板の投稿者を匿名のまま、投稿者のメッセージが他の国名の検索者に通知される。
【発明の効果】
【0014】
本発明では、匿名のルートを介して電子掲示板に投稿されたメッセージに対する検索が行われると、そのメッセージに投稿者の送信元までの匿名ルート情報を付加して検索者に送信するようにしたため、検索者は、匿名の投稿者に対して匿名のルートを介して応答することができる。
【発明を実施するための最良の形態】
【0015】
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
【0016】
[発明の概要]
図1は、実施の形態に適用される発明の概念図である。本発明に係る通信は、送信ノード1、中継ノード2および受信ノード3間で行われる。なお、後述するように、中継ノード2は一般には複数ある。
【0017】
送信ノード1は、宛先識別子で宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報とする(ステップS1)。自分のみが復号可能に暗号化するには、たとえば、送信ノード1のみが有する秘密鍵(復号鍵)に対応する公開鍵(暗号鍵)で暗号化を行う。
【0018】
次に、送信ノード1は、任意に生成した匿名識別子、宛先識別子、返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成する(ステップS2)。匿名識別子は、送信したルート探索パケットと返信されるルート通知パケットとの関連付けに利用される。宛先識別子は、宛先の受信ノード3を特定する情報である。宛先識別子は、予め公開された情報であってもよい。送信元公開鍵は、送信ノード1に対して他のノードが自己のノード識別子等の情報を渡すときに、その情報を暗号化するための暗号鍵である。送信元公開鍵に対応する秘密鍵(復号鍵)は、送信ノード1内に予め格納しておく。
【0019】
最後に、送信ノード1は、ルート探索パケットをブロードキャストで送信する(ステップS3)。
中継ノード2は、ルート探索パケットを受け取ると、返信用匿名ルート情報と隣接ノード識別子とを自分のみが復号可能な形式で暗号化する(ステップS4)。隣接ノード識別子は、ルート探索パケットの伝送ルートにおいて中継ノード2に隣接するノードの識別子である。送信ノード1からルート探索パケットが直接送られたのであれば、送信ノード1のノード識別子が隣接ノード識別子である。また、暗号化処理では、たとえば、中継ノード2が有する秘密鍵(復号鍵)に対応する公開鍵(暗号鍵)で暗号化を行う。返信用匿名ルート情報は、送信ノード若しくは伝送途中に介在した他の中継ノードで既に暗号化されているため、ステップS4の暗号化により、多重に暗号化されることになる。しかも、隣接ノード識別子を含めて暗号化することで、その情報を復号した際に隣接ノードのノード識別子が認識可能となる。
【0020】
次に、中継ノード2は、ルート探索パケットに自分の識別情報である自ノード識別子を追加する(ステップS5)。最後に、中継ノード2は、ルート探索パケットをブロードキャストで送信する(ステップS6)。送信されたルート探索パケットを第三者が解析した場合、中継ノード2から送信されたことは認識できるが、それ以前の転送ルートは知ることができない。
【0021】
受信ノード3は、受信ノード3宛のパケットであることを示す宛先識別子を含むルート探索パケットを受け取ると、自分の識別情報であるノード識別子と、受信ノード3宛て情報の暗号化用の受信ノード公開鍵とを送信元公開鍵で暗号化してルート情報とする(ステップS7)。なお、送信元公開鍵は、ルート探索パケットから取得できる。ノード識別子と受信ノード公開鍵との組を送信元公開鍵で暗号化したため、これらの情報を参照できるのは、送信ノード1のみとなる。
【0022】
次に、受信ノード3は、送信ノード1の匿名識別子でルート通知先が指定され、返信用匿名ルート情報、ルート情報、および送信元公開鍵を含むルート通知パケットを生成する(ステップS8)。最後に、受信ノード3は、隣接ノード識別子で示されるノードに対してルート通知パケットを送信する(ステップS9)。これにより、受信ノード3のノード識別子と公開鍵とを含むルート通知パケットが、返信用匿名ルート情報に従ったルートで返信される。
【0023】
中継ノード2は、ルート通知パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の中継ノード公開鍵とを送信元公開鍵で暗号化してルート情報に追加する(ステップS10)。このように、ルート情報に各中継ノードのノード識別子と公開鍵との組を追加していくことで、匿名ルートを送信ノードに通知することができる。なお、ルート情報にノード識別子と公開鍵との組を追加する際には、情報の追加順が判別できるように所定の規則に従って追加する。たとえば、ルート情報内の元の情報の前に、新たな情報を追加していく。これにより、送信ノード1では、匿名ルート上の各ノードの配列を認識できる。
【0024】
次に、中継ノード2は、返信用匿名ルート情報を復号して、次の送信先となるノードを示す次ノード識別子(ルート探索パケットでの隣接ノード識別子)を取得すると共に、復号されたデータを返信用匿名ルート情報としてルート通知パケットに設定する(ステップS11)。最後に、中継ノード2は、次ノード識別子で示されるノードに対して、ルート通知パケットを送信する(ステップS12)。これにより、ルート情報に中継ノード2のノード識別子と公開鍵とが付加されたルート通知パケットが、返信用匿名ルート情報に従ったルートに転送される。
【0025】
送信ノード1は、ルート通知パケットを受け取ると、ルート情報を送信元公開鍵に対応する送信元秘密鍵で復号する(ステップS13)。そして、送信ノード1は、復号により得られた宛先までのルート上の各ノードの識別子と公開鍵との組を配列を保ったまま記録装置に格納する(ステップS14)。格納された情報を参照すれば、受信ノード3までの匿名ルートを認識することができる。しかも、各ノードの公開鍵を用いれば、ルート上の各ノードに対して、匿名ルート上の次のノードのみを知らせることができる。
【0026】
このようにして、データの送受信者の匿名性を守ると共に、データの送受信経路を動的に検索し、匿名性の高いデータ通信を行うことができる。しかも、ルーティングを実行時にノード構成が変更されても、先に検出された他の匿名ルート経由でデータを伝送することで、データ伝送の確実性を向上させることができる。
【0027】
以上のような匿名通信の機能は、P2Pネットワークにも適用することができる。すなわち、各ノードが匿名ルートを適宜探索できるため、ネットワークの構成が動的に変化する場合であっても、匿名ルートにより送信元を秘匿したままのデータ通信が可能となる。
【0028】
ところで、ルート探索パケットに含める送信元の匿名識別子や送信元公開鍵は、適宜変更することができる。たとえば、ルート探索パケットを送出する度に、異なる匿名識別子、異なる送信元公開鍵を用いることができる。送信元公開鍵を固定化しないことで、送信元の匿名性を高めることができる。すなわち、匿名識別子と公開鍵を常に送信者に対して固定にすると以下の問題が生じてしまう。
1.同一匿名識別子を持つ暗号化されないメッセージ(掲示板への投稿等)が複数集まると、その内容から発信者を特定できる可能性が生じる。
2.暗号化されたメッセージでも、暗号化を解いた人(たとえば、匿名掲示板の投稿に対する返信を投稿者が読む場合)が内容から発信者を特定できる可能性が生じる。
【0029】
そこで、同一送信者の匿名識別子と公開鍵をメッセージ間で固定にしないことで、匿名掲示板を検索するノードや、ネットワーク上のスキミング、或いは、返信メッセージの受信者がメッセージの送信者を特定するのを防ぐことができる。すなわち、ノードの匿名識別子、公開鍵の使い捨て管理を行うことで、メッセージ間のアンリンカビリティ(unlinkability)を高めることができる。これを電子掲示板に利用すれば、データの送信者や受信者の匿名性を守った匿名掲示板機能を実現できる。なお、アンリンカビリティとは、二種類の処理が同じユーザによって行われたことを決定できないことを示す。
【0030】
[発明の実施の形態]
以上のような機能を実現するための具体例を、本発明の実施の形態として以下に説明する。なお、以下の実施の形態は、P2Pネットワークに本発明を適用したものであり、匿名通信機能を、P2PオニオンプロキシとP2Pオニオンルータによって実現する。各P2PオニオンノードのP2PオニオンプロキシによりP2Pオニオンルート発見プロトコルに応じたルート探索が行われる。また、各P2PオニオンノードのP2Pオニオンルータにより、P2Pオニオンルーティングが行われ、P2Pオニオンルート情報が検出される。
【0031】
ここで、P2Pオニオンルート発見プロトコルは、受信側のP2PオニオンノードまでのP2Pオニオンルートを発見するプロトコルである。P2Pオニオンプロキシは、P2PオニオンノードのP2Pオニオンルート発見プロトコルを司る機能単位である。P2Pオニオンルートは、多重に暗号化され、且つ、ノード構成変更に対処可能な経路情報である。P2Pオニオンルータは、P2Pオニオンノードにおいて、P2Pオニオンルート情報に従ったP2Pオニオンルーティング処理を司る機能単位である。
【0032】
図2は、匿名通信網の概念図である。本実施の形態では、P2Pオニオンノード100が、P2Pオニオンノード200,300,410,420,430,440,450を含む匿名通信網10に参加する。ここで、P2Pオニオンノード100のノード名を「A」、P2Pオニオンノード200のノード名を「B」、P2Pオニオンノード410のノード名を「C」、P2Pオニオンノード420のノード名を「D」、P2Pオニオンノード430のノード名を「E」、P2Pオニオンノード440のノード名を「F」、P2Pオニオンノード450のノード名を「G」、P2Pオニオンノード300のノード名を「X」とする。
【0033】
P2Pオニオンノード100は、P2Pオニオンノード200との間でP2P通信接続を行うことで匿名通信網10に参加する。
P2Pオニオンノード200は、他のP2Pオニオンノード410,420,440,450との間でP2P通信接続が確立している。P2Pオニオンノード410は、さらにP2Pオニオンノード430との間でP2P通信接続が確立している。P2Pオニオンノード420も同様に、P2Pオニオンノード430との間でP2P通信接続が確立している。P2Pオニオンノード430は、さらにP2Pオニオンノード300との間でP2P通信接続が確立している。
【0034】
このようにP2Pネットワークでは、多数のP2Pオニオンノード間でのP2P接続の連鎖によって通信網が確立している。
図3は、本発明の実施の形態に用いるP2Pオニオンノードのハードウェア構成例を示す図である。P2Pオニオンノード100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、および通信インタフェース106が接続されている。
【0035】
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションプログラムが格納される。
【0036】
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス107を介してCPU101に送信する。
【0037】
通信インタフェース106は、他のP2Pオニオンノード200との間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3には、P2Pオニオンノード100のハードウェア構成例を示したが、他のP2Pオニオンノード200,300,410,420,430,440,450も同様のハードウェア構成で実現可能である。
【0038】
ところで、本実施の形態に係る各P2Pオニオンノードは、大別して、匿名通信基盤接続認証機能、匿名経路発見機能、および匿名通信機能を有している。
匿名通信基盤接続認証機能は、自身が匿名通信網10に参加するための認証要求機能、および他のP2Pオニオンノードが匿名通信網10に参加する際にそのP2Pオニオンノードを認証するための機能である。匿名通信網10に参加するP2Pオニオンノードに対して接続認証を行うことで、予め会員登録された者以外が匿名通信網10に参加することを防止できる。
【0039】
匿名経路発見機能は、P2Pオニオンルート発見プロトコルに従って、送信相手までの伝送路を探索する機能である。
匿名通信機能は、発見された経路を介して匿名通信を行う機能である。
【0040】
図4は、P2Pオニオンノードの概略機能構成を示すブロック図である。P2Pオニオンノード100は、P2Pオニオンプロキシ110、P2Pオニオンルータ120及び複数のアプリケーション131,132を有している。P2Pオニオンプロキシ110は、匿名通信基盤接続認証機能と匿名経路発見機能とを有している。また、P2Pオニオンルータ120は、匿名通信機能を有している。アプリケーション131,132は、ユーザからの操作入力等に応答して、メッセージの送信や受信を行う。図4の例では、アプリケーション131がメッセージを送信し、アプリケーション132がメッセージを受信する場合を示している。
【0041】
P2Pオニオンノード200には、P2Pオニオンプロキシ210とP2Pオニオンルータ220とを有している。P2Pオニオンプロキシ210は、匿名通信基盤接続認証機能と匿名経路発見機能とを有している。また、P2Pオニオンルータ220は、匿名通信機能を有している。
【0042】
このような機能構成のP2Pオニオンノード100,200間では、たとえば、アプリケーション131,132から匿名通信網10への接続要求が出されると、P2Pオニオンノード100のP2Pオニオンプロキシ110とP2Pオニオンノード200のP2Pオニオンプロキシ210との匿名通信基盤接続認証機能が連携して動作することで、接続相互認証が行われる。
【0043】
また、アプリケーション131がユーザからのメッセージ送信依頼を受け付けると、P2Pオニオンプロキシ110に対して、P2Pオニオンルートの探索と獲得依頼が出される。すると、P2Pオニオンノード100のP2Pオニオンプロキシ110とP2Pオニオンノード200のP2Pオニオンプロキシ210との匿名経路発見機能がP2Pオニオンルート発見プロトコルに従って連携動作することで、ルート探索処理が行われる。ルート探索が終了すると、アプリケーション131からP2Pオニオンルータ120に対して、メッセージ送信要求が出される。すると、P2Pオニオンノード100のP2Pオニオンルータ120とP2Pオニオンノード200のP2Pオニオンルータ220との匿名通信機能が連携して動作することで、オニオンルーティングが行われ、データパケットによってメッセージが送信される。
【0044】
また、他のP2PオニオンノードからP2Pオニオンノード100に対するメッセージがオニオンルーティングによって送られると、P2Pオニオンルータ120からアプリケーション132にメッセージが渡される。
【0045】
次に、本発明の実施の形態を実現するための各P2Pオニオンノードの機能を詳細に説明する。なお、各P2Pオニオンノードは、パケットの発信者(発信Peer)となる場合、パケットの受信者(受信Peer)となる場合、およびパケットのルーディングを行うルータ(中継Peer)となる場合があり得る。従って、各P2Pオニオンノードは、発信Peer、受信Peer、および中継Peerとしての機能を備えている必要がある。
【0046】
図5は、P2Pオニオンノードの機能構成を示すブロック図である。P2Pオニオンノード100は、P2Pオニオンプロキシ110、P2Pオニオンルータ120、アプリケーション131、会員証情報保持部141、固定鍵保持部142、匿名ルート情報保持部143、一時鍵生成部151、および匿名ID生成部152を有している。
【0047】
P2Pオニオンプロキシ110は、匿名通信接続部111、匿名ルート探索要求部112、ルート探索要求中継部113、およびルート探索要求応答部114を有している。
匿名通信接続部111は、匿名通信基板接続認証処理を実行する。具体的には、匿名通信接続部111は、アプリケーション131から匿名基板への接続要求を受け取ると、会員証情報保持部141から会員証情報を取得するとともに、固定鍵保持部142から固定公開鍵142aを取得する。そして、匿名通信接続部111は、接続可能な他のP2Pオニオンノードとの間で、会員証情報と固定公開鍵142aとを用いて接続認証を行う。また、匿名通信接続部111は、他のP2Pオニオンノードから接続認証要求を受け取った際にも、会員証情報と固定公開鍵142aとを用いて接続認証を行う。
【0048】
匿名ルート探索要求部112は、P2Pオニオンルート発見プロトコルにおけるルート探索要求送信機能を実現する。具体的には匿名ルート探索要求部112は、アプリケーション131からP2Pオニオンルート探索要求を受け取ると、固定鍵保持部142から固定公開鍵142aを取得すると共に、一時鍵生成部151から一時公開鍵と一時秘密鍵とを受け取る。また、匿名ルート探索要求部112は、匿名ID生成部152から匿名IDを取得する。そして、匿名ルート探索要求部112は、取得した鍵情報、匿名IDおよび自分のノードID等を含むルート探索パケットを生成し、ブロードバンドで送信する。なお、ノードIDは、公開鍵で暗号化された状態で、ルート探索パケット内に設定される。
【0049】
ルート探索要求中継部113は、P2Pオニオンルート発見プロトコルにおけるルート探索要求の中継機能を実現する。具体的には、他のP2Pオニオンノードからルート探索パケットを受け取ると、ルート探索要求中継部113は、固定鍵保持部142から固定公開鍵142aを取得する。次に、ルート探索要求中継部113は、ルート探索パケット内の戻りオニオン(ルートスタック:それまでの伝送経路を示している)内の情報を自分の固定公開鍵142aで暗号化する。その後、ルート探索要求中継部113は、暗号化された情報に自分のノードIDを付加して、新たな戻りオニオンとする。そして、ルート探索要求中継部113は、ルートスタックが更新されたルート探索パケットを、他のP2Pオニオンノード(ルート探索パケットの送信元を除く)に対して転送する。
【0050】
ルート探索要求応答部114は、P2Pオニオンルート発見プロトコルにおけるルート探索要求への応答機能を実現する。具体的には、ルート探索要求応答部114は、他のP2Pオニオンノードから送られたルート探索パケットにおける探索対象ノードとして自分が指定されていたとき、P2Pオニオンノードに対してルート通知パケットを生成する。応答する際には、ルート探索要求応答部114は、固定鍵保持部142から固定公開鍵142aを取得する。そして、ルート探索要求応答部114は、ルート探索パケット送信元の一時公開鍵を用いて、自分のノードIDと固定公開鍵142aとを暗号化してルート通知パケットに含める。ルート通知パケットは、P2Pオニオンルータ120の匿名データ送信部121を介して送信される。
【0051】
P2Pオニオンルータ120は、匿名データ送信部121、匿名データ中継部122、および匿名データ受信部123を有している。
匿名データ送信部121は、匿名通信機能における匿名通信データパケットの送信機能を実現する。具体的には、匿名データ送信部121は、アプリケーション131等からの要求に応答して匿名通信のデータパケットを生成し、送信する。データパケットには、匿名ルートを示す宛先オニオンが含まれる。宛先オニオンは、匿名経路上の各P2Pオニオンノードの公開鍵を用いて、各P2Pオニオンノードの次の伝送先の情報を暗号化したものである。
【0052】
匿名データ中継部122は、匿名通信機能における匿名通信のデータパケットの中継機能を実現する。具体的には、匿名データ中継部122は、データパケット内の宛先オニオンを自分の秘密鍵で復号し、次の伝送先を確認する。そして、匿名データ中継部122は、次の伝送先へデータパケットを転送する。
【0053】
匿名データ受信部123は、匿名通信機能における匿名通信のデータパケットの受信機能を実現する。具体的には、匿名データ受信部123は、データパケットの送信先の匿名IDが自分のIDであれば、自分宛のデータパケットであることを認識し、アプリケーション131にパケット内のデータ(ペイロード内のデータ)を渡す。なお、匿名データ受信部123は、受信した自分宛のパケットがルート通知パケットの場合、その内容から匿名ルートを認識し、匿名ルート情報保持部143に格納する。
【0054】
アプリケーション131は、ユーザの操作入力等に応じて、匿名通信を利用した各種処理を実行する。
会員証情報保持部141は、匿名通信網10に参加するための所定の手続きを行ったユーザに渡される情報である。会員証情報を有しているP2Pオニオンノードのみが匿名通信網10に参加可能となる。
【0055】
固定鍵保持部142は、予め用意された鍵情報を格納している。鍵情報は、固定公開鍵142aと固定秘密鍵142bである。固定公開鍵142aで暗号化した暗号データは、固定秘密鍵142bでのみ復号することができる。なお、固定公開鍵142aと固定秘密鍵142bとは、会員証情報の一部として供給することもできる。
【0056】
匿名ルート情報保持部143は、探索された匿名ルート情報を格納している。
一時鍵生成部151は、匿名ルート探索要求部112等からの要求に応答して、一時鍵を生成する。一時鍵は、一時公開鍵と一時秘密鍵の組である。
【0057】
匿名ID生成部152は、匿名ルート探索要求部112等からの要求に応答して、匿名IDを生成する。匿名IDは、一連の匿名通信(匿名ルート探索とその匿名ルートによる匿名通信)毎に個別に設定する識別情報である。
【0058】
以上のような構成のP2Pオニオンノード100によって、本実施の形態に係る匿名通信基盤接続認証機能、匿名経路発見機能、および匿名通信機能が実現される。なお、図5には、P2Pオニオンノード100が有する機能の構成要素を示したが、他のP2Pオニオンノード200,300,410,420,430,440,450も同様の機能を有している。
【0059】
[匿名通信基盤接続認証機能]
まず、匿名通信基盤接続認証機能について説明する。
図6は、匿名通信基盤接続認証機能を示す図である。匿名通信基盤接続認証機能は、あるP2Pオニオンノード(図6の例では、P2Pオニオンノード100)が、匿名通信網10に参加するために他のP2Pオニオンノード(図6の例では、P2Pオニオンノード200)へ接続するための機能である。なお、接続先となるP2Pオニオンノード200を、P2Pオニオンノード100から見たときの第1接続ノードと呼ぶこととする。ここでは、P2Pオニオンノード100は、接続する第1接続ノードのIPアドレスやポート番号などを最初から分かっているものとする。たとえば、任意に接続可能なP2Pオニオンノード(第1接続ノードとなり得るP2Pオニオンノード)が予め公開されているものとする。
【0060】
匿名通信網10で使用するP2Pオニオンルートなどの暗号方式にはRSA暗号を用いる。RSA暗号の公開鍵とその証明書(公開鍵証明書)、秘密鍵などは既に各P2Pオニオンノードが持っている状態を前提とする。この公開鍵証明書はこの匿名通信基盤の会員証として使用し、ノードがこの匿名通信基盤に参加するための認証に使用する。公開鍵証明書は、会員証情報保持部141に格納される。
【0061】
ここで、図6を参照して、P2Pオニオンノード100がP2Pオニオンノード200を第1接続ノードとして匿名通信網10に参加するときの匿名通信基盤接続認証機能の処理手順を説明する。このとき、匿名通信基盤接続認証機能は、P2Pオニオンノード100のP2Pオニオンプロキシ110内の匿名通信接続部111と、P2Pオニオンノード200のP2Pオニオンプロキシ210内の匿名通信接続部211との間で実行される。
【0062】
[第1の処理]P2Pオニオンノード100内の匿名通信接続部111は、第1接続ノードを決定する。ここで、第1接続ノードは、隣接するP2Pオニオンノード200であり、複数の場合もある。第1接続ノードとして指定可能なノードのIPアドレス等は、会員証情報保持部141に予め格納しておくことができる。また、第1接続ノードのIPアドレス等を、GUIによりユーザが直接入力することもできる。
【0063】
[第2の処理]新規参加ノード(P2Pオニオンノード100)のP2Pオニオン・プロキシ(P2Pオニオンプロキシ110内の匿名通信接続部111)は第1接続ノード(P2Pオニオンノード200)へ接続を開始して、自分の固定公開鍵142aと会員証141aとを渡す。
【0064】
[第3の処理]接続された第1接続ノード(P2Pオニオンノード200)のP2Pオニオン・プロキシ(P2Pオニオンプロキシ210内の匿名通信接続部211)も自分の固定公開鍵242aと会員証241aを新規参加ノード(P2Pオニオンノード100)へ渡す。
【0065】
[第4の処理]新規参加ノード(P2Pオニオンノード100)および第1接続ノード(P2Pオニオンノード200)の双方で会員証の確認を行う。失効しているなど問題があれば通信を停止する。
【0066】
[第5の処理]新規参加ノード(P2Pオニオンノード100)および第1接続ノード(P2Pオニオンノード200)で、互いに相手の固定公開鍵で暗号化したデータを交換する。そして、双方のノードが、受け取ったデータを復号して相手に返す。各P2Pオニオンノード100,200は、相手方に送信したデータが正しく復号されて戻ってくれば匿名P2Pネットワーク基盤上サービス利用資格保有者と判断する。以後、P2Pオニオンノード100は、P2Pオニオンノード200を介して、匿名通信網10に参加できる。すなわち、P2Pオニオンノード100が匿名通信基盤上のノードとなる。その結果、図2に示すような匿名通信網10が形成される。
【0067】
[匿名経路発見機能]
次に、匿名経路発見機能について、P2Pオニオンノード100からP2Pオニオンノード300に対してデータを送信する際の匿名経路探索例を用いて説明する。
【0068】
図7は、匿名経路発見機能を示す図である。匿名経路発見機能は、P2Pオニオンルート発見プロトコルを用いて、送信Peer(図7の例では、P2Pオニオンノード100)から受信Peer(図7の例では、P2Pオニオンノード300)までのルート情報を匿名的に収集し、収集したルート情報からP2Pオニオンルートを構築する機能である。ルート情報は受信Peerまでの経路を構成する各Peerの識別子と公開鍵からなる。P2Pオニオンルート発見プロトコルは以下の手順でP2Pオニオンルートを構築する。なお、匿名経路発見機能は、各P2Pオニオンノード100,200,300のP2Pオニオンプロキシ110,210,310とP2Pオニオンルータ120,220,320によって実現される。特に送信Peer(P2Pオニオンノード100)ではP2Pオニオンプロキシ110の匿名ルート探索要求部112が処理を実行し、中継Peer(P2Pオニオンノード200)ではP2Pオニオンプロキシ210のルート探索要求中継部213が処理を実行し、受信Peer(P2Pオニオンノード300)では、ルート探索要求応答部314が処理を実行する。
【0069】
ルート探索の際には、送信Peer(P2Pオニオンノード100)からルート探索パケット20がブロードキャスト送信され、そのルート探索パケット20を受信した受信Peer(P2Pオニオンノード300)からルート通知パケット30が返信される。
【0070】
図8は、ルート探索パケットのデータ構造例を示す図である。ルート探索パケット20は、メッセージフラグ21、宛先(To)22、送信元(From)23、宛先オニオン24、戻りオニオン25、および返信暗号化用一時鍵情報26で構成される。
【0071】
メッセージフラグ21は、パケットの種別を示している。ルート探索パケット20の場合には、ルート探索ブロードキャスト送信用のパケットであることを示す情報が設定される。
【0072】
宛先22には、ルート探索パケット20の宛先が設定される。宛先は、予め公開された受信Peerの識別情報(公開ID)等で示される。
送信元23には、送信peerの匿名IDが設定される。
【0073】
宛先オニオン24は、宛先までのルートを示す情報であるが、ルート探索パケット20では空欄となる。
戻りオニオン25には、ルート探索パケット20に対してルート通知パケット30を返信する際の伝送経路が、多重に暗号化されて設定される。
【0074】
返信暗号化用一時鍵情報26は、ルート通知パケット30を返信する際に使用される送信Peerの一時公開鍵と暗号化された一時秘密鍵である。
図9は、ルート通知パケットのデータ構造例を示す図である。ルート通知パケット30は、メッセージフラグ31、宛先(To)32、送信元(From)33、宛先オニオン34、戻りオニオン35、ルート情報36、および返信暗号化用一時鍵情報37で構成される。
【0075】
メッセージフラグ31は、パケットの種別を示している。ルート通知パケット30の場合には、ルート探索返信用のパケットであることを示す情報が設定される。
宛先32には、ルート通知パケット30の宛先が設定される。宛先は、ルート探索パケット20の送信元23に設定されている送信Peerの匿名IDである。
【0076】
送信元33には、受信peerの公開されたID(公開ID)が設定される。
宛先オニオン34は、宛先までのルートを示す情報である。これは、受信Peerにおいてルート探索パケット20の戻りオニオン25を転記したものである。ただし、宛先オニオン34は、パケットが中継される毎に過去の伝送経路を示す情報が削除される。
【0077】
戻りオニオン35は、ルート通知パケット30においては空欄となる。
ルート情報36は、匿名通信の伝送ルートを示す情報である。ルート情報には、伝送ルート上の各P2PオニオンノードのノードIDと固定公開鍵とが、送信Peerの固定公開鍵で暗号化されて設定されている。また、ルート情報36には、ルート探索パケット20の返信暗号化用一時鍵情報26も含まれている。
【0078】
返信暗号化用一時鍵情報37は、ルート探索パケット20の返信暗号化用一時鍵情報26の内容がそのまま設定される。
図10は、匿名経路発見機能の処理手順を示すシーケンス図である。以下、図10に示す処理をステップ番号に沿って説明する。
【0079】
[ステップS21]送信Peer(P2Pオニオンノード100)の匿名ルート探索要求部112は、アプリケーション131からメッセージの送信依頼を受け取る。なお、P2Pオニオンノード100のユーザは、受信PeerであるP2Pオニオンノード300のノードIDを予め知っているものとする。
【0080】
[ステップS22]匿名ルート探索要求部112は、ルート探索パケット20を生成する。ルート探索パケット20には、受信Peerの公開ID、送信Peerの匿名ID、送信Peerの一時鍵(一時公開鍵と一時秘密鍵)等が含まれる。受信Peerの公開IDは、ユーザからの操作入力等に基づいて、アプリケーション131が取得する。送信Peerの匿名IDは、匿名ID生成部152から取得する。送信PeerのノードIDは、P2Pオニオンノード100の一般の通信機能(通信プロトコル)から取得する。送信Peerの一時鍵は、一時鍵生成部151から取得する。
【0081】
ルート探索パケット20の戻りオニオン25は、送信PeerのノードIDと固定公開鍵とから生成される。具体的には、匿名ルート探索要求部112は、固定鍵保持部142から固定公開鍵142aを取得する。次に、匿名ルート探索要求部112は、送信PeerのノードIDを、固定公開鍵142aで暗号化する。そして、匿名ルート探索要求部112は、暗号化された送信PeerのノードIDと、暗号化されていない送信PeerのノードIDとの組を、戻りオニオン25とする。この際、暗号化されていない送信PeerのノードIDには、戻りフラグ(本実施の形態では「^」の記号)が付加される。戻りフラグは、送信元に戻るためのルートであることを示している。
【0082】
返信暗号化用一時鍵情報26は、送信Peerの一時鍵と固定公開鍵142aとから生成される。具体的には、匿名ルート探索要求部112は、送信Peerの一時秘密鍵を固定公開鍵142aで暗号化する。そして、匿名ルート探索要求部112は、暗号化された一時秘密鍵と、暗号化されていない一時公開鍵との組を、返信暗号化用一時鍵情報26とする。
【0083】
[ステップS23]匿名ルート探索要求部112は、ルート探索パケットをブロードキャストで送信する。本実施の形態では、P2Pオニオンノード100に接続されたノードは、P2Pオニオンノード200のみであるため、一段目としては、P2Pオニオンノード200のみに転送される(図2参照)。
【0084】
[ステップS24]中継Peer(P2Pオニオンノード200)のルート探索要求中継部213は、ルート探索パケット20を受け取ると、宛先22に設定されている受信Peerの公開IDを確認する。自分宛のルート探索パケット20でなければ、パケット中継のためにステップS25に処理を進める。なお、各P2Pオニオンノードは、自身の公開IDについては、予めメモリ等(たとえば、会員証情報保持部)に保持している。
【0085】
[ステップS25]ルート探索要求中継部213は、戻りオニオンを更新する。具体的には、ルート探索要求中継部213は、受信したルート探索パケット20内の戻りオニオン25に中継Peerの固定公開鍵で暗号化する。そして、ルート探索要求中継部213は、暗号化された情報に中継PeerのノードID(戻りフラグ付き)を付加して、新たな戻りオニオン25とする。
【0086】
[ステップS26]ルート探索要求中継部213は、ルート探索パケット20をブロードキャストで送信する。本実施の形態では、P2Pオニオンノード200に対して、送信Peer(P2Pオニオンノード100)以外に4台のP2Pオニオンノード410,420,440,450が接続されているため、それら4台のP2Pオニオンノード410,420,440,450に対して、ルート探索パケット20が送信される(図2参照)。
【0087】
以後、各P2Pオニオンノード410,420,440,450において、ルート探索パケット20が中継され、最終的に受信Peer(P2Pオニオンノード300)に到達する。ルート探索パケット20を受け取った受信Peer(P2Pオニオンノード300)では、以下の処理が行われる。
【0088】
[ステップS27]ルート探索要求応答部314は、ルート探索パケット20を受け取ると、宛先22を確認する。自分宛のルート探索パケット20であれば、応答するためにステップS28に処理を進める。
【0089】
なお、各P2Pオニオンノードにおけるルート探索パケット20の宛先22の確認機能は、ルート探索要求中継部とルート探索要求応答部とが共用する機能である。すなわち、実際には、ルート探索パケット20受信時に宛先22の確認機能が動作し、自分宛であればその旨の確認結果がルート要求応答部に伝えられ、自分宛でなければその旨の確認結果がルート探索要求中継部に伝えられる。
【0090】
[ステップS28]ルート探索要求応答部314は、ルート通知パケット30を生成する。ルート通知パケット30には、ルート探索パケット20に含まれる情報以外に、受信PeerのノードIDと固定公開鍵とが含まれる。
【0091】
具体的には、ルート探索要求応答部314は、ルート探索パケット20の送信元23の情報をルート通知パケットの30の宛先32に設定する。ルート探索要求応答部314は、ルート探索パケット20の宛先22の情報を、ルート通知パケットの30の送信元33に設定する。ルート探索要求応答部314は、ルート探索パケット20の戻りオニオン25の情報を、ルート通知パケットの30の宛先オニオン34に設定する。ルート探索要求応答部314は、ルート探索パケット20の返信暗号化用一時鍵情報26内の送信Peerの一時公開鍵を用いて、受信PeerのノードIDと固定公開鍵との組を暗号化し、ルート情報36に設定する。そして、ルート探索要求応答部314は、ルート探索パケット20の返信暗号化用一時鍵情報26の情報を、ルート通知パケットの30の返信暗号化用一時鍵情報37に設定する。
【0092】
ルート探索要求応答部314は、生成したルート通知パケット30を、受信PeerのP2Pオニオンルータ320内の匿名データ送信部321に渡し、匿名通信を依頼する。
[ステップS29]匿名データ送信部321は、ルート通知パケット30の送信先をルート探索パケット20の戻りオニオン25に基づいて判断し、その送信先へルート通知パケット30を送信する。具体的には、戻りオニオン25には、暗号化されていないノードID(隣のP2PオニオンノードのノードID)と、暗号化された情報(隣のP2Pオニオンノードに到達するまでの経路が暗号化されたもの)が含まれている。そこで、匿名データ送信部321は、暗号化されていないノードIDのP2Pオニオンノードに対して、ルート通知パケット30を送信する。
【0093】
ルート通知パケット30は、各P2Pオニオンノードにおいて中継される。P2Pオニオンノード200における中継処理を以下に示す。
[ステップS30]中継Peer(P2Pオニオンノード200)のP2Pオニオンルータ220内の匿名データ中継部222は、宛先を確認する。なお、各P2Pオニオンノードは、自身が発行した匿名IDのリストを記憶しており、その匿名IDのリストとパケットの宛先とを比較することで、そのパケットが自分宛か否かを判断することができる。他のノード宛のルート通知パケット30の場合、匿名データ中継部222は、処理をステップS31に進める。
【0094】
[ステップS31]匿名データ中継部222は、ルート通知パケット30の宛先オニオン34を更新する。具体的には、匿名データ中継部222は、宛先オニオン34に付加されている自分のノードIDを削除し、暗号化されている情報を、固定秘密鍵を用いて復号する。そして、匿名データ中継部222は、復号した情報を新たな宛先オニオン34とする。
【0095】
[ステップS32]匿名データ中継部222は、ルート通知パケット30のルート情報36を更新する。具体的には、匿名データ中継部222は、自分のノードIDと固定公開鍵とを送信Peerの一時公開鍵で暗号化し、ルート情報36にスタックする(本実施の形態では、それまでのルート情報の後に、暗号化した情報を追加格納する)。これにより、ルート情報36には、伝送経路上の各P2Pオニオンノードに関する情報(ノードIDと固定公開鍵)が経路に沿った順番で並べられていく。
【0096】
[ステップS33]匿名データ中継部222は、ルート通知パケット30の送信先を宛先オニオン34に基づいて判断し、その送信先へルート通知パケット30を送信する。具体的には、宛先オニオン34には、暗号化されていないノードID(隣のP2PオニオンノードのノードID)と、暗号化された情報(隣のP2Pオニオンノードに到達するまでの経路が暗号化されたのも)が含まれている。そこで、匿名データ中継部222は、暗号化されていないノードIDのP2Pオニオンノードに対して、ルート通知パケット30を送信する。
【0097】
これにより、ルート通知パケット30が送信PeerであるP2Pオニオンノード100に渡される。P2Pオニオンノード100では、以下の処理が行われる。
[ステップS34]送信PeerのP2Pオニオンルータ120の匿名データ受信部123は、宛先を確認する。他のノード宛のルート通知パケット30の場合、匿名データ中継部222は、処理をステップS31に進める。
【0098】
なお、各P2Pオニオンノードにおけるルート通知パケットの宛先32の確認機能は、匿名データ中継部と匿名データ受信部とが共用する機能である。すなわち、実際には、ルート通知パケット30受信時に宛先32の確認機能が動作し、自分宛であればその旨の確認結果が匿名データ受信部に伝えられ、自分宛でなければその旨の確認結果が匿名データ中継部に伝えられる。
【0099】
[ステップS35]匿名データ受信部123は、ルート通知パケット30内のルート情報36から受信Peerまでの匿名ルート情報を取得し、匿名ルート情報保持部143に格納する。具体的には、匿名データ受信部123は、返信暗号化用一時鍵情報37に含まれる暗号化された情報(一時秘密鍵を固定公開鍵142aで暗号化したもの)を、固定秘密鍵142bを用いて復号する。これにより、一時秘密鍵が取得できる。なお、固定秘密鍵142bは、固定鍵保持部142から取得できる。
【0100】
次に、匿名データ受信部123は、取得した一時秘密鍵を用いて、ルート情報36に含まれる各情報を復号する。これにより、受信Peerまでの経路上のP2PオニオンノードのノードIDのリスト(経路に沿った順番に並べられている)が得られる。匿名データ受信部123は、取得したリストを、匿名ルート情報として匿名ルート情報保持部143に格納する。
【0101】
以上のようにして、匿名経路の探索が完了する。
図11は、ルート探索パケットの伝送経路を示す図である。図11には、送信PeerであるP2Pオニオンノード100から出力されたルート探索パケット20aが内容の変更を受けながら中継され、受信PeerであるP2Pオニオンノード300に到達するまでの様子を示している。
【0102】
P2Pオニオンノード100から出力されたルート探索パケット20aを受け取ったP2Pオニオンノード200は、戻りオニオンに自分の情報を付加したルート探索パケット20b,20eを生成し、P2Pオニオンノード410やP2Pオニオンノード420等に送信する。
【0103】
P2Pオニオンノード410は、戻りオニオンに自分の情報を付加したルート探索パケット20cを生成し、P2Pオニオンノード430に対して送信する。P2Pオニオンノード430は、戻りオニオンに自分の情報を付加したルート探索パケット20dを生成し、P2Pオニオンノード300に対して送信する。
【0104】
同様に、P2Pオニオンノード420は、戻りオニオンに自分の情報を付加したルート探索パケット20fを生成し、P2Pオニオンノード430に対して送信する。P2Pオニオンノード430は、戻りオニオンに自分の情報を付加したルート探索パケット20gを生成し、P2Pオニオンノード300に対して送信する。
【0105】
このように、受信peerであるP2Pオニオンノード300には、2つのルート探索パケット20d,20gが到達する。すなわち、受信Peerには、様々な経路を通ってルート探索パケットが届く。そのため、ルート通知パケットも複数個返信される。
【0106】
ここで、P2Pオニオンノード420を経由して伝送されるルート探索パケットの内部情報について詳細に説明する。
図12は、ルート探索パケットの状態遷移状況を示す図である。なお、以下の説明において、鍵の記号の右に括弧で他の情報を示した場合、括弧内の情報をその鍵で暗号化した情報を示す。
【0107】
P2Pオニオンノード100からP2Pオニオンノード200に渡されるルート探索パケット20aには、メッセージフラグ”ルート探索ブロードキャスト”、宛先(To)”ノード「X」の公開ID”、送信元(From)”ノード「A」の匿名ID#1”、宛先オニオン(無し)、戻りオニオン”^Aid+APk(Aid)”、返信暗号化用一時鍵情報”ATPk,APk(ATSk)”が登録されている。ここで、戻りオニオンにおける「^」は戻りフラグである。Aidは、ノード「A」のノードIDである。APkは、ノード「A」の固定公開鍵である。また、返信暗号化用一時鍵情報において、ATPkはノード「A」の一時公開鍵を示し、ATSkはノード「A」の一時秘密鍵を示す。
【0108】
P2Pオニオンノード200からP2Pオニオンノード420に渡されるルート探索パケット20eでは、戻りオニオンが”^Bid+BPk{^Aid+APk(Aid)}”に変更されている。ここで、戻りオニオンにおけるBidはノード「B」のノードIDであり、BPkはノード「B」の固定公開鍵である。このように、ノード「B」の固定公開鍵でノード「A」の情報を暗号化することで、送信元が隠される。
【0109】
P2Pオニオンノード420からP2Pオニオンノード430に渡されるルート探索パケット20fでは、戻りオニオンが^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}に変更されている。ここで、戻りオニオンにおけるDidはノード「D」のノードIDであり、DPkはノード「D」の固定公開鍵である。
【0110】
P2Pオニオンノード430からP2Pオニオンノード300に渡されるルート探索パケット20gでは、戻りオニオンが^Eid+EPk{^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}}に変更されている。ここで、戻りオニオンにおけるEidはノード「E」のノードIDであり、EPkはノード「E」の固定公開鍵である。
【0111】
ルート探索パケット20gを受け取ったP2Pオニオンノード300は、宛先によって、自分宛であることを認識できる。しかし、どのような経路で送られてきたのかは、ノード名「E」のP2Pオニオンノード430から送られてきたことしか認識できない。
【0112】
次に、P2Pオニオンノード300から送信されるルート通知パケットの伝送経路について説明する。
図13は、ルート通知パケットの伝送経路を示す図である。図13には、受信PeerであるP2Pオニオンノード300から出力された2つのルート通知パケット30a,30eが内容の変更を受けながら中継され、送信PeerであるP2Pオニオンノード100に到達するまでの様子を示している。
【0113】
P2Pオニオンノード300から出力されたルート通知パケット30aを受け取ったP2Pオニオンノード430は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30bを生成し、P2Pオニオンノード410に送信する。P2Pオニオンノード410は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30cを生成し、P2Pオニオンノード200に送信する。P2Pオニオンノード200は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30dを生成し、P2Pオニオンノード100に送信する。
【0114】
また、P2Pオニオンノード300から出力されたルート通知パケット30eを受け取ったP2Pオニオンノード430は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30fを生成し、P2Pオニオンノード420に送信する。P2Pオニオンノード420は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30gを生成し、P2Pオニオンノード200に送信する。P2Pオニオンノード200は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30hを生成し、P2Pオニオンノード100に送信する。
【0115】
このように、送信peerであるP2Pオニオンノード100には、2つのルート通知パケット30d,30hが到達する。
ここで、P2Pオニオンノード420を経由して伝送されるルート探索パケットの内部情報について詳細に説明する。
【0116】
図14は、ルート通知パケットの状態遷移状況を示す図である。
P2Pオニオンノード300からP2Pオニオンノード430に渡されるルート通知パケット30eには、メッセージフラグ”ルート探索返信”、宛先(To)”ノード「A」の匿名ID#1”、送信元(From)”ノード「X」の公開ID”、宛先オニオン”^Eid+EPk{^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}}”、戻りオニオン(無し)、ルート情報”ATPk(Xid,XPk)”、返信暗号化用一時鍵情報”ATPk,APk(ATSk)”が登録されている。ここで、ルート情報におけるXidはノード「X」のノードIDであり、XPkはノード「X」の固定公開鍵である。
【0117】
P2Pオニオンノード430からP2Pオニオンノード420に渡されるルート通知パケット30fでは、宛先オニオンが^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}に変更されている。このように、ノード名「E」のP2Pオニオンノード430では、自分のノードIDを宛先オニオンから削除し、残りの情報を自分の固定秘密鍵で復号している。これにより、ルート通知パケットの伝送経路が秘匿されると共に、次の転送先(Did)のみが認識可能となる。また、ルート情報には、ATPk(Eid,EPk)がスタックされている。
【0118】
P2Pオニオンノード420からP2Pオニオンノード200に渡されるルート通知パケット30gでは、宛先オニオンが^Bid+BPk{^Aid+APk(Aid)}に変更されている。また、ルート情報には、ATPk(Did,DPk)がスタックされている。
【0119】
P2Pオニオンノード200からP2Pオニオンノード100に渡されるルート通知パケット30hでは、宛先オニオンが^Aid+APk(Aid)に変更されている。また、ルート情報には、ATPk(Bid,BPk)がスタックされている。
【0120】
ルート通知パケット30hを受け取ったP2Pオニオンノード100は、宛先によって、自分宛であることを認識できる。また、ルート情報を、一時秘密鍵で復号すれば匿名通信の伝送経路(匿名ルート)を認識できる。その結果、匿名ルート情報保持部143には、1以上の匿名ルート情報が格納される。
【0121】
図15は、匿名ルート情報保持部内のデータ構造例を示す図である。図15には、図13に示した2つの経路で返信されたルート通知パケット30d,30hに基づいて格納された匿名ルート情報143a,143bを示している。
【0122】
匿名ルート情報143aには、ルート情報として「Bid→Cid→Eid→Xid」が設定されている。これは、左側のノードIDで示されるP2Pオニオンノード程、送信PeerであるP2Pオニオンノードに近いことを示している。すなわち、ルート情報で示されるノードIDの配列の左から右に向かってパケットを転送することで、ノードID「Xid」のP2Pオニオンノード300にパケットが到達する。
【0123】
また、匿名ルート情報143aには、ルート上の各P2Pオニオンノードの固定公開鍵「BPk,CPk,EPk,XPk」が登録されている。この固定公開鍵を利用することで、オニオンルーティングを行うためのパケットの暗号化が可能となる。
【0124】
匿名ルート情報143bには、ルート情報として「Bid→Did→Eid→Xid」と、ルート上の各P2Pオニオンノードの固定公開鍵「BPk,DPk,EPk,XPk」とが登録されている。
[匿名通信機能]
次に、取得した匿名ルート経由の匿名通信機能について説明する。
【0125】
図16は、匿名通信機能を示す概念図である。図16には、P2Pオニオンノード100からP2Pオニオンノード200を経由してP2Pオニオンノード300宛のデータパケット40を送信する場合の例を示している。このとき、送信PeerであるP2Pオニオンノード100では匿名データ送信部121が処理を実行し、中継PeerであるP2Pオニオンノード200では匿名データ中継部222が処理を実行し、受信PeerであるP2Pオニオンノード300では匿名データ受信部323が処理を実行する。
【0126】
図17は、データパケットのデータ構造例を示す図である。データパケット40は、メッセージフラグ41、宛先(To)42、送信元(From)43、宛先オニオン44、戻り&バックトラックオニオン45、およびペイロード46で構成される。
【0127】
メッセージフラグ41は、パケットの種別を示している。データパケット40の場合には、データ通信用のパケット(通常のパケット)であることを示す情報が設定される。
宛先42には、データパケット40の宛先が設定される。宛先は、受信Peerのの公開IDである。
【0128】
送信元43には、送信peerの匿名IDが設定される。この匿名IDは、匿名ルート探索時とは別のものが使用される。
宛先オニオン44は、宛先までのルートを示す情報である。これは、匿名ルート情報保持部143から取得した匿名ルート情報に基づいて生成される。宛先オニオン44は、匿名ルート上の各P2Pオニオンノードにおいて、次のノードのみが認識できるように各P2Pオニオンノードの公開鍵でルート情報を暗号化したものである。
【0129】
戻り&バックトラックオニオン45は、戻りルートおよびバックトラック処理を行うときのルートを示すルート情報である。バックトラック処理は、予定したルートでの通信ができなかった場合に、他のルート経由でパケットを伝送する処理である。
【0130】
ペイロード46は、転送すべきメッセージを受信Peerの固定公開鍵で暗号化したデータを含む実データである。
次に、匿名通信機能の処理手順について説明する。
【0131】
図18は、匿名通信機能の処理手順を示すシーケンス図である。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS41]送信PeerであるP2Pオニオンノード100のP2Pオニオンルータ120内の匿名データ送信部121は、アプリケーション131からメッセージ送信の指示を受け付ける。
【0132】
[ステップS42]匿名データ送信部121は、匿名ルート情報保持部143の中から送信相手のP2Pオニオンノードまでの匿名ルートを選択する。この際、多数の匿名ルートが有る場合、その中から所定の数の匿名ルートを選択する。たとえば、中継するノード数が少ない匿名ルートを優先的に選択する。
【0133】
[ステップS43]匿名データ送信部121は、データパケット40を生成する。データパケット40には、受信Peerの公開ID、自分の匿名ID、匿名ルート情報、メッセージデータ、自分の一時鍵(一時公開鍵と一時秘密鍵)、等の情報が含められる。
【0134】
具体的には、匿名データ送信部121は、メッセージフラグ41に、データパケットであることを示す情報を設定する。宛先42には、P2Pオニオンノード300の公開IDが設定される。送信元43には、匿名IDが設定される。設定される匿名IDは、匿名ID生成部152によって新たに生成されたものである。
【0135】
宛先オニオン44には、匿名ルート情報保持部143から選択した匿名ルート情報が設定される。この際、匿名データ送信部121は、匿名ルート情報で示されるノードIDを、宛先のノードに近い順に順次選択する。匿名データ送信部121は、最初に選択したノードID(宛先のノードID)を、次に選択したノードIDに対応する固定公開鍵で暗号する。そして、匿名データ送信部121は、順次選択するノードIDを直前に暗号化されたデータに付与し、その次に選択したノードIDに対応する固定公開鍵で全体を暗号化する。そして、匿名データ送信部121は、最後に選択されたノードIDを、直前に暗号化されたデータに付与し、宛先オニオン44のデータが生成される。これにより、データパケットを中継する各ノードは、宛先オニオン44を自分の固定秘密鍵で復号すると、次の送信先のみが認識可能となる。
【0136】
戻り&バックトラックオニオン45には、自分のノードIDと、そのノードIDを固定公開鍵142aで暗号化したデータとが設定される。ペイロード46には、アプリケーション131から渡されたメッセージデータに加え、所定の情報を受信Peerの固定公開鍵で暗号化した情報が設定される。暗号化対象の情報は、メッセージヘッダ、自分の一時公開鍵、および自分の一時秘密鍵を固定公開鍵で暗号化した情報である。なお、このときの一時公開鍵と一時秘密鍵とは、一時鍵生成部151によって新たに生成されたものである。
【0137】
[ステップS44]匿名データ送信部121は、データパケットを匿名ルートに従って送信する。この例では、P2Pオニオンノード200に送信される。
[ステップS45]P2Pオニオンノード200のP2Pオニオンルータ220内の匿名データ中継部222は、データパケット40を受け取り宛先42を確認する。他のP2Pオニオンノード宛であれば、以下の処理を行う。
【0138】
[ステップS46]匿名データ中継部222は、次のルートを選択する。具体的には、匿名データ中継部222は、宛先オニオン44から自分のノードIDを削除する。次に、匿名データ中継部222は、残りの情報を自分の固定秘密鍵で復号する。これにより、次の転送先のノードIDと匿名ルート情報との組が参照可能となる。転送先を示す1以上のノードIDの中から、次の転送先を1つ選択する。選択されなかった匿名ルート情報は、バックトラック処理に使用される。
【0139】
[ステップS47]匿名データ中継部222は、宛先オニオン44を更新する。具体的には、ステップS46で選択したノードIDと、そのノードIDに応じた匿名ルートとの組を宛先オニオン44に設定する。
【0140】
[ステップS48]匿名データ中継部222は、戻り&バックトラックオニオン45を更新する。
具体的には、匿名データ中継部222は、データパケット40の戻り&バックトラックオニオン45に、ステップS46で選択されなかったノードIDと匿名ルート情報との組をバックトラック処理用に追加する。そして、匿名データ中継部222は、戻り&バックトラックオニオン45を自分の固定公開鍵で暗号化すると共に、自分のノードIDを戻り&バックトラックオニオン45に追加する。
【0141】
なお、バックトラック処理用の匿名ルート情報が無い場合、暗号化された情報の内容が戻りオニオンのみとなるため、自分のノードIDに戻りフラグ(^)を付加する。
[ステップS49]匿名データ中継部222は、データパケット40を送信する。データパケット40の送信先は、宛先オニオン44の情報のうち参照可能なノードIDで示されている隣接のP2Pオニオンノードである。
【0142】
[ステップS50]匿名データ中継部222は、送信したデータパケット40が次のノードに正しく伝送されたかどうかを判断する。正常に伝送されていれば、処理を終了する。伝送に失敗したときは、ステップS51に処理を進める。なお、データパケット40送信前に、送信先のノードへの通信が途絶えていることが分かっている場合、ステップS49の送信処理を行わずに処理がステップS51に進められる。
【0143】
[ステップS51]匿名データ中継部222は、別の匿名ルート情報があるか否かを判断する。送信に失敗したデータパケット40の戻り&バックトラックオニオン45に戻りフラグが設定されている場合、別の匿名ルート情報は存在しない(ステップS45で受信したデータパケット40の宛先オニオン44に1つしか匿名ルート情報が含まれておらず、そのデータパケット40の戻り&バックトラックオニオン45に戻りフラグが設定されている場合)。別の匿名ルート情報があれば、処理がステップS52に進められる。別の匿名ルート情報がない場合、処理がステップS55に進められる。
【0144】
[ステップS52]匿名データ中継部222は、データパケット40の宛先オニオン44を更新する。具体的には、匿名データ中継部222は、ステップS51で復号したデータを、宛先オニオン44に設定する。
【0145】
[ステップS53]匿名データ中継部222は、データパケット40の戻り&バックトラックオニオン45を更新する。具体的には、匿名データ中継部222は、データパケット40の戻り&バックトラックオニオン45の内容を空(null)にする。
【0146】
[ステップS54]匿名データ中継部222は、データパケット40を送信する。このときのデータパケット40の送信先は、ステップS51で復号された戻りオニオンで認識可能なノードIDで示されるP2Pオニオンノードである。
【0147】
[ステップS55]匿名データ中継部222は、別の匿名ルート情報が無い場合、データパケットをマルチキャストで、そのとき認識している全ての接続先に送信する。
[ステップS56]データパケット40が受信PeerであるP2Pオニオンノード300に到達すると、P2Pオニオンノード300のP2Pオニオンルータ320内の匿名データ受信部323は宛先を確認する。自分宛のデータパケット40であれば、処理がステップS57に進められる。
【0148】
[ステップS57]匿名データ受信部323は、自分の固定秘密鍵でペイロード46を復号する。
[ステップS58]匿名データ受信部323は、復号されたメッセージヘッダ、送信Peerの鍵情報(一時公開鍵と暗号化された一時秘密鍵)、およびメッセージをアプリケーションに渡す。
【0149】
このようにして、データパケット40が受信Peerに送信される。受信Peerから返信手順は、ルート通知パケット30の送信手順と同様である。
図19は、データパケットの伝送経路を示す図である。図19に示すように、P2Pオニオンノード100から出力されたデータパケット40aは、ルート探索時に発見された匿名ルートの伝送経路が存続していれば、中継Peerである複数のP2Pオニオンノード200,410,430で内容の変更を受けながら、受信PeerであるP2Pオニオンノード300に渡される。
【0150】
データパケット40aを受け取ったP2Pオニオンノード200は、宛先オニオンと戻り&バックトラックオニオンとを更新したデータパケット40bを、P2Pオニオンノード410に送信する。データパケット40bを受け取ったP2Pオニオンノード410は、宛先オニオンと戻り&バックトラックオニオンとを更新したデータパケット40cを、P2Pオニオンノード430に送信する。データパケット40cを受け取ったP2Pオニオンノード430は、宛先オニオンと戻り&バックトラックオニオンとを更新したデータパケット40dを、P2Pオニオンノード300に送信する。
【0151】
図20は、データパケットの状態遷移状況を示す図である。P2Pオニオンノード100から出力されるデータパケット40aは、メッセージフラグ”通常”、宛先(To)”ノード「X」の公開ID、送信元(From)”ノード「A」の匿名ID#2、宛先オニオン”Bid+BPk{Cid+CPk(Eid+EPk(Xid)),Did+DPk(Eid+EPk(Xid))}”、戻り&バックトラックオニオン”^Aid+APk(Aid)”、ペイロード”XPk{メッセージヘッダ、ATPk,APk(ATSk)、メッセージデータ}”が設定されている。
【0152】
P2Pオニオンノード200からP2Pオニオンノード410に渡されるデータパケット40bでは、宛先オニオンが”Cid+CPk(Eid+EPk(Xid))”に変更され、戻り&バックトラックオニオンが”Bid+BPk{^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))}”に変更されている。
【0153】
P2Pオニオンノード410からP2Pオニオンノード430に渡されるデータパケット40cでは、宛先オニオンが”Eid+EPk(Xid)”に変更され、戻り&バックトラックオニオンが”Cid+CPk{Bid+BPk{^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))}}”に変更されている。
【0154】
P2Pオニオンノード430からP2Pオニオンノード300に渡されるデータパケット40dでは、宛先オニオンが”Xid”に変更され、戻り&バックトラックオニオンが”Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))}}}”に変更されている。
【0155】
このように、中継される毎に、宛先オニオンの暗号化された情報が1回ずつ復号され、その都度、次の転送先が認識可能となる。また、戻り&バックトラックオニオンには、中継される毎に暗号化され、中継したP2PオニオンノードのノードIDが付加される。
【0156】
ここで、P2Pオニオンノード410からP2Pオニオンノード430へのデータパケット40cの送信に失敗した場合を考える。そのとき、P2Pオニオンノード410では、バックトラック処理が行われる。
【0157】
図21は、バックトラック処理におけるデータパケットの伝送経路を示す図である。P2Pオニオンノード410においてデータパケット40cの送信に失敗すると、P2Pオニオンノード410からP2Pオニオンノード200に対してデータパケット40eが送信される。
【0158】
P2Pオニオンノード200は、別ルートであるP2Pオニオンノード420に対してデータパケット40fを送信する。P2Pオニオンノード420はP2Pオニオンノード430に対してデータパケット40gを送信する。P2Pオニオンノード430は、P2Pオニオンノード300に対してデータパケット40hを送信する。
【0159】
図22は、バックトラック転送時のデータパケットの状態遷移状況を示す図である。P2Pオニオンノード410から送信されるデータパケット40eは、メッセージフラグ”通常”、宛先(To)”ノード「X」の公開ID、送信元(From)”ノード「A」の匿名ID#2、宛先オニオン”Bid+BPk{^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))}”、戻り&バックトラックオニオン”null”、ペイロード“XPk{メッセージヘッダ、ATPk,APk(ATSk)、メッセージデータ}”が設定されている。
【0160】
この例では、宛先オニオンには、別の匿名ルート情報と、戻り匿名ルート情報とが含まれている。そこで、P2Pオニオンノード200は、別の匿名ルート情報を以降の宛先オニオンとし、戻り匿名ルート情報は戻り&バックトラックオニオンに設定する。
【0161】
P2Pオニオンノード200からP2Pオニオンノード420に渡されるデータパケット40fでは、宛先オニオンがDid+DPk(Eid+EPk(Xid))”に変更され、戻り&バックトラックオニオンが”^Bid+BPk{^Aid+APk(Aid)}”に変更されている。戻り&バックトラックオニオンは、内容が戻り匿名ルート情報のみであるため戻りフラグが設定されている。
【0162】
P2Pオニオンノード420からP2Pオニオンノード430に渡されるデータパケット40gでは、宛先オニオンが”Eid+EPk(Xid)”に変更され、戻り&バックトラックオニオンが”^Cid+CPk{^Bid+BPk{^Aid+APk(Aid),}}”に変更されている。
【0163】
P2Pオニオンノード430からP2Pオニオンノード300に渡されるデータパケット40hでは、宛先オニオンが”Xid”に変更され、戻り&バックトラックオニオンが”^Eid+EPk{^Cid+CPk{^Bid+BPk{^Aid+APk(Aid)}}}”に変更されている。
【0164】
このようにして、バックトラック処理により、最初に選択した匿名ルートでのパケット転送に失敗しても、別の匿名ルート経由でデータパケットを受信Peerに届けることができる。このようなバックトラック処理は再帰的に行われる。すなわち、バックトラックによる伝送にも失敗したときは、さらに別の匿名ルートに基づいてデータパケットのバックトラック処理が行われる。
【0165】
ここで、データパケットの宛先オニオンに設定されている全ての匿名ルートにおいて伝送が失敗したときには、マルチキャストでデータパケットが転送される。なお、未送信の匿名ルートの存在の有無は、戻り&バックトラックオニオン45の戻りフラグの有無で判断できる。
【0166】
たとえば、P2Pオニオンノード420からP2Pオニオンノード430へのデータパケット40gの送信に失敗したとき、P2Pオニオンノード420では、データパケット40gの戻り&バックトラックオニオン45の戻りフラグの有無を判断する。戻りフラグが設定されている場合、他の匿名ルートはない。従って、P2Pオニオンノード420は、マルチキャスト送信が必要と判断する。
【0167】
図23は、マルチキャストにおけるデータパケットの伝送経路を示す図である。P2Pオニオンノード430においてデータパケット40gの送信に失敗すると、P2Pオニオンノード420からそのとき接続されている他のP2Pオニオンノード460(ノード名「F」)に対してデータパケット40iが送信される。P2Pオニオンノード460からP2Pオニオンノード300までの経路が存在していれば、データパケットがP2Pオニオンノード300に伝送される。この場合でも、送信Peerや受信Peerの匿名性は保たれる。
【0168】
以上のようにして、受信Peerは送信peerの匿名性を保持したまま、受信メッセージに対する返信を行うことができる。返信経路は戻り&バックトラックオニオンに保持されるため、受信Peerは送信peerに対して、戻りオニオン(戻りフラグ「^」の設定された匿名ルート情報)を用いてオニオンルーティングで返信できる。返信時のオニオンルーティングは、返信用P2Pオニオンルートが経路を1本しか持たないことを除いて送信と同じである。つまり、P2Pオニオンルートを利用したルーティングに失敗した場合には、P2Pマルチキャスト機能によって返信メッセージを到達させる。この場合も匿名性は担保される。
【0169】
[匿名掲示板への適用例]
上記のような匿名通信網を電子掲示板に適用すれば、不特定多数のユーザ間の匿名の情報交換を安全に行うことができる。
【0170】
図24は、匿名掲示板に適用した匿名通信網の構成例を示す図である。図24の例では、匿名通信網10内のP2Pオニオンノード300にデータベース(DB)360が接続され、掲示板システムが構築されている。この掲示板システムは、一般に公開された公開DBである。この場合、P2Pオニオンノード300の公開IDは、雑誌やインターネットのウェブページ等で公開されている。
【0171】
このように、匿名掲示板機能では、匿名通信網10上のP2Pオニオンノード300に匿名掲示板(公開DB)を実装し、他のP2Pオニオンノードから、匿名掲示板(公開DB)に投稿された情報を利用する。
【0172】
掲示板(公開DB)を利用するP2Pオニオンノードは、主に以下の機能を実現する。
1.匿名の掲示板(公開DB)に投稿できる。
2.匿名の掲示板(公開DB)の投稿データを検索できる。
3.匿名の掲示板(公開DB)に投稿された情報に返信できる。
【0173】
掲示板(公開DB)は、匿名通信網10上の一P2Pオニオンノード300上で動作するアプリケーションとして実装される。各P2Pオニオンノードには、この掲示板(公開DB)ノード(P2Pオニオンノード300)に上記3つの機能を行うためのメッセージを匿名通信網10経由で通知するための機能が実装される。掲示板(公開DB)ノード(P2Pオニオンノード300)には、匿名通信網10経由で通知されたメッセージに応答した投稿データの格納、投稿データの検索、検索結果の返信機能が実現される。
【0174】
以下に匿名掲示板が実現する機能を示す。
1.投稿された書き込みが誰によってなされたか探知できない(投稿者の秘匿機能)。
2.投稿された情報を指定時間経過すると自動的に消去する。
3.検索が誰によってなされたか探知できない(検索者の秘匿機能)。
4.検索したときに探している投稿データがなかった場合でも目的の投稿データが後から投稿された場合に通知されるよう予約可能とする。
5.検索予約は指定時間経過すると自動的にキャンセルされる。
【0175】
なお、DB360としては、たとえば、XSR(XML Service Registry)を利用して実現できる。XSRは株式会社富士通プライムソフトテクノロジが所有するオブジェクトデータベース技術である。本ソフトの機能は以下の通りである。
【0176】
・UP機能:オブジェクトを保存する機能。
オブジェクトの保存期間に有効期限が設定できる。有効期限が切れたオブジェクトはXSRから自動的に消去される。
【0177】
・LOOKUP機能:ユーザが探しているオブジェクトを検索できる。
検索を予約する機能を有する。
・RESPONSE機能:予約された検索にマッチする情報があればユーザに非同期に通知する。
【0178】
また、メッセージ間のアンリンカビリティを高めるために、Peerノードの匿名識別子、公開鍵の使い捨て管理を以下の様に行う。
1.秘密鍵とランダムな数値を使用して匿名識別子を生成する。その秘密鍵をもつ自分だけがその匿名識別子に対して自分の識別子であるとの確認ができる。
2.一時公開鍵・一時秘密鍵ペアを生成する。その一時秘密鍵を会員証の公開鍵で暗号化し、一時公開鍵といっしょに返信情報としてメッセージに付加する。返信者はその一時公開鍵で返信メッセージを暗号化し返信する。返信された暗号化データは会員証の秘密鍵を持つ自分だけが復号できる。
3.緊急事態において匿名識別子の匿名性を暴くには、上記「匿名通信基盤接続認証機能」での認証局へ匿名識別子(生成に使用したランダム数を含む)を持込み、登録されている全ての秘密鍵総当たりで匿名識別子に含まれるランダム数を使用して匿名識別子を生成し、一致する秘密鍵を特定する。
【0179】
以上のような構成の匿名掲示板を匿名通信網10上に設置することで、匿名のメッセージ交換が可能となる。
たとえば、ユーザは、P2Pオニオンノード100を用いてP2Pオニオンノード300に投稿データを含むデータパケット51を送信し、DB360に投稿データを登録することができる。投稿データは、たとえば、P2Pオニオンノード420を用いて、P2Pオニオンノード300に検索要求を含むデータパケット52を送信し、DB360に格納されている投稿データの検索行うことができる。
【0180】
P2Pオニオンノード300は検索要求に応じてDB360内の投稿データを検索し、検索結果を取得する。そして、P2Pオニオンノード300は、P2Pオニオンノード420に対して検索結果を含むデータパケット53を送信する。これにより、P2Pオニオンノード420に検索結果が渡される。
【0181】
なお、検索結果には、掲示板ノード(P2Pオニオンノード300)から投稿者のP2Pオニオンノードまでの匿名ルート情報(戻りオニオン)や、投稿者のP2Pオニオンノード用の一時公開鍵などが含められる。これにより、検索要求を出力したP2Pオニオンノードにおいて、投稿者のP2Pオニオンノードまでの匿名ルート情報を得ることができると共に、投稿者宛のメッセージを投稿者のP2Pオニオンノードでのみ復号可能な形式で暗号化することができる。
【0182】
図25は、投稿データを含むデータパケットの例を示す図である。P2Pオニオンノード100で生成されるデータパケット51aは、メッセージフラグ”通常”、宛先(To)”ノード「X」の公開ID、送信元(From)”ノード「A」の匿名ID#3”、宛先オニオン”Bid+BPk{Cid+CPk(Eid+EPk(Xid))}”、戻り&バックトラックオニオン”^Aid+APk(Aid)”、ペイロード”XPk{メッセージヘッダ、ATPk,APk(ATSk)、メッセージデータ}”が設定されている。なお、この例では説明を簡単にするために、宛先オニオンには1つの匿名ルート情報のみが設定されているものとする。
【0183】
このようなデータパケット51bが伝送途中で一度も送信に失敗せずにP2Pオニオンノード300に到達したとき、そのときのデータパケット51bでは、宛先オニオンが”Xid”に変更され、戻り&バックトラックオニオンが”Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}}”に変更される。
【0184】
このようなデータパケット51aを受け取ったP2Pオニオンノード300は、DB360に所定の情報を格納する。
図26は、DB内のデータ構造例を示す図である。DB360内には、匿名ID、戻りオニオン、返信暗号化用一時鍵情報、及びメッセージデータの項目が、互いに関連付けて登録されている。たとえば、データパケット51bに基づいて、匿名IDの項目には、”ノード「A」の匿名ID#3”が登録されている。戻りオニオンには、”Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}}”が登録されている。返信暗号化用一時鍵情報には、”ATPk,APk(ATSk)”が登録されている。メッセージデータの項目には、”投稿リクエスト、アップ日時、実データなどの情報が登録されている。
【0185】
その後、P2Pオニオンノード420からP2Pオニオンノード300に対して、検索要求を含むデータパケット52が送信される。
図27は、検索要求を含むデータパケットの例を示す図である。P2Pオニオンノード420で生成されるデータパケット52aは、メッセージフラグ”通常”、宛先(To)”ノード「X」の公開ID、送信元(From)”ノード「D」の匿名ID#4”、宛先オニオン”Eid+EPk(Xid)”、戻り&バックトラックオニオン”^Did+DPk(Did)”、ペイロード”XPk{メッセージヘッダ、DTPk,DPk(DTSk)、メッセージデータ}”が設定されている。
【0186】
このようなデータパケット52aが伝送途中で一度も送信に失敗せずにP2Pオニオンノード300に到達したとき、そのときのデータパケット52bでは、宛先オニオンが”Xid”に変更され、戻り&バックトラックオニオンが”Eid+EPk{^Did+DPk(Did)}”に変更される。ここで、ペイロード内のデータは「メッセージヘッダ、DPk(DTSk)、DTPk、メッセージデータ(検索リクエスト、アップ日時、・・・)」である。
【0187】
データパケット52bを受け取ったP2Pオニオンノード300は、検索リクエスト(検索キーワード等が示される)の指示に従ってDB360を検索する。ここで、検索結果としてデータパケット51bによって投稿された投稿データが得られたものとする。すると、P2Pオニオンノード300は、P2Pオニオンノード420に対して、検索結果を含むデータパケット53を送信する。
【0188】
図28は、検索結果を含むデータパケットの例を示す図である。P2Pオニオンノード300で生成されるデータパケット53aは、メッセージフラグ”リクエストレスポンス”、宛先(To)”ノード「D」の匿名ID#4”、送信元(From)”ノード「X」の公開ID”、宛先オニオン”Eid+EPk{^Did+DPk(Did)}”、戻り&バックトラックオニオン”^Xid+XPk(Xid)”、ペイロード”XPk{メッセージヘッダ、DTPk,DPk(DTSk)、メッセージデータ}”が設定されている。
【0189】
このようなデータパケット53aが伝送途中で一度も送信に失敗せずにP2Pオニオンノード300に到達したとき、そのときのデータパケット53bでは、宛先オニオンが” ^Did+DPk(Did)”に変更され、戻り&バックトラックオニオンが”Eid+EPk{^Xid+XPk(Xid)}”に変更される。ここで、ペイロード内のデータは「メッセージヘッダ、DPk(DTSk)、DTPk{ノード「A」匿名ID#3、メッセージデータ(検索リクエスト、アップ日時、・・・)、Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}}}」である。DPk(DTSk)は、P2Pオニオンノード420の一時復号鍵を固定公開鍵で暗号化したものである。メッセージデータは、検索結果であり、この例では、データパケット51aに含まれる実データである。「Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}}」は、P2Pオニオンノード300からP2Pオニオンノード100への戻りオニオンである。また、ノード「A」匿名ID#3、メッセージデータ、およびEid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}(戻りオニオン)は、P2Pオニオンノード420の一時公開鍵(DTPk)で暗号化されている。
【0190】
ペイロード内の暗号化されたデータを、P2Pオニオンノード420の一時秘密鍵(DTSk)で復号することで、検索結果を参照できる。P2Pオニオンノード420を使用しているユーザは、検索結果を参照することで、投稿データの内容を確認する。投稿内容に対して応答する場合、ユーザは、P2Pオニオンノード420に対して返信メッセージを入力し、その後、返信の指示を入力する。
【0191】
すると、P2Pオニオンノード420は、投稿データへの返信メッセージを含むデータパケットをP2Pオニオンノード430に対して送信する。
図29は、返信メッセージを含むデータパケットの例を示す図である。P2Pオニオンノード420で生成されるデータパケット61は、メッセージフラグ”返信”、宛先(To)”ノード「A」の匿名ID#3”、送信元”ノード「D」の匿名ID5”、宛先オニオン”Eid+EPk{^Xid+XPk(Xid)}、Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}}”、戻り&バックトラックオニオン”^Did+DPk(Did)”、ペイロード”メッセージヘッダ、DTPk、DPk(DTSk)、ATPk(返信メッセージ)、APk(ATSk)”が設定されている。
【0192】
ここで、宛先オニオンは、P2Pオニオンノード420からP2Pオニオンノード300までの戻りオニオンに、P2Pオニオンノード300からP2Pオニオンノード100までの戻りオニオンを繋いだものである。中継Peerとなる各P2Pオニオンノードは、前に繋げられている戻りオニオンから順に処理する。これにより、P2Pオニオンノード420からP2Pオニオンノード100までの匿名ルート情報が、宛先オニオンに設定されることとなる。
【0193】
また、ペイロード内の「DTPk、DPk(DTSk)」は、返信暗号化用一時鍵情報であり、P2Pオニオンノード100からP2Pオニオンノード420への返信用に利用される。「ATPk(返信メッセージ)」は、P2Pオニオンノード100宛の返信メッセージをP2Pオニオンノード100の一時公開鍵で暗号化していることを示している。
【0194】
図30は、返信内容を含むデータパケットの伝送経路を示す図である。P2Pオニオンノード420からP2Pオニオンノード430に送信されたデータパケット61は、宛先オニオンや戻り&バックトラックオニオンの更新を受けながら中継される。P2Pオニオンノード430は、データパケット62をP2Pオニオンノード300に送信する。P2Pオニオンノード300は、データパケット63をP2Pオニオンノード430に送信する。P2Pオニオンノード430は、データパケット64をP2Pオニオンノード410に送信する。P2Pオニオンノード410は、データパケット65をP2Pオニオンノード200に送信する。P2Pオニオンノード200は、データパケット66をP2Pオニオンノード100に送信する。
【0195】
このようにして、掲示板を介したユーザ間の互いに匿名の通信が可能となる。しかも、本発明を適用した掲示板を利用することにより、不特定多数のユーザ間で匿名の情報交換が行える。さらには、ノードIDや一時公開鍵が使い捨てであり、所定の手続き毎に別の値が使用されるため、同一投稿者が掲示板へ投稿した複数のメッセージに関して、投稿者の同一性を隠しておくことができる。
【0196】
このようなシステムを利用すれば、個人的な情報を交換しても、その情報に対応する個人を悪意のある第三者から隠すことができる。そのため、このような匿名掲示板の技術は、ネットワーク技術を活用した予防医療・ヘルスケアサービス(HCS)に応用することができる。HCS事業を実現するためには受益者本人の体調、生理データ等、秘匿の必要性の高いデータに対するセキュリティが非常に重要な要因となる。そこで、HCSに上記匿名掲示板を適用すると、ユーザの生理データを、P2Pオニオンノード100を用いて匿名のままP2Pオニオンノード300に登録することができる。そして、登録された生理データを他のP2Pオニオンノード420を使用する医者が参照し、生活習慣のアドバイス等をユーザに対して匿名のまま送信することができる。
【0197】
以上説明したように、本発明の実施の形態によれば、データ送信前に、送信相手までのルートを探索し、そのルート経由で匿名通信を行うための情報(各ノードの公開鍵)を収集する。そのため、ネットワーク構成が動的に変更する場合でも、匿名通信が可能となる。その結果、P2Pネットワークシステムなどの不安定なネットワークシステムにおいて、データを送受信する場合に、送信経路を動的に検索できると共に、送受信者の匿名性を守ることができるという効果を奏する。
【0198】
しかも、匿名通信を行う際のデータパケットには、転送中の匿名ルートとは別の匿名ルートの情報が含まれているため、送信に失敗した場合には、別の匿名ルート経由でデータを伝送させることができる。これにより、データ伝送の確実性が増す。
【0199】
また、データパケットに含まれる全ての匿名ルート経由でのデータ伝送に失敗した場合には、マルチキャストで他のルート経由でのデータ送信を試みるようにした。そのため、ルート探索時には存在していないが、データ送信時には存在している別のルートが有る場合、そのルート経由で宛先のP2Pオニオンノードにパケットを送信することが可能となる。
【0200】
さらに、通信の際の匿名性を高めるために、他のP2Pオニオンノードに通知する公開鍵を一時公開鍵とし、所定の通信(たとえば、要求の送信とその要求に対する応答)毎に一時公開鍵を作り直すようにしたため、公開鍵の内容を監視しても、複数のパケットが同一のP2Pオニオンノードから出力されたか否かを同定することができない。
【0201】
さらに、匿名IDによって自分宛のパケットであるか否かを判断し、しかも匿名IDを、所定の通信(たとえば、要求の送信とその要求に対する応答)毎に作り直すようにしたため、これらの識別情報によってP2Pオニオンノードを同定することはできない。
【0202】
なお、上記の説明では返信暗号化用一時鍵情報の中に、固定公開鍵で暗号化された送信Peerの一時秘密鍵を含めているが、これは、一時公開鍵と一時秘密鍵との組を送信Peerで管理せずにするための処理である。
【0203】
また、上記の処理機能はコンピュータによって実現することができ、その場合、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 disc)などがある。
【0204】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0205】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0206】
(付記1) 送信元を隠した状態で宛先までの伝送経路探索処理をコンピュータで実行するための匿名ルート探索要求方法において、
宛先識別子で前記宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報とし、
任意に生成した匿名識別子、前記宛先識別子、前記返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成し、
前記ルート探索パケットをブロードキャストで送信する、
ことを特徴とする匿名ルート探索要求方法。
【0207】
(付記2) 固定公開鍵と固定秘密鍵との組が予め用意されており、前記固定公開鍵を用いて前記自ノード識別子の暗号化を行うことを特徴とする付記1記載の匿名ルート探索要求方法。
【0208】
(付記3) 前記経路探索要求を受け取る毎に一時公開鍵と一時秘密鍵との組を生成し、生成した前記一時公開鍵を返信データ暗号化用の前記送信元公開鍵とすることを特徴とする付記1記載の匿名ルート探索要求方法。
【0209】
(付記4) 固定公開鍵と固定秘密鍵との組が予め用意されており、前記一時秘密鍵を前記固定公開鍵で暗号化し、前記ルート探索パケットに含めることを特徴とする付記3記載の匿名ルート探索要求方法。
【0210】
(付記5) 前記ルート探索パケットに対する応答として、前記コンピュータから前記宛先までのルート上の各ノードのノード識別子と公開鍵との組を前記送信元公開鍵で暗号化したルート情報を含むルート通知パケットを受け取ると、前記ルート情報を前記送信元公開鍵に対応する送信元秘密鍵で復号し、
復号により得られた前記ノード識別子と前記公開鍵との組を記録装置に格納する、
ことを特徴とする付記1記載の匿名ルート探索要求方法。
【0211】
(付記6) 送信元が隠された伝送経路探索要求をコンピュータで中継するための匿名ルート探索要求中継方法において、
前記送信元の匿名識別子、探索相手を指定する宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、前記返信用匿名ルート情報と前記隣接ノード識別子とを自分のみが復号可能な形式で暗号化し、
前記ルート探索パケットに自分の識別情報である自ノード識別子を追加し、
前記ルート探索パケットをブロードキャストで送信する、
ことを特徴とする匿名ルート探索要求中継方法。
【0212】
(付記7) 前記ブロードキャストでの送信は、前記ルート探索パケットが入力された伝送路以外の伝送路に対して行うことを特徴とする付記6記載の匿名ルート探索要求中継方法。
【0213】
(付記8) 匿名ルート経由の匿名通信をコンピュータで中継するための匿名データ中継方法において、
前記匿名ルート上の次の送信先を示す次ノード識別子と次の送信先から宛先までの匿名ルート情報とが前記コンピュータの公開鍵で暗号化された宛先匿名ルート情報、前記コンピュータから送信元までの伝送ルートを示す戻り匿名ルート情報、および前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子を含むデータパケットを受け取ると、前記宛先匿名ルート情報を前記公開鍵に対応する秘密鍵で復号して、前記次ノード識別子を判別するとともに、復号されたデータを新たな前記宛先匿名ルート情報として前記データパケットに設定し、
前記戻り匿名ルート情報と前記隣接ノード識別子とを前記公開鍵で暗号化して新たな前記戻り匿名ルート情報とし、
前記データパケットに前記コンピュータの自ノード識別子を追加し、
前記次ノード識別子で示されるノードに対して、前記データパケットを送信する、
ことを特徴とする匿名データ中継方法。
【0214】
(付記9) 前記宛先匿名ルート情報の復号により隣接ノードのノード識別子と前記匿名ルート情報との組が複数得られたとき、1つの組を新たな前記宛先ルート情報とし、他の組をバックトラック匿名ルート情報として前記戻り匿名ルート情報と合わせて前記公開鍵で暗号化し、暗号化されたデータに前記コンピュータの自ノード識別子を付加して新たな前記戻り匿名ルート情報とすることを特徴とする付記8記載の匿名データ中継方法。
【0215】
(付記10) 前記データパケットの送信に失敗した場合、前記データパケットの前記宛先匿名ルート情報を前記データパケット受信時の前記戻り匿名ルート情報に置き換えて、前記データパケットを送信してきたノードへ前記データパケットを返送することを特徴とする付記8記載の匿名データ中継方法。
【0216】
(付記11) 返送された前記データパケットの前記宛先匿名ルート情報を復号したとき、前記バックトラック匿名ルート情報が含まれていた場合、前記バックトラック匿名ルート情報で示されるノード識別子を前記次ノード識別子とすることを特徴とする付記10記載の匿名データ中継方法。
【0217】
(付記12) 前記データパケットの送信に失敗した場合、前記宛先匿名ルート情報と前記戻り匿名ルート情報とのいずれにも他の匿名ルート情報がなければ、前記コンピュータに隣接している各ノードに、前記データパケットをマルチキャストで送信することを特徴とする付記8記載の匿名データ中継方法。
【0218】
(付記13) 送信元が隠された伝送経路探索要求に対して宛先となるコンピュータで応答するための匿名ルート探索要求応答方法において、
前記送信元の匿名識別子、前記コンピュータ宛のパケットを示す宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の受信ノード公開鍵とを前記送信元公開鍵で暗号化してルート情報とし、
前記匿名識別子でルート通知先が指定され、前記返信用匿名ルート情報、前記ルート情報、および前記送信元公開鍵を含むルート通知パケットを生成し、
前記隣接ノード識別子で示されるノードに対して前記ルート通知パケットを送信する、
ことを特徴とする匿名ルート探索要求応答方法。
【0219】
(付記14) 宛先までの伝送経路を送信元を隠して探索するための匿名ルート探索要求プログラムにおいて、
コンピュータに、
宛先識別子で前記宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報とし、
任意に生成した匿名識別子、前記宛先識別子、前記返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成し、
前記ルート探索パケットをブロードキャストで送信する、
処理を実行させることを特徴とする匿名ルート探索要求プログラム。
【0220】
(付記15) 送信元が隠された伝送経路探索要求を中継するための匿名ルート探索要求中継プログラムにおいて、
コンピュータに、
前記送信元の匿名識別子、探索相手を指定する宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、前記返信用匿名ルート情報と前記隣接ノード識別子とを自分のみが復号可能な形式で暗号化し、
前記ルート探索パケットに自分の識別情報である自ノード識別子を追加し、
前記ルート探索パケットをブロードキャストで送信する、
処理を実行させることを特徴とする匿名ルート探索要求中継プログラム。
【0221】
(付記16) 匿名ルート経由の匿名通信を中継するための匿名データ中継プログラムにおいて、
コンピュータに、
前記匿名ルート上の次の送信先を示す次ノード識別子と次の送信先から宛先までの匿名ルート情報とが前記コンピュータの公開鍵で暗号化された宛先匿名ルート情報、前記コンピュータから送信元までの伝送ルートを示す戻り匿名ルート情報、および前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子を含むデータパケットを受け取ると、前記宛先匿名ルート情報を前記公開鍵に対応する秘密鍵で復号して、前記次ノード識別子を判別するとともに、復号されたデータを新たな前記宛先匿名ルート情報として前記データパケットに設定し、
前記戻り匿名ルート情報と前記隣接ノード識別子とを前記公開鍵で暗号化して新たな前記戻り匿名ルート情報とし、
前記データパケットに前記コンピュータの自ノード識別子を追加し、
前記次ノード識別子で示されるノードに対して、前記データパケットを送信する、
処理を実行させることを特徴とする匿名データ中継プログラム。
【0222】
(付記17) 送信元が隠された伝送経路探索要求に対して宛先となるコンピュータで応答するための匿名ルート探索要求応答プログラムにおいて、
コンピュータに、
前記送信元の匿名識別子、前記コンピュータ宛のパケットを示す宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の受信ノード公開鍵とを前記送信元公開鍵で暗号化してルート情報とし、
前記匿名識別子でルート通知先が指定され、前記返信用匿名ルート情報、前記ルート情報、および前記送信元公開鍵を含むルート通知パケットを生成し、
前記隣接ノード識別子で示されるノードに対して前記ルート通知パケットを送信する、
処理を実行させることを特徴とする匿名ルート探索要求応答プログラム。
【0223】
(付記18) 宛先までの伝送経路を送信元を隠して探索する匿名ルート探索要求装置において、
宛先識別子で前記宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報を生成する返信用匿名ルート情報生成手段と、
任意に生成した匿名識別子、前記宛先識別子、前記返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成するルート探索パケット生成手段と、
前記ルート探索パケットをブロードキャストで送信する送信手段と、
を有することを特徴とする匿名ルート探索要求装置。
【0224】
(付記19) 送信元が隠された伝送経路探索要求を中継するための匿名ルート探索要求中継装置において、
前記送信元の匿名識別子、探索相手を指定する宛先識別子、前記送信元から自装置までの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、前記返信用匿名ルート情報と前記隣接ノード識別子とを自分のみが復号可能な形式で暗号化する暗号化手段と、
前記ルート探索パケットに自分の識別情報である自ノード識別子を追加する自ノード識別子追加手段と、
前記ルート探索パケットをブロードキャストで送信する送信手段と、
を有することを特徴とする匿名ルート探索要求中継装置。
【0225】
(付記20) 送信元が隠された伝送経路探索要求に対して応答するための匿名ルート探索要求応答装置において、
前記送信元の匿名識別子、自装置宛のパケットを示す宛先識別子、前記送信元から自装置までの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の受信ノード公開鍵とを前記送信元公開鍵で暗号化してルート情報を生成するルート情報生成手段と、
前記匿名識別子でルート通知先が指定され、前記返信用匿名ルート情報、前記ルート情報、および前記送信元公開鍵を含むルート通知パケットを生成するルート通知パケット生成手段と、
前記隣接ノード識別子で示されるノードに対して前記ルート通知パケットを送信する送信手段と、
を有することを特徴とする匿名ルート探索要求応答装置。
【0226】
(付記21) ネットワーク上で匿名のメッセージ交換を行うための電子掲示板提供装置において、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および前記第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録する登録手段と、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、前記第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索する検索手段と、
前記検索手段で検出された前記メッセージ、前記第1戻り匿名ルート情報、および前記第1隣接ノード識別子を前記送信元公開鍵で暗号化する暗号化手段と、
暗号化されたデータ、および前記第2戻りルート情報を含む応答データパケットを生成するパケット生成手段と、
前記第2隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する送信手段と、
を有することを特徴とする電子掲示板提供装置。
【0227】
(付記22) ネットワーク上で匿名のメッセージ交換を行うための電子掲示板へメッセージをコンピュータで投稿するためのメッセージ投稿方法において、
前記メッセージの投稿要求を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻りルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、返信データ暗号化用の送信元公開鍵、および前記メッセージを含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とするメッセージ投稿方法。
【0228】
(付記23) ネットワーク上で匿名のメッセージ交換を行うための電子掲示板に投稿されたメッセージをコンピュータで検索するための投稿メッセージ検索方法において、
前記メッセージの検索条件を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻りルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、および返信データ暗号化用の送信元公開鍵および前記検索条件を含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とする投稿メッセージ検索方法。
【0229】
(付記24) ネットワーク上の匿名のメッセージ交換を行うための電子掲示板をコンピュータで提供するための電子掲示板提供プログラムにおいて、
前記コンピュータに、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および前記第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録し、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、前記第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索し、
検索手段で検出された前記メッセージ、前記第1戻り匿名ルート情報、および前記第1隣接ノード識別子を前記送信元公開鍵で暗号化し、
暗号化されたデータ、および前記第2戻りルート情報を含む応答データパケットを生成し、
前記第2隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する、
処理を実行させることを特徴とする電子掲示板提供プログラム。
【図面の簡単な説明】
【0230】
【図1】実施の形態に適用される発明の概念図である。
【図2】匿名通信網の概念図である。
【図3】本発明の実施の形態に用いるP2Pオニオンノードのハードウェア構成例を示す図である。
【図4】P2Pオニオンノードの概略機能構成を示すブロック図である。
【図5】P2Pオニオンノードの機能構成を示すブロック図である。
【図6】匿名通信基盤接続認証機能を示す図である。
【図7】匿名経路発見機能を示す図である。
【図8】ルート探索パケットのデータ構造例を示す図である。
【図9】ルート通知パケットのデータ構造例を示す図である。
【図10】匿名経路発見機能の処理手順を示すシーケンス図である。
【図11】ルート探索パケットの伝送経路を示す図である。
【図12】ルート探索パケットの状態遷移状況を示す図である。
【図13】ルート通知パケットの伝送経路を示す図である。
【図14】ルート通知パケットの状態遷移状況を示す図である。
【図15】匿名ルート情報保持部内のデータ構造例を示す図である。
【図16】匿名通信機能を示す概念図である。
【図17】データパケットのデータ構造例を示す図である。
【図18】匿名通信機能の処理手順を示すシーケンス図である。
【図19】データパケットの伝送経路を示す図である。
【図20】データパケットの状態遷移状況を示す図である。
【図21】バックトラック処理におけるデータパケットの伝送経路を示す図である。
【図22】バックトラック転送時のデータパケットの状態遷移状況を示す図である。
【図23】マルチキャストにおけるデータパケットの伝送経路を示す図である。
【図24】匿名掲示板に適用した匿名通信網の構成例を示す図である。
【図25】投稿データを含むデータパケットの例を示す図である。
【図26】DB内のデータ構造例を示す図である。
【図27】検索要求を含むデータパケットの例を示す図である。
【図28】検索結果を含むデータパケットの例を示す図である。
【図29】返信メッセージを含むデータパケットの例を示す図である。
【図30】返信内容を含むデータパケットの伝送経路を示す図である。
【符号の説明】
【0231】
1 送信ノード
2 中継ノード
3 受信ノード
10 匿名通信網
100、200,300,410,420,430,440,450 P2Pオニオンノード
110,210,310 P2Pオニオンプロキシ
120,220,320 P2Pオニオンルータ
【技術分野】
【0001】
本発明はデータの送受信者の匿名性を守った電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラムに関し、特にオニオンルーティングの手法を利用した電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラムに関する。
【背景技術】
【0002】
インターネットを介した様々な情報交換が盛んに行われている。インターネットにおいて一般に利用されている技術では、伝送されているパケットを解析すれば、パケットのヘッダから受信者が割り出せると共に、パケットルートの追跡も可能である。その結果、インターネットの利用者個人のプライバシが侵害される虞がでてきている。たとえば、匿名の掲示板への投稿内容から、投稿者の使用している端末の所在(IPアドレス等)が分かってしまうと、悪意の第三者から嫌がらせをうける危険性がある。
【0003】
そこで、インターネット上のデータの送受信者の匿名性を守るための様々な技術が考えられている。データの送受信の匿名性を守るためには、全てのデータ通信を暗号化すると共に、パケットの伝送経路も漏洩しないようにする必要がある。
【0004】
パケットの伝送経路の漏洩を防止するには、複数の中継地(ルータ)を活用することにより、通信中のパケットの受信元や転送先等の情報の漏洩をシャットアウトする必要がある。このような伝送経路の漏洩防止手法としては、「オニオンルーティング」と名付けられた手法が知られている(たとえば、特許文献1参照)。
【0005】
オニオンルーティングの手法では、オニオンルータと呼ばれる堅牢で固定的なルータがルーティングを司る。送信端末では、送信相手までの伝送経路を予め決定し、パケットを中継する各オニオンルータの公開鍵を用いてパケットの伝送経路に関する情報を暗号化する。
【0006】
パケットを受信したオニオンルータは、自身の秘密鍵で伝送経路に関する情報を復号する。この復号によりパケットの次の転送先が判別され、オニオンルータは、次のノード(オニオンルータ若しくは受信端末)にパケットを転送する。このように、各オニオンルータでは、次の転送先以外隠蔽された状態を保つことができるため、最終的な受信端末の情報を特定することができない。また、オニオンルータにおいて、パケットを送出する際に、それまでの伝送経路に関する情報をパケットに付加しないことで、送信元の漏洩を防止できる。
【0007】
このように、オニオンルーティングでは、データパケットが目的地までの経路情報を多重に暗号化して保持することで、ルーティングを行う各ノードやネットワーク上でのスキミングを行う者に対して経路情報の一部しか参照できないようにしている。
【特許文献1】米国特許第6、266、704号
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかし、従来のオニオンルーティングの手法は、ノード構成が動的に変化する環境に適用するのが困難である。ノード構成が動的に変化する環境としては、特にP2P(Peer to Peer)ネットワークがある。
【0009】
P2Pネットワークでは、Peerノードのネットワークへの参加やネットワークからの退場は任意である。このため、P2Pネットワーク上で通信を行う場合、その時点で参加しているPeerノード間でP2Pの通信を行いながら、送信相手のPeerノードへパケットを転送する。このようなP2P環境に対してオニオンルーティングの手法を適用する場合、次の問題が生じる。
・ 固定のルータ及び固定の経路を予め決定することができない。
・ ルーティング途中でのノード構成変更に対して動的に対処するのが困難である。
【0010】
このため、P2Pネットワークなど不安定なネットワークで匿名通信を行うには、経路発見を動的且つ匿名的に行い、ルーティング途中でのノード構成変更への対処ができなければならない。
【0011】
本発明はこのような点に鑑みてなされたものであり、投稿者とその投稿の閲覧者とを匿名のままメッセージの交換が可能な電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上記課題を解決するために、ネットワーク上で匿名のメッセージ交換を行うための電子掲示板提供装置において、掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および前記第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録する登録手段と、前記メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、前記第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索する検索手段と、前記検索手段で検出された前記メッセージ、前記第1戻り匿名ルート情報、および前記第1隣接ノード識別子を前記送信元公開鍵で暗号化する暗号化手段と、暗号化されたデータ、および前記第2戻り匿名ルート情報を含む応答データパケットを生成するパケット生成手段と、前記第2隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する送信手段と、を有することを特徴とする電子掲示板提供装置が提供される。
【0013】
これにより、電子掲示板の投稿者を匿名のまま、投稿者のメッセージが他の国名の検索者に通知される。
【発明の効果】
【0014】
本発明では、匿名のルートを介して電子掲示板に投稿されたメッセージに対する検索が行われると、そのメッセージに投稿者の送信元までの匿名ルート情報を付加して検索者に送信するようにしたため、検索者は、匿名の投稿者に対して匿名のルートを介して応答することができる。
【発明を実施するための最良の形態】
【0015】
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
【0016】
[発明の概要]
図1は、実施の形態に適用される発明の概念図である。本発明に係る通信は、送信ノード1、中継ノード2および受信ノード3間で行われる。なお、後述するように、中継ノード2は一般には複数ある。
【0017】
送信ノード1は、宛先識別子で宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報とする(ステップS1)。自分のみが復号可能に暗号化するには、たとえば、送信ノード1のみが有する秘密鍵(復号鍵)に対応する公開鍵(暗号鍵)で暗号化を行う。
【0018】
次に、送信ノード1は、任意に生成した匿名識別子、宛先識別子、返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成する(ステップS2)。匿名識別子は、送信したルート探索パケットと返信されるルート通知パケットとの関連付けに利用される。宛先識別子は、宛先の受信ノード3を特定する情報である。宛先識別子は、予め公開された情報であってもよい。送信元公開鍵は、送信ノード1に対して他のノードが自己のノード識別子等の情報を渡すときに、その情報を暗号化するための暗号鍵である。送信元公開鍵に対応する秘密鍵(復号鍵)は、送信ノード1内に予め格納しておく。
【0019】
最後に、送信ノード1は、ルート探索パケットをブロードキャストで送信する(ステップS3)。
中継ノード2は、ルート探索パケットを受け取ると、返信用匿名ルート情報と隣接ノード識別子とを自分のみが復号可能な形式で暗号化する(ステップS4)。隣接ノード識別子は、ルート探索パケットの伝送ルートにおいて中継ノード2に隣接するノードの識別子である。送信ノード1からルート探索パケットが直接送られたのであれば、送信ノード1のノード識別子が隣接ノード識別子である。また、暗号化処理では、たとえば、中継ノード2が有する秘密鍵(復号鍵)に対応する公開鍵(暗号鍵)で暗号化を行う。返信用匿名ルート情報は、送信ノード若しくは伝送途中に介在した他の中継ノードで既に暗号化されているため、ステップS4の暗号化により、多重に暗号化されることになる。しかも、隣接ノード識別子を含めて暗号化することで、その情報を復号した際に隣接ノードのノード識別子が認識可能となる。
【0020】
次に、中継ノード2は、ルート探索パケットに自分の識別情報である自ノード識別子を追加する(ステップS5)。最後に、中継ノード2は、ルート探索パケットをブロードキャストで送信する(ステップS6)。送信されたルート探索パケットを第三者が解析した場合、中継ノード2から送信されたことは認識できるが、それ以前の転送ルートは知ることができない。
【0021】
受信ノード3は、受信ノード3宛のパケットであることを示す宛先識別子を含むルート探索パケットを受け取ると、自分の識別情報であるノード識別子と、受信ノード3宛て情報の暗号化用の受信ノード公開鍵とを送信元公開鍵で暗号化してルート情報とする(ステップS7)。なお、送信元公開鍵は、ルート探索パケットから取得できる。ノード識別子と受信ノード公開鍵との組を送信元公開鍵で暗号化したため、これらの情報を参照できるのは、送信ノード1のみとなる。
【0022】
次に、受信ノード3は、送信ノード1の匿名識別子でルート通知先が指定され、返信用匿名ルート情報、ルート情報、および送信元公開鍵を含むルート通知パケットを生成する(ステップS8)。最後に、受信ノード3は、隣接ノード識別子で示されるノードに対してルート通知パケットを送信する(ステップS9)。これにより、受信ノード3のノード識別子と公開鍵とを含むルート通知パケットが、返信用匿名ルート情報に従ったルートで返信される。
【0023】
中継ノード2は、ルート通知パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の中継ノード公開鍵とを送信元公開鍵で暗号化してルート情報に追加する(ステップS10)。このように、ルート情報に各中継ノードのノード識別子と公開鍵との組を追加していくことで、匿名ルートを送信ノードに通知することができる。なお、ルート情報にノード識別子と公開鍵との組を追加する際には、情報の追加順が判別できるように所定の規則に従って追加する。たとえば、ルート情報内の元の情報の前に、新たな情報を追加していく。これにより、送信ノード1では、匿名ルート上の各ノードの配列を認識できる。
【0024】
次に、中継ノード2は、返信用匿名ルート情報を復号して、次の送信先となるノードを示す次ノード識別子(ルート探索パケットでの隣接ノード識別子)を取得すると共に、復号されたデータを返信用匿名ルート情報としてルート通知パケットに設定する(ステップS11)。最後に、中継ノード2は、次ノード識別子で示されるノードに対して、ルート通知パケットを送信する(ステップS12)。これにより、ルート情報に中継ノード2のノード識別子と公開鍵とが付加されたルート通知パケットが、返信用匿名ルート情報に従ったルートに転送される。
【0025】
送信ノード1は、ルート通知パケットを受け取ると、ルート情報を送信元公開鍵に対応する送信元秘密鍵で復号する(ステップS13)。そして、送信ノード1は、復号により得られた宛先までのルート上の各ノードの識別子と公開鍵との組を配列を保ったまま記録装置に格納する(ステップS14)。格納された情報を参照すれば、受信ノード3までの匿名ルートを認識することができる。しかも、各ノードの公開鍵を用いれば、ルート上の各ノードに対して、匿名ルート上の次のノードのみを知らせることができる。
【0026】
このようにして、データの送受信者の匿名性を守ると共に、データの送受信経路を動的に検索し、匿名性の高いデータ通信を行うことができる。しかも、ルーティングを実行時にノード構成が変更されても、先に検出された他の匿名ルート経由でデータを伝送することで、データ伝送の確実性を向上させることができる。
【0027】
以上のような匿名通信の機能は、P2Pネットワークにも適用することができる。すなわち、各ノードが匿名ルートを適宜探索できるため、ネットワークの構成が動的に変化する場合であっても、匿名ルートにより送信元を秘匿したままのデータ通信が可能となる。
【0028】
ところで、ルート探索パケットに含める送信元の匿名識別子や送信元公開鍵は、適宜変更することができる。たとえば、ルート探索パケットを送出する度に、異なる匿名識別子、異なる送信元公開鍵を用いることができる。送信元公開鍵を固定化しないことで、送信元の匿名性を高めることができる。すなわち、匿名識別子と公開鍵を常に送信者に対して固定にすると以下の問題が生じてしまう。
1.同一匿名識別子を持つ暗号化されないメッセージ(掲示板への投稿等)が複数集まると、その内容から発信者を特定できる可能性が生じる。
2.暗号化されたメッセージでも、暗号化を解いた人(たとえば、匿名掲示板の投稿に対する返信を投稿者が読む場合)が内容から発信者を特定できる可能性が生じる。
【0029】
そこで、同一送信者の匿名識別子と公開鍵をメッセージ間で固定にしないことで、匿名掲示板を検索するノードや、ネットワーク上のスキミング、或いは、返信メッセージの受信者がメッセージの送信者を特定するのを防ぐことができる。すなわち、ノードの匿名識別子、公開鍵の使い捨て管理を行うことで、メッセージ間のアンリンカビリティ(unlinkability)を高めることができる。これを電子掲示板に利用すれば、データの送信者や受信者の匿名性を守った匿名掲示板機能を実現できる。なお、アンリンカビリティとは、二種類の処理が同じユーザによって行われたことを決定できないことを示す。
【0030】
[発明の実施の形態]
以上のような機能を実現するための具体例を、本発明の実施の形態として以下に説明する。なお、以下の実施の形態は、P2Pネットワークに本発明を適用したものであり、匿名通信機能を、P2PオニオンプロキシとP2Pオニオンルータによって実現する。各P2PオニオンノードのP2PオニオンプロキシによりP2Pオニオンルート発見プロトコルに応じたルート探索が行われる。また、各P2PオニオンノードのP2Pオニオンルータにより、P2Pオニオンルーティングが行われ、P2Pオニオンルート情報が検出される。
【0031】
ここで、P2Pオニオンルート発見プロトコルは、受信側のP2PオニオンノードまでのP2Pオニオンルートを発見するプロトコルである。P2Pオニオンプロキシは、P2PオニオンノードのP2Pオニオンルート発見プロトコルを司る機能単位である。P2Pオニオンルートは、多重に暗号化され、且つ、ノード構成変更に対処可能な経路情報である。P2Pオニオンルータは、P2Pオニオンノードにおいて、P2Pオニオンルート情報に従ったP2Pオニオンルーティング処理を司る機能単位である。
【0032】
図2は、匿名通信網の概念図である。本実施の形態では、P2Pオニオンノード100が、P2Pオニオンノード200,300,410,420,430,440,450を含む匿名通信網10に参加する。ここで、P2Pオニオンノード100のノード名を「A」、P2Pオニオンノード200のノード名を「B」、P2Pオニオンノード410のノード名を「C」、P2Pオニオンノード420のノード名を「D」、P2Pオニオンノード430のノード名を「E」、P2Pオニオンノード440のノード名を「F」、P2Pオニオンノード450のノード名を「G」、P2Pオニオンノード300のノード名を「X」とする。
【0033】
P2Pオニオンノード100は、P2Pオニオンノード200との間でP2P通信接続を行うことで匿名通信網10に参加する。
P2Pオニオンノード200は、他のP2Pオニオンノード410,420,440,450との間でP2P通信接続が確立している。P2Pオニオンノード410は、さらにP2Pオニオンノード430との間でP2P通信接続が確立している。P2Pオニオンノード420も同様に、P2Pオニオンノード430との間でP2P通信接続が確立している。P2Pオニオンノード430は、さらにP2Pオニオンノード300との間でP2P通信接続が確立している。
【0034】
このようにP2Pネットワークでは、多数のP2Pオニオンノード間でのP2P接続の連鎖によって通信網が確立している。
図3は、本発明の実施の形態に用いるP2Pオニオンノードのハードウェア構成例を示す図である。P2Pオニオンノード100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、および通信インタフェース106が接続されている。
【0035】
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションプログラムが格納される。
【0036】
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス107を介してCPU101に送信する。
【0037】
通信インタフェース106は、他のP2Pオニオンノード200との間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3には、P2Pオニオンノード100のハードウェア構成例を示したが、他のP2Pオニオンノード200,300,410,420,430,440,450も同様のハードウェア構成で実現可能である。
【0038】
ところで、本実施の形態に係る各P2Pオニオンノードは、大別して、匿名通信基盤接続認証機能、匿名経路発見機能、および匿名通信機能を有している。
匿名通信基盤接続認証機能は、自身が匿名通信網10に参加するための認証要求機能、および他のP2Pオニオンノードが匿名通信網10に参加する際にそのP2Pオニオンノードを認証するための機能である。匿名通信網10に参加するP2Pオニオンノードに対して接続認証を行うことで、予め会員登録された者以外が匿名通信網10に参加することを防止できる。
【0039】
匿名経路発見機能は、P2Pオニオンルート発見プロトコルに従って、送信相手までの伝送路を探索する機能である。
匿名通信機能は、発見された経路を介して匿名通信を行う機能である。
【0040】
図4は、P2Pオニオンノードの概略機能構成を示すブロック図である。P2Pオニオンノード100は、P2Pオニオンプロキシ110、P2Pオニオンルータ120及び複数のアプリケーション131,132を有している。P2Pオニオンプロキシ110は、匿名通信基盤接続認証機能と匿名経路発見機能とを有している。また、P2Pオニオンルータ120は、匿名通信機能を有している。アプリケーション131,132は、ユーザからの操作入力等に応答して、メッセージの送信や受信を行う。図4の例では、アプリケーション131がメッセージを送信し、アプリケーション132がメッセージを受信する場合を示している。
【0041】
P2Pオニオンノード200には、P2Pオニオンプロキシ210とP2Pオニオンルータ220とを有している。P2Pオニオンプロキシ210は、匿名通信基盤接続認証機能と匿名経路発見機能とを有している。また、P2Pオニオンルータ220は、匿名通信機能を有している。
【0042】
このような機能構成のP2Pオニオンノード100,200間では、たとえば、アプリケーション131,132から匿名通信網10への接続要求が出されると、P2Pオニオンノード100のP2Pオニオンプロキシ110とP2Pオニオンノード200のP2Pオニオンプロキシ210との匿名通信基盤接続認証機能が連携して動作することで、接続相互認証が行われる。
【0043】
また、アプリケーション131がユーザからのメッセージ送信依頼を受け付けると、P2Pオニオンプロキシ110に対して、P2Pオニオンルートの探索と獲得依頼が出される。すると、P2Pオニオンノード100のP2Pオニオンプロキシ110とP2Pオニオンノード200のP2Pオニオンプロキシ210との匿名経路発見機能がP2Pオニオンルート発見プロトコルに従って連携動作することで、ルート探索処理が行われる。ルート探索が終了すると、アプリケーション131からP2Pオニオンルータ120に対して、メッセージ送信要求が出される。すると、P2Pオニオンノード100のP2Pオニオンルータ120とP2Pオニオンノード200のP2Pオニオンルータ220との匿名通信機能が連携して動作することで、オニオンルーティングが行われ、データパケットによってメッセージが送信される。
【0044】
また、他のP2PオニオンノードからP2Pオニオンノード100に対するメッセージがオニオンルーティングによって送られると、P2Pオニオンルータ120からアプリケーション132にメッセージが渡される。
【0045】
次に、本発明の実施の形態を実現するための各P2Pオニオンノードの機能を詳細に説明する。なお、各P2Pオニオンノードは、パケットの発信者(発信Peer)となる場合、パケットの受信者(受信Peer)となる場合、およびパケットのルーディングを行うルータ(中継Peer)となる場合があり得る。従って、各P2Pオニオンノードは、発信Peer、受信Peer、および中継Peerとしての機能を備えている必要がある。
【0046】
図5は、P2Pオニオンノードの機能構成を示すブロック図である。P2Pオニオンノード100は、P2Pオニオンプロキシ110、P2Pオニオンルータ120、アプリケーション131、会員証情報保持部141、固定鍵保持部142、匿名ルート情報保持部143、一時鍵生成部151、および匿名ID生成部152を有している。
【0047】
P2Pオニオンプロキシ110は、匿名通信接続部111、匿名ルート探索要求部112、ルート探索要求中継部113、およびルート探索要求応答部114を有している。
匿名通信接続部111は、匿名通信基板接続認証処理を実行する。具体的には、匿名通信接続部111は、アプリケーション131から匿名基板への接続要求を受け取ると、会員証情報保持部141から会員証情報を取得するとともに、固定鍵保持部142から固定公開鍵142aを取得する。そして、匿名通信接続部111は、接続可能な他のP2Pオニオンノードとの間で、会員証情報と固定公開鍵142aとを用いて接続認証を行う。また、匿名通信接続部111は、他のP2Pオニオンノードから接続認証要求を受け取った際にも、会員証情報と固定公開鍵142aとを用いて接続認証を行う。
【0048】
匿名ルート探索要求部112は、P2Pオニオンルート発見プロトコルにおけるルート探索要求送信機能を実現する。具体的には匿名ルート探索要求部112は、アプリケーション131からP2Pオニオンルート探索要求を受け取ると、固定鍵保持部142から固定公開鍵142aを取得すると共に、一時鍵生成部151から一時公開鍵と一時秘密鍵とを受け取る。また、匿名ルート探索要求部112は、匿名ID生成部152から匿名IDを取得する。そして、匿名ルート探索要求部112は、取得した鍵情報、匿名IDおよび自分のノードID等を含むルート探索パケットを生成し、ブロードバンドで送信する。なお、ノードIDは、公開鍵で暗号化された状態で、ルート探索パケット内に設定される。
【0049】
ルート探索要求中継部113は、P2Pオニオンルート発見プロトコルにおけるルート探索要求の中継機能を実現する。具体的には、他のP2Pオニオンノードからルート探索パケットを受け取ると、ルート探索要求中継部113は、固定鍵保持部142から固定公開鍵142aを取得する。次に、ルート探索要求中継部113は、ルート探索パケット内の戻りオニオン(ルートスタック:それまでの伝送経路を示している)内の情報を自分の固定公開鍵142aで暗号化する。その後、ルート探索要求中継部113は、暗号化された情報に自分のノードIDを付加して、新たな戻りオニオンとする。そして、ルート探索要求中継部113は、ルートスタックが更新されたルート探索パケットを、他のP2Pオニオンノード(ルート探索パケットの送信元を除く)に対して転送する。
【0050】
ルート探索要求応答部114は、P2Pオニオンルート発見プロトコルにおけるルート探索要求への応答機能を実現する。具体的には、ルート探索要求応答部114は、他のP2Pオニオンノードから送られたルート探索パケットにおける探索対象ノードとして自分が指定されていたとき、P2Pオニオンノードに対してルート通知パケットを生成する。応答する際には、ルート探索要求応答部114は、固定鍵保持部142から固定公開鍵142aを取得する。そして、ルート探索要求応答部114は、ルート探索パケット送信元の一時公開鍵を用いて、自分のノードIDと固定公開鍵142aとを暗号化してルート通知パケットに含める。ルート通知パケットは、P2Pオニオンルータ120の匿名データ送信部121を介して送信される。
【0051】
P2Pオニオンルータ120は、匿名データ送信部121、匿名データ中継部122、および匿名データ受信部123を有している。
匿名データ送信部121は、匿名通信機能における匿名通信データパケットの送信機能を実現する。具体的には、匿名データ送信部121は、アプリケーション131等からの要求に応答して匿名通信のデータパケットを生成し、送信する。データパケットには、匿名ルートを示す宛先オニオンが含まれる。宛先オニオンは、匿名経路上の各P2Pオニオンノードの公開鍵を用いて、各P2Pオニオンノードの次の伝送先の情報を暗号化したものである。
【0052】
匿名データ中継部122は、匿名通信機能における匿名通信のデータパケットの中継機能を実現する。具体的には、匿名データ中継部122は、データパケット内の宛先オニオンを自分の秘密鍵で復号し、次の伝送先を確認する。そして、匿名データ中継部122は、次の伝送先へデータパケットを転送する。
【0053】
匿名データ受信部123は、匿名通信機能における匿名通信のデータパケットの受信機能を実現する。具体的には、匿名データ受信部123は、データパケットの送信先の匿名IDが自分のIDであれば、自分宛のデータパケットであることを認識し、アプリケーション131にパケット内のデータ(ペイロード内のデータ)を渡す。なお、匿名データ受信部123は、受信した自分宛のパケットがルート通知パケットの場合、その内容から匿名ルートを認識し、匿名ルート情報保持部143に格納する。
【0054】
アプリケーション131は、ユーザの操作入力等に応じて、匿名通信を利用した各種処理を実行する。
会員証情報保持部141は、匿名通信網10に参加するための所定の手続きを行ったユーザに渡される情報である。会員証情報を有しているP2Pオニオンノードのみが匿名通信網10に参加可能となる。
【0055】
固定鍵保持部142は、予め用意された鍵情報を格納している。鍵情報は、固定公開鍵142aと固定秘密鍵142bである。固定公開鍵142aで暗号化した暗号データは、固定秘密鍵142bでのみ復号することができる。なお、固定公開鍵142aと固定秘密鍵142bとは、会員証情報の一部として供給することもできる。
【0056】
匿名ルート情報保持部143は、探索された匿名ルート情報を格納している。
一時鍵生成部151は、匿名ルート探索要求部112等からの要求に応答して、一時鍵を生成する。一時鍵は、一時公開鍵と一時秘密鍵の組である。
【0057】
匿名ID生成部152は、匿名ルート探索要求部112等からの要求に応答して、匿名IDを生成する。匿名IDは、一連の匿名通信(匿名ルート探索とその匿名ルートによる匿名通信)毎に個別に設定する識別情報である。
【0058】
以上のような構成のP2Pオニオンノード100によって、本実施の形態に係る匿名通信基盤接続認証機能、匿名経路発見機能、および匿名通信機能が実現される。なお、図5には、P2Pオニオンノード100が有する機能の構成要素を示したが、他のP2Pオニオンノード200,300,410,420,430,440,450も同様の機能を有している。
【0059】
[匿名通信基盤接続認証機能]
まず、匿名通信基盤接続認証機能について説明する。
図6は、匿名通信基盤接続認証機能を示す図である。匿名通信基盤接続認証機能は、あるP2Pオニオンノード(図6の例では、P2Pオニオンノード100)が、匿名通信網10に参加するために他のP2Pオニオンノード(図6の例では、P2Pオニオンノード200)へ接続するための機能である。なお、接続先となるP2Pオニオンノード200を、P2Pオニオンノード100から見たときの第1接続ノードと呼ぶこととする。ここでは、P2Pオニオンノード100は、接続する第1接続ノードのIPアドレスやポート番号などを最初から分かっているものとする。たとえば、任意に接続可能なP2Pオニオンノード(第1接続ノードとなり得るP2Pオニオンノード)が予め公開されているものとする。
【0060】
匿名通信網10で使用するP2Pオニオンルートなどの暗号方式にはRSA暗号を用いる。RSA暗号の公開鍵とその証明書(公開鍵証明書)、秘密鍵などは既に各P2Pオニオンノードが持っている状態を前提とする。この公開鍵証明書はこの匿名通信基盤の会員証として使用し、ノードがこの匿名通信基盤に参加するための認証に使用する。公開鍵証明書は、会員証情報保持部141に格納される。
【0061】
ここで、図6を参照して、P2Pオニオンノード100がP2Pオニオンノード200を第1接続ノードとして匿名通信網10に参加するときの匿名通信基盤接続認証機能の処理手順を説明する。このとき、匿名通信基盤接続認証機能は、P2Pオニオンノード100のP2Pオニオンプロキシ110内の匿名通信接続部111と、P2Pオニオンノード200のP2Pオニオンプロキシ210内の匿名通信接続部211との間で実行される。
【0062】
[第1の処理]P2Pオニオンノード100内の匿名通信接続部111は、第1接続ノードを決定する。ここで、第1接続ノードは、隣接するP2Pオニオンノード200であり、複数の場合もある。第1接続ノードとして指定可能なノードのIPアドレス等は、会員証情報保持部141に予め格納しておくことができる。また、第1接続ノードのIPアドレス等を、GUIによりユーザが直接入力することもできる。
【0063】
[第2の処理]新規参加ノード(P2Pオニオンノード100)のP2Pオニオン・プロキシ(P2Pオニオンプロキシ110内の匿名通信接続部111)は第1接続ノード(P2Pオニオンノード200)へ接続を開始して、自分の固定公開鍵142aと会員証141aとを渡す。
【0064】
[第3の処理]接続された第1接続ノード(P2Pオニオンノード200)のP2Pオニオン・プロキシ(P2Pオニオンプロキシ210内の匿名通信接続部211)も自分の固定公開鍵242aと会員証241aを新規参加ノード(P2Pオニオンノード100)へ渡す。
【0065】
[第4の処理]新規参加ノード(P2Pオニオンノード100)および第1接続ノード(P2Pオニオンノード200)の双方で会員証の確認を行う。失効しているなど問題があれば通信を停止する。
【0066】
[第5の処理]新規参加ノード(P2Pオニオンノード100)および第1接続ノード(P2Pオニオンノード200)で、互いに相手の固定公開鍵で暗号化したデータを交換する。そして、双方のノードが、受け取ったデータを復号して相手に返す。各P2Pオニオンノード100,200は、相手方に送信したデータが正しく復号されて戻ってくれば匿名P2Pネットワーク基盤上サービス利用資格保有者と判断する。以後、P2Pオニオンノード100は、P2Pオニオンノード200を介して、匿名通信網10に参加できる。すなわち、P2Pオニオンノード100が匿名通信基盤上のノードとなる。その結果、図2に示すような匿名通信網10が形成される。
【0067】
[匿名経路発見機能]
次に、匿名経路発見機能について、P2Pオニオンノード100からP2Pオニオンノード300に対してデータを送信する際の匿名経路探索例を用いて説明する。
【0068】
図7は、匿名経路発見機能を示す図である。匿名経路発見機能は、P2Pオニオンルート発見プロトコルを用いて、送信Peer(図7の例では、P2Pオニオンノード100)から受信Peer(図7の例では、P2Pオニオンノード300)までのルート情報を匿名的に収集し、収集したルート情報からP2Pオニオンルートを構築する機能である。ルート情報は受信Peerまでの経路を構成する各Peerの識別子と公開鍵からなる。P2Pオニオンルート発見プロトコルは以下の手順でP2Pオニオンルートを構築する。なお、匿名経路発見機能は、各P2Pオニオンノード100,200,300のP2Pオニオンプロキシ110,210,310とP2Pオニオンルータ120,220,320によって実現される。特に送信Peer(P2Pオニオンノード100)ではP2Pオニオンプロキシ110の匿名ルート探索要求部112が処理を実行し、中継Peer(P2Pオニオンノード200)ではP2Pオニオンプロキシ210のルート探索要求中継部213が処理を実行し、受信Peer(P2Pオニオンノード300)では、ルート探索要求応答部314が処理を実行する。
【0069】
ルート探索の際には、送信Peer(P2Pオニオンノード100)からルート探索パケット20がブロードキャスト送信され、そのルート探索パケット20を受信した受信Peer(P2Pオニオンノード300)からルート通知パケット30が返信される。
【0070】
図8は、ルート探索パケットのデータ構造例を示す図である。ルート探索パケット20は、メッセージフラグ21、宛先(To)22、送信元(From)23、宛先オニオン24、戻りオニオン25、および返信暗号化用一時鍵情報26で構成される。
【0071】
メッセージフラグ21は、パケットの種別を示している。ルート探索パケット20の場合には、ルート探索ブロードキャスト送信用のパケットであることを示す情報が設定される。
【0072】
宛先22には、ルート探索パケット20の宛先が設定される。宛先は、予め公開された受信Peerの識別情報(公開ID)等で示される。
送信元23には、送信peerの匿名IDが設定される。
【0073】
宛先オニオン24は、宛先までのルートを示す情報であるが、ルート探索パケット20では空欄となる。
戻りオニオン25には、ルート探索パケット20に対してルート通知パケット30を返信する際の伝送経路が、多重に暗号化されて設定される。
【0074】
返信暗号化用一時鍵情報26は、ルート通知パケット30を返信する際に使用される送信Peerの一時公開鍵と暗号化された一時秘密鍵である。
図9は、ルート通知パケットのデータ構造例を示す図である。ルート通知パケット30は、メッセージフラグ31、宛先(To)32、送信元(From)33、宛先オニオン34、戻りオニオン35、ルート情報36、および返信暗号化用一時鍵情報37で構成される。
【0075】
メッセージフラグ31は、パケットの種別を示している。ルート通知パケット30の場合には、ルート探索返信用のパケットであることを示す情報が設定される。
宛先32には、ルート通知パケット30の宛先が設定される。宛先は、ルート探索パケット20の送信元23に設定されている送信Peerの匿名IDである。
【0076】
送信元33には、受信peerの公開されたID(公開ID)が設定される。
宛先オニオン34は、宛先までのルートを示す情報である。これは、受信Peerにおいてルート探索パケット20の戻りオニオン25を転記したものである。ただし、宛先オニオン34は、パケットが中継される毎に過去の伝送経路を示す情報が削除される。
【0077】
戻りオニオン35は、ルート通知パケット30においては空欄となる。
ルート情報36は、匿名通信の伝送ルートを示す情報である。ルート情報には、伝送ルート上の各P2PオニオンノードのノードIDと固定公開鍵とが、送信Peerの固定公開鍵で暗号化されて設定されている。また、ルート情報36には、ルート探索パケット20の返信暗号化用一時鍵情報26も含まれている。
【0078】
返信暗号化用一時鍵情報37は、ルート探索パケット20の返信暗号化用一時鍵情報26の内容がそのまま設定される。
図10は、匿名経路発見機能の処理手順を示すシーケンス図である。以下、図10に示す処理をステップ番号に沿って説明する。
【0079】
[ステップS21]送信Peer(P2Pオニオンノード100)の匿名ルート探索要求部112は、アプリケーション131からメッセージの送信依頼を受け取る。なお、P2Pオニオンノード100のユーザは、受信PeerであるP2Pオニオンノード300のノードIDを予め知っているものとする。
【0080】
[ステップS22]匿名ルート探索要求部112は、ルート探索パケット20を生成する。ルート探索パケット20には、受信Peerの公開ID、送信Peerの匿名ID、送信Peerの一時鍵(一時公開鍵と一時秘密鍵)等が含まれる。受信Peerの公開IDは、ユーザからの操作入力等に基づいて、アプリケーション131が取得する。送信Peerの匿名IDは、匿名ID生成部152から取得する。送信PeerのノードIDは、P2Pオニオンノード100の一般の通信機能(通信プロトコル)から取得する。送信Peerの一時鍵は、一時鍵生成部151から取得する。
【0081】
ルート探索パケット20の戻りオニオン25は、送信PeerのノードIDと固定公開鍵とから生成される。具体的には、匿名ルート探索要求部112は、固定鍵保持部142から固定公開鍵142aを取得する。次に、匿名ルート探索要求部112は、送信PeerのノードIDを、固定公開鍵142aで暗号化する。そして、匿名ルート探索要求部112は、暗号化された送信PeerのノードIDと、暗号化されていない送信PeerのノードIDとの組を、戻りオニオン25とする。この際、暗号化されていない送信PeerのノードIDには、戻りフラグ(本実施の形態では「^」の記号)が付加される。戻りフラグは、送信元に戻るためのルートであることを示している。
【0082】
返信暗号化用一時鍵情報26は、送信Peerの一時鍵と固定公開鍵142aとから生成される。具体的には、匿名ルート探索要求部112は、送信Peerの一時秘密鍵を固定公開鍵142aで暗号化する。そして、匿名ルート探索要求部112は、暗号化された一時秘密鍵と、暗号化されていない一時公開鍵との組を、返信暗号化用一時鍵情報26とする。
【0083】
[ステップS23]匿名ルート探索要求部112は、ルート探索パケットをブロードキャストで送信する。本実施の形態では、P2Pオニオンノード100に接続されたノードは、P2Pオニオンノード200のみであるため、一段目としては、P2Pオニオンノード200のみに転送される(図2参照)。
【0084】
[ステップS24]中継Peer(P2Pオニオンノード200)のルート探索要求中継部213は、ルート探索パケット20を受け取ると、宛先22に設定されている受信Peerの公開IDを確認する。自分宛のルート探索パケット20でなければ、パケット中継のためにステップS25に処理を進める。なお、各P2Pオニオンノードは、自身の公開IDについては、予めメモリ等(たとえば、会員証情報保持部)に保持している。
【0085】
[ステップS25]ルート探索要求中継部213は、戻りオニオンを更新する。具体的には、ルート探索要求中継部213は、受信したルート探索パケット20内の戻りオニオン25に中継Peerの固定公開鍵で暗号化する。そして、ルート探索要求中継部213は、暗号化された情報に中継PeerのノードID(戻りフラグ付き)を付加して、新たな戻りオニオン25とする。
【0086】
[ステップS26]ルート探索要求中継部213は、ルート探索パケット20をブロードキャストで送信する。本実施の形態では、P2Pオニオンノード200に対して、送信Peer(P2Pオニオンノード100)以外に4台のP2Pオニオンノード410,420,440,450が接続されているため、それら4台のP2Pオニオンノード410,420,440,450に対して、ルート探索パケット20が送信される(図2参照)。
【0087】
以後、各P2Pオニオンノード410,420,440,450において、ルート探索パケット20が中継され、最終的に受信Peer(P2Pオニオンノード300)に到達する。ルート探索パケット20を受け取った受信Peer(P2Pオニオンノード300)では、以下の処理が行われる。
【0088】
[ステップS27]ルート探索要求応答部314は、ルート探索パケット20を受け取ると、宛先22を確認する。自分宛のルート探索パケット20であれば、応答するためにステップS28に処理を進める。
【0089】
なお、各P2Pオニオンノードにおけるルート探索パケット20の宛先22の確認機能は、ルート探索要求中継部とルート探索要求応答部とが共用する機能である。すなわち、実際には、ルート探索パケット20受信時に宛先22の確認機能が動作し、自分宛であればその旨の確認結果がルート要求応答部に伝えられ、自分宛でなければその旨の確認結果がルート探索要求中継部に伝えられる。
【0090】
[ステップS28]ルート探索要求応答部314は、ルート通知パケット30を生成する。ルート通知パケット30には、ルート探索パケット20に含まれる情報以外に、受信PeerのノードIDと固定公開鍵とが含まれる。
【0091】
具体的には、ルート探索要求応答部314は、ルート探索パケット20の送信元23の情報をルート通知パケットの30の宛先32に設定する。ルート探索要求応答部314は、ルート探索パケット20の宛先22の情報を、ルート通知パケットの30の送信元33に設定する。ルート探索要求応答部314は、ルート探索パケット20の戻りオニオン25の情報を、ルート通知パケットの30の宛先オニオン34に設定する。ルート探索要求応答部314は、ルート探索パケット20の返信暗号化用一時鍵情報26内の送信Peerの一時公開鍵を用いて、受信PeerのノードIDと固定公開鍵との組を暗号化し、ルート情報36に設定する。そして、ルート探索要求応答部314は、ルート探索パケット20の返信暗号化用一時鍵情報26の情報を、ルート通知パケットの30の返信暗号化用一時鍵情報37に設定する。
【0092】
ルート探索要求応答部314は、生成したルート通知パケット30を、受信PeerのP2Pオニオンルータ320内の匿名データ送信部321に渡し、匿名通信を依頼する。
[ステップS29]匿名データ送信部321は、ルート通知パケット30の送信先をルート探索パケット20の戻りオニオン25に基づいて判断し、その送信先へルート通知パケット30を送信する。具体的には、戻りオニオン25には、暗号化されていないノードID(隣のP2PオニオンノードのノードID)と、暗号化された情報(隣のP2Pオニオンノードに到達するまでの経路が暗号化されたもの)が含まれている。そこで、匿名データ送信部321は、暗号化されていないノードIDのP2Pオニオンノードに対して、ルート通知パケット30を送信する。
【0093】
ルート通知パケット30は、各P2Pオニオンノードにおいて中継される。P2Pオニオンノード200における中継処理を以下に示す。
[ステップS30]中継Peer(P2Pオニオンノード200)のP2Pオニオンルータ220内の匿名データ中継部222は、宛先を確認する。なお、各P2Pオニオンノードは、自身が発行した匿名IDのリストを記憶しており、その匿名IDのリストとパケットの宛先とを比較することで、そのパケットが自分宛か否かを判断することができる。他のノード宛のルート通知パケット30の場合、匿名データ中継部222は、処理をステップS31に進める。
【0094】
[ステップS31]匿名データ中継部222は、ルート通知パケット30の宛先オニオン34を更新する。具体的には、匿名データ中継部222は、宛先オニオン34に付加されている自分のノードIDを削除し、暗号化されている情報を、固定秘密鍵を用いて復号する。そして、匿名データ中継部222は、復号した情報を新たな宛先オニオン34とする。
【0095】
[ステップS32]匿名データ中継部222は、ルート通知パケット30のルート情報36を更新する。具体的には、匿名データ中継部222は、自分のノードIDと固定公開鍵とを送信Peerの一時公開鍵で暗号化し、ルート情報36にスタックする(本実施の形態では、それまでのルート情報の後に、暗号化した情報を追加格納する)。これにより、ルート情報36には、伝送経路上の各P2Pオニオンノードに関する情報(ノードIDと固定公開鍵)が経路に沿った順番で並べられていく。
【0096】
[ステップS33]匿名データ中継部222は、ルート通知パケット30の送信先を宛先オニオン34に基づいて判断し、その送信先へルート通知パケット30を送信する。具体的には、宛先オニオン34には、暗号化されていないノードID(隣のP2PオニオンノードのノードID)と、暗号化された情報(隣のP2Pオニオンノードに到達するまでの経路が暗号化されたのも)が含まれている。そこで、匿名データ中継部222は、暗号化されていないノードIDのP2Pオニオンノードに対して、ルート通知パケット30を送信する。
【0097】
これにより、ルート通知パケット30が送信PeerであるP2Pオニオンノード100に渡される。P2Pオニオンノード100では、以下の処理が行われる。
[ステップS34]送信PeerのP2Pオニオンルータ120の匿名データ受信部123は、宛先を確認する。他のノード宛のルート通知パケット30の場合、匿名データ中継部222は、処理をステップS31に進める。
【0098】
なお、各P2Pオニオンノードにおけるルート通知パケットの宛先32の確認機能は、匿名データ中継部と匿名データ受信部とが共用する機能である。すなわち、実際には、ルート通知パケット30受信時に宛先32の確認機能が動作し、自分宛であればその旨の確認結果が匿名データ受信部に伝えられ、自分宛でなければその旨の確認結果が匿名データ中継部に伝えられる。
【0099】
[ステップS35]匿名データ受信部123は、ルート通知パケット30内のルート情報36から受信Peerまでの匿名ルート情報を取得し、匿名ルート情報保持部143に格納する。具体的には、匿名データ受信部123は、返信暗号化用一時鍵情報37に含まれる暗号化された情報(一時秘密鍵を固定公開鍵142aで暗号化したもの)を、固定秘密鍵142bを用いて復号する。これにより、一時秘密鍵が取得できる。なお、固定秘密鍵142bは、固定鍵保持部142から取得できる。
【0100】
次に、匿名データ受信部123は、取得した一時秘密鍵を用いて、ルート情報36に含まれる各情報を復号する。これにより、受信Peerまでの経路上のP2PオニオンノードのノードIDのリスト(経路に沿った順番に並べられている)が得られる。匿名データ受信部123は、取得したリストを、匿名ルート情報として匿名ルート情報保持部143に格納する。
【0101】
以上のようにして、匿名経路の探索が完了する。
図11は、ルート探索パケットの伝送経路を示す図である。図11には、送信PeerであるP2Pオニオンノード100から出力されたルート探索パケット20aが内容の変更を受けながら中継され、受信PeerであるP2Pオニオンノード300に到達するまでの様子を示している。
【0102】
P2Pオニオンノード100から出力されたルート探索パケット20aを受け取ったP2Pオニオンノード200は、戻りオニオンに自分の情報を付加したルート探索パケット20b,20eを生成し、P2Pオニオンノード410やP2Pオニオンノード420等に送信する。
【0103】
P2Pオニオンノード410は、戻りオニオンに自分の情報を付加したルート探索パケット20cを生成し、P2Pオニオンノード430に対して送信する。P2Pオニオンノード430は、戻りオニオンに自分の情報を付加したルート探索パケット20dを生成し、P2Pオニオンノード300に対して送信する。
【0104】
同様に、P2Pオニオンノード420は、戻りオニオンに自分の情報を付加したルート探索パケット20fを生成し、P2Pオニオンノード430に対して送信する。P2Pオニオンノード430は、戻りオニオンに自分の情報を付加したルート探索パケット20gを生成し、P2Pオニオンノード300に対して送信する。
【0105】
このように、受信peerであるP2Pオニオンノード300には、2つのルート探索パケット20d,20gが到達する。すなわち、受信Peerには、様々な経路を通ってルート探索パケットが届く。そのため、ルート通知パケットも複数個返信される。
【0106】
ここで、P2Pオニオンノード420を経由して伝送されるルート探索パケットの内部情報について詳細に説明する。
図12は、ルート探索パケットの状態遷移状況を示す図である。なお、以下の説明において、鍵の記号の右に括弧で他の情報を示した場合、括弧内の情報をその鍵で暗号化した情報を示す。
【0107】
P2Pオニオンノード100からP2Pオニオンノード200に渡されるルート探索パケット20aには、メッセージフラグ”ルート探索ブロードキャスト”、宛先(To)”ノード「X」の公開ID”、送信元(From)”ノード「A」の匿名ID#1”、宛先オニオン(無し)、戻りオニオン”^Aid+APk(Aid)”、返信暗号化用一時鍵情報”ATPk,APk(ATSk)”が登録されている。ここで、戻りオニオンにおける「^」は戻りフラグである。Aidは、ノード「A」のノードIDである。APkは、ノード「A」の固定公開鍵である。また、返信暗号化用一時鍵情報において、ATPkはノード「A」の一時公開鍵を示し、ATSkはノード「A」の一時秘密鍵を示す。
【0108】
P2Pオニオンノード200からP2Pオニオンノード420に渡されるルート探索パケット20eでは、戻りオニオンが”^Bid+BPk{^Aid+APk(Aid)}”に変更されている。ここで、戻りオニオンにおけるBidはノード「B」のノードIDであり、BPkはノード「B」の固定公開鍵である。このように、ノード「B」の固定公開鍵でノード「A」の情報を暗号化することで、送信元が隠される。
【0109】
P2Pオニオンノード420からP2Pオニオンノード430に渡されるルート探索パケット20fでは、戻りオニオンが^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}に変更されている。ここで、戻りオニオンにおけるDidはノード「D」のノードIDであり、DPkはノード「D」の固定公開鍵である。
【0110】
P2Pオニオンノード430からP2Pオニオンノード300に渡されるルート探索パケット20gでは、戻りオニオンが^Eid+EPk{^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}}に変更されている。ここで、戻りオニオンにおけるEidはノード「E」のノードIDであり、EPkはノード「E」の固定公開鍵である。
【0111】
ルート探索パケット20gを受け取ったP2Pオニオンノード300は、宛先によって、自分宛であることを認識できる。しかし、どのような経路で送られてきたのかは、ノード名「E」のP2Pオニオンノード430から送られてきたことしか認識できない。
【0112】
次に、P2Pオニオンノード300から送信されるルート通知パケットの伝送経路について説明する。
図13は、ルート通知パケットの伝送経路を示す図である。図13には、受信PeerであるP2Pオニオンノード300から出力された2つのルート通知パケット30a,30eが内容の変更を受けながら中継され、送信PeerであるP2Pオニオンノード100に到達するまでの様子を示している。
【0113】
P2Pオニオンノード300から出力されたルート通知パケット30aを受け取ったP2Pオニオンノード430は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30bを生成し、P2Pオニオンノード410に送信する。P2Pオニオンノード410は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30cを生成し、P2Pオニオンノード200に送信する。P2Pオニオンノード200は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30dを生成し、P2Pオニオンノード100に送信する。
【0114】
また、P2Pオニオンノード300から出力されたルート通知パケット30eを受け取ったP2Pオニオンノード430は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30fを生成し、P2Pオニオンノード420に送信する。P2Pオニオンノード420は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30gを生成し、P2Pオニオンノード200に送信する。P2Pオニオンノード200は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30hを生成し、P2Pオニオンノード100に送信する。
【0115】
このように、送信peerであるP2Pオニオンノード100には、2つのルート通知パケット30d,30hが到達する。
ここで、P2Pオニオンノード420を経由して伝送されるルート探索パケットの内部情報について詳細に説明する。
【0116】
図14は、ルート通知パケットの状態遷移状況を示す図である。
P2Pオニオンノード300からP2Pオニオンノード430に渡されるルート通知パケット30eには、メッセージフラグ”ルート探索返信”、宛先(To)”ノード「A」の匿名ID#1”、送信元(From)”ノード「X」の公開ID”、宛先オニオン”^Eid+EPk{^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}}”、戻りオニオン(無し)、ルート情報”ATPk(Xid,XPk)”、返信暗号化用一時鍵情報”ATPk,APk(ATSk)”が登録されている。ここで、ルート情報におけるXidはノード「X」のノードIDであり、XPkはノード「X」の固定公開鍵である。
【0117】
P2Pオニオンノード430からP2Pオニオンノード420に渡されるルート通知パケット30fでは、宛先オニオンが^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}に変更されている。このように、ノード名「E」のP2Pオニオンノード430では、自分のノードIDを宛先オニオンから削除し、残りの情報を自分の固定秘密鍵で復号している。これにより、ルート通知パケットの伝送経路が秘匿されると共に、次の転送先(Did)のみが認識可能となる。また、ルート情報には、ATPk(Eid,EPk)がスタックされている。
【0118】
P2Pオニオンノード420からP2Pオニオンノード200に渡されるルート通知パケット30gでは、宛先オニオンが^Bid+BPk{^Aid+APk(Aid)}に変更されている。また、ルート情報には、ATPk(Did,DPk)がスタックされている。
【0119】
P2Pオニオンノード200からP2Pオニオンノード100に渡されるルート通知パケット30hでは、宛先オニオンが^Aid+APk(Aid)に変更されている。また、ルート情報には、ATPk(Bid,BPk)がスタックされている。
【0120】
ルート通知パケット30hを受け取ったP2Pオニオンノード100は、宛先によって、自分宛であることを認識できる。また、ルート情報を、一時秘密鍵で復号すれば匿名通信の伝送経路(匿名ルート)を認識できる。その結果、匿名ルート情報保持部143には、1以上の匿名ルート情報が格納される。
【0121】
図15は、匿名ルート情報保持部内のデータ構造例を示す図である。図15には、図13に示した2つの経路で返信されたルート通知パケット30d,30hに基づいて格納された匿名ルート情報143a,143bを示している。
【0122】
匿名ルート情報143aには、ルート情報として「Bid→Cid→Eid→Xid」が設定されている。これは、左側のノードIDで示されるP2Pオニオンノード程、送信PeerであるP2Pオニオンノードに近いことを示している。すなわち、ルート情報で示されるノードIDの配列の左から右に向かってパケットを転送することで、ノードID「Xid」のP2Pオニオンノード300にパケットが到達する。
【0123】
また、匿名ルート情報143aには、ルート上の各P2Pオニオンノードの固定公開鍵「BPk,CPk,EPk,XPk」が登録されている。この固定公開鍵を利用することで、オニオンルーティングを行うためのパケットの暗号化が可能となる。
【0124】
匿名ルート情報143bには、ルート情報として「Bid→Did→Eid→Xid」と、ルート上の各P2Pオニオンノードの固定公開鍵「BPk,DPk,EPk,XPk」とが登録されている。
[匿名通信機能]
次に、取得した匿名ルート経由の匿名通信機能について説明する。
【0125】
図16は、匿名通信機能を示す概念図である。図16には、P2Pオニオンノード100からP2Pオニオンノード200を経由してP2Pオニオンノード300宛のデータパケット40を送信する場合の例を示している。このとき、送信PeerであるP2Pオニオンノード100では匿名データ送信部121が処理を実行し、中継PeerであるP2Pオニオンノード200では匿名データ中継部222が処理を実行し、受信PeerであるP2Pオニオンノード300では匿名データ受信部323が処理を実行する。
【0126】
図17は、データパケットのデータ構造例を示す図である。データパケット40は、メッセージフラグ41、宛先(To)42、送信元(From)43、宛先オニオン44、戻り&バックトラックオニオン45、およびペイロード46で構成される。
【0127】
メッセージフラグ41は、パケットの種別を示している。データパケット40の場合には、データ通信用のパケット(通常のパケット)であることを示す情報が設定される。
宛先42には、データパケット40の宛先が設定される。宛先は、受信Peerのの公開IDである。
【0128】
送信元43には、送信peerの匿名IDが設定される。この匿名IDは、匿名ルート探索時とは別のものが使用される。
宛先オニオン44は、宛先までのルートを示す情報である。これは、匿名ルート情報保持部143から取得した匿名ルート情報に基づいて生成される。宛先オニオン44は、匿名ルート上の各P2Pオニオンノードにおいて、次のノードのみが認識できるように各P2Pオニオンノードの公開鍵でルート情報を暗号化したものである。
【0129】
戻り&バックトラックオニオン45は、戻りルートおよびバックトラック処理を行うときのルートを示すルート情報である。バックトラック処理は、予定したルートでの通信ができなかった場合に、他のルート経由でパケットを伝送する処理である。
【0130】
ペイロード46は、転送すべきメッセージを受信Peerの固定公開鍵で暗号化したデータを含む実データである。
次に、匿名通信機能の処理手順について説明する。
【0131】
図18は、匿名通信機能の処理手順を示すシーケンス図である。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS41]送信PeerであるP2Pオニオンノード100のP2Pオニオンルータ120内の匿名データ送信部121は、アプリケーション131からメッセージ送信の指示を受け付ける。
【0132】
[ステップS42]匿名データ送信部121は、匿名ルート情報保持部143の中から送信相手のP2Pオニオンノードまでの匿名ルートを選択する。この際、多数の匿名ルートが有る場合、その中から所定の数の匿名ルートを選択する。たとえば、中継するノード数が少ない匿名ルートを優先的に選択する。
【0133】
[ステップS43]匿名データ送信部121は、データパケット40を生成する。データパケット40には、受信Peerの公開ID、自分の匿名ID、匿名ルート情報、メッセージデータ、自分の一時鍵(一時公開鍵と一時秘密鍵)、等の情報が含められる。
【0134】
具体的には、匿名データ送信部121は、メッセージフラグ41に、データパケットであることを示す情報を設定する。宛先42には、P2Pオニオンノード300の公開IDが設定される。送信元43には、匿名IDが設定される。設定される匿名IDは、匿名ID生成部152によって新たに生成されたものである。
【0135】
宛先オニオン44には、匿名ルート情報保持部143から選択した匿名ルート情報が設定される。この際、匿名データ送信部121は、匿名ルート情報で示されるノードIDを、宛先のノードに近い順に順次選択する。匿名データ送信部121は、最初に選択したノードID(宛先のノードID)を、次に選択したノードIDに対応する固定公開鍵で暗号する。そして、匿名データ送信部121は、順次選択するノードIDを直前に暗号化されたデータに付与し、その次に選択したノードIDに対応する固定公開鍵で全体を暗号化する。そして、匿名データ送信部121は、最後に選択されたノードIDを、直前に暗号化されたデータに付与し、宛先オニオン44のデータが生成される。これにより、データパケットを中継する各ノードは、宛先オニオン44を自分の固定秘密鍵で復号すると、次の送信先のみが認識可能となる。
【0136】
戻り&バックトラックオニオン45には、自分のノードIDと、そのノードIDを固定公開鍵142aで暗号化したデータとが設定される。ペイロード46には、アプリケーション131から渡されたメッセージデータに加え、所定の情報を受信Peerの固定公開鍵で暗号化した情報が設定される。暗号化対象の情報は、メッセージヘッダ、自分の一時公開鍵、および自分の一時秘密鍵を固定公開鍵で暗号化した情報である。なお、このときの一時公開鍵と一時秘密鍵とは、一時鍵生成部151によって新たに生成されたものである。
【0137】
[ステップS44]匿名データ送信部121は、データパケットを匿名ルートに従って送信する。この例では、P2Pオニオンノード200に送信される。
[ステップS45]P2Pオニオンノード200のP2Pオニオンルータ220内の匿名データ中継部222は、データパケット40を受け取り宛先42を確認する。他のP2Pオニオンノード宛であれば、以下の処理を行う。
【0138】
[ステップS46]匿名データ中継部222は、次のルートを選択する。具体的には、匿名データ中継部222は、宛先オニオン44から自分のノードIDを削除する。次に、匿名データ中継部222は、残りの情報を自分の固定秘密鍵で復号する。これにより、次の転送先のノードIDと匿名ルート情報との組が参照可能となる。転送先を示す1以上のノードIDの中から、次の転送先を1つ選択する。選択されなかった匿名ルート情報は、バックトラック処理に使用される。
【0139】
[ステップS47]匿名データ中継部222は、宛先オニオン44を更新する。具体的には、ステップS46で選択したノードIDと、そのノードIDに応じた匿名ルートとの組を宛先オニオン44に設定する。
【0140】
[ステップS48]匿名データ中継部222は、戻り&バックトラックオニオン45を更新する。
具体的には、匿名データ中継部222は、データパケット40の戻り&バックトラックオニオン45に、ステップS46で選択されなかったノードIDと匿名ルート情報との組をバックトラック処理用に追加する。そして、匿名データ中継部222は、戻り&バックトラックオニオン45を自分の固定公開鍵で暗号化すると共に、自分のノードIDを戻り&バックトラックオニオン45に追加する。
【0141】
なお、バックトラック処理用の匿名ルート情報が無い場合、暗号化された情報の内容が戻りオニオンのみとなるため、自分のノードIDに戻りフラグ(^)を付加する。
[ステップS49]匿名データ中継部222は、データパケット40を送信する。データパケット40の送信先は、宛先オニオン44の情報のうち参照可能なノードIDで示されている隣接のP2Pオニオンノードである。
【0142】
[ステップS50]匿名データ中継部222は、送信したデータパケット40が次のノードに正しく伝送されたかどうかを判断する。正常に伝送されていれば、処理を終了する。伝送に失敗したときは、ステップS51に処理を進める。なお、データパケット40送信前に、送信先のノードへの通信が途絶えていることが分かっている場合、ステップS49の送信処理を行わずに処理がステップS51に進められる。
【0143】
[ステップS51]匿名データ中継部222は、別の匿名ルート情報があるか否かを判断する。送信に失敗したデータパケット40の戻り&バックトラックオニオン45に戻りフラグが設定されている場合、別の匿名ルート情報は存在しない(ステップS45で受信したデータパケット40の宛先オニオン44に1つしか匿名ルート情報が含まれておらず、そのデータパケット40の戻り&バックトラックオニオン45に戻りフラグが設定されている場合)。別の匿名ルート情報があれば、処理がステップS52に進められる。別の匿名ルート情報がない場合、処理がステップS55に進められる。
【0144】
[ステップS52]匿名データ中継部222は、データパケット40の宛先オニオン44を更新する。具体的には、匿名データ中継部222は、ステップS51で復号したデータを、宛先オニオン44に設定する。
【0145】
[ステップS53]匿名データ中継部222は、データパケット40の戻り&バックトラックオニオン45を更新する。具体的には、匿名データ中継部222は、データパケット40の戻り&バックトラックオニオン45の内容を空(null)にする。
【0146】
[ステップS54]匿名データ中継部222は、データパケット40を送信する。このときのデータパケット40の送信先は、ステップS51で復号された戻りオニオンで認識可能なノードIDで示されるP2Pオニオンノードである。
【0147】
[ステップS55]匿名データ中継部222は、別の匿名ルート情報が無い場合、データパケットをマルチキャストで、そのとき認識している全ての接続先に送信する。
[ステップS56]データパケット40が受信PeerであるP2Pオニオンノード300に到達すると、P2Pオニオンノード300のP2Pオニオンルータ320内の匿名データ受信部323は宛先を確認する。自分宛のデータパケット40であれば、処理がステップS57に進められる。
【0148】
[ステップS57]匿名データ受信部323は、自分の固定秘密鍵でペイロード46を復号する。
[ステップS58]匿名データ受信部323は、復号されたメッセージヘッダ、送信Peerの鍵情報(一時公開鍵と暗号化された一時秘密鍵)、およびメッセージをアプリケーションに渡す。
【0149】
このようにして、データパケット40が受信Peerに送信される。受信Peerから返信手順は、ルート通知パケット30の送信手順と同様である。
図19は、データパケットの伝送経路を示す図である。図19に示すように、P2Pオニオンノード100から出力されたデータパケット40aは、ルート探索時に発見された匿名ルートの伝送経路が存続していれば、中継Peerである複数のP2Pオニオンノード200,410,430で内容の変更を受けながら、受信PeerであるP2Pオニオンノード300に渡される。
【0150】
データパケット40aを受け取ったP2Pオニオンノード200は、宛先オニオンと戻り&バックトラックオニオンとを更新したデータパケット40bを、P2Pオニオンノード410に送信する。データパケット40bを受け取ったP2Pオニオンノード410は、宛先オニオンと戻り&バックトラックオニオンとを更新したデータパケット40cを、P2Pオニオンノード430に送信する。データパケット40cを受け取ったP2Pオニオンノード430は、宛先オニオンと戻り&バックトラックオニオンとを更新したデータパケット40dを、P2Pオニオンノード300に送信する。
【0151】
図20は、データパケットの状態遷移状況を示す図である。P2Pオニオンノード100から出力されるデータパケット40aは、メッセージフラグ”通常”、宛先(To)”ノード「X」の公開ID、送信元(From)”ノード「A」の匿名ID#2、宛先オニオン”Bid+BPk{Cid+CPk(Eid+EPk(Xid)),Did+DPk(Eid+EPk(Xid))}”、戻り&バックトラックオニオン”^Aid+APk(Aid)”、ペイロード”XPk{メッセージヘッダ、ATPk,APk(ATSk)、メッセージデータ}”が設定されている。
【0152】
P2Pオニオンノード200からP2Pオニオンノード410に渡されるデータパケット40bでは、宛先オニオンが”Cid+CPk(Eid+EPk(Xid))”に変更され、戻り&バックトラックオニオンが”Bid+BPk{^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))}”に変更されている。
【0153】
P2Pオニオンノード410からP2Pオニオンノード430に渡されるデータパケット40cでは、宛先オニオンが”Eid+EPk(Xid)”に変更され、戻り&バックトラックオニオンが”Cid+CPk{Bid+BPk{^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))}}”に変更されている。
【0154】
P2Pオニオンノード430からP2Pオニオンノード300に渡されるデータパケット40dでは、宛先オニオンが”Xid”に変更され、戻り&バックトラックオニオンが”Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))}}}”に変更されている。
【0155】
このように、中継される毎に、宛先オニオンの暗号化された情報が1回ずつ復号され、その都度、次の転送先が認識可能となる。また、戻り&バックトラックオニオンには、中継される毎に暗号化され、中継したP2PオニオンノードのノードIDが付加される。
【0156】
ここで、P2Pオニオンノード410からP2Pオニオンノード430へのデータパケット40cの送信に失敗した場合を考える。そのとき、P2Pオニオンノード410では、バックトラック処理が行われる。
【0157】
図21は、バックトラック処理におけるデータパケットの伝送経路を示す図である。P2Pオニオンノード410においてデータパケット40cの送信に失敗すると、P2Pオニオンノード410からP2Pオニオンノード200に対してデータパケット40eが送信される。
【0158】
P2Pオニオンノード200は、別ルートであるP2Pオニオンノード420に対してデータパケット40fを送信する。P2Pオニオンノード420はP2Pオニオンノード430に対してデータパケット40gを送信する。P2Pオニオンノード430は、P2Pオニオンノード300に対してデータパケット40hを送信する。
【0159】
図22は、バックトラック転送時のデータパケットの状態遷移状況を示す図である。P2Pオニオンノード410から送信されるデータパケット40eは、メッセージフラグ”通常”、宛先(To)”ノード「X」の公開ID、送信元(From)”ノード「A」の匿名ID#2、宛先オニオン”Bid+BPk{^Aid+APk(Aid),Did+DPk(Eid+EPk(Xid))}”、戻り&バックトラックオニオン”null”、ペイロード“XPk{メッセージヘッダ、ATPk,APk(ATSk)、メッセージデータ}”が設定されている。
【0160】
この例では、宛先オニオンには、別の匿名ルート情報と、戻り匿名ルート情報とが含まれている。そこで、P2Pオニオンノード200は、別の匿名ルート情報を以降の宛先オニオンとし、戻り匿名ルート情報は戻り&バックトラックオニオンに設定する。
【0161】
P2Pオニオンノード200からP2Pオニオンノード420に渡されるデータパケット40fでは、宛先オニオンがDid+DPk(Eid+EPk(Xid))”に変更され、戻り&バックトラックオニオンが”^Bid+BPk{^Aid+APk(Aid)}”に変更されている。戻り&バックトラックオニオンは、内容が戻り匿名ルート情報のみであるため戻りフラグが設定されている。
【0162】
P2Pオニオンノード420からP2Pオニオンノード430に渡されるデータパケット40gでは、宛先オニオンが”Eid+EPk(Xid)”に変更され、戻り&バックトラックオニオンが”^Cid+CPk{^Bid+BPk{^Aid+APk(Aid),}}”に変更されている。
【0163】
P2Pオニオンノード430からP2Pオニオンノード300に渡されるデータパケット40hでは、宛先オニオンが”Xid”に変更され、戻り&バックトラックオニオンが”^Eid+EPk{^Cid+CPk{^Bid+BPk{^Aid+APk(Aid)}}}”に変更されている。
【0164】
このようにして、バックトラック処理により、最初に選択した匿名ルートでのパケット転送に失敗しても、別の匿名ルート経由でデータパケットを受信Peerに届けることができる。このようなバックトラック処理は再帰的に行われる。すなわち、バックトラックによる伝送にも失敗したときは、さらに別の匿名ルートに基づいてデータパケットのバックトラック処理が行われる。
【0165】
ここで、データパケットの宛先オニオンに設定されている全ての匿名ルートにおいて伝送が失敗したときには、マルチキャストでデータパケットが転送される。なお、未送信の匿名ルートの存在の有無は、戻り&バックトラックオニオン45の戻りフラグの有無で判断できる。
【0166】
たとえば、P2Pオニオンノード420からP2Pオニオンノード430へのデータパケット40gの送信に失敗したとき、P2Pオニオンノード420では、データパケット40gの戻り&バックトラックオニオン45の戻りフラグの有無を判断する。戻りフラグが設定されている場合、他の匿名ルートはない。従って、P2Pオニオンノード420は、マルチキャスト送信が必要と判断する。
【0167】
図23は、マルチキャストにおけるデータパケットの伝送経路を示す図である。P2Pオニオンノード430においてデータパケット40gの送信に失敗すると、P2Pオニオンノード420からそのとき接続されている他のP2Pオニオンノード460(ノード名「F」)に対してデータパケット40iが送信される。P2Pオニオンノード460からP2Pオニオンノード300までの経路が存在していれば、データパケットがP2Pオニオンノード300に伝送される。この場合でも、送信Peerや受信Peerの匿名性は保たれる。
【0168】
以上のようにして、受信Peerは送信peerの匿名性を保持したまま、受信メッセージに対する返信を行うことができる。返信経路は戻り&バックトラックオニオンに保持されるため、受信Peerは送信peerに対して、戻りオニオン(戻りフラグ「^」の設定された匿名ルート情報)を用いてオニオンルーティングで返信できる。返信時のオニオンルーティングは、返信用P2Pオニオンルートが経路を1本しか持たないことを除いて送信と同じである。つまり、P2Pオニオンルートを利用したルーティングに失敗した場合には、P2Pマルチキャスト機能によって返信メッセージを到達させる。この場合も匿名性は担保される。
【0169】
[匿名掲示板への適用例]
上記のような匿名通信網を電子掲示板に適用すれば、不特定多数のユーザ間の匿名の情報交換を安全に行うことができる。
【0170】
図24は、匿名掲示板に適用した匿名通信網の構成例を示す図である。図24の例では、匿名通信網10内のP2Pオニオンノード300にデータベース(DB)360が接続され、掲示板システムが構築されている。この掲示板システムは、一般に公開された公開DBである。この場合、P2Pオニオンノード300の公開IDは、雑誌やインターネットのウェブページ等で公開されている。
【0171】
このように、匿名掲示板機能では、匿名通信網10上のP2Pオニオンノード300に匿名掲示板(公開DB)を実装し、他のP2Pオニオンノードから、匿名掲示板(公開DB)に投稿された情報を利用する。
【0172】
掲示板(公開DB)を利用するP2Pオニオンノードは、主に以下の機能を実現する。
1.匿名の掲示板(公開DB)に投稿できる。
2.匿名の掲示板(公開DB)の投稿データを検索できる。
3.匿名の掲示板(公開DB)に投稿された情報に返信できる。
【0173】
掲示板(公開DB)は、匿名通信網10上の一P2Pオニオンノード300上で動作するアプリケーションとして実装される。各P2Pオニオンノードには、この掲示板(公開DB)ノード(P2Pオニオンノード300)に上記3つの機能を行うためのメッセージを匿名通信網10経由で通知するための機能が実装される。掲示板(公開DB)ノード(P2Pオニオンノード300)には、匿名通信網10経由で通知されたメッセージに応答した投稿データの格納、投稿データの検索、検索結果の返信機能が実現される。
【0174】
以下に匿名掲示板が実現する機能を示す。
1.投稿された書き込みが誰によってなされたか探知できない(投稿者の秘匿機能)。
2.投稿された情報を指定時間経過すると自動的に消去する。
3.検索が誰によってなされたか探知できない(検索者の秘匿機能)。
4.検索したときに探している投稿データがなかった場合でも目的の投稿データが後から投稿された場合に通知されるよう予約可能とする。
5.検索予約は指定時間経過すると自動的にキャンセルされる。
【0175】
なお、DB360としては、たとえば、XSR(XML Service Registry)を利用して実現できる。XSRは株式会社富士通プライムソフトテクノロジが所有するオブジェクトデータベース技術である。本ソフトの機能は以下の通りである。
【0176】
・UP機能:オブジェクトを保存する機能。
オブジェクトの保存期間に有効期限が設定できる。有効期限が切れたオブジェクトはXSRから自動的に消去される。
【0177】
・LOOKUP機能:ユーザが探しているオブジェクトを検索できる。
検索を予約する機能を有する。
・RESPONSE機能:予約された検索にマッチする情報があればユーザに非同期に通知する。
【0178】
また、メッセージ間のアンリンカビリティを高めるために、Peerノードの匿名識別子、公開鍵の使い捨て管理を以下の様に行う。
1.秘密鍵とランダムな数値を使用して匿名識別子を生成する。その秘密鍵をもつ自分だけがその匿名識別子に対して自分の識別子であるとの確認ができる。
2.一時公開鍵・一時秘密鍵ペアを生成する。その一時秘密鍵を会員証の公開鍵で暗号化し、一時公開鍵といっしょに返信情報としてメッセージに付加する。返信者はその一時公開鍵で返信メッセージを暗号化し返信する。返信された暗号化データは会員証の秘密鍵を持つ自分だけが復号できる。
3.緊急事態において匿名識別子の匿名性を暴くには、上記「匿名通信基盤接続認証機能」での認証局へ匿名識別子(生成に使用したランダム数を含む)を持込み、登録されている全ての秘密鍵総当たりで匿名識別子に含まれるランダム数を使用して匿名識別子を生成し、一致する秘密鍵を特定する。
【0179】
以上のような構成の匿名掲示板を匿名通信網10上に設置することで、匿名のメッセージ交換が可能となる。
たとえば、ユーザは、P2Pオニオンノード100を用いてP2Pオニオンノード300に投稿データを含むデータパケット51を送信し、DB360に投稿データを登録することができる。投稿データは、たとえば、P2Pオニオンノード420を用いて、P2Pオニオンノード300に検索要求を含むデータパケット52を送信し、DB360に格納されている投稿データの検索行うことができる。
【0180】
P2Pオニオンノード300は検索要求に応じてDB360内の投稿データを検索し、検索結果を取得する。そして、P2Pオニオンノード300は、P2Pオニオンノード420に対して検索結果を含むデータパケット53を送信する。これにより、P2Pオニオンノード420に検索結果が渡される。
【0181】
なお、検索結果には、掲示板ノード(P2Pオニオンノード300)から投稿者のP2Pオニオンノードまでの匿名ルート情報(戻りオニオン)や、投稿者のP2Pオニオンノード用の一時公開鍵などが含められる。これにより、検索要求を出力したP2Pオニオンノードにおいて、投稿者のP2Pオニオンノードまでの匿名ルート情報を得ることができると共に、投稿者宛のメッセージを投稿者のP2Pオニオンノードでのみ復号可能な形式で暗号化することができる。
【0182】
図25は、投稿データを含むデータパケットの例を示す図である。P2Pオニオンノード100で生成されるデータパケット51aは、メッセージフラグ”通常”、宛先(To)”ノード「X」の公開ID、送信元(From)”ノード「A」の匿名ID#3”、宛先オニオン”Bid+BPk{Cid+CPk(Eid+EPk(Xid))}”、戻り&バックトラックオニオン”^Aid+APk(Aid)”、ペイロード”XPk{メッセージヘッダ、ATPk,APk(ATSk)、メッセージデータ}”が設定されている。なお、この例では説明を簡単にするために、宛先オニオンには1つの匿名ルート情報のみが設定されているものとする。
【0183】
このようなデータパケット51bが伝送途中で一度も送信に失敗せずにP2Pオニオンノード300に到達したとき、そのときのデータパケット51bでは、宛先オニオンが”Xid”に変更され、戻り&バックトラックオニオンが”Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}}”に変更される。
【0184】
このようなデータパケット51aを受け取ったP2Pオニオンノード300は、DB360に所定の情報を格納する。
図26は、DB内のデータ構造例を示す図である。DB360内には、匿名ID、戻りオニオン、返信暗号化用一時鍵情報、及びメッセージデータの項目が、互いに関連付けて登録されている。たとえば、データパケット51bに基づいて、匿名IDの項目には、”ノード「A」の匿名ID#3”が登録されている。戻りオニオンには、”Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}}”が登録されている。返信暗号化用一時鍵情報には、”ATPk,APk(ATSk)”が登録されている。メッセージデータの項目には、”投稿リクエスト、アップ日時、実データなどの情報が登録されている。
【0185】
その後、P2Pオニオンノード420からP2Pオニオンノード300に対して、検索要求を含むデータパケット52が送信される。
図27は、検索要求を含むデータパケットの例を示す図である。P2Pオニオンノード420で生成されるデータパケット52aは、メッセージフラグ”通常”、宛先(To)”ノード「X」の公開ID、送信元(From)”ノード「D」の匿名ID#4”、宛先オニオン”Eid+EPk(Xid)”、戻り&バックトラックオニオン”^Did+DPk(Did)”、ペイロード”XPk{メッセージヘッダ、DTPk,DPk(DTSk)、メッセージデータ}”が設定されている。
【0186】
このようなデータパケット52aが伝送途中で一度も送信に失敗せずにP2Pオニオンノード300に到達したとき、そのときのデータパケット52bでは、宛先オニオンが”Xid”に変更され、戻り&バックトラックオニオンが”Eid+EPk{^Did+DPk(Did)}”に変更される。ここで、ペイロード内のデータは「メッセージヘッダ、DPk(DTSk)、DTPk、メッセージデータ(検索リクエスト、アップ日時、・・・)」である。
【0187】
データパケット52bを受け取ったP2Pオニオンノード300は、検索リクエスト(検索キーワード等が示される)の指示に従ってDB360を検索する。ここで、検索結果としてデータパケット51bによって投稿された投稿データが得られたものとする。すると、P2Pオニオンノード300は、P2Pオニオンノード420に対して、検索結果を含むデータパケット53を送信する。
【0188】
図28は、検索結果を含むデータパケットの例を示す図である。P2Pオニオンノード300で生成されるデータパケット53aは、メッセージフラグ”リクエストレスポンス”、宛先(To)”ノード「D」の匿名ID#4”、送信元(From)”ノード「X」の公開ID”、宛先オニオン”Eid+EPk{^Did+DPk(Did)}”、戻り&バックトラックオニオン”^Xid+XPk(Xid)”、ペイロード”XPk{メッセージヘッダ、DTPk,DPk(DTSk)、メッセージデータ}”が設定されている。
【0189】
このようなデータパケット53aが伝送途中で一度も送信に失敗せずにP2Pオニオンノード300に到達したとき、そのときのデータパケット53bでは、宛先オニオンが” ^Did+DPk(Did)”に変更され、戻り&バックトラックオニオンが”Eid+EPk{^Xid+XPk(Xid)}”に変更される。ここで、ペイロード内のデータは「メッセージヘッダ、DPk(DTSk)、DTPk{ノード「A」匿名ID#3、メッセージデータ(検索リクエスト、アップ日時、・・・)、Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}}}」である。DPk(DTSk)は、P2Pオニオンノード420の一時復号鍵を固定公開鍵で暗号化したものである。メッセージデータは、検索結果であり、この例では、データパケット51aに含まれる実データである。「Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}}」は、P2Pオニオンノード300からP2Pオニオンノード100への戻りオニオンである。また、ノード「A」匿名ID#3、メッセージデータ、およびEid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}(戻りオニオン)は、P2Pオニオンノード420の一時公開鍵(DTPk)で暗号化されている。
【0190】
ペイロード内の暗号化されたデータを、P2Pオニオンノード420の一時秘密鍵(DTSk)で復号することで、検索結果を参照できる。P2Pオニオンノード420を使用しているユーザは、検索結果を参照することで、投稿データの内容を確認する。投稿内容に対して応答する場合、ユーザは、P2Pオニオンノード420に対して返信メッセージを入力し、その後、返信の指示を入力する。
【0191】
すると、P2Pオニオンノード420は、投稿データへの返信メッセージを含むデータパケットをP2Pオニオンノード430に対して送信する。
図29は、返信メッセージを含むデータパケットの例を示す図である。P2Pオニオンノード420で生成されるデータパケット61は、メッセージフラグ”返信”、宛先(To)”ノード「A」の匿名ID#3”、送信元”ノード「D」の匿名ID5”、宛先オニオン”Eid+EPk{^Xid+XPk(Xid)}、Eid+EPk{Cid+CPk{Bid+BPk{^Aid+APk(Aid)}}}”、戻り&バックトラックオニオン”^Did+DPk(Did)”、ペイロード”メッセージヘッダ、DTPk、DPk(DTSk)、ATPk(返信メッセージ)、APk(ATSk)”が設定されている。
【0192】
ここで、宛先オニオンは、P2Pオニオンノード420からP2Pオニオンノード300までの戻りオニオンに、P2Pオニオンノード300からP2Pオニオンノード100までの戻りオニオンを繋いだものである。中継Peerとなる各P2Pオニオンノードは、前に繋げられている戻りオニオンから順に処理する。これにより、P2Pオニオンノード420からP2Pオニオンノード100までの匿名ルート情報が、宛先オニオンに設定されることとなる。
【0193】
また、ペイロード内の「DTPk、DPk(DTSk)」は、返信暗号化用一時鍵情報であり、P2Pオニオンノード100からP2Pオニオンノード420への返信用に利用される。「ATPk(返信メッセージ)」は、P2Pオニオンノード100宛の返信メッセージをP2Pオニオンノード100の一時公開鍵で暗号化していることを示している。
【0194】
図30は、返信内容を含むデータパケットの伝送経路を示す図である。P2Pオニオンノード420からP2Pオニオンノード430に送信されたデータパケット61は、宛先オニオンや戻り&バックトラックオニオンの更新を受けながら中継される。P2Pオニオンノード430は、データパケット62をP2Pオニオンノード300に送信する。P2Pオニオンノード300は、データパケット63をP2Pオニオンノード430に送信する。P2Pオニオンノード430は、データパケット64をP2Pオニオンノード410に送信する。P2Pオニオンノード410は、データパケット65をP2Pオニオンノード200に送信する。P2Pオニオンノード200は、データパケット66をP2Pオニオンノード100に送信する。
【0195】
このようにして、掲示板を介したユーザ間の互いに匿名の通信が可能となる。しかも、本発明を適用した掲示板を利用することにより、不特定多数のユーザ間で匿名の情報交換が行える。さらには、ノードIDや一時公開鍵が使い捨てであり、所定の手続き毎に別の値が使用されるため、同一投稿者が掲示板へ投稿した複数のメッセージに関して、投稿者の同一性を隠しておくことができる。
【0196】
このようなシステムを利用すれば、個人的な情報を交換しても、その情報に対応する個人を悪意のある第三者から隠すことができる。そのため、このような匿名掲示板の技術は、ネットワーク技術を活用した予防医療・ヘルスケアサービス(HCS)に応用することができる。HCS事業を実現するためには受益者本人の体調、生理データ等、秘匿の必要性の高いデータに対するセキュリティが非常に重要な要因となる。そこで、HCSに上記匿名掲示板を適用すると、ユーザの生理データを、P2Pオニオンノード100を用いて匿名のままP2Pオニオンノード300に登録することができる。そして、登録された生理データを他のP2Pオニオンノード420を使用する医者が参照し、生活習慣のアドバイス等をユーザに対して匿名のまま送信することができる。
【0197】
以上説明したように、本発明の実施の形態によれば、データ送信前に、送信相手までのルートを探索し、そのルート経由で匿名通信を行うための情報(各ノードの公開鍵)を収集する。そのため、ネットワーク構成が動的に変更する場合でも、匿名通信が可能となる。その結果、P2Pネットワークシステムなどの不安定なネットワークシステムにおいて、データを送受信する場合に、送信経路を動的に検索できると共に、送受信者の匿名性を守ることができるという効果を奏する。
【0198】
しかも、匿名通信を行う際のデータパケットには、転送中の匿名ルートとは別の匿名ルートの情報が含まれているため、送信に失敗した場合には、別の匿名ルート経由でデータを伝送させることができる。これにより、データ伝送の確実性が増す。
【0199】
また、データパケットに含まれる全ての匿名ルート経由でのデータ伝送に失敗した場合には、マルチキャストで他のルート経由でのデータ送信を試みるようにした。そのため、ルート探索時には存在していないが、データ送信時には存在している別のルートが有る場合、そのルート経由で宛先のP2Pオニオンノードにパケットを送信することが可能となる。
【0200】
さらに、通信の際の匿名性を高めるために、他のP2Pオニオンノードに通知する公開鍵を一時公開鍵とし、所定の通信(たとえば、要求の送信とその要求に対する応答)毎に一時公開鍵を作り直すようにしたため、公開鍵の内容を監視しても、複数のパケットが同一のP2Pオニオンノードから出力されたか否かを同定することができない。
【0201】
さらに、匿名IDによって自分宛のパケットであるか否かを判断し、しかも匿名IDを、所定の通信(たとえば、要求の送信とその要求に対する応答)毎に作り直すようにしたため、これらの識別情報によってP2Pオニオンノードを同定することはできない。
【0202】
なお、上記の説明では返信暗号化用一時鍵情報の中に、固定公開鍵で暗号化された送信Peerの一時秘密鍵を含めているが、これは、一時公開鍵と一時秘密鍵との組を送信Peerで管理せずにするための処理である。
【0203】
また、上記の処理機能はコンピュータによって実現することができ、その場合、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 disc)などがある。
【0204】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0205】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0206】
(付記1) 送信元を隠した状態で宛先までの伝送経路探索処理をコンピュータで実行するための匿名ルート探索要求方法において、
宛先識別子で前記宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報とし、
任意に生成した匿名識別子、前記宛先識別子、前記返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成し、
前記ルート探索パケットをブロードキャストで送信する、
ことを特徴とする匿名ルート探索要求方法。
【0207】
(付記2) 固定公開鍵と固定秘密鍵との組が予め用意されており、前記固定公開鍵を用いて前記自ノード識別子の暗号化を行うことを特徴とする付記1記載の匿名ルート探索要求方法。
【0208】
(付記3) 前記経路探索要求を受け取る毎に一時公開鍵と一時秘密鍵との組を生成し、生成した前記一時公開鍵を返信データ暗号化用の前記送信元公開鍵とすることを特徴とする付記1記載の匿名ルート探索要求方法。
【0209】
(付記4) 固定公開鍵と固定秘密鍵との組が予め用意されており、前記一時秘密鍵を前記固定公開鍵で暗号化し、前記ルート探索パケットに含めることを特徴とする付記3記載の匿名ルート探索要求方法。
【0210】
(付記5) 前記ルート探索パケットに対する応答として、前記コンピュータから前記宛先までのルート上の各ノードのノード識別子と公開鍵との組を前記送信元公開鍵で暗号化したルート情報を含むルート通知パケットを受け取ると、前記ルート情報を前記送信元公開鍵に対応する送信元秘密鍵で復号し、
復号により得られた前記ノード識別子と前記公開鍵との組を記録装置に格納する、
ことを特徴とする付記1記載の匿名ルート探索要求方法。
【0211】
(付記6) 送信元が隠された伝送経路探索要求をコンピュータで中継するための匿名ルート探索要求中継方法において、
前記送信元の匿名識別子、探索相手を指定する宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、前記返信用匿名ルート情報と前記隣接ノード識別子とを自分のみが復号可能な形式で暗号化し、
前記ルート探索パケットに自分の識別情報である自ノード識別子を追加し、
前記ルート探索パケットをブロードキャストで送信する、
ことを特徴とする匿名ルート探索要求中継方法。
【0212】
(付記7) 前記ブロードキャストでの送信は、前記ルート探索パケットが入力された伝送路以外の伝送路に対して行うことを特徴とする付記6記載の匿名ルート探索要求中継方法。
【0213】
(付記8) 匿名ルート経由の匿名通信をコンピュータで中継するための匿名データ中継方法において、
前記匿名ルート上の次の送信先を示す次ノード識別子と次の送信先から宛先までの匿名ルート情報とが前記コンピュータの公開鍵で暗号化された宛先匿名ルート情報、前記コンピュータから送信元までの伝送ルートを示す戻り匿名ルート情報、および前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子を含むデータパケットを受け取ると、前記宛先匿名ルート情報を前記公開鍵に対応する秘密鍵で復号して、前記次ノード識別子を判別するとともに、復号されたデータを新たな前記宛先匿名ルート情報として前記データパケットに設定し、
前記戻り匿名ルート情報と前記隣接ノード識別子とを前記公開鍵で暗号化して新たな前記戻り匿名ルート情報とし、
前記データパケットに前記コンピュータの自ノード識別子を追加し、
前記次ノード識別子で示されるノードに対して、前記データパケットを送信する、
ことを特徴とする匿名データ中継方法。
【0214】
(付記9) 前記宛先匿名ルート情報の復号により隣接ノードのノード識別子と前記匿名ルート情報との組が複数得られたとき、1つの組を新たな前記宛先ルート情報とし、他の組をバックトラック匿名ルート情報として前記戻り匿名ルート情報と合わせて前記公開鍵で暗号化し、暗号化されたデータに前記コンピュータの自ノード識別子を付加して新たな前記戻り匿名ルート情報とすることを特徴とする付記8記載の匿名データ中継方法。
【0215】
(付記10) 前記データパケットの送信に失敗した場合、前記データパケットの前記宛先匿名ルート情報を前記データパケット受信時の前記戻り匿名ルート情報に置き換えて、前記データパケットを送信してきたノードへ前記データパケットを返送することを特徴とする付記8記載の匿名データ中継方法。
【0216】
(付記11) 返送された前記データパケットの前記宛先匿名ルート情報を復号したとき、前記バックトラック匿名ルート情報が含まれていた場合、前記バックトラック匿名ルート情報で示されるノード識別子を前記次ノード識別子とすることを特徴とする付記10記載の匿名データ中継方法。
【0217】
(付記12) 前記データパケットの送信に失敗した場合、前記宛先匿名ルート情報と前記戻り匿名ルート情報とのいずれにも他の匿名ルート情報がなければ、前記コンピュータに隣接している各ノードに、前記データパケットをマルチキャストで送信することを特徴とする付記8記載の匿名データ中継方法。
【0218】
(付記13) 送信元が隠された伝送経路探索要求に対して宛先となるコンピュータで応答するための匿名ルート探索要求応答方法において、
前記送信元の匿名識別子、前記コンピュータ宛のパケットを示す宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の受信ノード公開鍵とを前記送信元公開鍵で暗号化してルート情報とし、
前記匿名識別子でルート通知先が指定され、前記返信用匿名ルート情報、前記ルート情報、および前記送信元公開鍵を含むルート通知パケットを生成し、
前記隣接ノード識別子で示されるノードに対して前記ルート通知パケットを送信する、
ことを特徴とする匿名ルート探索要求応答方法。
【0219】
(付記14) 宛先までの伝送経路を送信元を隠して探索するための匿名ルート探索要求プログラムにおいて、
コンピュータに、
宛先識別子で前記宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報とし、
任意に生成した匿名識別子、前記宛先識別子、前記返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成し、
前記ルート探索パケットをブロードキャストで送信する、
処理を実行させることを特徴とする匿名ルート探索要求プログラム。
【0220】
(付記15) 送信元が隠された伝送経路探索要求を中継するための匿名ルート探索要求中継プログラムにおいて、
コンピュータに、
前記送信元の匿名識別子、探索相手を指定する宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、前記返信用匿名ルート情報と前記隣接ノード識別子とを自分のみが復号可能な形式で暗号化し、
前記ルート探索パケットに自分の識別情報である自ノード識別子を追加し、
前記ルート探索パケットをブロードキャストで送信する、
処理を実行させることを特徴とする匿名ルート探索要求中継プログラム。
【0221】
(付記16) 匿名ルート経由の匿名通信を中継するための匿名データ中継プログラムにおいて、
コンピュータに、
前記匿名ルート上の次の送信先を示す次ノード識別子と次の送信先から宛先までの匿名ルート情報とが前記コンピュータの公開鍵で暗号化された宛先匿名ルート情報、前記コンピュータから送信元までの伝送ルートを示す戻り匿名ルート情報、および前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子を含むデータパケットを受け取ると、前記宛先匿名ルート情報を前記公開鍵に対応する秘密鍵で復号して、前記次ノード識別子を判別するとともに、復号されたデータを新たな前記宛先匿名ルート情報として前記データパケットに設定し、
前記戻り匿名ルート情報と前記隣接ノード識別子とを前記公開鍵で暗号化して新たな前記戻り匿名ルート情報とし、
前記データパケットに前記コンピュータの自ノード識別子を追加し、
前記次ノード識別子で示されるノードに対して、前記データパケットを送信する、
処理を実行させることを特徴とする匿名データ中継プログラム。
【0222】
(付記17) 送信元が隠された伝送経路探索要求に対して宛先となるコンピュータで応答するための匿名ルート探索要求応答プログラムにおいて、
コンピュータに、
前記送信元の匿名識別子、前記コンピュータ宛のパケットを示す宛先識別子、前記送信元から前記コンピュータまでの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の受信ノード公開鍵とを前記送信元公開鍵で暗号化してルート情報とし、
前記匿名識別子でルート通知先が指定され、前記返信用匿名ルート情報、前記ルート情報、および前記送信元公開鍵を含むルート通知パケットを生成し、
前記隣接ノード識別子で示されるノードに対して前記ルート通知パケットを送信する、
処理を実行させることを特徴とする匿名ルート探索要求応答プログラム。
【0223】
(付記18) 宛先までの伝送経路を送信元を隠して探索する匿名ルート探索要求装置において、
宛先識別子で前記宛先を指定した経路探索要求を受け取ると、自分の識別情報である自ノード識別子を自分のみが復号可能な形式で暗号化して返信用匿名ルート情報を生成する返信用匿名ルート情報生成手段と、
任意に生成した匿名識別子、前記宛先識別子、前記返信用匿名ルート情報、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを生成するルート探索パケット生成手段と、
前記ルート探索パケットをブロードキャストで送信する送信手段と、
を有することを特徴とする匿名ルート探索要求装置。
【0224】
(付記19) 送信元が隠された伝送経路探索要求を中継するための匿名ルート探索要求中継装置において、
前記送信元の匿名識別子、探索相手を指定する宛先識別子、前記送信元から自装置までの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、前記返信用匿名ルート情報と前記隣接ノード識別子とを自分のみが復号可能な形式で暗号化する暗号化手段と、
前記ルート探索パケットに自分の識別情報である自ノード識別子を追加する自ノード識別子追加手段と、
前記ルート探索パケットをブロードキャストで送信する送信手段と、
を有することを特徴とする匿名ルート探索要求中継装置。
【0225】
(付記20) 送信元が隠された伝送経路探索要求に対して応答するための匿名ルート探索要求応答装置において、
前記送信元の匿名識別子、自装置宛のパケットを示す宛先識別子、前記送信元から自装置までの伝送ルートが暗号化された返信用匿名ルート情報、前記伝送ルート上で隣接するノードの識別情報である隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含むルート探索パケットを受け取ると、自分の識別情報である自ノード識別子と、自ノード宛て情報の暗号化用の受信ノード公開鍵とを前記送信元公開鍵で暗号化してルート情報を生成するルート情報生成手段と、
前記匿名識別子でルート通知先が指定され、前記返信用匿名ルート情報、前記ルート情報、および前記送信元公開鍵を含むルート通知パケットを生成するルート通知パケット生成手段と、
前記隣接ノード識別子で示されるノードに対して前記ルート通知パケットを送信する送信手段と、
を有することを特徴とする匿名ルート探索要求応答装置。
【0226】
(付記21) ネットワーク上で匿名のメッセージ交換を行うための電子掲示板提供装置において、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および前記第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録する登録手段と、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、前記第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索する検索手段と、
前記検索手段で検出された前記メッセージ、前記第1戻り匿名ルート情報、および前記第1隣接ノード識別子を前記送信元公開鍵で暗号化する暗号化手段と、
暗号化されたデータ、および前記第2戻りルート情報を含む応答データパケットを生成するパケット生成手段と、
前記第2隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する送信手段と、
を有することを特徴とする電子掲示板提供装置。
【0227】
(付記22) ネットワーク上で匿名のメッセージ交換を行うための電子掲示板へメッセージをコンピュータで投稿するためのメッセージ投稿方法において、
前記メッセージの投稿要求を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻りルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、返信データ暗号化用の送信元公開鍵、および前記メッセージを含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とするメッセージ投稿方法。
【0228】
(付記23) ネットワーク上で匿名のメッセージ交換を行うための電子掲示板に投稿されたメッセージをコンピュータで検索するための投稿メッセージ検索方法において、
前記メッセージの検索条件を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻りルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、および返信データ暗号化用の送信元公開鍵および前記検索条件を含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とする投稿メッセージ検索方法。
【0229】
(付記24) ネットワーク上の匿名のメッセージ交換を行うための電子掲示板をコンピュータで提供するための電子掲示板提供プログラムにおいて、
前記コンピュータに、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および前記第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録し、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、前記第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索し、
検索手段で検出された前記メッセージ、前記第1戻り匿名ルート情報、および前記第1隣接ノード識別子を前記送信元公開鍵で暗号化し、
暗号化されたデータ、および前記第2戻りルート情報を含む応答データパケットを生成し、
前記第2隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する、
処理を実行させることを特徴とする電子掲示板提供プログラム。
【図面の簡単な説明】
【0230】
【図1】実施の形態に適用される発明の概念図である。
【図2】匿名通信網の概念図である。
【図3】本発明の実施の形態に用いるP2Pオニオンノードのハードウェア構成例を示す図である。
【図4】P2Pオニオンノードの概略機能構成を示すブロック図である。
【図5】P2Pオニオンノードの機能構成を示すブロック図である。
【図6】匿名通信基盤接続認証機能を示す図である。
【図7】匿名経路発見機能を示す図である。
【図8】ルート探索パケットのデータ構造例を示す図である。
【図9】ルート通知パケットのデータ構造例を示す図である。
【図10】匿名経路発見機能の処理手順を示すシーケンス図である。
【図11】ルート探索パケットの伝送経路を示す図である。
【図12】ルート探索パケットの状態遷移状況を示す図である。
【図13】ルート通知パケットの伝送経路を示す図である。
【図14】ルート通知パケットの状態遷移状況を示す図である。
【図15】匿名ルート情報保持部内のデータ構造例を示す図である。
【図16】匿名通信機能を示す概念図である。
【図17】データパケットのデータ構造例を示す図である。
【図18】匿名通信機能の処理手順を示すシーケンス図である。
【図19】データパケットの伝送経路を示す図である。
【図20】データパケットの状態遷移状況を示す図である。
【図21】バックトラック処理におけるデータパケットの伝送経路を示す図である。
【図22】バックトラック転送時のデータパケットの状態遷移状況を示す図である。
【図23】マルチキャストにおけるデータパケットの伝送経路を示す図である。
【図24】匿名掲示板に適用した匿名通信網の構成例を示す図である。
【図25】投稿データを含むデータパケットの例を示す図である。
【図26】DB内のデータ構造例を示す図である。
【図27】検索要求を含むデータパケットの例を示す図である。
【図28】検索結果を含むデータパケットの例を示す図である。
【図29】返信メッセージを含むデータパケットの例を示す図である。
【図30】返信内容を含むデータパケットの伝送経路を示す図である。
【符号の説明】
【0231】
1 送信ノード
2 中継ノード
3 受信ノード
10 匿名通信網
100、200,300,410,420,430,440,450 P2Pオニオンノード
110,210,310 P2Pオニオンプロキシ
120,220,320 P2Pオニオンルータ
【特許請求の範囲】
【請求項1】
ネットワーク上で匿名のメッセージ交換を行うための電子掲示板提供装置において、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および前記第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録する登録手段と、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、前記第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索する検索手段と、
前記検索手段で検出された前記メッセージ、前記第1戻り匿名ルート情報、および前記第1隣接ノード識別子を前記送信元公開鍵で暗号化する暗号化手段と、
暗号化されたデータ、および前記第2戻り匿名ルート情報を含む応答データパケットを生成するパケット生成手段と、
前記第2隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する送信手段と、
を有することを特徴とする電子掲示板提供装置。
【請求項2】
ネットワーク上で匿名のメッセージ交換を行うための電子掲示板へメッセージをコンピュータで投稿するためのメッセージ投稿方法において、
前記コンピュータが、
前記メッセージの投稿要求を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻り匿名ルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、返信データ暗号化用の送信元公開鍵、および前記メッセージを含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とするメッセージ投稿方法。
【請求項3】
ネットワーク上で匿名のメッセージ交換を行うための電子掲示板に投稿されたメッセージをコンピュータで検索するための投稿メッセージ検索方法において、
前記コンピュータが、
前記メッセージの検索条件を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻り匿名ルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、および返信データ暗号化用の送信元公開鍵および前記検索条件を含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とする投稿メッセージ検索方法。
【請求項4】
ネットワーク上の匿名のメッセージ交換を行うための電子掲示板をコンピュータで提供するための電子掲示板提供プログラムにおいて、
前記コンピュータに、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および前記第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録し、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、前記第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索し、
検索手段で検出された前記メッセージ、前記第1戻り匿名ルート情報、および前記第1隣接ノード識別子を前記送信元公開鍵で暗号化し、
暗号化されたデータ、および前記第2戻り匿名ルート情報を含む応答データパケットを生成し、
前記第2隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する、
処理を実行させることを特徴とする電子掲示板提供プログラム。
【請求項1】
ネットワーク上で匿名のメッセージ交換を行うための電子掲示板提供装置において、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および前記第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録する登録手段と、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、前記第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索する検索手段と、
前記検索手段で検出された前記メッセージ、前記第1戻り匿名ルート情報、および前記第1隣接ノード識別子を前記送信元公開鍵で暗号化する暗号化手段と、
暗号化されたデータ、および前記第2戻り匿名ルート情報を含む応答データパケットを生成するパケット生成手段と、
前記第2隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する送信手段と、
を有することを特徴とする電子掲示板提供装置。
【請求項2】
ネットワーク上で匿名のメッセージ交換を行うための電子掲示板へメッセージをコンピュータで投稿するためのメッセージ投稿方法において、
前記コンピュータが、
前記メッセージの投稿要求を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻り匿名ルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、返信データ暗号化用の送信元公開鍵、および前記メッセージを含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とするメッセージ投稿方法。
【請求項3】
ネットワーク上で匿名のメッセージ交換を行うための電子掲示板に投稿されたメッセージをコンピュータで検索するための投稿メッセージ検索方法において、
前記コンピュータが、
前記メッセージの検索条件を受け取ると、前記コンピュータの自ノード識別子を自分のみが復号可能な形式で暗号化し、暗号化後のデータに前記自ノード識別子を付加して戻り匿名ルート情報とし、
前記電子掲示板が提供されるサーバに対して匿名通信を行うための伝送ルートが定義された宛先匿名ルート情報、前記戻り匿名ルート情報、および返信データ暗号化用の送信元公開鍵および前記検索条件を含むデータパケットを生成し、
前記宛先匿名ルート情報で示されるルート上の隣接するノードへ、前記データパケットを送信する、
ことを特徴とする投稿メッセージ検索方法。
【請求項4】
ネットワーク上の匿名のメッセージ交換を行うための電子掲示板をコンピュータで提供するための電子掲示板提供プログラムにおいて、
前記コンピュータに、
掲示板に掲載するメッセージ、投稿者の送信元から辿ってきた第1伝送ルートを示す第1戻り匿名ルート情報、および前記第1伝送ルート上で隣接するノードの識別情報である第1隣接ノード識別子を含む自分宛の投稿データパケットを受け取ると、前記データパケットの内容をデータベースに登録し、
前記メッセージに対する検索条件、検索者の送信元から辿ってきた第2伝送ルートを示す第2戻り匿名ルート情報、前記第2伝送ルート上で隣接するノードの識別情報である第2隣接ノード識別子、および返信データ暗号化用の送信元公開鍵を含む自分宛の検索データパケットを受け取ると、前記検索条件により前記データベース内を検索し、
検索手段で検出された前記メッセージ、前記第1戻り匿名ルート情報、および前記第1隣接ノード識別子を前記送信元公開鍵で暗号化し、
暗号化されたデータ、および前記第2戻り匿名ルート情報を含む応答データパケットを生成し、
前記第2隣接ノード識別子で示されるノードに対して前記応答データパケットを送信する、
処理を実行させることを特徴とする電子掲示板提供プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【公開番号】特開2008−109717(P2008−109717A)
【公開日】平成20年5月8日(2008.5.8)
【国際特許分類】
【出願番号】特願2008−10136(P2008−10136)
【出願日】平成20年1月21日(2008.1.21)
【分割の表示】特願2003−53673(P2003−53673)の分割
【原出願日】平成15年2月28日(2003.2.28)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成20年5月8日(2008.5.8)
【国際特許分類】
【出願日】平成20年1月21日(2008.1.21)
【分割の表示】特願2003−53673(P2003−53673)の分割
【原出願日】平成15年2月28日(2003.2.28)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]