説明

暗号通信装置および暗号通信方法

【課題】暗復号化処理およびSA交換処理の両方のオーバヘッドを小さくし、且つ、NAT越え問題を解決する。
【解決手段】アプリケーション層に実装された暗復号化モジュール18は、アプリケーションのメッセージまたはストリームを単位として暗復号化処理を行う。また、アプリケーション層に実装されたSA管理モジュール17は、シグナリングモジュール15を用いて、通信相手とSA、SPを交換する。そして、アプリケーションのトランザクションが終了し、その結果ソケットが削除された場合でも、所定時間(有効期限)内にトランザクションが発生している限り、つまりコネクションが継続している限り、SA、SPを保持する。そして、新たにトランザクションが発生し、その結果新たにソケットが生成された場合には、この保持していたSA、SPを適用する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号通信技術に関する。
【背景技術】
【0002】
暗号通信技術として、RFC2401で規定されているIPsec(Security Architecture for the Internet Protocol)、および、RFC2246で規定されているTLS(Transport Layer Security)が知られている(非特許文献1、2)。
【0003】
IPsecは、TCP/IPのインターネット層において、データグラム毎に、当該データグラムに適用するSA(Security Association)/SP(Security Policy)を検索し、検索したSA/SPを用いて暗復号化処理を行う。IPsecにおけるSA/SPの交換は、IKE(Internet Key Exchange)を用いて、通信相手との初回通信時およびSA/SPの有効期限経過時に実施される。
【0004】
TLSは、TCP(Transmission Control Protocol)/IP(Internet Protocol)のアプリケーション層において、メッセージまたはストリーム毎に、当該メッセージまたはストリームに適用するSAを検索し、検索したSAを用いて暗復号化処理を行う。TLSにおけるSAの交換は、ハンドシェイクプロトコルを用いて、アプリケーション層のトランザクション(ソケット)毎に実施される。なお、通常、TLSは、アプリケーションに組み込まれているためSPを用いない。通信相手のIPアドレスおよびTCPポートまたはUDP(User Datagram Protocol)ポートは、アプリケーションで決定される。
【0005】
【非特許文献1】RFC2401 "Security Architecture for the Internet Protocol"
【非特許文献2】RFC2246 "The TLS Protocol Version 1.0"
【発明の開示】
【発明が解決しようとする課題】
【0006】
IPsecは、TCP/IPのインターネット層において、データグラム単位でSA/SP検索が実施されるため、暗復号化処理のオーバヘッドが大きい。また、TCP/IPのインターネット層で暗復号化処理を行うため、いわゆるNAT(Network Address Translation)越え問題に対応することが困難である。なお、トンネルモードでは、ローカルアドレス宛のIPパケットをグローバルアドレス宛の別のIPパケットに格納して運ぶ。このため、IPパケットのペイロードが暗号化されるIPsecでは、該ペイロードに格納されているIPパケットのIPヘッダも暗号化されるため、これを正しく届けることができない。また、トランスポートモードでは、IPアドレスを含んだチェックサムがTCPヘッダに格納される。このため、IPパケットのペイロードが暗号化されるトランスポートモードでも、該ペイロードに格納されているチェックサムが正しく計算できないため、これを正しく届けることができない。
【0007】
一方、TLSは、TCP/IPのアプリケーション層において、メッセージまたはストリーム単位でSA検索が実施されるため、メッセージまたはストリームのデータサイズが大きくなっても、IPフラグメント化による暗復号化処理のオーバヘッドは影響しない。また、TCP/IPのアプリケーション層で暗復号化処理を行うため、いわゆるNAT越え問題に対応することができる。しかし、TLSにおけるSAの交換は、ハンドシェイクプロトコルを用いて、アプリケーション層のトランザクション毎に実施されるため、例えばトランザクションが頻繁に発生するHTTP1.0を利用したWebブラウザ等のアプリケーションでは、SA交換処理のオーバヘッドが大きくなる。
【0008】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、暗復号化処理およびSA交換処理の両方のオーバヘッドを小さくでき、且つ、NAT越え問題を解決できる暗号通信技術を提供することにある。
【課題を解決するための手段】
【0009】
上記課題を解決するために、本発明では、暗復号化処理をアプリケーション層でメッセージまたはストリーム毎に行う。また、SA/SPの交換は、ハンドシェイクプロトコルを用いて、アプリケーション層のコネクション毎に実施する。すなわち、アプリケーションのトランザクションが終了し、その結果ソケットが削除されても、所定時間が経過するまではSA/SPを保持する。そして、新たにトランザクションが発生し、その結果新たにソケットが生成された場合には、この保持していたSA/SPを適用する。
【0010】
例えば、本発明の暗号通信装置は、TCP/IPのアプリケーション層に実装された暗復号化手段、SA(Security Association)管理手段、およびハンドシェイク手段、を有し、
前記SA管理手段は、
SAパラメータがIPアドレスおよびポート番号に対応付けて登録されたSAまたはSPデータベースと、
前記暗復号化モジュールから受付けたSA検索依頼で指定されているIPアドレスおよびポート番号に対応付けられている有効期限内のSAパラメータを前記SAまたはSPデータベースから検索し、当該SAパラメータが前記SAまたはSPデータベースに登録されている場合は、当該SAパラメータを前記暗復号化モジュールに通知し、一方、当該SAパラメータが前記SAまたはSPデータベースに登録されていない場合は、前記ハンドシェイク手段を利用して前記通信相手から当該通信相手との暗号通信に利用可能なSAパラメータを入手して前記暗復号化モジュールに通知すると共に、当該SAパラメータを前記通信相手のIPアドレスおよびポート番号に対応付けて前記SAまたはSPデータベースに登録するSA通知手段と、を有し、
前記暗復号化手段は、
前記アプリケーション層に実装されたアプリケーションが前記通信相手に送信するメッセージまたはストリーム毎に、および、前記アプリケーションが前記通信相手から受信するメッセージまたはストリームの暗号化データ毎に、前記通信相手のIPアドレスおよびポート番号の指定を伴うSA検索要求を生成して前記SA管理手段に通知し、前記SA管理手段からSAパラメータを入手するSA検索要求手段と、
前記SA検索要求手段が入手したSAパラメータを用いて、前記アプリケーションが前記通信相手に送信するメッセージまたはストリームを暗号化する暗号化手段と、
前記SA検索要求手段が入手したSAパラメータを用いて、前記アプリケーションが前記通信相手から受信するメッセージまたはストリームの暗号化データを復号化する復号化手段と、を有し、
前記SA通知手段は、
前記暗復号化モジュールにSAパラメータを通知する毎に、前記SAまたはSPデータベースに登録されている当該SAパラメータの有効期限を更新する。
【発明の効果】
【0011】
本発明によれば、暗復号化処理およびSA交換処理の両方のオーバヘッドを小さくできる。また、NAT越え問題を解決することができる。
【発明を実施するための最良の形態】
【0012】
以下、本発明の一実施形態を説明する。
【0013】
図1は、本実施形態の一実施形態が適用された暗号通信装置1のソフトウエア構成図である。図示するように、暗号通信装置1は、TCP/IPのネットワークインターフェース層を処理するNIC(Network Interface Card)ドライバ10と、TCP/IPのインターネット層を処理するIPプロトコルスタック11と、TCP/IPのトランスポート層を処理するTCP(UDP)プロトコルスタック12と、TCP/IPのアプリケーション層を処理するアプリケーション14、シグナリングモジュール15、TLSモジュール16、SA管理モジュール17、および暗復号化モジュール18と、を有する。
【0014】
アプリケーション14は、通信相手とメッセージまたはストリームを送受信するプログラムである。アプリケーション14としては、アプリケーション層のプロトコルであるHTTP(HyperText Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)、RTP(Real-time Transport Protocol)等を利用したアプリケーション、例えばWebブラウザ、電子メール、IP電話等がある。
【0015】
シグナリングモジュール15は、後述するSA管理モジュール17が通信相手とSA、SPを交換するために利用するハンドシェイクプロトコルを処理するプログラムである。シグナリングモジュール15としては、SIP(Session Initiation Protocol)、IKE等を利用したプログラムがある。シグナリングモジュール15は、後述するSA管理モジュール17より受信した、通信相手のIPアドレス、ポート番号およびプロトコルの指定を伴うSA情報交換要求に従い、通信相手のシグナリングモジュール15とSA、SPの情報を交換し、アプリケーション14が通信相手のアプリケーション14と暗号通信を行うために用いるSA、SPの情報を決定する。そして、決定したSA、SPの情報を、通信相手のアプリケーション14のIPアドレスおよびポート番号と共に、SA管理モジュール17に通知する。
【0016】
TLSモジュール16は、シグナリングモジュール15が通信相手との間に確立したシグナリングチャネルを暗号化するためにTLSを処理するプログラムである。シグナリングチャネルは、図1、図2、図4において点線で表した矢印が相当する。TLSモジュール16は、シグナリングモジュール15が通信相手へ送信するSA、SPの情報を暗号化してTCP(UDP)プロトコルスタック12に送信する。また、シグナリングモジュール15が通信相手から入手するSA、SPの情報を、TCP(UDP)プロトコルスタック12より受信して復号化し、これをシグナリングモジュール15へ送信する。
【0017】
SA管理モジュール17は、後述する暗復号化モジュール18からのSA/SP検索要求に従い、アプリケーション14が通信相手のアプリケーション14と暗号通信を行なうために用いるSA、SPの情報を自身のデータベースから検索して、暗復号化モジュール18に通知する。自身のデータベースに該当するSA、SPの情報が登録されていない場合は、該通信相手の指定(IPアドレスとTCP(UDP)ポート)を伴うSA/SP検索要求を生成して、シグナリングモジュール15に送信する。そして、シグナリングモジュール15からSA、SPの情報を取得する。また、SA管理モジュール17は、自身のデータベースに登録されているSA、SPの情報の有効期限の管理を行う。
【0018】
図2は、SA管理モジュール17のソフトウエア構成図である。図示するように、SA管理モジュール17は、SAD171と、SPD172と、SA/SP管理部173と、SA/SP検索要求受付部174と、SA情報交換要求部175と、を有する。
【0019】
SAD171は、送信用SAD171Aと、受信用SAD171Bとを有する。送信用SAD171Aは、通信相手に送信するデータを暗号化するのに用いるSAパラメータを記憶するデータベースである。受信用SAD171Bは、通信相手から受信したデータを復号化するのに用いるSAパラメータを記憶するデータベースである。SAパラメータには、認証アルゴリズム、認証鍵、暗号化アルゴリズム、暗号化鍵、SAの有効期間等が含まれる。SAパラメータは、通信相手のアドレスおよびTCP(UDP)ポートに対応付けられて、送信用SAD171Aおよび受信用SAD171Bにそれぞれ登録される。
【0020】
SPD172は、送信用SPD172Aと、受信用SPD172Bとを有する。送信用SPD172Aは、通信相手に送信するデータを暗号化するのに用いるSPを記憶するデータベースである。受信用SPD172Bは、通信相手から受信したデータを復号化するのに用いるSPを記憶するデータベースである。SPには、該当パケットの処理内容(Apply、Bypass、Discard)、SPの有効期限等が含まれる。SPは、通信相手のアドレスおよびTCP(UDP)ポートに対応付けられて、送信用SPD172Aおよび受信用SPD172Bにそれぞれ登録される。
【0021】
SA/SP検索要求受付部174は、後述する暗復号化モジュール18より通信相手のIPアドレス、ポート番号およびプロトコルの指定を伴うSA/SP検索要求を受付け、これをSA/SP管理部173に通知する。そして、SA/SP管理部173よりSA、SPを受信して暗復号化モジュール18に通知する。
【0022】
SA情報交換要求部175は、SA/SP管理部173より通信相手のIPアドレス、ポート番号およびプロトコルの指定を伴うSA情報交換要求を受付け、これをシグナリングモジュール15に通知する。そして、シグナリングモジュール15よりSA、SPを受信してSA/SP管理部173に通知する。また、SA情報交換要求部175は、シグナリングモジュール15を介して通信相手より当該通信相手のIPアドレス、ポート番号およびプロトコルの指定と、予め登録されている暗復号化モジュール18が使用可能なSA情報のリストとを伴うSA情報交換要求を受付けると、これをSA/SP管理部173に通知する。そして、SA/SP管理部173よりSA、SPを受信し、シグナリングモジュール15を介して通信相手に通知する。
【0023】
SA/SP管理部173は、SA/SP検索要求受付部174よりSA/SP検索要求を受付けると、該SA/SP検索要求で指定されている通信相手のIPアドレス、ポート番号およびプロトコルに対応付けられているSA、SPをSAD171、SPD172から検索する。そして、検索したSA、SPをSA/SP検索要求受付部174に通知する。なお、検索したSA/SPが有効期限を過ぎている場合、SA/SP管理部173は、自暗号通信装置1のIPアドレス、ポート番号およびプロトコルの指定と、予め登録されている暗復号化モジュール18が使用可能なSA情報のリストとを伴うSA情報交換要求を生成し、SA情報交換要求部175に通知する。そして、SA情報交換要求部175よりSA、SPを受付けて、SA/SP検索要求受付部174に通知すると共にSAD171、SPD172を更新する。また、SA/SP管理部173は、SA情報交換要求部175よりSA情報交換要求を受付けると、該SA情報交換要求に付与されているSA情報のリストの中から、予め登録されている暗復号化モジュール18が使用可能なSA情報のリストに含まれているSA、SPを選択し、これをSA情報交換要求部175に通知すると共にSAD171、SPD172を更新する。
【0024】
図3は、SA管理モジュール17の動作を説明するための図である。
【0025】
SA/SP検索要求受付部174は、暗復号化モジュール18より通信相手のIPアドレス、ポート番号およびプロトコルの指定を伴うSA/SP検索要求(送信用SA/SP検索要求、受信用SA/SP検索要求)を受付けると(S101でYES)、これをSA/SP管理部173に通知する。これを受けて、SA/SP管理部173はSAD171、SPD172からSA、SPを検索する(S102)。
【0026】
具体的には、送信用SA/SP検索要求の場合は、送信用SAD171Aを検索し、該送信用SA/SP検索要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている送信用SAを検索する。同様に、送信用SPD172Aを検索し、該送信用SA/SP検索要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている送信用SPを検索する。一方、受信用SA/SP検索要求の場合は、受信用SAD171Bを検索し、該SA/SP検索要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている受信用SAを検索する。同様に、受信用SPD172Bを検索し、該SA/SP検索要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている受信用SPを検索する。
【0027】
SA、SPを検索できなかった場合(S103でNO)、あるいは、SA、SPを検索できたがSA、SPの有効期限が過ぎている場合(S104でNO)、SA/SP管理部173は、自暗号通信装置1のIPアドレス、ポート番号およびプロトコルと、予め登録されている暗復号化モジュール18が使用可能なSA情報のリストとを伴うSA情報交換要求を生成し(送信用SA/SP検索要求の場合は受信用SA情報交換要求を生成し、受信用SA/SP検索要求の場合は送信用SA情報交換要求を生成する)、SA情報交換要求部175に通知する。これを受けて、SA情報交換要求部175は、シグナリングモジュール15を介して通信相手に、該SA情報交換要求(送信用SA情報交換要求、受信用SA情報交換要求)を送信する(S111)。
【0028】
さて、SA情報交換要求部175は、シグナリングモジュール15を介して通信相手から、SA情報交換要求に対する応答としてSA情報を受信すると(S112でYES)、これをSA/SP管理部173に通知する。これを受けて、SA/SP管理部173は、SAD171、SPD172にSA情報交換要求部175から受信したSA情報を登録・更新する(S113)。
【0029】
具体的には、送信用SA情報交換要求に対する応答として、SA情報交換要求部175から送信用SA情報を受信した場合、該送信用SA情報の送信元のIPアドレス、ポート番号およびプロトコルに対応付けられている送信用SAを、送信用SAD171Aから検索する。そして、検索した送信用SAを、SA情報交換要求部175から受信した送信用SA情報に更新する。また、対応するSPを送信用SPに更新する。この際、送信用SAの有効期限を、所定時間後の日時に更新する。該送信用SA情報の送信元のIPアドレス、ポート番号およびプロトコルに対応付けられている送信用SAが、送信用SAD171Aに登録されていない場合は、SA情報交換要求部175から受信した送信用SA情報およびこれに対応するSPを、該送信用SA情報の送信元のIPアドレス、ポート番号およびプロトコルに対応付けて送信用SAD171AおよびSPD172Aに新たに登録する。この際、送信用SAの有効期限を、所定時間後の日時に設定する。
【0030】
また、受信用SA情報交換要求に対する応答として、SA情報交換要求部175から受信用SA情報を受信した場合、該受信用SA情報の送信元のIPアドレス、ポート番号およびプロトコルに対応付けられている受信用SAを、受信用SAD171Aから検索する。そして、検索した受信用SAを、SA情報交換要求部175から受信した受信用SA情報に更新する。また、対応するSPを受信用SPに更新する。この際、受信用SAの有効期限を、所定時間後の日時に更新する。該受信用SA情報の送信元のIPアドレス、ポート番号およびプロトコルに対応付けられている受信用SAが、受信用SAD171Aに登録されていない場合は、SA情報交換要求部175から受信した受信用SA情報およびこれに対応するSPを、該受信用SA情報の送信元のIPアドレス、ポート番号およびプロトコルに対応付けて受信用SAD171AおよびSPD172Aに新たに登録する。この際、受信用SAの有効期限を、所定時間後の日時に設定する。
【0031】
次に、SA/SP管理部173は、SA情報交換要求部175から受信したSA情報およびこれに対応するSPをSA/SP検索要求受付部174に通知する。これを受けて、SA/SP検索要求受付部174は、このSA情報およびこれに対応するSPを暗復号化モジュール18に送信する(S114)。
【0032】
一方、SA/SP検索要求受付部174より受け取ったSA/SP検索要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられてSAD171、SPD172にSA、SPが登録されており(S103でYES)、且つ、該SA、SPの有効期限が過ぎていない場合(S104でYES)、SA/SP管理部173は、SAD171、SPD172に登録されている該SA、SPの有効期限を更新する(S105)。
【0033】
具体的には、SA/SP検索要求受付部174より受け取ったSA/SP検索要求が送信用SA/SP検索要求の場合は、当該送信用SA/SP検索要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられて送信用SAD171Aに登録されている送信用SAの有効期限を、所定時間後の日時に更新する。
【0034】
また、SA/SP検索要求受付部174より受け取ったSA/SP検索要求が受信用SA/SP検索要求の場合は、当該受信用SA/SP検索要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられて受信用SAD171Bに登録されている受信用SAの有効期限を、所定時間後の日時に更新する。
【0035】
次に、SA/SP管理部173は、SA/SP検索要求受付部174より受け取ったSA/SP検索要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられてSAD171、SPD172に登録されているSA、SPを、SA/SP検索要求受付部174に通知する。具体的には、SA/SP検索要求受付部174より受け取ったSA/SP検索要求が送信用SA/SP検索要求の場合は、当該送信用SA/SP検索要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられて送信用SAD171A、送信用SPD172Aに登録されている送信用SA、SPを、SA/SP検索要求受付部174に通知する。また、SA/SP検索要求受付部174より受け取ったSA/SP検索要求が受信用SA/SP検索要求の場合は、当該受信用SA/SP検索要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられて受信用SAD171B、受信用SPD172Bに登録されている受信用SA、SPを、SA/SP検索要求受付部174に通知する。これを受けて、SA/SP検索要求受付部174は、このSA、SPを暗復号化モジュール18に送信する(S106)。
【0036】
また、SA情報交換要求部175は、シグナリングモジュール15を介して通信相手から当該通信相手のIPアドレス、ポート番号およびプロトコルと、当該通信相手が利用可能なSA情報のリストとを伴うSA情報交換要求(送信用SA情報交換要求、受信用SA情報交換要求)を受付けると(S121でYES)、これをSA/SP管理部173に通知する。これを受けて、SA/SP管理部173は、予め登録されている自暗号通信装置1が利用可能なSA情報のリストと、該SA情報交換要求に付加されているSA情報のリストとを比較し、両リストに掲載されているSA、SP、つまり、両装置で利用可能なSA、SPの中から、今回の暗号通信に利用するSA、SPを決定する(S122)。そして、決定したSA、SPをSAD171、SPD172に登録・更新する(S123)。
【0037】
具体的には、シグナリングモジュール15を介して通信相手から受信したSA情報交換要求が送信用SA情報交換要求の場合、当該送信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている送信用SAを、送信用SAD171Aから検索する。そして、検索した送信用SAを、該決定したSAに更新する。この際、送信用SAの有効期限を、所定時間後の日時に更新する。なお、当該送信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている送信用SAが、送信用SAD171Aに登録されていない場合は、該決定したSAを、当該送信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けて送信用SAD171Aに新たに登録する。この際、送信用SAの有効期限を、所定時間後の日時に設定する。
【0038】
同様に、当該送信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている送信用SPを、送信用SPD172Aから検索する。そして、検索した送信用SPを、該決定したSPに更新する。この際、送信用SPの有効期限を、所定時間後の日時に更新する。なお、当該送信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている送信用SPが、送信用SPD172Aに登録されていない場合は、該決定したSPを、当該送信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けて送信用SPD172Aに新たに登録する。この際、送信用SPの有効期限を、所定時間後の日時に設定する。
【0039】
また、シグナリングモジュール15を介して通信相手から受信したSA情報交換要求が受信用SA情報交換要求の場合、当該受信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている受信用SAを、受信用SAD171Bから検索する。そして、検索した受信用SBを、該決定したSBに更新する。この際、受信用SBの有効期限を、所定時間後の日時に更新する。なお、当該受信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている受信用SAが、受信用SAD171Bに登録されていない場合は、該決定したSAを、当該受信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けて受信用SAD171Bに新たに登録する。この際、受信用SAの有効期限を、所定時間後の日時に設定する。
【0040】
同様に、当該受信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている受信用SPを、受信用SPD172Bから検索する。そして、検索した受信用SPを、該決定したSPに更新する。この際、受信用SPの有効期限を、所定時間後の日時に更新する。なお、当該受信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けられている受信用SPが、受信用SPD172Aに登録されていない場合は、該決定したSPを、当該受信用SA情報交換要求に付加されているIPアドレス、ポート番号およびプロトコルに対応付けて受信用SPD172Bに新たに登録する。この際、受信用SPの有効期限を、所定時間後の日時に設定する。
【0041】
次に、SA/SP管理部173は、該決定したSA、SPをSA/SP検索要求部175に通知する。これを受けて、SA/SP検索要求部175は、このSA、SPをシグナリングモジュール15を介して、該SA情報交換要求の送信元に送信する(S124)。
【0042】
図1に戻って説明を続ける。暗復号化モジュール18は、アプリケーション14から出力されたメッセージまたはストリームを、SA管理モジュール17より取得した送信用SA、送信用SPを用いて暗号化し、TCP(UDP)プロトコルスタック12に出力する。また、TCP(UDP)プロトコルスタック12より出力された暗号化データを、SA管理モジュール17より取得した受信用SA、受信用SPを用いてメッセージまたはストリームに復号化し、アプリケーション14に出力する。
【0043】
図4は、暗復号化モジュール18のソフトウエア構成図である。図示するように、暗復号化モジュール18は、アプリケーション用受信バッファ181と、暗号化部182と、TCP(UDP)プロトコルスタック用送信バッファ183と、TCP(UDP)スタック用受信バッファ184と、復号化部185と、アプリケーション用送信バッファ186と、SA/SP検索要求部187と、を有する。
【0044】
アプリケーション用受信バッファ181は、ソケットバッファを介してアプリケーション14から送られてきたメッセージまたはストリームを格納する。
【0045】
暗号化部182は、アプリケーション用受信バッファ181に格納されたメッセージまたはストリームを、後述するSA/SP検索要求部187により設定された送信用SA、SPの情報を用いて暗号化して出力する。なお、メッセージまたはストリームのデータサイズが所定サイズ(例えば214byte)を超えている場合、メッセージまたはストリームを該所定サイズにフラグメントし、フラグメントされたデータ単位で暗号化し出力する。
【0046】
TCP(UDP)プロトコルスタック用送信バッファ183は、暗号化部172より出力された暗号化データを格納する。そして、この暗号化データをTCP(UDP)プロトコルスタック12に出力する。
【0047】
TCP(UDP)プロトコルスタック用受信バッファ874は、TCP(UDP)プロトコルスタック12から送られてきた暗号化データを格納する。
【0048】
復号化部185は、TCP(UDP)プロトコルスタック用受信バッファ184に格納された暗号化データを、後述するSA/SP検索要求部187により設定された受信用SA、SPの情報を用いて復号化して出力する。
【0049】
アプリケーション用送信バッファ186は、復号化部185より出力された復号化データを格納する。そして、この復号化データ(メッセージまたはストリーム)は、ソケットバッファを介して、アプリケーション14に出力する。なお、アプリケーション用送信バッファ186に格納された復号化データがメッセージまたはストリームのフラグメントデータである場合、アプリケーション用送信バッファ186は、連続する複数のフラグメントデータからメッセージまたはストリームを復元し、ソケットバッファを介して、アプリケーション14に出力する。
【0050】
SA/SP検索要求部187は、アプリケーション用受信バッファ181にメッセージまたはストリームが格納されると、該メッセージまたはストリームの宛先のIPアドレス、ポート番号およびプロトコルの指定を伴う送信用SA/SP検索要求を生成し、これをSA管理モジュール17に通知する。そして、SA管理モジュール17から受け取った送信用SA、送信用SPを暗号化部172に設定する。また、SA/SP検査要求部187は、TCP(UDP)スタック用受信バッファ184に暗号化データが格納されると、該暗号化データの送信元のIPアドレス、ポート番号およびプロトコルの指定を伴う受信用SA/SP検索要求を生成し、これをSA管理モジュール17に通知する。そして、SA管理モジュール17から受け取った受信用SA、受信用SPを復号化部175に設定する。
【0051】
図5は、暗復号化モジュール17の動作を説明するための図である。
【0052】
アプリケーション用受信バッファ181に、アプリケーション14のメッセージまたはストリームが格納されると(S201でYES)、SA/SP検索要求部187は、当該メッセージまたはストリームの宛先のIPアドレス、ポート番号およびプロトコルを伴う送信用SA/SP検索要求を生成して、SA管理モジュール17に通知する(S202)。次に、SA/SP検索要求部187は、SA管理モジュール17から送信用SA、SPを受信したならば(S203でYES)、これらを暗号化部182に設定する。暗号化部182は、送信用SA、SPが設定されたならば、アプリケーション用受信バッファ181からメッセージまたはストリームを読み出し、これを設定されている送信用SA、SPに従って暗号化する(S205)。なお、アプリケーション用受信バッファ181から読みだしたメッセージまたはストリームのデータサイズが所定サイズを超えている場合は、当該メッセージまたはストリームを所定サイズにフラグメントしてから(S204)、暗号化する(S205)。暗号化終了後、暗号化部182は、設定されている送信用SA、SPを保持したまま、暗号化データをTCP(UDP)プロトコルスタック用送信バッファ183を介してTCP(UDP)プロトコルスタック12に出力する(S206)。
【0053】
また、TCPプロトコルスタック用受信バッファ184に、暗号化データが格納されると(S211でYES)、SA/SP検索要求部187は、当該暗号化データの送信元のIPアドレス、ポート番号およびプロトコルを伴う受信用SA/SP検索要求を生成して、SA管理モジュール17に通知する(S212)。次に、SA/SP検索要求部187は、SA管理モジュール17から受信用SA、SPを受信したならば(S213でYES)、これらを復号化部185に設定する。復号化部185は、受信用SA、SPが設定されたならば、TCPプロトコルスタック用受信バッファ184から暗号化データを読み出し、これを設定されている受信用SA、SPに従って復号化する(S214)。これにより、通信相手のメッセージまたはストリームを復元する(S215)。なお、復号化したデータがフラグメントされたデータである場合、複数のフラグメントされたデータを繋ぎ合わせて通信相手のメッセージまたはストリームを復元する(S215)。メッセージまたはストリームの復元終了後、復号化部185は、設定されている受信用SA、SPを保持したまま、復元したメッセージまたはストリームをアプリケーション用送信バッファ186を介してアプリケーション14に出力する(S216)。
【0054】
上記構成の暗号通信装置1は、例えば図6に示すような、CPU901と、メモリ902と、HDD等の外部記憶装置903と、CD-ROMやDVD-ROMやICカードなどの記憶媒体904からデータを読み取る読取装置905と、ネットワークに接続するためのNIC906と、キーボード、マウス、ディスプレイ等の入出力装置を接続するためのI/Oコネクタ907と、これらの各装置を接続するバス908と、を備えた一般的なコンピュータシステムにおいて、CPU901がメモリ902上にロードされたプログラムを実行することで実現できる。このプログラムは、読取装置905を介して記憶媒体904から、あるいは、NIC906を介してネットワークから、外部記憶装置903にダウンロードされ、それから、メモリ902上にロードされてCPU901により実行されるようにしてもよい。あるいは、外部記憶装置903を経由せずに、メモリ902上に直接ロードされ、CPU901により実行されるようにしてもよい。
【0055】
以上、本発明の一実施形態について説明した。
【0056】
本実施形態では、アプリケーション層に実装された暗復号化モジュール18が、メッセージまたはストリームを単位として暗復号化処理を行う。また、アプリケーション層に実装されたSA管理モジュール17が、シグナリングモジュール15を用いて、通信相手とSA、SPを交換する。そして、アプリケーション14のトランザクションが終了し、その結果ソケットが削除された場合でも、所定時間(有効期限)内にトランザクションが発生している限り、つまりコネクションが継続している限り、SA、SPを保持する。したがって、本実施形態によれば、暗復号化処理およびSA交換処理の両方のオーバヘッドを小さくできる。また、NAT越え問題を解決することができる。
【0057】
なお、本実施形態の上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。例えば、上記の実施形態では、シグナリングチャネルをTLSモジュール16で暗号化する場合を例にとり説明したが、シグナリングチャネルの暗号化方法はこれに限定されない。また、上記の実施形態では、SAおよびSPの両方を扱う場合を例にとり説明したが、SPを用いないものでよい。
【図面の簡単な説明】
【0058】
【図1】図1は本実施形態の一実施形態が適用された暗号通信装置1のソフトウエア構成図である。
【図2】図2はSA管理モジュール17のソフトウエア構成図である。
【図3】図3はSA管理モジュール17の動作を説明するための図である。
【図4】図4は暗復号化モジュール18のソフトウエア構成図である。
【図5】図5は暗復号化モジュール17の動作を説明するための図である。
【図6】図6は暗号通信装置1のハードウエア構成例を示す図である。
【符号の説明】
【0059】
1…暗号通信装置、10…NICドライバ、11…IPプロトコルスタック、12…TCP(UDP)プロトコルスタック、14…アプリケーション、15…シグナリングモジュール、16…TLSモジュール、17…SA管理モジュール、171…SAD、172…SPD、173…SA/SP管理部、174…SA/SP検索要求受付部、175…SA情報交換要求部、181…アプリケーション用受信バッファ、182…暗号化部、183…TCP(UDP)プロトコルスタック用送信バッファ、184…TCP(UDP)プロトコルスタック用受信バッファ、185…復号化部、186…アプリケーション用送信バッファ、187…SA/SP検索要求部

