(57)【要約】【課題】制御対象を制御する制御装置においてデータの漏洩を防止する技術を提供する。【解決手段】方法は、秘密鍵および公開鍵を制御装置１００が生成するステップと、データに対する公開鍵による暗号化で得られた暗号化データを制御装置１００が取得するステップと、制御装置１００が処理する場合において、暗号化データに対して制御装置１００が秘密鍵で復号化するステップと、暗号化データに対する秘密鍵による復号化で得られたデータを、外部からアクセス不可能な揮発性の記憶領域に制御装置１００が記憶するステップと、記憶領域に記憶されたデータを制御装置１００が参照して処理を実行するステップとを含む。【選択図】図１
2019149763.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御する制御装置においてサポート装置から提供されるデータの処理方法であって、
秘密鍵および公開鍵を前記制御装置が生成するステップと、
前記データに対する前記公開鍵による暗号化で得られた暗号化データを前記制御装置が取得するステップと、
前記制御装置が処理する場合において、前記暗号化データに対して前記制御装置が前記秘密鍵で復号化するステップと、
前記暗号化データに対する前記秘密鍵による復号化で得られた前記データを、外部からアクセス不可能な揮発性の記憶領域に前記制御装置が記憶するステップと、
前記記憶領域に記憶された前記データを前記制御装置が参照して処理を実行するステップとを含む、データの処理方法。
【請求項２】
前記暗号化データは、前記サポート装置によって提供された前記データを、前記制御装置が前記公開鍵を用いて暗号化することで生成され、
前記取得するステップは、前記制御装置が生成した前記暗号化データを取得するステップを含む、請求項１に記載のデータの処理方法。
【請求項３】
前記暗号化データは、前記サポート装置が前記公開鍵を用いて前記データを暗号化することで生成され、
前記取得するステップは、前記サポート装置によって転送された前記暗号化データを取得することを含む、請求項１に記載のデータの処理方法。
【請求項４】
前記制御装置は、外部から前記データが転送されたこと、外部からの指令を受け付けたこと、および当該制御装置が起動したことの少なくともいずれか一方の条件が成立した場合に、前記生成するステップを実行する、請求項１〜請求項３のいずれか１項に記載のデータの処理方法。
【請求項５】
前記公開鍵および前記秘密鍵の旧鍵ペアが既に記憶されている場合において新たに秘密鍵および公開鍵の新鍵ペアを前記制御装置が生成するステップと、
前記旧鍵ペアの前記公開鍵による暗号化で得られた前記暗号化データを前記制御装置が前記旧鍵ペアの前記秘密鍵で復号化するステップと、
前記旧鍵ペアの前記秘密鍵による復号化で得られた前記データを前記制御装置が前記新鍵ペアの前記公開鍵で暗号化するステップと、
前記新鍵ペアの前記公開鍵による暗号化で得られた暗号化データを前記制御装置が記憶するステップと、
前記旧鍵ペアを前記制御装置が削除するステップとを含む、請求項１〜請求項４のいずれか１項に記載のデータの処理方法。
【請求項６】
前記公開鍵および前記秘密鍵の旧鍵ペアが既に記憶されている場合において新たに秘密鍵および公開鍵の新鍵ペアを前記制御装置が生成するステップと、
前記旧鍵ペアの前記公開鍵による暗号化で得られた複数の前記暗号化データのうちから少なくとも一の前記暗号化データを前記制御装置が前記旧鍵ペアの前記秘密鍵で復号化するステップと、
前記旧鍵ペアの前記秘密鍵による復号化で得られた前記データを前記制御装置が前記新鍵ペアの前記公開鍵で暗号化するステップと、
前記新鍵ペアの前記公開鍵による暗号化で得られた暗号化データを前記制御装置が記憶するステップと、
前記旧鍵ペアの前記公開鍵による暗号化で得られた複数の前記暗号化データの全てが前記新鍵ペアの前記公開鍵で暗号化された場合に、前記旧鍵ペアを前記制御装置が削除するステップとを含む、請求項１〜請求項４のいずれか１項に記載のデータの処理方法。
【請求項７】
前記旧鍵ペアの前記公開鍵による暗号化で得られた複数の前記暗号化データのそれぞれに対応する項目をまとめたリストから、前記新鍵ペアの前記公開鍵による暗号化で得られた暗号化データに対応する項目を前記制御装置が削除するステップと、
前記旧鍵ペアの前記公開鍵による暗号化で得られた複数の前記暗号化データの全てが前記新鍵ペアの前記公開鍵で暗号化されたことによって全ての前記項目が削除された場合に、前記リストを前記制御装置が削除するステップとを含む、請求項６に記載のデータの処理方法。
【請求項８】
前記制御装置は、前記秘密鍵および前記公開鍵を生成するときにおける当該制御装置内の環境に依存して変化する値を用いて当該秘密鍵および当該公開鍵を生成する、請求項１〜請求項７のいずれか１項に記載のデータの処理方法。
【請求項９】
前記制御装置は、前記データのハッシュ値を、当該データに対応する前記暗号化データに関連付けて記憶する、請求項１〜請求項８のいずれか１項に記載のデータの処理方法。
【請求項１０】
前記データは、前記制御装置が前記制御対象を制御するプログラムのソースコードである、請求項１〜請求項９のいずれか１項に記載のデータの処理方法。
【請求項１１】
制御対象を制御する制御装置と前記制御装置にデータを提供するサポート装置とを備える制御システムであって、
前記制御装置は、
秘密鍵および公開鍵を生成する生成手段と、
前記データに対する前記公開鍵による暗号化で得られた暗号化データを取得する取得手段と、
処理する場合において、前記暗号化データに対して前記秘密鍵で復号化する復号化手段と、
前記暗号化データに対する前記秘密鍵による復号化で得られた前記データを、外部からアクセス不可能な揮発性の記憶領域に記憶する記憶手段と、
前記記憶領域に記憶された前記データを参照して処理を実行する実行手段とを含む、制御システム。
【請求項１２】
サポート装置から提供されるデータを用いて制御対象を制御する制御装置であって、
秘密鍵および公開鍵を生成する生成手段と、
前記データに対する前記公開鍵による暗号化で得られた暗号化データを取得する取得手段と、
処理する場合において、前記暗号化データに対して前記秘密鍵で復号化する復号化手段と、
前記暗号化データに対する前記秘密鍵による復号化で得られた前記データを、外部からアクセス不可能な揮発性の記憶領域に記憶する記憶手段と、
前記記憶領域に記憶された前記データを参照して処理を実行する実行手段とを含む、制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象を制御する制御装置においてサポート装置から提供されるデータの処理方法、制御装置と制御装置にデータを提供するサポート装置とを備える制御システム、およびサポート装置から提供されるデータを用いて制御対象を制御する制御装置に関する。
【背景技術】
【０００２】
様々な生産現場において、ＰＬＣ（プログラマブルコントローラ）などの制御装置を用いたＦＡ（Factory Automation）技術が広く普及している。近年の情報通信技術（ＩＣＴ：Information and Communication Technology）の発展に伴って、このようなＦＡ分野における制御装置においても、従来のシーケンスプログラムだけではなく、各種のアプリケーションプログラムが実行されるようになっている。
【０００３】
このような制御装置におけるプログラムの実行は、予め設定されたタスク周期内で完了させるものであったが、近年では、複数のタスク周期に亘ってプログラムの実行を完了させるものもある。
【０００４】
たとえば、特開２０１２−１９４６６３号公報（特許文献１）は、プログラムを実行することで制御対象を制御するＰＬＣのＣＰＵユニットを開示しており、当該ＣＰＵユニットは、制御サイクル内でプログラムの実行を完了させることができない場合に、次の制御サイクルにおいてプログラムの未実行の部分を実行するように構成されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１９４６６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、複数のタスク周期に亘ってプログラムを実行する制御装置の登場によって、様々なプログラムが制御装置に用いられるようになってきた。たとえば、コンピュータが処理できるバイナリ形式のプログラムに限らず、人間が作成したソースコードをコンピュータが直接理解して処理できるインタープリタ形式のプログラムも制御装置に用いられるようになってきた。このようなインタープリタ形式のプログラムが制御装置において用いられることは、ユーザにとって非常に利便性がよいが、その反面、そのソースコードが制御装置において直接記憶されるため、外部への漏洩対策が重要である。
【０００７】
本発明は、制御対象を制御する制御装置においてデータの漏洩を防止する技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本開示の一例に従えば、制御対象を制御する制御装置においてサポート装置から提供されるデータの処理方法が提供される。方法は、秘密鍵および公開鍵を制御装置が生成するステップと、データに対する公開鍵による暗号化で得られた暗号化データを制御装置が取得するステップと、制御装置が処理する場合において、暗号化データに対して制御装置が秘密鍵で復号化するステップと、暗号化データに対する秘密鍵による復号化で得られたデータを、外部からアクセス不可能な揮発性の記憶領域に制御装置が記憶するステップと、記憶領域に記憶されたデータを制御装置が参照して処理を実行するステップとを含む。
【０００９】
この開示によれば、制御装置が生成した公開鍵を用いて、サポート装置から提供されるデータが暗号化されるため、サポート装置から提供されるデータがそのまま外部に漏洩することを防止することができる。また、制御装置が処理する場合には、制御装置が生成した秘密鍵を用いて制御装置が暗号化データを復号化するとともに、復号化されたデータをアクセス不可能な揮発性の記憶領域に制御装置が記憶するため、復号化されたデータが外部に漏洩することも防止することができる。
【００１０】
上述の開示において、暗号化データは、サポート装置によって提供されたデータを、制御装置が公開鍵を用いて暗号化することで生成される。取得するステップは、制御装置が生成した暗号化データを取得するステップを含む。
【００１１】
この開示によれば、サポート装置から提供されるデータを制御装置が単独で暗号化するため、制御装置が生成した公開鍵を外部に転送する必要がなく、処理を複雑化することなくデータの漏洩を防止することができる。
【００１２】
上述の開示において、暗号化データは、サポート装置が公開鍵を用いてデータを暗号化することで生成される。取得するステップは、サポート装置によって転送された暗号化データを取得することを含む。
【００１３】
この開示によれば、データを提供するサポート装置がデータを暗号化した状態で制御装置に転送するため、転送経路でデータが漏洩することを防止することができ、データの漏洩防止をより強化することができる。
【００１４】
上述の開示において、制御装置は、外部からデータが転送されたこと、外部からの指令を受け付けたこと、および当該制御装置が起動したことの少なくともいずれか一方の条件が成立した場合に、生成するステップを実行する。
【００１５】
この開示によれば、適切なタイミングで制御装置が秘密鍵および公開鍵を生成することができる。
【００１６】
上述の開示において、方法は、公開鍵および秘密鍵の旧鍵ペアが既に記憶されている場合において新たに秘密鍵および公開鍵の新鍵ペアを制御装置が生成するステップと、旧鍵ペアの公開鍵による暗号化で得られた暗号化データを制御装置が旧鍵ペアの秘密鍵で復号化するステップと、旧鍵ペアの秘密鍵による復号化で得られたデータを制御装置が新鍵ペアの公開鍵で暗号化するステップと、新鍵ペアの公開鍵による暗号化で得られた暗号化データを制御装置が記憶するステップと、旧鍵ペアを制御装置が削除するステップとを含む。
【００１７】
この開示によれば、データの暗号化および復号化に用いられる鍵ペアを制御装置が交換することができるため、データの漏洩防止をより強化することができる。
【００１８】
上述の開示において、方法は、公開鍵および秘密鍵の旧鍵ペアが既に記憶されている場合において新たに秘密鍵および公開鍵の新鍵ペアを制御装置が生成するステップと、旧鍵ペアの公開鍵による暗号化で得られた複数の暗号化データのうちから少なくとも一の暗号化データを制御装置が旧鍵ペアの秘密鍵で復号化するステップと、旧鍵ペアの秘密鍵による復号化で得られたデータを制御装置が新鍵ペアの公開鍵で暗号化するステップと、新鍵ペアの公開鍵による暗号化で得られた暗号化データを制御装置が記憶するステップと、旧鍵ペアの公開鍵による暗号化で得られた複数の暗号化データの全てが新鍵ペアの公開鍵で暗号化された場合に、旧鍵ペアを制御装置が削除するステップとを含む。
【００１９】
この開示によれば、複数のデータの暗号化および復号化に用いられる鍵ペアを制御装置が交換することができるため、データの漏洩防止をより強化することができる。
【００２０】
上述の開示において、方法は、旧鍵ペアの公開鍵による暗号化で得られた複数の暗号化データのそれぞれに対応する項目をまとめたリストから、新鍵ペアの公開鍵による暗号化で得られた暗号化データに対応する項目を制御装置が削除するステップと、旧鍵ペアの公開鍵による暗号化で得られた複数の暗号化データの全てが新鍵ペアの公開鍵で暗号化されたことによって全ての項目が削除された場合に、リストを制御装置が削除するステップとを含む。
【００２１】
この開示によれば、リストを用いることで制御装置が過不足なく鍵ペアを交換することができる。また、鍵交換が一旦中断されたとしても、リストを用いることで中断時の状態から制御装置が鍵ペアを交換することができる。
【００２２】
上述の開示において、制御装置は、秘密鍵および公開鍵を生成するときにおける当該制御装置内の環境に依存して変化する値を用いて当該秘密鍵および当該公開鍵を生成する。
【００２３】
この開示によれば、再現性のない値を用いて制御装置が秘密鍵および公開鍵を生成することができるため、データの漏洩防止をより強化することができる。
【００２４】
上述の開示において、制御装置は、データのハッシュ値を、当該データに対応する暗号化データに関連付けて記憶する。
【００２５】
この開示によれば、暗号化データに関連付けられたハッシュ値を照合することで、暗号化データを復号化することなくデータを照合することができるため、照合に要する時間を短縮することができる。
【００２６】
上述の開示において、データは、制御装置が制御対象を制御するプログラムのソースコードである。
【００２７】
この開示によれば、プログラムのソースコードのようなインタープリタ形式のデータが外部に漏洩することを防止することができる。
【００２８】
本開示の別の一例に従えば、制御対象を制御する制御装置と制御装置にデータを提供するサポート装置とを備える制御システムが提供される。制御装置は、秘密鍵および公開鍵を生成する生成手段と、データに対する公開鍵による暗号化で得られた暗号化データを取得する取得手段と、処理する場合において、暗号化データに対して秘密鍵で復号化する復号化手段と、暗号化データに対する秘密鍵による復号化で得られたデータを、外部からアクセス不可能な揮発性の記憶領域に記憶する記憶手段と、記憶領域に記憶されたデータを参照して処理を実行する実行手段とを含む。
【００２９】
この開示によれば、制御装置が生成した公開鍵を用いて、サポート装置から提供されるデータが暗号化されるため、サポート装置から提供されるデータがそのまま外部に漏洩することを防止することができる。また、制御装置が処理する場合には、制御装置が生成した秘密鍵を用いて制御装置が暗号化データを復号化するとともに、復号化されたデータをアクセス不可能な揮発性の記憶領域に制御装置が記憶するため、復号化されたデータが外部に漏洩することも防止することができる。
【００３０】
本開示のさらに別の一例に従えば、サポート装置から提供されるデータを用いて制御対象を制御する制御装置が提供される。制御装置は、秘密鍵および公開鍵を生成する生成手段と、データに対する公開鍵による暗号化で得られた暗号化データを取得する取得手段と、処理する場合において、暗号化データに対して秘密鍵で復号化する復号化手段と、暗号化データに対する秘密鍵による復号化で得られたデータを、外部からアクセス不可能な揮発性の記憶領域に記憶する記憶手段と、記憶領域に記憶されたデータを参照して処理を実行する実行手段とを含む。
【００３１】
この開示によれば、制御装置が生成した公開鍵を用いて、サポート装置から提供されるデータが暗号化されるため、サポート装置から提供されるデータがそのまま外部に漏洩することを防止することができる。また、制御装置が処理する場合には、制御装置が生成した秘密鍵を用いて制御装置が暗号化データを復号化するとともに、復号化されたデータをアクセス不可能な揮発性の記憶領域に制御装置が記憶するため、復号化されたデータが外部に漏洩することも防止することができる。
【発明の効果】
【００３２】
本発明によれば、制御対象を制御する制御装置においてデータの漏洩を防止する技術を提供することができる。
【図面の簡単な説明】
【００３３】
【図１】本実施の形態に係る制御装置においてサポート装置から提供されるデータの処理方法の概要を示す模式図である。
【図２】本実施の形態に係る制御システムの全体構成例を示す模式図である。
【図３】本実施の形態に係る制御装置のハードウェア構成例を示すブロック図である。
【図４】本実施の形態に係るサポート装置のハードウェア構成例を示すブロック図である。
【図５】本実施の形態に係る制御装置において制御プログラムのタスク周期に対するアプリケーションプログラムの実行タイミングの一例を説明するためのタイミングチャートである。
【図６】本実施の形態に係る制御システムの各種機能を示す機能ブロック図である。
【図７】本実施の形態に係る制御システムの鍵生成工程を説明するための機能ブロック図である。
【図８】第１実施形態に係る制御システムの暗号化工程を説明するための機能ブロック図である。
【図９】第１実施形態に係る制御システムの暗号化工程を説明するためのシーケンス図である。
【図１０】第２実施形態に係る制御システムの暗号化工程を説明するための機能ブロック図である。
【図１１】第３実施形態に係る制御システムの暗号化工程を説明するための機能ブロック図である。
【図１２】第３実施形態に係る制御システムの暗号化工程を説明するためのシーケンス図である。
【図１３】本実施の形態に係る制御システムの複合化工程を説明するための機能ブロック図である。
【図１４】本実施の形態に係る制御システムの複合化工程を説明するためのシーケンス図である。
【図１５】本実施の形態に係る制御システムの鍵交換工程を説明するための機能ブロック図である。
【図１６】本実施の形態に係る制御システムにおいて旧暗号化データリストの更新例を説明するための図である。
【図１７】本実施の形態に係る制御装置の鍵交換工程を説明するためのフローチャートである。
【図１８】本実施の形態に係る制御システムにおいてデータの照合を説明するための模式図である。
【発明を実施するための形態】
【００３４】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００３５】
＜Ａ．適用例＞
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係る制御装置においてサポート装置から提供されるデータの処理方法の概要を示す模式図である。以下の説明においては、制御装置の一例として、主として、ＰＬＣ（プログラマブルコントローラ）を想定する。
【００３６】
図１に示すように、本実施の形態に係る制御システム１は、制御装置１００とサポート装置２００とを備える。制御装置１００は、サポート装置２００から提供されるデータを参照して所定の処理を実行することで制御対象を制御する。サポート装置２００から提供される「データ」には、制御対象を制御する際に用いられるプログラムやパラメータなどが含まれる。これらのデータは、制御装置１００の設計者などのユーザによって作成される。
【００３７】
制御装置１００によって実行される上述したプログラムには、ユーザプログラムおよびシステムプログラムが含まれる。ユーザプログラムは、制御対象に応じて任意に作成される命令の組み合わせであり、ユーザが任意に作成および修正可能である。ユーザプログラムは、典型的には、国際電気標準会議（International Electrotechnical Commission：ＩＥＣ）によって規定された国際規格ＩＥＣ６１１３１−３に従って記述された一または複数の命令からなるソースコードを含む。
【００３８】
これに対して、システムプログラムは、ユーザプログラムを実行するための実行環境や、制御装置１００に含まれるハードウェアの制御を実現するためのプログラムである。基本的には、システムプログラムは予め制御装置１００にインストールされている。
【００３９】
ユーザプログラムとしては、いずれかのタスクの一部として登録され、かつ当該タスクに設定される一定の制御周期であるタスク周期ごとに繰り返し実行される制御プログラムがある。あるタスク周期において、制御プログラムの先頭から最終までが順次実行され、次のタスク周期においても、制御プログラムの先頭から最終までが順次実行される。
【００４０】
また、ユーザプログラムとしては、あるタスク周期内において予め定められた実行条件が成立すると実行されるアプリケーションプログラムがある。アプリケーションプログラムは、当該アプリケーションプログラムが提供する処理が１タスク周期内で完了できない場合もあり、このような場合には、複数のタスク周期に亘って処理が実行される。
【００４１】
このようなアプリケーションプログラムは、ユーザが任意に作成および修正可能となるように、インタープリタ形式のプログラムであるため、そのソースコードが制御装置１００において直接記憶される。このため、ソースコードが制御装置１００の外部へ漏洩してしまうと、部外者によって容易にデータを利用されてしまう。
【００４２】
上述したような課題に鑑みて、本実施の形態は、制御対象を制御する制御装置１００においてデータの漏洩を防止する技術を提供する。具体的には、本実施の形態においては、公開鍵および秘密鍵を用いた暗号化技術をＰＬＣなどの制御装置１００に適用することで、プログラムの漏洩防止を実現している。以下、データの漏洩を防止する技術について具体的に説明する。
【００４３】
まず、図１を参照しながら、データの暗号化工程について説明する。図１に示すように、ステップ１において、サポート装置２００から制御装置１００に対して、ユーザによって作成されたデータ（プログラムやパラメータなどのデータ）が提供される。
【００４４】
ステップ２において、制御装置１００は、公開鍵および秘密鍵のセット（以下、「鍵ペア」とも称する）を生成する。なお、公開鍵および秘密鍵の生成は、一般的に知られている公知の技術を採用すればよいが、その際に用いる因数には、制御装置１００内の環境に依存して変化する値を採用することが好ましい。つまり、公開鍵および秘密鍵の生成の際には、再現性のない値を採用することが好ましい。公開鍵および秘密鍵は、電源が供給されなくとも記憶を保持する不揮発性の記憶領域に記憶される。
【００４５】
ステップ３において、サポート装置２００から提供されるデータが、制御装置１００によって作成された公開鍵を用いて暗号化される。ここでは、制御装置１００が公開鍵を用いてサポート装置２００から提供されたデータを暗号化してもよいし、サポート装置２００が公開鍵を用いてデータを暗号化した上でその暗号化データを制御装置１００に転送してもよい。なお、公開鍵を用いた暗号化は、一般的に知られている公知の技術を採用すればよい。
【００４６】
ステップ４において、制御装置１００は、暗号化データを取得して記憶する。暗号化データは、不揮発性の記憶部に記憶される。
【００４７】
このようにして、サポート装置２００から提供されたデータは、制御装置１００またはサポート装置２００によって暗号化された上で、制御装置１００によって記憶されて保持される。
【００４８】
次に、図１を参照しながら、制御装置１００が処理を実行する場合における暗号化データの復号化工程について説明する。図１に示すように、ステップ１１において、制御装置１００は、不揮発性の記憶部に保持されている暗号化データを、秘密鍵を用いて復号化する。なお、秘密鍵を用いた復号化は、一般的に知られている公知の技術を採用すればよい。
【００４９】
ステップ１２において、制御装置１００は、復号化したデータを記憶する。復号化されたデータは、電源が供給されないと記憶を保持できない揮発性の記憶領域であって、かつ外部からアクセス不可能な記憶部に記憶される。「外部」とは、制御装置１００による処理に用いられるデータを知り得ない領域のことであり、一般的には、当該データの作成ツールを有するサポート装置２００とは異なる装置などを想定する。
【００５０】
ステップ１３において、制御装置１００は、揮発性の記憶部に記憶されたデータを参照して処理を実行することで制御対象を制御する。
【００５１】
このようにして、暗号化データは、制御装置１００によって復号化されることで、制御対象を制御する際の処理に用いられる。
【００５２】
＜Ｂ．制御システムの全体構成例＞
まず、本実施の形態に係る制御装置１００を含む制御システム１の全体構成例について説明する。図２は、本実施の形態に係る制御システム１の全体構成例を示す模式図である。
【００５３】
図２に示すように、制御システム１の主たる構成要素である制御装置１００は、予め用意されたユーザプログラムを実行することで、任意の制御対象を制御する。具体的には、制御装置１００は、制御対象から計測値や状態値（以下、「入力データ」とも称す）などを収集するとともに、収集された入力データに基づいて制御演算を実行し、制御演算の実行により得られる指令値や状態値（以下、「出力データ」とも称す）を制御対象へ出力するという、一連の制御処理をサイクリックに実行する。
【００５４】
図２には、制御装置１００がフィールドネットワーク２を介して１または複数のデバイス１０に接続されている構成例を示す。１または複数のデバイス１０は、制御装置１００からの出力データに従って制御対象を制御し、制御対象から計測された入力データを制御装置１００へ提供する。一例として、デバイス１０は、リモートＩ／Ｏ（Input/Output）装置１２と、リレー群１４と、画像センサ１８およびカメラ２０と、サーボドライバ２２およびサーボモータ２４とを含む。
【００５５】
図示は省略するが、リモートＩ／Ｏ装置１２は、フィールドネットワーク２を介して通信を行う通信部と、入力データの取得および出力データの出力を行うための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。
【００５６】
Ｉ／Ｏユニットは、フィールドネットワーク２に直接接続されるようにしてもよいし、制御装置１００の一部に組み込まれてもよい。図２に示す例では、フィールドネットワーク２にＩ／Ｏユニット１６が直接的に接続されている。
【００５７】
画像センサ１８は、カメラ２０によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置１００へ送信する。サーボドライバ２２は、制御装置１００からの出力データ（たとえば、位置指令など）に従って、サーボモータ２４を駆動する。
【００５８】
フィールドネットワーク２は、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００５９】
制御装置１００には、ユーザプログラムの開発やデバッグを行うためのサポート装置２００が接続されることもある。サポート装置２００により提供される機能の詳細については、後述する。
【００６０】
制御装置１００は、上位ネットワーク６を介して、サーバ装置５００および表示装置４００に接続されている。
【００６１】
サーバ装置５００は、制御装置１００との間で必要なデータを遣り取りする。サーバ装置５００は、たとえば、データベース機能を有しており、制御装置１００が出力するイベントログなどを時系列に収集するようにしてもよい。
【００６２】
表示装置４００は、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを送信するとともに、制御装置１００での演算結果などをグラフィカルに表示する。
【００６３】
＜Ｃ．各装置のハードウェア構成例＞
次に、本実施の形態に係る制御システム１を構成する主要な装置のハードウェア構成例について説明する。
【００６４】
（ｃ１：制御装置１００のハードウェア構成例）
次に、本実施の形態に係る制御装置１００のハードウェア構成例について説明する。図３は、本実施の形態に係る制御装置のハードウェア構成例を示すブロック図である。
【００６５】
図３に示すように、制御装置１００は、プロセッサ１０２と、メインメモリ１０４と、ストレージ１０６と、上位ネットワークコントローラ１０８と、フィールドネットワークコントローラ１１０と、外部インターフェイス１１２とを含む。これらのコンポーネントは、プロセッサバス１３０を介して互いに接続されている。
【００６６】
プロセッサ１０２は、制御演算などを実行する演算部に相当し、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）などで構成される。具体的には、プロセッサ１０２は、ストレージ１０６に格納されたプログラムを読み出して、メインメモリ１０４におけるワーク領域９７にプログラムを展開して実行することで、制御対象に応じた制御および処理を実現する。
【００６７】
メインメモリ１０４は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。ストレージ１０６は、たとえば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。
【００６８】
ストレージ１０６には、ユーザプログラムを実現するための一または複数の実行モジュール９８、および各種のプログラムを格納するためのプログラム領域９９が含まれる。たとえば、プログラム領域には、公開鍵および秘密鍵を生成するための生成プログラム、データを暗号化するための暗号化プログラム、暗号化データを復号化するための復号化プログラム、およびデータを用いて処理を実行する実行プログラムなどが格納されている。
【００６９】
上位ネットワークコントローラ１０８は、上位ネットワーク６を介して、表示装置４００やサーバ装置５００（図４参照）といった任意の情報処理装置との間でデータを遣り取りする。
【００７０】
フィールドネットワークコントローラ１１０は、フィールドネットワーク２を介して、フィールドデバイスとの間でデータを遣り取りする。フィールドネットワークコントローラ１１０は、フィールドネットワーク２を介した定周期通信を行うための通信マスタとして機能する。
【００７１】
外部インターフェイス１１２は、たとえば、ＵＳＢ（Universal Serial Bus）コントローラやメモリカードインターフェイスなどで構成される。ＵＳＢコントローラは、ＵＳＢ接続を介して、サポート装置２００などとの間でデータを遣り取りする。また、メモリカードインターフェイスは、着脱可能な記録媒体の一例であるメモリカードなどの外部ストレージ３００を受け付ける。メモリカードインターフェイスは、外部ストレージ３００に対してデータを書き込み、外部ストレージ３００から各種データ（ログやトレースデータなど）を読み出すことが可能になっている。
【００７２】
図３に示す例では、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部が、専用のハードウェア回路（たとえば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装されてもよい。あるいは、制御装置１００の主要部が、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコンをベースとした産業用パソコン）を用いて実現されてもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。さらに、制御装置１００に表示装置４００やサポート装置２００などの機能を統合した構成を採用してもよい。
【００７３】
（ｃ２：サポート装置２００のハードウェア構成例）
次に、本実施の形態に係るサポート装置２００のハードウェア構成例について説明する。図４は、本実施の形態に係るサポート装置２００のハードウェア構成例を示すブロック図である。
【００７４】
本実施の形態に係るサポート装置２００は、一例として、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコン）を用いてプログラムを実行することで実現される。
【００７５】
図４に示すように、サポート装置２００は、ＣＰＵやＭＰＵなどのプロセッサ２０２と、光学ドライブ２０４と、主記憶装置２０６と、ストレージ２０８と、ＵＳＢコントローラ２１２と、ネットワークコントローラ２１４と、入力部２１６と、表示部２１８とを含む。これらのコンポーネントは、バス２２０を介して互いに接続される。
【００７６】
プロセッサ２０２は、ストレージ２０８に格納された各種プログラムを読み出して、主記憶装置２０６に展開して実行することで、各種処理を実現する。
【００７７】
ストレージ２０８は、たとえば、ＨＤＤやＳＳＤなどで構成される。ストレージ２０８には、典型的には、サポート装置２００において実行されるユーザプログラムの作成、作成したプログラムのデバッグ、システム構成の定義、各種パラメータの設定などを行うためのサポートプログラム２３０が格納される。
【００７８】
サポートプログラム２３０は、コンピュータであるサポート装置２００を、アプリケーションプログラムを生成する装置として機能させる。より具体的には、サポートプログラム２３０は、ソースコードの作成および編集処理などを実現するためのプログラミングツール２３４を含む。
【００７９】
サポート装置２００は、光学ドライブ２０４を有しており、コンピュータで読み取り可能なプログラムを非一過的に格納する記録媒体２０５（たとえば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読み取られてストレージ２０８などにインストールされる。
【００８０】
サポート装置２００で実行される各種プログラムは、記録媒体２０５を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードされる形でインストールされてもよい。また、本実施の形態に係るサポート装置２００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００８１】
ＵＳＢコントローラ２１２は、ＵＳＢ接続を介して制御装置１００との間のデータの遣り取りを制御する。ネットワークコントローラ２１４は、任意のネットワークを介した他の装置との間のデータの遣り取りを制御する。
【００８２】
入力部２１６は、キーボードやマウスなどで構成され、ユーザによる操作を受付ける。表示部２１８は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ２０２からの処理結果などを出力する。
【００８３】
図４に示す例では、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００８４】
（ｃ３：サーバ装置５００のハードウェア構成例）
本実施の形態に係る制御システム１を構成するサーバ装置５００は、一例として、汎用的なファイルサーバまたはデータベースサーバを用いて実現できる。このような装置のハードウェア構成については公知であるので、ここでは、その詳細な説明は行わない。
【００８５】
（ｃ４：表示装置４００のハードウェア構成例）
本実施の形態に係る制御システム１を構成する表示装置４００は、ＨＭＩ装置と称されるものであり、専用機として実装された構成を採用してもよいし、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。
【００８６】
汎用パソコンをベースとした産業用パソコンを用いて表示装置４００を実現する場合には、上述の図４に示すようなサポート装置２００と同様のハードウェア構成が採用される。但し、図４に示す構成例のうち、サポートプログラム２３０に代えて、ＨＭＩ機能を実現するためのプログラムが表示装置４００にインストールされる。
【００８７】
＜Ｄ．制御プログラムのタスク周期とアプリケーションプログラムの実行タイミング＞
次に、本実施の形態に係る制御装置１００において制御プログラムのタスク周期に対するアプリケーションプログラムの実行タイミングの一例について説明する。図５は、本実施の形態に係る制御装置１００において制御プログラムのタスク周期に対するアプリケーションプログラムの実行タイミングの一例を説明するためのタイミングチャートである。
【００８８】
なお、図５に示す例において、「Ｅ］は、定周期で実行される制御プログラムの処理の実行に要する時間を示し、「Ｐ」は、タスク内で呼び出されるアプリケーションプログラムの実行に要する時間を示す。
【００８９】
図５に示すように、一定のタスク周期ごとに制御プログラムが繰り返し実行される。各タスク周期内では、制御プログラムがその先頭から最終まで実行される。このように定周期間隔で実行される制御プログラムの実行が完了した後、１タスク周期内の残時間を使って、アプリケーションプログラムが実行される。さらに、１タスク周期内の残時間ではアプリケーションプログラムの実行が完了しなかった場合には、複数のタスク周期に亘ってアプリケーションプログラムが実行される。
【００９０】
たとえば、図５に示す例では、１周期目における１タスク周期内でアプリケーションプログラムの実行が完了しているが、２周期目における１タスク周期内では、アプリケーションプログラムの実行が完了していない。この場合、次の３周期目における１タスク周期内においてアプリケーションプログラムの未実行の部分が実行される。
【００９１】
このように、サポート装置２００から制御装置１００に提供されるデータに含まれるアプリケーションプログラムは、タスク周期ごとに繰り返し実行される制御プログラムが実行された後の残時間を利用して、一または複数のタスク周期に亘って実行され、それによって制御装置１００が制御対象を制御するための処理を実現する。
【００９２】
＜Ｅ．制御システムの機能構成例＞
次に、本実施の形態に係る制御システム１の機能構成について説明する。図６は、本実施の形態に係る制御システム１の各種機能を示す機能ブロック図である。なお、図６においては、サポート装置２００から制御装置１００に提供されるデータの漏洩を防止する技術に関する機能構成について特に説明する。
【００９３】
図６に示すように、制御装置１００のプロセッサ１０２は、主な機能部として、演算部１２２と、鍵生成部１２４と、暗号化部１２６と、複合化部１２８とを有する。制御装置１００のメインメモリ１０４は、主な機能部として、揮発性の記憶領域に情報を記憶する揮発性記憶部１４２を有する。制御装置１００のストレージ１０６は、主な機能部として、不揮発性の記憶領域に情報を記憶する不揮発性記憶部１６２を有する。
【００９４】
プロセッサ１０２、メインメモリ１０４、およびストレージ１０６は、それぞれ外部インターフェイス１１２を介してサポート装置２００および外部ストレージ３００に接続されている。
【００９５】
＜Ｆ．制御システムの各工程＞
次に、制御システム１が実施する各工程について説明する。
【００９６】
（ｆ１：鍵生成工程）
まず、制御システム１の鍵生成工程について説明する。図７は、本実施の形態に係る制御システムの鍵生成工程を説明するための機能ブロック図である。なお、図７および後述する図８、図１０、図１１、図１３、図１５においては、各工程において実行される処理の順番の一例が、たとえば、「（１）」、「（２）」、「（３）」、…といったように括弧付きの数字で示されている。
【００９７】
図７に示すように、制御装置１００は、鍵を生成するための条件が成立したときに、公開鍵および秘密鍵のセットである鍵ペアを生成する。鍵を生成するための条件としては、外部から外部インターフェイス１１２を介して制御装置１００のメインメモリ１０４にデータが転送されたこと（１ａ）、鍵を交換する旨の指令を受け付けたこと（１ｂ）、および鍵が存在しない状態で制御装置１００が起動したこと（１ｃ）などが想定される。
【００９８】
（１ａ）のデータ転送は、制御装置１００の製造時あるいは量産工程において、アプリケーションプログラムやパラメータなどの新たなデータが制御装置１００に登録されることを想定する。また、データは、サポート装置２００から外部インターフェイス１１２を介して制御装置１００に転送されてもよいし、外部ストレージ３００から外部インターフェイス１１２を介して制御装置１００に読み込まれてもよい。
【００９９】
外部から転送されるデータは、メインメモリ１０４の揮発性記憶部１４２によって記憶される。このため、制御装置１００が稼働しない時間帯においては、メインメモリ１０４に電源が供給されなくなることで揮発性の記憶領域内のデータが消去される。これにより、データの漏洩を防止することができる。なお、データがメインメモリ１０４に収まらない場合には、一旦、ストレージ１０６に記憶してもよい。
【０１００】
（１ｂ）の鍵交換指令は、既に鍵ペアが存在する状態で、ユーザ操作によって鍵を交換する旨の指令を制御装置１００が受け付けたことを想定する。
【０１０１】
（１ｃ）の制御装置１００の起動は、制御装置１００の工場出荷時や設定のリセット時における起動を想定する。
【０１０２】
制御装置１００は、上述した（１ａ），（１ｂ），（１ｃ）のうちのいずれか一方の処理が実行された場合に、プロセッサ１０２の鍵生成部１２４によって新たに鍵ペアを生成する（２）。
【０１０３】
（２）の鍵ペアの生成において、制御装置１００は、鍵ペアを生成する時点において、制御装置１００内の環境に依存して変化する値を用いて鍵ペアを生成する。つまり、制御装置１００は、鍵ペアの生成の際には、再現性のない値を採用する。具体的には、制御装置１００は、制御装置１００を構成する部品の情報や各種センサの現在値、自己診断データ（たとえば、内部回路の電流値や内部素子の温度、その他の環境ノイズデータ、装置利用の統計情報など）、あるいは不揮発性のストレージ１０６の現在値など、再現性のない因数を用いて鍵ペアを生成する。これにより、データの漏洩防止をより強化することができる。
【０１０４】
制御装置１００は、鍵ペアを生成すると、ストレージ１０６の不揮発性記憶部１６２によって鍵ペアを記憶する。
【０１０５】
このようにして、サポート装置２００や外部ストレージ３００からデータが転送されたこと、外部からの指令を受け付けたこと、および制御装置１００が起動したことの少なくともいずれか一方の条件が成立した場合に、制御装置１００は新たな鍵ペアを生成することができる。
【０１０６】
（ｆ２：第１実施形態に係る暗号化工程）
次に、本実施形態に係る暗号化工程のうち、第１実施形態に係る暗号化工程について説明する。図８は、第１実施形態に係る制御システム１の暗号化工程を説明するための機能ブロック図である。
【０１０７】
図８に示すように、まず、サポート装置２００から外部インターフェイス１１２を介して制御装置１００のメインメモリ１０４にデータが転送される（１）。サポート装置２００から転送されるデータは、メインメモリ１０４の揮発性記憶部１４２によって記憶される。なお、データがメインメモリ１０４に収まらない場合には、一旦、ストレージ１０６に記憶してもよい。
【０１０８】
制御装置１００は、サポート装置２００からデータが転送されると、鍵ペアを生成する（２）。なお、この鍵ペアの生成は、図７で示した（１ａ）の処理を経た後の（２）の鍵ペア生成に相当する処理である。
【０１０９】
制御装置１００は、鍵ペアを生成すると、ストレージ１０６の不揮発性記憶部１６２によって鍵ペアを記憶する（３）。
【０１１０】
制御装置１００は、プロセッサ１０２の暗号化部１２６によって、メインメモリ１０４に記憶されたデータを参照する（４）。また、制御装置１００は、プロセッサ１０２の暗号化部１２６によって、ストレージ１０６に記憶された鍵ペアのうちの公開鍵を取得する（５）。そして、制御装置１００は、プロセッサ１０２の暗号化部１２６によって、公開鍵を用いてデータを暗号化する（６）。
【０１１１】
制御装置１００は、暗号化によって得られた暗号化データを、ストレージ１０６の不揮発性記憶部１６２によって記憶する（７）。なお、ストレージ１０６には、一または複数の暗号化データが記憶される。また、制御装置１００は、外部インターフェイス１１２を介して、暗号化データを外部ストレージ３００にも転送する（８）。外部ストレージ３００は、制御装置１００から転送された暗号化データを記憶する（９）。なお、外部ストレージ３００には、一または複数の暗号化データが記憶される。
【０１１２】
上述したような第１実施形態に係る暗号化工程を、図９に示すシーケンス図にまとめる。図９は、第１実施形態に係る制御システム１の暗号化工程を説明するためのシーケンス図である。
【０１１３】
図９に示すように、サポート装置２００からデータが転送されると（Ｓｂ２）、制御装置１００は、鍵ペアを生成するとともに（Ｓａ２）、生成した鍵ペアをストレージ１０６の不揮発性の記憶領域に記憶する（Ｓａ４）。
【０１１４】
次に、制御装置１００は、メインメモリ１０４に記憶されたデータを参照する（Ｓａ６）。そして、制御装置１００は、ストレージ１０６に記憶された鍵ペアのうちの公開鍵を用いてデータを暗号化する（Ｓａ８）。
【０１１５】
制御装置１００は、暗号化によって得られた暗号化データを、ストレージ１０６の不揮発性の記憶領域に記憶し（Ｓａ１０）、外部インターフェイス１１２を介して、暗号化データを外部ストレージ３００にも転送する（Ｓａ１２）。外部ストレージ３００は、制御装置１００から転送された暗号化データを記憶する（Ｓｃ２）。
【０１１６】
このようにして、制御装置１００は、サポート装置２００から提供されたデータを暗号化し、その暗号化データを不揮発性のストレージ１０６や外部ストレージ３００に記憶することができる。
【０１１７】
（ｆ３：第２実施形態に係る暗号化工程）
次に、本実施形態に係る暗号化工程のうち、第２実施形態に係る暗号化工程について説明する。図１０は、第２実施形態に係る制御システム１の暗号化工程を説明するための機能ブロック図である。
【０１１８】
図１０に示す第２実施形態に係る暗号化工程は、外部ストレージ６００がサポート装置２００から提供されたデータを記憶する例であり、外部ストレージ６００から外部インターフェイス１１２を介して制御装置１００のメインメモリ１０４にデータが転送される点のみにおいて、図８に示す第１実施形態に係る暗号化工程と異なり、その他の処理については、図８に示す例と同じである。このため、これ以上の詳細な説明は行わない。なお、外部ストレージ６００は、外部ストレージ３００と共通のストレージであってもよいし、外部ストレージ３００とは別のストレージであってもよい。
【０１１９】
（ｆ４：第３実施形態に係る暗号化工程）
次に、本実施形態に係る暗号化工程のうち、第３実施形態に係る暗号化工程について説明する。図１１は、第３実施形態に係る制御システム１の暗号化工程を説明するための機能ブロック図である。
【０１２０】
図１１に示す第３実施形態に係る暗号化工程は、サポート装置２００がデータを暗号化した上でその暗号化データを制御装置１００に転送する点において、図８に示す第１実施形態に係る暗号化工程や図１０に示す第２実施形態に係る暗号化工程と異なる。以下、具体的に説明する。
【０１２１】
図１１に示すように、制御装置１００は、ストレージ１０６に記憶された鍵ペアのうちの公開鍵を、外部インターフェイス１１２を介してサポート装置２００に転送する（１）。サポート装置２００は、公開鍵を用いてデータを暗号化する（２）。
【０１２２】
サポート装置２００は、暗号化によって得られた暗号化データを、外部インターフェイス１１２を介して、制御装置１００のストレージ１０６、および外部ストレージ３００に転送する（３）。
【０１２３】
制御装置１００は、ストレージ１０６の不揮発性記憶部１６２によって、暗号化データを記憶する（４）。また、外部ストレージ３００においても、暗号化データが記憶される（５）。
【０１２４】
上述したような第３実施形態に係る暗号化工程を、図１２に示すシーケンス図にまとめる。図１２は、第３実施形態に係る制御システム１の暗号化工程を説明するためのシーケンス図である。
【０１２５】
図１２に示すように、制御装置１００は、ストレージ１０６に記憶された鍵ペアのうちの公開鍵を、外部インターフェイス１１２を介してサポート装置２００に転送する（Ｓａ１０２）。
【０１２６】
一方、サポート装置２００は、公開鍵を用いてデータを暗号化する（Ｓｂ１０２）。そして、サポート装置２００は、暗号化によって得られた暗号化データを、外部インターフェイス１１２を介して、制御装置１００のストレージ１０６、および外部ストレージ３００に転送する（Ｓｂ１０４）。
【０１２７】
一方、制御装置１００は、ストレージ１０６に、暗号化データを記憶する（Ｓａ１０４）。また、外部ストレージ３００も同様に、暗号化データを記憶する（Ｓｃ１０２）。
【０１２８】
このようにして、サポート装置２００から提供されるデータが暗号化された上で制御装置１００のストレージ１０６や外部ストレージ３００に転送され、暗号化データがストレージ１０６や外部ストレージ３００に記憶される。
【０１２９】
（ｆ５：複合化工程）
次に、本実施形態に係る復号化工程について説明する。図１３は、本実施の形態に係る制御システム１の複合化工程を説明するための機能ブロック図である。
【０１３０】
図１３に示すように、制御装置１００が起動すると（１）、外部ストレージ３００に記憶された暗号化データが、外部インターフェイス１１２を介して制御装置１００に転送される（２）。制御装置１００は、プロセッサ１０２の複合化部１２８によって、ストレージ１０６に記憶された暗号化データ、あるいは、外部ストレージ３００から転送された暗号化データを参照する（３）。
【０１３１】
また、制御装置１００は、プロセッサ１０２の複合化部１２８によって、ストレージ１０６に記憶された鍵ペアのうちの秘密鍵を取得する（４）。
【０１３２】
制御装置１００は、暗号化データを秘密鍵で複合化する（５）。そして、制御装置１００は、複合化によって得られたデータを、メインメモリ１０４の揮発性記憶部１４２によって記憶する（６）。
【０１３３】
制御装置１００は、プロセッサ１０２の演算部１２２によって、メインメモリ１０４に記憶されたデータを参照し（７）、そのデータを用いて処理を実行する（８）。
【０１３４】
上述したような複合化工程を、図１４に示すシーケンス図にまとめる。図１４は、本実施の形態に係る制御システム１の複合化工程を説明するためのシーケンス図である。
【０１３５】
図１４に示すように、外部ストレージ３００は、外部インターフェイス１１２を介して、暗号化データを制御装置１００に転送する（Ｓｃ２０２）。一方、制御装置１００は、ストレージ１０６に記憶された暗号化データ、あるいは、外部ストレージ３００から転送された暗号化データを参照する（Ｓａ２０２）。
【０１３６】
制御装置１００は、ストレージ１０６に記憶された鍵ペアのうちの秘密鍵を用いて、暗号化データを複合化する（Ｓａ２０４）。そして、制御装置１００は、複合化によって得られたデータを、メインメモリ１０４の揮発性の記憶領域に記憶する（Ｓａ２０６）。
【０１３７】
制御装置１００は、メインメモリ１０４に記憶されたデータを参照し（Ｓａ２０８）、そのデータを用いて処理を実行する（Ｓａ２１０）。
【０１３８】
このようにして、制御装置１００は、ストレージ１０６に記憶された暗号化データを復号化して、制御対象を制御するための処理などに用いることができる。
【０１３９】
（ｆ６：鍵交換工程）
次に、本実施形態に係る鍵交換工程について説明する。図１５は、本実施の形態に係る制御システム１の鍵交換工程を説明するための機能ブロック図である。
【０１４０】
この鍵交換工程において、制御装置１００は、サポート装置から提供されるデータの暗号化および復号化に用いられる鍵ペアを交換する。また、制御装置１００は、鍵交換を行う際、鍵交換の作業経過を把握するために、リストを利用する。本実施の形態においては、このようなリストを、「旧暗号化データリスト」とも称する。図１６は、本実施の形態に係る制御システム１において旧暗号化データリストの更新例を説明するための図である。
【０１４１】
図１６に示すように、旧暗号化データリストには、複数の暗号化データのそれぞれに対応する項目として、「ＮＯ」、「名称」、および「フラグ」がまとめられている。「ＮＯ」の欄には、各暗号化データに対して割り当てられた番号が格納される。「名称」の欄には、各暗号化データの名称が格納される。「フラグ」の欄には、鍵交換の有無を示す情報が格納され、鍵交換前であれば「０」が、鍵交換後であれば「１」が格納される。
【０１４２】
図１６に示す例では、ｎ個の暗号化データに対応する各項目が旧暗号化データリストにまとめられている。このような旧暗号化データリストは、鍵交換工程において制御装置１００のプロセッサ１０２によって作成されてもよいし、暗号化工程において暗号化データが作成されるたびに制御装置１００のプロセッサ１０２によって作成または更新されてもよい。
【０１４３】
以下では、図１５に加えて、図１６に示す旧暗号化データリストの更新例を参照しながら、鍵交換工程について説明する。なお、以下の説明においては、鍵交換前の鍵ペアを旧鍵ペア（旧公開鍵，旧秘密鍵）と称し、鍵交換後の鍵ペアを新鍵ペア（新公開鍵，新秘密鍵）とも称する。
【０１４４】
図１５に示すように、制御装置１００は、既にストレージ１０６に旧鍵ペアが存在する状態で、ユーザ操作によって鍵を交換する旨の指令を受け付けると（１）、新たに鍵ペアを生成する（２）。なお、この新鍵ペアの生成は、図７で示した（１ｂ）の処理を経た後の（２）の鍵ペア生成に相当する処理である。
【０１４５】
制御装置１００は、新鍵ペアを生成すると、ストレージ１０６の不揮発性記憶部１６２によって新鍵ペアを記憶する（３）。
【０１４６】
制御装置１００は、プロセッサ１０２の複合化部１２８によって、ストレージ１０６に既に記憶されている旧暗号化データを参照する（４）。たとえば、図１６に示すように、旧暗号化データリストに含まれるＮＯ．１に対応する暗号化データ１を参照する。
【０１４７】
制御装置１００は、プロセッサ１０２の複合化部１２８によって、ストレージ１０６に記憶された旧鍵ペアのうち、暗号化データ１の旧秘密鍵を取得する（５）。そして、制御装置１００は、旧暗号化データ１を旧秘密鍵で複合化する（６）。なお、制御装置１００が稼働中であって、既に暗号化データを復号化している場合には、（４）〜（６）の処理を省略してもよい。このようにすれば、鍵交換に要する時間を短縮することができる。
【０１４８】
制御装置１００は、プロセッサ１０２の暗号化部１２６によって、ストレージ１０６に記憶された新鍵ペアのうちの新公開鍵を取得する（７）。そして、制御装置１００は、プロセッサ１０２の暗号化部１２６によって、新公開鍵を用いてデータを暗号化する（８）。
【０１４９】
制御装置１００は、暗号化によって得られた新暗号化データを、ストレージ１０６の不揮発性記憶部１６２によって不揮発性の記憶領域に記憶する（９）。このようにして、暗号化データ１の鍵交換が完了する。
【０１５０】
暗号化データ１の鍵交換が完了すると、制御装置１００は、暗号化データ１を削除するとともに、旧暗号化データリストにおいて暗号化データ１に対応する項目を更新する（１０）。たとえば、図１６の（Ａ），（Ｂ）に示すように、ＮＯ．１の暗号化データ１に対応する「フラグ」が「０」から「１」に更新される。
【０１５１】
次に、暗号化データが複数ある場合、制御装置１００は、上述したような（４）〜（１０）の処理を、未だ鍵交換していない暗号化データに対しても実行する。そうすると、たとえば、図１６の（Ｂ），（Ｃ）に示すように、ＮＯ．２の暗号化データ２に対応する「フラグ」が「０」から「１」に更新される。制御装置１００によって旧暗号化データリストに格納されている旧暗号化データの全てに対して（４）〜（１０）の処理が実行されると、図１６の（Ｄ）に示すように、全ての暗号化データに対応する「フラグ」が「１」になる。
【０１５２】
制御装置１００は、全ての旧暗号化データの鍵交換が完了すると、ストレージ１０６に記憶された旧鍵ペア（旧公開鍵，旧秘密鍵）を削除するとともに（１１）、旧暗号化データリストも削除する（１２）。
【０１５３】
上述したような鍵交換工程を、図１７に示すフローチャートにまとめる。図１７は、本実施の形態に係る制御装置１００の鍵交換工程を説明するためのフローチャートである。
【０１５４】
図１７に示すように、制御装置１００は、既にストレージ１０６に旧鍵ペアが存在する状態で、ユーザ操作によって鍵を交換する旨の指令を受け付けたか否かを判定する（Ｓａ３０２）。制御装置１００は、鍵交換指令を受け付けていない場合（Ｓａ３０２でＮＯ）、鍵交換工程の処理を終了する。
【０１５５】
一方、制御装置１００は、鍵交換指令を受け付けた場合（Ｓａ３０２でＹＥＳ）、新たに鍵ペアを生成する（Ｓａ３０４）。そして、制御装置１００は、ストレージ１０６の不揮発性の記憶領域に新鍵ペアを記憶する（Ｓａ３０６）。
【０１５６】
次に、制御装置１００は、ストレージ１０６に既に記憶されている旧暗号化データを参照する（Ｓａ３０８）。制御装置１００は、ストレージ１０６に記憶された旧鍵ペアのうちの旧秘密鍵を用いて、旧暗号化データを複合化する（Ｓａ３１０）。なお、制御装置１００が稼働中であって、既に暗号化データを復号化している場合には、（Ｓａ３０８）および（Ｓａ３１０）の処理を省略してもよい。このようにすれば、鍵交換に要する時間を短縮することができる。
【０１５７】
制御装置１００は、ストレージ１０６に記憶された新鍵ペアのうちの新公開鍵を用いて、Ｓａ３１０の処理で暗号化したデータを暗号化する（Ｓａ３１２）。制御装置１００は、暗号化によって得られた新暗号化データを、ストレージ１０６の不揮発性の記憶領域に記憶する（Ｓａ３１４）。
【０１５８】
制御装置１００は、一の暗号化データの鍵交換が完了すると、当該一の暗号化データを削除するとともに、旧暗号化データリストにおいて当該一の暗号化データに対応する項目を更新する（Ｓａ３１６）。
【０１５９】
制御装置１００は、全ての暗号化データの鍵交換が完了したか否かを判定する（Ｓａ３１８）。制御装置１００は、全ての暗号化データの鍵交換が完了していない場合（Ｓａ３１８でＮＯ）、再びＳａ３０８〜Ｓａ３１６の処理を繰り返す。
【０１６０】
一方、制御装置１００は、全ての暗号化データの鍵交換が完了した場合（Ｓａ３１８でＹＥＳ）、ストレージ１０６に記憶された旧鍵ペア（旧公開鍵，旧秘密鍵）を削除するとともに（Ｓａ３２０）、旧暗号化データリストも削除する（Ｓａ３２２）。その後、制御装置１００は、鍵交換工程の処理を終了する。
【０１６１】
このようにして、制御装置１００は、ストレージ１０６に記憶された一または複数の暗号化データの鍵ペアを交換することができる。
【０１６２】
以上、図８〜図１２に示す暗号化工程について説明したように、制御装置１００が生成した公開鍵を用いて、サポート装置２００から提供されるデータが暗号化されるため、サポート装置２００から提供されるデータがそのまま外部に漏洩することを防止することができる。また、図１３および図１４に示す復号化工程について説明したように、制御装置１００が処理する場合には、制御装置１００が生成した秘密鍵を用いて制御装置１００が暗号化データを復号化するとともに、復号化されたデータをアクセス不可能な揮発性の記憶領域に制御装置１００が記憶するため、復号化されたデータが外部に漏洩することも防止することができる。
【０１６３】
図８および図９に示す第１実施形態に係る暗号化工程、および図１０に示す第２実施形態に係る暗号化工程について説明したように、サポート装置２００から提供されるデータを制御装置１００が単独で暗号化するため、制御装置１００が生成した公開鍵を外部に転送する必要がなく、処理を複雑化することなくデータの漏洩を防止することができる。
【０１６４】
図１１および図１２に示す第３実施形態に係る暗号化工程について説明したように、サポート装置２００がデータを暗号化した状態で制御装置１００に転送するため、転送経路でデータが漏洩することを防止することができ、データの漏洩防止をより強化することができる。
【０１６５】
さらに、秘密鍵および公開鍵を生成するときにおける制御装置１００内の環境に依存して変化する値を用いて制御装置１００が秘密鍵および公開鍵を生成するため、データの漏洩防止をより強化することができる。
【０１６６】
また、同一ロットの複数の制御装置間においても、装置ごとで特有でかつ再現性のない因数を用いて秘密鍵および公開鍵が生成されるため、装置ごとに個別に異なる暗号化を行うことができ、データの漏洩防止をより強化することができる。
【０１６７】
特に、図１０に示す第２実施形態に係る暗号化工程のように、ユーザがサポート装置２００を用いて作成したデータを外部ストレージ６００に格納する場合においては、データが漏洩する可能性が高まる。しかしながら、このような場合であっても、暗号化された状態で外部ストレージ６００に格納され、しかも復号化するための秘密鍵は制御装置１００内の外部からアクセス不可能なストレージ１０６に記憶されているため、データの漏洩を防止することができる。
【０１６８】
図７に示す鍵生成工程について説明したように、外部からデータが転送されたこと、外部からの指令を受け付けたこと、および制御装置１００が起動したことの少なくともいずれか一方の条件が成立した場合に、制御装置１００が秘密鍵および公開鍵を生成するため、適切なタイミングで制御装置１００が秘密鍵および公開鍵を生成することができる。
【０１６９】
図１５〜図１７に示す鍵交換工程について説明したように、データの暗号化および復号化に用いられる鍵ペアを制御装置１００が交換することができるため、データの漏洩防止をより強化することができる。
【０１７０】
さらに、図１５〜図１７に示す鍵交換工程においては、旧暗号化データリストを用いることで、大量のデータが存在する場合であっても、制御装置１００が過不足なく鍵ペアを交換することができる。また、鍵交換が一旦中断されたとしても、旧暗号化データリストにおいて「フラグ」を参照することで鍵交換の有無を認識することができるため、電源環境が不安定な現場であっても、中断時の状態から制御装置１００が鍵ペアを交換することができる。
【０１７１】
＜Ｈ．データの照合＞
次に、データの照合について説明する。本実施の形態のように、データが暗号化された状態で制御装置１００に記憶されている場合、データの同一性を照合することが難しい。そこで、本実施の形態においては、暗号化される前の平文で記載されたデータ（以下、「オリジナルデータ」とも称する）のハッシュ値を比較することで同一性を照合する。以下、図１８を参照しながら、オリジナルデータのハッシュ値を用いたデータの照合について説明する。
【０１７２】
図１８は、本実施の形態に係る制御システム１においてデータの照合を説明するための模式図である。図１８に示す例は、サポート装置２００から複数の制御装置１００に対してオリジナルデータの更新を行うことを想定しており、その更新過程において、各制御装置１００に記憶された暗号化データに対応するオリジナルデータと、サポート装置２００に記憶された更新データとが比較される。
【０１７３】
具体的には、複数の制御装置１００ａ〜１００ｃはそれぞれ、オリジナルデータのハッシュ値を暗号化データに関連付けて予め各ストレージ１０６ａ〜１０６ｃに記憶する。一方、サポート装置２００は、オリジナルデータのハッシュ値の算出時と同じハッシュ関数を用いて算出された更新データのハッシュ値を予め記憶する。サポート装置２００は、更新データおよびハッシュ値を、各制御装置１００ａ〜１００ｃに転送する。
【０１７４】
そして、各制御装置１００ａ〜１００ｃは、サポート装置２００から転送された更新データのハッシュ値と、自身が記憶しているオリジナルデータのハッシュ値とを比較し、両者が同一であれば、既にデータが更新されていると判断してオリジナルデータの更新を行わず、両者が同一でなければ、未だデータが更新されていないと判断してオリジナルデータの更新を行う。
【０１７５】
このように、制御装置１００は、暗号化データに関連付けられたハッシュ値を照合することで、暗号化データを復号化することなくデータを照合することができるため、照合に要する時間を短縮することができる。
【０１７６】
なお、データの照合は、制御装置１００が実行するものに限らない。たとえば、各制御装置１００ａ〜１００ｃからサポート装置２００に対してオリジナルデータのハッシュ値を転送し、サポート装置２００が各制御装置１００ａ〜１００ｃから転送されたハッシュ値と自身が記憶している更新データのハッシュ値とを比較してもよい。そして、サポート装置２００は、両者が同一でない場合に、対象となる制御装置１００に対して更新データを転送してもよい。
【０１７７】
また、各制御装置１００ａ〜１００ｃは、オリジナルデータのハッシュ値を複数記憶してもよく、この場合、複数のハッシュ値は、互いに異なるハッシュ関数によって算出されてもよい。複数のハッシュ値を用いてデータの照合を行うことで、衝突頻度を極力抑えることができる。
【０１７８】
＜Ｉ．付記＞
以上のように、本実施の形態では以下のような開示を含む。
【０１７９】
（構成１）
制御対象を制御する制御装置（１００）においてサポート装置（２００）から提供されるデータの処理方法であって、
秘密鍵および公開鍵を前記制御装置が生成するステップ（Ｓａ２）と、
前記データに対する前記公開鍵による暗号化で得られた暗号化データを前記制御装置が取得するステップ（Ｓａ１０，Ｓａ１０４）と、
前記制御装置が処理する場合において、前記暗号化データに対して前記制御装置が前記秘密鍵で復号化するステップ（Ｓａ２０４）と、
前記暗号化データに対する前記秘密鍵による復号化で得られた前記データを、外部からアクセス不可能な揮発性の記憶領域に前記制御装置が記憶するステップ（Ｓａ２０６）と、
前記記憶領域に記憶された前記データを前記制御装置が参照して処理を実行するステップ（Ｓａ２０８，Ｓａ２１０）とを含む、データの処理方法。
【０１８０】
（構成２）
前記暗号化データは、前記サポート装置によって提供された前記データを、前記制御装置が前記公開鍵を用いて暗号化することで生成され（Ｓａ８）、
前記取得するステップは、前記制御装置が生成した前記暗号化データを取得するステップを含む、構成１に記載のデータの処理方法。
【０１８１】
（構成３）
前記暗号化データは、前記サポート装置が前記公開鍵を用いて前記データを暗号化することで生成され（Ｓｂ１０２）、
前記取得するステップは、前記サポート装置によって転送された前記暗号化データを取得することを含む、構成１に記載のデータの処理方法。
【０１８２】
（構成４）
前記制御装置は、外部から前記データが転送されたこと、外部からの指令、および当該制御装置が起動したことの少なくともいずれか一方の条件が成立した場合に、前記生成するステップを実行する、構成１〜構成３のいずれかに記載のデータの処理方法。
【０１８３】
（構成５）
前記公開鍵および前記秘密鍵の旧鍵ペアが既に記憶されている場合において新たに秘密鍵および公開鍵の新鍵ペアを前記制御装置が生成するステップ（Ｓａ３０４）と、
前記旧鍵ペアの前記公開鍵による暗号化で得られた前記暗号化データを前記制御装置が前記旧鍵ペアの前記秘密鍵で復号化するステップ（Ｓａ３１０）と、
前記旧鍵ペアの前記秘密鍵による復号化で得られた前記データを前記制御装置が前記新鍵ペアの前記公開鍵で暗号化するステップ（Ｓａ３１２）と、
前記新鍵ペアの前記公開鍵による暗号化で得られた暗号化データを前記制御装置が記憶するステップ（Ｓａ３１４）と、
前記旧鍵ペアを前記制御装置が削除するステップ（Ｓａ３２０）とを含む、構成１〜構成４のいずれかに記載のデータの処理方法。
【０１８４】
（構成６）
前記公開鍵および前記秘密鍵の旧鍵ペアが既に記憶されている場合において新たに秘密鍵および公開鍵の新鍵ペアを前記制御装置が生成するステップ（Ｓａ３０４）と、
前記旧鍵ペアの前記公開鍵による暗号化で得られた複数の前記暗号化データのうちから少なくとも一の前記暗号化データを前記制御装置が前記旧鍵ペアの前記秘密鍵で復号化するステップ（Ｓａ３１０）と、
前記旧鍵ペアの前記秘密鍵による復号化で得られた前記データを前記制御装置が前記新鍵ペアの前記公開鍵で暗号化するステップ（Ｓａ３１２）と、
前記新鍵ペアの前記公開鍵による暗号化で得られた暗号化データを前記制御装置が記憶するステップ（Ｓａ３１４）と、
前記旧鍵ペアの前記公開鍵による暗号化で得られた複数の前記暗号化データの全てが前記新鍵ペアの前記公開鍵で暗号化された場合に、前記旧鍵ペアを前記制御装置が削除するステップ（Ｓａ３２０）とを含む、構成１〜構成４のいずれかに記載のデータの処理方法。
【０１８５】
（構成７）
前記旧鍵ペアの前記公開鍵による暗号化で得られた複数の前記暗号化データのそれぞれに対応する項目をまとめたリストから、前記新鍵ペアの前記公開鍵による暗号化で得られた暗号化データに対応する項目を前記制御装置が削除するステップ（Ｓａ３１６）と、
前記旧鍵ペアの前記公開鍵による暗号化で得られた複数の前記暗号化データの全てが前記新鍵ペアの前記公開鍵で暗号化されたことによって全ての前記項目が削除された場合に、前記リストを前記制御装置が削除するステップ（Ｓａ３２２）とを含む、構成６に記載のデータの処理方法。
【０１８６】
（構成８）
前記制御装置は、前記秘密鍵および前記公開鍵を生成するときにおける当該制御装置内の環境に依存して変化する値を用いて当該秘密鍵および当該公開鍵を生成する、構成１〜構成７のいずれかに記載のデータの処理方法。
【０１８７】
（構成９）
前記制御装置は、前記データのハッシュ値を、当該データに対応する前記暗号化データに関連付けて記憶する、構成１〜構成８のいずれかに記載のデータの処理方法。
【０１８８】
（構成１０）
前記データは、前記制御装置が前記制御対象を制御するプログラムのソースコードである、構成１〜構成９のいずれかに記載のデータの処理方法。
【０１８９】
（構成１１）
制御対象を制御する制御装置（１００）と前記制御装置にデータを提供するサポート装置（２００）とを備える制御システム（１）であって、
前記制御装置は、
秘密鍵および公開鍵を生成する生成手段（１２４）と、
前記データに対する前記公開鍵による暗号化で得られた暗号化データを取得する取得手段（１１２，１２８）と、
処理する場合において、前記暗号化データに対して前記秘密鍵で復号化する復号化手段（１２８）と、
前記暗号化データに対する前記秘密鍵による復号化で得られた前記データを、外部からアクセス不可能な揮発性の記憶領域に記憶する記憶手段（１６２）と、
前記記憶領域に記憶された前記データを参照して処理を実行する実行手段（１２２）とを含む、制御システム。
【０１９０】
（構成１２）
サポート装置（２００）から提供されるデータを用いて制御対象を制御する制御装置（１００）であって、
秘密鍵および公開鍵を生成する生成手段（１２４）と、
前記データに対する前記公開鍵による暗号化で得られた暗号化データを取得する取得手段（１１２，１２８）と、
処理する場合において、前記暗号化データに対して前記秘密鍵で復号化する復号化手段（１２８）と、
前記暗号化データに対する前記秘密鍵による復号化で得られた前記データを、外部からアクセス不可能な揮発性の記憶領域に記憶する記憶手段（１６２）と、
前記記憶領域に記憶された前記データを参照して処理を実行する実行手段（１２２）とを含む、制御装置。
【０１９１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１９２】
１  制御システム、６  上位ネットワーク、１０  デバイス、１２  装置、１４  リレー群、１６  ユニット、１８  画像センサ、２０  カメラ、２２  サーボドライバ、２４  サーボモータ、９７  ワーク領域、９８  実行モジュール、９９  プログラム領域、１００，１００ａ，１００ｂ，１００ｃ  制御装置、１０２，２０２  プロセッサ、１０４  メインメモリ、１０６，１０６ａ，１０６ｃ，２０８  ストレージ、１０８  上位ネットワークコントローラ、１１０  フィールドネットワークコントローラ、１１２  外部インターフェイス、１２２  演算部、１２４  鍵生成部、１２６  暗号化部、１２８  複合化部、１３０  プロセッサバス、１４２  揮発性記憶部、１６２  不揮発性記憶部、２００  サポート装置、２０４  光学ドライブ、２０５  記録媒体、２０６  主記憶装置、２１２  コントローラ、２１４  ネットワークコントローラ、２１６  入力部、２１８  表示部、２２０  バス、２３０  サポートプログラム、２３４  プログラミングツール、３００，６００  外部ストレージ、４００  表示装置、５００  サーバ装置。
【図１】
2019149763.tif 000003
【図２】
2019149763.tif 000004
【図３】
2019149763.tif 000005
【図４】
2019149763.tif 000006
【図５】
2019149763.tif 000007
【図６】
2019149763.tif 000008
【図７】
2019149763.tif 000009
【図８】
2019149763.tif 000010
【図９】
2019149763.tif 000011
【図１０】
2019149763.tif 000012
【図１１】
2019149763.tif 000013
【図１２】
2019149763.tif 000014
【図１３】
2019149763.tif 000015
【図１４】
2019149763.tif 000016
【図１５】
2019149763.tif 000017
【図１６】
2019149763.tif 000018
【図１７】
2019149763.tif 000019
【図１８】
2019149763.tif 000020