説明

制御装置及び管理装置

【課題】制御プログラムを特定のPLC上でしか動作できないようにようにする。
【解決手段】アクセス要求受信処理部11が制御プログラムと乱数を入力し、認証処理部10bが、乱数とPLC200に固有のシリアルIDにハッシュ演算を行い、認証ラダー自動生成処理部13がハッシュ値から専用デバイスを選択し、選択した専用デバイスが示される認証ラダーを生成し、認証ラダー挿入処理部14が認証ラダーを制御プログラムに挿入して格納する。制御プログラムの実行の際に、認証処理部10bが乱数とシリアルIDにハッシュ演算を行い、専用デバイス設定部17がハッシュ値から専用デバイスを選択し、選択した専用デバイスをONに設定し、制御プログラム実行制御部16が制御プログラムを実行する。認証ラダーと同じ専用デバイスがONになっていれば制御プログラムが正しく動作し、ONでなければ制御プログラムが動作しない。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムの不正使用を防止する技術に関する。
より具体的には、本発明は、例えば、FA(Factory Automation)システムにおいてPLC(Programmable Logic Controller)に格納されている制御プログラム(ラダープログラム)の不正使用を防止する技術に関する。
【背景技術】
【0002】
一般にFAシステムでは、他社(他人)に公開したくない制御プログラム(ラダープログラム)などの保護資産に対する不正アクセスを防止する手段としては、パスワードを利用する方法や保護資産を暗号化する方法が取られている。
しかし、パスワードを利用する方法では、例えば制御プログラムに対してパスワードを設定してアクセス制御しても、その制御プログラムに複数の開発者がアクセスすることになる場合は複数の開発者間で共通のパスワードを設定しているため他人に推測されやすいパスワードを付けるなど脆弱性についての課題がある。
また、制御プログラムとパスワード等といった認証に用いる情報とを別々に管理し、認証処理も制御プログラムとは別に実現されているため、制御プログラムとの関連付けが外されると制御プログラムに対するアクセス制御ができなくなる。
このため、保護したいデータそのものを暗号化する方法などが取られているが、暗号化には鍵を管理するために特別なハードウェアが必要となり、装置が複雑で高価になるという課題がある。
また、FAシステムにおける制御プログラム(ラダープログラム)では、デバイスのON/OFF状態に応じて制御機器への制御信号をON/OFFするものであり、制御プログラムの実行中に暗号化や復号化の処理を実行することができない。
これにより、暗号化を使わずに制御プログラムの改ざんやモニタを防ぐ方法として、モニタ装置からの制御プログラムに対するアクセス要求に対してあらかじめ設定されたアクセス権限により応答を制限する方法がある(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−135165号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
このように各制御プログラムに対してあらかじめ設定されたアクセス権限によりモニタ装置からのアクセス要求への応答を制限する方法では、モニタ装置からのアクセス制御を行うことが目的であり、制御プログラムを特定のPLC上でのみ実行可能にするための制御を行っているわけではない。
このため、読み出し権限を持っているとPLCからモニタ装置に制御プログラムを読み出すことができ、かつ読み出した制御プログラムは別のPLCへ書込むことができるので、コピーした先のPLCにて制御プログラムの不正利用が可能となる課題がある。
【0005】
本発明は、上記課題を鑑みてなされたものであって、その主たる目的は、特定の制御装置にのみ使用が許可されている制御プログラム(ラダープログラム)が、特定の制御装置上でしか動作できないようにするための制御プログラムの不正利用防止機能を実現することである。
【課題を解決するための手段】
【0006】
本発明に係る制御装置は、
前記制御装置にユニークに設定されている固有識別情報を記憶する固有識別情報記憶部と、
前記制御装置の制御処理の対象となる対象デバイスのデバイス番号が含まれ、前記制御装置以外の装置による使用が許可されていないラダープログラムを主プログラムとして入力するプログラム入力部と、
前記固有識別情報に基づいて、前記制御装置以外の装置による主プログラムの使用を防止するラダープログラムを認証プログラムとして生成する認証プログラム生成部と、
主プログラムと認証プログラムとを合成して合成プログラムとするプログラム合成部と、
前記合成プログラムを記憶するプログラム記憶部とを有し、
前記認証プログラム生成部は、
対象デバイスのデバイス番号を疑似するデバイス番号であって、認証のために用いられる複数の認証用デバイスのデバイス番号を認証用デバイス番号として管理し、
前記固有識別情報に基づいて、1つ以上の認証用デバイス番号を選択し、
選択した選択認証用デバイス番号が含まれるラダープログラムであって、前記合成プログラムとして前記主プログラムとともに実行される際に前記認証プログラム生成部の選択動作から独立して前記固有識別情報に基づいて前記選択認証用デバイス番号が正確に選択され前記選択認証用デバイス番号に対応する選択認証用デバイスの各々に対して所定の設定処理が行われれば正常に動作して前記主プログラムが正常に動作し、前記合成プログラムとして前記主プログラムとともに実行される際に前記選択認証用デバイスの各々に対して前記設定処理が行われない場合には正常に動作せず前記主プログラムの動作が停止するラダープログラムを認証プログラムとして生成することを特徴とする。
【発明の効果】
【0007】
本発明では、主プログラムの格納の際に、制御装置にユニークに設定されている固有識別情報に基づき選択した選択認証用デバイス番号が含まれるラダープログラムを認証プログラムとして生成し、認証プログラムを主プログラムに合成し、主プログラムの実行の際に固有識別情報に基づき正しく選択認証用デバイス番号が選択され、選択認証用デバイスに設定処理が行われていれば主プログラムが正常に動作し、設定処理が行われていない場合は認証プログラムによって主プログラムが停止する。
このため、制御装置では正常に主プログラムを使用することができる一方で、主プログラムの使用が許可されていない装置では、主プログラムを使用することができず、主プログラムの不正使用を防止することができる。
【図面の簡単な説明】
【0008】
【図1】実施の形態1に係るシステム構成例を示す図。
【図2】実施の形態1に係る動作例を示すフローチャート図。
【図3】実施の形態1に係る動作例を示すフローチャート図。
【図4】実施の形態1に係る認証ラダーの例を示す図。
【図5】実施の形態1に係る専用デバイスの設定例を示す図。
【図6】実施の形態2に係るシステム構成例を示す図。
【図7】実施の形態3に係るシステム構成例を示す図。
【図8】実施の形態4に係るシステム構成例を示す図。
【図9】実施の形態5に係るシステム構成例を示す図。
【発明を実施するための形態】
【0009】
実施の形態1〜5では、FAシステムにおいてPLCに格納されている制御プログラム(ラダープログラム)の不正コピーによりPLCの模造品が製造されるのを防ぐ技術を説明する。
より具体的には、制御プログラムをPLCに書込む際に、PLCを個体識別するためのシリアルIDとエンジニアリング環境にて生成した乱数を用いて認証情報を生成し、PLCと制御プログラムとの関連付けを行うと共に、生成した認証情報から制御プログラムに挿入可能な認証ラダーを自動生成して制御プログラム中に挿入する。
そして、制御プログラムの実行時に、挿入した認証ラダーにて関連付けを行ったPLC上での実行であることを確認することで制御プログラムを不正に別のPLCにコピーして模造品が製造されるなどの不正利用されることを防止する。
【0010】
ここで、認証ラダーとは、主プログラムたる制御プログラムに挿入されるラダープログラムであり、認証プログラムの例である。
より具体的には、制御プログラムの実行時に特定のデバイス番号に該当する専用デバイスがONになっていることを確認するために制御プログラムに挿入されるラダープログラムが認証ラダーである。
実施の形態1〜5では、PLCのシリアルIDとエンジニアリング環境側で生成した乱数を入力としてハッシュ関数(一方向性関数)にて認証情報(ハッシュ値)を生成し、この認証情報に基づいて専用デバイスのON/OFFをチェックするためのデバイス番号を決定する。この認証情報に基づいて決定されたデバイス番号が含まれるラダープログラムが認証ラダーである。
ここで生成した認証情報は、PLCのシリアルIDを入力としてハッシュ関数により生成しているため、PLC毎に生成される認証情報は異なる。
また、制御プログラムは、入力機器や出力機器といったPLCの制御処理の対象となる対象デバイスのデバイス番号が含まれるラダープログラムであり、指定されたPLC以外の装置による使用が許されない。
制御プログラムは主プログラムの例である。
制御プログラムに認証ラダーが挿入された後のプログラムを合成プログラムともいう。
また、専用デバイスとは、PLC内に設けた制御プログラムで使用するデータやON/OFF信号を記憶するためのメモリであり、PLCのファームウェアからのみ設定できるものとし、エンジニアリング環境を用いてもユーザには設定できないものとする。
専用デバイスは、対象デバイスとは異なり、制御プログラムの不正使用を防止するために特別に設けられたデバイスである。専用デバイスには、対象デバイスのデバイス番号を疑似するデバイス番号を設定する。なお、専用デバイスは認証用デバイスの例であり、専用デバイスのデバイス番号は認証用デバイス番号の例である。
また、ユーザがエンジニアリング環境を用いてPLCの制御プログラムを作成する際、制御プログラムやパラメータ、および認証情報などを管理するためのプロジェクトをPLCごとに作成する。
【0011】
以上を踏まえ、以下にて、実施の形態1〜5の各々を説明する。
【0012】
実施の形態1.
図1は、本実施の形態に係る不正利用防止システムのシステム構成例を示す。
図1に示す不正利用防止システムは、PLCに格納した制御プログラムを特定のPLC上でのみ実行可能にするためのFA機器制御プログラムの不正利用防止システムである。
本実施の形態に係る不正利用防止システムは、エンジニアリング環境側PC(Personal Computer)100とPLC(Programmable Logic Controller)200に大別される。
エンジニアリング環境側PC100は、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、磁気ディスク装置、通信ボード等を備えるコンピュータである。
この場合、エンジニアリング環境側PC100の内部要素として示している機能(「〜部」)を実現するプログラムを例えば磁気ディスク装置に格納し、CPUがこれらプログラムを適宜読み出すことで、各機能を実行する。
PLC200は、ラダープログラムである制御プログラムを記憶し、CPUが制御プログラムを実行して、機器の制御を行う。
エンジニアリング環境側PC100は管理装置の例であり、PLC200は制御装置の例である。
なお、エンジニアリング環境側PC100及びPLC200の内部構成については後述する。
【0013】
また、図2は本実施の形態に係る動作例を示すフローチャートである。
図2は、具体的には、制御プログラムをPLCに書込む際にセキュリティ設定を行い、制御プログラムとPLCを関連付ける際の処理フローを示す。
図2の処理フローの詳細は後述する。
【0014】
また、図3はPLCにて認証ラダーを生成し、生成した認証ラダーを制御プログラムに挿入してPLCに制御プログラムを格納する際の処理フローを示す。
図3の処理フローの詳細は後述する。
【0015】
図4は認証ラダー生成用乱数とPLCのシリアルIDから生成した認証情報に基づいて自動生成した認証ラダーの例である。
図4の詳細は後述する。
【0016】
図5はPLCの電源投入時にファームウェアの初期化処理にて認証情報に基づいて専用デバイスを設定した際の例である。
図5の詳細は後述する。
【0017】
次に、図1を用いて、PLCに格納した制御プログラムの実行時に許可されたPLC上での実行であることを確認するFA機器制御プログラムの不正利用防止システムを構成する要素を説明する。
【0018】
まず、エンジニアリング環境側PC100の構成要素を説明する。
【0019】
1は、エンジニアリング環境側PC100においてユーザがキーボードやマウス等を用いてPLCの制御プログラム作成やパラメータ設定を行うための入力部である。
【0020】
2は、ユーザがPLCの制御プログラムを作成する制御プログラム作成部である。
【0021】
3は、制御プログラム作成部2にて作成した制御プログラムを格納するための制御プログラム記憶部である。
【0022】
4は、制御プログラム記憶部3に格納した制御プログラムのPLCへの書込みやPLCからの読出しなどのPLCに対するアクセス要求をPLCに送信するアクセス要求送信処理部である。
【0023】
5は、入力部1によりユーザからの制御プログラムの書込み指示を受けて制御プログラム記憶部3に格納されている制御プログラムを読み出してアクセス要求送信処理部4にPLCへの書込み要求を行う制御プログラム書込み要求部である。
【0024】
6aは、エンジニアリング環境側PC100にて作成した制御プログラムに対してセキュリティ設定を無効から有効にするためのセキュリティ設定部である。
【0025】
7は、乱数を生成する乱数生成処理部である。
より具体的には、乱数生成処理部7は、セキュリティ設定部6のセキュリティ設定を無効から有効に設定したときにプロジェクト(FA機器単位で作成する制御プログラムやパラメータ設定などから構成される情報)で固有であり、認証ラダーの生成時の入力として使用する乱数やエンジニアリング環境とPLC間で認証を行う際のチャレンジ&レスポンス認証用の乱数(チャレンジ値)を生成する。
【0026】
8aは、セキュリティ設定を有効にした際に制御プログラムの書込み先であるPLCと制御プログラムとの関連付けを行い、認証ラダーを生成するために乱数生成処理部7にて生成した乱数を格納する認証ラダー生成用乱数記憶部である。
【0027】
9aは、セキュリティ設定を有効した際に制御プログラムの書込み先であるPLCから読み取ったPLCを個体識別するためのシリアルID(例えば、製造番号など)を格納するシリアルID記憶部である。
【0028】
10aは、エンジニアリング環境側PC100側で生成した認証情報とPLC200で生成した認証情報を比較して認証を行う認証処理部である。
より具体的には、認証処理部10aは、乱数生成処理部7に対して乱数の生成の要求や、セキュリティ設定部6aのセキュリティ設定が有効の場合にPLCに対する制御プログラムの書込み/読取りを行う際にアクセス先のPLCが関連付けられているPLCであることを確認するためにその都度乱数生成処理部7で生成した乱数と認証ラダー生成用乱数記憶部8aに格納されている乱数とシリアルID記憶部9aに格納されているシリアルIDを入力としてハッシュ関数にて生成したハッシュ値を認証情報とし、その認証情報とPLC側で生成した認証情報を比較して認証を行う。
【0029】
次に、PLC200の構成要素を説明する。
【0030】
9bは、PLCメーカが製品出荷時に設定しユーザには書き換えることのできないPLCを個体識別するためのシリアルID(例えば、製造番号など)を格納するシリアルID記憶部である。
シリアルIDは、PLC200にユニークに設定されており、固有識別情報の例である。
そして、シリアルID記憶部9bは、固有識別情報記憶部の例である。
【0031】
6bは、制御プログラムに対するアクセス制限を行うためのセキュリティ設定を有効にするためのセキュリティ設定部である。
セキュリティ設定部6bは、エンジニアリング環境側のセキュリティ設定の有効化と同期してエンジニアリング環境側からのセキュリティ設定の有効化要求を受けてPLCに格納する制御プログラムに対するアクセス制限を行う。
【0032】
8bは、セキュリティ設定の有効化の要求と一緒に送信されてきた乱数を格納する認証ラダー生成用乱数記憶部である。
認証ラダー生成用乱数記憶部8bに格納される乱数は、エンジニアリング環境側PC100の乱数生成処理部7にて生成され、認証ラダー生成用乱数記憶部8aに格納された乱数と同じ乱数である。
認証ラダー生成用乱数記憶部8bは、乱数記憶部の例である。
【0033】
11は、エンジニアリング環境のアクセス要求送信処理部4から送信されてきたアクセス要求をPLC側で受け付けて要求内容に応じた処理を実行するアクセス要求受信処理部である。
また、アクセス要求受信処理部11は、エンジニアリング環境側PC100から制御プログラム書込み要求とともに、制御プログラム(ラダープログラム)を入力する。
制御プログラムは、前述のようにPLC200の制御処理の対象となる対象デバイスのデバイス番号が含まれるラダープログラムであり、指定されたPLC以外の装置による使用が許されない。制御プログラムは主プログラムの例である。
また、アクセス要求受信処理部11はプログラム入力部の例である。
【0034】
10bは、ハッシュ演算(一方向演算)を行う認証処理部である。
認証処理部10bは、認証ラダー生成用乱数記憶部8bに格納されている乱数とシリアルID記憶部9bに格納されているシリアルID、および認証情報の生成要求時に一緒に送付されてきた乱数(チャレンジ値)を入力としてハッシュ関数を用いてハッシュ値(レスポンス)を生成する。
より具体的には、認証処理部10bは、セキュリティ設定部6bのセキュリティ設定が有効になっている場合において、認証ラダー(認証プログラム)の生成に先立ち、エンジニアリング環境からの認証要求を受け付けたアクセス要求受信処理部11からの認証情報の生成要求に応じて、ハッシュ値(レスポンス値)を生成する。
認証処理部10bは、一方向演算部の例である。
【0035】
12は、アクセス要求受信処理部11からの制御プログラムの書込み要求を受け付けた際に、セキュリティ設定部6bのセキュリティ設定を確認してセキュリティ設定が有効の場合は認証ラダーを挿入する処理に進み、無効の場合は認証ラダーを含まないままの状態で制御プログラムをPLC内に書込む処理に進むことを指示する制御プログラム書込み処理部である。
【0036】
13は、認証ラダー(認証プログラム)を生成する認証ラダー自動生成処理部である。
認証ラダーは、制御プログラムに直接挿入可能なラダープログラムであり、PLC200以外の装置による制御プログラムの使用を防止するためのラダープログラムである。
認証ラダー自動生成処理部13は、制御プログラムを実行用制御プログラム記憶部15に格納する際に、認証処理部10bにて生成したハッシュ値に基づいて専用デバイス(認証用デバイス)中の特定のデバイスの番号を選択し、選択した特定のデバイスの番号(選択認証用デバイス番号)が含まれる認証ラダーを生成する。
そして、認証ラダー挿入処理部14により認証ラダーは制御プログラムと合成されて、実行用制御プログラム記憶部15に格納される。
また、詳細は後述するが、制御プログラム実行制御部16が制御プログラムと認証ラダーを実行する前に、認証ラダー自動生成処理部13による認証ラダーの生成とは独立して、認証処理部10bがシリアルIDと乱数に基づいてハッシュ値を生成し、専用デバイス設定部17がハッシュ値に基づき特定の専用デバイスのデバイス番号を選択し、選択したデバイス番号に対応する専用デバイスに対して所定の設定処理(当該専用デバイスをOFF状態からON状態にする設定処理)を行う。
専用デバイス設定部17により、認証ラダーに含まれる専用デバイスのデバイス番号と同じデバイス番号が正確に選択され、当該デバイス番号に対応する専用デバイスに対して設定処理が行われている場合には、制御プログラム実行制御部16が制御プログラムと認証ラダーを実行した際に認証ラダーが正常に動作し、この結果、制御プログラムが正常に動作する。一方、正しいデバイス番号が選択されず、その結果、正しい専用デバイスに対して設定処理が行われていない場合には、制御プログラム実行制御部16が制御プログラムと認証ラダーを実行した際に認証ラダーが正常に動作せず、この結果、制御プログラムの動作が停止する。
認証ラダー自動生成処理部13は、認証プログラム生成部の例である。
なお、認証ラダー自動生成処理部13は、選択したデバイス番号のすべてが含まれ制御プログラムの先頭に配置されることになる認証ラダー(先頭認証プログラム)と、選択したデバイス番号のいずれかが含まれ制御プログラムの複数の挿入位置に挿入されることになる2以上の認証ラダー(挿入認証プログラム)の少なくともいずれかを生成する。
例えば、図4(a)は、制御プログラムの先頭に配置される認証ラダーの例であり、図4(b)は、制御プログラムの途中の挿入位置に挿入される認証ラダーの例である。
【0037】
14は、認証ラダー自動生成処理部13にて自動生成した認証ラダーを制御プログラムと合成する認証ラダー挿入処理部である。
認証ラダー挿入処理部14は、制御プログラムの先頭に配置される認証ラダーの場合(図4(a)に例示した認証ラダーの場合)は制御プログラムの先頭に配置し、制御プログラムの途中の挿入位置に挿入する認証ラダーの場合(図4(b)に例示した認証ラダーの場合)は指定された挿入位置に挿入する。
認証ラダー挿入処理部14は、プログラム合成部の例である。
なお、制御プログラムと認証ラダーが合成された後のプログラムを合成プログラムとも呼ぶ。
【0038】
15は、エンジニアリング環境側で作成した制御プログラムもしくは認証ラダー挿入処理部14にて認証ラダーが合成された後の制御プログラム(合成プログラム)を格納する実行用制御プログラム記憶部である。
実行用制御プログラム記憶部15は、プログラム記憶部の例である。
【0039】
16は、PLC200が実行モードになった場合に実行用制御プログラム記憶部15に格納された制御プログラムを実行する制御プログラム実行制御部である。
制御プログラム実行制御部16は、プログラム実行部の例である。
【0040】
17は、PLCの電源投入時にPLC内のファームウェアの初期化処理にて認証ラダー生成用乱数記憶部8bに格納された乱数とシリアルID記憶部9bに格納されたシリアルIDから生成されたハッシュ値から専用デバイスのデバイス番号を抽出し、抽出したデバイス番号に該当する専用デバイスをONに設定する専用デバイス設定部である。
専用デバイス設定部17は、設定処理部の例である。
【0041】
次に、図1、図2、図3を用いて、エンジニアリング環境上の制御プログラム(ラダープログラム)をPLCへ書込む際の動作を説明する。
【0042】
まず、エンジニアリング環境側PC100上で制御プログラムを作成する手順について説明する。
【0043】
ユーザは、エンジニアリング環境側PC100の入力部1と制御プログラム作成部2を用いて制御プログラムの作成を行い、作成した制御プログラムを制御プログラム記憶部3に格納する。
【0044】
次に、エンジニアリング環境側PC100上で作成した制御プログラムをPLC200に書込む際の初回登録時の手順を説明する。
【0045】
ユーザはエンジニアリング環境側PC100とPLC200をUSB(Universal Serial Bus)ケーブル等にてネットワーク接続する。
次に、アクセス要求送信処理部4とアクセス要求受信処理部11を用いてエンジニアリング環境とPLC間のデータ送受信を行う。
ユーザが入力部1を用いて制御プログラム記憶部3に格納されている制御プログラムのPLCへの書込み指示をすると(図2のS201)、制御プログラム書込み要求部5は制御プログラム記憶部3から制御プログラムを読出す(S202)。
制御プログラム書込み要求部5はセキュリティ設定部6aに対してセキュリティ設定が有効か無効かを確認する(S203)。
セキュリティ設定が無効になっている場合は、制御プログラム書込み要求部5はユーザにセキュリティ設定を有効にするかどうかを問い合わせる。
ユーザから無効のままとする指示を受けた場合は、制御プログラム書込み要求部5はアクセス要求送信処理部4に制御プログラムの書込み処理を指示する(S209)。
【0046】
ユーザがセキュリティ設定を有効にするとの指示を受けた場合は、制御プログラム書込み要求部5はセキュリティ設定部6aを有効に設定し(S204)、認証処理部10aに対して制御プログラムとPLCの関連付けに用いる認証ラダー生成用乱数の生成を要求する。
乱数生成の要求を受けた認証処理部10aは乱数生成処理部7に対して乱数生成を要求する。
乱数生成処理部7は、乱数を生成し(S205)、乱数を認証処理部10aに渡す。
認証処理部10aは、受け取った乱数を制御プログラム書込み要求部5に返す。
制御プログラム書込み要求部5は、認証処理部10aから受け取った乱数を認証ラダー生成用乱数記憶部8aに格納し(S206)、また、アクセス要求送信処理部4に対して認証ラダー生成用乱数を付けてPLCのセキュリティ設定を有効にする要求を出す。
アクセス要求送信処理部4はPLCのセキュリティ設定を有効にする要求を受け取ると、PLC200のアクセス要求受信処理部11に対してセキュリティ設定の有効化を要求すると共に認証ラダー生成用乱数も一緒に送信して制御プログラムとPLCの関連付けも要求する(S207)。なお、この時点では、制御プログラムはPLC200に送信しない。
【0047】
PLC200において、アクセス要求受信処理部11は、セキュリティ設定の有効化の要求を受けるとセキュリティ設定部6bを有効に設定し(S210)、認証処理部10bに対してエンジニアリング環境側PC100で生成した認証ラダー生成用乱数の格納を要求すると共にPLCのシリアルIDの取得を要求する。
認証処理部10bは、認証ラダー生成用乱数を認証ラダー生成用乱数記憶部8bに格納し(S211)、シリアルID記憶部9bに格納されているPLC200を個体識別するためのシリアルIDを読出してアクセス要求受信処理部11に返す。
このシリアルIDはPLCを出荷する際にPLCの製造メーカが任意に設定する情報であり、ユーザが設定/変更ができない情報である。
アクセス要求受信処理部11は、認証処理部10bからシリアルIDを受け取ると、セキュリティ設定の有効化の要求に対する応答に受け取ったシリアルIDを付加してアクセス要求送信処理部4に返す(S212)。
【0048】
エンジニアリング環境側PC100において、アクセス要求送信処理部4は、アクセス要求受信処理部11からの応答を受け取ると、応答に付加されてきたPLC200のシリアルIDを制御プログラム書込み要求部5に返し、制御プログラム書込み要求部5はそれをシリアルID記憶部9aに格納する(S208)。
本実施の形態では、認証ラダー生成用乱数記憶部8a、8bに格納されている認証ラダー生成用乱数とシリアルID記憶部9a、9bに格納されているPLCのシリアルIDにより制御プログラムとPLC間を関連付け、この2つの情報からハッシュ関数を用いて生成したものを認証情報とする。
制御プログラム書込み要求部5は、アクセス要求送信処理部4に制御プログラムの書込み処理を要求し、アクセス要求送信処理部4は書込み要求と制御プログラムをPLCのアクセス要求受信処理部11に送信する(S209)(図3のS301)。
【0049】
PLC200において、アクセス要求受信処理部11は、制御プログラムの書込み要求を受け取ると制御プログラム書込み処理部12に制御プログラムの書込みを指示する。
制御プログラム書込み処理部12は、制御プログラムの書込み指示を受けるとセキュリティ設定部6bのセキュリティ設定を確認し(S302)、無効になっていた場合は受け取った制御プログラムをそのままの状態で実行用制御プログラム記憶部15に格納する(S309)。
【0050】
セキュリティ設定が有効になっていた場合には、制御プログラム書込み処理部12は認証ラダー自動生成処理部13に認証ラダーの生成を指示する。
認証ラダー自動生成処理部13は、制御プログラム書込み処理部12からの認証ラダーの生成指示を受けて認証処理部10bに対して認証情報の生成を指示する。
認証処理部10bは、認証ラダー生成用乱数記憶部8bに格納されている乱数とシリアルID記憶部9bに格納されているシリアルIDを読出し(S304、S305)、乱数とシリアルIDに対してハッシュ関数(一方向性関数)を用いて認証情報(ハッシュ値)を生成し(S306)、生成した認証情報(ハッシュ値)を認証ラダー自動生成処理部13に返す。
認証ラダー自動生成処理部13は、認証処理部10bから受け取った認証情報を元に認証ラダー(認証を目的としたラダープログラム)を自動生成し(S307)、認証ラダー挿入処理部14に対して自動生成した認証ラダーの制御プログラムへの挿入を指示する。
認証ラダー挿入処理部14は、ユーザがエンジニアリング環境側PC100を用いて作成した制御プログラムの特定の位置に認証ラダー自動生成処理部13にて生成した認証ラダーを挿入する(S308)。
認証ラダー挿入処理部14は、認証ラダーを挿入した制御プログラム(合成プログラム)を実行用制御プログラム記憶部15に格納して(S309)、制御プログラムの書込み処理が完了する。
【0051】
なお、本実施の形態では、認証情報の生成にエンジニアリング環境側PC100で生成した乱数とPLC200のシリアルIDの2つを入力としているが、この2つの信号以外に例えばPLC200に搭載されているCPU(Central Processing Unit)のCPUタイプと組み合わせて認証情報を生成しても良い。
このCPUタイプはエンジニアリング環境上で制御プログラムの書込み先であるPLC200を選択した際に確定するエンジニアリング環境内で扱う情報であり、PLC200側もあらかじめ内部的に保持している情報であるため通信路(エンジニアリング環境とPLC間)上には流れない情報であり、認証情報が推測されにくくなる。
【0052】
次に、図4、図5を用いて、認証情報に基づいた認証ラダーの生成と挿入、およびPLCの電源投入時に実行する初期化処理での専用デバイスの設定方法について説明する。
【0053】
ここでは、PLC200のシリアルIDを例えば「009910987654321」、認証ラダー生成用乱数を例えば「1234567890」とした場合の認証ラダーの生成方法を説明する。
また、認証処理部10bにて認証ラダー生成用乱数とシリアルIDを入力としてハッシュ関数により生成した認証情報を例えば「EA082DFE1CBA7816」とする。
ハッシュ関数により生成した認証情報は、PLC200のシリアルIDを利用して生成するため、別のPLCではシリアルIDが異なるために同じ認証情報が生成されることはない。
認証ラダー自動生成処理部13では、生成した認証情報を1バイトで区切り、区切った値を専用デバイスのデバイス番号に見立てる。
例えば、最初の1バイトの「EA」を専用デバイスのデバイス番号(10進表示)に見立てるとA234になる。ここで「A」は、専用デバイスを意味することとする。
同様に、2バイト目、3バイト目を専用デバイスのデバイス番号に見立てると、A8、A45、A254、A28、(以下省略)となる。
このように選択されたデバイス番号は、選択認証用デバイス番号に相当する。
また、PLC200の対象デバイスのデバイス番号には「X」等が用いられ、制御プログラムには「X50」のように対象デバイスのデバイス番号が示されるが、これに近似させて認証ラダーでは専用デバイスのデバイス番号を「A234」のようにする。このように、認証ラダーでは、対象デバイスのデバイス番号を疑似するデバイス番号が用いられる。
【0054】
認証ラダー自動生成処理部13では、これらの情報を元に図4に示すような認証ラダー(ラダープログラム)を生成する。
図4(a)は、選択されたすべてのデバイス番号(A234、A8、A45、A254等)が含まれ、制御プログラムの先頭に配置されることになる認証ラダーの例である。
図4(a)の認証ラダーは、実行時に専用デバイス(A234やA8などに対応する専用デバイス)のON/OFFの状態を確認して、1つでもOFF状態の専用デバイスがあった場合は制御プログラムの実行を停止するためのデバイス(図4(a)の例ではE99)をONに設定する。
PLCでは制御プログラムに対して1度のみの実行や定周期ごとの実行等といった実行タイプを定義することができるので、この認証ラダーは制御プログラムの実行時に1度だけ実施するように設定する。
【0055】
また、認証ラダー自動生成処理部13は、上記で生成した認証ラダーの専用デバイスのデバイス番号を制御プログラムのステップ数に見立てて、制御プログラムのそのステップ数の箇所に認証ラダーを挿入する。
図4(b)に示すように、例えば上記の例において専用デバイスA234の場合は、デバイス番号234をステップ数として見立てて、制御プログラムの234ステップ目に認証ラダーを挿入する。
ただし、挿入する際はデバイス番号をソートしてから数の小さい順に認証ラダーを制御プログラムの該当するステップ数目に挿入する。
これにより、制御プログラムの実行中でも制御プログラムが関連付けたPLC上で実行していることを確認することができる。
例えば、認証ラダーを別のPLCに書込んで実行した際に専用デバイスのA234がOFFだった場合には、図4(b)に示す例では挿入した認証ラダーの出力部の命令が実行されないことになる(図中の右側に記載のY0がONに設定されない)。
このため、制御プログラムが正常に動作できず、PLCに接続されたFA機器も正常に制御できなくなるので制御プログラムの不正利用を防止することができる。
図4の例では認証ラダー自動生成処理部13にて生成した認証ラダーを説明しやすくするためにラダープログラム形式で表現しているが、実際にPLC200上で生成される認証ラダーは実行コード形式で生成される。
【0056】
次に、PLC200の電源投入時にファームウェアの初期化処理にて専用デバイスを設定する際の動作について説明する。
【0057】
ファームウェアの初期化処理にて専用デバイス設定部17は、専用デバイスを0クリアし、PLC200のセキュリティ設定部6bが有効になっているかどうかを確認する。
セキュリティ設定が無効だった場合には専用デバイスに対する設定は何もしない。
セキュリティ設定が有効だった場合には、専用デバイス設定部17は認証処理部10bに対して認証情報の生成を要求し、その要求を受けた認証処理部10bが認証ラダー生成用乱数記憶部8bに格納されている乱数とシリアルID記憶部9bに格納されているPLCのシリアルIDからハッシュ関数を用いて認証情報(ハッシュ値)を生成する。
専用デバイス設定部17は、認証処理部10bにて生成した認証情報(ハッシュ値)を受け取り、認証ラダー自動生成処理部13にて専用デバイスのデバイス番号を生成した様に認証情報を1バイトで区切って、区切った1バイトの値をデバイス番号に見立て、そのデバイス番号に該当する専用デバイスをONに設定する。
図5に示す例では、A234、A8、A45、A254、A28の専用デバイスをONに設定した場合である。
ファームウェアでの初期化処理が終了し、PLC200が実行モード(制御プログラムの実行)になった場合は、制御プログラム実行制御部16が実行用制御プログラム記憶部15に格納されている制御プログラムを実行し、制御プログラムの先頭に配置した認証ラダー(図4(a))によって、上記初期化処理にて設定した専用デバイスの特定のデバイスのON/OFF状態を確認し、一つでも確認対象となっていた専用デバイスがOFFになっていた場合は、制御プログラムが不正コピーされたPLC上での動作であることを判断し、制御プログラムの実行を停止することができる。
また、制御プログラムの実行中でも制御プログラム中に挿入した認証ラダー(図4(b))により制御プログラムの不正利用を確認し、不正利用を確認した際は制御プログラムは正常動作しないために制御プログラムの不正コピーによる模造品上での利用を防止することができる。
また、認証ラダーをPLCが自動生成し制御プログラムの実行時に認証ラダーが実行されて不正利用を判断しているので、ユーザには意識させること無く制御プログラムの不正利用を防止することができる。
【0058】
制御プログラムの使用が許可されているPLC200が制御プログラムを使用する場合は、認証ラダー生成時に用いられたシリアルID及び乱数と同じシリアルID及び乱数が用いられるので、初期化処理において正しいデバイス番号(認証ラダーに含まれているデバイス番号と同じデバイス番号)が選択され、専用デバイスが正しく設定されるはずである。
このため、制御プログラムの使用が許可されているPLC200では、常に制御プログラムを正常に動作させることができる。
一方で、制御プログラムの使用が許可されていない装置(PLC200以外の装置)では、認証ラダー生成時にPLC200で用いられたシリアルID及び乱数を知りえないので、初期化処理において正しいデバイス番号が選択されることはなく、従って、専用デバイスが正しく設定されることはない。
このため、制御プログラムの使用が許可されていない装置では、制御プログラムの動作が停止し、制御プログラムを使用することができない。
【0059】
このように、本実施の形態によれば、PLCに格納される制御プログラムに対して、PLCのシリアルIDと制御プログラムを作成した際にエンジニアリング環境側で生成した乱数から認証情報を生成し、生成した認証情報から制御プログラムに直接挿入が可能な認証ラダーを自動生成して、制御プログラムの実行時にあらかじめ関連付けたPLC上での実行であることを確認することで、ユーザに意識させることなく制御プログラムとPLC間で認証を行い、認証結果に応じて制御プログラムの実行を停止することにより制御プログラムの不正利用を防止することができる。
【0060】
以上、本実施の形態では、
FA(Factory Automation)機器を制御する制御プログラム(ラダープログラム)を他のFA機器へ不正にコピーされてもコピー先のFA機器上では制御プログラムが正常に動作しないようにするためのFA機器制御プログラムの不正利用防止システムにおいて、
FA機器に対する制御プログラムやパラメータ等の設定や確認を行うためのエンジニアリング環境(アプリケーション)と制御プログラムに基づいて入力機器の指令信号のON/OFFに応じて出力機器をON/OFFすることによりシーケンス制御(あらかじめ定められた順序・条件に従い、対象を思い通りに動作させること)を行うPLC(Programmable Logic Controller)により実現する制御プログラムの不正利用を防止するための装置であって、
エンジニアリング環境に対してユーザが制御プログラムの作成やパラメータ等の入力および機能の実行を指示するための入力部と、
ユーザが前記入力部を用いてPLC上で実行される制御プログラム(ラダープログラム)を作成する制御プログラム作成部と、
前記制御プログラム作成部にて作成したPLC用の制御プログラムを格納するための制御プログラム記憶部と、
エンジニアリング環境からPLCに対して制御プログラムやパラメータ等の書込み/読出しを要求し且つその応答を受け取るためのアクセス要求送信処理部と、
前記制御プログラム記憶部に格納した制御プログラムをPLCに書込むための処理を行う制御プログラム書込み要求部と、
エンジニアリング環境上にて作成した制御プログラムに対するセキュリティ機能を有効にする場合にのみ設定するセキュリティ設定部と、
PLCにて認証ラダーを生成する際に用いる乱数や制御プログラムとPLC間で認証を行う際に利用する乱数を生成するための乱数生成処理部と、
前記制御プログラム書込み要求部からの乱数生成要求を受けて前記乱数生成処理部に対して乱数の生成を依頼したり制御プログラムとPLCとの間で認証を行うために乱数やPLCを個体識別するための情報からハッシュ関数(一方向関数)を用いて認証情報を生成したりする認証処理部と、
前記乱数生成処理部にて生成したPLCにて認証ラダーを生成する際に用いる乱数を格納するための認証ラダー生成用乱数記憶部と、
前記制御プログラム記憶部に格納した制御プログラムをPLCに初回書込みを実施した際にPLCから抽出したPLCを個体識別するためのシリアルID(製造番号など)を格納するシリアルID記憶部と、
エンジニアリング環境からのアクセス要求を受付けそのアクセス要求に応じて各処理部へ要求内容を転送するためのアクセス要求受信処理部と、
PLCに格納した制御プログラムに対するセキュリティ機能を有効する場合にのみ設定するセキュリティ設定部と、
認証ラダーを生成するためにエンジニアリング環境側で生成され送信されてきた乱数を格納するための認証ラダー生成用乱数記憶部と、
PLCを個体識別するためのシリアルIDを格納するシリアルID記憶部と、前記アクセス要求受信処理部からの制御プログラムの書込み要求を受けて制御プログラムの書込みを行う制御プログラム書込み処理部と、
前記セキュリティ設定部のセキュリティ機能が有効に設定されている場合に前記認証ラダー生成用乱数記憶部に格納されている乱数と前記シリアルID記憶部に格納されているシリアルIDからエンジニアリング環境側の前記認証処理部と同じアルゴリズムを用いて認証情報を生成するハッシュ値生成処理部と、
PLCに制御プログラムを書込む際に前記ハッシュ値生成処理部にて生成したハッシュ値に基づいて認証ラダーを自動生成する認証ラダー自動生成処理部と、
前記認証ラダー自動生成処理部にて生成した認証ラダーをエンジニアリング環境から送信されてきた制御プログラムに挿入する認証ラダー挿入処理部と、
前記セキュリティ設定部のセキュリティ機能が無効に設定されている場合はエンジニアリング環境から送信されてきた制御プログラムをそのまま格納するかセキュリティ機能が有効に設定されている場合は前記認証ラダー挿入処理部にて認証ラダーが挿入された制御プログラムを格納する実行用制御プログラム記憶部と、
PLCが実行モードになった場合に前記実行用制御プログラム記憶部に格納した制御プログラムを実行する制御プログラム実行制御部と、
PLCの電源投入時にPLCに搭載されているファームウェアが実行する初期化処理にて認証ラダー生成用乱数とシリアルIDから前記認証処理部にて生成したハッシュ値に基づいてPLC内の専用デバイスの設定を行う専用デバイス設定部を設けたFA機器制御プログラムの不正利用防止システムを説明した。
【0061】
実施の形態2.
本実施の形態では、エンジニアリング環境にて作成した制御プログラムの規模や性能面の影響を考慮して認証ラダー自動生成処理部13にて自動生成する認証ラダーの数を調整する機能を説明する。
【0062】
図6は、制御プログラムの規模や性能面への影響を考慮して自動挿入する認証ラダーの数を調整するFA機器制御プログラムの不正利用防止システムの機能構成である。
【0063】
エンジニアリング環境側PC100の内部構成は、図1のものと同様であるため、説明を省略する。
【0064】
PLC200においては、本実施の形態では、実行制約時間記憶部18、認証ラダー性能確認部19、認証ラダー挿入判断部20が追加されている。
これら以外の要素は、図1に示したものと同様である。
【0065】
実行制約時間記憶部18は、ユーザによって設定された制御プログラムを実行した際の制約時間を格納する。
つまり、実行制約時間記憶部18は、制御プログラムと認証ラダーが合成された後のプログラム(合成プログラム)の実行所要時間の許容範囲を制約時間(許容時間)として記憶する。
実行制約時間記憶部18は、許容時間記憶部の例である。
【0066】
認証ラダー性能確認部19は、実行制約時間記憶部18に格納した制約時間と制御プログラムの実行時間の差を算出し、認証ラダーを挿入可能な空き時間を確認する。
つまり、認証ラダー性能確認部19は、制御プログラムの実行時間を予測し、予測した制御プログラムの実行時間(予測所要時間)と制約時間との差を空き時間として算出する。
認証ラダー性能確認部19は、所要時間予測部の例である。
【0067】
認証ラダー挿入判断部20は、エンジニアリング環境側PC100からPLC200へ書込み要求された制御プログラムの規模(例えばステップ数)や認証ラダー性能確認部19にて算出した空き時間に応じて挿入する認証ラダーの数を判断する。
つまり、認証ラダー挿入判断部20は、認証ラダー性能確認部19により算出された空き時間(制御プログラムの実行時間と制約時間との差)に基づき、認証ラダーに含めるデバイス番号の個数を決定する。
この場合、認証ラダー自動生成処理部13は、認証ラダー挿入判断部20により決定された個数分の認証用デバイス番号を選択して認証ラダーを生成する。
また、認証ラダー挿入判断部20は、制御プログラムのプログラムサイズが所定サイズ以上であるか否かを判断し、制御プログラムのプログラムサイズが所定サイズ未満であれば、認証ラダー自動生成処理部13に対して認証ラダーの生成の保留させ、制御プログラムのプログラムサイズが所定サイズ以上であれば、認証ラダー自動生成処理部13に対して認証ラダーの生成を指示する。
認証ラダー挿入判断部20は、個数決定部及びプログラムサイズ判断部の例である。
【0068】
次に、制御プログラムをPLC200に書込む処理において、制御プログラムの規模や性能面への影響を考慮して挿入する認証ラダーの数を判断する際の動作について説明する。
【0069】
実行制約時間記憶部18に格納される制約時間は、エンジニアリング環境側PC100にてユーザによって設定され、制御プログラムの書込みと同様にエンジニアリング環境側PC100からパラメータの書込み要求にて実行制約時間記憶部18に格納される。
この制約時間とは、ユーザが指定した時間以内に制御プログラムの実行が完了しなければならない時間であり、例えば、制御プログラムの実行タイプを定周期とした場合などで指定した周期内に制御プログラムの実行が完了しなければならない時間である。
制御プログラム書込み処理部12は、制御プログラムの書込み要求を受けると認証ラダー性能確認部19に制御プログラムの書込み要求を通知する。
【0070】
認証ラダー性能確認部19は、実行制約時間記憶部18に格納されている制約時間を抽出すると共に制御プログラム中の命令数から予想実行時間を算出し、実行制約時間記憶部18から抽出した制約時間との差を確認する。
制御プログラムの各種命令に対して実行時間(目安)が決まっているため、認証ラダー性能確認部19は予想実行時間を算出することが可能である。
認証ラダー性能確認部19は、この制約時間と予想実行時間との差により認証ラダーが挿入可能な空き時間を確認し、その空き時間を認証ラダー挿入判断部20に渡す。
【0071】
認証ラダー挿入判断部20は、書込み要求を受けた制御プログラムの規模を確認し、もし規模が小さい場合は認証ラダーの挿入は取り止めて(認証ラダー自動生成処理部13に対して認証ラダーの生成を保留させ)、認証ラダーを挿入する前の状態の制御プログラムを実行用制御プログラム記憶部15に格納する。
例えば、悪意を持ったユーザがダミーの制御プログラムの書込み要求を実施して、認証ラダーが挿入された制御プログラムをエンジニアリング環境側に読み取られて、制御プログラムに挿入した認証ラダーの生成方法などが容易に解析されないようにするためである。
認証ラダーの挿入を取り止める基準としては、例えば、認証ラダーを生成する際に認証情報を1バイトで区切っているため、制御プログラムのステップ数が256ステップ以下の場合は制御プログラムに認証ラダーの挿入するのを取り止めることが考えられる。
【0072】
十分な規模の制御プログラムの場合は、認証ラダー挿入判断部20は、認証ラダー性能確認部19にて算出した空き時間をもとに挿入可能な認証ラダーの数を判断する。
また、制御プログラムの規模が大きい場合は、制御プログラムの挿入位置が前半部分(255ステップまで)に集中してしまうため、認証ラダー挿入判断部20は、認証ラダーが制御プログラムの全体に挿入されるようにするために、ステップ数の算出方法を制御プログラムの規模に応じて決定する。
例えば実施の形態1では認証情報を1バイトで区切った値をステップ数と見なしたが、認証情報を制御プログラムの規模に応じて2バイト、3バイトで区切った値をステップ数と見なす方法が考えられる。
このように、認証ラダー挿入判断部20は、図4(b)に例示した認証ラダーを制御プログラムに挿入する場合に、所定の挿入位置決定アルゴリズム(例えば、実施の形態1で示した認証情報を1バイト単位で区切るアルゴリズム)に従って決定される挿入位置が制御プログラムの特定部分に集中する場合は、当該挿入位置決定アルゴリズム以外のアルゴリズムであって、認証ラダーの挿入位置が制御プログラム内でより分散するアルゴリズム(例えば、認証情報を2バイト単位、3バイト単位で区切るアルゴリズム)に従って挿入位置を決定する。
【0073】
また、認証ラダー挿入判断部20は、制御プログラムに挿入可能な認証ラダーの数と認証ラダーを挿入するステップ数の算出アルゴリズムを認証ラダー自動生成処理部13に通知する。
認証ラダー自動生成処理部13は、認証ラダー挿入判断部20から指示されたアルゴリズムに従って、認証ラダー挿入判断部20から指示された個数分のデバイス番号の認証ラダーを生成する。
なお、認証ラダー自動生成処理部13による認証ラダーの生成手順自体は、実施の形態1と同等である。
【0074】
このように、本実施の形態によれば、制御プログラムの実行時の性能面への影響を考慮して認証ラダーの挿入する数を調整することで制御プログラムの実動作を妨げることなく制御プログラムの不正利用を防止することができる。
また、認証ラダーを制御プログラムの規模に応じて挿入する位置を変更することで、悪意を持ったユーザによる解析を困難にすることができ、実行中の制御プログラムの広い範囲で不正利用を検出することができる。
【0075】
以上、本実施の形態では、
認証ラダー自動生成処理部にて認証ラダーを生成する際に性能面への影響を考慮するためにユーザによって設定された制御プログラムの実行時間の制約時間を格納する実行制約時間記憶部と、
前記実行制約時間記憶部に格納した制約時間とユーザが作成した制御プログラムの実行時間との差を算出し認証ラダーを挿入可能な空き時間を確認する認証ラダー性能確認部と、
認証ラダーを自動生成する際に制御プログラムの規模と前記認証ラダー性能確認部にて算出した空き時間に応じて挿入する認証ラダーの数を判断する認証ラダー挿入判断部を設けたFA機器制御プログラムの不正利用防止システムを説明した。
【0076】
実施の形態3.
本実施の形態では、PLCから読み出した制御プログラムに挿入されている認証ラダーをユーザに見せないようにするために認証ラダーをフィルタリングすると共に、ユーザが編集した後の制御プログラムに対して認証情報に基づいて算出したステップ数に合わせて認証ラダーの挿入位置を調整する機能を説明する。
【0077】
図7は、本実施の形態に係る不正利用防止システムの機能構成を示す。
図7に示す不正利用防止システムは、制御プログラムに挿入された認証ラダーをユーザに見せないようにするために認証ラダーをフィルタリング処理し、制御プログラムの編集後に認証ラダーの挿入位置を調整する。
【0078】
エンジニアリング環境側PC100では、制御プログラム読出し要求部21、認証ラダーフィルタリング処理部22、認証ラダー挿入位置調整処理部23及び表示部30が追加されている。
他の要素は、図1で示したものと同様である。
なお、本実施の形態では、アクセス要求送信処理部4は、認証ラダーが挿入されている制御プログラム(合成プログラム)をPLC200から入力する。
本実施の形態では、アクセス要求送信処理部4はプログラム入力部の例となる。
なお、実施の形態1と同様に、制御プログラムはPLC200以外での使用は許可されていない。
また、認証ラダーは、実施の形態1で示したものと同様である。
また、認証ラダー生成用乱数記憶部8aは、実施の形態1で説明した認証ラダー生成用乱数を記憶しており、乱数記憶部の例である。
また、シリアルID記憶部9aは、実施の形態1で説明したPLC200のシリアルIDを記憶しており、固有識別情報記憶部の例である。
【0079】
制御プログラム読出し要求部21は、ユーザからの制御プログラムの読出し指示を受けてアクセス要求送信処理部4に対して制御プログラムの読出しを要求する。
【0080】
認証ラダーフィルタリング処理部22は、PLC200から読み出した制御プログラム内の認証ラダーの挿入位置を認証処理部10aにて生成した認証情報に基づいて特定し、制御プログラム作成部2にて制御プログラムを表示部30に表示する際にユーザには認証ラダーを見せないようにするために制御プログラムのフィルタリング(非表示設定)を行う。
つまり、認証ラダーフィルタリング処理部22は、認証ラダー生成用乱数記憶部8aの乱数とシリアルID記憶部9aのシリアルIDに対するハッシュ値である認証情報に基づき、PLC200の認証ラダーの挿入位置決定アルゴリズムと同じアルゴリズムに従い、それぞれの認証ラダーの位置を判別して、それぞれの認証ラダーに対して非表示設定を行う。
認証ラダーフィルタリング処理部22は非表示設定部の例である。
【0081】
表示部30は、認証ラダーフィルタリング処理部22による非表示設定に基づき、認証ラダーは表示せずに、制御プログラムのみを表示する。
【0082】
認証ラダー挿入位置調整処理部23は、制御プログラム作成部2で制御プログラムの編集が行われた後に認証情報に基づいて算出した認証ラダーの挿入位置(ステップ数)を元のステップ数の位置に挿入されるように調整する。
つまり、認証ラダー挿入位置調整処理部23は、制御プログラムが編集されて制御プログラムが更新された結果、いずれかの認証ラダーの配置が変動した場合に、当該認証ラダーの位置を変動前の位置に戻す。
例えば、図4(b)の例において、ユーザが制御プログラムを編集した結果、234ステップ目にあったA234が1つ後ろの235ステップ目の位置にずれた場合は、認証ラダー挿入位置調整処理部23は、A234を元の234ステップ目の位置に戻す(X50の前の位置にする)。
認証ラダー挿入位置調整処理部23は、位置調整部の例である。
【0083】
PLC200では、制御プログラム読出し処理部24が追加されている。
制御プログラム読出し処理部24は、実行用制御プログラム記憶部15から制御プログラム(合成プログラム)を読み出す。
また、本実施の形態では、アクセス要求受信処理部11は、制御プログラム読出し処理部24により読み出された制御プログラムをエンジニアリング環境側PC100に出力する。
本実施の形態では、アクセス要求受信処理部11及び制御プログラム読出し処理部24は、プログラム出力部に相当する。
【0084】
なお、図7では、PLC200において本実施の形態に係る動作に直接関係のない要素の図示を省略している。
しかし、PLC200には、制御プログラム書込み処理部12、認証ラダー自動生成処理部13、認証ラダー挿入処理部14、制御プログラム実行制御部16、専用デバイス設定部17等の実施の形態1及び実施の形態2で説明した要素が含まれているものとする。
【0085】
次に、セキュリティ設定部6aのセキュリティ設定が有効となっている場合に制御プログラムの読出し要求を出した場合に実行される認証について説明する。
【0086】
入力部1からPLC200に格納されている制御プログラムの読出し要求を制御プログラム読出し要求部21が受けると、セキュリティ設定部6aのセキュリティ設定を確認して、セキュリティ設定が有効である場合にPLC200との間でチャレンジ&レスポンス認証を実施するために認証処理部10aにチャレンジ値(乱数)の生成を要求する。
認証処理部10aは、乱数の生成を乱数生成処理部7に要求し、受け取った乱数を制御プログラム読出し要求部21に返す。
制御プログラム読出し要求部21は、アクセス要求送信処理部4に対してPLC200との間でチャレンジ&レスポンス認証を行うよう要求する。
アクセス要求送信処理部4は、アクセス要求受信処理部に対して認証要求とチャレンジ値(乱数)を送信する。
【0087】
認証要求を受け取ったアクセス要求受信処理部11は、認証処理部10bに対して受け取ったチャレンジ値を渡してレスポンス値の生成を指示する。
認証処理部10aは、レスポンス値の生成要求を受けて認証ラダー生成用乱数記憶部8bに格納されている乱数とシリアルID記憶部9bに格納されているシリアルID、およびチャレンジ値として受け取った乱数を入力としてハッシュ関数にてレスポンス値(ハッシュ値)を生成し、生成したレスポンス値をアクセス要求受信処理部11に返す。
アクセス要求受信処理部11は、受け取ったレスポンス値をアクセス要求送信処理部4に返し、レスポンス値を受け取ったアクセス要求送信処理部4はレスポンス値を制御プログラム読出し要求部21に返す。
【0088】
制御プログラム読出し要求部21は、認証処理部10aに対して受け取ったレスポンス値を渡し、認証処理部10aはPLC200と同じアルゴリズムを用いて認証ラダー生成用乱数記憶部8aに格納されている乱数とシリアルID記憶部9aに格納されているシリアルIDと先ほど生成したチャレンジ値を入力としてハッシュ関数にてハッシュ値を生成し、レスポンス値と比較し、比較結果を制御プログラム読出し要求部に通知する。
制御プログラム読出し要求部21は、比較結果が不一致だった場合は制御プログラムの読出し処理を中止し、ユーザに対してPLCからの制御プログラムの読出しができないことを通知する。
比較結果が一致した場合は、制御プログラム読出し要求部21はアクセス要求送信処理部4に対して制御プログラムの読出し要求を指示する。
【0089】
アクセス要求受信処理部11は、制御プログラムの読出し要求を受けると制御プログラム読出し処理部24に制御プログラムの読出しを指示する。
制御プログラム読出し処理部24は、実行用制御プログラム記憶部15から制御プログラムを読出し、アクセス要求受信処理部11に返す。
制御プログラム読出し要求部21は、PLC200から読み出した制御プログラムを制御プログラム記憶部3に格納する。
この様にセキュリティ設定が有効になっている場合には、制御プログラムとPLCとの関連付けの情報を用いて認証を行い、同じ関連付けの情報を持っていないプロジェクトとPLC間では制御プログラムの書込みや読出し処理はできないように制御する。
これは、PLCに格納されている制御プログラムを容易に外部へ読み出されて不正コピーを作成されないようにするためである。
なお、本実施の形態では制御プログラムの読出し時に認証処理を実施しているが、制御プログラムの書込み処理を実施する場合も同様に認証処理を行うこととする。
また、本実施の形態ではエンジニアリング環境側からのみ認証要求を行っているが、PLC200側でも実行用制御プログラム記憶部15に対するアクセス要求があった場合にエンジニアリング環境側PC100側へ認証を要求してもよい。
【0090】
次にPLCから読み出した制御プログラムに挿入されている認証ラダーをユーザに見せないようにするためにフィルタリングする処理について説明する。
【0091】
ユーザが入力部1を用いて制御プログラム記憶部3に格納されている制御プログラムの表示/編集の指示を出した際、認証ラダーフィルタリング処理部22は、認証処理部10aで生成した認証情報を取得し、取得した認証情報に基づいて認証ラダー挿入処理部14にて制御プログラムに挿入されている認証ラダーの挿入位置を確認する(認証情報からステップ数を算出して認証ラダーの挿入位置を把握する)。
認証ラダーフィルタリング処理部22は、制御プログラム記憶部3から制御プログラムを読出し、1度のみ実行するように設定した認証ラダー(図4(a)に例示した認証ラダー)と前記算出したステップ数に位置する認証ラダー(制御プログラム中の特定のステップ数に挿入した認証ラダー:図4(b)に例示した認証ラダー)に対して非表示設定を行う。
制御プログラム作成部2は、認証ラダーフィルタリング処理部22から受け取った制御プログラムを表示する際、非表示設定されている箇所を確認して、非表示設定されている箇所の認証ラダーを表示しない制御を行って表示部30に出力し、表示部30は認証ラダーを表示せずに制御プログラムのみを表示する。
【0092】
また、認証ラダー挿入位置調整処理部23は、制御プログラム作成部2にて編集された後の制御プログラムに対して、ユーザによる命令の追記や削除によって生じた認証ラダー挿入位置(ステップ数)を認証処理部10aで生成した認証情報に基づいて元の位置に戻してから、制御プログラムを制御プログラム記憶部3に格納する。
【0093】
このように、本実施の形態によれば、ユーザに認証ラダーを見せないことで、正規ユーザが誤って認証ラダーを削除したり変更したりするのを防ぎ、悪意を持ったユーザに制御プログラムの不正利用防止方法を解析されるのを困難にして制御プログラムの不正利用を防ぐことができる。
【0094】
以上、本実施の形態では、
エンジニアリング環境からPLCの実行用制御プログラム記憶部に格納されている制御プログラムの読み出し要求を受けてアクセス要求送信処理部に制御プログラムの読出し指示を出して読み出した制御プログラムを制御プログラム記憶部に格納する制御プログラム読出し要求部と、
認証ラダーが挿入された制御プログラムをユーザが表示/編集する場合に認証ラダーをユーザに見せないようにするためにフィルタリングをかける認証ラダーフィルタリング処理部と、
制御プログラム作成部にてユーザが制御プログラムを編集した場合に認証情報に合わせて挿入していた認証ラダーを元の位置に戻す処理を行う認証ラダー挿入位置調整処理部と、
実行用制御プログラム記憶部から制御プログラムを読み出す処理を行う制御プログラム読出し処理部を設けたFA機器制御プログラムの不正利用防止システムを説明した。
【0095】
実施の形態4.
本実施の形態では、PLCから読み出した制御プログラムに対して、ユーザに専用デバイスの存在が明らかにならないようにするために認証ラダー挿入処理部14にて挿入した認証ラダーの専用デバイスを既存のデバイスに置き換える機能を説明する。
【0096】
図8は、本実施の形態に係る不正利用防止システムの機能構成を示す。
図8の不正利用防止システムでは、制御プログラムに挿入された認証ラダーの専用デバイスの番号をあらかじめ変換テーブルに設定した変換ルールに従って既存のデバイスの番号に置き換える。
【0097】
エンジニアリング環境側PC100の構成要素のそれぞれは、実施の形態1〜3で説明したものであるため、説明を省略する。
【0098】
PLC200では、図7の構成に認証ラダー変換テーブル記憶部25及び認証ラダー変換処理部26が追加されている。
なお、図8でも、PLC200において本実施の形態に係る動作に直接関係のない要素の図示を省略している。
しかし、PLC200には、制御プログラム書込み処理部12、認証ラダー自動生成処理部13、認証ラダー挿入処理部14、制御プログラム実行制御部16、専用デバイス設定部17等の実施の形態1及び実施の形態2で説明した要素が含まれているものとする。
【0099】
認証ラダー変換テーブル記憶部25は、エンジニアリング環境側PC100から制御プログラムの読み出し要求があった場合に制御プログラム中に挿入されている認証ラダーの専用デバイス番号を既存のデバイスの番号に変換する際に利用する変換テーブルを格納している。
【0100】
認証ラダー変換処理部26は、認証ラダー変換テーブル記憶部25に格納されている変換テーブルを用いて専用デバイス番号を既存のデバイス番号に置き換える処理を行う。
前述のように、専用デバイスのデバイス番号は、対象デバイスのデバイス番号と番号体系が異なる(実施の形態1の例では、専用デバイス番号は「A」で始まり、対象デバイス番号は「X」、「Y」、「E」で始まる)。
このため、認証ラダー変換処理部26は、実行用制御プログラム記憶部15に格納されている制御プログラム(合成プログラム)の出力指示がエンジニアリング環境側PC100からあった場合に、認証ラダーの専用デバイス番号を対象デバイス番号と同じ番号体系に変更する(専用デバイス番号を例えば「X」で始まるようにする)。
認証ラダー変換処理部26は、デバイス番号変更部の例である。
また、本実施の形態では、アクセス要求受信処理部11(プログラム出力部)は、認証ラダー変換処理部26により変更された後の専用デバイス番号が含まれる制御プログラム(合成プログラム)をエンジニアリング環境側PC100に出力する。
【0101】
次に、セキュリティ設定が有効となっている場合に制御プログラムの読み出しを実施した際に認証ラダーの専用デバイス番号を既存のデバイス番号に置き換える処理について説明する。
【0102】
制御プログラム読出し処理部24がエンジニアリング環境側PC100から制御プログラムの読み出し要求を受けると、制御プログラム読出し処理部24は、セキュリティ設定部6bのセキュリティ設定を確認し、セキュリティ設定が有効である場合に実行用制御プログラム記憶部15から読み出した制御プログラムに挿入されている認証ラダーの専用デバイスを既存のデバイスへの置き換えを認証ラダー変換処理部26に依頼する。
【0103】
専用デバイスの既存デバイスへの変換要求を受けた認証ラダー変換処理部26は、認証ラダー変換テーブル記憶部25に設定されている変換テーブルに基づいて認証ラダーにて使用している専用デバイスを既存のデバイス(XデバイスやYデバイス)への置き換えを実施する。
例えば、専用デバイスA234は、既存デバイスであるX234に変換する。
既存デバイスに変換する場合に必ずXデバイスに変換する必要は無く、既存デバイスであれば良い。
また、デバイス番号についても専用デバイスと同じにする必要も無く置き換えた既存デバイスにて使用可能なデバイス番号であれば良い。
【0104】
なお、専用デバイスを既存デバイスに置き換えた制御プログラムを読み取ったエンジニアリング環境側では、実施の形態3にて記載した通り、認証ラダーに対してフィルタリングを掛けて認証ラダーをユーザには見せないため、変換テーブルは必要ない。
【0105】
このように、本実施の形態によれば、エンジニアリング環境側に読み出した制御プログラムに挿入した認証ラダーの専用デバイスを既存のデバイスに置き換えることで、例えば悪意を持ったユーザが読み出した制御プログラムをバイナリエディタやコードを解析するためのツールにて開いた際に、従来の制御プログラムでは使用していないデバイスが使われていることを容易にわからなくすることができ、認証処理の仕組みを解析されにくくすることができる。
つまり、実施の形態3によれば、認証ラダーを非表示にするため、専用デバイス番号は表示されないが、上記のようなツールが用いられた場合には、非表示に設定されていても専用デバイス番号の存在が明らかになる場合がある。本実施の形態では、このようなツールが用いられた場合でも、専用デバイス番号が通常のデバイス番号と同じ番号体系になっているので、専用デバイス番号が識別されることを回避することができる。
【0106】
以上、本実施の形態では、
エンジニアリング環境からの制御プログラムの読み出しが要求された際に制御プログラム読出し処理部からの指示を受けて認証ラダーの専用デバイスを既存のデバイスに置き換える認証ラダー変換処理部と、
認証ラダー変換処理部にて認証ラダーの専用デバイスを既存のデバイスに置き換える際に利用する変換テーブルを格納する認証ラダー変換テーブル記憶部を設けたFA機器制御プログラムの不正利用防止システムを説明した。
【0107】
実施の形態5.
本実施の形態では、PLCから制御プログラムの読み出しが行われる度にPLCに設けたカウンタの値を用いて認証情報を再生成し、認証ラダーも再生成して制御プログラム中に挿入済みの認証ラダーとの入れ替えを実施してからエンジニアリング環境側に送信する機能を説明する。
【0108】
図9は、本実施の形態に係る不正利用防止システムの機能構成を示す。
図9の不正利用防止システムでは、PLC200から制御プログラムの読み出しが行われる度にPLC200に設けたカウンタの値を用いて再生成した認証情報に基づき認証ラダーの再生成が行われ、制御プログラムに挿入されている認証ラダーとの入れ替えが行われる。
【0109】
図9では、エンジニアリング環境側PC100において、操作履歴記憶部27が追加されている。
操作履歴記憶部27は、エンジニアリング環境側PC100上でユーザが実行した機能名や実行したときのタイムスタンプおよびエラー情報などの操作内容を格納する。
操作履歴記憶部27は入力回数計数部の例である。
なお、操作履歴記憶部27以外のエンジニアリング環境側PC100の構成要素は、実施の形態1〜3で説明したものであるため、説明を省略する。
なお、図面上のスペースの問題により表示部30は図示が省略されているが、図9のエンジニアリング環境側PC100には表示部30が存在するものとする。
【0110】
PLC200では、認証ラダー削除処理部28及びカウンタ処理部29が追加されている。
【0111】
認証ラダー削除処理部28は、制御プログラム中に挿入されている認証ラダーを削除する。
より具体的には、アクセス要求受信処理部11(プログラム出力部)は、外部装置たるエンジニアリング環境側PC100より認証ラダーが挿入されている制御プログラム(合成プログラム)の出力指示があった場合に、制御プログラム(合成プログラム)をエンジニアリング環境側PC100に出力するが、エンジニアリング環境側PC100への出力の度に、制御プログラム(合成プログラム)から認証ラダーを削除する。
認証ラダー削除処理部28は、削除処理部の例である。
【0112】
カウンタ処理部29は、エンジニアリング環境からの制御プログラムの読み出し要求を受け付ける度にPLC200内に設けたカウンタの値をカウントアップしカウントアップした値を記憶する。
つまり、アクセス要求受信処理部11により制御プログラム(合成プログラム)がエンジニアリング環境側PC100に出力される度に、出力回数を計数する。
カウンタ処理部29は、出力回数計数部である。
【0113】
そして、本実施の形態では、認証ラダー自動生成処理部13(認証プログラム生成部)は、アクセス要求受信処理部11により制御プログラム(合成プログラム)がエンジニアリング環境側PC100に出力される度に、シリアルID記憶部9bのシリアルIDとカウンタ処理部29の計数値と認証ラダー生成用乱数記憶部8bの乱数とに基づいて、新たに専用デバイスのデバイス番号を選択し、新たな専用デバイス番号が含まれる新たな認証ラダーを生成し、生成した新たな認証ラダーごとに認証ラダー削除処理部28による削除処理後の制御プログラム内の新たな挿入位置を決定する。
そして、認証ラダー挿入処理部14(プログラム合成部)は、認証ラダー自動生成処理部13により決定された新たな挿入位置にて新たな認証ラダーのそれぞれを制御プログラムに挿入して新たな合成プログラムとする。
【0114】
なお、図9では、PLC200において本実施の形態に係る動作に直接関係のない要素の図示を省略している。
しかし、PLC200には、制御プログラム書込み処理部12、制御プログラム実行制御部16、専用デバイス設定部17等の実施の形態1〜3で説明した要素が含まれているものとする。
【0115】
次に、本実施の形態に係る動作を説明する。
まず、PLC200側の動作を説明する。
【0116】
実施の形態1では、制御プログラムのPLCへの初回書込みの際にエンジニアリング環境側PC100で生成した乱数とPLC200のシリアルIDの2つ情報を入力としてハッシュ関数にて認証情報を生成していた。
本実施の形態では、前記2つの情報以外にカウンタ処理部29のカウンタの値も用いて認証情報を生成し、生成した認証情報から認証ラダーの生成を行う。
カウンタ処理部29のカウンタは、エンジニアリング環境側PC100から制御プログラムの読出し要求を受ける度にカウントアップする。
このカウンタの値は制御プログラムの初回書込み時に初期値0が設定され、初回書込み時に認証情報を生成する際のカウンタの値は0を用いる。
この後に、エンジニアリング環境側PC100からの制御プログラムの読出し要求を受けると、認証ラダー自動生成処理部13がカウンタ処理部29にカウントアップを指示し、当該指示によりカウンタ処理部29はカウンタの値を1つカウントアップする。
【0117】
エンジニアリング環境側PC100からの制御プログラムの読み出し要求を受けた制御プログラム読出し処理部24は認証ラダー自動生成処理部13に対して認証ラダーの再生成を指示する。
認証ラダー自動生成処理部13は、認証ラダーの再生成要求を受けて認証処理部10bに認証情報の生成を指示する。
認証処理部10bでは認証ラダー生成用乱数記憶部8bに格納されている乱数とシリアルID記憶部9bに格納されているシリアルIDおよびカウンタ処理部29に格納されているカウンタ値に対してハッシュ演算を行って認証情報を生成し、認証ラダー自動生成処理部13に返す。
認証ラダー自動生成処理部13は受け取った認証情報と制御プログラムを認証ラダー削除処理部28に渡す。
認証ラダー削除処理部28は受け取った認証情報に基づいて制御プログラム内に現在挿入されている認証ラダーの挿入位置を特定して認証ラダーを削除し、認証ラダーを削除した制御プログラムを認証ラダー自動生成処理部13に返す。
認証ラダー自動生成処理部13は、カウンタ処理部29に対してカウンタアップの指示を出し、カウンタ処理部29はカウンタの値をカウントアップして保持する。
認証ラダー自動生成処理部13は再度認証処理部10bに対して認証情報の生成を要求し、認証処理部10bはカウントアップしたカウンタの値を用いて認証情報の再生成を行い、再生成した認証情報を認証ラダー自動生成処理部13に返す。
認証ラダー自動生成処理部13は再生成した認証情報から認証ラダーを自動生成し(各認証ラダーの挿入位置を特定し)、生成した認証ラダーと、認証ラダー削除処理部28にて認証ラダーを削除した制御プログラムを認証ラダー挿入処理部14に渡す。
そして、認証ラダー自動生成処理部13は、再生成した認証ラダーの制御プログラムへの再挿入を指示し、認証ラダー挿入処理部14にて認証ラダーを再挿入する。
認証ラダーが再挿入された制御プログラムを制御プログラム読出し処理部24は、アクセス要求受信処理部11を経由してエンジニアリング環境へ送信する。
【0118】
次に、エンジニアリング環境側PC100側での動作について説明する。
【0119】
制御プログラムを受け取った制御プログラム読出し要求部21は、制御プログラム記憶部3に格納する。
ユーザが入力部1を用いて制御プログラム記憶部3に格納されている制御プログラムの表示/編集の指示を出した際、認証ラダーフィルタリング処理部22は認証処理部10aに認証情報の生成を依頼する。
認証情報の生成要求を受けて認証処理部10aは、操作履歴記憶部27に格納されている操作履歴からPLC200からの制御プログラムの読み出し処理を実行した回数(読出しに成功した場合の回数のみ)を算出する。
次に、認証処理部10aは、算出した値(この値はPLCのカウンタ処理部29にて保持されているカウンタの値と同一)と認証ラダー生成用乱数記憶部8aに格納されている乱数およびシリアルID記憶部9aに格納されているシリアルIDから認証情報を算出し、認証ラダーフィルタリング処理部22に返す。
認証ラダーフィルタリング処理部22では、取得した認証情報に基づいて認証ラダー挿入処理部14にて制御プログラムに挿入されている認証ラダーの挿入位置を確認する(認証情報からステップ数を算出して認証ラダーの挿入位置を把握する)。
認証ラダーフィルタリング処理部22は制御プログラム記憶部3から制御プログラムを読出し、1度のみ実行するように設定した認証ラダー(図4(a)に例示した認証ラダー)と前記算出したステップ数に位置する認証ラダー(制御プログラム中の特定のステップ数に挿入した認証ラダー:図4(b)に例示した認証ラダー)に対して非表示設定を行う。
制御プログラム作成部2は、認証ラダーフィルタリング処理部22から受け取った制御プログラムを表示する際、非表示設定されている箇所を確認して、非表示設定されている箇所の認証ラダーを表示しない制御を行って表示部30に出力し、表示部30は認証ラダーを表示せずに制御プログラムのみを表示する。
また、認証ラダー挿入位置調整処理部23(位置調整部)は、制御プログラム作成部2にて編集された後の制御プログラムに対して、ユーザによる命令の追記や削除によって生じた認証ラダー挿入位置(ステップ数)を認証処理部10aで生成した認証情報に基づいて元の位置に戻してから、制御プログラムを制御プログラム記憶部3に格納する。
【0120】
このように、本実施の形態では、実行用制御プログラム記憶部15に格納されている制御プログラムの読み出し要求を受ける度にカウンタをカウントアップし、そのカウンタの値を用いて認証情報とその認証情報に基づいて認証ラダーを再生成して、制御プログラム中に挿入済みの認証ラダーと入れ替える。
これらの処理により、エンジニアリング環境側PC100側に読み取った制御プログラムは毎回異なるため、悪意を持ったユーザによる認証処理の解析を困難にすることができる。
更に、悪意を持ったユーザが制御プログラムを仮に別のPLCにコピーできたとしてもPLCごとに固有なカウンタの値を用いて認証情報を生成しているのでより制御プログラムの不正利用を防ぐことができる。
なお、通常、制御プログラムをPLCに書込んで実際の動作を確認しており、その結果に応じて制御プログラムなどをエンジニアリング環境との間で書込み/読出しを繰り返しながらプログラムやパラメータ設定を調整する作業を実施しているため、他のPLCとカウンタの値が同一になる可能性は低いと考える。
【0121】
以上、本実施の形態では、
ユーザがエンジニアリング環境上で実行した機能の操作履歴を格納する操作履歴記憶部と、
制御プログラムに挿入された認証ラダーを再挿入するために一旦制御プログラムから削除する認証ラダー削除処理部と、
エンジニアリング環境からの制御プログラムの読み出し要求を受ける度にカウンタの値をカウントアップしカウントアップした値を格納するカウンタ処理部を設けたFA機器制御プログラムの不正利用防止システムを説明した。
【符号の説明】
【0122】
1 入力部、2 制御プログラム作成部、3 制御プログラム記憶部、4 アクセス要求送信処理部、5 制御プログラム書込み要求部、6 セキュリティ設定部、7 乱数生成処理部、8 認証ラダー生成用乱数記憶部、9 シリアルID記憶部、10 認証処理部、11 アクセス要求受信処理部、12 制御プログラム書込み処理部、13 認証ラダー自動生成処理部、14 認証ラダー挿入処理部、15 実行用制御プログラム記憶部、16 制御プログラム実行制御部、17 専用デバイス設定部、18 実行制約時間記憶部、19 認証ラダー性能確認部、20 認証ラダー挿入判断部、21 制御プログラム読出し要求部、22 認証ラダーフィルタリング処理部、23 認証ラダー挿入位置調整処理部、24 制御プログラム読出し処理部、25 認証ラダー変換テーブル記憶部、26 認証ラダー変換処理部、27 操作履歴記憶部、28 認証ラダー削除処理部、29 カウンタ処理部、30 表示部、100 エンジニアリング環境側PC、200 PLC。

【特許請求の範囲】
【請求項1】
制御装置であって、
前記制御装置にユニークに設定されている固有識別情報を記憶する固有識別情報記憶部と、
前記制御装置の制御処理の対象となる対象デバイスのデバイス番号が含まれ、前記制御装置以外の装置による使用が許可されていないラダープログラムを主プログラムとして入力するプログラム入力部と、
前記固有識別情報に基づいて、前記制御装置以外の装置による主プログラムの使用を防止するラダープログラムを認証プログラムとして生成する認証プログラム生成部と、
主プログラムと認証プログラムとを合成して合成プログラムとするプログラム合成部と、
前記合成プログラムを記憶するプログラム記憶部とを有し、
前記認証プログラム生成部は、
対象デバイスのデバイス番号を疑似するデバイス番号であって、認証のために用いられる複数の認証用デバイスのデバイス番号を認証用デバイス番号として管理し、
前記固有識別情報に基づいて、1つ以上の認証用デバイス番号を選択し、
選択した選択認証用デバイス番号が含まれるラダープログラムであって、前記合成プログラムとして前記主プログラムとともに実行される際に前記認証プログラム生成部の選択動作から独立して前記固有識別情報に基づいて前記選択認証用デバイス番号が正確に選択され前記選択認証用デバイス番号に対応する選択認証用デバイスの各々に対して所定の設定処理が行われれば正常に動作して前記主プログラムが正常に動作し、前記合成プログラムとして前記主プログラムとともに実行される際に前記選択認証用デバイスの各々に対して前記設定処理が行われない場合には正常に動作せず前記主プログラムの動作が停止するラダープログラムを認証プログラムとして生成することを特徴とする制御装置。
【請求項2】
前記制御装置は、更に、
前記複数の認証用デバイスを各々の認証用デバイス番号と対応付けて管理し、前記プログラム記憶部に記憶されている合成プログラムの実行の際に、前記認証プログラム生成部の選択動作から独立して前記固有識別情報に基づいて1つ以上の認証用デバイス番号を選択し、選択した選択認証用デバイス番号に対応する選択認証用デバイスの各々に対して所定の設定処理を行う設定処理部と、
前記設定処理部により前記選択認証用デバイスの各々に対して設定処理が行われた後に、前記プログラム記憶部に記憶されている合成プログラムの実行を行うプログラム実行部とを有することを特徴とする請求項1に記載の制御装置。
【請求項3】
前記制御装置は、更に、
乱数を記憶する乱数記憶部と、
前記認証プログラム生成部による認証プログラムの生成に先立ち、前記乱数記憶部に記憶されている乱数と前記固有識別情報記憶部に記憶されている固有識別情報とに対して一方向演算を行い、前記設定処理部による設定処理に先立ち、前記乱数記憶部に記憶されている乱数と前記固有識別情報記憶部に記憶されている固有識別情報とに対して一方向演算を行う一方向演算部とを有し、
前記認証プログラム生成部は、
前記一方向演算部による一方向演算値に基づいて、1つ以上の認証用デバイス番号を選択し、選択した選択認証用デバイス番号が含まれる認証プログラムを生成し、
前記設定処理部は、
前記一方向演算部による一方向演算値に基づいて、1つ以上の認証用デバイス番号を選択し、選択した選択認証用デバイス番号に対応する選択認証用デバイスの各々に対して所定の設定処理を行うことを特徴とする請求項2に記載の制御装置。
【請求項4】
前記認証プログラム生成部は、
選択認証用デバイスをOFF状態からON状態にする設定処理が行われれば正常に動作して前記主プログラムが正常に動作し、選択認証用デバイスをOFF状態からON状態にする設定処理が行われない場合には正常に動作せず前記主プログラムの動作が停止するラダープログラムを認証プログラムとして生成し、
前記設定処理部は、
選択認証用デバイスをOFF状態からON状態にする設定処理を行うことを特徴とする請求項2又は3に記載の制御装置。
【請求項5】
前記認証プログラム生成部は、
2つ以上の認証用デバイス番号を選択し、
選択した選択認証用デバイス番号のすべてが含まれ前記主プログラムの先頭に配置されることになる先頭認証プログラムと、それぞれに選択認証用デバイス番号のいずれかが含まれ前記主プログラム内の複数の挿入位置に挿入されることになる2つ以上の挿入認証プログラムとの少なくともいずれかを生成し、
前記プログラム合成部は、
前記先頭認証プログラムを前記主プログラムの先頭に配置し、前記2つ以上の挿入認証プログラムを前記主プログラム内の複数の挿入位置に挿入することを特徴とする請求項1〜4のいずれかに記載の制御装置。
【請求項6】
前記制御装置は、更に、
主プログラムと認証プログラムが合成された合成プログラムの実行所要時間の許容範囲を許容時間として記憶する許容時間記憶部と、
前記プログラム入力部により入力された主プログラムの実行所要時間を予測する所要時間予測部と、
前記所要時間予測部により予測された予測所要時間と前記許容時間とに基づき、前記認証プログラムに含める認証用デバイス番号の個数を決定する個数決定部とを有し、
前記認証プログラム生成部は、
前記個数決定部により決定された個数分の認証用デバイス番号を選択することを特徴とする請求項1〜5のいずれかに記載の制御装置。
【請求項7】
前記制御装置は、更に、
前記プログラム入力部により入力された主プログラムのプログラムサイズが所定サイズ以上であるか否かを判断し、前記主プログラムのプログラムサイズが前記所定サイズ未満であれば、前記認証プログラム生成部に対して認証プログラムの生成の保留させ、前記主プログラムのプログラムサイズが前記所定サイズ以上であれば、前記認証プログラム生成部に対して認証プログラムの生成を指示するプログラムサイズ判断部を有することを特徴とする請求項1〜6のいずれかに記載の制御装置。
【請求項8】
前記認証プログラム生成部は、
2つ以上の認証用デバイス番号を選択し、
それぞれに選択認証用デバイス番号のいずれかが含まれる2つ以上の挿入認証プログラムを生成し、所定の挿入位置決定アルゴリズムに従って挿入認証プログラムごとに前記主プログラム内の挿入位置を決定し、
前記プログラム合成部は、
前記認証プログラム生成部により決定された挿入位置にて挿入認証プログラムのそれぞれを前記主プログラムに挿入し、
前プログラムサイズ判断部は、
前記認証プログラム生成部による挿入認証プログラムの生成に先立ち、前記主プログラムのプログラムサイズに基づき、前記挿入位置決定アルゴリズムに従って決定される挿入認証プログラムの挿入位置が前記主プログラムの特定部分に集中するか否かを判断し、
挿入認証プログラムの挿入位置が前記主プログラムの特定部分に集中する場合に、前記挿入位置決定アルゴリズム以外のアルゴリズムであって、挿入認証プログラムの挿入位置が前記主プログラム内でより分散するアルゴリズムに従って挿入認証プログラムの挿入位置を決定するよう前記認証プログラム生成部に指示することを特徴とする請求項7に記載の制御装置。
【請求項9】
前記認証プログラム生成部は、
前記対象デバイスと番号体系が異なる認証用デバイス番号が含まれる認証用プログラムを生成し、
前記制御装置は、更に、
前記プログラム記憶部に記憶されている合成プログラムの出力指示が外部装置からあった場合に、前記合成プログラム中の認証プログラムに含まれている選択認証用デバイス番号を、前記対象デバイスのデバイス番号と同じ番号体系のデバイス番号に変更するデバイス番号変更部と、
認証プログラムに前記デバイス番号変更部による変更後のデバイス番号が含まれる合成プログラムを前記外部装置に出力するプログラム出力部とを有することを特徴とする請求項1〜8のいずれかに記載の制御装置。
【請求項10】
前記認証プログラム生成部は、
2つ以上の認証用デバイス番号を選択し、
それぞれに選択認証用デバイス番号のいずれかが含まれる2つ以上の挿入認証プログラムを生成し、挿入認証プログラムごとに前記主プログラム内の挿入位置を決定し、
前記プログラム合成部は、
前記認証プログラム生成部により決定された挿入位置にて挿入認証プログラムのそれぞれを主プログラムに挿入して合成プログラムとし、
前記制御装置は、更に、
前記合成プログラムの出力指示が外部装置からあった場合に、前記合成プログラムを前記外部装置に出力するプログラム出力部と、
前記プログラム出力部により前記合成プログラムが前記外部装置に出力される度に、前記合成プログラムから前記2つ以上の挿入認証プログラムを削除する削除処理部と、
前記プログラム出力部により前記合成プログラムが前記外部装置に出力される度に、出力回数を計数する出力回数計数部とを有し、
前記認証プログラム生成部は、
前記プログラム出力部により前記合成プログラムが前記外部装置に出力される度に、前記固有識別情報と前記出力回数計数部の計数値とに基づいて、新たに2つ以上の認証用デバイス番号を選択し、それぞれに新たな選択認証用デバイス番号のいずれかが含まれる2つ以上の新たな挿入認証プログラムを生成し、生成した新たな挿入認証プログラムごとに前記削除処理部による削除処理後の主プログラム内の新たな挿入位置を決定し、
前記プログラム合成部は、
前記認証プログラム生成部により決定された新たな挿入位置にて新たな挿入認証プログラムのそれぞれを前記主プログラムに挿入して新たな合成プログラムとすることを特徴とする請求項1〜9のいずれかに記載の制御装置。
【請求項11】
制御装置を管理する管理装置であって、
前記制御装置以外の装置による使用が許可されていない、前記制御装置における制御に用いられる主プログラムと、前記制御装置以外の装置による主プログラムの使用を防止するために前記制御装置において生成された認証プログラムとが合成されている合成プログラムを前記制御装置から入力するプログラム入力部と、
前記合成プログラムの中から前記認証プログラムを抽出し、前記認証プログラムに対して非表示設定を行う非表示設定部と、
前記非表示設定部による非表示設定に基づき、前記認証プログラムは表示せずに、前記主プログラムのみを表示する表示部とを有することを特徴とする管理装置。
【請求項12】
前記管理装置は、更に、
前記制御装置にユニークに設定されている固有識別情報を記憶する固有識別情報記憶部と、
乱数を記憶する乱数記憶部とを有し、
前記プログラム入力部は、
複数の認証プログラムのそれぞれが前記主プログラム内の所定位置に配置されている合成プログラムであって、前記制御装置において所定の決定アルゴリズムに従い前記固有識別情報と前記乱数とを用いて認証プログラムごとに決定された位置にそれぞれの認証プログラムが配置されている合成プログラムを入力し、
前記非表示設定部は、
前記制御装置と同じ決定アルゴリズムに従い、前記固有識別情報記憶部の前記固有識別情報と前記乱数記憶部の前記乱数とを用いて、それぞれの認証プログラムの位置を判別して、それぞれの認証プログラムに対して非表示設定を行うことを特徴とする請求項11に記載の管理装置。
【請求項13】
前記管理装置は、更に、
前記制御装置にユニークに設定されている固有識別情報を記憶する固有識別情報記憶部と、
乱数を記憶する乱数記憶部と、
前記制御装置から前記合成プログラムが入力される度に、入力回数を計数する入力回数計数部とを有し、
前記プログラム入力部は、
複数の認証プログラムのそれぞれが前記主プログラム内の所定位置に配置されている合成プログラムであって、前記制御装置において所定の決定アルゴリズムに従い前記固有識別情報と前記乱数と前記制御装置から前記管理装置への合成プログラムの出力回数とを用いて認証プログラムごとに決定された位置にそれぞれの認証プログラムが配置されている合成プログラムを入力し、
前記非表示設定部は、
前記制御装置と同じ決定アルゴリズムに従い、前記固有識別情報記憶部の前記固有識別情報と前記乱数記憶部の前記乱数と前記入力回数計数部による計数値を用いて、それぞれの認証プログラムの位置を判別して、それぞれの認証プログラムに対して非表示設定を行うことを特徴とする請求項11に記載の管理装置。
【請求項14】
前記管理装置は、更に、
前記管理装置において前記合成プログラムが更新された結果、いずれかの認証プログラムの配置が変動した場合に、当該認証プログラムの位置を変動前の位置に戻す位置調整部を有することを特徴とする請求項12又は13に記載の管理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−165041(P2011−165041A)
【公開日】平成23年8月25日(2011.8.25)
【国際特許分類】
【出願番号】特願2010−28793(P2010−28793)
【出願日】平成22年2月12日(2010.2.12)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】