【特許請求の範囲】
【請求項1】
暗号通信装置であって、
TCP/IPのアプリケーション層に実装された暗復号化手段、SA(Security Association)管理手段、およびハンドシェイク手段、を有し、
前記SA管理手段は、
SAパラメータがIPアドレスおよびポート番号に対応付けて登録されたSAまたはSPデータベースと、
前記暗復号化モジュールから受付けたSA検索依頼で指定されているIPアドレスおよびポート番号に対応付けられている有効期限内のSAパラメータを前記SAまたはSPデータベースから検索し、当該SAパラメータが前記SAまたはSPデータベースに登録されている場合は、当該SAパラメータを前記暗復号化モジュールに通知し、一方、当該SAパラメータが前記SAまたはSPデータベースに登録されていない場合は、前記ハンドシェイク手段を利用して前記通信相手から当該通信相手との暗号通信に利用可能なSAパラメータを入手して前記暗復号化モジュールに通知すると共に、当該SAパラメータを前記通信相手のIPアドレスおよびポート番号に対応付けて前記SAまたはSPデータベースに登録するSA通知手段と、を有し、
前記暗復号化手段は、
前記アプリケーション層に実装されたアプリケーションが前記通信相手に送信するメッセージまたはストリーム毎に、および、前記アプリケーションが前記通信相手から受信するメッセージまたはストリームの暗号化データ毎に、前記通信相手のIPアドレスおよびポート番号の指定を伴うSA検索要求を生成して前記SA管理手段に通知し、前記SA管理手段からSAパラメータを入手するSA検索要求手段と、
前記SA検索要求手段が入手したSAパラメータを用いて、前記アプリケーションが前記通信相手に送信するメッセージまたはストリームを暗号化する暗号化手段と、
前記SA検索要求手段が入手したSAパラメータを用いて、前記アプリケーションが前記通信相手から受信するメッセージまたはストリームの暗号化データを復号化する復号化手段と、を有し、
前記SA通知手段は、
前記暗復号化モジュールにSAパラメータを通知する毎に、前記SAまたはSPデータベースに登録されている当該SAパラメータの有効期限を更新すること
を特徴とする暗号通信装置。
【請求項2】
請求項1に記載の暗号通信装置であって、
前記暗号化手段は、
前記アプリケーションが前記通信相手に送信するメッセージまたはストリームが所定サイズより大きい場合に、当該メッセージまたはストリームを当該所定サイズにフラグメントしてから、各フラグメントデータを暗号化し、
前記復号化手段は、
前記アプリケーションが前記通信相手から受信するメッセージまたはストリームの暗号化データがフラグメントされている場合、フラグメントデータの復号結果を繋ぎ合わせて当該メッセージまたはストリームを復元すること
を特徴とする暗号通信装置。
【請求項3】
請求項1又は2に記載の暗号通信装置であって、
前記SA通知手段は、
前記ハンドシェイク手段を利用して、自暗号通信装置のIPアドレスおよびポート番号と、自暗号通信装置が利用可能なSAパラメータのリストとを伴うSA交換要求を前記通信相手に送信して、前記通信相手から当該通信相手との暗号通信に利用可能なSAパラメータを入手すること
を特徴とする暗号通信装置。
【請求項4】
請求項1乃至3のいずれか一項に記載の暗号通信装置であって、
前記SA通知手段は、
前記通信相手から、当該通信相手のIPアドレスおよびポート番号と、自暗号通信装置が利用可能なSAパラメータのリストとを伴うSA交換要求を受信すると、当該SAパラメータの中から自暗号通信装置が利用可能なSAパラメータを選択して、その選択結果を前記通信相手に送信すること
を特徴とする暗号通信装置。
【請求項5】
コンピュータで読取可能なプログラムであって、
前記プログラムは、前記コンピュータを、
TCP/IPのアプリケーション層に実装された暗復号化手段、SA(Security Association)管理手段、およびハンドシェイク手段として機能させ、
前記SA管理手段は、
SAパラメータがIPアドレスおよびポート番号に対応付けて登録されたSAまたはSPデータベースと、
前記暗復号化モジュールから受付けたSA検索依頼で指定されているIPアドレスおよびポート番号に対応付けられている有効期限内のSAパラメータを前記SAまたはSPデータベースから検索し、当該SAパラメータが前記SAまたはSPデータベースに登録されている場合は、当該SAパラメータを前記暗復号化モジュールに通知し、一方、当該SAパラメータが前記SAまたはSPデータベースに登録されていない場合は、前記ハンドシェイク手段を利用して前記通信相手から当該通信相手との暗号通信に利用可能なSAパラメータを入手して前記暗復号化モジュールに通知すると共に、当該SAパラメータを前記通信相手のIPアドレスおよびポート番号に対応付けて前記SAまたはSPデータベースに登録するSA通知手段と、を有し、
前記暗復号化手段は、
前記アプリケーション層に実装されたアプリケーションが前記通信相手に送信するメッセージまたはストリーム毎に、および、前記アプリケーションが前記通信相手から受信するメッセージまたはストリームの暗号化データ毎に、前記通信相手のIPアドレスおよびポート番号の指定を伴うSA検索要求を生成して前記SA管理手段に通知し、前記SA管理手段からSAパラメータを入手するSA検索要求手段と、
前記SA検索要求手段が入手したSAパラメータを用いて、前記アプリケーションが前記通信相手に送信するメッセージまたはストリームを暗号化する暗号化手段と、
前記SA検索要求手段が入手したSAパラメータを用いて、前記アプリケーションが前記通信相手から受信するメッセージまたはストリームの暗号化データを復号化する復号化手段と、を有し、
前記SA通知手段は、
前記暗復号化モジュールにSAパラメータを通知する毎に、前記SAまたはSPデータベースに登録されている当該SAパラメータの有効期限を更新すること
を特徴とするコンピュータで読取可能なプログラム。
【請求項6】
暗号通信方法であって、
TCP/IPのアプリケーション層に実装されたアプリケーションによって通信相手に送信するメッセージまたはストリームが生成された場合に、SAパラメータが通信相手のIPアドレスおよびポート番号に対応付けて登録されたSAまたはSPデータベースから、前記通信相手のIPアドレスおよびポート番号に対応付けられている有効期限内のSAパラメータを検索し、
当該SAパラメータが前記SAまたはSPデータベースに登録されている場合は、当該SAパラメータを読み出すと共に、当該SAパラメータに有効期限を更新し、一方、当該SAパラメータが前記SAまたはSPデータベースに登録されていない場合は、前記アプリケーション層に実装されたハンドシェイクプロトコルを利用して前記通信相手から当該通信相手との暗号通信に利用可能なSAパラメータを入手して有効期限と共に前記SAまたはSPデータベースに登録し、
前記SAまたはSPデータベースから読み出した、あるいは前記SAまたはSPデータベースに登録した、前記通信相手のIPアドレスおよびポート番号に対応するSAパラメータを用いて、前記アプリケーションが前記通信相手に送信するメッセージまたはストリームを暗号化すること
を特徴とする暗号通信方法。
【請求項7】
暗号通信方法であって、
TCP/IPのアプリケーション層に実装されたアプリケーションが通信相手から受信するメッセージまたはストリームの暗号化データを受信した場合に、SAパラメータが通信相手のIPアドレスおよびポート番号に対応付けて登録されたSAまたはSPデータベースから、前記通信相手のIPアドレスおよびポート番号に対応付けられている有効期限内のSAパラメータを検索し、
当該SAパラメータが前記SAまたはSPデータベースに登録されている場合は、当該SAパラメータを読み出すと共に、当該SAパラメータに有効期限を更新し、一方、当該SAパラメータが前記SAまたはSPデータベースに登録されていない場合は、前記アプリケーション層に実装されたハンドシェイクプロトコルを利用して前記通信相手から当該通信相手との暗号通信に利用可能なSAパラメータを入手して有効期限と共に前記SAまたはSPデータベースに登録し、
前記SAまたはSPデータベースから読み出した、あるいは前記SAまたはSPデータベースに登録した、前記通信相手のIPアドレスおよびポート番号に対応するSAパラメータを用いて、前記アプリケーションが前記通信相手から受信するメッセージまたはストリームの暗号化データを復号化すること
を特徴とする暗号通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate