(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】2021005231
(43)【公開日】20210114
(54)【発明の名称】制御システム、制御装置、および管理方法
(51)【国際特許分類】
   G05B 23/02 20060101AFI20201211BHJP
【FI】
   !G05B23/02 V
【審査請求】未請求
【請求項の数】9
【出願形態】OL
【全頁数】33
(21)【出願番号】2019118838
(22)【出願日】20190626
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
【住所又は居所】京都府京都市下京区塩小路通堀川東入南不動堂町801番地
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】渡辺 泰久
【住所又は居所】京都府京都市下京区塩小路通堀川東入南不動堂町801番地 オムロン株式会社内
(72)【発明者】
【氏名】廣部 直樹
【住所又は居所】京都府京都市下京区塩小路通堀川東入南不動堂町801番地 オムロン株式会社内
(72)【発明者】
【氏名】北村 安宏
【住所又は居所】京都府京都市下京区塩小路通堀川東入南不動堂町801番地 オムロン株式会社内
【テーマコード(参考)】
3C223
【Fターム(参考)】
3C223AA11
3C223BA05
3C223CC06
3C223DD06
3C223EA01
3C223FF04
3C223GG01
(57)【要約】
【課題】制御プログラムという知的財産の保護を図ることを一つの目的とする。
【解決手段】制御プログラムの実行開始要求を受けた制御装置において、共有情報を保持する2以上の制御装置に向けて照合の要求をし、照合の要求を受けた制御装置の各々において、自制御装置で生成した固有情報と、各制御装置が保持する共有情報のうちの少なくとも一の共有情報に含まれる自制御装置の固有情報とが照合され、その照合結果が所定の条件を満たす場合に、制御プログラムの実行が許可される。
【選択図】図1
【特許請求の範囲】
【請求項1】
互いに通信可能に構成された複数の制御装置を備える制御システムであって、
前記制御装置の各々は、
制御対象を制御するための制御プログラムを実行する制御エンジンと、
前記制御エンジンでの前記制御プログラムの実行可否を管理するセキュリティエンジンとを備え、
前記セキュリティエンジンの各々は、
自制御装置を構成する1または複数のデバイスの構成を示す固有情報を生成する生成手段と、
前記制御装置ごとに予め生成された第1の固有情報を少なくとも含む共有情報を、他の制御装置との間で、分散型台帳の形式で保持する保持手段と、
照合の要求に従って自制御装置により生成される第2の固有情報と、各セキュリティエンジンが保持する前記共有情報のうちの少なくとも一の共有情報に含まれる自制御装置の前記第1の固有情報とを照合する照合手段と、
前記制御プログラムの実行開始要求に応答して、2以上の照合手段の各々に前記照合の要求を行い、前記2以上の照合手段の各々から得られる照合結果に基づいて、当該制御プログラムの実行可否を決定する許可手段とを備える、制御システム。
【請求項2】
前記保持手段は、前記第1の固有情報と当該第1の固有情報を生成したセキュリティエンジンを特定可能な識別子とを対応付けた情報を一のトランザクションとして扱う、請求項1に記載の制御システム。
【請求項3】
前記照合手段は、自制御装置により生成される前記第2の固有情報と、自制御装置のセキュリティエンジンが保持する前記共有情報とを照合する、請求項1または請求項2に記載の制御システム。
【請求項4】
前記照合手段は、自制御装置により生成される前記第2の固有情報と、2以上のセキュリティエンジンの各々が保持する各共有情報とを照合し、各共有情報と照合した結果に基づいて、照合結果を得る、請求項1または請求項2に記載の制御システム。
【請求項5】
前記制御装置は、複数のデバイスにより構成され、
前記複数のデバイスは、前記制御エンジンを有する制御デバイスと、前記セキュリティエンジンを有するセキュリティデバイスとを含む、請求項1〜請求項4のうちいずれか1項に記載の制御システム。
【請求項6】
前記セキュリティデバイスは、当該セキュリティデバイスの基本機能を実現するシステムプログラムを備え、
前記セキュリティエンジンは、前記システムプログラムの実行により実現される機能である、請求項5に記載の制御システム。
【請求項7】
前記許可手段は、前記制御プログラムの実行開始要求に応答して、自制御装置の前記照合手段に前記照合の要求を行って得られる前記照合結果が予め定められた条件を満たした場合に、他の前記セキュリティエンジンに含まれる前記照合手段に前記照合の要求を行う、請求項1〜請求項6のうちいずれか1項に記載の制御システム。
【請求項8】
他の制御装置との間で制御システムを構成する制御装置であって、
制御対象を制御するための制御プログラムを実行する制御エンジンと、
前記制御エンジンでの前記制御プログラムの実行可否を管理するセキュリティエンジンとを備え、
前記セキュリティエンジンは、
自制御装置を構成する1または複数のデバイスの構成を示す固有情報を生成する生成手段と、
前記制御装置ごとに予め生成された第1の固有情報を少なくとも含む共有情報を、他の制御装置との間で、分散型台帳の形式で保持する保持手段と、
照合の要求に従って自制御装置により生成される第2の固有情報と、各セキュリティエンジンが保持する前記共有情報のうちの少なくとも一の共有情報に含まれる自制御装置の前記第1の固有情報とを照合する照合手段と、
前記制御プログラムの実行開始要求に応答して、2以上の照合手段の各々に前記照合の要求を行い、前記2以上の照合手段の各々から得られる照合結果に基づいて、当該制御プログラムの実行可否を決定する許可手段とを備える、制御装置。
【請求項9】
互いに通信可能に構成された複数の制御装置を備えた制御システムにおいて実行される管理方法であって、
複数の前記制御装置の各々において、自制御装置を構成する1または複数のデバイスの構成を示す第1の固有情報を生成するステップと、
複数の前記制御装置の間で、各制御装置で生成された前記第1の固有情報を少なくとも含む共有情報を分散型台帳の形式で保持するステップと、
制御対象を制御するための制御プログラムの実行開始要求を受けた制御装置において、前記共有情報を保持する2以上の制御装置に向けて照合の要求をするステップと、
前記照合の要求を受けた制御装置の各々において、自制御装置を構成する1または複数のデバイスの構成を示す第2の固有情報を生成するステップと、
前記照合の要求を受けた制御装置の各々において、自制御装置で生成した前記第2の固有情報と、各制御装置が保持する前記共有情報のうちの少なくとも一の共有情報に含まれる自制御装置の前記第1の固有情報とを照合するステップと、
前記照合の要求を受けた制御装置の各々から得られる照合結果が所定の条件を満たす場合に、前記制御プログラムの実行を許可するステップとを備える、管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、互いに通信可能に構成された複数の制御装置を備える制御システム、当該制御システムに含まれる制御装置、および、当該制御システムにおいて実行される管理方法に関する。
【背景技術】
【0002】
様々な製造現場において、PLC(Programmable Logic Controller)などの制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置または製造設備などに応じて設計された制御プログラムを実行する。
【0003】
近年では、既に製造現場での稼働実績のある制御装置から制御プログラムを抜き取り、別の製造現場内で新たな制御装置が作られて、抜き取られた制御プログラムが利用されるという問題が発生している。
【0004】
特開2008−065678号公報(特許文献1)は、このような問題に対処する一の方法を開示する。具体的には、特許文献1は、PLCが、制御プログラムを暗号化したプログラムが設備機器に固有なプログラムであるか否かを判断し、設備機器に固有なプログラムであれば、当該プログラムから制御プログラムを復号し、制御プログラムを実行して設備機器を制御する方法を開示する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−065678号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1で示された方法では、制御プログラムを実行するための固有の設備機器であるかのように設備機器の情報が改ざんされた場合には、制御プログラムの利用が許可されることとなる。すなわち、制御プログラムが対象とする設備機器の情報を改ざんすれば、制御プログラムを利用できるようになってしまい、比較的、容易に制御プログラムの利用が図られてしまう。すなわち、特許文献1で示された方法では、制御プログラムという知的財産の保護を図る上で改善の余地があった。
【0007】
本発明は、制御プログラムという知的財産の保護を図ることを一つの目的とする。
【課題を解決するための手段】
【0008】
本開示の一例に従うと、互いに通信可能に構成された複数の制御装置を備える制御システムが提供される。制御装置の各々は、制御対象を制御するための制御プログラムを実行する制御エンジンと、制御エンジンでの制御プログラムの実行可否を管理するセキュリティエンジンとを含む。セキュリティエンジンの各々は、自制御装置を構成する1または複数のデバイスの構成を示す固有情報を生成する生成手段と、制御装置ごとに予め生成された第1の固有情報を少なくとも含む共有情報を、他の制御装置との間で、分散型台帳の形式で保持する保持手段と、照合の要求に従って自制御装置により生成される第2の固有情報と、各セキュリティエンジンが保持する共有情報のうちの少なくとも一の共有情報に含まれる自制御装置の第1の固有情報とを照合する照合手段と、制御プログラムの実行開始要求に応答して、2以上の照合手段の各々に照合の要求を行い、2以上の照合手段の各々から得られる照合結果に基づいて、制御プログラムの実行可否を決定する許可手段とを含む。
【0009】
この構成によれば、セキュリティエンジンは、予め生成された第1の固有情報を、分散型台帳の形式で保持された改ざん困難な共有情報に含めて管理する。各セキュリティエンジンは、管理された第1の固有情報を基準に、制御プログラムの実行開始要求に応答して生成される第2の固有情報を照合し、その照合結果に応じて制御プログラムの実行可否を判定する。そのため、セキュリティエンジンによって、共有情報を保持することで管理された環境下とは異なる環境下での制御プログラムの起動を防ぐことができる。また、セキュリティエンジンは、2以上の照合手段の各々からの照合結果に基づいて制御プログラムの実行可否を判定するため、制御プログラムを実行するための実行環境だけでなく、隣接する制御装置の構成についても模倣しなければ制御プログラムを実行することができない。その結果、制御プログラムという知的財産の保護を図ることができる。
【0010】
上述の開示において、保持手段は、第1の固有情報と第1の固有情報を生成したセキュリティエンジンを特定可能な識別子とを対応付けた情報を一のトランザクションとして扱ってもよい。
【0011】
この開示によれば、第1の固有情報を含む情報を一のトランザクションとするため、照合手段が照合するときに、第1の固有情報を容易に参照することができる。
【0012】
上述の開示において、照合手段は、自制御装置により生成される第2の固有情報と、自制御装置のセキュリティエンジンが保持する共有情報とを照合してもよい。
【0013】
照合手段間で第2の固有情報の遣り取りが発生する場合、第2の固有情報に対する改ざんが行われて制御プログラムの実行が許可される虞があるものの、この開示によれば、照合手段は、他の制御装置の照合手段に第2の固有情報を送る必要がないため、固有情報に対するセキュリティを上げることができる。
【0014】
上述の開示において、照合手段は、自制御装置により生成される第2の固有情報と、2以上のセキュリティエンジンの各々が保持する各共有情報とを照合し、各共有情報と照合した結果に基づいて、照合結果を得てもよい。
【0015】
この開示によれば、複数の共有情報を照合先とするため、確実性の高い照合結果を得ることができる。
【0016】
上述の開示において、制御装置は、複数のデバイスにより構成されてもよい。複数のデバイスは、制御エンジンを有する制御デバイスと、セキュリティエンジンを有するセキュリティデバイスとを含んでもよい。
【0017】
この開示によれば、制御プログラムに対する変更の自由度を満たす必要のある制御エンジンと、セキュリティ上、変更の自由度が好まれないセキュリティエンジンとを、互いに異なるデバイスによって実現することで、各エンジンの特性に応じたデバイス設計を可能にする。
【0018】
上述の開示において、セキュリティデバイスは、セキュリティデバイスの基本機能を実現するシステムプログラムを含む。セキュリティエンジンは、システムプログラムの実行により実現される機能であってもよい。
【0019】
この開示によれば、セキュリティデバイスの機能がコピーされたときに、セキュリティプログラムの機能も併せてコピーされることになる。その結果、保持されている共有情報も併せてコピーされ、セキュリティプログラムが実行されていた環境以外で制御プログラムが実行されることを防止することができる。
【0020】
上述の開示において、許可手段は、制御プログラムの実行開始要求に応答して、自制御装置の照合手段に照合の要求を行って得られる照合結果が予め定められた条件を満たした場合に、他のセキュリティエンジンに含まれる照合手段に照合の要求を行ってもよい。
【0021】
この開示によれば、他の制御装置に向けて必要以上に照合要求をする必要がなくなるため、制御システムの全体として処理が簡素化される。
【0022】
本開示の別の一例によれば、他の制御装置との間で制御システムを構成する制御装置が提供される。制御装置は、制御対象を制御するための制御プログラムを実行する制御エンジンと、制御エンジンでの制御プログラムの実行可否を管理するセキュリティエンジンとを含む。セキュリティエンジンは、自制御装置を構成する1または複数のデバイスの構成を示す固有情報を生成する生成手段と、制御装置ごとに予め生成された第1の固有情報を少なくとも含む共有情報を、他の制御装置との間で、分散型台帳の形式で保持する保持手段と、照合の要求に従って自制御装置により生成される第2の固有情報と、各セキュリティエンジンが保持する共有情報のうちの少なくとも一の共有情報に含まれる自制御装置の第1の固有情報とを照合する照合手段と、制御プログラムの実行開始要求に応答して、2以上の照合手段の各々に照合の要求を行い、2以上の照合手段の各々から得られる照合結果に基づいて、制御プログラムの実行可否を決定する許可手段とを含む。
【0023】
この開示によれば、セキュリティエンジンは、予め生成された第1の固有情報を、分散型台帳の形式で保持された改ざん困難な共有情報に含めて管理する。セキュリティエンジンは、管理された第1の固有情報を基準に、制御プログラムの実行開始要求に応答して生成される第2の固有情報を照合し、その照合結果に応じて制御プログラムの実行可否を判定する。そのため、セキュリティエンジンによって、共有情報を保持することで管理された環境下とは異なる環境下での制御プログラムの起動を防ぐことができる。また、セキュリティエンジンは、2以上の照合手段の各々からの照合結果に基づいて制御プログラムの実行可否を判定するため、制御プログラムを実行するための実行環境だけでなく、隣接する制御装置の構成についても模倣しなければ制御プログラムを実行することができない。その結果、制御プログラムという知的財産の保護を図ることができる。
【0024】
本開示のさらに別の一例によれば、互いに通信可能に構成された複数の制御装置を備えた制御システムにおいて実行される管理方法が提供される。この管理方法は、複数の制御装置の各々において、自制御装置を構成する1または複数のデバイスの構成を示す第1の固有情報を生成するステップと、複数の制御装置の間で、各制御装置で生成された第1の固有情報を少なくとも含む共有情報を分散型台帳の形式で保持するステップと、制御対象を制御するための制御プログラムの実行開始要求を受けた制御装置において、共有情報を保持する2以上の制御装置に向けて照合の要求をするステップと、照合の要求を受けた制御装置の各々において、自制御装置を構成する1または複数のデバイスの構成を示す第2の固有情報を生成するステップと、照合の要求を受けた制御装置の各々において、自制御装置で生成した第2の固有情報と、各制御装置が保持する共有情報のうちの少なくとも一の共有情報に含まれる自制御装置の第1の固有情報とを照合するステップと、照合の要求を受けた制御装置の各々から得られる照合結果が所定の条件を満たす場合に、制御プログラムの実行を許可するステップとを含む。
【0025】
この構成によれば、予め生成された第1の固有情報が、分散型台帳の形式で保持された改ざん困難な共有情報に含めて管理される。制御プログラムの実行開始要求に応答して生成される第2の固有情報は、管理された第1の固有情報を基準に照合される。制御プログラムの実行可否は、照合結果に応じて判定される。そのため、共有情報を保持することで管理された環境下とは異なる環境下での制御プログラムの起動を防ぐことができる。また、2以上の照合手段の各々からの照合結果に基づいて制御プログラムの実行可否を判定するため、制御プログラムを実行するための実行環境だけでなく、隣接する制御装置の構成についても模倣しなければ制御プログラムを実行することができない。その結果、制御プログラムという知的財産の保護を図ることができる。
【発明の効果】
【0026】
本発明によれば、制御プログラムという知的財産の保護を図ることができる。
【図面の簡単な説明】
【0027】
【図1】一の実施形態に係る制御システム1Xを適用した場面の一例を示す図である。
【図2】制御システム1の全体構成を示す模式図である。
【図3】本実施の形態に従う制御装置10を構成する制御ユニット100のハードウェア構成例を示す模式図である。
【図4】本実施の形態に従う制御装置10を構成するセキュリティユニット200のハードウェア構成例を示す模式図である。
【図5】制御プログラム140の実行可否の判断方法の流れを示す図である。
【図6】制御ユニット100およびセキュリティユニット200の機能構成の一例を示すブロック図である。
【図7】共有情報30を示す図である。
【図8】新たなブロック40が生成される際に機能するセキュリティユニット200の機能構成を示す図である。
【図9】制御プログラムの実行開始要求を受けたときの処理手順を示すシーケンス図である。
【図10】制御プログラムの実行が許可される状況の一例を示す図である。
【図11】制御プログラムの実行が許可されない状況の一例を示す図である。
【図12】制御プログラムの実行開始要求を受けたときの処理手順の変形例を示すシーケンス図である。
【図13】システムハッシュ値の照合方法の変形例1の処理手順を示す図である。
【図14】システムハッシュ値の照合方法の変形例2の処理手順を示す図である。
【発明を実施するための形態】
【0028】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わせてもよい。
【0029】
§1.適用例
本実施の形態にかかる制御システムの概略について説明する。図1は、一の実施形態に係る制御システム1Xを適用した場面の一例を示す図である。図1を参照して、制御システム1Xは、互いに通信可能に構成された複数の制御装置10X(A),10X(B)を含む。以下では、制御装置10X(A)と制御装置10X(B)とを総じて制御装置10Xとも称する。図1中、(A)が付された符号は、制御装置10X(A)が備える構成を指す。(B)が付された符号は、制御装置10X(B)が備える構成を指す。
【0030】
制御装置10Xは、制御対象を制御するための制御プログラム140Xとを実行する制御エンジン142Xと、制御エンジン142Xでの制御プログラム140Xの実行可否を管理するセキュリティエンジン230Xとを含む。
【0031】
制御装置10Xは、複数のデバイスから構成されており、制御プログラム140Xが実行されることで各デバイスが制御され、各デバイスが制御されることで、制御対象である製造設備などが制御される。
【0032】
セキュリティエンジン230Xは、許可部232Xと、生成部234Xと、保持部236Xと、照合部238Xとを含む。
【0033】
許可部232Xは、制御エンジン142Xから制御プログラム140Xの開始要求を受けて、当該制御プログラム140Xの実行可否を判断する。
【0034】
生成部234Xは、制御装置10Xを構成する1または複数のデバイスの構成を示す固有情報を生成する。固有情報は、制御装置10Xを構成するデバイスによって規定される情報であって、制御装置10Xの構成が変わることに応じて変化する。構成は、デバイスの種類およびデバイスの接続方法のうちの少なくとも一方によって定義される。デバイスの種類の分類方法には、デバイスの機能による分類方法と、型式の違いによる分類方法と、シリアルナンバーによる分類方法とを含み得る。
【0035】
保持部236Xは、制御装置10Xごとに予め生成された固有情報を少なくとも含む共有情報30Xを、他の制御装置10Xとの間で、分散型台帳の形式で保持する。たとえば、保持部236X(A)に着目すると、保持部236X(A)は、制御装置10X(A),10X(B)ごとに予め生成された固有情報(A)および固有情報(B)を含む共有情報30Xを、制御装置10X(B)との間で、分散型台帳の形式で保持する。
【0036】
すなわち、制御装置10X(A)および制御装置10X(B)は、各々、共通の共有情報30Xを保持している。共有情報30Xは、分散型台帳の形式で保持されているため、改ざんが困難である。
【0037】
照合部238Xは、照合の要求に従って生成された一の制御装置10Xの固有情報と、共有情報30Xに含まれる当該制御装置10Xに対応する固有情報とを照合する。たとえば、制御装置10X(A)に着目すると、照合部238X(A)は、照合の要求がされたタイミングで生成された固有情報(A)と、共有情報30Xに含まれる固有情報(A)とを照合する。照合とは、一致するか否かを判定することを意味する。
【0038】
次に、図1に示すステップ1から順に、制御システム1Xにおいて実行される制御プログラムの実行可否の管理方法について説明する。なお、図1においては、ステップを単に「S]と示しており、以下、単に「S」と示す。
【0039】
S1 生成部234X(A)は、予め、自制御装置10X(A)の固有情報(A)を生成する。保持部236X(A)は、予め生成された固有情報(A)を含めた共有情報30Xを保持部236X(B)との間で保持する。
【0040】
同様に、生成部234X(B)は、予め、自制御装置10X(B)の固有情報(B)を生成する。保持部236X(B)は、予め生成された固有情報(B)を含めた共有情報30Xを保持部236X(A)との間で保持する。
【0041】
S2 許可部232X(A)は、制御プログラム140X(A)の開始要求を受ける。なお、図1に示す例では、制御エンジン142Xが、開始要求を行うものとしているが、セキュリティエンジン230Xが開始要求を受け付ける受付部を備えていてもよい。
【0042】
S3 許可部232X(A)は、照合部238X(A)および照合部238X(B)の各々に照合の要求を行う。なお、図1に示す例では、制御システムが3以上の制御システムで構成されている場合、許可部は、全制御装置に対して照合の要求を行う必要はなく、少なくとも共有情報を保持している2以上の制御装置に対して照合の要求を行えばよい。また、2以上の制御装置には、自制御装置を必ずしも含む必要はない。
【0043】
S4 照合部238X(A)は、照合の要求を受けて、生成部234X(A)に対して固有情報(A)の生成を要求する。同様に、照合部238X(B)は、照合の要求を受けて、生成部234X(B)に対して固有情報(B)の生成を要求する。
【0044】
S5 生成部234X(A)は、生成の要求を受けて、制御装置10X(A)の固有情報(A)を生成して、照合部238X(A)に提供する。同様に、生成部234X(B)は、生成の要求を受けて、制御装置10X(B)の固有情報(B)を生成して、照合部238X(B)に提供する。すなわち、生成部234Xは、照合の要求を受けたタイミングでも、固有情報を生成する。
【0045】
S6 照合部238X(A)は、共有情報30Xに含まれている、予め生成された固有情報(A)と、(5)において生成部234X(A)が照合の要求を受けたタイミングで生成した固有情報(A)とを照合して照合結果を得る。同様に、照合部238X(B)は、共有情報30Xに含まれている、予め生成された固有情報(B)と、(5)において生成部234X(B)が照合の要求を受けたタイミングで生成した固有情報(B)とを照合して照合結果を得る。
【0046】
S7 照合部238X(A)および照合部238X(B)の各々は、得られた照合結果を許可部232X(A)に対して提供する。許可部232X(A)は、提供された、各照合部238X(A),238X(B)からの照合結果に基づき、当該照合結果が所定の条件を満たす場合に制御プログラム140X(A)の実行を許可する。なお、所定の条件は、たとえば、全照合結果が一致を示していること、全照合結果のうちの所定割合の照合結果が一致を示していること、特定の制御装置から得られ照合結果が一致を示していることなど任意に設計され得る。
【0047】
S8 許可部232X(A)は、照合結果に基づいて判定した結果(許可または禁止)を、制御エンジン142X(A)に対して提供する。制御エンジン142X(A)は、許可部232X(A)の判定結果に従って、制御プログラム140X(A)を制御する。
【0048】
以上のように、本実施の形態において、各セキュリティエンジン230Xは、予め生成された固有情報を、分散型台帳の形式で保持された改ざん困難な共有情報30Xに含めて管理する。各セキュリティエンジン230Xは、管理された固有情報を基準に、制御プログラムを起動した際に生成した固有情報を照合し、その照合結果に応じて制御プログラムの実行可否を判定する。そのため、セキュリティエンジン230Xによって管理された環境下とは異なる環境下での制御プログラムの起動を防ぐことができる。
【0049】
また、本実施の形態においては、自制御装置の構成だけでなく、通信可能に接続された他の制御装置の構成についても照合対象としている。そのため、たとえば、悪意者が、制御プログラムの実行環境を模倣しようとした場合には、自制御装置のハードウェアとソフトウェアの双方をコピーするだけでなく、通信可能に接続された他の制御装置のハードウェアとソフトウェアの双方をコピーしなければならない。その結果、制御プログラムという知的財産を保護することができる。
【0050】
§2.具体例
<A.制御システム>
図2は、制御システム1の全体構成を示す模式図である。図2を参照して、制御システム1は、制御装置10A,10B,10Cを備える。以下では、制御装置10A,10B,10Cを互いに区別する必要がない場合、制御装置10A,10B,10Cは、単に制御装置10ともいう。また、制御ユニット100A,100B,100C、セキュリティユニット200A,200B,200C、I/Oユニット300A,300B,300Cおよび、通信カプラ400A,400B,400Cの各々についても、互いに区別する必要がない場合、単に、制御ユニット100、セキュリティユニット200、I/Oユニット300、および通信カプラ400ともいう。
【0051】
なお、図2に示す制御システム1は、3つの制御装置10から構成されているものの、2つの制御装置10から構成されていてもよく、また、4つ以上の制御装置10から構成されていてもよい。
【0052】
各制御装置10は、制御対象を制御する。制御対象は、生産工程を自動化するための種々の産業用機器を含み、製造装置や生産ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与える装置と、フィールドとの間で情報を遣り取りする入出力装置とを含む。なお、生産ライン全体を制御対象としてもよい。
【0053】
各制御装置10は、互いに、情報系ネットワーク2を介して通信可能に接続される。情報系ネットワーク2は、たとえば、EtherNET(登録商標)または、ベンダやOS(Operating System)の種類などに依存することなくデータ交換を実現することができるOPC UA(Object Linking and Embedding for Process Control Unified Architecture)などの通信規格に従ったネットワークである。
【0054】
制御装置10は、複数のデバイスから構成される。図2に示す例では、制御装置10は、制御ユニット100、セキュリティユニット200、I/O(Input/Output)ユニット300、通信カプラ400などから構成される。なお、以下では、制御装置10を構成する各ユニットおよび通信カプラを総じて「デバイス」とも称する。
【0055】
制御ユニット100は、制御装置10を構成する制御デバイスの一例であって、制御対象を制御するための制御プログラムを実行し、制御装置10において中心的な処理を実行する。
【0056】
セキュリティユニット200は、制御装置10を構成するセキュリティデバイスの一例であって、制御ユニット100での制御プログラムの実行可否を管理する。制御プログラムの実行可否の管理方法は、後述する。
【0057】
制御ユニット100とセキュリティユニット200との間は、たとえば、任意のデータ伝送路(例えば、PCI ExpressあるいはEtherNET(登録商標)など)を介して接続されている。
【0058】
I/Oユニット300は、制御装置10を構成するデバイスの一例であって、一般的な入出力処理に関するユニットである。I/Oユニット300は、各種センサ、各種スイッチ、エンコーダなどを含むIOデバイスから検出値を収集する。
【0059】
制御ユニット100とI/Oユニット300とは、内部バスを介して通信可能に接続されている。制御ユニット100は、I/Oユニット300により収集された検出値を用いて制御プログラムの演算を実行し、演算結果の値をI/Oユニット300に出力する。
【0060】
通信カプラ400は、フィールドネットワーク4を介して制御ユニット100と通信可能に接続される。通信カプラ400は、フィールドネットワーク4でのデータ伝送にかかる処理を行う。通信カプラ400は、たとえば、内部バスを介して1または複数のI/Oユニット300と通信可能に接続される。通信カプラ400に接続された1または複数のI/Oユニット300の各々により収集された検出値は、フィールドネットワーク4を介して制御ユニット100に出力される。
【0061】
フィールドネットワーク4としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、例えば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)−III、Powerlink、SERCOS(登録商標)−III、CIP Motionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット(登録商標)以外のフィールドネットワークを用いてもよい。例えば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP(登録商標)などを用いてもよい。
【0062】
制御装置10を構成する各デバイスは、識別データIDを有する。典型的には、識別データIDは、型式やシリアルナンバーなどであって、デバイスごとに予め設定されている情報である。
【0063】
なお、制御装置10を構成するデバイスは、図2に示したデバイスに限られない。制御装置10を構成するデバイスは、たとえば、電源を供給する電源ユニット、I/Oユニット300ではサポートしない機能を有する特殊ユニット、設備や機械などによって人の安全が脅かされることを防止するためのセーフティ機能を提供するセーフティユニットなどを含み得る。また、制御装置10を構成するデバイスは、たとえば、制御ユニット100または他のユニットでの制御演算によって得られる各種情報をオペレータへ提示するとともに、オペレータからの操作に従って、制御ユニット100または他のユニットに対して内部コマンドなどを生成するHMI(Human Machine Interface)を含み得る。
【0064】
<B.ハードウェア構成>
本実施の形態に従う制御装置10を構成する主なデバイスのハードウェア構成例について説明する。
【0065】
(b1.制御ユニット)
図3は、本実施の形態に従う制御装置10を構成する制御ユニット100のハードウェア構成例を示す模式図である。図3を参照して、制御ユニット100は、主たるコンポーネントとして、CPU(Central Processing Unit)やGPU(Graphical Processing Unit)などのプロセッサ102と、チップセット104と、主記憶装置106と、二次記憶装置108と、通信コントローラ110と、USBコントローラ112と、メモリカードインターフェイス114と、フィールドネットワークコントローラ116と、内部バスコントローラ118と、情報系ネットワークコントローラ120とを含む。
【0066】
プロセッサ102は、二次記憶装置108またはメモリカード115に格納された各種プログラムを読み出して、主記憶装置106に展開して実行することで、制御対象を制御するための制御演算、および、後述するような、制御プログラムの実行開始要求にかかる処理を実現する。
【0067】
主記憶装置106は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。二次記憶装置108は、例えば、HDD(Hard Disc Drive)またはSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。
【0068】
チップセット104は、プロセッサ102と各コンポーネントとの間のデータの遣り取りを仲介することで、制御ユニット100全体としての処理を実現する。
【0069】
二次記憶装置108には、制御ユニット100の基本的な機能を実現するためのシステムプログラム1082に加えて、設備や機械などの制御対象に応じて作成される制御プログラム140と、制御ユニット100を識別するための識別データIDとが格納されている。
【0070】
システムプログラム1082には、認証プログラム130が組み込まれている。認証プログラム130は、制御プログラム140を起動する際に実行されるプログラムであって、セキュリティユニット200に向けて、起動する制御プログラム140の実行の許可を要求するためのプログラムである。また、システムプログラム1082は、制御プログラム140を実行する制御エンジンとしての機能を提供する。
【0071】
制御プログラム140は、たとえば、基本的なアルゴリズムがプログラム開発会社によって作成された知的財産である。たとえば、ユーザは、制御装置10に応じてパラメータを設定することで、プログラム開発会社により提供された制御プログラム140を実行可能な環境を整える。
【0072】
通信コントローラ110は、セキュリティユニット200との間のデータの遣り取りを担当する。通信コントローラ110としては、例えば、PCI Expressあるいはイーサネット(登録商標)などに対応する通信チップを採用できる。
【0073】
USBコントローラ112は、USB接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。任意の情報処理装置は、たとえば、制御プログラム140の作成または編集、デバッグ、各種パラメータの設定などの機能をユーザに提供するサポート装置などを含む。
【0074】
メモリカードインターフェイス114は、記憶媒体の一例であるメモリカード115を着脱可能に構成される。メモリカードインターフェイス114は、メモリカード115に対して制御プログラム140や各種設定などのデータを書込み、あるいは、メモリカード115から制御プログラム140や各種設定などのデータを読出すことが可能になっている。
【0075】
フィールドネットワークコントローラ116は、フィールドネットワーク4を介した他の装置との間のデータの遣り取りを制御する。
【0076】
内部バスコントローラ118は、内部バスを介した他の装置(I/Oユニット300など)との間のデータの遣り取りを制御する。内部バスには、メーカ固有の通信プロトコルを用いてもよいし、いずれかの産業用ネットワークプロトコルと同一あるいは準拠した通信プロトコルを用いてもよい。
【0077】
情報系ネットワークコントローラ120は、情報系ネットワーク2を介した他の制御装置10との間のデータの遣り取りを制御する。
【0078】
図3には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、制御ユニット100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0079】
(b2.セキュリティユニット)
図4は、本実施の形態に従う制御装置10を構成するセキュリティユニット200のハードウェア構成例を示す模式図である。図4を参照して、セキュリティユニット200は、主たるコンポーネントとして、CPUやGPUなどのプロセッサ202と、チップセット204と、主記憶装置206と、二次記憶装置208と、通信コントローラ210と、USBコントローラ212と、メモリカードインターフェイス214と、情報系ネットワークコントローラ220とを含む。
【0080】
プロセッサ202は、二次記憶装置208またはメモリカード215に格納された各種プログラムを読み出して、主記憶装置206に展開して実行することで、制御ユニット100での制御プログラムの実行可否を管理する機能を実現する。主記憶装置206は、DRAMまたはSRAMなどの揮発性記憶装置などで構成される。二次記憶装置208は、例えば、HDDまたはSSDなどの不揮発性記憶装置などで構成される。
【0081】
チップセット204は、プロセッサ202と各コンポーネントとの間のデータの遣り取りを仲介することで、セキュリティユニット200全体としての処理を実現する。
【0082】
二次記憶装置208には、セキュリティユニット200の基本的な機能を実現するためのシステムプログラム2082に加えて、識別データID、および共有情報30が格納されている。
【0083】
システムプログラム2084には、セキュリティプログラム230が組み込まれている。セキュリティプログラム230は、制御装置10において実行される制御プログラム140の実行可否を管理するためのプログラムである。すなわち、セキュリティプログラム230は、制御プログラム140の実行可否を管理するセキュリティエンジンとしての機能を提供する。
【0084】
共有情報30は、制御システム1に含まれる各制御装置10を構成する複数のデバイスの構成を示す固有情報を管理するための情報である。共有情報30は、公知の分散型台帳技術を利用して制御システム1を構成する各制御装置10によって管理および共有される。共有情報30は、分散型台帳技術を利用しているため、改ざんされにくい情報である。共有情報30は、制御プログラム140の実行を許可するか否かを決定する際の基準となる情報として利用される。共有情報30および制御装置10を構成する複数のデバイスの構成を示す固有情報については、後述する。
【0085】
通信コントローラ210は、制御ユニット100との間のデータの遣り取りを担当する。通信コントローラ210としては、制御ユニット100に通信コントローラ210と同様に、例えば、PCI Expressあるいはイーサネット(登録商標)などに対応する通信チップを採用できる。
【0086】
USBコントローラ212は、USB接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。任意の情報処理装置は、たとえば、セキュリティプログラム230の設定などの機能をユーザに提供するサポート装置などを含む。
【0087】
メモリカードインターフェイス214は、記憶媒体の一例であるメモリカード215を着脱可能に構成される。メモリカードインターフェイス214は、メモリカード215に対してプログラムや各種設定などのデータを書込み、あるいは、メモリカード215からプログラムや各種設定などのデータを読出すことが可能になっている。
【0088】
情報系ネットワークコントローラ220は、情報系ネットワーク2を介した他の制御装置10との間のデータの遣り取りを制御する。情報系ネットワークコントローラ220は、イーサネット(登録商標)などの汎用的なネットワークプロトコルを採用してもよい。
【0089】
図4には、プロセッサ202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、セキュリティユニット200の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0090】
なお、図3および図4を参照して、制御装置10は、情報系ネットワーク2へ、制御ユニット100の情報系ネットワークコントローラ120を介して接続されていてもよく、また、セキュリティユニット200の情報系ネットワークコントローラ220を介して接続されていてもよい。本実施の形態において、制御装置10は、セキュリティユニット200の情報系ネットワークコントローラ220を介して接続されているものとして説明する。
【0091】
<C.制御プログラムの実行可否の判断方法の概略>
図5を参照して、制御プログラム140の実行可否の判断方法の概略を説明する。図5は、制御プログラム140の実行可否の判断方法の流れを示す図である。なお、図5に示す例では、図面を簡略にするため、各制御装置10を構成する制御ユニット100およびセキュリティユニット200以外のユニット(I/Oユニット300、通信カプラ400など)の記載を省略している。
【0092】
図5に示す例では、たとえば、制御ユニット100Aが制御プログラム140の実行を開始しようとしたものとする。この場合に、制御ユニット100Aは、まず、セキュリティユニット200Aに向けて制御プログラム140の実行可否判定を要求する(図中の(1))。
【0093】
制御ユニット100Aからの判定要求を受けて、共有情報30によって管理されている制御システム1内の各制御装置10の固有情報と、現状の各制御装置10から生成される固有情報とで、一致するか否かが照合される。
【0094】
具体的には、セキュリティユニット200Aは、識別データIDの収集を行い(図中の(2))、収集した識別データIDに基づいて固有情報としてシステムハッシュ値を生成する(図中の(3))。システムハッシュ値は、制御装置10を構成するデバイスのうち、セキュリティユニット200を除く他のデバイスの識別データIDを引数とし、公知のハッシュ関数を利用することで得られる。
【0095】
固有情報は、制御装置10を構成するデバイスによって規定される情報であって、制御装置10の構成が変わったことを特定することが可能な情報であればよく、識別データIDを利用して得られるシステムハッシュ値に限られない。たとえば、固有情報は、制御装置10内におけるデバイスの接続関係を規定したネットワークトポロジーを示す情報であってもよい。
【0096】
セキュリティユニット200Aは、識別データIDから得られた固有情報(システムハッシュ値)と共有情報30とを照合する(図中の(4))。具体的には、セキュリティユニット200Aは、(2)において収集した識別データIDから生成した制御装置10Aの固有情報と、共有情報30によって管理されている制御装置10Aの固有情報とを照合し、一致するか否かを判定する。
【0097】
図中の(4)において、新たに生成された固有情報と、共有情報30によって管理されている固有情報とを照合し、一致する場合、制御装置10Aは、正規に管理された制御装置10であることが保証される。一方、一致しない場合、制御装置10Aは、共有情報30によって管理されていない制御装置である可能性がある。
【0098】
続いて、セキュリティユニット200Aは、制御システム1に含まれる各制御装置10B,10Cに向けて、照合を要求する(図中の(5))。具体的には、セキュリティユニット200Aは、現状の制御装置10から得られる固有情報(システムハッシュ値)を生成するとともに、生成した固有情報(システムハッシュ値)と共有情報30によって管理された固有情報とを照合して一致するか否かを照合することを要求する。
【0099】
照合の要求を受けて、制御装置10Bのセキュリティユニット200Bは、識別データIDの収集を行い(図中の(1B))、収集した識別データIDに基づいてシステムハッシュ値を生成する(図中の(2B))。その後、制御装置10Bのセキュリティユニット200Bは、生成した制御装置10Bのシステムハッシュ値と共有情報30とを照合する(図中の(3B))。同様に、制御装置10Cのセキュリティユニット200Cは、図中の(1C)〜(3C)の処理を実行する。
【0100】
セキュリティユニット200Aは、各制御装置10B,10Cから、照合結果を取得する(図中の(6))。
【0101】
セキュリティユニット200Aは、(4)の処理で得られた制御装置10Aに対する照合結果、および(5)および(6)の処理で得られた制御装置10B,10Cに対する照合結果に基づいて、(1)で要求された制御プログラムの実行可否判定を行う。セキュリティユニット200Aは、これらの照合結果が所定の条件を満たす場合に、制御プログラムの実行を許可する。所定の条件としては、たとえば、制御装置10A〜10Cの各々の照合結果が一致している場合、または、所定割合一致している場合など任意に設計され得る。
【0102】
セキュリティユニット200Aは、制御ユニット100Aに向けて制御プログラムの実行可否を示す判定結果を通知する(図中の(8))。
【0103】
<E.機能構成>
図6は、制御ユニット100およびセキュリティユニット200の機能構成の一例を示すブロック図である。図6において、破線の矢印は、指示に関する流れを示す。実線の矢印は、情報の流れを示す。
【0104】
図6を参照して、制御ユニット100は、制御プログラム実行部142と、認証部132とを含む。これらの各機能は、制御ユニット100のプロセッサ102がシステムプログラム1082を実行することで実現する。
【0105】
制御プログラム実行部142は、制御プログラム140を実行するために機能する。制御プログラム実行部142は、制御プログラム140の実行開始要求を受けて、認証部132に対して、制御プログラム140の認証を要求する。認証とは、制御プログラム140の実行環境が、制御システム1の各制御装置10が保持する共有情報30によって管理されている環境であるか否かを認証することであって、制御プログラム140を実行してよい環境であるかを認証することである。
【0106】
認証部132は、判定要求部134と、識別データ送信部136と、識別データ収集部138とを含む。制御プログラム実行部142から認証の要求を受けると、判定要求部134は、セキュリティユニット200の許可部232に対して、制御プログラム140の実行可否判定を要求する。
【0107】
識別データ送信部136は、識別データ収集部138が収集した制御装置10を構成する各デバイスの識別データIDをセキュリティユニット200に送信する。
【0108】
識別データ収集部138は、セキュリティユニット200の生成部234からの要求を受けて、制御装置10を構成する各デバイスの識別データIDを収集する。識別データ収集部138は、制御プログラム140の実行可否を判定するときに加えて、新たな固有情報(システムハッシュ値)を共有情報30に登録するときにも、セキュリティユニット200から識別データIDの収集を要求される。なお、本実施の形態においては、識別データ収集部138は、制御装置10を構成するデバイスのうち、セキュリティユニット200を除くデバイスの各々から識別データIDを収集する。なお、固有情報であるシステムハッシュ値の生成に用いられる識別データIDに、セキュリティユニット200の識別データIDを含めてもよい。
【0109】
認証部132は、制御プログラム実行部142から制御プログラム140の認証が要求された後、セキュリティユニット200の許可部232から制御プログラム140の実行可否の判定結果を受ける。認証部132は、セキュリティユニット200から受けた判定結果に従った処理をする。認証部132は、実行を許可できる旨の判定結果を得た場合、制御プログラム実行部142に向けて、制御プログラム140の実行を開始するように通知する。一方、認証部132は、実行が許可できない旨の判定結果を得た場合、制御プログラム実行部142に向けて、制御プログラム140の実行を禁止するよう指示する。
【0110】
セキュリティユニット200は、許可部232と、生成部234と、保持部236と、照合部238とを含む。これらの各機能は、セキュリティユニット200のプロセッサ202がセキュリティプログラム230を実行することで実現する。
【0111】
許可部232は、判定部2322と照合要求部2324とを含む。判定部2322は、判定部2322が含まれるセキュリティユニット200の照合部238および他のセキュリティユニット200の照合部238から得られる照合結果に基づいて、制御プログラム140の実行を許可するか否かを判定し、判定結果を制御ユニット100の認証部132に通知する。
【0112】
照合要求部2324は、照合部238に対して、固有情報の照合を要求する。照合要求部2324は、照合要求部2324を含むセキュリティユニット200の照合部238に加えて、他の制御装置10の照合部238に対しても固有情報の照合を要求する。なお、照合要求部2324は、2以上の照合部238に対して固有情報の照合を要求すればよく、制御システム1に含まれるすべての制御装置10に含まれる照合部238に対して固有情報の照合を要求しなくともよい。また、固有情報の照合を要求する2以上の照合部238には、照合要求部2324を含む照合部238を必ず含める必要はない。
【0113】
生成部234は、固有情報であるシステムハッシュ値を生成する。生成部234は、収集要求部2342とシステムハッシュ値演算部2344とを含む。
【0114】
収集要求部2342は、照合部238から、または、保持部236からシステムハッシュ値の生成を要求されたときに機能する。照合部238は、照合を開始するときにシステムハッシュ値の生成を要求する。保持部236は、たとえば、制御装置10が正規に変更された場合など、制御装置10を構成するデバイスが変更されて、変更後の制御装置10の固有情報を共有情報30に新たに登録するときにシステムハッシュ値の生成を要求する。収集要求部2342は、制御ユニット100の識別データ収集部138に対して、識別データIDの収集を要求する。
【0115】
システムハッシュ値演算部2344は、識別データ送信部136から送られた各デバイスの識別データIDに基づいてシステムハッシュ値を生成する。システムハッシュ値演算部2344は、典型的には、公知のハッシュ関数に利用されるアルゴリズムを利用してシステムハッシュ値を生成する。システムハッシュ値演算部2344は、照合部238からシステムハッシュ値の生成が要求されている場合には、照合部238に生成したシステムハッシュ値を送る。また、システムハッシュ値演算部2344は、保持部236からシステムハッシュ値の生成が要求されている場合には、保持部236に生成したシステムハッシュ値を送る。
【0116】
保持部236は、制御システム1に含まれる各制御装置10の生成部234が生成した固有情報(システムハッシュ値)を少なくとも含む共有情報30を他の制御装置10との間で、分散型台帳の形式で保持する。保持部236は、登録部2362と、検索部2364とを備える。
【0117】
登録部2362は、制御システム1に含まれる複数の制御装置10のうちのいずれかの制御装置10を構成するデバイスが変更され、変更後の制御装置10の固有情報を新たに共有情報30内に登録し、当該固有情報の管理を開始するときに機能する。登録部2362は、公知の分散型台帳技術に従って、新たな固有情報の管理を開始する。
【0118】
また、登録部2362は、登録部2362が含まれるセキュリティユニット200を含む制御装置10を構成するデバイスが変更され、変更後の制御装置10の固有情報の管理を開始するときは、生成部234に向けて固有情報の生成を要求する。生成部234が登録部2362の要求を受けて生成した固有情報は、各制御装置10の保持部236との間で、分散型台帳技術を利用して共有情報30として管理される。
【0119】
検索部2364は、照合部238からの要求に基づいて、照合対象の制御装置10の固有情報を共有情報30から検索し、共有情報30に含まれる固有情報を照合部238に送る。
【0120】
照合部238は、照合要求部2324の要求を受けて、生成部234に対して、固有情報の生成を要求する。また、照合部238は、照合要求部2324の要求を受けて、検索部2364に対して、共有情報30に含まれる制御装置10の送信を要求する。照合部238は、システムハッシュ値演算部2344から送られた固有情報と、検索部2364から送られた共有情報30に含まれる固有情報とを照合し、照合した結果を判定部2322に送る。
【0121】
すなわち、照合部238は、予め生成されて共有情報30に登録されている固有情報と、照合の要求に従って生成された固有情報とを照合する。なお、本実施の形態においては、照合の要求に従って生成された固有情報の照合先を、自制御装置10の保持部236が保持する共有情報30とするものの、照合先は、他の制御装置10が保持する共有情報30であってもよい。また、照合部238は、2以上の共有情報30の各々を、照合の要求に従って生成された固有情報の照合先としてもよい。
【0122】
<F.共有情報>
図7および図8を参照して、共有情報30について説明する。図7は、共有情報30を示す図である。図8は、新たなブロック40が生成される際に機能するセキュリティユニット200の機能構成を示す図である。
【0123】
図7を参照して、共有情報30は、ひと繋ぎの複数のブロック40で構成される。各ブロック40は、あるタイミングにおける制御措置10の構成から得られるシステムハッシュ値48を少なくとも含む。ブロック40は、制御装置10を構成するデバイスに変更が生じたり、あるいは、新たな制御装置10が制御システム1に接続されたりした場合に生成される。各ブロック40内の情報は更新されることがなく、新たなブロック40は、最新のブロック40に関連して生成される。
【0124】
具体的には、各ブロック40は、ブロックハッシュ値42と、システム構成情報44と、ナンス46とを含む。システム構成情報44は、セキュリティユニット200の識別データIDと、当該セキュリティユニット200を含む制御装置10のシステムハッシュ値48とを含む。
【0125】
ブロックハッシュ値42は、前ブロックの情報を示すユニークな情報である。ブロックハッシュ値42は、たとえば、前ブロックの情報を引数とし、公知のハッシュ関数に従って得られた戻り値である。
【0126】
図7に示す例では、ブロック40−1から順にブロック40−nまでが共有情報30に含まれている状況で、制御装置10のデバイス構成に変更が生じ、新たなブロック40−n+1が共有情報30に追加されることを考える。ブロック40−n+1は、ブロックハッシュ値42−nを含む。ブロックハッシュ値42−nは、ブロック40−nの情報を引数とし、公知のハッシュ関数に従って得られた戻り値である。
【0127】
ナンス46は、ブロック40を新たに生成する際に生成される数値であって、ブロック40が生成される度に生成される数値である。ナンス46は、ブロック40ごとにユニークな値となる。
【0128】
図8を参照して、新たなブロック40が生成される際に機能するセキュリティユニット200の機能について説明する。なお、図6を参照して説明した機能については、再度の説明を省略する。また、図8においては、共有情報30内には、ブロック40−nまで格納されており、制御装置10Aを構成するデバイスが変更されたことに基づいて、新たにブロック40−n+1が格納される例を示している。
【0129】
上述のように、生成部234の収集要求部2342は、保持部236からのシステムハッシュ値48の生成要求を受けて、制御ユニット100Aに対して識別データIDの収集を要求する。システムハッシュ値演算部2344は、制御ユニット100Aから送られた、制御装置10Aを構成する各デバイスの識別データIDに基づいて、システムハッシュ値48を生成する。
【0130】
保持部236の登録部2362は、配布部236Aと、マイニング部236Bと、ブロックハッシュ値演算部236Cとを含む。システムハッシュ値演算部2344は、生成したシステムハッシュ値48を配布部236Aに送る。
【0131】
配布部236Aは、システムハッシュ値48と、セキュリティユニット200Aの識別データIDとからシステム構成情報44を生成し、セキュリティユニット200A,200B,200Cの各マイニング部236Bに配布する。
【0132】
マイニング部236Bは、他のセキュリティユニット200B,200Cのマイニング部236Bと協働してブロック40−n+1を生成する。
【0133】
ブロックハッシュ値演算部236Cは、共有情報30から最後に登録されたブロック40からブロックハッシュ値42を生成する。図8に示す例では、最後に登録されたブロック40は、ブロック40−nであるから、ブロック40−nに基づいてブロックハッシュ値42−nが生成される。
【0134】
マイニング部236Bは、システム構成情報44およびブロックハッシュ値42−nに基づいて、生成するブロック40から得られる情報が所定の条件を満たすようにナンス46を設定してブロック40を生成する。なお、このように、ナンス46を設定して所定の条件を満たすブロック40を生成する処理は、マイニングという。各セキュリティユニット200のマイニング部236Bがマイニングを行い、最も早くに所定の条件を満たすナンス46を見つけたマイニング部236Bが生成したブロック40を共有情報30に格納する。
【0135】
すなわち、システム構成情報44を生成した主体と、ブロック40を生成した主体とは、異なる場合がある。
【0136】
ブロック40は、各セキュリティユニット200の共有情報30に格納される。すなわち、各セキュリティユニット200の共有情報30は、改ざんされない限り、共通している。
【0137】
共有情報30に含まれる各ブロック40は、図7および図8を参照して説明したように、前のブロック40に基づいて得られるブロックハッシュ値42を含む。すなわち、一つのブロック40を改ざんした場合に、連鎖的に他のブロック40も改ざんする必要が生じることとなり、共有情報30の改ざんには、多くの労力を要する。すなわち、共有情報30は、改ざん困難な情報であるといえる。
【0138】
本実施の形態においては、このような改ざん困難な共有情報30に含まれるシステムハッシュ値48を照合対象とする。
【0139】
なお、複数の制御装置10間で分散型台帳の形式で共有情報30を保持することができればよく、一のブロック40を生成する方法は、図7および図8を参照して説明した方法に限られない。一のブロック40を生成する方法は、制御システム1ごとに任意に設計されるものであってもよい。
【0140】
たとえば、制御システム1に新たな制御装置10を参加させるときのセキュリティレベルに応じて、ブロック40の生成方法は選択されてもよい。たとえば、制御システム1に新たな制御装置10を参加させるときのセキュリティレベルが高い場合は、ブロック40を生成する過程のセキュリティレベル(透明性、厳格性)を下げることができる。一方、制御システム1に新たな制御装置10を参加させる自由度を上げる場合は、ブロック40を生成する過程のセキュリティレベル(透明性、厳格性)を上げる必要がある。
【0141】
具体的には、プライベート型またはコンソーシアム型のブロックチェーン技術を利用して分散型台帳の形式で共有情報30が保持されている場合、合意形成のハードルを下げ、合意形成に要する時間、すなわち、一のブロック40を生成して共有情報30に格納するまでに要する時間を短くできる。一方、パブリック型のブロックチェーン技術を利用して分散型台帳の形式で共有情報30が保持されている場合、制御システム1に新たな制御装置10を参加させる自由度が高いため、合意形成のハードルを上げる必要がある。
【0142】
<G.シーケンス図>
図9は、制御プログラムの実行開始要求を受けたときの処理手順を示すシーケンス図である。なお、以下では、シーケンスを単に「SQ」と記載する。なお、図9においては、制御ユニット100Aが制御プログラム140の実行開始要求をしたものとして説明する。
【0143】
SQ102において、制御ユニット100Aは、制御プログラムの開始要求をセキュリティユニット200Aに向けて通知する。
【0144】
SQ104において、セキュリティユニット200Aは、照合要求を制御装置10Bに向けて通知する。照合とは、現状の制御装置10の構成から生成されるシステムハッシュ値48を、共有情報30に予め格納されていたシステムハッシュ値48と照合することを意味し、「システムハッシュ値の照合」ともいう。
【0145】
SQ106において、セキュリティユニット200Aは、照合要求を制御装置10Cに向けて通知する。
【0146】
制御システム1を構成する各制御装置10A,10B,10Cは、システムハッシュ値の照合を行う(SQ108)。具体的には、SQ108Aにおいて、制御装置10Aは、システムハッシュ値の照合を行う。SQ108Bにおいて、制御装置10Bは、システムハッシュ値の照合を行う。SQ108Cにおいて、制御装置10Cは、システムハッシュ値の照合を行う。
【0147】
制御装置10Aを例に、システムハッシュ値の照合方法について説明する。SQ108A−1において、セキュリティユニット200Aは、識別データIDの収集を制御ユニット100Aに向けて要求する。
【0148】
SQ108A−2において、制御ユニット100Aは、制御装置10Aを構成する各デバイスの識別データIDをセキュリティユニット200Aに向けて送る。
【0149】
SQ108A−3において、セキュリティユニット200Aは、制御装置10Aを構成する各デバイスの識別データIDからシステムハッシュ値48を生成する。
【0150】
SQ108A−4において、セキュリティユニット200Aは、共有情報30内のシステムハッシュ値48と照合する。具体的には、セキュリティユニット200Aは、共有情報30内の最新のブロックから順に、セキュリティユニット200Aの識別データIDが格納されたブロック40を検索し、セキュリティユニット200Aの識別データIDが格納されたブロック40内のシステムハッシュ値48を取得する。セキュリティユニット200Aは、SQ108A−3において生成したシステムハッシュ値48と、共有情報30内から取得したシステムハッシュ値48とを照合して照合結果を得る。
【0151】
なお、図9において、制御装置10Bが実行するシステムハッシュ値の照合(SQ108B)および、制御装置10Cが実行するシステムハッシュ値の照合(SQ108C)は、いずれも、制御装置10Aが実行するシステムハッシュ値の照合(SQ108A)と共通するための、記載を省略している。
【0152】
具体的には、制御装置10Bのセキュリティユニット200Bは、識別データIDの収集を制御ユニット100Bに向けて要求する。制御ユニット100Bは、制御装置10Bを構成する各デバイスの識別データIDをセキュリティユニット200Bに向けて送る。セキュリティユニット200Bは、制御装置10Bを構成する各デバイスの識別データIDに基づいてシステムハッシュ値48を生成する。セキュリティユニット200Bは、共有情報30内の最新のブロックから順に、セキュリティユニット200Bの識別データIDが格納されたブロック40を検索し、セキュリティユニット200Bの識別データIDが格納されたブロック40内のシステムハッシュ値48を取得する。セキュリティユニット200Bは、制御プログラムの開始要求に応じてされた照合要求に従って生成したシステムハッシュ値48と、共有情報30内から取得したシステムハッシュ値48とを照合して照合結果を得る。
【0153】
同様に、制御装置10Cは、制御プログラムの開始要求に応じてされた照合要求に従い、制御装置10Cを構成する各デバイスの識別データIDを収集して、収集した識別データIDに基づいてシステムハッシュ値48を生成する。制御装置10Cのセキュリティユニット200Cは、共有情報30内からセキュリティユニット200Cの識別データIDが格納されたブロック40内のシステムハッシュ値48を取得する。セキュリティユニット200Cは、制御プログラムの開始要求に応じてされた照合要求に従って生成したシステムハッシュ値48と、共有情報30内から取得したシステムハッシュ値48とを照合して照合結果を得る。
【0154】
SQ110において、制御装置10Bは、照合結果をセキュリティユニット200Aに向けて送る。
【0155】
SQ112において、制御装置10Cは、照合結果をセキュリティユニット200Aに向けて送る。
【0156】
S114において、セキュリティユニット200Aは、制御プログラムの実行可否を判定する。具体的には、セキュリティユニット200Aは、SQ108Aによって得られる照合結果、SQ110において得られる照合結果、およびSQ112において得られる照合結果に基づき、これらの照合結果が所定の条件を満たす場合に、制御プログラムの実行を許可する。一方、セキュリティユニット200Aは、これらの照合結果が所定の条件を満たさない場合に、制御プログラムの実行を許可しない。
【0157】
所定の条件には、全照合結果が一致を示していることに限らず、全照合結果のうちの少なくとも一部の照合結果が一致を示していることも含み得る。
【0158】
S116において、セキュリティユニット200Aは、制御ユニット100Aに向けて判定結果を通知する。
【0159】
<H.制御プログラムの実行が許可される状況の一例>
図10を参照して、制御プログラムの実行が許可される状況について説明する。図10は、制御プログラムの実行が許可される状況の一例を示す図である。図10の「Serial No.」は、識別データIDである。「Hash(S)」は、システムハッシュ値48である。
【0160】
図10においては、制御装置10AのI/Oユニット300AをI/Oユニット300aに交換して、共有情報30が正常に更新されたものとする。まず、更新前の制御システム1について説明する。
【0161】
制御装置10Aを構成するセキュリティユニット200Aを除く各デバイス(制御ユニット100A,I/Oユニット300A…など)の識別データ(Serial No.)から得られるシステムハッシュ値48(Hash(S))は、「Abcde」である。このシステムハッシュ値48「Abcde」と、セキュリティユニット200Aの識別データID「2a2」とは、ブロック40−Aに登録されている。
【0162】
同様に、制御装置10Bについては、システムハッシュ値48「aBcde」と、セキュリティユニット200Bの識別データID「2b2」とは、ブロック40−Bに登録されている。制御装置10Cについては、システムハッシュ値48「abCde」と、セキュリティユニット200Cの識別データID「2c2」とは、ブロック40−Cに登録されている。
【0163】
この状況で、制御装置10AのI/Oユニット300AがI/Oユニット300aに交換され、共有情報30が正常に更新されると、共有情報30に新たにブロック40−Dが登録される。
【0164】
具体的には、I/Oユニット300Aの識別データは「3a3」であるのに対して、I/Oユニット300aの識別データは「3A3」である。そのため、制御装置10Aの識別データから算出されるシステムハッシュ値48は、「Abcde」とは異なる「1bcde」となる。このシステムハッシュ値48「1bcde」と、セキュリティユニット200Aの識別データID「2a2」とを含むブロック40−Dは、各セキュリティユニット200A〜200Cの各々に含まれる生成部234が互いに協働して生成されて共有情報30に登録される。このとき、共有情報30内に、新たにブロック40ーDが追加されるのであって、ブロック40−Aの情報が書き換えられることはない。
【0165】
図10に示すように、共有情報30が制御システム1内の構成の変更に従って正常に更新された場合、制御装置10A〜10Cから得られるシステムハッシュ値48と、共有情報30に登録されている制御装置10A〜10Cのシステムハッシュ値48とは一致する。そのため、図10に示すように、共有情報30が制御システム1内の構成の変更に従って正常に更新された場合、制御プログラムの実行は許可される。
【0166】
<I.制御プログラムの実行が許可されない状況の一例>
図11を参照して、制御プログラムの実行が許可されない状況について説明する。図11は、制御プログラムの実行が許可されない状況の一例を示す図である。
【0167】
図11においては、制御装置10Aを模倣した制御装置10A’と、制御装置10Bを模倣した制御装置10B’とからなる制御システム1aが新たに生成されたものとする。
【0168】
制御装置10Aを模倣する場合、制御プログラムを実行するために、制御装置10Aのハードウェアおよびソフトウェアの双方がコピーされる。同様に、制御装置10Bを模倣する場合、制御プログラムを実行するために、制御装置10Bのハードウェアおよびソフトウェアの双方がコピーされる。
【0169】
ソフトウェアがコピーされるということは、認証プログラム130およびセキュリティプログラム230の双方もコピーされることとなる。また、ソフトウェアのコピーにより、セキュリティプログラム230の実行によって保持されている共有情報30についてもコピーされることとなる。
【0170】
よって、制御装置10A’および制御装置10B’は、いずれも、共有情報30を保持する。ここで、共有情報30は、前述したとおり、改ざん困難な情報である。よって、共有情報30内には、ブロック40−A,40−B,40−Cが、制御装置10A,10B,10Cの最新の固有情報として格納されている。
【0171】
制御装置10A’は、制御装置10Aと共通のデバイスから構成されているものとする。同様に、制御装置10B’は、制御装置10Bと共通のデバイスから構成されているものとする。
【0172】
制御装置10A’のセキュリティユニット200A’の識別データIDは、セキュリティユニット200Aの識別データIDと同じとなるように改ざんされている。また、制御装置10B’のセキュリティユニット200B’の識別データIDは、セキュリティユニット200Bの識別データIDと同じとなるように改ざんされている。
【0173】
セキュリティユニット200以外のデバイス(制御ユニット100A’,100B’、I/Oユニット300A’,300B’など)の識別データIDは改ざんされていないものとする。
【0174】
この場合に、制御ユニット100A’が制御プログラムの実行開始を要求すると、セキュリティユニット200A’は、図9に示したシステムハッシュ値48の照合に関する処理を実行する。具体的には、セキュリティユニット200A’は、制御装置10A’のシステムハッシュ値48を生成し、生成したシステムハッシュ値48と共有情報30に格納されたセキュリティユニット200の識別データが「2a2」のシステムハッシュ値48とを比較する。
【0175】
図11に示す例では、セキュリティユニット200A’以外のデバイスの識別データIDは改ざんされておらず、制御装置10Aに含まれる各デバイスの識別データIDとは異なるものとなっている。そのため、制御装置10A’のシステムハッシュ値48は「1BCDE」となり、予め生成された共有情報30に格納されたセキュリティユニット200の識別データが「2a2」のシステムハッシュ値48「Abcde」と一致しない。
【0176】
また、セキュリティユニット200A’は、セキュリティユニット200B’に対してシステムハッシュ値の照合を要求する。セキュリティユニット200B’は、制御装置10B’のシステムハッシュ値48を生成し、生成したシステムハッシュ値48と共有情報30に格納されたセキュリティユニット200の識別データが「2b2」のシステムハッシュ値48とを比較する。
【0177】
図11に示す例では、セキュリティユニット200B’以外のデバイスの識別データIDは改ざんされておらず、制御装置10Bに含まれる各デバイスの識別データIDとは異なるものとなっている。そのため、制御装置10B’のシステムハッシュ値48は「A2CDE」となり、予め生成された共有情報30に格納されたセキュリティユニット200の識別データが「2b2」のシステムハッシュ値48「aBcde」と一致しない。
【0178】
セキュリティユニット200A’は、制御装置10A’および制御装置10B’のいずれについても、一致しないという結果のため、制御プログラムの実行を禁止する。
【0179】
また、セキュリティユニット200A’は、共有情報30内の制御装置10Cに関して、照合の要求の結果が返されないことにより、一致しなかったという結果を得るようにしてもよい。
【0180】
制御装置10Aによって管理された環境を実現するための制御プログラムの開発は、制御装置10Aを利用する会社とは別の会社が行うこともある。このような場合に、制御プログラムおよび制御プログラムを利用できる環境が容易に模倣されてしまうと、制御プログラムを開発する会社の知的財産を十分に保護することができない。
【0181】
本実施の形態においては、制御装置10Aを構成する各デバイスの識別データのコピーに加えて、制御装置10Aを含む制御システム1全体を模倣する必要がある。また、制御システム1全体を模倣する場合に、各制御装置10を構成するデバイスの識別データまで改ざんする必要がある。
【0182】
制御装置10を構成するデバイスは数十となることもあり、このような場合に、数十のデバイスすべてについて、当該デバイスの識別データを改ざんすることとなる。また、この作業を、制御システムに含まれる各制御装置について行う必要がある。そのため、制御プログラムによって管理される1つの制御装置を模倣するには、多くの労力を要することとなる。
【0183】
すなわち、本実施の形態にかかる制御システム1においては、制御プログラムを利用できる環境を容易に模倣することができないため、制御プログラムという知的財産を保護することができる。
【0184】
<J.変形例>
(j1.制御プログラムの実行開始要求を受けたときの処理手順の変形例)
図12は、制御プログラムの実行開始要求を受けたときの処理手順の変形例を示すシーケンス図である。なお、図12において、図9と共通するSQ番号は、共通の処理であるものとする。
【0185】
上記実施の形態においては、制御プログラムの開始要求があった場合に、各制御装置10に向けて照合要求がされた。なお、自制御装置の照合を行い、一致したことを条件に他の制御装置10に向けて照合要求をしてもよい。
【0186】
具体的には、セキュリティユニット200Aは、制御プログラムの開始要求を受けると(SQ102)、制御措置10Aのシステムハッシュ値の照合を行い(SQ104a)、システムハッシュ値48が一致する場合に(SQ106aにおいてYES)、各制御装置10B,10Cに向けて照合要求をする。なお、SQ104aの処理内容は、図9に示すSQ108Aの処理内容(SQ108−1〜SQ108A−4)と共通する。
【0187】
SQ106aにおいて、システムハッシュ値48が一致しない場合(SQ106aにおいてNO)、セキュリティユニット200Aは、各制御装置10B,10Cに照合要求をすることなく、制御プログラムの実行可否を判定する(SQ114)。この場合、システムハッシュ値48が一致しないため、制御プログラムの実行を許可しない旨が決定される。
【0188】
以上のように、自制御装置10の照合を行い、一致したことを条件に他の制御装置10に向けて照合要求をすることで、他の制御装置10に向けて必要以上に照合要求をする必要がなくなるため、制御システム1の全体として処理が簡素化される。
【0189】
なお、制御システム1内の制御装置10のうちの一部の制御装置を管理者に設定し、当該管理者からの照合結果に基づいて制御プログラムの実行可否を決定するようにしてもよい。制御システム1を構成する制御装置10の数が多くなると、照合に時間がかかる虞があるため、一部の管理者からの照合結果に基づいて制御プログラムの実行可否を決定するようにすることで、照合に要する時間を短縮することができる。なお、管理者に、実行可否の判定対象である制御プログラムを実行する制御装置10を必ずしも含める必要はない。また、2以上の制御装置が管理者に設定されていればよい。
【0190】
(j2.システムハッシュ値の照合方法の変形例1)
図13は、システムハッシュ値の照合方法の変形例1の処理手順を示す図である。なお、図13に示す処理手順は、図9に示すSQ108Aの変形例である。なお、図13において、図9と共通するSQ番号は、共通の処理であるものとする。以下、図9と異なる処理についてのみ説明する。すなわち、SQ108−1〜SQ108A−4の処理は、図9と共通しており、SQ108A−5以降から説明する。
【0191】
図9においては、自制御装置10のシステムハッシュ値48の照合を、自制御装置10が保持する共有情報30との間でのみ行った。なお、自制御装置10のシステムハッシュ値48の照合を、他の制御装置10が保持する共有情報30との間で行っても良い。
【0192】
具体的には、セキュリティユニット200Aは、SQ108A−5において、制御装置10Bに向けて、SQ108A−3で生成したシステムハッシュ値48を送信する。
【0193】
SQ108A−6において、制御装置10Bは、共有情報30内のシステムハッシュ値と照合する。具体的には、制御装置10Bのセキュリティユニット200Bは、共有情報30内の最新のブロックから順に、セキュリティユニット200Aの識別データIDが格納されたブロック40を検索し、セキュリティユニット200Aの識別データIDが格納されたブロック40内のシステムハッシュ値48を取得する。セキュリティユニット200Bは、SQ108A−5において送信されたSQ108A−3でセキュリティユニット200Aが生成したシステムハッシュ値48と、制御装置10Bが保持する共有情報30内から取得したシステムハッシュ値48とを照合して照合結果を得る。
【0194】
SQ108A−7において、制御装置10Bは、SQ108A−6で得られた照合結果をセキュリティユニット200Aに向けて送信する。
【0195】
SQ108A−8において、セキュリティユニット200Aは、制御装置10Cに向けて、SQ108A−3で生成したシステムハッシュ値48を送信する。
【0196】
SQ108A−9において、制御装置10Cは、共有情報30内のシステムハッシュ値と照合する。具体的には、制御装置10Cのセキュリティユニット200Cは、SQ108A−8において送信されたSQ108A−3でセキュリティユニット200Aが生成したシステムハッシュ値48と、制御装置10Cが保持する共有情報30内の制御装置10Aのシステムハッシュ値48とを照合して照合結果を得る。
【0197】
SQ108A−10において、制御装置10Cは、SQ108A−9で得られた照合結果をセキュリティユニット200Aに向けて送信する。
【0198】
すなわち、自制御装置10のシステムハッシュ値48を照合する場合に、自制御装置10が保持する共有情報10内のシステムハッシュ値48との間に加えて、他の制御装置10が保持する共有情報10内のシステムハッシュ値48との間とも一致するか否かの照合を行ってもよい。
【0199】
たとえば、制御装置10Aが不正に模倣されて、制御装置10A’が生成された場合に、制御装置10A’が保持する共有情報30が改ざんされて制御装置10A’のシステムハッシュ値48が共有情報30内に登録されたものとする。この場合に、制御装置10A’のセキュリティプログラムは、自制御装置10A’の共有情報30だけでなく、他の制御装置10との間でも照合を行うことで、他の制御装置10の共有情報30についても改ざんしなければ制御プログラムの実行が許可されないため、セキュリティレベルを上げることができる。
【0200】
(j3.システムハッシュ値の照合方法の変形例2)
図14は、システムハッシュ値の照合方法の変形例2の処理手順を示す図である。なお、図14に示す処理手順は、図9に示すSQ108Aの変形例である。なお、図14において、図9と共通するSQ番号は、共通の処理であるものとする。以下、図9と異なる処理についてのみ説明する。すなわち、SQ108−1〜SQ108A−3の処理は、図9と共通しており、SQ108A−4’以降から説明する。
【0201】
具体的には、セキュリティユニット200Aは、SQ108A−4’において、制御装置10Bに向けて、SQ108A−3で生成したシステムハッシュ値48を送信する。
【0202】
SQ108A−5’において、制御装置10Bは、共有情報30内のシステムハッシュ値と照合する。具体的には、制御装置10Bのセキュリティユニット200Bは、共有情報30内の最新のブロックから順に、セキュリティユニット200Aの識別データIDが格納されたブロック40を検索し、セキュリティユニット200Aの識別データIDが格納されたブロック40内のシステムハッシュ値48を取得する。セキュリティユニット200Bは、SQ108A−4’において送信されたSQ108A−3でセキュリティユニット200Aが生成したシステムハッシュ値48と、制御装置10Bが保持する共有情報30内から取得したシステムハッシュ値48とを照合して照合結果を得る。
【0203】
SQ108A−6’において、制御装置10Bは、SQ108A−5’で得られた照合結果をセキュリティユニット200Aに向けて送信する。
【0204】
SQ108A−7’において、セキュリティユニット200Aは、制御装置10Cに向けて、SQ108A−3で生成したシステムハッシュ値48を送信する。
【0205】
SQ108A−8’において、制御装置10Cは、共有情報30内のシステムハッシュ値と照合する。具体的には、制御装置10Cのセキュリティユニット200Cは、SQ108A−7’において送信されたSQ108A−3でセキュリティユニット200Aが生成したシステムハッシュ値48と、制御装置10Cが保持する共有情報30内の制御装置10Aのシステムハッシュ値48とを照合して照合結果を得る。
【0206】
SQ108A−9’において、制御装置10Cは、SQ108A−8’で得られた照合結果をセキュリティユニット200Aに向けて送信する。
【0207】
すなわち、照合結果は、自制御装置10が保持している共有情報30内のシステムハッシュ値48と照合することで得られるものに限らず、制御システム1内のセキュリティユニット200のうちの少なくとも一のセキュリティユニット200が保持する共有情報30内のシステムハッシュ値48と照合して得られるものであればよい。
【0208】
(j4.その他の変形例)
上記実施の形態において、制御プログラムを実行するプロセッサ102と、セキュリティプログラムを実行するプロセッサ202とは、互いに異なるデバイスが備えているものとした。なお、一のデバイスが、セキュリティプログラムを実行するプロセッサ202と、制御プログラムを実行するプロセッサ102とを備えていてもよい。
【0209】
上記実施の形態において、制御システム1は、複数の制御装置10のみから構成されている例を示した。なお、制御システム1は、複数の制御装置10に加えて、データベースシステム、製造実行システム(MES:Manufacturing Execution System)、または各制御装置10から情報を取得して、マクロ的またはミクロ的な分析を行う分析システムなどの中央管理装置を含み得る。また、情報系ネットワーク2にHMIが接続されていてもよい。
【0210】
§3.付記
以上のように、上記の実施の形態および変形例による開示は以下のような開示を含む。
【0211】
<構成1>
互いに通信可能に構成された複数の制御装置(10X,10)を備える制御システム(1X,1)であって、
前記制御装置の各々は、
制御対象を制御するための制御プログラムを実行する制御エンジン(142X,1082)と、
前記制御エンジンでの前記制御プログラムの実行可否を管理するセキュリティエンジン(230X,230)とを備え、
前記セキュリティエンジンの各々は、
自制御装置を構成する1または複数のデバイスの構成を示す固有情報を生成する生成手段(234X,234)と、
前記制御装置ごとに予め生成された第1の固有情報(48)を少なくとも含む共有情報(30X,30)を、他の制御装置との間で、分散型台帳の形式で保持する保持手段(236X,236)と、
照合の要求に従って自制御装置により生成される第2の固有情報(48)と、各セキュリティエンジンが保持する前記共有情報のうちの少なくとも一の共有情報に含まれる自制御装置の前記第1の固有情報とを照合する照合手段(238X,238)と、
前記制御プログラムの実行開始要求に応答して、2以上の照合手段の各々に前記照合の要求を行い、前記2以上の照合手段の各々から得られる照合結果に基づいて、当該制御プログラムの実行可否を決定する許可手段(232X,232)とを備える、制御システム。
【0212】
<構成2>
前記保持手段は、前記第1の固有情報と当該第1の固有情報を生成したセキュリティエンジンを特定可能な識別子(ID)とを対応付けた情報(44)を一のトランザクションとして扱う、構成1に記載の制御システム。
【0213】
<構成3>
前記照合手段は、自制御装置により生成される前記第2の固有情報と、自制御装置のセキュリティエンジンが保持する前記共有情報とを照合する(SQ108A,SQ104a)、構成1または構成2に記載の制御システム。
【0214】
<構成4>
前記照合手段は、自制御装置により生成される前記第2の固有情報と、2以上のセキュリティエンジンの各々が保持する各共有情報とを照合し、各共有情報と照合した結果に基づいて、照合結果を得る(SQ108A−4〜SQ108−10,SQ108A−4’〜 SQ108A−9’)、構成1または構成2に記載の制御システム。
【0215】
<構成5>
前記制御装置は、複数のデバイス(100,200,300,400)により構成され、
前記複数のデバイスは、前記制御エンジンを有する制御デバイス(100)と、前記セキュリティエンジンを有するセキュリティデバイス(200)とを含む、構成1〜構成4のうちいずれか1項に記載の制御システム。
【0216】
<構成6>
前記セキュリティデバイスは、当該セキュリティデバイスの基本機能を実現するシステムプログラム(2082)を備え、
前記セキュリティエンジンは、前記システムプログラムの実行により実現される機能である、構成5に記載の制御システム。
【0217】
<構成7>
前記許可手段は、前記制御プログラムの実行開始要求に応答して、自制御装置の前記照合手段に前記照合の要求を行って得られる前記照合結果が予め定められた条件を満たした場合に、他の前記セキュリティエンジンに含まれる前記照合手段に前記照合の要求を行う(SQ104a,SQ106a)、構成1〜構成6のうちいずれか1項に記載の制御システム。
【0218】
<構成8>
他の制御装置との間で制御システムを構成する制御装置(10X,10)であって、
制御対象を制御するための制御プログラムを実行する制御エンジン(142X,1082)と、
前記制御エンジンでの前記制御プログラムの実行可否を管理するセキュリティエンジン(230X,230)とを備え、
前記セキュリティエンジンは、
自制御装置を構成する1または複数のデバイスの構成を示す固有情報を生成する生成手段(234X,234)と、
前記制御装置ごとに予め生成された第1の固有情報(48)を少なくとも含む共有情報(30X,30)を、他の制御装置との間で、分散型台帳の形式で保持する保持手段(236X,236)と、
照合の要求に従って自制御装置により生成される第2の固有情報(48)と、各セキュリティエンジンが保持する前記共有情報のうちの少なくとも一の共有情報に含まれる自制御装置の前記第1の固有情報とを照合する照合手段(238X,238)と、
前記制御プログラムの実行開始要求に応答して、2以上の照合手段の各々に前記照合の要求を行い、前記2以上の照合手段の各々から得られる照合結果に基づいて、当該制御プログラムの実行可否を決定する許可手段(232X,232)とを備える、制御装置。
【0219】
<構成9>
互いに通信可能に構成された複数の制御装置を備えた制御システム(1X,1)において実行される管理方法であって、
複数の前記制御装置の各々において、自制御装置を構成する1または複数のデバイスの構成を示す第1の固有情報を生成するステップ(S1)と、
複数の前記制御装置の間で、各制御装置で生成された前記第1の固有情報を少なくとも含む共有情報を分散型台帳の形式で保持するステップ(S1)と、
制御対象を制御するための制御プログラムの実行開始要求を受けた制御装置において、前記共有情報を保持する2以上の制御装置に向けて照合の要求をするステップ(S2,S3)と、
前記照合の要求を受けた制御装置の各々において、自制御装置を構成する1または複数のデバイスの構成を示す第2の固有情報を生成するステップ(S4,S5)と、
前記照合の要求を受けた制御装置の各々において、自制御装置で生成した前記第2の固有情報と、各制御装置が保持する前記共有情報のうちの少なくとも一の共有情報に含まれる自制御装置の前記第1の固有情報とを照合するステップ(S6)と、
前記照合の要求を受けた制御装置の各々から得られる照合結果が所定の条件を満たす場合に、前記制御プログラムの実行を許可するステップ(S7,S8)とを備える、管理方法。
【0220】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組み合わせても、実施することが意図される。
【符号の説明】
【0221】
1,1X,1a 制御システム、2 情報系ネットワーク、4 フィールドネットワーク、10,10X 制御措置、30,30X 共有情報、40 ブロック、42 ブロックハッシュ値、44 システム構成情報、46 ナンス、48 システムハッシュ値、100 制御ユニット、102,202 プロセッサ、104,204 チップセット、106,206 主記憶装置、108,208 二次記憶装置、110,210 通信コントローラ、112,212 USBコントローラ、114,214 メモリカードインターフェイス、115,215 メモリカード、116 フィールドネットワークコントローラ、118 内部バスコントローラ、120,220 情報系ネットワークコントローラ、130 認証プログラム、132 認証部、134 判定要求部、136 識別データ送信部、138 識別データ収集部、140,140X 制御プログラム、142 制御プログラム実行部、142X 制御エンジン、200 セキュリティユニット、230 セキュリティプログラム、230X セキュリティエンジン、232,232X 許可部、234,234X 生成部、236,236X 保持部、236A 配布部、236B マイニング部、236C ブロックハッシュ値演算部、238,238X 照合部、300 I/Oユニット、400 通信カプラ、1082,2082 システムプログラム、2322 判定部、2324 照合要求部、2342 収集要求部、2344 システムハッシュ値演算部、2362 登録部、2364 検索部、ID 識別データ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】