説明

ピアツーピア型匿名プロキシにおける安全性の高い匿名通信路の検証及び構築する方法

【課題】信頼できる匿名通信路用サーバと信頼できない匿名通信路用サーバとが混在しているネットワークから、信頼性のある匿名通信路用サーバを選択し、安全性の高い匿名通信路の確保を可能とする。
【解決手段】ユーザが立ち上げている、自分及び他人が共同で使用できる匿名プロキシの性質を持った専用プログラム(以後、ピアツーピア型匿名プロキシと記載)から、他人が立ち上げているピアツーピア型匿名プロキシにアクセスし、サーバとのデータ送受信用匿名通信路を仮に構築する。この時、中継点となるピアツーピア型匿名プロキシから認証用のパスワードを受け取り、その後、新たに別の匿名通信路を構築し、その別の匿名通信路を用いて先ほどパスワードを受け取ったピアツーピア型匿名プロキシにアクセスし、パスワードの認証を行う。パスワードが一致すれば信頼できる中継点として確定され、その匿名通信路を用いてデータの送受信を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータネットワークで安全性の高い匿名通信路を確保できる通信処理装置、通信方式、及びプログラムに関するものである。
【背景技術】
【0002】
インターネットなどで使用されているTCP/IPによる通信方法は、世の中でかなり普及している。この通信方法は、そのシンプルな構成から様々な機器でも対応しやすい規格になっている(図2)。
【0003】
一般的に、インターネット上の通信データの大部分は暗号化されておらず、これらIPパケットの情報が中継となったコンピュータに丸見えの状態になっている。そのため、送信元と宛先の間の通信内容を、中継点となったコンピュータの悪意ある管理者がのぞき見することが可能である(図3)。
【0004】
SSLなどの暗号化を施し通信した場合には、中継点の管理者がIPパケットを見ただけでは、そのデータ内容が分からないようになる。しかし、それ以外の情報であるIPヘッダやTCP/UDPヘッダに関しては暗号化されるわけではないので、中継となったコンピュータにどこからどこへ通信を行っているのか分かってしまう。
【0005】
さらに、IP通信の手順上、情報をやり取りしたい通信相手である宛先に対しても、その送信元がどこなのか判明してしまうという欠点がある(図4の20)。これを打破するためには、複数の匿名プロキシを中継点とし、これらの中継点を通して通信を行うことにより、送信元を宛先に知らせないということができる(図4の22)。
【0006】
しかし、この方法では全ての匿名プロキシの管理者に、通信の宛先がどこなのか分かってしまうという欠点がある。さらに、クライアントが一番最初に接続した匿名プロキシ(図4の21)に対して、送信元と宛先の両方が露見してしまうという欠点がある。また、通信ルート自体が常に固定されるため、送信元が発覚しやすい。
【0007】
このようなことを防ぐために特定の匿名プロキシを使用するのではなく、自分及び他人が共同で使用できる匿名プロキシの性質を持った専用プログラム(以後、ピアツーピア型匿名プロキシと記載)を常に立ち上げ、これらの中から任意、もしくは無作為に中継点を選択し、見知らぬ人同士でピアツーピアの暗号通信を行いデータを相互に受け渡す匿名通信路を構築することにより、問題を解決することが可能となる(図5)。
【0008】
この方法で、一番最初のピアツーピア型匿名プロキシは、自分で立ち上げているものであり信用できる。中継点となっているピアツーピア型匿名プロキシは、自分に接続してきた他のピアツーピア型匿名プロキシが、起点なのかそれとも他の中継点なのかネットワーク上のデータの流れからは判断できない。なぜなら、稼働しているピアツーピア型匿名プロキシは、通信の起点であると同時に他者の通信の中継点という2つの機能を有しているからである。ゆえに、外部からは判断が難しいものとなる。
【非特許文献1】RFC791
【非特許文献2】RFC919
【非特許文献3】RFC922
【発明の開示】
【発明が解決しようとする課題】
【0009】
図5のような方法で実際に通信することができれば、かなりの通信情報を漏洩させずに済むことができる。しかし、これはすべての中継点が正しく作動している場合であり、悪意ある改竄されたピアツーピア型匿名プロキシが中継点となった場合には、必ずしも安全に通信できるとは限らなくなる。具体的には、以下のような問題点が挙げられる。
【0010】
お互いに接続しあっているピアツーピア型匿名プロキシ間の通信を、単純にSSLなどの暗号通信した場合、ネットワークを外部から監視している第三者に対し、どれが接続元のクライアントになるピアツーピア型匿名プロキシなのかは把握されなくなる。しかし、これらの通信データはピアツーピア型匿名プロキシ内部にて内容の復号化を行うため、その中継となったピアツーピア型匿名プロキシの管理者には通信の宛先が分かってしまう。
【0011】
また、中継点のピアツーピア型匿名プロキシが次の中継となるピアツーピア型匿名プロキシを決定するようにすると、お互い自分が中継となっている前後のIPアドレスしか把握できないようにすることが可能である。しかし、改竄されたピアツーピア型匿名プロキシが存在した場合には、より多くの中継点を通るにようにユーザが指定していても、その通りにルーティングされなくなる可能性があり、匿名性が保たれるとは限らない。また、この場合に使っている匿名通信路が本当に安全なのか、ユーザ自身が確認する術がない。
【0012】
逆に、ユーザ自身がどのようなルートを通るのか指定する場合には、正しくルーティングされているのかどうか確認できるが、中継点となっているピアツーピア型匿名プロキシにもそのルートが把握されてしまう。
【課題を解決するための手段】
【0013】
匿名通信を行いたいユーザは、ユーザが使っているコンピュータでピアツーピア型匿名プロキシを立ち上げ(図1の1)、これを匿名通信路の起点とし、ピアツーピア型匿名プロキシAとする。このピアツーピア型匿名プロキシAは次の中継点となるピアツーピア型匿名プロキシBを選択し、接続する。そして、お互いに公開鍵を交換する。ピアツーピア型匿名プロキシBは認証用にユニークなパスワードを生成し、ピアツーピア型匿名プロキシA以外には知られないように暗号化してピアツーピア型匿名プロキシAに送る(図1の2)。
【0014】
ピアツーピア型匿名プロキシAは、ピアツーピア型匿名プロキシBの次の中継点ピアツーピア型匿名プロキシCを選択し、ピアツーピア型匿名プロキシBからピアツーピア型匿名プロキシCに接続するようにする。ここでも、お互いに公開鍵を交換する。ピアツーピア型匿名プロキシCは認証用にユニークなパスワードを生成し、ピアツーピア型匿名プロキシA以外には知られないように暗号化してピアツーピア型匿名プロキシAに送る(図1の2、3)。
【0015】
ピアツーピア型匿名プロキシAからピアツーピア型匿名プロキシBとCに接続したように、別ルートでピアツーピア型匿名プロキシAからピアツーピア型匿名プロキシDとEに接続し、その後ピアツーピア型匿名プロキシBにアクセスする。このとき、図1の2のルートにて取得したパスワードをピアツーピア型匿名プロキシB以外には知られないように暗号化してピアツーピア型匿名プロキシBへ送り、認証を行う(図1の4、5、6)。
【0016】
さらに、ピアツーピア型匿名プロキシAからピアツーピア型匿名プロキシBとCに接続したように、別ルートでピアツーピア型匿名プロキシAからピアツーピア型匿名プロキシFとGに接続し、その後ピアツーピア型匿名プロキシCにアクセスする。このとき、図1の2、3のルートにて取得したパスワードをピアツーピア型匿名プロキシC以外には知られないように暗号化してピアツーピア型匿名プロキシCへ送り、認証を行う(図1の7、8、9)。
【0017】
ピアツーピア型匿名プロキシB及びピアツーピア型匿名プロキシCとパスワードが一致した場合には、ピアツーピア型匿名プロキシAが指定した通りの正しいルーティングが行われている証明になる。その後、図1の2、3、10のルートを使い、httpサーバなどにアクセスし、クライアントはサーバとデータの送受信を行う。このデータはピアツーピア型匿名プロキシAまで暗号化されて送られ、中継となるピアツーピア型匿名プロキシにはその内容は一切把握されない(図1の2、3、10、図5)。
【0018】
また、サーバとのデータ送受信用匿名路の中継点になるピアツーピア型匿名プロキシを1つ1つ確認しながら構築する方法も考えられる。この場合には、図1の2、4、5、6、3、7、8、9、10の順に接続されていくことになる。
【発明の効果】
【0019】
通信相手(httpサーバなど)に本来の送信元を知らせることなく、通信することが可能になる。また、終点のピアツーピア型匿名プロキシ以外に通信の宛先が分からない。そのため、会社やプロバイダなどのユーザがインターネットに接続するにあたって属している組織に対しても、通信の宛先を秘匿することができる。終点のピアツーピア型匿名プロキシ以外に通信相手(httpサーバなど)とのパケット内容が一切分からない。ユーザが立ち上げ起点となるピアツーピア型匿名プロキシ以外の匿名通信路を構成する中継点のピアツーピア型匿名プロキシには、通信の本来の送信元がどこであるのか分からない。送信元と宛先を秘匿したままで、既存のhttpやftpなどのTCPやUDPを使用したインターネットサービスをそのまま利用することができる。
【0020】
ピアツーピア型匿名プロキシの中継点に、その接続ルートの前後しか把握できないようにし、かつユーザが指定した通りのルーティングが行われているのか、確認することができる。そのため、信頼できない中継点が存在している場合にも、それらを排除して匿名通信路を形成することが可能になる。
【0021】
ユーザ自身も匿名通信路用にピアツーピア型匿名プロキシを立ち上げることになるため、匿名通信路を使用するユーザが増加しても、その分中継点となるピアツーピア型匿名プロキシが増えるので回線の速度低下を免れやすい。また、匿名通信路を確保するにあたって、そのピアツーピア型匿名プロキシ間の速度を考慮して匿名通信路を選択することにより、常に空いているネットワークを効率よく利用して接続することが可能になる。
【発明を実施するための最良の形態】
【0022】
状況に応じて、2種類の方法が考えられる。図1の2、3、4、5、6、7、8、9、10の順に接続する形式は、信頼できる中継点が多い場合に適した接続方法である。なぜなら、4、5、6と7、8、9のルートを同時にアクセスすることが可能だからである。図1の2、4、5、6、3、7、8、9、10の順に接続する形式は、信頼できない中継点が多い場合に適した接続方法である。なぜなら、一度にサーバとのデータ送受信用匿名通信路を構築しても、その後の検証で不正なピアツーピア型匿名プロキシの存在が発覚した場合に、そのサーバとのデータ送受信用匿名通信路の構築を最初からやり直さなくてはいけないからである。これらは、サーバとのデータ送受信用匿名通信路とチェック用匿名通信路の確立順序が異なるだけで、基本的なやり取りは同じである。そのため、実施例では前者の説明を行う。
【実施例】
【0023】
図6は、匿名通信路を構築するフローチャートを示している。httpサーバ等のサーバSVへアクセスしたいユーザU0は、事前にピアツーピア型匿名プロキシのP(U0)を立ち上げておく。その後、ユーザU0はいくつのピアツーピア型匿名プロキシを中継点として通すのかというP(U0)の内部変数mを決定しておく(ステップS1)。その後、P(U0)は、内部で保持している他のピアツーピア型匿名プロキシのIPアドレス一覧からランダムに1つアドレスを選択する(ステップS2)。この選択されたIPアドレスはA(U1)で、P(U0)の次の中継点となる。P(U0)は現在中継してるピアツーピア型匿名プロキシの数を示す内部変数nを0で初期化する(ステップS3)。
【0024】
n=0の場合(ステップS4)に、P(U0)は公開鍵LP1(U0)とそれに対応する秘密鍵LS1(U0)、及び公開鍵LP2(U0)とそれに対応する秘密鍵LS2(U0)を生成する(ステップS5)。
【0025】
P(Un)は、IPアドレスがA(Un+1)であるP(Un+1)と接続する(ステップS6)。P(Un+1)は、公開鍵LP1(Un+1)とそれに対応する秘密鍵LS1(Un+1)を生成する(ステップS7)。そして、P(Un+1)からP(Un)へ暗号化せず、公開鍵LP1(Un+1)を送る(ステップS8)。P(Un)はそのデータを受け取る。
【0026】
P(U0)にて変数nが0でない場合(ステップS9)、P(Un)からP(U0)へ公開鍵LP2(U0)で暗号化し、公開鍵LP1(Un+1)を送る。P(U0)は受け取ったデータを秘密鍵LS2(U0)で復号化する(ステップS10)。このとき、P(Un)からP(U0)へは直接送らずに、隣り合わせでつながっている中継点同士暗号通信を行いながら、P(Un)からP(Un−1)へ、P(Un−1)からP(Un−2)へ、という順でP(U0)へ送る(図7)。
【0027】
図7のフローチャートにおいて、P(R0)はP(Un)と同一のピアツーピア型匿名プロキシである。DATA(R0)は、図6のステップS10の公開鍵LP2(U0)で暗号化した公開鍵LP1(Un+1)に相当する(ステップS32)。変数kはフローチャートを説明するための便宜上のもの(ステップS33)であり、どのピアツーピア型匿名プロキシにもこの変数は存在しない。P(Rk)とP(U0)が一致しない場合(ステップS34)、P(Rk)からP(Rk+1)へ公開鍵LP1(Rk+1)で暗号化し、DATA(R0)を送る(ステップS35)。ここでは、P(Rk)はP(Un−k)に、P(Rk+1)はP(Un−k−1)に、公開鍵LP1(Rk+1)は公開鍵LP1(Un−k−1)に相当する。その後、変数kに1を加算し、図7のステップS34へ飛ぶ(ステップS36)。P(Rk)とP(U0)が一致する場合(ステップS34)、図6のステップS11に飛ぶ。
【0028】
P(Un)からP(Un+1)へ公開鍵LP1(Un+1)で暗号化し、公開鍵LP1(Un)と公開鍵LP2(U0)を送る。P(Un+1)は、受け取ったデータを秘密鍵LS1(Un+1)で復号化する(ステップS11)。
【0029】
P(Un+1)はユニークなパスワードPW(Un+1)を生成する(ステップS12)。P(Un+1)からP(U0)へ公開鍵LP2(U0)で暗号化し、パスワードPW(Un+1)を送る。P(U0)は、受け取ったデータを秘密鍵LS2(U0)で復号化する(ステップS13)。このとき、P(Un+1)からP(U0)へ直接送らずに、隣り合わせでつながっている中継点同士暗号通信を行いながら、P(Un+1)からP(Un)へ、P(Un)からP(Un−1)へ、という順でP(U0)へ送る(図7)。
【0030】
図7のフローチャートにおいて、P(R0)はP(Un+1)と同一のピアツーピア型匿名プロキシである。DATA(R0)は、図6のステップS13の公開鍵LP2(U0)で暗号化したユニークなパスワードPW(Un+1)に相当する(ステップS32)。変数kはフローチャートを説明するための便宜上のもの(ステップS33)であり、どのピアツーピア型匿名プロキシにもこの変数は存在しない。P(Rk)とP(U0)が一致しない場合(ステップS34)、P(Rk)からP(Rk+1)へ公開鍵LP1(Rk+1)で暗号化し、DATA(R0)を送る(ステップS35)。ここでは、P(Rk)はP(Un+1−k)に、P(Rk+1)はP(Un−k)に、公開鍵LP1(Rk+1)は公開鍵LP1(Un−k)に相当する。その後、変数kに1を加算し、図7のステップS34へ飛ぶ(ステップS36)。P(Rk)とP(U0)が一致する場合(ステップS34)、図6のステップS14に飛ぶ。
【0031】
P(U0)は、m=n+1が成立するか確認する。成立する場合には、ステップS18へ飛び、成立しない場合には、ステップS15へ飛ぶ(ステップS14)。P(U0)は、内部で保持している他のピアツーピア型匿名プロキシのIPアドレス一覧からランダムに1つ選択する(ステップS15)。この選択されたIPアドレスはA(Un+2)で、P(Un+1)の次の中継点となる。P(U0)からP(Un+1)へ公開鍵LP1(Un+1)で暗号化し、IPアドレスA(Un+2)を送る。P(Un+1)は受け取ったデータを秘密鍵LS1(Un+1)で復号化する(ステップS16)。このとき、P(U0)からP(Un+1)へは直接送らずに、隣り合わせでつながっている中継点同士暗号通信を行いながら、P(U0)からP(U1)へ、P(U1)からP(U2)へ、という順でP(Un+1)へ送る(図7)。
【0032】
図7のフローチャートにおいて、P(R0)はP(U0)と同一のピアツーピア型匿名プロキシである。DATA(R0)は、図6のステップS16の公開鍵LP1(Un+1)で暗号化したIPアドレスA(Un+2)に相当する(ステップS32)。変数kはフローチャートを説明するための便宜上のもの(ステップS33)であり、どのピアツーピア型匿名プロキシにもこの変数は存在しない。P(Rk)とP(Un+1)が一致しない場合(ステップS34)、P(Rk)からP(Rk+1)へ公開鍵LP1(Rk+1)で暗号化し、DATA(R0)を送る(ステップS35)。ここでは、P(Rk)はP(Uk)に、P(Rk+1)はP(Uk+1)に、公開鍵LP1(Rk+1)は公開鍵LP1(Uk+1)に相当する。その後、変数kに1を加算し、図7のステップS34へ飛ぶ(ステップS36)。P(Rk)とP(Un+1)が一致する場合(ステップS34)、図6のステップS17に飛ぶ。
【0033】
P(U0)はnに1を加算し、ステップS4へ飛ぶ(ステップS17)。
【0034】
P(U0)は、内部変数nを1に初期化する(ステップS18)。P(U0)からP(Un)へ接続し、ステップS13で受け取ったパスワードをP(Un)へ送り、またP(Un)から同一パスワードもしくは返値を受け取る(ステップS19、図8)。
【0035】
図8のフローチャートについて説明する。図8のステップS37からS53までは、図6のステップS1からステップS17までとほぼ同じ流れとなる。C0とU0は同一のユーザであり、ピアツーピア型匿名プロキシのP(C0)はP(U0)と同一のものである。また、n>0、i>0の場合、UnとCiは全て異なるユーザであり、P(Un)、P(Ci)も全て異なるピアツーピア型匿名プロキシである。ここで、P(Un)へアクセスしたいユーザC0(=U0)は、事前にいくつのピアツーピア型匿名プロキシを中継点として通るのかというP(U0)の内部変数hを決定しておく(ステップS37)。その後、ユーザC0が立ち上げているピアツーピア型匿名プロキシのP(C0)(=P(U0))は、内部で保持している他のピアツーピア型匿名プロキシのIPアドレス一覧からランダムに1つアドレスを選択する(ステップS38)。この選択されたIPアドレスはA(C1)で、P(C0)の次の中継点となる。P(U0)は内部変数iを0で初期化する(ステップS39)。
【0036】
i=0の場合(ステップS40)に、P(C0)は公開鍵LP3(C0)とそれに対応する秘密鍵LS3(C0)、及び公開鍵LP4(C0)とそれに対応する秘密鍵LS4(C0)を生成する(ステップS41)。
【0037】
P(Ci)は、IPアドレスがA(Ci+1)であるP(Ci+1)と接続する(ステップS42)。P(Ci+1)は、公開鍵LP3(Ci+1)とそれに対応する秘密鍵LS3(Ci+1)を生成する(ステップS43)。そして、P(Ci+1)からP(Ci)へ暗号化せず、公開鍵LP3(Ci+1)を送る(ステップS44)。P(Ci)はそのデータを受け取る。
【0038】
P(C0)にて変数iが0でない場合(ステップS45)、P(Ci)からP(C0)へ公開鍵LP4(C0)で暗号化し、公開鍵LP3(Ci+1)を送る。P(C0)は受け取ったデータを秘密鍵LS4(C0)で復号化する(ステップS46)。このとき、P(Ci)からP(C0)へは直接送らずに、隣り合わせでつながっている中継点同士暗号通信を行いながら、P(Ci)からP(Ci−1)へ、P(Ci−1)からP(Ci−2)へ、という順でP(C0)へ送る(図7)。
【0039】
図7のフローチャートにおいて、P(R0)はP(Ci)と同一のピアツーピア型匿名プロキシである。DATA(R0)は、図8のステップS46の公開鍵LP4(C0)で暗号化した公開鍵LP3(Ci+1)に相当する(ステップS32)。変数kはフローチャートを説明するための便宜上のもの(ステップS33)であり、どのピアツーピア型匿名プロキシにもこの変数は存在しない。P(Rk)とP(C0)が一致しない場合(ステップS34)、P(Rk)からP(Rk+1)へ公開鍵LP1(Rk+1)で暗号化し、DATA(R0)を送る(ステップS35)。ここでは、P(Rk)はP(Ci−k)に、P(Rk+1)はP(Ci−k−1)に、公開鍵LP1(Rk+1)は公開鍵LP3(Ci−k−1)に相当する。その後、変数kに1を加算し、図7のステップS34へ飛ぶ(ステップS36)。P(Rk)とP(C0)が一致する場合(ステップS34)、図8のステップS47に飛ぶ。
【0040】
P(Ci)からP(Ci+1)へ公開鍵LP3(Ci+1)で暗号化し、公開鍵LP3(Ci)と公開鍵LP4(C0)を送る。P(Ci+1)は、受け取ったデータを秘密鍵LS3(Ci+1)で復号化する(ステップS47)。
【0041】
P(Ci+1)はユニークなパスワードPW(Ci+1)を生成する(ステップS48)。P(Ci+1)からP(C0)へ公開鍵LP4(C0)で暗号化し、パスワードPW(Ci+1)を送る。ただし、現在の経路は図1のチェック用匿名通信路であるため、このパスワードが使われることはない。中継となっているピアツーピア型匿名プロキシに対し、データ送受信用匿名通信路か、チェック用匿名通信路か判断されないためにパスワードを送る処理を行っている。P(C0)は、受け取ったデータを秘密鍵LS4(C0)で復号化する(ステップS49)。このとき、P(Ci+1)からP(C0)へ直接送らずに、隣り合わせでつながっている中継点同士暗号通信を行いながら、P(Ci+1)からP(Ci)へ、P(Ci)からP(Ci−1)へ、という順でP(C0)へ送る(図7)。
【0042】
図7のフローチャートにおいて、P(R0)はP(Ci+1)と同一のピアツーピア型匿名プロキシである。DATA(R0)は、図8のステップS49の公開鍵LP4(C0)で暗号化したユニークなパスワードPW(Ci+1)に相当する(ステップS32)。変数kはフローチャートを説明するための便宜上のもの(ステップS33)であり、どのピアツーピア型匿名プロキシにもこの変数は存在しない。P(Rk)とP(C0)が一致しない場合(ステップS34)、P(Rk)からP(Rk+1)へ公開鍵LP1(Rk+1)で暗号化し、DATA(R0)を送る(ステップS35)。ここでは、P(Rk)はP(Ci+1−k)に、P(Rk+1)はP(Ci−k)に、公開鍵LP1(Rk+1)は公開鍵LP3(Ci−k)に相当する。その後、変数kに1を加算し、図7のステップS34へ飛ぶ(ステップS36)。P(Rk)とP(C0)が一致する場合(ステップS34)、図8のステップS50に飛ぶ。
【0043】
P(C0)は、h=i+1が成立するか確認する。成立する場合には、ステップS54へ飛び、成立しない場合には、ステップS51へ飛ぶ(ステップS50)。P(C0)は、内部で保持している他のピアツーピア型匿名プロキシのIPアドレス一覧からランダムに1つ選択する(ステップS51)。この選択されたIPアドレスはA(Ci+2)で、P(Ci+1)の次の中継点となる。P(C0)からP(Ci+1)へ公開鍵LP3(Ci+1)で暗号化し、IPアドレスA(Ci+2)を送る。P(Ci+1)は受け取ったデータを秘密鍵LS3(Ci+1)で復号化する(ステップS52)。このとき、P(C0)からP(Ci+1)へは直接送らずに、隣り合わせでつながっている中継点同士暗号通信を行いながら、P(C0)からP(C1)へ、P(C1)からP(C2)へ、という順でP(Ci+1)へ送る(図7)。
【0044】
図7のフローチャートにおいて、P(R0)はP(C0)と同一のピアツーピア型匿名プロキシである。DATA(R0)は、図8のステップS52の公開鍵LP3(Ci+1)で暗号化したIPアドレスA(Ci+2)に相当する(ステップS32)。変数kはフローチャートを説明するための便宜上のもの(ステップS33)であり、どのピアツーピア型匿名プロキシにもこの変数は存在しない。P(Rk)とP(Ci+1)が一致しない場合(ステップS34)、P(Rk)からP(Rk+1)へ公開鍵LP1(Rk+1)で暗号化し、DATA(R0)を送る(ステップS35)。ここでは、P(Rk)はP(Ck)に、P(Rk+1)はP(Ck+1)に、公開鍵LP1(Rk+1)は公開鍵LP3(Ck+1)に相当する。その後、変数kに1を加算し、図7のステップS34へ飛ぶ(ステップS36)。P(Rk)とP(Ci+1)が一致する場合(ステップS34)、図8のステップS53に飛ぶ。
【0045】
P(C0)はiに1を加算し、ステップS40へ飛ぶ(ステップS53)。
【0046】
P(C0)からP(Un)へ公開鍵LP1(Un)で暗号化し、図6のステップS13で受け取ったパスワードPW(Un)を送る。P(Un)は受け取ったデータを秘密鍵LS1(Un)で復号化する(ステップS54)。このとき、P(C0)からP(Un)へは直接送らずに、隣り合わせでつながっている中継点同士暗号通信を行いながら、P(C0)からP(C1)へ、P(C1)からP(C2)へ、という順でP(Un)へ送る(図7)。
【0047】
図7のフローチャートにおいて、P(R0)はP(C0)と同一のピアツーピア型匿名プロキシである。DATA(R0)は、図8のステップS54の公開鍵LP1(Un)で暗号化したパスワードPW(Un)に相当する(ステップS32)。変数kはフローチャートを説明するための便宜上のもの(ステップS33)であり、どのピアツーピア型匿名プロキシにもこの変数は存在しない。P(Rk)とP(Un)が一致しない場合(ステップS34)、P(Rk)からP(Rk+1)へ公開鍵LP1(Rk+1)で暗号化し、DATA(R0)を送る(ステップS35)。ここでは、P(Rk)はP(Uk)に、P(Rk+1)はP(Uk+1)に、公開鍵LP1(Rk+1)は公開鍵LP1(Uk+1)に相当する。その後、変数kに1を加算し、図7のステップS34へ飛ぶ(ステップS36)。P(Rk)とP(C0)が一致する場合(ステップS34)、図8のステップS55に飛ぶ。
【0048】
P(Un)は復号化したデータを過去の特定時間内にP(Un)が生成したパスワード群と一致するか確認する。一致した場合には、P(Un)からP(C0)へ公開鍵LP2(U0)で暗号化し、パスワードP(Un)を送り返す。P(C0)から送られてきたデータが復号化できない場合や、パスワードが一致しない場合はそれを伝える内容をP(C0)へ送り返す。P(C0)は受け取ったデータを秘密鍵LS2(U0)で復号化する(ステップS55)。このとき、P(Un)からP(C0)へ直接送らずに、隣り合わせでつながっている中継点同士暗号通信を行いながら、P(Un)からP(Ch)へ、P(Ch)からP(Ch−1)へ、という順でP(Un)へ送る(図7)。
【0049】
図7のフローチャートにおいて、P(R0)はP(Un)と同一のピアツーピア型匿名プロキシである。DATA(R0)は、図8のステップS55の公開鍵LP2(U0)で暗号化したパスワードPW(Un)に相当し、P(Un)でパスワードが一致しなかった場合にはそれを伝える内容に相当する。変数kはフローチャートを説明するための便宜上のもの(ステップS33)であり、どのピアツーピア型匿名プロキシにもこの変数は存在しない。P(Rk)とP(C0)が一致しない場合(ステップS34)、P(Rk)からP(Rk+1)へ公開鍵LP1(Rk+1)で暗号化し、DATA(R0)を送る(ステップS35)。ここでは、k=0の時、P(Rk)はP(Un)に、k>0のときP(Rk)はP(Ch+1−k)に、P(Rk+1)はP(Ch−k)に、公開鍵LP1(Rk+1)は公開鍵LP1(Ch−k)に相当する。その後、変数kに1を加算し、図7のステップS34へ飛ぶ(ステップS36)。P(Rk)とP(C0)が一致する場合(ステップS34)、図6のステップS20に飛ぶ。
【0050】
P(U0)は、P(Un)から送り返されてきたデータを秘密鍵LS2(U0)で復号化する(ステップS55)が、この時にデータを正しく復号化できなかったり、データがパスワードPW(Un)と異なる場合(ステップS20)には、データ送受信用匿名通信路においてP(U0)が指定したIPアドレスA(Un)のピアツーピア型匿名プロキシのP(Un)を通っていない、もしくはP(Un)かチェック用匿名通信路上にあるピアツーピア型匿名プロキシが正しく動作していないと判断できる。そのため、現在構築中の匿名通信路は信頼できないものとし、図6のステップS1へ飛び、今回使われたIPアドレス以外のピアツーピア型匿名プロキシを用いて、新たに匿名通信路の確保を行うようにする。P(U0)とP(Un)間で送受信したデータがパスワードPW(Un)で一致する場合(ステップS20)には、図6のステップS21へ飛ぶ。
【0051】
P(U0)は、変数mとnが−致するか確認する(ステップS21)。一致する場合には、データ送受信用匿名通信路上にあるピアツーピア型匿名プロキシを全てチェックし終えたことになり、図6のステップS23へ飛ぶ。逆に変数mとnが一致しない場合(ステップS21)には、データ送受信用匿名通信路上のピアツーピア型匿名プロキシ全てをチェックしていないことになり、P(U0)は変数nに1を加算し(ステップS22)、図6のステップS19へ飛びチェックを続ける。
【0052】
P(U0)において、ユーザU0から終了命令があるか確認する(ステップS23)。終了命令がある場合には、匿名通信路の確保を中断し終了する。終了命令が無い場合には、ユーザU0からwebブラウザなどでP(U0)に対してアクセスがあるか確認する(ステップS24)。ある場合には、図6のステップS26へ飛び、無い場合には図6のステップS25へ飛ぶ。そこで、ユーザU0から経路変更の命令があるか確認する(ステップS25)。経路変更の命令がある場合には、図6のステップS1に飛び、データ送受信用匿名通信路を再度確保する。経路変更の命令が無い場合には、図6のステップS23へ飛び、処理を繰り返す。
【0053】
ユーザU0はwebブラウザから、自分が立ち上げているピアツーピア型匿名プロキシのP(U0)へ接続する。そして、U0のwebブラウザからP(U0)へ暗号化せず、アクセスしたいURLなどを送る(ステップS26)。この場合、U0が操作しているパソコンとピアツーピア型匿名プロキシが存在するコンピュータは同一、もしくは同じノードのネットワーク上にあるため、暗号化しなくてもその内容を秘匿できる。同一ノードにない場合や、同じノードのネットワーク上でも暗号化を行いたい場合はこの限りでない。その後、P(U0)からP(Um)へ公開鍵LP1(Um)で暗号化し、ユーザU0から受け取ったURLを送る。P(Um)は受け取ったデータを秘密鍵LS1(Um)で復号化する(ステップS27)。このとき、P(U0)からP(m)へは直接送らずに、隣り合わせでつながっている中継点同士暗号通信を行いながら、P(U0)からP(U1)へ、P(U1)からP(U2)へ、という順でP(Um)へ送る(図7)。
【0054】
図7のフローチャートにおいて、P(R0)はP(U0)と同一のピアツーピア型匿名プロキシである。DATA(R0)は、図6のステップS27の公開鍵LP1(Um)で暗号化したユーザU0のリクエストURLに相当する(ステップS32)。変数kはフローチャートを説明するための便宜上のもの(ステップS33)であり、どのピアツーピア型匿名プロキシにもこの変数は存在しない。P(Rk)とP(Um)が一致しない場合(ステップS34)、P(Rk)からP(Rk+1)へ公開鍵LP1(Rk+1)で暗号化し、DATA(R0)を送る(ステップS35)。ここでは、P(Rk)はP(Uk)に、P(Rk+1)はP(Uk+1)に、公開鍵LP1(Rk+1)は公開鍵LP1(Uk+1)に相当する。その後、変数kに1を加算し、図7のステップS34へ飛ぶ(ステップS36)。P(Rk)とP(Um)が一致する場合(ステップS34)、図6のステップS28に飛ぶ。
【0055】
URLを受け取ったP(Um)は、そのURLのwebサーバSVへアクセスする(ステップS28)。そして、サーバSVからデータhtmlを受け取る(ステップS29)。この通信は暗号化されていないが、Webサーバ自体がSSLなどで暗号化されている場合はこの限りでない。
【0056】
P(Um)からP(U0)へ公開鍵LP2(U0)で暗号化し、SVから受け取ったデータhtmlを送る。P(U0)は受け取ったデータを秘密鍵LS2(U0)で復号化する(ステップS30)。このとき、P(Um)からP(U0)へは直接送らずに、隣り合わせでつながっている中継点同士暗号通信を行いながら、P(Um)からP(Um−1)へ、P(Um−1)からP(Um−2)へ、という順でP(U0)へ送る(図7)。
【0057】
図7のフローチャートにおいて、P(R0)はP(Um)と同一のピアツーピア型匿名プロキシである。DATA(R0)は、図6のステップS30の公開鍵LP2(U0)で暗号化したSVからのデータhtmlに相当する(ステップS32)。変数kはフローチャートを説明するための便宜上のもの(ステップS33)であり、どのピアツーピア型匿名プロキシにもこの変数は存在しない。P(Rk)とP(U0)が一致しない場合(ステップS34)、P(Rk)からP(Rk+1)へ公開鍵LP1(Rk+1)で暗号化し、DATA(R0)を送る(ステップS35)。ここでは、P(Rk)はP(Um−k)に、P(Rk+1)はP(Um−k−1)に、公開鍵LP1(Rk+1)は公開鍵LP1(Um−k−1)に相当する。その後、変数kに1を加算し、図7のステップS34へ飛ぶ(ステップS36)。P(Rk)とP(U0)が一致する場合(ステップS34)、図6のステップS31に飛ぶ。
【0058】
データを受け取ったP(U0)からユーザU0が使用しているwebブラウザへ暗号化せず、データhtmlを送る(ステップS31)。この場合、U0が操作しているパソコンとピアツーピア型匿名プロキシが存在するコンピュータは同一、もしくは同じノードのネットワーク上にあるため、暗号化しなくてもその内容を秘匿できる。同一ノードにない場合や、同じノードのネットワーク上でも暗号化を行いたい場合はその限りでない。このwebサーバSVとのデータ送受信を必要な分だけ、図6のステップS23からS31まで繰り返す。
【0059】
これらの図6における手順のユーザU0からサーバSVまでの匿名通信路のデータ決定、生成、送受信を表したものが図9である。コンピュータの項目には、データ送受信におけるユーザU0やピアツーピア型匿名プロキシ、サーバSVが記載されている。該当ステップでは、図6のフローチャートにおけるステップを示している。表の上から下に時間が経過する。なお、図6と図8のフローチャートはほぼ同しデータの流れとなるため、図8に対応した匿名通信路のデータ決定、生成、送受信図は省略する。
【0060】
また、図7におけるピアツーピア型匿名プロキシ間のデータ送受信を説明したものが図10である。コンピュータの項目には、ピアツーピア型匿名プロキシが記載されており、データはP(R0)からP(Rh)へ送信する場合の流れが記載されている。該当ステップでは、図7のフローチャートにおける手順を示している。表の上から下に時間が経過する。
【産業上の利用可能性】
【0061】
この手法を用いることにより、インターネットサービスプロバイダや特定の団体が用意する匿名プロキシを使用することなく、インターネットを利用する個人個人がプライバシーを保護するプログラムを立ち上げることが可能になる。
【0062】
現在ではプロバイダの管理により、国内における個人のアクセス情報は厳重管理されている。これは、特定の条件を満たさない限り、第三者が見ることはできない。しかし、現実にはプロバイダ側の管理ミスや、内外部からのハッキングによりこれらの個人情報が流出する危険性がある。
【0063】
これらの危険性を自ら守ることができるため、より手軽にプライバシーや秘密の保護が行えるようになる。使用者のインターネットにおけるデータ漏洩に対する不安を取り除き、インターネットの使用の活性化を促進させるものとなる。
【0064】
また、このシステムを利用することにより、インターネットを使用した内部告発などにおいて、告発者の身元を安全に保護することが可能になる。そのため、社会や企業内部で行われている違法行為の告発を促進し、健全な社会及び経済形成を構築することに一役買うことが可能となる。
【図面の簡単な説明】
【0065】
【図1】匿名通信路確定手順図である。(発明を実施するための最良の形態)
【図2】IPパケット構成の概念図である。(背景技術)
【図3】インターネット上の接続概念図である。(背景技術)
【図4】匿名プロキシを経由した接続の概念図である。(背景技術)
【図5】ピアツーピア型匿名プロキシの匿名通信の概念図である。(背景技術)
【図6】ピアツーピア型匿名プロキシ間の動作フローチャートである。(実施例)
【図7】ピアツーピア型匿名プロキシ間の動作フローチャートである。(実施例)
【図8】ピアツーピア型匿名プロキシ間の動作フローチャートである。(実施例)
【図9】図6におけるピアツーピア型匿名プロキシ間のデータ決定、生成、送受信図である。(実施例)
【図10】図7におけるピアツーピア型匿名プロキシ間のデータ決定、生成、送受信図である。(実施例)
【符号の説明】
【0066】
1 クライアント及び、ピアツーピア型匿名プロキシを立ち上げているコンピュータ
2 ピアツーピア型匿名プロキシAとピアツーピア型匿名プロキシBの接続
3 ピアツーピア型匿名プロキシBとピアツーピア型匿名プロキシCの接続
4 ピアツーピア型匿名プロキシAとピアツーピア型匿名プロキシDの接続
5 ピアツーピア型匿名プロキシDとピアツーピア型匿名プロキシEの接続
6 ピアツーピア型匿名プロキシEとピアツーピア型匿名プロキシBの接続
7 ピアツーピア型匿名プロキシAとピアツーピア型匿名プロキシFの接続
8 ピアツーピア型匿名プロキシFとピアツーピア型匿名プロキシGの接続
9 ピアツーピア型匿名プロキシGとピアツーピア型匿名プロキシCの接続
10 ピアツーピア型匿名プロキシCとhttpサーバの接続
20 クライアントとhttpサーバの接続
21 匿名プロキシA
22 匿名プロキシCとhttpサーバの接続

