(57)【要約】  制御システム（１０）は、複数のセンサ（１４）、複数のアクチュエータ（１６）、及びコントローラ（１８）を有する。情報処理装置（２０００）は、構成情報、制御ルール、及び挙動ログデータを取得する。構成情報は、制御システム（１０）の構成を表す。制御ルールは、コントローラ（１８）による各アクチュエータ（１６）の制御のルールを表す。挙動ログデータは、センサ（１４）の観測値の時系列データと各時刻における各アクチュエータ（１６）の状態との組み合わせを示す。情報処理装置（２０００）は、挙動ログデータを用いて、複数のアクチュエータ（１６）の状態の組み合わせごと及びセンサ（１４）ごとに、その状態の組み合わせにおけるそのセンサ（１４）の観測値の時間変化を表す挙動関数を生成する。そして、情報処理装置（２０００）は、制御システム（１０）について、構成情報、制御ルール、及び挙動関数を用いて、システムモデルを生成する。
2020105179.tif 000002
【特許請求の範囲】
【請求項１】
制御対象に関する物理量を観測する複数のセンサ、前記制御対象の挙動を変化させる複数のアクチュエータ、及び各前記アクチュエータを制御するコントローラを有するシステムの構成を表す構成情報、及び前記コントローラによる各前記アクチュエータの制御のルールを表す制御ルールを取得する第１取得部と、
前記センサによって観測された物理量の時系列データと各時刻における各前記アクチュエータの状態との組み合わせを示す挙動ログデータを、各前記センサについて取得する第２取得部と、
前記挙動ログデータを用いて、複数の前記アクチュエータの状態の組み合わせごと及び前記センサごとに、その状態の組み合わせにおいてそのセンサによって観測される物理量の時間変化を表す挙動関数を生成する第１生成部と、
前記システムについて、前記構成情報、前記制御ルール、及び前記挙動関数を用いてシステムモデルを生成する第２生成部と、を有する情報処理装置。
【請求項２】
前記第１生成部は、複数の前記センサそれぞれについて、
そのセンサによって観測された物理量の時系列データを、複数の前記アクチュエータの状態の組み合わせがそれぞれ異なる複数の区間に分割し、
前記複数の区間それぞれについて、その区間に対応する挙動関数として、その区間に含まれる時系列データによって表される物理量の時間変化を予測する予測モデルを生成する、請求項１に記載の情報処理装置。
【請求項３】
前記予測モデルは重回帰モデルである、請求項２に記載の情報処理装置。
【請求項４】
攻撃者が前記システムに対して実行可能な攻撃を表す攻撃ルール、及び攻撃者が目標とする前記システムの状態を表す攻撃ゴールを取得する第３取得部と、
前記システムモデル、前記攻撃ルール、及び前記攻撃ゴールを用いて、前記システムの状態を前記攻撃ゴールによって示される状態に遷移させる攻撃の手順を探索する検査実行部と、
前記検査実行部による検査の結果を出力する結果出力部と、を有する請求項１乃至３いずれか一項に記載の情報処理装置。
【請求項５】
コンピュータによって実行される制御方法であって、
制御対象に関する物理量を観測する複数のセンサ、前記制御対象の挙動を変化させる複数のアクチュエータ、及び各前記アクチュエータを制御するコントローラを有するシステムの構成を表す構成情報、及び前記コントローラによる各前記アクチュエータの制御のルールを表す制御ルールを取得する第１取得ステップと、
前記センサによって観測された物理量の時系列データと各時刻における各前記アクチュエータの状態との組み合わせを示す挙動ログデータを、各前記センサについて取得する第２取得ステップと、
前記挙動ログデータを用いて、複数の前記アクチュエータの状態の組み合わせごと及び前記センサごとに、その状態の組み合わせにおいてそのセンサによって観測される物理量の時間変化を表す挙動関数を生成する第１生成ステップと、
前記システムについて、前記構成情報、前記制御ルール、及び前記挙動関数を用いてシステムモデルを生成する第２生成ステップと、を有する制御方法。
【請求項６】
前記第１生成ステップにおいて、複数の前記センサそれぞれについて、
そのセンサによって観測された物理量の時系列データを、複数の前記アクチュエータの状態の組み合わせがそれぞれ異なる複数の区間に分割し、
前記複数の区間それぞれについて、その区間に対応する挙動関数として、その区間に含まれる時系列データによって表される物理量の時間変化を予測する予測モデルを生成する、請求項５に記載の制御方法。
【請求項７】
前記予測モデルは重回帰モデルである、請求項６に記載の制御方法。
【請求項８】
攻撃者が前記システムに対して実行可能な攻撃を表す攻撃ルール、及び攻撃者が目標とする前記システムの状態を表す攻撃ゴールを取得する第３取得ステップと、
前記システムモデル、前記攻撃ルール、及び前記攻撃ゴールを用いて、前記システムの状態を前記攻撃ゴールによって示される状態に遷移させる攻撃の手順を探索する検査実行ステップと、
前記検査実行ステップによる検査の結果を出力する結果出力ステップと、を有する請求項５乃至７いずれか一項に記載の制御方法。
【請求項９】
請求項５乃至８いずれか一項に記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は制御システムのモデル検査に関する。
【背景技術】
【０００２】
複数の機器を制御するためのシステムとして制御システムが知られている。制御システムは発電所などの重要インフラ施設内で使用されることもあり、適切なセキュリティアセスメントの実施が必要とされている。【０００３】
セキュリティアセスメントとは、脅威と脆弱性により対象資産に損害が生じる可能性（リスク）を明らかにし、そのリスクの要因分析、影響度、及び損失等を評価し、その結果に基づいて対策を実施することである。ここで、無数に存在しうるリスクに対して限られた予算内で効率良く対策を実施するためには、適切にリスクを分析・評価する必要がある。例えば、攻撃に基づくリスクにおいては、その攻撃が成功するかどうかだけでなく、攻撃が成功するまでの手順（攻撃シナリオ）などを明らかにすることが重要である。【０００４】
なお、本明細書における「攻撃」とは、制御システムを通常運転では陥ることのない状態（以下、異常な状態）に到達させるための攻撃者による振舞いを指す。また、「攻撃者」とは、システムに対して攻撃を実施する人や組織を指す。また、攻撃が目標とする制御システムの状態を攻撃ゴールと呼ぶ。【０００５】
セキュリティアセスメントを実現する手法の１つとして、モデル検査ツールを利用する方法がある。モデル検査ツールは、専用の言語を用いて記述された対象システムのモデルを入力として取得し、SAT（Satisfiability problem）ソルバ等を用いることにより、モデルが満たす状態を網羅的に探索する。これにより、モデルが到達しうる状態が仕様を満たしているか否かが、自動的に検証される。このようにして、モデル検査ツールは、対象システムに対する仕様の正しさを網羅的かつ自動的に検証する。また、モデル検査ツールを用いると、検証の際に、仕様を満たすモデルの例、及び満たさない場合の反例を確認することができる。【０００６】
モデル検査ツールを利用したセキュリティアセスメントについて開示している先行技術文献として、非特許文献１がある。非特許文献１は、Alloy Analyzer というモデル検査ツールを用いた、制御システムのモデル検査について開示している。【０００７】
非特許文献１では、制御システムの構成及び攻撃者の能力を表現したモデルを生成し、モデル検査ツールを用いてこのモデルを検証する。この際、攻撃のゴールとする制御システムの状態を仕様として扱うことで、仕様を満たす攻撃の手順、すなわち攻撃ゴールを達成することができる攻撃の手順が網羅的に探索される。【０００８】
ここで、非特許文献１が対象とする制御システムは、１つのセンサ、複数のアクチュエータ、及び複数のコントローラで構成される。センサは、制御対象に関する物理量を計測する。アクチュエータは、センサによって計測される制御対象の物理量を制御するための装置である。コントローラは、センサによって計測された物理量に基づいてアクチュエータを制御する装置である。より具体的には、例えばコントローラは、センサから取得した物理量と、設定された閾値との比較を行い、その比較結果に応じてアクチュエータに制御信号を送信する。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Eunsuk Kang、Sridhar Adepu、Daniel Jackson、Aditya P. Mathur、「Model-Based Security Analysis of a Water Treatment System」、International Workshop on Software Engineering for Smart Cyber-Physical Systems、2016年
【発明の概要】
【発明が解決しようとする課題】
【００１０】
非特許文献１に開示されている制御システムには、センサが１つしか含まれていない。よって、非特許文献１では、センサを複数有するより複雑な制御システムについてのセキュリティアセスメントについては言及されていない。【００１１】
本発明は、上記の課題に鑑みてなされたものであり、その目的の１つは、センサを複数有する制御システムについて、モデル検査を利用した安全性の検証を実現する技術を提供することである。
【課題を解決するための手段】
【００１２】
本発明の情報処理装置は、１）制御対象に関する物理量を観測する複数のセンサ、制御対象の挙動を変化させる複数のアクチュエータ、及び各アクチュエータを制御するコントローラを有するシステムの構成を表す構成情報、及びコントローラによる各アクチュエータの制御のルールを表す制御ルールを取得する第１取得部と、２）センサによって観測された物理量の時系列データと各時刻における各アクチュエータの状態との組み合わせを示す挙動ログデータを、各センサについて取得する第２取得部と、３）挙動ログデータを用いて、複数のアクチュエータの状態の組み合わせごと及びセンサごとに、その状態の組み合わせにおいてそのセンサによって観測される物理量の時間変化を表す挙動関数を生成する第１生成部と、４）システムについて、構成情報、制御ルール、及び挙動関数を用いてシステムモデルを生成する第２生成部と、を有する。【００１３】
本発明の制御方法はコンピュータによって実行される。当該制御方法は、１）制御対象に関する物理量を観測する複数のセンサ、制御対象の挙動を変化させる複数のアクチュエータ、及び各アクチュエータを制御するコントローラを有するシステムの構成を表す構成情報、及びコントローラによる各アクチュエータの制御のルールを表す制御ルールを取得する第１取得ステップと、２）センサによって観測された物理量の時系列データと各時刻における各アクチュエータの状態との組み合わせを示す挙動ログデータを、各センサについて取得する第２取得ステップと、３）挙動ログデータを用いて、複数のアクチュエータの状態の組み合わせごと及びセンサごとに、その状態の組み合わせにおいてそのセンサによって観測される物理量の時間変化を表す挙動関数を生成する第１生成ステップと、４）システムについて、構成情報、制御ルール、及び挙動関数を用いてシステムモデルを生成する第２生成ステップと、を有する。【００１４】
本発明のプログラムは、コンピュータに、本発明の制御方法が有する各ステップを実行させる。
【発明の効果】
【００１５】
本発明によれば、センサを複数有する制御システムについて、モデル検査を利用した安全性の検証を実現する技術が提供される。
【図面の簡単な説明】
【００１６】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
【図１】実施形態１の情報処理装置の概要を例示する図である。
【図２】実施形態１の情報処理装置の機能構成を例示する図である。
【図３】情報処理装置を実現するための計算機を例示する図である。
【図４】実施形態１の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図５】第３生成部を有する情報処理装置を例示する図である。
【図６】挙動ログデータによって示されている情報をグラフで例示した図である。
【図７】複数のアクチュエータの状態の組み合わせごとに挙動関数が生成される様子を例示する図である。
【図８】実施形態２の情報処理装置の機能構成を例示する図である。
【図９】実施形態２の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００１８】
［実施形態１］
＜発明の概要＞
図１は、実施形態１の情報処理装置２０００の概要を例示する図である。図１に示す概要は、情報処理装置２０００の理解を容易にするための例示であり、情報処理装置２０００の機能を限定するものではない。
【００１９】
情報処理装置２０００は、制御システム１０のモデル（以下、システムモデル）を生成する。システムモデルは、制御システム１０の安全性をモデル検査によって検証するために利用される。具体的には、モデル検査ツールを利用してシステムモデルの解析を行うことにより、制御システムを異常な状態にさせる攻撃の手順（シナリオ）を探索する。制御システムを異常な状態にさせる攻撃シナリオが見つかったら、制御システム１０がその攻撃シナリオで表される攻撃に対して脆弱であることが分かる。
【００２０】
情報処理装置２０００が扱う制御システム１０は、図１に例示するように、制御対象１２、複数のセンサ１４、複数のアクチュエータ１６、及びコントローラ１８を有する。センサ１４は、制御対象１２に関する物理量を計測し、その計測結果を出力する。例えば制御対象１２が貯水タンクである場合、センサ１４は、貯水タンクの水量を計測するセンサなどである。
【００２１】
アクチュエータ１６は、センサ１４が計測する物理量を制御するための装置である。例えば制御対象１２が貯水タンクであり、センサ１４が貯水タンク内の水量を計測するとする。この場合、例えばアクチュエータ１６は、貯水タンクに対する水の流入を制御するポンプである。
【００２２】
コントローラ１８は、アクチュエータ１６の動作を制御する。例えばアクチュエータ１６が前述したポンプである場合、コントローラ１８は、ポンプの状態を ON と OFF の間で切り替える PLC（Programmable Logic Controller）などである。
【００２３】
制御システム１０のシステムモデルは、制御システム１０の構成（すなわち、制御システム１０に含まれるセンサ１４、アクチュエータ１６、及びコントローラ１８の構成）を表す構成情報に加え、制御ルールと挙動関数を用いて生成される。制御ルールは、コントローラ１８が行う制御の規則であり、センサ１４の観測値に基づいてコントローラ１８がどのようにアクチュエータ１６を制御するのかを定めたものである。例えば、貯水タンクの水量を検出するセンサ１４によって検出された水量に基づいて貯水タンクのポンプをコントローラ１８で制御する場合、センサ１４によって検出される水量と、コントローラ１８がアクチュエータに対して行う制御（ポンプの ON/OFF）との関係が、制御ルールとして定められる。
【００２４】
挙動関数は、センサ１４の観測値の時間変化を表す関数であり、情報処理装置２０００によって生成される。言い換えれば、挙動関数は、センサ１４によって観測される制御対象１２の挙動を表す。ここで、制御対象１２の挙動は、その制御対象１２の挙動を制御する複数のアクチュエータ１６の状態の組み合わせによって定まる。そこで、或るセンサ１４に対応する挙動関数は、複数のアクチュエータ１６の状態の組み合わせごとに生成される。例えば、ON と OFF という２つの状態を取りうる２つのアクチュエータ１６が制御システム１０に含まれる場合、これらのアクチュエータの状態の組み合わせとして、(OFF, ON), (ON, OFF), (OFF, OFF), 及び (ON, ON) という４つが存在する。そこで、これら４つの組み合わせそれぞれについて、センサ１４に対応する挙動関数が生成される。
【００２５】
＜作用効果＞
本実施形態の情報処理装置２０００によれば、制御システム１０についてモデル検査を行うためのシステムモデルが生成される。このシステムモデルは、複数のセンサ１４を含む制御システム１０の構成を表す構成情報、複数のセンサ１４それぞれの観測値に応じてコントローラ１８がアクチュエータ１６を制御するための制御ルール、及び複数のセンサ１４それぞれの観測値の時間変化を表す挙動関数を用いて生成される。そして、挙動関数は、複数のアクチュエータ１６の状態の組み合わせそれぞれについて生成される。このようなシステムモデルによれば、複数のセンサ１４それぞれの観測値とその観測値に応じた制御システム１０の挙動を表すことができるため、複数のセンサ１４を含む制御システム１０についてのモデル検査が可能となる。
【００２６】
以下、本実施形態の情報処理装置２０００についてさらに詳細に説明する。
【００２７】
＜機能構成の例＞
図２は、実施形態１の情報処理装置２０００の機能構成を例示する図である。情報処理装置２０００は、第１取得部２０２０、第２取得部２０４０、第１生成部２０６０、及び第２生成部２０８０を有する。第１取得部２０２０は、制御システム１０の構成情報、及び各アクチュエータ１６についての制御ルールを取得する。第２取得部２０４０は、挙動ログデータを取得する。第１生成部２０６０は、挙動ログデータを用いて、複数のアクチュエータ１６の状態の組み合わせごと及びセンサ１４ごとに、その状態の組み合わせにおいてそのセンサ１４によって観測される物理量の時間変化を表す挙動関数を生成する。第２生成部２０８０は、構成情報、制御ルール、及び挙動関数を用いて、制御システム１０のシステムモデルを生成する。
【００２８】
＜情報処理装置２０００のハードウエア構成＞
情報処理装置２０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。以下、情報処理装置２０００の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
【００２９】
図３は、情報処理装置２０００を実現するための計算機１０００を例示する図である。計算機１０００は任意の計算機である。例えば計算機１０００は、Personal Computer（PC）やサーバマシンなどの据え置き型の計算機である。その他にも例えば、計算機１０００は、スマートフォンやタブレット端末などの可搬型の計算機である。計算機１０００は、情報処理装置２０００を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
【００３０】
計算機１０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０を有する。バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ１０４０などを互いに接続する方法は、バス接続に限定されない。
【００３１】
プロセッサ１０４０は、CPU（Central Processing Unit）、GPU（Graphics Processing Unit）、FPGA（Field−Programmable Gate Array）などの種々のプロセッサである。メモリ１０６０は、RAM（Random Access Memory）などを用いて実現される主記憶装置である。ストレージデバイス１０８０は、ハードディスク、SSD（Solid State Drive）、メモリカード、又は ROM（Read Only Memory）などを用いて実現される補助記憶装置である。
【００３２】
入出力インタフェース１１００は、計算機１０００と入出力デバイスとを接続するためのインタフェースである。例えば入出力インタフェース１１００には、キーボードなどの入力装置や、ディスプレイ装置などの出力装置が接続される。
【００３３】
ネットワークインタフェース１１２０は、計算機１０００を通信網に接続するためのインタフェースである。この通信網は、例えば LAN（Local Area Network）や WAN（Wide Area Network）である。ネットワークインタフェース１１２０が通信網に接続する方法は、無線接続であってもよいし、有線接続であってもよい。
【００３４】
ストレージデバイス１０８０は、情報処理装置２０００の各機能構成部を実現するプログラムモジュールを記憶している。プロセッサ１０４０は、これら各プログラムモジュールをメモリ１０６０に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
【００３５】
＜処理の流れ＞
図４は、実施形態１の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。第１取得部２０２０は、制御システム１０の構成情報、及び各アクチュエータ１６についての制御ルールを取得する（Ｓ１０２）。
【００３６】
Ｓ１０４からＳ１１０は、複数のセンサ１４それぞれについて実行されるループ処理Ａである。Ｓ１０４において、情報処理装置２０００は、全てのセンサ１４を対象としてループ処理Ａを実行したか否かを判定する。全てのセンサ１４について既にループ処理Ａを実行した場合、図４の処理はＳ１１２に進む。一方、まだループ処理Ａの対象としていないセンサ１４がある場合、図４の処理はＳ１０６に進む。Ｓ１０６に進む際、情報処理装置２０００は、まだループ処理Ａの対象としていないセンサ１４の中から１つを選択する。ここで選択されるセンサ１４を、センサｉと表記する。
【００３７】
第２取得部２０４０は、センサｉによって観測された物理量に関する挙動ログデータを取得する（Ｓ１０６）。第１生成部２０６０は、取得された挙動ログデータを用いて、センサｉについての挙動関数を生成する（Ｓ１０８）。Ｓ１１０はループ処理Ａの終端であるため、図４の処理はＳ１０４に進む。
【００３８】
Ｓ１１２において、第２生成部２０８０は、構成情報、制御ルール、及び挙動関数を用いて、制御システム１０のシステムモデルを生成する。情報処理装置２０００は、生成されたシステムモデルを出力する（Ｓ１１４）。
【００３９】
＜構成情報について＞
構成情報は、制御システム１０の構成を表す情報である。具体的には、制御システム１０に含まれるセンサ１４の集合、アクチュエータ１６の集合、及びコントローラ１８の集合を表す。なお、コントローラ１８の数はアクチュエータ１６の数より少なくてもよい。この場合、複数のアクチュエータ１６を制御するコントローラ１８が存在する。
【００４０】
構成情報は、アクチュエータ１６がどのセンサ１４によって観測される物理量を制御しているのかを示す第１対応関係をさらに含む。例えば、アクチュエータ a1 が、センサ s1 によって観測される物理量を制御するとする。この場合、第１対応関係情報は、（a1, s1）という対応関係を示す。
【００４１】
また、構成情報は、コントローラ１８がどのセンサ１４から取得した物理量に基づいてどのアクチュエータ１６を制御するのかを表す第２対応関係情報を含む。例えば、コントローラ c1 がセンサ s1 から取得した物理量を用いて、アクチュエータ a1 を制御するとする。この場合、第２対応関係情報は、（c1, s1, a1）という対応関係を示す。
【００４２】
第１取得部２０２０が構成情報を取得する方法は様々である。例えば第１取得部２０２０は、構成情報が記憶されている記憶装置にアクセスすることで、構成情報を取得する。その他にも例えば、第１取得部２０２０は、他の装置から送信される構成情報を受信することで、構成情報を取得する。
【００４３】
＜制御ルールについて＞
制御ルールは、センサ１４の観測値に基づいてコントローラ１８がどのようにアクチュエータ１６を制御するのかを表すルールである。より具体的には、制御ルールは、或る時刻 t においてコントローラ１８がセンサ１４から取得した観測値に基づいて、時刻 t+1 又はそれ以降の任意の時刻におけるアクチュエータ１６の状態を設定するように記述される。例えば、制御ルールは、「時刻 t においてセンサ１４の観測値が閾値 H 以上なら、時刻 t+1 でアクチュエータ１６の状態を OFF に変更する」といった制御を実現するように記述される。
【００４４】
制御ルールは、情報処理装置２０００によって生成されるシステムモデルを用いてモデル検査を行うモデル検査ツールが解釈可能な形式で記述されている必要がある。制御ルールは、人手で作成されてもよいし、情報処理装置２０００によって生成されてもよい。前者の場合、例えば第１取得部２０２０は、制御ルールが記憶されている記憶装置にアクセスしたり、他の装置から送信される制御ルールを受信したりすることにより、制御ルールを取得する。後者の場合、第１取得部２０２０は、情報処理装置２０００の内部で生成された制御ルールを取得する。
【００４５】
後者の場合、情報処理装置２０００は、モデル検査ツールが解釈できない形式で記述されている、コントローラ１８によるアクチュエータ１６の制御を定めた情報を取得し、取得した情報を、モデル検査ツールが解釈可能な情報（すなわち、制御ルール）に変換する。この変換を行う機能構成部を、第３生成部２１００と呼ぶ。図５は、第３生成部２１００を有する情報処理装置２０００を例示する図である。
【００４６】
例えば第３生成部２１００は、コントローラ１８によって実行される制御プログラムを取得し、その制御プログラムを制御ルールに変換する。この場合、第３生成部２１００には、制御プログラムを制御ルールに変換するロジックを含めておく。その他にも例えば、第３生成部２１００は、自然言語で記述された情報を取得し、その情報を制御ルールに変換してもよい。この場合、第３生成部２１００には、自然言語で記述された情報を制御ルールに変換するロジックを含めておく。なお、制御ルールに変換する情報を第３生成部２１００が取得する方法は、以下で説明する、第１生成部２０６０が制御ルールを取得する方法と同様である。
【００４７】
＜挙動ログデータについて＞
挙動ログデータは、センサ１４によって観測された物理量の時系列データを、複数のアクチュエータ１６それぞれの状態に対応づけて示す。より具体的には、挙動ログデータは、「時刻、その時刻にセンサ１４によって観測された物理量、その時刻における各アクチュエータ１６の状態」という対応関係を示す。挙動ログデータが示す時系列データの時間幅は任意であり、例えば１秒や１０秒といった時間幅である。
【００４８】
図６は、挙動ログデータによって示されている情報をグラフで例示した図である。横軸は時間を示し、縦軸は観測値を示す。また、複数のアクチュエータ１６の状態の組み合わせが変化するタイミングを点線で示している。このグラフの例のように、複数のアクチュエータ１６の状態の組み合わせごとに、センサ１４の観測値の時間変化の様子が異なることが多い。そのため、後述する様に、複数のアクチュエータ１６の状態の組み合わせごとに、挙動関数が生成される。
【００４９】
センサ１４の挙動ログデータは、例えば、制御システム１０を実際に動作させ、各時刻におけるそのセンサ１４の観測値と各アクチュエータ１６の状態とを記録することで生成される。その他にも例えば、挙動ログデータは、制御システム１０の動作をシミュレーションすることで生成されてもよい。なお、コンピュータを利用して制御システム１０の動作をシミュレーションし、その挙動のログを得る技術には、既存の技術を利用することができる。
【００５０】
第２取得部２０４０が挙動ログデータを取得する方法は様々である。例えば第２取得部２０４０は、挙動ログデータが記憶されている記憶装置から挙動ログデータを取得する。その他にも例えば、第２取得部２０４０は、他の装置から送信された挙動ログデータを受信することで、挙動ログデータを取得してもよい。
【００５１】
＜挙動関数の生成：Ｓ１０８＞
第１生成部２０６０は、センサ１４の挙動ログデータを利用して、複数のアクチュエータ１６の状態の組み合わせごとに、そのセンサ１４の観測値の時間変化を表す挙動関数を生成する（Ｓ１０８）。挙動関数は、センサ１４ごとに生成される。ここで、或るセンサｉについて生成される挙動関数の集合を、挙動関数集合 Fi と表記する。センサの総数を n とおくと、第１生成部２０６０により、n 個の挙動関数集合 F1, F2,..., Fn が生成される。
【００５２】
挙動関数集合 Fi には、複数のアクチュエータ１６の状態の各組み合わせ cj に対応する挙動関数 fij(t) が含まれる。t は時刻を表す。すなわち、Fi={fi1(t), fi2(t), ..., fim(t)} である。m は、例えば、複数のアクチュエータ１６の状態の組み合わせの総数である。ただし、挙動関数集合 Fi に含まれる挙動関数は、センサｉの観測値に影響を与えるアクチュエータ１６の状態の組み合わせのみに着目して生成されてもよい。この場合、挙動関数集合 Fi に含まれる挙動関数の総数 m は、センサｉの観測値に影響を与えるアクチュエータ１６の状態の組み合わせの総数となる。
【００５３】
例えば、それぞれが２つの状態を取り得る３つのアクチュエータ１６が制御システム１０に含まれているとする。この場合、アクチュエータ１６が取り得る状態の組み合わせの総数は８である。しかし、これら３つのアクチュエータ１６のうち、２つのアクチュエータ１６しかセンサ１４の観測値に影響を与えない場合、これら２つのアクチュエータ１６の状態の組み合わせそれぞれについて挙動関数が生成されればよく、その数は４となる。なお、センサ１４と、そのセンサ１４の観測値に影響を与える制御を行うアクチュエータ１６との対応関係は、前述した第１対応関係情報に示されている。
【００５４】
第１生成部２０６０は、センサｉの挙動ログデータを観測時刻の昇順にソートし、ソートした複数の挙動ログデータを、複数のアクチュエータ１６の状態の組み合わせが同一である区間ごとに区切る。そして、第１生成部２０６０は、区間ごとに、その区間に含まれるセンサｉの観測値の時系列データを利用して、センサｉの観測値の時間変化を表す関数を生成する。ただし、アクチュエータ１６の状態の組み合わせが cj である区間が複数存在することもある。この場合、例えば第１生成部２０６０は、それら複数の区間のうち、時間幅が最も長い区間を利用して、状態の組み合わせ cj に対応する挙動関数 fij(t) を生成する。
【００５５】
図７は、複数のアクチュエータ１６の状態の組み合わせごとに挙動関数が生成される様子を例示する図である。図７に示すセンサ１４の観測値は、図６に示したものと同じである。この例では、センサ１の観測値の時間変化が、２つのアクチュエータ１と２の状態の組み合わせに依存している。そこで第１生成部２０６０は、これら２つのアクチュエータ１６の状態の組み合わせごとに、挙動関数を生成する。図７では、２つのアクチュエータ１６の状態の組み合わせとして、c1 から c3 が示されている。そこで、センサ１の挙動関数として、c1 に対応する f11(t)、c2 に対応する f12(t) 、及び c3 に対応する f13(t) という３つの挙動関数が生成されている。
【００５６】
挙動関数は、センサ１４の観測値の時間変化を予測する予測モデルとして生成することができる。予測モデルの種類には、線形回帰モデルや重回帰モデルといった、任意の回帰モデルを利用することができる。例えば重回帰モデルであれば、以下のような最小二乗法を解くことによって、挙動関数 fij(t) を生成することができる。
【数１】
2020105179.tif 000003
ここで、|・| はノルムを表す記号である。ノルムとしては、例えば L2 ノルムを利用することができる。
【００５７】
上述の式（２）において、yij(t) は、センサｉの挙動ログデータのうち、アクチュエータ１６の状態の組み合わせが cj であるデータに示されている観測値である。ただし、挙動ログデータは、アクチュエータ１６の状態の組み合わせが cj となる最初の時刻のデータを基準とした相対データに置き換えて利用される。すなわち、各データの時刻及び観測値から、アクチュエータ１６の状態の組み合わせが cj となる最初の時刻及びその時刻の観測値を引いて利用する。ただし、観測値については、挙動ログデータに示されているデータをそのまま利用して挙動関数 fij(t) を生成した後、α0を０に置き換えるようにしてもよい。
【００５８】
式（１）の次数 d は、予め定められた値であってもよいし、アクチュエータ１６の状態の組み合わせ cj ごとに第１生成部２０６０が決定してもよい。後者の場合、例えば第１生成部２０６０は、次数を様々に変えて挙動関数 fij(t) の候補を複数生成し、統計モデルの良さを評価する指標（例えば、AIC（赤池の情報量基準）や BIC（ベイズ情報量基準））を用いて各次数の挙動関数を評価することで、最適な次数を決定する。例えば AIC や BIC を指標値として利用する場合、算出される指標値が最小となる次数 d が最適な次数となる。
【００５９】
ここで、挙動関数を利用することには、制御システム１０の挙動を正確にシミュレートできるという利点がある。以下、この利点について説明する。まず、非特許文献１において、センサの観測値は、{UF, LL, L2, L1, L, H, H1, H2, HH, OF} という１０段階の値のいずれかとなる。そして、シミュレーションが１単位時間進むごとに、センサの観測値が１段階変化する。これは、シミュレーションの１単位時間の長さが、必然的に、センサの観測値が１段階変化する程度に長くなってしまうことを意味する。
【００６０】
そして、このようにシミュレーションの１単位時間が長いと、コントローラ１８による制御のタイミングを細かい粒度でシミュレートできず、ひいては、制御対象１２の挙動を細かい粒度でシミュレートできない。例えばセンサの観測値が１単位時間で UF から LL に変化するということは、センサの観測値が UF と LL の間にある状況をシミュレートできないことを意味する。特に情報処理装置２０００が扱うセンサ１４が複数存在する制御システム１０では、これらのセンサ１４の観測値に基づくコントローラ１８による制御の順番が、制御システム１０全体の挙動に大きく関わる。そのため、制御システム１０の挙動を正確にシミュレートするためには、コントローラ１８による制御のタイミングを細かい粒度でシミュレートできる必要がある。
【００６１】
この点、情報処理装置２０００によれば、前述した多項式などを用いて挙動関数を定めることにより、非特許文献１などに開示されているシステムのモデルと比較し、センサの観測値を細かい粒度で表現できる。よって、シミュレーションの１単位時間を短くすることができ、コントローラ１８による制御のタイミングを細かい粒度でシミュレートできる。これにより、制御システム１０の挙動を正確にシミュレートできる。
【００６２】
＜システムモデルの生成：Ｓ１１２＞
第２生成部２０８０は、第１取得部２０２０によって取得された構成情報及び制御ルールと、第１生成部２０６０によって生成された複数の挙動関数集合 F1 から Fn とを用いて、制御システム１０のシステムモデルを生成する。
【００６３】
システムモデルは、制御システム１０の挙動（コントローラ１８による制御、アクチュエータ１６の状態、及びセンサ１４の出力値）の時間変化を表現した情報である。例えば、「アクチュエータ１６の状態が時点 t から時点 t+1 でどのように変化するか」が、時点 t におけるアクチュエータ１６の状態とセンサ１４の出力値、及びその出力値に応じたコントローラ１８の制御によって表される。このような制御システム１０の状態の時間変化を初期状態から順に網羅的に辿っていくことにより、制御システム１０において起こりうる状態変化を網羅的に探索することができる。
【００６４】
システムモデルは、モデル検査に利用するモデル検査ツールで扱えるように、モデル検査ツールの実装に応じて生成される。例えばシステムモデルは、構成情報、制御ルール、及び挙動関数集合をセットにしたデータとして実現される。その他にも例えば、システムモデルは、構成情報と、挙動関数集合が組み込まれた制御ルールとをセットにしたデータとして実現される。ここで、挙動関数集合が組み込まれた制御ルールとは、制御ルールにおいてセンサの値を参照する箇所に対して対応する挙動関数を埋め込んだルールを意味する。
【００６５】
＜システムモデルの出力：Ｓ１１４＞
第２生成部２０８０は、生成したシステムモデルを出力する（Ｓ１１４）。ここで、生成したシステムモデルを利用したモデル検査は、情報処理装置２０００によって行われてもよいし、情報処理装置２０００以外の装置によって行われてもよい。前者の場合、第２生成部２０８０は、生成したシステムモデルを任意の記憶装置に記憶させる。生成したシステムモデルについてのモデル検査を行う機能を有する情報処理装置２０００については、第２の実施形態として説明する。
【００６６】
一方、生成したシステムモデルを利用した検査が情報処理装置２０００以外の装置によって行われる場合、第２生成部２０８０は、システムモデルを利用する装置（以下、検査装置）が取得可能な態様で、システムモデルを出力する。例えば第２生成部２０８０は、検査装置からアクセス可能な記憶装置にシステムモデルを記憶させたり、検査装置に対してシステムモデルを送信したりする。
【００６７】
［実施形態２］
図８は、実施形態２の情報処理装置２０００の機能構成を例示する図である。実施形態２の情報処理装置２０００は、第２生成部２０８０によって生成されたシステムモデルを利用してモデル検査を行う機能を有する。そのために、情報処理装置２０００は、第３取得部２１２０及び検査実行部２１４０を有する。第３取得部２１２０は、攻撃ルール及び攻撃ゴールを示す攻撃情報を取得する。攻撃ルールや攻撃情報を取得する方法は、構成情報などを取得する情報と同様である。
【００６８】
攻撃ルールは、攻撃者が制御システム１０に対して実行可能な攻撃が記述された情報である。攻撃の例としては、「或るセンサ１４による観測値を任意の値に書き換える」などがある。例えば、時刻 t においてアクチュエータの状態の組み合わせが cj である場合、コントローラ１８がセンサｉの観測値として本来取得すべき値は fij(t) である。これに対し、上述の攻撃が行われると、コントローラ１８が取得する値が、fij(t) 以外の任意の値に変更されてしまう。
【００６９】
その他の攻撃の例としては、「或るアクチュエータ１６の状態を任意の状態に変更する」などがある。本来、アクチュエータ１６の状態は、制御ルールに基づいて制御される。しかしながら、上述の攻撃が行われると、アクチュエータ１６の状態が、制御ルールに依存しない任意の状態に変更されてしまう。
【００７０】
攻撃ゴールは、攻撃者による攻撃の目標である。攻撃者は、制御システム１０によって制御される制御対象１２を所望の状態に遷移させるために攻撃を行う。そのため、攻撃ゴールは、攻撃の目標となる制御対象１２の状態を表す。ここで、制御対象１２の状態は、センサ１４によって観測される。よって、攻撃ゴールは、センサ１４の観測値で表すことができる。例えば、制御対象１２が貯水タンクであり、「貯水タンクから水をあふれさせる」という攻撃を行う場合、攻撃ゴールは、「貯水タンクの水量を観測するセンサ１４の観測値＞貯水量の上限値」と表すことができる。
【００７１】
検査実行部２１４０は、第２生成部２０８０によって生成されたシステムモデルと攻撃情報とを用いてモデル検査を実行する。ここで、システムモデル、攻撃ルール、及び攻撃ゴールの組み合わせを用いてモデル検査を実行する機構としては、前述した Alloy Analyzer など、既存のモデル検査ツールを利用することができる。
【００７２】
Alloy Analyzer などのモデル検査ツールは、システムモデルの仕様が正しいかどうかの検証を行う。そこで例えば、検査実行部２１４０は、攻撃ゴールを仕様として設定した上で、モデル検査ツールによるシステムモデルのモデル検査を実行する。モデル検査ツールは、制御ルールと攻撃ルールに基づいて、システムモデルが取り得る状態を網羅的に探索し、設定された仕様が正しいか否かを判定する。ここで、仕様が正しいと判定されることは、攻撃ゴールが達成されることを意味する。一方、仕様が正しくないと判定されることは、攻撃ゴールが達成されないことを意味する。そこで、仕様が正しいと判定された場合に行われた一連の攻撃を、攻撃ゴールを達成することができる攻撃シナリオとして得ることができる。
【００７３】
ここで、モデル検査ツールによる探索の結果は、探索の開始時におけるシステムモデルの状態（すなわち、初期値の設定）によって変わる。そのため、初期値を様々に変えながらモデル検査ツールを実行することが好適である。そこで例えば、モデル検査ツールの利用者が、初期値の設定を様々に変えながら情報処理装置２０００を動作させることで、各初期設定に対応する探索結果を得るようにする。また、このように初期値を変えながらモデル検査ツールを実行する作業は、検査実行部２１４０によって自動的に行われてもよい。
【００７４】
結果出力部２１６０は、検査実行部２１４０によって実行されたモデル検査の結果を出力する。具体的には、攻撃ゴールを達成できる攻撃シナリオ（一連の攻撃手順）が得られた場合、結果出力部２１６０は、その攻撃シナリオを表すシナリオ情報を出力する。例えばシナリオ情報は、実行された攻撃とそのタイミング（時刻）との組み合わせを１つ以上列挙した情報である。シナリオ情報を出力することにより、制御システム１０が持つ脆弱性をユーザが容易に把握することができる。
【００７５】
結果出力部２１６０は、シナリオ情報と共に、各センサ１４の観測値の時系列データや、各アクチュエータ１６の状態変化の時系列データをさらに出力してもよい。これらの情報も出力することにより、制御システム１０の状態がどのように変化しながら攻撃ゴールが達成されるのかを、ユーザが把握することができる。
【００７６】
また、結果出力部２１６０は、シナリオ情報が示す攻撃シナリオによって攻撃ゴールが達成されるまでの時間を表す情報をさらに出力してもよい。ここで一般に、モデル検査では、或る所定間隔の単位時間でシミュレーションが進行される。この単位時間はティックなどと呼ばれる。例えばティックを１０秒間に設定した場合、モデル検査では、時間が１０秒間隔で進行する。すなわち、時刻 t+1 は、時刻 t から１０秒後の時間となる。
【００７７】
結果出力部２１６０は、攻撃ゴールが達成されるまでの時間を、シミュレーション時間（すなわち、ティック数）で出力してもよいし、推定される実際の時間で出力してもよい。例えば攻撃ゴールが k ティックで達成され、ティック間隔が b 秒であるとする。この場合、結果出力部２１６０は、攻撃ゴールが達成されるまでの時間として、「k ティック」というシミュレーショ時間を表す情報を出力してもよいし、「k*b 秒」という実時間を表す情報を出力してもよい。
【００７８】
なお、結果出力部２１６０が上述した種々の情報を出力する出力先は任意である。例えば、結果出力部２１６０は、記憶装置に情報を記憶させたり、ディスプレイ装置に情報を表示させたり、他の装置に情報を送信したりする。
【００７９】
＜ハードウエア構成の例＞
実施形態２の情報処理装置２０００のハードウエア構成は、実施形態１の情報処理装置２０００と同様に、例えば図３で表される。ただし、実施形態２のストレージデバイス１０８０には、実施形態２の情報処理装置２０００の機能を実現するためのプログラムモジュールが記憶されている。
【００８０】
＜処理の流れ＞
図９は、実施形態２の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。第３取得部２１２０は攻撃情報を取得する（Ｓ２０２）。検査実行部２１４０は、攻撃情報を用いてシステムモデルのモデル検査を実行する（Ｓ２０４）。結果出力部２１６０は、モデル検査の結果を出力する（Ｓ２０６）。
【００８１】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【００８２】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
１．  制御対象に関する物理量を観測する複数のセンサ、前記制御対象の挙動を変化させる複数のアクチュエータ、及び各前記アクチュエータを制御するコントローラを有するシステムの構成を表す構成情報、及び前記コントローラによる各前記アクチュエータの制御のルールを表す制御ルールを取得する第１取得部と、
前記センサによって観測された物理量の時系列データと各時刻における各前記アクチュエータの状態との組み合わせを示す挙動ログデータを、各前記センサについて取得する第２取得部と、
前記挙動ログデータを用いて、複数の前記アクチュエータの状態の組み合わせごと及び前記センサごとに、その状態の組み合わせにおいてそのセンサによって観測される物理量の時間変化を表す挙動関数を生成する第１生成部と、
前記システムについて、前記構成情報、前記制御ルール、及び前記挙動関数を用いてシステムモデルを生成する第２生成部と、を有する情報処理装置。
２．  前記第１生成部は、複数の前記センサそれぞれについて、
そのセンサによって観測された物理量の時系列データを、複数の前記アクチュエータの状態の組み合わせがそれぞれ異なる複数の区間に分割し、
前記複数の区間それぞれについて、その区間に対応する挙動関数として、その区間に含まれる時系列データによって表される物理量の時間変化を予測する予測モデルを生成する、１．に記載の情報処理装置。
３．  前記予測モデルは重回帰モデルである、２．に記載の情報処理装置。
４．  攻撃者が前記システムに対して実行可能な攻撃を表す攻撃ルール、及び攻撃者が目標とする前記システムの状態を表す攻撃ゴールを取得する第３取得部と、
前記システムモデル、前記攻撃ルール、及び前記攻撃ゴールを用いて、前記システムの状態を前記攻撃ゴールによって示される状態に遷移させる攻撃の手順を探索する検査実行部と、
前記検査実行部による検査の結果を出力する結果出力部と、を有する１．乃至３．いずれか一つに記載の情報処理装置。
【００８３】
５．  コンピュータによって実行される制御方法であって、
制御対象に関する物理量を観測する複数のセンサ、前記制御対象の挙動を変化させる複数のアクチュエータ、及び各前記アクチュエータを制御するコントローラを有するシステムの構成を表す構成情報、及び前記コントローラによる各前記アクチュエータの制御のルールを表す制御ルールを取得する第１取得ステップと、
前記センサによって観測された物理量の時系列データと各時刻における各前記アクチュエータの状態との組み合わせを示す挙動ログデータを、各前記センサについて取得する第２取得ステップと、
前記挙動ログデータを用いて、複数の前記アクチュエータの状態の組み合わせごと及び前記センサごとに、その状態の組み合わせにおいてそのセンサによって観測される物理量の時間変化を表す挙動関数を生成する第１生成ステップと、
前記システムについて、前記構成情報、前記制御ルール、及び前記挙動関数を用いてシステムモデルを生成する第２生成ステップと、を有する制御方法。
６．  前記第１生成ステップにおいて、複数の前記センサそれぞれについて、
そのセンサによって観測された物理量の時系列データを、複数の前記アクチュエータの状態の組み合わせがそれぞれ異なる複数の区間に分割し、
前記複数の区間それぞれについて、その区間に対応する挙動関数として、その区間に含まれる時系列データによって表される物理量の時間変化を予測する予測モデルを生成する、５．に記載の制御方法。
７．  前記予測モデルは重回帰モデルである、６．に記載の制御方法。
８．  攻撃者が前記システムに対して実行可能な攻撃を表す攻撃ルール、及び攻撃者が目標とする前記システムの状態を表す攻撃ゴールを取得する第３取得ステップと、
前記システムモデル、前記攻撃ルール、及び前記攻撃ゴールを用いて、前記システムの状態を前記攻撃ゴールによって示される状態に遷移させる攻撃の手順を探索する検査実行ステップと、
前記検査実行ステップによる検査の結果を出力する結果出力ステップと、を有する５．乃至７．いずれか一つに記載の制御方法。
【００８４】
９．  ５．乃至８．いずれか一つに記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【図１】
2020105179.tif 000004
【図２】
2020105179.tif 000005
【図３】
2020105179.tif 000006
【図４】
2020105179.tif 000007
【図５】
2020105179.tif 000008
【図６】
2020105179.tif 000009
【図７】
2020105179.tif 000010
【図８】
2020105179.tif 000011
【図９】
2020105179.tif 000012
【国際調査報告】
2020105179.tif 000013
2020105179.tif 000014