(57)【要約】【課題】情報受信者が情報を受信したことの証明（配達証明）を情報送信者が受け取ることができる匿名通信を可能にする秘匿通信方法及びノード装置を提供する。【解決手段】発信元のノードは、当該発信元からネットワーク上の最終目的ノードまでのメッセージ転送経路と、メッセージ転送経路上の各中継ノードについて、該中継ノードから発信元までの配達証明返信経路を決定する。配達証明返信経路上の各中継ノードに、当該中継ノードの次のノードのアドレスと、当該次のノードへ送信すべき返信暗号データとを通知するための返信用オニオンルーティング情報を生成し、メッセージ転送経路上の各中継ノードに、当該中継ノードの次のノードのアドレスと、当該次のノード宛ての暗号データと、返信用オニオンルーティング情報と、返信用オニオンルーティング情報の宛先ノードのアドレスとを通知するためのメッセージ転送用オニオンルーティング情報を生成し、メッセージ転送用オニオンルーティング情報を送信する。【選択図】      図３
2007005898.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続されたノード装置において、
発信元の該ノード装置から前記ネットワーク上の最終目的ノードまでのメッセージを転送するための該ネットワーク上のメッセージ転送経路として、該ノード装置と前記最終目的ノードとの間の前記ネットワーク上の複数の中継ノードを決定する第１の経路決定手段と、
前記メッセージ転送経路上の各中継ノードについて、該中継ノードから前記発信元までの配達証明を返信するための配達証明返信経路として、該中継ノードと前記発信元との間の複数の中継ノードを決定する第２の経路決定手段と、
各配達証明返信経路について、当該配達証明返信経路上の各中継ノードに、当該中継ノードの次のノードのアドレスと、当該次のノードへ送信すべき返信暗号データとを通知するための返信用オニオンルーティング情報を生成する第１の生成手段と、
前記メッセージ転送経路上の各中継ノードに、当該中継ノードの次のノードのアドレスと、当該次のノード宛ての暗号データと、前記返信用オニオンルーティング情報と、前記配達証明返信経路上の当該返信用オニオンルーティング情報の宛先ノードのアドレスとを通知するためのメッセージ転送用オニオンルーティング情報を生成する第２の生成手段と、
前記メッセージ転送用オニオンルーティング情報を送信する送信手段と、
を具備したことを特徴とするノード装置。
【請求項２】
前記ネットワークから前記発信元宛ての返信暗号データを受信する受信手段と、
前記返信暗号データを復号する復号手段と、
復号された前記返信暗号データから前記配達証明を取得する手段と、
をさらに具備したことを特徴とする請求項１記載のノード装置。
【請求項３】
ネットワークに接続されたノード装置において、
前記ネットワークから暗号データを受信する受信手段と、
前記暗号データを復号し、当該ノード装置宛てデータを得る復号手段と、
当該ノード装置宛てデータに含まれている他の暗号データを、当該ノード装置宛データに含まれている第１のアドレスに対応するノードへ送信する第１の送信手段と、
当該ノード装置宛のデータに含まれている配達証明返信用暗号データを、当該ノード装置宛データに含まれている第２のアドレスに対応するノードへ送信する第２の送信手段と、
を具備したことを特徴とするノード装置。
【請求項４】
前記第２の送信手段は、前記第１の送信手段で前記他の暗号データを送信した後、ランダムな時間後に、前記配達証明返信用暗号データを送信することを特徴とする請求項３記載のノード装置。
【請求項５】
前記第１の経路決定手段は、前記メッセージ転送経路上の第１番目のノードに対応する前記最終目的ノードと、第Ｎ（Ｎは３以上、好ましくは４以上の整数）番目のノードに対応する前記発信元との間の第２番目から第Ｎ−１番目までの中継ノードを決定し、
前記第２の生成手段は、前記メッセージ転送経路上の第ｉ（ｉ＝２，３，…Ｎ−１）番目のノード宛ての第ｉ（ｉ＝２，３，…Ｎ−１）暗号データを、前記メッセージ転送経路上の第（ｉ−１）番目のノードのアドレスと、第（ｉ−１）暗号データと、前記返信用オニオンルーティング情報と、当該返信用オニオンルーティング情報の宛先ノードのアドレスとを含む入れ子構造を有する当該第ｉ番目のノード宛ての第ｉメッセージを暗号化して生成することを特徴とする請求項１記載のノード装置。
【請求項６】
前記第１の生成手段は、
前記最終目的ノード宛ての前記メッセージを当該最終目的ノードの公開鍵で暗号化して、前記第１番目のノード宛ての前記第１暗号データを生成し、
前記第ｉ（ｉ＝２，３，…Ｎ−１）番目のノード宛ての第ｉ暗号データについては、前記第ｉメッセージを、前記第ｉ番目のノードに対応する公開鍵で暗号化することにより生成することを特徴とする請求項４記載のノード装置。
【請求項７】
前記第２の経路決定手段は、前記配達証明返信経路上の第１番目のノードに対応する前記発信元と、第Ｍ（Ｍは３以上、好ましくは４以上の正の整数）番目のノードに対応する該第ｉ番目の中継ノードとの間の第２番目から第Ｍ−１番目までの中継ノードを決定し、
前記第１の生成手段は、前記配達証明返信経路上の第ｍ（ｍ＝２，３，…Ｍ−１）番目のノード宛ての第ｍ（ｍ＝２，３，…Ｍ−１）返信暗号データを、前記配達証明返信経路上の第（ｍ−１）番目のノードのアドレスと、第（ｍ−１）返信暗号データとを含む入れ子構造を有する第ｍメッセージを暗号化して生成することを特徴とする請求項１記載のノード装置。
【請求項８】
ネットワーク上の複数のノードのうちの発信元ノードから最終目的ノードへメッセージを送信するための匿名通信方法であって、
前記発信元ノードが、前記最終目的ノードまでのメッセージを転送するための該ネットワーク上のメッセージ転送経路として、当該発信元ノードと当該最終目的ノードとの間の前記ネットワーク上の複数の中継ノードを決定する第１のステップと、
前記発信元ノードが、前記メッセージ転送経路上の各中継ノードについて、該中継ノードから前記発信元ノードまでの配達証明を返信するための配達証明返信経路として、該中継ノードと前記発信元ノードとの間の複数の中継ノードを決定する第２のステップと、
前記発信元ノードが、各配達証明返信経路について、当該配達証明返信経路上の各中継ノードに、当該中継ノードの次のノードのアドレスと、当該次のノードへ送信すべき返信暗号データとを通知するための返信用オニオンルーティング情報を生成する第３のステップと、
前記発信元ノードが、前記メッセージ転送経路上の各中継ノードに、当該中継ノードの次のノードを示す第１のアドレスと、当該次のノード宛ての暗号データと、前記返信用オニオンルーティング情報と、前記配達証明返信経路上の当該返信用オニオンルーティング情報の宛先ノードを示す第２のアドレスとを通知するためのメッセージ転送用オニオンルーティング情報を生成する第４のステップと、
前記発信元ノードが、前記メッセージ転送用オニオンルーティング情報を送信する第５のステップと、
前記メッセージ転送経路上の各中継ノードが、前記ネットワークから前記暗号データを受信する第６のステップ、
前記メッセージ転送経路上の各中継ノードが、前記暗号データを復号し、当該ノード宛てデータを得る第７のステップと、
前記メッセージ転送経路上の各中継ノードが、当該ノード宛てデータに含まれている他の暗号データを、当該ノード宛データに含まれている第１のアドレスに対応するノードへ送信する第８のステップ、
前記メッセージ転送経路上の各中継ノードが、当該ノード宛データに含まれている返信暗号データを、当該ノード宛データに含まれている第２のアドレスに対応するノードへ送信する第９のステップと、
前記発信元ノードが、前記ネットワークから前記発信元ノード宛ての返信暗号データを受信する第１０のステップと、
受信された前記返信暗号データを復号する第１１のステップと、
復号された前記返信暗号データから前記配達証明を取得する第１２のステップと、
を有することを特徴とする匿名通信方法。
【請求項９】
ネットワークに接続されたコンピュータを、
発信元の該コンピュータから前記ネットワーク上の最終目的ノードまでのメッセージを転送するための該ネットワーク上のメッセージ転送経路として、該送信元と前記最終目的ノードとの間の前記ネットワーク上の複数の中継ノードを決定する第１の経路決定手段、
前記メッセージ転送経路上の各中継ノードについて、該中継ノードから前記発信元までの配達証明を返信するための配達証明返信経路として、該中継ノードと前記発信元との間の複数の中継ノードを決定する第２の経路決定手段、
各配達証明返信経路について、当該配達証明返信経路上の各中継ノードに、当該中継ノードの次のノードのアドレスと、当該次のノードへ送信すべき返信暗号データとを通知するための返信用オニオンルーティング情報を生成する第１の生成手段、
前記メッセージ転送経路上の各中継ノードに、当該中継ノードの次のノードのアドレスと、当該次のノード宛ての暗号データと、前記返信用オニオンルーティング情報と、前記配達証明返信経路上の当該返信用オニオンルーティング情報の宛先ノードのアドレスとを通知するためのメッセージ転送用オニオンルーティング情報を生成する第２の生成手段、
前記メッセージ転送用オニオンルーティング情報を送信する送信手段、
として機能させるための匿名通信プログラム。
【請求項１０】
前記コンピュータを、さらに、
前記ネットワークから前記発信元宛ての返信暗号データを受信する受信手段、
前記返信暗号データを復号する復号手段、
復号された前記返信暗号データから前記配達証明を取得する手段、
として機能させるための請求項９記載の匿名通信プログラム。
【請求項１１】
ネットワークに接続されたコンピュータを、
前記ネットワークから暗号データを受信する受信手段、
前記暗号データを復号し、当該コンピュータ宛てデータを得る復号手段、
当該コンピュータ宛てデータに含まれている他の暗号データを、当該コンピュータ宛データに含まれている第１のアドレスに対応するノードへ送信する第１の送信手段、
当該コンピュータ宛のデータに含まれている配達証明返信用暗号データを、当該コンピュータ宛データに含まれている第２のアドレスに対応するノードへ送信する第２の送信手段、
として機能させるための匿名通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、匿名通信に関する。
【背景技術】
【０００２】
情報発信者から情報が送信され情報受信者がこれを受信した際に、これを受信した旨を情報受信者から情報発信者に伝える（配達証明送信の）方法としては、従来Notes（商標）メールのように信頼できるサーバを介する方法（メールの「受信確認」機能）、また現在普及している電子メールのクライアントソフト（例えばOutlook（商標））の「開封確認機能」を利用する方法があげられる。
【０００３】
また、送信者や受信者のプライバシを保護するために、オニオンルーティングのような匿名通信路に関する研究がなされている（例えば、非特許文献１参照）。
【非特許文献１】D. M. Goldschlag, M. G. Reed and P. F. Syverson, “Hiding routing information, ” Information Hiding: First International Workshop, Lecture Notes in Computer Science, Vol.1174, Springer-Verlag, pp.137-150, 1996
【発明の開示】
【発明が解決しようとする課題】
【０００４】
配達証明を送信する場合、サーバを介する方法では、当該サーバが信頼可能な第三者であることが必要であるが、実際に信頼可能な第三者を構築することは困難である。また、情報送信者や情報受信者の匿名性も１つのサーバに依存するため、情報漏えいなどに対して頑強でない。
【０００５】
電子メールのクライアントソフトを利用する方法においては、配達証明を送信するか否かは受信者の信頼度に左右されてしまい、悪意のある受信者は配達証明を送信しないこともあり得る。また、現在の電子メールの仕組みでは、メールを暗号化することは可能であるが情報送信者や情報受信者の匿名性が確保されない。
【０００６】
一方、上記非特許文献１に代表されるように匿名通信では、配達証明といった概念は存在しない。しかし、情報送信者からすれば、送信した情報が実際に目的の相手（情報受信者）まで届いているか否か確認したい場合に、そのための手段が存在しなのであれば不便である。既存の方式、例えば、情報受信者が配達証明を送信するとしても、配達証明を送信するか否かは情報受信者の信頼度に左右されてしまう。
【０００７】
このように、従来は、匿名通信において、発信元ノードの情報送信者は、最終目的ノードの情報受信者にメッセージが届いているか否かを確認することができないという問題点があった。
【０００８】
そこで、本発明は、上記問題点に鑑み、発信元ノードの情報送信者や最終目的ノードの情報受信者の匿名性を維持しつつ、情報受信者の信頼性に依存することなく、最終目的ノードにメッセージが届いているか否かを確認することができる配達証明を発信元ノードへ送信することができる秘匿通信方法及びノード装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
ネットワークに接続された発信元ノードは、
（ａ）当該発信元からネットワーク上の最終目的ノードまでのメッセージを転送するための該ネットワーク上のメッセージ転送経路として、該ノード装置と該最終目的ノードとの間の該ネットワーク上の複数の中継ノードを決定し、
（ｂ）メッセージ転送経路上の各中継ノードについて、該中継ノードから発信元までの配達証明を返信するための配達証明返信経路として、該中継ノードと前記発信元との間の複数の中継ノードを決定する。
【００１０】
（ｃ）各配達証明返信経路について、当該配達証明返信経路上の各中継ノードに、当該中継ノードの次のノードのアドレスと、当該次のノードへ送信すべき返信暗号データとを通知するための返信用オニオンルーティング情報を生成し、
（ｄ）メッセージ転送経路上の各中継ノードに、当該中継ノードの次のノードのアドレスと、当該次のノード宛ての暗号データと、当該返信用オニオンルーティング情報と、当該配達証明返信経路上の当該返信用オニオンルーティング情報の宛先ノードのアドレスとを通知するためのメッセージ転送用オニオンルーティング情報を生成し、
（ｅ）生成されたメッセージ転送用オニオンルーティング情報を送信する。
【００１１】
（ｆ）ネットワークから当該発信元宛ての返信暗号データを受信すると、この返信暗号データを復号して、復号された返信暗号データから配達証明を取得する。
【発明の効果】
【００１２】
本発明によれば、情報受信者の信頼性に依存することなく、情報受信者が情報を受信したことの証明（配達証明）を情報送信者が受け取ることができる匿名通信を可能にする。
【発明を実施するための最良の形態】
【００１３】
まず、一般的なオニオンルーティング方式について図１を参照して説明する。図１において、ノードＳは情報発信元の情報発信ノード、ノードＲは最終目的地の情報受信ノードである。また、ノードＡ、Ｂ、Ｃは中継ノードである。
【００１４】
はじめに、発信元ノードは、どの中継ノードを経由させて最終目的ノードに情報を送信するかを決定する。図１では、発信元ノードは、ノードＡ→ノードＢ→ノードＣと中継させた後に最終目的ノードに情報を送信する場合を示している。なお、ネットワーク上には、他の中継ノードＤ、Ｅ、Ｆ、…も存在し、どの中継ノードを使用するかは、発信元ノードにゆだねられている。また、発信元ノードＳから中継ノードＡまでの経路、中継ノードＡから中継ノードＢまでの経路、中継ノードＢから中継ノードＣまでの経路、中継ノードＣから最終目的ノードＲ間での経路は任意である。
【００１５】
次に、発信元ノードは、次式（１）で示すようなオニオンルーティング情報を作成する。
【００１６】
ＰｋＡ（Ｂ‖ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ））））            …（１）
ここで、ＰｋＸ（Ｙ）は、情報ＹがノードＸの公開鍵（Ｐｕｂｌｉｃ  Ｋｅｙ）ＰｋＸで暗号化されていることを示す。（Ｘ‖Ｙ）は情報Ｘと情報Ｙとが結合されていることを示す。Ｍは発信元ノードが最終目的ノードに送信しようとしている情報（メッセージ）である。式（１）において、「Ｂ」、「Ｃ」、「Ｒ」など一文字の英字は、それぞれノードＡ、Ｂ、Ｃ宛のメッセージであるが、各メッセージには、そのメッセージを受け取ったノードが次に転送する転送先ノードの宛先（アドレス）が含まれている。すなわち、「Ｂ」はノードＡで受信され、次の転送先のノード「Ｃ」のアドレスが含まれている。「Ｃ」はノードＢで受信され、次の転送先のノード「Ｒ」のアドレスが含まれている。
【００１７】
発信元ノードＳでは、式（１）のオニオンルーティング情報を、以下の手順で作成する。
【００１８】
（ａ１）最終目的ノードＲ宛のメッセージＭを、最終目的ノードＲの公開鍵ＰｋＲで暗号化し、ＰｋＲ（Ｍ）を生成する。
【００１９】
（ａ２）ＰｋＲ（Ｍ）と、ノードＣ宛のメッセージ（最終目的ノードＲのアドレスを含む）「Ｒ」を結合して、それをノードＣの公開鍵ＰｋＣで暗号化し、ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ））を生成する。
【００２０】
（ａ３）ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ））と、ノードＢ宛のメッセージ（ノードＣのアドレスを含む）「Ｃ」を結合して、それをノードＢの公開鍵ＰｋＢで暗号化し、ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）））を生成する。
【００２１】
（ａ４）ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）））と、ノードＡ宛のメッセージ（ノードＢのアドレスを含む）「Ｂ」を結合して、それをノードＡの公開鍵ＰｋＡで暗号化し、
ＰｋＡ（Ｂ‖ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ））））を生成する。
【００２２】
上記のようにして生成された式（１）に示すデータは、以下の手順で転送される（図１参照）。
【００２３】
（ｂ１）発信元ノードＳは、式（１）に示すデータをノードＡに送信する。
【００２４】
（ｂ２）ノードＡは、受け取ったオニオンルーティング情報をノードＡの秘密鍵で復号して、「Ｂ‖ＰｋＢ（？）」という情報を得る。例えば、ここでは、復号した結果得られるデータの先頭から予め定められたバイト数のデータがノードＡ宛のメッセージ「Ｂ」と定められているので、ノードＡ宛のメッセージ「Ｂ」と、（鍵ＰｋＢで暗号化されているために）ノードＡには、その中身を確認することができない情報（ここでは、「？」と示す）「ＰｋＢ（？）」を得る。ノードＡは、メッセージ「Ｂ」に含まれノードＢのアドレスを基に、「ＰｋＢ（？）」というデータをノードＢに送信する。
【００２５】
（ｂ３）ノードＢは、受け取ったオニオンルーティング情報をノードＢの秘密鍵で復号して、「Ｃ‖ＰｋＣ（？）」という情報を得る。例えば、ここでは、復号した結果得られるデータの先頭から予め定められたバイト数のデータがノードＢ宛のメッセージ「Ｃ」と定められているので、ノードＢ宛のメッセージ「Ｃ」と、（鍵ＰｋＣで暗号化されているために）ノードＢには、その中身を確認することができない情報（ここでは、「？」と示す）「ＰｋＣ（？）」を得る。ノードＢは、メッセージ「Ｃ」に含まれノードＣのアドレスを基に、「ＰｋＣ（？）」というデータをノードＣに送信する。
【００２６】
（ｂ４）ノードＣは、受け取ったオニオンルーティング情報をノードＣの秘密鍵で復号して、「Ｒ‖ＰｋＲ（？）」という情報を得る。例えば、ここでは、復号した結果得られるデータの先頭から予め定められたバイト数のデータがノードＣ宛のメッセージ「Ｒ」と定められているので、ノードＣ宛のメッセージ「Ｒ」と、（鍵ＰｋＲで暗号化されているために）ノードＣには、その中身を確認することができない情報（ここでは、「？」と示す）「ＰｋＲ（？）」を得る。ノードＣは、メッセージ「Ｒ」に含まれノードＲのアドレスを基に、「ＰｋＲ（？）」というデータをノードＲに送信する。
【００２７】
（ｂ５）最終目的ノードＲは、受け取ったオニオンルーティング情報をノードＲの秘密鍵で復号して、メッセージＭを得る。
【００２８】
このような、発信元ノードＳからノードＡ、ノードＢ、ノードＣを経由して最終目的ノードＲへメッセージを転送するオニオンルーティングでは、ｉ番目のノードは、（ｉ−１）番目のノードと（ｉ＋１）番目のノード以外のノードの存在を把握できないため、真の発信元モードや真の最終目的ノードを特定することができない。すなわち、各ノード（ノードＡ，Ｂ，Ｃ，Ｒ）は、互いに隣接するノードを知ることはできるが、発信元ノードや最終目的ノードを知ることはできない。ノードＳ、Ａ〜Ｃ、Ｒのうち、発信元のノードＳのみが、メッセージＭの発信元ノード、最終目的ノード及び転送経路を認識している。この結果、オニオンルーティング方式では発信元ノード（情報発信者）と最終目的ノード（情報受信者）の匿名性が維持されている。
【００２９】
オニオンルーティング方式でも、最終目的ノードＲにおける情報受信者が信頼できる場合は、図２に示すように、発信元ノードはメッセージＭ中に配達証明の返信用の情報を含ませておき、配達証明の送信を情報受信者に依頼することができる。しかしながら、情報受信者が信頼できない場合には、情報受信者が情報を受信した場合でも配達証明を送らない可能性がある。
【００３０】
図２において、発信元はオニオンルーティング情報の中に、配達証明：ＣｅｒｔＴｏＳを含ませておく。すなわち、発信元ノードＳでは、以下の手順でオニオンルーティング情報を作成する。
【００３１】
（ａ１´）最終目的ノードＲ宛のメッセージＭを、最終目的ノードＲの公開鍵ＰｋＲで暗号化し、ＰｋＲ（Ｍ）を生成する。
【００３２】
（ａ２´）ＰｋＲ（Ｍ）と、ノードＣ宛のメッセージ（最終目的ノードＲのアドレスを含むメッセージ「Ｒ」）と、配達証明：ＣｅｒｔＴｏＳと、ノードＣ宛のメッセージ（配達証明の宛先である発信元ノードＳのアドレスを含むメッセージ「Ｓ」）とを結合して、それをノードＣの公開鍵ＰｋＣで暗号化し、ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｓ‖ＣｅｒｔＴｏＳ）を生成する。
【００３３】
（ａ３´）ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｓ‖ＣｅｒｔＴｏＳ）とノードＢ宛のメッセージ（ノードＣのアドレスを含む）「Ｃ」を結合して、それをノードＢの公開鍵ＰｋＢで暗号化し、ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｓ‖ＣｅｒｔＴｏＳ））を生成する。
【００３４】
（ａ４´）ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｓ‖ＣｅｒｔＴｏＳ））と、ノードＡ宛のメッセージ（ノードＢのアドレスを含む）「Ｂ」を結合して、それをノードＡの公開鍵ＰｋＡで暗号化し、ＰｋＡ（Ｂ‖ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｓ‖ＣｅｒｔＴｏＳ）））を生成する。
【００３５】
上記（ａ１´）〜（ａ４´）に示すように生成された配達証明を含むオニオンルーティング情報は、前述の（ｂ１）〜（ｂ３）に示すように、ノードＣに送信される。
【００３６】
（ｂ４´）ノードＣは、受け取ったオニオンルーティング情報をノードＣの秘密鍵で復号して、「Ｒ‖ＰｋＲ（？）‖Ｓ‖ＣｅｒｔＴｏＳ」という情報を得る。例えば、ここでは、復号した結果得られるデータの先頭から予め定められたバイト数のデータがノードＣ宛のメッセージ「Ｒ」と定められている。復号した結果得られるデータの終端から予め定められたバイト数のデータが、配達証明「ＣｅｒｔＴｏＳ」と定められ、配達証明の前の予め定められたバイト数のデータがノードＣ宛のメッセージ「Ｓ」と定められている。ノードＣは、メッセージ「Ｒ」に含まれノードＲのアドレスを基に、「ＰｋＲ（？）」というデータをノードＲに送信する。
【００３７】
（ｂ５）ノードＲの受信を確認した後、メッセージ「Ｓ」に含まれるノードＳのアドレスを基に、配達証明「ＣｅｒｔＴｏＳ」をノードＳに送信する。
【００３８】
このような方法により、最終目的ノードＲの情報受信者の信頼度に影響されず、発信元ノードＳに配達証明を届けることが可能となる。
【００３９】
しかしながら、上記方法には、ノードＣが配達証明を送信するということにより、以下に示すような問題点がある。
【００４０】
（ｃ１）ノードＣに、転送先のノードＲが最終目的ノードであることが知られる。
【００４１】
（ｃ２）ノードＣに、ノードＳが発信元であることが知られる。
【００４２】
この結果、発信元と最終目的ノードの情報受信者の匿名性が確保することができないのである。
【００４３】
以下、本発明の実施形態について図面を参照して説明する。
【００４４】
ここでも、図１と同様に、ノードＳを発信元ノード、ノードＲを最終目的ノード、ノードＡ、Ｂ、Ｃを発信元ノードにより決定された中継ノードである場合を例にとり説明する。
【００４５】
上記問題点（ｃ１）を解決するために、本実施形態では、図３に示すように、全ての中継ノード（ここでは、ノードＡ〜Ｃ）が配達証明を返信する。また、上記問題点（ｃ２）を解決するために、配達証明の返信にもオニオンルーティングを利用する。
【００４６】
すなわち、本実施形態の発信元ノードＳで生成される、最終目的ノード宛のメッセージＭを転送するためのオニオンルーティング情報（メッセージ転送用オニオンルーティング情報）には、各中継ノードから配達証明を返信するための配達証明返信用オニオンルーティング情報が含まれている。
【００４７】
図４は、図３の発信元ノードＳ、中継ノードＡ〜Ｃ、最終目的ノードＲ、各中継ノードから配達証明を返信する際の各中継ノードＸ、Ｙ、Ｚなど、ネットワーク上に匿名通信を実現するために接続された各匿名ノード装置の要部の構成例を示したものである。
【００４８】
匿名ノード装置は、図４の各構成部１〜１０の全てを含む場合、発信元ノード、中継ノード、最終目的ノードとしても機能する。
【００４９】
匿名ノード装置は、図４に示した構成部１〜１０のうち、少なくとも情報処理部１、送信部５、受信部７、復号部８、秘密鍵記憶部９を含むことにより、中継ノード、最終目的ノードとして機能する。
【００５０】
発信元ノードＳは、図４の各構成部１〜９の全てを含み、発信元ノードのみならず、中継ノードや最終目的ノードとしても機能する。
【００５１】
発信元ノードの情報処理部１は、最終目的ノード（例えば、ここでは、ノードＲ）宛のメッセージＭを生成する。
【００５２】
発信元ノードの転送経路決定部２は、情報処理部１で生成されたメッセージＭを転送するためのメッセージ転送経路（複数の中継ノードと、これらの転送順序）を決定する。さらに、決定されたメッセージ転送経路上の各中継ノードについて、当該中継ノードが配達証明を返信するための配達証明返信経路（複数の中継ノードと、これらの転送順序）を決定する。
【００５３】
発信元ノードの配達証明返信用オニオンルーティング情報生成部３は、転送経路決定部２で決定されたメッセージ転送経路上の各中継ノードについて、転送経路決定部２で決定された配達証明返信経路を基に、オニオンルーティング情報（配達証明返信用オニオンルーティング情報）を生成する。
【００５４】
発信元ノードのメッセージ転送用オニオンルーティング情報生成部４は、転送経路決定部２で決定されたメッセージ転送経路を基に、配達証明返信用オニオンルーティング情報を含む、オニオンルーティング情報（メッセージ転送用オニオンルーティング情報）を生成する。
【００５５】
公開鍵記憶部６には、ネットワーク上の各秘匿ノードの公開鍵が記憶されている。発信元ノードの配達証明返信用オニオンルーティング情報生成部３と、メッセージ転送用オニオンルーティング情報生成部４では、公開鍵記憶部６に記憶された各匿名ノード装置の公開鍵を用いて、オニオンルーティング情報をそれぞれ生成する。
【００５６】
発信元ノードの送信部５は、メッセージ転送用オニオンルーティング情報生成部４で生成されたメッセージ転送用オニオンルーティング情報をネットワークへ送出する。
【００５７】
秘密鍵記憶部９は、当該ノードに対応する秘密鍵が予め記憶されている。
【００５８】
受信部７は、配達証明返信用オニオンルーティング情報やメッセージ転送用のオニオンルーティング情報などのオニオンルーティング情報を受信する。
【００５９】
復号部８は、受信部７で受信されたオニオンルーティング情報を秘密鍵記憶部１０に記憶されている秘密鍵を用いて復号する。
【００６０】
情報処理部１は、復号部８で復号されたオニオンルーティング情報に、メッセージＭ、配達証明、メッセージ転送用オニオンルーティング情報、その転送先のノードのアドレスを含むメッセージ、配達証明返信用オニオンルーティング情報、その転送先のノードのアドレスを含むメッセージのうち、どの種別の情報データが含まれているかを調べる。
【００６１】
例えば、これら各情報データが、当該情報データの種別を示す識別情報を含むヘッダを有している場合、情報処理部１は、このヘッダ中の識別情報をチェックして、当該情報データの種別を判定する。
【００６２】
また、例えば、メッセージＭあるいは配達証明、メッセージ転送用オニオンルーティング情報、当該メッセージ転送用オニオンルーティング情報の転送先のノードのアドレスを含むメッセージ、配達証明返信用オニオンルーティング情報、配達証明返信用オニオンルーティング情報の転送先のノードのアドレスを含むメッセージが、復号部８で復号されたオニオンルーティング情報中のどこに（どのフィールド）含まれているかが予め定められている場合、情報処理部１は、各フィールドから当該フィールドに含まれている情報データを抽出する。
【００６３】
復号部８で復号されたオニオンルーティング情報が、メッセージＭあるいは配達証明である場合には、ここでオニオンルーティングは終了する。
【００６４】
復号部８で復号されたオニオンルーティング情報が、メッセージ転送用オニオンルーティング情報と、その転送先のノードのアドレスを含むメッセージである場合には、当該メッセージに含まれるアドレスを宛先とする当該メッセージ転送用オニオンルーティング情報を送信部５へ出力する。復号部８で復号されたオニオンルーティング情報が、配達証明返信用オニオンルーティング情報と、その転送先のノードのアドレスを含むメッセージである場合には、当該メッセージに含まれるアドレスを宛先とする当該配達証明返信用オニオンルーティング情報を送信部５へ出力する。
【００６５】
送信部７は、情報処理部１から出力されたオニオンルーティング情報をネットワークへ送出する。
【００６６】
次に、発信元ノードＳの処理動作について図５に示すフローチャートを参照して説明する。
【００６７】
情報発信ノードＳの情報処理部１により、最終目的ノードのノードＲ宛のメッセージＭが生成されると、これを匿名通信路により転送するために、転送経路決定部２は、当該メッセージＭを転送するためのメッセージ転送経路を決定する（ステップＳ１０１）。例えば、メッセージ転送経路が、ノードＳ→ノードＡ→ノードＢ→ノードＣ→ノードＲ、と決定される。
【００６８】
転送経路決定部２は、メッセージ転送経路上の各中継ノードについて、当該中継ノードが配達証明を返信するための配達証明返信経路を決定する（ステップＳ１０２）。例えば、中継ノードＡの配達証明返信経路として、ノードＡ→ノードＸ→ノードＤ→ノードＳ、と決定する。中継ノードＢの配達証明返信経路として、ノードＢ→ノードＹ→ノードＥ→ノードＳ、と決定する。中継ノードＣの配達証明返信経路として、ノードＣ→ノードＺ→ノードＦ→ノードＳ、と決定する。
【００６９】
次に、発信元ノードＳの配達証明返信用オニオンルーティング情報生成部３は、各中継ノードについて、配達証明返信用オニオンルーティング情報を生成する（ステップＳ１０３）。
【００７０】
ノードＣから発信する配達証明「ｃｅｒｔＣ」の転送経路は、ノードＣ、ノードＺ、ノードＦ、ノードＳである。そこで、まず、配達証明ｃｅｒｔＣをノードＳの公開鍵ＰｋＳで暗号化し、ＰｋＳ（ｃｅｒｔＣ）を生成する。これとノードＳのアドレスを含むメッセージ「Ｓ」とを結合して、ノードＦの公開鍵ＰｋＦで暗号化し、ＰｋＦ（Ｓ‖ＰｋＳ（ｃｅｒｔＣ））を生成する。ＰｋＦ（Ｓ‖ＰｋＳ（ｃｅｒｔＣ））と、ノードＦのアドレスを含むメッセージ「Ｆ」とを結合して、ノードＺの公開鍵ＰｋＺで暗号化し、ＰｋＺ（Ｆ‖ＰｋＦ（Ｓ‖ＰｋＳ（ｃｅｒｔＣ）））＝ＰｋＺ（ＣｅｒｔＣ）を生成する。これがノードＣの配達証明用オニオンルーティング情報である。
【００７１】
ノードＢから発信する配達証明「ｃｅｒｔＢ」の転送経路は、ノードＢ、ノードＹ、ノードＥ、ノードＳである。そこで、まず、配達証明ｃｅｒｔＢをノードＳの公開鍵ＰｋＳで暗号化し、ＰｋＳ（ｃｅｒｔＢ）を生成する。ＰｋＳ（ｃｅｒｔＢ）と、ノードＳのアドレスを含むメッセージ「Ｓ」とを結合して、ノードＥの公開鍵ＰｋＥで暗号化し、ＰｋＥ（Ｓ‖ＰｋＳ（ｃｅｒｔＢ））を生成する。ＰｋＥ（Ｓ‖ＰｋＳ（ｃｅｒｔＢ））と、ノードＥのアドレスを含むメッセージ「Ｅ」とを結合して、ノードＹの公開鍵ＰｋＹで暗号化し、ＰｋＹ（Ｅ‖ＰｋＥ（Ｓ‖ＰｋＳ（ｃｅｒｔＢ）））＝ＰｋＹ（ＣｅｒｔＢ）を生成する。これがノードＢの配達証明用オニオンルーティング情報である。
【００７２】
ノードＡから発信する配達証明「ｃｅｒｔＡ」の転送経路は、ノードＡ、ノードＸ、ノードＤ、ノードＳである。そこで、まず、配達証明ｃｅｒｔＡをノードＳの公開鍵ＰｋＳで暗号化し、ＰｋＳ（ｃｅｒｔＡ）を生成する。ＰｋＳ（ｃｅｒｔＡ）と、ノードＳのアドレスを含むメッセージ「Ｓ」とを結合して、ノードＤの公開鍵ＰｋＤで暗号化し、ＰｋＤ（Ｓ‖ＰｋＳ（ｃｅｒｔＡ））を生成する。ＰｋＤ（Ｓ‖ＰｋＳ（ｃｅｒｔＡ））と、ノードＤのアドレスを含むメッセージ「Ｄ」とを結合して、ノードＸの公開鍵ＰｋＸで暗号化し、ＰｋＸ（Ｄ‖ＰｋＤ（Ｓ‖ＰｋＳ（ｃｅｒｔＡ）））＝ＰｋＸ（ＣｅｒｔＡ）を生成する。これがノードＡの配達証明用オニオンルーティング情報である。
【００７３】
メッセージ転送用オニオンルーティング情報生成部４は、転送経路決定部２で決定されたメッセージ転送経路を基に、各中継ノードの配達証明返信用オニオンルーティング情報を含む、メッセージＭの転送用のオニオンルーティング情報を生成する（ステップＳ１０４）。
【００７４】
（ｄ１）まず、最終目的ノードＲ宛のメッセージＭを、最終目的ノードＲの公開鍵ＰｋＲで暗号化し、ＰｋＲ（Ｍ）を生成する。
【００７５】
（ｄ３）次に、最終目的ノードＲのアドレスを含むノードＣ宛のメッセージ「Ｒ」と、ノードＲへ転送されるＰｋＲ（Ｍ）と、ノードＣの配達証明用オニオンルーティング情報の最初の転送先のノードＺのアドレスを含むノードＣ宛のメッセージ「Ｚ」と、ノードＣの配達証明用オニオンルーティング情報ＰｋＺ（ＣｅｒｔＣ）とを結合して、それをノードＣの公開鍵ＰｋＣで暗号化し、ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））を生成する。
【００７６】
（ｄ５）次に、ノードＣのアドレスを含むノードＢ宛のメッセージ「Ｃ」と、ノードＣへ転送されるＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））と、ノードＢの配達証明等オニオンルーティング情報の最初の転送先のノードＹのアドレスを含むノードＢ宛のメッセージ「Ｙ」と、ノードＢの配達証明用オニオンルーティング情報ＰｋＹ（ＣｅｒｔＢ）とを結合して、それをノードＢの公開鍵ＰｋＢで暗号化し、ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））‖Ｙ‖ＰｋＹ（ＣｅｒｔＢ））を生成する。
【００７７】
（ｄ７）さらに、ノードＢのアドレスを含むノードＡ宛のメッセージ「Ｂ」と、ノードＢへ転送されるＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））‖Ｙ‖ＰｋＹ（ＣｅｒｔＢ））と、ノードＡの配達証明用オニオンルーティング情報の最初の転送先のノードＸのアドレスを含むノードＡ宛のメッセージ「Ｘ」と、ノードＡの配達証明用オニオンルーティング情報ＰｋＸ（ＣｅｒｔＡ）とを結合して、それをノードＡの公開鍵ＰｋＡで暗号化し、ＰｋＡ（Ｂ‖ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））‖Ｙ‖ＰｋＹ（ＣｅｒｔＢ））‖Ｘ‖ＰｋＸ（ＣｅｒｔＡ））を生成する。これが、発信元ノードＳから送信されるメッセージ転送用オニオンルーティング情報である。
【００７８】
以上のようにして生成された、メッセージ転送用オニオンルーティング情報は、発信ノードＳの送信部５から送信される（ステップＳ１０５）。
【００７９】
その後、各中継ノードからは配達証明が返信されるため、これを受信する（ステップＳ１０６）。なお、前述したように、配達証明は、配達証明返信用オニオンルーティング情報により送信され、各配達証明返信用オニオンルーティング情報の最終目的ノードは発信元ノードＳである。
【００８０】
発信元ノードＳでの配達証明の受信処理は、後述する（図７）。
【００８１】
図５では、まず、転送経路決定部２で、メッセージ転送経路と配達証明返信経路を決定した後、配達証明返信用オニオンルーティング情報生成部３で、各中継ノードの配達証明返信用オニオンルーティング情報を生成する処理を行い、次に、メッセージ転送用オニオンルーティング情報生成部４で、メッセージ転送用オニオンルーティング情報を生成する処理を行う場合を説明したが、この場合に限らない。例えば、図６に示すように、図５のステップＳ１０２〜ステップＳ１０４に示した処理手順の代わりに、図６に示すように、各中継ノードの配達証明返信用オニオンルーティング情報を生成する処理と、メッセージ転送用オニオンルーティング情報生成部４でのメッセージＭの転送用のオニオンルーティング情報を生成する処理を交互におこなってもよい。
【００８２】
図６に示すフローチャートを参照して、図４の転送経路決定部２、配達証明用オニオンルーティング情報生成部３、メッセージ転送用オニオンルーティング情報生成部４の他の処理動作について説明する。
【００８３】
（ｄ１）最終目的ノードＲ宛のメッセージＭを、最終目的ノードＲの公開鍵ＰｋＲで暗号化し、ＰｋＲ（Ｍ）を生成する。
【００８４】
（ｄ２）ノードＣから発信する配達証明「ｃｅｒｔＣ」の転送経路を、例えば、ノードＣ、ノードＺ、ノードＦ、ノードＳと決定する。
【００８５】
ノードＣの配達証明用オニオンルーティング情報を作成する。すなわち、前述同様に、ＰｋＺ（Ｆ‖ＰｋＦ（Ｓ‖ＰｋＳ（ｃｅｒｔＣ）））＝ＰｋＺ（ＣｅｒｔＣ）を生成する。
【００８６】
（ｄ３）最終目的ノードＲのアドレスを含むノードＣ宛のメッセージ「Ｒ」と、ノードＲへ転送されるＰｋＲ（Ｍ）と、ノードＣの配達証明用オニオンルーティング情報の最初の転送先のノードＺのアドレスを含むノードＣ宛のメッセージ「Ｚ」と、ノードＣの配達証明用オニオンルーティング情報ＰｋＺ（ＣｅｒｔＣ）とを結合して、それをノードＣの公開鍵ＰｋＣで暗号化し、ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））を生成する。
【００８７】
（ｄ４）ノードＢから発信する配達証明「ｃｅｒｔＢ」の転送経路を、例えば、ノードＢ、ノードＹ、ノードＥ、ノードＳと決定する。
【００８８】
ノードＢの配達証明用オニオンルーティング情報を作成する。すなわち、前述同様に、ＰｋＹ（Ｅ‖ＰｋＥ（Ｓ‖ＰｋＳ（ｃｅｒｔＢ）））＝ＰｋＹ（ＣｅｒｔＢ）を生成する。
【００８９】
（ｄ５）ノードＣのアドレスを含むノードＢ宛のメッセージ「Ｃ」と、ノードＣへ転送されるＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））と、ノードＢの配達証明用オニオンルーティング情報の最初の転送先のノードＹのアドレスを含むノードＢ宛のメッセージ「Ｙ」と、ノードＢの配達証明用オニオンルーティング情報ＰｋＹ（ＣｅｒｔＢ）とを結合して、それをノードＢの公開鍵ＰｋＢで暗号化し、ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））‖Ｙ‖ＰｋＹ（ＣｅｒｔＢ））を生成する。
【００９０】
（ｄ６）ノードＡから発信する配達証明「ｃｅｒｔＡ」の転送経路を、例えば、ノードＡ、ノードＸ、ノードＤ、ノードＳと決定する。
【００９１】
ノードＡの配達証明用オニオンルーティング情報を作成する。すなわち、前述同様に、ＰｋＸ（Ｄ‖ＰｋＤ（Ｓ‖ＰｋＳ（ｃｅｒｔＡ）））＝ＰｋＸ（ＣｅｒｔＡ）を生成する。
【００９２】
（ｄ７）ノードＢのアドレスを含むノードＡ宛のメッセージ「Ｂ」と、ノードＢへ転送されるＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））‖Ｙ‖ＰｋＹ（ＣｅｒｔＢ））と、ノードＡの配達証明用オニオンルーティング情報の最初の転送先のノードＸのアドレスを含むノードＡ宛のメッセージ「Ｘ」と、ノードＡの配達証明用オニオンルーティング情報ＰｋＸ（ＣｅｒｔＡ）とを結合して、それをノードＡの公開鍵ＰｋＡで暗号化し、ＰｋＡ（Ｂ‖ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））‖Ｙ‖ＰｋＹ（ＣｅｒｔＢ））‖Ｘ‖ＰｋＸ（ＣｅｒｔＡ））を生成する。
【００９３】
上述したように、各中継ノードＡ〜Ｃのそれぞれの公開鍵で暗号化されるデータは、当該中継ノードから次のノードへ転送すべきメッセージ転送用オニオンルーティング情報（暗号データ）と、当該メッセージ転送用オニオンルーティング情報の次の転送先のノードのアドレスを含むメッセージと、当該中継ノードの配達証明用オニオンルーティング情報（返信用暗号データ）と、当該配達証明用オニオンルーティング情報の最初の転送先のノードのアドレスを含むメッセージとが含まれている。
【００９４】
次に、図７に示すフローチャートを参照して、中継ノードＡ〜Ｃ、最終目的ノードＲ、各中継ノードから配達証明を返信する際の各中継ノードＸ、Ｙ、Ｚなど、ネットワーク上に匿名通信を実現するために接続された各匿名ノード装置（単にノードと呼ぶ）における、配達証明返信用オニオンルーティング情報やメッセージ転送用のオニオンルーティング情報などのオニオンルーティング情報（暗号データ）を受信処理について説明する。
【００９５】
当該ノードの受信部７が、当該ノード宛のオニオンルーティング情報を受信すると（ステップＳ２０１）、復号部８は、秘密鍵記憶部１０に記憶されている当該ノードの秘密鍵を用いて、受信したオニオンルーティング情報を復号する（ステップＳ２０１）。
【００９６】
情報処理部１は、復号部８で復号されたオニオンルーティング情報に、メッセージＭ、配達証明、メッセージ転送用オニオンルーティング情報、その転送先のノードのアドレスを含むメッセージ、配達証明返信用オニオンルーティング情報、その転送先のノードのアドレスを含むメッセージのうち、どの種別の情報データが含まれているかを調べる。
【００９７】
当該ノードがメッセージ転送経路上の中継ノード（ノードＡ〜Ｃ）の場合には、復号部８で復号されたオニオンルーティング情報には、メッセージ転送用オニオンルーティング情報及びその転送先のノードのアドレスを含むメッセージ、配達証明返信用オニオンルーティング情報及びその転送先のノードのアドレスを含むメッセージが含まれている。
【００９８】
当該ノードが最終目的ノード（ノードＲ）の場合には、復号部８で復号されたオニオンルーティング情報には、メッセージＭが含まれている。
【００９９】
当該ノードが配達証明返信経路上の中継ノード（ノードＸ，Ｙ、Ｚなど）の場合には、復号部８で復号されたオニオンルーティング情報には、配達証明返信用オニオンルーティング情報及びその転送先のノードのアドレスを含むメッセージが含まれている。
【０１００】
当該ノードが発信元ノードＳの場合には、復号部８で復号されたオニオンルーティング情報には、配達証明が含まれている。
【０１０１】
情報処理部１は、復号部８で復号されたオニオンルーティング情報が、メッセージＭあるいは配達証明である場合には、ここでオニオンルーティングを終了する（ステップＳ２０３）。
【０１０２】
情報処理部１は、復号部で復号されたオニオンルーティング情報に、メッセージ転送用オニオンルーティング情報と、その転送先のノードのアドレスを含むメッセージが含まれている場合には（ステップＳ２０４）、当該メッセージに含まれるアドレスを宛先とする当該メッセージ転送用オニオンルーティング情報を送信部５へ出力する。送信部５は、情報処理部１から出力されたオニオンルーティング情報をネットワークへ送出する（ステップＳ２０５）。
【０１０３】
情報処理部１は、復号部で復号されたオニオンルーティング情報に、配達証明返信用オニオンルーティング情報と、その転送先のノードのアドレスを含むメッセージが含まれている場合には、当該メッセージに含まれるアドレスを宛先とする当該配達証明返信用オニオンルーティング情報を送信部５へ出力する（ステップＳ２０６）。送信部５は、情報処理部１から出力されたオニオンルーティング情報をネットワークへ送出する（ステップＳ２０７）。
【０１０４】
次に、図８を参照して、発信元ノードＳから最終目的ノードＲまでのメッセージ転送経路上の各ノードでの処理動作について説明する。
【０１０５】
発信元ノードＳは、図５、図６に示したように、メッセージ転送用オニオンルーティング情報ＰｋＡ（Ｂ‖ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））‖Ｙ‖ＰｋＹ（ＣｅｒｔＢ））‖Ｘ‖ＰｋＸ（ＣｅｒｔＡ））を生成し（ステップＳ１）、ノードＡへ送信する（ステップＳ２）。ここで、ノードＳから発信されるメッセージ転送用オニオンルーティング情報をＰｋＡ（α）と表す。
【０１０６】
ノードＡでは、ＰｋＡ（α）を受信すると、当該ノードＡの秘密鍵を用いて復号する。その結果、ノードＢのアドレスを含むメッセージ「Ｂ」及びノードＢへ転送すべきメッセージ転送用オニオンルーティング情報ＰｋＢ（Ｃ‖ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））‖Ｙ‖ＰｋＹ（ＣｅｒｔＢ））、配達証明返信用オニオンルーティング情報ＰｋＸ（ＣｅｒｔＡ）、この転送先のノードＸのアドレスを含むメッセージ「Ｘ」を得る。ここで、ノードＡからノードＢへ転送されるメッセージ転送用オニオンルーティング情報をＰｋＢ（β）と表す。
【０１０７】
ノードＡは、ＰｋＢ（β）をノードＢへ送信した後（ステップＳ３）、ノードＡで予め定められた時間経過後、あるいはランダムな時間経過後に、ＰｋＢ（β）をノードＢへ送信したことを通知するために、配達証明返信用オニオンルーティング情報ＰｋＸ（ＣｅｒｔＡ）をノードＸへ送信する（ステップＳ４）。
【０１０８】
ノードＢでは、ＰｋＢ（β）を受信すると、当該ノードＢの秘密鍵を用いて復号する。その結果、ノードＣのアドレスを含むメッセージ「Ｃ」及びノードＣへ転送すべきメッセージ転送用オニオンルーティング情報ＰｋＣ（Ｒ‖ＰｋＲ（Ｍ）‖Ｚ‖ＰｋＺ（ＣｅｒｔＣ））、配達証明返信用オニオンルーティング情報ＰｋＹ（ＣｅｒｔＢ）、この転送先のノードＹのアドレスを含むメッセージ「Ｙ」を得る。ここで、ノードＢからノードＣへ転送されるメッセージ転送用オニオンルーティング情報をＰｋＣ（γ）と表す。
【０１０９】
ノードＢは、ＰｋＣ（γ）をノードＣへ送信した後（ステップＳ５）、ノードＢで予め定められた時間経過後、あるいはランダムな時間経過後に、ＰｋＣ（γ）をノーＣへ送信したことを通知するために、配達証明返信用オニオンルーティング情報ＰｋＹ（ＣｅｒｔＢ）をノードＹへ送信する（ステップＳ６）。
【０１１０】
ノードＣでは、ＰｋＣ（γ）を受信すると、当該ノードＣの秘密鍵を用いて復号する。その結果、ノードＲのアドレスを含むメッセージ「Ｒ」及びノードＲへ転送すべきメッセージ転送用オニオンルーティング情報ＰｋＲ（Ｍ）、配達証明返信用オニオンルーティング情報ＰｋＺ（ＣｅｒｔＣ）、この転送先のノードＺのアドレスを含むメッセージ「Ｚ」を得る。
【０１１１】
ノードＣは、ＰｋＲ（Ｍ）をノードＲへ送信した後（ステップＳ７）、ノードＣで予め定められた時間経過後、あるいはランダムな時間経過後に、ＰｋＲ（Ｍ）をノーＲへ送信したことを通知するために、配達証明返信用オニオンルーティング情報ＰｋＺ（ＣｅｒｔＣ）をノードＺへ送信する（ステップＳ８）。
【０１１２】
次に、ノードＡ乃至Ｃのそれぞれから発信される配達証明返信用オニオンルーティング情報の処理手順について説明する。
【０１１３】
ノードＡから発信する配達証明オニオンルーティング情報ＰｋＸ（ＣｅｒｔＡ）＝ＰｋＸ（Ｄ‖ＰｋＤ（Ｓ‖ＰｋＳ（ｃｅｒｔＡ）））の転送経路は、ノードＡ、ノードＸ、ノードＤ、ノードＳである。
【０１１４】
ステップＳ４でノードＡから発信される配達証明返信用オニオンルーティング情報ＰｋＸ（ＣｅｒｔＡ）は、ノードＸで受信され、当該ノードＸの秘密鍵を用いて復号される。その結果、ノードＤのアドレスを含むメッセージ「Ｄ」及びノードＤへ転送すべき配達証明返信用オニオンルーティング情報ＰｋＤ（Ｓ‖ＰｋＳ（ｃｅｒｔＡ））を得る。
【０１１５】
ノードＸは、ノードＤへ、配達証明返信用オニオンルーティング情報ＰｋＤ（Ｓ‖ＰｋＳ（ｃｅｒｔＡ））を送信する。
【０１１６】
ノードＤは、オニオンルーティング情報ＰｋＤ（Ｓ‖ＰｋＳ（ｃｅｒｔＡ））を受信すると、これを当該ノードＤの秘密鍵で復号する。この結果、ノードＳのアドレスを含むメッセージ「Ｓ」及びノードＳへ転送すべき配達証明返信用オニオンルーティング情報ＰｋＳ（ｃｅｒｔＡ）を得る。
【０１１７】
ノードＤは、ノードＳへ、配達証明返信用オニオンルーティング情報ＰｋＳ（ｃｅｒｔＡ）を送信する。
【０１１８】
ノードＳは、オニオンルーティング情報ＰｋＳ（ｃｅｒｔＡ）を受信すると、これを当該ノードＳの秘密鍵で復号する。その結果、ノードＡからの配達証明「ｃｅｒｔＡ」を得る（図５のステップＳ１０６）。
【０１１９】
ノードＢから発信する配達証明オニオンルーティング情報ＰｋＹ（ＣｅｒｔＢ）＝ＰｋＹ（Ｅ‖ＰｋＥ（Ｓ‖ＰｋＳ（ｃｅｒｔＢ）））の転送経路は、ノードＢ、ノードＹ、ノードＥ、ノードＳである。
【０１２０】
ステップＳ６でノードＢから発信される配達証明返信用オニオンルーティング情報ＰｋＹ（ＣｅｒｔＢ）は、ノードＹで受信され、当該ノードＹの秘密鍵を用いて復号される。その結果、ノードＥのアドレスを含むメッセージ「Ｅ」及びノードＥへ転送すべき配達証明返信用オニオンルーティング情報ＰｋＥ（Ｓ‖ＰｋＳ（ｃｅｒｔＢ））を得る。
【０１２１】
ノードＹは、ノードＥへ、配達証明返信用オニオンルーティング情報ＰｋＥ（Ｓ‖ＰｋＳ（ｃｅｒｔＢ））を送信する。
【０１２２】
ノードＥは、オニオンルーティング情報ＰｋＥ（Ｓ‖ＰｋＳ（ｃｅｒｔＢ））を受信すると、これを当該ノードＥの秘密鍵で復号する。この結果、ノードＳのアドレスを含むメッセージ「Ｓ」及びノードＳへ転送すべき配達証明返信用オニオンルーティング情報ＰｋＳ（ｃｅｒｔＢ）を得る。
【０１２３】
ノードＥは、ノードＳへ、配達証明返信用オニオンルーティング情報ＰｋＳ（ｃｅｒｔＢ）を送信する。
【０１２４】
ノードＳは、オニオンルーティング情報ＰｋＳ（ｃｅｒｔＢ）を受信すると、これを当該ノードＳの秘密鍵で復号する。その結果、ノードＢからの配達証明「ｃｅｒｔＢ」を得る（図５のステップＳ１０６）。
【０１２５】
ノードＣから発信する配達証明オニオンルーティング情報ＰｋＺ（ＣｅｒｔＣ）＝ＰｋＺ（Ｆ‖ＰｋＦ（Ｓ‖ＰｋＳ（ｃｅｒｔＣ）））の転送経路は、ノードＣ、ノードＺ、ノードＦ、ノードＳである。
【０１２６】
ステップＳ８でノードＣから発信される配達証明返信用オニオンルーティング情報ＰｋＺ（ＣｅｒｔＣ）は、ノードＺで受信され、当該ノードＺの秘密鍵を用いて復号される。その結果、ノードＦのアドレスを含むメッセージ「Ｆ」及びノードＦへ転送すべき配達証明返信用オニオンルーティング情報ＰｋＦ（Ｓ‖ＰｋＳ（ｃｅｒｔＣ））を得る。
【０１２７】
ノードＺは、ノードＦへ、配達証明返信用オニオンルーティング情報ＰｋＦ（Ｓ‖ＰｋＳ（ｃｅｒｔＣ））を送信する。
【０１２８】
ノードＦは、オニオンルーティング情報ＰｋＦ（Ｓ‖ＰｋＳ（ｃｅｒｔＣ））を受信すると、これを当該ノードＦの秘密鍵で復号する。この結果、ノードＳのアドレスを含むメッセージ「Ｓ」及びノードＳへ転送すべき配達証明返信用オニオンルーティング情報ＰｋＳ（ｃｅｒｔＣ）を得る。
【０１２９】
ノードＦは、ノードＳへ、配達証明返信用オニオンルーティング情報ＰｋＳ（ｃｅｒｔＣ）を送信する。
【０１３０】
ノードＳは、オニオンルーティング情報ＰｋＳ（ｃｅｒｔＣ）を受信すると、これを当該ノードＳの秘密鍵で復号する。その結果、ノードＣからの配達証明「ｃｅｒｔＣ」を得る（図５のステップＳ１０６）。
【０１３１】
以上説明したように、上記実施形態によれば、発信元ノードＳは、発信元ノードＳから最終目的ノードＲへメッセージＭを転送するためのメッセージ転送経路（ノードＳ→ノードＡ→ノードＢ→ノードＣ→ノードＳ）を決定する。
【０１３２】
メッセージ転送経路上の各中継ノードＡ〜Ｃについて、当該中継ノードからの配達証明を受け取るための配達証明返信経路（例えば、中継ノードＡの場合、第４番目のノードＡ→第３番目のノードＸ→第２番目のノードＤ→第１番目のノードＳ）を決定し、各中継ノードＡ〜Ｃについて、配達証明返信用オニオンルーティング情報を生成する。
【０１３３】
ここでは、前述の配達証明返信用オニオンルーティング情報の生成手順の概要を、図９を参照して述べる。まず、中継ノードＡの配達証明返信用オニオンルーティング情報の生成手順を述べる。
【０１３４】
中継ノードＡから発信元ノードＳへの配達証明「ｃｅｒｔＡ」を、配達証明返信経路上の第１番目のノードに対応する発信元ノードＳの公開鍵ＰｋＳで暗号化して第１層オニオンルーティング情報を生成する。生成された第１層オニオンルーティング情報と当該第１層オニオンルーティング情報の転送先のノードＳのアドレスを含むメッセージ「Ｓ」とを、配達証明返信経路上の第２番目のノードに対応する中継ノードＤの公開鍵ＰｋＤで暗号化して、第２層オニオンルーティング情報を生成する。生成された第２層オニオンルーティング情報と当該第２層オニオンルーティング情報の転送先のノードＤのアドレスを含むメッセージ「Ｄ」とを、配達証明経路上の第３番目のノードに対応する中継ノードＸの公開鍵ＰｋＸで暗号化して第３層オニオンルーティング情報を生成する。このようにして、ＰｋＳ、ＰｋＤ、ＰｋＸという３つの公開鍵により３重に暗号化された３層の入れ子構造の中継ノードＡの配達証明返信用オニオンルーティング情報ＰｋＸ（Ｄ‖ＰｋＤ（Ｓ‖ＰｋＳ（ｃｅｒｔＡ）））＝ＰｋＸ（ＣｅｒｔＡ）が生成される。
【０１３５】
上記同様にして、ＰｋＳ、ＰｋＥ、ＰｋＹという３つの公開鍵により３重に暗号化された３層の入れ子構造の中継ノードＢの配達証明返信用オニオンルーティング情報ＰｋＹ（Ｅ‖ＰｋＥ（Ｓ‖ＰｋＳ（ｃｅｒｔＢ）））＝ＰｋＹ（ＣｅｒｔＢ）が生成され、ＰｋＳ、ＰｋＦ、ＰｋＺという３つの公開鍵により３重に暗号化された３層の入れ子構造の中継ノードＣの配達証明返信用オニオンルーティング情報ＰｋＺ（Ｆ‖ＰｋＦ（Ｓ‖ＰｋＳ（ｃｅｒｔＣ）））＝ＰｋＺ（ＣｅｒｔＣ）が生成される。
【０１３６】
次に、図５、図６に示したように、発信元ノードＳは、メッセージ転送経路を基に、各中継ノードの配達証明返信用オニオンルーティング情報を含む、メッセージ転送用オニオンルーティング情報を生成する。
【０１３７】
ここでは、図１０を参照して、上述のメッセージ転送用オニオンルーティング情報の生成手順の概要を簡単に述べる。
【０１３８】
メッセージ転送経路上の１番目のノードに対応する最終目的ノードＲ宛のメッセージＭを、最終目的ノードＲの公開鍵ＰｋＲで暗号化して、第１層オニオンルーティング情報を生成する。
【０１３９】
生成された第１層オニオンルーティング情報と、当該第１層オニオンルーティング情報の転送先のノードＲのアドレスを含むメッセージ「Ｒ」と、メッセージ転送経路上の２番目のノードに対応する中継ノードＣの配達証明用オニオンルーティング情報の最初の転送先のノードＺのアドレスを含むメッセージ「Ｚ」と、ノードＣの配達証明用オニオンルーティング情報ＰｋＺ（ＣｅｒｔＣ）とを結合して、ノードＣ宛てのメッセージを生成し、このノードＣ宛てのメッセージをノードＣの公開鍵ＰｋＣで暗号化し、第２層オニオンルーティング情報を生成する。
【０１４０】
生成された第２層オニオンルーティング情報と、当該第２層オニオンルーティング情報の転送先のノードＣのアドレスを含むメッセージ「Ｃ」と、メッセージ転送経路上の第３番目のノードに対応する中継ノードＢの配達証明用オニオンルーティング情報の最初の転送先のノードＹのアドレスを含むメッセージ「Ｙ」と、ノードＢの配達証明用オニオンルーティング情報ＰｋＹ（ＣｅｒｔＢ）とを結合して、ノードＢ宛てのメッセージを生成し、このノードＢ宛てのメッセージをノードＢの公開鍵ＰｋＢで暗号化し、第３層オニオンルーティング情報を生成する。
【０１４１】
生成された第３層オニオンルーティング情報と、当該第３層オニオンルーティング情報の転送先のノードＢのアドレスを含むメッセージ「Ｂ」と、メッセージ転送経路上の第４番目のノードに対応する中継ノードＡの配達証明用オニオンルーティング情報の最初の転送先のノードＸのアドレスを含むメッセージ「Ｘ」と、ノードＡの配達証明用オニオンルーティング情報ＰｋＸ（ＣｅｒｔＡ）とを結合して、ノードＡ宛てのメッセージを生成し、このノードＡ宛てのメッセージをノードＡの公開鍵ＰｋＡで暗号化し、第４層オニオンルーティング情報を生成する。
【０１４２】
発信元ノードＳは、第４層オニオンルーティング情報を中継ノードＡへ送信する。
【０１４３】
ノードＡは、ノードＳから送信されたオニオンルーティング情報（図１０の第４層オニオンルーティング情報）を受信すると、それを復号し、図１０の第３層オニオンルーティング情報と、メッセージ「Ｂ」と、ノードＡの配達証明用オニオンルーティング情報ＰｋＸ（ＣｅｒｔＡ）と、メッセージ「Ｘ」を得る。そして、第３層オニオンルーティング情報をノードＢへ送信し、配達証明用オニオンルーティング情報ＰｋＸ（ＣｅｒｔＡ）をノードＸへ送信する。
【０１４４】
ノードＢは、ノードＡから送信されたオニオンルーティング情報（図１０の第３層オニオンルーティング情報）を受信すると、それを復号し、図１０の第２層オニオンルーティング情報と、メッセージ「Ｃ」と、ノードＢの配達証明用オニオンルーティング情報ＰｋＹ（ＣｅｒｔＢ）と、メッセージ「Ｙ」を得る。そして、第２層オニオンルーティング情報をノードＣへ送信し、配達証明用オニオンルーティング情報ＰｋＹ（ＣｅｒｔＢ）をノードＹへ送信する。
【０１４５】
ノードＣは、ノードＢから送信されたオニオンルーティング情報（図１０の第２層オニオンルーティング情報）を受信すると、それを復号し、図１０の第１層オニオンルーティング情報と、メッセージ「Ｒ」と、ノードＣの配達証明用オニオンルーティング情報ＰｋＺ（ＣｅｒｔＣ）と、メッセージ「Ｚ」を得る。そして、第１層オニオンルーティング情報をノードＲへ送信し、配達証明用オニオンルーティング情報ＰｋＺ（ＣｅｒｔＣ）をノードＺへ送信する。
【０１４６】
ノードＡの配達証明は、次のような手順でオニオンルーティングによりノードＳに届く。
【０１４７】
ノードＸは、ノードＡから送信された配達証明用オニオンルーティング情報ＰｋＸ（ＣｅｒｔＡ）、すなわち、図９の第３層オニオンルーティング情報を受信すると、それを復号し、図９の第２層オニオンルーティング情報と、メッセージ「Ｄ」を得る。そして、第２層オニオンルーティング情報をノードＤへ送信する。
【０１４８】
ノードＤは、ノードＸから送信された、図９の第２層オニオンルーティング情報を受信すると、それを復号し、図９の第１層オニオンルーティング情報と、メッセージ「Ｓ」を得る。そして、第１層オニオンルーティング情報をノードＳへ送信する。
【０１４９】
ノードＢ、ノードＣの配達証明も上記ノードＡの場合と同様に、オニオンルーティングによりノードＳに届く。
【０１５０】
以上説明したように、上記実施形態によれば、発信元ノードＳは、発信元ノードＳから最終目的ノードＲへメッセージを転送するためのメッセージ転送経路として、該メッセージ転送経路上の第１番目のノードに対応する最終目的ノードＲから、該メッセージ転送経路上の第Ｎ（Ｎは３以上、好ましくは４以上の整数）番目のノードに対応する発信元ノードＳまでのＮ個のノード（ノードＲ、ノードＣ、ノードＢ、ノードＡ、ノードＳ）を決定する。また、メッセージ転送経路上の各中継ノードについて、該中継ノードから発信元ノードＳまでの配達証明を返信するための配達証明返信経路として、該中継ノードと発信元ノードＳとの間の複数の中継ノードを決定し、当該配達証明返信経路上の各中継ノードに、当該中継ノードの次のノードのアドレスと、当該次のノードへ送信すべき返信暗号データとを通知するための返信用オニオンルーティング情報を生成する。
【０１５１】
メッセージ転送経路上の第ｉ（ｉ＝２，３，…Ｎ−１）番目のノードに、当該ノードの次のノードである第（ｉ−１）番目のノードのアドレスと、当該第（ｉ−１）番目のノード宛ての第（ｉ−１）暗号データと、該第（ｉ−１）暗号データに対する配達証明を返信するための返信用オニオンルーティング情報と、当該返信用オニオンルーティング情報の宛先ノードのアドレスとを通知するためのメッセージ転送用オニオンルーティング情報を生成する。このメッセージ転送用オニオンルーティング情報をメッセージ転送経路上の第Ｎ−１番目のノードＡへ送信する。
【０１５２】
メッセージ転送経路上の第ｉ（ｉ＝２〜Ｎ−１）番目の中継ノードＡ〜Ｃは、当該中継ノード宛ての第ｉ暗号データを復号した結果得られる第ｉメッセージに含まれる第（ｉ−１）暗号データをメッセージ転送経路上の第（ｉ−１）番目のノードへ送信した後、該第ｉ暗号データに含まれる返信用オニオンルーティング情報を送信する。
【０１５３】
その結果、発信元ノードＳは、発信元ノードＳ及び最終目的ノードＲの匿名性を維持しつつ、各中継ノードＡ〜Ｃの配達証明を受け取ることができる。しかも、発信元ノードＳは、最終目的ノードの信頼度によらず、最終目的ノードへのメッセージの配達を確認することができる。
【０１５４】
本発明の実施の形態に記載した本発明の手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、半導体メモリなどの記録媒体に格納して頒布することもできる。
【０１５５】
図４の情報処理部１、転送経路決定部２、配達証明返信用オニオンルーティング情報生成部３、メッセージ転送用オニオンルーティング情報生成部４、送信部５、受信部７、復号部８の各機能部は、これら各機能部の機能を実現するためのプログラムをコンピュータに実行させることにより実現することができる。
【０１５６】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１５７】
【図１】一般的なオニオンルーティング方式を説明するための図。
【図２】配達証明を送信するための従来の方法を説明するための図。
【図３】本発明の実施形態に係る配達証明の送信方法を説明するための図。
【図４】ノード装置の構成例を示す図。
【図５】発信元ノードの処理動作を説明するためのフローチャート。
【図６】発信元ノードの処理動作を説明するためのフローチャート。
【図７】オニオンルーティング情報の受信処理を説明するためのフローチャート。
【図８】発信元ノードから最終目的ノードまでのメッセージ転送経路上の各ノードでの処理動作を説明するための図。
【図９】配達証明返信用オニオンルーティング情報のデータ構造を説明するための図。
【図１０】メッセージ転送用オニオンルーティング情報のデータ構造を説明するための図。
【符号の説明】
【０１５８】
１…情報処理部、２…転送経路決定部、３…配達証明返信用オニオンルーティング情報生成部、４…メッセージ転送用オニオンルーティング情報生成部、５…送信部、６…公開鍵記憶部、７…受信部、８…復号部、９…秘密鍵記憶部。
【図１】
2007005898.tif 000003
【図２】
2007005898.tif 000004
【図３】
2007005898.tif 000005
【図４】
2007005898.tif 000006
【図５】
2007005898.tif 000007
【図６】
2007005898.tif 000008
【図７】
2007005898.tif 000009
【図８】
2007005898.tif 000010
【図９】
2007005898.tif 000011
【図１０】
2007005898.tif 000012