CN108700864A - 可编程逻辑控制器中网络攻击弹性控制的程序随机化 - Google Patents
可编程逻辑控制器中网络攻击弹性控制的程序随机化 Download PDFInfo
- Publication number
- CN108700864A CN108700864A CN201680078375.7A CN201680078375A CN108700864A CN 108700864 A CN108700864 A CN 108700864A CN 201680078375 A CN201680078375 A CN 201680078375A CN 108700864 A CN108700864 A CN 108700864A
- Authority
- CN
- China
- Prior art keywords
- plc
- program
- randomized
- intermediate representation
- randomization
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 54
- 230000006870 function Effects 0.000 claims abstract description 48
- 230000015654 memory Effects 0.000 claims description 30
- 238000003860 storage Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 claims description 9
- 125000004122 cyclic group Chemical group 0.000 claims description 7
- 238000010276 construction Methods 0.000 claims description 5
- 230000014509 gene expression Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 230000008859 change Effects 0.000 description 6
- 101100408464 Caenorhabditis elegans plc-1 gene Proteins 0.000 description 5
- 229910002056 binary alloy Inorganic materials 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101100100125 Mus musculus Traip gene Proteins 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K31/00—Medicinal preparations containing organic active ingredients
- A61K31/33—Heterocyclic compounds
- A61K31/395—Heterocyclic compounds having nitrogen as a ring hetero atom, e.g. guanethidine or rifamycins
- A61K31/435—Heterocyclic compounds having nitrogen as a ring hetero atom, e.g. guanethidine or rifamycins having six-membered rings with one nitrogen as the only ring hetero atom
- A61K31/44—Non condensed pyridines; Hydrogenated derivatives thereof
- A61K31/445—Non condensed piperidines, e.g. piperocaine
- A61K31/4523—Non condensed piperidines, e.g. piperocaine containing further heterocyclic ring systems
- A61K31/4535—Non condensed piperidines, e.g. piperocaine containing further heterocyclic ring systems containing a heterocyclic ring having sulfur as a ring hetero atom, e.g. pizotifen
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K31/00—Medicinal preparations containing organic active ingredients
- A61K31/045—Hydroxy compounds, e.g. alcohols; Salts thereof, e.g. alcoholates
- A61K31/047—Hydroxy compounds, e.g. alcohols; Salts thereof, e.g. alcoholates having two or more hydroxy groups, e.g. sorbitol
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K31/00—Medicinal preparations containing organic active ingredients
- A61K31/075—Ethers or acetals
- A61K31/085—Ethers or acetals having an ether linkage to aromatic ring nuclear carbon
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K31/00—Medicinal preparations containing organic active ingredients
- A61K31/075—Ethers or acetals
- A61K31/085—Ethers or acetals having an ether linkage to aromatic ring nuclear carbon
- A61K31/09—Ethers or acetals having an ether linkage to aromatic ring nuclear carbon having two or more such linkages
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K31/00—Medicinal preparations containing organic active ingredients
- A61K31/13—Amines
- A61K31/135—Amines having aromatic rings, e.g. ketamine, nortriptyline
- A61K31/138—Aryloxyalkylamines, e.g. propranolol, tamoxifen, phenoxybenzamine
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K31/00—Medicinal preparations containing organic active ingredients
- A61K31/16—Amides, e.g. hydroxamic acids
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K31/00—Medicinal preparations containing organic active ingredients
- A61K31/21—Esters, e.g. nitroglycerine, selenocyanates
- A61K31/215—Esters, e.g. nitroglycerine, selenocyanates of carboxylic acids
- A61K31/22—Esters, e.g. nitroglycerine, selenocyanates of carboxylic acids of acyclic acids, e.g. pravastatin
- A61K31/225—Polycarboxylic acids
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K31/00—Medicinal preparations containing organic active ingredients
- A61K31/33—Heterocyclic compounds
- A61K31/335—Heterocyclic compounds having oxygen as the only ring hetero atom, e.g. fungichromin
- A61K31/35—Heterocyclic compounds having oxygen as the only ring hetero atom, e.g. fungichromin having six-membered rings with one oxygen as the only ring hetero atom
- A61K31/352—Heterocyclic compounds having oxygen as the only ring hetero atom, e.g. fungichromin having six-membered rings with one oxygen as the only ring hetero atom condensed with carbocyclic rings, e.g. methantheline
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K31/00—Medicinal preparations containing organic active ingredients
- A61K31/33—Heterocyclic compounds
- A61K31/395—Heterocyclic compounds having nitrogen as a ring hetero atom, e.g. guanethidine or rifamycins
- A61K31/435—Heterocyclic compounds having nitrogen as a ring hetero atom, e.g. guanethidine or rifamycins having six-membered rings with one nitrogen as the only ring hetero atom
- A61K31/44—Non condensed pyridines; Hydrogenated derivatives thereof
- A61K31/445—Non condensed piperidines, e.g. piperocaine
- A61K31/4523—Non condensed piperidines, e.g. piperocaine containing further heterocyclic ring systems
- A61K31/454—Non condensed piperidines, e.g. piperocaine containing further heterocyclic ring systems containing a five-membered ring with nitrogen as a ring hetero atom, e.g. pimozide, domperidone
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K31/00—Medicinal preparations containing organic active ingredients
- A61K31/33—Heterocyclic compounds
- A61K31/395—Heterocyclic compounds having nitrogen as a ring hetero atom, e.g. guanethidine or rifamycins
- A61K31/435—Heterocyclic compounds having nitrogen as a ring hetero atom, e.g. guanethidine or rifamycins having six-membered rings with one nitrogen as the only ring hetero atom
- A61K31/47—Quinolines; Isoquinolines
- A61K31/4709—Non-condensed quinolines and containing further heterocyclic rings
-
- 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
- G05B19/056—Programming the PLC
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- 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
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13019—Translate program in order to be used on different plc
-
- 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
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13022—Convert source program to intermediate program
Landscapes
- Health & Medical Sciences (AREA)
- Engineering & Computer Science (AREA)
- Chemical & Material Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Public Health (AREA)
- Animal Behavior & Ethology (AREA)
- Epidemiology (AREA)
- Veterinary Medicine (AREA)
- Pharmacology & Pharmacy (AREA)
- Medicinal Chemistry (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Automation & Control Theory (AREA)
- Emergency Medicine (AREA)
- Oil, Petroleum & Natural Gas (AREA)
- Programmable Controllers (AREA)
- Chemical Kinetics & Catalysis (AREA)
- General Chemical & Material Sciences (AREA)
- Organic Chemistry (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Molecular Biology (AREA)
- Biochemistry (AREA)
- Wood Science & Technology (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Analytical Chemistry (AREA)
- Zoology (AREA)
- Biophysics (AREA)
- Psychology (AREA)
- Immunology (AREA)
- Microbiology (AREA)
Abstract
一种用于可编程逻辑控制器(PLC)程序随机化的方法,方法包括工程系统计算机接收对应于PLC程序的源代码并将该源代码编译成PLC程序的多个功能等效的中间表示。PLC程序的程序结构在编译期间被随机化,使得每个中间表示在多个中间表示中是唯一的。工程系统计算机将多个中间表示发送给一个或多个PLC。
Description
相关申请的引用
本申请要求在2016年1月11日提交的美国临时申请序列号62/277,014的权益,其全部内容通过引用并入本文。
技术领域
本发明主要涉及用于可编程逻辑控制器中的网络攻击弹性控制的随机化程序。所公开的技术可以应用于例如使用了工业控制器诸如可编程逻辑控制器(PLC)和分布式控制系统(DCS)的各种自动化生产环境。
背景技术
常规的弹性可编程逻辑控制器(PLC)架构被设计成用于承受例如由部件或电源故障引起的随机和孤立故障。所谓的“高可用性”PLC提供热备份功能,在发生故障时,另一PLC可以在同一周期内立即接管系统的控制。几十年来,这些功能足以应对硬件故障和标准软件故障。
遗憾的是,常规的弹性架构不能提供足够的冗余来覆盖由网络攻击引发的故障,因为所有的PLC实例都在相同的存储器组织结构中执行相同的二进制数。因此,由网络攻击导致的故障可能会影响所有的PLC实例并导致灾难性后果。
发明内容
本发明的实施例通过提供与用于PLC中的网络攻击弹性控制的随机化程序相关的方法、系统和设备来解决并克服一个或多个上述缺点和缺陷。更具体地,PLC软件的二进制数在冗余PLC架构的每个实例中被随机化。由于PLC实例执行的是不同的二进制数,所以整个系统在网络攻击方面比常规系统具有更强的弹性。此外,在一些实施例中,每个PLC的每个存储器组织结构也被改变以提供针对网络攻击的额外保护。
根据一些实施例,一种用于PLC程序随机化的方法包括工程系统计算机接收对应于PLC程序的源代码并将该源代码编译成PLC程序的多个功能等效的中间表示。PLC程序的程序结构在编译期间被随机化,使得每个中间表示在多个中间表示中是唯一的。在一些实施例中,随机化在程序的运行时之前执行,而在其它实施例中,可以在运行时执行随机化,例如使用本领域中通常已知的即时编译技术。工程系统计算机将多个中间表示发送给一个或多个PLC。
在上述用于PLC程序随机化的方法的一些实施例中,PLC接收PLC程序的第一中间表示并将其编译成PLC汇编代码。第一中间表示的程序结构在编译期间被随机化。该PLC汇编代码然后由PLC执行。在PLC故障切换之后,第一中间表示可以重新编译成新的PLC汇编代码,该新的PLC汇编代码然后由PLC执行。第一中间表示的程序结构可以在重新编译期间再次被随机化。
可以应用各种技术来随机化上述用于PLC程序随机化的方法中的程序结构。例如,在一些实施例中,通过随机化由PLC程序使用的多个数据块的存储器布局,PLC程序的程序结构在编译期间被随机化。例如,通过为每个数据块分配唯一的存储器地址,多个数据块的存储器布局被随机化。数据块可以在编译期间按类型分类以优化存储器布局中的存储器访问。在其它实施例中,通过随机化使用由PLC程序使用的函数块,PLC程序的程序结构在编译期间被随机化。例如,用于调用每个函数块的参数的排序可以被随机化,或者由每个函数块使用的排序循环变量可以被随机化。另外,通过构建将条件语句转换为等效控制流构造的控制流图或者构建将条件语句转换为等效的数据流表示的数据流图,多个函数块的使用可以被随机化。然后,控制流构造或数据流表示的顺序可以被随机化。在其它实施例中,函数块的使用被随机化,其中,将一个或多个非功能性函数块插入到多个函数块中。在一个实施例中,每个函数块由包括数字标识符的三元组来标识,并且PLC程序的程序结构通过向每个数字标识符分配随机值并通过数字标识符对多个函数块进行分类来随机化。在一些实施例中,PLC程序的程序结构在编译期间通过重新排序PLC程序中的一个或多个组织块而被随机化。
根据本发明的其它实施例,一种用于PLC程序随机化的方法包含PLC接收PLC程序的中间表示并将该中间表示编译成PLC汇编代码。在编译期间中间表示的程序结构关于一个或多个程序块的使用而被随机化。PLC然后可以执行PLC汇编代码。在PLC的故障切换之后,PLC可以将中间表示重新编译成新的PLC汇编代码,在再编译期间再次使中间表示的程序结构随机化。然后新的PLC汇编代码可以由PLC执行。
在用于PLC程序随机化的上述方法的一些实施例中,中间表示的程序结构在编译期间通过随机化由PLC程序使用的一个或多个数据块的地址值而被随机化。其它技术可以替代地(或附加地)用于在编译期间对中间表示进行随机化,包括(a)随机化由PLC程序使用的函数块和函数的控制流程;(b)随机化由PLC程序使用的函数块和函数的数据流;和/或(c)对由中间表示中的PLC程序使用的一个或多个组织块进行重新排序。
根据其它实施例,一种用于可编程逻辑控制器(PLC)程序随机化的系统包含存储对应于PLC程序的源代码的计算机可读存储介质;以及工程系统和多个可编程逻辑控制器。工程系统被配置为将源代码编译成PLC程序的多个功能等效的中间表示。PLC程序的程序结构在编译期间被随机化,使得每个中间表示在多个中间表示中是唯一的。每个可编程逻辑控制器被配置为从工程系统接收PLC程序的中间表示,并将中间表示编译成PLC汇编代码,其中,中间表示的程序结构在编译期间关于一个或多个程序块的使用被随机化。
根据参照附图进行的对示例性实施例的以下详细描述,本发明的附加特征和优点将变得显而易见。
附图说明
结合附图阅读以下详细描述,可以最好地理解本发明的前述和其它方面。为了说明本发明,在附图中示出了目前优选的实施例,然而应当理解,本发明不限于所公开的具体手段。在附图中包括以下附图:
图1提供了根据一些实施例的、在工程系统和运行时系统处完成的示例随机化;
图2提供了可以在一些实施例中实现的四重冗余控制架构的图示;
图3提供了根据一些实施例的通过API实现的PLC程序随机化的图示;
图4示出了可以在一些实施例中实现的常规PLC项目的示例随机化;
图5示出了可以在一些实施例中使用的数据块随机化改变了数据块(DB)变量的地址和偏移量;
图6示出了根据一些实施例的DB块优化如何消除存储器填充并重新排列存储器布局;
图7提供了根据一些实施例的函数块参数重新排序如何改变PLC程序的二进制表示的图示;
图8提供了根据一些实施例的循环变量重新排序向PLC二进制程序引入二进制变化的图示;
图9示出了根据一些实施例的循环变量重新排序向PLC二进制程序引入二进制变化;并且
图10提供了根据一些实施例的组织块随机化将可变性引入OB的时序和优先级的图示。
具体实施方式
本文描述的系统、方法和设备主要涉及用于PLC中的网络攻击弹性控制的随机化程序。更具体地,本文描述的技术允许在冗余PLC架构的每个实例中执行PLC软件的随机化二进制数。这种架构用于改善针对由网络攻击引发的故障模式的系统弹性(即工厂及其子系统)。本文称为弹性控制(REsilient CONtrol)或“RECON”的架构架构依赖于作为用于创建弹性工业控制系统(ICS)的构建块的传统PLC阵列。冗余PLC设有与物理系统相同的传感器输入,并且所有PLC执行功能相同的程序;然而,每个PLC包含不同的随机化二进制数。在成功利用主PLC的漏洞情况下,冗余系统会检测到故障,并由备用PLC进行控制。使用不同的随机化二进制数可降低相同漏洞影响备份PLC的机会。此外,在检测到故障后,可针对受影响的PLC实例即时重新编译新的随机化二进制数,以提高系统的可用性。如下面进一步详细描述的,在RECON的一些实施例中,随机化发生在两个阶段:(1)在PLC源代码被转换为PLC中间表示的高级编译时;以及(2)在PLC中间表示被转换成汇编指令以用于在PLC处理器中执行的运行时。可以利用每个代码表示提供的不同随机化机会来创建实现可扩展RECON架构的代码和存储器路径的大型组合。
图1提供了根据一些实施例的、在工程系统100(例如西门子TIA博途工程系统)和运行时系统105(例如西门子PLC操作系统)处执行的随机化的高级概述。PLC为硬件实时控制系统,其被设计成在恶劣的环境中和很长一段时间内通过传感器和致动器与物理过程进行交互并对其进行控制。PLC在工程系统100中使用为物理系统专家(即电气机械工程师)设计的专用领域的高级PLC编程语言(例如IEC 61131-3)进行编程。
如图1所示,PLC源代码在工程系统100中的源代码编辑器100A中进行开发。源代码由高级编译器100B编译成PLC中间表示(IR)100C。PLC IR 100C允许工程系统100针对不同硬件和固件具有多个PLC版本。在一些实施例中,使用多种PLC语言来开发程序。集成开发环境(例如,源代码编辑器100A的一部分)将各种源代码语言编译成可重移植到各种PLC架构(例如,x86、MIPS、ARM等)的PLC IR 100C。可以额外执行代码和存储器布局的抽象语法树(AST)随机化。
为了将PLC程序部署到现场,PLC IR 100C由工程系统100“下载”到PLC的运行时系统105中;运行时系统105类似于通用计算机中的操作系统。然后运行时系统使用板载编译器105A(包含在PLC的固件中)将PLC IR编译成PLC汇编代码。最后,由PLC处理器105C以循环方式执行PLC组件105B。需指出,在传统的弹性PLC架构的情况下,同一个PLC IR被分配给所有PLC实例,并且假定所有实例都具有相同版本的板载编译器,所有实例都会为通用PLC IR生成相同的PLC组件。
为了提高针对故意和遍及的网络攻击引起的故障容错能力,在一些实施例中,RECON在高级和板载编译器中利用代码和存储器路径随机化。高级编译器随机化利用了在抽象语法树(AST)和控制流图(CFG)级别完成的一套丰富的编译器转换和优化。第一随机化步骤在PLC IR级别引入高度可变性。
在板载编译器中完成的第二随机化步骤具有由目标汇编语言强加的更多限制,并且比在更高级别上进行的随机化具有更小的灵活性。然而,板载编译器随机化为系统提供了第二道防线,以防攻击者危害随机化的第一阶段。板载随机化将PLC IR变为无法在PLC外访问的唯一二进制数。进一步防止任何外部人员读取板载随机化二进制数的一种方法是通过PLC配置。因此,板载随机化在软件开发和维护周期中隐藏了二进制数。此外,应当指出,通过使用与PLC软件的先前版本功能相同的新随机二进制数,板载随机化提供了在故障切换后重新部署的能力。通过这种方式,受制于在代码级别的网络攻击的PLC可以通过附加的防止攻击重复的安全措施重新启动。
图2示出了根据一些实施例的四重冗余控制架构200。通过使用多核处理器,先进的PLC比传统的PLC提供更强大的计算能力。例如,可以使用多个双核PLC(SIMATIC S7-1500)来实现图2中所示的四重冗余控制PLC架构200。除了提供更多的逻辑PLC之外,这种架构的一个优点在于多核PLC的虚拟化,其中每个PLC具有不连贯的存储器和代码空间,并防止主PLC中的软件故障影响从PLC。在同一个核中具有虚拟化双冗余允许在发生故障时更快恢复。
在图2中,发动机表示受控制的物理系统。两个传感器(S1、S2)测量发动机的温度和每分钟转数。两个冗余I/O板(I/O 1,I/O 2)将传感器数据连接到PLC(PLC 1,...,PLC4)。在每个扫描周期(例如100ms)中,PLC执行三个主要阶段:读取、处理和写入。重要的是需要指出,读写不是直接对传感器和执行器进行,而是通过PLC的过程映像进行。过程映像为可将执行与物理过程分离并允许PLC在发生任何中断或故障时恢复的缓冲区。也就是说,保证过程映像在每个周期边界(例如,100ms、200ms、300ms)是一致的。过程映像的一致性通过DB一致性检查来检查。在过程阶段,RECON使用不同的随机化二进制数,不同的随机化二进制数使用图1中描述的方法进行编译。由于每个随机二进制数的代码和存储器路径不同,因此同步器会检查在主PLC和从PLC中执行的代码的功能是否等效。功能等效可以通过在不同粒度的等效位置处插入运行检查点来完成。例如,如果以基本块粒度(例如,微指令改组)完成随机化,则可以在基本块边界处插入检查点。
图3为根据一些实施例的提供如何可以实现PLC程序随机化的附加细节的系统图。如本领域所理解的,PLC包括操作系统和用户程序。操作系统提供了内在的PLC功能(例如,处理重启和错误、存储器管理、调用用户程序等)。如图3所示,用户程序包括执行自动化任务的所有“块”。用户程序使用程序块进行编程,程序块包括函数块(FB)和函数(FC)。FB和FC引用在数据块(DB)中组织的局部和全局变量。在PLC中,用户程序通常在组织块(OB)中循环执行(非循环程序也是可行的)。主循环OB始终存在,并且在PLC程序被初始化并在无限循环中执行时可用。
图3所示的PLC程序结构是固定的,并提供了具有不同块类型的清晰结构。该示例说明了将RECON系统连接到工程系统305的方法。本例中的RECON 315包括解析PLC结构、应用转换并封装新PLC结构的软件组件。更具体地,使用应用编程接口(API)310,RECON 315在PLC程序下载之前访问并随机化PLC程序。由于块(OB、FB、FC、DB)与二进制表示的映射更改,因此修改PLC程序的块结构会对所产生的代码产生深远影响。因此,对PLC程序结构的修改实现了RECON寻求的二元制多样化。使用图3中阐述的通用架构,可以实现PLC程序结构中的所有块类型的随机化。
RECON可用于在现有技术和传统系统中执行PLC程序随机化。图4示出了根据一些实施例的可以如何使用RECON执行传统PLC项目的随机化的两种技术。如图4所示,可以将PLC程序从传统PLC 405提取到工程系统410中。另选地,常规数据库415可以提供PLC项目文件,而不是从常规PLC 405中提取PLC程序。如图4所示,任一机制的条件在于项目文件未加密和不受保护。
在上述技术的详细阐述中,PLC程序随机化由三个软件组件:数据块随机化组件、函数块和函数随机化组件以及组织块随机化组件执行。下面将进一步详细描述这些组件中的每个组件。
DB组织可寻址块中的存储器,程序使用可寻址块访问变量、传感器和致动器。DB为被称为标签的命名变量的集合。标签为PLC中值的保留存储区。标签包含数据类型(例如,布尔类、整数类等)、数值(例如“15”)和DB中的物理地址。
图5示出了根据一些实施例的块随机化如何改变DB变量的地址和偏移。如图5所示,PLC 1中的“Motor_1”标签具有布尔类型和地址“%I0.0”。在通过数据块随机组件处理后,PLC 2中相同变量的地址可以更改为“%I2.0”。同样,通过在PLC 2的符号表中引入“tag”之前引入“new_tag”,可以将PLC 1中布尔类型的静态变量“tag”中的偏移量从“0.0”更改为“0.1”。这些变化使PLC中的存储器布局变得多样化,以致相同的网络攻击在具有不同存储器布局的两个PLC中不太可能有效。
随机化的一个附加层是启用DB块优化,在DB块优化时,所有标签都按其数据类型分类。如图6所示,分类最小化标签之间的数据间隙(填充),并优化目标PLC处理器的存储器访问。在该示例中,标准DB 605具有在变量之间的数据间隙,数据间隙在优化的DB 610中被消除。结合使用这两种DB随机化技术,RECON可以为PLC多样化程序生成数百个等效的存储器布局。
函数块和函数随机化组件改变了代码和存储器堆栈的结构,并因此对于RECON创建程序变体很重要。FB与FC的区别在于循环数据存储。FC为没有数据存储的块。这意味着值FC为无状态的,并且块变量不能在循环中持久化。并且另一方面,FB为具有循环数据存储的块。这意味着FB为有状态的,并且块变量值在循环中保持不变。FB和FC两者均使用各种高级语言(包含图形和文本语言)进行编程。最流行的PLC编程语言为基于PASCAL的结构化控制语言(SCL)。SCL也基于用于由IEC 61131-3标准化的PLC编程的结构化文本(ST)规范。下面描述的FB和FC随机化技术基于SCL以用于说明目的;然而,应当理解,这些技术可以被推广并应用于提供类似功能的任何PLC编程语言。
函数块和函数具有包括输入、输出、输入输出参数和函数主体的声明语句。这个声明语句对所有语言都是通用的,包含SCL。图7示出了用于包括输入参数“FINALVAL”、输入输出参数“IQ1”和输出参数“CONTROL”的“TEST”程序的示例性函数块声明语句。引入随机化的一种技术是在调用函数块时对参数重新进行排序,如右侧两个示例所示。由于参数是命名的,列出参数的顺序不会改变程序的含义。然而,这会为这两个程序创建不同的存储器布局。在实际的PLC程序中,参数的数量往往非常大(有时为数百个参数),并因此这种技术可以非常有效地创建大量不同但等效的SCL程序。
类似的技术适用于在循环中持续存在的FB循环变量。图8示出根据一些实施例的循环变量重新排序如何将二进制变化引入PLC二进制程序。如图8所示,变量PID_CONTROLLER_1和PID_CONTROLLER_2的顺序可以重新排列,使得循环变量在不同的PLC实例中占据不同的存储器位置。
SCL代码本身可以在控制流和数据流级别中随机化。例如,对于控制流,可以解析包含SCL说明语句的可扩展标记语言(XML)文件,并且可以在将条件语句转换为等效控制流构造的情况下重建控制流图。
图9示出了根据一些实施例的、控制流和数据流转换如何在SCL代码级别引入二进制多样化。例如,在图9中,if-else语句的结构被“NOT”指令反转,使得PLC 1中的“if”语句的主体成为PLC 2中的else语句的主体,并且反之亦然。对于数据流,可以解析包含SCL语句的XML文件,并且可以在表示转换为等效数据流表示的地方重建数据流图。例如,图7示出了PLC 1中的表示“IQ1:=IQ1*2”被转换为PLC 2中的“IQ1:=IQ1+IQ1”。此外,可以插入附加表示,例如“N:=0”和“SUM:=0”,这些表示不会对控制程序造成影响,但会在编译时产生代码级别的二进制多样性。这与NOOP(无操作)随机化技术相似。重要的是需要指出,某些PLC中不存在NOOP操作数,但对程序没有影响的插入操作在功能上是等效的。
在一些实施例中,应用FB和FC的排序随机化技术来影响它们在存储器中的排列。每个FB和FC均有一个三元组<name,type,number>,其中name为使用者在PLC程序中提供的任意名称,type为取决于块类型(例如,FB、FC、OB、DB)的枚举,并且number为与块关联的唯一标识符。关键的观察结果是,PLC存储器中块的位置与它们的编号相对应,因为它们首先被分类并然后下载到PLC中以用于执行。因此,可以应用排序随机化技术来随机化三元组中的数字以在执行期间改变它们的顺序。另外(或者替代地),虚拟FC和FB可以被插入以占用存储空间并任意移动提供有用工作的其它FB和FC。这种转换也可以通过开放接口来实现并且也可以扩展到DB。
OB为操作系统和用户程序之间的接口。用户程序只能由OB调用,并因此为PLC程序结构的重要部分。循环地或在发生某些事件时,操作系统会调用OB。在大多数PLC中,有几种类型的OB(或其它供应商的类似概念),使用者可以根据所需功能选择其程序。例如,有启动OB、循环程序执行OB、中断(一天中某个时间、循环、延时、硬件)OB和误差(异步和同步)OB。OB通过编号标识,并且不同的编号具有不同的优先级。例如,“OB 1”为具有最高优先级的循环程序OB,而OB 10为具有较低优先级的一天中某个时间的中断OB。例如,一些PLC提供了相同类型的多个中断,例如在西门子PLCS中,OB 32、OB 33、OB 34和OB 35为循环中断OB,使用者可以使用它们来组织其程序。
组织块随机化组件对OB进行重新排序,使得不同的PLC程序使用不同的OB(具有相同的优先级和实时保证)。例如,图10示出了如何将具有两个OB(OB 1和OB 32)的PLC程序结构转换为具有三个OB(OB 1、OB 32和OB 35)的程序结构。在本例中,控制器代码被分为两部分,前半部分被分配给OB 32,后半部分被分配给OB 35。需指出,这会在OB 35和OB 32之间创建相关性。然而,PLC中支持OB之间的同步。图10还示出了可以利用将RECON应用至OB、FB、FC和DB以创建大的组合空间的随机化,来创建多样化的PLC二进制数。
本文描述的由控制层装置使用的处理器可以包含一个或多个中央处理单元(CPU)、图形处理单元(GPU)或本领域已知的任何其它处理器。更一般地,本文使用的处理器为用于执行存储在计算机可读介质上的机器可读指令、用于执行任务并且可以包括硬件和固件中的任一者或其组合的装置。处理器还可以包括存储可执行用于执行任务的机器可读指令的存储器。处理器通过操纵、分析、修改、转换或传输供可执行程序或信息装置使用的信息和/或通过将信息路由到输出装置来对信息起作用。处理器可以使用或包括例如计算机、控制器或微处理器的能力,并且可以使用可执行指令进行调节以执行不是由通用计算机执行的专用函数。处理器可以与能够在其间进行交互和/或通信的任何其它处理器耦合(电和/或包括可执行组件)。用户接口处理器或发生器为包括用于生成显示图像或其部分的电子电路或软件或两者的组合的已知元件。用户界面包括使用户能够与处理器或其它装置交互的一个或多个显示图像。
本文的包括但不限于控制层装置和相关计算基础设施的各种装置可以包括至少一个计算机可读介质或存储器,其用于保存根据本发明的实施例编程的指令并且用于包含本文描述的数据结构、表格、记录或其它数据。本文使用的术语“计算机可读介质”是指参与向一个或多个处理器提供指令以供执行的任何介质。计算机可读介质可以采取许多形式,包括但不限于非暂态、非易失性介质、易失性介质和传输介质。非易失性介质的非限制性示例包括光盘、固态驱动器、磁盘和磁光盘。易失性介质的非限制性示例包括动态存储器。传输介质的非限制性示例包括同轴电缆、铜线和光纤,包括组成系统总线的导线。传输介质也可以采取声波或光波的形式,例如在无线电波和红外数据通信期间产生的声波或光波。
本文使用的可执行应用包括代码或机器可读指令,其用于调节处理器以例如响应于用户命令或输入而实现预定函数如操作系统、上下文数据采集系统或其它信息处理系统的那些预定函数。可执行程序为用于执行一个或多个特定过程的代码段或机器可读指令、子例程或其它不同的代码段或可执行应用的一部分。这些过程可以包括接收输入数据和/或参数、对接收到的输入数据执行操作和/或响应于接收到的输入参数执行函数并提供所得输出数据和/或参数。
本文的函数和过程步骤可以响应于用户命令自动地、完全或部分地执行。响应于一个或多个可执行指令或装置操作而自动执行行动(包括步骤),而无需用户直接发起行动。
附图的系统和过程并不是唯一的。其它系统、过程和菜单可根据本发明的原理导出以实现相同的目标。尽管已经参考特定实施例描述了本发明,但是应当理解,本文示出和描述的实施例及其变体仅用于说明的目的。本领域技术人员可以实现对当前设计的修改,而不偏离本发明的范围。如本文所描述的,可以使用硬件组件、软件组件和/或它们的组合来实现各种系统、子系统、代理、管理器和进程。本文中的权利要求要素不应根据35U.S.C.112的第六段的规定来解释,除非使用短语“用于...的装置”来明确地列举要素。
Claims (21)
1.一种用于可编程逻辑控制器(PLC)程序随机化的方法,所述方法包括:
由工程系统计算机接收与PLC程序对应的源代码;
由所述工程系统计算机将所述源代码编译成所述PLC程序的多个功能等效的中间表示,其中,所述PLC程序的程序结构在编译期间被随机化,使得每个所述中间表示在多个所述中间表示中是唯一的;并且
由所述工程系统计算机将多个所述中间表示发送到一个或多个PLC。
2.根据权利要求1所述的方法,进一步包括:
由所述PLC接收所述PLC程序的第一中间表示;
由所述PLC将所述第一中间表示编译成PLC汇编代码,其中,所述第一中间表示的程序结构在编译期间被随机化;并且
由所述PLC执行所述PLC汇编代码。
3.根据权利要求2所述的方法,进一步包括:
在所述PLC的故障切换之后,将所述第一中间表示重新编译成新的PLC汇编代码,其中,所述第一中间表示的程序结构在重新编译期间被随机化;并且
由所述PLC执行所述新的PLC汇编代码。
4.根据权利要求1所述的方法,其中,通过随机化由所述PLC程序使用的多个数据块的存储器布局,所述PLC程序的程序结构在编译期间被随机化。
5.根据权利要求4所述的方法,其中,通过为每个数据块分配唯一的存储器地址,所述多个数据块的存储器布局被随机化。
6.根据权利要求5的方法,进一步包括:
在编译期间按类型对所述多个数据块进行分类,以优化所述存储器布局中的存储器访问。
7.根据权利要求1所述的方法,其中,通过随机化使用由所述PLC程序使用的多个函数块,在编译期间随机化所述PLC程序的程序结构。
8.根据权利要求7所述的方法,其中,随机化使用由所述PLC程序使用的所述多个函数块包括:
将调用每个函数块时所用参数的排序随机化。
9.根据权利要求7所述的方法,其中,随机化使用由所述PLC程序使用的所述多个函数块包括:
将由每个函数块使用的排序的循环变量随机化。
10.根据权利要求7所述的方法,其中,随机化使用由所述PLC程序使用的所述多个函数块包括:通过以下方式随机化每个函数块的控制流:
构建条件语句被转换为等效的控制流构造的控制流图;并且
随机化所述控制流构造的排序。
11.根据权利要求7所述的方法,其中,随机化使用由所述PLC程序使用的所述多个函数块包括:通过以下方式随机化每个函数块的数据流:
构建条件语句被转换为等效的数据流表示的数据流图;并且
随机化所述数据流表示的排序。
12.根据权利要求7所述的方法,其中,随机化使用由所述PLC程序所使用的所述多个函数块包括:将一个或多个非功能性函数块插入所述多个函数块中。
13.根据权利要求1所述的方法,其中,所述PLC程序包括多个函数块,每个函数块由包括数字标识符的三元组来标识,并且所述PLC程序的程序结构通过以下方式随机化:
为每个数字标识符分配随机值,并且
通过数字标识符对多个函数块进行分类。
14.根据权利要求1所述的方法,其中,通过重新排序所述PLC程序中的一个或多个组织块,在编译期间随机化所述PLC程序的程序结构。
15.一种用于可编程逻辑控制器(PLC)程序随机化的方法,所述方法包括:
通过PLC接收PLC程序的中间表示;
由所述PLC将所述中间表示编译成PLC汇编代码,其中,所述中间表示的程序结构在编译期间关于一个或多个程序块的使用而被随机化;并且
由所述PLC执行所述PLC汇编代码。
16.根据权利要求15所述的方法,进一步包括:
在所述PLC的故障切换之后,将所述中间表示重新编译成新的PLC汇编代码,其中,所述中间表示的程序结构在重新编译期间被随机化;并且
由所述PLC执行所述新的PLC汇编代码。
17.根据权利要求15所述的方法,其中,通过随机化由所述PLC程序使用的一个或多个数据块的地址值,在编译期间随机化所述中间表示的程序结构。
18.根据权利要求15所述的方法,其中,通过随机化由所述PLC程序使用的函数块和函数的控制流,在编译期间随机化所述中间表示的程序结构。
19.根据权利要求15所述的方法,其中,通过随机化由所述PLC程序使用的函数块和函数的数据流,在编译期间随机化所述中间表示的程序结构。
20.根据权利要求15所述的方法,其中,通过重新排序所述中间表示中由所述PLC程序使用的一个或多个组织块,在编译期间随机化所述中间表示的程序结构。
21.一种用于可编程逻辑控制器(PLC)程序随机化的系统,所述系统包括:
计算机可读存储介质,存储对应于PLC程序的源代码;
工程系统,被配置为将所述源代码编译成所述PLC程序的多个功能等效的中间表示,其中,所述PLC程序的程序结构在编译期间被随机化,使得每个所述中间表示在多个所述中间表示中是唯一的;以及
多个可编程逻辑控制器,每个可编程逻辑控制器被配置为:
从所述工程系统接收所述PLC程序的中间表示;
将所述中间表示编译成PLC汇编代码,其中,所述中间表示的程序结构在编译期间关于一个或多个程序块的使用而被随机化。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662277014P | 2016-01-11 | 2016-01-11 | |
US62/277,014 | 2016-01-11 | ||
PCT/US2016/066295 WO2017123367A1 (en) | 2016-01-11 | 2016-12-13 | Program randomization for cyber-attack resilient control in programmable logic controllers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108700864A true CN108700864A (zh) | 2018-10-23 |
CN108700864B CN108700864B (zh) | 2021-05-07 |
Family
ID=57755462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680078375.7A Active CN108700864B (zh) | 2016-01-11 | 2016-12-13 | 可编程逻辑控制器中网络攻击弹性控制的程序随机化 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10795976B2 (zh) |
EP (1) | EP3380899B1 (zh) |
CN (1) | CN108700864B (zh) |
WO (1) | WO2017123367A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7217700B2 (ja) | 2016-09-13 | 2023-02-03 | アラーガン、インコーポレイテッド | 安定化非タンパク質クロストリジウム毒素組成物 |
CN106549935A (zh) * | 2016-09-27 | 2017-03-29 | 上海红阵信息科技有限公司 | 一种异构功能等价体生成装置及方法 |
EP3413147B1 (en) * | 2017-06-07 | 2022-03-23 | Brooks Automation (Germany) GmbH | Method for controlling a plc using a pc program |
CN108196501A (zh) * | 2017-12-22 | 2018-06-22 | 北京东土科技股份有限公司 | 一种基于plc的分布式控制系统的容灾方法、装置和系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6754862B1 (en) * | 2000-03-09 | 2004-06-22 | Altera Corporation | Gaining access to internal nodes in a PLD |
US20050262347A1 (en) * | 2002-10-25 | 2005-11-24 | Yuji Sato | Watermark insertion apparatus and watermark extraction apparatus |
US20060005178A1 (en) * | 2004-07-02 | 2006-01-05 | Nvidia Corporation | Optimized chaining of vertex and fragment programs |
US20060136867A1 (en) * | 2004-12-17 | 2006-06-22 | Manfred Schneider | Code diversification |
US20060185906A1 (en) * | 1994-10-14 | 2006-08-24 | Vail William B Iii | Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells |
US20070234070A1 (en) * | 1999-07-29 | 2007-10-04 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US20090276060A1 (en) * | 2008-05-05 | 2009-11-05 | Siemens Corporate Research, Inc. | Mobile Function Block for a PLC Based Distributed Control System |
CN102156840A (zh) * | 2010-02-12 | 2011-08-17 | 三菱电机株式会社 | 控制装置以及管理装置 |
US8806187B1 (en) * | 2009-12-03 | 2014-08-12 | Google Inc. | Protecting browser-viewed content from piracy |
CN105094937A (zh) * | 2014-05-19 | 2015-11-25 | Ls产电株式会社 | 用于可编程逻辑控制器的程序管理的装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7437719B2 (en) * | 2003-09-30 | 2008-10-14 | Intel Corporation | Combinational approach for developing building blocks of DSP compiler |
US8056138B2 (en) * | 2005-02-26 | 2011-11-08 | International Business Machines Corporation | System, method, and service for detecting improper manipulation of an application |
US8327316B2 (en) * | 2008-09-30 | 2012-12-04 | Ics Triplex Isagraf Inc. | Compilation model |
US8434059B2 (en) * | 2009-05-01 | 2013-04-30 | Apple Inc. | Systems, methods, and computer-readable media for fertilizing machine-executable code |
US8689201B2 (en) * | 2010-01-27 | 2014-04-01 | Telcordia Technologies, Inc. | Automated diversity using return oriented programming |
WO2012033478A1 (en) * | 2010-09-07 | 2012-03-15 | Murty Pharmaceuticals, Inc. | An improved oral dosage form of tetrahydrocannabinol and a method of avoiding and/or suppressing hepatic first pass metabolism via targeted chylomicron/lipoprotein delivery |
US20150294114A1 (en) * | 2012-09-28 | 2015-10-15 | Hewlett-Packard Development Company, L.P. | Application randomization |
US10318400B2 (en) * | 2014-02-13 | 2019-06-11 | Infosys Limited | Methods of software performance evaluation by run-time assembly code execution and devices thereof |
IL242523A0 (en) * | 2015-04-16 | 2016-04-21 | Yuval Elovici | A method and system for protecting computer systems from malicious software using variable commands |
-
2016
- 2016-12-13 WO PCT/US2016/066295 patent/WO2017123367A1/en active Application Filing
- 2016-12-13 EP EP16823104.1A patent/EP3380899B1/en active Active
- 2016-12-13 CN CN201680078375.7A patent/CN108700864B/zh active Active
- 2016-12-13 US US16/067,058 patent/US10795976B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060185906A1 (en) * | 1994-10-14 | 2006-08-24 | Vail William B Iii | Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells |
US20070234070A1 (en) * | 1999-07-29 | 2007-10-04 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6754862B1 (en) * | 2000-03-09 | 2004-06-22 | Altera Corporation | Gaining access to internal nodes in a PLD |
US20050262347A1 (en) * | 2002-10-25 | 2005-11-24 | Yuji Sato | Watermark insertion apparatus and watermark extraction apparatus |
US20060005178A1 (en) * | 2004-07-02 | 2006-01-05 | Nvidia Corporation | Optimized chaining of vertex and fragment programs |
US20060136867A1 (en) * | 2004-12-17 | 2006-06-22 | Manfred Schneider | Code diversification |
US20090276060A1 (en) * | 2008-05-05 | 2009-11-05 | Siemens Corporate Research, Inc. | Mobile Function Block for a PLC Based Distributed Control System |
US8806187B1 (en) * | 2009-12-03 | 2014-08-12 | Google Inc. | Protecting browser-viewed content from piracy |
CN102156840A (zh) * | 2010-02-12 | 2011-08-17 | 三菱电机株式会社 | 控制装置以及管理装置 |
CN105094937A (zh) * | 2014-05-19 | 2015-11-25 | Ls产电株式会社 | 用于可编程逻辑控制器的程序管理的装置 |
Non-Patent Citations (2)
Title |
---|
ADRIAN R. CHAVEZ: "Network Randomization and Dynamic Defense for Critical Infrastructure Systems", 《SANDIA REPORT》 * |
STEPHANIE FORREST: "Building Diverse Cmputer Systems", 《OPERATING SYSTEMS》 * |
Also Published As
Publication number | Publication date |
---|---|
CN108700864B (zh) | 2021-05-07 |
WO2017123367A1 (en) | 2017-07-20 |
EP3380899A1 (en) | 2018-10-03 |
US10795976B2 (en) | 2020-10-06 |
EP3380899B1 (en) | 2020-11-04 |
US20190008845A1 (en) | 2019-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110663006B (zh) | 对可编程逻辑控制器执行故障转移并控制物理系统的方法 | |
WO2017040145A1 (en) | Web-based programming environment for embedded devices | |
US10067856B2 (en) | Employing code overlays to facilitate software development | |
CN108700864A (zh) | 可编程逻辑控制器中网络攻击弹性控制的程序随机化 | |
Soliman et al. | Verification and validation of safety applications based on PLCopen safety function blocks | |
US20150378880A1 (en) | Dynamically Configurable Test Doubles For Software Testing And Validation | |
CN105911885A (zh) | 用于改善工业控制系统的工业控制器 | |
Wassyng et al. | Lessons learned from a successful implementation of formal methods in an industrial project | |
CN111133434B (zh) | 用于受密码保护地运行虚拟机的设备和方法 | |
CN110532167B (zh) | 一种基于模型转换的状态机模型时序性质验证方法 | |
JP3819639B2 (ja) | プログラミング装置 | |
US20190196798A1 (en) | Executable program creation device, executable program creation method, and executable program creation program | |
US20210026609A1 (en) | Support device and non-transitory computer-readable recording medium | |
US20010037362A1 (en) | Automation system for solving a technical-process task and corresponding method | |
JP2016224557A (ja) | プログラム作成支援装置、プログラムおよび判別方法 | |
EP4073626B1 (en) | Method and system for generating engineering diagrams in an engineering system | |
Wang et al. | Component‐Based Formal Modeling of PLC Systems | |
Wang et al. | Formal modelling of PLC systems by BIP components | |
CN110532166B (zh) | 一种基于模型转换的状态机模型时序性质验证系统 | |
CN113609066A (zh) | 一种基于Rust的多核RISCV-CPU模拟器 | |
Stec | SFC graphic editor for CPDev environment | |
JP2010152581A (ja) | 情報制御システムおよび情報制御方法 | |
Estivill-Castro et al. | Deterministic high-level executable models allowing efficient runtime verification | |
JP7151161B2 (ja) | 制御システム、サポート装置、サポートプログラム | |
JP4569284B2 (ja) | 集積回路のデバッグ方法、デバッグプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |