(57)【特許請求の範囲】
【請求項１】
記憶手段に格納されているアプリケーションプログラムを実行して送信データを作成するアプリケーション実行手段により、作成された送信データを暗号化して他の装置に送信する暗号化通信方法であって、
前記送信データの暗号化通信にあたり、暗号化処理の適用の規則を定めたセキュリテイポリシに基づいて前記送信データの暗号化の要否を判別する工程と、
前記送信データの暗号化の要否を判別する工程において、暗号化が必要とした場合に、暗号化通信を確立するための暗号化情報が格納されているデータベースから適用する暗号化処理の暗号化情報を検索する工程と、
前記暗号化情報が格納されているデータベースから適用する暗号化処理の暗号化情報を検索する工程において、暗号化情報を検索した結果、該当する暗号化情報が存在しない場合に、暗号化情報の不存在を示す情報を作成し、この情報を前記アプリケーション実行手段に送信する工程と、
前記送信データの送信先である他の装置との間で暗号化通信の折衝を行い、前記該当する暗号化情報を作成する工程と、
前記暗号化情報の不存在を示す情報に基づき送信データの再送信を、前記暗号化通信の折衝に要する時間だけ待機する工程とから構成される暗号化通信方法。
【請求項２】
前記暗号化情報の不存在を示す情報は、フラグ情報であることを特徴とする請求項１に記載の暗号化通信方法。
【請求項３】
送信データを暗号化して他の装置に送信する通信装置において、
アプリケーションプログラムの動作に基づいて前記送信データを生成するアプリケーション実行手段と、
前記送信データを暗号化して他の装置に送信する通信制御手段と、
暗号化通信を確立するための暗号化情報が格納された記憶手段と、
他の装置との暗号化通信の折衝を行う暗号化情報設定手段と、
を有し、
前記通信制御手段は、前記送信データに対応する暗号化情報の有無の検出と、この検出結果を前記アプリケーション実行手段への送信と、前記暗号化情報設定手段への暗号化通信の折衝の要求を行うと共に、前記アプリケーション実行手段および前記通信制御手段の少なくともいずれか一方は、前記検出結果に基づいてデータの再送を、前記暗号化情報設定手段の折衝に要する時間だけ待機することを特徴とする通信装置。
【請求項４】
前記検出結果は、フラグ情報として前記記憶手段に格納されることを特徴とする請求項３に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータをはじめとする所定の装置間の暗号化通信に関し、特に暗号化通信の通信状態を動作中のアプリケーションに通知する暗号化通信方法および通信装置に関するものである。
【背景技術】
【０００２】
インターネット、社内ネットワーク等が普及する中、このようなネットワークはオープン化されたものであるため、その中を流れる情報の保護が重要となっている。この情報の保護として、特定の装置間でのみ情報の授受を可能とする暗号化通信が用いられる（例えば特許文献１参照。）。
【０００３】
【特許文献１】特開平９−２７０７８６号公報
【０００４】
図６は従来の暗号化通信方法および通信装置の一例を示す構成図である。図６は、装置内の暗号化通信に係る部分を図示したものである。
【０００５】
図６において、アプリケーション実行手段１はアプリケーションプログラム（以下、アプリケーションという。）とＣＰＵ（演算装置）やメモリなどからなる処理回路により形成される。アプリケーション実行手段１は、アプリケーションを実行し、アプリケーションの動作に基づき、データの作成や送受信を始めとする所定の機能を実現する。なお、アプリケーションは、記憶手段５３に格納されている。
【０００６】
通信制御手段５２は、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）に準じた通信制御を司る通信モジュールであって、実装されたソフトウェアの動作に基づき、アプリケーション実行手段１から受け取った送信データをＴＣＰ／ＩＰに則って、送信データの分割、プロトコルのヘッダ情報の付加などを行なった送信パケットを生成し、ネットワーク５を介して他の装置に送信すると共に、他の装置から受信したパケットを受信データとしてアプリケーション実行手段１に送る。通信制御データ６は、アプリケーションの一連の通信毎に作成され、例えば接続状態情報、自己の使用ポート、接続相手の使用ポートなどの通信の際に必要になる様々なデータであって、記憶手段５３に格納される。
【０００７】
セキュリティポリシデータベース８は、暗号化通信をするにあたって、どのようなパケットに対して、ｄｉｓｃａｒｄ（パケットの廃棄）、Ｂｙｐａｓｓ（いかなる暗号、複合化処理も行わない）、Ａｐｐｌｙ（暗号化・複合化処理を適用する）などのアクションを行うかを定めたルールであるセキュリティポリシが格納されるデータベースである。このデータベースも記憶手段５３に格納される。
【０００８】
暗号化情報データベース９は、暗号化通信において、安全な通信路を確立するために必要な暗号アルゴリズムや暗号鍵の情報である暗号化情報が格納されるデータベースである。この暗号化情報は、暗号化通信を始める前に、通信相手と共有されなければ成らない。この共有は手動または自動で設定される。このデータベースも記憶手段５３に格納される。
【０００９】
暗号化情報設定手段１０は、通信相手と暗号化情報を自動で共有するためのモジュールであって、実装されたソフトウェアの動作に基づき、通信制御手段５２から暗号化情報の作成依頼を受けたときに、ネットワーク５を介して通信相手との折衝を行う。
【００１０】
このような構成による動作は以下の通りである。信号の流れ（処理手順）に従って説明する。
【００１１】
（Ｓ１）アプリケーション実行手段１は、送信データを作成し、通信制御手段５２に渡す。
【００１２】
（Ｓ２）通信制御手段５２は、セキュリティポリシデータベース８を検索し、送信データに暗号化通信を適用すべきかどうかを調べる。
【００１３】
（Ｓ３）暗号化通信が必要な場合、通信制御手段５２は暗号化情報データベース９を検索し、該当する暗号化情報が存在するか調べる。送信対象のパケットに対応する暗号化情報が存在しない場合には、暗号化情報設定手段１０に、該当する暗号化情報の作成を依頼する。並行して、予め設定された間隔で予め設定された回数の送信パケットの再送信を行い、送信回数が設定回数に達した時点でそのパケットを破棄する。或いは、再送信を行わず送信パケットをそのまま破棄する。
【００１４】
（Ｓ４）通信制御手段５２はパケットの送信に失敗したことをアプリケーション実行手段１に伝える。
【００１５】
（Ｓ５）通信制御手段５２から暗号化情報の作成依頼を受けた暗号化情報設定手段１０は、通信相手との折衝を行う。
【００１６】
（Ｓ６）暗号化情報設定手段１０が折衝に成功すると、作成した暗号化情報を暗号化情報データベース９に格納する。
【００１７】
このような暗号化通信は、暗号化技術をＴＣＰ／ＩＰに則って生成されるパケットに適用して安全な通信路を確立した通信であって、ＴＣＰ／ＩＰ通信モジュールで実現するため、アプリケーションは暗号化通信が行われていることを意識する必要はない。
【発明の開示】
【発明が解決しようとする課題】
【００１８】
このような従来の暗号化通信方法および通信装置では、暗号化通信をするアプリケーションが通信相手との通信に失敗する原因として、暗号化情報がない場合や暗号化情報設定手段による暗号化情報作成の失敗、通信経路の異常などが考えられるが、暗号化情報が無かったことをアプリケーションが知ることができない。
【００１９】
一般的に暗号化情報の折衝にかかる時間は通常の通信に比べ非常に大きいため、アプリケーションに暗号化通信の失敗や状態を通知する機構が無い場合、特に通信相手の応答を期待するアプリケーションは、次のステップに移行できないし、ＴＣＰ／ＩＰ通信モジュールは、無駄にデータの再送を繰り返してタイムアウトを待つことになり、送信元のＣＰＵの負荷が大きくなり、他の処理に影響が生じるという問題があった。
【００２０】
本発明は、このような暗号化通信方法および通信装置が有していた問題を解決しようとするものであり、暗号化情報の有無を検出し、暗号化情報がない場合には、データ再送の間隔を暗号化情報の折衝にかかる時間だけあけることにより、ＣＰＵの負荷を低減させる暗号化通信方法および通信装置を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明は次の通りの構成になった暗号化通信方法および通信装置である。
【００２２】
（１）記憶手段に格納されているアプリケーションプログラムを実行して送信データを作成するアプリケーション実行手段により、作成された送信データを暗号化して他の装置に送信する暗号化通信方法であって、
前記送信データの暗号化通信にあたり、暗号化処理の適用の規則を定めたセキュリテイポリシに基づいて前記送信データの暗号化の要否を判別する工程と、
前記送信データの暗号化の要否を判別する工程において、暗号化が必要とした場合に、暗号化通信を確立するための暗号化情報が格納されているデータベースから適用する暗号化処理の暗号化情報を検索する工程と、
前記暗号化情報が格納されているデータベースから適用する暗号化処理の暗号化情報を検索する工程において、暗号化情報を検索した結果、該当する暗号化情報が存在しない場合に、暗号化情報の不存在を示す情報を作成し、この情報を前記アプリケーション実行手段に送信する工程と、
前記送信データの送信先である他の装置との間で暗号化通信の折衝を行い、前記該当する暗号化情報を作成する工程と、
前記暗号化情報の不存在を示す情報に基づき送信データの再送信を、前記暗号化通信の折衝に要する時間だけ待機する工程とから構成される暗号化通信方法。
【００２３】
（２）前記暗号化情報の不存在を示す情報は、フラグ情報であることを特徴とする（１）に記載の暗号化通信方法。
【００２５】
（３）送信データを暗号化して他の装置に送信する通信装置において、
アプリケーションプログラムの動作に基づいて前記送信データを生成するアプリケーション実行手段と、
前記送信データを暗号化して他の装置に送信する通信制御手段と、
暗号化通信を確立するための暗号化情報が格納された記憶手段と、
他の装置との暗号化通信の折衝を行う暗号化情報設定手段と、
を有し、
前記通信制御手段は、前記送信データに対応する暗号化情報の有無の検出と、この検出結果を前記アプリケーション実行手段への送信と、前記暗号化情報設定手段への暗号化通信の折衝の要求を行うと共に、前記アプリケーション実行手段および前記通信制御手段の少なくともいずれか一方は、前記検出結果に基づいてデータの再送を、前記暗号化情報設定手段の折衝に要する時間だけ待機することを特徴とする通信装置。
【００２６】
（４）前記検出結果は、フラグ情報として前記記憶手段に格納されることを特徴とする（３）に記載の通信装置。
【００２７】
（６）前記送信データの再送信の待機時間は、前記暗号化通信手段の折衝に要する時間であることを特徴とする（４）または（５）に記載の通信装置。
【発明の効果】
【００２８】
本発明によれば、以下のような効果がある。
【００２９】
請求項１から請求項４に記載の発明によれば、暗号化情報の有無を検出し、暗号化情報がない場合には、データ再送の間隔を暗号化情報の折衝にかかる時間だけあけることにより、ＣＰＵの負荷を低減させる暗号化通信方法および通信装置を実現できる。
【発明を実施するための最良の形態】
【００３０】
以下図面を用いて本発明を詳細に説明する。図１は本発明に係る暗号化通信方法および通信装置の一例を示す構成図である。図１は、装置内の暗号化通信に係る部分を図示したものである。なお、図１で前出の図と同様の構成要素には同様の符号を付し、その部分の説明は省略する。
【００３１】
図１において、アプリケーション実行手段１はアプリケーションとＣＰＵ（演算装置）やメモリなどからなる処理回路により形成される。アプリケーション実行手段１は、アプリケーションを実行し、アプリケーションの動作に基づき、送信データの作成や送受信を始めとする所定の機能や制御を実現する。なお、アプリケーションは、記憶手段１１に格納されている。
【００３２】
通信制御手段２は、ＴＣＰ／ＩＰに準じた通信制御を司る通信モジュールであって、アプリケーション実行手段１から受け取った送信データをＴＣＰ／ＩＰに則って、送信データの分割、プロトコルのヘッダ情報の付加などを行なった送信パケットを生成し、ネットワーク５を介して他の装置に送信すると共に、他の装置から受信したパケットを受信データとしてアプリケーション実行手段１に送る。
【００３３】
通信制御データ６は、前述と同様、アプリケーションの一連の通信毎に作成され、通信の際に必要になる様々なデータであって、メモリやハードディスクなどの記憶手段１１に格納される。
【００３４】
通信制御データ６は、暗号化情報の有無を示す暗号化情報フラグ７を設定するエリアを有し、通信制御手段２は、アプリケーション実行手段１がデータ送信する際に、該当する暗号化情報が無い場合には、通信制御データ６の暗号化情報フラグ７をセット（例えばデータを０から１）し、パケットの送信に失敗したことを通信制御データ６の暗号化情報フラグ７の状況と共にアプリケーション実行手段１に伝える。アプリケーション実行手段１は、通信制御手段２から伝えられた情報に基づき、例えば通信制御手段２へのデータ送信を予め設定された時間待機したり、他の処理などを行う。
【００３５】
通信制御手段２は、再びアプリケーション実行手段１がデータ送信する際に、該当する通信制御データ６の暗号化情報フラグ７をチェックし、前回のデータ送信で、該当する暗号化情報が存在しなかったかをチェックする。暗号化情報フラグ７がセットされていた場合には、通信制御手段２は、前回のデータ送信で暗号化情報が存在しなかったことをアプリケーション実行手段１に送信すると共にパケットの再送を行わないように待機する。
【００３６】
詳細には、一般的に装置間で暗号化情報の交換にはデータ送信よりも大きな時間がかかるため、暗号化情報フラグのセットを検出してデータを再送信する際の間隔を調整することにより、送信元のＣＰＵの負荷を低減することができる。データを再送信する待機時間は、暗号化情報設定手段の行う暗号化通信の折衝に要する時間であり、この時間を経験的に求め、予め待機時間として設定しておく。
【００３７】
また、データ送信で暗号化情報が存在しなかったことをアプリケーション実行手段１に送信することにより、アプリケーションの動作は暗号化通信の成否の結果に拘束されることなく他の処理を行うことができる。
【００３８】
図１を用いて、本発明の動作（処理工程）を以下に説明する。
【００３９】
（Ｓ１０１）アプリケーション実行手段１は送信データを作成し、通信制御手段２に渡す。
【００４０】
（Ｓ１０２）通信制御手段２は、セキュリティポリシデータベース８を検索し、送信パケットに暗号化通信を適用すべきかどうかを調べる。
【００４１】
（Ｓ１０３）暗号化通信が必要な場合、通信制御手段２は暗号化情報データベース９を検索し、該当する暗号化情報が存在するか調べ、存在すれば送信パケットの暗号化を行いパケットの送信を行う。
【００４２】
（Ｓ１０４）該当する暗号化情報が存在しない場合には、既に暗号化情報フラグ７がセットされていなければ、通信制御手段２は、通信制御データ６の暗号化情報フラグ７をセットし、パケットの送信に失敗したことを通信制御データ６の暗号化情報フラグ７の状況と共にアプリケーション実行手段１に伝える。また、通信制御手段２は、暗号化情報フラグ７がセットされていれば、パケットの再送は行わないと判断する。
並行して、通信制御手段２は、暗号情報設定手段１０に、該当する暗号化情報の作成を依頼する。
アプリケーション実行手段１は、通信制御手段２から伝えられた情報に基づき、例えば通信制御手段２へのデータ送信を予め設定された時間待機したり、他の処理などを行う。
【００４３】
（Ｓ１０５）暗号化情報設定手段１０は、暗号アルゴリズムや暗号鍵の情報である暗号化情報の作成を行い、ネットワーク５を介して暗号鍵の交換による通信相手との折衝を行う。  
【００４４】
（Ｓ１０６）暗号化情報設定手段１０は、折衝に成功すると、作成した暗号化情報を暗号化情報データベース９に格納する。
【００４５】
（Ｓ１０７）通信制御手段２は、暗号化情報設定手段１０によって、該当する暗号化情報が作成され、暗号化通信が成功した場合には、暗号化情報フラグ７をリセットする。
このとき、通信制御手段２は、暗号化情報が作成されたことを、アプリケーション実行手段１に伝えるようにしても良い。アプリケーション側では、暗号化情報フラグ７の変化を把握できるので、データ送信などの処理を適切なタイミングで行える。
【００４６】
図２は、本発明に係る通信装置における暗号化通信方法の処理工程を示したフローチャートである。  
図２を用いて以下に各処理工程に従って説明する。
【００４７】
（ＳＴ１）アプリケーションデータにヘッダを付加し、パケットを作成する。
【００４８】
（ＳＴ２）セキュリティポリシデータベースを検索し 該当するポリシがあるか調べる。
【００４９】
（ＳＴ３）見つかったポリシに「暗号化が必要」と書いてあるか判断する。
【００５０】
（ＳＴ４）「暗号化が必要」なら、暗号化情報データベースを検索し、送信しようとするパケットに該当する暗号化情報を検索する。
【００５１】
（ＳＴ５）暗号化情報があるか判断し、暗号化情報がない場合はＳＴ６の処理を行い、暗号化情報がある場合はＳＴ１３の処理を行う。
【００５２】
（ＳＴ６）暗号化情報フラグがセットされていなければ、暗号化情報フラグをセットする。
【００５３】
（ＳＴ７）アプリケーションの処理のブロック（アプリケーションが所定の戻り値を待っている状態）が必要でなければＳＴ１１の処理を行う。
アプリケーションの処理のブロックが必要であれば、ブロックを開始し、ＳＴ８およびＳＴ１０の処理を行う。アプリケーションは再送が規定回数に達するか、通信が成功するまでブロックされる。
【００５４】
（ＳＴ８）通信相手と折衝を行い、暗号化情報を作成する。
【００５５】
（ＳＴ９）暗号化情報を暗号化情報データベースに格納する。
【００５６】
（ＳＴ１０）通信相手からの受信応答が無ければパケットを再送すると判断し、ＳＴ１に戻る。
【００５７】
（ＳＴ１１）再送しないと判断した場合やアプリケーションの処理のブロックが必要でない場合は、送信パケットを破棄する。
【００５８】
（ＳＴ１２）該当する暗号化情報が無いという理由で通信が失敗したことをアプリケーションに通知し処理を終える。
【００５９】
（ＳＴ１３）送信パケットの暗号化を行う。
【００６０】
（ＳＴ１４）暗号化情報フラグがセットされていれば 暗号化情報フラグをリセットする。
【００６１】
（ＳＴ１５）送信パケットの暗号化を行う。
【００６２】
（ＳＴ１６）送信の成否を判断し、失敗であればＳＴ１７の処理を行い、成功であれば処理を終える。
【００６３】
（ＳＴ１７）通信が失敗したことをアプリケーションに通知して処理を終える。
【００６４】
以上により、暗号化通信が必要なパケットを送信するアプリケーションが、該当する暗号化情報の有無を知ることができるようになるので、適切な処理を行うことができる。
【００６５】
特に、送信に失敗したときのデータ再送信をアプリケーションが行う場合、暗号化情報が無いことをアプリケーションが知ることができれば、暗号化情報の折衝にかかる時間だけ再送間隔をあけることができるようになり、送信元のＣＰＵの負荷を低減させることができる。
【００６６】
また、従来例のように通信制御手段が、データの再送を司る場合も暗号化情報が無いことを知ることができれば無駄な再送処理を省きＣＰＵの負荷を低減させることができる。
【００６７】
なお、本発明は、上記実施例に限定されることなく、その本質から逸脱しない範囲で更に多くの変更、変形をも含むものである。
【００６８】
図３は、本発明に係る暗号化通信方法および通信装置の第２の実施例の動作を示す説明図である。図３は、装置内の暗号化通信に係る部分を図示したものである。
【００６９】
なお、図３で前出の図と同様の構成要素には同様の符号を付し、その部分の説明は省略する。また、接続関係は実線で信号経路は破線で示している。さらに、説明の便宜上、通信制御データ、送信データおよび送信パケットを通信制御手段（ＴＣＰ／ＩＰ通信モジュール）内に図示している。
【００７０】
図３において、ＴＣＰソケット部２１のＡＰＩ（Application Program Interface）は、インタフェースとして機能するための関数の集合やそれらを利用するためのプログラム上の手続きを定めた規約の集合のことであって、具体的には、実装されたソフトウェアの動作により、処理回路（図示せず）を介して、ＴＣＰ／ＩＰで通信を行なう装置が持つネットワークアドレス、接続関数、パケット送信関数などに基づき、通信を行なうアプリケーション実行手段１がＴＣＰ／ＩＰを扱うためのインタフェースとして機能する。
【００７１】
これにより、アプリケーション実行手段１はアドレスとポートの組であるソケットを指定して回線を開くだけで、通信手順の詳細を気にすることなくデータの送受信を行なうことができる。
【００７２】
ＴＣＰ／ＩＰ通信モジュール２２内のＴＣＰモジュール２３は、実装されたソフトウェアの動作に基づき処理回路（図示せず）を介して、トランスポート層にあたる標準プロトコル（Transmission Control Protocol）に則って、後述するネットワーク層のＩＰモジュールと、セッション層以上のプロトコルの橋渡しを実行する。ここでトランスポート層、ネットワーク層、セッション層は周知であるため説明は省略する。
【００７３】
また、ＩＰモジュール２４は、実装されたソフトウェアの動作に基づき処理回路（図示せず）を介して、ネットワーク５に参加している機器のアドレッシングや、相互に接続された複数のネットワーク内での通信経路のルーティングをする。
【００７４】
ＩＰｓｅｃポリシデータベース２５は、インターネットで暗号通信を行なうための規格であるＩＰｓｅｃ（Security Architecture for Internet Protocol）によるセキュリティポリシを格納したデータベースである。ＩＰのパケットを暗号化して送受信するため、ＴＣＰや後述のＵＤＰなど上位のプロトコルを利用するアプリケーションソフトはＩＰｓｅｃが使われていることを意識する必要はない。
【００７５】
以下に図３を用いてＴＣＰソケット部２１のＡＰＩを使用して暗号化通信による接続を行う場合の動作（処理工程）を説明する。
【００７６】
（Ｓ２０１）アプリケーション実行手段１がＴＣＰソケット部２１のＡＰＩの接続関数を呼び出すと、ＴＣＰソケット部２１のＡＰＩはＴＣＰモジュール２３の接続関数を呼び出す。
【００７７】
（Ｓ２０２）ＴＣＰモジュール２３の接続関数は、ＴＣＰ接続用パケットを生成し、ＩＰモジュール２４のパケット送信関数を呼び出す。
【００７８】
（Ｓ２０３）ＩＰモジュール２４は、ＩＰｓｅｃポリシデータベース２５を参照し、該当するポリシにＩＰｓｅｃが必要であるかどうかを調べ、必要な場合には暗号化情報データベース９から該当する暗号化情報を検索する。
【００７９】
（Ｓ２０４）該当する暗号化情報が存在しない場合、ＩＰモジュール２４は、該当するＴＣＰの通信制御データ６に暗号化情報フラグ７をセットし、暗号化情報設定手段１０に対して暗号化情報設定を要求する。暗号化情報設定手段１０は、暗号化情報設定プロトコルにより、パケット送信相手先と折衝を行い、該当する暗号化情報を作成し、暗号化情報データベース９に格納する。
【００８０】
（Ｓ２０５）該当する暗号化情報が存在する場合、ＩＰモジュール２４はその暗号化情報を用いて送信パケット４の暗号化を行い通信相手に送信パケット４を送信し、該当するＴＣＰの通信制御データ６に立ててある暗号化情報フラグ７をリセットする。
【００８１】
（Ｓ２０６）通信相手からの受信応答が無い場合、Ｓ２０２〜Ｓ２０５の処理をＴＣＰモジュール２３のパケット再送処理によって行う。この間、アプリケーション実行手段１の処理はＴＣＰソケットＡＰＩ２１の接続関数を呼び出した時点で、ＴＣＰソケット部２１のＡＰＩにより、接続終了またはパケット４の再送が規定回数に達したことなどの通信エラーが起こるまでブロックされる場合がある。
【００８２】
（Ｓ２０７）ＴＣＰモジュール２３は、パケット再送処理中に通信相手との暗号化情報が暗号化情報設定手段１０によって作成されない場合、アプリケーション実行手段１にその事を関数の戻り値もしくはエラー番号として伝える。
【００８３】
また、以下にＴＣＰソケット部２１のＡＰＩを使用して暗号化通信によるデータの送信を行う場合の動作（処理工程）を説明する。
【００８４】
図４は、図３における暗号化通信によるデータ送信の動作（処理工程）を説明する説明図である。
なお、図４の構成要素は、図３の構成要素と同様である。
【００８５】
（Ｓ３０１）アプリケーション実行手段１は、ＴＣＰソケット部２１のＡＰＩのパケット送信関数を呼び出す。ＴＣＰソケット部２１のＡＰＩはＴＣＰモジュール２３のパケット送信関数を呼び出す。
【００８６】
（Ｓ３０２）パケット送信関数は、該当する通信制御データ６を調べ、暗号化情報フラグ７がセットされていれば、その事を関数の戻り値もしくはエラー番号としてアプリケーション実行手段１に伝える。
パケット送信関数はこの時点でのエラー情報をＴＣＰソケット部２１のＡＰＩの送信関数を通じてアプリケーション実行手段１に伝え、後の送信処理はＴＣＰモジュール２３内のみで行う。
【００８７】
（Ｓ３０３）ＴＣＰモジュール２３の接続関数は、送信パケット４を生成し、ＩＰモジュール２４のパケット送信関数を呼び出す。
【００８８】
（Ｓ３０４）ＩＰモジュール２４は、ＩＰｓｅｃポリシデータベース２５を参照し、該当するポリシにＩＰｓｅｃが必要であるかどうかを調べ、必要な場合には暗号化情報データベース９から該当する暗号化情報を検索する。
【００８９】
（Ｓ３０５）該当する暗号化情報が存在しない場合、ＩＰモジュール２４は、該当する通信制御データ６に該当する暗号化情報フラグ７をセットし、暗号化情報設定手段１０に対して暗号化情報設定を要求し、暗号化情報設定手段１０は、暗号化情報設定プロトコルにより、パケット送信相手先と折衝を行い、該当する暗号化情報を作成し、暗号化情報データベース９に格納する。
【００９０】
（Ｓ３０６）該当する暗号化情報が存在する場合、ＩＰモジュール２４はその暗号化情報を用いて送信パケット４の暗号化を行い通信相手に送信パケット４を送信し、該当する通信制御データ６に立ててある暗号化情報フラグ７をリセットする。
【００９１】
（Ｓ３０７）通信相手からの受信応答が無い場合、Ｓ３０３〜Ｓ３０５の処理をＴＣＰモジュール２３のパケット再送処理によって行う。
【００９２】
（Ｓ３０８）ＴＣＰモジュール２３のパケット再送処理中に通信相手との暗号化情報が暗号化情報設定手段によって作成されない場合、該当する通信制御データに立ててある暗号化情報フラグはそのままにしておく。
【００９３】
以上により、ＴＣＰソケットＡＰＩを用いて通信相手との暗号化が必要な接続を行うアプリケーションが、該当する暗号化情報の有無を知ることで、接続時の暗号化情報の無い状態において適切な処理を行うことができるようになる。
【００９４】
またＴＣＰソケットＡＰＩを用いて通信相手に暗号化が必要なパケットを送信するアプリケーションが、前回パケットを送信したときの暗号化情報の作成状況を知ることで、パケットの送信時に該当する暗号化情報が無い状態において適切な処理を行うことができるようになる。
【００９５】
さらに、ＴＣＰ／ＩＰ通信モジュールの中のＴＣＰモジュールの代わりにＵＤＰ（User Datagram Protocol），ＩＣＭＰ（Internet Control Message Protocol）モジュールを用いたＴＣＰ／ＩＰ通信モジュールによる暗号化通信について説明する。なお、ここでは、ＴＣＰ／ＩＰとは、インターネットに接続するための通信プロトコルの総称として用いている。
【００９６】
図５は、本発明に係る暗号化通信方法および通信装置の第３の実施例の動作を説明する説明図である。
図５において、ＴＣＰ／ＩＰ通信モジュール２８内のＵＤＰ，ＩＣＰＭモジュール２６は、実装されたソフトウェアの動作に基づき処理回路（図示せず）を介して、トランスポート層にあたる標準プロトコル（ＵＤＰ）に則って、後述するネットワーク層のＩＰモジュールと、セッション層以上のプロトコルの橋渡しを実行する。
【００９７】
また、ＩＰのエラーメッセージや制御メッセージをコンピュータやネットワーク機器間で、互いの状態を確認するための機能も有する。
【００９８】
ＵＤＰ，ＲＡＷソケット部２９は、実装されたソフトウェアの動作により、処理回路（図示せず）を介して、通信を行なう装置が持つネットワークアドレス、接続関数、パケット送信関数などに基づき、通信を行なうアプリケーションとのインタフェースとして機能する。
【００９９】
以下にＵＤＰ，ＲＡＷソケット部２９を使用して暗号化通信によるデータの送信を行う場合の動作（処理工程）を説明する。
【０１００】
（Ｓ４０１）アプリケーション実行手段１は、ＵＤＰ，ＲＡＷソケット部２９を使用して、下位モジュール（ＵＤＰ，ＩＣＭＰ，ＩＰモジュール）２６のパケット送信関数を呼び出す。
【０１０１】
（Ｓ４０２）下位モジュールの接続関数は、送信パケットを生成し、ＩＰモジュール２７のパケット送信関数を呼び出す。
【０１０２】
（Ｓ４０３）ＩＰモジュール２７は、ＩＰｓｅｃポリシデータベース２５を参照し、該当するポリシにＩＰｓｅｃが必要であるかどうかを調べ、必要な場合には暗号化情報データベース９から該当する暗号化情報を検索する。
【０１０３】
（Ｓ４０４）該当する暗号化情報が存在しない場合、ＩＰモジュール２７は、暗号化情報設定手段１０に対して暗号化情報設定を要求し、暗号化情報設定手段１０は暗号化情報設定プロトコルによりパケット送信相手先と折衝を行い、該当する暗号化情報を作成し、暗号化情報データベース９に格納する。ＩＰモジュール２７は上位モジュール（ＵＤＰ，ＩＣＭＰモジュール２６）に対して該当する暗号化情報が存在しなかったことを伝える。上位モジュール２６は、ＵＤＰ，ＲＡＷソケット部２９を介してアプリケーション実行手段１に該当する暗号化情報が存在しなかったことを伝える。
【０１０４】
（Ｓ４０５）該当する暗号化情報が存在する場合、ＩＰモジュール２７はその暗号化情報を用いて送信パケット４の暗号化を行い通信相手に送信パケット４を送信する。ＩＰモジュール２７は上位モジュール（ＵＤＰ，ＩＣＭＰモジュール２６）に対して送信が成功したことを通知する。
【０１０５】
以上により、ＵＤＰ，ＲＡＷソケットを用いて通信相手に暗号化が必要なパケットを送信するアプリケーションが、該当する暗号化情報の有無を知ることで、パケットの送信時に該当する暗号化情報が無い状態において適切な処理を行うことができるようになる。
【０１０６】
特に、ＵＤＰ，ＲＡＷソケットの通信では、パケット送信に失敗した場合、必要であれば、アプリケーションがパケットの再送を自ら行わねばならない。暗号化情報が存在しないことをアプリケーションが知ることができれば、暗号化情報設定にかかる時間だけ再送間隔をあけることができるようになり、送信元のＣＰＵ負荷を低減することができるようになる。
【図面の簡単な説明】
【０１０７】
【図１】本発明に係る暗号化通信方法および通信装置の一実施例を示す構成図である。
【図２】本発明に係る通信装置における暗号化通信方法の処理工程を示すフローチャートである。
【図３】本発明に係る暗号化通信方法および通信装置の第２の実施例を示す説明図である。
【図４】図３における暗号化通信によるデータ送信の動作（処理工程）を示す説明図である。
【図５】本発明に係る暗号化通信方法および通信装置の第３の実施例を示す説明図である。
【図６】従来の暗号化通信方法および通信装置の一例を示した構成図である。
【符号の説明】
【０１０８】
１  アプリケーション実行手段
２  通信制御手段
５  ネットワーク
６  通信制御データ
７  暗号化情報フラグ
８  セキュリティポリシデータベース
９  暗号化情報データベース
１０  暗号化情報設定手段
【図１】
0004788264.tif 000002
【図２】
0004788264.tif 000003
【図３】
0004788264.tif 000004
【図４】
0004788264.tif 000005
【図５】
0004788264.tif 000006
【図６】
0004788264.tif 000007