説明

通信装置及びサーバ装置

【課題】ネットワーク設定やアプリケーションの設定を変更することなく、送信データの暗号化/非暗号化を切り替える。
【解決手段】通信ドライバインタフェース部107は、送信データの送信に用いられる通信デバイスについてのアプリケーション109からの指定を受け、指定された通信デバイスが物理通信デバイスである場合に、送信データの暗号化を行わずに、通信処理部102が送信データを送信し、指定された通信デバイスが仮想通信デバイスである場合に、暗号化部105が送信データを暗号化し、通信処理部102が暗号化された送信データを送信する。このように物理通信デバイスと仮想通信デバイスとを切り替えることにより、送信データの暗号化/非暗号化を切り替えることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化通信技術に関し、特にデータを送信する際に暗号化/非暗号化を切り替える技術に関する。
【背景技術】
【0002】
暗号化通信において、通信プロトコルにおける通信フレームの種別、コマンドの識別情報、接続先IP(Internet Protocol)アドレスや、ポート番号などの情報と暗号化の有無を対応付けて設定し、これらの情報に基づいて送信時にデータを暗号化するか、平文で送信するかを決定する、暗号化/非暗号化の切り替え方法が示されている(例えば、特許文献1)。
【特許文献1】特開平11−205309号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
従来の暗号化/非暗号化切り替え方法は、プロトコルヘッダ部のパラメータやコマンドなど、通信回線上に伝送される通信パラメータの差異により、暗号化/非暗号化を切り替える方法を示している。
このような方法は、プロトコル毎、あるいは、アプリケーション毎に暗号化するものと平文で送受信するものを多重化する利用法を想定しており、平文で通信していた既存アプリケーションを暗号化通信に移行する場合には、送信側、および、受信側において、ネットワーク設定を変更する必要がある。
また、ポート番号による切り替えは、受信側のポート番号を変更する必要があり、さらに、シリアル通信のようなポートの概念がない通信には適用できない。
【0004】
この発明は、以上のような課題を解決することを主な目的としており、送信側および受信側においてネットワーク設定やアプリケーションの設定を変更することなく、暗号化/非暗号化を切り替えることを主な目的とする。
また、シリアル通信のようなポートの概念がない通信においても、暗号化/非暗号化を切り替えることを主な目的とする。
【課題を解決するための手段】
【0005】
本発明に係る通信装置は、
送信データの送信に用いられる通信デバイスを指定するデバイス指定情報を入力し、入力したデバイス指定情報において指定されている通信デバイスが物理通信デバイス及び仮想通信デバイスのいずれであるかを判別し、前記デバイス指定情報において指定されている通信デバイスが仮想通信デバイスである場合に、当該仮想通信デバイスに対応付けられている物理通信デバイスを特定するデバイス判別部と、
前記デバイス判別部により前記デバイス指定情報において仮想通信デバイスが指定されていると判別された場合に、前記送信データを暗号化して暗号化送信データとする暗号化部と、
前記暗号化部による暗号化が行われていない場合に、前記デバイス指定情報において指定されている物理通信デバイスを用いて前記送信データを送信し、前記暗号化部による暗号化が行われている場合に、前記デバイス判別部により特定された物理通信デバイスを用いて前記暗号化送信データを送信する通信処理部とを有することを特徴とする。
【発明の効果】
【0006】
本発明によれば、デバイス指定情報に物理通信デバイスが指定されている場合は暗号化を行わずに送信データを送信し、デバイス指定情報に仮想通信デバイスが指定されている場合は暗号化を行って暗号化通信データを送信することとしたので、通信デバイスの指定を変更することで、暗号化/非暗号化を切り替えることができる。このため、ネットワーク設定やアプリケーションの設定を変更することなく、暗号化/非暗号化を切り替えることができ、また、シリアル通信のようなポートの概念がない通信においても、暗号化/非暗号化を切り替えることができる。
【発明を実施するための最良の形態】
【0007】
実施の形態1.
本実施の形態では、クライアント側で、アプリケーションが指定するデバイス名を変更することにより、暗号化/非暗号化を切り替える例について説明する。
【0008】
図1は、本実施の形態に係るクライアント装置100(以下、単にクライアントともいう)の構成例を示す。
クライアント装置100は通信装置の例である。
【0009】
図1において、通信処理部102は、通信を行うための回線インタフェースを含む物理通信デバイスを管理する手段である。
通信フレーム識別処理部103は、アプリケーションプロトコルレベルでの通信フレーム種別を識別する手段である。
暗号化プロトコル処理部104は、暗号化通信のプロトコルを処理する手段である。
暗号化部105は、送信データを暗号化する手段である。
復号部106は、受信した暗号化データを復号する手段である。
通信ドライバインタフェース部107は、アプリケーションが通信を行うために使用するシステムコールなどのインタフェースである。
アプリケーションプロトコル処理部108は、アプリケーションプロトコルの処理を行うライブラリなどのプログラムである。
アプリケーション109は、アプリケーションプログラムである。
【0010】
本実施の形態では、データの送信時に、通信ドライバインタフェース部107が、送信データの送信に用いられる通信デバイスを指定するデバイス指定情報を入力する。デバイス指定情報には、アプリケーション109により指定された通信デバイスが示される。
そして、通信ドライバインタフェース部107は、入力したデバイス指定情報において指定されている通信デバイスが物理通信デバイス及び仮想通信デバイスのいずれであるかを判別し、デバイス指定情報において指定されている通信デバイスが仮想通信デバイスである場合に、当該仮想通信デバイスに対応付けられている物理通信デバイスを特定する。
通信ドライバインタフェース部107は、デバイス判別部の例である。
物理通信デバイスとは、クライアント装置100に実際に搭載されている通信デバイスであり、仮想通信デバイスとは、クライアント装置100に実際には搭載されていない暗号化通信を指定するための仮想的な通信デバイスである。
以下、物理通信デバイスを物理デバイス、物理通信手段ともいい、また、仮想通信デバイスを仮想デバイス、仮想通信手段ともいう。
【0011】
また、暗号化部105は、通信ドライバインタフェース部107によりデバイス指定情報において仮想通信デバイスが指定されていると判別された場合に、送信データを暗号化して暗号化送信データとする。
【0012】
通信処理部102は、暗号化部105による暗号化が行われていない場合に、デバイス指定情報において指定されている物理通信デバイスを用いて送信データを送信し、暗号化部105による暗号化が行われている場合に、通信ドライバインタフェース部107により特定された物理通信デバイスを用いて暗号化送信データを送信する。
【0013】
また、データの受信時に、通信処理部102は、送信データに対するサーバ装置からの応答データを物理通信デバイスを用いて受信し、通信フレーム識別処理部103が、応答データを解析して、応答データが暗号化されているか否かを判別する。通信フレーム識別処理部103は、応答データ判別部の例である。
また、復号部106は、通信フレーム識別処理部103により応答データが暗号化されていると判別された場合に、応答データを復号する。
【0014】
また、通信ドライバインタフェース部107は、復号部106による応答データの復号が行われていない場合に、通信処理部102が応答データを受信した物理通信デバイスを通知する情報(物理通信デバイス通知情報)を生成し、復号部106による応答データの復号が行われている場合に、通信処理部102が応答データを受信した物理通信デバイスに対応付けられている仮想通信デバイスを特定し、特定した仮想通信デバイスをアプリケーション109に通知する情報(仮想通信デバイス通知情報)を生成する。
【0015】
図2は、本実施の形態に係るサーバ装置200(以下、単にサーバともいう)の構成例を示す。
サーバ装置200の構成もクライアント装置100と同じであるが、各部の動作内容の一部がクライアント装置100と異なるため、相違点を中心に説明する。
【0016】
通信処理部202は、クライアント装置100から送信された要求データを受信する。
通信フレーム識別処理部203は、要求データが暗号化されているか否かを判別する。
通信フレーム識別処理部203は、要求データ判別部の例である。
復号部206は、通信フレーム識別処理部203により要求データが暗号化されていると判別された場合に、要求データを復号する。
【0017】
通信ドライバインタフェース部207は、要求データに要求番号を付与するとともに、要求番号に対して要求データが暗号化されていたか否かを表す暗号有無識別情報を設定し、要求データに対する応答データが生成された際に、応答データが対応する要求データに付与されている要求番号の通知を受け、通知を受けた要求番号に対する暗号有無識別情報に基づき応答データに対応する要求データが暗号化されていたか否かを判断する。
通信ドライバインタフェース部207は、暗号有無判断部の例である。
暗号化部205は、通信ドライバインタフェース部207により応答データに対応する要求データが暗号化されていたと判断された場合に、応答データを暗号化する。
そして、通信処理部202は、応答データをクライアント装置100に対して送信する。
【0018】
次に、クライアント装置100及びサーバ装置200の動作について説明する。
【0019】
最初に、クライアント側における送信動作について説明する。
まず、クライアント100において、アプリケーション109は要求を発行する。
アプリケーション109が発行した要求は、アプリケーションプロトコル処理部108にわたり、アプリケーションプロトコルヘッダが付加される。
次に、アプリケーションプロトコルヘッダを付加された要求は、通信ドライバインタフェース部107に渡される。
通信ドライバインタフェース部107では、送信データに対応するデバイス名(デバイス指定情報)によって、暗号化を行うか、行わないかを識別する。
【0020】
この暗号化/非暗号化の区別について詳しく説明する。
アプリケーションプロトコル処理部108から、通信ドライバインタフェース部107をアクセスするインタフェースは例えば、open、close、read、write、control等のシステムコールで実現される。
通信デバイス名は、通信手段ごとにシステム内でユニークに命名される。
例えば、シリアルポートの場合、Windows(登録商標)では“COM1”、UNIX(登録商標)では“/dev/tty0”などのように命名される。
これらのデバイス名は、通常、物理的な通信手段に対応づけられるが、本実施の形態では、これらに加え、アプリケーション109から暗号化通信を利用するための仮想的な通信デバイス名を定義し、物理的な通信デバイス名と対応付ける。
例えば、アプリケーション109が仮想通信デバイス“COM3”に対しwriteを発行するとデータ暗号化後に物理通信デバイス“COM1”に対する書込みが行われる。
readやwriteとデバイス名の対応付けについては、open時にデバイス名を指定して、read、write、control、close発行時に指定する識別子を別途取得するようにしても良いし、readやwrite発行時に直接指定するようにしても良い。
【0021】
ここで、クライアント側の送信動作の説明に戻る。
通信ドライバインタフェース部107は、アプリケーションプロトコル処理部108から送信データを受け取ると、対応するデバイス名(デバイス指定情報)を確認し、物理的な通信デバイスと対応付けられているデバイス名であれば、送信データを通信処理部102に渡し、通信処理部102から当該物理通信デバイスを用いて通信回線へ送信する。
【0022】
一方、通信ドライバインタフェース部107において、アプリケーションプロトコル処理部108から受け取った送信データが、暗号化通信を利用するための仮想的なデバイス名に対応付けられたデータである場合(仮想通信デバイスが示されるデバイス指定情報の場合)は、通信ドライバインタフェース部107は、暗号化プロトコル処理部104に送信データを渡す。
さらに、暗号化プロトコル処理部104は、送信データを暗号化部105に渡す。
暗号化部105は、受け取った送信データを暗号化すると、暗号化プロトコル処理部104に返す。
暗号化プロトコル処理部104は、暗号化された送信データに暗号化フレーム用ヘッダ、およびトレーラを付与し、物理デバイス名への書込みデータとして、送信データを通信ドライバインタフェース部107に渡す。
通信ドライバインタフェース部107は、仮想通信デバイスに対応する物理通信デバイスを特定し、暗号化プロトコル処理部104から受け取ったデータを、特定した物理通信デバイスへの書込みデータとして、通信処理部102へ渡し、通信処理部102から当該物理通信デバイスを用いて通信回線へとデータを送信する。
【0023】
図3に要求フレームのフレーム構造例、図4に応答フレームの構造例を示す。
ここで、暗号化フレーム用に専用のフレーム種別の値を用意する。
データ部に暗号化データを含むフレームは、フレーム種別に暗号化フレームを示す値を格納する。本実施の形態において、暗号化フレームを作成する場合、既存のアプリケーションプロトコルのフレームを丸ごと暗号化し、この暗号化したデータをデータ部として、新たなヘッダ、トレーラを付与する。このとき、付与されるヘッダに含まれるフレーム種別に、暗号化フレームを示す値が格納される。
【0024】
図5にクライアント側送信処理のフローチャートを示す。
次に、図5に従って処理の流れを説明する。
【0025】
アプリケーション109からの送信要求があると、まず、通信ドライバインタフェース部107が、送信要求に含まれるデバイス指定情報により、送信要求に対応するデバイス名を判別する(S1)(S2)。
デバイス指定情報におけるデバイス名が暗号化通信用仮想通信デバイスであった場合、まず、暗号化部105が送信データを暗号化する(S3)。
次に、暗号化プロトコル処理部104が、暗号化したデータをデータ部として、アプリケーションプロトコルヘッダ/トレーラを付与し、フレーム種別のフィールドに、暗号化フレームを示す値を格納する(S4)。
次に、通信ドライバインタフェース部107が、S3、S4で作成した暗号化フレームを送信フレームデータとして、物理通信デバイス名で送信処理を呼び出す(S5)。
【0026】
次に、暗号化を行わない場合の処理の流れを説明する。
図4のS2において、デバイス指定情報におけるデバイス名が暗号化通信用仮想通信デバイスではなかった場合、すなわち、デバイス指定情報に示される通信デバイスが物理通信デバイスであった場合、該当する物理通信デバイス経由でフレームデータを送信する(S6)。
【0027】
図4のS5において、送信処理が呼び出された後は、暗号化を行わない場合と同様に、呼び出された送信処理内で、S1、S2、S6の順に処理が行われ、通信処理部102により暗号化フレームが物理デバイス経由で通信回線に送信される。
【0028】
次に、図7を参照して、サーバ側の受信処理について説明する。
【0029】
図2において、サーバ側が通信回線から要求データを受信すると、通信処理部202を経由し、通信フレーム識別処理部203へ要求データが渡される。
通信フレーム識別処理部203においては、通信フレームの開始位置、終了位置を検出するとともに、フレーム種別を判定する。
フレーム種別が暗号化フレーム以外の場合、当該フレームは、平文フレームとして通信ドライバインタフェース部207から、アプリケーションプロトコル処理部208、アプリケーション209へと順に処理される。
通信フレーム識別処理部203においてフレーム種別を判定したとき、フレーム種別が暗号化フレームであった場合は、当該フレームは、暗号化プロトコル処理部204に渡される。
【0030】
暗号化プロトコル処理部204では、暗号化フレームからデータ部を取り出し、復号部206に渡す。
復号部206では、暗号化プロトコル処理部204から渡されたデータを復号し、暗号化プロトコル処理部204に返す。
暗号化プロトコル処理部204では、復号されたデータをフレームデータとして通信ドライバインタフェース部207に渡す。
ここで、復号されたデータは、例えば、図2に示されるような平文の要求フレームの形式を取っている。
ここまでで、サーバ側において、非暗号化フレームを受信した場合、及び、暗号化フレームを受信した場合のいずれにおいても、通信ドライバインタフェース部207に渡される段階では、クライアント側におけるアプリケーションプロトコル処理部108から通信ドライバインタフェース部107に渡された時点と同じ、平文の要求フレームの形式となっている。
【0031】
サーバ側で、通信ドライバインタフェース部107が要求フレームデータを受け取ると、通信ドライバインタフェース部207は、要求番号を生成し、要求フレームデータに付与するとともに、暗号化、非暗号化を区別する情報(暗号有無識別情報)と対応付けて保存する。
ここで、要求番号の生成方法は任意であるが、たとえば、通信ドライバインタフェース部207が受信した順に連続番号を振っても良い。
また、通信ドライバインタフェース部207で、暗号化、非暗号化の区別をする方法は、例えば、暗号化プロトコル処理部204から受け取った要求フレームを暗号化とみなし、通信フレーム識別処理部203から受け取った要求フレームを非暗号化とみなす方法が考えられる。
あるいは、通信フレーム識別処理部203、または、暗号化プロトコル処理部204から、通信ドライバインタフェース部207に要求フレームを渡す際に、暗号化/非暗号化の区別を示すデータを付与するようにしても良い。
【0032】
図6に通信ドライバインタフェース部207で保存される要求番号と暗号化/非暗号化の区別の対応付けデータの例を示す。
図6においては、要求番号と対応付けられる、暗号化/非暗号化を示すデータは論理型で記述しているが、2者を区別できる数値であれば、どのような組合せであっても良い。
【0033】
このように、通信ドライバインタフェース部107で要求番号を付与された要求フレームデータは、アプリケーションプロトコル処理部208に渡される。
アプリケーションプロトコル処理部208では、受け取った要求フレームに対して、アプリケーションプロトコルの処理を行うと、アプリケーション209に要求データを渡す。
このときのデータ受け渡しの形式は任意であるが、要求データと要求番号は対応付けられた形で渡される。
【0034】
次に、図7にサーバ側受信処理のフローチャートを示す。
図7に従って、サーバ側受信処理の処理手順について説明する。
【0035】
まず、サーバが通信回線からデータを受信し(S11)、通信フレーム識別処理部203がフレームの検出を行う(S12)。
次に、サーバ200では、通信ドライバインタフェース部207が、受信したフレームに要求番号を付与する(S13)。
要求番号の生成方法は任意であるが、受信した順に連続番号を振っても良い。
フレームの検出が行われると、通信フレーム識別処理部203が、そのフレーム内に格納されているフレーム種別を取り出し、暗号化フレームであるかどうかを判定する(S14)。
受信フレームが暗号化フレームの場合は、通信ドライバインタフェース部207が、要求番号に対応付けて暗号化を示す情報を保存する(S15)。
S14で受信したフレームが暗号化フレームではなかった場合、通信ドライバインタフェース部207が、非暗号化を示す情報を要求番号に対応付けて保存する(S18)。
S15、およびS18において保存する、暗号化、非暗号化の情報は、例えば、図6の表のような情報として保存される。
【0036】
S14において、受信したフレームが暗号化フレームであった場合は、S15の暗号化の情報の保存に続いて、暗号化プロトコル処理部204が、受信したフレームからヘッダ、トレーラを取り外してデータ部を取り出し(S16)、復号部106が復号を行う(S17)。
【0037】
次に、サーバ200では、平文として受信した要求フレーム、または、S16、およびS17の処理により暗号化フレームから取り出し、復号した、要求フレームに対して、アプリケーションプロトコル処理部208が、アプリケーションプロトコル処理を行う(S19)。
次に、アプリケーションプロトコル処理部208が、要求フレームから取り出した要求データをアプリケーション209に渡す(S20)。
このとき、アプリケーション209に要求データを受け渡す方法は任意であるが、必ず、要求データとS13で付与した要求番号の対応付けが行われるようにする。
【0038】
次に、サーバ側の応答送信処理について説明する。
図2において、アプリケーション209が、受信した要求を処理すると、応答データを生成する。
応答データは、処理した要求に対応付けられていた要求番号と対応付ける。
応答データは、要求番号と対応付けられた状態で、アプリケーションプロトコル処理部208に渡される。
アプリケーションプロトコル処理部208は、応答データにアプリケーションプロトコルヘッダ、トレーラを付与するなど、アプリケーションプロトコルの処理を行い、応答フレームを生成する。
次に、アプリケーションプロトコル処理部208から、通信ドライバインタフェース部207に生成された応答フレームが渡される。
このとき、応答フレームには、応答データに対応付けられていた要求番号を対応付ける。
通信ドライバインタフェース部207では、応答フレームに対応付けられた要求番号から、暗号化/非暗号化の判定を行う。
【0039】
すなわち、要求時に暗号化フレームとして受信した要求フレームに対応する応答フレームには暗号化を行い、要求時に、平文フレームとして受信した要求フレームに対応する応答フレームには、暗号化は行わない。
暗号化/非暗号化の判定は、要求受信時に保存した、例えば図6の表の様な、要求番号と、暗号化/非暗号化の対応情報により判定する。
図6の例の場合、要求番号:3352に対応付けられた応答フレームは暗号化し、要求番号:3353に対応付けられた応答フレームは暗号化を行わず、要求番号:3354に対応付けられた応答フレームは暗号化を行う。
【0040】
通信ドライバインタフェース部207で、暗号化/非暗号化の判定が行われ、暗号化を行う場合は、応答フレームは、暗号化プロトコル処理部204に渡される。
暗号化プロトコル処理部204では、応答フレームを暗号化部205に渡す。
暗号化部205は、渡された応答フレームを暗号化し、暗号化プロトコル処理部204に返す。
暗号化プロトコル処理部204は、応答フレームが暗号化されたものをデータとし、新たなアプリケーションプロトコルヘッダ、トレーラを付与して、暗号化フレームを生成する。
このとき、暗号化フレーム内のフレーム種別のフィールドには、暗号化フレームを示す値を格納する。
【0041】
暗号化プロトコル処理部204で暗号化フレームが生成されると、生成された暗号化フレームは通信処理部202へ渡す。
通信処理部202は受け取った暗号化フレームを通信回線に送信する。
通信ドライバインタフェース部207で、暗号化/非暗号化判定の際に、暗号化しないと判定された場合は、通信ドライバインタフェース部207は、応答フレームをそのまま、通信処理部202へ渡す。通信処理部202は、通信ドライバインタフェース部207から受け取った応答フレームをそのまま通信回線に送信する。
【0042】
図8に、サーバ側の応答送信処理のフローチャートを示す。
図8に従って、サーバ側の応答送信処理手順について説明する。
【0043】
まず、アプリケーション209で要求が処理されると、応答データを生成する(S21)。
このとき、応答データは、対応する要求データに付与されていた要求番号と対応付ける。
次に、アプリケーションプロトコル処理部208が、生成された応答データに対しアプリケーションプロトコル処理を行い、アプリケーションプロトコルヘッダ/トレーラを付与して、応答フレームを生成する(S22)。
次に、通信ドライバインタフェース部207が、生成された応答フレームに対応付けられた要求番号により暗号化/非暗号化の情報を取得する(S23)。
暗号化/非暗号化の情報は、サーバにおいて要求受信時に保存した、例えば、図6に示す表のような対応付け情報(暗号有無識別情報)から取得する。
次に、通信ドライバインタフェース部207は、取得した暗号化/非暗号化の情報により暗号化を行うか、暗号化を行わないかを判定する(S24)。
暗号化を行う場合は、まず、暗号化部205が、要求フレームを暗号化する(S25)。
次に、暗号化プロトコル処理部204が、要求フレームを暗号化したものをデータとして、新たなアプリケーションプロトコルヘッダ/トレーラを付与する(S26)。このとき、新たに付与するヘッダに含まれるフレーム種別には、暗号化フレームを示す値を格納する。
次に、S25、S26において、暗号化を行い、新たなヘッダトレーラを付与して生成した暗号化フレームを通信処理部202が通信回線に送信する(S27)。
S24において、暗号化を行わないと判定された場合は、S25、S26の処理を行わず、通信処理部202が応答フレームをそのまま通信回線に送信する(S27)。
【0044】
次に、クライアント側の応答受信処理について示す。
図1において、クライアント100が通信回線からデータを受信すると、通信処理部102を経由し、通信フレーム識別処理部103へ受信データが渡される。
通信フレーム識別処理部103においては、通信フレームの開始位置、終了位置を検出するとともに、フレーム種別を判定する。
フレーム種別が暗号化フレーム以外の場合、当該フレームは、平文フレームとして通信ドライバインタフェース部107から、アプリケーションプロトコル処理部108、アプリケーション109へと順に処理される。このとき、通信ドライバインタフェース部107からアプリケーションプロトコル処理部108へは、物理通信デバイス名に対応するインタフェースで通知される。
例えば、物理通信デバイス名でopenし、取得したディスクリプタを指定したread処理のデータとして通知される。
【0045】
通信フレーム識別処理部103においてフレーム種別を判定したとき、フレーム種別が暗号化フレームであった場合は、当該フレームは、暗号化プロトコル処理部104に渡される。
暗号化プロトコル処理部104では、暗号化フレームからデータ部を取り出し、復号部106に渡す。
復号部106では、暗号化プロトコル処理部104から渡されたデータを復号し、暗号化プロトコル処理部104に返す。
暗号化プロトコル処理部104では、復号されたデータをフレームデータとして通信ドライバインタフェース部107に渡す。ここで、復号されたデータは、例えば、図4に示されるような平文の応答フレームの形式を取っている。
復号され、通信ドライバインタフェース部107に渡された応答フレームは、応答フレームが受信された物理通信デバイスに対応する暗号化通信用に用意された仮想通信デバイス名に対応するインタフェースで、アプリケーションプロトコル処理部108に渡される。例えば、仮想デバイス名でopenし取得したディスクリプタを指定したread処理のデータとして渡される。
アプリケーションプロトコル処理部108は、応答フレームを受けると、アプリケーションプロトコル処理を行い、データ部を取り出して、応答データとしてアプリケーション109に渡し、アプリケーション109は応答データを処理する。
【0046】
図9に、クライアント側の応答受信処理のフローチャートを示す。
図9に従って、クライアント側の応答受信処理手順について説明する。
【0047】
クライアント100では、通信処理部102が物理通信デバイスを介して通信回線からデータを受信し(S31)、通信フレーム識別処理部103がフレームの検出を行う(S32)。
フレームの検出が行われると、通信フレーム識別処理部103は、そのフレーム内に格納されているフレーム種別を取り出し、暗号化フレームであるかどうかを判定する(S33)。
暗号化フレームの場合、データ部を取り出し(S34)、復号部106が復号する(S35)。ここで復号したデータは、応答フレームの形式をとっている。
次に、復号して得た応答フレームを、通信ドライバインタフェース部207が、応答フレームが受信された物理デバイスに対応する暗号化通信用に用意された仮想デバイス名のインタフェースに対応する受信フレームとしてアプリケーションプロトコル処理部108に通知する(S37)。
S33で受信したフレームが、暗号化フレームではなかった場合、受信した応答フレームを、物理デバイス名のインタフェースに対応する受信フレームとしてアプリケーションプロトコル処理部108に通知する(S36)。
次に、受信通知を受けたアプリケーションプロトコル処理部108は、アプリケーションプロトコル処理を行い、応答データを取り出す(S38)。
次に、アプリケーションプロトコル処理部108は、取り出した応答データをアプリケーション109に渡す(S39)。
【0048】
以上のように、物理的な通信回線での通信処理を行うためのデバイス名に対応し、暗号化、復号処理を追加する、仮想デバイス名を用意し、アプリケーションが指定するデバイス名によって処理を変えているため、アプリケーションを変更せず、デバイス名を変更するだけで、暗号化通信と平文通信を切り替えて使用することができる。
また、サーバにおいては、通信ドライバで要求フレームと応答フレームを対応付け、暗号化フレームで受信した要求に対する応答フレームは暗号化して、暗号化フレームにして送信し、平文で受信した要求に対する応答は平文で送信するようにしているため、アプリケーションが暗号化/非暗号化を意識する必要が無く、かつ、暗号化/非暗号化の設定を行うことも無く、暗号化通信と非暗号化通信を自動的に切り替えて使用することができる。
【0049】
以上、本実施の形態では、以下の手段を備える暗号化通信クライアント装置について説明した。
(a)アプリケーションが、暗号化用仮想デバイス名と対応付け、通信ドライバインタフェース部にフレーム送信要求を行う手段、
(b)暗号化用仮想デバイス名と対応付けられた送信フレームを暗号化し送信する手段、
(c)フレーム種別により、受信フレームが暗号化フレームか平文フレームかを識別する手段、
(d)暗号化フレームを復号する手段、
(e)暗号化フレームで受信し、復号したデータを暗号化用仮想デバイス名と対応付け、アプリケーションに通知する手段。
【0050】
また、本実施の形態では、以下の手段を備える暗号化通信サーバ装置について説明した。
(a)フレーム種別により、受信フレームが暗号化フレームか平文フレームかを識別する手段、
(b)暗号化フレームを復号する手段、
(c)受信した要求に要求番号を付与する手段、
(d)通信ドライバインタフェース部が要求番号と暗号化フレームで受信した要求か、平文フレームで受信した要求かを対応付け、保存する手段、
(e)通信ドライバインタフェース部が、要求データと要求番号を対応付け、アプリケーションに通知する手段、
(f)通信ドライバインタフェース部が、要求番号と対応付けた応答データをアプリケーションから取得する手段、
(g)通信ドライバインタフェース部が、応答送信時に、対応付けられた要求番号により、暗号化または非暗号化を判定する手段、
(h)送信フレームを暗号化する手段。
【0051】
実施の形態2.
以上の実施の形態1では、通信回線上を送受信するフレームの検出方法については任意であったが、次に、RS−232−Cなどのシリアル通信において、フレームの先頭、および、末尾を特定のコードで検出する場合に、暗号化データとの区別を行う場合の実施の形態を示す。
【0052】
シリアル通信では、7ビットまたは8ビットの文字単位で受信データを検出し、しばしば、伝文のまとまりを、STX、ETXなどに割り当てられている、特殊な文字コードを、先頭、あるいは、末尾に付加して送信することにより示すことがある。
受信側は、これらのフレーム開始コード又はフレーム終了コードを検出することで、1つの伝文の先頭、および終了を検出することが出来る。
平文でシリアル通信を行う場合は、データに英数字などの文字コードを使用することによって、伝文の先頭、および、末尾以外には、STXやETXなどのコードが出現しないようにすることが出来る。しかし、データの暗号化を行った場合、暗号化されたデータの1バイトずつを取った場合、基本的に、00hからFFhの全ての値を取り得るため、暗号化データ中にSTXやETXなどのコードの値と同じ値が出現することがある。
この実施の形態では、このような場合に、フレームの先頭を示すフレーム開始コード、および末尾を表すフレーム終了コードと、暗号化データ中にある確率で出現する、これらのコードと同じ値のデータを区別するための方法、および、その方法を実現するための具体的手段について示す。
【0053】
図10は、この実施の形態における暗号化通信装置を示す構成図である。
図10では、クライアント装置100の構成例として示しているが、サーバ装置200でも同様の構成にて本実施の形態が実現可能である。
【0054】
図10において、101から109は、図1と同様である。
制御コード挿入部110は、制御コードの挿入処理を行う手段である。
より具体的には、通信フレームの送信の際に、制御コード挿入部110は、送信データが暗号化部105により暗号化された場合に、暗号化された暗号化送信データが通信フレーム化される前に、暗号化送信データ中にフレーム開始コード(STX)と同じコードが含まれているか否かを解析し、フレーム開始コード(STX)と同じコードを暗号化送信データから抽出した際に、抽出したコードの直前又は直後の位置にフレーム開始コード(STX)のコピーを挿入する。
また、同様に、制御コード挿入部110は、暗号化送信データ中にフレーム終了コード(ETX)と同じコードが含まれているか否かを解析し、フレーム終了コード(ETX)と同じコードを暗号化送信データから抽出した際に、抽出したコードの直前又は直後の位置にフレーム終了コード(ETX)のコピーを挿入する。
【0055】
また、本実施の形態では、通信フレーム識別処理部103は、フレームを受信した場合に、フレーム開始コード(STX)及びフレーム終了コード(ETX)を抽出する処理を行う。
より具体的には、通信処理部102により受信された通信フレームに含まれるデータの内容を解析し、フレーム開始コード(STX)と同じコードを抽出した際に、フレーム開始コード(STX)と同じコードが単独で出現しているか連続して複数回出現しているかを判別して、フレーム開始コード(STX)を検知する。
また、フレーム終了コード(ETX)と同じコードを抽出した際に、フレーム終了コード(ETX)と同じコードが単独で出現しているか連続して偶数回出現しているか連続して奇数回出現しているかを判別し、単独で出現している場合に、抽出した当該コードをフレーム終了コード(ETX)と識別し、奇数回出現している場合に、最後尾のコードをフレーム終了コード(ETX)と識別し、偶数回出現している場合は、フレーム終了コード(ETX)ではないと識別する。
【0056】
次に、暗号化フレーム送信時の処理について示す。
クライアント側の暗号化要求フレーム送信時、および、サーバ側の暗号化応答フレーム送信時のいずれにおいても、平文の要求フレームあるいは応答フレームの暗号化を行った直後に制御コードの挿入処理を行う。
すなわち、図5においては、S3とS4の間、図8においては、S25とS26の間のそれぞれにおいて、図10に示す暗号化プロトコル処理部104が、暗号化部105に要求フレーム、または応答フレームを渡し、暗号化部105が暗号化プロトコル処理部104に暗号化データを返した直後に、暗号化プロトコル処理部104が制御コード挿入部110に暗号化データを渡し、制御コード挿入処理を行う。
ここで、制御コードとは、STXやETXなどのフレーム検出に使用するコードを示す。
【0057】
図11に、制御コード挿入処理のフローチャートを示す。
図11に従って、制御コード挿入処理の手順について説明する。
【0058】
図11において、STXまたはETXと書いているのは、暗号化データ中に現れるSTXまたはETXのコードと同じ値のデータのことを指しており、フレーム送受信時のフレームの開始および終了を表すコードではない。
【0059】
制御コード挿入処理では、暗号化されたデータを先頭から1バイトずつ調べ、STXまたはETXと同じ値が検出された場合、その直前、または直後に同じ値を1バイト挿入する。
まず、制御コード挿入部110は、暗号化データから1バイトずつ読み出しを行うためのポインタを暗号化データの先頭にセットする(S41)。
次に、制御コード挿入部110は、暗号化データを1バイト読み出す(S42)。
次に、制御コード挿入部110は、読み出した1バイトのデータを調べ、STXのコードと同じ値であれば(S43でYES)、その値1バイト(STX)をバッファに書き出す(S44)。S43でSTXではなく、ETXのコードと同じ値であれば(S45でYES)、その値1バイト(ETX)をバッファに書き出す(S46)。
S43でSTXではなく、S45でETXではなかった場合、何もしない。
次に、S42で読み出した1バイトの値をバッファに書き出す(S47)。
次に、読み出す暗号化データがまだある場合はS42に戻り、読み出す暗号化データが終了の場合は制御コード挿入処理を終了する(S48)。
【0060】
以上のようにして生成した制御コード挿入処理後の暗号化データにおいては、STXまたはETXと同じ値が出現する場合は、必ず、同じ値が偶数バイト連続する構造となっている。
暗号化フレーム送信時のフレーム形式の例を図12に示す。
図12において、フレーム種別、データ長、ダミーコードチェックサムなどの暗号化フレームヘッダ、トレーラの各フィールドは、数字を表す文字コードを使用するなどして、STXやETXのコードと同じ値が出現しないようにする。
このようにすることにより、受信側で受信データにSTXまたはETXの値が単独で出現した場合、本来のフレーム開始、および終了を表すコードとして解釈し、STXまたはETXが偶数回連続で出現したときは暗号化データ中の値であると解釈することが出来る。
なお、この例では、分かりやすさのため、ダミーコードを挿入するようにしているが、ダミーコードの挿入は行わず、ETXが奇数回連続した場合は最後の1つがフレームの終了を示すETXであると解釈するようにしても良い。
【0061】
次に、サーバ側における暗号化要求フレーム受信時、または、クライアント側における暗号化応答フレーム受信処理におけるフレーム検出処理、および、制御コード除去処理について示す。
フレーム検出処理および、制御コード除去処理は、図10に示す通信フレーム識別処理部103で行う。
順序としては、サーバ側の要求受信処理においては、図7のS12におけるフレーム検出の処理の中で、また、クライアント側の応答受信処理においては、図9のS32におけるフレーム検出の処理の中でそれぞれ実行する。
【0062】
図13及び図14に、フレーム検出および制御コード除去処理の手順を示すフローチャートを示す。
図13及び図14に従ってフレーム検出および制御コード除去処理の手順について説明する。
【0063】
なお、図13及び図14において、STXまたはETXと書いているのは、STX及びETXそのものである場合の他、暗号化データ中に現れるSTXまたはETXのコードと同じ値のデータである場合もあり、フレーム送受信時のフレームの開始および終了を表すコードとは限らない。
【0064】
まず、通信フレーム識別処理部103は、STX重複判定フラグ、ETX重複判定フラグをオフに設定する(S51)。
次に、通信フレーム識別処理部103は、1バイトの受信を行う(S52)。
次に、通信フレーム識別処理部103は、受信した1バイトがSTXか判定し、STXのコードと同じ値ではない場合は、S52に戻る(S53)。
S53で受信した1バイトの値がSTXのコードと同じ値であれば、さらに1バイト受信する(S54)。
次に、受信した1バイトを判定し、STXのコードと同じ値であれば、S52に戻る(S55)。
一方、S55でNOの場合、すなわち受信した1バイトがSTXのコードと同じ値でなければ、STXをバッファに書込み(S56)、さらに、受信した値1バイトをバッファに書き込む(S57)。
この場合は、フレーム開始フラグとしてのSTXを抽出したことになる。
【0065】
次に、通信フレーム識別処理部103は、さらに1バイトを受信する(S58)。
次に、受信した1バイトがSTXかどうかを判定する(S59)。
S59で、受信した1バイトがSTXであった場合、次に、STX重複判定フラグがオンかどうかを判定する(S60)。
STX重複判定フラグは、STXコードと同じ値を奇数個連続受信したときにオンとし、偶数個連続で受信したときオフとする。
S60で、STX重複判定フラグがオフであれば、通信フレーム識別処理部103は、STX重複判定フラグをオンに設定し(S61)、受信した1バイト、すなわちSTXコードと同じ値をバッファに書き込み、S58に戻る(S62)。
S60でSTX重複判定フラグがオンであれば、通信フレーム識別処理部103は、STX重複判定フラグをオフし、S58に戻る(S63)。
【0066】
S59で、受信した1バイトがSTXではない場合、次に、通信フレーム識別処理部103は、受信した1バイトがETXかどうかを判定する(S64)。
S64で、受信した1バイトがETXであれば、次に、ETX重複判定フラグがオンかオフかを判定する(S65)。
ETX重複判定フラグは、STX重複判定フラグと同様に、ETXコードと同じ値を奇数回連続受信したときにオンとし、偶数回連続して受信したときにオフとする。
S65で、ETX重複判定フラグがオフの場合は、通信フレーム識別処理部103は、ETX重複判定フラグをオンとし(S66)、受信した1バイト、すなわちETXコードと同じ値をバッファに書き込み、S58に戻る(S67)。
S65でETX重複判定フラグがオンの場合は、通信フレーム識別処理部103は、ETX重複判定フラグをオフし(S68)、S58に戻る。
【0067】
S64において、受信した1バイトはETXコードの値と異なる場合は、通信フレーム識別処理部103は、次にETX重複判定フラグがオンかオフかを判定する(S69)。
S69において、ETX重複判定フラグがオフの場合、通信フレーム識別処理部103は、STX重複判定フラグをオフし(S70)、受信した1バイトをバッファに書き込み(S71)、S58に戻る。
【0068】
S69において、ETX重複判定フラグがオンの場合には、通信フレーム識別処理部103は、ETX重複判定フラグをオフする(S72)。
この場合は、ETX重複判定フラグがオンとなった後に抽出した1バイトがETXと異なるので、この1バイトのデータはフレーム終了コードであるETXの直後のデータであり、図12に示すようにチェックサムである。
このため、通信フレーム識別処理部103は、次に、チェックサムフィールドの処理を行う(S73)。チェックサムフィールドの処理は、例えば、既に受信した1バイトを含めて、チェックサムフィールドのサイズ分のデータを読み込み、バッファに書き出す。
次に、通信フレーム識別処理部103は、バッファに蓄積されたバイト列をフレームデータとして、上位に渡し(S74)、S52に戻る。
ここで、上位とは、図10において、暗号化フレームの場合は、暗号化プロトコル処理部104、平文フレームの場合は、通信ドライバインタフェース部107となる。
どちらに渡すかは、フレーム内のフレーム種別により判定する。
【0069】
この実施の形態においては、暗号化データとの区別を行うコードをSTXおよびETXのみで示したが、ENQやそれ以外のフロー制御等に使用するコードに適用しても良い。
例えば、英字、数字、記号の文字を表す以外の特殊なコードの全てを対象としてもよい。
また、この実施の形態では、重複判定フラグを対象コードごとに分けたが、1バイト前の受信データを保存し、その情報と組み合わせて、全対象コード共通の重複判定フラグとしても良い。
【0070】
以上のように、フレーム検出に使用する特定のコードについて、暗号化データ内でその特定コードと同じ値が出現する場合には、送信側で、直前、あるいは直後に同じコードを挿入することにより、必ず、偶数回連続するようにしており、また、フレーム検出のためのコードは、隣接するフィールドで同じ値を使用しないようにすることにより、必ず単独で出現するようにしているため、フレームの送信途中で接続した場合なども含めて、受信側で暗号化データとフレーム検出用コードを区別することができる。
【0071】
以上、本実施の形態では、以下の手順を備える暗号化通信クライアント装置について説明した。
(a)送信フレームを暗号化したデータから、特定のコードを検出し、その直前、または直後に同じコードを挿入する手段、
(b)受信するバイト列中にフレーム開始コードが単独で出現するか、複数回連続で出現するかを判定することにより、フレームの先頭位置を検出する手段、
(c)フレーム先頭位置検出後に、フレーム終了コードが単独で出現するか、複数回連続で出現するかを判定することにより、フレーム終了位置を検出する手段。
【0072】
また、本実施の形態では、以下の手順を備える暗号化通信サーバ装置について説明した。
(a)送信フレームを暗号化したデータから、特定のコードを検出し、その直前、または直後に同じコードを挿入する手段、
(b)受信するバイト列中にフレーム開始コードが単独で出現するか、複数回連続で出現するかを判定することにより、フレームの先頭位置を検出する手段、
(c)フレーム先頭位置検出後に、フレーム終了コードが単独で出現するか、複数回連続で出現するかを判定することにより、フレーム終了位置を検出する手段。
【0073】
最後に、実施の形態1及び2に示したクライアント装置100及びサーバ装置200のハードウェア構成例について説明する。
図15は、実施の形態1及び2に示すクライアント装置100及びサーバ装置200のハードウェア資源の一例を示す図である。
なお、図15の構成は、あくまでもクライアント装置100及びサーバ装置200のハードウェア構成の一例を示すものであり、クライアント装置100及びサーバ装置200のハードウェア構成は図15に記載の構成に限らず、他の構成であってもよい。
【0074】
図15において、クライアント装置100及びサーバ装置200は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
【0075】
通信ボード915は、ネットワークに接続されている。例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続されている。
【0076】
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
【0077】
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
【0078】
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
クライアント装置100及びサーバ装置200の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
【0079】
上記プログラム群923には、実施の形態1及び2の説明において「〜部」、「〜手段」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
【0080】
ファイル群924には、実施の形態1及び2の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の検出」、「〜の抽出」、「〜の取得」、「〜の挿入」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1及び2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0081】
また、実施の形態1及び2の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1及び2の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1及び2の「〜部」の手順や方法をコンピュータに実行させるものである。
【0082】
このように、実施の形態1及び2に示すクライアント装置100及びサーバ装置200は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【0083】
【図1】実施の形態1に係るクライアント装置の構成例を示す図。
【図2】実施の形態1に係るサーバ装置の構成例を示す図。
【図3】実施の形態1に係る要求フレームのフレーム構造例を示す図。
【図4】実施の形態1に係る応答フレームのフレーム構造例を示す図。
【図5】実施の形態1に係るクライアント装置の送信時の動作例を示すフローチャート図。
【図6】実施の形態1に係る要求番号及び暗号/非暗号の区別情報の例を示す図。
【図7】実施の形態1に係るサーバ装置の受信時の動作例を示すフローチャート図。
【図8】実施の形態1に係るサーバ装置の送信時の動作例を示すフローチャート図。
【図9】実施の形態1に係るクライアント装置の受信時の動作例を示すフローチャート図。
【図10】実施の形態2に係るクライアント装置の構成例を示す図。
【図11】実施の形態2に係るクライアント装置及びサーバ装置の制御コード挿入処理の際の動作例を示すフローチャート図。
【図12】実施の形態2に係る暗号化フレームのフレーム形式の例を示す図。
【図13】実施の形態2に係るクライアント装置及びサーバ装置のフレーム検出および制御コード除去処理の際の動作例を示すフローチャート図。
【図14】実施の形態2に係るクライアント装置及びサーバ装置のフレーム検出および制御コード除去処理の際の動作例を示すフローチャート図。
【図15】実施の形態1及び2に係るクライアント装置及びサーバ装置のハードウェア構成例を示す図。
【符号の説明】
【0084】
100 クライアント装置、102 通信処理部、103 通信フレーム識別処理部、104 暗号化プロトコル処理部、105 暗号化部、106 復号部、107 通信ドライバインタフェース部、108 アプリケーションプロトコル処理部、109 アプリケーション、200 サーバ装置、202 通信処理部、203 通信フレーム識別処理部、204 暗号化プロトコル処理部、205 暗号化部、206 復号部、207 通信ドライバインタフェース部、208 アプリケーションプロトコル処理部、209 アプリケーション。

