(57)【要約】【課題】オニオンルーティングの経路構築に関わる暗号処理負荷を軽減し、通信速度の向上が可能な匿名通信システムを提供する。【解決手段】オニオンルーティングを利用して多重暗号化データをガードノードＧ、中間ノードＭ、出口ノードＥの複数段の中継ノードを介して送信源ノード１０から宛先ノード２０に転送する匿名通信システムである。匿名通信経路を形成する各段ごとの前記中継ノードとして、１ないし複数のノードを任意の個数分あらかじめ確保し、かつ、各段ごとの前記中継ノードは、それぞれ、次ホップノードに関するルーティング情報として１ないし複数の通信経路情報を保持し、かつ、各段ごとの前記中継ノードは、前記次ホップノードが前記匿名通信経路から離脱したことを検出した場合、新たな次ホップノードへの経路に切り替えて、新たな該次ホップノードに対してデータ転送を行うことにより匿名通信を継続させる。【選択図】図２
2019198003.tif 000002
【特許請求の範囲】
【請求項１】
オニオンルーティングを利用して多重暗号化データを複数段の中継ノードを介して送信源ノードから宛先ノードに転送し、匿名通信経路を形成してオニオンルーティングを行う各段ごとの前記中継ノードとして、１ないし複数のノードを任意の個数分あらかじめ確保し、かつ、各段ごとの前記中継ノードは、それぞれ、次ホップノードに関するルーティング情報として１ないし複数の通信経路情報を保持し、かつ、各段ごとの前記中継ノードは、データの転送先としていた前記次ホップノードが前記匿名通信経路から離脱したことを検出した場合、新たな次ホップノードへの経路に切り替えて、新たな該次ホップノードに対してデータ転送を行うことにより匿名通信を継続させることを特徴とする匿名通信システム。
【請求項２】
前記中継ノードそれぞれは、秘密鍵をあらかじめ保持するとともに、前記匿名通信経路のセットアップ時に、各段ごとに全ての前記中継ノードに同じ値に設定した共有鍵情報を前記送信源ノードから受け取ることにより、同じ段に属する全ての前記中継ノードそれぞれは、前記送信源ノードと共有する共有鍵を同じ値にして保持することを特徴とする請求項１に記載の匿名通信システム。
【請求項３】
前記送信源ノードにおいて、前記匿名通信経路上を転送する前記多重暗号化データを生成する際に、前記匿名通信経路上の各前記中継ノードの次ホップノードに関するルーティング情報と次ホップノードに実際に転送する暗号化した転送データとを分離して暗号処理を行うことを特徴とする請求項２に記載の匿名通信システム。
【請求項４】
前記送信源ノードにおいて、前記匿名通信経路上を転送する前記多重暗号化データを生成する際に、前記宛先ノード向けのメッセージデータを送信する場合における該メッセージデータの多重暗号化処理と、前記匿名通信経路のセットアップ時において各前記中継ノードに対して前記共有鍵情報を送信する場合における該共有鍵情報の多重暗号化処理とに関し、互いに異なる暗号化処理を行うことを特徴とする請求項２または３に記載の匿名通信システム。
【請求項５】
前記送信源ノードにおいて、前記宛先ノード向けのメッセージデータに関する前記多重暗号化データを生成する際に、各段の前記中継ノードの次ホップノードに関する前記ルーティング情報と、各段の前記中継ノードから次ホップノードに実際に転送するデータを該中継ノードの共有鍵を用いて暗号化したデータとを結合したデータを後段から前段側の前記中継ノードに向かって順次結合することにより、前記多重暗号化データを生成することを特徴とする請求項４に記載の匿名通信システム。
【請求項６】
前記送信源ノードにおいて、各段の前記中継ノード向けの前記共有鍵情報に関する前記多重暗号化データを生成する際に、各段の前記中継ノードの次ホップノードに関する前記ルーティング情報と、各段の前記中継ノードから次ホップノードに実際に転送するデータを該中継ノードの公開鍵を用いて暗号化したデータとを結合したデータを後段から前段側の前記中継ノードに向かって順次結合することにより、前記多重暗号化データを生成することを特徴とする請求項４に記載の匿名通信システム。
【請求項７】
オニオンルーティングを利用して多重暗号化データを複数段の中継ノードを介して送信源ノードから宛先ノードに転送し、匿名通信経路を形成してオニオンルーティングを行う各段ごとの前記中継ノードとして、１ないし複数のノードを任意の個数分あらかじめ確保し、かつ、各段ごとの前記中継ノードは、それぞれ、次ホップノードに関するルーティング情報として１ないし複数の通信経路情報を保持し、かつ、各段ごとの前記中継ノードは、データの転送先としていた前記次ホップノードが前記匿名通信経路から離脱したことを検出した場合、新たな次ホップノードへの経路に切り替えて、新たな該次ホップノードに対してデータ転送を行うことにより匿名通信を継続させることを特徴とする匿名通信方法。
【請求項８】
前記中継ノードそれぞれは、秘密鍵をあらかじめ保持するとともに、前記匿名通信経路のセットアップ時に、各段ごとに全ての前記中継ノードに同じ値に設定した共有鍵情報を前記送信源ノードから受け取ることにより、同じ段に属する全ての前記中継ノードそれぞれは、前記送信源ノードと共有する共有鍵を同じ値にして保持することを特徴とする請求項７に記載の匿名通信方法。
【請求項９】
前記送信源ノードにおいて、前記匿名通信経路上を転送する前記多重暗号化データを生成する際に、前記匿名通信経路上の各前記中継ノードの次ホップノードに関するルーティング情報と次ホップノードに実際に転送する暗号化した転送データとを分離して暗号処理を行うことを特徴とする請求項８に記載の匿名通信方法。
【請求項１０】
オニオンルーティングを利用して多重暗号化データを複数段の中継ノードを介して送信源ノードから宛先ノードに転送する処理をコンピュータによって実行し、匿名通信経路を形成してオニオンルーティングを行う各段ごとの前記中継ノードとして、１ないし複数のノードを任意の個数分あらかじめ確保し、かつ、各段ごとの前記中継ノードは、それぞれ、次ホップノードに関するルーティング情報として１ないし複数の通信経路情報を保持し、かつ、各段ごとの前記中継ノードは、データの転送先としていた前記次ホップノードが前記匿名通信経路から離脱したことを検出した場合、新たな次ホップノードへの経路に切り替えて、新たな該次ホップノードに対してデータ転送を行うことにより匿名通信を継続させることを特徴とする匿名通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、匿名通信システム、匿名通信方法および匿名通信プログラムに関する。特に、本発明は、インターネットを利用した通信において送信者・受信者の身元を秘匿したい場合に有効な匿名通信システム、匿名通信方法および匿名通信プログラムに関する。
【背景技術】
【０００２】
匿名通信Ｔｏｒ（トーア）は、インターネットを利用した通信で送信者・受信者の身元を秘匿したい場合に使われる匿名通信技術であり、高い匿名性を有し、最も広く使われている。匿名通信Ｔｏｒは、特許文献１の特開２００７−００５８９８号公報「ノード装置、匿名通信方法および匿名通信プログラム」等に記載されているように、ルータ（中継ノード）を経由する都度通信データを多重に暗号化する暗号化通信方式すなわちオニオンルーティングの仕組みを採用している。このオニオンルーティングの採用により、通信の送信元と宛先との間に介在するガードノード、中間ノード、出口ノードの３段の中継ノード（オニオンルータ）を経由して、通信データとルーティング情報とを隠すことができる。中継ノードは、次にパケットを送る次ホップノードのルーティング情報のみを知ることができ、自ノードの前後のノード以外の情報は秘匿される。そのため、匿名通信Ｔｏｒを利用した通信においては、誰がどこに対してどのような経路を辿ってデータを送ろうとしているのかを第三者から秘匿することができる。
【０００３】
匿名通信Ｔｏｒが通信の匿名性を実現する一方で、多重暗号化による弊害も存在する。匿名通信Ｔｏｒクライアントは、通信を中継する３段の中継ノード（オニオンルータ）を最初に選択して経路を一意に決定し、それらの中継ノード毎の共有鍵でメッセージを多重に暗号化する。しかし、３段の中継ノード（オニオンルータ）が自ノードの次のホップノードの情報のみを保持するという特性のために、経路上の中継ノードが離脱したり、休止状態に移行したりした場合は、離脱や休止が発生した該中継ノードにおいて通信が中断してしまい、新たな経路を再構築しなければならない。経路構築の際に用いられる多重に暗号化された多重暗号化データに関するパケットは、経路中の中継ノード（オニオンルータ）が該パケットを受け取った段階で暗号化または復号するが、この処理は、各中継ノードにおいて毎回繰り返される。したがって、中継ノード上における暗号処理の負荷が匿名通信Ｔｏｒにおける遅延の最大の原因となっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−００５８９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述したように、本発明に関連するオニオンルーティングを利用する匿名通信システムの現状の技術においては、クライアントが通信を開始する際に構築した３段の中継ノード（オニオンルータ）を経由する匿名通信経路において、通信の途中でいずれか一つでも、中継ノードの離脱や休止が発生してしまうと、転送中のデータを復号することができず、他の中継ノードや宛先ノードへのルーティング情報も取り出すことができなくなるため、それ以降のノードにデータを送信することができなくなる。
【０００６】
したがって、クライアントは、一旦、全ての通信を中断して、経路情報や共有鍵も全て破棄し、新たに、匿名通信経路を設定し直さなければならない。このとき、匿名通信経路の構築に必要な各中継ノード上におけるデータの暗号処理のために、オニオンルーティングを利用する匿名通信は、通常の通信に比べて、通信速度が極端に低下してしまうという問題がある。
【０００７】
（本開示の目的）
本開示の目的は、かくのごとき事情に鑑み、オニオンルーティングを利用する匿名通信経路構築に関わる暗号処理負荷を軽減し、通信速度を向上させることを可能にする匿名通信システム、匿名通信方法および匿名通信プログラムの提供にある。
【課題を解決するための手段】
【０００８】
前述の課題を解決するため、本発明による匿名通信システム、匿名通信方法および匿名通信プログラムは、主に、次のような特徴的な構成を採用している。
【０００９】
（１）本発明による匿名通信システムは、オニオンルーティングを利用して多重暗号化データを複数段の中継ノードを介して送信源ノードから宛先ノードに転送し、匿名通信経路を形成してオニオンルーティングを行う各段ごとの前記中継ノードとして、１ないし複数のノードを任意の個数分あらかじめ確保し、かつ、各段ごとの前記中継ノードは、それぞれ、次ホップノードに関するルーティング情報として１ないし複数の通信経路情報を保持し、かつ、各段ごとの前記中継ノードは、データの転送先としていた前記次ホップノードが前記匿名通信経路から離脱したことを検出した場合、新たな次ホップノードへの経路に切り替えて、新たな該次ホップノードに対してデータ転送を行うことにより匿名通信を継続させることを特徴とする。
【００１０】
（２）本発明による匿名通信方法は、オニオンルーティングを利用して多重暗号化データを複数段の中継ノードを介して送信源ノードから宛先ノードに転送し、匿名通信経路を形成してオニオンルーティングを行う各段ごとの前記中継ノードとして、１ないし複数のノードを任意の個数分あらかじめ確保し、かつ、各段ごとの前記中継ノードは、それぞれ、次ホップノードに関するルーティング情報として１ないし複数の通信経路情報を保持し、かつ、各段ごとの前記中継ノードは、データの転送先としていた前記次ホップノードが前記匿名通信経路から離脱したことを検出した場合、新たな次ホップノードへの経路に切り替えて、新たな該次ホップノードに対してデータ転送を行うことにより匿名通信を継続させることを特徴とする。
【００１１】
（３）本発明による匿名通信プログラムは、オニオンルーティングを利用して多重暗号化データを複数段の中継ノードを介して送信源ノードから宛先ノードに転送する処理をコンピュータによって実行し、匿名通信経路を形成してオニオンルーティングを行う各段ごとの前記中継ノードとして、１ないし複数のノードを任意の個数分あらかじめ確保し、かつ、各段ごとの前記中継ノードは、それぞれ、次ホップノードに関するルーティング情報として１ないし複数の通信経路情報を保持し、かつ、各段ごとの前記中継ノードは、データの転送先としていた前記次ホップノードが前記匿名通信経路から離脱したことを検出した場合、新たな次ホップノードへの経路に切り替えて、新たな該次ホップノードに対してデータ転送を行うことにより匿名通信を継続させることを特徴とする。
【発明の効果】
【００１２】
本発明の匿名通信システム、匿名通信方法および匿名通信プログラムによれば、主に、以下のような効果を奏することができる。
【００１３】
匿名通信経路を形成するために選択した各段の中継ノードに複数の通信経路情報を保持させて、次ホップノードが何らかの原因により匿名通信経路から離脱する事態が発生しても、次ホップノードを他の中継ノードに更新することによって匿名通信を継続させることができるので、匿名通信経路の再構築を回避することが可能になる。而して、ネットワーク上で通信経路を構成するノードが離脱し易い環境における匿名通信に関する有用性が高くなるので、アドホックネットワーク等の動的ネットワーク内において匿名通信を利用する際にも有効に適用することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明に係る匿名通信システムにおける匿名通信Ｔｏｒサーキットの構築例を示す模式図である。
【図２】本発明に係る匿名通信システムにおいて匿名通信Ｔｏｒサーキットとして複数の匿名通信経路を構築している一例を示す模式図である。
【図３】本発明に係る匿名通信システムにおいて複数経路の候補のいずれかを匿名通信経路として適用する適用例を示す模式図である。
【図４】セットアップフェーズにおける暗号処理の様子を示す模式図である。
【図５】データ転送フェーズにおける暗号処理の様子を示す模式図である。
【図６】現状の技術において、通信の途中に中間ノードが離脱したために代替の経路に変更する場合の動作の流れを示すシーケンスチャートである。
【図７】本発明の実施形態において、通信の途中に中間ノードが離脱したために代替の経路に変更する場合の動作の流れの一例を示すシーケンスチャートである。
【図８】本発明の実施形態において、各ノード間で送受信されるパケットの詳細内容の一例を示す模式図である。
【発明を実施するための形態】
【００１５】
以下、本発明による匿名通信システム、匿名通信方法および匿名通信プログラムの好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明による匿名通信システムおよび匿名通信方法について説明するが、かかる匿名通信方法をコンピュータにより実行可能な匿名通信プログラムとして実施するようにしても良いし、あるいは、匿名通信プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。また、以下の各図面に付した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではないことも言うまでもない。
【００１６】
（本発明の特徴）
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明の匿名通信システムは、オニオンルーティングを利用して多重暗号化データを複数段の中継ノードを介して送信源ノードから宛先ノードに転送し、匿名通信経路上にあるいずれかの中継ノード（オニオンルータ）が該匿名通信経路から離脱してしまうような場合であっても、新たに匿名通信経路を再構築することなく、匿名通信を継続させることを可能にすることを主要な特徴としている。このような特徴を有する本発明により、通信遅延の原因であった中継ノード（オニオンルータ）の経路構築にかかる暗号処理負荷を軽減することが可能となる。
【００１７】
さらに説明すると、本発明は、オニオンルーティングを利用した匿名通信システムにおいて、匿名通信経路を形成する各中継ノード（オニオンルータ）として、複数の中継ノードを任意の個数分あらかじめ確保し、各中継ノード（オニオンルータ）が次ホップノードに関するルーティング情報として複数の通信経路情報を保持することを主要な特徴とするとともに、さらに、匿名通信経路上を転送する多重暗号化データを作成する際に、匿名通信経路上の各中継ノード（オニオンルータ）の次ホップノードに関するルーティング情報と次ホップノードに実際に転送する暗号化した転送データ（多重暗号化データ）とを分離して暗号処理を行うことも主要な特徴としており、而して、各中継ノード上において行われる受信パケットに関する暗号処理回数を軽減させることができ、多重暗号化による通信遅延を抑制することを可能にしている。
【００１８】
図１を参照して、本発明の特徴をさらに具体的に説明する。図１は、本発明に係る匿名通信システムにおける匿名通信Ｔｏｒサーキットの構築例を示す模式図である。本発明は、前述したように、オニオンルーティングの多重暗号化を用いた匿名通信Ｔｏｒの仕組みをベースにして、複数経路情報の保持およびパケットの暗号処理の現状の技術からの変更によって、オニオンルーティングの経路構築に関わる暗号処理負荷を軽減し、通信速度を高速化することが可能な新たな匿名通信システムを実現することを特徴としている。
【００１９】
図１に示すように、クライアントの送信源ノード１０（クライアントが使用するエンドノード）は、オニオンルーティングを利用する匿名通信経路を構築する際に、複数のオニオンルータ（ＯＲ：中継ノード）のリスト（図１にはＯＲ１、ＯＲ２、…、ＯＲ６の６個のオニオンルータ（中継ノード）の例を示している）のリストの中から、ガードノード（Guard  Node）、中間ノード（Middle  Node）、出口ノード（Exit  Node）の各段の中継ノードとして３個のオニオンルータ（ＯＲ）を一つずつランダムに選択して、匿名通信Ｔｏｒサーキットを構築する。図１に示す例においては、送信源ノード１０は、ＯＲ１、ＯＲ３、ＯＲ６の３個のオニオンルータ（中継ノード）を選択している。なお、匿名通信Ｔｏｒサーキットを形成する３個のオニオンルータ（中継ノード）は、それぞれ、クライアントの送信源ノード１０に近い方から宛先ノード２０に向かって、順番に、ガードノード、中間ノード、出口ノードと称されている。すなわち、図１に示す例においては、ＯＲ１がガードノード（Guard  Node）であり、ＯＲ３が中間ノード（Middle  Node）であり、ＯＲ６が出口ノード（Exit  Node）である。
【００２０】
さらに、本実施形態においては、オニオンルーティングを利用する匿名通信経路（匿名通信Ｔｏｒサーキット）に組み込むオニオンルータ（中継ノード）の個数を増やすことにより、匿名通信経路の候補を複数構築して、匿名通信経路に多様性を付与している。図２は、本発明に係る匿名通信システムにおいて匿名通信Ｔｏｒサーキットとして複数の匿名通信経路（オニオンルーティング経路）を構築している一例を示す模式図である。
【００２１】
図２に示す匿名通信経路（オニオンルーティング経路）の構築例においては、匿名通信経路（匿名通信Ｔｏｒサーキット）に組み込む中継ノード（オニオンルータ）に関して、ガードノード（Guard  Node）として符号Ｇで示すＯＲ１個と、中間ノード（Middle  Node）として符号Ｍ１で示すＯＲと符号Ｍ２で示すＯＲとの２個と、出口ノード（Exit  Node）として符号Ｅ１で示すＯＲと符号Ｅ２で示すＯＲとの２個との合計５個を選択することにより、クライアントの送信源ノード１０から宛先ノード２０に至るまでの転送経路（匿名通信経路）の候補として、次のように、複数通り（４通り）確保している。
【００２２】
（１）送信源ノード１０→ガードノードＧ→中間ノードＭ１→出口ノードＥ１→宛先ノード２０
（２）送信源ノード１０→ガードノードＧ→中間ノードＭ１→出口ノードＥ２→宛先ノード２０
（３）送信源ノード１０→ガードノードＧ→中間ノードＭ２→出口ノードＥ１→宛先ノード２０
（４）送信源ノード１０→ガードノードＧ→中間ノードＭ２→出口ノードＥ２→宛先ノード２０
【００２３】
現状の技術においては、匿名通信経路（匿名通信Ｔｏｒサーキット）の各オニオンルータ（中継ノード）は、次ホップノード（次段のオニオンルータ（中継ノード））に関して一つしかルーティング情報を有していないが、図２に示す構築例においては、ガードノードと中間ノードとの各オニオンルータ（中継ノード）は、次ホップノードに関して、それぞれ、複数（２個）のルーティング情報を有している。つまり、ガードノードＧの場合は、次ホップノードとして中間ノードＭ１と中間ノードＭ２との２つのルーティング情報を有し、中間ノードＭ１および中間ノードＭ２の場合は、いずれも、次ホップノードとして出口ノードＥ１と出口ノードＥ２との２つのルーティング情報を有している。したがって、次ホップノードのいずれか一つが匿名通信経路（匿名通信Ｔｏｒサーキット）から離脱してしまった状態が発生しても、転送経路として他方の一つを次ホップノードに設定することによって、匿名通信を継続することができる構成になっている。
【００２４】
また、現状の技術における匿名通信システムにおいては、通信性能の向上を図るために、特に高い帯域幅を有するオニオンルータ（中継ノード）を、匿名通信経路の入口になるガードノード、出口になる出力ノードとして選択するような設計になっており、さらには、特に長期間安定して匿名通信経路内に存在することができる信頼性の高いオニオンルータ（中継ノード）が入口になるガードノードとして匿名通信Ｔｏｒネットワーク（匿名通信Ｔｏｒサーキット）に組み込まれるような設計になっている。
【００２５】
したがって、図２における構築例においても、ガードノードに関しては、途中離脱する可能性がある不安定なオニオンルータ（中継ノード）が組み込まれてしまうことを想定する必要はないものとして、中間ノードと出口ノードとに対して複数の転送経路を設定することにし、複数のルーティング情報を保持することに伴うオーバーヘッドを低減している場合を示している。さらに、該ルーティング情報は、実際に送信源ノード１０から宛先ノード２０まで転送するデータ本体の暗号処理とは分離することによって、通信遅延の原因である暗号処理コストを軽減することも可能にしている。言い換えると、匿名通信経路上を転送する多重暗号化データを作成する際に、匿名通信経路上の各オニオンルータ（中継ノード）に関し、各オニオンルータ（中継ノード）の次ホップノードに関するルーティング情報を次ホップノードに実際に転送する暗号化した転送データ（多重暗号化データ）とを結合して暗号化することによって、各オニオンルータ（中継ノード）上において行われる受信パケットに関する暗号処理回数を軽減させ、多重暗号化による通信遅延を抑制することも可能にしている。
【００２６】
＜本発明の実施形態＞
次に、本発明に係る匿名通信システムの実施形態について、図面を参照しながら詳細に説明する。本実施形態においては、前述したように、複数経路の適用および暗号処理の変更によって、現状の技術における課題を解決している。また、本実施形態においては、暗号処理として、クライアントの送信源ノード１０（エンドノード）と各中継ノード（オニオンルータ）と宛先ノード２０（エンドノード）とからなる匿名通信経路匿名通信Ｔｏｒサーキット）を構築するセットアップフェーズと、構築した匿名通信経路を用いてオペレータの送信源ノード１０と宛先ノード２０とのエンドノード間でデータのやり取りを行うデータ転送フェーズと、の２段階のフェーズにおける暗号処理をそれぞれで異なる処理を行うことにしている。なお、以下の説明において、匿名通信経路上でやり取りされるパケットの内容を説明する場合、次の表１に示す表記ルールにしたがって記述していくことにする。
【００２７】
【表１】
2019198003.tif 000003
【００２８】
｛１．複数経路の適用｝
本実施形態においては、匿名通信経路のセットアップ時に、該匿名通信経路を形成するための複数経路の候補に関する情報を含むパケットを、各段の中継ノード（オニオンルータ）に送信して、各段の中継ノード（オニオンルータ）にあらかじめ設定しておく。その結果として、以降のデータ転送フェーズにおいて、該匿名通信経路からいずれかの中継ノード（オニオンルータ）が離脱した場合における経路構築の際に発生する可能性があった暗号処理の負荷を軽減することができる。
【００２９】
図３は、本発明に係る匿名通信システムにおいて複数経路の候補のいずれかを匿名通信経路（匿名通信Ｔｏｒサーキット）として適用する適用例を示す模式図である。図３において、中間ノードＭｎ、出口ノードＥｎの表記にあるパラメータｎは、経路の候補数を示している。
【００３０】
図３において、まず、クライアントは、匿名通信経路構築のセットアップフェーズに、送信源ノード１０からガードノードＧに対して、該ガードノードＧに関する次ホップノードの候補となる中間ノードＭ１〜Ｍｎのルーティング情報（後続ノード群に関する情報も含む）を送信する。送信源ノード１０からの次ホップノードの候補に関するルーティング情報を受け取ったガードノードＧは、該次ホップノードの候補に関するルーティング情報（後続ノード群に関する情報も含む）を保存するとともに、該次ホップノードの候補となるｎ個の中間ノードＭ１〜Ｍｎ（中間ノード群｛Ｍ｝）の中から、匿名通信経路として実際に使用する次ホップノードとして、いずれか一つの中間ノード例えば中間ノードＭ１に関するルーティング情報を選択して、該中間ノードＭ１との間の通信路を確立する。
【００３１】
しかる後、データ転送フェーズにおいて、送信源ノード１０からのデータパケットを受け取ったガードノードＧが、図３に×印を付して示しているように、次ホップノードである中間ノードＭ１に対して受け取ったデータパケットを転送することができないことを検出すると、保存している次ホップノードの候補となるｎ個の中間ノードＭ１〜Ｍｎ（中間ノード群｛Ｍ｝）の中から、新たな次ホップノードとして、新たな中間ノード例えば中間ノードＭ２に関するルーティング情報を選択する。そして、該中間ノードＭ２を新たに匿名通信経路に組み込むために、ガードノードＧは、該中間ノードＭ２に対して共有鍵と後続ノード群とに関する情報を含むパケットを送信して、ガードノードＧの次ホップノードを中間ノードＭ１から中間ノードＭ２に切り替える。
【００３２】
ここで、匿名通信経路（匿名通信Ｔｏｒサーキット）への新たな中間ノードの組み込み動作は、新たな中間ノードの組み込みが成功して匿名通信経路の構築が完了するか、あるいは、全ての次ホップノードの候補との通信が失敗するまで繰り返される。また、次ホップノードの候補となるｎ個の中間ノードＭ１〜Ｍｎ（中間ノード群｛Ｍ｝）に関する情報は、サーキットＩＤと経路の生存時間とによって管理され、不要になった時点で全て破棄される。
【００３３】
｛２．暗号処理の変更｝
本実施形態においては、匿名通信経路構築のセットアップフェーズにおいて、クライアントの送信源ノード（エンドノード）から各中継ノード（オニオンルータ）へ共有鍵を配布する際に発生する暗号処理回数を低減するために、匿名通信経路構築のセットアップフェーズにおけるパケットの暗号処理方法を、データ転送時すなわちデータ転送フェーズにおけるパケットの暗号処理方法とは異なる方法を適用する。
【００３４】
（２．１．セットアップフェーズ）
匿名通信経路構築時のセットアップフェーズにおいては、クライアントの送信源ノード１０から各中継ノード（オニオンルータ）までの匿名通信経路を構築する。図４は、セットアップフェーズにおける暗号処理の様子を示す模式図である。
【００３５】
図４において、ノードＡ１（Ｎｏｄｅ  Ａ１）は、クライアントのエンドノードからのパケット３０を先行ノードを介して受信すると、復号処理３１に示すように、受信したパケット３０において自ノードＡ１の公開鍵ＥＰＫＡ１により暗号化されているデータを自ノードの秘密鍵ＳＫＡ１を用いて復号して、共有鍵抽出処理３２に示すように、まず、該パケット３０から該クライアントのエンドノードとの共有鍵ＫｉＡを取り出して保存する。さらに、ノードＡ１（Ｎｏｄｅ  Ａ１）は、次ホップノード転送データ抽出処理３３に示すように、該パケット３０から、次ホップノード群｛Ｂ｝であるノードＢ１（Ｎｏｄｅ  Ｂ１）、…、ノードＢｎ（Ｎｏｄｅ  Ｂｎ）それぞれに関するルーティング情報ＲＢ１、…、ルーティング情報ＲＢｎと、それぞれの公開鍵ＥＰＫＢ１、…、公開鍵ＥＰＫＢｎを用いて暗号化した暗号化データＥＰＫＢ１（ｍ）、…、ＥＰＫＢｎ（ｍ）とのペアを取り出して保存する。
【００３６】
しかる後、ノードＡ１（Ｎｏｄｅ  Ａ１）は、転送処理３４に示すように、次ホップノード群｛Ｂ｝の中の第１番目のホップノード例えばノードＢ１（Ｎｏｄｅ  Ｂ１）に対して、ルーティング情報ＲＢ１とペアになっている暗号化データＥＰＫＢ１（ｍ）を送信する。ここで、第１番目のホップノード例えばノードＢ１（Ｎｏｄｅ  Ｂ１）は、匿名通信経路に組み込む次ホップノードとしてクライアントのエンドノードから指定されているノードである。
【００３７】
ここで、セットアップフェーズにおいてクライアントのエンドノードから配布される共有鍵（前述の中継ノード群｛Ａ｝の場合は共有鍵ＫｉＡ）は、当該ノードＡ１（Ｎｏｄｅ  Ａ１）が匿名通信経路に組み込まれる中継ノード段を形成する中継ノード群｛Ａ｝の全ての中継ノードＡ１、…、中継ノードＡｎの間で共有されるが、それぞれの中継ノードＡ１、…、中継ノードＡｎの公開鍵ＥＰＫＡ１、…、公開鍵ＥＰＫＡｎそれぞれを用いて暗号化されて先行ノードを介して送信されてくる。したがって、先行ノード群、後続ノード群に属するいずれの中継ノードにおいても、中継ノード群｛Ａ｝に共有される該共有鍵ＫｉＡを取り出して復号することはできない。
【００３８】
（２．２．データ転送フェーズ）
次に、データ転送フェーズにおける暗号処理について説明する。図５は、データ転送フェーズにおける暗号処理の様子を示す模式図である。
【００３９】
図５において、ノードＡ１（Ｎｏｄｅ  Ａ１）は、クライアントのエンドノードからのパケット４０を先行ノードを介して受信すると、復号処理４１に示すように、受信したパケット４０において自ノードＡ１を含むノード群｛Ａ｝の共有鍵ＫｉＡにより暗号化されているデータを自ノードの共有鍵ＫｉＡを用いて復号する。しかる後、転送処理４２に示すように、復号したデータパケットを次ホップノードとしてルーティング情報ＲＢ１に指定されているノードＢ１（Ｎｏｄｅ  Ｂ１）に対して転送する。
【００４０】
ここで、次ホップノードのノードＢ１（Ｎｏｄｅ  Ｂ１）が離脱していた場合には、ノードＡ１（Ｎｏｄｅ  Ａ１）は、図４に示したセットアップフェーズにおいてクライアントのエンドノードから受信して保存している次ホップノード群｛Ｂ｝に関するルーティング情報ＲＢｍと公開鍵ＥＰＫＢｍとを参照する。そして、次ホップノード群｛Ｂ｝のうち、第２番目のホップノード例えばノードＢ２（Ｎｏｄｅ  Ｂ２）に関するルーティング情報ＲＢ２と暗号化データＥＰＫＢ２（ｍ）とを取り出して、該ノードＢ２（Ｎｏｄｅ  Ｂ２）との間の通信経路を確立し、しかる後に、先に復号していたデータパケットのオニオンヘッダの宛先をノードＢ１（Ｎｏｄｅ  Ｂ１）からノードＢ２（Ｎｏｄｅ  Ｂ２）に更新して、更新転送処理４３に示すように、第２番目のホップノードであるノードＢ２（Ｎｏｄｅ  Ｂ２）に対して転送する。
【００４１】
以上のように、データ転送フェーズにおいて、クライアントからのデータパケットを受信した中継ノードが、該データパケットを転送しようとする次ホップノードの中継ノードの離脱を検出した場合には、セットアップフェーズにおいてあらかじめ受信して保存している次ホップノード候補群の中から代替する中継ノードを選択して、パケットの転送経路を代替経路に変更して通信を継続させることができる。
【００４２】
＜実施形態の動作の説明＞
次に、匿名通信経路を形成する複数段例えば３段のオニオンルータ（中継ノード）のうち中間ノード（Middle  Node）が、通信の途中で該匿名通信経路から離脱した場合の動作について、現状の技術における動作と対比する形で、以下に詳細に説明する。なお、以下の説明においては、クライアントの送信源ノード（エンドノード）から宛先ノード（エンドノード）に達する匿名通信経路の経路数ｎ＝２の場合を例にして、中間ノードＭ１が途中離脱したために、代替の中間ノードＭ２を用いる匿名通信経路に変更する場合について説明する。
【００４３】
まず、現状の技術における動作について、図６を用いて説明する。図６は、現状の技術において、通信の途中に中間ノードＭ１が離脱したために代替の経路に変更する場合の動作の流れを示すシーケンスチャートである。
【００４４】
図６に示すように、現状の技術においては、まず、クライアントは、セットアップフェーズとして、送信源ノード１０と宛先ノード２０との間の匿名通信経路を形成するために、送信源ノード１０から、該匿名通信経路に組み込まれるガードノードＧ１、中間ノードＭ１、出口ノードＥ１の３つの中継ノード（オニオンルータ）それぞれに対して、それぞれの共有鍵ＫＧ、ＫＭ、ＫＥを配布する動作を、送信と受信確認との双方向のパケット送信動作として３回に分けて行う（シーケンスＳｅｑ１、シーケンスＳｅｑ２、シーケンスＳｅｑ３）。
【００４５】
また、中間ノードＭ１、出口ノードＥ１のそれぞれに対して共有鍵ＫＭ、ＫＥそれぞれに関するパケットを配布する際には、それぞれのパケットを中継するガードノードＧ１や中間ノードＭ１において、クライアントの送信源ノード１０から事前にそれぞれの中継ノードに配布されている共有鍵ＫＧや共有鍵ＫＭを用いて暗号処理を行うことが必要である。
【００４６】
図６において、送信源ノード１０と宛先ノード２０との間の匿名通信経路が形成されると、形成された匿名通信経路を介して、送信源ノード１０と宛先ノード２０との間で匿名通信を行うデータ転送フェーズに移行する。データ転送フェーズの匿名通信中において、中間ノードＭ１が何らかの要因で匿名通信経路から離脱すると（シーケンスＳｅｑ４）、該匿名通信経路を形成していた他の中継ノードすなわちガードノードＧ１、出口ノードＥ１に関しても、まだ、使用可能な状態であるか否かに関わらず、該匿名通信経路から強制的に離脱させて、形成されていた既存の匿名通信経路を廃棄する。
【００４７】
しかる後、送信源ノード１０と宛先ノード２０との間の代替の匿名通信経路を形成するために、新たなガードノードＧ２、中間ノードＭ２、出口ノードＥ２の３段の中継ノード（オニオンルータ）を選択し直して、それぞれの中継ノード（オニオンルータ）に対して、送信源ノード１０から、それぞれの共有鍵ＫＧ、ＫＭ、ＫＥを配布するために、送信と受信確認との双方向のパケットの送信動作を再度行うことにより、代替の匿名通信経路を構築し直す（シーケンスＳｅｑ５、シーケンスＳｅｑ６、シーケンスＳｅｑ７）。しかる後、新たに形成された代替の匿名通信経路を介して送信源ノード１０と宛先ノード２０との間の匿名通信を再開する（シーケンスＳｅｑ８）。
【００４８】
次に、本発明の実施形態における動作について、図７のシーケンスチャートと図８の模式図とを用いて説明する。図７は、本発明の実施形態において、通信の途中に中間ノードＭ１が離脱したために代替の経路に変更する場合の動作の流れの一例を示すシーケンスチャートであり、図８は、本発明の実施形態において、各ノード間で送受信されるパケットの詳細内容の一例を示す模式図である。なお、図８において、図８（Ａ）はセットアップフェーズにおけるパケットの詳細内容の一例を示し、図８（Ｂ）はデータ転送フェーズにおけるパケットの詳細内容の一例を示している。
【００４９】
図７、図８に示す本実施形態において、クライアントの送信源ノード１０が、匿名通信プロセスを開始すると、ディレクトリサーバに問い合わせて、全ての中継ノード（オニオンルータ）に関するリストを取得する。そして、全ての中継ノード（オニオンルータ）に関するリストを取得すると、クライアントの送信源ノード１０は、該リストの中から、送信源ノード１０から宛先ノード２０に至る匿名通信経路（匿名通信Ｔｏｒサーキット）に組み込む中継ノード（オニオンルータ）を無作為に選択して確保する。本実施形態においては、図８（Ａ）に示すように、クライアントの送信源ノード１０は、第１段目のオニオンルータのガードノードとしてＧノード１個、第２段目のオニオンルータの中間ノードとしてＭ１ノードとＭ２ノードとの２個、第３段目のオニオンルータの出口ノードとしてＥ１ノードとＥ２ノードとの２個の合計５個の中継ノード（オニオンルータ）を選択しているものとする。
【００５０】
しかる後、クライアントの送信源ノード１０は、選択した合計５個の中継ノード（オニオンルータ）をそれぞれのオニオンルータの段に組み込んだ宛先ノード２０に至る匿名通信経路（匿名通信Ｔｏｒサーキット）を構築するためのセットアップフェーズに移行して、中継ノード（オニオンルータ）それぞれに対して、共有鍵を配布する動作を開始する。
【００５１】
｛１．セットアップフェーズ｝
まず、セットアップフェーズにおいて中継ノード（オニオンルータ）それぞれに対して共有鍵を配布するためのパケットの詳細について、図８（Ａ）を参照しながら説明する。図８（Ａ）において、符号ｓ１は、クライアントの送信源ノード１０からガードノードＧに対して送信するパケットを示し、また、符号ｓ２は、ガードノードＧが、クライアントの送信源ノード１０から受け取ったパケットの中から、次ホップノードとして指定された中間ノードＭ１向けのデータを抽出して、中間ノードＭ１に対して送信するパケットを示し、また、符号ｓ３は、中間ノードＭ１が、前段のガードノードＧから受け取ったパケットの中から、次ホップノードとして指定された出口ノードＥ１向けのデータを抽出して、出口ノードＥ１に対して送信するパケットを示している。
【００５２】
セットアップフェーズにおいては、クライアントの送信源ノード１０は、まず、次の式（１）、式（２）に示すように、出口ノード群｛Ｅ｝の送信源ノード１０との共有鍵ＫｉＥと宛先ノード２０のルーティング情報Ｒｄｅｓｔとをセットにしたデータを二組作成し、それぞれを、出口ノードＥ１の公開鍵ＥＰＫＥ１と出口ノードＥ２の公開鍵ＥＰＫＥ２とを用いて暗号化する。
【００５３】
【数１】
2019198003.tif 000004
【００５４】
次に、クライアントの送信源ノード１０は、次の式（３）、式（４）に示すように、式（１）のデータと出口ノードＥ１のルーティング情報ＲＥ１とのペアと式（２）のデータと出口ノードＥ２のルーティング情報ＲＥ２とのペアとを結合したデータに対してさらに中間ノード群｛Ｍ｝の送信源ノード１０との共有鍵ＫｉＭを結合したデータを、匿名通信経路組み込み用と代替用として二組作成し、それぞれを、中間ノードＭ１の公開鍵ＥＰＫＭ１と中間ノードＭ２の公開鍵ＥＰＫＭ２とを用いて暗号化する。
【００５５】
【数２】
2019198003.tif 000005
【００５６】
次に、クライアントの送信源ノード１０は、図８（Ａ）の下側の枠内の符号ｓ１に示すように、式（３）のデータと中間ノードＭ１のルーティング情報ＲＭ１とのペアと式（４）のデータと中間ノードＭ２のルーティング情報ＲＭ２とのペアとを結合したデータに対してさらにガードノード群｛Ｇ｝の送信源ノード１０との共有鍵ＫｉＧを結合したデータを作成し、作成したデータをガードノードＧの公開鍵ＥＰＫＧを用いて暗号化したデータに対してさらにガードノードＧのルーティング情報ＲＧを結合することによって、ガードノードＧに対して送信するパケットｓ１を作成する。
【００５７】
しかる後、図７のシーケンス図に示すように、作成したパケットｓ１をクライアントの送信源ノード１０からガードノードＧに対して送信する。ガードノードＧは、送信源ノード１０から受け取ったパケットｓ１のデータを、ガードノードＧの秘密鍵ＳＫＧを用いて復号して、ガードノードＧの送信源ノード１０との共有鍵ＫｉＧを取り出して保存した後、クライアントの送信源ノード１０に対して受信確認のパケットを返送する（シーケンスＳｅｑ１１）。さらに、ガードノードＧは、次ホップノード群｛Ｍ｝である中間ノードＭ１、中間ノードＭ２のそれぞれに関するルーティング情報ＲＭ１、ルーティング情報ＲＭ２と、それぞれの公開鍵ＥＰＫＭ１、公開鍵ＥＰＫＭ２を用いて暗号化された暗号化データ（式（３）、式（４）のデータ）とのペアを取り出して保存する。
【００５８】
次に、クライアントの送信源ノード１０からのパケットｓ１を受け取ったガードノードＧが、次ホップノード群｛Ｍ｝の中から次ホップノードとして指定された中間ノードＭ１に対して送信するパケットｓ２について、図８（Ａ）を参照しながら説明する。ガードノードＧは、クライアントの送信源ノード１０からのパケットｓ１がガードノードＧの秘密鍵ＳＫＧを用いて復号されたデータの中から、次ホップノードとして指定された中間ノードＭ１に関するデータを抽出する。すなわち、図８（Ａ）の下側の枠内の符号ｓ２に示すように、式（３）のデータと中間ノードＭ１のルーティング情報ＲＭ１とのペアに関するデータを抽出することによって、中間ノードＭ１に対して送信するパケットｓ２を作成する。
【００５９】
しかる後、図７のシーケンス図に示すように、作成したパケットｓ２をガードノードＧから中間ノードＭ１に対して送信する。中間ノードＭ１は、ガードノードＧから受け取ったパケットｓ２のデータを、中間ノードＭ１の秘密鍵ＳＫＭ１を用いて復号して、中間ノード群｛Ｍ｝のクライアントとの共有鍵ＫｉＭを取り出して保存した後、ガードノードＧに対して受信確認のパケットを返送する（シーケンスＳｅｑ１１１）。さらに、中間ノードＭ１は、次ホップノード群｛Ｅ｝である出口ノードＥ１、出口ノードＥ２のそれぞれに関するルーティング情報ＲＥ１、ルーティング情報ＲＥ２と、それぞれの公開鍵ＥＰＫＥ１、公開鍵ＥＰＫＥ２を用いて暗号化された暗号化データ（式（１）、式（２））とのペアを取り出して保存する。
【００６０】
次に、ガードノードＧからのパケットｓ２を受け取った中間ノードＭが、次ホップノード群｛Ｅ｝の中から次ホップノードとして指定された出口ノードＥ１に対して送信するパケットｓ３について、図８（Ａ）を参照しながら説明する。中間ノードＭ１は、ガードノードＧからのパケットｓ２が中間ノードＭ１の秘密鍵ＳＫＭ１を用いて復号されたデータの中から、次ホップノードとして指定された出口ノードＥ１に関するデータを抽出する。すなわち、図８（Ａ）の下側の枠内の符号ｓ３に示すように、式（１）のデータと出口ノードＥ１のルーティング情報ＲＥ１とのペアに関するデータを抽出することによって、出口ノードＥ１に対して送信するパケットｓ３を作成する。
【００６１】
しかる後、図７のシーケンス図に示すように、作成したパケットｓ３を中間ノードＭ１から出口ノードＥ１に対して送信する。出口ノードＥ１は、中間ノードＭ１から受け取ったパケットｓ３のデータを、出口ノードＥ１の秘密鍵ＳＫＥ１を用いて復号して、出口ノード群｛Ｅ｝のクライアントとの共有鍵ＫｉＥを取り出して保存した後、中間ノードＭ１に対して受信確認のパケットを返送する（シーケンスＳｅｑ１１２）。さらに、出口ノードＥ１は、宛先ノード２０に関するルーティング情報Ｒｄｅｓｔを取り出して保存する。
【００６２】
セットアップフェーズにおいて以上のような動作を行うことにより、クライアントの送信源ノード１０と宛先ノード２０との間に、ガードノードＧ，中間ノードＭ１、出口ノードＥ１の３段の中継ノード（オニオンルータ）を経由した匿名通信経路（匿名通信Ｔｏｒサーキット）が確立される。セットアップフェーズにおいて、匿名通信経路（匿名通信Ｔｏｒサーキット）が確立されて、ガードノードＧ，中間ノードＭ１、出口ノードＥ１のそれぞれに対して共有鍵ＫｉＧ、共有鍵ＫｉＭ、共有鍵ＫｉＥの配布が完了すると、データ転送フェーズに移行する。
【００６３】
｛２．データ転送フェーズ｝
（２．１．確立した匿名通信経路を経由してデータ転送を行う場合）
次に、データ転送フェーズにおいて、クライアントの送信源ノード１０から、セットアップフェーズにおいて確立した匿名通信経路を経由してメッセージｍを宛先ノード２０に対して配布するためのパケットの詳細について、図８（Ｂ）を参照しながら説明する。なお、図８（Ｂ）において、符号ｓ１は、クライアントの送信源ノード１０からガードノードＧに対して送信するデータパケットを示し、また、符号ｓ２は、ガードノードＧがクライアントから受け取ったデータパケットの中から、次ホップノードとして指定された中間ノードＭ１向けのデータを抽出して、中間ノードＭ１に対して送信するデータパケットを示している。
【００６４】
また、符号ｓ２ａは、中間ノードＭ１が匿名通信経路から離脱した際に、代替の中間ノードＭ２を匿名通信経路に組み込むためのセットアップ用として前述の式（４）に示した多重暗号化データに中間ノードＭ２のルーティング情報ＲＭ２を結合してガードノードＧから中間ノードＭ２に対して送信するパケットを示し、また、符号ｓ２ｂは、データパケットｓ２の次のホップ先を中間ノードＭ１から中間ノードＭ２に切り替えて送信する場合のデータパケットを示している。また、符号ｓ３は、中間ノードＭ１または中間ノードＭ２がガードノードＧから受け取ったデータパケットの中から、次ホップノードとして指定された出口ノードＥ１向けのデータを抽出して、出口ノードＥ１に対して送信するデータパケットを示し、符号ｓ４は、出口ノードＥ１が中間ノードＭ２から受け取ったデータパケットの中から、宛先ノード２０向けのデータを抽出して、宛先ノード２０に対して送信するデータパケットを示している。
【００６５】
データ転送フェーズにおいて、送信源ノード１０に宛先ノード２０向けのメッセージｍが発生した場合、送信源ノード１０は、ルーティング情報とともに各中継ノード（オニオンルータ）の共有鍵ＫｉＥ、ＫｉＭ、ＫｉＧの順に多重暗号化して、送信源ノード１０からガードノードＧに送信するデータパケットｓ１を作成する。すなわち、送信源ノード１０において、宛先ノード２０向けのメッセージｍに関する多重暗号化データを生成する際に、各段の中継ノードの次ホップノードに関するルーティング情報と、各段の中継ノードから次ホップノードに実際に転送するデータを該中継ノードの共有鍵を用いて暗号化したデータとを結合したデータを後段から前段側の中継ノードに向かって順次結合することにより、多重暗号化データを生成して、ガードノードＧに対して送信するデータパケットｓ１を作成する。
【００６６】
さらに具体的に説明すると、次の式（５）に示すように、宛先ノード２０向けのメッセージｍと宛先ノード２０のルーティング情報Ｒｄｅｓｔとを結合したデータを、出口ノード群｛Ｅ｝の共有鍵ＫｉＥを用いて暗号化する。さらに、該暗号化したデータに出口ノードＥ１のルーティング情報ＲＥ１を結合したデータを、中間ノード群｛Ｍ｝の共有鍵ＫｉＭを用いて暗号化する。さらに、該暗号化したデータに中間ノードＭ１のルーティング情報ＲＭ１を結合したデータを、ガードノード群｛Ｇ｝の共有鍵ＫｉＧを用いて暗号化したデータに対してさらにガードノードＧのルーティング情報ＲＧを結合することによって、図８（Ｂ）の下側の枠内の符号ｓ１に示すように、クライアントの送信源ノード１０からガードノードＧに送信するデータパケットｓ１を作成する。
【００６７】
【数３】
2019198003.tif 000006
【００６８】
なお、宛先ノード２０が、オニオンルーティングのプロトコルに対応していない場合には、多重暗号化構造を、宛先ノード２０のエンドノードにまで拡張することができないので、かかる場合には、メッセージｍは、ＳＳＬ（Secure  Socket  Layer）等の暗号化方式を用いて適切に暗号化されているものとする。
【００６９】
一方、共有鍵を各段の中間ノードに配布するセットアップフェーズにおいては、送信源ノード１０が、各段の中継ノード向けの共有鍵情報に関する前記多重暗号化データを生成する際、図８（Ａ）に前述したように、各段の中継ノードの次ホップノードに関するルーティング情報と、各段の中継ノードから次ホップノードに実際に転送するデータを該中継ノードの公開鍵を用いて暗号化したデータとを結合したデータを後段から前段側の中継ノードに向かって順次結合することにより、多重暗号化データを生成している。つまり、送信源ノード１０において、匿名通信経路上を転送する多重暗号化データを生成する際に、宛先ノード２０向けのメッセージｍを送信する場合における該メッセージｍの多重暗号化処理と、匿名通信経路のセットアップ時において各中継ノードに対して共有鍵情報を送信する場合における該共有鍵情報の多重暗号化処理とに関し、互いに異なる暗号化処理を行っている。
【００７０】
送信源ノード１０は、データパケットｓ１を作成すると、図７のシーケンス図に示すように、作成したデータパケットｓ１を送信源ノード１０からガードノードＧに対して送信する。ガードノードＧは、送信源ノード１０から受け取ったデータパケットｓ１のデータを、ガードノード群｛Ｇ｝の共有鍵ＫｉＧを用いて復号して取り出し、取り出したデータが、復号したデータのルーティング情報ＲＭ１に基づいて次ホップノードの中間ノードＭ１に送信すべきデータであることを確認すると、送信源ノード１０に対して受信確認のパケットを返送する（シーケンスＳｅｑ１２）。ここで、ガードノードＧは、中間ノード群｛Ｍ｝の共有鍵を保持していないので、取り出したデータにおいて多重暗号化されている多重暗号化データをさらに復号することはできない。
【００７１】
しかる後、ガードノードＧは、図８（Ｂ）の下側の枠内の符号ｓ２に示すように、取得した多重暗号化データを送信先の中間ノードＭ１向けのデータパケットｓ２として作成して、作成したデータパケットｓ２をガードノードＧから中間ノードＭ１に対して送信する。
【００７２】
以降、ガードノードＧと同様の手順により、中間ノードＭ１、出口ノードＥ１は、それぞれのノードに保持している共有鍵ＫｉＭ、共有鍵ＫｉＥを用いて前段の中継ノードから受け取ったデータパケットに含まれている多重暗号化データを一段階ずつ復号して、図７のシーケンス図のシーケンスＳｅｑ１２１、シーケンスＳｅｑ１２２、シーケンスＳｅｑ１２３に示すように、宛先ノード２０までメッセージｍを含むデータパケットを順次中継していく。
【００７３】
すなわち、中間ノードＭ１は、ガードノードＧから受け取ったデータパケットｓ２の多重暗号化データを、中間ノード群｛Ｍ｝の共有鍵共有鍵ＫｉＭを用いて復号して、得られたデータを、図８（Ｂ）の下側の枠内の符号ｓ３に示すように、次ホップノードの出口ノードＥ１向けのデータパケットｓ３として作成して、作成したデータパケットｓ３を中間ノードＭ１から出口ノードＥ１に対して送信する。出口ノードＥ１は、中間ノードＭ１から受け取ったデータパケットｓ３の暗号化データを、出口ノード群｛Ｅ｝の共有鍵ＫｉＥを用いて復号して、得られたデータを、図８（Ｂ）の下側の枠内の符号ｓ３に示すように、宛先ノード２０向けのデータパケットｓ４として作成して、作成したデータパケットｓ４を出口ノードＥ１から宛先ノード２０に対して送信する。その結果、宛先ノード２０は、出口ノードＥ１から受け取ったデータパケットｓ４に含まれている送信源ノード１０からのメッセージｍを取得することになる。
【００７４】
（２．２．中間ノードＭ１が匿名通信経路から離脱していた場合）
次に、セットアップフェーズにおいて確立した匿名通信経路を用いてデータパケットの転送を行っているデータ転送フェーズ中において、前段の送信源ノード１０からのデータパケットを受け取ったガードノードＧが、該データパケットの次ホップノードとして指定されている中間ノードＭ１の離脱を検出した場合の動作について説明する。
【００７５】
図７のシーケンス図に示すように、ガードノードＧは、送信源ノード１０が宛先ノード２０向けのメッセージｍを各中継ノード（オニオンルータ）の共有鍵ＫｉＥ、ＫｉＭ、ＫｉＧの順に多重暗号化した多重暗号化データとして作成したデータパケットｓ１を、送信源ノード１０から受信すると、ガードノードＧは、前述したように、送信源ノード１０から受け取ったデータパケットｓ１のデータを、ガードノード群｛Ｇ｝の共有鍵ＫｉＧを用いて復号して取り出す。そして、取り出したデータが、ルーティング情報ＲＭ１に基づいて次ホップノードの中間ノードＭ１に送信すべきデータ（多重暗号化されているデータ）であることを確認すると、送信源ノード１０に対して受信確認のパケットを返送する（シーケンスＳｅｑ１３）。
【００７６】
しかる後、ガードノードＧは、図８（Ｂ）の下側の枠内の符号ｓ２に示すように、取得した多重暗号化データを送信先の中間ノードＭ１向けのデータパケットｓ２として作成して、作成したデータパケットｓ２を、図７のシーケンス図に示すように、ガードノードＧから中間ノードＭ１に対して送信する（シーケンスＳｅｑ１３１）。しかし、ガードノードＧは、データパケットｓ２の送信先の中間ノードＭ１から受信確認のパケットを受け取ることができなかった場合、中間ノードＭ１が何らかの原因により匿名通信経路から離脱しているものと判定する（シーケンスＳｅｑ１３１）。
【００７７】
次ホップノードの中間ノードＭ１の離脱判定を行ったガードノードＧは、セットアップフェーズにおいて保存した次ホップノードの候補群の中から、中間ノードＭ１以外の中間ノードとして、中間ノードＭ２を次ホップノードとして選択する。
【００７８】
そして、ガードノードＧは、図８（Ｂ）の下側の枠内の符号ｓ２ａ示すように、中間ノードＭ１の代替として選択した中間ノードＭ２を匿名通信経路に組み込むためのセットアップ用として前述の式（４）に示した多重暗号化データをルーティング情報ＲＭ２とともに含むパケットｓ２ａを作成する。そして、作成したパケットｓ２ａを、図７のシーケンス図に示すように、次ホップノードとして選択した代替先の中間ノードＭ２に対して送信する。中間ノードＭ２は、ガードノードＧから受け取ったパケットｓ２ａのデータを、中間ノードＭ２の秘密鍵ＳＫＭ２を用いて復号して、中間ノード群｛Ｍ｝のクライアントとの共有鍵ＫｉＭを取り出して保存した後、ガードノードＧに対して受信確認のパケットを返送する（シーケンスＳｅｑ１４）。
【００７９】
中間ノードＭ２からの受信確認のパケットを受け取ることにより、中間ノードＭ１の代替として該中間ノードＭ２が匿名通信経路に組み込まれたことを確認すると、図８（Ｂ）の下側の枠内の符号ｓ２ｂに示すように、ガードノードＧは、クライアントの送信源ノード１０から受け取って、中間ノードＭ１向けに作成していたデータパケットｓ２のルーティング情報ＲＭ１を中間ノードＭ２向けのルーティング情報ＲＭ２に書き換えたデータパケットｓ２ｂを作成する。
【００８０】
しかる後、ガードノードＧは、図７のシーケンス図に示すように、作成したデータパケットｓ２ｂをガードノードＧから次ホップノードとして選択し直した中間ノードＭ２に対して送信する。中間ノードＭ２はガードノードＧから受け取ったデータパケットｓ２ｂのデータを、シーケンスＳｅｑ１４において保存した中間ノード群｛Ｍ｝の共有鍵ＫｉＭを用いて復号して取り出す。そして、取り出したデータ（暗号化データ）が、復号したデータのルーティング情報ＲＥ１に基づいて次ホップノードの出口ノードＥ１に送信すべきデータであることを確認すると、ガードノードＧに対して受信確認のパケットを返送する（シーケンスＳｅｑ１５１）。
【００８１】
しかる後、中間ノードＭ２は、図８（Ｂ）の下側の枠内の符号ｓ３に示すように、取得した暗号化データを送信先の出口ノードＥ１向けのデータパケットｓ３として作成して、作成したデータパケットｓ３を中間ノードＭ２から出口ノードＥ１に対して送信する。
【００８２】
出口ノードＥ１は、中間ノードＭ２と同様の手順を用いて、図７のシーケンス図のシーケンスＳｅｑ１５２に示すように、出口ノード群｛Ｅ｝の共有鍵ＫｉＥを用いて前段の中間ノードＭ２から受け取ったデータパケットに含まれている暗号化データを復号して、受信確認のパケットを中間ノードＭ２に対して返送するとともに、シーケンスＳｅｑ１５３に示すように、宛先ノード２０に対してメッセージｍを含むデータパケットを送信する。
【００８３】
以降、クライアントの送信源ノード１０において、宛先ノード２０向けのメッセージｍが作成される都度、送信源ノード１０が宛先ノード２０向けのメッセージｍを各中継ノード（オニオンルータ）の共有鍵ＫｉＥ、ＫｉＭ、ＫｉＧの順に多重暗号化した多重暗号化データとしてデータパケットｓ１を作成して、作成したデータパケットｓ１を匿名通信経路上のガードノードＧに対して送信する動作を繰り返す。
【００８４】
その結果、図７のシーケンス図のシーケンスＳｅｑ１６、シーケンスＳｅｑ１６１、シーケンスＳｅｑ１６２、シーケンスＳｅｑ１６３に示すように、送信源ノード１０からのメッセージｍを含む多重暗号化データのデータパケットを前段の中継ノードから順次受信したガードノードＧ、中間ノードＭ２、出口ノードＥ１それぞれは、それぞれのノードが保存している共有鍵ＫｉＧ、共有鍵ＫｉＭ、共有鍵ＫｉＥを用いて、前段の中継ノードから受け取ったデータパケットに含まれている多重暗号化データを一段階ずつ復号して、宛先ノード２０までメッセージｍを含むデータパケットを順次中継していく中継動作を繰り返す。
【００８５】
以上に説明したように、本実施形態においては、オニオンルーティングを利用して多重暗号化データをガードノード群｛Ｇ｝、中間ノード群｛Ｍ｝、出口ノード群｛Ｅ｝の複数段の中継ノードを介して送信源ノード１０から宛先ノード２０に転送する匿名通信システムにおいて、匿名通信経路を形成してオニオンルーティングを行う各段ごとの中継ノードとして、１ないし複数のノードを任意の個数分あらかじめ確保している。そして、各段ごとの中継ノードは、それぞれ、次ホップノードの候補それぞれに関するルーティング情報として１ないし複数の通信経路情報を保持し、かつ、各段ごとの中継ノードは、データの転送先としていた次ホップノードが匿名通信経路から離脱したことを検出した場合、次ホップノードの候補の中から選択した新たな次ホップノードへの経路に切り替えて、新たな該次ホップノードに対してデータ転送を行うことにより匿名通信を継続させる動作を行う。
【００８６】
したがって、次ホップノードが匿名通信経路から離脱する事態が発生しても、現状の技術のように、匿名通信経路を再構築する必要はないし、さらに、送信源ノード１０から再度データを送信し直す必要もない。
【００８７】
さらに、各段の中継ノードは、匿名通信経路のセットアップ時に、各段ごとに全ての中継ノードに同じ値に設定した共有鍵情報を送信源ノード１０から受け取って、同じ段に属する全ての中継ノードは、送信源ノード１０と共有する共有鍵を同じ値にして保持している。すなわち、共有鍵ＫｉＧ、共有鍵ＫｉＭ、共有鍵ＫｉＥは、それぞれ、匿名通信経路を形成するための各段の中継ノード（オニオンルータ）として１ないし複数選択されているガードノード群｛Ｇ｝、中間ノード群｛Ｍ｝、出口ノード群｛Ｅ｝それぞれにおいて、クライアントの送信源ノード１０と共有される鍵として保持されている。
【００８８】
したがって、匿名通信のデータ転送中に、いずれかの中継ノード（オニオンルータ）が匿名通信経路から離脱してしまった場合、当該中継ノード（オニオンルータ）の段に属する他の中継ノード（オニオンルータ）に切り替えることにより、通信経路を代替経路に切り替えたとしても、宛先ノード２０に転送するメッセージｍのデータ本体を、公開鍵暗号方式を用いて暗号化することなく、そのまま、切り替えた代替経路を経由して匿名通信経路上を転送し続けることが可能である。
【００８９】
＜実施形態の効果の説明＞
以上に詳細に説明したように、本実施形態においては以下のような効果が得られる。
【００９０】
現状の技術の匿名通信システムの場合、図６に示したように、メッセージの暗号処理を行ういずれかの中継ノード（オニオンルータ）が匿名通信経路から離脱してしまうと、該匿名通信経路を新しく再構築しなければならないという問題があった。
【００９１】
これに対して、本実施形態における匿名通信システムは、オニオンルーティングを適用して匿名通信経路を構築する際に、該匿名通信経路における暗号処理負荷を軽減するために、複数経路の適用と暗号処理の変更とを新たに適用している。
【００９２】
而して、匿名通信経路を形成するために選択した各中継ノードに複数の経路情報を保持させて、次ホップノードが何らかの原因により匿名通信経路から離脱する事態が発生しても、次ホップノードを他の中継ノードに更新することによって匿名通信を継続させることができるので、匿名通信経路の再構築を回避することが可能になる。
【００９３】
さらに、本実施形態においては、匿名通信経路上を転送する多重暗号化データを作成する際に、匿名通信経路上の各中継ノード（オニオンルータ）の次ホップノードに関するルーティング情報を次ホップノードに実際に転送する暗号化した転送データ（多重暗号化データ）と分離した暗号処理を行っているので、各中継ノード上において行われる受信パケットに関する暗号処理回数を軽減させることができ、多重暗号化による通信遅延を抑制することが可能である。
【００９４】
以上、本発明の好適な実施形態の構成を説明した。しかし、かかる実施形態は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。
【符号の説明】
【００９５】
１        ＯＲ（オニオンルータ）
２        ＯＲ（オニオンルータ）
３        ＯＲ（オニオンルータ）
４        ＯＲ（オニオンルータ）
５        ＯＲ（オニオンルータ）
６        ＯＲ（オニオンルータ）
１０      送信源ノード（クライアントが使用するエンドノード）
２０      宛先ノード（送信源ノードからのデータの宛先となるエンドノード）
３０      パケット
３１      復号処理
３２      共有鍵抽出処理
３３      次ホップノード転送データ抽出処理
３４      転送処理
４０      パケット
４１      復号処理
４２      転送処理
４３      更新転送処理
【図１】
2019198003.tif 000007
【図２】
2019198003.tif 000008
【図３】
2019198003.tif 000009
【図４】
2019198003.tif 000010
【図５】
2019198003.tif 000011
【図６】
2019198003.tif 000012
【図７】
2019198003.tif 000013
【図８】
2019198003.tif 000014