WO2020195348A1 - 制御システム、セキュリティ装置および方法 - Google Patents

制御システム、セキュリティ装置および方法 Download PDF

Info

Publication number
WO2020195348A1
WO2020195348A1 PCT/JP2020/006266 JP2020006266W WO2020195348A1 WO 2020195348 A1 WO2020195348 A1 WO 2020195348A1 JP 2020006266 W JP2020006266 W JP 2020006266W WO 2020195348 A1 WO2020195348 A1 WO 2020195348A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
control
unit
key
security
Prior art date
Application number
PCT/JP2020/006266
Other languages
English (en)
French (fr)
Inventor
仁之 片岡
雄大 永田
Original Assignee
オムロン株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オムロン株式会社 filed Critical オムロン株式会社
Priority to CN202080018568.XA priority Critical patent/CN113518952A/zh
Priority to US17/437,833 priority patent/US20220156392A1/en
Priority to EP20779412.4A priority patent/EP3951518A4/en
Publication of WO2020195348A1 publication Critical patent/WO2020195348A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24167Encryption, password, user access privileges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography

Definitions

  • the security unit 200 sets the security of the control system 1, more specifically, the control unit 100.
  • This security setting includes a setting for preventing unintended replication of the control program, that is, unauthorized replication.
  • the decrypted control program 91 is decrypted (process (2)), and the decrypted control program 94 is supplied with power when the control unit 100 is turned off. Since the stored contents are stored in the volatile storage area 130, which is erased when the data is cut off, the opportunity for a third party to read (copy) the decoded control program 94 from the volatile storage area 130 is limited. Will be done.
  • the processor 102 realizes various processes including control calculation and service processing by reading various programs stored in the secondary storage device 108, deploying them in the main storage device 106, and executing the programs.
  • the chipset 104 realizes the processing of the control unit 100 as a whole by mediating the exchange of data between the processor 102 and each component.
  • FIG. 3 shows a configuration example in which the necessary functions are provided by the processor 102 executing the program, and some or all of these provided functions are provided by a dedicated hardware circuit (for example, ASIC). It may be implemented using (Application Specific Integrated Circuit) or FPGA (Field-Programmable Gate Array). Alternatively, the main part of the control unit 100 may be realized by using hardware that follows a general-purpose architecture (for example, an industrial personal computer based on a general-purpose personal computer). In this case, virtualization technology may be used to execute a plurality of OSs having different uses in parallel, and to execute necessary applications on each OS.
  • a general-purpose architecture for example, an industrial personal computer based on a general-purpose personal computer.
  • virtualization technology may be used to execute a plurality of OSs having different uses in parallel, and to execute necessary applications on each OS.
  • the decryption process performed in the secure boot mode will be described.
  • the security unit 200 decrypts the encrypted control program 91 stored in the control unit 100, and the encryption stored in the security unit 200.
  • a case of decoding the encrypted control program 91 will be described.
  • the control unit 100 receives the decrypted control program 94 transferred from the security unit 200, and stores the received decrypted control program 94 in the volatile storage area 130 (steps T25 and T27). As a result, the decoding process (step S11) is completed.
  • the security unit 200 and the control unit 100 perform a decryption process of the encrypted control program 91 of the non-volatile storage area 234 (steps T17, T19, T25, T27).
  • FIG. 14 is a diagram showing an example of a flowchart of the activation process of the control system 1 according to the present embodiment.
  • FIG. 14 illustrates a case in which the security unit 200 is configured as a unit detachably attached to the control unit 100.
  • the control unit 100 connects the security unit 200 via a communication port provided in connection with the communication controller 111. Therefore, the control unit 100 determines whether or not the security unit 200 is mounted based on the signal from the communication port (or the potential of the communication port).
  • the security device according to configuration 2, wherein the key is stored in the read-protected area.
  • the security device according to configuration 2 or 3, wherein the encrypted program is stored in the non-volatile storage unit (234, 131) provided in the security device or the control device.
  • the security device or the control device can communicate with an external information processing device (500).
  • the security device according to configuration 4, wherein the information processing device transfers the encrypted program to the security device or the control device.
  • the security device can communicate with an external information processing device (500).
  • the security device is An encryption unit (21) that generates the encrypted program, and A first decryption unit (22) that decrypts a program encrypted with a predetermined key transferred from the information processing apparatus is included.

Abstract

制御装置に格納されている制御に係るプログラムの不正複製を防止する。制御システムは、制御対象の制御に係るプログラムを実行する制御装置と、制御装置と通信可能なセキュリティ装置とを備え、セキュリティ装置は、鍵を格納する鍵格納部と、暗号化済みのプログラムを鍵で復号する復号化部と、を含み、プログラムが実行されるとき、復号を実施して復号済みプログラムを制御装置に転送する。制御装置は、セキュリティ装置から転送される復号済みプログラムを記憶する揮発性記憶部を備える。

Description

制御システム、セキュリティ装置および方法
 この開示は、制御システム、セキュリティ装置および方法に関する。
 FA(Factory Automation)の制御装置をインターネットまたはクラウド端末に接続する環境が提供されている。この環境では、工場外の端末またはネットワークに制御装置を接続することに関して、ノウハウ流出を含む各種インシデントへの対処を含むセキュリティ対策が実施されている。
 また、工場では、入出管理により、認証された者のみに入出を許可することにより、制御装置のプログラムを含む各種データの不正な複製、または不正持ち出しなどのインシデントへの対処がとられている。この点に関して、特許文献1(特開平6-110512号公報)では、シーケンスプログラムの不正な複製を防止するために、プログラマブルコントローラにおいて、シーケンスプログラムを暗号化してROMに格納する暗号化手段と、ROMに格納された情報を復号化してプロセッサにより実行させる復号化手段と、暗号化および復号化の際の暗号鍵および復号鍵を設定する鍵設定手段とを備える。
