基于加权Merkle树实现的空间抗辐照故障检测方法

文档序号:6538470阅读:157来源:国知局
基于加权Merkle树实现的空间抗辐照故障检测方法
【专利摘要】本发明公开了一种基于加权Merkle树实现的空间抗辐照故障检测方法,其特征在于:步骤如下:利用编译器为关键代码段生成对应的加权Merkle?Hash树;然后在操作系统支持下,任务空闲时基于Merkle?Hash树进行细粒度、高效的错误检测,从而提供细粒度、高效的单点错误检测机制。本发明提供了细粒度、高效的单点错误检测机制,为航天应用系统中实现抗辐照错系统提供支持。
【专利说明】基于加权Merkle树实现的空间抗辐照故障检测方法
【技术领域】
[0001]本发明属于软件可靠性领域,具体地说,涉及一种基于加权Merkle树实现的空间抗辐照故障检测方法。
【背景技术】
[0002]宇宙辐射是航天器面临的重大威胁。太空空间中有许多高能粒子,这些粒子进入半导体后,通过库仑作用电离出大量电荷,从而引起半导体数字集成电路的逻辑翻转、锁定,甚至有可能烧毁器件,具体来说包括:单粒子翻转、单粒子闩锁和单粒子烧毁,可能会导致半导体电路中的逻辑状态发生翻转,即从逻辑I翻转到逻辑O或反之。单粒子效应所导致的卫星故障占空间辐射效应故障总数的80%。由于抗辐照器件的成本与功耗很大,而性能相对较低,因此,空间电子系统中普遍采用软硬件结合方式来完成单粒子翻转的错误检测与错误恢复技术,而高效可靠的单粒子翻转检测技术是抗辐照设计的关键。
[0003]检测辐射带来的程序变动成为航天器电子系统的基本功能。为了保护安全关键软件正确性,检测软件进入错误状态成为软件设计和运行的重要命题。在安全关键软件中,对关键代码的执行路径保护是一种有效的方法。Hash值是一个广泛应用的完整性验证技术。利用Hash技术可以按照需要检测程序代码是否发生变化,一旦发现不一致即发生错误,可以触发错误恢复机制,从而避免系统进入到错误状态。
[0004]在空间抗辐照应用中,传统Hash技术实现错误检测的方法通常会遇到如下问题:
[0005]1、空间单粒子翻转的故障是非永久性质的的,可以通过重写与刷新来恢复原有状态,因此校验出错是需要精确出错位置的,位置越精确,错误恢复的效率就越高;
[0006]2、对整个代码段、数据段逐个进行Hash校验开销过大,而且存在浪费,按照二八原则,20%的热点代码与热点数据经常被执行与访问,其数据完整性对于系统安全性的影响很大,而剩余部分则对系统安全性影响较小。
[0007]3、空间单粒子翻转的影响位置是随机的,问题可能出现在代码段任意位置,也可能出现在保存Hash表的位置中,单纯一个Hash表无法判断单点故障会出现在哪里。

【发明内容】

