(57)【要約】【課題】IPパケットにIPsecを適用した際に、IPパケットを、フラグメンテーションが発生しない範囲で最大のサイズにし、かつ、その最大のサイズの計算にかかる演算量を低減する。【解決手段】暗号化通信装置は、IPパケットに対して適用する、IPsecにおけるセキュリティプロトコルを決定し、決定されたセキュリティプロトコルに基づいて、IPパケットにIPsecを適用してもフラグメンテーションが発生しないパケットサイズを計算する。ここで計算するパケットサイズは、決定されたセキュリティプロトコルにより実際に指定される暗号アルゴリズム及び認証アルゴリズムに関わらない値とする。【選択図】  図１
2014078852.tif 000002
【特許請求の範囲】
【請求項１】
IPsecを実装した暗号化通信装置であって、
IPパケットに対して適用する、IPsecにおけるセキュリティプロトコルを決定する決定手段と、
前記決定手段により決定されたセキュリティプロトコルに基づいて、IPパケットにIPsecを適用してもフラグメンテーションが発生しないパケットサイズを計算する計算手段と、
を有し、
前記パケットサイズは、前記決定手段により決定されたセキュリティプロトコルにより実際に指定される暗号アルゴリズム及び認証アルゴリズムに関わらない値であることを特徴とする暗号化通信装置。
【請求項２】
前記計算手段は、IPパケットにIPsecを適用してもフラグメンテーションが発生しない範囲内において最大となるパケットサイズを計算することを特徴とする請求項１に記載の暗号化通信装置。
【請求項３】
前記計算手段は、前記暗号化通信装置で利用可能な複数の暗号アルゴリズム及び複数の認証アルゴリズムのうちパケットサイズの増加分が最大となる暗号アルゴリズム及び認証アルゴリズムのうちの少なくともいずれかを使用すると仮定して、前記パケットサイズを計算することを特徴とする請求項１又は２に記載の暗号化通信装置。
【請求項４】
前記計算手段は、前記複数の暗号アルゴリズム及び前記複数の認証アルゴリズムのうちパケットサイズの増加分が最大となる暗号アルゴリズム及び認証アルゴリズムの当該最大となるパケットサイズの増加分の情報を予め記憶した記憶手段から、該情報を取得することを特徴とする請求項３に記載の暗号化通信装置。
【請求項５】
前記セキュリティプロトコルは、AH(認証ヘッダ)のみ、ESP(暗号ペイロード)のみ、ESP及びESP認証、AH及びESP及びESP認証、を含むことを特徴とする請求項１乃至４のいずれか１項に記載の暗号化通信装置。
【請求項６】
前記セキュリティプロトコルは、SA(セキュリティアソシエーション)に記述されることを特徴とする請求項５に記載の暗号化通信装置。
【請求項７】
ネットワークを介して通信をするためのプロトコル機能を処理するネットワークプロトコル処理手段と、
最大送信パケットサイズをセッション毎に記憶する最大送信データサイズ記憶手段と、
前記最大送信データサイズ記憶手段に記憶するセッション毎の最大送信パケットサイズを更新する最大送信データサイズ更新手段と、
を更に有し、
前記最大送信データサイズ更新手段は、前記ネットワークプロトコル処理手段を介して、セッション情報を取得するとともに、前記計算手段により計算されたパケットサイズを最大送信パケットサイズとして取得し、前記最大送信データサイズ記憶手段の記憶領域に、前記取得したセッション情報と前記最大送信パケットサイズとを対応付けて設定する
ことを特徴とする請求項２乃至６のいずれか１項に記載の暗号化通信装置。
【請求項８】
前記ネットワークプロトコル処理手段は、前記最大送信データサイズ更新手段により更新された最大送信パケットサイズでIPパケットを分割し、
前記ネットワークプロトコル処理手段により分割されたIPパケットに対してIPsecを適用するIPsec適用手段と、
前記IPsec適用手段によりIPsecが適用されたIPパケットをネットワーク上に送信するネットワークインタフェース手段と、
を更に有することを特徴とする請求項７に記載の暗号化通信装置。
【請求項９】
前記計算手段によって計算されたパケットサイズを、通信相手ごとに記述したデータベースを記憶する手段を更に有することを特徴とする請求項１乃至請求項８のいずれか１項に記載の暗号化通信装置。
【請求項１０】
IPsecを実装した暗号化通信装置の制御方法であって、
決定手段が、IPパケットに対して適用する、IPsecにおけるセキュリティプロトコルを決定する決定ステップと、
計算手段が、前記決定ステップで決定されたセキュリティプロトコルに基づいて、IPパケットにIPsecを適用してもフラグメンテーションが発生しないパケットサイズを計算する計算ステップと、
を有し、
前記パケットサイズは、前記決定ステップで決定されたセキュリティプロトコルにより実際に指定される暗号アルゴリズム及び認証アルゴリズムに関わらない値であることを特徴とする暗号化通信装置の制御方法。
【請求項１１】
コンピュータを、請求項１乃至９のいずれか１項に記載の暗号化通信装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介したデータ送受信のセキュリティに関する。本発明は、特に、IPsecを適用した通信においてIPフラグメンテーションを抑制するためにIPパケットサイズを制御する技術に関する。
【背景技術】
【０００２】
近年、ネットワーク上におけるセキュリティについて必要性が高まってきており、特に、暗号化通信によるセキュリティの必要性が高まってきている。現在、セキュリティプロトコルとして幾つかのプロトコルが存在している。その中でIPsec(IP Security Protocol)は、AH（Authentication Header）プロトコルによる送信元の認証とデータの完全性保証の仕組みを備える。加えて、IPsecは、ESP（Encapsulating Security Payload）プロトコルによるIPパケットの機密性の確保と安全性保証と送信元の認証の仕組みを備えている。IPsecはIPレベル(OSI参照モデルではネットワーク層)で実現されているセキュリティプロトコルのため、IPパケット単位でAH処理及びESP処理が行われる。IPsecの技術は、RFC2401及びRFC2402及びRFC2406等で規定されている。
【０００３】
IPを利用した通信では、１回の転送で送信できるデータの最大値としてMTU(Maximum Transmission Unit)が規定されている。MTUを超えたIPパケットを送信する場合、IPパケットにIPフラグメンテーションが実行されて送信される。IPフラグメンテーションを発生させない技術として、RFC1191及びRFC1981でPMTU(Path MTU Discovery)が規定されている。
【０００４】
また、IPsecを利用した通信パケットのパケット長がPMTUの範囲で最大になるように最適化する技術が、特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１６５８４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
IPsecを適用したIPパケットは、IPsec適用前のIPパケットに比べ、ESP処理又はAH処理によりIPパケットサイズが増加する。そのため、IPsec適用前のIPパケットサイズがMTUに近い場合、IPパケットにフラグメンテーションが実行される。IPパケットのフラグメンテーションは、送信側においてはIPパケットの分割処理を伴い、受信側においてはIPパケットの再構成処理を伴うため、通信速度低下を引き起こすという問題がある。
【０００７】
IPsecを適用したIPパケットにフラグメンテーションを発生させないために、PMTUを実施することでMTUの値を小さくすることは可能であるが、PMTUはICMPパケットを利用するためにファイアウォールで破棄されてしまうこともある。しかも、IPsec適用で増加するIPパケットサイズが厳密に考慮されていないため、必ずしもIPsecを適用したIPパケットにフラグメンテーションが発生しないとも限らない。また、IPパケットにフラグメンテーションが発生しないMTU値に変更されたとしても、IPパケットにフラグメンテーションが発生しない範囲で最大サイズになる保証はない。そのため、フラグメンテーションは発生しないがMTU値が小さいためにIPパケットが小さくなることで通信速度低下を引き起こすこともある。
【０００８】
本発明は、上述の問題を鑑み、IPパケットにIPsecを適用した際に、IPパケットを、フラグメンテーションが発生しない範囲で最大のサイズにする暗号化通信を実現することを目的とする。本発明は更に、IPパケットにIPsec適用した際にフラグメンテーションが発生しないIPパケットの最大サイズの計算にかかる演算量を最小限にすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面によれば、IPsecを実装した暗号化通信装置であって、IPパケットに対して適用する、IPsecにおけるセキュリティプロトコルを決定する決定手段と、前記決定手段により決定されたセキュリティプロトコルに基づいて、IPパケットにIPsecを適用してもフラグメンテーションが発生しないパケットサイズを計算する計算手段とを有し、前記パケットサイズは、前記決定手段により決定されたセキュリティプロトコルにより実際に指定される暗号アルゴリズム及び認証アルゴリズムに関わらない値であることを特徴とする暗号化通信装置が提供される。
【発明の効果】
【００１０】
本発明によれば、IPパケットにIPsecを適用した際に、IPパケットを、MTUを超えずにフラグメンテーションが発生しない最大サイズにすることができる。また、本発明によれば、IPパケットにIPsec適用した際にフラグメンテーションが発生しないIPパケットの最大サイズの計算にかかる演算量を最小限にすることができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態における暗号化通信装置の構成を示すブロック図。
【図２】、
【図３】IPパケットにIPsec適用をすることで増加するデータサイズを計算する処理を示すフローチャート。
【図４】IPパケットにフラグメンテーションが発生しないデータサイズを設定する処理を示すフローチャート。
【図５】IPパケットにIPsec適用することで増加するデータサイズを設定する処理を示すフローチャート。
【図６】AH(認証ヘッダ)のフォーマットの一例を示す図。
【図７】ESP(暗号ペイロード)のパケットフォーマットの一例を示す図。
【図８】IPsec適用することで増加するデータサイズの計算後に生成されるテーブルの一例を示す図。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、本発明は以下の実施形態に限定されるものではなく、本発明の実施に有利な具体例を示すにすぎない。また、以下の実施形態の中で説明されている特徴の組み合わせの全てが本発明の課題解決のために必須のものであるとは限らない。
【００１３】
＜実施形態１＞
実施形態１では、IPsec適用によるデータサイズ増加に起因するIPパケットのフラグメンテーションの抑制処理を用いた暗号化通信を説明する。図１は、本実施形態の係る暗号化通信装置の構成を示すブロック図である。
【００１４】
本実施形態における暗号化通信装置は、IPパケットに対しIPsecを適用することでネットワーク上を流れるデータのセキュリティを確保するための構成を有する。具体的には、図１に示されるように、このIPsecを実装した暗号化通信装置は、ネットワークプロトコル処理部101、IPsec処理部102、最大送信データサイズ記憶部103を有する。暗号化通信装置は、更に、最大送信データサイズ更新部104、ネットワークインタフェース部105、IPsecパケット増加サイズ設定部106も有している。IPsec処理部102は、IPsecに係る制御を行う構成を備えている。具体的には、IPsec処理部102は、SP管理部201、SA管理部202、IPsec適用部203、IPsecパケット増加サイズ記憶部204、IPsecパケット増加サイズ計算部205を有している。
【００１５】
ネットワークプロトコル処理部101は、OSI参照モデルでいうところのネットワーク層以上の上位レイヤを指し、ネットワークを介して通信をするためのプロトコル機能を処理する。具体的には、ネットワークプロトコル処理部101は、最大送信データサイズ記憶部103に記憶されている最大送信データサイズを基にIPパケットを分割してネットワークインタフェース部105にIPパケットを渡す。IPsec処理部102は、ネットワークプロトコル処理部101から受け取ったIPパケットに対してIPsecを適用する処理を実行する。最大送信データサイズ記憶部103は、IPパケットにフラグメンテーションが発生しない最大送信データサイズを記憶する。最大送信データサイズ更新部104は、ネットワークプロトコル処理部101を介して、IPsecパケット増加サイズ計算部205で計算されたIPパケットに対してIPsec適用により増加したパケットサイズを取得する。最大送信データサイズ更新部104はその後、最大送信データサイズ記憶部103に記憶されている最大送信データサイズを変更する。ネットワークインタフェース部105は、OSI参照モデルでいうところのデータリンク層と物理層を指し、IPパケットをネットワーク上に送信を行う。
【００１６】
暗号化通信装置は、複数の暗号アルゴリズム及び複数の認証アルゴリズムを利用可能である。IPsecパケット増加サイズ記憶部204は、IPsec適用によるパケットサイズの増加分が最大となる暗号アルゴリズム及び認証アルゴリズムの当該最大となるパケットサイズの増加分の情報を予め記憶している。IPsecパケット増加サイズ設定部106は、IPパケットに対するIPsec適用によるパケットサイズの増加分の情報をIPsecパケット増加サイズ記憶部204に設定することができる。
【００１７】
本実施形態において、暗号化通信装置で用いられるIPパケットデータは、インターネット上で送受信されるデータの単位である。IPパケットデータの組み立て方法については、発明の本質に関わらないので、説明を省略する。また、SP管理部201とSA管理部202は、通常のIPsecを利用した暗号化通信において公知のものであって発明の本質に関わらないので、それらの詳細な説明も省略する。また、暗号化通信を始める前に必要となる鍵交換は、IKEまたはSSLといった公知の方法を利用して行うことを前提としている。これらの鍵交換の詳細も、発明の本質に関係がないので、説明を省略する。
【００１８】
次に、IPsec処理部102の構成について、図１に基づき説明する。SP管理部201は、セキュリティポリシー（SP)が登録されているSPD(セキュリティポリシーデータベース)を管理する。SPは、IPパケットに対して実行する処理（破棄(discard)、IPsecを適用しない(bypass IPsec)、IPsecを適用する(apply IPsec)）を記述する。SPは、「IPsecを適用する」を指定する場合は、適用するセキュリティプロトコル（AH/ESP）やカプセル化モード（トンネルモード／トランスポートモード）等も指定する。SA管理部202は、セキュリティアソシエーション(SA)が格納されているSAD(セキュリティアソシエーションデータベース)を管理する。SAは、送信時及び受信時のIPパケットに対して行う認証及び暗号アルゴリズムのパラメータを定義する。
【００１９】
IPsec適用部203は、ネットワークプロトコル処理部101から受け取ったIPパケットに対してIPsecを適用する。IPsec適用部203での送信時の処理は次のとおりである。IPパケットに対してIPsecを適用するかどうかを判定するため、まず、IPパケットの始点IPアドレス、終点IPアドレス、プロトコル、ポート番号の情報からSP管理部201に管理されているSPDよりSP(セキュリティポリシー)を検索する。SPが「破棄」を示す場合には、IPパケットを破棄する。また、SPが「IPsecを適用しない」を示す場合は、IPsecを適用せずにIPパケットをネットワークプロトコル処理部101に受け渡す。SPが「IPsecを適用する」を示す場合は、SA管理部202に管理されているSADよりSA(セキュリティアソシエーション)を検索する。そしてSAに記載されているアルゴリズムや鍵を利用し、暗号化処理を実行後、ネットワークプロトコル処理部101にIPsecを適用したIPパケットを受け渡す。
【００２０】
IPsec適用部203での受信時の処理は次のとおりである。まず、IPパケットに対してIPsecが適用されているかどうかを判定する。IPsecが適用されていない場合は、SP管理部201に管理されているSPDからSPを検索する。検索されたSPが「破棄」を示す場合は、IPパケットを破棄する。SPが「IPsecを適用」を示す場合は、このIPパケットにはIPsecが適用されていないため、このIPパケットを破棄する。また、SPが「IPsecを適用しない」を示す場合は、受信したIPパケットと条件が一致するので、ネットワークプロトコル処理部101にIPパケットを受け渡す。IPsecが適用されている場合は、まず、SA管理部202に管理されているSADからSAを検索し、SAに記載されているアルゴリズムや鍵を利用して復号化処理を行う。次に、復号化処理が行われた後にSPDからSPを検索し、SPの内容と受信したIPパケットに適用されている内容と一致しているかどうかを判定する。一致していない場合は、IPパケットを破棄し、一致している場合は、ネットワークプロトコル処理部101にIPパケットを受け渡す。
【００２１】
次に、IPsec適用により増加するデータサイズの計算の流れを、図２及び図３のフローチャートに基づき説明する。このフローチャートに対応する処理は、IPsecパケット増加サイズ計算部205によって実行される。
【００２２】
まずS301において、ネットワークプロトコル処理部101より送信元及び宛先のIPアドレス、プロトコル番号、送信元及び宛先のポート番号の情報を受け取る。SP管理部201に管理されているSPDから、これらの情報に対応するSPを検索する。S302では、SPの検索結果を判断する。ここで、該当するSPが存在しない場合は、処理はS305に進み、IPsec適用で増加するパケットサイズは０となり処理を終了する。SPが存在する場合は、処理はS303に進み、送信元及び宛先のIPアドレス、プロトコル番号、送信元及び宛先のポート番号の情報に対応するSAを、SA管理部202に管理されているSADから検索する。S304では、SAの検索結果を判断する。ここで、該当するSAが存在しない場合は、処理はS305に進み、IPsec適用で増加するパケットサイズは０となり処理を終了する。該当するSAが存在する場合は、処理はS401に進む。
【００２３】
S401では、IPパケットに対して適用する、IPsecにおけるセキュリティプロトコルを決定する。具体的には、まず、検索されたSAに記述されるSAパラメータを受け取るとともに、IPsec適用前の最大送信データサイズの情報を受け取る。その後、受け取ったSAパラメータにおけるセキュリティプロトコルの種別が、AH(認証ヘッダ)のみ、ESP(暗号ペイロード)のみ、ESP及びESP認証、AH及びESP及びESP認証、のいずれであるかをチェックする。以下、決定されたセキュリティプロトコルに従う処理が実行される。
【００２４】
SAパラメータにおけるセキュリティプロトコルの種別がAHのみの場合、処理はS402に進み、AH処理によって増加するパケットサイズをIPsecパケット増加サイズ記憶部204より取得し、その後、処理はS411に進む。SAパラメータにおけるセキュリティプロトコルの種別がESPのみの場合、処理はS403に進み、ESP処理によって増加するパケットサイズをIPsecパケット増加サイズ記憶部204より取得し、その後、処理はS410に進む。SAパラメータにおけるセキュリティプロトコルの種別がESPとESP認証機能の場合、処理はS404に進み、ESP処理によって増加するパケットサイズをIPsecパケット増加サイズ記憶部204より取得する。次にS406で、ESP認証機能処理によって増加するパケットサイズをIPsecパケット増加サイズ記憶部204より取得する。その後、処理はS409に進む。SAパラメータにおけるセキュリティプロトコルの種別がAHとESPとESP認証機能の場合、処理はS405に進み、AH処理によって増加するパケットサイズをIPsecパケット増加サイズ記憶部204より取得する。次にS407で、ESP処理によって増加するパケットサイズをIPsecパケット増加サイズ記憶部204より取得する。さらにS408で、ESP認証機能処理によって増加するパケットサイズをIPsecパケット増加サイズ記憶部204より取得する。その後、処理はS409に進む。
【００２５】
S409では、取得した各IPsec適用で増加するパケットサイズ全てを積算する。その後、処理はS410に進む。S410では、ESP処理の際、暗号化適用により必要なパディング、パディング長、次ヘッダ番号による増加分とS409で計算した値とを積算する。その後、処理はS411に進む。S411では、SAパラメータのカプセル化モードがトンネルモードである場合にのみ、増加するIPヘッダサイズとステップ410で計算した値とを積算し、処理を終了する。
【００２６】
次に、IPsecパケット増加サイズ設定部106において、IPsec適用によって増加するデータサイズをIPsecパケット増加サイズ記憶部204に設定する処理の流れを、図４のフローチャートに基づき説明する。
【００２７】
まずS501において、AH処理実行によって増加するデータサイズの設定か、ESP処理実行によって増加するデータサイズの設定か、ESP認証機能処理実行によって増加するデータサイズの設定かをチェックする。
【００２８】
AH処理実行によって増加するデータサイズの設定の場合、処理はS502に進む。S502では、IPsecパケット増加サイズ記憶部204に対してAHと対応付けして増加データサイズを設定する。
【００２９】
ESP処理実行によって増加するデータサイズの設定の場合、処理はS503に進む。S503では、IPsecパケット増加サイズ記憶部204に対してESPと対応付けして増加データサイズを設定する。
【００３０】
ESP認証機能処理実行によって増加するデータサイズの設定の場合、処理はS504に進む。S504では、IPsecパケット増加サイズ記憶部204に対してESP認証機能と対応付けして増加データサイズを設定する。
【００３１】
次に、最大送信データサイズ更新部104において、IPパケットにフラグメンテーションが発生しない範囲内で最大の送信パケットサイズを最大送信データサイズ記憶部103に設定する処理の流れを、図５のフローチャートに基づき説明する。
【００３２】
まずS601において、ネットワークプロトコル処理部101からセッション情報とIPパケットにフラグメンテーションが発生しない範囲内で最大の送信パケットサイズを取得する。次にS602で、最大送信データサイズ記憶部103の記憶領域に、セッション情報とIPパケットにフラグメンテーションが発生しない範囲内で最大の送信パケットサイズとを対応付けて設定する。こうして、セッション毎に、IPパケットにフラグメンテーションが発生しない範囲内で最大の送信パケットサイズが更新される。
【００３３】
前述のとおり、IPsecパケット増加サイズ記憶部204は、IPsec適用によるパケットサイズの増加分が最大となる暗号アルゴリズム及び認証アルゴリズムの当該最大となるパケットサイズの増加分の情報を予め記憶している。そして、暗号化通信装置で利用可能な複数の暗号アルゴリズム及び複数の認証アルゴリズムのうちパケットサイズの増加分が最大となるものを使用すると仮定して、最大送信パケットサイズが計算される。すなわち、この計算は、決定されたセキュリティプロトコルにより実際に指定される暗号アルゴリズム及び認証アルゴリズムに関わらない。
【００３４】
＜実施形態２＞
実施形態２では、以下のような通信装置を考える。
・認証アルゴリズムにHMAC-MD5とHMAC-SHA1が利用可能。
・暗号アルゴリズムにDES-CBCと3DES-CBCとAES-CBCが利用可能。
・IPsecモードはトランスポートモード。
・MTUは1500byte。
【００３５】
以下、この通信装置における、IPsec適用によるデータサイズ増加に起因するTCP通信のIPv4パケットのフラグメンテーションを抑制する処理を、図１のブロック図を基に説明する。
【００３６】
まず、IPsecパケット増加サイズ設定部106は、以下の情報を、IPsecパケット増加サイズ記憶部204に設定する。
・利用可能な暗号アルゴリズムを用いたESP処理実行によって増加する最大サイズ。
・利用可能な認証アルゴリズムを用いたESP認証機能処理又はAH処理実行によって増加する最大サイズ。
【００３７】
IPsecパケット増加サイズ記憶部204に設定されるデータサイズについて、以下に説明する。
（１）AH処理によって増加するデータサイズ
AH処理によって、IPパケットに対して、図６に示されるような認証ヘッダのフォーマットが追加される。次ヘッダ番号、ペイロード長、予約、SPI(セキュリティパラメータインデックス)、シーケンス番号はそれぞれ、認証アルゴリズムに依存しない固定長である。一方、認証データは、認証アルゴリズムとIPプロトコルバージョンに依存する。本実施形態のHMAC-MD5とHMAC-SHA1とIPv4プロトコルでは、RFC2403とRFC2404に規定されている12byteとなる。
【００３８】
AH処理による増加データサイズは次式により、24byteとなる。
【００３９】
1byte(次ヘッダ番号サイズ)+1byte(ペイロード長サイズ)+2byte(予約サイズ)
+4byte(SPIサイズ)+4byte(シーケンス番号サイズ)
+12byte(認証データサイズ)
= 24byte
【００４０】
（２）ESP処理によって増加するデータサイズ
ESP処理によって、IPヘッダに対して、図７に示されるような暗号ペイロードのフォーマットが追加される。SPI、シーケンス番号、パディング長、次ヘッダ番号はそれぞれ、暗号アルゴリズムに依存しない固定長である。一方、初期ベクトル、ペイロードデータ、パディングはそれぞれ、暗号アルゴリズムとIPプロトコルバージョンとMTUとに依存する。本実施形態のDES-CBCと3DES-CBCとAES-CBCの中では、AES-CBCが初期ベクトルとブロックサイズより増加データサイズが大きくなる。初期ベクトル及びブロックサイズはRFC2405とRFC2451とRFC3602にて規定されている。
【００４１】
IPv4パケットでMTUが1500byteの場合、ESP処理においてAES-CBCは初期ベクトルが16byte、ブロックサイズが16byteであり、増加するデータサイズは次式により、26byteとなる。
【００４２】
MTU=1500byte
IPv4ヘッダサイズ=20byte
SPIサイズ=4byte
シーケンス番号サイズ=4byte
初期ベクトルサイズ=16byte
ブロックサイズ=16byte
パディング長サイズ=1byte
次ヘッダサイズ=1byte
ペイロードデータサイズ=MTU−IPv4ヘッダサイズ
=1500−20
=1480byte
暗号化対象のペイロードデータサイズ=ペイロードデータサイズ
−SPIサイズ−シーケンス番号サイズ
−初期ベクトルサイズ
=1480−4−4−16
=1456byte
パディング=暗号化対象のペイロードデータサイズ mod ブロックサイズ
=1456 mod 16 = 0byte
増加するデータサイズ= ペイロードデータサイズ−(暗号化対象のペイロードデータサイズ−パディング−パディング長サイズ−次ヘッダサイズ)
=1480−(1456−0−1−1)
=26byte
【００４３】
（３）ESP処理とESP認証処理によって増加するデータサイズ
ESP処理とESP認証処理によって、IPヘッダに対して、図７に示されるような暗号ペイロードのフォーマットが追加される。SPI、シーケンス番号、パディング長、次ヘッダ番号はそれぞれ、暗号アルゴリズムに依存しない固定長である。一方、初期ベクトル、ペイロードデータ、パディングはそれぞれ、暗号アルゴリズムとIPプロトコルバージョンとMTUとに依存する。本実施形態のDES-CBCと3DES-CBCとAES-CBCの中では、AES-CBCが初期ベクトルとブロックサイズより増加データサイズが大きくなる。初期ベクトル及びブロックサイズはRFC2405とRFC2451とRFC3602にて規定されている。ESP認証処理の認証データは認証アルゴリズム種別に依存し、本実施形態のHMAC-MD5とHMAC-SHA1とIPv4プロトコルでは、RFC2403とRFC2404に規定されている12byteとなる。
【００４４】
IPv4パケットでMTUが1500byteの場合、ESP処理においてAES-CBCは初期ベクトルが16byte、ブロックサイズが16byte、ESP認証処理の認証データが12byteである。増加するデータサイズは次式により、42byteとなる。
【００４５】
MTU=1500byte
IPv4ヘッダサイズ=20byte
SPIサイズ=4byte
シーケンス番号サイズ=4byte
初期ベクトルサイズ=16byte
ブロックサイズ=16byte
パディング長サイズ=1byte
次ヘッダサイズ=1byte
ESP認証データ=12byte
ペイロードデータサイズ=MTU−IPv4ヘッダサイズ
=1500−20
=1480byte
暗号化対象のペイロードデータサイズ=ペイロードデータサイズ
−SPIサイズ−シーケンス番号サイズ
−初期ベクトルサイズ
−ESP認証データ
=1480−4−4−16−12
=1444byte
パディング=暗号化対象のペイロードデータサイズ mod ブロックサイズ
=1444 mod 16 = 4byte
増加するデータサイズ= ペイロードデータサイズ−(暗号化対象のペイロードデータサイズ−パディング−パディング長サイズ−次ヘッダサイズ)
=1480−(1444−4−1−1)
=42byte
【００４６】
（４）AH処理とESP処理によって増加するデータサイズ
AH処理とESP処理を実施する場合は、AH処理によって増加するデータサイズ24byte(上記（１）参照。)を、ESP処理によって増加するデータサイズを計算(上記（２）参照。)する際、暗号化対象のペイロードデータサイズを求めるにときに利用する。AH処理とESP処理によって増加するデータサイズは次式により、58byteとなる。
【００４７】
MTU=1500byte
IPv4ヘッダサイズ=20byte
AH処理増加サイズ=24byte
SPIサイズ=4byte
シーケンス番号サイズ=4byte
初期ベクトルサイズ=16byte
ブロックサイズ=16byte
パディング長サイズ=1byte
次ヘッダサイズ=1byte
ペイロードデータサイズ=MTU−IPv4ヘッダサイズ
=1500−20
=1480byte
暗号化対象のペイロードデータサイズ=ペイロードデータサイズ
−AH処理増加データサイズ
−SPIサイズ−シーケンス番号サイズ
−初期ベクトルサイズ
=1480−24−4−4−16
=1432byte
パディング=暗号化対象のペイロードデータサイズ mod ブロックサイズ
=1432 mod 16 = 8byte
増加するデータサイズ= ペイロードデータサイズ−(暗号化対象のペイロードデータサイズ−パディング−パディング長サイズ−次ヘッダサイズ)
=1480−(1432−8−1−1)
=58byte
【００４８】
（５）AH処理とESP処理とESP認証処理によって増加するデータサイズ
AH処理とESP処理とESP認証処理を実施する場合は、AH処理によって増加するデータサイズ24byte(上記（１）参照。)を、ESP処理とESP認証処理によって増加するデータサイズを計算(上記（３）参照。)する際、暗号化対象のペイロードデータサイズを求めるときに利用する。AH処理とESP処理とESP認証処理によって増加するデータサイズは次式より、74byteとなる。
【００４９】
MTU=1500byte
IPv4ヘッダサイズ=20byte
AH処理増加サイズ=24byte
SPIサイズ=4byte
シーケンス番号サイズ=4byte
初期ベクトルサイズ=16byte
ブロックサイズ=16byte
パディング長サイズ=1byte
次ヘッダサイズ=1byte
ESP認証データ=12byte
ペイロードデータサイズ=MTU−IPv4ヘッダサイズ
=1500−20
=1480byte
暗号化対象のペイロードデータサイズ=ペイロードデータサイズ
−AH処理増加データサイズ
−SPIサイズ−シーケンス番号サイズ
−初期ベクトルサイズ
−ESP認証データ
=1480−24−4−4−16−12
=1420byte
パディング=暗号化対象のペイロードデータサイズ mod ブロックサイズ
=1420 mod 16 = 12byte
増加するデータサイズ= ペイロードデータサイズ−(暗号化対象のペイロードデータサイズ−パディング−パディング長サイズ−次ヘッダサイズ)
=1480−(1420−12−1−1)
=74byte
【００５０】
ネットワークプロトコル処理部101では、TCPを利用した通信においてデータ転送を行う間にコネクションの確立を行う。コネクションを確立するには３ウェイハンドシェイク（three-way handshaking）と呼ばれる処理を行う。３ウェイハンドシェイクにて送信するSYNは、IPsecを適用したとしてもMTUを超える程のIPパケットサイズではないため、フラグメンテーションが発生することにはならない。この３ウェイハンドシェイクのSYNの送信後、もしくはSYNの受信後の際、IPsecパケット増加サイズ計算部205は、IPパケットにIPsecを適用してもフラグメンテーションが発生しない範囲内で最大の送信サイズを計算する。ネットワークプロトコル処理部101は、送信元と宛先のIPアドレス、TCPプロトコル番号、送信元と宛先のポート番号、IPsec適用前のフラグメンテーションが発生しない最大送信サイズ（MTU）をIPsecパケット増加サイズ計算部205に渡す。IPsecパケット増加サイズ計算部205は、送信元及び宛先のIPアドレス、TCPプロトコル番号、送信元及び宛先のポート番号の情報を基に、SP管理部201からSPを検索し、その後、SA管理部202からSAを検索する。検索で見つかったSAが、AH、ESP、ESP認証機能の３つの処理の実行が必要であることを示す場合、IPsecパケット増加サイズ計算部205は、図３、図４に示したフローに従い増加サイズを計算する。計算した増加サイズは、ネットワークプロトコル処理部101に通知される。ネットワークプロトコル処理部101内のTCPは、最大送信データサイズ更新部104を用いて、最大送信データサイズ記憶部103に、通知された増加サイズを設定する。TCPでは、例えばコネクションを管理するTCB（Transmission Control Block）に最大送信データサイズを設定する。これにより、３ウェイハンドシェイク終了後に行うデータ転送は、IPsecの適用が考慮されている最大送信データサイズによって実施される。このため、IPsec適用部203によってIPパケットにIPsecが適用された後においても、IPパケットのフラグメンテーションが発生せずにネットワークインタフェース部105によりネットワーク上へIPパケットが送信される。
【００５１】
＜実施形態３＞
実施形態３では、IPsec適用によるデータサイズ増加に起因するIPパケットフラグメンテーションを抑制する処理において、IPsecパケット増加サイズ計算部205は次の処理を行う。すなわち、実施形態１又は２に記載の計算方法により計算した最大送信パケットサイズを、通信相手ごとのデータベースに記憶する。データベースの例を図８に示す。
【００５２】
図８のデータベースにおいて、通信相手ごとに以下の情報が記述される。
・AH処理により増加する最大サイズ、
・ESP処理により増加する最大サイズ、
・SP処理及びESP認証処理により増加する最大サイズ、
・AH処理及びESP処理により増加する最大サイズ、
・AH処理及びESP処理及びESP認証処理により増加する最大サイズ。
【００５３】
ネットワークプロトコル処理部101からは、IPsecパケット増加サイズ計算部205に、以下の情報が渡される。
・送信元と宛先のIPアドレス、
・TCPプロトコル番号、
・送信元と宛先のポート番号、
・IPsec適用前のフラグメンテーションが発生しない最大送信サイズ（MTU）。
【００５４】
IPsecパケット増加サイズ計算部205は、送信元と宛先のIPアドレス、プロトコル番号、送信元と宛先のポート番号の情報を基に、図８のデータベースから増加パケットサイズを検索する。ネットワークプロトコル処理部101は、検索で見つかった増加パケットサイズをIPsecパケット増加サイズ計算部205から取得する。
【００５５】
このデータベースは、SA管理部202に管理されているSAが存在する間は維持されるが、通信相手に該当するSAが全て削除されるとときに、データベースの該当のエントリも削除される。
【００５６】
以上説明した本発明の実施形態によれば、IPsec適用時、IPパケットが、MTUを超えない最大サイズでネットワーク上に送信される。このため、IPパケットのフラグメンテーションによる通信速度低下が発生しない。また、IPsec適用によるパケット増加サイズの計算は、暗号アルゴリズム又は認証アルゴリズムに依存しないので、その計算にかかる演算量を最小限にすることができる。また、IPsec適用によるパケット増加サイズの計算を実施するのがコネクション開始時の特定の場合のみのため、通信速度への影響度も少ない。
【００５７】
（他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
2014078852.tif 000003
【図２】
2014078852.tif 000004
【図３】
2014078852.tif 000005
【図４】
2014078852.tif 000006
【図５】
2014078852.tif 000007
【図６】
2014078852.tif 000008
【図７】
2014078852.tif 000009
【図８】
2014078852.tif 000010