访问控制与代码调度的利记博彩app

文档序号:12287855阅读:184来源:国知局
访问控制与代码调度的利记博彩app与工艺

本技术涉及数据处理系统的领域。更具体地,本技术涉及通过使用不同特权模式连同控制将执行的代码的调度来进行访问控制。



背景技术:

提供具有不同特权模式的数据处理系统是公知的。这些不同特权模式能够给予访问的不同权利。具有较高特权级别的特权模式通常将具有对与在较低特权模式中可用的资源相比更多资源的访问权(例如,能够访问存储器的更多区域、更多外部设备、更多功能等)。在一些系统中,可以提供具有操作的最高特权模式的管理程序(hypervisor)代码,以便控制对提供给其他代码(诸如,在系统上执行的应用程序代码)的系统资源的访问。总体来说,管理程序代码的安全性因此在系统的安全性中是重要的。

在数据处理系统内提供调度代码也是公知的,其用来控制将执行的代码的不同部分的调度。



技术实现要素:

从一方面来看,本技术提供了一种处理数据的方法,所述方法使用具有包括第一特权模式和第二特权模式的多个特权模式的数据处理装置,所述第一特权模式给予在所述第二特权模式中不可用的访问权利,所述方法包括以下步骤:

在所述第二特权模式中执行应用程序代码,从而生成对管理程序代码的功能调用以使用所述访问权利来执行安全功能;

在所述功能调用的生成时,在所述第一特权模式中执行管理程序代码以至少控制所述安全功能的执行;以及

在所述第二特权模式中执行调度代码以通过所述数据处理装置来控制所述应用程序代码和所述管理程序代码的执行的调度。

本技术认识到,通过提供调度代码,使得其在第二特权模式中执行并且控制应用程序代码和管理程序代码的执行的调度,管理程序代码能够以促进其安全操作的方式减少复杂度。一般来说,代码块越复杂,其将具有安全性弱点的可能性越高。在操作系统设计的领域内通常的设计偏见会是提供调度代码作为管理程序代码的部分,使得运行在第一特权模式(最高特权级别)中的管理程序代码具有调度哪个代码用于执行的控制。实际上,这种在管理程序代码内增加了的复杂度可以降低其安全性。设置管理程序代码保留在需要在第一特权模式中可用的访问权利的安全功能的控制中,可以维护安全性。管理程序代码负责服务试图执行安全功能的功能调用。

应当理解的是,管理程序代码可以自己执行安全功能。在其他实施例中,管理程序代码还可以将安全功能的执行委托给其他代码(即,委托代码)并且临时地授予该其他代码执行安全功能所需要的访问权利。

一些实施例的特征是对管理程序代码的中断会中断安全功能的执行。可能通常期待安全功能免受这样的中断,但是随着调度代码在管理程序代码的外部的第二特权模式中执行,这样的安排将潜在地导致困难。

调度代码可以被安排为在调度事件的发生时选择将执行的下一个代码。这些调度事件可以采用各种不同形式。可能的调度事件的示例是由调度代码调度执行的代码的执行的完成、计时器中断和当数据处理装置开始执行代码时的唤醒事件(例如,在睡眠事件之后或者可能在重置之后)。

在第一特权模式中可用并且在第二特权模式中不可用的访问权利可以采取是各种不同形式。访问权利的示例是针对某些存储器地址访问数据的能力(例如,写入许可、读取许可、执行许可等)或者访问外部设备(例如,映射了存储器的外部设备,诸如DMA引擎、UART等)的权利。

如先前提到的,管理程序代码可以调用在第二特权模式中执行的委托代码作为服务功能调用的部分,而不是完全由自己服务功能调用。在一些实施例中用这样的安排,委托代码可以依赖于数据处理装置的配置参数执行处理操作并且管理程序代码可以执行与这些配置参数独立的处理操作。这促进在不同数据处理装置环境中的管理程序代码的再使用并且因此减少与管理程序代码相关联的测试和验证的开销,该管理程序代码由于其在保护系统安全性中的角色而需要满足高安全性标准。

委托代码可以执行各种不同操作。这种操作的示例是用于从在数据处理装置操作期间产生的错误状况中恢复的错误恢复操作和储存在该数据处理装置的闪存内的程序代码的程序更新。在一些实施例中,委托代码可以负责这些操作的全部或部分。

本技术的至少一些实施例对于在低开销低功率数据处理系统中维护安全性是有用的,该系统始终使用物理地址而不支持虚拟编址(例如,由应用程序代码使用的虚拟编址)。物理编址的使用避免了需要提供和支持用于在虚拟地址和物理地址之间进行翻译的存储器管理单元。这样的存储器管理单元通常表现出显著的电路区域、功率和代码复杂性开销。

