用于核特定内存映射的装置

文档序号:1804177 发布日期:2021-11-05 浏览:16次 >En<

阅读说明:本技术 用于核特定内存映射的装置 (Apparatus for core specific memory mapping ) 是由 伊戈尔·斯托帕 于 2019-03-28 设计创作,主要内容包括:提供了一种包括多个核和多个每核映射表的装置。所述多个每核映射表中的每个每核映射表包括一个或多个映射表项。每个每核映射表被配置为基于虚拟内存地址和所述一个或多个映射表项生成物理内存地址。每个每核映射表被配置为允许所述多个核中的相应的一个核基于所述一个或多个映射表项生成所述物理内存地址,并防止所述多个核中的所有其余核基于所述一个或多个映射表项生成所述物理内存地址。(An apparatus is provided that includes a plurality of cores and a plurality of per-core mapping tables. Each per-core mapping table of the plurality of per-core mapping tables includes one or more mapping table entries. Each per-core mapping table is configured to generate a physical memory address based on the virtual memory address and the one or more mapping table entries. Each per-core map table is configured to allow a respective one of the plurality of cores to generate the physical memory address based on the one or more map entries and to prevent all remaining ones of the plurality of cores from generating the physical memory address based on the one or more map entries.)

用于核特定内存映射的装置

技术领域

所公开实施例的各方面涉及移动计算装置,尤其涉及移动计算装置内的软件安全性。

背景技术

现代计算设备,例如微处理器、微控制器和其它类型的通信启用移动计算设备,将其大部分状态信息保存在电子存储器中。通常,可以在全局状态中标识一个或多个子状态或数据值,这些子状态或数据值控制着重要的系统功能,因此受到攻击者的关注。攻击者试图识别重要信息的位置,并更改这些信息以达到预期结果。例如,攻击者可能会试图更改与当前用户关联的权限级别,或完全绕过过滤。出于安全考虑,即使在很短的时间内,重要信息也绝不能通过其主要地址写入。因为攻击者可以对地址进行轮询确定何时可写数据,然后对其进行更改。一种更安全的方法是通过攻击者无法访问的通道对重要信息进行更改。

Linus内核版本中采用的传统方法是实现软件Fixmap,其中,Fixmap代表临时映射现有(可能已经映射)的内存保留的有效地址的间隔。Fixmap映射的属性不必与主映射相同。例如,临时Fixmap映射可能是可写的,而主映射是只读的。但是,Fixmap对多核计算装置中的所有核都是可见的。因此,一个受攻击核可以利用为其它核创建的临时Fixmap映射。

或者,可以使用虚拟机管理程序实施内存写保护。所有软件组件(包括Linux内核)都必须依靠虚拟机管理程序在内存保护区内执行任何内存写入操作。但这种方法需要合规的虚拟机管理程序。另外,由于虚拟机管理程序通常不了解复杂内核数据结构的内存布局,因此内存访问的性能可能会降低。

某些操作系统内核通过用户空间映射执行内存页的双重映射。遗憾的是,由于必须在执行写操作的核上激活和停用备用可写内存映射,用户空间内存映射会导致性能下降。

因此,需要一种改进的方法和装置,能够保护敏感的系统状态,而又没有传统解决方案的复杂性和开销。因此,希望提供解决上述至少一些问题的方法和装置。

发明内容

所公开实施例的目的是提供一种改进的方法和装置,能够提高内存安全性,既易于使用,又对性能的影响最小。该目的由独立权利要求的主题解决。在从属权利要求中可以找到进一步的有利修改。

第一方面,通过一种包括多个核和多个每核映射表的设备来实现上述和其它目的和优点。所述多个每核映射表中的一个每核映射表包括一个或多个映射表项,所述每核映射表被配置为根据虚拟内存地址和所述一个或多个映射表项生成物理内存地址。所述每核映射表被配置为允许所述多个核中的一个特定核基于所述一个或多个映射表项生成所述物理内存地址,并防止所述多个核中的所有其余核基于所述一个或多个映射表项生成所述物理内存地址。使用每核映射表,通过防止受攻击核利用与其它核关联的专用每核映射表中可能可写的映射,从而提高安全性。

