WO2020195638A1 - コントローラシステム - Google Patents

コントローラシステム Download PDF

Info

Publication number
WO2020195638A1
WO2020195638A1 PCT/JP2020/009133 JP2020009133W WO2020195638A1 WO 2020195638 A1 WO2020195638 A1 WO 2020195638A1 JP 2020009133 W JP2020009133 W JP 2020009133W WO 2020195638 A1 WO2020195638 A1 WO 2020195638A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
control program
control
controller system
unit
Prior art date
Application number
PCT/JP2020/009133
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 EP20777832.5A priority Critical patent/EP3951624A4/en
Priority to US17/438,468 priority patent/US11768940B2/en
Priority to CN202080018665.9A priority patent/CN113557507A/zh
Publication of WO2020195638A1 publication Critical patent/WO2020195638A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • 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/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • 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/10Plc systems
    • G05B2219/12Plc mp multi processor system
    • G05B2219/1207Download programcode to node, I-O and execute programcode
    • 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/23Pc programming
    • G05B2219/23304Download program from host
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Definitions

  • the present invention relates to the security of a controller system that executes a control program.
  • a controller system such as a PLC (programmable logic controller) is used to control various facilities and various devices arranged in each facility.
  • the control device can monitor an abnormality that occurs in the equipment or machine to be controlled, and can also monitor an abnormality of the control device itself. When any abnormality is detected, the control device notifies the outside in some way.
  • Patent Document 1 Japanese Patent Application Laid-Open No. 2000-137506 is a programmable controller that sends an e-mail to a predetermined destination when an abnormality history is registered or when a predetermined time has arrived. To disclose.
  • controller system is also connected to various external devices via a network, and the processing executed in the controller system is also becoming more sophisticated. It is expected that the controller system will be exposed to various threats due to such networking or intelligentization. Therefore, measures are needed to protect the controller system from possible threats.
  • One object of the present invention is to solve a new problem of protection against threats that may occur due to networking or intelligentization of a controller system.
  • An example of the present disclosure is a controller system, in which a program acquisition unit that acquires a control program from a server in which a control program is stored by turning on the power to the controller system, and a program acquisition unit while power is supplied to the controller system.
  • a volatile storage device that stores the control program acquired by the unit and erases the control program by stopping the supply of power to the controller system, and a program execution unit that executes the control program stored in the volatile storage device.
  • control program is stored in the controller system only while the power is supplied to the controller system.
  • the control program is not stored in the controller system when the controller system is not powered. Therefore, the possibility of information (control program) leaking from the controller system can be reduced. As a result, it is possible to realize protection against threats that may occur due to networking or intelligentization of the controller system.
  • the controller system further includes a program management unit that manages the correctness of the control program by verifying the identity of the information associated with the control program.
  • the controller system determines whether the control program obtained from the server is legitimate. be able to.
  • the program acquisition unit receives the control program and the program ID associated with the control program from the server by encrypted communication with the server, and the program management unit has tampered with the control program and the program ID.
  • the control program is stored in the volatile storage device.
  • the controller system determines whether the control program acquired from the server is correct. Therefore, when the control program is tampered with, the controller system can detect the tampering. Further, by comparing the program ID and the verification ID, it is possible to determine in the controller system whether or not the control program is correct.
  • the "program ID” means an ID attached to the program. The type of ID is not limited as long as the ID can identify the program. For example, the serial ID of the program may be used as the "program ID".
  • the program management unit generates a holding variable which is a variable for holding the state of the controller system, uploads the holding variable to the server when the controller system is shut down, and the program acquisition unit is a control program and a program. Get the holding variable from the server along with the ID.
  • the state of the controller system can be restored after rebooting. Further, after shutting down the controller system, it is possible to prevent various information indicating the operating state of the controller system from being leaked from the controller system.
  • the controller system further comprises a non-volatile storage device that non-volatilely stores the hash value generated from the previously executed control program, and the program management unit is a hash of the control program acquired by the program acquisition unit. A value is generated, and when the hash value generated by the program management unit matches the hash value stored in the non-volatile storage device, the control program is stored in the volatile storage device.
  • the controller system can determine whether or not the control program acquired from the server is the same as the control program executed last time. Therefore, when the control program is tampered with, the controller system can detect the tampering.
  • Controller system 1 First, the configuration of the controller system 1 according to the present embodiment will be described.
  • FIG. 1 is an external view showing a configuration example of the controller system 1 according to the present embodiment.
  • the controller system 1 includes a control unit 100, a security unit 200, a safety unit 300, one or more functional units 400, and a power supply unit 450.
  • control unit 100 and the security unit 200 are connected via an arbitrary data transmission line (for example, PCI Express (registered trademark) or Ethernet (registered trademark)).
  • control unit 100 and the safety unit 300 and one or more functional units 400 are connected via an internal bus (not shown).
  • the control unit 100 executes a central process in the controller system 1.
  • the control unit 100 executes a control operation for controlling a controlled object according to an arbitrarily designed requirement specification.
  • the control calculation executed by the control unit 100 is also referred to as "standard control" in comparison with the control calculation executed by the safety unit 300.
  • the control unit 100 has one or a plurality of communication ports.
  • the control unit 100 corresponds to a processing execution unit that executes standard control according to a standard control program.
  • the security unit 200 is connected to the control unit 100 and is in charge of the security function for the controller system 1.
  • the security unit 200 has one or more communication ports. Details of the security function provided by the security unit 200 will be described later.
  • the safety unit 300 executes a control calculation for realizing a safety function related to a controlled object independently of the control unit 100.
  • the control calculation executed by the safety unit 300 is also referred to as "safety control".
  • safety control is designed to meet the requirements for realizing the safety function specified in IEC 61508 or the like.
  • Safety control is a general term for processes for preventing human safety from being threatened by equipment or machines.
  • the functional unit 400 provides various functions for realizing control for various control targets by the controller system 1.
  • the functional unit 400 may typically include an I / O unit, a safety I / O unit, a communication unit, a motion controller unit, a temperature control unit, a pulse counter unit, and the like.
  • the I / O unit for example, a digital input (DI) unit, a digital output (DO) unit, an analog output (AI) unit, an analog output (AO) unit, a pulse catch input unit, and a plurality of types are mixed. Examples include a composite unit.
  • the safety I / O unit is in charge of I / O processing related to safety control.
  • the power supply unit 450 supplies power of a predetermined voltage to each unit constituting the controller system 1.
  • FIG. 2 is a schematic diagram showing a hardware configuration example of the control unit 100 constituting the controller system 1 according to the present embodiment.
  • the control unit 100 has a processor 102 such as a CPU (Central Processing Unit) and a GPU (Graphical Processing Unit), a chipset 104, a main storage device 106, and a secondary storage device as main components. It includes 108, a communication controller 110, a USB (Universal Serial Bus) controller 112, a memory card interface 114, network controllers 116, 118, 120, an internal bus controller 122, and an indicator 124.
  • a processor 102 such as a CPU (Central Processing Unit) and a GPU (Graphical Processing Unit)
  • chipset 104 such as a main storage device 106
  • main storage device 106 main storage device
  • secondary storage device main components. It includes 108, a communication controller 110, a USB (Universal Serial Bus) controller 112, a memory card interface 114, network controllers 116, 118, 120, an internal bus controller 122,
  • the processor 102 expands and executes various programs in the main storage device 106 to realize control calculations related to standard control and various processes as described later.
  • the processor 102 a configuration having a plurality of cores may be adopted, or a plurality of processors 102 may be arranged. That is, the control unit 100 has one or more processors 102 and / or a processor 102 having one or more cores.
  • 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.
  • the main storage device 106 is a volatile storage device and holds information while power is supplied to the control unit 100.
  • the secondary storage device 108 is a non-volatile storage device and stores a system program.
  • the secondary storage device 108 may store a key and a certificate for encrypted communication.
  • the control program executed by the processor 102 is acquired from the remote (server) and deployed in the main storage device 106 when the control unit 100 is started.
  • the control program is not stored in the secondary storage device 108. Therefore, when the power of the control unit 100 is turned off, the control program is deleted from the main storage device 106. As a result, the control program is not stored in the control unit 100.
  • the control program is stored in the control unit 100 only while the power is supplied to the control unit 100.
  • the communication controller 110 is in charge of exchanging data with the security unit 200.
  • the communication controller 110 for example, a communication chip corresponding to PCI Express or Ethernet can be adopted.
  • the USB controller 112 is in charge of exchanging data with an arbitrary information processing device via a USB connection.
  • the memory card interface 114 is configured so that the memory card 115 can be attached and detached, and data such as a control program and various settings can be written to the memory card 115, or data such as a control program and various settings can be written from the memory card 115. It is possible to read it.
  • Each of the network controllers 116, 118, 120 is in charge of exchanging data with and from any device via the network.
  • the network controllers 116, 118, 120 may employ industrial network protocols such as EtherCAT®, EtherNet / IP®, DeviceNet®, CompoNet®.
  • the internal bus controller 122 is in charge of exchanging data with the safety unit 300 and one or a plurality of functional units 400 constituting the controller system 1.
  • a manufacturer-specific communication protocol may be used, or a communication protocol that is the same as or compliant with any industrial network protocol may be used.
  • the indicator 124 notifies the operating state of the control unit 100 and the like, and is composed of one or a plurality of LEDs arranged on the surface of the unit.
  • the indicator 124 corresponds to a notification unit that notifies an error such as falsification of a control program.
  • FIG. 2 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 (Operating Systems) having different uses in parallel, and to execute necessary applications on each OS.
  • OSs Operating Systems
  • FIG. 3 is a schematic diagram showing a hardware configuration example of the security unit 200 constituting the controller system 1 according to the present embodiment.
  • the security unit 200 has, as main components, a processor 202 such as a CPU and a GPU, a chipset 204, a main storage device 206, a secondary storage device 208, a communication controller 210, and a USB controller. Includes 212, memory card interface 214, network controllers 216, 218, and indicator 224.
  • the processor 202 realizes various security functions as described later by reading various programs stored in the secondary storage device 208, deploying them in the main storage device 206, and executing the programs.
  • the chipset 204 realizes the processing of the security unit 200 as a whole by mediating the exchange of data between the processor 202 and each component.
  • the secondary storage device 208 stores the security system program that operates in the execution environment provided by the system program.
  • the secondary storage device 208 may store a key (private key or public key) and a certificate for encrypted communication.
  • the communication controller 210 is in charge of exchanging data with and from the control unit 100.
  • a communication chip corresponding to, for example, PCI Express or Ethernet can be adopted for the control unit 100 in the same manner as the communication controller 210.
  • the USB controller 212 is in charge of exchanging data with an arbitrary information processing device via a USB connection.
  • the memory card interface 214 is configured so that the memory card 215 can be attached and detached, and data such as a control program and various settings can be written to the memory card 215, or data such as a control program and various settings can be written from the memory card 215. It is possible to read it.
  • Each of the network controllers 216 and 218 is in charge of exchanging data with and from any device via the network.
  • the network controllers 216 and 218 may employ a general-purpose network protocol such as Ethernet.
  • the indicator 224 notifies the operating state of the security unit 200, etc., and is composed of one or a plurality of LEDs arranged on the surface of the unit.
  • FIG. 3 shows a configuration example in which the necessary functions are provided by the processor 202 executing the program, and some or all of these provided functions are provided by a dedicated hardware circuit (for example, ASIC). Alternatively, it may be implemented using FPGA or the like). Alternatively, the main part of the security unit 200 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.
  • FIG. 4 is a schematic diagram showing a hardware configuration example of the safety unit 300 constituting the controller system 1 according to the present embodiment.
  • the safety unit 300 has, as main components, a processor 302 such as a CPU and a GPU, a chipset 304, a main storage device 306, a secondary storage device 308, a memory card interface 314, and an internal structure. It includes a bus controller 322 and an indicator 324.
  • the processor 302 reads various programs stored in the secondary storage device 308, expands them in the main storage device 306, and executes them to realize control calculations related to safety control and various processes as described later. ..
  • the chipset 304 realizes the processing of the safety unit 300 as a whole by mediating the exchange of data between the processor 302 and each component.
  • the secondary storage device 308 stores a safety program that operates in the execution environment provided by the system program.
  • the memory card interface 314 is configured so that the memory card 315 can be attached and detached, and data such as safety programs and various settings can be written to the memory card 315, or data such as safety programs and various settings can be written from the memory card 315. It is possible to read it.
  • the internal bus controller 322 is in charge of exchanging data with the control unit 100 via the internal bus.
  • the indicator 324 notifies the operating state of the safety unit 300 and the like, and is composed of one or a plurality of LEDs arranged on the surface of the unit.
  • FIG. 4 shows a configuration example in which the necessary functions are provided by the processor 302 executing the program, and some or all of these provided functions are provided by a dedicated hardware circuit (for example, ASIC). Alternatively, it may be implemented using an FPGA or the like). Alternatively, the main part of the safety unit 300 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.
  • FIG. 5 is a schematic diagram showing a typical example of the control system 10 including the controller system 1 according to the present embodiment.
  • control system 10 shown in FIG. 5 targets two lines (line A and line B) as control targets.
  • each line is equipped with a conveyor that conveys the work, as well as a robot that can exert any physical action on the work on the conveyor.
  • the control unit 100 is arranged on each of the line A and the line B.
  • the security unit 200 and the safety unit 300 constitute the controller system 1.
  • the description of the functional unit 400 and the power supply unit 450 is omitted in FIG.
  • the security unit 200 of the controller system 1 is connected to the first network 2 via the communication port 242 (network controller 216 in FIG. 3). It is assumed that the support device 600 and the SCADA (Supervisory Control And Data Acquisition) device 700 are connected to the first network 2. Ethernet or OPC-UA (Object Linking and Embedding for Process Control Unified Architecture) or the like can be adopted for the first network 2.
  • SCADA Supervisory Control And Data Acquisition
  • the support device 600 has at least access to the control unit 100, and provides the user with functions such as creating a program executed by each unit included in the controller system 1, debugging, and setting various parameters. Tools for purposes such as development may be installed in the support device 600.
  • the tool is, for example, "Sysmac Studio” manufactured by OMRON Corporation.
  • the SCADA device 700 presents various information obtained by the control calculation in the controller system 1 to the operator, and generates an internal command or the like for the controller system 1 according to the operation from the operator.
  • the SCADA device 700 also has a function of collecting data handled by the controller system 1.
  • the control unit 100 of the controller system 1 is connected to the second network 4 via the communication port 142 (network controller 116 in FIG. 2). It is assumed that the HMI (Human Machine Interface) 800, the database 900, and the server 50 are connected to the second network 4.
  • HMI Human Machine Interface
  • the HMI 800 can be realized by a personal computer.
  • the HMI 800 presents various information obtained by the control calculation in the controller system 1 to the operator, and generates an internal command or the like for the controller system 1 according to the operation from the operator.
  • the HMI 800 may store a certificate for encrypted communication with the controller system 1.
  • the HMI 800 can be configured to be portable to FA maintainers.
  • the database 900 collects various data transmitted from the controller system 1 (for example, information on traceability measured from each work).
  • the server 50 stores the control program 51 executed by the control unit 100. Further, the server 50 may store various kinds of information for guaranteeing the validity of the control program 51. For example, the server 50 may store information for ensuring the validity of the control program 51 (information for proving that the control program 51 has not been tampered with).
  • the control unit 100 of the controller system 1 is connected to one or more field devices 500 via the communication port 144 (network controller 118 in FIG. 2).
  • the field device 500 includes a sensor and a detector that collect various information necessary for control calculation from a controlled object, an actuator that exerts some action on the controlled object, and the like.
  • the field device 500 exchanges signals with a robot that exerts some external action on the work, a conveyor that conveys the work, and sensors and actuators arranged in the field. Including units and so on.
  • control unit 100 in charge of line B is also connected to one or more field devices 500 via the communication port 144 (network controller 118 in FIG. 2).
  • the control unit 100 is an information engine 160 that exchanges data between a control engine 150, which is a processing execution unit that executes control calculations related to standard control, and an external device. And include.
  • the security unit 200 includes a security engine 250 for realizing a security function as described later.
  • the safety unit 300 includes a safety engine 350, which is a processing execution unit that executes a control calculation related to safety control.
  • Each engine is realized by any hardware element such as the processor of each unit, any software element such as various programs, or a combination of these elements.
  • Each engine can be implemented in any form.
  • controller system 1 includes a broker 170 that mediates the exchange between engines.
  • the entity of the broker 170 may be located in one or both of the control unit 100 and the security unit 200.
  • the control engine 150 holds a variable table, a function block (FB), and the like necessary for executing a control operation for controlling a controlled object.
  • Each variable stored in the variable table is periodically collected by the value acquired from the field device 500 by the I / O refresh process, and each value is periodically reflected in the field device 500.
  • the log of the control operation in the control engine 150 may be stored in the log database 180.
  • the information engine 160 executes arbitrary information processing on the data (variable values held in the variable table) held by the control unit 100.
  • the information engine 160 includes a process of periodically transmitting data held by the control unit 100 to a database 900 or the like. SQL or the like is used for transmitting such data.
  • the security engine 250 detects an unauthorized intrusion that occurs in the controller system 1, processes according to the detected unauthorized intrusion, determines whether or not an incident has occurred, and executes processing according to the incident that has occurred.
  • the behavior of the security engine 250 is stored as security information 260.
  • the security engine 250 notifies with an indicator 224 that some security-related event has occurred or the level of the security-related event that has occurred.
  • the safety engine 350 corresponds to a detection means for detecting whether or not some kind of unauthorized intrusion has occurred in the controller system 1.
  • the safety engine 350 acquires and reflects the safety I / O variables necessary for executing the control calculation related to the safety control via the control unit 100.
  • the log of the safety control in the safety engine 350 may be stored in the log database 360.
  • the broker 170 changes the operations of the control engine 150, the information engine 160, the safety engine 350, and the like.
  • the control program is stored in the control unit 100 only while the power is supplied to the control unit 100.
  • This embodiment is similar to a thin client system in that the program is stored non-volatilely on the server side.
  • the thin client is a mechanism that performs the main processing on the server side while minimizing the functions of the client used by the user.
  • the control system 10 is operated at the site of FA (Factory Automation). Therefore, the control system 10 and the controller system 1 are required to perform high-speed and high-precision control.
  • the controller system 1 executes the control process for high-speed and high-precision control.
  • the present embodiment is different from a general thin client system.
  • FIG. 6 is a diagram showing some differences between the control system according to the present embodiment and a general thin client system in a tabular format.
  • the control system according to this embodiment is referred to as "FA” in FIG.
  • a general thin client system is described as "IT” in FIG.
  • the following points can be mentioned as the differences between the control system according to the present embodiment and the general thin client system.
  • the input to the control system is an I / O input from a sensor or the like.
  • the input is an input from an input device used by the user, such as a keyboard or a mouse.
  • the output from the control system is an I / O output to a field device (servo motor, etc.) or the like.
  • screen information is output from the server to the client.
  • High speed processing is required for reasons such as synchronization between the control unit and other units.
  • the process is performed in microseconds. That is, processing that is executed in substantially real time is required.
  • the processing speed may be such that the update of the screen on the client side does not seem to be slow for the user. In one example, the processing speed is about 100 ms to 1 second.
  • the interaction is between the control device (controller system 1) and the server, whereas in the thin client system, the interaction between the person (user) and the server. Is.
  • Target of authentication is a device (for example, a serial ID or a security chip).
  • the target of authentication is the user (login information).
  • the controller system 1 downloads a control program (specifically, an object code) from the server 50.
  • a control program specifically, an object code
  • the client basically does not download data from the server.
  • FIG. 7 is a schematic diagram showing a functional configuration example included in the control unit 100 according to the present embodiment.
  • the main storage device 106 stores the control program 1104.
  • the processor 102 periodically executes the control program 1104 under the OS (Operating System).
  • the processor 102 includes a server inquiry unit 151, a program acquisition unit 152, a program management unit 153, and a program execution unit 154.
  • the controller system 1 is started by turning on the power to the controller system 1.
  • the server inquiry unit 151 executes an inquiry and authentication to the server 50 in order to download the control program (user program) from the server 50 (see FIG. 5).
  • the program acquisition unit 152 acquires (downloads) the control program from the server according to a predetermined procedure.
  • the program management unit 153 verifies the validity of the downloaded control program. Specifically, the program management unit 153 manages the correctness of the control program by verifying the identity of the information associated with the control program. If the downloaded control program is valid, the control program is stored in the main storage device 106. On the other hand, if the downloaded user program is not valid, the program management unit 153 controls the notification unit including the indicator 124 so as to output the notification. The program execution unit 154 executes the control program 1104 stored in the main storage device 106.
  • FIG. 8 is a diagram illustrating the transfer of the user program to the control unit 100 according to the present embodiment. With reference to FIG. 8, no information is stored in the main storage device 106 before the power is turned on (step (1)).
  • the support device 600 converts the source code 601 created by the user into a program (object code) to generate a control program 51 (denoted as "UPG1" in FIG. 8), and stores the control program 51 in the server 50.
  • the processor 102 executes an inquiry and authentication process on the server 50 (step (2)).
  • the server 50 authenticates the control unit 100.
  • the processor 102 program acquisition unit 152 shown in FIG. 7) downloads the control program 51 from the server 50.
  • the control program 51 is stored in the main storage device 106 (step (3)).
  • control program 51 When the control program 51 is stored in the main storage device 106, the processor 102 (program execution unit 154 shown in FIG. 7) calls and executes the control program including the control program 51 (step (4)). As a result, the control unit 100 operates normally.
  • step (5) When the power of the control unit 100 is turned off, the information stored in the main storage device 106 is erased (step (5)).
  • control program 51 is erased from the main storage device 106 by turning off the power of the control unit 100. This makes it possible to prevent information leakage from the control unit 100.
  • control program is written in binary code. Even if the control program is read from the control unit 100 when the power of the control unit 100 is turned on, it is difficult to analyze the control program. In this respect as well, in the present embodiment, information leakage can be prevented.
  • the first point is that the server 50 may be disguised. It is necessary to consider the possibility that the control unit 100 downloads an illegal control program from a fake server.
  • the second point is that an unauthorized client may access the server 50. It is necessary to consider the possibility that the control program is stolen from the server 50.
  • SSL Secure Sockets Layer
  • FIG. 9 is a schematic diagram illustrating a flow of transfer and execution of a control program by secure communication between the control unit 100 and the server 50.
  • the server 50 stores the certificate 63 (SSL certificate)
  • the control unit 100 stores the certificate 64 (SSL certificate). This proves that each of the server 50 and the control unit 100 is genuine.
  • control program is transferred from the server 50 to the control unit 100 by using the public key cryptosystem.
  • the control unit 100 can receive the correct control program.
  • the serial ID is information associated with the control program, and is an ID (program ID) associated with the control program stored in the server 50.
  • the control unit 100 also stores the serial ID non-volatilely.
  • the serial ID stored in the control unit 100 is a program ID assigned in advance to the control program.
  • the control unit 100 uses this serial ID as a verification ID. Specifically, the control unit 100 compares the serial ID transferred from the server 50 together with the control program 51 with the verification ID stored in the control unit 100. That is, the control unit 100 verifies the identity of the information (serial ID) associated with the control program. When the two serial IDs match, the control unit 100 stores the control program in the main storage device 106 and executes it. Therefore, the possibility that the control unit 100 executes an illegal program is reduced.
  • the support device 600 creates the transfer data. Specifically, the support device 600 uses a hash function to generate hash values for the control program 53 (denoted as “UPG5” in FIG. 9) and the serial ID 55 (“5555” in the example of FIG. 9). Further, the support device 600 uses the private key 61 to encrypt the hash value to create the digital signature 56. The support device 600 stores a set of the control program 53, the serial ID 55, and the digital signature 56 in the server 50.
  • a hash function to generate hash values for the control program 53 (denoted as “UPG5” in FIG. 9) and the serial ID 55 (“5555” in the example of FIG. 9).
  • the support device 600 uses the private key 61 to encrypt the hash value to create the digital signature 56.
  • the support device 600 stores a set of the control program 53, the serial ID 55, and the digital signature 56 in the server 50.
  • the control unit 100 has been authenticated by the server 50.
  • the control unit 100 accesses the server 50 and requests a control program (step S11).
  • the server 50 transfers the set of the control program 53, the serial ID 55, and the digital signature 56 to the control unit 100 (step S12).
  • the program acquisition unit 152 acquires a set of the control program 53, the serial ID 55, and the digital signature 56.
  • the control unit 100 verifies the digital signature 56 (step S13). Specifically, the program management unit 153 decrypts the digital signature 56 using the public key 62 to obtain a hash value. Further, the program management unit 153 generates a hash value from the control program 53 and the serial ID 55 by using the hash function. The program management unit 153 compares the hash value generated from the control program 53 with the hash value decrypted from the digital signature 56.
  • the program management unit 153 collates the serial ID 55 transferred from the server 50 with the serial ID 1110 stored in advance in the control unit 100 (step S14).
  • the serial ID 1110 is non-volatilely stored in the secondary storage device 108 (see FIG. 2).
  • the program management unit 153 transfers the control program 53 to the main storage device 106.
  • the program execution unit 154 executes the control program 53 stored in the main storage device 106.
  • the program management unit 153 deletes the control program 53.
  • control program 53 and the serial ID 55 may be transferred from the server 50 to the control unit 100 in addition to the digital signature 56.
  • FIG. 10 is a schematic diagram illustrating an example of information transferred from the server 50 together with the control program 53 and the serial ID 55.
  • the control unit 100 uploads the holding variable 58 to the server 50 during the shutdown process (step S16).
  • the holding variable 58 is a variable for holding the state before the shutdown of the control unit 100 even after the restart of the control unit 100.
  • steps S10 to S15 are basically the same as the processing shown in FIG.
  • the support device 600 generates a hash value from the holding variable 58 in addition to the control program 53 and the serial ID 55.
  • the support device 600 encrypts the hash value using the private key 61 to generate the digital signature 56.
  • the control unit 100 accesses the server 50 and requests a control program (step S11).
  • the server 50 transfers the set of the control program 53, the serial ID 55, the holding variable 58, and the digital signature 56 to the control unit 100 (step S12).
  • the program management unit 153 decrypts the digital signature 56 using the public key 62 to obtain a hash value. Further, the program management unit 153 uses a hash function to generate a hash value from the control program 53, the serial ID 55, and the holding variable 58. The program management unit 153 compares the hash value with the hash value decrypted from the digital signature 56 to verify the digital signature (step S13). If both hash values match, the program management unit 153 collates the serial ID 55 transferred from the server 50 with the serial ID 1110 stored in advance in the control unit 100 (step S14). When the serial ID 55 and the serial ID 1110 match, the program management unit 153 transfers the control program 53 to the main storage device 106. The program execution unit 154 (see FIG. 7) executes the control program 53 stored in the main storage device 106.
  • the holding variable 58 may be stored in the main storage device 106. After uploading the holding variable 58 to the server 50, the control unit 100 is shut down. By shutting down the control unit 100, the holding variable 58 can be deleted from the control unit 100.
  • FIG. 11 is a diagram illustrating the transfer of the control program for updating or redistributing the control program.
  • the control unit 100 operates according to the control program 51 (denoted as “UPG1” in FIG. 11) with the power turned on (step (1)).
  • the control program is updated, and the new control program 52 (denoted as "UPG2" in FIG. 11) is stored in the server 50.
  • the server 50 may send a notification of program update to the control unit 100.
  • the control unit 100 executes an inquiry and an authentication process on the server 50 in order to download the control program 52 from the server 50 (step (2)).
  • the control program 52 is downloaded from the server 50 to the control unit 100.
  • the control unit 100 executes the process shown in FIG. 9 or 10 and stores the control program 52 in the main storage device 106 (step (3)).
  • the control program 51 is replaced by a new control program 52.
  • the processor 102 reads the control program 52 from the main storage device 106 and executes it. As a result, the control unit 100 operates normally (step (4)). Also in this case, since the control program is stored only in the main storage device 106, the control program is deleted from the main storage device 106 when the power of the control unit 100 is turned off (step (5)). Therefore, the possibility that the control program is leaked can be reduced.
  • FIG. 12 is a schematic diagram showing a method for detecting falsification of the control program, which can be implemented by the present embodiment.
  • the hash value 65 of the control program 51 executed last time is stored in the secondary storage device 108 of the control unit 100.
  • the hash value 65 may be generated by the program management unit 153 (see FIG. 7). Since the secondary storage device 108 is a non-volatile storage device, the hash value 65 is stored in the control unit 100 even when the power of the control unit 100 is turned off (step (1)).
  • control unit 100 When the power is turned on, the control unit 100 is started. The control unit 100 executes an inquiry and authentication process for the server 50 (step (2)).
  • the server 50 stores the control program 51 (denoted as "UPG1" in FIG. 8). However, it is assumed that the control program 51 stored in the server 50 has been tampered with due to an unauthorized access to the server 50 from the outside. In this case, the invalid control program 59 is stored in the server 50.
  • the control unit 100 downloads the control program 59 from the server 50.
  • the processor 102 program management unit 153) generates the hash value 66 of the control program 59.
  • the processor 102 program management unit 153) collates the hash value 66 with the hash value 65 (step (3)).
  • the processor 102 detects the error and notifies the user of the error.
  • the processor 102 may turn on the indicator 124 to notify the error (step (4)).
  • the processor 102 may cause the HMI 800 (see FIG. 5) to display an error message.
  • the control program downloaded from the server 50 is the same as the control program executed last time by the control unit 100. Therefore, in this case, the control program downloaded from the server 50 is stored in the main storage device 106.
  • the control unit 100 downloads the control program from the server when the power is turned on to the control unit 100.
  • the control program is stored in the main storage device (volatile storage device) of the control unit 100.
  • the control program 51 is erased from the control unit 100. Therefore, the possibility of leakage from the control unit 100 can be reduced.
  • the controller system (1) A program acquisition unit (152) that acquires the control program from the server (50) in which the control program is stored by turning on the power to the controller system (1). While the power is supplied to the controller system (1), the control program acquired by the program acquisition unit (152) is stored, and the control program is erased by stopping the supply of power to the controller system. Volatile storage device (106) and A controller system (1) including a program execution unit (154) that executes the control program stored in the volatile storage device (106).
  • controller system (1) The controller system (1) according to claim 1, further comprising a program management unit (153) that manages the correctness of the control program by verifying the identity of the information associated with the control program.
  • the program acquisition unit (152) receives the control program and the program ID (55) associated with the control program from the server (50) by encrypted communication with the server (50).
  • the program management unit (153) verifies that the control program and the program ID (55) have not been tampered with, and the verification ID (1110) previously assigned to the control program and the program ID (
  • the controller system (1) according to claim 2, wherein the control program is stored in the volatile storage device (106) when it is verified that the match with 55) is verified.
  • the program management unit (153) generates a holding variable which is a variable for holding the state of the controller system (1), and when the controller system (1) is shut down, the holding variable is used by the server (50). ), And The controller system (1) according to claim 3, wherein the program acquisition unit (152) acquires the holding variable together with the control program and the program ID from the server (50).
  • the controller system (1) further includes a non-volatile storage device (108) that non-volatilely stores the hash value (65) generated from the previously executed control program.
  • the program management unit (153) generates a hash value (66) of the control program acquired by the program acquisition unit (152), and the hash value generated by the program management unit (153) is the hash value.
  • the controller system (1) according to claim 2, wherein the control program is stored in the volatile storage device (106) when it matches the hash value stored in the non-volatile storage device.
  • 1 Controller system 2 1st network, 4 2nd network, 10 control system, 50 server, 51, 52, 53, 59, 1104 control program, 55, 1110 serial ID, 56 digital signature, 58 holding variable, 61 private key , 62 public key, 63,64 certificate, 65,66 hash value, 100 control unit, 102,202,302 processor, 104,204,304 chipset, 106,206,306 main storage, 108,208,308 Secondary storage device, 110,210 communication controller, 112,212 USB controller, 114,214,314 memory card interface, 115,215,315 memory card, 116,118,120,216,218 network controller, 122,322 internal Bus controller, 124,224,324 indicator, 142,144,242 communication port, 150 control engine, 151 server inquiry department, 152 program acquisition department, 153 program management department, 154 program execution department, 160 information engine, 170 broker, 180, 360 log database, 200 security unit, 250 security engine, 260 security information, 300 safety unit,

