JP4233437B2 - 匿名データ送信方法、匿名データ中継方法、匿名データ送信装置、匿名データ中継装置、匿名データ送信プログラム、および匿名データ中継プログラム - Google Patents

匿名データ送信方法、匿名データ中継方法、匿名データ送信装置、匿名データ中継装置、匿名データ送信プログラム、および匿名データ中継プログラム Download PDF

Info

Publication number
JP4233437B2
JP4233437B2 JP2003398090A JP2003398090A JP4233437B2 JP 4233437 B2 JP4233437 B2 JP 4233437B2 JP 2003398090 A JP2003398090 A JP 2003398090A JP 2003398090 A JP2003398090 A JP 2003398090A JP 4233437 B2 JP4233437 B2 JP 4233437B2
Authority
JP
Japan
Prior art keywords
node
anonymous
packet
route
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003398090A
Other languages
English (en)
Other versions
JP2005159912A (ja
Inventor
勧 坂本
達也 貝沼
強 加藤
和邦 古原
秀樹 今井
晋爾 山中
良一 佐々木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2003398090A priority Critical patent/JP4233437B2/ja
Publication of JP2005159912A publication Critical patent/JP2005159912A/ja
Application granted granted Critical
Publication of JP4233437B2 publication Critical patent/JP4233437B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明はデータの送受信者の匿名性を守った匿名データ送信方法、匿名データ中継方法、匿名データ送信装置、匿名データ中継装置、匿名データ送信プログラム、および匿名データ中継プログラムに関し、特にデータの送受信経路を動的に変更することができる匿名データ送信方法、匿名データ中継方法、匿名データ送信装置、匿名データ中継装置、匿名データ送信プログラム、および匿名データ中継プログラムに関する。
インターネットを介した様々な情報交換が盛んに行われている。インターネットにおいて一般に利用されている技術では、伝送されているパケットを解析すれば、パケットのヘッダから受信者が割り出せると共に、パケットルートの追跡も可能である。その結果、インターネットの利用者個人のプライバシが侵害される虞がでてきている。たとえば、匿名の掲示板への投稿内容から、投稿者の使用している端末の所在(IPアドレス等)が分かってしまうと、悪意の第三者から嫌がらせを受ける危険性がある。
そこで、インターネット上のデータの送受信者の匿名性を守るための様々な技術が考えられている。データの送受信の匿名性を守るためには、全てのデータ通信を暗号化すると共に、パケットの伝送経路も漏洩しないようにする必要がある。
パケットの伝送経路の漏洩を防止するには、複数の中継地(ルータ)を活用することにより、通信中のパケットの受信元や転送先等の情報の漏洩をシャットアウトする必要がある。このような伝送経路の漏洩防止手法としては、「オニオンルーティング」と名付けられた手法が知られている(たとえば、特許文献1参照)。
オニオンルーティングの手法では、オニオンルータと呼ばれる堅牢で固定的なルータがルーティングを司る。送信端末では、送信相手までの伝送経路を予め決定し、パケットを中継する各オニオンルータの公開鍵を用いてパケットの伝送経路に関する情報を暗号化する。
パケットを受信したオニオンルータは、自身の秘密鍵で伝送経路に関する情報を復号する。この復号によりパケットの次の転送先が判別され、オニオンルータは、次のノード(オニオンルータ若しくは受信端末)にパケットを転送する。このように、各オニオンルータでは、次の転送先以外隠蔽された状態を保つことができるため、最終的な受信端末の情報を特定することができない。また、オニオンルータにおいて、パケットを送出する際に、それまでの伝送経路に関する情報をパケットに付加しないことで、送信元の漏洩を防止できる。
このように、オニオンルーティングでは、データパケットが目的地までの経路情報を多重に暗号化して保持することで、ルーティングを行う各ノードやネットワーク上でのスキミングを行う者に対して経路情報の一部しか参照できないようにしている。
ところが、特許文献1記載のオニオンルーティングの手法は、ノード構成が動的に変化する環境に適用するのが困難である。ノード構成が動的に変化する環境としては、特にピアツーピア(P2P:Peer to Peer)ネットワークがある。
P2Pネットワークでは、ノードのネットワークへの参加やネットワークからの退場は任意である。このため、P2Pネットワーク上で通信を行う場合、その時点で参加しているノード間でP2Pの通信を行いながら、送信相手のPeerノードへパケットを転送する。このようなP2P環境に対してオニオンルーティングの手法を適用する場合、次の問題が生ずる。
・固定のルータ及び固定の経路を予め決定することができない。
・ルーティング途中でのノード構成変更に対して動的に対処するのが困難である。
このため、P2Pネットワークなど不安定なネットワークで匿名通信を行うには、経路発見を動的且つ匿名的に行い、ルーティング途中でのノード構成変更に適宜対処できることが望まれる。
そこで、P2Pネットワークにおける任意のノードまでの匿名通信路の探索機能を提供することで、ノード構成の動的変化に対応することを可能とする技術が考え出されている(たとえば、非特許文献1参照)。以下、匿名通信路の探索機能が提供されたP2Pネットワーク上のオニオンルーティングを、P2Pオニオンルーティングと呼ぶ。
米国特許第6、266、704号 國米 仁、外4名 "個人情報を保護する匿名P2Pネットワーク基盤"、[online]、2003年 情報処理振興事業会 2002年度成果報告集 第二版 [平成15年11月14日検索]、インターネット<URL:http://www.ipa.go.jp/SPC/report/02fy-pro/report/1512/paper.pdf>
しかし、P2Pオニオンルーティングには以下に述べる課題がある。
課題1:P2Pオニオンルーティングでは通信パケットの中継するノードの公開鍵で多重にネスト暗号化(入れ子構造の暗号化)した経路情報を使用する。そして、中継ノードが自分の秘密鍵で次の中継先ノードIDを取り出しながら中継して行く。これによって通信パケットの送受信者の匿名性が保たれる。ところが、この方式では中継ノードが次のノードIDを取り出しながら先へ進めば進むほど次のノードIDが含まれる暗号化された経路情報のブロックサイズが小さくなっていく。その結果、目的ノードの直前のノードでは、次が受信ノードであると推測される可能性がある。
図31は、従来のP2Pオニオンルーティングの例を示す図である。図31に示すように、複数のノード901,902,911〜915がピアツーピアで接続されている。ここで、ノード901が送信者、ノード902が受信者であるものとする。なお、ノード901のノードIDを「S」、ノード902のノードIDを「R」、ノード911のノードIDを「1」、ノード912のノードIDを「2」、ノード913のノードIDを「3」、ノード914のノードIDを「4」、ノード915のノードIDを「5」とする。
ノード901からノード902までは、ノード911、ノード913、ノード915を経由した通信路でパケットを送信することができる。この場合、ノード901からノード911にパケット921が渡される。ノード911は、パケット921内のルート情報(オニオンルート)を自分の秘密鍵で復号することで、次にノード913に転送すべきことを認識する。そして、ノード911は、パケット922をノード913に転送する。以後、同様にノード913からノード915へパケット923が渡され、ノード915からノード902にパケット924が渡される。
図32は、従来技術によるパケットのサイズを示す図である。ノード901からノード911に渡されるパケット921にはオニオンルート情報921aが含まれる。このオニオンルート情報921aは、ノード911の公開鍵Pで暗号化されている。ノード911が自分の秘密鍵でオニオンルート情報921aを復号すると、次のノードに渡すべきオニオンルート情報と、匿名通信路上の次のノードのノードIDが得られる。これらの情報に基づいて、パケット922が生成され、ノード913に渡される。
パケット922にはオニオンルート情報922aと戻りルート情報(戻りオニオン)922bが含まれる。戻りルート情報922bは、送信時の匿名通信路を逆方向に辿るための匿名通信路を示す情報である。戻りルート情報922bは、各ノードで中継されるときに、逆方向の経路情報が追加される。オニオンルート情報922aは、ノード913の公開鍵Pで暗号化されている。ノード913が自分の秘密鍵でオニオンルート情報922aを復号すると、次のノードに渡すべきオニオンルート情報と、匿名通信路上の次のノードのノードIDが得られる。これらの情報に基づいて、パケット923が生成され、ノード915に渡される。
パケット923にはオニオンルート情報923aと戻りルート情報923bが含まれる。オニオンルート情報923aは、ノード915の公開鍵Pで暗号化されている。ノード915が自分の秘密鍵でオニオンルート情報923aを復号すると、次のノードに渡すべきオニオンルート情報と、匿名通信路上の次のノードのノードIDが得られる。これらの情報に基づいて、パケット924が生成され、ノード902に渡される。
パケット924にはオニオンルート情報924aと戻りルート情報924bが含まれる。オニオンルート情報924aは、ノード902の公開鍵Pで暗号化されている。ノード902が自分の秘密鍵でオニオンルート情報924aを復号すると、次の転送先が無いことを示す情報(Null)が得られる。ノード902は、戻りルート情報924bをオニオンルート情報としたパケットを生成することで、ノード901に対して応答することができる。
このように、オニオンルート情報は、パケットが転送される度に復号され、データ長が短くなる。そのため、パケットを中継するノードでは、オニオンルート情報のデータ長から、受信者のノードまでの距離を想定することが可能である。ここでいう距離とは、パケットがいくつのノードで中継されるかを示す数(ホップ数)である。
課題2:P2Pオニオンルーティングでは、メッセージの送信者から受信者までのルート情報に関して送信者を頂点、受信者を末端としたツリー構造で保持していた。このツリー構造では、送信者から受信者までの匿名通信路が多数あれば、匿名通信路分のノードの配列が登録される。P2Pオニオンルーティングにおいて、検出されている複数の匿名通信路の情報をパケットに含めておけば、最初に選択した匿名通信路での通信に失敗したときに、自動的に他の匿名通信路経由の通信を行うことが可能となる。
この場合、匿名通信路毎に、その通信路上のノード情報を、伝送されるパケットに含める必要がある。そのためダミーを除いても、パケット内に多くのヘッダが必要となり、パケットのデータ長が肥大化していた。なお、ダミーとは、受信者のノードが他のノードに無効なパケットを送信する際のヘッダである。
図33は、送信者から受信者までのルート情報を示す図である。これは、図31に示す構成のP2Pネットワークにおいて、ノード901が送信者であり、ノード902が受信者の場合の例である。この図では、ルート探索によって得られた匿名通信路を、ノードIDの配列で示している。この例では、ノード901からノード902までは6つの匿名通信路が存在する。ノードのヘッダ情報を匿名通信路毎にまとめると、30ノード分のヘッダが必要となる。
課題3:従来のP2Pオニオンルーティングでは、中継ノードがメッセージを中継するときに自分へ中継してきたノードのノードIDを暗号化し、返信時にルートを逆にたどるための匿名ルート情報(戻りオニオンルート)をメッセージパケット内に埋め込んでいた。そのため中継時にその処理分の時間がかかってしまう。また、メッセージパケットも中継数が多いほど長くなってしまう。この長さからも課題1と同様な理由で、送信ノードの次の中継ノードに送信ノードを推測される虞がある。
たとえば、図31のデータ転送例では、図32に示すように受信者であるノード902に近づくほど戻りオニオンルートが長くなっている。
本発明はこのような点に鑑みてなされたものであり、送信者や受信者までの距離を隠すことができる匿名データ送信方法、匿名データ中継方法、匿名データ送信装置、匿名データ中継装置、匿名データ送信プログラム、および匿名データ中継プログラムを提供することを目的とする。
本発明の第1の態様では上記課題を解決するために、図1に示すような、匿名データ送信方法が提供される。本発明に係る匿名データ送信方法は、匿名ルートを介してパケットを送信するためのものである。この匿名データ送信方法では、以下の処理が行われる。
格納ブロック決定手段1bが、パケット内のルート情報格納領域を複数のブロックに分割し、匿名ルート記憶手段1aに予め格納されている匿名ルート情報に基づいて、匿名ルートに含まれる各ノードをブロックに対応付ける。次に、ノード別ルート情報生成手段1cが、匿名ルート情報に基づいて、匿名ルート上のノード毎に、隣接ノードの識別情報および隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報を生成する。次に、暗号化手段1dが、ノード別ルート情報それぞれを暗号化する。ノード別ルート情報設定手段1eが、暗号化されたノード毎のノード別ルート情報を、パケット内の各ノードに対応するブロックに設定する。次に、ブロック指定手段1fが、匿名ルート上の隣接する隣接ノードに対応するブロックの位置をパケットに設定する。そして、パケット送信手段1gが、パケットを隣接ノードに対して送信する。
このような匿名データ送信方法によれば、格納ブロック決定手段1bにより、匿名ルートに含まれる各ノードがブロックに対応付けられる。次に、ノード別ルート情報生成手段1cにより、匿名ルート上のノード毎にノード別ルート情報が生成される。次に、暗号化手段1dにより、ノード別ルート情報が暗号化される。次に、ノード別ルート情報設定手段1eにより、ノード毎のノード別ルート情報が、各ノードに対応するブロックに設定される。次に、ブロック指定手段1fにより、匿名ルート上の隣接する隣接ノードに対応するブロックの位置がパケットに設定される。そして、パケット送信手段1gにより、パケットが隣接ノードに対して送信される。
本発明の第2の態様では上記課題を解決するために、図1に示すように匿名データ中継方法が提供される。本発明に係る匿名データ中継方法は、匿名のデータを中継するためのものである。この匿名データ中継方法では、以下の処理が行われる。
各ノードの隣接ノードの識別情報および隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報が、ルート情報格納領域内の各ノードに対応するブロックに設定されていると共に、自分宛のブロック指定を含むパケットを受信すると、復号手段2aが、自分宛のブロック指定で指定されたブロックに設定されているノード別ルート情報を復号する。次に、転送先決定手段2bが、復号されたノード別ルート情報に基づいて、パケットの転送先のノードを決定する。さらに、ブロック指定変更手段2cが、復号されたノード別ルート情報に基づいて、ブロック指定の内容を、転送先のノードに対応するブロックに変更する。そして、パケット送信手段2dが、転送先のノードにパケットを送信する。
このような匿名データ中継方法によれば、パケットを受信すると、復号手段2aにより、ブロック指定で指定されたブロックに設定されているノード別ルート情報が復号される。次に、転送先決定手段2bにより、復号されたノード別ルート情報に基づいて、パケットの転送先のノードが決定される。さらに、ブロック指定変更手段2cにより、ブロック指定の内容が、転送先のノードに対応するブロックに変更される。そして、パケット送信手段2dにより、転送先のノードにパケットが送信される。
本発明の第3の態様では、匿名ルートを介してパケットを送信する匿名データ送信装置において、前記パケット内のルート情報格納領域を複数のブロックに分割し、匿名ルート記憶手段に予め格納されている匿名ルート情報に基づいて、前記匿名ルートに含まれる各ノードを前記ブロックに対応付ける格納ブロック決定手段と、前記匿名ルート情報に基づいて、前記匿名ルート上のノード毎に、隣接ノードの識別情報および前記隣接ノードに対応する前記ブロックの位置を示すブロック指定を含むノード別ルート情報を生成するノード別ルート情報生成手段と、前記ノード別ルート情報を暗号化する暗号化手段と、暗号化されたノード毎の前記ノード別ルート情報を、前記パケット内の各ノードに対応する前記ブロックに設定するノード別ルート情報設定手段と、前記匿名ルート上の隣接する前記隣接ノードに対応する前記ブロックの位置を前記パケットに設定するブロック指定手段と、前記パケットを前記隣接ノードに対して送信するパケット送信手段と、を有することを特徴とする匿名データ送信装置が提供される。
このような匿名データ送信装置によれば、上記の本発明の第1の態様に係る匿名データ送信方法と同様の処理が実行される。
本発明の第4の態様では、各ノードの隣接ノードの識別情報および前記隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報が、ルート情報格納領域内の各ノードに対応するブロックに設定されていると共に、自分宛のブロック指定を含むパケットを受信すると、自分宛の前記ブロック指定で指定されたブロックに設定されている前記ノード別ルート情報を復号する復号手段と、復号された前記ノード別ルート情報に基づいて、前記パケットの転送先のノードを決定する転送先決定手段と、復号された前記ノード別ルート情報に基づいて、前記ブロック指定の内容を、前記転送先のノードに対応するブロックに変更するブロック指定変更手段と、前記転送先のノードに前記パケットを送信するパケット送信手段と、を有することを特徴とする匿名データ中継装置が提供される。
このような匿名データ中継装置によれば、上記の本発明の第2の態様に係る匿名データ中継方法と同様の処理が実行される。
本発明の第5の態様によれば、匿名ルートを介してパケットを送信するための匿名データ送信プログラムにおいて、コンピュータに、格納ブロック決定手段が、前記パケット内のルート情報格納領域を複数のブロックに分割し、匿名ルート記憶手段に予め格納されている匿名ルート情報に基づいて、前記匿名ルートに含まれる各ノードを前記ブロックに対応付け、ノード別ルート情報生成手段が、前記匿名ルート情報に基づいて、前記匿名ルート上のノード毎に、隣接ノードの識別情報および前記隣接ノードに対応する前記ブロックの位置を示すブロック指定を含むノード別ルート情報を生成し、暗号化手段が、前記ノード別ルート情報を暗号化し、ノード別ルート情報設定手段が、暗号化されたノード毎の前記ノード別ルート情報を、前記パケット内の各ノードに対応する前記ブロックに設定し、ブロック指定手段が、前記匿名ルート上の隣接する前記隣接ノードに対応する前記ブロックの位置を前記パケットに設定し、パケット送信手段が、前記パケットを前記隣接ノードに対して送信する、処理を実行させることを特徴とする匿名データ送信プログラムが提供される。
このような匿名データ送信プログラムをコンピュータに実行させることで、上記の本発明の第1の態様に係る匿名データ送信方法と同様の処理がコンピュータによって実行される。
本発明の第6の態様によれば匿名のデータを中継するための匿名データ中継プログラムにおいて、コンピュータに、各ノードの隣接ノードの識別情報および前記隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報が、ルート情報格納領域内の各ノードに対応するブロックに設定されていると共に、自分宛のブロック指定を含むパケットを受信すると、復号手段が、自分宛の前記ブロック指定で指定されたブロックに設定されている前記ノード別ルート情報を復号し、転送先決定手段が、復号された前記ノード別ルート情報に基づいて、前記パケットの転送先のノードを決定し、ブロック指定変更手段が、復号された前記ノード別ルート情報に基づいて、前記ブロック指定の内容を、前記転送先のノードに対応するブロックに変更し、パケット送信手段が、前記転送先のノードに前記パケットを送信する、処理を実行させることを特徴とする匿名データ中継プログラムが提供される。
このような匿名データ中継プログラムをコンピュータに実行させることで、上記の本発明の第2の態様に係る匿名データ中継方法と同様の処理がコンピュータによって実行される。
以上説明したように本発明の第1、第3、第5の態様では、匿名ルート上のノード毎のブロックにノード別ルート情報を設定し、各ノード別ルート情報内に隣接ノードの識別情報および隣接ノードに対応するブロックの位置を示すブロック指定を含めるようにした。そのため、パケットを中継するノードは、ブロック指定で示されたブロックに対応するノード別ルート情報に基づいて次の転送先を認識できるとともに、転送先のノードに対して対応するブロックの位置を指定することができる。その結果、データが中継されてもパケットのデータ長が変更されず、送信元や宛先までの距離(中継回数)を隠蔽することができる。
また、本発明の第2、第4、第6の態様では、パケットのブロック指定に応じたノード別ルート情報を復号して、隣接ノードの識別情報および隣接ノードに対応するブロックの位置を示すブロック指定を取得し、ブロック指定を変更してパケットを転送するようにした。その結果、データが中継されてもパケットのデータ長が変更されず、送信元や宛先までの距離を隠蔽することができる。
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
図1は、実施の形態に適用される発明の概念図である。図1には、送信ノード1に係る発明と、中継ノード2に係る発明とが示されている。送信ノード1から送信されるパケットは、1以上の中継ノード2で中継され受信ノード3に渡される。この際、本発明を適用することで、送信ノード1と受信ノード3とを匿名にしたままパケットを中継させることができると共に、パケットが中継されてもパケットのデータ長を一定に保つことができる。このような匿名データ転送を実現するために、送信ノード1と中継ノード2とは、それぞれ以下のような機能を有している。
送信ノード1は、匿名ルート記憶手段1a、格納ブロック決定手段1b、ノード別ルート情報生成手段1c、暗号化手段1d、ノード別ルート情報設定手段1e、ブロック指定手段1f、およびパケット送信手段1gを有している。
匿名ルート記憶手段1aは、予め探索された匿名ルートを示す匿名ルート情報が格納された記憶装置である。たとえば、半導体記憶装置や磁気記憶装置内の少なくとも一部の記憶領域を、匿名ルート記憶手段1aとして利用することができる。
格納ブロック決定手段1bは、パケット内のルート情報格納領域を複数のブロックに分割し、匿名ルート記憶手段1aに予め格納されている匿名ルート情報に基づいて、任意の宛先までの匿名ルートに含まれる各ノードをブロックに対応付ける。たとえば、受信ノード3までの匿名ルート上に中継ノード2が存在する場合、中継ノード2や受信ノード3に対してブロックが対応付けられる。受信ノード3までの匿名ルートが複数ある場合、各匿名ルート上の全てのノードに対して、ブロックを対応付けることができる。
ノード別ルート情報生成手段1cは、匿名ルート記憶手段1a内の匿名ルート情報に基づいて、匿名ルート上のノード毎に、隣接ノードの識別情報および隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報を生成する。
暗号化手段1dは、ノード別ルート情報それぞれを暗号化する。たとえば、暗号化手段1dは、各ブロック内のノード別ルート情報を、そのブロックに対応するノードの公開鍵で暗号化する。これにより、各ブロックに対応するノードのみが、そのノード内のノード別ルート情報を復号することができる。
ノード別ルート情報設定手段1eは、暗号化されたノード毎のノード別ルート情報を、パケット内の各ノードに対応するブロックに設定する。
ブロック指定手段1fは、匿名ルート上の隣接する隣接ノードに対応するブロックの位置をパケットに設定する。
パケット送信手段1gは、パケットを隣接ノードに対して送信する。
中継ノード2は、復号手段2a、転送先決定手段2b、ブロック指定変更手段2c、およびパケット送信手段2dを有している。
復号手段2aは、送信ノード1から送信されたパケットを受信すると、ブロック指定で指定されたブロックに設定されているノード別ルート情報を復号する。たとえば、ノード別ルート情報が中継ノード2の公開鍵で暗号化されていた場合、対応する秘密鍵で復号することができる。復号されたノード別ルート情報は、たとえば、半導体記憶装置等の記憶手段に一時的に記憶される。
転送先決定手段2bが、復号されたノード別ルート情報に基づいて、パケットの転送先のノードを決定する。ノード別ルート情報には、匿名ルート上で隣接するノードの識別情報と、そのノードに対応するブロックの位置とが含まれている。隣接するノードには、送信ノード1側に隣接するノードと受信ノード3側に隣接するノードとがあり得る。このとき、パケットを送信してきたノードと逆方向に隣接するノードを、そのパケットの転送先として決定することができる。
ブロック指定変更手段2cは、復号されたノード別ルート情報に基づいて、記憶手段に記憶されたブロック内のブロック指定の内容を、転送先のノードに対応するブロックに変更する。転送先のノードに対応するブロックの位置は、ノード別ルート情報を参照することで判別できる。
パケット送信手段2dは、転送先のノードにパケットを送信する。
このような匿名データ送信方法によれば、格納ブロック決定手段1bにより、匿名ルートに含まれる各ノードがブロックに対応付けられる。次に、ノード別ルート情報生成手段1cにより、匿名ルート上のノード毎にノード別ルート情報が生成される。次に、暗号化手段1dにより、ノード別ルート情報が暗号化される。次に、ノード別ルート情報設定手段1eにより、ノード毎のノード別ルート情報が、各ノードに対応するブロックに設定される。次に、ブロック指定手段1fにより、匿名ルート上の隣接する隣接ノードに対応するブロックの位置がパケットに設定される。そして、パケット送信手段1gにより、パケットが隣接ノードに対して送信される。
送信ノード1から送信されたパケットを中継ノード2が受信すると、復号手段2aにより、ブロック指定で指定されたブロックに設定されているノード別ルート情報が復号される。次に、転送先決定手段2bにより、復号されたノード別ルート情報に基づいて、パケットの転送先のノードが決定される。さらに、ブロック指定変更手段2cにより、ブロック指定の内容が、転送先のノードに対応するブロックに変更される。そして、パケット送信手段2dにより、転送先のノードにパケットが送信される。
このように、複数の中継ノードによってパケットが匿名ルートに沿って転送され、受信ノード3に渡される。受信ノード3は、パケットの宛先を参照して、自分宛であることを認識し、そのパケットを受け取る。
以上のようにして、パケットのデータ長を変更せずに匿名データ通信が可能となる。その結果、ノード間を流れる経路情報のデータの大きさやその変化等からリンクを推定されない。さらに、複数の匿名ルートに関する情報をパケットに載せたとしても、ヘッダサイズが少なくて済む。すなわち、1つのノードを経由する複数の匿名ルートが存在した場合でも、そのノードに対応するノード別ルート情報を1つ設定すればよいため、ヘッダサイズの肥大化が防止される。
しかも、中継ノード2では、パケットに対してはブロック指定の変更を加えるだけで転送することができる。すなわち、返信を行うための戻る匿名ルートを中継ノードで中継時に作る必要がないため、メッセージの到達時間やサイズが短くなる。その結果、中継ノード2にかかる負荷も少なくて済む。
さらに、ネットワークの突然の切断に耐えるための迂回機能を強化することができる。すなわち、複数の匿名ルートの情報をパケットに載せることが可能であるため、最低限のネットワークパスが存在する限りメッセージを転送することができる。
ところで、本発明で転送されるパケットのルート情報格納領域には、匿名ルート上の各ノードのノード別ルート情報が対等の関係で格納されている。ここでいう対等の関係とは、対応するノードが有している鍵のみで復号できることを意味する。すなわち、オニオンルーティングでは、個別のノードが有する複数の鍵を用いて所定の順番で復号しない限り、各ノードは自分宛のノード別ルート情報(次の転送先に関する情報)を参照することができない。一方、本発明を採用することにより、各ノードに対して復号すべきブロックを指示することで、パケットを受け取ったノードは、自分宛のノード別ルート情報を参照することが可能である。
そこで、本発明を適用した匿名データ通信を、オニオンルーティングと対比する意味で、グレープルーティングと呼ぶこととする。また、グレープルーティングにおける匿名ルートの情報を、グレープルートと呼ぶ。
グレープルーティングは、P2Pネットワークのようなネットワーク構成が動的に変化する場合にも適用することができる。そこで、以下、グレープルーティングをP2Pネットワークに適用した場合の例を、本発明の実施の形態として具体的に説明する。すなわち、以下の実施の形態では、P2Pネットワークのような不安定なネットワークにおいて、データの送受信者の匿名性を守ると共に、データの送受信経路を動的に変更することができる独自の匿名通信機能を実現する仕組みを提供する。
P2Pネットワーク上の匿名通信を実現するために、本発明の実施の形態では、主に以下の処理が実行される。
〔第1のステップ〕送信ノードは、受信ノードまでの経路情報を発見し、経路情報を匿名的に収集する。
〔第2のステップ〕送信ノードは、発見した幾つかの経路に含まれるノードからグレープルータとして用いるノードを複数個選択して、グレープルートを構築する。
〔第3のステップ〕送信ノードは、データパケットにグレープルートを設定して、グレープルータに送信を依頼する。
〔第4のステップ〕中継ノードは、グレープルートの情報に応じて次のグレープルータにデータを送信する。ノード構成に変更がある等してデータ送信に失敗すると、グレープルート中の他の経路に再送を行う。
上記〔第1のステップ〕―〔第2のステップ〕の過程を匿名経路発見機能、〔第3のステップ〕―〔第4のステップ〕の過程をグレープルーティング機能と呼ぶ。匿名経路発見機能は、送信ノードから受信ノードまでのルート情報を匿名的に収集し、収集したルート情報からグレープルートを構築する機能である。グレープルーティング機能は、グレープルータがデータパケット中のグレープルートを用いて、送信ノードから受信ノードまで匿名的にデータを転送する機能である。
図2は、グレープルートのデータ構造例を示す図である。図2の例では、ノード4a,4b、ノード5a〜5eで構成されるP2Pネットワークを想定している。この例では、ノード4aが送信ノードであり、ノード4bが受信ノードである。ここで、ノード5dからノード5cに渡されるパケット6の例が示されている。なお、ノード4aのノードIDを「S」、ノード4bのノードIDを「R」、ノード5aのノードIDを「1」、ノード5bのノードIDを「2」、ノード5cのノードIDを「3」、ノード5dのノードIDを「4」、ノード5eのノードIDを「5」とする。
パケット6には、複数のブロックを有するグレープルート6aと、ブロック指定を含む制御情報6bとが含まれる。
グレープルート6aには、匿名ルート上の各ノード5a〜5eと受信ノード4bとに対応するブロック6aa〜6afが設けられている。この例では、各ブロック6aa〜6afがマトリックス状に配置されており、行番号(縦方向の順番)と列番号(横方向の順番)とによってブロック位置を指定できる。各ブロック6aa〜6afには、対応するノードの公開鍵で暗号化されたノード別ルート情報が設定されている。図中、Pはノード5aの公開鍵を示している。Pはノード5bの公開鍵を示している。Pはノード5cの公開鍵を示している。Pはノード5dの公開鍵を示している。Pはノード5eの公開鍵を示している。Pはノード4bの公開鍵を示している。
ノード5aのノード別ルート情報では、送信方向に隣接するノードとして、ノードID「2」のノード5bとノードID「3」のノード5cとが存在していることが示されている。また、ノード5bとノード5cとに対応するブロックの位置が示されている。
ノード5bのノード別ルート情報では、送信方向に隣接するノードとして、ノードID「4」のノード5dが存在していることが示されている。また、ノード5dに対応するブロックの位置が示されている。
ノード5cのノード別ルート情報では、送信方向に隣接するノードとして、ノードID「4」のノード5dとノードID「5」のノード5eとが存在していることが示されている。また、ノード5dとノード5eとに対応するブロックの位置が示されている。
ノード5dのノード別ルート情報では、送信方向に隣接するノードとして、ノードID「R」のノード4bが存在していることが示されている。また、ノード4bに対応するブロックの位置が示されている。
ノード5eのノード別ルート情報では、送信方向に隣接するノードとして、ノードID「R」のノード4bが存在していることが示されている。また、ノード4bに対応するブロックの位置が示されている。
制御情報6bには、パケットの状態等の情報が含まれている。たとえば、{blockaddress,forward or backward,flip or nonflip}という情報が含まれる。{blockadress}は、受け取ったノードが参照すべきノードの位置(ブロック指定)である。{forward or backward}は、パケットが送信ノードから受信ノードへ前進中(forward)か、逆方向に後退中(backward)かを示している。{flip or nonflip}は、パケットが迂回中{flip}か、そうでない{nonflip}かを示している。図2に示すパケット6は、ブロック指定が行番号と列番号とによって、{(1,3)}(1行3列のブロック6ac)と指定されている。また、パケット6が前進中{forward}、且つ迂回中{flip}であることを示している。
次に、ノード別ルート情報の内容の具体例について説明する。図2には、ブロック6acに設定されたノード別ルート情報の内容が示されている。なお、このノード別ルート情報は、ノード5cの公開鍵「P」で暗号化されており、ノード5cのみが参照可能である。
このノード別ルート情報には、暗号化された{forward:4 or 5,backward:1,flip(4)or5,address1(1,1),4(2,1),5(2,2)}という情報や、暗号化されていない,{from4:valid}{destruction?}という情報が設定されている。
{forward:4 or 5}は、前進方向の隣接ノードとして、ノードID「4」のノード5dとノードID「5」のノード5eとがあることを示している。
{backward:1}は、後退方向に隣接するノードとして、ノードID「1」のノード5aがあることを示している。
{flip(4)or5}は、送信先を指定する情報であり、前進中ならノードID「4」のノード5dとノードID「5」のノード5eとの何れかが送信先となることが示されている。なお、前進迂回中の場合、ノードID「4」のノード5dが送信先となることが、(4)で示されている。このとき、ノードID「4」のノード5dから戻ってきたパケットであれば、送信先はノードID「5」のノード5eとなる。
{address1:(1,1),4:(2,1),5:(2,2)}は、次のノードに対応するブロックのアドレス(位置)を指定している。ノードID「1」のノード5aに対応するブロックのアドレスは(1,1)である。ノードID「4」のノード5dに対応するブロックのアドレスは(2,1)である。ノードID「5」のノード5eに対応するブロックのアドレスは(2,2)である。
{from4:valid}は、ノードID「4」のノード4dからの有効がパケットであれば、そのパケットは有効であることを示している。すなわち、悪意のある第三者によって、パケットの複製が目的外のノードに転送された場合であっても、この項目を参照することによって不正なパケットを検出できる。
{destruction?}は、受信者のカモフラージュのため、受信者にパケットが到着してもダミーのパケットをしばらく続ける場合の、そのダミーパケットの削除の有無を示している。{destruction?}に「Y」が設定されていたとき、そのパケットを受信したノードによってパケットが削除される(次のノードへの転送が行われない)。
すなわち、データパケットを送信する際には、受信ノードより先のノードまでデータ転送が行われるように、グレープルートを設定することができる。その場合、受信ノードは、受信したデータパケットの内容を受け取って、それに応じた処理を実行するとともに、他のノードにダミーのデータパケットを送信する。ダミーのデータパケットを受け取ったノードは、{destruction?}が「Y」のときは、そのデータパケットを破棄する。{destruction?}が「Y」でなければ、さらに他のノードへダミーのデータパケットを送信する。
このような内容のパケットを各P2Pネットワークを構成するノード間で受け渡すことで、匿名性の高い通信が可能となる。
すなわち、グレープルーティングでは、送信ノードにおいて、受信ノードまでの転送ルートを形成する中継ノードの候補から選択したそれぞれの中継ノードに関して、中継する一つ先と1つ前のノード情報(次に中継するノードID、戻る方向のノードID、送信方向で迂回先となるノードID候補など)をその中継ノードしか復号できないように暗号化したブロックを、中継ノード数(+ダミーデータ数)だけ複数並べて保持したグレープルートを構築する。
このグレープルートには最初の中継ノードが復号するブロックが指定してあり、各暗号ブロック内にも復号されたときに得られるノード情報内の各ノードが復号できる暗号ブロックがどれであるかを指定する情報が含まれる。そこで、送信ノードは、最初の中継ノードに対して復号するブロックを指定して、パケットを送信する。すると、パケットを受信した中継ノードは、指定されたブロックを復号して、メッセージを送信すべきノードの集合とメッセージに対する返信を返すべきノードの集合を得ることができる。
中継ノードは、送信中か、返信中か、迂回中か否かに応じて、メッセージを送信すべきノードの集合か、メッセージに対する返信を返すべきノードの集合(戻りルート)かのどちらかのノードの集合か選択することができる。選択したノードの集合の中から、中継ノードがネットワークの状況など独自の判断に応じて、次に送信すべき最適なノードを動的に選択することができる。
また、中継ノードや受信ノードは、受け取るべきノードの集合以外からデータが送られた場合には、そのデータを破棄することができる。これにより、不正なパケットの伝送を防止することができる。
さらに、ダミーブロックを利用することにより、目的地の受信者がデータを受け取った場合でも、さらに通常のノードと同様にダミーのデータを転送することができる。ダミーのデータ転送を行うことで、誰が目的の受信者であるかをカモフラージュすることが可能となる。
なお、P2Pネットワークにグレープルーティングを適用する場合、まず、匿名通信路の探索処理が必要である。すなわち、P2Pネットワークでは、ネットワークの構成が動的に変化する。そのため、特定のサーバ等に予め匿名ルートを定義しておくことはできず、随時匿名ルートを探索する必要がある。そこで、本発明の実施の形態では、P2Pオニオンルーティングの技術を利用した匿名ルートの探索を行うものとする。
また、本発明の実施の形態では、各ノードがパケットを送信するとき、送信元の指定に匿名識別子と送信元公開鍵を用いる。匿名識別子や送信元公開鍵は、適宜変更することができる。たとえば、匿名ルートを探索するためのパケット(ルート探索パケット)を送出する度に、異なる匿名識別子、異なる送信元公開鍵を用いることができる。送信元公開鍵を固定化しないことで、送信元の匿名性を高めることができる。すなわち、匿名識別子と公開鍵を常に送信者に対して固定にすると以下の問題が生じてしまう。
〔第1の問題点〕同一匿名識別子を持つ暗号化されないメッセージ(掲示板への投稿等)が複数集まると、その内容から発信者を特定できる可能性が生じる。
〔第2の問題点〕暗号化されたメッセージでも、暗号化を解いた人(例えば、匿名掲示板の投稿に対する返信を投稿者が読む場合)が内容から発信者を特定できる可能性が生じる。
そこで、同一送信者の匿名識別子と公開鍵をメッセージ間で固定にしないことで、匿名掲示板を検索するノードや、ネットワーク上のスキミング、或いは、返信メッセージの受信者がメッセージの送信者を特定するのを防ぐことができる。すなわち、ノードの匿名識別子、公開鍵の使い捨て管理を行うことで、メッセージ間のアンリンカビリティ(unlinkability)を高めることができる。これを電子掲示板に利用すれば、データの送信者や受信者の匿名性を守った匿名掲示板機能を実現できる。なお、アンリンカビリティとは、二種類の処理が同じユーザによって行われたことを決定できないことを示す。
以上のような機能を実現するための具体例を、本発明の実施の形態として以下に説明する。なお、以下の実施の形態は、P2Pネットワークに本発明を適用したものであり、匿名通信機能を、主としてP2Pルート探索プロキシとグレープルータによって実現する。ここで、P2Pルート探索プロキシは、ノードの匿名経路発見機能を司る機能単位である。また、グレープルータは、ノードのグレープルーティング処理を司る機能単位である。なお、グレープルーティングのための匿名ルートを示す情報をグレープルートと呼ぶこととする。グレープルートは、中継ノード情報を暗号ブロック単位で有している。
各ノードのルート探索プロキシによりP2Pオニオンルート発見プロトコルに応じたルート探索が行われる。また、各ノードのグレープルータにより、P2Pオニオンルーティングが行われ、匿名ルートが検出される。検出された匿名ルートに基づいて、グレープルートが生成される。
ここで、P2Pオニオンルート発見プロトコルは、受信側のノードまでの匿名ルートを発見するプロトコルである。ルート探索プロキシは、ノードのP2Pオニオンルート発見プロトコルを司る機能単位である。P2Pオニオンルートは、多重に暗号化され、且つ、ノード構成変更に対処可能な経路情報である。グレープルータは、ノードにおいて、グレープルート情報に従ったP2Pオニオンルーティング処理を司る機能単位である。
図3は、匿名通信網の概念図である。本実施の形態では、ノード100が、ノード200,300,410,420,430,440,450を含む匿名通信網10に参加する。ここで、ノード100のノード名を「A」、ノード200のノード名を「B」、ノード410のノード名を「C」、ノード420のノード名を「D」、ノード430のノード名を「E」、ノード440のノード名を「F」、ノード450のノード名を「G」、ノード300のノード名を「X」とする。
ノード100は、ノード200との間でP2P通信接続を行うことで匿名通信網10に参加する。
ノード200は、他のノード410,420,440,450との間でP2P通信接続が確立している。ノード410は、さらにノード430との間でP2P通信接続が確立している。ノード420も同様に、ノード430との間でP2P通信接続が確立している。ノード430は、さらにノード300との間でP2P通信接続が確立している。
このようにP2Pネットワークでは、多数のノード間でのP2P接続の連鎖によって通信網が確立している。
図4は、本発明の実施の形態に用いるノードのハードウェア構成例を示す図である。ノード100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、および通信インタフェース106が接続されている。
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションプログラムが格納される。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス107を介してCPU101に送信する。
通信インタフェース106は、他のノード200との間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図4には、ノード100のハードウェア構成例を示したが、他のノード200,300,410,420,430,440,450も同様のハードウェア構成で実現可能である。
本実施の形態に係る各ノードは、大別して、セキュア通信路形成機能、匿名通信基盤接続認証機能、匿名経路発見機能、および匿名通信機能を有している。
図5は、ノードの概略機能構成を示すブロック図である。ノード100は、セキュア通信路形成機能100a、匿名通信基盤接続認証機能110a、匿名経路発見機能110b、および匿名通信機能120aを有している。匿名通信基盤接続認証機能110aと匿名経路発見機能110bとは、ルート探索プロキシ110が有する機能である。また、匿名通信機能120aは、グレープルータ120が有する機能である。
同様に、ノード200は、セキュア通信路形成機能200a、匿名通信基盤接続認証機能210a、匿名経路発見機能210b、および匿名通信機能220aを有している。匿名通信基盤接続認証機能210aと匿名経路発見機能210bとは、ルート探索プロキシ210が有する機能である。また、匿名通信機能220aは、グレープルータ220が有する機能である。
また、ノード100は、複数のアプリケーション131,132を有している。アプリケーション131,132は、ユーザからの操作入力等に応答して、メッセージの送信や受信を行う。図5の例では、アプリケーション131がメッセージを送信し、アプリケーション132がメッセージを受信する場合を示している。
このような機能構成のノード100,200間では、たとえば、アプリケーション131,132から匿名通信網10への接続要求が出されると、ノード100のルート探索プロキシ110とノード200のルート探索プロキシ210との匿名通信基盤接続認証機能110a,210aが連携して動作することで、接続相互認証が行われる。
また、アプリケーション131がユーザからのメッセージ送信依頼を受け付けると、ルート探索プロキシ110に対して、P2Pオニオンルートの探索と獲得依頼が出される。すると、ノード100のルート探索プロキシ110とノード200のルート探索プロキシ210との匿名経路発見機能110b,210bがP2Pオニオンルート発見プロトコルに従って連携動作することで、ルート探索処理が行われる。ルート探索が終了すると、アプリケーション131からグレープルータ120に対して、メッセージ送信要求が出される。すると、ノード100のグレープルータ120とノード200のグレープルータ220との匿名通信機能120a,220aが連携して動作することで、オニオンルーティングが行われ、データパケットによってメッセージが送信される。
また、他のノードからノード100に対するメッセージがオニオンルーティングによって送られると、グレープルータ120からアプリケーション132にメッセージが渡される。
セキュア通信路形成機能100a,200aは、匿名通信基盤接続認証機能110a,210aにより接続された2つのノード間に暗号化されたセキュアな通信路を形成する機能である。実現方法としては、たとえば、ランダムな暗号共通秘密鍵を共有するといったSSL(Secure Sockets Layer)と同様な手法を用いる。
匿名通信基盤接続認証機能110a,210aは、ノードがこの匿名通信基盤に参加するために第1ノードへ接続するための機能である。具体的には、匿名通信基盤接続認証機能110a,210aは、自身が匿名通信網10に参加するための認証要求機能、および他のノードが匿名通信網10に参加する際にそのノードを認証するための機能である。匿名通信網10に参加するノードに対して接続認証を行うことで、予め会員登録された者以外が匿名通信網10に参加することを防止できる。
匿名経路発見機能110b,210bは、P2Pオニオンルート発見プロトコルに従って、送信相手までの伝送路を探索する機能である。具体的には、匿名経路発見機能110b,210bにより、送信ノードから受信ノードまでのルート情報を匿名的に収集し、収集したルート情報(匿名ルート情報)からグレープルートを構築することができる。匿名ルート情報は受信ノードまでの経路を構成する各ノードの識別子と公開鍵などを含む。
なお、本実施の形態では、匿名経路発見機能110b,210bは、P2Pオニオンルーティングの機能を備えているものとする。たとえば、グレープルートの探索の際には、ルート探索パケットがブロードキャストで送信されるが、そのルート探索パケットに応答するルート通知パケットは、匿名経路発見機能110b,210bによるP2Pオニオンルーティングによって返信される。
グレープルートの探索手順は以下の通りである。たとえば、ノード100がデータの送信者の場合、ルート探索プロキシ110が以下の処理を行う。
〔ルート探索の第1のステップ〕ルート探索プロキシ110は、P2Pオニオンルート発見プロトコルで受信ノードまでの転送ルートを形成する中継ノードの候補を匿名的に収集する。
〔ルート探索の第2のステップ〕ルート探索プロキシ110は、収集したルート候補から最適なルートを選択する。
〔ルート探索の第3のステップ〕ルート探索プロキシ110は、それぞれの中継ノードに関して、中継する1つ先と1つ手前のノード情報(次に中継するノードID、戻る方向のノードID、送信方向で迂回先となるノードID候補など)をその中継ノードしか復号できないように暗号化した暗号ブロックを生成する。
〔ルート探索の第4のステップ〕ルート探索プロキシ110は、中継ノード数(+ダミーデータ数)だけ暗号ブロックを並べてRAM等に保持する。この保持された暗号ブロック群がグレープルートとなる。なお、各暗号ブロック内は、復号されたときに得られる1つ先と1つ手前の周辺ノードのそれぞれが復号できる暗号ブロックがどれであるかを指定する情報が含まれる。
〔ルート探索の第5のステップ〕ルート探索プロキシ110は、グレープルートにおいて、最初の中継ノードが復号する暗号ブロックを指定する。なお、グレープルートの暗号ブロックには、常時稼動状態の固定的なサーバの集合を中継ノードの候補として設定できる。その場合、固定的なサーバが復号する暗号ブロックには、中継する方向の情報はなく、受信ノードを含む全ての中継ノードの集合が含まれる。
匿名通信機能120a,220aは、グレープルータがデータパケットに設定されたグレープルートを用いて、送信ノードから受信ノードまで匿名的にデータを転送する機能である。ノード100が送信ノードでノード200が中継ノードの場合、グレープルータ120,220は以下の手順で送信ノードから受信ノードまで匿名的にデータを転送する。
〔データ転送の第1のステップ〕ルート探索プロキシ110は最初の中継ノードのグレープルータ220に対してグレープルートを設定してデータパケットを送信する。
〔データ転送の第2のステップ〕中継ノードのグレープルータ220は、受信したデータパケットに設定されているグレープルート内の指定された暗号ブロックを自ノードが保持する秘密鍵で復号する。暗号ブロックの復号により、データパケットを送信すべきノードの集合とデータパケットに対する返信を返すべきノードの集合が得られる。
〔データ転送の第3のステップ〕中継ノードのグレープルータ220は送信中か、返信中か、迂回中か否かに応じて、データパケットを送信すべきノードの集合か、データパケットに対する返信を返すべきノードの集合かのどちらかのノードの集合を選択し、選択したノードの集合の中からネットワークの状況など独自の判断に応じて次に中継する最適なノードを動的に選択する。
〔データ転送の第4のステップ〕中継ノードのグレープルータ220は、次の中継ノードのグレープルータに対して復号する暗号ブロックを指定したグレープルートを設定してデータパケットを送信する。
〔データ転送の第2のステップ〕〜〔データ転送の第4のステップ〕が各中継ノードで繰り返される事により、受信ノードにデータパケットが到達する。なお、ノードの構成変更等で次のノードへの転送に失敗した場合は、中継ノードは、グレープルートとから得たノードの集合から、次の最適な中継ノード候補を選択して、再送を試みる。この再送処理はバックトラックと呼ばれ、候補がなくなるまで行われる。常時稼動状態の固定的なサーバが候補として設定してある場合は最後に選択する。
なお、常時稼動状態の固定的なサーバのグレープルータは、受信したデータパケットに設定されているグレープルートから得られたノードの集合からデータパケットを送信可能である中継ノードへ送信する(同じデータパケットを送信したことのあるノードには送信しない)。その中継ノードから上記〔データ転送の第2のステップ〕〜〔データ転送の第4のステップ〕を繰り返す事により受信ノードが稼動状態である限り必ずデータパケットを到達させることができる。
受信ノードは送信ノードの匿名性を保持したまま、受信メッセージに対する返信を行うことができる。返信経路はグレープルート内にデータパケットに対する返信を返すべきノードの集合として保持されているため、受信ノードは送信ノードに対して返信する場合、送信者から受信したグレープルートをデータパケットに設定し、返信中であることを示す設定を行った上で返信のグレープルーティングを開始する。返信時のグレープルーティングは中継ノードが次の中継ノードを決めるときに選択するノードの集合をデータパケットに対する返信を返すべきノードの集合にする以外は送信時のグレープルーティングと同等である。
次に、本発明の実施の形態を実現するための各ノードの機能を詳細に説明する。なお、各ノードは、パケットの発信者(発信ノード)となる場合、パケットの受信者(受信ノード)となる場合、およびパケットのルーディングを行うルータ(中継ノード)となる場合があり得る。従って、各ノードは、発信ノード、受信ノード、および中継ノードとしての機能を備えている必要がある。
図6は、ノードの機能構成を示すブロック図である。ノード100は、ルート探索プロキシ110、グレープルータ120、アプリケーション131、会員証情報保持部141、固定鍵保持部142、匿名ルート情報保持部143、一時鍵生成部151、および匿名ID生成部152を有している。
ルート探索プロキシ110は、匿名通信接続部111、匿名ルート探索要求部112、ルート探索要求中継部113、およびルート探索要求応答部114を有している。
匿名通信接続部111は、匿名通信基板接続認証処理を実行する。具体的には、匿名通信接続部111は、アプリケーション131から匿名基板への接続要求を受け取ると、会員証情報保持部141から会員証情報を取得するとともに、固定鍵保持部142から固定公開鍵142aを取得する。そして、匿名通信接続部111は、接続可能な他のノードとの間で、会員証情報と固定公開鍵142aとを用いて接続認証を行う。また、匿名通信接続部111は、他のノードから接続認証要求を受け取った際にも、会員証情報と固定公開鍵142aとを用いて接続認証を行う。
匿名ルート探索要求部112は、P2Pオニオンルート発見プロトコルにおけるルート探索要求送信機能を実現する。具体的には匿名ルート探索要求部112は、アプリケーション131からP2Pオニオンルート探索要求を受け取ると、固定鍵保持部142から固定公開鍵142aを取得すると共に、一時鍵生成部151から一時公開鍵と一時秘密鍵とを受け取る。また、匿名ルート探索要求部112は、匿名ID生成部152から匿名IDを取得する。そして、匿名ルート探索要求部112は、取得した鍵情報、匿名IDおよび自分のノードID等を含むルート探索パケットを生成し、ブロードバンドで送信する。なお、ノードIDは、公開鍵で暗号化された状態で、ルート探索パケット内に設定される。
ルート探索要求中継部113は、P2Pオニオンルート発見プロトコルにおけるルート探索要求の中継機能を実現する。具体的には、他のノードからルート探索パケットを受け取ると、ルート探索要求中継部113は、固定鍵保持部142から固定公開鍵142aを取得する。次に、ルート探索要求中継部113は、ルート探索パケット内の戻りオニオン(ルートスタック:それまでの伝送経路を示している)内の情報を自分の固定公開鍵142aで暗号化する。その後、ルート探索要求中継部113は、暗号化された情報に自分のノードIDを付加して、新たな戻りオニオンとする。そして、ルート探索要求中継部113は、ルートスタックが更新されたルート探索パケットを、他のノード(ルート探索パケットの送信元を除く)に対して転送する。
また、ルート探索要求中継部113は、ルート探索パケットに対する応答であるルート通知パケットを受け取ると、固定鍵保持部142から固定公開鍵142aを取得する。次に、ルート探索要求中継部113は、自分のノードIDと固定公開鍵とを、ルートを探索しているノードの一時公開鍵で暗号化してルート通知パケットのルート情報に追加する。宛先オニオンを復号して、次の転送先のノードを認識すると共に、復号後の宛先オニオンをルート通知パケットの新たな宛先オニオンとして設定する。そして、ルート探索要求中継部113は、ルート通知パケットを次のノードに対して転送する。
ルート探索要求応答部114は、P2Pオニオンルート発見プロトコルにおけるルート探索要求への応答機能を実現する。具体的には、ルート探索要求応答部114は、他のノードから送られたルート探索パケットにおける探索対象ノードとして自分が指定されていたとき、そのノードに対するルート通知パケットを生成する。応答する際には、ルート探索要求応答部114は、固定鍵保持部142から固定公開鍵142aを取得する。そして、ルート探索要求応答部114は、ルート探索パケット送信元の一時公開鍵を用いて、自分のノードIDと固定公開鍵142aとを暗号化してルート通知パケットに含める。ルート通知パケットは、ルート探索パケットに対する応答として送信される。
グレープルータ120は、匿名データ送信部121、匿名データ中継部122、および匿名データ受信部123を有している。
匿名データ送信部121は、匿名通信機能における匿名通信データパケットの送信機能を実現する。具体的には、匿名データ送信部121は、アプリケーション131等からの要求に応答して匿名通信のデータパケットを生成し、送信する。データパケットには、匿名ルートを示すグレープルートが含まれる。グレープルートは、匿名経路上の各ノードの公開鍵を用いて、各ノードの次の伝送先の情報を暗号化したものである。
匿名データ中継部122は、匿名通信機能における匿名通信のデータパケットの中継機能を実現する。具体的には、匿名データ中継部122は、データパケット内の宛先オニオンを自分の秘密鍵で復号し、次の伝送先を確認する。そして、匿名データ中継部122は、次の伝送先へデータパケットを転送する。
匿名データ受信部123は、匿名通信機能における匿名通信のデータパケットの受信機能を実現する。具体的には、匿名データ受信部123は、データパケットの送信先の匿名IDが自分のIDであれば、自分宛のデータパケットであることを認識し、アプリケーション131にパケット内のデータ(ペイロード内のデータ)を渡す。なお、匿名データ受信部123は、受信した自分宛のパケットがルート通知パケットの場合、その内容から匿名ルートを認識し、匿名ルート情報保持部143に格納する。
アプリケーション131は、ユーザの操作入力等に応じて、匿名通信を利用した各種処理を実行する。
会員証情報保持部141は、匿名通信網10に参加するための所定の手続きを行ったユーザに渡される情報である。会員証情報を有しているノードのみが匿名通信網10に参加可能となる。
固定鍵保持部142は、予め用意された鍵情報を格納している。鍵情報は、固定公開鍵142aと固定秘密鍵142bである。固定公開鍵142aで暗号化した暗号データは、固定秘密鍵142bでのみ復号することができる。なお、固定公開鍵142aと固定秘密鍵142bとは、会員証情報の一部として供給することもできる。
匿名ルート情報保持部143は、探索された匿名ルート情報を格納している。
一時鍵生成部151は、匿名ルート探索要求部112等からの要求に応答して、一時鍵を生成する。一時鍵は、一時公開鍵と一時秘密鍵の組である。
匿名ID生成部152は、匿名ルート探索要求部112等からの要求に応答して、匿名IDを生成する。匿名IDは、一連の匿名通信(匿名ルート探索とその匿名ルートによる匿名通信)毎に個別に設定する識別情報である。
以上のような構成のノード100によって、本実施の形態に係るセキュア通信路形成機能、匿名通信基盤接続認証機能、匿名経路発見機能、および匿名通信機能が実現される。なお、図6には、ノード100が有する機能の構成要素を示したが、他のノード200,300,410,420,430,440,450も同様の機能を有している。以下、匿名通信基盤接続認証機能、匿名経路発見機能、および匿名通信機能を詳細に説明する。
[匿名通信基盤接続認証機能]
まず、匿名通信基盤接続認証機能について説明する。
図7は、匿名通信基盤接続認証機能を示す図である。匿名通信基盤接続認証機能は、あるノード(図7の例では、ノード100)が、匿名通信網10に参加するために他のノード(図7の例では、ノード200)へ接続するための機能である。なお、接続先となるノード200を、ノード100から見たときの第1接続ノードと呼ぶこととする。ここでは、ノード100は、接続する第1接続ノードのIPアドレスやポート番号などを最初から分かっているものとする。たとえば、任意に接続可能なノード(第1接続ノードとなり得るノード)が予め公開されているものとする。
匿名通信網10で使用するP2Pオニオンルートなどの暗号方式にはRSA暗号を用いる。RSA暗号の公開鍵とその証明書(公開鍵証明書)、秘密鍵などは既に各ノードが持っている状態を前提とする。この公開鍵証明書はこの匿名通信基盤の会員証として使用し、ノードがこの匿名通信基盤に参加するための認証に使用する。公開鍵証明書は、会員証情報保持部141に格納される。
ここで、図7を参照して、ノード100がノード200を第1接続ノードとして匿名通信網10に参加するときの匿名通信基盤接続認証機能の処理手順を説明する。このとき、匿名通信基盤接続認証機能は、ノード100のルート探索プロキシ110内の匿名通信接続部111と、ノード200のルート探索プロキシ210内の匿名通信接続部211との間で実行される。
[第1の処理]ノード100内の匿名通信接続部111は、第1接続ノードを決定する。ここで、第1接続ノードは、隣接するノード200であり、複数の場合もある。第1接続ノードとして指定可能なノードのIPアドレス等は、会員証情報保持部141に予め格納しておくことができる。また、第1接続ノードのIPアドレス等を、GUIによりユーザが直接入力することもできる。
[第2の処理]新規参加ノード(ノード100)のルート探索プロキシ(ルート探索プロキシ110内の匿名通信接続部111)は第1接続ノード(ノード200)へ接続を開始して、自分の固定公開鍵142aと会員証141aとを渡す。
[第3の処理]接続された第1接続ノード(ノード200)のルート探索プロキシ(ルート探索プロキシ210内の匿名通信接続部211)も自分の固定公開鍵242aと会員証241aを新規参加ノード(ノード100)へ渡す。
[第4の処理]新規参加ノード(ノード100)および第1接続ノード(ノード200)の双方で会員証の確認を行う。失効しているなど問題があれば通信を停止する。
[第5の処理]新規参加ノード(ノード100)および第1接続ノード(ノード200)で、互いに相手の固定公開鍵で暗号化したデータを交換する。そして、双方のノードが、受け取ったデータを復号して相手に返す。各ノード100,200は、相手方に送信したデータが正しく復号されて戻ってくれば匿名P2Pネットワーク基盤上サービス利用資格保有者と判断する。以後、ノード100は、ノード200を介して、匿名通信網10に参加できる。すなわち、ノード100が匿名通信基盤上のノードとなる。その結果、図3に示すような匿名通信網10が形成される。
[匿名経路発見機能]
次に、匿名経路発見機能について、ノード100からノード300に対してデータを送信する際の匿名経路探索例を用いて説明する。
図8は、匿名経路発見機能を示す図である。匿名経路発見機能は、P2Pオニオンルート発見プロトコルを用いて、送信ノード(図8の例では、ノード100)から受信ノード(図8の例では、ノード300)までのルート情報を匿名的に収集し、収集したルート情報からP2Pオニオンルートを構築する機能である。ルート情報は受信ノードまでの経路を構成する各Peerの識別子と公開鍵からなる。P2Pオニオンルート発見プロトコルは以下の手順でP2Pオニオンルートを構築する。なお、匿名経路発見機能は、各ノード100,200,300のルート探索プロキシ110,210,310とグレープルータ120,220,320によって実現される。特に送信ノード(ノード100)ではルート探索プロキシ110の匿名ルート探索要求部112が処理を実行し、中継ノード(ノード200)ではルート探索プロキシ210のルート探索要求中継部213が処理を実行し、受信ノード(ノード300)では、ルート探索要求応答部314が処理を実行する。
ルート探索の際には、送信ノード(ノード100)からルート探索パケット20がブロードキャスト送信され、そのルート探索パケット20を受信した受信ノード(ノード300)からルート通知パケット30が返信される。
図9は、ルート探索パケットのデータ構造例を示す図である。ルート探索パケット20は、メッセージフラグ21、宛先(To)22、送信元(From)23、宛先オニオン24、戻りオニオン25、および返信暗号化用一時鍵情報26で構成される。
メッセージフラグ21は、パケットの種別を示している。ルート探索パケット20の場合には、ルート探索ブロードキャスト送信用のパケットであることを示す情報が設定される。
宛先22には、ルート探索パケット20の宛先が設定される。宛先は、予め公開された受信ノードの識別情報(公開ID)等で示される。
送信元23には、送信ノードの匿名IDが設定される。
宛先オニオン24は、宛先までのルートを示す情報であるが、ルート探索パケット20では空欄となる。
戻りオニオン25には、ルート探索パケット20に対してルート通知パケット30を返信する際の伝送経路が、多重に暗号化されて設定される。
返信暗号化用一時鍵情報26は、ルート通知パケット30を返信する際に使用される送信ノードの一時公開鍵と暗号化された一時秘密鍵である。
図10は、ルート通知パケットのデータ構造例を示す図である。ルート通知パケット30は、メッセージフラグ31、宛先(To)32、送信元(From)33、宛先オニオン34、戻りオニオン35、ルート情報36、および返信暗号化用一時鍵情報37で構成される。
メッセージフラグ31は、パケットの種別を示している。ルート通知パケット30の場合には、ルート探索返信用のパケットであることを示す情報が設定される。
宛先32には、ルート通知パケット30の宛先が設定される。宛先は、ルート探索パケット20の送信元23に設定されている送信ノードの匿名IDである。
送信元33には、受信ノードの公開されたID(公開ID)が設定される。
宛先オニオン34は、宛先までのルートを示す情報である。これは、受信ノードにおいてルート探索パケット20の戻りオニオン25を転記したものである。ただし、宛先オニオン34は、パケットが中継される毎に過去の伝送経路を示す情報が削除される。
戻りオニオン35は、ルート通知パケット30においては空欄となる。
ルート情報36は、匿名通信の伝送ルートを示す情報である。ルート情報には、伝送ルート上の各ノードのノードIDと固定公開鍵とが、送信ノードの固定公開鍵で暗号化されて設定されている。また、ルート情報36には、ルート探索パケット20の返信暗号化用一時鍵情報26も含まれている。
返信暗号化用一時鍵情報37は、ルート探索パケット20の返信暗号化用一時鍵情報26の内容がそのまま設定される。
図11は、匿名経路発見機能の処理手順を示すシーケンス図である。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS21]送信ノード(ノード100)の匿名ルート探索要求部112は、アプリケーション131からメッセージの送信依頼を受け取る。なお、ノード100のユーザは、受信ノードであるノード300のノードIDを予め知っているものとする。
[ステップS22]匿名ルート探索要求部112は、ルート探索パケット20を生成する。ルート探索パケット20には、受信ノードの公開ID、送信ノードの匿名ID、送信ノードの一時鍵(一時公開鍵と一時秘密鍵)等が含まれる。受信ノードの公開IDは、ユーザからの操作入力等に基づいて、アプリケーション131が取得する。送信ノードの匿名IDは、匿名ID生成部152から取得する。送信ノードのノードIDは、ノード100の一般の通信機能(通信プロトコル)から取得する。送信ノードの一時鍵は、一時鍵生成部151から取得する。
ルート探索パケット20の戻りオニオン25は、送信ノードのノードIDと固定公開鍵とから生成される。具体的には、匿名ルート探索要求部112は、固定鍵保持部142から固定公開鍵142aを取得する。次に、匿名ルート探索要求部112は、送信ノードのノードIDを、固定公開鍵142aで暗号化する。そして、匿名ルート探索要求部112は、暗号化された送信ノードのノードIDと、暗号化されていない送信ノードのノードIDとの組を、戻りオニオン25とする。この際、暗号化されていない送信ノードのノードIDには、戻りフラグ(本実施の形態では「^」の記号)が付加される。戻りフラグは、送信元に戻るためのルートであることを示している。
返信暗号化用一時鍵情報26は、送信ノードの一時鍵と固定公開鍵142aとから生成される。具体的には、匿名ルート探索要求部112は、送信ノードの一時秘密鍵を固定公開鍵142aで暗号化する。そして、匿名ルート探索要求部112は、暗号化された一時秘密鍵と、暗号化されていない一時公開鍵との組を、返信暗号化用一時鍵情報26とする。
[ステップS23]匿名ルート探索要求部112は、ルート探索パケットをブロードキャストで送信する。本実施の形態では、ノード100に接続されたノードは、ノード200のみであるため、一段目としては、ノード200のみに転送される。
[ステップS24]中継ノード(ノード200)のルート探索要求中継部213は、ルート探索パケット20を受け取ると、宛先22に設定されている受信ノードの公開IDを確認する。自分宛のルート探索パケット20でなければ、パケット中継のためにステップS25に処理を進める。なお、各ノードは、自身の公開IDについては、予めメモリ等(たとえば、会員証情報保持部)に保持している。
[ステップS25]ルート探索要求中継部213は、戻りオニオンを更新する。具体的には、ルート探索要求中継部213は、受信したルート探索パケット20内の戻りオニオン25に中継ノードの固定公開鍵で暗号化する。そして、ルート探索要求中継部213は、暗号化された情報に中継ノードのノードID(戻りフラグ付き)を付加して、新たな戻りオニオン25とする。
[ステップS26]ルート探索要求中継部213は、ルート探索パケット20をブロードキャストで送信する。本実施の形態では、ノード200に対して、送信ノード(ノード100)以外に4台のノード410,420,440,450が接続されているため、それら4台のノード410,420,440,450に対して、ルート探索パケット20が送信される。
以後、各ノード410,420,440,450において、ルート探索パケット20が中継され、最終的に受信ノード(ノード300)に到達する。ルート探索パケット20を受け取った受信ノード(ノード300)では、以下の処理が行われる。
[ステップS27]ルート探索要求応答部314は、ルート探索パケット20を受け取ると、宛先22を確認する。自分宛のルート探索パケット20であれば、応答するためにステップS28に処理を進める。
なお、各ノードにおけるルート探索パケット20の宛先22の確認機能は、各ノードのルート探索要求中継部とルート探索要求応答部とが共用する機能である。すなわち、実際には、ルート探索パケット20受信時に宛先22の確認機能が動作し、自分宛であればその旨の確認結果がルート探索要求応答部に伝えられ、自分宛でなければその旨の確認結果がルート探索要求中継部に伝えられる。
[ステップS28]ルート探索要求応答部314は、ルート通知パケット30を生成する。ルート通知パケット30には、ルート探索パケット20に含まれる情報以外に、受信ノードのノードIDと固定公開鍵とが含まれる。
具体的には、ルート探索要求応答部314は、ルート探索パケット20の送信元23の情報をルート通知パケット30の宛先32に設定する。ルート探索要求応答部314は、ルート探索パケット20の宛先22の情報を、ルート通知パケット30の送信元33に設定する。ルート探索要求応答部314は、ルート探索パケット20の戻りオニオン25の情報を、ルート通知パケット30の宛先オニオン34に設定する。ルート探索要求応答部314は、ルート探索パケット20の返信暗号化用一時鍵情報26内の送信ノードの一時公開鍵を用いて、受信ノードのノードIDと固定公開鍵との組を暗号化し、ルート情報36に設定する。そして、ルート探索要求応答部314は、ルート探索パケット20の返信暗号化用一時鍵情報26の情報を、ルート通知パケット30の返信暗号化用一時鍵情報37に設定する。
[ステップS29]ルート探索要求応答部314は、ルート通知パケット30の送信先をルート探索パケット20の戻りオニオン25に基づいて判断し、その送信先へルート通知パケット30を送信する。具体的には、戻りオニオン25には、暗号化されていないノードID(隣のノードのノードID)と、暗号化された情報(隣のノードに到達するまでの経路が暗号化されたもの)が含まれている。そこで、ルート探索要求応答部314は、暗号化されていないノードIDのノードに対して、ルート通知パケット30を送信する。
ルート通知パケット30は、各ノードにおいて中継される。ノード200における中継処理を以下に示す。
[ステップS30]中継ノード(ノード200)のルート探索プロキシ210内のルート探索要求中継部213は、宛先を確認する。なお、各ノードは、自身が発行した匿名IDのリストを記憶しており、その匿名IDのリストとパケットの宛先とを比較することで、そのパケットが自分宛か否かを判断することができる。他のノード宛のルート通知パケット30の場合、ルート探索要求中継部213は、処理をステップS31に進める。
[ステップS31]ルート探索要求中継部213は、ルート通知パケット30の宛先オニオン34を更新する。具体的には、ルート探索要求中継部213は、宛先オニオン34に付加されている自分のノードIDを削除し、暗号化されている情報を、固定秘密鍵を用いて復号する。そして、ルート探索要求中継部213は、復号した情報を新たな宛先オニオン34とする。
[ステップS32]ルート探索要求中継部213は、ルート通知パケット30のルート情報36を更新する。具体的には、ルート探索要求中継部213は、自分のノードIDと固定公開鍵とを送信ノードの一時公開鍵で暗号化し、ルート情報36にスタックする(本実施の形態では、それまでのルート情報の後に、暗号化した情報を追加格納する)。これにより、ルート情報36には、伝送経路上の各ノードに関する情報(ノードIDと固定公開鍵)が経路に沿った順番で並べられていく。
[ステップS33]ルート探索要求中継部213は、ルート通知パケット30の送信先を宛先オニオン34に基づいて判断し、その送信先へルート通知パケット30を送信する。具体的には、宛先オニオン34には、暗号化されていないノードID(隣のノードのノードID)と、暗号化された情報(隣のノードに到達するまでの経路が暗号化されたもの)が含まれている。そこで、ルート探索要求中継部213は、暗号化されていないノードIDのノードに対して、ルート通知パケット30を送信する。
これにより、ルート通知パケット30が送信ノードであるノード100に渡される。ノード100では、以下の処理が行われる。
[ステップS34]送信ノードのルート探索プロキシ110の匿名ルート探索要求部112は、宛先を確認する。自分宛のルート通知パケット30の場合、匿名ルート探索要求部112は、処理をステップS35に進める。
なお、各ノードにおけるルート通知パケット30の宛先32の確認機能は、匿名データ中継部と匿名データ受信部とが共用する機能である。すなわち、実際には、ルート通知パケット30受信時に宛先32の確認機能が動作し、自分宛であればその旨の確認結果が匿名データ受信部に伝えられ、自分宛でなければその旨の確認結果が匿名データ中継部に伝えられる。
[ステップS35]匿名ルート探索要求部112は、ルート通知パケット30内のルート情報36から受信ノードまでの匿名ルート情報を取得し、匿名ルート情報保持部143に格納する。具体的には、匿名ルート探索要求部112は、返信暗号化用一時鍵情報37に含まれる暗号化された情報(一時秘密鍵を固定公開鍵142aで暗号化したもの)を、固定秘密鍵142bを用いて復号する。これにより、一時秘密鍵が取得できる。なお、固定秘密鍵142bは、固定鍵保持部142から取得できる。
次に、匿名ルート探索要求部112は、取得した一時秘密鍵を用いて、ルート情報36に含まれる各情報を復号する。これにより、受信ノードまでの経路上のノードのノードIDのリスト(経路に沿った順番に並べられている)が得られる。匿名ルート探索要求部112は、取得したリストを、匿名ルート情報として匿名ルート情報保持部143に格納する。
以上のようにして、匿名経路の探索が完了する。
図12は、ルート探索パケットの伝送経路を示す図である。図12には、送信ノードであるノード100から出力されたルート探索パケット20aが内容の変更を受けながら中継され、受信ノードであるノード300に到達するまでの様子を示している。
ノード100から出力されたルート探索パケット20aを受け取ったノード200は、戻りオニオンに自分の情報を付加したルート探索パケット20b,20eを生成し、ノード410やノード420等に送信する。
ノード410は、戻りオニオンに自分の情報を付加したルート探索パケット20cを生成し、ノード430に対して送信する。ノード430は、戻りオニオンに自分の情報を付加したルート探索パケット20dを生成し、ノード300に対して送信する。
同様に、ノード420は、戻りオニオンに自分の情報を付加したルート探索パケット20fを生成し、ノード430に対して送信する。ノード430は、戻りオニオンに自分の情報を付加したルート探索パケット20gを生成し、ノード300に対して送信する。
このように、受信ノードであるノード300には、2つのルート探索パケット20d,20gが到達する。すなわち、受信ノードには、様々な経路を通ってルート探索パケットが届く。そのため、ルート通知パケットも複数個返信される。
ここで、ノード420を経由して伝送されるルート探索パケットの内部情報について詳細に説明する。
図13は、ルート探索パケットの状態遷移状況を示す図である。なお、以下の説明において、鍵の記号の右に括弧で他の情報を示した場合、括弧内の情報をその鍵で暗号化した情報を示す。
ノード100からノード200に渡されるルート探索パケット20aには、メッセージフラグ"ルート探索ブロードキャスト"、宛先(To)"ノード「X」の公開ID"、送信元(From)"ノード「A」の匿名ID#1"、宛先オニオン(無し)、戻りオニオン"^Aid+APk(Aid)"、返信暗号化用一時鍵情報"ATPk,APk(ATSk)"が登録されている。ここで、戻りオニオンにおける「^」は戻りフラグである。Aidは、ノード「A」のノードIDである。APkは、ノード「A」の固定公開鍵である。また、返信暗号化用一時鍵情報において、ATPkはノード「A」の一時公開鍵を示し、ATSkはノード「A」の一時秘密鍵を示す。
ノード200からノード420に渡されるルート探索パケット20eでは、戻りオニオンが"^Bid+BPk{^Aid+APk(Aid)}"に変更されている。ここで、戻りオニオンにおけるBidはノード「B」のノードIDであり、BPkはノード「B」の固定公開鍵である。このように、ノード「B」の固定公開鍵でノード「A」の情報を暗号化することで、送信元が隠される。
ノード420からノード430に渡されるルート探索パケット20fでは、戻りオニオンが"^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}"に変更されている。ここで、戻りオニオンにおけるDidはノード「D」のノードIDであり、DPkはノード「D」の固定公開鍵である。
ノード430からノード300に渡されるルート探索パケット20gでは、戻りオニオンが"^Eid+EPk{^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}}"に変更されている。ここで、戻りオニオンにおけるEidはノード「E」のノードIDであり、EPkはノード「E」の固定公開鍵である。
ルート探索パケット20gを受け取ったノード300は、宛先によって、自分宛であることを認識できる。しかし、どのような経路で送られてきたのかは、ノード名「E」のノード430から送られてきたことしか認識できない。
次に、ノード300から送信されるルート通知パケットの伝送経路について説明する。
図14は、ルート通知パケットの伝送経路を示す図である。図14には、受信ノードであるノード300から出力された2つのルート通知パケット30a,30eが内容の変更を受けながら中継され、送信ノードであるノード100に到達するまでの様子を示している。
ノード300から出力されたルート通知パケット30aを受け取ったノード430は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30bを生成し、ノード410に送信する。ノード410は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30cを生成し、ノード200に送信する。ノード200は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30dを生成し、ノード100に送信する。
また、ノード300から出力されたルート通知パケット30eを受け取ったノード430は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30fを生成し、ノード420に送信する。ノード420は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30gを生成し、ノード200に送信する。ノード200は、戻りオニオンから自分の情報を削除して、ルート情報に自分の情報を付加したルート通知パケット30hを生成し、ノード100に送信する。
このように、送信ノードであるノード100には、2つのルート通知パケット30d,30hが到達する。
ここで、ノード420を経由して伝送されるルート探索パケットの内部情報について詳細に説明する。
図15は、ルート通知パケットの状態遷移状況を示す図である。
ノード300からノード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」の固定公開鍵である。
ノード430からノード420に渡されるルート通知パケット30fでは、宛先オニオンが"^Did+DPk{^Bid+BPk{^Aid+APk(Aid)}}"に変更されている。このように、ノード名「E」のノード430では、自分のノードIDを宛先オニオンから削除し、残りの情報を自分の固定秘密鍵で復号している。これにより、ルート通知パケットの伝送経路が秘匿されると共に、次の転送先(Did)のみが認識可能となる。また、ルート情報には、ATPk(Eid,EPk)がスタックされている。
ノード420からノード200に渡されるルート通知パケット30gでは、宛先オニオンが"^Bid+BPk{^Aid+APk(Aid)}"に変更されている。また、ルート情報には、ATPk(Did,DPk)がスタックされている。
ノード200からノード100に渡されるルート通知パケット30hでは、宛先オニオンが"^Aid+APk(Aid)"に変更されている。また、ルート情報には、ATPk(Bid,BPk)がスタックされている。
ルート通知パケット30hを受け取ったノード100は、宛先によって、自分宛であることを認識できる。また、ルート情報を、一時秘密鍵で復号すれば匿名通信の伝送経路(匿名ルート)を認識できる。その結果、匿名ルート情報保持部143には、1以上の匿名ルート情報が格納される。
図16は、匿名ルート情報保持部内のデータ構造例を示す図である。図16には、図14に示した2つの経路で返信されたルート通知パケット30d,30hに基づいて格納された匿名ルート情報143a,143bを示している。
匿名ルート情報143aには、ルート情報として「Bid→Cid→Eid→Xid」が設定されている。これは、左側のノードIDで示されるノード程、送信ノードであるノードに近いことを示している。すなわち、ルート情報で示されるノードIDの配列の左から右に向かってパケットを転送することで、ノードID「Xid」のノード300にパケットが到達する。
また、匿名ルート情報143aには、ルート上の各ノードの固定公開鍵「BPk,CPk,EPk,XPk」が登録されている。この固定公開鍵を利用することで、オニオンルーティングを行うためのパケットの暗号化が可能となる。
匿名ルート情報143bには、ルート情報として「Bid→Did→Eid→Xid」と、ルート上の各ノードの固定公開鍵「BPk,DPk,EPk,XPk」とが登録されている。
[匿名通信機能]
次に、取得した匿名ルート経由の匿名通信機能について説明する。
図17は、匿名通信機能を示す概念図である。図17には、ノード100からノード200を経由してノード300宛のデータパケット40を送信する場合の例を示している。このとき、送信ノードであるノード100では匿名データ送信部121が処理を実行し、中継ノードであるノード200では匿名データ中継部222が処理を実行し、受信ノードであるノード300では匿名データ受信部323が処理を実行する。
図18は、データパケットのデータ構造例を示す図である。データパケット40は、メッセージフラグ41、宛先(To)42、送信元(From)43、ブロック指定44、グレープルート45、およびペイロード46で構成される。
メッセージフラグ41は、パケットの種別を示している。データパケット40の場合には、データ通信用のパケット(通常のパケット)であることを示す情報が設定される。
宛先42には、データパケット40の宛先が設定される。宛先は、受信ノードの公開IDである。
送信元43には、送信ノードの匿名IDが設定される。この匿名IDは、匿名ルート探索時とは別のものが使用される。
ブロック指定44は、次のノードが復号すべき暗号ブロックの位置を示す情報である。これは、ブロック指定44の内容は、データパケット40が中継される度に変更される。
グレープルート45は、暗号ブロックの集合である。具体的には、グレープルート45には、検出された複数の匿名ルート情報に含まれる各ノードに対応する暗号ブロックが含まれる。暗号ブロックには、対応するノードが行うべき処理(パケットの中継や、パケットの内のデータの取得)が定義されている。また、暗号ブロックには、パケットを中継する際の次のノードに対応する暗号ブロックの位置も含まれている。
ペイロード46は、転送すべきメッセージを受信ノードの固定公開鍵で暗号化したデータを含む実データである。
次に、匿名通信機能の処理手順について説明する。
図19は、匿名通信機能の処理手順を示すシーケンス図である。以下、図19に示す処理をステップ番号に沿って説明する。
[ステップS41]送信ノードであるノード100のグレープルータ120内の匿名データ送信部121は、アプリケーション131からメッセージ送信の指示を受け付ける。
[ステップS42]匿名データ送信部121は、匿名ルート情報保持部143の中から送信相手のノードまでの匿名ルートを選択する。この際、多数の匿名ルートがある場合、その中から所定の数の匿名ルートを選択する。たとえば、中継するノード数が少ない匿名ルートを優先的に選択する。
[ステップS43]匿名データ送信部121は、データパケット40を生成する。データパケット40には、受信ノードの公開ID、自分の匿名ID、匿名ルート情報、メッセージデータ、自分の一時鍵(一時公開鍵と一時秘密鍵)等の情報が含められる。
具体的には、匿名データ送信部121は、メッセージフラグ41に、データパケットであることを示す情報を設定する。宛先42には、ノード300の公開IDが設定される。送信元43には、匿名IDが設定される。設定される匿名IDは、匿名ID生成部152によって新たに生成されたものである。
ブロック指定44には、選択した匿名ルート上で自分に隣接するノードに対応する暗号ブロックの位置が設定される。
グレープルート45には、選択した匿名ルート上の各ノードに対応する暗号ブロックが設定される。
ペイロード46には、アプリケーション131から渡されたメッセージデータに加え、所定の情報を受信ノードの固定公開鍵で暗号化した情報が設定される。暗号化対象の情報は、メッセージヘッダ、自分の一時公開鍵、および自分の一時秘密鍵を固定公開鍵で暗号化した情報である。なお、このときの一時公開鍵と一時秘密鍵とは、一時鍵生成部151によって新たに生成されたものである。
[ステップS44]匿名データ送信部121は、データパケットを匿名ルートに従って送信する。この例では、ノード200に送信される。
[ステップS45]ノード200のグレープルータ220内の匿名データ中継部222は、データパケット40の受け取り宛先42を確認する。他のノード宛であれば、以下の処理を行う。
[ステップS46]匿名データ中継部222は、次のルートを選択する。具体的には、匿名データ中継部222は、ブロック指定44を参照して、復号すべき暗号ブロックを決定する。そして、匿名データ中継部222は、決定した暗号ブロックを自分の固定公開鍵で復号する。その結果、次に転送すべきノードのノードIDと、そのノードに対応する暗号ブロックの位置を取得することができる。
[ステップS47]匿名データ中継部222は、ブロック指定を更新する。すなわち、匿名データ中継部222は、次に転送すべきノードに対応する暗号ブロックの位置を、ブロック指定に設定する。
[ステップS48]匿名データ中継部222は、データパケット40を送信する。データパケット40の送信先は、ステップS46における復号処理で取得したノードIDで示される隣接ノードである。
[ステップS49]匿名データ中継部222は、送信したデータパケット40が次のノードに正しく伝送されたかどうかを判断する。正常に伝送されていれば、処理を終了する。伝送に失敗したときは、ステップS50に処理を進める。なお、データパケット40送信前に、送信先のノードへの通信が途絶えていることが分かっている場合、ステップS48の送信処理を行わずに処理がステップS50に進められる。
[ステップS50]匿名データ中継部222は、別の匿名ルート情報があるか否かを判断する。送信に失敗したデータパケット40の匿名ブロックに、別の匿名ルート情報があれば、処理がステップS51に進められる。別の匿名ルート情報がない場合、処理がステップS53に進められる。
[ステップS51]匿名データ中継部222は、データパケット40のブロック指定44を更新する。具体的には、匿名データ中継部222は、別の匿名ルート上の隣接ノードに対応する匿名ブロックの位置を、ブロック指定44に設定する。
[ステップS52]匿名データ中継部222は、データパケット40を送信する。このときのデータパケット40の送信先は、別の匿名ルート上の隣接ノードである。その後、処理がステップS49に進められる。
[ステップS53]匿名データ中継部222は、別の匿名ルート情報が無い場合、データパケットをマルチキャストで、そのとき認識している全ての接続先に送信する。その後、処理が終了する。
[ステップS54]データパケット40が受信ノードであるノード300に到達すると、ノード300のグレープルータ320内の匿名データ受信部323は宛先を確認する。自分宛のデータパケット40であれば、処理がステップS55に進められる。
[ステップS55]匿名データ受信部323は、自分の固定秘密鍵でペイロード46を復号する。
[ステップS56]匿名データ受信部323は、復号されたメッセージヘッダ、送信ノードの鍵情報(一時公開鍵と暗号化された一時秘密鍵)、およびメッセージをアプリケーションに渡す。
このようにして、データパケット40が受信ノードに送信される。受信ノードから返信手順は、ルート通知パケット30の送信手順と同様である。
図20は、データパケットの伝送経路を示す図である。図19に示すように、ノード100から出力されたデータパケット40aは、ルート探索時に発見された匿名ルートの伝送経路が存続していれば、中継ノードである複数のノード200,410,430で内容の変更を受けながら、受信ノードであるノード300に渡される。
データパケット40aを受け取ったノード200は、ブロック指定を更新したデータパケット40bをノード410に送信する。データパケット40bを受け取ったノード410は、ブロック指定を更新したデータパケット40cをノード430に送信する。データパケット40cを受け取ったノード430は、ブロック指定を更新したデータパケット40dをノード300に送信する。
ここで、受信ノードであるノード300は、ダミーノードに対してダミーのデータパケット40eを送信することができる。このデータパケット40eを送信することで、データ伝送がノード300で途切れずに済み、ノード300が受信ノードであることを隠すことができる。
以下、図21,図22を参照して、データパケットの状態遷移状況について説明する。
図21は、データパケットの初期状態を示す図である。ノード100から出力されるデータパケット40aは、メッセージフラグ"通常"、宛先(To)"ノード「X」の公開ID"、送信元(From)"ノード「A」の匿名ID#2"、ブロック指定"Bid+Bが復号するブロック位置"が設定されている。
グレープルートには、複数の暗号ブロックが設定されている。たとえば、ノード「A」のノード100に対応する暗号ブロック"APk{Aid,ダミーパケットを投げるノードID+そのノードが復号するブロック位置,・・・}"や、ノード「B」のノード200に対応する暗号ブロック"BPk{^Aid+Aが復号するブロック位置,Cid+Cが復号するブロック位置,Did+Dが復号するブロック位置}"が設定されている。オニオンルーティングの場合と同様に、戻りフラグ「^」によって戻りルートが示されている。したがって、返信のパケットを中継ノードが受け取った場合、戻りルートに従って、パケットを転送する。これにより、送信ノードが作成したグレープルートによって、データの送信とデータの返信が可能となる。
また、本実施の形態では、グレープルート内にダミーノードに対応する暗号ブロック"ダミーノードPk{ダミー情報,ダミーノードID,ダミーパケットを投げるノードID+そのノードが復号するブロック位置,・・・}"も設けられている。
ペイロードには、"XPk{メッセージヘッダ、ATPk,APk(ATSk)、メッセージデータ}"が設定されている。
図22は、データパケットの状態遷移状況を示す図である。ノード200からノード410に渡されるデータパケット40bでは、ブロック指定が"Did+Dが復号するブロック位置"に変更されている。
ノード410からノード430に渡されるデータパケット40cでは、ブロック指定が"Eid+Eが復号するブロック位置"に変更されている。
ノード430からノード300に渡されるデータパケット40dでは、ブロック指定が"Xid+Xが復号するブロック位置"に変更されている。
ノード300からダミーノードに渡されるデータパケット40eでは、ブロック指定が"ダミーノードID+ダミーノードが復号するブロック位置"に変更されている。
このように、中継される毎にブロック指定が変更されることで、各中継ノードや受信ノードに対して、匿名通信における転送先の情報等を通知することができる。
ここで、ノード410からノード430へのデータパケット40cの送信に失敗した場合を考える。そのとき、ノード410では、バックトラック処理が行われる。
図23は、バックトラック処理におけるデータパケットの伝送経路を示す図である。ノード410においてデータパケット40cの送信に失敗すると、ノード410からノード200に対してデータパケット40eが送信される。
ノード200は、別ルートであるノード420に対してデータパケット40fを送信する。ノード420はノード430に対してデータパケット40gを送信する。ノード430は、ノード300に対してデータパケット40hを送信する。
さらに、ノード420からノード430へのデータパケット40gの送信に失敗したとき、ノード420では、他の匿名ルートの有無を判断する。他の匿名ルートがない場合、ノード420は、マルチキャスト送信が必要と判断する。
図24は、マルチキャストにおけるデータパケットの伝送経路を示す図である。ノード430においてデータパケット40gの送信に失敗すると、ノード420からそのとき接続されている他のノード460(ノード名「F」)に対してデータパケット40iが送信される。ノード460からノード300までの経路が存在していれば、データパケットがノード300に伝送される。この場合でも、送信ノードや受信ノードの匿名性は保たれる。
以上のようにして、データパケットが受信ノードに渡される。受信ノードでは、グレープルートの戻り方向へ向けてパケットを送信すれば、応答パケットを送信ノードに対して送信することができる。たとえば、メッセージフラグにおいて、応答のデータパケットであることを指定することができる。中継ノードでは、応答のデータパケットを受け取った場合、戻り方向の隣接ノードへパケットを転送する。これにより、データ通信パケットを受信した受信ノードから送信ノードへの応答を、匿名性を保持したまま行うことができる。
[匿名掲示板への適用例]
上記のような匿名通信網を電子掲示板に適用すれば、不特定多数のユーザ間の匿名の情報交換を安全に行うことができる。
図25は、匿名掲示板システムに適用した匿名通信網の構成例を示す図である。図24の例では、P2Pネットワークで構成される匿名通信網10内のノード300にデータベース(DB)360が接続され、掲示板システムが構築されている。この掲示板システムは、一般に公開された公開DBである。この場合、ノード300の公開IDは、雑誌やインターネットのウェブページ等で公開されているものとする。
このように、匿名掲示板機能では、匿名通信網10上のノード300に匿名掲示板(公開DB)を実装し、他のノードから、匿名掲示板システム(公開DB)に投稿された情報を利用する。
掲示板システム(公開DB)を利用するノードは、主に以下の機能を実現する。
1.匿名掲示板システム(公開DB)に投稿できる。
2.匿名掲示板システム(公開DB)の投稿データを検索できる。
3.匿名掲示板システム(公開DB)に投稿された情報に返信できる。
匿名掲示板システム(公開DB)は、匿名通信網10上の1つのノード300上で動作するアプリケーションとして実装される。各ノードには、この掲示板(公開DB)ノード(ノード300)に上記3つの機能を行うためのメッセージを匿名通信網10経由で通知するための機能が実装される。掲示板(公開DB)ノード(ノード300)には、匿名通信網10経由で通知されたメッセージに応答した投稿データの格納、投稿データの検索、検索結果の返信機能が実現される。
以下に匿名掲示板システムが実現する機能を示す。
1.投稿された書き込みが誰によってなされたか探知できない(投稿者の秘匿機能)。
2.投稿された情報を指定時間経過すると自動的に消去する。
3.検索が誰によってなされたか探知できない(検索者の秘匿機能)。
4.検索したときに探している投稿データがなかった場合でも目的の投稿データが後から投稿された場合に通知されるよう予約可能とする。
5.検索予約は指定時間経過すると自動的にキャンセルされる。
なお、DB360としては、たとえば、XSR(XML Service Registry)を利用して実現できる。XSRは株式会社富士通プライムソフトテクノロジが所有するオブジェクトデータベース技術である。本ソフトの機能は以下の通りである。
・UP機能:オブジェクトを保存する機能。
オブジェクトの保存期間に有効期限が設定できる。有効期限が切れたオブジェクトはXSRから自動的に消去される。
・LOOKUP機能:ユーザが探しているオブジェクトを検索できる。
検索を予約する機能を有する。
・RESPONSE機能:予約された検索にマッチする情報があればユーザに非同期に通知する。
また、メッセージ間のアンリンカビリティを高めるために、Peerノードの匿名識別子、公開鍵の使い捨て管理を以下の様に行う。
1.秘密鍵とランダムな数値を使用して匿名識別子を生成する。その秘密鍵をもつ自分だけがその匿名識別子に対して自分の識別子である確認ができる。
2.一時公開鍵・一時秘密鍵ペアを生成する。その一時秘密鍵を会員証の公開鍵で暗号化し、一時公開鍵と一緒に返信情報としてメッセージに付加する。返信者はその一時公開鍵で返信メッセージを暗号化し返信する。返信された暗号化データは会員証の秘密鍵を持つ自分だけが復号できる。
3.緊急事態において匿名識別子の匿名性を暴くには、上記「匿名通信基盤接続認証機能」での認証局へ匿名識別子(生成に使用したランダム数を含む)を持込み、登録されている全ての秘密鍵総当たりで匿名識別子に含まれるランダム数を使用して匿名識別子を生成し、一致する秘密鍵を特定する。
以上のような構成の匿名掲示板システムを匿名通信網10上に設置することで、匿名のメッセージ交換が可能となる。
たとえば、ユーザは、ノード100を用いてノード300に投稿データを含むデータパケット51を送信し、DB360に投稿データを登録することができる。投稿データは、たとえば、ノード420を用いて、ノード300に検索要求を含むデータパケット52を送信し、DB360に格納されている投稿データの検索を行うことができる。
ノード300は検索要求に応じてDB360内の投稿データを検索し、検索結果を取得する。そして、ノード300は、ノード420に対して検索結果を含むデータパケット53を送信する。これにより、ノード420に検索結果が渡される。
なお、検索結果には、掲示板ノード(ノード300)から投稿者のノードまでの匿名ルート情報(グレープルートの戻り方向情報)や、投稿者のノード用の一時公開鍵などが含められる。これにより、検索要求を出力したノードにおいて、投稿者のノードまでの匿名ルート情報を得ることができると共に、投稿者宛のメッセージを投稿者のノードでのみ復号可能な形式で暗号化することができる。
このようなデータパケット51を受け取ったノード300は、DB360に所定の情報を格納する。
図26は、DB内のデータ構造例を示す図である。DB360内には、匿名ID、戻りブロック指定、グレープルート、返信暗号化用一時鍵情報、及びメッセージデータの項目が、互いに関連付けて登録されている。たとえば、データパケット51に基づいて、匿名IDの項目には、"ノード「A」の匿名ID#3"が登録されている。戻りブロック指定には、"^Eid+Eが復号するブロック位置"が登録されている。グレープルートには、"ノード「A」作成グレープルート"が登録されている。返信暗号化用一時鍵情報には、"ATPk,APk(ATSk)"が登録されている。メッセージデータの項目には、"投稿リクエスト、アップ日時、実データ"などの情報が登録されている。
その後、ノード420からノード300に対して、検索要求を含むデータパケット52が送信される。
図27は、検索要求を含むデータパケットの例を示す図である。ノード420で生成されるデータパケット52aは、メッセージフラグ"通常"、宛先(To)"ノード「X」の公開ID"、送信元(From)"ノード「D」の匿名ID#4"、ブロック指定"Eid+Eが復号するブロック位置"、グレープルート"ノード「D」作成グレープルート"、ペイロード"XPk{メッセージヘッダ、DTPk,DPk(DTSk)、メッセージデータ}"が設定されている。
このようなデータパケット52aが伝送途中で一度も送信に失敗せずにノード300に到達したとき、そのときのデータパケット52bでは、ブロック指定が"Xid+Xが復号するブロック位置"に変更される。ここで、ペイロード内のデータは「メッセージヘッダ、DTPk、DPk(DTSk)、メッセージデータ(検索リクエスト、アップ日時、・・・)」である。
データパケット52bを受け取ったノード300は、検索リクエスト(検索キーワード等が示される)の指示に従ってDB360を検索する。ここで、検索結果としてデータパケット51bによって投稿された投稿データが得られたものとする。すると、ノード300は、ノード420に対して、検索結果を含むデータパケット53を送信する。
図28は、検索結果を含むデータパケットの例を示す図である。ノード300で生成されるデータパケット53aは、メッセージフラグ"リクエストレスポンス"、宛先(To)"ノード「D」の匿名ID#4"、送信元(From)"ノード「X」の公開ID"、ブロック指定"^Eid+Eが復号するブロック位置"、グレープルート"ノード「D」作成グレープルート"、ペイロード"メッセージヘッダ、DPk(DTSk)、DTPk{ノード「A」匿名ID#3、^Eid+Eが復号するブロック位置、ノード「A」作成グレープルート、ATPk、APk(ATSk)、実データ、・・・}"が設定されている。
このようなデータパケット53aが伝送途中で一度も送信に失敗せずにノード300に到達したとき、そのときのデータパケット53bでは、ブロック指定が"^Did+Dが復号するブロック位置"に変更される。
なお、ペイロード内のDPk(DTSk)は、ノード420の一時復号鍵を固定公開鍵で暗号化したものである。メッセージデータは検索結果であり、この例では、データパケット51に含まれる実データである。また、ペイロードには、ノード「A」匿名ID#3、^Eid+Eが復号するブロック位置、ノード「A」作成グレープルート、ATPk、APk(ATSk)、実データなどがノード「D」の一時公開鍵で暗号化されている。ノード420は、ペイロード内の暗号化されたデータを、ノード420の一時秘密鍵(DTSk)で復号することで、検索結果を参照できる。ノード420を使用しているユーザは、検索結果を参照することで、投稿データの内容を確認する。投稿内容に対して応答する場合、ユーザは、ノード420に対して返信メッセージを入力し、その後、返信の指示を入力する。
すると、ノード420は、投稿データへの返信メッセージを含むデータパケットをノード430に対して送信する。
図29は、返信メッセージを含むデータパケットの例を示す図である。ノード420で生成されるデータパケット61は、メッセージフラグ"返信"、宛先(To)"ノード「A」の匿名ID#3"、送信元(From)"ノード「D」の匿名ID#5"、ブロック指定"^Eid+Eが復号するブロック位置"、グレープルート"ノード「A」作成グレープルート+ノード「A」作成グレープルートと一緒に取得した戻りノードからノード「D」までのグレープルート"、ペイロード"メッセージヘッダ、DTPk、DPk(DTSk)、ATPk(返信メッセージ)、APk(ATSk)"が設定されている。
ここで、グレープルート内には、ノード100が作成したグレープルートに含まれる暗号ブロックと、ノード420からノード430(ノード300の戻りノード)までのグレープルートに含まれる暗号ブロックとが設定される。すなわち、返信メッセージを含むデータパケットを送信するノードから、公開掲示板を有するノードの手前のノード(戻りノード)を経由し、情報を公開したノードに至るまでの匿名ルート上の各ノードに対応する暗号ブロックが、データパケット61のグレープルートに設定される。
また、ペイロード内の「DTPk、DPk(DTSk)」は、返信暗号化用一時鍵情報であり、ノード100からノード420への返信用に利用される。「ATPk(返信メッセージ)」は、ノード100宛の返信メッセージをノード100の一時公開鍵で暗号化していることを示している。
そのデータパケット61は、ブロック指定の変更処理を受けながら中継され、ノード100に入力される。ノード100に入力されるデータパケット64は、ブロック指定が"^Aid+Aが復号するブロック位置"に変更されている。
図30は、返信内容を含むデータパケットの伝送経路を示す図である。ノード420からノード430に送信されたデータパケット61は、ブロック指定の更新を受けながら中継される。ノード430は、データパケット62をノード410に送信する。ノード410は、データパケット63をノード200に送信する。ノード200は、データパケット64をノード100に送信する。
このようにして、掲示板を介したユーザ間の互いに匿名の通信が可能となる。しかも、本発明を適用した掲示板を利用することにより、不特定多数のユーザ間で匿名の情報交換が行える。さらには、ノードIDや一時公開鍵が使い捨てであり、所定の手続き毎に別の値が使用されるため、同一投稿者が掲示板へ投稿した複数のメッセージに関して、投稿者の同一性を隠しておくことができる。
このようなシステムを利用すれば、個人的な情報を交換しても、その情報に対応する個人を悪意のある第三者から隠すことができる。そのため、このような匿名掲示板システムの技術は、ネットワーク技術を活用した予防医療・ヘルスケアサービス(HCS)に応用することができる。HCS事業を実現するためには受益者本人の体調、生理データ等、秘匿の必要性の高いデータに対するセキュリティが非常に重要な要因となる。そこで、HCSに上記匿名掲示板システムを適用すると、ユーザの生理データを、ノード100を用いて匿名のままノード300に登録することができる。そして、登録された生理データを他のノード420を使用する医者が参照し、生活習慣のアドバイス等をユーザに対して匿名のまま送信することができる。
以上説明したように、本発明の実施の形態によれば、匿名ルート上の各ノードに通知すべきルート情報がブロック毎にグレープルートに設定されている。そして、パケットを中継する際には、受信したノードが参照すべきブロック指定を変更するだけでよい。したがって、パケットが中継されてもパケットのデータ長が変更されず、データ長に基づいてそのパケットが送信元に近いか、宛先に近いか等の情報を判別することが困難となる。すなわち、匿名性が向上する。
また、パケットの中継の際に戻りオニオンのような返信用のルート情報を構築する必要もないため、送信元や宛先が露呈する危険性がさらに低下する。
さらに、グレープルーティングのパケットを中継する際の主な処理は、指定されたブロックの復号とブロック指定の変更である。これは、P2Pオニオンルーティングに比べて処理負荷が少なくて済む。すなわち、P2Pオニオンルーティングでは、パケットの中継の際に戻りルートを構築する。この戻りルートを作成するのには暗号化処理が必要である。一方、グレープルーティングでは、パケットを中継する際に戻りルートを構築する必要が無いため、処理負荷が軽減される。
しかも、データ送信前に、送信相手までのルートを探索し、そのルート経由で匿名通信を行うための情報(各ノードの公開鍵)を収集する。そのため、ネットワーク構成が動的に変更する場合でも、匿名通信が可能となる。その結果、P2Pネットワークシステムなどの不安定なネットワークシステムにおいて、データを送受信する場合に、送信経路を動的に検索できると共に、送受信者の匿名性を守ることができるという効果を奏する。
さらに、匿名通信を行う際のデータパケットには、転送中の匿名ルートとは別の匿名ルートの情報が含まれているため、送信に失敗した場合には、別の匿名ルート経由でデータを伝送させることができる。これにより、データ伝送の確実性が増す。
また、データパケットに含まれる全ての匿名ルート経由でのデータ伝送に失敗した場合には、マルチキャストで他のルート経由でのデータ送信を試みるようにした。そのため、ルート探索時には存在していないが、データ送信時には存在している別のルートがある場合、そのルート経由で宛先のノードにパケットを送信することが可能となる。
さらに、通信の際の匿名性を高めるために、他のノードに通知する公開鍵を一時公開鍵とし、所定の通信(たとえば、要求の送信とその要求に対する応答)毎に一時公開鍵を作り直すようにしたため、公開鍵の内容を監視しても、複数のパケットが同一のノードから出力されたか否かを同定することができない。
さらに、匿名IDによって自分宛のパケットであるか否かを判断し、しかも匿名IDを、所定の通信(たとえば、要求の送信とその要求に対する応答)毎に作り直すようにしたため、これらの識別情報によってノードを同定することはできない。
なお、上記の説明では返信暗号化用一時鍵情報の中に、固定公開鍵で暗号化された送信ノードの一時秘密鍵を含めているが、これは、一時公開鍵と一時秘密鍵との組を送信ノードで管理せずに済むようにするための処理である。
また、上記の処理機能はコンピュータによって実現することができ、その場合、ノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
(付記1) 匿名ルートを介してパケットを送信するための匿名データ送信方法において、
格納ブロック決定手段が、前記パケット内のルート情報格納領域を複数のブロックに分割し、前記匿名ルートに含まれる各ノードを前記ブロックに対応付け、
ノード別ルート情報生成手段が、匿名ルート記憶手段に予め格納されている匿名ルート情報に基づいて、前記匿名ルート上のノード毎に、隣接ノードの識別情報および前記隣接ノードに対応する前記ブロックの位置を示すブロック指定を含むノード別ルート情報を生成し、
暗号化手段が、前記ノード別ルート情報を暗号化し、
ノード別ルート情報設定手段が、暗号化されたノード毎の前記ノード別ルート情報を、前記パケット内の各ノードに対応する前記ブロックに設定し、
ブロック指定手段が、前記匿名ルート上の隣接する前記隣接ノードに対応する前記ブロックの位置を前記パケットに設定し、
パケット送信手段が、前記パケットを前記隣接ノードに対して送信する、
ことを特徴とする匿名データ送信方法。
(付記2) 前記暗号化手段は、前記ノード別ルート情報を、対応するノードの公開鍵で暗号化することを特徴とする付記1記載の匿名データ送信方法。
(付記3) 前記ノード別ルート情報生成手段は、前記ノード別ルート情報内に、前記匿名ルートを宛先に向かって転送する場合の隣接ノードに関する識別情報と前記ブロック指定、および前記匿名ルートを送信元に向かって返信する場合の隣接ノードに関する識別情報と前記ブロック指定を含んでいることを特徴とする付記1記載の匿名データ送信方法。
(付記4) 前記ノード別ルート情報生成手段は、宛先までの複数の匿名ルートが存在するとき、全ての匿名ルート上の各ノードに対応する前記ノード別ルート情報を生成することを特徴とする付記1記載の匿名データ送信方法。
(付記5) 前記ノード別ルート情報生成手段は、データ送信方向の隣接ノードとデータ返信方向の隣接ノードとをフラグによって指定することを特徴とする付記1記載の匿名データ送信方法。
(付記6) 前記ノード別ルート情報生成手段は、前記パケットの宛先である受信ノードに対応する前記ノード別ルート情報に、ダミーパケットを転送するための前記隣接ノードの識別情報および前記隣接ノードに対応する前記ブロックの位置を示すブロック指定を含めることを特徴とする付記1記載の匿名データ送信方法。
(付記7) 匿名のデータを中継するための匿名データ中継方法において、
各ノードの隣接ノードの識別情報および前記隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報が、ルート情報格納領域内の各ノードに対応するブロックに設定されていると共に、自分宛のブロック指定を含むパケットを受信すると、復号手段が、自分宛の前記ブロック指定で指定されたブロックに設定されている前記ノード別ルート情報を復号し、
転送先決定手段が、復号された前記ノード別ルート情報に基づいて、前記パケットの転送先のノードを決定し、
ブロック指定変更手段が、復号された前記ノード別ルート情報に基づいて、前記ブロック指定の内容を、前記転送先のノードに対応するブロックに変更し、
パケット送信手段が、前記転送先のノードに前記パケットを送信する、
ことを特徴とする匿名データ中継方法。
(付記8) 匿名ルートを介してパケットを送信する匿名データ送信装置において、
前記パケット内のルート情報格納領域を複数のブロックに分割し、前記匿名ルートに含まれる各ノードを前記ブロックに対応付ける格納ブロック決定手段と、
匿名ルート記憶手段に予め格納されている匿名ルート情報に基づいて、前記匿名ルート上のノード毎に、隣接ノードの識別情報および前記隣接ノードに対応する前記ブロックの位置を示すブロック指定を含むノード別ルート情報を生成するノード別ルート情報生成手段と、
前記ノード別ルート情報を暗号化する暗号化手段と、
暗号化されたノード毎の前記ノード別ルート情報を、前記パケット内の各ノードに対応する前記ブロックに設定するノード別ルート情報設定手段と、
前記匿名ルート上の隣接する前記隣接ノードに対応する前記ブロックの位置を前記パケットに設定するブロック指定手段と、
前記パケットを前記隣接ノードに対して送信するパケット送信手段と、
を有することを特徴とする匿名データ送信装置。
(付記9) 匿名のデータを中継する匿名データ中継装置において、
各ノードの隣接ノードの識別情報および前記隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報が、ルート情報格納領域内の各ノードに対応するブロックに設定されていると共に、自分宛のブロック指定を含むパケットを受信すると、自分宛の前記ブロック指定で指定されたブロックに設定されている前記ノード別ルート情報を復号する復号手段と、
復号された前記ノード別ルート情報に基づいて、前記パケットの転送先のノードを決定する転送先決定手段と、
復号された前記ノード別ルート情報に基づいて、前記ブロック指定の内容を、前記転送先のノードに対応するブロックに変更するブロック指定変更手段と、
前記転送先のノードに前記パケットを送信するパケット送信手段と、
を有することを特徴とする匿名データ中継装置。
(付記10) 匿名ルートを介してパケットを送信するための匿名データ送信プログラムにおいて、
コンピュータに、
格納ブロック決定手段が、前記パケット内のルート情報格納領域を複数のブロックに分割し、前記匿名ルートに含まれる各ノードを前記ブロックに対応付け、
ノード別ルート情報生成手段が、匿名ルート記憶手段に予め格納されている匿名ルート情報に基づいて、前記匿名ルート上のノード毎に、隣接ノードの識別情報および前記隣接ノードに対応する前記ブロックの位置を示すブロック指定を含むノード別ルート情報を生成し、
暗号化手段が、前記ノード別ルート情報を暗号化し、
ノード別ルート情報設定手段が、暗号化されたノード毎の前記ノード別ルート情報を、前記パケット内の各ノードに対応する前記ブロックに設定し、
ブロック指定手段が、前記匿名ルート上の隣接する前記隣接ノードに対応する前記ブロックの位置を前記パケットに設定し、
パケット送信手段が、前記パケットを前記隣接ノードに対して送信する、
処理を実行させることを特徴とする匿名データ送信プログラム。
(付記11) 匿名のデータを中継するための匿名データ中継プログラムにおいて、
コンピュータに、
各ノードの隣接ノードの識別情報および前記隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報が、ルート情報格納領域内の各ノードに対応するブロックに設定されていると共に、自分宛のブロック指定を含むパケットを受信すると、復号手段が、自分宛の前記ブロック指定で指定されたブロックに設定されている前記ノード別ルート情報を復号し、
転送先決定手段が、復号された前記ノード別ルート情報に基づいて、前記パケットの転送先のノードを決定し、
ブロック指定変更手段が、復号された前記ノード別ルート情報に基づいて、前記ブロック指定の内容を、前記転送先のノードに対応するブロックに変更し、
パケット送信手段が、前記転送先のノードに前記パケットを送信する、
処理を実行させることを特徴とする匿名データ中継プログラム。
(付記12) 匿名ルートを介してパケットを送信するための匿名データ送信プログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータに、
格納ブロック決定手段が、前記パケット内のルート情報格納領域を複数のブロックに分割し、前記匿名ルートに含まれる各ノードを前記ブロックに対応付け、
ノード別ルート情報生成手段が、匿名ルート記憶手段に予め格納されている匿名ルート情報に基づいて、前記匿名ルート上のノード毎に、隣接ノードの識別情報および前記隣接ノードに対応する前記ブロックの位置を示すブロック指定を含むノード別ルート情報を生成し、
暗号化手段が、前記ノード別ルート情報を暗号化し、
ノード別ルート情報設定手段が、暗号化されたノード毎の前記ノード別ルート情報を、前記パケット内の各ノードに対応する前記ブロックに設定し、
ブロック指定手段が、前記匿名ルート上の隣接する前記隣接ノードに対応する前記ブロックの位置を前記パケットに設定し、
パケット送信手段が、前記パケットを前記隣接ノードに対して送信する、
処理を実行させることを特徴とする匿名データ送信プログラムを記録したコンピュータ読み取り可能な記録媒体。
(付記13) 匿名のデータを中継するための匿名データ中継プログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータに、
各ノードの隣接ノードの識別情報および前記隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報が、ルート情報格納領域内の各ノードに対応するブロックに設定されていると共に、自分宛のブロック指定を含むパケットを受信すると、復号手段が、自分宛の前記ブロック指定で指定されたブロックに設定されている前記ノード別ルート情報を復号し、
転送先決定手段が、復号された前記ノード別ルート情報に基づいて、前記パケットの転送先のノードを決定し、
ブロック指定変更手段が、復号された前記ノード別ルート情報に基づいて、前記ブロック指定の内容を、前記転送先のノードに対応するブロックに変更し、
パケット送信手段が、前記転送先のノードに前記パケットを送信する、
処理を実行させることを特徴とする匿名データ中継プログラムを記録したコンピュータ読み取り可能な記録媒体。
実施の形態に適用される発明の概念図である。 グレープルートのデータ構造例を示す図である。 匿名通信網の概念図である。 本発明の実施の形態に用いるノードのハードウェア構成例を示す図である。 ノードの概略機能構成を示すブロック図である。 ノードの機能構成を示すブロック図である。 匿名通信基盤接続認証機能を示す図である。 匿名経路発見機能を示す図である。 ルート探索パケットのデータ構造例を示す図である。 ルート通知パケットのデータ構造例を示す図である。 匿名経路発見機能の処理手順を示すシーケンス図である。 ルート探索パケットの伝送経路を示す図である。 ルート探索パケットの状態遷移状況を示す図である。 ルート通知パケットの伝送経路を示す図である。 ルート通知パケットの状態遷移状況を示す図である。 匿名ルート情報保持部内のデータ構造例を示す図である。 匿名通信機能を示す概念図である。 データパケットのデータ構造例を示す図である。 匿名通信機能の処理手順を示すシーケンス図である。 データパケットの伝送経路を示す図である。 データパケットの初期状態を示す図である。 データパケットの状態遷移状況を示す図である。 バックトラック処理におけるデータパケットの伝送経路を示す図である。 マルチキャストにおけるデータパケットの伝送経路を示す図である。 匿名掲示板システムに適用した匿名通信網の構成例を示す図である。 DB内のデータ構造例を示す図である。 検索要求を含むデータパケットの例を示す図である。 検索結果を含むデータパケットの例を示す図である。 返信メッセージを含むデータパケットの例を示す図である。 返信内容を含むデータパケットの伝送経路を示す図である。 従来のP2Pオニオンルーティングの例を示す図である。 従来技術によるパケットのサイズを示す図である。 送信者から受信者までのルート情報を示す図である。
符号の説明
1 送信ノード
1a 匿名ルート記憶手段
1b 格納ブロック決定手段
1c ノード別ルート情報生成手段
1d 暗号化手段
1e ノード別ルート情報設定手段
1f ブロック指定手段
1g パケット送信手段
2 中継ノード
2a 復号手段
2b 送信先決定手段
2c ブロック指定変更手段
2d パケット送信手段
3 受信ノード

