CN108604271A - 用于控制有界指针的使用的设备及方法 - Google Patents

用于控制有界指针的使用的设备及方法 Download PDF

Info

Publication number
CN108604271A
CN108604271A CN201680081078.8A CN201680081078A CN108604271A CN 108604271 A CN108604271 A CN 108604271A CN 201680081078 A CN201680081078 A CN 201680081078A CN 108604271 A CN108604271 A CN 108604271A
Authority
CN
China
Prior art keywords
pointer
bounded pointer
signature
bounded
ability
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201680081078.8A
Other languages
English (en)
Other versions
CN108604271B (zh
Inventor
格雷姆·彼得·巴尔内斯
理查德·罗伊·格里森思怀特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN108604271A publication Critical patent/CN108604271A/zh
Application granted granted Critical
Publication of CN108604271B publication Critical patent/CN108604271B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

一种用于控制有界指针的使用的设备及方法。设备包括用于储存有界指针的储存器,其中每一有界指针包括指针值及相关联的属性,其中相关联的属性包括指示使用指针值时的可允许地址范围的范围信息。处理电路用于对输入有界指针执行签名操作以生成输出有界指针,其中通过签名操作所生成的签章被包括于输出有界指针内替换输入有界指针的规定位。另外,相关联的属性包括签名信息,签名信息由处理电路在输出有界指针内设置以标识已经签名该输出有界指针。方法使得在使用有界指针时增加控制流完整性攻击的复原力成为可能。

Description

用于控制有界指针的使用的设备及方法
技术领域
本发明涉及数据处理领域。
背景技术
一些数据处理设备可支持有界指针,其中指示特定地址的指针与指示该指针的可允许地址范围的范围信息相关联。例如,这样的指针可称为“胖指针(fat pointer)”。
除范围信息以外,这样的有界指针也可具有其它相关联的属性,定义对指针的使用中的一个或多个限制/许可。因此,这样的有界指针的使用可通过对如何使用由边界指针所规定的指针值施加约束而提供强大安全性。
面对软件中的一个问题为控制流完整性(control flow integrity,CFI)。特定而言,可尝试通过计算机程序破坏既定控制流,例如,通过尝试修改既定分支行为以便以非既定的方式将程序代码的多个部分有效地拼接在一起。例如,若一个任务可覆写待由另一任务使用的返回地址,则此可导致另一任务随后分支至非既定的程序代码区域。
当使用有界指针时,此对可从该指针导出的可允许存储器地址范围施加约束,并且因此,若在CFI攻击期间一个任务可经布置以变更另一任务的返回地址,则有界指针的使用可显着地限制可对该返回地址做出的修改。
然而,可期望进一步抑制这样的控制流完整性攻击。
发明内容
在一个示例性配置中,提供一种设备,其包括:储存器,其用于储存有界指针,每一有界指针包括指针值及相关联的属性,相关联的属性包括指示当使用该指针值时的可允许地址范围的范围信息;以及处理电路,其用于对输入有界指针执行签名操作以生成输出有界指针,其中通过签名操作所生成的签章被包括于输出有界指针内替代输入有界指针的规定位;相关联的属性包括由处理电路在输出有界指针内设置以标识输出有界指针已经签名的签名信息。
在另一示例性配置中,提供一种控制有界指针的使用的方法,其包括:将有界指针储存于储存器中,每一有界指针包括指针值及相关联的属性,相关联的属性包括指示当使用该指针值时的可允许地址范围的范围信息;对输入有界指针执行签名操作以生成输出有界指针,其中通过签名操作所生成的签章被包括于输出有界指针内替代输入有界指针的规定位;以及在输出有界指针的相关联的属性内设置签名信息以标识输出有界指针已经签名。
在更进一步的示例性配置中,提供一种设备,包括:储存器装置,其用于储存有界指针,每一有界指针包括指针值及相关联的属性,相关联的属性包括指示当使用该指针值时的可允许地址范围的范围信息;以及处理装置,其用于对输入有界指针执行签名操作以生成输出有界指针,其中通过签名操作所生成的签章被包括于输出有界指针内替代输入有界指针的规定位;处理装置进一步用于在输出有界指针的相关联的属性内设置签名信息以标识输出有界指针已经签名。
附图说明
将仅通过举例方式参考所附图式中所图示的本技术的实施例来进一步描述本技术,其中:
图1为根据一个实施例的设备的框图;
图2展示指令类型的示例,针对这样的指令类型,若尝试设置或访问有界指针储存组件集内的指针值,则可触发错误,其中该指针值用于规定在由相关联的范围信息所指示的范围以外的地址;
图3根据一个实施例图示与有界指针相关联的标签位的使用;
图4根据一个实施例示意性地图示签名操作及后续授权操作;
图5根据一个实施例图示有界指针的相关联的属性内的签名信息的使用;
图6为根据一个实施例的图示签名操作的流程图;
图7为根据一个实施例的图示授权操作的流程图;
图8图示其中相对于有界指针的指针值储存该有界指针的范围信息的示例性布置;
图9为根据一个实施例的图示经执行以确保签名能力(也称为经签名有界指针)的不变性的操作的流程图;
图10为根据一个实施例的图示可在许可修改签名能力的指针值时执行的操作序列的流程图;
图11为图示根据一个实施例所执行的去参考操作的流程图;
图12为根据一个实施例的图示可如何将签名操作的能力限制于其中尚未签名输入能力的情况的流程图;
图13为图示根据一个实施例所执行的剥离(strip)操作的流程图;
图14A至14C图示可在一些实施例中执行以确定是否许可剥离的各种示例性检查;
图15根据一个实施例图示替代性签名能力编码;
图16A及16B为在其中根据图15的方法将签章添加至边界信息的实施例中分别图示签名操作及授权操作的流程图;
图17为根据一个实施例的示意性地图示可用于由保持于备份储存库中的数据重构能力的重建过程的图式;
图18为图示可根据一个实施例执行的能力重建过程的流程图;且
图19A至19C图示可在一些实施例中执行以确定在此能力重建过程期间是否许可签名的各种检查。
具体实施方式
在参考附图论述实施例之前,提供以下对实施例的描述。
一些处理设备可支持有界指针的使用。指针本身可指向或用于确定例如待访问的数据值的地址或待执行的指令的地址。然而,指针也可具有指示当使用指针时的可允许地址范围的相关联的范围信息。例如,对于确保依据指针确定的地址保持在某些边界内以维持行为的安全性或功能正确性,此可为有用的。例如,吾人对其中针对给定过程定义某些能力的基于能力的架构越来越感兴趣,并且若尝试实施在定义能力以外的操作,则可触发错误。有界指针的范围信息可为针对此架构定义的能力信息的部分,并且在基于能力的架构内,此有界指针(包括其相关联的能力信息)可称为能力。
因此,设备可具有有界指针储存组件,这些有界指针储存组件用于储存具有指示当使用指针时的可允许地址范围的相关联的范围信息的指针。每一有界指针储存组件可为缓存器或通用存储器中的存储器位置,例如,堆栈存储器上的位置。
可使用某些指令来引用此有界指针储存组件以获得指针,指针随后用于导出在指令的操作期间所需的存储器中的地址。可直接使用指针来标识存储器地址,或可例如通过将偏移添加至指针值以使用指针来导出存储器地址。
当考虑先前所提及的CFI问题时,有界指针的某些性质(诸如上文所提及的基于能力的架构中所用的这些)可使CFI问题减轻至一定程度。例如,相关联的范围信息可限制可在从储存于有界指针储存组件中的指针导出目标地址时由分支指令瞄准的地址的范围。在基于能力的架构中,也已知提供以下机制:防止将一般数据用作导出分支目标地址的能力,并且可进一步限制其中可维持某些能力的位置。然而,在这样的限制内,欺骗过程可能用可通过正被破坏的计算机程序生成所要控制流的方式操纵有界指针,例如,通过使得能够将控制传送至非预期的程序地址来操纵。
因此本文所描述的技术的目的在于进一步改良这样的潜在弊端的复原力以便改良CFI。
在一个实施例中,提供一种设备,此设备具有用于储存有界指针的储存器,其中每一有界指针包括指针值及相关联的属性,并且其中相关联的属性包括指示当使用指针值时的可允许地址范围的范围信息。另外,提供一种机制以允许将有界指针签名。特定而言,设备内的处理电路经布置以对输入有界指针执行签名操作以生成输出有界指针,其中通过签名操作所生成的签章被包括于输出有界指针内替代输入有界指针的规定位。另外,有界指针的相关联的属性经布置以包括签名信息,并且处理电路设置输出有界指针内的签名信息以标识输出有界指针已经签名。
通过采用签名操作,可接着在允许使用该经签名有界指针之前引入签章检查过程。仅对用于生成签章的原始信息知情的实体将很容易能够通过签章检查过程,因此这可防止由非既定的使用有界指针的实体使用该有界指针。
进一步地,例如,考虑其中各种实体为正在设备上执行的不同任务的情况,若任务A将其稍后用作返回地址的有界指标签名,并且另一任务B接着尝试修改该有界指针而目的为尝试修改待由任务A使用的返回地址,则即使任务B可对指针进行修改,也极有可能发生以下情况:经修改的有界指针稍后将不能通过由任务A执行的授权过程,因为任务B将通常对当执行签名操作时由任务A所使用的信息不知情。
因此,这使得能够显着地增强CFI攻击的复原力。
此外,根据上文所描述的方法,使用有界指针的相关联的属性来标识有界指针是否已经被签名。因此,当调用某些操作以操作输入有界指针时,可参考相关联的属性进行检查以确定输入有界指针是否经签名,并且可依据输入有界指针是否经签名而修改所执行的动作。
通过此方法,可容易地布置设备以防止关于经签名有界指针执行某些动作,藉此提供进一步增强的安全性。
特定而言,在一个实施例中,针对需要使用储存器内的有界指针的至少一个请求操作,处理电路经布置以依据相关联的属性内的签名信息确定该有界指针是否经签名,并且依据通过签名信息将有界指针标识为是否经签名确定待响应于请求操作而采取的处理步骤。通过此方法,处理电路能够控制允许对经签名有界指针执行可对未签名有界指针所执行的操作的程度。例如,通过此方法,处理电路可禁止修改经签名有界指针、可禁止在去参考操作(也就是说,其中要使用有界指针的指针值来标识存储器中的地址)期间使用经签名有界指针以禁止已经签名的有界指针的签名等等。
或者,若未禁止操作,则一旦知晓输入有界指针为经签名有界指针即仍可存在对操作施加中的一个些约束。例如,在一些实施例中,可执行对经签名有界指针中的一个些修改,但未必执行可对未签名有界指针执行的所有可能修改,并且因此,可通过使用输入有界指针的签名信息来确定此有界指针是否经签名,而相应地控制请求操作。
例如,在一个实施例中,可布置如下:经签名有界指针可具有其经修改的相关联的属性中的一个些属性,同时防止在确定签名有界指针时对指针值进行任何修改。或者,如上文所提及的,在某些实施方案中可确定完全防止对经签名有界指针进行任何修改同时此指针保持经签名。
存在可防止对经签名有界指针执行的某些操作的若干方式。在一个实施例中,可在尝试对经签名有界指针执行不允许的动作时确定使该经签名有界指针无效。或者,可生成错误,例如,导致软件中发生异常。
签名信息可采取多种形式。在一个实施例中,签名信息为签名位,此签名位在相关联的属性内设置以指示有界指针经签名且其在相关联的属性内清除以指示有界指针未签名。因此,在此实施例中,专用签名位被包括于相关联的属性内以依据相关联的有界指针是否经签名而设置或清除。应了解,用于指示设置状态的签名位的值及用于指示清除状态的值可依据实施例而变化,并且因此尽管在一个实施方案中,值1可指示设置状态且值0可指示清除状态,但在替代实施例中,值0可指示设置状态且值1可指示清除状态。
作为具有相关联的属性内的专用签名位的替代,在替代实施例中,可将签名信息编码于也用于标识有界指针的至少一个其它性质的多位字段内。在一些情况中,此可提供可用属性空间的更高效使用。
在一些实施例中,对何时可执行签名操作施加一些约束可以是适当的。特定而言,在一个实施例中,处理电路可经布置以防止执行签名操作,除非满足规定条件。
规定条件可采取多种形式,但在一个实施例中,规定条件经布置以确保输出有界指针的随后去签名将不生成不同于原始输入有界指针的有界指针。
在一些情况中,可在用于有界指针的编码中存在空间以在不覆写关于有界指针的任何现有信息的情况下添加签章,有界指针在编码内有效地具有充足从由空间以允许插入签章。然而,在替代实施例中,情况可能为:在有界指针编码内不存在足够从由位以允许在不覆写有界指针的预先存在信息中的一个些信息的情况下添加签章。在这样的情况中,规定条件可使得当输入有界指针的规定位(也就是说,用于容纳呈经签名版本的签章的位)包括可从输入有界指针的其它位再现的信息时满足此规定条件。因此,在这样的实施例中,尽管规定位可含有定义有界指针的部分(诸如,指针值的部分或范围信息的部分)的实际信息,但这些规定位内的值可从输入有界指针的其余位的知识再现,并且因此为有效冗余且可在不丢失信息的情况下由签章覆写。
相反,若确定输入有界指针的规定位包括不可从输入有界指针的其它位再现的信息,则在一个实施例中确定未满足规定条件,并且在该情况中处理电路可经布置以防止将输入有界指针签名且采取预定动作。预定动作可采取多种形式,但例如可涉及使输入有界指针无效或造成处理器错误以发生异常。
在一个实施例中,处理电路经布置以禁止在签名有界指针为时使用有界指针来确定要在存储器中访问的地址。因此,当引用有界指针以生成存储器地址时,处理电路可引用相关联的属性内的签名信息以确定有界指针是否经签名,并且若有界指针为经签名则防止使用此有界指针。此提供增强的安全性,而无需依赖于防止生成可访问的存储器地址的经签名有界指针本身的形式。
存在可在执行签名操作期间生成签章的若干方式。在一个实施例中,处理电路经布置以使用指针值的至少一部分生成签章。在一些实施例中,当生成签章时使用指针值的整体。
除使用指针值的至少一部分以外,在一个实施例中处理电路经布置以在生成签章时使用签名密钥及上下文数据的物项。尽管签名密钥可由设备内的若干实体(例如,若干不同任务)知晓,但上下文资料的物项意要为仅由致使签名发生的实体且视情况由一个或多个其它相关实体知晓的数据,并且因此,此显着地降低不为上下文资料的物项所拥有的实体可成功地对此经签名有界指针去签名的机率。
存在其中经签名有界指针可经布置为未签名的若干方式。在一个实施例中,处理电路响应于授权请求以对输入经签名有界指针执行授权操作以在被包括于输入经签名有界指针内的签章与由处理电路使用提供于经签名有界指针内的指针值的至少一部分所生成的授权签章之间侦测到签章匹配的情况下生成输出未签名有界指针。
因此,仅在侦测到签章匹配的情况下,将生成输出未签名有界指针。若不出现签章匹配,则可采取预定动作,诸如使输入经签名有界指针无效或造成处理器错误。在另一示例性实施方案中,在不存在签章匹配情况下使输入经签名有界指针作为经签名有界指针可认为恰当。
在一个实施例中,除先前所提及的经签名有界指针内所提供的指针值的至少一部分以外,处理电路经布置以使用签名密钥及上下文数据的物项生成授权签章。如先前所提及的,通过在签名及授权过程两者中使用上下文数据的物项,此显着地降低未经授权实体执行经签名有界指针的成功授权的机率
在一个实施例中,当侦测到签章匹配时,处理电路经布置以通过用依据输入经签名有界指针中的一个或多个位所确定的数据替换签章且清除相关联的属性内的签名信息以标识输出有界指针为未签名来生成输出未签名有界指针。通过此方法,有效地重新生成原始未签名有界指针中的任何冗余数据,因此将经签名有界指针还原回至其原始未签名形式。
如先前所提及的,在签名操作期间由签章替换的输入有界指针的规定位可采取多种形式,但在一个实施例中,这些规定位含有指针值的部分。在此布置中,处理电路经布置以在指针值的该部分可从指针值的剩余部分导出时确定满足允许执行签名操作的规定条件。例如,情况通常为:指针值中的一个定数目个最高有效位实际上提供指针值之前一最高有效位的经签名扩展形式,或替代地全部设置至0(也就是说,零扩展形式)。在此布置中,若将签章放置于指针值的经签名扩展(或经零扩展)部分内,若签章置于指针值的签名扩展(或零扩展)部分,则此导致不丢失信息,并且最终稍后可在对经签名的指针去签名时还原指针值的签名扩展或零扩展形式。因此,在这样的条件下,可标识满足规定条件,并且因此允许签名。
在一个这样的实施例中,当有界指针为未签名时,处理电路经布置以将指针值解译为由包括这些规定位的有界指针的默认多个位规定,并且当有界指针为经签名时,处理电路经布置以将指针值解译为由排除这些规定位的经减少的多个位规定。通过取决于有界指针是否经签名而采取指针值的不同解译,此可导致在允许某些修改同时有界指针为经签名的情形中的有界指针中的一个些处置简单化。
例如,在一个实施例中,可相对于指针值规定范围信息。在某些实施方案中,用于有界指针的编码空间相当有限,并且可通过相对于指针值规定范围而非提供绝对范围信息来达成范围信息的更高效编码。
然而,当采用此方法时,处理电路可需要响应于致使变更指针值的操作而也调整范围信息以确保不由于指针值的变更而改变由范围信息规定的范围。特定而言,可期望仅可在某些严格受控情况下改变有界指针的范围信息且指针值中的一般改变不应导致范围信息的任何改变。
然而,通过取决于有界指针是否经签名而如先前所提及对指针值采取不同解译,此避免需要在签名及去签名有界指针时调整范围信息。特定而言,当生成经签名有界指针时,不认为签章本身形成(减小尺寸)指针值的部分,并且因此不视为改变指针值,因此避免需要调整边界信息。
尽管在一些实施例中经签名有界指针仅可通过先前所提及的授权操作往回转换成未签名状态,但在替代实施例中,可能提供用于将经签名有界指针转换成未签名有界指针的替代性机制。特定而言,在一个实施例中,处理电路经布置以响应于剥离请求而对输入经签名有界指针执行剥离操作以在满足剥离条件的情况下生成输出未签名有界指针,处理电路经布置以在满足剥离条件时通过用依据输入经签名有界指针中的一个或多个位所确定的数据替换签章且清除相关联的属性内的签名信息以标识输出有界指针为未签名来生成输出未签名有界指针。
应了解,剥离操作可能为相当强大的机制,因为其不需要在执行先前所提及的授权操作时所需要的签章匹配。因此,在一个实施例中,剥离操作的使用限制于满足剥离条件的情况。
剥离条件可采取多种形式。在一个实施例中,若处理电路正在预定特权状态下操作,则确定满足剥离条件。因此,剥离操作的使用限制于由处理电路执行的某些特权码。
在替代实施例中,可在设备内提供配置储存组件(例如,配置缓存器),此配置储存组件为可在处理电路正在预定特权状态下操作时设置,并且若该配置储存组件具有指示许可剥离操作的值,则确定满足剥离条件。因此,剥离操作的使用仍由预定特权状态有效地控制,但若配置缓存器允许剥离操作则可在处理电路处于其它状态中时使用剥离操作。
在更进一步替代实施例中,剥离请求本身可标识储存于储存器内的剥离能力。例如,剥离请求可采取将剥离能力标识为输入操作数中的一个的剥离指令的形式,另一操作数标识待经历剥离操作的经签名有界指针。接着,从储存器取回经标识的剥离能力,并且仅在剥离能力指示许可剥离操作时许可继续剥离操作。
尽管针对剥离条件的以上三个选项可用于三个不同实施例中,但在一个实施例中,可一起采用其中多个选项,使得若满足这些条件中的一个或多者则确定满足剥离条件。
在一个实施例中,可许可将已经签名的有界指针签名。然而,在替代实施例中,处理电路可经布置以响应于依据输入有界指针的签名信息确定输入有界指针已经签名而防止执行签名操作。因此,签名信息本身用于控制其中可执行签名操作的情况。
存在可规定签名操作的若干方式。在一个实施例中,处理电路经布置以在执行指令集内的签名指令时执行签名操作。类似地,处理电路可经布置以执行授权操作以在执行指令集内的授权指令时将经签名有界指针去签名。进一步地,若支持先前所提及的剥离操作,则可在指令集内提供特定剥离指令供由处理电路执行以实施此剥离操作。
这样的额外指令可完全经布置以执行签名或去签名操作,或替代地可经布置以执行除签名或去签名操作以外的至少一个进一步操作。
如先前所提及的,在一个实施例中,用签章替换的输入有界指针的规定位含有指针值的部分。在替代实施例中,这些规定位含有范围信息的部分。在此实施例中,处理电路可经布置以在由范围信息规定的范围可表示于范围信息的剩余部分内时确定满足规定条件。此可归因于在最初规定于不丢失任何信息的情况下容纳签章的范围信息中存在充足冗余的确定。或者,可确定,尽管最初不存在充足冗余,但可能降低范围信息的精确度以生成充足冗余,并且在该情况中接着在经签名有界指针内以降低的精确度规定范围信息。
现在将参考附图描述特定实施例。
图1示意性地图示包括用于处理指令的处理管线4的数据处理设备2的示例。在此示例中,处理管线4包括若干管线级,包括取回级6、译码级8、发布级10、执行级12及回写级14,但应了解,可提供其它类型的级或级的组合。例如,在一些实施例中,可包括用于执行缓存器重新命名的重新命名级。待处理的指令逐级移动,并且当一指令在一个级处处于搁置中时,另一指令可在管线4的不同级处处于搁置中。
取回级6从1阶(L1)指令缓存20取回指令。取回级6通常可连续从相继指令地址取回指令。然而,取回级也可具有用于预测分支指令的结果的分支预测器22,并且取回级6可在预测发生分支的情况下从(不连续)分支目标地址取回指令,或在预测不发生分支的情况下从下一连续地址取回指令。分支预测器22可包括一个或多个分支历史表,这样的分支历史表用于储存用来预测可能发生还是不发生某些分支的信息。例如,分支历史表可包括计数器,这样的计数器用于追踪先前所执行分支的实际结果或表示对分支进行的预测的可信度。分支预测器22也可包括分支目标地址缓存(BTAC)24,其用于快取分支指令的先前目标地址以使得在随后遇到相同分支指令时可预测这样的分支指令。
将取回的指令传递至译码级8,此译码级译码这样的指令以生成经译码指令。经译码指令可包括用于控制执行级12以执行适当处理操作的控制信息。对于从缓存20取回中的一个些较复杂指令,译码级8可将这些指令映射至多个经译码指令,这样的可称为微运算(μops或uops)。因此,在从L1指令缓存20取回的指令与由管线的稍后级所见的指令之间可不存在一对一关系。一般而言,本申请案中的对“指令”的引用应理解为包括微运算。
将经译码指令传递至发布级10,发布级确定执行指令所需的操作数是否可用且在操作数可用时发布指令以供执行。一些实施例可支持有序处理(in-order processing)以使得以对应于其中从L1指令缓存20取回指令的程序次序的次序发布指令以供执行。其它实施例可支持无序执行以使得以不同于程序次序的次序发布指令至执行级12。无序处理可用于改良效能,因为当拖延较早指令而等待操作数时,可首先执行其操作数可用的程序次序中的较后指令。
发布级10发布指令至执行级12,在执行级处执行指令以实施各种数据处理操作。例如,执行级可包括若干执行单元30、32、34,这样的执行单元包括:算术/逻辑单元(ALU)30,其用于对整数值实施算术或逻辑运算;浮点(FP)单元32,用于对以浮点形式表示的值实施运算;以及加载/储存单元34,其用于实施用于将来从1阶(L1)数据缓存36的数据值加载至寄存器40的加载操作,或用于将来从寄存器40的数据值储存至L1数据缓存36的储存操作。应了解,这样的仅系可提供的执行单元的类型中的一个些示例,并且也可提供诸多其它种类。为实施处理操作,执行级12可从缓存器集40读取数据值。接着,可通过回写级14将经执行指令的结果回写至寄存器40。
L1指令缓存20及L1数据缓存36可为包括多阶缓存的缓存层级的部分。例如,也可提供2阶(L2)缓存44且视情况可提供额外阶缓存。在此示例中,L2缓存44在L1指令缓存20与L1数据缓存36之间共享,但其它示例可具有单独L2指令与数据缓存。当待取回的指令不在L1指令缓存20中时,则可从L2缓存44取回指令;且类似地若指令不在L2缓存44中,则可从主存储器50取回指令。类似地,响应于加载指令,若数据不在L1数据缓存36中,则可从L2缓存44取回资料;且若需要,则从存储器50取回资料。可使用任何已知方案来管理缓存层级。
由管线4使用以指代程序指令及数据值的地址可为虚拟地址,但可实体寻址至少主存储器50及视情况也寻址缓存层级的至少一些阶。因此,可提供转译旁看缓冲器52(TLB)以用于将由管线4使用的虚拟地址转译成供访问缓存或存储器使用的实体地址。例如,TLB52可包括若干条目,每一者规定虚拟地址空间的对应页的虚拟页地址及对应实体页地址,应将虚拟页地址映射至对应实体页地址以将对应页内的虚拟地址转译至实体地址。例如,虚拟及实体页地址可对应于对应虚拟及实体地址的最高有效部分,其中在将虚拟地址映射至实体地址时剩余的最低有效部分保持不改变。除地址转译信息的外,每一TLB条目也可包括规定访问许可(诸如,指示某些地址页在管线4的某些模式中是否可访问)中的一个些信息。在一些实施例中,TLB条目也可定义对应页地址的其它性质,诸如,定义响应于读取或写入操作而更新缓存层级的哪些阶(例如,缓存应以回写模式还是直写模式操作)的缓存策略信息,或定义是否可通过存储器系统重新排序对应页中的地址的数据访问(与管线4发布数据访问的次序相比)的信息。
尽管图1展示单阶TLB 52,但应了解,可提供TLB的层级以使得1阶(L1)TLB 52可包括用于转译若干最近访问页中的地址的TLB条目,并且可提供2阶(L2)TLB以用于储存用于更大数目个页的条目。当所需条目不存在于L1TLB中时,则可从L2TLB取回此条目或从层级中的额外TLB取回此条目。若待访问的页的所需条目不在TLB中的任一者中,则可执行页表走查以访问存储器50中的页表。本技术中可使用任何已知TLB管理方案。
此外应了解,一些系统可支持多个阶的地址转译以使得例如可使用第一TLB(或TLB层级)以将虚拟地址转移成中间地址,并且接着使用一个或多个额外TLB的第二位阶的地址转译将中间地址转译成用于访问缓存或存储器的实体地址。例如,此可用于支持虚拟化,其中可由操作系统管理第一阶的地址转译且可由超管理器管理第二阶的地址转译。
如图1中所展示,设备2可具有有界指针缓存器集60。尽管有界指针缓存器集在图1中展示为实体上与通用数据缓存器集40分离,但在一个实施例中,可使用同一实体储存来提供通用数据缓存器及有界指针缓存器两者。
每一有界指针缓存器60包括:指针值62,其可用于确定待访问的数据值的地址;以及范围信息64,其规定在使用对应指针62时的可允许地址范围。视情况,有界指针缓存器60也可包括限制信息66(本文也称为许可信息),限制信息可定义在使用指针时中的一个或多个限制/许可。例如,可使用限制66来限制可使用指针62的指令类型或其中可使用指针的管线4的模式。因此,可考虑范围信息64及限制信息66以定义允许在其中使用指针62的能力。当尝试在所定义能力以外使用指针62时,可触发错误。例如,范围信息64可用于确保指针保持于某些已知边界内且不杂散至可能含有敏感或安全信息的存储器地址空间的其它区域。在其中针对通用数据缓存器及有界指针缓存器两者使用同一实体储存的实施例中,则在一个实施例中,例如可将指针值62储存于如针对对应通用缓存器所使用的同一储存位置内。
图2展示指令类型的示例,针对此示例,使用可允许范围来保护以免对数据或指令的未经授权的访问。如图2的顶部部分中所展示,特定有界指针缓存器PR1包括给定指针值62及范围信息64,在此示例中使用定义可允许范围的下界的下界地址68及定义可允许范围的上界的上界地址69来规定范围信息。例如,设置边界68、69以定义地址范围80000至81000。当某些指令引用有界指针缓存器PR1且依据指针62确定的地址在于此范围以外时,可触发错误。
例如,如图2的部分A中所展示,在一些系统中,若尝试将指针缓存器60中的指针62的值设置至在于由范围信息64规定的范围以外的值(此处假定指针直接规定地址),则可触发错误。此避免指针62采用在所规定范围以外的任何值,以使得可确保使用此指针的任何访问安全地在于所允许范围内。
或者,如图2的部分B中所展示,当指令尝试在指针62的地址在于所规定范围以外时访问由该地址标识的位置时,可触发错误。因此,仍可允许将指针62设置至所规定范围以外的值,但一旦尝试指针地址(或从指针导出的地址)处的数据访问,即可在此地址处于所允许范围以外的情况下触发错误。其它系统可响应于图2的部分A及B中所展示的两种指令类型而触发错误。.
可以不同方式设置范围信息64。例如,安全码或操作系统或超管理器可规定对于给定指针所允许的范围。例如,指令集架构可包括用于设置或修改给定指针62的范围信息64的若干指令,并且这样的指令的执行可限制于某些软件或处理器4的某些模式或异常状态。可使用用于设置或修改范围信息64的任何已知技术。
除当执行参考指针的某些指令时可在执行状态12下使用的有界指针储存组件集60的外,也可使用程序计数器能力(PCC)缓存器80以在正从1阶指令缓存20取回指令时提供取回级6处的类似功能。特定而言,可将程序计数器指针储存于字段82中,其中PCC 80也提供范围信息84及任何适当限制信息86,类似于通过有界指针储存组件集60中的指针中的每一者提供的范围及限制信息。
图3示意性地图示如何结合个别数据区块使用标签位来标识这些数据区块表示能力(也就是说,有界指针及相关联的限制信息)还是表示正常数据。特定而言,存储器地址空间110将储存一系列数据区块115,这样的数据区块通常将具有规定尺寸。完全出于说明,在此示例中假定每一资料区块包括128个位。结合每一数据区块115,提供标签字段120,在一个示例中此标签字段系称为标签位的单个位字段,此单个位字段经设置以标识相关联的数据区块表示能力且经清除以指示相关联的数据区块表示正常数据,并且因此不可视为能力。应了解,与设置或清除状态相关联的实际值可视实施例而变化,但完全通过说明的方式,在一个实施例中若标签位具有值1,则其指示相关联的数据区块系能力,并且若标签位具有值0,则其指示相关联的数据区块含有正常数据。
当将能力加载至有界指针缓存器60(本文也称为能力缓存器)中的一个(诸如,图3中所展示的能力缓存器100)中时,则标签位随能力信息一起移动。因此,当将能力加载至能力缓存器100中时,指针102、范围信息104及限制信息106(下文称为许可信息)将加载至能力缓存器中。另外,结合该能力缓存器或作为其内的特定位字段,设置标签位108以标识内容表示能力。类似地,当将能力储存回至存储器时,将结合其中储存能力的数据区块而设置相关标签位120。通过这种方法,可在能力与正常数据之间区分开且因此确保正常数据无法被用作能力。
图4为示意性地图示可用于将未签名能力转换成经签名能力的签名操作及随后可用于将经签名能力转换回成未签名能力的对应授权操作的图式。提供未签名能力150(也称为未签名有界指针)作为用于签名操作的输入操作数,能力150包括指针部分155及属性部分160。在指针部分155内规定指针值,并且在属性部分160内规定范围信息,连同指示未签名能力内所提供的指针值的允许使用的各种许可信息。例如,许可信息可标识对于哪一类型的操作允许引用指针,并且因此,例如标识可使用指针来标识数据加载还是储存、标识待取回的指令等。另外,如先前所论述,提供标签位165,此标签位经设置以标识相关联的信息区块表示能力。能力的尺寸可视实施方案而变化,但与能力包括128个位(则在一个实施例中,指针部分155可包括64个位且属性部分160也可包括64个位)的先前所描述的示例一致。
用于将未签名能力转换成签名能力的加密签名功能170接收用于导出要添加以形成经签名能力的签章的若干输入。特定而言,功能170可访问加密签名密钥且另外可访问混淆值(salt value)。混淆值可采取多种形式,但在一个实施例中表示将仅可用于以下中的一个(或多个)任务的上下文信息:将合理地需要将经签名能力去签名且因此应能够成功地执行关于签名能力的授权操作。上下文信息可采取多种形式,但在一个实施例中,例如可以是将仅为以下中的一个(或多个)任务所知的堆栈指针位置:将合理地想要授权签名能力。
另外,功能170接收储存于指针部分155内的指针值的至少一部分。在一个实施方案中,预计指针值将包括一定数目个唯一指针位,其中其余最高有效位系唯一指针位的签名扩展版本(因此依据唯一指针位的最高有效位而全部为1或全部为0)或唯一指针位的零扩展版本(也就是说,全部为0)。在一个实施例中,指针值中的一个定数目个最高有效位中的此基本上冗余信息用作一旦生成签章即将此签章插入其中的位置,藉此使得能够在不丢失任何信息的情况下将签章并入于所签名能力内。在替代实施例中,此过程可经布置以将签章插入至能力的另一部分中,例如插入于属性部分160的若干位内,如例如稍后将参考图15的实施例所论述。
在更进一步的示例性实施例中,情况可以是,在未签名能力编码存储器在充足未用位,可在经签名能力内使用这些未用位来保持签章值。
在图4中所展示的实施例中,假定将签章插入至指针部分155的较高位中,并且特定而言插入于将含有全部1或全部0的区段中。在图4中所展示的实施例中,情况为,指针值的整体仍用作签名功能170的输入,并且使用该指针值、加密签名密钥及混淆值来执行加密签名功能以生成签章,本文也称为散列(hash)。可使用任何适合的加密签名功能用于此目的。
在替代实施例中,此过程可经布置以使得仅将唯一指针位用作加密签名功能170的输入而非整个指针值。不论采取哪一方法,若要将签章添加于签名能力内的指针值的较高部分中,则所描述实施例的过程将执行检查以确保指针为“正准的”以使得签名字段(也就是说,用签章覆写的指针值的部分)含有唯一指针位的签名扩展或零扩展版本。随后,此将确保用于生成签名能力的有效签名过程后接着用于生成该签名能力的未签名版本的有效授权过程将提供与原始未签名能力150对应的所得未签名版本。存在可执行此检查的若干方式。例如,在一个实施例中,执行检查以确保此条件在签名之前为真,稍后将参考图6的示例对此进行论述。或者,可将在签名过程之后的测试验证并入于功能170内以比较原始能力与经授权能力(也就是说,在验证签名能力之后所生成的能力)。
如图4中所展示,一旦已生成签章,即将签章插入于经签名能力175的部分176的区段179中。接着,唯一指针位保持于部分176的区段177内。在许可部分180内提供签名字段182,此签名字段经设置以标识能力175为签名能力,并且另外标签位185保持处于设置状态中以指示数据的相关联的128个位表示能力。通过提供单独签名字段182,此使得某些所请求操作能够依据给其所具有的输入能力为未签名能力还是经签名能力而以不同方式表现。例如,此使得设备能够防止关于经签名能力执行某些动作,藉此提供进一步增强的安全性。
如图4的下部部分中所展示,可调用授权功能190以尝试将签名能力175去签名。首先,标识唯一指针位177,并且使唯一指针位经历签名扩展操作192以生成在执行签名功能170时所使用的原始指针值。若以零扩展格式表达原始指针值,则在步骤192处原本将执行零扩展操作。此外,只要已将唯一指针位用作签名功能170的输入,则在步骤192处不需要签名扩展或零扩展操作,而替代地可将唯一指针位直接提供至授权签章生成功能195。
如图4中所展示,授权签章生成功能195也可访问加密签名密钥且可访问混淆值。应了解,除非授权签章生成功能195可访问与由加密签名功能170所用相同的混淆值(也就是说,上下文信息的相同物项),否则授权签章生成功能将生成将匹配插入于签名能力的区段179中的签章的授权签章系极不可能的。
接着,将由授权签章生成功能195使用相关指针位、加密签名密钥及混淆值所生成的授权签章输入至比较区块198,此处比较授权签章与保持于签名能力的区段179中的签章。在匹配的情况中,则认为已通过授权,并且生成签名能力175的未签名版本。否则,标识失败条件,从而致使采取预定动作,此将稍后以举例方式参考图7论述。
假定通过授权检查,则通过从区段179移除签章且用区段177中的唯一指针位的签名扩展(或零扩展,此取决于实施方案)版本替换签章来生成未签名能力以重新生成初始指针值。此外,清除签名信息182以标识能力现在为未签名。
签名字段182可采取多种形式。图5图示两个示例性方法。根据一个方法,提供专用单位签名字段,其中第一值指示能力为未签名且第二值指示能力为经签名。在图5中所展示的示例中,假定当将值设置至逻辑值1时,此指示能力为经签名,而若将值清除至逻辑值0,则此指示能力为未签名。然而,应理解,在不同实施例中,签名字段182内的逻辑值0及逻辑值1的含义可反转。
在替代实施例中,可提供多位型字段而非提供用于签名信息的专用位,以使得除标识有界指针是否经签名以外还可标识有界指针的至少一个其它性质。图5中展示一些可能编码。可期望表示的其它类型的能力将依据实施例而明显地变化。完全通过说明的方式,可使用多位型字段来标识能力何时为密封能力。例如,如University of CambridgeComputer Laboratory,UCAM-CL-TR-850,ISSN 1476-2986,R Watson等人的题为“Capability Hardware Enhanced RISC Instructions:CHERI Instruction-SetArchitecture(功能硬件增强型RISC指令:CHERI指令集架构)”的技术报告第850号中所论述,可使用密封作为对能力的锁定以防止使用此能力。仅具有正确密钥的实体(锁定能力的一个,并且通常实施为能力本身)可将能力解锁。
通过使用多位型字段,在其中存在可表示的两个不同类型的能力的情况中,此可导致能力的可用属性空间内的更高效编码。
图6为根据一个实施例图示签名操作的流程图。在步骤200处,例如,通过处理器执行签名指令来请求能力的签名。此后,在步骤205处标识要由签章覆写的指针的位。依据图4的示例,经标识的位将系指针值的较高位,其系唯一指针位的签名扩展版本。
在步骤210处,接着确定所有经标识的位是否具有与指针的剩余部分的最高有效位相同的值,也就是说,经标识的位是否确实为唯一指针位的签名扩展版本。如先前所提及的,在替代实施例中,可使用零扩展格式,并且在该情形中,在步骤210处将确定所有经标识的位是否都为零。
若在步骤210处确定所有经标识的位都不满足所需条件,也就是说,在图6的示例中所有经标识的位为不具有与指针的剩余部分的最高有效位相同的值的位,则过程进行至步骤235,此处采取预定动作。预定动作可采取多种形式,但在一个实施例中可涉及生成处理器错误,以致使造成异常以进入进一步处理。或者,例如,可通过清除标签位以使得将能力有效地转换成通用数据使经标识的输入能力无效,并且可不再用作能力。通过执行步骤210且在不满足条件时进行至步骤235,此防止了以下可能性:将未签名能力签名且随后授权经签名能力的动作可生成所得未签名能力不匹配原始未签名能力,也就是说,在图4的示例中归因于签名及去签名可能生成不同指针值的过程。
尽管签名且随后授权的动作不改变指针值很重要,但签名且授权的动作不能改变与能力相关联的权限(例如,改变由范围信息所规定的范围或改变针对能力所规定的许可)也很重要。在一个特定实施例中,由于能力内的编码空间限制,因此其可经布置以使得相对于指针值规定范围信息,并且因此,当合理地改变指针值时需要执行过程以适当地重新编码范围信息。在此环境内,确保签名且授权的动作不可致使指针值改变明显甚至更为重要,因为若这样的动作可致使指针值改变则可致使也改变范围信息且因此改变与能力相关联的权限。
假定通过了步骤210处的检查,并且因此确定所有经标识的位具有与指针值的剩余部分的最高有效位相同的值,则过程进行至步骤215,其中由指针值、签名密钥及混淆值生成签章。此后,在步骤220处,用签章替换指针的经标识的位,如先前参考图4所论述,并且在步骤225处,设置签名属性字段182以指示能力已经签名。此后,在步骤230处,例如,可输出签名能力以供储存于能力缓存器60中的一个中。
图7为图示根据一个实施例所执行的授权过程的流程图。在步骤250处,例如,通过处理器执行授权指令来请求签名能力的授权。在步骤255处,接着标识唯一指针位尺寸。此对于确保使用正确位来执行授权过程而言较为重要。在一个实施例中,唯一指针位部分的尺寸可以是固定的,并且因此,将不改变。在替代实施例中,可在软件控制下(例如,通过在预定特权等级下执行的软件)全局地配置指针值内的唯一指针位部分的尺寸。在更进一步的示例中,唯一指针位部分的尺寸可以是上下文敏感的,并且又可在软件控制下设置,其中值取决于当前上下文。通常将在与针对相关联的签名操作所用相同的上下文中执行授权。若必要,则可执行检查以确认满足此条件,以允许授权进行。
在步骤255之后,在步骤260处抽取唯一指针位,此后在步骤265处将唯一指针位进行签名扩展以形成全指针值。如先前所引用,若在未签名指针中使用零扩展格式,则将在步骤265处将经抽取位进行零扩展。
在步骤270处,执行授权签章生成功能195以由指针值、签名密钥及混淆值生成授权签章。此后,在步骤275处,确定授权签章是否匹配签名能力内所提供的签章,并且若不匹配,则过程进行至步骤295,此处采取预定动作。预定动作可采取多种形式。例如,可造成处理器错误以生成异常,或例如,可通过清除标签位使签名能力无效。在更进一步的示例性布置中,可确定使能力为经签名且因此不完成授权过程。接着,将预期,能力的任何后续使用都将失败,因为后续使用将预期使用未签名能力且此时能力仍将为经签名。
若在步骤275处确定授权签章匹配签名能力中的签章,则认为已通过授权过程,并且过程进行至步骤280,此处用在步骤265处从经减小尺寸指针导出的经签名扩展位替换能力中的签章。另外,在步骤285处,清除签名属性信息以指示能力为未签名,并且此后,例如,在步骤290处输出未签名能力以供储存于能力缓存器60中的一个内。
如先前所提及的,尽管在一个实施例中以绝对项规定范围信息且因此指针值的任何改变本身不改变范围,但在(例如)将编码空间局限于能力内的替代实施例中,可相对于指针规定范围信息以减少待储存于能力内以规定范围的信息的量。例如,图8中展示此布置。特定而言,可规定两个偏移305、310以形成范围信息,这样的标识从指针至基值的偏移及从指针至限值的偏移,因此达成范围315的两端的标识。接着,可使用指针值300及相对偏移信息来执行限值确定过程307、312以标识范围315的尺寸。尽管此可提供规定范围信息所需的位的数目的减少,但其导致需要在改变指针值时调整范围信息,以确保不会由于指针的调整而变更范围。
通过提供签名能力的字段182内的签名信息,可容易地标识输入能力为经签名还是未经签名且致使处理器依据能力为经签名还是未经签名而以不同方式操作。例如,此达成要对使用签名能力的方式施加的某些限制,其中这样的限制不可出现于能力为未签名的情形中。图9图示其中实施签名能力的不变性中的一个示例性选项。因此,在步骤350处,假定请求了对所规定输入能力的某一方面的请求的修改。例如,此可采取规定输入能力的指令的形式,例如,参考能力缓存器60中的一个,并且为致使修改能力的部分的指令类型。在步骤355处,取回经标识的输入能力,并且复查签名属性信息以查看其是否指示能力为经签名或是未签名。若能力为未签名,则过程进行至步骤360,此处依据在步骤350处所接收的请求执行正常能力修改处理。然而,若确定所规定的输入能力为经签名,则替代地过程进行至步骤365,此处采取预定动作。例如,此可致使造成处理器错误或使输入能力无效。作为又一选项,可确定使能力经签名但未经修改。然而,在一些情况中,可认为此并非适合的选项,因为可期望具有修改行为系错误的某一直接指示。
通过使经签名能力不变,此导致两个强大的性质。首先,欺骗实体不可尝试将签名能力改变成将容易授权的不同形式,因为尽管能力为经签名但不可对能力进行改变。
此外,在可相对于指针值规定边界信息的情形中,无需考虑对签名能力进行变更的潜在暗示,因为对修改签名能力的任何尝试将报错或能力的无效。
作为使整个签名能力不变的替代者,可替代地被配置为使得签名能力内的某些字段不变,并且因此,可依据在步骤350处所请求的修改类型且特定而言依据要修改的签名能力的字段而执行检查355。
图10图示图9的替代性选项,其中允许签名能力的改变且特定而言允许指针值的改变。因此,在步骤370处,请求指针值的改变。在步骤372处,依据所规定的输入能力的签名属性确定能力是否经签名。若其未经签名,则过程进行至步骤374,此处将指针值解译为具有全尺寸(也就是说,根据图4的示例,全64个位),并且在步骤376处,根据在步骤370处所接收的请求调整全尺寸指针值。在此示例中,依据先前参考图8所论述的布置,假定相对于指针值规定边界信息,并且因此,除调整指针值本身以外,在步骤378处,执行边界调整操作以调整边界信息(也就是说,范围属性)从而考虑到全尺寸指针的改变。
然而,若在步骤372处依据输入能力为经签名的签名属性确定采取指针值的不同解译。特定而言,在步骤380处,将指针值解译为具有经减小尺寸,也就是说,全尺寸减去已插入的签章的尺寸。通过在签名能力中以与在去签名能力中解译指针值不同的方式解译指针值,此避免需要在签名能力时且在稍后去签名能力时改变边界信息。相反,若指针值仍被认为具有全尺寸,则插入于指针字段的最高有效位中的签章的位可能会有效地变更指针值,并且因此将必需既在插入签章(因此导致指针值的第一改变)时又在当随后移除签章(因此导致指针值的另一改变)时的授权过程期间尝试调整边界信息。通过在能力为经签名时使用指针值的不同解译来避免这样的复杂化,并且这样的两种不同解译的使用系可容易实施的,因为使用能力内的签名属性信息182来标识这样的能力是否经签名,因此使得处理器能够在签名能力与未签名能力之间容易地区分开。
返回至图10,接着在步骤382处确定对经减小尺寸指针值的所请求改变将使指针在经减小尺寸内保持可获得,也就是说,不存在溢出条件。若非此情况,则过程进行至步骤388,此处采取预定动作,诸如先前所提及的造成处理器错误或使能力无效。然而,假定在经减小尺寸指针内可容许所请求改变,则在步骤384处调整经减小尺寸的指针,并且接着在步骤386处调整边界信息以考虑到经减小尺寸指针的改变。
通过相关联的属性中的经签名信息的使用而容易地使得处理器能够在经签名能力与未签名能力之间区分开,此使得处理器能够依据所规定的输入能力是否经签名而调整其它操作类型。例如,在一个实施例中,如图11中所展示,禁止经签名能力的去参考,因此确保不可使用经签名能力来标识要访问的存储器地址。特定而言,在步骤400处,接收请求以去参考能力。例如,此可通过执行标识所规定的输入能力以导出要访问的存储器地址的加载指令或储存指令而出现。在步骤405处,依据签名属性信息确定所规定的能力是否经签名。若其未经签名,则过程仅进行至步骤410,此处以标准方式使用能力内的指针值来访问存储器,假定从指针导出的存储器地址处于由能力所规定的边界内且通过能力的许可属性来允许正被请求的访问类型。
然而,若在步骤405处确定输入能力为经签名,则在步骤415处采取预定动作,例如,造成处理器错误或使能力无效。
作为步骤415的替代性选项,可认为允许从整个指针值字段导出存储器地址系适当的,因为最高有效位内的签章的并入可经布置以确保指针将标识存储器中的错误地址,因此导致存储器访问失败。然而,在其它实施方案中,可确定此方法不会得到所期望的安全等级,因为其依赖于其中规定指针值的最高有效位的签章将标识错误地址的指针值的使用。
图12为图示其中所执行的处理可取决于所规定的输入能力是否经签名的另一类型的操作的流程图。特定而言,根据图12的实施例,例如,通过标识输入能力的正执行的签名指令来调用能力签名过程。在步骤425处,通过参考签名属性信息确定输入能力是否已经签名。若其未经签名,则可在步骤430处(例如)使用图6的先前所描述方法执行正常能力签名过程。然而,若在步骤425处确定能力已经签名,则替代地可在步骤435处(例如)通过触发错误条件或使能力无效来采取预定动作。另一替代性选项可以是使能力保持为具有原始签名信息的经签名能力。
因此,通过能力的相关联的属性内的签名信息的使用,可在执行签名操作时于经签名能力与未签名能力之间区分开,并且因此,若需要,则防止将经签名能力重新签名。在替代实施例中,可确定允许将经签名能力重新签名,并且因此将不使用图12的过程。
尽管在一个实施例中将经签名能力去签名的唯一方式可以是使用其中在允许将能力去签名之前需要签章匹配检查过程的授权过程(诸如,先前参考图7所论述的授权过程),但在另一实施例中可提供额外功能以用于允许在某些情形中将经签名能力去签名。特定而言,可提供剥离功能,其在某些条件下许可将经签名能力转换成未签名能力而不执行签章匹配检查。在图13中通过举例方式图示此过程。
特定而言,在步骤450处,例如通过执行规定输入能力的剥离指令来请求经签名能力的剥离。在步骤455处,确定是否许可剥离,稍后参考图14A至14C的示例更详细地论述此步骤。若不许可剥离,则在步骤490处(例如)通过造成处理器错误、使能力无效或保持能力为经签名来采取预定动作。
若许可剥离,则在步骤460处标识唯一指针位尺寸,此后在步骤465处抽取唯一指针位,并且接着在步骤470处将唯一指针位进行签名扩展以形成全指针值。步骤460、465、470基本上与先前在描述授权过程时参考图7所论述的步骤255、260、265相同。
步骤475、480及485接着对应于图7的步骤280、285及290,从而致使用经签名扩展的位替换能力中的签章、清除签名属性信息且输出所得未签名能力。从图13与图7的比较可见,接着在许可剥离的情况下,不论授权是否匹配经签名能力中的签章,都无需生成任何授权签章或检查。
同样应了解,剥离功能可能为强大工具,并且因此在一个实施例中认为限制剥离功能在某些预定情形下的使用系适当的。在图14A至14C中阐述可对剥离功能的使用施加中的一个些示例性限制。首先考虑图14A,接着在步骤500处假定请求经签名能力的剥离。在此情形中,在步骤505处确定处理器是否正在预定提高特权状态下操作。预定提高特权状态可依据实施例而采取多种形式,但考虑(例如)虚拟机制型环境,预定提高特权状态可以是超管理器级。若确定处理器并非正在预定提高特权状态下操作,则过程进行至步骤515,此处报错,也就是说,执行在图13的步骤490中所标识的预定动作中的一个。然而,若处理器处于预定提高特权状态中,则在步骤510处通过跟随着来从图13的步骤455的“是”路径执行剥离功能。
图14B图示替代性方法,其中步骤520、530及535对应于图14A的步骤500、510及515,但其中由测试525替换测试505,并且特定而言确定特权配置缓存器是否已经设置以允许剥离。例如,特权配置缓存器可以是可在于预定特权状态下操作时由处理器设置的缓存器,并且因此,其值仅可通过在该预定特权状态下操作的处理器修改。假定配置缓存器的内容指示允许剥离,则在步骤530处执行剥离功能,否则,即在步骤535处报错。
图14C图示其中定义剥离能力的另一替代性方法。如先前所提及的,能力有效地标识可用于处理器中的一个组权限,并且尽管大部分能力可采取先前所描述有界指针的形式,但并非所有能力都需为有界指针。而是,可定义仅标识关于特定功能的某些权限的能力。因此,可定义剥离能力,例如,此剥离能力可保持于能力缓存器60中的一个内,并且规定为用于剥离操作的输入。因此,例如,剥离指令可将剥离能力标识为其操作数中的一个,并且标识为其正请求剥离的能力的另一操作数。在此布置中,在确定已请求经签名能力的剥离的步骤540之后,在步骤545处从相关能力缓存器取回由剥离指令所标识的剥离能力,并且接着分析此剥离能力以确定其内容。接着,在步骤550处确定剥离能力是否允许剥离经标识的经签名指针。若其允许,则在步骤555处执行剥离功能,而否则,即在步骤560处报错。
尽管在一个实施例中剥离能力可以是仅专用于标识是否许可剥离的能力,但在替代实施例中保持于能力缓存器60内的单个能力可标识若干许可,其中的一个系剥离许可。
在诸如先前所论述的设备内,可由处理器执行的指令集可包括若干能力指令,也就是说,具体标识为一个或多个操作数能力的指令。例如,为支持先前所描述的签名、授权及剥离功能,可提供以下三个指令:
CSIGN-将能力转换成签名能力
(能力缓存器作为起源及目的地,及可选上下文信息,例如混淆值)
CAUTH-将经签名能力转换成经历成功授权的未签名能力(能力缓存器作为起源及目的地,及可选上下文信息,例如混淆值)
CSTRIP-将经签名能力转换成不具有授权过程的未签名能力(能力缓存器作为起源及目的地)
在这样的示例中的每一者中,起源及目的地能力缓存器可以是两个不同能力缓存器,或替代地可将同一缓存器规定为起源及目的地,因此致使用经签名能力覆写未签名能力,或反的也然。
除提供用于签名、授权及剥离功能的专用指令以外,另外,若希望,则可组合此功能与其它功能。例如,在一个实施例中,可提供以下两个指令以分别组合授权过程与加载操作及分支操作:
CLDRA-将经签名能力(来从能力缓存器)转换成经历成功授权(可使经签名能力在能力缓存器中未改变)的未签名能力,并且使用指针来标识将物项(能力或数据)从其加载至缓存器中的存储器地址
CBRA-将经签名能力(来从能力缓存器)转换成经历成功授权(可使经签名能力在能力缓存器中未改变)的未签名能力,并且使用指针来确定程序计数器值的更新
因此,通过这样的功能,可使能力保持为经签名,但可作为另一操作的部分将其去签名,因此允许接着在执行操作的剩余部分时使用未签名的变体,而使原始经签名能力保持于能力缓存器内。此可提供使用经签名能力操作的码内的某些效能改良。
在先前示例中,假定将签章添加至指针值中的一个定数目个最高有效位中。然而,在替代实施例中,可相反将签章添加至属性字段的部分中,例如添加至边界信息内。此在图15中通过举例方式来图示。在图15的示例中,去签名能力包括指针部分600及属性部分,属性部分包括边界区段605及许可区段610。也提供标签位615,此标签位经设置以标识相关联的内容表示能力而非通用资料。当对能力签名时,则在此示例中,指针值保持不变,并且相反将签章插入于用于边界信息的可用空间的部分内,如由散列字段625所展示。此导致经减小尺寸边界字段620,此将稍后参考图16A更详细地论述。依据先前示例,也提供签名属性字段632且此签名属性字段经设置以指示能力已经签名,从而导致经修改的许可区段630。标签位615保持经设置以标识相关联的信息仍系能力。
来从此方法中的一个潜在益处系未由签名过程改变指针,并且因此,不存在相对于指针规定边界信息的情形中对边界信息的潜在影响。另外,即使不存在含有经签名扩展或经零扩展位(也就是说,有效冗余信息)的指针值的充足数目个最高有效位,也可使用此方法。然而,根据此方法,需要在边界信息中有充足冗余信息以容纳签章的插入。
图16A为图示在将签章添加至边界信息的情形中的签名过程的流程图。在步骤650处,例如通过签名指令的执行来请求能力的签名,此后在步骤655处确定在边界信息位中是否存在充足冗余以容纳签章。例如,情况可为,边界信息包括基值及限值的规格,并且这些值中的两者都在其较高位中具有一定数量的冗余信息。
若这些较高位足以在不丢失任何信息的情况下并入签章,则将确定在边界信息中存在充足冗余以容纳签章。在一些情况中,即使情况并非如此,也可降低边界信息的精确度以生成充足冗余,并且因此用边界信息的经降低精确度集替换原始边界信息,并且因此腾出用于签章的充足空间。
若在步骤655处确定在边界信息中不存在充足冗余以容纳签章,则过程进行至步骤680,此处采取预定动作,例如,造成处理器错误或使输入能力无效。
然而,假定存在充足冗余,则在步骤660处由指针值、签名密钥及混淆值生成签章,此后在步骤665处用签章替换边界信息中的经标识的冗余位。另外,在步骤670处,设置签名属性信息以指示能力已经签名,并且接着在步骤675处输出经签名能力(例如)以供储存于能力缓存器60中的一个中。
图16B为图示在将签章添加至边界信息的情况下执行的对应授权过程的流程图。在步骤700处,接收授权经签名能力的请求,此后在步骤705处由指针、签名密钥及混淆值生成授权签章。通过比较图16B与图7,应了解,无需标识唯一指针位,因为可使用指针的整体,并且指针的整体不受签名操作的影响。
在步骤710处,确定授权签章是否匹配经签名能力中的签章,并且若不匹配,则在步骤730处采取预定动作,这样的对应于先前参考图7的步骤295所论述的预定动作。
假定授权签章匹配经签名能力中的签章,则在步骤715处用冗余边界信息替换签章。例如,在一个实施例中,此可涉及将所有值0储存于先前用于签章的这些位中。
另外,在步骤720处,清除签名属性信息以标识能力现在为未签名,并且接着在步骤725处输出未签名能力。
如先前所论述的,例如,参考图3,当使能力在存储器与能力缓存器之间移动时,标签位随能力一起移动以标识储存于存储器中的相关联的数据区块事实上系能力。然而,在一些实施方案中,由于(例如)不存在充足空间以使所有能力信息保持于存储器中或当支持休眠时,可需要将来从存储器的能力储存至备份储存库(诸如,磁盘)中。在一个实施例中,此涉及将每一能力分解成单独数据及标签部分,并且将标签视为备份储存库内的数据。此在图17中示意性地图示,其中依据先前参考图3所描述的方法,当使能力在能力缓存器800与存储器805之间移动时,则标签位815随每一数据区块810一起移动。因此,存储器805中的每一数据区块可标识为表示能力或通用资料。当将数据区块移动至备份储存库825时,则使用分解过程820来将能力分解成数据824及信息822,将标签信息视为数据。因此,在备份储存库内,信息仅留存为数据,并且备份储存库未意识到能力。
当由储存于备份储存器中的数据重构能力时,重建过程需要受局限,因为若仅可由备份储存库中的一般数据建构能力则可损害通过能力的使用获得的安全性。特定而言,当操作请求生成能力且标识备份储存库内的数据以形成能力时,可期望正在实施的过程检查正标识的数据,若转换成能力,则会形成处理器有权具有的能力。
在一个实施例中,此可通过执行重建操作830以参考主能力(本文也称为一般能力)重建能力来达成。特定而言,在一个实施例中,一般能力提供足以使得能够从一般能力导出的任何经允许能力的信息。因此,考虑呈有界指针的形式的能力,指定一般能力835以使得重建操作830将仅能够由一般能力生成可允许有界指针。
用于重建能力的过程可采取多种形式,但在一个实施例中,处理器经布置以参考从备份储存库825取回的所规定数据对一般能力执行精化过程。因此,可调用能力重建操作,从而标识数据区块及备份储存库825内的标签数据的相关联的物项(在一个实施例中,此时可将其从备份储存库移动至一个或多个缓存器中以允许接着由处理器操纵数据),并且使用该信息,操作830可尝试精化主能力以使得所得能力匹配该经标识数据。若此系可能的,则此指示经标识数据的确可表示能力,并且因此,过程830可结合该数据设置标签位且作为能力输出标签位以供储存于存储器805中。此时用于生成能力的数据在一个实施例中可为主能力的经精化版本,或替代地可以是从备份储存库取回的数据。在任一情况中,在此阶段处,相关数据通常将保持于缓存器中,并且因此例如可使用储存操作将来从缓存器的能力储存至存储器805中。
然而,若不可进行关于主能力所执行的精化过程以导致匹配所规定数据的能力,则此指示来从备份储存库的数据不可用于标识能力,并且报错。
尽管主能力835可用于有效地表示可与有效能力相关联的所有可用许可及范围的超集,但当考虑经签名能力的问题时,应了解,不可从主能力的精化导出签章。在一个实施例中,通过以下方式解决此问题:允许在某些受控条件下使用来从备份储存库的数据来形成经重建能力内的签章,因此允许重建过程830也重新生成经签名能力。参考图18的流程图更详细地论述此过程。
特定而言,如步骤850处所展示,当调用重建过程时,从备份储存库取回经标识用于重建过程的数据。在一个实施例中,将所取回的数据储存于一个或多个工作缓存器中。例如,可将可能表示能力的资料区块部分(也就是说,先前所论述实施例中的数据的128个位)储存于能力缓存器800中的一个中,但其中标签位经清除以指示其(目前)不表示有效能力。另外,可将指示标签位的从备份储存库取回的数据的位储存于通用缓存器中。此后,在步骤855处确定形成标签信息的数据位(也就是说,现储存于通用缓存器中的位)是否指示数据待形成能力。若否,则过程仅进行至步骤857,此处可将取回的数据从能力缓存器输出至存储器805,其中标签位经清除以标识数据区块为通用数据。
然而,若形成标签信息的数据位指示所取回的数据待形成能力,则在步骤860处调用精化过程以尝试使用取回的数据精化主能力的复本以使主能力的许可及边界变窄,并且也设置指针值。应了解,此精化过程可以多种方式实施,但在一个实施例中可以是迭代过程(例如,通过执行精化指令序列)。
在步骤865处,确定从备份储存库取回的原始数据是否指示待将能力签名。例如,可复查将表示能力的相关联的属性内的签名信息的数据中的相关字段以查看其经设置还是经清除,及因此,数据在将其转换成能力的情况下表示经签名能力还是未签名能力。若作为步骤865的结果确定待形成的能力为未签名,则过程进行至步骤867,此处确定是否可通过主能力835的精化成功地生成所需能力。在一个实施例中,在以下情况下将认为通过此条件:关于主能力所执行的精化过程导致具有与从备份储存库取回的位相同的值的位序列,因此指示从备份储存库取回的数据可表示有效能力。在该情况中,过程进行至步骤895,此处通过结合主能力的经精化版本(此时其通常将留存于缓存器内)设置标签位来生成能力,并且接着例如通过执行适合的储存操作将能力输出至存储器805(维持经设置以标识数据区块事实上系能力的标签位)。在替代实施例中,此时可由从备份储存库取回的数据的复本生成能力,其中在输出至存储器805之前设置标签位。
以上步骤895可以多种方式实施。例如,可执行“SetTag”指令以标识其中暂时储存用于形成能力的数据的起源(能力)缓存器及要将所生成能力储存至其中的目的地能力缓存器,并且针对目的地能力缓存器要设置标签位以将其标识为能力。在一个实施例中,起源及目的地缓存器可为同一缓存器。在“SetTag”指令中的一个变体中,可有效地存在两个起源缓存器,即含有由步骤860所致的主能力的经精化版本的缓存器及含有从备份储存库取回的原始数据的缓存器,因为可在生成所得能力时引用这样的缓存器中的两者(如例如下文将参考步骤885、890所论述)。
接着,可执行单独储存指令以将来从缓存器的能力储存至存储器。
若在步骤867处确定不可通过主能力的精化成功地生成能力,则替代地过程进行至步骤870,此处报错。例如,可造成处理器错误以致使发生异常。作为另一选项,可将数据保持于将数据暂时取回至其的能力缓存器800中,但其中标签位维持于清除状态中以将数据标识为通用数据而非能力。另一替代选项将例如通过设置条件旗标或通过将值放置于可通过测试与分支指令检查的通用缓存器中设置可高效测试的处理器条件。
若在步骤865处确定原始数据指示要将能力签名,则如先前所提及的,将不可通过主能力的精化生成签章。因此,若要重建经签名能力,则将必需允许将至少表示签章的数据直接复制至能力中。
因此,过程进行至步骤869而非步骤867,步骤869中确定是否可通过主能力的精化成功地生成除关于能力的经签名性质的这些(特定而言,签章及签名属性信息)以外的能力的所有部分。若否,则在步骤870处报错。然而,否则过程进行至步骤875,此处确定在重建期间是否许可签名。如稍后将参考图19A至19C所论述,存在可在此阶段处执行的若干可能检查,但设想通常将对其中允许直接使用从备份储存库取回的数据将能力签名的情形施加一些约束。若在步骤875处确定在重建期间不许可签名,则在步骤880处报错。例如,步骤880处可用的选项可对应于步骤870处可用的选项。或者,若达到步骤880,则可生成能力作为未签名能力而非生成错误。
若确定在重建期间许可签名,则签章经标识以对应于从备份储存库取回的位序列,并且在步骤885处将签章插入于待形成所生成能力的数据的经标识部分中,例如,若使用先前所论述的图4的方法,则将签章插入于指针值中的一个定数目个最高有效位中。
另外,若待在所生成能力的属性部分内提供签名属性信息,则(如由步骤890所指示)将签名属性信息设置于要形成所生成能力的数据的进一步经标识部分内,并且当生成该能力时,签名属性信息将指示能力为经签名能力。此后,过程进行至步骤895,此处生成能力且将其输出至存储器,其中标签位经设置以将相关联的数据区块标识为能力。
若在步骤895处由主能力的经精化版本生成能力,则在步骤885及890处将通过从备份储存库取回的原始数据的相关部分更新暂时保持该经精化版本的缓存器。若替代地由从备份储存库取回的数据的复本生成能力,则步骤885及890有效地允许从主能力的经精化版本导出原始数据的这些相关部分且因此实施通过步骤885及890定义的插入及设置功能。
应注意,尽管在先前所描述的实施例中签名能力包括签名属性字段以将相关联的能力标识为经签名或未签名,但可实施参考图17及18所论述中的一般重建过程而不管此额外签名信息是否提供于属性字段内。因此,甚至在不使用签名属性字段时,所描述过程仍可用于通过使用在由保持于备份储存库中的数据重构能力时从备份储存库取回的数据的相关签章的插入来生成经签名能力。
图19A至图19C图示可执行以在图18的步骤875处确定在重建期间是否许签名的各种检查。如从图19A至19C与图14A至14C的比较将显而易见,这样的检查在一个实施例中类似于可执行以确定是否允许剥离经签名能力的检查。因此,考虑图19A,当在步骤900处请求重建期间进行签名时,可在步骤905处确定处理器目前是否正在预定提高特权状态下操作,并且若如此,则在步骤910处允许插入签章,而否则,即在步骤915处报错(步骤915对应于图18的步骤880)。
根据图19B的替代性方法,则步骤920、930及935对应于图19A的步骤900、910及915,但决策905由决策925替换,在决策925中检查特权配置缓存器是否已经设置以允许插入签章。该特权配置缓存器通常将仅可在处理器正在至少一个预定特权状态下操作时由处理器写入。
根据图19C的替代性示例,则提供签名能力,其可例如储存于能力缓存器60中的一个内。此签名能力提供标识在由保持于备份储存库中的数据重构能力期间是否许可签名的信息。因此,当在步骤950处请求重建期间的签名时,根据此实施例将标识相关签名能力,并且将在步骤955处取回该签名能力以允许分析其内容。例如,可使用插入签章指令来起始在由通用数据重构能力期间的签章的插入,并且可将签名能力标识为该插入签章指令的操作数。一旦已取回相关签名能力,即在步骤960处确定签名能力是否允许插入签章,并且若如此,则过程进行至步骤965,此处使用保持于备份储存库中的数据来插入签章。否则,即在步骤970处报错。
尽管图19A至图19C的选项可被认为系替代者,但在一些实施例中其等可组合地使用,以使得若满足任何一个测试,则认为允许签章的插入。
图18的过程可以多种方式实施。例如,其可实施于软件中,其中硬件响应于起始重建过程的单个指令而执行图18中所标识的所有步骤。或者,过程可通过使用指令序列来实施图18的重建过程而实施于软件中。根据后一种方法,例如可执行一系列指令以逐个地审查来从备份储存库的取回的原始数据的相关数据字段,从而精化主能力以设置边界、许可等且将经精化主能力写入至存储器。
图17至图19的重建过程可用于多种情形中。例如,情形可以是:任务A(诸如,分页系统任务)可具有充足能力(通过其对一般能力835的访问)以设置用于又一任务(任务B)的能力,随后将控制传递给任务B。分页系统任务可通过采用图17至19的过程生成所需能力,并且将该所需能力储存于共享存储器中,此后接着可将这些能力分配至任务B。应了解,此仅为可如何使用能力重建过程中的一个示例性情景,并且应了解,也存在其中由备份储存库中的数据重构能力的能力将系有用的其它情景。
通过上文所描述的技术的使用,应了解,可通过签名操作的使用来生成签名能力进一步增强通过能力的使用所提供的强大安全性。例如,通过组合签名功能与能力,进一步增强通过能力提供的固有安全性以进一步降低尝试绕过控制流完整性的欺骗实体的成功可能性。
在本申请中,使用用语“被配置为”以意指设备的组件具有能够实施所定义操作的配置。在此上下文中,“配置”意指硬件或软件的互连配置或方式。例如,设备可具有提供所定义操作的专用硬件,或者处理器或其它处理装置可经程序化以执行此功能。“被配置为”并不暗指设备组件需要以任何方式改变以便提供所定义操作。
尽管本文已参考所附图式详细地描述本发明的说明性实施例,但应理解,本发明并不限于这些精确实施例且熟习此项技术者可在不背离如随附申请专利范围所定义的本发明的范畴及精神的情况下在其中实施各种改变、添加及修改。例如,可在不背离本发明的范畴的情况下将独立请求项的特征与附属请求项的特征进行各种组合。

Claims (27)

1.一种设备,包括:
储存器,用于储存有界指针,每个有界指针包括指针值及相关联的属性,所述相关联的属性包括指示当使用所述指针值时地址的允许范围的范围信息;以及
处理电路,用于对输入有界指针执行签名操作以生成输出有界指针,其中通过所述签名操作所生成的签章被包括于所述输出有界指针内替代所述输入有界指针的规定位;
所述相关联的属性包括由所述处理电路在所述输出有界指针内设置以标识所述输出有界指针已经签名的签名信息。
2.如权利要求1所述的设备,其中针对需要所述储存器内的有界指针的使用的至少一个请求操作,所述处理电路被布置为:依据所述相关联的属性内的所述签名信息来确定所述有界指针是经签名还是未签名的,并且依据通过所述签名信息将所述有界指针标识为经签名还是未签名的来确定待响应于所述请求操作而采取的处理步骤。
3.如权利要求2所述的设备,其中所述处理电路被布置为:响应于尝试修改有界指针中的一个请求操作而依据所述签名信息确定所述有界指针是否经签名且防止在确定所述有界指针为经签名时对至少所述指针值的修改。
4.如权利要求1-3中的任意项所述的设备,其中所述签名信息为签名位,所述签名位在所述相关联的属性内设置以指示所述有界指针为经签名且在所述相关联的属性内清除以指示所述有界指针为未签名。
5.如权利要求1-3中的任意项所述的设备,其中所述签名信息编码于也用于标识所述有界指针的至少一个其它性质中的一个多位字段内。
6.如任意前述权利要求所述的设备,其中所述处理电路被布置为在不满足规定条件时防止执行所述签名操作。
7.如权利要求6所述的设备,其中当满足所述规定条件时,确保所述输出有界指针中的一个随后去签名将不生成不同于所述输入有界指针中的一个有界指针。
8.如权利要求6或7所述的设备,其中所述处理电路被布置为在所述输入有界指针的所述规定位包括可从所述输入有界指针的其它位再现的信息时确定满足所述规定条件。
9.如任意前述权利要求所述的设备,其中所述处理电路被布置为禁止在有界指针为经签名时使用所述有界指针来确定要在存储器中访问中的一个地址。
10.如任意前述权利要求所述的设备,其中在所述签名操作的执行期间所述处理电路被布置为使用所述指针值的至少部分生成所述签章。
11.如权利要求10所述的设备,其中所述处理电路被布置为使用所述指针值的所述至少部分、签名密钥及上下文数据中的一项生成所述签章。
12.如任意前述权利要求所述的设备,其中所述处理电路响应于授权请求而对输入经签名有界指针执行授权操作以在被包括于所述输入经签名有界指针内的所述签章与由所述处理电路使用提供于所述经签名有界指针内的所述指针值的至少部分所生成的授权签章之间侦测到签章匹配的情况下生成输出未签名有界指针。
13.如权利要求12所述的设备,其中所述处理电路被布置为使用提供于所述经签名有界指针内的所述指针值的所述至少部分、签名密钥及上下文数据中的一项生成所述授权签章。
14.如权利要求12或13所述的设备,其中当侦测到所述签章匹配时,所述处理电路被布置为通过用依据所述输入经签名有界指针中的一个或多个位确定的数据替换所述签章且清除所述相关联的属性内的所述签名信息以标识所述输出有界指针为未签名来生成所述输出未签名有界指针。
15.如引用权利要求6时的任意前述权利要求所述的设备,其中:
所述输入有界指针的所述规定位含有所述指针值中的一部分;并且
所述处理电路被布置为在所述指针值的所述部分为可从所述指针值中的一个剩余部分导出时确定满足所述规定条件。
16.如权利要求15所述的设备,其中当有界指针为未签名时,所述处理电路被布置为将所述指针值解译为由包括所述规定位的所述有界指针中的一个默认多个位规定,并且当有界指针为经签名时,所述处理电路被布置为将所述指针值解译为由排除所述规定位的经减少的多个位规定。
17.如任意前述权利要求所述的设备,其中所述范围信息系相对于所述指针值规定。
18.如权利要求17所述的设备,其中所述处理电路响应于致使变更所述指针值中的一个操作而也调整所述范围信息以确保不由于所述指针值的所述变更而改变由所述范围信息规定的所述范围。
19.如引用权利要求16时的权利要求18所述的设备,其中:
所述范围信息系相对于所述指针值规定;
所述处理电路响应于致使变更所述指针值中的一个操作而也调整所述范围信息以确保不由于所述指针值的所述变更而改变由所述范围信息规定的所述范围;
当由于改变由所述处理电路所采用的所述指针值的解译而签名及去签名有界指针时不需要所述范围信息的调整。
20.如任意前述权利要求所述的设备,其中所述处理电路响应于剥离请求而对输入经签名有界指针执行剥离操作以在满足剥离条件的情况下生成输出未签名有界指针,当满足所述剥离条件时所述处理电路被布置为通过用依据所述输入经签名有界指针中的一个或多个位确定的数据替换所述签章且清除所述相关联的属性内的所述签名信息以标识所述输出有界指针为未签名来生成所述输出未签名有界指针。
21.如权利要求20所述的设备,其中若以下条件中的至少一个为真实的则确定满足所述剥离条件:
(i)所述处理电路正在预定特权状态下操作;
(ii)可在所述处理电路正在预定特权状态下操作时设置中的配置储存组件具有指示许可所述剥离操作中的值;
(iii)所述剥离请求标识储存于所述储存器内的剥离能力,并且所述剥离能力指示许可所述剥离操作。
22.如任意前述权利要求所述的设备,其中所述处理电路被布置为响应于依据所述输入有界指针的所述签名信息确定所述输入有界指针已经签名以防止执行所述签名操作。
23.如任意前述权利要求所述的设备,其中所述处理电路被布置为在执行指令集内的一个签名指令时执行所述签名操作,并且还被布置为在执行所述指令集内的一个授权指令时执行授权操作以将经签名有界指针去签名。
24.如权利要求23所述的设备,其中所述签名指令及所述授权指令中的至少一者致使所述处理电路执行除所述签名操作或授权操作以外的至少一个进一步操作。
25.如权利要求1-14、17、18、或20-24所述的设备,其中:
所述输入有界指针的所述规定位含有所述范围信息中的一部分;并且
所述处理电路被布置为在由所述范围信息规定中的一个范围可表示于所述范围信息中的一个剩余部分内时确定满足所述规定条件。
26.一种控制有界指针的使用的方法,包括:
将有界指针储存于储存器中,每个有界指针包括指针值及相关联的属性,所述相关联的属性包括指示当使用所述指针值时地址的允许范围的范围信息;
对输入有界指针执行签名操作以生成输出有界指针,其中由所述签名操作所生成的签章被包括于所述输出有界指针内替代所述输入有界指针的规定位;以及
在所述输出有界指针的所述相关联的属性内设置签名信息以标识所述输出有界指针已经签名。
27.一种设备,包括:
用于储存有界指针的储存器装置,每个有界指针包括指针值及相关联的属性,所述相关联的属性包括指示当使用所述指针值时地址的允许范围的范围信息;以及
用于对输入有界指针执行签名操作以生成输出有界指针的处理装置,其中由所述签名操作所生成的签章被包括于所述输出有界指针内替代所述输入有界指针的规定位;
所述处理装置还用于在所述输出有界指针的所述相关联的属性内设置签名信息以标识所述输出有界指针已经签名。
CN201680081078.8A 2016-02-12 2016-12-23 用于控制有界指针的使用的设备及方法 Active CN108604271B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1602539.7 2016-02-12
GB1602539.7A GB2547247B (en) 2016-02-12 2016-02-12 An apparatus and method for controlling use of bounded pointers
PCT/GB2016/054054 WO2017137713A1 (en) 2016-02-12 2016-12-23 An apparatus and method for controlling use of bounded pointers

Publications (2)

Publication Number Publication Date
CN108604271A true CN108604271A (zh) 2018-09-28
CN108604271B CN108604271B (zh) 2021-08-10

Family

ID=55697613

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680081078.8A Active CN108604271B (zh) 2016-02-12 2016-12-23 用于控制有界指针的使用的设备及方法

Country Status (9)

Country Link
US (1) US11030344B2 (zh)
EP (1) EP3414700B1 (zh)
JP (1) JP6893216B2 (zh)
KR (1) KR102649092B1 (zh)
CN (1) CN108604271B (zh)
GB (1) GB2547247B (zh)
IL (1) IL260458B (zh)
TW (1) TWI745333B (zh)
WO (1) WO2017137713A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2547247B (en) * 2016-02-12 2019-09-11 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
US10795997B2 (en) * 2017-06-21 2020-10-06 Intel Corporation Hardened safe stack for return oriented programming attack mitigation
US10387335B2 (en) * 2017-09-28 2019-08-20 Hewlett Packard Enterprise Development Lp Memory system and handles to master capabilities
US11250133B2 (en) 2018-01-12 2022-02-15 Arris Enterprises Llc Configurable code signing system and method
US11860996B1 (en) * 2018-04-06 2024-01-02 Apple Inc. Security concepts for web frameworks
US11144631B2 (en) * 2018-09-11 2021-10-12 Apple Inc. Dynamic switching between pointer authentication regimes
GB2578158B (en) 2018-10-19 2021-02-17 Advanced Risc Mach Ltd Parameter signature for realm security configuration parameters
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
WO2021162439A1 (en) * 2020-02-14 2021-08-19 Samsung Electronics Co., Ltd. Electronic device performing restoration on basis of comparison of constant value and control method thereof
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
US11711201B2 (en) * 2020-08-14 2023-07-25 Intel Corporation Encoded stack pointers
US20220179949A1 (en) * 2022-02-28 2022-06-09 Intel Corporation Compiler-directed selection of objects for capability protection

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080060077A1 (en) * 2001-12-06 2008-03-06 Novell, Inc. Pointguard: method and system for protecting programs against pointer corruption attacks
WO2009075116A1 (ja) * 2007-12-12 2009-06-18 Nec Corporation プログラムデバッグ方法、プログラム変換方法及びそれを用いるプログラムデバッグ装置、プログラム変換装置並びに記憶媒体
CN101833631A (zh) * 2010-02-09 2010-09-15 北京理工大学 一种结合指针分析的软件安全漏洞动态检测方法
US20110099429A1 (en) * 2009-10-28 2011-04-28 International Business Machines Corporation Systems and methods for backward-compatible constant-time exception-protection memory
US20140173293A1 (en) * 2012-12-17 2014-06-19 Advanced Micro Devices, Inc. Hardware Based Return Pointer Encryption

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845331A (en) 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US6826672B1 (en) * 2000-05-16 2004-11-30 Massachusetts Institute Of Technology Capability addressing with tight object bounds
US7441116B2 (en) * 2002-12-30 2008-10-21 International Business Machines Corporation Secure resource distribution through encrypted pointers
GB2402236B (en) * 2003-05-27 2005-04-27 Simon Alan Spacey A method and apparatus for securing a computer system
EP2609511B1 (en) * 2010-08-26 2016-10-19 Freescale Semiconductor, Inc. Memory management unit for a microprocessor system, microprocessor system and method for managing memory
US8732430B2 (en) * 2011-03-22 2014-05-20 Oracle International Corporation Method and apparatus for using unused bits in a memory pointer
US20130013895A1 (en) * 2011-07-06 2013-01-10 Fs-Semi Co., Ltd. Byte-oriented microcontroller having wider program memory bus supporting macro instruction execution, accessing return address in one clock cycle, storage accessing operation via pointer combination, and increased pointer adjustment amount
US9081657B2 (en) * 2011-10-13 2015-07-14 Conexant Systems, Inc. Apparatus and method for abstract memory addressing
US10038550B2 (en) * 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US9530006B2 (en) 2014-04-11 2016-12-27 Oracle International Corporation Method and system for performing a memory safety check of a program written in an unmanaged programming language
US9804891B1 (en) 2015-03-20 2017-10-31 Antara Teknik LLC Parallelizing multiple signing and verifying operations within a secure routing context
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
GB2547247B (en) * 2016-02-12 2019-09-11 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080060077A1 (en) * 2001-12-06 2008-03-06 Novell, Inc. Pointguard: method and system for protecting programs against pointer corruption attacks
WO2009075116A1 (ja) * 2007-12-12 2009-06-18 Nec Corporation プログラムデバッグ方法、プログラム変換方法及びそれを用いるプログラムデバッグ装置、プログラム変換装置並びに記憶媒体
US20110099429A1 (en) * 2009-10-28 2011-04-28 International Business Machines Corporation Systems and methods for backward-compatible constant-time exception-protection memory
CN101833631A (zh) * 2010-02-09 2010-09-15 北京理工大学 一种结合指针分析的软件安全漏洞动态检测方法
US20140173293A1 (en) * 2012-12-17 2014-06-19 Advanced Micro Devices, Inc. Hardware Based Return Pointer Encryption

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ALI JOSÉ MASHTIZADEH等: "CCFI: Cryptographically Enforced Control Flow Integrity", 《PROCEEDINGS OF THE 22ND ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY》 *
LASZLO SZEKERES等: "SoK: Eternal War in Memory", 《2013 IEEE SYMPOSIUM ON SECURITY AND PRIVACY》 *
阚双龙等: "使用事件自动机规约的C语言有界模型检测", 《软件学报》 *

Also Published As

Publication number Publication date
KR20180111919A (ko) 2018-10-11
EP3414700A1 (en) 2018-12-19
GB2547247A (en) 2017-08-16
CN108604271B (zh) 2021-08-10
TW201732576A (zh) 2017-09-16
WO2017137713A1 (en) 2017-08-17
TWI745333B (zh) 2021-11-11
GB201602539D0 (en) 2016-03-30
IL260458B (en) 2020-06-30
JP2019505052A (ja) 2019-02-21
JP6893216B2 (ja) 2021-06-23
KR102649092B1 (ko) 2024-03-20
GB2547247B (en) 2019-09-11
EP3414700B1 (en) 2021-01-27
US20190034664A1 (en) 2019-01-31
US11030344B2 (en) 2021-06-08

Similar Documents

Publication Publication Date Title
CN108604271A (zh) 用于控制有界指针的使用的设备及方法
CN108701174B (zh) 用于生成有签名的有界指针的设备及方法
US11249912B2 (en) Apparatus and method for storing bounded pointers
CN108292272A (zh) 用于管理有界指针的装置和方法
CN110622133B (zh) 用于管理能力域的设备及方法
JP7376571B2 (ja) 有界ポインタの使用を制御するための装置及び方法
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
US20240202139A1 (en) Technique for constraining access to memory using capabilities
TW202318210A (zh) 用於處理密封能力之技術
WO2024028565A1 (en) No-operation-compatible instruction
CN112106029A (zh) 用于触发动作的装置和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant