确定具有控制流的函数中的期望散列值制造技术

技术编号:37981581 阅读:6 留言:0更新日期:2023-06-30 09:56
本文件描述了能够确定具有控制流的函数中的期望散列值的技术和装置。计算设备(200)接收函数,所述函数包括经由多个执行路径(302、304)连接的至少三个基本块(108)中的函数指令(106)。散列输入指令(130)被插入多个所述基本块中,所述基本块在所述对应的插入点间接强制赋予散列值。在所述多个基本块的端部的散列值(408)被设置为规范值(134),并且期望散列值(128)和散列输入值(132)是使用散列函数(118)来计算的。通过使用所述规范值(134)和所述散列输入值(132),所述期望散列值(128)都是相同的,而与哪个执行路径被执行无关。而与哪个执行路径被执行无关。而与哪个执行路径被执行无关。

【技术实现步骤摘要】
【国外来华专利技术】确定具有控制流的函数中的期望散列值

技术介绍

[0001]现代计算设备处理大量指令(例如,来自操作系统、应用或组件)。这些指令中的许多都包含敏感信息或提供对敏感信息的访问。因此,安全性是日益重要的因素,不仅在软件中,而且在处理系统中也是如此。
[0002]处理系统安全性的一个方面是确保应该被执行的每个指令都被执行。例如,恶意攻击者(例如,人、机器或软件)可能能够导致执行故障,该执行故障跳过指令或导致指令与预期不同地执行(例如,不会跳转到由被跳过的指令定义的指令或指令块)。通过不按照预期执行指令,可以暴露安全漏洞(例如,可能不执行的身份验证过程)。
[0003]散列值可以被用于确保指令或指令块被执行。例如,处理器可以对一个或多个执行指令进行散列,并且将得到的散列值与期望散列值进行比较。得到的散列值和期望散列值之间的匹配可能导致确定没有故障(对抗性的或其他)发生(例如,指令按预期执行)。然而,得到的散列值与期望散列值不匹配可能指示故障。
[0004]当函数(例如,多个指令)包含多个执行路径时,出现一个问题。通过在被执行的每个基本块中初始化和校验散列值(例如,经由重置散列和校验散列指令)来保护函数是很简单的。这样做不仅计算量大,而且可能无法保护分支指令(例如,if/else指令)。因此,这种方法可能无法保护具有带有单个期望散列值的多个执行路径的函数中的所有代码行。

技术实现思路

[0005]描述了能够实现确定具有控制流的函数中的期望散列值的技术和装置。这些技术和装置使单个校验散列指令能够被用于保护具有多个执行路径(例如,控制流)的函数中的所有指令。以这种方式,不让指令不受保护可以增强安全性。此外,通过减少一些散列操作,可以减少处理开销。
[0006]下面描述的方面包括由计算设备执行的方法。方法接收具有多个基本块的函数,这些基本块包括函数指令的相应的部分和第一基本块与第二基本块之间的至少两个执行路径。方法建立散列函数,该散列函数用于计算函数指令的相应的执行指令状态下的散列值,并且在第一基本块中插入重置散列指令。然后,方法在第二基本块中选择目标执行指令状态,并且插入目标执行指令状态下的校验散列指令。方法进一步在除第二基本块之外的多个基本块中的每个基本块中插入相应的散列输入指令。散列输入指令将相应的散列输入值设置为散列函数,以用于计算散列输入指令在执行指令状态下的散列值。然后,方法基于初始散列值、规范值和散列函数确定目标执行指令状态下的期望散列值和散列输入指令的散列输入值。然后,方法利用函数指令、重置散列指令、具有对应的散列输入值的散列输入指令和具有目标执行指令状态下的期望散列值的校验散列指令来编译函数。
[0007]下面描述的各方面还包括由计算设备执行的方法。该方法执行函数指令以达到目标执行指令状态。函数指令由函数指令的多个基本块组成,并且在第一基本块与第二基本块之间具有至少两个执行路径。方法还执行散列指令以达到目标执行指令状态下的散列值。散列指令包括除第二基本块之外的多个基本块中相应的散列输入指令。然后,方法将目
标执行指令状态下的散列值与目标执行指令状态下的期望散列值进行比较。目标执行指令状态下的期望散列值与哪些执行路径被执行无关。然后,方法响应于目标执行指令状态下的散列值与执行指令状态下的期望散列值不匹配,执行安全函数。
附图说明
[0008]能够确定具有控制流的函数中的期望散列值的装置和技术是参照下面的图进行描述的。在所有图中使用相同的附图标记来引用相同的特征和组件:
[0009]图1图示了确定具有控制流的函数中的期望散列值的示例处理流程;
[0010]图2图示了示例电子设备,其中能够实现确定具有控制流的函数中的期望散列值;
[0011]图3图示了具有函数指令的基本块的示例函数;
[0012]图4图示了本文中描述的应用于图3的示例函数的技术的示例实施方式;
[0013]图5图示了用于使用具有控制流的函数中的期望散列值的示例处理流程;
[0014]图6图示了示例电子设备,其中能够实现使用具有控制流的函数中的期望散列值;
[0015]图7图示了确定具有控制流的函数中的期望散列值的示例方法的部分;
[0016]图8图示了图7的确定具有控制流的函数中的期望散列值的示例方法的另一部分;以及
[0017]图9图示了使用具有控制流的函数中的期望散列值的示例方法。
具体实施方式
[0018]概述
[0019]将函数的执行指令的散列值与期望散列值进行比较可以是用于确定指令已经被执行的有用工具。然而,如果函数包括多个执行路径(例如,具有至少一个分支指令的多个基本块),则简单的方法初始化并校验每个基本块中的散列值(例如,它们不将函数作为一个整体进行散列)。这导致三个问题:1)由于附加的散列指令和散列比较,计算开销很高,2)函数无法作为一个整体被校验以及3)分支指令不被保护。这可能导致系统性能差和安全漏洞。
[0020]本文件描述了能够确定具有控制流的函数中的期望散列值的技术和装置。编译器接收函数,该函数包括至少三个基本块中的函数指令。基本块中的至少一个具有分支指令,使得函数具有多个执行路径。重置散列指令被插入第一基本块(例如,初始基本块)中,该基本块为散列设置了初始散列值,并且校验散列指令被插入第二基本块(例如,最后一个基本块)中,该基本块根据期望散列校验执行散列。散列输入指令也被插入除第二基本块之外的每个基本块中。散列输入指令间接地在相应的插入点强制赋予散列值。函数指令被分配散列输入(例如,指令编码),并且在除第二基础块外的每个基本块的端部的期望散列值都被设置为规范值。使用散列函数、指令编码和设置散列值,确定每个指令(包括散列输入指令)的散列值。从这里开始,能够使用散列函数计算校验散列指令的期望散列值和散列输入值。然后,函数被编译为包括函数指令、散列函数、函数指令的散列输入、重置散列指令、校验散列指令(包括期望散列值)以及散列输入指令(包括散列输入值)。通过这样做,校验散列指令在执行指令状态下的期望散列值都是相同的,而与哪个执行路径被执行无关。
[0021]示例编译器处理流程
[0022]图1图示了确定具有控制流的函数中的期望散列值的示例处理流程100。处理流程100通常在下面关于图2所讨论的电子设备(未示出)中实现。如图所示,过程流程100包括编译器102,该编译器102从函数的函数指令106生成编译函数104。函数指令106包含函数指令的基本块,例如,基本块108。基本块108中的每个基本块都包含一组指令(例如,直线代码序列),除了在组的入口和组的出口之外都没有分支。函数具有至少三个基本块108:第一基本块110、第二基本块112和一个或多个中间基本块114。第一基本块110可以是初始基本块,并且第二基本块112可以是函数的最后一个基本块。函数指令106包含至少一个分支函数,该分支函数能够实现第一基本块110和第二基本块112之间的至少两个执行路径。例如,如果“if”被满足,在第一基本块110的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种由计算设备执行的方法,所述方法包括:接收函数,所述函数包括:函数指令;多个基本块,所述多个基本块包括所述函数指令的对应部分;以及所述多个基本块中的第一基本块和第二基本块之间的至少两个执行路径;建立散列函数,所述散列函数用于计算所述函数指令的执行指令状态下的相应的散列值;在所述第一基本块中插入重置散列指令,所述重置散列指令将所述重置散列指令的执行指令状态下的散列值设置为初始散列值;在所述第二基本块中选择目标执行指令状态;插入所述目标执行指令状态下的校验散列指令,所述校验散列指令将所述目标执行指令状态下的散列值与所述目标执行指令状态下的期望散列值进行比较;在除所述第二基本块之外的所述多个基本块中的每个基本块中插入相应的散列输入指令,所述散列输入指令将相应的散列输入值设置给所述散列函数,以用于计算所述散列输入指令的执行指令状态下的散列值;基于所述初始散列值、规范值和所述散列函数确定所述目标执行指令状态下的所述期望散列值和所述散列输入指令的所述散列输入值;以及形成编译函数,所述编译函数包括:所述函数指令;具有所述初始散列值的所述重置散列指令;具有对应的散列输入值的所述散列输入指令;以及具有所述目标执行指令状态下的所述期望散列值的所述校验散列指令。2.根据权利要求1所述的方法,进一步包括:将所述重置散列指令的执行指令状态下的散列值设置为所述初始散列值;以及将除所述第二基本块之外的所述多个基本块的最终执行指令状态下的相应的散列值设置为所述规范值,其中,所述目标执行指令状态下的所述期望散列值和所述散列输入值进一步基于所述重置散列指令的所述执行指令状态下的所述散列值和所述最终执行指令状态下的相应的散列值。3.根据权利要求1或2所述的方法,其中,相应的指令编码值被用作所述散列函数在所述函数指令的执行指令状态下的指令输入值。4.根据权利要求1至3中的任一项所述的方法,其中,所述规范值是基于所述目标执行指令状态。5.根据权利要求1至4中的任一项所述的方法,其中,所述规范值是基于所述目标执行指令状态之前的指令编码值。6.根据权利要求1至5...

【专利技术属性】
技术研发人员:纳撒尼尔
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1