JP2008065678A - 機器の制御システム、制御装置およびプログラムの保護方法 - Google Patents

機器の制御システム、制御装置およびプログラムの保護方法 Download PDF

Info

Publication number
JP2008065678A
JP2008065678A JP2006244138A JP2006244138A JP2008065678A JP 2008065678 A JP2008065678 A JP 2008065678A JP 2006244138 A JP2006244138 A JP 2006244138A JP 2006244138 A JP2006244138 A JP 2006244138A JP 2008065678 A JP2008065678 A JP 2008065678A
Authority
JP
Japan
Prior art keywords
program
encryption
control
rule
encryption rule
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2006244138A
Other languages
English (en)
Inventor
Keiichiro Shikama
恵一郎 鹿間
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2006244138A priority Critical patent/JP2008065678A/ja
Publication of JP2008065678A publication Critical patent/JP2008065678A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】ネットワーク上でFAシステムを構成する制御装置に使用されるプログラムを保護する。
【解決手段】FAシステム10は、暗号変換機100と、プログラマブル・ロジック・コントローラ(PLC)130と、設備機器140とを備える。暗号変換機100とPLC130とは、インターネット150に接続されている。暗号変換機100は、PLC130が実行する制御プログラムを暗号化して、暗号化されたプログラムをPLC130に送信する。PLC130は、暗号化されたプログラムを受信すると、暗号変換機100によって予め生成された暗号ルールに従って、受信したプログラムが設備機器140に固有なプログラムであるか否かを確認し、固有なプログラムである場合には、そのプログラムから制御プログラムを復号し、制御プログラムを実行して設備機器140を制御する。
【選択図】図1

Description

