用于仅执行事务存储器的技术的制作方法

文档序号:14254439阅读:253来源:国知局
用于仅执行事务存储器的技术的制作方法

相关申请的交叉引用

本申请要求于2015年12月18日提交的名称为“technologiesforexecuteonlytransactionalmemory(用于仅执行事务存储器的技术)”的美国实用新型专利申请序列号14/974,972的优先权,并根据35u.s.c.§119(e)要求于2015年10月2日提交的名称为“technologiesforexecuteonlytransactionalmemory(用于仅执行事务存储器的技术)”的美国临时专利申请序列号62/236,405的优先权。



背景技术:

历史上已经将计算机处理器分类为复杂指令集计算(cisc)设备或精简指令集计算(risc)设备。cisc处理器(如支持指令集(例如,64、ia-32等)的处理器)可以提供具有可以包括大型嵌入式数据的可变长度指令的复杂指令集。典型的risc处理器(如支持指令集的处理器)可以提供包括固定大小指令的精简指令集。

某些处理器可以支持仅执行存储器。在这些处理器中,仅执行存储器的内容可以由处理器执行但不可以读取或写入。某些处理器可以支持安全执行环境。然而,进入安全执行环境可能需要一个或多个昂贵的上下文切换(诸如从正常世界来回的世界切换),这可能花费数千个处理器周期。

附图说明

在附图中通过示例的方式而非限制的方式展示了本文中所描述的概念。为了说明的简单和清楚起见,附图中所展示的元件不一定按比例绘制。在认为适当的情况下,在附图当中已经重复了参考标号以表示相应或相似的元件。

图1是用于仅执行事务(xot)存储器的计算设备的至少一个实施例的简化框图;

图2是可由图1的计算设备建立的环境的至少一个实施例的简化框图;

图3是可由图1至图2的计算设备执行的用于引导时间xot配置的方法的至少一个实施例的简化流程图;

图4是可由图1至图2的计算设备执行的用于页未命中处理程序的方法的至少一个实施例的简化流程图;

图5是可由图1至图2的计算设备执行的用于中断处理的方法的至少一个实施例的简化流程图;

图6是示意图,展示了可由图1至图2的计算设备维护的指令转换后备缓冲器(itlb)命中寄存器;

图7是可由图1至图2的计算设备执行的用于对处理器寄存器状态进行加密的方法的至少一个实施例的简化流程图;

图8是可由图1至图2的计算设备执行的用于入口点验证的方法的至少一个实施例的简化流程图;

图9是可由图1至图2的计算设备执行的用于itlb映射变化处理程序的方法的至少一个实施例的简化流程图;

图10是可由图1至图2的计算设备执行的用于itlb命中或未命中处理程序的方法的至少一个实施例的简化流程图;

图11是可结合图10的方法来执行的用于处理itlb未命中的方法的至少一个实施例的简化流程图;

图12是可由图1至图2的计算设备执行的用于itlb未命中处理程序的方法的至少一个实施例的简化流程图;

图13是可由图1至图2的计算设备执行的用于itlb命中处理程序的方法的至少一个实施例的简化流程图;并且

图14是可由图1至图2的计算设备执行的用于基于软件的仅执行事务存储器的方法的至少一个实施例的简化流程图。

具体实施方式

虽然本公开的概念易于经历各种修改和替代形式,但是在附图中已经通过示例的方式示出了其特定实施例并且将在本文中对其进行详细描述。然而,应当理解的是,不意在将本公开的概念限制于所公开的特定形式,而相反,意图是覆盖与本公开和所附权利要求书一致的所有修改形式、等效形式和替代形式。

