掌桥专利:专业的专利平台
掌桥专利
首页

创建和应用用于计算过程的检查算法的方法和计算环境

文献发布时间:2023-06-19 19:37:02


创建和应用用于计算过程的检查算法的方法和计算环境

技术领域

本发明涉及一种用于创建针对在计算环境中处理应用的计算机辅助检查算法的方法,计算环境具有至少一个主机,用于安装在所述至少一个主机上的多个应用程序的执行,这在考虑用于应用程序的配置数据的情况下进行。此外本发明涉及一种用于在计算环境中计算机辅助处理应用的方法,具有至少一个主机,通过安装在所述至少一个主机上的多个应用程序的执行,在考虑用于应用程序的配置数据的情况下。此外,本发明涉及具有一个或多个主机的安全相关的计算环境。最后,本发明涉及一种计算机程序产品以及一种用于所述计算机程序产品的提供装置,其中,所述计算机程序产品装备有用于执行所述方法的程序指令。

背景技术

基本上计算机辅助地在安全相关的计算环境中运行的安全相关的系统必须保证使用正确的、配置有正确的配置数据的软件。在此,既不允许使用其他软件也不允许使用其他配置数据,也不允许使用不同于规定的硬件组件(主机)的装置。在本发明的范畴中,安全相关理解为对于系统的运行安全的相关(也称为Safety)。例如,铁路应用是上述术语范畴中的安全相关的系统。

为了保护安全相关的计算环境已知的是,在计算机上可靠地仅安装用于处理有关应用的组件。这此外意味着,软件的旧版本在更新后必须从计算环境完全删除。这例如可以以此实现,出于存储容量的原因,提供的存储空间不允许并行存储两个版本的软件。为此,硬件必须至少在存储容量方面准确适配于在计算环境中运行的软件。

按照专利文献WO 2014/00924382已知一种方法和计算机,其具有用于在由计算机形成的计算环境中处理应用的检查算法。在计算机上安装有冗余地执行的应用程序,因此检查算法可以通过比较计算结果发现错误(一般也称为投票)。然而这种检查只包括计算的结果。例如只有当硬件错误作用于计算结果使得产生不同的计算结果时,才能发现硬件错误。然而如果硬件问题在并行执行的计算中并行地导致相同的错误,则这种错误不被发现。

发明内容

本发明要解决的技术问题是提供一种用于计算机辅助地创建用于在计算环境(或者说计算环境系统、计算环境设备)中处理应用的检查算法的方法,以及一种用于在计算环境中处理应用的方法,通过该方法可以在合理的计算成本下尽可能全面地检查应用的无错误的处理。此外,本发明要解决的技术问题是提供一种安全相关的计算环境,其具有一个或多个主机,其中可以在合理的计算成本下尽可能全面地检查应用的无错误的处理。此外,本发明要解决的技术问题是提供一种计算机程序产品以及用于该计算机程序产品的提供装置,通过所述计算机程序产品可以执行上述方法。

上述技术问题根据本发明通过开始所述内容(方法)以此解决,即对于每个应用程序将说明应用程序的数据结合(或称为合并、归纳)为数据段,并将与相关应用程序有关的配置数据结合为数据段,并且然后将多个应用程序的数据段和相关的配置数据(即分别与确定的应用程序有关的配置数据作为数据段)结合在数据项中。在创建检查算法时执行步骤,以识别数据项(必要时多个数据项)并为其分配全局ID码并且识别计算环境的参与执行数据项的应用程序的执行的组件。在此为每个被识别为组件的主机分别分配主机ID码或读取分配的主机ID码并且为被识别为组件的应用程序分配程序ID码或读取分配的程序ID码。对数据项中包含的每个数据段应用哈希函数并分别产生哈希值。然后创建应用于每个数据段的计算函数,方式是通过计算运算符将参与的主机的主机ID码、参与的应用程序的程序ID码、相关数据段的哈希值和全局ID码相互关联,并且然后计算互补码作为计算函数的结果并存储。由此创建适用于每个数据段的检查函数,方式是将参与的主机的主机ID码、参与的应用程序的程序ID、相关数据段的哈希值和相对于数据段计算的互补码通过计算运算符相互关联,其中可以计算全局ID码作为结果。

所分配的ID码必须是明确的或者说唯一的,以确保可靠地识别被标识的组件,即硬件组件(主机、存储装置)或软件组件(程序复合体、程序、子程序、配置数据)。这例如可以分别通过数字代码的一次性分发实现,数字代码的分发被监视,使得分发过一次的数字代码不能再次分发。能实现该作用的程序例程是充分已知的。另一种可行性是分发足够大的随机数(对此在下文进一步说明)。

结合本发明所述的ID码在此指的是全局ID码、主机ID码、程序ID码、子程序ID码和程序复合体ID码。对适用于所有这些码的表述上位地使用术语ID码。

有利的是,根据本发明的方法可以在多个计算机上分布地执行。因此,不仅可以使用一个主机,而是可以使用多个主机处理通过数据项定义的任务。在此一个主机或多个参与的主机是计算环境的一部分。用于创建检查算法的方法为此构成前提,检查算法以此可以在处理由数据项定义的任务时使用。这由一种也是根据本发明的用于在计算环境中计算机辅助地处理应用的方法保证(对此在下文进一步说明)。有利的是,在此可以使用商业计算机,即所谓的COTS组件(COTS代表Commercial of the Shelf)。

称为应用程序的是承担确定的任务(应用)的程序。基本上可以分为两类应用程序。一些应用程序确定用于解决连同计算环境在外部(即在计算环境之外)解决的任务。这例如可以是铁路应用的控制组件。这种应用程序也称为使用程序。它指的是,计算环境应当为处理外部任务而作用。

第二类应用程序涉及组织计算环境的功能所需的应用程序。在此可以是计算环境运行所需的服务程序。它们例如可以是实现各个主机之间通信的程序。

针对当前应用情况的独特要求配置应用程序的数据应被理解为配置数据。配置包括不同应用程序的相互配合,以及应用程序在所安装的硬件组件上的功能。此外,配置还包含针对当前应用情况的适配,相关应用程序被设想用于这些应用情况(例如,在不同应用情况下可以不同的参数)。

在本申请范畴中的数据项应理解为数据的集合,其范围是明确定义的。尤其数据项可以通过寻址明确地从数据载体中读出或写入数据载体。数据项由多个数据段构成,它们共同形成数据项。数据段也是这样寻址的,即它们可以明确地从数据载体中读出或写入数据载体。根据本发明,程序和配置数据可以由一个(这指的是至少一个)数据段说明并存储在数据载体上。

因此通过寻址,数据段的开始和数据段的结束被明确地定义。因为数据项由多个数据段构成,所以数据项的开始和结束也是明确地定义的。这意味着数据项以及甚至单个数据段可以从数据载体上读取并且总是具有相同的内容。这实现的可行性是,识别数据项中意外出现的错误(例如Bitkipper)。例如,哈希函数可以应用于数据段,在没有出现错误的前提下数据段一定总是得到相同的哈希值。由此可以得出结论,如果哈希值变化,则数据段中就存在错误。

换句话说,通过使用哈希函数可以确定存储数据的原则上不应改变的完整性。因为这意味着通过哈希函数确定的哈希值不允许改变。

额外地,例如如果使用了错的应用程序或确定的应用程序的错的版本或应用程序的错的配置数据,也会出现错误。这也适用于应用程序的子程序或呈现不同应用程序的组合的程序复合体。子程序和程序复合体也可以与本身也不允许改变的配置数据相关联。

与数据段必须被监视无关的是,也需要监视正确的硬件组件以及正确的软件组件的使用。根据本发明这通过定义的数量的硬件组件和软件组件参与处理由对应的数据项预先确定的应用实现,给硬件组件和软件组件分别分配有ID码。然后在处理任务时可以通过数据项检查ID码。如果ID码不正确,可以输出错误。

根据本发明,对任务(应用)的无错误处理的检查应由检查算法实现,该算法为此具有检查函数(在下文中进一步说明检查算法的应用)。为了创建检查函数,根据本发明的方法根据本发明使用计算函数创建计算机辅助检查算法。在这个计算函数中,所有参与的硬件组件和软件组件的ID码对于数据项中使用的每个数据段和属于相应数据段的哈希值都通过计算运算符相互关联。相对于全局ID码实现与另外的计算运算符的关联,所述全局ID码与通过待检查的数据段形成的数据项对应。因此可以通过执行以此确定的计算函数计算出结果,其结合本发明称为互补码。

互补码用于建立检查函数。在检查函数中,所有涉及的硬件组件和软件组件的ID码都由上述计算运算符相互关联,与计算函数不同的是所述ID码不是全局ID码,而是相关数据段的互补码。这意味着,在应用的处理中没有错误的前提下,确切而言针对数据项的所有被检查的数据段,通过应用检查函数必须构成全局ID码。针对所有检查函数作为结果总是可以确定相应数据项的全局ID码,这由分别通过计算函数产生的互补码确保。

因此,根据本发明检查函数实现了可靠的可能性,以通过相对较少的计算成本针对处理应用检查计算环境的无错误的配置(在正确的、规定用于此的硬件上的正确和未篡改的软件)。在此,检查包括硬件组件和软件组件,所述软件组件的数据在处理应用时没有改变。然而由于这些数据可以随机改变,因此这通过应用哈希函数确保,所述哈希函数发现意外的数据变化。正确的硬件组件和软件组件的使用此外也由ID码保证,所述ID码保证了对所使用的硬件组件和软件组件的明确识别。

仅仅应通过计算环境的应用改变的数据(计算结果、数字化的测量值、输入、应用的可变的待考虑的要求)不能通过根据本发明的检查函数检查。然而这些数据可以以已知方式通过建立冗余保护。例如可以在多个、优选三个平行的过程流程中计算这些数据,并且然后在投票的情况下比较结果。所述结果仅在至少多数被比较的结果一致时才被认为可信。在此,通过计算环境平行地处理应用尤其可以通过在计算环境中三个平行处理的数据项执行。由此可以有利地保证,一个数据项的处理可以分别无反馈地相对于其他处理执行。以此可以有利地尽可能减小在处理一个数据项中出现错误也影响其他数据项的处理的可能性。

当然不完全排除相互影响的可能性,因为例如在一个主机中的参与多个数据项的处理的硬件错误也可以平行地作用在多个处理过程上。因此改进潜力仅在于错误从一个数据项的处理过程转移到其他数据项。然而若每个数据项都在其他主机上被处理,可以有利地进一步减小硬件错误作用到多个数据项的处理上的可能性。

术语“计算机辅助”或者“计算机实施”结合本发明理解为方法的实施,其中,至少一个计算机或者处理器执行方法的至少一个方法步骤。

术语“计算环境”结合本发明理解为由计算机、程序和存储的数据构成的设施,其用于处理应用,所述应用须完成任务。

表述“主机”或者“计算机”(结合本发明,计算机是主机的同义词)包括所有具有数据处理特性的电子设备。计算机例如可以是个人计算机、服务器、掌上计算机、移动无线电设备和其他计算机辅助地处理数据的通信设备、处理器和其他用于数据处理的电子设备,其可以优选也连接成构成计算环境的网络。

术语“处理器”结合本发明例如可以理解为用于产生测量信号的转换器、传感器或者电子电路。处理器尤其可以是主处理器(英语为Central Processing Unit,CPU)、微处理器、微控制器或者数字信号处理器,可以结合用于存储程序指令的存储单元,等等。处理器也可以理解为虚拟化的处理器或者Soft-CPU。

术语“存储单元”结合本发明例如理解为计算机可读的存储器,形式为工作存储器(英语为Random-Access Memory,RAM)或者数据存储器(硬盘或者数据载体)。

术语“接口”可以通过硬件技术、例如有线或者作为无线电连接实现,和/或可以通过软件技术、例如作为一个或多个计算机程序的单个程序模块或者程序部分之间的交互作用。

术语“云”理解为用于“云计算”的环境。指的是一种IT设施,其通过网络接口,例如互联网实现。其通常包括在使用云的本地计算机上不必安装的存储空间、计算能力或者软件作为服务。在云计算的范畴内提供的服务包括信息技术的整个范围并且还包含设施、平台和软件。

术语“程序模块”应理解为单个功能单元,其实现方法步骤的根据本发明的程序流程。该功能单元可以在唯一一个计算机程序中实现或者在多个相互通信的计算机程序中实现。在此实现的接口可以通过软件技术在唯一一个处理器中实施或者在使用多个处理器时通过硬件技术实施。

如果在下文中没有相反指示,术语“创建”、“确定”、“计算”、“生成”、“配置”、“编辑”等等优选涉及产生和/或改变数据和/或将数据转化成其他数据的过程。在此数据尤其作为物理量存在,例如作为电脉冲或者作为测量值存在。需要的指令程序命令在计算机程序中结合成软件。此外,术语“发送”、“接收”、“读入”、“读出”、“传输”等是指各个硬件组件和/或软件组件通过接口的配合。

根据本发明的一种设计方案规定,至少一个应用程序具有多个子程序,其中,对于每个子程序,说明该子程序的数据结合为数据段,并将与相关子程序有关的配置数据结合为数据段,给识别为组件的子程序分配子程序ID码或者读取分配的子程序ID码,在创建计算函数和检查函数时,额外地通过计算运算符关联参与的子程序的子程序ID码。

子程序在本发明的范畴中以此理解为较小的单元,如程序模块,其整体构成应用程序。因此有利的是可以模块化地构建应用程序,即例如规定在多个应用程序中使用的程序模块。在此,这些子程序可以根据其使用配置具有不同的配置数据。因此子程序使得能更加容易地创建应用程序,并且以此使计算环境更容易适配于应用情况。

根据本发明的一种设计方案规定,多个应用程序结合成程序复合体,其中,对于每个程序复合体,说明该程序复合体的数据结合为数据段,并将与相关程序复合体有关的配置数据结合为数据段,给识别为组件的程序复合体分配复合体ID码或者读取分配的复合体ID码,在创建计算函数和检查函数时,额外地通过计算运算符关联参与的程序复合体的复合体ID码。

因此,程序复合体组合了多个应用程序,这些应用程序的共同处理可以在应用程序的整体方面被组合。尤其可以规定,包含在数据项中的所有应用程序组合成程序复合体。在此考虑到的情况是,数据项在待应用的数据方面引起数据段的结合,而与此并行地,程序复合体汇集相应的应用程序,数据段被分配给所述应用程序。

应用程序也可以形成程序模块,而这种情况下程序复合体由这些程序模块的汇总构成。换句话说,可以在多个层上使用程序模块。

在创建程序复合体、应用程序和子程序方面,应该注意,可以分别将配置数据分别分配给程序复合体、应用程序以及子程序。在此会出现相同内容的确定的数据被多次存储,其中,它们分别构成数据段,这些数据段又可以被明确地分配给程序复合体、应用程序或子程序。在此重要的是明确的分配的可行性,以便有明确的可寻址的数据段可用于创建检查函数。由于数据段本身由不可改变的数据构成,所以子程序、应用程序和程序复合体根据需要访问不同的地址以调取相同内容的数据,这对应用的处理流程是无害的。若应用所有检查函数得到预期的全局ID码,就可以认为应用的配置中没有错误(即由于存储数据的破坏、错误的加载、相对于硬件的错误分配等等)。

按照本发明的一种设计方案规定,使用UUID作为主机ID码和/或程序ID码和/或子程序ID码和/或系统ID码。

通用唯一识别码(UUID)是128位的数,用于识别计算机系统中的信息。术语全局唯一标识符(GUID)也被使用并且在本发明的范畴中包括在术语UUID中。在按照标准方法生成时,UUIDs可以针对实际目的有利地被认为是全局明确的。尽管UUID重复的概率不是零,但它非常小,以至于冲突的概率可以忽略。因此,UUID也可用于安全相关的应用,例如在铁路技术中,其中定义不同的要遵守的SIL(安全完整性等级)。

UUID的另一个优点是独立于中央的登记位置或各部分,如一个或多个主机或计算机、系统、程序和子程序之间的协调(与大多其他编号方法不同)。这是由(伪)随机生成的UUID实现的。在此所有没有被UUID格式设置为固定值的位都通过(伪)随机值占据。尽管针对这样生成的UUID不保证唯一性,但可以随机生成的UUID的总数非常大,使得若使用的随机数算法提供分布均匀的随机数,则生成两个相同的UUID的概率可以忽略。因此,UUID可以任意地在没有中央控制机构的情况下生成并用于标识,而不存在同一UUID用于其他位置的相关风险。

按照本发明的一种设计方案规定,使用MD5算法作为哈希函数。

消息摘要算法5(MD5-Algorithmus)是广泛使用的密码哈希函数,它从任意消息(在本发明的范畴中由数据段形成)中产生128位的哈希值。这例如允许容易检查数据调用的正确性。它是1991年由麻省理工学院的Ronald L.Rivest开发的一系列密码哈希函数的代表,那时分析表明其前身MD4可能是不安全的。MD5现在也不再被认为是保险的(在安全意义上),因为基本上可以生成具有相同MD5哈希值的不同消息。

然而,两个消息偶然得到同一哈希值的概率非常低。因此,该方法有利地适用于以足够的概率为每个消息,即每个数据段生成不同的哈希值,使得该方法适合于安全相关的应用,如铁路运营,尤其如果铁路应用被额外保护防止未经授权的第三方访问。这就排除了胡乱地执行生成相同的哈希值。

相对于从不同的消息产生相同的哈希值的高安全性是所有密码哈希函数的共同的特性。这本身的动机在于与加密相关的相对于恶意攻击的高安全性的要求。然而该特性对于根据本发明的使用不是重点。计算环境相对于恶意攻击只是向外保护。在计算环境内部只需要给数据段产生明确的哈希值,这例如通过MD5算法保证。

