(57)【要約】【課題】ネットワーク上でＦＡシステムを構成する制御装置に使用されるプログラムを保護する。【解決手段】ＦＡシステム１０は、暗号変換機１００と、プログラマブル・ロジック・コントローラ（ＰＬＣ）１３０と、設備機器１４０とを備える。暗号変換機１００とＰＬＣ１３０とは、インターネット１５０に接続されている。暗号変換機１００は、ＰＬＣ１３０が実行する制御プログラムを暗号化して、暗号化されたプログラムをＰＬＣ１３０に送信する。ＰＬＣ１３０は、暗号化されたプログラムを受信すると、暗号変換機１００によって予め生成された暗号ルールに従って、受信したプログラムが設備機器１４０に固有なプログラムであるか否かを確認し、固有なプログラムである場合には、そのプログラムから制御プログラムを復号し、制御プログラムを実行して設備機器１４０を制御する。【選択図】図１
2008065678.tif 000002
【特許請求の範囲】
【請求項１】
機器の制御システムであって、前記機器を制御する制御装置と、通信回線によって前記制御装置に接続される暗号化装置とを備え、
前記暗号化装置は、
前記制御装置に固有に割り当てられた識別データと、前記機器を制御するための制御プログラムとを格納する第１の記憶手段と、
プログラムを暗号化および復号化するための暗号ルールに基づいて前記制御プログラムを暗号化することにより、暗号化されたプログラムを生成する暗号化手段と、
前記通信回線に接続され、前記識別データと前記暗号化されたプログラムとを、前記制御装置に送信する送信手段とを備え、
前記制御装置は、
前記識別データおよび前記暗号ルールを格納する第２の記憶手段を備え、前記識別データおよび前記暗号ルールは、予め入力されたデータであり、
前記通信回線に接続され、前記識別データと前記暗号化されたプログラムとを、前記暗号化装置から受信する受信手段と、
前記受信手段によって受信された識別データと、前記第２の記憶手段に格納されている識別データとに基づいて、前記受信手段によって受信された暗号化プログラムが前記制御プログラムを暗号化したものであるか否かを確認する認証手段と、
前記暗号化プログラムが前記制御プログラムを暗号化したものであることが確認された場合に、前記暗号ルールに基づいて前記暗号化プログラムを復号化することにより前記制御プログラムを導出する復号化手段と、
前記復号化手段によって導出された前記制御プログラムを格納するプログラム記憶手段と、
前記プログラム記憶手段に格納されている前記制御プログラムに基づいて、前記機器を制御する制御手段とを備える、機器の制御システム。
【請求項２】
機器の制御システムであって、前記機器を制御する制御装置と、通信回線によって前記制御装置に接続される暗号化装置とを備え、
前記暗号化装置は、
プログラムを暗号化および復号化するための複数の暗号ルールと、機器を制御するための制御プログラムとを格納する第１の記憶手段と、
前記複数の暗号ルールのうちの第１の暗号ルールに基づいて前記制御プログラムを暗号化することにより、暗号化されたプログラムを生成する暗号化手段と、
前記通信回線を介して、前記暗号化されたプログラムと、前記第１の暗号ルールと、前記複数の暗号ルールのうちの第２の暗号ルールとを、前記制御装置に送信する第１の送信制御手段とを備え、
前記制御装置は、
前記暗号化されたプログラムと、前記第１の暗号ルールと、前記第２の暗号ルールとを受信する受信手段と、
前記受信手段によって受信された前記第１の暗号ルールに基づいて、前記暗号化されたプログラムを復号化することにより前記制御プログラムを導出する第１の復号化手段と、
前記受信手段によって受信された前記第２の暗号ルールを格納する第２の記憶手段とを備え、
前記暗号化装置は、
前記第１の暗号ルールと前記第２の暗号ルールとが前記制御装置に送信された後に、前記第２の暗号ルールに基づいて前記制御プログラムを暗号化することにより生成された新たな暗号化プログラムと、前記第２の暗号ルールと、前記複数の暗号ルールのうちの第３の暗号ルールとを、前記制御装置に送信する第２の送信制御手段をさらに備え、
前記制御装置は、
前記新たな暗号化プログラムと、前記第２の暗号ルールと、前記第３の暗号ルールとが前記受信手段によって受信された場合に、前記第２の記憶手段に格納されている前記第２の暗号ルールと、前記受信手段によって受信された第２の暗号ルールとに基づいて、前記新たな暗号化プログラムが前記制御プログラムを暗号化したものであるか否かを確認する認証手段と、
前記新たな暗号化プログラムが前記制御プログラムを暗号化したものである場合に、前記第２の暗号ルールに基づいて前記新たな暗号化プログラムを復号化することにより前記制御プログラムを導出する第２の復号化手段と、
前記新たな暗号化プログラムが前記制御プログラムを暗号化したものである場合に、前記認証手段による確認のためのデータとして、前記第２の記憶手段に格納されている第２の暗号ルールに代えて前記第３の暗号ルールを前記記憶手段に書き込む更新手段と、
前記第１の復号化手段または前記第２の復号化手段によって導出された制御プログラムに基づいて前記機器を制御する制御手段とを備える、機器の制御システム。
【請求項３】
機器の制御装置であって、
通信回線に接続されている通信装置から、前記制御装置に固有に割り当てられた識別データと、プログラムを暗号化および復号化するための暗号ルールに基づいて前記機器の制御プログラムを暗号化することにより生成された暗号化プログラムとを受信する受信手段と、
前記識別データおよび前記暗号ルールを格納する記憶手段とを備え、前記識別データおよび前記暗号ルールは前記受信手段によるデータの受信の前に入力されたデータであり、
前記受信手段によって受信された識別データと、前記記憶手段に格納されている識別データとに基づいて、前記受信手段によって受信された暗号化プログラムが前記制御プログラムを暗号化したものであるか否かを確認する認証手段と、
受信された前記暗号化プログラムが前記制御プログラムを暗号化したものであることが確認された場合に、前記暗号ルールに基づいて前記暗号化プログラムを復号化することにより前記制御プログラムを導出する復号化手段と、
前記復号化手段によって導出された前記制御プログラムを格納するプログラム記憶手段と、
前記プログラム記憶手段に格納されている前記制御プログラムに基づいて、前記機器を制御する制御手段とを備える、機器の制御装置。
【請求項４】
前記暗号ルールは、前記制御プグラムを暗号化するための暗号鍵と、前記暗号鍵を用いて生成されたデータを復号化するための復号鍵とを含む、請求項３に記載の機器の制御装置。
【請求項５】
前記制御装置の状態の変化を検出する検出手段と、
前記状態の変化が検出されたことに基づいて、前記プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える、請求項３に記載の機器の制御装置。
【請求項６】
電力の供給と前記供給の停止とを切り換えるための切換手段をさらに備え、
前記検出手段は、前記電力の供給と前記供給の停止との切り換えを検出し、
前記消去手段は、前記切り換えが検出された場合に、前記制御プログラムを消去する、請求項５に記載の機器の制御装置。
【請求項７】
データを受信可能なデータ通信装置の接続を受け付けるインターフェイス手段をさらに備え、
前記検出手段は、前記データ通信装置が前記インターフェイス手段に接続されたことを検出し、
前記消去手段は、前記データ通信装置が前記インターフェイス手段に接続されたことが検出された場合に、前記制御プログラムを消去する、請求項５に記載の機器の制御装置。
【請求項８】
前記暗号化プログラムと、前記暗号化処理のために使用された暗号ルールとの送信要求を生成する生成手段と、
前記生成手段によって生成された送信要求を前記通信装置に送信する送信手段とをさらに備える、請求項３に記載の機器の制御装置。
【請求項９】
前記制御装置の状態の変化を検出する検出手段と、
前記状態の変化が検出されたことに基づいて、前記プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備え、
前記生成手段は、前記制御プログラムが消去されたことに基づいて前記送信要求を生成する、請求項８に記載の機器の制御装置。
【請求項１０】
機器の制御装置であって、
通信回線に接続され、機器を制御するための制御プログラムを暗号化することにより生成された暗号化プログラムと、前記制御プログラムを暗号化するために使用された第１の暗号ルールと、前記制御プログラムを暗号化するために使用可能な第２の暗号ルールとを、前記通信回線に接続されている通信装置から受信する受信手段と、
前記受信手段によって受信された前記第１の暗号ルールに基づいて前記暗号化プログラムを復号化することにより、前記制御プログラムを導出する第１の復号化手段と、
前記受信手段によって受信された前記第２の暗号ルールを格納する記憶手段と、
前記受信手段が新たな暗号化プログラムと、第３の暗号ルールと、第４の暗号ルールとを受信した場合に、前記記憶手段に格納されている前記第２の暗号ルールと、前記第３の暗号ルールとに基づいて、前記新たな暗号化プログラムが前記制御プログラムを暗号化したものであるか否かの確認を行なう認証手段と、
前記新たな暗号化プログラムは前記制御プログラムを暗号化したものであることが認証された場合に、前記第３の暗号ルールに基づいて前記新たな暗号化プログラムを復号化することにより前記制御プログラムを導出する第２の復号化手段と、
前記新たな暗号化プログラムは前記制御プログラムを暗号化したものであることが認証された場合に、前記認証手段による確認のためのデータとして、前記記憶手段に格納されている第２の暗号ルールに代えて前記第４の暗号ルールを前記記憶手段に書き込む更新手段と、
前記第１の復号化手段または前記第２の復号化手段によって導出された制御プログラムに基づいて前記機器を制御する制御手段とを備える、機器の制御装置。
【請求項１１】
前記第１の暗号ルールと前記第２の暗号ルールとは、同一である、請求項１０に記載の機器の制御装置。
【請求項１２】
前記第２の暗号ルールと前記第３の暗号ルールとは、同一である、請求項１０に記載の機器の制御装置。
【請求項１３】
前記第３の暗号ルールと前記第４の暗号ルールとは、異なる暗号ルールである、請求項１０に記載の機器の制御装置。
【請求項１４】
各前記暗号ルールは、前記制御プグラムを暗号化するための暗号鍵と、前記暗号鍵を用いて生成されたデータを復号化するための復号鍵とを含む、請求項１０に記載の機器の制御装置。
【請求項１５】
前記制御装置の状態の変化を検出する検出手段と、
前記状態の変化が検出されたことに基づいて、前記プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える、請求項１０に記載の機器の制御装置。
【請求項１６】
電力の供給と前記供給の停止とを切り換えるための切換手段をさらに備え、
前記検出手段は、前記電力の供給と前記供給の停止との切り換えを検出し、
前記消去手段は、前記切り換えが検出された場合に、前記制御プログラムを消去する、請求項１５に記載の機器の制御装置。
【請求項１７】
データを受信可能なデータ通信装置の接続を受け付けるインターフェイス手段をさらに備え、
前記検出手段は、前記データ通信装置が前記インターフェイス手段に接続されたことを検出し、
前記消去手段は、前記データ通信装置が前記インターフェイス手段に接続されたことが検出された場合に、前記制御プログラムを消去する、請求項１５に記載の機器の制御装置。
【請求項１８】
前記暗号化プログラムと、前記暗号化処理のために使用された暗号ルールとの送信要求を生成する生成手段と、
前記生成手段によって生成された送信要求を前記通信装置に送信する送信手段とをさらに備える、請求項１０に記載の機器の制御装置。
【請求項１９】
前記制御装置の状態の変化を検出する検出手段と、
前記状態の変化が検出されたことに基づいて、前記プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備え、
前記生成手段は、前記制御プログラムが消去されたことに基づいて前記送信要求を生成する、請求項１８に記載の機器の制御装置。
【請求項２０】
機器を制御する制御装置がプログラムを保護する保護方法であって、前記制御装置は、データを格納するメモリを備え、
前記保護方法は、
前記制御装置に固有に割り当てられた識別データと、プログラムを暗号化および復号化するための暗号ルールに基づいて前記機器を制御するための制御プログラムを暗号化することにより導出された暗号化プログラムとを受信するステップと、
前記識別データおよび前記暗号ルールをロードするステップとを備え、前記識別データおよび前記暗号ルールは、前記メモリに予め入力されたデータであり、
受信された前記識別データと、ロードされた前記識別データとに基づいて、受信された前記暗号化プログラムが前記制御装置による使用のための制御プログラムを暗号化したものであるか否かを確認するステップと、
前記暗号化プログラムが前記使用のための制御プログラムを暗号化したものであることが確認された場合に、前記暗号ルールに基づいて前記暗号化プログラムを復号化することにより前記制御プログラムを導出するステップと、
導出された前記制御プログラムに基づいて、前記機器を制御するステップとを備える、プログラムの保護方法。
【請求項２１】
機器を制御する制御装置がプログラムを保護する保護方法であって、前記制御装置は、データを格納するメモリを備え、
前記保護方法は、
プログラムを暗号化および復号化するための複数の暗号ルールのうちの第１の暗号ルールに基づいて、前記機器を制御するための制御プログラムを暗号化することにより導出された暗号化プログラムと、前記第１の暗号ルールと、前記複数の暗号ルールのうちの第２の暗号ルールとを受信するステップと、
受信された前記第１の暗号ルールに基づいて、前記暗号化プログラムを復号化することにより前記制御プログラムを導出するステップと、
受信された前記第２の暗号ルールを前記メモリに格納するステップと、
前記第２の暗号ルールに基づいて前記制御プログラムを暗号化することにより生成された新たな暗号化プログラムと、前記第２の暗号ルールと、前記複数の暗号ルールのうちの第３の暗号ルールとを受信するステップと、
前記新たな暗号化プログラムと、前記第２の暗号ルールと、前記第３の暗号ルールとが受信された場合に、前記メモリに格納されている前記第２の暗号ルールと、受信された前記第２の暗号ルールとに基づいて、前記新たな暗号化プログラムが前記制御プログラムを暗号化したものであるか否かを確認するステップと、
前記新たな暗号化プログラムが前記制御プログラムを暗号化したものであることが確認された場合に、前記第２の暗号ルールに基づいて前記新たな暗号化プログラムを復号化することにより前記制御プログラムを導出するステップと、
前記新たな暗号化プログラムが前記制御プログラムを暗号化したものであることが確認された場合に、前記第３の暗号ルールを前記メモリに保存するステップと、
導出された前記制御プログラムに基づいて前記機器を制御するステップとを備える、プログラムの保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器を制御するためのプログラムを保護する技術に関する。より特定的には、本発明は、そのプログラムのセキュリティを維持しつつ機器を制御するための制御システム、制御装置および当該プログラムの保護方法に関する。
【背景技術】
【０００２】
ファクトリー・オートメーション（以下、適宜「ＦＡ」（Factory  Automation）と表わす。）分野において、専用コントローラなどを使用して生産設備その他の装置を制御することが知られている。専用コントローラには、たとえば、ラダー言語などによってプログラミングされるプログラマブル・ロジック・コントローラ（Programmable  Logic  Controller（PLC））などがある。このコントローラの実行プログラム（たとえば、ラダー言語で記述されたプログラム）は、基本的には第３者に「見られてもよい」ものである。このため、当該コントローラは、メンテナンスを行なうために誰もが接続可能であり、実行プログラムを確認できるように構成されている。さらに、実行プログラムは、ネットワーク通信を用いてプログラミング装置から当該コントローラにダウンロード可能であるため、多くの利用者がその実行プログラムを見ることができる。
【０００３】
しかし、プログラミング装置からプログラマブル・ロジック・コントローラに対して実行プログラムを送信すると、悪意のある第３者への情報漏洩も生じる可能性がある。
【０００４】
また、コントローラの複製を作成（たとえば、生産装置の動作を模倣したシステム）することも不可能ではないため、その複製が違法に作成される場合もある。
【０００５】
具体的には、プログラマーが実行プログラムをラダー言語開発機器（たとえば、プログラムエディタ機能を有するパーソナル・コンピュータ）で作成して、コントローラにそのプログラムをダウンロードした場合、悪意のある第３者は、別のデータ通信装置を用いてそのプログラムを不正に取得し、あるいは、別のラダー言語開発機器を用いて実行プログラムの複製を不正に作成コピーすることができる。その結果、生産装置そのものの複製を作成することが可能になる。
【０００６】
ここで、プログラミング装置とプログラマブル・ロジック・コントローラとの構成については、たとえば特開２００３−１５７１０４号公報（特許文献１）に開示されている。
【０００７】
また、記録媒体に格納されたプログラムの不正な複製を防止する技術は、たとえば、特開平６−１１０５１２号公報（特許文献２）に開示されている。
【０００８】
さらに、プログラマブル・ロジック・コントローラのプログラムを保護する技術は、たとえば、特開平１０−１２４３０８号公報（特許文献３）に開示されている。
【特許文献１】特開２００３−１５７１０４号公報
【特許文献２】特開平６−１１０５１２号公報
【特許文献３】特開平１０−１２４３０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、特開平６−１１０５１２号公報に開示された技術によると、着脱可能なＲＯＭ（Read-Only  Memory）に格納されたプログラムを保護することを目的としている。具体的には、当該目的は、プログラマブル・ロジック・コントローラが備える内部メモリ間でのプログラムの転送時における不正な複製を防止することである。そのため、プログラマブル・ロジック・コントローラがネットワーク環境において使用される場合には、当該プログラムがプログラムの送信側（たとえばプログラム開発装置）から当該プログラマブル・ロジック・コントローラにダウンロードされる時におけるセキュリティを確保することができない可能性がある。
【００１０】
また、特開平１０−１２４３０８号公報に開示された技術は、プログラマブル・ロジック・コントローラを作動させるためのプログラムを、意図しない改変から保護することを目的としており、プログラム自体の漏洩を防止することができない。
【００１１】
本発明は、上述のような問題点を解決するためになされたものであって、その目的は、機器を制御するための制御プログラムを不法なアクセスから保護できる制御システムを提供することである。
【００１２】
他の目的は、機器を制御するための制御プログラムを不法なアクセスから保護できる制御装置を提供することである。
【００１３】
他の目的は、制御プログラムの漏洩を防止することができる制御装置を提供することである。
【００１４】
他の目的は、機器を制御する制御プログラムへの不法なアクセスあるいはプログラムの漏洩を保護する保護方法を提供することである。
【課題を解決するための手段】
【００１５】
上記の目的を達成するために、この発明のある局面に従うと、機器の制御システムが提供される。この制御システムは、機器を制御する制御装置と、通信回線によって制御装置に接続される暗号化装置とを備える。暗号化装置は、制御装置に固有に割り当てられた識別データと、機器を制御するための制御プログラムとを格納する第１の記憶手段と、プログラムを暗号化および復号化するための暗号ルールに基づいて制御プログラムを暗号化することにより、暗号化されたプログラムを生成する暗号化手段と、通信回線に接続され、識別データと暗号化されたプログラムとを、制御装置に送信する送信手段とを備える。制御装置は、識別データおよび暗号ルールを格納する第２の記憶手段を備える。識別データおよび暗号ルールは、予め入力されたデータである。さらに、制御装置は、通信回線に接続され、識別データと暗号化されたプログラムとを、暗号化装置から受信する受信手段と、受信手段によって受信された識別データと、第２の記憶手段に格納されている識別データとに基づいて、受信手段によって受信された暗号化プログラムが制御プログラムを暗号化したものであるか否かを確認する認証手段と、暗号化プログラムが制御プログラムを暗号化したものであることが確認された場合に、暗号ルールに基づいて暗号化プログラムを復号化することにより制御プログラムを導出する復号化手段と、復号化手段によって導出された制御プログラムを格納するプログラム記憶手段と、プログラム記憶手段に格納されている制御プログラムに基づいて、機器を制御する制御手段とを備える。
【００１６】
この発明の他の局面に従う制御システムは、機器を制御する制御装置と、通信回線によって制御装置に接続される暗号化装置とを備える。暗号化装置は、プログラムを暗号化および復号化するための複数の暗号ルールと、機器を制御するための制御プログラムとを格納する第１の記憶手段と、複数の暗号ルールのうちの第１の暗号ルールに基づいて制御プログラムを暗号化することにより、暗号化されたプログラムを生成する暗号化手段と、通信回線を介して、暗号化されたプログラムと、第１の暗号ルールと、複数の暗号ルールのうちの第２の暗号ルールとを、制御装置に送信する第１の送信制御手段とを備える。制御装置は、暗号化されたプログラムと、第１の暗号ルールと、第２の暗号ルールとを受信する受信手段と、受信手段によって受信された第１の暗号ルールに基づいて、暗号化されたプログラムを復号化することにより制御プログラムを導出する第１の復号化手段と、受信手段によって受信された第２の暗号ルールを格納する第２の記憶手段とを備える。暗号化装置は、第１の暗号ルールと第２の暗号ルールとが制御装置に送信された後に、第２の暗号ルールに基づいて制御プログラムを暗号化することにより生成された新たな暗号化プログラムと、第２の暗号ルールと、複数の暗号ルールのうちの第３の暗号ルールとを、制御装置に送信する第２の送信制御手段をさらに備える。制御装置は、新たな暗号化プログラムと、第２の暗号ルールと、第３の暗号ルールとが受信手段によって受信された場合に、第２の記憶手段に格納されている第２の暗号ルールと、受信手段によって受信された第２の暗号ルールとに基づいて、新たな暗号化プログラムが制御プログラムを暗号化したものであるか否かを確認する認証手段と、新たな暗号化プログラムが制御プログラムを暗号化したものである場合に、第２の暗号ルールに基づいて新たな暗号化プログラムを復号化することにより制御プログラムを導出する第２の復号化手段と、新たな暗号化プログラムが制御プログラムを暗号化したものである場合に、認証手段による確認のためのデータとして、第２の記憶手段に格納されている第２の暗号ルールに代えて第３の暗号ルールを記憶手段に書き込む更新手段と、第１の復号化手段または第２の復号化手段によって導出された制御プログラムに基づいて機器を制御する制御手段とを備える。
【００１７】
この発明の他の局面に従うと、機器の制御装置が提供される。この制御装置は、通信回線に接続されている通信装置から、制御装置に固有に割り当てられた識別データと、プログラムを暗号化および復号化するための暗号ルールに基づいて機器の制御プログラムを暗号化することにより生成された暗号化プログラムとを受信する受信手段と、識別データおよび暗号ルールを格納する記憶手段とを備える。識別データおよび暗号ルールは受信手段によるデータの受信の前に入力されたデータである。この制御装置は、受信手段によって受信された識別データと、記憶手段に格納されている識別データとに基づいて、受信手段によって受信された暗号化プログラムが制御プログラムを暗号化したものであるか否かを確認する認証手段と、受信された暗号化プログラムが制御プログラムを暗号化したものであることが確認された場合に、暗号ルールに基づいて暗号化プログラムを復号化することにより制御プログラムを導出する復号化手段と、復号化手段によって導出された制御プログラムを格納するプログラム記憶手段と、プログラム記憶手段に格納されている制御プログラムに基づいて、機器を制御する制御手段とを備える。
【００１８】
好ましくは、暗号ルールは、制御プグラムを暗号化するための暗号鍵と、暗号鍵を用いて生成されたデータを復号化するための復号鍵とを含む。
【００１９】
好ましくは、制御装置は、当該制御装置の状態の変化を検出する検出手段と、状態の変化が検出されたことに基づいて、プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える。
【００２０】
好ましくは、制御装置は、電力の供給と供給の停止とを切り換えるための切換手段をさらに備える。検出手段は、電力の供給と供給の停止との切り換えを検出する。消去手段は、切り換えが検出された場合に、制御プログラムを消去する。
【００２１】
好ましくは、制御装置は、データを受信可能なデータ通信装置の接続を受け付けるインターフェイス手段をさらに備える。検出手段は、データ通信装置がインターフェイス手段に接続されたことを検出する。消去手段は、データ通信装置がインターフェイス手段に接続されたことが検出された場合に、制御プログラムを消去する。
【００２２】
好ましくは、制御装置は、暗号化プログラムと、暗号化処理のために使用された暗号ルールとの送信要求を生成する生成手段と、生成手段によって生成された送信要求を通信装置に送信する送信手段とをさらに備える。
【００２３】
好ましくは、制御装置は、当該制御装置の状態の変化を検出する検出手段と、状態の変化が検出されたことに基づいて、プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える。生成手段は、制御プログラムが消去されたことに基づいて送信要求を生成する。
【００２４】
この発明の他の局面に従う制御装置は、通信回線に接続され、機器を制御するための制御プログラムを暗号化することにより生成された暗号化プログラムと、制御プログラムを暗号化するために使用された第１の暗号ルールと、制御プログラムを暗号化するために使用可能な第２の暗号ルールとを、通信回線に接続されている通信装置から受信する受信手段と、受信手段によって受信された第１の暗号ルールに基づいて暗号化プログラムを復号化することにより、制御プログラムを導出する第１の復号化手段と、受信手段によって受信された第２の暗号ルールを格納する記憶手段と、受信手段が新たな暗号化プログラムと、第３の暗号ルールと、第４の暗号ルールとを受信した場合に、記憶手段に格納されている第２の暗号ルールと、第３の暗号ルールとに基づいて、新たな暗号化プログラムが制御プログラムを暗号化したものであるか否かの確認を行なう認証手段と、新たな暗号化プログラムは制御プログラムを暗号化したものであることが認証された場合に、第３の暗号ルールに基づいて新たな暗号化プログラムを復号化することにより制御プログラムを導出する第２の復号化手段と、新たな暗号化プログラムは制御プログラムを暗号化したものであることが認証された場合に、認証手段による確認のためのデータとして、記憶手段に格納されている第２の暗号ルールに代えて第４の暗号ルールを記憶手段に書き込む更新手段と、第１の復号化手段または第２の復号化手段によって導出された制御プログラムに基づいて機器を制御する制御手段とを備える。
【００２５】
好ましくは、第１の暗号ルールと第２の暗号ルールとは、同一である。
好ましくは、第２の暗号ルールと第３の暗号ルールとは、同一である。
【００２６】
好ましくは、第３の暗号ルールと第４の暗号ルールとは、異なる暗号ルールである。
好ましくは、各暗号ルールは、制御プグラムを暗号化するための暗号鍵と、暗号鍵を用いて生成されたデータを復号化するための復号鍵とを含む。
【００２７】
好ましくは、制御装置は、制御装置の状態の変化を検出する検出手段と、状態の変化が検出されたことに基づいて、プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える。
【００２８】
好ましくは、制御装置は、電力の供給と供給の停止とを切り換えるための切換手段をさらに備える。検出手段は、電力の供給と供給の停止との切り換えを検出する。消去手段は、切り換えが検出された場合に、制御プログラムを消去する。
【００２９】
好ましくは、制御装置は、データを受信可能なデータ通信装置の接続を受け付けるインターフェイス手段をさらに備える。検出手段は、データ通信装置がインターフェイス手段に接続されたことを検出する。消去手段は、データ通信装置がインターフェイス手段に接続されたことが検出された場合に、制御プログラムを消去する。
【００３０】
好ましくは、制御装置は、暗号化プログラムと、暗号化処理のために使用された暗号ルールとの送信要求を生成する生成手段と、生成手段によって生成された送信要求を通信装置に送信する送信手段とをさらに備える。
【００３１】
好ましくは、制御装置は、当該制御装置の状態の変化を検出する検出手段と、状態の変化が検出されたことに基づいて、プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える。生成手段は、制御プログラムが消去されたことに基づいて送信要求を生成する。
【００３２】
この発明の他の局面に従うと、機器を制御する制御装置がプログラムを保護するための保護方法が提供される。制御装置は、データを格納するメモリを備える。保護方法は、制御装置に固有に割り当てられた識別データと、プログラムを暗号化および復号化するための暗号ルールに基づいて機器を制御する制御プログラムを暗号化することにより導出された暗号化プログラムとを受信するステップと、識別データおよび暗号ルールをロードするステップとを備える。識別データおよび暗号ルールは、メモリに予め入力されたデータである。保護方法は、受信された識別データと、ロードされた識別データとに基づいて、受信された暗号化プログラムが制御装置による使用のための制御プログラムを暗号化したものであるか否かを確認するステップと、暗号化プログラムが使用のための制御プログラムを暗号化したものであることが確認された場合に、暗号ルールに基づいて暗号化プログラムを復号化することにより制御プログラムを導出するステップと、導出された制御プログラムに基づいて、機器を制御するステップとを備える。
【００３３】
この発明のさらに他の局面に従う保護方法は、プログラムを暗号化および復号化するための複数の暗号ルールのうちの第１の暗号ルールに基づいて、制御プログラムを暗号化することにより導出された暗号化プログラムと、第１の暗号ルールと、複数の暗号ルールのうちの第２の暗号ルールとを受信するステップと、受信された第１の暗号ルールに基づいて、暗号化プログラムを復号化することにより制御プログラムを導出するステップと、受信された第２の暗号ルールをメモリに格納するステップと、第２の暗号ルールに基づいて制御プログラムを暗号化することにより生成された新たな暗号化プログラムと、第２の暗号ルールと、複数の暗号ルールのうちの第３の暗号ルールとを受信するステップと、新たな暗号化プログラムと、第２の暗号ルールと、第３の暗号ルールとが受信された場合に、メモリに格納されている第２の暗号ルールと、受信された第２の暗号ルールとに基づいて、新たな暗号化プログラムが制御プログラムを暗号化したものであるか否かを確認するステップと、新たな暗号化プログラムが制御プログラムを暗号化したものであることが確認された場合に、第２の暗号ルールに基づいて新たな暗号化プログラムを復号化することにより制御プログラムを導出するステップと、新たな暗号化プログラムが制御プログラムを暗号化したものであることが確認された場合に、第３の暗号ルールをメモリに保存するステップと、導出された制御プログラムに基づいて機器を制御するステップとを備える。
【発明の効果】
【００３４】
本発明によると、機器を制御するための制御プログラムを保護することができる。また、他の局面においては、制御プログラムの漏洩が防止され得る。
【発明を実施するための最良の形態】
【００３５】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００３６】
＜第１の実施の形態＞
図１を参照して、本発明の実施の形態に係るファクトリ・オートメーション（以下、ＦＡと表わす。）システム１０について説明する。図１は、ＦＡシステム１０の構成を表わす図である。
【００３７】
ＦＡシステム１０は、プログラム開発装置１１０と、暗号変換機１００と、プログラマブルロジックコントローラ（以下、ＰＬＣ（Programmable Logic Controller）と表わす。）１３０と、設備機器１４０とを備える。暗号変換機１００とプログラム開発装置１１０とは、ケーブル１５２を介して接続されている。ＰＬＣ１３０と設備機器１４０とは、ＬＡＮ（Local Area Network）１５４を介して接続されている。
【００３８】
図２を参照して、プログラム開発装置１１０について説明する。図２は、プログラム開発装置１１０によって実現される機能の構成を表わすブロック図である。プログラム開発装置１１０は、データ入力部２１０と、指示入力部２２０と、制御部２３０と、認証コード記憶部２４０と、実行プログラム記憶部２５０と、出力部２６０とを備える。制御部２３０は、プログラム編集部２３２と、出力制御部２３４とを含む。
【００３９】
データ入力部２１０は、プログラム開発装置１１０の外部からデータの入力を受け付ける。指示入力部２２０は、プログラム開発装置１１０の使用者による指示の入力を受け付ける。
【００４０】
制御部２３０は、データ入力部２１０からの出力と指示入力部２２０からの出力とに基づいて作動するように構成される。具体的には、制御部２３０は、データ入力部２１０によって入力が受け付けられたデータを、認証コード記憶部２４０に格納する。他の局面においては、制御部２３０は、指示入力部２２０によって受け付けられた指示に基づいてＰＬＣ１３０による制御に使用されるプログラムを作成する。さらに、制御部２３０は、当該使用者によって与えられる指示に基づいて、あるいは予め定められた出力条件が成立したことに基づいて、認証コード記憶部２４０あるいは実行プログラム記憶部２５０に格納されている各データを出力する。
【００４１】
認証コード記憶部２４０は、制御部２３０によって生成されるプログラムを使用する装置を識別するためのデータを格納する。当該識別データは、たとえばＰＬＣ１３０に固有な機器の名称、あるいは各装置に割当てられたＩＰ（Internet Protocol）アドレスなどを含む。
【００４２】
実行プログラム記憶部２５０は、制御部２３０によって生成されたプログラムを格納する。具体的には、実行プログラム記憶部２５０は、ＰＬＣ１３０による使用のためにプログラム編集部２３０によって生成されたプログラム（たとえば、ラダープログラム）を格納する。プログラム編集部２３２が、複数の制御装置の各々についてプログラムをそれぞれ作成した場合には、実行プログラム記憶部２５０は、各装置を識別するためのデータと、当該プログラムとを関連付けて格納する。
【００４３】
出力制御部２３４は、プログラム開発装置１１０の使用者によって与えられた出力指示に基づいて、認証コード記憶部２４０に格納されている認証コードあるいは実行プログラム記憶部２５０に格納されているプログラムを、出力部２６０を介してプログラム開発装置１１０の外部に出力する。プログラム開発装置１１０がケーブル１５２によって暗号変換機１００に接続されている場合には、出力部２６０により出力されるデータは、暗号変換機１００に入力される。
【００４４】
次に、図３を参照して、プログラム開発装置１１０の具体的構成の一態様について説明する。図３は、プログラム開発装置１１０として機能するコンピュータシステム３００のハードウェア構成を表わすブロック図である。
【００４５】
コンピュータシステム３００は、主たる構成要素として、プログラムを実行するＣＰＵ（Central Processing Unit）３１０と、ＣＰＵ３１０によるプログラムの実行によって生成されたデータ、またはマウス３２０もしくはキーボード３３０を介して入力されたデータを揮発的に格納するＲＡＭ（Random Access Memory）３４０と、データを不揮発的に格納するハードディスク３５０と、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）駆動装置３６０と、モニタ３８０と、通信Ｉ／Ｆ３９０とを含む。各構成要素は、相互にデータバスによって接続されている。ＣＤ−ＲＯＭ駆動装置３６０には、ＣＤ−ＲＯＭ３６２が装着される。
【００４６】
コンピュータシステム３００における処理は、各構成要素およびＣＰＵ３１０によって実行されるソフトウェアによって実現される。このようなソフトウェアは、ハードディスク３５０に予め格納されている場合がある。また、当該ソフトウェアは、ＣＤ−ＲＯＭ３６２その他の記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、ソフトウェアは、いわゆるインターネットに接続されている情報提供事業者によってダウンロード可能なプログラムプロダクトとして提供される場合もある。このようなソフトウェアは、ＣＤ−ＲＯＭ駆動装置３６０その他の読取装置によってその記録媒体から読み取られて、あるいは通信Ｉ／Ｆ３９０を介してダウンロードされた後、ハードディスク３５０に一旦格納される。そのソフトウェアは、ＣＰＵ３１０によってハードディスク３５０から読み出され、ＲＡＭ３４０に実行可能なプログラムの形式で格納される。ＣＰＵ３１０は、そのプログラムを実行する。
【００４７】
図３に示されるコンピュータシステム３００を構成する各要素は、一般的なものである。したがって、プログラム開発装置１１０の最も本質的な部分は、ＲＡＭ３４０、ハードディスク３５０、ＣＤ−ＲＯＭ３６２その他の記録媒体に格納されたソフトウェア、あるいはネットワークを介してダウンロード可能なソフトウェアであるともいえる。なお、コンピュータシステム３００の各構成要素の動作は周知であるので、詳細な説明は繰り返さない。
【００４８】
図４を参照して、プログラム開発装置１１０のデータ構造について説明する。図４は、プログラム開発装置１１０として機能するコンピュータシステム３００が備えるハードディスク３５０におけるデータの格納の一態様を表わす図である。ハードディスク３５０は、データを格納するための複数のメモリ領域を含む。
【００４９】
プログラム開発装置１１０によって生成されるプログラムを使用する機器を識別するための機器ＩＤ（Identification）は、メモリ領域４１０に格納されている。当該機器に対して与えられた名称は、メモリ領域４２０に格納されている。メモリ領域４１０および４２０に格納されているデータは、それぞれ相互に関連付けられる。機器ＩＤは、ＣＰＵ３１０による処理によって参照される。機器名称は、プログラム開発装置１１０の使用者（プログラム開発者）によって参照可能である。
【００５０】
さらにハードディスク３５０において、プログラム開発装置１１０によって生成されたプログラムを識別するためのプログラムＩＤは、メモリ領域４３０に格納されている。当該プログラムのデータは、メモリ領域４４０に格納されている。当該プログラムを使用する具体的な機器を識別するためのデータは、メモリ領域４５０に格納されている。メモリ領域４３０から４５０に格納されているデータは、それぞれ相互に関連付けられる。したがって、ＣＰＵ３１０は、各メモリ領域のいずれかを特定することにより、他のメモリ領域に格納されている項目を検索することができる。コンピュータシステム３００をプログラム開発装置１１０として機能させるための編集プログラムは、メモリ領域４６０に格納されている。ＣＰＵ３１０が、この編集プログラムを実行可能な形式でＲＡＭ３４０にロードして、ロードされたプログラムを実行すると、コンピュータシステム３００は、プログラム開発装置１１０として機能することができる。
【００５１】
ここで、図５を参照して、プログラム開発装置１１０の制御構造について説明する。図５は、コンピュータシステム３００が備えるＣＰＵ３１０が実行する一連の処理を表わすフローチャートである。
【００５２】
ステップＳ５１０にて、ＣＰＵ３１０は、マウス３２０あるいはキーボード３３０に対して与えられた操作指示に基づいて、プログラムエディタを起動する指示が入力されたことを検知する。ステップＳ５２０にて、ＣＰＵ３１０は、編集プログラム（メモリ領域４６０）をＲＡＭ３４０に読み出して、プログラムエディタを起動する。プログラムエディタは、たとえば、設備機器に対する指令を表わす複数のアイコンを選択することにより、当該設備機器を制御するプログラムを編集可能とする。
【００５３】
ステップＳ５３０にて、ＣＰＵ３１０は、ＰＬＣ１３０が設備機器１４０を制御するプログラムを作成するための操作入力を受け付ける。当該操作入力は、たとえば、そのプログラムに対して与えられるデータの入力、設備機器１４０に実行させる具体的な処理の選択のための入力などを含む。ステップＳ５４０にて、ＣＰＵ３１０は、当該操作入力に応じて編集プログラムによって予め与えられたコードモジュールを組み合わせることにより上記のプログラムを作成する。
【００５４】
ステップＳ５５０にて、ＣＰＵ３１０は、プログラムエディタを終了する指示が入力されたか否かを判断する。ＣＰＵ３１０が、当該指示は入力されたと判断すると（ステップＳ５５０にてＹＥＳ）、処理はステップＳ５６０に移される。そうでない場合には（ステップＳ５５０にてＮＯ）、処理はステップＳ５３０に戻される。
【００５５】
ステップＳ５６０にて、ＣＰＵ３１０は、作成したプログラムと当該プログラムに関連する情報とをハードディスク３５０において確保されたメモリ領域に書き込む。当該プログラムに関連する情報は、たとえば、そのプログラムを特定の設備機器１４０に対して適用するためにプログラム開発者によって与えられた定義情報などを含む。
【００５６】
次に、図６を参照して、本実施の形態に係る暗号開発機１００について説明する。図６は、暗号開発機１００によって実現される機能の構成を表わすブロック図である。暗号開発機１００は、入力部６１０と、管理データ生成部６２０と、暗号ルール生成部６３０と、暗号ルール記憶部６４０と、暗号化処理部６５０と、通信コード生成部６６０と、送信部６７０とを備える。
【００５７】
入力部６１０は、暗号開発機１００の外部から指示あるいはデータの入力を受け付ける。当該指示は、暗号開発機１００の使用者によって与えられる指示と、プログラム開発装置１１０その他の装置によって与えられる指示信号とを含む。入力されるデータは、ＦＡシステム１０を構成する各制御装置（たとえばＰＬＣ１３０）などを識別するための認証コードと、プログラム開発装置１１０によって生成されたプログラムとを含む。
【００５８】
暗号ルール生成部６２０は、入力部６１０からの出力に基づいて作動可能なように構成される。より具体的には、暗号ルール生成部６２０は、暗号ルールを生成する指示の入力に基づいて、予め準備された生成基準に従って、暗号鍵と復号鍵とを生成する。ここで、暗号ルールを生成するための指示は、暗号開発機１００の使用者によって与えられる場合もあれば、暗号開発機１００に接続されている他の装置によって与えられる電気信号をも含む。
【００５９】
管理データ生成部６３０は、入力部６１０からの出力と、暗号ルール生成部６２０からの出力等に基づいて作動可能なように構成される。より具体的には、管理データ生成部６３０は、入力部６１０によって受け付けられた認証コードと、暗号ルール生成部６２０によって生成された復号鍵とを用いて管理データを生成する。
【００６０】
暗号ルール記憶部６４０は、暗号ルール生成部６２０によって生成された暗号ルール（すなわち暗号鍵と復号鍵）を格納する。
【００６１】
暗号化処理部６５０は、入力部６１０からの出力と、暗号ルール記憶部６４０に格納されているデータとに基づいて作動可能なように構成される。より具体的には、暗号化処理部６５０は、入力部６１０によって受け付けられた実行プログラムと、暗号ルール記憶部６４０に格納されている暗号鍵とを用いて、そのプログラムに対して暗号化処理を実行し、暗号化されたプログラムを生成する。
【００６２】
通信コード生成部６６０は、管理データ生成部６３０および暗号化処理部６５０からの各出力と、暗号ルール記憶部６４０に格納されているデータとに基づいて作動可能なように構成される。より具体的には、通信コード生成部６６０は、管理データ生成部６３０によって生成された管理データと、暗号化処理部６５０によって生成された暗号化プログラムと、暗号ルール記憶部６４０に格納されている復号鍵とを用いて、ＰＬＣ１３０に送信するための通信フレームを生成する。
【００６３】
送信部６７０は、通信フレーム生成部６６０からの出力に基づいて作動可能なように構成される。より具体的には、送信部６７０は、通信フレーム生成部６６０によって生成された通信フレームの入力を受けて、当該通信フレームをインターネット１５０に対して送出する。
【００６４】
ここで、図７を参照して、暗号変換機１００の具体的構成について説明する。図７は、暗号変換機１００として機能するコンピュータシステム７００のハードウェア構成を表わすブロック図である。
【００６５】
コンピュータシステム７００は、主たる構成要素として、プログラムを実行するＣＰＵ７１０と、コンピュータシステム７００の使用者による指示の入力を受け付けるマウス７２０およびキーボード７３０と、ＣＰＵ７１０によるプログラムの実行により生成されたデータ、またはマウス７２０もしくはキーボード７３０を介して入力されたデータを揮発的に格納するＲＡＭ７４０と、データを不揮発的に格納するハードディスク７５０と、ＣＤ−ＲＯＭ駆動装置７６０と、モニタ７８０と、通信Ｉ／Ｆ７９０とを含む。各構成要素は、相互にデータバスによって接続されている。ＣＤ−ＲＯＭ駆動装置７６０には、ＣＤ−ＲＯＭ７６２が装着される。
【００６６】
図７に示されるコンピュータシステム７００の各構成要素は、図４に示されるコンピュータシステム４００の各構成要素と同様の機能を実現する。したがって、ここではそれらについての説明は繰り返さない。
【００６７】
次に、図８を参照して、暗号変換機１００の制御構造について説明する。図８は、暗号変換機１００として機能するコンピュータシステム７００が備えるＣＰＵ７１０が実行する一連の処理を表わすフローチャートである。
【００６８】
ステップＳ８１０にて、ＣＰＵ７１０は、コンピュータシステム７００の使用者によって与えられた指示あるいは予め定められた生成条件が成立したことに基づいて、暗号ルール（暗号鍵と復号鍵）を生成する。ステップＳ８２０にて、ＣＰＵ７１０は、生成した暗号ルールをハードディスク７５０において確保した領域に格納する。このとき、ＣＰＵ７１０は、暗号鍵と、復号鍵と、当該暗号ルールの使用の対象となるＰＬＣ１３０の識別データとを関連付けて格納する。
【００６９】
ステップＳ８３０にて、ＣＰＵ７１０は、コンピュータシステム７００の外部から認証コードおよび実行プログラムの入力を受け付けて、ＲＡＭ７４０において確保した領域に格納する。たとえばＣＰＵ７１０は、通信Ｉ／Ｆ７９０を介して認証コードおよび実行プログラムを受信する。あるいは、別の局面においては、ＣＰＵ７１０は、ＣＤ−ＲＯＭ７６２に格納されている認証コードおよび実行プログラムを、ＣＤ−ＲＯＭ駆動装置７６０を用いて読み出す。
【００７０】
ステップＳ８４０にて、ＣＰＵ７１０は、認証コードと復号鍵とに基づいて管理データを生成し、生成されたデータをＲＡＭ７４０に一時的に格納する。
【００７１】
ステップＳ８５０にて、ＣＰＵ７１０は、ステップＳ８１０にて生成した暗号鍵を用いて入力された実行プログラムを暗号化する。
【００７２】
ステップＳ８６０にて、ＣＰＵ７１０は、通信フレーム生成部６６０として、管理データと暗号化された実行プログラムとを用いて、通信フレームを生成する。通信フレームの構成は後述する。
【００７３】
ステップＳ８７２にて、ＣＰＵ７１０は、ハードディスク７５０に格納されている認証コードを参照して、指定された機器（ＰＬＣ１３０）に対してその通信フレームを送信する。
【００７４】
ここで、図９を参照して、本実施の形態に係る暗号変換機１００から送信される通信フレーム９００について説明する。図９は、通信フレーム９００の構成を概念的に表わす図である。通信フレーム９００は、ヘッダ９１０と、ユーザデータ９２０と、ＦＣＳ（Frame Check Sequence）９３０とを含む。ヘッダ９１０は、宛先アドレスと、送信元アドレスと、送信日時とを含む。ユーザデータ９２０は、認証コードと、復号鍵と、暗号化されたプログラムとを含む。ＦＣＳ９３０は、宛先アドレスからユーザデータ９２０までの範囲に含まれるデータについて誤りの有無を検査するためのデータを含む。
【００７５】
図１０を参照して、本実施の形態に係るＰＬＣ１３０について説明する。図１０は、ＰＬＣ１３０によって実現される機能の構成を表わすブロック図である。ＰＬＣ１３０は、通信フレーム入力部１０１０と、指示入力部１０２０と、制御部１０３０と、入力データ記憶部１０４０と、入出力インターフェイス部１０５０と、実行プログラム記憶部１０６０とを備える。制御部１０３０は、認証部１０３１と、復号部１０３２と、実行部１０３３と、電源オン／オフ検知部１０３４と、プログラム消去部１０３５とを含む。
【００７６】
通信フレーム入力部１０１０は、ＰＬＣ１３０の外部から通信フレームの入力を受け付ける。通信フレーム入力部１０１０は、たとえばインターフェイス１５０に接続される。
【００７７】
指示入力部１０２０は、ＰＬＣ１３０の使用者による操作指示の入力を受け付ける。ＰＬＣ１３０がコンピュータシステムによって実現される場合には、指示入力部１０２０は、たとえばそのコンピュータシステムが備えるマウスあるいはキーボード（図示しない）として実現される。
【００７８】
制御部１０３０は、通信フレーム入力部１０１０からの出力と、指示入力部１０２０からの出力等に基づいて作動可能なように構成される。制御部１０３０は、通信フレーム入力部１０１０によって受け付けられた通信フレームから、当該通信フレームに含まれる各データを取得し、入力データ記憶部１０４０において確保した領域に格納する。
【００７９】
制御部１０３０は、ある局面においては、認証部１０３１として、通信フレーム入力部１０１０によって受け付けられた通信フレームに含まれるデータと、入力データ記憶部１０４０に格納されているデータとを比較することにより、当該通信フレームが正当なものであるか否かの認証を行なう。
【００８０】
復号部１０３２は、認証部１０３１からの出力に基づいて作動可能なように構成される。より具体的には、復号部１０３２は、認証部１０３１の認証の結果に基づいて、暗号化されていたデータを復号化する。たとえば、ＰＬＣ１３０によって制御される設備機器１４０の動作を制御するためのプログラムが暗号化されている場合には、復号部１０３２は、当該復号処理を行なうための復号鍵を用いて、そのプログラムを復号化する。復号部１０３２は、復号化により生成されたデータを実行プログラム記憶部１０６０に確保した領域に格納する。
【００８１】
電源オン／オフ検知部１０３４は、指示入力部１０２０からの出力に基づいて作動可能なように構成される。たとえば、指示入力部１０２０がＰＬＣ１３０の電源のスイッチボタンである場合には、電源オン／オフ検知部１０３４は、指示入力部１０２０に対して与えられた指示に基づいて、ＰＬＣ１３０の電源スイッチがオンされたかオフされたかを検知する。
【００８２】
プログラム消去部１０３５は、電源オン／オフ検知部１０３４からの出力に基づいて作動可能なように構成される。具体的には、電源オン／オフ検知部１０３４がＰＬＣ１３０の電源のオンを検知した場合には、プログラム消去部１０３５は、実行プログラム記憶部１０６０に格納されている実行プログラムを消去する。
【００８３】
次に、図１１を参照して、ＰＬＣ１３０の具体的構成について説明する。図１１は、ＰＬＣ１３０のハードウェア構成を表わすブロック図である。ＰＬＣ１３０は、インナーボード１１１０と、コントローラ１１２０とを含む。インナーボード１１１０とコントローラ１１２０とはＣＰＵバス１１３０によって接続されている。インナーボード１１１０は、ＰＬＣ１３０に対して着脱可能である。
【００８４】
インナーボード１１１０は、インナーボードＣＰＵ１１１２と、メモリ１１１４と、通信インターフェイス１１１６とを含む。コントローラ１１２０は、コントローラＣＰＵ１１２２と、Ｉ／Ｏ（Input/Output）ユニット１１２４と、実行メモリ１１２６と、ツール１１２８とを含む。コントローラＣＰＵ１１２２と実行メモリ１１２６とはＣＰＵバス１１３０によって接続されている。コントローラＣＰＵ１１２２とＩ／Ｏユニット１１２４とは、Ｉ／Ｏバス１１４０によって接続されている。
【００８５】
通信インターフェイス１１１６は、ＰＬＣ１３０の外部からのデータの入力を受け付ける。また、通信インターフェイス１１１６は、ＰＬＣ１３０に接続されているインターネット１５０を介して他の装置にデータを送信する。
【００８６】
インナーボードＣＰＵ１１１２は、通信インターフェイス１１１６からの出力と、メモリ１１１４に格納されているデータとに基づいて作動可能なように構成される。たとえば、インナーボードＣＰＵ１１１２は、通信インターフェイス１１１６を介して暗号変換機１００と通信する。インナーボードＣＰＵ１１１２は、暗号変換機１００によって送信された通信フレーム９００を受信し、通信フレーム９００に含まれるデータ項目を取得し、メモリ１１１４に格納する。
【００８７】
また他の局面においては、インナーボードＣＰＵ１１１２は、ＣＰＵバス１１３０を介してコントローラＣＰＵ１１２２と通信する。通信されるデータは、メモリ１１１４に格納されているデータと、コントローラ１１２０が備える実行メモリ１１２６に格納されているデータとを含む。
【００８８】
一方、コントローラ１１２０において、コントローラＣＰＵ１１２２は、コントローラ１１２０を構成するハードウェアの動作を制御する。また、コントローラＣＰＵ１１２２は、インナーボードＣＰＵ１１１２と通信する。コントローラＣＰＵ１１２２は、実行メモリ１１２６に格納されているデータと、Ｉ／Ｏユニット１１２４からの出力とに基づいて作動可能なように構成されている。
【００８９】
実行メモリ１１２６は、ＰＬＣ１３０に接続される設備機器１４０を制御するために作成されたプログラムを実行可能な形式で格納している。コントローラＣＰＵ１１２２は、実行メモリ１１２６に格納されている当該プログラムを実行し、Ｉ／Ｏユニット１１２４を介して設備機器１４０に指令を与える。また、設備機器１４０から出力がＩ／Ｏユニット１１２４に入力される場合には、コントローラＣＰＵ１１２２は、Ｉ／Ｏユニット１１２４のレジスタ（図示しない）に格納されているデータを読み出し、実行メモリ１１２６において確保したメモリ領域にそのデータを蓄積する。コントローラＣＰＵ１１２２は、蓄積されたデータをインナーボード１１１０のメモリ１１１４に送信する。
【００９０】
Ｉ／Ｏユニット１１２４は、ＰＬＣ１３０に接続される設備機器１４０の動作を制御するために予め定められた値を保持し、設備機器１４０に与える。設備機器１４０は、そのデータを参照して予め定められた処理を実行する。あるいは、Ｉ／Ｏユニット１１２４は、設備機器１４０によって生成される実績データを格納するための領域を含む。Ｉ／Ｏユニット１１２４は、設備機器１４０から出力されるデータをその領域に順次格納していき、設備機器１４０の実績値として、そのデータをコントローラＣＰＵ１１２２に与える。
【００９１】
次に、図１２を参照して、ＰＬＣ１３０のデータ構造について説明する。図１２は、メモリ１１１４におけるデータの格納の一態様を概念的に表わす図である。メモリ１１１４は、データを格納するための複数のメモリ領域を含む。
【００９２】
オペレーティングシステムは、メモリ領域１２１０に格納されている。ＰＬＣ１３０が暗号変換機１００と通信するための通信制御プログラムは、メモリ領域１２２０に格納されている。復号処理プログラムは、メモリ領域１２３０に格納されている。復号処理プログラムは、予め暗号化されているデータを復号するためにインナーボードＣＰＵ１１１２によって使用される。
【００９３】
ＰＬＣ１３０を識別するために予め与えられた認証コードは、メモリ領域１２４０に格納されている。当該復号処理プログラムに使用される復号鍵は、メモリ領域１２５０に格納されている。なお、ＰＬＣ１３０が最初に起動するときには、復号鍵はＰＬＣ１３０に未だ格納されていない。この場合、たとえば「ＮＵＬＬ」を表わすデータが、メモリ領域１２５０に格納される。
【００９４】
復号処理プログラムによる処理の対象となる暗号化されたプログラムは、メモリ領域１２６０に格納される。たとえば、ＰＬＣ１３０が通信インターフェイス１１１６を介して暗号化されたプログラムを暗号変換機１００から受信すると、そのプログラムはメモリ領域１２６０に格納される。
【００９５】
暗号化されているプログラムを復号することによって生成されるデータは、メモリ領域１２７０に格納される。復号処理が実行されていない場合には、メモリ領域１２７０は、リザーブ領域としてインナーボードＣＰＵ１１１２による他の使用から保護される。
【００９６】
図１３を参照して、ＰＬＣ１３０におけるデータの移送について説明する。図１３は、メモリ１１１４と実行メモリ１１２６との間におけるデータの移動を表わす図である。
【００９７】
ＰＬＣ１３０が通信フレーム９００を受信すると、通信フレーム９００に含まれているデータ（暗号化されたプログラム、復号鍵、認証コード）は、メモリ１１１４のメモリ領域１２６０に格納される。その後、インナーボードＣＰＵ１１１２が復号処理プログラム（メモリ領域１２３０）を実行することにより復号鍵（メモリ領域１２５０）を用いて復号化処理を実行すると、暗号化されたプログラムは実行プログラムに復号される。実行プログラムは、メモリ領域１２７０に保持される。ここで、インナーボードＣＰＵ１１１２はコントローラＣＰＵ１１２２と通信し、実行メモリ１１２６において実行プログラムを確保するための領域をコントローラＣＰＵ１１２２に確保させる。コントローラＣＰＵ１１２２が実行メモリ１１２６における当該メモリ領域の確保をインナーボードＣＰＵ１１１２に通知すると、インナーボードＣＰＵ１１１２はメモリ領域１２７０に格納されている実行プログラムを読み出して、実行メモリ１１２６において確保された領域に実行プログラムを書き込む。なお、データの移送の態様は、前述のものに限られない。たとえば、データの容量がコントローラＣＰＵ１１２２の内部メモリの容量を下回る場合には、まず、当該データは、インナーボードＣＰＵ１１１２からコントローラ１１２２にされ、その後に、コントローラ１１２２が実行メモリ１１２６のメモリ領域に書き込まれてもよい。
【００９８】
コントローラＣＰＵ１１２２は、実行プログラムが実行メモリ１１２６に書き込まれたことに基づいて、ＰＬＣ１３０に接続される設備機器１４０を制御するための処理を実行する。具体的には、コントローラＣＰＵ１１２２は、Ｉ／Ｏユニット１１２４を介して設備機器１４０との間でデータを通信することにより、実行プログラムで規定された処理を設備機器１４０に実行させる。あるは、コントローラＣＰＵ１１２２は、設備機器１４０から出力されたデータを、Ｉ／Ｏユニット１１２４を介して取得する。
【００９９】
図１４を参照して、本実施の形態に係るＰＬＣ１３０の制御構造について説明する。図１４は、ＰＬＣ１３０が備えるインナーボードＣＰＵ１１１２が実行する一連の処理を表わすフローチャートである。
【０１００】
ステップＳ１４１０にて、インナーボードＣＰＵ１１１２は、インターネット１５０を経由して暗号変換機１００と通信することにより、暗号変換機１００との通信を確立する。ＰＬＣ１３０との通信の確立を検知した暗号変換機１００は、前述の処理（図８）を実行する。
【０１０１】
ステップＳ１４２０にて、インナーボードＣＰＵ１１１２は、暗号変換機１００によって送信された通信フレーム９００を受信する。ステップＳ１４３０にて、インナーボードＣＰＵ１１１２は、通信フレーム９００から、認証コードと、復号鍵と、暗号化されたプログラムとを取得する。
【０１０２】
ステップＳ１４４０にて、インナーボードＣＰＵ１１１２は、予め登録されている認証コード（メモリ領域１２４０）と通信フレーム９００から取得された認証コードとが一致するか否かを判断する。インナーボードＣＰＵ１１１２が、これらの認証コードは一致していると判断すると（ステップＳ１１４０にてＹＥＳ）、処理はステップＳ１４５０に移される。そうでない場合には（ステップＳ１４４０にてＮＯ）、処理はステップＳ１１６０に移される。
【０１０３】
ステップＳ１４５０にて、インナーボードＣＰＵ１１１２は、予め登録されている復号鍵（メモリ領域１２５０）と、通信フレーム９００から取得された復号鍵とが一致するか否かを判断する。インナーボードＣＰＵ１１１２がこれらの復号鍵を一致すると判断すると（ステップＳ１４５０にてＹＥＳ）、処理はステップＳ１４７０に移される。そうでない場合には（ステップＳ１４５０にてＮＯ）、処理はステップＳ１４６０に移される。
【０１０４】
ステップＳ１４７０にて、インナーボードＣＰＵ１１１０は、その復号鍵を用いて、暗号化されているプログラムを復号化する。ステップＳ１４８０にて、インナーボードＣＰＵ１１１２は、復号されたプログラムを確保したメモリ領域１２７０に保存する。
【０１０５】
ステップＳ１４９０にて、インナーボードＣＰＵ１１１０は、メモリ１１１４に格納されている当該プログラムを読み出して、コントローラ１１２０の実行メモリ１１２６において確保された領域にそのプログラムをコピーする。
【０１０６】
ステップＳ１４６０にて、インナーボードＣＰＵ１１１２は、その通信フレームを廃棄する。
【０１０７】
上記のような処理が実行された結果、設備機器１４０を制御するための命令を記述したプログラムがＰＬＣ１３０にインストールされる。これにより、ＰＬＣ１３０は、そのプログラムを実行することにより、設備機器１４０の動作を制御できる。
【０１０８】
以上のようにして、本実施の形態に係るＦＡシステム１０によると、暗号変換機１００は、設備機器１４０を制御するプログラムを暗号鍵を用いて暗号化し、暗号化されたプログラムと、認証コードと、復号鍵とを有する通信フレームをＰＬＣ１３０に送信する。
【０１０９】
ＰＬＣ１３０は、予め割り当てられた当該ＰＬＣ１３０に固有な認証コードをメモリ１１１４に有している。ＰＬＣ１３０は、暗号変換機１００によって送信された通信フレームを受信すると、メモリ１１１４に格納されている認証コードと、通信フレームに含まれている認証コードとを比較する。各認証コードが一致する場合には、ＰＬＣ１３０は、暗号化されたプログラムと復号鍵とを通信フレームから取得し、そのプログラムを復号し、設備機器１４０を制御するプログラムを導出する。これにより、ＰＬＣ１３０による設備機器１４０の制御が可能になる。
【０１１０】
このようにすると、ＰＬＣ１３０が設備機器１４０を制御する処理を実行する前に、その制御に使用されるプログラムをＰＬＣ１３０にインストールすることができる。このようにすると、ＰＬＣ１３０が当該処理を実行しない間、当該プログラムをＰＬＣ１３０から消去しておくことができる。これにより、ＰＬＣ１３０が設備機器１４０を制御していない場合に、そのプログラムがＰＬＣ１３０から取り出されることが防止される。たとえば、ＦＡシステム１０の管理者が不在の場合、あるいは、夜間の休止中に、管理者が意図しないアクセス（たとえば不法なアクセス、あるいはＰＬＣ１３０の盗難等）によってプログラムが漏洩することが防止される。
【０１１１】
また、このインストールは、暗号変換機１００が暗号化されたプログラムをＰＬＣ１３０に送信することにより実現される。したがって、プログラムをインストールする段階における漏洩も防止され得る。
【０１１２】
＜第１の変形例＞
以下、本実施の形態の第１の変形例について説明する。本変形例に係るＦＡシステムは、ＰＬＣにおけるイベントに応じて当該ＰＬＣに格納されているプログラムが消去される点で、前述の各実施の形態と異なる。
【０１１３】
まず、図１５を参照して、本変形例に係るＦＡシステムの技術的思想について説明する。図１５は、ＰＬＣにおけるイベントと当該ＰＬＣの動作と暗号ルールの処理態様との関係を表わす図である。
【０１１４】
ＰＬＣにおけるイベント１５１０は、たとえば「ＰＬＣの電源がオフ」と、「ＰＬＣの電源が投入」と、「運転時に未知のツールが接続」とを含む。各イベントに対応付けられるＰＬＣの動作１５２０は、「そのまま」と「プログラムを消去」と「プログラムを消去」とを含む。暗号ルールの処理態様１５３０は、「前回のルールを保持」と「再起動であればルールに従いプログラムを復号化」と「暗号ルールを消去」とを含む。たとえば前述の第１の実施の形態に係るＰＬＣ１３０の場合、当該ＰＬＣ１３０の電源がオフになっても何らの措置もとられず、前回のルール（復号鍵）がそのまま保持される。これに対して、本変形例に係るＰＬＣによれば、電源が遮断された後に再び投入されると、ＰＬＣの内部に保存されていたプログラムは消去される。この場合、ＰＬＣの起動が再起動であれば、暗号変換機１００と再び通信して復号鍵を取得し、その取得後に、改めてその復号鍵を用いてプログラムを復号する。
【０１１５】
また他の局面において当該ＰＬＣに接続が予定されていない未知のツール（たとえばＵＳＢ（Universal Serial Bus）ケーブルが接続された場合には、同様に実行可能なプログラムは消去される。このとき、復号鍵も消去される。
【０１１６】
そこで、図１６を参照して、本変形例に係るＰＬＣの制御構造について説明する。図１６は、インナーボードＣＰＵ１１１０が実行する一連の処理を表わすフローチャートである。なお、本変形例に係るＰＬＣは、第１の実施の形態に係るＰＬＣ１３０と同様のハードウェア構成を有する。そこで、以下の説明では、図１１に示されるＰＬＣ１３０の構成を用いて説明する。
【０１１７】
ステップＳ１６１０にて、インナーボードＣＰＵ１１１２は、ＰＬＣ１３０の電源スイッチのオンを検知する。ステップＳ１６２０にて、インナーボードＣＰＵ１１１２は、インナーボード１１１０のメモリ１１１４に格納されている暗号化されたプログラムおよび復号されたプログラムと、コントローラ１１２０の実行メモリ１１２６に格納されている実行プログラムとを消去する。
【０１１８】
ステップＳ１６３０にて、インナーボードＣＰＵ１１１２は、暗号変換機１００との通信を確立する。暗号変換機１００は、ＰＬＣ１３０との通信が確立されたことに基づいて予め規定された処理を実行し、通信フレーム９００を生成し、ＰＬＣ１３０に対して当該通信フレームを送信する。
【０１１９】
ステップＳ１６４０にて、インナーボードＣＰＵ１１１２は、通信インターフェイス１１１６を介して、暗号変換機１００によって送信された通信フレーム９００の受信を検知する。ステップＳ１６５０にて、インナーボードＣＰＵ１１１２は、当該通信フレームから、認証コードと復号鍵と暗号化されたプログラムとを取得する。
【０１２０】
ステップＳ１６６０にて、インナーボードＣＰＵ１１１２は、予め登録されている認証コード（メモリ領域１２４０）と、通信フレームから取得された認証コードとが一致するか否かを判断する。インナーボードＣＰＵ１１１２が、これらの認証コードは一致すると判断すると（ステップＳ１６６０にてＹＥＳ）、処理はステップＳ１６７０に移される。そうでない場合には（ステップＳ１６６０にてＮＯ）、処理はステップＳ１６９０に移される。
【０１２１】
ステップＳ１６７０にて、インナーボードＣＰＵ１１１２は、予め登録されている復号鍵（メモリ領域１２５０）と、通信フレームから取得された復号鍵とが一致するか否かを判断する。インナーボードＣＰＵ１１１２がこれらの復号鍵は一致すると判断すると（ステップＳ１６７０にてＹＥＳ）、処理はステップＳ１６８０に移される。そうでない場合には（ステップＳ１６７０にてＮＯ）、処理はステップＳ１６９０に移される。
【０１２２】
ステップＳ１６８０にて、インナーボードＣＰＵ１１１２は、その復号鍵と復号処理プログラム（メモリ領域１２３０）とを用いて、通信フレームから取得された暗号化されたプログラムを復号化する。ステップＳ１６８２にて、インナーボードＣＰＵ１１１２は、復号化されたプログラムをメモリ１１１４のメモリ領域１２７０に保存する。ステップＳ１６８４にて、インナーボードＣＰＵ１１１２は、コントローラＣＰＵ１１２２との間で通信を行なった後に、実行プログラムをメモリ１１１４から読み出して、実行メモリ１１２６にそのプログラムをコピーする。
【０１２３】
以上のようにして、本変形例に係るＦＡシステムによると、ＰＬＣの電源スイッチがオフからオンに切り換えられた時に、設備機器１４０を制御するためのプログラムが、一旦消去される。このとき、電源スイッチがＦＡシステムの管理者によって操作された場合には、当該管理者は、予め設定されたパスワードを入力する。ＰＬＣは、そのパスワードに基づいて当該管理者が予めＦＡシステムに登録された正当な使用者であることを確認する。確認の後、ＰＬＣの動作モードは、上記プログラムを再度取得するためのモードに切り換わる。その後、ＰＬＣは、暗号変換機１００と通信することにより、暗号化された上記プログラムを再度取得し、復号する。これにより、ＰＬＣは、改めて設備機器１４０を制御することが可能になる。
【０１２４】
一方、電源スイッチが不法にアクセスした第三者によって操作された場合、当該ＰＬＣは、上記モードに切り替わることができない。その結果、ＰＬＣは当該プログラムを有しない状態を維持するため、そのプログラムが第三者に不法に取得されることが防止される。
【０１２５】
なお、ステップＳ１６３０において、暗号変換機１００との通信を確立するための処理が実行される前に、ＰＬＣの使用者の認証処理が行なわれてもよい。たとえば、ＰＬＣにパスワードを予め登録しておき、ＰＬＣにステップＳ１６３０の処理を実行させるためのアクセスを、当該パスワードによって制限することが考えられる。このようにすると、ＰＬＣの電源がオンになった後でも、正当な使用者（たとえば上記ＦＡシステムの管理者）のみが、暗号変換機１００との通信をＰＬＣに指示できるため、消去されたプログラムの取得を正当な使用者のみに制限することができる。
【０１２６】
＜第２の変形例＞
以下、本実施の形態の第２の変形例について説明する。本変形例に係るＰＬＣは、暗号化されたプログラムの復号化と、設備機器１４０の制御とを同一のハードウェアにおいて実行する点で、前述のＰＬＣと異なる。この場合、本変形例に係るＰＬＣは、復号処理を実行するために必要なメモリ領域と、設備機器１４０を制御するために使用されるメモリ領域とを個別に管理する機能を有する。
【０１２７】
そこで、図１７を参照して、本変形例に係るＰＬＣ１７００の構成について説明する。図１７は、ＰＬＣ１７００のハードウェア構成を表わすブロック図である。ＰＬＣ１７００は、コントローラＣＰＵ１７１０と、メモリ１７２０と、通信インターフェイス１７３０と、ツール端子１７４０と、Ｉ／Ｏユニット１７５０とを含む。コントローラＣＰＵ１７１０とメモリ１７２０とは、ＣＰＵバス１７６０によって接続されている。コントローラＣＰＵ１７１０とＩ／Ｏユニット１７５０とは、Ｉ／Ｏバス１７７０によって接続されている。
【０１２８】
コントローラＣＰＵ１７１０は、メモリ１７２０に格納されているデータとツール端子１７４０からの出力と、Ｉ／Ｏユニット１７５０からの出力とに基づいて作動可能なように構成されている。たとえば、コントローラＣＰＵ１７１０は、メモリ１７２０に格納される実行プログラムに基づいてＰＬＣ１７００に接続される機器の動作を制御する。この制御は、Ｉ／Ｏユニット１７５０を介して行なわれる。また他の局面においては、コントローラＣＰＵ１７１０は、ツール端子１７４０に接続される機器と通信し、当該機器の要求に応じた処理を実行する。たとえば、通信機能を有するデバイスがツール端子１７４０に接続された場合には、コントローラＣＰＵ１７１０と当該デバイスとの間で通信が行なわれ、コントローラＣＰＵ１７１０は、当該デバイスから発せられた指令に応じて、たとえばメモリ１７２０に格納されているデータを読み出して当該デバイスに与える。
【０１２９】
コントローラＣＰＵ１７１０は、Ｉ／Ｏユニット１７５０に格納されているバッファ（図示しない）に書き込まれたデータを参照して、そのデータをメモリ１７２０に格納する。このデータは、ＰＬＣ１７００に接続される機器（図１における設備機器１４０に相当する。）における制御の状態あるいは動作の状態を表わすデータに相当する。
【０１３０】
コントローラＣＰＵ１７５０は、メモリ１７２０においてメモリ領域を複数に分割し、Ｉ／Ｏユニット１７５０を介して機器を制御するためのプログラムを実行するための領域と、Ｉ／Ｏユニット１７５０から読み出したデータを格納するための領域とにそれぞれ分けて管理する。
【０１３１】
本変形例に係るＦＡシステムにおいても、設備機器を制御するためのプログラムが保護される。
【０１３２】
＜第２の実施の形態＞
以下、本発明の第２の実施の形態について説明する。本実施の形態に係るＦＡシステムは、システムの構築時に復号鍵をＰＬＣに登録することなくその後の復号処理を実行できる機能を有する点で、前述の各実施の形態と異なる。
【０１３３】
まず、図１８を参照して、本実施の形態に係る技術的思想について説明する。図１８は、本実施の形態に係る暗号変換機とＰＬＣとの間で通信される暗号鍵および復号鍵の遷移を表わす図である。
【０１３４】
ＦＡシステムが構築されると、最初の通信（１回目の通信）が行なわれる。このとき、暗号変換機は、２組の暗号ルール、すなわち、第１組の暗号鍵Ｅ（０）および復号鍵Ｄ（０）と、第２組の暗号鍵Ｅ（０）およびＤ（０）とを生成する。このことから明らかなように、ＦＡシステムが最初に構築されたときには、本実施の形態に係る暗号変換機は、同一の暗号鍵および復号鍵を２組生成する。
【０１３５】
暗号変換機は、ＰＬＣと通信を確立した後、いずれの復号鍵もＰＬＣに送信する。このとき、暗号変換機からＰＬＣに送信されるデータ（すなわち通信フレーム）には、当該復号鍵に加えて、生成された暗号鍵によって暗号化されたプログラムが含まれている。
【０１３６】
ＰＬＣは、その通信フレームを受信すると、その通信フレームから、復号鍵と、暗号化されたプログラムとを取得し、その復号鍵を用いて復号処理を実行する。さらに、ＰＬＣは、当該通信フレームに含まれている復号鍵を次回の復号化処理のためにメモリに保存する。
【０１３７】
ＦＡシステムが稼動を開始し、予め定められた時間が経過すると、あるいは当該システムの管理者によってプログラムの更新が指示されると、暗号変換機とＰＬＣとの間で２回目の通信が行なわれる。この場合、暗号変換機は、２組の暗号ルールを生成する。２組の暗号ルールは、暗号鍵Ｅ（０）および復号鍵Ｄ（０）と、暗号鍵Ｅ（１）および復号鍵Ｄ（１））とを含む。このとき生成される２組の暗号ルールのうちの第１番目の暗号ルールは、前回の通信（１回目の通信）のために生成された暗号ルールのうち第２番目の暗号ルールと同じ内容である。
【０１３８】
暗号変換機は、２組の復号鍵と新たに暗号化されたプログラムとを有する通信フレームを生成し、ＰＬＣに対して、その通信フレームを送信する。
【０１３９】
ＰＬＣは、その通信フレームを受信すると、そのフレームに含まれている第１番目の復号鍵Ｄ（０）を取得し、その復号鍵と前回の通信において既に保存されている復号鍵Ｄ（０）との認証を行なう。ＰＬＣは、この認証の結果、暗号変換機から送信された通信フレームが正当なものであると確認すると、新たに生成された暗号化プログラムをその復号鍵を用いて復号化する。ＰＬＣは、第２番目の復号鍵Ｄ（１）を、次回の復号処理のためにメモリに保存する。
【０１４０】
以上のようにして、暗号変換機とＰＬＣとの間で１回の通信において２組の暗号ルール（暗号鍵と復号鍵）についての通信が行なわれる。そのうちの第１組目の暗号ルールは、暗号変換機とＰＬＣとの認証に使用されるため、ＰＬＣは暗号変換機との間で認証するための固有な識別データを当初から保持する必要がない。
【０１４１】
次に、図１９を参照して、本実施の形態に係る暗号変換機１９００の構成について説明する。図１９は、暗号変換機１９００によって実現される機能の構成を表わすブロック図である。暗号変換機１９００は、入力部６１０と、管理データ生成部６２０と、暗号ルール生成部１９２０と、暗号ルール記憶部１９４０と、暗号化処理部１９５０と、通信フレーム生成部１９６０と、送信部６７０とを含む。
【０１４２】
暗号ルール生成部１９２０は、入力部６１０からの出力に基づいて作動可能なように構成されている。より具体的には、暗号ルール生成部１９２０は、入力部６１０によって受け付けられた通信の指示に基づいて２組の暗号ルール（暗号鍵と復号鍵との組み合わせ）を生成する。暗号ルール生成部１９２０は、その生成した暗号ルールを暗号ルール記憶部１９４０に格納する。
【０１４３】
管理データ生成部１９３０は、入力部６１０からの出力と、暗号ルール生成部１９２０からの出力とに基づいて作動可能なように構成されている。より具体的には、管理データ生成部１９３０は、入力部６１０によって入力が受け付けられた認証コードと、暗号ルール生成部１９２０によって生成された２組の暗号ルールとを用いて管理データを生成する。
【０１４４】
暗号化処理部１９５０は、入力部６１０からの出力と、暗号ルール記憶部１９４０に格納されているデータとに基づいて作動可能なように構成されている。より具体的には、暗号化処理部１９５０は、暗号ルール記憶部１９４０に格納されている１つの暗号鍵を用いて、入力部６１０によって入力が受け付けられた実行プログラムを暗号化する。
【０１４５】
通信フレーム生成部１９６０は、管理データ生成部１９３０および暗号化処理部１９５０からの各出力と、暗号ルール記憶部１９４０に格納されているデータとに基づいて通信フレームを生成する。より具体的には、通信フレーム生成部１９６０は、上記管理データと暗号化されたプログラムと第１および第２の復号鍵とが含まれる通信フレームを生成する。通信フレーム生成部１９６０によって生成された通信フレームは、送信部６７０によってインターネット１５０に対して送出される。
【０１４６】
ここで、図２０を参照して、暗号変換機１９００のデータ構造について説明する。図２０は、暗号ルール記憶部１９４０におけるデータの格納の一態様を概念的に表わす図である。暗号ルール記憶部１９４０は、データを格納するための複数のメモリ領域を含む。暗号ルールを生成した順序を表わす生成タイミングは、メモリ領域２０１０に格納される。このデータは、暗号ルール生成部１９２０による暗号ルールの生成に応じて逐次採番される。
【０１４７】
暗号ルール生成部１９２０によって生成された２組の暗号ルールは、メモリ領域２０２０および２０３０にそれぞれ格納される。すなわち、第１組目の暗号鍵と復号鍵とは、メモリ領域２０２０に格納される。第２組目の暗号鍵と復号鍵とは、メモリ領域２０３０に格納される。当該暗号ルールが使用される対象を表わす機器ＩＤは、メモリ領域２０４０に格納される。
【０１４８】
次に、図２１を参照して、暗号変換機１９００によって生成される通信フレーム２１００について説明する。図２１は、通信フレーム２１００の構成を概念的に表わす図である。通信フレーム２１００は、ヘッダ２１１０と、ユーザデータ２１２０と、ＦＣＳ２１３０とを含む。
【０１４９】
ヘッダ２１１０は、送信元アドレスと宛先アドレスと送信日時とを含む。ユーザデータ２１２０は、認証コードと、第１の復号鍵と、第２の復号鍵と、暗号化されたプログラムとを含む。
【０１５０】
次に本実施の形態に係るＰＬＣについて説明する。なお、本実施の形態に係るＰＬＣは、第１の実施の形態に係るＰＬＣ１３０と同様のハードウェア構成を有する。したがって、ここではそれらについての説明は繰り返さない。以下、図１１に示されるＰＬＣ１３０を例にして説明する。
【０１５１】
図２２を参照して、本発明の第２の実施の形態に係るＦＡシステムの制御構造について説明する。図２２は、本実施の形態に係るＰＬＣ１３０が備えるインナーボードＣＰＵ１１１２が実行する一連の処理を表わすフローチャートである。
【０１５２】
ステップＳ２２１０にて、インナーボードＣＰＵ１１１２は、通信インターフェイス１１１６を経由した入力に基づいて、ＰＬＣ１３０における初期設定の指示が入力されたことを検知する。ステップＳ２２２０にて、インナーボードＣＰＵ１１１２は、通信インターフェイス１１１６を介した入力に基づいて、あるいはＰＬＣ１３０が備えるキーボード（図示しない）に対する操作入力に基づいて、認証コードの入力を受け付ける。ステップＳ２２３０にてインナーボードＣＰＵ１１１２は、ＰＬＣ１３０の使用者による操作入力に基づいて、入力された認証コードの保存の指示を受け付ける。ステップＳ２２４０にて、インナーボードＣＰＵ１１１２は、当該認証コードをメモリ１１１４において確保されたメモリ領域１２４０に保存する。
【０１５３】
図２３は、本実施の形態に係るＰＬＣ２３００によって実現される機能の構成を表わすブロック図である。ＰＬＣ２３００は、図１０に示される構成に対して、制御部１０３０に代えて制御部２３３０を備える。制御部２３３０は、認証部１０３１と復号部１０３２と実行部１０３３と電源オン／オフ検知部１０３４とに加えて、プログラム消去部２３３５を含む。
【０１５４】
プログラム消去部２３３５は、電源オン／オフ検知部１０３４からの出力に基づいて作動可能なように構成されている。より具体的には、プログラム消去部２３３５は、電源オン／オフ検知部１０３４がＰＬＣ２３００の電源スイッチのオフまたはオンを検知すると、実行プログラム記憶部１０６０に格納されているプログラムと、入力データ記憶部１０４０に格納されているデータ（たとえばメモリ１１１４に格納されている認証データ）とを消去する。
【０１５５】
次に、図２４を参照して、本実施の形態に係るＰＬＣのデータ構造について説明する。図２４は、メモリ１１１４におけるデータの格納の一態様を表わす図である。メモリ１１１４は、データを格納するための複数のメモリ領域を含む。メモリ１１１４は、図１０に示される構成に対して、２組の復号鍵を格納するために確保されたメモリ領域２４１０，２４２０を含む。ＰＬＣ１３０が暗号変換機１００から２組の復号鍵を取得すると、各復号鍵はメモリ領域２１１０，２１２０にそれぞれ格納される。また復号鍵が取得される前は、「ＮＵＬＬ」を表わすデータが当該領域に格納される。
【０１５６】
次に、図２５を参照して、本実施の形態に係るＰＬＣ１３０の制御構造について説明する。図２５は、ＰＬＣ１３０が備えるインナーボードＣＰＵ１１１２が実行する一連の処理を表わすフローチャートである。なお前述の実施の形態における処理と同一の処理には同一のステップ番号を付してある。したがって、ここではそれらについての説明は繰り返さない。
【０１５７】
ステップＳ２５４０にて、インナーボードＣＰＵ１１１２は、予め登録されている認証コード（メモリ領域１２４０）と、通信フレームから取得された認証コードとが一致するか否かを判断する。インナーボードＣＰＵ１１１２がこれらの認証コードが一致すると判断すると（ステップＳ２５４０にてＹＥＳ）、処理はステップＳ２５５０に移される。そうでない場合には（ステップＳ２５４０にてＮＯ）、処理はステップＳ１４６０に移される。
【０１５８】
ステップＳ２５５０にて、インナーボードＣＰＵ１１１２は、２つの復号鍵がそれぞれ同一であるか否かを判断する。インナーボードＣＰＵ１１１２がいずれの復号鍵も同一であると判断すると（ステップＳ２５５０にてＹＥＳ）、処理はステップＳ２５６０に移される。そうでない場合には（ステップＳ２５５０にてＮＯ）、処理はステップＳ１４６０に移される。
【０１５９】
ステップＳ２５６０にて、インナーボードＣＰＵ１１１２は、通信フレームから取得した２つの復号鍵をメモリ１１１４に保存する（メモリ領域２４１０，２４２０）。ステップＳ２５７０にて、インナーボードＣＰＵ１１１２は、その復号鍵（いずれの復号鍵でも可）を用いて、暗号化されているプログラムを復号化する。現在インナーボードＣＰＵ１１１２が実行している処理は、初期起動時に実行される処理であるため、復号鍵はいずれも同一である。したがって、インナーボードＣＰＵ１１１２は、いずれの復号鍵によっても、暗号化されているプログラムを復号化することができる。
【０１６０】
ステップＳ２５８０にて、インナーボードＣＰＵ１１１２は、復号化されたプログラムをメモリに保存する（メモリ領域１２７０）。ステップＳ２５９０にて、インナーボードＣＰＵ１１１２は、メモリ１１１４からコントローラ１１２０の実行メモリ１１２６に、当該プログラムをコピーする。
【０１６１】
図２６を参照して、本実施の形態に係るＰＬＣ１３０の制御構造についてさらに説明する。図２６は、ＦＡシステムが正常に稼動している場合に当該ＰＬＣが備えるインナーボードＣＰＵ１１１２が実行する一連の処理を表わすフローチャートである。
【０１６２】
ステップＳ２６１０にて、インナーボードＣＰＵ１１１２は、設備機器１４０を制御するためのプログラムおよび復号鍵の更新のタイミングを検知する。ステップＳ２６２０にて、インナーボードＣＰＵ１１１２は、暗号変換機１００との通信を確立する。ステップＳ２６３０にて、インナーボードＣＰＵ１１１２は、暗号変換機１００によって送信された通信フレームを受信する。ステップＳ２６４０にて、インナーボードＣＰＵ１１１２は、受信した通信フレームから、認証コードと、第１および第２の復号鍵と、暗号化されたプログラムとを取得する。
【０１６３】
ステップＳ２６５０にて、インナーボードＣＰＵ１１１２は、予め登録されている認証コード（メモリ領域１２４０）と、通信フレームから取得された認証コードとが一致するか否かを判断する。インナーボードＣＰＵ１１１２がこれらの認証コードは一致すると判断すると（ステップＳ２６５０にてＹＥＳ）、処理はステップＳ２６６０に移される。そうでない場合には（ステップＳ２６５０にてＮＯ）、処理はステップＳ２６８０に移される。
【０１６４】
ステップＳ２６６０にて、インナーボードＣＰＵ１１１２は、既に保存されている復号鍵（メモリ領域２４１０）と、通信フレームから取得された第１の復号鍵とが一致するか否かを判断する。インナーボードＣＰＵ１１１２が、これらの復号鍵は一致すると判断すると（ステップＳ２６６０にてＹＥＳ）、処理はステップＳ２６７０に移される。そうでない場合には（ステップＳ２６６０にてＮＯ）、処理はステップＳ２６８０に移される。
【０１６５】
ステップＳ２６７０にて、インナーボードＣＰＵ１１１２は、プログラム用領域（メモリ領域１２６０）に既に保存されているプログラムを消去する。ステップＳ２６７２にて、インナーボードＣＰＵ１１１２は、通信フレームから取得された暗号化されたプログラムを第１の復号鍵を用いて復号化する。ステップＳ２６７４にて、インナーボードＣＰＵ１１１２は、復号化されたプログラムをプログラム用領域（メモリ領域１２６０）に保存する。
【０１６６】
ステップＳ２６７６にて、インナーボードＣＰＵ１１１２は、プログラム用領域からコントローラの実行メモリ１１２６に、復号化されたプログラムをコピーする。ステップＳ２６７８にて、インナーボードＣＰＵ１１１２は、第２の復号鍵をメモリに保存する（メモリ領域２４１０）。
【０１６７】
ステップＳ２６８０にて、インナーボードＣＰＵ１１１２は、プログラムの更新ができない旨を報知する。報知の態様は、たとえばメッセージの表示、更新ができない場合に予め発光するように規定されたランプの発光、音声の出力などを含む。
【０１６８】
図２７は、電源スイッチがオンにされた場合にＰＬＣ１３０が実行する一連の処理を表わすフローチャートである。
【０１６９】
ステップＳ２７１０にて、インナーボードＣＰＵ１１１２は、ＰＬＣ１３０の電源スイッチのオンを検知する。ステップＳ２７２０にて、インナーボードＣＰＵ１１１２は、インナーボード１１１０に保存されている暗号化されたプログラム（メモリ領域１２６０）および復号鍵（メモリ領域２１１０，２１２０）と、コントローラ１１２０に保存されている実行プログラム（実行メモリ１１２６）とを消去する。
【０１７０】
ステップＳ２７３０にて、インナーボードＣＰＵ１１１２は、暗号変換機１００との通信を確立する。ステップＳ２７４０にて、インナーボードＣＰＵ１１１２は、初回登録用の復号鍵の送信リクエストを生成し、その送信リクエストを暗号変換機１００に送信する。暗号変換機１００は、その送信リクエストを受信すると、初回登録用の復号鍵（図２０）を用いて、当該復号鍵が含まれる通信フレームを生成し、ＰＬＣ１３０に送信する。
【０１７１】
ステップＳ２７５０にて、インナーボードＣＰＵ１１１２は、暗号変換機１００によって送信された通信フレームの受信を検知する。ステップＳ２７６０にて、インナーボードＣＰＵ１１１２は、当該通信フレームから、認証コードと第１および第２の復号鍵と、暗号化されたプログラムとを取得する。この場合、第１の復号鍵と第２の復号鍵とは同一である。
【０１７２】
ステップＳ２７７０にて、インナーボードＣＰＵ１１１２は、予め登録されている認証コード（メモリ領域１２４０）と、通信フレームから取得された認証コードとが一致するか否かを判断する。インナーボードＣＰＵ１１１２が、これらの認証コードは一致すると判断すると（ステップＳ２７７０にてＹＥＳ）、処理はステップＳ２７８０に移される。そうでない場合には（ステップＳ２７７０にてＮＯ）、処理はステップＳ２７９０に移される。
【０１７３】
ステップＳ２７８０にて、インナーボードＣＰＵ１１１２は、第１および第２の復号鍵が同一であるか否かを判断する。暗号変換機１００によって送信された通信フレームが正常に生成されたものであればこれらの復号鍵は同一である。インナーボードＣＰＵ１１１２が、これらの復号鍵は同一であると判断すると（ステップＳ２７８０にてＹＥＳ）、処理はステップＳ２７８２に移される。そうでない場合には（ステップＳ２７８０にてＮＯ）、処理はステップＳ２７９０に移される。
【０１７４】
ステップＳ２７８２にて、インナーボードＣＰＵ１１１２は、第１および第２のいずれかの復号鍵を用いて、暗号化されたプログラムを復号化する。ステップＳ２７８４にて、インナーボードＣＰＵ１１１２は、復号化されたプログラムをメモリにおいて予め確保された領域（メモリ領域１２７０）に保存する。ステップＳ２７８６にて、インナーボードＣＰＵ１１１２は、メモリ１１１４からコントローラの実行メモリ１１２６にそのプログラムをコピーする。ステップＳ２７８８にて、インナーボードＣＰＵ１１１２は、第１および第２のいずれかの復号鍵をメモリに保存する（メモリ領域２１１０，２１２０）。
【０１７５】
ステップＳ２７９０にて、インナーボードＣＰＵ１１１２は、出力インターフェイス（図示しない）を介して、ＰＬＣ１３０が稼動できない旨を報知する。報知の態様は前述のとおりである。
【０１７６】
以上のようにして、本発明の第２の実施の形態に係るＦＡシステムによると、暗号変換機１９００は、暗号化されたプログラムと２つの暗号ルール（たとえば、復号鍵）とを有する通信フレームをＰＬＣに送信する。通信フレームを受信したＰＬＣは、最初に復号処理を行なった後に、２つ目の復号鍵を保存する。次の通信フレームを受信したときに、ＰＬＣは、受信したフレームから取得した第一番目の復号鍵と、保存しておいた復号鍵とを比較することにより、当該通信フレームに含まれる暗号化されたプログラムが正当なプログラムであるか否かを確認する。仮に、正当でないプログラムが受信されたことが確認されると、そのプログラムは破棄される。
【０１７７】
このようにすると、ＰＬＣが、認証のために使用される暗号ルール（たとえば復号鍵）を有していない場合には、当該ＰＬＣは、そのプログラムを取得することができない。したがって、そのようなＰＬＣによる不法な取得を防止することができる。
【０１７８】
要約すれば、本実施の形態に係るＦＡシステムによると、特定の制御装置（たとえば、プログラマブル・ロジック・コントローラ）のみが特定の制御プログラム（コントローラや製造機器を作動させるためのプログラム）をダウンロードにより取得して使用できる。暗号化されたプログラムがダウンロードされる。
【０１７９】
本実施の形態に係るＦＡシステムが使用する暗号技術により、当該制御プログラムは、ある暗号ルールに従って平文とは全く異なるプログラムコードに変換される。制御装置は、その暗号化されたプログラム（暗号化プログラム）を受信した後に、当該暗号ルールに従って、暗号化プログラムを復号処理して、制御プログラムに復元する。当該暗号ルールは、各機器（制御プログラムの送信側および受信側）において共有される。
【０１８０】
さらに、暗号ルールや暗号化プログラムを送信した際の認証処理に必要な相手先を識別するデータ（実施の形態における認証コード）も使用される。上記のような仕組みにより、暗号化プログラムが確実に、特定の制御装置にダウンロードされる。
【０１８１】
具体的には、本実施の形態に係る認証処理においては、認証コードと、暗号ルールと、相手先（接続先）情報と、対象機種情報（ＰＬＣその他の制御装置に固有な情報）とが少なくとも使用される。さらに、制御プログラムをどのように消去するかの消去情報も使用される。これらの情報に基づいて、相手先の認証と暗号ルールによる装置の認証が行なわれ、ダウンロードされた暗号化プログラムが復号化される。
【０１８２】
また、他の局面において、制御装置が、制御プログラムを実行している間に、バックグラウンドで暗号ルールの変化を常に照合し、最新の暗号ルールで認証してもよい。
【０１８３】
上記の実施の形態に係るＦＡシステムにおいて、暗号変換機あるいは制御装置は、周知のＰＣ（Personal Computer）によっても実現可能である。また、他の局面において、特定の制御装置向けに作成された制御プログラムを、当該制御装置に固有な暗号ルールを用いて暗号化し、制御装置がそのプログラムを実行する際にのみダウンロードすることで、当該プログラムの違法な複製を防止することもできる。
【０１８４】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【０１８５】
本発明は、いわゆるＦＡシステムに含まれる設備を制御するための制御装置と、当該制御装置と通信可能な暗号装置とにおいて利用可能である。また、本発明において、制御装置に係る構成の適用は、制御装置自体に限られない。この構成は、たとえば当該制御装置に対して着脱可能な制御基板に対しても適用可能である。
【図面の簡単な説明】
【０１８６】
【図１】本発明の第１の実施の形態に係るファクトリ・オートメーション（ＦＡ）システム１０の構成を表わす図である。
【図２】ＦＡシステム１０に接続されるプログラム開発装置１１０によって実現される機能の構成を表わすブロック図である。
【図３】プログラム開発装置１１０として機能するコンピュータシステム３００のハードウェア構成を表わすブロック図である。
【図４】コンピュータシステム３００が備えるハードディスク３５０におけるデータの格納の一態様を概念的に表わす図である。
【図５】コンピュータシステム３００が備えるＣＰＵ３１０が実行する一連の処理を表わすフローチャートである。
【図６】本発明の第１の実施の形態に係る暗号開発機１００によって実現される機能の構成を表わすブロック図である。
【図７】暗号変換機１００として機能するコンピュータシステム７００のハードウェア構成を表わすブロック図である。
【図８】コンピュータシステム７００が備えるＣＰＵ７１０が実行する一連の処理を表わすフローチャートである。
【図９】暗号変換機１００から送信される通信フレーム９００の構成を概念的に表わす図である。
【図１０】本発明の第１の実施の形態に係るＰＬＣ１３０によって実現される機能の構成を表わすブロック図である。
【図１１】ＰＬＣ１３０のハードウェア構成を表わすブロック図である。
【図１２】ＰＬＣ１３０のメモリ１１１４におけるデータの格納の一態様を概念的に表わす図である。
【図１３】メモリ１１１４と実行メモリ１１２６との間におけるデータの移動を表わす図である。
【図１４】ＰＬＣ１３０が備えるインナーボードＣＰＵ１１１２が実行する一連の処理を表わすフローチャートである。
【図１５】ＰＬＣに生じるイベントと当該ＰＬＣの動作と暗号ルールの処理態様との関係を表わす図である。
【図１６】本発明の第１の実施の形態の第１の変形例に係るインナーボードＣＰＵ１１１０が実行する一連の処理を表わすフローチャートである。
【図１７】ＰＬＣ１７００のハードウェア構成を表わすブロック図である。
【図１８】本発明の第２の実施の形態に係る暗号変換機とＰＬＣとの間で通信される暗号鍵および復号鍵の遷移を表わす図である。
【図１９】本発明の第２の実施の形態に係る暗号変換機１９００によって実現される機能の構成を表わすブロック図である。
【図２０】暗号ルール記憶部１９４０におけるデータの格納の一態様を概念的に表わす図である。
【図２１】暗号変換機１９００によって生成される通信フレーム２１００の構成を概念的に表わす図である。
【図２２】本発明の第２の実施の形態に係るＰＬＣ１３０が備えるインナーボードＣＰＵ１１１２が実行する一連の処理を表わすフローチャートである。
【図２３】本発明の第２の実施の形態に係るＰＬＣ２３００によって実現される機能の構成を表わすブロック図である。
【図２４】本発明の第２の実施の形態に係るＰＬＣのメモリ１１１４におけるデータの格納の一態様を表わす図である。
【図２５】本発明の第２の実施の形態に係るＰＬＣ１３０が備えるインナーボードＣＰＵ１１１２が実行する一連の処理を表わすフローチャートである。
【図２６】本発明の第２の実施の形態に係るＰＬＣが備えるインナーボードＣＰＵ１１１２が実行する一連の処理を表わすフローチャートである。
【図２７】電源スイッチがオンにされた場合にＰＬＣ１３０が実行する一連の処理を表わすフローチャートである。
【符号の説明】
【０１８７】
１０  ＦＡシステム、１５０  インターネット、１５２  ケーブル、１５４  ＬＡＮ、３００  コンピュータシステム、３６２  ＣＤ−ＲＯＭ、７００  コンピュータシステム、７６２  ＣＤ−ＲＯＭ、９００  通信フレーム、１１３０  ＣＰＵバス、１１４０  Ｉ／Ｏバス、１７６０  ＣＰＵバス、１７７０  Ｉ／Ｏバス、２１００  通信フレーム。
【図１】
2008065678.tif 000003
【図２】
2008065678.tif 000004
【図３】
2008065678.tif 000005
【図４】
2008065678.tif 000006
【図５】
2008065678.tif 000007
【図６】
2008065678.tif 000008
【図７】
2008065678.tif 000009
【図８】
2008065678.tif 000010
【図９】
2008065678.tif 000011
【図１０】
2008065678.tif 000012
【図１１】
2008065678.tif 000013
【図１２】
2008065678.tif 000014
【図１３】
2008065678.tif 000015
【図１４】
2008065678.tif 000016
【図１５】
2008065678.tif 000017
【図１６】
2008065678.tif 000018
【図１７】
2008065678.tif 000019
【図１８】
2008065678.tif 000020
【図１９】
2008065678.tif 000021
【図２０】
2008065678.tif 000022
【図２１】
2008065678.tif 000023
【図２２】
2008065678.tif 000024
【図２３】
2008065678.tif 000025
【図２４】
2008065678.tif 000026
【図２５】
2008065678.tif 000027
【図２６】
2008065678.tif 000028
【図２７】
2008065678.tif 000029