用于确保计算机程序的执行完整性的数据处理布置和方法

文档序号:8259372阅读:572来源:国知局
用于确保计算机程序的执行完整性的数据处理布置和方法
【技术领域】
[0001]本公开涉及用于确保计算机程序的执行完整性的数据处理布置和方法。
【背景技术】
[0002]可通过实现被称为指令流签名ISS的安全功能来检测对计算机程序的已执行指令流的操纵。指令流签名通常为计算机程序的流的静态部分提强完整性保护。例如,在具有指令流签名的情况下,计算机程序的任何关键静态部分的执行可被强烈地保护免受物理和逻辑攻击的操纵。
[0003]除了保护计算机程序的流的静态部分以外,期望的是,也保护计算机程序流程的动态部分免受操纵。

【发明内容】

[0004]根据一个实施例,提供了数据处理布置,其包括:配置成执行包括多个程序指令的计算机程序的处理器;配置成确定由处理器执行的程序指令的签名的签名确定布置;存储为计算机程序预先确定的参考签名的存储器;其中处理器被配置成当它执行指示待执行的多个程序指令的下一程序指令的多个程序指令的程序指令时向签名确定布置提供关于该指示的信息;其中签名确定布置被配置成在签名的确定中考虑该信息;以及配置成在计算机程序被完全执行时检查所确定的签名是否等于参考签名的检测器。
【附图说明】
[0005]在附图中,相同的参考符号一般指的是遍及不同的视图的相同的部分。附图不一定按比例,相反一般将重点放在图示本发明的原理。在下面的描述中,参考下面的附图描述了各种方面,其中:
图1示出根据实施例的数据处理布置。
[0006]图2示出图示用于确保计算机程序的执行完整性的方法的流程图。
[0007]图3示出根据一个实施例的数据处理布置。
[0008]图4图示根据实施例的在没有分支的程序流程中的签名确定。
[0009]图5图示根据实施例的在有附加分支的程序流程中的签名确定。
[0010]图6图示根据实施例的在有间接分支的程序流程中的签名确定。
【具体实施方式】
[0011]下面的详细描述提及通过例证示出其中本发明可被实践的本公开的特定细节和方面的附图。其它方面可被利用,且结构、逻辑和电气变化可被做出而不脱离本发明的范围。本公开的各种方面不一定是相互排他的,因为本公开的一些方面可与本公开的一个或多个其它方面组合以形成新的方面。
[0012]在下文中,描述了允许保护计算机程序的流程的动态部分免受操纵的实施例。例如,包括对应的指令取出的间接分支和包括对应的指令取出的条件分支可被保护免受操纵。根据如下所述的各种实施例,确定用于正被执行的计算机程序的指令流签名的在下文中也被称为签名确定布置的实体与数据路径耦合。换句话说,签名确定布置接收程序指令的处理的结果(诸如转移地址(例如间接分支地址))或分支是否被采用的信息(例如分支条件的评估),并在签名确定中考虑它们。这允许保护指令流(换句话说,计算机程序)的动态部分。指令流可被指令流签名保护,且数据操作(例如转移地址的确定或分支条件的评估)可由执行数据操作的像双处理元件(例如双CPU或ALU)的附加冗余保护。在签名确定中考虑处理的结果允许保护在数据路径和指令流之间的互操作,换句话说,指令流对数据操作的结果(例如条件分支和间接分支)的依赖性。指令流签名可因此例如用作芯片卡或其它安全部件的完整性保护概念。
[0013]在下文中,描述了可例如提供对间接分支或条件分支的保护以使其免受操纵的数据处理布置。
[0014]图1示出数据处理布置100。
[0015]数据处理布置100包括配置成执行包括多个程序指令的计算机程序的处理器101、配置成确定由处理器执行的程序指令的签名的签名确定布置102和存储为计算机程序预先确定的参考签名的存储器103。
[0016]处理器被配置成当它执行指示待执行的多个程序指令的下一程序指令的多个程序指令的程序指令时向签名确定布置提供关于该指示的信息。
[0017]签名确定布置102被配置成在签名的确定中考虑该信息。
[0018]数据处理布置还包括配置成在计算机程序被完全执行时检查所确定的签名是否等于参考签名的检测器104。
[0019]换句话说,指示待执行的下一程序指令(B卩,以转移地址或是否将采用分支的指示的形式)的程序指令的结果(例如间接分支或条件分支)被反馈回基于这个信息来确定签名的签名确定实体。这可以这样的方式完成,使得在签名确定中考虑信息的效应(例如将签名改变特定值)等于由于对程序采用的路径而引起的签名的差异。例如,如果指令由于待采用的特定附加分支而被执行并因此在签名中被考虑,则考虑关于正被采用的分支的信息导致好像指令未被执行(且因此在签名中不被考虑)的相同的签名,使得(正确的)分支信息和(正确的)指令的组合再次导致有效签名。可替换地,多个有效参考签名可被预先限定,且根据正确的指令(即,根据信息执行的指令)结合签名更新考虑在签名确定中的信息导致用于通过计算机程序的每一个可能路径(即,每一个转移地址和每一个采用或跳过的分支)的预先确定的参考签名之一。
[0020]例如,指示待执行的多个程序指令的下一程序指令的多个程序指令的程序指令是条件分支。
[0021]关于该指示的信息是在这种情况下例如关于分支是否被采用的信息。
[0022]作为另一示例,指示待执行的多个程序指令的下一程序指令的多个程序指令的程序指令是间接转移。
[0023]关于该指示的信息是在这种情况下例如待执行的下一程序指令的存储器地址。
[0024]根据一个实施例,签名确定布置被配置成从当第一程序指令被执行时的初始值开始更新由处理器执行的多个程序指令的每一个程序指令的签名。
[0025]例如,签名确定布置被配置成基于程序指令来更新用于每一个程序指令的签名。
[0026]签名确定布置例如被配置成基于程序指令的表示来更新用于每一个程序指令的签名。
[0027]例如,签名确定布置被配置成基于程序指令的操作码来更新用于每一个程序指令的签名。
[0028]根据一个实施例,签名确定布置被配置成考虑该信息,使得如果如所指示的下一程序指令已经由处理器执行,则所确定的签名在计算机程序被完全执行时独立于该信息。
[0029]应注意,计算机程序可以是较大的计算机程序的程序部分。换句话说,所确定的签名是否是正确的(即,等于预先确定的参考签名)的检查可在较大的计算机程序的一部分之后被执行,即,可以是在(较大的)计算机程序的一部分已经被执行之后的关于较大的计算机程序的中间检查。
[0030]根据一个实施例,签名确定布置被配置成考虑该信息,使得如果如所指示的下一程序指令已经由处理器执行且如果计算机程序的其余部分已经被正确地执行,则所确定的签名在计算机程序被完全执行时等于参考签名,。
[0031]根据一个实施例,存储器存储为计算机程序预先确定的多个参考签名,且检测器被配置成当计算机程序被完全执行时检查所确定的签名是否等于参考签名中的任何一个签名。
[0032]根据一个实施例,签名确定布置被配置成基于程序指令并基于程序指令的存储器地址来更新用于至少一个程序指令的签名。例如,程序指令的表示(例如操作码)可例如通过异或组合或通过某个其它组合来与程序指令的地址组合。这可针对计算机程序的一部分或全部(已执行)程序指令完成。
[0033]例如,关于指示的信息是待执行的下一程序指令的存储器地址,且签名确定布置被配置成考虑信息,使得如果待执行的下一程序指令的存储器地址等于至少一个程序指令的存储器地址,则考虑信息排除程序指令的存储器地址对用于至少一个程序指令的签名的更新的影响。
[0034]根据一个实施例,指示待执行的多个程序指令的下一程序指令的多个程序指令的程序指令是条件分支,且关于该指示的信息是分支将被采用的信息,且签名确定布置被配置成考虑信息,
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1