(57)【要約】【課題】コンピュータウィルスや第三者によるプログラムの改竄防止と、改竄されてもプラントに対する影響を最小限に抑える制御システムを得る。【解決手段】制御システムは、ラダー言語使用のプログラムエディタ、プログラム変換用コンパイラ、これによりコード化したプログラム、制御用のパラメータ、を有し、これらを別の装置に送信するエンジニアリング装置と、この装置から受信したプログラムとパラメータを保管する格納部、格納部のデータからセキュリティキーを算出するキー算出部、前回算出したセキュリティキーを記憶する前回キー記憶部、これらから得た２種のセキュリティデータを比較照合するキー照合部を有する制御装置とを備える。比較したデータが不一致の場合は設定した重故障／軽故障に応じ動作させ、重故障の場合はプログラム全体の実行を停止し、軽故障の場合は一部機能のみ停止し縮退運転する。【選択図】        図３
2018136811.tif 000002
【特許請求の範囲】
【請求項１】
プラントを制御するためのプログラムを作成するエンジニアリング装置とこのエンジニアリング装置から転送された前記プログラムを実行する制御装置を備えた制御システムであって、
前記制御装置は、
前記エンジニアリング装置から転送された前記プログラムから一意に決まるハッシュ処理されたハッシュ値、あるいは前記エンジニアリング装置からの前記プログラムの初回送信時にユーザによって与えられたパスワード、であるセキュリティキーを算出するキー算出部、
前回のプログラムの実行により算出した前記セキュリティキーを記憶する前回キー記憶部、
今回のプログラムの実行により算出した前記セキュリティキーと、前回キー記憶部で記憶している前回のプログラムの実行時に算出した前記セキュリティキーと、を比較照合するキー照合部、を有し、
前記キー算出部で算出した前回のセキュリティキーがある場合においては、前記キー照合部で比較照合し、比較照合した結果が一致した場合には前記プログラムを実行し、比較照合した結果が不一致の場合には前記プログラムを実行するか否かを予め定められた条件に従って選択し、
前記キー算出部で算出した前回のセキュリティキーがない場合においては、前記キー照合部で比較照合せず、前記プログラムを実行することを特徴とする制御システム。
【請求項２】
前記エンジニアリング装置は、前記キー照合部の比較照合結果が不一致の場合に前記プログラムの実行を停止するか継続するかを設定するための制御パラメータを有し、
前記制御装置は、前記プログラムの実行中に前記キー照合部の比較照合結果が不一致であることを検知した場合に、前記制御パラメータにより、前記プログラムを機能別に小サイズ化したプログラム部品ごとに当該プログラム部品の実行を停止するか継続するかを事前に設定し、この設定に応じて動作させるＲＡＳ機能を有するＲＡＳ部を備えたことを特徴とする請求項１に記載の制御システム。
【請求項３】
前記制御装置は、プログラム実行中に前記キー照合部の比較照合結果が不一致であることを検知した場合において、検知した前記プログラム部品の実行を継続する場合、当該プログラム部品の実行を継続する旨を他のプログラム部品に通知する通知部を有することを特徴とする請求項２に記載の制御システム。
【請求項４】
前記エンジニアリング装置は、
前記プログラムから一意に決まるハッシュ処理されたハッシュ値であるセキュリティキーを算出するキー算出部を有し、前記プログラムによりキー算出部で算出したセキュリティキーを制御用パラメータとして登録し、前記プログラムから改造した改造後プログラムと共に前記制御装置に転送し、
前記制御装置は、
前記前回キー記憶部で記憶しているセキュリティキーと前記エンジニアリング装置から転送したセキュリティキーとを照合し、一致する場合には前記改造後プログラムを実行可能と判断することを特徴とする請求項１に記載の制御システム。
【請求項５】
前記制御装置は、前回実行したプログラムをバックアップとして保持する保持部を備え、前記プログラムの実行中に前記キー照合部の比較照合結果が不一致であることを検知した場合において、当該プログラムを実行せずに、前記保持部にバックアップしているプログラムを実行することを特徴とする請求項１に記載の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プラントを制御するための制御装置を有する制御システムにおいてプログラムの改竄を防止するための技術に関するものである。
【背景技術】
【０００２】
従来、制御システムは、プラントを制御するためのプログラムを実行する制御装置と、そのプログラムを作成して制御装置に転送するエンジニアリング装置によって構成される。一般的に、エンジニアリング装置からプログラムを転送する際には、あらかじめエンジニアリング装置に設定されたパスワード等により認証を行い、正しく認証された場合のみ転送を許可することによりプログラムの改竄の防止を行っている。他にもプログラムの改竄を防止する手法として、エンジニアリング装置から制御装置にプログラムを転送する際に、プログラムからダイジェストコードを作成し、記憶装置から読み出した前回転送したプログラムのダイジェストコードと比較して一致しなければ不正な変更と判断して転送を中止する手法が提案されている(例えば、特許文献１参照)。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２０２９２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、制御システムに対するサイバー攻撃の事例が発生しており、制御システムに対するセキュリティの要求が高まってきている。通常、制御システムにおける制御装置はインターネットには直接接続されず、制御システム内に閉じた制御ネットワークやローカルネットワークに接続されるのみのため、インターネット経由でのコンピュータウィルス感染の可能性は低い。しかし、ＵＳＢメモリなどの電子媒体経由でのウィルス感染の可能性があり、他にも第三者によってエンジニアリング装置経由でプログラムを改竄される等が考えられる。これらによってプログラムを改竄されると、プラント全体に甚大な問題を引き起こしかねないため対策が必要である。
【０００５】
特許文献１で提案されている手法は、エンジニアリング装置から制御装置にプログラムを転送する際に、プログラムをチェックして不正な変更と判断した場合に制御装置への転送を中止するものである。これは、一旦エンジニアリング装置に保存したプログラムが不正に変更されていないかをチェックするものである。コンピュータウィルスの場合はエンジニアリング装置を介さずにプログラムを改竄するため、この方法では制御装置に格納されたプログラムに対して改竄を検知したり、防止したりすることはできず、改竄された場合にはプラント全体への影響を抑えることはできない。
【０００６】
この発明は上記のような課題を解決するためになされたものであり、コンピュータウィルスや第三者によるプログラムの改竄防止と、改竄されてもプラントに対する影響を最小限に抑えることを可能とする制御システムを得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る制御システムは、
プラントを制御するためのプログラムを作成するエンジニアリング装置とこのエンジニアリング装置から転送された前記プログラムを実行する制御装置を備えた制御システムであって、
前記制御装置は、
前記エンジニアリング装置から転送された前記プログラムから一意に決まるハッシュ処理されたハッシュ値、あるいは前記エンジニアリング装置からの前記プログラムの初回送信時にユーザによって与えられたパスワード、であるセキュリティキーを算出するキー算出部、
前回のプログラムの実行により算出した前記セキュリティキーを記憶する前回キー記憶部、
今回のプログラムの実行により算出した前記セキュリティキーと、前回キー記憶部で記憶している前回のプログラムの実行時に算出した前記セキュリティキーと、を比較照合するキー照合部、を有し、
前記キー算出部で算出した前回のセキュリティキーがある場合においては、前記キー照合部で比較照合し、比較照合した結果が一致した場合には前記プログラムを実行し、比較照合した結果が不一致の場合には前記プログラムを実行するか否かを予め定められた条件に従って選択し、
前記キー算出部で算出した前回のセキュリティキーがない場合においては、前記キー照合部で比較照合せず、前記プログラムを実行するものである。
【発明の効果】
【０００８】
この発明によれば、プラントを制御するための制御装置を有する制御システムにおいてコンピュータウィルスや第三者によるプログラムの改竄防止と、改竄されてもプラントに対する影響を最小限に抑えることを可能とする制御システムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】この発明の実施の形態１における制御システムの一例を示す図である。
【図２】この発明の実施の形態１〜５における制御システムの制御装置およびエンジニアリング装置が各々有するハードウェア構成の一例を示す図である。
【図３】この発明の実施の形態１における制御システムの動作を示すフローチャート図である。
【図４】この発明の実施の形態２における制御システムの一例を示す図である。
【図５】この発明の実施の形態３における制御システムの一例を示す図である。
【図６】この発明の実施の形態４における制御システムの一例を示す図である。
【図７】この発明の実施の形態５における制御システムの一例を示す図である。
【発明を実施するための形態】
【００１０】
実施の形態１．
以下、この発明の実施の形態１を図１に基づいて説明する。
図１は、この発明の実施の形態１による改竄防止機能付き制御装置を含む制御システムのブロック図である。
【００１１】
制御用プログラムを作成するエンジニアリング装置１０１は制御用プログラムを実行する制御装置２０１と通信ケーブル３０１で接続されている。エンジニアリング装置１０１は、ラダー言語を使用して制御プログラムを作成するプログラムエディタ１０２、作成したプログラムを機械語コードに変換するコンパイラ１０３、制御装置２０１を動作させるための制御用パラメータ１０５と機械語コードに変換した後のプログラムであるコード化プログラム１０４を制御装置に送信する送信部１０６を有している。なお、送信動作は、エンジニアリング装置１０１が有するプロセッサとメモリにより、このプロセッサがこのメモリに記憶されたプログラムを実行することにより実現される(図２参照)。
【００１２】
制御装置２０１はエンジニアリング装置１０１から送信されたプログラムと制御用パラメータを受信するための受信部２０２、受信したプログラムと制御用パラメータを保管し
ておく格納部２０３、送信されたプログラムから一意に決まるセキュリティキー２０５（ここで、セキュリティキーとは、プログラム保護のために与えられた原文を基にハッシュ処理されたハッシュ値であって、不可逆な一方向の関数処理を含むものである。なお、ハッシュ処理とは、与えられた原文から固定長の疑似乱数を生成する演算処理の手法である。この演算処理の手法は通常、ハッシュ関数、あるいは要約関数などと呼ばれる）を算出するキー算出部２０４、前回実行したプログラムのセキュリティキーである前回セキュリティキー２０７を記憶するための前回キー記憶部２０６、キー算出部２０４により算出したセキュリティキー２０５と前回記憶した前回セキュリティキー２０７を比較照合するためのキー照合部２０８を有している。
【００１３】
ユーザは前記エンジニアリング装置１０１のプログラムエディタ１０２にて制御用のプログラムを作成し、前記制御装置２０１を動作させるための制御用パラメータ１０５を登録する。作成したプログラムは、コンパイラ１０３により機械語コードに変換されたコード化プログラム１０４に変更され、制御用パラメータ１０５とともに送信部１０６により制御装置２０１に送信される。前記制御装置２０１は前記エンジニアリング装置１０１から送信されたコード化されたプログラムと制御用パラメータを受信して格納部２０３に格納する。
【００１４】
その後は、図３のフローチャートに示すとおりの動作を行う。
図３のフローチャートに示す制御装置２０１の動作について詳しく説明する。ステップＳ２０１で制御装置はコード化プログラム等を格納している格納部２０３を参照し、ステップＳ２０２で格納されたプログラムについてキー算出部２０４で当該プログラムのセキュリティキー２０５を算出する。このセキュリティキー２０５は、例えばプログラムのサイズや命令数などを使用してハッシュ処理を施し、プログラム（のみ）から一意に決まる値とする。また、エンジニアリング装置１０１から制御装置２０１に対してコード化プログラムと制御用パラメータを初回送信時に、ユーザがパスワードを付与する方法もある。この場合はパスワードをセキュリティキー２０５として使用することが可能である。
【００１５】
次にステップＳ２０３で、前回キー記憶部２０６にて前回実行時のセキュリティキーである前回セキュリティキー２０７を参照する。前回キーが未登録であれば今回が初回実行とみなし、そのままプログラムを実行し、今回算出したセキュリティキーを前回キー記憶部２０６にて記憶する(ステップＳ２０５〜Ｓ２０６)。ステップＳ２０３で前回キーが登録されていた場合は、今回算出したセキュリティキー２０５と前回キー記憶部２０６で記憶した前回セキュリティキー２０７をキー照合部２０８で比較照合し、一致した場合はプログラムを実行する。不一致の場合はプログラムを実行しない(ステップＳ２０３〜Ｓ２
０４、Ｓ２０７参照)。
【００１６】
これはユーザまたは第三者が、エンジニアリング装置を使用してプログラムを改造した場合の動作であるが、インターネット経由でコンピュータウィルス等により改竄された場合も図３のフローチャートに沿って動作することで、改竄された不正なプログラムの実行を防止することが可能である。また、プログラムだけでなく制御用パラメータについても、同様にセキュリティキーを算出、前回実行時と比較することで制御用パラメータの改竄防止にも応用できる。
【００１７】
実施の形態１によると、制御装置２０１はプログラムから一意に決まるセキュリティキー２０５を算出するキー算出部２０４を備え、これにより算出したセキュリティキー２０５と前回キー記憶部２０６にて記憶済みの前回実行プログラムの前回セキュリティキー２０７とをキー照合部２０８により比較照合し、不一致の場合はプログラムを実行しないため、第三者やコンピュータウィルス等により不正に改造されたプログラムの実行を防止することができる。なお、制御装置２０１の各構成要素である受信部２０２、格納部２０３、キー算出部２０４、セキュリティキー２０５、前回キー記憶部２０６、前回セキュリティキー２０７、キー照合部２０８のそれぞれの動作は、この制御装置２０１が有するプロセッサとメモリを用いて、当該プロセッサが当該メモリに記憶されたプログラムを実行することにより実現される(図２参照)。
【００１８】
実施の形態２．
以下、この発明の実施の形態２を図４に基づいて説明する。
図４は、この発明の実施の形態２による制御システムを示すブロック図である。
【００１９】
図４では、図１と異なり、制御装置がプログラム実行中に改竄を検知した場合に、重故障または軽故障動作させるＲＡＳ（Reliability Availability and Serviceabilityの略
）機能を有するＲＡＳ部２０９をさらに備えている。その他の構成要素は実施の形態１で説明したものと同様である。また、エンジニアリング装置１０１は、制御装置がプログラム改竄を検知した場合に、重故障動作または軽故障動作のうち、どちらの動作をさせるかを設定する重軽故障パラメータ１０７を有している。この重軽故障パラメータは、各プログラム部品単位（ここで、プログラム部品とは、プログラム（全体）を機能別に小サイズ化したプログラムのことであって、例えば、コンピュータの機能を記憶機能、演算機能、制御機能、入出力機能に分け、機能ごとにまとめた場合の各プログラムのことを意味する）で設定することにより、改竄部位に応じた動作設定が可能である。
【００２０】
実施の形態１では、実行しようとしているプログラムから算出したセキュリティキー２０５と記憶済みの前回セキュリティキー２０７を比較照合して、不一致の場合は実行しないようにしている。
【００２１】
しかし、プラント運用開始後に制御装置２０１が停止するとプラント全体に対する影響が大きいため、プログラム実行中に改竄を検知してもシステムへの影響が小さい場合（ここで、影響の大小については、その機能を停止した場合に制御装置全体としての動作が保証できるか否かにより判断する。例えば、一部の通信機能のみ停止させれば他の機能は通常通り動作するのであれば、影響は小さいとして軽故障とする等。）は、改竄部位のプログラム以外を継続実行できるようにすることが望ましい。そのため改竄を検知した際の動作を、プログラム部品単位でユーザにて設定できるようにする。
【００２２】
制御装置２０１は設定した制御用パラメータに応じて動作させるためのＲＡＳ機能を有するＲＡＳ部２０９を備え、重故障設定したプログラム部品で改竄を検知した場合は、制御装置全体のプログラムを停止、軽故障設定したプログラム部品で改竄を検知した場合は、そのプログラム部品のみ停止して他のプログラムは実行することでシステムを縮退運転させる。
【００２３】
実施の形態２によると、エンジニアリング装置１０１は改竄部位に応じて重故障／軽故障を設定する重軽故障パラメータ１０７を有し、制御装置２０１はその設定に応じて動作させるＲＡＳ機能を有するＲＡＳ部２０９を備えている。これにより制御装置２０１がプログラム実行中に改竄を検知した場合でも、制御装置２０１を停止させずに機能縮退して継続運転すること(軽故障動作)が可能となるため、プラントへの影響を最小限に抑えることができる。なお、制御装置２０１の上記構成要素であるＲＡＳ部２０９の動作は、この制御装置２０１が有するプロセッサとメモリを用いて、当該プロセッサが当該メモリに記憶されたプログラムを実行することにより実現される(図２参照)。
【００２４】
実施の形態３．
以下、この発明の実施の形態３を図５に基づいて説明する。
図５は、この発明の実施の形態３による制御システムを示すブロック図である。図５にお
いて、制御装置２０１においてプログラムの改竄を検知したことを他のプログラムに通知する通知部２１０を備えている点が図４に示したものと異なる。他は図４と同じであるので詳しい説明は省略する。
【００２５】
実施の形態２では、プログラムの改竄を検知した場合に重故障または軽故障動作を行い、軽故障となった場合は改竄を検知したプログラムのみの実行を停止する。一般的に制御装置のプログラムは複数のプログラム部品から構成され、改竄されたプログラム部品のみを停止した場合に、他のプログラム部品での制御に影響を与える可能性がある。
【００２６】
そこで、あるプログラム部品で改竄を検知した場合には、内部メモリにその情報を格納して、他のプログラム部品に対して改竄を検知した旨を通知する通知部２１０を備える。これにより他のプログラム部品では通知された情報を参照することで、改竄されたプログラム部品の停止時に影響を受ける機能を連動して停止させる等の動作が可能となる。
【００２７】
実施の形態３によると、制御装置２０１においてプログラム部品の改竄を検知したことを他のプログラム部品に通知する通知部２１０を備えている。これにより、他のプログラム部品でも影響のある機能を連動して停止させる等が可能となるため、改竄を検知した場合でも、より安全に縮退運転ができる。なお、制御装置２０１の上記構成要素である通知部２１０の動作は、この制御装置２０１が有するプロセッサとメモリを用いて、当該プロセッサが当該メモリに記憶されたプログラムを実行することにより実現される(図２参照)。
【００２８】
実施の形態４．
以下、この発明の実施の形態４を図６に基づいて説明する。
図６は、この発明の実施の形態４による制御システムを示すブロック図である。図６において、図５に示したものと符号が同一のものは図５と同内容であるので、ここでは詳しい説明を省略する。
【００２９】
図６では、エンジニアリング装置１０１は、制御装置２０１と同様に、プログラムからセキュリティキーを算出するキー算出部１０９を有している。エンジニアリング装置１０１は、改造前プログラム１０８からキー算出部１０９でセキュリティキー１１０を算出し、自動的に制御用パラメータとして登録して、送信部１０６で改造後のコード化プログラム１０４ａ（改造後のコード化プログラムは略して改造後プログラムとも呼ぶ）とともに制御装置２０１に送信する。
【００３０】
プログラムを改造する場合、それが正規の改造であることを制御装置に認識させる必要がある。そこで、エンジニアリング装置１０１にも、制御装置２０１と同様にプログラムからセキュティキーを算出するキー算出部１０９を備える。
【００３１】
エンジニアリング装置１０１にて、改造前プログラム１０８から算出したセキュリティキー１１０を制御用パラメータとして登録し、改造後のプログラムを転送する際に、この制御用パラメータも制御装置２０１に転送するようにする。制御装置２０１は受信部２０２により改造後のコード化プログラム１０４ａと、改造前プログラム１０８から算出したセキュリティキー１１０を受信する。
【００３２】
前回キー記憶部２０６により記憶している前回セキュリティキー２０７と、エンジニアリング装置１０１から転送されたセキュリティキー１１０をキー照合部２０８により比較照合し、一致する場合は正規な改造と判断し、改造後のコード化プログラム１０４ａを採用する。不一致の場合は不正な改造と判断し、転送されたプログラムは採用しないものとする。
【００３３】
実施の形態４によると、エンジニアリング装置１０１にて改造前プログラム１０８から算出したセキュリティキー１１０により認証を行うことで、不正な改造と正規な改造を区別することができる。また、ユーザはセキュリティ認証するのにパスワード等を記憶しておく必要はないため、パスワード管理等の手間もかからない。なお、キー算出部１０９の動作は、エンジニアリング装置１０１が有するプロセッサとメモリにより、当該プロセッサが当該メモリに記憶されたプログラムを実行することにより実現される(図２参照)。
【００３４】
実施の形態５．
以下、この発明の実施の形態５を図７に基づいて説明する。
図７は、この発明の実施の形態５による制御システムを示すブロック図である。図７では、制御装置２０１において、前回実行したプログラムをバックアップとして保持する保持部２１１を備えている点が、図６に示したものと異なる。
【００３５】
実施の形態２では、プログラムの改竄を検知した場合に重故障または軽故障動作を行うが、復旧させるためには改竄されたプログラムを削除して、正しいプログラムをエンジニアリング装置から転送し直す必要があり、その際は一般的には制御装置２０１のリセット／ラン操作を伴うため設備を停止せざるを得ない。
【００３６】
そこで、実施の形態５では、制御装置２０１において、前回実行したプログラムをバックアップとして保持する保持部２１１を備える。プログラムを実行した際に改竄を検知した場合には、保持したプログラムにてセキュリティキーの算出と、記憶済みのセキュリティキーとの照合を行い、一致する場合は保持したプログラムで実行するものとする。
【００３７】
実施の形態５によると、前回実行したプログラムをバックアップとして保持する保持部２１１を備え、実行しようとしていたプログラムの改竄を検知した場合には、バックアップしたプログラムでの実行を可能とすることで、プログラムの改竄及びそれを復旧する際の設備停止が不要となり、プラント運用への影響を最小限にすることができる。なお、制御装置２０１の上記構成要素である保持部２１１の動作は、この制御装置２０１が有するプロセッサとメモリを用いて、当該プロセッサが当該メモリに記憶されたプログラムを実行することにより実現される(図２参照)。
【００３８】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。例えば、上記実施の形態１〜５においては、エンジニアリング装置１０１、あるいは制御装置２０１は、各１個のプロセッサとメモリを備えるものとして説明したが、これに限らず、複数のプロセッサあるいは複数のメモリを備え、これらが連携して上述の各動作を実行してもよい。
【符号の説明】
【００３９】
１０１  エンジニアリング装置、１０２  プログラムエディタ、１０３  コンパイラ、１０４  コード化プログラム、１０４ａ  改造後のコード化プログラム、１０５  制御用パラメータ、１０６  送信部、１０７  重軽故障パラメータ、１０８  改造前プログラム、２０１  制御装置、２０２  受信部、２０３  格納部、１０９、２０４  キー算出部、１１０、２０５  セキュリティキー、２０６  前回キー記憶部、２０７  前回セキュリティキー、２０８  キー照合部、２０９  ＲＡＳ部、２１０  通知部、２１１  保持部、３０１  通信ケーブル
【図１】
2018136811.tif 000003
【図２】
2018136811.tif 000004
【図３】
2018136811.tif 000005
【図４】
2018136811.tif 000006
【図５】
2018136811.tif 000007
【図６】
2018136811.tif 000008
【図７】
2018136811.tif 000009