(57)【特許請求の範囲】
【請求項１】
制御および調節ユニット（８）のシステム状態の不正操作を識別する装置（７０）であって、
・前記制御および調節ユニット（８）の動作状態，ハードウェア拡張状態，プログラム状態の内の少なくとも１つの状態を監視し該状態の変化に応じて通報を発生する監視モジュール（８２）が設けられ、
・前記監視モジュール（８２）の動作を監視する制御モジュール（１１６）が設けられ、
前記制御および調節ユニット（８）が、プログラマブルロジックコントローラ（１０）を有し、前記監視モジュール（８２）および前記制御モジュール（１１６）がプログラマブルロジックコントローラ（１０）のソフトウェア構成要素であり、前記両モジュールが相互に、それぞれ相手方のモジュールが予め与えられた時間間隔内でプログラム命令を予定どおりに処理したかどうかをチェックすることを特徴とする装置。
【請求項２】
前記制御および調節ユニット（８）が、データを保存する少なくとも１つの書込み可能なメモリ（２６）を有し、前記監視モジュール（８２）が前記メモリ（２６）に保存されたデータの変化に応じて通報を発生する、請求項１記載の装置。
【請求項３】
前記データがプログラムコード又はそれから生成されるプログラム変数を含む、請求項２記載の装置。
【請求項４】
前記データがシステムデータを含む、請求項２又は３記載の装置。
【請求項５】
前記監視モジュール（８２）が前記制御および調節ユニット（８）のＣＰＵの動作モードスイッチの位置を監視する、請求項１乃至４のいずれか１つに記載の装置。
【請求項６】
前記監視モジュール（８２）が前記制御および調節ユニット（８）の安全性レベルの変化を監視する、請求項１乃至５のいずれか１つに記載の装置。
【請求項７】
前記通報が、前記制御および調節ユニットのＣＰＵのメモリに書き込まれる、請求項１乃至６のいずれか１つに記載の装置。
【請求項８】
前記通報が、前記装置（７０）の前記監視モジュール（８２）の出力（１００，１０２，１０４，１０８）に供給される、請求項１乃至７のいずれか１つに記載の装置。
【請求項９】
前記制御および調節ユニット（８）の安全性レベルを、キースイッチ（８０）の操作時に切り換える安全性モジュール（７６）が設けられている、請求項１乃至８のいずれか１つに記載の装置。
【請求項１０】
請求項１乃至９のいずれか１つに記載の装置（７０）を有する核技術設備。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、核技術設備における制御および調節ユニット、特にプログラマブルロジックコントローラのシステム状態の不正操作を識別する装置および方法に関する。さらに本発明は、核技術設備用のプログラマブルロジックコントローラ、ディジタル監視装置ならびに相応の核技術設備に関する。
【背景技術】
【０００２】
例えば発電設備のような核技術設備（原子力発電所）においては、通常の制御および調節を含む多数の協動するプロセスが並列的に進行する。各プロセスについて、その適用のために最適に構成された制御および調節ユニットが使用される。
【０００３】
核技術設備、特に発電設備の増大するデータ技術ネットワーク化と、インターネットに至る外部ネットへの接続とによって、これらの設備は、ウィルスやその他の悪意のある不正ソフトウェア（マルウェア）の攻撃を受けやすくなる。この種の設備がソフトウェアウィルスにより攻撃された既知の事例がスタックスネット（ＳＴＵＸＮＥＴ）である。このような攻撃は、全体故障に至る生産損失をもたらし、高い人的および経済的な損害を招き得る。さらに、この種の送り込まれたマルウェアは産業スパイ行為のために使用される。さらに、ウィルスによる最初の攻撃時にウィルス伝播の危険が存在するので、このウィルスが同じ核技術設備の他の制御装置を攻撃し、あるいはそれと共にネットワーク化された設備も攻撃することがある。これらの危険に基づいて、原理的に実行時にメモリ構成がマルウェアによって変更され得る制御システムの使用は、ネットワーク化された環境において、高い安全性リスクとなる。この種の制御システムは、プログラマブルロジックコントローラ（ＰＬＣ）である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従って、本発明の課題は、不正操作を信頼性のある方法で検出することを可能にする、不正操作を識別する装置を提供することにある。さらに、本発明は、核技術設備用のプログラマブルロジックコントローラおよび監視装置、核技術設備ならびに相応の方法を提供しようとするものである。
【課題を解決するための手段】
【０００５】
不正操作を識別する装置に関して、この課題は、本発明によれば、制御および調節ユニットの動作状態および／又はハードウェア拡張状態および／又はプログラム状態を監視し、該状態の変化時に通報を発生する監視モジュールを設けることによって解決される。
【０００６】
本発明の有利な実施形態は従属請求項に記載されている。
【０００７】
本発明は、次の場合にウィルス又は類似のマルウェアによる攻撃が成功するという考えから出発している。即ち、望んでもいないのに制御および／又は調節システムのシステム機能が変化、拡張又は破壊されるほど、ウィルス又は類似のマルウェアが、制御および／又は調節システムのシステム状態に影響を及ぼす場合である。これは、悪意のある不正プログラムおよび／又は不正データが動作中に書込み可能なメモリ内に取り込まれて実行されることによって起こる。この理由から、安全性が重視される設備において、この種の制御および／又は調節システムを使用することが先ず問題である。核技術設備の場合には、制御システムの変更がスパイ行為、構成要素の故障、誤動作および重大事故を招き得ることから、最高の安全性基準を満たすことが要求される。
【０００８】
この種の攻撃の場合に、例えば制御および調節ユニットに付加的なプログラムコードを送り込み、もしくは既存のプログラムコードをウィルス感染コードに置き換えることを試したであろう。さらに、センサからのデータをもはや受信することができないように、および／又はアクチュエータをもはや応答させもしくは制御することができないように、構成を変更することを試したであろう。
【０００９】
今や認識されているように、この種の設備において使用される制御および調節ユニットのシステム内部の処理手続を監視し、即ち、換言するならば、制御および調節ユニットの動作状態および／又はハードウェア拡張状態および／又はプログラム状態を監視し、そして変化を通報することによって、要求される高い安全性基準が実現される。
【００１０】
通報の発生によって、変化がどの種類であるか、変化が場合によっては不正に行われたかどうかをチェックすることができる。しかもこの変化に直接的に反応することが可能にされる。この出願において、制御および調節ユニットとは、開ループ制御処理のみ、又は閉ループ制御処理のみ、又はその両方の種類の処理を実行することのできるあらゆるユニットのことである。
【００１１】
制御および調節ユニットが、データを保存する少なくとも１つの書込み可能なメモリを有し、そのメモリ内に保存されたデータが変化した際に監視モジュールが通報を発生するとよい。プログラマブルロジックコントローラの如き書込み可能なメモリを有する制御および調節ユニットの動作状態および／又はハードウェア拡張状態および／又はプログラム状態は、ほとんどそれのメモリ内容によって決定される。そのメモリ内容は、一般にプログラムコード、ハードウェア構成およびソフトウェア構成、動的に設定されるデータフィールド、変数等を含む。マルウェアによる外部からの敵意のあるアクセスによって、メモリの変化においてはっきりした影響が現れるので、メモリ内容の変化は不正操作を示唆することができる。
【００１２】
前記データがプログラムコード又はそれから生成されるプログラム変数を含むと有利である。プログラムコード、特にロード可能な使用者プログラムは、ランタイム動作中に実行され、実行される命令を含んでいる。プログラムコードの変化は操作を意味する。しかし、この種の操作を識別するために、必ずしもコードの変化を直接的に監視する必要はない。それから導き出されるか、又はプログラムコード（使用者コード、ファームウェア、動作システム等）の助けにより生成される、いわば二次的なプログラム変数の変化を監視するならば、コード変化時にこれらのプログラム変数の変化も十分に大きい確率で発生するかぎり、その監視は、より効果的であり、かつより経済的である。例えば、そのコードもしくはコード部分又はコード構成要素から生成されたチェックサム又は長さが、そのような二次的なプログラム変数に当たる。ＣＰＵが、内部の機能として、ソフトウェアコンポーネントもしくはモジュールのチェックサムに関する排他的論理和を有すると有利である。その結果（例えば、３２ビット値）が監視モジュールによって読み出され、その変化が監視される。「ＳＩＭＡＴＩＣ  Ｓ７−３００」および「ＳＩＭＡＴＩＣ  Ｓ７−４００」（シーメンス社の商品名）のようなプログラマブルロジックコントローラは、自ら自動的にチェックサム、特に数字和を発生する。これらのチェックサムを監視モジュールから読み出し、読み出したチェックサムの変化を監視するだけでよい。従って、旧値／新値比較によってあらゆるプログラム変化を認識することができる。
【００１３】
前記データがシステムデータ、特にハードウェア構成、および／又はそれから生成されるシステム変数を含むと有利である。ハードウェア構成は、モジュールシステム内に使用部品に対するデータを含む。ハードウェア構成の計画は、例えばＳＩＭＡＴＩＣの場合、プログラミングソフトウェアＳＴＥＰ７／ＰＣＳ７に含まれるＨＷＫｏｎｆｉｇを介して行われる。モジュール構造のＳ７−３００又はＳ７−４００に差し込まれなければならない各部品は、実行可能であるためには、ＨＷＫｏｎｆｉｇでパラメータ設定され、しかる後にＣＰＵ上の所望の送り先にロードされなければならない。ＨＷＫｏｎｆｉｇでは各部品の部品アドレス、診断設定、測定範囲設定等のような全ての設定がパラメータ化される。それによって、例えばブリッジスイッチ等を介する設定が省略できる。部品交換の場合に更なる設定はもはや必要でない。
【００１４】
上述の計画は、いわゆるシステムデータの中にファイルされる。これらのシステムデータの変化のチェックが起こり得る攻撃の検出を可能にする。上述のように、制御および調節ユニットのチェックサムに関する排他的論理和も提供され、監視モジュールによって読み出され、旧値／新値比較によって変化が監視される。
【００１５】
好ましい実施形態では、監視モジュールが制御および調節ユニットのＣＰＵの動作モードスイッチの位置を監視する。この種の動作モードスイッチは複数の位置を有する。これらは、例えば次のとおりである。
ＭＲＥＳ（可変メモリのリセット）
ＳＴＯＰ（プログラム実行なし、通信のみ可能）
ＲＵＮ（プログラム変更可能性を阻止してプログラム実行）
ＲＵＮ−Ｐ（プログラム変更可能性有りでプログラム実行）
【００１６】
キースイッチなしの多くの実際のＣＰＵの場合、わずかに「ＳＴＡＲＴ」および「ＳＴＯＰ」なるスイッチ位置だけが存在し、「ＳＴＯＰ」の位置ではプログラム実行ができないので、この場合にはＣＰＵにおけるプログラム技術的評価が変更をもたらされない。
【００１７】
さらに、監視モジュールが制御および調節ユニットの安全性レベルの変化を監視する。安全性レベルは、例えば、それぞれパスワード保護と組み合わされて「読出しのみ」又は「読出しおよび書込み」の位置を有し得る。
【００１８】
監視中に動作状態、ハードウェア拡張状態又はプログラムの変化が確認された際には、通報が発生され、これは種々の方法で行うことができる。その通報は評価のために遅れた時点で使用可能であるため、その通報はメモリ、特に制御および調節ユニットのＣＰＵの診断バッファおよび／又は監視モジュールの監視バッファに書き込まれると有利である。診断バッファは、例えば、ＣＰＵ内に組み込まれてリングバッファとして診断記録を収容できるメモリ領域として実施されているとよい。これらの記録はデータ／タイムスタンプ付きであるとよい。監視モジュールが、好ましくはデータおよび時刻のためのスタンプを有する通報を書き込み得る監視メモリを有するとよい。この監視メモリは、例えばリングバッファとして実施されているとよい。通報の記録は、存在するかぎり、両メモリのうち一方のみに、又は冗長性を作り出すために両メモリに書き込まれるとよい。
【００１９】
それの代わりに又は好ましくはそれに加えて、通報が、不正操作を識別する装置の特に監視モジュールの出力、特に２進出力に供給される。それによって、プロジェクトエンジニアはその通報を設備特有の通報出力のために使用することができる。この場合に、複数の出力が設けられ、これらの出力が、検出される変化の個々の種類（プログラムメモリ、システムデータメモリ、安全性レベル等）に割り当てられていると有利である。
【００２０】
制御および調節ユニットの安全性レベルを必要に応じて、特にキースイッチの操作時に切り換える安全性モジュールが設けられていると好ましい。安全性レベルは、特に、「読出しおよび書込み」、「読出しのみ」、「書込み保護および読出し保護」なる位置を有し、これらの位置は選択的にパスワード認証と結合されているとよい。この切換を行うことを可能にするキースイッチは、例えば制御キャビネット内に組み込まれている。従って、権限を付与された者によってのみプログラム変更が行われることを保証することができる。キースイッチの切り換えもしくは操作なしにはプログラム変更は殆どロックされ、従って排除されている。キースイッチは、１つの任意のディジタル入力に接続される。制御プログラムにおいて、この信号が１つのモジュール（ＳｅｃＬｅｖ ２）に接続され、このモジュールがシステム機能を介して安全性レベル（Ｓｅｃｕｒｉｔｙ Ｌｅｖｅｌ）を設定する。
【００２１】
不正操作を識別する装置の好ましい実施形態においては、監視モジュールの動作を監視する制御モジュールが設けられていて、監視モジュールも制御モジュールの動作を監視する。この実施形態の基礎をなす考えは次のとおりである。攻撃者が制御および調節ユニットにおいて悟られずにプログラム変更を行い得るためには、攻撃者が先ず、安全性レベルを「読出しおよび書込み」にセットすることにより書込みアクセス権限を得なければならない。それに加えて、攻撃者は監視モジュールの活性を阻止しなければならない。即ち、攻撃者は、ソフトウェアモジュールもしくはソフトウェアコンポーネントによって監視モジュールを実現する際に、そのモジュールもしくはコンポーネントの実行もしくはそれのプログラム命令の実行をＣＰＵの側で阻止しなければならない。後者を識別するために、もしくは阻むために、制御モジュールが設けられている。
【００２２】
監視モジュールと制御モジュールとは相互に相手方の動作を監視する。従って、この場合、制御および調節ユニットの簡単な冗長的な監視が存在するというわけではない。監視モジュールと制御モジュールとがソフトウェアコンポーネントとして実現された好ましいケースでは、むしろ両モジュールが相互に相手方の処理を監視する。これは、予め与えられた時間間隔、例えば１秒の期間中に、それぞれ監視されるモジュールの正しい処理が行われているどうかがチェックされることによって行われると有利である。これがそうでない場合には誤った処理が通報され、このことは、安全性侵害のテスト又は既に行われた安全性侵害を示唆する。
【００２３】
攻撃者による外部からのソフトウェアコンポーネントの消去は逐次的にしか起こり得ない。即ち、仮に攻撃者が両モジュールの存在およびそれらの機能の知識を得ることができた場合に、攻撃者はこれらのソフトウェアコンポーネントを逐次的に消去又は無効化しなければならない。しかし、両モジュールのうち一方の消去又は無効化の際に、これが、それぞれ他方のモジュールによって識別されて適切な通報が発生されるので、両モジュールの一方の異常が確実に識別される。
【００２４】
制御モジュールが監視モジュールの動作時に変則性を確認した場合に、監視モジュールの欠陥のある動作もしくは欠陥のある処理を、制御モジュールが２進出力にて表示すると有利である。監視モジュールは、上述の手段の少なくとも１つの方法で制御モジュールの動作の変則性を表示する。通報は、ＣＰＵ又は監視モジュールの１つのメモリ又はバッファに、好ましくはデータ／タイムスタンプと一緒に書き込まれるか、もしくは１つの（２進）出力において他の設備特有の通報出力のために使用することができる。好ましくは、全部で３つの方法がとられる。
【００２５】
プログラマブルロジックコントローラに関しては、前記課題が、本発明によれば、ソフトウェアモジュールによって構成された上述の装置により解決される。即ち、上述のモジュール（監視モジュール、制御モジュール、安全性モジュール）は、それぞれソフトウェアモジュールもしくはソフトウェアコンポーネントとして実現されており、制御および調節ユニットの動作状態においてそのユニット内にある。
【００２６】
核技術設備用のディジタル監視装置に関しては、前記課題は、本発明によれば、上述のプログラマブルロジックコントローラにより解決される。
【００２７】
核技術設備に関しては、前記課題は、本発明によれば、この種のディジタル監視装置により解決される。
【００２８】
方法に関しては、前記課題は、制御および調節ユニットの動作状態および／又はハードウェア拡張状態および／又はプログラム状態が監視され、かつ該状態の変化時に通報が出力されることによって解決される。方法の有利な実施形態は、装置との関連で説明した機能がもたらされる。
【００２９】
本発明の利点は、特に、制御および調節ユニットの動作状態、ハードウェア拡張状態およびプログラム状態の監視によって、発見されない操作がほとんど阻止されて確実に通報されるので、設備損傷を回避するための措置を直接的に意図的に導入することができる。プログラマブルロジックコントローラの使用が、安全性を最重視するべきネットワーク化された環境において、このようにしてはじめて可能にされる。監視モジュールおよび制御モジュールの相互監視のおかげで、監視の遮断によって操作が可能になることを確実に阻止することができる。
【００３０】
本発明の実施例を図面に基づいてさらに詳細に説明する。
【図面の簡単な説明】
【００３１】
【図１】図１は監視モジュールと安全性モジュールと制御モジュールとを組み込まれた装置を有する制御および調節ユニットを有するディジタル監視ユニットを有する核技術設備を有利な実施形態にて示す概略図である。
【図２】図２は図１による装置の安全性モジュールの機能を概略的に示すフローチャートである。
【図３】図３は図１による装置の監視モジュールの機能を概略的に示すフローチャートである。
【図４】図４は図１による装置の制御モジュールの機能を概略的に示すフローチャートである。
【発明を実施するための形態】
【００３２】
全ての図において同じ部分には同一符号が付されている。
【００３３】
図１に示された核技術設備２は、モジュール式のプログラマブルロジックコントローラ（ＰＬＣ）１０として実施された制御および調節ユニット８を有するディジタル監視装置４を含む。このＰＬＣ１０は、例えばシーメンス社製の「ＳＩＭＡＴＩＣ  Ｓ７−３００」又は「ＳＩＭＡＴＩＣ  Ｓ７−４００」である。これは、ＣＰＵ２０と、複数のメモリ領域を含むメモリ２６とを有する。プログラムメモリ領域３２には、ＰＬＣ１０の動作中に実行される１つ以上のプログラムが格納されている。これに加えて、コードのチェックサムおよびコードの長さが記憶されており、これらは、ＣＰＵ２０によって、それらのプログラムのＣＰＵへの伝送時に計算され、変化時に即座に更新される。同様にこれらのチェックサムに関する排他的論理和が計算され、システムデータメモリ３８に記憶され、変化時に更新される。プログラムコードによって導き出されたこれらの量が専用のメモリ領域に記憶されてもよい。
【００３４】
さらに、システムデータメモリ領域３８内に、ＣＰＵ２０によって、構成データ、特にハードウェアの構成データが保存される。モジュール構成されたＰＬＣ１０においてこの例におけるように１つのモジュールを動作可能にするためには、そのモジュールのハードウェア構成をパラメータ化して、ＣＰＵ２０へアップロードしなければならない。ハードウェア構成では、各モジュールのモジュールアドレス、診断設定、測定領域設定等々の全ての設定がパラメータ化されている。モジュール交換の場合には、更なる設定は必要でない。メモリ２６は、さらに別のメモリ領域４０を含む。
【００３５】
ＰＬＣ１０は、入力側を複数のセンサを含むセンサグループ４４に接続され、出力側を複数のアクチュエータを含むアクチュエータモジュール５０に接続されている。データ線５６は、外部から核技術設備内に引き込まれ、インターフェース６２を介してＰＬＣ１０をローカルエリアネットワーク（ＬＡＮ）に接続し、あるいはインターネットにも接続する。この接続が原因で、潜在的な攻撃者が、ＣＰＵ２０内に保存されたデータ情報を得る目的で（産業スパイ）、あるいはＰＬＣ１０の機能を変更、妨害又は破壊する目的で、ＣＰＵ２０内にウィルスを送り込もうとし、又はその他の種類のマルウェアを組み込もうとする可能性が存在する。この種の成功した攻撃は、ＰＬＣ１０が安全を最重視すべきプロセスの制御を行う場合に、大きな人的損害を招き、また、経済的損害も招き得る。
【００３６】
これらの損害を防いで、攻撃を、つまりＰＬＣ１０の動作状態、ハードウェア拡張状態およびプログラム状態の不正操作を、確実かつ迅速に識別することを可能にするために、本発明によれば、不正操作識別装置７０が設けられ、この装置７０は本例ではＰＬＣ１０に組み込まれている。その装置７０は、以下において説明する３つのモジュール７６，８２，１１６を含む。これらのモジュールは、ソフトウェアコンポーネントとして実現され、プログラムメモリ領域に格納されている。
【００３７】
安全性モジュール７６は、矢印７８によって示されているように、ＣＰＵ２０の安全性レベルへのアクセスを有する。安全性レベルを「読出しおよび書込み」、「読出しのみ」および「書込みおよび読出しの保護」との間で切り換えるように、又はその逆順に切り換えるように設計されている。この機能は、制御キャビネット（図示されていない）内に組み込まれたキースイッチ８０に結合されている。即ち、安全性モジュール７６は、キースイッチの第１の位置において安全性レベル「読出しおよび書込み」を作動させ、キースイッチの第２の位置において安全性レベル「読出しのみ」又はその代わりに「書込みおよび読出しの保護」を作動させる。連続動作中には、この第２の位置が正常位置であるので、権限のない者によってメモリ内のプログラム変更又はその他の変更を行うことはできない。キースイッチが第１の位置にあるときにのみ、変更が可能である。それゆえ、攻撃者はキースイッチにアクセスすること、つまりその設備に立ち入ることが必要であり、このことは普通の防護措置によってほとんど防止することができる。場合によっては、攻撃者も、キースイッチが第１の位置にあるときには、マルウェアの送り込みによって、ＣＰＵ内で安全性レベルを消去し、又はプログラム技術的にも直接に安全性レベルを変更することができるであろう。
【００３８】
どんな形のマルウェアの送り込みも確実に発見し、もしくはＰＬＣ１０の動作状態、ハードウェア拡張状態およびプログラム状態の権限なしの変更を確実に発見するために、監視モジュール８２が設けられている。矢印９０によって示されているように、監視モジュール８２はメモリ３２のプログラムメモリ領域における変更を監視する。これは次のようにして行われる。ＣＰＵ２０が、プログラムメモリ領域３２に格納されたプログラムコードから、モジュールごとにチェックサムおよびプログラム長を発生する。これらの個々のチェックサムおよびプログラム長に関する排他的論理和によって総合チェックサム（３２ビット数値）が形成され、システムデータメモリ３８内に保存される。これらの論理結合の結果（総合チェックサム）の変化が監視される。そのために予め与えられた時間間隔において新旧の値の比較が行われる。
【００３９】
矢印９０で表しているように、監視モジュール８２はシステムデータメモリ領域３８の変化も監視する。これは、ＣＰＵ２０によって生成されて供給されるシステムデータの長さおよびチェックサムに関する排他的論理和の変化を監視することにより行われる。さらに監視モジュール８２は、同様にシステムデータメモリ内に保存されているＣＰＵ２０の安全性レベルの変化を監視する。
【００４０】
監視結果の変化時に監視モジュール８２は３つの異なる種類の通報を発生する。一方では通報がＰＬＣ１０の診断バッファ８８に書き込まれる。この診断バッファ８８は、ＣＰＵ２０内においてリングバッファとして実施された内蔵のメモリ領域であり、これは５００個までの診断記録を収容することができる。「全体リセット」後に（全体リセットはＣＰＵの全部のメモリが診断バッファ８８を除いて消去される機能であり、即ち全体リセットされたＣＰＵは（もはや）動作しないという機能である）、又はバッテリと系統電源との同時停電後にも、このメモリはなおも読出し可能である。従って、診断バッファ８８への通報の書込みによって、通報は電源喪失後も失われない。この診断バッファの内容は、一方では、プログラミングソフトウェア「ＳＴＥＰ７／ＰＣＳ７」により読み出して表示することができる。他方では、例えば「ＷｉｎＣＣ」又は「ＰＣＳ７  ＯＳ」のような特定のＨＭＩ装置／ソフトウェアシステムが、これらの診断バッファ記録を同様にデータ／タイムスタンプ付きのクリアテキストで表示する。
【００４１】
監視モジュール８２は、通報を、監視モジュール８２内で実現されリングバッファとして実施された監視バッファ９４にも書き込む。この監視バッファはこの例では５０個の記録を収容することができる。各記録は、発生した変化ごとに、１つのデータ／タイムスタンプと１つのビットとからなる。監視バッファ９４は「ＳＴＥＰ７／ＰＣＳ７」により読み出されて評価される。
【００４２】
さらに、通報は、監視モジュールのそれぞれ１つの２進出力１００，１０２，１０４に供給もしくは表示され、従って後続処理に使用可能である。操作者は、通報後に必要ならば診断バッファ又は監視バッファを介して、より深く掘り下げた情報を読み出すことができる。上述の３つの監視（プログラムコード、システムデータ、安全性レベル）の各々に、それぞれ１つの専用の２進出力１００，１０２，１０４が割り当てられているので、１つの通報を出力するのに１ビットをセットすることで十分である。プログラムコードの変化時の通報は２進出力１００において、システムデータの変化時の通報は２進出力１０２において、安全性レベルの変化時の通報は２進出力１０４において、それぞれ１ビットをセットすることによって出力することができる。
【００４３】
上述の監視モジュール８２によって、発生した通報に基づいて、システムデータおよび／又はプログラムコードにおける変更の企てを識別することができ、これは、例えばＰＬＣ１０の機能に影響を及ぼそうとするウィルス攻撃の結果であり得る。しかし、監視モジュール８２が侵入に気づいて通報を発生することができる前に、攻撃者が監視モジュール８２を部分的又は完全に消去又は無効することによって、通報の発生を妨害することができるであろう。このようなシナリオを阻止するために、制御モジュール１１６が設けられている。二重矢印１１２によって示されているように、監視モジュール８２および制御モジュール１１６が互いに監視し合う。これは、ここでは、それぞれプログラム命令の実行が監視されるように行われる。そのために、それぞれ、予め与えられた時間間隔内に、ここでは１秒内に（一般にプロセス制御技術のプログラムは１０〜１００ミリ秒のタイムスライスで動作する。）、プログラムコードの命令の処理が続行されたかどうかがチェックされる。両モジュール８２，１１６のうちの一方が、それぞれ相手方のモジュール８２，１１６において処理が続行されないことを検出する場合に相応の通報を発生するので、起こり得る攻撃に反応することができる。
【００４４】
制御モジュール１１６は、２進出力１１０において、監視モジュール８２の欠陥のある又は誤った処理を表示する。監視モジュール８２の欠陥のある又は誤った処理は、メモリ２６の監視と関連して上述したように、データ／タイムスタンプと一緒に診断バッファ８８および監視バッファ９４に書き込まれ、２進出力１１０において他の設備特有の通報出力のために使用できる。
【００４５】
このメカニズムは極めて信頼性が高い。というのは、攻撃者は、先ずそもそも外部から、互いに制御もしくは監視し合う２つのモジュール８２，１１６の存在を知ることが必要であるからである。そのうえ、攻撃者には両モジュール８２および１１６を同時に消去できないので、両モジュールのうち少なくとも１つ８２又は１１６が通報を発生し、それによって攻撃の識別が可能となる。しかし、攻撃がない場合にも、両モジュール８２，１１６のうちの一方の故障又は誤動作を検出することができる。
【００４６】
安全性モジュール７６の動作状態において発生する処理ステップのフローチャートが図２に示されている。安全性モジュール７６においてソフトウェア的に実現された処理が、スタート１２０において始まる。判定１２６において、キースイッチ８０が書込み／読出しアクセスを可能にする有効信号を発生しているかどうか、かつ同時にこの信号のステータスが有効であるか又はシミュレーションが存在するかどうかがチェックされる。これらの全ての条件が満たされている場合に、処理はブロック１３２へ分岐し、このブロック１３２においてＣＰＵ２０の安全性レベルが書込み／読出しアクセスに接続され、これは安全性段階１に相当する。
【００４７】
そうでない場合に、処理は判定１３４へ分岐し、この判定１３４において、パスワード認証なしで書込みおよび読出しアクセスを阻止すべきかどうかがチェックされる。これに該当する場合に処理はブロック１３６へ分岐し、このブロック１３６においては、ＣＰＵ２０の安全性レベルもしくは安全性段階がパスワード認証なしで書込み／読出しアクセスに接続される。ブロック１３８においては、上記の両判定１２６，１３４が否定の結果を出した場合に安全性レベルがパスワード認証付きで書込み保護に接続され、これは安全性段階２に相当する。ブロック１４０では現在の安全性レベルが読み出されて表示される。処理はエンド１４２において終了する。
【００４８】
監視モジュール８２においてソフトウェア的に実現された処理がフローチャートにより図３に示されており、スタート１５０において始まる。ブロック１５２においては、ハードウェア構成ＨＤＷＫｏｎｆｉｇおよびプログラムコードならびに安全性レベルについてチェックサム、ここでは数字和が読み出される。判定１５４においては、旧値／新値比較により、ＨＤＷＫｏｎｆｉｇのチェックサムの値が最後の照会からの値と一致しているかどうかがチェックされる。これがそうでないならば、処理はブロック１５６へ分岐する。そこでは監視バッファ９４と診断バッファ８８とにそれぞれデータ／タイムスタンプ付きで通報記録「ＨＤＷＫｏｎｆｉｇ変化」が登録もしくは書込みされ、２進出力１０２が設備特有の後続処理のためにセットされ、即ち、そのビットが１つの通報に相当する値にセットされる（例えば、通報は１、通報なしは０）。旧値／新値比較による数字和の変化がなかったならば、ブロック１５８において出力１０２はリセットされ、それによって、間違って通報が表示されないことが保証される。
【００４９】
判定１６０においては、プログラムコードの読み出された数字和の値が最後の照会からのその数字和の直前値に対して変化したどうかがチェックされる。その変化が起きている場合には、処理はブロック１６２へ分岐する。そこでは監視バッファ９４と診断バッファ８８とに、データ／タイムスタンプを含めた通報記録「プログラム変化」が書き込まれ、出力１００がセットされる。そうでない場合にはブロック１６４において出力１００がリセットされる。
【００５０】
判定１６６においては、ＣＰＵ２０の安全性レベルが最後の照会以来変化したかどうかがチェックされる。これがそうであるならば、ブロック１６８において通報記録「安全性レベルの変化」がタイムスタンプと一緒に監視バッファ９４と診断バッファ８８とに書き込まれる。さらに出力１０４がセットされる。そうでない場合には、ブロック１７０において、この出力がリセットされる。
【００５１】
判定１７２においては、上述の処理ステップの呼出しが１秒よりも古いかどうかがチェックされる。これがそうである場合には、ブロック１７４においてパラメータエラーが出力される（上述の３つのモジュール７６，８２，１１６は他のモジュールと一緒にライブラリにおいて自由に使用可能である。使用者は、プログラミングの際もしくは始動の際におけるモジュールのパラメータ指定によって、種々の動作を選択／設定することができる。使用者が許されていない動作をパラメータ指定／選択した際には、使用者はパラメータエラーを受けてパラメータ指定を訂正することができる。）。そうでない場合には処理がブロック１７６へ分岐し、このブロックにおいてパラメータエラーがリセットされる。
【００５２】
本発明においては、監視モジュール８２および制御モジュール１１６の相互監視が、各モジュールがそれぞれ自身でカウントアップするカウンタと、それぞれ相手方のモジュールによってカウントアップされるカウンタとを有することによって達成される。両モジュール８２および１１６が規則正しく動作する場合には、両カウンタはそれぞれ等しい値を持つ。一方のモジュールが故障し場合には、そのモジュールによってカウントアップされる相手方のモジュール内のカウンタがもはやカウントアップされないので、モジュール故障が識別できる。
【００５３】
処理は、今やさらに判定１７８へ進み、この判定では、監視モジュール８２によってカウントアップされる監視カウンタの値が、制御モジュール１１６によってカウントアップされる制御カウンタと比較される。これらの値が一致する場合には、ブロック１８０において監視カウンタがカウントアップされる。両値が一致しない場合には、判定１８２において、制御カウンタの最後のカウントアップが１秒よりも古くてかつ監視バッファ９４および診断バッファ８８への記録がまだ行われていないかどうかチェックされる。これがそうである場合、これは、制御モジュール１０６が規則正しく動作していないことを表す。従って、この場合にはブロック１８４において、通報記録「消去監視エラー」もしくは「制御モジュールエラー」が監視バッファ９４および診断バッファ８８にそれぞれタイムスタンプ付きで記録され、制御モジュール１１６のエラーが表示される２進出力１０８において１ビットがセットされる。その際に処理はエンド１８６において終了する。そうでない場合には、判定１８８において、ＣＰＵの診断バッファ８８に、ブロック１８４で登録された記録「監視モジュールが再動作」が既に存在するかどうかがチェックされる。これがそうである場合には、ブロック１９０において出力１０８がリセットされる。そうでない場合には、ブロック１９２において監視バッファ９４および診断バッファにタイムスタンプ付きで通報登録「制御モジュール動作ＯＫ」もしくは「消去監視ＯＫ」が行われる。
【００５４】
制御モジュール１１６においてソフトウェアにより実現された処理が図４のフローチャートとして示されており、スタート１９４において開始される。判定１９６において、監視モジュール８２への接続が正常もしくは正しいかどうかがチェックされる。即ち、この実施例では使用者が計画／プログラミングの際にＣＦＣエディタ（ＣＦＣ＝Continuous Function Chart）においてマウスを用いて両モジュール間でクリックによって接続／線を作り出さなければならない。この接続によって、制御モジュール１１６が監視モジュール８２のインスタンスデータブロックへ読み出されて書き込まれる。制御モジュール自体は専用のデータメモリを持たない。前記接続が正常でないかもしくは正しくない場合には、ブロック１９８においてパラメータエラーが出力される。そうでない場合には、判定２００において、この機能の最後の呼出しが１秒よりも古いかどうかがチェックされる。そうでない場合にはブロック２０２においてパラメータエラーが出力される。そうである場合には処理はさらにブロック２０４へ移行し、このブロックでパラメータエラーがリセットされる。
【００５５】
制御モジュール１１６において、監視モジュール８２がカウントアップするカウンタが制御モジュール１１６のカウンタよりも大きい場合には、その制御カウンタがカウントアップされる。判定２０６において、監視カウンタおよび制御カウンタが互いに比較される。監視カウンタが制御カウンタよりも大きい場合には、制御カウンタがブロック２０８においてカウントアップされる。ゆえに、判定２１０において、記録「監視モジュールが再動作」が診断バッファ８８に登録されているかどうかがチェックされる。そうでなければ、ブロック２１２においてそれの取り戻しが行われる。それからブロック２１４において対応する２進出力がリセットされる。
【００５６】
一致が存在する場合には、判定２１６において、監視カウンタの最後のカウンタアップが１秒よりも古くてかつまだ診断バッファ８８への登録が行われていないどうかがチェックされる。まだ登録が行われていない場合には、ブロック２１８において、記録「監視モジュールがもはや動作しない」が登録される。それからブロック２２０において出力１１０がセットされる。
【００５７】
最後のカウンタアップが１秒よりも古くかつ登録が存在しなかった場合には、処理は判定２１６から直接にブロック２２０へ分岐する。処理はエンド２２２において終了する。
【００５８】
全部で３個のモジュールの場合には、上述の機能が保たれたままであるかぎり、処理ステップの順序は異なった順序で又は並行に進行してもよい。それぞれスタートとエンドとの間で説明した処理ステップのシーケンスは、規則正しい時間間隔で繰り返される。それぞれスタートとエンドとの間で、各モジュールは当該モジュールによって更新されるカウンタを１だけカウントアップする。
【符号の説明】
【００５９】
２          核技術設備
４          ディジタル監視装置
８          制御および調節ユニット
１０        プログラマブルロジックコントローラ（ＰＬＣ）
２０        ＣＰＵ
２６        メモリ
３２        プログラムメモリ領域
３８        システムデータメモリ領域
４０        他のメモリ領域
４４        センサモジュール
５０        アクチュエータモジュール
５６        データ線
６２        インターフェース
７０        装置
７６        安全性モジュール
７８        矢印
８０        キースイッチ
８２        監視モジュール
８８        診断バッファ
９０        矢印
９２        矢印
９４        監視バッファ
１００      ２進出力
１０２      ２進出力
１０４      ２進出力
１０８      ２進出力
１１０      ２進出力
１１２      二重矢印
１１６      制御モジュール
１２０      スタート
１２６      判定
１３２      ブロック
１３４      判定
１３６      ブロック
１３８      ブロック
１４０      ブロック
１４２      エンド
１５０      スタート
１５２      ブロック
１５４      判定
１５６      ブロック
１５８      ブロック
１６０      判定
１６２      ブロック
１６４      ブロック
１６６      判定
１６８      ブロック
１７０      ブロック
１７２      判定
１７４      ブロック
１７６      ブロック
１７８      判定
１８０      ブロック
１８２      判定
１８４      ブロック
１８６      エンド
１８８      判定
１９０      ブロック
１９２      ブロック
１９４      スタート
１９６      判定
１９８      ブロック
２００      判定
２０２      ブロック
２０４      ブロック
２０６      判定
２０８      ブロック
２１０      判定
２１２      ブロック
２１４      ブロック
２１６      判定
２１８      ブロック
２２０      ブロック
２２２      エンド
【図１】
0006437457.tif 000002
【図２】
0006437457.tif 000003
【図３】
0006437457.tif 000004
【図４】
0006437457.tif 000005