(57)【要約】      （修正有）【課題】制御装置に処理負荷を掛けることなく、不正プログラムの混入を検知可能とする。【解決手段】制御装置状態検証システムにおいて、ネットワークを介して制御装置と通信する通信装置１１と、制御装置のメモリマップにおける評価対象の指定情報と制御装置のメモリマップのうち評価対象に対応する情報の初期構成情報を格納する記憶装置１３と、制御装置のメモリマップを収集し、収集したメモリマップのうち評価対象に該当する情報を指定情報に基づき抽出し、抽出した評価対象情報と初期構成情報とを比較して、メモリマップの評価対象における初期状態からの変化有無を検知し、変化が検知された場合に所定装置にアラート情報を送信する処理を実行する演算装置１４（ＣＰＵ）を含む構成とする。【選択図】図２
2016110411.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して制御装置と通信する通信装置と、
前記制御装置のメモリマップにおける評価対象の指定情報と、前記制御装置のメモリマップのうち前記評価対象に対応する情報の初期構成情報と、を格納する記憶装置と、
前記制御装置と通信して該当制御装置のメモリマップを収集し、当該収集したメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報と前記初期構成情報とを比較して、前記メモリマップの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信する処理を実行する演算装置と、
を備えることを特徴とする制御装置状態検証システム。
【請求項２】
前記演算装置は、
試運転時の前記制御装置と通信して該当制御装置のメモリマップを収集し、当該収集した試運転時のメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報を前記初期構成情報として記憶装置に格納する処理を更に実行するものである、
ことを特徴とする請求項１に記載の制御装置状態検証システム。
【請求項３】
前記演算装置は、
前記抽出した評価対象情報と前記初期構成情報とを比較して前記変化有無を検知する処理に際し、前記試運転時以降の運転時の前記制御装置と通信して該当制御装置のメモリマップを収集し、当該収集した運転時のメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報と前記試運転時のメモリマップに基づく前記初期構成情報とを比較して、前記メモリマップの評価対象における前記試運転時から前記運転時の間の変化有無を検知するものである、
ことを特徴とする請求項２に記載の制御装置状態検証システム。
【請求項４】
前記演算装置は、
前記初期構成情報を記憶装置に格納する処理に際し、試運転時の前記制御装置における前記メモリマップのうち前記評価対象に対応する情報を、所定のデータサイズ低減用アルゴリズムにより処理した情報を初期構成情報として記憶装置に格納し、
前記評価対象情報と前記初期構成情報とを比較する処理に際し、前記収集した運転時のメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報を前記データサイズ低減用アルゴリズムにより処理した情報と、前記試運転時のメモリマップに基づく前記初期構成情報とを比較するものである、
ことを特徴とする請求項３に記載の制御装置状態検証システム。
【請求項５】
前記演算装置は、
試運転の前後において前記制御装置と通信して該当制御装置のメモリマップを試運転前後のそれぞれについて収集して、当該試運転前後のメモリマップを比較し、試運転の前後のメモリマップ間に差異がない領域を前記評価対象として特定し、当該特定した前記領域を示す情報を前記評価対象の指定情報として記憶装置に格納する処理を更に実行するものである、
ことを特徴とする請求項１に記載の制御装置状態検証システム。
【請求項６】
前記演算装置は、
前記変化有無の検知および前記アラート情報の送信に至る一連の処理を、所定時間毎に実行するものである、
ことを特徴とする請求項１に記載の制御装置状態検証システム。
【請求項７】
前記記憶装置は、
前記評価対象の指定情報として、該当制御装置の種類と、該当種類の制御装置の運転中に変化しないと考えられるメモリの領域とについての情報を格納し、
前記初期構成情報として、該当制御装置の識別情報、種類、前記メモリマップのうち前記評価対象に該当する情報を格納するものであり、
前記演算装置は、
前記制御装置と通信して該当制御装置のメモリマップとして、メモリの領域を識別する領域名と、前記領域の先頭アドレスを示す領域先頭アドレスと、前記領域のサイズを示すエリアサイズの各情報を収集し、当該収集したメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報と前記初期構成情報とを比較して、前記メモリマップの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信するものである、
ことを特徴とする請求項１に記載の制御装置状態検証システム。
【請求項８】
前記記憶装置は、
前記制御装置の内部メモリが保有するバイナリ値を示すメモリダンプにおける評価対象の指定情報と、前記制御装置のメモリダンプのうち前記評価対象に対応する情報の初期構成情報と、を更に格納するものであり、
前記演算装置は、
運転時の前記制御装置と通信して該当制御装置のメモリダンプを収集し、当該収集した運転時のメモリダンプより前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報と、前記メモリダンプに関する前記初期構成情報とを比較して、前記メモリダンプの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信する処理を更に実行するものである、
ことを特徴とする請求項１に記載の制御装置状態検証システム。
【請求項９】
前記演算装置は、
試運転時の前記制御装置と通信して該当制御装置のメモリダンプを収集し、当該収集した試運転時のメモリダンプのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報を前記初期構成情報として記憶装置に格納する処理を更に実行するものである、
ことを特徴とする請求項８に記載の制御装置状態検証システム。
【請求項１０】
前記演算装置は、
前記メモリダンプに関する初期構成情報を記憶装置に格納する処理に際し、試運転時の前記制御装置における前記メモリダンプのうち前記評価対象に対応する情報を、所定のデータサイズ低減用アルゴリズムにより処理した情報を初期構成情報として記憶装置に格納し、
前記評価対象情報と前記初期構成情報とを比較する処理に際し、前記収集した運転時のメモリダンプのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報を前記データサイズ低減用アルゴリズムにより処理した情報と、前記試運転時のメモリダンプに基づく前記初期構成情報とを比較するものである、
ことを特徴とする請求項９に記載の制御装置状態検証システム。
【請求項１１】
前記演算装置は、
前記メモリマップの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信する一連の処理と、前記メモリダンプの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信する一連の処理とを、所定頻度で交互に実行するものであ
る、
ことを特徴とする請求項８に記載の制御装置状態検証システム。
【請求項１２】
ネットワークを介して制御装置と通信する通信装置と、前記制御装置のメモリマップにおける評価対象の指定情報と、前記制御装置のメモリマップのうち前記評価対象に対応する情報の初期構成情報と、を格納する記憶装置とを備えたコンピュータシステムが、
前記制御装置と通信して該当制御装置のメモリマップを収集し、当該収集したメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報と前記初期構成情報とを比較して、前記メモリマップの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信する処理を実行する、
ことを特徴とする制御装置状態検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置状態検証システムおよび制御装置状態検証方法に関するものであり、具体的には、制御装置に処理負荷を掛けることなく、不正プログラムの混入を検知可能とする技術に関する。
【背景技術】
【０００２】
電力、鉄道、水道、ガスといった社会インフラや自動車で利用される制御システムは、専用ＯＳや専用プロトコルを備えて、センサの情報をもとにバルブやアクチュエータといった装置を動作させ、あらかじめ設定されている圧力や温度を自動的に保つ構成となっている。このような制御システムは、インターネット等の外部ネットワークに接続されず孤立した状態で設置されているため、いわゆるコンピュータウィルスやＤｏＳ攻撃といったサイバー攻撃からは無縁であると考えられてきた。
【０００３】
しかしながら、コスト削減のため制御システムにおいても汎用ＯＳや汎用プロトコルを利用するケースが増加しており、また、効率向上のために情報系システムと接続する形態も増えてきている。さらに近年では、制御システムをターゲットとしたコンピュータウィルスが発見されており、今まではサイバー攻撃と無縁とされていた制御システムにおいても、情報システムと同様にマルウェア等の不正なプログラムを検知する技術が必要となってきている。
【０００４】
こうした課題に対応する技術としては、例えば、装置内のプログラム起動時にファイルシステムにアクセスする特性を利用し、ファイルシステムのアクセスをフックし、プログラムのハッシュ値が正当なプログラムのハッシュ値と一致するか検証した上で起動を許可する技術（特許文献１参照）などが提案されている。
【０００５】
また、装置内で起動が許可されているプログラムリストと起動中のプログラムリストを比較することにより、不正なプログラムの混入を検知する技術（特許文献２参照）なども提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−３３７８６４号公報
【特許文献２】特開２００４−３０２６５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
一方、制御システムで利用される制御装置の中には、内部にファイルシステムを持たず、起動時にプログラムやデータをメモリ上に展開し、実行するものが存在する。このような制御装置に対しては、従来のごとくファイルシステムへのアクセスを検知し、起動を制御する技術を適用することは困難であった。
【０００８】
他方、上述したように制御システムにおいては、センサ情報等に基づいた装置制御を自動的に行うため、各種処理を周期的に行うことが一般的であり、制御システム内の各装置で実行される処理が１周期の中で完結することが要求される。また、常に１周期内で処理が完結するために、各処理の処理時間が状況によって変化せずに一定であることも求められるなど、処理時間に関する各種の制約が存在する。そのため、ファイルシステムを持つ制御装置であっても、上述の処理時間の制約のため、プログラム起動時にＣＰＵやメモリ
リソースを使用して起動可否を確認することは困難である。
【０００９】
また、起動中のプログラムリストを検証するとしても、不正なプログラムが正当なプログラムを上書きするといった状況が生じている場合、それを検知することはできないという問題もあった。
【００１０】
そこで本発明の目的は、制御装置に処理負荷を掛けることなく、不正プログラムの混入を検知可能とする技術を提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決する本発明の制御装置状態検証システムは、ネットワークを介して制御装置と通信する通信装置と、前記制御装置のメモリマップにおける評価対象の指定情報と、前記制御装置のメモリマップのうち前記評価対象に対応する情報の初期構成情報と、を格納する記憶装置と、前記制御装置と通信して該当制御装置のメモリマップを収集し、当該収集したメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報と前記初期構成情報とを比較して、前記メモリマップの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信する処理を実行する演算装置を備えることを特徴とする。
【００１２】
また、本発明の制御装置状態検証方法は、ネットワークを介して制御装置と通信する通信装置と、前記制御装置のメモリマップにおける評価対象の指定情報と、前記制御装置のメモリマップのうち前記評価対象に対応する情報の初期構成情報と、を格納する記憶装置とを備えたコンピュータシステムが、前記制御装置と通信して該当制御装置のメモリマップを収集し、当該収集したメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報と前記初期構成情報とを比較して、前記メモリマップの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信する処理を実行することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、制御装置に処理負荷を掛けることなく、不正プログラムの混入検知が可能となる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態における制御装置状態検証システムのネットワーク構成例を示す図である。
【図２】第１実施形態における監視装置及び監視サーバのハードウェア構成例を示す図である。
【図３】第１実施形態における制御装置のハードウェア構成例を示す図である。
【図４】第１実施形態における制御装置状態検証方法の処理手順例１を示すフロー図である。
【図５】第１実施形態における制御装置状態検証方法の処理手順例２を示すフロー図である。
【図６】第１実施形態において各制御装置から取得するメモリマップの構成例を示す図である。
【図７】第１実施形態における評価対象情報の構成例を示す図である。
【図８】第１実施形態における初期構成情報の構成例を示す図である。
【図９】第１実施形態における制御装置状態検証方法の処理手順例３を示すフロー図である。
【図１０】第２実施形態における制御装置状態検証システムのネットワーク構成例を示す図である。
【図１１】第２実施形態における制御装置状態検証方法の処理手順例を示すフロー図である。
【図１２】第３実施形態における制御装置状態検証システムのネットワーク構成例を示す図である。
【図１３】第３実施形態において各制御装置から取得するメモリダンプ情報の構成例を示す図である。
【図１４】第３実施形態における制御装置状態検証方法の処理手順例を示すフロー図である。
【発明を実施するための形態】
【００１５】
−−−第１実施形態−−−
【００１６】
以下に本発明の実施形態について図面を用いて詳細に説明する。図１は、第１実施形態における制御装置状態検証システムたる監視装置１０（以下、監視装置１０）を含むネットワーク構成図である。図１に示す制御装置状態検証システムたる監視装置１０は、監視対象である制御装置３０に処理負荷を掛けることなく、不正プログラムの混入を検知可能とするコンピュータシステムである。
【００１７】
なお、第１実施形態における監視装置１０は、単体で制御装置状態検証システムを構成するとしてもよいし、図１のネットワーク構成例にて示すように、ネットワーク４０を介して通信可能に結ばれた監視サーバ２０および制御装置３０１〜３０ｎも含んで構成されているとしてもよい。いずれにしても制御装置状態検証方法を主体的に実行する装置は、監視装置１０となる。
【００１８】
こうした構成における上述の監視装置１０は、所定のプログラムを実行することで実装する機能部として、例えばメモリマップ収集部１０１、評価対象取得部１０２、暗号演算部１０３、改ざん検知部１０４、およびアラート生成部１０５を備えている。また監視装置１０は、処理に必要なデータの格納部として、初期構成情報格納部１０６および評価対象格納部１０７を備えている。監視装置１０は、この他に、ネットワーク４０にアクセスして他装置との通信を行う通信部１０８を更に有している。
【００１９】
上述の監視装置１０が備える機能のうちメモリマップ収集部１０１は、監視対象である各制御装置３０１〜３０ｎから通信部１０８を介してメモリ情報を収集するものである。また、評価対象取得部１０２は、制御装置３０１〜３０ｎのメモリ情報の中で、該当制御装置の運転時に構成や内部データが変化せず評価対象となる領域の情報を取得するものである。また、暗号演算部１０３は、初期構成情報や、メモリマップ収集部１０１が得たメモリ情報に対する暗号演算を行って、そのデータサイズを低減するものである。また、改ざん検知部１０４は、メモリマップ収集部１０１が収集したメモリ情報の改ざん有無を検知するものである。また、アラート生成部１０５は、改ざん検知部１０４により改ざんが検知された場合に監視サーバ２０に対してアラートを通知するものである。
【００２０】
また、監視装置１０が備える上述の初期構成情報格納部１０６は、制御装置３０１〜３０ｎの稼動開始前の初期メモリ情報を格納するものである。また、評価対象格納部１０７は、制御装置３０１〜３０ｎのメモリ情報の中で、運転時に構成や内部データが変化せず評価対象とする情報を格納するものである。
【００２１】
一方、ネットワーク４０を介して上述の監視装置１０と通信可能な監視サーバ２０は、監視装置１０から通知されるアラートを収集するアラート収集部２０１と、ネットワーク４０と通信を行う通信部２０２を機能として備えている。こうした監視サーバ２０における各部は、いずれも適宜なプログラムを実行することで実装される機能である。
【００２２】
また、監視対象である上述の制御装置３０１〜３０ｎは、該当制御装置内部のメモリ情報を取得するメモリマップ取得部３０１１〜３０１ｎと、ネットワーク４０と通信を行う通信部３０２１〜３０２ｎと、備えている。こうした制御装置３０１〜３０ｎにおける機能は、いずれも適宜なプログラムを実行することで実装される機能、或いはチップセット等の適宜なハードウェアに備わる機能である。
【００２３】
また、上述した各装置のうち監視装置１０および監視サーバ２０のハードウェア構成は以下の如く一般的なコンピュータ装置と同様の構成となる。すなわち、ネットワーク４０と適宜なインターフェイスで接続してデータ通信を実行するネットワークインターフェイスカードなどの通信装置１１、ユーザからの入力および処理結果の出力を担う入出力装置１２、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）やハードディスクドライブなど適宜な不揮発性記憶素子で構成される記憶装置１３、この記憶装置１３に保持されるデータや適宜なプログラムをメモリ１５に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なうＣＰＵ１４（演算装置）、ＲＡＭなど揮発性記憶素子で構成されるメモリ１５、および、記憶媒体１７を読み込む読取装置１６といった各構成要素がバスなどの内部通信線１８で連結され、構成されている。
【００２４】
他方、監視対象である制御装置３０１〜３０ｎのハードウェア構成の例は図３に示すものとなる。ここで例示する制御装置３０１〜３０ｎは、既に述べたように、電力、鉄道、水道、ガスといった社会インフラや自動車で利用される制御システムに備わる、小規模なコンピュータ装置であって、その構成は、ネットワーク４０にアクセスしてデータ通信を担う通信装置３１、指示の受付や処理結果の出力等を担う入出力装置３２、不揮発性記憶素子で構成される記憶装置３３、ＣＰＵ３４、および揮発性記憶素子で構成されるメモリ３５、がバスなどの内部通信線３６で連結され、構成されている。
【００２５】
続いて、第１実施形態における制御装置状態検証方法の実際手順について図に基づき説明する。以下に述べる処理フローは、監視装置１０、監視サーバ２０、および制御装置３０１〜３０ｎの各記憶装置に格納されたプログラムがメモリにロードされ、ＣＰＵにより実行されることにより、各装置上に具現化される各処理部により実行されるものである。また、各プログラムは予め記憶装置に格納されても良いし、他の記憶媒体または通信媒体（ネットワーク４０またはネットワーク４０を伝搬する搬送波）を介して、必要なときに導入されても良い。
【００２６】
図４は、第１実施形態における制御装置状態検証方法の処理手順例１を示すフロー図であり、具体的には、制御装置３０１〜３０ｎの試運転や運転時に監視装置１０らが実施する処理フローを示した図である。
【００２７】
ここではまず、制御装置３０１〜３０ｎの試運転時に、監視装置１０と制御装置３０１〜３０ｎとの間で初期化処理を実行する（Ｓ４０１）。このステップＳ４０１における初期化処理の詳細については図５に基づき後述するものとする。
【００２８】
次に、制御装置３０１〜３０ｎの運転時に、監視装置１０、制御装置３０１〜３０ｎ、および監視サーバ２０の間で検知処理を実行する（Ｓ４０２）。このステップＳ４０２における検知処理の詳細については図９に基づき後述するものとする。
【００２９】
次に、監視装置１０は、コンピュータ装置として通常備わるクロック機能等による所定のタイマーを起動させ、上述の検知処理（Ｓ４０２）の実行から所定時間が経過しているか判定する（Ｓ４０３）。この判定の結果、所定時間が経過していないと判断した場合（Ｓ４０３：Ｎ）、監視装置１０は、当該ステップＳ４０３における判定を再度実行し、こ
こで所定時間が経過していると判断した場合には（Ｓ４０３：Ｙ）、上述のステップＳ４０２における検知処理を再度実行する。なお、ここでは、時間経過の判定によって検知処理を再実行するタイミングを制御する構成としているが、これに限らず、監視装置１０が特定イベントの発生に応じて再実行する構成としてもよい。
【００３０】
次に、上述のステップＳ４０１における初期化処理の詳細について図５に基づき説明する。図５は、第１実施形態における制御装置状態検証方法の処理手順例２を示すフロー図であり、具体的には、制御装置３０１〜３０ｎの試運転時に各制御装置の初期メモリ状態を取得する際の処理フローを示した図である。
【００３１】
この場合、監視装置１０は、監視対象の１つである制御装置３０１のメモリ情報を取得するため、メモリマップ取得コマンドＡ５０１１を生成し（Ｓ５０１１）、このメモリマップ取得コマンドＡ５０１１を、制御装置３０１に対し送信する。ここで生成したメモリマップ取得コマンドＡ５０１１は、制御装置３０１〜３０ｎにおけるメモリマップ取得部３０１１でのプロトコルに応じたコマンドとなっている。
【００３２】
一方、制御装置３０１は、監視装置１０から上述のメモリマップ取得コマンドＡ５０１１を受信し、当該コマンドに応じて、メモリ３５にて保持しているメモリの構成情報であるメモリマップを取得し（Ｓ５０２１）、取得したメモリマップ（Ａ５０２１）を監視装置１０に送信する。
【００３３】
上述のメモリマップの構成例について図６に示す。図６は第１実施形態において、各制御装置から取得するメモリマップの構成例を示す図である。ここで例示するメモリマップＡ７０１は、メモリ内における領域を識別する名称である領域名Ａ７０２をキーとして、各領域の先頭アドレスを示す領域先頭アドレスＡ７０３、および各領域のサイズを示すエリアサイズＡ７０４の各値を対応付けたレコードの集合体となっている。なお、メモリマップＡ７０１の構成要素は上述の例に限定されるものではなく、少なくとも上述した領域名Ａ７０２、領域先頭アドレスＡ７０３、およびエリアサイズＡ７０４の各要素が含まれていればよい。また、メモリマップＡ７０１の構成要素の配置順序は図６の例に限定されない。
【００３４】
ここで図５のフローの説明に戻る。続いて監視装置１０は、評価対象格納部１０７より、制御装置３０１に関して保持している評価対象情報を取得する（Ｓ５０３１）。この評価対象情報は、該当制御装置のメモリマップにおける評価対象の指定情報であり、その構成例は図７に示すものとなる。
【００３５】
図７は第１実施形態における監視装置１０が保持する評価対象情報の構成例を示す図である。ここで例示する評価対象情報Ａ８０１は、該当制御装置の種類を識別する装置種類Ａ８０２をキーとして、該当制御装置におけるメモリ３５中で制御装置運転時に変化しないと想定される領域名称のリストを示す評価対象領域名リストＡ８０３を対応付けたレコードの集合体となっている。なお、評価対象情報Ａ８０１の構成要素は、上述したものに限定されるものではなく、少なくとも、装置種類Ａ８０２および評価対象領域名リストＡ８０３が含まれていればよい。また、評価対象情報Ａ８０１における各構成要素の配置順序は図７で例示したものに限定されない。
【００３６】
ここで図５のフローの説明に戻る。続いて監視装置１０は、制御装置３０１より受信した上述のメモリマップＡ５０２１から、上述のステップＳ５０３１で制御装置３０１について取得済みの評価対象情報が示す評価対象領域に該当する各情報、すなわち、領域名Ａ７０２、領域先頭アドレスＡ７０３およびエリアサイズＡ７０４の各値を取得し、ここで取得した値に対する暗号演算を行う（Ｓ５０４１）。ここで行う暗号演算の例としては、
元のデータのダイジェストを出力するハッシュ演算等の演算を想定するが、これに限定されるものではない。なお、こうした暗号演算の意図はデータサイズ低減である。
【００３７】
次に監視装置１０は、上述のステップＳ５０４１による暗号演算の結果を、該当制御装置３０１の識別情報および装置種類（例：“ＡＢＣ”）とともに、初期構成情報として初期構成情報格納部１０６に格納する（Ｓ５０５１）。この初期構成情報は、該当制御装置のメモリマップのうち評価対象に対応する情報の初期情報であり、その構成例は図８に示すものとなる。
【００３８】
図８は第１実施形態における監視装置１０が各制御装置に関して保持している初期構成情報の構成例を示す図である。ここで例示する初期構成情報Ａ９０１は、該当制御装置を識別するＩＤたる装置ＩＤＡ９０２をキーとして、該当制御装置の種類を識別する装置種類Ａ９０３、および、該当制御装置が運転前に保有しているメモリ情報を示す初期構成データＡ９０４の各値を対応付けたレコードの集合体となっている。
【００３９】
このうち初期構成データＡ９０４は、上述のＳ５０４１（〜Ｓ５０４ｎ）の演算結果であり、各制御装置のメモリマップのうち評価対象領域のメモリ情報に対してハッシュ演算を行った値を示しているが、特徴量などの別の値であってもよい。なお、初期構成情報Ａ９０１の構成要素は上述の、装置ＩＤＡ９０２、装置種類Ａ９０３、および、初期構成データＡ９０４に限定されるものではなく、少なくともこれら要素が含まれていればよい。また、初期構成情報Ａ９０１の構成要素の配置順序は図８で例示したものに限定されない。
【００４０】
以降、監視装置１０は、上述のすなわちＳ５０１１〜Ｓ５０５１と同様の手順を、他の制御装置３０２〜３０ｎに対しても実行し、初期構成情報格納部１０６において各制御装置３０１〜３０ｎのメモリ情報を格納する。
【００４１】
次に、図４で示した検知処理（Ｓ４０２）の詳細について図に基づき説明する。図９は、第１実施形態における制御装置状態検証方法の処理手順例３を示すフロー図であり、具体的には、制御装置３０１〜３０ｎの運転時に各制御装置のメモリ状態を検証する際の処理フローを示した図である。
【００４２】
この場合まず、監視装置１０は、例えば制御装置３０１〜３０ｎのうち制御装置３０１のメモリ情報を取得するため、上述のステップＳ５０１１と同様に、メモリマップ取得コマンドＡ６０１１を生成し（Ｓ６０１１）、これを制御装置３０１に対して送信する。
【００４３】
一方、制御装置３０１は、監視装置１０から上述のメモリマップ取得コマンドＡ６０１１を受信し、このコマンドに基づき、メモリ３５内部に保持しているメモリの構成情報であるメモリマップＡ６０２１を取得し（Ｓ６０２１）、これを監視装置１０に対して送信する。
【００４４】
続いて監視装置１０は、評価対象格納部１０７より、上述の制御装置３０１に関する評価対象情報を取得する（Ｓ６０３１）。また監視装置１０は、上述のステップＳ６０２１にて制御装置３０１が送信してきたメモリマップＡ６０２１より、上述のステップＳ６０３１で取得した評価対象情報が示す評価対象領域に該当するメモリ情報を取得し、これに対する暗号演算を行う（Ｓ６０４１）。ここでの暗号演算は上述のステップＳ５０４１と同様に、ハッシュ演算等を想定するが、これに限定されるものではない。
【００４５】
次に監視装置１０は、初期構成情報格納部１０６から、上述の制御装置３０１に関する初期構成情報を取得する（Ｓ６０５１）。次に監視装置１０は、上述のステップＳ６０４
１で得た（運転中の制御装置におけるメモリマップに基づく）暗号演算の結果と、ステップＳ６０５１で取得した初期構成情報とを比較する（Ｓ６０６１）。この比較は、例えば比較対象となる各値の各桁の突合処理などによりなされる。
【００４６】
上述の比較の結果、初期構成情報と暗号演算結果とが一致していることが判明した場合（Ｓ６０６１：一致）、監視装置１０は、該当制御装置３０１に関して不正なプログラムの混入等は発生していないと認識し、次の制御装置３０２に関する処理（Ｓ６０１２）に遷移する。
【００４７】
一方、上述の比較の結果、初期構成情報と暗号演算結果とが一致していないことが判明した場合（Ｓ６０６１：不一致）、監視装置１０は、該当制御装置３０１に関して不正なプログラムの混入等が発生している恐れがあると認識し、その旨を示すアラート情報Ａ６０３１を監視サーバ２０に送信する。
【００４８】
一方、監視サーバ２０は、通信部２０２を介して監視装置１０より上述のアラート情報Ａ６０３１を受信し、これをアラート収集部２０１が記憶装置３３に格納する（Ｓ６０７１）。
【００４９】
以降、監視装置１０は、上述のステップＳ６０１１〜Ｓ６０６１と同様の手順を、他の制御装置３０２〜３０ｎに対しても実行し、制御装置３０２〜３０ｎの各メモリ情報が該当制御に関する初期構成情報と一致するか検証することとなる。
−−−第２実施形態−−−
【００５０】
図１０は、第２実施形態における制御装置状態検証システムを含むネットワーク構成例を示す図である。第２実施形態の制御装置状態検証システムのネットワーク構成は、図１に例示した第１実施形態と同様であるが、そのうち監視装置１０については、第１実施形態での構成要素に加え、制御装置３０１〜３０ｎのメモリ情報を一時的に保管するメモリマップ一時保管部１０９が含まれている。第２実施形態においては、このメモリマップ一時保管部１０９を用いつつ、監視装置１０が評価対象情報を生成する処理について説明する。
【００５１】
図１１は、第２実施形態における制御装置状態検証方法の処理手順例を示すフロー図であり、具体的には、監視装置１０の評価対象格納部１０７に格納される評価対象情報を生成するフローを示す図である。
【００５２】
この場合、監視装置１０は、制御装置の試運転前に、制御装置３０１〜制御装置３０ｎのメモリ情報を取得するため、上述のステップＳ５０１１、Ｓ６０１１と同様に、各制御装置に関してメモリマップ取得コマンドＡ１１０１を生成し（Ｓ１１０１）、対応する各制御装置３０１〜制御装置３０ｎに対して送信する。
【００５３】
一方、制御装置３０１〜制御装置３０ｎのそれぞれは、監視装置１０からメモリマップ取得コマンドＡ１１０１を受信し、これに基づいて、メモリ３５内部に保持しているメモリの構成情報であるメモリマップを取得し（Ｓ１１０２）、これを監視装置１０に対し送信する。
【００５４】
他方、監視装置１０は、上述のように制御装置３０１〜制御装置３０ｎから送信された、各制御装置のメモリマップを受信して、これをメモリマップ一時保管部１０９に格納する（Ｓ１１０３）。
【００５５】
続いて、監視装置１０と制御装置３０１〜制御装置３０ｎとの間で、所定の試運転処理
を行う（Ｓ１１０４）。この試運転処理は、監視装置１０からの指示によって、所定のプロトコルに基づく制御装置の起動と所定動作の実行を行うといったものを想定出来る。この試運転がなされた制御装置においては、試運転に伴う所定処理によりメモリ３５内部のメモリマップのうちいずれかの箇所が未起動時から変化していると想定される。
【００５６】
次に監視装置１０は、上述の試運転後にあらためて制御装置３０１〜制御装置３０ｎのメモリ情報を取得するため、上述のステップＳ１１０１と同様、メモリマップ取得コマンドＡ１１０３を生成し（Ｓ１１０５）、これを制御装置３０１〜制御装置３０ｎに対し送信する。
【００５７】
一方、制御装置３０１〜制御装置３０ｎは、監視装置１０から送信されたメモリマップ取得コマンドＡ１１０３を受信し、これに基づき、メモリ３５内部に保持しているメモリの構成情報であるメモリマップを取得し（Ｓ１１０６）、これを監視装置１０に対し送信する。
【００５８】
他方、監視装置１０は、上述のステップＳ１１０３で格納済みのメモリマップ（試運転前のもの）をメモリマップ一時保管部１０９から取得する（Ｓ１１０７）。また、監視装置１０は、上述のステップＳ１１０６にて制御装置らから送信され受信したメモリマップＡ１１０４と、上述のステップＳ１１０７でメモリマップ一時保管部１０９から取得したメモリマップ（試運転後のもの）とを比較し、試運転前後でメモリマップ情報が変化しない静的項目を抽出する（Ｓ１１０８）。
【００５９】
監視装置１０は、上述のステップＳ１１０８で抽出した静的項目を、該当制御装置に関する評価対象情報として評価対象格納部１０７に格納し（Ｓ１１０９）、処理を終了する。このように、評価対象情報すなわち評価対象の指定情報を監視装置１０が自動取得して以後の処理に用いることが可能となる。
−−−第３実施形態−−−
【００６０】
続いて、上述までの第１および第２実施形態で示したメモリマップに基づく処理の他に、制御装置のメモリ３５が保有するバイナリ値を示すメモリダンプに基づく処理について説明する。図１２は第３実施形態における制御装置状態検証システムのネットワーク構成例を示す図である。
【００６１】
第３実施形態の制御装置状態検証システムのネットワーク構成は、図１に例示した第１実施形態と同様であるが、そのうち監視装置１０については、メモリマップ収集部１０１に代えてメモリダンプ取得部１１０が含まれている。また、制御装置３０１〜制御装置３０ｎにおいても、メモリマップ取得部３０１１〜３０１ｎに代えてメモリダンプ取得部３０３１〜３０３ｎが含まれている。こうした第３実施形態においては、各制御装置からメモリマップを取得していた構成がメモリダンプを取得して用いる構成となっている点を除いて第１実施形態と同様であり、そのため図４、５、９の各フローも該当文言をメモリダンプに置き換えることで第２実施形態のフローとなる。よって、これらフローに関する説明は当該第３実施形態においては省略する。
【００６２】
当該第３実施形態にて用いるメモリダンプの具体例を図１３に基づき説明する。図１３は、第３実施形態の制御装置状態検証システムにおいて、各制御装置から取得するメモリダンプ情報の構成例を示す図である。この場合、メモリダンプＡ１３０１は、該当制御装置のメモリ３５における領域を識別する領域名Ａ１３０２をキーとして、各領域に実際に格納されているメモリ情報Ａ１３０３を対応付けたレコードの集合体となっている。なお、このメモリダンプＡ１３０１の構成要素は、上述した領域名Ａ１３０２およびメモリ情報Ａ１３０３に限定されるものではなく、少なくともこれらの要素が含まれていればよい
。また、メモリダンプＡ１３０１の構成要素の配置順序は図１３に例示するものに限定されない。
【００６３】
ここで、第１実施形態に示したメモリマップに基づいてアラート情報を監視サーバ２０に送信する一連の処理と、当該第３実施形態におけるメモリダンプに基づいてアラート情報を監視サーバ２０に送信する一連の処理とを、組み合わせて実行する構成について説明する。図１４は第３実施形態における制御装置状態検証方法の処理手順例を示すフロー図である。この場合の監視装置１０は、図１２に示したメモリダンプ収集部１１０のみならず、第１実施形態におけるメモリマップ収集部１０１も有しているものとする。また同様に、各制御装置３０１〜３０ｎにおいても、メモリマップ取得部３０１およびメモリダンプ取得部３０３を有しているものとする。
【００６４】
この場合の監視装置１０は、予め定めた所定期間ｔ１またはｔ２が経過したかについて所定時間毎に繰り返し判定する（ｓ４０００）。この判定の結果、所定期間ｔ１の経過を検知した場合（ｓ４０００：ｔ１）、監視装置１０は、上述のステップＳ６０１１〜Ｓ６０６１を各制御装置３０１〜３０ｎに関して図９のフローと同様に実行する（ｓ４００１）。なお、所定期間ｔ２は、上述の所定期間ｔ１より長い、すなわちｔ２＞ｔ１の関係にある。
【００６５】
上述のステップＳ４００１の実行後、監視装置１０は、ユーザないし所定プログラムなどからの停止指示が無い限り（ｓ４００３：ｎ）、再び上述のステップＳ４０００を実行し、当該ステップＳ４０００にて、上述の所定期間ｔ２の経過を検知するまで上述のステップＳ４００１を繰り返すこととなる。
【００６６】
その後のいずれかの回のステップＳ４０００において、判定の結果、所定期間ｔ２の経過を検知した場合（Ｓ４０００：ｔ２）、監視装置１０は、上述のステップＳ６０１１〜Ｓ６０６１を、メモリマップではなくメモリダンプについて各制御装置３０１〜３０ｎに関して図９のフローと同様に実行する（ｓ４００２）。
【００６７】
上述のステップＳ４００２の実行後、監視装置１０は、ユーザないし所定プログラムなどからの停止指示が無い限り（ｓ４００３：ｎ）、再び上述のステップＳ４０００を実行し、当該ステップＳ４０００にて、上述の所定期間ｔ１の経過を検知するまで待機状態となり、以降、所定期間ｔ１、ｔ２の経過に伴う上述のステップＳ４００１、Ｓ４００２を繰り返すこととなる。
【００６８】
このように、メモリマップに基づく一連の処理と、メモリダンプに基づく一連の処理とを、所定頻度で交互に実行するとすれば、処理負荷がより軽いメモリマップに基づく上述の変化有無検知の処理を日常的に実行する一方で、より低頻度のタイミングで（或いはユーザからの指示や特定のトリガーで）、メモリダンプに基づく高精度な変化有無検知の処理を実行するなどして、不正なプログラムの混入等の効率的な検知処理と共に高精度な検知処理も併せて確立することが可能となり、好適である。
【００６９】
こうした本実施形態によれば、制御装置に処理負荷を掛けることなく、不正プログラムの混入検知が可能となる。
【００７０】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【００７１】
たとえば、制御装置内にメモリマップとメモリダンプの両方を取得する機能があり、所定タイミング（例：所定時間の経過、所定時期の到来、所定イベントの発生）に応じて選
択的に実行する構成も想定出来る。また、監視装置と監視サーバの機能が単体のコンピュータに集約されている構成も想定出来る。或いは、制御装置にネットワークとの通信機能が含まれておらず、別の装置を経由してネットワークと通信を行う構成も想定出来る。また、監視装置が初期構成情報や評価対象情報を保有せず、他の装置から取得する構成なども想定出来る。ただしいずれの形態においても制御装置状態検証システム全体において行う処理に本質的な変化はない。
【００７２】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態の制御装置状態検証システムにおいて、前記演算装置は、試運転時の前記制御装置と通信して該当制御装置のメモリマップを収集し、当該収集した試運転時のメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報を前記初期構成情報として記憶装置に格納する処理を更に実行するものである、としてもよい。
【００７３】
これによれば、ユーザ等による事前設定の作業を必要とせずに、適宜な初期構成情報をシステム側が自動取得して以後の処理に用いることが可能となる。ひいては、全体の処理効率が向上することとなる。
【００７４】
また、本実施形態の制御装置状態検証システムにおいて、前記演算装置は、前記抽出した評価対象情報と前記初期構成情報とを比較して前記変化有無を検知する処理に際し、前記試運転時以降の運転時の前記制御装置と通信して該当制御装置のメモリマップを収集し、当該収集した運転時のメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報と前記試運転時のメモリマップに基づく前記初期構成情報とを比較して、前記メモリマップの評価対象における前記試運転時から前記運転時の間の変化有無を検知するものである、としてもよい。
【００７５】
これによれば、メモリマップの差異が明確となりやすい試運転時と運転時とで処理を実行し、不正プログラムの混入検知の精度をより高いものと出来る。
【００７６】
また、本実施形態の制御装置状態検証システムにおいて、前記演算装置は、前記初期構成情報を記憶装置に格納する処理に際し、試運転時の前記制御装置における前記メモリマップのうち前記評価対象に対応する情報を、所定のデータサイズ低減用アルゴリズムにより処理した情報を初期構成情報として記憶装置に格納し、前記評価対象情報と前記初期構成情報とを比較する処理に際し、前記収集した運転時のメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報を前記データサイズ低減用アルゴリズムにより処理した情報と、前記試運転時のメモリマップに基づく前記初期構成情報とを比較するものである、としてもよい。なお、上述のデータサイズ低減用アルゴリズムを構成する手段としては、例えばハッシュ関数等を想定出来る。
【００７７】
これによれば、メモリマップおよび初期構成情報を元のサイズに関わらず、所定サイズの情報に低減して用いることが可能となり、処理効率やデータ管理効率の向上を図ることが出来る。ひいては制御装置における処理負荷低減にもつながる。
【００７８】
また、本実施形態の制御装置状態検証システムにおいて、前記演算装置は、試運転の前後において前記制御装置と通信して該当制御装置のメモリマップを試運転前後のそれぞれについて収集して、当該試運転前後のメモリマップを比較し、試運転の前後のメモリマップ間に差異がない領域を前記評価対象として特定し、当該特定した前記領域を示す情報を前記評価対象の指定情報として記憶装置に格納する処理を更に実行するものである、としてもよい。
【００７９】
これによれば、ユーザ等による事前設定の作業を必要とせずに、適宜な評価対象の指定情報をシステム側が自動取得して以後の処理に用いることが可能となる。ひいては、全体の処理効率が向上することとなる。
【００８０】
また、本実施形態の制御装置状態検証システムにおいて、前記演算装置は、前記変化有無の検知および前記アラート情報の送信に至る一連の処理を、所定時間毎に実行するものである、としてもよい。
【００８１】
これによれば、対象となる制御装置における変化、すなわち不正なプログラムの混入等を迅速に特定することが可能となる。
【００８２】
また、本実施形態の制御装置状態検証システムにおいて、前記記憶装置は、前記評価対象の指定情報として、該当制御装置の種類と、該当種類の制御装置の運転中に変化しないと考えられるメモリの領域とについての情報を格納し、前記初期構成情報として、該当制御装置の識別情報、種類、前記メモリマップのうち前記評価対象に該当する情報を格納するものであり、前記演算装置は、前記制御装置と通信して該当制御装置のメモリマップとして、メモリの領域を識別する領域名と、前記領域の先頭アドレスを示す領域先頭アドレスと、前記領域のサイズを示すエリアサイズの各情報を収集し、当該収集したメモリマップのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報と前記初期構成情報とを比較して、前記メモリマップの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信するものである、としてもよい。
【００８３】
これによれば、メモリマップにおける評価対象の特定や上述の変化有無の検知を、効率的なものと出来る。
【００８４】
また、本実施形態の制御装置状態検証システムにおいて、前記記憶装置は、前記制御装置の内部メモリが保有するバイナリ値を示すメモリダンプにおける評価対象の指定情報と、前記制御装置のメモリダンプのうち前記評価対象に対応する情報の初期構成情報と、を更に格納するものであり、前記演算装置は、運転時の前記制御装置と通信して該当制御装置のメモリダンプを収集し、当該収集した運転時のメモリダンプより前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報と、前記メモリダンプに関する前記初期構成情報とを比較して、前記メモリダンプの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信する処理を更に実行するものである、としてもよい。
【００８５】
これによれば、メモリダンプすなわちメモリが保持するデータそのものについて変化有無を検知することで、メモリマップを変更させずに混入された不正プログラム等であっても効率的に検知することが可能となる。
【００８６】
また、本実施形態の制御装置状態検証システムにおいて、前記演算装置は、試運転時の前記制御装置と通信して該当制御装置のメモリダンプを収集し、当該収集した試運転時のメモリダンプのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報を前記初期構成情報として記憶装置に格納する処理を更に実行するものである、としてもよい。
【００８７】
これによれば、ユーザ等による事前設定の作業を必要とせずに、メモリダンプに基づく適宜な初期構成情報をシステム側が自動取得して以後の処理に用いることが可能となる。ひいては、全体の処理効率が向上することとなる。
【００８８】
また、本実施形態の制御装置状態検証システムにおいて、前記演算装置は、前記メモリダンプに関する初期構成情報を記憶装置に格納する処理に際し、試運転時の前記制御装置における前記メモリダンプのうち前記評価対象に対応する情報を、所定のデータサイズ低減用アルゴリズムにより処理した情報を初期構成情報として記憶装置に格納し、前記評価対象情報と前記初期構成情報とを比較する処理に際し、前記収集した運転時のメモリダンプのうち前記評価対象に該当する情報を前記指定情報に基づき抽出し、当該抽出した評価対象情報を前記データサイズ低減用アルゴリズムにより処理した情報と、前記試運転時のメモリダンプに基づく前記初期構成情報とを比較するものである、としてもよい。
【００８９】
これによれば、メモリダンプの差異が明確となりやすい試運転時と運転時とで処理を実行し、不正プログラムの混入検知の精度をより高いものと出来る。
【００９０】
また、本実施形態の制御装置状態検証システムにおいて、前記演算装置は、前記メモリマップの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信する一連の処理と、前記メモリダンプの前記評価対象における初期状態からの変化有無を検知し、前記変化が検知された場合に所定装置にアラート情報を送信する一連の処理とを、所定頻度で交互に実行するものである、としてもよい。
【００９１】
これによれば、処理負荷がより軽いメモリマップに基づく上述の変化有無検知の処理を日常的に実行する一方で、より低頻度で或いはユーザからの指示や特定のトリガー（例：その他の監視装置などからのアラート等）を受けたタイミングで、メモリダンプに基づく高精度な変化有無検知の処理を実行するなどして、不正なプログラムの混入等の効率的な検知処理と共に高精度な検知処理も併せて確立することが可能となる。
【符号の説明】
【００９２】
１０  監視装置（制御装置状態検証システム）
１１  通信装置
１２  入出力装置
１３  記憶装置
１４  ＣＰＵ
１５  メモリ
１６  読取装置
１７  記憶媒体
１８  内部信号線
１０１  メモリマップ収集部
１０２  評価対象取得部
１０３  暗号演算部
１０４  改ざん検知部
１０５  アラート生成部
１０６  初期構成情報格納部
１０７  評価対象情報格納部
１０８  通信部
１０９  メモリマップ一時保管部
１１０  メモリダンプ収集部
２０  監視サーバ
２０１  アラート収集部
２０２  通信部
３０１〜３０ｎ  制御装置
３０１１〜３０１ｎ  メモリマップ取得部
３０２１〜３０２ｎ  通信部
３０３１〜３０３ｎ  メモリダンプ取得部
４０  ネットワーク
Ａ５０１１〜Ａ５０１ｎ  メモリマップ取得コマンド
Ａ５０２１〜Ａ５０２ｎ  メモリマップ
Ａ６０１１〜Ａ６０１ｎ  メモリマップ取得コマンド
Ａ６０２１〜Ａ６０２ｎ  メモリマップ
Ａ６０３１〜Ａ６０３ｎ  アラート情報
Ａ７０１  メモリマップ
Ａ７０２  領域名
Ａ７０３  領域先頭アドレス
Ａ７０４  エリアサイズ
Ａ８０１  評価対象情報
Ａ８０２  装置種類
Ａ８０３  評価対象領域名リスト
Ａ９０１  初期構成情報
Ａ９０２  装置ＩＤ
Ａ９０３  装置種類
Ａ９０４  初期構成データ
Ａ１１０１  メモリマップ取得コマンド
Ａ１１０２  メモリマップ
Ａ１１０３  メモリマップ取得コマンド
Ａ１１０４  メモリマップ
Ａ１３０１  メモリダンプ
Ａ１３０２  領域名
Ａ１３０３  メモリ情報
【図１】
2016110411.tif 000003
【図２】
2016110411.tif 000004
【図３】
2016110411.tif 000005
【図４】
2016110411.tif 000006
【図５】
2016110411.tif 000007
【図６】
2016110411.tif 000008
【図７】
2016110411.tif 000009
【図８】
2016110411.tif 000010
【図９】
2016110411.tif 000011
【図１０】
2016110411.tif 000012
【図１１】
2016110411.tif 000013
【図１２】
2016110411.tif 000014
【図１３】
2016110411.tif 000015
【図１４】
2016110411.tif 000016