Abstract

コントローラシステム(1)は、コントローラシステム(1)への電源投入により、制御プログラムが記憶されたサーバから制御プログラムを取得するプログラム取得部(152)と、コントローラシステム(1)に電源が供給される間、プログラム取得部(152)により取得された制御プログラムを記憶する主記憶装置(106)と、主記憶装置(106)に記憶された制御プログラムを実行するプログラム実行部(154)とを備える。

Description

コントローラシステム
 本発明は、制御プログラムを実行するコントローラシステムのセキュリティに関する。
 各種設備および各設備に配置される各種装置の制御には、PLC(プログラマブルロジックコントローラ)などのコントローラシステムが用いられる。制御装置は、制御対象の設備や機械に生じる異常を監視するとともに、制御装置自体の異常を監視することも可能である。何らかの異常が検知されると、制御装置から外部に対して何らかの方法で通知がなされる。
 例えば、特開2000-137506号公報(特許文献1)は、異常履歴が登録されたとき、または、予め定められた時間が到来したときに、予め指定された宛先に電子メールを送信するプログラマブルコントローラを開示する。
特開2000-137506号公報
 近年のICT(Information and Communication Technology)の進歩に伴って、コントローラシステムも様々な外部装置とネットワークで接続されるとともに、コントローラシステムにおいて実行される処理も高度化している。このようなネットワーク化あるいはインテリジェント化に伴って、コントローラシステムがさまざまな脅威にさらされることが想定される。したがって想定される脅威からコントローラシステムを守るための方策が必要である。
 従来のコントローラシステムにおいては、設備や機械に生じた異常、または、コントローラシステム自体に生じた異常を検知するのみであり、ネットワーク化あるいはインテリジェント化に伴って生じ得る脅威については、何ら想定されていない。
 本発明の1つの目的は、コントローラシステムのネットワーク化あるいはインテリジェント化に伴って生じ得る脅威に対する保護という新たな課題を解決することである。
 本開示の一例は、コントローラシステムであって、コントローラシステムへの電源投入により、制御プログラムが記憶されたサーバから制御プログラムを取得するプログラム取得部と、コントローラシステムに電源が供給される間、プログラム取得部により取得された制御プログラムを記憶し、コントローラシステムへの電源の供給の停止により、制御プログラムを消去する揮発性記憶装置と、揮発性記憶装置に記憶された制御プログラムを実行するプログラム実行部とを備える。
 上記によれば、コントローラシステムに電源が供給される間のみコントローラシステムに制御プログラムが記憶される。コントローラシステムに電源が供給されないときには制御プログラムはコントローラシステムに格納されていない。したがって、コントローラシステムから情報(制御プログラム)が漏洩する可能性を低減できる。この結果、コントローラシステムのネットワーク化あるいはインテリジェント化に伴って生じ得る脅威に対する保護を実現できる。
 好ましくは、コントローラシステムは、制御プログラムに関連付けられた情報の同一性を検証することにより、制御プログラムの正当性を管理するプログラム管理部をさらに備える。
 上記によれば、制御プログラムに関連付けられた情報が同一である(変更されていない)ことを確認することにより、コントローラシステムは、サーバから取得した制御プログラムが正当なものであるかどうかを判断することができる。
 好ましくは、プログラム取得部は、サーバとの間の暗号化通信により、制御プログラムと、制御プログラムに付随するプログラムIDとをサーバから受信し、プログラム管理部は、制御プログラムおよびプログラムIDが改ざんされていないことを検証し、かつ、制御プログラムに予め付与された検証IDと、プログラムIDとが一致することを検証した場合に、制御プログラムを揮発性記憶装置に格納する。
 上記によれば、サーバから取得した制御プログラムが正しいかどうかをコントローラシステムにおいて判断することができる。したがって、制御プログラムの改ざんがあった場合に、コントローラシステムは、改ざんを検知することができる。また、プログラムIDと検証IDとの比較により、制御プログラムが正しいかどうかをコントローラシステムにおいて判断することができる。「プログラムID」とはプログラムに付されたIDを意味する。プログラムを特定できるIDであれば、IDの種類は限定されない。たとえばプログラムのシリアルIDを「プログラムID」として用いてもよい。
 好ましくは、プログラム管理部は、コントローラシステムの状態を保持するための変数である保持変数を生成して、コントローラシステムのシャットダウン時に保持変数を、サーバにアップロードし、プログラム取得部は、制御プログラムおよびプログラムIDとともに保持変数をサーバから取得する。
 上記によれば、再起動後にコントローラシステムの状態を復元することができる。さらに、コントローラシステムをシャットダウンした後に、コントローラシステムの稼働時の状態を表す様々な情報がコントローラシステムから漏洩することを防ぐことができる。
 好ましくは、コントローラシステムは、前回に実行された制御プログラムから生成されたハッシュ値を不揮発的に保存する不揮発性記憶装置をさらに備え、プログラム管理部は、プログラム取得部により取得された制御プログラムのハッシュ値を生成して、プログラム管理部により生成されたハッシュ値が、不揮発性記憶装置に記憶されたハッシュ値と一致する場合に、制御プログラムを揮発性記憶装置に格納する。
 上記によれば、サーバから取得した制御プログラムが、前回実行された制御プログラムと同一か否かをコントローラシステムにおいて判断することができる。したがって、制御プログラムの改ざんがあった場合に、コントローラシステムは、改ざんを検知することができる。
 本発明によれば、コントローラシステムのネットワーク化あるいはインテリジェント化に伴って生じ得る脅威に対する保護という新たな課題を解決できる。
本実施の形態に係るコントローラシステムの構成例を示す外観図である。 本実施の形態に従うコントローラシステムを構成する制御ユニットのハードウェア構成例を示す模式図である。 本実施の形態に従うコントローラシステムを構成するセキュリティユニットのハードウェア構成例を示す模式図である。 本実施の形態に従うコントローラシステムを構成するセーフティユニットのハードウェア構成例を示す模式図である。 本実施の形態に従うコントローラシステムを含む制御システムの典型例を示す模式図である。 本実施の形態に係る制御システムと、一般的なシンクライアントシステムとの間の一部の相違点を表形式で示した図である。 本実施の形態に従う制御ユニットが備える機能構成例を示す模式図である。 本実施の形態に従う、制御ユニットへのユーザプログラムの転送を説明する図である。 制御ユニットとサーバとの間のセキュア通信による制御プログラムの転送および実行の流れを説明した模式図である。 制御プログラムおよびシリアルIDとともにサーバから転送される情報の例を説明した模式図である。 制御プログラムの更新あるいは再配信のための制御プログラムの転送を説明する図である。 本実施の形態により実施可能な、制御プログラムの改ざんを検知する方法を示した模式図である。
 本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
 <A.コントローラシステム1>
 まず、本実施の形態に従うコントローラシステム1の構成について説明する。
 図1は、本実施の形態に係るコントローラシステム1の構成例を示す外観図である。図1を参照して、コントローラシステム1は、制御ユニット100と、セキュリティユニット200と、セーフティユニット300と、1または複数の機能ユニット400と、電源ユニット450とを含む。
 制御ユニット100とセキュリティユニット200との間は、任意のデータ伝送路(例えば、PCI Express(登録商標)あるいはイーサネット(登録商標)など)を介して接続されている。制御ユニット100とセーフティユニット300および1または複数の機能ユニット400との間は、図示しない内部バスを介して接続されている。
 制御ユニット100は、コントローラシステム1において中心的な処理を実行する。制御ユニット100は、任意に設計された要求仕様に従って、制御対象を制御するための制御演算を実行する。セーフティユニット300で実行される制御演算との対比で、制御ユニット100で実行される制御演算を「標準制御」とも称す。図1に示す構成例において、制御ユニット100は、1または複数の通信ポートを有している。制御ユニット100は、標準制御プログラムに従って標準制御を実行する処理実行部に相当する。
 セキュリティユニット200は、制御ユニット100に接続され、コントローラシステム1に対するセキュリティ機能を担当する。図1に示す構成例において、セキュリティユニット200は、1または複数の通信ポートを有している。セキュリティユニット200が提供するセキュリティ機能の詳細については、後述する。
 セーフティユニット300は、制御ユニット100とは独立して、制御対象に関するセーフティ機能を実現するための制御演算を実行する。セーフティユニット300で実行される制御演算を「セーフティ制御」とも称す。通常、「セーフティ制御」は、IEC 61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理を総称する。
 機能ユニット400は、コントローラシステム1による様々な制御対象に対する制御を実現するための各種機能を提供する。機能ユニット400は、典型的には、I/Oユニット、セーフティI/Oユニット、通信ユニット、モーションコントローラユニット、温度調整ユニット、パルスカウンタユニットなどを包含し得る。I/Oユニットとしては、例えば、デジタル入力(DI)ユニット、デジタル出力(DO)ユニット、アナログ出力(AI)ユニット、アナログ出力(AO)ユニット、パルスキャッチ入力ユニット、および、複数の種類を混合させた複合ユニットなどが挙げられる。セーフティI/Oユニットは、セーフティ制御に係るI/O処理を担当する。
 電源ユニット450は、コントローラシステム1を構成する各ユニットに対して、所定電圧の電源を供給する。
 <B.各ユニットのハードウェア構成例>
 次に、本実施の形態に従うコントローラシステム1を構成する各ユニットのハードウェア構成例について説明する。
 (b1:制御ユニット100)
 図2は、本実施の形態に従うコントローラシステム1を構成する制御ユニット100のハードウェア構成例を示す模式図である。図2を参照して、制御ユニット100は、主たるコンポーネントとして、CPU(Central Processing Unit)やGPU(Graphical Processing Unit)などのプロセッサ102と、チップセット104と、主記憶装置106と、二次記憶装置108と、通信コントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114と、ネットワークコントローラ116,118,120と、内部バスコントローラ122と、インジケータ124とを含む。
 プロセッサ102は、各種プログラムを主記憶装置106に展開して実行することで、標準制御に係る制御演算、および、後述するような各種処理を実現する。プロセッサ102としては、複数のコアを有する構成を採用してもよいし、プロセッサ102を複数配置してもよい。すなわち、制御ユニット100は、1または複数のプロセッサ102、および/または、1または複数のコアを有するプロセッサ102を有している。チップセット104は、プロセッサ102と各コンポーネントとの間のデータの遣り取りを仲介することで、制御ユニット100全体としての処理を実現する。
 主記憶装置106は、揮発性記憶装置であり、制御ユニット100に電源が供給される間、情報を保持する。
 二次記憶装置108は、不揮発性の記憶装置であり、システムプログラムを格納する。二次記憶装置108には、暗号化通信のための鍵および証明書が格納されていてもよい。本実施の形態では、プロセッサ102により実行される制御プログラムは、制御ユニット100の起動時に、リモート(サーバ)から取得されて、主記憶装置106に展開される。制御プログラムは、二次記憶装置108には格納されない。したがって、制御ユニット100の電源がオフされると、主記憶装置106から制御プログラムが削除される。この結果、制御ユニット100に制御プログラムが保存されない。制御ユニット100に電源が供給される間のみ、制御ユニット100に制御プログラムが格納される。
 通信コントローラ110は、セキュリティユニット200との間のデータの遣り取りを担当する。通信コントローラ110としては、例えば、PCI Expressあるいはイーサネットなどに対応する通信チップを採用できる。
 USBコントローラ112は、USB接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。
 メモリカードインターフェイス114は、メモリカード115を着脱可能に構成されており、メモリカード115に対して制御プログラムや各種設定などのデータを書込み、あるいは、メモリカード115から制御プログラムや各種設定などのデータを読出すことが可能になっている。
 ネットワークコントローラ116,118,120の各々は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。ネットワークコントローラ116,118,120は、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などの産業用ネットワークプロトコルを採用してもよい。
 内部バスコントローラ122は、コントローラシステム1を構成するセーフティユニット300や1または複数の機能ユニット400との間のデータの遣り取りを担当する。内部バスには、メーカ固有の通信プロトコルを用いてもよいし、いずれかの産業用ネットワークプロトコルと同一あるいは準拠した通信プロトコルを用いてもよい。
 インジケータ124は、制御ユニット100の動作状態などを通知するものであり、ユニット表面に配置された1または複数のLEDなどで構成される。インジケータ124は、制御プログラムの改ざん等のエラーを通知する通知部に相当する。
 図2には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、制御ユニット100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
 (b2:セキュリティユニット200)
 図3は、本実施の形態に従うコントローラシステム1を構成するセキュリティユニット200のハードウェア構成例を示す模式図である。図3を参照して、セキュリティユニット200は、主たるコンポーネントとして、CPUやGPUなどのプロセッサ202と、チップセット204と、主記憶装置206と、二次記憶装置208と、通信コントローラ210と、USBコントローラ212と、メモリカードインターフェイス214と、ネットワークコントローラ216,218と、インジケータ224とを含む。
 プロセッサ202は、二次記憶装置208に格納された各種プログラムを読み出して、主記憶装置206に展開して実行することで、後述するような各種セキュリティ機能を実現する。チップセット204は、プロセッサ202と各コンポーネントとの間のデータの遣り取りを仲介することで、セキュリティユニット200全体としての処理を実現する。
 二次記憶装置208には、システムプログラムに加えて、システムプログラムが提供する実行環境上で動作するセキュリティシステムプログラムが格納される。二次記憶装置208には、暗号通信のための鍵(秘密鍵や公開鍵)および証明書が格納されていてもよい。
 通信コントローラ210は、制御ユニット100との間のデータの遣り取りを担当する。通信コントローラ210としては、制御ユニット100に通信コントローラ210と同様に、例えば、PCI Expressあるいはイーサネットなどに対応する通信チップを採用できる。
 USBコントローラ212は、USB接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。
 メモリカードインターフェイス214は、メモリカード215を着脱可能に構成されており、メモリカード215に対して制御プログラムや各種設定などのデータを書込み、あるいは、メモリカード215から制御プログラムや各種設定などのデータを読出すことが可能になっている。
 ネットワークコントローラ216,218の各々は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。ネットワークコントローラ216,218は、イーサネットなどの汎用的なネットワークプロトコルを採用してもよい。
 インジケータ224は、セキュリティユニット200の動作状態などを通知するものであり、ユニット表面に配置された1または複数のLEDなどで構成される。
 図3には、プロセッサ202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、セキュリティユニット200の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
 (b3:セーフティユニット300)
 図4は、本実施の形態に従うコントローラシステム1を構成するセーフティユニット300のハードウェア構成例を示す模式図である。図4を参照して、セーフティユニット300は、主たるコンポーネントとして、CPUやGPUなどのプロセッサ302と、チップセット304と、主記憶装置306と、二次記憶装置308と、メモリカードインターフェイス314と、内部バスコントローラ322と、インジケータ324とを含む。
 プロセッサ302は、二次記憶装置308に格納された各種プログラムを読み出して、主記憶装置306に展開して実行することで、セーフティ制御に係る制御演算、および、後述するような各種処理を実現する。チップセット304は、プロセッサ302と各コンポーネントとの間のデータの遣り取りを仲介することで、セーフティユニット300全体としての処理を実現する。
 二次記憶装置308には、システムプログラムに加えて、システムプログラムが提供する実行環境上で動作するセーフティプログラムが格納される。
 メモリカードインターフェイス314は、メモリカード315を着脱可能に構成されており、メモリカード315に対してセーフティプログラムや各種設定などのデータを書込み、あるいは、メモリカード315からセーフティプログラムや各種設定などのデータを読出すことが可能になっている。
 内部バスコントローラ322は、内部バスを介した制御ユニット100との間のデータの遣り取りを担当する。
 インジケータ324は、セーフティユニット300の動作状態などを通知するものであり、ユニット表面に配置された1または複数のLEDなどで構成される。
 図4には、プロセッサ302がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、セーフティユニット300の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
 <C.制御システム10>
 次に、本実施の形態に従うコントローラシステム1を含む制御システム10の典型例について説明する。図5は、本実施の形態に従うコントローラシステム1を含む制御システム10の典型例を示す模式図である。
 一例として、図5に示す制御システム10は、2つのライン(ラインAおよびラインB)を制御対象とする。典型的には、各ラインは、ワークを搬送するコンベアに加えて、コンベア上のワークに対して任意の物理的作用を与えることが可能なロボットが配置されているとする。
 ラインAおよびラインBのそれぞれに制御ユニット100が配置されている。ラインAを担当する制御ユニット100に加えて、セキュリティユニット200およびセーフティユニット300がコントローラシステム1を構成する。なお、説明の便宜上、図5には、機能ユニット400および電源ユニット450の記載を省略している。
 コントローラシステム1のセキュリティユニット200は、通信ポート242(図3のネットワークコントローラ216)を介して第1ネットワーク2に接続されている。第1ネットワーク2には、サポート装置600およびSCADA(Supervisory Control And Data Acquisition)装置700が接続されているとする。第1ネットワーク2には、イーサネットあるいはOPC-UA(Object Linking and Embedding for Process Control Unified Architecture)などを採用することができる。
 サポート装置600は、少なくとも制御ユニット100にアクセス可能になっており、コントローラシステム1に含まれる各ユニットで実行されるプログラムの作成、デバッグ、各種パラメータの設定などの機能をユーザへ提供する。サポート装置600には開発等の目的のためのツールがインストールされていてもよい。ツールはたとえばオムロン社製の「Sysmac Studio」である。
 SCADA装置700は、コントローラシステム1での制御演算によって得られる各種情報をオペレータへ提示するとともに、オペレータからの操作に従って、コントローラシステム1に対して内部コマンドなどを生成する。SCADA装置700は、コントローラシステム1が扱うデータを収集する機能も有している。
 コントローラシステム1の制御ユニット100は、通信ポート142(図2のネットワークコントローラ116)を介して第2ネットワーク4に接続されている。第2ネットワーク4には、HMI(Human Machine Interface)800、データベース900およびサーバ50が接続されているとする。
 HMI800は、パーソナルコンピュータにより実現可能である。HMI800は、コントローラシステム1での制御演算によって得られる各種情報をオペレータへ提示するとともに、オペレータからの操作に従って、コントローラシステム1に対して内部コマンドなどを生成する。HMI800は、コントローラシステム1との暗号通信のための証明書を格納してもよい。
 HMI800は、FAの保守者が携帯可能に構成され得る。データベース900は、コントローラシステム1から送信される各種データ(例えば、各ワークから計測されたトレーサビリティに関する情報など)を収集する。
 サーバ50は、制御ユニット100により実行される制御プログラム51を格納する。さらにサーバ50は、制御プログラム51の正当性を保証するための各種の情報を格納してもよい。たとえばサーバ50は、制御プログラム51の正当性を確保する情報(制御プログラム51が改ざんされていないことを証明するための情報)を格納してもよい。
 コントローラシステム1の制御ユニット100は、通信ポート144(図2のネットワークコントローラ118)を介して、1または複数のフィールドデバイス500と接続されている。フィールドデバイス500は、制御対象から制御演算に必要な各種情報を収集するセンサや検出器、および、制御対象に対して何らかの作用を与えるアクチュエータなどを含む。図5に示す例では、フィールドデバイス500は、ワークに対して何らかの外的な作用を与えるロボット、ワークを搬送するコンベヤ、フィールドに配置されたセンサやアクチュエータとの間で信号を遣り取りするI/Oユニットなどを含む。
 同様に、ラインBを担当する制御ユニット100についても同様に、通信ポート144(図2のネットワークコントローラ118)を介して、1または複数のフィールドデバイス500と接続されている。
 ここで、コントローラシステム1の機能面に着目すると、制御ユニット100は、標準制御に係る制御演算を実行する処理実行部である制御エンジン150と、外部装置との間でデータを遣り取りする情報エンジン160とを含む。セキュリティユニット200は、後述するようなセキュリティ機能を実現するためのセキュリティエンジン250を含む。セーフティユニット300は、セーフティ制御に係る制御演算を実行する処理実行部であるセーフティエンジン350を含む。
 各エンジンは、各ユニットのプロセッサなどの任意のハードウェア要素または各種プログラムなどの任意のソフトウェア要素、あるいは、それら要素の組合せによって実現される。各エンジンは任意の形態で実装できる。
 さらに、コントローラシステム1は、エンジン同士の遣り取りを仲介するブローカー170を含む。ブローカー170の実体は、制御ユニット100およびセキュリティユニット200の一方または両方に配置してもよい。
 制御エンジン150は、制御対象を制御するための制御演算の実行に必要な変数テーブルおよびファンクションブロック(FB)などを保持している。変数テーブルに格納される各変数は、I/Oリフレッシュ処理により、フィールドデバイス500から取得された値で周期的に収集されるとともに、フィールドデバイス500へ各値が周期的に反映される。制御エンジン150での制御演算のログはログデータベース180に格納されてもよい。
 情報エンジン160は、制御ユニット100が保持するデータ(変数テーブルで保持される変数値)に対して任意の情報処理を実行する。典型的には、情報エンジン160は、制御ユニット100が保持するデータを周期的にデータベース900などへ送信する処理を含む。このようなデータの送信には、SQLなどが用いられる。
 セキュリティエンジン250は、コントローラシステム1に発生する不正侵入の検知、検知された不正侵入に応じた処理、インシデントの発生有無判断、発生したインシデントに応じた処理などを実行する。セキュリティエンジン250の挙動は、セキュリティ情報260として保存される。
 セキュリティエンジン250は、セキュリティに関する何らかのイベントが発生したこと、あるいは発生しているセキュリティに関するイベントのレベルなどを、インジケータ224で通知する。
 セーフティエンジン350は、コントローラシステム1において何らかの不正侵入が発生したか否かを検知する検知手段に相当する。セーフティエンジン350は、制御ユニット100を介して、セーフティ制御に係る制御演算の実行に必要なセーフティI/O変数を取得および反映する。セーフティエンジン350でのセーフティ制御のログはログデータベース360に格納されてもよい。
 ブローカー170は、例えば、セキュリティエンジン250が何らかのイベントを検知すると、制御エンジン150、情報エンジン160およびセーフティエンジン350の動作などを変化させる。
 <D.本実施の形態と一般的なシンクライアント方式との相違点>
 本実施の形態では、制御ユニット100に電源が供給される間のみ、制御ユニット100に制御プログラムが格納される。サーバ側にプログラムが不揮発的に格納されているという点において、本実施の形態はシンクライアント(Thin client)方式のシステムに類似する。しかし、シンクライアントは、ユーザが使用するクライアントの機能を必要最小限として、サーバ側で主な処理を行う仕組みである。一方、本実施の形態では、制御システム10はFA(Factory Automation)の現場で稼働される。このため制御システム10およびコントローラシステム1には高速かつ高精度の制御を実行することが要求される。高速かつ高精度の制御のために、コントローラシステム1が制御処理を実行する。この点において、本実施の形態は、一般的なシンクライアントシステムとは相違する。
 図6は、本実施の形態に係る制御システムと、一般的なシンクライアントシステムとの間の一部の相違点を表形式で示した図である。本実施の形態に係る制御システムは、図6では「FA」と表記される。一方、一般的なシンクライアントシステムは、図6では「IT」と表記される。本実施の形態に係る制御システムと一般的なシンクライアントシステムとの間の相違点として、上述の相違点に加えて、以下の点を挙げることができる。
 (1)入力(IN)
 本実施の形態では、制御システムへの入力はセンサ等からのI/O入力である。一方、シンクライアントシステムでは、入力は、キーボードあるいはマウスなど、ユーザの使用する入力装置からの入力である。
 (2)出力(OUT)
 本実施の形態では、制御システムからの出力は、フィールドデバイス(サーボモータなど)等へのI/O出力である。一方、シンクライアントシステムでは、サーバから画面情報がクライアントに出力される。
 (3)高速性
 本実施の形態では、制御ユニットと他のユニットとの同期などの理由により、処理の高速性が要求される。一例では、処理はマイクロ秒の単位で実行される。すなわち実質的にリアルタイムに実行される処理が要求される。一方、シンクライアントシステムでは、クライアント側の画面の更新がユーザにとって遅いと思われない程度の処理速度でもよい。一例では、処理速度は100ms~1秒程度である。
 (4)サーバとのインタラクション
 本実施の形態では、制御装置(コントローラシステム1)とサーバとの間のインタラクションであるのに対して、シンクライアントシステムでは、人(ユーザ)とサーバとの間のインタラクションである。
 (5)認証の対象
 本実施の形態では、認証の対象が装置(たとえばシリアルIDあるいはセキュリティチップ等)である。これに対して、シンクライアントシステムでは、認証の対象はユーザ(ログイン情報)である。
 (6)ダウンロードデータ
 本実施の形態では、コントローラシステム1はサーバ50から制御プログラム(具体的にはオブジェクトコード)をダウンロードする。一方、シンクライアントシステムでは、基本的にクライアントはサーバからデータをダウンロードしない。
 <E.制御ユニット100の機能構成例>
 図7は、本実施の形態に従う制御ユニット100が備える機能構成例を示す模式図である。図7を参照して、制御ユニット100において、主記憶装置106は、制御プログラム1104を格納する。プロセッサ102は、OS(Operating System)の元で制御プログラム1104を周期的に実行する。プロセッサ102は、サーバ問合部151と、プログラム取得部152と、プログラム管理部153と、プログラム実行部154とを含む。
 コントローラシステム1への電源投入により、コントローラシステム1が起動される。サーバ問合部151は、制御プログラム(ユーザプログラム)をサーバ50(図5を参照)からダウンロードするために、サーバ50への問い合わせおよび認証を実行する。サーバ50が制御ユニット100を認証すると、プログラム取得部152は、所定の手続きに従って、サーバから制御プログラムを取得する(ダウンロードする)。
 プログラム管理部153は、ダウンロードされた制御プログラムの正当性を検証する。具体的には、プログラム管理部153は、制御プログラムに関連付けられた情報の同一性を検証することにより、制御プログラムの正当性を管理する。ダウンロードされた制御プログラムが正当である場合、制御プログラムは、主記憶装置106に格納される。一方、ダウンロードされたユーザプログラムが正当ではない場合、プログラム管理部153は、通知を出力するようにインジケータ124を含む通知部を制御する。プログラム実行部154は、主記憶装置106に記憶された制御プログラム1104を実行する。
 <F.情報の漏洩の防止>
 図8は、本実施の形態に従う、制御ユニット100へのユーザプログラムの転送を説明する図である。図8を参照して、電源オンの前には、主記憶装置106に情報は記憶されていない(ステップ(1))。
 サポート装置600は、ユーザが作成したソースコード601をプログラム(オブジェクトコード)に変換して制御プログラム51(図8では「UPG1」と表記)を生成し、その制御プログラム51をサーバ50に格納する。
 電源オンにより、制御ユニット100が起動される。プロセッサ102(図7に示すサーバ問合部151)は、サーバ50に対して問い合わせおよび認証処理を実行する(ステップ(2))。
 サーバ50が、制御ユニット100を認証する。プロセッサ102(図7に示すプログラム取得部152)は、制御プログラム51をサーバ50からダウンロードする。制御プログラム51は、主記憶装置106に格納される(ステップ(3))。
 制御プログラム51が主記憶装置106に格納されると、プロセッサ102(図7に示すプログラム実行部154)は、その制御プログラム51を含む制御プログラムを呼び出して実行する(ステップ(4))。これにより制御ユニット100は正常運転を行う。
 制御ユニット100の電源がオフされると、主記憶装置106に記憶された情報が消去される(ステップ(5))。
 上記のように、制御ユニット100の電源をオフすることによって、制御プログラム51は主記憶装置106から消去される。これにより、制御ユニット100からの情報の漏洩を防ぐことができる。加えて、制御プログラムはバイナリコードで記述されている。制御ユニット100の電源がオンのときに、制御プログラムが制御ユニット100から読み出されたとしても、制御プログラムの解析は困難である。この点においても、本実施の形態では、情報の漏洩を防ぐことができる。
 <G.暗号化通信の利用>
 セキュリティの観点からは、サーバ50からの制御プログラムのダウンロードに関して、以下の2つの点を考慮する必要がある。
 第1の点は、サーバ50が偽装されている可能性があるという点である。制御ユニット100が偽のサーバから、不正な制御プログラムをダウンロードする可能性を考慮する必要がある。
 第2の点は、不正なクライアントがサーバ50にアクセスする可能性があるという点である。サーバ50から制御プログラムが盗まれる可能性を考慮する必要がある。
 本実施の形態では、サーバ50と制御ユニット100との間の通信に暗号化通信を用いる。一実施形態によれば、サーバ50と制御ユニット100との間の通信のプロトコルにSSL(Secure Sockets Layer)が利用される。
 図9は、制御ユニット100とサーバ50との間のセキュア通信による制御プログラムの転送および実行の流れを説明した模式図である。図9を参照して、サーバ50には証明書63(SSL証明書)が格納されるとともに、制御ユニット100には証明書64(SSL証明書)が格納される。これにより、サーバ50および制御ユニット100の各々が本物であることが証明される。
 本実施の形態では、公開鍵暗号方式を用いて、サーバ50から制御ユニット100に制御プログラムを転送する。これにより、制御ユニット100は、正しい制御プログラムを受信することができる。
 加えて本実施の形態では、サーバ50から制御プログラムだけでなくシリアルIDも転送される。シリアルIDは、制御プログラムに関連付けられた情報であり、サーバ50に格納された制御プログラムに付随するID(プログラムID)である。一方、制御ユニット100も、シリアルIDを不揮発的に記憶する。制御ユニット100に記憶されたシリアルIDは、制御プログラムに予め付与されたプログラムIDである。
 制御ユニット100は、このシリアルIDを検証IDとして用いる。具体的には、制御ユニット100は、サーバ50から制御プログラム51とともに転送されたシリアルIDと、制御ユニット100内に記憶された検証IDとを比較する。すなわち、制御ユニット100は、制御プログラムに関連付けられた情報(シリアルID)の同一性を検証する。2つのシリアルIDが一致する場合に、制御ユニット100は、制御プログラムを主記憶装置106に格納して実行する。したがって制御ユニット100が不正なプログラムを実行する可能性がより小さくなる。
 上述の処理を実行するための手順を以下に説明する。まず、ステップS10において、サポート装置600は、転送データを作成する。具体的には、サポート装置600は、ハッシュ関数を用いて、制御プログラム53(図9では「UPG5」と表記)、およびシリアルID55(図9の例では「5555」)のハッシュ値を生成する。さらにサポート装置600は、秘密鍵61を用いて、ハッシュ値を暗号化して、デジタル署名56を作成する。サポート装置600は、制御プログラム53、シリアルID55およびデジタル署名56の組をサーバ50に格納する。
 制御ユニット100は、サーバ50に認証済みである。制御ユニット100は、サーバ50にアクセスして制御プログラムを要求する(ステップS11)。サーバ50は、制御ユニット100からの要求に応答して、制御プログラム53、シリアルID55およびデジタル署名56の組を、制御ユニット100に転送する(ステップS12)。制御ユニット100では、プログラム取得部152(図7を参照)が、制御プログラム53、シリアルID55およびデジタル署名56の組を取得する。
 制御ユニット100(プログラム管理部153)は、デジタル署名56を検証する(ステップS13)。詳細には、プログラム管理部153は、公開鍵62を用いてデジタル署名56を復号してハッシュ値を得る。さらに、プログラム管理部153は、ハッシュ関数を用いて制御プログラム53およびシリアルID55からハッシュ値を生成する。プログラム管理部153は、制御プログラム53から生成されたハッシュ値と、デジタル署名56から復号されたハッシュ値とを比較する。
 両方のハッシュ値が一致する場合に、制御プログラム53が改ざんされていないことが検証される。この場合に、プログラム管理部153は、サーバ50から転送されたシリアルID55と、制御ユニット100に予め格納されたシリアルID1110とを照合する(ステップS14)。シリアルID1110は、二次記憶装置108(図2を参照)に不揮発的に格納される。
 シリアルID55およびシリアルID1110が一致する場合、プログラム管理部153は、制御プログラム53を主記憶装置106に転送する。プログラム実行部154(図7を参照)は、主記憶装置106に格納された制御プログラム53を実行する。一方、シリアルID55およびシリアルID1110が一致しなければ、プログラム管理部153は、制御プログラム53を消去する。
 なお、制御ユニット100の起動時において、制御プログラム53、およびシリアルID55がデジタル署名56に加えて、他の情報もサーバ50から制御ユニット100に転送されてもよい。
 図10は、制御プログラム53およびシリアルID55とともにサーバ50から転送される情報の例を説明した模式図である。図10を参照して、制御ユニット100は、シャットダウン処理の際に、保持変数58をサーバ50にアップロードする(ステップS16)。保持変数58は、制御ユニット100のシャットダウン前の状態を、制御ユニット100の再起動後にも保持するための変数である。
 ステップS10~S15の処理は、基本的には、図9に示した処理と同じである。ステップS10において、サポート装置600は、制御プログラム53およびシリアルID55に加えて、保持変数58からハッシュ値を生成する。サポート装置600は、秘密鍵61を用いてハッシュ値を暗号化してデジタル署名56を生成する。
 制御ユニット100は、サーバ50にアクセスして制御プログラムを要求する(ステップS11)。サーバ50は、制御ユニット100からの要求に応答して、制御プログラム53、シリアルID55、保持変数58およびデジタル署名56の組を、制御ユニット100に転送する(ステップS12)。
 プログラム管理部153は、公開鍵62を用いてデジタル署名56を復号してハッシュ値を得る。さらに、プログラム管理部153は、ハッシュ関数を用いて、制御プログラム53、シリアルID55および保持変数58からハッシュ値を生成する。プログラム管理部153は、そのハッシュ値と、デジタル署名56から復号されたハッシュ値とを比較して、デジタル署名を検証する(ステップS13)。両方のハッシュ値が一致すれば、プログラム管理部153は、サーバ50から転送されたシリアルID55と、制御ユニット100に予め格納されたシリアルID1110とを照合する(ステップS14)。シリアルID55およびシリアルID1110が一致する場合、プログラム管理部153は、制御プログラム53を主記憶装置106に転送する。プログラム実行部154(図7を参照)は、主記憶装置106に格納された制御プログラム53を実行する。
 保持変数58は、主記憶装置106に格納されてもよい。保持変数58をサーバ50にアップロードした後に制御ユニット100をシャットダウンする。制御ユニット100のシャットダウンにより、保持変数58を制御ユニット100から消去することができる。
 <H.制御プログラムの更新/再配信>
 制御ユニット100の動作中に、制御プログラムを更新することが望ましい場合も起こりえる。たとえば、機能の追加あるいは更新のために制御プログラムが更新される。あるいは、サーバ50から制御ユニット100への制御プログラムの再配信が必要な場合も起こりえる。たとえばインシデントの発生によって、制御ユニット100が再起動するような場合には、サーバ50から制御ユニット100への制御プログラムの再配信が必要となり得る。
 図11は、制御プログラムの更新あるいは再配信のための制御プログラムの転送を説明する図である。図11を参照して、制御ユニット100は、電源オンの状態で、制御プログラム51(図11では「UPG1」と表記)に従って運転する(ステップ(1))。
 制御プログラムが更新され、サーバ50には、新しい制御プログラム52(図11では「UPG2」と表記)格納される。この場合、サーバ50から制御ユニット100にプログラムの更新の通知が送られてもよい。制御ユニット100は、サーバ50から制御プログラム52をダウンロードするために、サーバ50に対して問い合わせおよび認証処理を実行する(ステップ(2))。
 サーバ50から制御ユニット100に制御プログラム52がダウンロードされる。制御ユニット100は、図9あるいは図10に示された処理を実行して、主記憶装置106に制御プログラム52を格納する(ステップ(3))。制御プログラム51は、新しい制御プログラム52に置き換えられる。
 プロセッサ102は、主記憶装置106から、制御プログラム52を読み出して、実行する。これにより制御ユニット100は正常運転を行う(ステップ(4))。この場合にも、制御プログラムは主記憶装置106にのみ格納されているため、制御ユニット100の電源がオフされると、制御プログラムが主記憶装置106から削除される(ステップ(5))。したがって、制御プログラムが漏洩する可能性を低減することができる。
 <I.制御プログラムの改ざんの検知>
 図9および図10に示すように、本実施の形態では、電子署名および鍵を利用することにより制御プログラムの改ざんを検知することができる。これにより、情報の漏洩を検知することができる。しかし、上述の方法に限定されず、制御プログラムの改ざんを検知する他の方法を本実施の形態に適用してもよい。
 図12は、本実施の形態により実施可能な、制御プログラムの改ざんを検知する方法を示した模式図である。図12を参照して、前回実行された制御プログラム51のハッシュ値65が制御ユニット100の二次記憶装置108に記憶される。ハッシュ値65は、プログラム管理部153(図7を参照)によって生成されてもよい。二次記憶装置108は不揮発性記憶装置であるので、制御ユニット100の電源がオフされていても、ハッシュ値65は制御ユニット100に保存される(ステップ(1))。
 電源オンにより、制御ユニット100が起動される。制御ユニット100は、サーバ50に対して問い合わせおよび認証処理を実行する(ステップ(2))。
 サーバ50は、制御プログラム51(図8では「UPG1」と表記)を格納する。しかし外部からサーバ50への不正アクセス等の理由により、サーバ50に格納された制御プログラム51が改ざんされたとする。この場合、サーバ50には不正な制御プログラム59が格納される。
 制御ユニット100は、サーバ50から制御プログラム59をダウンロードする。プロセッサ102(プログラム管理部153)は、制御プログラム59のハッシュ値66を生成する。プロセッサ102(プログラム管理部153)は、ハッシュ値66とハッシュ値65とを照合する(ステップ(3))。
 この場合、ハッシュ値66とハッシュ値65とは一致しない。したがって、プロセッサ102は、エラーを検知するとともに、そのエラーをユーザに通知する。プロセッサ102は、エラーを通知するためにインジケータ124を点灯させてもよい(ステップ(4))。あるいはプロセッサ102は、HMI800(図5を参照)にエラーメッセージを表示させるのでもよい。なお、ハッシュ値66とハッシュ値65とが一致した場合、サーバ50からダウンロードされた制御プログラムは、制御ユニット100が前回実行した制御プログラムと同じである。したがって、この場合には、サーバ50からダウンロードされた制御プログラムは、主記憶装置106に格納される。
 以上のように、本実施の形態によれば、制御ユニット100への電源投入時に、制御ユニット100はサーバから制御プログラムをダウンロードする。制御プログラムは、制御ユニット100の主記憶装置(揮発性記憶装置)に格納される。電源をオフすることにより、制御ユニット100から制御プログラム51が消去される。したがって、制御ユニット100から漏洩する可能性を低減することができる。
 <J.付記>
 以上説明したように、本実施形態は以下に列挙する開示を含む。
 1.コントローラシステム(1)であって、
 前記コントローラシステム(1)への電源投入により、制御プログラムが記憶されたサーバ(50)から前記制御プログラムを取得するプログラム取得部(152)と、
 前記コントローラシステム(1)に電源が供給される間、前記プログラム取得部(152)により取得された前記制御プログラムを記憶し、前記コントローラシステムへの電源の供給の停止により、前記制御プログラムを消去する揮発性記憶装置(106)と、
 前記揮発性記憶装置(106)に記憶された前記制御プログラムを実行するプログラム実行部(154)とを備える、コントローラシステム(1)。
 2.前記コントローラシステム(1)は、
 前記制御プログラムに関連付けられた情報の同一性を検証することにより、前記制御プログラムの正当性を管理するプログラム管理部(153)をさらに備える、請求項1に記載のコントローラシステム(1)。
 3.前記プログラム取得部(152)は、前記サーバ(50)との間の暗号化通信により、前記制御プログラムと、前記制御プログラムに付随するプログラムID(55)とを前記サーバ(50)から受信し、
 前記プログラム管理部(153)は、前記制御プログラムおよび前記プログラムID(55)が改ざんされていないことを検証し、かつ、前記制御プログラムに予め付与された検証ID(1110)と、前記プログラムID(55)とが一致することを検証した場合に、前記制御プログラムを前記揮発性記憶装置(106)に格納する、請求項2に記載のコントローラシステム(1)。
 4.前記プログラム管理部(153)は、前記コントローラシステム(1)の状態を保持するための変数である保持変数を生成して、前記コントローラシステム(1)のシャットダウン時に前記保持変数を、前記サーバ(50)にアップロードし、
 前記プログラム取得部(152)は、前記制御プログラムおよび前記プログラムIDとともに前記保持変数を前記サーバ(50)から取得する、請求項3に記載のコントローラシステム(1)。
 5.前記コントローラシステム(1)は、前回に実行された前記制御プログラムから生成されたハッシュ値(65)を不揮発的に保存する不揮発性記憶装置(108)をさらに備え、
 前記プログラム管理部(153)は、前記プログラム取得部(152)により取得された前記制御プログラムのハッシュ値(66)を生成して、前記プログラム管理部(153)により生成されたハッシュ値が、前記不揮発性記憶装置に記憶されたハッシュ値と一致する場合に、前記制御プログラムを前記揮発性記憶装置(106)に格納する、請求項2に記載のコントローラシステム(1)。
 今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 1 コントローラシステム、2 第1ネットワーク、4 第2ネットワーク、10 制御システム、50 サーバ、51,52,53,59,1104 制御プログラム、55,1110 シリアルID、56 デジタル署名、58 保持変数、61 秘密鍵、62 公開鍵、63,64 証明書、65,66 ハッシュ値、100 制御ユニット、102,202,302 プロセッサ、104,204,304 チップセット、106,206,306 主記憶装置、108,208,308 二次記憶装置、110,210 通信コントローラ、112,212 USBコントローラ、114,214,314 メモリカードインターフェイス、115,215,315 メモリカード、116,118,120,216,218 ネットワークコントローラ、122,322 内部バスコントローラ、124,224,324 インジケータ、142,144,242 通信ポート、150 制御エンジン、151 サーバ問合部、152 プログラム取得部、153 プログラム管理部、154 プログラム実行部、160 情報エンジン、170 ブローカー、180,360 ログデータベース、200 セキュリティユニット、250 セキュリティエンジン、260 セキュリティ情報、300 セーフティユニット、350 セーフティエンジン、400 機能ユニット、450 電源ユニット、500 フィールドデバイス、600 サポート装置、601 ソースコード、700 装置、900 データベース、S10~S16 ステップ。

Claims (5)

  1.  コントローラシステムであって、
     前記コントローラシステムへの電源投入により、制御プログラムが記憶されたサーバから前記制御プログラムを取得するプログラム取得部と、
     前記コントローラシステムに電源が供給される間、前記プログラム取得部により取得された前記制御プログラムを記憶し、前記コントローラシステムへの電源の供給の停止により、前記制御プログラムを消去する揮発性記憶装置と、
     前記揮発性記憶装置に記憶された前記制御プログラムを実行するプログラム実行部とを備える、コントローラシステム。
  2.  前記コントローラシステムは、
     前記制御プログラムに関連付けられた情報の同一性を検証することにより、前記制御プログラムの正当性を管理するプログラム管理部をさらに備える、請求項1に記載のコントローラシステム。
  3.  前記プログラム取得部は、前記サーバとの間の暗号化通信により、前記制御プログラムと、前記制御プログラムに付随するプログラムIDとを前記サーバから受信し、
     前記プログラム管理部は、前記制御プログラムおよび前記プログラムIDが改ざんされていないことを検証し、かつ、前記制御プログラムに予め付与された検証IDと、前記プログラムIDとが一致することを検証した場合に、前記制御プログラムを前記揮発性記憶装置に格納する、請求項2に記載のコントローラシステム。
  4.  前記プログラム管理部は、前記コントローラシステムの状態を保持するための変数である保持変数を生成して、前記コントローラシステムのシャットダウン時に前記保持変数を、前記サーバにアップロードし、
     前記プログラム取得部は、前記制御プログラムおよび前記プログラムIDとともに前記保持変数を前記サーバから取得する、請求項3に記載のコントローラシステム。
  5.  前記コントローラシステムは、前回に実行された前記制御プログラムから生成されたハッシュ値を不揮発的に保存する不揮発性記憶装置をさらに備え、
     前記プログラム管理部は、前記プログラム取得部により取得された前記制御プログラムのハッシュ値を生成して、前記プログラム管理部により生成されたハッシュ値が、前記不揮発性記憶装置に記憶されたハッシュ値と一致する場合に、前記制御プログラムを前記揮発性記憶装置に格納する、請求項2に記載のコントローラシステム。
