以下、本発明の実施の形態を図面を参照して説明する。
(第1の実施の形態)
図1は、第1の実施の形態の計算機システムのブロック図である。
計算機システムは、通信網1、イニシエータ2、レスポンダ3、NAT4、SIPプロクシ6及び通信回線9を備える。
イニシエータ2は、図2で後述するが、SA(Security Association)の確立をレスポンダ3に要求する計算機である。
なお、SAは、イニシエータ2とレスポンダ3との間に確立される安全な通信路である。また、本実施の形態のSAは、IPsec SAのみを示すのではなく、IPsecにおけるセキュリティポリシ及びIPsec SAを含む。
レスポンダ3は、図3で後述するが、SAの確立をイニシエータ2から要求される計算機である。レスポンダ3は、SAの確立を要求されると、SIP(Session Initiation Protocol)メッセージを用いてSAを確立する。
イニシエータ2及びレスポンダ3は、PC(Personal Computer)又は電話型端末のような固定端末であってもよいし、携帯電話又はPDA(Personal Digital Assistant)のような移動端末であってもよい。
なお、イニシエータ2は、通信ごとの役割によって決まるので、通信によってはレスポンダとして動作してもよい。同様に、レスポンダ3は、通信ごとの役割によって決まるので、通信によってはイニシエータとして動作してもよい。一方、イニシエータ2は、レスポンダとして動作しないように設定されていてもよい。同様に、レスポンダ3は、イニシエータとして動作しないように設定されていてもよい。
NAT4は、NAT(Network Address Translation)機能を備える通信機器である。NAT4は、例えば、ブロードバンドルータ又はファイアウォール等である。具体的には、NAT4は、パケットの転送時に、当該パケットのアドレス情報を変換する。
SIPプロクシ6は、イニシエータ2とレスポンダ3との通信経路上に設置され、SIPメッセージを転送する。
NAT4、SIPプロクシ6及びレスポンダ3は、通信回線9によって通信網1に接続されている。イニシエータ2は、通信回線9によってNAT4に接続されている。つまり、イニシエータ2は、NAT4を介して通信網1に接続されている。
図2は、第1の実施の形態のイニシエータ2のブロック図である。
イニシエータ2は、インタフェース(IF)21、CPU22及びメモリ23を備える。IF21、CPU22及びメモリ23は、データパス24によって相互に接続されている。
IF21は、通信回線9を介して、NAT4等の外部の装置と接続されている。
CPU22は、メモリ23に記憶されているプログラムを実行することによって、各種処理を行う。例えば、CPU22は、IF21を介してパケットを送受信する。
メモリ23は、ネットワーク処理プログラム231、ネットワークアプリケーション(ネットワークAP)232、SA処理プログラム233及びSA情報テーブル234を記憶している。
ネットワーク処理プログラム231は、通信網1を介してデータを送受信する。ネットワーク処理プログラム231は、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)スタックである。
ネットワークAP232は、ネットワーク処理プログラム231を用いて、レスポンダ3のネットワークAPとの間でデータを送受信する。本実施の形態では、ネットワークAP232は、Webブラウザとする。
SA処理プログラム233は、SA情報テーブル234に格納されたSA情報に基づいて、SAを確立する。なお、SA情報は、SAの確立のために、イニシエータ2とレスポンダ3との間で交換される情報である。これによって、SA処理プログラム233は、暗号化又は認証などのセキュリティを確立する。なお、ネットワーク処理プログラム231は、パケットの送受信時にSA処理プログラム233を呼び出す。
また、SA処理プログラム233は、SAを確立するために、レスポンダ3とSA情報を交換する。そして、SA処理プログラム233は、SA情報テーブル234を更新する。
SA情報テーブル234は、図4で後述するが、SA情報が格納されるテーブルである。なお、SA情報は、SA情報テーブル234のような一つのテーブルに格納されてもよいし、IPsecのように複数のテーブルに分けて格納されてもよい。
本説明図は、イニシエータ2としての動作に最低限必要な構成のみを示す。よって、イニシエータ2及びレスポンダ3として動作する計算機は、レスポンダ3(図3)の構成を備える。
図3は、第1の実施の形態のレスポンダ3のブロック図である。
レスポンダ3は、インタフェース(IF)31、CPU32及びメモリ33を備える。IF31、CPU32及びメモリ33は、データパス34によって相互に接続されている。
IF31は、通信回線9及び通信網1を介して、外部の装置と接続されている。
CPU32は、メモリ33に記憶されているプログラムを実行することによって、各種処理を行う。例えば、CPU32は、IF31を介してパケットを送受信する。
メモリ33は、ネットワーク処理プログラム331、ネットワークアプリケーション(ネットワークAP)332、拡張SA処理プログラム333、SA情報テーブル334及びSA候補情報テーブル335を記憶している。
ネットワーク処理プログラム331は、通信網1を介してデータを送受信する。ネットワーク処理プログラム331は、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)スタックなどである。
ネットワークAP332は、ネットワーク処理プログラム331を用いて、イニシエータ2のネットワークAP232との間でデータを送受信する。本実施の形態では、ネットワークAP332は、Webサーバとする。
拡張SA処理プログラム333は、SA情報テーブル334に格納されたSA情報に基づいて、SAを確立する。これによって、拡張SA処理プログラム333は、暗号化又は認証などのセキュリティを確立する。なお、ネットワーク処理プログラム331は、パケットの送受信時に拡張SA処理プログラム333を呼び出す。
また、拡張SA処理プログラム333は、SAを確立するために、イニシエータ2とSA情報を交換する。そして、拡張SA処理プログラム333は、SA情報テーブル334を更新する。
また、拡張SA処理プログラム333は、アドレス情報に不明な部分があるSA情報を、SA候補情報として扱う。そして、拡張SA処理プログラム333は、SA候補情報をSA候補情報テーブル335に格納することによって、SA候補情報を管理する。更に、拡張SA処理プログラム333は、SA候補情報テーブル335に格納されたSA候補情報に基づいて、新たなSA情報を作成する。
SA情報テーブル334は、図5で後述するが、SA情報が格納されるテーブルである。なお、SA情報は、SA情報テーブル334のような一つのテーブルに格納されてもよいし、IPsecのように複数のテーブルに分けて格納されてもよい。
SA候補情報テーブル335は、図6で後述するが、SA候補情報が格納されるテーブルである。なお、SA候補情報は、SA候補情報テーブル335のような一つのテーブルに格納されてもよいし、複数のテーブルに分けて格納されてもよい。
図4は、第1の実施の形態のイニシエータ2のSA情報テーブル234の構成図である。
SA情報テーブル234は、方向2341、始点IPアドレス2342、始点ポート2343、終点IPアドレス2344、終点ポート2345、プロトコル2346、SPI2347、鍵データ2348及び有効期間2349を含む。
SA情報テーブル234の一つのレコードには、一つのSA情報が格納される。
方向2341は、当該SA情報のSAがパケットの受信時又はパケットの送信時のどちらで適用されるかを示す。具体的には、イニシエータ2がパケットを受信する時に適用されるSAのSA情報の方向2341には、「inbound」が格納される。一方、イニシエータ2がパケットを送信する時に適用されるSAのSA情報の方向2341には、「outbound」が格納される。
始点IPアドレス2342は、当該SA情報のSAが適用されるパケットの送信元のIPアドレスである。始点ポート2343は、当該SA情報のSAが適用されるパケットの送信元のポート番号である。
終点IPアドレス2344は、当該SA情報のSAが適用されるパケットの送信先のIPアドレスである。終点ポート2345は、当該SA情報のSAが適用されるパケットの送信先のポート番号である。
プロトコル2346は、当該SA情報のSAが適用されるパケットのプロトコルである。SPI2347は、イニシエータ2及びレスポンダ3が当該SA情報を一意に識別する識別子である。
鍵データ2348は、当該SA情報のSAが適用されるパケットを、暗号化又は復号化するための情報である。
有効期間2349は、当該SA情報のSAをパケットに適用する期間である。つまり、当該SA情報の作成時から有効期間2349が経過すると、イニシエータ2は、当該SA情報をSA情報テーブル234から削除する。
図5は、第1の実施の形態のレスポンダ3のSA情報テーブル334の構成図である。
SA情報テーブル334は、方向3341、始点IPアドレス3342、始点ポート3343、終点IPアドレス3344、終点ポート3345、プロトコル3346、SPI3347、鍵データ3348及び有効期間3349を含む。
SA情報テーブル334の一つのレコードには、一つのSA情報が格納される。
方向3341は、当該SA情報のSAがパケットの受信時又はパケットの送信時のどちらで適用されるかを示す。具体的には、レスポンダ3がパケットを受信する時に適用されるSAのSA情報の方向3341には、「inbound」が格納される。一方、レスポンダ3がパケットを送信する時に適用されるSAのSA情報の方向3341には、「outbound」が格納される。
始点IPアドレス3342は、当該SA情報のSAが適用されるパケットの送信元のIPアドレスである。始点ポート3343は、当該SA情報のSAが適用されるパケットの送信元のポート番号である。
終点IPアドレス3344は、当該SA情報のSAが適用されるパケットの送信先のIPアドレスである。終点ポート3345は、当該SA情報のSAが適用されるパケットの送信先のポート番号である。
プロトコル3346は、当該SA情報のSAが適用されるパケットのプロトコルである。SPI3347は、イニシエータ2及びレスポンダ3が当該SA情報を一意に識別する識別子である。
鍵データ3348は、当該SA情報のSAが適用されるパケットを、暗号化又は復号化するための情報である。
有効期間3349は、当該SA情報のSAをパケットに適用する期間である。つまり、当該SA情報の作成時から有効期間3349が経過すると、レスポンダ3は、当該SA情報をSA情報テーブル334から削除する。
図6は、第1の実施の形態のレスポンダ3のSA候補情報テーブル335の構成図である。
SA候補情報テーブル335は、ペアID3350、方向3351、始点IPアドレス3352、始点ポート3353、終点IPアドレス3354、終点ポート3355、プロトコル3356、SPI3357、鍵データ3358及びSAの有効期間3359及びSA候補の有効期間3360を含む。
SA候補情報テーブル335の一つのレコードには、一つのSA候補情報が格納される。
ペアID3350は、当該SA候補情報が属するペアの一意な識別子である。なお、レスポンダ3がイニシエータ2から受信するパケットに適用されるSAのSA候補情報と、当該レスポンダ3が当該イニシエータ2に送信するパケットに適用されるSAのSA候補情報とが、一つのペアとして取り扱われる。
方向3351は、当該SA候補情報に基づいて作成されるSA情報のSAがパケットの受信時又はパケットの送信時のどちらで適用されるかを示す。具体的には、レスポンダ3がパケットを受信する時に適用されるSAのSA候補情報の方向3351には、「inbound」が格納される。一方、レスポンダ3がパケットを送信する時に適用されるSAのSA候補情報の方向3351には、「outbound」が格納される。
始点IPアドレス3352は、当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットの送信元のIPアドレスである。始点ポート3353は、当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットの送信元のポート番号である。
終点IPアドレス3354は、当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットの送信先のIPアドレスである。終点ポート3355は、当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットの送信先のポート番号である。
なお、SA候補情報は、アドレス情報に不明な部分があるSA情報である。よって、SA候補情報テーブル335では、始点IPアドレス3352又は終点IPアドレス3354のいずれか一方が未定となる。同様に、始点ポート3353又は終点ポート3355のいずれか一方が未定となる。
プロトコル3356は、当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットのプロトコルである。SPI3357は、当該SA候補情報に基づいて作成されるSA情報の一意な識別子である。
鍵データ3358は、当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットを、暗号化又は復号化するための情報である。
SAの有効期間3359は、当該SA候補情報に基づいて作成されるSA情報のSAをパケットに適用する期間である。つまり、当該SA候補情報が作成された時からSAの有効期間3359が経過すると、レスポンダ3は、当該SA候補情報に基づいて作成されたSA情報を削除する。
SA候補の有効期間3360は、レスポンダ3が当該SA候補情報に基づいてSA情報を作成できる期間である。つまり、当該SA候補情報が作成された時からSA候補の有効期間3360を経過すると、レスポンダ3は、当該SA候補情報をSA候補情報テーブル335から削除する。これによって、レスポンダ3は、SA候補情報テーブル335から、不要なSA候補情報を削除できる。
図7は、第1の実施の形態の計算機システムのSA確立処理のシーケンス図である。
このシーケンス図の計算機システムは、イニシエータ2Aで動作するWebブラウザとレスポンダ3で動作するWebサーバとの間の通信を暗号化する。そのため、計算機システムは、イニシエータ2Aとレスポンダ3との間でSAを確立する。
ここでは、イニシエータ2AのIPアドレスは「172.16.0.1」である。また、NAT4の通信網1側のIPアドレスは「192.0.2.4」である。また、レスポンダ3のIPアドレスは「192.0.2.3」である。また、SIPプロクシ6のIPアドレスは「192.0.2.6」である。
まず、イニシエータ2Aは、何らかの契機になると、当該イニシエータ2Aとレスポンダ3との間にSAを確立する必要があると判定する。
ここでは、イニシエータ2Aのネットワーク処理プログラム231が、イニシエータ2AのネットワークAP232からパケット送信の要求を受ける。すると、当該ネットワーク処理プログラム231は、イニシエータ2AのSA処理プログラム233へSA確立を要求する。そして、当該SA処理プログラム233がSA確立の要求を受けると、イニシエータ2Aは、当該イニシエータ2Aのポート2345とレスポンダ3のポート80との間にSAを確立する必要があると判定する。
すると、イニシエータ2AのSA処理プログラム233は、当該イニシエータ2Aのポート5060から、INVITEメッセージを含むパケットをSIPプロクシ6宛てに送信する(S101)。なお、イニシエータ2Aのポート5060は、SIPのデフォルトポートである。
INVITEメッセージのボディ部には、提案用のSA情報が格納されている。提案用のSA情報には、レスポンダ3側からでは通信を開始できないアドレス「172.16.0.1:2345」が含まれる。なお、アドレス「172.16.0.1:2345」について説明する。当該アドレスのコロンの前の「172.16.0.1」がIPアドレスであり、当該アドレスのコロンの後の「2345」がポート番号である。
ここでは、SIPメッセージのボディ部に格納されたXML(eXtensible Markup Language)形式のSA情報を説明する。なお、SA情報は、他の形式でSIPメッセージに格納されてもよい。
図8は、第1の実施の形態のSA情報の説明図である。
SA情報は、ポリシ情報901、イニシエータアドレス情報902、レスポンダアドレス情報903及び鍵生成情報904を含む。
ポリシ情報901には、当該SA情報のSPI及び有効期間が含まれる。イニシエータアドレス情報902には、当該SA情報のSAを確立するイニシエータ2AのIPアドレス、ポート番号及びプロトコルが含まれる。レスポンダアドレス情報903には、当該SA情報のSAを確立するレスポンダ3のIPアドレス、ポート番号及びプロトコルが含まれる。鍵生成情報904には、当該SA情報の鍵データを生成するための情報が格納される。
ここで、図7に戻る。
NAT4は、INVITEメッセージを含むパケットをイニシエータ2Aから受信する。すると、NAT4は、受信したパケットの始点アドレスに対して、当該NAT4のアドレスを割り当てる(S102)。ここでは、NAT4は、パケットの始点アドレスの「172.16.0.1:5060」に対して、当該NAT4のアドレスの「192.0.2.4:1234」を割り当てる。
次に、NAT4は、受信したパケットの始点アドレスを、割り当てたアドレスに変換する。そして、NAT4は、アドレスを変換したパケットをSIPプロクシ6に送信する(S103)。以降、イニシエータ2AとSIPプロクシ6との通信では、NAT4によって割り当てられたアドレスがイニシエータ2Aのアドレスとして使用される。
次に、SIPプロクシ6は、INVITEメッセージを含むパケットをNAT4から受信する。すると、SIPプロクシ6は、受信したパケットをレスポンダ3に転送する(S104)。
レスポンダ3は、INVITEメッセージを含むパケットをSIPプロクシ6から受信する。すると、レスポンダ3は、受信したパケットをネットワーク処理プログラム331で処理する。
ネットワーク処理プログラム331は、受信したパケットがSA情報を含むと判定し、拡張SA処理プログラム333を呼び出す。
拡張SA処理プログラム333は、受信したパケットに含まれる提案用のSA情報を検査する。そして、拡張SA処理プログラム333は、検査した提案用のSA情報に基づいて、応答用のSA情報を作成する。なお、応答用のSA情報は、拡張SA処理プログラム333が使用を許可するSA情報である。
例えば、拡張SA処理プログラム333は、提案用のSA情報を複数受信した場合、受信した提案用のSA情報の中から、使用を許可するSA情報を選択する。そして、拡張SA処理プログラム333は、選択したSA情報を応答用のSA情報とする。
次に、拡張SA処理プログラム333は、作成した応答用のSA情報を成功応答メッセージに格納する。なお、成功応答メッセージは、例えば、200OKメッセージである。そして、拡張SA処理プログラム333は、成功応答メッセージを含むパケットを作成する。
次に、レスポンダ3のネットワーク処理プログラム331は、拡張SA処理プログラム333が作成したパケットをSIPプロクシ6に送信する(S105)。
次に、SIPプロクシ6は、成功応答メッセージを含むパケットを、レスポンダ3のネットワーク処理プログラム331から受信する。次に、SIPプロクシ6は、ステップS103で受信したINVITEメッセージを含むパケットの始点アドレス宛てに、受信した成功応答メッセージを含むパケットを転送する。つまり、SIPプロクシ6は、受信した成功応答メッセージを含むパケットを、NAT4に転送する(S106)。
次に、NAT4は、成功応答メッセージを含むパケットをSIPプロクシ6から受信する。次に、NAT4は、受信したパケットを、イニシエータ2Aに転送する(S107)。
次に、イニシエータ2Aは、成功応答メッセージを含むパケットをNAT4から受信する。以上のように、イニシエータ2A及びレスポンダ3は、SA情報を交換する。
次に、イニシエータ2Aは、ACKメッセージを含むパケットを、NAT4経由でSIPプロクシ6に送信する(S108、S109)。
次に、イニシエータ2Aは、ステップS107で受信したパケットに基づいて、SA情報テーブル234を更新する。
具体的には、イニシエータ2Aは、ステップS107で受信したパケットから、SA情報を抽出する。イニシエータ2Aは、抽出したSA情報が指定するSAの数だけ、SA情報テーブル234に新たなレコードを追加する。次に、イニシエータ2Aは、パケットを受信する際に適用されるSAに関するレコードの方向2341には「inbound」を格納する。一方、イニシエータ2Aは、パケットを送信する際に適用されるSAに関するレコードの方向2341には「outbound」を格納する。
次に、イニシエータ2Aは、抽出したSA情報のイニシエータアドレス情報902から、IPアドレス、ポート番号及びプロトコルを抽出する。次に、イニシエータ2Aは、方向2341に「outbound」を格納した場合、抽出したIPアドレスを新たなレコードの始点IPアドレス2342に格納する。一方、イニシエータ2Aは、方向2341に「inbound」を格納した場合、抽出したIPアドレスを新たなレコードの終点IPアドレス2344に格納する。
次に、イニシエータ2Aは、方向2341に「outbound」を格納した場合、抽出したポート番号を新たなレコードの始点ポート2343に格納する。一方、イニシエータ2Aは、方向2341に「inbound」を格納した場合、抽出したポート番号を新たなレコードの終点ポート2345に格納する。次に、抽出したプロトコルを、新たなレコードのプロトコル2346に格納する。
次に、イニシエータ2Aは、抽出したSA情報のレスポンダアドレス情報903から、IPアドレス及びポート番号を抽出する。次に、イニシエータ2Aは、方向2341に「outbound」を格納した場合、抽出したIPアドレスを新たなレコードの終点IPアドレス2344に格納する。一方、イニシエータ2Aは、方向2341に「inbound」を格納した場合、抽出したIPアドレスを新たなレコードの始点IPアドレス2342に格納する。
次に、イニシエータ2Aは、方向2341に「outbound」を格納した場合、抽出したポート番号を新たなレコードの終点ポート2345に格納する。一方、イニシエータ2Aは、方向2341に「inbound」を格納した場合、抽出したポート番号を新たなレコードの始点ポート2343に格納する。
次に、イニシエータ2Aは、抽出したSA情報のポリシ情報901から、SPI及び有効期間を抽出する。次に、抽出したSPIを、新たなレコードのSPI2347に格納する。次に、抽出した有効期間を、新たなレコードの有効期間2348に格納する。
次に、イニシエータ2Aは、抽出したSA情報の鍵生成情報904に基づいて、鍵データを生成する。そして、イニシエータ2Aは、生成した鍵データを、新たなレコードの鍵データ2348に格納する。
以上のように、イニシエータ2Aは、SA情報テーブル234を更新する(S111)。なお、イニシエータ2Aは、必要な情報が揃った時に、SA情報テーブル234を更新してもよい。
一方、SIPプロクシ6は、ACKメッセージを含むパケットをイニシエータ2Aから受信する。すると、SIPプロクシ6は、受信したパケットをレスポンダ3に転送する(S110)。
次に、レスポンダ3は、ACKメッセージを含むパケットをSIPプロクシ6から受信する。すると、レスポンダ3は、イニシエータ2Aから通知されたアドレスと直接通信できるかどうかを判定する。
具体的には、レスポンダ3は、ステップS104で受信したパケットに含まれるSA情報から、イニシエータアドレス情報902を抽出する。次に、レスポンダ3は、抽出したアドレス情報902に含まれるアドレスの「172.16.0.1:2345」と直接通信できるかどうかを判定する。
例えば、レスポンダ3は、以下の三つの方法のいずれかを用いて、当該レスポンダ3とイニシエータ2Aとの通信経路上にNAT4が存在するかどうかを判定する。そして、NAT4が存在すると、レスポンダ3は、イニシエータ2Aから通知されたアドレスと直接通信できないと判定する。一方、NAT4が存在しないと、レスポンダ3は、イニシエータ2Aから通知されたアドレスと直接通信できると判定する。
(1)SA情報の交換中に、レスポンダ3がNAT4の存在を検出する。
(2)SA情報の交換中に、SIPプロクシ6がNAT4の存在を検出する。そして、SIPプロクシ6は、レスポンダ4へNAT4の存在を通知する。
(3)SA情報の交換中に、イニシエータ2がレスポンダ3へNAT4の存在を通知する。
まず、方法(1)の具体例を説明する。例えば、レスポンダ3は、イニシエータ2Aから通知されたIPアドレスがプライベートIPアドレスかどうかを判定する。そして、レスポンダ3は、イニシエータ2Aから通知されたIPアドレスがプライベートIPアドレスであると判定すると、通信経路上にNAT4が存在すると判定する。よって、方法(1)の場合、イニシエータ2及びSIPプロクシ6は、特別な処理を行う必要がない。
次に、方法(2)の具体例を説明する。例えば、SIPプロクシ6は、ステップS103で受信したパケットのアドレス情報と当該パケットに格納されているSA情報のイニシエータアドレス情報902とを比較することによって、NAT4の存在を検出する。そして、SIPプロクシ6は、NAT4の存在を検出すると、ステップS104でレスポンダ3に転送するパケットのヘッダ部又はボディ部に、NAT4の存在を示す文字列を挿入する。そして、レスポンダ3は、ステップ104で受信したパケットからNAT4の存在を示す文字列を検出すると、通信経路上にNAT4が存在すると判定する。
次に、方法(3)の具体例を説明する。例えば、イニシエータ2は、NAT4の存在を事前に通知されている。また、イニシエータ2は、STUNサーバなどを用いて、NAT4の存在を事前に検出してもよい。そして、イニシエータ2は、NAT4の存在を確認している場合、ステップS101で送信するパケットのヘッダ部又はボディ部に、NAT4の存在を示す文字列を挿入する。そして、レスポンダ3は、ステップS104で受信したパケットからNAT4の存在を示す文字列を検出すると、通信経路上にNAT4が存在すると判定する。
次に、レスポンダ3は、イニシエータ2Aから通知されたアドレスと直接通信できると判定すると、SA情報テーブル334(図5)を更新する。具体的には、レスポンダ3は、ステップS105で送信したパケットに基づいて、SA情報テーブル334を更新する。レスポンダ3のSA情報テーブル334の更新処理は、イニシエータ2のSA情報テーブル234の更新処理(S111)と同様であるので、説明を省略する。
一方、レスポンダ3は、イニシエータ2Aから通知されたアドレスと直接通信できないと判定すると、SA候補情報テーブル335(図6)を更新する。
まず、レスポンダ3は、ステップS105で送信したパケットに基づいて、SA候補情報テーブル335を更新する。
具体的には、レスポンダ3は、ステップS105で送信したパケットから、SA情報を抽出する。レスポンダ3は、抽出したSA情報が指定するSAの数だけ、SA候補情報テーブル335に新たなレコードを追加する。
レスポンダ3は、新たなレコードのペアID3350に、新たに追加したレコードのすべてに共通する値を格納する。このとき、レスポンダ3は、他のレコードのペアID3350と重複しない値を選択し、新たなレコードのペアID3350に格納する。
次に、レスポンダ3は、パケットを受信する際に適用されるSAに関するレコードの方向3351には「inbound」を格納する。一方、レスポンダ3は、パケットを送信する際に適用されるSAに関するレコードの方向3351には「outbound」を格納する。
次に、レスポンダ3は、方向3351に「inbound」を格納した場合、新たなレコードの始点IPアドレス3352及び始点ポート3353に「未定」を格納する。一方、レスポンダ3は、方向3351に「outbound」を格納した場合、新たなレコードの終点IPアドレス3354及び終点ポート3355に「未定」を格納する。
次に、レスポンダ3は、抽出したSA情報のレスポンダアドレス情報903から、IPアドレス及びポート番号を抽出する。
次に、レスポンダ3は、方向3351に「inbound」を格納した場合、抽出したIPアドレスを新たなレコードの終点IPアドレス3354に格納する。一方、レスポンダ3は、方向3351に「outbound」を格納した場合、抽出したIPアドレスを新たなレコードの始点IPアドレス3352に格納する。
次に、レスポンダ3は、方向3351に「inbound」を格納した場合、抽出したポート番号を新たなレコードの終点ポート3355に格納する。一方、レスポンダ3は、方向3351に「outbound」を格納した場合、抽出したポート番号を新たなレコードの始点ポート3353に格納する。
次に、レスポンダ3は、抽出したSA情報のポリシ情報901から、SPI及び有効期間を抽出する。次に、抽出したSPIを、新たなレコードのSPI3357に格納する。次に、抽出した有効期間を、新たなレコードのSAの有効期間3359に格納する。
次に、レスポンダ3は、抽出したSA情報の鍵生成情報904に基づいて、鍵データを生成する。例えば、レスポンダ3は、Diffie−Hellman鍵交換によって、鍵データを生成する。そして、レスポンダ3は、生成した鍵データを、新たなレコードの鍵データ3358に格納する。
次に、レスポンダ3は、予め設定された値を、新たなレコードのSA候補の有効期間3360に格納する。
以上のように、レスポンダ3は、SA候補情報テーブル335を更新する(S112)。
その後、イニシエータ2AのネットワークAP232が、イニシエータ2Aのポート2345からレスポンダ3のポート80へのパケットの送信を、イニシエータ2Aのネットワーク処理プログラム231に要求したとする。このとき、ネットワークAP232が送信を要求するパケットは、SA確立の契機となったパケットをバッファしておいたものでもよい。
イニシエータ2Aのネットワーク処理プログラム231は、ネットワークAP232からパケットの送信を要求される。すると、ネットワーク処理プログラム231は、送信パケットにセキュリティ機能を提供するために、イニシエータ2AのSA処理プログラム233を呼び出す。
SA処理プログラム233は、送信パケットから、当該送信パケットの始点IPアドレス、始点ポート、終点IPアドレス及び終点ポートを抽出する。次に、抽出した始点IPアドレスとSA情報テーブル234の始点IPアドレス2342とが一致するレコードを、SA情報テーブル234から選択する。
次に、SA処理プログラム233は、抽出した始点ポートとSA情報テーブル234の始点ポート2343とが一致するレコードを、選択したレコードの中から選択する。次に、抽出した終点IPアドレスとSA情報テーブル234の終点IPアドレス2344とが一致するレコードを、選択したレコードの中から選択する。更に、抽出した終点ポートとSA情報テーブル234の終点ポート2345とが一致するレコードを、選択したレコードの中から選択する。
そして、SA処理プログラム233は、選択したレコードの鍵データ2348に基づいて、送信パケットを暗号化する。なお、SA処理プログラム233の暗号化処理は、従来のIPsec等における暗号化処理と同一である。
次に、ネットワーク処理プログラム231は、SA処理プログラム233が暗号化したパケットをレスポンダ3宛てに送信する(S113)。
すると、NAT4は、イニシエータ2Aからパケットを受信する。次に、NAT4は、受信したパケットの始点アドレスに対して、当該NAT4のアドレスを割り当てる(S114)。ここでは、NAT4は、パケットの始点アドレスの「172.16.0.1:2345」に対して、当該NAT4のアドレスの「192.0.2.4:1235」を割り当てる。
次に、NAT4は、受信したパケットの始点アドレスを、割り当てたアドレスに変換する。そして、NAT4は、アドレスを変換したパケットをレスポンダ3に送信する(S115)。
以降、イニシエータ2Aとレスポンダ3との通信では、NAT4が割り当てたアドレスがイニシエータ2Aのアドレスとして使用される。
レスポンダ3は、パケットをNAT4から受信する。すると、レスポンダ3は、受信パケットをネットワーク処理プログラム331で処理する。
ネットワーク処理プログラム331は、受信パケットが暗号化されていると判定し、拡張SA処理プログラム333を呼び出す。
すると、拡張SA処理プログラム333は、受信パケット処理を行う。なお、拡張SA処理プログラム333の受信パケット処理は、図9で詳細を説明する。
その後、レスポンダ3のネットワークAP332が、レスポンダ3のポート80からNAT4のポート1235へのパケットの送信を、レスポンダ3のネットワーク処理プログラム331に要求したとする。
レスポンダ3のネットワーク処理プログラム331は、ネットワークAP332からパケット送信要求を受ける。すると、ネットワーク処理プログラム331は、送信パケットにセキュリティ機能を提供するために、レスポンダ3の拡張SA処理プログラム333を呼び出す。
すると、拡張SA処理プログラム333は、送信パケット処理を行うことによって、送信パケットを暗号化する。なお、拡張SA処理プログラム333の送信パケット処理は、図10で詳細を説明する。
次に、レスポンダ3のネットワーク処理プログラム331は、拡張SA処理プログラム333が暗号化したパケットをNAT4に送信する(S117)。
NAT4は、レスポンダ3からパケットを受信する。すると、NAT4は、受信したパケットをイニシエータ2Aに転送する(S118)。
イニシエータ2Aは、NAT4からパケットを受信する。すると、イニシエータ2Aは、受信パケットをネットワーク処理プログラム231で処理する。ネットワーク処理プログラム231は、受信パケットが暗号化されていると判定し、SA処理プログラム233を呼び出す。
すると、SA処理プログラム233は、SA情報テーブル234を参照して、受信パケットを復号化する。なお、SA処理プログラム233の復号化処理は、従来のIPsec等における処理と同一である。
図9は、第1の実施の形態の拡張SA処理プログラム333の受信パケット処理のフローチャートである。
拡張SA処理プログラム333は、受信パケットの情報に基づいて、当該受信パケットに対応するSA情報をSA情報テーブル334から選択する(S201)。
受信パケットにSPIが含まれない場合、拡張SA処理プログラム333は、受信パケットのアドレス情報に基づいて、SA情報テーブル334からレコードを選択する。
具体的には、拡張SA処理プログラム333は、受信パケットから、当該受信パケットの始点IPアドレス、始点ポート、終点IPアドレス及び終点ポートを抽出する。次に、抽出した始点IPアドレスとSA情報テーブル334の始点IPアドレス3342とが一致するレコードを、SA情報テーブル334から選択する。
次に、拡張SA処理プログラム333は、抽出した始点ポートとSA情報テーブル334の始点ポート3343とが一致するレコードを、選択したレコードの中から選択する。次に、抽出した終点IPアドレスとSA情報テーブル334の終点IPアドレス3344とが一致するレコードを、選択したレコードの中から選択する。更に、抽出した終点ポートとSA情報テーブル334の終点ポート3345とが一致するレコードを、選択したレコードの中から選択する。そして、選択したレコードを、受信パケットに対応するSA情報とする。
一方、受信パケットにSPIが含まれる場合、拡張SA処理プログラム333は、受信パケットのSPIに基づいて、SA情報テーブル334からレコードを選択する。
具体的には、拡張SA処理プログラム333は、受信パケットに含まれるSPIとSA情報テーブル334のSPI3347とが一致するレコードを、SA情報テーブル334から選択する。そして、選択したレコードを、受信パケットに対応するSA情報とする。
次に、拡張SA処理プログラム333は、受信パケットに対応するSA情報をSA情報テーブル334から選択できたかどうかを判定する(S202)。
拡張SA処理プログラム333は、受信パケットに対応するSA情報を選択できなかった場合、そのままステップS205に進む。
一方、拡張SA処理プログラム333は、受信パケットに対応するSA情報を選択できた場合、選択したSA情報に対応するレコードから、鍵データ3348を抽出する。そして、抽出した鍵データ3348を用いて、受信パケットを復号化処理する(S203)。
次に、拡張SA処理プログラム333は、受信パケットの復号化に成功したかどうかを判定する(S204)。具体的には、拡張SA処理プログラム333は、受信パケットのセキュリティヘッダに含まれるチェックサム又は鍵付きハッシュ値などを用いて、受信パケットの復号化に成功したかどうかを判定する。
拡張SA処理プログラム333は、受信パケットの復号化に成功すると、復号化した受信パケットをネットワーク処理プログラム331に送る。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、受信パケットの復号化に失敗すると、ステップS205に進む。
従来のIPsec等では、レスポンダ3は、ステップS202でSA情報を選択できなかったと判定した場合又はステップS204で受信パケットの復号化に失敗したと判定した場合、パケットを破棄していた。
ところが、拡張SA処理プログラム333は、受信パケットの情報に基づいて、当該受信パケットに対応するSA候補情報をSA候補情報テーブル335から選択する(S205)。
受信パケットにSPIが含まれない場合、拡張SA処理プログラム333は、受信パケットのアドレス情報に基づいて、SA候補情報テーブル335からレコードを選択する。
具体的には、拡張SA処理プログラム333は、受信パケットから、当該受信パケットの始点IPアドレス、始点ポート、終点IPアドレス及び終点ポートを抽出する。次に、抽出した始点IPアドレスとSA候補情報テーブル335の始点IPアドレス3352とが一致するレコードを、SA候補情報テーブル335から選択する。
次に、拡張SA処理プログラム333は、抽出した始点ポートとSA候補情報テーブル335の始点ポート3353とが一致するレコードを、選択したレコードの中から選択する。次に、抽出した終点IPアドレスとSA候補情報テーブル335の終点IPアドレス3354とが一致するレコードを、選択したレコードの中から選択する。更に、抽出した終点ポートとSA候補情報テーブル335の終点ポート3355とが一致するレコードを、選択したレコードの中から選択する。そして、選択したレコードを、受信パケットに対応するSA候補情報とする。
このとき、拡張SA処理プログラム333は、「未定」が格納されている始点IPアドレス3352、始点ポート3353、終点IPアドレス3354又は終点ポート3355を、「any(全ての条件を満たす)」として扱う。
一方、受信パケットにSPIが含まれる場合、拡張SA処理プログラム333は、受信パケットのSPIに基づいて、SA候補情報テーブル335からレコードを選択する。
具体的には、拡張SA処理プログラム333は、受信パケットに含まれるSPIとSA候補情報テーブル33のSPI3357とが一致するレコードを、SA候補情報テーブル335から選択する。そして、選択したレコードを、受信パケットに対応するSA候補情報とする。
次に、拡張SA処理プログラム333は、受信パケットに対応するSA候補情報をSA候補情報テーブル335から選択できたかどうかを判定する(S206)。
拡張SA処理プログラム333は、受信パケットに対応するSA候補情報を選択できなかった場合、受信パケットを復号化できない。よって、拡張SA処理プログラム333は、パケットを破棄する(S210)。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、受信パケットに対応するSA候補情報を選択できた場合、選択したSA候補情報に対応するレコードから、鍵データ3358を抽出する。そして、抽出した鍵データ3358を用いて、受信パケットを復号化処理する(S207)。
次に、拡張SA処理プログラム333は、受信パケットの復号化に成功したかどうかを判定する(S208)。
拡張SA処理プログラム333は、受信パケットの復号化に失敗すると、受信パケットを復号化できない。よって、拡張SA処理プログラム333は、パケットを破棄する(S210)。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、受信パケットの復号化に成功すると、復号化に成功したSA候補情報に対応するレコードを、SA候補情報テーブル335から選択する。そして、受信パケットの始点アドレスの「192.0.2.4:1235」及びSA候補情報テーブル335から選択したレコードに基づいて、SA情報を作成する(S212)。具体的には、新たなSA情報の始点IPアドレスに、受信パケットの始点IPアドレスの「192.0.2.4」を格納する。次に、新たなSA情報の始点ポートに、受信パケットの始点ポートの「1235」を格納する。
次に、拡張SA処理プログラム333は、SA候補情報テーブル335から選択したレコードから、ペアID3350を抽出する。次に、抽出したペアID3350とSA候補情報テーブル335のペアID3350とが一致するレコードを、SA候補情報テーブル335から選択する(S213)。
次に、拡張SA処理プログラム333は、ペアID3350が一致するレコードをSA候補情報テーブル335から選択できたかどうかを判定する(S214)。
拡張SA処理プログラム333は、ペアID3350が一致するレコードを選択できなかった場合、同時に作成するSA情報が存在しないと判定し、そのままステップS216に進む。
一方、拡張SA処理プログラム333は、ペアID3350が一致するレコードを選択できた場合、選択したレコード及び受信パケットの始点アドレスの「192.0.2.4:1235」に基づいて、SA情報を作成する(S215)。具体的には、新たなSA情報の終点IPアドレスに、受信パケットの始点IPアドレスの「192.0.2.4」を格納する。次に、新たなSA情報の終点ポートに、受信パケットの始点ポートの「1235」を格納する。
これによって、拡張SA処理プログラム333は、ステップS212で作成した受信用(inbound)のSA情報に対応する送信用(outbound)のSA情報を作成する。
次に、拡張SA処理プログラム333は、ステップS212及びステップS215で作成したSA情報をSA情報テーブル335に格納する(S216)。
これによって、拡張SA処理プログラム333は、受信用及び送信用のSA情報をSA情報テーブル335に格納する。例えば、拡張SA処理プログラム333は、図6に示すSA候補情報テーブル335に基づいて、図5に示すSA情報テーブル334を作成する。なお、拡張SA処理プログラム333は、ステップS214でペアID3350が一致するレコードを選択できなかった場合、送信用のSA情報を作成しない。
次に、拡張SA処理プログラム333は、ステップS205及びステップS213で選択したレコードを、SA候補情報テーブル335から削除する(S217)。
次に、拡張SA処理プログラム333は、復号化した受信パケットをネットワーク処理プログラム331に送る。そして本処理を終了する。
図10は、第1の実施の形態の拡張SA処理プログラム333の送信パケット処理のフローチャートである。
拡張SA処理プログラム333は、送信パケットのアドレス情報に基づいて、当該送信パケットに対応するSA情報をSA情報テーブル334から選択する(S601)。
具体的には、拡張SA処理プログラム333は、送信パケットから、当該送信パケットの始点IPアドレス、始点ポート、終点IPアドレス及び終点ポートを抽出する。次に、抽出した始点IPアドレスとSA情報テーブル334の始点IPアドレス3342とが一致するレコードを、SA情報テーブル334から選択する。
次に、拡張SA処理プログラム333は、抽出した始点ポートとSA情報テーブル334の始点ポート3343とが一致するレコードを、選択したレコードの中から選択する。次に、抽出した終点IPアドレスとSA情報テーブル334の終点IPアドレス3344とが一致するレコードを、選択したレコードの中から選択する。更に、抽出した終点ポートとSA情報テーブル334の終点ポート3345とが一致するレコードを、選択したレコードの中から選択する。そして、選択したレコードを、送信パケットに対応するSA情報とする。
次に、拡張SA処理プログラム333は、送信パケットに対応するSA情報をSA情報テーブル334から選択できたかどうかを判定する(S602)。
拡張SA処理プログラム333は、送信パケットに対応するSA情報を選択できなかった場合、送信パケットを暗号化できない。よって、拡張SA処理プログラム333は、送信パケットを破棄する(S605)。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、送信パケットに対応するSA情報を選択できた場合、送信パケットを暗号化できる。
ここで、拡張SA処理プログラム333は、ステップS601で複数のSA情報を選択した場合、選択した複数のSA情報の中から一つを選択する(S603)。例えば、拡張SA処理プログラム333は、選択した複数のSA情報の中から、セキュリティポリシを適用する条件が最も厳しいSA情報を選択する。
次に、拡張SA処理プログラム333は、選択したSA情報に対応するレコードから、鍵データ3348を抽出する。そして、抽出した鍵データ3348を用いて、送信パケットを暗号化処理する(S604)。
次に、拡張SA処理プログラム333は、暗号化した送信パケットをネットワーク処理プログラム331に送る。そして、本処理を終了する。
以上のように、拡張SA処理プログラム333の送信パケット処理は、従来のIPsec等における処理と同一であり、SA候補情報を用いない。
本実施の形態では、レスポンダ3は、アドレス情報が不明なSA情報であるSA候補情報を一時的に記憶している。そして、レスポンダ3は、SA候補情報に基づいて、SA情報を作成する。これによって、本実施の形態のイニシエータ2及びレスポンダ3は、NAT4のアドレスを事前に予約することなく、NAT4の介在する通信に対してSAを確立できる。そのため、イニシエータ2のネットワークAP232及びNAT4が、特別な処理をする必要がない。
(第2の実施の形態)
第2の実施の形態では、レスポンダ3は、SA情報及びSA候補情報を、一つのテーブルでまとめて管理する。
第2の実施の形態の計算機システムの構成は、レスポンダ3の構成を除き、第1の実施の形態の計算機システム(図1)と同一である。また、第2の実施の形態の計算機システムの処理は、レスポンダ3の受信パケット処理を除き、第1の実施の形態(図7)と同一である。よって、同一の構成及び同一の処理の説明は省略する。
図11は、第2の実施の形態のレスポンダ3のブロック図である。
第2の実施の形態のレスポンダ3は、SA情報テーブル334及びSA候補情報テーブル335の代わりに、SA情報&SA候補情報テーブル337をメモリ33に記憶する。第2の実施の形態のレスポンダ3のそれ以外の構成は、第1の実施の形態のレスポンダ(図3)と同一である。同一の構成には同一の番号を付すことによって、説明を省略する。
SA情報&SA候補情報テーブル337は、図12で後述するが、SA情報及びSA候補情報が併せて格納される。
図12は、第2の実施の形態のレスポンダ3のSA情報&SA候補情報テーブル337の構成図である。
SA情報&SA候補情報テーブル337は、ペアID3370、状態3371、方向3372、始点IPアドレス3373、始点ポート3374、終点IPアドレス3375、終点ポート3376、プロトコル3377、SPI3378、鍵データ3379及びSAの有効期間3380及びSA候補の有効期間3381を含む。
SA情報&SA候補情報テーブル337の一つのレコードには、SA情報又はSA候補情報のいずれか一つが格納される。
ペアID3370は、当該SA情報又は当該SA候補情報が属するペアの一意な識別子である。
状態3371は、当該レコードにSA情報又はSA候補情報のいずれが格納されているかを示す。つまり、当該レコードがSA情報であると、状態3371には「完成」が格納される。また、当該レコードがSA候補情報であると、状態3371には「候補」が格納される。
方向3372は、当該SA情報のSA又は当該SA候補情報に基づいて作成されるSA情報のSAがパケットの受信時又はパケットの送信時のどちらで適用されるかを示す。
始点IPアドレス3373は、当該SA情報のSA又は当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットの送信元のIPアドレスである。始点ポート3374は、当該SA情報のSA又は当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットの送信元のポート番号である。
終点IPアドレス3375は、当該SA情報のSA又は当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットの送信先のIPアドレスである。終点ポート3376は、当該SA情報のSA又は当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットの送信先のポート番号である。
プロトコル3377は、当該SA情報のSA又は当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットのプロトコルである。SPI3378は、当該SA情報又は当該SA候補情報に基づいて作成されるSA情報の一意な識別子である。
鍵データ3379は、当該SA情報のSA又は当該SA候補情報に基づいて作成されるSA情報のSAが適用されるパケットを、暗号化又は復号化するための情報である。
SAの有効期間3380は、当該SA情報のSA又は当該SA候補情報に基づいて作成されるSA情報のSAをパケットに適用する期間である。
SA候補の有効期間3381は、レスポンダ3が当該SA候補情報に基づいてSA情報を作成できる期間である。よって、当該レコードがSA情報であると、SA候補の有効期間3381には値が格納されない。
図13は、第2の実施の形態の拡張SA処理プログラム333の受信パケット処理のフローチャートである。
拡張SA処理プログラム333は、受信パケットの情報に基づいて、当該受信パケットに対応するSA情報及びSA候補情報をSA情報&SA候補情報テーブル337から選択する(S301)。
受信パケットにSPIが含まれない場合、拡張SA処理プログラム333は、受信パケットのアドレス情報に基づいて、SA情報&SA候補情報テーブル337からレコードを選択する。
具体的には、拡張SA処理プログラム333は、受信パケットから、当該受信パケットの始点IPアドレス、始点ポート、終点IPアドレス及び終点ポートを抽出する。次に、抽出した始点IPアドレスとSA情報&SA候補情報テーブル337の始点IPアドレス3373とが一致するレコードを、SA情報&SA候補情報テーブル337から選択する。
次に、拡張SA処理プログラム333は、抽出した始点ポートとSA情報&SA候補情報テーブル337の始点ポート3374とが一致するレコードを、選択したレコードの中から選択する。次に、抽出した終点IPアドレスとSA情報&SA候補情報テーブル337の終点IPアドレス3375とが一致するレコードを、選択したレコードの中から選択する。更に、抽出した終点ポートとSA情報&SA候補情報テーブル337の終点ポート3376とが一致するレコードを、選択したレコードの中から選択する。そして、選択したレコードを、受信パケットに対応するSA情報又はSA候補情報とする。
一方、受信パケットにSPIが含まれる場合、拡張SA処理プログラム333は、受信パケットのSPIに基づいて、SA情報&SA候補情報テーブル337からレコードを選択する。
具体的には、拡張SA処理プログラム333は、受信パケットに含まれるSPIとSA情報&SA候補情報テーブル337のSPI3378とが一致するレコードを、SA情報&SA候補情報テーブル337から選択する。そして、選択したレコードを、受信パケットに対応するSA情報又はSA候補情報とする。
次に、拡張SA処理プログラム333は、受信パケットに対応するSA情報及びSA候補情報の少なくとも一方をSA情報&SA候補情報テーブル337から選択できたかどうかを判定する(S302)。
拡張SA処理プログラム333は、受信パケットに対応するSA情報及びSA候補情報のどちらも選択できなかった場合、受信パケットを復号化できない。よって、拡張SA処理プログラム333は、パケットを破棄する(S210)。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、受信パケットに対応するSA情報及びSA候補情報の少なくとも一方を選択できた場合、選択したSA情報又はSA候補情報に対応するレコードから、鍵データ3348を抽出する。そして、抽出した鍵データ3348を用いて、受信パケットを復号化処理する(S303)。
次に、拡張SA処理プログラム333は、選択したSA情報を用いて受信パケットの復号化に成功したかどうかを判定する(S304)。
拡張SA処理プログラム333は、SA情報による受信パケットの復号化に成功すると、復号化した受信パケットをネットワーク処理プログラム331に送る。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、SA情報による受信パケットの復号化に失敗すると、選択したSA候補情報を用いて受信パケットの復号化に成功したかどうかを判定する(S305)。
拡張SA処理プログラム333は、SA候補情報による受信パケットの復号化に失敗すると、受信パケットを復号化できない。よって、拡張SA処理プログラム333は、パケットを破棄する(S210)。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、SA候補情報による受信パケットの復号化に成功すると、ステップS212からステップS217までを実行する。なお、ステップS212からステップS217は、第1の実施の形態の拡張SA処理プログラム333の受信パケット処理(図9)におけるステップと同一である。同一のステップには同一の番号を付すことによって、説明を省略する。
以上のように、第2の実施の形態のレスポンダ3は、SA情報&SA候補情報テーブル337を備えることによって、SA情報及びSA候補情報を同時に検索できる。
(第3の実施の形態)
第3の実施の形態では、イニシエータ2とレスポンダ3とが、SA情報を直接交換する。
図14は、第3の実施の形態の計算機システムのブロック図である。
第3の実施の形態の計算機システムは、SIPプロクシ6を備えない。第3の実施の形態の計算機システムのそれ以外の構成は、第1の実施の形態の計算機システム(図1)と同一である。同一の構成には同一の番号を付すことによって、説明を省略する。
なお、イニシエータ2及びレスポンダ3は、IKEなどの鍵交換プロトコルを用いて、SAを確立する。
図15は、第3の実施の形態の計算機システムのSA確立処理のシーケンス図である。
イニシエータ2A及びレスポンダ3は、Phase1の通信を行う(S1101)。具体的には、イニシエータ2A及びレスポンダ3は、パケットを送受信することによって、互いのIDを交換する。そして、イニシエータ2A及びレスポンダ3は、Phase2の通信の方式を決定する。
なお、NAT4は、イニシエータ2Aから最初のパケットを受信すると、当該パケットの始点アドレスに対して、当該NAT4のアドレスを割り当てる(S1102)。
次に、イニシエータ2A及びレスポンダ3は、Phase2の通信を行う(S1103)。具体的には、イニシエータ2A及びレスポンダ3は、Phase1で決定した方式でパケットを送受信することによって、SA情報を交換する。これによって、イニシエータ2A及びレスポンダ3は、SAを確立する。
そして、第3の実施の形態の計算機システムは、ステップS111からステップS118までを実行する。
なお、ステップS111からステップS118は、第1の実施の形態の計算機システムのSA確立処理(図7)におけるステップと同一である。同一のステップには同一の番号を付すことによって、説明を省略する。
第3の実施の形態によると、SIPプロクシ6を備えない計算機システムは、SAを確立するための通信と確立したSAを利用する通信とで異なるアドレスを用いても、SAを確立できる。
(第4の実施の形態)
第4の実施の形態では、ロードバランサがレスポンダにパケットを振り分ける。
図16は、第4の実施の形態の計算機システムのブロック図である。
計算機システムは、通信網1、イニシエータ2、レスポンダ3、SIPプロクシ6、ロードバランサ7及び通信回線9を備える。
イニシエータ2、SIPプロクシ6及びロードバランサ7は、通信回線9によって通信網1に接続されている。レスポンダ3は、通信回線9によってロードバランサ7に接続されている。つまり、レスポンダ3は、ロードバランサ7を介して通信網1に接続されている。
なお、通信網1、イニシエータ2、レスポンダ3及びSIPプロクシ6は、第1の実施の形態の計算機システム(図1)の構成と同一である。同一の構成には同一の番号を付すことによって、説明を省略する。
但し、第3の実施の形態のレスポンダ3には、ロードバランサ7の存在、当該ロードバランサ7のアドレス情報及び他のレスポンダ3のアドレス情報が事前に設定されている。
ロードバランサ7は、通信網1から受信したパケットの終点アドレスを変換し、当該パケットをレスポンダ3のいずれかに転送する。
図17は、第4の実施の形態の計算機システムのSA確立処理のシーケンス図である。
このシーケンス図の計算機システムは、イニシエータ2Aで動作するWebブラウザとレスポンダ3Bで動作するWebサーバとの間の通信を暗号化する。そこで、イニシエータ2Aとレスポンダ3Aとが、SA情報を交換する。その後、レスポンダ3Bは、レスポンダ3AとSA候補情報を交換することによって、イニシエータ2Aとの間にSAを確立する。
ここでは、イニシエータ2AのIPアドレスは「192.0.2.2」である。また、ロードバランサ7の通信網1側のIPアドレスは「192.0.2.7」である。また、レスポンダ3AのIPアドレスは「172.16.0.1」である。また、レスポンダ3BのIPアドレスは「172.16.0.2」である。また、SIPプロクシ6のIPアドレスは「192.0.2.6」である。
まず、イニシエータ2Aは、何らかの契機になると、当該イニシエータ2Aとロードバランサ7との間にSAを確立する必要があると判定する。
ここでは、イニシエータ2Aのネットワーク処理プログラム231が、イニシエータ2AのネットワークAP232からパケット送信の要求を受ける。すると、当該ネットワーク処理プログラム231は、イニシエータ2AのSA処理プログラム233へSAの確立を要求する。そして、当該SA処理プログラム233がSA確立要求を受けると、イニシエータ2Aは、当該イニシエータ2Aのポート2345とロードバランサ7のポート80との間にSAを確立する必要があると判定する。
すると、イニシエータ2AのSA処理プログラム233は、当該イニシエータ2Aのポート5060から、提案用のSA情報が格納されたINVITEメッセージを含むパケットをSIPプロクシ6に送信する(S701)。なお、イニシエータ2Aのポート5060は、SIPのデフォルトポートである。また、INVITEメッセージへ格納されたSA情報は、第1の実施の形態のSA情報(図8)と同一であるので、説明を省略する。
SIPプロクシ6は、INVITEメッセージを含むパケットをイニシエータ2Aから受信する。すると、SIPプロクシ6は、受信したパケットをロードバランサ7に転送する(S702)。
ロードバランサ7は、INVITEメッセージを含むパケットをSIPプロクシ6から受信する。すると、ロードバランサ7は、受信したパケットの転送先を、接続しているレスポンダ3の中から選択する。ここでは、ロードバランサ7は、受信したパケットの転送先として、レスポンダ3Aを選択したとする(S703)。
次に、ロードバランサ7は、受信したパケットの終点アドレスを、転送先のレスポンダ3Aのアドレスである「172.16.0.1:5060」に変換する。そして、ロードバランサ7は、アドレスを変換したパケットを、転送先のレスポンダ3Aに送信する(S704)。
レスポンダ3Aは、INVITEメッセージを含むパケットをSIPプロクシ6から受信する。すると、レスポンダ3Aは、受信したパケットをネットワーク処理プログラム331で処理する。
ネットワーク処理プログラム331は、受信したパケットがSA情報を含むと判定し、拡張SA処理プログラム333を呼び出す。
拡張SA処理プログラム333は、受信したパケットに含まれる提案用のSA情報を検査する。そして、拡張SA処理プログラム333は、検査した提案用のSA情報に基づいて、応答用のSA情報を作成する。なお、応答用のSA情報は、拡張SA処理プログラム333が使用を許可するSA情報である。このとき、拡張SA処理プログラム333は、作成する応答用のSA情報に、レスポンダ3Aのアドレス情報の代わりに、ロードバランサ7のアドレス情報を含める。
次に、拡張SA処理プログラム333は、作成した応答用のSA情報を成功応答メッセージに格納する。そして、拡張SA処理プログラム333は、成功応答メッセージを含むパケットを作成する。
次に、レスポンダ3Aのネットワーク処理プログラム331は、拡張SA処理プログラム333が作成したパケットをロードバランサ7に送信する(705)。
ロードバランサ7は、成功応答メッセージを含むパケットを、レスポンダ3Aのネットワーク処理プログラム331から受信する。すると、ロードバランサ7は、受信したパケットの始点アドレスを、当該ロードバランサ7のアドレスに変換する。そして、ロードバランサ7は、アドレスを変換したパケットを、SIPプロクシ6に送信する(S706)。
SIPプロクシ6は、成功応答メッセージを含むパケットをネットワーク処理プログラム331から受信する。次に、SIPプロクシ6は、受信したパケットを、イニシエータ2Aに転送する(S707)。
イニシエータ2Aは、成功応答メッセージを含むパケットをSIPプロクシ6から受信する。以上のように、イニシエータ2A及びレスポンダ3Aは、SA情報を交換する。次に、イニシエータ2Aは、ACKメッセージを含むパケットを、SIPプロクシ6に送信する(S708)。
次に、イニシエータ2Aは、ステップS707で受信したパケットに基づいて、SA情報テーブル234を更新する(S711)。なお、イニシエータ2AのSA情報テーブル234の更新処理は、第1の実施の形態の計算機システムのSA確立処理(図7)のステップS111と同一であるので、詳細な説明は省略する。
一方、SIPプロクシ6は、ACKメッセージを含むパケットをイニシエータ2Aから受信する。すると、SIPプロクシ6は、受信したパケットを、ロードバランサ7経由でレスポンダ3Aに転送する(S709、S710)。
レスポンダ3Aは、ACKメッセージを含むパケットを受信する。すると、レスポンダ3Aは、ロードバランサ7の存在を事前に設定されているので、SA候補情報テーブル335(図6)を更新する。
次に、レスポンダ3Aは、ステップS705で送信したパケットに基づいて、SA候補情報テーブル335を更新する。
具体的には、レスポンダ3Aは、ステップS705で送信したパケットから、SA情報を抽出する。レスポンダ3Aは、抽出したSA情報が指定するSAの数だけ、SA候補情報テーブル335に新たなレコードを追加する。
次に、レスポンダ3Aは、新たなレコードのペアID3350に、新たに追加したレコードのすべてに共通する値を格納する。ここでは、レスポンダ3Aは、、他のレコードのペアID3350と重複しない値を選択し、新たなレコードのペアID3350に格納する。次に、レスポンダ3は、パケットを受信する際に適用されるSAに関するレコードの方向3351には「inbound」を格納する。一方、レスポンダ3Aは、パケットを送信する際に適用されるSAに関するレコードの方向3351には「outbound」を格納する。
次に、レスポンダ3Aは、抽出したSA情報のイニシエータアドレス情報902から、IPアドレス、ポート番号及びプロトコルを抽出する。次に、レスポンダ3Aは、方向3351に「inbound」を格納した場合、抽出したIPアドレスを新たなレコードの始点IPアドレス3352に格納する。一方、レスポンダ3Aは、方向3351に「outbound」を格納した場合、抽出したIPアドレスを新たなレコードの終点IPアドレス3354に格納する。
次に、レスポンダ3Aは、方向3351に「inbound」を格納した場合、抽出したポート番号を新たなレコードの始点ポート3353に格納する。一方、レスポンダ3Aは、方向3351に「outbound」を格納した場合、抽出したポート番号を終点ポート3355に格納する。次に、抽出したプロトコルを、新たなレコードのプロトコル3356に格納する。
次に、レスポンダ3Aは、方向3351に「inbound」を格納した場合、新たなレコードの終点IPアドレス3354及び終点ポート3355に「未定」を格納する。一方、レスポンダ3Aは、方向3351に「outbound」を格納した場合、新たなレコードの始点IPアドレス3352及び始点ポート3353に「未定」を格納する。
次に、レスポンダ3Aは、抽出したSA情報のポリシ情報901から、SPI及び有効期間を抽出する。次に、抽出したSPIを、新たなレコードのSPI3357に格納する。次に、抽出した有効期間を、新たなレコードのSAの有効期間3359に格納する。
次に、レスポンダ3Aは、抽出したSA情報の鍵生成情報904に基づいて、鍵データを生成する。そして、レスポンダ3Aは、生成した鍵データを、新たなレコードの鍵データ3358に格納する。
次に、レスポンダ3Aは、予め設定された値を、新たなレコードのSA候補の有効期間3360に格納する。
以上のように、レスポンダ3Aは、SA候補情報テーブル335を更新する(S712)。
その後、イニシエータ2AのネットワークAP232が、イニシエータ2Aのポート2345からロードバランサ7のポート80へのパケットの送信を、イニシエータ2Aのネットワーク処理プログラム231に要求したとする。このとき、ネットワークAP232が送信を要求するパケットは、SA確立の契機となったパケットをバッファしておいたものでもよい。
イニシエータ2Aのネットワーク処理プログラム231は、ネットワークAP232からパケット送信要求を受ける。すると、ネットワーク処理プログラム231は、送信パケットにセキュリティ機能を提供するために、イニシエータ2AのSA処理プログラム233を呼び出す。
SA処理プログラム233は、送信パケットから、当該送信パケットの始点IPアドレス、始点ポート、終点IPアドレス及び終点ポートを抽出する。次に、抽出した始点IPアドレスとSA情報テーブル234の始点IPアドレス2342とが一致するレコードを、SA情報テーブル234から選択する。
次に、SA処理プログラム233は、抽出した始点ポートとSA情報テーブル234の始点ポート2343とが一致するレコードを、選択したレコードの中から選択する。次に、抽出した終点IPアドレスとSA情報テーブル234の終点IPアドレス2344とが一致するレコードを、選択したレコードの中から選択する。更に、抽出した終点ポートとSA情報テーブル234の終点ポート2345とが一致するレコードを、選択したレコードの中から選択する。
そして、SA処理プログラム233は、選択したレコードの鍵データ2348に基づいて、送信パケットを暗号化する。なお、SA処理プログラム233の暗号化処理は、従来のIPsec等における暗号化処理と同一である。
次に、イニシエータ2Aのネットワーク処理プログラム231は、SA処理プログラム233が暗号化したパケットをロードバランサ7に送信する(S713)。
ロードバランサ7は、イニシエータ2Aからパケットを受信する。すると、ロードバランサ7は、受信したパケットの転送先を、接続しているレスポンダ3の中から選択する。ここでは、ロードバランサ7は、受信したパケットの転送先として、レスポンダ3Bを選択したとする(S714)。
次に、ロードバランサ7は、受信したパケットの終点アドレスを、転送先のレスポンダ3Bのアドレスの「172.16.0.2:80」に変換する。そして、ロードバランサ7は、アドレスを変換したパケットを、転送先のレスポンダ3Bに送信する(S715)。
レスポンダ3Bは、パケットをロードバランサ7から受信する。すると、レスポンダ3は、受信パケットをネットワーク処理プログラム331で処理する。
ネットワーク処理プログラム331は、受信パケットが暗号化されていると判定し、拡張SA処理プログラム333を呼び出す。
すると、拡張SA処理プログラム333は、受信パケット処理を行う。なお、拡張SA処理プログラム333の受信パケット処理は、図18A及び図18Bで詳細を説明する。
ここでは、レスポンダ3Bは、当該レスポンダ3BのSA情報テーブル334及びSA候補情報テーブル335に基づいて、受信パケットを復号化できない。そこで、レスポンダ3Bは、他のすべてのレスポンダ3にSA候補情報検索要求を送信する(S716)。なお、SA候補情報検索要求には、検索条件が含まれる。
レスポンダ3Aは、受信したSA候補情報検索要求に含まれる検索条件を満たすSA候補情報を、当該レスポンダ3AのSA候補情報テーブル335から抽出する。次に、レスポンダ3Aは、抽出したSA候補情報を含むSA候補情報検索応答を作成する。そして、レスポンダ3Aは、作成したSA候補情報検索応答をレスポンダ3Bに送信する(S717)。
レスポンダ3Bは、SA候補情報検索応答を受信する。次に、レスポンダ3Bは、受信したSA候補情報検索応答に含まれるSA候補情報を用いて、受信パケットを復号化する。そして、レスポンダ3Bは、復号化に成功したSA候補情報に基づいて、SA情報を作成する(S718)。
次に、レスポンダ3Bは、作成したSA情報を当該レスポンダ3BのSA情報テーブル334に格納する。次に、レスポンダ3Bは、復号化に成功したSA候補情報の削除要求をレスポンダ3Aに送信する(S719)。
すると、レスポンダ3Aは、削除を要求されたSA候補情報を、当該レスポンダ3AのSA候補情報テーブル335から削除する。
その後、レスポンダ3BのネットワークAP332が、パケットの送信をレスポンダ3のネットワーク処理プログラム331に要求したとする。
レスポンダ3のネットワーク処理プログラム331は、ネットワークAP332からパケット送信要求を受ける。すると、ネットワーク処理プログラム331は、送信パケットにセキュリティ機能を提供するために、レスポンダ3Bの拡張SA処理プログラム333を呼び出す。
すると、拡張SA処理プログラム333は、送信パケット処理を行うことによって、送信パケットを暗号化する。なお、拡張SA処理プログラム333の送信パケット処理は、第1の実施の形態(図10)と同一であるので、説明を省略する。
次に、レスポンダ3Bのネットワーク処理プログラム331は、拡張SA処理プログラム333が暗号化したパケットをイニシエータ2A宛てに送信する(S720)。
すると、ロードバランサ7は、レスポンダ3Bからパケットを受信する。すると、ロードバランサ7は、受信したパケットの始点アドレスを当該ロードバランサ7のアドレスに変換する。そして、ロードバランサ7は、アドレスを変換したパケットを、イニシエータ2Aに送信する(S721)。
イニシエータ2Aは、ロードバランサ7からパケットを受信する。すると、イニシエータ2Aは、受信パケットをネットワーク処理プログラム231で処理する。ネットワーク処理プログラム231は、受信パケットが暗号化されていると判定し、SA処理プログラム233を呼び出す。
すると、SA処理プログラム233は、SA情報テーブル234を参照して、受信パケットを復号化する。なお、SA処理プログラム233の復号化処理は、従来のIPsec等における処理と同一である。
図18A及び図18Bは、第4の実施の形態の拡張SA処理プログラム333の受信パケット処理のフローチャートである。
まず、拡張SA処理プログラム333は、ステップS201からステップS208までを実行する。なお、ステップS201からステップS208までは、第1の実施の形態の拡張SA処理プログラム333の受信パケット処理(図9)におけるステップと同一である。同一のステップには同一の番号を付すことによって、説明を省略する。
拡張SA処理プログラム333は、受信パケットの復号化に成功したとステップS208で判定すると、ステップS212からステップS217までを実行する。なお、ステップS212からステップS217までは、第1の実施の形態の拡張SA処理プログラム333の受信パケット処理(図9)におけるステップと同一である。同一のステップには同一の番号を付すことによって、説明を省略する。
一方、拡張SA処理プログラム333は、受信パケットの復号化に失敗したとステップS208で判定すると、SA候補情報を他の装置から取得できるかどうかを判定する。具体的には、拡張SA処理プログラム333は、当該拡張SA処理プログラム333を備えるレスポンダ3が他のレスポンダ3と連携しているかどうかを判定する(S209)。
拡張SA処理プログラム333は、他のレスポンダ3と連携していないと判定すると、受信パケットを復号化できない。よって、拡張SA処理プログラム333は、パケットを破棄する(S210)。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、他のレスポンダ3と連携していると判定すると、当該他のレスポンダ3のSA候補情報を用いて、受信パケットの復号化を試みる。
具体的には、拡張SA処理プログラム333は、当該拡張SA処理プログラムを備えるレスポンダ3以外のすべてのレスポンダ3に、SA候補情報検索要求を送信する。なお、SA候補情報検索要求には、受信パケットのSPI及びアドレス情報のうち少なくとも一方が検索条件として含まれている。
他のレスポンダ3のそれぞれは、SA候補情報検索要求を受信すると、当該SA候補情報検索要求から受信パケットのSPI又はアドレス情報を抽出する。そして、当該他のレスポンダ3は、抽出したSPI又はアドレス情報に基づいて、自身のSA候補情報テーブル335から、受信パケットに対応するSA候補情報を選択する。なお、レスポンダ3のSA候補情報の選択処理は、ステップS205と同一である。よって、詳細な説明は省略する。更に、当該他のレスポンダ3は、選択したSA候補情報と同一のペアIDを持つSA候補情報を、自身のSA候補情報テーブル335から選択する。
そして、当該他のレスポンダ3は、選択したSA候補情報を含むSA候補情報検索応答を、SA候補情報検索要求の送信元のレスポンダ3の拡張SA処理プログラム333に送信する。
SA候補情報検索要求の送信元のレスポンダ3の拡張SA処理プログラム333は、SA候補情報検索応答を受信する。これによって、拡張SA処理プログラム333は、受信パケットに対応するSA候補情報を、当該拡張SA処理プログラム333を備えるレスポンダ3以外のレスポンダ3のSA候補情報テーブル335から取得する(S401)。
次に、拡張SA処理プログラム333は、受信パケットに対応するSA候補情報を取得できたかどうかを判定する(S402)。
拡張SA処理プログラム333は、受信パケットに対応するSA候補情報を取得できなかった場合、受信パケットを復号化できない。よって、拡張SA処理プログラム333は、パケットを破棄する(S405)。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、受信パケットに対応するSA候補情報を取得できた場合、取得したSA候補情報から、鍵データを抽出する。そして、抽出した鍵データを用いて、受信パケットを復号化処理する(S403)。
次に、拡張SA処理プログラム333は、受信パケットの復号化に成功したかどうかを判定する(S404)。
拡張SA処理プログラム333は、受信パケットの復号化に失敗すると、受信パケットを復号化できない。よって、拡張SA処理プログラム333は、パケットを破棄する(S405)。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、受信パケットの復号化に成功すると、復号化に成功したSA候補情報及び受信パケットの終点アドレスに基づいて、SA情報を作成する(S406)。
次に、拡張SA処理プログラム333は、受信パケットの復号化に成功したSA候補情報からペアIDを抽出する。次に、抽出したペアIDと同一のペアIDを持つSA候補情報を、ステップS401で取得したSA候補情報の中から選択する(S407)。
次に、拡張SA処理プログラム333は、同一のペアIDを持つSA候補情報を選択できたかどうかを判定する(S408)。
拡張SA処理プログラム333は、同一のペアIDを持つSA候補情報を選択できなかった場合、そのままステップS410に進む。
一方、拡張SA処理プログラム333は、同一のペアIDを持つSA候補情報を選択できた場合、選択したSA候補情報及び受信パケットの終点アドレスに基づいて、SA情報を作成する(S409)。
これによって、拡張SA処理プログラム333は、ステップS406で作成した受信用(inbound)のSA情報に対応する送信用(outbound)のSA情報を作成する。
次に、拡張SA処理プログラム333は、作成したSA情報をSA情報テーブル335に格納する(S410)。
次に、拡張SA処理プログラム333は、SA情報の作成に用いたSA候補情報の削除要求を、当該拡張SA処理プログラム333を備えるレスポンダ3以外のレスポンダ3に送信する(S411)。SA候補情報の削除要求には、受信パケットのSPI及びアドレス情報のうち少なくとも一方が削除条件として含まれている。
次に、拡張SA処理プログラム333は、復号化した受信パケットをネットワーク処理プログラム331に送る。そして、本処理を終了する。
一方、他のレスポンダ3のそれぞれは、SA候補情報の削除要求を受信すると、当該削除要求に含まれる削除条件を満たすSA候補情報を、自身のSA候補情報テーブル335から削除する。
ロードバランサ7は、SAを確立するための通信と確立したSAを利用する通信とを対応付けることができない。従って、ロードバランサ7は、SAを確立するための通信と確立したSAを利用する通信とを異なるレスポンダ3に振り分ける可能性がある。このような場合であっても、第4の実施の形態のイニシエータ2及びレスポンダ3は、SAを確立できる。
(第5の実施の形態)
第5の実施の形態では、データベースが、すべてのSA候補情報を管理する。
図19は、第5の実施の形態の計算機システムのブロック図である。
第5の計算機システムは、SA候補情報データベース(SA候補情報DB)5を備える。第5の実施の形態の計算機システムのそれ以外の構成は、第4の実施の形態の計算機システム(図16)と同一である。同一の構成には同一の番号を付すことによって、説明を省略する。
なお、第5の実施の形態のレスポンダ3は、SA候補情報テーブル335をメモリ33に記憶してもよいし、記憶しなくてもよい。また、当該レスポンダ3は、ロードバランサ7の存在、当該ロードバランサ7のアドレス情報及びSA候補情報DB5のアドレス情報が事前に設定されている。
SA候補情報DB5は、ハードディスク等のストレージシステムで実現されるデータベース装置であり、SA候補情報テーブル335を記憶している。SA候補情報DB5は、レスポンダ3からの要求に応じて、記憶しているSA候補情報テーブル335を更新する。
図20は、第5の実施の形態の計算機システムのSA確立処理のシーケンス図である。
このシーケンス図の計算機システムは、イニシエータ2Aで動作するWebブラウザとレスポンダ3Bで動作するWebサーバとの間の通信を暗号化する。そこで、イニシエータ2Aとレスポンダ3Aとが、SA情報を交換する。次に、レスポンダ3Aは、交換したSA情報に基づいて、SA候補情報を作成する。そして、レスポンダ3Aは、作成したSA候補情報をSA候補情報DB5に登録する。その後、レスポンダ3Bは、SA候補情報DB5からSA候補情報を検索することによって、イニシエータ2Aとの間にSAを確立する。
ここでは、イニシエータ2AのIPアドレスは「192.0.2.2」である。また、ロードバランサ7の通信網1側のIPアドレスは「192.0.2.7」である。また、レスポンダ3AのIPアドレスは「172.16.0.1」である。また、レスポンダ3BのIPアドレスは「172.16.0.2」である。また、SIPプロクシ6のIPアドレスは「192.0.2.6」である。
まず、計算機システムは、ステップS701からステップS711までを実行する。なお、ステップS701からステップS711までは、第4の実施の形態の計算機システムのSA確立処理(図17)におけるステップと同一である。同一のステップには同一の番号を付すことによって、説明を省略する。
レスポンダ3Aは、ステップS710において、ACKメッセージを含むパケットを受信する。すると、レスポンダ3Aは、ロードバランサ7の存在を事前に設定されているので、SA候補情報を作成する(S812)。そして、レスポンダ3Aは、SA候補情報登録をSA候補情報DB5に送信することによって、作成したSA候補情報をSA候補情報DB5のSA候補情報テーブル335に格納する(S813)。
具体的には、レスポンダ3Aは、ステップS705で送信したパケットから、SA情報を抽出する。レスポンダ3Aは、抽出したSA情報が指定するSAの数だけ、SA候補情報DB5のSA候補情報テーブル335に新たなレコードを追加する。
次に、レスポンダ3Aは、新たなレコードのペアID3350に、新たに追加したレコードのすべてに共通する値を格納する。ここでは、レスポンダ3Aは、他のレコードのペアID3350と重複しない値を選択し、新たなレコードのペアID3350に格納する。
次に、レスポンダ3Aは、パケットを受信する際に適用されるSAに関するレコードの方向3351には「inbound」を格納する。一方、レスポンダ3Aは、パケットを送信する際に適用されるSAに関するレコードの方向3351には「outbound」を格納する。
次に、レスポンダ3Aは、抽出したSA情報のイニシエータアドレス情報902から、IPアドレス、ポート番号及びプロトコルを抽出する。次に、レスポンダ3Aは、方向3351に「inbound」を格納した場合、抽出したIPアドレスを新たなレコードの始点IPアドレス3352に格納する。一方、レスポンダ3Aは、方向3351に「outbound」を格納した場合、抽出したIPアドレスを新たなレコードの終点IPアドレス3354に格納する。
次に、レスポンダ3Aは、方向3351に「inbound」を格納した場合、抽出したポート番号を新たなレコードの始点ポート3353に格納する。一方、レスポンダ3Aは、方向3351に「outbound」を格納した場合、抽出したポート番号を新たなレコードの終点ポート3355に格納する。次に、抽出したプロトコルを、新たなレコードのプロトコル3356に格納する。
次に、レスポンダ3Aは、方向3351に「inbound」を格納した場合、新たなレコードの終点IPアドレス3354及び終点ポート3355に「未定」を格納する。一方、レスポンダ3Aは、方向3351に「outbound」を格納した場合、新たなレコードの始点IPアドレス3352及び始点ポート3353に「未定」を格納する。
次に、レスポンダ3Aは、抽出したSA情報のポリシ情報901から、SPI及び有効期間を抽出する。次に、抽出したSPIを、新たなレコードのSPI3357に格納する。次に、抽出した有効期間を、新たなレコードのSAの有効期間3359に格納する。
次に、レスポンダ3Aは、抽出したSA情報の鍵生成情報904に基づいて、鍵データを生成する。そして、レスポンダ3Aは、生成した鍵データを、新たなレコードの鍵データ3358に格納する。
次に、レスポンダ3Aは、予め設定された値を、新たなレコードのSA候補の有効期間3360に格納する。
以上のように、レスポンダ3Aは、SA候補情報DB5のSA候補情報テーブル335を更新する。なお、レスポンダ3Aは、自身でもSA候補情報テーブル335を記憶している場合には、当該SA候補情報テーブル335も更新する。
その後、イニシエータ2AのネットワークAP232が、イニシエータ2Aのポート2345からロードバランサ7のポート80へのパケットの送信を、イニシエータ2Aのネットワーク処理プログラム231に要求したとする。
イニシエータ2Aのネットワーク処理プログラム231は、ネットワークAP232からパケット送信要求を受ける。すると、ネットワーク処理プログラム231は、送信パケットにセキュリティ機能を提供するために、イニシエータ2AのSA処理プログラム233を呼び出す。
SA処理プログラム233は、送信パケットから、当該送信パケットの始点IPアドレス、始点ポート、終点IPアドレス及び終点ポートを抽出する。次に、抽出した始点IPアドレスとSA情報テーブル234の始点IPアドレス2342とが一致するレコードを、SA情報テーブル234から選択する。
次に、SA処理プログラム233は、抽出した始点ポートとSA情報テーブル234の始点ポート2343とが一致するレコードを、選択したレコードの中から選択する。次に、抽出した終点IPアドレスとSA情報テーブル234の終点IPアドレス2344とが一致するレコードを、選択したレコードの中から選択する。更に、抽出した終点ポートとSA情報テーブル234の終点ポート2345とが一致するレコードを、選択したレコードの中から選択する。
そして、SA処理プログラム233は、選択したレコードの鍵データ2348に基づいて、送信パケットを暗号化する。なお、SA処理プログラム233の暗号化処理は、従来のIPsec等における暗号化処理と同一である。
次に、イニシエータ2Aのネットワーク処理プログラム231は、SA処理プログラム233が暗号化したパケットをロードバランサ7に送信する(S814)。
ロードバランサ7は、イニシエータ2Aからパケットを受信する。すると、ロードバランサ7は、受信したパケットの転送先を、接続しているレスポンダ3の中から選択する。ここでは、ロードバランサ7は、受信したパケットの転送先として、レスポンダ3Bを選択したとする(S815)。
次に、ロードバランサ7は、受信したパケットの終点アドレスを、転送先のレスポンダ3Bのアドレスの「172.16.0.2:80」に変換する。そして、ロードバランサ7は、アドレスを変換したパケットを、転送先のレスポンダ3Bに送信する(S816)。
レスポンダ3Bは、パケットをロードバランサ7から受信する。すると、レスポンダ3は、受信パケットをネットワーク処理プログラム331で処理する。
ネットワーク処理プログラム331は、受信パケットが暗号化されていると判定し、拡張SA処理プログラム333を呼び出す。
すると、拡張SA処理プログラム333は、受信パケット処理を行う。なお、拡張SA処理プログラム333の受信パケット処理は、図21A及び図21Bで詳細を説明する。
ここでは、レスポンダ3Bは、当該レスポンダ3BのSA情報テーブル334及びSA候補情報テーブル335に基づいて、受信パケットを復号化できない。そこで、レスポンダ3Bは、SA候補情報DB5にSA候補情報検索要求を送信する(S817)。なお、SA候補情報検索要求には、検索条件が含まれる。
SA候補情報DB5は、受信したSA候補情報検索要求に含まれる検索条件を満たすSA候補情報を、当該SA候補情報DB5のSA候補情報テーブル335から抽出する。次に、SA候補情報DB5は、抽出したSA候補情報を含むSA候補情報検索応答を作成する。そして、SA候補情報DB5は、作成したSA候補情報検索応答をレスポンダ3Bに送信する(S818)。
レスポンダ3Bは、SA候補情報検索応答をSA候補情報DB5から受信する。次に、レスポンダ3Bは、受信したSA候補情報検索応答に含まれるSA候補情報を用いて、受信パケットを復号化する。そして、レスポンダ3Bは、復号化に成功したSA候補情報に基づいて、SA情報を作成する(S819)。
次に、レスポンダ3Bは、作成したSA情報を当該レスポンダ3BのSA情報テーブル334に格納する。次に、レスポンダ3Bは、復号化に成功したSA候補情報の削除要求をSA候補情報DB5に送信する(S820)。
すると、SA候補情報DB5は、削除を要求されたSA候補情報を、当該SA候補情報DB5のSA候補情報テーブル335から削除する。
その後、レスポンダ3BのネットワークAP332が、パケットの送信をレスポンダ3のネットワーク処理プログラム331に要求したとする。
レスポンダ3のネットワーク処理プログラム331は、ネットワークAP332からパケット送信要求を受ける。すると、ネットワーク処理プログラム331は、送信パケットにセキュリティ機能を提供するために、レスポンダ3Bの拡張SA処理プログラム333を呼び出す。
すると、拡張SA処理プログラム333は、送信パケット処理を行うことによって、送信パケットを暗号化する。なお、拡張SA処理プログラム333の送信パケット処理は、第1の実施の形態(図10)と同一であるので、説明を省略する。
次に、レスポンダ3Bのネットワーク処理プログラム331は、拡張SA処理プログラム333が暗号化したパケットをイニシエータ2A宛てに送信する(S821)。
ロードバランサ7は、レスポンダ3Bからパケットを受信する。すると、ロードバランサ7は、受信したパケットの始点アドレスを当該ロードバランサ7のアドレスに変換する。そして、ロードバランサ7は、アドレスを変換したパケットを、イニシエータ2Aに送信する(S721)。
イニシエータ2Aは、ロードバランサ7からパケットを受信する。すると、イニシエータ2Aは、受信パケットをネットワーク処理プログラム231で処理する。ネットワーク処理プログラム231は、受信パケットが暗号化されていると判定し、SA処理プログラム233を呼び出す。
すると、SA処理プログラム233は、SA情報テーブル234を参照して、受信パケットを復号化する。なお、SA処理プログラム233の復号化処理は、従来のIPsec等における処理と同一である。
図21A及び図21Bは、第5の実施の形態の拡張SA処理プログラム333の受信パケット処理のフローチャートである。
まず、拡張SA処理プログラム333は、ステップS201からステップS204までを実行する。なお、ステップS201からステップS204までは、第1の実施の形態の拡張SA処理プログラム333の受信パケット処理(図9)におけるステップと同一である。同一のステップには同一の番号を付すことによって、説明を省略する。
次に、拡張SA処理プログラム333は、SA候補情報DB5に、SA候補情報検索要求を送信する。なお、SA候補情報検索要求には、受信パケットのSPI及びアドレス情報のうち少なくとも一方が検索条件として含まれている。
SA候補情報DB5は、SA候補情報検索要求を受信すると、当該SA候補情報検索要求から受信パケットのSPI又はアドレス情報を抽出する。そして、SA候補情報DB5は、抽出したSPI又はアドレス情報に基づいて、受信パケットに対応するSA候補情報をSA候補情報テーブル335から選択する。なお、SA候補情報DB5のSA候補情報の選択処理は、第1の実施の形態の拡張SA処理プログラム333の受信パケット処理(図9)におけるステップS205と同様である。よって、詳細な説明は省略する。
更に、SA候補情報DB5は、選択したSA候補情報と同一のペアIDを持つSA候補情報をSA候補情報テーブル335から選択する。
そして、SA候補情報DB5は、選択したSA候補情報を含むSA候補情報検索応答を、SA候補情報検索要求の送信元のレスポンダ3の拡張SA処理プログラム333に送信する。
当該レスポンダ3の拡張SA処理プログラム333は、SA候補情報検索応答を受信する。これによって、拡張SA処理プログラム333は、受信パケットに対応するSA候補情報を、SA候補情報DB5のSA候補情報テーブル335から取得する(S501)。
次に、拡張SA処理プログラム333は、受信パケットに対応するSA候補情報を取得できたかどうかを判定する(S502)。
拡張SA処理プログラム333は、受信パケットに対応するSA候補情報を取得できなかった場合、受信パケットを復号化できない。よって、拡張SA処理プログラム333は、パケットを破棄する(S505)。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、受信パケットに対応するSA候補情報を取得できた場合、取得したSA候補情報から、鍵データを抽出する。そして、抽出した鍵データを用いて、受信パケットを復号化処理する(S503)。
次に、拡張SA処理プログラム333は、受信パケットの復号化に成功したかどうかを判定する(S504)。
拡張SA処理プログラム333は、受信パケットの復号化に失敗すると、受信パケットを復号化できない。よって、拡張SA処理プログラム333は、パケットを破棄する(S505)。そして、本処理を終了する。
一方、拡張SA処理プログラム333は、受信パケットの復号化に成功すると、復号化に成功したSA候補情報及び受信パケットの終点アドレスに基づいて、SA情報を作成する(S506)。
次に、拡張SA処理プログラム333は、受信パケットの復号化に成功したSA候補情報からペアIDを抽出する。次に、抽出したペアIDと同一のペアIDを持つSA候補情報を、ステップS501で取得したSA候補情報の中から選択する(S507)。
次に、拡張SA処理プログラム333は、同一のペアIDを持つSA候補情報を選択できたかどうかを判定する(S508)。
拡張SA処理プログラム333は、同一のペアIDを持つSA候補情報を選択できなかった場合、そのままステップS510に進む。
一方、拡張SA処理プログラム333は、同一のペアIDを持つSA候補情報を選択できた場合、選択したSA候補情報及び受信パケットの終点アドレスに基づいて、SA情報を作成する(S509)。
これによって、拡張SA処理プログラム333は、ステップS506で作成した受信用(inbound)のSA情報に対応する送信用(outbound)のSA情報を作成する。
次に、拡張SA処理プログラム333は、作成したSA情報をSA情報テーブル335に格納する(S510)。
次に、拡張SA処理プログラム333は、SA情報の作成に用いたSA候補情報の削除要求を、SA候補情報DB5に送信する(S511)。SA候補情報の削除要求には、受信パケットのSPI及びアドレス情報のうち少なくとも一方が削除条件として含まれている。
次に、拡張SA処理プログラム333は、復号化した受信パケットをネットワーク処理プログラム331に送る。そして、本処理を終了する。
一方、SA候補情報DB5は、SA候補情報の削除要求を受信すると、当該削除要求に含まれる削除条件を満たすSA候補情報を、自身のSA候補情報テーブル335から削除する。
本実施の形態では、SA候補情報DB5が、SA候補情報を管理する。これによって、レスポンダ3の負担が軽減される。