特開平6-110512号公報
 特許文献1では、シーケンスプログラムと同様に鍵もプログラマブルコントローラに格納されることから、鍵が盗まれると簡単に復号および複製がなされてしまう。
 本開示の目的は、制御装置に格納されている制御に係るプログラムの不正な複製を防止できる制御システム、セキュリティ装置および方法を提供することである。
 本開示にかかる制御システムは、制御対象の制御に係るプログラムを実行する制御装置と、制御装置と通信可能なセキュリティ装置と、を備え、セキュリティ装置は、鍵を格納する鍵格納部と、暗号化済みのプログラムを鍵で復号する復号化部と、を含み、プログラムが実行されるとき、復号を実施して復号済みプログラムを制御装置に転送する。制御装置は、セキュリティ装置から転送される復号済みプログラムを記憶する揮発性記憶部を、含む。
 上述の開示によれば、制御装置が備える不揮発性記憶部に復号済みプログラムが格納されるときは、制御装置で制御プログラムが実行されるときに限定されるので、第3者による制御装置の復号済みプログラムの不正複製を防止することができる。
 また、復号のための鍵は、制御装置とは別のセキュリティ装置に格納されるので、第3者は、鍵を入手するには、制御装置とは別のセキュリティ装置を取得する必要があり、鍵が不正複製されるのを防止でき、鍵を用いた上記の復号済みプログラムの不正複製をさらに困難化できる。
 本開示にかかるセキュリティ装置は、制御対象の制御に係るプログラムを実行する制御装置と通信可能なセキュリティ装置であって、制御装置は、セキュリティ装置から転送されるプログラムを記憶する揮発性記憶部を含む。セキュリティ装置は、鍵を格納する鍵格納部と、暗号化済みのプログラムを鍵で復号する復号化部と、を含み、プログラムが実行されるとき、復号を実施して復号済みプログラムを制御装置に転送する。
 上述の開示によれば、制御装置が備える不揮発性記憶部に復号済みプログラムが格納されるときは、制御装置で制御プログラムが実行されるときに限定されるので、第3者による制御装置の復号済みプログラムの不正複製を防止することができる。
 また、復号のための鍵は、制御装置とは別のセキュリティ装置に格納されるので、第3者は、鍵を入手するには、制御装置とは別のセキュリティ装置を取得する必要があり、鍵が不正複製されるのを防止できて、鍵を用いた上記の復号済みプログラムの不正複製をさらに困難化できる。
 上述の開示において、鍵格納部は、セキュリティ装置とは異なる装置による読出しが禁止される読出禁止領域を有し、鍵は、読出禁止領域に格納される。
 上述の開示によれば、鍵は読出禁止領域に格納されるので、鍵が不正入手されて、不正入手された鍵で復号済みプログラムが取得されるのを防止することができる。
 上述の開示において、暗号化済みのプログラムは、セキュリティ装置または制御装置に備えられる不揮発性記憶部に格納される。
 上述の開示によれば、復号済みプログラムを生成するための暗号化済みのプログラムはセキュリティ装置または制御装置が備える不揮発性記憶部に格納しておくことができるので、不揮発性記憶部の暗号化済みのプログラムを復号化した上で、不揮発性記憶部にリストアすることができる。
 上述の開示において、セキュリティ装置または制御装置は、外部の情報処理装置と通信可能であり、情報処理装置は、暗号化済みのプログラムを、セキュリティ装置または制御装置に転送する。
 上述の開示によれば、セキュリティ装置または制御装置は、暗号化済みのプログラムを外部の情報処理装置から取得できる。
 上述の開示において、セキュリティ装置は、外部の情報処理装置と通信可能であり、セキュリティ装置は、暗号化済みのプログラムを生成する暗号化部と、情報処理装置から転送される、所定の鍵で暗号化されたプログラムを復号する第1復号化部と、を含み、暗号化部は、所定の鍵で暗号化されたプログラムを第1復号化部により復号した上で、鍵格納部の鍵で暗号化することにより暗号化済みのプログラムを生成する。
 上述の開示によれば、セキュリティ装置は、情報処理装置から転送される所定の鍵で暗号化されたプログラムから、暗号化済みプログラムを取得できる。この場合、情報処理装置から転送されるプログラムは平文ではなく所定の鍵で暗号化されているので、転送途中における平文プログラムの不正複製を防止できる。
 上述の開示において、セキュリティ装置は、所定の鍵で暗号化されたプログラムを第1復号化部により復号した上で、暗号化部による暗号化が完了するまで保持する。
 上述の開示によれば、セキュリティ装置は、復号されたプログラムを、暗号化部が暗号化を完了するまで保持するので、完了できないときは、保持されている復号されたプログラムを用いて暗号化をリトライすることができる。
 上述の開示において、セキュリティ装置は、さらに、暗号化部により生成される暗号化済みのプログラムを、自装置の不揮発性記憶部に格納する、または制御装置に転送する。
 上述の開示によれば、セキュリティ装置は、復号済みプログラムを生成するための暗号化済みプログラムの入手ルートを、自装置または制御装置において確保することができる。
 上述の開示において、鍵格納部の鍵は、秘密鍵または共通鍵を含む。したがって、復号に用いる鍵を多様化することができる。
 本開示において、対象を制御する制御装置が実行する制御に係るプログラムのセキュリティを設定する方法が提供される。制御装置はセキュリティ装置と通信可能である。方法は、プログラムが実行されるとき、セキュリティ装置が、暗号化済みのプログラムを当該セキュリティ装置が保持する鍵で復号した上で、制御装置に転送するステップと、制御装置が、セキュリティ装置から転送される復号がなされたプログラムを当該制御装置が備える揮発性記憶部に格納するステップと、を備える。
 上述の開示によれば、制御装置が備える不揮発性記憶部に復号済みプログラムが格納されるときは、制御装置で制御プログラムが実行されるときに限定されるので、第3者による制御装置の復号済みプログラムの不正複製を防止することができる。
 また、復号のための鍵は、制御装置とは別のセキュリティ装置に格納されるので、第3者は、鍵を入手するには、制御装置とは別のセキュリティ装置を取得する必要があり、鍵が不正複製されるのを防止できて、鍵を用いた上記復号済みプログラムの不正複製を防止することができる。
 本開示によれば、制御装置に格納されている制御に係るプログラムの不正複製を防止することができる。