【特許請求の範囲】
【請求項1】
送信データの送信に用いられる通信デバイスを指定するデバイス指定情報を入力し、入力したデバイス指定情報において指定されている通信デバイスが物理通信デバイス及び仮想通信デバイスのいずれであるかを判別し、前記デバイス指定情報において指定されている通信デバイスが仮想通信デバイスである場合に、当該仮想通信デバイスに対応付けられている物理通信デバイスを特定するデバイス判別部と、
前記デバイス判別部により前記デバイス指定情報において仮想通信デバイスが指定されていると判別された場合に、前記送信データを暗号化して暗号化送信データとする暗号化部と、
前記暗号化部による暗号化が行われていない場合に、前記デバイス指定情報において指定されている物理通信デバイスを用いて前記送信データを送信し、前記暗号化部による暗号化が行われている場合に、前記デバイス判別部により特定された物理通信デバイスを用いて前記暗号化送信データを送信する通信処理部とを有することを特徴とする通信装置。
【請求項2】
前記通信処理部は、
前記送信データに対する応答データを物理通信デバイスを用いて受信し、
前記通信装置は、更に、
前記応答データを解析して、前記応答データが暗号化されているか否かを判別する応答データ判別部と、
前記応答データ判別部により前記応答データが暗号化されていると判別された場合に、前記応答データを復号する復号部とを有し、
前記デバイス判別部は、
前記復号部による前記応答データの復号が行われていない場合に、前記通信処理部が前記応答データを受信した物理通信デバイスを通知する物理通信デバイス通知情報を生成し、前記復号部による前記応答データの復号が行われている場合に、前記通信処理部が前記応答データを受信した物理通信デバイスに対応付けられている仮想通信デバイスを特定し、特定した仮想通信デバイスを通知する仮想通信デバイス通知情報を生成することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記デバイス判別部は、
アプリケーションプログラムにより指定された通信デバイスが示されるデバイス指定情報を入力することを特徴とする請求項1又は2に記載の通信装置。
【請求項4】
前記デバイス判別部は、
前記通信処理部が前記応答データを受信した物理通信デバイスをアプリケーションプログラムに通知する物理通信デバイス通知情報を生成し、
特定した仮想通信デバイスをアプリケーションプログラムに通知する仮想通信デバイス通知情報を生成することを特徴とする請求項2に記載の通信装置。
【請求項5】
前記通信処理部は、
フレーム開始コードの後に送信データが含まれる通信フレームを送信し、
前記通信装置は、更に、
前記送信データが前記暗号化部により暗号化された場合に、暗号化送信データが通信フレーム化される前に、前記暗号化送信データ中に前記フレーム開始コードと同じコードが含まれているか否かを解析し、前記フレーム開始コードと同じコードを前記暗号化送信データから抽出した際に、抽出したコードの直前又は直後の位置に前記フレーム開始コードのコピーを挿入する制御コード挿入部を有することを特徴とする請求項1〜4のいずれかに記載の通信装置。
【請求項6】
前記通信処理部は、
フレーム終了コードの前に送信データが含まれる通信フレームを送信し、
前記通信装置は、更に、
前記送信データが前記暗号化部により暗号化された場合に、暗号化送信データが通信フレーム化される前に、前記暗号化送信データ中に前記フレーム終了コードと同じコードが含まれているか否かを解析し、前記フレーム終了コードと同じコードを前記暗号化送信データから抽出した際に、抽出したコードの直前又は直後の位置に前記フレーム終了コードのコピーを挿入する制御コード挿入部を有することを特徴とする請求項1〜5のいずれかに記載の通信装置。
【請求項7】
前記通信処理部は、
フレーム開始コードの後に受信データが含まれる通信フレームを受信し、
前記通信装置は、更に、
前記通信処理部により受信されたデータの内容を解析し、前記フレーム開始コードと同じコードを抽出した際に、前記フレーム開始コードと同じコードが単独で出現しているか連続して複数回出現しているかを判別して、前記フレーム開始コードを検知する通信フレーム識別処理部とを有することを特徴とする請求項1〜6のいずれかに記載の通信装置。
【請求項8】
前記通信処理部は、
フレーム終了コードの前に受信データが含まれる通信フレームを送信し、
前記通信装置は、更に、
前記通信処理部により受信されたデータの内容を解析し、前記フレーム終了コードと同じコードを抽出した際に、前記フレーム終了コードと同じコードが単独で出現しているか連続して偶数回出現しているか連続して奇数回出現しているかを判別して、前記フレーム終了コードを検知する通信フレーム識別処理部とを有することを特徴とする請求項1〜7のいずれかに記載の通信装置。
【請求項9】
所定の処理を要求する要求データをクライアント装置から受信するとともに、前記要求データに対する応答データを前記クライアント装置に対して送信する通信処理部と、
前記要求データが暗号化されているか否かを判別する要求データ判別部と、
前記要求データ判別部により前記要求データが暗号化されていると判別された場合に、前記要求データを復号する復号部と、
前記要求データに要求番号を付与するとともに、前記要求番号に対して前記要求データが暗号化されていたか否かを表す暗号有無識別情報を設定し、前記要求データに対する応答データが生成された際に、前記応答データが対応する要求データに付与されている要求番号の通知を受け、通知を受けた要求番号に対する暗号有無識別情報に基づき前記応答データに対応する要求データが暗号化されていたか否かを判断する暗号有無判断部と、
前記暗号有無判断部により前記応答データに対応する要求データが暗号化されていたと判断された場合に、前記応答データを暗号化する暗号化部とを有することを特徴とするサーバ装置。
【請求項10】
前記通信処理部は、
フレーム開始コードの後に要求データが含まれる通信フレームを受信し、
前記サーバ装置は、更に、
前記通信処理部により受信されたデータの内容を解析し、前記フレーム開始コードと同じコードを抽出した際に、前記フレーム開始コードと同じコードが単独で出現しているか連続して複数回出現しているかを判別して、前記フレーム開始コードを検知する通信フレーム識別処理部とを有することを特徴とする請求項9に記載のサーバ装置。
【請求項11】
前記通信処理部は、
フレーム終了コードの前に要求データが含まれる通信フレームを受信し、
前記サーバ装置は、更に、
前記通信処理部により受信されたデータの内容を解析し、前記フレーム終了コードと同じコードを抽出した際に、前記フレーム終了コードと同じコードが単独で出現しているか連続して偶数回出現しているか連続して奇数回出現しているかを判別して、前記フレーム終了コードを検知する通信フレーム識別処理部とを有することを特徴とする請求項9又は10に記載のサーバ装置。
【請求項12】
前記通信処理部は、
フレーム開始コードの後に応答データが含まれる通信フレームを送信し、
前記サーバ装置は、更に、
前記応答データが前記暗号化部により暗号化された場合に、暗号化された暗号化応答データが通信フレーム化される前に、前記暗号化応答データ中に前記フレーム開始コードと同じコードが含まれているか否かを解析し、前記フレーム開始コードと同じコードを前記暗号化応答データから抽出した際に、抽出したコードの直前又は直後の位置に前記フレーム開始コードのコピーを挿入する制御コード挿入部を有することを特徴とする請求項9〜11のいずれかに記載のサーバ装置。
【請求項13】
前記通信処理部は、
フレーム終了コードの前に応答データが含まれる通信フレームを送信し、
前記サーバ装置は、更に、
前記応答データが前記暗号化部により暗号化された場合に、暗号化応答データが通信フレーム化される前に、前記暗号化応答データ中に前記フレーム終了コードと同じコードが含まれているか否かを解析し、前記フレーム終了コードと同じコードを前記暗号化応答データから抽出した際に、抽出したコードの直前又は直後の位置に前記フレーム終了コードのコピーを挿入する制御コード挿入部を有することを特徴とする請求項9〜12のいずれかに記載のサーバ装置。
【請求項14】
フレーム開始コードの後に送信データが含まれる通信フレームを送信する通信処理部と、
前記送信データが通信フレーム化される前に、前記送信データ中に前記フレーム開始コードと同じコードが含まれているか否かを解析し、前記フレーム開始コードと同じコードを前記送信データから抽出した際に、抽出したコードの直前又は直後の位置に前記フレーム開始コードのコピーを挿入する制御コード挿入部とを有することを特徴とする通信装置。
【請求項15】
前記通信処理部は、
送信データの後にフレーム終了コードが含まれる通信フレームを送信し、
前記コード挿入部は、
前記送信データが通信フレーム化される前に、前記送信データ中に前記フレーム終了コードと同じコードが含まれているか否かを解析し、前記フレーム終了コードと同じコードを前記送信データから抽出した際に、抽出したコードの直前又は直後の位置に前記フレーム終了コードのコピーを挿入することを特徴とする請求項14に記載の通信装置。
【請求項16】
フレーム開始コードの後に受信データが含まれる通信フレームを受信する通信処理部と、
前記通信処理部により受信されたデータの内容を解析し、前記フレーム開始コードと同じコードを抽出した際に、前記フレーム開始コードと同じコードが単独で出現しているか連続して複数回出現しているかを判別して、前記フレーム開始コードを検知する通信フレーム識別処理部とを有することを特徴とする通信装置。
【請求項17】
前記通信フレーム識別処理部は、
前記フレーム開始コードと同じコードが単独で出現している場合に、抽出した当該コードを前記フレーム開始コードと識別することを特徴とする請求項16に記載の通信装置。
【請求項18】
前記通信処理部は、
受信データの後にフレーム終了コードが含まれる通信フレームを受信し、
前記通信フレーム識別処理部は、
前記通信処理部により受信されたデータの内容を解析し、前記フレーム終了コードと同じコードを抽出した際に、前記フレーム終了コードと同じコードが単独で出現しているか連続して偶数回出現しているか連続して奇数回出現しているかを判別して、前記フレーム終了コードを検知することを特徴とする請求項16又は17に記載の通信装置。
【請求項19】
前記通信フレーム識別処理部は、
前記フレーム終了コードと同じコードが単独で出現している場合に、抽出した当該コードを前記フレーム終了コードと識別し、
前記フレーム終了コードと同じコードが連続して奇数回出現している場合に、最後尾のコードを前記フレーム終了コードと識別することを特徴とする請求項18に記載の通信装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2009−225108(P2009−225108A)
【公開日】平成21年10月1日(2009.10.1)
【国際特許分類】
【出願番号】特願2008−67437(P2008−67437)
【出願日】平成20年3月17日(2008.3.17)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】