一种基于嵌入式的PLC安全可信的系统和方法

文档序号:29424276发布日期:2022-03-26 14:48阅读:126来源:国知局
一种基于嵌入式的PLC安全可信的系统和方法
一种基于嵌入式的plc安全可信的系统和方法
技术领域
1.本发明涉及可编程逻辑控制器安全技术领域,尤其涉及一种基于嵌入式的plc安全可信系统和方法。


背景技术:

2.随着科技的进步和社会的发展,plc(即programmable logic controller,可编程逻辑控制器)在工业上的应用越来越广泛,逐渐成为自动化制造工厂里无可替代的部分。安全可信技术应用在plc领域,为工业及其他plc 应用场景的工作提供了保障。现有的keia协议通过建立基于用户认证和可信平台模块(trusted platform module)认证的可信验证通道解决基于tls 协议存在的重放攻击问题,但其仅仅从协议的角度出发,很难将实际项目中对plc的攻击问题解决。现有的通过调整一次性密码的方法来加强保护机密硬件和软件系统设备及组件之间的数据交换,但未防止攻击者从软件系统设备本身的攻击。现有的动态水印的方法,可以用来追踪恶意信号,以寻找到恶意传感器的位置,但其假设了存在“诚实”节点,即无法判定该节点是否已经被恶意代码操纵。现有的基于数据流分析的plc恶意代码监测技术,通过对plc程序中关键变量的取值范围进行度量,判断其范围是否超出正常范围来确定是否有恶意代码篡改了数据,但是当恶意代码操纵变量达到任意值但仍处于正常范围内时,此方法将失效。
3.因此,本领域的技术人员致力于开发一种基于嵌入式的plc安全可信系统和方法。


技术实现要素:

4.有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是保证在 plc运行过程中不会被攻击者操纵,同时不会被注入恶意代码,提高plc 运行的安全性。
5.嵌入式即嵌入式系统,ieee(美国电气和电子工程师协会)对其定义是用于控制、监视或者辅助操作机器和设备的装置。发明人经过研究,在用户和嵌入式之间使用安全可信通道建立连接,嵌入式和plc之间使用tcp/ip进行连接,在用户和plc之间以嵌入式为桥梁。在用户接入plc 之前验证相应的指标来判定该用户是否有权限去连接该plc,在plc运行过程中实时监视关键变量数据,并在最后对用户判定指标进行更新。利用安全可信技术,可以对plc进行安全保护,可通过计算用户的可信度,并根据其不同的结果进行不同的授权,同时能够对用户在使用过程中的操作进行评估,以保证过程的安全可信,这对于涉及到plc的应用场景来说是非常重要的技术。
6.对plc攻击的手段和方式非常多,发明人把plc受到攻击的情况分为一下三种:
7.第一种,恶意代码的注入,即在plc启动主程序之前或运行过程中将本不属于该程序的恶意代码注入。恶意代码被注入后,一方面会使原本正常的主程序出现异常,另一方面会恶意的调用模块对运行过程进行破坏,甚至会造成设备的损坏以造成难以估量的损失。
8.第二种,篡改数据,即将plc运行过程中获取到的数据或需要发送的下位机的数据进行篡改。数据被篡改后,一方面会使得操作人员或监视者得到错误的数据,从而对运行过
程中的具体情况做出错误的判断,另一方面会使得终端设备得到错误的信息,从而做出错误的应答。
9.第三种,利用互连进行攻击,即在工业互联网中运行的多个plc,通过攻击并操纵某个plc来完成对其余plc的攻击。互连攻击后,不仅首先被攻击的plc会产生错误,而且会影响连接在整个工业互联网中的plc 受到安全威胁。
10.发明人发现,针对第一种攻击来说,若在plc执行程序代码之前监测出原程序代码的逻辑关系已经被更改,则停止执行后续的程序代码,将有效的解决恶意代码注入的问题;针对第二种攻击来说,若在plc执行程序的过程中不断的对其所产生的重要数据进行判断,确定其是否在一个正常的范围或是否为某一个唯一确定变量数据,将有效的解决plc运行过程中篡改数据的问题。针对第三种攻击来说,如果将某一plc与另一plc之间互连过程中监测前一个plc是否被恶意代码注入过,或者监测该plc 是否仍然可信,将有效的解决利用互连进行攻击问题。
11.发明人通过深入研究,在用户运行plc程序代码之前通过满意度和信誉两项指标来验证该用户的身份,并在运行过程中监视用户的行为,同时对plc程序代码运行过程中产生的关键变量数据进行监视,提高了plc 运行的安全性。
12.本发明的一个实施例中,提供了一种基于嵌入式的plc安全可信系统,包括:
13.验证用户模块,根据验证指标对用户身份进行验证;
14.设置约定模块,向用户提出约定,并在用户同意约定后获取用户关键身份信息;
15.程序预编译模块,对首次在plc上运行的程序代码进行预编译,获取程序代码的关键信息;
16.异常数据分析模块,对采集到的数据进行分析,判断是否为异常关键变量数据;
17.异常数据集模块,存储异常关键变量数据;
18.用户反馈模块,对用户身份进行重新评估,用于下次用户身份验证;
19.响应于用户接入plc的请求,验证用户模块对用户进行验证,如通过验证,程序预编译模块对首次在plc上执行的程序代码进行预编译,否则,设置约定模块向用户提出约定,用户同意约定后,程序预编译模块对首次在plc上执行的程序代码进行预编译;异常数据分析模块对采集到的数据进行分析,产生的异常关键变量数据在异常数据集模块进行存储;用户反馈模块根据预编译的结果和异常关键变量数据,对用户身份进行重新评估,修改验证用户模块中的验证指标。
20.可选地,在上述实施例中的基于嵌入式的plc安全可信系统中,验证指标包括满意度和信誉。
21.可选地,在上述任一实施例中的基于嵌入式的plc安全可信系统中,约定的内容为获取用户的关键身份信息。
22.可选地,在上述任一实施例中的基于嵌入式的plc安全可信系统中,程序代码的关键信息生成哈希值,存储在嵌入式,生成程度代码的预编译库。
23.可选地,在上述任一实施例中的基于嵌入式的plc安全可信系统中,程序代码的关键信息包括关键逻辑关系、模块调用顺序关系、范围变量数据和唯一确定变量数据。
24.可选地,在上述任一实施例中的基于嵌入式的plc安全可信系统中,异常数据分析模块的功能包括把异常关键变量数据存储到异常数据集;把即将执行的程序代码的关键逻
辑关系和模块调用顺序关系同预编译库进行对比,对比结果不一致时,用户的信誉置为零,即t
user
=0,终止用户访问;把即将执行的程序代码产生的范围变量数据和唯一确定变量数据同预编译库进行对比,根据对比结果通过函数对满意度进行修改。
25.进一步地,在上述实施例中的基于嵌入式的plc安全可信系统中,满意度进行修改的函数为s’user
=s
user
+a*e
bx
,其中,s
user
为当前用户的对满意度,x为程序代码从运行开始到当前时刻产生的异常关键变量数据个数,即超出正常范围的范围变量数据或不正确的唯一确定变量数据, s’user
为更新后的满意度,a,b为拟定函数参数。
26.进一步地,在上述实施例中的基于嵌入式的plc安全可信系统中,a,b分别优选为-2.432和0.3684。
27.可选地,在上述任一实施例中的基于嵌入式的plc安全可信系统中,异常数据集具有固定的预设长度。
28.可选地,在上述任一实施例中的基于嵌入式的plc安全可信系统中,在设置约定模块,若用户同意约定,设置该用户的初始满意度 s
userinit
=100,初始信誉t
userinit
=1。
29.基于上述任一实施例,本发明的另一个实施例中,提供了一种基于嵌入式的plc安全可信方法,包括如下步骤:
30.s100、初始化,包括程序代码预编译和异常数据集初始化;
31.s200、建立可信验证通道;
32.s300、设置约定;
33.s400、运行程序代码和预编译代码对比;
34.s500、实时监测,对于运行程序代码在运行过程中产生的关键信息进行监测;
35.s600、信息绑定,程序代码运行结束后,把用户最终的满意度和信誉与其关键身份信息绑定。
36.可选地,在上述实施例中的基于嵌入式的plc安全可信方法中,步骤 s100中包括:
37.s110、程序代码预编译,响应于plc第一次运行程序代码,调用程序预编译模块将该程序代码进行预编译,并提取关键信息,包括关键逻辑关系、模块调用顺序关系、范围变量数据和唯一确定变量数据,并生成哈希值存储在嵌入式中,生成该程序代码的预编译库;
38.s120、异常数据集初始化,异常数据集模块设置异常数据集的长度,即异常数据集最多存放异常关键变量数据的数量。
39.可选地,在上述任一实施例中的基于嵌入式的plc安全可信方法中,步骤s200中包括:
40.s210、找到可信验证通道的两个端点,验证用户模块对用户进行端点验证,验证是否符合建立可信验证通道的标准;
41.s220、如果所述用户与plc产生过交互,存在满意度和信誉两项指标的值,且符合预设的标准,则在嵌入式里查找所述用户的满意度和信誉,作为数据段添加在所述用户关键身份信息之后,生成哈希值,与上一次交互结束所述用户存储在所述嵌入式的哈希值进行对比,若哈希值一致则使用满意度和信誉作为本次交互的初始满意度和信誉,允许所述用户与plc 进行交互,所述嵌入式建立会话密钥,使用rsa公开密钥密码来建立可信验证通道,然后执行步骤s400;
42.s230、如果满意度和信誉至少有一个不符合预设的标准,则所述嵌入式不创建会
话密钥,不建立所可信验证通道,拒绝所述用户的访问;
43.s240、如果所述用户不包含满意度和信誉,则建立可信验证通道,并进入设置约定模块,执行步骤s300。
44.进一步地,在上述实施例中的基于嵌入式的plc安全可信方法中,预设的标准为满意度大于零且信誉为1。
45.进一步地,在上述实施例中的基于嵌入式的plc安全可信方法中,建立可信验证通道的方法使用rsa公开密钥密码。
46.可选地,在上述任一实施例中的基于嵌入式的plc安全可信方法中,步骤s300中包括:
47.s310、设置约定模块发送给该用户获取关键身份信息的请求;
48.s320、如果该用户不同意约定,摧毁会话密钥,拒绝该用户的访问;若该用户同意约定,允许该用户与plc进行交互,执行步骤s400。
49.可选地,在上述任一实施例中的基于嵌入式的plc安全可信方法中,步骤s400中包括:
50.s410、程序代码在plc运行前,程序预编译模块对该程序代码进行编译,提取其关键信息,与程序预编译模块中的预编译库代码的关键信息进行对比,如果完全一致,继续运行程序代码,执行步骤s500;
51.s420、如果不一致,则调用用户反馈模块标记该用户的信誉t
user
=0,并中断该用户的访问。
52.可选地,在上述任一实施例中的基于嵌入式的plc安全可信方法中,步骤s500中包括:
53.s510、异常数据分析模块对于运行程序代码在运行过程中产生的关键信息实时监测,并与预编译库中的关键信息进行对比,如果不一致,将运行过程中plc产生的关键信息复制至异常数据集,并将其修改为正常数据,用户反馈模块对该用户的满意度进行修改,继续运行程序代码的运行;
54.s520、如果运行程序代码在运行过程中,产生并修改的关键信息的数量超过了异常数据集的预设长度,用户反馈模块中断该用户的访问,并中止运行程序代码,标记该用户的信誉t
user
=0;
55.s530、若在运行程序代码结束时运行过程中plc产生的关键信息的数量没有超过异常数据集的预设长度,执行步骤s600。
56.可选地,在上述任一实施例中的基于嵌入式的plc安全可信方法中,步骤s600中包括:
57.s610、运行程序代码运行结束后,把该用户的关键信息以数据段的形式表示,在数据段末尾添加满意度和信誉的数据信息,并将其通过哈希算法生成的哈希值存储在嵌入式中,同时将生成哈希值的原始数据存储进去;
58.s620、响应于该用户与plc再次交互,若该用户关键身份信息已存在,验证用户模块对该身份的满意度和信誉再次生成哈希值,同以前存储在嵌入式的哈希值进行对比,若一致,则使用存储在嵌入式的满意度和信誉进行验证;若不一致,则删除该用户存储在嵌入式的哈希值和满意度、信誉数据,并以无相关信息的情况调用嵌入式中的验证用户模块。
59.本发明解决了plc攻击的三种情况,对于第一种攻击,本发明在用户执行程序代码之前对该用户所要运行程序代码的关键逻辑关系和模块调用顺序关系与该用户与此plc交互之前的程序预编译模块中的预编译库进行对比,当关键逻辑关系和模块调用顺序关系均一致时才会允许用户运行程序代码,有效的解决了恶意代码的注入造成的问题;对于第二种攻击,程序执行过程中产生的异常关键变量数据被捕获并复制至异常数据集中,同时对异常关键变量数据进行修正,并修改该用户的满意度,当异常关键变量数据的个数超过异常数据集的预设长度时,中止该用户与plc进行交互,并标记信誉为零,实时监测满意度与信誉指标是否仍符合预设的标准,有效地解决了plc运行过程中对正常数据的篡改问题;对于第三种攻击,本发明搭建在plc的接入口,以零信任的方式去防护互连的plc,解决了利用互连进行的攻击。
60.本发明通过满意度和信誉两项指标来验证用户的身份,并在运行过程中监视用户的行为,同时对plc程序代码运行过程中产生的关键信息进行监测,提高了plc运行的安全性。
61.以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
62.图1是图示根据示例性实施例的嵌入式的plc安全可信系统的结构示意图;
63.图2是图示根据示例性实施例的嵌入式的plc安全可信方法的流程图。
具体实施方式
64.以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
65.在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本发明并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方示意性地适当夸大了部件的厚度。
66.发明人设计了一种基于嵌入式的plc安全可信系统,如图1所示,包括:
67.验证用户模块,根据验证指标对用户身份进行验证,验证指标包括满意度和信誉;
68.设置约定模块,向用户提出约定,约定的内容为获取用户的关键身份信息,并在用户同意约定后获取用户关键身份信息,若用户同意约定,设置该用户的初始满意度s
userinit
=100,初始信誉t
userinit
=1;
69.程序预编译模块,对首次在plc上运行的程序代码进行预编译,获取程序代码的关键信息,包括关键逻辑关系、模块调用顺序关系、范围变量数据和唯一确定变量数据,程序代码的关键信息生成哈希值,存储在嵌入式,生成为程度代码的预编译库;
70.异常数据分析模块,对采集到的数据进行分析,判断是否为异常关键变量数据,包括把异常关键变量数据存储到异常数据集;把即将执行的程序代码的关键逻辑关系和模块调用顺序关系同预编译库进行对比,对比结果不一致时,用户的信誉置为零,即t
user
=0,终
止用户访问;把即将执行的程序代码产生的范围变量数据和唯一确定变量数据同预编译库进行对比,根据对比结果通过函数对满意度进行修改,函数为 s’user
=s
user
+a*e
bx
,其中,s
user
为当前用户的满意度,x为程序代码从运行开始到当前时刻产生的异常关键变量数据个数,即超出正常范围的范围变量数据或不正确的唯一确定变量数据,s’user
为更新后的满意度, a,b为拟定函数参数,分别优选为-2.432和0.3684;
71.异常数据集模块,存储异常关键变量数据,异常数据集具有预设的长度;
72.用户反馈模块,对用户身份进行重新评估,用于下次用户身份验证;
73.响应于用户接入plc的请求,验证用户模块对用户进行验证,如通过验证,程序预编译模块对首次在plc上执行的程序代码进行预编译,否则,设置约定模块向用户提出约定,用户同意约定后,程序预编译模块对首次在plc上执行的程序代码进行预编译;异常数据分析模块对采集到的数据进行分析,产生的异常关键变量数据在异常数据集模块进行存储;用户反馈模块根据预编译的结果和异常关键变量数据,对用户身份进行重新评估,修改验证用户模块中的验证指标。
74.基于上述实施例,发明人提供了一种基于嵌入式的plc安全可信方法,如图2所示,包括如下步骤:
75.s100、初始化,包括程序代码预编译和异常数据集初始化;具体包括:
76.s110、程序代码预编译,响应于plc第一次运行程序代码,调用程序预编译模块将该程序代码进行预编译,并提取关键信息,包括关键逻辑关系、模块调用顺序关系、范围变量数据和唯一确定变量数据,并生成哈希值存储在嵌入式中,生成该程序代码的预编译库;
77.s120、异常数据集初始化,异常数据集模块设置异常数据集的长度,即异常数据集最多存放异常关键变量数据的数量。
78.s200、建立可信验证通道;具体包括:
79.s210、找到可信验证通道的两个端点,验证用户模块对用户进行端点验证,验证是否符合建立可信验证通道的标准;
80.s220、如果所述用户与plc产生过交互,存在满意度和信誉两项指标的值,且符合预设的标准,则在嵌入式里查找所述用户的满意度和信誉,作为数据段添加在所述用户关键身份信息之后,生成哈希值,与上一次交互结束所述用户存储在所述嵌入式的哈希值进行对比,若哈希值一致则使用满意度和信誉作为本次交互的初始满意度和信誉,允许所述用户与plc进行交互,所述嵌入式建立会话密钥,使用 rsa公开密钥密码来建立可信验证通道,然后执行步骤s400;
81.s230、如果满意度和信誉至少有一个不符合预设的标准,则所述嵌入式不创建会话密钥,不建立所述可信验证通道,拒绝所述用户的访问;
82.s240、如果所述用户不包含满意度和信誉,使用rsa公开密钥密码建立可信验证通道,并进入设置约定模块,执行步骤s300。
83.s300、设置约定;具体包括:
84.s310、设置约定模块发送给该用户获取关键身份信息的请求;
85.s320、如果该用户不同意约定,摧毁会话密钥,拒绝该用户的访问;若该用户同意约定,允许该用户与plc进行交互,执行步骤s400。
86.步骤s400、运行程序代码和预编译代码对比;具体包括:
87.s410、程序代码在plc运行前,程序预编译模块对该程序代码进行编译,提取其关键信息,与程序预编译模块中的预编译库代码的关键信息进行对比,如果完全一致,继续运行程序代码,执行步骤s500;
88.s420、如果不一致,则调用用户反馈模块标记该用户的信誉 t
user
=0,并中断该用户的访问。
89.s500、实时监测,对于运行程序代码在运行过程中产生的关键信息进行监测;具体包括:
90.s510、异常数据分析模块对于运行程序代码在运行过程中产生的关键信息实时监测,并与预编译库中的关键信息进行对比,如果不一致,将关键信息复制至异常数据集,并将其修改为正常数据,用户反馈模块对该用户的满意度进行修改,继续运行程序代码的运行;
91.s520、如果运行程序代码在运行过程中,产生并修改的关键信息的数量超过了异常数据集的预设长度,用户反馈模块中断该用户的访问,并中止运行程序代码,标记该用户的信誉t
user
=0;
92.s530、若在运行程序代码结束时异常数据集的长度没有超过异常数据集的预设长度,执行步骤s600。
93.s600、信息绑定,程序代码运行结束后,把用户最终的满意度和信誉与其关键身份信息绑定;具体包括:
94.s610、程序代码运行结束后,把该用户的关键信息以数据段的形式表示,在数据段末尾添加满意度和信誉的数据信息,并将其通过哈希算法生成的哈希值存储在嵌入式,同时将生成哈希值的原始数据存储进去;
95.s620、响应于该用户与plc再次交互,若该用户关键身份信息已存在,验证用户模块对该身份的满意度和信誉再次生成哈希值,同以前存储在嵌入式的哈希值进行对比,若一致,则使用该满意度和信誉进行验证;若不一致,则删除该用户的哈希值和满意度、信誉数据,
96.并以无相关信息的情况调用嵌入式中的验证用户模块。
97.以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1