Claims (10)

  1. 匿名ルートを介してパケットを送信するための匿名データ送信方法において、
    格納ブロック決定手段が、前記パケット内のルート情報格納領域を複数のブロックに分割し、匿名ルート記憶手段に予め格納されている匿名ルート情報に基づいて、前記匿名ルートに含まれる各ノードを前記ブロックに対応付け、
    ノード別ルート情報生成手段が、前記匿名ルート情報に基づいて、前記匿名ルート上のノード毎に、隣接ノードの識別情報および前記隣接ノードに対応する前記ブロックの位置を示すブロック指定を含むノード別ルート情報を生成し、
    暗号化手段が、前記ノード別ルート情報を暗号化し、
    ノード別ルート情報設定手段が、暗号化されたノード毎の前記ノード別ルート情報を、前記パケット内の各ノードに対応する前記ブロックに設定し、
    ブロック指定手段が、前記匿名ルート上の隣接する前記隣接ノードに対応する前記ブロックの位置を前記パケットに設定し、
    パケット送信手段が、前記パケットを前記隣接ノードに対して送信する、
    ことを特徴とする匿名データ送信方法。
  2. 前記暗号化手段は、前記ノード別ルート情報を、対応するノードの公開鍵で暗号化することを特徴とする請求項1記載の匿名データ送信方法。
  3. 前記ノード別ルート情報生成手段は、前記ノード別ルート情報内に、前記匿名ルートを宛先に向かって転送する場合の隣接ノードに関する識別情報と前記ブロック指定、および前記匿名ルートを送信元に向かって返信する場合の隣接ノードに関する識別情報と前記ブロック指定を含んでいることを特徴とする請求項1記載の匿名データ送信方法。
  4. 前記ノード別ルート情報生成手段は、宛先までの複数の匿名ルートが存在するとき、全ての匿名ルート上の各ノードに対応する前記ノード別ルート情報を生成することを特徴とする請求項1記載の匿名データ送信方法。
  5. 前記ノード別ルート情報生成手段は、データ送信方向の隣接ノードとデータ返信方向の隣接ノードとをフラグによって指定することを特徴とする請求項1記載の匿名データ送信方法。
  6. 匿名のデータを中継するための匿名データ中継方法において、
    各ノードの隣接ノードの識別情報および前記隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報が、ルート情報格納領域内の各ノードに対応するブロックに設定されていると共に、自分宛のブロック指定を含むパケットを受信すると、復号手段が、自分宛の前記ブロック指定で指定されたブロックに設定されている前記ノード別ルート情報を復号し、
    転送先決定手段が、復号された前記ノード別ルート情報に基づいて、前記パケットの転送先のノードを決定し、
    ブロック指定変更手段が、復号された前記ノード別ルート情報に基づいて、前記ブロック指定の内容を、前記転送先のノードに対応するブロックに変更し、
    パケット送信手段が、前記転送先のノードに前記パケットを送信する、
    ことを特徴とする匿名データ中継方法。
  7. 匿名ルートを介してパケットを送信する匿名データ送信装置において、
    前記パケット内のルート情報格納領域を複数のブロックに分割し、匿名ルート記憶手段に予め格納されている匿名ルート情報に基づいて、前記匿名ルートに含まれる各ノードを前記ブロックに対応付ける格納ブロック決定手段と、
    前記匿名ルート情報に基づいて、前記匿名ルート上のノード毎に、隣接ノードの識別情報および前記隣接ノードに対応する前記ブロックの位置を示すブロック指定を含むノード別ルート情報を生成するノード別ルート情報生成手段と、
    前記ノード別ルート情報を暗号化する暗号化手段と、
    暗号化されたノード毎の前記ノード別ルート情報を、前記パケット内の各ノードに対応する前記ブロックに設定するノード別ルート情報設定手段と、
    前記匿名ルート上の隣接する前記隣接ノードに対応する前記ブロックの位置を前記パケットに設定するブロック指定手段と、
    前記パケットを前記隣接ノードに対して送信するパケット送信手段と、
    を有することを特徴とする匿名データ送信装置。
  8. 匿名のデータを中継する匿名データ中継装置において、
    各ノードの隣接ノードの識別情報および前記隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報が、ルート情報格納領域内の各ノードに対応するブロックに設定されていると共に、自分宛のブロック指定を含むパケットを受信すると、自分宛の前記ブロック指定で指定されたブロックに設定されている前記ノード別ルート情報を復号する復号手段と、
    復号された前記ノード別ルート情報に基づいて、前記パケットの転送先のノードを決定する転送先決定手段と、
    復号された前記ノード別ルート情報に基づいて、前記ブロック指定の内容を、前記転送先のノードに対応するブロックに変更するブロック指定変更手段と、
    前記転送先のノードに前記パケットを送信するパケット送信手段と、
    を有することを特徴とする匿名データ中継装置。
  9. 匿名ルートを介してパケットを送信するための匿名データ送信プログラムにおいて、
    コンピュータに、
    格納ブロック決定手段が、前記パケット内のルート情報格納領域を複数のブロックに分割し、匿名ルート記憶手段に予め格納されている匿名ルート情報に基づいて、前記匿名ルートに含まれる各ノードを前記ブロックに対応付け、
    ノード別ルート情報生成手段が、前記匿名ルート情報に基づいて、前記匿名ルート上のノード毎に、隣接ノードの識別情報および前記隣接ノードに対応する前記ブロックの位置を示すブロック指定を含むノード別ルート情報を生成し、
    暗号化手段が、前記ノード別ルート情報を暗号化し、
    ノード別ルート情報設定手段が、暗号化されたノード毎の前記ノード別ルート情報を、前記パケット内の各ノードに対応する前記ブロックに設定し、
    ブロック指定手段が、前記匿名ルート上の隣接する前記隣接ノードに対応する前記ブロックの位置を前記パケットに設定し、
    パケット送信手段が、前記パケットを前記隣接ノードに対して送信する、
    処理を実行させることを特徴とする匿名データ送信プログラム。
  10. 匿名のデータを中継するための匿名データ中継プログラムにおいて、
    コンピュータに、
    各ノードの隣接ノードの識別情報および前記隣接ノードに対応するブロックの位置を示すブロック指定を含むノード別ルート情報が、ルート情報格納領域内の各ノードに対応するブロックに設定されていると共に、自分宛のブロック指定を含むパケットを受信すると、復号手段が、自分宛の前記ブロック指定で指定されたブロックに設定されている前記ノード別ルート情報を復号し、
    転送先決定手段が、復号された前記ノード別ルート情報に基づいて、前記パケットの転送先のノードを決定し、
    ブロック指定変更手段が、復号された前記ノード別ルート情報に基づいて、前記ブロック指定の内容を、前記転送先のノードに対応するブロックに変更し、
    パケット送信手段が、前記転送先のノードに前記パケットを送信する、
    処理を実行させることを特徴とする匿名データ中継プログラム。