本発明は、機器を制御するためのプログラムを保護する技術に関する。より特定的には、本発明は、そのプログラムのセキュリティを維持しつつ機器を制御するための制御システム、制御装置および当該プログラムの保護方法に関する。
ファクトリー・オートメーション(以下、適宜「FA」(Factory Automation)と表わす。)分野において、専用コントローラなどを使用して生産設備その他の装置を制御することが知られている。専用コントローラには、たとえば、ラダー言語などによってプログラミングされるプログラマブル・ロジック・コントローラ(Programmable Logic Controller(PLC))などがある。このコントローラの実行プログラム(たとえば、ラダー言語で記述されたプログラム)は、基本的には第3者に「見られてもよい」ものである。このため、当該コントローラは、メンテナンスを行なうために誰もが接続可能であり、実行プログラムを確認できるように構成されている。さらに、実行プログラムは、ネットワーク通信を用いてプログラミング装置から当該コントローラにダウンロード可能であるため、多くの利用者がその実行プログラムを見ることができる。
しかし、プログラミング装置からプログラマブル・ロジック・コントローラに対して実行プログラムを送信すると、悪意のある第3者への情報漏洩も生じる可能性がある。
また、コントローラの複製を作成(たとえば、生産装置の動作を模倣したシステム)することも不可能ではないため、その複製が違法に作成される場合もある。
具体的には、プログラマーが実行プログラムをラダー言語開発機器(たとえば、プログラムエディタ機能を有するパーソナル・コンピュータ)で作成して、コントローラにそのプログラムをダウンロードした場合、悪意のある第3者は、別のデータ通信装置を用いてそのプログラムを不正に取得し、あるいは、別のラダー言語開発機器を用いて実行プログラムの複製を不正に作成コピーすることができる。その結果、生産装置そのものの複製を作成することが可能になる。
ここで、プログラミング装置とプログラマブル・ロジック・コントローラとの構成については、たとえば特開2003−157104号公報(特許文献1)に開示されている。
また、記録媒体に格納されたプログラムの不正な複製を防止する技術は、たとえば、特開平6−110512号公報(特許文献2)に開示されている。
さらに、プログラマブル・ロジック・コントローラのプログラムを保護する技術は、たとえば、特開平10−124308号公報(特許文献3)に開示されている。
特開2003−157104号公報 特開平6−110512号公報 特開平10−124308号公報
しかしながら、特開平6−110512号公報に開示された技術によると、着脱可能なROM(Read-Only Memory)に格納されたプログラムを保護することを目的としている。具体的には、当該目的は、プログラマブル・ロジック・コントローラが備える内部メモリ間でのプログラムの転送時における不正な複製を防止することである。そのため、プログラマブル・ロジック・コントローラがネットワーク環境において使用される場合には、当該プログラムがプログラムの送信側(たとえばプログラム開発装置)から当該プログラマブル・ロジック・コントローラにダウンロードされる時におけるセキュリティを確保することができない可能性がある。
また、特開平10−124308号公報に開示された技術は、プログラマブル・ロジック・コントローラを作動させるためのプログラムを、意図しない改変から保護することを目的としており、プログラム自体の漏洩を防止することができない。
本発明は、上述のような問題点を解決するためになされたものであって、その目的は、機器を制御するための制御プログラムを不法なアクセスから保護できる制御システムを提供することである。
他の目的は、機器を制御するための制御プログラムを不法なアクセスから保護できる制御装置を提供することである。
他の目的は、制御プログラムの漏洩を防止することができる制御装置を提供することである。
他の目的は、機器を制御する制御プログラムへの不法なアクセスあるいはプログラムの漏洩を保護する保護方法を提供することである。
上記の目的を達成するために、この発明のある局面に従うと、機器の制御システムが提供される。この制御システムは、機器を制御する制御装置と、通信回線によって制御装置に接続される暗号化装置とを備える。暗号化装置は、制御装置に固有に割り当てられた識別データと、機器を制御するための制御プログラムとを格納する第1の記憶手段と、プログラムを暗号化および復号化するための暗号ルールに基づいて制御プログラムを暗号化することにより、暗号化されたプログラムを生成する暗号化手段と、通信回線に接続され、識別データと暗号化されたプログラムとを、制御装置に送信する送信手段とを備える。制御装置は、識別データおよび暗号ルールを格納する第2の記憶手段を備える。識別データおよび暗号ルールは、予め入力されたデータである。さらに、制御装置は、通信回線に接続され、識別データと暗号化されたプログラムとを、暗号化装置から受信する受信手段と、受信手段によって受信された識別データと、第2の記憶手段に格納されている識別データとに基づいて、受信手段によって受信された暗号化プログラムが制御プログラムを暗号化したものであるか否かを確認する認証手段と、暗号化プログラムが制御プログラムを暗号化したものであることが確認された場合に、暗号ルールに基づいて暗号化プログラムを復号化することにより制御プログラムを導出する復号化手段と、復号化手段によって導出された制御プログラムを格納するプログラム記憶手段と、プログラム記憶手段に格納されている制御プログラムに基づいて、機器を制御する制御手段とを備える。
この発明の他の局面に従う制御システムは、機器を制御する制御装置と、通信回線によって制御装置に接続される暗号化装置とを備える。暗号化装置は、プログラムを暗号化および復号化するための複数の暗号ルールと、機器を制御するための制御プログラムとを格納する第1の記憶手段と、複数の暗号ルールのうちの第1の暗号ルールに基づいて制御プログラムを暗号化することにより、暗号化されたプログラムを生成する暗号化手段と、通信回線を介して、暗号化されたプログラムと、第1の暗号ルールと、複数の暗号ルールのうちの第2の暗号ルールとを、制御装置に送信する第1の送信制御手段とを備える。制御装置は、暗号化されたプログラムと、第1の暗号ルールと、第2の暗号ルールとを受信する受信手段と、受信手段によって受信された第1の暗号ルールに基づいて、暗号化されたプログラムを復号化することにより制御プログラムを導出する第1の復号化手段と、受信手段によって受信された第2の暗号ルールを格納する第2の記憶手段とを備える。暗号化装置は、第1の暗号ルールと第2の暗号ルールとが制御装置に送信された後に、第2の暗号ルールに基づいて制御プログラムを暗号化することにより生成された新たな暗号化プログラムと、第2の暗号ルールと、複数の暗号ルールのうちの第3の暗号ルールとを、制御装置に送信する第2の送信制御手段をさらに備える。制御装置は、新たな暗号化プログラムと、第2の暗号ルールと、第3の暗号ルールとが受信手段によって受信された場合に、第2の記憶手段に格納されている第2の暗号ルールと、受信手段によって受信された第2の暗号ルールとに基づいて、新たな暗号化プログラムが制御プログラムを暗号化したものであるか否かを確認する認証手段と、新たな暗号化プログラムが制御プログラムを暗号化したものである場合に、第2の暗号ルールに基づいて新たな暗号化プログラムを復号化することにより制御プログラムを導出する第2の復号化手段と、新たな暗号化プログラムが制御プログラムを暗号化したものである場合に、認証手段による確認のためのデータとして、第2の記憶手段に格納されている第2の暗号ルールに代えて第3の暗号ルールを記憶手段に書き込む更新手段と、第1の復号化手段または第2の復号化手段によって導出された制御プログラムに基づいて機器を制御する制御手段とを備える。
この発明の他の局面に従うと、機器の制御装置が提供される。この制御装置は、通信回線に接続されている通信装置から、制御装置に固有に割り当てられた識別データと、プログラムを暗号化および復号化するための暗号ルールに基づいて機器の制御プログラムを暗号化することにより生成された暗号化プログラムとを受信する受信手段と、識別データおよび暗号ルールを格納する記憶手段とを備える。識別データおよび暗号ルールは受信手段によるデータの受信の前に入力されたデータである。この制御装置は、受信手段によって受信された識別データと、記憶手段に格納されている識別データとに基づいて、受信手段によって受信された暗号化プログラムが制御プログラムを暗号化したものであるか否かを確認する認証手段と、受信された暗号化プログラムが制御プログラムを暗号化したものであることが確認された場合に、暗号ルールに基づいて暗号化プログラムを復号化することにより制御プログラムを導出する復号化手段と、復号化手段によって導出された制御プログラムを格納するプログラム記憶手段と、プログラム記憶手段に格納されている制御プログラムに基づいて、機器を制御する制御手段とを備える。
好ましくは、暗号ルールは、制御プグラムを暗号化するための暗号鍵と、暗号鍵を用いて生成されたデータを復号化するための復号鍵とを含む。
好ましくは、制御装置は、当該制御装置の状態の変化を検出する検出手段と、状態の変化が検出されたことに基づいて、プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える。
好ましくは、制御装置は、電力の供給と供給の停止とを切り換えるための切換手段をさらに備える。検出手段は、電力の供給と供給の停止との切り換えを検出する。消去手段は、切り換えが検出された場合に、制御プログラムを消去する。
好ましくは、制御装置は、データを受信可能なデータ通信装置の接続を受け付けるインターフェイス手段をさらに備える。検出手段は、データ通信装置がインターフェイス手段に接続されたことを検出する。消去手段は、データ通信装置がインターフェイス手段に接続されたことが検出された場合に、制御プログラムを消去する。
好ましくは、制御装置は、暗号化プログラムと、暗号化処理のために使用された暗号ルールとの送信要求を生成する生成手段と、生成手段によって生成された送信要求を通信装置に送信する送信手段とをさらに備える。
好ましくは、制御装置は、当該制御装置の状態の変化を検出する検出手段と、状態の変化が検出されたことに基づいて、プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える。生成手段は、制御プログラムが消去されたことに基づいて送信要求を生成する。
この発明の他の局面に従う制御装置は、通信回線に接続され、機器を制御するための制御プログラムを暗号化することにより生成された暗号化プログラムと、制御プログラムを暗号化するために使用された第1の暗号ルールと、制御プログラムを暗号化するために使用可能な第2の暗号ルールとを、通信回線に接続されている通信装置から受信する受信手段と、受信手段によって受信された第1の暗号ルールに基づいて暗号化プログラムを復号化することにより、制御プログラムを導出する第1の復号化手段と、受信手段によって受信された第2の暗号ルールを格納する記憶手段と、受信手段が新たな暗号化プログラムと、第3の暗号ルールと、第4の暗号ルールとを受信した場合に、記憶手段に格納されている第2の暗号ルールと、第3の暗号ルールとに基づいて、新たな暗号化プログラムが制御プログラムを暗号化したものであるか否かの確認を行なう認証手段と、新たな暗号化プログラムは制御プログラムを暗号化したものであることが認証された場合に、第3の暗号ルールに基づいて新たな暗号化プログラムを復号化することにより制御プログラムを導出する第2の復号化手段と、新たな暗号化プログラムは制御プログラムを暗号化したものであることが認証された場合に、認証手段による確認のためのデータとして、記憶手段に格納されている第2の暗号ルールに代えて第4の暗号ルールを記憶手段に書き込む更新手段と、第1の復号化手段または第2の復号化手段によって導出された制御プログラムに基づいて機器を制御する制御手段とを備える。
好ましくは、第1の暗号ルールと第2の暗号ルールとは、同一である。
好ましくは、第2の暗号ルールと第3の暗号ルールとは、同一である。
好ましくは、第3の暗号ルールと第4の暗号ルールとは、異なる暗号ルールである。
好ましくは、各暗号ルールは、制御プグラムを暗号化するための暗号鍵と、暗号鍵を用いて生成されたデータを復号化するための復号鍵とを含む。
好ましくは、制御装置は、制御装置の状態の変化を検出する検出手段と、状態の変化が検出されたことに基づいて、プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える。
好ましくは、制御装置は、電力の供給と供給の停止とを切り換えるための切換手段をさらに備える。検出手段は、電力の供給と供給の停止との切り換えを検出する。消去手段は、切り換えが検出された場合に、制御プログラムを消去する。
好ましくは、制御装置は、データを受信可能なデータ通信装置の接続を受け付けるインターフェイス手段をさらに備える。検出手段は、データ通信装置がインターフェイス手段に接続されたことを検出する。消去手段は、データ通信装置がインターフェイス手段に接続されたことが検出された場合に、制御プログラムを消去する。
好ましくは、制御装置は、暗号化プログラムと、暗号化処理のために使用された暗号ルールとの送信要求を生成する生成手段と、生成手段によって生成された送信要求を通信装置に送信する送信手段とをさらに備える。
好ましくは、制御装置は、当該制御装置の状態の変化を検出する検出手段と、状態の変化が検出されたことに基づいて、プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える。生成手段は、制御プログラムが消去されたことに基づいて送信要求を生成する。
この発明の他の局面に従うと、機器を制御する制御装置がプログラムを保護するための保護方法が提供される。制御装置は、データを格納するメモリを備える。保護方法は、制御装置に固有に割り当てられた識別データと、プログラムを暗号化および復号化するための暗号ルールに基づいて機器を制御する制御プログラムを暗号化することにより導出された暗号化プログラムとを受信するステップと、識別データおよび暗号ルールをロードするステップとを備える。識別データおよび暗号ルールは、メモリに予め入力されたデータである。保護方法は、受信された識別データと、ロードされた識別データとに基づいて、受信された暗号化プログラムが制御装置による使用のための制御プログラムを暗号化したものであるか否かを確認するステップと、暗号化プログラムが使用のための制御プログラムを暗号化したものであることが確認された場合に、暗号ルールに基づいて暗号化プログラムを復号化することにより制御プログラムを導出するステップと、導出された制御プログラムに基づいて、機器を制御するステップとを備える。
この発明のさらに他の局面に従う保護方法は、プログラムを暗号化および復号化するための複数の暗号ルールのうちの第1の暗号ルールに基づいて、制御プログラムを暗号化することにより導出された暗号化プログラムと、第1の暗号ルールと、複数の暗号ルールのうちの第2の暗号ルールとを受信するステップと、受信された第1の暗号ルールに基づいて、暗号化プログラムを復号化することにより制御プログラムを導出するステップと、受信された第2の暗号ルールをメモリに格納するステップと、第2の暗号ルールに基づいて制御プログラムを暗号化することにより生成された新たな暗号化プログラムと、第2の暗号ルールと、複数の暗号ルールのうちの第3の暗号ルールとを受信するステップと、新たな暗号化プログラムと、第2の暗号ルールと、第3の暗号ルールとが受信された場合に、メモリに格納されている第2の暗号ルールと、受信された第2の暗号ルールとに基づいて、新たな暗号化プログラムが制御プログラムを暗号化したものであるか否かを確認するステップと、新たな暗号化プログラムが制御プログラムを暗号化したものであることが確認された場合に、第2の暗号ルールに基づいて新たな暗号化プログラムを復号化することにより制御プログラムを導出するステップと、新たな暗号化プログラムが制御プログラムを暗号化したものであることが確認された場合に、第3の暗号ルールをメモリに保存するステップと、導出された制御プログラムに基づいて機器を制御するステップとを備える。
本発明によると、機器を制御するための制御プログラムを保護することができる。また、他の局面においては、制御プログラムの漏洩が防止され得る。
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<第1の実施の形態>
図1を参照して、本発明の実施の形態に係るファクトリ・オートメーション(以下、FAと表わす。)システム10について説明する。図1は、FAシステム10の構成を表わす図である。
FAシステム10は、プログラム開発装置110と、暗号変換機100と、プログラマブルロジックコントローラ(以下、PLC(Programmable Logic Controller)と表わす。)130と、設備機器140とを備える。暗号変換機100とプログラム開発装置110とは、ケーブル152を介して接続されている。PLC130と設備機器140とは、LAN(Local Area Network)154を介して接続されている。
図2を参照して、プログラム開発装置110について説明する。図2は、プログラム開発装置110によって実現される機能の構成を表わすブロック図である。プログラム開発装置110は、データ入力部210と、指示入力部220と、制御部230と、認証コード記憶部240と、実行プログラム記憶部250と、出力部260とを備える。制御部230は、プログラム編集部232と、出力制御部234とを含む。
データ入力部210は、プログラム開発装置110の外部からデータの入力を受け付ける。指示入力部220は、プログラム開発装置110の使用者による指示の入力を受け付ける。
制御部230は、データ入力部210からの出力と指示入力部220からの出力とに基づいて作動するように構成される。具体的には、制御部230は、データ入力部210によって入力が受け付けられたデータを、認証コード記憶部240に格納する。他の局面においては、制御部230は、指示入力部220によって受け付けられた指示に基づいてPLC130による制御に使用されるプログラムを作成する。さらに、制御部230は、当該使用者によって与えられる指示に基づいて、あるいは予め定められた出力条件が成立したことに基づいて、認証コード記憶部240あるいは実行プログラム記憶部250に格納されている各データを出力する。
認証コード記憶部240は、制御部230によって生成されるプログラムを使用する装置を識別するためのデータを格納する。当該識別データは、たとえばPLC130に固有な機器の名称、あるいは各装置に割当てられたIP(Internet Protocol)アドレスなどを含む。
実行プログラム記憶部250は、制御部230によって生成されたプログラムを格納する。具体的には、実行プログラム記憶部250は、PLC130による使用のためにプログラム編集部230によって生成されたプログラム(たとえば、ラダープログラム)を格納する。プログラム編集部232が、複数の制御装置の各々についてプログラムをそれぞれ作成した場合には、実行プログラム記憶部250は、各装置を識別するためのデータと、当該プログラムとを関連付けて格納する。
出力制御部234は、プログラム開発装置110の使用者によって与えられた出力指示に基づいて、認証コード記憶部240に格納されている認証コードあるいは実行プログラム記憶部250に格納されているプログラムを、出力部260を介してプログラム開発装置110の外部に出力する。プログラム開発装置110がケーブル152によって暗号変換機100に接続されている場合には、出力部260により出力されるデータは、暗号変換機100に入力される。
次に、図3を参照して、プログラム開発装置110の具体的構成の一態様について説明する。図3は、プログラム開発装置110として機能するコンピュータシステム300のハードウェア構成を表わすブロック図である。
コンピュータシステム300は、主たる構成要素として、プログラムを実行するCPU(Central Processing Unit)310と、CPU310によるプログラムの実行によって生成されたデータ、またはマウス320もしくはキーボード330を介して入力されたデータを揮発的に格納するRAM(Random Access Memory)340と、データを不揮発的に格納するハードディスク350と、CD−ROM(Compact Disc-Read Only Memory)駆動装置360と、モニタ380と、通信I/F390とを含む。各構成要素は、相互にデータバスによって接続されている。CD−ROM駆動装置360には、CD−ROM362が装着される。
コンピュータシステム300における処理は、各構成要素およびCPU310によって実行されるソフトウェアによって実現される。このようなソフトウェアは、ハードディスク350に予め格納されている場合がある。また、当該ソフトウェアは、CD−ROM362その他の記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、ソフトウェアは、いわゆるインターネットに接続されている情報提供事業者によってダウンロード可能なプログラムプロダクトとして提供される場合もある。このようなソフトウェアは、CD−ROM駆動装置360その他の読取装置によってその記録媒体から読み取られて、あるいは通信I/F390を介してダウンロードされた後、ハードディスク350に一旦格納される。そのソフトウェアは、CPU310によってハードディスク350から読み出され、RAM340に実行可能なプログラムの形式で格納される。CPU310は、そのプログラムを実行する。
図3に示されるコンピュータシステム300を構成する各要素は、一般的なものである。したがって、プログラム開発装置110の最も本質的な部分は、RAM340、ハードディスク350、CD−ROM362その他の記録媒体に格納されたソフトウェア、あるいはネットワークを介してダウンロード可能なソフトウェアであるともいえる。なお、コンピュータシステム300の各構成要素の動作は周知であるので、詳細な説明は繰り返さない。
図4を参照して、プログラム開発装置110のデータ構造について説明する。図4は、プログラム開発装置110として機能するコンピュータシステム300が備えるハードディスク350におけるデータの格納の一態様を表わす図である。ハードディスク350は、データを格納するための複数のメモリ領域を含む。
プログラム開発装置110によって生成されるプログラムを使用する機器を識別するための機器ID(Identification)は、メモリ領域410に格納されている。当該機器に対して与えられた名称は、メモリ領域420に格納されている。メモリ領域410および420に格納されているデータは、それぞれ相互に関連付けられる。機器IDは、CPU310による処理によって参照される。機器名称は、プログラム開発装置110の使用者(プログラム開発者)によって参照可能である。
さらにハードディスク350において、プログラム開発装置110によって生成されたプログラムを識別するためのプログラムIDは、メモリ領域430に格納されている。当該プログラムのデータは、メモリ領域440に格納されている。当該プログラムを使用する具体的な機器を識別するためのデータは、メモリ領域450に格納されている。メモリ領域430から450に格納されているデータは、それぞれ相互に関連付けられる。したがって、CPU310は、各メモリ領域のいずれかを特定することにより、他のメモリ領域に格納されている項目を検索することができる。コンピュータシステム300をプログラム開発装置110として機能させるための編集プログラムは、メモリ領域460に格納されている。CPU310が、この編集プログラムを実行可能な形式でRAM340にロードして、ロードされたプログラムを実行すると、コンピュータシステム300は、プログラム開発装置110として機能することができる。
ここで、図5を参照して、プログラム開発装置110の制御構造について説明する。図5は、コンピュータシステム300が備えるCPU310が実行する一連の処理を表わすフローチャートである。
ステップS510にて、CPU310は、マウス320あるいはキーボード330に対して与えられた操作指示に基づいて、プログラムエディタを起動する指示が入力されたことを検知する。ステップS520にて、CPU310は、編集プログラム(メモリ領域460)をRAM340に読み出して、プログラムエディタを起動する。プログラムエディタは、たとえば、設備機器に対する指令を表わす複数のアイコンを選択することにより、当該設備機器を制御するプログラムを編集可能とする。
ステップS530にて、CPU310は、PLC130が設備機器140を制御するプログラムを作成するための操作入力を受け付ける。当該操作入力は、たとえば、そのプログラムに対して与えられるデータの入力、設備機器140に実行させる具体的な処理の選択のための入力などを含む。ステップS540にて、CPU310は、当該操作入力に応じて編集プログラムによって予め与えられたコードモジュールを組み合わせることにより上記のプログラムを作成する。
ステップS550にて、CPU310は、プログラムエディタを終了する指示が入力されたか否かを判断する。CPU310が、当該指示は入力されたと判断すると(ステップS550にてYES)、処理はステップS560に移される。そうでない場合には(ステップS550にてNO)、処理はステップS530に戻される。
ステップS560にて、CPU310は、作成したプログラムと当該プログラムに関連する情報とをハードディスク350において確保されたメモリ領域に書き込む。当該プログラムに関連する情報は、たとえば、そのプログラムを特定の設備機器140に対して適用するためにプログラム開発者によって与えられた定義情報などを含む。
次に、図6を参照して、本実施の形態に係る暗号開発機100について説明する。図6は、暗号開発機100によって実現される機能の構成を表わすブロック図である。暗号開発機100は、入力部610と、管理データ生成部620と、暗号ルール生成部630と、暗号ルール記憶部640と、暗号化処理部650と、通信コード生成部660と、送信部670とを備える。
入力部610は、暗号開発機100の外部から指示あるいはデータの入力を受け付ける。当該指示は、暗号開発機100の使用者によって与えられる指示と、プログラム開発装置110その他の装置によって与えられる指示信号とを含む。入力されるデータは、FAシステム10を構成する各制御装置(たとえばPLC130)などを識別するための認証コードと、プログラム開発装置110によって生成されたプログラムとを含む。
暗号ルール生成部620は、入力部610からの出力に基づいて作動可能なように構成される。より具体的には、暗号ルール生成部620は、暗号ルールを生成する指示の入力に基づいて、予め準備された生成基準に従って、暗号鍵と復号鍵とを生成する。ここで、暗号ルールを生成するための指示は、暗号開発機100の使用者によって与えられる場合もあれば、暗号開発機100に接続されている他の装置によって与えられる電気信号をも含む。
管理データ生成部630は、入力部610からの出力と、暗号ルール生成部620からの出力等に基づいて作動可能なように構成される。より具体的には、管理データ生成部630は、入力部610によって受け付けられた認証コードと、暗号ルール生成部620によって生成された復号鍵とを用いて管理データを生成する。
暗号ルール記憶部640は、暗号ルール生成部620によって生成された暗号ルール(すなわち暗号鍵と復号鍵)を格納する。
暗号化処理部650は、入力部610からの出力と、暗号ルール記憶部640に格納されているデータとに基づいて作動可能なように構成される。より具体的には、暗号化処理部650は、入力部610によって受け付けられた実行プログラムと、暗号ルール記憶部640に格納されている暗号鍵とを用いて、そのプログラムに対して暗号化処理を実行し、暗号化されたプログラムを生成する。
通信コード生成部660は、管理データ生成部630および暗号化処理部650からの各出力と、暗号ルール記憶部640に格納されているデータとに基づいて作動可能なように構成される。より具体的には、通信コード生成部660は、管理データ生成部630によって生成された管理データと、暗号化処理部650によって生成された暗号化プログラムと、暗号ルール記憶部640に格納されている復号鍵とを用いて、PLC130に送信するための通信フレームを生成する。
送信部670は、通信フレーム生成部660からの出力に基づいて作動可能なように構成される。より具体的には、送信部670は、通信フレーム生成部660によって生成された通信フレームの入力を受けて、当該通信フレームをインターネット150に対して送出する。
ここで、図7を参照して、暗号変換機100の具体的構成について説明する。図7は、暗号変換機100として機能するコンピュータシステム700のハードウェア構成を表わすブロック図である。
コンピュータシステム700は、主たる構成要素として、プログラムを実行するCPU710と、コンピュータシステム700の使用者による指示の入力を受け付けるマウス720およびキーボード730と、CPU710によるプログラムの実行により生成されたデータ、またはマウス720もしくはキーボード730を介して入力されたデータを揮発的に格納するRAM740と、データを不揮発的に格納するハードディスク750と、CD−ROM駆動装置760と、モニタ780と、通信I/F790とを含む。各構成要素は、相互にデータバスによって接続されている。CD−ROM駆動装置760には、CD−ROM762が装着される。
図7に示されるコンピュータシステム700の各構成要素は、図4に示されるコンピュータシステム400の各構成要素と同様の機能を実現する。したがって、ここではそれらについての説明は繰り返さない。
次に、図8を参照して、暗号変換機100の制御構造について説明する。図8は、暗号変換機100として機能するコンピュータシステム700が備えるCPU710が実行する一連の処理を表わすフローチャートである。
ステップS810にて、CPU710は、コンピュータシステム700の使用者によって与えられた指示あるいは予め定められた生成条件が成立したことに基づいて、暗号ルール(暗号鍵と復号鍵)を生成する。ステップS820にて、CPU710は、生成した暗号ルールをハードディスク750において確保した領域に格納する。このとき、CPU710は、暗号鍵と、復号鍵と、当該暗号ルールの使用の対象となるPLC130の識別データとを関連付けて格納する。
ステップS830にて、CPU710は、コンピュータシステム700の外部から認証コードおよび実行プログラムの入力を受け付けて、RAM740において確保した領域に格納する。たとえばCPU710は、通信I/F790を介して認証コードおよび実行プログラムを受信する。あるいは、別の局面においては、CPU710は、CD−ROM762に格納されている認証コードおよび実行プログラムを、CD−ROM駆動装置760を用いて読み出す。
ステップS840にて、CPU710は、認証コードと復号鍵とに基づいて管理データを生成し、生成されたデータをRAM740に一時的に格納する。
ステップS850にて、CPU710は、ステップS810にて生成した暗号鍵を用いて入力された実行プログラムを暗号化する。
ステップS860にて、CPU710は、通信フレーム生成部660として、管理データと暗号化された実行プログラムとを用いて、通信フレームを生成する。通信フレームの構成は後述する。
ステップS872にて、CPU710は、ハードディスク750に格納されている認証コードを参照して、指定された機器(PLC130)に対してその通信フレームを送信する。
ここで、図9を参照して、本実施の形態に係る暗号変換機100から送信される通信フレーム900について説明する。図9は、通信フレーム900の構成を概念的に表わす図である。通信フレーム900は、ヘッダ910と、ユーザデータ920と、FCS(Frame Check Sequence)930とを含む。ヘッダ910は、宛先アドレスと、送信元アドレスと、送信日時とを含む。ユーザデータ920は、認証コードと、復号鍵と、暗号化されたプログラムとを含む。FCS930は、宛先アドレスからユーザデータ920までの範囲に含まれるデータについて誤りの有無を検査するためのデータを含む。
図10を参照して、本実施の形態に係るPLC130について説明する。図10は、PLC130によって実現される機能の構成を表わすブロック図である。PLC130は、通信フレーム入力部1010と、指示入力部1020と、制御部1030と、入力データ記憶部1040と、入出力インターフェイス部1050と、実行プログラム記憶部1060とを備える。制御部1030は、認証部1031と、復号部1032と、実行部1033と、電源オン/オフ検知部1034と、プログラム消去部1035とを含む。
通信フレーム入力部1010は、PLC130の外部から通信フレームの入力を受け付ける。通信フレーム入力部1010は、たとえばインターフェイス150に接続される。
指示入力部1020は、PLC130の使用者による操作指示の入力を受け付ける。PLC130がコンピュータシステムによって実現される場合には、指示入力部1020は、たとえばそのコンピュータシステムが備えるマウスあるいはキーボード(図示しない)として実現される。
制御部1030は、通信フレーム入力部1010からの出力と、指示入力部1020からの出力等に基づいて作動可能なように構成される。制御部1030は、通信フレーム入力部1010によって受け付けられた通信フレームから、当該通信フレームに含まれる各データを取得し、入力データ記憶部1040において確保した領域に格納する。
制御部1030は、ある局面においては、認証部1031として、通信フレーム入力部1010によって受け付けられた通信フレームに含まれるデータと、入力データ記憶部1040に格納されているデータとを比較することにより、当該通信フレームが正当なものであるか否かの認証を行なう。
復号部1032は、認証部1031からの出力に基づいて作動可能なように構成される。より具体的には、復号部1032は、認証部1031の認証の結果に基づいて、暗号化されていたデータを復号化する。たとえば、PLC130によって制御される設備機器140の動作を制御するためのプログラムが暗号化されている場合には、復号部1032は、当該復号処理を行なうための復号鍵を用いて、そのプログラムを復号化する。復号部1032は、復号化により生成されたデータを実行プログラム記憶部1060に確保した領域に格納する。
電源オン/オフ検知部1034は、指示入力部1020からの出力に基づいて作動可能なように構成される。たとえば、指示入力部1020がPLC130の電源のスイッチボタンである場合には、電源オン/オフ検知部1034は、指示入力部1020に対して与えられた指示に基づいて、PLC130の電源スイッチがオンされたかオフされたかを検知する。
プログラム消去部1035は、電源オン/オフ検知部1034からの出力に基づいて作動可能なように構成される。具体的には、電源オン/オフ検知部1034がPLC130の電源のオンを検知した場合には、プログラム消去部1035は、実行プログラム記憶部1060に格納されている実行プログラムを消去する。
次に、図11を参照して、PLC130の具体的構成について説明する。図11は、PLC130のハードウェア構成を表わすブロック図である。PLC130は、インナーボード1110と、コントローラ1120とを含む。インナーボード1110とコントローラ1120とはCPUバス1130によって接続されている。インナーボード1110は、PLC130に対して着脱可能である。
インナーボード1110は、インナーボードCPU1112と、メモリ1114と、通信インターフェイス1116とを含む。コントローラ1120は、コントローラCPU1122と、I/O(Input/Output)ユニット1124と、実行メモリ1126と、ツール1128とを含む。コントローラCPU1122と実行メモリ1126とはCPUバス1130によって接続されている。コントローラCPU1122とI/Oユニット1124とは、I/Oバス1140によって接続されている。
通信インターフェイス1116は、PLC130の外部からのデータの入力を受け付ける。また、通信インターフェイス1116は、PLC130に接続されているインターネット150を介して他の装置にデータを送信する。
インナーボードCPU1112は、通信インターフェイス1116からの出力と、メモリ1114に格納されているデータとに基づいて作動可能なように構成される。たとえば、インナーボードCPU1112は、通信インターフェイス1116を介して暗号変換機100と通信する。インナーボードCPU1112は、暗号変換機100によって送信された通信フレーム900を受信し、通信フレーム900に含まれるデータ項目を取得し、メモリ1114に格納する。
また他の局面においては、インナーボードCPU1112は、CPUバス1130を介してコントローラCPU1122と通信する。通信されるデータは、メモリ1114に格納されているデータと、コントローラ1120が備える実行メモリ1126に格納されているデータとを含む。
一方、コントローラ1120において、コントローラCPU1122は、コントローラ1120を構成するハードウェアの動作を制御する。また、コントローラCPU1122は、インナーボードCPU1112と通信する。コントローラCPU1122は、実行メモリ1126に格納されているデータと、I/Oユニット1124からの出力とに基づいて作動可能なように構成されている。
実行メモリ1126は、PLC130に接続される設備機器140を制御するために作成されたプログラムを実行可能な形式で格納している。コントローラCPU1122は、実行メモリ1126に格納されている当該プログラムを実行し、I/Oユニット1124を介して設備機器140に指令を与える。また、設備機器140から出力がI/Oユニット1124に入力される場合には、コントローラCPU1122は、I/Oユニット1124のレジスタ(図示しない)に格納されているデータを読み出し、実行メモリ1126において確保したメモリ領域にそのデータを蓄積する。コントローラCPU1122は、蓄積されたデータをインナーボード1110のメモリ1114に送信する。
I/Oユニット1124は、PLC130に接続される設備機器140の動作を制御するために予め定められた値を保持し、設備機器140に与える。設備機器140は、そのデータを参照して予め定められた処理を実行する。あるいは、I/Oユニット1124は、設備機器140によって生成される実績データを格納するための領域を含む。I/Oユニット1124は、設備機器140から出力されるデータをその領域に順次格納していき、設備機器140の実績値として、そのデータをコントローラCPU1122に与える。
次に、図12を参照して、PLC130のデータ構造について説明する。図12は、メモリ1114におけるデータの格納の一態様を概念的に表わす図である。メモリ1114は、データを格納するための複数のメモリ領域を含む。
オペレーティングシステムは、メモリ領域1210に格納されている。PLC130が暗号変換機100と通信するための通信制御プログラムは、メモリ領域1220に格納されている。復号処理プログラムは、メモリ領域1230に格納されている。復号処理プログラムは、予め暗号化されているデータを復号するためにインナーボードCPU1112によって使用される。
PLC130を識別するために予め与えられた認証コードは、メモリ領域1240に格納されている。当該復号処理プログラムに使用される復号鍵は、メモリ領域1250に格納されている。なお、PLC130が最初に起動するときには、復号鍵はPLC130に未だ格納されていない。この場合、たとえば「NULL」を表わすデータが、メモリ領域1250に格納される。
復号処理プログラムによる処理の対象となる暗号化されたプログラムは、メモリ領域1260に格納される。たとえば、PLC130が通信インターフェイス1116を介して暗号化されたプログラムを暗号変換機100から受信すると、そのプログラムはメモリ領域1260に格納される。
暗号化されているプログラムを復号することによって生成されるデータは、メモリ領域1270に格納される。復号処理が実行されていない場合には、メモリ領域1270は、リザーブ領域としてインナーボードCPU1112による他の使用から保護される。
図13を参照して、PLC130におけるデータの移送について説明する。図13は、メモリ1114と実行メモリ1126との間におけるデータの移動を表わす図である。
PLC130が通信フレーム900を受信すると、通信フレーム900に含まれているデータ(暗号化されたプログラム、復号鍵、認証コード)は、メモリ1114のメモリ領域1260に格納される。その後、インナーボードCPU1112が復号処理プログラム(メモリ領域1230)を実行することにより復号鍵(メモリ領域1250)を用いて復号化処理を実行すると、暗号化されたプログラムは実行プログラムに復号される。実行プログラムは、メモリ領域1270に保持される。ここで、インナーボードCPU1112はコントローラCPU1122と通信し、実行メモリ1126において実行プログラムを確保するための領域をコントローラCPU1122に確保させる。コントローラCPU1122が実行メモリ1126における当該メモリ領域の確保をインナーボードCPU1112に通知すると、インナーボードCPU1112はメモリ領域1270に格納されている実行プログラムを読み出して、実行メモリ1126において確保された領域に実行プログラムを書き込む。なお、データの移送の態様は、前述のものに限られない。たとえば、データの容量がコントローラCPU1122の内部メモリの容量を下回る場合には、まず、当該データは、インナーボードCPU1112からコントローラ1122にされ、その後に、コントローラ1122が実行メモリ1126のメモリ領域に書き込まれてもよい。
コントローラCPU1122は、実行プログラムが実行メモリ1126に書き込まれたことに基づいて、PLC130に接続される設備機器140を制御するための処理を実行する。具体的には、コントローラCPU1122は、I/Oユニット1124を介して設備機器140との間でデータを通信することにより、実行プログラムで規定された処理を設備機器140に実行させる。あるは、コントローラCPU1122は、設備機器140から出力されたデータを、I/Oユニット1124を介して取得する。
図14を参照して、本実施の形態に係るPLC130の制御構造について説明する。図14は、PLC130が備えるインナーボードCPU1112が実行する一連の処理を表わすフローチャートである。
ステップS1410にて、インナーボードCPU1112は、インターネット150を経由して暗号変換機100と通信することにより、暗号変換機100との通信を確立する。PLC130との通信の確立を検知した暗号変換機100は、前述の処理(図8)を実行する。
ステップS1420にて、インナーボードCPU1112は、暗号変換機100によって送信された通信フレーム900を受信する。ステップS1430にて、インナーボードCPU1112は、通信フレーム900から、認証コードと、復号鍵と、暗号化されたプログラムとを取得する。
ステップS1440にて、インナーボードCPU1112は、予め登録されている認証コード(メモリ領域1240)と通信フレーム900から取得された認証コードとが一致するか否かを判断する。インナーボードCPU1112が、これらの認証コードは一致していると判断すると(ステップS1140にてYES)、処理はステップS1450に移される。そうでない場合には(ステップS1440にてNO)、処理はステップS1160に移される。
ステップS1450にて、インナーボードCPU1112は、予め登録されている復号鍵(メモリ領域1250)と、通信フレーム900から取得された復号鍵とが一致するか否かを判断する。インナーボードCPU1112がこれらの復号鍵を一致すると判断すると(ステップS1450にてYES)、処理はステップS1470に移される。そうでない場合には(ステップS1450にてNO)、処理はステップS1460に移される。
ステップS1470にて、インナーボードCPU1110は、その復号鍵を用いて、暗号化されているプログラムを復号化する。ステップS1480にて、インナーボードCPU1112は、復号されたプログラムを確保したメモリ領域1270に保存する。
ステップS1490にて、インナーボードCPU1110は、メモリ1114に格納されている当該プログラムを読み出して、コントローラ1120の実行メモリ1126において確保された領域にそのプログラムをコピーする。
ステップS1460にて、インナーボードCPU1112は、その通信フレームを廃棄する。
上記のような処理が実行された結果、設備機器140を制御するための命令を記述したプログラムがPLC130にインストールされる。これにより、PLC130は、そのプログラムを実行することにより、設備機器140の動作を制御できる。
以上のようにして、本実施の形態に係るFAシステム10によると、暗号変換機100は、設備機器140を制御するプログラムを暗号鍵を用いて暗号化し、暗号化されたプログラムと、認証コードと、復号鍵とを有する通信フレームをPLC130に送信する。
PLC130は、予め割り当てられた当該PLC130に固有な認証コードをメモリ1114に有している。PLC130は、暗号変換機100によって送信された通信フレームを受信すると、メモリ1114に格納されている認証コードと、通信フレームに含まれている認証コードとを比較する。各認証コードが一致する場合には、PLC130は、暗号化されたプログラムと復号鍵とを通信フレームから取得し、そのプログラムを復号し、設備機器140を制御するプログラムを導出する。これにより、PLC130による設備機器140の制御が可能になる。
このようにすると、PLC130が設備機器140を制御する処理を実行する前に、その制御に使用されるプログラムをPLC130にインストールすることができる。このようにすると、PLC130が当該処理を実行しない間、当該プログラムをPLC130から消去しておくことができる。これにより、PLC130が設備機器140を制御していない場合に、そのプログラムがPLC130から取り出されることが防止される。たとえば、FAシステム10の管理者が不在の場合、あるいは、夜間の休止中に、管理者が意図しないアクセス(たとえば不法なアクセス、あるいはPLC130の盗難等)によってプログラムが漏洩することが防止される。
また、このインストールは、暗号変換機100が暗号化されたプログラムをPLC130に送信することにより実現される。したがって、プログラムをインストールする段階における漏洩も防止され得る。
<第1の変形例>
以下、本実施の形態の第1の変形例について説明する。本変形例に係るFAシステムは、PLCにおけるイベントに応じて当該PLCに格納されているプログラムが消去される点で、前述の各実施の形態と異なる。
まず、図15を参照して、本変形例に係るFAシステムの技術的思想について説明する。図15は、PLCにおけるイベントと当該PLCの動作と暗号ルールの処理態様との関係を表わす図である。
PLCにおけるイベント1510は、たとえば「PLCの電源がオフ」と、「PLCの電源が投入」と、「運転時に未知のツールが接続」とを含む。各イベントに対応付けられるPLCの動作1520は、「そのまま」と「プログラムを消去」と「プログラムを消去」とを含む。暗号ルールの処理態様1530は、「前回のルールを保持」と「再起動であればルールに従いプログラムを復号化」と「暗号ルールを消去」とを含む。たとえば前述の第1の実施の形態に係るPLC130の場合、当該PLC130の電源がオフになっても何らの措置もとられず、前回のルール(復号鍵)がそのまま保持される。これに対して、本変形例に係るPLCによれば、電源が遮断された後に再び投入されると、PLCの内部に保存されていたプログラムは消去される。この場合、PLCの起動が再起動であれば、暗号変換機100と再び通信して復号鍵を取得し、その取得後に、改めてその復号鍵を用いてプログラムを復号する。
また他の局面において当該PLCに接続が予定されていない未知のツール(たとえばUSB(Universal Serial Bus)ケーブルが接続された場合には、同様に実行可能なプログラムは消去される。このとき、復号鍵も消去される。
そこで、図16を参照して、本変形例に係るPLCの制御構造について説明する。図16は、インナーボードCPU1110が実行する一連の処理を表わすフローチャートである。なお、本変形例に係るPLCは、第1の実施の形態に係るPLC130と同様のハードウェア構成を有する。そこで、以下の説明では、図11に示されるPLC130の構成を用いて説明する。
ステップS1610にて、インナーボードCPU1112は、PLC130の電源スイッチのオンを検知する。ステップS1620にて、インナーボードCPU1112は、インナーボード1110のメモリ1114に格納されている暗号化されたプログラムおよび復号されたプログラムと、コントローラ1120の実行メモリ1126に格納されている実行プログラムとを消去する。
ステップS1630にて、インナーボードCPU1112は、暗号変換機100との通信を確立する。暗号変換機100は、PLC130との通信が確立されたことに基づいて予め規定された処理を実行し、通信フレーム900を生成し、PLC130に対して当該通信フレームを送信する。
ステップS1640にて、インナーボードCPU1112は、通信インターフェイス1116を介して、暗号変換機100によって送信された通信フレーム900の受信を検知する。ステップS1650にて、インナーボードCPU1112は、当該通信フレームから、認証コードと復号鍵と暗号化されたプログラムとを取得する。
ステップS1660にて、インナーボードCPU1112は、予め登録されている認証コード(メモリ領域1240)と、通信フレームから取得された認証コードとが一致するか否かを判断する。インナーボードCPU1112が、これらの認証コードは一致すると判断すると(ステップS1660にてYES)、処理はステップS1670に移される。そうでない場合には(ステップS1660にてNO)、処理はステップS1690に移される。
ステップS1670にて、インナーボードCPU1112は、予め登録されている復号鍵(メモリ領域1250)と、通信フレームから取得された復号鍵とが一致するか否かを判断する。インナーボードCPU1112がこれらの復号鍵は一致すると判断すると(ステップS1670にてYES)、処理はステップS1680に移される。そうでない場合には(ステップS1670にてNO)、処理はステップS1690に移される。
ステップS1680にて、インナーボードCPU1112は、その復号鍵と復号処理プログラム(メモリ領域1230)とを用いて、通信フレームから取得された暗号化されたプログラムを復号化する。ステップS1682にて、インナーボードCPU1112は、復号化されたプログラムをメモリ1114のメモリ領域1270に保存する。ステップS1684にて、インナーボードCPU1112は、コントローラCPU1122との間で通信を行なった後に、実行プログラムをメモリ1114から読み出して、実行メモリ1126にそのプログラムをコピーする。
以上のようにして、本変形例に係るFAシステムによると、PLCの電源スイッチがオフからオンに切り換えられた時に、設備機器140を制御するためのプログラムが、一旦消去される。このとき、電源スイッチがFAシステムの管理者によって操作された場合には、当該管理者は、予め設定されたパスワードを入力する。PLCは、そのパスワードに基づいて当該管理者が予めFAシステムに登録された正当な使用者であることを確認する。確認の後、PLCの動作モードは、上記プログラムを再度取得するためのモードに切り換わる。その後、PLCは、暗号変換機100と通信することにより、暗号化された上記プログラムを再度取得し、復号する。これにより、PLCは、改めて設備機器140を制御することが可能になる。
一方、電源スイッチが不法にアクセスした第三者によって操作された場合、当該PLCは、上記モードに切り替わることができない。その結果、PLCは当該プログラムを有しない状態を維持するため、そのプログラムが第三者に不法に取得されることが防止される。
なお、ステップS1630において、暗号変換機100との通信を確立するための処理が実行される前に、PLCの使用者の認証処理が行なわれてもよい。たとえば、PLCにパスワードを予め登録しておき、PLCにステップS1630の処理を実行させるためのアクセスを、当該パスワードによって制限することが考えられる。このようにすると、PLCの電源がオンになった後でも、正当な使用者(たとえば上記FAシステムの管理者)のみが、暗号変換機100との通信をPLCに指示できるため、消去されたプログラムの取得を正当な使用者のみに制限することができる。
<第2の変形例>
以下、本実施の形態の第2の変形例について説明する。本変形例に係るPLCは、暗号化されたプログラムの復号化と、設備機器140の制御とを同一のハードウェアにおいて実行する点で、前述のPLCと異なる。この場合、本変形例に係るPLCは、復号処理を実行するために必要なメモリ領域と、設備機器140を制御するために使用されるメモリ領域とを個別に管理する機能を有する。
そこで、図17を参照して、本変形例に係るPLC1700の構成について説明する。図17は、PLC1700のハードウェア構成を表わすブロック図である。PLC1700は、コントローラCPU1710と、メモリ1720と、通信インターフェイス1730と、ツール端子1740と、I/Oユニット1750とを含む。コントローラCPU1710とメモリ1720とは、CPUバス1760によって接続されている。コントローラCPU1710とI/Oユニット1750とは、I/Oバス1770によって接続されている。
コントローラCPU1710は、メモリ1720に格納されているデータとツール端子1740からの出力と、I/Oユニット1750からの出力とに基づいて作動可能なように構成されている。たとえば、コントローラCPU1710は、メモリ1720に格納される実行プログラムに基づいてPLC1700に接続される機器の動作を制御する。この制御は、I/Oユニット1750を介して行なわれる。また他の局面においては、コントローラCPU1710は、ツール端子1740に接続される機器と通信し、当該機器の要求に応じた処理を実行する。たとえば、通信機能を有するデバイスがツール端子1740に接続された場合には、コントローラCPU1710と当該デバイスとの間で通信が行なわれ、コントローラCPU1710は、当該デバイスから発せられた指令に応じて、たとえばメモリ1720に格納されているデータを読み出して当該デバイスに与える。
コントローラCPU1710は、I/Oユニット1750に格納されているバッファ(図示しない)に書き込まれたデータを参照して、そのデータをメモリ1720に格納する。このデータは、PLC1700に接続される機器(図1における設備機器140に相当する。)における制御の状態あるいは動作の状態を表わすデータに相当する。
コントローラCPU1750は、メモリ1720においてメモリ領域を複数に分割し、I/Oユニット1750を介して機器を制御するためのプログラムを実行するための領域と、I/Oユニット1750から読み出したデータを格納するための領域とにそれぞれ分けて管理する。
本変形例に係るFAシステムにおいても、設備機器を制御するためのプログラムが保護される。
<第2の実施の形態>
以下、本発明の第2の実施の形態について説明する。本実施の形態に係るFAシステムは、システムの構築時に復号鍵をPLCに登録することなくその後の復号処理を実行できる機能を有する点で、前述の各実施の形態と異なる。
まず、図18を参照して、本実施の形態に係る技術的思想について説明する。図18は、本実施の形態に係る暗号変換機とPLCとの間で通信される暗号鍵および復号鍵の遷移を表わす図である。
FAシステムが構築されると、最初の通信(1回目の通信)が行なわれる。このとき、暗号変換機は、2組の暗号ルール、すなわち、第1組の暗号鍵E(0)および復号鍵D(0)と、第2組の暗号鍵E(0)およびD(0)とを生成する。このことから明らかなように、FAシステムが最初に構築されたときには、本実施の形態に係る暗号変換機は、同一の暗号鍵および復号鍵を2組生成する。
暗号変換機は、PLCと通信を確立した後、いずれの復号鍵もPLCに送信する。このとき、暗号変換機からPLCに送信されるデータ(すなわち通信フレーム)には、当該復号鍵に加えて、生成された暗号鍵によって暗号化されたプログラムが含まれている。
PLCは、その通信フレームを受信すると、その通信フレームから、復号鍵と、暗号化されたプログラムとを取得し、その復号鍵を用いて復号処理を実行する。さらに、PLCは、当該通信フレームに含まれている復号鍵を次回の復号化処理のためにメモリに保存する。
FAシステムが稼動を開始し、予め定められた時間が経過すると、あるいは当該システムの管理者によってプログラムの更新が指示されると、暗号変換機とPLCとの間で2回目の通信が行なわれる。この場合、暗号変換機は、2組の暗号ルールを生成する。2組の暗号ルールは、暗号鍵E(0)および復号鍵D(0)と、暗号鍵E(1)および復号鍵D(1))とを含む。このとき生成される2組の暗号ルールのうちの第1番目の暗号ルールは、前回の通信(1回目の通信)のために生成された暗号ルールのうち第2番目の暗号ルールと同じ内容である。
暗号変換機は、2組の復号鍵と新たに暗号化されたプログラムとを有する通信フレームを生成し、PLCに対して、その通信フレームを送信する。
PLCは、その通信フレームを受信すると、そのフレームに含まれている第1番目の復号鍵D(0)を取得し、その復号鍵と前回の通信において既に保存されている復号鍵D(0)との認証を行なう。PLCは、この認証の結果、暗号変換機から送信された通信フレームが正当なものであると確認すると、新たに生成された暗号化プログラムをその復号鍵を用いて復号化する。PLCは、第2番目の復号鍵D(1)を、次回の復号処理のためにメモリに保存する。
以上のようにして、暗号変換機とPLCとの間で1回の通信において2組の暗号ルール(暗号鍵と復号鍵)についての通信が行なわれる。そのうちの第1組目の暗号ルールは、暗号変換機とPLCとの認証に使用されるため、PLCは暗号変換機との間で認証するための固有な識別データを当初から保持する必要がない。
次に、図19を参照して、本実施の形態に係る暗号変換機1900の構成について説明する。図19は、暗号変換機1900によって実現される機能の構成を表わすブロック図である。暗号変換機1900は、入力部610と、管理データ生成部620と、暗号ルール生成部1920と、暗号ルール記憶部1940と、暗号化処理部1950と、通信フレーム生成部1960と、送信部670とを含む。
暗号ルール生成部1920は、入力部610からの出力に基づいて作動可能なように構成されている。より具体的には、暗号ルール生成部1920は、入力部610によって受け付けられた通信の指示に基づいて2組の暗号ルール(暗号鍵と復号鍵との組み合わせ)を生成する。暗号ルール生成部1920は、その生成した暗号ルールを暗号ルール記憶部1940に格納する。
管理データ生成部1930は、入力部610からの出力と、暗号ルール生成部1920からの出力とに基づいて作動可能なように構成されている。より具体的には、管理データ生成部1930は、入力部610によって入力が受け付けられた認証コードと、暗号ルール生成部1920によって生成された2組の暗号ルールとを用いて管理データを生成する。
暗号化処理部1950は、入力部610からの出力と、暗号ルール記憶部1940に格納されているデータとに基づいて作動可能なように構成されている。より具体的には、暗号化処理部1950は、暗号ルール記憶部1940に格納されている1つの暗号鍵を用いて、入力部610によって入力が受け付けられた実行プログラムを暗号化する。
通信フレーム生成部1960は、管理データ生成部1930および暗号化処理部1950からの各出力と、暗号ルール記憶部1940に格納されているデータとに基づいて通信フレームを生成する。より具体的には、通信フレーム生成部1960は、上記管理データと暗号化されたプログラムと第1および第2の復号鍵とが含まれる通信フレームを生成する。通信フレーム生成部1960によって生成された通信フレームは、送信部670によってインターネット150に対して送出される。
ここで、図20を参照して、暗号変換機1900のデータ構造について説明する。図20は、暗号ルール記憶部1940におけるデータの格納の一態様を概念的に表わす図である。暗号ルール記憶部1940は、データを格納するための複数のメモリ領域を含む。暗号ルールを生成した順序を表わす生成タイミングは、メモリ領域2010に格納される。このデータは、暗号ルール生成部1920による暗号ルールの生成に応じて逐次採番される。
暗号ルール生成部1920によって生成された2組の暗号ルールは、メモリ領域2020および2030にそれぞれ格納される。すなわち、第1組目の暗号鍵と復号鍵とは、メモリ領域2020に格納される。第2組目の暗号鍵と復号鍵とは、メモリ領域2030に格納される。当該暗号ルールが使用される対象を表わす機器IDは、メモリ領域2040に格納される。
次に、図21を参照して、暗号変換機1900によって生成される通信フレーム2100について説明する。図21は、通信フレーム2100の構成を概念的に表わす図である。通信フレーム2100は、ヘッダ2110と、ユーザデータ2120と、FCS2130とを含む。
ヘッダ2110は、送信元アドレスと宛先アドレスと送信日時とを含む。ユーザデータ2120は、認証コードと、第1の復号鍵と、第2の復号鍵と、暗号化されたプログラムとを含む。
次に本実施の形態に係るPLCについて説明する。なお、本実施の形態に係るPLCは、第1の実施の形態に係るPLC130と同様のハードウェア構成を有する。したがって、ここではそれらについての説明は繰り返さない。以下、図11に示されるPLC130を例にして説明する。
図22を参照して、本発明の第2の実施の形態に係るFAシステムの制御構造について説明する。図22は、本実施の形態に係るPLC130が備えるインナーボードCPU1112が実行する一連の処理を表わすフローチャートである。
ステップS2210にて、インナーボードCPU1112は、通信インターフェイス1116を経由した入力に基づいて、PLC130における初期設定の指示が入力されたことを検知する。ステップS2220にて、インナーボードCPU1112は、通信インターフェイス1116を介した入力に基づいて、あるいはPLC130が備えるキーボード(図示しない)に対する操作入力に基づいて、認証コードの入力を受け付ける。ステップS2230にてインナーボードCPU1112は、PLC130の使用者による操作入力に基づいて、入力された認証コードの保存の指示を受け付ける。ステップS2240にて、インナーボードCPU1112は、当該認証コードをメモリ1114において確保されたメモリ領域1240に保存する。
図23は、本実施の形態に係るPLC2300によって実現される機能の構成を表わすブロック図である。PLC2300は、図10に示される構成に対して、制御部1030に代えて制御部2330を備える。制御部2330は、認証部1031と復号部1032と実行部1033と電源オン/オフ検知部1034とに加えて、プログラム消去部2335を含む。
プログラム消去部2335は、電源オン/オフ検知部1034からの出力に基づいて作動可能なように構成されている。より具体的には、プログラム消去部2335は、電源オン/オフ検知部1034がPLC2300の電源スイッチのオフまたはオンを検知すると、実行プログラム記憶部1060に格納されているプログラムと、入力データ記憶部1040に格納されているデータ(たとえばメモリ1114に格納されている認証データ)とを消去する。
次に、図24を参照して、本実施の形態に係るPLCのデータ構造について説明する。図24は、メモリ1114におけるデータの格納の一態様を表わす図である。メモリ1114は、データを格納するための複数のメモリ領域を含む。メモリ1114は、図10に示される構成に対して、2組の復号鍵を格納するために確保されたメモリ領域2410,2420を含む。PLC130が暗号変換機100から2組の復号鍵を取得すると、各復号鍵はメモリ領域2110,2120にそれぞれ格納される。また復号鍵が取得される前は、「NULL」を表わすデータが当該領域に格納される。
次に、図25を参照して、本実施の形態に係るPLC130の制御構造について説明する。図25は、PLC130が備えるインナーボードCPU1112が実行する一連の処理を表わすフローチャートである。なお前述の実施の形態における処理と同一の処理には同一のステップ番号を付してある。したがって、ここではそれらについての説明は繰り返さない。
ステップS2540にて、インナーボードCPU1112は、予め登録されている認証コード(メモリ領域1240)と、通信フレームから取得された認証コードとが一致するか否かを判断する。インナーボードCPU1112がこれらの認証コードが一致すると判断すると(ステップS2540にてYES)、処理はステップS2550に移される。そうでない場合には(ステップS2540にてNO)、処理はステップS1460に移される。
ステップS2550にて、インナーボードCPU1112は、2つの復号鍵がそれぞれ同一であるか否かを判断する。インナーボードCPU1112がいずれの復号鍵も同一であると判断すると(ステップS2550にてYES)、処理はステップS2560に移される。そうでない場合には(ステップS2550にてNO)、処理はステップS1460に移される。
ステップS2560にて、インナーボードCPU1112は、通信フレームから取得した2つの復号鍵をメモリ1114に保存する(メモリ領域2410,2420)。ステップS2570にて、インナーボードCPU1112は、その復号鍵(いずれの復号鍵でも可)を用いて、暗号化されているプログラムを復号化する。現在インナーボードCPU1112が実行している処理は、初期起動時に実行される処理であるため、復号鍵はいずれも同一である。したがって、インナーボードCPU1112は、いずれの復号鍵によっても、暗号化されているプログラムを復号化することができる。
ステップS2580にて、インナーボードCPU1112は、復号化されたプログラムをメモリに保存する(メモリ領域1270)。ステップS2590にて、インナーボードCPU1112は、メモリ1114からコントローラ1120の実行メモリ1126に、当該プログラムをコピーする。
図26を参照して、本実施の形態に係るPLC130の制御構造についてさらに説明する。図26は、FAシステムが正常に稼動している場合に当該PLCが備えるインナーボードCPU1112が実行する一連の処理を表わすフローチャートである。
ステップS2610にて、インナーボードCPU1112は、設備機器140を制御するためのプログラムおよび復号鍵の更新のタイミングを検知する。ステップS2620にて、インナーボードCPU1112は、暗号変換機100との通信を確立する。ステップS2630にて、インナーボードCPU1112は、暗号変換機100によって送信された通信フレームを受信する。ステップS2640にて、インナーボードCPU1112は、受信した通信フレームから、認証コードと、第1および第2の復号鍵と、暗号化されたプログラムとを取得する。
ステップS2650にて、インナーボードCPU1112は、予め登録されている認証コード(メモリ領域1240)と、通信フレームから取得された認証コードとが一致するか否かを判断する。インナーボードCPU1112がこれらの認証コードは一致すると判断すると(ステップS2650にてYES)、処理はステップS2660に移される。そうでない場合には(ステップS2650にてNO)、処理はステップS2680に移される。
ステップS2660にて、インナーボードCPU1112は、既に保存されている復号鍵(メモリ領域2410)と、通信フレームから取得された第1の復号鍵とが一致するか否かを判断する。インナーボードCPU1112が、これらの復号鍵は一致すると判断すると(ステップS2660にてYES)、処理はステップS2670に移される。そうでない場合には(ステップS2660にてNO)、処理はステップS2680に移される。
ステップS2670にて、インナーボードCPU1112は、プログラム用領域(メモリ領域1260)に既に保存されているプログラムを消去する。ステップS2672にて、インナーボードCPU1112は、通信フレームから取得された暗号化されたプログラムを第1の復号鍵を用いて復号化する。ステップS2674にて、インナーボードCPU1112は、復号化されたプログラムをプログラム用領域(メモリ領域1260)に保存する。
ステップS2676にて、インナーボードCPU1112は、プログラム用領域からコントローラの実行メモリ1126に、復号化されたプログラムをコピーする。ステップS2678にて、インナーボードCPU1112は、第2の復号鍵をメモリに保存する(メモリ領域2410)。
ステップS2680にて、インナーボードCPU1112は、プログラムの更新ができない旨を報知する。報知の態様は、たとえばメッセージの表示、更新ができない場合に予め発光するように規定されたランプの発光、音声の出力などを含む。
図27は、電源スイッチがオンにされた場合にPLC130が実行する一連の処理を表わすフローチャートである。
ステップS2710にて、インナーボードCPU1112は、PLC130の電源スイッチのオンを検知する。ステップS2720にて、インナーボードCPU1112は、インナーボード1110に保存されている暗号化されたプログラム(メモリ領域1260)および復号鍵(メモリ領域2110,2120)と、コントローラ1120に保存されている実行プログラム(実行メモリ1126)とを消去する。
ステップS2730にて、インナーボードCPU1112は、暗号変換機100との通信を確立する。ステップS2740にて、インナーボードCPU1112は、初回登録用の復号鍵の送信リクエストを生成し、その送信リクエストを暗号変換機100に送信する。暗号変換機100は、その送信リクエストを受信すると、初回登録用の復号鍵(図20)を用いて、当該復号鍵が含まれる通信フレームを生成し、PLC130に送信する。
ステップS2750にて、インナーボードCPU1112は、暗号変換機100によって送信された通信フレームの受信を検知する。ステップS2760にて、インナーボードCPU1112は、当該通信フレームから、認証コードと第1および第2の復号鍵と、暗号化されたプログラムとを取得する。この場合、第1の復号鍵と第2の復号鍵とは同一である。
ステップS2770にて、インナーボードCPU1112は、予め登録されている認証コード(メモリ領域1240)と、通信フレームから取得された認証コードとが一致するか否かを判断する。インナーボードCPU1112が、これらの認証コードは一致すると判断すると(ステップS2770にてYES)、処理はステップS2780に移される。そうでない場合には(ステップS2770にてNO)、処理はステップS2790に移される。
ステップS2780にて、インナーボードCPU1112は、第1および第2の復号鍵が同一であるか否かを判断する。暗号変換機100によって送信された通信フレームが正常に生成されたものであればこれらの復号鍵は同一である。インナーボードCPU1112が、これらの復号鍵は同一であると判断すると(ステップS2780にてYES)、処理はステップS2782に移される。そうでない場合には(ステップS2780にてNO)、処理はステップS2790に移される。
ステップS2782にて、インナーボードCPU1112は、第1および第2のいずれかの復号鍵を用いて、暗号化されたプログラムを復号化する。ステップS2784にて、インナーボードCPU1112は、復号化されたプログラムをメモリにおいて予め確保された領域(メモリ領域1270)に保存する。ステップS2786にて、インナーボードCPU1112は、メモリ1114からコントローラの実行メモリ1126にそのプログラムをコピーする。ステップS2788にて、インナーボードCPU1112は、第1および第2のいずれかの復号鍵をメモリに保存する(メモリ領域2110,2120)。
ステップS2790にて、インナーボードCPU1112は、出力インターフェイス(図示しない)を介して、PLC130が稼動できない旨を報知する。報知の態様は前述のとおりである。
以上のようにして、本発明の第2の実施の形態に係るFAシステムによると、暗号変換機1900は、暗号化されたプログラムと2つの暗号ルール(たとえば、復号鍵)とを有する通信フレームをPLCに送信する。通信フレームを受信したPLCは、最初に復号処理を行なった後に、2つ目の復号鍵を保存する。次の通信フレームを受信したときに、PLCは、受信したフレームから取得した第一番目の復号鍵と、保存しておいた復号鍵とを比較することにより、当該通信フレームに含まれる暗号化されたプログラムが正当なプログラムであるか否かを確認する。仮に、正当でないプログラムが受信されたことが確認されると、そのプログラムは破棄される。
このようにすると、PLCが、認証のために使用される暗号ルール(たとえば復号鍵)を有していない場合には、当該PLCは、そのプログラムを取得することができない。したがって、そのようなPLCによる不法な取得を防止することができる。
要約すれば、本実施の形態に係るFAシステムによると、特定の制御装置(たとえば、プログラマブル・ロジック・コントローラ)のみが特定の制御プログラム(コントローラや製造機器を作動させるためのプログラム)をダウンロードにより取得して使用できる。暗号化されたプログラムがダウンロードされる。
本実施の形態に係るFAシステムが使用する暗号技術により、当該制御プログラムは、ある暗号ルールに従って平文とは全く異なるプログラムコードに変換される。制御装置は、その暗号化されたプログラム(暗号化プログラム)を受信した後に、当該暗号ルールに従って、暗号化プログラムを復号処理して、制御プログラムに復元する。当該暗号ルールは、各機器(制御プログラムの送信側および受信側)において共有される。
さらに、暗号ルールや暗号化プログラムを送信した際の認証処理に必要な相手先を識別するデータ(実施の形態における認証コード)も使用される。上記のような仕組みにより、暗号化プログラムが確実に、特定の制御装置にダウンロードされる。
具体的には、本実施の形態に係る認証処理においては、認証コードと、暗号ルールと、相手先(接続先)情報と、対象機種情報(PLCその他の制御装置に固有な情報)とが少なくとも使用される。さらに、制御プログラムをどのように消去するかの消去情報も使用される。これらの情報に基づいて、相手先の認証と暗号ルールによる装置の認証が行なわれ、ダウンロードされた暗号化プログラムが復号化される。
また、他の局面において、制御装置が、制御プログラムを実行している間に、バックグラウンドで暗号ルールの変化を常に照合し、最新の暗号ルールで認証してもよい。
上記の実施の形態に係るFAシステムにおいて、暗号変換機あるいは制御装置は、周知のPC(Personal Computer)によっても実現可能である。また、他の局面において、特定の制御装置向けに作成された制御プログラムを、当該制御装置に固有な暗号ルールを用いて暗号化し、制御装置がそのプログラムを実行する際にのみダウンロードすることで、当該プログラムの違法な複製を防止することもできる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
本発明は、いわゆるFAシステムに含まれる設備を制御するための制御装置と、当該制御装置と通信可能な暗号装置とにおいて利用可能である。また、本発明において、制御装置に係る構成の適用は、制御装置自体に限られない。この構成は、たとえば当該制御装置に対して着脱可能な制御基板に対しても適用可能である。
本発明の第1の実施の形態に係るファクトリ・オートメーション(FA)システム10の構成を表わす図である。 FAシステム10に接続されるプログラム開発装置110によって実現される機能の構成を表わすブロック図である。 プログラム開発装置110として機能するコンピュータシステム300のハードウェア構成を表わすブロック図である。 コンピュータシステム300が備えるハードディスク350におけるデータの格納の一態様を概念的に表わす図である。 コンピュータシステム300が備えるCPU310が実行する一連の処理を表わすフローチャートである。 本発明の第1の実施の形態に係る暗号開発機100によって実現される機能の構成を表わすブロック図である。 暗号変換機100として機能するコンピュータシステム700のハードウェア構成を表わすブロック図である。 コンピュータシステム700が備えるCPU710が実行する一連の処理を表わすフローチャートである。 暗号変換機100から送信される通信フレーム900の構成を概念的に表わす図である。 本発明の第1の実施の形態に係るPLC130によって実現される機能の構成を表わすブロック図である。 PLC130のハードウェア構成を表わすブロック図である。 PLC130のメモリ1114におけるデータの格納の一態様を概念的に表わす図である。 メモリ1114と実行メモリ1126との間におけるデータの移動を表わす図である。 PLC130が備えるインナーボードCPU1112が実行する一連の処理を表わすフローチャートである。 PLCに生じるイベントと当該PLCの動作と暗号ルールの処理態様との関係を表わす図である。 本発明の第1の実施の形態の第1の変形例に係るインナーボードCPU1110が実行する一連の処理を表わすフローチャートである。 PLC1700のハードウェア構成を表わすブロック図である。 本発明の第2の実施の形態に係る暗号変換機とPLCとの間で通信される暗号鍵および復号鍵の遷移を表わす図である。 本発明の第2の実施の形態に係る暗号変換機1900によって実現される機能の構成を表わすブロック図である。 暗号ルール記憶部1940におけるデータの格納の一態様を概念的に表わす図である。 暗号変換機1900によって生成される通信フレーム2100の構成を概念的に表わす図である。 本発明の第2の実施の形態に係るPLC130が備えるインナーボードCPU1112が実行する一連の処理を表わすフローチャートである。 本発明の第2の実施の形態に係るPLC2300によって実現される機能の構成を表わすブロック図である。 本発明の第2の実施の形態に係るPLCのメモリ1114におけるデータの格納の一態様を表わす図である。 本発明の第2の実施の形態に係るPLC130が備えるインナーボードCPU1112が実行する一連の処理を表わすフローチャートである。 本発明の第2の実施の形態に係るPLCが備えるインナーボードCPU1112が実行する一連の処理を表わすフローチャートである。 電源スイッチがオンにされた場合にPLC130が実行する一連の処理を表わすフローチャートである。
符号の説明
10 FAシステム、150 インターネット、152 ケーブル、154 LAN、300 コンピュータシステム、362 CD−ROM、700 コンピュータシステム、762 CD−ROM、900 通信フレーム、1130 CPUバス、1140 I/Oバス、1760 CPUバス、1770 I/Oバス、2100 通信フレーム。