本実施の形態にかかる制御システム1を備えるネットワーク環境1000の全体構成を模式的に示す図である説明する。 本実施の形態にかかる制御システム1の構成例を示す外観図である。 本実施の形態に従う制御システム1を構成する制御ユニット100のハードウェア構成例を示す模式図である。 本実施の形態にかかる制御システム1を構成するセキュリティユニット200のハードウェア構成例を示す模式図である。 本実施の形態にかかる制御システム1に接続され得るサポート装置500のハードウェア構成例を示す模式図である。 本実施の形態にかかる制御システム1が担う機能の一部をサポート装置500と関連づけて示す図である。 本実施の形態にかかる復号化処理を含む処理のフローチャートの一例を模式的に示す図である。 図7の処理における装置間のデータの流れを模式的に示す図である。 本実施の形態にかかる復号化処理を含む処理のフローチャートの他の例を模式的に示す図である。 図9の処理における装置間のデータの流れを模式的に示す図である。 本実施の形態にかかる復号化処理を含む処理のフローチャートの更なる他の例を模式的に示す図である。 図11の処理における装置間のデータの流れを模式的に示す図である。 本実施の形態にかかるサポート装置500から独立した制御システム1の構成を模式的に示す図である。 本実施の形態にかかる制御システム1の起動処理のフローチャートの一例を示す図である。
 実施の形態について、図面を参照しながら詳細に説明する。図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
 <A.適用例>
 まず、本発明が適用される場面の一例について説明する。図6は、本実施の形態にかかる制御システム1が担う機能の一部をサポート装置500と関連づけて示す図である。図6では、当該機能は、対象の制御に係る制御プログラムの不正な複製を防止可能なように、制御プログラムに関するセキュリティを設定する機能が示される。
 図6を参照して、制御システム1は、「制御装置」の一実施例である制御ユニット100および「セキュリティ装置」の一実施例であるセキュリティユニット200を含む。セキュリティユニット200は、内部バス(例えば、PCI Expressバスなど)を介して制御ユニット100に接続されている。セキュリティユニット200は、制御ユニット100に内部バスを介して接続される「装置」の形ではなく、制御ユニット100と何らかの手段で着脱自在に接続される外付け可能な別ユニットとして実装されてもよい。
 制御ユニット100は、例えばPLC(プログラムブルロジックコントローラ)を含む。制御ユニット100は、制御対象の制御に係るプログラム(以下、制御プログラムという)を実行する。制御プログラムは、制御対象である設備および装置、ならびに、それらに配置されている各種デバイス(センサまたはアクチュエータなど)との間で信号を遣り取りするIOリフレッシュ、制御演算処理などのプログラムを含む。具体的には、IOリフレッシュでは、制御ユニット100において算出される指令値を制御対象へ出力、あるいは、制御対象からの入力値を収集する。制御演算処理では、例えば、IOリフレッシュにより収集した入力値に基いた指令値,制御量を算出する。このような機能を備える制御プログラムは、制御対象の要求仕様に従ってユーザまたは開発会社が作成するプログラムを含む「ユーザプログラム」の一例でもある。
 セキュリティユニット200は、制御システム1の、より特定的には制御ユニット100のセキュリティを設定する。このセキュリティの設定には、制御プログラムの意図しない複製、すなわち不正な複製を防止するための設定が含まれる。
 制御システム1は、ユーザが操作可能なサポート装置500をさらに備えても良い。サポート装置500は、外部の「情報処理装置」の一実施例に相当し、ユーザが制御システム1を運用するのを支援する支援ツールを提供する。サポート装置500は、USB(Universal Serial Bus)により、脱着可能に制御ユニット100またはセキュリティユニット200に接続される。このUSB通信には、通信のセキュリティを確保するために、ユーザ認証を行なうための通信プロトコルが採用され得る。
 サポート装置500は、平文である制御プログラム90、制御プログラム90の暗号化または復号化のために用いる鍵93、制御プログラム90を鍵93で暗号化した暗号化済み制御プログラム91を格納する記憶部を備える。本実施の形態では、鍵93は、暗号化および復号化における共通鍵として提供されるとする。本実施の形態では、鍵93の形態はこれに限定されず、例えば、公開鍵で暗号化を実施し、秘密鍵で復号化を実施する形態を適用することもできる。
 セキュリティユニット200は、サポート装置500から転送される鍵93を受信し、セキュリティユニット200が備えるセキュアチップ205のメモリ207(後述する)に格納する。セキュアチップ205は、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装され得る。セキュアチップ205は、セキュリティユニット200の基板上に直接取り付けられたチップであり、セキュリティユニット200とは異なる装置による読出しが禁止される記憶領域に、すなわち外部装置からの読取が不可能な記憶領域に鍵93を格納する「鍵格納部」の一実施例である。
 制御ユニット100が起動されて、制御プログラムが実行されるとき、セキュリティユニット200は、制御ユニット100またはセキュリティユニット200に格納されている暗号化済み制御プログラム91を鍵93で復号することにより(処理(2))、復号済み制御プログラム94を生成し、生成された復号済み制御プログラム94を制御ユニット100に転送する。制御ユニット100は、セキュリティユニット200から転送される復号済み制御プログラム94を「揮発性記憶部」の一実施例である揮発性記憶領域130に格納する(格納(3))。制御ユニット100は、揮発性記憶領域130内の復号済み制御プログラム94を実行する(プログラム実行(4))。
 このように、セキュリティユニット200は、平文の制御プログラム90が暗号化された暗号化済み制御プログラム91を、鍵93で復号することにより、制御プログラム90に対応する復号済み制御プログラム94を生成することができる。
 上記に述べた制御システム1では、復号のための鍵93は、制御ユニット100とは別ユニットであるセキュリティユニット200において、さらには、セキュリティユニット200のセキュアチップ205内に格納されるので、鍵93の外部装置からの読出しは実質的に不可能となる。したがって、第3者は、鍵93を取得できず、暗号化済み制御プログラム91を取得できたとしても復号済み制御プログラム94を取得できない。
 また、制御プログラムが起動される時に限り、暗号化済み制御プログラム91の復号(処理(2))が実施されること、また、復号済み制御プログラム94は、制御ユニット100が電源OFFして電力供給が断たれると記憶内容が消去される揮発性記憶領域130に格納されること等から、第3者が、揮発性記憶領域130から復号済み制御プログラム94を読出し(複製)可能な機会は制限されることになる。
 したがって、制御システム1は、第3者による制御プログラム90に対応する復号済み制御プログラム94の不正複製を不可能にする。
 また、制御ユニット100は、「セキュアブートモード」を設定するために、ユーザが外部から操作可能に設けられたディップスイッチ126を備える。ユーザは、制御システム1に対して、「セキュアブートモード」を設定する場合は、ディップスイッチ126をOFF→ONに切替操作し、設定しない場合はディップスイッチ126をOFFのままとする。制御システム1の各ユニットに対して、電源ユニット450(後述する)から電源ON(電源が供給開始)されて起動される場合は、制御ユニット100は、ディップスイッチ126の操作(図6の操作(1))に応じて、「セキュアブートモード」に移行する。「セキュアブートモード」では、セキュリティユニット200は、制御ユニット100と協働して復号化処理(処理(2)と格納(3))を実施することにより、制御ユニット100において制御プログラムを実行可能な環境を設定する。
 これにより、制御ユニット100は、セキュアブートモードが設定されるときに限り、復号済み制御プログラム94を取得する。これにより、第3者が復号済み制御プログラム94を不正に取得または不正に複製する可能性を低くすることができる。
 また、制御システム1では、暗号化済み制御プログラム91は、セキュリティユニット200内で生成されてもよい。この場合、セキュリティユニット200は、サポート装置500から転送される簡易暗号化済み制御プログラム92に基いて、セキュアチップ205内の鍵93を用いて暗号化処理を実施することにより、暗号化済み制御プログラム91を生成する。このように、セキュリティユニット200が暗号化済み制御プログラム91を生成する場合であっても、サポート装置500からセキュリティユニット200に転送される制御プログラムは平文ではなく簡易暗号化済み制御プログラム92であるので、平文の制御プログラム90が転送途中で不正複製されるのを防止できる。
 以下、本実施の形態のより具体的な応用例について説明する。
 <B.制御システム1のネットワーク構成>
 図1は、本実施の形態にかかる制御システム1を備えるネットワーク環境1000の全体構成を模式的に示す図である説明する。図1を参照して、ネットワーク環境1000は、ネットワーク10を介して接続されている、制御システム1、サーバ装置600、表示装置800およびゲートウェイ700を備える。ネットワーク10は、ゲートウェイ700を介して、外部ネットワークであるインターネットに接続されている。また、制御システム1は、フィールドネットワーク110を介して、フィールドの設備および装置、ならびに、それらに配置されている各種デバイス(センサまたはアクチュエータなど)を含む制御対象900を接続する。
 フィールドネットワーク110は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとして、EtherCAT(登録商標)を採用してもよい。また、ネットワーク10としては、例えば、一般的なネットワークプロトコルであるイーサネット(登録商標)またはEtherNet/IP(登録商標)が採用されてもよい。
 表示装置800は、ユーザからの操作を受けて、制御システム1に対してユーザ操作に応じたコマンドなどを出力するとともに、制御システム1での演算結果などをグラフィカルに表示する。
 サーバ装置600は、データベースシステム、製造実行システム(MES:Manufacturing Execution System)などが想定される。製造実行システムは、制御対象の製造装置または設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これらに限らず、情報系サービス(制御対象から各種情報を取得して、マクロ的またはミクロ的な分析などを行う処理)を提供する装置をネットワーク10に接続するようにしてもよい。
 本実施の形態では、表示装置800およびサーバ装置600に、上記に述べた各種のサービス処理を実施させるために、制御ユニット100は、後述するサービスプログラム97を実行する。
 ゲートウェイ700は、ネットワーク10と外部ネットワーク(インターネット)との間のプロトコル変換およびファイヤウォールとしての処理を実行する。
 <C.制御システム1の外観>
 図2は、本実施の形態にかかる制御システム1の構成例を示す外観図である。図2を参照して、制御システム1は、制御ユニット100、セキュリティユニット200、セーフティユニット300、1または複数の機能ユニット400、および電源ユニット450を含む。
 制御ユニット100とセキュリティユニット200との間は、上記のPCI Expressのバスなどを介して接続されるとともに、制御ユニット100とセーフティユニット300および1または複数の機能ユニット400との間は、内部バスを介して接続されている。
 セーフティユニット300は、制御ユニット100とは独立して、制御対象に関するセーフティ機能を実現するための制御演算を実行する。機能ユニット400は、制御システム1による様々な制御対象に対する制御を実現するための各種機能を提供する。機能ユニット400は、典型的には、I/Oユニット、セーフティI/Oユニット、通信ユニット、モーションコントローラユニット、温度調整ユニット、パルスカウンタユニットなどを包含し得る。I/Oユニットとしては、例えば、デジタル入力(DI)ユニット、デジタル出力(DO)ユニット、アナログ出力(AI)ユニット、アナログ出力(AO)ユニット、パルスキャッチ入力ユニット、および、複数の種類を混合させた複合ユニットなどが挙げられる。セーフティI/Oユニットは、セーフティ制御に係るI/O処理を担当する。
 電源ユニット450は、制御システム1を構成する各ユニットに対して、所定電圧の電源を供給する。
 <D.各ユニットのハードウェア構成例>
 次に、本実施の形態に従う制御システム1を構成する各ユニットのハードウェア構成例について説明する。
 (d1.制御ユニット100)
 図3は、本実施の形態に従う制御システム1を構成する制御ユニット100のハードウェア構成例を示す模式図である。図3を参照して、制御ユニット100は、主たるコンポーネントとして、CPU(Central Processing Unit)またはGPU(Graphical Processing Unit)などのプロセッサ102、チップセット104、主記憶装置106、二次記憶装置108、通信コントローラ111、USB(Universal Serial Bus)コントローラ112、メモリカードインターフェイス114、ネットワークコントローラ116,118,120、内部バスコントローラ122、インジケータ124、およびスイッチインターフェイス125を含む。
 プロセッサ102は、二次記憶装置108に格納された各種プログラムを読み出して、主記憶装置106に展開して実行することで、制御演算およびサービス処理を含む各種の処理を実現する。チップセット104は、プロセッサ102と各コンポーネントとの間のデータの遣り取りを仲介することで、制御ユニット100全体としての処理を実現する。
 主記憶装置106は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)などの揮発性記憶装置を備える。これら揮発性記憶装置の少なくとも一部は、復号済み制御プログラム94を格納するための揮発性記憶領域130を構成する。
 二次記憶装置108は、典型的には、例えば、HDD(Hard Disk Drive)またはSSD(Solid State Drive)、ROM(Read Only Memory)、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read-Only Memory)などの不揮発性記憶装置を備える。これら不揮発性記憶装置の少なくとも一部は、暗号化済み制御プログラム91を格納するための不揮発性記憶領域131を構成する。
 二次記憶装置108には、さらに、OS(Operating System)を含むシステムプログラム95、およびサービスプログラム97などのユーザプログラムが格納される。システムプログラム95は、復号済み制御プログラム94およびサービスプログラム97などのユーザプログラムが動作するためのプログラム実行環境を提供する。
 通信コントローラ111は、セキュリティユニット200との間のデータの遣り取りを担当する。通信コントローラ111としては、例えば、PCI Expressなどのバス211に対応した通信チップを採用できる。
 USBコントローラ112は、USB接続を介して、サポート装置500を含む任意の情報処理装置との間のデータの遣り取りを担当する。
 メモリカードインターフェイス114は、メモリカード115を脱着可能に構成されており、メモリカード115に対してユーザプログラムまたは各種設定などのデータを書込み、あるいは、メモリカード115から当該プログラムまたは各種設定などのデータを読出すことが可能になっている。
 ネットワークコントローラ116,118,120の各々は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。ネットワークコントローラ116,118,120は、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などの産業用ネットワークプロトコルを採用してもよい。
 内部バスコントローラ122は、制御システム1を構成するセーフティユニット300または1または複数の機能ユニット400との間で内部バスを介したデータの遣り取りを担当する。この内部バスには、メーカ固有の通信プロトコルを用いてもよいし、いずれかの産業用ネットワークプロトコルと同一あるいは準拠した通信プロトコルを用いてもよい。
 インジケータ124は、制御ユニット100の動作状態などを通知するものであり、ユニット表面に配置された1または複数のLED(Light Emitting Diode)などで構成される。
 図3には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、制御ユニット100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
 (d2.セキュリティユニット200)
 図4は、本実施の形態にかかる制御システム1を構成するセキュリティユニット200のハードウェア構成例を示す模式図である。図4を参照して、セキュリティユニット200は、主たるコンポーネントとして、CPUまたはGPUなどのプロセッサ202、チップセット204、揮発性記憶領域を含む主記憶装置206、不揮発性記憶領域234を含む二次記憶装置208、通信コントローラ210、USBコントローラ212、メモリカードインターフェイス214、ネットワークコントローラ216,218、およびインジケータ224を含む。主記憶装置206および二次記憶装置208は、それぞれ、制御ユニット100の主記憶装置106および二次記憶装置108と同様に構成することができるので、ここでは、説明を繰返さない。
 プロセッサ202は、二次記憶装置208に格納された各種プログラムを読み出して、主記憶装置206に展開して実行することで、各種機能を実現する。チップセット204は、プロセッサ202と各コンポーネントとの間のデータの遣り取りを仲介することで、セキュリティユニット200全体としての処理を実現する。チップセット204は、基板上に装着された各種のチップを備えて構成されて、装着されるチップの1つは、鍵93を格納するセキュアチップ205に対応する。
 二次記憶装置208には、OSを含むシステムプログラム233に加えて、システムプログラム233が提供する実行環境上で動作する各種の処理プログラムが格納される。各種の処理プログラムは、簡易暗号化済み制御プログラム92を復号する簡易復号化処理プログラム230、簡易復号化処理プログラム230で簡易暗号化済み制御プログラム92が復号された上で、鍵93で暗号化する暗号化処理プログラム231、および暗号化済み制御プログラムを復号する復号化処理プログラム232を含む。
 通信コントローラ210は、制御ユニット100との間のデータの遣り取りを担当する。通信コントローラ210としては、制御ユニット100に通信コントローラ210と同様に、例えば、バス211に適用されるPCI Expressなどに対応する通信チップを採用できる。
 USBコントローラ212は、USB接続を介してサポート装置500を含む任意の情報処理装置との間のデータの遣り取りを担当する。
 メモリカードインターフェイス214は、SDカードなどのメモリカード215を脱着可能に構成されており、メモリカード215に対してプログラムまたは各種設定などのデータを書込み、あるいは、メモリカード215からプログラムまたは各種設定などのデータを読出すことが可能になっている。
 ネットワークコントローラ216,218の各々は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。ネットワークコントローラ216,218は、イーサネットなどの汎用的なネットワークプロトコルを採用してもよい。
 インジケータ224は、セキュリティユニット200の動作状態などを通知するものであり、ユニット表面に配置された1または複数のLEDなどで構成される。
 図4には、プロセッサ202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、セキュリティユニット200の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
 <E.サポート装置500のハードウェア構成例>
 次に、本実施の形態にかかる制御システム1に接続され得るサポート装置500のハードウェア構成例について説明する。
 図5は、本実施の形態にかかる制御システム1に接続され得るサポート装置500のハードウェア構成例を示す模式図である。サポート装置500は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用のパーソナルコンピュータ)を用いて実現される。
 図5を参照して、サポート装置500は、CPUまたはGPUなどのプロセッサ502、主記憶装置504、入力部506、出力部508、二次記憶装置510、光学ドライブ512、および通信インターフェイス520を含む。これらのコンポーネントは、プロセッサバス518を介して接続されている。主記憶装置504および二次記憶装置510は、それぞれ、制御ユニット100の主記憶装置106および二次記憶装置108と同様に構成することができるので、ここでは、説明を繰返さない。
 プロセッサ502は、二次記憶装置510に格納されたプログラム(一例として、OS5102およびサポートプログラム5104)を読出して、主記憶装置504に展開して実行することで、各種処理を実現する。
 二次記憶装置510には、基本的な機能を実現するためのOS5102に加えて、サポート装置500としての機能を提供するためのサポートプログラム5104が格納される。サポートプログラム5104は、コンピュータである情報処理装置(実質的にはプロセッサ502)により実行されることで、本実施の形態にかかるサポート装置500によるサポートツールの提供が実現される。サポートツールは、サポート装置500におけるプログラムの開発環境を提供する。
 二次記憶装置510には、プログラムの開発環境においてユーザまたは開発会社が、制御対象の要求仕様に従って作成した制御プログラム90、および暗号化済み制御プログラム91が格納される。さらに、二次記憶装置510には、鍵93、および暗号化処理プログラム5105が格納される。また、二次記憶装置510には、簡易暗号化処理プログラム5106が格納されてもよい。簡易暗号化処理プログラム5106が実行される場合は、二次記憶装置510は、当該実行により生成される簡易暗号化済み制御プログラム92が格納され得る。本実施の形態では、二次記憶装置510には、暗号化処理プログラム5105および簡易暗号化処理プログラム5106の少なくとも一方が格納される。
 入力部506は、キーボードまたはマウスなどで構成され、ユーザ操作を受け付ける。出力部508は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ502からの処理結果などを出力する。
 通信インターフェイス520は、USBまたはイーサネットなどの任意の通信媒体を介して、制御システム1が備える制御ユニット100またはセキュリティユニット200との間のデータを遣り取りする。
 サポート装置500は、光学ドライブ512を有する。光学ドライブ512によって、記録媒体514(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)に格納されたプログラムが、記録媒体514から読取られて二次記憶装置510などにインストールされる。
 サポート装置500で実行されるサポートプログラム5104などは、コンピュータ読取可能な記録媒体514を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従うサポート装置500が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
 図5には、プロセッサ502がプログラムを実行することで、サポート装置500として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
 本実施の形態では、制御システム1が稼動中において、サポート装置500は、制御システム1から取り外されていてもよい。
 サポート装置500において、暗号化処理プログラム5105が実行される場合は、暗号化処理において、制御プログラム90を鍵93で暗号化した上で(すなわち生成された暗号化済み制御プログラム91は)二次記憶装置510に格納される。また、簡易暗号化処理プログラム5106が実行される場合は、簡易暗号化処理において、制御プログラム90は簡易暗号化用の所定鍵で暗号化された上で(すなわち簡易暗号化済み制御プログラム92は)二次記憶装置510に格納される。
 再び図6を参照すると、サポート装置500は、制御システム1が備える制御ユニット100またはセキュリティユニット200に対して、二次記憶装置510の暗号化済み制御プログラム91,簡易暗号化済み制御プログラム92および鍵93を、通信インターフェイス520を介して転送する。この場合に、通信インターフェイス520は、セキュリティユニット200との間でユーザ認証を実施し、認証に成功した場合に鍵93,暗号化済み制御プログラム91および簡易暗号化済み制御プログラム92の転送が許可される。したがって、鍵93,暗号化済み制御プログラム91および簡易暗号化済み制御プログラム92は、意図した正当なセキュリティユニット200または制御ユニット100にのみ転送されて、意図しない第3者の端末に転送されることが防止される。
 <F.復号化処理>
 セキュアブートモードにおいて実施される復号化処理を説明する。処理例として、復号化処理(図6の処理(2))において、セキュリティユニット200が、制御ユニット100に格納された暗号化済み制御プログラム91を復号するケースと、セキュリティユニット200に格納される暗号化済み制御プログラム91を復号するケースとを説明する。
 (f1.制御ユニット100の暗号化済み制御プログラム91の復号化処理の一例)
 図7は、本実施の形態にかかる復号化処理を含む処理のフローチャートの一例を模式的に示す図である。図8は、図7の処理における装置間のデータの流れを模式的に示す図である。図8の各部には、説明のために、図7の処理ステップT1~T27のうち、関連する処理の符号が割当られている。図7と図8を参照して、セキュリティユニット200が、サポート装置500から制御ユニット100に転送された暗号化済み制御プログラム91を復号し、復号済み制御プログラム94を制御ユニット100に転送するケースを説明する。
 図7と図8を参照して、サポート装置500は、暗号化処理プログラム5105により、鍵93で平文の制御プログラム90を暗号化した上で、制御ユニット100に転送する(ステップT1,T5)。具体的には、サポート装置500は、平文の制御プログラム90を、暗号化処理プログラム5105により鍵93で暗号化することにより、暗号化済み制御プログラム91を生成し、通信インターフェイス520を介して制御ユニット100に転送する。また、サポート装置500は、二次記憶装置510の鍵93をセキュリティユニット200に転送する(ステップT3)。この転送に際して、サポート装置500は、通信インターフェイス520により相手装置(セキュリティユニット200,制御ユニット100)との間でユーザ認証を実施し、認証に成功したときに、鍵93の転送および暗号化済み制御プログラム91の転送を実施する。
 セキュリティユニット200は、サポート装置500からの鍵93を受信し(ステップT11)、受信した鍵93をセキュアチップ205に格納する(T13)。また、制御ユニット100は、サポート装置500から暗号化済み制御プログラム91を受信し(ステップT21)、受信した暗号化済み制御プログラム91を不揮発性記憶領域131に格納する(ステップT23)。次に、後述する復号化処理(ステップS11)が実施される。
 (f1-1.復号化処理)
 セキュリティユニット200は、復号化処理プログラム232を実行することで実現されるモジュールに相当する図8の復号化部23を備える。復号化処理では、制御ユニット100は、例えば、セキュリティユニット200からの要求に応じて、不揮発性記憶領域131の暗号化済み制御プログラム91をセキュリティユニット200に転送する(ステップT24)。セキュリティユニット200の復号化部23は、制御ユニット100から受信する暗号化済み制御プログラム91をセキュアチップ205の鍵93で復号した上で制御ユニット100に転送する(ステップT19)。すなわち、復号化部23は、暗号化済み制御プログラム91を鍵93で復号することにより、復号済み制御プログラム94を生成し(ステップT17)、復号済み制御プログラム94を制御ユニット100に転送する(ステップT19)。
 制御ユニット100は、セキュリティユニット200から転送される復号済み制御プログラム94を受信し、受信した復号済み制御プログラム94を揮発性記憶領域130に格納する(ステップT25,ステップT27)。これにより、復号化処理(ステップS11)は終了する。
 図8では、上記に述べた復号化処理における、セキュリティユニット200と制御ユニット100間における暗号化済み制御プログラム91および復号済み制御プログラム94の転送が破線矢印で示されている。この転送は、制御システム1における、セキュリティユニット200と制御ユニット100間を接続するPCI Expressなどの内部バスを介して実施され得るので、転送途中の復号済み制御プログラム94が外部に曝されるリスクを回避することができる。
 また、例えば、制御システム1において、セキュリティユニット200が制御ユニット100に脱着自在に外付けされる装置構成を採用する場合においても、復号済み制御プログラム94の第3者による不正な複製を防止することができる。例えば、電源OFFされて制御ユニット100がセキュリティユニット200から取り外された場合、鍵93はセキュリティユニット200に残されたままなので、第3者は取外された制御ユニット100の暗号化済み制御プログラム91を復号することはできない。また、外部装置からセキュアチップ205に格納されている鍵93を読出すこともできない。これにより、図7および図8の構成によれば、第3者による復号済み制御プログラム94の不正複製を防止することができる。
 (f2.制御ユニット100の暗号化済み制御プログラム91の復号化処理の他の例)
 図9は、本実施の形態にかかる復号化処理を含む処理のフローチャートの他の例を模式的に示す図である。図10は、図9の処理における装置間のデータの流れを模式的に示す図である。図10の各部には、説明のために、図9の処理ステップT1a~T27のうち、関連する処理の符号が割当られている。図9と図10を参照して、セキュリティユニット200により生成されて制御ユニット100に転送された暗号化済み制御プログラム91から、復号化処理により復号済み制御プログラム94が生成されるケースを説明する。
 セキュリティユニット200は、復号化部23、簡易復号化処理プログラム230を実行することにより実現されるモジュールに相当する簡易復号化部22、および暗号化処理プログラム231を実行することにより実現されるモジュールに相当する暗号化部21を備える。簡易復号化部22は、「第1復号化部」の一実施例である。
 サポート装置500は、簡易暗号化処理プログラム5106により、平文の制御プログラム90を所定の簡易暗号化用鍵で暗号化した上で、セキュリティユニット200に転送する(ステップT1a、ステップT5a)。すなわち、サポート装置500は、簡易暗号化処理プログラム5106により、平文の制御プログラム90を所定の簡易暗号化用鍵で暗号化することにより、簡易暗号化済み制御プログラム92を生成し(ステップT1a)、通信インターフェイス520を介して、簡易暗号化済み制御プログラム92をセキュリティユニット200に転送する(ステップT5a)。この転送に際しては、サポート装置500は、通信インターフェイス520により相手装置(セキュリティユニット200)との間でユーザ認証を実施し、認証に成功したときに、簡易暗号化済み制御プログラム92の転送を実施する。本実施の形態では、所定の簡易暗号化用鍵は、サポート装置500とセキュリティユニット200との間でユーザ認証を介して相互に交換されている。
 また、セキュリティユニット200は、専用ツール250から転送される鍵93を受信し、セキュアチップ205に格納する(ステップT3a、T11、T13)。本実施の形態では、専用ツール250は、正当なユーザまたはプログラム開発会社が保持するツールであって、セキュリティユニット200の出荷時等において、鍵93をセキュアチップ205に格納するために利用される。
 セキュリティユニット200は、サポート装置500から受信する簡易暗号化済み制御プログラム92に基き、鍵93を用いて暗号化処理を実施することにより、暗号化済み制御プログラム91を生成する(ステップT14a~T14d)。
 具体的には、セキュリティユニット200は、サポート装置500から簡易暗号化済み制御プログラム92を受信し(ステップT14a)、簡易復号化部22は、受信した簡易暗号化済み制御プログラム92を所定の簡易暗号化用鍵で復号することにより、復号済の制御プログラム、すなわち平文の制御プログラム90を生成し、生成された制御プログラム90を一時格納する(ステップT14b、T14c)。暗号化部21は、生成された制御プログラム90を鍵93で暗号化することにより、暗号化済み制御プログラム91を生成する(ステップT14d)。
 その後、セキュリティユニット200は一時格納されていた平文の制御プログラム90を削除する(ステップT15)とともに、暗号化済み制御プログラム91を制御ユニット100に転送する(ステップT16)。制御ユニット100は、セキュリティユニット200からの暗号化済み制御プログラム91を受信し、不揮発性記憶領域131に格納する(ステップT21,T23)。このように、復号されて一時格納されていた制御プログラム90は、少なくとも暗号化部21による暗号化が完了するまでは保持されるので、制御プログラム90が格納されている間は暗号化をリトライすることができる。また、一時格納されている平文の制御プログラム90の削除は、暗号化済み制御プログラム91の制御ユニット100への転送が完了した後に実施してもよい。
 その後、セキュリティユニット200と制御ユニット100では、暗号化済み制御プログラム91の復号化処理が実施される(ステップT17、T19、T24~T27)。この復号化処理は、図7と図8で説明した処理と同様であるので、説明は繰返さない。
 このように図9と図10に説明したケースであっても、図7と図8と同様に、復号済み制御プログラム94を第3者による不正複製から保護することができる。
 (f3.セキュリティユニット200の暗号化済み制御プログラム91を復号化処理)
 図11は、本実施の形態にかかる復号化処理を含む処理のフローチャートの更なる他の例を模式的に示す図である。図12は、図11の処理における装置間のデータの流れを模式的に示す図である。図12の各部には、説明のために、図11の処理ステップT1a~T27のうち、関連する処理の符号が割当られている。図7~図10では、制御ユニット100の不揮発性記憶領域131に格納されていた暗号化済み制御プログラム91について復号化処理が実施されるのに対して、図11と図12では、セキュリティユニット200の不揮発性記憶領域234に格納された暗号化済み制御プログラム91について復号化処理が実施される。
 図11と図12の処理を、主に、図9と図10の処理とは異なる点について説明する。サポート装置500は、簡易暗号化済み制御プログラム92を生成し、セキュリティユニット200に転送する(ステップT1a、T5a)。セキュリティユニット200のセキュアチップ205には、専用ツール250により鍵93が格納される(ステップT3a、T11、T13)。
 また、セキュリティユニット200では、簡易復号化部22および暗号化部21は、サポート装置500からの簡易暗号化済み制御プログラム92を処理することにより、暗号化済み制御プログラム91を生成する(ステップT14a~T14d)。セキュリティユニット200は、暗号化済み制御プログラム91を不揮発性記憶領域234に格納する(ステップT14e)。
 その後、セキュリティユニット200と制御ユニット100は、不揮発性記憶領域234の暗号化済み制御プログラム91の復号化処理を実施する(ステップT17、T19、T25、T27)。
 図12では、暗号化部21が生成する暗号化済み制御プログラム91は、さらに制御ユニット100の不揮発性記憶領域131に格納されてもよい。これにより、復号化部23は、暗号化済み制御プログラム91を入手するルートを、セキュリティユニット200の不揮発性記憶領域234のルートまたは制御ユニット100に不揮発性記憶領域131のルートとすることができて、入手ルートを多様化できる。
 図11と図12では、制御ユニット100は、不揮発性記憶領域131に暗号化済み制御プログラム91を保持しないので、制御ユニット100を盗んだ第3者が、たとえ鍵93を取得できたとしても、復号済み制御プログラム94を生成することはできない。また、図11と図12に説明したケースであっても、図7と図8と同様に、復号済み制御プログラム94を第3者による不正複製から保護することができる。
 (f3-1.リストア)
 本実施の形態では、サポート装置500が保持する図8の暗号化済み制御プログラム91、またはセキュリティユニット200が図12の不揮発性記憶領域234に保持する暗号化済み制御プログラム91を、制御ユニット100の不揮発性記憶領域131に再度格納(リストア)することで、格納された暗号化済み制御プログラム91をバックアップ用プログラムとして利用することができる。
 また、制御システム1は、図8に示すように、難読化された状態でSDカードなどのメモリカード215に格納された鍵93(図8では、“難読化した鍵”で示されている)を、セキュアチップ205に格納するルートを備えてもよい。このメモリカード215は、正当なユーザまたはプログラム開発会社が所持する。
 <f4.サポート装置500から独立した制御システム1の構成>
 図13は、本実施の形態にかかるサポート装置500から独立した制御システム1の構成を模式的に示す図である。図13では、セキュリティユニット200が、制御ユニット100に格納された暗号化済み制御プログラム91を復号するケースの変形例が示される。
 図8と図9のケースとは異なり、図13の制御ユニット100の暗号化済み制御プログラム91は、セキュリティユニット200がSDカードなどのメモリカード215から読出す平文の制御プログラム90から、鍵93と暗号化処理プログラム231を用いて生成される。図13のメモリカード215は正当なユーザまたはプログラム開発会社が保持する。これにより、図13の制御システム1では、サポート装置500を接続しない環境であっても、制御ユニット100に暗号化済み制御プログラム91をリストアすることが可能になる。
 図13では、暗号化部21が生成する暗号化済み制御プログラム91は、さらにセキュリティユニット200の不揮発性記憶領域234に格納されてもよい。これにより、復号化部23は、暗号化済み制御プログラム91を入手するルートを、セキュリティユニット200の不揮発性記憶領域234のルートまたは制御ユニット100に不揮発性記憶領域131のルートとすることができて、入手ルートを多様化できる。
 <G.起動処理のフローチャート>
 図14は、本実施の形態にかかる制御システム1の起動処理のフローチャートの一例を示す図である。図14では、セキュリティユニット200が、制御ユニット100に脱着可能に外付けされるユニットとして構成されるケースを例示する。この場合、制御ユニット100は、通信コントローラ111に関連して設けられた通信ポートを介してセキュリティユニット200を接続する。したがって、制御ユニット100は、通信ポートからの信号(または通信ポートの電位)に基き、セキュリティユニット200が装着されているか否かを判断する。
 図14を参照して、プログラムの実行に際して、電源ユニット450から制御システム1の各ユニットに電源が供給されると、制御ユニット100のプロセッサ102は通常の起動処理を開始する(ステップS3)。この起動処理は、例えば、ユーザプログラムを実行するためのリソースの確保等を含む。
 プロセッサ102はディップスイッチ126からの信号に基き、ディップスイッチ126はONまたはOFFのいずれの状態にあるかを判断する(ステップS5)。ディップスイッチ126からの信号がONを示すと判断すると(ステップS5でON)、プロセッサ102は、セキュリティユニット200が装着されているか否かを判断する(ステップS7)。プロセッサ102は、セキュリティユニット200が制御ユニット100に装着されていると判断すると(ステップS7で(有))、プロセッサ102は「セキュアブートモード」に移行して、プロセッサ102は復号化処理の開始要求をセキュリティユニット200に送信する。セキュリティユニット200は当該開始要求の応答を制御ユニット100に送信することにより、両者は協働して図7~図13で述べた復号化処理を実施する(ステップS11)。復号化処理(ステップS11)が終了すると「セキュアブートモード」は終了する。この復号化処理において、復号済み制御プログラム94は不揮発性記憶領域131に格納されるので、制御ユニット100では制御プログラムを実行することが可能となる。
 プロセッサ102は、揮発性記憶領域130の記憶内容に基づいて復号済み制御プログラム94が格納されているか否かを判断し、判断結果に基き復号化処理に成功したか否かを判断する(ステップS13)。暗号化済み制御プログラム91の復号化に成功した、すなわち揮発性記憶領域130に復号済み制御プログラム94が格納されていると判断すると(ステップS13でYES)、残りの起動処理を実施する(ステップS15)。残りの起動処理では、例えばサービスプログラム97等を実行するためのリソースの確保等が実施される。その後、一連の起動処理は終了する。
 ステップS7において、プロセッサ102は、セキュリティユニット200が制御ユニット100に装着されていないと判断すると(ステップS7で(無))、またはステップS13において、プロセッサ102は、揮発性記憶領域130に復号済み制御プログラム94が格納されていないと判断すると(ステップS13でNO)、プロセッサ102は、インジケータ124を点灯させるとともに、起動処理を停止する(ステップS9)。これにより、制御システム1または制御ユニット100は起動できない旨のエラー通知を報知することができる。
 一方、ステップS5において、プロセッサ102は、ディップスイッチ126からの信号がOFFを示すと判断すると(ステップS5でOFF)、セキュアブートモードにおける復号化処理は実施せずに、ステップS15に移行して、サービスプログラム97についての起動処理(ステップS15)を実施する。これにより、ディップスイッチ126からの信号がOFFであるときは、制御プログラム90を実行可能にするための処理、すなわち復号済み制御プログラム94の揮発性記憶領域130への格納は実施されないので、ユーザは、ディップスイッチ126の操作によって、復号済み制御プログラム94を第3者の不正複製から保護することができる。
 <H.付記>
 上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
 制御対象(900)の制御に係るプログラムを実行する制御装置(100)と、
 前記制御装置と通信可能なセキュリティ装置(200)と、を備え、
 前記セキュリティ装置は、
  鍵(93)を格納する鍵格納部(205)と、
  暗号化済みの前記プログラム(91)を前記鍵で復号する復号化部(23)と、を含み、
  前記プログラムが実行されるとき、前記復号を実施して復号済みプログラム(94)を前記制御装置に転送し、
 前記制御装置は、
  前記セキュリティ装置から転送される前記復号済みプログラムを記憶する揮発性記憶部(130)を、含む、制御システム(1)。