在说明书中提到“一个实施例(oneembodiment)”、“实施例(anembodiment)”、“示意性实施例(anillustrativeembodiment)”等表明所描述的实施例可以包括特定特征、结构或特性,但每一个实施例可以或可以不一定包括所述特定特征、结构或特性。此外,此类短语不必指相同的实施例。进一步地,当关于实施例而描述了特定特征、结构或特性时,应当认为的是,无论是否进行了明确描述,结合其他实施例来实现这种特征、结构或特性都在本领域的技术人员的知识内。另外,应当认识到,包括在采用“a、b和c中的至少一项”形式的列表中的项可以意指(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。类似地,采用“a、b或c中的至少一项”的形式列出的项可以意指(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。

在一些情况下,可以在硬件、固件、软件或其任何组合中实现所公开的实施例。所公开的实施例还可以实施为一个或多个暂态或非暂态机器可读(例如,计算机可读)存储媒体所携带或其上所存储的指令,这些指令可以由一个或多个处理器读取和执行。机器可读存储介质可以被实施为任何存储设备、机制、或用于存储或传输采用机器可读形式的信息的其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。

现在参照图1,在说明性实施例中,计算设备100支持使用仅执行事务(xot)存储器类型来执行代码路径。计算设备100可以指定一个或多个页面、分段或存储器的其他区域作为xot范围并在引导过程的早期将xot代码路径加载到xot范围中。xot代码路径仅可以被执行而不可以从中读取或向其写入内容。因此,xot页面上的某些处理器指令允许秘密作为指令的一部分(例如,作为指令中的立即值)被嵌入。另外,在当执行xot代码路径时接收到中断、异常、或除了分支之外的控制流的其他变化时,计算设备100清除或以其他方式来保证处理器状态安全,从而保护护指令流和相关联数据的完整性。计算设备100还可以确保xot代码范围仅可以在预定义入口点处进入,从而进一步保护xot代码和相关联数据的完整性。

因此,xot存储器范围可以为指令和嵌入在指令中的立即数据提供非常高效的防护机制。因为xot保护可以被实施为存储器权限,所以保护机制可以在没有模式/世界切换或其他潜在昂贵的上下文切换并且不会影响处理器流水线、tlb或高速缓存状态的情况下在行内执行。因此,计算设备100的处理器120可以提供基本上即时的、免费的、零开销的保护机制,所述保护机制保护xot存储器免受恶意软件、漏洞利用和观察的攻击。此无开销的安全组合可以提高功率效率和可扩展性,允许相同的受保护cisc代码在各种各样的设备上执行,从小型、简单的、功率高效的设备(例如,嵌入式控制器、物联网(iot)或其他小型设备)直到高性能计算机和服务器。此外,与特权分离或进程分离不同,xot可能不依赖于执行监测程序、操作系统(os)或其他控制软件实体。因此,操作系统和平台固件可以从计算设备100的可信代码基(tcb)中去除,因为处理器硬件和/或微代码强制执行xot存储器类型。类似地,设备被排除在tcb之外,因为硬件阻止设备访问xot存储器区域。进一步地,每条xot代码路径从根本上与每条其他xot代码路径分离并不同。另外,因为xot可以被实施为新的存储器权限和/或存储器类型,所以xot存储器可以不需要新的处理器指令,并且因此xot代码路径可以向后兼容。因此,针对在xot存储器范围内运行而被写入、编译或以其他方式处理的计算机程序还可以在旧系统上运行,当然无需由xot存储器范围提供的附加安全防护。类似地,相同代码路径可以在没有xot保护的情况下执行以便促进调试。

xot代码可以以计算设备100中的任何特权级别运行,但仍然可以由操作系统(os)进行访问控制和管理以防止未经授权的xot程序访问系统资源。由计算设备100保护的xot代码路径可以维护秘密、操作这些秘密(例如,使用由某些处理器提供的aes-ni指令)或使用这些秘密在事务上访问其他平台资源(例如,使用i/o指令,如x86in/out指令)。例如,xot代码可以用于协调整个片上系统(soc)、锁定和解锁设备、ip块、以及用于由授权代码路径独占访问的其他功能块。因此,在一些实施例中,xot代码页面可以是用于硬件设备(诸如soc设备或ip块)的独占访问机制,从而防止恶意软件或漏洞利用篡改设备状态。

计算设备100可以被实施为能够执行本文中所描述的功能的任何类型的计算设备或计算机设备,包括但不限于服务器、工作站、计算机、台式计算机、膝上型计算机、笔记本计算机、平板计算机、移动计算设备、可穿戴计算设备、网络电器、web电器、嵌入式计算设备、分布式计算系统、基于处理器的系统和/或消费电子设备。如图1中所示,计算设备100示意性地包括处理器120、输入/输出子系统126、存储器128、数据存储设备130以及通信电路系统132。当然,在其他实施例中,计算设备100可包括其他或附加部件,诸如在服务器计算机中常见的部件(例如,各种输入/输出设备)。另外,在一些实施例中,说明性部件中的一个或多个说明性部件可以结合在另一部件中、或者以其他方式形成另一部件的一部分。例如,在一些实施例中,存储器128或其多个部分可以结合在处理器120中。

处理器120可以被实施为能够执行在本文中所描述的功能的任何类型的处理器。处理器120可以被实施为(多个)单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。处理器120包括支持复杂指令集并且因此可以被称为复杂指令集计算(cisc)处理器。具体地,处理器120可以支持允许例如通过支持可变大小的立即数据而将数据作为指令本身的一部分进行富编码的指令集,如64或ia-32。由于xot页面上的所有数据都可以作为经认证的控制流的一部分而受到信任,因此所有立即数据都可以被信任并且不可由恶意软件、os、设备或甚至其他xot代码进行访问和修改。

处理器120进一步包括指令转换后备缓冲器(itlb)122和数据转换后备缓冲器(dtlb)124。itlb122和dtlb124中的每一者都可以被实施为高速缓存或维护虚拟存储器地址与物理存储器地址之间的页表映射的其他存储器结构。itlb122用于执行指令(例如,从处理器120的当前指令指针的位置中取出并执行指令)并且dtlb124用于访问数据(例如,使用加载/存储指令来访问存储器128)。如以下进一步描述的,处理器120支持用于执行某些代码路径的仅执行事务(xot)存储器类型。如以下所描述的,处理器120可以使用一个或多个xot范围寄存器以及硬件、固件和/或微代码事件处理程序(包括页未命中处理程序、中断处理程序和/或页面映射变化处理程序)的任何组合来强制执行xot存储器类型。

存储器128可以被实施为能够执行本文中所描述的功能的任何类型的易失性或非易失性存储器或数据存储设备。在操作中,存储器128可存储在计算设备100的操作期间所使用的各种数据和软件,如操作系统、应用、程序、函数库以及驱动程序。如以下进一步描述的,存储器128的一个或多个部分可以被指定为xot范围并且可以包括xot代码路径。存储器128经由i/o子系统126通信地耦合到处理器120,所述i/o子系统可以被实施为用于促进与计算设备100的处理器120、存储器128以及其他部件的输入/输出操作的电路系统和/或部件。例如,i/o子系统126可以被实施为或以其他方式包括用于促进输入/输出操作的存储器控制器中枢、输入/输出控制中枢、平台控制器中枢、集成控制电路系统、固件设备、通信链路(即,点到点的链路、总线链路、导线、线缆、光导、印刷电路板迹线等)和/或其他组件及子系统。在一些实施例中,i/o子系统126可以形成片上系统(soc)的一部分并且可以与计算设备100的处理器120、存储器128以及其他组件一起结合在单个集成电路芯片上。

数据存储设备130可以被实施为被配置成对数据进行短期或长期存储的任何类型的一种或多种设备,如例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。数据存储设备130可以存储例如可以被加载到存储器128中的xot代码路径的镜像。计算设备100的通信电路系统132可以被实施为能够通过网络实现计算设备100与其他远程设备之间的通信的任何通信电路、设备或其集合。通信电路系统132可以被配置成使用任何一种或多种通信技术(例如,有线或无线通信)以及相关联的协议(例如,以太网、wimax等)来实现这种通信。

在一些实施例中,计算设备100还可以包括一个或多个外围设备134。外围设备134可以包括任何数量的附加输入/输出设备、接口设备和/或其他外围设备。例如,在一些实施例中,外围设备134可以包括显示器、触摸屏、图形电路系统、键盘、鼠标、扬声器系统、麦克风、网络接口和/或其他输入/输出设备、接口设备、和/或外围设备。

现在参照图2,在说明性实施例中,计算设备100在操作期间建立环境200。说明性环境200包括仅执行模块202、代码管理模块204、入口点模块206以及事务模块208。环境200的各个模块可以被实施为硬件、固件、微代码、软件或其组合。如此,在一些实施例中,环境200的模块中的一个或多个模块可以被实施为电子设备的电路系统或集合(例如,仅执行电路系统202、代码管理电路系统204、入口点电路系统206和/或事务电路系统208)。应当理解,在这类实施例中,仅执行电路系统202、代码管理电路系统204、入口点电路系统206和/或事务电路系统208中的一者或多者可以形成计算设备100的处理器120、i/o子系统126和/或其他部件中的一者或多者的一部分。另外,在一些实施例中,说明性模块中的一个或多个可以形成另一个模块的一部分和/或说明性模块中的一个或多个可以彼此独立。

仅执行模块202被配置成指定或以其他方式配置xot范围,并且确保xot范围可以由处理器120执行但不能被读取或写入。具体地,仅执行模块202可以被配置成响应于页未命中而执行处理器120的页未命中处理程序210。页未命中处理程序210被配置成确定虚拟到物理地址映射并且判定物理存储器地址是否在存储器128的xot范围内。若是,则页未命中处理程序210被配置成利用虚拟到物理地址映射来填充itlb122并且防止利用虚拟到物理地址映射来填充dtlb124。页未命中处理程序210可以进一步被配置成判定与xot范围相关联的页大小是否与由计算设备100的页表指示的页大小相匹配,并且若否,则生成页大小失配故障。另外地或可替代地,在一些实施例中,仅执行模块202可以包括页表仅执行模块212,所述页表仅执行模块可以被配置成使用处理器120的操作系统页表和/或扩展页表(ept)支持来强制执行xot范围的仅执行特性。例如,每条页表(和/或ept)条目可以支持xot存储器类型或权限。

代码管理模块204被配置成在存储器128中安全地加载、测量和执行xot范围内的xot代码路径。具体地,代码管理模块204可以被配置成执行重置向量、根据所述重置向量将xot代码镜像加载到xot范围中、并在加载xot代码镜像之后锁定或以其他方式配置xot范围。代码管理模块204还可以被配置成测量xot代码镜像。当被执行时,xot代码镜像可以被配置成利用存储为xot代码镜像的指令中(例如,在一条或多条移动指令中)的立即值的(多个)秘密来配置计算设备100的一个或多个端口i/o设备。当被执行时,xot代码镜像可以安全地加载并测量附加xot代码镜像,并且配置附加xot范围。例如,xot代码镜像可以包括在xot存储器中编码的秘密值,所述xot存储器可以打开附加xot存储器范围或使用通过端口i/o指令建立的秘密来访问i/o设备。另外地或可替代地,xot代码镜像可以访问可以利用来自xot代码的秘密而编程的专用处理器寄存器,并且然后用于访问附加平台资源、i/o设备、存储器区域、存储区域或其他资源。如果事务被中止,则秘密被清除,并且设备/存储器访问将停止。在一些实施例中,这些功能可由一个或多个子模块来执行,例如,引导配置模块214、设备配置模块216、和/或代码测量模块218。

入口点模块206被配置成确保xot范围中的xot代码路径在授权入口点处开始仅执行。具体地,入口点模块206可以被配置成响应于itlb122的最后一次转换的值的变化而执行处理器120的映射变化处理程序220。例如,映射变化处理程序220可以响应于由处理器120维护的itlb命中缓冲器的变化而执行。映射变化处理程序220被配置成确定最后一次转换itlb122的物理存储器地址,并且判定此物理存储器地址是否在xot范围内。若是,则映射变化处理程序220被配置成判定物理存储器地址的偏移部分(例如,预定义数量的低阶位)是否与预定义入口点相匹配,并且若否,则生成故障。

在一些实施例中,入口点模块206可以被配置成执行一个或多个itlb122访问处理程序222,诸如itlb未命中处理程序、itlb命中处理程序或在itlb命中或itlb未命中上调用的itlb访问处理程序。例如,itlb未命中处理程序222可以被配置成判定满足itlb122未命中的物理存储器地址是否在仅执行事务范围内。若是,则itlb未命中处理程序222被配置成判定物理存储器地址是否在授权入口点处,并且若否,则生成故障。

在一些实施例中,itlb未命中处理程序222可以被配置成记录被插入到itlb122中的虚拟到物理地址映射的xot索引。在这些实施例中,itlb命中处理程序222可以被配置成判定由所述处理器120执行的前一指令是否是在xot范围内执行的。若是,则itlb命中处理程序222被配置成判定与itlb122命中相关联的虚拟到物理地址映射的索引是否匹配所记录的xot索引,并且若否,则在所记录的xot索引处驱逐itlb122的条目。

另外地或可替代地,itlb未命中处理程序222可以被配置成将被插入到itlb122中的虚拟到物理地址映射的索引记录为最后使用的指令转换缓冲器条目,并在itlb122中的相应条目上设置xot位。在这些实施例中,itlb命中处理程序222可以被配置成判定与itlb命中相关联的虚拟到物理地址映射的索引是否与最后使用的itlb条目的索引相匹配。若否,则itlb命中处理程序222被配置成判定是否设置了与itlb命中相关联的虚拟到物理地址映射的xot位。若是,则itlb命中处理程序222被配置成判定与itlb命中相关联的物理存储器地址是否在授权入口点处,并且若否,则生成故障。在成功itlb命中之后,itlb命中处理程序222可以被配置成更新最后使用的itlb条目的索引。

事务模块208被配置成保护xot代码路径的内部状态(其可以包括秘密)不被计算设备100的其他实体访问。具体地,事务模块208可以被配置成响应于不是分支的控制流变化(诸如中断、故障和/或异常)而执行处理器120的中断处理程序224。中断处理程序224被配置成判定最后一个指令指针物理地址是否在xot范围内,并且若是,则保证处理器120的状态安全。保护处理器120的状态可以包括清除或回滚处理器120的一个或多个寄存器、清除存储器128中的一个或多个线程本地存储区、清除处理器120的本地高速缓存存储器中的脏条目、和/或对处理器120状态进行加密并存储经加密处理器状态。

现在参照图3,在使用中,计算设备100可以执行用于引导时间xot配置的方法300。方法300开始于框302,在所述框中,计算设备100在引导时间执行重置向量。例如,在平台重置或其他电源循环之后,计算设备100的硬件和/或固件可以跳转到平台固件中的预定义地址以开始执行。重置向量可以指向固件中的位置、平台闪速存储器中的位置或不可由操作系统或由计算设备100执行的其他软件实体篡改的其他位置。

在框304中,计算设备100将xot代码镜像(例如,包括一条或多条xot代码路径的代码镜像)加载到存储器128的特定存储器范围中。在框306中,计算设备100测量xot代码镜像。例如,计算设备100可以在存储器128中生成xot代码镜像的内容的密码散列或其他密码测量。所述测量可以用于证明xot代码镜像的真实性。因为xot代码镜像由计算设备100的引导固件来加载和测量,所以xot代码镜像的测量可受到由计算设备100执行的其他实体的信任。

在框308中,计算设备100通过写入处理器120的一个或多个一次设置xot范围寄存器来锁定包括xot代码镜像的xot范围。如以下进一步描述的,(多个)xot范围寄存器可以用于阻止软件、固件、smm和对xot存储器的其他访问。在一些实施例中,在框310中,计算设备100可以使用特定于xot存储器范围的页大小的范围寄存器。例如,与映射至较小页面(例如,4kb)的xot范围相比,计算设备100的处理器120可以支持映射至较大和/或巨大页面(例如,4mb)的xot范围的不同范围寄存器。

在框312中,计算设备100判定是否应当加载附加xot代码路径。若否,则方法300分支前进到框322,如下所述。如果应当加载附加代码路径,则方法300前进到框314。

在框314中,从现有xot代码路径中,计算设备100将另一xot代码镜像加载到存储器128的存储器范围中。在框316中,计算设备100从预先存在的xot代码路径中测量新加载的xot代码镜像。例如,计算设备100可以在存储器128中生成新加载的xot代码镜像的内容的密码散列或其他密码测量。所述测量可以用于证明新加载的xot代码镜像的真实性。因为xot代码镜像由计算设备100的另一xot代码路径来加载和测量,所以xot代码镜像的测量可受到由计算设备100执行的其他实体的信任。

在框318中,从现有xot代码路径中,计算设备100通过写入处理器120的一个或多个设置一次设置xot范围寄存器来锁定包括新加载的xot代码镜像的xot范围。如以下进一步描述的,(多个)xot范围寄存器可以用于阻止软件、固件、smm和对xot存储器的其他访问。在一些实施例中,计算设备100可以使用处理器120的模型特定寄存器(msr)接口来配置xot范围寄存器。如上所述,计算设备100可以使用特定于xot存储器范围的页大小的范围寄存器。例如,与映射至较小页面(例如,4kb)的xot范围相比,计算设备100的处理器120可以支持映射至较大和/或巨大页面(例如,4mb)的xot范围的不同范围寄存器。在一些实施例中,在框320中,计算设备100可以使用处理器120的一个或多个端口i/o指令(pio)(如out指令)将xot代码范围存储到(多个)xot范围寄存器中。在锁定xot范围之后,方法300循环回到框312以判定是否应当加载附加xot代码镜像。

返回参照框312,如果不应加载附加xot代码路径,则方法300分支前进到框322。在框322中,计算设备100可以配置计算设备100的一个或多个端口i/o设备。计算设备100可以执行处理器120的一个或多个端口i/o指令(如in和/或out)以启用、禁用或以其他方式配置计算设备100的一个或多个部件。例如,计算设备100可以启用计算设备100的处理器120、i/o子系统126或片上系统(soc)的一个或多个功能块。因此,xot代码路径可以使用其秘密来解锁跨soc的设备功能和控制资源。

在一些实施例中,在框324中,计算设备100可以将存储为指令的立即值的一个或多个秘密传输至pio设备。例如,计算设备100可以将存储在mov指令中的立即值加载到寄存器中,并且然后使用pio指令来传输这个值。存储为立即值的秘密(例如,加密密钥、证书或其他秘密)包括在xot代码路径中,并且因此被保护免受未经授权的访问。因为pio指令不依赖于由操作系统配置的存储器映射(与存储器映射i/o(mmio)相比),所以可以信任使用pio的事务。如果pio事务被软件(例如,os)拦截,则这些控制流变化将被有效地视为中断xot流,并且使处理器的寄存器状态被清除,如以下结合图5所描述的。在一些实施例中,在框326中,计算设备100可以强制执行从xot代码路径到pio设备的访问控制。计算设备100可以执行任何认证、验证或其他访问控制程序。如上所述,计算设备100可以通过启用和/或禁用pio设备来强制执行访问控制。因此,正确授权的xot代码路径可以安全地强制执行对soc内的设备和/或功能块的访问控制,充当到设备的安全网关并防止未经授权的软件和/或恶意软件的访问。

在框328中,计算设备100启动软件,诸如操作系统或其他软件组件。在启动附加软件之后,方法300完成。虽然被展示为在启动附加软件(如操作系统)之前在方法300中执行,但应当理解,在一些实施例中,计算设备100可以在启动附加软件之后加载附加xot代码路径和/或配置附加pio设备。例如,计算设备100的操作系统、驱动程序和/或应用可以执行预加载的xot代码路径以加载附加xot代码路径、配置pio设备和/或访问pio设备。

现在参照图4,在使用中,计算设备100可以执行用于页未命中处理程序210的方法400。方法400开始于框402,在所述框中,计算设备100执行处理器120的页未命中处理程序210。计算设备100响应于试图访问不包括在itlb122或dtlb124中的虚拟存储器地址而执行页未命中处理程序210。页未命中处理程序210可以被实施为处理器120的硬件、固件和/或微代码,并且因此对由计算设备100执行的软件是透明的。

在框404中,计算设备100的页未命中处理程序210(pmh)遍历在存储器128中建立的页表以找到虚拟到物理地址映射。计算设备100的操作系统(os)或其他控制软件可以在存储器128中建立页表以限定虚拟存储器页面与物理存储器页面之间的映射。地址映射将与页未命中相关联的虚拟地址(也被称为线性地址)转换为存储器128中的物理地址。虚拟到物理地址映射可以在字节级存储器地址、存储器页面、存储器分段或存储器中的其他区域之间进行映射。

在框406中,计算设备100判定虚拟到物理地址映射的物理地址是否落入xot存储器范围内。例如,计算设备100可以将物理地址与已经由可信固件和/或由可信xot代码路径设置的一个或多个xot范围寄存器进行比较,如以上结合图3所描述的。另外地或可替代地,在一些实施例中,计算设备100可以使用不同的机制来判定物理地址是否位于xot存储器范围内。例如,在一些实施例中,由计算设备100建立的第二级页表(如扩展页表(ept))可以通过添加pat存储器类型或附加权限位来允许利用事务概念扩展的仅执行存储器权限。在这些实施例中,计算设备100的vmm可以灵活地分配和控制到存储器128中的xot代码的加载和测量。

在框408中,计算设备100检查物理地址是否在xot存储器范围内。若是,则方法400分支前进到框412,如下所述。如果物理地址不在xot存储器范围内,则方法400前进到框410,在所述框中,计算设备100照常利用虚拟到物理地址映射填满itlb122和/或dtlb124。在填满itlb122和/或dtlb124之后,方法400前进到框422,在所述框中,页未命中处理程序210完成。当然,计算设备100还可以执行通常由页未命中处理程序执行的任何附加操作。在完成之后,计算设备100可以恢复生成页未命中的代码的执行,从而允许代码访问物理存储器地址处的数据。因为物理地址不在xot代码范围内,所以计算设备100可以通过访问itlb122来执行物理地址处的代码,并且计算设备100可以通过访问dtlb124来访问物理地址处的数据。

返回参照框408,如果物理地址在xot范围内,则方法400前进到框412,在所述框中,计算设备100判定存储在页表中的物理地址的页大小是否与xot存储器范围的页大小相匹配。例如,itlb122可以指示每个地址映射的页大小(例如,巨大、较大(4mb)的页大小和/或较小的(4kb)页大小)。较大和较小的xot页面可以保持在分开的xot存储器范围中,并且页未命中处理程序210确保来自较大页面区域的xot代码将仅被映射到itlb122中的较大页面中,来自较小页面区域的xot代码将仅被映射到itlb122中的较小页面中,以此类推。

在框414中,计算设备100检查页表的页大小是否与xot存储器范围的页大小相匹配。若是,则方法400分支前进到框418,如下所述。如果页大小不匹配,则方法400前进到框416,在所述框中,计算设备100生成指示不正确xot页大小映射的故障。计算设备100可以响应于所述故障而执行任何适当的错误处理例程,包括终止进程、停止执行或执行其他错误处理任务。

返回参照框414,如果页大小匹配,则方法400前进到框418,在所述框中,计算设备100利用虚拟到物理地址映射填满正确页大小的itlb122。在框420中,计算设备100不允许或以其他方式防止利用虚拟到物理地址映射填满dtlb124。在允许填满itlb122并防止填满dtlb124之后,方法400前进到框422,在所述框中,页未命中处理程序210完成。当然,计算设备100还可以执行适用于页未命中处理程序210的任何附加操作。在完成之后,计算设备100可以恢复生成页未命中的代码的执行,从而允许代码通过访问itlb122从物理存储器地址中执行。因为dtlb124不包括到物理存储器地址的映射,所以代码无法通过dtlb124访问此物理地址处的数据。因此,通过仅在itlb122中包括而不在dtlb124中包括地址映射,计算设备100强制执行xot存储器范围的仅执行(xo)特性。另外地或可替代地,处理器120还可以执行附加检查(例如确保仅当处理器120在预期模式(例如,32位、64位等)下运行时才映射xot存储器范围,确保处理器120以预期特权级别(例如,预期环级别)运行,防止系统管理模式(smm)和/或设备经由设备直接存储器访问(dma)来访问xot存储器,包括图形处理器访问)、或其他处理器检查。

现在参照图5,在使用中,计算设备100可以执行用于处理中断或除了分支之外的控制流的其他变化的方法500。方法500开始于框502,在所述框中,计算设备100执行用于中断、故障、异常或除了分支之外的控制流的其他变化的处理程序。中断处理程序224(或其他适当的处理程序)可以被实施为处理器120的硬件、固件和/或微代码,并且因此对由计算设备100执行的软件是透明的。

在框504中,计算设备100在中断时确定指令指针(例如,rip、eip或处理器120的其他指令指针寄存器)的物理存储器地址。在一些实施例中,计算设备100可以仅仅读取指令指针寄存器。另外地或可替代地,在一些实施例中,计算设备100可以例如通过确定由itlb122执行的最后一次地址转换的物理地址来确定物理存储器地址。在一些实施例中,在框506中,计算设备100可以从处理器120的itlb命中寄存器中检索与由itlb122执行的最后一次转换相关联的物理地址的值。在每次成功命中itlb122之后,可以用物理地址、帧号、物理页号或物理存储器地址的其他部分来更新itlb命中寄存器。

现在参照图6,简图600展示了一种用于确定指令指针的物理地址的潜在技术。简图600展示了包括页号p和偏移d的虚拟地址602。如所示出的,页号p可以用于索引itlb122以检索帧号f。如果页号p未在itlb122中找到,则计算设备100可以生成页未命中,并且页未命中处理程序210可以遍历存储在存储器128中的页表606以检索帧号f,如以上结合图4所进一步描述的。如所示出的,帧号f和偏移d可以组合以产生物理存储器地址604,所述物理存储器地址可以用于从物理存储器128中检索指令。当帧号f由来自itlb122的命中产生时,帧号f存储在itlb命中寄存器608中。itlb命中寄存器608可由处理器120的硬件、固件和/或微代码读取,并且可以由处理器120对控制流的异步变化进行访问以判定中断的控制流是否是从xot存储器中执行的。若是,则如以下进一步描述的,处理器120可以清除所有的通用和扩展寄存器状态,或者利用完整性检查值对处理器状态进行加密并保存所述状态以供软件稍后进行恢复。

返回参照图5,在框508中,计算设备100判定由itlb122执行的最后一次转换的物理地址是否落入xot范围内。例如,计算设备100可以将物理地址与一个或多个xot范围寄存器进行比较,如以上结合图4所描述的。在框510中,计算设备100检查物理地址是否落入xot存储器范围内。若否,则方法500分支到框522,在所述框中,计算设备100继续处理中断或控制流的其他异步变化。返回参照框510,如果物理地址落入xot存储器范围内,则方法500前进到框512。

在框512中,计算设备100保证处理器120的处理器状态安全。计算设备100可以清除、加密、保存所述状态到不可访问的存储器区域,或者以其他方式保护一个或多个寄存器或处理器120的其他状态以便保护xot代码路径的执行。保护处理器状态能够防止中断代码访问xot代码路径的内部状态,并且具体地,防止操作系统或特权恶意软件中断xot代码路径来读取其敏感数据。在一些实施例中,在框514中,处理器120可以例如通过将一个或多个寄存器值设置为零来清除处理器寄存器。因此,在这些实施例中,任何加密密钥、秘密或由xot代码路径生成并存储在处理器寄存器中的其他敏感数据都不可由中断代码访问。类似地,在一些实施例中,在框516中,处理器120可以从处理器的高速缓存存储器(如l1高速缓存)中清除脏条目。清除高速缓存存储器可以防止暂时存储在高速缓存存储器中的秘密被计算设备100的其他处理器、核和/或硬件线程访问。

在一些实施例中,在框518中,处理器120可以清除存储器128中的一个或多个线程本地存储位置。在一些实施例中,可以限定暂存存储器,其可以被实施为线程本地存储器,所述线程本地存储器可由软件可靠地使用,而无需担心相邻处理器核、硬件线程或其他设备的访问。例如,线程本地存储设备可以被实现为被分配给特定处理器120和/或硬件线程的物理存储器128的范围。页未命中处理程序210(pmh)将防止其他处理器120和/或硬件线程的其他线程本地数据被dtlb124使用和转换。另外,pmh可以将线程本地存储设备映射至已知的虚拟地址范围,或者另外,处理器120可以提供标识线程本地存储设备虚拟地址的位置的指令。通过在xot代码路径被中断时清除线程本地存储设备,线程本地存储设备可以用于暂时地保持秘密数据。另外地或可替代地,在一些实施例中,暂存存储器或其他线程本地存储设备可以不被清除并且因此可以不被用于保持秘密。相反,线程本地存储设备可以保持非秘密临时数据,并且可以用于保持事务内的状态。另外地或可替代地,在一些实施例中,可以使用新指令或经由非存储器地址空间(如端口i/o地址空间)来访问暂存存储器或其他线程本地存储设备。

在一些实施例中,计算设备100可以使用安全路径将xot秘密(例如,一次性随机数、xot立即值或xot代码路径的其他秘密)写入到线程本地存储器位置中。例如,计算设备100可以使用专用寄存器或专门写入线程本地存储器的in指令来写入xot秘密。xot代码路径然后可以在假设的虚拟地址处将存储器128读出到此同一位置来验证秘密并且因此虚拟存储器页面映射(即,dtbl124地址映射)是正确的。通过这样做,计算设备100可以确保dtlb124在事务的持续时间上是利用正确的存储器映射来填充的。因此,这种直写和回读秘密技术可以确认其余数据页面的dtlb124地址映射的有效性是线程本地的(并且因此防止操作系统或控制虚拟存储器映射的其他软件破坏xot程序)。这种相同的机制还允许验证存储器映射的设备存储器位置,其中,访问设备寄存器空间的虚拟存储器地址可以被验证。在此示例中,计算设备100可以利用端口i/o指令(例如,in指令或out指令)将秘密写入到设备,并且然后通过mmio来回读存储器以确认地址转换与占用同一页面的设备的存储器映射的寄存器相对应。

在一些实施例中,在框520中,处理器120可以对其寄存器和相关联元数据(诸如物理指令指针(ip)地址或最后一个分支目标)进行加密。处理器120还可以在寄存器和元数据上计算完整性检查值(icv)。在还原时,软件(例如,os)可以在处理器120中重新加载经加密寄存器状态并恢复执行。在这些实施例中,处理器120将使用秘密来解密寄存器状态、检查元数据并在继续之前验证完整性检查值。以下结合图7进一步描述了用于加密和存储寄存器状态的方法的一个潜在实施例。

在保护处理器寄存器状态之后,在框522中,计算设备100处理中断或控制流的其他变化。在处理中断流之后,方法500完成。

现在参照图7,在使用中,计算设备100可以执行用于对处理器寄存器状态进行加密的方法700。方法700可以被执行例如用于在处理中断或控制流的其他异步变化的同时保证处理器120的寄存器状态安全,如以上结合图5的框520所描述的。方法700开始于框702,在所述框中,计算设备100判定是否正确进入了当前xot代码路径。例如,处理器120可以判定是否在xot代码页上的期望xot偏移处正确进入了xot代码路径。在一些实施例中,最后分支记录(lbr)或提供最后一个分支目标(地址)的新处理器120指令可以用于确保在继续和利用秘密数据之前在正确/预期偏移处正确地进入了xot代码路径。另外地或可替代地,如图6中所示出的,itlb命中寄存器608可以直接检测来自之前itlb122映射的变化。以下结合图9进一步描述了用于处理所检测的之前itlb122映射的变化的方法。

在框704中,计算设备100检查是否正确进入了xot代码路径。若否,则方法700完成。如以上结合图5所描述的,可以例如通过将一个或多个寄存器值设置为零来清除处理器120的处理器状态以保护xot代码路径的完整性。另外,在一些实施例中,计算设备100可以生成一个或多个故障、异常或未正确进入xot代码路径的其他指示。

返回参照框704,如果正确进入了xot代码路径,则方法700前进到框706,在所述框中,计算设备100对处理器120的处理器状态和/或相关联元数据进行加密。在框708中,计算设备100在处理器状态和/或元数据上计算完整性检查值(icv)。例如,处理器120可以对一个或多个寄存器的内容进行加密、将指令指针转换为xot物理地址、并将此信息保存为具有在寄存器和元数据上计算的完整性检查值(例如,hmac/经认证安全散列)的元数据,以便防止由软件篡改内容。在框710中,计算设备100将经加密处理器寄存器状态和元数据存储在存储器128中。因此,当xot代码路径中断时,经加密寄存器状态可以返回至软件,并且所述软件可以在稍后的时间恢复xot代码路径的执行。在对处理器寄存器状态进行加密之后,方法700完成。如以上结合图5所描述的,可以例如通过将一个或多个寄存器值设置为零来清除处理器120的处理器状态以保护xot代码路径的完整性。

现在参照图8,在使用中,计算设备100可以执行用于入口点验证的方法800。方法800开始于框802,在所述框中,计算设备100响应于处理器120的指令指针(ip)地址寄存器的变化而开始执行方法800。这种变化可以例如响应于控制流变化(例如,调用或跳转指令)或响应于处理器120的执行移动至存储器128中的新地址而发生。方法800的操作可以被实施为处理器120的硬件、固件和/或微代码,并且因此可以对由计算设备100执行的软件是透明的。在一些实施例中,方法800可以结合映射变化处理程序220和/或一个或多个itlb访问处理程序222来执行,如以下结合图9至图13所进一步描述的。

在框804中,计算设备100判定指令指针寄存器的新地址是否在xot存储器范围内。例如,计算设备100可以将物理地址与一个或多个xot范围寄存器进行比较,如以上结合图4和图5所描述的。继续图6中所示出的示例,计算设备可以判定帧号f是否在xot范围内。在框806中,计算设备100检查物理地址是否在xot存储器范围内。如果物理地址不在xot存储器范围内,则方法800分支前进到框822,如以下进一步描述的。如果物理地址在xot范围内,则方法800前进到框808。

在框808中,计算设备100判定新指令指针寄存器地址是否在与最后一个ip地址相同的xot存储器范围内。换言之,计算设备100判定执行是否已经跳转至新的xot存储器范围。例如,计算设备100可以判定当前xot范围是否与之前记录的xot范围相匹配。在框810中,计算设备100检查新指令指针寄存器地址是否在与最后一个ip地址相同的xot存储器范围内。若是,则方法800分支前进到框820,在所述框中,计算设备100将当前xot存储器范围记录为最后一个指令指针寄存器地址的范围。因此,在随后的指令指针地址变化时,可以将新的xot存储器范围与所记录的xot存储器范围进行比较。在记录xot存储器范围之后,方法800前进到框818,在所述框中,计算设备100继续执行。因此,计算设备100可以继续执行在相同xot存储器范围内的xot代码路径。返回参照框810,如果新xot存储器范围不在与最后一个ip地址相同的xot存储器范围内(或者如果最后一个ip地址不在xot存储器范围内),则方法800前进到框812。

在框812中,计算设备100判定指令指针(例如,rip、eip或处理器120的其他指令指针寄存器)的较低地址位是否与预定义入口点相匹配。当执行移动到xot范围映射时,计算设备100期望将在特定的入口点或偏移处进入xot范围。例如,如在图6中所示出的,每当物理地址604的帧号f改变为xot范围内的新值时,地址604的偏移d的位可以预期为从页面开始的16个字节。在框814中,计算设备100检查较低地址位是否与预定义入口点相匹配。若是,则方法800分支到框820,在所述框中,计算设备100如上所述的继续执行。因此,计算设备100允许在预定义偏移处开始的xot代码路径的执行。

返回参照框814,如果较低地址位不与预定义入口点相匹配,则方法800前进到框816,在所述框中,处理器120生成故障。如果执行未在预定义入口点处启动,则生成故障,从而迫使xot代码路径在入口点(例如,进入页面中的16个字节)处启动执行。攻击者可能不会在任何其他偏移处开始xot页面的执行,这可以进一步保护xot代码路径。在生成故障之后,在一些实施例中,方法800的执行可以继续框818,在所述框中,计算设备100继续执行。例如,计算设备100可以响应于所述故障而执行错误处理程序例程或其他程序。

返回参照框806,如果新指令指针寄存器地址不在xot存储器范围内,则方法800分支前进到框822,在所述框中,计算设备100清除所记录的xot存储器范围。因此,在进入xot区域的下一个ip地址变化发生时,计算设备100将确保执行在预定义入口点处开始。在清除所记录的xot存储器范围之后,方法800前进到框818,在所述框中,计算设备100继续执行。在生成故障和/或继续执行之后,方法800完成。

现在参照图9,在使用中,计算设备100可以执行用于itlb映射变化处理程序220的方法900。方法900开始于框902,在所述框中,计算设备100执行处理器120的映射变化处理程序220。计算设备100可以响应于存储在itlb命中寄存器608中的值的变化而执行映射变化处理程序220。这种变化可以例如响应于控制流变化(例如,调用或跳转指令)或响应于执行移动至新物理页面或存储器128中的其他区域而发生。映射变化处理程序220可以被实施为处理器120的硬件、固件和/或微代码,并且因此对由计算设备100执行的软件是透明的。

在框904中,计算设备100确定最后一次itlb122转换的物理地址。计算设备100可以确定整个物理地址或物理地址的一部分,诸如物理页号、帧号、段号或地址的其他部分。例如,如图6中所示出的,计算设备100可以查询itlb命中寄存器608以确定最后一次itlb122转换的帧号f。

在框906中,计算设备100判定最后一次itlb122转换的物理地址是否在xot存储器范围内。例如,计算设备100可以将物理地址与一个或多个xot范围寄存器进行比较,如以上结合图4和图5所描述的。继续图6中所示出的示例,计算设备可以判定帧号f是否在xot范围内。在框908中,计算设备100检查物理地址是否在xot存储器范围内。如果物理地址不在xot存储器范围内,则方法900分支前进到框916,在所述框中,计算设备100继续执行。如果物理地址在xot范围内,则方法900前进到框910。

在框910中,计算设备100判定指令指针(例如,rip、eip或处理器120的其他指令指针寄存器)的较低地址位是否与预定义入口点相匹配。当执行移动到xot范围映射时,计算设备100期望将在特定的入口点或偏移处进入xot范围。例如,如在图6中所示出的,每当物理地址604的帧号f改变为xot范围内的新值时,地址604的偏移d的位可以预期为从页面开始的16个字节。

在框912中,计算设备100检查较低地址位是否与预定义入口点相匹配。若是,则方法900分支到框916,在所述框中,计算设备100继续执行。因此,计算设备100允许在预定义偏移处开始的xot代码路径的执行。直到itlb命中寄存器608的下一次变化,itlb映射变化处理程序220才被执行,并且因此存储器页面的其余部分可以根据页面内的xot程序限定的控制流而继续执行(只要其在相同的页面上执行)。例如,如图6中所示出的,如果物理地址604的帧号f自最后一次itlb122命中之后没有改变,则在偏移d位上不需要入口点检查。

返回参照框912,如果较低地址位不与预定义入口点相匹配,则方法900前进到框914,在所述框中,处理器120生成故障。如果执行未在预定义入口点处启动,则生成故障,从而迫使xot代码路径在入口点(例如,进入页面中的16个字节)处启动执行。攻击者可能不会在任何其他偏移处开始xot页面的执行,这可以进一步保护xot代码路径。在生成故障之后,在一些实施例中,方法900的执行可以继续框916,在所述框中,计算设备100继续执行。例如,计算设备100可以响应于所述故障而执行错误处理程序例程或其他程序。在生成故障和/或继续执行之后,方法900完成。

现在参照图10,在使用中,计算设备100可以执行用于itlb命中或未命中处理程序222的方法1000。方法1000开始于框1002,在所述框中,计算设备100执行处理器120的itlb命中或未命中处理程序222。计算设备100响应于试图通过itlb122来访问虚拟存储器地址而执行itlb命中或未命中处理程序222。在当虚拟存储器地址包括在itlb122(命中)中并且当虚拟存储器地址不包括在itlb122(未命中)中两种情况时执行itlb命中或未命中处理程序222。itlb命中或未命中处理程序222可以被实施为处理器120的硬件、固件和/或微代码,并且因此对由计算设备100执行的软件是透明的。

在框1004中,计算设备100判定前一指令是否是由处理器120从仅执行事务(xot)存储器范围内执行的。计算设备100可以使用任何适当的技术来判定前一指令是否是从xot存储器范围内执行的。在一些实施例中,在框1006中,计算设备100检查与itlb122相关联的所记录的xot索引。如以下结合图11进一步描述的,当在xot范围内的虚拟到物理地址映射被添加至itlb122时,处理器120可以将itlb122中的新添加条目的索引记录为xot索引。计算设备100可以检查xot索引处的itlb122中的条目是否有效(例如,尚未被驱逐)以判定最后一条指令是否是从xot范围内执行的。在框1008中,计算设备100检查前一指令是否是由处理器120从xot存储器范围内执行的。若否,则方法1000分支前进到框1018以继续处理itlb命中或未命中,如以下进一步描述的。如果前一指令是从xot存储器范围内执行的,则方法1000前进到框1010。

在框1010中,计算设备100判定正在处理itlb未命中还是正在处理itlb命中。如果正在处理itlb命中,则方法1000分支到框1014,如下所述。如果正在处理itlb未命中,则方法1000分支到框1012。在框1012中,计算设备100驱逐所记录的xot索引处的itlb122中的条目。因此,计算设备100驱逐itlb122中与先前所执行指令的xot范围相对应的条目,这将导致未来试图访问此xot范围从而导致itlb未命中。在驱逐itlb122条目之后,方法1000前进到框1018以继续处理itlb未命中,如以下进一步所描述的。

返回参照框1010,如果正在处理itlb命中,则方法1000分支到框1014,在所述框中,计算设备100判定itlb命中的itlb122中的索引是否与所记录的xot索引相匹配。换言之,计算设备100判定当前正被执行的指令是否是从与先前所执行指令相同的xot范围中执行的。在框1016中,计算设备100检查itlb命中的索引是否与所记录的xot索引相匹配。若是,则方法1000前进到框1018以继续处理itlb命中,如以下进一步描述的。如果itlb命中的索引与所记录的xot索引不匹配,则方法1000分支前进到框1012,在所述框中,计算设备100驱逐所记录的xot索引的itlb条目。因此,在计算设备100开始执行新的xot范围之后,任何访问之前的xot范围的尝试都将导致itlb未命中。在驱逐itlb122条目之后,方法1000前进到框1018以继续处理itlb命中。

在框1018中,计算设备100继续处理itlb命中或未命中。计算设备100可以例如填满itlb122、访问itlb122中的虚拟到物理地址映射条目、或者执行适用于itlb122命中或itlb122未命中的其他操作。具体地,响应于itlb122未命中,计算设备100可以验证在有效入口点处进入了被添加至itlb122的任何xot范围。以下结合图11描述了用于验证在有效入口点处进入了xot范围的方法的一个潜在实施例。在框1020中,itlb命中或未命中处理程序222完成。当然,计算设备100还可以执行适用于itlb命中或未命中处理程序222的任何附加操作,包括强制执行xot存储器范围的仅执行特性。

现在参照图11,在使用中,计算设备100可以执行用于处理itlb未命中的方法1100。方法1100可以例如由处理器120的itlb命中或未命中处理程序222结合图10的框1018来执行。方法1100开始于框1102,在所述框中,计算设备100判定虚拟到物理地址映射的物理地址是否落入xot存储器范围内。例如,计算设备100可以将物理地址与已经由可信固件和/或由可信xot代码路径设置的一个或多个xot范围寄存器进行比较,如以上结合图3所描述的。计算设备100可以通过遍历一个或多个页表来确定虚拟到物理地址映射,如以上结合图4的框404所描述的。在框1104中,计算设备100检查物理地址是否在xot存储器范围内。若否,则方法1100分支前进到框1114,如下所述。如果物理地址在xot存储器范围内,则方法1100前进到框1106。

在框1106中,计算设备100判定物理地址是否在xot范围内的授权入口点处。例如,计算设备100可以判定指令指针(例如,rip、eip、或处理器120的其他指令指针寄存器)的较低地址位是否与预定义入口点或偏移相匹配。在框1108中,计算设备100检查物理地址是否在预定义入口点处。若否,则方法1100分支到框1110,在所述框中,处理器120生成故障。如果指令指针未在预定义入口点处启动,则生成故障,从而迫使xot代码路径在入口点(例如,进入页面的16个字节)处启动执行。攻击者可能不会在任何其他偏移处开始xot页面的执行,这可以进一步保护xot代码路径。

返回参照框1108,如果物理地址在预定义入口点处,则方法1100前进到框1112,在所述框中,计算设备100记录新的虚拟到物理地址映射将被插入的itlb122中的索引。如以上结合图10所描述的,xot索引可以用于判定前一指令是否是从xot范围中执行的。

在框1114中,计算设备100用虚拟到物理地址映射填满itlb122。具体地,如以上结合框1112所描述的,对于xot范围,计算设备100可以利用虚拟到物理地址映射将新条目插入到所记录的xot索引处的itlb122中。因此,在填满itlb122之后,计算设备100可以执行来自相关联物理地址的指令。在填满itlb122之后,方法1100完成。

现在参照图12,在使用中,计算设备100可以执行用于itlb未命中处理程序222的方法1200。方法1200可以由还执行itlb命中处理程序222的计算设备100来执行,如以下结合图13所描述的。方法1200开始于框1202,在所述框中,计算设备100执行处理器120的itlb未命中处理程序222。计算设备100响应于试图访问不包括在itlb122(未命中)中的虚拟存储器地址而执行itlb未命中处理程序222。itlb未命中处理程序222可以被实施为处理器120的硬件、固件和/或微代码,并且因此对由计算设备100执行的软件是透明的。

在框1204中,计算设备100判定虚拟到物理地址映射的物理地址是否落入xot存储器范围内。例如,计算设备100可以将物理地址与已经由可信固件和/或由可信xot代码路径设置的一个或多个xot范围寄存器进行比较,如以上结合图3所描述的。计算设备100可以通过遍历一个或多个页表来确定虚拟到物理地址映射,如以上结合图4的框404所描述的。在框1206中,计算设备100检查物理地址是否在xot存储器范围内。若否,则方法1200分支前进到框1216,如下所述。如果物理地址在xot存储器范围内,则方法1200前进到框1208。

在框1208中,计算设备100判定物理地址是否在xot范围内的授权入口点处。例如,计算设备100可以判定指令指针(例如,rip、eip、或处理器120的其他指令指针寄存器)的较低地址位是否与预定义入口点或偏移相匹配。在框1210中,计算设备100检查物理地址是否在预定义入口点处。若否,则方法1200分支到框1212,在所述框中,处理器120生成故障。如果指令指针未在预定义入口点处启动,则生成故障,从而迫使xot代码路径在入口点(例如,进入页面的16个字节)处启动执行。攻击者可能不会在任何其他偏移处开始xot页面的执行,这可以进一步保护xot代码路径。

返回参照框1210,如果物理地址在预定义入口点处,则方法1200前进到框1214,在所述框中,计算设备100针对当前的虚拟到物理映射设置待插入的itlb122条目中的xot位。如以下进一步描述的,xot位可以用于判定itlb122条目是否与xot存储器范围相关联。

在框1216中,计算设备100用虚拟到物理地址映射填满itlb122。因此,在填满itlb122之后,计算设备100可以执行来自相关联物理地址的指令。在框1218中,计算设备100在插入的虚拟到物理映射的索引中记录为最后使用的itlb条目。计算设备100可以记录例如在处理器120的一个或多个模型特定寄存器或其他存储位置中的索引。在框1220中,itlb未命中处理程序222完成。计算设备100可以使用新添加至itlb122的虚拟到物理映射来恢复代码的执行。

现在参照图13,在使用中,计算设备100可以执行用于itlb命中处理程序222的方法1300。方法1300可以由还执行itlb未命中处理程序222的计算设备100来执行,如以上结合图12所描述的。方法1300开始于框1302,在所述框中,计算设备100执行处理器120的itlb命中处理程序222。计算设备100响应于试图访问包括在itlb122(命中)中的虚拟存储器地址而执行itlb命中处理程序222。itlb命中处理程序222可以被实施为处理器120的硬件、固件和/或微代码,并且因此对由计算设备100执行的软件是透明的。

在框1304中,计算设备100判定itlb122命中的索引是否与最后使用的itlb条目的索引相匹配。如以上结合图12所描述的,当itlb122响应于itlb未命中而被填满时,计算设备100可以记录最后使用的itlb条目的索引。计算设备100可以记录例如在处理器120的一个或多个模型特定寄存器或其他存储位置中的索引。在框1306中,计算设备100检查itlb命中的索引是否与最后使用的itlb条目的索引相匹配。若是,则方法1300分支前进到框1318,如下所述。如果itlb命中的索引与最后使用的itlb条目的索引不匹配,则方法1300前进到框1308。

在框1308中,计算设备100判定是否在itlb命中的itlb122条目中设置xot位。换言之,计算设备100判定itlb命中的itlb条目是否引用了xot存储器范围。在框1310中,计算设备100检查itlb命中是否是xot条目(也就是说,xot位是否是针对itlb命中的itlb条目而设置的)。若否,则方法1300分支前进到框1318,如下所述。如果itlb命中引用了itlb122中的xot条目,则方法1300前进到框1312。

在框1312中,计算判定物理地址是否在xot范围内的授权入口点处。例如,计算设备100可以判定指令指针(例如,rip、eip、或处理器120的其他指令指针寄存器)的较低地址位是否与预定义入口点或偏移相匹配。在框1314中,计算设备100检查物理地址是否在预定义入口点处。若否,则方法1300分支到框1316,在所述框中,处理器120生成故障。如果指令指针未在预定义入口点处启动,则生成故障,从而迫使xot代码路径在入口点(例如,进入页面的16个字节)处启动执行。攻击者可能不会在任何其他偏移处开始xot页面的执行,这可以进一步保护xot代码路径。返回参照框1314,如果物理地址在预定义入口点处,则方法1300前进到框1318。

在框1318中,计算设备100利用当前itlb命中的索引来更新最后使用的itlb条目。在更新最后使用的itlb条目之后,方法1300前进到框1320,在所述框中,itlb命中处理程序222完成。计算设备100可以使用itlb命中的虚拟到物理映射来继续代码的执行。

现在参照图14,在使用中,计算设备100可以执行用于基于软件的仅执行事务存储器执行的方法1400。方法1400可以由计算设备100的软件安全监测程序来执行,所述软件安全监测程序可以被实施为操作系统、虚拟机监测程序或计算设备100的其他监督软件的一部分或全部。方法1400开始于框1402,在所述框中,计算设备100将代码区域标记为仅执行。所述代码区域包括一个或多个秘密值以及用于处理所述秘密的相关联代码。例如,使用英特尔ia-32分割的安全监测程序可以将覆盖代码区域的任何代码段标记为仅执行并将所述代码区域排除在所有数据段之外。

在框1404中,计算设备100将仅执行代码区域标记为事务区域。计算设备100可以使用任何适当的技术来将代码区域标记为事务性的。在框1406中,计算设备100可以将存储器128的一个或多个范围指定为暂存存储器。如上所述,暂存存储器可以被实施为线程本地存储器,所述线程本地存储器可由软件可靠地使用,而无需担心相邻存储器核、硬件线程或其他设备的访问。如以下所述,通过在xot代码路径被中断时清除线程本地存储设备,线程本地存储设备可以用于暂时地保持秘密数据。在框1408中,计算设备100指定中止处理程序地址。如以下所述,所述中止处理程序可以响应于中断、异常或控制流的其他异步变化而被调用。在指定中止处理程序地址之后,初始化可以完成,并且计算设备100可以开始xot代码范围的事务执行。当然,应当理解,框1402、1404、1406、1408的初始化功能可以在其他时间并且以任何适当的顺序执行。

在框1410中,计算设备100开始事务执行。计算设备100可以在基于软件的事务中执行,而无需调用处理器120的硬件事务存储器支持。在框1412中,计算设备100跳转至xot代码范围的开始。

在框1414中,计算设备100将来自xot代码范围的一个或多个秘密加载到寄存器和/或暂存存储器中。例如,计算设备100可以执行包括作为立即值的秘密值的一条或多条指令。计算设备100还可以执行相关联的控制流和模式检查。例如,计算设备100可以使用mov指令将随机秘密加载到动态存储设备中,所述mov指令将在提交事务时被检查以验证xot范围尚未在不同的起始地址处被调用或者以其他方式处理控制流威胁。

在框1416中,计算设备100使用所加载的秘密来执行处理。例如,计算设备100可以执行xot代码路径以处理秘密。在框1418中,计算设备100提交事务。在执行期间,由事务(例如,秘密)处理的立即值对其他线程不可见。提交事务可以使事务的结果对其他线程可见,并且可以允许事务防止对秘密的未授权访问。

如图14中所示出的,如果发生中断、故障、异常或控制流的其他异步变化,则方法1400的执行可以跳转至框1420,在所述框中,计算设备100执行用于中断、故障、异常或控制流的其他异步变化的处理程序。方法1400的中断处理程序可以被实施为计算设备100的安全监测程序的一部分。在框1422中,计算设备100判定中断代码是否是在xot范围内执行的。若否,则方法1400分支前进到框1428,在所述框中,计算设备100继续处理中断或控制流的其他异步变化。如果中断代码是在xot范围内执行的,则方法1400前进到框1424。

在框1424中,计算设备100清除处理器寄存器以及可能包含秘密的暂存存储器。清除寄存器和暂存存储器能够防止中断代码访问xot代码路径的内部状态。在框1426中,计算设备100用中止处理程序地址替换栈上的中断的指令指针。因此,在中断处理程序完成之后,处理器120可以返回到中止处理程序,所述中止处理程序将执行在当前事务被中止之后所需的操作,比如,重新尝试事务。在替换中断指令指针之后,方法1400前进到框1428,在所述框中,计算设备100继续处理中断或控制流的其他异步变化。

应当理解的是,在一些实施例中,方法300、400、500、700、800、900、1000、1100、1200和/或1300可以被实施为存储在计算机可读介质上的各种指令,所述指令可以由计算设备100的处理器120、外围设备134和/或其他部件来执行,以使得计算设备100执行相应的方法300、400、500、700、800、900、1000、1100、1200和/或1300。所述计算机可读介质可以被实施为能够由计算设备100读取的任何类型的介质,包括但不限于存储器128、数据存储设备130、处理器120的本地存储器、处理器120的固件或微代码、计算设备100的其他存储器或数据存储设备、可由计算设备100的外围设备134读取的便携式介质、和/或其他介质。

示例

以下提供了在本文中所公开的技术的说明性示例。所述技术的实施例可以包括以下所描述的示例中的任何一个或多个示例及其任何组合。

示例1包括一种用于安全代码执行的计算设备,所述计算设备包括:仅执行模块,用于配置所述计算设备的存储器的仅执行事务范围,其中,所述仅执行事务范围不能作为数据被读取或写入;以及事务模块,用于:(i)响应于除了分支之外的控制流变化而判定所述计算设备的处理器的最后一个指令指针物理地址是否在所述仅执行事务范围内,并且(ii)响应于确定了所述最后一个指令指针物理地址在所述仅执行事务范围内而保证所述处理器的处理器状态安全。

示例2包括如示例1所述的主题,并且进一步包括:代码管理模块,用于:(i)执行重置向量,并且(ii)响应于所述重置向量的执行而将仅执行事务代码镜像加载到所述存储器的所述仅执行事务范围中;其中,配置所述存储器的所述仅执行事务范围包括响应于所述仅执行事务代码镜像的加载而配置所述仅执行事务范围

示例3包括如示例1和2中任一项所述的主题,并且其中,配置所述存储器的所述仅执行事务范围包括:写入所述处理器的一次设置范围寄存器。

示例4包括如示例1至3中任一项所述的主题,并且其中,配置所述存储器的所述仅执行事务范围进一步包括:基于所述存储器的所述仅执行事务范围的页大小而确定所述一次设置范围寄存器。

示例5包括如示例1至4中任一项所述的主题,并且其中:所述代码管理模块进一步用于响应于所述仅执行事务代码镜像的所述加载而测量所述仅执行事务代码镜像;其中,配置所述存储器的所述仅执行事务范围包括响应于所述仅执行事务代码镜像的测量而配置所述存储器的所述仅执行事务范围。

示例6包括如示例1至5中任一项所述的主题,并且其中,所述代码管理模块进一步用于响应于所述存储器的所述仅执行事务范围的配置而执行所述仅执行事务代码镜像。

示例7包括如示例1至6中任一项所述的主题,并且其中,执行所述仅执行事务代码镜像包括:利用被存储为所述仅执行事务代码镜像的指令的立即值的秘密来配置所述计算设备的端口i/o设备。

示例8包括如示例1至7中任一项所述的主题,并且其中,执行所述仅执行事务代码镜像进一步包括:强制执行对所述端口i/o设备的访问控制。

示例9包括如示例1至8中任一项所述的主题,并且其中,执行所述仅执行事务代码镜像包括:由所述仅执行事务代码镜像将第二仅执行事务代码镜像加载到所述存储器的第二仅执行事务范围中;并且由所述仅执行事务代码镜像响应于所述第二仅执行事务代码镜像的加载而将所述存储器的所述第二仅执行事务范围配置为仅执行事务存储器。

示例10包括如示例1至9中任一项所述的主题,并且其中,执行所述仅执行事务代码镜像进一步包括:由所述仅执行事务代码镜像响应于所述第二仅执行事务代码镜像的所述加载而测量所述第二仅执行事务代码镜像;其中,配置所述存储器的所述第二仅执行事务范围包括:响应于所述第二仅执行事务代码镜像的测量而配置所述存储器的所述第二仅执行事务范围。

示例11包括如示例1至10中任一项所述的主题,并且其中:所述处理器进一步包括指令转换后备缓冲器和数据转换后备缓冲器;所述仅执行模块进一步用于响应于页未命中而执行所述处理器的页未命中处理程序,其中,所述页未命中处理程序用于:(i)响应于所述页未命中而确定虚拟到物理地址映射,其中,所述虚拟到物理地址映射将虚拟存储器地址关联至物理存储器地址,(ii)判定所述物理存储器地址是否在所述仅执行事务范围内,(iii)响应于确定了所述物理存储器地址在所述仅执行事务范围内而利用所述虚拟到物理地址映射来填充所述指令转换后备缓冲器,并且(iv)响应于确定了所述页物理地址在所述仅执行事务范围内而防止利用所述虚拟到物理地址映射来填充所述数据转换后备缓冲器。

示例12包括如示例1至11中任一项所述的主题,并且其中:所述页未命中处理程序进一步用于:(i)通过所述计算设备的页表来判定与所述仅执行事务范围相关联的页大小是否与同所述物理存储器地址相关联的页大小相匹配,并且(ii)响应于通过所述页表确定与所述仅执行事务范围相关联的所述页大小与同所述物理存储器地址相关联的所述页大小不匹配而生成页大小失配故障;其中,利用所述虚拟到物理地址映射来填充所述处理器的所述指令转换后备缓冲器进一步包括:响应于通过所述页表确定与所述仅执行事务范围相关联的所述页大小与同所述物理存储器地址相关联的所述页大小相匹配而利用所述虚拟到物理地址映射来填充所述处理器的所述指令转换后备缓冲器。

示例13包括如示例1至12中任一项所述的主题,并且其中,判定所述最后一个指令指针物理地址是否在所述仅执行事务范围内包括:确定所述处理器的所述指令转换后备缓冲器的最后一个转换值。

示例14包括如示例1至13中任一项所述的主题,并且其中,确定所述处理器的所述指令转换后备缓冲器的所述最后一个转换值包括:读取所述处理器的最后一个指令转换后备缓冲器命中寄存器。

示例15包括如示例1至14中任一项所述的主题,并且进一步包括入口点模块,所述入口点模块用于响应于所述最后一个指令转换后备缓冲器命中寄存器的值的变化而执行所述处理器的映射变化处理程序,其中,所述映射变化处理程序用于:确定第二物理存储器地址,其中,第二物理存储器地址包括所述处理器的所述指令转换后备缓冲器的最后一个转换值;判定所述第二物理存储器地址是否在所述仅执行事务范围内;响应于确定了所述第二物理存储器地址在所述仅执行事务范围内而判定所述第二物理存储器地址的偏移部分是否与预定义入口点偏移相匹配;并且响应于确定了所述第二物理存储器地址的所述偏移部分与所述预定义入口点偏移不匹配而生成故障。

示例16包括如示例1至15中任一项所述的主题,并且进一步包括入口点模块,所述入口点模块用于响应于指令转换后备缓冲器未命中而执行所述处理器的未命中处理程序,其中,所述未命中处理程序用于:判定与所述指令转换后备缓冲器未命中相关联的物理存储器地址是否在仅执行事务范围内;响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在所述仅执行事务范围内而判定与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址是否在授权入口点处;以及响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址不在授权入口点处而生成故障。

示例17包括如示例1至16中任一项所述的主题,并且其中:所述未命中处理程序进一步用于响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在授权入口点处而记录与所述指令转换后备缓冲器未命中相关联的虚拟到物理地址映射的仅执行事务索引;并且所述入口点模块进一步用于响应于指令转换后备缓冲器命中而执行所述处理器的命中处理程序,其中,所述命中处理程序用于:(i)判定由所述处理器执行的前一指令是否是在仅执行事务范围内执行的,(ii)响应于确定了由所述处理器执行的所述前一指令是在仅执行事务范围内执行的而判定与所述指令转换后备缓冲器命中相关联的虚拟到物理地址映射的索引是否与所记录的仅执行事务索引相匹配,并且(iii)响应于确定了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的所述索引与所记录的仅执行事务索引不匹配而驱逐在所述所记录仅执行事务索引处的所述指令转换后备缓冲器的条目。

示例18包括如示例1至17中任一项所述的主题,并且其中,所述未命中处理程序进一步用于:(i)响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在授权入口点处而将与所述指令转换后备缓冲器未命中相关联的虚拟到物理地址映射的索引记录为最后使用的指令转换后备缓冲器的条目,并且(ii)响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在授权入口点处而设置与所述指令转换后备缓冲器未命中相关联的所述虚拟到物理地址映射的仅执行事务位;并且所述入口点模块进一步用于响应于指令转换后备缓冲器命中而执行所述处理器的命中处理程序,其中,所述命中处理程序用于:(i)判定与所述指令转换后备缓冲器命中相关联的虚拟到物理地址映射的索引是否与最后使用的指令转换缓冲器条目的索引相匹配,(ii)响应于确定了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的所述索引与所述最后使用的指令转换缓冲器条目的所述索引不匹配而判定是否设置了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的仅执行事务位,(iii)响应于确定了设置了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的所述仅执行事务位而判定与所述指令转换后备缓冲器命中相关联的物理存储器地址是否在授权入口点处,并且(iv)响应于确定了与所述指令转换后备缓冲器命中相关联的所述物理存储器地址不在授权入口点处而生成故障。

示例19包括如示例1至18中任一项所述的主题,并且其中,所述事务模块进一步用于响应于所述控制流变化而执行所述处理器的中断处理程序,其中,所述中断处理程序用于:判定最后一个指令指针物理地址是否在所述仅执行事务范围内;并且响应于确定了所述最后一个指令指针物理地址在所述仅执行事务范围内而保证所述处理器的所述处理器状态安全。

示例20包括如示例1至19中任一项所述的主题,并且其中,保证所述处理器的所述处理器状态安全包括:清除所述处理器的一个或多个寄存器。

示例21包括如示例1至20中任一项所述的主题,并且其中,保证所述处理器状态安全包括:判定是否正确进入了所述仅执行事务范围;响应于确定了正确进入了所述仅执行事务范围而对所述处理器的所述处理器状态进行加密以生成经加密处理器状态;响应于确定了正确进入了所述仅执行事务范围而对所述处理器状态计算完整性检查值;并且存储所述经加密处理器状态和所述完整性检查值。

示例22包括如示例1至21中任一项所述的主题,并且其中,保证所述处理器状态安全包括:清除所述计算设备的线程本地存储存储器区。

示例23包括如示例1至22中任一项所述的主题,并且其中,保证所述处理器状态安全包括:清除所述计算设备的所述处理器的本地高速缓存存储器中的脏条目。

示例24包括一种用于安全代码执行的方法,所述方法包括:由计算设备配置所述计算设备的存储器的仅执行事务范围,其中,所述仅执行事务范围不能作为数据被读取或写入;以及由所述计算设备响应于除了分支之外的控制流变化而判定所述计算设备的处理器的最后一个指令指针物理地址是否在所述仅执行事务范围内;以及由所述处理器响应于确定了所述最后一个指令指针物理地址在所述仅执行事务范围内而保护所述处理器的处理器状态。

示例25包括如示例24所述的主题,并且进一步包括:由所述计算设备执行重置向量;以及由所述计算设备响应于执行所述重置向量而将仅执行事务代码镜像加载到所述存储器的所述仅执行事务范围中;其中,配置所述仅执行事务范围包括响应于加载所述仅执行事务代码镜像而配置所述仅执行事务范围。

示例26包括如示例24和25中任一项所述的主题,并且其中,配置所述存储器的所述仅执行事务范围包括:写入所述处理器的一次设置范围寄存器。

示例27包括如示例24至26中任一项所述的主题,并且其中,配置所述存储器的所述仅执行事务范围进一步包括:基于所述存储器的所述仅执行事务范围的页大小而确定所述一次设置范围寄存器。

示例28包括如示例24至27中任一项所述的主题,并且进一步包括:由所述计算设备响应于加载所述仅执行事务代码镜像而测量所述仅执行事务代码镜像;其中,配置所述存储器的所述仅执行事务范围包括响应于测量所述仅执行事务代码镜像而配置所述存储器的所述仅执行事务范围。

示例29包括如示例24至28中任一项所述的主题,并且进一步包括:由所述计算设备响应于配置所述存储器的所述仅执行事务范围而执行所述仅执行事务代码镜像。

示例30包括如示例24至29中任一项所述的主题,并且其中,执行所述仅执行事务代码镜像包括:利用被存储为所述仅执行事务代码镜像的指令的立即值的秘密来配置所述计算设备的端口i/o设备。

示例31包括如示例24至30中任一项所述的主题,并且其中,执行所述仅执行事务代码镜像进一步包括:强制执行对所述端口i/o设备的访问控制。

示例32包括如示例24至31中任一项所述的主题,并且其中,执行所述仅执行事务代码镜像包括:由所述仅执行事务代码镜像将第二仅执行事务代码镜像加载到所述存储器的第二仅执行事务范围中;以及由所述仅执行事务代码镜像响应于加载所述第二仅执行事务代码镜像而将所述存储器的所述第二仅执行事务范围配置为仅执行事务存储器。

示例33包括如示例24至32中任一项所述的主题,并且其中,执行所述仅执行事务代码镜像进一步包括:由所述仅执行事务代码镜像响应于加载所述第二仅执行事务代码镜像而测量所述第二仅执行事务代码镜像;其中,配置所述存储器的所述第二仅执行事务范围包括响应于测量所述第二仅执行事务代码镜像而配置所述存储器的所述第二仅执行事务范围。

示例34包括如示例24至33中任一项所述的主题,并且其中,配置所述存储器的所述仅执行事务范围包括:由所述计算设备的所述处理器响应于页未命中而执行所述处理器的页未命中处理程序;由所述页未命中处理程序响应于所述页未命中而确定虚拟到物理地址映射,其中,所述虚拟到物理地址映射将虚拟存储器地址关联至物理存储器地址;由所述页未命中处理程序判定所述物理存储器地址是否在所述仅执行事务范围内;由所述页未命中处理程序响应于确定了所述物理存储器地址在所述仅执行事务范围内而利用所述虚拟到物理地址映射来填充所述处理器的指令转换后备缓冲器;以及由所述页未命中处理程序响应于确定了所述页物理地址在所述仅执行事务范围内而防止利用所述虚拟到物理地址映射来填充所述处理器的数据转换后备缓冲器。

示例35包括如示例24至34中任一项所述的主题,并且进一步包括:由所述页未命中处理程序通过所述计算设备的页表判定与所述仅执行事务范围相关联的页大小是否与同所述物理存储器地址相关联的页大小相匹配;以及由所述页未命中处理程序响应于通过所述页表确定与所述仅执行事务范围相关联的所述页大小与同所述物理存储器地址相关联的所述页大小不匹配而生成页大小失配故障;其中,利用所述虚拟到物理地址映射来填充所述处理器的所述指令转换后备缓冲器进一步包括:响应于通过所述页表确定与所述仅执行事务范围相关联的所述页大小与同所述物理存储器地址相关联的所述页大小相匹配而利用所述虚拟到物理地址映射来填充所述处理器的所述指令转换后备缓冲器。

示例36包括如示例24至35中任一项所述的主题,并且其中,判定所述最后一个指令指针物理地址是否在所述仅执行事务范围内包括:确定所述处理器的所述指令转换后备缓冲器的最后一个转换值。

示例37包括如示例24至36中任一项所述的主题,并且其中,确定所述处理器的所述指令转换后备缓冲器的所述最后一个转换值包括:读取所述处理器的最后一个指令转换后备缓冲器命中寄存器。

示例38包括如示例24至37中任一项所述的主题,并且进一步包括:由所述处理器响应于所述最后一个指令转换后备缓冲器命中寄存器的值的变化而执行所述处理器的映射变化处理程序;由所述映射变化处理程序确定第二物理存储器地址,其中,第二物理存储器地址包括所述处理器的所述指令转换后备缓冲器的最后一个转换值;由所述映射变化处理程序判定所述第二物理存储器地址是否在所述仅执行事务范围内;由所述映射变化处理程序响应于确定了所述第二物理存储器地址在所述仅执行事务范围内而判定所述第二物理存储器地址的偏移部分是否与预定义入口点偏移相匹配;以及由所述映射变化处理程序响应于确定了所述第二物理存储器地址的所述偏移部分与所述预定义入口点偏移不匹配而生成故障。

示例39包括如示例24至38中任一项所述的主题,并且进一步包括:由所述处理器响应于指令转换后备缓冲器未命中而执行所述处理器的未命中处理程序;由所述未命中处理程序判定与所述指令转换后备缓冲器未命中相关联的物理存储器地址是否在仅执行事务范围内;由所述未命中处理程序响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在所述仅执行事务范围内而判定与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址是否在授权入口点处;以及由所述未命中处理程序响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址不在授权入口点处而生成故障。

示例40包括如示例24至39中任一项所述的主题,并且进一步包括:由所述未命中处理程序响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在授权入口点处而记录与所述指令转换后备缓冲器未命中相关联的虚拟到物理地址映射的仅执行事务索引;由所述处理器响应于指令转换后备缓冲器命中而执行所述处理器的命中处理程序;由所述命中处理程序判定由所述处理器执行的前一指令是否在仅执行事务范围内执行;由所述命中处理程序响应于确定了由所述处理器执行的所述前一指令在仅执行事务范围内执行而判定与所述指令转换后备缓冲器命中相关联的虚拟到物理地址映射的索引是否与所记录的仅执行事务索引相匹配;以及由所述命中处理程序响应于确定了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的所述索引与所述所记录的仅执行事务索引不匹配而驱逐在所述所记录的仅执行事务索引处的所述指令转换后备缓冲器的条目。

示例41包括如示例24至40中任一项所述的主题,并且进一步包括:由所述未命中处理程序响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在授权入口点处而将与所述指令转换后备缓冲器未命中相关联的虚拟到物理地址映射的索引记录为最后使用的指令转换缓冲器条目;由所述未命中处理程序响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在授权入口点处而设置与所述指令转换后备缓冲器未命中相关联的所述虚拟到物理地址映射的仅执行事务位;由所述处理器响应于指令转换后备缓冲器命中而执行所述处理器的命中处理程序;由所述命中处理程序判定与所述指令转换后备缓冲器命中相关联的虚拟到物理地址映射的索引是否与所述最后使用的指令转换缓冲器条目的索引相匹配;由所述命中处理程序响应于确定了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的所述索引与所述最后使用的指令转换缓冲器条目的所述索引不匹配而判定是否设置了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的仅执行事务位;由所述命中处理程序响应于确定了设置了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的所述仅执行事务位而判定与所述指令转换后备缓冲器命中相关联的物理存储器地址是否在授权入口点处;以及由所述命中处理程序响应于确定了与所述指令转换后备缓冲器命中相关联的所述物理存储器地址不在授权入口点处而生成故障。

示例42包括如示例24至41中任一项所述的主题,并且其中,响应于所述控制流变化而判定所述处理器的所述最后一个指令指针物理地址是否在所述仅执行事务范围内包括:由所述计算设备的所述处理器响应于所述控制流变化而执行所述处理器的中断处理程序;以及由所述中断处理程序判定所述最后一个指令指针物理地址是否在所述仅执行事务范围内;并且其中,保护所述处理器状态包括由所述中断处理程序响应于确定了所述最后一个指令指针物理地址在所述仅执行事务范围内而保护所述处理器的所述处理器状态。

示例43包括如示例24至42中任一项所述的主题,并且其中,保护所述处理器的所述处理器状态包括:清除所述处理器的一个或多个寄存器。

示例44包括如示例24至43中任一项所述的主题,并且其中,保护所述处理器状态包括:判定是否正确进入了所述仅执行事务范围;响应于确定了正确进入了所述仅执行事务范围而对所述处理器的所述处理器状态进行加密以生成经加密处理器状态;响应于确定了正确进入了所述仅执行事务范围而对所述处理器状态计算完整性检查值;以及存储所述经加密处理器状态和所述完整性检查值。

示例45包括如示例24至44中任一项所述的主题,并且其中,保护所述处理器状态包括:清除所述计算设备的线程本地存储存储器区。

示例46包括如示例24至45中任一项所述的主题,并且其中,保护所述处理器状态包括:清除所述计算设备的所述处理器的本地高速缓存存储器中的脏条目。

示例47包括一种计算设备,所述计算设备包括:处理器;以及存储器,具有存储于其中的多条指令,所述指令当由所述处理器执行时使所述计算设备执行如示例24至46中任一项所述的方法。

示例48包括一种或多种机器可读存储介质,包括存储于其上的多条指令,所述指令响应于被执行而使计算设备执行如示例24至46中任一项所述的方法。

示例49包括一种计算设备,包括用于执行如示例24至46中任一项所述的方法的装置。

示例50包括一种用于安全代码执行的计算设备,所述计算设备包括:用于对所述计算设备的存储器的仅执行事务范围进行配置的装置,其中,所述仅执行事务范围不能作为数据被读取或写入;以及用于响应于除了分支之外的控制流变化而判定所述计算设备的处理器的最后一个指令指针物理地址是否在所述仅执行事务范围内的装置;以及用于由所述处理器响应于确定了所述最后一个指令指针物理地址在所述仅执行事务范围内而保护所述处理器的处理器状态的装置。

示例51包括如示例50所述的主题,并且进一步包括:用于执行重置向量的装置;以及用于响应于执行所述重置向量而将仅执行事务代码镜像加载到所述存储器的所述仅执行事务范围中的装置;其中,所述用于配置所述仅执行事务范围的装置包括:用于响应于加载所述仅执行事务代码镜像而配置所述仅执行事务范围的装置。

示例52包括如示例50和51中任一项所述的主题,并且其中,所述用于配置所述存储器的所述仅执行事务范围的装置包括:用于写入所述处理器的一次设置范围寄存器的装置。

示例53包括如示例50至52中任一项所述的主题,并且其中,所述用于配置所述存储器的所述仅执行事务范围的装置进一步包括:用于基于所述存储器的所述仅执行事务范围的页大小而确定所述一次设置范围寄存器的装置。

示例54包括如示例50至53中任一项所述的主题,并且进一步包括:用于响应于加载所述仅执行事务代码镜像而测量所述仅执行事务代码镜像的装置;其中,所述用于配置所述存储器的所述仅执行事务范围的装置包括:用于响应于测量所述仅执行事务代码镜像而配置所述存储器的所述仅执行事务范围的装置。

示例55包括如示例50至54中任一项所述的主题,并且进一步包括:用于响应于配置所述存储器的所述仅执行事务范围而执行所述仅执行事务代码镜像的装置。

示例56包括如示例50至55中任一项所述的主题,并且其中,所述用于执行所述仅执行事务代码镜像的装置包括:用于利用被存储为所述仅执行事务代码镜像的指令的立即值的秘密来配置所述计算设备的端口i/o设备的装置。

示例57包括如示例50至56中任一项所述的主题,并且其中,所述用于执行所述仅执行事务代码镜像的装置进一步包括:用于强制执行对所述端口i/o设备的访问控制的装置。

示例58包括如示例50至57中任一项所述的主题,并且其中,所述用于执行所述仅执行事务代码镜像的装置包括:用于由所述仅执行事务代码镜像将第二仅执行事务代码镜像加载到所述存储器的第二仅执行事务范围中的装置;以及用于由所述仅执行事务代码镜像响应于加载所述第二仅执行事务代码镜像而将所述存储器的所述第二仅执行事务范围配置为仅执行事务存储器的装置。

示例59包括如示例50至58中任一项所述的主题,并且其中,所述用于执行所述仅执行事务代码镜像的装置进一步包括:用于由所述仅执行事务代码镜像响应于加载所述第二仅执行事务代码镜像而测量所述第二仅执行事务代码镜像的装置;其中,所述用于配置所述存储器的所述第二仅执行事务范围的装置包括:用于响应于测量所述第二仅执行事务代码镜像而配置所述存储器的所述第二仅执行事务范围的装置。

示例60包括如示例50至59中任一项所述的主题,并且其中,所述用于配置所述存储器的所述仅执行事务范围的装置包括:用于由所述处理器响应于页未命中而执行所述处理器的页未命中处理程序的装置;用于由所述页未命中处理程序响应于所述页未命中而确定虚拟到物理地址映射的装置,其中,所述虚拟到物理地址映射将虚拟存储器地址关联至物理存储器地址;用于由所述页未命中处理程序判定所述物理存储器地址是否在所述仅执行事务范围内的装置;用于由所述页未命中处理程序响应于确定了所述物理存储器地址在所述仅执行事务范围内而利用所述虚拟到物理地址映射来填充所述处理器的指令转换后备缓冲器的装置;以及用于由所述页未命中处理程序响应于确定了所述页物理地址在所述仅执行事务范围内而防止利用所述虚拟到物理地址映射来填充所述处理器的数据转换后备缓冲器的装置。

示例61包括如示例50至60中任一项所述的主题,并且进一步包括:用于由所述页未命中处理程序通过所述计算设备的页表判定与所述仅执行事务范围相关联的页大小是否与同所述物理存储器地址相关联的页大小相匹配的装置;以及用于由所述页未命中处理程序响应于通过所述页表确定与所述仅执行事务范围相关联的所述页大小与同所述物理存储器地址相关联的所述页大小不匹配而生成页大小失配故障的装置;其中,所述用于利用所述虚拟到物理地址映射来填充所述处理器的所述指令转换后备缓冲器的装置进一步包括:响应于通过所述页表确定与所述仅执行事务范围相关联的所述页大小与同所述物理存储器地址相关联的所述页大小相匹配而利用所述虚拟到物理地址映射来填充所述处理器的所述指令转换后备缓冲器。

示例62包括如示例50至61中任一项所述的主题,并且其中,所述用于判定所述最后一个指令指针物理地址是否在所述仅执行事务范围内的装置包括:用于确定所述处理器的所述指令转换后备缓冲器的最后一个转换值的装置。

示例63包括如示例50至62中任一项所述的主题,并且其中,所述用于确定所述处理器的所述指令转换后备缓冲器的所述最后一个转换值的装置包括:用于读取所述处理器的最后一个指令转换后备缓冲器命中寄存器的装置。

示例64包括如示例50至63中任一项所述的主题,并且进一步包括:用于由所述处理器响应于所述最后一个指令转换后备缓冲器命中寄存器的值的变化而执行所述处理器的映射变化处理程序的装置;用于由所述映射变化处理程序确定第二物理存储器地址的装置,其中,第二物理存储器地址包括所述处理器的所述指令转换后备缓冲器的最后一个转换值;用于由所述映射变化处理程序判定所述第二物理存储器地址是否在所述仅执行事务范围内的装置;用于由所述映射变化处理程序响应于确定了所述第二物理存储器地址在所述仅执行事务范围内而判定所述第二物理存储器地址的偏移部分是否与预定义入口点偏移相匹配的装置;以及用于由所述映射变化处理程序响应于确定了所述第二物理存储器地址的所述偏移部分与所述预定义入口点偏移不匹配而生成故障的装置。

示例65包括如示例50至64中任一项所述的主题,并且进一步包括:用于由所述处理器响应于指令转换后备缓冲器未命中而执行所述处理器的未命中处理程序的装置;用于由所述未命中处理程序判定与所述指令转换后备缓冲器未命中相关联的物理存储器地址是否在仅执行事务范围内的装置;用于由所述未命中处理程序响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在所述仅执行事务范围内而判定与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址是否在授权入口点处的装置;以及用于由所述未命中处理程序响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址不在授权入口点处而生成故障的装置。

示例66包括如示例50至65中任一项所述的主题,并且进一步包括:用于由所述未命中处理程序响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在授权入口点处而记录与所述指令转换后备缓冲器未命中相关联的虚拟到物理地址映射的仅执行事务索引的装置;用于由所述处理器响应于指令转换后备缓冲器命中而执行所述处理器的命中处理程序的装置;用于由所述命中处理程序判定由所述处理器执行的前一指令是否在仅执行事务范围内执行的装置;用于由所述命中处理程序响应于确定了由所述处理器执行的所述前一指令在仅执行事务范围内执行而判定与所述指令转换后备缓冲器命中相关联的虚拟到物理地址映射的索引是否与所记录的仅执行事务索引相匹配的装置;以及用于由所述命中处理程序响应于确定了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的所述索引与所述所记录的仅执行事务索引不匹配而驱逐在所述所记录的仅执行事务索引处的所述指令转换后备缓冲器的条目的装置。

示例67包括如示例50至66中任一项所述的主题,并且进一步包括:用于由所述未命中处理程序响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在授权入口点处而将与所述指令转换后备缓冲器未命中相关联的虚拟到物理地址映射的索引记录为最后使用的指令转换缓冲器条目的装置;用于由所述未命中处理程序响应于确定了与所述指令转换后备缓冲器未命中相关联的所述物理存储器地址在授权入口点处而设置与所述指令转换后备缓冲器未命中相关联的所述虚拟到物理地址映射的仅执行事务位的装置;用于由所述处理器响应于指令转换后备缓冲器命中而执行所述处理器的命中处理程序的装置;用于由所述命中处理程序判定与所述指令转换后备缓冲器命中相关联的虚拟到物理地址映射的索引是否与所述最后使用的指令转换缓冲器条目的索引相匹配的装置;用于由所述命中处理程序响应于确定了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的所述索引与所述最后使用的指令转换缓冲器条目的所述索引不匹配而判定是否设置了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的仅执行事务位的装置;用于由所述命中处理程序响应于确定了设置了与所述指令转换后备缓冲器命中相关联的所述虚拟到物理地址映射的所述仅执行事务位而判定与所述指令转换后备缓冲器命中相关联的物理存储器地址是否在授权入口点处的装置;以及用于由所述命中处理程序响应于确定了与所述指令转换后备缓冲器命中相关联的所述物理存储器地址不在授权入口点处而生成故障的装置。

示例68包括如示例50至67中任一项所述的主题,并且其中,所述用于响应于所述控制流变化而判定所述处理器的所述最后一个指令指针物理地址是否在所述仅执行事务范围内的装置包括:用于由所述计算设备的所述处理器响应于所述控制流变化而执行所述处理器的中断处理程序的装置;以及用于由所述中断处理程序判定所述最后一个指令指针物理地址是否在所述仅执行事务范围内的装置;并且其中,所述用于保护所述处理器状态的装置包括:用于由所述中断处理程序响应于确定了所述最后一个指令指针物理地址在所述仅执行事务范围内而保护所述处理器的所述处理器状态的装置。

示例69包括如示例50至68中任一项所述的主题,并且其中,所述用于保护所述处理器的所述处理器状态的装置包括:用于清除所述处理器的一个或多个寄存器的装置。

示例70包括如示例50至69中任一项所述的主题,并且其中,所述用于保护所述处理器状态的装置包括:用于判定是否正确进入了所述仅执行事务范围的装置;用于响应于确定了正确进入了所述仅执行事务范围而对所述处理器的所述处理器状态进行加密以生成经加密处理器状态的装置;用于响应于确定了正确进入了所述仅执行事务范围而对所述处理器状态计算完整性检查值的装置;以及用于存储所述经加密处理器状态和所述完整性检查值的装置。

示例71包括如示例50至70中任一项所述的主题,并且其中,所述用于保护所述处理器状态的装置包括:用于清除所述计算设备的线程本地存储存储器区的装置。

示例72包括如示例50至71中任一项所述的主题,并且其中,所述用于保护所述处理器状态的装置包括:用于清除所述计算设备的所述处理器的本地高速缓存存储器中的脏条目的装置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1