JP2003398090A 2003-11-27 2003-11-27 匿名データ送信方法、匿名データ中継方法、匿名データ送信装置、匿名データ中継装置、匿名データ送信プログラム、および匿名データ中継プログラム Expired - Fee Related JP4233437B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003398090A JP4233437B2 (ja) 2003-11-27 2003-11-27 匿名データ送信方法、匿名データ中継方法、匿名データ送信装置、匿名データ中継装置、匿名データ送信プログラム、および匿名データ中継プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003398090A JP4233437B2 (ja) 2003-11-27 2003-11-27 匿名データ送信方法、匿名データ中継方法、匿名データ送信装置、匿名データ中継装置、匿名データ送信プログラム、および匿名データ中継プログラム

Publications (2)

Publication Number Publication Date
JP2005159912A JP2005159912A (ja) 2005-06-16
JP4233437B2 true JP4233437B2 (ja) 2009-03-04

Family

ID=34723057

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003398090A Expired - Fee Related JP4233437B2 (ja) 2003-11-27 2003-11-27 匿名データ送信方法、匿名データ中継方法、匿名データ送信装置、匿名データ中継装置、匿名データ送信プログラム、および匿名データ中継プログラム

Country Status (1)

Country Link
JP (1) JP4233437B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2707707C2 (ru) * 2018-03-30 2019-11-28 Акционерное общество "Лаборатория Касперского" Способ передачи данных в клиент-серверной архитектуре при выполнении запроса
RU2754967C1 (ru) * 2020-06-19 2021-09-08 Акционерное общество "Лаборатория Касперского" Способ передачи анонимных данных недоверенной стороне

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101227417B (zh) * 2006-08-04 2015-03-25 华为技术有限公司 数据包分类方法及其系统
JP5211342B2 (ja) * 2007-01-12 2013-06-12 国立大学法人山梨大学 秘匿通信方法
WO2008111206A1 (ja) 2007-03-15 2008-09-18 Fujitsu Limited 中継ノード
JP4875526B2 (ja) * 2007-03-28 2012-02-15 株式会社ディ・アイ・システム セキュリティプログラムおよびサーバ
US8370627B2 (en) 2008-01-04 2013-02-05 University Of Yamanashi Confidential communication method
JP4790736B2 (ja) * 2008-01-21 2011-10-12 日本電信電話株式会社 返信経路情報生成装置、通信装置、匿名通信方法、プログラム及び記録媒体
JP5560723B2 (ja) * 2010-01-13 2014-07-30 ソニー株式会社 情報処理装置および方法、並びに、情報処理システムおよび方法
JP6636301B2 (ja) * 2015-10-19 2020-01-29 鈴木 秀一 データ伝送システム及びデータ伝送方法
JP6842090B2 (ja) * 2018-01-18 2021-03-17 日本電信電話株式会社 通信装置、サーバ装置、秘匿通信システム、その方法、及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2707707C2 (ru) * 2018-03-30 2019-11-28 Акционерное общество "Лаборатория Касперского" Способ передачи данных в клиент-серверной архитектуре при выполнении запроса
RU2754967C1 (ru) * 2020-06-19 2021-09-08 Акционерное общество "Лаборатория Касперского" Способ передачи анонимных данных недоверенной стороне