根据本发明的一种设计方案规定,与组件对应的ID码和产生的哈希值具有相同的位长,其中,针对所述ID码和所述哈希值的每个位构建检查函数,分别计算互补位,从互补位的总体计算出具有同一位长的互补码并存储。

尤其如果使用MD5算法作为哈希函数并使用UUID作为ID码,则互补码可以具有128位的长度。检查函数的以位的方式的应用(优选在以位的方式应用计算函数的情况下以位的方式创建检查函数)具有的优点是,由此可以使用简单的检查方程系统作为检查函数,通过其可以实现较短的计算时间。因此计算可以快速和节省资源地执行。

按照本发明的一种设计方案规定,ID码、哈希值和互补码通过XOR运算符相互关联。

XOR运算符也称为“异或”。这在信息技术上表示,如果XOR运算符的输入不同地配设0和1,则产生1作为该运算符的输出。如果运算符的输入相同地配设,即两个都是0或1,则输出产生0。

XOR运算符有利地特别适用于哈希值以及ID码的以位的方式的比较。该关联导致关联的位如果不同,则得出1,如果相同则得出0。然后将分别确定的结果与下一个关联的运算对象比较。在此特别有利的是,从计算方程计算出互补码后从计算函数中以位的方式计算检查方程,检查方程共同构成检查函数。检查方程因此使用于有关数据段的以位的方式的检查。

根据所考虑的ID码例如可以创建计算函数

HID x KID x PID x TID x HASH x GID=KC

其中,检查函数例如

HID x KID x PID x TID x HASH x KC=GID

其中,

HID 主机ID码,例如作为UUID

KID 复合体ID码,例如作为UUID

PID 程序ID码,例如作为UUID

TID 子程序ID码,例如作为UUID

HASH 哈希值,例如通过MD5算法确定

KC 互补码,例如长度为128位

GID 全局ID码,例如作为UUID

x 计算运算符,例如XOR-运算符

其中,在存在多个主机ID码、复合体ID码、程序ID码或程序ID码时,实现有关类型的ID码的多重关联,

其中,基本功能从计算函数在计算互补码后通过互补码与全局ID码的互换得出,使得功能可以以此被应用,即检查通过插入相关的ID码、哈希值和互补码是否得到相关数据段的全局ID码,

其中,计算函数和检查函数针对每个位作为计算方程和检查方程被应用,

其中,如果没使用复合体ID码和/或子程序ID码,则计算函数和检查函数就相应简化。

上述技术问题替选地根据本发明通过开始所述内容(方法)以此解决,对于每个应用程序,说明应用程序的数据和与有关应用程序有关的配置数据分别结合成数据段,多个应用程序和配置数据的数据段结合在数据项中,

其中,使用根据上述方法创建的检查算法,以便针对数据段计算相关检查函数的结果,输出该结果或与全局ID码比较并输出比较结果。

因此后一种方法是检查算法的应用,其中,在前一种方法中产生的检查函数被用于检查用于计算机辅助处理应用的方法。由此实现上文已述的优点,在此不再重复介绍。可行的是,在执行方法时对流程进行检验看是否有错误。这通过应用检查算法实现,所述检查算法在数据段的使用无错并且硬件组件以及软件组件的选择无错时,必须产生全局ID码作为结果。相反,若应用检查函数的结果不是全局ID码,则认为有错误。

因此,为了识别错误,输出检查函数的结果。然而存在不同的措施,以便在计算机辅助地处理应用时识别错误。

可行的是,比较数据项的数据段的检查函数的所有产生的结果。对于数据项的数据段,这必须始终总是得到同一全局ID码。由于检查函数应用于每个数据段,所以提供多个结果,使得如果不同的检查函数的所有结果都相同,即使不知道全局ID码也可以间接得出计算环境的配置没有错误的结论。

如果一些结果有偏差,但大多数检查函数得到同一结果,则可以识别其中存在错误的数据段。在此基础上可以引入适当的措施(对此在下文进一步说明)。对于所述大多数结果可以认为有关的数据段是没有错误的并与正确的硬件组件以及软件组件关联。一个有偏差的计算出的全局ID码就足以认为是针对整个配置的错误。

另一种可行性在于,将检查函数相应的结果与先前确定的全局ID码比较。然而其必须针对这种比较是可调用的。因此在产生这种比较结果时,全局ID码是已知的。为了防止其在计算机辅助处理应用时因错误而在处理检查函数时使用,其可以存储在计算环境的由硬件或软件保护的区域中,其中,与通过检查函数产生的结果的比较优选也可以在这个受保护的区域中进行。

根据本发明的一种设计方案规定,至少一个应用程序具有多个子程序,其中,对于每个子程序,说明该子程序的数据结合为数据段,并将与相关子程序有关的配置数据结合为数据段,给识别为组件的子程序分配子程序ID码或者读取分配的子程序ID码,在检查函数的计算中,额外地通过计算运算符关联参与的子程序的子程序ID码。

根据本发明的一种设计方案规定,多个应用程序结合成程序复合体,其中,对于每个程序复合体,说明该程序复合体的数据结合为数据段,并将与相关程序复合体有关的配置数据结合为数据段,在检查函数的计算中,额外地通过计算运算符关联参与的程序复合体的复合体ID码。

上文已经解释了子程序以及程序复合体的定义和使用有关的优点,在此不再重复。

根据本发明的一种设计方案规定,数据从应用程序和/或子程序和/或程序复合体中的第一个传输到应用程序和/或子程序和/或程序复合体中的第二个,其中,数据与相关检查函数的结果一起被传输,若与数据传输的应用程序和/或子程序和/或程序复合体中的第一个的检查函数的结果与应用程序和/或子程序和/或程序复合体中的第二个的检查函数的结果一致,数据才被应用程序和/或子程序和/或程序复合体中的第二个处理,或者对于从预定的安全级起的应用才被处理。

严格地,检查函数适用于说明有关应用程序的数据段。然而由于数据段也与其执行产生必须与其他应用程序交换的可变数据的应用程序关联,因此需要由接收数据的应用程序检查是否可以认为传输的数据的产生无错误。由于接收的应用程序可以应用与其数据段相关的检查函数,因此可以将结果与接收数据的应用程序(数据段)的结果进行比较。在一致时,在执行的应用程序(数据段)中出现错误的概率很低。因此可以在传输时并行地进行检查或至少在传输后紧接着进行检查。

在上述检查函数的结果有偏差时,替选地可以不允许或至少中断对数据的进一步处理,或者仅对于达到或超过预定的安全级的应用程序不允许或至少中断。这具有的优点是,相关的应用程序的计算能力可以继续用于与安全无关的应用。换句话说这意味着,如果出现的错误(如程序崩溃)不包含安全相关的风险(在铁路应用的情况下,安全相关的风险是例如火车碰撞或其他事故),则应用程序可以被执行。

根据本发明的一种设计方案规定,若与数据传输的应用程序和/或子程序和/或程序复合体中的第一个的检查函数的结果与应用程序和/或子程序和/或程序复合体中的第二个的检查函数的结果不一致,则停止应用程序和/或子程序和/或程序复合体中的第一个和第二个,或将针对该应用程序和/或子程序和/或程序复合体识别的主机关机。

通过停止程序运行或关闭识别的主机,可以有利地有效防止应用的错误处理继续进行。然后相关的应用程序(包括子程序、程序复合体)也可以重新启动,或者相关的主机可以重新开机。尤其如果应用程序是冗余执行的,以便能够对产生的可变数据进行后续的投票,那么在个别应用程序或主机重新启动期间,例如铁路应用的运行可以继续。一旦其可以运行就会被重新结合到冗余的运行中。根据产生的结果,可以在使用检查函数的情况下立即检查该措施是否消除了出现的错误。如果没有,就必须引入进一步的措施。例如可以要求维护技术员采取维护措施。

根据本发明的一种设计方案规定,在包含多个应用程序和/或子程序和/或程序复合体之间的交互的处理过程开始之前,该多个应用程序和/或子程序和/或程序复合体的检查函数的结果被相互比较,并且如果检查函数的所有结果都一致才允许应用程序和/或子程序和/或程序复合体之间的数据的传输或从预定的安全级起才允许,或者只允许其检查函数的结果与检查函数的大多数结果相应的应用程序和/或子程序和/或程序复合体之间数据传输。

处理过程本身优选也由负责的应用程序控制。该应用程序因此包含参与处理过程的多个应用程序的交互。在此,在相关的应用程序之间进行数据传输,如上文所述。负责控制处理过程的应用程序也可以包含执行对有关应用程序的检查函数的结果是否一致的检查的例程。

有利的是,在应用程序产生和交换可变的数据(在处理过程需要的使用数据的范畴中)之前,就通过检查函数实现应用程序的检查。由此可以从开始就不允许可能产生错误数据的处理过程。然而实现检查函数的应用并且相关的数据交换自然发生的服务程序的处理对于例如用于控制铁路运行的应用的实际处理过程是不相关的。其甚至在处理过程开始之后在后台运行。

根据本发明的一种设计方案规定,如果不是检查函数的所有结果都一致,则阻止其检查函数的结果与大多数检查函数的结果有偏差的至少一个应用程序和/或子程序和/或至少一个程序复合体,或者阻止针对该至少一个应用程序和/或子程序和/或至少一个程序复合体识别的主机执行该至少一个应用程序和/或至少一个子程序和/或至少一个程序复合体(PK1...PK4)。

根据本发明的一种设计方案规定,与组件对应的ID码和产生的哈希值具有相同的位长,其中,针对所述ID码和所述哈希值和所述互补码的每个位构建检查函数,分别计算结果位,从结果位的总体计算出具有同一位长的检查函数结果并存储。

上述技术问题替选地根据本发明通过开始所述内容(安全相关的计算环境)以此解决,即一个主机或者全部主机设置用于执行按照上述权利要求之一所述的方法。

在尤其规定用于铁路应用的安全相关的计算环境中使用上述根据本发明的方法产生了已经在根据本发明的方法的范围中已经解释过的优点。关于根据本发明的方法已经介绍的内容相应地也适用于根据本发明的计算环境。

此外还要求保护一种带有用于执行根据本发明的方法和/或其实施例的程序指令的计算机程序产品,其中通过计算机程序产品可以分别执行根据本发明的方法和/或其实施例。

此外还要求保护一种用于存储和/或提供计算机程序产品的提供装置。提供装置是例如存储和/或提供计算机程序产品的存储单元。替选地或者额外地,提供装置是例如网络服务、计算机系统、服务器系统,尤其分布的、例如基于云的计算机系统和/或虚拟计算机系统,其优选地以数据流的形式存储和/或提供计算机程序产品。

该提供以计算机程序产品的程序数据块的形式作为文件,尤其下载文件,或作为数据流,尤其下载数据流实现。然而,这种提供也可以例如作为由多个部分构成的局部下载实现。这种计算机程序产品例如在使用提供装置的情况下被读入系统中,使得根据本发明的方法在计算机上执行。

附图说明

下面根据附图说明本发明的其他细节。相同或者相应的图中元件分别配设相同的附图标记,并且仅被重复阐述以说明在单个附图之间的区别。

下文所述的实施例是本发明的优选实施方式。在这些实施例中,实施方式的所述组成部分分别是本发明单独的、相互无关联地讨论的特征,这些特征也分别相互无关联地改进本发明,并且以此也单独地或者以与所示组合不同的方式构成本发明的组成部分。此外,所述组成部分也能与本发明的已述特征结合。

其中:

图1示意性地示出具有根据本发明的计算环境的实施例连同其关联的铁路应用,

