(57)【要約】【課題】通信の暗号処理に用いる制御情報の生成に係るホストＣＰＵの処理負担を軽減することができる通信装置を提供する。【解決手段】初期状態において、ホストＣＰＵ６０は、パケットの付加情報と暗号処理部３０の制御情報とを対応付ける所定の対応テーブルを、ハードウェア・スタック１０および２０にそれぞれ与える。送信すべきパケットがハードウェア・スタック１０に入力されると、ハードウェア・スタック１０は、パケットの付加情報を解析し、これに対応する制御情報を上記の対応テーブルから検索して取得する。そして、送信パケットに所定のプロトコル処理を行い、当該処理後のパケットに、検索して得た制御情報を挿入して、暗号処理部３０に出力する。暗号処理部３０は、挿入された制御情報に基づいて、パケットに所定の暗号処理を行なう。【選択図】      図１
2005020510.tif 000002
【特許請求の範囲】
【請求項１】
送信または受信されるパケットを、所定のプロトコルに基づいて処理するプロトコル処理手段と、
上記パケットに、入力される制御情報に基づいた暗号処理を行なう暗号処理手段と、を有し、
上記プロトコル処理手段は、
上記プロトコルに基づく処理の過程で上記暗号処理手段に実行させる暗号処理のための上記制御情報を、上記パケットに含まれる付加情報に基づいて生成する制御情報生成手段を含む、
通信装置。
【請求項２】
上記制御情報生成手段は、上記付加情報と上記制御情報とを対応づける、予め与えられた対応テーブルの中から、上記パケットに含まれる付加情報に対応した制御情報を検索する、
請求項１に記載の通信装置。
【請求項３】
上記プロトコル処理手段は、上記暗号処理手段へ出力するパケットの中に上記生成された制御情報を挿入し、
上記暗号処理手段は、上記プロトコル処理手段から入力したパケットに挿入される上記制御情報を抽出する、
請求項１に記載の通信装置。
【請求項４】
複数の上記プロトコル処理手段と、
上記プロトコル処理手段と上記暗号処理手段との間における通信を制御する通信制御手段と、を有し、
上記プロトコル処理手段は、上記通信制御手段にパケットの出力許可を要求し、上記通信制御手段から上記許可を与えられた場合にパケットを出力し、
上記通信制御手段は、上記プロトコル処理手段からパケットの出力許可の要求を受けた場合、上記暗号処理手段にパケットを出力中のプロトコル処理手段が存在しないことを条件として、要求元のプロトコル処理手段によるパケットの出力を許可する、
請求項３に記載の通信装置。
【請求項５】
上記プロトコル処理手段は、
上記対応テーブルを記憶する記憶手段と、
上記プロトコルに基づいた処理の結果に応じて、上記記憶手段に記憶される上記対応テーブルを更新するテーブル更新手段と、を含む、
請求項２に記載の通信装置。
【請求項６】
上記記憶手段は、暗号処理に用いる初期値の情報を上記制御情報として含んだ上記対応テーブルを記憶し、
上記テーブル更新手段は、上記プロトコルに基づいた処理の結果として生成されるパケットまたはその処理前のパケットに応じて、上記対応テーブルにおける上記初期値の情報を更新する、
請求項５に記載の通信装置。
【請求項７】
上記制御情報生成手段は、上記パケットを生成した処理装置もしくは上記パケットを生成したプログラム上の処理ブロックを指示する付加情報に対応した制御情報を、上記対応テーブルの中から検索する、
請求項２に記載の通信装置。
【請求項８】
上記制御情報生成手段は、通信相手のネットワーク・アドレスを示す付加情報と、上記通信相手との間で共有される暗号処理に係わる取り決めを指示する付加情報とに対応した制御情報を、上記対応テーブルの中から検索する、
請求項２に記載の通信装置。
【請求項９】
上記制御情報生成手段は、上記プロトコルに基づく処理の結果として暗号化され、もしくは取り除かれる付加情報に代わって新たに付加すべき付加情報を、上記対応テーブルの中から検索する、
請求項２に記載の通信装置。
【請求項１０】
上記暗号処理手段は、上記パケットに所定の認証処理を行なった場合、上記パケットが認証に合格することを条件として、認証処理後のパケットを上記プロトコル処理手段に出力する、
請求項１に記載の通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、所定のプロトコルに基づいて通信を行なう通信装置に係り、特に、暗号化通信を行なう通信装置に関するものである。
【０００２】
【従来の技術】
図１２は、所定のプロトコルに基づいて暗号化通信を行なう一般的な通信装置の構成例を示すブロック図である。
図１２に示す通信装置は、ハードウェア・スタック１および２と、暗号処理部３と、ネットワーク・インターフェース４と、ホストＣＰＵ５と、メモリ６とを有する。
【０００３】
ハードウェア・スタック１，２は、それぞれ所定のプロトコル（第１のプロトコル、第２のプロトコル）に基づいて送受信パケットの処理を行なう、専用のハードウェアで構成されたユニットである。
【０００４】
暗号処理部３は、ハードウェア・スタック１，２の各プロトコルにおいて必要とされる送受信パケットの暗号処理を行なう。
【０００５】
ネットワーク・インターフェース４は、インターネット等の公衆ネットワークにつながる通信線へ送信パケットを出力するとともに、この通信線から受信パケットを入力する。
【０００６】
ホストＣＰＵ５は、図示しないプログラムメモリに格納されるプログラムに基づいて、通信装置の全体的な動作に係わる処理を実行する。
【０００７】
メモリ６は、ホストＣＰＵ５による処理の過程で用いられるデータ、例えば送信パケットや受信パケット、暗号処理部３の制御情報などを一時的に記憶する。
【０００８】
なお、これらのユニット（ハードウェア・スタック１および２、暗号処理部３、ネットワーク・インターフェース４、ホストＣＰＵ５、メモリ６）は、共通のＣＰＵバスＢＳに接続されており、各ユニットは、ホストＣＰＵ５の制御に基づいて、ＣＰＵバスＢＳを介しデータの受け渡しを行なう。
【０００９】
このような構成を有する図１２に示す通信装置の動作例として、パケットの送信を行なう場合について説明する。
【００１０】
送信すべきデータがメモリ６に準備されると、ＣＰＵ５は、メモリ６からこの送信データを読み出して、ＣＰＵバスＢＳを介し、ハードウェア・スタック１に入力する。
ハードウェア・スタック１は、入力された送信データに対して第１のプロトコルに基づいた処理を行い、送り先のアドレスやデータ長などの付加情報が付加された送信パケットを生成する。送信パケットの生成が完了すると、ハードウェア・スタック１はＣＰＵ５に割り込み信号を発する。
この割り込み信号を受けて、ＣＰＵ５は、生成された送信パケットをＣＰＵバスＢＳ経由でメモリ６に入力し、メモリ６に一旦格納する。
【００１１】
次に、ＣＰＵ５は、メモリ６に格納した送信パケットの付加情報を解析し、その解析結果から、暗号処理部３において実行すべき暗号処理に必要な制御情報を生成する。制御情報には、例えば、暗号処理のアルゴリズム、初期値、鍵などの情報が含まれる。ＣＰＵ５は、この生成された制御情報と、メモリ６に格納される送信パケットとを、ＣＰＵバスＢＳを介して暗号処理部３に入力する。
暗号処理部３は、制御情報および送信パケットが入力されると、制御情報に基づいて送信パケットに所定の暗号処理を行なう。
暗号処理部３において暗号処理が実行されると、ＣＰＵ５は、暗号処理後の送信パケットをＣＰＵバスＢＳ経由でメモリ６に入力し、メモリ６に一旦格納する。
【００１２】
続いて、ＣＰＵ５は、メモリ６に格納したこの暗号処理後の送信パケットを読み出して、ＣＰＵバスＢＳを介し、ハードウェア・スタック２に入力する。
ハードウェア・スタック２は、入力された送信パケットに対して第２のプロトコルに基づいた処理を行い、新たな付加情報を付加した送信パケットを生成する。送信パケットの生成が完了すると、ハードウェア・スタック２はＣＰＵ５に割り込み信号を発する。
この割り込み信号を受けて、ＣＰＵ５は、生成された送信パケットをＣＰＵバスＢＳ経由でメモリ６に入力し、メモリ６に一旦格納する。
【００１３】
更に、ＣＰＵ５は、メモリ６に格納した送信パケットの付加情報を解析し、その解析結果から、暗号処理部３において実行すべき暗号処理に必要な制御情報を生成する。そして、生成した制御情報と、メモリ６に格納される送信パケットとを、ＣＰＵバスＢＳを介して暗号処理部３に再び入力する。
暗号処理部３は、制御情報および送信パケットが入力されると、制御情報に基づいて送信パケットに所定の暗号処理を行なう。
暗号処理部３において暗号処理が実行されると、ＣＰＵ５は、暗号処理後の送信パケットをＣＰＵバスＢＳ経由でメモリ６に入力し、メモリ６に一旦格納する。
そして、ＣＰＵ５は、メモリ６に格納した送信パケットを、ＣＰＵバスＢＳ経由でネットワーク・インターフェース４に入力し、公衆ネットワークに接続された通信回線へ出力させる。
【００１４】
暗号化通信を行なう通信装置に関して、例えば以下の特許文献１に記載される技術が存在する。特許文献１の図２には、暗号化通信ＩＣ（２０５）と、その処理を制御するＣＰＵ（３０１）とを有した機器が記載されている。
【００１５】
【特許文献１】
特開２００１−２４９８９９号公報
【００１６】
【発明が解決しようとする課題】
上述したように、従来の通信装置では、ハードウェア・スタックにおいて生成されたパケットが暗号処理部において処理される度に、ホストＣＰＵへの割り込みが発生し、暗号処理部に対する制御情報の設定などの処理がホストＣＰＵによって行なわれる。このため、ＣＰＵバスが混雑し、ホストＣＰＵの処理負担が重くなるという不利益がある。
【００１７】
本発明はかかる事情に鑑みてなされたものであり、その目的は、通信の暗号処理に用いる制御情報の生成に係るホストＣＰＵの処理負担を軽減することができる通信装置を提供することにある。
【００１８】
【課題を解決するための手段】
上記の目的を達成するため、本発明の通信装置は、送信または受信されるパケットを、所定のプロトコルに基づいて処理するプロトコル処理手段と、上記パケットに、入力される制御情報に基づいた暗号処理を行なう暗号処理手段と、を有し、上記プロトコル処理手段は、上記プロトコルに基づく処理の過程で上記暗号処理手段に実行させる暗号処理のための上記制御情報を、上記パケットに含まれる付加情報に基づいて生成する制御情報生成手段を含む。
【００１９】
本発明の通信装置によると、上記プロトコル処理手段における上記プロトコルに基づいた処理の過程で上記暗号処理手段に実行させる暗号処理のための上記制御情報が、上記プロトコル処理手段に含まれる上記制御情報生成手段において、上記パケットに含まれる付加情報に基づいて生成される。このため、上記暗号処理手段に対してホストＣＰＵ等の装置が制御情報を設定しなくても、上記プロトコルに基づいたパケットの暗号処理が実行される。
【００２０】
また、上記プロトコル処理手段は、上記暗号処理手段へ出力するパケットの中に上記生成された制御情報を挿入し、上記暗号処理手段は、上記プロトコル処理手段から入力したパケットに挿入される上記制御情報を抽出しても良い。
これにより、上記プロトコル処理手段と上記暗号処理手段との間で、上記制御情報を含むパケットがやり取りされる。
【００２１】
さらに、本発明の通信装置は、複数の上記プロトコル処理手段と、上記プロトコル処理手段と上記暗号処理手段との間における通信を制御する通信制御手段とをを有しても良い。
この場合、上記プロトコル処理手段は、上記通信制御手段にパケットの出力許可を要求し、上記通信制御手段から上記許可を与えられた場合にパケットを出力する。
上記通信制御手段は、上記プロトコル処理手段からパケットの出力許可の要求を受けた場合、上記暗号処理手段にパケットを出力中のプロトコル処理手段が存在しないことを条件として、要求元のプロトコル処理手段によるパケットの出力を許可する。
これにより、複数の上記プロトコル処理手段から上記暗号処理手段へ出力されるパケットの衝突が防止される。
【００２２】
また、上記制御情報生成手段は、上記付加情報と上記制御情報とを対応づける、予め与えられた対応テーブルの中から、上記パケットに含まれる付加情報に対応した制御情報を検索しても良い。
さらに、上記プロトコル処理手段は、上記対応テーブルを記憶する記憶手段と、上記プロトコルに基づいた処理の結果に応じて、上記記憶手段に記憶される上記対応テーブルを更新するテーブル更新手段とを含んでも良い。
これにより、例えば、上記プロトコルに基づいた処理の度に上記制御情報の更新が必要となる場合でも、その更新の内容が、上記プロトコル処理手段の上記記憶手段に記憶された上記対応テーブルに反映される。
【００２３】
【発明の実施の形態】
以下、本発明の実施形態について、図面を参照して説明する。
【００２４】
図１は、本発明の実施形態に係る通信装置の構成の一例を示すブロック図である。
【００２５】
まず、図１に示す通信装置の各構成要素について説明する。
【００２６】
図１に示す通信装置は、ハードウェア・スタック１０および２０と、暗号処理部３０と、通信制御部４０と、ネットワーク・インターフェース５０と、ホストＣＰＵ６０と、メモリ７０とを有する。
ハードウェア・スタック１０および２０は、本発明のプロトコル処理手段の一実施形態である。
暗号処理部３０は、本発明の暗号処理手段の一実施形態である。
【００２７】
［ハードウェア・スタック１０および２０］
ハードウェア・スタック１０および２０は、送信または受信されるパケットを、それぞれ所定のプロトコルに基づいて処理するユニットであり、専用のハードウェアによって構成される。
【００２８】
ここでは例として、ハードウェア・スタック１０は、音声データストリームや映像データストリームなどのリアルタイム処理が要求されるデータの通信に関するプロトコルであるＲＴＰ（ｒｅａｌ−ｔｉｍｅ  ｔｒａｎｓｐｏｒｔ  ｐｒｏｔｏｃｏｌ）、ならびに、このＲＴＰにセキュリティ機能を付加するＳＲＴＰ（ｓｅｃｕｒｅ  ＲＴＰ）と称されるプロトコルに係わる処理を行なうものとする。
また、ハードウェア・スタック２０は、ＴＣＰ（ＵＤＰ）／ＩＰ（ｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ  （ｕｓｅｒ  ｄａｔａｇｒａｍ  ｐｒｏｔｏｃｏｌ）  ／  ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）と称されるプロトコル、ならびに、そのＩＰプロトコルにセキュリティ機能を付加するＩＰｓｅｃ（ＩＰ  ｓｅｃｕｒｉｔｙ  ｐｒｏｔｏｃｏｌ）と称されるプロトコルに係わる処理を行なうものとする。
【００２９】
図２は、ハードウェア・スタック１０の構成の一例を示すブロック図である。
【００３０】
図２に示すハードウェア・スタック１０は、パケット処理部１１と、パケット記憶部１２と、制御情報生成部１３と、テーブル記憶部１４と、テーブル更新部１５と、インターフェース部１６，…，１８とを有する。
制御情報生成部１３は、本発明の制御情報生成手段の一実施形態である。
テーブル記憶部１４は、本発明の記憶手段の一実施形態である。
テーブル更新部１５は、本発明のテーブル更新手段の一実施形態である。
【００３１】
｛パケット処理部１１｝
パケット処理部１１は、インターフェース部１６〜１８において入力されるパケットに上述したＲＴＰおよびＳＲＴＰに係わる処理を行い、その処理結果をインターフェース部１６〜１８へ出力する。
【００３２】
例えばパケットの送信時において、パケット処理部１１は、インターフェース部１６を介しＣＰＵバスＢＳから入力される送信パケットに所定の付加情報を付加して、ＲＴＰパケットを生成する。さらに、パケット処理部１１は、この生成したＲＴＰパケットに、制御情報生成部１３から入力した制御情報（ＳＲＴＰの暗号化処理に用いられる情報）および付加情報（後述するフロー番号）を挿入し、これをインターフェース部１７から暗号処理部３０へ出力する。そして、パケット処理部１１は、インターフェース部１７を介して暗号処理部３０から入力したＳＲＴＰの暗号化パケットを、インターフェース部１８からハードウェア・スタック２０へ出力する。
【００３３】
また、パケットの受信時において、パケット処理部１１は、インターフェース部１８を介しハードウェア・スタック２０から入力したＳＲＴＰの暗号化パケットに、制御情報生成部１３から入力した制御情報（ＳＲＴＰの復号化処理に用いられる情報）を挿入し、これをインターフェース部１７から暗号処理部３０へ出力する。そして、パケット処理部１１は、インターフェース部１７を介して暗号処理部３０から入力した復号化後のＲＴＰパケットに、ＲＴＰの付加情報を取り除く等の処理を行い、この処理後の受信パケットを、インターフェース部１６からＣＰＵバスＢＳへ出力する。
【００３４】
｛パケット記憶部１２｝
パケット記憶部１２は、パケット処理部１１における処理前や処理後のパケットを一時的に記憶する。
【００３５】
｛テーブル記憶部１４｝
テーブル記憶部１４は、ＳＲＴＰの暗号処理に用いられる制御情報と、パケットに含まれる付加情報とを対応づける対応テーブルを記憶する。
制御情報は、例えば、ＳＲＴＰにおける暗号化・復号化アルゴリズムを指定する情報や、鍵の情報、初期値の情報など、ＳＲＴＰの暗号処理に必要な種々の情報を含む。すなわち、制御情報は、ＳＲＴＰにおいて‘Ｃｒｙｐｔｏ  Ｇｒａｐｈｉｃ  Ｃｏｎｔｅｘｔ’と称されている、通信相手との間で共有される暗号処理に係わる種々の取り決めを示す情報を含む。
付加情報は、送信パケットを生成した処理装置（例えば、音声コーデックや画像コーデック等の装置）を指示する情報や、送信パケットを生成したプログラム上の処理ブロック（アプリケーション・プログラム等）を指示する情報などを含む。
さらに、対応テーブルは、これらの制御情報や付加情報とともに、各制御情報に対応付けて予め割り振られた固有の番号（フロー番号）を含む。
【００３６】
また、テーブル記憶部１４は、インターフェース部１６を介してホストＣＰＵ６０からのアクセス可能である。送受信が開始される前に、テーブル記憶部１４には、上述した対応テーブルがホストＣＰＵ６０によって書き込まれる。
【００３７】
｛制御情報生成部１３｝
制御情報生成部１３は、ＳＲＴＰに係わる暗号処理を暗号処理部３０において実行させるために必要となる制御情報を、パケットに含まれる付加情報に基づいて生成する。
すなわち、制御情報生成部１３は、パケット処理部１１から、暗号処理の対象となる送信パケットまたは受信パケットに含まれる付加情報を入力し、入力した付加情報に対応する制御情報を、テーブル記憶部１４に記憶される対応テーブルの中から検索する。そして、この検索により得られた制御情報を、パケット処理部１１に出力する。
【００３８】
また、制御情報生成部１３は、パケットの送信時において、ＳＲＴＰの暗号処理により暗号化される付加情報に代わって新たに付加すべき付加情報として、テーブル記憶部１４に記憶される対応テーブルの中から、この暗号化される付加情報に対応したフロー番号を検索する。そして、この検索により得られたフロー番号を、新たな付加情報としてパケット処理部１１に出力する。
【００３９】
｛テーブル更新部１５｝
テーブル更新部１５は、パケット処理部１１におけるＳＲＴＰに基づいた処理の結果として生成されるパケットまたはその処理前のパケットに応じて、テーブル記憶部１４に記憶される対応テーブルを更新する。
例えば、ＳＲＴＰの暗号化方式として、ＡＥＳ（ａｄｖａｎｃｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｓｔａｎｄａｒｄ）のカウンタ・モード方式が採用されている場合には、その暗号化処理に用いるカウンタの値を更新して、対応テーブルに記録する処理を行う。
【００４０】
｛インターフェース部１６｝
インターフェース部１６は、ＣＰＵバスＢＳとハードウェア・スタック１０との間におけるインターフェース処理を行なう。すなわち、ＣＰＵバスＢＳを介して伝送される送信パケットをパケット処理部１１に入力するとともに、パケット処理部１１において処理された受信パケットをＣＰＵバスＢＳに出力する。また、ＣＰＵバスＢＳを介して伝送される対応テーブルをテーブル記憶部１４に入力する。
【００４１】
｛インターフェース部１７｝
インターフェース部１７は、暗号処理部３０とハードウェア・スタック１０との間におけるインターフェース処理を行なう。すなわち、パケット処理部１１において処理されたパケットを暗号処理部３０へ出力するとともに、暗号処理部３０において処理されたパケットをパケット処理部１１へ入力する。ただし、両者の間におけるパケットのやり取りは、後述する通信制御部４０によって制御される。
【００４２】
｛インターフェース部１８｝
インターフェース部１８は、ハードウェア・スタック２０とハードウェア・スタック１０との間におけるインターフェース処理を行なう。すなわち、パケット処理部１１において処理されたパケットをパケット処理部２１へ出力するとともに、パケット処理部２１において処理されたパケットをパケット処理部１１へ入力する。
【００４３】
図３は、ハードウェア・スタック２０の構成の一例を示すブロック図である。
【００４４】
図３に示すハードウェア・スタック２０は、パケット処理部２１と、パケット記憶部２２と、制御情報生成部２３と、テーブル記憶部２４と、テーブル更新部２５と、インターフェース部２６，…，２９とを有する。
制御情報生成部２３は、本発明の制御情報生成手段の一実施形態である。
テーブル記憶部２４は、本発明の記憶手段の一実施形態である。
テーブル更新部２５は、本発明のテーブル更新手段の一実施形態である。
【００４５】
｛パケット処理部２１｝
パケット処理部２１は、インターフェース部２６〜２９において入力されるパケットに上述したＴＣＰ（ＵＤＰ）／ＩＰおよびＩＰｓｅｃに係わる処理を行い、その処理結果をインターフェース部２６〜２９出力する。
【００４６】
例えばパケットの送信を行なう場合、パケット処理部２１は、インターフェース部２８を介してハードウェア・スタック１０から入力したＳＲＴＰの暗号化パケットに所定の付加情報を付加して、ＴＣＰ（ＵＤＰ）／ＩＰパケットを生成する。さらに、パケット処理部２１は、この生成したＴＣＰ（ＵＤＰ）／ＩＰパケットに、制御情報生成部２３から入力した制御情報（ＩＰｓｅｃの暗号化処理に用いられる情報）を挿入し、これをインターフェース部２７から暗号処理部３０へ出力する。そして、パケット処理部２１は、インターフェース部２７を介して暗号処理部３０から入力したＩＰｓｅｃの暗号化パケットを、インターフェース部２９から公衆ネットワークへ出力する。
【００４７】
また、パケットの受信を行なう場合、パケット処理部２１は、インターフェース部２９を介して公衆ネットワークから入力した受信パケットに、制御情報生成部２３から入力した制御情報（ＩＰｓｅｃの復号化処理に用いられる情報）を挿入し、これをインターフェース部２７から暗号処理部３０へ出力する。次いで、パケット処理部２１は、インターフェース部２７を介して暗号処理部３０から入力した復号化後のＴＣＰ（ＵＤＰ）／ＩＰパケットよりＴＣＰ（ＵＤＰ）／ＩＰの付加情報を取り除き、その代わりに、制御情報生成部２３から入力したフロー番号を付加して、インターフェース部２８を介しハードウェア・スタック１０に出力する。
【００４８】
｛パケット記憶部２２｝
パケット記憶部２２は、パケット処理部２１における処理前や処理後のパケットを一時的に記憶する。
【００４９】
｛テーブル記憶部２４｝
テーブル記憶部２４は、ＩＰｓｅｃの暗号処理に用いられる制御情報と、パケットに含まれる付加情報とを対応づける対応テーブルを記憶する。
制御情報は、例えば、ＩＰｓｅｃにおける暗号化・復号化アルゴリズム、認証アルゴリズムを指定する情報や、鍵の情報、初期値の情報など、ＩＰｓｅｃの暗号処理において必要な種々の情報が含まれる。すなわち、制御情報は、ＩＰｓｅｃにおいてＳＡ（ｓｅｃｕｒｉｔｙ  ａｓｓｏｃｉａｔｉｏｎ）と称されている、通信相手との間で共有される暗号処理に係わる種々の取り決めを示す情報を含む。
付加情報は、通信相手のネットワーク・アドレスや、ＳＰＩ（ｓｅｃｕｒｉｔｙ  ｐａｒａｍｅｔｅｒｓ  ｉｎｄｅｘ）と称されるＳＡを間接的に指示するためのポインタの情報などを含む。
さらに、対応テーブルは、これらの制御情報や付加情報とともに、各制御情報に対応付けて予め割り振られた固有の番号（フロー番号）を含む。
【００５０】
また、テーブル記憶部２４は、インターフェース部２６を介してホストＣＰＵ６０からのアクセス可能である。送受信が開始される前に、テーブル記憶部２４には、上述した対応テーブルがホストＣＰＵ６０によって書き込まれる。
【００５１】
｛制御情報生成部２３｝
制御情報生成部２３は、ＩＰｓｅｃに係わる暗号処理を暗号処理部３０において実行させるために必要となる制御情報を、パケットに含まれる付加情報に基づいて生成する。
すなわち、制御情報生成部２３は、パケット処理部２１から、暗号処理の対象となる送信パケットまたは受信パケットに含まれた付加情報を入力し、この入力した付加情報に対応する制御情報を、テーブル記憶部２４の対応テーブルの中から検索する。そして、検索により得られた制御情報を、パケット処理部２１に出力する。
【００５２】
また、制御情報生成部２３は、パケットの受信時において、パケットから取り除かれるＴＣＰ（ＵＤＰ）／ＩＰの付加情報に代わって新たに付加すべき付加情報として、テーブル記憶部２４に記憶される対応テーブルの中から、この取り除かれる付加情報に対応したフロー番号を検索する。そして、この検索により得られたフロー番号を、新たな付加情報としてパケット処理部２１に出力する。
【００５３】
｛テーブル更新部２５｝
テーブル更新部２５は、パケット処理部２１におけるＩＰｓｅｃに基づいた処理の結果として生成されるパケットまたはその処理前のパケットに応じて、テーブル記憶部２４に記憶される対応テーブルを更新する。
例えば、ＩＰｓｅｃの暗号化されたパケットの一部から、次に入力される送信パケットの初期値を抽出し、対応テーブルにおける初期値を、この抽出した初期値に更新する。
【００５４】
｛インターフェース部２６｝
インターフェース部２６は、ＣＰＵバスＢＳとハードウェア・スタック２０との間におけるインターフェース処理を行なう。すなわち、ＣＰＵバスＢＳを介して伝送される送信パケットをパケット処理部２１に入力するとともに、パケット処理部２１において処理された受信パケットをＣＰＵバスＢＳに出力する。また、ＣＰＵバスＢＳを介して伝送される対応テーブルをテーブル記憶部２４に入力する。
【００５５】
｛インターフェース部２７｝
インターフェース部２７は、暗号処理部３０とハードウェア・スタック２０との間におけるインターフェース処理を行なう。すなわち、パケット処理部２１において処理されたパケットを暗号処理部３０へ出力するとともに、暗号処理部３０において処理されたパケットをパケット処理部２１へ入力する。ただし、両者の間におけるパケットのやり取りは、後述する通信制御部４０によって制御される。
【００５６】
｛インターフェース部２８｝
インターフェース部２８は、ハードウェア・スタック１０とハードウェア・スタック２０との間におけるインターフェース処理を行なう。すなわち、パケット処理部２１において処理されたパケットをパケット処理部１１へ出力するとともに、パケット処理部１１において処理されたパケットをパケット処理部２１へ入力する。
【００５７】
｛インターフェース部２９｝
インターフェース部２９は、ハードウェア・スタック２０とネットワーク・インターフェース５０との間におけるインターフェース処理を行なう。すなわち、パケット処理部２１において処理された送信パケットをネットワーク・インターフェース５０へ出力するとともに、ネットワーク・インターフェース５０において受信されたパケットをパケット処理部２１に入力する。
以上が、ハードウェア・スタック１０および２０の説明である。
【００５８】
［暗号処理部３０］
暗号処理部３０は、ハードウェア・スタック１０またはハードウェア・スタック２０から入力したパケットに対して、このパケットとともに入力される制御情報に基づいた暗号処理を行なう。
すなわち、暗号処理部３０は、ハードウェア・スタック１０またはハードウェア・スタック２０から入力したパケットより上述の制御情報を抽出し、この抽出した制御情報に基づいて、ＳＲＴＰまたはＩＰｓｅｃの暗号処理を行なう。そして、暗号処理部３０は、暗号処理後のパケットを、ハードウェア・スタック１０またはハードウェア・スタック２０へ出力する。
【００５９】
また、暗号処理部３０は、ＳＲＴＰパケットやＩＰｓｅｃパケットに暗号処理として所定の認証処理を行なった場合、そのパケットが認証に合格することを条件として、認証処理後のパケットをハードウェア・スタック１０またはハードウェア・スタック２０に出力する。すなわち、認証処理を行った結果が不合格である場合は、そのパケットをハードウェア・スタック１０またはハードウェア・スタック２０へ出力せずに、そのまま破棄する。
【００６０】
［通信制御部４０］
通信制御部４０は、ハードウェア・スタック１０およびハードウェア・スタック２０と、暗号処理部３０との間における通信を制御し、２つのハードウェア・スタックから暗号処理部３０へ出力されるパケットの衝突を防止する。
すなわち、通信制御部４０は、２つのハードウェア・スタックの一方からパケットの出力許可の要求を受けた場合、他方のハードウェア・スタックが暗号処理部３０にパケットを出力中でないことをを条件として、この要求元のハードウェア・スタックによるパケットの出力を許可する。
この通信制御部４０の動作については、後程、図８〜図１１を参照して詳しく説明する。
【００６１】
［ネットワーク・インターフェース５０］
ネットワーク・インターフェース５０は、インターネット等の公衆ネットワークにつながる通信線へハードウェア・スタック２０からの送信パケットを出力するとともに、この通信線からの受信パケットをハードウェア・スタック２０に入力する。
【００６２】
［ホストＣＰＵ６０］
ホストＣＰＵ６０は、図示しないプログラムメモリに格納されるプログラムに基づいて、図１に示す通信装置の全体な動作に係わる処理を実行する。
例えば、パケットの送受信を開始する際に、ハードウェア・スタック１０、ハードウェア・スタック２０、暗号処理部３０に対してそれぞれ初期設定を行なう。この初期設定では、ハードウェア・スタック１０および２０にそれぞれ上述した対応テーブルを設定する。
また、パケットの送信時において、メモリ７０に格納される送信パケットをハードウェア・スタック１０に順次供給する。パケットの受信時においては、ハードウェア・スタック１０より出力される受信パケットをメモリ７０に順次書き込む。
【００６３】
［メモリ７０］
メモリ７０は、ホストＣＰＵ５による処理の過程で用いられるデータ、例えば送信パケットや受信パケットなどを一時的に記憶する。
【００６４】
なお、ハードウェア・スタック１０、ハードウェア・スタック２０、暗号処理部３０、メモリ７０は、共通のＣＰＵバスＢＳに接続されており、これらのユニットは、ホストＣＰＵ６０の制御に基づいて、ＣＰＵバスＢＳを介しデータの受け渡しを行なう。
【００６５】
ここで、上述した構成を有する図１に示す通信装置の動作を説明する。
【００６６】
まず、パケット送信時の動作について、図４を参照して説明する。
【００６７】
パケットの送信や受信が開始される場合、その開始前に、ホストＣＰＵ６０は、ハードウェア・スタック１０、ハードウェア・スタック２０、暗号処理部３０に対して、それぞれ初期設定用のデータを与える（ステップＳＴ１０）。
これにより、ハードウェア・スタック１０のテーブル記憶部１４、ハードウェア・スタック２０のテーブル記憶部２４には、それぞれ所定の対応テーブルが書き込まれる。
【００６８】
次に、ホストＣＰＵ６０は、メモリ７０に格納される送信パケットを読み出して、ＣＰＵバスＢＳを介しハードウェア・スタック１０に出力する（ステップＳＴ１１）。
【００６９】
インターフェース部１６から送信パケットが入力されると、パケット処理部１１は、入力した送信パケットの付加情報（パケット生成元のコーデックに関する情報など）を調べ、これに対応するＲＴＰパケットを生成する。
また、制御情報生成部１３は、この入力した送信パケットの付加情報に対応するＳＲＴＰの制御情報をテーブル記憶部１４から検索して取得するとともに、当該付加情報に対応するフロー番号もテーブル記憶部１４から取得し、これらをパケット処理部１１に出力する。
そして、パケット処理部１１は、制御情報生成部１３から入力した制御情報およびフロー番号を上記のＲＴＰパケットに挿入することにより、例えば図５に示すようなパケットを生成し、これをインターフェース部１７から暗号処理部３０に出力する（ステップＳＴ１２）。
【００７０】
図５におけるデータＤ２はＲＴＰパケットを示し、データＤ１はこのＲＴＰパケットに付加された各種の制御情報（暗号制御データ、認証制御データ、暗号鍵、暗号初期値、認証鍵）を示している。
【００７１】
暗号処理部３０は、ハードウェア・スタック１０から入力したパケットより、制御情報、フロー番号、およびＲＴＰパケットをそれぞれ抽出する。そして、抽出した制御情報に基づいた所定の暗号化処理をＲＴＰパケットに施して、ＳＲＴＰのパケットを生成し、これをフロー番号とともにハードウェア・スタック１０に戻す（ステップＳＴ１３）。
【００７２】
ハードウェア・スタック１０にＳＲＴＰのパケットが戻されると、テーブル更新部１５は、テーブル記憶部１４の対応テーブルにおける当該ＳＲＴＰパケットの制御情報を検索し、当該ＳＲＴＰパケットのカウンタ値（ＡＥＳカウンタ・モード方式の暗号化処理に用いるカウンタの値）を取得する。そして、取得したカウンタ値に基づいて新たなカウント値を設定し、これを、対応テーブルへ記録する処理を行う。
そして、パケット処理部１１は、このＳＲＴＰパケットをフロー番号とともにインターフェース部１８からハードウェア・スタック２０へ出力する（ステップＳＴ１４）。
【００７３】
インターフェース部２８からＳＲＴＰパケットが入力されると、パケット処理部２１は、これに付随するフロー番号に基づいて、入力したＳＲＴＰパケットに所定の付加情報を付加し、ＴＣＰ（ＵＤＰ）／ＩＰのパケットを生成する。
また、制御情報生成部２３は、このフロー番号に対応した制御情報をテーブル記憶部２４から検索して取得し、これをパケット処理部２１に出力する。
そして、パケット処理部２１は、制御情報生成部２３から入力した制御情報をＴＣＰ（ＵＤＰ）／ＩＰパケットに付加し、これをインターフェース部２７から暗号処理部３０へ出力する（ステップＳＴ１５）。
【００７４】
暗号処理部３０は、ハードウェア・スタック２０から入力したパケットより、制御情報およびＴＣＰ（ＵＤＰ）／ＩＰパケットをそれぞれ抽出する。そして、抽出した制御情報に基づいた所定の暗号化処理をＴＣＰ（ＵＤＰ）／ＩＰパケットに施して、ＩＰｓｅｃのパケットを生成し、これをハードウェア・スタック２０に戻す（ステップＳＴ１６）。
【００７５】
ハードウェア・スタック２０にＩＰｓｅｃのパケットが戻されると、テーブル更新部２５は、当該ＩＰｓｅｃパケットに応じて、テーブル記憶部２４に記憶される対応テーブル上の当該ＩＰｓｅｃパケットに対応した初期値を更新する。例えば、当該ＩＰｓｅｃパケットの最後の１ブロックに相当するデータを新たな初期値として、当該ＩＰｓｅｃパケットに対応する初期値を更新する。
そして、パケット処理部２１は、このＩＰｓｅｃパケットをインターフェース部２９からネットワーク・インターフェース５０へ出力する（ステップＳＴ１７）。
ネットワーク・インターフェース５０は、入力されたＩＰｓｅｃパケットを、公衆ネットワークに接続される通信線へ出力する。
【００７６】
次に、パケット受信時の動作について、図６を参照して説明する。
【００７７】
公衆ネットワークに接続された通信線から受信パケットが入力されると、ネットワーク・インターフェース５０は、ハードウェア・スタック２０へこの受信パケットを出力する（ステップＳＴ２１）。
【００７８】
インターフェース部２９から受信パケットが入力されると、制御情報生成部２３は、この受信パケットの付加情報を解析する。そして、例えば、この付加情報に含まれる通信相手のＩＰアドレスと上述したＳＰＩ（ＳＡを指示する情報）との組を検索キーとして、テーブル記憶部２４に記憶される対応テーブルの中から適切な制御情報を検索して取得し、パケット処理部２１へ出力する。
パケット処理部２１は、制御情報生成部２３から入力した制御情報を受信パケット（ＩＰｓｅｃパケット）に挿入して、例えば図７に示すようなパケットを生成し、これをインターフェース部２７から暗号処理部３０へ出力する（ステップＳＴ２２）。
【００７９】
図７におけるデータＤ４はＩＰｓｅｃパケットを示し、データＤ３はこのＩＰｓｅｃパケットに付加された各種の制御情報（認証制御データ、認証比較制御データ、復号制御データ、復号鍵、復号初期値、認証鍵）を示している。
【００８０】
暗号処理部３０は、ハードウェア・スタック２０から入力したパケットより、制御情報およびＩＰｓｅｃパケットをそれぞれ抽出する。そして、抽出した制御情報に基づいた所定の復号化処理をＩＰｓｅｃパケットに施して、ＴＣＰ（ＵＤＰ）／ＩＰのパケットを生成し、これをハードウェア・スタック２０に戻す（ステップＳＴ２３）。
【００８１】
また、暗号処理部３０は、制御情報に基づいて認証処理を行った場合、パケットが認証に合格することを条件として、認証・復号処理後のパケットをハードウェア・スタック２０に戻す。認証処理に不合格のパケットはそのまま破棄して、ハードウェア・スタック２０には戻さない。
【００８２】
インターフェース部２７からＴＣＰ（ＵＤＰ）／ＩＰのパケットが入力されると、パケット処理部２１は、このＴＣＰ（ＵＤＰ）／ＩＰパケットからＴＣＰ（ＵＤＰ）／ＩＰの付加情報を取り除く等の処理を行なう。
また、制御情報生成部２３は、取り除かれるＴＣＰ（ＵＤＰ）／ＩＰの付加情報に代わって新たに付加すべき付加情報として、この付加情報に対応するフロー番号をテーブル記憶部２４から検索して取得する。例えば、ＴＣＰ（ＵＤＰ）／ＩＰの付加情報に含まれるポート番号を元に、これに対応したフロー番号を検索して取得する。そして、取得したフロー番号を、パケット処理部２１に出力する。
パケット処理部２１は、ＴＣＰ（ＵＤＰ）／ＩＰの付加情報を取り除いた後のパケット（ＳＲＴＰパケット）に、制御情報生成部２３から入力した上記のフロー番号を挿入し、これをインターフェース部２８からハードウェア・スタック１０へ出力する（ステップＳＴ２４）。
【００８３】
インターフェース部１８からＳＲＴＰパケットが入力されると、制御情報生成部１３は、これに付随して入力されるフロー番号に対応する制御情報をテーブル記憶部１４から検索して取得し、パケット処理部２１へ出力する。
パケット処理部１１は、上記のＳＲＴＰパケットに、制御情報生成部１３から入力した上記の制御情報を挿入し、これをインターフェース部１７から暗号処理部３０へ出力する（ステップＳＴ２５）。
【００８４】
暗号処理部３０は、ハードウェア・スタック１０から入力したパケットより、制御情報およびＳＲＴＰパケットをそれぞれ抽出する。そして、抽出した制御情報に基づいた所定の復号化処理をＳＲＴＰパケットに施して、ＲＴＰパケットを生成し、これをハードウェア・スタック１０に戻す（ステップＳＴ２６）。
【００８５】
また、暗号処理部３０は、制御情報に基づいて認証処理を行った場合、パケットが認証に合格することを条件として、認証・復号化処理後のパケットをハードウェア・スタック１０に戻す。認証処理に不合格のパケットはそのまま破棄して、ハードウェア・スタック１０には戻さない。
【００８６】
インターフェース部１７から復号化処理後のＲＴＰパケットが入力されると、パケット処理部１１はこのＲＴＰパケットからＲＴＰの付加情報を取り除く等の処理を行い、処理後の受信パケットをパケット記憶部１２に書き込むとともに、受信パケットの出力が可能になったことを示す割り込み信号をホストＣＰＵ６０に出力する。
ホストＣＰＵ６０は、ハードウェア・スタック１０から割り込み信号を受けると、ハードウェア・スタック１０にアクセスしてこの受信パケットを読み出し、メモリ７０に書き込む。
【００８７】
次に、通信制御部４０における通信制御の一例について説明する。
【００８８】
図８は、ハードウェア・スタック１０または２０から暗号処理部３０へパケットを出力する際に用いられる信号の一例を示す図である。
【００８９】
図８の例において、ハードウェア・スタック１０は、通信制御部４０に対し信号ＦＯ１、ＲＹＯ１、ＤＯ１、およびＥＯ１を出力し、通信制御部４０から信号ＲＩ１を入力する。
また、ハードウェア・スタック２０は、通信制御部４０に対し信号ＦＯ２、ＲＹＯ２、ＤＯ２、およびＥＯ２を出力し、暗号処理部３０から信号ＲＩ２を入力する。
通信制御部４０は、暗号処理部３０に対して信号ＦＯ、ＲＹＯ、ＤＯ、およびＥＯを出力し、通信制御部４０から信号ＲＩを入力する。
【００９０】
信号ＦＯ１、ＦＯ２は、それぞれハードウェア・スタック１０、２０のパケットの出力期間においてハイレベルになる信号である。
信号ＲＹＯ１、ＲＹＯ２は、それぞれハードウェア・スタック１０、２０から有効なパケットが出力されている期間においてハイレベルになる信号である。
信号ＤＯ１、ＤＯ２は、それぞれハードウェア・スタック１０、２０から暗号処理部３０へ出力されるパケットである。
信号ＥＯ１、ＥＯ２は、それぞれハードウェア・スタック１０、２０からパケット中の最後のデータが出力される期間においてハイレベルになる信号である。
信号ＲＩは、暗号処理部３０においてパケットの受信が可能な場合にハイレベルになる信号である。ハードウェア・スタック１０および２０は、この信号がローレベルの場合、パケットの出力を停止する。
【００９１】
通信制御部４０は、信号ＦＯ２がローレベルの期間において信号ＦＯ１がハイレベルになると、ハードウェア・スタック１０から出力される信号ＦＯ１、ＲＹＯ１、ＤＯ１、およびＥＯ１を選択し、それぞれ信号ＦＯ、ＲＹＯ、ＤＯ、およびＥＯとして暗号処理部３０に出力する。また、暗号処理部３０の出力信号ＲＩを信号ＲＩ１としてハードウェア・スタック１０に入力し、一方の信号ＲＩ２をローレベルに保持する。信号ＦＯ１がハイレベルの間、通信制御部４０は、信号ＦＯ２のレベルに係わらず、ハードウェア・スタック１０の出力信号を常に選択する。
【００９２】
同様に、通信制御部４０は、信号ＦＯ１がローレベルの期間において信号ＦＯ２がハイレベルになると、ハードウェア・スタック２０から出力される信号ＦＯ２、ＲＹＯ２、ＤＯ２、およびＥＯ２を選択し、それぞれ信号ＦＯ、ＲＹＯ、ＤＯ、およびＥＯとして暗号処理部３０に出力する。また、暗号処理部３０の出力信号ＲＩを信号ＲＩ２としてハードウェア・スタック２０に入力し、一方の信号ＲＩ１をローレベルに保持する。信号ＦＯ２がハイレベルの間、通信制御部４０は、信号ＦＯ１のレベルに係わらず、ハードウェア・スタック２０の出力信号を常に選択する。
【００９３】
図９は、ハードウェア・スタック１０または２０が暗号処理部３０よりパケットを入力する際に用いられる信号の一例を示す図である。
【００９４】
図９の例において、ハードウェア・スタック１０は、通信制御部４０から信号ＦＩ１、ＲＹＩ１、ＤＩ１、およびＥＩ１を入力し、通信制御部４０へ信号ＲＯ１を出力する。
また、ハードウェア・スタック２０は、通信制御部４０から信号ＦＩ２、ＲＹＩ２、ＤＩ２、およびＥＩ２を入力し、通信制御部４０へ信号ＲＯ２を出力する。
通信制御部４０は、暗号処理部３０から信号ＦＩ、ＲＹＩ、ＤＩ、ＥＩおよびＳＥＬを入力し、暗号処理部３０へ信号ＲＯを出力する。
【００９５】
信号ＦＩは、暗号処理部３０のパケットの出力期間においてハイレベルになる信号である。
信号ＲＹＩは、暗号処理部３０から有効なパケットが出力されている期間においてハイレベルになる信号である。
信号ＤＩは、暗号処理部３０から出力されるパケットである。
信号ＥＩは、暗号処理部３０からパケットの最後のデータが出力される期間においてハイレベルになる信号である。
信号ＲＯ１、ＲＯ２は、それぞれハードウェア・スタック１０、２０においてパケットの受信が可能な場合にハイレベルになる信号である。
信号ＲＯは、信号ＲＯ１またはＲＯ２の何れか一方が通信制御部４０において選択されて、暗号処理部３０に出力される信号である。暗号処理部３０は、この信号ＲＯがローレベルのとき、パケットの出力を停止する。
信号ＳＥＬは、暗号処理部３０から出力されるパケットがハードウェア・スタック１０宛のパケットである場合にローレベルとなり、ハードウェア・スタック２０宛のパケットである場合にハイレベルとなる。
【００９６】
通信制御部４０は、信号ＳＥＬがローレベルの場合、暗号処理部３０から出力される信号ＦＩ、ＲＹＩ、ＤＩ、およびＥＩを、それぞれ信号ＦＩ１、ＲＹＩ１、ＤＩ１、およびＥＩ１としてハードウェア・スタック１０に入力し、ハードウェア・スタック２０への入力信号（ＦＩ２、ＲＹＩ２、ＤＩ２、ＥＩ２）を全てローレベルにする。また、ハードウェア・スタック１０の出力信号ＲＯ１を信号ＲＯとして暗号処理部３０に入力する。
逆に、信号ＳＥＬがハイレベルの場合、暗号処理部３０から出力される信号ＦＩ、ＲＹＩ、ＤＩ、およびＥＩを、それぞれ信号ＦＩ２、ＲＹＩ２、ＤＩ２、およびＥＩ２としてハードウェア・スタック２０に入力し、ハードウェア・スタック１０への入力信号（ＦＩ１、ＲＹＩ１、ＤＩ１、ＥＩ１）を全てローレベルにする。また、ハードウェア・スタック２０の出力信号ＲＯ２を信号ＲＯとして暗号処理部３０に入力する。
【００９７】
図１０は、ハードウェア・スタック１０またはハードウェア・スタック２０から暗号処理部３０へパケットが出力される場合における、上述した各信号のタイミング関係の一例を示すタイミングチャートである。
【００９８】
図１０の例では、時刻Ｔ１において信号ＦＯ１（図１０（Ｂ））がハイレベルに変化した後、時刻Ｔ２において信号ＦＯ２（図１０（Ｇ））がハイレベルになり、時刻Ｔ２〜Ｔ９の期間において信号ＦＯ１およびＦＯ２が共にハイレベルになっている。この場合、図１０に示すように、先にハイレベルとなったハードウェア・スタック１０の出力信号が通信制御部４０において選択され、暗号処理部３０に出力される。すなわち、この期間において、信号ＦＯ（図１０（Ｌ））、ＲＹＯ（図１０（Ｍ））、ＤＯ（図１０（Ｎ））、ＥＯ（図１０（Ｏ））、ＲＩ（図１０（Ｐ））は、それぞれ、信号ＦＯ１（図１０（Ｂ））、ＲＹＯ１（図１０（Ｃ））、ＤＯ１（図１０（Ｄ））、ＥＯ１（図１０（Ｅ））、ＲＩ１（図１０（Ｆ））と等しくなっている。
この期間において、ハードウェア・スタック２０にはローレベルの信号ＲＩ２（図１０（Ｋ））が入力されるため、ハードウェア・スタック２０は暗号処理部３０においてパケットの受信を拒否された場合と同様に、暗号処理部３０へのパケットの出力を停止する。
【００９９】
一方、時刻Ｔ１０において信号ＦＯ１がローレベルに変化すると、ハードウェア・スタック１０の出力信号に代わり、ハードウェア・スタック２０の出力信号が通信制御部４０において選択され、暗号処理部３０に出力される。このため、信号ＦＯ２がハイレベルに保持される時刻Ｔ１０からＴ１８の期間において、信号ＦＯ、ＲＹＯ、ＤＯ、ＥＯ、ＲＩは、それぞれ、信号ＦＯ２（図１０（Ｇ））、ＲＹＯ２（図１０（Ｈ））、ＤＯ２（図１０（Ｉ））、ＥＯ２（図１０（Ｊ））、ＲＩ２（図１０（Ｋ））と等しくなっている。
この期間において、ハードウェア・スタック１０にはローレベルの信号ＲＩ１（図１０（Ｆ））が入力されるため、ハードウェア・スタック１０は暗号処理部３０においてパケットの受信を拒否された場合と同様に、暗号処理部３０へのパケットの出力を停止する。
【０１００】
図１１は、暗号処理部３０からハードウェア・スタック１０およびハードウェア・スタック２０へパケットが出力される場合における、上述した各信号のタイミング関係の一例を示すタイミングチャートである。
【０１０１】
図１１の例では、時刻Ｔ２０〜Ｔ２７において暗号処理部３０の信号ＳＥＬ（図１１（Ｂ））はローレベルであり、時刻Ｔ２８〜Ｔ３７においてハイレベルになる。
したがって、時刻Ｔ２０〜Ｔ２７の期間において、暗号処理部３０の信号ＦＩ（図１１（Ｃ））、ＲＹＩ（図１１（Ｄ））、ＤＩ（図１１（Ｅ））、ＥＩ（図１１（Ｆ））、ＲＯ（図１１（Ｇ））は、それぞれ、ハードウェア・スタック１０の信号ＦＩ１（図１１（Ｈ））、ＲＹＩ１（図１１（Ｉ））、ＤＩ１（図１１（Ｊ））、ＥＩ１（図１１（Ｋ））、ＲＯ１（図１１（Ｌ））と等しくなる。また、ハードウェア・スタック２０の入力信号ＦＩ２（図１１（Ｍ））、ＲＹＩ２（図１１（Ｎ））、ＤＩ２（図１１（Ｏ））、ＥＩ２（図１１（Ｐ））は何れもローレベルになる。
一方、時刻Ｔ２８〜Ｔ３７の期間において、暗号処理部３０の信号ＦＩ、ＲＹＩ、ＤＩ、ＥＩ、ＲＯは、それぞれ、ハードウェア・スタック２０の信号ＦＩ２、ＲＹＩ２、ＤＩ２、ＥＩ２、ＲＯ２と等しくなる。また、ハードウェア・スタック１０の入力信号ＦＩ１、ＲＹＩ１、ＤＩ１、およびＥＩ１は何れもローレベルになる。
【０１０２】
以上説明したように、図１に示す通信装置によれば、パケットの送信が行なわれる場合、ホストＣＰＵ６０の主な処理としては、ハードウェア・スタック１０、ハードウェア・スタック２０、暗号処理部３０に初期設定を行なう程度であり、あとは、ハードウェア・スタック１０に送信パケットを供給するのみで、暗号処理を伴う適切なプロトコル処理が自動的に実行される。同様に、パケットの受信が行なわれる場合も、ホストＣＰＵ６０が初期設定さえ行なえば、あとは暗号処理を伴う適切なプロトコル処理が自動的に実行される。
すなわち、図１２に示す従来の通信装置のように、暗号処理に必要な制御情報をホストＣＰＵにおいて生成する必要がある場合に比べて、ホストＣＰＵの処理負担を大幅に軽減することができる。
【０１０３】
また、図１２に示す従来の通信装置では、ハードウェア・スタックにおいて制御情報を生成する仕組みが無いため、特に初期値の情報など、パケットごとに異なる値に更新する必要がある制御情報は、ハードウェア・スタック内で管理することが困難である。これに対し、図１に示す通信装置によれば、暗号処理に必要な制御情報（例えばＩＰｓｅｃのＳＡや、ＳＲＴＰの‘Ｃｒｙｐｔｏ  Ｇｒａｐｈｉｃ  Ｃｏｎｔｅｘｔ’）をハードウェア・スタックの内部で統一的に管理することができる。このため、システムの構成や処理をより簡易化することができる。
【０１０４】
さらに、暗号処理部においてパケットの暗号処理を行なうハードウェア・スタックが複数存在する場合でも、パケットの衝突を起こすことなく、これらのハードウェア・スタックからパケットおよび制御情報を適切なタイミングで暗号処理部に設定することができる。
【０１０５】
なお、本発明は上述した実施形態に限定されない。
たとえば、上述した実施形態において用いられているプロトコルは一例であり、本発明はこれに限定されない。
【０１０６】
また、ハードウェア・スタックの数は２つに限定されるものではなく、１つでも、あるいは３つ以上でも良い。
【０１０７】
【発明の効果】
本発明の通信装置によれば、通信の暗号処理に必要な制御情報の生成に係るホストＣＰＵの処理負担を軽減することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係る通信装置の構成の一例を示すブロック図である。
【図２】第１のハードウェア・スタックの構成の一例を示すブロック図である。
【図３】第２のハードウェア・スタックの構成の一例を示すブロック図である。
【図４】図１に示す通信装置におけるパケット送信時の動作を説明するための図である。
【図５】暗号化処理のための制御情報が付加されたパケットの一例を図解した図である。
【図６】図１に示す通信装置におけるパケット受信時の動作を説明するための図である。
【図７】復号化処理および認証処理のための制御情報が付加されたパケットの一例を図解した図である。
【図８】ハードウェア・スタックが暗号処理部へパケットを出力する際に用いられる信号の一例を示す図である。
【図９】ハードウェア・スタックが暗号処理部よりパケットを入力する際に用いられる信号の一例を示す図である。
【図１０】ハードウェア・スタックから暗号処理部へパケットが出力される場合における、各信号のタイミング関係の一例を示すタイミングチャートである。
【図１１】暗号処理部からハードウェア・スタックへパケットが出力される場合における、各信号のタイミング関係の一例を示すタイミングチャートである。
【図１２】所定のプロトコルに基づいて暗号化通信を行なう一般的な通信装置の構成例を示すブロック図である。
【符号の説明】
１０，２０…ハードウェア・スタック、３０…暗号処理部、４０…通信制御部、５０…ネットワーク・インターフェース、６０…ホストＣＰＵ、７０…メモリ、１１，２１…パケット処理部、１２，２２…パケット記憶部、１３，２３…制御情報生成部、１４，２４…テーブル記憶部、１５，２５…テーブル更新部、１６〜１８，２６〜２９…インターフェース部
【図１】
2005020510.tif 000003
【図２】
2005020510.tif 000004
【図３】
2005020510.tif 000005
【図４】
2005020510.tif 000006
【図５】
2005020510.tif 000007
【図６】
2005020510.tif 000008
【図７】
2005020510.tif 000009
【図８】
2005020510.tif 000010
【図９】
2005020510.tif 000011
【図１０】
2005020510.tif 000012
【図１１】
2005020510.tif 000013
【図１２】
2005020510.tif 000014