[構成2]
 制御対象(900)の制御に係るプログラムを実行する制御装置(100)と通信可能なセキュリティ装置(200)であって、
 前記制御装置は、
  前記セキュリティ装置から転送されるプログラムを記憶する揮発性記憶部(130)を含み、
 前記セキュリティ装置は、
  鍵(93)を格納する鍵格納部(205)と、
  暗号化済みのプログラム(91)を前記鍵で復号する復号化部(23)と、を含み、
  前記プログラムが実行されるとき、前記復号を実施して復号済みプログラム(94)を前記制御装置に転送する、セキュリティ装置。
[構成3]
 前記鍵格納部は、前記セキュリティ装置とは異なる装置による読出しが禁止される読出禁止領域(207)を有し、
 前記鍵は、前記読出禁止領域に格納される、構成2に記載のセキュリティ装置。
[構成4]
 前記暗号化済みのプログラムは、前記セキュリティ装置または前記制御装置に備えられる不揮発性記憶部(234,131)に格納される、構成2または3に記載のセキュリティ装置。
[構成5]
 前記セキュリティ装置または前記制御装置は、外部の情報処理装置(500)と通信可能であり、
 前記情報処理装置は、前記暗号化済みのプログラムを、前記セキュリティ装置または前記制御装置に転送する、構成4に記載のセキュリティ装置。
