(57)【要約】【課題】プログラムのセキュリティが維持されるＦＡシステムの制御方法を提供する。【解決手段】ＦＡシステムの制御方法は、暗号ルール発行装置が暗号鍵と復号鍵とを生成するステップ（Ｓ２０４）と、インターネットを介してＰＬＣ（プログラマブル・ロジック・コントローラ）に復号鍵を送信するステップ（Ｓ２０６）と、暗号変換機に暗号鍵を送信するステップ（Ｓ２１０）と、暗号変換機が暗号鍵を用いて制御プログラムを暗号化するステップ（Ｓ２１６）と、暗号変換機が、暗号化により生成されたプログラムをＰＬＣに送信するステップ（Ｓ２１８）と、ＰＬＣが制御プログラムを復号化するステップ（Ｓ２２２）とを含む。【選択図】図２
2008067162.tif 000002
【特許請求の範囲】
【請求項１】
機器を制御するための制御システムであって、前記制御システムは、
暗号処理に使用される暗号データを生成する暗号データ生成装置と、
通信回線を介して前記暗号データ生成装置に接続され、前記機器を制御するプログラムを暗号化する暗号化装置と、
前記通信回線によって前記暗号データ生成装置と前記暗号化装置とに接続され、前記プログラムに基づいて前記機器を制御する制御装置とを備え、
前記暗号データ生成装置は、
前記プログラムの暗号化と復号化とに使用される前記暗号データを生成する生成手段と、
第１の暗号データとして前記暗号データを前記暗号化装置に送信する第１の暗号データ送信手段と、
第２の暗号データとして前記暗号データを前記制御装置に送信する第２の暗号データ送信手段とを含み、
前記暗号化装置は、
前記プログラムを格納する記憶手段と、
前記第１の暗号データを受信する暗号データ受信手段と、
前記第１の暗号データに基づいて前記プログラムを暗号化して暗号プログラムを生成する暗号化手段と、
前記暗号プログラムを前記制御装置に送信する送信手段とを含み、
前記制御装置は、
前記暗号化装置から送信された前記暗号プログラムと、前記暗号データ生成装置から送信された前記第２の暗号データとを受信する受信手段と、
前記第２の暗号データを格納する暗号データ記憶手段と、
前記第２の暗号データに基づいて、前記暗号プログラムを復号する復号化手段と、
復号された前記プログラムを格納するプログラム記憶手段と、
前記プログラム記憶手段に格納されているプログラムに基づいて、前記機器を制御する制御手段とを含む、制御システム。
【請求項２】
前記生成手段は、前記プログラムを暗号化するための暗号鍵と、前記暗号鍵を用いた暗号化により生成された暗号プログラムを復号化するための復号鍵とを生成し、
前記第１の暗号データ送信手段は、前記暗号鍵を前記暗号化装置に送信し、
前記第２の暗号データ送信手段は、前記復号鍵を前記制御装置に送信する、請求項１に記載の制御システム。
【請求項３】
前記送信手段は、前記制御装置に対して、前記暗号プログラムに加えて前記第１の暗号データをさらに送信し、
前記制御装置は、前記第１の暗号データと前記第２の暗号データとに基づいて、前記暗号プログラムが前記機器を制御するためのプログラムを暗号化したものであるか否かを確認する認証手段をさらに含み、
前記復号化手段は、前記暗号プログラムが前記機器を制御するためのプログラムを暗号化したものである場合に、前記暗号プログラムを復号する、請求項１に記載の制御システム。
【請求項４】
前記第１の暗号データは、前記プログラムを暗号化するための暗号鍵を含み、
前記第２の暗号データは、前記暗号鍵を用いた暗号化によって生成された暗号プログラムを復号するための復号鍵を含み、
前記認証手段は、前記暗号鍵と前記復号鍵とが対応する場合に、前記暗号プログラムが前記機器を制御するためのプログラムを暗号化したものであると判断する、請求項３に記載の制御システム。
【請求項５】
前記生成手段は、予め定められた時間ごとに、新たな前記暗号データを生成し、
前記第１の暗号データ送信手段は、前記予め定められた時間ごとに、新たに生成された前記暗号データを、前記第１の暗号データとして前記暗号化装置に送信し、
前記第２の暗号データ送信手段は、前記予め定められた時間ごとに、新たに生成された前記暗号データを、前記第２の暗号データとして前記制御装置に送信する、請求項１に記載の制御システム。
【請求項６】
前記制御装置は、
電源のオンとオフとの切り換えを検知する検知手段と、
前記切り換えの検知に基づいて、前記暗号化装置に対して、新たな前記暗号プログラムの送信を要求する第１の要求手段とをさらに含み、
前記暗号化装置は、新たな前記暗号プログラムの送信の要求を受信したことを検知する受信検知手段をさらに含み、
前記送信手段は、前記送信の要求を受信したことに基づいて、新たな前記暗号プログラムを前記制御装置に送信し、
前記復号化手段は、新たな前記暗号プログラムを復号する、請求項１に記載の制御システム。
【請求項７】
前記制御装置は、前記切り換えの検知に基づいて、新たな前記第２の暗号データの送信要求を、前記暗号データ生成装置に送信する第２の要求手段をさらに含み、
前記生成手段は、前記第２の暗号データの送信要求を受信したことに基づいて、新たな暗号データを生成し、
前記第１の暗号データ送信手段は、新たに生成した前記暗号データを、前記第１の暗号データとして前記暗号化装置に送信し、
前記第２の暗号データ送信手段は、新たに生成した前記暗号データを、前記第２の暗号データとして前記制御装置に送信する、請求項６に記載の制御システム。
【請求項８】
機器を制御する制御装置を備えるシステムを制御するための制御方法であって、
前記システムは、
暗号処理に使用される暗号データを生成する暗号データ生成装置と、
通信回線を介して前記暗号データ生成装置に接続され、前記機器を制御するプログラムを暗号化する暗号化装置と、
前記通信回線によって前記暗号データ生成装置と前記暗号化装置とに接続され、前記プログラムに基づいて前記機器を制御する制御装置とを備え、
前記制御方法は、
前記暗号データ生成装置が、前記プログラムの暗号化と復号化とに使用される前記暗号データを生成する生成ステップと、
前記暗号データ生成装置が、第１の暗号データとして前記暗号データを前記暗号化装置に送信する第１の送信ステップと、
前記暗号データ生成装置が、第２の暗号データとして前記暗号データを前記制御装置に送信する第２の送信ステップと、
前記暗号化装置が、前記プログラムをロードするステップと、
前記暗号化装置が、前記第１の暗号データを受信する受信ステップと、
前記暗号化装置が、前記第１の暗号データに基づいて前記プログラムを暗号化して暗号プログラムを生成する暗号化ステップと、
前記暗号化装置が、前記暗号プログラムを前記制御装置に送信する送信ステップと、
前記制御装置が、前記暗号化装置から送信された前記暗号プログラムと、前記暗号データ生成装置から送信された前記第２の暗号データとを受信する受信ステップと、
前記制御装置が、前記第２の暗号データを格納する暗号データ記憶ステップと、
前記制御装置が、前記第２の暗号データに基づいて、前記暗号プログラムを復号する復号化ステップと、
前記制御装置が、復号された前記プログラムを保存するステップと、
前記制御装置が、前記保存されたプログラムに基づいて、前記機器を制御する制御ステップとを含む、制御方法。
【請求項９】
前記生成ステップは、前記プログラムを暗号化するための暗号鍵と、前記暗号鍵を用いた暗号化により生成された暗号プログラムを復号化するための復号鍵とを生成し、
前記第１の送信ステップは、前記暗号鍵を前記暗号化装置に送信し、
前記第２の送信ステップは、前記復号鍵を前記制御装置に送信する、請求項８に記載の制御方法。
【請求項１０】
前記第３の送信ステップは、前記制御装置に対して、前記暗号プログラムに加えて前記第１の暗号データをさらに送信し、
前記制御方法は、前記第１の暗号データと前記第２の暗号データとに基づいて、前記暗号プログラムが前記機器を制御するためのプログラムを暗号化したものであるか否かを確認する認証ステップをさらに含み、
前記復号化ステップは、前記暗号プログラムが前記機器を制御するためのプログラムを暗号化したものである場合に、前記暗号プログラムを復号する、請求項８に記載の制御方法。
【請求項１１】
前記第１の暗号データは、前記プログラムを暗号化するための暗号鍵を含み、
前記第２の暗号データは、前記暗号鍵を用いた暗号化によって生成された暗号プログラムを復号するための復号鍵を含み、
前記認証ステップは、前記暗号鍵と前記復号鍵とが対応する場合に、前記暗号プログラムが前記機器を制御するためのプログラムを暗号化したものであると判断する、請求項１０に記載の制御方法。
【請求項１２】
前記生成ステップは、予め定められた時間ごとに、新たな前記暗号データを生成し、
前記第１の送信ステップは、前記予め定められた時間ごとに、新たに生成された前記暗号データを、前記第１の暗号データとして前記暗号化装置に送信し、
前記第２の送信ステップは、前記予め定められた時間ごとに、新たに生成された前記暗号データを、前記第２の暗号データとして前記制御装置に送信する、請求項８に記載の制御方法。
【請求項１３】
前記制御装置が、電源のオンとオフとの切り換えを検知する検知ステップと、
前記制御装置が、前記切り換えの検知に基づいて、前記暗号化装置に対して、新たな前記暗号プログラムの送信を要求するステップと、
前記暗号化装置が、新たな前記暗号プログラムの送信の要求を受信したことを検知するステップとをさらに含み、
前記第３の送信ステップは、前記送信の要求を受信したことに基づいて、新たな前記暗号プログラムを前記制御装置に送信し、
前記復号化ステップは、新たな前記暗号プログラムを復号する、請求項８に記載の制御方法。
【請求項１４】
前記切り換えの検知に基づいて、新たな前記第２の暗号データの送信要求を、前記制御装置が前記暗号データ生成装置に対して送信するステップをさらに含み、
前記生成ステップは、前記第２の暗号データの送信要求を受信したことに基づいて、新たな暗号データを生成し、
前記第１の送信ステップは、新たに生成された前記暗号データを、前記第１の暗号データとして前記暗号化装置に送信し、
前記第２の送信ステップは、新たに生成された前記暗号データを、前記第２の暗号データとして前記制御装置に送信する、請求項１３に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器を制御するプログラムを保護する技術に関する。より特定的には、本発明は、暗号化された当該プログラムをネットワークを介して配信し、配信されたプログラムを復号化して当該機器の制御に使用する制御システム、および、当該機器を制御するシステムの制御方法に関する。
【背景技術】
【０００２】
ＦＡ（FactoryAutomation、ファクトリ・オートメーション）の分野において、生産設備は、多くの場合、プログラマブルロジックコントローラその他の制御装置によって制御される。一般に、そのような制御装置は、予め作成されたプログラムを実行することにより、当該生産設備を制御し、あるいは生産設備から実績データを収集する。このプログラムは、いわゆるラダー言語、Ｃ言語その他のプログラミング言語を用いて開発者によって作成される。
【０００３】
当該制御装置は、生産設備の近くに設置される。一方、制御装置からのデータに基づいて生産設備の操業を管理するための監視装置、あるいは、制御装置が使用するプログラムの修正、変更のようなメンテナンスを行なうための管理装置は、生産設備から離れた場所に設置されることも多い。この場合、プログラムのメンテナンスは、管理装置と制御装置とを接続する通信回線、たとえばインターネットを介して、リモートメンテナンスとして、システム管理者によって行なわれる。
【０００４】
リモートメンテナンスのために制御装置がインターネットに接続されている場合、当該制御装置は、第３者の通信装置によるアクセスを受ける可能性がある。第３者の通信装置が、生産設備を制御するためのプログラムの作成機能を有している場合、当該通信装置は、制御装置にアクセスすることができる。そのため、リモートメンテナンスのためといえども、制御装置をインターネットに安易に接続することができない。
【０００５】
ＦＡシステムに関し、たとえば、特開２００３−１９９１７９号公報（特許文献１）は、ユーザが秘密にしたい情報を見せることなく、監視あるいは保守に必要な情報を外部に向けて配信できるリモートエンジニアリングシステムを開示する。
【特許文献１】特開２００３−１９９１７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＦＡシステムにおいては、装置そのものが秘密の状態を脱した場合、たとえば、秘密にしたい情報を有する装置が盗難にあった場合、その情報の秘密性が損なわれるという問題がある。
【０００７】
本発明は、上述の問題点を解決するためになされたものであって、その目的は、情報の秘密性を維持できるような制御システムを提供することである。
【０００８】
本発明の他の目的は、機器を制御するために使用するプログラムの秘密性を維持できる制御装置を備えた制御システムを提供することである。
【０００９】
本発明の他の目的は、情報の秘密性を維持できるようにシステムを制御する制御方法を提供することである。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために、この発明のある局面に従うと、機器を制御するための制御システムが提供される。この制御システムは、暗号処理に使用される暗号データを生成する暗号データ生成装置と、通信回線を介して暗号データ生成装置に接続され、機器を制御するプログラムを暗号化する暗号化装置と、通信回線によって暗号データ生成装置と暗号化装置とに接続され、プログラムに基づいて機器を制御する制御装置とを備える。暗号データ生成装置は、プログラムの暗号化と復号化とに使用される暗号データを生成する生成手段と、第１の暗号データとして暗号データを暗号化装置に送信する第１の暗号データ送信手段と、第２の暗号データとして暗号データを制御装置に送信する第２の暗号データ送信手段とを含む。暗号化装置は、プログラムを格納する記憶手段と、第１の暗号データを受信する暗号データ受信手段と、第１の暗号データに基づいてプログラムを暗号化して暗号プログラムを生成する暗号化手段と、暗号プログラムを制御装置に送信する送信手段とを含む。制御装置は、暗号化装置から送信された暗号プログラムと、暗号データ生成装置から送信された第２の暗号データとを受信する受信手段と、第２の暗号データを格納する暗号データ記憶手段と、第２の暗号データに基づいて、暗号プログラムを復号する復号化手段と、復号されたプログラムを格納するプログラム記憶手段と、プログラム記憶手段に格納されているプログラムに基づいて、機器を制御する制御手段とを含む。
【００１１】
好ましくは、生成手段は、プログラムを暗号化するための暗号鍵と、暗号鍵を用いた暗号化により生成された暗号プログラムを復号化するための復号鍵とを生成する。第１の暗号データ送信手段は、暗号鍵を暗号化装置に送信する。第２の暗号データ送信手段は、復号鍵を制御装置に送信する。
【００１２】
好ましくは、送信手段は、制御装置に対して、暗号プログラムに加えて第１の暗号データをさらに送信する。制御装置は、第１の暗号データと第２の暗号データとに基づいて、暗号プログラムが機器を制御するためのプログラムを暗号化したものであるか否かを確認する認証手段をさらに含む。復号化手段は、暗号プログラムが機器を制御するためのプログラムを暗号化したものである場合に、暗号プログラムを復号する。
【００１３】
好ましくは、第１の暗号データは、プログラムを暗号化するための暗号鍵を含む。第２の暗号データは、暗号鍵を用いた暗号化によって生成された暗号プログラムを復号するための復号鍵を含む。認証手段は、暗号鍵と復号鍵とが対応する場合に、暗号プログラムが機器を制御するためのプログラムを暗号化したものであると判断する。
【００１４】
好ましくは、生成手段は、予め定められた時間ごとに、新たな暗号データを生成する。第１の暗号データ送信手段は、予め定められた時間ごとに、新たに生成された暗号データを、第１の暗号データとして暗号化装置に送信する。第２の暗号データ送信手段は、予め定められた時間ごとに、新たに生成された暗号データを、第２の暗号データとして制御装置に送信する。
【００１５】
好ましくは、制御装置は、電源のオンとオフとの切り換えを検知する検知手段と、切り換えの検知に基づいて、暗号化装置に対して、新たな暗号プログラムの送信を要求する第１の要求手段とをさらに含む。暗号化装置は、新たな暗号プログラムの送信の要求を受信したことを検知する受信検知手段をさらに含む。送信手段は、送信の要求を受信したことに基づいて、新たな暗号プログラムを制御装置に送信する。復号化手段は、新たな暗号プログラムを復号する。
【００１６】
好ましくは、制御装置は、切り換えの検知に基づいて、新たな第２の暗号データの送信要求を、暗号データ生成装置に送信する第２の要求手段をさらに含む。生成手段は、第２の暗号データの送信要求を受信したことに基づいて、新たな暗号データを生成する。第１の暗号データ送信手段は、新たに生成した暗号データを、第１の暗号データとして暗号化装置に送信する。第２の暗号データ送信手段は、新たに生成した暗号データを、第２の暗号データとして制御装置に送信する。
【００１７】
この発明の他の局面に従うと、機器を制御する制御装置を備えるシステムを制御するための制御方法が提供される。当該システムは、暗号処理に使用される暗号データを生成する暗号データ生成装置と、通信回線を介して暗号データ生成装置に接続され、機器を制御するプログラムを暗号化する暗号化装置と、通信回線によって暗号データ生成装置と暗号化装置とに接続され、プログラムに基づいて機器を制御する制御装置とを備える。制御方法は、暗号データ生成装置が、プログラムの暗号化と復号化とに使用される暗号データを生成する生成ステップと、暗号データ生成装置が、第１の暗号データとして暗号データを暗号化装置に送信する第１の送信ステップと、暗号データ生成装置が、第２の暗号データとして暗号データを制御装置に送信する第２の送信ステップと、暗号化装置が、プログラムをロードするステップと、暗号化装置が、第１の暗号データを受信する受信ステップと、暗号化装置が、第１の暗号データに基づいてプログラムを暗号化して暗号プログラムを生成する暗号化ステップと、暗号化装置が、暗号プログラムを制御装置に送信する送信ステップと、制御装置が、暗号化装置から送信された暗号プログラムと、暗号データ生成装置から送信された第２の暗号データとを受信する受信ステップと、制御装置が、第２の暗号データを格納する暗号データ記憶ステップと、制御装置が、第２の暗号データに基づいて、暗号プログラムを復号する復号化ステップと、制御装置が、復号されたプログラムを保存するステップと、制御装置が、保存されたプログラムに基づいて、機器を制御する制御ステップとを含む。
【００１８】
好ましくは、生成ステップは、プログラムを暗号化するための暗号鍵と、暗号鍵を用いた暗号化により生成された暗号プログラムを復号化するための復号鍵とを生成する。第１の送信ステップは、暗号鍵を暗号化装置に送信する。第２の送信ステップは、復号鍵を制御装置に送信する。
【００１９】
好ましくは、第３の送信ステップは、制御装置に対して、暗号プログラムに加えて第１の暗号データをさらに送信する。制御方法は、第１の暗号データと第２の暗号データとに基づいて、暗号プログラムが機器を制御するためのプログラムを暗号化したものであるか否かを確認する認証ステップをさらに含む。復号化ステップは、暗号プログラムが機器を制御するためのプログラムを暗号化したものである場合に、暗号プログラムを復号する。
【００２０】
好ましくは、第１の暗号データは、プログラムを暗号化するための暗号鍵を含む。第２の暗号データは、暗号鍵を用いた暗号化によって生成された暗号プログラムを復号するための復号鍵を含む。認証ステップは、暗号鍵と復号鍵とが対応する場合に、暗号プログラムが機器を制御するためのプログラムを暗号化したものであると判断する。
【００２１】
好ましくは、生成ステップは、予め定められた時間ごとに、新たな暗号データを生成する。第１の送信ステップは、予め定められた時間ごとに、新たに生成された暗号データを、第１の暗号データとして暗号化装置に送信する。第２の送信ステップは、予め定められた時間ごとに、新たに生成された暗号データを、第２の暗号データとして制御装置に送信する。
【００２２】
好ましくは、制御方法は、制御装置が、電源のオンとオフとの切り換えを検知する検知ステップと、制御装置が、切り換えの検知に基づいて、暗号化装置に対して、新たな暗号プログラムの送信を要求するステップと、暗号化装置が、新たな暗号プログラムの送信の要求を受信したことを検知するステップとをさらに含む。第３の送信ステップは、送信の要求を受信したことに基づいて、新たな暗号プログラムを制御装置に送信する。復号化ステップは、新たな暗号プログラムを復号する。
【００２３】
好ましくは、制御方法は、切り換えの検知に基づいて、新たな第２の暗号データの送信要求を、制御装置が暗号データ生成装置に対して送信するステップをさらに含む。生成ステップは、第２の暗号データの送信要求を受信したことに基づいて、新たな暗号データを生成する。第１の送信ステップは、新たに生成された暗号データを、第１の暗号データとして暗号化装置に送信する。第２の送信ステップは、新たに生成された暗号データを、第２の暗号データとして制御装置に送信する。
【発明の効果】
【００２４】
本発明に係る制御システムによると、制御装置が使用するプログラムの秘密性を維持することができる。
【００２５】
本発明に係る制御方法によると、制御装置が使用するプログラムの秘密性を維持しつつ、当該制御装置が含まれる制御システムを制御することができる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００２７】
図１を参照して、本発明の実施の形態に係るファクトリ・オートメーション（以下ＦＡ（Factory Automation））システム１０について説明する。図１は、ＦＡシステム１０の構成を表わす図である。
【００２８】
ＦＡシステム１０は、暗号ルール発行装置１００と、プログラム開発装置１１０と、暗号変換機１２０と、プログラマブルロジックコントローラ（以下、ＰＬＣ（Programmable Logic Controller））１３０と、設備機器１４０とを備える。暗号ルール発行装置１００と、暗号変換機１２０とＰＬＣ１３０とは、インターネット１５０を介して接続される。プログラム開発装置１１０と暗号変換機１２０とは、ケーブル１５２を介して電気的に接続される。ＰＬＣ１３０と設備機器１４０とは、ＬＡＮ（Local Area Network）１５４によって接続されている。
【００２９】
図２を参照して、ＦＡシステム１０の制御方法について説明する。図２は、ＦＡシステム１０において実行される一連の処理を表わすフローチャートである。
【００３０】
ステップＳ２０２にて、暗号ルール発行装置１００は、ＰＬＣ１３０に固有なコード（たとえば機器ＩＤ（Identification））に基づいて、暗号ルール（たとえば復号鍵）の送信先を特定する。ステップＳ２０４にて、暗号ルール発行装置１００は、予め準備された生成手順に従って、暗号鍵と復号鍵とを生成する。ステップＳ２０６にて、暗号ルール発行装置１００は、インターネット１１０を介してＰＬＣ１３０に生成した復号鍵を送信する。
【００３１】
ステップＳ２０８にて、ＰＬＣ１３０は、暗号ルール発行装置１００によって送信された復号鍵を受信して内部メモリに格納する。
【００３２】
ステップＳ２１０にて、暗号ルール発行装置１００は、インターネット１５０を介して、暗号変換機１２０に対して暗号鍵を送信する。ステップＳ２１２にて、暗号変換機１２０は、暗号ルール発行装置１００によって送信された暗号鍵を受信して内部メモリに格納する。
【００３３】
ステップＳ２１４にて、プログラム開発装置１１０は、内部メモリから予め格納されていた制御プログラムを読み出して、暗号変換機１２０に対してその制御プログラムを送信する。ここで、制御プログラムは、設備機器１４０を制御するために、プログラム開発装置１１０の使用者によって作成されたプログラムである。
【００３４】
ステップＳ２１６にて、暗号変換機１２０は、メモリから暗号鍵を読み出して、その暗号鍵を用いてプログラム開発装置１１０から送信されたプログラムを暗号化する。ステップＳ２１８にて、暗号変換機１２０は、暗号化されたプログラムをインターネット１５０を介してＰＬＣ１３０に送信する。
【００３５】
ステップＳ２２０にて、ＰＬＣ１３０は、暗号化されたプログラムを暗号変換機１２０から受信して、内部メモリに格納する。ステップＳ２２２にて、ＰＬＣ１３０は、予め保存していた復号鍵をメモリから読み出して、その復号鍵を用いて受信したプログラムを復号化する。ステップＳ２２４にて、ＰＬＣ１３０は、復号されたプログラムを用いて設備機器１４０を制御する。
【００３６】
図３を参照して、本実施の形態に係る暗号ルール発行装置１００の構成について説明する。図３は、暗号ルール発行装置１００によって実現される機能の構成を表わすブロック図である。
【００３７】
暗号ルール発行装置１００は、生成タイミング検知部３１０と、機器特定部３３０と、機器情報記憶部３２０と、暗号ルール生成部３４０と、暗号ルール記憶部３５０と、暗号ルール送信制御部３６０と、通信部３７０とを備える。
【００３８】
生成タイミング検知部３１０は、暗号ルール（たとえば暗号鍵と復号鍵との組み合わせ）を生成するタイミングを検知する。たとえば、生成タイミング検知部３１０は、外部から与えられる生成指示に基づいて暗号ルールを生成すべきタイミングを検知する。あるいは、他の局面において、生成タイミング検知部３１０は、内部クロック（図示しない）が予め定められた時刻の到来を検知したときに、そのタイミングを検知する。
【００３９】
機器情報記憶部３２０は、暗号ルール発行装置１００と通信可能な機器を特定するための情報を格納する。当該情報は、たとえば、暗号変換機１２０、ＰＬＣ１３０等に固有な機器番号その他の識別可能なデータを含む。ＦＡシステム１０が構築されたときに、これらの機器を識別するための情報は、ＦＡシステム１０のユーザによって暗号ルール発行装置１００に入力され、機器情報記憶部３２０に格納される。
【００４０】
機器特定部３３０は、生成タイミング検知部３１０からの出力と、機器情報記憶部３２０に格納されているデータとに基づいて作動可能なように、生成タイミング検知部３１０と機器情報記憶部３２０とに接続されている。機器特定部３３０は、生成タイミング検知部３１０が暗号ルールの生成のタイミングを検知したことに基づいて、機器情報記憶部３２０に格納されているデータを読み出して、当該暗号ルールを生成すべき対象となる機器を特定する。より具体的には、機器特定部３３０は、インターネット１５０に接続されているＰＬＣ１３０その他の制御機器を特定する。
【００４１】
暗号ルール生成部３４０は、機器特定部３３０からの出力に基づいて作動可能なように構成される。より具体的には、暗号ルール生成部３４０は、予め準備された生成基準に従って、機器特定部３３０によって特定された機器に固有な暗号ルールを生成する。生成された暗号ルールは、たとえば実行可能なプログラムを暗号化するための暗号鍵と、その暗号化されたプログラムを復号するための復号鍵とを含む。暗号ルール生成部３４０は、その生成した暗号ルールを暗号ルール記憶部３５０に格納する。
【００４２】
暗号ルール送信制御部３６０は、暗号ルール記憶部３５０に格納されているデータに基づいて作動可能なように構成される。詳しくは、暗号ルール送信制御部３６０は、機器情報記憶部３２０から復号鍵を送信する対象となる機器のアドレス（たとえばＩＰ（Internet Protocol）アドレス）を読み出す。また、暗号ルール送信制御部３６０は、暗号ルール記憶部３５０に格納されている当該復号鍵を読み出す。暗号ルール送信制御部３６０は、そのアドレスを参照して復号鍵を送信するためのデータを生成する。
【００４３】
あるいは、暗号ルール送信制御部３６０は、暗号鍵を送信する対象となる暗号変換機１２０のアドレスを、機器情報記憶部３２０から読み出す。また、暗号ルール送信制御部３６０は、暗号ルール記憶部３５０に格納されている暗号鍵を読み出す。暗号ルール送信制御部３６０は、当該アドレスを用いてその暗号鍵を送信するためのデータを生成する。
【００４４】
通信部３７０は、暗号ルール送信制御部３６０からの出力と暗号ルール発行装置１００に対する入力とに基づいて作動可能なように構成される。通信部３７０は、暗号ルール送信制御部３６０によって生成されたデータを、そのデータに含まれるアドレスに対して送信する。あるいは、通信部３７０は、インターネット１５０を介して送信されたデータを受信する。受信されるデータは、暗号変換機１２０あるいはＰＬＣ１３０によって送信された通信の確認のためのデータ（たとえば、所謂「Ａｃｋ」信号）を含む。あるいは、通信部３７０は、ＦＡシステム１０の管理者によって操作される管理サーバ（図示しない）から発信された制御信号を受信する。
【００４５】
図４を参照して、本実施の形態に係る暗号ルール発行装置１００の具体的構成の一態様について説明する。図４は、暗号ルール発行装置１００として機能するコンピュータシステム４００のハードウェア構成を表わすブロック図である。
【００４６】
コンピュータシステム４００は、主たる構成要素として、プログラムを実行するＣＰＵ（Central Processing Unit）４１０と、コンピュータシステム４００の使用者による指示の入力を受け付けるマウス４２０およびキーボード４３０と、ＣＰＵ４１０によるプログラムの実行により生成されたデータ、またはマウス４２０もしくはキーボード４３０を介して入力されたデータを揮発的に格納するＲＡＭ（Random Access Memory）４４０と、データを不揮発的に格納するハードディスク４５０と、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）駆動装置４６０と、モニタ４８０と、通信Ｉ／Ｆ（インターフェイス）４９０とを含む。各ハードウェアは、相互にデータバスによって接続されている。ＣＤ−ＲＯＭ駆動装置４６０には、ＣＤ−ＲＯＭ４６２が装着される。
【００４７】
コンピュータシステム４００における処理は、当該ハードウェアおよびＣＰＵ４１０によって実行されるソフトウェアによって実現される。このようなソフトウェアは、ハードディスク４５０に予め格納されている場合がある。また、ソフトウェアは、ＣＤ−ＲＯＭ４６２その他の記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、ソフトウェアは、いわゆるインターネットに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、ＣＤ−ＲＯＭ駆動装置４６０その他の読取装置によってその記録媒体から読み取られた後に、あるいは通信Ｉ／Ｆ４９０を介してダウンロードされた後に、ハードディスク４５０に一旦格納される。そのソフトウェアは、ＣＰＵ４１０によってハードディスク４５０から読み出され、ＲＡＭ４４０に実行可能なプログラムの形式で格納される。ＣＰＵ４１０は、そのプログラムを実行する。
【００４８】
図４に示されるコンピュータシステム４００を構成するハードウェアは、一般的なものである。したがって、暗号ルール発行装置１００の本質的な部分は、ＲＡＭ４４０、ハードディスク４５０、ＣＤ−ＲＯＭ４６２その他の記録媒体に格納されたソフトウェア、あるいはネットワークを介してダウンロード可能なソフトウェアであるともいえる。なお、コンピュータシステム４００の各構成要素の動作は周知であるので、詳細な説明は繰り返さない。
【００４９】
図５を参照して、暗号ルール発行装置１００の制御構造について説明する。図５は、暗号ルール発行装置１００として機能するコンピュータシステム４００が備えるＣＰＵ４１０が実行する一連の処理を表わすフローチャートである。
【００５０】
ステップＳ５１０にて、ＣＰＵ４１０は、暗号ルール（暗号鍵と復号鍵）を生成するタイミングの到来を検知する。ステップＳ５２０にて、ＣＰＵ４１０は、その暗号ルールを生成する対象となるＰＬＣを特定する。ＣＰＵ４１０は、そのＰＬＣを特定すると、当該ＰＬＣを識別するデータを、ＲＡＭ４４０において確保した領域に格納する。
【００５１】
ステップＳ５３０にて、ＣＰＵ４１０は、予め準備された実行プログラムに従って、暗号鍵と復号鍵とを生成し、ＲＡＭ４４０に確保した領域に格納する。
【００５２】
ステップＳ５４０にて、ＣＰＵ４１０は、通信Ｉ／Ｆ４９０を介して、インターネット１５０を介して暗号変換機１２０に対して暗号鍵を送信する。
【００５３】
ステップＳ５５０にて、ＣＰＵ４１０は、暗号鍵を受信したことを表わす確認信号を暗号変換機１２０から受信したか否かを判断する。ＣＰＵ４１０が、その信号を受信したと判断すると（ステップＳ５５０にてＹＥＳ）、処理はステップＳ５６０に移される。そうでない場合には（ステップＳ５５０にてＮＯ）、処理はステップＳ５５２に移される。
【００５４】
ステップＳ５５２にて、ＣＰＵ４１０は、予め定められた一定時間待機する。その後、制御はステップＳ５５０に戻される。なお、待機する処理が実行される間に、通信エラーに対応する処理が実行されてもよい。たとえば、予め規定された時間内に、確認信号が受信できない場合には、ＣＰＵ４１０は、当該送信は失敗であると判断し、通信エラーを放置する処理を実行してもよい。
【００５５】
ステップＳ５６０にて、ＣＰＵ４１０は、インターネット１５０を介して、ＰＬＣ１３０に復号鍵を送信する。
【００５６】
ステップＳ５７０にて、ＣＰＵ４１０は、復号鍵を受信したことを表わす確認信号をＰＬＣ１３０から受信したか否かを判断する。ＣＰＵ４１０がその信号を受信したと判断すると（ステップＳ５７０にてＹＥＳ）、処理はステップＳ５８０に移される。そうでない場合には（ステップＳ５７０にてＮＯ）、処理はステップＳ５７２に移される。
【００５７】
ステップＳ５７２にて、ＣＰＵ４１０は、予め定められた一定時間待機する。その後、制御はステップＳ５７０に戻される。なお、ステップＳ５５２におけるエラー処理と同様の処理が実行されてもよい。
【００５８】
ステップＳ５８０にて、ＣＰＵ４１０は、作動を終了する指示が入力されたか否かを判断する。ＣＰＵ４１０がそのような指示が入力されていると判断すると（ステップＳ５８０にてＹＥＳ）、処理は終了する。そうでない場合には（ステップＳ５８０にてＮＯ）、処理はステップＳ５１０に戻される。
【００５９】
図６を参照して、暗号ルール発行装置１００のデータ構造について説明する。図６は、コンピュータシステム４００が備えるハードディスク４５０におけるデータの格納の一態様を概念的に表わす図である。ハードディスク４５０は、データを格納するための複数のメモリ領域を含む。
【００６０】
暗号鍵を送信する対象を特定するためのデータは、メモリ領域６１０に格納される。暗号鍵が送信された日時は、メモリ領域６２０に格納される。暗号鍵がまだ一度も送信されていない場合には、この領域には、たとえば「ＮＵＬＬ」を表わすデータが格納される。ＣＰＵ４１０によって生成された暗号鍵は、メモリ領域６３０に格納される。
【００６１】
復号鍵に関するデータについても、暗号鍵に関するデータと同様に格納される。すなわち、復号鍵を送信する対象を特定するためのデータは、メモリ領域６４０に格納される。復号鍵が送信された日時は、メモリ領域６５０に格納される。復号鍵が未だ一度も送信されていない場合には、この領域には、前述のように「ＮＵＬＬ」が格納される。ＣＰＵ４１０によって生成された復号鍵は、メモリ領域６６０に格納される。
【００６２】
次に、図７および図８を参照して、暗号ルール発行装置１００によって発信されるデータについて説明する。図７は、暗号ルール発行装置１００から暗号変換機１２０に送信される通信フレーム７００を表わす図である。通信フレーム７００は、ヘッダ７１０と、ユーザデータ７２０と、ＦＣＳ（Frame Check Sequence）７３０とを含む。ヘッダ７１０は、送信元アドレス（すなわち暗号ルール発行装置１００のＩＰアドレス）と、送信先アドレス（すなわち暗号変換機１２０のＩＰアドレス）と、送信日時（たとえば、通信フレーム７００が生成された日時）とを含む。ユーザデータ７２０は、ＣＰＵ４１０によって生成された暗号鍵を含む。
【００６３】
図５に示されるステップＳ５４０の処理が実行されると、通信フレーム７００は、暗号ルール発行装置１００から暗号変換機１２０に送信される。
【００６４】
図８は、暗号ルール発行装置１００からＰＬＣ１３０に送信される通信フレーム８００を表わす図である。通信フレーム８００は、ヘッダ８１０と、ユーザデータ８２０と、ＦＣＳ８３０とを含む。ヘッダ８１０は、送信元アドレス（すなわち暗号ルール発行装置１００のＩＰアドレス）と、送信先アドレス（すなわちＰＬＣ１３０のＩＰアドレス）と、送信日時（通信フレーム８００が生成された日時）とを含む。ユーザデータ８２０は、ＣＰＵ４１０によって生成された復号鍵を含む。図５に示されるステップＳ５６０の処理が実行されると、通信フレーム８００は、暗号ルール発行装置１００からＰＬＣ１３０に送信される。
【００６５】
次に、図９を参照して、本実施の形態に係る暗号変換機１２０の構成について説明する。図９は、暗号変換機１２０によって実現される機能の構成を表わすブロック図である。暗号変換機１２０は、データ入力部９１０と、プログラム記憶部９２０と、暗号鍵格納部９３０と、暗号化処理部９４０と、暗号化データ配信部９５０とを含む。
【００６６】
データ入力部９１０は、暗号変換機１２０の外部からのデータの入力を受け付ける。たとえば、入力が受け付けられるデータは、プログラム開発装置１１０によって生成されたプログラム、暗号ルール発行装置１００によって送信された暗号鍵、あるいは暗号変換機１２０による暗号化処理を有効にする指示（暗号化指令）などを含む。当該暗号化指令は、暗号ルール発行装置１００によって送信される場合もあれば、ＦＡシステム１０の管理者によって与えられる場合もある。
【００６７】
プログラム記憶部９２０は、データ入力部９１０によって入力が受け付けられたプログラムを格納する。暗号鍵格納部９３０は、データ入力部９１０によって入力が受け付けられた暗号鍵を格納する。
【００６８】
暗号化処理部９４０は、データ入力部９１０からの出力と、プログラム記憶部９２０および暗号鍵格納部９３０に格納されているデータとに基づいて作動可能なように構成される。より具体的には、暗号化処理部９４０は、データ入力部９１０によって入力が受け付けられた暗号化指令に基づいて暗号化処理を実行する。すなわち、暗号化処理部９４０は、プログラム記憶部９２０に格納されているプログラムを読み出し、暗号鍵格納部９３０に格納されている暗号鍵を用いてその読み出したプログラムを暗号化する。
【００６９】
暗号化データ配信部９５０は、暗号化処理部９４０からの出力に基づいて作動可能なように構成される。より具体的には、暗号化データ配信部９５０は、暗号化処理部９４０によって生成されたデータを、当該プログラムを使用する装置（たとえばＰＬＣ１３０）に送信するためのデータを生成する。暗号化データ配信部９５０は、そのデータを生成した後、送信相手（ＰＬＣ１３０等）の間で通信を確立し、通信が確立された後にそのデータを送信する。暗号変換機１２０によって送信されるデータは後述する。
【００７０】
ここで、図１０を参照して、暗号変換機１２０の具体的構成の一態様について説明する。図１０は、暗号変換機１２０として機能するコンピュータシステム１０００のハードウェア構成を表わすブロック図である。コンピュータシステム１０００は、主たる構成要素として、プログラムを実行するＣＰＵ１０１０と、コンピュータシステム１０００の使用者による指示の入力を受け付けるマウス１０２０およびキーボード１０３０と、ＣＰＵ１０１０によるプログラムの実行により生成されたデータまたはマウス１０２０もしくはキーボード１０３０を介して入力されたデータを揮発的に格納するＲＡＭ１０４０と、データを不揮発的に格納するハードディスク１０５０と、ＣＤ−ＲＯＭ駆動装置１０６０と、モニタ１０８０と、通信Ｉ／Ｆ１０９０とを含む。ＣＤ−ＲＯＭ駆動装置１０６０には、ＣＤ−ＲＯＭ１０６２が装着される。
【００７１】
図１０に示されるコンピュータシステム１０００の各構成要素の機能およびそれらの基本的な動作は、図４に示されるコンピュータシステム４００における当該機能および動作と同様である。したがって、ここではそれらについての説明は繰り返さない。
【００７２】
次に、図１１を参照して、暗号変換機１２０の制御構造について説明する。図１１は、暗号変換機１２０として機能するコンピュータシステム１０００が備えるＣＰＵ１０１０が実行する一連の処理を表わすフローチャートである。
【００７３】
ステップＳ１１１０にて、ＣＰＵ１０１０は、通信Ｉ／Ｆ１０９０を介して、プログラム開発装置１１０からプログラムを受信したことを検知する。ステップＳ１１２０にて、ＣＰＵ１０１０は、受信したプログラムをＲＡＭ１０４０において確保したワーク領域に一時的に格納する。その後、ＣＰＵ１０１０は、そのプログラムをハードディスク１０５０に保存する。
【００７４】
ステップＳ１１３０にて、ＣＰＵ１０１０は、通信Ｉ／Ｆ１０９０を介して暗号ルール発行装置１００から暗号鍵を受信したことを検知する。ステップＳ１１４０にて、ＣＰＵ１０１０は、暗号鍵をＲＡＭ１０４０において確保した領域に格納し、その後、ハードディスク１０５０に保存する。
【００７５】
ここで、図１２および図１３を参照して、暗号変換機１２０のデータ構造について説明する。図１２および図１３はそれぞれ、ハードディスク１０５０におけるデータの格納の一態様を概念的に表わす図である。
【００７６】
図１２を参照して、ハードディスク１０５０は、データを格納するための複数のメモリ領域を含む。プログラム開発装置１１０によって生成されたプログラムを使用する装置を識別するためのデータ（プログラムユーザ）は、メモリ領域１２１０に格納されている。当該プログラムユーザが実際に使用するプログラムを識別するためのデータ（プログラムＩＤ）は、メモリ領域１２２０に格納される。当該プログラムＩＤによって特定される具体的なプログラムデータは、メモリ領域１２３０に格納される。
【００７７】
図１３を参照して、暗号ルール発行装置１００によって送信された暗号鍵を識別するためのデータ（暗号鍵ＩＤ）は、メモリ領域１３１０に格納される。その暗号鍵ＩＤによって特定される暗号鍵の具体的なデータは、メモリ領域１３２０に格納される。
【００７８】
次に、図１４を参照して、暗号変換機１２０によって発信されるデータについて説明する。図１４は、暗号変換機１２０からＰＬＣ１３０に送信される通信フレーム１４００を表わす図である。
【００７９】
通信フレーム１４００は、ヘッダ１４１０と、ユーザデータ１４２０と、ＦＣＳ１４３０とを含む。ヘッダ１４１０は、送信元アドレス（すなわち暗号変換機１２０のＩＰアドレス）と、送信先アドレス（すなわちＰＬＣ１３０のＩＰアドレス）と、送信日時（すなわち通信フレーム１４００が生成された日時）とを含む。ユーザデータ１４２０は、暗号変換機１２０において暗号化されたプログラムを含む。
【００８０】
通信フレーム１４００は、暗号変換機１２０とＰＬＣ１３０との通信が確立された後に、暗号変換機１２０によって送信される。また、他の局面においては、ＰＬＣ１３０が通信フレーム１４００を受信していない旨の確認信号が暗号変換機１２０によって受信されたときに、通信フレーム１４００が再び送信されるものであってもよい。
【００８１】
図１５を参照して、暗号変換機１２０の制御構造について説明する。図１５は、暗号変換機１２０として機能するコンピュータシステム１０００のＣＰＵ１０１０が実行する一連の処理を表わすフローチャートである。
【００８２】
ステップＳ１５１０にて、ＣＰＵ１０１０は、通信Ｉ／Ｆ１０９０を介してプログラムを暗号化する処理を実行する指示を受信する。この指示は、暗号ルール発行装置１００から送信されるデータに含まれている場合もあれば、ＦＡシステム１０の管理者によって与えられる場合もある。
【００８３】
ステップＳ１５２０にて、ＣＰＵ１０１０は、その指示に基づいて、暗号化の対象となるプログラムと、暗号化に用いられる暗号鍵と、そのプログラムの使用者であるＰＬＣ１３０とを特定する。
【００８４】
ステップＳ１５３０にて、ＣＰＵ１０１０は、特定した暗号鍵を用いてそのプログラムを暗号化し、ＲＡＭ１０４０に一時的に格納する。この暗号化されたデータの送信が完了しない場合には、ＣＰＵ１０１０は、ＲＡＭ１０４０に格納されているそのデータをハードディスク１０５０において確保した領域に保存する。
【００８５】
ステップＳ１５４０にて、ＣＰＵ１０１０は、特定されたＰＬＣ１３０との間で通信を確立するための処理を実行する。ステップＳ１５５０にて、ＣＰＵ１０１０は、ＰＬＣ１３０との間の通信セッションが確立しているか否かを判断する。ＣＰＵ１０１０が、通信セッションは確立していると判断すると（ステップＳ１５５０にてＹＥＳ）、処理はステップＳ１５６０に移される。そうでない場合には（ステップＳ１５５０にてＮＯ）、処理はステップＳ１５４０に戻され、通信を確立するための処理が継続される。
【００８６】
ステップＳ１５６０にて、ＣＰＵ１０１０は、暗号化されたプログラムを送信するためのデータ（たとえば通信フレーム１４００）を生成する。ステップＳ１５７０にて、ＣＰＵ１０１０は、生成した通信フレーム１４００をインターネット１５０を介してＰＬＣ１３０に送信する。
【００８７】
ステップＳ１５８０にて、ＣＰＵ１０１０は、プログラムの受信の完了通知をＰＬＣ１３０から受信したか否かを判断する。たとえば、この判断は、暗号変換機１２０とＰＬＣ１３０との間の通信セッションが確立している間に行なわれる通信に含まれるデータに基づいて行なわれる。ＣＰＵ１０１０が、当該完了通知を受信していると判断すると（ステップＳ１５８０にてＹＥＳ）、処理はステップＳ１５９０に移される。そうでない場合には（ステップＳ１５８０にてＮＯ）、処理はステップＳ１５８２に移される。
【００８８】
ステップＳ１５８２にて、ＣＰＵ１０１０は、予め定められた一定時間待機する。
ステップＳ１５９０にて、ＣＰＵ１０１０は、ＰＬＣ１３０との通信を終了する。
【００８９】
ここで、図１６を参照して、本実施の形態に係るＰＬＣ１３２の構成について説明する。図１６は、ＰＬＣ１３０のハードウェア構成を表わすブロック図である。ＰＬＣ１３０は、インナーボード１６１０とコントローラ１６２０とを備える。インナーボード１６１０とコントローラ１６２０とは、ＣＰＵバス１６３０によって接続されている。
【００９０】
インナーボード１６１０は、インナーボードＣＰＵ１６１２と、メモリ１６１４と、通信インターフェイス１６１６とを含む。コントローラ１６２０は、コントローラＣＰＵ１６２２と、Ｉ／Ｏ（Input/Output）ユニット１６２４と、実行メモリ１６２６と、ツール１６２８とを含む。コントローラＣＰＵ１６２２とＩ／Ｏユニット１６２４とは、Ｉ／Ｏバス１６４０によって接続されている。
【００９１】
インナーボードＣＰＵ１６１２は、インナーボード１６１０の動作を制御する。より詳しくは、インナーボードＣＰＵ１６１２は、通信インターフェイス１６１６を介してＰＬＣ１３０にネットワーク接続されている他の装置と通信する。インナーボードＣＰＵ１６１２は、通信インターフェイス１６１６を介して受信したデータを、メモリ１６１４に格納する。また、インナーボードＣＰＵ１６１２は、ＣＰＵバス１６３０を介してコントローラＣＰＵ１６２２と通信する。
【００９２】
コントローラＣＰＵ１６２２は、コントローラ１６２０の動作を制御する。より詳しくは、コントローラＣＰＵ１６２２は、ＣＰＵバス１６３０を介してインナーボード１６１０から受信したデータを、実行メモリ１６２６に格納する。格納されるデータには、ツール１６２８の動作を制御するためのプログラムが含まれる。
【００９３】
コントローラＣＰＵ１６２２は、Ｉ／Ｏユニット１６２４を介してＰＬＣ１３０に接続されている設備機器１４０の動作を制御するためのデータを出力し、あるいは設備機器１４０から出力されたデータの入力を受け付ける。ツール１６２８は、設備機器１４０の動作を制御するためのプログラムにアクセスするためのインターフェイスとして機能する。
【００９４】
次に、図１７を参照して、ＰＬＣ１３０のデータ構造について説明する。図１７は、メモリ１６１４におけるデータの格納の一態様を概念的に表わす図である。メモリ１６１４は、データを格納するためのメモリ領域を含む。メモリ領域１７１０は、リザーブ領域として使用される。たとえば、ＰＬＣ１３０が新たにデータを外部から受信したとき、そのデータはリザーブ領域１７１０に格納される。
【００９５】
ＰＬＣ１３０が受信したプログラムは、メモリ領域１７２０に格納される。このプログラムは、図１４に示されるユーザデータ１４２０に含まれているものである。
【００９６】
暗号ルール発行装置１００によって送信された復号鍵は、メモリ領域１７３０に格納される。この復号鍵は、図８に示されるユーザデータ８２０に含まれるものである。ＰＬＣ１３０を識別するための認証コードは、メモリ領域１７４０に格納される。認証コードは、ＦＡシステム１０が構築された際に、管理者によって入力される。
【００９７】
ＰＬＣ１３０に固有なＰＬＣＩＤは、メモリ領域１７５０に格納される。ＰＬＣＩＤは、たとえばＰＬＣ１３０が製造された際に与えられるＰＬＣに固有な製造番号である。
【００９８】
暗号化されたデータを復号するための復号処理プログラムは、メモリ領域１７６０に格納される。復号処理プログラムは、たとえばメモリ領域１７３０に格納されている復号鍵を用いて、メモリ領域１７２０に格納されているプログラムを復号する。
【００９９】
ＰＬＣ１３０と暗号ルール発行装置１００あるいは暗号変換機１２０との通信を制御するための通信制御プログラムは、メモリ領域１７７０に格納される。
【０１００】
ＰＬＣ１３０の基本的な動作を制御するためのオペレーティングシステムは、メモリ領域１７８０に格納されている。
【０１０１】
次に、図１８を参照して、ＰＬＣ１３０の制御構造について説明する。図１８は、ＰＬＣ１３０が備えるインナーボードＣＰＵ１６１２が実行する一連の処理を表わすフローチャートである。
【０１０２】
ステップＳ１８１０にて、インナーボードＣＰＵ１６１２は、暗号変換機１２０との通信を確立する。ステップＳ１８２０にて、インナーボードＣＰＵ１６１２は、暗号化されたプログラムを暗号変換機１２０から受信したことを検知する。
【０１０３】
ステップＳ１８３０にて、インナーボードＣＰＵ１６１２は、暗号ルール（復号鍵）を認証する。ステップＳ１８４０にて、インナーボードＣＰＵ１６１２は、暗号ルールが一致するか否かを判断する。たとえば、インナーボードＣＰＵ１６１２は、受信したデータに含まれている復号鍵と、メモリ１６１４に既に格納されている復号鍵とが一致するか否かを判断する。あるいは、他の局面においては、インナーボードＣＰＵ１６１２が暗号鍵を受信した場合には、当該暗号鍵と、メモリ１６１４に既に保存されている復号鍵とが対応するか否かを判断する。インナーボードＣＰＵ１６１２が、それらの暗号ルールは一致すると判断すると（ステップＳ１８４０にてＹＥＳ）、処理はステップＳ１８５０に移される。そうでない場合には（ステップＳ１８４０にてＮＯ）、処理はステップＳ１８８０に移される。
【０１０４】
ステップＳ１８５０にて、インナーボードＣＰＵ１６１２は、その暗号鍵を用いて暗号化されているプログラムを復号化する。
【０１０５】
ステップＳ１８６０にて、インナーボードＣＰＵ１６１２は、復号されたプログラムをメモリ１６１４のメモリ領域１７１０に格納する。ステップＳ１８７０にて、インナーボードＣＰＵ１６１２は、復号されたプログラムをコントローラ１６２０に送信する。コントローラＣＰＵ１６２２は、そのプログラムを受信すると、実行メモリ１６２０にそのプログラムを格納する。ステップＳ１８９０にて、インナーボードＣＰＵ１６１２は、通信インターフェイス１６１６を介して行なわれていた暗号変換機１２０との通信を終了する。
【０１０６】
図１９を参照して、ＰＬＣ１３０における実行プログラムの移送について説明する。図１９は、メモリ１６１４と実行メモリ１６１６との間で行なわれるデータ処理を表わす図である。
【０１０７】
メモリ１６１４は、データを格納するためのメモリ領域１９１０，１９２０を含む。メモリ領域１９２０は、図１７におけるメモリ領域１７１０に相当する。同様に、メモリ領域１９１０は、メモリ領域１７２０，１７３０，１７４０に対応する。暗号化されたプログラムが復号鍵を用いて復号されるとそのデータはメモリ領域１９２０に格納される。
【０１０８】
インナーボードＣＰＵ１６１２がコントローラＣＰＵ１６２２との間で通信を行ない、実行プログラムが位相できる状態にあることを確認すると、インナーボードＣＰＵ１６１２は、メモリ１６１４から実行プログラムを読み出して、その実行プログラムをＣＰＵバス１６３０に送信する。コントローラＣＰＵ１６２２は、その実行プログラムを受信すると、実行メモリ１６２６において確保したメモリ領域１９３０に格納する。設備機器１４０は、実行メモリ１６２６に格納されたそのプログラムに基づいて制御される。
【０１０９】
以上のようにして、本実施の形態に係るＦＡシステム１０によると、設備機器１４０を制御するためのプログラムは、暗号変換機１２０によって暗号化されたプログラムとして、ＰＬＣ１３０に送信される。当該暗号化は、暗号ルール発行装置１００によって生成された暗号ルールに基づいて行なわれる。たとえば、暗号ルール発行装置１００が暗号鍵と復号鍵とを生成する場合には、暗号変換機１２０は、その暗号鍵を用いて制御プログラムを暗号化する。
【０１１０】
一方、ＰＬＣ１３０は、上記の復号鍵を暗号ルール発行装置１００から受信し、暗号からされたプログラムを暗号変換機１２０から受信する。ＰＬＣ１３０は、暗号変換機１２０から受信したデータと、暗号ルール発行装置１００から受信したデータとに基づいて、認証処理を実行する。たとえば、ＰＬＣ１３０は、暗号変換機１２０から受信した暗号鍵と、暗号ルール発行装置１２０から受信した復号鍵（あるいは暗号鍵）とが対応するか（あるいは一致するか）否かを判断する。これらの鍵が対応する場合、あるいは一致する場合、認証処理は成功する。
【０１１１】
認証処理が成功すると、ＰＬＣ１３０は、復号鍵を用いて、暗号化されたプログラムを復号する。したがって、その後、ＰＬＣ１３０は、復号された制御プログラムに基づいて制御機器を制御する。
【０１１２】
ここで、ＰＬＣ１３０の電源がオフにされた後、再び電源がオンに設定されると、ＰＬＣ１３０は、内部のメモリに格納されている制御プログラムあるいは暗号化された状態のプログラムを消去する。したがって、仮に、第三者がＰＬＣ１３０が使用するプログラムのデータを取得するために、不法にＰＬＣ１３０の電源をオンに入れても、当該プログラムは削除されるため、プログラムの漏洩が防止される。
【０１１３】
このような場合、ＰＬＣ１３０は、暗号変換機１２０と通信して、新たに暗号化されたプログラムの送信を要求する。ＰＬＣ１３０がプログラムの送信を要求したことに基づいて、新たな暗号ルールの発行要求が暗号ルール発行装置１００に対して送信される。この発行要求は、ＰＬＣ１３０によって生成されて送信されてもよいし、暗号変換機１２０によって生成されて送信されてもよい。
【０１１４】
暗号ルール発行装置１００は、当該発行要求に基づいて、新たな暗号ルールを生成する。暗号ルール発行装置１００は、暗号ルールとして一組の新たな暗号鍵と復号鍵とを生成すると、暗号鍵を暗号変換機１２０に送信し、復号鍵をＰＬＣ１３０に送信する。
【０１１５】
暗号変換機１２０は、その新たな暗号鍵を用いて、ＰＬＣ１３０が使用する制御プログラム（すなわち、削除されたプログラム）を暗号化して、ＰＬＣ１３０に送信する。
【０１１６】
ＰＬＣ１３０は、暗号ルール発行装置１００によって送信された復号鍵に基づいて、新たに暗号化された制御プログラムを復号化する。ＰＬＣ１３０は、復号化した制御プログラムを実行して、設備機器１４０を制御する。これにより、ＦＡシステム１０は、ＰＬＣ１３０が稼動していない間（たとえば、ＰＬＣ１３０の電源がオフになっている間）、設備機器１４０を制御するためのプログラムの秘密を維持することができる。
【０１１７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１１８】
【図１】本発明の実施の形態に係るファクトリ・オートメーション（ＦＡシステム）１０の構成を表わす図である。
【図２】ＦＡシステム１０において実行される一連の処理を表わすフローチャートである。
【図３】本発明の実施の形態に係る暗号ルール発行装置１００によって実現される機能の構成を表わすブロック図である。
【図４】本発明の実施の形態に係る暗号ルール発行装置１００として機能するコンピュータシステム４００のハードウェア構成を表わすブロック図である。
【図５】暗号ルール発行装置１００として機能するコンピュータシステム４００が備えるＣＰＵ４１０が実行する一連の動作を表わすフローチャートである。
【図６】コンピュータシステム４００が備えるハードディスク４５０におけるデータの格納の一態様を概念的に表わす図である。
【図７】暗号ルール発行装置１００から暗号変換機１２０に送信される通信フレーム７００を表わす図である。
【図８】暗号ルール発行装置１００からＰＬＣ１３０に送信される通信フレーム８００を表わす図である。
【図９】暗号変換機１２０によって実現される機能の構成を表わすブロック図である。
【図１０】暗号変換機１２０として機能するコンピュータシステム１０００のハードウェア構成を表わすブロック図である。
【図１１】コンピュータシステム１０００が備えるＣＰＵ１０１０が実行する一連の動作を表わすフローチャートである。
【図１２】ハードディスク１０５０におけるデータの格納の一態様を概念的に表わす図（その１）である。
【図１３】ハードディスク１０５０におけるデータの格納の一態様を概念的に表わす図（その２）である。
【図１４】暗号変換機１２０からＰＬＣ１３０に送信される通信フレーム１４００を表わす図である。
【図１５】暗号変換機１２０として機能するコンピュータシステム１０００のＣＰＵ１０１０が実行する一連の処理を表わすフローチャートである。
【図１６】本発明の実施の形態に係るＰＬＣ１３２のハードウェア構成を表わすブロック図である。
【図１７】ＰＬＣ１３０のメモリ１６１４におけるデータの格納の一態様を概念的に表わす図である。
【図１８】ＰＬＣ１３０が備えるインナーボードＣＰＵ１６１２が実行する一連の動作を表わすフローチャートである。
【図１９】メモリ１６１４と実行メモリ１６２６との間で行なわれるデータの移送を表わす図である。
【符号の説明】
【０１１９】
１０  ＦＡ（ファクトリーオートメーション）システム、１５０  インターネット、１５２  ケーブル、１５４  ＬＡＮ、４００，１０００  コンピュータシステム、４６２，１０６２  ＣＤ−ＲＯＭ、７００，８００，１４００  通信フレーム、１６３０  ＣＰＵバス、１６４０  Ｉ／Ｏバス。
【図１】
2008067162.tif 000003
【図２】
2008067162.tif 000004
【図３】
2008067162.tif 000005
【図４】
2008067162.tif 000006
【図５】
2008067162.tif 000007
【図６】
2008067162.tif 000008
【図７】
2008067162.tif 000009
【図８】
2008067162.tif 000010
【図９】
2008067162.tif 000011
【図１０】
2008067162.tif 000012
【図１１】
2008067162.tif 000013
【図１２】
2008067162.tif 000014
【図１３】
2008067162.tif 000015
【図１４】
2008067162.tif 000016
【図１５】
2008067162.tif 000017
【図１６】
2008067162.tif 000018
【図１７】
2008067162.tif 000019
【図１８】
2008067162.tif 000020
【図１９】
2008067162.tif 000021