Claims (21)

  1. 機器の制御システムであって、前記機器を制御する制御装置と、通信回線によって前記制御装置に接続される暗号化装置とを備え、
    前記暗号化装置は、
    前記制御装置に固有に割り当てられた識別データと、前記機器を制御するための制御プログラムとを格納する第1の記憶手段と、
    プログラムを暗号化および復号化するための暗号ルールに基づいて前記制御プログラムを暗号化することにより、暗号化されたプログラムを生成する暗号化手段と、
    前記通信回線に接続され、前記識別データと前記暗号化されたプログラムとを、前記制御装置に送信する送信手段とを備え、
    前記制御装置は、
    前記識別データおよび前記暗号ルールを格納する第2の記憶手段を備え、前記識別データおよび前記暗号ルールは、予め入力されたデータであり、
    前記通信回線に接続され、前記識別データと前記暗号化されたプログラムとを、前記暗号化装置から受信する受信手段と、
    前記受信手段によって受信された識別データと、前記第2の記憶手段に格納されている識別データとに基づいて、前記受信手段によって受信された暗号化プログラムが前記制御プログラムを暗号化したものであるか否かを確認する認証手段と、
    前記暗号化プログラムが前記制御プログラムを暗号化したものであることが確認された場合に、前記暗号ルールに基づいて前記暗号化プログラムを復号化することにより前記制御プログラムを導出する復号化手段と、
    前記復号化手段によって導出された前記制御プログラムを格納するプログラム記憶手段と、
    前記プログラム記憶手段に格納されている前記制御プログラムに基づいて、前記機器を制御する制御手段とを備える、機器の制御システム。
  2. 機器の制御システムであって、前記機器を制御する制御装置と、通信回線によって前記制御装置に接続される暗号化装置とを備え、
    前記暗号化装置は、
    プログラムを暗号化および復号化するための複数の暗号ルールと、機器を制御するための制御プログラムとを格納する第1の記憶手段と、
    前記複数の暗号ルールのうちの第1の暗号ルールに基づいて前記制御プログラムを暗号化することにより、暗号化されたプログラムを生成する暗号化手段と、
    前記通信回線を介して、前記暗号化されたプログラムと、前記第1の暗号ルールと、前記複数の暗号ルールのうちの第2の暗号ルールとを、前記制御装置に送信する第1の送信制御手段とを備え、
    前記制御装置は、
    前記暗号化されたプログラムと、前記第1の暗号ルールと、前記第2の暗号ルールとを受信する受信手段と、
    前記受信手段によって受信された前記第1の暗号ルールに基づいて、前記暗号化されたプログラムを復号化することにより前記制御プログラムを導出する第1の復号化手段と、
    前記受信手段によって受信された前記第2の暗号ルールを格納する第2の記憶手段とを備え、
    前記暗号化装置は、
    前記第1の暗号ルールと前記第2の暗号ルールとが前記制御装置に送信された後に、前記第2の暗号ルールに基づいて前記制御プログラムを暗号化することにより生成された新たな暗号化プログラムと、前記第2の暗号ルールと、前記複数の暗号ルールのうちの第3の暗号ルールとを、前記制御装置に送信する第2の送信制御手段をさらに備え、
    前記制御装置は、
    前記新たな暗号化プログラムと、前記第2の暗号ルールと、前記第3の暗号ルールとが前記受信手段によって受信された場合に、前記第2の記憶手段に格納されている前記第2の暗号ルールと、前記受信手段によって受信された第2の暗号ルールとに基づいて、前記新たな暗号化プログラムが前記制御プログラムを暗号化したものであるか否かを確認する認証手段と、
    前記新たな暗号化プログラムが前記制御プログラムを暗号化したものである場合に、前記第2の暗号ルールに基づいて前記新たな暗号化プログラムを復号化することにより前記制御プログラムを導出する第2の復号化手段と、
    前記新たな暗号化プログラムが前記制御プログラムを暗号化したものである場合に、前記認証手段による確認のためのデータとして、前記第2の記憶手段に格納されている第2の暗号ルールに代えて前記第3の暗号ルールを前記記憶手段に書き込む更新手段と、
    前記第1の復号化手段または前記第2の復号化手段によって導出された制御プログラムに基づいて前記機器を制御する制御手段とを備える、機器の制御システム。
  3. 機器の制御装置であって、
    通信回線に接続されている通信装置から、前記制御装置に固有に割り当てられた識別データと、プログラムを暗号化および復号化するための暗号ルールに基づいて前記機器の制御プログラムを暗号化することにより生成された暗号化プログラムとを受信する受信手段と、
    前記識別データおよび前記暗号ルールを格納する記憶手段とを備え、前記識別データおよび前記暗号ルールは前記受信手段によるデータの受信の前に入力されたデータであり、
    前記受信手段によって受信された識別データと、前記記憶手段に格納されている識別データとに基づいて、前記受信手段によって受信された暗号化プログラムが前記制御プログラムを暗号化したものであるか否かを確認する認証手段と、
    受信された前記暗号化プログラムが前記制御プログラムを暗号化したものであることが確認された場合に、前記暗号ルールに基づいて前記暗号化プログラムを復号化することにより前記制御プログラムを導出する復号化手段と、
    前記復号化手段によって導出された前記制御プログラムを格納するプログラム記憶手段と、
    前記プログラム記憶手段に格納されている前記制御プログラムに基づいて、前記機器を制御する制御手段とを備える、機器の制御装置。
  4. 前記暗号ルールは、前記制御プグラムを暗号化するための暗号鍵と、前記暗号鍵を用いて生成されたデータを復号化するための復号鍵とを含む、請求項3に記載の機器の制御装置。
  5. 前記制御装置の状態の変化を検出する検出手段と、
    前記状態の変化が検出されたことに基づいて、前記プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える、請求項3に記載の機器の制御装置。
  6. 電力の供給と前記供給の停止とを切り換えるための切換手段をさらに備え、
    前記検出手段は、前記電力の供給と前記供給の停止との切り換えを検出し、
    前記消去手段は、前記切り換えが検出された場合に、前記制御プログラムを消去する、請求項5に記載の機器の制御装置。
  7. データを受信可能なデータ通信装置の接続を受け付けるインターフェイス手段をさらに備え、
    前記検出手段は、前記データ通信装置が前記インターフェイス手段に接続されたことを検出し、
    前記消去手段は、前記データ通信装置が前記インターフェイス手段に接続されたことが検出された場合に、前記制御プログラムを消去する、請求項5に記載の機器の制御装置。
  8. 前記暗号化プログラムと、前記暗号化処理のために使用された暗号ルールとの送信要求を生成する生成手段と、
    前記生成手段によって生成された送信要求を前記通信装置に送信する送信手段とをさらに備える、請求項3に記載の機器の制御装置。
  9. 前記制御装置の状態の変化を検出する検出手段と、
    前記状態の変化が検出されたことに基づいて、前記プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備え、
    前記生成手段は、前記制御プログラムが消去されたことに基づいて前記送信要求を生成する、請求項8に記載の機器の制御装置。
  10. 機器の制御装置であって、
    通信回線に接続され、機器を制御するための制御プログラムを暗号化することにより生成された暗号化プログラムと、前記制御プログラムを暗号化するために使用された第1の暗号ルールと、前記制御プログラムを暗号化するために使用可能な第2の暗号ルールとを、前記通信回線に接続されている通信装置から受信する受信手段と、
    前記受信手段によって受信された前記第1の暗号ルールに基づいて前記暗号化プログラムを復号化することにより、前記制御プログラムを導出する第1の復号化手段と、
    前記受信手段によって受信された前記第2の暗号ルールを格納する記憶手段と、
    前記受信手段が新たな暗号化プログラムと、第3の暗号ルールと、第4の暗号ルールとを受信した場合に、前記記憶手段に格納されている前記第2の暗号ルールと、前記第3の暗号ルールとに基づいて、前記新たな暗号化プログラムが前記制御プログラムを暗号化したものであるか否かの確認を行なう認証手段と、
    前記新たな暗号化プログラムは前記制御プログラムを暗号化したものであることが認証された場合に、前記第3の暗号ルールに基づいて前記新たな暗号化プログラムを復号化することにより前記制御プログラムを導出する第2の復号化手段と、
    前記新たな暗号化プログラムは前記制御プログラムを暗号化したものであることが認証された場合に、前記認証手段による確認のためのデータとして、前記記憶手段に格納されている第2の暗号ルールに代えて前記第4の暗号ルールを前記記憶手段に書き込む更新手段と、
    前記第1の復号化手段または前記第2の復号化手段によって導出された制御プログラムに基づいて前記機器を制御する制御手段とを備える、機器の制御装置。
  11. 前記第1の暗号ルールと前記第2の暗号ルールとは、同一である、請求項10に記載の機器の制御装置。
  12. 前記第2の暗号ルールと前記第3の暗号ルールとは、同一である、請求項10に記載の機器の制御装置。
  13. 前記第3の暗号ルールと前記第4の暗号ルールとは、異なる暗号ルールである、請求項10に記載の機器の制御装置。
  14. 各前記暗号ルールは、前記制御プグラムを暗号化するための暗号鍵と、前記暗号鍵を用いて生成されたデータを復号化するための復号鍵とを含む、請求項10に記載の機器の制御装置。
  15. 前記制御装置の状態の変化を検出する検出手段と、
    前記状態の変化が検出されたことに基づいて、前記プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備える、請求項10に記載の機器の制御装置。
  16. 電力の供給と前記供給の停止とを切り換えるための切換手段をさらに備え、
    前記検出手段は、前記電力の供給と前記供給の停止との切り換えを検出し、
    前記消去手段は、前記切り換えが検出された場合に、前記制御プログラムを消去する、請求項15に記載の機器の制御装置。
  17. データを受信可能なデータ通信装置の接続を受け付けるインターフェイス手段をさらに備え、
    前記検出手段は、前記データ通信装置が前記インターフェイス手段に接続されたことを検出し、
    前記消去手段は、前記データ通信装置が前記インターフェイス手段に接続されたことが検出された場合に、前記制御プログラムを消去する、請求項15に記載の機器の制御装置。
  18. 前記暗号化プログラムと、前記暗号化処理のために使用された暗号ルールとの送信要求を生成する生成手段と、
    前記生成手段によって生成された送信要求を前記通信装置に送信する送信手段とをさらに備える、請求項10に記載の機器の制御装置。
  19. 前記制御装置の状態の変化を検出する検出手段と、
    前記状態の変化が検出されたことに基づいて、前記プログラム記憶手段に格納されている制御プログラムを消去する消去手段とをさらに備え、
    前記生成手段は、前記制御プログラムが消去されたことに基づいて前記送信要求を生成する、請求項18に記載の機器の制御装置。
  20. 機器を制御する制御装置がプログラムを保護する保護方法であって、前記制御装置は、データを格納するメモリを備え、
    前記保護方法は、
    前記制御装置に固有に割り当てられた識別データと、プログラムを暗号化および復号化するための暗号ルールに基づいて前記機器を制御するための制御プログラムを暗号化することにより導出された暗号化プログラムとを受信するステップと、
    前記識別データおよび前記暗号ルールをロードするステップとを備え、前記識別データおよび前記暗号ルールは、前記メモリに予め入力されたデータであり、
    受信された前記識別データと、ロードされた前記識別データとに基づいて、受信された前記暗号化プログラムが前記制御装置による使用のための制御プログラムを暗号化したものであるか否かを確認するステップと、
    前記暗号化プログラムが前記使用のための制御プログラムを暗号化したものであることが確認された場合に、前記暗号ルールに基づいて前記暗号化プログラムを復号化することにより前記制御プログラムを導出するステップと、
    導出された前記制御プログラムに基づいて、前記機器を制御するステップとを備える、プログラムの保護方法。
  21. 機器を制御する制御装置がプログラムを保護する保護方法であって、前記制御装置は、データを格納するメモリを備え、
    前記保護方法は、
    プログラムを暗号化および復号化するための複数の暗号ルールのうちの第1の暗号ルールに基づいて、前記機器を制御するための制御プログラムを暗号化することにより導出された暗号化プログラムと、前記第1の暗号ルールと、前記複数の暗号ルールのうちの第2の暗号ルールとを受信するステップと、
    受信された前記第1の暗号ルールに基づいて、前記暗号化プログラムを復号化することにより前記制御プログラムを導出するステップと、
    受信された前記第2の暗号ルールを前記メモリに格納するステップと、
    前記第2の暗号ルールに基づいて前記制御プログラムを暗号化することにより生成された新たな暗号化プログラムと、前記第2の暗号ルールと、前記複数の暗号ルールのうちの第3の暗号ルールとを受信するステップと、
    前記新たな暗号化プログラムと、前記第2の暗号ルールと、前記第3の暗号ルールとが受信された場合に、前記メモリに格納されている前記第2の暗号ルールと、受信された前記第2の暗号ルールとに基づいて、前記新たな暗号化プログラムが前記制御プログラムを暗号化したものであるか否かを確認するステップと、
    前記新たな暗号化プログラムが前記制御プログラムを暗号化したものであることが確認された場合に、前記第2の暗号ルールに基づいて前記新たな暗号化プログラムを復号化することにより前記制御プログラムを導出するステップと、
    前記新たな暗号化プログラムが前記制御プログラムを暗号化したものであることが確認された場合に、前記第3の暗号ルールを前記メモリに保存するステップと、
    導出された前記制御プログラムに基づいて前記機器を制御するステップとを備える、プログラムの保護方法。