[構成6]
 前記セキュリティ装置は、外部の情報処理装置(500)と通信可能であり、
 前記セキュリティ装置は、
 前記暗号化済みのプログラムを生成する暗号化部(21)と、
 前記情報処理装置から転送される、所定の鍵で暗号化されたプログラムを復号する第1復号化部(22)と、を含み、
 前記暗号化部は、
 前記所定の鍵で暗号化されたプログラムを前記第1復号化部により復号した上で、前記鍵格納部の鍵で暗号化することにより前記暗号化済みのプログラムを生成する、構成4に記載のセキュリティ装置。
[構成7]
 前記セキュリティ装置は、
 前記所定の鍵で暗号化されたプログラムを前記第1復号化部により復号した上で、前記暗号化部による暗号化が完了するまで保持する、構成6に記載のセキュリティ装置。
[構成8]
 前記セキュリティ装置は、さらに、
 前記暗号化部により生成される前記暗号化済みのプログラムを、自装置の前記不揮発性記憶部に格納する、または前記制御装置に転送する、構成6または7に記載のセキュリティ装置。
[構成9]
 前記鍵格納部の前記鍵は、秘密鍵または共通鍵を含む、構成2から8のいずれか1に記載のセキュリティ装置。
[構成10]
 対象(900)を制御する制御装置(100)が実行する制御に係るプログラムのセキュリティを設定する方法であって、
 前記制御装置はセキュリティ装置(200)と通信可能であり、
 前記方法は、
 前記プログラムが実行されるとき、
  前記セキュリティ装置が、暗号化済みの前記プログラム(91)を当該セキュリティ装置が保持する鍵(93)で復号した上で、前記制御装置に転送するステップと、
  前記制御装置が、前記セキュリティ装置から転送される前記復号がなされたプログラム(94)を当該制御装置が備える揮発性記憶部(130)に格納するステップと、を備える、方法。
 今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 1 制御システム、10 ネットワーク、21 暗号化部、22 簡易復号化部、23 復号化部、90 制御プログラム、91 暗号化済み制御プログラム、92 簡易暗号化済み制御プログラム、93 鍵、94 復号済み制御プログラム、95,223 システムプログラム、97 サービスプログラム、100 制御ユニット、102,202,502 プロセッサ、104,204 チップセット、106,206,504 主記憶装置、108,208,510 二次記憶装置、110 フィールドネットワーク、111,210 通信コントローラ、112,212 コントローラ、114,214 メモリカードインターフェイス、115,215 メモリカード、116,118,120,216,218 ネットワークコントローラ、122 内部バスコントローラ、124,224 インジケータ、125 スイッチインターフェイス、126 ディップスイッチ、130 揮発性記憶領域、131,234 不揮発性記憶領域、200 セキュリティユニット、205 セキュアチップ、207 メモリ、230 簡易復号化処理プログラム、231,5105 暗号化処理プログラム、232 復号化処理プログラム、250 専用ツール、300 セーフティユニット、400 機能ユニット、450 電源ユニット、500 サポート装置、506 入力部、508 出力部、512 光学ドライブ、514 記録媒体、518 プロセッサバス、520 通信インターフェイス、600 サーバ装置、700 ゲートウェイ、800 表示装置、900 制御対象、1000 ネットワーク環境、5104 サポートプログラム、5106 簡易暗号化処理プログラム。

