(57)【特許請求の範囲】
【請求項１】
プログラムの更新を管理するプログラム更新管理装置から送信される、現行プログラムの更新に用いられる通信パケットデータを受信する受信部と、
前記通信パケットデータを用いて前記現行プログラムの更新プログラムをパケット更新プログラムとして取得するプログラム取得部と、
前記現行プログラムと前記パケット更新プログラムとの差分を解析して、前記パケット更新プログラムが前記現行プログラムの正常な更新プログラムである確度を判定する正常確度判定部とを有する情報処理装置。
【請求項２】
前記正常確度判定部は、
前記現行プログラムと前記パケット更新プログラムとの差分の量を解析して、前記確度を判定する請求項１に記載の情報処理装置。
【請求項３】
前記正常確度判定部は、
前記現行プログラムと前記パケット更新プログラムとの差分の量と、前記現行プログラムと前記パケット更新プログラムとで値が変更になっているパラメータにおける値の変更度合いとを解析して、前記確度を判定する請求項１に記載の情報処理装置。
【請求項４】
前記正常確度判定部は、
前記現行プログラムの更新予定と、前記現行プログラムと前記パケット更新プログラムとの差分とを解析して、前記確度を判定する請求項１に記載の情報処理装置。
【請求項５】
前記正常確度判定部は、
前記差分及び前記確度のうちの少なくともいずれかを規定の端末装置に出力する請求項１に記載の情報処理装置。
【請求項６】
前記正常確度判定部は、
保護対象システムへの攻撃が検知されたことを通知する攻撃検知アラートに示される攻撃の属性と、前記保護対象システムに対する保守作業の予定とを照合して、前記攻撃検知アラートが前記保護対象システムに対する保守作業により発生したか前記保護対象システムに対する攻撃により発生したかを判定する請求項１に記載の情報処理装置。
【請求項７】
コンピュータが、プログラムの更新を管理するプログラム更新管理装置から送信される、現行プログラムの更新に用いられる通信パケットデータを受信し、
前記コンピュータが、前記通信パケットデータを用いて前記現行プログラムの更新プログラムをパケット更新プログラムとして取得し、
前記コンピュータが、前記現行プログラムと前記パケット更新プログラムとの差分を解析して、前記パケット更新プログラムが前記現行プログラムの正常な更新プログラムである確度を判定する情報処理方法。
【請求項８】
プログラムの更新を管理するプログラム更新管理装置から送信される、現行プログラムの更新に用いられる通信パケットデータを受信する受信処理と、
前記通信パケットデータを用いて前記現行プログラムの更新プログラムをパケット更新プログラムとして取得するプログラム取得処理と、
前記現行プログラムと前記パケット更新プログラムとの差分を解析して、前記パケット更新プログラムが前記現行プログラムの正常な更新プログラムである確度を判定する正常確度判定処理とをコンピュータに実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの更新に関する。
【背景技術】
【０００２】
近年では、ウイルス又は悪意のある不正ソフトウェア（マルウェア）によるサイバー攻撃が増加している。例えば、重要なインフラストラクチャを構成するプラント又は工場に対する、ウイルス又は不正ソフトウェアによるサイバー攻撃が増加している。【０００３】
例えば、特許文献１では、産業制御システムへの侵入及び異常を検知する侵入防止システムが開示されている。産業制御システムがサイバー攻撃を受けると、不正なアクセスによって、産業制御システムが不正な挙動を起こす。このため、特許文献１の侵入防止システムは、ネットワーク通信の監視と、制御システム挙動（パラメータ）の測定を行うことで、産業制御システムへの侵入及び異常を検知する。【０００４】
特許文献２では、監視モジュールが、プログラムコードやハードウェア構成、ソフトウェア構成などを保存するメモリの内容を監視することで、制御又は調節を行うユニットの動作状態、ハードウェアの拡張状態、プログラムの状態等を監視する。そして、監視モジュールは、監視の結果、不正な操作を検出する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１７９０７４号公報
【特許文献２】特表２０１６−５０５１８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
保守端末装置による保守作業では、制御プログラムの更新など、通常の端末装置と比べて多くの処理が可能である。例えば、保守端末装置から、制御プログラムを更新するための通信パケットデータをコントローラに送信することも可能である。作業員が、保守端末装置がウイルスに感染していることに気付かずに保守端末装置を用いて保守作業を行うと、ウイルスにより改ざんされた通信パケットデータが送信される。この結果、ウイルスにより改ざんされた通信パケットデータによって、正規プログラムが不正なプログラムに更新されてしまい、保守対象機器に異常が発生する。【０００７】
しかしながら、特許文献１及び特許文献２のいずれにおいても、前述の保守端末装置のようなプログラムの更新を管理するプログラム更新管理装置から送信される通信パケットデータによって更新されるプログラムは検査されない。このため、特許文献１及び特許文献２の技術では、プログラム更新管理装置がウイルスに感染した場合に、プログラム更新管理装置から送信される通信パケットデータによってプログラムが不正に更新されることを防止することができないという課題がある。【０００８】
本発明は、上記のような課題を解決することを主な目的の一つとしている。具体的には、プログラム更新管理装置から送信される通信パケットデータによってプログラムが不正に更新されることを防止することを主な目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る情報処理装置は、
プログラムの更新を管理するプログラム更新管理装置から送信される、現行プログラムの更新に用いられる通信パケットデータを受信する受信部と、
前記通信パケットデータを用いて前記現行プログラムの更新プログラムをパケット更新プログラムとして取得するプログラム取得部と、
前記現行プログラムと前記パケット更新プログラムとの差分を解析して、前記パケット更新プログラムが前記現行プログラムの正常な更新プログラムである確度を判定する正常確度判定部とを有する。
【発明の効果】
【００１０】
本発明によれば、プログラム更新管理装置から送信される通信パケットデータによってプログラムが不正に更新されることを防止することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係るシステム構成例を示す図。
【図２】実施の形態１に係る正常作業判定装置のハードウェア構成例を示す図。
【図３】実施の形態１に係る正常作業判定装置の機能構成例を示す図。
【図４】実施の形態１に係る正常作業判定装置の動作例を示すフローチャート。
【図５】実施の形態１に係る受信部及び制御プログラム構築部の動作例を示すフローチャート。
【図６】実施の形態１に係る過去プログラム記憶部の動作例を示すフローチャート。
【図７】実施の形態１に係る差分判定部の動作例を示すフローチャート。
【図８】実施の形態１に係る正常確度基準の例を示す図。
【図９】実施の形態１に係る差分判定部の動作例を示すフローチャート。
【図１０】実施の形態２に係る正常作業判定装置の機能構成例を示す図。
【図１１】実施の形態２に係る保守工事予定ＤＢの動作例を示すフローチャート。
【図１２】実施の形態２に係る保守工事予定テーブルの例を示す図。
【図１３】実施の形態２に係る予定作業判定部の動作例を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
【００１３】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係るシステム構成例を示す。
図１に示すように、本実施の形態に係るシステムは、正常作業判定装置１００、保守端末装置１０１、複数のコントローラ１０２及びパケットキャプチャ１０３で構成される。
【００１４】
正常作業判定装置１００は、情報処理装置に相当する。また、正常作業判定装置１００により行われる動作は、情報処理方法及び情報処理プログラムに相当する。正常作業判定装置１００の詳細は後述する。
【００１５】
保守端末装置１０１は、コントローラ１０２で実行される制御プログラムの更新を管理する。保守端末装置１０１は、プログラム更新管理装置に相当する。保守端末装置１０１は、通信パケットデータ１０７をコントローラ１０２に送信する。
通信パケットデータ１０７には、制御プログラムの更新に用いられるものと、制御プログラムの更新に用いられないものとがある。なお、通信パケットデータ１０７の詳細は後述する。
コントローラ１０２は、保守対象機器であり、複数存在する。各コントローラ１０２は、保守端末装置１０１から通信パケットデータ１０７を受信する。そして、各コントローラ１０２は、制御プログラムの更新に用いられる通信パケットデータ１０７を受信した場合は、受信した通信パケットデータ１０７を用いて制御プログラムを更新する。また、各コントローラ１０２は、更新後の制御プログラムを他の機器にインストールしてもよい。
なお、以下では、通信パケットデータ１０７を用いた更新が行われる前の制御プログラムを現行プログラムという。また、通信パケットデータ１０７を用いた更新により得られる制御プログラムをパケット更新プログラムという。
パケットキャプチャ１０３は、保守端末装置１０１からコントローラ１０２に送信される通信パケットデータ１０７を収集し、収集した通信パケットデータ１０７を正常作業判定装置１００に送信する。パケットキャプチャ１０３は、例えば、ホワイトリストを用いる異常検知システムによって実現される。
なお、後述するように、正常作業判定装置１００も、通信パケットデータ１０７を用いて現行プログラムを更新して、パケット更新プログラムを取得する。
【００１６】
ここで、通信パケットデータ１０７の詳細を説明する。図１に示すように、通信パケットデータ１０７には、少なくとも、タイムスタンプ、コントローラ情報、命令コマンドが含まれる。
タイムスタンプは、通信パケットデータ１０７の生成時刻を示す。コントローラ情報は、通信パケットデータ１０７の宛先のコントローラ１０２を示す。命令コマンドは、コントローラ情報に示されるコントローラ１０２への命令である。通信パケットデータ１０７が制御プログラムの更新に用いられる場合には、命令コマンドには、後述するプログラムデータからパケット更新プログラムを生成するための命令文が記述されている。
制御プログラムの更新に用いられる通信パケットデータ１０７には、プログラムデータが含まれる。プログラムデータは、パケット更新プログラムを分割して得られる部分プログラムである。つまり、複数のプログラムデータを組み合わせることにより、パケット更新プログラムが得られる。
コントローラ１０２は、複数の通信パケットデータ１０７を送信する。パケットキャプチャ１０３は、保守端末装置１０１から送信された複数の通信パケットデータ１０７を収集し、収集した複数の通信パケットデータ１０７を正常作業判定装置１００に送信する。正常作業判定装置１００は、複数の通信パケットデータ１０７をパケットキャプチャ１０３から受信し、複数の通信パケットデータ１０７から複数のプログラムデータを抽出し、抽出した複数のプログラムデータを組み合わせてパケット更新プログラムを得る。
なお、通信パケットデータ１０７には、タイムスタンプ、コントローラ情報、命令コマンド、プログラムデータ以外のデータも含まれているが、本実施の形態に直接関係しないので、説明を省略する。
また、パケットキャプチャ１０３は、通信パケットデータ１０７をそのまま正常作業判定装置１００に送信してもよい。また、パケットキャプチャ１０３は、通信パケットデータ１０７からタイムスタンプ、コントローラ情報、命令コマンド、プログラムデータのみを抽出し、抽出したタイムスタンプ、コントローラ情報、命令コマンド、プログラムデータのみを正常作業判定装置１００に送信してもよい。以下では、パケットキャプチャ１０３は、通信パケットデータ１０７をそのまま正常作業判定装置１００に送信する例を説明する。
【００１７】
図２は、本実施の形態に係る正常作業判定装置１００のハードウェア構成例を示す。
正常作業判定装置１００は、コンピュータである。
図２に示すように、正常作業判定装置１００は、ハードウェアとして、プロセッサ２０１、メモリ２０２、通信インタフェース２０３、補助記憶装置２０４及び入出力インタフェース２０５を備える。
プロセッサ２０１、メモリ２０２、通信インタフェース２０３、補助記憶装置２０４及び入出力インタフェース２０５はシステムバスで接続されている。
【００１８】
補助記憶装置２０４には、図３を参照して後述する制御プログラム構築部１０４、差分判定部１０６及び受信部１１５の機能を実現するプログラムが記憶されている。当該プログラムは、メモリ２０２にロードされる。そして、当該プログラムはメモリ２０２からプロセッサ２０１に読み出され、プロセッサ２０１により実行される。
プロセッサ２０１がプログラムを実行することで、後述する制御プログラム構築部１０４、差分判定部１０６及び受信部１１５の動作が行われる。
通信インタフェース２０３は、パケットキャプチャ１０３と通信するために用いられる。
入出力インタフェース２０５は、正常作業判定装置１００のユーザが各種データを入力するため及び正常作業判定装置１００のユーザに各種データを提示するために用いられる。
【００１９】
図３は、本実施の形態に係る正常作業判定装置１００の機能構成例を示す。
図３に示すように、正常作業判定装置１００は、制御プログラム構築部１０４、過去プログラム記憶部１０５、差分判定部１０６及び受信部１１５で構成される。
【００２０】
受信部１１５は、パケットキャプチャ１０３から、保守端末装置１０１から送信された通信パケットデータ１０７を受信する。
受信部１１５により行われる処理は、受信処理に相当する。
【００２１】
制御プログラム構築部１０４は、通信パケットデータ１０７を用いて現行プログラムを更新し、現行プログラムの更新プログラムをパケット更新プログラム１０９として取得する。つまり、制御プログラム構築部１０４は、複数の通信パケットデータ１０７から複数のプログラムデータを抽出し、抽出した複数のプログラムデータを組み合わせて、パケット更新プログラム１０９を生成する。
また、制御プログラム構築部１０４は、通信パケットデータ１０７に含まれるタイムスタンプを時刻情報１０８として抽出する。また、制御プログラム構築部１０４は、通信パケットデータ１０７からコントローラ情報をコントローラ情報１１４として抽出する。
そして、制御プログラム構築部１０４は、時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４を差分判定部１０６に出力する。
また、制御プログラム構築部１０４は、時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４を過去プログラム記憶部１０５に格納する。
制御プログラム構築部１０４は、プログラム取得部に相当する。また、制御プログラム構築部１０４により行われる処理は、プログラム取得処理に相当する。
【００２２】
過去プログラム記憶部１０５は、現行プログラム１１０及び現行プログラム１１０より以前の制御プログラムを記憶する。なお、現行プログラム１１０及び現行プログラム１１０より以前の制御プログラムを、まとめて過去プログラムともいう。
過去プログラム記憶部１０５は、メモリ２０２又は補助記憶装置２０４により実現される。
【００２３】
差分判定部１０６は、制御プログラム構築部１０４から時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４を受信する。また、差分判定部１０６は、過去プログラム記憶部１０５から現行プログラム１１０を読み出す。差分判定部１０６が過去プログラム記憶部１０５から読み出す現行プログラム１１０は、制御プログラム構築部１０４から受信したパケット更新プログラム１０９の一つ前のバージョン（更新前）の制御プログラムである。
そして、差分判定部１０６は、現行プログラム１１０とパケット更新プログラム１０９との差分を解析して、パケット更新プログラム１０９が現行プログラム１１０の正常な更新プログラムである確度を判定する。
より具体的には、差分判定部１０６は、現行プログラム１１０とパケット更新プログラム１０９との差分の量（例えば、変更のあった行数）と、現行プログラム１１０とパケット更新プログラム１０９とで値が変更になっているパラメータにおける値の変更度合いとを解析して、パケット更新プログラム１０９が現行プログラム１１０の正常な更新プログラムである確度を判定する。
また、差分判定部１０６は、現行プログラム１１０とパケット更新プログラム１０９との差分の量のみを解析して、パケット更新プログラム１０９が現行プログラム１１０の正常な更新プログラムである確度を判定してもよい。
そして、差分判定部１０６は、判定結果１１１を出力する。判定結果１１１には、変更状態１１２と正常確度１１３が含まれる。変更状態１１２は、現行プログラム１１０とパケット更新プログラム１０９との差分である。正常確度１１３は、差分判定部１０６が判定した、パケット更新プログラム１０９が現行プログラム１１０の正常な更新プログラムである確度である。
差分判定部１０６は、例えば、判定結果１１１を規定の端末装置（不図示）に出力する。また、差分判定部１０６は、判定結果１１１の端末装置への出力とともに、判定結果１１１を補助記憶装置２０４に格納してもよい。また、差分判定部１０６は、判定結果１１１を端末装置に出力せずに、判定結果１１１を補助記憶装置２０４に格納してもよい。また、差分判定部１０６は、判定結果１１１を入出力インタフェース２０５であるディスプレイ装置に出力してもよい。
差分判定部１０６は、正常確度判定部に相当する。また、差分判定部１０６で行われる処理は、正常確度判定処理に相当する。
【００２４】
前述したように、制御プログラム構築部１０４、差分判定部１０６及び受信部１１５はプログラムで実現される。そして、プロセッサ２０１が当該プログラムを実行して、制御プログラム構築部１０４、差分判定部１０６及び受信部１１５として動作する。
図３では、プロセッサ２０１が制御プログラム構築部１０４、差分判定部１０６及び受信部１１５の機能を実現するプログラムを実行している状態を模式的に表している。
【００２５】
＊＊＊動作の説明＊＊＊
次に、本実施の形態に係る正常作業判定装置１００の動作を説明する。
図４は、正常作業判定装置１００の動作の概要を示す。
図５は、受信部１１５及び制御プログラム構築部１０４の動作（図４のＳ３０１及びＳ３０２の詳細）を示す。
図６は、過去プログラム記憶部１０５の動作（図４のＳ３０３及びＳ３０５の詳細）を示す。
図７は、差分判定部１０６の動作（図４のＳ３０４の詳細）を示す。
【００２６】
最初に、図４を用いて、正常作業判定装置１００の動作の概要を説明する。
【００２７】
先ず、受信部１１５が、パケットキャプチャ１０３から通信パケットデータ１０７を受信する（ステップＳ３０１）。
また、受信部１１５は、通信パケットデータ１０７を制御プログラム構築部１０４に出力する。
【００２８】
次に、制御プログラム構築部１０４が、通信パケットデータ１０７を用いてパケット更新プログラム１０９を取得する（ステップＳ３０２）。
また、制御プログラム構築部１０４は、パケット更新プログラム１０９、時刻情報１０８及びコントローラ情報１１４を差分判定部１０６に転送する。
【００２９】
次に、差分判定部１０６が、過去プログラム記憶部１０５から現行プログラム１１０を読み出す（ステップＳ３０３）。
【００３０】
次に、差分判定部１０６が、パケット更新プログラム１０９と現行プログラム１１０との差分を抽出し、正常確度を判定する（ステップＳ３０４）。
そして、差分判定部１０６は、判定結果１１１を出力する。
【００３１】
差分判定部１０６により判定された正常確度が規定値以上であれば、制御プログラム構築部１０４がパケット更新プログラム１０９を現行プログラム１１０として過去プログラム記憶部１０５に格納する（ステップＳ３０５）。
【００３２】
次に、図５を用いて、受信部１１５及び制御プログラム構築部１０４の動作を説明する。
なお、前述したように、保守端末装置１０１は、パケット更新プログラムを複数の部分プログラムに分割し、複数の部分プログラムをプログラムデータとして複数の通信パケットデータ１０７に格納する。そして、保守端末装置１０１は、複数の通信パケットデータ１０７をコントローラ１０２に送信する。パケットキャプチャ１０３は、保守端末装置１０１とコントローラ１０２とを接続するネットワークに接続されており、保守端末装置１０１からコントローラ１０２に送信された通信パケットデータ１０７を収集し、収集した通信パケットデータ１０７を正常作業判定装置１００に送信する。
なお、以下では、保守端末装置１０１は、プログラムデータを含む最初の通信パケットデータ１０７を送信する前に、プログラムデータを含まない通信パケットデータ１０７をコントローラ１０２に送信するものとする。また、保守端末装置１０１は、プログラムデータを含む最後の通信パケットデータ１０７を送信した後に、プログラムデータを含まない通信パケットデータ１０７をコントローラ１０２に送信するものとする。
このため、受信部１１５は、プログラムデータを含まない通信パケットデータ１０７を受信した後、プログラムデータを含む複数の通信パケットデータ１０７を受信し、その後、プログラムデータを含まない通信パケットデータ１０７を受信する。
【００３３】
受信部１１５は、パケットキャプチャ１０３から通信パケットデータ１０７を受信する（ステップＳ４０１）。受信部１１５は、受信した通信パケットデータ１０７を制御プログラム構築部１０４に出力する。
【００３４】
次に、制御プログラム構築部１０４は、今回受信された通信パケットデータ１０７（以下、今回の通信パケットデータ１０７という）を分解する。つまり、制御プログラム構築部１０４は、今回の通信パケットデータ１０７を、タイムスタンプ、コントローラ情報、命令コマンド等に分解する。そして、制御プログラム構築部１０４は、通信パケットデータ１０７にプログラムデータが含まれるか否かを判定する（ステップＳ４０２）。
今回の通信パケットデータ１０７にプログラムデータが含まれる場合（ステップＳ４０２でＹＥＳ）は、通信パケットデータ１０７は、前回受信された通信パケットデータ１０７（以下、前回の通信パケットデータ１０７という）にプログラムデータが含まれるか否かを判定する（ステップＳ４０３）。
【００３５】
前回の通信パケットデータ１０７にプログラムデータが含まれない場合（ステップＳ４０３でＮＯ）は、制御プログラム構築部１０４は、今回の通信パケットデータ１０７に含まれるタイムスタンプから時刻情報１０８を生成する。具体的には、今回の通信パケットデータ１０７に含まれるタイムスタンプを時刻情報１０８として抽出する。
次に、制御プログラム構築部１０４は、今回の通信パケットデータ１０７に含まれるプログラムデータ及びコントローラ情報１１４と、ステップＳ４０４で生成された時刻情報１０８とを、相互に対応付けて一時記憶領域に保存する（ステップＳ４０５）。一時記憶領域は、例えば、メモリ２０２又はプロセッサ２０１内のレジスタである。
一方、前回の通信パケットデータ１０７にプログラムデータが含まれる場合（ステップＳ４０３でＹＥＳ）は、既に時刻情報１０８は生成済みなので、制御プログラム構築部１０４は、ステップＳ４０４を省略して、今回の通信パケットデータ１０７に含まれるプログラムデータを一時記憶領域に保存する（ステップＳ４０５）。具体的には、制御プログラム構築部１０４は、前回の通信パケットデータ１０７に含まれるプログラムデータと対応付けて今回の通信パケットデータ１０７に含まれるプログラムデータを一時記憶領域に保存する。
【００３６】
ステップＳ４０２において今回の通信パケットデータ１０７にプログラムデータが含まれない場合（ステップＳ４０２でＮＯ）は、制御プログラム構築部１０４は、前回の通信パケットデータ１０７にプログラムデータが含まれるか否かを判定する（ステップＳ４０６）。
【００３７】
前回の通信パケットデータ１０７にプログラムデータが含まれない場合（ステップＳ４０６でＮＯ）は、制御プログラム構築部１０４は、処理を終了する。
一方、前回の通信パケットデータ１０７にプログラムデータが含まれる場合（ステップＳ４０６でＹＥＳ）は、制御プログラム構築部１０４は、一時記憶領域から複数のプログラムデータ、時刻情報１０８及びコントローラ情報１１４を読み出す（ステップＳ４０７）。
そして、制御プログラム構築部１０４は、読み出した複数のプログラムデータからパケット更新プログラム１０９を生成する（ステップＳ４０８）。
その後、制御プログラム構築部１０４は、生成したパケット更新プログラム１０９と時刻情報１０８とコントローラ情報１１４とを差分判定部１０６に出力する（ステップＳ４０９）。
【００３８】
次に、図６を用いて、過去プログラム記憶部１０５の動作を説明する。
【００３９】
先ず、過去プログラム記憶部１０５は、差分判定部１０６から読み出し要求を受信する（ステップＳ５０１）。
読み出し要求には、時刻情報１０８及びコントローラ情報１１４が含まれる。
【００４０】
次に、過去プログラム記憶部１０５は、読み出し要求に基づき、過去プログラムの中から、コントローラ情報１１４に対応する現行プログラム１１０を抽出し、抽出した現行プログラム１１０を差分判定部１０６に出力する（ステップＳ５０２）。
より具体的には、過去プログラム記憶部１０５は、読み出し要求に含まれるコントローラ情報１１４と同じコントローラ情報１１４に対応付けられており、読み出し要求に含まれる時刻情報１０８に示される時刻以前の時刻であって最も新しい時刻が示されている時刻情報１０８と対応付けられている過去プログラムを、現行プログラム１１０として抽出する。そして、過去プログラム記憶部１０５は、抽出した現行プログラム１１０を差分判定部１０６に出力する。
【００４１】
また、過去プログラム記憶部１０５は、制御プログラム構築部１０４から格納要求を受信する（ステップＳ５０３）。
格納要求には、時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４が含まれる。
【００４２】
次に、過去プログラム記憶部１０５は、格納要求に含まれる時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４を、相互に対応付けて記憶する（ステップＳ５０４）。
【００４３】
次に、図７を用いて、差分判定部１０６の動作を説明する。
【００４４】
差分判定部１０６は、時刻情報１０８、パケット更新プログラム１０９、コントローラ情報１１４及び現行プログラム１１０を受信する（ステップＳ６０１）。
具体的には、差分判定部１０６は、制御プログラム構築部１０４から、時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４を受信し、時刻情報１０８及びコントローラ情報１１４を用いて読み出し要求を生成する。そして、差分判定部１０６は、生成した読み出し要求を過去プログラム記憶部１０５に出力し、過去プログラム記憶部１０５から現行プログラム１１０を受信する。
【００４５】
次に、差分判定部１０６は、パケット更新プログラム１０９と現行プログラム１１０との差分を抽出し、抽出した差分を表す変更状態１１２を生成する（ステップＳ６０２）。
【００４６】
次に、差分判定部１０６は、ステップＳ６０２で生成した変更状態１１２を用いて正常確度１１３を求める（ステップＳ６０３）。本実施の形態では、差分判定部１０６は、図８に示す正常確度基準７０１を用いる。
具体的には、差分判定部１０６は、パケット更新プログラム１０９に含まれる行のうち、現行プログラム１１０から変更になっている行が多いほど正常確度１１３を低くする。また、行での変更が少なかったときには、差分判定部１０６は、現行プログラム１１０とパケット更新プログラム１０９との間で値が変更になっているパラメータを抽出し、抽出したパラメータにおけるパケット更新プログラム１０９と現行プログラム１１０との間の変更の度合いが大きいか否かを判定する。抽出したパラメータにおけるパケット更新プログラム１０９と現行プログラム１１０との間の変更の度合いが大きい場合には、差分判定部１０６は正常確度１１３を「低」とする。
なお、正常確度１１３が高い程、パケット更新プログラム１０９が現行プログラム１１０の正常な更新プログラムである可能性が高い。換言すると、正常確度１１３が低い程、パケット更新プログラム１０９が不正なプログラムである可能性が高い。
【００４７】
最後に、差分判定部１０６は、判定結果１１１として、変更状態１１２及び正常確度１１３を出力する（ステップＳ６０４）。
【００４８】
図９は、図７のステップＳ６００の詳細を説明する。
以下では、図８の正常確度基準７０１を用いて説明を行う。
【００４９】
先ず、差分判定部１０６は、現行プログラム１１０とパケット更新プログラム１０９との間で変更のあった行を計数する（ステップＳ８０１）。
具体的には、差分判定部１０６は、変更状態１１２として、パケット更新プログラム１０９において現行プログラム１１０から削除されている行数ａ、パケット更新プログラム１０９で追加されている行数ｂ、パケット更新プログラム１０９においてパラメータの値が変更になっている行数ｃを計数する。
【００５０】
次に、差分判定部１０６は、プログラムが書き換えられた割合を算出する（ステップＳ８０２）。
具体的には、差分判定部１０６は、ステップＳ８０１で計数された変更行の合計（ａ＋ｂ＋ｃ）が現行プログラム１１０の行数の何割にあたるか（ａ＋ｂ＋ｃ／現行プログラム１１０の行数）を計算する。
【００５１】
次に、差分判定部１０６は、ステップＳ８０２で算出した割合が閾値以下であるか否かを判定する（ステップＳ８０３）。
【００５２】
ステップＳ８０２で算出した割合が閾値を超えている場合（ステップＳ８０３でＮＯ）は、差分判定部１０６は正常確度１１３を「低」に設定する（ステップＳ８０８）。
【００５３】
一方、ステップＳ８０２で算出した割合が閾値以下の場合（ステップＳ８０３でＹＥＳ）は、差分判定部１０６は、変更前のパラメータの値を現行プログラム１１０から抽出し、変更後のパラメータの値をパケット更新プログラム１０９から抽出する（ステップＳ８０４）。差分判定部１０６は、ステップＳ８０４の処理を、値が変更になっているパラメータの各々に対して行う。
【００５４】
次に、差分判定部１０６は、パラメータごとに、パラメータの値の増減の割合を算出する（ステップＳ８０５）。例えばパラメータの値が１０から２５に１５増加するなどの変化を、ここではパラメータの値が値Ｘから値ＹにＡ増加したと表記する。つまり、パラメータ値の増加量をＡと表記し、「Ｘ→Ｙ：Ａ増加」と表記する。また、パラメータが値Ｘから値ＹにＡ減少した場合は、「Ｘ→Ｙ：Ａ減少」と表記する。差分判定部１０６は、パラメータの値の増減の絶対値（以下、｜Ａ｜という）が、パラメータに設定可能な値の幅の何割にあたるかを算出する。具体的には、差分判定部１０６は、コントローラ情報１１４を用いてパラメータごとに設定可能な値の幅が示されるパラメータ設定値データから、対応するパラメータの最大値（ＭＡＸ）と最小値（ＭＩＮ）を取得する。そして、差分判定部１０６は、｜Ａ｜／｜ＭＡＸ−ＭＩＮ｜を算出する。
【００５５】
次に、差分判定部１０６は、パラメータごとに、ステップＳ８０５で得られた値の増減の割合を閾値と比較する（ステップＳ８０６）。
そして、全てのパラメータについて値の増減の割合が閾値以下であれば（ステップＳ８０６でＹＥＳ）、差分判定部１０６は、正常確度１１３を「高」に設定する（ステップＳ８０７）。
一方、一つでも値の増減の割合が閾値を超えていれば（ステップＳ８０６でＮＯ）、差分判定部１０６は正常確度１１３を「低」に設定する（ステップＳ８０８）。
【００５６】
その後、図７に示すように、差分判定部１０６は、判定結果１１１として、変更状態１１２及び正常確度１１３を出力する（ステップＳ６０４）。
なお、差分判定部１０６は、正常確度１１３を「高」と設定した場合は、制御プログラム構築部１０４にパケット更新プログラム１０９の過去プログラム記憶部１０５への格納を指示する。制御プログラム構築部１０４は、差分判定部１０６からの指示に従い、時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４を含む格納要求を過去プログラム記憶部１０５に出力する。過去プログラム記憶部１０５では、図６のステップＳ５０３とステップＳ５０４に従い、時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４を記憶する。また、差分判定部１０６は、正常確度１１３を「低」と設定した場合は、制御プログラム構築部１０４にパケット更新プログラム１０９の過去プログラム記憶部１０５以外の記憶領域への格納を指示する。制御プログラム構築部１０４は、差分判定部１０６からの指示に従い、例えば、時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４を検疫用の外部の記憶領域に格納する。
なお、ここでは、差分判定部１０６により正常確度１１３が生成された後に、制御プログラム構築部１０４が、時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４を過去プログラム記憶部１０５又は外部の記憶領域に格納することとしたが、過去プログラム記憶部１０５は、図５のステップＳ４０９と並行して、時刻情報１０８、パケット更新プログラム１０９及びコントローラ情報１１４を過去プログラム記憶部１０５に格納するようにしてもよい。
【００５７】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態では、正常作業判定装置１００は、パケット更新プログラム１０９と現行プログラム１１０との差分を抽出して、パケット更新プログラム１０９が現行プログラム１１０の正常な更新パケットである確度を判定する。このため、本実施の形態によれば、保守端末装置１０１から送信される通信パケットデータ１０７によって現行プログラム１１０が不正に更新されることを防止することができる。特に、本実施の形態によれば、ウイルスに感染した保守端末装置１０１から通信パケットデータ１０７がコントローラ１０２に送信され、コントローラ１０２の現行プログラム１１０が不正なパケット更新プログラム１０９で更新される事態を防止することができる。
【００５８】
実施の形態２．
以上の実施の形態１では、差分判定部１０６は、変更状態１１２のみで正常確度１１３を判定している。本実施の形態では、差分判定部１０６は、変更状態１１２と、現行プログラム１１０の更新予定とに基づき、正常確度１１３を決定する。
本実施の形態では、主に実施の形態１との差異を説明する。
なお、本実施の形態で説明していない事項は、実施の形態１と同様である。
【００５９】
＊＊＊構成の説明＊＊＊
本実施の形態に係るシステム構成例は、図１に示すものと同じである。
また、本実施の形態に係る正常作業判定装置１００のハードウェア構成例は図２に示すものと同じである。
【００６０】
図１０は、本実施の形態に係る正常作業判定装置１００の機能構成例を示す。
図１０では、図３の構成と比較して、予定作業判定部９０１と保守工事予定ＤＢ９０２とが追加されている。また、本実施の形態では、差分判定部１０６は、判定結果１１１を出力せずに、代わりに、時刻情報１０８、変更状態１１２及び正常確度１１３を予定作業判定部９０１に出力する。なお、本実施の形態では、差分判定部１０６及び予定作業判定部９０１が正常確度判定部に相当する。
予定作業判定部９０１及び保守工事予定ＤＢ９０２以外の構成は、図３に示したものと同じであるため、説明を省略する。
【００６１】
予定作業判定部９０１は、差分判定部１０６から、時刻情報１０８、変更状態１１２、正常確度１１３を受信する。また、予定作業判定部９０１は、時刻情報１０８を保守工事予定ＤＢ９０２に出力する。そして、予定作業判定部９０１は、保守工事予定ＤＢ９０２から予定情報９０３を受信する。予定情報９０３には、現行プログラム１１０のコントローラ１０２についての保守作業又は工事作業の予定が示される。予定作業判定部９０１は、予定情報９０３に示される保守作業又は工事作業の予定と変更状態１１２とが合致するか否かを判定する。そして、予定作業判定部９０１は、判定の結果、必要であれば、正常確度１１３を変更する。例えば、差分判定部１０６から受信した正常確度１１３が「高」である場合に、予定情報９０３に示される保守作業又は工事作業で現行プログラム１１０からパケット更新プログラム１０９への更新が行われていない可能性が高い場合は、予定作業判定部９０１は正常確度１１３を「低」に変更する。一方、差分判定部１０６から受信した正常確度１１３が「低」である場合に、予定情報９０３に示される保守作業又は工事作業で現行プログラム１１０からパケット更新プログラム１０９への更新が行われた可能性が高い場合は、予定作業判定部９０１は正常確度１１３を「高」に変更する。
予定作業判定部９０１は、制御プログラム構築部１０４、差分判定部１０６及び受信部１１５と同様、プログラムで実現される。
【００６２】
保守工事予定ＤＢ９０２は、保守工事予定テーブルを管理する。保守工事予定テーブルには、保守作業及び工事作業の予定が記述される。保守工事予定ＤＢ９０２は、予定作業判定部９０１から時刻情報１０８を受信し、受信した時刻情報１０８に対応する保守作業又は工事作業の予定を保守工事予定テーブルから抽出する。そして、保守工事予定ＤＢ９０２は、抽出した保守作業又は工事作業の予定が示される予定情報９０３を予定作業判定部９０１に返す。
保守工事予定ＤＢ９０２は、メモリ２０２又は補助記憶装置２０４により実現される。
【００６３】
＊＊＊動作の説明＊＊＊
次に、本実施の形態に係る正常作業判定装置１００の動作を説明する。
差分判定部１０６が正常確度１１３を判定するまでの手順は実施の形態１に示したものと同じであるため、差分判定部１０６が正常確度１１３を判定するまでの手順の説明は省略する。
【００６４】
本実施の形態では、差分判定部１０６は、正常確度１１３を判定すると、時刻情報１０８、変更状態１１２及び正常確度１１３を予定作業判定部９０１に出力する。
以降では、差分判定部１０６が予定作業判定部９０１に時刻情報１０８、変更状態１１２及び正常確度１１３を予定作業判定部９０１に出力した後の手順を説明する。
【００６５】
図１１は、保守工事予定ＤＢ９０２の動作を示す。図１２は、保守工事予定ＤＢ９０２が管理する保守工事予定テーブルの例を示す。図１３は、予定作業判定部９０１の動作を示す。
以下に、図１１〜図１３を用いて、予定作業判定部９０１及び保守工事予定ＤＢ９０２の動作を説明する。
【００６６】
図１３に示すように、予定作業判定部９０１は、差分判定部１０６から時刻情報１０８、変更状態１１２及び正常確度１１３を受信する（ステップＳ１２０１）。
次に、予定作業判定部９０１は、時刻情報１０８を保守工事予定ＤＢ９０２へ出力する（ステップＳ１２０２）。
【００６７】
保守工事予定ＤＢ９０２では、図１１に示すように、予定作業判定部９０１から時刻情報１０８を受信する（ステップＳ１００１）。
そして、保守工事予定ＤＢ９０２は、予定作業判定部９０１から受信した時刻情報１０８に示される時刻付近の予定を保守工事予定テーブル１１０１において検索する（ステップＳ１００２）。
例えば、時刻情報１０８に示される時刻が図１０の符号９０４のように「２０１７／０２／２１  １１：００」である場合は、保守工事予定ＤＢ９０２は、保守工事予定テーブル１１０１の年、月日、開始時刻、終了時刻の列を参照し、「２０１７／０２／２１  １１：００」に近い予定として、図１２の符号９０５で示す行を抽出する。
このように、時刻情報１０８に示される時刻付近の予定があった場合（ステップＳ１００３でＹＥＳ）は、保守工事予定ＤＢ９０２は、当該予定が示される予定情報９０３を予定作業判定部９０１に出力する（ステップＳ１００４）。
なお、図１１では図示していないが、保守工事予定テーブル１１０１は、保守端末装置１０１の識別子、保守対象のコントローラ１０２の識別子（例：コントローラ名、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス、ホスト名）を含んでいてもよい。また、保守工事予定テーブル１１０１は、保守端末装置１０１が使用する保守ツール名、保守端末装置１０１で保守に使用するコマンド名（ＯＳコマンドや、保守ツールのコマンド）を含んでいてもよい。更に、保守工事予定テーブル１１０１は、保守端末装置１０１における保守ツールのメニュー、保守端末装置１０１を使用する保守作業者、保守端末装置１０１において保守で使用するアカウント情報（ユーザ名など）を含んでもよい。
【００６８】
予定作業判定部９０１は、図１３に示すように、保守工事予定ＤＢ９０２から予定情報９０３を受信しない場合（ステップＳ１２０３でＮＯ）は、正常確度１１３を「低」に設定する（ステップＳ１２０６）。なお、差分判定部１０６から取得した正常確度１１３が既に「低」である場合は、予定作業判定部９０１は正常確度１１３を更新する必要はない。
一方、保守工事予定ＤＢ９０２から予定情報９０３を受信した場合（ステップＳ１２０３でＹＥＳ）は、予定作業判定部９０１は、受信した予定情報９０３に、コントローラ情報１１４に関する変更状態１１２を示唆する情報又は変更状態１１２が推定できる情報が記述されているか否かを判定する（ステップＳ１２０４）。例えば、予定情報９０３に「コントローラと接続する機器の追加」、「コントローラと接続する機器の撤去」、「パラメータ変更」、「制御プログラムへの機能の追加」等が記述されていれば、予定作業判定部９０１は、変更状態１１２を示唆する情報又は変更状態１１２が推定できる情報が予定情報９０３に記述されていると判定する。
【００６９】
予定情報９０３に、変更状態１１２を示唆する情報又は変更状態１１２が推定できる情報が記述されている場合（ステップＳ１２０４でＹＥＳ）は、予定作業判定部９０１は、予定情報９０３に記述されている情報と、変更状態１１２とを比較する。そして、予定作業判定部９０１は、変更状態１１２が、予定されていた変更状態であるか否かを判定する（ステップＳ１２０５）。つまり、予定作業判定部９０１は、予定情報９０３に示される保守作業又は工事作業で現行プログラム１１０からパケット更新プログラム１０９への更新が予定されていたか否かを判定する。
変更状態１１２が、予定されていた変更状態である場合（ステップＳ１２０５でＹＥＳ）、すなわち、予定情報９０３に示される保守作業又は工事作業で現行プログラム１１０からパケット更新プログラム１０９への更新が予定されていたと推定できる場合は、予定作業判定部９０１は、正常確度１１３を「高」に設定する（ステップＳ１２０６）。なお、差分判定部１０６から取得した正常確度１１３が既に「高」である場合は、予定作業判定部９０１は正常確度１１３を更新する必要はない。
一方、変更状態１１２が、予定されていた変更状態でない場合（ステップＳ１２０５でＹＥＳ）は、予定作業判定部９０１は、正常確度１１３を「低」に設定する（ステップＳ１２０６）。なお、差分判定部１０６から取得した正常確度１１３が既に「低」である場合は、予定作業判定部９０１は正常確度１１３を更新する必要はない。
【００７０】
また、予定情報９０３から変更状態１１２が推定できない場合（ステップＳ１２０４でＮＯ）は、予定作業判定部９０１は、差分判定部１０６から出力された正常確度１１３が「高」であるか否かを判定する（ステップＳ１２０７）。差分判定部１０６から出力された正常確度１１３が「高」である場合（ステップＳ１２０７でＹＥＳ）は、予定作業判定部９０１は、正常確度１１３を「低」に設定する（ステップＳ１２０６）。差分判定部１０６から出力された正常確度１１３が「高」でない場合（ステップＳ１２０７でＮＯ）は、予定作業判定部９０１は、ステップＳ１２０９を行う。
【００７１】
正常確度１１３が確定すると、予定作業判定部９０１は、判定結果１１１として、変更状態１１２及び正常確度１１３を出力する（ステップＳ１２０９）。
【００７２】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態では、予定作業判定部９０１が予定情報９０３を参照して差分判定部１０６で判定した正常確度の正当性を判定する。このため、本実施の形態によれば、より高精度にパケット更新プログラム１０９が正当な更新プログラムであるか否かを判定することが可能である。また、本実施の形態によれば、作業員が正しい時間に正しい作業を行っているかを判定することができ、作業員による不正な操作も検知することができる。
【００７３】
なお、正常確度の判定基準は、正常作業判定装置１００のオペレータが、過去の制御プログラムの更新状況を調査して生成することができる。例えば、オペレータは、過去の制御プログラムの更新状況の調査の結果、更新態様として、行の削除、行の追加、パラメータの値の変更、パラメータの置き換え等を設定する。そして、オペレータは、正常確度の判定基準に、発生確率に基づいて更新態様ごとに重み係数を設定してもよい。また、オペレータは、過去の制御プログラムの更新状況に基づき、正常確度の判定基準に、行数増減量の正常値及びパラメータの値の増減量の正常値を設定してもよい。
【００７４】
また、プログラムデータは複数の通信パケットデータに分割されずに、１つの通信パケットデータのみに含まれていてもよい。
【００７５】
また、実施の形態１及び実施の形態２では、正常確度１１３は「高」と「低」のみであるが、正常確度１１３の段階を３段階以上としてもよい。
【００７６】
また、差分判定部１０６及び予定作業判定部９０１は、判定結果１１１を、保守作業を行う作業員が利用するタブレット端末又は工事作業を行う作業員が利用するタブレット端末に出力してもよい。
【００７７】
実施の形態３．
本実施の形態では、産業制御システムに設置されたセキュリティ機器が産業制御システムへの攻撃を検知した場合に、攻撃検知アラートを正常作業判定装置１００に送信する。正常作業判定装置１００は、保守工事予定ＤＢ９０２を参照して、攻撃検知アラートの原因が産業制御システムに対する保守作業によるものなのか、攻撃によるものなのかを判定する。セキュリティ機器の攻撃の検知方法によっては、保守作業による処理を、攻撃活動であると検知してしまうこと（誤検知）がある。本実施の形態では、正常作業判定装置１００は、このような誤検知を低減させる。
なお、産業制御システムは、保護対象システムである。
【００７８】
本実施の形態に係る正常作業判定装置１００のハードウェア構成は図１に示す通りである。また、本実施の形態に係る正常作業判定装置１００の機能構成は図１０に示す通りである。しかしながら、正常作業判定装置１００の受信部１１５は、図示していないセキュリティ機器（例：侵入検知装置、ログ分析装置）から、攻撃検知アラートを受信する。
セキュリティ機器は、複数のコントローラ１０２、産業制御システムに含まれる複数の機器、複数の端末、複数の計算機及び産業制御システム全体に対する攻撃を検知する。セキュリティ機器の一例である侵入検知装置は、産業制御システムのネットワークにおける通信の異常を検知する。また、セキュリティ機器の一例であるログ分析装置は、各コントローラ１０２、各機器、各端末、各計算機のイベントログ、通信機器のログ、侵入検知装置やアンチウイルスソフトウエアなどのアラートログを収集する。また、ログ分析装置は、収集したログの各々を個別に分析する。更に、ログ分析装置は、複数のログを相互に関係づけて分析することも可能である。ログ分析装置は、このようなログの分析を介して、不審な事象の発生を検知する。
セキュリティ機器は、産業制御システムへの攻撃を検知した場合に、産業制御システムへの攻撃が検知されたことを通知する攻撃検知アラートを正常作業判定装置１００に送信する。セキュリティ機器は、通信パケットデータ１０７として、攻撃検知アラートを正常作業判定装置１００に送信する。なお、セキュリティ機器は、ファイル形式で攻撃検知アラートを正常作業判定装置１００に通知してもよい。
なお、本実施の形態では、セキュリティ機器は、通信パケットデータ１０７として攻撃検知アラートを正常作業判定装置１００に送信するものとする。
セキュリティ機器が検知する攻撃は、例えば、ウイルス感染、サービス妨害攻撃等である。
【００７９】
攻撃検知アラートは、例えば、以下の構成要素からなる。以下の構成要素の各々は、検知された攻撃の属性を示す。
・攻撃検知時刻（又は、攻撃が開始された時刻から攻撃が終了した時刻（期間））
・攻撃を受けたコントローラ、機器、端末等の識別子（例：ＩＰアドレス、コントローラ名、機器名、端末名等）
・攻撃を行ったコントローラ、機器、端末等の識別子（例：ＩＰアドレス、コントローラ名、機器名、端末名等）
・攻撃の内容（例：アラート識別子や攻撃名称を示す文字列で表現される）
・攻撃が検知された際の状況を通知する情報
上記の「攻撃を検知した際の状況を通知する情報」は、例えば、攻撃に使用されたコマンド（引数を含んでもよい）、攻撃者が操作しようとしたファイルの名称又はレポジトリの名称、攻撃に使用されたプログラムの名称又はツールの名称、当該プログラム又はツールにおけるメニュー名、攻撃に関連するプロセスの名称又はやサービスの名称である。また、「攻撃が検知された際の状況を通知する情報」に、攻撃に使用されたアカウント名が含まれていてもよい。また、不正なログインの試行が検知された場合は、「攻撃が検知された際の状況を通知する情報」に、ログインが試行されたたアカウント名が含まれていてもよい。
なお、上記の「攻撃の内容」や「攻撃が検知された際の状況を通知する情報」の例示は一例であり、セキュリティ機器ごとに異なる。
【００８０】
本実施の形態では、受信部１１５は、受信した攻撃検知アラートを予定作業判定部９０１に出力する。
予定作業判定部９０１は、攻撃検知アラートを解釈し、攻撃検知アラートから上記の構成要素を抽出する。
また、予定作業判定部９０１は、攻撃検知時刻、攻撃を受けたコントローラ等の識別子を検索キーとして保守工事予定ＤＢ９０２を検索する。検索方法は、実施の形態２に示したものと同じである。保守工事予定ＤＢ９０２には、産業制御システムに対する保守作業の予定が記述されている。
保守工事予定ＤＢ９０２から、該当する予定情報９０３が検索された場合は、予定作業判定部９０１は、攻撃検知アラートの発生原因は、保守作業によるものと判定する。該当する予定情報９０３が検索されない場合は、予定作業判定部９０１は、攻撃検知アラートの発生原因は保守作業ではなく、攻撃によるものと判定する。
予定作業判定部９０１は、この判定結果を、判定結果１１１として外部に出力する。このとき、判定結果１１１には、変更状態１１２は設定されない。また、予定作業判定部９０１は、攻撃検知アラートの原因が攻撃であると判定した場合は、判定結果１１１の正常確度１１３を「低」に設定する。一方、攻撃検知アラートの原因が保守作業であると判定した場合は、予定作業判定部９０１は、判定結果１１１の正常確度１１３を「高」に設定する。また、予定作業判定部９０１は、時刻情報１０８と正常確度１１３を省略して、攻撃検知アラートの原因として「保守」又は「攻撃」を示す情報のみで構成される判定結果１１１を出力してもよい。
【００８１】
本実施の形態では、判定結果１１１は、例えば、セキュリティ機器の攻撃検知アラートを監視している監視員の端末装置に出力される。正常作業判定装置１００と監視員の端末装置とが別装置であれば、予定作業判定部９０１は、判定結果１１１を通知パケットに含ませて監視員の端末装置に送信する。正常作業判定装置１００が監視員の端末装置であれば、予定作業判定部９０１は、例えば、判定結果１１１を表示装置に表示する。
【００８２】
また、予定作業判定部９０１は、保守工事予定ＤＢ９０２の検索においては、攻撃を受けたコントローラ等の識別子の代わりに、攻撃を行ったコントローラ等の識別子を用いて検索を行ってもよい。
【００８３】
また、予定作業判定部９０１は、該当する予定情報９０３が検索された場合に、攻撃検知アラートに含まれる「攻撃を検知した際の状況を通知する情報」を参照して、攻撃検知アラートの原因が保守作業であるのか攻撃であるのかを判定してもよい。
例えば、予定情報９０３に、保守作業で使用されるコマンドが記載されており、攻撃検知アラートに、「攻撃を検知した際の状況を通知する情報」として、攻撃に使用されたコマンドが記載されているものとする。この場合に、予定作業判定部９０１は、予定情報９０３に記載されているコマンドと、攻撃検知アラートに記載されているコマンドとを比較する。そして、これらのコマンドが一致した場合に、予定作業判定部９０１は、保守作業で使用されたコマンドが原因で攻撃検知アラートが発行されたと判定して、攻撃検知アラートの原因は保守作業であると判定する。一方、これらのコマンドが一致しなければ、予定作業判定部９０１は、保守作業で予定されていないコマンドが実行されたと判定し、攻撃検知アラートの原因は攻撃であると判定する。
また、予定情報９０３に、保守作業で使用されるプログラムの名称（又はツールの名称又はメニュー名）が記載されており、攻撃検知アラートに、「攻撃を検知した際の状況を通知する情報」として、攻撃に使用されたプログラムの名称（又はツールの名称又はメニュー名）が記載されているものとする。この場合に、予定作業判定部９０１は、予定情報９０３に記載されているプログラムの名称（又はツールの名称又はメニュー名）と攻撃検知アラートに記載されているプログラムの名称（又はツールの名称又はメニュー名）とを比較する。そして、これらのプログラムの名称（又はツールの名称又はメニュー名）が一致した場合は、予定作業判定部９０１は、攻撃検知アラートの原因は保守作業であると判定する。一方、これらのプログラムの名称（又はツールの名称又はメニュー名）が一致しなければ、攻撃検知アラートの原因は攻撃であると判定する。
また、予定情報９０３に、保守作業で使用されるアカウント名が記載されており、攻撃検知アラートに、「攻撃を検知した際の状況を通知する情報」として、攻撃に使用されたアカウント名が記載されているものとする。この場合に、予定作業判定部９０１は、予定情報９０３に記載されているアカウント名と攻撃検知アラートに記載されているアカウント名とを比較する。そして、これらのアカウント名が一致した場合は、予定作業判定部９０１は、攻撃検知アラートの原因は保守作業であると判定する。一方、これらのアカウント名が一致しなければ、攻撃検知アラートの原因は攻撃であると判定する。
また、予定情報９０３に、保守作業で参照（読み出し／更新など）されるファイルの名称（又はレポジトリの名称）が記載されており、攻撃検知アラートに、「攻撃を検知した際の状況を通知する情報」として、攻撃者が操作したファイルの名称（又はレポジトリの名称）が記載されているものとする。この場合に、予定作業判定部９０１は、予定情報９０３に記載されているファイルの名称（又はレポジトリの名称）と攻撃検知アラートに記載されているファイルの名称（又はレポジトリの名称）とを比較する。そして、これらのファイルの名称（又はレポジトリの名称）が一致した場合は、予定作業判定部９０１は、攻撃検知アラートの原因は保守作業であると判定する。一方、ファイルの名称（又はレポジトリの名称）が一致しなければ、攻撃検知アラートの原因は攻撃であると判定する。
同様に、攻撃検知アラートの「攻撃を検知した際の状況を通知する情報」が、予定情報９０３として抽出されない場合は、予定作業判定部９０１は、攻撃検知アラートの原因は攻撃であると判定する。
なお、攻撃者は、保守端末装置１０１を操作する人間、保守端末装置１０１を遠隔で操作する他の端末装置で動作するマルウェア、保守端末装置１０１で動作するマルウェアなどが考えられるが、ここでは特定しない。
【００８４】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態では、予定作業判定部９０１は、保守工事予定ＤＢ９０２を参照し、侵入検知装置やログ分析装置などのセキュリティ機器の攻撃検知アラートの原因を判定する。このため、セキュリティ機器の攻撃検知アラートを監視している監視員が、攻撃検知アラートの原因を自ら調査する必要がないという効果がある。そして、攻撃検知アラートが保守に起因する誤検知による場合は、監視員は、予定作業判定部９０１の判定結果１１１を確認するだけで足り、監視員の負担を低減することができる。
【００８５】
以上、本発明の実施の形態について説明したが、これらの実施の形態を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。
あるいは、これらの実施の形態を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【００８６】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、正常作業判定装置１００のハードウェア構成の補足説明を行う。
プロセッサ２０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ２０１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）である。
メモリ２０２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
補助記憶装置２０４は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。
通信インタフェース２０３は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
通信インタフェース２０３は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入出力インタフェース２０５は、例えばキーボード、マウス、ディスプレイ装置である。
【００８７】
また、補助記憶装置２０４には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がプロセッサ２０１により実行される。
プロセッサ２０１はＯＳの少なくとも一部を実行しながら、制御プログラム構築部１０４、差分判定部１０６、受信部１１５及び予定作業判定部９０１の機能を実現するプログラムを実行する。
プロセッサ２０１がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、制御プログラム構築部１０４、差分判定部１０６、受信部１１５及び予定作業判定部９０１の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、メモリ２０２、補助記憶装置２０４、プロセッサ２０１内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、制御プログラム構築部１０４、差分判定部１０６、受信部１１５及び予定作業判定部９０１の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記憶媒体に記憶されてもよい。
【００８８】
また、制御プログラム構築部１０４、差分判定部１０６、受信部１１５及び予定作業判定部９０１の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、正常作業判定装置１００は、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった電子回路により実現されてもよい。
この場合は、制御プログラム構築部１０４、差分判定部１０６、受信部１１５及び予定作業判定部９０１は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
【符号の説明】
【００８９】
１００  正常作業判定装置、１０１  保守端末装置、１０２  コントローラ、１０３  パケットキャプチャ、１０４  制御プログラム構築部、１０５  過去プログラム記憶部、１０６  差分判定部、１０７  通信パケットデータ、１０８  時刻情報、１０９  パケット更新プログラム、１１０  現行プログラム、１１１  判定結果、１１２  変更状態、１１３  正常確度、１１４  コントローラ情報、１１５  受信部、２０１  プロセッサ、２０２  メモリ、２０３  通信インタフェース、２０４  補助記憶装置、２０５  入出力インタフェース、７０１  正常確度基準、９０１  予定作業判定部、９０２  保守工事予定ＤＢ、９０３  予定情報、１１０１  保守工事予定テーブル。
【図１】
0006523582.tif 000002
【図２】
0006523582.tif 000003
【図３】
0006523582.tif 000004
【図４】
0006523582.tif 000005
【図５】
0006523582.tif 000006
【図６】
0006523582.tif 000007
【図７】
0006523582.tif 000008
【図８】
0006523582.tif 000009
【図９】
0006523582.tif 000010
【図１０】
0006523582.tif 000011
【図１１】
0006523582.tif 000012
【図１２】
0006523582.tif 000013
【図１３】
0006523582.tif 000014