(57)【要約】【課題】ネットワークスタック処理を含む高速暗復号認証処理を行うことができるセキュア通信装置、セキュア通信方法及びプログラムを提供すること。【解決手段】セキュア通信装置３００の暗復号認証処理制御部３４０は、暗復号認証処理部３５０から、暗復号処理又は認証処理が完了している１つ前のパケットの処理結果を取得し、１つ前のパケットのネットワークプロトコルの後半処理と次のパケットのネットワークプロトコルの前半処理とを連続して行うようにネットワークプロトコル処理部３２０を制御する。【選択図】図６
2010057122.tif 000002
【特許請求の範囲】
【請求項１】
通信パケットを送受信する通信手段と、
ネットワークプロトコルの前半処理及び後半処理を行うネットワークプロトコル処理手段と、
暗復号処理又は認証処理を行う暗復号認証処理手段と、
前記暗復号認証処理手段から、暗復号処理又は認証処理が完了しているパケットの処理結果を取得し、前記パケットのネットワークプロトコルの後半処理と次のパケットのネットワークプロトコルの前半処理とを連続して行うように前記ネットワークプロトコル処理手段を制御する暗復号認証処理制御手段と、
を備えるセキュア通信装置。
【請求項２】
前記暗復号認証処理制御手段は、前記ネットワークプロトコル処理手段から、ネットワークプロトコルの前半処理を終えた次のパケットの暗復号処理又は認証処理を依頼された際、同じＣＰＵコンテキストにより、直前に暗復号処理又は認証処理が完了している１つ前のパケットの処理結果を前記暗復号認証処理手段から取得し、１つ前のパケットのネットワークプロトコルの後半処理を前記ネットワークプロトコル処理手段が処理するように制御する請求項１記載のセキュア通信装置。
【請求項３】
前記暗復号認証処理制御手段は、１つ前のパケットの処理結果を前記暗復号認証処理手段から取得した後、１つ前のパケットのネットワークプロトコル後半処理を前記ネットワークプロトコル処理手段において処理する前に、同じＣＰＵコンテキストにより、次のパケットの暗復号処理又は認証処理を前記暗復号認証処理手段に対して依頼する請求項１記載のセキュア通信装置。
【請求項４】
前記暗復号認証処理制御手段は、前記暗復号認証処理手段からの完了ハードウェア割り込みコンテキスト、又は、ソフトウェア遅延割り込みコンテキストにより、処理が完了した１つ前のパケットの処理結果を前記暗復号認証処理手段から取得する暗復号認証後半処理を行い、ネットワークプロトコルの前半処理が完了した次のパケットがある場合は、同じＣＰＵコンテキストにより、次のパケットの暗復号処理又は認証処理を前記暗復号認証処理手段に依頼する暗復号認証前半処理を行い、１つ前のパケットのネットワークプロトコル後半処理を前記ネットワークプロトコル処理手段が処理するように制御する請求項１記載のセキュア通信装置。
【請求項５】
前記暗復号認証処理制御手段は、前記各処理を、(i)次のパケットのネットワークプロトコルの前半処理、(ii)１つ前のパケットの暗復号認証後半処理、(iii)次のパケットの暗復号認証前半処理、及び(iv)１つ前のパケットのネットワークプロトコルの後半処理、の順に並び替えて前記ネットワークプロトコル処理手段と前記暗復号認証処理手段とを並列処理させる請求項４記載のセキュア通信装置。
【請求項６】
ネットワークプロトコルの前半処理が完了したパケットを、パケット毎に優先度を設定し、暗復号処理又は認証処理に必要なパラメータとともに暗復号認証リクエストとして蓄積し、該暗復号認証リクエストを優先度順に前記暗復号認証処理手段に受け渡す暗復号認証リクエスト蓄積手段をさらに備える請求項１記載のセキュア通信装置。
【請求項７】
前記ネットワークプロトコルの前半処理は、ＩＰプロトコル処理の一部やそれ以下のレイヤ処理を含む下位レイヤ処理であり、前記ネットワークプロトコルの後半処理は、ＴＣＰプロトコル処理及びＩＰプロトコル処理の一部を含む上位レイヤ処理である請求項１記載のセキュア通信装置。
【請求項８】
通信パケットを送受信するステップと、
ネットワークプロトコルの前半処理及び後半処理を行うネットワークプロトコル処理ステップと、
暗復号処理又は認証処理を行う暗復号認証処理ステップと、
暗復号処理又は認証処理が完了しているパケットの処理結果を取得し、前記パケットのネットワークプロトコルの後半処理と次のパケットのネットワークプロトコルの前半処理とを連続して行うように制御する制御ステップと
を有するセキュア通信方法。
【請求項９】
前記制御ステップでは、ネットワークプロトコルの前半処理を終えた次のパケットの暗復号処理又は認証処理を依頼された際、同じＣＰＵコンテキストにより、直前に暗復号処理又は認証処理が完了している１つ前のパケットの処理結果を取得し、１つ前のパケットのネットワークプロトコルの後半処理を前記ネットワークプロトコル処理ステップにおいて処理する請求項８記載のセキュア通信方法。
【請求項１０】
前記制御ステップでは、１つ前のパケットの処理結果を取得した後、１つ前のパケットのネットワークプロトコル後半処理を前記ネットワークプロトコル処理ステップにおいて処理する前に、同じＣＰＵコンテキストにより、次のパケットの暗復号処理又は認証処理を前記暗復号認証処理ステップに対して依頼する請求項８記載のセキュア通信方法。
【請求項１１】
前記制御ステップでは、前記暗復号認証処理ステップからの完了ハードウェア割り込みコンテキスト、又は、ソフトウェア遅延割り込みコンテキストにより、処理が完了した１つ前のパケットの処理結果を前記暗復号認証処理ステップから取得する暗復号認証後半処理を行い、ネットワークプロトコルの前半処理が完了した次のパケットがある場合は、同じＣＰＵコンテキストにより、次のパケットの暗復号処理又は認証処理を前記暗復号認証処理手段に依頼する暗復号認証前半処理を行い、１つ前のパケットのネットワークプロトコル後半処理を前記ネットワークプロトコル処理ステップにおいて処理する請求項８記載のセキュア通信方法。
【請求項１２】
前記制御ステップでは、前記各処理を、(i)次のパケットのネットワークプロトコルの前半処理、(ii)１つ前のパケットの暗復号認証後半処理、(iii)次のパケットの暗復号認証前半処理、及び(iv)１つ前のパケットのネットワークプロトコルの後半処理、の順に並び替える請求項１１記載のセキュア通信方法。
【請求項１３】
ネットワークプロトコルの前半処理が完了したパケットを、パケット毎に優先度を設定し、暗復号処理又は認証処理に必要なパラメータとともに暗復号認証リクエストとして蓄積し、該暗復号認証リクエストを優先度順に前記暗復号認証処理ステップに受け渡すステップをさらに備える請求項８記載のセキュア通信方法。
【請求項１４】
請求項８乃至請求項１３のいずれかに記載のセキュア通信方法の各ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュア通信装置、セキュア通信方法及びプログラムに関する。
【背景技術】
【０００２】
ネットワーク上を流れる情報を暗号化するための手段としてＩＰセキュア通信が一般的である。ＩＰｖ６においては暗号化通信を行うＩＰｓｅｃが標準機能としてＲＦＣ（Request For Comment）にて規格化されている。
【０００３】
ＩＰセキュア通信を行うには高負荷処理である暗復号認証処理をリアルタイムに実行する必要があるため、サーバやルータ等のように特別に高速化が求められる場合や、組み込み機器のように非力なマシンで実現する場合、暗号認証処理を行う特別なハードウェア（以後、ＨＷエンジンと呼ぶ）を用いて実現することがある（例えば、特許文献１参照）。なお、以後ハードウェアのことをＨＷと略記する場合がある。
【０００４】
通常、ＨＷエンジンが暗復号認証処理を行うためには、ソフトウェアによるＨＷエンジンへのセットアップなどの事前処理と、ＨＷエンジンから演算結果などを取得する事後処理が必要である。したがって、あらかじめ１つめのパケットの事後処理を済まさなければ、２つめのパケットの事前処理を行えないことが一般的である。
【０００５】
特許文献２には、暗復号認証エンジン内に、暗復号ユニットと複数の認証ユニットとを搭載し、それらのユニットをパイプライン処理で動作させることで、１つめのパケットに対する、暗復号ユニットもしくは認証ユニットのどちらか一方における処理が完了した時点で、２つめに対するパケットの事前処理を行えるようにする方法が提案されている。
【０００６】
図１１は、ＨＷ暗号認証を行う場合の通信スタック処理を説明する図であり、図１１（ａ）は通常の通信スタック処理を、図１１（ｂ）はＨＷ暗号認証を行う場合の通信スタック処理を示す。
【０００７】
図１１において、セキュア通信装置１０は、レイヤ処理１及びレイヤ処理２を実行する通信スタック部１１と、受信／送信情報を一時的に格納するバッファ１２と、ＨＷエンジンにＨＷ処理リクエストを発行して暗号認証処理を実行する暗号認証処理部１３とを備えて構成される。
【０００８】
図１１（ａ）に示すように、通常の通信スタック処理では、通信スタック部１１は、送信指示又は受信割込みによりバッファ１２を介してレイヤ処理１及びレイヤ処理２を実行する。
【０００９】
図１１（ｂ）に示すように、ＨＷ暗号認証を行う場合には、通信スタック部１１は、送信指示又は受信割込みを受けると、レイヤ処理１で暗号認証処理部１３に処理を指示し、暗号認証処理部１３は後述するＨＷ暗復号認証処理部１４（図１２）にＨＷ処理リクエストを発行する。ＨＷ暗復号認証処理部１４（図１２）は、このＨＷ処理リクエストを受け取り、ＨＷによる暗復号認証処理を行って暗号認証処理完了の遅延処理を暗号認証処理部１３を介して通信スタック部１１に返す。通信スタック部１１は、暗号認証処理部１３による暗号認証処理結果を受け取りバッファ１２を介してレイヤ処理２を実行する。
【００１０】
通信スタック部１１は、レイヤ処理１及びレイヤ処理２による送受信処理中、ＨＷ暗復号認証処理部１４（図１２）による暗復号認証処理を行う場合、前半処理と後半処理を非同期に処理する。通信スタック部１１は、前半処理と後半処理とを非同期に処理することで、ＨＷ暗復号認証処理部１４（図１２）や図示しないネットワークデバイスの利用効率を高めることができる。
【００１１】
図１２は、上記暗号認証処理部１３の詳細な構成を示す図である。図１３は、上記暗号認証処理部１３及びＨＷ暗復号認証処理部１４の動作タイミングを示すタイミングチャートである。図１２及び図１３中、番号(1)−(7)は処理の流れを説明するための符号である。
【００１２】
図１２において、セキュア通信装置１０は、通信スタック部１１と、暗号認証処理部１３と、ＨＷエンジンにより暗復号認証処理を実行するＨＷ暗復号認証処理部１４とを備えて構成される。また、暗号認証処理部１３は、リクエスト制御部２１、ＨＷ前処理部２２、ＨＷ後処理部２３、及びキュー２４を備える。
【００１３】
リクエスト制御部２１は、通信スタック部１１のレイヤ処理１により暗号認証処理が指示されると、そのリクエストをキュー２４に積む（(1)参照）。リクエスト制御部２１は、ＨＷビジーでない場合にはＨＷ前処理部２２にＨＷ前処理を指示する（(2)参照）。
【００１４】
ＨＷ前処理部２２は、キュー２４からリクエストを取得し（(3)参照）、取得したリクエストに従ってＨＷ暗復号認証処理部１４にＨＷ処理リクエストを発行する（(4)参照）。
【００１５】
ＨＷ暗復号認証処理部１４は、暗号認証処理部１３からのＨＷ処理リクエストに従ってＨＷによる暗復号認証処理を行う。ＨＷ暗復号認証処理部１４は、該当ＨＷ処理リクエストによる暗復号認証処理が終わると、ＨＷ割込み信号を発生し（図１３参照）、このＨＷ割込み信号に基づく遅延処理開始指示をＨＷ後処理部２３に出力する（(5)参照）。
【００１６】
暗号認証処理部１３は、ＨＷ暗復号認証処理部１４からの遅延処理開始指示を受けてＨＷ後処理を開始する。図１３に示すように、レイヤ処理１から見て、ＨＷ前処理部２２によるＨＷ前処理が終了してＨＷ後処理部２３がＨＷ後処理を起動するまでの時間は、ＨＷ後処理部２３がＨＷ後処理を行えない、利用できない時間となる。暗号認証処理部１３は、ＨＷ暗復号認証処理部１４からＨＷ処理結果を取得して（(6)参照）ＨＷ後処理を実行する。暗号認証処理部１３は、ＨＷ後処理を終了すると、レイヤ処理２に後半処理を指示する。暗号認証処理部１３は、レイヤ処理２を実行する。これにより、図１３に示すように、キュー２４から取得したリクエストによる暗号認証処理が終わり、同様にして次のＨＷ前処理が実行される。
【特許文献１】特表２００５−５０３６９９号公報
【特許文献２】米国特許第６，９８３，３６６号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、このような従来のＨＷ暗号認証方法にあっては、通信スタック部１１が、前半処理と後半処理とを非同期に処理することで、ＨＷ暗復号認証処理部１４やネットワークデバイスの利用効率を高めることができるものの、事前処理の前に行うべきネットワークスタック処理（以下、スタック前半処理という）と、事後処理の後に行うべきネットワークスタック処理（以下、スタック後半処理という）とが、暗復号認証処理（事前処理、ＨＷエンジン処理、及び事後処理）で分断されるため、２つの処理は不連続で実行される。
【００１８】
２つの処理が不連続で実行されると、パケットのバースト受信時に、優先度の高いスタック前半処理のみが連続実行されて後半処理がいつまでも実行されなくなってしまうことがある。このため、ＣＰＵやＨＷエンジンの負荷に偏りが生じ、結果的にパケット伝送のスループットが低下してしまう問題がある。
【００１９】
また、事後処理やスタック後半処理を実行するためのソフトウェア遅延割り込みを起床する必要があるので、余計なオーバーヘッドが発生するという問題もある。
【００２０】
例えば、図１２及び図１３に示すように、ＨＷによるＩＰＳｅｃ処理では、レイヤ処理１とレイヤ処理２のコンテキストが分断されているため、レイヤ処理１のコンテキストが終了してからレイヤ処理２のコンテキストが開始されるまで間が開き、パフォーマンスが低下してしまう。また、図１３に示すように、遅延処理開始指示（(5)参照）によってＨＷ後処理部２３が起動するまで次のパケットのリクエストを送信することができず、ＨＷ暗復号認証処理部１４の利用効率が下がってパフォーマンスが低下したり、キューがあふれてしまう問題がある。
【００２１】
本発明は、上記に鑑みてなされたものであり、処理分断によるオーバーヘッドなしに、ＣＰＵやＨＷエンジンの負荷の偏りが起こりにくい暗復号処理又は認証処理を行うことができ、ネットワークスタック処理を含む高速暗復号認証処理を行うことができるセキュア通信装置、セキュア通信方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２２】
本発明のセキュア通信装置は、通信パケットを送受信する通信手段と、ネットワークプロトコルの前半処理及び後半処理を行うネットワークプロトコル処理手段と、暗復号処理又は認証処理を行う暗復号認証処理手段と、前記暗復号認証処理手段から、暗復号処理又は認証処理が完了しているパケットの処理結果を取得し、前記パケットのネットワークプロトコルの後半処理と次のパケットのネットワークプロトコルの前半処理とを連続して行うように前記ネットワークプロトコル処理手段を制御する暗復号認証処理制御手段と、を備える構成を採る。
【００２３】
本発明の暗号化情報通信方法は、通信パケットを送受信するステップと、ネットワークプロトコルの前半処理及び後半処理を行うネットワークプロトコル処理ステップと、暗復号処理又は認証処理を行う暗復号認証処理ステップと、暗復号処理又は認証処理が完了しているパケットの処理結果を取得し、前記パケットのネットワークプロトコルの後半処理と次のパケットのネットワークプロトコルの前半処理とを連続して行うように制御する制御ステップとを有する。
【００２４】
また他の観点から、本発明は、上記セキュア通信方法の各ステップをコンピュータに実行させるためのプログラムである。
【発明の効果】
【００２５】
本発明によれば、同じコンテキストで上位レイヤまでの処理を実現することにより、処理分断によるオーバーヘッドなしに、ＣＰＵやＨＷエンジンの負荷の偏りが起こりにくい暗復号処理又は認証処理を行うことができ、セキュア通信における、ネットワークプロトコル処理も含めた暗復号処理又は認証処理の高速化を実現することができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００２７】
（原理説明）
まず、本発明の基本的な考え方について説明する。
【００２８】
図１乃至図３は、本発明の基本的な考え方を説明する図であり、図１はプロトコルレベルで記述した全体構成を、図２は負荷の平準化を、図３は負荷の平準化を用いた高速制御方式をそれぞれ示す。
【００２９】
図１において、セキュア通信装置１００は、ＩＰセキュアプロトコル１１０、クリプトマネージャ（Crypto Manager）１２０、及びＨＷ暗復号認証エンジン１３０を備えて構成される。
【００３０】
ＩＰセキュアプロトコル１１０は、アプリケーション／ミドルソフトウェア（application／middle software）を実行するＩＰ層以上の処理（例えばレイヤ処理１）と、ネットワークデバイスに接続されＩＰ層以下の処理（例えばレイヤ処理２）とを有する。
【００３１】
クリプトマネージャ１２０は、上記ＩＰ層以下の処理によりＨＷエンジンを初期化するためのリクエストを生成するリクエスト生成ＨＷ初期化部１２１と、ＨＷ暗復号認証結果を取得・格納し、上記ＩＰ層以上の処理に渡すＨＷ後処理結果格納部１２２とを備えている。クリプトマネージャ１２０は、後述する負荷の平準化と、この負荷の平準化を用いた高速制御方式を用いることにより、事前処理の前に行うべきネットワークスタック処理（スタック前半処理）と、事後処理の後に行うべきネットワークスタック処理（スタック後半処理）とを、暗復号認証処理（事前処理、ＨＷエンジン処理、及び事後処理）で分断することなく、２つの処理を連続して実行する。すなわち、クリプトマネージャ１２０は、ＩＰセキュアプロトコル１１０のＩＰ層以上の処理（例えばレイヤ処理１）とＩＰ層以下の処理（例えばレイヤ処理２）に対して、前記図１２の従来例の暗号認証処理部１３のように、ＨＷ前処理部２２とＨＷ後処理部２３とを非同期で動作させる構成ではなく、２つの処理を連続して実行する。
【００３２】
ＨＷ暗復号認証エンジン１３０は、クリプトマネージャ１２０のリクエスト生成ＨＷ初期化部１２１からのＨＷ処理リクエストに従ってＨＷによる暗復号認証処理を行う。ＨＷ暗復号認証エンジン１３０は、該当ＨＷ処理リクエストによるＨＷ暗復号認証処理が終わると、暗復号認証結果をクリプトマネージャ１２０のＨＷ後処理結果格納部１２２に出力する。
【００３３】
以下、上述のように構成されたセキュア通信装置１００の動作について説明する。
【００３４】
図１中、番号(1)−(3)で示される矢印は処理の流れを示す。
【００３５】
図１に示すように、クリプトマネージャ１２０は、ＩＰセキュアプロトコル１１０のＩＰ層以上の処理（例えばレイヤ処理１）とＩＰ層以下の処理（例えばレイヤ処理２）に対して、スタック前半処理とスタック後半処理とを、暗復号認証処理（事前処理、ＨＷエンジン処理、事後処理）で分断することなく連続して実行する。
【００３６】
具体的には、ＩＰセキュアプロトコル１１０は、ＩＰ層以下の処理がネットワークデバイスからの優先度の高い処理をクリプトマネージャ１２０のリクエスト生成ＨＷ初期化部１２１に渡す。リクエスト生成ＨＷ初期化部１２１は、ＩＰ層以下の処理から渡された優先度の高い要求を基に、ＨＷエンジンを初期化するためのリクエストを生成する。ここまでの処理が、(1)ネットワークプロトコルの前半処理（以下、前半処理という）に相当する。
【００３７】
ＨＷ暗復号認証エンジン１３０は、クリプトマネージャ１２０のリクエスト生成ＨＷ初期化部１２１からのＨＷ処理リクエストに従ってＨＷによる暗復号認証処理を行い、暗復号認証結果をクリプトマネージャ１２０のＨＷ後処理結果格納部１２２に出力する。ここでの処理が、(2)ＨＷ暗復号認証処理に相当する。
【００３８】
ＨＷ後処理結果格納部１２２は、ＨＷ暗復号認証結果を取得・格納し、ＩＰセキュアプロトコル１１０のＩＰ層以上の処理に渡し、このＩＰ層以上の処理はアプリケーション／ミドルソフトウェアの要求に基づくＩＰ層以上の処理を実行する。ここまでの処理が、(3)ネットワークプロトコルの後半処理（以下、後半処理という）に相当する。
【００３９】
図２は、負荷の平準化を説明する図であり、図２（ａ）は特別な制御を行わない場合の図１の(1)前半処理、(2)ＨＷ暗復号認証処理、(3)後半処理を示し、図２（ｂ）は負荷の平準化を行った場合の図１の(1)前半処理、(2)ＨＷ暗復号認証処理、(3)の後半処理を示す。また図２中、「」内の数字は、パケットの到着順序を示す。また、番号１５０の破線矢印は、ネットワークプロトコルの前半処理のタイミングを、番号１５１の破線矢印は、ＨＷ割込みコンテキストに基づく遅延処理開始指示をそれぞれ示す。
【００４０】
まず、図２（ａ）の特別な制御を行わない場合には、リクエスト生成ＨＷ初期化部１２１は、(1)前半処理でパケット「１」−「４」について優先度の高い前半処理を行い、パケット「１」−「４」のリクエストをＨＷ暗復号認証エンジン１３０に発行する。ＨＷ暗復号認証エンジン１３０は、(2)ＨＷ暗復号認証処理で、発行されたパケット「１」−「４」のリクエストのうちパケット「１」についてのリクエストのＨＷ暗復号認証処理を行う。ＨＷ後処理結果格納部１２２は、(3)ネットワークプロトコルの後半処理でパケット「１」についてＨＷ暗復号認証結果を取得・格納し、ＩＰ層以上の処理に渡す。図示は省略しているが、その後、ＨＷ暗復号認証エンジン１３０は、(2)ＨＷ暗復号認証処理で、パケット「２」−「４」についてのリクエストのＨＷ暗復号認証処理を順次行い、ＨＷ後処理結果格納部１２２は、(3)後半処理でパケット「２」−「４」についてＨＷ暗復号認証結果を取得・格納する。図２（ａ）に示すように、パケット「１」−「４」についてここまでの処理が終了してはじめて、リクエスト生成ＨＷ初期化部１２１は、(1)前半処理で次のパケット「５」−「７」のリクエストをＨＷ暗復号認証エンジン１３０に発行することができる。
【００４１】
このように、図１の構成を採ったとしても図２（ａ）のように特別な制御を行わない場合には、ビットレート低下や負荷上昇による再生品質低下が考えられる。
【００４２】
そこで、図１の構成に加え図２（ｂ）に示す負荷の平準化を行う。
【００４３】
図２（ｂ）の負荷の平準化では、まず、ＩＰセキュアプロトコル１１０とリクエスト生成ＨＷ初期化部１２１は、(1)前半処理でパケット「１」のネットワークプロトコルの前半処理（ＩＰ層以下の処理）を行い、パケット「１」のリクエストをＨＷ暗復号認証エンジン１３０に発行する。ＨＷ暗復号認証エンジン１３０は、(2)ＨＷ暗復号認証処理で、発行されたパケット「１」のリクエストのＨＷ暗復号認証処理を行う。ＩＰセキュアプロトコル１１０とＨＷ後処理結果格納部１２２は、(3)後半処理でパケット「１」のＨＷ暗復号認証結果を取得・格納し、ネットワークプロトコルの後半処理（ＩＰ層以上の処理）を行う。次いで、ＩＰセキュアプロトコル１１０とリクエスト生成ＨＷ初期化部１２１は、(1)前半処理でパケット「２」のネットワークプロトコルの前半処理（ＩＰ層以下の処理）を行い、パケット「２」のリクエストをＨＷ暗復号認証エンジン１３０に発行する。ＨＷ暗復号認証エンジン１３０は、(2)ＨＷ暗復号認証処理で、発行されたパケット「２」のリクエストのＨＷ暗復号認証処理を行う。ＩＰセキュアプロトコル１１０とＨＷ後処理結果格納部１２２は、(3)後半処理でパケット「２」のＨＷ暗復号認証結果を取得・格納し、ネットワークプロトコルの後半処理（ＩＰ層以上の処理）を行う。次いで、ＩＰセキュアプロトコル１１０とリクエスト生成ＨＷ初期化部１２１は、(1)前半処理でパケット「３」のネットワークプロトコルの前半処理（ＩＰ層以下の処理）を行い、パケット「３」のリクエストをＨＷ暗復号認証エンジン１３０に発行する。ＨＷ暗復号認証エンジン１３０は、(2)ＨＷ暗復号認証処理で、発行されたパケット「３」についてのリクエストのＨＷ暗復号認証処理を行う。ＩＰセキュアプロトコル１１０とＨＷ後処理結果格納部１２２は、(3)後半処理でパケット「３」のＨＷ暗復号認証結果を取得・格納し、ネットワークプロトコルの後半処理（ＩＰ層以上の処理）を行う。
【００４４】
このように、図２（ｂ）の負荷の平準化を行うと、図２（ａ）の特別な制御を行わない場合に比べ、(1)前半処理でリクエストが滞留することがなくなるため、処理の均質化及びビットレート低下抑制を図ることができる。
【００４５】
しかし、上述した負荷の平準化では、番号１５０の破線矢印に示すようにネットワークプロトコルの前半処理のタイミングで暗復号認証処理を動作させるため、順序維持のためにＨＷ／ＳＷを並列処理できない。本発明は、合成・細分化・並び替えにより、処理順序を維持しつつ、ＨＷ／ＳＷの並列処理を実現するものである。
【００４６】
図３（ａ）は、図２（ｂ）の負荷の平準化をより詳細に説明する図である。
【００４７】
図３（ａ）の負荷の平準化では、ＩＰセキュアプロトコル１１０とリクエスト生成ＨＷ初期化部１２１は、(1)前半処理でパケット「２」について「ネットワークプロトコルの前半処理（ＩＰ層以下の処理）」を行うとともに、「暗復号認証前半処理（リクエスト生成とＨＷ初期化）」を行う。ＨＷ暗復号認証エンジン１３０は、(2)ＨＷ暗復号認証処理で、発行されたパケット「２」のリクエストのＨＷ暗復号認証処理を行う。ＩＰセキュアプロトコル１１０とＨＷ後処理結果格納部１２２は、(3)後半処理でパケット「２」について「暗復号認証後半処理（ＨＷ後処理と結果格納）」を行うとともに、「ネットワークプロトコルの後半処理（ＩＰ層以上の処理）」を行う。
【００４８】
図３（ｂ）（ｃ）は、本高速制御方式を説明する図である。図３（ｂ）は、負荷平準化後に高速制御を行うための高速制御方式の方式Ａを、図３（ｃ）は、方式Ａを更に細分化した高速制御方式の方式Ｂをそれぞれ示す。
【００４９】
本高速制御方式は、前半処理と後半処理を一連のコンテキストで行う。すなわち、直前のパケットの後半処理（レイヤ２以降の処理）と次のパケットの処理（レイヤ１の処理）とを合体させることで、関数の時間として待ち時間なしでパケットの処理を行う。
【００５０】
図３（ｂ）の高速制御方式の方式Ａでは、１つ前のパケットの(3)ネットワークプロトコルの後半処理と次のパケットの(1)ネットワークプロトコルの前半処理を合体した、(1)(3)前半処理／後半処理を実現する。図３（ｂ）の場合、(1)(3)前半処理／後半処理で１つ前のパケット「１」の(3)後半処理と次のパケット「２」の(1)前半処理を合体する。(2)ＨＷ暗復号認証処理はそのままである。このため、方式Ａの(1)(3)前半処理／後半処理では、 図３（ａ）の番号１５１の破線矢印に示すＨＷ割込みコンテキストに基づく遅延処理開始指示よりも先に、図３（ｂ）の番号１５２の破線矢印に示すネットワークプロトコルの前半処理開始のタイミングで(1)(3)前半処理／後半処理を開始できることになる。このため、方式Ａは、図３（ｂ）の番号１５２の破線矢印に示すネットワークプロトコルの前半処理開始のタイミングか、図３（ａ）の番号１５１の破線矢印に示すＨＷ割込みコンテキストに基づく遅延処理開始指示のうち、いずれか早い方で処理を開始することができ、処理時間を短縮することができる。ここで、(1)前半処理と(3)後半処理の優先度が異なる場合であっても処理が滞ることなくスムーズな処理を実現することができる。
【００５１】
図３（ｃ）の方式Ｂは、方式Ａの各処理を並び替えることで、ＨＷ／ＳＷの並行処理を実現し、より高速制御を図るものである。各処理の並び替えは以下(i)−(iv)の通りである。
【００５２】
(i)ネットワークプロトコルの前半処理
(ii)暗復号認証後半処理
(iii)暗復号認証前半処理
(iv)ネットワークプロトコルの後半処理
上記各処理の並べ替えを具体的に説明すると、図３（ｃ）の場合、図３（ｂ）のパケット「１」とパケット「２」は以下の並べ替え処理となる。
【００５３】
(i)２番目のパケット「２」の前半処理
(ii)１番目のパケット「１」のＨＷ後半処理
(iii)２番目のパケット「２」のＨＷ前半処理
(iv)１番目のパケット「１」のレイヤ２以降の処理
ＨＷ暗復号処理が終わってから実際に後半処理が開始されるまでには若干のロス（余分な処理）がある。なにか別の処理が入ってきたり、またカーネルの処理が含まれる。図３（ｃ）の方式Ｂは、各処理の並び替えにより１つのシーケンスで、上記(i)ネットワークプロトコル前半処理の直後に、上記(ii)暗復号認証後半処理を行う。続いて、上記上記(iii)暗復号認証前半処理の直後に、上記(iv)ネットワークプロトコルの後半処理を連続して行うことで、番号１５１のＨＷ割込みコンテキストに基づく遅延処理開始指示が削減される。すなわち、上位プログラムによる関数呼び出しがあると、上記(i)−(iv)をロスなしで連続で実行するので、番号１５１の遅延処理開始指示が必要なくなる。図３（ａ）の負荷の平準化では、ＨＷ割り込みが発生して後半処理を開始するために、番号１５１の遅延処理開始指示が出される。しかし実際には、それよりも前に次のパケットが到着することも有りうる。このような場合、図３（ｃ）の方式Ｂでは、開始指示を待つ前に開始できるようになるので、その分速度改善につながる。パケットの送信指示が先かＨＷ処理完了（割り込みＨＷ割り込み）が先かの競争が行われ、早い方で処理を開始するものである。このように、各処理を並び替えることで、ＨＷ／ＳＷの並行処理を実現することができる。
【００５４】
（実施の形態１）
図４は、上記基本的な考え方に基づく本発明の実施の形態１に係る暗号化情報通信システムのセキュア通信装置の構成を示す図である。
【００５５】
図４において、セキュア通信装置２００は、レイヤ処理１及びレイヤ処理２を実行する通信スタック部２１０と、受信／送信情報を一時的に格納するバッファ２２０と、ＨＷエンジンにＨＷ処理リクエストを発行して暗号認証処理を実行する暗号認証処理部２３０と、ＨＷエンジンにより暗復号認証処理を実行するＨＷ暗復号認証処理部２４０とを備えて構成される。また、暗号認証処理部２３０は、リクエスト制御部２３１、ＨＷ前後処理部２３２、及びキュー２３３を備える。
【００５６】
ＨＷ前後処理部２３２は、図３（ｂ）の方式Ａ又は図３（ｃ）の方式Ｂにより前半処理と後半処理を一連のコンテキストで行う。ＨＷ前後処理部２３２は、図３（ｃ）の方式Ｂを採用した場合、(i)ネットワークプロトコル前半処理、(ii)暗復号認証後半処理、(iii)暗復号認証前半処理、乃至(iv)ネットワークプロトコル後半処理を連続して行う。具体的には、ＨＷ前後処理部２３２は、取得したリクエストに従ってＨＷ暗復号認証処理部２４０にＨＷ処理リクエストを発行する（(5)参照）一方で、ＨＷ暗復号認証処理部２４０からＨＷ割込みコンテキストに基づく遅延処理開始指示を受け取り、さらに、ＨＷ暗復号認証処理部２４０からＨＷ処理結果を取得して（(6)参照）ＨＷ後処理を実行する。ここで、レイヤ処理１及びレイヤ処理２は、図３（ｂ）の各処理の並べ替え処理となる。例えば、(i)２番目のパケット「２」の前半処理、(ii)１番目のパケット「１」のＨＷ後半処理、(iii)２番目のパケット「２」のＨＷ前半処理、乃至(iv)１番目のパケット「１」のレイヤ２以降の処理である。
【００５７】
以下、上述のように構成されたセキュア通信装置２００の動作について説明する。
【００５８】
図５は、上記暗号認証処理部２３０及びＨＷ暗復号認証処理部２４０の動作タイミングを示すタイミングチャートである。図４及び図５中、番号(1)−(6)は処理の流れを説明するための符号である。
【００５９】
通信スタック部２１０は、通常の通信スタック処理では、送信指示又は受信割込みによりバッファ１２０を介してレイヤ処理１及びレイヤ処理２を実行する。レイヤ処理１は、ネットワークプロトコルの前半処理であり、ＴＣＰプロトコル処理及びＩＰプロトコル処理の一部を含む優先度の高い上位レイヤ処理である。レイヤ処理２は、ネットワークプロトコルの後半処理であり、ＩＰプロトコル処理の一部やそれ以下のレイヤ処理を含む下位レイヤ処理である。
【００６０】
通信スタック部２１０は、ＨＷ暗号認証を行う場合には、送信指示又は受信割込みを受けると、レイヤ処理１で暗号認証処理部２３０に処理を指示し、暗号認証処理部２３０はＨＷ暗復号認証処理部２４０に対しＨＷ処理リクエストを発行する。
【００６１】
ＨＷ暗復号認証処理部２４０は、このＨＷ処理リクエストを受け取り、ＨＷによる暗復号認証処理を行って暗号認証処理完了の遅延処理を暗号認証処理部２３０を介して通信スタック部２１０に返す。通信スタック部２１０は、暗号認証処理部２３０による暗号認証処理結果を受け取りバッファ２２０を介してレイヤ処理２を実行する。
【００６２】
具体的には、暗号認証処理部２３０は、以下の動作を行う。
【００６３】
リクエスト制御部２３１は、通信スタック部２１０のレイヤ処理１により暗号認証処理が指示されると、そのリクエストをキュー２３３に積む（(1)参照）。リクエスト制御部２３１は、ＨＷビジーでない場合にはＨＷ前後処理部２３２にＨＷ前処理を指示する（(2)参照）。
【００６４】
ＨＷ前後処理部２３２は、処理済みのリクエストがあればＨＷ暗復号認証処理部２４０からＨＷ処理結果を取得して（(3)参照）ＨＷ後処理を実行する。ＨＷ前後処理部２３２は、ＨＷ後処理を終了すると、レイヤ処理２に後半処理を指示する（(6)参照）。
【００６５】
また、ＨＷ前後処理部２３２は、キュー２３３にリクエストが積まれていれば、キュー２３３からリクエストを取得し（(4)参照）、取得したリクエストに従ってＨＷ暗復号認証処理部２４０にＨＷ処理リクエストを発行する（(5)参照）。
【００６６】
ＨＷ暗復号認証処理部２４０は、ＨＷ前後処理部２３２からのＨＷ処理リクエスト（(5)参照）に従ってＨＷによる暗復号認証処理を行う。ＨＷ暗復号認証処理部２４０は、該当ＨＷ処理リクエストによる暗復号認証処理が終わると、ＨＷ割込みコンテキストを発生し（図５参照）、このＨＷ割込みコンテキストに基づく遅延処理開始指示をＨＷ前後処理部２３２に出力する（(0)参照）。
【００６７】
図５ａ．に示すように、ＨＷ前後処理部２３２は、ＨＷ暗復号認証処理部２４０からの遅延処理開始指示（(0)参照）、又はレイヤ処理１からの指示のうち、いずれか早い方で処理を開始する。ＨＷ前後処理部２３２は、いずれかの指示によりＨＷ前後処理をすぐに実行できるため、レイヤ処理１から見た場合、レイヤ処理１が利用できない時間はなくなる。
【００６８】
ＨＷ前後処理部２３２は、ＨＷ暗復号認証処理部２４０からＨＷ処理結果を取得して（(3)参照）ＨＷ後処理を実行する。ＨＷ前後処理部２３２は、ＨＷ後処理を終了すると、レイヤ処理２に後半処理を指示する。通信スタック部２１０は、レイヤ処理２を実行する。
【００６９】
図５ｂ．に示すように、暗号認証処理部２３０は、ＨＷ処理待ち時間なしに、レイヤ処理１とレイヤ２を同じコンテキストで実行する。
【００７０】
このように、暗号認証処理部２３０のＨＷ前後処理部２３２は、処理済みのリクエストがある場合はＨＷ処理結果取得（(3)参照）と後半処理指示（(6)参照）を行う。キュー２３３にリクエストが積まれていれば、ＨＷ前処理（(4)(5)参照）を行う。また、ＨＷ前後処理部２３２は、ＨＷ暗復号認証処理部２４０からの遅延処理開始指示時（(0)参照）も、キュー２３３を見て同様の処理を行う。
【００７１】
したがって、暗号認証処理部２３０は、レイヤ処理２以降をレイヤ処理１と同じシーケンスで実行できるので、利用できない時間が減り、パフォーマンスが向上する。従来例では、図１３に示すようにＨＷ前処理部２２によるＨＷ前処理が終了してＨＷ後処理部２３がＨＷ後処理を起動するまでの時間は、ＨＷ後処理部２３がＨＷ後処理を行えない、利用できない時間となっていた。これに対して、暗号認証処理部２３０は、遅延処理開始依頼によってＨＷ後処理部２３（図１２の従来例）を起動するよりも早くＨＷ後処理、次のＨＷ処理リクエストを実行することができ、ＨＷ暗復号認証処理部２４０の利用効率を高めることができる。
【００７２】
（実施の形態２）
図６は、本発明の実施の形態２に係る暗号化情報通信システムのセキュア通信装置の構成を示すブロック図である。
【００７３】
図６において、セキュア通信装置３００は、上位プログラム３１０、ネットワークプロトコル処理部３２０、通信部３３０、暗復号認証処理制御部３４０、暗復号認証処理部３５０、及び暗復号認証リクエスト蓄積部３６０を備えて構成される。
【００７４】
上記上位プログラム３１０、ネットワークプロトコル処理部３２０及び暗復号認証処理制御部３４０は、ＣＰＵにより実行される。
【００７５】
セキュア通信装置３００は、セキュア通信を行う相手側セキュア通信装置と、通信部３３０により接続され、セキュア通信装置間で通信可能になっている。
【００７６】
上位プログラム３１０は、実際に暗号化されたデータの送受信を行おうとしているアプリケーション、もしくは、その他のプログラムである。
【００７７】
ネットワークプロトコル処理部３２０は、トランスポート層やネットワーク層などのネットワークプロトコル処理を行う。より具体的には、ネットワークプロトコル処理部３２０は、上位プログラム３１０の指示によって、任意のデータのネットワークプロトコルの上位レイヤ処理（ＴＣＰプロトコル処理やＩＰプロトコル処理の一部等）を行い、処理が完了した平文パケットを、暗復号認証処理に必要なパラメータとともに暗復号認証リクエストとして、暗復号認証処理制御部３４０に依頼して暗号認証処理を行う。
【００７８】
また、ネットワークプロトコル処理部３２０は、暗復号認証処理制御部３４０からの指示で、暗号認証処理が完了した暗号化パケットのネットワークプロトコルの下位レイヤ処理（ＩＰプロトコル処理の一部やそれ以下の処理等）を行い、通信部３３０に処理が完了した暗号化パケットの送信処理を指示する。
【００７９】
また、ネットワークプロトコル処理部３２０は、通信部３３０で受信した暗号化パケットを受け取り、ネットワークプロトコルの下位レイヤ処理を行い、処理が完了した暗号化パケットを、暗復号認証処理に必要なパラメータとともに暗復号認証リクエストとして、暗復号認証処理制御部３４０に依頼して暗号認証処理を行う。
【００８０】
また、ネットワークプロトコル処理部３２０は、暗復号認証処理制御部３４０からの指示で、暗号認証処理が完了した平文パケットのネットワークプロトコルの上位レイヤ処理を行い、上位プログラム３１０の受信バッファに処理が完了した平文パケットを格納する。
【００８１】
通信部３３０は、ネットワークプロトコル処理部３２０の指示で任意のパケットの送信処理を行う。また、通信部３３０は、対向のセキュア通信装置が送信したデータを受信し、ネットワークプロトコル処理部３２０に転送する。具体的には、有線ＬＡＮや無線ＬＡＮなどの、ＩＰ通信が行えるネットワークデバイスが望ましい。
【００８２】
暗復号認証処理制御部３４０は、ネットワークプロトコル処理部３２０からの暗復号認証指示に基づき、暗復号認証リクエストに格納されている平文・暗号化データを、暗復号認証処理部３５０に指示して暗復号認証処理を行う。
【００８３】
また、暗復号認証処理制御部３４０は、暗復号認証リクエスト蓄積部３６０に暗復号認証リクエストが格納されている場合には、先に格納されている暗復号認証リクエストの暗復号認証処理を暗復号認証処理部３５０に依頼し、ネットワークプロトコル処理部３２０から依頼された暗復号認証リクエストについては暗復号認証リクエスト蓄積部３６０に格納する。
【００８４】
また、暗復号認証処理制御部３４０は、暗復号認証処理部３５０が処理中の場合には、暗復号認証リクエストを暗復号認証リクエスト蓄積部３６０に格納して処理を終了する。
【００８５】
特に、暗復号認証処理制御部３４０は、暗復号認証処理部３５０から、暗復号処理又は認証処理が完了している１つ前のパケットの処理結果を取得し、１つ前のパケットのネットワークプロトコルの後半処理と次のパケットのネットワークプロトコルの前半処理とを連続して行うようにネットワークプロトコル処理部３２０を制御する。
【００８６】
また、暗復号認証処理制御部３４０は、暗復号認証処理部３５０において既に処理が完了した暗復号認証リクエストが存在する場合には、既に処理が完了している暗復号認証リクエストの暗復号認証完了処理を先に行い、次に新たに指示を受けた暗復号認証リクエストの暗復号認証処理要求を暗復号認証処理部３５０に対して行う。その後、暗復号認証完了処理を行った暗号データのネットワークプロトコル後半処理（上位レイヤ処理から指示を受けている場合は下位レイヤ処理、下位レイヤ処理から指示を受けている場合は上位レイヤ処理）を同じＣＰＵコンテキストで行うよう、ネットワークプロトコル処理部３２０に指示し、ネットワークプロトコル後半処理が完了すると、暗復号認証処理制御部３４０の処理を終了する。処理の詳細については後述する。
【００８７】
暗復号認証処理部３５０は、暗復号認証処理制御部３４０の、暗復号認証開始指示によって暗復号認証処理を開始し、暗復号認証処理が完了した時点で暗復号認証処理制御部３４０に処理完了通知を行う。具体的には、ハードウェア割り込み処理にて起床されたソフトウェア割り込みによって処理完了通知をすることが望ましい。その後、暗復号認証処理制御部３４０の、暗復号認証完了処理指示によって、結果や付随データを取得するための完了処理を行う。
【００８８】
暗復号認証リクエスト蓄積部３６０は、ネットワークプロトコルの前半処理が完了したパケットを、パケット毎に優先度を設定し、暗復号処理又は認証処理に必要なパラメータとともに暗復号認証リクエストとして蓄積し、該暗復号認証リクエストを優先度順に前記暗復号認証処理部３５０に受け渡す。暗復号認証リクエスト蓄積部３６０は、暗復号認証リクエストを出し入れするためのキュー構造である。通常ＦＩＦＯ（First-In First-Out）で構成されるが、例えばパケットのＴＯＳ（Type of Service）フィールドや、送受信アドレス、送受信ポート、プロトコルなどの情報を元に、デキューする暗復号認証リクエストに優先度をつけるようにするなど、その他の構成であってもよい。なお、ＴＯＳフィールドは、ＩＰヘッダに含まれる長さ８ビットの情報であり、上位３ビットが優先度を表示するＩＰプレシデンスである。
【００８９】
以下、上述のように構成されたセキュア通信装置３００の動作について説明する。
【００９０】
まず、セキュア通信装置３００が暗号化パケットの受信側として機能する場合について説明する。
【００９１】
図７は、セキュア通信装置３００が受信側として機能する場合のセキュア通信処理時の動作を説明する制御シーケンス図である。図７において、上位プログラム３１０、ネットワークプロトコル処理部３２０及び暗復号認証処理制御部３４０は、ＣＰＵにより実行される。
【００９２】
ステップＳ１０１では、上位プログラム３１０は、ソケットを生成し、対向のセキュア通信装置のアドレス情報やポート番号をバインドする。
【００９３】
ステップＳ１０２では、上位プログラム３１０は、暗号化したい平文データを、ソケットを通してネットワークプロトコル処理部３２０に処理を依頼する。
【００９４】
ステップＳ１０３では、ネットワークプロトコル処理部３２０は、受け取った平文データを最大送信単位ごとに平文パケットとして再構成し、ネットワークプロトコルの上位レイヤ処理（ＴＣＰプロトコル処理やＩＰプロトコル処理の一部等）を行う。
【００９５】
ステップＳ１０４では、ネットワークプロトコル処理部３２０は、平文パケットを暗復号認証処理に必要なパラメータとともに暗復号認証リクエストとして暗復号認証リクエスト蓄積部３６０に格納し、暗復号認証処理制御部３４０に暗号認証処理を指示する。ＣＰＵにより実行されるここまでの処理が、例えば図３（ｂ）の(i)２番目のパケット「２」についてのネットワークプロトコルの前半処理に相当する。
【００９６】
ステップＳ１０５では、暗復号認証処理制御部３４０は、暗復号認証処理部３５０が処理中でないかを判別する。暗復号認証処理部３５０が処理中であった場合は、処理を終了する。
【００９７】
ステップＳ１０６では、暗復号認証処理制御部３４０は、暗復号認証処理部３５０において既に暗復号認証処理が終了している暗復号認証リクエストがないか否かを判別する。
【００９８】
ステップＳ１０７では、暗復号認証処理制御部３４０は、暗復号認証処理部３５０において既に暗復号認証処理が終了している暗復号認証リクエストの暗復号認証完了処理を行う。ＣＰＵにより実行されるステップＳ１０５乃至ステップＳ１０７までの処理が、例えば図３（ｂ）の(ii)１番目のパケット「１」のＨＷ後半処理に相当する。
【００９９】
ステップＳ１０８では、暗復号認証処理制御部３４０は、暗復号認証リクエスト蓄積部３６０に暗復号認証リクエストが格納されているか否かを判別する。
【０１００】
暗復号認証リクエスト蓄積部３６０に暗復号認証リクエストが存在する場合、ステップＳ１０９で暗復号認証処理制御部３４０は、暗復号認証処理部３５０のセットアップを行う。具体的には、暗復号認証処理制御部３４０は、暗復号認証リクエストに格納されている平文・暗号化データと暗復号認証処理に必要なパラメータを用いて、暗復号認証処理を暗復号認証処理部３５０に指示する。ＣＰＵにより実行されるステップＳ１０８及びステップＳ１０９の処理が、例えば図３（ｂ）の(iii)２番目のパケット「２」のＨＷ前半処理に相当する。
【０１０１】
ステップＳ１１０では、暗復号認証処理部３５０は、暗復号認証処理制御部３４０の指示に基づき、暗復号認証処理を開始する。ここで、暗復号認証処理は非同期に実行され、処理の完了を待ち合わせることはしない。
【０１０２】
ステップＳ１１１では、暗復号認証処理制御部３４０は、上記ステップＳ１０７において暗復号認証完了処理を行った暗復号認証リクエストがあれば、ネットワークプロトコル処理部３２０に対して、ネットワークプロトコル後半処理（上位レイヤ処理から指示を受けている場合は下位レイヤ処理、下位レイヤ処理から指示を受けている場合は上位レイヤ処理）を同じＣＰＵコンテキストで行うように指示する。
【０１０３】
ステップＳ１１２では、ネットワークプロトコル処理部３２０は、ネットワークプロトコルの下位レイヤ処理を行い、処理が完了した暗号化パケットを送信するように通信部３３０に指示する。ＣＰＵにより実行されるステップＳ１１１及びステップＳ１１２の処理が、例えば図３（ｂ）の(iv)１番目のパケット「１」のレイヤ２以降の処理に相当する。
【０１０４】
ステップＳ１１３では、通信部３３０は、ネットワークプロトコル処理部３２０から受け取った暗号化パケットを対向のセキュア通信装置（相手側セキュア通信装置）に送信する。
【０１０５】
このように、ステップＳ１０１からステップＳ１１２に至るまで、前半処理と後半処理を一連のＣＰＵコンテキストで行う。直前のパケットの後半処理（レイヤ２以降の処理）と次のパケットの処理（レイヤ１の処理）をシームレスに連続させることで、関数の時間としては待ち時間なしでパケットの処理が行えることになる。すなわち、暗復号認証処理制御部３４０は、リクエストの通知だけで関数をリターンせずにレイヤ２以降の処理を実行して（換言すれば、同じＣＰＵコンテキストにて）、その後に関数をリターンする。暗復号認証処理制御部３４０が、途中で関数をリターンしないことで１つのシーケンスで実行される。したがって、受信したパケットをネットワークプロトコル処理する際、暗復号認証処理による処理の分断なしに、同じコンテキストで上位レイヤまでの処理を実現することができる。
【０１０６】
次に、セキュア通信装置３００が、送信側の暗号化情報通信装置である場合を例に動作を説明する。この場合は、暗復号認証処理部３５０で暗復号認証処理が終了した際の動作に対応する。
【０１０７】
図８は、セキュア通信装置３００によるセキュア通信処理時の動作を説明する制御シーケンス図である。
【０１０８】
ステップＳ２０１では、暗復号認証処理部３５０は、暗復号認証処理制御部３４０に対してステップＳ２０２以降の処理を開始するようソフトウェア遅延割り込み処理の開始を指示する。
【０１０９】
ステップＳ２０２では、暗復号認証処理制御部３４０は、暗復号認証処理部３５０が処理中でないかを判別する。暗復号認証処理部３５０が処理中であった場合は、処理を終了する。
【０１１０】
ステップＳ２０３では、暗復号認証処理制御部３４０は、暗復号認証処理部３５０において既に暗復号認証処理が終了している暗復号認証リクエストがないか否かを判別する。
【０１１１】
ステップＳ２０４では、暗復号認証処理制御部３４０は、暗復号認証処理部３５０において既に暗復号認証処理が終了している暗復号認証リクエストの暗復号認証完了処理を行う。
【０１１２】
ステップＳ２０５では、暗復号認証処理制御部３４０は、暗復号認証リクエスト蓄積部３６０に暗復号認証リクエストが格納されているか否かを判別する。
【０１１３】
暗復号認証リクエスト蓄積部３６０に暗復号認証リクエストが存在する場合、ステップＳ２０６で暗復号認証処理制御部３４０は、暗復号認証処理部３５０のセットアップを行う。具体的には、暗復号認証処理制御部３４０は、暗復号認証リクエストに格納されている平文・暗号化データと暗復号認証処理に必要なパラメータを用いて、暗復号認証処理を暗復号認証処理部３５０に指示する。
【０１１４】
ステップＳ２０７では、暗復号認証処理部３５０は、暗復号認証処理制御部３４０の指示に基づき、暗復号認証処理を開始する。ここで、暗復号認証処理は非同期に実行され、処理の完了を待ち合わせることはしない。
【０１１５】
ステップＳ２０８では、暗復号認証処理制御部３４０は、上記ステップＳ２０７において暗復号認証完了処理を行った暗復号認証リクエストがあれば、ネットワークプロトコル処理部３２０に対して、ネットワークプロトコル後半処理（上位レイヤ処理から指示を受けている場合は下位レイヤ処理、下位レイヤ処理から指示を受けている場合は上位レイヤ処理）を同じＣＰＵコンテキストで行うように指示する。
【０１１６】
ステップＳ２０９では、ネットワークプロトコル処理部３２０は、ネットワークプロトコルの下位レイヤ処理を行い、処理が完了した暗号化パケットを送信するように通信部３３０に指示する。
【０１１７】
ステップＳ２１０では、通信部３３０は、ネットワークプロトコル処理部３２０から受け取った暗号化パケットを対向のセキュア通信装置（相手側セキュア通信装置）に送信する。
【０１１８】
以上詳細に説明したように、本実施の形態によれば、セキュア通信装置３００の暗復号認証処理制御部３４０は、暗復号認証処理部３５０から、暗復号処理又は認証処理が完了している１つ前のパケットの処理結果を取得し、１つ前のパケットのネットワークプロトコルの後半処理と次のパケットのネットワークプロトコルの前半処理とを連続して行うようにネットワークプロトコル処理部３２０を制御する。例えば、暗復号認証処理制御部３４０は、ネットワークプロトコル処理部３２０から、ネットワークプロトコルの前半処理を終えた次のパケットの暗復号処理又は認証処理を依頼された際、同じＣＰＵコンテキストにより、直前に暗復号処理又は認証処理が完了している１つ前のパケットの処理結果を暗復号認証処理部３５０から取得し、１つ前のパケットのネットワークプロトコルの後半処理をネットワークプロトコル処理部３２０が処理するように制御する。これにより、受信したパケットをネットワークプロトコル処理する際、暗復号認証処理による処理の分断なしに、同じコンテキストで上位レイヤまでの処理を実現することができる。その結果、処理分断によるオーバーヘッドなしに、ＣＰＵやＨＷエンジンの負荷の偏りが起こりにくい暗復号処理又は認証処理を行うことができる。したがって、ルータやゲートウェイなど、特別に高速化が求められる機器や、組み込み機器など非力なリソースしか持たない端末同士であっても、高速なセキュア送信処理を実現することができる。
【０１１９】
また、本実施の形態では、暗復号認証処理制御部３４０は、１つ前のパケットの処理結果を暗復号認証処理部３５０から取得した後、１つ前のパケットのネットワークプロトコル後半処理をネットワークプロトコル処理部３２０において処理する前に、同じＣＰＵコンテキストにより、次のパケットの暗復号処理又は認証処理を暗復号認証処理部３５０に対して依頼する。この構成により、ＣＰＵコンテキストの切り替えを行うことなく、１つ目のパケット処理完了後に２つ目のパケットの暗復号処理又は認証処理の依頼を行うことができ、暗復号処理又は認証処理の高速化を図ることができる。また、暗復号認証処理部３５０が動作していない時間を最小にすることができ、暗復号処理又は認証処理の高速化や、暗復号認証処理手段の効率的な利用を図ることができる。
【０１２０】
また、本実施の形態では、暗復号認証処理制御部３４０は、暗復号認証処理部３５０からの完了ハードウェア割り込みコンテキスト、又は、ソフトウェア遅延割り込みコンテキストにより、処理が完了した１つ前のパケットの処理結果を暗復号認証処理部３５０から取得する暗復号認証後半処理を行い、ネットワークプロトコルの前半処理が完了した次のパケットがある場合は、同じＣＰＵコンテキストにより、次のパケットの暗復号処理又は認証処理を暗復号認証処理部３５０に依頼する暗復号認証前半処理を行い、１つ前のパケットのネットワークプロトコル後半処理をネットワークプロトコル処理部３２０が処理するように制御する。この構成により、ネットワークプロトコルの前半処理、完了ハードウェア割り込み（又はソフトウェア遅延割り込み）のうち、いずれか早いタイミングで暗復号認証処理制御部３４０を動作させることができ、暗復号処理又は認証処理の高速化を図ることができる。
【０１２１】
また、本実施の形態では、暗復号認証処理制御部３４０は、各処理を、(i)次のパケットのネットワークプロトコルの前半処理、(ii)１つ前のパケットの暗復号認証後半処理、(iii)次のパケットの暗復号認証前半処理、及び(iv)１つ前のパケットのネットワークプロトコルの後半処理、の順に並び替えてネットワークプロトコル処理部３２０と暗復号認証処理部３５０とを並列処理させるので、合成・細分化・並び替えにより、処理順序を維持しつつ、ＨＷ／ＳＷの並行処理を実現することができる。
【０１２２】
さらに、本実施の形態では、ネットワークプロトコルの前半処理が完了したパケットを、パケット毎に優先度を設定し、暗復号処理又は認証処理に必要なパラメータとともに暗復号認証リクエストとして蓄積し、暗復号認証リクエストを優先度順に暗復号認証処理部３５０に受け渡す暗復号認証リクエスト蓄積部３６０を備えているので、例えばＡＶストリーミングのように、高い優先度で処理を行わなければならない送受信パケットの高速化を図ることができる。
【０１２３】
（実施の形態３）
実施の形態３は、セキュア通信装置の別の動作例について説明する。
【０１２４】
本発明の実施の形態３に係るセキュア通信装置のハード的構成は、図６同一構成であるため説明を省略する。
【０１２５】
図９は、セキュア通信装置３００が受信側として機能する場合のセキュア通信処理時の動作を説明する制御シーケンス図である。図７に示すフローと同一処理を行うステップには同一ステップ番号を付して説明を省略する。
【０１２６】
ステップＳ３０１では、通信部３３０は、対向のセキュア通信装置から受信した暗号化パケットを処理するため、ステップＳ３０２以降の処理を行うためのソフトウェア遅延割り込み処理の開始指示を行う。
【０１２７】
ステップＳ３０２では、ネットワークプロトコル処理部３２０は、受け取った暗号化パケットの、ネットワークプロトコルの下位レイヤ処理（ＩＰプロトコル処理の一部とそれ以下のレイヤ処理）を行う。
【０１２８】
ステップＳ１０４からステップＳ１１１までの処理は図７の対応する処理と同じである。
【０１２９】
ステップＳ３０３では、ネットワークプロトコル処理部３２０は、ネットワークプロトコルの上位レイヤ処理（ＴＣＰプロトコル処理やＩＰプロトコル処理の一部等）を行い、処理が完了した平文パケットを上位プログラム３１０の受信バッファに格納する。
【０１３０】
次に、セキュア通信装置３００が、送信側の暗号化情報通信装置である場合を例に動作を説明する。この場合は、暗復号認証処理部３５０で暗復号認証処理が終了した際の動作に対応する。
【０１３１】
図１０は、セキュア通信装置３００によるセキュア通信処理時の動作を説明する制御シーケンス図である。図８に示すフローと同一処理を行うステップには同一ステップ番号を付して説明を省略する。
【０１３２】
ステップＳ２０１では、暗復号認証処理部３５０は、暗復号認証処理制御部３４０に対してステップＳ２０２以降の処理を開始するようソフトウェア遅延割り込み処理の開始を指示する。
【０１３３】
ステップＳ２０２からステップＳ２０８までの処理は図８の対応する処理と同じである。
【０１３４】
ステップＳ４０１では、ネットワークプロトコル処理部３２０は、ネットワークプロトコルの上位レイヤ処理（ＴＣＰプロトコル処理やＩＰプロトコル処理の一部等）を行い、処理が完了した平文パケットを上位プログラム３１０の受信バッファに格納する。
【０１３５】
このように、本実施の形態のセキュア通信装置によれば、実施の形態２と同様の効果、すなわち受信したパケットをネットワークプロトコル処理する際、暗復号認証処理による処理の分断なしに、同じコンテキストで上位レイヤまでの処理を実現することができ、ルータやゲートウェイなど、特別に高速化が求められる機器や、組み込み機器など非力なリソースしか持たない端末同士であっても、高速なセキュア受信処理を実現することができる。
【０１３６】
以上の説明は本発明の好適な実施の形態の例証であり、本発明の範囲はこれに限定されることはない。例えば、ＩＰｖ６ネットワークを介してＩＰｓｅｃプロトコルにより暗号化通信を行う暗号化情報通信システムに適用可能であるが、ＩＰｖネットワークであればよく、ＩＰｖ６ネットワークの機能を含む上位バージョンが策定された場合はこれも包含するものである。
【０１３７】
また、ネットワークプロトコル処理部３２０、暗復号認証処理制御部３４０等の各機能ブロックは典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されてもよいし、一部又は全てを含むように１チップ化されてもよい。集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０１３８】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【０１３９】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０１４０】
また、本実施の形態ではセキュア通信装置及びセキュア通信方法という名称を用いたが、これは説明の便宜上であり、暗号化情報通信装置、暗号化情報通信システム、セキュリティアソシエーション方法等であってもよいことは勿論である。
【０１４１】
さらに、上記セキュア通信装置を構成する各部、例えばネットワークプロトコル処理部の種類、その数及び接続方法などはどのようなものでもよい。
【０１４２】
以上説明したセキュア通信方法は、このセキュア通信方法を機能させるためのプログラムでも実現される。このプログラムはコンピュータで読み取り可能な記録媒体に格納されている。
【産業上の利用可能性】
【０１４３】
以上のように、本発明に係るセキュア通信装置、セキュア通信方法及びプログラムは、ソフトウェア処理、又は、ハードウェア処理によって高速なＩＰセキュア通信処理を行うことができる効果を有し、セキュア通信機器及びセキュア通信方法等に有用である。
【図面の簡単な説明】
【０１４４】
【図１】本発明の基本的な考え方を説明するプロトコルレベルで記述した全体構成図
【図２】本発明の基本的な考え方を説明する負荷の平準化を示す図
【図３】本発明の基本的な考え方を説明する負荷の平準化を用いた高速制御方式を示す図
【図４】本発明の実施の形態１に係るセキュア通信装置の構成を示す図
【図５】上記実施の形態１に係るセキュア通信装置の暗号認証処理部及びＨＷ暗復号認証処理部の動作タイミングを示すタイミング図
【図６】本発明の実施の形態２に係るセキュア通信装置の構成を示すブロック図
【図７】上記実施の形態２に係るセキュア通信装置が受信側として機能する場合のセキュア通信処理時の動作を説明する制御シーケンス図
【図８】上記実施の形態２に係るセキュア通信装置によるセキュア通信処理時の動作を説明する制御シーケンス図
【図９】本発明の実施の形態３に係るセキュア通信装置が受信側として機能する場合のセキュア通信処理時の動作を説明する制御シーケンス図
【図１０】上記実施の形態３に係るセキュア通信装置によるセキュア通信処理時の動作を説明する制御シーケンス図
【図１１】従来のＨＷ暗号認証を行う場合の通信スタック処理を説明する図
【図１２】従来のセキュア通信装置の暗号認証処理部の詳細な構成を示す図
【図１３】従来のセキュア通信装置の暗号認証処理部及びＨＷ暗復号認証処理部の動作タイミングを示すタイミング図
【符号の説明】
【０１４５】
１００，２００，３００  セキュア通信装置
１１０  ＩＰセキュアプロトコル
１２０  クリプトマネージャ
１３０  ＨＷ暗復号認証エンジン
２１０  通信スタック部
２２０  バッファ
２３０  暗号認証処理部
２３１  リクエスト制御部
２３２  ＨＷ前後処理部
２３３  キュー
２４０  ＨＷ暗復号認証処理部
３１０  上位プログラム
３２０  ネットワークプロトコル処理部
３３０  通信部
３４０  暗復号認証処理制御部
３５０  暗復号認証処理部
３６０  暗復号認証リクエスト蓄積部
【図１】
2010057122.tif 000003
【図２】
2010057122.tif 000004
【図３】
2010057122.tif 000005
【図４】
2010057122.tif 000006
【図５】
2010057122.tif 000007
【図６】
2010057122.tif 000008
【図７】
2010057122.tif 000009
【図８】
2010057122.tif 000010
【図９】
2010057122.tif 000011
【図１０】
2010057122.tif 000012
【図１１】
2010057122.tif 000013
【図１２】
2010057122.tif 000014
【図１３】
2010057122.tif 000015