Claims (10)

  1.  制御対象の制御に係るプログラムを実行する制御装置と、
     前記制御装置と通信可能なセキュリティ装置と、を備え、
     前記セキュリティ装置は、
      鍵を格納する鍵格納部と、
      暗号化済みの前記プログラムを前記鍵で復号する復号化部と、を含み、
      前記プログラムが実行されるとき、前記復号を実施して復号済みプログラムを前記制御装置に転送し、
     前記制御装置は、
      前記セキュリティ装置から転送される前記復号済みプログラムを記憶する揮発性記憶部を、含む、制御システム。
  2.  制御対象の制御に係るプログラムを実行する制御装置と通信可能なセキュリティ装置であって、
     前記制御装置は、
      前記セキュリティ装置から転送されるプログラムを記憶する揮発性記憶部を含み、
     前記セキュリティ装置は、
      鍵を格納する鍵格納部と、
      暗号化済みのプログラムを前記鍵で復号する復号化部と、を含み、
      前記プログラムが実行されるとき、前記復号を実施して復号済みプログラムを前記制御装置に転送する、セキュリティ装置。
  3.  前記鍵格納部は、前記セキュリティ装置とは異なる装置による読出しが禁止される読出禁止領域を有し、
     前記鍵は、前記読出禁止領域に格納される、請求項2に記載のセキュリティ装置。
  4.  前記暗号化済みのプログラムは、前記セキュリティ装置または前記制御装置に備えられる不揮発性記憶部に格納される、請求項2または3に記載のセキュリティ装置。
  5.  前記セキュリティ装置または前記制御装置は、外部の情報処理装置と通信可能であり、
     前記情報処理装置は、前記暗号化済みのプログラムを、前記セキュリティ装置または前記制御装置に転送する、請求項4に記載のセキュリティ装置。
  6.  前記セキュリティ装置は、外部の情報処理装置と通信可能であり、
     前記セキュリティ装置は、
     前記暗号化済みのプログラムを生成する暗号化部と、
     前記情報処理装置から転送される、所定の鍵で暗号化されたプログラムを復号する第1復号化部と、を含み、
     前記暗号化部は、
     前記所定の鍵で暗号化されたプログラムを前記第1復号化部により復号した上で、前記鍵格納部の鍵で暗号化することにより前記暗号化済みのプログラムを生成する、請求項4に記載のセキュリティ装置。
  7.  前記セキュリティ装置は、
     前記所定の鍵で暗号化されたプログラムを前記第1復号化部により復号した上で、前記暗号化部による暗号化が完了するまで保持する、請求項6に記載のセキュリティ装置。
  8.  前記セキュリティ装置は、さらに、
     前記暗号化部により生成される前記暗号化済みのプログラムを、自装置の前記不揮発性記憶部に格納する、または前記制御装置に転送する、請求項6または7に記載のセキュリティ装置。
  9.  前記鍵格納部の前記鍵は、秘密鍵または共通鍵を含む、請求項2から8のいずれか1項に記載のセキュリティ装置。
  10.  対象を制御する制御装置が実行する制御に係るプログラムのセキュリティを設定する方法であって、
     前記制御装置はセキュリティ装置と通信可能であり、
     前記方法は、
     前記プログラムが実行されるとき、
      前記セキュリティ装置が、暗号化済みの前記プログラムを当該セキュリティ装置が保持する鍵で復号した上で、前記制御装置に転送するステップと、
      前記制御装置が、前記セキュリティ装置から転送される前記復号がなされたプログラムを当該制御装置が備える揮発性記憶部に格納するステップと、を備える、方法。
