数据保护用的方法和用于其实施的设备转让专利

申请号 : CN200680005988.4

文献号 : CN101128802B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·费斯拉格

申请人 : 罗伯特·博世有限公司

摘要 :

为了保证数据处理设备中的数据不受损害,a)从存储器(3)读取(S1′)数据包(Pi),并校验(S4′)该数据包是否是预先给定的第一代码的存在的代码字;b)如果该数据包(Pi)是存在的代码字,则作为未受损害的而接受(S3′)该数据包;c)如果该数据包不是存在的代码字,则c1)确定校正误差的第二代码的至少一个数据块(Bj),其与所读取的数据包(Bi)相交叠;c2)借助于该第二代码在该数据包(Bi)中搜寻(S5′)误差;c3)根据搜寻的结果来校正(S5′)该数据包;以及c4)作为未受损害的而接受(S3′)经校正的数据包。

权利要求 :

1.用于保证数据处理设备中的数据不受损害的方法,具有步骤:a)从存储器(3)读取(S3、S1′)数据包(pj;Pi),并校验(S4;S4′)所述数据包是否是预先给定的第一代码的存在的代码字;

b)如果所述数据包(pj;Pi)是存在的代码字,则作为未受损害的而接受(S8;S3′)所述数据包;

其特征在于,

c)如果所述数据包不是存在的代码字,则

c1)确定校正误差的第二代码的至少一个数据块(Bi;Bj),其与所读取的数据包(pj;Pi)相交叠;

c2)借助于所述第二代码在所述数据包(pj;Pi)中搜寻(S9;S5′)误差;

c3)根据搜寻的结果来校正(S9;S5′)所述数据包;以及c4)作为未受损害的而接受(S16;S3′)经校正的数据包。

2.如权利要求1的方法,其特征在于,如果在所述步骤c3)之后确定(S14;S8′),所述经校正的数据包是所述第一代码的存在的代码字,则只执行步骤c4)。

3.如权利要求1的方法,其特征在于,要被保证不受损害的数据包括多个不同长度的数据包(Pi),并且对于所述数据包(Pi)的每一个执行步骤a)至c4)。

4.如权利要求3的方法,其特征在于,所述数据包括分配在多个例程中的程序指令,并且至少一些在相继存储在所述存储器(3)中的数据包(P1、P2...)之间的边界与程序例程之间的边界相叠合。

5.如权利要求1所述的方法,其特征在于,在步骤c3)中所获得的经校正的数据包被回写(S17、S9′)到所述存储器(3)中。

6.如权利要求1所述的方法,其特征在于,每一个作为未受损害的而被接受的数据包以自由选择存取的方式被记入(S8、S16;S3′)另一存储器(4)中。

7.如权利要求6的方法,其特征在于,所述被接受的数据包在记入之前被解码。

8.如权利要求1或2所述的方法,其特征在于,代码分别被用作第一和/或第二代码,这些代码中的每一代码字由与经解码的代码字相同的有效部分和可从所述有效部分推导出的冗余部分组成。

9.用于保证数据处理设备中的数据不受损害的装置,其包括:-用于从存储器(3)中读取数据包(pj;Pi)的装置;

-用于校验所述数据包(pj;Pi)是否是预先给定的第一代码的存在的代码字的装置;

-用于当所述数据包(pj;Pi)是存在的代码字时作为未受损害的而接受所述数据包(pj;Pi)的装置;

其特征在于,该用于保证数据处理设备中的数据不受损害的装置还包括-用于当所述数据包不是存在的代码字时确定校正误差的第二代码的至少一个数据块(Bi;Bj)的装置,其中所述至少一个数据块与所读取的数据包(pj;Pi)相交叠;

-用于借助于所述第二代码在所述数据包(pj;Pi)中搜寻误差的装置;

-用于根据搜寻的结果来校正所述数据包的装置;以及-用于作为未受损害的而接受经校正的数据包的装置。

10.如权利要求9的装置,其特征在于,该装置还包括用于将经校正的数据包回写入所述存储器(3)的装置。

说明书 :

数据保护用的方法和用于其实施的设备

技术领域

