(57)【要約】【課題】制御装置に格納されている制御に係るプログラムの不正複製を防止する。【解決手段】制御システムは、制御対象の制御に係るプログラムを実行する制御装置と、制御装置と通信可能なセキュリティ装置とを備え、セキュリティ装置は、鍵を格納する鍵格納部と、暗号化済みのプログラムを鍵で復号する復号化部と、を含み、プログラムが実行されるとき、復号を実施して復号済みプログラムを制御装置に転送する。制御装置は、セキュリティ装置から転送される復号済みプログラムを記憶する揮発性記憶部を備える。【選択図】図６
2020166317.tif 000002
【特許請求の範囲】
【請求項１】
制御対象の制御に係るプログラムを実行する制御装置と、
前記制御装置と通信可能なセキュリティ装置と、を備え、
前記セキュリティ装置は、
鍵を格納する鍵格納部と、
暗号化済みの前記プログラムを前記鍵で復号する復号化部と、を含み、
前記プログラムが実行されるとき、前記復号を実施して復号済みプログラムを前記制御装置に転送し、
前記制御装置は、
前記セキュリティ装置から転送される前記復号済みプログラムを記憶する揮発性記憶部を、含む、制御システム。
【請求項２】
制御対象の制御に係るプログラムを実行する制御装置と通信可能なセキュリティ装置であって、
前記制御装置は、
前記セキュリティ装置から転送されるプログラムを記憶する揮発性記憶部を含み、
前記セキュリティ装置は、
鍵を格納する鍵格納部と、
暗号化済みのプログラムを前記鍵で復号する復号化部と、を含み、
前記プログラムが実行されるとき、前記復号を実施して復号済みプログラムを前記制御装置に転送する、セキュリティ装置。
【請求項３】
前記鍵格納部は、前記セキュリティ装置とは異なる装置による読出しが禁止される読出禁止領域を有し、
前記鍵は、前記読出禁止領域に格納される、請求項２に記載のセキュリティ装置。
【請求項４】
前記暗号化済みのプログラムは、前記セキュリティ装置または前記制御装置に備えられる不揮発性記憶部に格納される、請求項２または３に記載のセキュリティ装置。
【請求項５】
前記セキュリティ装置または前記制御装置は、外部の情報処理装置と通信可能であり、
前記情報処理装置は、前記暗号化済みのプログラムを、前記セキュリティ装置または前記制御装置に転送する、請求項４に記載のセキュリティ装置。
【請求項６】
前記セキュリティ装置は、外部の情報処理装置と通信可能であり、
前記セキュリティ装置は、
前記暗号化済みのプログラムを生成する暗号化部と、
前記情報処理装置から転送される、所定の鍵で暗号化されたプログラムを復号する第１復号化部と、を含み、
前記暗号化部は、
前記所定の鍵で暗号化されたプログラムを前記第１復号化部により復号した上で、前記鍵格納部の鍵で暗号化することにより前記暗号化済みのプログラムを生成する、請求項４に記載のセキュリティ装置。
【請求項７】
前記セキュリティ装置は、
前記所定の鍵で暗号化されたプログラムを前記第１復号化部により復号した上で、前記暗号化部による暗号化が完了するまで保持する、請求項６に記載のセキュリティ装置。
【請求項８】
前記セキュリティ装置は、さらに、
前記暗号化部により生成される前記暗号化済みのプログラムを、自装置の前記不揮発性記憶部に格納する、または前記制御装置に転送する、請求項６または７に記載のセキュリティ装置。
【請求項９】
前記鍵格納部の前記鍵は、秘密鍵または共通鍵を含む、請求項２から８のいずれか１項に記載のセキュリティ装置。
【請求項１０】
対象を制御する制御装置が実行する制御に係るプログラムのセキュリティを設定する方法であって、
前記制御装置はセキュリティ装置と通信可能であり、
前記方法は、
前記プログラムが実行されるとき、
前記セキュリティ装置が、暗号化済みの前記プログラムを当該セキュリティ装置が保持する鍵で復号した上で、前記制御装置に転送するステップと、
前記制御装置が、前記セキュリティ装置から転送される前記復号がなされたプログラムを当該制御装置が備える揮発性記憶部に格納するステップと、を備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、制御システム、セキュリティ装置および方法に関する。
【背景技術】
【０００２】
ＦＡ（Factory  Automation）の制御装置をインターネットまたはクラウド端末に接続する環境が提供されている。この環境では、工場外の端末またはネットワークに制御装置を接続することに関して、ノウハウ流出を含む各種インシデントへの対処を含むセキュリティ対策が実施されている。
【０００３】
また、工場では、入出管理により、認証された者のみに入出を許可することにより、制御装置のプログラムを含む各種データの不正な複製、または不正持ち出しなどのインシデントへの対処がとられている。この点に関して、特許文献１（特開平６−１１０５１２号公報）では、シーケンスプログラムの不正な複製を防止するために、プログラマブルコントローラにおいて、シーケンスプログラムを暗号化してＲＯＭに格納する暗号化手段と、ＲＯＭに格納された情報を復号化してプロセッサにより実行させる復号化手段と、暗号化および復号化の際の暗号鍵および復号鍵を設定する鍵設定手段とを備える。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−１１０５１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、シーケンスプログラムと同様に鍵もプログラマブルコントローラに格納されることから、鍵が盗まれると簡単に復号および複製がなされてしまう。
【０００６】
本開示は、上述したような課題を解決することを一つの目的とし、制御装置に格納されている制御に係るプログラムの不正な複製を防止できる制御システム、セキュリティ装置および方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本開示にかかる制御システムは、制御対象の制御に係るプログラムを実行する制御装置と、制御装置と通信可能なセキュリティ装置と、を備え、セキュリティ装置は、鍵を格納する鍵格納部と、暗号化済みのプログラムを鍵で復号する復号化部と、を含み、プログラムが実行されるとき、復号を実施して復号済みプログラムを制御装置に転送する。制御装置は、セキュリティ装置から転送される復号済みプログラムを記憶する揮発性記憶部を、含む。
【０００８】
上述の開示によれば、制御装置が備える不揮発性記憶部に復号済みプログラムが格納されるときは、制御装置で制御プログラムが実行されるときに限定されるので、第３者による制御装置の復号済みプログラムの不正複製を防止することができる。
【０００９】
また、復号のための鍵は、制御装置とは別のセキュリティ装置に格納されるので、第３者は、鍵を入手するには、制御装置とは別のセキュリティ装置を取得する必要があり、鍵が不正複製されるのを防止でき、鍵を用いた上記の復号済みプログラムの不正複製をさらに困難化できる。
【００１０】
本開示にかかるセキュリティ装置は、制御対象の制御に係るプログラムを実行する制御装置と通信可能なセキュリティ装置であって、制御装置は、セキュリティ装置から転送されるプログラムを記憶する揮発性記憶部を含む。セキュリティ装置は、鍵を格納する鍵格納部と、暗号化済みのプログラムを鍵で復号する復号化部と、を含み、プログラムが実行されるとき、復号を実施して復号済みプログラムを制御装置に転送する。
【００１１】
上述の開示によれば、制御装置が備える不揮発性記憶部に復号済みプログラムが格納されるときは、制御装置で制御プログラムが実行されるときに限定されるので、第３者による制御装置の復号済みプログラムの不正複製を防止することができる。
【００１２】
また、復号のための鍵は、制御装置とは別のセキュリティ装置に格納されるので、第３者は、鍵を入手するには、制御装置とは別のセキュリティ装置を取得する必要があり、鍵が不正複製されるのを防止できて、鍵を用いた上記の復号済みプログラムの不正複製をさらに困難化できる。
【００１３】
上述の開示において、鍵格納部は、セキュリティ装置とは異なる装置による読出しが禁止される読出禁止領域を有し、鍵は、読出禁止領域に格納される。
【００１４】
上述の開示によれば、鍵は読出禁止領域に格納されるので、鍵が不正入手されて、不正入手された鍵で復号済みプログラムが取得されるのを防止することができる。
【００１５】
上述の開示において、暗号化済みのプログラムは、セキュリティ装置または制御装置に備えられる不揮発性記憶部に格納される。
【００１６】
上述の開示によれば、復号済みプログラムを生成するための暗号化済みのプログラムはセキュリティ装置または制御装置が備える不揮発性記憶部に格納しておくことができるので、不揮発性記憶部の暗号化済みのプログラムを復号化した上で、不揮発性記憶部にリストアすることができる。
【００１７】
上述の開示において、セキュリティ装置または制御装置は、外部の情報処理装置と通信可能であり、情報処理装置は、暗号化済みのプログラムを、セキュリティ装置または制御装置に転送する。
【００１８】
上述の開示によれば、セキュリティ装置または制御装置は、暗号化済みのプログラムを外部の情報処理装置から取得できる。
【００１９】
上述の開示において、セキュリティ装置は、外部の情報処理装置と通信可能であり、セキュリティ装置は、暗号化済みのプログラムを生成する暗号化部と、情報処理装置から転送される、所定の鍵で暗号化されたプログラムを復号する第１復号化部と、を含み、暗号化部は、所定の鍵で暗号化されたプログラムを第１復号化部により復号した上で、鍵格納部の鍵で暗号化することにより暗号化済みのプログラムを生成する。
【００２０】
上述の開示によれば、セキュリティ装置は、情報処理装置から転送される所定の鍵で暗号化されたプログラムから、暗号化済みプログラムを取得できる。この場合、情報処理装置から転送されるプログラムは平文ではなく所定の鍵で暗号化されているので、転送途中における平文プログラムの不正複製を防止できる。
【００２１】
上述の開示において、セキュリティ装置は、所定の鍵で暗号化されたプログラムを第１復号化部により復号した上で、暗号化部による暗号化が完了するまで保持する。
【００２２】
上述の開示によれば、セキュリティ装置は、復号されたプログラムを、暗号化部が暗号化を完了するまで保持するので、完了できないときは、保持されている復号されたプログラムを用いて暗号化をリトライすることができる。
【００２３】
上述の開示において、セキュリティ装置は、さらに、暗号化部により生成される暗号化済みのプログラムを、自装置の不揮発性記憶部に格納する、または制御装置に転送する。
【００２４】
上述の開示によれば、セキュリティ装置は、復号済みプログラムを生成するための暗号化済みプログラムの入手ルートを、自装置または制御装置において確保することができる。
【００２５】
上述の開示において、鍵格納部の鍵は、秘密鍵または共通鍵を含む。したがって、復号に用いる鍵を多様化することができる。
【００２６】
本開示において、対象を制御する制御装置が実行する制御に係るプログラムのセキュリティを設定する方法が提供される。制御装置はセキュリティ装置と通信可能である。方法は、プログラムが実行されるとき、セキュリティ装置が、暗号化済みのプログラムを当該セキュリティ装置が保持する鍵で復号した上で、制御装置に転送するステップと、制御装置が、セキュリティ装置から転送される復号がなされたプログラムを当該制御装置が備える揮発性記憶部に格納するステップと、を備える。
【００２７】
上述の開示によれば、制御装置が備える不揮発性記憶部に復号済みプログラムが格納されるときは、制御装置で制御プログラムが実行されるときに限定されるので、第３者による制御装置の復号済みプログラムの不正複製を防止することができる。
【００２８】
また、復号のための鍵は、制御装置とは別のセキュリティ装置に格納されるので、第３者は、鍵を入手するには、制御装置とは別のセキュリティ装置を取得する必要があり、鍵が不正複製されるのを防止できて、鍵を用いた上記復号済みプログラムの不正複製を防止することができる。
【発明の効果】
【００２９】
本開示によれば、制御装置に格納されている制御に係るプログラムの不正複製を防止することができる。
【図面の簡単な説明】
【００３０】
【図１】本実施の形態にかかる制御システム１を備えるネットワーク環境１０００の全体構成を模式的に示す図である説明する。
【図２】本実施の形態にかかる制御システム１の構成例を示す外観図である。
【図３】本実施の形態に従う制御システム１を構成する制御ユニット１００のハードウェア構成例を示す模式図である。
【図４】本実施の形態にかかる制御システム１を構成するセキュリティユニット２００のハードウェア構成例を示す模式図である。
【図５】本実施の形態にかかる制御システム１に接続され得るサポート装置５００のハードウェア構成例を示す模式図である。
【図６】本実施の形態にかかる制御システム１が担う機能の一部をサポート装置５００と関連づけて示す図である。
【図７】本実施の形態にかかる復号化処理を含む処理のフローチャートの一例を模式的に示す図である。
【図８】図７の処理における装置間のデータの流れを模式的に示す図である。
【図９】本実施の形態にかかる復号化処理を含む処理のフローチャートの他の例を模式的に示す図である。
【図１０】図９の処理における装置間のデータの流れを模式的に示す図である。
【図１１】本実施の形態にかかる復号化処理を含む処理のフローチャートの更なる他の例を模式的に示す図である。
【図１２】図１１の処理における装置間のデータの流れを模式的に示す図である。
【図１３】本実施の形態にかかるサポート装置５００から独立した制御システム１の構成を模式的に示す図である。
【図１４】本実施の形態にかかる制御システム１の起動処理のフローチャートの一例を示す図である。
【発明を実施するための形態】
【００３１】
実施の形態について、図面を参照しながら詳細に説明する。図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００３２】
＜Ａ．適用例＞
まず、本発明が適用される場面の一例について説明する。図６は、本実施の形態にかかる制御システム１が担う機能の一部をサポート装置５００と関連づけて示す図である。図６では、当該機能は、対象の制御に係る制御プログラムの不正な複製を防止可能なように、制御プログラムに関するセキュリティを設定する機能が示される。
【００３３】
図６を参照して、制御システム１は、「制御装置」の一実施例である制御ユニット１００および「セキュリティ装置」の一実施例であるセキュリティユニット２００を含む。セキュリティユニット２００は、内部バス（例えば、ＰＣＩ  Ｅｘｐｒｅｓｓバスなど）を介して制御ユニット１００に接続されている。セキュリティユニット２００は、制御ユニット１００に内部バスを介して接続される「装置」の形ではなく、制御ユニット１００と何らかの手段で着脱自在に接続される外付け可能な別ユニットとして実装されてもよい。
【００３４】
制御ユニット１００は、例えばＰＬＣ（プログラムブルコントローラ）を含む。制御ユニット１００は、制御対象の制御に係るプログラム（以下、制御プログラムという）を実行する。制御プログラムは、制御対象である設備および装置、ならびに、それらに配置されている各種デバイス（センサまたはアクチュエータなど）との間で信号を遣り取りするＩＯリフレッシュ、制御演算処理などのプログラムを含む。具体的には、ＩＯリフレッシュでは、制御ユニット１００において算出される指令値を制御対象へ出力、あるいは、制御対象からの入力値を収集する。制御演算処理では、例えば、ＩＯリフレッシュにより収集した入力値に基いた指令値，制御量を算出する。このような機能を備える制御プログラムは、制御対象の要求仕様に従ってユーザまたは開発会社が作成するプログラムを含む「ユーザプログラム」の一例でもある。
【００３５】
セキュリティユニット２００は、制御システム１の、より特定的には制御ユニット１００のセキュリティを設定する。このセキュリティの設定には、制御プログラムの意図しない複製、すなわち不正な複製を防止するための設定が含まれる。
【００３６】
制御システム１は、ユーザが操作可能なサポート装置５００をさらに備えても良い。サポート装置５００は、外部の「情報処理装置」の一実施例に相当し、ユーザが制御システム１を運用するのを支援する支援ツールを提供する。サポート装置５００は、ＵＳＢ（Universal  Serial  Bus）により、脱着可能に制御ユニット１００またはセキュリティユニット２００に接続される。このＵＳＢ通信には、通信のセキュリティを確保するために、ユーザ認証を行なうための通信プロトコルが採用され得る。
【００３７】
サポート装置５００は、平文である制御プログラム９０、制御プログラム９０の暗号化または復号化のために用いる鍵９３、制御プログラム９０を鍵９３で暗号化した暗号化済み制御プログラム９１を格納する記憶部を備える。本実施の形態では、鍵９３は、暗号化および復号化における共通鍵として提供されるとする。本実施の形態では、鍵９３の形態はこれに限定されず、例えば、公開鍵で暗号化を実施し、秘密鍵で復号化を実施する形態を適用することもできる。
【００３８】
セキュリティユニット２００は、サポート装置５００から転送される鍵９３を受信し、セキュリティユニット２００が備えるセキュアチップ２０５のメモリ２０７に格納する。セキュアチップ２０５は、専用のハードウェア回路（例えば、ＡＳＩＣ（Application  Specific Integrated  Circuit）またはＦＰＧＡ（Field-Programmable  Gate  Array）など）を用いて実装され得る。セキュアチップ２０５は、セキュリティユニット２００の基板上に直接取り付けられたチップであり、セキュリティユニット２００とは異なる装置による読出しが禁止される記憶領域に、すなわち外部装置からの読取が不可能な記憶領域に鍵９３を格納する「鍵格納部」の一実施例である。
【００３９】
制御ユニット１００が起動されて、制御プログラムが実行されるとき、セキュリティユニット２００は、制御ユニット１００またはセキュリティユニット２００に格納されている暗号化済み制御プログラム９１を鍵９３で復号することにより（処理（２））、復号済み制御プログラム９４を生成し、生成された復号済み制御プログラム９４を制御ユニット１００に転送する。制御ユニット１００は、セキュリティユニット２００から転送される復号済み制御プログラム９４を「揮発性記憶部」の一実施例である揮発性記憶領域１３０に格納する（処理（３））。制御ユニット１００は、揮発性記憶領域１３０内の復号済み制御プログラム９４を実行する（処理（４））。
【００４０】
このように、セキュリティユニット２００は、平文の制御プログラム９０が暗号化された暗号化済み制御プログラム９１を、鍵９３で復号することにより、制御プログラム９０に対応する復号済み制御プログラム９４を生成することができる。
【００４１】
上記に述べた制御システム１では、復号のための鍵９３は、制御ユニット１００とは別ユニットであるセキュリティユニット２００において、さらには、セキュリティユニット２００のセキュアチップ２０５内に格納されるので、鍵９３の外部装置からの読出しは実質的に不可能となる。したがって、第３者は、鍵９３を取得できず、暗号化済み制御プログラム９１を取得できたとしても復号済み制御プログラム９４を取得できない。
【００４２】
また、制御プログラムが起動される時に限り、暗号化済み制御プログラム９１の復号（処理（２））が実施されること、また、復号済み制御プログラム９４は、制御ユニット１００が電源ＯＦＦして電力供給が断たれると記憶内容が消去される揮発性記憶領域１３０に格納されること等から、第３者が、揮発性記憶領域１３０から復号済み制御プログラム９４を読出（複製）可能な機会は制限されることになる。
【００４３】
したがって、制御システム１は、第３者による制御プログラム９０に対応する復号済み制御プログラム９４の不正複製を不可能にする。
【００４４】
また、制御ユニット１００は、「セキュアブートモード」を設定するために、ユーザが外部から操作可能に設けられたディップスイッチ１２６を備える。ユーザは、制御システム１に対して、「セキュアブートモード」を設定する場合は、ディップスイッチ１２６をＯＦＦ→ＯＮに切替操作し、設定しない場合はディップスイッチ１２６をＯＦＦのままとする。制御システム１の各ユニットに対して、電源ユニット４５０から電源ＯＮ（電源が供給開始）されて起動される場合は、制御ユニット１００は、ディップスイッチ１２６の操作（図６の操作（１））に応じて、「セキュアブートモード」に移行する。「セキュアブートモード」では、セキュリティユニット２００は、制御ユニット１００と協働して復号化処理（処理（２）と処理（３））を実施することにより、制御ユニット１００において制御プログラムを実行可能な環境を設定する。
【００４５】
これにより、制御ユニット１００は、セキュアブートモードが設定されるときに限り、復号済み制御プログラム９４を取得する。これにより、第３者が復号済み制御プログラム９４を不正に取得または不正に複製する可能性を低くすることができる。
【００４６】
また、制御システム１では、暗号化済み制御プログラム９１は、セキュリティユニット２００内で生成されてもよい。この場合、セキュリティユニット２００は、サポート装置５００から転送される簡易暗号化済み制御プログラム９２に基いて、セキュアチップ２０５内の鍵９３を用いて暗号化処理を実施することにより、暗号化済み制御プログラム９１を生成する。このように、セキュリティユニット２００が暗号化済み制御プログラム９１を生成する場合であっても、サポート装置５００からセキュリティユニット２００に転送される制御プログラムは平文ではなく簡易暗号化済み制御プログラム９２であるので、平文の制御プログラム９０が転送途中で不正複製されるのを防止できる。
【００４７】
以下、本実施の形態のより具体的な応用例について説明する。
＜Ｂ．制御システム１のネットワーク構成＞
図１は、本実施の形態にかかる制御システム１を備えるネットワーク環境１０００の全体構成を模式的に示す図である説明する。図１を参照して、ネットワーク環境１０００は、ネットワーク１０を介して接続されている、制御システム１、サーバ装置６００、表示装置８００およびゲートウェイ７００を備える。ネットワーク１０は、ゲートウェイ７００を介して、外部ネットワークであるインターネットに接続されている。また、制御システム１は、フィールドネットワーク１１０を介して、フィールドの設備および装置、ならびに、それらに配置されている各種デバイス（センサまたはアクチュエータなど）を含む制御対象９００を接続する。
【００４８】
フィールドネットワーク１１０は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとして、ＥｔｈｅｒＣＡＴ（登録商標）を採用してもよい。また、ネットワーク１０としては、例えば、一般的なネットワークプロトコルであるイーサネット（登録商標）またはＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）が採用されてもよい。
【００４９】
表示装置８００は、ユーザからの操作を受けて、制御システム１に対してユーザ操作に応じたコマンドなどを出力するとともに、制御システム１での演算結果などをグラフィカルに表示する。
【００５０】
サーバ装置６００は、データベースシステム、製造実行システム（ＭＥＳ：Manufacturing  Execution  System）などが想定される。製造実行システムは、制御対象の製造装置または設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これらに限らず、情報系サービス（制御対象から各種情報を取得して、マクロ的またはミクロ的な分析などを行う処理）を提供する装置をネットワーク１０に接続するようにしてもよい。
【００５１】
本実施の形態では、表示装置８００およびサーバ装置６００に、上記に述べた各種のサービス処理を実施させるために、制御ユニット１００は、後述するサービスプログラム９７を実行する。
【００５２】
ゲートウェイ７００は、ネットワーク１０と外部ネットワーク（インターネット）との間のプロトコル変換およびファイヤウォールとしての処理を実行する。
【００５３】
＜Ｃ．制御システム１の外観＞
図２は、本実施の形態にかかる制御システム１の構成例を示す外観図である。図２を参照して、制御システム１は、制御ユニット１００、セキュリティユニット２００、セーフティユニット３００、１または複数の機能ユニット４００、および電源ユニット４５０を含む。
【００５４】
制御ユニット１００とセキュリティユニット２００との間は、上記のＰＣＩ  Ｅｘｐｒｅｓｓのバスなどを介して接続されるとともに、制御ユニット１００とセーフティユニット３００および１または複数の機能ユニット４００との間は、内部バスを介して接続されている。
【００５５】
セーフティユニット３００は、制御ユニット１００とは独立して、制御対象に関するセーフティ機能を実現するための制御演算を実行する。機能ユニット４００は、制御システム１による様々な制御対象に対する制御を実現するための各種機能を提供する。機能ユニット４００は、典型的には、Ｉ／Ｏユニット、セーフティＩ／Ｏユニット、通信ユニット、モーションコントローラユニット、温度調整ユニット、パルスカウンタユニットなどを包含し得る。Ｉ／Ｏユニットとしては、例えば、デジタル入力（ＤＩ）ユニット、デジタル出力（ＤＯ）ユニット、アナログ出力（ＡＩ）ユニット、アナログ出力（ＡＯ）ユニット、パルスキャッチ入力ユニット、および、複数の種類を混合させた複合ユニットなどが挙げられる。セーフティＩ／Ｏユニットは、セーフティ制御に係るＩ／Ｏ処理を担当する。
【００５６】
電源ユニット４５０は、制御システム１を構成する各ユニットに対して、所定電圧の電源を供給する。
【００５７】
＜Ｄ．各ユニットのハードウェア構成例＞
次に、本実施の形態に従う制御システム１を構成する各ユニットのハードウェア構成例について説明する。
【００５８】
（ｄ１．制御ユニット１００）
図３は、本実施の形態に従う制御システム１を構成する制御ユニット１００のハードウェア構成例を示す模式図である。図３を参照して、制御ユニット１００は、主たるコンポーネントとして、ＣＰＵ（Central  Processing  Unit）またはＧＰＵ（Graphical  Processing  Unit）などのプロセッサ１０２、チップセット１０４、主記憶装置１０６、二次記憶装置１０８、通信コントローラ１１１、ＵＳＢ（Universal  Serial  Bus）コントローラ１１２、メモリカードインターフェイス１１４、ネットワークコントローラ１１６，１１８，１２０、内部バスコントローラ１２２、インジケータ１２４、およびスイッチインターフェイス１２５を含む。
【００５９】
プロセッサ１０２は、二次記憶装置１０８に格納された各種プログラムを読み出して、主記憶装置１０６に展開して実行することで、制御演算およびサービス処理を含む各種の処理を実現する。チップセット１０４は、プロセッサ１０２と各コンポーネントとの間のデータの遣り取りを仲介することで、制御ユニット１００全体としての処理を実現する。
【００６０】
主記憶装置１０６は、ＤＲＡＭ（Dynamic  Random  Access  Memory）またはＳＲＡＭ（Static  Random  Access  Memory）などの揮発性記憶装置を備える。これら揮発性記憶装置の少なくとも一部は、復号済み制御プログラム９４を格納するための揮発性記憶領域１３０を構成する。
【００６１】
二次記憶装置１０８は、典型的には、例えば、ＨＤＤ（Hard  Disk  Drive）またはＳＳＤ（Solid  State  Drive）、ＲＯＭ（Read  Only  Memory）、ＥＰＲＯＭ（Erasable  Programmable  Read  Only  Memory)、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read-Only  Memory）などの不揮発性記憶装置を備える。これら不揮発性記憶装置の少なくとも一部は、暗号化済み制御プログラム９１を格納するための不揮発性記憶領域１３１を構成する。
【００６２】
二次記憶装置１０８には、さらに、ＯＳを含むシステムプログラム９５、およびサービスプログラム９７などのユーザプログラムが格納される。システムプログラム９５は、復号済み制御プログラム９４およびサービスプログラム９７などのユーザプログラムが動作するためのプログラム実行環境を提供する。
【００６３】
通信コントローラ１１１は、セキュリティユニット２００との間のデータの遣り取りを担当する。通信コントローラ１１１としては、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓなどのバスに対応した通信チップを採用できる。
【００６４】
ＵＳＢコントローラ１１２は、ＵＳＢ接続を介して、サポート装置５００を含む任意の情報処理装置との間のデータの遣り取りを担当する。
【００６５】
メモリカードインターフェイス１１４は、メモリカード１１５を脱着可能に構成されており、メモリカード１１５に対してユーザプログラムまたは各種設定などのデータを書込み、あるいは、メモリカード１１５から当該プログラムまたは各種設定などのデータを読出すことが可能になっている。
【００６６】
ネットワークコントローラ１１６，１１８，１２０の各々は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。ネットワークコントローラ１１６，１１８，１２０は、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などの産業用ネットワークプロトコルを採用してもよい。
【００６７】
内部バスコントローラ１２２は、制御システム１を構成するセーフティユニット３００または１または複数の機能ユニット４００との間で内部バスを介したデータの遣り取りを担当する。この内部バスには、メーカ固有の通信プロトコルを用いてもよいし、いずれかの産業用ネットワークプロトコルと同一あるいは準拠した通信プロトコルを用いてもよい。
【００６８】
インジケータ１２４は、制御ユニット１００の動作状態などを通知するものであり、ユニット表面に配置された１または複数のＬＥＤ（Light  Emitting  Diode）などで構成される。
【００６９】
図３には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application  Specific  Integrated Circuit）またはＦＰＧＡ（Field-Programmable  Gate Array）など）を用いて実装してもよい。あるいは、制御ユニット１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００７０】
（ｄ２．セキュリティユニット２００）
図４は、本実施の形態にかかる制御システム１を構成するセキュリティユニット２００のハードウェア構成例を示す模式図である。図４を参照して、セキュリティユニット２００は、主たるコンポーネントとして、ＣＰＵまたはＧＰＵなどのプロセッサ２０２、チップセット２０４、揮発性記憶領域を含む主記憶装置２０６、不揮発性記憶領域２３４を含む二次記憶装置２０８、通信コントローラ２１０、ＵＳＢコントローラ２１２、メモリカードインターフェイス２１４、ネットワークコントローラ２１６，２１８、およびインジケータ２２４を含む。主記憶装置２０６および二次記憶装置２０８は、それぞれ、制御ユニット１００の主記憶装置１０６および二次記憶装置１０８と同様に構成することができるので、ここでは、説明を繰返さない。
【００７１】
プロセッサ２０２は、二次記憶装置２０８に格納された各種プログラムを読み出して、主記憶装置２０６に展開して実行することで、各種機能を実現する。チップセット２０４は、プロセッサ２０２と各コンポーネントとの間のデータの遣り取りを仲介することで、セキュリティユニット２００全体としての処理を実現する。チップセット２０４は、基板上に装着された各種のチップを備えて構成されて、装着されるチップの１つは、鍵９３を格納するセキュアチップ２０５に対応する。
【００７２】
二次記憶装置２０８には、ＯＳを含むシステムプログラム２２３に加えて、システムプログラム２２３が提供する実行環境上で動作する各種の処理プログラムが格納される。各種の処理プログラムは、簡易暗号化済み制御プログラム９２を復号する簡易復号化処理プログラム２３０、簡易復号化処理プログラム２３０で簡易暗号化済み制御プログラム９２が復号された上で、鍵９３で暗号化する暗号化処理プログラム２３１、および暗号化済み制御プログラムを復号する復号化処理プログラム２３２を含む。
【００７３】
通信コントローラ２１０は、制御ユニット１００との間のデータの遣り取りを担当する。通信コントローラ２１０としては、制御ユニット１００に通信コントローラ２１０と同様に、例えば、バス２１１に適用されるＰＣＩ  Ｅｘｐｒｅｓｓなどに対応する通信チップを採用できる。
【００７４】
ＵＳＢコントローラ２１２は、ＵＳＢ接続を介してサポート装置５００を含む任意の情報処理装置との間のデータの遣り取りを担当する。
【００７５】
メモリカードインターフェイス２１４は、ＳＤカードなどのメモリカード２１５を脱着可能に構成されており、メモリカード２１５に対してプログラムまたは各種設定などのデータを書込み、あるいは、メモリカード２１５からプログラムまたは各種設定などのデータを読出すことが可能になっている。
【００７６】
ネットワークコントローラ２１６，２１８の各々は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。ネットワークコントローラ２１６，２１８は、イーサネットなどの汎用的なネットワークプロトコルを採用してもよい。
【００７７】
インジケータ２２４は、セキュリティユニット２００の動作状態などを通知するものであり、ユニット表面に配置された１または複数のＬＥＤなどで構成される。
【００７８】
図４には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、セキュリティユニット２００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００７９】
＜Ｅ．サポート装置５００のハードウェア構成例＞
次に、本実施の形態にかかる制御システム１に接続され得るサポート装置５００のハードウェア構成例について説明する。
【００８０】
図５は、本実施の形態にかかる制御システム１に接続され得るサポート装置５００のハードウェア構成例を示す模式図である。サポート装置５００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いて実現される。
【００８１】
図５を参照して、サポート装置５００は、ＣＰＵまたはＧＰＵなどのプロセッサ５０２、主記憶装置５０４、入力部５０６、出力部５０８、二次記憶装置５１０、光学ドライブ５１２、および通信インターフェイス５２０を含む。これらのコンポーネントは、プロセッサバス５１８を介して接続されている。主記憶装置５０４および二次記憶装置５１０は、それぞれ、制御ユニット１００の主記憶装置１０６および二次記憶装置１０８と同様に構成することができるので、ここでは、説明を繰返さない。
【００８２】
プロセッサ５０２は、二次記憶装置５１０に格納されたプログラム（一例として、ＯＳ５１０２およびサポートプログラム５１０４）を読出して、主記憶装置５０４に展開して実行することで、各種処理を実現する。
【００８３】
二次記憶装置５１０には、基本的な機能を実現するためのＯＳ５１０２に加えて、サポート装置５００としての機能を提供するためのサポートプログラム５１０４が格納される。サポートプログラム５１０４は、コンピュータである情報処理装置（実質的にはプロセッサ５０２）により実行されることで、本実施の形態にかかるサポート装置５００によるサポートツールの提供が実現される。サポートツールは、サポート装置５００におけるプログラムの開発環境を提供する。
【００８４】
二次記憶装置５１０には、プログラムの開発環境においてユーザまたは開発会社が、制御対象の要求仕様に従って作成した制御プログラム９０、および暗号化済み制御プログラム９１が格納される。さらに、二次記憶装置５１０には、鍵９３、および暗号化処理プログラム５１０５が格納される。また、二次記憶装置５１０には、簡易暗号化処理プログラム５１０６が格納されてもよい。簡易暗号化処理プログラム５１０６が実行される場合は、二次記憶装置５１０は、当該実行により生成される簡易暗号化済み制御プログラム９２が格納され得る。本実施の形態では、二次記憶装置５１０には、暗号化処理プログラム５１０５および簡易暗号化処理プログラム５１０６の少なくとも一方が格納される。
【００８５】
入力部５０６は、キーボードまたはマウスなどで構成され、ユーザ操作を受け付ける。出力部５０８は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ５０２からの処理結果などを出力する。
【００８６】
通信インターフェイス５２０は、ＵＳＢまたはイーサネットなどの任意の通信媒体を介して、制御システム１が備える制御ユニット１００またはセキュリティユニット２００との間のデータを遣り取りする。
【００８７】
サポート装置５００は、光学ドライブ５１２を有しており、記録媒体５１４（例えば、ＤＶＤ（Digital  Versatile  Disc）などの光学記録媒体）から、その中に格納されたプログラムが読取られて二次記憶装置５１０などにインストールされる。
【００８８】
サポート装置５００で実行されるサポートプログラム５１０４などは、コンピュータ読取可能な記録媒体５１４を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従うサポート装置５００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００８９】
図５には、プロセッサ５０２がプログラムを実行することで、サポート装置５００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００９０】
本実施の形態では、制御システム１が稼動中において、サポート装置５００は、制御システム１から取り外されていてもよい。
【００９１】
サポート装置５００において、暗号化処理プログラム５１０５が実行される場合は、暗号化処理において、制御プログラム９０を鍵９３で暗号化した上で（すなわち生成された暗号化済み制御プログラム９１は）二次記憶装置５１０に格納される。また、簡易暗号化処理プログラム５１０６が実行される場合は、簡易暗号化処理において、制御プログラム９０は簡易暗号化用の所定鍵で暗号化された上で（すなわち簡易暗号化済み制御プログラム９２は）二次記憶装置５１０に格納される。
【００９２】
再び図６を参照すると、サポート装置５００は、制御システム１が備える制御ユニット１００またはセキュリティユニット２００に対して、二次記憶装置５１０の暗号化済み制御プログラム９１，簡易暗号化済み制御プログラム９２および鍵９３を、通信インターフェイス５２０を介して転送する。この場合に、通信インターフェイス５２０は、セキュリティユニット２００との間でユーザ認証を実施し、認証に成功した場合に鍵９３，暗号化済み制御プログラム９１および簡易暗号化済み制御プログラム９２の転送が許可される。したがって、鍵９３，暗号化済み制御プログラム９１および簡易暗号化済み制御プログラム９２は、意図した正当なセキュリティユニット２００または制御ユニット１００にのみ転送されて、意図しない第３者の端末に転送されることが防止される。
【００９３】
＜Ｆ．復号化処理＞
セキュアブートモードにおいて実施される復号化処理を説明する。処理例として、復号化処理（図６の処理（２））において、セキュリティユニット２００が、制御ユニット１００に格納された暗号化済み制御プログラム９１を復号するケースと、セキュリティユニット２００に格納される暗号化済み制御プログラム９１を復号するケースとを説明する。
【００９４】
（ｆ１．制御ユニット１００の暗号化済み制御プログラム９１の復号化処理の一例）
図７は、本実施の形態にかかる復号化処理を含む処理のフローチャートの一例を模式的に示す図である。図８は、図７の処理における装置間のデータの流れを模式的に示す図である。図８の各部には、説明のために、図７の処理ステップＴ１〜Ｔ２７のうち、関連する処理の符号が割当られている。図７と図８を参照して、セキュリティユニット２００が、サポート装置５００から制御ユニット１００に転送された暗号化済み制御プログラム９１を復号し、復号済み制御プログラム９４を制御ユニット１００に転送するケースを説明する。
【００９５】
図７と図８を参照して、サポート装置５００は、暗号化処理プログラム５１０５により、鍵９３で平文の制御プログラム９０を暗号化した上で、制御ユニット１００に転送する（ステップＴ１，Ｔ５）。具体的には、サポート装置５００は、平文の制御プログラム９０を、暗号化処理プログラム５１０５により鍵９３で暗号化することにより、暗号化済み制御プログラム９１を生成し、通信インターフェイス５２０を介して制御ユニット１００に転送する。また、サポート装置５００は、二次記憶装置５１０の鍵９３をセキュリティユニット２００に転送する（ステップＴ３）。この転送に際して、サポート装置５００は、通信インターフェイス５２０により相手装置（セキュリティユニット２００，制御ユニット１００）との間でユーザ認証を実施し、認証に成功したときに、鍵９３の転送および暗号化済み制御プログラム９１の転送を実施する。
【００９６】
セキュリティユニット２００は、サポート装置５００からの鍵９３を受信し（ステップＴ１１）、受信した鍵９３をセキュアチップ２０５に格納する（Ｔ１３）。また、制御ユニット１００は、サポート装置５００から暗号化済み制御プログラム９１を受信し（ステップＴ２１）、受信した暗号化済み制御プログラム９１を不揮発性記憶領域１３１に格納する（ステップＴ２３）。次に、後述する復号化処理（ステップＳ１１）が実施される。
【００９７】
（ｆ１-１．復号化処理）
セキュリティユニット２００は、復号化処理プログラム２３２を実行することで実現されるモジュールに相当する図８の復号化部２３を備える。復号化処理では、制御ユニット１００は、例えば、セキュリティユニット２００からの要求に応じて、不揮発性記憶領域１３１の暗号化済み制御プログラム９１をセキュリティユニット２００に転送する（ステップＴ２４）。セキュリティユニット２００の復号化部２３は、制御ユニット１００から受信する暗号化済み制御プログラム９１をセキュアチップ２０５の鍵９３で復号した上で制御ユニット１００に転送する（ステップＴ１９）。すなわち、復号化部２３は、暗号化済み制御プログラム９１を鍵９３で復号することにより、復号済み制御プログラム９４を生成し（ステップＴ１７）、復号済み制御プログラム９４を制御ユニット１００に転送する（ステップＴ１９）。
【００９８】
制御ユニット１００は、セキュリティユニット２００から転送される復号済み制御プログラム９４を受信し、受信した復号済み制御プログラム９４を揮発性記憶領域１３０に格納する（ステップＴ２５，ステップＴ２７）。これにより、復号化処理（ステップＳ１１）は終了する。
【００９９】
図８では、上記に述べた復号化処理における、セキュリティユニット２００と制御ユニット１００間における暗号化済み制御プログラム９１および復号済み制御プログラム９４の転送が破線矢印で示されている。この転送は、制御システム１における、セキュリティユニット２００と制御ユニット１００間を接続するＰＣＩ  Ｅｘｐｒｅｓｓなどの内部バスを介して実施され得るので、転送途中の復号済み制御プログラム９４が外部に曝されるリスクを回避することができる。
【０１００】
また、例えば、制御システム１において、セキュリティユニット２００が制御ユニット１００に脱着自在に外付けされる装置構成を採用する場合においても、復号済み制御プログラム９４の第３者による不正な複製を防止することができる。例えば、電源ＯＦＦされて制御ユニット１００がセキュリティユニット２００から取り外された場合、鍵９３はセキュリティユニット２００に残されたままなので、第３者は取外された制御ユニット１００の暗号化済み制御プログラム９１を復号することはできない。また、外部装置からセキュアチップ２０５に格納されている鍵９３を読出すこともできない。これにより、図７および図８の構成によれば、第３者による復号済み制御プログラム９４の不正複製を防止することができる。
【０１０１】
（ｆ２．制御ユニット１００の暗号化済み制御プログラム９１の復号化処理の他の例）
図９は、本実施の形態にかかる復号化処理を含む処理のフローチャートの他の例を模式的に示す図である。図１０は、図９の処理における装置間のデータの流れを模式的に示す図である。図１０の各部には、説明のために、図９の処理ステップＴ１ａ〜Ｔ２７のうち、関連する処理の符号が割当られている。図９と図１０を参照して、セキュリティユニット２００により生成されて制御ユニット１００に転送された暗号化済み制御プログラム９１から、復号化処理により復号済み制御プログラム９４が生成されるケースを説明する。
【０１０２】
セキュリティユニット２００は、復号化部２３、簡易復号化処理プログラム２３０を実行することにより実現されるモジュールに相当する簡易復号化部２２、および暗号化処理プログラム２３１を実行することにより実現されるモジュールに相当する暗号化部２１を備える。簡易復号化部２２は、「第１復号化部」の一実施例である。
【０１０３】
サポート装置５００は、簡易暗号化処理プログラム５１０６により、平文の制御プログラム９０を所定の簡易暗号化用鍵で暗号化した上で、セキュリティユニット２００に転送する（ステップＴ１ａ、ステップＴ５ａ）。すなわち、サポート装置５００は、簡易暗号化処理プログラム５１０６により、平文の制御プログラム９０を所定の簡易暗号化用鍵で暗号化することにより、簡易暗号化済み制御プログラム９２を生成し（ステップＴ１ａ）、通信インターフェイス５２０を介して、簡易暗号化済み制御プログラム９２をセキュリティユニット２００に転送する（ステップＴ５ａ）。この転送に際しては、サポート装置５００は、通信インターフェイス５２０により相手装置（セキュリティユニット２００）との間でユーザ認証を実施し、認証に成功したときに、簡易暗号化済み制御プログラム９２の転送を実施する。本実施の形態では、所定の簡易暗号化用鍵は、サポート装置５００とセキュリティユニット２００との間でユーザ認証を介して相互に交換されている。
【０１０４】
また、セキュリティユニット２００は、専用ツール２５０から転送される鍵９３を受信し、セキュアチップ２０５に格納する（ステップＴ３ａ、Ｔ１１、Ｔ１３）。本実施の形態では、専用ツール２５０は、正当なユーザまたはプログラム開発会社が保持するツールであって、セキュリティユニット２００の出荷時等において、鍵９３をセキュアチップ２０５に格納するために利用される。
【０１０５】
セキュリティユニット２００は、サポート装置５００から受信する簡易暗号化済み制御プログラム９２に基き、鍵９３を用いて暗号化処理を実施することにより、暗号化済み制御プログラム９１を生成する（ステップＴ１４ａ〜Ｔ１４ｄ）。
【０１０６】
具体的には、セキュリティユニット２００は、サポート装置５００から簡易暗号化済み制御プログラム９２を受信し（ステップＴ１４ａ）、簡易復号化部２２は、受信した簡易暗号化済み制御プログラム９２を所定の簡易暗号化用鍵で復号することにより、復号済の制御プログラム、すなわち平文の制御プログラム９０を生成し、生成された制御プログラム９０を一時格納する（ステップＴ１４ｂ、Ｔ１４ｃ）。暗号化部２１は、生成された制御プログラム９０を鍵９３で暗号化することにより、暗号化済み制御プログラム９１を生成する（ステップＴ１４ｄ）。
【０１０７】
その後、セキュリティユニット２００は一時格納されていた平文の制御プログラム９０を削除する（ステップＴ１５）とともに、暗号化済み制御プログラム９１を制御ユニット１００に転送する（ステップＴ１６）。制御ユニット１００は、セキュリティユニット２００からの暗号化済み制御プログラム９１を受信し、不揮発性記憶領域１３１に格納する（ステップＴ２１，Ｔ２４）。このように、復号されて一時格納されていた制御プログラム９０は、少なくとも暗号化部２１による暗号化が完了するまでは保持されるので、制御プログラム９０が格納されている間は暗号化をリトライすることができる。また、一時格納されている平文の制御プログラム９０の削除は、暗号化済み制御プログラム９１の制御ユニット１００への転送が完了した後に実施してもよい。
【０１０８】
その後、セキュリティユニット２００と制御ユニット１００では、暗号化済み制御プログラム９１の復号化処理が実施される（ステップＴ１７、Ｔ１９、Ｔ２４〜Ｔ２７）。この復号化処理は、図７と図８で説明した処理と同様であるので、説明は繰返さない。
【０１０９】
このように図９と図１０に説明したケースであっても、図７と図８と同様に、復号済み制御プログラム９４を第３者による不正複製から保護することができる。
【０１１０】
（ｆ３．セキュリティユニット２００の暗号化済み制御プログラム９１を復号化処理）
図１１は、本実施の形態にかかる復号化処理を含む処理のフローチャートの更なる他の例を模式的に示す図である。図１２は、図１１の処理における装置間のデータの流れを模式的に示す図である。図１２の各部には、説明のために、図１１の処理ステップＴ１ａ〜Ｔ２７のうち、関連する処理の符号が割当られている。図７〜図１０では、制御ユニット１００の不揮発性記憶領域１３１に格納されていた暗号化済み制御プログラム９１について復号化処理が実施されるのに対して、図１１と図１２では、セキュリティユニット２００の不揮発性記憶領域２３４に格納された暗号化済み制御プログラム９１について復号化処理が実施される。
【０１１１】
図１１と図１２の処理を、主に、図９と図１０の処理とは異なる点について説明する。サポート装置５００は、簡易暗号化済み制御プログラム９２を生成し、セキュリティユニット２００に転送する（ステップＴ１ａ、Ｔ５ａ）。セキュリティユニット２００のセキュアチップ２０５には、専用ツール２５０により鍵９３が格納される（ステップＴ３ａ、Ｔ１１、Ｔ１３）。
【０１１２】
また、セキュリティユニット２００では、簡易復号化部２２および暗号化部２１は、サポート装置５００からの簡易暗号化済み制御プログラム９２を処理することにより、暗号化済み制御プログラム９１を生成する（ステップＴ１４ａ〜Ｔ１４ｄ）。セキュリティユニット２００は、暗号化済み制御プログラム９１を不揮発性記憶領域２３４に格納する（ステップＴ１４ｅ）。
【０１１３】
その後、セキュリティユニット２００と制御ユニット１００は、不揮発性記憶領域２３４の暗号化済み制御プログラム９１の復号化処理を実施する（ステップＴ１７、Ｔ１９、Ｔ２５、Ｔ２７）。
【０１１４】
図１２では、暗号化部２１が生成する暗号化済み制御プログラム９１は、さらに制御ユニット１００の不揮発性記憶領域１３１に格納されてもよい。これにより、復号化部２３は、暗号化済み制御プログラム９１を入手するルートを、セキュリティユニット２００の不揮発性記憶領域２３４のルートまたは制御ユニット１００に不揮発性記憶領域１３１のルートとすることができて、入手ルートを多様化できる。
【０１１５】
図１１と図１２では、制御ユニット１００は、不揮発性記憶領域１３１に暗号化済み制御プログラム９１を保持しないので、制御ユニット１００を盗んだ第３者が、たとえ鍵９３を取得できたとしても、復号済み制御プログラム９４を生成することはできない。また、図１１と図１２に説明したケースであっても、図７と図８と同様に、復号済み制御プログラム９４を第３者による不正複製から保護することができる。
【０１１６】
（ｆ３-１．リストア）
本実施の形態では、サポート装置５００が保持する図８の暗号化済み制御プログラム９１、またはセキュリティユニット２００が図１２の不揮発性記憶領域２３４に保持する暗号化済み制御プログラム９１を、制御ユニット１００の不揮発性記憶領域１３１に再度格納（リストア）するためのバックアップ用として利用することができる。
【０１１７】
また、制御システム１は、図８に示すように、難読化された状態でＳＤカードなどのメモリカード２１５に格納された鍵９３を、セキュアチップ２０５に格納するルートを備えてもよい。このメモリカード２１５は、正当なユーザまたはプログラム開発会社が所持する。
【０１１８】
＜ｆ４．サポート装置５００から独立した制御システム１の構成＞
図１３は、本実施の形態にかかるサポート装置５００から独立した制御システム１の構成を模式的に示す図である。図１３では、セキュリティユニット２００が、制御ユニット１００に格納された暗号化済み制御プログラム９１を復号するケースの変形例が示される。
【０１１９】
図８と図９のケースとは異なり、図１３の制御ユニット１００の暗号化済み制御プログラム９１は、セキュリティユニット２００がＳＤカードなどのメモリカード２１５から読出す平文の制御プログラム９０から、鍵９３と暗号化処理プログラム２３１を用いて生成される。図１３のメモリカード２１５は正当なユーザまたはプログラム開発会社が保持する。これにより、図１３の制御システム１では、サポート装置５００を接続しない環境であっても、制御ユニット１００に暗号化済み制御プログラム９１をリストアすることが可能になる。
【０１２０】
図１３では、暗号化部２１が生成する暗号化済み制御プログラム９１は、さらにセキュリティユニット２００の不揮発性記憶領域２３４に格納されてもよい。これにより、復号化部２３は、暗号化済み制御プログラム９１を入手するルートを、セキュリティユニット２００の不揮発性記憶領域２３４のルートまたは制御ユニット１００に不揮発性記憶領域１３１のルートとすることができて、入手ルートを多様化できる。
【０１２１】
＜Ｇ．起動処理のフローチャート＞
図１４は、本実施の形態にかかる制御システム１の起動処理のフローチャートの一例を示す図である。図１４では、セキュリティユニット２００が、制御ユニット１００に脱着可能に外付けされるユニットとして構成されるケースを例示する。この場合、制御ユニット１００は、通信コントローラ１１１に関連して設けられた通信ポートを介してセキュリティユニット２００を接続する。したがって、制御ユニット１００は、通信ポートからの信号（または通信ポートの電位）に基き、セキュリティユニット２００が装着されているか否かを判断する。
【０１２２】
図１４を参照して、プログラムの実行に際して、電源ユニット４５０から制御システム１の各ユニットに電源が供給されると、制御ユニット１００のプロセッサ１０２は通常の起動処理を開始する（ステップＳ３）。この起動処理は、例えば、ユーザプログラムを実行するためのリソースの確保等を含む。
【０１２３】
プロセッサ１０２はディップスイッチ１２６からの信号に基き、ディップスイッチ１２６はＯＮまたはＯＦＦのいずれの状態にあるかを判断する（ステップＳ５）。ディップスイッチ１２６からの信号がＯＮを示すと判断すると（ステップＳ５でＯＮ）、プロセッサ１０２は、セキュリティユニット２００が装着されているか否かを判断する（ステップＳ７）。プロセッサ１０２は、セキュリティユニット２００が制御ユニット１００に装着されていると判断すると（ステップＳ７で（有））、プロセッサ１０２は「セキュアブートモード」に移行して、プロセッサ１０２は復号化処理の開始要求をセキュリティユニット２００に送信する。セキュリティユニット２００は当該開始要求の応答を制御ユニット１００に送信することにより、両者は協働して図７〜図１３で述べた復号化処理を実施する（ステップＳ１１）。復号化処理（ステップＳ１１）が終了すると「セキュアブートモード」は終了する。この復号化処理において、復号済み制御プログラム９４は不揮発性記憶領域１３１に格納されるので、制御ユニット１００では制御プログラムを実行することが可能となる。
【０１２４】
プロセッサ１０２は、揮発性記憶領域１３０の記憶内容に基づいて復号済み制御プログラム９４が格納されているか否かを判断し、判断結果に基き復号化処理に成功したか否かを判断する（ステップＳ１３）。暗号化済み制御プログラム９１の復号化に成功した、すなわち揮発性記憶領域１３０に復号済み制御プログラム９４が格納されていると判断すると（ステップＳ１３でＹＥＳ）、残りの起動処理を実施する（ステップＳ１５）。残りの起動処理では、例えばサービスプログラム９７等を実行するためのリソースの確保等が実施される。その後、一連の起動処理は終了する。
【０１２５】
ステップＳ７において、プロセッサ１０２は、セキュリティユニット２００が制御ユニット１００に装着されていないと判断すると（ステップＳ７で（無））、またはステップＳ１３において、プロセッサ１０２は、揮発性記憶領域１３０に復号済み制御プログラム９４が格納されていないと判断すると（ステップＳ１３でＮＯ）、プロセッサ１０２は、インジケータ１２４を点灯させるとともに、起動処理を停止する（ステップＳ９）。これにより、制御システム１または制御ユニット１００は起動できない旨のエラー通知を報知することができる。
【０１２６】
一方、ステップＳ５において、プロセッサ１０２は、ディップスイッチ１２６からの信号がＯＦＦを示すと判断すると（ステップＳ５でＯＦＦ）、セキュアブートモードにおける復号化処理は実施せずに、ステップＳ１５に移行して、サービスプログラム９７についての起動処理（ステップＳ１５）を実施する。これにより、ディップスイッチ１２６からの信号がＯＦＦであるときは、制御プログラム９０を実行可能にするための処理、すなわち復号済み制御プログラム９４の揮発性記憶領域１３０への格納は実施されないので、ユーザは、ディップスイッチ１２６の操作によって、復号済み制御プログラム９４を第３者の不正複製から保護することができる。
【０１２７】
＜Ｈ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
制御対象（９００）の制御に係るプログラムを実行する制御装置（１００）と、
前記制御装置と通信可能なセキュリティ装置（２００）と、を備え、
前記セキュリティ装置は、
鍵（９３）を格納する鍵格納部（２０５）と、
暗号化済みの前記プログラム（９１）を前記鍵で復号する復号化部（２３）と、を含み、
前記プログラムが実行されるとき、前記復号を実施して復号済みプログラム（９４）を前記制御装置に転送し、
前記制御装置は、
前記セキュリティ装置から転送される前記復号済みプログラムを記憶する揮発性記憶部（１３０）を、含む、制御システム（１）。
［構成２］
制御対象（９００）の制御に係るプログラムを実行する制御装置（１００）と通信可能なセキュリティ装置（２００）であって、
前記制御装置は、
前記セキュリティ装置から転送されるプログラムを記憶する揮発性記憶部（１３０）を含み、
前記セキュリティ装置は、
鍵（９３）を格納する鍵格納部（２０５）と、
暗号化済みのプログラム（９１）を前記鍵で復号する復号化部（２３）と、を含み、
前記プログラムが実行されるとき、前記復号を実施して復号済みプログラム（９４）を前記制御装置に転送する、セキュリティ装置。
［構成３］
前記鍵格納部は、前記セキュリティ装置とは異なる装置による読出しが禁止される読出禁止領域（２０７）を有し、
前記鍵は、前記読出禁止領域に格納される、構成２に記載のセキュリティ装置。
［構成４］
前記暗号化済みのプログラムは、前記セキュリティ装置または前記制御装置に備えられる不揮発性記憶部（２３４，１３１）に格納される、構成２または３に記載のセキュリティ装置。
［構成５］
前記セキュリティ装置または前記制御装置は、外部の情報処理装置（５００）と通信可能であり、
前記情報処理装置は、前記暗号化済みのプログラムを、前記セキュリティ装置または前記制御装置に転送する、構成４に記載のセキュリティ装置。
［構成６］
前記セキュリティ装置は、外部の情報処理装置（５００）と通信可能であり、
前記セキュリティ装置は、
前記暗号化済みのプログラムを生成する暗号化部（２１）と、
前記情報処理装置から転送される、所定の鍵で暗号化されたプログラムを復号する第１復号化部（２２）と、を含み、
前記暗号化部は、
前記所定の鍵で暗号化されたプログラムを前記第１復号化部により復号した上で、前記鍵格納部の鍵で暗号化することにより前記暗号化済みのプログラムを生成する、構成４に記載のセキュリティ装置。
［構成７］
前記セキュリティ装置は、
前記所定の鍵で暗号化されたプログラムを前記第１復号化部により復号した上で、前記暗号化部による暗号化が完了するまで保持する、構成６に記載のセキュリティ装置。
［構成８］
前記セキュリティ装置は、さらに、
前記暗号化部により生成される前記暗号化済みのプログラムを、自装置の前記不揮発性記憶部に格納する、または前記制御装置に転送する、構成６または７に記載のセキュリティ装置。
［構成９］
前記鍵格納部の前記鍵は、秘密鍵または共通鍵を含む、構成２から８のいずれか１に記載のセキュリティ装置。
［構成１０］
対象（９００）を制御する制御装置（１００）が実行する制御に係るプログラムのセキュリティを設定する方法であって、
前記制御装置はセキュリティ装置（２００）と通信可能であり、
前記方法は、
前記プログラムが実行されるとき、
前記セキュリティ装置が、暗号化済みの前記プログラム（９１）を当該セキュリティ装置が保持する鍵（９３）で復号した上で、前記制御装置に転送するステップと、
前記制御装置が、前記セキュリティ装置から転送される前記復号がなされたプログラム（９４）を当該制御装置が備える揮発性記憶部（１３０）に格納するステップと、を備える、方法。
【０１２８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２９】
１  制御システム、１０  ネットワーク、２１  暗号化部、２２  簡易復号化部、２３  復号化部、９０  制御プログラム、９１  暗号化済み制御プログラム、９２  簡易暗号化済み制御プログラム、９３  鍵、９４  復号済み制御プログラム、９５，２２３  システムプログラム、９７  サービスプログラム、１００  制御ユニット、１０２，２０２，５０２  プロセッサ、１０４，２０４  チップセット、１０６，２０６，５０４  主記憶装置、１０８，２０８，５１０  二次記憶装置、１１０  フィールドネットワーク、１１１，２１０  通信コントローラ、１１２，２１２  コントローラ、１１４，２１４  メモリカードインターフェイス、１１５，２１５  メモリカード、１１６，１１８，１２０，２１６，２１８  ネットワークコントローラ、１２２  内部バスコントローラ、１２４，２２４  インジケータ、１２５  スイッチインターフェイス、１２６  ディップスイッチ、１３０  揮発性記憶領域、１３１，２３４  不揮発性記憶領域、２００  セキュリティユニット、２０５  セキュアチップ、２０７  メモリ、２３０  簡易復号化処理プログラム、２３１，５１０５  暗号化処理プログラム、２３２  復号化処理プログラム、２５０  専用ツール、３００  セーフティユニット、４００  機能ユニット、４５０  電源ユニット、５００  サポート装置、５０６  入力部、５０８  出力部、５１２  光学ドライブ、５１４  記録媒体、５１８  プロセッサバス、５２０  通信インターフェイス、６００  サーバ装置、７００  ゲートウェイ、８００  表示装置、９００  制御対象、１０００  ネットワーク環境、５１０４  サポートプログラム、５１０６  簡易暗号化処理プログラム。
【図１】
2020166317.tif 000003
【図２】
2020166317.tif 000004
【図３】
2020166317.tif 000005
【図４】
2020166317.tif 000006
【図５】
2020166317.tif 000007
【図６】
2020166317.tif 000008
【図７】
2020166317.tif 000009
【図８】
2020166317.tif 000010
【図９】
2020166317.tif 000011
【図１０】
2020166317.tif 000012
【図１１】
2020166317.tif 000013
【図１２】
2020166317.tif 000014
【図１３】
2020166317.tif 000015
【図１４】
2020166317.tif 000016