PCT/JP2020/006266 2019-03-28 2020-02-18 制御システム、セキュリティ装置および方法 WO2020195348A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202080018568.XA CN113518952A (zh) 2019-03-28 2020-02-18 控制系统、保密装置以及方法
US17/437,833 US20220156392A1 (en) 2019-03-28 2020-02-18 Control system, security device, and method
EP20779412.4A EP3951518A4 (en) 2019-03-28 2020-02-18 CONTROL SYSTEM, SAFETY DEVICE AND PROCEDURE

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019063354A JP7300866B2 (ja) 2019-03-28 2019-03-28 制御システム
JP2019-063354 2019-03-28

Publications (1)

Publication Number Publication Date
WO2020195348A1 true WO2020195348A1 (ja) 2020-10-01

Family

ID=72611863

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/006266 WO2020195348A1 (ja) 2019-03-28 2020-02-18 制御システム、セキュリティ装置および方法

Country Status (5)

Country Link
US (1) US20220156392A1 (ja)
EP (1) EP3951518A4 (ja)
JP (1) JP7300866B2 (ja)
CN (1) CN113518952A (ja)
WO (1) WO2020195348A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI775061B (zh) * 2020-03-30 2022-08-21 尚承科技股份有限公司 軟韌體或資料保護系統及保護方法
JP2022138824A (ja) * 2021-03-11 2022-09-26 オムロン株式会社 制御システムおよびその制御方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110512A (ja) 1992-09-25 1994-04-22 Matsushita Electric Works Ltd プログラマブルコントローラ
JP2004164491A (ja) * 2002-11-15 2004-06-10 Matsushita Electric Ind Co Ltd プログラム更新方法およびサーバ
JP2009263869A (ja) * 2008-04-22 2009-11-12 N-Crypt Inc 電子鍵システム
JP2015152996A (ja) * 2014-02-12 2015-08-24 セイコーエプソン株式会社 プリンター及びプリンターの制御方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3327628B2 (ja) * 1993-06-18 2002-09-24 キヤノン株式会社 電子機器およびその制御方法
DE50111786D1 (de) * 2000-12-15 2007-02-15 Siemens Ag Verschlüsselung von Steuerungsprogrammen
JP2003108385A (ja) 2001-09-28 2003-04-11 Toshiba Corp 着脱型外部記憶装置を利用したコンピュータシステムおよびコンピュータ利用方法
JP2006514321A (ja) * 2003-02-03 2006-04-27 ノキア コーポレイション 暗号化されたアプリケーションをインストールするためのアーキテクチャ
CN101359423B (zh) * 2007-08-03 2011-08-24 中兴通讯股份有限公司 用于永磁操作机构控制器的遥控方法
US9798898B2 (en) * 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
KR101676980B1 (ko) * 2012-12-20 2016-11-29 미쓰비시덴키 가부시키가이샤 제어 시스템 및 프로그램 송신 장치 및 인증 서버 및 프로그램 보호 방법 및 프로그램 송신 방법 및 프로그램 송신 장치의 프로그램
US9535712B2 (en) * 2013-12-04 2017-01-03 Insyde Software Corp. System and method to store data securely for firmware using read-protected storage
EP3451575B8 (en) * 2014-06-13 2021-03-17 BicDroid Inc. Methods, systems and computer program product for providing encryption on a plurality of devices
JP6751856B2 (ja) * 2016-06-02 2020-09-09 パナソニックIpマネジメント株式会社 情報処理装置および情報処理システム
CN106454757A (zh) * 2016-11-23 2017-02-22 北京坦达信息科技有限公司 一种无线宽带网的通信加密解密方法
JP7019976B2 (ja) 2017-06-26 2022-02-16 大日本印刷株式会社 セキュアエレメント、コンピュータプログラム、デバイス、os起動システム及びos起動方法
JP7006028B2 (ja) 2017-08-31 2022-02-10 株式会社富士通ゼネラル 熱交換器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110512A (ja) 1992-09-25 1994-04-22 Matsushita Electric Works Ltd プログラマブルコントローラ
JP2004164491A (ja) * 2002-11-15 2004-06-10 Matsushita Electric Ind Co Ltd プログラム更新方法およびサーバ
JP2009263869A (ja) * 2008-04-22 2009-11-12 N-Crypt Inc 電子鍵システム
JP2015152996A (ja) * 2014-02-12 2015-08-24 セイコーエプソン株式会社 プリンター及びプリンターの制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3951518A4