JP2006244138A 2006-09-08 2006-09-08 機器の制御システム、制御装置およびプログラムの保護方法 Withdrawn JP2008065678A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006244138A JP2008065678A (ja) 2006-09-08 2006-09-08 機器の制御システム、制御装置およびプログラムの保護方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006244138A JP2008065678A (ja) 2006-09-08 2006-09-08 機器の制御システム、制御装置およびプログラムの保護方法

Publications (1)

Publication Number Publication Date
JP2008065678A true JP2008065678A (ja) 2008-03-21

Family

ID=39288338

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006244138A Withdrawn JP2008065678A (ja) 2006-09-08 2006-09-08 機器の制御システム、制御装置およびプログラムの保護方法

Country Status (1)

Country Link
JP (1) JP2008065678A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014097444A1 (ja) * 2012-12-20 2014-06-26 三菱電機株式会社 制御システム及びプログラム送信装置及び認証サーバ及びプログラム保護方法及びプログラム送信方法及びプログラム送信装置のプログラム
EP3179322A1 (en) * 2015-12-10 2017-06-14 Deutsche Telekom AG A method and system for detecting attempted malicious re-programming of a plc in scada systems
JP2019149763A (ja) * 2018-02-28 2019-09-05 オムロン株式会社 データの処理方法、制御システム、制御装置
WO2020261654A1 (ja) 2019-06-26 2020-12-30 オムロン株式会社 制御システム、制御装置、および管理方法
EP4075308A1 (en) 2021-04-12 2022-10-19 OMRON Corporation Control device, control system, management method, and program

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014097444A1 (ja) * 2012-12-20 2014-06-26 三菱電機株式会社 制御システム及びプログラム送信装置及び認証サーバ及びプログラム保護方法及びプログラム送信方法及びプログラム送信装置のプログラム
TWI479287B (zh) * 2012-12-20 2015-04-01 Mitsubishi Electric Corp Control system, program delivery device, authentication server, program protection method, program delivery method and program delivery device
CN104871098A (zh) * 2012-12-20 2015-08-26 三菱电机株式会社 控制系统、程序发送装置、认证服务器、程序保护方法、程序发送方法以及程序发送装置的程序
JP5836504B2 (ja) * 2012-12-20 2015-12-24 三菱電機株式会社 制御システム及びプログラム送信装置及び認証サーバ及びプログラム保護方法及びプログラム送信方法及びプログラム送信装置のプログラム
US9769132B2 (en) 2012-12-20 2017-09-19 Mitsubishi Electric Corporation Control system for securely protecting a control program when editing, executing and transmitting the control program
EP3179322A1 (en) * 2015-12-10 2017-06-14 Deutsche Telekom AG A method and system for detecting attempted malicious re-programming of a plc in scada systems
JP2019149763A (ja) * 2018-02-28 2019-09-05 オムロン株式会社 データの処理方法、制御システム、制御装置
WO2020261654A1 (ja) 2019-06-26 2020-12-30 オムロン株式会社 制御システム、制御装置、および管理方法
EP4075308A1 (en) 2021-04-12 2022-10-19 OMRON Corporation Control device, control system, management method, and program