图2作为框图示出根据图1的铁路应用中具有两个主机的计算环境的实施例,其中各个功能单元包含程序模块,程序模块可以分别在一个或多个处理器中运行并且接口可以相应地通过软件技术或硬件技术设计,

图3作为流程图示出根据本发明的方法的实施例,其中,各个方法步骤可以通过程序模块单独或以组实现,并且其中,根据图2的功能单元和接口示例地表示。

具体实施方式

图1示意性地示出由计算环境RU控制的铁路应用。铁路应用具有轨道GL,其上示例性示出联锁技术(Stellwerkstechnik或称为信号塔技术)的不同组件。它在此是道岔驱动装置WA,它可以调整道岔WH。此外,在其中一条轨道上安装有应答器BL,借助该应答器可以与经过应答器的列车交换信息。最后示出光信号装置LS,光信号装置由控制器CL控制。

计算机环境RU可以具有不同的主机HR1、HR2、HR3,用于控制铁路应用的应用以应用程序的形式分布在主机上(对此在下文进一步说明)。第一主机HR1由计算中心RZ提供并且通过第一接口S1与第一存储装置SE1连接。计算中心RZ例如可以由铁路运营商的服务提供商或铁路运营商本身运营。第一主机HR1通过第二接口S2与云CLD连接,使得第一主机不在本地绑定铁路应用。

铁路运营商的控制中心LZ包含第二主机HR2,第二主机也通过第三接口S3与云CLD连接。此外,第二主机HR2通过第四接口S4与第二存储装置SE2连接。

此外计算机环境RU例如具有联锁设备STW,其包含第三主机HR3,第三主机通过第六接口S6与第三存储装置SE3连接。此外,第三主机HR3具有用于第二主机HR2的第五接口S5。主机HR3也可以以未示出的方式与云CLD连接。第三主机HR3还具有用于道岔驱动装置WA的第七接口S7、用于控制器CL的第八接口S8和用于应答器BL的第九接口S9。

根据图1,所有接口S1...S9基本上是有线的或者甚至通过无线传输技术例如无线电实现。主机HR1...HR3的布局仅是示例性的并且可以在更复杂的铁路设施中任意扩展。计算环境以此定义,即参与的主机HR1...HR3可以相互通信并且以此将应用在考虑可用计算能力的情况下分布地在主机HR1...HR3上处理。

图2示例性示出根据图1的第一主机HR1和第二主机HR2的配置。可以类似地实现其他主机的接入。主机是这样被组织的,即确定用于解决问题的任务复合体以程序复合体PK1、PK2、PK3、PK4的形式在主机上组织,所述程序复合体由单个应用程序AP1...AP5构成。此外根据第五应用程序AP5表明,其可以通过单个子程序实现。第五应用程序AP5的子程序是网关GW,投票器VT,时钟发生器TG和消息代理MB(Message Broker)(对此在下文进一步说明)。然而这只能作为示例理解。替选地,时钟发生器可以在其他(非安全的)应用中运行,而所述其余的子程序则在(安全的)应用中运行。

第五应用程序AP5在所有程序复合体PK1...PK4中以同样的方式组织。可以通过网关GW与云CLD交换消息。因此网关GW根据图1形成接口S2和S3。消息通过消息代理MB在程序复合体PK1...PK4内分布,优选根据发布-订阅方法。例如网关GW使用接口S14将收到的消息通过消息代理MB提供给复制体RP1...RP8。其然后由复制体RP1...RP8调用。这通过节点KN表示的,其在接口S14(同样在下文所述的其他接口S10...S13)中表示。

在图2中为了清楚起见,程序复合体PK1...PK4分别完全在主机HR1...HR2中实现。在现实中,带有应用程序和子程序的程序复合体也可以在多个主机上分布地运行(未示出)。这有利地使得,若主机的能力不能为整个程序复合体的配置提供足够的容量时利用多个主机的能力,方式是为有关程序复合体共同地使用多个主机的能力。

程序复合体例如可以规定用于确定的任务复合体。程序复合体例如可以用于控制确定的铁路组件(信号、联锁、道岔、车轴计数器等)。为了控制这些铁路组件一般需要多个应用程序。尤其也需要上文已经解释过的应用程序AP5,以确保应用的安全执行以及与其他主机的通信。

在本发明的范畴中,复制体理解为在主机HR1...HR3上的软件实现,它允许并行处理应用程序AP1...AP4,优选在程序复合体PK1...PK4内部。图2中示出程序复合体分别带有两个复制体,但优选使用三个复制体,也可以想到更多的复制体。在下文中,根据针对用于处理第一应用程序AP1的第一复制体RP1和第二复制体RP2的第一程序复合体PK1解释用于处理应用程序的方法。然而对于程序复合体PK2......PK4,处理过程相应运行,因此不必单独解释。

在第一复制体RP1和第二复制体RP2中,第一应用程序AP1被并行处理。它在此是应用程序,其根据图1承担用于铁路应用的任务。此外在第一复制体RP1和第二复制体RP2中提供第一配置数据KD1,第一配置数据对于执行第一应用程序AP1以处理铁路应用的独特任务是需要的。例如第一应用程序AP1一般可用于控制光信号装置,其中,第一配置数据KD1确保第一应用程序AP1应用到根据图1的光信号装置LS上。在此例如必须确保与根据图1的控制器CL的通信。

配置数据KD1...KD13也可用于所有其他程序复合体PK1...PK4、应用程序AP1...AP4以及子程序MB、TG、VT、GW。相应地,配置数据KD1...KD13包含分别对于程序复合体、应用程序和子程序所需的数据,以便其能够承担在相关应用情况中分配给它们的任务。在此配置数据分别是不可改变的并且因此可以存储在带有已知的开始和已知的结束的数据段中。同样,所有的程序复合体PK1...PK4,应用程序AP1...AP4以及子程序TG、VT、GW、MB都被存储为具有已知的开始和已知的结束的数据段。为此例如提供按照图1的第一存储装置SE1、第二存储装置SE2以及第三存储装置SE3。

在处理程序期间改变的数据在参与的部分之间作为消息被交换。为此提供信息代理MB,如上所述。此外,各个主机HR1、HR2通过外部的接口S2、S3例如通过云CLD相互通信,使得数据也可以在不同主机的不同程序复合体PK1...PK4之间交换。

根据图1,在铁路应用中的过程对于铁路应用的运行安全是安全相关的。这就是为什么第一应用程序AP1在第一复制体RP1和第二复制体RP2中并行地即冗余地处理的原因。第一复制体RP1和第二复制体RP2在处理应用时将结果发送到消息代理MB,确切而言第一复制体RP1通过第十一接口S11,第二复制体通过接口S12。这些结果通过所述接口由执行投票的投票器VT调用。只有当大多数结果一致时(即在两个复制体的情况下两个结果一致,在三个复制体的情况下至少两个结果一致,在四个复制体的情况下至少三个结果一致,等等),该结果才通过第十三接口S13提供给消息代理并可由网关GW通过第十三接口S13调用,以便通过第二接口S2传送到其他单元上。

为了将计算结果同时提供给通过投票器VT的投票,第一复制体RP1和第二复制体RP2中的进程通过时钟发生器TG控制节拍。时钟发生器通过第十接口S10提供时钟信号,时钟信号也可以通过消息代理MB从第一复制体RP1和第二复制体RP2调用。

通过第一应用程序AP1和第二应用程序AP2处理任务的所述方式通过第五应用程序AP5保证。第五应用程序AP5是内部的应用程序,其辅助主机HR1...HR3的运行。这就清楚地表明,不仅必须为根据图1的铁路应用的应用提供应用程序(使用程序),还必须为主机HR1...HR3中的应用处理提供应用程序(服务程序)。

将应用程序组合成程序复合体以及将应用程序分为子程序在此使得应用程序的汇总以及检查任务的处理是否有错误更容易。为此,数据结合成(通过定义数据段的开始以及数据段的结束)可以分别明确识别和寻址的数据段。如上文所述,子程序、应用程序、程序复合体以及分别对应的配置数据被定义为数据段。在此必要时,所需数据优选多重存储,以便数据段和配置文件可以分别明确分配给功能方程(计算函数)。换句话说,在这种情况下不发生的是,如果不同的应用程序使用相同的配置数据,则其访问用于数据的同一存储位置,而总是访问分别分配给它们的数据段,所述数据在所述数据段中提供。

图3中非常简化地示出用于创建计算机辅助检查算法的方法和其随后在用于计算机辅助处理的方法中的使用,连同通过检查函数检查使用的数据段。这种简化尤其在于递归循环的总结,这是出于清楚的目的。

用于创建检查函数的方法在例程中开始,例程带有针对数据段DF_DA的确定步骤和数据项DF_DS的确定步骤,数据项由一致的数据段组在下述意义上构成,即数据项的数据段的处理用于解决任务TSK。针对数据段DF_DA的确定步骤以及针对数据项DF_DS的确定步骤重复进行,直到针对预期任务TSK的所有数据段都被确定并适当地结合成数据项并且数据段DA和数据项DS被存储。为此进行查询步骤CPL?,确定所述步骤是否已经完全执行。

数据段DA以及数据项DS的确定这样实现,即数据段可以通过数据段的已知的开始以及数据段的已知的结束明确地被识别。不同的数据段DA汇总成数据项DS相应地是可以明确识别的。这意味着,数据段和数据项是精确定义的并且因此是可以寻址的,并且尤其可以在数据段上应用哈希函数以产生哈希值(对此在下文进一步说明)。

通过确定数据段DA,用于处理任务TSK所需的所有不可改变的数据都被明确地收集。在此是说明子程序、应用程序和程序复合体的数据(在此是可以由主机执行的程序代码)和在计算环境RU中相关程序针对相关应用情况配置的配置数据。

在另外的例程中,现在识别参与处理任务的硬件组件和软件组件。在此数据项是这样组织的,即数据项包含解决计划任务TSK的所有数据段,并且以此形成针对该例程中的识别的限制。具体来说,执行针对程序复合体ID_PK的识别步骤,针对应用程序ID_AP的识别步骤和针对子程序ID_TP的识别步骤。重复这些步骤,直到所有的硬件组件和软件组件都被识别。这由查询步骤CPL?检查是否已经执行了所有步骤。硬件组件和软件组件的识别尤其通过评估带有配置数据的数据段实现,因为其也包含针对待使用的硬件组件和软件组件的地址。

然后进行例程,其中确定针对过程函数PF的过程参数。其由针对全局ID码DA>GID的分配步骤构成,其中,相应数据段DA优选被分配UUID作为全局ID码。此外,所有已识别的硬件组件和软件组件都分别分配ID码,优选也是UUID。主机HR得到主机ID码,程序复合体PK得到复合ID码,应用程序AP得到程序ID码,子程序TP得到子程序ID码。此外在针对哈希值CLC_HW的计算步骤中,通过应用哈希函数,优选MD5算法给每个数据段DA分配哈希值。上述步骤重复进行,直到查询步骤CPL?显示针对所有数据段、硬件组件和软件组件的步骤都已执行。

在后续例程中现在针对所有数据创建和计算计算函数BF。在针对计算函数DA>BF的创建步骤中,与相应数据段相关的硬件组件和软件组件连同其相应的ID码被这样考虑,即通过运算符,尤其XOR运算符相互关联。此外,相关数据段DA的全局ID码被关联。

在后续针对互补码CL_KC的计算步骤中,互补码作为计算函数的结果被计算。这优选通过对ID码和哈希值的每个位的各一个方程实现,其在此情况下全都具有相同的位长。一旦计算出互补码KC,就可以在其帮助下在针对检查函数CLC_PF的计算步骤中创建相关的检查函数(同样优选以位的方式针对每个位通过方程创建,见上文),其中,已经确定的ID码以及相关数据段的哈希值与互补码关联,其中,该检查函数的结果是相关数据段的全局ID码。