Also Published As

Publication number Publication date
JP2020166317A (ja) 2020-10-08
JP7300866B2 (ja) 2023-06-30
EP3951518A1 (en) 2022-02-09
US20220156392A1 (en) 2022-05-19
CN113518952A (zh) 2021-10-19
EP3951518A4 (en) 2023-01-04

Similar Documents

Publication Publication Date Title
US9998464B2 (en) Storage device security system
CN102208001B (zh) 硬件支持的虚拟化密码服务
US11683451B2 (en) Self-healing video surveillance system
US10664263B2 (en) Software management system, software updater, software updating method, and non-transitory computer-readable storage medium storing software update program
WO2020195348A1 (ja) 制御システム、セキュリティ装置および方法
US20180218140A1 (en) Encryption authorization dongle having volatile memory
US11321186B2 (en) Data backup system and method
WO2022185583A1 (ja) 制御装置、ならびに制御装置の記憶部に保存されたデータの入出力を管理するプログラムおよび方法
CN116707782A (zh) 密码批量自动化更改方法、装置、电子设备及存储介质
JP2017183930A (ja) サーバ管理システム、サーバ装置、サーバ管理方法、及びプログラム
CN109150813B (zh) 一种设备的验证方法及装置
US20220317649A1 (en) Control system, control device, and management method
JP5370695B2 (ja) 記憶装置制御システム及び記憶装置制御システムの記憶装置管理方法
WO2022190422A1 (ja) 制御システムおよびその制御方法
JP5304366B2 (ja) 記憶媒体ユニット,及び、記憶媒体自動消去システム
KR102052489B1 (ko) 래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 및 엔지니어링 툴
JP2006215714A (ja) Macアドレスを有する着脱型デバイスを用いたライセンス認証システム及び方法
JP7462860B1 (ja) プログラム可能機器、バージョン管理システム、バージョン管理方法及びプログラム
JP7400215B2 (ja) 制御装置、データ不能化プログラム、および制御システム
WO2020217741A1 (ja) 認証ファイル作成装置、制御システム、プログラム、および制御方法
JP7318264B2 (ja) コントローラシステム
JP2010122717A (ja) サーバ管理システム
JP2022108027A (ja) 制御装置、管理方法およびセキュリティプログラム
CN116997898A (zh) 控制系统及其控制方法
Luna Product Overview

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20779412

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020779412

Country of ref document: EP

Effective date: 20211028