根据第一方面,在所述装置的第一种可能的实现形式中,所述一个或多个映射表项中的每个映射表项包括一个或多个属性的集合。所述一个或多个属性被配置为基于正在执行的内存访问的类型生成或不生成所述物理内存地址。在每个映射表项中包括属性,使得所述映射表项根据所述正在执行的访问的类型来管理内存访问,并使得不同的每核映射具有不同的属性。

在所述装置的一种可能的实现形式中,所述正在执行的内存访问的类型包括内存读取和内存写入中的一个或多个。在与每个映射表项关联的属性中包括内存读取和内存写入,使得可写映射仅针对核子集存在,通常严格来说是一个,并且仅在写操作期间存在,从而使得可写映射仅限于高度安全的应用,同时使得更广泛的应用只可访问只读映射表项。

在所述装置的一种可能的实现形式中,所述一个特定核用于对所述虚拟内存地址内的核ID进行编码,并且每个每核映射表被配置为基于所述编码的核ID生成或不生成所述物理内存地址。对所述虚拟内存地址内的核ID进行编码为每核映射表提供了一种识别试图访问内存的核的方法,并确保了每核映射表专供相应核使用。

在所述装置的一种可能的实现形式中,所述每核映射表通过基于硬件的信号与所述一个特定核通信耦合。所述每核映射表被配置为基于所述基于硬件的信号的状态生成或不生成所述物理内存地址。包括基于硬件的信号为每核映射表提供了一种验证试图访问内存的核是否允许使用此每核映射表中的映射表项的方法。

在所述装置的一种可能的实现形式中,所述内存包括程序指令,当所述程序指令由所述一个特定核执行时,使得所述一个特定核配置所述一个或多个映射表项中的映射表项,并清除所述一个或多个映射表项中的映射表项。包括管理每核映射表的软件例程,使得底层硬件实现抽象化,并为所有硬件实现公开相同的标准化软件接口。

在所述装置的一种可能的实现形式中,所述映射表项包括配置与所述映射表项相关联的一个或多个属性和物理内存地址。配置属性以及映射表项提供了一种基于内存访问类型管理属性和控制地址映射的方法。

在所述装置的一种可能的实现形式中,所述装置包括一个或多个飞地映射表,其中,每个飞地映射表与包括所述多个核中的一个或多个核的相应组相关联,所述飞地映射表被配置为为所述一个或多个核的组中的核生成物理地址,而不会为不在所述一个或多个核的组中的核生成物理地址。

在所述装置的一种可能的实现形式中,所述硬件装置包括移动通信设备。移动通信设备必需极其安全,来保护存储在其上的敏感信息和应用,因此可以从每核映射表提供的提高的安全性中受益匪浅。

示例性实施例的这些方面、其它方面、实现方式和优点将从结合附图考虑的本文描述的实施例中变得显而易见。但应理解,此类描述和附图仅用于说明的目的,而不能作为对本发明的限制;对本发明的任何限制,应参考所附权利要求书。本发明的附加方面和优点将在随后的说明书阐述,并且,部分方面和优点在说明书中显而易见,或者可以通过实施本发明而了解。此外,本发明的方面和优点可以通过所附权利要求书中特别指出的手段或结合方式实现和获得。

附图说明

在本公开的以下详述部分中,将参考附图中所示出的示例实施例来更详细地解释本发明,其中:

图1示出了所公开实施例的各方面提供的计算装置的框图,其中,该计算装置用于为每个核提供专用的每核映射表;

图2示出了所公开的各方面提供的对如何使用每核映射表将虚拟地址空间映射为物理地址空间的高度概述;

图3示出了所公开实施例的各方面提供的用于管理每核映射表的软件过程的流程图;

图4示出了所公开实施例的各方面提供的每核映射表的可能实现形式;

图5示出了所公开实施例的各方面提供的每核映射表的另一种可能实现形式。

具体实施方式

图1为所公开实施例的各方面提供的计算装置100的框图。计算装置100用于为核104-0、104-1……106-n提供专用每核映射表106-0、106-1……106-n。下文将进一步讨论,包括针对核104-0、104-1……106-n的专用每核映射表106-0、106-1……106-n,提供了一种提高内存安全性的方法,并且不会像传统安全方法那样增加额外开销。装置100适用于通用的计算装置,如智能手机、平板电脑、平板手机、笔记本电脑、移动通信设备、网络和云装置,或将受益于内存安全性提高的其它计算装置。

如图1所示,装置100包括多个核或处理核104。所述多个核或处理核104与内存管理单元(memory management unit,MMU)102通信耦合,其中,MMU 102用于接收虚拟内存地址114和116并生成相应的物理内存地址118。MMU 102是硬件组件。由多个核104执行的所有内存参考都经过MMU 102,在那里它们可以从虚拟内存地址114和116转换为物理内存地址118。如装置100中所示,MMU 102可以是装置100的单独子组件。或者,由MMU 102执行的操作和功能可以构建于实现所述处理核的相同硬件子组件中,或者在不背离本公开的精神和范围的情况下,以提供类似功能和操作结果的任何方式分布。例如,MMU 102可以实现为多核CPU的一部分,或与多核CPU在同一芯片上。

参考图1,在一个实施例中,配置多个核104和多个每核映射表106,使得只有单核104-0可访问包含在特定每核映射表106-0中的映射表项124-0,并基于映射表项124-0针对给定虚拟内存地址114生成物理内存地址118,以提高内存安全性。例如,多个每核映射表106中的一个每核映射表106-0包括一个或多个映射表项124-0,每核映射表104-0被配置为根据虚拟内存地址114-0和一个或多个映射表项124-0生成物理内存地址118。通过配置每核映射表106-0,使得只有多个核104中的特定核104-0基于一个或多个映射表项124-0生成物理内存地址118,并防止多个核104中的其余所有核104-1……104-n使用映射表项124-0生成物理内存地址118,以提高安全性。

装置100包括多个独立处理单元104,并且可以被合并到可以受益于软件安全性提高的各种移动通信装置或其它计算装置中。每个独立处理单元104-0、104-1……104-n用于读取和执行软件或程序指令,在本文中称为核。每个核104-0、104-1……104-n用于执行普通的CPU指令,从而使得装置100同时执行多个指令或执行线程,从而提高装置100的整体处理速度。由多核计算装置(如装置100)执行时,设计为利用并行处理技术的软件程序或应用可以显著地提高处理速度。在一个实施例中,多个核104都实现在同一芯片或物理封装上。或者,多个核可以实现在多个通信耦合的物理封装上。

在运行中,每当核104-0、104-1……104-n执行的程序代码需要访问内存中存储的值时,核104-0、104-1……104-n都会生成虚拟内存地址116。虚拟内存地址116由MMU 102内的共享地址转换组件110转换为相应的物理内存地址118。共享地址转换组件110基于受保护代码(如由操作系统内核内或虚拟机管理程序内的代码)维护的地址转换表120生成物理内存地址118。每次将一页内存换入和/或换出物理内存时,都会相应地维护内存表120,以确保将虚拟地址116转换为包含所需数据项的相应物理内存地址118。

攻击者将试图在正在执行的应用的内存中识别特别感兴趣的数据项,然后试图更改数据,以攻击正在执行的应用或整个计算装置,例如,可以在存储与当前执行用户相关联的权限的内存中定位。从安全角度来看,这些数据永远不能通过其主地址写入,即永远不能通过共享地址转换组件110写入。否则,攻击者就会知道所需信息的位置,可能会对该位置进行轮询,以确定何时可写,即使该信息只能在很短的时间内可写。

一种更安全的解决方案是通过攻击者无法访问的通道修改敏感数据。可以实现备用映射表(如Fixmap),其中,仅受保护的代码(如操作系统内核或系统管理程序)可访问所述备用映射。使用所述备用映射的一个问题是,所述备用映射可能是可写的,对于系统中的所有核都是可见的和可用的。因此,受攻击核可能会利用由其他核创建的备用映射,并更改重新映射页面中的数据值进行写入。

装置100包括多个每核映射表106,其中,每个每核映射表106-0、106-1至106-n被配置为专用于多个核104中的单核,这将在下文进一步描述。例如,每核映射表106-0只会为核104-0生成物理内存地址118,而不会为其余任何核104-1至104-n生成物理内存地址。攻击了其余核104-1至104-n中一个核的恶意应用无法利用每核映射表106-0中配置的任何专用的可能可写的映射124-0。

多个核104可以包括两个以上任意数量的核,如所示的装置100中所示的n个核。在所示的装置100中包括相同数量n的多个每核映射表106,分别为核104-0、104-1和104-n提供单个每核映射表106-0、106-1和106-n,其中,每个每核映射表106-0、106-1和106-n将仅为各自的相应核104-0、104-1和104-n生成物理内存地址,而不会为任何其它核104生成物理内存地址。

某些实施例包括一组附加的映射表126,在本文中称为飞地映射表,这样创建了共享这些映射表的核的飞地。每个飞地映射表与一个或多个核的飞地或组相关联,并被配置为仅为相关联的核飞地中的核生成物理地址118。飞地映射表126从核104-1和104-n接收虚拟地址114-1和114-n,并生成物理地址118。所述物理地址是基于类似于上文结合每核映射表描述的映射表项124的映射表项(未示出)生成的。飞地映射表为属于相关联的一个或多个核的飞地或组的所有核生成物理地址,并且不会为不包括在该一个或多个核的飞地或组中的任何核生成物理地址。

当定义或配置飞地映射表126时,飞地映射表126与多个核104中的一个或多个核的组相关联。授权这些相关联的核基于飞地映射表生成物理地址118。在一个实施例中,更改与飞地映射表相关联的一个或多个核的组将清除或删除相关联的飞地映射表中的所有映射表项。在某些实施例中,一旦核的关联飞地被更改,完全禁用飞地映射表也可能是有利的。在一个实施例中,直到系统重置前,被禁用的飞地映射表都要保持禁用。

每个每核映射表106-0、106-1和106-n分别包括自己的一个或多个映射表项124-0、124-1和124-n的集合。每个映射表项被配置为转换或取消参考虚拟内存地址114-0、114-1……114-n,以生成物理内存地址。在一个实施例中,每个映射表项还包括可以控制物理地址生成的一个或多个属性的集合,例如,可以包括指示映射表项仅对内存读取访问有效的属性。标记为只读访问的表项不会为内存写入操作生成物理地址,还可以配置为生成处理异常,该异常可以适当地更改程序执行流程,以处理写入只读内存位置的尝试。某些实施例可以受益于包括指示映射表项仅对内存写入操作有效的属性。

装置100中可以包括软件组件,该软件组件提供了用于管理每核映射表106中的映射表项124的标准化软件接口。下文将进一步讨论,可以通过各种不同的硬件配置来实现每核映射表。为了清楚起见,这里使用数字124来表示一个或多个映射表项124-0、124-1和124-n的任何或所有集合。配置软件组件,使得底层硬件实现抽象化,并为任何底层硬件实现公开相同的标准化软件接口,这通常是有利的。软件组件可适于在任一个每核映射表106中配置虚拟到物理映射表项124,以及清除或删除任一个每核映射表106中的虚拟到物理映射表项。

如上所述,包括多个每核映射表106提供了比传统安全方法更显著的优势。拥有多个每核映射表106避免了在更改连续内存位置时,例如在大型数据结构上操作时,连续创建和破坏内存映射。每核映射124-0、124-1和124-n与共享页表120分开,并且不干扰实际的用户空间进程。使用每核映射表106避免了与调用虚拟机管理程序或其它受保护的代码来管理和维护高度敏感的内存值相关联的开销。事实上,如上所述,当每核映射表合并到计算装置110中时,对虚拟机管理程序或其它类型的受保护代码模块没有硬性要求。

图2示出了所公开的各方面提供的对如何使用每核映射表将虚拟地址空间映射到物理地址空间的高度概述200。核202、204、206使用虚拟地址空间250进行操作。出于说明的目的,概述200示出了三个核202、204和206,但是本领域技术人员会认识到,在不背离所公开实施例的精神和范围的情况下,可以有利地采用两个以上任何数量的核。然后,MMU 220转换虚拟地址250,以生成与物理内存中的实际位置相对应的物理地址252,其中,物理内存中存储有核202、204、206操作的值。

虚拟地址空间250包括共享内存区域208和218,共享内存区域208和218由MMU 220基于页表(如上述页表120)转换为物理内存区域224和228。所有核202、204和206共享或可访问该页表。共享页表允许所有核202、204和206访问物理内存,使得所有核202、204和206使用相同的访问属性,例如读和/或写访问。

核202、204和206还分别在虚拟地址空间210、214和216内具有一个或多个相应的专用区域。专用区域210、214和216分别只能由单核202、204和206访问。MMU 220用于将专用区域210、214和216映射到物理存内存226、230和222的相应区域,如连接虚拟地址空间150和物理地址空间252的不同虚线类型所指示的那样。

为了帮助理解,将物理内存区域222、224、226、228和230图示为物理内存的不同区域。然而,物理内存222、226和230的专用区域可以根据需要与共享内存区域224和228中的任一个重叠或与其它专用内存区域222、226和230重叠。这样,每个核202、204和208通过可能具有不同属性的不同虚拟到物理映射来重新映射或访问物理内存中的相同值。这使得每个核通过不同的映射访问相同的物理内存值,其中,每个映射可能具有不同的属性。

图3示出了所公开实施例的各方面提供的用于管理每核映射表的软件过程的流程图300。如上所述,在某些实施例中,希望提供用于管理每核映射表106的标准软件接口。这些例程中的每一个公开标准化的软件接口,并执行用于在特定装置(如上述装置100)上执行所需操作的硬件或实现特定步骤。

配置软件进程350用于在每核映射表中配置映射表项。配置可以为根据需要添加新的映射表项或更新现有的映射表项,并且在属性与映射表项相关联的实施例中,可以包括设置任何相关联的属性。配置软件进程350从入口点302开始,入口点302在某些实施例中可以是标准化入口点,在每核映射表中配置映射表项304,并返回到306调用例程。在某些实施例中,有利的做法可能是根据需要,调整配置软件进程350,从而在一个或多个每核映射表中配置多个映射表项。

清除软件进程352用于清除每核映射表中的映射表项。清除进程352从入口点308开始,入口点308在某些实施例中可以是标准化入口点,清除每核映射表中的映射表项310,并返回到312调用进程。当需要时,可以设置清除进程352,通过单个调用清除进程352从多个每核映射表中清除多个映射表项。

在一个实施例中,可以提供附加的软件例程,或者可以修改现有例程,从而从一个或多个每核映射表中读取一个或多个映射表项。然而,应该注意的是,包括读取映射表项的例程可能会带来安全风险,因此在某些实施例中可能不宜使用。

专用每核映射表,例如上文参考图1描述的每核映射表106,可以以任何适合的方式实现。在一个实施例中,可以包括用于保存与每个每核映射表相关联的映射表项集合的单独空间、用于标识正在进行内存访问的核的装置,以及在需要时用于处理非法内存访问的机制。

图4示出了所公开实施例的各方面提供的用于提供每核映射表的实现形式400。为清楚起见,图4中所示的图示仅包括多核装置的单核402和用于转换虚拟内存地址414的多个每核映射表。单核402适合作为多个核104中的任何一个。多个每核映射表404适合作为上文参考图1描述的多个每核映射表104。

在操作中,当核402需要访问内存位置时,核402创建虚拟地址0x0???????????????414,标识感兴趣的虚拟内存位置。为了帮助理解,在此使用16位十六进制数表示虚拟地址,如虚拟地址0x0???????????????414,其中,问号(‘?’)用于表示任意十六进制数字,未使用的地址位由高阶十六进制数414中的值0x0表示。在一个实施例中,未使用的地址位可以位于虚拟地址内的任何位置,并且不需要位于图4所示的示例性实施例中所描绘的高阶位。本领域技术人员会很容易地认识到,不背离所公开实施例的精神和范围的情况下,可以有利地采用比具有更多或更少未使用比特的示例地址414更长或更短的虚拟地址。

核402将在未使用的地址位0x0中插入核ID,例如0x2。例如,所示的虚拟地址416中,值0x2作为核ID。将包括核id 0x2的完整虚拟地址416提供给多个每核映射表404。多个每核映射表404中仅有一个每核映射表404-2被配置为为包含特定核ID 0x2的虚拟地址416生成物理地址420。其余的每核映射表404-0、404-1……404-n将不会为包含核id 0x2的虚拟地址416生成物理地址。在具有多个核104的装置(如上述装置100)中,多个核106中的每个核(104-0)将配置为使用唯一核ID。该唯一核ID与多个核106中的其余核104-1……104-n使用的核ID不同。

图5示出了所公开实施例的各方面提供的用于提供每核映射表的另一种实现形式500。出于说明的目的,在图5的附图中,使用相同的单核402和多个每核映射表404并结合图4来表示实现形式500。

实现形式500包括信号514,用于将核402与相应的每核映射表404-2通信耦合。在操作中,核402通过信号514指示核402正在基于虚拟地址512访问内存位置,并触发每核映射表404-2生成物理地址420。信号514可以是基于硬件的任何适当类型的信号,或其它信号,可用于将核402通信耦合到相应的每核映射表404-2,并将信号514耦合到相应的每核映射表404-2,所述每核映射表404-2应生成物理地址。可以基于信号514的状态生成物理内存地址420。

每核映射表404-2被配置为基于信号514的状态选择性地生成或不生成物理地址420。每核映射表404-2与单个特定的每核映射表通信耦合。因此,每核映射表404-2将仅基于来自相应核402的信号514生成物理地址420,并且其余的每核映射表都不会为由核402创建的虚拟地址512生成物理地址。

现代移动通信设备,如移动电话、台式计算机和平板电脑等,正在使用越来越多的高度安全应用,如银行应用和在线商店等,因此需要高度的安全性。将本文公开的每核映射表合并到移动通信设备中将显著提高这些设备中软件执行环境的安全性,从而将为这些设备增值。例如,在一个实施例中,上述参考图1描述的装置100可以被配置为移动通信设备或结合到移动通信设备中,从而创建软件安全性显著提高的移动通信设备。

因此,尽管文中已示出、描述和指出应用于本发明的示例性实施例的本发明的基本新颖特征,但应理解,本领域技术人员可以在不脱离本发明的精神和范围的情况下,对所示出的装置和方法的形式和细节以及装置操作进行各种省略、取代和改变。进一步,明确地希望以大体相同的方式执行大体相同的功能以实现相同结果的那件元件的所有组合均在本发明的范围内。此外,应认识到,结合所公开的本发明的任何形式或实施例进行展示和/或描述的结构和/或元件可作为设计选择的通用项而并入所公开或描述或建议的任何其它形式或实施例中。因此,本发明仅由所附权利要求的范围所限定。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:中心装置、数据通信系统以及分发控制程序

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类