(58)【調査した分野】(Int.Cl.,DB名)
複数のブランチルータを有する1以上のグループと、これら1以上のグループを制御するとともに、各グループを構成する複数の前記ブランチルータに対してMPSA(Multi-point Security Association)情報を配布する配布手段を備えるゲートウェイとを有するネットワークシステムを構成する前記ブランチルータにおいて、
前記配布手段によって配布された前記MPSA情報に基づいて相互に暗号化通信を行う通信手段と、
他のブランチルータから送信されるパケットに付与されたシーケンス番号の重複の有無を判定するための情報であるシーケンス番号ウィンドウを、ブランチルータ毎に記憶する記憶手段と、
他のブランチルータからパケットを受信した場合、前記記憶手段に記憶されているシーケンス番号ウィンドウを参照して、シーケンス番号の重複の有無を判定する判定手段と、
前記判定手段によってシーケンス番号が重複すると判定された場合にはそのパケットを破棄する破棄手段と、を有し、
複数の他のブランチルータに対してパケットを送信する場合、送信側は共通のシーケンス番号を使用してパケットを送信し、受信側はブランチルータ毎に前記記憶手段に記憶した前記シーケンス番号ウィンドウを参照して、シーケンス番号の重複の有無を判定する、
ことを特徴とするブランチルータ。
複数のブランチルータを有する1以上のグループと、これら1以上のグループを制御するとともに、各グループを構成する複数の前記ブランチルータに対してMPSA(Multi-point Security Association)情報を配布する配布手段を備えるゲートウェイとを有するネットワークシステムを構成する前記ブランチルータの制御方法において、
前記配布手段によって配布された前記MPSA情報に基づいて相互に暗号化通信を行う通信ステップと、
他のブランチルータから送信されるパケットに付与されたシーケンス番号の重複の有無を判定するための情報であるシーケンス番号ウィンドウを、ブランチルータ毎に記憶装置に記憶させる記憶ステップと、
他のブランチルータからパケットを受信した場合、前記記憶手段に記憶されているシーケンス番号ウィンドウを参照して、シーケンス番号の重複の有無を判定する判定ステップと、
前記判定ステップにおいてシーケンス番号が重複すると判定された場合にはそのパケットを破棄する破棄ステップと、を有し、
複数の他のブランチルータに対してパケットを送信する場合、送信側は共通のシーケンス番号を使用してパケットを送信し、受信側はブランチルータ毎に前記記憶装置に記憶させた前記シーケンス番号ウィンドウを参照して、シーケンス番号の重複の有無を判定する、
ことを特徴とするブランチルータの制御方法。
【発明を実施するための形態】
【0016】
次に、本発明の実施形態について説明する。
【0017】
(A)実施形態の構成の説明
図1は、本発明の実施形態に係るネットワークシステムの構成例を示す図である。この図に示すように、本発明の実施形態に係るネットワークシステムは、ゲートウェイ10、トランジットネットワーク20、I−IP(Internal-Internet Protocol)ネットワーク30、ブランチルータ50,60、E−IP(External-Internet Protocol)クライアントネットワーク70,80が存在する。なお、ブランチルータ50,60はMPSA(Multi-point Security Association)に基づいて暗号化通信を行う。
【0018】
ここで、ゲートウェイ10は、ブランチルータ50,60との間でIKEv2(Internet Key Exchange Protocol Version 2)により確立される鍵交換用の暗号化通信路であるIKE_SA(Security Association)を介してグループ鍵を配布するとともに、IKEv2により確立されるデータ通信用の暗号化通信路であるCHILD_SAを介して経路情報をBGP(Border Gateway Protocol)によって交換する。この経路情報には、あるブランチルータからMPSAを介して他のブランチルータの配下に存在するE−IPクライアントネットワークに到達するために、どのブランチルータを介するべきかを示す情報が含まれており、詳細についてはRFC5512およびRFC5566で開示されている。
【0019】
トランジットネットワーク20は、I−IPネットワーク30およびMPSA40のトラフィックを中継するネットワークである。
【0020】
I−IPネットワーク30は、トランジットネットワーク20の上でCHILD_SAにより設けられた仮想的なネットワークである。E−IPクライアントネットワーク70,80はクライアントの各拠点に設けられた外部のネットワークである。
【0021】
図2は、
図1に示すゲートウェイ10およびブランチルータ50,60の構成例を示す図である。
図2に示すように、ゲートウェイ10は、パケット送受信部11、SA(Security Association)処理部12、IKE(Internet Key Exchange)処理部13、経路プロトコル処理部14、MPSA送信部15、MPSA管理部16、および、パケット送受信部17を有している。
【0022】
ここで、パケット送受信部11は、ブランチルータ50,60との間でパケットの送受信を行う。SA処理部12は、ブランチルータ50,60との間でIPsecによる暗号化通信を行う際に、IKE処理部13から通知された認証アルゴリズムや暗号化アルゴリズムに基づくIKE_SAもしくはCHILD_SAによるSA(Security Association)処理を実行する。この結果、ゲートウェイ10は、ブランチルータ50,60との間で暗号化通信によってグループ鍵を配布することができる。
【0023】
IKE処理部13は、IPsecにより暗号化通信を行う前に、IPsecに必要な暗号化アルゴリズムの決定と暗号鍵の共有を行う処理を実行する。経路プロトコル処理部14は、経路情報テーブルをブランチルータ50,60と交換するための処理を実行する。
【0024】
MPSA送信部15は、ブランチルータ50,60に対してグループ鍵を送信する処理を実行する。MPSA管理部16は、ブランチルータ50,60に送信するグループ鍵を管理する処理部である。パケット送受信部17は、ブランチルータ50,60以外のネットワーク機器と接続され、パケットの送受信を行う。
【0025】
また、ブランチルータ50は、パケット送受信部51、SA処理部52、IKE処理部53、経路プロトコル処理部54、MPSA受信部55、MPSA処理部56、および、パケット送受信部57を有している。
【0026】
ここで、パケット送受信部51は、ゲートウェイ10およびブランチルータ60との間でパケットの送受信を行う。SA処理部52は、ゲートウェイ10との間でIPsecによる暗号化通信を行う際に、IKE処理部53から通知された認証アルゴリズムや暗号化アルゴリズムに基づくIKE_SAもしくはCHILD_SAによるSA処理を実行する。SA処理の結果、ブランチルータ50は、ゲートウェイ10との間で暗号化通信によってグループ鍵を受け取ることができる。
【0027】
IKE処理部53は、暗号化通信を行う前に、暗号化通信を行うSA処理部52で必要な暗号化アルゴリズムの決定と暗号鍵の共有を行うための処理を実行する。経路プロトコル処理部54は、経路情報テーブルをゲートウェイ10と交換するための処理を実行する。
【0028】
MPSA受信部55は、ゲートウェイ10から配布されたグループ鍵を受信する処理を実行する。MPSA処理部56は、グループ鍵に基づくSA処理を実行する。MPSA処理部56が扱うパケットはSA処理部52が扱うCHILD_SAと同じESP(Encapsulated Security Payload)を用いることが可能で、ESPのヘッダ部に格納されるSPI(Security Parameter Index)によって何れのSAに属するパケットであるかを識別する。パケット送受信部57は、E−IPクライアントネットワーク70との間でパケットの送受信を行う。
【0029】
ブランチルータ60は、ブランチルータ50と同様の構成とされているので、詳細な説明は省略する。なお、
図3では図面を簡略化するためにブランチルータ60とゲートウェイ10との接続は省略しているが、ブランチルータ60はブランチルータ50と同様にゲートウェイ10に接続されている。
【0030】
図3は、
図2に示すMPSA処理部56の詳細な構成を示す図である。なお、MPSA処理部66も同様の構成とされているので、その説明は省略する。
【0031】
図3に示すように、MPSA処理部56は、MPSA検索部561、MPSAテーブル562、送信元アドレス検査部563、ESP復号部564、および、MPSA管理部565を有している。
【0032】
ここで、MPSA検索部561は、ブランチルータ60との間で通信を行う際に、グループ鍵等に関する合意であるMPSAをMPSAテーブル562から検索し、該当するMPSAを取得するとともに、後述するシーケンス番号ウィンドウに基づいてシーケンス番号が重複するパケットを破棄する。MPSAテーブル562は、前述したMPSAおよびシーケンス番号ウィンドウ等の情報を格納するテーブルである。
【0033】
送信元アドレス検査部563は、パケットに付与されたIPアドレスの送信元アドレスに基づいて経路情報テーブル59を参照し、パケットの送信元が正当か否かを判定する。
【0034】
ESP復号部564は、MPSAテーブル562を参照して、暗号化されているパケットを復号処理する。
【0035】
MPSA登録部565は、他のブランチルータと通信を行う際に、MPSAテーブル562にMPSAおよびシーケンス番号ウィンドウ等の情報を登録・更新する。
【0036】
経路情報テーブル59は、経路プロトコル処理部54が取得した経路情報を格納し、この経路情報に基づいて、ルーティング処理が実行される。
【0037】
(B)実施形態の動作の説明
つぎに、本発明の実施形態の動作について説明する。以下では、まず、本実施形態の概略の動作について説明した後に、詳細な動作について説明する。
【0038】
図4は、
図1に示すブランチルータ50がn台の他のブランチルータ60−1〜60−nと通信する場合のMPSA、シーケンス番号、および、シーケンス番号ウィンドウの関係を示す図である。
図4(A)はブランチルータ50がパケットを送信する場合を示し、
図4(B)はブランチルータ50がパケットを受信する場合を示している。
【0039】
図4(A)に示すように、ブランチルータ50がパケットを送信する場合には、MPSA0に基づいて他のブランチルータ60−1〜60−nとの間でMPSAが設定される。また、ブランチルータ50はパケットを送信する毎に、シーケンス番号をカウントアップし、カウントアップされたシーケンス番号を各パケットに付与して送信する。ブランチルータ60−1〜60−nは、
図4(B)に基づいて後述するように、シーケンス番号ウィンドウを通信相手毎に独立して有しており、このシーケンス番号ウィンドウに基づいて受信したパケットの正当性を判断する。
【0040】
図4(B)に示すように、ブランチルータ50がパケットを受信する場合には、MPSA0に基づいて他のブランチルータ60−1〜60−nとの間でMPSAが設定される。また、ブランチルータ50は、通信相手となるブランチルータ60−1〜60−n毎にシーケンス番号ウィンドウを有しており、シーケンス番号ウィンドウを参照して、同じシーケンス番号が付与されたパケットを重複して受信した場合にはそのパケットは不正なパケットであるとして破棄する。
【0041】
図5はMPSAテーブル562に格納されている情報の一例を示す図である。
図5(A)はブランチルータ50がパケットを送信する場合に参照する情報であり、
図5(B)はブランチルータ50がパケットを受信する場合に参照する情報である。
図5(A)に示すように、ブランチルータ50がパケットを送信する場合は、対地(ブランチルータ60−1〜60−n)によらず、同じMPSA0を用いるとともに、同じシーケンス番号を用いる。このため、例えば、ブランチルータ60−1にパケットを1つ送信し、続いて、ブランチルータ60−nにパケットを1つ送信する場合、ブランチルータ60−1にはシーケンス番号が、例えば、“1”のパケットが送信され、ブランチルータ60−nにはシーケンス番号が1カウントアップされた“2”のパケットが送信される。なお、シーケンス番号は、例えば、ESPパケットの場合、32bitのビット長を有するデータであり、送信開始時には0とされ、パケットを送信する毎にカウントアップされ、最大値までカウントされた場合には、設定されたポリシーに基づいてMPSAを破棄するか0に戻って同じ動作を繰り返す。なお、
図5(A)に示すような対地を特定しないMPSAを、以下、必要に応じて「対地非特定MPSA」と呼ぶ。
【0042】
図5(B)に示すように、ブランチルータ50がパケットを受信する場合、同じMPSA0を用いるが、シーケンス番号ウィンドウについては対地毎に、すなわち、ブランチルータ60−1〜60−n毎にシーケンス番号ウィンドウを設けて個別に管理する。なお、
図5(B)に示すような対地を特定したMPSAを、以下、必要に応じて「対地特定MPSA」と呼ぶ。なお、実際の処理では、最初に「対地非特定MPSA」が設定され、その対地から正当なパケットを受信した場合に、「対地特定MPSA」に設定される。この処理の詳細については、
図9を参照して後述する。
【0043】
図6はシーケンス番号ウィンドウの動作を説明するための図である。
図6では、16bit分(16パケット分)の情報だけが例として示されている。もちろん、本発明が16bitに限定されるものではなく、リプレイ防御ウィンドウを広げることで無限のbit長に対応する。
図6(A)に示すように、初期状態(パケットが届く前の状態)では、シーケンス番号ウィンドウの全てのビットは“0”に設定される。なお、図中の破線の矩形は、リプレイ防御ウィンドウを示し、シーケンス番号ウィンドウではこの範囲の情報のみを管理しており、この範囲内の0のbitもしくはこの範囲より右側に該当するシーケンス番号を持ったパケットのみが受信の対象となり、それ以外のシーケンス番号を持ったパケットは受信しても破棄される。リプレイ防御ウィンドウは、初期状態では、シーケンス番号0に該当するbitを左端とする位置に設定される。
【0044】
このような状態において、特定の対地からシーケンス番号が“1”のパケットが届いたとすると、
図6(B)に示すように、シーケンス番号ウィンドウのLSB(Least Significant Bit)が“1”に設定される。つぎに、特定の対地からシーケンス番号が“2”のパケットが届いたとすると、
図6(C)に示すように、シーケンス番号ウィンドウのLSBから2番目のビットが“1”に設定される。つぎに、シーケンス番号が“3”のパケットが届かずに(例えば、他のブランチルータに送信され)、シーケンス番号が“4”のパケットが届いた場合、
図6(D)に示すように、シーケンス番号ウィンドウのLSBから3番目のビットが“0”のままで、シーケンス番号ウィンドウのLSBから4番目のビットが“1”に設定される。このような状態において、
図6(E)に示すように、シーケンス番号が“4”の不正なパケットが届いた場合には、シーケンス番号ウィンドウのLSBから4番目のビットは既に“1”に設定されているので、このパケットは不正であるとして破棄される。つぎに、シーケンス番号が“9”のパケットが届いた場合、
図6(F)に示すように、リプレイ防御ウィンドウが1bit分だけMSB(Most Significant Bit)側に移動されるとともに、シーケンス番号ウィンドウのLSBから9番目のビットが“1”に設定される。なお、リプレイ防御ウィンドウが移動すると、LSBは範囲から外れるので、例え、シーケンス番号が“1”のパケットがまだ届いていない状態であったとしても、リプレイ防御ウィンドウが移動した後に、シーケンス番号が“1”のパケットが届いたとしても破棄される。なお、更に詳細には、パケット受信時にシーケンス番号ウィンドウにより重複チェックを実施し、重複していないパケットの復号化処理まで成功した場合に該当bitを“1”に設定するとともに必要に応じてリプレイ防御ウィンドウの移動を実施する。
【0045】
つぎに、より具体的な動作について説明する。まず、ゲートウェイ10とブランチルータ50のIKE処理部13,53の間では、IKE_INIT交換によりIKE_SAで使用する暗号化アルゴリズム(暗号方式や認証方式)が決定され、鍵交換により暗号鍵が共有される。更にIKE_SAを通じ、IPsecでのCHILD_SAを通じた通信で使用される暗号化アルゴリズムが決定され、暗号鍵が共有される。この結果、
図1に示すように、ゲートウェイ10とブランチルータ50の間に暗号化トンネルとして、IKEメッセージの交換で使用されるIKE_SAとIPsecでの保護対象となるパケットを送受信するCHILD_SAが形成される。MPSA送信部15は、MPSA管理部16からグループ鍵を受け取り、この暗号化トンネルを介してグループ鍵をブランチルータ50に送信する。ブランチルータ50のMPSA受信部55は、ゲートウェイ10から暗号化アルゴリズムやグループ鍵を受信し、MPSA処理部56に供給する。
【0046】
同様の処理は、ゲートウェイ10とブランチルータ60の間でも実行され、ブランチルータ60のMPSA受信部65は、ブランチルータ50が受信したものと同じグループ鍵をゲートウェイ10から受信し、MPSA処理部66に供給する。この結果、ブランチルータ50とブランチルータ60が同じグループ鍵を保持することになる。
【0047】
ブランチルータ50とブランチルータ60は、このようにして取得したグループ鍵を用いることで、IPsecでの通信で使用される認証方式や暗号化のパラメータをブランチルータ間で個別に交換することなく、
図1に示すように、ブランチルータ50とブランチルータ60の間に暗号化トンネルとなるMPSAが形成され、このMPSAを介して暗号化通信を行うことが可能となる。なお、
図4に示すように、ブランチルータ60がn台存在する場合には、前述の場合と同様の処理がゲートウェイ10とブランチルータ60−1〜60−nのそれぞれとの間において実行され、ブランチルータ60−1〜60−nの間で個別にパラメータの受け渡しを行うことなく、これら全てのブランチルータにまたがるMPSAが形成される。
【0048】
このような状態において、例えば、
図4に示すブランチルータ50とブランチルータ60−1の間で通信を行う場合を例に挙げて以下に説明する。ブランチルータ50とブランチルータ60−1の間で通信を行う場合には、まず、ゲートウェイ10とこれらのブランチルータとの間でIKE_SAおよびCHILD_SAが形成され、更にゲートウェイ10から各ブランチルータにMPSAで使用する暗号化アルゴリズムやグループ鍵が通知されてMPSAが形成される。この結果、例えばブランチルータ50においては、ブランチルータ50からブランチルータ60−1の送信方向には
図4(A)に示す対地非特定のMPSA0が使用され、ブランチルータ60−1からブランチルータ50の受信方向には
図4(B)に示す対地特定のMPSA0が使用される。また、ブランチルータ50のMPSAテーブル562には、
図5(A)に示す情報(対地非特定MPSA)が、シーケンス番号が初期値“0”の状態で格納されるとともに、
図5(B)の1行目に示す対地が60−1に関する情報(対地特定MPSA)が、シーケンス番号ウィンドウが初期値“00000000”の状態で格納され、リプレイ防御ウィンドウ(図示していない)はMSBの位置に設定される。なお、
図5(A),(B)では全ての対地に関する情報が格納されているが、実際には通信が開始される際に、初めて情報が生成されて格納されるので、必要な記憶領域の量を減らすことができる。より具体的には、受信したESPパケットの送信元に該当する対地特定MPSAが生成されていなかった場合、シーケンス番号ウィンドウが初期値の状態の仮の対地特定MPSAを生成して受信処理を実施し、ESPパケットの復号化処理が成功して初めて正式な対地特定MPSAとして保持することができる。一方、受信したESPパケットの送信元に該当する対地特定MPSAが生成されていなかった場合であって、復号化処理に失敗したときには不正なパケットとして廃棄するとともに、生成した仮の対地特定MPSAも消去する。
【0049】
図4(A)に示すように、ブランチルータ50からパケットをブランチルータ60−1に送信する場合には、パケットを1つ送信する毎にシーケンス番号が“1”カウントアップされる。なお、このようなシーケンス番号のカウントアップは、ブランチルータ60−1だけではなく、全てのブランチルータ60−1〜60−nに対して実行される。例えば、ブランチルータ60−1にパケットが送信され、つぎに、ブランチルータ60−2にパケットが送信された場合には、シーケンス番号としては“1”と“2”がそれぞれESPパケット200のESPヘッダ202のシーケンス番号202sとして付与される。このようなESPパケット200を受信したブランチルータ60−1では、後述するような受信処理が実行されてパケットの正当が判定される。
【0050】
図4(B)に示すように、ブランチルータ60−1から送信されたパケットをブランチルータ50が受信する場合、ブランチルータ60−1は、パケットを1つ送信する毎にシーケンス番号を“1”カウントアップする。なお、このようなシーケンス番号のカウントアップは、ブランチルータ50に送信するパケットに対してだけでなく、全てのブランチルータに送信するパケットに対して実行される。例えば、ブランチルータ60−1が、ブランチルータ50にパケットを送信し、つぎに、ブランチルータ60−2にパケットを送信した場合には、シーケンス番号としては“1”と“2”がそれぞれESPパケット200のESPヘッダ202のシーケンス番号202sとして付与される。
【0051】
このようなESPパケット200を受信したブランチルータ50は、ESPパケット200のアウターIPヘッダ201に含まれる送信元アドレス201sから対地(ブランチルータ60−1)を特定し、この対地に対応する情報を
図5(B)に示す情報から特定する。いまの例では、
図5(B)の1行目の情報が特定される。つぎに、ESPパケット200のESPヘッダ202に格納されているシーケンス番号202sが取得され、シーケンス番号ウィンドウの対応するビットが参照される。例えば、シーケンス番号202sが“1”である場合に、シーケンス番号ウィンドウのMSBが“0”であるときにはこのパケットは正当であると判定されて受信される。一方、シーケンス番号ウィンドウのMSBが“1”であるときにはこのパケットは正当でないと判定されて破棄される。
【0052】
なお、前述のように、ブランチルータ60−1は、ブランチルータ50以外のブランチルータに対してパケットを送信する場合でも、シーケンス番号をカウントアップするので、ブランチルータ50が受信するパケットに付与されているシーケンス番号は、場合によっては飛び飛びの値となる。しかし、その場合でも、リプレイ防御ウィンドウが移動すれば、受信されなかったパケット(他のブランチルータに向けて送信されたパケット)は無視されるので、問題は生じない。
【0053】
以上の処理によれば、パケットを送信する場合には複数の対地に対して1つのシーケンス番号を準備し、パケットを受信する場合にはそれぞれの対地に対して1つずつシーケンス番号ウィンドウを準備し、このシーケンス番号ウィンドウに基づいて、パケットの重複を判断するようにした。このため、グループで1つのMPSAを共有するネットワークであっても、リプレイ攻撃を防ぐことが可能になる。また、パケットを受信した場合に初めて対地特定MPSAを設けるようにしたので、記憶領域の使用量を減らすことができる。
【0054】
つぎに、
図9,10を参照して、
図3に示すMPSA処理部56において実行される処理について説明する。
図3では主に、
図9のS11からS14を経てS19に至る処理について記している。
【0055】
図9は、パケットを受信した場合に実行される処理の流れを説明するためのフローチャートである。このフローチャートの処理が開始されると、以下のステップが実行される。
【0056】
ステップS10では、パケット送受信部51は、ESPパケット200を受信する。例えば、パケット送受信部51は、ブランチルータ60−1から送信されたパケットを受信する。
【0057】
ステップS11では、MPSA処理部56のMPSA検索部561は、ステップS10で受信したESPパケット200のSPI(Security Parameter Index)および送信元アドレス201sを参照し、MPSAテーブル562から対地特定MPSAを検索する。例えば、ブランチルータ60−1から送信されたESPパケット200を受信した場合には、
図5(B)に示す対地が60−1であるMPSAが検索される。
【0058】
ステップS12では、MPSA検索部561は、対地特定MPSAが存在するか否かを判定し、存在する場合(ステップS12:Yes)にはステップS13に進み、それ以外の場合(ステップS12:No)にはステップS14に進む。いまの例では、MPSAテーブル562にブランチルータ60−1に対応する対地特定MPSAが存在する場合にはステップS13に進み、それ以外の場合にはステップS14に進む。
【0059】
ステップS13では、対地特定MPSAが存在する場合には、その後の処理を継続する。より詳細には、送信元アドレス検査部563によってアウターIPヘッダ201に含まれる送信元アドレス201sが検査されて正当な送信元からパケットが送信されているか否かが判定される処理については既に対地特定MPSAが存在することで正当な送信元であることは判明しているので省略し、ESP復号部564によってESPパケット200が復号されるとともに対地特定MPSAのシーケンス番号ウィンドウを更新し、MPSA登録部565は対地特定MPSAが登録済みであるためスキップして、復号されて得られたIPパケット100がE−IPクライアントネットワーク70に対して送信される。
【0060】
ステップS14では、MPSA検索部561は、ステップS10で受信したESPパケット200のSPIを参照し、MPSAテーブル562から対地「非」特定MPSAを検索する。なお、この対地非特定MPSAとは、
図5(B)に示す対地が特定されていないMPSAであり、例えば、MPSAの種類(例えば、MPSA1)と、空欄とされた対地(例えば、空欄を示す「−」)と、初期値である“0”を有するシーケンス番号ウィンドウとからなる情報である。
【0061】
ステップS15では、MPSA検索部561は、対地非特定MPSAが存在するか否かを判定し、存在する場合(ステップS15:Yes)にはステップS17に進み、それ以外の場合(ステップS15:No)にはステップS16に進む。いまの例では、MPSAテーブル562に、前述した対地非特定MPSAが存在する場合にはステップS17に進み、それ以外の場合にはステップS16に進む。ステップS15ではステップS17でESP復号化処理を行う前に、送信元アドレス検査部563によってIPヘッダ201に含まれる送信元アドレス201sが検査されて正当な送信元からのパケットか否かを判定することができる。この判定は粗い判定処理であるため割愛してもよい。
【0062】
ステップS16では、MPSA検索部561は、処理対象となっているパケットを廃棄する。
【0063】
ステップS17では、ESP復号部564は、ESPパケット200を、ステップS15で特定された対地非特定MPSAから生成した仮の対地特定MPSAに基づいて復号化する。この結果、IPパケット100が得られる。
【0064】
ステップS18では、ESP復号部564は、復号処理の結果、処理の対象となるパケットが正当なパケットであるか否かを判定し、正当なパケットであると判定した場合(ステップS18:Yes)にはステップS19に進み、それ以外の場合(ステップS18:No)にはステップS16に進んでパケットを破棄する。例えば、復号化が適正に実行できたことにより、正当なパケットであると判定した場合には、ステップS19に進む。
【0065】
ステップS19では、MPSA登録部565は、ステップS15で特定した対地非特定MPSAに基づいて生成した仮の対地特定MPSAを正式な対地特定MPSAとして、MPSAテーブル562に登録する。例えば、ブランチルータ60−1からのパケットの場合には、
図5(B)の1行目に示す情報であって、シーケンス番号ウィンドウの受信したシーケンス番号に対応したBitが“1”に設定された対地特定MPSAがMPSAテーブル562に登録される。なお、登録が完了すると、これ以降は、対地特定MPSAが存在することになるので、ステップS12でYesと判定されてステップS13の処理が実行されることになる。
【0066】
ステップS20では、パケット送受信部57は、E−IPクライアントネットワーク70に対してパケットを転送する処理を実行する。
【0067】
つぎに、
図10を参照して、ブランチルータにおいて、パケットを送信する場合に実行される処理について説明する。
図10に示すフローチャートの処理が開始される前に、ゲートウェイ10から受信した経路情報とゲートウェイ10から受信した情報であるということに基づき、送信しようとするパケットの送信先アドレス(E−IPクライアントネットワークのアドレス)から、MPSAを介した送信先となるブランチルータ(対地)と、使用すべきMPSAが特定される。
図10に示すフローチャートの処理が開始されると、以下のステップが実行される。
【0068】
ステップS30では、MPSA検索部561は、経路情報から特定されたMPSAに適合する対地非特定MPSAをMPSAテーブル562から検索する。詳細には、
図5(A)に示す対地非特定MPSAがMPSAテーブル562から検索される。
【0069】
ステップS31では、MPSA検索部561は、該当する対地非特定MPSAがMPSAテーブル562に存在すると判定した場合(ステップS31:Yes)にはステップS32に進み、それ以外の場合(ステップS31:No)にはステップS33に進む。例えば、
図5(A)に示す対地非特定MPSAが存在する場合にはステップS32に進む。
【0070】
ステップS32では、MPSA処理部56は処理を継続する。具体的には、MPSA処理部56は、対地非特定MPSAに基づいて暗号化処理を行うとともに、シーケンス番号を付与し、ESPパケットを生成する。同時に対地非特定MPSAのシーケンス番号をカウントアップする。その後、パケット送受信部51に生成したESPパケットを供給する。この結果、パケット送受信部51は、パケットを送信する。
【0071】
ステップS33では、MPSA処理部56は、処理対象としているパケットを破棄する。
【0072】
以上の処理によれば、対地非特定MPSAが存在する相手を送信先とするパケットについては送信処理を実行し、存在しないパケットについては破棄することができる。
【0073】
(C)変形実施形態の説明
以上の各実施形態は一例であって、本発明が上述したような場合のみに限定されるものでないことはいうまでもない。例えば、
図1に示す実施形態では、ブランチルータが2台の場合を示したが、ブランチルータが3台以上存在する場合であっても、本発明を適用することが可能である。また、
図1に示す実施形態では、ブランチルータ50,60を有するグループが1つのみの場合を例に挙げて説明したが、2以上のグループが存在し、各グループ内で共通のMPSAを用いて暗号化通信を行う場合に、本発明を適用することも可能である。
【0074】
また、
図5に示すMPSAテーブルは一例であって、これ以外の方法でMPSAを管理するようにしてもよい。
【0075】
また、パケットを受信した場合に、対地特定MPSAを生成するようにしたが、ゲートウェイ10から受信した経路情報に基づき、全ての対地特定MPSAを常時有するようにしてもよい。
【0076】
また、
図6に示すシーケンス番号ウィンドウのビット数およびリプレイ防止ウィンドウのビット数は一例であって、これ以外のビット数であってもよい。
【0077】
また、いずれかのブランチルータが停電や故障によって再起動された場合、そのブランチルータのシーケンス番号が初期化されることから、他のブランチルータとの間で整合性がとれなくなることがある。そこで、
図11および
図12に示すように、いずれかのブランチルータが再起動された場合、MPSAを再登録するようにしてもよい。より詳細には、
図11はゲートウェイ10において実行される処理を示し、また、
図12はブランチルータ50,60において実行される処理を示す。
図11に示す処理が開始されると以下のステップが実行される。
【0078】
ステップS50では、SA処理部12は、所定のブランチルータ(BR)の正当性が確認されたか否かを判定し、正当性が確認された場合(ステップS50:Yes)にはステップS51に進み、それ以外の場合(ステップS50:No)には処理を終了する。例えば、ブランチルータ50が再起動され、このブランチルータ50から要求がなされた場合において、ブランチルータ50の正当性が確認できた場合にはステップS51に進む。
【0079】
ステップS51では、MPSA管理部16は、ステップS50において正当性が確認されたブランチルータがどのMPSAに属しているかを検索する。例えば、ブランチルータ50の正当性が確認できた場合には、ブランチルータ50の属しているMPSAが特定される。
【0080】
ステップS52では、SA処理部12は、ステップS51で特定した全てのブランチルータに対して、MPSAの再登録を要求する。例えば、ブランチルータ50の正当性が確認できた場合には、ブランチルータ50の属しているMPSAに含まれる全てのブランチルータ50,60に対して、MPSAの再登録を要求する。
【0081】
つぎに、
図11の要求がなされた場合におけるブランチルータの処理について
図12を参照して説明する。
図12の処理が実行されると以下のステップが実行される。なお、以下では、ブランチルータ60を例に挙げて動作を説明する。
【0082】
ステップS70では、MPSA処理部66は、ゲートウェイ(GW)10からMPSAの再登録の要求があったか否かを判定し、要求があったと判定した場合(ステップS70:Yes)にはステップS71に進み、それ以外の場合(ステップS70:No)にはステップS71に進む。例えば、ブランチルータ50が再起動された場合には、ステップS53の処理により、ゲートウェイ10から再登録の要求がなされるので、Yesと判定してステップS71に進む。
【0083】
ステップS71では、MPSA処理部56は、MPSAの再登録処理を開始する。
【0084】
ステップS72では、MPSA処理部56は、シーケンス番号を含めたMPSAの初期化処理を実行する。なお、MPSAの再登録および初期化処理が実行されると、それまで使用された古いMPSAの他に新たなMPSAが生成されることになるが、MPSA処理部66は、古いMPSAを直ちに削除するのではなく、古いMPSAと新しいMPSAの双方が一時的に併存する状態とし、例えば、再登録から所定の時間が経過するか、または、新たなMPSAによる受信が実行されたことをきっかけとして、古いMPSAを削除することで、パケットを失うことなく、古いMPSAから新しいMPSAへ移行することができる。
【0085】
ステップS73では、MPSA処理部56は、ステップS70においてゲートウェイ10からの要求に応答して再登録が終了したことをゲートウェイ10に通知するために、応答処理を実行する。この結果、ゲートウェイ10は、ブランチルータ50において再登録処理が終了したことを知ることができる。
【0086】
以上の処理によれば、ブランチルータが再起動された場合であっても、シーケンス番号の整合性を保つことができる。
【0087】
なお、前述した
図9〜12に示すフローチャートの処理は一例であって、このような処理のみに本発明が限定されるものではない。