WO2024033971A1 - プログラマブルコントローラ、プログラマブルコントローラシステム、アクセス情報共有方法及びプログラム - Google Patents
プログラマブルコントローラ、プログラマブルコントローラシステム、アクセス情報共有方法及びプログラム Download PDFInfo
- Publication number
- WO2024033971A1 WO2024033971A1 PCT/JP2022/030278 JP2022030278W WO2024033971A1 WO 2024033971 A1 WO2024033971 A1 WO 2024033971A1 JP 2022030278 W JP2022030278 W JP 2022030278W WO 2024033971 A1 WO2024033971 A1 WO 2024033971A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- access
- access information
- programmable controller
- plc
- exceptional
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000012545 processing Methods 0.000 claims abstract description 108
- 238000004891 communication Methods 0.000 claims abstract description 61
- 238000003860 storage Methods 0.000 claims abstract description 45
- 238000001514 detection method Methods 0.000 claims description 36
- 230000006870 function Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 abstract description 58
- 230000005540 biological transmission Effects 0.000 description 17
- 238000009826 distribution Methods 0.000 description 14
- 238000005070 sampling Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002787 reinforcement Effects 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
Definitions
- the present disclosure relates to a programmable controller, a programmable controller system, an access information sharing method, and a program.
- Patent Document 1 describes a control system that uses distributed ledger technology to determine whether or not a control program can be executed.
- a control device generates unique information indicating the configuration of devices that constitute the control device, and holds the generated unique information in the form of a distributed ledger with other control devices.
- the control device collates the unique information generated by the control device with unique information held by other control devices, and executes the control program according to the result of the collation. Permit or prohibit. According to a control system having such a control device, it is possible to prevent a control program from being started in an environment different from the original environment.
- the present disclosure was made under the above circumstances, and aims to improve availability when unauthorized access occurs in an FA system.
- a programmable controller of the present disclosure is a programmable controller connected to another programmable controller, and includes a communication means for receiving and communicating a first access from the outside via a network, and a communication means for receiving and communicating a first access from the outside via a network.
- storage means for storing first access information; and providing the first access information stored in the storage means to another programmable controller, and providing second access information regarding a second access to the other programmable controller via the network to another programmable controller.
- a sharing means for sharing the first access information and the second access information in the form of a distributed ledger with other programmable controllers by acquiring them from the programmable controller; and the first access information and the second access information indicated by the first access information.
- processing means for executing processing different from that for other accesses for the exception access when the communication means newly accepts the exception access that is less frequent than the other accesses among the second accesses indicated by . .
- the processing means executes different processing for the exceptional access than for other accesses. Therefore, unusually occurring unauthorized access can be dealt with by performing different processing than usual. Therefore, availability can be improved in the event that unauthorized access occurs in the FA system.
- a diagram showing the configuration of a PLC system according to Embodiment 1 A diagram showing the hardware configuration of the FA device according to Embodiment 1
- a PLC (Programmable Logic Controller) system 1000 is constructed as a control system that controls equipment via a network in a factory.
- the PLC system 1000 is, for example, an FA system for implementing a manufacturing line, a processing line, an inspection line, or other processing steps.
- each device records external accesses and shares them in the form of a distributed ledger, and learns a model for determining exceptional accesses based on the shared records. Then, when an exceptional access is detected using the learned model, processing for the access is executed.
- the PLC system 1000 includes PLCs 101, 102, and 103 that are connected to each other via a network NW, and a support device 20 that functions as a user interface terminal for the PLC 101.
- the network NW may be an industrial network or an information network.
- packets are transmitted according to, for example, TCP (Transmission Control Protocol)/IP (Internet Protocol).
- the support device 20 and the PLC 101 are connected via a communication line such as a USB (Universal Serial Bus) cable or a network such as a LAN (Local Area Network).
- PLC system 1000 corresponds to an example of a programmable controller system.
- the PLCs 101, 102, and 103 each have equivalent components and exhibit equivalent functions.
- FIG. 1 the configuration of the PLC 101 is shown in detail, and the configurations of the PLCs 102 and 103 are simplified.
- PLC101,102,103 may be described as PLC100 without distinguishing.
- the PLC 100 is a control device that controls equipment (not shown) by executing a control program such as a ladder program.
- the PLC 100 may cooperate with other PLCs 100 to control devices.
- the PLC 101 acquires sensing results from a sensor, and the PLC 101 or PLC 102 outputs an operation command based on the sensing results to an actuator, thereby transporting a workpiece on a belt conveyor.
- PLC100 corresponds to an example of a programmable controller.
- the support device 20 is an industrial PC (Personal Computer), and has application software called an engineering tool for creating and editing a control program to be executed by the PLC 100 and writing it to the PLC 100.
- PC Personal Computer
- the PLC 100 and the support device 20 are each configured with hardware elements for functioning as a computer.
- the FA device 30 corresponding to each of the PLC 100 and the support device 20 includes a processor 31, a main storage section 32, an auxiliary storage section 33, an input section 34, and an output section. 35 and a communication section 36.
- the main storage section 32 , the auxiliary storage section 33 , the input section 34 , the output section 35 , and the communication section 36 are all connected to the processor 31 via an internal bus 37 .
- the processor 31 includes a CPU (Central Processing Unit) as a processing circuit.
- the processor 31 implements various functions by executing the program P1 stored in the auxiliary storage unit 33, and executes the processing described below.
- the program P1 of the support device 20 corresponds to the above-mentioned engineering tool.
- the processor 31 of the PLC 100 executes the above-mentioned control program in addition to the program P1.
- the main storage unit 32 includes a RAM.
- the program P1 is loaded into the main storage section 32 from the auxiliary storage section 33.
- the main storage unit 32 is used as a work area for the processor 31.
- the auxiliary storage unit 33 includes nonvolatile memory represented by EEPROM (Electrically Erasable Programmable Read-Only Memory) and HDD (Hard Disk Drive).
- the auxiliary storage unit 33 stores various data used in processing by the processor 31 in addition to the program P1.
- the auxiliary storage unit 33 supplies data used by the processor 31 to the processor 31 according to instructions from the processor 31. Further, the auxiliary storage unit 33 stores data supplied from the processor 31.
- the input unit 34 includes input devices such as hardware switches, input keys, a keyboard, and a pointing device.
- the input unit 34 acquires information input by the user of the FA device 30 and notifies the processor 31 of the acquired information.
- the output unit 35 includes output devices such as an LED (Light Emitting Diode), an LCD (Liquid Crystal Display), and a speaker.
- the output unit 35 presents various information to the user according to instructions from the processor 31.
- the communication unit 36 includes a communication interface circuit for communicating with an external device.
- the communication unit 36 receives a signal from the outside and outputs data indicated by this signal to the processor 31. Further, the communication unit 36 transmits a signal indicating data output from the processor 31 to an external device.
- the FA device 30 may have a plurality of communication sections 36.
- the FA device 30, which is the PLC 101 may separately include a communication unit 36 for communicating with the support device 20 and a communication unit 36 for communicating via the network NW.
- the PLC 100 and the support device 20 exhibit various functions by cooperation of the above-mentioned hardware configurations.
- the PLC 101 has a communication unit 11 that receives access from the outside via the network NW and communicates, and processes packets received by the communication unit 11.
- a processing unit 12 that generates access information regarding access
- a storage unit 13 that accumulates and stores access information
- a sharing unit 14 that shares access information with PLCs 102 and 103, and determines exceptional access based on the access information.
- a learning unit 15 that learns a model for access
- a detection unit 16 that detects exceptional access based on the learned model
- a notification unit 17 that notifies users of exceptional access
- It has a processing unit 18 for processing.
- the communication unit 11 is mainly realized by the cooperation of the processor 31 of the PLC 101 and the communication unit 36. Acceptance of access by the communication unit 11 means that the PLC 101 itself receives a packet designated as the destination via the network NW.
- PLCs 102 and 103 are shown as devices that access the communication unit 11, but an unillustrated device may access the communication unit 11 via the network NW.
- the communication unit 11 transmits packets to the network NW as necessary.
- the communication unit 11 corresponds to an example of communication means that receives a first access from the outside via a network in the PLC 100.
- the processing unit 12 is mainly realized by the processor 31 of the PLC 101.
- the processing unit 12 receives a packet from the communication unit 11, processes the packet, and generates access information regarding access to the communication unit 11.
- the access information includes identification information for identifying the accessed communication device on the network NW, and at least one of the time when the access was made and a predetermined time segment that includes the time.
- the access information is a record corresponding to one line constituting the transmission access information 131 shown in FIG.
- the port number specified by , the time division in seconds including the reception date and time, and the speed corresponding to the access frequency are shown in association with each other.
- the length of the time segment is 1 second in the example of FIG. 3, it is not limited to this and may be changed arbitrarily.
- "20220118-131310" in FIG. 3 represents a 1 second interval from 13:13:10 to 11 seconds on January 18, 2020.
- the speed indicates the size of the packets received in the accesses that occurred in the time segment, in bits per second (bps). Since the length of the time segment is 1 second, the rate is equal to the packet size in FIG. 3.
- the size of a packet received in one time segment is equal to the sum of the bit values included in the packet received by the communication unit 11. In other words, it can be said that the speed corresponds to the frequency with which each bit value is accessed in one time segment. Note that although there may be cases where the reception of one packet is not completed within one time period, all bit values making up the packet may be treated as having been received at the date and time of reception of the packet.
- the storage unit 13 is mainly realized by at least one of the main storage unit 32 and the auxiliary storage unit 33 of the PLC 101. As shown in FIG. 3, the storage unit 13 stores transmission access information 131, which is a collection of access information generated by the processing unit 12, and reception access information 132, which is generated by the PLCs 102 and 103 and received from the PLCs 102 and 103. and are stored as access history.
- transmission access information 131 which is a collection of access information generated by the processing unit 12
- reception access information 132 which is generated by the PLCs 102 and 103 and received from the PLCs 102 and 103. and are stored as access history.
- the transmission access information 131 is transmitted from the PLC 101 to the PLCs 102 and 103 in order to be shared between the PLCs 100.
- the reception access information 132 is information indicating access to PLCs 102 and 103 other than the PLC 101, and is received by the PLC 101 from the PLCs 102 and 103 in order to be shared between the PLCs 100.
- numbers may be assigned to the access information as shown in FIG.
- the storage unit 13 corresponds to an example of storage means.
- the transmission access information 131 corresponds to an example of first access information regarding the first access
- the reception access information 132 corresponds to an example of the second access information regarding the second access.
- the access indicated by the received access information 132 corresponds to an example of a second access to another programmable controller via the network NW.
- the sharing unit 14 is mainly realized by the cooperation of the processor 31 and the communication unit 36 of the PLC 101.
- the sharing unit 14 shares the transmission access information 131 and reception access information 132 stored in the storage unit 13 with the PLCs 102 and 103 in the form of a distributed ledger.
- the sharing section 14 shares information in a format in which a block 40 including a block header 41 and a transaction section 42 is sequentially generated by concatenating with the previous block 40. do.
- the block header 41 includes a previous header hash value 411 that is equal to the header hash value 412 of the block header 41 of the previously generated block 40, and a header that is a hash value of data included in the block header 41 itself. It has a hash value 412 and generation date and time information 413 indicating the date and time when the block 40 was generated.
- the transaction unit 42 also stores input access information 421 including output access information 422 of the transaction unit 42 of the previous block 40, output access information 422 in which access information added in the block 40 is stored, and input access information 421. and the signature 423 of the output access information 422.
- the access information is shared by adding a new block 40 to be connected that includes the access information to be shared as the output access information 422 and sharing it between the PLCs 100. Specifically, by adding the block 40 that includes the transmission access information 131 provided from the PLC 101, the PLCs 102 and 103 acquire the transmission access information 131 of the PLC 101, and the transmission access information 131 is transmitted to the PLC 102 and 103. shared. Additionally, by adding a block containing access information provided from PLC 102 or PLC 103, PLC 101 acquires the access information recorded in PLC 102 or PLC 103, and the access information is shared by PLC 101 as received access information 132. .
- the input access information 421 may include information obtained by processing the output access information 422 of the previous block 40. Further, the input access information 421 may be information obtained by processing the ID (Identifier) of the transaction section 42 of the previous block 40 and the output access information 422 included in the transaction section 42.
- the sharing unit 14 may function as a storage device different from the storage unit 13 using at least one of the main storage unit 32 and the auxiliary storage unit 33 of the PLC 101. That is, the sharing unit 14 may store sequentially connected blocks 40 and synchronize the output access information 422 of the blocks 40 with the storage unit 13.
- the sharing unit 14 corresponds to an example of a sharing unit that shares the transmission access information 131 and the reception access information 132 with other programmable controllers in the form of a distributed ledger in the PLC 100.
- the learning section 15 is mainly realized by the processor 31 of the PLC 101.
- the learning unit 15 learns a model for determining exceptional accesses that are less frequent than other accesses from the access information stored in the storage unit 13. For example, the learning unit 15 extracts feature amounts from each piece of access information, and fits the distribution of the feature amounts using a normal distribution.
- FIG. 6 schematically shows model learning by fitting a normal distribution.
- sampling points defined by the first feature amount and the second feature amount extracted from each piece of access information are indicated by filled circles and white circles.
- the first feature amount and the second feature amount may be, for example, a source IP address or a group of the IP address indicated by the access information, and a port number or a group of the port number, or may be calculated from the access information. It may be any other feature amount.
- 3 ⁇ of the normal distribution obtained by fitting these sampling points is shown as a region 50. Normally, frequently observed accesses correspond to sampling points 51 indicated by filled circles within the region 50, and exceptional accesses correspond to sampling points 52 indicated by open circles outside the region 50. handle.
- area 50 corresponds to a model for determining exceptional access.
- the exceptional access is an access that has a feature that is extracted less frequently than other accesses, and has a feature that is outside the range of features that are extracted more frequently from other accesses. It can be called access.
- the learning method by the learning unit 15 may be changed arbitrarily. However, in situations where it is not possible to know whether individual access corresponds to exceptional access among the three known classifications of learning methods: unsupervised learning, supervised learning, and reinforcement learning. It is also desirable to employ unsupervised learning that can identify exceptional accesses by tuning parameters. In addition, unsupervised learning is preferable because accesses via the network NW are usually normal and the number of unauthorized accesses is extremely small compared to normal accesses. If there is a teacher who assigns a correct label to each piece of access information in advance to indicate whether or not it is an exceptional access, supervised learning may be adopted. Reinforcement learning may also be employed if a model can be applied to design rewards as a result of detecting exceptional access.
- the learning unit 15 may learn different models for each time segment. For example, based on multiple accesses that occur in a relatively long time period such as one day or one month, the learning unit 15 learns the model used in that time period, and An exceptional access may be detected using the model in the month of . In addition, after the learning unit 15 has learned the model after collecting accesses that occur in relatively short time segments such as one minute or one hour over one day or multiple days, the learning unit 15 learns the model, and then the learning unit 15 collects accesses that occur in relatively short time segments such as one minute or one hour, and then learns the model. The trained model may be used to determine whether the new access is an exceptional access.
- the learning unit 15 corresponds to an example of a learning means for learning a model for determining exceptional access in the PLC 100.
- the detection unit 16 is mainly realized by the processor 31 of the PLC 101.
- the detection unit 16 uses the model learned by the learning unit 15 to detect an exceptional access from the access indicated by the access information stored in the storage unit 13.
- the detection unit 16 when determining an exceptional access using the area 50 shown in FIG. Detect. Further, when an access similar to the sampling point 52 or an access similar to the sampling point 52 occurs in the future, the detection unit 16 detects the access as an exceptional access.
- the past means before learning the model
- the future means after learning the model.
- the access similar to the sampling point 52 corresponds in FIG. 6 to a new point (not shown) located in the vicinity of the sampling point 52.
- the detection unit 16 uses the area 50 to detect sampling points 53 that are not similar to any accesses that have occurred in the past as exceptional accesses. In this way, it is preferable that the model be able to determine whether or not even unknown accesses are exceptional accesses.
- the present invention is not limited to this.
- the sampling points may be multiplied by weights corresponding to the speeds shown in FIG.
- the frequency as a speed may be used as a feature quantity, and an access for which the feature quantity is smaller than a threshold value may be determined as an exceptional access.
- the number of types of feature amounts may be one or more than three.
- the detection unit 16 corresponds to an example of a detection unit that detects an exceptional access from the first access accepted by the communication unit in the PLC 100.
- the notification section 17 is mainly realized by the cooperation of the processor 31 and the output section 35 of the PLC 101.
- the notification unit 17 may notify the user via the user interface by notifying the result of the detection by the detection unit 16 to the user interface.
- the user interface may be an output device that constitutes the output unit 35, or may be the support device 20 as a user interface terminal.
- the notification unit 17 corresponds to an example of notification means for notifying information via a user interface in the PLC 100.
- the processing unit 18 is mainly realized by the processor 31 of the PLC 101.
- the processing unit 18 processes the packet received by the communication unit 36 according to the result of detection by the detection unit 16. Specifically, the processing unit 18 passes through accesses that are not exceptional accesses and starts processing based on the accesses. For example, based on an access requesting reading of data stored in the PLC 101, the processing unit 18 reads the data and causes the communication unit 11 to respond. Further, the processing unit 18 writes the data based on an access requesting writing of data to the PLC 101, and causes the communication unit 11 to respond to the completion of the writing.
- the processing unit 18 blocks exceptional access. Specifically, in response to an exception access requesting data reading, the processing unit 18 discards the packet without reading the data or responding. Furthermore, in response to an exceptional access requesting data writing, the packet is discarded without writing the data. Further, the processing unit 18 may record that there has been an exceptional access, or may cause the notification unit 17 to notify the fact that there has been an exceptional access. In the PLC 100, the processing unit 18 corresponds to an example of a processing unit that executes processing different from other accesses regarding the exception access when the exceptional access is newly accepted by the communication means.
- the support device 20 includes a setting section 21 for setting parameters for learning by the learning section 15 of the PLC 101, and a display section 22 for displaying information shared by the sharing section 14 to the user.
- the setting unit 21 is mainly realized by the processor 31 and communication unit 36 of the support device 20.
- the setting unit 21 receives parameters regarding learning speed and exceptional access determination accuracy from the user and sets them in the learning unit 15.
- the display unit 22 is mainly realized by the output unit 35 of the support device 20.
- the PLC process shown in FIG. 7 starts when the PLC 100 is powered on. Note that in order to clarify the relationship between the steps included in the PLC processing, the steps are illustrated as being executed in sequence, but the present invention is not limited to this, and the steps may be executed in parallel.
- the PLC 100 receives parameters for the learning section 15 from the support device 20 (step S1), and sets them in the learning section 15.
- the parameters may be quantitative values, or qualitative values such as the classification of learning speed as “fast” or “slow” or the classification of discrimination accuracy as “slow” or “severe”. There may be.
- an access information recording process that records access information based on access from outside the PLC 100 (step S2), a sharing process that shares the access information (step S3), and a learning process that learns a model based on the access information. (Step S4), and detection processing for detecting exceptional access using the model (Step S5) are repeatedly executed. Below, details of the processing in steps S2 to S5 will be explained in order.
- the processor 31 determines whether the recording trigger held by the PLC 100 is in the ON state (step S21).
- the recording trigger is a flag having a value of ON state or OFF state, and the value is set by the user or by external application software. If it is determined that the recording trigger is not in the ON state (step S21; No), the processing by the PLC 100 returns from the access information recording processing of FIG. 8 to the PLC processing of FIG. 7.
- the processing unit 12 calculates a time segment including the reception date and time from the reception date and time of the packet received as communication data by the communication unit 11. (Step S22). If the length of the time segment is one second as shown in FIG. 3, the processing unit 12 may truncate the number of seconds below the decimal point of the reception date and time. Furthermore, if the units of reception date and time are different from the units of time division, the processing unit 12 also converts the units.
- the processing unit 12 calculates the access speed (step S23).
- the processing unit 12 determines the packet size as the speed.
- the processing unit 12 generates access information by adding the identification information and port number of the communication partner to the time segment calculated in step S22 and the access speed calculated in step S23 (step S24). Specifically, the processing unit 12 creates access information in which the time segment and access speed are associated with the IP address indicating the source of the packet and the port number specified in the packet.
- the processing unit 12 records the access information generated in step S24 (step S25). Specifically, the processing unit 12 adds the generated access information to the transmission access information 131 in the storage unit 13 as new line data. Thereafter, the process by the PLC 100 returns from the access information recording process in FIG. 8 to the PLC process shown in FIG.
- step S31 the sharing unit 14 determines whether the sharing trigger held by the PLC 100 is in the ON state.
- a shared trigger is a flag that has a value of ON or OFF, and the value is set by the user or by external application software. If it is determined that the sharing trigger is not in the ON state (step S31; No), the processing by the PLC 100 returns from the sharing processing in FIG. 9 to the PLC processing in FIG. 7.
- the sharing unit 14 performs a temporary transaction generation process that generates a temporary temporary transaction that includes access information to be provided to other PLCs 100.
- Step S32 requesting node processing as a node requesting consensus building to commit a block including a tentative transaction
- step S34 receiving node processing as a node receiving the consensus building request
- step S35 a management node process as a node that manages consensus building
- the temporary transaction generation process, the requesting node process, the receiving node process, and the management node process may be executed in parallel.
- the relationship among the requesting node, receiving node, and management node will be explained with reference to the sequence diagram of FIG. 10.
- a requesting node 61, a management node 62, and a receiving node 63 each correspond to a PLC 100 connected to the network NW.
- One PLC 100 among the plurality of PLCs 100 executes temporary transaction generation processing and request node processing as the requesting node 61 at the timing when it determines that data to be newly committed to the distributed ledger is generated.
- One specific PLC 100 among the PLCs 100 other than the requesting node 61 executes management node processing as the management node 62 .
- the PLC 100 other than the requesting node 61 and the management node 62 executes receiving node processing as the receiving node 63. Therefore, each PLC 100 can serve as either a requesting node or a receiving node depending on the timing.
- the management node 62 may be determined in advance as being handled by a specific PLC 100.
- the PLC 101 may be determined in advance as the management node 62, and when the PLC 101 becomes the requesting node 61, it may be determined in advance that the PLC 102 will play the role of the management node 62.
- any one PLC 100 other than the requesting node 61 may be selected as the management node 62 each time according to a predetermined rule.
- the requesting node 61 may request the management node 62 to form a consensus using the PLC 100 having the lowest IP address among the PLCs 100 that can communicate via the network NW.
- the requesting node 61 executes a temporary transaction generation process (step S32), and transmits the generated temporary transaction to the management node 62 (step S301).
- the management node 62 distributes the temporary transaction received from the requesting node 61 to the receiving node 63 (step S302).
- the management node 62 and the receiving node 63 each verify the signature included in the temporary transaction (step S303).
- the management node 62 and the receiving node 63 each distribute the signature verification results to nodes other than the requesting node 61 (step S304), and receive the signature verification results distributed from the other nodes ( Step S305).
- the management node 62 and the receiving node 63 confirm that the temporary transaction has been changed by the management node 62. Verify that it is not.
- the management node 62 and the receiving node 63 each distribute the provisional transaction to nodes other than the requesting node 61 (step S306), and receive the provisional transaction distributed from the other node as a distributed transaction (step S307). . Then, the management node 62 and the receiving node 63 each confirm that the number of distribution transactions that match the tentative transaction received in step S302 is equal to or greater than the threshold (step S308). Thereby, the management node 62 and the receiving node 63 mutually confirm that the received temporary transactions match.
- the management node 62 generates a block including a temporary transaction, commits it to the distributed ledger owned by the sharing unit 14 of the management node 62 (step S309), and notifies the requesting node 61 of the commit result (step S310). ).
- each receiving node 63 generates a block including a temporary transaction, commits it to the distributed ledger owned by the sharing unit 14 of the receiving node 63 (step S309), and notifies the requesting node 61 of the commit result ( Step S310).
- the requesting node 61 determines that the management node 62 and the receiving node 63 have agreed to commit the block, and generates a block containing the temporary transaction. , commits to the distributed ledger held by the sharing unit 14 of the requesting node 61 (step S311). As a result, the requesting node 61, the management node 62, and the receiving node 63 mutually verify whether or not it is okay to commit the block, and then commit the block to the distributed ledger.
- step S32 details of each of the temporary transaction generation process (step S32), the requesting node process (step S33), the receiving node process (step S34), and the management node process (step S35) shown in FIG. 9 will be explained in order.
- the provisional transaction generation process (step S32) shown in FIG. 11 is mainly executed by the sharing unit 14 of the requesting node 61.
- the sharing unit 14 determines access information to be shared by transmitting it to other nodes (step S321). Specifically, when the number of access information added to the transmission access information 131 that has not yet been committed to the distributed ledger exceeds a certain number, the sharing unit 14 shares the access information. Determine the access information that should be accessed. Note that the method for determining access information to be shared may be arbitrarily changed.
- the sharing unit 14 may process the access information from the latest date and time stored at the beginning in descending order of the packet reception date and time, or in ascending or descending order by the number assigned to the access information in the transmission access information 131.
- the access information may be sorted and processed starting from the access information stored at the top.
- the sharing unit 14 may exclude access information that satisfies predetermined conditions from the transmission access information 131 from the access information to be shared. Further, each time access information is generated based on one access to the communication unit 11, the sharing unit 14 may determine the access information as the access information to be shared.
- the sharing unit 14 inserts the output access information 422 of the latest block 40 recorded in the distributed ledger as the input access information 421 of the temporary transaction to be generated (step S322). Then, the sharing unit 14 inserts the access information determined to be shared in step S321 as the output access information 422 of the temporary transaction (step S323). After that, the sharing unit 14 creates and inserts signatures for the input access information 421 inserted in step S322 and the output access information 422 inserted in step S323 (step S324).
- the signature is a hash value obtained by applying a hash function to a string of input access information 421 and output access information 422, but information obtained by other methods may be used as the signature. Thereby, the sharing unit 14 generates a temporary transaction including the input access information 421 of step S322, the output access information 422 of step S323, and the signature of step S324 (step S325).
- the requesting node process (step S33) shown in FIG. 12 is mainly executed by the sharing unit 14 of the requesting node 61.
- the sharing unit 14 determines whether there is a provisional transaction for which consensus building should be requested (step S331). If it is determined that there is no provisional transaction (step S331; No), the request node process ends, and the process by the PLC 100 returns to the sharing process in FIG. 9.
- step S331 if it is determined that there is a temporary transaction (step S331; Yes), the sharing unit 14 transmits the temporary transaction to the management node 62 (step S332).
- step S332 corresponds to step S301 in FIG. 10.
- step S333 determines whether the provisional transaction sent in step S332 has been approved. Specifically, the sharing unit 14 determines whether the number of nodes that have approved committing the temporary transaction is equal to or greater than a threshold value.
- This step S333 corresponds to step S310 in FIG.
- the sharing unit 14 generates a block header 41 to be added to the temporary transaction (step S334), and generates a block 40 including the generated block header 41 and the temporary transaction as the transaction section 42 ( Step S335).
- the sharing unit 14 then commits the generated block 40 to the distributed ledger (step S336).
- Steps S334 to S336 correspond to step S311 in FIG.
- step S34 The receiving node process (step S34) shown in FIG. 13 is mainly executed by the sharing unit 14 of the receiving node 63.
- the sharing unit 14 determines whether or not a temporary transaction has been received (step S341). If step S302 in FIG. 10 is executed and the temporary transaction is distributed from the management node 62, the determination in step S341 is affirmative.
- step S342 determines whether the signature of the received temporary transaction is correct (step S342). Specifically, the sharing unit 14 determines whether the signature included in the tentative transaction matches the signature generated from the input access information 421 and output access information 422 included in the tentative transaction. If the signatures match, the node other than the requesting node 61 is notified that the signatures are confirmed to be correct. Then, the sharing unit 14 determines whether the number of other nodes that have notified that the signature is correct is equal to or greater than a threshold value.
- Step S342 corresponds to steps S303 to S305 in FIG.
- step S342 If it is determined that the signature of the temporary transaction is correct (step S342; Yes), the sharing unit 14 distributes the temporary transaction to nodes other than the requesting node 61 (step S343).
- This step S343 corresponds to step S306 in FIG. 10.
- the sharing unit 14 receives the provisional transaction distributed from the distribution destination as a distribution transaction as a result of a step similar to step S343 being executed by the distribution destination of the temporary transaction (step S344).
- This step S344 corresponds to step S307 in FIG.
- the sharing unit 14 determines whether the temporary transaction received in step S341 and the distribution transaction received in step S344 match (step S345). Specifically, the sharing unit 14 compares each distribution transaction received from the plurality of distribution destinations in step S344 with the tentative transaction, and determines whether the number of distribution transactions that match the tentative transaction exceeds a threshold value. judge. This step S345 corresponds to step S308 in FIG.
- step S345 If it is determined that the temporary transaction and the distribution transaction match (step S345; Yes), the sharing unit 14 generates the block header 41 and generates the block 40 together with the temporary transaction (step S346). Then, the sharing unit 14 commits the generated block 40 to the distributed ledger of the sharing unit 14 (step S347).
- steps S346 and S347 correspond to step S309 in FIG. 10.
- the sharing unit 14 transmits the commit details to the requesting node 61 (step S348).
- the transmission of the commit contents may be the transmission of the block 40 committed in step S347, or may be a notification that the provisional transaction has been approved.
- This step S348 corresponds to step S310 in FIG. 10.
- the process by the PLC 100 returns to the sharing process shown in FIG. If the determinations in steps S341, S342, and S345 are negative (step S341; No, step S342; No, step S345; No), the sharing unit 14 does not approve the temporary transaction, and the processing by the PLC 100 is performed as shown in FIG. Return to the indicated sharing process.
- the management node process (step S35) shown in FIG. 14 is mainly executed by the sharing unit 14 of the management node 62.
- the sharing unit 14 determines whether the PLC 100 including the sharing unit 14 is a management node (step S351). If it is determined that it is a management node (step S351; Yes), the sharing unit 14 determines whether or not a temporary transaction has been received (step S352). If step S301 in FIG. 10 is executed, the determination in step S352 is affirmative.
- step S353 corresponds to step S302 in FIG.
- step S353 the sharing unit 14 executes steps S354 to S3510, which are similar to steps S342 to S348 in the receiving node process. Note that if the determinations in steps S351 and S352 are negative (step S351; No, S352; No), the process by the PLC 100 returns to the sharing process shown in FIG. 9 without the sharing unit 14 approving the temporary transaction. .
- step S4 the learning process
- the learning unit 15 determines whether the learning trigger held by the PLC 100 is in the ON state (step S41).
- the learning trigger is a flag having a value of ON state or OFF state, and the value is set by the user or by external application software. If it is determined that the learning trigger is not in the ON state (step S41; No), the processing by the PLC 100 returns from the learning processing in FIG. 15 to the PLC processing in FIG. 7.
- the learning unit 15 reads unlearned access information from the storage unit 13 (step S42). Specifically, the learning unit 15 extracts access information that has not been studied in the past from the sending access information 131 and the receiving access information 132.
- the learning unit 15 executes a conversion process to convert the access information into a format suitable for learning (step S43).
- the conversion process may be extraction of the feature amount shown in FIG.
- normalization or standardization of each element may be performed as a conversion process. For example, both the range of IP address values and the range of possible speed values may be normalized and converted into a range from zero to one.
- the amount of learning data increases, the amount of calculation when updating the learning model may increase exponentially, so a conversion may be performed to suppress the amount of calculation when updating the learning model.
- the learning unit 15 updates the model based on the access information whose format was converted in step S43 (step S44). Thereafter, the process by the PLC 100 returns from the learning process in FIG. 15 to the PLC process in FIG. 7 .
- the detection unit 16 determines whether the detection trigger held by the PLC 100 is in the ON state (step S51).
- the detection trigger is a flag having a value of ON state or OFF state, and the value is set by the user or by external application software. If it is determined that the detection trigger is not in the ON state (step S51; No), the processing by the PLC 100 returns from the detection processing in FIG. 16 to the PLC processing in FIG. 7.
- step S51 if it is determined that the detection trigger is in the ON state (step S51; Yes), the processing unit 12 processes the packet as communication data newly received by the communication unit 11 into access information (step S52 ), stored in the storage unit 13.
- the detection unit 16 applies the model learned by the learning unit 15 after performing the same conversion process as step S43 in FIG. 15 on the access information generated in step S52 (step S53). (Step S54), it is determined whether the access indicated by the access information is an exceptional access (Step S55).
- step S55 If it is determined that the access is not an exceptional access (step S55; No), the processing unit 18 executes normal access processing for the access (step S56). For example, the processing unit 18 executes reading or writing of data requested by the access. Thereafter, the processing by the PLC 100 returns from the detection processing in FIG. 16 to the PLC processing in FIG. 7.
- step S55 if it is determined that it is an exceptional access (step S55; Yes), the processing unit 18 blocks this exceptional access (step S57) and notifies the notification unit 17 on the user interface that there is an exceptional access. A notification is made (step S58). Thereafter, the processing by the PLC 100 returns from the detection processing in FIG. 16 to the PLC processing in FIG. 7.
- the processing unit 18 executes processing for the exceptional access that is different from normal access, such as blocking the exceptional access and notifying the user interface. Therefore, unusually occurring unauthorized access can be dealt with with a small processing load by performing processing different from normal processing. Therefore, availability in the case where unauthorized access occurs in the PLC system 1000 can be improved.
- IP filtering existing methods such as IP filtering are known in which trusted devices on the network NW are registered in advance in a whitelist and accesses from the devices are treated as legitimate. However, if such a device is hijacked or used as a stepping stone, or if access is made by IP spoofing, it is difficult to sufficiently protect the PLC 100 using the existing methods described above. On the other hand, if exceptional access is dealt with by focusing on the frequency of access, the PLC 100 can be protected from unauthorized access.
- access is filtered according to the initially set contents.
- the model learning by the learning unit 15 is repeated, it is possible to detect an exceptional access while adapting to the access occurring in the network NW.
- PBFT consensus building between PLCs is performed according to an algorithm called PBFT.
- distributed ledgers are subject to failures such as failures in nodes participating in the distributed ledger and the inability of those nodes to update the distributed ledger, and transactions being rewritten by external attackers. Tolerant to failure.
- the number of nodes participating in the distributed ledger may be set by setting the number of failure-tolerant nodes in advance and calculating backwards from this number of nodes. If the number of failure-tolerant nodes is f, then the number of nodes participating in the distributed ledger needs to be 3f+1. For example, if f is 1, four nodes need to participate as shown in FIG.
- the access information is stored in a storage device external to the PLC 100, such as a NAS (Network Attached Storage) and a memory card that can be inserted into and removed from the PLC 100. may be stored in a storage device external to the PLC 100, such as a NAS (Network Attached Storage) and a memory card that can be inserted into and removed from the PLC 100. may be stored in a NAS (Network Attached Storage) and a memory card that can be inserted into and removed from the PLC 100. may be stored in a storage device external to the PLC 100, such as a NAS (Network Attached Storage) and a memory card that can be inserted into and removed from the PLC 100. may be stored in a NAS (Network Attached Storage) and a memory card that can be inserted into and removed from the PLC 100. may be stored in a NAS (Network Attached Storage) and a memory card that can be inserted into and removed from the PLC 100. may be stored
- a method different from the method described above may be adopted.
- a One Class SVM Small Vector Machine
- a method such as the k-nearest neighbor method or the k-means method may be adopted.
- a deep neural network, a convolutional neural network, or a recurrent neural network may be employed as the learning method.
- Embodiment 2 will be described, focusing on the differences from Embodiment 1 described above. Note that for the same or equivalent configurations as those of the first embodiment, the same reference numerals are used.
- This embodiment differs from Embodiment 1 in that the result of detection by the detection unit 16 is shared by the sharing unit 14.
- the access information includes the header hash value 412 of the block 40 for sharing the access information, and the access indicated by the access information as an exceptional access by the detection unit 16. and a flag indicating whether or not it has been detected.
- a flag of "0" indicates normal access
- a flag of "1” indicates exceptional access.
- the PLC 100 notifies, via the user interface, that there has been an access that has been determined to be an exceptional access in another PLC 100. Specifically, when there is access information having a flag of "1" in the received access information 132, the notification unit 17 reports the exceptional access indicated by the access information.
- Embodiment 3 Next, Embodiment 3 will be described, focusing on the differences from Embodiment 1 described above. Note that for the same or equivalent configurations as those of the first embodiment, the same reference numerals are used. This embodiment differs from the first embodiment in that the access information includes information regarding device data, as shown in FIG.
- the PLC 100 usually shares data called device data with other devices, and achieves device control by manipulating the device data. For example, when a sensor device shares device data indicating a sensing result with the PLC 100, the sensing result is notified to the PLC 100, and when the PLC 100 shares device data indicating an operation command with an actuator, an operation command is issued to the actuator. Given.
- the processing unit 12 of the PLC 100 determines whether the request is for reading or writing, and the device data.
- the address of the device, the data type of the device data, and the starting point and number of points are shown in association with each other.
- a request of "R” indicates a read request
- a request of "W” indicates a write request.
- the sharing unit 14 also shares access information including information regarding such device data when accessing other PLCs 100.
- the learning unit 15 then updates the model based on this access information.
- the number of PLCs 100 that make up the PLC system 1000 may be changed arbitrarily.
- the Merkle root which is a hashed value of the list of nodes that have participated in the distributed ledger, the difficulty of mining, and the nonce when mining is successful, are It may be included in the header 41.
- the second and third embodiments described above may be combined. Further, in the second and third embodiments described above, elements are added to the access information according to the first embodiment, but the added elements are not limited to those described in the second and third embodiments. .
- files sent from the communication partner via the network NW remote operation information such as remote RUN to remotely start the PLC 100 and remote STOP to remotely stop the PLC 100, and changes in network settings such as the IP address.
- the access information may include one or more of the information indicating the clock data and the information indicating the change of the clock data.
- the access information indicates both the time at which the access was made and the time segment that includes the time
- the access information may indicate either the time or the time segment.
- the functions of the PLC 100 according to the embodiments described above can be realized by dedicated hardware or by a normal computer system.
- program P1 is stored and distributed in a computer-readable recording medium such as a flexible disk, CD-ROM (Compact Disk Read-Only Memory), DVD (Digital Versatile Disk), or MO (Magneto-Optical disk).
- a computer-readable recording medium such as a flexible disk, CD-ROM (Compact Disk Read-Only Memory), DVD (Digital Versatile Disk), or MO (Magneto-Optical disk).
- the program P1 may be stored in a disk device included in a server device on a communication network such as the Internet, and may be downloaded to a computer by being superimposed on a carrier wave, for example.
- the above-described processing can also be achieved by starting and executing the program P1 while transferring it via a network such as the Internet.
- the above processing can also be achieved by executing all or part of the program P1 on a server device, and executing the program P1 while the computer transmits and receives information regarding the processing via a communication network. .
- the means for realizing the functions of the PLC 100 is not limited to software, and part or all of it may be realized by dedicated hardware or circuits.
- the present disclosure is suitable for improving the security performance of systems operated at FA sites.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
PLC(101)は、PLC(102)と接続される。PLC(101)は、ネットワーク(NW)を介して外部からアクセスを受け付けて通信する通信部(11)と、アクセスに関するアクセス情報を記憶する記憶部(13)と、アクセス情報をPLC(102)に提供し、ネットワーク(NW)を介するPLC(102)へのアクセスに関するアクセス情報をPLC(102)から取得することで、アクセス情報を分散型台帳の形式でPLC(102)と共有する共有部(14)と、アクセス情報により示されるアクセスのうちの、他のアクセスより頻度が低い例外アクセスが通信部(11)によって新たに受け付けられた場合に、例外アクセスについて他のアクセスとは異なる処理を実行する処理部(18)と、を備える。
Description
本開示は、プログラマブルコントローラ、プログラマブルコントローラシステム、アクセス情報共有方法及びプログラムに関する。
近年、特定の管理主体が存在しないネットワークにおいて信頼性の高いデータを共有するための分散型台帳技術が注目されている。この分散型台帳技術を、複数の装置がネットワークで接続されたFA(Factory Automation)システムに適用することが提案されている(例えば、特許文献1を参照)。
特許文献1には、分散型台帳技術を利用して制御プログラムの実行可否を決定する制御システムについて記載されている。この制御システムでは、制御装置が、当該制御装置を構成するデバイスの構成を示す固有情報を生成し、生成した固有情報を他の制御装置との間で分散型台帳の形式で保持する。制御装置は、制御プログラムの実行開始要求に応答して、当該制御装置が生成した固有情報を、他の制御装置によって保持される固有情報と照合し、照合の結果に応じて制御プログラムの実行を許可し又は禁止する。このような制御装置を有する制御システムによれば、本来の環境とは異なる環境下での制御プログラムの起動を防ぐことができる。
特許文献1の技術では、制御プログラムの不正な実行が要求された場合に、制御プログラムの実行は禁止される。しかしながら、不正な要求が繰り返されると、要求のたびに固有情報を照合する必要があり、制御システム全体において照合のための処理負荷が大きくなる。このため、制御システムの処理性能が低下し、その機能が停止してしまうおそれもある。すなわち、制御システムがその機能を十分に発揮することができる稼働状態を継続するという可用性が、不正なアクセスにより低下するおそれがある。したがって、FAシステムにおいて不正なアクセスが発生した場合の可用性を向上させる余地がある。
本開示は、上述の事情の下になされたもので、FAシステムにおいて不正なアクセスが発生した場合の可用性を向上させることを目的とする。
上記目的を達成するため、本開示のプログラマブルコントローラは、他のプログラマブルコントローラと接続されるプログラマブルコントローラであって、ネットワークを介して外部から第1アクセスを受け付けて通信する通信手段と、第1アクセスに関する第1アクセス情報を記憶する記憶手段と、記憶手段に記憶される第1アクセス情報を他のプログラマブルコントローラに提供し、ネットワークを介する他のプログラマブルコントローラへの第2アクセスに関する第2アクセス情報を他のプログラマブルコントローラから取得することで、第1アクセス情報及び第2アクセス情報を分散型台帳の形式で他のプログラマブルコントローラと共有する共有手段と、第1アクセス情報により示される第1アクセス及び第2アクセス情報により示される第2アクセスのうちの、他のアクセスより頻度が低い例外アクセスが通信手段によって新たに受け付けられた場合に、例外アクセスについて他のアクセスとは異なる処理を実行する処理手段と、を備える。
本開示によれば、例外アクセスが新たに受け付けられた場合に、処理手段が、例外アクセスについて他のアクセスとは異なる処理を実行する。このため、例外的に発生する不正なアクセスについては、通常とは異なる処理をすることにより対処することができる。したがって、FAシステムにおいて不正なアクセスが発生した場合の可用性を向上させることができる。
以下、本開示の実施の形態に係るデータ収集システムについて、図面を参照しつつ詳細に説明する。
実施の形態1.
本実施の形態に係るPLC(Programmable Logic Controller)システム1000は、工場においてネットワークを介して機器を制御する制御システムとして構築される。PLCシステム1000は、例えば、製造ライン、加工ライン、検査ライン、その他の処理工程を実施するためのFAシステムである。PLCシステム1000では、各装置が、外部からのアクセスを記録して分散型台帳の形式で共有し、例外的なアクセスを判別するためのモデルを、共有した記録に基づいて学習する。そして、学習されたモデルを用いて例外的なアクセスが検知されると、当該アクセスに対する処理が実行される。
本実施の形態に係るPLC(Programmable Logic Controller)システム1000は、工場においてネットワークを介して機器を制御する制御システムとして構築される。PLCシステム1000は、例えば、製造ライン、加工ライン、検査ライン、その他の処理工程を実施するためのFAシステムである。PLCシステム1000では、各装置が、外部からのアクセスを記録して分散型台帳の形式で共有し、例外的なアクセスを判別するためのモデルを、共有した記録に基づいて学習する。そして、学習されたモデルを用いて例外的なアクセスが検知されると、当該アクセスに対する処理が実行される。
PLCシステム1000は、図1に示されるように、ネットワークNWを介して互いに接続されるPLC101,102,103と、PLC101のユーザインタフェース端末として機能する支援装置20と、を有する。ネットワークNWは、産業用ネットワークであってもよいし、情報ネットワークであってもよい。ネットワークNWでは、例えば、TCP(Transmission Control Protocol)/IP(Internet Protocol)に従ってパケットが伝送される。支援装置20及びPLC101は、USB(Universal Serial Bus)ケーブルのような通信線、又はLAN(Local Area Network)のようなネットワークを介して接続される。PLCシステム1000は、プログラマブルコントローラシステムの一例に相当する。
PLC101,102,103はそれぞれ、同等の構成要素を有し、同等の機能を発揮する。図1では、PLC101の構成が詳細に示されており、PLC102,103の構成は簡略化されている。以下では、PLC101,102,103を区別することなくPLC100と表記することがある。
PLC100は、ラダープログラムに代表される制御プログラムを実行することにより不図示の機器を制御する制御装置である。PLC100は、他のPLC100と協調して機器を制御してもよい。例えば、PLC101が、センサによるセンシング結果を取得して、このPLC101又はPLC102が、センシング結果に基づく動作指令をアクチュエータに出力することで、ベルトコンベア上のワークが搬送される。PLC100は、プログラマブルコントローラの一例に相当する。
支援装置20は、産業用PC(Personal Computer)であって、PLC100に実行させる制御プログラムを作成及び編集してPLC100に書き込むためのエンジニアリングツールと呼ばれるアプリケーションソフトウェアを有する。
PLC100及び支援装置20はそれぞれ、コンピュータとして機能するためのハードウェア要素によって構成される。詳細には、図2に示されるように、PLC100及び支援装置20のそれぞれに相当するFA装置30は、プロセッサ31と、主記憶部32と、補助記憶部33と、入力部34と、出力部35と、通信部36と、を有する。主記憶部32、補助記憶部33、入力部34、出力部35及び通信部36はいずれも、内部バス37を介してプロセッサ31に接続される。
プロセッサ31は、処理回路としてのCPU(Central Processing Unit)を含む。プロセッサ31は、補助記憶部33に記憶されるプログラムP1を実行することにより、種々の機能を実現して、後述の処理を実行する。なお、支援装置20のプログラムP1は、上述のエンジニアリングツールに相当する。また、PLC100のプロセッサ31は、プログラムP1に加えて、上述の制御プログラムを実行する。
主記憶部32は、RAMを含む。主記憶部32には、補助記憶部33からプログラムP1がロードされる。そして、主記憶部32は、プロセッサ31の作業領域として用いられる。
補助記憶部33は、EEPROM(Electrically Erasable Programmable Read-Only Memory)及びHDD(Hard Disk Drive)に代表される不揮発性メモリを含む。補助記憶部33は、プログラムP1の他に、プロセッサ31の処理に用いられる種々のデータを記憶する。補助記憶部33は、プロセッサ31の指示に従って、プロセッサ31によって利用されるデータをプロセッサ31に供給する。また、補助記憶部33は、プロセッサ31から供給されたデータを記憶する。
入力部34は、ハードウェアスイッチ、入力キー、キーボード及びポインティングデバイスに代表される入力デバイスを含む。入力部34は、FA装置30のユーザによって入力された情報を取得して、取得した情報をプロセッサ31に通知する。
出力部35は、LED(Light Emitting Diode)、LCD(Liquid Crystal Display)及びスピーカに代表される出力デバイスを含む。出力部35は、プロセッサ31の指示に従って種々の情報をユーザに提示する。
通信部36は、外部の装置と通信するための通信インタフェース回路を含む。通信部36は、外部から信号を受信して、この信号により示されるデータをプロセッサ31へ出力する。また、通信部36は、プロセッサ31から出力されたデータを示す信号を外部の装置へ送信する。なお、図2では1つの通信部36が代表的に示されているが、FA装置30は、複数の通信部36を有してもよい。例えば、PLC101であるFA装置30は、支援装置20と通信するための通信部36と、ネットワークNWを介して通信するための通信部36と、を別個に有してもよい。
上述のハードウェア構成が協働することにより、PLC100及び支援装置20は、種々の機能を発揮する。詳細には、PLC101は、図1に示されるように、その機能として、ネットワークNWを介して外部からのアクセスを受け付けて通信する通信部11と、通信部11によって受信されたパケットを加工してアクセスに関するアクセス情報を生成する加工部12と、アクセス情報を蓄積して記憶する記憶部13と、アクセス情報をPLC102,103と共有する共有部14と、アクセス情報に基づいて例外的なアクセスを判別するためのモデルを学習する学習部15と、学習されたモデルに基づいて例外的なアクセスを検知する検知部16と、例外的なアクセスをユーザに報知する報知部17と、例外的なアクセスを処理する処理部18と、を有する。
通信部11は、主としてPLC101のプロセッサ31及び通信部36の協働により実現される。通信部11によるアクセスの受け付けは、ネットワークNWを介してPLC101自体が宛先として指定されたパケットを受信することを意味する。図1において、通信部11にアクセスする装置としてPLC102,103が示されているが、不図示の装置がネットワークNWを介して通信部11にアクセスし得る。また、通信部11は、必要に応じてパケットをネットワークNWへ送信する。通信部11は、PLC100において、ネットワークを介して外部から第1アクセスを受け付ける通信手段の一例に相当する。
加工部12は、主としてPLC101のプロセッサ31によって実現される。加工部12は、通信部11からパケットの提供を受けて、当該パケットを加工して、通信部11へのアクセスに関するアクセス情報を生成する。
アクセス情報は、アクセスをした通信装置をネットワークNW上で識別するための識別情報と、アクセスがなされた時刻及び当該時刻を含む予め定められた時間区分の少なくとも一方と、を含む。例えば、アクセス情報は、図3に示される送信アクセス情報131を構成する1つの行に相当するレコードであって、アクセスの時刻としてのパケット受理日時と、識別情報としての送信元IPアドレスと、パケットで指定されるポート番号と、受理日時を含む秒単位の時間区分と、アクセスの頻度に相当する速度と、を関連付けて示す。
時間区分の長さは、図3の例では1秒間であるが、これには限定されず、任意に変更してもよい。なお、図3中の「20220118-131310」は、2020年1月18日の13時13分10秒から11秒までの1秒間の区間を表す。速度は、時間区分において発生したアクセスで受信されたパケットのサイズをbps(bit per second)単位で示す。時間区分の長さが1秒間であるため、速度は、図3ではパケットのサイズに等しい。ここで、1つの時間区分において受信されたパケットのサイズは、パケットを構成する各ビット値の通信部11によって受信された合計に等しい。すなわち、速度は、1つの時間区分において各ビット値のアクセスが発生した頻度に相当するといえる。なお、1つのパケットの受信が1つの時間区分内で完了しない場合も有り得るが、当該パケットを構成するすべてのビット値が、当該パケットの受理日時において受信されたものとして扱ってもよい。
記憶部13は、主としてPLC101の主記憶部32及び補助記憶部33の少なくとも一方によって実現される。記憶部13は、図3に示されるように、加工部12によって生成されたアクセス情報の集合である送信アクセス情報131と、PLC102,103によって生成されてPLC102,103から受信される受信アクセス情報132と、をアクセスの履歴として記憶する。
送信アクセス情報131は、PLC100間で共有するために、PLC101からPLC102,103に対して送信される。受信アクセス情報132は、PLC101以外のPLC102,103へのアクセスを示す情報であって、PLC100間で共有するために、PLC101によってPLC102,103から受信される。送信アクセス情報131及び受信アクセス情報132においては、図3に示されるようにアクセス情報に番号が付与されてもよい。
記憶部13は、記憶手段の一例に相当する。送信アクセス情報131は、第1アクセスに関する第1アクセス情報の一例に相当し、受信アクセス情報132は、第2アクセスに関する第2アクセス情報の一例に相当する。受信アクセス情報132により示されるアクセスは、ネットワークNWを介する他のプログラマブルコントローラへの第2アクセスの一例に相当する。
図1に戻り、共有部14は、主としてPLC101のプロセッサ31及び通信部36の協働により実現される。共有部14は、記憶部13に記憶される送信アクセス情報131及び受信アクセス情報132を、PLC102,103と分散型台帳の形式で共有する。詳細には、共有部14は、図4に示されるように、ブロックヘッダ41及びトランザクション部42を含むブロック40が、1つ前のブロック40と連結して順次生成される形式で、情報を共有する。
ブロックヘッダ41は、図5に示されるように、前回生成されたブロック40のブロックヘッダ41のヘッダハッシュ値412に等しい前回ヘッダハッシュ値411と、ブロックヘッダ41自体に含めるデータのハッシュ値であるヘッダハッシュ値412と、ブロック40が生成された日時を示す生成日時情報413と、を有する。また、トランザクション部42は、前回のブロック40のトランザクション部42の出力アクセス情報422を含む入力アクセス情報421と、ブロック40において追加されるアクセス情報が格納される出力アクセス情報422と、入力アクセス情報421及び出力アクセス情報422の署名423と、を含む。
共有すべきアクセス情報を出力アクセス情報422として含む新たに連結すべきブロック40の追加がPLC100間で共有されることで、アクセス情報が共有される。詳細には、PLC101から提供される送信アクセス情報131を含むブロック40が追加されることで、PLC101の送信アクセス情報131をPLC102,103が取得し、当該送信アクセス情報131がPLC102,103に対して共有される。また、PLC102又はPLC103から提供されるアクセス情報を含むブロックが追加されることで、PLC102又はPLC103において記録されたアクセス情報をPLC101が取得し、当該アクセス情報が受信アクセス情報132としてPLC101によって共有される。
なお、入力アクセス情報421は、前回のブロック40の出力アクセス情報422を加工した情報を含んでもよい。また、入力アクセス情報421は、前回のブロック40のトランザクション部42のID(Identifier)及びそのトランザクション部42に含まれる出力アクセス情報422を加工した情報であってもよい。
共有部14は、PLC101の主記憶部32及び補助記憶部33の少なくとも一方により、記憶部13とは異なる記憶装置として機能してもよい。すなわち、共有部14は、順次連結されるブロック40を記憶し、このブロック40のうちの出力アクセス情報422を記憶部13と同期してもよい。
分散型台帳のブロックを連結する方式としては、プライベートチェーン、コンソーシアムチェーン、及びパブリックチェーンの3種類が知られている。ここで、アクセス情報を外部の第三者に公開したくないユーザがPLC100を使用する場面においては多数であり、分散型台帳に参加するPLC100を個別に設定可能であるため、プライベートチェーン又はコンソーシアムチェーンを採用することが好ましい。共有部14は、PLC100において、送信アクセス情報131及び受信アクセス情報132を分散型台帳の形式で他のプログラマブルコントローラと共有する共有手段の一例に相当する。
図1に戻り、学習部15は、主としてPLC101のプロセッサ31によって実現される。学習部15は、記憶部13に記憶されるアクセス情報から、他のアクセスより頻度が低い例外アクセスを判別するためのモデルを学習する。例えば、学習部15は、個々のアクセス情報から特徴量を抽出して、特徴量の分布を正規分布でフィッティングする。図6には、正規分布のフィッティングによるモデルの学習が模式的に示されている。
図6の例では、個々のアクセス情報から抽出される第1特徴量及び第2特徴量によって規定されるサンプリング点が塗りつぶされた丸印及び白抜きの丸印で示されている。第1特徴量及び第2特徴量は、例えば、アクセス情報によって示される送信元IPアドレス又は当該IPアドレスのグループ、並びに、ポート番号又は当該ポート番号のグループであってもよいし、アクセス情報から算出される他の任意の特徴量であってもよい。また、これらのサンプリング点をフィッティングした正規分布の3σが領域50として示されている。通常、多く観測されるアクセスは、領域50内の塗りつぶされた丸印で示されるサンプリング点51に対応し、例外的なアクセスは、領域50外の白抜きの丸印で示されるサンプリング点52に対応する。ここで、領域50に含まれるか否かにより例外アクセスを判別することとすれば、領域50が、例外アクセスを判別するためのモデルに相当する。図6の例では、例外アクセスは、他のアクセスよりも低い頻度で抽出される特徴量を有するアクセスであって、他のアクセスから高い頻度で抽出される特徴量の範囲外の特徴量を有するアクセスといえる。
なお、学習部15による学習の手法を任意に変更してもよい。ただし、学習の手法の分類として知られている、教師なし学習、教師あり学習、及び強化学習の3種類のうちの、個々のアクセスが例外アクセスに相当するか否かを知ることができない状況下においても、パラメータのチューニングにより例外アクセスを判別することが可能な教師なし学習を採用することが望ましい。また、通常、ネットワークNWを介するアクセスは正常であるものが多く不正アクセスの件数は正常なアクセスと比べて極端に少ないという点でも、教師なし学習が好ましい。例外アクセスか否かの正しいラベルを予め個々のアクセス情報に付与する教師が存在する場合には、教師あり学習が採用されてもよい。また、モデルを適用して例外アクセスを検知した結果としての報酬を設計することができる場合には、強化学習が採用されてもよい。
また、学習部15は、時間区分ごとに異なるモデルを学習してもよい。例えば、1日間又は1月間のような比較的長い時間区分において生じた複数のアクセスに基づいて、学習部15が当該時間区分において用いられるモデルを学習し、将来における同一の日付又は暦上の同一の月において当該モデルを用いて例外アクセスが検知されてもよい。また、1分間又は1時間のような比較的短い時間区分において生じるアクセスを1日又は複数日で収集してから学習部15がモデルを学習した後に、新たなアクセスが生じた時間区分に対応する学習済みモデルを用いて、当該新たなアクセスが例外アクセスであるか否かが判定されてもよい。学習部15は、PLC100において、例外アクセスを判別するためのモデルを学習する学習手段の一例に相当する。
図1に戻り、検知部16は、主としてPLC101のプロセッサ31によって実現される。検知部16は、学習部15によって学習されたモデルを用いて、記憶部13に記憶されるアクセス情報により示されるアクセスから、例外アクセスを検知する。
例えば、図6に示される領域50によって例外アクセスを判別する場合には、過去において生じたアクセスに対応するサンプリング点52が領域50外に位置するため、検知部16は、当該アクセスを例外アクセスとして検知する。また、サンプリング点52と同様のアクセス又はサンプリング点52に類似するアクセスが将来において生じたときに、検知部16は、当該アクセスを例外アクセスとして検知する。ここで、過去は、モデルの学習前を意味し、将来は、モデルの学習後を意味する。サンプリング点52に類似するアクセスは、図6においては、サンプリング点52の近傍に位置する不図示の新たな点に対応する。さらに、検知部16は、過去において生じたいずれのアクセスとも類似しないサンプリング点53についても、領域50を用いて例外アクセスとして検知する。このように、モデルは、未知のアクセスについても例外アクセスであるか否かを判別可能であることが好ましい。
なお、アクセスに対応するサンプリング点の分布に基づいて、他のアクセスより頻度が少ない例外アクセスを判別するためのモデルを例示したが、これには限定されない。例えば、図3に示される速度に対応する重みをサンプリング点に乗じてもよい。また、速度としての頻度を特徴量として、当該特徴量が閾値より小さいアクセスを例外アクセスとして判別してもよい。特徴量の種類は、1つであってもよいし、3つより多くてもよい。検知部16は、PLC100において、通信手段によって受け付けられた第1アクセスから例外アクセスを検知する検知手段の一例に相当する。
図1に戻り、報知部17は、主としてPLC101のプロセッサ31及び出力部35の協働により実現される。報知部17は、検知部16による検知の結果をユーザインタフェースに対して報知することにより、当該ユーザインタフェースを介してユーザに報知してもよい。ここで、ユーザインタフェースは、出力部35を構成する出力デバイスであってもよいし、ユーザインタフェース端末としての支援装置20であってもよい。報知部17は、PLC100において、ユーザインタフェースを介して情報を報知する報知手段の一例に相当する。
処理部18は、主としてPLC101のプロセッサ31によって実現される。処理部18は、検知部16による検知の結果に応じて、通信部36によって受信されたパケットを処理する。詳細には、処理部18は、例外アクセスでないアクセスを透過して、当該アクセスに基づく処理を開始する。例えば、処理部18は、PLC101に保存されているデータの読み出しを要求するアクセスに基づいて、当該データを読み出して通信部11に応答させる。また、処理部18は、PLC101へのデータの書き込みを要求するアクセスに基づいて、当該データを書き込んで、書き込み完了の旨を通信部11に応答させる。
一方、処理部18は、例外アクセスを遮断する。詳細には、処理部18は、データの読み出しを要求する例外アクセスに対して、データを読み出し及び応答の双方をすることなく、パケットを破棄する。また、データの書き込みを要求する例外アクセスに対して、データを書き込むことなく、パケットを破棄する。さらに、処理部18は、例外アクセスがあったことを記録してもよいし、報知部17に報知させてもよい。処理部18は、PLC100において、例外アクセスが通信手段によって新たに受け付けられた場合に、例外アクセスについて他のアクセスとは異なる処理を実行する処理手段の一例に相当する。
支援装置20は、PLC101の学習部15による学習のパラメータを設定するための設定部21と、共有部14によって共有されている情報をユーザに対して表示する表示部22と、を有する。
設定部21は、主として支援装置20のプロセッサ31及び通信部36によって実現される。設定部21は、学習速度及び例外アクセスの判別精度に関するパラメータをユーザから受け付けて学習部15に設定する。表示部22は、主として支援装置20の出力部35によって実現される。
続いて、上述の機能を有するPLC100によって実行されるPLC処理について、図7~16を用いて説明する。
図7に示されるPLC処理は、PLC100の電源が投入されることで開始する。なお、PLC処理に含まれる各ステップの関係を明確にするために、ステップが順に実行されるものとして図示しているが、これには限定されず、各ステップが並列に実行されてもよい。
PLC処理では、PLC100が、学習部15に対するパラメータを支援装置20から受け付けて(ステップS1)、学習部15に設定する。パラメータは、定量的な値であってもよいし、学習速度についての「速く」又は「緩やか」という分類、若しくは判別精度についての「緩く」又は「厳しく」という分類のような定性的な値であってもよい。そして、PLC100の外部からのアクセスに基づいてアクセス情報を記録するアクセス情報記録処理と(ステップS2)、アクセス情報を共有する共有処理と(ステップS3)、アクセス情報に基づいてモデルを学習する学習処理と(ステップS4)、モデルを用いて例外アクセスを検知する検知処理と(ステップS5)、を繰り返し実行する。以下、これらステップS2~S5の処理の詳細について順に説明する。
ステップS2のアクセス情報記録処理では、図8に示されるように、PLC100が保持している記録トリガがON状態であるか否かをプロセッサ31が判定する(ステップS21)。記録トリガは、ON状態又はOFF状態の値を有するフラグであって、ユーザにより又は外部のアプリケーションソフトウェアにより値が設定される。記録トリガがON状態でないと判定された場合(ステップS21;No)、PLC100による処理は、図8のアクセス情報記録処理から図7のPLC処理に戻る。
一方、記録トリガがON状態であると判定された場合(ステップS21;Yes)、加工部12は、通信部11によって通信データとして受信されたパケットの受理日時から当該受理日時を含む時間区分を演算する(ステップS22)。図3に示されたように時間区分の長さが1秒間である場合には、加工部12は、受理日時の秒数の小数点以下を切り捨てればよい。また、受理日時の単位と時間区分の単位が異なる場合には、加工部12は、単位の換算も実行する。
次に、加工部12は、アクセス速度を演算する(ステップS23)。図3の例では、加工部12は、パケットのサイズを速度として求める。そして、加工部12は、ステップS22で算出された時間区分とステップS23で算出されたアクセス速度に、通信相手の識別情報及びポート番号を追加することでアクセス情報を生成する(ステップS24)。具体的には、加工部12は、時間区分及びアクセス速度に、パケットの送信元を示すIPアドレスとパケットで指定されるポート番号を関連付けたアクセス情報を作成する。
次に、加工部12は、ステップS24で生成したアクセス情報を記録する(ステップS25)。具体的には、加工部12は、生成したアクセス情報を記憶部13の送信アクセス情報131の新たな行データとして追加する。その後、PLC100による処理は、図8のアクセス情報記録処理から図7に示されるPLC処理に戻る。
ステップS3の共有処理では、図9に示されるように、PLC100が保持している共有トリガがON状態であるか否かを、共有部14が判定する(ステップS31)。共有トリガは、ON状態又はOFF状態の値を有するフラグであって、ユーザにより又は外部のアプリケーションソフトウェアにより値が設定される。共有トリガがON状態でないと判定された場合(ステップS31;No)、PLC100による処理は、図9の共有処理から図7のPLC処理に戻る。
一方、共有トリガがON状態であると判定された場合(ステップS31;Yes)、共有部14は、他のPLC100に提供すべきアクセス情報を含む一時的な仮トランザクションを生成する仮トランザクション生成処理と(ステップS32)、仮トランザクションを含むブロックをコミットすることの合意形成を依頼するノードとしての依頼ノード処理と(ステップS33)、合意形成の依頼を受信するノードとしての受信ノード処理と(ステップS34)、合意形成を管理するノードとしての管理ノード処理と(ステップS35)、を実行する。これらの処理は、例えばPBFT(Practical Byzantine Fault Tolerance)と呼ばれるアルゴリズムに従う。なお、仮トランザクション生成処理及び依頼ノード処理と、受信ノード処理と、管理ノード処理と、を並列に実行してもよい。ここで、依頼ノード、受信ノード及び管理ノードの関係について、図10のシーケンス図を参照して説明する。
図10において、依頼ノード61、管理ノード62及び受信ノード63はそれぞれ、ネットワークNWに接続されるPLC100に相当する。複数のPLC100のうちの1台のPLC100が、新たに分散型台帳にコミットすべきデータが発生したと判断したタイミングで、依頼ノード61として仮トランザクション生成処理及び依頼ノード処理を実行する。依頼ノード61以外のPLC100のうちの、特定の1台のPLC100が、管理ノード62として管理ノード処理を実行する。依頼ノード61及び管理ノード62以外のPLC100は、受信ノード63として受信ノード処理を実行する。このため、PLC100はそれぞれ、タイミングによって依頼ノード及び受信ノードのいずれにも該当し得る。
管理ノード62は、特定のPLC100が担うものとして予め定められてもよい。例えば、PLC101を管理ノード62として予め決定しておき、PLC101が依頼ノード61となる場合にはPLC102が管理ノード62を担うことが予め定められてもよい。また、予め定められたルールに従って依頼ノード61以外のいずれか1台のPLC100が管理ノード62として都度選択されてもよい。例えば、依頼ノード61は、ネットワークNWを介して通信可能なPLC100のうちの、最小の値のIPアドレスを有するPLC100を管理ノード62として、当該管理ノード62に合意形成を依頼してもよい。
図10に示されるように、依頼ノード61は、仮トランザクション生成処理を実行して(ステップS32)、生成した仮トランザクションを管理ノード62に送信する(ステップS301)。管理ノード62は、依頼ノード61から受信した仮トランザクションを受信ノード63に配布する(ステップS302)。
次に、管理ノード62及び受信ノード63はそれぞれ、仮トランザクションに含まれる署名を検証する(ステップS303)。署名が正しいと判断すると、管理ノード62及び受信ノード63はそれぞれ、署名検証結果を依頼ノード61以外のノードに配布して(ステップS304)、他のノードから配布された署名検証結果を受信する(ステップS305)。管理ノード62及び受信ノード63がそれぞれ、正しい署名検証結果を送信したノード数が閾値以上であることを確認することにより、管理ノード62及び受信ノード63は互いに、管理ノード62によって仮トランザクションが変更されていないことを検証する。
次に、管理ノード62及び受信ノード63はそれぞれ、仮トランザクションを依頼ノード61以外のノードに配布して(ステップS306)、他のノードから配布された仮トランザクションを配布トランザクションとして受信する(ステップS307)。そして、管理ノード62及び受信ノード63はそれぞれ、ステップS302で受信した仮トランザクションと一致する配布トランザクションの数が閾値以上であることを確認する(ステップS308)。これにより、管理ノード62及び受信ノード63は互いに、受信した仮トランザクションが一致することを確認する。
次に、管理ノード62は、仮トランザクションを含むブロックを生成し、管理ノード62の共有部14が有する分散型台帳にコミットして(ステップS309)、コミット結果を依頼ノード61に通知する(ステップS310)。同様に、受信ノード63はそれぞれ、仮トランザクションを含むブロックを生成し、当該受信ノード63の共有部14が有する分散型台帳にコミットして(ステップS309)、コミット結果を依頼ノード61に通知する(ステップS310)。
依頼ノード61は、コミット結果を通知したノード数が閾値以上であれば、管理ノード62及び受信ノード63によってブロックをコミットすることの合意が形成されたと判断し、仮トランザクションを含むブロックを生成して、依頼ノード61の共有部14が有する分散型台帳にコミットする(ステップS311)。これにより、依頼ノード61、管理ノード62及び受信ノード63が互いに、ブロックをコミットしてよいか否かを検証した上で、分散型台帳にブロックがコミットされる。
続いて、図9に示される仮トランザクション生成処理(ステップS32)、依頼ノード処理(ステップS33)、受信ノード処理(ステップS34)、及び管理ノード処理(ステップS35)それぞれの詳細について順に説明する。
図11に示される仮トランザクション生成処理(ステップS32)は、主として依頼ノード61の共有部14によって実行される。仮トランザクション生成処理では、共有部14が、他のノードに送信することにより共有すべきアクセス情報を決定する(ステップS321)。具体的には、共有部14は、送信アクセス情報131に追加されたアクセス情報のうち、未だ分散型台帳にコミットされていないアクセス情報が一定数以上となったときに、当該アクセス情報を共有すべきアクセス情報として決定する。なお、共有すべきアクセス情報を決定する手法を任意に変更してもよい。例えば、共有部14は、パケット受理日時を降順にして先頭に格納されている最新の日時のアクセス情報から処理してもよいし、送信アクセス情報131においてアクセス情報に付与された番号で昇順または降順にソートし先頭に格納されているアクセス情報から処理してもよい。共有部14は、送信アクセス情報131のうちの予め定められた条件を満たすアクセス情報については、共有すべきアクセス情報から除外してもよい。また、通信部11への1回のアクセスに基づいてアクセス情報が生成されるたびに、共有部14は、当該アクセス情報を共有すべきアクセス情報として決定してもよい。
次に、共有部14は、生成すべき仮トランザクションの入力アクセス情報421として、分散型台帳に記録されている最新のブロック40の出力アクセス情報422を挿入する(ステップS322)。そして、共有部14は、ステップS321で共有すべきことが決定されたアクセス情報を、仮トランザクションの出力アクセス情報422として挿入する(ステップS323)。その後、共有部14は、ステップS322で挿入した入力アクセス情報421及びステップS323で挿入した出力アクセス情報422についての署名を作成して挿入する(ステップS324)。署名は、入力アクセス情報421及び出力アクセス情報422を文字列として連結したものにハッシュ関数を適用して得るハッシュ値であるが、他の手法により得る情報を署名として採用してもよい。これにより、共有部14は、ステップS322の入力アクセス情報421、ステップS323の出力アクセス情報422、及びステップS324の署名を含む仮トランザクションを生成する(ステップS325)。
図12に示される依頼ノード処理(ステップS33)は、主として依頼ノード61の共有部14によって実行される。依頼ノード処理では、共有部14が、合意形成を依頼すべき仮トランザクションがあるか否かを判定する(ステップS331)。仮トランザクションがないと判定された場合(ステップS331;No)、依頼ノード処理は終了し、PLC100による処理は、図9の共有処理に戻る。
一方、仮トランザクションがあると判定した場合(ステップS331;Yes)、共有部14は、管理ノード62へ仮トランザクションを送信する(ステップS332)。このステップS332は、図10のステップS301に対応する。
次に、共有部14は、ステップS332で送信した仮トランザクションが承認されたか否かを判定する(ステップS333)。具体的には、共有部14は、仮トランザクションをコミットすることを承認したノード数が閾値以上であるか否かを判定する。このステップS333は、図10のステップS310に対応する。
次に、共有部14は、仮トランザクションに付与すべきブロックヘッダ41を生成して(ステップS334)、生成したブロックヘッダ41と、トランザクション部42としての仮トランザクションと、を含むブロック40を生成する(ステップS335)。そして、共有部14は、生成したブロック40を分散型台帳にコミットする(ステップS336)。ステップS334~S336は、図10のステップS311に対応する。
図13に示される受信ノード処理(ステップS34)は、主として受信ノード63の共有部14によって実行される。受信ノード処理では、共有部14が、仮トランザクションを受信したか否かを判定する(ステップS341)。図10のステップS302が実行されて管理ノード62から仮トランザクションが配布された場合に、このステップS341の判定が肯定される。
仮トランザクションを受信したと判定した場合(ステップS341;Yes)、共有部14は、受信した仮トランザクションの署名が正しいか否かを判定する(ステップS342)。具体的には、共有部14は、仮トランザクションに含まれている署名と、仮トランザクションに含まれている入力アクセス情報421及び出力アクセス情報422から生成した署名と、が一致するか否かを判定し、一致する場合には当該署名が正しいことを確認した旨を依頼ノード61以外に通知する。そして、共有部14は、署名が正しいことを通知した他のノード数が閾値以上であるか否かを判定する。ステップS342は、図10のステップS303~S305に対応する。
仮トランザクションの署名が正しいと判定した場合(ステップS342;Yes)、共有部14は、仮トランザクションを依頼ノード61以外のノードに配布する(ステップS343)。このステップS343は、図10のステップS306に対応する。
次に、共有部14は、仮トランザクションの配布先によってステップS343と同様のステップが実行された結果として、当該配布先から配布された仮トランザクションを配布トランザクションとして受信する(ステップS344)。このステップS344は、図10のステップS307に対応する。
次に、共有部14は、ステップS341で受信した仮トランザクションと、ステップS344で受信した配布トランザクションと、が一致するか否かを判定する(ステップS345)。具体的には、共有部14は、ステップS344で複数の配布先から受信した配布トランザクションそれぞれと、仮トランザクションとを比較して、仮トランザクションと一致する配布トランザクションの数が閾値を超えるか否かを判定する。このステップS345は、図10のステップS308に対応する。
仮トランザクションと配布トランザクションとが一致すると判定した場合(ステップS345;Yes)、共有部14は、ブロックヘッダ41を生成して仮トランザクションと合わせてブロック40を生成する(ステップS346)。そして、共有部14は、生成したブロック40を、当該共有部14の分散型台帳にコミットする(ステップS347)。これらのステップS346,S347は、図10のステップS309に対応する。
次に、共有部14は、依頼ノード61にコミット内容を送信する(ステップS348)。コミット内容の送信は、ステップS347でコミットしたブロック40の送信であってもよいし、仮トランザクションを承認した旨の通知であってもよい。このステップS348は、図10のステップS310に対応する。その後、PLC100による処理は、図9に示される共有処理に戻る。ステップS341,S342,S345の判定が否定された場合(ステップS341;No,ステップS342;No,ステップS345;No)、共有部14が仮トランザクションを承認することなく、PLC100による処理は、図9に示される共有処理に戻る。
図14に示される管理ノード処理(ステップS35)は、主として管理ノード62の共有部14によって実行される。管理ノード処理では、共有部14が、当該共有部14を有するPLC100が管理ノードであるか否かを判定する(ステップS351)。管理ノードであると判定した場合(ステップS351;Yes) 、共有部14は、仮トランザクションを受信したか否かを判定する(ステップS352)。図10のステップS301が実行された場合には、ステップS352の判定が肯定される。
仮トランザクションを受信したと判定した場合(ステップS352;Yes)、共有部14は、仮トランザクションを受信ノード63に配布する(ステップS353)。このステップS353は、図10のステップS302に対応する。
ステップS353以降、共有部14は、受信ノード処理におけるステップS342~S348と同様のステップS354~S3510を実行する。なお、ステップS351,S352の判定が否定された場合(ステップS351;No,S352;No)、共有部14が仮トランザクションを承認することなく、PLC100による処理は、図9に示される共有処理に戻る。
図9に示されるように、管理ノード処理が終了すると、PLC100による処理は、図7のPLC処理に戻り、続いて学習処理(ステップS4)が実行される。
ステップS4の学習処理では、図15に示されるように、PLC100が保持している学習トリガがON状態であるか否かを、学習部15が判定する(ステップS41)。学習トリガは、ON状態又はOFF状態の値を有するフラグであって、ユーザにより又は外部のアプリケーションソフトウェアにより値が設定される。学習トリガがON状態でないと判定された場合(ステップS41;No)、PLC100による処理は、図15の学習処理から図7のPLC処理に戻る。
一方、学習トリガがON状態であると判定した場合(ステップS41;Yes)、学習部15は、未学習のアクセス情報を記憶部13から読み出す(ステップS42)。具体的には、学習部15は、過去に学習の対象とされていないアクセス情報を送信アクセス情報131及び受信アクセス情報132から抽出する。
次に、学習部15は、アクセス情報を学習に適した形式に変換する変換処理を実行する(ステップS43)。変換処理は、図6に示される特徴量の抽出であってもよい。また、アクセス情報に含まれる各要素について、その要素の値の範囲が異なるため、各要素の正規化又は標準化を変換処理として実行してもよい。例えば、IPアドレスの値の範囲と、速度として有り得る値の範囲と、の双方を正規化してゼロから1までの範囲に変換してもよい。また,学習データが増加すると学習モデル更新の際の演算量が指数的に増えることがあるため、学習モデル更新時の演算量を抑えるための変換を施してもよい。
次に、学習部15は、ステップS43で形式が変換されたアクセス情報に基づいてモデルを更新する(ステップS44)。その後、PLC100による処理は、図15の学習処理から図7のPLC処理に戻る。
ステップS5の検知処理では、図16に示されるように、PLC100が保持している検知トリガがON状態であるか否かを、検知部16が判定する(ステップS51)。検知トリガは、ON状態又はOFF状態の値を有するフラグであって、ユーザにより又は外部のアプリケーションソフトウェアにより値が設定される。検知トリガがON状態でないと判定された場合(ステップS51;No)、PLC100による処理は、図16の検知処理から図7のPLC処理に戻る。
一方、検知トリガがON状態であると判定された場合(ステップS51;Yes)、加工部12は、通信部11によって新たに受信された通信データとしてのパケットをアクセス情報に加工して(ステップS52)、記憶部13に格納する。
そして、検知部16は、ステップS52で生成されたアクセス情報に対して、図15のステップS43と同様の変換処理を施した上で(ステップS53)、学習部15によって学習されたモデルを適用することにより(ステップS54)、当該アクセス情報により示されるアクセスが例外アクセスであるか否かを判定する(ステップS55)。
例外アクセスでないと判定された場合(ステップS55;No)、処理部18は、当該アクセスについて正常アクセス処理を実行する(ステップS56)。例えば、処理部18は、当該アクセスにより要求されているデータの読み出し又は書き込みを実行する。その後、PLC100による処理は、図16の検知処理から、図7のPLC処理に戻る。
一方、例外アクセスであると判定された場合(ステップS55;Yes)、処理部18が、この例外アクセスを遮断して(ステップS57)、報知部17に、例外アクセスがあった旨をユーザインタフェースに報知させる(ステップS58)。その後、PLC100による処理は、図16の検知処理から、図7のPLC処理に戻る。
以上、説明したように、例外アクセスが新たに受け付けられた場合には、処理部18が、例外アクセスについて通常のアクセスとは異なる処理として、例外アクセスの遮断及びユーザインタフェースへの報知を実行する。このため、例外的に発生する不正なアクセスについては、通常とは異なる処理をすることにより小さな処理負荷で対処することができる。したがって、PLCシステム1000において不正なアクセスが発生した場合の可用性を向上させることができる。
例えば、ネットワークNW上の信頼される装置を予めホワイトリストに登録し、当該装置からのアクセスは正当なものとして扱うIPフィルタリングのような既存の手法が知られている。しかしながら、そのような装置が乗っ取られた又は踏み台とされた場合、若しくはIPのなりすましによるアクセスには、上述のような既存の手法ではPLC100を十分に保護することが難しい。これに対して、アクセスの頻度に着目して例外アクセスに対処すれば、不正なアクセスからPLC100を保護することができる。
また、上述のような既存の手法では、当初設定した内容に従ってアクセスをフィルタリングすることとなる。これに対して、本実施の形態に係るPLC100によれば、学習部15によるモデルの学習が繰り返されるため、ネットワークNWで発生するアクセスに適応して例外アクセスを検知することができる。
また、PLC間の合意形成がPBFTと呼ばれるアルゴリズムに従ってなされる例を説明した。PBFTに従えば、分散型台帳は、分散型台帳に参加するノードに障害が発生して当該ノードが分散型台帳を更新することができないという障害、及び、外部の攻撃者によってトランザクションが書き換えられるという障害に対する耐性を有する。また、障害許容ノード数を予め設定し、このノード数から逆算して分散型台帳に参加するノード数を設定してもよい。障害許容ノード数をfとすると、分散形台帳に参加するノードの数は3f+1となる必要がある。例えば、fが1であれば、図10に示されるように4つのノードが参加する必要がある。
なお、アクセス情報が格納される記憶部13がPLC100を構成する例について説明したが、アクセス情報は、NAS(Network Attached Storage)及びPLC100に挿抜可能なメモリカードのような、PLC100の外部の記憶装置に格納されてもよい。
また、学習部15による学習の手法として、上述した手法とは異なる手法を採用してもよい。例えば、比較的演算量が少なく異常の検知が可能なOne Class SVM(Support Vector Machine)を採用してもよい。将来的に演算リソースの制約がなくなったときにはk近傍法又はk平均法のような手法を採用してもよい。また、ディープニューラルネットワーク、畳み込みニューラルネットワーク、又はリカレントニューラルネットワークを学習手法として採用してもよい。
実施の形態2.
続いて、実施の形態2について、上述の実施の形態1との相違点を中心に説明する。なお、上記実施の形態1と同一又は同等の構成については、同等の符号を用いる。本実施の形態は、検知部16による検知の結果が共有部14によって共有される点で、実施の形態1と異なる。
続いて、実施の形態2について、上述の実施の形態1との相違点を中心に説明する。なお、上記実施の形態1と同一又は同等の構成については、同等の符号を用いる。本実施の形態は、検知部16による検知の結果が共有部14によって共有される点で、実施の形態1と異なる。
本実施の形態に係るアクセス情報は、図17に示されるように、当該アクセス情報を共有するためのブロック40のヘッダハッシュ値412と、当該アクセス情報により示されるアクセスが検知部16によって例外アクセスとして検知されたか否かを示すフラグと、を含む。図17において、「0」のフラグは通常のアクセスであることを示し、「1」のフラグは例外アクセスであることを示す。そして、PLC100は、他のPLC100において例外アクセスと判定されたアクセスがあったことを、ユーザインタフェースを介して報知する。詳細には、報知部17が、受信アクセス情報132において「1」のフラグを有するアクセス情報がある場合に、当該アクセス情報により示される例外アクセスを報知する。
以上、説明したように、他のPLC100における例外アクセスの検知結果を報知すれば、当該他のPLC100に障害が発生した場合であっても、ユーザは、例外アクセスの検知結果を参照することができる。
実施の形態3.
続いて、実施の形態3について、上述の実施の形態1との相違点を中心に説明する。なお、上記実施の形態1と同一又は同等の構成については、同等の符号を用いる。本実施の形態は、図18に示されるように、アクセス情報が、デバイスデータに関する情報を含む点で、上記実施の形態1と異なる。
続いて、実施の形態3について、上述の実施の形態1との相違点を中心に説明する。なお、上記実施の形態1と同一又は同等の構成については、同等の符号を用いる。本実施の形態は、図18に示されるように、アクセス情報が、デバイスデータに関する情報を含む点で、上記実施の形態1と異なる。
PLC100は、通常、デバイスデータと呼ばれるデータを他の装置と共有し、デバイスデータを操作することで機器の制御を実現している。例えば、センサ機器がセンシング結果を示すデバイスデータをPLC100と共有することで、センシング結果がPLC100に通知され、PLC100が、動作指令を示すデバイスデータをアクチュエータと共有することで、当該アクチュエータに動作指令が与えられる。
PLC100の加工部12は、図18に示されるように、通信部11へのアクセスが、デバイスデータの読み出し又は書き込みを要求する場合に、当該要求が読み出しであるか書き込みであるか、当該デバイスデータのアドレス、当該デバイスデータのデータ型、及び、始点と点数を関連付けて示す。図18において「R」の要求は読み出し要求であることを示し、「W」の要求は書き込み要求であることを示す。
共有部14は、他のPLC100に対するアクセスについても、このようなデバイスデータに関する情報を含むアクセス情報を共有する。そして、学習部15は、このアクセス情報に基づいてモデルを更新する。
以上、説明したように、デバイスデータに関する情報に基づいてモデルを学習すれば、さらに正確に例外アクセスを判別することが期待される。
以上、本開示の実施の形態について説明したが、本開示は上記実施の形態によって限定されるものではない。
例えば、PLCシステム1000を構成するPLC100の数を任意に変更してもよい。
また、合意形成アルゴリズムとして、パブリックチェーンを採用する場合には、分散型台帳に参加したノードの一覧をハッシュ化した値であるマークルルート、マイニングの難易度、及びマイニング成功時のナンスを、ブロックヘッダ41に含めてもよい。
また、上記実施の形態2,3を組み合わせてもよい。さらに、上記実施の形態2,3では、上記実施の形態1に係るアクセス情報に対して要素を追加したが、追加される要素は、上記実施の形態2,3に説明されたものに限定されない。例えば、ネットワークNWを介して通信相手から送信されたファイル、遠隔からPLC100を起動するリモートRUN及び遠隔からPLC100を停止するリモートSTOPのような遠隔操作情報、IPアドレスのようなネットワークに関する設定の変更を示す情報、及び、時計データの変更を示す情報のうちの1つ又は複数をアクセス情報に含めてもよい。
また、アクセス情報が、アクセスがなされた時刻及び当該時刻を含む時間区分の双方を示す例について説明したが、アクセス情報は、当該時刻と時間区分とのいずれか一方を示してもよい。
上述の実施の形態に係るPLC100の機能は、専用のハードウェアによっても、また、通常のコンピュータシステムによっても実現することができる。
例えば、プログラムP1を、フレキシブルディスク、CD-ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto-Optical disk)に代表されるコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムP1をコンピュータにインストールすることにより、上述の処理を実行する装置を構成することができる。
また、プログラムP1をインターネットに代表される通信ネットワーク上のサーバ装置が有するディスク装置に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロードするようにしてもよい。
また、インターネットに代表されるネットワークを介してプログラムP1を転送しながら起動実行することによっても、上述の処理を達成することができる。
さらに、プログラムP1の全部又は一部をサーバ装置上で実行させ、その処理に関する情報をコンピュータが通信ネットワークを介して送受信しながらプログラムP1を実行することによっても、上述の処理を達成することができる。
なお、上述の機能を、OS(Operating System)が分担して実現する場合又はOSとアプリケーションとの協働により実現する場合には、OS以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロードしてもよい。
また、PLC100の機能を実現する手段は、ソフトウェアに限られず、その一部又は全部を専用のハードウェア又は回路によって実現してもよい。
本開示は、本開示の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本開示を説明するためのものであり、本開示の範囲を限定するものではない。つまり、本開示の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の開示の意義の範囲内で施される様々な変形が、本開示の範囲内とみなされる。
本開示は、FAの現場で運用されるシステムのセキュリティ性能の向上に適している。
11 通信部、 12 加工部、 13 記憶部、 14 共有部、 15 学習部、 16 検知部、 17 報知部、 18 処理部、 20 支援装置、 21 設定部、 22 表示部、 30 FA装置、 31 プロセッサ、 32 主記憶部、 33 補助記憶部、 34 入力部、 35 出力部、 36 通信部、 37 内部バス、 40 ブロック、 41 ブロックヘッダ、 42 トランザクション部、 50 領域、 51~53 サンプリング点、 61 依頼ノード、 62 管理ノード、 63 受信ノード、 100~103 PLC、 131 送信アクセス情報、 132 受信アクセス情報、 411 前回ヘッダハッシュ値、 412 ヘッダハッシュ値、 413 生成日時情報、 421 入力アクセス情報、 422 出力アクセス情報、 423 署名 1000 PLCシステム、 NW ネットワーク、 P1 プログラム。
Claims (8)
- 他のプログラマブルコントローラと接続されるプログラマブルコントローラであって、
ネットワークを介して外部から第1アクセスを受け付けて通信する通信手段と、
前記第1アクセスに関する第1アクセス情報を記憶する記憶手段と、
前記記憶手段に記憶される前記第1アクセス情報を前記他のプログラマブルコントローラに提供し、前記ネットワークを介する前記他のプログラマブルコントローラへの第2アクセスに関する第2アクセス情報を前記他のプログラマブルコントローラから取得することで、前記第1アクセス情報及び前記第2アクセス情報を分散型台帳の形式で前記他のプログラマブルコントローラと共有する共有手段と、
前記第1アクセス情報により示される前記第1アクセス及び前記第2アクセス情報により示される前記第2アクセスのうちの、他のアクセスより頻度が低い例外アクセスが前記通信手段によって新たに受け付けられた場合に、前記例外アクセスについて前記他のアクセスとは異なる処理を実行する処理手段と、
を備えるプログラマブルコントローラ。 - 前記第1アクセス情報は、前記第1アクセスをした通信装置を前記ネットワーク上で識別するための情報を含む、
請求項1に記載のプログラマブルコントローラ。 - 前記第1アクセス情報は、前記第1アクセスがなされた時刻及び該時刻を含む予め定められた時間区分の少なくとも一方を示す、
請求項1又は2に記載のプログラマブルコントローラ。 - 前記通信手段によって受け付けられた前記第1アクセスから前記例外アクセスを検知する検知手段と、
ユーザインタフェースを介して情報を報知する報知手段と、をさらに備え、
前記第1アクセス情報は、前記検知手段による検知の結果を示し、
前記第2アクセス情報は、前記第2アクセスからの前記他のプログラマブルコントローラによる前記例外アクセスの検知の結果を示し、
前記報知手段は、前記第2アクセス情報によって示される前記例外アクセスの検知の結果を報知する、
請求項1から3のいずれか一項に記載のプログラマブルコントローラ。 - 前記第1アクセス情報により示される前記第1アクセス及び前記第2アクセス情報により示される前記第2アクセスから、前記例外アクセスを判別するためのモデルを学習する学習手段と、
前記学習手段によって学習された前記モデルを用いて、前記通信手段によって受け付けられる前記第1アクセスから前記例外アクセスを検知する検知手段と、をさらに備え、
前記処理手段は、前記検知手段によって検知された前記例外アクセスを遮断する、
請求項1から3のいずれか一項に記載のプログラマブルコントローラ。 - 互いに接続された複数のプログラマブルコントローラを含むプログラマブルコントローラシステムであって、
前記プログラマブルコントローラはそれぞれ、
ネットワークを介して外部から第1アクセスを受け付けて通信する通信手段と、
前記第1アクセスに関する第1アクセス情報を記憶する記憶手段と、
前記記憶手段に記憶される前記第1アクセス情報を他のプログラマブルコントローラに提供し、前記ネットワークを介する前記他のプログラマブルコントローラへの第2アクセスに関する第2アクセス情報を前記他のプログラマブルコントローラから取得することで、前記第1アクセス情報及び前記第2アクセス情報を分散型台帳の形式で前記他のプログラマブルコントローラと共有する共有手段と、
前記第1アクセス情報により示される前記第1アクセス及び前記第2アクセス情報により示される前記第2アクセスのうちの、他のアクセスより頻度が低い例外アクセスが前記通信手段によって新たに受け付けられた場合に、前記例外アクセスについて前記他のアクセスとは異なる処理を実行する処理手段と、
を備える、プログラマブルコントローラシステム。 - 他のプログラマブルコントローラと接続されるプログラマブルコントローラによって実行されるアクセス情報共有方法であって、
通信手段が、ネットワークを介して外部から第1アクセスを受け付け、
共有手段が、前記第1アクセスに関する第1アクセス情報を前記他のプログラマブルコントローラに提供し、前記ネットワークを介する前記他のプログラマブルコントローラへの第2アクセスに関する第2アクセス情報を前記他のプログラマブルコントローラから取得することで、前記第1アクセス情報及び前記第2アクセス情報を分散型台帳の形式で前記他のプログラマブルコントローラと共有し、
処理手段が、前記第1アクセス情報により示される前記第1アクセス及び前記第2アクセス情報により示される前記第2アクセスのうちの、他のアクセスより頻度が低い例外アクセスが前記通信手段によって新たに受け付けられた場合に、前記例外アクセスについて前記他のアクセスとは異なる処理を実行する、
ことを含むアクセス情報共有方法。 - 他のプログラマブルコントローラと接続されるプログラマブルコントローラを、
ネットワークを介して外部から第1アクセスを受け付けて通信する通信手段、
前記第1アクセスに関する第1アクセス情報を記憶する記憶手段、
前記記憶手段に記憶される前記第1アクセス情報を前記他のプログラマブルコントローラに提供し、前記ネットワークを介する前記他のプログラマブルコントローラへの第2アクセスに関する第2アクセス情報を前記他のプログラマブルコントローラから取得することで、前記第1アクセス情報及び前記第2アクセス情報を分散型台帳の形式で前記他のプログラマブルコントローラと共有する共有手段、
前記第1アクセス情報により示される前記第1アクセス及び前記第2アクセス情報により示される前記第2アクセスのうちの、他のアクセスより頻度が低い例外アクセスが前記通信手段によって新たに受け付けられた場合に、前記例外アクセスについて前記他のアクセスとは異なる処理を実行する処理手段、
として機能させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022577413A JP7258258B1 (ja) | 2022-08-08 | 2022-08-08 | プログラマブルコントローラ、プログラマブルコントローラシステム、アクセス情報共有方法及びプログラム |
PCT/JP2022/030278 WO2024033971A1 (ja) | 2022-08-08 | 2022-08-08 | プログラマブルコントローラ、プログラマブルコントローラシステム、アクセス情報共有方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2022/030278 WO2024033971A1 (ja) | 2022-08-08 | 2022-08-08 | プログラマブルコントローラ、プログラマブルコントローラシステム、アクセス情報共有方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024033971A1 true WO2024033971A1 (ja) | 2024-02-15 |
Family
ID=85980426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2022/030278 WO2024033971A1 (ja) | 2022-08-08 | 2022-08-08 | プログラマブルコントローラ、プログラマブルコントローラシステム、アクセス情報共有方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7258258B1 (ja) |
WO (1) | WO2024033971A1 (ja) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019240019A1 (ja) * | 2018-06-11 | 2019-12-19 | パナソニックIpマネジメント株式会社 | 異常解析装置、製造システム、異常解析方法及びプログラム |
US20200142365A1 (en) * | 2018-11-05 | 2020-05-07 | Johnson Controls Technology Company | Building management system with device twinning, natural language processing (nlp), and block chain |
JP2020123307A (ja) * | 2019-01-29 | 2020-08-13 | オムロン株式会社 | セキュリティ装置、攻撃特定方法、及びプログラム |
JP2020135100A (ja) * | 2019-02-14 | 2020-08-31 | オムロン株式会社 | 制御システム |
WO2020213516A1 (ja) * | 2019-04-18 | 2020-10-22 | 三菱電機株式会社 | 入退管理システム、入退管理システムの認証装置、入退管理システムの管理装置、入退管理システムの携帯端末、入退管理システムの移動体、入退管理データのデータ構造、入退管理プログラム、および入退管理システムの構築方法 |
-
2022
- 2022-08-08 WO PCT/JP2022/030278 patent/WO2024033971A1/ja unknown
- 2022-08-08 JP JP2022577413A patent/JP7258258B1/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019240019A1 (ja) * | 2018-06-11 | 2019-12-19 | パナソニックIpマネジメント株式会社 | 異常解析装置、製造システム、異常解析方法及びプログラム |
US20200142365A1 (en) * | 2018-11-05 | 2020-05-07 | Johnson Controls Technology Company | Building management system with device twinning, natural language processing (nlp), and block chain |
JP2020123307A (ja) * | 2019-01-29 | 2020-08-13 | オムロン株式会社 | セキュリティ装置、攻撃特定方法、及びプログラム |
JP2020135100A (ja) * | 2019-02-14 | 2020-08-31 | オムロン株式会社 | 制御システム |
WO2020213516A1 (ja) * | 2019-04-18 | 2020-10-22 | 三菱電機株式会社 | 入退管理システム、入退管理システムの認証装置、入退管理システムの管理装置、入退管理システムの携帯端末、入退管理システムの移動体、入退管理データのデータ構造、入退管理プログラム、および入退管理システムの構築方法 |
Also Published As
Publication number | Publication date |
---|---|
JP7258258B1 (ja) | 2023-04-14 |
JPWO2024033971A1 (ja) | 2024-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110597925B (zh) | 一种基于区块链的跨链数据处理方法及装置 | |
EP4035050B1 (en) | Consensus protocol for blockchain dag structure | |
EP3565218B1 (en) | System and method of decentralized management of multi-owner nodes using blockchain | |
CN115210741B (zh) | 部分有序的区块链 | |
CN111543031B (zh) | 用于控制和/或监控装置的方法和控制系统 | |
CN112084257B (zh) | 有效的数据库机器学习验证 | |
JP7065956B2 (ja) | 機器を制御および/またはモニターするための方法および制御システム | |
CN111801927B (zh) | 与工业数据验证相关联的方法和促进工业数据验证的系统 | |
CN111985003A (zh) | 数据库恶意对等体识别 | |
US20200125661A1 (en) | Block quantity reduction in distributed ledgers | |
CN114128214B (zh) | 用于配置区块链的安全层 | |
CN110944046B (zh) | 一种共识机制的控制方法及相关设备 | |
CN114372296B (zh) | 一种基于区块链的用户行为数据审计方法及系统 | |
JP5801482B2 (ja) | キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム | |
CN111869165B (zh) | 用于控制和/或监控装置的方法和控制系统 | |
CN111555860A (zh) | 一种区块链节点共识方法、装置、电子设备及存储介质 | |
WO2024033971A1 (ja) | プログラマブルコントローラ、プログラマブルコントローラシステム、アクセス情報共有方法及びプログラム | |
WO2024033972A1 (ja) | プログラマブルコントローラ、例外アクセス学習方法及びプログラム | |
CN116361271B (zh) | 一种区块链数据修改迁移方法、电子设备及存储介质 | |
KR102196574B1 (ko) | 블록체인을 활용한 매출 정보관리시스템 및 블록체인을 활용한 매출 정보관리방법 | |
JP7317488B2 (ja) | 制御方法、情報処理装置、管理システム、及び、プログラム | |
CN112163917B (zh) | 基于区块链的票据处理方法、装置、介质及电子设备 | |
JP7319564B2 (ja) | データ共有システム、管理端末、データ共有方法、および、データ共有プログラム | |
CN116226097B (zh) | 一种区块链数据在线迁移方法 | |
US20220318270A1 (en) | Artificial intelligence (ai)-based blockchain management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2022577413 Country of ref document: JP Kind code of ref document: A |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 22954893 Country of ref document: EP Kind code of ref document: A1 |