在面向安全的计算机程序中将多个事件记录在编码跟踪器变量中的方法与流程
未命名
08-13
阅读:87
评论:0
1.本发明涉及根据权利要求1的前序部分的用于在面向安全的计算机程序中将多个事件记录在编码跟踪器变量中的方法、根据权利要求9的前序部分的用于执行该方法的装置和根据权利要求10的前序部分的用于执行该方法的计算机程序产品。
背景技术:
2.在工业应用的安全相关程序中,必须确保识别到变量中的位错误并且也实际上完整地遍历设置用于在循环中进行处理的程序部分,其中,该工业应用典型地在嵌入式硬件、即例如可编程逻辑控制器(plc)或其他工业自动化组件上运行。
3.在处理功能安全数据时,必须识别安全功能中的内部错误并且做出安全反应(例如输出安全替代值或警告消息)。这传统上通过硬件复制和结果比较来实现。一个替代方案是借助于算术代码对安全功能进行编码。简单的算术代码不识别所有错误,必须适当补充。这典型地导致显著的耗费和/或限制使用。
4.与硬件无关的编码处理变型形式在更高级的安全相关的解决方案中使用。在编码处理中,检测和传播在每个变量中的错误信息。这至此导致:通常不能够适当地映射复杂的应用。
5.因此,需要一种具有线性复杂性的方法来检测和传播复杂软件系统中的错误,以借助于算术代码进行面向安全的编程。
6.复杂应用的实例:
7.·
数据的异步改变(例如通过hmi——人机界面操作)
8.·
剩余数据
9.·
嵌套程序(if-then-else、loop、...)
10.·
全球数据
11.·
cir(运行中的改变——运行时程序或流程改变)
12.·
基于云的安全应用
13.根据目前的现有技术,存在有以下解决策略:
14.·
冗余/多样性:安全程序独立执行多次,使得能够排除“常见原因”(相同的错误原因)。根据应用的复杂性,该方案需要显著的耗费来同步流程和可靠地检测错误。
15.·
在“分布式安全”中,基于安全程序在其上运行的cpu的hf模型估计实际可预期的错误率。模型的确定和估计必须对每个hw分开地进行。
16.·
每个变量的动态签名:每个变量都获得动态签名。每当变量更改时,该签名都更改。管理动态签名的耗费随着用户程序的复杂性而增加。在各别应用中,由于控制结构的微小改变,管理耗费翻倍。
17.综上所述,能够说:根据现有技术的解决方案随着当前强烈增长的需求复杂性而越来越不适合作为新解决方案的唯一解决方案。该解决方案必须补充控制复杂性的措施。
18.问题在于:同步地或彼此时间相近出现的状态、状态变化、日志信息(特别是关于程序运行的协议信息)、错误信息等,其以下简称为“事件”或“标准”通常不时间相近或同事地记录在协议变量(以下简称“跟踪器变量”)中。这往往是由于:在计算机程序中,源代码中关联的相应命令在编译后能够时间上彼此分开地执行,或者,例如,在程序执行中暂时地出现中断(interrupt)。由此会出现不一致状态,尤其对于跟踪器变量和与其相关的结构(特别是控制结构)出现不一致状态。
技术实现要素:
19.因此,本发明的目的在于,改进在跟踪器变量中的事件记录。
20.原则上,该目的通过以下方式来实现:即类似于算术编码来进行保护。多个事件(“标准”)彼此独立地存储在跟踪器变量内。对于每个标准,值以算数编码的方式存储在“跟踪器”中,其中,根据本发明首先将多个标准或事件组合,并且随后能够将其存储在计算步骤中进而同时存储在跟踪器变量中。
21.该目的特别是通过根据专利权利要求1的方法、根据专利权利要求9的装置和根据专利权利要求10的计算机程序来实现。
22.在此,提出一种用于在面向安全的计算机程序中将多个事件记录在编码跟踪器变量中的方法,其中,将每个事件都以值的形式记录在编码跟踪器变量中。在此,为了同时记录多个事件从所述事件的值中首先计算总值,将该总值然后记录在编码跟踪器变量中。这具有的优点是:能够同时处理多个独立的一致性标准,以检测和传播错误或其他事件。由于同时性而避免了在检测错误和传播错误/事件时的多个动态影响。这实现以必要方式降低安全程序的复杂性。
23.此外,为了实现该目的实现用于在面向安全的计算机程序中将多个事件记录在编码跟踪器变量中的装置和计算机程序产品,其中,装置或计算机程序产品在其实施方案中设计用于执行上述方法。因此能够实现根据该方法解释的优点。
24.根据本发明的方法的有利的变型形式在从属专利权利要求中说明,其特征和优点意义上也适用于根据本发明的装置和计算机程序产品。
25.在该方法的有利的变型形式中,使用an、anb或anbd编码来对编码跟踪器变量进行编码。该编码成功地引入到面向安全的计算机程序中,尤其是在自动化技术中的这种计算机程序中。
26.在第一有利的变型形式中,将事件作为编码值记录在编码跟踪器变量中,而在另一有利的变型形式中事件记录在编码跟踪器变量的签名中。混合形式是可行的,例如通过在“有效负载”中记录第一事件,即作为值记录并且在签名中记录其他事件而是可行的。
27.有利地为每个事件限定常数,其中,该常数是适用所述事件的值。例如,布尔信息(真/假)被映射到宽位值,其中,刚好一个值对应于“真”,这增加了位错误中的安全性。
28.在一个有利的设计方案中,通过计算机程序执行跟踪器变量的一致性检查,其中,至少在不一致的情况下执行错误处理。因此,能够消除错误。
29.如果对每个事件或事件的每种类型借助自身的常数编码,其中,不同事件或不同类型的常数被选择为彼此互质,则多个事件或事件类型能够记录在共同的编码变量、即跟踪器变量(或“错误变量”)中。
30.编码跟踪器变量中的事件的期望值有利地分别与事件一起记录在编码跟踪器变量中。因此,能够单独通过评估跟踪器变量来确定错误,例如程序运行错误,而不必将跟踪器变量的内容与外部存储的期望值进行比较。
附图说明
31.下面根据附图解释根据本发明的方法的一个实施例。同时,其用于解释根据本发明的装置和这种计算机程序产品的一个实施例。
32.在此唯一的附图示出对编码变量的添加的保护和同时对程序部段的处理的保护。
具体实施方式
33.在现有技术中,运行变量、即所谓的跟踪器变量或简称为“跟踪器”用于程序运行的控制和用于记录各种类型的事件,借助该运行变量的内容能够记录进而检查所遍历的程序路径或标准、事件、状态等的发生。在当前的实例中,将跟踪器变量tracerc用于保护计算机程序的程序部段的添加和同时处理该程序部段。
34.为此,当前的实例示出编码变量xc。在当前的实例中,在不限制一般性的情况下,变量xc根据以下形式的规则进行anbd编码:
35.xc:=xf*a+b
x
+d
x
36.安全程序的复杂性尤其与对安全程序的动态行为中的错误的保护相关。
37.典型的安全措施是:
38.1.动态签名d
x
39.2.跟踪器(跟踪器变量)
40.3.传播变量
41.新信息被典型地记录在这些签名之一中,使得将常量或变量与明确的预期相加。混合形式是可行的。例如,跟踪器变量能够同时用于传播错误信息或状态信息(例如事件或“标准”),该跟踪器变量的主要目的传统上是记录遍历的线性的程序块。
42.为了完整保护,通常需要同时改变多个独立的方面。在编译的程序代码中也必须确保这种同时性,因此必须考虑到编译器能够执行普遍有利于程序执行的优化的事实,但另一方面不能保证:源代码中与其关联地编程的指令在可执行的程序中实际上迅速或几乎同时地执行。为此,当前为每个问题查找独立的解决方案。
43.事件或标准(状态信息、状态变化、跟踪信息等)的保护或面向安全的记录类似于已知的算术编码进行。多个标准k1...kn独立存储在跟踪器变量内。对于每个标准ki,值以算术编码的方式存储在tracerc中。
44.在第一变型形式中,标准以编码形式表示。换句话说,在编码空间中算术形成的总和存储待记录的信息作为跟踪器变量的编码值,即作为“有效负载”:
45.tracerc=ai*ki+b
tracer
+d
tracer,i
46.数量i个标准的完整公式是:
47.tracerc=(∑
ni=1ai
*ki)+b
tracer
+d
tracer
48.如所见的那样,适用的是:
49.d
tracer,i
=d
tracer
+(∑
ij=1 aj*kj)+(∑
nj=i+1 aj*kj)
50.如果同时将ki改变δki并且将kj改变δkj,则这得到如下变化
51.δtracer=δki*ai+δkj*aj52.在程序中现在执行
53.tracerc=tracerc+δtracer
54.在许多情况下,δki和δkj是常数。在该情况下,δtracer也是常数。如果将值δki与明确的预期δk
ierwartet
相加,则这通过普遍有效的形式来进行:
55.δtracer=n*δki+δk
ierwartet
*(a
i-n)+δkj+m*δk
jerwartet
*(a
j-m)
56.在此,选择n和m,使得通过标准限定的错误信息被安全地传输。否则,不存在对n和m的选择的限制。
57.在第二变型形式中,标准形成编码值的签名,并因此优选地表示在跟踪器变量的动态签名中:
58.tracerc=ai*x+bi+ki59.对于每个标准,确定常数ei,该常数表示标准的值1:
60.·ei
mod ai=1
61.·ei
mod aj=0如果i≠j
62.如果同时将ki改变δki并且将kj改变δkj,则这得到变化
63.δtracer=δku*ei+δkj*ej64.随后在程序中执行tracerc=tracerc+δtracer。
65.在许多情况下,δki和δkj是常数。在该情况下,δtracer也是常数。如果将值δki与明确的预期δk
ierwartet
相加,则这通过普遍有效的形式来进行:
66.δtracer=n*δki+δk
ierwartet
*(e
i-n)+δkj+m*δk
jerwartet
*(e
j-m)
67.在此,重新选择n和m,使得通过标准限定的错误信息被安全地传输。否则,不存在对n和m的选择的限制。
68.在这两种变型形式中,能够在添加δtracer后进行附加的校正,以避免系统错误。例如,借助模运算能够避免或“移除”溢出,该溢出能够由于在编码区域中多次添加信息而出现。
69.具体需要哪些标准不是本发明的一部分。该标准从具体应用情况中的安全要求中得出。典型的标准(或一般来说事件)是:
70.·
程序运行是正确的:这能够借助每个基本块具有一个状态的自动机来检查。
71.·
执行条件的值走向必须对应于实际执行。
72.·
数据的时间戳或动态签名
73.·
检查用于操作的签名。
74.主要优点在于,能够同时处理多个独立的一致性标准以检测和传播错误。在检测和传播错误时,同时避免多个动态影响。这实现以所需的方式降低安全程序的复杂性。
75.在附图中示出如下编码操作的执行,即
76.xf:=xf+1,
77.其中,在附图的右部中示出实际操作并且在附图的左部中示出在跟踪器变量中的记录。
78.限定了以下值:
79.a=13 and r=7;
80.ka=(∑d
x
)mod a=4 and kr=d
tracer
=10;
81.δka=5 and δkr=3
82.模块化编码的变型形式:
83.d
tracer
mod 7=10 mod 7=3
84.ea=14 and er=78
85.tracerc=(4*78+3*14)mod(7*13)=17
86.δtracer=(δka*ea+δkr*er)mod a*r
87.=(5*14+3*78)mod 91
88.=31
89.适用的是:
90.(tracerc+δtracer)mod a=(ka+δka)mod a=48mod 13=9
91.(tracerc+δtracer)mod r=(kr+δkr)mod r=48mod 7=6
92.anbd编码的变型形式:
93.tracerc=((∑d
x
)mod a)*a2+(dtracer mod a)*a+b
tracer
+d
programm
94.对于本发明,b
tracer
和d
program
是不相关的,进而设置为0。
95.→
tracerc=4*169+10*13=806
96.ea=132=169 and er=13
97.δtracer=δka*ea+δkr*er98.=5*169+3*13
99.=884
100.由于kr+δkr≥13,必须对kr进行溢出处理。必须减去rr*a=169。
101.→
δtracer=715!
102.适用的是:
103.((tracerc+δtracer)/a2)mod a=(ka+δka)mod a=9
104.((tracerc+δtracer)/a)mod a=(kr+δkr)mod a=0
105.在将1加到xf的算术(编码)加法中,数字1通过1*a代表,使得将1*a(=a)加至xc并且将编码的1的签名(即ka)加至xc的之前的动态签名。
106.因此,第一标准通过正确的加法给出,由此跟踪器变量d
tracer
被补充先前为正确加法所设的相应值δka=5。
107.第二标准例如是动态签名(d签名),并且用于检查正确的执行顺序。为此,在当前的情况下,因此根据先前的约定(δkr=3)将数字3加到d
tracer
。
108.但是,这两个变化都必须以算术的方式进行;即δka=5和δkr=3必须以编码形式被“加到”跟踪器变量。
109.从中得出:
110.ea=14和er=78
111.δtracer=(5*14+3*78)mod(7*13)=304 mod 91=31
112.因此,通过将31加至跟踪器变量tracerc的原始值17,同时地、即在通过编译器或中断无法分开的步骤中将两个标准记录在跟踪器变量中。
113.然后,能够在程序结束时进行一致性检查;这在图的左侧在最后的块中示出。一种可能性在于:通过模运算来重新获得各个组成部分:
114.·
tracer
c mod a=9
115.·
tracer
c mod r=6
116.这些能够随后被与期望的值进行比较:
117.·
(tracer
c-d
tracer
)mod r=0
118.·
tracercmod a=(∑d
x
)mod a
119.为了避免/管理溢出,能够例如通过tracerc:=tracer
c mod a*r限制跟踪器的值。d
tracer
的安全计算根据编码处理中的已知的方法进行。在此,在形成d
tracer
时,直接包括所有与执行相关的条件。
120.在一致性检查的结果是否定之后,能够进行相应的预编程的反应或错误处理。在此,在一个简单的情况下,底层系统被转移到安全状态(例如紧急停止)和/或输出警告消息。
技术特征:
1.一种用于在面向安全的计算机程序中将多个事件记录在编码跟踪器变量(tracer
c
)中的方法,其中,将每个事件作为值记录在所述编码跟踪器变量(tracer
c
)中,其特征在于,为了同时记录多个事件,首先从用于所述事件的所述值计算出总值,然后将所述总值记录在所述编码跟踪器变量(tracer
c
)中。2.根据权利要求1所述的方法,其特征在于,将an、anb或anbd编码用于为所述编码跟踪器变量(tracer
c
)编码。3.根据前述权利要求中任一项所述的方法,其特征在于,将所述事件作为编码值记录在所述编码跟踪器变量(tracer
c
)中。4.根据前述权利要求中任一项所述的方法,其特征在于,将所述事件记录在所述编码跟踪器变量(tracer
c
)的签名中。5.根据前述权利要求中任一项所述的方法,其特征在于,为每个事件或为每种类型的事件限定常数(a;r),其中,所述常数(a;r)表示适用于所述事件的值。6.根据权利要求5所述的方法,其特征在于,将不同事件的或不同类型的所述常数(a;r)选择为彼此互质。7.根据前述权利要求中任一项所述的方法,其特征在于,所述计算机程序对所述跟踪器变量(tracer
c
)进行一致性检查,其中,至少在不一致的情况下进行错误处理。8.根据前述权利要求中任一项所述的方法,其特征在于,分别将用于所述事件的期望值(δk
a
;δk
r
)与所述事件一起记录在所述编码跟踪器变量(tracer
c
)中。9.一种用于在面向安全的计算机程序中将多个事件记录在编码跟踪器变量(tracer
c
)中的装置,其特征在于,所述装置设置用于执行根据权利要求1所述的方法。10.一种用于在面向安全的计算机程序中将多个事件记录在编码跟踪器变量(tracer
c
)中的计算机程序产品,其中,当在装置、尤其计算机上或在工业自动化组件上执行所述计算机程序产品时,所述计算机程序产品设置用于执行根据权利要求1所述的方法。
技术总结
本发明涉及用于在面向安全的计算机程序中将多个事件记录在编码跟踪器变量(Tracer
技术研发人员:卡尔-赫尔曼
受保护的技术使用者:西门子股份公司
技术研发日:2021.09.03
技术公布日:2023/8/9
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
