当前位置: 首页 > 专利查询>之江实验室专利>正文

一种基于多异构执行体控制器的多变体用户程序编译方法技术

技术编号:27372596 阅读:15 留言:0更新日期:2021-02-19 13:58
本发明专利技术公开了一种基于多异构执行体控制器的多变体用户程序编译方法,该方法用于工业控制领域的上位机组态软件编译多套用户程序可执行文件,用于下载到多异构执行体控制器的多个执行体中运行。本发明专利技术通过在用户程序代码转为C语言代码时增加代码混淆和异常探测等手段,以及利用编译器链接工具指定不同代码段和数据段地址的方式生成多套不同芯片架构的目标执行程序。本发明专利技术满足多异构执行体控制器多套异构执行体分别运行相同业务用户程序的同时,提高了用户程序的动态性和多样性,从而提高了控制器的安全性。高了控制器的安全性。高了控制器的安全性。

【技术实现步骤摘要】
一种基于多异构执行体控制器的多变体用户程序编译方法


[0001]本专利技术属于工业控制
,尤其涉及一种基于多异构执行体控制器的多变体用户程序编译方法。

技术介绍

[0002]随着工业应用的逐渐开放和智能,传统工业控制系统由多年的封闭式应用场景也逐渐开放,结合物联网、5G、人工智能、大数据等前沿技术,打造智能制造、工业4.0等新目标的同时,安全需求也更加迫切。拟态防御理论是一种基于内生安全机理的动态异构冗余构造(Dynamic Heterogeneous Redundancy,DHR)中引入拟态伪装的策略或机制,融合多种主动防御要素,以异构性、多元性改变目标系统的单一性;以动态性、随机性改变目标系统的确定性;以异构冗余多模裁决机制识别和屏蔽未知缺陷与未明威胁;以高可靠性架构增强目标系统服务功能的柔韧性或弹性;以系统的视在不确定属性防御或拒止针对目标系统的不确定性威胁。
[0003]工控系统上位机组态软件将工艺流程对应的用户程序通过编译后下载到如PLC或DCS控制器等的工业控制器中运行,提供针对用户程序的不同方式的编译方法。
[0004]为了高稳定性,传统控制器或者安全型控制器都具备设备冗余的强可靠性设计,即每套控制器都有1:1的热备冗余,安全型控制器能到达3个甚至更多的冗余;但是他们都是基于同源同架构的冗余,采用相同的内核、系统、驱动和执行程序。上位机组态软件下发用户程序给控制器通常有两种方法,一是将用户程序转为类汇编语句的解释型执行文件下发;二是将用户程序交叉编译成目标系统可执行文件下发。基于传统控制器,上位机组态软件只编译下发一套用户程序给各执行体,容易被攻击者破解、伪造。
[0005]拟态工业控制器是结合了拟态防御理论的一种内生安全工业控制器,其内部采用多套异构的主控芯片作为多个执行体。相对来说,拟态工业控制器的最大变更在于固定3个以上的冗余度,且每个冗余执行体都具备异构性,从硬件包括CPU架构、外设,到软件包括主程序、内部驱动都是不同的,比如ARMv7-A、X86、Mips等内核架构的处理器;整个控制执行中,实时通过裁决器从多个执行体中裁决判断输出,从而有效避免针对单一设备的攻击和漏洞利用。

技术实现思路

[0006]本专利技术的目的在于针对现有技术的不足,提供一种基于多异构执行体控制器的多变体用户程序编译方法。本专利技术针对的是多异构执行体控制器执行体软件中负责工业应用业务逻辑控制的用户程序的多样化编译处理,通过多种方法提高控制器中用户程序执行文件的异构彻底性、达到整体控制器的安全稳定性。
[0007]本专利技术的目的是通过以下技术方案来实现的:一种基于多异构执行体控制器的多变体用户程序编译方法,包括以下步骤:(1)将用户程序语句转为C语言代码,具体为:
(1.1)用户程序的控制逻辑转为多套不同的C语言代码;(1.2)每套C语言代码随机插入混淆代码、异常检查和异常处理的代码;(1.3)每套C语言代码与其目标异构执行体约定针对同一业务功能采用相同的业务内存地址,且各异构执行体之间针对同一业务功能的业务内存地址不同,则每套C语言代码针对同一业务功能的业务内存地址也不同;(2)针对各异构执行体,将C语言代码分别交叉编译成相应架构的目标程序,具体为:各异构执行体的内核版本不同,每套C语言代码根据其目标异构执行体的内核版本,通过指定内核版本的编译器或者相应的编译参数,实现交叉编译多套内核架构的目标程序;(3)将目标程序链接成多个可执行文件,具体为:将步骤(2)生成的目标程序链接生成可执行文件;其中,每个可执行文件链接时指定的运行地址与其目标异构执行体的运行地址约定一致,且各异构执行体之间的运行地址不同。
[0008]进一步地,每个异构执行体的业务内存地址支持通过其它约定文件动态变更。
[0009]进一步地,所述其它约定文件包括用户程序配置表。
[0010]进一步地,所述可执行文件链接时指定的运行地址包括代码段和数据段的起始地址。
[0011]进一步地,所述用户程序为装载到工业控制器后运行的业务控制程序,对应各个工业场景的工艺流程。
[0012]进一步地,所述多异构执行体控制器为拟态工业控制器。
[0013]进一步地,所述混淆代码包括无效的临时变量定义以及相关运算、正常变量值的加减异或、无法满足的条件分支下的复杂逻辑运算和赋值。
[0014]进一步地,所述异常检查和异常处理的代码包括判断预留陷阱对应的内存变化时,进入指定的异常处理,从而记录异常事件或者触发报警。
[0015]进一步地,所述预留陷阱包括业务无关的堆变量和栈变量。
[0016]本专利技术的有益效果是:基于多异构执行体控制器,本专利技术将用户程序交叉编译成目标系统可执行文件下发,上位机针对不同的异构执行体编译成不同架构的用户程序可执行文件。本专利技术在用户程序的编译中考虑几种变化方法,通过在用户程序代码转为C语言代码时增加代码混淆和异常探测等手段,变化的业务内存地址,以及利用编译器链接工具指定不同代码段和数据段地址的方式,生成更具动态性和多样性的用户程序执行文件,从而达到更高的安全性。针对控制器中多套异构执行体的设计,满足编译型用户程序执行所需的多套内核架构程序编译方法,同时使用户程序和控制器具备更高的安全性。
附图说明
[0017]图1是用户程序编译下载主流程图。
具体实施方式
[0018]本专利技术一种基于多异构执行体控制器的多变体用户程序编译方法,采用用户程序编译型下发的方式,通过插入无效代码、检查代码、多平台交叉编译、动态代码地址和数据地址的方式编译工控系统组态软件生成的用户程序,生成不同的可执行文件,用于下载到目标控制器。
[0019]用户程序是指装载到工业控制器后运行的业务控制程序,对应各个工业场景的工艺流程。用户程序的编写规范根据IEC61131-3国际标准,定义有文本语言(指令表IL、结构文本ST)和图形化语言(梯形图LD、功能块图FBD、顺序功能图SFC);编程组态软件在用户程序编写完成后,需要编译成目标控制器可识别的执行指令,编译方式通常有2种,一是编译型,用户程序源码编程先转为C语言,再通过对C语言的交叉编译生成目标控制器的执行文件;二是解释型,用户程序源码先转为自定义的中间解释型指令,下发到目标控制器,由目标控制器解释执行。本实施例以拟态工业控制器为例,整体流程如图1所示,主要操作步骤如下:步骤一、用户程序转为多套C语言代码本专利技术仅针对第一种方式,将其转为C语言代码;在此过程中,增加几个变化方法,差异化地生成多套不同的C语言代码,具体如下:1)增加混淆代码用户程序转为多套C语言代码,每套C语言代码随机插入不同的混淆代码,比如无效的临时变量定义以及相关运算、正常变量值的加减异或、无法满足的条件分支下的复杂逻辑运算和赋值等。
[0020]大部分用户程序的控制逻辑都相对简单,容易被攻击者在下载组态软件用户程序时抓取通信包解析破解;增加不同的混淆代码一是为了增加拟态工业控制器多执行体的用户程序的代码异构性;二是为了增加攻击者对用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多异构执行体控制器的多变体用户程序编译方法,其特征在于,包括以下步骤:(1)将用户程序语句转为C语言代码,具体为:(1.1)用户程序的控制逻辑转为多套不同的C语言代码;(1.2)每套C语言代码随机插入混淆代码、异常检查和异常处理的代码;(1.3)每套C语言代码与其目标异构执行体的业务内存地址约定一致,且各异构执行体之间针对同一业务功能的业务内存地址不同;(2)针对各异构执行体,将C语言代码分别交叉编译成相应架构的目标程序,具体为:各异构执行体的内核版本不同,每套C语言代码根据其目标异构执行体的内核版本,通过指定内核版本的编译器或者相应的编译参数,实现交叉编译多套内核架构的目标程序;(3)将目标程序链接成多个可执行文件,具体为:将步骤(2)生成的目标程序链接生成可执行文件;其中,每个可执行文件链接时指定的运行地址与其目标异构执行体的运行地址约定一致,且各异构执行体之间的运行地址不同。2.如权利要求1所述基于多异构执行体控制器的多变体用户程序编译方法,其特征在于,每个异构执行体的业务内存地址支持通过其它约定文件动态变更。3.如权利要求2所述基于多异构执行体控制器的多变体用户...

【专利技术属性】
技术研发人员:林会肖林嵩松吴立其杨汶佼李绍勇
申请(专利权)人:之江实验室
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1