[0008]本发明要解决的技术问题是克服上述缺陷,提供一种基于加权Merkle树方式实现高效错误检测方法,通过为系统代码段建基于基本块Hash值的加权的Merkle树,从而可以避免Hash值被篡改带来的误报机制,并且可以细粒度、高效的进行错误检测,从而为细粒度、高效的数据恢复机制提供有力的支持。
[0009]为解决上述问题,本发明所采用的技术方案是:
[0010]一种基于加权Merkle树实现的空间抗辐照故障检测方法,其特征在于:步骤如下:利用编译器为关键代码段生成对应的加权Merkle Hash树;然后在操作系统支持下,任务空闲时基于Merkle Hash树进行细粒度、高效的错误检测,从而提供细粒度、高效的单点错误检测机制。[0011]作为一种改进,所述加权Merkle Hash树的构建;
[0012]I)、在程序编译过程中,针对系统的代码段,按照基本块为单位进行划分;基本块是程序顺序执行的基本单元,基本块的第一条语句一旦被执行,那么基本块内部的语句也必然被执行一次;如果一个基本块过大,则将基本块拆分为若干大小均匀的基本块,从而全系统代码段被分为N个近似大小的基本块;在编译过程中,计算上述创建的每个基本块对应二进制代码的Hash值,得到N个Hash值;
[0013]2)、在编译过程中,使用profiler工具生成的调用图,获得系统的关键路径与热
占.[0014]3)、将基本块按照其执行热点值自高到低进行排列,分别赋予加权系数i为N、Ν-1、Ν-2、…、3、2、1 ;对于代码段的关键路径,按照其是否处于关键路径,对应基本块赋予加权系数j,分别为1.2 (关键路径)、1.0 (—般路径)、0.8 (异常处理路径);计算每个基本块的加权系数WP=i X j ;
[0015]4)、将基本块按照加权系数WP进行排列,从而构建对应Merkle树,其中每个基本块的hash值是Merkle Hash树的叶子节点,中间结点的hash值是子节点值的hash预算结果:Hash(H)=hash(HI|Hr); [0016]5)、将Merkle叶节点序号与基本块代码地址保存在一个稀疏矩阵中;
[0017]6)、将Merkle树保存在程序配置文件中;
[0018]作为一种改进,所述单粒子翻转检查的步骤如下:
[0019]I)、系统运行过程中,构建一致性巡检任务CircuitCheckTask,以及一致性预检任务 PreCheckTask ;
[0020]2)、巡检任务CircuitCheckTask将按照Merkle树,自左向右依次校验每个叶节点的Hash值与对应基本块计算的Hash值是否一致;
[0021]3)、预检任务PreCheckTask将根据当前安全关键任务的执行位置标记,根据函数调用关系,检查其后续执行基本块对应的Hash值与叶节点的Hash值是否一致。
[0022]作为一种改进,所述Hash值校验过程如下:
[0023]I)、如果Hash值比较结果一致,说明对应基本块与Merkle树没有出现单点错误;
[0024]2)、如果Hash值不一致,说明对应基本块与Merkle树有可能存在单点错误;此时,为了进一步确定单点错误是否出现在Merkle树中,将Merkle树中的Hash值与右侧兄弟节点的Hash值合并计算器父节点的Hash值,并与父节点的Hash值进行比较;如果比较结果一致,说明单点错误发生在对应基本块,应使用错误恢复机制将对应基本块进行恢复;如果比较结果不一致,则说明Merkle表对应节点存在单点错误,需要使用基本块重新计算对应的Hash值,并更新Merkle树。
[0025]由于采用了上述技术方案,与现有技术相比,本发明利用编译器为关键代码段生成对应的加权Merkle Hash树;然后在操作系统支持下,任务空闲时基于Merkle Hash树进行细粒度、高效的错误检测,从而提供细粒度、高效的单点错误检测机制,为航天应用系统中实现抗辐照错系统提供支持。
[0026]Merkle Hash树可以进行比对与验证工作,但是遍历Merkle树以寻找到对应叶节点的过程需要一定的时间开销。为了降低查找的时间开销,本方法引入了加权值,按照程序执行的热点与关键路径来计算一个加权值,使得反复执行的热点基本块与必然执行的关键路径基本块尽可能靠近Merkle树的左侧,从而提高完整性校验的速度以及遍历Merkle树的速度。
[0027]使用函数基本块作为Hash的基础,从而可以以基本块为单位计算其执行概率与是否位于关键路径之上。这一方面可以提高Hash校验的粒度,另一方面可以保证每次Hash校验结果的有效性。
【具体实施方式】
[0028]实施例:
[0029]一种基于加权Merkle树实现的空间抗辐照故障检测方法,步骤如下:利用编译器为关键代码段生成对应的加权Merkle Hash树;然后在操作系统支持下,任务空闲时基于Merkle Hash树进行细粒度、高效的错误检测,从而提供细粒度、高效的单点错误检测机制。
[0030]在本实施例中,所述加权Merkle Hash树的构建;
[0031]I)、在程序编译过程中,针对系统的代码段,按照基本块为单位进行划分;基本块是程序顺序执行的基本单元,基本块的第一条语句一旦被执行,那么基本块内部的语句也必然被执行一次;如果一个基本块过大,则将基本块拆分为若干大小均匀的基本块,从而全系统代码段被分为N个近似大小的基本块;在编译过程中,计算上述创建的每个基本块对应二进制代码的Hash值,得到N个Hash值。
[0032]2)、在编译过程中,使用profiler工具生成的调用图,获得系统的关键路径与热点。
[0033]3)、将基本块按照其执行热点值自高到低进行排列,分别赋予加权系数i为N、Ν-1、Ν-2、…、3、2、1 ; 对于代码段的关键路径,按照其是否处于关键路径,对应基本块赋予加权系数j,分别为1.2 (关键路径)、1.0 (—般路径)、0.8 (异常处理路径);计算每个基本块的加权系数WP=iXj。
[0034]4)、将基本块按照加权系数WP进行排列,从而构建对应Merkle树,其中每个基本块的hash值是Merkle Hash树的叶子节点,中间结点的hash值是子节点值的hash预算结果:Hash(H)=hash(HI|Hr)。
[0035]5)、将Merkle叶节点序号与基本块代码地址保存在一个连续数组中稀疏矩阵。
[0036]6)、将Merkle树保存在程序配置文件中。
[0037]在本实施例中,所述单粒子翻转检查的步骤如下:
[0038]I)、系统运行过程中,构建一致性巡检任务CircuitCheckTask,以及一致性预检任务 PreCheckTask ;
[0039]2)、巡检任务CircuitCheckTask将按照Merkle树,自左向右依次校验每个叶节点的Hash值与对应基本块计算的Hash值是否一致;
[0040]3)、预检任务PreCheckTask将根据当前安全关键任务的执行位置标记,根据函数调用关系,检查其后续执行基本块对应的Hash值与叶节点的Hash值是否一致。
[0041 ] 所述Hash值校验过程如下:
[0042]I)、如果Hash值比较结果一致,说明对应基本块与Merkle树没有出现单点错误;
[0043]2)、如果Hash值不一致,说明对应基本块与Merkle树有可能存在单点错误;此时,为了进一步确定单点错误是否出现在Merkle树中,将Merkle树中的Hash值与右侧兄弟节点的Hash值合并计算器父节点的Hash值,并与父节点的Hash值进行比较;如果比较结果一致,说明单点错误发生在对应基本块,应使用错误恢复机制将对应基本块进行恢复;如果比较结果不一致,则说明Merkle表对应节点存在单点错误,需要使用基本块重新计算对应的Hash值,并更新Merkle树。
[0044]Merkle Hash树可以进行比对与验证工作,但是遍历Merkle树以寻找到对应叶节点的过程需要一定的时间开销。为了降低查找的时间开销,本方法引入了加权值,按照程序执行的热点与关键路径来计算一个加权值,使得反复执行的热点基本块与必然执行的关键路径基本块尽可能靠近Merkle树的左侧,从而提高完整性校验的速度以及遍历Merkle树的速度。
[0045]使用函数基本块作为Hash的基础,从而可以以基本块为单位计算其执行概率与是否位于关键路径之上。这一方面可以提高Hash校验的粒度,另一方面可以保证每次Hash校验结果的有效性。
【权利要求】
1.一种基于加权Merkle树实现的空间抗辐照故障检测方法,其特征在于:步骤如下:利用编译器为关键代码段生成对应的加权Merkle Hash树;然后在操作系统支持下,任务空闲时基于Merkle Hash树进行细粒度、闻效的错误检测,从而提供细粒度、闻效的单点错误检测机制。
2.根据权利要求1中所述的基于加权Merkle树实现的空间抗辐照故障检测方法,其特征在于:所述加权Merkle Hash树的构建; 1)、在程序编译过程中,针对系统的代码段,按照基本块为单位进行划分;基本块是程序顺序执行的基本单元,基本块的第一条语句一旦被执行,那么基本块内部的语句也必然被执行一次;如果一个基本块过大,则将基本块拆分为若干大小均匀的基本块,从而全系统代码段被分为N个近似大小的基本块;在编译过程中,计算上述创建的每个基本块对应二进制代码的Hash值,得到N个Hash值; 2)、在编译过程中,使用profiler工具生成的调用图,获得系统的关键路径与热点; 3)、将基本块按照其执行热点值自高到低进行排列,分别赋予加权系数i为N、N-UN-2、…、3、2、1 ;对于代码段的关键路径,按照其是否处于关键路径,对应基本块赋予加权系数j,分别为1.2 (关键路径)、1.0 (—般路径)、0.8 (异常处理路径);计算每个基本块的加权系数WP=i X j ; 4)、将基本块按照加权系数WP进行排列,从而构建对应Merkle树,其中每个基本块的hash值是Merkle Hash树的叶子节点,中间结点的hash值是子节点值的hash预算结果:Hash(H)=hash(HI|Hr); 5)、将Merkle叶节点序号与基本块代码地址保存在一个稀疏矩阵中; 6)、将Merkle树保存在程 序配置文件中。
3.根据权利要求2中所述的基于加权Merkle树实现的空间抗辐照故障检测方法,其特征在于:所述单粒子翻转检查的步骤如下: 1)、系统运行过程中,构建一致性巡检任务CircuitCheckTask,以及一致性预检任务PreCheckTask ; 2)、巡检任务CircuitCheckTask将按照Merkle树,自左向右依次校验每个叶节点的Hash值与对应基本块计算的Hash值是否一致; 3)、预检任务PreCheckTask将根据当前安全关键任务的执行位置标记,根据函数调用关系,检查其后续执行基本块对应的Hash值与叶节点的Hash值是否一致。
4.根据权利要求3中所述的基于加权Merkle树实现的空间抗辐照故障检测方法,其特征在于:所述Hash值校验过程如下: 1)、如果Hash值比较结果一致,说明对应基本块与Merkle树没有出现单点错误; 2)、如果Hash值不一致,说明对应基本块与Merkle树有可能存在单点错误;此时,为了进一步确定单点错误是否出现在Merkle树中,将Merkle树中的Hash值与右侧兄弟节点的Hash值合并计算器父节点的Hash值,并与父节点的Hash值进行比较;如果比较结果一致,说明单点错误发生在对应基本块,应使用错误恢复机制将对应基本块进行恢复;如果比较结果不一致,则说明Merkle表对应节点存在单点错误,需要使用基本块重新计算对应的Hash值,并更新Merkle树。
【文档编号】G06F11/10GK103853661SQ201410060564
【公开日】2014年6月11日 申请日期:2014年2月21日 优先权日:2014年2月21日
【发明者】李尚杰, 吕紫旭, 周启平, 程胜 申请人:北京神舟航天软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1