JP5756412B2 - 監視方法および監視システム - Google Patents

監視方法および監視システム Download PDF

Info

Publication number
JP5756412B2
JP5756412B2 JP2012003931A JP2012003931A JP5756412B2 JP 5756412 B2 JP5756412 B2 JP 5756412B2 JP 2012003931 A JP2012003931 A JP 2012003931A JP 2012003931 A JP2012003931 A JP 2012003931A JP 5756412 B2 JP5756412 B2 JP 5756412B2
Authority
JP
Japan
Prior art keywords
control
plc
program
control device
user program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012003931A
Other languages
English (en)
Other versions
JP2013143077A (ja
Inventor
尚 寺江
尚 寺江
清水 勝人
勝人 清水
直也 益子
直也 益子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2012003931A priority Critical patent/JP5756412B2/ja
Priority to CN201380005269.2A priority patent/CN104054087A/zh
Priority to PCT/JP2013/050130 priority patent/WO2013105554A1/ja
Priority to IN5825DEN2014 priority patent/IN2014DN05825A/en
Publication of JP2013143077A publication Critical patent/JP2013143077A/ja
Application granted granted Critical
Publication of JP5756412B2 publication Critical patent/JP5756412B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Programmable Controllers (AREA)
  • Testing And Monitoring For Control Systems (AREA)

Description

本発明は、制御装置の動作を監視する制御装置の監視方法および制御装置監視システムに関する。
コンピュータウィルスなどの悪意のあるソフトウェア(以下、ウィルスと称する)はこれまで、一般的なパーソナルコンピュータ(以下、PC(Personal Computer)と称する)において脅威となる存在であった。このようなウィルスの代表的なものとしてトロイの木馬などが知られている。これらのウィルスはFD(Flexible Disk)などの外部媒体、メール、インターネット上のWebサイトなどのさまざまな経路からコンピュータに侵入し、不正に情報を盗み出したり、情報を書き換えたりするなどの動作を行う。前記したように、このようなウィルスの脅威は、従来PCにおいてのみ認知されていたが、近年、プログラマブルコントローラ(以下、PLC(programmable logic controller)と称する)においても、その感染例が報告されている。例えばstuxnetなどは、USB(Universal Serial Bus)メモリなどを介して開発用PCに侵入し、開発用PCからPLCへユーザプログラムをダウンロードするときにウィルスがPLCに仕込まれる。そのため、PLCにおいても、ウィルス対策が求められてきている。
PLCはプラント制御などの特定の目的に限定して利用される計算機である。このようなPLCでは、ユーザが開発用PC上でユーザプログラムを作成し、そのユーザプログラムが開発用PCからPLCへダウンロードされる。ここで、開発用PCがウィルスに感染していると、ユーザプログラムのダウンロード時に、開発用PC上のウィルスがPLCにダウンロードされてしまうおそれがある。
また、障害に備えて、同一のユーザプログラムを搭載した複数のPLCによる多重化構成で運用することも多く、その多重化構成を利用したソフトウェアの信頼性向上技術が多く考案されている。
例えば、特許文献1には複数のプロセッサを備え、主として通信処理を行うプロセッサと、制御対象機器の制御を行うプロセッサとを独立させているコントローラおよびその制御方法が開示されている。
また、特許文献2にはデータを所定のデータ量に分割し、分割されたそれぞれのデータから認証データを生成し、この認証データに対して2項演算を行い、演算結果と期待値が一致するか否かで認証を行う電子機器、遊技機、主制御基板、周辺基板、認証方法および認証プログラムが開示されている。
さらに、特許文献3にはシステムバス制御装置と、メモリ装置を2重化している2重化メモリシステムが開示されている。
そして、特許文献4には、ユーザプログラムの命令のN周期前から現在までのすべての入力値データおよび出力値データを用いて、制御プログラムの命令実行結果データの表示を行うプロセス制御コントローラの故障解析支援システムが開示されている。
特開2004−094473号公報 特開2011−030607号公報 特開平08−016484号公報 特開2001−014027号公報
ウィルスは、ユーザに気づかれないようにプラントなどの制御対象を操作し、制御対象の誤動作や事故を発生させる。そのため、ウィルスは制御対象を管理・保有するユーザや、その制御対象を利用するエンドユーザに対して好ましくない影響をもたらすおそれがある。しかしながら、インターネットなどの外部の回線に接続されていないPLCに対するウィルスの侵入方法は、PCに比べると限定的であり、ソフトウェア開発用のPC(開発用PC)や、運用管理用のPCからソフトウェア更新のためのダウンロードが行われる際にウィルスの侵入が生じることが多いと考えられる。
このような背景に鑑みて本発明がなされたのであり、本発明は、PLCの動作状態を監視することを課題とする。
前記した課題を解決するため、本発明は、制御対象を制御する制御装置の動作状態を監視する制御装置の監視方法であって、複数の前記制御装置が設置されることで、前記制御装置は多重化されており、各制御装置は、中継装置を介して、互いに接続されており、前記中継装置は、一の制御装置から受信した制御情報を、他の制御装置へ転送し、前記制御情報には、前記制御対象の制御に用いる制御データと、当該制御データの生成元となっているユーザプログラムの属性情報とが含まれており、前記制御装置は、前記中継装置を介して、自身とは別の制御装置から送信された前記制御情報に含まれる前記ユーザプログラムの属性情報を用いて、ウィルス検証に関する検証処理を行うことを特徴とする。
その他の解決手段は、実施形態中で適宜説明する。
本発明によれば、PLCの動作状態を監視することができる。
第1実施形態に係るPLC監視システムの構成図である。 第1実施形態に係るPLCのハードウェア構成例を示す図である。 第1実施形態に係るPCのハードウェア構成例を示す図である。 第1実施形態に係るPLC監視システムにおける情報の流れを示す図である。 第1実施形態に係るPLC監視処理の動作例を示すタイミングチャートである。 第1実施形態に係るPLC監視処理の別の動作例を示すタイミングチャートである。 第1実施形態に係るPLC監視システムに用いられるフレームのフォーマット例を示す図である。 第1実施形態に係るPLCにおけるフレーム送信処理の詳細な手順を示すフローチャートである。 第1実施形態に係るPLCにおけるフレーム受信後処理の手順を示すフローチャートである。 第1実施形態に係るPLC監視システムによる検証データをグラフ化した例を示す図である。 第1実施形態に係る監視プログラムテーブル更新処理の手順を示すフローチャートである。 第1実施形態に係る監視プログラムテーブルの構成例を示す図である。 第2実施形態に係るPLC監視処理の動作を示すタイミングチャートである。 第3実施形態に係るPLC監視システムにおける情報の流れを示す図である。
次に、本発明を実施するための形態(「実施形態」という)について、適宜図面を参照しながら詳細に説明する。
[第1実施形態]
(構成)
図1は、第1実施形態に係るPLC監視システムの構成図である。
制御装置監視システムであるPLC監視システム10は、制御装置であるPLC1(1a,1b)、管理装置である開発用PC(以下、単にPC2と称する)、HUB(機器)3、PI/O(Process Input/Output:機器)4、制御対象5を有している。
PLC1およびPC2については、詳細を後記する。
PLC監視システム10では、2重化構成となっているPLC1a,1bが、フィールドネットワーク7を介して、HUB3に接続している。ここで、後記するように、HUB3は、フィルタリングやネットワークの中継などを行う。ここでのフィルタリングは、後記するスレーブのPLC1から送信されたフレームはPI/O4へ通過させないが、後記するマスタのPLC1から送信されたフレームはPI/O4へ通過させるといった機能を指す。また、ネットワークの中継とはHUB3が一方のPLC1から受信した制御命令を、PI/O4へ送信するとともに、他方のPLC1にも送信する機能を指す。
HUB3は、フィールドネットワーク8を介して、制御対象5を制御する装置であるPI/O4に接続している。
PI/O4には機能の異なる複数デバイス(機器)が搭載されており、それぞれのデバイスは固有の機器番号によって管理されているものとする。PLC1は機器番号が指定されることでどのデバイスにもアクセスが可能である。
また、各PLC1には、ソフトウェアの更新やリモート制御を行うためのPC2がフィールドネットワーク6を介して接続されている。
前記の構成は制御システムとしては一般的な構成である。
ここで、PLC1a,1bの一方が制御対象5を制御する権利(マスタ権)を持った主系(以下、マスタと称する)となり、他方がマスタ権を持たない従系(以下、スレーブと称する)となる。そして、マスタが障害などで動作継続不可能になったときは、マスタ・スレーブ関係を切り替えることができる。
まず、最初にPLC1aがマスタ、PLC1bがスレーブとなっているものとする。スレーブのPLC1bがマスタのPLC1aの突発的な切替要求に対応できるようにするため、PLC1bはPLC1aがメモリに持っているデータや生存状態をフィールドネットワーク7を使って取得する。
ここで、本実施形態におけるフィールドネットワーク7,8の通信方式は、フレーム単位でデータを送信するものとする。すなわち、一方のPLC1bがPI/O4や、他方のPLC1aなどの送信先の装置に対して、フレーム単位でフィールドネットワーク7の回線を介してデータを送信し、その宛先となっている送信先の装置が、送信されたフレームを受信するような方式である。
前記したように、HUB3はフィールドネットワーク7,8を中継し、フレームを監視する。PLC1およびPI/O4には、固有のアドレスが付与されており、そのアドレスをフレームのヘッダ情報に付与して送信している。フレームには、後記するように、フレームのヘッダ、あるいはデータ部分に、送信元のPLC1がマスタであるかスレーブであるかを示すマスタ識別子を付加することができる。このマスタ識別子により、HUB3は制御対象5の制御権を持つマスタから送信されたフレームのみをPI/O4へ送信し、スレーブから送信されたフレームをPI/O4に送信できないようにするフィルタリング機能を実現する。
図1に示すように、PLC1が多重化構成になっていれば、その多重系におけるPLC1のうちの1つをソフトウェアの更新のために停止しても、他のPLC1は動作継続している。PLC1へのソフトウェアの更新が、フィールドネットワーク6を経由したダウンロードによるものであれば、ダウンロードを実行するPLC1のアドレスのみを指定することで、動作継続中の他のPLC1に影響を与えずソフトウェアの更新が可能である。そのため、ウィルスは、ユーザプログラム112(図3)をダウンロード中の、停止しているPLC1には侵入する可能性があるが、動作継続中のPLC1には侵入しないことになる。この時点では、動作継続中で健全なPLC1と、ウィルスの感染の可能性があるPLC1とが両立した状態となり、それら2種類のPLC1の状態を比較すれば、ウィルスの感染を特定することができる。本実施形態では、健全である動作継続中のPLC1によって、ダウンロード実施直後のPLC1の動作を検証することでウィルスの感染を特定する。
(PLCの構成)
図2は、第1実施形態に係るPLCのハードウェア構成例を示す図である。
PLC1は、メインメモリ110、CPU(Central Processing Unit)120、入力装置130、出力装置140、記憶装置150を有している。
メインメモリ110には、制御プログラム111、ユーザプログラム112、PI/Oドライバ113、マスタ権制御プログラム114、データ生成プログラム115、検証プログラム116などが展開され、CPU120によって実行されている。
制御プログラム111は、各プログラム112〜116を統括制御したり、監視プログラムテーブル151の更新を行ったりする。つまり、各プログラム112〜116は制御プログラム111上で実行されるプログラムである。制御プログラム111は、例えばOS(Operating System)などである。
ユーザプログラム112は、制御対象5を制御するためのプログラム(制御装置で実行されているプログラム)であり、ユーザによってPC2で開発され、PLC1へダウンロードされる。
PI/Oドライバ113は、PI/O4を制御するためのドライバである。PI/Oドライバ113はPI/O4宛の送信フレームを生成して送信する処理と、PI/O4からのフレームを受信する処理を行う。二重化構成のPLC1では、PI/O4からPLC1宛の送信フレームだけでなく、相手系PLC1が送信したPI/O4宛の送信フレーム、相手系PLC1から自系PLC1宛の送信フレームを処理できるようになっている。
マスタ権制御プログラム114は、マスタ権の切り替えを行う。なお、PC2がマスタ権の制御を行ったり、ユーザによる手動でのマスタ権の切り替えが行われる場合、PLC1におけるマスタ権制御プログラム114は省略可能である。
データ生成プログラム115は、ウィルスの感染検証(以下、単に「検証」と称する)を行うためのデータである動作検証用のデータ(検証用データ251(図3))などを生成する。
検証プログラム116は、データ生成プログラム115で生成された検証用データ251などを基に、PLC1がウィルスに感染しているか否かを検証するプログラムである。なお、検証がPC2で行われる場合、検証プログラム116は省略可能である。
また、記憶装置150には、後記する監視プログラムテーブル151が格納されている。
検証がPLC1で行われる場合、図3の検証用データ251が生成され、記憶装置150に保存されることがある。
なお、本ハードウェア構成はメインメモリ110と記憶装置150とを明示的に分離しているが、記憶装置150に格納される情報がメインメモリ上に存在しているような構成でも本実施形態は実現可能である。
(PCの構成)
図3は、第1実施形態に係るPCのハードウェア構成例を示す図である。
PC2は、メインメモリ210、CPU220、入力装置230、表示装置240、記憶装置250を有している。
メインメモリ210には、制御プログラム211、ダウンロードプログラム212、検証プログラム213などが展開され、CPU220によって実行されている。
制御プログラム211は、各プログラム212,213を統括制御する。つまり、各プログラム212,213は制御プログラム211上で実行されるプログラムである。制御プログラム211は、例えばOSなどである。
ダウンロードプログラム212は、記憶装置250に格納されているユーザプログラム112をPLC1へダウンロードする。
検証プログラム213は、PLC1から送られてきた検証用データ251などを基に、PLC1がウィルスに感染しているか否かを検証するプログラムである。なお、検証がPLC1で行われる場合、検証プログラム213は省略可能である。
また、記憶装置250には、ユーザによって開発されたユーザプログラム112と、PLC1から送信された検証用データ251などが格納されている。
検証用データ251はウィルス感染の疑いのあるユーザプログラム112に関する挙動を記録したデータである。詳細は後記するが、検証用データ251はPLC1にてユーザプログラム112の挙動を監視した結果である監視プログラムテーブル151から、PI/O4への出力値などの特定の情報を抽出したものである。検証用データ251の具体例は図10で後記する。
(情報の流れ)
図4は、第1実施形態に係るPLC監視システムにおける情報の流れを示す図である。
ここで、PC2で格納されているユーザプログラム112がウィルスに感染しているものとする。なお、図4において、ウィルスに感染している機器をハッチングで示すこととする。
まず、ユーザプログラム112のダウンロード開始前に、PLC1aが一時停止し、各PLC1a,1bの制御プログラム111で実行されているマスタ権制御プログラム114が、マスタ権をPLC1aからPLC1bへ移す。
マスタ権の移動後、自身のソフトウェアの更新のため、PLC1の制御プログラム111は、PC2のダウンロードプログラム212と連携してPC2からPLC1aへユーザプログラム112のダウンロードを行う(S101)。このとき、ウィルスに感染しているユーザプログラム112がPLC1aにダウンロードされ、PLC1aがウィルスに感染する。
ここで、前記したように、HUB3は、マスタから送信されるフレームをPI/O4へ送るが(S102,S103)、スレーブから送信されるフレーム(S104)をPI/O4へ送らない。つまり、マスタ・スレーブ両方からフレームを受信しても、受信フレーム内のマスタ識別子を参照してマスタになっているPLC1からのフレームをPI/O4へ送信する。
また、HUB3は各PLC1から送信されたフレームを別のPLC1へ転送する(S105、S106)。この動作は受信したフレームのマスタ識別子に関係なく、PLC1aからの受信フレームをPLC1bへ、PLC1bからの受信フレームをPLC1aへ送信する。
HUB3からフレームを転送された各PLC1は、転送されたフレーム(別のPLC1から送信されたフレーム)を用いて、検証用データ251を生成したり、この検証用データ251を使用してウィルスの検証を行う。そして、各PLC1は、検証用データ251や、感染検証の結果をPC2へ送信する(S107,S108)。
なお、HUB3は前記したようなフィルタリング機能やネットワーク中継機能を有する装置であれば代用可能である。例えば、PLC1自身がマスタかスレーブかを判定して、マスタならばPI/O4と相手系PLC1に送信し、スレーブならば相手系PLC1にのみ転送するようにするようにしてもよい。あるいは、PLC1をHUB3に置き換えて、PLC1がフィルタリングやネットワーク中継をするプログラムを動作させてもよい。
図5は、第1実施形態に係るPLC監視処理の動作例を示すタイミングチャートであり、PC2がウィルスに感染している状態から開始している。
PLC1aが一時停止して、マスタ権をPLC1bへ移し、PLC1bがマスタ、PLC1aがスレーブとなる。
そして、PC2は、PLC1aへユーザプログラム112を送信し(S201)、PLC1aは送信されたユーザプログラム112を受信する(S202)。このとき、PC2からPLC1aへウィルスが感染したとする。一方、PLC1bはダウンロードを行っていないため、ウィルスには感染していない。以降、PLC1aを「感染PLC」、PLC1bを「正常PLC」と適宜称することがある。
前記したように、PLC1aはソフトウェア更新のために一時停止し、マスタ権をPLC1bへ移すことによって、PLC1bがマスタ、PLC1aがスレーブとなっている。
PC2からのダウンロード終了後、PLC1aが再起動されるが、ウィルスの検証処理が終了するまで、PLC1bがマスタ、PLC1aがスレーブのままとなるよう設定されている。
ウィルスがPLC1に感染した場合、PLC1内部のメモリやストレージの破壊、他の制御装置への感染なども脅威となるが、最も脅威となる挙動は、制御対象5(図1)への不正な操作である。PLC1が制御する制御対象5は、発電プラントなどの、誤動作による影響が大きいものが含まれるため、制御対象5の不正な操作は最優先で防止すべきである。
PLC1が制御対象5の操作を行うには、PI/O4を操作する必要がある。そのため、本実施形態の構成においては、ウィルスに感染したPLC1aが不正な制御命令をPI/O4に発行して、そのPI/O4がその制御命令を実行して不正な出力を制御対象5に発することを防止する必要がある。
前記したように、PLC1aは、スレーブなので、PLC1aのユーザプログラム112が制御命令を発行してもPI/O4を制御することはできない。
一方、PLC1bはマスタとなっているので、PLC1bのユーザプログラム112がHUB3を経由してPI/O4へ制御対象5を制御するための制御命令Aをフレームとして送信する(S203)。
HUB3は、送信された制御命令AをPI/O4とPLC1aへ転送する(S204)。
PI/O4は、HUB3から送信された制御命令Aを実行して(S205)、制御対象5(図1)を制御する。
一方、PLC1aは、HUB3から制御命令Aを受信すると(S206)、PLC1aのデータ生成プログラム115が制御命令Aを基に、検証用データ251を作成し、検証プログラム116は、その検証用データ251を用いて、制御命令Aの送信元であるPLC1bがウィルスに感染しているか否かを検証する検証処理を行う(S207)。そして、PLC1aは、検証結果をPC2へ送信し(S208)、検証結果を受信したPC2は検証結果を表示装置240に表示する(S209)。
なお、検証処理の結果、PLC1aによって、PLC1bがウィルスに感染している疑いがあると判定された場合のみ、PLC1aは、PLC1bがウィルスに感染している疑いがある旨の警告をPC2へ送信するようにしてもよい。
また、感染PLCであるPLC1aは、制御命令Aとは別の制御命令BをフレームとしてPI/O4に向けて送信し続けているとする(S210)。
このとき、HUB3は、そのフレームがスレーブからのフレーム送信であることを判別し、PI/O4には送信しない。
一方、HUB3は、PLC1aから受信したフレームをPLC1bへ転送する(S211)。
スレーブが制御命令を発行してもPI/O4を制御できないようにする方法としては、以下の3つの手法が考えられる。
(1)スレーブが自分自身をスレーブとして認識して、スレーブのソフトウェアが制御命令をPI/O4に発行しないようにする。
(2)PI/O4がマスタ・スレーブの両方から制御命令を受信しても、マスタからの制御命令のみを実行するようにする。
(3)制御命令などが含まれているフレームが、送信元がマスタであることを示すマスタ識別子を有しており、HUB3は、このマスタ識別子を有するフレームのみをPI/O4へ送信する、などである。
本実施形態で用いられるのは、(3)の手法であるが、(1)、(2)の手法が用いられてもよい。
また、マスタ識別の方法についても、マスタ識別子による方法に限定されない。HUB3やPI/O4にアドレスやノード番号を記憶する機能と、フレーム受信時に送信元の装置をチェックする機能を持たせることで、HUB3やPI/O4がフレームの送信元の装置を判定して、マスタからの受信フレームのみを送信・実行するようにすることもできる。マスタとスレーブの切り替え時には、PLC1がマスタ・スレーブ切替を通知する専用のフレームを送信して、HUB3やPI/O4に記憶されているマスタのアドレスやノード番号を変更するようにすればよい。
PLC1bは、HUB3から制御命令Bを受信すると(S212)、PLC1bのデータ生成プログラム115が制御命令Bを基に、検証用データ251を作成する。そして、検証プログラム116は、その検証用データ251を用いて、制御命令Bの送信元であるPLC1aがウィルスに感染しているか否かを検証する検証処理を行う(S213)。そして、PLC1bは、検証結果をPC2へ送信し(S214)、検証結果を受信したPC2は検証結果を表示装置240に表示する(S215)。
なお、検証処理の結果、PLC1bによって、PLC1aがウィルスに感染している疑いがあると判定された場合のみ、PLC1bは、PLC1aがウィルスに感染している疑いがある旨の警告をPC2へ送信するようにしてもよい。
マスタとなるPLC1は1つのPLC監視システム10において複数存在せず、マスタとなるPLC1は必ず1つである。そのため、ソフトウェア更新後に再起動したPLC1aが再度マスタ権を取得してマスタとなるためには、現在マスタであるPLC1bがマスタ権を放棄するのを待たなければならない。もし、PLC1aに感染しているウィルスが、PLC1bがマスタであるにもかかわらずPLC1aを強制的にマスタとしようとしても、マスタ権を得ることができなければPI/O4に対して有効な制御命令を発行することはできない。マスタ権の管理方法についてもいくつか手段が考えられるが、本実施形態ではマスタ権の管理はPLC1の制御プログラム111上で実行されているマスタ権制御プログラム114が行っている。そしてPI/O4は、前記したように、本実施形態では制御命令のフレームを送信するときに、そのフレームにマスタ識別子を付与してHUB3にマスタ・スレーブの認識をしている。
もしなんらかの方法でウィルスに感染したPLC1aが強制的にマスタ権を取得し、PLC1a,1bともマスタになった場合(両PLC1マスタ状態)、つまり、PLC1a,1bのそれぞれが有効な異なる制御を試みようとしている場合、機器であるHUB3あるいはPI/O4が両PLC1のマスタ状態を検出する。そして、HUB3あるいはPI/O4は、両PLC1のマスタ状態を通知するフレームをPLC1a,1bへ送信し、その通知を受けたPLC1a,1bを強制的に停止する。つまり、機器であるHUB3あるいはPI/O4は、それぞれのPLC1a,1b(制御装置)が、制御対象5へ、それぞれ有効な異なる制御を同時に試みようとしていることを検知すると、それぞれのPLC1a,1b(制御装置)が、1つの制御対象5へ、それぞれ有効な異なる制御を試みようとしていることを、それぞれのPLC1a,1bへ通知する。
こうすることで、制御対象5への、ウィルスの不正操作による影響を小さくすることができる。
マスタの切替の方法はPLC1に障害等が発生した場合の障害時切替のほかに、PC2がPLC1へマスタの切替を指示する計画的切替もある。また、ユーザが意図してPLC1のマスタを切り替える手法を用いている場合もあるが、この場合PC2に潜伏しているウィルスがユーザになりすましてマスタ切替命令をPLC1に発行するおそれがある。このときの不正操作防止手段としては、PLC1に固有のパスワードなどを設定しておき、パスワードを認証できたらマスタ切替命令を受け付けるようにすることが考えられる。
ここまで、HUB3がスレーブ(PLC1b)の制御命令をPI/O4に送信しないものとして説明してきたが、この役割を担う装置はHUB3ではなく、PI/O4としてもよい。PI/O4で制御命令の出力制御を行う場合には、PI/O4が制御命令をマスタとスレーブのPLC1の両方から受けとったとしても、HUB3と同様の判別方法を用いることによって、制御対象5への出力を制御することができる。(第3実施形態にて記載)
図6は、第1実施形態に係るPLC監視処理の別の動作例を示すタイミングチャートである。
図6におけるステップS301〜S306の処理は、図5のステップS201〜S206と同様であるため、説明を省略する。
HUB3経由で制御命令A(送信元:PLC1b)を受信したPLC1aは、受信した制御命令Aを基に、検証用データ251を作成する(S307)。この検証用データ251は、ユーザが視認して、異常の判別を行うためのデータである。
そして、PLC1aは検証用データ251をPC2へ送信し(S308)、PC2は、表示装置240に検証用データ251を表示する(S309)。ユーザは、検証用データ251がグラフ化されて表示装置204に表示されたものを目視して、PLC1bがウィルスに感染しているか否かを判別する。
この後のステップS310〜S312の処理は、図5のステップS210〜S212の処理と同様であるため、説明を省略する。
HUB3から制御命令B(送信元:PLC1a)を受信したPLC1bは、受信した制御命令Bを基に、検証用データ251を作成する(S313)。
そして、PLC1bは検証用データ251をPC2へ送信し(S314)、PC2は、表示装置240に検証用データ251を表示する(S315)。ユーザは、検証用データ251がグラフ化されて表示装置204に表示されたものを目視して、PLC1aがウィルスに感染しているか否かを判別する。
なお、PC2は、ステップS309で取得した検証用データ251(送信元:PLC1a)と、ステップS315で取得した検証用データ251(送信元:PLC1b)とを比較することによって、検証処理を行ってもよい。
(フレームフォーマット)
図7は、第1実施形態に係るPLC監視システムに用いられるフレームのフォーマット例を示す図である。
フレームは、以下の構成を有している。
フレーム開始フラグはフレーム内の他の部分に現れないユニークなパターンを使用し、フレームの開始であることを示している。宛先アドレスはフレームの宛先となる物理アドレスを示す。送信元アドレスはフレームの送信元の物理アドレスを示す。マスタ識別子は、該当するフレームの送信元であるPLC1がマスタであるか否かを示し、マスタからのフレームであればHUB3がPI/O4にフレームを送信する。フレーム長はフレーム全体の長さを示す。送信データ本体は制御命令などの情報を格納している。フレームチェックシーケンスはフレーム開始フラグから送信データの終了までの間でビットの反転などの予期しない変異が発生したかどうかをチェックする誤り検出コードである。
送信データ本体は、以下の構成を有している。
フレーム発行時刻はフレームが生成・発行された時刻を示しており、フレームの到達時間の計算に使用される。機器番号はフレームの送信先であるPI/O4の番号を示す。図1などでは簡略化のためにPI/O4は1つしか図示していないが、PI/O4が複数存在する場合や、PI/O4以外の機器が接続されている場合は、各機器ごとに固有の機器番号をつけて管理する。コマンドはPI/O4を操作するためのコマンドである。たとえば入力データの読み込み、出力データの書み込みなどである。データサイズは、その後に続く制御データの全体のサイズである。制御データはコマンドで使用されるデータである。制御データは、出力命令をPI/O4に発行したときにPI/O4から制御対象5へ出力させる値などを格納する。一方、入力命令において、PLC1からPI/O4へ送信するとき、制御データは空になるが、PI/O4が制御対象5から得た入力値をPLC1へ返送するときに入力値が格納される。プログラムフラグは、後に続くプログラム情報が存在するか否かを示している。プログラム情報が、その後につづく場合はプログラムフラグを「有効」にする。プログラム情報は、このフレームの発行元であるユーザプログラム112に関する情報を格納する。
プログラム情報は、以下の構成を有する。
プログラム番号は、ユーザプログラム112それぞれに一意に決められた番号が格納される。ユーザプログラム112にはその実行単位ごとに管理できるように固有のプログラム番号が付与される。プログラム更新時刻はユーザプログラム112を更新した時刻が格納される。プログラムサイズはユーザプログラム112の全体サイズが格納される。プログラム情報としては他にも、プログラムのオブジェクトを原文としたメッセージダイジェスト値(ハッシュ値)なども考えられる。プログラムが更新されると、プログラム更新時刻、プログラムサイズ、メッセージダイジェスト値等も異なる値に更新される。
(フレーム送信処理)
図8は、第1実施形態に係るPLCにおけるフレーム送信処理の詳細な手順を示すフローチャートである。この処理は、図5のステップS203、S210、図6におけるステップS303,S310のタイミングで行われる。
フィールドネットワーク7に送信されるフレームは、ユーザプログラム112がPI/O4を操作する制御命令を発行するときに作成・送信される。PI/O4を操作する制御命令を、PLC1に搭載されたソフトウェア(制御プログラム111)のシステムコールとして用意しておくことで、後記するように、ユーザプログラム112が制御命令をコールすると、ユーザプログラム112自身がコンテキストとして記憶装置150に退避された状態となる。この状態から、PLC1に搭載されたソフトウェア(制御プログラム111)は退避されたコンテキストの情報を取得することができる。PLC1上にて、制御命令を実行するPI/Oドライバ113を起動すると同時に、退避されたコンテキストから取得した情報から、呼び出し元のユーザプログラム112に関する情報(プログラム情報)をPI/Oドライバ113に渡してやれば、PI/Oドライバ113はそのプログラム情報をフレームに載せて送信することが可能である。そのフレームを受信した相手系のPLC1は受信したフレームのプログラム情報から、どのユーザプログラム112が発行した制御命令であるかが判別可能である。これにより、フレーム情報からユーザプログラム112を特定し、相手系のPLC1をユーザプログラム112単位で監視することができる。
PLC1上のユーザプログラム112が制御命令を実行する(S351)と、システムコールとしてPLC1の制御プログラム111に処理が移る。
次に、PLC1上の制御プログラム111が、それまで実行したいたユーザプログラム112の情報をコンテキストとして記憶装置150に退避させる(S352)。
そして、PLC1上の制御プログラム111が、退避されたコンテキストから情報を取得し(S353)、プログラム情報を作成する(S354)。
コンテキストとして退避される情報としては、ユーザプログラム112が実行していたメモリアドレスなどが含まれるので、制御プログラム111はコンテキストとして退避される情報から、例えば、ユーザプログラム112が実行していたメモリアドレスなどをユーザプログラム112の固有の番号(プログラム番号)とすることで、プログラム番号を決定することができる。同時に、ユーザプログラム112がPC2からPLC1にダウンロードされたときの時刻やサイズなどの情報が別のメインメモリ領域に保存してあれば、制御プログラム111はプログラム番号を検索することで、これらの情報を取得することができる。
続いて、制御プログラム1は、作成したプログラム情報を記憶装置150などに格納し(S355)、PI/Oドライバ113を起動し(S356)、プログラム情報をPI/Oドライバ113へ渡す。
そして、PLC1上のPI/Oドライバ113は、渡されたプログラム情報、および、実行された制御命令を取得して、取得したプログラム情報および制御命令を基にフレームを作成し(S357)、作成したフレームを送信する(S358)。このようにしてユーザプログラム112の情報を相手系のPLC1へ送信することができる。
一方、プログラム情報をPI/Oドライバ113へ渡した制御プログラム111は、退避していたコンテキストを復帰させる(S359)ことでユーザプログラム112を復帰し、復帰したユーザプログラム112に処理をリターンする(S360)。
そして、ユーザプログラム112は、制御処理を継続する(S361)。
(フレーム受信後処理)
図9は、第1実施形態に係るPLCにおけるフレーム受信後処理の手順を示すフローチャートである。この処理は、図5のステップS206,S207,S212,S213、図6のステップS306,S307,S312,S313のタイミングで行われる。
まず、PI/Oドライバ113が相手系のPLC1からのフレームを受信する(S401)。
すると、PLC1の制御プログラム111が監視プログラムテーブル151の更新処理を開始し(S402)、ユーザプログラム112に対して割込みを行い、実行中の処理を中断させる(S403)。
次に、PLC1の制御プログラム111はフレームのプログラム情報を取得し(S404)、取得したプログラム情報などを使用して監視プログラムテーブル151を更新する(S405)。ステップS405の詳細は図11で後記する。
監視プログラムテーブル151の更新が完了すると、制御プログラム111は更新処理を終了し(S406)、ユーザプログラム112の実行を再開させる(S407)。
その後、制御プログラム111は、監視プログラムテーブル151に登録されたユーザプログラムの挙動をチェックする検証処理を開始し(S408)、ユーザプログラム112に対して割込みを行い、実行中の処理を中断させる(S409)。
そして、制御プログラム111は監視プログラムテーブル151のレコードを参照し(S410)、データ生成プログラム115が参照したレコードに格納されているデータを基に、監視対象となっているユーザプログラムの検証用データ251を作成し(S411)、検証プログラム116が、その検証データ251を基に検証を行う(S412)。このとき、図6に示すようにPC2で検証を行う場合、検証プログラム116は検証処理を行わずに、ステップS411の検証データ251の作成にとどめておき、その検証データ251をPC2へ送信するようにしてもよい。
そして、ステップS412の検証処理が完了すると、制御プログラム111は検証結果をPC2へ送信し、制御プログラム111は検証処理を終了し(S413)、ユーザプログラム112の実行を再開させる(S414)。
なお、ステップS408〜S414の処理は、一定時間間隔毎に周期的に行われる。
PLC1は、このようにして監視プログラムテーブル151を更新・参照して検証の処理を実施する。
(検証データ例)
検証用データ251の詳細を以下説明する。
検証の方法として、PLC1にあらかじめ検証パターンを設定してPLC1内部で検証する方法と、PC2にユーザプログラムの挙動をグラフ化するアプリケーションを用意してユーザプログラムの妥当性をユーザ自身が判断する方法とが考えられる。
ウィルスがPLC1に潜伏する方法としてはいくつか考えられるが、既存のユーザプログラム112の書き換えや、あるいはまったく別のユーザプログラム112を新規に作成する、などがある。そのため、ウィルスが潜伏している可能性のあるユーザプログラム112は、更新されている形跡のあるものに限られてくる。しかし、本実施形態の状態において、PLC1aはソフトウェア(ユーザプログラム112)の更新を行った状態であるので、計画的にユーザがユーザプログラム112を更新しているのか、PLC1aに潜伏しているウィルスが更新しているのかの判断をユーザはできない。
そこで、本実施形態では片系のPLC1のユーザプログラム112が変更された形跡が見られる場合は、そのユーザプログラム112を別系のPLC1で監視し、そのユーザプログラム112の挙動に異常があると判断したら、そのユーザプログラム112はウィルスにより改ざんされたと判断するようにする。検証用データ251は、監視の対象となるPLC1において変更された形跡のあるプログラムの挙動を、監視を行うPLC1またはPC2の記憶装置150、250上に記録したものであり、そのプログラムがウィルスにより改ざんされたかソフトウェアの更新で変更されたかを判断する手段となる。
図10は第1実施形態に係るPLC監視システムによる検証データをグラフ化した例を示す図である。
検証用データ251は後記する監視プログラムテーブル151から、特定のユーザプログラム112が特定のアクションを行ったときのパラメータを格納したものである。図10の例は、監視プログラムテーブル151に記録されたユーザプログラム112が特定のPI/O4へ発行した出力値を、データ生成プログラム115が検証用データ251を数字の羅列(CSVファイルなど)として抽出して、PC2の表示装置240にグラフ化して表示した例を示している。
なお、図10において、縦軸がユーザプログラム112の出力値、横軸はユーザプログラム112におけるコマンドの実行回数を示している。
破線1011と破線1012はあらかじめユーザが設定した出力値が許容される上限と下限を示している。またプロット1001〜1009は1回目から9回目までのユーザプログラム112の出力値を示している。この例において、プロット1001〜1004は上限1011と下限1012の間に収まっており、許容範囲内であることがわかる。しかし、プロット1005,1006,1008,1009は上限1011より高い出力値となっており、許容範囲外の値をとっていることがわかる。このグラフから、ユーザや、検証プログラム116はユーザプログラム112がウィルスによって改変されたことによって、許容範囲外の値をとるようなユーザプログラム112となってしまった可能性があると検証できる。
一方、プロット1007はその前後のプロットと比較すると明らかに小さな値である。これも、ユーザプログラム112がウィルスによって改変され、急激に出力値を上下させて制御対象5に過剰な負荷を与えようとしている可能性があると、ユーザや、検証プログラム116が判断することができる。
このように、監視プログラムテーブル151に登録されたユーザプログラム112の挙動をグラフ化することによって、ユーザや、検証プログラム116がウィルスの潜伏をチェックすることができるようになる。また、検証プログラム116が検証を行う際には、PLC1に前記したような検証の基準を設定しておき、検証プログラム116が、設定されている基準に基づいて、検証を行うようにするとよい。そうすれば、前記した出力値の許容範囲チェック、出力値の連続性のチェックなどをPLC1の検証プログラム116や、PC2の検証プログラム213がチェックし、異常であればPC2に警告を表示するようにすることができる。チェックするパラメータとして本実施形態ではPI/O4の出力値を例として示したが、チェックするパラメータはそのほかにも様々考えられる。例えば、特定の命令の発行の頻度をチェックし、異常な頻度で発行されていればウィルスによる不正操作として警告する、などが考えられる。
また、監視プログラムテーブル151をログ情報としてPC2に提供することで、このログ情報からウィルスの挙動を解析するようにしてもよい。なお、検証を行ったPLC1が、ウィルスが潜伏していないにもかかわらず、ウィルスが潜伏していると判断してしまう可能性も考えられるので、警告を発するにとどめ、可用性を向上するためシステムの停止などの状態にはしないようにすることが望ましい。それ以外にも、ウィルスが潜伏していると判断されたプログラムのみ、あるいは、そのウィルスによって操作されているPI/O4のみが停止させられ、縮退運転状態にさせられることもできる。この場合、制御プログラム111は、ウィルスが潜伏しているユーザプログラム112の番号を検証プログラム116から通知を受け、そのユーザプログラム112のプロセスを停止させる処理を行う。
(監視プログラムテーブル更新処理)
図11は、第1実施形態に係る監視プログラムテーブル更新処理の手順を示すフローチャートである。この処理は、図9のステップS405のタイミングで行われる。
監視プログラムテーブル151の作成・更新は以下のように行われる。相手系PLC1からの受信フレームから得た相手系のユーザプログラム112の情報と、自系のユーザプログラム112の情報とを比較する。相手系には存在するが自系には存在しない、あるいは相手系と自系とで同一プログラム番号でもユーザプログラム112の情報に相違がある場合は、そのプログラムの情報を監視プログラムテーブル151に登録する。一度監視プログラムテーブルに登録されたユーザプログラム112は、以後相手系から情報を受信するたびに監視プログラムテーブルへ情報を追加・更新する。このようにして、ユーザプログラム112は変更が行われたユーザプログラム112の挙動を監視プログラムテーブル151へ記録し続ける。
PLC1上の制御プログラム111は、相手系のPLC1からフレームを受信すると(S501)、受信したフレームの内容を取得し、フレームに格納されているプログラム番号と同じものを監視プログラムテーブル151の中から検索する(S502)。
そして、制御プログラム111は、ステップS502の結果、監視プログラムテーブル151に該当するプログラム番号が登録されているか否かを判定する(S503)。
ステップS503の結果、フレームに格納されているプログラム番号が監視プログラムテーブル151に、すでに登録されている場合(S503→Yes)、制御プログラム111はステップS510へ処理を進める。
ステップS503の結果、フレームに格納されているプログラム番号が監視プログラムテーブル151に登録されていない場合(S503→No)、制御プログラム111は、処理対象となっているプログラム番号と同一のプログラム番号が自PLC1において存在するか(ダウンロード済みか)否かを検索する(S504)。
ステップS504の処理は、自PLC1の中のユーザプログラム112の検索のために、自PLC1の記憶装置150などに格納されている、ダウンロードされたユーザプログラム112の情報がプログラム番号でソートされたプログラム一覧表などを用いるとよい。
制御プログラム111は、ステップS504における検索の結果、処理対象となっているプログラム番号に該当するユーザプログラム112が自PLC1にあるか否かを判定する(S505)。
ステップS505の結果、処理対象となっているプログラム番号に該当するユーザプログラム112が自PLC1にない場合(S505→No)、制御プログラム111はステップS509へ処理を進める。
ステップS505の結果、処理対象となっているプログラム番号に該当するユーザプログラム112が自PLC1にある場合(S505→Yes)、制御プログラム111は、ユーザプログラム112が変更されているかを検査するため、フレームの中からプログラム更新時刻(相手系のPLC1における更新時刻)とプログラムサイズを取得する(S506)。
続いて、制御プログラム111は取得した更新時刻およびプログラムサイズと、ステップS504で検索した自PLC1のユーザプログラム112における更新時刻およびプログラムサイズとを比較する(S507)。
そして、制御プログラム111は、ステップS507の結果、相手系のPLC1における更新時刻およびプログラムサイズの双方について、自PLC1における更新時刻およびプログラムサイズと同じであるか否かを判定する(S508)。
ステップS508の結果、更新時刻およびプログラムサイズの少なくとも一方が異なる場合(S508→No)、ユーザプログラム112は変更されているとみなし、制御プログラム111はフレームに格納されているプログラム番号を監視プログラムテーブル151の新しいレコードとして追加する(S509)。
一方、ステップS508の結果、更新時刻およびプログラムサイズの双方が同じである場合(S508→Yes)、ユーザプログラム112は変更されていないとみなし、制御プログラム111は監視プログラムテーブル更新処理を終了する。
次に、制御プログラム111は、フレームに格納されているコマンドを取得して(S510)、そのコマンドが制御対象5に対して出力を実行するコマンド(出力コマンド)であるか否かを判定する(S511)。
ステップS511の結果、出力コマンドではない場合(S511→No)、制御プログラム111は監視プログラムテーブル更新処理を終了する。
ステップS511の結果、出力コマンドである場合(S511→Yes)、制御プログラム111は処理対象となっているコマンド、コマンドを発行したPI/O4の番号、そのコマンドを発行したときの制御データを監視プログラムテーブル151の該当するプログラム番号のレコードに追加登録する処理を行う(ステップS512)。
本実施形態では、制御プログラム111はプログラムの更新が行われているか否かの判定(S508)をプログラムのサイズと更新時刻を用いて行っている。プログラムのサイズと更新時間以外にも、メッセージダイジェスト値などのほかのプログラム情報を入手できるならば、判定に用いることができる。しかし、プログラムのサイズだけ、あるいは、メッセージダイジェスト値だけで判定してしまうと、変更されていてもサイズが同一である、異なるプログラムでもメッセージダイジェスト値が一致している、などが考えられ、プログラムの改変を見逃す可能性がある。判定には複数のプログラム情報を用いることが望ましい。
本実施形態では、出力コマンドのみが監視プログラムテーブル151に登録されている。なぜなら、ウィルスが制御対象5に対して望ましくない動作を行うことができるのは、出力コマンドに限られるためである。それ以外のコマンドでは制御対象5を操作するようなことはできないので、本実施形態では、監視プログラムテーブル151に登録していないが、出力コマンド以外のコマンドが監視プログラムテーブル151に登録されるようにしてもよい。例えば、PLC1のマスタ・スレーブの切替命令や、稼動中のPI/O4のデバイス停止・リセット命令、停止中のPI/O4デバイスの起動命令、PI/O4の設定変更命令などもPI/O4への操作になるので、これらの情報が監視プログラムテーブル151に登録されるようにするとよい。
(監視プログラムテーブル)
図12は、第1実施形態に係る監視プログラムテーブルの構成例を示す図である。
PLC1あるいはPC2は、検証のため、ユーザプログラム112の挙動を監視するので、監視対象となるユーザプログラム112を監視プログラムテーブル151で管理する。図12に示すように、監視プログラムテーブル151には、監視するユーザプログラム112のプログラム番号、プログラム更新時刻、プログラムサイズ、コマンド、機器番号、制御データが格納されている。
制御プログラム111は、フレームが送信されるたびにコマンド、機器番号などの情報を監視プログラムテーブル151に登録していく。監視されるユーザプログラム112の対象となるのは、自PLC1には存在しないが相手系のPLC1には存在するユーザプログラム112や、自PLC1と相手系のPLC1とでユーザプログラム112の更新時刻やサイズが異なるものである。このようなユーザプログラム112は、ソフトウェアの計画的な更新のときに追加・変更していることもあるが、潜伏しているウィルスがユーザプログラム112を追加・変更している可能性もある。よって、PLC1あるいはPC2はそのようなユーザプログラム112の挙動を監視する。
図11に示す処理が行われることによって、監視プログラムテーブル151に、ウィルスが潜伏している可能性のあるユーザプログラム112による出力コマンドの履歴が記録されていくことになる。図12の1行目の例では、プログラム番号が0x0005のユーザプログラム112の更新時刻が2011年8月1日14時40分10秒であり、ユーザプログラム112のサイズが428バイト、命令の内容としては、1回目に、機器番号が0xB0000B80のアナログ出力デバイス(AO)にロングワードサイズ(LONG)で0xFFFF1111を書き込み(WRITE)、2回目に機器番号が0xB0000140のデジタル出力デバイス(DO)にワードサイズ(WORD)で0x0000186Dを書き込み(WRITE)したことがわかる。プログラム番号が同じであるのに、出力コマンドが異なっているのは、同じユーザプログラム112でも、実行する毎に異なるコマンドが実行されることがあるためである。
図12には一部の情報しか記録されていないが、監視対象のユーザプログラム112の挙動をより細かく監視するために、フレーム発行時刻、使用しているデータのアドレスなどが監視プログラムテーブル151に登録されてもよい。
監視プログラムテーブル151が作成されたら、ユーザの要求あるいは一定周期のタイマなどをトリガにして、データ生成プログラム115が検証用データ251を生成する。データ生成プログラム115が抽出するデータはユーザによって自由にカスタマイズすることが可能である。例えば、図10の例では、特定のユーザプログラム112が特定のPI/O4に出力命令を発行したときの出力値(制御データ)を抽出している。
(第1実施形態のまとめ)
第1実施形態によれば、二重化構成の一方のPLC1が検証を行ったり、検証用データ251を作成したりすることで、ウィルスに感染している疑いのある他方のPLC1をチェックすることができる。
このように、本実施形態によれば、多重化構成のPLC1のうちの1つにウィルスが潜伏していても、それを多重化構成の他のPLC1が検出することができるので、PLC1のセキュリティを向上させることができる。また、ダウンロードされたユーザプログラム112にウィルスが感染している可能性があるという、PLC1におけるウィルスの特性に着目し、ダウンロードしたユーザプログラム112と、ダウンロードを行っていないユーザプログラム112の挙動を検証する手法をとっているため、ウィルス対策パッチなどの場当たり的な対策よりも根本的な対策が可能となる。
本実施形態では、ユーザプログラム112の更新時刻やサイズの情報が、ウィルスに感染しているPLC1で正しく取得でき、その情報が検証を行うPLC1へ問題なく送信できる場合を想定して説明してきた。ウィルスが感染する場所が、ユーザが利用するプログラム領域(ユーザプログラム113)などであれば問題ないが、PLC1のシステムプログラムの領域(制御プログラム111、PI/Oドライバ113、マスタ権制御プログラム114、データ生成プログラム115、検証プログラム116)に感染してしまうと、プログラムの更新時刻やサイズの情報をウィルスに都合のいいように書き換えられてしまう可能性があり、フレームの内容も書き換えられてしまうことも考えられる。そのため、ソフトウェアの更新を行うときには、これらのシステムプログラムの領域は書き込み禁止の状態にして更新を行い、ウィルスが侵入できないようにしておくことが本実施形態の前提となる。
また、本実施形態に示す方法で検証処理を実施したのち、ウィルスの感染が見られなかった場合には、PLC監視システム10は、ソフトウェア更新のために停止していたPLC1aと一時的にマスタとなっていたPLC1bのマスタ・スレーブを切り替え、ソフトウェア更新前の状態である、PLC1aをマスタ、PLC1bをスレーブに戻すことができる。
ただし、ウィルスに感染しているユーザプログラム112が動作しない限り、相手系PLC1はそのユーザプログラム112の情報を取得できない。これにより、前記のマスタ・スレーブ切り替えの時点までウィルスに感染したユーザプログラム112が動作しないと、ウィルスが潜伏したPLC1がマスタとなり、ウィルスに感染したマスタが制御対象5を制御できてしまう恐れがある。そのような事態を避けるため、ダウンロード実行後には登録されたユーザプログラム112をすべて強制的に実行させるようにしておくことで、すべてのユーザプログラム112に対して検証処理を行うことが可能である。
監視プログラムテーブル151に登録されている内容から、ウィルスが潜伏している可能性がある場合には、前記したように、検証を行ったPLC1がPC2へ警告を発行し、ログ情報をPC2に提供する。
ウィルスが潜伏しているときの挙動としては、ユーザプログラム112の更新時刻が他のユーザプログラム112の更新時刻と明らかに異なっている場合や、制御データ値が異常に大きいあるいは小さい場合、異常な周期で特定のデータを書き込んでいる場合、無効なコマンドを発行している場合などが考えられる。制御対象5によって正常な場合の挙動が異なり、正常な場合とウィルスが潜伏している場合の区別は難しいので、使用環境やそのときの状況に応じてユーザが、検証機能をカスタマイズできることが望ましい。
[第2実施形態]
これまで第1実施形態では、ソフトウェア更新中にスレーブがウィルスに感染している場合を前提にしてきたが、次に稼動中にマスタがウィルスに感染した場合について説明する。
第1実施形態ではソフトウェアの更新中のスレーブに限定していたが、PLC1が稼動中にPC2とPLC1が通信を行う手段が存在していれば、ソフトウェア更新中以外でもPC2を経由して、マスタ・スレーブ両系のPLC1がウィルスに感染する可能性がある。
第1実施形態で説明したように、マスタ・スレーブともに相手系のプログラムの動作を検証する手段を備えているので、相手系が持っているユーザプログラム112の中で自系と異なっているものが存在していれば、PLC監視システム1は、異常を検出することが可能である。
マスタがウィルスに感染している場合、マスタがウィルスに感染していることを検証・検出するのはスレーブである。ただし、ウィルスに感染したマスタが制御対象5を制御することができる状態になっているので、好ましくない状態となっている。そのため、スレーブは、制御命令をHUB3を経由してマスタから取得し、それを解析して即座に検証を行わなければならない。また、ユーザは、スレーブから、マスタにウィルスが潜伏している、あるいは潜伏している可能性があるという警告を受けたら、即座にPLC1の停止などの手段を講じてウィルスの影響を回避しなければならない。
マスタがウィルスに感染すると、スレーブが感染した場合とは別の問題も発生する。通常、2重系でホットスタンバイ状態を維持するため、マスタからスレーブに対してデータのコピーを行うことによって、データの同期化を行っている。もし、ウィルスに感染しているマスタから正常なスレーブに対してデータのコピーが行われた場合、第1実施形態で説明した方法だけではウィルスを検出することが困難である。なぜなら、ウィルスに感染したPLC1が、検証を行うPLC1のデータを上書きしてしまうため、正常なデータが失われてしまう可能性があるためである。
そこで、第2実施形態では、スレーブがマスタから受信する同期化データの妥当性を検証し、妥当であれば同期化データを受け入れ、妥当ではない場合は警告をPC2に発行するようにする。
図13は、第2実施形態に係るPLC監視処理の動作を示すタイミングチャートであり、マスタが感染した状態からスタートしている。なお、図13の処理は、マスタ権がPLC1bからPLC1aに戻り、PLC1aが制御対象5を制御している状態である。この時点でPLC1aがウィルスに感染している場合の処理を示す。
PLC1がマスタとスレーブでデータを同期化するタイミングは、PLC1が制御演算を実行し、その演算結果をデータ領域に格納するタイミングである。この制御演算のトリガとなるのは、PLC1が制御対象5から物理情報を取得するために、PI/O4へ入力要求を発行したときである。
PLC1a(マスタ)は制御対象5を制御するための入力要求AをフレームとしてPI/O4へ送信する(S601)。
入力要求Aを受信したHUB3は、その入力要求AをPI/O4およびPLC1b(スレーブ)へ転送し(S602)、PLC1bは入力要求Aを受信する(S603)。
PI/O4は入力要求Aを受信すると、その入力要求Aに従って制御対象5の制御を実行し(S604)、その応答である入力応答AをHUB3へ送信する(S605)。
PI/O4から入力応答Aを受信したHUB3は、PLC1a(マスタ)とPLC1b(スレーブ)へ入力応答Aを転送する(S606)。
マスタとスレーブの両PLC1は、通常は同じユーザプログラム112が格納されており、同じ入力応答を基に同じユーザプログラム112で演算するので、結果も同じになるはずである。しかし、どちらかがウィルスに感染していれば、プログラムの内容が異なるために、異なる結果が出力されてしまう。
そこで、PLC1bは、PI/O4から入力応答Aを受信すると(S607)、受信した入力応答Aと、PLC1aにおけるユーザプログラム112と同じユーザプログラム112を使って、PLC1aから送信される同期化データと比較するための比較用データを作成する(S608)。
一方、PLC1aは、PI/O4から入力応答Aを受信すると(S609)、ユーザプログラム112を用いて、PLC1bへ送信するための同期化データを作成する(S610)。
そして、PLC1aは同期化データをHUB3に向けて送信する(S611)。
HUB3は、送信された同期化データをPLC1bへ転送する(S612)。
PLC1bは、PLC1aから送信された同期化データと、ステップS608で作成しておいた比較用データを比較する比較処理を行う(S613)。
そして、PLC1bは比較処理の結果(比較結果)をPC2へ送信し(S614)、比較結果を受信したPC2は、受信した比較結果を表示装置240に表示する(S615)。
PLC1aからPI/O4へ発行した入力要求AはHUB3のネットワーク中継機能により、フィールドネットワーク7を介して、PLC1bのPI/Oドライバ113が受け取ることができる。PLC1aからPLC1bへの同期化データの通信は、送信フレームの宛先がPI/O4ではなく、PLC1bとなっているので、PLC1bが自分宛のフレームとして受信する。PI/Oドライバ113とネットワークの構造により、PLC1aとPLC1bの間で、情報の共有が可能である。
なお、同期化データが利用するパスは、マスタのPLC1からスレーブのPLC1へのデータのコピーだけでなく、生存監視のための用途としても用いることができる。スレーブPLC1がデータ同期化フレームを受信できないときは、マスタPLC1が停止したと考えて、マスタ権を取得する処理や、マスタPLC1に対して生存確認をする処理を行う。
なお、図13に示す処理では、比較処理の結果をPC2へ送信しているが、比較用データが一致していない場合のみ、スレーブが警告をPC2へ送信するようにしてもよい。
また、図13では、スレーブが比較処理を行っているが、ウィルスに感染しているマスタで比較処理が行われてもよい。また、図13に示す処理は一定時間毎に行われる処理である。
ここで、同期化データの送信に使用するフレーム(同期化フレーム)のフォーマットは図7に示すものと同一である。同期化フレームにおいては、機器番号としてデータ同期化の対象となるスレーブの番号が設定される。なお、機器番号には、その機器の番号だけでなく、ユーザプログラム112が実行されているメインメモリ110のアドレスも含んだ値になっているので、データ同期化を開始するメインメモリ110のアドレスの先頭も機器番号からわかるようになっている。また、コマンドはデータ同期化のためのコマンドを格納する。これはPI/O4のコマンドとは異なるコマンドである。同期化フレームにおける制御データはマスタからスレーブへコピーして同期化するためのデータ(同期化データ)である。
また、PLC1からPI/O4へ入力要求が発行されている。また、PI/O4が送信してきた入力応答のフレームには、プログラム番号が格納されている。これにより、スレーブは入力要求がどのユーザプログラム112を使用して演算されるべきかを知ることができる。つまり、スレーブは、プログラム番号と入力要求を手がかりに、同期化データと同じユーザプログラム112を使用して、同期化データと比較するためのデータ(比較用データ)を作成することができる。
なお、1つのユーザプログラム112の中で複数の入力要求を発行することも考えられる。その場合には、ユーザプログラム112内のどの命令に対応するかを特定できるように、入力要求を発行するごとにユーザプログラム112が分割されるか、入力要求ごとに枝番号が付与されて、入力要求が管理されてもよい。
(第2実施形態のまとめ)
第2実施形態によれば、マスタがウィルスに感染した状態で、制御対象5を制御する状態になっても、マスタがスレーブに送信する同期化データを利用することで、ウィルスの感染を検証することができる。また、ウィルス対策パッチなどの特別な対策が不要となる。
[第3実施形態]
ここまで、PLC1が2つの2重系で、HUB3が接続されている場合について説明してきたが、それ以外の場合でもPLC1で検証を行うことが可能である。
図14は、第3実施形態に係るPLC監視システムにおける情報の流れを示す図である。
図14のPLC監視システム10aはPLC1(1A,1B,1C)が3つの3重系で、HUB3がなくPI/O4とPLC1(1A,1B,1C)のそれぞれが直接接続して通信を行う場合におけるPLC監視システム10aの構成例である。なお、図14において、図1と同様の構成要素については同一の符号を付して説明を省略する。
第1実施形態と同様に、PC2がウィルスに感染し、PLC1Aにウィルスがダウンロードされてしまった状態を例に説明する(ウィルスに感染した機器をハッチングで示す)。
制御命令が有効なものであるとき、PI/O4が制御対象5に出力を行う判断方法は、主に以下の2通りが考えられる。
(a)前記した実施形態と同様に、PLC1A〜1Cのうち、マスタ権を持っているPLC1の制御命令や、入力要求のみを有効な制御命令として認識する。
(b)3つ(あるいは複数)のPLC1A〜1Cからの制御命令や、入力要求をPI/O4がすべて受信し、3つのPLC1A〜1Cからの制御命令や、入力要求のうち2つ以上が同じ命令であれば、その制御命令や、入力要求を有効なものとして認識し、制御対象5へ出力する。つまり、PLC監視システム10aが多数決に従って有効な制御命令を判別する。そして、他の2つと異なる命令を発行したPLC1があればそれは何らかの原因(例えば、ウィルスに感染している)が考えられるので、ユーザは、そのPLC1を停止させるなどの対策を行う。なお、3つのPLC1A〜1Cから送信される制御命令や、入力要求は、同一種のユーザプログラムによる制御命令や、入力要求である。
前記(a)、(b)の場合も、ステップS700でウィルスに感染したPLC1AはステップS701でPI/O4へ制御命令を送信する。PI/O4は、この制御命令をPLC1B,1Cへ転送する(S711,S712)。
同様に、PLC1B,1Cは、ステップS702,S703でPI/O4へ制御命令を送信し、PI/O4は、この制御命令を他のPLC1A〜1Cにも送信する点は同じである(S711,S712,S721,S722,S723)。
ここで、PLC1A,1B,1Cは受信した制御命令とそこに付与されたプログラム情報を基に、図3や、図4や、図7などで示した手順により検証を行ってもよい。
(第3実施形態のまとめ)
第3実施形態によれば、多重系PLCのうち1つがウィルスに感染していても他の健全なPLC1が検証を行うことができる。
特に、多数決を用いることで、ウィルスに対する迅速な対応が可能となる。
なお、第2実施形態、第3実施形態においても、PLC1、PC2のハードウェア構成は、図2、図3に示したものと同様であり、各プログラム111〜116,211〜213は、メインメモリ110,210に展開され、CPU120,220によって実行されている。
1 PLC(制御装置)
2 PC(管理装置)
3 HUB(機器)
4 PI/O(機器)
5 制御対象
6,7,8 フィールドネットワーク
10 PLC監視システム(制御装置監視システム)
110 PLCのメインメモリ
111 PLCの制御プログラム
112 ユーザプログラム(プログラム)
113 PI/Oドライバ
114 マスタ権制御プログラム
115 データ生成プログラム
116 PLCの検証プログラム
120 PLCのCPU
130 PLCの入力装置
140 出力装置
150 PLCの記憶装置
151 監視プログラムテーブル
210 PCのメインメモリ
211 PCの制御プログラム
212 ダウンロードプログラム
213 PCの検証プログラム
220 PCのCPU
230 PCの入力装置
240 表示装置
250 PCの記憶装置
251 検証用データ(動作検証用のデータ)

Claims (11)

  1. 制御対象を制御する制御装置の動作状態を監視する前記制御装置の監視方法であって、
    複数の前記制御装置が設置されることで、前記制御装置は多重化されており、
    各制御装置は、中継装置を介して、互いに接続されており、
    前記中継装置は、一の制御装置から受信した制御情報を、他の制御装置へ転送し、
    前記制御情報には、前記制御対象の制御に用いる制御データと、当該制御データの生成元となっているユーザプログラムの属性情報とが含まれており、
    前記制御装置は、
    前記中継装置を介して、自身とは別の制御装置から送信された前記制御情報に含まれる前記ユーザプログラムの属性情報を用いて、ウィルス検証に関する検証処理を行う
    ことを特徴とする監視方法。
  2. 制御対象を制御する制御装置の動作状態を監視する前記制御装置の監視方法であって、
    複数の前記制御装置が設置されることで、前記制御装置は多重化されており、
    各制御装置は、中継装置を介して、互いに接続されているとともに、前記制御装置の管理を行う管理装置が各制御装置に接続されており、
    前記中継装置は、一の制御装置から受信した制御情報を、他の制御装置へ転送し、
    前記制御情報には、前記制御対象の制御に用いる制御データと、当該制御データの生成元となっているユーザプログラムの属性情報とが含まれており、
    前記管理装置は、
    各制御装置から送信された前記制御情報に含まれるユーザプログラムの属性情報を用いて、ウィルス検証に関する検証処理を行う
    ことを特徴とする監視方法。
  3. 前記制御装置が、
    前記検証処理の結果を、管理装置へ送信し、
    前記管理装置が、
    受信した前記検証処理の結果を表示装置に表示する
    ことを特徴とする請求項に記載の監視方法。
  4. 前記制御情報には、前記ユーザプログラムの出力値まれており、
    前記制御装置は、
    前記出力値を基に、前記検証処理を行う
    ことを特徴とする請求項1から請求項3のいずれか一項に記載の監視方法。
  5. 前記制御装置は、
    前記制御装置から前記制御対象へ送信される情報を、前記プログラム単位毎に格納し、
    前記プログラム単位毎に格納されている情報を基に、前記検証処理を行う
    ことを特徴とする請求項1から請求項4のいずれか一項に記載の監視方法。
  6. 制御対象を制御する制御装置の動作状態を監視する前記制御装置の監視方法であって、
    複数の前記制御装置が設置されることで、前記制御装置は多重化されており、
    前記多重化された制御装置は、少なくとも第1の制御装置および第2の制御装置を有しており、
    各制御装置は、中継装置を介して、互いに接続されており、
    前記第1の制御装置は、
    前記第1の制御装置で実行されているユーザプログラムの属性情報を含み、前記第2の制御装置へ送信するための同期化データを作成し、
    前記作成した同期化データを、前記中継装置へ送信し、
    前記中継装置は、
    前記同期化データを、前記第1の制御装置から前記第2の制御装置へ転送し、
    前記第2の制御装置は、
    前記第2の制御装置で実行されている前記ユーザプログラムと同様のユーザプログラムの属性情報を含む比較用データを作成し、
    前記中継装置を介して、前記第1の制御装置から送信された同期化データに含まれているユーザプログラムの属性情報と、前記比較用データに含まれているユーザプログラムの属性情報とを比較することによって、前記第1の制御装置におけるウィルス検証に関する検証処理を行う
    ことを特徴とする監視方法。
  7. 制御対象を制御する制御装置の動作状態を監視する前記制御装置の監視方法であって、
    3つ以上の前記制御装置が設置されることで、前記制御装置は多重化されており、
    各制御装置は、中継装置を介して、互いに接続されており、
    前記中継装置は、一の制御装置から受信した制御情報を、他の制御装置へ転送し、
    前記制御情報には、前記制御対象の制御に用いる制御データと、当該制御データの生成元となっているユーザプログラムの属性情報とが含まれており、
    前記中継装置は、
    それぞれの前記制御装置から、同一種のプログラムを用いた制御情報を取得すると、
    前記取得した制御情報が一致していない場合、多数決に従って、多数の方の制御情報を正しい制御情報と判定し、
    前記制御装置が、
    前記中継装置を介して、自身とは別の制御装置から送信された前記制御情報に含まれる前記ユーザプログラムの属性情報を用いて、ウィルス検証に関する検証処理を行う
    ことを特徴とする監視方法。
  8. 制御対象を制御する制御装置の動作状態を監視する前記制御装置の監視方法であって、
    複数の前記制御装置が設置されることで、前記制御装置は多重化されており、
    各制御装置は、中継装置を介して、互いに接続されており、
    前記中継装置は、一の制御装置から受信した制御情報を、他の制御装置へ転送し、
    前記制御情報には、前記制御対象の制御に用いる制御データと、当該制御データの生成元となっているユーザプログラムの属性情報とが含まれており、
    前記中継装置は、
    それぞれの前記制御装置が、前記制御対象へ、それぞれ有効な異なる制御を試みようとしていることを検知し、
    前記それぞれの制御装置が、1つの制御対象へ、それぞれ有効な異なる制御を試みようとしていることを、前記それぞれの制御装置へ通知し、
    前記制御装置は、
    前記中継装置を介して、自身とは別の制御装置から送信された前記制御情報に含まれる前記ユーザプログラムの属性情報を用いて、ウィルス検証に関する検証処理を行う
    ことを特徴とする監視方法。
  9. 制御対象を制御する制御装置の動作状態を監視する監視システムであって、
    前記監視システムは、前記制御装置と、前記中継装置とを有しており、
    複数の前記制御装置が設置されることで、前記制御装置は多重化されており、
    各制御装置は、中継装置を介して、互いに接続されており、
    前記中継装置は、一の制御装置から受信した制御情報を、他の制御装置へ転送し、
    前記制御情報には、前記制御対象の制御に用いる制御データと、当該制御データの生成元となっているユーザプログラムの属性情報とが含まれており、
    前記制御装置は、
    前記中継装置を介して、自身とは別の制御装置から送信された前記制御情報に含まれる前記ユーザプログラムの属性情報を用いて、ウィルス検証に関する検証処理を行う
    とを特徴とする監視システム。
  10. 制御対象を制御する制御装置の動作状態を監視する監視システムであって、
    前記監視システムは、前記制御装置と、前記中継装置とを有しており、
    複数の前記制御装置が設置されることで、前記制御装置は多重化されており、
    前記多重化された制御装置は、少なくとも第1の制御装置および第2の制御装置を有しており、
    各制御装置は、中継装置を介して、互いに接続されており、
    前記第1の制御装置は、
    前記第1の制御装置で実行されているユーザプログラムの属性情報を含み、前記第2の制御装置へ送信するための同期化データを作成し、
    前記作成した同期化データを、前記中継装置へ送信し、
    前記中継装置は、
    前記同期化データを、前記第1の制御装置から前記第2の制御装置へ転送し、
    前記第2の制御装置は、
    前記第1の制御装置で実行されている前記ユーザプログラムと同様のユーザプログラムの属性情報を含む比較用データを作成し、
    前記中継装置を介して、前記第1の制御装置から送信された同期化データに含まれているユーザプログラムの属性情報と、前記比較用データに含まれているユーザプログラムの属性情報とを比較することによって、前記第1の制御装置におけるウィルス検証に関する検証処理を行う
    とを特徴とする監視システム。
  11. 制御対象を制御する制御装置の動作状態を監視する監視システムであって、
    前記監視システムは、前記制御装置と、前記中継装置とを有しており、
    つ以上の前記制御装置が設置されることで、前記制御装置は多重化されており
    各制御装置は、中継装置を介して、互いに接続されており、
    前記中継装置は、一の制御装置から受信した制御情報を、他の制御装置へ転送し、
    前記制御情報には、前記制御対象の制御に用いる制御データと、当該制御データの生成元となっているユーザプログラムの属性情報とが含まれており、
    前記中継装置は、
    それぞれの前記制御装置から、同一種のプログラムを用いた制御情報を取得すると、
    前記取得した制御情報が一致していない場合、多数決に従って、多数の方の制御情報を正しい制御情報と判定し、
    前記制御装置が、
    前記中継装置を介して、自身とは別の制御装置から送信された前記制御情報に含まれる前記ユーザプログラムの属性情報を用いて、ウィルス検証に関する検証処理を行う
    とを特徴とする監視システム。
JP2012003931A 2012-01-12 2012-01-12 監視方法および監視システム Active JP5756412B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012003931A JP5756412B2 (ja) 2012-01-12 2012-01-12 監視方法および監視システム
CN201380005269.2A CN104054087A (zh) 2012-01-12 2013-01-08 控制装置监控系统以及控制装置的监控方法
PCT/JP2013/050130 WO2013105554A1 (ja) 2012-01-12 2013-01-08 制御装置監視システムおよび制御装置の監視方法
IN5825DEN2014 IN2014DN05825A (ja) 2012-01-12 2013-01-08

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012003931A JP5756412B2 (ja) 2012-01-12 2012-01-12 監視方法および監視システム

Publications (2)

Publication Number Publication Date
JP2013143077A JP2013143077A (ja) 2013-07-22
JP5756412B2 true JP5756412B2 (ja) 2015-07-29

Family

ID=48781501

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012003931A Active JP5756412B2 (ja) 2012-01-12 2012-01-12 監視方法および監視システム

Country Status (4)

Country Link
JP (1) JP5756412B2 (ja)
CN (1) CN104054087A (ja)
IN (1) IN2014DN05825A (ja)
WO (1) WO2013105554A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101705504B1 (ko) * 2014-01-23 2017-02-09 미쓰비시덴키 가부시키가이샤 프로그래머블 컨트롤러 및 프로그래머블 컨트롤러 시스템
JP7028543B2 (ja) * 2016-03-11 2022-03-02 Necプラットフォームズ株式会社 通信システム
EP3460946A4 (en) 2016-05-16 2020-01-22 Kabushiki Kaisha Toshiba BATTERY CONTROL DEVICE, FAILURE DETECTION METHOD, AND PROGRAM
JP2018133037A (ja) * 2017-02-17 2018-08-23 オムロン株式会社 制御装置
JP7030429B2 (ja) * 2017-06-09 2022-03-07 三菱電機株式会社 サーバ装置、監視システム、データ処理方法、およびデータ処理プログラム
WO2019034971A1 (en) * 2017-08-13 2019-02-21 Si-Ga Data Security (2014) Ltd. THREAT DETECTION SYSTEM FOR INDUSTRIAL CONTROL DEVICES
JP7078889B2 (ja) * 2018-01-22 2022-06-01 オムロン株式会社 制御装置、制御方法、および制御プログラム
JP7282195B2 (ja) * 2019-03-05 2023-05-26 シーメンス インダストリー ソフトウェア インコーポレイテッド 組み込みソフトウェアアプリケーションのための機械学習ベースの異常検出
CN112560023A (zh) * 2020-12-07 2021-03-26 广东电力通信科技有限公司 交互式数据采集方法、机器人、系统及计算机设备
CN112738224B (zh) 2020-12-29 2022-06-10 浙江中控技术股份有限公司 一种支持触发式通信的数据处理系统和方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1063313A (ja) * 1996-08-26 1998-03-06 Meidensha Corp プロセス制御相互監視方式
JPH10340103A (ja) * 1997-06-09 1998-12-22 East Japan Railway Co フェールセーフ出力装置
JP2003091302A (ja) * 2001-09-17 2003-03-28 Toyoda Mach Works Ltd 工作機械の制御システムにおける異常検出装置
JP4349011B2 (ja) * 2003-06-27 2009-10-21 株式会社安川電機 ベルトコンベアトラッキングデータ自動補正方法および装置
JP4668596B2 (ja) * 2004-12-02 2011-04-13 株式会社エヌ・ティ・ティ・ドコモ 通信端末、サーバ装置及び監視システム
JP2006344086A (ja) * 2005-06-10 2006-12-21 Hitachi Ltd データ照合装置,データ照合方法,データ制御装置及びデータ制御方法
US7873430B1 (en) * 2006-06-14 2011-01-18 Rockwell Automation Technologies, Inc. System that can schedule operations that are performed on industrial control devices
JP5261088B2 (ja) * 2008-09-09 2013-08-14 富士通株式会社 不正操作検知回路、不正操作検知回路を備えた装置、及び不正操作検知方法
CN101697188A (zh) * 2009-06-04 2010-04-21 中冶赛迪工程技术股份有限公司 一种plc程序保护方法、访问方法及其装置
JP5404463B2 (ja) * 2010-02-12 2014-01-29 三菱電機株式会社 制御装置及び管理装置

Also Published As

Publication number Publication date
JP2013143077A (ja) 2013-07-22
CN104054087A (zh) 2014-09-17
IN2014DN05825A (ja) 2015-05-15
WO2013105554A1 (ja) 2013-07-18

Similar Documents

Publication Publication Date Title
JP5756412B2 (ja) 監視方法および監視システム
JP6903529B2 (ja) 情報処理装置、情報処理方法およびプログラム
CN109164780B (zh) 一种基于边缘计算的工业现场设备控制方法、装置及系统
US11995182B2 (en) Baseboard management controller to perform security action based on digital signature comparison in response to trigger
CN108073816B (zh) 信息处理装置
KR100543268B1 (ko) 컴퓨터 시스템의 보안성을 향상시키는 보안용 코프로세서
KR101799366B1 (ko) 다이나믹 보안모듈 서버장치 및 그 구동방법
JP2008158899A (ja) デバイス制御装置
TWI678615B (zh) 在資料處理裝置中進行除錯
US11436324B2 (en) Monitoring parameters of controllers for unauthorized modification
JP2004355450A (ja) 端末状態監視システムおよびその方法
JP2008084275A (ja) ソフトウェアの改ざん監視装置および改ざん監視方法
US11392693B2 (en) Validity confirmation equipment
RU2647684C2 (ru) Устройство и способ обнаружения несанкционированных манипуляций системным состоянием блока управления и регулирования ядерной установки
JP6541177B2 (ja) コンピュータ端末及びそのプログラム、コンピュータシステム
US10686812B2 (en) Device and method for detecting manipulation of a program code
JP6814659B2 (ja) 情報処理システム及び情報処理方法
KR20210132545A (ko) 이상행위 탐지 장치, 방법 및 이를 포함하는 시스템
CN113157543B (zh) 一种可信度量方法及装置、服务器、计算机可读存储介质
JP2020107237A (ja) 情報処理装置
JP2010238168A (ja) 実行制御プログラムおよび情報処理システム
US10089200B2 (en) Computer apparatus and computer mechanism
JP6041727B2 (ja) 管理装置、管理方法及び管理プログラム
JP2017228887A (ja) 制御システム、ネットワーク装置、及び制御装置の制御方法
CN110874323A (zh) 信息处理装置、嵌入式系统以及调试控制方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141007

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150526

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150529

R150 Certificate of patent or registration of utility model

Ref document number: 5756412

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150