PCT/JP2020/009133 2019-03-28 2020-03-04 コントローラシステム WO2020195638A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP20777832.5A EP3951624A4 (en) 2019-03-28 2020-03-04 CONTROL UNIT SYSTEM
US17/438,468 US11768940B2 (en) 2019-03-28 2020-03-04 Controller system
CN202080018665.9A CN113557507A (zh) 2019-03-28 2020-03-04 控制器系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019-062609 2019-03-28
JP2019062609A JP7318264B2 (ja) 2019-03-28 2019-03-28 コントローラシステム

Publications (1)

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

Family

ID=72610020

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/009133 WO2020195638A1 (ja) 2019-03-28 2020-03-04 コントローラシステム

Country Status (5)

Country Link
US (1) US11768940B2 (ja)
EP (1) EP3951624A4 (ja)
JP (1) JP7318264B2 (ja)
CN (1) CN113557507A (ja)
WO (1) WO2020195638A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000137506A (ja) 1998-11-02 2000-05-16 Omron Corp プログラマブルコントローラ
JP2002268707A (ja) * 2001-03-12 2002-09-20 Omron Corp コントローラ及びツール並びにそれらにより構成されるシステム
JP2004005585A (ja) * 2002-04-23 2004-01-08 Matsushita Electric Ind Co Ltd サーバ装置及びプログラム管理システム
JP2014135043A (ja) * 2013-01-09 2014-07-24 Giga-Byte Technology Co Ltd 遠隔バックアップシステム及びその方法
JP2018128722A (ja) * 2017-02-06 2018-08-16 株式会社日立産機システム プログラマブルロジックコントローラ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1145201A (ja) * 1997-05-28 1999-02-16 Toshiba Corp コンピュータシステム、同システムにおけるデータアクセス処理方法および記録媒体
JP4411714B2 (ja) * 2000-01-25 2010-02-10 株式会社安川電機 プログラム自動転送機能付きplcおよびエンジニアリング装置とその制御方法
CN1307503C (zh) * 2002-04-23 2007-03-28 松下电器产业株式会社 服务器装置及程序管理系统
JP2005227852A (ja) * 2004-02-10 2005-08-25 Resona Bank Ltd 情報処理端末
JP4815782B2 (ja) * 2004-10-22 2011-11-16 ソニー株式会社 プログラム更新方法、情報処理装置およびプログラム
WO2008153069A1 (ja) * 2007-06-12 2008-12-18 Nec Corporation 通信制御システム、通信制御方法および通信端末
US9524158B2 (en) * 2015-02-23 2016-12-20 Apple Inc. Managing firmware updates for integrated components within mobile devices
US10114653B2 (en) * 2016-06-09 2018-10-30 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Multiple-stage bootloader and firmware for baseboard manager controller and primary processing subsystem of computing device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000137506A (ja) 1998-11-02 2000-05-16 Omron Corp プログラマブルコントローラ
JP2002268707A (ja) * 2001-03-12 2002-09-20 Omron Corp コントローラ及びツール並びにそれらにより構成されるシステム
JP2004005585A (ja) * 2002-04-23 2004-01-08 Matsushita Electric Ind Co Ltd サーバ装置及びプログラム管理システム
JP2014135043A (ja) * 2013-01-09 2014-07-24 Giga-Byte Technology Co Ltd 遠隔バックアップシステム及びその方法
JP2018128722A (ja) * 2017-02-06 2018-08-16 株式会社日立産機システム プログラマブルロジックコントローラ