[0001] 本发明涉及一种用于保证数据处理设备中的数据不受损害的方法和能够实施这种方法的设备。
[0002] 在用于控制机器或过程而使用的设备中,有重要意义的是,毫无疑问地确保所述设备为了实施其控制任务而动用的数据不受损害。必须明确地识别出所述数据中的例如可能源于设备自身的技术干扰或源于未被授权的第三方存取而引起的误差,以便可以禁止不再确保其运行可靠性的每种功能。
[0003] 长久以来就已知的是,通过以编码的形式存储数据并且只在所述数据是所采用的代码的有效代码字时才使用所述数据来保护数据处理设备中的数据不受损害。在最简单的情况下,编码可以是奇偶校验位或校验和的添加。
[0004] 这种代码的基本优点是其简单性,这允许实时地或完全不依赖于对相关代码字的读存取来执行对在存储器中所读取的数据字是否是存在的代码字的校验。因此例如微计算机是公知的,所述微计算机除了八个分别存储数据字节的不同位的存储器器件之外还具有用于奇偶校验位的第九存储器器件,并且所述微机算计具有控制电路,所述控制电路对从八个存储器器件所读取的每个字节计算奇偶校验位,利用在第九存储器器件中所存储的比较且在不一致时用信号发送干扰。
[0005] 通过这种技术,虽然可能识别出在所存储的数据中的误差,然而不能校正误差。试图存取有误差的数据的控制过程因此能够在所有情况下被中断;并未规定继续基于校正的数据的过程。然而这对于以下应用并不是令人满意的解决方案,即在所述应用中过程中断完全如同在使用错误的数据的情况下的过程继续可能是安全性风险。
[0006] 在汽车控制设备的领域中公知的是,为了避免这些问题,多次存储安全相关的数据,使得在应该存取的数据值被识别为有差错的情况下,能代替有误差的值而被使用的拷贝可供使用。
[0007] 这种实施方式与巨大的存储器需求相关联,因为一方面每一安全相关的数据都必须以至少两份被存储,且此外必须存在冗余信息,所述冗余信息允许识别应该存取的数据是否是有误差的。
[0008] 发明优点
[0009] 通过本发明,提供一种用于保证在数据处理设备中的数据不受损害的方法和一种用于实施该方法的适当的设备,其允许以大大减少的对存储空间的耗费来确保数据不受损害。
[0010] 本发明基于应用两种不同的用于对待保护的数据进行编码的代码,即第一代码,其中由所述第一代码仅仅要求该第一代码必须能够识别出误差的存在,并且所述第一代码因此能够简单且快速地可被解码;和第二代码,所述第二代码除了识别误差之外,也允许校正所述误差,并且当已读取不对应于第一代码的存在的代码字的数据字时被使用,以便识别并消除其误差。
[0011] 根据本发明的方法包括步骤:
[0012] a)从存储器读取数据包,并校验该数据包是否是第一代码的存在的代码字;
[0013] b)如果该数据包是存在的代码字,则作为未受损害的而接受该数据包;
[0014] c)如果该数据包不是存在的代码字,则
[0015] c1)确定校正误差的第二代码的至少一个数据块,其与所读取的数据包相交叠;
[0016] c2)借助于第二代码在数据包中搜寻误差;
[0017] c3)根据搜寻的结果来校正数据包;以及
[0018] c4)作为未受损害的而接受经校正的数据包;
[0019] 如果在步骤c3)之后确定经校正的数据包是第一代码的存在的代码字,当只执行步骤c4)时,可使该方法的安全性显著提高。
[0020] 根据本发明的方法能够相继地被应用于多个数据包,其中这些数据包可以具有不同的长度。特别是如果数据包括分配在多个例程中的程序指令,则可以确定至少部分地与程序例程之间的边界相一致的数据包之间的边界。如果确定这种所读取的数据包对应于第一代码的存在的代码字,则可以释放在这个数据包中所体现的例程用于执行,而不依赖于例程中的另一个是否可能有误差。因此产生这样的可能性,即如果数据包证明为有误差的,并且误差借助于第二代码也不可被校正,则以有限的功能范围运行设备。
[0021] 有利地,借助于第二代码经误差校正的数据包被回写到存储器中,其中事先从所述存储器有误差地读取了所述数据包,以便因此校正存储器内容。通过这种方式可以自动地消除部分数据损失。
[0022] 为了可靠地排除对有误差的数据的不经意的存取,可以规定,将每一个作为未受损害的而被接受的数据包以自由选择存取的方式被记入存储器中,以及以自由选择存取的方式进行对这个存储器中的数据包的以后存取。因为有误差的未经校正的数据包不到达这个存储器中,所以排除了对其的存取。
[0023] 有利地,所接受的数据包在记入之前被解码,其中该解码优选地在于,使第一代码的由数据包所构成的代码字的仅仅用于检查误差性的冗余部分与代码字的有效部分分开,并仅仅将后者作为经解码的代码字以自由选择存取的方式记入在存储器中。
[0024] 第二代码的代码字有利地也由与经解码的代码字相同的有效部分和从有效部分根据预先给定的方法可推导出的冗余部分组成,所述冗余部分在解码时可简单地被分开。
[0025] 本发明的其他特征和优点参考附图从下面的实施例的说明中得出。
[0026] 附图
[0027] 图1是作为根据本发明的数据处理设备的例子的汽车控制设备的框图;
[0028] 图2示出根据第一扩展方案在图1的设备的闪速存储器中的数据分布;
[0029] 图3示出根据第二扩展方案在闪速存储器中的数据分布;
[0030] 图4是用于保证闪速存储器的数据不受损害的方法的第一扩展方案的流程图;以及
[0031] 图5是该方法的第二扩展方案的流程图。
[0032] 图1的框图示意性地示出根据本发明的控制设备的构造。该控制设备包括微处理器或微控制器1,其通过总线2与闪速存储器3和RAM 4相连接。在该图中未示出的用于控制汽车(KfZ)发动机的运行的传感器和执行机构通过总线2与微控制器1相连接。
[0033] 用于微控制器1的运行程序以编码的形式被存储在闪速存储器3中。
[0034] 为了能够进行对闪速存储器3的内容的解码,微控制器1所需要的辅助例程被存储在ROM 5中。ROM 5在该图中被示为与微控制器1分开的电路,但也可以为了改善对由未经授权方的操纵的保护而在相同的半导体衬底上与微控制器1集成。
[0035] 图2示出用于在闪速存储器3中所存储的数据的结构的第一实例。数据位在图2中分别通过矩形来代表,使得每一行代表9位数据包p1、p2…,所述9位数据包由八个表示为空矩形的有效位和一个阴影线表示的奇偶校验位组成。每一数据包p1、p2…也可以被理解为代码的代码字,所述代码的代码字通过将奇偶校验位附加到字节上而被获得。存储器的内容被分成多个块B1、B2、…Bn,所述块分别包括相同数目的数据包,例如255个。对数据块进行Reed-Solomon编码,即每一块含有固定数目的有效数据包(例如223个)和较少数目(这里为32)的从有效数据包根据确定的方法所计算的校正数据包,所述校正数据包以公知的方式允许定位和校正Reed-Solomon代码字中的误差。
[0036] 在图2中,块分别相关联在一起地被布置在存储器3中。但也可能的是、并且对于逐步地读取有效数据也有利的是,将所有RS编码的数据块的有效数据包布置在彼此紧接着的存储位置上并且分开地存储所属的校正数据包。
[0037] 图3中示出闪速存储器3的改变的划分。这里每一个矩形代表一个字节,且图表的每一行代表Reed-Solomon编码的例如255个字节的数据块,所述数据块如在图2中的情况由233个有效数据字节N和32个校正字节C组成。在闪速存储器中所存储的程序指令以多个例程的方式被结构化,其中的每一个都占据多个这种RS编码的块B1、B2、…Bn。在存储器中相继存储的例程之间的界限如此来确定,使得所述块B1、B2、…Bn中的每一个都含有由最大一个在图中通过不同的阴影线类型所示出的例程组成的指令。属于相同例程的RS编码的块被组合成数据包P1、P2、P3、P4,其中的每一个都通过添加校验和信息被第二次编码,其中校验和信息可以任意地直接紧接着所述校验和所涉及的包P1、P2、P3或P4的有效数据被记入闪速存储器3中,或者多个包的校验和信息可以被总结在按照地址与其有效数据分开的存储区域中。
[0038] 图4示出处理的流程图,其中微控制器1执行所述处理,用以验证在根据图2结构化的闪速存储器3中的数据未受损害。这种验证尤其可以分别在控制设备启动时或在足够的处理功率可供使用的情况下也在控制设备运行期间的确定的时间进行。
[0039] 在步骤S1中,微控制器选取在闪速存储器中所存储的例程之一。在步骤S2中,该微控制器选取这个例程的块Bi=B1、B2…或Bn,并在步骤S3中选取块Bi的数据包pj(j=1、2、…)。步骤S4是数据包pj的公知的奇偶校验。如果校验得出奇偶校验位是正确的,则该方法直接进行到步骤S6;否则事先使误差计数器的分别在步骤S2中选取块时被置零的数值E递增(步骤S5)。
[0040] 在步骤S6中校验是否选取了块Bi的所有数据包,并由此结束块Bi的校验。如果不是,则该方法返回步骤S3;如果是,则继续进行到步骤S7,在所述步骤S7中校验数值E是否大于零。如果这不是这样的情况、即如果所有数据包的奇偶校验值都是正确的,则在步骤S8中块被接受为是无误差的并被传输到RAM 4中,并且该方法跳到步骤S18,对所述步骤S18在稍后的段进行探讨。
[0041] 如果在步骤S7中数值E表明为不同于零,则在步骤S9中将Reed-Solomon解码应用到块Bi上,以便确定块中的有误差的位的数目和位置。在步骤S10中校验在步骤S9中所确定的误差数E′是否不同于误差计数器的数值E。如果是,则两个误差数E、E′之一必定是错误的,并因此在步骤S9中所确定的关于假定的有误差的位的定位的说明也是不可靠的。因为在这种情况下误差校正可能不是可靠的,所以用于相关例程的该方法通过跳向S20而被中断。
[0042] 如果在步骤S10中确定所确定的误差数一致,则可以充分确信地认为,对被识别为有误差的位的校正再次产生正确的数据,使得在步骤S11中,对块Bi的包pj在包含有误差的位的所有块上进行相应的校正。
[0043] 在步骤S12中选取如此所获得的假定无误差的数据块Bi的数据包pj(j=1、2、…),并且它的八个有效位的奇偶性 在步骤S13中予以确定。如果所确定的奇偶性与在第九位中所存储的奇偶性的比较在步骤S14中得出不一致,则用于相关例程的数据的校正就失败了,并且该方法转向步骤S20。如果该校验得出正确的奇偶性,则接着在步骤S15中校验是否已经选取了块的所有数据包pj。如果不是,则该方法返回到步骤S12,在那里选取新的数据包,如果是,则结束块Bi的校正,块Bi在步骤S16中被接受并被记入RAM 4中。此外在步骤S17中,块Bi或者至少其被识别为有误差的数据包用相应的校正的值被重写到闪速存储器3中,使得闪速存储器3的内容也再次是正确的,并且误差在重新校验时不应该重复。
[0044] 接着在步骤S18中校验,是否处理了当前所选取的例程的所有块。如果不是,则该方法返回到步骤S2,以便选择新的块,如果是,则其间完整地被记入RAM 4中的例程被适当用于通过处理器单元7执行(S19)。
[0045] 接着在步骤S20中校验,是否有未处理的例程剩余,如果是,则在步骤S1中选取仍未处理的例程,并且对该未处理的例程重复本方法。否则接着步骤S21,评价用于执行而被释放的例程:所述例程是否足以在也可能具有有限的功能范围的情况下运行控制设备。如果RAM 4中不缺少被判断为极其重要的例程,则处理器单元7开始执行在其中所包含的例程(S22),其中必要时对于每一缺少的例程输出误差信号。如果被判断为极其重要的例程缺少,则处理器单元7不运行(S23)。
[0046] 图5示出用于在图3中所示的以下情况的处理进程,即例程的程序指令分别构成数据包的有效数据,并且数据包包括多个Reed-Solomon编码的块。
[0047] 在步骤S1′中的例程的选取同义于对数据包Pi(i=1、2、…)的选取。数据包Pi被完整地从闪速存储器3中读取。它被理解为代码字,所述代码字包括有效数据部分和从该有效数据部分所计算的完整性校验信息,例如多个奇偶校验位、循环的校验和、CRC数据或诸如此类。微控制器1在步骤S2′中校验,数据字是否是允许的代码字,其方式是:该微控制器1从所读取的有效数据中计算完整性校验信息,并与所读取的完整性校验信息相比较。在一致的情况下,所读取的数据包是存在的代码字,并且在步骤S3′中被接受为是正确的,且其有效数据被存储在RAM 4中。相反,在不一致的情况下,必定存在误差。在这种情况下,在步骤S4′中选取相关包的块Bj(j=1、2…)之一,并借助于RS解码在步骤S5′中搜寻这个块Bj的误差并且必要时予以校正。如此频繁地重复步骤S4′和S5′,直到在步骤S6′中确定:处理了数据包Pi的所有块。在此,不仅有效数据而且所属的完整性校验信息可以被识别为有误差的并被校正。
[0048] 如果处理了包Pj的所有块,则借助于经校正的有效数据在步骤S7′中重新计算用于包Pi的完整性校验信息,并在步骤S8′中与(必要时在步骤S5′中经校正的)所读取的完整性校验信息相比较。在一致的情况下,该方法进行到步骤S9′,在所述步骤S9′在闪速存储器3中明显有误差地被存储的数据包Pi用在步骤S5′中所获得的经校正的数据包Pi被重写,紧接着该方法进行到步骤S3′。在不一致的情况下,相关例程被识别为有不能修复的误差且不被接收到RAM4中(S10′)。不仅紧接着步骤S3′而且紧接着S10′,在步骤S11′中校验,是否还有待处理的例程或数据包剩余,并且如果是,则该方法返回到步骤S1′。如果不是,则接着是结合图4所描述的步骤S21至S23。
[0049] 通过这种方式,获得用于闪速存储器3的数据的高程度的安全性,而不必提供用于所述数据的多次拷贝的存储位置。