取代存储器管理单元,本技术的一些实施例可以提供存储器保护电路系统,其配置为接收指定在存储器地址空间内的物理地址的存储器访问请求,并且被配置为依赖于可编程存储器保护配置数据和数据处理装置当前是在第一特权模式中还是第二特权模式中,分别地控制对在存储器地址空间内多个不同区域的访问。因此,存储器保护单元能够以区域的粒度分割存储器地址空间(可以具有不同大小和/或可变大小),并且依赖于当前特权模式控制对这些区域的访问。

在包括这种存储器保护电路系统的系统的背景下,应用程序代码可以用于生成向管理程序代码的请求以访问存储器地址空间的给定区域,该给定区域在应用程序代码执行的第二特权模式中不可访问。管理程序代码可以临时地改变可编程存储器保护配置以许可在第二特权模式中执行的应用程序代码访问给定区域。因此,管理程序代码可以在来自应用程序代码的适当请求的接收时,临时地更改访问给定区域的特权要求,并且接着在该被许可的访问之后恢复保护使得其他应用程序代码将不能不适当地访问给定区域。

管理程序代码可以用于在临时地改变可编程存储器保护配置以许可这样的访问之前,检查应用程序代码是否被许可访问给定区域。作为示例,管理程序代码可以包含应用程序代码的哪些实例/块临时地被许可访问在存储器地址空间内的哪些区域的列表。如果接收到来自应用程序代码的访问存储器区域的请求,而该存储器区域没有被包含在被许可访问该给定区域的存储器区域的列表内,那么将不会提供访问许可。

在一些实施例中,管理程序代码可以在存储器地址空间内生成栈存储器。存储器保护电路系统可以被安排为防止由在第一特权模式中执行的管理程序代码本身对多个区域的一个或更多个区域的访问,使得如果栈存储器的超载运行(over-run)和欠载运行(under-run)导致访问管理程序代码不能访问的存储器的区域的尝试,那么将产生存储器许可异常。这个特征协助防止管理程序代码危害系统安全性的故障。

应该理解的是,提供的特权模式的数量可以变化。在一些简单实施例中,可以仅提供第一特权模式和第二特权模式,但应当理解的是在其他实施例中,可以提供超过两个特权模式。

在一些实施例中,终端和异常用于触发管理程序代码的执行。管理程序代码可以然后将这些中断和异常的至少一些的处理委托给管理程序代码本身以外的代码。

从另一方面来看,本技术提供具有包括第一特权模式和第二特权模式的多个特权模式的数据处理装置,所述第一特权模式给予在所述第二特权模式中不可用的访问权利,所述装置包括:

执行电路系统,配置为:

在所述第二特权模式中执行应用程序代码,从而生成对管理程序代码的功能调用以使用所述访问权利来执行安全功能;

在所述功能调用的生成时,在所述第一特权模式中执行管理程序代码以至少控制所述安全功能的执行;以及

在所述第二特权模式中执行调度代码以通过所述数据处理装置来控制所述应用程序代码和所述管理程序代码的执行的调度。

从另一方面来看,本发明提供一种具有包括第一特权模式和第二特权模式的多个特权模式的数据处理装置,所述第一特权模式给予在所述第二特权模式中不可用的访问权利,所述装置包括:

用于执行代码的执行部件,所述执行部件配置为:

在所述第二特权模式中执行应用程序代码,从而生成对管理程序代码的功能调用以使用所述访问权利来执行安全功能;

在所述功能调用的生成时,在所述第一特权模式中执行管理程序代码以至少控制所述安全功能的执行;以及

在所述第二特权模式中执行调度代码以通过所述数据处理装置来控制所述应用程序代码和所述管理程序代码的执行的调度。

附图说明

现在将仅以示例的方式,参考附图来描述实施例,在附图中:

图1示意性地图示出在不同特权模式内执行的代码的不同块;

图2示意性地图示出包括用于在纯物理编址的系统内处理存储器许可的存储器保护电路系统的数据处理装置硬件;

图3是示意性地图示出管理程序代码、应用程序代码、调度代码和委托代码的交互的流程图;以及

图4是示意性地图示出存储器保护电路系统临时地改变访问在存储器地址空间内存储器的给定区域所需要的特权级别的动作的图表。

具体实施方式

图1示意性地图示出在数据处理装置内执行的代码的不同块。具体地,代码的块包括:管理程序代码2,应用程序代码4、6的多个实例,调度代码8和委托代码10。管理程序代码2在第一特权模式中执行。应用程序代码4、6,调度代码8和委托代码10全部在第二特权模式中执行。

调度代码8负责调度应用程序代码4、6和管理程序代码2的执行。调度代码8在调度事件的发生时执行这样的调度操作。调度事件可以包括已经由调度代码8调度用于执行的代码的执行完成、计时器中断的发生和/或当数据处理装置开始执行代码时的唤醒事件。数据处理装置可以被置于睡眠模式并且唤醒事件可以由例如计时器、由用户按压的按钮、从其他地方接收的网络分组等触发而发生。

管理程序代码2相对于在其上执行该管理程序代码2的数据处理装置是配置参数独立的。委托代码10依赖于其上执行该委托代码10的装置的配置参数。这样,同样的管理程序代码2可以运行在若干硬件平台上并且在委托代码10内硬件平台特定功能被隔离。

管理程序代码2包括安全功能代码12,其运行在第一特权模式中并执行安全功能,诸如使用密码数据(例如,密钥)的密码功能。应用程序代码4、6向管理程序代码2做出功能调用以便管理程序代码代表应用程序代码4、6执行安全功能。管理程序代码可以适当地将这个安全功能的一些或者全部委托给委托代码10。当安全功能完成后,安全功能的结果返回到调用应用程序代码4、6。这样,管理程序代码2能够保护诸如密码数据的安全数据,并且仅将诸如通过/失败的结果返回到应用程序代码4、6。

由管理程序代码2执行的安全功能可以包括将对系统的存储器地址空间的给定区域的访问授权给应用程序代码4、6的调用块的功能。管理程序代码2可以首先确认接收的请求的有效性,并然后临时地授权或者不授权对存储器的区域的访问。可以通过用于临时地修改与相关存储器的区域关联的特权级别的管理程序代码2来授权访问,使得在第二特权模式中执行的代码可以临时地访问那个区域,然而正常的配置是仅在第一特权模式中执行的代码能够访问那个区域。管理程序代码2因此在安全性中做出临时的“洞”(“hole”)以许可应用程序代码4、6的给定块访问那个存储器区域,并且当那个应用程序代码的执行已经完成时,如由调度代码8或应用程序/委托代码4、6、10通知的,管理程序代码2可以盖住那个“洞”并且将特权保护配置返回到其原始形式。

如之前所提及的,委托代码可以被委托以执行依赖于所涉及的硬件平台的配置参数的功能。可以由委托代码执行的功能的示例包括用于从在数据处理装置的操作中产生的状况中恢复的错误恢复操作。另一个示例是储存在数据处理装置的闪存中的程序代码的程序更新。

管理程序代码2可以包含当接收到来自应用程序代码4、6的请求时,这样的应用程序代码4、6的哪些块被许可访问存储器地址空间的哪些区域的列表。如果从表明为具有这种许可的应用程序代码的块接收到访问给定存储器区域的请求,那么管理程序代码2将通过更改存储器许可配置来临时地将访问许可给调用应用程序代码4、6,使得在第二特权模式执行的代码临时地被给予对存储器地址空间的给定区域的访问权利。

管理程序代码2在存储器地址空间内可以自己生成栈存储器。管理程序代码2的故障或对管理程序代码2的攻击可以与这样的栈存储器的超载运行或欠载运行相关联。可以布置存储器许可使得这种类型的超载运行或欠载运行将触发存储器许可异常并且因此可以给予管理程序代码2对抗其自身故障的一些保护。

在图1中图示的示例中,仅为系统提供两种特权模式,即第一特权模式和第二特权模式(当在第一特权模式中执行时比当在第二特权模式执行时有更多访问权利可用)。这样简单的布置促进安全性的严格控制。然而,在其他实施例中,可以提供超过两种特权模式,但是这些特权模式将包括第一特权模式和第二特权模式两者。

在图1中图示的示例中,可以看出,中断和异常首先被路由到在第一特权模式中运行的管理程序代码2。这样的中断和异常可以然后适当地被委托(转发)到在第二特权模式中运行的应用程序代码4、6或委托代码10(处理代码)。实际中,仅中断/异常的相对小的子集将是安全性关键的并且保持于管理程序代码2的控制下(例如,系统重置),而其他中断和异常以使得管理程序代码2更为简单并相应地更加安全的方式,在管理程序代码2的外部被处理。

图2是示意性地图示出用于根据本技术的至少一些示例运行的数据处理装置14的硬件实施例的图。这个数据处理装置14包括用于执行程序指令(包括应用程序代码4、6,调度代码8,管理程序2和委托代码10)的处理器核心16(其可以包括用于在处理运行期间保持操作数的值的通用寄存器)、存储器保护电路系统18(例如,由英国剑桥的ARM有限公司设计的类型的存储器保护单元(MPU))、显示器单元20、输入/输出电路系统22、网络接口电路系统24和存储器电路系统26(包括易失存储器28和诸如闪存的非易失储存器30两者)。在图2中图示出的数据处理装置14始终使用物理地址以指明在存储器26的存储器地址空间内的存储器储存位置。因此,处理器核心16生成物理地址并且在处理器核心16上执行的程序代码2、4、6、8、10被安排以生成物理地址。由处理器核心16生成的存储器访问请求被传递到实施存储器保护的存储器保护电路系统18。存储器保护单元18响应于可编程(由处理器核心16)存储器保护配置数据32。这个配置数据32能够指定全部存储器地址空间的不同区域并且相对于这些不同区域关联要被提供用于不同特权模式的不同访问许可。区域本身的大小和设置能够变化,例如,他们可以重叠。

存储器保护电路系统18可以被布置为提供访问控制,使得存储器地址空间的不同区域或者仅当在第一特权模式中运行时可访问或者当在第一特权模式或第二特权模式任一个中运行时可访问。可以在一些实施例中得到支持的具体的更详细的访问许可包括分别地涉及读取访问、写入访问、执行访问等的许可。还可以提供更多特权模式,使得能够以更差异化的方式基于特权模式管理许可。

存储器保护电路系统18从处理器核心16接收访问请求。存储器保护电路系统18使用配置数据32以识别访问许可要求,该访问许可要求与在由接收到的访问请求指定的(物理的)存储器地址内的区域相关联。存储器保护电路系统18然后比较这些访问许可要求与数据处理装置14的当前运行状态,以确定是否授权或者拒绝该访问请求。如果请求被拒绝,那么存储器许可异常被生成并可以由合适的异常处理器服务。如果满足存储器许可要求,那么将访问请求从存储器保护电路系统18传递到存储器地址空间的相关部分,诸如在存储器26内的位置或者映射了外部设备(诸如,显示器20、输入/输出电路系统22或者网络接口24之一)的存储器。

图3示意性地图示出管理程序代码2、应用程序代码4、6、调度代码8和委托代码10之间的交互。调度代码8负责调度接下来将执行哪个代码。在如之前所讨论的合适的调度事件发生时,调度代码8将触发应用程序代码的给定块的执行,例如,在图1中图示出的应用程序代码4、6的块中的一个块。当应用程序代码4、6已经完成执行时,其然后将应用程序代码完成通知(返回)发回到调度代码8,调度代码8将然后调度将执行的下一个代码。如在图3中所图示的,水平虚线示出无特权(第二)模式执行和特权(第一)模式执行之间的分隔。管理程序代码2在特权模式中执行。应用程序代码4、6、调度代码8和委托代码10全部在无特权模式中运行。如果应用程序代码4、6需要访问资源(例如,访问存储器地址空间的给定区域),那么其将向管理程序代码2做出安全功能调用以被授权该访问。如果管理程序代码2确定应用程序代码4、6被合适地授权,并且相应地访问请求是有效的,那么其将临时地改变存储器保护电路系统18的配置数据32以许可由调用的应用程序代码4、6从第二特权模式(无特权级别)做出的对存储器的给定区域的访问。在这种情况下,向管理程序代码2做出的安全功能调用的结果会是对许可已被授权的指示。

安全功能调用的其他示例可以是验证数据签名、密钥等的请求。在这种情况中,管理程序代码2可以执行被请求的安全功能并且返回诸如通过/失败的结果,或者当安全功能调用是解密该数据块的请求时返回诸如解密的数据块的结果。管理程序代码2可以向委托代码10做出委托功能调用以执行被请求的安全功能的部分或全部。委托代码10将把安全功能的结果返回到管理程序代码2,其随后转而将安全功能调用的结果传递回应用程序代码4、6。

如在图3中所图示的,调度代码8还可以直接触发管理程序代码的执行。调度代码8因此负责调度应用程序代码4、6和管理程序代码2两者的执行。调度代码8在第二特权模式(无特权)中执行。

如图示的,中断和异常,诸如计时器中断和唤醒事件,被路由进入管理程序代码2。通过首先将他们重定向到调度代码8,然后调度代码8响应于计时器中断或唤醒事件而调度合适的应用程序代码4、6来执行,这些中断和异常可以被委托给管理程序代码2以外的代码。

所描述的实施例运行以将由管理程序代码2接收的特权异常/中断转发到在第二特权模式中运行的处理代码。这允许系统支持如可能是支持用户接口所需要的对异常/中断的实时响应,例如,通过许可无特权代码处理这样的异常/中断以中断可能正在运行长期密码操作(例如,解密数据流)的特权代码。管理程序代码2更多地为保护秘密(例如,数据/密钥、时间)而运行,并且更少地为保护代码而运行。从这一方面而言,管理程序2的中断不允许对这些秘密的非期待的访问。

在这个场景中一个显著的安全性威胁是中断特权操作的代码将得到当前寄存器内容的快照。在触发中断时使用足够密集的计时器可以使得可以从这些寄存器样本中重建密码秘密,并且因此泄露管理程序(密码盒)秘密。可以在管理程序的返回时恢复寄存器值。

考虑到该问题,可以增加泄露应对措施:

-当将控制转移到第二特权模式代码时(作为硬件事件/异常的结果),在调用无特权代码之前,通过保存所有活跃的寄存器并消除或用随机值覆写它们而清除处理器的通用寄存器。

-确保针对由管理程序2执行的密码操作的固定的时间界限

-通过记录从密码操作前到完成密码操作的时间,使得来自引起密码操作的对管理程序的功能调用的返回延迟至直到以下的一个或多个事件发生:

a)在循环中等待/旋转直到最小时间经过

b)触发CPU睡眠直到最小时间经过

c)等待直到达到粗时间段的倍数(例如可以确保100ms块-操作将总是使用100ms,200ms或其他倍数-这降低针对操作所测量的时间的密码分析的质量)

d)等待随机时间

以上应对措施帮助防止无特权代码通过探测特权加密API并且测量执行时间而泄露秘密。

可以分开使用或以不同组合使用的其他可能应对措施包括:

a)确保CPU性能计数器或者由MPU保护或者,如果不可能的话,那么由伪操作(dummy operation)调整。

示例:

如果无特权软件能够读取指令计数器:

应对措施可以是在返回对无特权代码的控制之前在循环中旋转,以将指令计数器增加到固定边界(类似时间方法)。

b)在管理程序中具有专用混淆模式,其中应用程序代码能够从管理程序请求针对选定间隔的定时/功率消耗混淆作为服务。

示例:

-管理程序将设置计时器以使其中执行虚拟操作的随机化间隔密集,

-对外部攻击者混淆无特权代码的定时和功率消耗,

-由无特权代码访问ADC转换器(或者其他输入/输出设备)会导致对特权侧的侧信道攻击,导致秘密泄露。管理程序2可以使用随机化硬件计时器来执行伪操作以混淆其操作。

图4示例性地图示出通过存储器保护电路系统18的访问许可控制的示例。在图示的示例中,存储器地址空间被分割为多个物理存储器地址空间,区域0、1、2、3、4。由存储器保护单元18持有的配置数据32(并且由处理器核心16编程的)对于这些区域的每一个定义当数据处理装置14在第一特权模式中时是否限制访问,或者当数据处理装置14在第二特权模式中执行时是否还许可访问。在图1中图示的示例中,区域1在第二特权模式中是永久地可访问的。在图4图示的瞬间,区域0、区域2和区域4仅在第一特权模式中可访问。区域3已经临时地被重配置为在第二特权模式中可访问。这许可将由当数据处理装置14在第二特权模式中时执行的程序指令做出对那个区域(物理存储器地址的范围)内数据的临时访问。

在一些实施例中,应用程序代码4、6的不同块可以存储在物理存储器地址空间的不同区域内。管理程序代码2可以被安排为临时地许可第二特权模式访问这些包含与应用程序代码4、6的不同块关联的不同区域。因此,在管理程序代码2的控制下,在给定瞬间执行许可(执行需要相关程序指令的读取和相应地需要存储器访问)被限制到应用程序代码4、6的给定块。如果做出不合适地将执行转移到不组成已经由管理程序代码2给予执行许可的代码块的部分的尝试,那么这样的代码将不会执行,因为系统将在第二特权模式并且包含未授权代码的区域将不会被配置成在系统处于第二特权模式中时可访问。相应地,管理程序代码2打开存储器地址空间的区域,因为这些区域与应用程序代码4、6的不同块相关联,所以在这些区域中的代码被执行。管理程序代码2还可以临时地打开包含将由已经被许可执行的应用程序代码4、6所操纵的数据的物理存储器地址空间内的区域。当调度代码通知管理程序代码2应用程序代码的给定块已经完成其执行时,可以反转在配置数据32中的临时改变,使得用于应用程序代码4、6的那个块的执行许可被移除。在管理程序代码2的控制下,通过在配置数据32中的进一步改变,应用程序代码4、6的另一个块或相同块能够然后被授权执行。

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