(57)【特許請求の範囲】
【請求項１】
Windowsプラットフォームを用いて制御バスドライバと通信カードとの間で制御通信パケットを伝送する制御バスシステムにおいて、
前記制御バスドライバは一方を送信部として他方を受信部とするプロトコルドライバとネットワークドライバとで構成され、
前記送信部にはWindowsフレームに送信元を識別するための制御通信フラグとタイムスタンプを生成して付加する手段が設けられ、
前記受信部には受信したWindowsフレームから制御通信フラグと送信時刻情報を抽出して送信元の正当性を判断する手段が設けられ、
前記制御通信フラグは、前記制御通信パケットが格納されているバッファの先頭アドレスであることを特徴とする制御バスシステム。
【請求項２】
前記タイムスタンプは、前記制御通信パケットの送信時刻を表すことを特徴とする請求項１に記載の制御バスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御バスシステムに関し、詳しくは、プロセス制御分野で広く用いられている分散制御システムのＨＭＩ(Human Machine Interface：ヒューマン・マシン・インターフェース）ソフトウェアのプラットフォームとして採用されているMicrosoft社のWindows（登録商標）プラットフォーム上に実装される制御バスドライバへのなりすましなどによる不正アクセスに対するセキュリティ対策に関するものである。
【背景技術】
【０００２】
プロセス制御分野で用いられる分散制御システムのＨＭＩソフトウェアのプラットフォームとして、Microsoft社のWindowsプラットフォームが採用されることも多い。
【０００３】
図８は、Windowsプラットフォームが採用された従来の制御バスシステムの一例を示すブロック図である。図８において、制御通信アプリケーション１０から制御バス上のコントローラや他の機器に対して送信される制御通信パケットＰ１は、実線で示すようにWindowsプラットフォーム上で動作する制御バスドライバ２０を経由し、制御バスに接続された通信カード３０へ送信される。なお、制御バスドライバ２０は、Windowsプラットフォームにおけるプロトコルドライバ２１とネットワークドライバ２２とで構成されている。
【０００４】
パケットキャプチャツール４０は、一般的に公開されているsnifferやwiresharkなどのソフトウェアインタフェースであり、パケットキャプチャアプリケーション４１とパケットキャプチャプロトコルドライバ４２とで構成されている。
【０００５】
このように構成されるパケットキャプチャツール４０は、制御バスドライバ２０内のパケットＰ１を、１点鎖線で示すようにキャプチャパケットＰ２としてキャプチャ(盗聴)することができる。そしてさらに、キャプチャパケットＰ２を、破線で示すように再送パケットＰ３として制御バスネットワークドライバ２２に対してなりすまして再送することもできる。
【０００６】
図９は図８の制御バスドライバ２０内部におけるパケットの流れ説明図であり、（Ａ）は制御バスプロトコルドライバ２１による本来の送信系統を示し、（Ｂ）はパケットキャプチャツール４０によるキャプチャ再送系統を示している。
【０００７】
（Ａ）に示す制御バスプロトコルドライバ２１による本来の送信系統において、制御バスプロトコルドライバ２１は、制御通信パケットをWindowsフレームに取り込んで制御バスネットワークドライバ２２に送信する。制御バスネットワークドライバ２２は、制御バスプロトコルドライバ２１から受信したWindowsフレームから制御通信パケットを抜き出して、通信カード３０に送信するための制御バスフレームに取り込む。
【０００８】
（Ｂ）に示すキャプチャ再送系統において、パケットキャプチャプロトコルドライバ４２は、パケットキャプチャアプリケーション４１から入力される制御通信パケットをWindowsフレームに取り込んで制御バスネットワークドライバ２２に送信する。制御バスネットワークドライバ２２は、パケットキャプチャプロトコルドライバ４２から受信したWindowsフレームから制御通信パケットを抜き出し、（Ａ）の場合と同様に、通信カード３０に送信するための制御バスフレームに取り込む。
【０００９】
特許文献１には、プラント制御システムの操作性とセキュリティ性を両立可能なユーザ認証方法および装置などに関する技術が記載されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−１９５６２１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、図８に示す従来の制御バスシステムでは、一般的に公開されているパケットキャプチャツールを使用すれば、誰でも制御通信パケットをキャプチャできるとともに、キャプチャした制御通信パケットをなりすまして再送することもでき、さらに、キャプチャした制御通信パケットをなりすまして再送するのにあたって制御通信パケットの内容を変更することもできるので、制御バスのセキュリティを確保することができない。
【００１２】
本発明は、このような課題を解決するものであり、その目的は、Windowsプラットフォームを用いた制御バスシステムにおける正当な送信元以外のなりすましなどの不正アクセスに対するセキュリティ対策を実現することにある。
【課題を解決するための手段】
【００１３】
このような課題を解決するために、請求項１の発明は、
Windowsプラットフォームを用いて制御バスドライバと通信カードとの間で制御通信パケットを伝送する制御バスシステムにおいて、
前記制御バスドライバは一方を送信部として他方を受信部とするプロトコルドライバとネットワークドライバとで構成され、
前記送信部にはWindowsフレームに送信元を識別するための制御通信フラグとタイムスタンプを生成して付加する手段が設けられ、
前記受信部には受信したWindowsフレームから制御通信フラグと送信時刻情報を抽出して送信元の正当性を判断する手段が設けられ、
前記制御通信フラグは、前記制御通信パケットが格納されているバッファの先頭アドレスであることを特徴とする。
【００１５】
請求項２の発明は、請求項１に記載の制御バスシステムにおいて、
前記タイムスタンプは、前記制御通信パケットの送信時刻を表すことを特徴とする。
【発明の効果】
【００１６】
これらの構成により、Windowsプラットフォームを用いた制御バスシステムにおいて、正当な送信元以外の外部から不正アクセスによる制御通信パケットを送信できない仕組みが実現できる。
【図面の簡単な説明】
【００１７】
【図１】本発明で用いる制御バスドライバ２０の一実施例を示すブロック図である。
【図２】図１の動作処理の流れを説明するフローチャートである。
【図３】図１の制御バスドライバ２０内部におけるパケットの流れ説明図である。
【図４】本発明の他の実施形態にかかる制御バスシステムの構成図である。
【図５】本発明で用いる制御バスドライバ２０の他の実施例を示すブロック図である。
【図６】図５の動作処理の流れを説明するフローチャートである。
【図７】図５の制御バスドライバ２０内部におけるパケットの流れ説明図である。
【図８】Windowsプラットフォームが採用された従来の制御バスシステムの一例を示すブロック図である。
【図９】図８の制御バスドライバ２０内部におけるパケットの流れ説明図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について詳細に説明する。図１は、本発明で用いる制御バスドライバ２０の一実施例を示すブロック図である。図１において、制御バスドライバ２０の制御バスプロトコルドライバ２１は、制御通信パケット生成部２１ａ、制御通信フラグ生成部２１ｂ、タイムスタンプ生成部２１ｃ、Windowsフレーム編集部２１ｄ、Windowsフレーム送信部２１ｅなどで構成されている。
【００１９】
そして、制御バスネットワークドライバ２２は、Windowsフレーム受信部２２ａ、制御通信パケット抽出部２２ｂ、制御通信フラグ確認部２２ｃ、タイムスタンプ確認部２２ｄ、制御バスフレーム編集部２２ｅ、制御バスフレーム送信部２２ｆなどで構成されている。
【００２０】
制御バスプロトコルドライバ２１において、制御通信パケット生成部２１ａは、通信カード３０に送信すべき制御通信パケットを生成してWindowsフレーム編集部２１ｄに出力する。
【００２１】
制御通信フラグ生成部２１ｂは、送信元を識別するための制御通信フラグとして、制御通信パケットが格納されるバッファの先頭アドレスを生成し、Windowsフレーム編集部２１ｄに出力する。
【００２２】
タイムスタンプ生成部２１ｃは、タイムスタンプとして、Windowsフレーム送信部２１ｅからWindowsフレームが送信される時刻情報を生成し、Windowsフレーム編集部２１ｄに出力する。
【００２３】
Windowsフレーム編集部２１ｄは、制御通信パケット生成部２１ａから入力される制御通信パケット、制御通信フラグ生成部２１ｂから入力される制御通信フラグおよびタイムスタンプ生成部２１ｃから入力されるタイムスタンプに基づき、内部に制御通信を判別するための制御通信フラグと制御バスプロトコルドライバ２１からのWindowsフレームの送信時刻を示す時刻情報としてのタイムスタンプを有する所定のデータ形式のWindowsフレームを編集作成する。
【００２４】
Windowsフレーム送信部２１ｅは、Windowsフレーム編集部２１ｄで編集作成された所定のデータ形式のWindowsフレームを制御バスネットワークドライバ２２に送信する。
【００２５】
制御バスネットワークドライバ２２において、Windowsフレーム受信部２２ａは、Windowsフレーム送信部２１ｅから送信されたWindowsフレームを受信する。
【００２６】
制御通信パケット抽出部２２ｂは、Windowsフレーム受信部２２ａで受信したWindowsフレームから送信元を識別するための制御通信パケットを抽出する。
【００２７】
制御通信フラグ確認部２２ｃは、Windowsフレーム受信部２２ａで受信したWindowsフレームから制御通信フラグを抽出し、そのフラグの値が制御通信パケットが格納されているバッファの先頭アドレスであるか否かのチェックを行う。フラグの値がバッファの先頭アドレスの場合には、正当な送信元である制御バスプロトコルドライバ２１からのパケットと判断して以降の送信処理を続行実施するが、先頭アドレス以外の値の場合には、制御バスプロトコルドライバ２１以外の不正アクセスにより送信されたWindowsフレームと判断して受信したWindowsフレームを破棄する。
【００２８】
タイムスタンプ確認部２２ｄは、Windowsフレーム受信部２２ａで受信したWindowsフレームからタイムスタンプを抽出し、その時刻情報に基づき、受信したWindowsフレームが、制御バスプロトコルドライバ２１から制御バスネットワークドライバ２２への通知に想定される最大遅延時間以内のものかを確認判断して、最大遅延時間以上経過したWindowsフレームについては正当な送信元以外の不正アクセスにより送信されたWindowsフレームと判断して受信したWindowsフレームを破棄する。
【００２９】
制御バスフレーム編集部２２ｅは、制御通信パケット抽出部２２ｂで抽出された制御通信パケット、制御通信フラグ確認部２２ｃにおける制御通信フラグの確認結果およびタイムスタンプ確認部２２ｄにおけるタイムスタンプの確認結果に基づいて、制御通信パケットを通信カード３０に送信するための所定のデータ形式の制御バスフレームを編集作成する。
【００３０】
制御バスフレーム送信部２２ｆは、制御バスフレーム編集部２２ｅで編集作成された所定のデータ形式の制御バスフレームを通信カード３０に送信する。
【００３１】
図２は図１の動作処理の流れを説明するフローチャートであり、（Ａ）は制御バスプロトコルドライバ２１における動作処理の流れを示し、（Ｂ）は制御バスネットワークドライバ２２における動作処理の流れを示している。
【００３２】
（Ａ）に示す制御バスプロトコルドライバ２１の動作処理の流れにおいて、制御通信フラグ生成部２１ｂは、制御通信フラグとしてバッファの先頭アドレスをセットして（ステップＳ１）、Windowsフレームを編集するWindowsフレーム編集部２１ｄに出力する。
【００３３】
タイムスタンプ生成部２１ｃは、Windowsフレーム編集部２１ｄで編集されたWindowsフレームがWindowsフレーム送信部２１ｅから送信される時刻情報を正当な送信元からのタイムスタンプ情報として生成し（ステップＳ２）、Windowsフレームを編集するWindowsフレーム編集部２１ｄに出力する。
【００３４】
Windowsフレーム送信部２１ｅは、制御通信パケット生成部２１ａで生成された制御通信パケットと制御通信フラグ生成部２１ｂで生成された制御通信フラグとタイムスタンプ生成部２１ｃで生成されたタイムスタンプに基づきWindowsフレーム編集部２１ｄで編集された所定の形態のWindowsフレームを、制御バスネットワークドライバ２２に対して送信する（ステップＳ３）。
【００３５】
（Ｂ）に示す制御バスネットワークドライバ２２の動作処理の流れにおいて、制御通信フラグ確認部２２ｃは、Windowsフレーム受信部２２ａで受信したWindowsフレームから抽出した制御通信フラグの値が、制御通信パケットが格納されているバッファの先頭アドレスであるか否かのチェックを行う（ステップＳ１）。
【００３６】
フラグの値がバッファの先頭アドレスの場合には、正当な送信元である制御バスプロトコルドライバ２１からのパケットと判断してステップＳ２のタイムスタンプ確認部２２ｄにおけるタイムスタンプの正当性確認処理に移行する。
【００３７】
タイムスタンプ確認部２２ｄは、Windowsフレーム受信部２２ａで受信したWindowsフレームから抽出したタイムスタンプの時刻情報に基づき、受信したWindowsフレームが、制御バスプロトコルドライバ２１から制御バスネットワークドライバ２２への通知に想定される最大遅延時間以内のものかを確認判断し（ステップＳ２）、最大遅延時間以内であれば正当な送信元からのWindowsフレームと判断して制御バスフレーム編集部２２ｅで所定のデータ形式の制御バスフレームを編集作成して制御バスフレーム送信部２２ｆを介して通信カード３０に送信するステップＳ３の一連の送信処理に移行する。
【００３８】
ステップＳ１における制御通信フラグの値が制御通信パケットが格納されているバッファの先頭アドレスではなかった場合やステップＳ２におけるタイムスタンプが想定される最大遅延時間を超えている場合には、正当な送信元である制御バスプロトコルドライバ２１以外の不正アクセスにより送信されたWindowsフレームと判断して、受信した制御通信パケットを含むWindowsフレームを破棄する（ステップＳ４）。
【００３９】
図３は図１の制御バスドライバ２０内部におけるパケットの流れ説明図であり、（Ａ）は制御バスプロトコルドライバ２１による本来の送信系統を示し、（Ｂ）はパケットキャプチャツール４０によるキャプチャ再送系統を示している。
【００４０】
（Ａ）に示す制御バスプロトコルドライバ２１による本来の送信系統において、制御バスプロトコルドライバ２１は、制御通信パケット生成部２１ａで生成された制御通信パケットの他に、制御通信フラグ生成部２１ｂで生成された所定の制御通信フラグおよびタイムスタンプ生成部２１ｃで生成された所定のタイムスタンプをWindowsフレームに取り込んで制御バスネットワークドライバ２２に送信する。
【００４１】
制御バスネットワークドライバ２２は、制御バスプロトコルドライバ２１から受信したWindowsフレームから制御通信パケットを抜き出して通信カード３０に送信するための制御バスフレームに取り込むのにあたり、Windowsフレーム受信部２２ａで受信したWindowsフレームから抽出した制御通信フラグの値が制御通信パケットが格納されているバッファの先頭アドレスであるか否かのチェックと、Windowsフレーム受信部２２ａで受信したWindowsフレームから抽出したタイムスタンプの時刻情報が想定される最大遅延時間以内のものかについての確認判断を行う。
【００４２】
そして、両者のデータが正当な値であることを確認できた場合にのみ、制御バスフレームの編集を行い、編集された制御バスフレームを制御バスフレーム送信部２２ｆを介して通信カード３０に送信する。
【００４３】
これに対し、（Ｂ）に示すキャプチャ再送系統において、パケットキャプチャプロトコルドライバ４２には、制御バスネットワークドライバ２２の制御通信フラグ生成部２１ｂおよびタイムスタンプ生成部２１ｃと同等な機能ブロックは設けられていない。
【００４４】
したがって、パケットキャプチャプロトコルドライバ独自の制御通信フラグおよびタイムスタンプを生成することは不可能であって、パケットキャプチャアプリケーション４１から入力される制御通信パケットをWindowsフレームに取り込んで制御バスネットワークドライバ２２に送信するか、キャプチャされたWindowsフレーム全体を再送することになる。
【００４５】
制御バスネットワークドライバ２２は、（Ａ）で説明したように、パケットキャプチャプロトコルドライバ４２から受信したWindowsフレームから制御通信パケットを抜き出すだけではなく、Windowsフレーム受信部２２ａで受信したWindowsフレームから抽出した制御通信フラグの値が制御通信パケットが格納されているバッファの先頭アドレスであるか否かのチェックと、Windowsフレーム受信部２２ａで受信したWindowsフレームから抽出したタイムスタンプの時刻情報が想定される最大遅延時間以内かの確認判断も行う。
【００４６】
そして、両者のデータのいずれかが正当な値ではないと判断すると、受信したWindowsフレームを破棄する。
【００４７】
これらの処理により、たとえば図８に示すように、パケットキャプチャツール４０によりキャプチャされたWindowsフレーム全体が再送されたとしても、制御バスネットワークドライバ２２において受信した制御通信パケットを含むWindowsフレームが破棄されるため、パケットキャプチャツール４０によりキャプチャされた制御通信パケットやパケットキャプチャツール４０で内容が変更された制御通信パケットが通信カード３０に送信されることはなく、なりすましなどの不正アクセスに起因する問題発生を防止できる。
【００４８】
なお、上記実施例では、制御バスドライバ２０から通信カード３０に向けてWindowsフレームの通信を行う例について説明したが、図４に示すように通信カード３０から制御バスドライバ２０の逆方向に通信を行う場合には、図１とほぼ同様な図５の仕組みを用いればよい。
【００４９】
図５において、制御バスドライバ２０の制御バスネットワークドライバ２２は、制御通信パケット抽出部２２ｇ、制御通信フラグ生成部２２ｈ、タイムスタンプ生成部２２ｉ、Windowsフレーム編集部２２ｊ、Windowsフレーム送信部２２ｋなどで構成されている。
【００５０】
一方、制御バスプロトコルドライバ２１は、Windowsフレーム受信部２１ｆ、制御通信パケット抽出部２１ｇ、制御通信フラグ確認部２１ｈ、タイムスタンプ確認部２１ｉなどで構成されている。
【００５１】
これら制御バスドライバ２０を構成する各ブロックの動作は図１と同様であり、それらの説明は省略する。
【００５２】
図６は図５の動作処理の流れを説明するフローチャートであり、（Ａ）は制御バスプロトコルドライバ２１における動作処理の流れを示し、（Ｂ）は制御バスネットワークドライバ２２における動作処理の流れを示している。なお、具体的な動作処理の流れは実質的には図２と同一であり、その説明は省略する。
【００５３】
そして、図７は図５の制御バスドライバ２０内部におけるパケットの流れ説明図であって、具体的なパケットの流れは実質的には図３（Ａ）と流れの方向が異なるだけであり、その説明は省略する。
【００５４】
以上説明したように、本発明によれば、Windowsプラットフォームを用いた制御バスシステムにおけるなりすましなどの不正アクセスに対するセキュリティ対策を実現できる。
【符号の説明】
【００５５】
１０  制御通信アプリケーション
２０  制御バスドライバ
２１  制御バスプロトコルドライバ
２１ａ  制御通信パケット生成部
２１ｂ  制御通信フラグ生成部
２１ｃ  タイムスタンプ生成部
２１ｄ  Windowsフレーム編集部
２１ｅ  Windowsフレーム送信部
２１ｆ  Windowsフレーム受信部
２１ｇ  制御通信パケット抽出部
２１ｈ  制御通信フラグ確認部
２１ｉ  タイムスタンプ確認部
２２  制御バスネットワークドライバ
２２ａ  Windowsフレーム受信部
２２ｂ、２２ｇ  制御通信パケット抽出部
２２ｃ  制御通信フラグ確認部
２２ｄ  タイムスタンプ確認部
２２ｅ  制御バスフレーム編集部
２２ｆ  制御バスフレーム送信部
２２ｈ  制御通信フラグ生成部
２２ｉ  タイムスタンプ生成部
２２ｊ  Windowsフレーム編集部
２２ｋ  Windowsフレーム送信部
３０  通信カード
４０  パケットキャプチャツール
４１  パケットキャプチャアプリケーション
４２  パケットキャプチャプロトコルドライバ
【図１】
0005757160.tif 000002
【図２】
0005757160.tif 000003
【図３】
0005757160.tif 000004
【図４】
0005757160.tif 000005
【図５】
0005757160.tif 000006
【図６】
0005757160.tif 000007
【図７】
0005757160.tif 000008
【図８】
0005757160.tif 000009
【図９】
0005757160.tif 000010