Similar Documents

Publication Publication Date Title
JP4668619B2 (ja) 装置鍵
US8381307B2 (en) Method for protecting a converted applet (CAP) file including encrypting the CAP file
TWI384381B (zh) 升級記憶卡使其具有防止安全內容及應用之複製之安全性機制
US8327133B2 (en) Communication device and medium for the same
JP2004164491A (ja) プログラム更新方法およびサーバ
US8190912B2 (en) Program development method, program development supporting system, and program installation method
US20030177378A1 (en) Apparatus and method for the decryption of an encrypted electronic document
CN101872404B (zh) 一种保护Java软件程序的方法
JP2009294859A (ja) 機器、機器管理装置、機器管理システム及び機器管理方法、並びにプログラム及び記憶媒体
JP2008226159A (ja) 情報処理装置、ソフトウェア更新方法及び画像処理装置
CN101421739A (zh) 对变更bios中的至少一项的请求的验证和与bios相关联的设置
CN101743714A (zh) 更新和确认密码保护文档
JP2007102785A (ja) 保安方法及びシステム、その方法を記録したコンピュータで読み取り可能な記録媒体
JP2008065678A (ja) 機器の制御システム、制御装置およびプログラムの保護方法
US20150371012A1 (en) Process and device for encoding of source files for secure delivery of source code
JP2009104380A (ja) ロボット不正使用防止装置およびロボット不正使用防止方法
JP5676145B2 (ja) 記憶媒体、情報処理装置およびコンピュータプログラム
JP2010191497A (ja) 情報処理システム、端末装置、送信サーバ装置、情報処理方法、およびプログラム
JP2008067162A (ja) 制御システムおよびシステムの制御方法
JP4998314B2 (ja) 通信制御方法および通信制御プログラム
JP2007199949A (ja) 情報管理システムおよび情報処理装置
JPWO2019142307A1 (ja) 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム
JP5370695B2 (ja) 記憶装置制御システム及び記憶装置制御システムの記憶装置管理方法
JP2012083922A (ja) データ監視プログラム、データ監視方法及びデータ監視装置
JP2000099385A (ja) ファイルを複数ユーザで共有するためのセキュリティ方法ならびにシステム及び同方法がプログラムされ記録される記録媒体

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20091110