(57)【要約】【課題】プログラム実行装置にプログラムをより安全に実行させる。【解決手段】実施形態のプログラム実行装置は、記憶部、取得部、評価部、実行部を備える。取得部は連係プログラムが動作する際に、オペレーティングシステムが管理するプロセス情報から、連係プログラムと設定情報の保存場所と、連係プログラムが動作した日時と、連係プログラムを実行したユーザの識別情報と、連係プログラム、設定情報の符号値とを含む第２実行情報を取得する。評価部は取得部により取得された第２実行情報と、記憶部に予め登録した第１実行情報とを比較して、互いの情報が一致すれば前記連係プログラムを健全、不一致の場合は不健全と評価する。実行部は評価部による評価の結果、健全と評価された連係プログラムの動作を継続させ、不健全と評価された連係プログラムを停止させる。【選択図】図１
2019096271.tif 000002
【特許請求の範囲】
【請求項１】
実行が許可されたプログラムとこのプログラムを子プロセスとして起動する実行元プログラムを含む連係プログラムとこの連係プログラムの設定情報とのそれぞれの保存場所と、前記連係プログラム、前記設定情報の符号値と、前記連係プログラムが実行される正規の時期と、前記連係プログラムを実行する正規のユーザの識別情報とを第１実行情報として予め登録した記憶部と、
前記連係プログラムが動作する際に、オペレーティングシステムが管理するプロセス情報から、前記連係プログラムと前記設定情報の保存場所と、前記連係プログラムが動作した日時と、前記連係プログラムを実行したユーザの識別情報と、前記連係プログラム、前記設定情報の符号値とを含む第２実行情報を取得する取得部と、
前記取得部により取得された第２実行情報と、前記記憶部に予め登録した第１実行情報とを比較して、互いの情報が一致すれば前記連係プログラムを健全、不一致の場合は不健全と評価する評価部と、
前記評価部による評価の結果、健全と評価された前記連係プログラムの動作を継続させ、不健全と評価された前記連係プログラムを停止させる実行部と
を具備するプログラム実行装置。
【請求項２】
前記連係プログラムが起動する際に、前記連係プログラムから発行されるオペレーティングシステムへの要求を、前記オペレーティングシステムに代わって受け取るフック部を備え、
前記フック部は、
前記要求を受け取ったときに前記取得部に前記連係プログラムの実行ファイルと設定ファイルの実行情報を取得させ、
前記実行部は、
前記評価部により前記連係プログラムが健全であると評価された場合、前記要求を前記オペレーティングシステムへ渡し、前記連係プログラムの起動動作を継続させる請求項１記載のプログラム実行装置。
【請求項３】
前記実行部は、
前記プログラム実行装置が実行中の全てのプログラムを停止させる請求項１記載のプログラム実行装置。
【請求項４】
不健全と評価された前記連係プログラムの異常を報知する報知部を具備する請求項１乃至３いずれか１項に記載のプログラム実行装置。
【請求項５】
前記報知部は、
前記連係プログラムの異常を示す情報を、画面へ出力、所定の宛先への電子メールを送信、警報ライトを点灯、警報音を発報、およびログファイルに記憶のうち、少なくとも一つを実行する請求項４記載のプログラム実行装置。
【請求項６】
プログラム実行装置に処理を実行させるプログラムであって、
前記プログラム実行装置を、
実行が許可されたプログラムとこのプログラムを子プロセスとして起動する実行元プログラムを含む連係プログラムとこの連係プログラムの設定情報とのそれぞれの保存場所と、前記連係プログラム、前記設定情報の符号値と、前記連係プログラムが実行される正規の時期と、前記連係プログラムを実行する正規のユーザの識別情報とを第１実行情報として予め登録した記憶部と、
前記連係プログラムが動作する際に、オペレーティングシステムが管理するプロセス情報から、前記連係プログラムと前記設定情報の保存場所と、前記連係プログラムが動作した日時と、前記連係プログラムを実行したユーザの識別情報と、前記連係プログラム、前記設定情報の符号値とを含む第２実行情報を取得する取得部と、
前記取得部により取得された第２実行情報と、前記記憶部に予め登録した第１実行情報とを比較して、互いの情報が一致すれば前記連係プログラムを健全、不一致の場合は不健全と評価する評価部と、
前記評価部による評価の結果、健全と評価された前記連係プログラムの動作を継続させ、不健全と評価された前記連係プログラムを停止させる実行部
として機能させるプログラム。
【請求項７】
プログラム実行装置によるプログラム実行方法であって、
実行が許可されたプログラムとこのプログラムを子プロセスとして起動する実行元プログラムを含む連係プログラムとこの連係プログラムの設定情報とのそれぞれの保存場所と、前記連係プログラム、前記設定情報の符号値と、前記連係プログラムが実行される正規の時期と、前記連係プログラムを実行する正規のユーザの識別情報とを第１実行情報として予め記憶部に登録し、
前記連係プログラムが動作する際に、オペレーティングシステムが管理するプロセス情報から、前記連係プログラムと前記設定情報の保存場所と、前記連係プログラムが起動した日時と、前記連係プログラムを実行したユーザの識別情報と、前記連係プログラム、前記設定情報の符号値とを含む第２実行情報を取得部が取得し、
前記取得部が取得した第２実行情報と、前記記憶部に予め登録していた第１実行情報とを比較部が比較して、互いの情報が一致すれば前記連係プログラムを健全、不一致の場合は不健全と評価し、
前記評価の結果、健全と評価された前記連係プログラムの動作を実行部が継続させ、不健全と評価された前記連係プログラムを停止させる、プログラム実行装置によるプログラム実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プログラム実行装置、プログラムおよびプログラム実行方法に関する。
【背景技術】
【０００２】
近年、インターネットに接続されたコンピュータに対して、コンピュータの脆弱性を悪用したサイバー攻撃が増加しており、発電プラントなどに導入されるコンピュータシステムについてもサイバー攻撃に備えたセキュリティ対策が急務となっている。
発電プラントのコンピュータシステムの中でも、特にプラントの運転員や保守作業員等が操作する機会が多いプロセス計算機は、サイバー攻撃の起点になり易いため、悪意のあるユーザやマルウェアによる不正なプログラムの実行を制限することが求められる。
【０００３】
不正なプログラムの実行を制限する従来の技術として以下に示すような第１および第２の技術がある。第１の技術は、プログラムの起動にあたり、実行が許可されたプログラムのリストを作成しておき、プログラムの実行要求があったときに、互いを比較することにより、実行が許可されていないプログラムの実行を制限するホワイトリスト方式の技術である。
【０００４】
この第１の技術は、具体的には、コンピュータに監視プログラムをインストールしておき、監視プログラムがプログラムの起動を制限する際に、システムコールをフックすると共に、プログラムを起動する前にハッシュ値を取得して、そのハッシュ値が予め登録されているホワイトリストのものと一致していた場合にのみプロセスの起動を許可するものである。このホワイトリスト方式では、実行が許可されたプログラムのリストにないプログラムについては起動を制限することができる。
【０００５】
また、第２の技術は、電子データの作成履歴に関する情報を自動的に登録し、原本性を保証する技術である。
【０００６】
この第２の技術は、電子データの作成履歴に関する情報（入力データ、処理プログラム、出力データのセットのハッシュ値）をリストとして自動的に登録し、新たな処理プログラムの実行に際して、入力データ、処理プログラム、出力データのハッシュ値を取得し、リストのハッシュ値と比較し、ハッシュ値が一致する場合は、呼び出している処理プログラムは正常なものと判断し、ハッシュ値が一致しない場合は、所定のプログラムではないためそれを不正なプログラム、つまりマルウェアとして判断するものである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第５１９１０４３号公報
【特許文献２】特開２０１４−７４９５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の技術は、いずれも実行を開始するプログラムに関するリストのハッシュ値に基づいて不正なプログラムの実行を制限するものであり、リストのハッシュ値以外に、例えばプログラムの実行ファイルや設定ファイルが事前に改ざんされていた場合や、プログラムが不正なユーザによって実行されている場合は、実行が許可されたプログラムであっても安全であるとは限らない。またリストに載っていないプログラムを起動する親プログラムなどは実行制限の対象から除外されてしまう。
【０００９】
本発明が解決しようとする課題は、プログラムをより安全に実行させることができるプログラム実行装置、プログラムおよびプログラム実行方法を提供することにある。
【課題を解決するための手段】
【００１０】
実施形態のプログラム実行装置は、記憶部、取得部、評価部、実行部を備える。記憶部は実行が許可されたプログラムとこのプログラムを子プロセスとして起動する実行元プログラムを含む連係プログラムとこの連係プログラムの設定情報とのそれぞれの保存場所と、連係プログラム、前記設定情報の符号値と、連係プログラムが実行される正規の時期と、連係プログラムを実行する正規のユーザの識別情報とを第１実行情報として予め登録している。取得部は連係プログラムが動作する際に、オペレーティングシステムが管理するプロセス情報から、連係プログラムと設定情報の保存場所と、連係プログラムが動作した日時と、連係プログラムを実行したユーザの識別情報と、連係プログラム、設定情報の符号値とを含む第２実行情報を取得する。評価部は取得部により取得された第２実行情報と、記憶部に予め登録した第１実行情報とを比較して、互いの情報が一致すれば前記連係プログラムを健全、不一致の場合は不健全と評価する。実行部は評価部による評価の結果、健全と評価された連係プログラムの動作を継続させ、不健全と評価された連係プログラムを停止させる。
【発明の効果】
【００１１】
本発明によれば、プログラムをより安全に実行させることができるプログラム実行装置、プログラムおよびプログラム実行方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態のプロセス計算機の構成を示す図である。
【図２】出力されるログファイルの一例を示す図である。
【図３】実行情報ＤＢに登録されたプログラム実行情報の一例を示す図である。
【図４】実行情報ＤＢに登録された実行元プログラム実行情報の一例を示す図である。
【図５】第１実施形態のプロセス計算機の実行情報取得動作を示すフローチャートである。
【図６】プロセス計算機により取得されたプログラム実行情報の一例を示す図である。
【図７】プロセス計算機により取得された実行元プログラム実行情報の一例を示す図である。
【図８】第１実施形態のプロセス計算機の評価動作を示すフローチャートである。
【図９】第２実施形態のプロセス計算機の構成を示す図である。
【図１０】第２実施形態のプロセス計算機の動作を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、実施形態を詳細に説明する。
（第１実施形態）
図１は第１実施形態のプロセス計算機を示す図である。
図１に示すように、プログラム実行装置の一つの実施形態としてのプロセス計算機１は、ハードウェアとして、ＣＰＵ、メモリ、ハードディスク装置、通信インタフェースなどを有するコンピュータであり、キーボード、マウスなどの入力部２、モニタなどの表示部３、エラー発生報知手段（通信ネットワーク４、警報ライト５、スピーカ６など）が接続されている。
【００１４】
入力部２は運転員により操作されてプロセス計算やプログラムの監視などを指示する。表示部３はプロセス計算の結果の表示や不正プログラムを停止したときのエラー表示などを行う。警報ライト５、スピーカ６などは、不正プログラムを停止したことでの異常発生を音や光で近くの作業者へ報知するためのものである。また、通信ネットワーク４は、予め登録しておいた所定の電子メールアドレス（管理者への所定の宛先など）へエラー発生を通知する電子メールを送信するための伝送路である。
【００１５】
ハードディスク装置には、起動時にＣＰＵによりメモリに読み込まれて実行されるオペレーティングシステム（以下「ＯＳ」と称す）の他に、プロセスを実行する子プログラムとしてのプログラム１１とこのプログラム１１を起動して実行させる実行元の親プログラムとしてのプログラム１２（以下「実行元プログラム１２」と称す）など、親子関係にあるプログラムが連係して動作するプログラム（以下「連係プログラム１３」と称す）がインストールされている。
【００１６】
プロセス計算機１は、上記ハードウェアにより実現される機能構成として、実行情報データベース１４（以下「実行情報ＤＢ１４」と称す）、制御部１５、報知制御部１６、ログ記憶部１８などを有する。
【００１７】
実行情報ＤＢ１４には、実行を許可された連係プログラム１３、プロセスの実行情報（第１実行情報）が予め登録されている。具体的には、実行情報ＤＢ１４は、実行が許可されたプログラム１１とこのプログラム１１を子プロセスとして起動する実行元プログラム１２を含む連係プログラム１３とこの連係プログラム１３の設定ファイルとのそれぞれのファイルパス（保存場所）と、連係プログラム１３や設定ファイルのファイルの内容により一意に決まる符号値であるハッシュ値と、連係プログラム１３が実行される実行日時（正規の時期）と、連係プログラム１３を実行する実行ユーザＩＤ（正規のユーザの識別情報）とを第１実行情報として予め登録する記憶部として機能する。連係プログラム１３およびプロセスの実行情報の詳細については下記図３、図４の説明で詳述する。
【００１８】
制御部１５は、プロセス計算機１で実行中のプロセスを周期的に監視する。取得部１５１は、プロセス計算機１で連係プログラム１３が起動（動作）する際に、ＯＳが管理するプロセスの情報（プロセス名）から、連係プログラム１３とその設定ファイル（設定情報）の保存場所であるファイルパスと、連係プログラム１３が動作した日時と、連係プログラム１３を実行したユーザの識別情報であるユーザＩＤと、連係プログラム１３と設定ファイルのハッシュ値（符号値）とを含む実行情報（第２実行情報）を取得する。
【００１９】
評価部１５２は、取得部１５１により取得された実行情報（第２実行情報）と、実行情報ＤＢ１４に予め登録されていた実行情報（第１実行情報）とを比較して、互いの情報が一致すれば連係プログラム１３を健全、不一致の場合は不健全と評価する。
【００２０】
実行部１５３は、評価部１５２による評価の結果に応じて、連係プログラム１３（プログラム１１や実行元プログラム１２など）の動作（開始した起動動作）または実行中のプロセスの動作を継続または停止する。
【００２１】
具体的には、実行部１５３は、評価部１５２による評価の結果、健全と評価された連係プログラム１３の動作または実行中のプロセスの動作を継続させる一方、評価の結果、不健全と評価された連係プログラム１３の動作または実行中のプロセスの動作を停止させる。
【００２２】
実行部１５３は、連係プログラム１３を停止させると同時に、報知制御部１６へ警報の発報を指示する。報知制御部１６は、制御部１５（実行部１５３）からの指示により、表示部３、通信ネットワーク４、警報ライト５、スピーカ６などのうち少なくとも一つを利用して発報する。
【００２３】
なお、報知制御部１６とエラー発生報知手段（通信ネットワーク４、警報ライト５、スピーカ６など）とを報知部と言う。報知部は不健全と評価された連係プログラム１３の異常を報知する。報知部は、報知制御部１６に予めエラー発生時の発報設定を行っておくことで、所定の宛先への電子メールを送信、警報ライト５を点灯、スピーカ６から警報音を発報のうち、少なくとも一つを行うようにできる。
【００２４】
詳細には、報知制御部１６は、実行部１５３からの指示に従い予めメモリに登録されている異常発生を知らせるメッセージを読み出して表示部３に送り、表示部３の画面にメッセージを表示する。
【００２５】
この他、報知制御部１６は、予めメモリに設定されている発報設定に従い、電子メールで異常発生を知らせる内容を送信、警報ライト５を点灯、スピーカ６から異常発生を知らせる音声やブザーを発生させるなどを行い、これらエラー発生報知手段の設置場所近くの運転員に対してこのプロセス計算機１内で動作中（起動中）のプログラム１１に異常が生じていることを報知する。
【００２６】
ログ記憶部１８には、図２に示すようなログファイル１７が記憶される。ログファイル１７は、連係プログラム１３やそれに関連する情報が不健全とされ、実行が停止された場合に制御部１５により生成されるエラー履歴のファイル（エラーログ）であり、プログラムの停止などでエラーが発生したエラー箇所、プログラム名、エラー発生時刻（時刻）が一行ずつレコードとして記憶される。
【００２７】
より詳細には、不健全と評価したプログラム（不正プログラム）を停止させた時刻、つまりエラー発生日時である「年月日時分秒」と、不正プログラムの名称であるプログラム名（「プログラム」、「実行元プログラム」のいずれか）と、異常種別であるエラー箇所（プロセス名、ハッシュ値、実行日時、実行ユーザＩＤのうちいずれかの項目）とが対応付けられてログ記憶部１８へ出力され、ログファイル１７として記憶される。
【００２８】
このログファイル１７のエラー箇所で、例えばプログラム名が「プログラム」のエラーのうち、プロセス名というエラーは、プログラム１１のプロセス名を基に実行情報ＤＢ１４からプロセス名を検索できなかった場合に出力されるログである。ハッシュ値のエラーは、例えばプログラム１１の実行ファイルと設定ファイルのハッシュ値が実行情報ＤＢ１４の内容と取得情報とで一致しなかった場合に出力されるログである。
【００２９】
実行日時のエラーは、プログラム１１の実行ファイルと設定ファイルの実行日時が実行情報ＤＢ１４の内容と取得情報とで一致しなかった場合に出力されるログである。実行ユーザＩＤのエラーは、プログラム１１の実行ファイルと設定ファイルの実行ユーザＩＤが実行情報ＤＢ１４の内容と取得情報とで一致しなかった場合に出力されるログである。
【００３０】
ログファイル１７のエラー箇所で、例えばプログラム名が「実行元プログラム」のエラーのうち、ハッシュ値のエラーは、実行元プログラム１２の実行ファイルと設定ファイルのハッシュ値が実行情報ＤＢ１４の内容と取得情報とで一致しなかった場合に出力されるログである。
【００３１】
実行日時のエラーは、実行元プログラム１２の実行ファイルと設定ファイルの実行日時が実行情報ＤＢ１４の内容と取得情報とで一致しなかった場合に出力されるログである。実行ユーザＩＤのエラーは、実行元プログラム１２の実行ファイルと設定ファイルの実行ユーザＩＤが実行情報ＤＢ１４の内容と取得情報とで一致しなかった場合に出力されるログである。
【００３２】
実行情報ＤＢ１４には、実行が許可されたプログラム１１に関する情報としてのプログラム実行情報２１（図３参照）と、実行が許可された実行元プログラム１２に関する情報としてのプログラム実行情報２２（図４参照）とが予め記憶（登録）されている。
【００３３】
（プログラム実行情報２１の説明）
図３は実行情報ＤＢ１４に予め登録されているプログラム１１のプログラム実行情報２１を示す図であり、図３に示すプログラム実行情報２１はプログラム１１の実行ファイルと、パラメータ値などが記載された設定ファイルが登録された例を示している。
【００３４】
図３に示すように、プログラム実行情報２１は、プロセス名、ファイルパス、ハッシュ値、実行日時、実行ユーザＩＤ、実行元プロセス名などの欄からなる複数のレコード（行）を有するテーブルである。
【００３５】
具体的に説明すると、初めのレコード（行）には、プロセス名“Ｐｒｏｃｅｓｓ１”、ファイルパス“／Ｐａｔｈ１／Ｆｉｌｅ１”、ハッシュ値“Ｈａｓｈ１”、実行日時“ｘｘｘｘ３０ｘ”、実行ユーザＩＤ“Ｕｓｅｒ１”、実行元プロセス名“Ｐｒｏｃｅｓｓ２”が登録されている。
【００３６】
ファイルパス“／Ｐａｔｈ１／Ｆｉｌｅ１”はプログラム１１の実行ファイルの絶対パスである。ハッシュ値“Ｈａｓｈ１”は、実行ファイルが持つ、ファイル内容により一意に決まる符号値である。実行日時“ｘｘｘｘ３０ｘ”は、実行ファイルの実行日時の年月日時分秒をスペース区切りとし登録する値がない領域を“ｘ”で表すことで、実行ファイルが３０分毎に実行されることを表している。実行ユーザＩＤ“Ｕｓｅｒ１”は、実行ファイルを実行するユーザの識別情報である。実行元プロセス名“Ｐｒｏｃｅｓｓ２”は、プログラム１１のプロセスである“Ｐｒｏｃｅｓｓ１”を生成する、実行元プログラム１２のプロセス名である。
【００３７】
その下のレコード（行）には、プロセス名“Ｐｒｏｃｅｓｓ１”、ファイルパス“／Ｐａｔｈ２／Ｆｉｌｅ２”、ハッシュ値“Ｈａｓｈ２”、実行日時“ｘｘｘｘｘｘｘ”、実行ユーザＩＤ“ｘ”、実行元プロセス名“ｘ”が登録されている。
【００３８】
ファイルパス“／Ｐａｔｈ２／Ｆｉｌｅ２は、プログラム１１の設定ファイルの絶対パスである。ハッシュ値“Ｈａｓｈ２”は、設定ファイルが持つ、ファイル内容により一意に決まる符号値である。実行日時“ｘｘｘｘｘｘｘ”は、実行されることのない設定ファイルであるため、実行日時が指定されていないことを表している。実行ユーザＩＤ“ｘ”はユーザによって実行されることのない設定ファイルであることを表している。実行元プロセス名“ｘ”は、実行されることのない設定ファイルであるため、実行元となるプロセスがないことを表している。
【００３９】
すなわち、プログラム実行情報２１には、実行が許可されたプロセスの名称（プロセス名）、このプロセスを実行するプログラム１１および設定ファイル（設定情報）のファイルパス（記憶場所）、プログラム１１および設定ファイルから一意に決まるハッシュ値（符号値）、実行が許可されている実行日時、実行が許可された実行ユーザＩＤ（ユーザの識別情報）、このプロセスを子プロセスとして起動する親プロセスである実行元プロセスの名称（実行元プロセス名）などが対応して記憶されている。
【００４０】
（実行元プログラム実行情報２２の説明）
図４は実行情報ＤＢ１４に予め登録された実行元プログラム１２の実行元プログラム実行情報２２を示す図であり、図４の実行元プログラム実行情報２２は実行元プログラム１２の実行ファイルと設定ファイルが登録された例を示している。
【００４１】
図４に示すように、実行元プログラム実行情報２２は、プロセス名、ファイルパス、ハッシュ値、実行日時、実行ユーザＩＤ、実行元プロセス名などの欄からなる複数のレコード（行）を有するテーブルである。
【００４２】
具体的に説明すると、初めのレコード（行）には、プロセス名“Ｐｒｏｃｅｓｓ２”、ファイルパス“／Ｐａｔｈ３／Ｆｉｌｅ３”、ハッシュ値“Ｈａｓｈ３”、実行日時“ｘｘｘｘｘｘｘ”、実行ユーザＩＤ“Ｕｓｅｒ２”、実行元プロセス名“ｘ”が登録されている。
【００４３】
ファイルパス“／Ｐａｔｈ３／Ｆｉｌｅ３”はプログラム１２の実行ファイルの絶対パスである。ハッシュ値“Ｈａｓｈ３”は、実行ファイルが持つ、ファイル内容により一意に決まる符号値である。実行日時“ｘｘｘｘｘｘｘ”は、実行ファイルの実行日時の年月日時分秒をスペース区切りとし、登録する値がない領域を“ｘ”で表している。実行ユーザＩＤ“Ｕｓｅｒ２”は、実行ファイルを実行するユーザの識別情報である。実行元プロセス名“ｘ”は、プログラム１２のプロセスである“Ｐｒｏｃｅｓｓ２”を生成する、実行元プログラムがないことを表している。
【００４４】
その下のレコード（行）には、プロセス名“Ｐｒｏｃｅｓｓ２”、ファイルパス“／Ｐａｔｈ４／Ｆｉｌｅ４”、ハッシュ値“Ｈａｓｈ４”、実行日時“ｘｘｘｘｘｘｘ”、実行ユーザＩＤ“ｘ”、実行元プロセス名“ｘ”が登録されている。
【００４５】
ファイルパス“／Ｐａｔｈ４／Ｆｉｌｅ４は、プログラム１２の設定ファイルの絶対パスである。ハッシュ値“Ｈａｓｈ４”は、設定ファイルが持つ、ファイル内容により一意に決まる符号値である。実行日時“ｘｘｘｘｘｘｘ”は、実行されることのない設定ファイルであるため、実行日時が指定されていないことを表している。実行ユーザＩＤ“ｘ”はユーザによって実行されることのない設定ファイルであることを表している。実行元プロセス名“ｘ”は、実行されることのない設定ファイルであるため、実行元となるプロセスがないことを表している。
【００４６】
すなわち、実行元プログラム実行情報２２には、実行が許可された実行元プロセスの名称（プロセス名）、このプロセスを実行する実行元プログラムおよび設定ファイル（設定情報）のファイルパス（記憶場所）、実行元プログラムおよび設定ファイルから一意に決まるハッシュ値（符号値）、実行が許可されている実行日時、実行が許可されたユーザＩＤ（ユーザの識別情報）、この実行元プロセスを子プロセスとして起動する親プロセスである実行元プロセスの名称（実行元プロセス名）などが対応して記憶されている。
【００４７】
以下、図５乃至図８を参照して第１実施形態のプロセス計算機１の動作を説明する。まず図５乃至図７を参照してこのプロセス計算機１の実行情報取得動作（一部評価も含む）を説明する。
【００４８】
プロセス計算機１の場合、制御部１５では、取得部１５１がプロセスを実行中、実行中のプロセスを周期的に監視している。
そして、ステップＡ１では、取得部１５１は、実行中のプロセスを周期的に監視する中で、起動を開始したプログラム、例えばプログラム１１のプロセス名である“Ｐｒｏｃｅｓｓ１”を取得する。
【００４９】
ステップＡ２では、評価部１５２は、上記ステップＡ１で取得部１５１が取得したプロセス名“Ｐｒｏｃｅｓｓ１”を基に、実行情報ＤＢ１４を検索し、実行情報ＤＢ１４にプログラム１１のプロセス名“Ｐｒｏｃｅｓｓ１”が登録されているか否かを確認し、処理を開始するプロセスの健全性をリストのプロセス名でまず始めにチェック（評価）する。
【００５０】
ステップＡ３では、実行部１５３は、ステップＡ３のチェック（評価）結果に応じた処理（プロセス制御）を行う。
【００５１】
つまり、評価部１５２が実行情報ＤＢ１４を検索した結果、実行情報ＤＢ１４からプロセス名“Ｐｒｏｃｅｓｓ１”を検索できなかった場合、つまり実行情報ＤＢ１４にプロセス名“Ｐｒｏｃｅｓｓ１”が登録されていなかった場合、ステップＡ４の処理（プロセスの停止）へ移行する一方、実行情報ＤＢ１４からプロセス名“Ｐｒｏｃｅｓｓ１”を検索できた場合（実行情報ＤＢ１４にプロセス名が登録されていた場合）は（ステップＡ３のＹｅｓ）、次のステップＡ６以降の実行情報取得処理へ移行する。
【００５２】
ステップＡ４では、検索したプロセス名が実行情報ＤＢ１４に登録されていなかった場合、つまりプロセス名が検索されなかった場合（ステップＡ３のＮｏ）、実行中のプロセスを停止させる。
【００５３】
詳細に説明すると、評価部１５２は、検索したプロセス名が実行情報ＤＢ１４に登録されていなかった場合、不正なプロセスがプロセス計算機１で実行されているものと判定し、そのプロセスを実行しているプログラム１１が健全ではないもの（不健全）と評価し、実行部１５３にプログラム１１が不健全である旨を通知する。
【００５４】
実行部１５３は、評価部１５２からの不健全の通知を受けてプロセス名“Ｐｒｏｃｅｓｓ１”のプロセスの実行を停止するようプログラム１１に停止命令を送り、プログラム１１によるプロセスの実行を停止させる。なお、プログラム１１自体を停止させてもよい。
【００５５】
ステップＡ５では、上記ステップＡ４でプログラム１１またはそのプロセスを停止させた後、ログを記憶するとともに、報知制御部１６へ発報を指示し、この指示に従い報知制御部１６が発報する。ここで、発報は、所定の宛先への電子メールを送信、警報ライト５を点灯、スピーカ６から警報音を発報のうち、予めメモリに設定されている発報設定に従い少なくとも一つを行うものとする。
【００５６】
なお、実行情報の取得処理でプロセス名の検索、評価を行っているのは起動時に単純な不正プロセスの動きを迅速に止めるためであり、下記の実行情報をすべて取得した後にプロセス名を含めて評価してもよい。
【００５７】
ステップＡ６以降では、取得部１５１は、プロセス名を基に他の実行情報（ファイルパス、ハッシュ値、実行日時、実行が許可された実行ユーザＩＤなど）を取得する。まずステップＡ６では、ファイルパスを取得する。
【００５８】
すなわち、ステップＡ２で実行情報ＤＢ１４からプロセス名“Ｐｒｏｃｅｓｓ１”を検索できた場合、評価部１５２は、取得部１５１に対してプロセス名のプロセスを実行するプログラムおよび設定ファイルのファイルパス、ハッシュ値、実行日時、実行が許可されたユーザＩＤなどの実行情報を取得するよう指示する。
【００５９】
取得部１５１は、この指示に従い実行情報ＤＢ１４を検索し、プログラム実行情報２１に登録されたプログラム１１の実行ファイルのファイルパス“／Ｐａｔｈ１／Ｆｉｌｅ１”と設定ファイルのファイルパス“／Ｐａｔｈ２／Ｆｉｌｅ２”を取得する。
【００６０】
ステップＡ７では、取得部１５１は、ステップＡ６で取得した実行ファイルのファイルパス“／Ｐａｔｈ１／Ｆｉｌｅ１”と設定ファイルのファイルパス“／Ｐａｔｈ２／Ｆｉｌｅ２”を基に、図６に示すプログラム実行情報３１（動作中のプログラムの情報）として、実際のプログラム１１（プロセス）の実行ファイルと設定ファイルのファイルパス“／Ｐａｔｈ１／Ｆｉｌｅ１”およびファイルパス“／Ｐａｔｈ２／Ｆｉｌｅ２”と、ファイル内容により一意に決まるハッシュ値“Ｈａｓｈ１”およびハッシュ値“Ｈａｓｈ２”と、実行ファイルの実行日時（２０１７年１月１日０時３０分０秒に実行されたことを表した）“２０１７１１０３００”、および、設定ファイルの実行日時（この例の場合、実行日時がないことを表した“ｘｘｘｘｘｘｘ”と、実行ファイルを実行した実行ユーザＩＤ“Ｕｓｅｒ１”、および、設定ファイルを実行した実行ユーザＩＤ（この例では実行ユーザＩＤがないことを表した）“ｘ”とを取得する。なお、プログラム実行情報２１の実行日時の項目では、実行日時の年月日時分秒をスペース区切りで表すと共に、取得する値がない領域を“ｘ”で表している。
【００６１】
以下、続いて、制御部１５では、プログラム１１を子プロセスとして起動した実行元プログラム１２の実行情報を取得する。
【００６２】
ステップＡ８では、取得部１５１は、ステップＡ１で取得したプロセス名“Ｐｒｏｃｅｓｓ１”を基に、実行情報ＤＢ１４を検索し、プログラム実行情報２１（図３参照）に登録されているプログラム１１のプロセス名“Ｐｒｏｃｅｓｓ１”を生成する実行元プロセスの実行元プロセス名を取得する。
【００６３】
具体的には、実行情報ＤＢ１４の、図３に示したプログラム実行情報２１より、実行元プログラム１２のプロセスのプロセス名である実行元プロセス名“Ｐｒｏｃｅｓｓ２”を取得する。
【００６４】
ステップＡ９では、取得部１５１は、ステップＡ７で取得した実行元プロセス名“Ｐｒｏｃｅｓｓ２”を基に、実行情報ＤＢ１４の実行元プログラム実行情報２２（図４参照）に登録されているプロセス名“Ｐｒｏｃｅｓｓ２”を検索する。
【００６５】
ステップＡ１０では、取得部１５１は、ステップＡ８で検索されたプロセス名“Ｐｒｏｃｅｓｓ２”を基に、実行情報ＤＢ１４に登録されている実行元プログラム１２の実行ファイルと設定ファイルの絶対パスであるファイルパス“／Ｐａｔｈ３／Ｆｉｌｅ３”および“／Ｐａｔｈ４／Ｆｉｌｅ４”を取得する。
【００６６】
ステップＡ１１では、ステップＡ１０で取得したファイルパス“／Ｐａｔｈ３／Ｆｉｌｅ３”および“／Ｐａｔｈ４／Ｆｉｌｅ４”を基に、図７に示す実行元プログラム実行情報３２（動作中の実行元プログラムの情報）として、実際の実行元プロセスの実行ファイルと設定ファイルについて、絶対パスであるファイルパス“／Ｐａｔｈ３／Ｆｉｌｅ３”およびファイルパス“／Ｐａｔｈ４／Ｆｉｌｅ４”と、ファイル内容により一意に決まるハッシュ値“Ｈａｓｈ３”および“Ｈａｓｈ４”と、実行ファイルの実行日時（この例では実行ファイルが２０１７年１月１日０時０分０秒に実行されたことを表した“２０１７１１０００”）、および設定ファイルの実行日時（この例では実行日時がないことを表した“ｘｘｘｘｘｘｘｘ”）と、実行ファイルを実行した実行ユーザＩＤ“Ｕｓｅｒ２”、および、設定ファイルを実行したユーザＩＤ（この例ではユーザＩＤがないことを表す“ｘ”）とを取得部１５１が取得する。なお、実行日時の項目のデータについて、実行日時の年月日時分秒をスペースで区切って表すと共に、取得する値がない領域を“ｘ”で表している。
【００６７】
ステップＡ１２では、取得部１５１が取得した実行元プログラム１２のファイルパスを基に、プロセス計算機１にインストールされている実行元プログラム１２の実行ファイルと設定ファイルの実行情報（実際に存在するファイル）を取得する。
【００６８】
このようにして連係プログラム１３（プログラム１１、実行元プログラム１２）の実行情報を取得し、メモリに記憶する。
【００６９】
ここで、連係プログラム１３（プログラム１１、実行元プログラム１２）から取り込む実行情報について説明する。  
図６に制御部１５の取得部１５１が取得しメモリに記憶するプログラム１１のプログラム実行情報３１を示す。図６はプロセス計算機１にあるプログラム１１の実行ファイルと設定ファイルに関して取得した実行情報の例を示している。
【００７０】
図６に示すように、プログラム実行情報（実際に動作したプログラム１１の実行情報）３１は、プロセス名、ファイルパス、ハッシュ値、実行日時、実行ユーザＩＤなどの欄を有する。
【００７１】
プロセス名の欄にはプログラム１１のプロセス名である“Ｐｒｏｃｅｓｓ１”が格納される。ファイルパスの欄にはプログラム１１の実行ファイルと設定ファイルの絶対パスである“／Ｐａｔｈ１／Ｆｉｌｅ１”と“／Ｐａｔｈ２／Ｆｉｌｅ２”が格納される。
【００７２】
「ハッシュ値」の欄には実行ファイルと設定ファイルが持つ、ファイル内容により一意に決まる符号値である“Ｈａｓｈ１”と“Ｈａｓｈ２”が格納されている。実行日時の欄には実行ファイルが２０１７年１月１日０時３０分０秒に実行されたことを表す“２０１７１１０３００”と、実行されることのない設定ファイルであるため実行日時が指定されていないことを表した“ｘｘｘｘｘｘｘ”が格納される。
【００７３】
実行ユーザＩＤの欄には実行ファイルを実行したユーザ名またはユーザＩＤである“Ｕｓｅｒ２”と、実行されることのない設定ファイルであるため、実行ユーザがないことを表した“ｘ”が格納される。
【００７４】
図７に制御部１５が取得しメモリに記憶した実行元プログラム１２の実行元プログラム実行情報３２を示す。図７はプロセス計算機１にある実行元プログラム１２の実行ファイルと設定ファイルに関して取得した実行情報の例を示している。
【００７５】
図７に示すように、実行元プログラム実行情報３２（実際に動作した実行元プログラム１２の実行情報）は、プロセス名、ファイルパス、ハッシュ値、実行日時、実行ユーザＩＤなどの欄を有する。
【００７６】
プロセス名の欄には実行元プログラム１２のプロセス名である“Ｐｒｏｃｅｓｓ２”が格納されている。ファイルパスの欄には実行元プログラム１２の実行ファイルと設定ファイルの絶対パスである“／Ｐａｔｈ３／Ｆｉｌｅ３”および“／Ｐａｔｈ４／Ｆｉｌｅ４”が格納される。ハッシュ値の欄には実行ファイルと設定ファイルが持つ、ファイル内容により一意に決まる符号値である“Ｈａｓｈ３”と“Ｈａｓｈ４”が格納される。
【００７７】
実行日時の欄には実行ファイルが２０１７年１月１日０時０分０秒に実行されたことを表す“２０１７１１０００”と、実行されることのない設定ファイルであることを表す“ｘｘｘｘｘｘｘ”が格納される。実行ユーザＩＤの欄には実行ファイルを実行したユーザのユーザ名またはユーザＩＤである“Ｕｓｅｒ２”と、実行されることのない設定ファイルであることを表す“ｘ”が格納される。
【００７８】
以下、図８のフローチャートを参照してこのプロセス計算機の評価動作を説明する。図８はこのプロセス計算機１における評価動作を示すフローチャートである。なお、実行情報ＤＢ１４の実行情報とメモリに取り込んだ実行情報とが存在するためこれらを区別するために実際にメモリに取り込んだ連係プログラム１３の実行情報を「取得情報」と称す。
【００７９】
このプロセス計算機１では、上述したように取得しメモリに取り込んだ連係プログラム１３（プログラム１１、実行元プログラム１２）の取得情報を周期的に読み出して、以下のように実行情報ＤＢ１４の内容と比較し評価する。
【００８０】
すなわち、ステップＢ１では、制御部１５は、プログラム１１および実行元プログラム１２の実行ファイルと設定ファイルについて、実行情報ＤＢ１４に登録された実行情報とメモリに取り込んだ取得情報とを比較してプログラム１１の評価を行う。
【００８１】
ステップＢ２では、評価部１５２は、プログラム１１の実行ファイルと設定ファイルについて、実行情報ＤＢ１４に登録された実行情報とメモリの取得情報とのハッシュ値、実行日時、実行ユーザＩＤを比較する。
【００８２】
詳細に説明すると、評価部１５２は、プログラム１１の実行ファイルと設定ファイルについて、実行情報ＤＢ１４のプログラム実行情報２１（図３参照）に登録されたハッシュ値“Ｈａｓｈ１”および“Ｈａｓｈ２”と、メモリに取り込んだ取得情報のハッシュ値“Ｈａｓｈ１”および“Ｈａｓｈ２”を比較し、互いのハッシュ値の一致・不一致を判定する。
【００８３】
互いのハッシュ値が一致した場合、続いて評価部１５２は、プログラム１１の実行ファイルと設定ファイルについて、プログラム実行情報２１に登録された実行日時“ｘｘｘｘ３０ｘ”および“ｘｘｘｘｘｘｘｘ”と、メモリに取り込んだ取得情報の実行日時“２０１７１１０３００”および“ｘｘｘｘｘｘｘｘ”について“ｘ”以外の値を比較し、互いの実行日時の一致・不一致を判定する。
【００８４】
互いの実行日時が一致した場合、続いて評価部１５２は、プログラム１１の実行ファイルと設定ファイルについて、プログラム実行情報２１に登録された実行ユーザＩＤ“Ｕｓｅｒ１”および“ｘ”と、メモリに取り込んだ取得情報の実行ユーザＩＤ“Ｕｓｅｒ１”および“ｘ”について“ｘ”以外の値を比較し、互いの実行ユーザＩＤの一致・不一致を判定する。
【００８５】
ステップＢ３では、互いの情報（実行情報と取得情報）のハッシュ値、実行日時、実行ユーザＩＤが一つでも一致しなかった場合は（ステップＢ３のＮｏ）、ステップＢ４の処理に移行し、互いの情報（実行情報と取得情報）がすべて一致した場合は、実行元プログラム１２の評価ステップであるステップＢ５の処理に移行する。
【００８６】
ステップＢ４では、互いの情報が一つでも一致しなかった場合、評価部１５２は、不正なプロセスがプロセス計算機１で実行されていると判定して当該プロセスまたは当該プロセスを実行しているプログラム１１を停止するよう実行部１５３に指示する。
【００８７】
この指示により実行部１５３は、停止命令をプログラム１１へ発行し、プロセス名“Ｐｒｏｃｅｓｓ１”のプロセスを停止させる。
【００８８】
ステップＢ５では、実行部１５３は、プログラム１１またはそのプロセスを停止させた後、エラーログを生成し、ログファイル１７（図２参照）としてログ記憶部１８に記憶するとともに、報知制御部１６へ発報を指示し、報知制御部１６は、この指示に従い事前の設定に基づいて電子メール、音、光などで発報する。
【００８９】
ステップＢ６以降では、実行元プログラム１２について評価する。
ステップＢ６では、評価部１５２は、実行元プログラム１２の実行ファイルと設定ファイルについて、実行情報ＤＢ１４に登録された実行情報とメモリの取得情報とのハッシュ値、実行日時、実行ユーザＩＤを比較する。
【００９０】
詳細に説明すると、評価部１５２は、実行情報ＤＢ１４の実行元プログラム実行情報２２（図４参照）に登録されたハッシュ値“Ｈａｓｈ３”およびハッシュ値“Ｈａｓｈ４”と、メモリに取り込んだ取得情報のハッシュ値“Ｈａｓｈ３”およびハッシュ値“Ｈａｓｈ４”とを比較し、互いのハッシュ値の一致・不一致を判定する。
【００９１】
互いのハッシュ値が一致した場合、続いて評価部１５２は、実行元プログラム１２の実行ファイルと設定ファイルについて、実行元プログラム実行情報２２に登録された実行日時“ｘｘｘｘｘｘｘｘ”と、メモリに取り込んだ取得情報の実行日時“２０１７１１００００”および実行日時“ｘｘｘｘｘｘｘｘ”について“ｘ”以外の値を比較し、互いの実行日時の一致・不一致を判定する。
【００９２】
互いの実行日時が一致した場合、続いて評価部１５２は、実行元プログラム１２の実行ファイルと設定ファイルについて、実行元プログラム実行情報２２に登録された実行ユーザＩＤ“Ｕｓｅｒ２”および実行ユーザＩＤ“ｘ”と、メモリに取り込んだ取得情報の実行ユーザＩＤ“Ｕｓｅｒ２”および実行ユーザＩＤ“ｘ”について“ｘ”以外の値を比較し、互いの実行ユーザＩＤの一致・不一致を判定する。
【００９３】
ステップＢ７では、互いの情報（実行情報と取得情報）のハッシュ値、実行日時、実行ユーザＩＤが一つでも一致しなかった場合（ステップＢ７のＮｏ）は、ステップＢ４の処理に移行し、上記プログラム１１の場合と同様に実行元プログラム１２の停止とエラーログの生成、ログファイル１７への書き込み、発報を行う。
【００９４】
例えば互いのハッシュ値、実行日時、実行ユーザＩＤが一つでも一致しなかった場合、評価部１５２は、不正なプロセスがプロセス計算機１で実行されていると判定し、実行部１５３は、プロセス名“Ｐｒｏｃｅｓｓ１”とプロセス名“Ｐｒｏｃｅｓｓ２”のプロセスを停止させる。
【００９５】
一方、互いの情報（実行情報と取得情報）がすべて一致した場合は、評価部１５２は、連係プログラム１３が不正ではないものと判定し、評価を終了し、連係プログラム１３（プログラム１１、実行元プログラム１２）の動作を継続させる。
【００９６】
このように第１実施形態のプロセス計算機１によれば、プログラム１１とそれを起動する実行元プログラム１２の実行ファイルや設定ファイルが改ざんされていないかどうか、プログラム１１が正規のユーザにより実行されたかどうか、プログラム１１が正規のタイミングで実行されたかどうか、プログラム１１が正規の実行元となる実行元プログラム１２によって実行されたか否か、といった、起動するプログラムだけでなくそのプログラムの実行元や実行日時、実行ユーザを含めて実行が許可されたプログラム１１の健全性を評価することで、プログラム１１をより安全に実行させることができる。
【００９７】
以上により、連係プログラム１３（プログラム１１、実行元プログラム１２）の実行ファイルと設定ファイルについて、実行情報ＤＢ１４に登録された実行情報とプロセス計算機１に実際にインストールされ起動しているものの実行情報とを比較することで、実行情報が一致しない不正なプロセスを停止させることが可能となる。
【００９８】
（第２実施形態）
図９、図１０を参照して第２実施形態のプロセス計算機１について説明する。図９は第２実施形態のプロセス計算機１の機能構成を示す図である。なお、この第２実施形態を説明するにあたり、第１実施形態で説明した構成と同じ構成には同一の符号を付しその説明は省略する。
【００９９】
図９に示すように、第２実施形態のプロセス計算機は、起動中または起動を開始したプログラム１１から発行されるオペレーティングシステム（以下「ＯＳ」と称す）へのシステムコールをフックするフック部１５４を有する。フック部１５４はプログラム１１が起動する際に、プログラム１１から発行されるＯＳへの要求であるシステムコールを、ＯＳに代わって受け取り、実行情報の取得、評価、停止などを行わせる。
【０１００】
つまり、フック部１５４は、例えばフック関数などであり、プログラム１１から発行されるシステムコールをフックして、プログラム１１を評価するために実行情報を取得するよう取得部１５１に指示する。この指示に従い取得部１５１が実行情報を取得した後、評価部１５２が評価した結果、プログラム１１を含む連係プログラム１３が不健全と評価された場合、実行部１５３が停止指令を発行しプログラム１１を終了させる。また評価部１５２が評価した結果、健全と評価された場合、実行部１５３は、フック部１５４がフックしたときのシステムコールをＯＳへ発行しプログラム１１の起動動作を継続させる。
【０１０１】
以下、図１０のフローチャートを参照してこの第２実施形態のプロセス計算機１の動作を説明する。
この場合、プログラム１１が実行元プログラム１２から実行される、または、実行ユーザにより直接実行された際に、プログラム１１が使用するＯＳのシステムコールを制御部１５のフック部１５４で取得しフック関数にて以下の動作を取得部１５１、評価部１５２、実行部１５３に行わせる。
【０１０２】
すなわち、ステップＣ１では、フック時にフック部１５４からの指示で取得部１５１は、プログラム１１および実行元プログラム２２より各実行情報を取得し、評価部１５２に渡す。
【０１０３】
ステップＣ２では、評価部１５２は、プログラム１１および実行元プログラム１２の実行ファイルと設定ファイルについて、実行情報ＤＢ１４に登録されているプログラム実行情報２１（図３参照）および実行元プログラム実行情報２２（図４参照）と、プログラム１１より取得した図６のプログラム実行情報（取得情報）３１および実行元プログラム１２より取得した図７の実行元プログラム実行情報（取得情報）３２とを比較し、健全か否かを評価する。
【０１０４】
ステップＣ４では、評価部１５２による評価の結果、実行情報ＤＢ１４に登録されている図３のプログラム実行情報２１および図４の実行元プログラム実行情報２２と、図６のプログラム実行情報３１および図７の実行元プログラム実行情報３２とが一致しなかった場合に、実行部１５３はプログラム１１、実行元プログラム１２を終了させる。なお、フック部１５４に評価結果を戻して、フック関数で連係プログラム１３（プログラム１１、実行元プログラム１２）の動作を停止させてもよい。
【０１０５】
ステップＣ５では、評価の結果、実行情報ＤＢ１４に登録された図３プログラム実行情報２１および図４の実行元プログラム実行情報２２と、図６のプログラム実行情報３１および図７の実行元プログラム実行情報３２とが一致した場合（ステップＣ３のＹｅｓ）に、実行部１５３はプログラム１１で使用する本来のシステムコールをＯＳへ発行しプログラム１１の起動およびプロセスの実行を継続させる。なお、このシステムコール発行動作についてもフック部１５４がフック関数で実行してもよい。
【０１０６】
このようにこの第２実施形態のプロセス計算機によれば、プログラム１１のシステムコールをフック部１５４がフックして、取得部１５１および評価部１５２にプログラム１１および実行元プログラム１２の実行情報の取得、評価を行わせ、実際のプログラム１１および実行元プログラム１２が実行情報ＤＢ１４の登録内容と異なる実行情報を持つ場合、実行部１５３がプログラム１１の実行を終了させるので、第１実施形態と同様の効果を得ることができる。
【０１０７】
また、この第２実施形態では、起動時のプログラム１１から発行されるシステムコールをトリガにして連係プログラム１３を評価し不健全なプログラムを停止するので、不正プログラムによるＯＳへの関与や影響を防ぐことができる。
【０１０８】
以上説明したように、上記実施形態によれば、起動するプログラム１１のハッシュ値だけでなくそのプログラム１１の実行元プログラム１２や実行日時、実行ユーザを含めて実行が許可された連係プログラム１３の健全性を評価することで、プログラム１１をより安全に実行させることができる。
【０１０９】
本発明のいくつかの実施形態を説明したが、これら実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１１０】
例えば上記実施形態では、動作したプログラム１１が不健全であると評価した場合に実行部１５３が連係プログラム１３を停止したが、プロセス計算機１で実行されている全てのプログラムを停止させてもよい。
【０１１１】
また上記実施形態に示したプロセス計算機１の各構成要素を、コンピュータのハードディスク装置などのストレージにインストールしたプログラムで実現してもよく、また上記プログラムを、コンピュータ読取可能な電子媒体：electronic mediaに記憶しておき、プログラムを電子媒体からコンピュータに読み取らせることで本発明の機能をコンピュータが実現するようにしてもよい。電子媒体としては、例えばＣＤ−ＲＯＭ等の記録媒体やフラッシュメモリ、リムーバブルメディア：Removable media等が含まれる。さらに、ネットワークを介して接続した異なるコンピュータに構成要素を分散して記憶し、各構成要素を機能させたコンピュータ間で通信することで実現してもよい。
【符号の説明】
【０１１２】
１…プロセス計算機、２…入力部、３…表示部、４…通信ネットワーク、５…警報ライト、６…スピーカ、１１…プログラム、１２…実行元プログラム、１３…連係プログラム、１４…実行情報データベース（実行情報ＤＢ）、１５…制御部、１６…報知制御部、１７…ログファイル、１８…ログ記憶部、２１…プログラム実行情報、２２…実行元プログラム実行情報、３１…プログラム実行情報（取得情報）、３２…実行元プログラム実行情報（取得情報）、１５１…取得部、１５２…評価部、１５３…実行部、１５４…フック部。
【図１】
2019096271.tif 000003
【図２】
2019096271.tif 000004
【図３】
2019096271.tif 000005
【図４】
2019096271.tif 000006
【図５】
2019096271.tif 000007
【図６】
2019096271.tif 000008
【図７】
2019096271.tif 000009
【図８】
2019096271.tif 000010
【図９】
2019096271.tif 000011
【図１０】
2019096271.tif 000012