Also Published As

Publication number Publication date
EP3951624A1 (en) 2022-02-09
JP2020161048A (ja) 2020-10-01
US11768940B2 (en) 2023-09-26
US20220147632A1 (en) 2022-05-12
EP3951624A4 (en) 2022-12-07
CN113557507A (zh) 2021-10-26
JP7318264B2 (ja) 2023-08-01

Similar Documents

Publication Publication Date Title
US10489597B2 (en) Blockchain verification of network security service
ES2866498T3 (es) Procedimiento y sistema de control para el control y/o la supervisión de dispositivos
US20210055718A1 (en) Computer-implemented method for providing data, in particular for conformity tracking
US11412047B2 (en) Method and control system for controlling and/or monitoring devices
JP7074104B2 (ja) コントローラシステム
US11231958B2 (en) Method and control system for controlling and/or monitoring devices
US20220085982A1 (en) Safety system and maintenance method
WO2020195638A1 (ja) コントローラシステム
JP2020166520A (ja) 制御システム、および設定方法
WO2020184186A1 (ja) 制御装置および制御システム
EP3920063B1 (en) Safety system and maintenance method
CN112753033B (zh) 传感器控制组件和制造设备
US20220121170A1 (en) Data structure product and product kit
US20230251957A1 (en) Method for analyzing an automation software of an automation device
US20220326677A1 (en) Control device, control system, and management method
US20240143803A1 (en) Control system and control method therefor
WO2021161653A1 (ja) 制御システム、中継装置、およびアクセス管理プログラム
EP3916599A1 (en) Method for protecting software modules on edge devices and edge device
WO2022190422A1 (ja) 制御システムおよびその制御方法
WO2020250374A1 (ja) データ処理装置、データ処理方法及びプログラム
CN114207617A (zh) 识别控制系统的被操纵的客户端
CN112740215A (zh) 传感器数据组件和制造设备

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: 20777832

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: 2020777832

Country of ref document: EP

Effective date: 20211028