Also Published As

Publication number Publication date
JP2005159912A (ja) 2005-06-16

Similar Documents

Publication Publication Date Title
Al-Muhtadi et al. Routing through the mist: Privacy preserving communication in ubiquitous computing environments
US11159312B2 (en) Secure data exchange network
JP2601983B2 (ja) 秘密通信方法および装置
US6049878A (en) Efficient, secure multicasting with global knowledge
JP2005004777A (ja) ピアツーピア名前解決ワイヤプロトコルで使用するデータ構造を格納したコンピュータ可読媒体
JP4902878B2 (ja) リンク管理システム
JP4628938B2 (ja) データ通信システム、端末装置およびvpn設定更新方法
JP4233437B2 (ja) 匿名データ送信方法、匿名データ中継方法、匿名データ送信装置、匿名データ中継装置、匿名データ送信プログラム、および匿名データ中継プログラム
CN109698791B (zh) 一种基于动态路径的匿名接入方法
JP5012173B2 (ja) 暗号通信処理方法及び暗号通信処理装置
CN114785622B (zh) 多标识网络的访问控制方法、装置及存储介质
US11368288B2 (en) Apparatus and method of lightweight communication protocols between multiple blockchains
CN111970243A (zh) 匿名通信网络中多阶段路由的消息转发方法
US20210058312A1 (en) Discovery for token secured routing
JP5839125B2 (ja) ノードおよび通信方法
JP4401415B2 (ja) 電子掲示板提供装置、メッセージ投稿方法、投稿メッセージ検索方法、および電子掲示板提供プログラム
JP4128094B2 (ja) 匿名ルート探索要求方法、匿名ルート探索要求中継方法、匿名データ中継方法、および匿名ルート探索要求応答方法
JP4360883B2 (ja) 情報検索方法、情報検索装置、および情報検索プログラム
CN102474459A (zh) 中继装置
Vakde et al. EnPassant: anonymous routing for disruption‐tolerant networks with applications in assistive environments
JP2006268574A (ja) 情報処理装置
Al-Muhtadi et al. Routing through the mist: design and implementation
Balasubramanian et al. Onion routing in anonymous network
JP2022021818A (ja) 通信システム、鍵管理サーバ装置、ルータ及びプログラム
JP2005210380A (ja) ピアツーピア通信方法及び通信システム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20050913

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050922

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081203

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081209

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081209

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

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131219

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees