実施の形態1.
以下、図面を参照して本発明の実施の形態1について説明する。
(構成の説明)
まず、図1乃至図8を参照して、本実施の形態1に係る通信システム1の構成について説明する。図1は、本実施の形態1に係る通信システム1を示す全体構成図である。通信システム1は、匿名化装置100と、アンカーサーバ200と、通信ノード300と、サーバ400と、を備えている。通信ノード300は、ローカルネットワーク500を介して匿名化装置100に接続される。また、匿名化装置100と、アンカーサーバ200と、サーバ400と、はネットワーク600を介してそれぞれ接続される。
匿名化装置100は、(A)受信したパケットのセッションを識別する機能と、(B)セッション単位で、パケットの送信元アドレスを、アンカーサーバ200から取得したプレフィクス群から1つ選択して生成したアドレスに書き換える機能と、(C)書き換えたアドレスを用いて到達できるアンカーサーバ200に、パケットをトンネリングする機能と、を備えている。尚、以下では、通信ノード200が実施する通信に関して、通信の一連のまとまりである単位をセッションと称する。
図2は、匿名化装置100を示す構成図である。図に示すように、匿名化装置100は、インタフェース110Aと、インタフェース110Bと、匿名化制御手段120と、パケット処理手段130と、情報記録装置140と、を備えている。
インタフェース110Aは、ローカルネットワーク500に接続され、ローカルネットワーク500に接続した他のノード(通信ノード300など)との間でパケットの送受信を行うためのインタフェースである。インタフェース110Aから入力されたパケットは、匿名化制御手段120に出力される。また、パケット処理手段130がローカルネットワーク500に接続したノード宛に送信したパケットは、インタフェース110Aを介してローカルネットワーク500に送出される。
インタフェース110Bは、ネットワーク600に接続され、ネットワーク600に接続した他のノード(アンカーサーバ200など)との間でパケットの送受信を行うためのインタフェースである。インタフェース110Bから入力されたパケットは、パケット処理手段130に出力される。また、パケット処理手段130がネットワーク600に接続したノードに送信したパケットは、インタフェース110Bを介してネットワーク600に送出される。
匿名化制御手段120は、匿名性確保要否判定手段121と、セッション管理手段122と、匿名アドレス選択手段123と、匿名アドレス生成手段124と、を備えている。
匿名性確保要否判定手段121は、インタフェース110Aから入力されたパケットの情報を読み取り、読み取った情報に基づいて、入力されたパケットに対して匿名性を確保する必要があるか否かを判定する機能を備えている。尚、本実施の形態1においては、入力されたパケットの情報として、送信元アドレスと、宛先アドレスと、送信元ポート番号と、宛先ポート番号と、プロトコル種別と、を用いて説明するが、他の情報を用いるものとしても良い。
匿名性確保要否判定手段121は、匿名性の要否を判定する場合に、(A)情報記録装置140に記録された匿名化ポリシテーブルにアクセスする機能と、(B)アクセスした匿名化ポリシテーブルを使用して匿名化の要否を判定する機能と、(C)判定した匿名化の要否情報をセッション管理手段122に出力する機能と、を備えている。
図3は、匿名化ポリシテーブルの一例を示す表である。図に示すように、匿名化ポリシテーブルは、パケットに含まれる幾つかの情報と、匿名化の要否の情報とが対応付けられたテーブルである。匿名化ポリシテーブルは、ユーザが事前に設定することを想定するが、ネットワーク上のノード(アンカーサーバ200など)が動的に設定するものとしても良い。尚、図において、匿名化ポリシテーブルの"any"は、対応する項目が何であっても良いことを示し、匿名化の要否の判定に際しては、エントリ番号(No)の小さい値から順に評価する。
図2に戻って説明を続ける。セッション管理手段122は、セッションの開始及び終了を判定する機能と、情報記録装置140に記録されたセッション管理テーブルを管理する機能と、を備えている。本実施の形態1では、セッションとしてTCPセッションを想定しており、TCPセッションは、宛先アドレスと、送信元アドレスと、宛先ポート番号と、送信元ポート番号と、に基づいて識別される。尚、TCPセッションに限定されず、他の単位をセッションとみなしても良い。
セッション管理手段122は、匿名性確保要否判定手段121から匿名化が必要であるとの情報が入力された場合に、インタフェース110Aから入力されたパケットを匿名化確保の対象のパケットとして、セッション管理処理を実施する。ここで、セッション管理とは、セッションの開始及び終了を判定し、さらに、匿名アドレス選択手段123と匿名アドレス生成手段124が生成した匿名アドレスを使用して、情報記録装置140に記録されたセッション管理テーブルのエントリ作成及び削除と、内容の更新とを実施することをいう。図4に、セッション管理テーブルの一例を示す。以下、セッション管理手段122が行うセッション管理処理について、より具体的に説明する。
まず、本実施の形態1では、セッションとしてTCPセッションを想定しているため、セッション管理手段122は、TCPのSYNパケットを用いてセッションの開始を検出することができる。
次に、セッション管理手段122は、セッションの開始を検出した場合には、TCPセッションを識別するための情報を検索キーとしてセッション管理テーブルを検索し、同一のセッションが既に存在するか否かを検索する。検索の結果、同一のセッションが存在しなかった場合には、セッション管理手段122は、新規セッションの開始であるものと判定し、匿名アドレス選択手段123に匿名アドレスの割当てを要求する。
次に、セッション管理手段122は、匿名アドレスの割当て要求の結果と、匿名アドレスと、匿名アドレスを用いて到達性のあるアンカーサーバ200のアドレスと、を取得した場合に、受信パケットから抽出した宛先アドレスと、送信元アドレスと、宛先ポート番号と、送信元ポート番号と、プロトコル種別と、匿名アドレスと、匿名アドレスを用いて到達性があるアンカーサーバ200のアドレスと、を用いて新たなエントリを生成し、生成したエントリをセッション管理テーブルに追加する。また、セッション管理手段122は、予め決定しておいた有効時間を現在時刻に加算した時刻を、追加するエントリの失効時刻として設定する。
そして、セッション管理手段122は、受信したパケットが、セッション管理テーブルにエントリを有するセッションに属するパケットである場合には、対応するエントリの失効時刻の更新を行う。失効時刻の更新方法としては、例えば、最初の失効時刻を算出する際に使用したのと同じ有効時間を、パケットを受信した時刻に加算することで、更新後の失効時刻を求めるものとしても良いし、これに限定されず、他の異なる時間を受信時刻に加算するようにしても良い。
また、セッション管理手段122は、セッションの終了を検出して、セッション管理テーブルから対応するエントリを削除する。例えば、TCPセッションの場合には、FINパケット、ACK+FINパケット、FINパケットという一連のTCPセッションの終了手順や、RSTパケットを検出することで、セッションの終了の判定を行うことができる。FINパケットなどを用いてTCPセッションの終了判定を行う場合には、一連のパケットの到着を記憶しておく必要があるが、TCPセッションの終了判定処理自体は、TCPを処理するスタックはもとより、広く適用された一般的な技術である。このため、TCPセッションの終了判定処理については、その詳細な構成及び動作の説明を省略する。
さらに、セッション管理手段122は、セッション管理テーブルを定期的に監視して、失効時刻が現在時刻よりも過去となったエントリを、セッション管理テーブルから削除する。
図2に戻って説明を続ける。匿名アドレス選択手段123は、セッション管理手段122から匿名アドレスの割当てを要求された場合に、通信ノード300のアドレスの匿名性を確保するためのプレフィクスを決定する。そして、匿名アドレス選択手段123は、決定したプレフィクスを基にして、匿名アドレス生成手段124に匿名アドレスの生成を依頼することで、匿名アドレスを取得する。匿名アドレス選択手段123は、セッション管理手段122からの匿名アドレス割当て要求への応答として、匿名アドレスと、匿名アドレスを用いて到達性のあるアンカーサーバ200のアドレスと、をセッション管理手段122に応答する。
匿名アドレス選択手段123は、匿名アドレスの基となるプレフィクスを決定するに際して、情報記録装置140に記録されたプレフィクス情報テーブルの情報を用いる。以下、プレフィクス情報テーブルについて、より具体的に説明する。
図5は、プレフィクス情報テーブルの一例を示す表である。図に示すように、プレフィクス情報テーブルは、アンカーサーバアドレスと、プレフィクスセット番号と、プレフィクスと、IID(Interface Identifier)Keyと、割当状態と、割当終了時刻と、失効時刻と、についての情報を有している。尚、図に示したプレフィクス情報テーブルは一例であり、上述した項目の一部を含む構成や、他の情報を含む構成としても良い。以下、プレフィクス情報テーブルが含む各情報について説明する。
アンカーサーバアドレスは、匿名アドレスを用いて到達性のあるアンカーサーバ200のアドレスである。また、アンカーサーバアドレスは、匿名アドレスを生成する際に使用するプレフィクスについて、プレフィクスの基本的な取得先としたアンカーサーバ200のアドレスである。尚、アンカーサーバ200のこれら2種類のアドレスを区別する場合には、個々のアドレスを記録できるようにしても良い。
また、図5に示すプレフィクス管理テーブルでは、2つのアンカーサーバ200のアドレスが設定された例を示しているが、設定されるアンカーサーバ200のアドレスは1つであっても良いし、2つより多くのアンカーサーバ200のアドレスを使用するものとしても良い。1台のアンカーサーバ200を用いて匿名化装置100に複数のプレフィクスを割当てることができるが、割り当てるプレフィクスはアンカーサーバ200に到達性を有するものである必要がある。このため、1台のアンカーサーバ200が提供可能なプレフィクスのバリエーションには限界がある。また、1台のアンカーサーバ200では、耐障害性の面でも問題がある。従って、より高い匿名性や耐障害性を確保するとの観点から、複数のアンカーサーバ200を適用するのが好適である。
プレフィクスセット番号は、アンカーサーバ200から取得したプレフィクス群に割当てられた、プレフィクスセット番号である。尚、プレフィクスセット番号は必ずしも必要ではないが、アンカーサーバ200に新しいプレフィクス群を割当ててもらう場合に、既に取得しているプレフィクス群が提示される際は、プレフィクスセット番号を適用することで、匿名化装置100が、アンカーサーバ200に提示する際の情報量を削減することができる。換言すると、匿名化装置100は、既に取得したプレフィクス群を個別にアンカーサーバ200に通知する必要が無く、プレフィクスセット番号のみを送信するだけで良い。
プレフィクスは、アンカーサーバ200から取得したプレフィクス情報である。本実施の形態1では、匿名アドレス生成手段124が、アンカーサーバ200から取得したプレフィクスとIID(Interface Identifier)とを合わせて匿名アドレスを生成するものとして説明するが、匿名アドレスをアンカーサーバ200から直接取得するものとしても良い。匿名アドレスをアンカーサーバ200から直接取得する場合には、後述するIID Keyは必要としない。尚、IPv6アドレスは、上位64bitのプレフィクス部と下位64bitのIID部を合わせて、128bitのアドレスとなる。
IID Keyは、IPv6アドレスのIID部を生成する際に使用するKey情報である。尚、IID部の生成手順の詳細については後述する。
割当状態は、特定のセッションにプレフィクスが割当て済みであるか否かを示す。割当状態が'Y'の場合には割当て済みであることを示し、'N'の場合には未割当てであることを示す。
割当終了時間は、セッションが終了して、セッションに割当てたプレフィクスが開放された時刻を示す。
失効時刻は、プレフィクスが無効となる時刻を示す。特定のセッションに割当てるプレフィクスを選択する際には、失効時刻が現在の時刻よりも未来の時刻であるプレフィクスを選択する。特定のセッションに割当て中のプレフィクスの失効時刻が経過した場合に、プレフィクスを無効にしてしまうと通信途絶が発生する。このため、特定のセッションに割当て中のプレフィクスは、割当てが完了するまでの間は無効としない。尚、通信途絶しても良い場合には、割当て中か否かに関わらず無効にするものとしても良い。
匿名アドレス選択手段123は、セッション管理手段122から匿名アドレスの割当てを要求された場合に、プレフィクス情報テーブルに記録されたエントリのうち、割当状態が'N'(即ち、未割当て)であり、かつ、失効時刻に設定された時刻が現在の時刻よりも未来であるエントリを選択候補として、この選択候補のエントリから適切なプレフィクスを1つ選択する。尚、適切なプレフィクスの選択手順の詳細については後述する。
匿名アドレス選択手段123は、適切な1つのプレフィクスを選択した後に、選択したプレフィクスとエントリのIID Key情報とを匿名アドレス生成手段124に出力して、その結果として、匿名アドレスを取得する。取得した匿名アドレスは、セッション管理手段122に応答される。同時に、匿名アドレス選択手段123は、プレフィクス情報テーブルにおいて、選択したプレフィクスのエントリを割当て済みに更新する(即ち、割当状態を'Y'にする)。尚、アンカーサーバ200から取得するプレフィクスは、128bitのアドレスそのものとして取得が可能であるが、プレフィクスを128bitのアドレスそのものとして取得する場合には、匿名アドレス生成手段124の機能は用いずに、アンカーサーバ200から割当てられたアドレスをそのまま応答する。
また、匿名アドレス選択手段123は、プレフィクスの選択を試行した結果、適切なプレフィクスを発見できなかった場合に、新たなプレフィクスを要求するためのプレフィクス要求信号を、アンカーサーバ200に送信する機能を備えている。プレフィクス割当要求信号には、割当て要求先とするアンカーサーバ200が管理するプレフィクスであり、かつ、既に保持しているプレフィクスを提示するための情報を格納する。この情報としては、通信帯域の効率を考慮し、プレフィクスセット番号を使用する。尚、プレフィクスセット番号を使用せずに、個別のプレフィクスを直接格納するものとしても良い。
また、匿名アドレス選択手段123は、要求するプレフィクスセットの数(或いは、プレフィクスの数)と、匿名化装置100のアドレスと、をプレフィクス割当要求信号に格納する。匿名化装置100のアドレスは、プレフィクス割当要求信号の送信元アドレスにも設定されるため、必ずしも別途格納する必要はないが、送信元アドレスとは異なるアドレスに設定が可能である場合などには、必要に応じて格納するものとする。また、上述した情報以外の情報をプレフィクス割当要求信号に格納するものとしても良い。
匿名アドレス選択手段123は、プレフィクス割当要求信号の応答として、アンカーサーバ200から応答されたプレフィクス割当応答信号を受信した場合には、受信したプレフィクス割当応答信号に含まれる情報を使用して、プレフィクス情報テーブルにエントリを追加する。
プレフィクス割当応答信号には、割当られたプレフィクスセット番号と、プレフィクスセット番号に属するプレフィクスと、プレフィクスに関連付けられたIID Key及び失効時刻と、アンカーサーバ200のアドレスと、が格納される。アンカーサーバ200のアドレスは必ずしも必要ではないが、例えば、匿名化アドレスを用いて到達性のあるアンカーサーバ200のアドレスと、プレフィクス割当要求信号の送信先としたアンカーサーバ200のアドレスと、が異なる場合などには必要となる。また、上述した情報以外の情報をプレフィクス応答信号に格納するものとしても良い。
尚、プレフィクス割当要求信号の送信先とするアンカーサーバ200のアドレスは、事前に設定されることを想定するが、他の方法を用いて取得するものとしても良い。また、アンカーサーバ200のアドレスは、複数のアドレスが設定可能であることを想定するが、複数のアドレスを設定する場合には、プレフィクス割当要求信号の送信先とするアンカーサーバ200として、例えば、複数のアンカーサーバ200のアドレスのうちからランダムに1つ選択する方法が考えられる。
尚、プレフィクス割当要求信号及びプレフィクス割当応答信号は、秘匿性や完全性といったセキュリティが確保されることが必要である。セキュリティ確保手段としては、IPsecなどの一般的な技術を使用することができる。
図2に戻って説明を続ける。匿名アドレス生成手段124は、匿名アドレス選択手段123からの依頼に応じて匿名アドレスを生成する機能を備えている。匿名アドレス生成手段124は、生成した匿名アドレスを、匿名アドレス選択手段123に応答する。以下、匿名アドレス生成手段124が行う匿名アドレスの生成手順を例示する。尚、以下の例では、匿名アドレス生成手段124は、匿名アドレスを生成する際に、匿名アドレス選択手段123から出力されたプレフィクス情報やIID Keyを使用する。また、匿名アドレス生成手段124は、匿名化制御手段120に入力されたパケットの送信元ポート番号についても使用する。
まず、匿名アドレス生成手段124は、以下の式1を用いてKeyを算出する。尚、式1においては、IID KeyをIID_keyとして表示する。
Key=Extract(n,H(IID_key,src_port|FIXED_DATA))・・・(式1)
式1において、H(k,x)は、キーkを使用してデータxにハッシュ処理を施す処理を示す。ハッシュ処理アルゴリズムとしては、例えば、HMAC−MD5や、HMAC−SHA−1などを使用することができる。勿論、他のハッシュアルゴリズムを使用するものとしても良い。
src_portは、パケットの送信元ポート番号を示す。FIXED_DATAは、任意の固定データを示す。記号'|'は、ここでは、記号の前後の2つのデータをそれぞれバイト列の情報であるとみなして、それら2つのデータを連結することを意味する。
Extract(n,x)は、データxの上位からnビット分のデータを抜き出す処理を示す。nの値は、ハッシュアルゴリズムとしてHMAC−MD5を適用する場合には128とし、HMAC−SHA−1を適用する場合には160とすると好適であるが、異なる値にしても良い。
式1の処理では、セッション毎(即ち、送信ポート番号が変わる度)にKeyの値を変更する。これにより、仮に同じIID Keyを使う場合においても、異なる匿名アドレスを生成できるようにするために、式1での処理を実施する。従って、別途IID Keyを更新する仕組みを適用した場合などには式1の計算を行わずに、IID KeyをそのままKeyとして使用するものとしても良い(即ち、Key=IID_key)。
次に、匿名アドレス生成手段124は、以下の式2を用いて匿名アドレスのIID部(即ち、IPv6アドレスの下位64bit部分)を算出する。
DerivedIID=Extract(64,E(Key,CPE_ID))・・・(式2)
式2において、Keyは式1で求めた値を示す。CPE_IDは、匿名化装置100の識別子を示す。CPE_IDとしては、アンカーサーバ200を管理するオペレータから割当てられた識別番号或いは識別文字列の使用を想定する。匿名化装置100のインタフェース110Bにオペレータがアドレスを割当てる場合には、割り当てたアドレスをCPE_IDとして使用するものとしても良い。
最後に、匿名アドレス生成手段124は、式2で求めたDerivedIIDと、匿名アドレス選択手段123から出力されたプレフィクス情報と、を結合して匿名アドレスを構成する。
ここで、重要なポイントは、匿名アドレスと、匿名アドレスを割当てた匿名化装置100と、の対応関係を示す情報が存在しない場合において、匿名アドレスやポート番号といったサーバ400の管理者が取得し得る情報(即ち、サーバ400が受信したパケットに含まれる情報)を用いて、アンカーサーバ200を管理するオペレータが、DerivedIIDを算出できるようにすることである。
この結果、例えば、匿名化装置100とアンカーサーバ200の機能を用いて匿名通信を行う通信ノード300が、サーバ400に不正アクセスを行った場合には、アンカーサーバ200を管理する(即ち、匿名性確保サービスを実施する)オペレータに対して、不正アクセスのログに残された匿名化アドレスや、(送信元ポート番号を使用する場合の)送信元ポートを通知することで、オペレータは、不正アクセスを実施した通信ノード300が接続する匿名化装置100を割出すことができる。
従って、本実施の形態1に係る通信システム1によれば、通信ノード300の通信の匿名性を確保することができると共に、さらに、不正アクセスなどの問題が発生した場合において、匿名アドレス(及び送信元ポート番号)を用いた追跡性についても確保することが可能となる。
尚、匿名アドレスの算出方法は上述した方法に限定されず、他の異なる手段を用いて匿名アドレスを算出するものとしても良い。また、上述したように、匿名アドレスをアンカーサーバ200から直接取得することができる場合には、匿名アドレス生成手段124が匿名アドレスを生成しなくとも良い。また、匿名アドレスのIID部の算出方法については、匿名化装置100は、アンカーサーバ200から取得した情報(例えばIID_key)を用いずに、匿名化装置100自らがIID部を算出するものとしても良い。従って、匿名化装置100は、アンカーサーバ200から匿名アドレスを直接取得する場合には、匿名アドレス生成手段124を備えていなくとも良い。また、匿名化装置100が匿名アドレス生成手段124を備えて自ら匿名アドレスを生成する場合には、プレフィクスのみをアンカーサーバ200から取得するものとしても良いし、プレフィクスとIID部を生成するための情報(例えばIID_key)とを取得するものとしても良い。
図2に戻って説明を続ける。パケット処理手段130は、インタフェース110Aで受信されたパケットが匿名化制御手段120を経由して入力された場合に、入力されたパケットの宛先アドレスと、送信元アドレスと、宛先ポート番号と、送信元ポート番号と、を検索キーとして、情報記録装置140に保持されたセッション管理テーブルを検索する。検索の結果、該当するエントリを発見した場合には、パケット処理手段130は、入力されたパケットの送信元アドレスを、検索されたエントリに設定された匿名アドレスに書き換える処理を実施する。
そして、パケット処理手段130は、匿名アドレスに書き換えたパケットについてカプセル化を実施する。カプセル化の際には、外側のIPヘッダの送信元アドレスとして、匿名化装置100自身の有するアドレスを使用し、宛先アドレスとして、検索されたエントリのアンカーサーバ200のアドレスを使用する。カプセル化されたパケットは、インタフェース110Bを経由してネットワーク600へと送出される。尚、匿名化装置100自身の有するアドレスとしては、インタフェース110Bに割当てられたIPアドレスを想定するが、このアドレスに限定されるものではない。
さらに、パケット処理手段130は、インタフェース110Bからパケットが入力された場合に、入力されたパケットがカプセル化されたパケットであるか否かをチェックする。そして、カプセル化されたパケットであった場合には、パケット処理手段130は、外側IPヘッダの宛先アドレス及び送信元アドレスと、内側IPヘッダの宛先アドレス及び送信元アドレスと、宛先ポート番号と、送信元ポート番号と、を検索キーとして、情報記録装置140に記録されたセッション管理テーブルを検索する。
パケット処理手段130は、インタフェース110Bから受信したパケットに対して検索を実施する場合には、以下の対応を用いて検索を行う。
受信パケットの外側IPヘッダ 宛先アドレス
⇒匿名化装置100のアドレス
受信パケットの外側IPヘッダ 送信元アドレス
⇒セッション管理テーブル アンカーサーバアドレス
受信パケットの内側IPヘッダ 宛先アドレス
⇒セッション管理テーブル 匿名アドレス
受信パケットの内側IPヘッダ 送信元アドレス
⇒セッション管理テーブル 宛先アドレス
受信パケットの宛先ポート番号
⇒セッション管理テーブル 送信元ポート番号
受信パケットの送信元ポート番号
⇒セッション管理テーブル 宛先ポート番号
パケット処理手段130は、上記の対応関係を用いてセッション管理テーブルを検索した結果、該当するエントリを発見した場合には、まず、デカプセル化処理を実施する。そして、デカプセル化処理に続いて、パケット処理手段130は、内側のIPヘッダの宛先アドレスを、匿名アドレスから、検索されたエントリの送信元アドレスとして記録されたアドレスへと書き換える。換言すると、パケット処理手段130は、パケットのアドレスを、匿名アドレスから通信ノード300のアドレスへと戻す処理を実施する。さらに、パケット処理手段130は、宛先アドレスが通信ノード300のアドレスへと戻されたパケットを、インタフェース110Aから送出する。この結果、パケット処理手段130が送出したパケットを、ローカルネットワーク500に接続した通信ノード500が受信する。
図2に戻って説明を続ける。情報記録装置140は、図3に示した匿名化ポリシテーブルと、図4に示したセッション管理テーブルと、図5に示したプレフィクス情報テーブルと、を記録した記録装置である。
図1に戻って説明を続ける。アンカーサーバ200は、匿名化装置100からのプレフィクス割当要求を受信した場合に、要求に応じてプレフィクスを匿名化装置100に割当て、割当てたプレフィクスを格納したプレフィクス応答信号を、匿名化装置100に応答する機能を備えている。
また、アンカーサーバ200は、トンネリングを用いて匿名化装置100からアンカーサーバ200に転送されたパケットを、デカプセル化する機能を備えている。ここで、デカプセル化されたパケットは、一般的なルータと同様の処理を用いて、転送処理される。また、アンカーサーバ200は、匿名アドレス宛に送信されたパケットを受信した場合には、受信したパケットをカプセル化して匿名化装置100に転送する機能を備えている。
図6は、アンカーサーバ200を示す構成図である。アンカーサーバ200は、インタフェース210と、プレフィクス割当手段220と、転送手段230と、プレフィクス記録装置240と、転送情報記録装置250と、を備えている。
インタフェース210は、ネットワーク600に接続され、ネットワーク600に接続された他のノード(匿名化装置100やサーバ400など)とパケットの送受信を行う機能を備えている。インタフェース210は、受信したパケットがプレフィクス割当要求信号であった場合、プレフィクス割当手段220にパケットを出力し、それ以外のパケットであった場合には、転送手段230に出力する。また、プレフィクス割当手段220から応答されたプレフィクス割当応答信号や、転送手段からネットワーク600へと送られるパケットは、インタフェース210を介してネットワーク600へと送信される。
プレフィクス割当手段220は、プレフィクス割当要求信号を受信した場合に、(A)プレフィクス記録装置240に記録された貸出しプレフィクステーブルにアクセスする機能と、(B)プレフィクス割当要求信号に格納された情報に基づき適切なプレフィクスを選択する機能と、(C)プレフィクスセット番号と、プレフィクスセットに属するプレフィクス群と、各プレフィクスに関連付けられたIID Keyと、失効時刻を格納したプレフィクス割当応答信号と、を応答する機能と、を備えている。
プレフィクス割当要求信号には、匿名化装置100が既に保持しているプレフィクスの情報として、1つ乃至複数のプレフィクスセット番号と、要求するプレフィクスセットの数と、が格納されることを想定する。尚、匿名化装置100が保持しているプレフィクスの情報を示す場合には、プレフィクスセットとしてではなく、プレフィクス自体を格納するものとしても良い。また、要求するプレフィクスの数についても、プレフィクスセットの数ではなく、プレフィクス自体の数としても良い。さらに、プレフィクス割当要求信号には、上述した情報の一部のみを含むものとしても良いし、上述した情報を全く含まない構成としても良い。
プレフィクス割当手段220は、匿名化装置100に割当てるプレフィクスを選択する場合に、プレフィクス割当応答信号に格納されたプレフィクスセット或いはプレフィクスに該当しないプレフィクスを選択する。ここで、選択するプレフィクスの数は、プレフィクスセット或いはプレフィクスを要求された数とする。
図7は、貸出しプレフィクステーブルを示す表である。図に示すように、貸出しプレフィクステーブルは、プレフィクスセット番号と、プレフィクスと、プレフィクスに対応付けられたIID Keyの情報と、を含む。尚、貸出しプレフィクステーブルは、これらの情報に加えて、他の情報を含むものとしても良い。例えば、本実施の形態1では、失効時刻を算出する際に、プレフィクスに関わらず、事前に決められた有効時間を現在時刻に加えることで失効時刻を算出するものと想定するが、プレフィクス毎に異なる有効時間を設ける場合には、各プレフィクスに対応した有効時間を貸し出しプレフィクステーブルに含めるものとして良い。
図6に戻って説明を続ける。転送手段230は、インタフェース210から入力されたデータパケットを調査し、カプセル化されたパケットであった場合には、さらに、外側IPヘッダの送信元アドレス及び宛先アドレスと、内側IPヘッダの送信元アドレスと、を読み出す。そして、転送手段230は、外側IPヘッダの宛先アドレスが、アンカーサーバ200自身のアドレスと一致することを確認した後に、さらに、内側IPヘッダの送信元アドレスのプレフィクス部が、プレフィクス記録装置240に記録された貸出しプレフィクステーブルに存在するか否かの確認を行う。
そして、転送手段230は、外側IPヘッダの宛先アドレスがアンカーサーバ200のアドレスと一致し、かつ、内側IPヘッダの送信元アドレスのプレフィクス部が貸出しプレフィクステーブルに存在する場合には、入力されたパケットの外側IPヘッダの送信元アドレスと、内側IPヘッダの送信元アドレスと、の対応(即ち、匿名化装置100のアドレスと匿名アドレスとの対応)を保持するために、転送情報記録装置250に記録された転送テーブルにエントリを追加する。ここで、転送手段230は、エントリを追加する際に、それら2つのアドレスの対応関係が失効する時刻についても記録する。尚、同じエントリが転送テーブルに既に存在する場合には、後述するように、失効時刻のみを更新する。
図8は、転送テーブルを示す表である。転送テーブルの失効時刻には、事前に決定しておいた有効時間をエントリ作成時の時刻に加算した時刻が設定される。この失効時刻は、作成されたエントリに対応するパケット(即ち、匿名化装置100からトンネリングされたパケットや、匿名アドレス宛に送信されたパケットなど)を処理する都度、更新される。
転送手段230は、転送テーブルへのエントリの追加或いは更新を行った後に、入力されたパケットをデカプセル化して、一般的なIPルーティングを用いた、転送処理を実施する。
また、転送手段230は、インタフェース210から入力されたデータパケットを調査し、カプセル化されていないパケットであった場合には、さらに、転送情報記録装置250に記録された転送テーブルのエントリについて、入力されたパケットのIPヘッダの宛先アドレスと一致する匿名アドレスが設定されたエントリが存在するか否かを検索する。検索の結果、一致するエントリを発見した場合には、入力されたパケットについてカプセル化処理を実施する。カプセル化処理の際には、外側IPヘッダの宛先アドレスには、一致したエントリの匿名化装置100のアドレスが使用され、外側IPヘッダの送信元アドレスには、アンカーサーバ200自身のアドレスが使用される。カプセル化処理に続いて、転送手段230は、カプセル化後のパケットに対して、一般的なIPルーティングを使用した、転送処理を実施する。
尚、本実施の形態1におけるアンカーサーバ200は、プレフィクスを割当てる機能と、匿名アドレスからのパケットや匿名アドレス宛のパケットを転送する機能と、を備えるものとして説明したが、これら2つの機能を異なるサーバでそれぞれ実施する構成としても良い。各機能を異なるサーバで実施する構成とする場合には、プレフィクスの割当機能を担うサーバが、インタフェース210と、プレフィクス割当手段220と、プレフィクス記録装置240と、を備える構成とし、匿名アドレスを有するパケットを転送する機能を担うサーバが、インタフェース210と、転送手段230と、転送情報記録装置250と、を備える構成とすれば良い。
図6に戻って説明を続ける。プレフィクス記録装置240は、図7に示した貸出しプレフィクステーブルを保持する記録装置である。
転送情報記録装置250は、図8に示した転送テーブルを保持する記録装置である。
図1に戻って説明を続ける。通信ノード300は、匿名化装置100を介して、後述するネットワーク600上の他のノードにアクセスすることができる。尚、通信ノード300は、IPに従った通信機能を備えた一般的な通信ノードであるため、その詳細な構成及び動作の説明を省略する。
サーバ400は、WEBサービスなどを提供するサーバである。サーバ400は、IPに従った通信機能を備えた一般的なサーバであるため、その詳細な構成及び動作の説明を省略する。
ローカルネットワーク500は、匿名化装置100と通信ノード300とが接続されたネットワークである。ローカルネットワーク500としては、企業内ネットワークや家庭内ネットワークといった、いわゆるLAN(Local Area Network)を想定するが、LANに限定されず、他のネットワークでも良い。
ネットワーク600は、匿名化装置100と、アンカーサーバ200と、サーバ400と、が接続するネットワークである。ネットワーク600は、ISP(Internet Service Provider)が提供するネットワークやインターネットを含んだ広域ネットワークである。
尚、上述したインタフェース110Aと、インタフェース110Bと、インタフェース210と、は、例えば、LANカードなどのNIC(Network Interface Card)と、NICを動作させるソフトウェア(ドライバ)と、から構成することができる。
尚、上述した匿名化制御手段120と、パケット処理手段130と、プレフィクス割当手段220と、転送手段230と、は、いずれもソフトウェアを用いてその機能を実現することができる。さらに、これら手段のいずれか一部或いは全てを、ハードウェアを用いて構成することも可能である。
また、上述した情報記録装置140と、プレフィクス記録装置240と、転送情報記録装置250と、は、情報を記録可能な装置(半導体メモリやハードディスクドライブなど)を用いて構成することができる。
尚、図1乃至図8に示した各手段や装置の構成は例示にすぎず、本発明の趣旨を逸脱しない範囲で他の構成を用いて実現するものとしても良い。
(動作の説明)
次に、図9乃至図18を参照して、本実施の形態1に係る通信システム1の動作について説明する。図9乃至図12は、通信ノード300からパケットを受信した場合の、匿名化装置100の動作を示すフローチャートである。図13及び図14は、アンカーサーバ200の動作を示すフローチャートである。図15乃至図18は、通信ノード300がサーバ400との通信を開始してから完了するまでの間の一連の処理の流れを説明するための図である。
図9において、まず始めに、匿名化装置100の匿名化制御手段120は、通信ノード300が送信したパケットを、インタフェース110Aを介して受信する(ステップS101)。そして、匿名性確保要否判定手段121は、受信パケットに対して匿名性を確保する必要があるか否かを判定する(ステップS102)。ここで、匿名性が必要と判定された場合(即ち、'Y'の場合)には、ステップS103へと進む。一方で、匿名性を確保する必要がないと判定された場合(即ち、'N'の場合)には、ステップS110へと進む。
次に、セッション管理手段122は、ステップS103で匿名性が必要と判定された場合には、受信パケットの内容をチェックし、セッションの開始であるか否かを判定する(ステップS103)。セッションがTCPセッションである場合には、上述したとおり、パケットがSYNパケットであるか否かに応じてセッションの開始を判定することができる。また判定の際に、セッション管理手段122は、セッション管理テーブルに、セッションを一意に識別するための情報が一致するエントリが存在しないことも確認する。重複したエントリが存在する場合には、セッション管理手段122は、セッションの開始であるものとは判定しない。ここで、セッションの開始であると判定された場合(即ち、'Y'の場合)には、ステップS104へと進む。一方で、セッションの開始でないと判定された場合(即ち、'N'の場合)には、ステップS107へと進む。
次に、匿名アドレス選択手段123は、ステップS104でセッションの開始であると判定された場合には、匿名アドレスを生成する際に使用するプレフィクスを選択する(ステップS104)。尚、匿名アドレス選択手段123が行うステップS104での処理の詳細については、図10を参照して後述する。
次に、匿名アドレス生成手段124は、選択したプレフィクスから匿名アドレスを生成する(ステップS105)。
次に、セッション管理手段122は、匿名アドレスと、ステップS101における受信パケットから取得した、セッションを識別するための情報と、匿名アドレスを用いて到達性のあるアンカーサーバ200のアドレス(即ち、匿名アドレスを構成する際に使用したプレフィクスの取得元のアンカーサーバ200のアドレス)と、を用いて、セッション管理テーブルに新規なエントリを作成する(ステップS106)。ステップS106での処理が終了した後、ステップS110へと進む。
また、セッション管理手段122は、ステップS103でセッションの開始でないと判定した場合には、セッションの終了判定を行う(ステップS107)。上述したように、セッションがTCPセッションである場合には、FINパケット、ACK+FINパケット、FINパケットという一連のTCPセッション終了の手順や、RSTパケットを検出することで、セッション終了の判定を行うことができる。ここで、セッションの終了であると判定された場合(即ち、'Y'の場合)には、ステップS108へと進む。一方で、セッションの終了でないと判定された場合(即ち、'N'の場合)には、ステップS109へと進む。
次に、セッション管理手段122は、ステップS107でセッションの終了であると判定された場合には、セッション終了時の処理を行う(ステップS108)。具体的には、セッション管理手段122は、セッション管理テーブルから対応するエントリを削除し、プレフィクス情報テーブルの対応するエントリの割当状態を'N'(未割当)とし、また、割当終了時刻を現在時刻に更新する。ステップS108での処理が終了した後、ステップS110へと進む。
また、セッション管理手段122は、ステップS107でセッションの終了でないと判定された場合には、セッション管理テーブルの失効時刻を更新する(ステップS109)。ステップS109での処理が終了した後、ステップS110へと進む。
最後に、パケット処理手段130は、セッション管理テーブルの情報を参照し、対応するエントリが存在する場合には受信パケットの送信元アドレスを匿名アドレスに書き換え、さらに、匿名アドレスを用いて到達性のあるアンカーサーバ200へとトンネリングするためのカプセル化処理を行う(ステップS110)。尚、パケット処理手段130が行うステップS110での処理の詳細については、図12を参照して後述する。
次に、図10を参照して、図9のステップS104における処理の詳細について説明する。図10は、匿名化装置100の匿名アドレス選択手段123が行うプレフィクス決定処理の動作を示すフローチャートである。
図10において、まず、匿名化装置100の匿名アドレス選択手段123は、プレフィクス情報テーブルを検索し、未割当のプレフィクスを抽出する(ステップS201)。ここで、未割当のプレフィクスが存在しないと判定された場合(即ち、'N'の場合)には、ステップS202へと処理を進めて、後述するように、プレフィクス割当を要求する処理を行う。一方で、1つ以上の未割当のプレフィクスが存在すると判定された場合(即ち、'Y'の場合)には、ステップS203へと進む。
次に、匿名アドレス選択手段123は、ステップS201で未割当のプレフィクスが存在しないと判定された場合には、アンカーサーバ200に対してプレフィクス割当要求信号を送信することで、プレフィクス割当て処理を実施する(ステップS202)。尚、匿名アドレス選択手段123が行うステップS202での処理の詳細については、図11を参照して後述する。そして、ステップS202での割当要求処理の結果、新たなプレフィクスを取得した場合には、ステップS204へと進む。
また、匿名アドレス選択手段123は、ステップS201で未割当のプレフィクスが存在すると判定された場合には、プレフィクス情報テーブルを検索し、アンカーサーバ200から取得した後に一度も使用されていないプレフィクスを検索する(ステップS203)。ここで、一度も使用されていないプレフィクスが存在すると判定された場合(即ち、'Y'の場合)には、ステップS204へと進む。一方で、一度も使用されていないプレフィクスが存在しないと判定された場合(即ち、'N'の場合)には、ステップS205へと進む。
ステップS202でのプレフィクス割当て処理に続いて、或いは、ステップS203で一度も使用されていないプレフィクスが存在すると判定された場合には、匿名アドレス選択手段123は、一度も使用されていないプレフィクスのうちからランダムで1つのプレフィクスを選択し(ステップS204)、プレフィクス決定処理を完了する。
また、匿名アドレス選択手段123は、ステップS203で一度も使用されていないプレフィクスが存在しないと判定された場合には、プレフィクス情報テーブルから、割当終了時刻が所定の時刻よりも過去のプレフィクスを検索する(ステップS205)。所定の時刻は事前に設定することを想定する。ここで、該当するプレフィクスが存在しないと判定された場合(即ち、'N'の場合)には、ステップS202へと進む。一方で、該当するプレフィクスが存在すると判定された場合(即ち、'Y'の場合)には、ステップS206へと進む。
次に、匿名アドレス選択手段123は、所定の時刻よりも過去に割当てを終了したプレフィクスから、ランダムで1つのプレフィクスを選択し(ステップS206)、プレフィクス決定処理を完了する。ここで、プレフィクスを選択する際には、割当終了時刻に応じて選択確率に重み付けを行うことで、より過去の割当終了時刻であるプレフィクスを、他のプレフィクスよりも選択され易くするといった処理を行うものとしても良い。
尚、本実施の形態1で説明したプレフィクス決定処理は一例であり、他の方法を用いてプレフィクス決定処理を行うものとしても良い。例えば、プレフィクスが関連づけられたセッション情報(セッションがTCPセッションである場合には、パケットの送信元アドレス、宛先アドレス、送信元ポート番号、宛先ポート番号などの情報)の全て或いは一部の情報を予め記憶しておき、これらの情報と一致するセッションに対して、同じプレフィクスを割当てないようにする、或いは、割当てづらくするといった選択基準を設けるようにしても良い。
次に、図11を参照して、図10のステップS202における処理の詳細について説明する。図11は、匿名化装置100の匿名アドレス選択手段123が行うプレフィクス割当要求処理の動作を示すフローチャートである。
図11において、まず、匿名化装置100の匿名アドレス選択手段123は、匿名化装置100が既に保持しているプレフィクスであり、かつ、プレフィクス割当要求の対象とするアンカーサーバ200から取得したプレフィクスについて、プレフィクスセット番号と、割当要求するプレフィクスセットの数と、匿名化装置100のアドレスを設定したプレフィクス割当要求信号と、を構成する(ステップS301)。尚、上述したように、プレフィクスセット番号に代えてプレフィクス自体を設定するものとしても良い。また、割当要求するプレフィクスセットの数に代えて、要求するプレフィクスの数としても良い。
次に、匿名アドレス選択手段123は、ステップS301において構成したプレフィクス割当要求信号を、アンカーサーバ200に送信する処理を行う(ステップS302)。
次に、匿名アドレス選択手段123は、アンカーサーバ200から応答されるプレフィクス割当応答信号を待つ(ステップS303)。ここで、プレフィクス割当応答信号が受信された場合(即ち、'Y'の場合)には、ステップS304へと進む。プレフィクス割当応答信号が受信されていない場合(即ち、'N'の場合)には、プレフィクス割当応答信号の受信を待つ。
最後に、匿名アドレス選択手段123は、プレフィクス割当応答信号を受信した場合には、受信したプレフィクス割当応答信号の情報を使用して、プレフィクス情報テーブルに新たなエントリを追加する処理を行う(ステップS304)。ステップS304での処理が終了した後、図10に示したステップS204へと進む。
次に、図12を参照して、図9のステップS110における処理の詳細について説明する。図12は、匿名化装置100のパケット処理手段130が行うパケット処理の動作を示すフローチャートである。尚、パケット処理は、インタフェース110Aが受信して、匿名化制御手段120が処理した後のパケットや、インタフェース110Bが受信したパケットに対して行われる処理を示す。インタフェース110Aが受信して、匿名化制御手段120が処理した後のパケットに対して行われる処理が、図9のステップS110で行われるパケット処理に相当する。
図12において、まず、匿名化装置100のパケット処理手段130は、受信したパケットがカプセル化されているか否かを判定する(ステップS401)。ここで、受信パケットがカプセル化されていると判定された場合(即ち、'Y'の場合)には、ステップS402へと進む。一方で、受信パケットがカプセル化されていないと判定された場合(即ち、'N'の場合)には、ステップS406へと進む。
次に、パケット処理手段130は、ステップS401で受信パケットがカプセル化されていないと判定した場合には、受信したパケットに設定された情報を使用して、情報記録装置140に記録されたセッション管理テーブルを検索し(ステップS402)、対応するエントリが存在するか否かを確認する(ステップS403)。尚、ステップS402で検索を行う際に比較される情報は、上述したパケット処理手段130の説明において既に述べたため、ここではその説明を省略する。ステップS403での確認の結果、対応するエントリが発見された場合(即ち、'Y'の場合)には、ステップS404へと進む。一方で、発見されなかった場合(即ち、'N'の場合)には、ステップS410へと進む。
次に、パケット処理手段130は、ステップS403で対応するエントリを発見した場合には、発見したエントリの匿名アドレスを使用して、受信したパケットの送信元アドレスを書き換える(ステップS404)。
次に、パケット処理手段130は、ステップS404で送信元アドレスを書き換えたパケットについて、アンカーサーバ200に転送するためのカプセル化処理を行う(ステップS405)。ステップS405での処理が終了した後、ステップS410へと進む。
一方で、パケット処理手段130は、ステップS401で受信パケットがカプセル化されていると判定した場合には、受信したパケット(カプセル化されたパケット)に設定された情報を使用して、情報記録装置140に記録されたセッション管理テーブルを検索し(ステップS406)、対応するエントリが存在するか否かを確認する(ステップS407)。尚、ステップS406で検索を行う際に比較される情報は、上述したパケット処理手段130の説明において既に述べたため、ここではその説明を省略する。ステップS407での確認の結果、対応するエントリが発見された場合(即ち、'Y'の場合)には、ステップS408へと進む。一方で、発見されなかった場合(即ち、'N'の場合)には、ステップS410へと進む。
次に、パケット処理手段130は、ステップS407で対応するエントリを発見した場合には、受信したパケットについて、デカプセル化を行う(ステップS408)。具体的には、パケット処理手段130は、受信したパケットの外側IPヘッダを除去する。
次に、パケット処理手段130は、デカプセル化後のパケットの宛先アドレスを、セッション管理テーブルの送信元アドレスに記録されたアドレスに書換える(ステップS409)。このアドレス書換え処理のために、受信したパケットのアドレスが、匿名アドレスから通信ノード300のアドレスに書き戻されたことになる。ステップS409での処理が終了した後、ステップS410へと進む。
最後に、パケット処理手段130は、通常のIPルーティングの機能を用いてパケットをルーティングして、宛先アドレスに応じて、適切なインタフェースからパケットを送出する(ステップS410)。例えば、ステップS405でカプセル化されたパケットは、アンカーアドレス200宛であり、インタフェース110Bからネットワーク600へと送出される。また、例えば、ステップS409でデカプセル化された後に、宛先アドレスが通信ノード300のアドレスに書換えられたパケットは、インタフェース110Aからネットワーク500へと送出される。
次に、図13及び図14を参照して、アンカーサーバ200の動作について詳細に説明する。図13は、プレフィクス割当要求信号を受信した場合の、アンカーサーバ200のプレフィクス割当手段220が行うプレフィクス割当処理の動作を示すフローチャートである。
図13において、まず、アンカーサーバ200は、プレフィクス割当要求信号を受信する(ステップS501)。そして、アンカーサーバ200のプレフィクス割当手段220は、プレフィクス記録装置240に記録された貸出しプレフィクステーブルから、適切なプレフィクスを選択する(ステップS502)。尚、プレフィクス割当手段220が行うプレフィクスの選択方法については、上述したプレフィクス割当手段220の説明において既に述べたため、ここではその説明を省略する。
次に、プレフィクス割当手段220は、プレフィクス割当応答信号を構成する(ステップS503では)。プレフィクス割当応答信号には、割当てられたプレフィクスセット番号と、プレフィクスと、IID Keyと、プレフィクスの失効時刻と、アンカーサーバ200のアドレスと、が格納される。
最後に、プレフィクス割当手段220は、ステップS503で構成したプレフィクス割当応答信号を、プレフィクス割当要求信号の送信元である匿名化装置100に送信する(ステップ504)。
図14は、データパケットを受信した場合の、アンカーサーバ200の転送手段230が行うパケット転送処理の動作を示すフローチャートである。
図14において、まず、アンカーサーバ200の転送手段230は、受信したパケットがカプセル化されているか否かを判定する(ステップS601)。ここで、受信パケットがカプセル化されていると判定された場合(即ち、'Y'の場合)には、ステップ602へと進む。一方で、受信パケットがカプセル化されていないと判定された場合(即ち、'N'の場合)には、ステップS609へと進む。
次に、転送手段230は、ステップS601で受信パケットがカプセル化されていると判定した場合には、受信したパケット(カプセル化されたパケット)の外側IPヘッダの宛先アドレスが、アンカーサーバ200自身のアドレスであり、かつ、内側IPヘッダの送信元アドレスのプレフィクス部が、アンカーサーバ200が割当て用に保持しているプレフィクスに含まれているか否かを評価する(ステップS602)。評価の結果、受信したパケットの外側IPヘッダの宛先アドレスと内側IPヘッダの送信元アドレスについての条件を満たす場合(即ち、'Y'の場合)には、ステップS603へと進む。一方で、条件を満たさない場合(即ち、'N'の場合)には、ステップS608へと進む。
次に、転送手段230は、ステップS602において上述した条件を満たす場合には、受信パケットの内側IPヘッダの送信元アドレスを匿名アドレスとして、転送情報記録装置250に記録された転送テーブルを検索し(ステップS603)、対応するエントリが存在するか否かを確認する(ステップS604)。ステップS604での確認の結果、対応するエントリを発見した場合(即ち、'Y'の場合)には、ステップS605へと進む。一方で、発見しなかった場合(即ち、'N'の場合)には、ステップS606へと進む。
次に、転送手段230は、ステップS604で対応するエントリを発見した場合には、検索された転送テーブルのエントリの失効時刻を更新する(ステップS605)。一方で、転送手段230は、ステップS604で対応するエントリを発見しなかった場合(即ち、'N'の場合)には、転送テーブルに新たなエントリを追加する(ステップS606)。エントリを追加する際には、上述したように、受信パケットの内側IPヘッダの送信元アドレスを匿名アドレスとし、外側IPヘッダの送信元アドレスを匿名化装置100の項目とし、現在時刻に所定の時間を加えた値を失効時刻として設定する。
次に、転送手段230は、受信したパケットについて、デカプセル化処理を行う(ステップS607)。最後に、転送手段230は、通常のIPルーティングを用いて、デカプセル化したパケットの転送処理を実施する(ステップS608)。
一方で、転送手段230は、ステップS601で受信パケットがカプセル化されていないと判定した場合には、受信パケットの宛先アドレスを匿名アドレスとして、転送情報記録装置250に記録された転送テーブルを検索し(ステップS609)、対応するエントリが存在するか否かを確認する(ステップS610)。ステップS610での確認の結果、対応するエントリが発見された場合(即ち、'Y'の場合)には、ステップS611へと進む。一方で、発見されなかった場合(即ち、'N'の場合)には、ステップS608へと進む。
次に、転送手段230は、ステップS610で対応するエントリを発見した場合には、上述したステップS605での処理と同様にして、検索された転送テーブルのエントリの失効時刻を更新する(ステップS611)。
次に、転送手段230は、受信したパケットについて、検索されたエントリの情報を使用してカプセル化を行う(ステップS612)。ステップS612での処理が終了した後、上述したステップS608へと進む。
次に、図15乃至図18を参照して、通信ノード300がサーバ400との通信を開始してから、サーバ400との通信が完了するまでの間の一連の処理を説明する。図15は、通信ノード300がサーバ400との通信を開始してから完了するまでの、匿名化装置110とアンカーサーバ200の各機能が行う処理を説明するためのシーケンス図である。尚、図15では、通信ノード300がサーバ400にWEBアクセスを実施する場合を例に説明する。また、匿名化装置100のアドレスをCPE_ADR1とし、アンカーサーバ200のアドレスをAnch_ADR1とし、通信ノード300のアドレスをCl_ADR1とし、サーバ400のアドレスをSv_ADR1として説明する。
図15のステップS701において、まず、通信ノード300は、サーバ400のFQDN(Fully Qualified Domain Name)から、サーバ400のIPアドレスを解決する。尚、サーバ400のFQDNは、DNS(Domain Name Server)などを用いて事前に取得するが、サーバ400のIPアドレス自体が既知の場合には、DNSは不要である。
次に、図15のステップS702において、通信ノード300は、サーバ400との間でTCPセッションを開始するために、SYNパケットをサーバ400に送信する。送信パケットは、まず、通信ノード300にとってネットワーク600へのゲートウェイである、匿名化装置100に送られる。ここで、パケットを送信する際には、SYNパケットの宛先アドレスをSv_ADR1とし、送信元アドレスをCl_ADR1とし、宛先ポート番号を80とし、送信元ポート番号を20000とする。
次に、図15のステップS703において、匿名化装置100は、SYNパケットを受信した場合に、図9に示した上述の一連の処理を実行する。ここで、匿名化装置100は、図9のステップS102における匿名化の要否判定では、匿名化ポリシテーブル(図3)の検索の結果、発見したNo1のエントリの匿名化の要否の項目が'Yes'であるものとし、匿名化処理が必要であるものとする。そして、匿名化装置100は、図9のステップS103におけるセッションの開始判定では、受信したパケットがSYNパケットであるため、セッション管理テーブル(図4)に、該当するセッションのエントリが存在するか否かを検索する。匿名化装置100は、検索の結果、該当するエントリが存在しないために、セッションの開始であるものと判定する。このため、図9のステップS104へと進む。
そして、匿名化装置100は、図9のステップS104では、図10に示したアルゴリズムに従って、プレフィクス情報テーブルから割当てるプレフィクスを選択する。図5に示したプレフィクス情報テーブルの例では、Pref_A3と、Pref_B9とがプレフィクスの割当て候補となるが、ここでは、割当終了時刻が条件に合わなかったものと想定する。換言すると、図10のステップS205において条件を満足するプレフィクスが存在しない場合となり、図10のステップS202におけるプレフィクス割当要求処理を実施する。上述したように、図10のステップS202のプレフィクス割当要求処理の詳細は、図11に示したフローチャートを用いて示される。
図11のステップS301において、匿名化装置100は、まず、プレフィクス割当要求信号を構成する。ここでは、プレフィクス割当要求信号には、要求プレフィクスセット数を1とし、既に保持しているプレフィクスセット情報を1とし、匿名化装置100のアドレスをCPE_ADR1として、それぞれの値が設定されるものと想定する。そして、匿名化装置100は、図11のステップS302においてプレフィクス割当要求信号をアンカーサーバ200に送信し、ステップS303においてプレフィクス割当応答信号の受信を待つ。
次に、図15のステップS704において、アンカーサーバ200にプレフィクス割当要求信号が到達する。そして、ステップS705において、アンカーサーバ200は、図13に示したように、プレフィクス割当要求信号を受信した際の処理を実行する。ここでは、図13に示した処理の結果、貸出しプレフィクステーブル(図7)のプレフィクスセット番号2のプレフィクスセットが割当てられたものとする。プレフィクス割当処理の結果、アンカーサーバ200は、割当てたプレフィクスセット番号と、プレフィクスと、IID Keyと、失効時刻と、アンカーサーバ200のアドレスと、を格納したプレフィクス割当応答信号を、匿名化装置100に送信する。
次に、図15のステップS706において、匿名化装置100にプレフィクス割当応答信号が到達する。そして、ステップS707において、匿名化装置100は、図11のステップS303におけるプレフィクス割当応答信号の受信待ち処理を抜け、ステップS304において、受信したプレフィクス割当応答信号に含まれるプレフィクス情報を用いて、プレフィクス情報テーブルを更新する。更新処理の結果、図16に示すように、プレフィクス情報テーブルに、プレフィクスセット番号2のエントリが追加される。
次に、図10のステップS204において、匿名化装置100は、未使用プレフィクスの選択処理を行う。ここでは、Pref_A4を選択するものとする。
次に、図9のステップS105において、匿名化装置100は、上述した式1と式2を用いて求めたIID部とプレフィクスPref_A4とを用いて、匿名アドレスを生成する。ここでは、生成した匿名アドレスをAn_ADR4とする。そして、匿名化装置100は、匿名アドレスを決定した後に、図9のステップS106において、セッション管理テーブルに新規のエントリを追加する。ここでは、図17に示すように、セッション管理テーブルにNo.4のエントリが追加される。
次に、図9のステップS110において、匿名化装置100は、セッション管理テーブルのNo.4のエントリに基づいて、SYNパケットの送信元アドレスを、Cl_ADR1からAn_ADR4に書き換えた後に、パケットをカプセル化して転送する。
次に、図15のステップS708において、アンカーサーバ200は、カプセル化されたSYNパケットを匿名化装置100から受信した場合に、図14に示したフローチャートに従って、処理を実施する。ここで、アンカーサーバ200は、カプセル化されたSYNパケットを受信した時点では、匿名アドレス(An_ADR4)のエントリが転送テーブルに存在しないために、新たなエントリを追加する。図18に、エントリが追加された転送テーブルを示す。ここでは、転送テーブルに追加されたエントリはNo.4のエントリであるものとする。そして、アンカーサーバ200は、受信したパケットをデカプセル化した後に、サーバ400に転送する。
次に、図15のステップS709において、サーバ400は、SYNパケットをアンカーサーバ200から受信した場合に、SYN+ACKパケットを匿名アドレス(An_ADR1)に応答する。An_ADR1は、アンカーサーバ200に到達性のあるプレフィクス(Pref_A4)を有するため、SYN+ACKパケットは、アンカーサーバ200にルーティングされる。
次に、アンカーサーバ200は、SYN+ACKパケットをサーバ400から受信した場合に、図14に示したフローチャートに従って、処理を実施する。ここでは、アンカーサーバ200は、転送テーブル(図18)にNo.4のエントリが存在するため、受信したパケットをカプセル化した後に、匿名化装置100のアドレス(CPE_ADR1)に転送する。
次に、匿名化装置100は、カプセル化されたSYN+ACKパケットを受信する。匿名化装置100のパケット処理手段130は、図12に示したフローチャートに従って、処理を実施する。パケット処理手段130は、セッション管理テーブル(図17)にNo.4のエントリが存在するため、受信したパケットをデカプセル化し、宛先アドレスを匿名アドレス(An_ADR1)から、通信ノード300のアドレス(Cl_ADR1)に書き換える。そして、パケット処理手段130は、アドレスを書き換えたパケットを、通信ノード300に転送する。
最後に、図15のステップS710において、通信ノード300とサーバ400との間で、ACKパケットやデータパケットがやり取りされる。上述したSYNパケットやSYN+ACKパケットと同様に、通信ノード300からサーバ400に送られるパケットは、匿名化装置100が匿名アドレスへの変換及びカプセル化を行い、さらに、アンカーサーバ200がデカプセル化を行った後に、サーバ400に到達する。また、サーバ400から通信ノード300に送られるパケットは、アンカーサーバ200がカプセル化を行い、さらに、匿名化装置100が、デカプセル化と、匿名アドレスを通信ノード300のアドレスへと書き戻す処理と、を行う。
以上説明したように、本実施の形態1に係る通信システム1は、匿名化装置100において、セッション管理手段122がセッションを識別し、匿名アドレス選択手段123と匿名アドレス124がセッション単位で異なる匿名アドレスを生成し、さらに、パケット処理手段130が通信ノード300の送信パケットの送信元アドレスを匿名アドレスに書き換えた上で、匿名アドレスを用いて到達性のあるアンカーサーバ200にトンネリングする構成とした。
これにより、セッション単位で個別の匿名アドレスを設定することができ、さらに、匿名アドレスについてプレフィクス部も含めた匿名性を確保することができる。また、匿名アドレスは匿名化装置100のインタフェースに割当てる必要が無いため、Neibhbor Cacheの負荷の問題も発生せず、DADを用いた処理の遅延の問題も発生しない。また、上述した特許文献1におけるイングレスフィルタの問題や、TCPに適用できないという問題も発生しない。また、一般的なIPノードである移動ノード300に対しても、匿名アドレスを用いた通信環境を提供することができる。
また、本実施の形態1に係る通信システム1では、匿名アドレス選択手段123がプレフィクスを選択する際に、その選択以前にプレフィクスを選択した時刻を考慮する構成としたことで、近い時間内に同じプレフィクスを有する匿名アドレスの使用を回避することができ、高い匿名性を実現できる。
また、本実施の形態1に係る通信システム1は、匿名アドレスを構成する際に候補となるプレフィクスが無かった場合には、匿名アドレス選択手段123がプレフィクス割当要求信号を送信することで、アンカーサーバ200にプレフィクスの割当を要求する。ここで、プレフィクスの割当を要求する際には、匿名化装置100が既に保持しているプレフィクス情報を渡す構成としたことで、アンカーサーバ200は匿名化装置100に割当てたプレフィクス情報を保持しておく必要がなく、匿名化装置100が未だに保持していないプレフィクスを割当てることができる。
さらに、プレフィクスの割当を要求する際には、匿名化装置100が既に保持しているプレフィクスを、プレフィクスセット番号を用いて通知する構成としたことで、プレフィクス割当要求信号のサイズを小さくすることができる。また、匿名化装置100が未だ保持していないプレフィクスについて、アンカーサーバ200が行う検索処理の処理量を小さくすることができる。この特徴は、例えば、膨大な数の匿名化装置100に対して匿名化サービスを提供する場合に、非常に有効な特徴となる。
また、本実施の形態1に係る通信システム1では、匿名アドレス生成手段124が、匿名アドレスやポート番号といったサーバ400の管理者が取得し得る情報と、アンカーサーバ200を管理するオペレータのみが保持する情報と、を使用して、匿名アドレスを使用した匿名化装置100を特定可能とするように、匿名アドレスを算出する。これにより、アンカーサーバ200を管理するオペレータは、セッション毎に変化する匿名アドレスと匿名化装置100との対応関係を逐次記録する必要がなく、追跡性を確保することができる。
実施の形態2.
次に、図19乃至26を参照して、本発明の実施の形態2について説明する。
(構成の説明)
まず、図19乃至図23を参照して、本実施の形態2に係る通信システム1の構成について説明する。本実施の形態2に係る通信システム1の全体構成は、図1に示した実施の形態1に係る通信システム1と略同様の構成である。本実施の形態2に係る通信システム1では、図2で示した匿名化装置100が図19に示す匿名化装置101となり、図6で示したアンカーサーバ200が図20に示すアンカーサーバ201となる点で異なる。また、本実施の形態2に係る通信システム1では、匿名化装置101ではなく、アンカーサーバ201が匿名化アドレスへの書き換えを行うように構成されている点で異なる。
図19は、匿名化装置101を示す構成図である。図に示すように、匿名化装置101は、インタフェース110Aと、インタフェース110Bと、匿名化制御手段120_2と、パケット処理手段130_2と、情報記録装置140と、を備えている。匿名化制御手段120_2は、匿名性確保要否判定手段121と、セッション管理手段122_2と、アンカー選択手段125と、を備えている。尚、図2に示した匿名化装置100の各要素と同一の機能を有する要素は、図19において同一の名称及び符号を用いて示すものとし、以下では、その詳細な説明を省略する。
セッション管理手段122_2は、実施の形態1に係るセッション管理手段122と同様に、通信の特定の一連の単位であるセッションの開始及び終了を判定する機能と、情報記録装置140に記録されたセッション管理テーブルを管理する機能と、を備えている。尚、図21に示すように、セッション管理手段122_2が管理するセッション管理テーブルは、匿名アドレスを含まない点において、実施の形態1に係るセッション管理テーブルと異なる。
また、セッション管理手段122_2は、匿名アドレスの割当て要求に代えて、匿名化処理を依頼するアンカーサーバ201の割当要求を、アンカー選択手段125に出力する。セッション管理手段122_2は、アンカーサーバ201の割当要求の結果、アンカーサーバ201のアドレスを取得した場合には、取得したアンカーサーバ201のアドレスを、セッション管理テーブル(図21)のアンカーサーバアドレスの項目に設定する。
アンカー選択手段125は、セッション管理手段122_2からのアンカーサーバ割当要求に応じて、匿名化処理を依頼するアンカーサーバ201を選択し、選択したアンカーサーバ201のアドレスをセッション管理手段122_2に応答する機能を備えている。アンカー選択手段125は、匿名化装置101に事前に設定されたアンカーサーバ201のアドレスから、アンカーサーバ201のアドレスをランダムに選択する。
尚、アンカー選択手段125が、通信ノード300から送信されたパケットの宛先アドレスを取得できるようにし、かつ、割当てたアンカーサーバ201と、送信されたパケットの宛先アドレスと、受信時刻と、を関連付けて記録しておくようにした上で、宛先アドレスが同じセッションに対しては、所定の時間内に割当てたアンカーサーバ201と同じアドレスを選択しない、或いは、選択確率に重み付けをすることで同じアドレスを選択しにくくするものとしても良い。勿論、他の選択方法を用いて選択するものとしても良い。
パケット処理手段130_2は、実施の形態1に係るパケット処理手段130と同様に、情報記録装置140に記録されたセッション管理テーブルを参照して、パケットのカプセル化及びデカプセル化を実施する。尚、パケット処理手段130_2は、通信ノード300のアドレスから匿名アドレスへの書換えと、匿名アドレスから通信ノード300のアドレスへの書換えと、を行わない点において、実施の形態1に係るパケット処理手段130と異なる。
情報記録装置140は、図3に示したポリシテーブルと、図21に示したセッション管理テーブルと、を記録する記録装置である。
図20は、アンカーサーバ201を示す構成図である。図に示すように、アンカーサーバ201は、インタフェース210と、匿名化装置判定手段260と、匿名化制御手段270と、パケット処理手段280と、情報記録装置290と、を備えている。尚、図6に示したアンカーサーバ200の各要素と同一の機能を有する要素は、図20において同一の名称及び符号を用いて示すものとし、以下では、その詳細な説明を省略する。
匿名化装置判定手段260は、インタフェース210が受信したパケットがカプセル化されたパケットである場合には、外側IPヘッダの宛先アドレスがアンカーサーバ201のアドレスであり、かつ、外側IPヘッダの送信元アドレスがアンカーサーバ201の使用を許可した匿名化装置101であるか否かを確認する。匿名化装置判定手段260は、確認の結果、条件に適合したパケットを匿名化制御手段270に出力する。匿名化装置判定手段260は、条件に適合しなかったパケットは、破棄する。尚、パケットを破棄せずに、一般的なルーティング処理を単に実施するものとしても良い。
ここで、匿名化装置判定手段260が、匿名化装置101がアンカーサーバ201の使用を許可されているか否かの判定を行うに際しては、許可する匿名化装置101のアドレスのリストを事前に保持しておき、保持したリストを判定時に参照すれば良い。また、例えば、トンネル化されたパケットに、アンカーサーバ201の使用を許可されている旨の証明情報を付与する方法を適用するなど、他の方法を適用しても良い。
匿名化制御手段270は、匿名化装置判定手段260からパケットが入力された場合に、入力されたパケットの情報や、情報記録装置290に記録されたプレフィクス情報テーブルの情報(図22)などを使用して、匿名アドレスを生成する。また、匿名化制御手段270は、通信ノード300のアドレスを匿名アドレスへと書き換えるための準備を行う。さらに、匿名化制御手段270は、入力されたパケットを、パケット処理手段280に出力する。
図20に示すように、匿名化制御手段270は、セッション管理手段271と、匿名アドレス選択手段272と、匿名アドレス生成手段273と、を備えている。匿名化制御手段270は、実施の形態1に係る匿名化制御手段120と類似する機能を備えている。
セッション管理手段271は、実施の形態1に係るセッション管理手段122と同様に、匿名化装置判定手段260からパケットが入力された場合に、セッションの開始及び終了を判定する機能と、情報記録装置290に記録されたセッション管理テーブルを管理する機能と、を備えている。本実施の形態2では、セッションとしてTCPセッションを想定しており、TCPセッションは宛先アドレスと、送信元アドレスと、宛先ポート番号と、送信元ポート番号と、に基づいて識別される。尚、TCPセッションに限定されず、他の単位をセッションとみなしても良い。
セッション管理手段271が有する機能(即ち、セッションの開始及び終了を判定する機能と、セッションを管理する機能)は、実施の形態1に係るセッション管理手段122が有する機能と略同じであるが、カプセル化されたパケットの内側に格納されたIPパケットを使用して、セッションの開始及び終了を判定する点において異なる。
また、セッション管理手段271が管理するセッション管理テーブルは、図22に示したように、アンカーサーバ201のアドレスに代えて、匿名化装置101のアドレスを記録する点において異なる。
セッション管理手段271は、新規セッション用のエントリの作成時には、カプセル化されたパケットの外側IPヘッダの送信元アドレスを、匿名化装置101のアドレスの項目に設定することができる。或いは、匿名化装置判定手段260が、アンカーサーバ201の使用が認められた匿名化装置101であると判定した後に、匿名化装置101のアドレスをセッション管理手段271に別途出力する構成とすることで、セッション管理手段271は、入力された匿名化装置101のアドレスを、セッション管理テーブルの匿名化装置アドレスの項目に設定しても良い。
さらに、セッション管理手段271は、エントリを追加する際には、匿名アドレス選択手段272に匿名アドレスを要求して、要求の結果得られた匿名アドレスを、セッション管理テーブルの匿名アドレスの項目に設定する。
匿名アドレス選択手段272は、セッション管理手段271から匿名アドレスを要求された場合に、情報記録装置290に記録されたプレフィクス情報テーブル(図23)から1つのプレフィクスをランダムで選択する。尚、プレフィクスの選択方法としては、プレフィクスと、プレフィクスを割当てた匿名化装置101と、割当時刻と、を対応づけて記録しておき、同じ匿名化装置101に対しては所定の時間内に同一のプレフィクスを選択しない、或いは、選択確率に重み付けをすることで同一のプレフィクスを選択しにくくするものとしても良い。
匿名アドレス選択手段272は、プレフィクスを選択した後、選択したプレフィクスとプレフィクスに対応づけられたIID Key情報とを匿名アドレス生成手段273に出力することで、匿名アドレスを取得する。そして、匿名アドレス選択手段272は、取得した匿名アドレスを、セッション管理手段271に応答する。
匿名アドレス生成手段273は、実施の形態1に係る匿名アドレス生成手段124と同様の動作をするため、ここではその詳細な説明を省略する。
パケット処理手段280は、情報記録装置290に記録されたセッション管理テーブルを参照することで、パケット処理手段280に入力されたパケットに対して、デカプセル化を行った後に、送信元アドレスを匿名アドレスに書き換える処理を行う。また、パケット処理手段280は、セッション管理テーブルを参照することで、パケット処理手段280に入力されたパケットに対して、通信ノード300のアドレスに匿名アドレスを書き換えた後に、カプセル化する処理を実施する。さらに、パケット処理手段280は、デカプセル化或いはカプセル化したパケットを、一般的なIPルーティングの処理を用いて、転送を行う。
また、パケット処理手段280は、カプセル化されたパケットに対してセッション管理テーブルの検索を行う場合には、外側IPヘッダの送信元アドレスと、内側IPヘッダの宛先アドレスと、内側IPヘッダの送信元アドレスと、宛先ポート番号と、送信元ポート番号と、を、セッション管理テーブルの匿名化装置アドレスと、宛先アドレスと、送信元アドレスと、宛先ポートと、送信元ポートと、それぞれ設定された値と比較する。比較の際には、パケット処理手段280は、外側IPヘッダの宛先アドレスがアンカーサーバ201のアドレスと一致しているか否かについても確認する。
一方で、パケット処理手段280は、カプセル化されていないパケットの受信時にセッション管理テーブルを検索する場合には、受信パケットの宛先アドレスと、セッション管理テーブルの匿名アドレスに設定されたアドレスと、を比較する。比較の結果、適合するエントリを発見した場合には、パケット処理手段280は、受信パケットの宛先アドレスを、セッション管理テーブルの送信元アドレスに設定されたアドレスに書き換える。そして、パケット処理手段280は、セッション管理テーブルの匿名化装置アドレスに設定されたアドレスを外側IPヘッダの宛先アドレスとし、また、アンカーサーバ201のアドレスを外側IPヘッダの送信元アドレスとして、カプセル化を行う。
情報記録装置290は、図22に示したセッション管理テーブルと、図23に示したプレフィクス情報テーブルとを記録する記録装置である。
上記した、匿名化制御手段120_2と、パケット処理手段130_2と、匿名化装置判定手段260と、匿名化制御手段270と、パケット処理手段280と、は、いずれもソフトウェアを用いてその機能を実現することができる。さらに、これら手段のいずれか一部或いは全てを、ハードウェアを用いて構成することも可能である。
また、上述した情報記録装置290は、情報を記録可能な装置(半導体メモリやハードディスクドライブなど)を用いて構成することができる。
尚、図19乃至図23に示した各手段や装置の構成は例示にすぎず、本発明の趣旨を逸脱しない範囲で他の構成を用いて実現するものとしても良い。
実施の形態2に係る通信システム1の構成によれば、アンカーサーバ201が匿名アドレスへの書換え処理を実施することで、匿名化装置101が行う処理を簡略化することができる。
また、匿名性を多少弱める方向としても構わないのであれば、匿名化装置101とアンカーサーバ201との間に、静的なトンネルを張る構成としても良い。かかる構成によれば、匿名化装置101の匿名化制御手段120_2が不要となり、匿名化装置101が行う処理をより簡略化することができる。尚、情報記録装置140のセッション管理テーブルに、事前に1つのエントリを例えば手動で作成することで、静的なトンネルを張ることができる。
(動作の説明)
次に、図24乃至図26を参照して、本実施の形態2に係る通信システム1の動作について説明する。図24は、通信ノード300からパケットを受信した場合の、匿名化装置101の動作を示すフローチャートである。図25及び図26は、アンカーサーバ201の動作を示すフローチャートである。
図24において、まず始めに、匿名化装置101の匿名化制御手段120_2は、通信ノード300が送信したパケットを、インタフェース110Aを介して受信する(ステップS801)。そして、匿名性確保要否判定手段121は、受信パケットに対して匿名性を確保する必要があるか否かを判定する(ステップS802)。ここで、匿名性が必要と判定された場合(即ち、'Y'の場合)には、ステップS803へと進む。一方で、匿名性が必要ないと判定された場合(即ち、'N'の場合)には、ステップS809へと進む。
次に、セッション管理手段122_2は、ステップS802で匿名性が必要と判定した場合には、受信パケットの内容をチェックし、セッションの開始であるか否かを判定する(ステップS803)。尚、セッションの開始判定方法については上述した内容と同一であるため、ここではその説明を省略する。ここで、セッションの開始であると判定された場合(即ち、'Y'の場合)には、ステップS804へと進む。セッションの開始でないと判定された場合(即ち、'N'の場合)には、ステップS806へと進む。
次に、アンカー選択手段125は、ステップS803でセッションの開始であると判定した場合には、匿名アドレスへのアドレス書換えを依頼するアンカーサーバ201を選択する(ステップS804)。
次に、セッション管理手段122_2は、アンカー選択手段125が選択したアンカーサーバ200のアドレスと、ステップS801における受信パケットから取得したセッションを識別するための情報と、を用いて、セッション管理テーブルに新規のエントリを作成する(ステップS805)。ステップS805での処理が終了した後、ステップS809へと進む。
また、セッション管理手段122_2は、ステップS803でセッションの開始でないと判定された場合には、セッションの終了判定を行う(ステップS806)。尚、セッションの終了判定方法については上述した内容と同一であるため、ここではその説明を省略する。ここで、セッションの終了であると判定された場合(即ち、'Y'の場合)には、ステップS807へと進む。セッションの終了でないと判定された場合(即ち、'N'の場合)には、ステップS808へと進む。
次に、セッション管理手段122_2は、ステップS806でセッションの終了であると判定した場合には、セッション終了時の処理を行う(ステップS807)。具体的には、セッション管理手段122_2は、セッション管理テーブルから対応するエントリを削除する。ステップS807での処理が終了した後、ステップS809へと進む。
また、セッション管理手段122_2は、ステップS806でセッションの終了でないと判定した場合には、セッション管理テーブルの失効時刻を更新する(ステップS808)。ステップS808での処理が終了した後、ステップS809へと進む。
最後に、パケット処理手段130_2は、セッション管理テーブルの情報を参照して、セッション管理テーブルの対応するエントリに設定されたアンカーサーバ201のアドレスへとトンネリングするための、カプセル化処理を行う(ステップS809)。
次に、図25及び図26を参照して、アンカーサーバ201の動作について詳細に説明する。図25は、匿名化装置101から送信された(カプセル化された)パケットを受信した場合の、アンカーサーバ201の動作を示すフローチャートである。
図25において、まず始めに、アンカーサーバ201の匿名化装置判定手段260は、匿名化装置101が送信したパケットを、インタフェース210を介して受信する(ステップS901)。そして、匿名化装置判定手段260は、受信したパケットが、アンカーサーバ201の使用が許可された匿名化装置101から送信されたパケットであるか否かを判定する(ステップS902)。尚、受信パケットの判定方法については上述した内容と同一であるため、ここではその説明を省略する。ここで、受信パケットが、許可された匿名化装置101から受信したパケットであると判定された場合(即ち、'Y'の場合)には、ステップS903へと進む。一方で、受信パケットが、許可された匿名化装置101から受信したパケットでないと判定された場合(即ち、'N'の場合)には、ステップS910へと進む。
次に、セッション管理手段271は、ステップS902で許可された匿名化装置101から受信したパケットであると判定した場合には、受信パケットの内容をチェックし、セッションの開始であるか否かを判定する(ステップS903)。ここで、セッションの開始であると判定された場合(即ち、'Y'の場合)には、ステップS904へと進む。セッションの開始でないと判定された場合(即ち、'N'の場合)には、ステップS907へと進む。
次に、匿名アドレス選択手段272は、ステップS904でセッションの開始であると判定された場合には、情報記録装置290に記録されたプレフィクス情報テーブル(図23)の情報から、匿名アドレスを生成する際に使用するプレフィクスを選択する(ステップS904)。
次に、匿名アドレス生成手段273は、選択したプレフィクスと、プレフィクスに関連づけられたIID Keyと、を使用して、匿名アドレスを生成する(ステップS905)。尚、匿名アドレスの生成方法については上述した内容と同一であるため、ここではその説明を省略する。
次に、セッション管理手段271は、匿名アドレスと、ステップS901における受信パケットから取得したセッションを識別するための情報と、パケットを送信してきた匿名化装置101のアドレスと、を用いて、セッション管理テーブルに新規なエントリを作成する(ステップS906)。ステップS906での処理が終了した後、ステップS910へと進む。
また、セッション管理手段271は、ステップS903でセッションの開始でないと判定した場合には、セッションの終了判定を行う(ステップS907)。ここで、セッションの終了であると判定された場合(即ち、'Y'の場合)には、ステップS908へと進む。一方で、セッションの終了でないと判定された場合(即ち、'N'の場合)には、ステップS909へと進む。
次に、セッション管理手段271は、ステップS903でセッションの終了であると判定した場合には、セッション終了時の処理を行う(ステップS908)。具体的には、セッション管理手段271は、セッション管理テーブルから対応するエントリを削除する。ステップS908での処理が終了した後、ステップS910へと進む。
また、セッション管理手段271は、ステップS907でセッションの終了でないと判定した場合には、セッション管理テーブルの失効時刻を更新する(ステップS909)。ステップS909での処理が終了した後、ステップS910へと進む。
最後に、パケット処理手段280は、匿名化装置101から送信された(カプセル化された)パケットについて、デカプセル化処理を行い、さらに、送信元アドレスを匿名アドレスに書き換えた後に、宛先アドレスへと転送する(ステップS910)。尚、パケット処理手段280が行うステップS910での処理の詳細については、図26を参照して後述する。
次に、図26を参照して、図25のステップS910における処理の詳細について説明する。図26は、アンカーサーバ201のパケット処理手段280が行う処理の動作を示すフローチャートである。尚、パケット処理は、匿名化装置101から送信された(カプセル化された)パケットであって、匿名化制御手段270が処理した後のパケットや、インタフェース210が受信した匿名化アドレス宛のパケットに対して行われる処理を示す。匿名化装置101から送信された(カプセル化された)パケットであって、匿名化制御手段270が処理した後のパケットに対して行われる処理が、図25のステップS910で行われるパケット処理に相当する。
図26において、まず、アンカーサーバ201のパケット処理手段280は、受信したパケットがカプセル化されているか否かを判定する(ステップS1001)。ここで、受信パケットがカプセル化されていると判定された場合(即ち、'Y'の場合)には、ステップS1002へと進む。一方で、受信パケットがカプセル化されていないと判定された場合(即ち、'N'の場合)には、ステップS1006へと進む。
次に、パケット処理手段280は、ステップS1001で受信パケットがカプセル化されていないと判定した場合には、受信したパケットに設定された情報を使用して、情報記録装置290に記録されたセッション管理テーブルを検索し(ステップS1002)、対応するエントリが存在するか否かを確認する(ステップS1003)。尚、ステップS1002で検索を行う際に比較される情報は、上述したパケット処理手段280の説明において既に述べたため、ここではその説明を省略する。ステップS1003での確認の結果、対応するエントリが発見された場合(即ち、'Y'の場合)には、ステップS1004へと進む。一方で、発見されなかった場合(即ち、'N'の場合)には、ステップS1010へと進む。
次に、パケット処理手段280は、ステップS1003で対応するエントリを発見した場合には、受信したパケットの宛先アドレスを、匿名アドレスから、発見したエントリの送信元アドレスに書き換える(ステップS1004)。
次に、パケット処理手段280は、ステップS1004で宛先アドレスを書き換えたパケットについて、匿名化装置101に転送するためのカプセル化処理を行う(ステップS1005)。ステップS1005での処理が終了した後、ステップS1010へと進む。
一方で、パケット処理手段280は、ステップS1001で受信パケットがカプセル化されていると判定した場合には、受信したパケット(カプセル化されたパケット)に設定された情報を使用して、情報記録装置290に記録されたセッション管理テーブルを検索し(ステップS1006)、対応するエントリが存在するか否かを確認する(ステップS1007)。尚、ステップS1006で検索を行う際に比較される情報は、上述したパケット処理手段280の説明において既に述べたため、ここではその説明を省略する。ステップS1007での確認の結果、対応するエントリが発見された場合(即ち、'Y'の場合)には、ステップS1008へと進む。一方で、発見されなかった場合(即ち、'N'の場合)には、ステップS1010へと進む。
次に、パケット処理手段280は、ステップS1007で対応するエントリが発見された場合には、受信したパケットについて、デカプセル化を行う(ステップS1008)。具体的には、パケット処理手段280は、受信したパケットの外側IPヘッダを除去する。
次に、パケット処理手段280は、デカプセル化後のパケットの送信元アドレスを、セッション管理テーブルの匿名アドレスに記録されたアドレスに書換える(ステップS1009)。ステップS1009での処理が終了した後、ステップS1010へと進む。
最後に、パケット処理手段280は、通常のIPルーティングの機能を用いてパケットをルーティングして、インタフェース210からネットワーク600へと送出する(ステップS1010)。
以下、本発明に係る通信システムに基づく効果を説明する。
第1の効果は、一般的なIPノードである通信ノードに対して、高い匿名性を確保した通信を提供できることである。その理由は、通信ノードが送信したパケットの送信元アドレス(即ち、通信ノードのアドレス)を匿名化装置が匿名アドレスに書き換え、さらに、匿名アドレスのプレフィクスを用いて到達性のあるアンカーサーバにトンネリングする構成としたことで、プレフィクス部も含めたアドレス全体を、匿名性が確保されたアドレスに書換える可能としたためである。また、セッション単位で、異なる匿名アドレスを使用できる構成としたためである。
第2の効果は、匿名化装置との間で非公開の情報(即ち、IID_Key)を共有することで、匿名アドレスと通信ノードのアドレスとの対応関係を逐次記録する必要がなく、匿名アドレスを使用した匿名化装置を匿名アドレスから特定可能な追跡機能を提供できることである。その理由は、匿名アドレス生成手段において、非公開の情報を使用して、匿名化装置を特定できる情報に変換可能となるように、匿名アドレスの一部(IID部)を生成する構成としたためである。
また、本発明に係る通信システムは、IPv6を用いた通信システムに対して広く適用可能である。例えば、本発明に係るアンカーサーバをISP(Internet Service Provider)に配備すると共に、本発明に係る匿名化装置の機能を、ISPの加入者であるユーザ宅に置かれるブロードバンドルータなどのCPE(Customer Premises Equipment)において実施することが可能である。これにより、ISPは、ユーザに対して、匿名性の確保された通信を提供することができる。
さらに、本発明に係る通信システムによれば、ISP以外のサーバが匿名アドレスを使用した不正アクセスを受けた場合には、ISP以外のサーバの管理者により、不正アクセス時の匿名アドレスとポート番号とが記録されたログをISPに通知してもらうことで、ISPは、匿名アドレスを元に、不正アクセスを行ったユーザを特定することができるため、匿名性に起因する悪影響を抑制することができる。従って、匿名性の提供と、必要な場合には追跡性の確保とを両立させることができるため、ISPのサービスなどについて、本発明に係る通信システムの適用は非常に有効なものとなる。
尚、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
この出願は、2009年3月6日に出願された日本出願特願2009−052919を基礎とする優先権を主張し、その開示の全てをここに取り込む。