(57)【要約】      （修正有）【課題】プログラミング論理コントローラ（ＰＬＣ）の実行システムを監視するためのシステム及び方法を提供する。【解決手段】プログラミング論理コントローラ（ＰＬＣ）の実行システムを監視するための方法であって、セキュリティモジュールにより、ＰＬＣプログラミング論理コントローラ（ＰＬＣ）実行システムの実行を監視し、更にＰＬＣ実行システムのプログラムモジュール同士の相互作用及びオペレーティングシステムのリソースとの相互作用を監視する。【選択図】図１
2018139098.tif 000002
【特許請求の範囲】
【請求項１】
プログラミング論理コントローラ（ＰＬＣ）の実行システムを監視するための方法であって、
接続ステップと、分割ステップと、修正ステップと、監視ステップとを備え、
前記接続ステップでは、プロセッサで実行可能なセキュリティモジュールにより、前記ＰＬＣ実行システムにアクセスし、
前記分割ステップでは、前記ＰＬＣ実行システムの機能構造と、前記ＰＬＣ実行システムのセキュリティに対する脅威と、ＰＬＣ実行システムのコード及びデータの重要性とのうち少なくとも１つに基づいて、前記セキュリティモジュールにより前記ＰＬＣ実行システムのコードとデータを複数のプログラムモジュールへと分割し、
前記修正ステップでは、前記セキュリティモジュールにより、プログラムモジュールのデータ交換インターフェイスを修正し、
前記交換インターフェイスは、
前記プログラムモジュールとオペレーティングシステムのリソースとの間の相互作用に使用され、
前記相互作用が前記セキュリティモジュールを介して行われるもので、
交換されるデータは前記セキュリティモジュールにより指定された形式に準拠し、
前記監視ステップでは、前記セキュリティモジュールにより、ＰＬＣ実行システムの実行を監視し、更にＰＬＣ実行システムのプログラムモジュール同士の相互作用及びオペレーティングシステムのリソースとの相互作用を監視する、
方法。
【請求項２】
請求項１に記載の方法において、
前記プログラムモジュールは、互いに、及び前記ＰＬＣ実行システムのオペレーティングシステムのリソースから隔離される、
方法。
【請求項３】
請求項２に記載の方法において、
前記セキュリティモジュールにより、前記相互作用が前記セキュリティモジュールを介して発生するように、前記プログラムモジュールと前記オペレーティングシステムの前記リソースとの間の相互作用に使用される前記プログラムモジュールのデータ交換インターフェイスを修正し、ここで交換されるデータは、セキュリティモジュールにより指定された形式に準拠する、
方法。
【請求項４】
請求項１に記載の方法において、
前記分割ステップでは、各機能的に完全な、前記ＰＬＣ実行システムのコード及びデータのセグメントを１つ以上のモジュールに分離し、ＰＬＣ実行システムの残りのコードとデータを別のモジュールに分離することを含む、
方法。
【請求項５】
請求項１に記載の方法において、
前記分割ステップでは、脆弱性を含む前記実行システムのコード及びデータのセグメントを１つ以上のモジュールに分離し、残りのコードとＰＬＣ実行システムのデータを別のモジュールに分離することを含む、
方法。
【請求項６】
請求項１に記載の方法において、
前記分割ステップでは、重要なオブジェクトを制御するような前記ＰＬＣ実行システムのコードとデータの各部分を１つ以上のモジュールに分離し、残りのコードとＰＬＣ実行システムのデータを別のモジュールに分離することを含む、
方法。
【請求項７】
請求項１に記載の方法において、
前記監視ステップでは、相互作用を修正及び停止することを更に含む、
方法。
【請求項８】
請求項２に記載の方法において、
プログラムモジュールは、コンテナ化を使用して分離される、
方法。
【請求項９】
請求項２に記載の方法において、
前記プログラムモジュールは仮想化を用いて分離され、前記セキュリティモジュールはハイパーバイザ上にインストールされる、
方法。
【請求項１０】
請求項１に記載の方法において、
前記データ交換インターフェイスの修正は、前記データ交換のシーケンス及びプロトコルを変更することを含む、
方法。
【請求項１１】
請求項１に記載の方法において、
前記監視ステップでは、前記セキュリティモジュールによって、
（１）正常な、又は許可された相互作用を指定する規則の違反に基づく相互作用の不一致、又は
（２）相互作用の、異常な、又は禁止された相互作用を指定する規則との対応
に基づき、監視された相互作用において異常を検出することを更に含む、
方法。
【請求項１２】
プログラミング論理コントローラ（ＰＬＣ）の実行システムを監視するためのシステムであって、セキュリティモジュールを実行するハードウェアプロセッサを備え、
前記ハードウェアプロセッサは、接続ステップと、分割ステップと、修正ステップと、監視ステップとを実行するように構成され、
前記接続ステップでは、プロセッサで実行可能なセキュリティモジュールにより、前記ＰＬＣ実行システムにアクセスし、
前記分割ステップでは、前記ＰＬＣ実行システムの機能構造と、前記ＰＬＣ実行システムのセキュリティに対する脅威と、ＰＬＣ実行システムのコード及びデータの重要性とのうち少なくとも１つに基づいて、前記セキュリティモジュールにより前記ＰＬＣ実行システムのコードとデータを複数のプログラムモジュールへと分割し、
前記修正ステップでは、前記セキュリティモジュールにより、プログラムモジュールのデータ交換インターフェイスを修正し、
前記交換インターフェイスは、
前記プログラムモジュールとオペレーティングシステムのリソースとの間の相互作用に使用され、
前記相互作用が前記セキュリティモジュールを介して行われるもので、
交換されるデータは前記セキュリティモジュールにより指定された形式に準拠し、
前記監視ステップでは、前記セキュリティモジュールにより、ＰＬＣ実行システムの実行を監視し、更にＰＬＣ実行システムのプログラムモジュール同士の相互作用及びオペレーティングシステムのリソースとの相互作用を監視する、
システム。
【請求項１３】
請求項１２に記載のシステムにおいて、
前記プログラムモジュールは、互いに、及び前記ＰＬＣ実行システムのオペレーティングシステムのリソースから隔離される、
システム。
【請求項１４】
請求項１３に記載のシステムにおいて、
前記セキュリティモジュールにより、前記相互作用が前記セキュリティモジュールを介して発生するように、前記プログラムモジュールと前記オペレーティングシステムの前記リソースとの間の相互作用に使用される前記プログラムモジュールのデータ交換インターフェイスを修正し、ここで交換されるデータは、セキュリティモジュールにより指定された形式に準拠する、
システム。
【請求項１５】
請求項１２に記載のシステムにおいて、
前記分割ステップでは、各機能的に完全な、前記ＰＬＣ実行システムのコード及びデータのセグメントを１つ以上のモジュールに分離し、ＰＬＣ実行システムの残りのコードとデータを別のモジュールに分離することを含む、
システム。
【請求項１６】
請求項１２に記載のシステムにおいて、
前記分割ステップでは、脆弱性を含む前記実行システムのコード及びデータのセグメントを１つ以上のモジュールに分離し、残りのコードとＰＬＣ実行システムのデータを別のモジュールに分離することを含む、
システム。
【請求項１７】
請求項１２に記載のシステムにおいて、
前記分割ステップでは、重要なオブジェクトを制御するような前記ＰＬＣ実行システムのコードとデータの各部分を１つ以上のモジュールに分離し、残りのコードとＰＬＣ実行システムのデータを別のモジュールに分離することを含む、
システム。
【請求項１８】
請求項１２に記載のシステムにおいて、
前記監視ステップでは、相互作用を修正及び停止することを更に含む、
システム。
【請求項１９】
請求項１３に記載のシステムにおいて、
プログラムモジュールは、コンテナ化を使用して分離される、
システム。
【請求項２０】
請求項１３に記載のシステムにおいて、
前記プログラムモジュールは仮想化を用いて分離され、前記セキュリティモジュールはハイパーバイザ上にインストールされる、
システム。
【請求項２１】
請求項１２に記載のシステムにおいて、
前記データ交換インターフェイスの修正は、前記データ交換のシーケンス及びプロトコルを変更することを含む、
システム。
【請求項２２】
請求項１２に記載のシステムにおいて、
前記監視ステップでは、前記セキュリティモジュールによって、
（１）正常な、又は許可された相互作用を指定する規則の違反に基づく相互作用の不一致、又は
（２）相互作用の、異常な、又は禁止された相互作用を指定する規則との対応
に基づき、監視された相互作用において異常を検出することを更に含む、
システム。
【請求項２３】
プログラミング論理コントローラ（ＰＬＣ）の実行システムを監視するためのコンピュータ実行可能な命令を格納する非一時的なコンピュータ可読媒体であって、
前記命令は、接続ステップと、分割ステップと、修正ステップと、監視ステップとを実行させる命令であって、
前記接続ステップでは、プロセッサで実行可能なセキュリティモジュールにより、前記ＰＬＣ実行システムにアクセスし、
前記分割ステップでは、前記ＰＬＣ実行システムの機能構造と、前記ＰＬＣ実行システムのセキュリティに対する脅威と、ＰＬＣ実行システムのコード及びデータの重要性とのうち少なくとも１つに基づいて、前記セキュリティモジュールにより前記ＰＬＣ実行システムのコードとデータを複数のプログラムモジュールへと分割し、
前記修正ステップでは、前記セキュリティモジュールにより、プログラムモジュールのデータ交換インターフェイスを修正し、
前記交換インターフェイスは、
前記プログラムモジュールとオペレーティングシステムのリソースとの間の相互作用に使用され、
前記相互作用が前記セキュリティモジュールを介して行われるもので、
交換されるデータは前記セキュリティモジュールにより指定された形式に準拠し、
前記監視ステップでは、前記セキュリティモジュールにより、ＰＬＣ実行システムの実行を監視し、更にＰＬＣ実行システムのプログラムモジュール同士の相互作用及びオペレーティングシステムのリソースとの相互作用を監視する、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、サイバーセキュリティの分野に関し、より具体的には、プログラマブル論理コントローラの実行システムを監視するためのシステム及び方法に関するものである。
【背景技術】
【０００２】
自動制御システム（ＡＣＳ）に関するサイバー攻撃は非常に一般的になっている。ほぼ全てのＡＣＳ要素が攻撃の対象となり、プログラマブル論理コントローラ（ＰＬＣ）も例外ではない。ＰＬＣには、ＡＣＳへの攻撃に利用され得る幾つかの脆弱性がある。このような脆弱性の１つは、ＰＬＣの実行システム（ＣｏｄｅＳＹＳ  ＲＴＥ等）の使用であり、それはＰＬＣの稼働を制御するようなオペレーティングシステム上の仮想アドレス空間において実行されるモノリシック又はマルチコンポーネントプログラムで構成される。従って、入力装置との相互作用を実現するような、ＰＬＣ実行システムによってサポートされる機能の構成要素が１つでも危険に晒されると、ＰＬＣ実行システム全体が危険に晒されてしまう。
【０００３】
技術的な問題は、機能の構成要素が脆弱性を持つＰＬＣ実行システムを含むＡＣＳの安全な実行を提供することの難しさにある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
現在、ＡＣＳのセキュリティを確保するための二つの異なるアプローチがある：第一の場合では、ＰＬＣ設計は厳密に決定論的な問題を実行するために開発されており、理論上は、あらゆる柔軟性（例えば、最小限の時間と労力で１つの製品から別のものに移行可能である「柔軟性」）は排除され、実行システムを古典的な理解のもとに使う必要はない。第二の場合では、ＰＬＣは、実行システムと共に使用され、ＰＬＣに最大限の柔軟性を提供するが、規範的規制の観点から機能安全の要件に細心の注意が払われているにも関わらず、情報セキュリティの問題は完全に無視される。
【課題を解決するための手段】
【０００５】
プログラミング論理コントローラ（ＰＬＣ）の実行システムを監視するためのシステム及び方法が開示される。開示された解決策の１つの技術的結果は、セキュリティモジュールを介して、ＰＬＣ実行システムを相互に又はオペレーティングシステムとの相互作用を監視することによって達成され、これはＰＬＣ実行システムをモジュールに分割し、互いのモジュールとオペレーティングシステムのリソースとの間で相互作用がセキュリティモジュールを介してルーティングされるようにする。開示された解決策の別の技術的な結果は、実行システムをモジュールに分割し、それらを隔離することによってＡＣＳの機能安全性を改善するとともに、重要なオブジェクトを制御するコードとデータのセグメントが１つのモジュールに分離され、脆弱性を含むコードのセグメントが別のモジュールに分類されることにある。すなわち、あるモジュールで脆弱性が認識されても別のモジュールを侵害することはない。なぜなら、モジュールは分離または隔離されており、それらの間の相互作用が監視されているからである。
【０００６】
本発明によれば、プログラミング論理コントローラ（ＰＬＣ）の実行システムを監視するための方法であって、接続ステップと、分割ステップと、修正ステップと、監視ステップとを備え、前記接続ステップでは、プロセッサで実行可能なセキュリティモジュールにより、前記ＰＬＣ実行システムにアクセスし、前記分割ステップでは、前記ＰＬＣ実行システムの機能構造と、前記ＰＬＣ実行システムのセキュリティに対する脅威と、ＰＬＣ実行システムのコード及びデータの重要性とのうち少なくとも１つに基づいて、前記セキュリティモジュールにより前記ＰＬＣ実行システムのコードとデータを複数のプログラムモジュールへと分割し、前記修正ステップでは、前記セキュリティモジュールにより、プログラムモジュールのデータ交換インターフェイスを修正し、前記交換インターフェイスは、前記プログラムモジュールとオペレーティングシステムのリソースとの間の相互作用に使用され、前記相互作用が前記セキュリティモジュールを介して行われるもので、交換されるデータは前記セキュリティモジュールにより指定された形式に準拠し、前記監視ステップでは、前記セキュリティモジュールにより、ＰＬＣ実行システムの実行を監視し、更にＰＬＣ実行システムのプログラムモジュール同士の相互作用及びオペレーティングシステムのリソースとの相互作用を監視する、方法が提供される。
【０００７】
好ましくは、前記プログラムモジュールは、互いに、及び前記ＰＬＣ実行システムのオペレーティングシステムのリソースから隔離される。
【０００８】
好ましくは、前記セキュリティモジュールにより、前記相互作用が前記セキュリティモジュールを介して発生するように、前記プログラムモジュールと前記オペレーティングシステムの前記リソースとの間の相互作用に使用される前記プログラムモジュールのデータ交換インターフェイスを修正し、ここで交換されるデータは、セキュリティモジュールにより指定された形式に準拠する。
【０００９】
好ましくは、前記分割ステップでは、各機能的に完全な、前記ＰＬＣ実行システムのコード及びデータのセグメントを１つ以上のモジュールに分離し、ＰＬＣ実行システムの残りのコードとデータを別のモジュールに分離することを含む。
【００１０】
好ましくは、前記分割ステップでは、脆弱性を含む前記実行システムのコード及びデータのセグメントを１つ以上のモジュールに分離し、残りのコードとＰＬＣ実行システムのデータを別のモジュールに分離することを含む。
【００１１】
好ましくは、前記分割ステップでは、重要なオブジェクトを制御するような前記ＰＬＣ実行システムのコードとデータの各部分を１つ以上のモジュールに分離し、残りのコードとＰＬＣ実行システムのデータを別のモジュールに分離することを含む。
【００１２】
好ましくは、前記監視ステップでは、相互作用を修正及び停止することを更に含む。
【００１３】
好ましくは、プログラムモジュールは、コンテナ化を使用して分離される。
【００１４】
好ましくは、前記プログラムモジュールは仮想化を用いて分離され、前記セキュリティモジュールはハイパーバイザ上にインストールされる。
【００１５】
好ましくは、前記データ交換インターフェイスの修正は、前記データ交換のシーケンス及びプロトコルを変更することを含む。
【００１６】
好ましくは、前記監視ステップでは、前記セキュリティモジュールによって、（１）正常な、又は許可された相互作用を指定する規則の違反に基づく相互作用の不一致、又は（２）相互作用の、異常な、又は禁止された相互作用を指定する規則との対応に基づき、監視された相互作用において異常を検出することを更に含む。
【００１７】
本発明によれば、プログラミング論理コントローラ（ＰＬＣ）の実行システムを監視するためのシステムであって、セキュリティモジュールを実行するハードウェアプロセッサを備え、前記ハードウェアプロセッサは、接続ステップと、分割ステップと、修正ステップと、監視ステップとを実行するように構成され、前記接続ステップでは、プロセッサで実行可能なセキュリティモジュールにより、前記ＰＬＣ実行システムにアクセスし、前記分割ステップでは、前記ＰＬＣ実行システムの機能構造と、前記ＰＬＣ実行システムのセキュリティに対する脅威と、ＰＬＣ実行システムのコード及びデータの重要性とのうち少なくとも１つに基づいて、前記セキュリティモジュールにより前記ＰＬＣ実行システムのコードとデータを複数のプログラムモジュールへと分割し、前記修正ステップでは、前記セキュリティモジュールにより、プログラムモジュールのデータ交換インターフェイスを修正し、前記交換インターフェイスは、前記プログラムモジュールとオペレーティングシステムのリソースとの間の相互作用に使用され、前記相互作用が前記セキュリティモジュールを介して行われるもので、交換されるデータは前記セキュリティモジュールにより指定された形式に準拠し、前記監視ステップでは、前記セキュリティモジュールにより、ＰＬＣ実行システムの実行を監視し、更にＰＬＣ実行システムのプログラムモジュール同士の相互作用及びオペレーティングシステムのリソースとの相互作用を監視する、システムが提供される。
【００１８】
本発明によれば、プログラミング論理コントローラ（ＰＬＣ）の実行システムを監視するためのコンピュータ実行可能な命令を格納する非一時的なコンピュータ可読媒体であって、前記命令は、接続ステップと、分割ステップと、修正ステップと、監視ステップとを実行させる命令であって、前記接続ステップでは、プロセッサで実行可能なセキュリティモジュールにより、前記ＰＬＣ実行システムにアクセスし、前記分割ステップでは、前記ＰＬＣ実行システムの機能構造と、前記ＰＬＣ実行システムのセキュリティに対する脅威と、ＰＬＣ実行システムのコード及びデータの重要性とのうち少なくとも１つに基づいて、前記セキュリティモジュールにより前記ＰＬＣ実行システムのコードとデータを複数のプログラムモジュールへと分割し、前記修正ステップでは、前記セキュリティモジュールにより、プログラムモジュールのデータ交換インターフェイスを修正し、前記交換インターフェイスは、前記プログラムモジュールとオペレーティングシステムのリソースとの間の相互作用に使用され、前記相互作用が前記セキュリティモジュールを介して行われるもので、交換されるデータは前記セキュリティモジュールにより指定された形式に準拠し、前記監視ステップでは、前記セキュリティモジュールにより、ＰＬＣ実行システムの実行を監視し、更にＰＬＣ実行システムのプログラムモジュール同士の相互作用及びオペレーティングシステムのリソースとの相互作用を監視する、システムが提供される。 
【００１９】
本発明の例示的な態様に係る上述の簡略化した概要は、本発明の基本的な理解を提供するように機能するものである。この概要は、全ての企図された態様の広範な概要ではなく、全ての態様の重要な又は重要な要素を特定することも本発明の任意の又は全ての態様の範囲を描写することも意図されていない。唯一の目的は、以下の本発明のより詳細な説明の前置きとして、１つ又は複数の態様を簡略化した形で提示することである。前述の目的を達成するために、本発明の１つ又は複数の態様が記載され、これは特に特許請求の範囲において主張される特徴を含むものである。
【図面の簡単な説明】
【００２０】
添付の図面は、本明細書に組み込まれ本明細書の一部を構成し、本開示の１つ以上の例示的な態様を示し、詳細な説明と共にそれらの原理及び実施形態を説明する役割を果たす。
【図１】ＰＬＣ実行システム及びプログラミング並びにプログラムデバッグシステム（ＰＰＤＳ）のアーキテクチャの一例を示す。
【図２】ＰＬＣ実行システムを監視するための例示的なシステム及び方法を示す。
【図３】ＰＬＣ実行システムをモジュールに分割した例を示す。
【図４】ＰＬＣ実行システムのモジュールの分離の例を示す。
【図５】セキュリティモジュールのＰＬＣへのインストール例を示す。
【図６】本明細書に開示されたシステム及び方法を実装することができる汎用コンピュータシステムの例を示す。
【発明を実施するための形態】
【００２１】
例示的な態様は、本明細書において、プログラマブル論理コントローラの実行システムを監視するためのシステム、方法、及びコンピュータプログラム製品に関連して説明される。当業者であれば、以下の説明は例示的なものにすぎず、決して限定することを意図するものではないことを理解するであろう。 他の態様は、本開示の恩恵を受ける当業者には容易に示唆されるであろう。 添付の図面に例示されている例示的な態様の実装を詳細に参照する。 同じ符号は、図面全体にわたって可能な限り使用され、以下の記載は、同じ又は同様の対象を参照する。
【００２２】
図１は、プログラマブル論理コントローラ（ＰＬＣ）及びそのプログラミング並びにプログラムデバッグシステム（ＰＰＤＳ）の実行システムのアーキテクチャの一例を示す。 
【００２３】
プログラマブル論理コントローラ（ＰＬＣ）は工業用コントローラの電子コンポーネントであり、工業プロセスの自動化に使用される特殊な（コンピュータ化された）デバイスである。実行システム（実行ランタイム、ランタイム環境）は、コンピュータプログラムを実行するために必要なソフトウェア及び／又はハードウェア環境であり、コンピュータプログラムの実行中にアクセス可能である。これは、実装システム、実装環境、実行環境、或いは実行システムとも呼ばれる。
【００２４】
プログラマブル論理コントローラ（制御ランタイムシステム）の実行システムは、制御（アプリケーション）プログラムを実行するために必要であり、実行中に制御プログラムにアクセス可能であるような、ＰＬＣにインストールされたプログラム環境である。それはＰＬＣのアプリケーションプログラムのロードと実行及びデバッグ機能を有効にする。それはコントローラの製造過程においてコントローラにインストールされる。それはモノリシック（単一コンポーネント）プログラム又はプログラムの複合体（複数のコンポーネントで構成される）である。モノリシックプログラムの場合、ネットワーク交換、Ｉ／Ｏデバイスへのアクセス、及び他の機能を担うような全ての機能的に完全なコード（即ち、自身と異なる形式によるプログラムコード：オブジェクトコード、バイトコード（中間コード）、実行可能コード、マシンコード）とプログラムデータセグメントが、１つのコンポーネント内に収容される；そうでない場合、それらは幾つかのコンポーネント（ライブラリ等）に分割されている。これらのシステムの例は、ＭａｓｔｅｒＰＬＣ実行システムとＣｏｄｅＳｙｓ  Ｒｕｎｔｉｍｅ実行システムである。
【００２５】
単一のプログラム内に収容された、ネットワーク交換、Ｉ／Ｏデバイスへのアクセス、及び他の機能を実現するような機能的に完全なコードセグメント及びデータセグメントを、以下、Ａ機能、Ｂ機能及びＣ機能と呼び、例えば「Ａ機能」は、「Ａ関数」の実現を担うコードとデータの機能的に完全なセグメントを意味する。機能コンポーネントは、プログラムコンポーネントと区別する必要がある。機能コンポーネントは機能構造の要素であり、プログラムコンポーネントはプログラム複合体の要素である。
【００２６】
実行システムの構成要素は、プログラム（例えば、アプリケーション、ライブラリ）、機能、機能ブロックに結合された、機能的に完全なコード及びデータセグメントのセットであり、実行システムはそこから階層的に構築されている。これらのコンポーネントは、インターフェイスを介して互いに相互作用する。本開示の文脈において、実行システムのモジュールは、他のＰＬＣ実行システムのコンポーネントとは別に（例えば、異なるアドレス空間内で）実行されるコンポーネントの特別な場合である。
【００２７】
実行システムが階層的に構築されるような相互に関連するコンポーネント（モジュール）全体が、機能構造（実行システムによって実行される機能）を実現する。相互に関係する構成要素の相互作用の順序及び形式は、機能論理により決定される。特定の場合では、実現された機能構造及び機能論理（機能構造の要素の相互作用方法）は、ビジネス論理実行環境のコード内で実現される。特定の場合の相互作用方法は、要素間の相互作用の順序及び形式を決定する。
【００２８】
実行システムのビジネス論理は、実行環境のクラス、方法、一連の手順及び関数のコードにおいて実現される、対象領域内のオブジェクトの動作の規則、原理、及び関係のセットである。実行環境のビジネス論理の要素は、命令、クラス、方法、一連の手順及び関数の機能的に完全なセットである。要素のセットは、実行システム又はその一部の機能構造を形成する。
【００２９】
ＰＬＣ実行システムのビジネス論理は、実行環境のクラス、方法、一連の手順及び関数のコードにおいて実現される、自動化される技術プロセスにおけるオブジェクトの動作の規則、原理、及び関係のセットである。例えば、ネットワーク交換のシーケンス、Ｉ／Ｏデバイスへのアクセス、ＰＬＣ  ＯＳとの相互作用等である。
【００３０】
例示的な一態様では、プログラミング並びにプログラムデバッグシステム（ＰＰＤＳ）をＰＬＣ実行システムに接続できる。ＰＰＤＳは、アプリケーションプログラムをＰＬＣのメモリにロードし、ＰＬＣ実行システムの制御下で転送することを可能にする。ＰＰＤＳの例を図１に示す。例示的な一態様では、ＰＰＤＳを使用してＰＬＣ実行システムを制御し、その構成を変更し、追加のモジュールをＰＬＣにインストールすることができる。例示的な一態様では、ＰＰＤＳは汎用コンピュータ（図６に示すもの等）のプロセッサ上に実装することができる。
【００３１】
発明の背景の章で述べたように、ＰＬＣ実行システムはモノリシックプログラムを構成するか、又は同じプロセスで実行されるコンポーネントで構成されているため、セキュリティに問題がある。本発明は、実行システムを複数のモジュールに分割し、ＰＬＣ実行システムの機能構造のあらゆる所定要素、又は実行システムの所与のコードセグメントに対し、両者間の相互作用及び各々のオペレーティングシステムのリソースとの相互作用を監視することを可能にする。本発明は、他の実行システムと共に使用され、モノリシックプログラム又はマルチコンポーネントプログラムが同じプロセスで実行される場合、以下のことが可能である：それらのオブジェクトが機能している（実行されている）コンピュータシステムのセキュリティを高めること；これらのオブジェクトの要素の相互作用の監視を提供すること。
【００３２】
本発明は、実行プログラム又はシステム全体のみならず、実行を監視する必要があるプログラム及びプログラム複合体のモノリシックな部品及びコンポーネントに適用することができ、加えて、それらの部品又はコンポーネントが実行中であるようなコンピュータシステムのセキュリティを高める。従って、明示的に記載されていない限り、或いは、部品と個々のコンポーネント（モジュール）、モノリシックプログラムとその部分、及びプログラムの同一のアドレス空間及び個々のコンポーネント（モジュール）で実行されるようなマルチコンポーネントプログラムに対するＰＬＣの特性から現れる、ＰＬＣ実行システムの性質によって指示されない限り、ＰＬＣ実行システムについて言及されていることは等しく真実であることに留意されたい。
【００３３】
図２は、ＰＬＣ実行システムを監視するための例示的なシステム及び方法を示す。 ステップ２００において、ＰＬＣ実行システムはセキュリティモジュールによってアクセスされ、例示的な一態様では、それはＰＬＣにインストールされたセキュリティアプリケーションとして実装され得る。一般に、セキュリティモジュールは、ＰＬＣ実行システムの実行の監視を提供する。セキュリティモジュールの動作のより詳細な説明を以下に記述する。ＰＬＣ実行システムは、ＰＬＣから抽出されるか、又はＰＬＣにインストールされる前に取得される。或いはその代わりに、この方法はＰＬＣ上で直接実行されてもよい。
【００３４】
次に、ステップ２１０において、ＰＬＣ実行システムのコード及びデータは、セキュリティモジュールによって、例えば、ＰＬＣ実行システムの機能構造に基づく個々のプログラムモジュールに分割される。この分割プロセスの間に、ＰＬＣ実行システムの機能的に完全なコード及びデータセグメントが１つ以上のプログラムモジュールに分離され、ＰＬＣ実行システムの残りのコード及びデータは別のモジュールに分離される。図３ａはそのような分割の例を示しており、「Ａ関数」の実行を意図したコード及びデータセグメントは「モジュール１」に分離され、「Ｂ関数」の実行を意図したコード及びデータセグメントは「モジュール２」に分離され、残りの「他の機能」の実行を意図したコード及びデータセグメントは「モジュール３」に分離される。
【００３５】
別の例示的な態様では、ＰＬＣシステムのコード及びデータは、ＰＬＣ実行システムに対するセキュリティ脅威に基づいて分割されてもよい。このような分割プロセスでは、脅威の実行に利用され得る脆弱性を含む実行システムの１つのコード及びデータセグメント（又はネットワーク相互作用を担うセグメント等の、攻撃の最初のターゲットであるような脆弱なコードセグメント）は１つ以上のモジュールに分離され、残りのコードと実行システムのデータは別のモジュールに分離される。図３ｂはそのような分割を示しており、例えば、Ａ、Ｂ、Ｃ機能の実行を意図したコードセグメント及びデータセグメントは脆弱性を含んでおり、「Ａ関数」の実行を意図したコード及びデータセグメントは「モジュール１」に分離され、「Ｂ関数」と「Ｃ関数」の実行を意図したコードセグメントとデータセグメントは「モジュール２」に分離され、残りの「その他の機能」の実行を意図し、且つ脆弱性を含まないコード及びデータセグメントは「モジュール３」に分離されている。
【００３６】
更に別の例示的な態様では、分割プロセスは、実行システムのコード及びデータセグメントの重要性に基づくこともでき、その場合、重要なオブジェクト（重要なコード及びデータセグメント）を制御するＰＬＣ実行システムのコード及びデータセグメントが１つ以上のモジュールに分離され、ＰＬＣ実行システムの残りのコード及びデータが別のモジュールに分離される。一般に、重要なオブジェクトは、実行中の中断により、実行中のシステム又は他のシステム又はオブジェクトに対し、システムクラッシュ等の重大な損害を引き起こす可能性のあるオブジェクトである。図３ｃはそのような分割の例を示しており、ここでは「Ａ関数」の実行を意図したコード及びデータセグメントが重要なコードであり且つ重要なデータを含んでおり、そのセグメントはモジュール１に分離されている。一方、残りの「Ｂ関数」、「Ｃ関数」及び「その他の関数」の実行を意図したコード及びデータセグメントは「モジュール２」に分離されている。
【００３７】
様々な態様では、これらの分割基準は、別々に又は共同して使用することができ、図３ｂに示す例では、脆弱性の存在のみならずＰＬＣ実行システムの機能構造に基づく分割も使用される一方、図３ｃに示す例では、コード／データの重要性のみならずＰＬＣ実行システムの機能構造に基づく分割も使用される。
【００３８】
図３ｂ及び図３ｃは、脆弱性を含むか、又は重要なオブジェクトの制御に使用されるような、機能的に完全なコード及びデータセグメントがモジュールに分離される例を示す：一般に、重要性とセキュリティの脅威に基づく分割の場合、機能的に完全なセグメントをモジュールに分離する必要はない。一方、任意の特定の重要なセグメント、又は脆弱性を含むセグメントは分離され得る。理解を容易にするための例を示す。
【００３９】
コードセグメントをモジュールに分離する場合、モジュール間の相互作用の方法（データ交換の順序及び形式）は、分割前のＰＬＣ実行システムにおけるこれらのセグメントの相互作用の方法と同等に構成されている。換言すれば、特定のセグメントが所与のセグメントとどのように、又はどのような順序で相互作用しても、それらのコードセグメントを含むモジュールは、ＰＬＣ実行システムの分割後にそのセグメントと同様に相互作用する。
【００４０】
ステップ２２０において、以前に作成されたプログラムモジュールらは、互いに、オペレーティングシステムから、及び、例えばコンテナ又は仮想マシンを用いた仮想化技術を使用するセキュリティモジュールにより装置から、隔離されてもよい。 コンテナを使用する場合（図４を参照）、モジュールはコンテナ内に配置され、モジュールが互いに及びオペレーティングシステムと相互作用するような制御サービスがオペレーティングシステム上にインストールされる；そのようなサービスの例は、Ｄｏｃｋｅｒサービス（Ｄｏｃｋｅｒエンジン）である。バーチャルマシンを使用する場合、モジュールは、モニタの種類が様々であるようなバーチャルマシンに配置され、それらは次のようなものである：ＶＭｗａｒｅ  ＥＳＸ等のタイプＩのハイパーバイザ（図４ｂを参照）；Ｍｉｃｒｏｓｏｆｔ  Ｖｉｒｔｕａｌ  ＰＣ、ＶＭ  Ｗｏｒｋｓｔａｔｉｏｎ、ＱＥＭＵ、Ｐａｒａｌｌｅｌｓ、ＶｉｒｔｕａｌＢｏｘ等のＩＩ型のハイパーバイザ（図４ｃ参照）；Ｘｅｎ、Ｃｉｔｒｉｘ  ＸｅｎＳｅｒｖｅｒ、Ｍｉｃｒｏｓｏｆｔ  Ｈｙｐｅｒ−Ｖ等のハイブリッドハイパーバイザ（図４ｄ参照）。
【００４１】
更に、特定の瞬間において、隔離に際して以下のものを使用できることにも言及する必要がある：ＰｉｋｅＯＳ（又は他のタイプのセキュアＯＳ）の分割；Ｌｉｎｕｘによるコンテナ化（Ｌｉｎｕｘ  Ｃｏｎｔａｉｎｅｒｓ、ＬＸＣ）。例示的な一態様では、全てのモジュールが分離されるわけではなく、オペレーティングシステム及び他のモジュールとのそれらの相互作用は変更されないままである。これは、図中のモジュールＮの例に示されており、この場合は分離は任意である。
【００４２】
セキュリティモジュールはＰＬＣ上にインストールされ得ることに留意されたい。 例示的な一態様では、セキュリティモジュールは、セキュリティ機能の実現を担う機能的に完全なコード及びデータセグメントのセットを含むことができる（これらの機能がどのように実現されるかについては後述する）。セキュリティモジュールが機能するＰＬＣアーキテクチャのレベルは、ＰＬＣ実行システムのモジュールの分離に使用される技術によって決まる。例えば、コンテナが分離に使用され（図４ａ）、ＰＬＣ  ＯＳにコントロールサービス（Ｄｏｃｋｅｒ等）がインストールされている場合、セキュリティモジュールはコンテナと同じレベルに配置される（図５ａ参照）。仮想マシンが分離に使用されている場合（図４ｂ、図４ｃ、図４ｄ参照）、セキュリティモジュールは仮想マシン（ハイパーバイザ）のモニタのレベルにインストールされるか、又はそこに埋め込まれる（図５ｂ、図５ｃ参照）。同ステップでは、特定の分離条件の下で、他のモジュールとの相互作用及びオペレーティングシステムのリソースとの相互作用に使用された、分離済モジュールのデータ交換のインターフェイスが、この相互作用がセキュリティモジュールのみを介した分離条件の下で行われるように修正される一方、交換されたデータの形式はセキュリティモジュールにより指示された形式に準拠する。
【００４３】
その結果、セキュリティモジュールは、セキュリティ機能、即ち、実行システムの実行の監視を提供することができる。これは、次のようなものである：分離されたモジュール間の相互作用と、ＰＬＣオペレーティングシステム又は装置のリソースとの相互作用の監視；この相互作用の補正と、相互作用の停止。セキュリティモジュールは、その形式がモジュール同士及びモジュールとオペレーティングシステムとの間で交換されるデータの形式と一致するような規則に基づき、監視を提供する。相互作用は、セキュリティモジュールによって、セキュリティモジュールに記憶された論理規則に準拠することが検証され、規則には、許容される相互作用の記述が含まれる。
【００４４】
セキュリティモジュールは相互作用の監視を提供し、相互作用が規則に則しているかどうかが検証される。相互作用が規則に準拠する場合、相互作用は許可され、データは受信者にディスパッチされる。一方、相互作用が規則に準拠しない場合、相互作用の修正が実行され（セキュリティモジュールを介して受信者とソースによって交換されるデータに変更が加えられる）、相互作用は許可されない（相互作用は停止される）。相互作用とその相互作用を記述する規則との間に違反があった場合にセキュリティモジュールが行うべきことは、もしそのモジュール自身が発生した相互作用に対する規則を有していなければ（使い捨て規制）、規則自体又は補助規則により決定される。例えば、「モジュール１」の「モジュール２」との許容される相互作用（図５ｂ参照）は、「モジュール１」がソースで「モジュール２」が受信者である場合、主要な「規則Ａ」及びオプションの 「規則Ｂ」により記述される；セキュリティモジュールには補助的な「規則Ｘ」も含まれており、他の規則には発生した相互作用に対する如何なる指示も含まれていないような事象に対し使用されるべきである。前記相互作用の監視中、セキュリティモジュールは、「モジュール１」と「モジュール２」との相互作用が「規則Ａ」に従わないことを発見した。そのような場合、「規則Ａ」は、相互作用が「規則Ｂ」に準拠するかを検証することを規定している。従ってセキュリティモジュールは相互作用が「規則Ｂ」に準拠するかどうかを検証し、相互作用は「規則Ｂ」にも準拠していないことを検出するが、この例では「規則Ｂ」は何も規定しないので、セキュリティモジュールは、例えば、相互作用の停止を要求する特定の「規則Ｘ」を適用する。
【００４５】
モジュール間の相互作用の検証のためのより詳細な規則の例が以下に提供される：例えば、ＰＬＣは、通信モジュールとコアモジュールとを備える。通信モジュールは、ヒューマンマシンインタフェース（ＨＭＩ）との相互作用を担うことができる。コアモジュールは、ＰＬＣプログラムの実行及び実際の機器へのコマンド送信を担うことができる。通信モジュールとコアモジュールとの間には、「ＰＬＣプログラム更新」、「監査ログの読み取り」、「ファイルのダウンロード」、「ＰＬＣプログラムの停止」等のコマンドセットをサポートするインターフェイスがある。セキュリティモジュールは、通信モジュールからからコアモジュールへと送られる全てのコマンドを制御することができる。例えば、セキュリティモジュールは、以下の規則を実装することができる：（ａ）「動作モード」のセット（例えば、「通常動作」、「メンテナンス」、「監査」）がある。（ｂ）全てのモードは許可されたコマンドのリストに関連付けられる。例えば、「通常動作」は 「ＰＬＣステータス読み出し」コマンドを有するが、 「ＰＬＣプログラム更新」コマンドはない。（ｃ）ある瞬間には１つのモードのみがアクティブである。（ｄ）従って、あるコマンドは、現在のモードにこのコマンドがある場合にのみ規則により許可される。
【００４６】
本発明は、ＰＬＣ実行システムの実行における異常を検出するためにも使用することができる。異常が検出された場合、モジュールを分離する必要はなく、特定の場合には上記の方法で分離を使用することができる。モジュールの分割が実行された後、セキュリティモジュールがＰＬＣにインストールされ、モジュールのデータ交換インターフェイスが、指定された相互作用がインストールされたセキュリティモジュールを介してのみ実行され、交換されるデータの形式がセキュリティモジュールによって定義される形式に対応するような、モジュール同士及びモジュールとオペレーティングシステムのリソースとのインターフェイスへと修正される。従って、全体又は一部が交換されるメッセージの構造はセキュリティモジュールに知られており、この構造（データ形式、或いはインターフェイスとも呼ばれる）は、例えば、インターフェイス定義言語（ＩＤＬ）を使用して記述され、セキュリティモジュールは、その結果、送信されたメッセージがこの記述に対応することを検証でき、アクセシビリティ制御の目的でこのメッセージの個々のフィールドを使用することもできる。
【００４７】
次に、ＰＬＣ実行システムのモジュールに対し、モジュール同士の相互作用及びモジュールとオペレーティングシステムのリソースとの相互作用が、１つ以上の相互作用がこの相互作用のために確立された規則に準拠するかどうかをセキュリティモジュールがチェックすることにより監視される。モジュールとシステムとの間で交換されるメッセージはセキュリティモジュールによりチェックされる。というのも、上述したように、交換されたメッセージの構造、特にその相互作用が何に基づいて構築されたかがセキュリティモジュールに知られているためである。
【００４８】
監視プロセスでは、通常又は許可された相互作用バリエーションを指定する規則に違反するかを確認することでセキュリティモジュールにより検出された相互作用の不一致に基づいて、ＰＬＣ実行システムの実行により異常が検出される。他の場合には、ＰＬＣ実行システムの実行において、セキュリティモジュールによって検出された相互作用と、相互作用の異常又は禁止された相互作用バリエーションを指定する規則との対応に基づき、異常が検出される。
【００４９】
具体的には、図６は、例示的な態様に従って、開示されたシステム及び方法が実装され得る汎用コンピュータシステム（パーソナルコンピュータ又はサーバであり得る）の例を示す。図示のように、コンピュータシステム２０は、中央処理装置２１、システムメモリ２２、及び中央処理装置２１に関連するメモリを含む様々なシステム構成要素を接続するシステムバス２３を含む。システムバス２３は、他のバスアーキテクチャと相互作用することができるバスメモリ又はバスメモリコントローラ、周辺バス及びローカルバスを含む、従来技術から公知の任意のバス構造のように実現される。システムメモリは、読み出し専用メモリ（ＲＯＭ）２４及びランダムアクセスメモリ（ＲＡＭ）２５を含む。基本入出力システム（ＢＩＯＳ）２６は、パーソナルコンピュータ２０の要素間の情報の転送を保証する基本的な手順、例えばＲＯＭ２４の使用によりオペレーティングシステムをロードするときのものなどを含む。
【００５０】
パーソナルコンピュータ２０は、データを読み書きするためのハードディスク２７と、リムーバブル磁気ディスク２９に読み書きするための磁気ディスクドライブ２８と、リムーバブル光ディスク３１に読み書きするための光学ドライブ３０とを含む。 ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、及び他の光情報媒体として使用することができる。ハードディスク２７、磁気ディスクドライブ２８、及び光ドライブ３０は、それぞれハードディスクインターフェース３２、磁気ディスクインターフェース３３及び光ドライブインターフェース３４を介してシステムバス２３に接続されている。 ドライブ及び対応するコンピュータ情報媒体は、パーソナルコンピュータ２０のコンピュータ命令、データ構造、プログラムモジュール及び他のデータを格納するための電力に依存しないモジュールである。
【００５１】
本開示は、ハードディスク２７、リムーバブル磁気ディスク２９及びリムーバブル光ディスク３１を使用するシステムの実装を提供するが、他のタイプのコンピュータ情報媒体５６を使用することも可能であることを理解されたい。 コントローラ５５を介してシステムバス２３に接続されたコンピュータ（ソリッドステートドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ（ＲＡＭ）など）によって読み取り可能な形式でデータを格納する。
【００５２】
コンピュータ２０は、記録されたオペレーティングシステム３５が保持されるファイルシステム３６と、追加のプログラムアプリケーション３７と、他のプログラムモジュール３８と、プログラムデータ３９とを有する。ユーザは、入力装置（キーボード４０、マウス４２）を使用して、パーソナルコンピュータ２０にコマンド及び情報を入力することができる。マイクロホン、ジョイスティック、ゲームコントローラ、スキャナなどの他の入力装置（図示せず）を使用することができる。このような入力装置は、通常、シリアルポート４６を介してコンピュータシステム２０に接続され、シリアルポート４６は、システムバスに接続されるが、例えば、パラレルポート、ゲームポート又は ユニバーサルシリアルバス（ＵＳＢ）。モニタ４７又は他のタイプの表示装置もまた、ビデオアダプタ４８などのインターフェイスを介してシステムバス２３に接続される。モニタ４７に加えて、パーソナルコンピュータは、スピーカ、プリンタなどの他の周辺出力装置（図示せず）を備えることができる。
【００５３】
パーソナルコンピュータ２０は、１つ又は複数のリモートコンピュータ４９へのネットワーク接続を使用して、ネットワーク環境内で動作することができる。リモートコンピュータ（又は複数のコンピュータ）４９はまた、パーソナルコンピュータ２０の性質を説明する上で、前述の要素の大部分又はすべてを有するパーソナルコンピュータ又はサーバである。ルータ、ネットワークステーション、ピアデバイス又は他のネットワークノードなど、他のデバイスもコンピュータネットワークに存在することができる。
【００５４】
ネットワーク接続は、有線及び／又は無線ネットワーク、広域コンピュータネットワーク（ＷＡＮ）などのローカルエリアコンピュータネットワーク（ＬＡＮ）５０を形成することができる。このようなネットワークは、企業のコンピュータネットワーク及び社内ネットワークで使用され、一般にインターネットにアクセスします。ＬＡＮ又はＷＡＮネットワークでは、パーソナルコンピュータ２０は、ネットワークアダプタ又はネットワークインタフェース５１を介してローカルエリアネットワーク５０に接続される。ネットワークが使用される場合、パーソナルコンピュータ２０は、インターネットなどの広域コンピュータネットワークとの通信を提供するために、モデム５４又は他のモジュールを使用することができる。モデム５４は、内部又は外部の装置であり、シリアルポート４６によってシステムバス２３に接続されている。ネットワーク接続は単なる例であり、ネットワークの正確な構成を示す必要はない、すなわち、実際には、ブルートゥースのような技術通信モジュールによって１つのコンピュータと他のコンピュータとの接続を確立する他の方法がある。
【００５５】
様々な態様において、本明細書に記載のシステム及び方法は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実施されてもよい。 ソフトウェアで実施される場合、方法は、非一時的なコンピュータ可読媒体上に１つ以上の命令又はコードとして格納されてもよい。 コンピュータ可読媒体は、データ記憶装置を含む。 限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、フラッシュメモリ、又は他のタイプの電気、磁気、又は光学記憶媒体、又は 所望のプログラムコードを命令又はデータ構造の形で運び、格納又は格納することができ、汎用コンピュータのプロセッサによってアクセスすることができる。 
【００５６】
様々な実施形態で、本発明のシステム及び方法が、モジュールとして実装され得る。ここで用語「モジュール」は、実世界の機器、コンポーネント、又はハードウェアを用いて実装されたコンポーネント配置であり、例えばＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の、又は例えばモジュールの機能を実行するマイクロプロセッサシステムや指示セットによる等、ハードウェアとソフトウェアの組み合わせとして実装され得る。これらは、実行中にマイクロプロセッサシステムを特定の機器に変換する。モジュールは、ハードウェア単体により促進される一定の機能とハードウェア及びソフトウェアの組み合わせによって促進される他の機能という２つの組み合わせとして実施されてもよい。モジュールの少なくとも一部又は全部は、汎用コンピュータのプロセッサにおいて実行できる（図３において詳述したもの等）。したがって、各モジュールは様々な適当な構成で実現することができて、ここに例示した特定の実装に限られるものではない。
【００５７】
なお、実施形態の通常の機能のうちの全てをここで開示しているわけではない。本発明の何れの実施形態を開発する場合においてでも、開発者の具体的な目標を達成するためには多くの実施に係る特別な決定が必要であり、これらの具体的な目標は実施形態及び開発者ごとに異なることに留意されたし。そのような開発努力は、複雑で時間を要するものであるが、本発明の利益を享受し得る当業者にとってはエンジニアリングの日常であると理解されたい。
【００５８】
更に、本明細書で使用される用語又は表現は、あくまでも説明のためであり、限定するものではない。つまり、関連技術の熟練の知識と組み合わせて、本明細書の用語又は表現は、ここに示される教示及び指針に照らして当業者によって解釈されるべきであると留意されたし。明示的な記載がない限り、明細書又は特許請求の範囲内における任意の用語に対して、珍しい又は特別な意味を帰することは意図されていない。本明細書で開示された様々な側面は、例示のために本明細書に言及した既知のモジュールの、現在及び将来の既知の均等物を包含する。更に、側面及び用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。
【図１】
2018139098.tif 000003
【図２】
2018139098.tif 000004
【図３】
2018139098.tif 000005
【図４】
2018139098.tif 000006
【図５】
2018139098.tif 000007
【図６】
2018139098.tif 000008
【外国語明細書】
2018139098000001.pdf