【特許請求の範囲】
【請求項1】
ユーザが立ち上げている、自分及び他人が共同で使用できる匿名プロキシの性質を持った専用プログラム(以後、ピアツーピア型匿名プロキシと記載)から、他人が立ち上げているピアツーピア型匿名プロキシを用いて、サーバとのデータ送受信用匿名通信路を仮に構築し、各々の中継点となるピアツーピア型匿名プロキシからパスワードを受け取り、そのパスワードをピアツーピア型匿名プロキシで構築された別ルートのチェック用匿名通信路を通じて、仮に構築したデータ送受信用匿名通信路上のピアツーピア型匿名プロキシに該当すると思われるピアツーピア型匿名プロキシと送受信することでパスワード認証を行い、仮に構築したデータ送受信用匿名通信路上にあるピアツーピア型匿名プロキシを検証する工程と、上記パスワードを交換するために多重にデータを暗号化する工程を備えた通信方法。
【請求項2】
請求項1のサーバとのデータ送受信用匿名通信路の仮構築を行わず、データ送受信用匿名通信路を構築するピアツーピア型匿名プロキシの認証を、データ送受信用匿名通信路とは別ルートのピアツーピア型匿名プロキシで構築されたチェック用匿名通信路を用いて1つずつ検証し、データ送受信用匿名通信路を構築していく工程を備えた通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2007−28606(P2007−28606A)
【公開日】平成19年2月1日(2007.2.1)
【国際特許分類】
【出願番号】特願2006−184918(P2006−184918)
【出願日】平成18年6月7日(2006.6.7)
【分割の表示】特願2004−77168(P2004−77168)の分割
【原出願日】平成16年2月19日(2004.2.19)
【出願人】(504106000)
【出願人】(504209460)
【Fターム(参考)】