Program randomization for cyber-attack resilient control in programmable logic controllers
AssigneeSiemens Aktiengesellschaft
InventorArquimedes Martinez Canedo
Life of this patent
Estimating the term…
Abstract
A method for programmable logic controller (PLC) program randomization, the method comprising an engineering system computer receiving source code corresponding to a PLC program and compiling the source code into a plurality of functionally equivalent intermediate representations of the PLC program. Program structure of the PLC program is randomized during compilation such that each intermediate representation is unique among the plurality of intermediate representations. The engineering system computer transmits the plurality of intermediate representations to one or more PLCs.
Claims20
A method for programmable logic controller (PLC) program randomization, the method comprising:
- receiving, by an engineering system computer, source code corresponding to a PLC program;
- compiling, by the engineering system computer, the source code into a plurality of functionally equivalent intermediate representations of the PLC program, wherein program structure of the PLC program is randomized during compilation such that each intermediate representation is unique among the plurality of intermediate representations;
- and
- transmitting, by the engineering system computer, the plurality of intermediate representations to one or more PLCs;
- wherein the PLC program comprises a plurality of function blocks, each identified by a triple comprising a numerical identifier and the program structure of the PLC program is randomized by:
- assigning a random value to each numerical identifier, and
- sorting the plurality of function blocks by numerical identifier.
A method for programmable logic controller (PLC) program randomization, the method comprising:
- receiving, by a PLC, an intermediate representation of a PLC program;
- compiling, by the PLC, the intermediate representation into PLC assembly code, wherein program structure of the intermediate representation is randomized during compilation with respect to usage of one or more program blocks;
- and
- executing, by the PLC, the PLC assembly code;
- wherein the PLC program comprises a plurality of function blocks, each identified by a triple comprising a numerical identifier and the program structure of the PLC program is randomized by:
- assigning a random value to each numerical identifier, and
- sorting the plurality of function blocks by numerical identifier.
A system for programmable logic controller (PLC) program randomization, the system comprising:
- a computer readable storage medium storing source code corresponding to a PLC program;
- an engineering system configured to compile the source code into a plurality of functionally equivalent intermediate representations of the PLC program, wherein program structure of the PLC program is randomized during compilation such that each intermediate representation is unique among the plurality of intermediate representations;
- and
- a plurality of programmable logic controllers, each programmable logic controller configured to:
- receive an intermediate representation of the PLC program from the engineering system;
- compile the intermediate representation into PLC assembly code, wherein program structure of the intermediate representation is randomized during compilation with respect to usage of one or more program blocks,
- wherein the PLC program comprises a plurality of function blocks, each identified by a triple comprising a numerical identifier and the program structure of the PLC program is randomized by:
- assigning a random value to each numerical identifier, and
- sorting the plurality of function blocks by numerical identifier.
Dependencies are inferred from the claim text.