(57)【要約】【課題】制御プログラムを配信する開発装置自体の異常を検出し，当該異常によって引き起こされるプログラムの破壊や改ざんを防止可能な制御システムならびに認証装置を提供することを目的とする。【解決手段】制御対象を制御する制御装置と，前記制御装置が実行する複数の前記制御プログラムを管理し，所定の前記制御プログラム，及び，当該制御プログラムに付随する情報をネットワークへ送信する開発装置と，前記制御プログラムに付随する情報を前記制御プログラムごとに対応させて記憶する認証リストを有する装置であって，前記制御プログラム，及び，当該制御プログラムに付随する情報を前記開発装置から受信すると，前記開発装置から受信した前記付随する情報と前記認証リストに記憶されている情報とを照合して前記開発装置が正常であるか認証を行う認証装置と，を備えることを特徴とする。【選択図】  図１
2015075801.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御する制御装置と，
前記制御装置が実行する複数の前記制御プログラムを管理し，所定の前記制御プログラム，及び，当該制御プログラムに付随する情報をネットワークへ送信する開発装置と，
前記制御プログラムに付随する情報を前記制御プログラムごとに対応させて記憶する認証リストを有する装置であって，前記制御プログラム，及び，当該制御プログラムに付随する情報を前記開発装置から受信すると，前記開発装置から受信した前記付随する情報と前記認証リストに記憶されている情報とを照合して前記開発装置が正常であるか認証を行う認証装置と，を備えた制御システム。
【請求項２】
請求項１において，
前記認証装置は，前記認証の結果，前記開発装置は正常であると判断した場合には，受信した前記制御プログラムから署名を生成し，当該署名を前記制御装置へ送信することを特徴とする制御システム。
【請求項３】
請求項２において，
前記制御装置は，前記開発装置又は前記認証装置から受信した前記制御プログラムを受信すると，受信した前記制御プログラムに基づいて署名を生成し，当該生成した署名と，前記認証装置から受信した署名と，を照合して所定の照合結果が得られた場合には前記制御プログラムを実行することを特徴とする制御システム。
【請求項４】
請求項３において，
前記認証装置及び前記制御装置には予め共通の署名鍵が記憶され，前記認証装置及び前記制御装置は，それぞれが記憶する前記署名鍵を用いて前記制御プログラムから署名を生成することを特徴とする制御システム。
【請求項５】
請求項１において，
前記付随する情報は，前記制御プログラム識別するためのインスタンス識別子，対象となる前記制御装置を識別するための装置識別子，前記制御プログラムのバージョン情報，のいずれかを含むことを特徴とする制御システム。
【請求項６】
制御対象を制御する制御装置及び制御プログラムを生成する開発装置とネットワークを介して接続され，
前記制御プログラムに付随する情報が前記制御プログラムごとに関連付けられた認証リストを記憶するメモリと，
前記開発装置が生成した前記制御プログラム，及び，当該制御プログラムに付随する情報を前記ネットワーク経由で受信すると，前記開発装置から受信した前記付随する情報が前記認証リストに記憶されているかを検索して前記開発装置が正常であるか認証を行い，前記開発装置は正常であると判断した場合には，受信した前記制御プログラムから署名を生成し，当該署名を前記制御装置へ送信する演算処理部と，
を有する認証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，制御装置上で実行する制御プログラムに対する認証を行う装置，及びそのような装置を含む制御システムに関する。
【背景技術】
【０００２】
プラント等の制御対象設備の安全かつ安定な運転を担保するため，制御装置上で実行する制御プログラムが適切な環境において作成され，かつそれらが実行されるまでの間に破壊や改ざんを受けていないことを担保することが求められる。
【０００３】
本技術分野に関連する背景技術として，特許文献１には，「本発明は，実行される環境に関連する所定の基準を満足することを確証するためにアプリケーションを試験するシステム及び方法を提供することによって，安全かつ確実なアプリケーション配布を提供する。
さらに本発明は，規則及び許可リスト，アプリケーション除去，そしてデジタル署名などの変更検出技術を使用することによって，前記アプリケーションが変更されたか否かを決定し，所定のワイヤレス装置環境において実行する許可を有するか否かを決定し，前記アプリケーションを除去することにより，試験されたあるいは試験されていないアプリケーションを安全に配布及び実行する機構を提供する。」と記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２９３６７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
制御システムでは，制御プログラムの開発環境を搭載したＰＣやサーバなどの汎用計算機（以下，開発装置）から制御プログラムを制御装置へ配信することがある。そのような構成において，開発装置に搭載されるＯＳなどのソフトウェア要素やそれらによって駆動される通信手順を悪意ある部外者に利用されることにより，開発装置が誤動作する恐れがあった。
【０００６】
特許文献１には，開発者がサーバにアプリケーションを登録する際，電子署名を用いてプログラムの改ざんを検知できるようにすることが開示されている。しかし，この電子署名は，登録されるアプリケーションが開発者の手を離れた時点から変更されていないことを示しているに過ぎず，本発明の課題として挙げたような，開発装置自体が誤動作を起こした場合には効果が少ない。それは，例えば開発装置上の制御プログラム自体が署名生成以前に破壊されていたような場合には，破壊されている制御プログラムに対して電子署名が生成されてしまうため，そのような電子署名は破壊された制御プログラムを真正なものと判定してしまうためである。
【０００７】
そこで，本発明は，制御プログラムを配信する開発装置自体の異常を検出し，当該異常によって引き起こされるプログラムの破壊や改ざんを防止可能な制御システムならびに認証装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために，例えば特許請求の範囲に記載の構成を採用する。
本願は上記課題を解決する手段を複数含んでいるが，その一例を挙げるならば，制御対象を制御する制御装置と，前記制御装置が実行する複数の前記制御プログラムを管理し，所定の前記制御プログラム，及び，当該制御プログラムに付随する情報をネットワークへ送信する開発装置と，前記制御プログラムに付随する情報を前記制御プログラムごとに対応させて記憶する認証リストを有する装置であって，前記制御プログラム，及び，当該制御プログラムに付随する情報を前記開発装置から受信すると，前記開発装置から受信した前記付随する情報と前記認証リストに記憶されている情報とを照合して前記開発装置が正常であるか認証を行う認証装置と，を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば，制御プログラムを配信する開発装置自体の異常を検出し，当該異常によって引き起こされるプログラムの破壊や改ざんを防止することができる。
【００１０】
上記以外の課題，構成及び効果は，以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】本願の実施例における制御システムの全体構成例を示す図。
【図２】本願の実施例における識別情報の構成例を示す図。
【図３】本願の実施例における署名の生成方法を説明する図。
【図４】本願の実施例における署名の検証方法を説明する図。
【図５】本願の実施例におけるプログラム格納部の構成例を示す図。
【図６】本願の実施例における認証リストの構成例を示す図。
【図７】本願の実施例における開発装置の処理フローを示す図。
【図８】本願の実施例における認証装置の処理フローを示す図。
【図９】本願の実施例における制御装置の処理フローを示す図。
【発明を実施するための形態】
【００１２】
以下，図面を用いて本発明の実施例を説明する。
【実施例１】
【００１３】
本実施例では，本願の第一の発明である制御システムについて説明する。
＜各部の機能と動作の説明＞
図１は，本実施例の制御システムの全体構成図である。
【００１４】
本実施例の制御システムは，各種計測装置やアクチュエータ等によって構成される制御対象設備２と，制御対象設備２を制御する制御装置１と，制御装置１が実行する制御プログラムを配信する開発装置２０と，開発装置２０の健全性をチェックするとともに配信する制御プログラムに対して署名を作成する認証装置３０と，によって構成され，制御装置１，開発装置２０，及び，認証装置３０はネットワーク６５を介して接続される。制御装置１は，制御プログラム１１を記憶するメモリ１０と，制御プログラム１１を実行するプロセッサ１２と，認証装置から送られた署名が正しいか否かを検証する署名検証部１３と，署名を作成するための署名鍵を格納する署名格納部１４と，から構成され，それぞれはバスによって相互に接続されている。制御装置１は，メモリ１０にロードされた制御プログラム１１をプロセッサ１２が実行することにより，制御対象装置２に対する制御指令値を算出する。署名検証部１４は，実行対象の制御プログラム１１が変更されていないことを，該制御プログラムに対応する署名と，署名鍵格納部１４に格納された署名鍵４０によって検証し，その結果を変更検知判定１５として出力する（署名検証部１４の詳細は後に説明する）。プロセッサ１２は，制御プログラム１１の実行開始時に変更検知判定１５を参照し，変更が検出されなかった場合にのみ該制御プログラムの実行を開始する。
【００１５】
本実施例では，メモリ１０と署名格納部１４は別々の記憶装置として設ける。これによって，メモリ１０に対して変更があった場合においても署名格納部１４内の署名を用いることで確実に制御プログラムの健全性を判定できる。また，本実施例では，署名検証部２５をプロセッサ１２に処理とは別に署名検証に特化した処理部として設ける。これによって，プロセッサ１２の処理負荷を高めることなく署名検証ができる。
【００１６】
開発装置２０は，キーボード，マウス，タッチパネルなどの入力デバイスや，ディスプレイ，スピーカなどの出力デバイスで構成されるＨＭＩ（Ｈｕｍａｎ−Ｍａｃｈｉｎｅ Ｉｎｔｅｒｆａｃｅ）６５と，ＣＰＵ６１と，メモリ６２とで構成され，それぞれはバスによって相互に接続されている。ＣＰＵ６１は，実行する処理として制御プログラムを生成するプログラム生成制御部２１を有し，メモリ６２には，制御プログラム１１が格納されるプログラム格納部２３と，制御プログラム１１に付随する情報である識別情報２５が記憶される。開発装置２０は，ユーザが制御プログラム１１を作成し蓄積する機能を提供する。プログラム生成制御部２１は，ユーザからのソースコード作成操作及びソースコードからの実行形式プログラム生成操作２２を受け付け，生成物として制御プログラム１１を出力する。生成された制御プログラム１１は，プログラム格納部２３に蓄積される。
【００１７】
認証装置３０は，ＣＰＵ６３と，メモリ６４と，署名を生成するための署名鍵を格納する署名鍵格納部３５から構成され，それぞれはバスによって相互に接続される。ＣＰＵ６３は，実行する処理として開発装置２０の健全性を認証する認証処理部３１と，制御プログラム１１に対して署名を生成する署名生成部３４と，を有し，メモリ６４には，認証処理部３１の認証に用いる認証リスト３２が記憶される。認証装置３０は，認証処理部３１において，認証リスト３２を用いて開発装置２０から提示された識別情報２５を検証し，署名生成許可判定３３を出力する。署名生成部３４は，開発装置２０から出力された制御プログラム１１と，認証鍵格納部３５に格納された認証鍵４０を参照し，該制御プログラムに対応する署名３６を生成する（署名生成部３４の詳細は後に説明する）。
【００１８】
尚，認証装置３０内の署名鍵格納部３５と，制御装置１内の署名鍵格納部１４には予め同一の署名鍵４０が格納される。この格納処理は，各装置に直接記憶させることもできるし，ネットワーク６５を介して記憶させることもできる。
＜プログラムの認証＞
次に，制御プログラムの認証について説明する。
【００１９】
開発装置２０が悪意ある部外者による誤動作や乗っ取りを受けた場合，そもそも開発装置２０で生成された制御プログラム１１の正当性を担保することができない。そのため，まずは認証装置３０において開発装置２０を認証し，制御プログラム１１が健全な環境で作成されたことを確認する。
【００２０】
本実施例では，開発装置２０が誤動作や乗っ取りを受けた場合には再現が困難となるような情報を用いて認証を行う例を示す。
【００２１】
まず，ユーザは，作成した制御プログラム１１を制御装置１にロードする際，プログラム生成制御部２１に対してプログラム登録指示２４を指令する。この操作は，ＨＭＩ６５を介して行われ，具体的にはキーボード，マウス，タッチパネルなどの入力デバイスを用いて実行される。このとき，ユーザは，ロード対象の制御プログラム１１を識別するための情報であるインスタンス識別子１１０と，該制御プログラムのロード先となる制御装置１の装置識別子（ＩＤ，アドレスなどとも呼ばれる）１１１を入力するものとする。
【００２２】
プログラム生成制御部２１は，ユーザからプログラム登録指示２４が入力されると，まず，プログラム格納部２３から，ユーザが入力したインスタンス識別子１１０に対応付けられた制御プログラムを検索し，該当するものがあればその実体である制御プログラム１１を取得するとともに，該制御プログラムのバージョン番号１１２を取得する。
【００２３】
図５は，プログラム格納部２３のデータ構成を示す概念図である。プログラム格納部２３には，制御プログラムがツリー状に階層化されて格納されている。各階層は，案件名，システム名，コントローラ名，制御プログラムによって構成され，ユーザから入力された各階層に該当する情報を検索することで所望の制御プログラムを抽出することができる。
尚，最下層にある制御プログラムには，インスタンス識別子１１０，装置識別子１１１，バージョン番号１１２等が関連付けされて記憶される。
【００２４】
次に，プログラム生成制御部２１は，インスタンス識別子１１０，装置識別子１１１，バージョン番号１１２を用いて識別情報２５を生成し，メモリ６２へ格納し，制御プログラム１１とともに認証処理部３１に提示する。ここで，制御プログラム１１はパスワードをかけて暗号化することもできる。図２は，識別情報２５のデータ構成を示す図である，識別情報２５はインスタンス識別子１１０と，装置識別子１１１と，バージョン番号１１２を含んで構成される。その他，制御プログラム１１に関連するパスワードや，開発装置を操作しているユーザ情報を含めることもできる。
【００２５】
制御システムでは，異なるＩＤの制御装置には異なる制御プログラムのインスタンスがロードされ，また，制御プログラムは制御パラメータなどの調整のため随時バージョンアップされることから，部外者が正規のユーザを装ってこれらの情報を正確に再現することは困難である。一方で，従来の制御システムでも，正規のユーザであればこれらの情報は周知のものであり，これらの情報を確認することで開発装置２０が健全であるかどうかを判定することができる。
【００２６】
なお，開発装置２０から認証処理部３１へ識別情報２５を伝達し，認証処理部３１にて識別情報２５を判定する手順としては，情報セキュリティ分野で知られているチャレンジ＆レスポンス方式やＳ／Ｋｅｙ方式などを応用することができる。
【００２７】
チャレンジ＆レスポンス方式は，互いに共通のパスワードを有するサーバとクライアント間の認証方法であり，サーバからクライアントに乱数を送信し，クライアントは自身のパスワードを用いて乱数を暗号化したものをサーバへ返送し，サーバは返送された情報と，自身が送った乱数を自身のパスワードで暗号化したものとを照合して一致しているか否かを検証して認証を行う方式である。これによって，通信路にパスワードがそのまま流れることなく認証を行うことができる。
【００２８】
また，Ｓ／Ｋｅｙ方式も同様に互いに共通のパスワードを有するサーバとクライアント間の認証方法であり，サーバでは，パスワードをハッシュ関数でＮ重に暗号化した情報をクライアントに送信し，クライアントはパスワードをＮ−１重に暗号化した情報を返送し，サーバは，受信したＮ−１重に暗号化した情報にハッシュ関数を掛け合わせ，自身が有するＮ重に暗号化した情報と比較することによって認証を行う方式である。この方法も同様に，通信路にパスワードがそのまま流すことなく認証を行うことができる。
【００２９】
これらの方式を用いることで，開発装置２０と認証装置３０の間の通信路に識別情報２５をそのまま送出することを避け，通信路の盗聴などによって識別情報２５が漏洩し，以降の認証時に悪用されることを防止することができる。
【００３０】
次に認証装置３１側の処理を説明する。
【００３１】
図６は，認証リスト３２の構成を示す図である。認証リスト３２は，制御プログラムの識別情報であるインスタンス識別子に対応させて，そのプログラムを送信可能なユーザ情報，パスワード，装置識別子，バージョン番号等が記憶される。
【００３２】
認証処理部３１の側では，開発装置２０より提示された識別情報２５を認証リスト３２から検索し，合致する装置のエントリが存在する場合には認証成功と判定し，署名生成許可判定３３を出力する。具体的には，認証処理部３１は，開発装置２０から送られた制御プログラム１１のインスタンス識別子をキーに，認証リスト３２から対応する情報を検索し，開発装置２０から提示された識別子２５と合致するかを判定する。
【００３３】
認証処理部３１はさらに，制御装置１において制御プログラムの実行に失敗した場合の原因確認や，認証装置の動作状況確認のため，署名生成許可判定３３を認証装置３０外部に出力する。外部に出力された署名生成許可判定３３は，表示装置によりユーザに提示されてもよいし，ログ情報として外部記録媒体等に記録されてもよい。
＜署名の生成・検証＞
次に，制御プログラム１１に対応する署名の生成及び検証について，図３及び図４を参照して説明する。
【００３４】
図３は，認証装置３０において，制御プログラム１１に対応する署名を生成する方法を示す図である。
【００３５】
開発装置２０に対してユーザのプログラム登録指示２４が入力されたとき，前述のように識別情報２５が認証装置３０に提示されるが，そのとき，プログラム格納部２３から取得した制御プログラム１１が署名生成部３４へ出力される。
【００３６】
署名生成部では，プログラム格納部２３より制御プログラム１１が入力され，かつ認証処理部３１より署名生成許可判定３３が入力された場合に，制御プログラム１１と，署名鍵格納部３５に格納された署名鍵４０を署名生成アルゴリズム６６に入力し，署名３６を生成する。署名生成アルゴリズム５０は，情報セキュリティ分野で知られている鍵付きハッシュアルゴリズムや，ハッシュアルゴリズムの出力を暗号化した暗号化ハッシュ値のほか，同様の目的で設計されたアルゴリズムを任意に選択してよい。署名生成部３４は，上記の通り生成した署名３６を，制御プログラム１１とともに制御装置１へ送出する。
【００３７】
制御装置１は，制御プログラム１１と署名３６を署名生成部３４から取り込み，メモリ１０へロードする。このとき，それぞれがロードされるアドレスは，例えば制御プログラム１１がファイルとして送信される場合の付加情報として記録され，メモリ１０にロードされる際に参照される。
【００３８】
署名検証部１３は，前記のメモリ１０にロードされた制御プログラム１１と署名３６を用いて，制御プログラム１１が変更されていないか検証する。
【００３９】
図４は，制御装置１における制御プログラム１の検証方法を示す図である。
【００４０】
まず，メモリ１０上の制御プログラム１１と署名鍵格納部１４に格納されている署名鍵４０とを署名生成アルゴリズム５０に入力する。ここで，署名アルゴリズム５０は，認証装置６３が有する署名アルゴリズム６６と同様のものである。図示していないが，実際にはプロセッサ１２が制御プログラム１１と署名鍵４０を読み込み，署名生成アルゴリズム５０に入力するという手順をとる（以下同様）。署名生成アルゴリズム５０は，その演算結果として検査署名５１を出力する。次に，プロセッサ１２は検査署名５１と署名３６を比較部５２に入力すると，比較結果に応じた変更検知判定出力１５がプロセッサ１２に出力される。検査署名５１と署名３６が一致すれば，制御プログラム１１の変更はなかったと判定され，プロセッサ１２による制御プログラム１１の実行が許可される。一方，検査署名５１と署名３６が一致しなければ，制御プログラム１１の変更があったと判定され，所定の警報５３が出力される。
【００４１】
図７は，開発装置２０の処理の流れを示す処理フロー図である。開発装置２０はユーザからのプログラムの登録指示を受け付けるまで待機し（Ｓ１０１でＮＯ），受け付けた場合には（Ｓ１０１でＹＥＳ），プログラム格納部２３から指定された制御プログラム１１を抽出する（Ｓ１０２）。次に，抽出した制御プログラム１１から識別情報２５を生成し（Ｓ１０３），識別情報２５及び制御プログラム１１を認証装置３０へ送信する（Ｓ１０４）。 
図８は，認証装置３０の処理の流れを示す処理フロー図である。認証装置３０は，開発装置２０から識別情報２５の提示があるまで待機し（Ｓ２０１でＮＯ），識別情報の提示があった場合には（Ｓ２０１でＹＥＳ），前述した識別情報の判定処理を行う（Ｓ２０２）。識別情報判定処理の結果正しく認証できなかった場合には（Ｓ２０３でＮＯ），エラー処理を行い（Ｓ２０６），正しく認証できた場合には（Ｓ２０３でＹＥＳ），制御プログラム１１と，署名鍵４０から署名３６を生成する（Ｓ２０４）。次に，署名３６及び制御プログラム１１を制御装置1へ送信する（Ｓ２０５）。 
図９は，制御装置１の処理の流れを示す処理フロー図である。制御装置１は，認証装置３０から制御プログラム１１を受信するまで待機し（Ｓ３０１でＮＯ），受信した場合には（Ｓ３０１でＹＥＳ），受信した制御プログラム１１と，署名鍵格納部１４に格納された署名鍵４０を用いて署名を生成する（Ｓ３０２）。次に，署名検証部１３で生成した署名と， 認証装置３０から送られた署名３６を照合し（Ｓ３０３），照合の結果，一致しなかった場合には（Ｓ３０４でＮＯ），エラー処理を行う（Ｓ３０６）。 照合の結果，一致した場合には（Ｓ３０４でＹＥＳ），送られた制御プログラム１１は正常と判断し当該プログラムを実行する。 
以上説明した動作により，本実施例の制御システムは，開発装置が健全であることを示す識別情報が提示された場合にのみ，認証装置にて開発装置で作成された制御プログラムを受け付けて該制御プログラムに対応する署名を生成する。制御装置にて，認証装置よりロードした制御プログラムと，該制御プログラムに対して前記手順で生成された署名を用いた検証を行うことで，該制御プログラムが誤動作や乗っ取りのない健全な環境で作成され，かつ制御装置にロードされるまでの間に変更を受けていないことを確認することが可能となる。これによって，開発装置の誤動作や乗っ取りによって破壊または改ざんされた制御プログラムが真正なものと誤認されて制御装置に配信され実行されることを防止することができる。なお，本実施例の変形例として，制御装置１が制御プログラム１１を認証装置３０からロードする代わりに開発装置２０からロードする構成も考えられる。本変形例では，制御プログラム１１とそれに対する署名３６が完全に別の装置上にあるため，開発装置２０と認証装置３０の双方を乗っ取り，制御プログラム１１と署名３６をともに改ざんしない限り改ざんされた制御プログラム１１が制御装置１上で実行されないようにでき，セキュリティがさらに向上する。
【００４２】
尚，制御装置１，開発装置２０，及び，認証装置３０が有するＣＰＵやプロセッサは，不揮発性記憶媒体からプログラムをメモリに転送し，このプログラムを実行するものである。実行するプログラムとしては，オペレーティングシステムや，ＯＳ上で動作するアプリケーションプログラムを例示できる。
【００４３】
また，制御装置１，開発装置２０，及び，認証装置３０は，ネットワーク６５との通信機能を有する。この通信機能は，ＣＰＵやプロセッサが実行するプログラムから通信要求を受け取り，ネットワーク６５に対して通信する。通信機能としては，ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）チップ，ＰＨＹ（物理層）チップ，ＭＡＣとＰＨＹの複合チップ，ＦＰＧＡ，ＣＰＬＤ，ＡＳＩＣ，及びゲートアレイといったＩＣを例示できる。なお，これら通信機能は，ＣＰＵやプロセッサ，コンピュータ内部の情報経路を制御するチップセットに含まれていてもよい。
【００４４】
また，制御装置１，開発装置２０，及び，認証装置３０内のバスとしては，ＰＣＩバス，ＩＳＡバス，ＰＣＩ  Ｅｘｐｒｅｓｓバス，システムバス，及びメモリバスを例示できる。
【００４５】
なお，本発明は上記した実施例に限定されるものではなく，様々な変形例が含まれる。
例えば，上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり，必ずしも説明した全ての構成を備えるものに限定されるものではない。また，ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり，また，ある実施例の構成に他の実施例の構成を加えることも可能である。また，各実施例の構成の一部について，他の構成の追加・削除・置換をすることが可能である。 
また，上記の各構成，機能，処理部，処理手段等は，それらの一部又は全部を，例えば集積回路で設計する等によりハードウェアで実現してもよい。また，上記の各構成，機能等は，プロセッサがそれぞれの機能を実現するプログラムを解釈し，実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム，テーブル，ファイル等の情報は，半導体メモリや，ハードディスク等の記録装置，または，磁気や光を利用する記録媒体に置くことができる。 
また，制御線や情報線は説明上必要と考えられるものを示しており，製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００４６】
１  制御システム
２  制御対象設備
１０  メモリ
１１  制御プログラム
１２  プロセッサ
１３  署名検証部
１４  署名鍵格納部
１５  変更検知判定
２０  開発装置
２１  プログラム生成制御部
２２  ソースコード作成・プログラム生成操作
２３  プログラム格納部
２４  プログラム出力指示
２５  識別情報
３０  認証装置
３１  認証処理部
３２  認証基準情報
３３  署名生成許可判定
３４  署名生成部
３５  署名鍵格納部
４０  署名鍵
６１  ＣＰＵ
６２  メモリ
６３  ＣＰＵ
６４  メモリ
６５  ネットワーク
６６  署名生成アルゴリズム
【図１】
2015075801.tif 000003
【図２】
2015075801.tif 000004
【図３】
2015075801.tif 000005
【図４】
2015075801.tif 000006
【図５】
2015075801.tif 000007
【図６】
2015075801.tif 000008
【図７】
2015075801.tif 000009
【図８】
2015075801.tif 000010
【図９】
2015075801.tif 000011