通过查询CLP?检查是否已创建所有的过程函数。接着,过程函数由输出步骤OT_PF输出并在方法结束前存储。

用于计算机辅助处理应用的方法从选择任务TSK开始,其中,针对该任务使用合适的存储的数据项DS。具体而言,该数据项的针对任务所需的数据段被加载(这些数据段可以,但不一定是该数据项的所有数据段,但所有加载的数据段都属于所选的数据项),其中,在针对数据段SLC_DA的选择步骤中适当地选择所述数据段。在针对过程函数SLC_PF的另外的选择步骤中,下载针对加载的数据段DA计算的检查函数PF(哈希值、ID码、互补码、必要时还有全局ID码)。对于这些检查函数,在计算步骤CLC_RST中借助参数计算结果并且可选地开始查询结果RST是否与全局ID码GID一致。如果一致,则重复用于计算所有检查函数PF的结果的例程,直到查询CLP?显示所有检查函数都已计算。

所述可选的查询步骤RST=GID的前提是,全局ID码GID提供用于该方法。然后这必须在计算环境中以适当的方式存储。在此有利的是,限制对全局ID码的访问,全局ID码以此不能由于方法中的错误而在此所述的可选步骤之外使用。只有这样才能确保方法只通过由检查函数PF的应用得到的结果RST工作,并且其正确性在没有实际存在的全局ID码的情况下与其他计算的结果RST比较(对此在下文进一步说明)。

如果查询RST=GID显示相关的计算出的结果RST与全局ID码不一致,则在下个步骤中停止属于计算出的检查函数PF的应用程序AP并且优选通过重新启动STR_AP重新启动。然后再次询问RST=GID。如果结果现在是正确的,则计算下一个检查函数。如果结果不正确,则关闭主机并且在步骤STR_HR中重新启动主机HR。然后进行新的询问RST=GID。如果结果现在是正确的,则计算下一个过程函数,如果结果还不正确,则至少对相关主机停止该方法。接着需要并且执行进一步的维护措施,例如由维护技术员维护(未示出)。

如果上述查询CPL?显示所有的过程函数都已计算,则进行查询步骤RST=,其中查询所有计算结果RST是否有同一值。如果是,则可以在计算步骤CLC_TSK中开始任务TSK的处理。在此需要单个计算操作,此外还需要在单个主机、程序复合体、应用程序或子程序之间的针对数据的传输步骤TRS。如果在这些提到的组件之间传输数据,则数据与发送组件的相应检查函数的结果RST一起传输。对于接收组件,然后检查接收组件从发送组件收到的结果RST是否与接收组件有的结果RST一致。这是可行的,因为通过已经完成的识别,组件与相关的数据段DA关联。

如果结果相同,则在查询步骤CPL?中查询处理任务TSK的子步骤是否完全实现。如果是,则该方法结束并且可以通过新的TSK开始。如果不是,则下一个计算步骤CLC_TSK和其他需要的传输步骤TRS以递归执行。

若查询RST=具有否定的结果,则启动修复例程,其与上文给出的选项相似地运行。在STR_AP步骤中,应用程序AP停止并且优选进行应用程序的重新启动。然后重复查询RST=。如果结果RST与所使用的数据段DA的大部分结果一致,则可以重复计算步骤CLC_TSK或传输步骤TRS。如果结果与其他数据段的大部分结果不一致,可以关闭主机HR并在步骤STR_HR中再次启动。进行查询步骤,确定结果RST是否与数据段DA的大多数结果一致。如果是,则可以重复计算步骤CLC_TSK或传输步骤TRS。如果不是,则停止该方法。需要执行维护任务,例如由维护技术人员(未示出)执行。

附图标记列表:

LZ 控制中心

STW 联锁设备

RZ 计算中心

GL 轨道

WH 道岔

WA 道岔驱动装置

LS 光信号装置

CL 光信号装置的控制器

BL 应答器

RU 计算环境

HR1...HR3 主机

SE1...SE3 存储装置

S1...S14 接口

CLD 云

RP1...RP8 复制体

AP1...AP5 应用程序

PK1...PK4 程序复合体

KD1...KD13 配置数据

MB 消息代理

TG 时钟发生器

VT 选举器

GW 网关

KN 节点

DF_DA 针对数据段的确定步骤

DA 数据段

DF_DS 针对数据项的确定步骤

DS 数据项

CPL? 查询步骤完成?

ID_HR 针对主机的识别步骤

ID_PK 针对程序复合体的识别步骤

ID_AP 针对应用程序的识别步骤

ID_TP 针对子程序的识别步骤

DA>GID 针对全局ID码的分配步骤

HR、PK、AP、TP>ID 针对主机/复合体/程序/子程序的ID码的分配步骤

HID 主机ID码

KID 复合体ID码

PID 程序ID码

TIP 子程序ID码

CLC_HW 针对哈希值的步骤

DA>BF 针对计算函数的创建步骤

BF 计算函数

CLC_KC 针对互补码的计算步骤

CLC_PF 针对检查函数的计算步骤

PF 检查函数

OT_PF 输出步骤过程方程

TSK 任务

SLC_DA 针对数据段的选择步骤

SLC_PF 针对过程函数的选择步骤

CLC_RST 计算步骤结果过程方程

RST 结果

RST=GID 查询步骤结果=全局ID码

GID 全局ID码

RST=查询步骤的所有结果都相同?

CLC_TSK 针对任务的计算步骤

TRS 针对数据的传输步骤

RST=RST 查询步骤传输伙伴的结果相同

STR_AP 重新启动应用程序

STR_HR 重新启动主机

相关技术
  • 应用于云计算环境的基于用户意图检测的取证系统及方法
  • 应用于大区域水流的计算方法和计算系统
  • 用于创建用于对交通参与者进行计算机模拟的算法的方法、用于训练至少一个用于机动车的控制设备的算法的方法、计算机程序产品及机动车
  • 用于动态创建应用程序执行环境以保护所述应用程序的方法以及相关的计算机程序产品和计算装置
技术分类

06120115972265