CN107771335A - 受保护区域 - Google Patents

受保护区域 Download PDF

Info

Publication number
CN107771335A
CN107771335A CN201680035756.7A CN201680035756A CN107771335A CN 107771335 A CN107771335 A CN 107771335A CN 201680035756 A CN201680035756 A CN 201680035756A CN 107771335 A CN107771335 A CN 107771335A
Authority
CN
China
Prior art keywords
application
protected field
code
protected
metadata
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
CN201680035756.7A
Other languages
English (en)
Other versions
CN107771335B (zh
Inventor
J·V·塞尔
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107771335A publication Critical patent/CN107771335A/zh
Application granted granted Critical
Publication of CN107771335B publication Critical patent/CN107771335B/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/604Tools and structures for managing or administering access control systems
    • 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
    • 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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Automation & Control Theory (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)

Abstract

一种数据处理机器被配置成包括一个或多个被埋藏的存储器区域,该一个或多个被埋藏的存储器区域不能被该数据处理机器内的用户软件以及操作系统软件或系统管理程序软件容易理解地访问。硬件和固件中的至少一者被配置成容易理解地访问被埋藏的存储器区域中的至少一者以便在其中存储元数据,该元数据定义该数据处理机器的其他存储器区域中构成的相应一个或多个受保护区域(PR)的一个或多个程度。所存储的元数据定义对应PR的约束,包括分别约束由PR执行的操作或者对PR的数据执行的操作的对应操作约束和/或操作要求中的至少一者。

Description

受保护区域
背景
用于数字计算机系统的代码安全化和代码确认/验证由于复杂数据处理系统中可用于恶意攻击或无意差错的众多途径正变得越来越重要。恶意攻击的示例包括基于软件病毒、蠕虫和木马感染的那些恶意攻击以及基于漏洞利用的那些恶意攻击。攻击也可直接来自计算机系统的不诚实但经授权的用户。攻击可试图修改可执行程序代码或修改关键信息数据项或注入新的未经授权的程序代码或获得访问优选地被保持专用的关键信息数据片段的权限。代码开发期间的无意失误可能产生类似的错误和故障。用于防止此类错误和故障的措施相应地变得越来越重要。
概述
根据本公开的一个非限制性方面,其操作无法被正在执行的用户软件、正在执行的操作系统软件、主机处理器、副处理器和/或外部处理器访问(被埋藏的远离它们埋藏并且因而无法受到它们的攻击)的硬件和固件中的至少一者被用来基于应用建立的约束以及应用所有的受保护区域(PR)的要求来实施代码安全化和代码确认/验证。
根据一个实施例,应用虚拟存储器空间(如使用物理系统存储器的分配部分建立的,其中物理系统存储器包括主存储器和其他的系统可访问的数据存储)被细分成一个或多个受保护区域(PR)。这些PR是具有分配给它们的详细的定义访问权限的属性的区域,藉此施加关于哪一个或多个(如果存在的话)执行线程(XT)能够执行存在于相应的PR内的代码和/或哪一个或多个(如果存在的话)执行线程(XT)能够出于读取或盖写信息数据的目的来访问存在于相应的PR内的信息数据方面的限制。定义访问权限的属性由基于硬件的区域保护机制(之后也称为PR实施者)来实施,PR实施者的内部操作无法被PR实施者外部的进程访问(被埋藏的远离它们埋藏并且因而无法受到它们的攻击)。换言之,代码执行特权以及读/写抓取特权受到基于硬件的区域保护机制(PR实施者)的限制(约束)。基于PR的约束与由操作系统(OS)提供的特权约束分开。相应地,存在位于合适位置的的至少两个分开的访问准予/拒绝机制(访问限制机制),其中的一者使用应用PR实施者提供的约束和要求的软件不可访问的硬件/固件实施(例如,至少在每一PR应用确立的基础上)而另一者使用OS施加的约束。如下文可见,对此类多分叉的访问限制系统的成功违背需要同时打败被自动重复核对的多个分开的特权授予/拒绝限制机制(OS的以及PR实施者的)。对这两种机制的此类同时违背被认为与一次通过仅仅一个安全机制中找到的漏洞相比达成起来难得多。基于硬件/固件的副安全机制(PR实施者)能够实施比通用的读/写/执行限制更大且更丰富的一组限制。例如,它可以基于访问请求来自何处(例如,请求方代码的地址)和/或基于正在取得PR的什么子部分来限制对PR内信息数据项和/或PR内可执行代码的访问。
根据本公开的一个方面,被埋藏的硬件/固件机制(PR实施者)执行多个自动重复访问限制测试,被埋藏的硬件/固件机制的内部操作不会受到OS或者受到系统管理程序或受到其他应用或受到能够访问系统存储器的任何处理器的干扰。在一个实施例中,PR实施者执行的多个访问限制测试的细节被拥有PR的应用排他地定义(排他地源自该拥有PR的应用)并且被存储在一个或多个被埋藏的元数据存储器区域中,该被埋藏的存储元数据的器区域无法被OS、系统管理程序、除了拥有PR的应用之外的其他应用访问,并且进一步无法被主处理器和外部/补充处理器容易理解地访问(至少因为被埋藏的元数据存储器区域的内容在被存储在片上高速缓存外部时保持加密,并且对解密元数据的访问只可供PR实施者使用)。同时,一个或多个被埋藏的元数据存储器区域的内容是可测试的以确保在该数据被PR实施者使用之前存储在其中的数据的完整性。在自动重复访问限制测试之一中,PR实施者确认从至少两个不同源(例如,一个源是OS/系统管理程序复杂路径而另一源是当前使用的PR被埋藏的元数据访问路径)的访问限制设置的实质相同性(例如更具体地,遵循它们的最受限集合),以确认如由两个不同的转换机制提供的(例如,一者由系统管理程序提供而另一者由源自当前使用的PR的被埋藏的元数据提供)虚拟地址到物理地址转换中提供的所使用的虚拟地址以及所使用的物理地址的实质相同性(或者更具体地在一个实施例中,以确认遵循与它们有关的最受限集合)。此外,受保护区域(PR)在应用启动时间的初始设立能够通过远程证明来确认。这些自动重复执行的访问限制测试操作中的一者或多者被认为能够使得违背在实施PR的操作系统内操作的PR赋予的应用的运转难得多并且使得实施PR的固件/硬件平台复杂。
根据本公开的一方面,至少最初在应用启动时,安全措施从拥有PR的应用被加载(源自于它),被存储在被埋藏的元数据存储器区域中(无法被OS、被系统管理程序、或被其他应用、或被外部处理器容易理解地访问并且可测试其完整性的一个或多个被埋藏的元数据存储器区域)。在验证了完整性之后,安全措施(受保护区域属性)由被埋藏的硬件/固件机制(PR实施者)实施,其内部操作同样无法被OS、系统管理程序、或其他应用或主处理器或补充/外部处理器访问(不受其干扰)。然而,在一个实施例中,作为源的应用可在自己应用选择的时候致使其自己PR(或其子部分)指定的对安全措施的动态改变。具体地,拥有PR的应用可限制时间窗口,在该时间窗口内在其各自拥有的PR内部的数据甚至能够被经授权的其他应用(或被OS库函数或被外部处理器)访问。因而,使得对受保护区域(PR)的可执行代码和/或信息数据项的违背安全的访问变得极其困难,因为黑客不知道拥有PR的应用何时(例如,在什么条件下)以及如何改变其拥有的PR的安全措施以及应用何时或如何施加其当前安全措施(例如,当前PR属性)的重新确认。因而,受保护区域(PR)内部的可执行代码和/或信息数据项的暴露能够通过PR属性的出其不意的重新配置来最小化。替换地或附加地,拥有PR的应用可以通过尤其是重新配置分配给它的虚拟存储器空间的一部分的PR属性(包括将对应的虚拟存储器空间转换成非受保护区域(NPR))来选择重新定义该部分的目的。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图简述
图1A和1B是用于彼此并排比较以说明数据处理系统可如何被修改以实现本公开的一个或多个受保护区域(PR)方面而提供的示意图。
图1C是描绘了用于被配置成在由系统管理程序(HV)提供的虚拟化机器环境中执行的应用程序的初始开发阶段的示意图,该系统管理程序(HV)提供用于存储一个或多个应用以及应用在其下或伴随其运行的客操作系统(OS)的可执行代码和信息数据项的统一存储器空间。
图1D是描绘在非受信计算环境的所分配的虚拟存储器空间中执行应用程序的安装和运行时阶段的示意图。
图2A是描绘伪代码声明和受保护区域实例化以及PR赋予的应用文件的生成的示意图。
图2B是描绘建立其自己的受保护区域(PR)并且在具有经修改的硬件和/或固件(PR实施者)以实施所建立的应用的限制以及验证受保护区域(PR)的完整性的计算环境的所分配的虚拟存储器空间中执行的应用程序的安装和运行时阶段的示意图。
图2C是描绘在试图读/写抓取受保护区域中的信息数据项期间经修改的TLB的操作的示意图。
图2D是描绘在试图在当前正在执行的受保护区域内部和外部调用以及返回可执行代码期间经修改的TLB的操作的示意图。
图2E是根据本公开的一实施例来配置的物理和虚拟存储器空间的受保护区域分层结构的概念解说。
图3是描绘受保护区域赋予的应用程序的开发和现场部署的流程图。
图4是描绘受保护区域(PR)赋予的应用的安装和完整性验证阶段的流程图。
图5是描绘存在TLB查找未命中的情况下会发生什么的流程图。
图6是描绘当受保护区域的数据从通用存储器被交换到经封装的高速缓存存储器中时会发生什么的流程图。
图7解说了可在其中实现图1-6中的任何一个的示例和实现以及任何替换方案的合适计算和联网环境的示例。
详细描述
本文公开的技术的各实施例依赖于对可能原本更易于受到多种恶意攻击和无意设计和开发错误(故障)影响的计算机或其他数据处理系统中的代码安全化和/或代码确认/验证的硬件和/或固件支持。具体地,在一个实施例中,一组“被埋藏的”仅专有特权的固件可访问的应用供应/指定的行为约束和/或要求被用来确认操作系统(OS)、系统管理程序(HV)以及一个或多个空间共享其他应用中的一者或多者产生的结果。OS、HV和其他应用无法在随机时间更改这组“被埋藏的”源自应用的和/或应用指定的约束/要求,或者更改专有特权的固件/硬件的受保护区域实施者(PR实施者)的内部操作。后者的操作包括自动重复的一组访问匹配测试。作为访问匹配测试的结果,OS、HV和/或其他应用的非正常工作的和/或恶意的部分(例如,软件病毒)无法轻易绕过实施PR的约束/要求。
要理解,如本文所使用的,术语“硬件”、“固件”和“软件”并不指代抽象事物而是指代物理上现实的现象,它们消耗物理空间并且在操作使用中时消耗物理能量,诸如以电子和光子中的至少一者四处移动以藉此定义对应的且物理上现实的信号的形式。对术语“虚拟的”的使用并不破坏提供上层虚拟化的底层现象(例如,有用机器、进程、制造或对其的改进)的物理性。硬件的示例包括被配置成提供输入/输出数据变换或者存储可检索数据和顺序状态机的Boolean逻辑电路、计数器、寄存器、存储器单元。固件的示例包括存储在顺序状态机的控制存储器中且被配置成控制该机器的操作的物理信号。软件的示例包括存储在数据处理机器的主存储器中且被配置成控制该数据处理机器的操作的物理信号。使用诸如“软件”、“固件”、“虚拟”等之类的术语的所附权利要求书并不排除他人构想、说出、或类似地非有用的使用抽象概念、自然法则或自然发生的现象。当处于活跃(例如,正在执行的)操作模式中时,“软件”实体无论是应用程序/线程/进程、虚拟机、操作系统(OS)、系统管理程序或类似物被理解为构成正在一个或多个现实物理机器中执行的正在进行的物理进程,其中作为正在其中被执行的所述物理正在进行的进程的结果,机器每单位时间熵消耗电功率和/或其他形式的现实能量。当处于静态(例如,非正在执行)模式中时,经实例化的“软件”实体或类似物被理解为被具体化为以更隐晦地瞬态方式被保留在一个或多个物理存储器设备中的经变形的物理物质的基本上唯一且功能上可用的模式,以便它能够在功能上且协作地与软件和/或固件可指令机器交互,这与仅仅是描述性且非功能性物质相反,其中该一个或多个物理存储器设备包括但不限于,利用静电效应、磁效应、相位改变效应、光学效应或这些或其他可检测到的物理区别形式的各种组合中的至少一者以表示所存储的数据的存储器设备。存储介质(或简短来说“存储”)并不意味着信号传输介质本身。
而且,如本文所使用的,术语“用信号指示”、“传送”、“通知”、“指示”、“逻辑链接”等并不意味着单纯非物理和抽象事件,而是相反意味着物理且非隐晦地瞬态事件,其中前者的物理事件是能够通过现代科学技术来验证其存在性的物理事件。使用上述术语“用信号指示”、“传送”、“通知”、“指示”、“逻辑链接”等或其等效物的所附权利要求书并不排除他人构想、说出、或类似地以非有用方式使用抽象概念、自然法则或自然发生的现象。
本领域技术人员可以领会,经排序的术语序列:硬件、固件和软件指示;基于这些术语的历史开发,越来越容易修改的各组物理上现实的现象,其中硬件在表面上较难修改(例如,在历史上通过使用焊铁)而软件在表面上较易修改(例如,在历史上通过使用穿孔计算机卡),其中固件在表面上植根于该范围中间。然而,尽管如此,可以领会,在现代复杂数据处理系统中,困难到容易范围的修改有时候取决于上下文可以被反转,其中由于软件的现代复杂性软件是最难以在没有错误的情况下进行修改的,而硬件在被暴露的情况下较易修改(例如,如果没有固定地装入封装中,诸如用于密闭地封闭在一个或多个单片集成电路(即芯片)中)。
参考图1A,示出了分层示意图,该示意图描绘了加载、链接和启动用户应用软件50的过程101,其中被启动的应用不为其本身建立受保护区域(PR)并且其中支持启动的硬件、固件和软件(例如,启动操作系统或OS 54)不必包括用于实施可能原本由应用确立的PR所提供的限制的机制。(在此提及的应用对应用拥有的受保护区域的建立将在下文更详细地描述,以图1B的示例来开始。)
如本文所使用的,术语“应用”或“应用软件”要被理解为具有类似于如例如在虚拟化机器环境中被执行的软件“进程”和/或软件“线程”的含义,后者暗示物理硬件资源在时间复用以及上下文交换的基础上是共享的,以使得表现为就像是许多应用、进程、线程或类似命名的已编程可执行序列在同时进行操作一样,可能在时间共享的基础上同时在不同的虚拟机上运行和/或可能同时使用有限大小的高速物理存储器空间(例如,SRAM、高速缓存)。术语应用、应用程序或用户应用将在本文被用来表示从应用监管OS的角度来看具有相对较低的执行和数据访问特权的已编程可执行序列。操作系统(OS)以及其预定义库进程中的一些被理解为从OS的角度来看具有较高的执行和数据访问特权。要理解,较高的执行和数据访问特权可以根据被称为系统管理程序软件(图1A中的HV 56)以及根据SoC数据处理单元65b(其中SoC表示片上系统并且其中密闭地封装的一个此类单元在图1A中65处被示意性地描绘)的数据处理器控制微代码(后者未直接示出在图1A中,参见图1C的118b)。还要理解,操作系统(OS)的各个部分(诸如其库例程(被加载和链接的应用可操作地链接到的))可以被认为是在OS的其他部分的监管之下执行的应用、进程或线程。一些OS例程可具有比其他更高的R/W、X/NX访问特权。
仍然参考图1A,第一应用加载、链接和启动操作101被描绘,其中操作101不使用本公开的受保护区域(PR)各方面。出于简明的目的,假定仅仅存在单个源自用户的并且可加载的(例如,经预编译的)应用文件50被加载到系统主存储器60,被链接到经声明的库例程,并且在预定义和虚拟化操作系统(OS)54的监管之下被启动。虚拟化机器环境通过使用由框56所指示的软件系统管理程序(HV)来实现。在被加载并且链接到经声明的库服务之后,所描绘的应用50提供某些可执行代码片段、某些软件可访问的信息数据项的片段、以及在应用被启动(其执行被启动)时可以使用的某些经解析的库链接。这些源自应用的且执行启用的项在图1A中被表示为51。在所解说的示例中,应用50、操作系统(OS)54以及系统管理程序(HV)56的所有操作由被称为主处理器单元65b中的至少一者来排他地执行。这些处理器单元65b被称为主机,因为它们排他地负责直接执行源自应用(App)50、操作系统(OS)54和系统管理程序(HV)56的指令。其他补充处理器单元(例如,65c、64b)可存在,其中这些补充处理器单元不负责直接执行源自App 50、OS 54和/或HV 56的指令。
在安装在虚拟化机器环境(56/54)中的应用50的启动和/或执行期间,代表被启动的应用50致使发生某些数据处理信号的产生。这一产生52包括定义和存储用于对应用的可执行代码片段进行寻址的虚拟地址(VA),定义和存储用于对应用的可访问数据片段进行寻址的虚拟地址(VA),以及定义和存储用于对应用50被链接到的所请求的库服务进行寻址的虚拟地址(VA)。这些应用启动所导致的事件被表示为图1A中的52,并且出于之后与对应物之间的比较而被示出,该对应物被表示为图1B中的71a、71b的启动所导致的事件。
应用50的启动还致使顶层操作系统54执行某些操作,包括分配虚拟存储器的静态和动态区域以供被启动的应用50使用,将已分配的区域中的一者或多者指派为有特权或没特权(从OS的角度来看),以及将访问许可附加到已分配区域,例如,以读和写许可(数据加载和存储许可,也被表示为R/W许可)以及可执行相对于不可执行(X/NX)许可的形式。启动OS 54被耦合到系统管理程序56,其中后者被任命为创建客OS地址到物理地址(GpA/PA)的转换表的特权软件。这些系统管理程序提供的转换表(GpA/PA)的创建在57被表示。更精确来说,OS 54负责生成一个或多个更高层次的转换,被称为虚拟地址(VA)到客“物理”地址(GpA)的转换表。GpA并非真实的物理地址,而只是从OS的角度来看表现为如此。系统管理程序56负责生成较深阶段(在层次上更往下的)转换表,被称为客“物理”地址(GpA)到现实物理地址的转换表。当要确定给定虚拟地址(VA)的现实物理地址(PA)时,可以执行被称为查走VA/GpA/PA分层表格的过程。然而,这一VA/GpA/PA表格查走操作可消耗相对大量的时间和/或消耗相当大量的系统资源。OS应用启动所导致的事件被表示为图1A中的55,并且出于之后与对应物之间的比较而被示出,该对应物被表示为图1B中的75a的OS启动所导致的事件。
为了加速虚拟地址(VA)到物理地址(PA)的转换,提供了被称为转换后备缓冲器(TLB)58的硬件机制。已经被VA/GpA/PA表查走操作确定过一次的较频繁需要的转换在TLB58中与由OS 54和/或由系统管理程序56提供的对应的R/W和X/NX许可一起被高速缓存为直接VA/PA地址转换。在一个实施例中,OS和系统管理程序R/W和X/NX许可的并集中最大限制的许可(R/W、X/NX最大R个许可)被高速缓存在TLB中。如果即刻需要的VA/PA转换没有被发现已经被高速缓存在TLB中,则在系统管理程序56的监管之下的硬件/固件的部分被调用以执行查走通过和搜索通过多级VA/GpA/PA转换表(56、76)以寻找提供所需VA/PA转换的组合。在系统管理程序56监管之下的硬件/固件通常还按需在片上高速缓存65a与片外其他存储器(例如,60和/或64a)之间移动数据。在一个实施例中,输出PA各自是4千字节存储器页的地址而非针对代码或信息数据专门所需项的一个地址,并且偏移被添加到物理页地址(PpgA)以访问代码或数据的期望项。TLB硬件58的输出被称为TLB有效载荷59。响应于TLB58的输出或者系统管理程序56的输出而生成的物理地址和对应读/写信号被供应到置于容纳被称为片上系统(SoC)的单片集成电路封装65内的高速存储器高速缓存(例如,SRAM)65a或者被供应到片外主存储器60,其中后者主存储器通常被实现为DRAM(动态随机存取存储器)但也可包括SRAM(静态随机存储存储器)和非易失性闪存。取决于OS 54和/或系统管理程序56来确定物理存储器的哪些部分构成主存储器而哪些部分构成辅助(例如,较大较慢)存储器。存储在SoC封装65内的数据通常以非加密形式(明文形式)被存储。存储在片外(诸如主存储器60中以及较慢存储器64a(诸如片外盘存储器(例如,磁性或SSD)))的数据可以以加密形式被存储。取决于用户确定的安全性与速度之间的折衷,片外数据中的一些可以以非加密形式(明文形式)被存储。恰适的解密和重新加密硬件机制(未明确示出在图1A中,但应理解为在MMU外壳65io内)可以被用于按需将所存储的数据从加密形式转换为明文形式。频繁用于当前操作的代码和数据在系统管理程序58的监管之下被交换(经由路径61)进入片内高速缓存65a。通常,如所提及的,是在系统管理程序58的监管之下调用系统硬件和/或固件来执行实际数据交换。不再被当前操作频繁需要的代码和数据被交换出(经由路径62)片内高速缓存65a并且被存储在较慢的片外存储器空间(例如,60、64a)中。系统管理程序56和/或其监管的数据交换硬件/固件资源自动地负责关于哪些数据块(例如,4千字节页)被存储在高速缓存65a中或主存储器60中或较慢/较大形式的存储器64a(诸如磁盘或固态硬盘(SSD))中的记账。系统管理程序(HV)和操作系统(OS)中的一者或两者可自动地负责关于哪些盘上数据块被存储为加密数据而哪些被存储为明文数据的记账。
除了其板载高速缓存存储器65a之外,SoC封装65容纳一个或多个“主”数据处理单元,诸如在此处被共同表示为主uP 65b的微处理器核。系统管理程序56以及操作系统54和被启动的用户应用50可执行执行的代码被“主”数据处理单元中的至少一者执行。SoC封装65还可容纳一个或多个“补充”数据处理单元65c,其可以提供专门化、可调用的服务,但是无法直接执行系统管理程序56、操作系统54和被启动的用户应用50的可执行代码。框65c内的补充数据处理单元的示例可以是片上图形处理单元(GPU——未示出)。包括此类片上GPU并不排除还供应片外GPU(例如,在外部处理器64b之间)。尽管未在图1A中示出,但要理解,SoC封装65可以包括用于存储在片内数据处理单元(uP)65b、65c在执行相应的运算代码指令(opcode)时当前被片内数据处理单元(uP)65b、65c使用的微代码的专用存储器单元。该一个或多个专用存储器单元不能直接由正在执行的用户软件(例如,应用50)访问或甚至不能直接由平台主存的操作系统54访问。如本领域技术人员将领会的,经编译的用户软件(例如,应用50)通常致使运算码和/或以运算码为目标的数据被提供到SoC内主uP 65b并且接着主uP利用它们能够访问的微代码来对寄存器数据和/或主存储器数据进行操作。在一个实施例中,uP使用的寄存器各自是64位宽。在一个实施例中,那些位中仅较低的48位被用于物理寻址,而较高的16位可以被用于其他功能。在一个实施例中,SoC中主uP 65b的寄存器包括程序计数器、累加器、堆栈指针顶部、基地址提供寄存器、以及偏移提供寄存器等。通常,在虚拟化机器环境中,用户应用50将不会尝试直接访问基硬件寄存器(例如,物理程序计数器、堆栈指针的物理顶部等),尽管它们可以(除了被保留以仅供系统管理程序56访问的若干寄存器)。相反,它们通常将在时间复用的基础上使用系统管理程序560提供的虚拟化机器资源。OS 54和/或系统管理程序56在执行上下文交换时可以直接或间接访问基硬件寄存器(例如,物理程序计数器、堆栈指针的物理顶部等)。
除了所解说的SoC内数据处理单元(uP)65b和65c,应用主存平台(未直接示出)还可包括一个或多个“外部”专用或通用数据处理单元64b,其在SoC封装65的外部(如上文部分提及的)并且提供补充通用数据处理功能和/或专用功能,诸如视频或其他图形数据处理(例如GPU)、音频数据处理、高速并行数学处理(SIMD)(诸如3D向量处理)、补充和/或复现由SoC I/O壳65io提供的存储器管理处理的存储器管理处理(MMU);等等。外部数据处理单元64b可以可操作地耦合到主存储器60和/或较慢/较大存储器单元64a,并且可以被从主uP65b在操作系统54和应用程序50中的一者或多者请求时发送到它们的指令进行命令。由于外部数据处理单元64b在块64的保护性封装外部,因此发送到那些片外资源的数据在芯片之间被传达时可以采用加密的形式。对补充或专用服务的请求可包括对执行针对对应存储器单元60和/或64a中的预定区域的各种数据加载和数据存储操作的请求,和/或对致使外部数据处理单元64b执行它们提供的服务中的各种服务的请求。如下文将看到的,根据本公开的一个方面,外部数据处理设备(诸如专用数据处理单元64b)以及甚至SoC内部但是补充的uP 65c在一个上下文中可以如同它们仅仅是访问存储器的应用程序、进程、线程等那样来对待。
尽管图1A以示意性的形式描绘了在不为其自身确立一个或多个受保护区域(PR)的应用50启动期间会发生什么,图1B以示意性的形式描绘了在应用被安装、链接和最初启动时不致使针对应用和/或其线程和进程确立一个或多个受保护区域(PR)的保护请求/利用应用70会发生什么。更具体地,PR利用应用70(更具体地最初作为经预编译的应用文件来提供——参见图2A的190)不仅提供其自己的可执行代码、初始可访问数据以及所请求的库链接;如71a所表示的,而且还提供(直接或经由援引纳入的方式)其自己针对初始和应用拥有的受保护区域(PR)的定义71b。(在一个实施例中,相比于在应用安装时静态且固定的,受保护区域(PR)和/或它们的约束和/或所包含的可执行代码和值数据可以在应用被启动之后被动态地改变——简要参见图2A的183.5)。应用提供的初始PR定义71b包括受保护区域标识(例如,要被初始确立的PR的数目计数以及那些PR的逻辑ID)和受保护区域范围定义(指示被认为在每一相应标识的PR(例如,PR1、PR2等——简要参见图2B)内部或不在内部的一种或多种方式)。应用提供的初始PR定义71b进一步包括针对相应的应用定义的PR的相应的R/W和X/NX许可属性,其中这些相应的R/W和X/NX许可属性与OS提供的R/W和X/NX许可是分开且独立的。另外,应用提供的初始PR定义71b可以定义其他约束(例如,谁被允许或不被允许访问PR或PR子部分)或者针对每一应用定义的PR的每一相应PR和/或其他属性要实施的要求(例如,何时或者在什么条件下在PR或子部分内的可执行代码是可执行的和/或何时或者在什么条件下在PR或子部分内的信息数据项是可抓取的?)。此类PR属性71的各个属性不必针对整个受保护区域(PR)被全局地实施,而是取而代之可以针对PR内的不同子部分来局部化(简要参见图2A的183.6)。在一个实施例中,每一PR可以被细分成与4千字节一样小的各子部分,其中每一子部分可具有与PR的其他子部分相比部分或完全唯一的其自己的属性,或者从PR的其他子部分部分继承的其自己的属性。例如,给定受保护区域(例如,图2B的PR3)内的只读数据的上半部分可以由所有外部应用可读,而下半部分可以仅由所定义的其他应用子集可读,和/或由特定其他PR内的特定可执行线程(XT)可读(例如,出于概念目的参见图2B的可执行线程XT05)。
重要的是,PR定义71b被最初安装的应用70“拥有”,其所分配的存储器空间将被细分以包括受保护区域(PR)以及仅应用70可改变或破坏它们的部分(或者更具体地,要求PR实施者改变或破坏它们)。换言之,PR定义71b由应用70在其启动期间排他地创建(和/或定义),并且可任选地由应用70在其运行时期间排他地修改(例如,经由其向PR实施者的被允许的请求)。在一个实施例中,当PR实施者接收到要创建新的受保护区域(PR)或修改其属性的请求时,PR实施者首先验证该请求源自系统主处理器的操作的结果以及来自拥有PR的应用的虚拟存储器空间内部(这包括其中应用经由OS转发其请求的情形)以及不来自某一其他应用或由于外部或补充处理器的操作。因而,应用内部的PR被PR确立应用创建、修改以及排他地拥有。作为更具体的示例,图1B的PR定义71b可以被包括在最初安装的应用文件(70——参见图2A的190.1)内或者根据拥有PR的应用70的命令在该拥有PR的应用70的初始加载和链接期间作为库文件被链接加载到存储器中(简要参见图2A的183.6)。在系统管理程序76为受保护区域(PR)生成虚拟地址(VA)(以及为它们生成一级VA/PA转换表)之后,最初被包括的PR定义71b被PR实施者复制(尽管不一定以逐位相同的方式被复制,而是作为PR实施者可执行格式或者可任选地被转变成PR实施者可执行格式来传递的底层信息被复制)到系统存储器的“被埋藏的”存储器空间或区域75d中。如本文所使用的,术语“系统存储器”指的是物理存储器并且包括物理主存储器以及其他数据存储,其大部分可以被寻址并且至少由系统主处理器(以及可任选地由补充其他处理器)对其进行读取和/或对其进行写入。然而,根据本公开,相对较小部分(例如,小于10%)的系统存储器可以被留出作为“被埋藏的”元数据空间(由虚线框75d表示并且还被称为“被埋藏的”元数据区域75d),其中系统主处理器(以及补充其他处理器)无法直接容易理解地写入该“被埋藏的”元数据空间或者从其进行容易理解的读取,尽管它可致使对该“被埋藏的”元数据空间中埋藏的元数据的完整性进行验证。仅PR实施者可以容易理解地读取存储在“被埋藏的”元数据区域(例如,75d、85z、80z)中的元数据,以使得它可以实施其中包含的PR属性,并且仅PR实施者可以容易理解地盖写存储在“被埋藏的”元数据区域中的元数据。
更具体地,在一个实施例中,“被埋藏的”元数据区域75d中的数据仅能够被实施PR的硬件/固件机制75e(在此处也被称为PR实施者75e并且被相应的虚线框75e来表示)的另一“被埋藏的”集来容易理解地读取(以及可任选地由其容易理解地修改),如下文将详细描述的。因而,客操作系统(OS——例如74)、系统管理程序(HV——例如76)、外部补充处理器(例如84b)、内部补充uP(例如85c)中没有一者能够容易理解地读取存储在“被埋藏的”元数据区域75d中的数据,或者直接致使其在没有由拥有该元数据的应用(也被称为拥有PRPR的应用)给出的并发许可的情况下被容易理解地改变(以使得数据完整性被保留并且通过完整性测试)。外部其他用户应用、线程、或进程(例如,图2B的250)中没有一者能够容易理解地读取存储在“被埋藏的”元数据区域75d中的数据。即便致使被埋藏的元数据(被埋藏的区域75d中)的实例化的应用(例如,70)也无法容易理解地读取存储在“被埋藏的”元数据区域75d中的数据。然而,拥有PR的应用70可通过使用主uP 85b的微代码保持部分(例如,图2B的218e)中提供的并且仅可由拥有PR的应用用来请求PR实施者执行这些操作的专门PR属性改变运算码来致使该被埋藏的元数据被改变或破坏。换言之,“被埋藏的”元数据区域75d能够在拥有PR的应用70命令(与PR实施者75e合作)时被致使被动态写入或破坏,如下文将详细描述的——参见例如图2A的183.5。
具有存储其中的被埋藏的元数据区域75d(由虚线框75d表示)的数据存储空间并不位于绘制虚线框75d的位置处。相反,该数据存储空间可以被指派为位于OS或系统管理程序所标识的存储单元中,并且如此指派的被埋藏的元数据区域75d可以被分配到具有被埋藏的区域的访问属性的专用地址空间中,例如,被表示为主存储器80内的被埋藏的区域80z以及片上高速缓存85a内的被埋藏的区域85z的专用地址空间。附加地或替换地,被埋藏的元数据的部分可以位于其他数据存储单元中,其用于该被埋藏的元数据的相应的存储区域被赋予被埋藏的区域的访问属性,以使得对那些各个被埋藏的区域80z、85c和/或其他(未示出)的容易理解的访问受到硬件约束并且不可被软件盖写。更具体地,在一个实施例中,仅有在本文中被称为PR实施者85e的SoC中硬件/固件机制能够出于实施被埋藏的元数据区域75d中的数据所定义的约束和/或要求的目的来容易理解地读取片上被埋藏的元数据区域85z中的数据,并且仅PR实施者85e可以盖写或破坏存在于片上被埋藏的元数据区域85z内的数据。片上被埋藏的元数据区域85z中的数据按照类似于其他片上和片外数据如何被交换的类似方式被交换到芯片外或者回到芯片内,除了实施被指派给指定被埋藏的元数据区域75d的专用访问约束。在一个实施例中,仅有主uP 85b的微代码保持部分中提供的专用PR属性改变运算码可以被用来命令PR实施者85e盖写或破坏存在于被埋藏的元数据区域75d(该区域可物理地占用区域80z以及85z)内的数据,并且只有在针对那些专用运算码的调用来自(例如,源自)拥有PR的应用70的情况下。另一方面,系统管理程序76仍然被允许在无法容易理解地读取被埋藏的元数据75d的情况下追踪被埋藏的元数据75d的什么部分在高速缓存85的被埋藏的部分85d内部而什么部分在主存储器80的被埋藏的部分80z内部或者在物理存储器中的别处。
虚线框75d被示出在图1B中的位置以表示被埋藏的元数据,以使得被埋藏的元数据75d与应用启动的各个方面之间的交互能够被更容易地描绘。类似地,表示被激活的PR实施者85e的虚线框75e被示出在图1B中的位置,以使得它与被埋藏的元数据75d以及应用启动和执行的各个方面之间的交互能够被更容易地描绘。实际PR实施者85e被固定封装在SoC85内部。
最初被包括的PR定义71b在它们被存储在最初加载的应用文件70中时没有被埋藏的。(还参见图2A的190.1)。然而,它们被结构化成以便在被复制到被埋藏的元数据区域75d中(这意味着信息被传递并且被可任选地变形为PR实施者兼容的格式)之后能够被最初安装的应用70的作者或其他提供者远程证实。更具体地,在一个实施例中,远程证实被用于验证要从应用数据文件(或者从应用文件所引用的链接加载的文件)复制并且接着被存储在“被埋藏的”元数据区域75d中的初始PR定义71b(例如,其信息要被传递并且可任选地变形)相对于应用的作者或其他提供者定义为被安装和初始启动的应用70的一部分的内容没有改变。同样,相同的远程证实规程可以验证每一最初定义的PR(或PR的指定子集)的内容相对于应用的作者或其他提供者定义为被安装和最初安装的应用70的一部分的内容没有改变。这一证实可以在拥有应用或OS中的至少一者所指定的时间被执行,并且被用于在紧邻PR定义的约束/要求的固件实施激活之前验证应用70的初始设立没有通过故障和/或外部实体或OS 74或系统管理程序76或与被启动应用70共享存储器空间的其他应用的恶意干扰而被改变。以此方式,确保了正确的一组受保护区域定义和相关联约束定义的属性被实际存储在“被埋藏的”元数据区域75d中并且正确的数据项被存储在最初定义的受保护区域(PR——参见图2B的PR1、PR2等)中。
如何致使证实(和/或其他形式的完整性验证)发生的细节可以改变。在一个实施例中,标志被翻动到“被埋藏的”实施PR的固件75e内部以指示在应用加载之后的预定义时间段内(和/或在执行指令的预定计数内)证实已经被成功处理并且与调用证实挑战的是OS74还是正在运行的应用70以及后续证实完成无关。如果例如在启动请求之后的预定时间长度内证实完成标志没有翻转为真,和/或在证实完成标志没有翻转为真而应用已经执行预定数目的指令之后,“被埋藏的”实施PR的固件75e可以禁止应用70执行超过预定初始程度。在一个实施例中,并且如下文稍后将更容易地理解的,初始安装和启动的应用70可以将其自身细分为至少两个受保护区域(PR——参见例如图2A的182、183)以及一个非受保护区域(NPR——参见例如图2A的181.4),PR中的第一者仅具有执行许可(X=真,R=假/W=假)而第二PR不具有许可(X=假,R=假/W=假)。可以在NPR部分中被执行(作为示例并且如与证实完成标志相关联的程度界定函数所允许的)的第一操作中的一者是在第一PR(仅具有执行许可的PR)内实例化可执行线程(XT),其中该线程调用至少针对其自身的证实挑战(参见例如图2A的182.1)。如果挑战被成功满足,则在第一PR内执行的第二操作可以是动态地重新配置应用70的PR定义(71b)(参见例如图2A的183.5)。以此方式,初始安装的应用在第一次被加载、链接和启动时无法被用于除了验证其自身内容的完整性之外的任何其他功能。如果基于证实的完整性调整没有被满足,则应用70被自动停止并且产生异常标志。替换地或附加地使用其他完整性验证技术(诸如校验和、ECC(误差检测和纠正代码)、散列验证等)来验证初始安装的PR定义71b的完整性没有被破坏也在本公开的构想内。
在一个实施例中,执行线程(XT)对给定PR的所有进入以及对PR内的信息数据的所有访问都被禁止,知道它通过证实。这一禁止由PR实施者固件/硬件来实施。在此类实施例中,应用的非PR部分例如通过使OS向应用指定的外部源发送请求以发出证实挑战来请求证实。在一个实施例中,不使用看门狗时间限制和/或被执行指令的数目限制。在一个实施例中,如果给定应用的所有代码都在一个或多个PR内部,则所有那些代码的PR属性之一可以是在它们通过证实之后无法被访问,其中在此情形中OS自主地发出证实请求。可替换地或附加地使用用于验证PR属性的完整性和/或受保护区域(PR)的子集或全部内部的可执行代码和/或信息数据的完整性的其他方法。
图1B的应用启动OS 74一般地与图1A的启动OS 54基本相同的方式执行,除了它应当知悉启动应用70正将其自身声明为具有受保护区域(PR)(参见例如他图2A的181.2)并且定义其自己的受保护区域(PR)71b(参见例如图2A的182、183、184)的可能性。如果OS 74检测到启动应用70正将其自身声明为具有受保护区域(PR)并且正定义其自己的受保护区域,则OS 74自动为所声明的受保护区域(PR)指定相应的PR开始的虚拟地址(VA),如72b所指示的。OS 74还要求系统管理程序76为所声明的受保护区域(PR)生成物理地址(超-PA)。OS74附加地为所声明的受保护区域生成一级VA到PA的转换表,如72c所指示的。OS 74接着命令PR实施者(例如通过专用运算码)将所生成的一级VA到PA的转换表(具有或不具有可任选的信息格式的转换)的信息与其他基于PR的属性数据(如图4将详细描述的)一起传递到“被埋藏的”元数据区域75d中。
当启动OS 74(与系统管理程序合作)为所启动的应用70分配存储器空间时,它还生成OS提供的R/W和X/NX一般许可,如75a所指示的。系统管理程序76生成其自己的R/W和X/NX一般许可,如77所指示的。(通过“一般许可”,它的意思是在此处一般地读、写或执行将被准许。此外,PR属性可以定义针对谁(例如,哪个app或app部分)以及在什么状态或其他条件下可以读PR、写PR或使其可执行线程(XT)潜行进入PR的严格得多的许可。)最终这些一般许可被限制合并函数合并,该限制合并函数在一个实施例中拾取每一相应读/写/执行一般许可对(ROS/RHV、WOS/WHV以及XOS/XHV)中最受限的一个,并且最受限或较受限许可的所形成的并集在运行时期间在TLB硬件78的有效载荷输出79a内被再现。取决于上下文使用除了最受限许可之外的一般许可的并集也在本公开的构想内。
在图1B中,为了避免该附图中的交叉线的可能混乱的描绘,经合并的OS和HV提供的R/W和X/NX许可被示出为作为到自动重复的第一访问匹配参数确认测试91的第一输入91a来应用。该第一访问匹配参数确认测试91是能够由PR实施者75e并行执行以及结合应用提供的受保护区域定义71b的使用被执行的多个此类测试90、91、92中的一者。针对第一匹配确认测试91的第二输入集91b来自由PR定义数据71b提供的R/W和X/NX许可定义,其中后者被埋藏的在“被埋藏的”元数据空间75d中并且在运行时期间从“被埋藏的”位置被提供到第一匹配测试91。一旦实施PR的固件75e被证实和/或另一恰适完整性验证方法激活,该第一匹配确认测试91被实施PR的固件75e自动重复执行。因而,第一匹配确认测试91的输出结果O1无法被OS或HV代码伪造或更改,因为OS或HV代码中的任一者都无法查看“被埋藏的”元数据空间75d中(从中读取)以查看正确输入91a应当是什么。第一匹配确认测试91在应用执行期间被自动且重复地运行以验证受保护区域(例如,PR1、PR2——参见图2B)中当前使用的R/W和X/NX许可91b与OS 74和系统管理程序76的组合所提供的那些91a相对应(其中在一个实施例中,为了速度的要求,该组合是在TLB 78的有效载荷79a中被输出的而不是由所示出的馈送输入91a的限制合并函数输出的)。如果存在失配并且取决于上下文,第一匹配确认测试91可以自动致使拥有PR的应用70关闭,因为该失配(例如,错误的输出O1)指示OS74、HV 76以及所启动的应用70中的至少一者已经被破坏。在一个实施例中,代替从许可合并函数(被示为带圈的加号符号)加载R/W和X/NX许可91a,为了速度考虑,匹配确认测试91的第一输入集被获得为来自TLB硬件78的有效载荷输出79a的信号91a’。
确定第一匹配确认测试91失败(例如,O1=假)是否致使对应应用70的关闭与否的上下文考量可包括考虑当前操作仅仅是数据加载步骤而非数据存储(写)步骤的事实和/或当前操作不是代码执行步骤的事实。更具体地,如果当前操作仅仅是数据加载步骤并且PR约束定义71b提供代码执行许可(X=真/NX=假)以及数据加载和存储许可(R=真/W=真)而OS/NV合并并且因而更受限,则许可91a(或者TLB提供的受限许可版本91a’)提供读许可(R=真/W=假),则失配可以被忽略,因为源自PR的许可比源自OS/HV的许可91a(或替换地比源自TLB的许可91a’)在纬度上更宽(更具动力),其中后者往往由于限制合并函数而更受限。另一方面,如果源自PR的约束91b相对较窄(例如,R=真/W=假并且X=假/NX=真)而源自OS/HV且经合并的许可在纬度上更大(例如,R=真/W=真并且X=真/NX=假),则将引起担忧并且引起应用70的自动化关闭,因为后一失配(例如,O1=假)指示OS 74和/或系统管理程序76可能已经被破坏。否则,为何合并器函数(图1B的带圈的加号)会输出更少受限的许可?此外,如果要被确认的操作是数据存储操作或代码执行操作,则被比较的许可91a/91b(或91a’/91b)可能需要被更紧密地彼此对准,因为存在某些东西出错了的提高的风险。
以上对于取决于上下文对许可失配(例如,O1=假)的不同反应的解说背后是源自PR的许可71b(如被埋藏的在“被埋藏的”元数据空间75d中)比时间上更晚并且由源自OS/HV或源自TLB的许可75/79a更受信任的概念。原因在于因为在一个实施例中OS 74和初始安装的应用70(参见例如图2A的181.5)中的至少一者在应用代码的任何显著部分被执行之前自动致使针对应用70的证实挑战被发送(例如,如由与证实完成标志相关联的初始执行函数的程序所界定的)。在一个实施例中,应用发起的对证实挑战的调用被置为仅可执行第一PR区域(参见例如图2A的182.2)内部的子例程,第一PR区域的数据无法被任何其他用户软件或OS 74读取或盖写。应用对证实挑战的请求以加密形式被传送到该应用知晓的远程调整提供服务器的URL。(在一个实施例中,多个假请求与现实请求一起被发送,以使得在所有请求都被加密的情况下在通信信道上进行嗅探那些难以隔离现实请求。)作为响应,远程挑战提供服务器要求OS 74运行通过硬件散列生成器和硬件加密器(参见图2B的212/213),应用提供的PR定义71b和应用定义的初始PR区域(未示出,参见图2B的PR1、PR2)的内容以及由挑战者提供的一次性随机代码。散列结果以加密形式被返回到调整提供服务器。这允许远程挑战者验证PR定义71b和初始定义的PR区域的代码和数据内容在安装和启动之前没有被破坏。所安装的应用70(或者实施PR的固件75e)等待来自挑战者的数字签名的证书的返回,从而在所启动的应用70继续(参见例如图2A的181.6)执行其可执行代码的其余部分(包括驻留在一个或多个受保护区域(PR,参见例如图2A的183.4)中的可执行代码)之前验证被挑战的代码被证实。
如上所解说的,应用70的启动和/或执行致使约束定义属性72c被存储(埋藏)在享有专门特权的存储器区域(存储元数据的区域75d)中,该存储器区域在之后无法被用户软件(例如70)、OS软件74或甚至系统管理程序76中的任何一者访问。尽管如此,在一个实施例中,专用运算码可以被用于通过这些被埋藏的约束定义属性72c以通过系统散列器并接着通过加密器(参见图2B的212/213),其中经散列的加密信号(例如,图1B的信号90a)被发送到远程证实挑战者以进行对它们的完整性的远程验证。此类属性验证证实中的一者或多者的执行在图1B中由匹配确认测试90(匹配0)以及由其输出O3(部分地由文本71e定义)来表示,在它们的成功完成之际致使证实完成标志在实施PR的固件75e内部被翻转为真。经组合但被埋藏的散列和加密过程的执行在图1B中由72d表示。在调用证实过程时,应用70可以自动要求挑战(参见例如图2A的182.3),并且可以等待外部响应者以包含一次性随机代码的挑战信号71c自动作出响应。被挑战区域(例如,PR1)的内容与一次性随机代码的经散列的加密组合被返回给挑战者。如果正确代码流被发送,则挑战者接着返回数字签名的证书以验证该挑战已经被满意地满足。如果否,则应用70被自动停止并且产生异常标志。在一个实施例中,如果证实挑战没有通过和/或许可匹配测试中的一者没有通过,则PR实施者固件/硬件自动确保秘密的保留,通常例如通过破坏受保护区域(PR)的解密密钥,或者在期望更高安全性的情况下还通过破坏未通过证实或匹配测试的受保护区域(PR)中的部分或全部数据。
在图1B中,信号交换图标71d表示在验证证书返回之后对挑战的调用以及经散列的加密信号90a的握手输出。输入90b表示成功握手的意思,即,挑战者确定所发送的经散列的加密信号90a是正确的。因而,存在如由来自符号化匹配确认测试90(匹配0)的真实输出O3所表示的匹配。
此类远程证实(例如,匹配确认测试90)可消耗相当大量的时间,并且因此优选地不要频繁地运行。然而,至少在应用被安装和最初启动的时候以及在应用将等待很长时间以供外部进程完成(例如,用于从缓慢外部存储器设备的必要数据取得完成)的伺机时间,证实挑战和响应71d可以被自动调用以验证一个或多个受保护区域(PR)的当前PR属性和/或内容符合远程挑战者的预期并且没有被篡改或者以其他方式被破坏。
如图1B的文本区域72a所隐含指示的,在应用70已经被启动并且确立了其应用拥有的受保护区域(PR)(如被埋藏的在存储元数据的区域75d内)并且可任选地使那些初始的受保护区域(PR)通过证实测试90和/或用于验证数据完整性的另一恰适方法的确认之后,应用将从启动OS 74获得针对其相应的可执行代码部分、其可访问的信息数据部分以及其请求的库链接的各种虚拟地址(VA)。根据本公开的一个方面,实施PR的固件75e至少部分地被埋藏的(植根)在SoC 85的享有专门特权的存储器部分85e内(例如采用插件式PR支持微代码的形式),以使得它无法被OS 74或系统管理程序76或其他应用(未示出)读取或更改。该专门实施PR的固件85e(例如由所添加的微代码和/或所添加的硬件定义,并且具有由插件实新运算码调用的函数)自动生成其自己的针对应用拥有的受保护区域(PR)内的某些区域的虚拟地址到物理地址(VA/PA)的直接转换表(1页表)。这些固件生成的VA/PA转换表在图1B中被描绘为以被埋藏的形式提供给存储元数据的区域75d并且接着最终被提供给被埋藏的测试激活点72c(以供应用于被埋藏的散列和加密过程72d)的被埋藏的数据信号85d。在一个实施例中,固件生成的VA/PA转换表72c输出的物理地址(PA)92a被自动重复测试以对照从系统管理程序产生的VA/GpA/PA转换表77(通常较大的多级转换表)输出的物理地址(PA)92b进行匹配或者对照作为来自硬件TLB 78的有效载荷的一部分输出的物理地址(PA)进行匹配。为了对两者进行区分,源自系统管理程序的物理地址在此处也被称为超PA而源自被埋藏的元数据的物理地址在此处也被称为元PA。后一自动匹配测试由图1B中的匹配2框92来表示。针对这一测试92的失配(O2=假)指示启动OS 74和系统管理程序76中的至少一者可能已经被破坏,因为如果OS 74和/或系统管理程序76所使用的虚拟地址(VA)不匹配由当前使用的受保护区域(例如,PR1,参见图2B)根据PR转换表92a/72c指定的虚拟地址(VA),则OS 74、HV 76和正在执行的应用70中的至少一者可能已经被破坏。因此,如果匹配2块92的自动重复的匹配确认测试指示失配(O2=假),则作为响应应用70被自动停止,因为启动OS 74、系统管理程序76和当前使用的受保护区域(例如,PR1,参见图2)内的代码中的至少一者不再可信。另一方面,如果从两个分开的源(埋藏在存储元数据的区域75d中的VA/PA一级转换页以及由TLB提供的VA/PA有效载荷数据)生成的物理地址(PA),则OS 74、HV 76和正在执行的应用70中没有一者已经被破坏的概率是高的。
仍然参考图1B,该实施PR的实施例102的TLB硬件78基于当前使用的受保护区域(例如,PR1,参见图2B)的自动获得的标识被修改为输出不同的解密/重新加密交换密钥标签79b,其中每一受保护区域可具有其自己的唯一的一组交换密钥(83)以及标识那些较长交换密钥(83)的对应的标签79b。在替换实施例中,某些受保护区域(PR)被分组并且每一组被指派其自己的唯一的一组交换密钥(83)和对应标签79b。根据本公开的一方面,每一受保护区域(PR)的内容被保持加密,除了在被交换到SoC 85的范围之内时,例如交换到高速缓存存储器空间85a中并且接着每一PR或每一PR组交换密钥(83)被用于解密受保护区域的内容时。换言之,当PR包含的代码和信息数据项被交换到SoC 85范围之内时,例如以用于存储在高速缓存85a中,SoC包85中封装的解密器(例如,硬件解密器)81被自动用来解密PR包含的代码和信息数据项,并且当PR包含的代码和信息数据项被交换出SoC 85的范围之外并且进入更暴露的资源空间(例如,进入存储器资源80、84a)时,也被封装在SoC包85中的重新加密器(例如,硬件重新加密器)82被自动用来重新加密PR包含的代码和信息数据项。因而,在运行时期间明文PR内容不被暴露在SoC 85的范围之外。如果每一PR或每一PR组交换密钥(83)被破坏(例如,被保持它们安全并且不可被软件访问的硬件机制),则SoC范围之外的PR内容表现为单纯的无用数据。因而,当应用终止(或证实失败和/或许可匹配失败)时破坏每一PR内容或每一PR组内容的一种方式是要求硬件破坏对应的交换密钥。在此之后,研习解除分配的虚拟存储器空间以寻找被遗漏的有用代码的嗅探代码将在其中已经存储了PR内容的区域中仅仅找到难懂的无用数据。
在一个实施例中,TLB输出交换密钥标签79b被自动供应为每一PR或每一PR组的集合,并且被用于引用仅仅硬件可访问的较长的对应交换密钥,并且被应用为置于SoC中封装(例如,片上)85内部的高速缓存解密(81)和重新加密(82)机制的输入83来应用。由于不同交换密钥83可以被用于不同的受保护区域(PR或它们的组)的相应的可执行代码和信息数据项,因此可以使得该系统比其中针对全部数据不使用解密和重新加密功能(参见图1A的61、62)或者其中针对全部数据同一单个交换密钥集(未示出)一直被用于在高速缓存中的明文数据与片外加密数据之间进行转换的情形更安全。在一个实施例中,被描绘为79b的TLB有效载荷输出的部分产生对应的标签,该标签指向(例如,索引到)对应的交换密钥集,其中该标签在下文被引用为PR密钥标签(或简称PRKT)。在一个实施例中,TLB输出部分79b偶尔还包括下一或目标可执行PR区域的标识标签(下文被引用为目标PRCAT)。在一个实施例中,对于虚拟存储器中创建的每一受保护区域(PR),实施PR的固件自动要求硬件生成加密/解密交换密钥的对应集合、对应的且同样相对较长的PR标识代码(例如,来自一个或多个随机数生成器)以及针对这些的相应标签。实施PR的固件使用给定标签来引用基本上更长的交换密钥和PR标识代码,其中后者仅能够由硬件平台访问。在一个实施例中,在拥有这些密钥的应用终止时,实施PR的固件可以要求硬件破坏长交换密钥和PR标识代码。
鉴于以上内容,看到图1A-1B提供了在不实施受保护区域(PR)的情况下运行与在实施受保护区域的情况下运行之间的并排介绍性比较。然而,这并非是完整画面。受保护区域(PR)概念的使用可开始于源代码的写入(参见下文详细描述的图2A)以及什么内容应当或不应当全部或部分位于每一受保护区域中的确定(参见下文详细描述的图2B)。这之后可以是至少在启动时对受保护区域完整性的验证(参见下文详细描述的图3A),接着是在受保护区域约束和要求之下的执行(参见下文详细描述的图3B)。如所提及的,当受保护区域(PR)拥有的应用(例如,App1’)使用其自己的受保护区域中的一者或多者完成时,它可以命令PR实施者85e向平台硬件(例如,图2B的210’)中继要破坏该受保护区域的交换密钥和/或长编码标识符的请求。拥有PR的应用(例如,App1’)还可要求PR实施者85e破坏不再使用的受保护区域的被埋藏的存储元数据的区域75d/80z中相关联的元数据。以此方式,嗅探软件被阻止访问到正被破坏的受保护区域(例如,图2B的PR2)的可执行代码和/信息数据项的路径。给定PR的破坏所释放的虚拟存储器空间稍后可以被重新分配为虚拟存储器空间的非受保护区域(NPR)或者不同的受保护区域(例如,图2B的PRx)。
记住以上内容,现在将注意力转向图1C。该附图是描绘开发环境100的示意图,其中受保护区域(PR)尚未实施,因为它们尚未被定义(例如,就要被分配给每一应用的受保护区域的数目而言、就PR中的每一者的范围/大小而言、就每一PR的属性而言、就PR ID和指派到每一PR的每一PR的交换密钥而言等等)。相反,图1C描绘了应用程序141(也即App1),该应用最终在其开发的较晚部分中可使用PR但现在其正在被开发并且不依赖PR来配置以在客OS 122分配给该应用(App1)的所分配的(较大的统一App/OS虚拟存储器空间124的)虚拟存储器空间部分140内执行(根据预定义的应用规范)。在该早期开发阶段100期间,开发中的应用141被认为被置于受信计算环境(例如,受信主机硬件平台110、受信系统管理程序120和受信客OS 124)中。换言之,在图1C的该介绍性示例中,假定开发中应用141不经受恶意外部攻击,包括来自软件病毒、蠕虫、和木马以及外部漏洞利用的攻击。开发在其上进行的硬件平台110是受信平台,其以受信主机系统管理程序120以及在该系统管理程序之下运行的受信客OS 122来加载,并且其中OS、系统管理程序和应用141的软件指令全部由系统uP118p中的一个或多个主处理器来执行。尽管未示出,但在一些实施例中,系统管理程序120可以将虚拟存储器空间分配给客虚拟机(客VM),例如客虚拟机被配置成执行客机器运算码的预定集合(诸如JavaTM字节运算码)并且应用代码接着在客VM的代码的监管运行。即便在给定基本上健康的开发环境(诸如图1C的100)的情况下,开发中的应用141仍然会经受编码错误的损坏。简言之,一组程序员开发的代码部分可能错误地调用正由另一组程序员开发的代码部分,尽管总体系统设计包括针对此类调用的禁止。此类错误调用是可能的,因为在所解说的示例100中,客OS 122分配的存储器空间是所有应用以及OS例程及其可执行线程(XT)基本上可访问的“统一的”虚拟存储器空间124。(当然,在OS可能将对其管理性例程中的一些的访问仅限于类似“有特权”的用户应用——例如系统管理员应用的传统意义上,一些OS例程可以是“有特权”的例程。然而,一般而言,大部分的OS库例程并没有如此的特权,因为意图是使得即便非管理员应用也可使用那些库例程。)
更具体地如图1C中所示,示例性且开发中的程序141的初始编码(源级别编码)被细分成多个软件部分,包括预处理声明部分142、主要或顶级程序部分143以及一个或多个辅助程序部分或子例程144。不同的程序开发工作者或不同组的程序开发工作者可能具有聚焦于开发中的程序141的不同部分的任务。由于编程群组之间缺乏沟通或者由于编程群组之间的误解(或者由于对总体系统设计规范的误解),一个群组可能无意地插入使其执行线程(例如,线程XT06)潜行进入它不应当潜行进入的区域中或者从凭借它的数据读/写指针不应该到达的区域中取得信息数据项(例如,由在数据R/W抵达DATAr06结尾处开口圆环处抓取所表示)的代码。附加地,编码错误可导致指向被分配给所有所启动的应用和/或分配给客OS122的正在执行的线程的统一虚拟地址空间124中的错误区域(例如,145、146)的可变寻址值(例如,指针、索引、标签;未明确示出,但注意源编码项143a的“Addr1”)的开发。本文公开了用于降低此类执行线程进入(潜行进入)不恰当的执行代码区域和/或执行关于不应当被正在访问的进程读取或修改的数据项的读/写访问(数据抵达和抓取,例如,DATAr06)的风险的方法。
以概览的更高级别来看,图1C描绘了现代软件开发环境100的一部分,该开发环境用于开发(编码、测试、修改和再测试)预期要在基于硬件的平台(例如在x86、ARM、或另一此类架构)上现场(在开发实验室外部)执行并且提供一个或多个相对复杂的数据处理单元(例如,CPU、多核、微控制器、GPU、片上系统SoC单元)以及相关联级别的存储器(例如,高速缓存、SRAM、DRAM、固态硬盘SSD)和相关联的网络通信能力(例如,以太网、USB、火线、WiFi等)的应用程序141。各种不重要的支持结构(诸如电源、线缆、连结器、无线收发机等等)可存在但是未在图1C中示出以避免比不要的混乱,由此相关领域的技术人员能够很好地理解。
现在将从系统安全化的角度并且仍然参考图1C来描述上电或引导规程。对角箭头符号105指示引导和激活的优选序列。首先,硬件平台110在自确认模式中被启动。该过程可包括执行确认板载硬件资源的可操作性的基础系统完整性校验(BIOS),该板载硬件资源诸如物理存储器单元116(SoC外部的存储器单元)和物理数据处理单元(诸如118p(例如,SoC内部的处理单元)和外部处理单元(参见图1B的84b))以及物理通信资源(诸如联网输入/输出单元160)。在硬件平台110的自确认引导(105)中的早期,板载安全处理器111被激活以确认平台的各个硬件单元内部的固件(例如,微代码118b、加密/解密功能118g/118h),包括在其数据处理单元118及其通信单元160内部的固件。该自确认过程中包括确认平台110的所安装的系统管理程序软件120内部的软件以及确认例如在板载数据处理单元118的密闭地封闭封装内部提供的微代码118b。所确认的微代码可替换地或附加地被存储在系统存储器(例如,图1B的85z、80z)的专用“被埋藏的”存储器空间区域内部,其中“被埋藏的”存储器空间区域通常无法被用户软件访问后者甚至无法被客操作系统(OS)122或系统管理程序120访问。(如此处所使用的,系统存储器包括系统的主存储器以及其他系统可访问的存储。)如本领域技术人员将领会的,系统管理程序单元120被用于虚拟化系统的一个或多个操作。安全处理器111使用内置且软件可访问的散列发生器112以形成来自存在于正被确认的单元(例如,114、118、160)内部的代码流的散列序列。这些散列序列被片内加密器113自动加密并且被自动传送到外部确认单元(未示出),该外部确认单元自动返回数字签名的证书以确认(证实)安全处理器111所测试的单元的可信度。此类信任确认的一种形式被称为远程证实。在所解说的实施例中,板载数据处理单元118p具有用于使片上高速缓存存储器118a或片上微代码存储区域118b和/或其他片上资源118d中保持的任何明文代码保持安全的它们自己的加密和解密硬件和/或固件118g/118h,其中因而被封装的(包含在芯片内部的)代码在被交换出较少封装的存储单元116之前总是被重新加密(118g)。在一个实施例中,片上微代码118b可以控制用于访问其他片内数据的特权的分配,片内数据包括高速缓存118a中的数据以及其他片上资源118d中的数据。
出于完整性考虑,提供对所讨论的硬件平台单元114、116和118内部的一些其他组件的更详细的描述。可以是多核片上系统(SoC)的核处理器的物理数据处理单元118p通常各自包括一个或多个物理程序计数器(诸如118c)以及其他物理寄存器。每一次系统管理程序120重新分配物理数据处理单元118以供不同的虚拟化执行者(例如,应用、进程、线程)使用时,系统管理程序120将首先自动保存撤回控制执行者的所谓的物理和虚拟处理器上下文(例如,程序计数和其他寄存器内容)并且安装接管控制执行者的预先保存的上下文。数据处理器118p中的至少主处理器中的每一者能够直接访问高速缓存存储器118a,其中如本领域技术人员将领会的,高速缓存存储器可以被细分为在容量上增加但在速度上降低的各部分,诸如L1、L2和L3。L3层可以与所有处理器118处于公共通信。高速缓存存储器118a也与补充存储器进行操作通信,补充存储器诸如片外静态随机存取存储器(SRAM)116a、动态存储器(DRAM)116b以及通常板外盘存储器116d和固态硬盘存储器(SSD)116c。如本领域技术人员将领会的,取决于速度和安全需要之间的折衷在具有或不具有加密的情况下,数据在高速缓存存储器118a与其他物理存储器单元116之间按需被重复交换。大部分用硬件实现的单元(称为转换后备缓冲器(TLB)115)被用于高速缓存在虚拟地址(VA)与物理地址(PA)之间频繁使用的转换。在一个实施例中,TLB 115可以使用一组相关联形式的内容可寻址存储器(CAM)以用于提供其转换服务。在一些实施例中,对TLB 115的服务请求(一组相关联查找请求)致使TLB 115输出有效载荷信号,该有效载荷信号包含物理地址(PA)、读或写许可(R/W)和执行/不执行许可(X/NX)。
继续对自安全化引导序列105的描述,在主机硬件平台110和系统管理程序120的可信度已经被确认之后,客操作系统122被安装、以类似的方式被确认(例如,使用代码散列和数字证书)并且之后被激活。在一个实施例(未示出)中,客虚拟机(VM)被安装在虚拟存储器空间的一部分中以在系统管理程序120之下操作。在一替换实施例中,系统管理程序将每一客VM安装在其自己的单独的隔离的虚拟空间中。客VM被确认并且接着遵从VM的应用被安装以在客虚拟机的域中操作。在后一情形中,客虚拟机(VM)可以被认为在系统管理程序120的监管之下以及在虚拟存储器空间的所分配部分内或替换地用其自己的虚拟存储器空间运行的应用。
最后(对于系统管理程序120和客OS 124的较简单情形),应用加载、链接和启动命令信号(“启动APP1”)被传递到受信客OS 122中,从而致使后一操作系统分配统一虚拟存储器空间124的恰当大小的部分(例如140),开发中的应用141的代码被加载到该恰当大小的部分中。如此处所使用的,所加载的应用程序141被理解为采用可执行的虚拟对象代码格式,以使得它能够直接被主uP(118p内部)在客OS 122的监管之下以及与系统管理程序120和支持硬件平台110合作地来执行。图1C内对采用源代码格式的应用程序141的描绘是为了简化说明。
可以在执行线程(XT)使用一个或多个对应的虚拟程序计数器潜行通过所分配的虚拟存储器空间140的意义上描述所启动的应用141的执行。启动应用程序的执行线程(XT)被表示为XT01并且它在OS 122内部执行。对象应用(141即App1)被理解为要被预编译并且被链接到所声明的库例程或其他库服务和/或其他已经安装的应用的各部分。大部分应用文件中典型的第一部分142包括用于库的所谓的预处理声明和/或用于可变数据空间分配和数据类型确定(OS的链接加载器部分向其分配和指派的类型)的其他链接和声明。作为启动序列的一部分,被执行的初始化线程XT02标识将被可执行代码消耗的虚拟存储器空间(由图1C中的实心黑色圆圈表示)以及将被信息数据项静态或动态消耗的虚拟存储器空间(由图1C中的白色填充圆圈表示)。下一执行线程XT03初始化App1的主程序部分143。通常,主程序部分143包括子例程调用(例如,143b、143c)的闭环。然而,出于解说的目的,第一指令143a被描绘为存储器读操作(“获得Vdata(Addr1)”),其中地址参数可以是可变指针(通常为间接指针或偏移家索引或标签)。在所解说的示例中,基于指针的数据访问操作被描绘为数据抵达线程DATAr04抵达表示存储器位置的白色填充圆圈和所指向的数据单元的内容。在抵达线程DATAr04的末端处提供抓取手的图标。尽管示例143a示出数据读操作(数据加载操作),但它可取而代之是数据写操作(数据存储操作)。
图1C的后续子例程调用143b将至少虚拟返回地址推送到对应的虚拟堆栈(未示出)上并且将执行控制传递到统一存储器空间124中的另一区域144aa,如执行线程XT05所描绘的。首先被调用的子例程SubRt1可以可任选地传递(例如,通过将它们推送到堆栈上)其输入参数的各个参数以供接管控制的下一区域144aa(可执行目标代码区域)使用。被传递的参数之一可以是步骤143a中取得的可变数据。(或者它可以是指向目标数据所在的虚拟地址(VA)的指针。)如果步骤143a的可变指针Addr1指向不正确的存储器位置,则所取得的参数可能是错误并且后续处理步骤(例如,144a:Call OS_Lib_Rt2)可能也是错误。相应地,当接收控制的存储器区域(诸如144aa)从撤回控制区域(诸如143bb)接管控制时,知晓以下各项可能是有用的:接收区域144aa是否被授权(或预期)接收从撤回控制区域143bb发射的执行线程XT05向其传递控制,以及撤回控制区域143bb是否被授权将控制传递到接收区域144aa,和/或撤回控制区域143bb是否被授权将数据访问指针传递到接收区域144aa并且如果是指向哪一其他区域?如果针对这些方面中的任一者(以及可能其他方面)不存在授权,则对具有错误或嫌疑的执行步骤XT05进行标志将是有用的。在这一讨论阶段,将留待下文来更详细地说明可如何通过将撤回存储器区域143bb和接收控制区域144a指派给不同受保护区域(例如,图2B的PR1和PR3)或者甚至指派到同一受保护区域的不同子部分(例如,存储器页)来撤回存储器区域143bb与接收控制区域144a进行区分,其中在不同子部分之间属性改变。(参见例如,图2A的属性改变代码183.5,该附图将在稍后描述。)
在执行应用141的步骤143b和144a之后,又一执行线程可以被图1C的所启动的应用程序141实例化。一种此类执行线程XT07可以将控制转移到在应用程序141所分配空间140外部但是被认为在OS 122的统一虚拟存储器空间124内部的硬件、固件或软件实体150。外部实体150可以将结果数据返回到进行调用的线程XT07,或者如果它是恶意的,则可以试图将数据写入虚拟存储器空间140,藉此可能地用病毒感染应用程序141(或统一虚拟存储器空间124的另一部分)。然而,在这一示例中,因为开发环境100是受信环境,被调用的外部单元150(外部App1也即141)是已知的非恶意外部组件并且因而无论它做了什么都被认为是安全操作。如图1C中又进一步示出的,又一被实例化的执行线程和/或数据抵达操作XT06、DATAr06、XT10到XT999可以将它们的潜行执行触手和数据伸手抓取扩散到所分配的应用存储器空间140内的任何地方或者OS的统一虚拟存储器空间124内的任何地方,无论它在App1空间(所分配的空间140)内部还是外部。执行触手可包括将控制让与外部组件(例如150),以使得App1内部的可执行代码的区域(例如,黑色填充圆圈145)可以被外部组件(例如150)修改和/或执行并且使得包含关键任务信息数据项的区域(例如,白色填充圆圈146)可以被外部组件(例如150)修改或读取。根据本公开,可能存在其中期望将来自统一应用/OS空间124内的任何执行原点(例如143bb)的执行线程(例如XT05)的抵达和/或伸手抓取的数据(例如,DATAr06)约束在任何可读和/或可盖写数据包含区域(例如146)和/或任何可执行代码区域(例如145或144aa)的情况。此类期望约束可涉及时间性或有条件的状态约束以及存储器空间约束。换言之,不仅来自什么源位置到哪个目标位置而且何时和/或而什么有条件系统状态需要存在?
在更详细地说明此类约束和/或系统状态要求可如何成为继续无标志执行的先决条件之前,提供关于图1C的开发环境100的一些附加观察。在开发中的应用141的测试期间,自动化跟踪软件可以被激活以跟踪正常执行线程(行为良好的执行线程或XT’)通过虚拟存储器124采取的路径以及导致错误结果的线程(行为不好的线程)采取的路径。换言之,可以开发线路图,其示出原点(例如143bb)、目的地(例如144aa)和/或正常和故障执行线程的通过路径,并且可任选地示出此类执行线程的相对定时(当处于应当发生或不应当发生的事物的动态方案中时)和/或当前好结果或坏结果发生时当时的系统状态。如下文将变得明显的,不同的受保护区域(PR)的相应约束可以在启动时被静态实例化并且接着由拥有它们的执行应用141动态改变,以使得可确保在下一指令被允许执行之前的各个应用驱动的事件的预期定时(和/或现存系统状态)。换言之,PR的数目、放置、以及相应程度可以由它们的所有者(例如,应用141)在应用自身确定的时间点动态地改变。(附加地,应用堆栈顶部指针的布置可以被改变为完全在给定PR的边界内部,或者刚好在其边界处,或者在非受保护区域(NPR)中,以便藉此控制谁可以访问或不可以访问各个堆栈上的信息数据项——如稍后在下文将理解的。)在这一说明阶段(图1C),在App1应用仍然在开发中的情况下,然而,受保护区域(PR)的数目和放置及其相应的约束和/或现存系统状态要求尚未被定义。相反,自动化跟踪软件(未示出,取而代之参见图2A的185.5)被用于自动将统一应用/OS空间124细分为不同种类的“可能”区域(未示出),其中这些“可能”区域中的一些稍后可基于自动化跟踪软件产生的线路映射结果被转换成具有相应特权和约束的受保护区域(PR)(例如,标识行为良好的线程路径以及行为不佳的线程路径或抵达)。
在此类跟踪工具的帮助下,应用的人类建筑师可以决定什么是安全关键性部分以及什么不是,并且因而将不同的PR或非PR属性指派给开发中的应用的各个部分。作为示例,各部分可以被认为是关键的(并且因而值得更受限的基于PR的保护),因为各部分以明文形式处理重要秘密,诸如用于电子商务应用的消费者口令;或者各部分与来自外部的输入对接并且因而易于摄取恶意事物。因为因特网常常定义能够在网页中被共享和激活的共享对象的方式,所以此类可共享对象尤其易于被攻击或以其他方式被感染问题。取决于应用的人类架构师来识别这些种类的弱点并且决定应用的什么部分要被放入什么种类的PR(例如,更受限、不太受限或几乎不受限)中以及出于什么各种理由。
接着参考图1D,示出了环境103,其中被开发应用程序(现在被引用为241)已经在现场被安装到第二硬件平台210中,第二硬件平台210具有对应的但不一定可信的系统管理程序220,在该系统管理程序220之下运行不一定可信的客OS 222。作为执行线程XT00的一部分,被开发应用程序241从已编译文件(未示出)被加载、被链接到可解析链接声明并且被OS 222启动。在适用的情况下,200世纪系列中的参考标号在图1D中被用于图1C中通过100世纪系列中的标号引用的对应但不一定相同的元素。对于所解说的环境103,框250表示可能影响存储在分配给应用241的统一应用空间240中和/或置于客OS 222和结合其运行的所有应用(例如241)可适用的更宽的统一应用/OS空间224中的可执行和/或信息数据项的一个或多个以及可能恶意、内部和/或外部实体。其他代码影响实体250可包括其他应用、外部设备和网络通信,其将返回数据提供到被开发应用程序241和/或统一应用/OS空间224的其他部分。这些其他代码影响实体250可引发来自统一OS/应用空间224中的某些存储器区域的不期望的读取和/或对其的不期望的写入,和/或不期望的执行线程进入统一OS/应用空间224的代码区域。代码影响动作的示例可包括改变第一应用程序241适用的地址指针(例如,Addr1)或间接指针、标签、偏移、索引等的有效值以便藉此更改第一应用程序241的行为(操作)的子例程输出信号的返回。甚至在第一应用程序241具有嵌入其中用于阻止返回不期望的行为改变外部性的安全软件的情形中,恶意外部攻击可能试图在进一步更改第一应用程序241内的代码之前更改安全软件的可执行代码部分。因而,仅基于软件的安全保护可能不足以保护免于复杂攻击。如下文将变得明显的,本公开提供了无法被现存软件、被系统管理程序220或任何其他软件实体或外部处理器实体轻易抵达或完全不能抵达的被埋藏的安全措施,现存软件包括操作系统(OS)222的软件(甚至其有特权的部分),除了激活被埋藏的安全措施的应用(例如,App1)的软件(例如,通过适用专用激活和/或破坏运算码,该专用激活和/或破坏运算码致使本公开中所谓的受保护区域(PR)的相应创建、激活和破坏)。
参考图2A,示意性地描绘了根据本公开的一方面的示例性实施例180,其中受保护区域(PR)被调用应用(App1如181.1处命名的)调用。宽泛来说,源代码文件181被开发,在步骤186中被编译,并且通过进一步将其存储在非易失性存储器单元(诸如盘192)上被存储为对象代码文件194。
文件181内部描绘的源代码是伪代码而非任何正式语言的代码。行181.1是指示应用文件的名称为App1.C的源代码评论。行181.2是指示该应用将使用本公开的至少一个受保护区域特征的预处理声明。行181.3是拉取包含头部文件的标准受保护区域属性(被称为Std_Protected_Regions_Atts.h)的外部文件的另一预处理声明。行181.4指示main{}程序部分的开始。如所附评论中所指示的,这一主部分在非受保护区域(NPR)中开始,因为特定受保护区域尚未被命名并且以源代码内的相应逻辑位置来开始。尽管被命名为非受保护(NPR),甚至这些区域可具有附加到它们的约束,这些约束之一是NPR区域内部的代码一般不能从受保护区域(PR)中读出数据或者将数据写入受保护区域(PR)。然而,NPR区域内部执行的线程(XT)可以跳跃到或作为子例程调用受保护区域的代码(其中作为示例,181.5处的代码调用源代码文件181的PR中的子例程182.3),然而假设被进入或被调用的PR内代码具有给予进入/调用代码许可这么做的PR属性(线程进入PR覆盖的存储器空间的部分)。
相应地,看到行181.5调用名为Attest_Forcer()的子例程,其中后者驻留在第一受保护区域(PR1)内的位置182.3处。类似地,看到行181.6调用名为Post-Attest_Continue()的子例程,其中后者驻留在第二受保护区域(PR2)内的位置183.3处。主代码部分181.4可包括由省略号181.7指示的其他指令,之后是循环回到行181.6的子例程调用或者行181.6以下的不同指令。
在行182,名为App1_PR1()第一受保护区域的开始被声明,并且其属性作为受保护区域的参数声明被传递。注意到,该受保护区域PR1被其创建应用App1“拥有”并且因此被命名为App1_PR1()。在一个实施例中,仅创建相应受保护区域(例如,App1_PR1())的应用可以定义和/或修改所谓的被创建的受保护区域的属性(例如,Atts_PR1),或者可致使该受保护区域被破坏(其中相应PR的创建、激活和破坏由PR实施者机制执行;例如,图1B的85e)。行182可以是向编译器和链接加载器警告受保护区域的逻辑起点正被声明的预处理器声明。行182.1指示当前受保护区域(PR1)将使其内容被包括在稍后由被调用的证实挑战进行挑战的数据流中。根据本实施例的一个方面,一些受保护区域可以选择不被包括在证实挑战流中。(参见例如行184.1。)部分182.2声明各个信息数据项作为第一受保护区域(PR1)的一部分。它还向它们提供它们的源自PR的读/写许可(该许可可以不同于在运行时由操作系统(OS)或系统管理程序给出的读/写许可)。
行182.3指示作为一个选项,证实实施例程Attest_Forcer()可以在第一受保护区域PR1内部。然而,在其他实施例中,证实调用代码可以在非受保护区域(NPR)中,尤其是在PR实施者被配置成不允许进入PR除非它们已经通过先验证实(假定它们要求证实作为它们属性的一部分)的情形中。在一个实施例中,PR赋予的应用被如此设计,以使得它们无法在不成功解密和确认来自远程证实实体的签名证书的情况下运行。如果给定应用的所有代码都被置于一个或多个PR中,则OS或系统管理程序被给予请求证实的任务。附加地,如果整个VM被置于一个或多个PR中,则系统管理程序被给予请求对VM的代码进行证实的任务。另一方面,从PR内部调用证实(如行182.3处所指示的)可能更复杂,因为它实质上要求将PR的对应子部分留出作为实际上并非是完全受保护PR的一部分并且在其余PR被证实确认之前允许执行。
传递到证实实施例程的参数可包括远程网站的标识,该远程网站将被调用以发放至少针对应用App1的受保护区域的证实挑战。如上所提及的,非受保护区域(NPR)内部的代码无法要求从受保护区域(PR)中进行读取或者向其进行写入。它们在运行时被PR实施者机制阻止这么做。相应地,行182.3处证实实施者例程的身份以及传递给它的参数(例如,URL://remote_0115.com)受到保护以免于在运行时期间在非受保护区域中运行的间谍软件的攻击。附加地,如将变得更清楚的,在描述图2B时,第一受保护区域内部的代码和信息数据项可以被隐藏以免于间谍软件通过使用每一PR加密和解密交换密钥进行打探(简要参见图2B的218h和218g以及图1B的83)。尽管行182.4指示这是第一受保护区域PR1的结束,但允许将其他可执行代码包括在第一受保护区域PR1内也在本公开的构想内。182.4以下的代码部分181.8可包括被认为在非受保护区域(NPR)内的其他指令。
如行181.5和181.6所指示的,证实实施例程首先被执行,并且接着如果证实挑战被成功满足,则执行被称为Post-attestation_continue(181.6)的附加代码。在一个实施例中,平台的受保护区域实施固件(例如,图1B的75e/85e)在指示证实已经被成功执行的被埋藏的标志需要被翻转为真之前仅给予启动应用(诸如App1)某一预定时间量和/或某一预定数目的可执行指令。否则,固件(例如85e)在应用能够执行大量或大数目的非受信实务之前自动关闭所启动的应用。
行183声明由同一应用拥有的并且名为App1_PR2的第二受保护区域的开始。该第二受保护区域可以被定义为针对至少该第二受保护区域(PR2)的开始部分具有其自己的唯一的一组受保护区域属性Atts_PR2.1。行183.1指示第二受保护区域也将作为证实链的一部分被包括。部分183.2请求为要被包括在第二受保护区域(PR2)中的各个信息数据项进行虚拟存储器的分配,并且向那些数据项指派它们相应的源自PR的读/写许可。证实后继续软件的第一部分在行183.4处执行。接着在行183.5,在证实后代码的第一代码部分(183.4)已经执行之后,当前受保护区域(PR2)的属性被动态改变。在一个实施例中,动态改变伪代码将一组参数Atts_PR2.2传递到系统的微代码之中的专用运算码,其中该专用运算码可任选地测试新参数的完整性并且接着将它们存储在被埋藏的元数据区域(例如,图1B的75d)中作为当前受保护区域(PR2)的附加和或替换PR属性,或者在一替换实施例中,作为当前受保护区域(PR2)的所标识的子部分(例如,存储器页)的附加和或替换PR属性。尽管未在图2A中示出,但PR属性的动态改变(例如,添加、修改、破坏)可以被约束为仅在某一相对或绝对时间发生和/或仅在某一相对或绝对系统状态条件下发生也在本公开的构想内,例如,绝对时间是工作日白天而某一其他应用当前正在同一局部硬件系统中执行。在一个实施例中,在初始启动后PR证实已经发生(系统状态条件)之后并且在执行修改、添加或破坏受保护区域(PR)的任何专用运算码之前,PR实施者被配置成验证要执行该运算码的指令来自拥有PR的应用(例如,来自其所分配的应用空间240内)并且只有一种变体仅来自该应用的受保护区域内。
图2A的评论部分183.6指示新的受保护区域属性(Atts_PR 2.2)已经动态改变行183.5以下的代码的约束,以使得仅有限数目的所标识的代码区域(例如,App1的PR5和PR7中或名为App5的另一应用中)可以是试图调用或潜行进入行183.5以下的代码的执行线程的原点。相应地,如果源自在区域185.3内运行的另一应用的执行线程XT85.6试图访问代码部分183.7但是因为行183.5处的动态属性改变而不被准许这么做,则第一应用App1将被实施PR的固件自动关闭(和/或将产生异常标志),因为已经自动检测到潜行进入受保护区域的未经授权的尝试。行183.8声明第二受保护区域(PR2)的“暂停”,其中该暂停指示同一第二受保护区域(PR2)的又一部分将在代码中的稍后部分中被找到,在第三受保护区域的中间代码App1_PR3指示要在行184处开始之后。如之前所指示的,对虚拟存储器空间的分配的其他指令和/或请求可以被提供在PR2的声明结尾183.8之上或者在它之下的由183.9指示的非受保护区域中。在一个实施例中,当PR被拆分成各个分段(例如,通过诸如行183.8处的暂停PR声明以及继续PR声明(未示出,其中下一分段继续)以及结束PR声明(其中PR最终结束))时,PR分段在虚拟存储器空间中和/或物理存储器空间中的放置通常将被隔开。被分段并且使其分段在虚拟存储器空间中被隔开的PR的一个示例在图2E列202中示出,其中被标识为A2D1的PR是应用A2拥有的受保护区域并且向其他应用(例如A1)或补充处理器(例如Ax)中的一些授予能够对应用A2的由经分段的PR覆盖的信息数据部分的容易理解的读或写访问的至少一者,经分段的PR被标识为A2D1,其中同一PR的第二分段被表示为带撇号的A2D1’。
图2A中的行184指示第三受保护区域的声明开始App1_PR3。给定示例在行184.1示出了应用开发者可如何出于各种原因选择包括它们的各个受保护区域或将它们的各个受保护区域从证实挑战排除。一个原因可能是给定受保护区域(PR3)包括大量非重要数据,启动速度与安全性之间的折衷导致PR3应当从证实链中被排除的结论。省略号184.2指示之后可以是包括经分段的App1_PR2受保护区域的又一代码。
各种程序开发工具185可以作为图2A的开发环境180的一部分被包括。在这些之中是证实模拟器185.1。在源代码181已经被编译186并且结果存储在编译后文件190中之后,证实模拟器可以被用于针对相应受保护区域的最初安装的属性(例如,181.3)运行证实挑战以及针对已经将其自身声明为证实链的一部分(例如,PR1-是、PR2-是、PR3-否、PR4-……)的那些受保护区域的最初包括的内容运行证实挑战。不包括一次性随机代码的正确明文散列结果可以被存储在185.2。该结果185.2可以与一次性随机代码是什么的知识相组合以在稍后确定在现场证实挑战中预期什么结果。
程序开发工具185可进一步包括用于调用App1和/或App1调用的其他应用的模拟器185.3,以使得开发中的App1和其他应用(包括OS库例程)的互操作行为(操作)可以被研习。App1还可调用外部专用设备(此处一般被称为设备X)以用于执行各种操作。根据本公开,受保护区域实施将这些外部设备(例如,设备X)就好像它们是在受保护区域制度下被授予或拒绝对抵达属于App1的信息数据项和或调用或线程进入App1内的代码区域(例如,如由可执行线程XT85.6所表示的)的许可的其他应用那样来处理。因而,外部设备相对于利用应用(例如,App1)的PR的虚拟存储器空间内的信息数据项和/或可执行代码的互操作动作可以如外部应用(或者本身基本上为一应用的操作系统(OS))的互操作动作那样被约束。
附加地,开发工具185可包括被结构化为对行为良好的执行线程(例如XT85.6)和/或数据抵达尝试(例如,DATAr85.4)延伸到虚拟存储器空间中的哪里和/或行为不佳的此类对应物延伸到哪里和/或对此类行为的统计数据进行跟踪的一个或多个线路流映射模块,诸如185.5。附加地,话务流映射模块可以跟踪在逻辑上与开发中的应用(App1)的各种线程(XT)的可接受和不可接受行为(操作)相关联的时间定时(在绝对或相对(例如之前和之后)的意义上)和系统状态条件(例如,哪些其他应用正在什么状态中运行)。开发工具(诸如185.5)提供的线路流映射接着可以被用于修改各受保护区域(PR)的范围和相应属性和有条件实例化(例如,相对于时间和/或系统状态)和/或受保护区域(PR)内的各子区域(例如,行183.5-183.8)的范围和相应属性。例如,在开发周期中的早期,给定受保护区域(例如,PR2)可以最初被给予相对较宽纬度的属性,该属性允许几乎任何其他应用和/或其他PR获得对给定受保护区域(例如PR2)内的几乎所有数据的读和写访问两者,并且使其执行线程延伸进入给定受保护区域的几乎所有代码部分中。然而,在用映射器185.5运行线路流分析之际,可能发现仅两个其他受保护区域和一个其他应用实际上在预期实务的正常过程期间访问过给定受保护区域(例如,PR2)。在此情形中,给定受保护区域(例如,PR2)的属性可以被显著缩窄以仅允许所标识的两个其他受保护区域和一个其他应用进行数据访问。因而,恶意代码可以被自动阻挡无法访问给定受保护区域(例如,PR2)内的信息数据项和或可执行代码,因为进入该受保护区域的所有其他访问路径被显著缩窄的属性阻挡了。
在针对开发中的应用App1的受保护区域及其属性的细调之后,最终编译186可以被运行以产生所解说的编译后应用文件190。如图2A所示,已编译App1文件190可包含存储经声明的受保护区域及其相应的初始属性的定义的第一部分190.1。替换地或附加地,文件190可以链接到另一文件(未示出),其中该另一文件包含经声明的受保护区域及其相应的初始属性的定义的一些或全部。文件190可进一步包括用于App1的一个或多个可执行代码部分190.2、用于App1的一个或多个信息数据项部分190.3、以及用于将App1链接到其他应用包括链接到操作系统库例程和服务的一个或多个链接解析部分190.4。已编译App1文件190可以被加密(191),被存储在恰适的非易失性存储器(例如,盘192)中,接着在需要时从该非易失性存储器(例如,盘192)中被操作系统取得,被解密(193)加载到系统的主存储器部分中,被分配恰适量的存储器,被链接到其他应用或服务,并且接着如195处所指示的被启动,其中启动包括所定义的受保护区域及其属性(例如,存储在部分190.1和/或其他位置中的)的自动化识别并且其中启动还包括将PR定义和相应属性自动化转移到系统的被埋藏的元数据部分(例如,图1B的75d)中。在实施的证实被成功运行(参见181.5)之后,实施PR的固件(例如,图1B的75e/85e)被激活以实施经证实的受保护区域的约束和要求。
参考图2B,示意性地描绘了根据本公开的一示例性实施例200,其中受保护区域(PR)已经被激活。实施例200中示出的各种组件已经在上文中进行描述并且因此在此处将不再详述。然而,一些组件被显著改变。例如,所分配的应用存储器空间240'不再是统一空间,而是被分区以包括属于该空间被分配给的该应用241”的所定义的和被激活的受保护区域PR1(241")、PR2(242)、PR3(243)等等。所分配的应用存储器空间240’中未被定义为受保护区域(PR)的区域被定义为非受保护区域(NPR——由区域241’内部的虚线矩形表示)的一部分。
一个或多个专用元数据包含存储器区域(诸如被埋藏的218ee)被提供,并非作为应用代码空间240’的一部分而是在主存储器的享有专用特权的部分中(类似于保持微代码的部分)和/或在片上存储器218e的专有特权部分中或者在硬件平台210’的某一其他存储器单元中提供,其中这些元数据包含存储器区域存储基于被包括在所启动的应用240’的对象文件(例如,图2A的190)或者从所启动的应用240’指定的类似其他文件获得的PR声明代码245’创建的控制(受保护区域定义(PRD)代码)。(注意,本应用及其所分配的虚拟存储器空间在此被引用为240’。)来自被埋藏的存储器218ee的数据可以按需被高速缓存到机械封装组件的安全化其他区域218f中,诸如经修改的SoC芯片218的密闭封闭封装,如下文将说明的。(对芯片218的修改包括置备实施PR的微代码和/或硬件218e。)存储在这一专用存储器区域被埋藏的218ee中的元数据仅可以被即将描述的安全机制(218e)的固件和/或硬件部分来访问。非统一应用代码空间240’中没有被专门指派为受保护区域(PR)的部分被指派为继承非受保护区域(NPR)的一部分。受保护区域(PR)以及剩下的非受保护区域(NPR)的各个行为属性(例如,操作限制、许可或要求)将在下文进一步详细描述。如已经指示的,行为约束(例如,操作边界)可包括应用定义的R/W数据抓取约束以及应用定义的X/NX调用或线程进入执行约束。尽管App1应用的所分配虚拟存储器空间240’中不在受保护区域(PR)内部的部分被表示为非受保护(NPR),但在一个实施例中,当PR模式活跃时,NPR区域受到约束,因为它们无法访问任何受保护区域(PR)内部的数据(出于R/W目的)。然而,它们可以将执行控制传递到(线程进入或调用内部代码)PR,即便它们无法读出PR内部有什么或者盖写PR的数据。因而,受保护区域(例如,PR1、PR2、PR3等)对于NPR区域中的代码(以及对于与受保护应用241’共享虚拟存储器但是未被授权访问利用应用241’的受保护区域的受保护区域(PR)内部的数据的其他应用的代码)而言表现为暗黑区域。
参考所解说的示例200的经封装的SoC 218的内部结构,看到它以物理访问拒绝方式容纳一个或多个物理数据处理器218p,其中每一此类处理器218p的至少概念上的物理程序计数器218c可操作地耦合到第一检测单元218dx,该第一检测单元218dx在此处也被称为当前正在受保护区域中执行的(xciPR)的检测单元218dx。CxiPR检测单元218dx不仅检测该程序计数器218c当前是否正指向物理存储器(例如,高速缓存218a)中对应于其中执行当前正在进行的受保护区域(PR)的一部分,而且如果是则还确定该受保护区域的标识(PR ID)。对于剩下的非受保护区域(NPR),cxiPR检测单元218dx返回预定默认值,诸如0(PR ID=0)。此处表明,cxiPR检测单元218dx如所解说的其概念性意义比现实意义更大。这是因为在实际实现中,对当前执行正在受保护区域(例如,PR1、PR2、PR3等)或NPR中的哪里进行的检测通过将当前虚拟程序计数器(未示出)的内容与分配给每一实际受保护区域(PR)的所分配的虚拟地址空间作比较来进行。如果回答为真,则附连到其可执行代码当前正在被执行的所标识的执行中的受保护区域(例如,PR1)或者与其逻辑关联的当前约束(例如,PRD1约束,此处也称为第一受保护区域定义代码)被取得和实施。附加地,如果当前执行的代码(例如,由黑色填充点143cc’表示)正试图访问(以R/W形式)非统一App1空间240'的另一部分中一个或多个信息数据项,或者如果当前正在执行的代码(例如,由黑色填充点143bb’表示)正例如通过作出对另一受保护区域(例如,PR3)中的目标位置144aa’的调用(例如,调用子例程)来试图将执行控制接管转移到该目标位置144aa’,附连到其代码接下来要被执行和/或其数据要被读取或盖写(R/W)的所标识的目标受保护区域(例如,PR3)的当前约束被目标受保护区域(tPR)检测单元218dt取得,如图2B中概念性地指示的。目标受保护区域的标识(由tPR检测单元218dt标识为Pregion_T ID)可以与cxiPR的标识(当前正在其中执行的受保护区域——由cxiPR检测单元218dx标识为Pregion_X ID)相同。在一些实施例中,给定受保护区域(例如,PR1)可以不被允许调用同一受保护区域内部的字例程(例如,PR1的143bb’)和/或访问存储在该同一受保护区域内部的信息数据项(例如,PR1的143aa’)。在一些实施例中,给定受保护区域(例如,PR3)可以不被允许接收来自一个或多个其他受保护区域(例如,PR2、PR4)的子例程调用,和/或可以不被允许准予对一个或多个其他受保护区域(例如,PR2、PR4)或对其他应用(250’内部)的数据访问(R/W)。其他应用(例如249)可具有其自己的相应的其他受保护区域(例如PRx)也在本公开的构想内。其他应用(例如249)可以在具有其自己的与系统管理程序220'、操作系统(OS 222’)、被埋藏的存储元数据的区域218ee和被埋藏的PR实施者218的对应物的分开的硬件平台(类似210’)中执行也在本公开的构想内,其中分开的硬件平台(未明确示出)通过恰适接口(包括有线和/或无线通信接口(例如260))可操作地耦合到所解说的平台210’。
当一个或多个受保护区域(PR)被至少定义在至少分配给第一应用(App1)的虚拟存储器空间240’中时并且在PR实施者218e被激活以实施那些相应PR的约束/要求(PRD)的同时,则在非统一App1空间240’中的几乎每一个向外抵达的运算码的运行时执行期间,由PR实施者218e自动作出关于当前在其中执行的受保护区域(例如,cxiPR=PR1)的当前有效约束以及关于目标其他受保护区域(例如,对于线程XT05的情形tPR=PR3)的当前有效约束(例如,PRD3)的确定以确定是否正向外抵达其中一者。(一些指令不以其他地址的数据区域为目标;例如,寄存器ADD指令。)同样如上所提及的,在一个实施例中,PR实施者验证利用系统的专用与PR有关的运算码(例如,创建、修改或破坏PR的那些)的指令来自分配给受影响的PR的拥有应用的虚拟存储器空间(并且在一些情形中来自由同一应用拥有的已经创建的PR内部)。
图2B示出了受保护区域实施机制218e要作为个体化单元位于经封装的SoC218内部。然而,在一个实施例中,受保护区域实施机制(PR实施者218e)至少部分地以几乎所有用户软件可执行运算码的微代码来实例化,因为当前正在执行的运算码的PR ID一般将被cxiPR检测单元(诸如218dx,或其虚拟对应物)自动确定,并且如果当前正在执行的运算码正试图抵达以抓取一个或多个目标信息数据项(诸如通过操作DATAr05)或正试图将执行控制接管传递到另一受保护区域(诸如通过操作XT05),则目标信息数据项和/或目标代码的PR ID一般将被目标检测单元(诸如tPR检测单元218dt或其虚拟对应物)自动确定。在一个实施例中,预测固件可以被用于加载来自主存储器(例如,DRAM 116b)的并且在预测执行的基础上的预测的但尚未提交的操作的对应受保护区域属性(约束/要求),其中预测执行包括确定接下来成为执行受保护区域(PR)的可能PR ID以及确定接下来成为目标PR的可能PRID。由于受保护区域(PR)检测/标识测试(218dx、218dt)以及相应PR约束的加载和实施(例如,从被埋藏的元数据区域218ee取得)的重复执行,可能产生轻微的性能速度打击。然而,本公开的若干方面致力于使性能打击的程度最小化。首先,在许多实例中,当前在其中执行的(cxi)存储器区域和下一目标存储器区域对于可执行线程(XT)的长串部分往往是相同的。例如,示例性连续指令XT10到XT199可以全部在PR3内部(区域243)发生而非以区域外的信息数据项(例如,143aa’)为目标。因而,一旦(当前正在执行的PRegion_X的)对应约束被取得,它们一般不必再次被不同地取得并且不必一次又一次地被交换进入高速缓存中包含微代码部分218e。第二,现代计算机架构中在向前预测的基础上暂时执行指令是常见的。换言之,甚至在确定知晓那些特定指令将需要被执行并且通过那些预测的输入参数来执行之前,就以预测的输入参数来执行指令。受保护区域(PR)检测/标识测试(218dx、218dt)和PR约束实施固件决策制定(218e)可以作为预测指令执行过程的一部分来暂时执行。以此方式,检测/标识测试(218dx、218dt)以及PR约束实施过程(218e)的结果在需要预测执行之前或之际就是可用的。PR约束实施过程(218e)的基础结果是即将非暂时执行的指令在当前有效的PR约束之下是否被允许发生。如果否,则应用被自动停止。因而,对于要提交的向前指令,所有需要的就是设置指示该指令不违背任何当前有效的PR约束和/或要求的位。
如所提及的,受保护区域(PR)检测/标识测试(218dx、218dt)优选地以类似于系统管理程序220’的特权等级的特权等级用软件来实现,或者以严格得多的等级并且将虚拟程序计数器和虚拟目标标识寄存器用于针对当前有效的受保护区域(例如,PR1和PR2)中的相应虚拟地址(VA)来测试那些寄存器中相应虚拟地址(VA)用软件来实现。那些测试(218dx、218dt)的PR ID被存储在形成PR约束实施机制(218e)的输入的相应寄存器中。在一个实施例中,PR约束实施机制(218e)通过系统210’中不能被在客OS 222’的支持之下或者在其他软件执行的实体(例如,所安装的应用240’)的支持之下执行的软件访问的硬件和/或固件部分来实现。因而,PR约束实施机制218e对外部攻击是免疫的。在一个实施例中,受保护区域实施机制218e至少部分地被实现为用于定义物理数据处理单元218p的一个或多个主处理器的汇编代码级行为(操作)的微代码的一部分。提供用于操作微代码实现的实施机制218e(包括用于致使其执行仅有它被允许执行的某些操作)的专用运算码。
这些专用运算码之一创建了元数据保护存储器空间区域(PRM)218ee,并且在其中存储各种受保护区域属性(以及VA/PA直接转换表——参见例如图1B的72c),其中后者可仅仅被PR实施机制218e容易理解地访问。受保护区域属性可针对每一相应的受保护区域(或者针对PR的每一子部分,例如,针对PR的每一4千字节存储器页)包括读/写(R/W)许可位、可执行/不可执行(X/NX)控制位以及针对每一相应的受保护区域或其子部分的附加的其他操作约束控制或要求。
附加地其他操作约束或要求的示例可包括限制可以被读取、盖写或执行的数据/代码的类型、格式、长度、和/或序列。更具体地,一个PR的属性可要求其存储的数据包括标识毗邻代码的数据类型(例如,短整数、长整数、浮点、字符串、布尔、短指令、长指令等)的数据类型标签代码,其中这一标签可以被用于帮助调试被贴标签的代码以及提供附加的安全性。同一PR或不同PR的属性可要求其存储的数据被呈现为特定的数据类型序列,例如在其中所存储的数据表示数据库记录的情形中。同一PR或不同PR的属性可要求其存储的预定长度的数据的各块以处于具有预定最小值和/或预定最大值的范围中的连续块的所存储的时间戳之间的差来被贴时间戳。作为另一示例,同一PR或另一PR的属性可仅允许每次以4千字节块(并且可任选地仅由所选数目的读取器)并且可任选地以预定寻址次序从中读取数据。这些仅仅是示例。
仍然参考图2B,在执行期间,在接下来要执行的指令将要被执行时,实施机制218e输出有效载荷2输出信号218eo,该信号包括与所标识的且接下来要执行的指令(例如,143cc’)相关联的受保护区域(例如,PR1)的R/W许可位和X/NX控制位。它还可包括接下来要执行的指令的动作的所标识的目标(tPR)的R/W、X/NX许可位,如果此类目标存在的话(例如,当信息数据项正通过R/W操作(诸如DATAr05)被抵达)。有效载荷2输出信号218eo进一步包括当前将要执行的位置(例如,143bb’)的物理地址信号(PA)以及如果存在的话目标地址(例如,144aa’)的物理地址信号(PA)。在一个实施例中,有效载荷2输出地址是指向整个存储器页(例如,4千字节页)的物理页地址(PpgA)而非准确指向下一执行和下一目标位置的地址。在一个实施例中,受保护区域(PR)被定义到物理页的分辨率(例如,4千字节页或预定义数目的此类页)并且不再更精细。换言之,当前执行的受保护区域(例如,PR1)的属性以及目标受保护区域(例如,PR3或PR1)的属性不会以比物理存储器页的分辨率(例如,4千字节页)更精细的分辨率来改变。有效载荷2输出信号218eo的内容从元数据保护存储器空间区域(mPRM)218ee获得。因而,知道它们最近尚未被系统管理程序220’或操作系统(OS)222’的任何活动破坏,因为后者无法直接访问mPRM 218ee的内容。获得的218eo有效载荷2信号内部的物理地址信号(PA)针对从TLB硬件215获得的并且还指示当前即将执行的位置的物理地址信号(PA)以及可任选地下一动作的目标(例如,144aa’)的对应第二物理地址(PA)信号进行测试。更具体地,第二物理地址(PA)信号从由经修改的转换后备缓冲器(TLB)215输出的有效载荷1输出信号215o获得。物理地址(PA)匹配测试被表示为图2B中的匹配2(219b)并且对应于图1B的匹配2测试92。在图2B中它被称为“双源测试2”,因为其所比较的输入信号来自两个分开的数据源路径;它们中的一者通过系统管理程序将频繁使用的数据馈送到TLB而另一路径是mPRM(218ee)内容馈送通过cxiPR区域标识(218dx)机制。
匹配2确认测试219b的执行同时进行若干事项。首先,它验证系统管理程序220’表现为现在正通过从OS接收预期虚拟地址(VA)并且将它们转换成恰适的物理地址(PA)来正确操作,其中后者通常被高速缓存在TLB 215中。第二,它验证受保护区域实施机制218e表现为正通过接收当前在其中执行的受保护区域(cxiPR)的预期虚拟地址(VA)以及目标PR的预期虚拟地址(VA)(通过类似218dx和218dt的机制),基于元数据保护存储器空间区域(mPRM)218ee的当前内容(即mPRM 218ee内部的直接VA/PA转换表)将那些输入虚拟地址(VA)转换成对应的物理地址(PA)并且在其对应的有效载荷2输出信号218eo中输出那些物理地址(PA)来正确操作。匹配2确认测试219b的成功匹配指示系统管理程序220’最近尚未被干扰的高概率,因为系统管理程序220’最近将正确的VA/PA转换存储到TLB 215中。匹配2确认测试219b的成功匹配还指示操作系统(OS)222’最近未被干扰的高概率,因为OS最近将正确的虚拟地址(VA)作为输入提供给系统管理程序220’以供转换成物理地址(PA)。匹配2确认测试219b的成功匹配进一步指示元数据保护存储器空间区域(mPRM)218ee最近且同时尚未被干扰的高概率,因为mPRM 218ee最近提供与TLB 215提供的那些相匹配的正确的VA/PA转换。换言之,自动重复的匹配2确认测试219b构成具有从两个相对独立的数据源路径提供的输入的双源测试(例如,产生有效载荷1信号215o的OS的当前实例到当前系统管理程序到TLB路径,以及其中OS将经证实的PR定义提供到元数据保护存储器空间区域(mPRM)218ee以产生有效载荷2信号218eo的路径的较老实例)。为了击败该双源匹配测试,攻击者将需要找到同时改变系统管理程序220’和TLB 215以及mPRM 218ee的内部内容以使得他们的有效载荷1和有效载荷2输出匹配的方式。这将是难以做到的。
换言之,双源确认测试(诸如图2B的自动重复的匹配2确认测试219b)的值得注意的方面在于,为了击败该测试,黑客必须正确且同时哄骗两个数据源路径(一个路径产生有效载荷1信号215o而另一路径产生有效载荷2信号218eo)。在一个实施例中,TLB 215的修改使得哄骗该数据源路径更困难,因为经修改的TLB被要求输出目标PR的交换密钥标识标签(PRKT)。如果输出错误的交换密钥标识标签(PRKT),则对应的受保护区域(例如,PR3)的内容无法以明文形式被正确地交换到高速缓存218a中以供执行并且应用(例如,App1)崩溃。更具体地,并且参考图2C,TLB 215’被修改为使得当下一执行指令正以信息数据项(例如,图2B的143aa’)为目标并且目标区域的PR属性对PR实施机制并非立即可用时首先通过提交图2C的所解说的集合关联的输入来从TLB 215’中寻找它们。在一个实施例中,这些输入由ASID(地址空间ID信号)、虚拟页地址(VpgA信号)、以及目标PR标识标签(PRCAT信号)构成。作为响应,如果关联信息存在于TLB中,则有效载荷1输出信号215o’将提供目标区域的物理页地址(PpgA)、目标区域的PR属性、以及标识用于将明文版本的目标PR内容带入高速缓存存储器218a的系统硬件所需的解密交换密钥的解密标签(PRKT)。如上所提及的,每一PR(或PR的组)可具有其自己唯一的交换密钥集。因而,为了获得对每一PR的明文数据的有用访问,黑客还需要获得相应且唯一的一组交换密钥(例如,图1B的83)。没有这些,主存储器(例如,图1B的80)中或盘(例如,图1b的84a)上的对应数据可能将其自身呈现为难懂的无用数据。意外的是,由于此,对标识解密交换密钥的标签(PRKT)的破坏和/或对交换密钥本身的破坏等于对对应受保护区域(PR)的内容的破坏。因而,根据一个实施例,简单地通过破坏对应标签(PRKT)和交换密钥信息中的一者或两者来破坏每一应用拥有的受保护区域(PR,但不是其他实体拥有的任何PR)来使得信息破坏运算码对每一应用可用。任何PR的此类拥有者命令的破坏可以在应用执行期间的任何时间发生,并且优选地对其PR的所有其余PR的拥有者命令的破坏在应用通过其运行结束终止规程时发生。相应地,信息不会被留下以在拥有者应用终止之后给嗅探木马程序解密PR保护的信息数据项的机会。
仍然参考图2C,应当注意,经修改的TLB 215’的操作也基于双源数据。集合关联输入的虚拟页地址(VpgA)从系统管理程序获得,而目标ID标签(PRCAT)从mPRM 218ee获得,其中后者最终由应用(App1)的执行供应,因为每一次应用定义静态或动态受保护区域时,交换密钥和指向其的标签(PRCAT)的对应集合就被发放到应用(App1)并且被自动存储在mPRM218ee中。类似地,有效载荷1输出信号的内容215o’是双源的,因为物理页地址(PpgA)源自系统管理程序而PR属性和交换密钥标识标签(PRKT)通过创建时存储到mPRM 218ee中而源自应用(App1)。因而,为了哄骗匹配2测试,黑客将需要找到愚弄TLB硬件215’存储和输出满足匹配2测试的要求的数据的方式。
图2D示出其中目标位置是可执行代码(例如,PR3中的代码144a’)的情形。TLB集合关联输入214i通常与上文针对其中目标位置包含信息数据项的情形所讨论的那些相同。在大部分情形中,目标代码位置(例如,图2B中的144cc’)的PRCAT将与接下来要执行且控制传递接管指令(例如,图2B的PR3中的144bb’)的PRCAT相同,因为许多执行线程(例如,图2B的PR3中的XT10-XT199)将它们的执行控制保持在同一受保护区域(例如,PR3)内。因而,图2D的215o1处描绘的正常有效载荷输出与针对图2C的215o’描绘的那些具有基本上相同的内容。然而,在图2D的正常输出有效载荷215o1中存在至少一个附加字段,即,区域改变标志,在目标代码不在接下来要执行的可执行代码的受保护区域外部则该标志被设置为假。
另一方面,如果实施PR的固件检测到目标和控制接收代码(例如,PR3中的代码144aa’)与当前要被执行的代码(例如,PR1中的代码143aa’)不在同一受保护区域中,则区域改变标志被PR实施者机制自动设置为真,并且除了正常有效载荷1输出215o1之外,经修改的TLB 215”输出又一有效载荷信号215o2,其包含目标受保护区域的PRCAT以及从物理页地址(PpgA)的顶部到接下来要被执行的目标代码所驻留的确切点的偏移。这允许实施PR的固件(85e)以更高的精度来验证目标就在预期位置。如图2D所示,附加有效载荷215o2包括为真的区域改变标志,并且此外它包括调用相对于返回标志,该标志在控制放弃代码(例如,PR1中的代码143aa’)是调用指令的情况下被设置为零。在此类调用指令的情形中,实施PR的固件可以响应式地采取附加步骤以保护作出调用的执行线程(例如,图2B的XT05)的堆栈上的数据的安全。另一方面,如果因为控制放弃代码部分是将控制返回到前一调用区域的返回指令而调用相对于返回标志被设置为1,则提供略为不同的附加有效载荷,如215o3处所示。当调用返回标志被设置为真如215o3中那样,则实施PR的固件可以响应式地采取附加步骤以保护前一作出调用的执行线程(例如,图2B的XT05)的堆栈上的数据的安全。
回头参考图2B,还示出了又一且自动重复的匹配确认测试219a(匹配1)。此处,待匹配输入包括针对当前正被执行的PR子区域以及可任选地针对目标PR子区域的读/写(R/W)和执行/不执行(X/NX)许可。如同对于物理地址匹配的情形那样,该双源匹配测试219a验证系统管理程序和操作系统最近没有被破坏。如219cc处所指示的,在应用运行时期间,黑客可试图寻找和利用各种漏洞。这些寻找和利用策略之一就是仅仅使用随机猜测的App1的虚拟地址空间中的地址来执行读或写和/或执行源自所安装的恶意软件(例如,250’)内的指令。然而,在其中存在自动重复的第一和第二匹配测试219a和219b的情形中,攻击者需要同时满足双源输入路径的所有要求以及在一些实施例中还获得对每一PR加密/解密交换密钥的访问(如图2B的218hh处所指示的)。这可能是极难完成的。
此外并且如图2B的项目符号点218ii处所指示的,保护利用应用(例如App1)的每一执行线程(例如XT200)可将堆栈指针的其虚拟顶部定位成指向包括一个或多个PR属性改变的存储器区域。例如,执行线程可以将堆栈指针的其虚拟顶部指向其中NPR区域相对于PR区域被界定的存储器区域,以使得堆栈的第一部分服从NPR规则而堆栈的另一部分服从该堆栈延伸进入的PR区域的属性约束。这些PR属性约束可以阻止各种其他应用访问堆栈中延伸进入该PR区域的那部分。因而,堆栈上的专用信息数据项可以被保护免于未经授权的窥探,同时应用希望共享的那些信息数据项驻留在NPR部分中。
参考图2E,在列201之下示出了硬件、固件和软件部分210”-224”的分层图,其中统一应用/OS虚拟空间224”的各部分分别由名为A1的第一应用、名为A2的第二应用、名为Lib的一组操作系统库例程、包含特权操作系统代码和特权数据以及更高特权的系统管理程序代码和数据的区域占据。更高特权被理解为被指派给底层硬件,其中经封装的硬件和固件在218”处表示。
列202从各个应用(例如,A1、A2……)、所安装的库例程(Lib)、特权代码区域(Priv)和补充处理器(例如,Ax)的角度示意性地解说了共享存储器空间对于它们中的每一者而言看上去像什么。在列202之下并且按照从左到右的顺序是示意性地表示许可竖向相对于分层空间中的位置的视图的矩形,如第一应用A1、第二应用A2、普通库例程Lib、特权OS代码、以及如同它是名为Ax的第三应用那样被处理的外部设备X(例如,补充处理器)所看到的。简言之,对于外部设备X的情形并且如其Ax标号之上的细长矩形中看到的,设备X被阻止(否)访问称为A1D3的受保护区域内部的内容,其中后一PR由应用A1拥有并且包含标记为D3的A1的信息数据。另一方面,从Priv代码的角度,Priv代码被允许(是)容易理解地从称为A1D3的同一受保护区域进行读取和/或对其进行写入。此外,设备X被准许容易理解地从称为A1D1/A2D1’的A2拥有的受保护区域的经分段的部分进行读取和/或对其进行写入。如列202中附加地示出的,设备X被阻止(否)访问称为A2D2的受保护区域内部的内容,其中后一PR由应用A2拥有并且包含标记为D2的A2的信息数据。
参考图2E的列201,在该示例中分配给第一应用A1的虚拟存储器空间被细分为四个受保护区域,表示为PRa1.0、PRa1.1、PRa1.2以及PRa1.3。这些受保护区域中的第一个PRa1.0包含第一应用A1的可执行代码(X1)并且由允许其中(PRa1.0中)的代码仅仅被特权OS代码、PrivA1的所标识部分以及被来自其自身内部的代码(来自区域PRa1.0内部)调用的第一组PR属性管控。这些管控PR属性之一在右侧列202之下由引用为AttT1的开门OK符号表示,后者指示许可由区域PRa1.0的属性给出以成为从特权OS代码区域PrivA1作出的调用的目标。这些管控PR属性中的另一者被表示为从区域PRa1.0内部的第一执行点(黑色填充圆圈)出现并且调用也在区域PRa1.0内部的第二执行点的执行线程XT03所允许的动作。
也由应用A1拥有的第二受保护区域Pra1.1仅包含被指派为A1的D1的信息数据项。受保护区域PRa1.1由第二组PR属性管控,该第二组PR属性允许其中(PRa1.0中的)的数据仅能够被第二应用A2的所标识部分中的可执行代码容易理解地访问(R/W)。该数据访问性约束由在A2的矩形视角从框A1D1延伸以抓取PRa1.1内部的数据的经过OK的数据抓取符号AttXT2来表示。
应用A1的第三受保护区域PRa1.2也仅包含被标识为A1D2的信息数据项,其中该第三受保护区域的访问管控属性限制A1D2项仅能够被某些OS库例程访问。更具体地,Priv和Ax的相应存储器空间视角的列202的“否”条目指示受保护区域PRa1.2的保护属性阻止Priv和Ax区域中的每一者中的代码出于读取、写入或继续执行线程(XT)而容易理解地进入由PRa1.2覆盖的区域(A1D2)中。这么做的一个原因可能是应用程序A1的作者期望仅某些Lib例程将引用存储器区域A1D2并且因而如果任何其他例程试图引用存储器区域A1D2则该动作应当被第三受保护区域PRa1.2的属性阻挡。(顺便提一下,此处讨论的存储器区域A1D2的示例右侧的列202的“否”条目可以通过将引用尝试代码置于所谓的NPR区域中。如本文别处所说明的,在一个实施例中,NPR区域中的可执行代码不被允许对受保护区域内部的信息数据项作出数据访问引用。)
类似地,应用A1的第四受保护区域PRa1.3作为示例被解说为仅包含被标识为A1D3的信息数据项并且被准许仅由某些OS特权代码访问。某些OS特权代码与第一应用A1的A1D3数据之间的允许交互也由被引用为AttT3/AttX3的OK/OK R/W箭头符号示意性地指示,其中后者指示目标PR区域授予被Priv中的数据抵达代码容易理解地访问的许可并且还指示(Priv内部)向外抵达代码具有向外抵达以盖写目标PR区域(PRa1.3)中的数据的许可。更一般地,OK/OK箭头符号示出右手列202的框如何被组织以指示各个应用、例程和外部设备的仅某些存储器区域之间的允许交互,这些应用、例程和外部设备在该示例中被表示为A1、A2、Lib、Priv和Ax。
分配给第二应用A2的虚拟存储器空间被类似地细分成四个受保护区域,它们被表示为PRa2.0、PRa2.1、PRa2.2和PRa2.3。这些受保护区域中的第一个PRa2.0包含第二应用A2的可执行代码(被表示为A2X2)并且由相应的PR属性集管控,该PR属性集允许其中(PRa2.0中)的代码仅由A1、A2、Lib、Priv和Ax中的一者或多者的所标识的一个或多个部分调用而不能被其他部分调用。(注意到,在一个实施例中,NPR部分中的可执行代码能够默认地线程进入受保护区域(PR)除非被相应PR的相应属性明确组织。)在该示例中,受保护区域中的第二个PRa2.1和第四个PRa2.1’彼此间隔开(分段)并且分别包含被表示为A2D1和A2D1’的信息数据项,它们无法被Lib例程容易理解地访问但是可以由外部设备X访问(如同是名为Ax的另一应用那样被标识)。A2D1/A2D1’内容也可以由第一应用A1的所标识的子部分内的代码访问。
各个操作系统(OS)库例程和服务可以由OS针对其所分配的主存储器的Lib区域声明的对应一个或多个保护区域覆盖。尽管图2E仅示出一个此类受保护区域Pros.0,但使OS为自身声明一个以上的PR也在本公开的构想中,每一PR具有被PR实施者218”自动实施的其自己的相应的元数据定义的约束和/或要求集(还参见图2B的218e)。列202下的框219”示出第一应用(A1)中被A1的区域和目标L1区域两者的对应PR属性准许对被表示为Lq的可执行代码作出子例程调用的可执行代码部分。图2E的列201描绘了属于OS的又一受保护区域(例如,Pros.0),其中在一个实施例中后一OS拥有的PR的PR属性可仅允许调用位于第一应用(A1)或该第一应用的指定子部分内部的代码来对其作出调用。
在一个实施例中,系统管理程序不被准许具有受保护区域(PR)。另一方面,外部硬件设备(在附图中被示意性地表示为设备X)可具有它们自己的系统存储器空间部分,这些部分被细分以包括由相应外部硬件设备(例如,设备X)定义并且在外部硬件设备(例如,设备X)是本地平台210’的一部分(图2B)的情况下由本地PR实施者218”自动实施的受保护区域(例如,PRax.1)。使在本地平台210’外部的其他平台(例如,图2E中的第二平台)中实现的外部硬件设备也附加地在本公开的构想中,其中其他平台具有它们自己的相应PR实施者和被埋藏的存储元数据的区域,并且其他平台经由恰适接口电路(例如,IF1和IF2)可操作地耦合到本地平台210’(图2B),该接口电路包括用于与对应网络或其他通信介质一起使用的有线和无线通信接口。在一个实施例中,确立用于传达被允许和被拒绝的访问的协议,如在分开但在通信上互操作的平台(例如,图2E的第一和第二平台)的相应存储器空间中的受保护区域(PR)之间。
用作示例,图2E内的竖直矩形视角A2中被标识为A2D1的上分段,观察到每一受保护区域(例如,PRa2.2)可以被划分为更细的子部分,它们全都共享该受保护区域(例如PRa2.2)的一个或多个属性但还可具有指派给这些更细子组分的各子集的附加属性。例如,子部分AttA2D1.5可允许其自身仅由Ax设备访问并且不能由A1应用中的代码访问。另一方面,AttA2D1.5左侧的子部分可允许其自身由Ax设备和A1应用中的代码两者访问。并且该子部分左侧的又一子部分可允许其自身仅由A1应用中的代码访问。每一PR区域到更细分辨率子部分的划分也由列201下的PRa1.0的竖直细分来指示。在一个实施例中,子部分可以与单个物理页区域(例如,PpgAa1.02)一样小。在替换实施例中,最细的分辨率可以被限于每片段较粗略值(诸如4个、8个等)的物理页区域。在一个实施例中,每一此类子部分直接或通过索引表来标识对应的分层属性定义树中的相应点。此类树(或其分支)的根结点可定义该树(或其分支)的根结点的所有子节点共同(所继承)的一个或多个属性。对应的子节点可添加进一步约束(或可任选地盖写允许被子节点盖写的一些父约束)。因而通过标识对应分层属性定义树中的相应点,每一子部分标识指派给其数据内容的受保护区域属性。在一个实施例中,作为非受保护区域(NPR)的子部分默认零索引。相应存储器子部分的管控属性也可以用其他方式例如通过定义向虚拟存储器空间的相应范围指派它们相应的受保护区域属性的地址起始/停止表来映射。
列201和202之间的放大示例(引用为AttA1X1.2)提供了列202的被埋藏的元数据可如何被组织的示例。给定条目可以与PR标识标签(例如,具有到PR指定表的索引)相关联,其中相应受保护区域(PR)的开始、暂停、继续和结束可以被显式地或隐式地定义。PR标识标签可以间接指向子部分要从中继承其属性的所标识的PR属性树上的位置或充当指向该位置的指针。除了定义对应的PR约束之外,每一受保护区域(PR)的元数据可包括虚拟页地址(VpgA)到物理页地址(PpgA)的直接转换表,该表标识该受保护区域的所分配的子部分,以使得实施PR的固件能够自动重复测试该被埋藏的数据以通过将其与OS或系统管理程序给出的独立访问许可作比较来验证其完整性。
再次回头参考图2B,要理解图2B的所解说的示例性存储器空间中所解说的每一受保护区域(例如,PR1、PR2、PR3等)持续性是为了不使得本身相对复杂的此处启用的概念集更复杂的目的。然而,受保护区域(PR)并非各自在虚拟地址空间中具有连续区域也在本公开的构想中。每一统一受保护区域(例如,PR3)可取而代之被绘制为散布(分段)并且占据可用存储器(对OS和/或其监管的要使用的应用可用的存储器空间)的许多分隔开的部分。在后一情形中,当前有效的约束/要求的概念(如上文作为受保护区域定义代码(诸如PRD1和PRD3)简要介绍的)以及那些特定约束/要求适用的位置可以彼此分开。换言之,元数据保护存储器空间区域(mPRM)218ee的元数据可以被细分为映射元数据和约束定义元数据,映射元数据标识数据处理系统的存储器空间中由访问约束覆盖的一个或多个其他部分,而约束定义元数据为系统存储器空间中那些所标识的一个或多个其他部分定义保护性地覆盖它们的一个或多个约束和/或要求。
更具体地并且作为非限制性示例,假定图2B中没有PR2并且取而代之对应的连续存储器区域242被标记为PR3,就像存储器区域243被标记为PR3那样,除了它们之间存在中间虚线NPR空间。在后一情形中并且根据本公开的一个方面,将存在类似于图2E的约束到存储器的映射,但是将受保护区域定义代码(PRD)的预定义第一集映射到间隔开的存储器区域242和243中的每一者。该示例性的受保护区域定义代码的第一预定义集合(未明确示出——在此处也被称为约束定义元数据)可以命名为PRD3。同时,受保护区域定义代码的又一预定义集合(未明确示出)可以被命名为PRD4,它将被提供并且被绘制为应用到存储器区域247(并且可任选地其他间隔开的存储器区域——未示出);而受保护区域定义代码的又一不同的预定义集合(未明确示出)可以被命名为PRD1,它将被提供和绘制为应用于存储器区域241”(并且可任选地其他间隔开的存储器区域——未示出),其中各个PRD集合到它们的相关联的存储器区域的映射由上文提及的所谓的映射元数据提供。换言之,适用的受保护区域属性的定义(PRD)作为来自对象(例如,映射元数据)的单独逻辑对象(例如,约束定义元数据)来提供,其将PRD(受保护区域定义代码或属性的集合)映射到可用存储器空间内的特定区域(例如,242)。以上对具有其自己的受保护区域定义代码或属性的私有集合的每一受保护区域(例如,PR3)介绍性和第一描述仅仅是被映射到一个或多个不同的存储器区域(例如,通过映射元数据)的受保护区域定义代码或属性的相应集合的更宽泛概念的子集。
附加地并且进一步根据本公开,相应PRD(受保护区域定义代码集)到可用存储器空间的各个区域的映射不必是一对多(或一对一)的。形成相应PRD(受保护区域定义代码集)的逻辑并集也在本公开的构想内。更具体地,图2B的受保护区域属性管控(覆盖)存储器区域243(示为PR3)的总和可以被形成为两个或更多个受保护区域定义代码集的逻辑并集,例如PRD3a和PRD3b(未明确示出,但其中并且其中表示逻辑并集运算)。然而,允许两个或更多个受保护区域定义代码集的此类逻辑并集的各实施例复杂得多,因为设计者可能无意地尝试将具有相对松散(比如关于哪些其他应用可以抓取给定存储器区域(例如243)中的信息数据项)的属性的第一PRD与具有较约束的相同属性(例如,仅允许两个命名的其他应用尝试和抓取信息数据项)的第二PRD进行逻辑合并。在此类情形中,PR实施者被设计为检测要被合并的属性之间的冲突并且总是实施较严格的那一个。这避免了较松散的(更多许可的)属性被无意地与较严格的(更少许可的)属性合并的可能性,其中较松散的(更多许可的)属性控制并且藉此向设计者不旨在向其暴露的其他实体(例如,其他应用)暴露专用信息数据项和/或专用可执行代码。换言之,太过安全并且关闭执行与太过松散并且允许专用信息被暴露总是较好的。
此外,尽管出于简明性的考虑图2B将受保护区域(PR)呈现为如同它们被固定位于虚拟存储器空间中那样,但指派到相应应用的信息数据项和/或可执行代码的保护性属性被绑定到它们自身的数据项/代码并且不被绑定到是数据项/代码恰好驻留的位置也在本公开的构想内。换言之,如果操作系统(OS)和/或系统管理程序决定重新安排相应应用的信息数据项和/或可执行代码要被放置在虚拟存储器空间中的位置,则那些被重新定位的数据项/代码的PR属性标识符伴随它们移动。这就是为什么一般来说PR覆盖区域往往会分段,因为操作系统(OS)和/或系统管理程序随着时间重新安排相应应用的信息数据项和/或可执行代码被放置在虚拟存储器空间中的位置。根据本公开,OS和/或系统管理程重新定位相应应用的信息数据项和/或可执行代码的决策在被最终执行之前被传达给PR实施者,以使得PR实施者将准许对应的PR约束(属性规范)伴随它们的相应经重新定位的信息数据项和/或可执行代码一起行进。
如上所指示的,存在可作出的多种设计折衷,其中的一者是实现两个或更多个受保护区域定义代码集(PRD)的逻辑并集但同时使由此造成需要处理逻辑合并的PRD之间的潜在冲突的设计复杂化(并且减慢了PR实施者的性能)。多种设计折衷中的另一者涉及映射元数据的粒度。它可以向下提供到4Kb存储器页的分辨率,或者它可以变得更粗略并且不允许PRD到小于比如每64Kb的单元的分辨率的相应存储器区域的映射。涉及折衷的又一者涉及可由受保护区域定义代码集中的每一者定义的不同种类的行为约束/要求(操作限制和/或要求)的数目。再一次,较多数目的不同种类的行为约束/要求可以使由此造成需要测试较多数目的不同种类的行为约束和/或要求中的每一者的顺从性的涉及复杂化(并且溅满了PR实施者的性能速度)。
更简单地来说,每一PR基础上或每一PR子部分基础上的它们的属性和实施可逐实施例地改变。以下表1和2描述了此类实施例,其中要理解各种变体和折衷是可能的。
表1:
表2:
以下的表3提供了目前覆盖的一些特征的审阅。
表3:
参考表3中最底部的条目以及参考图2C-2D,一般来说,在当前指令驻留在第一受保护区域(例如PR1)中时,经修改的TLB硬件215’-215”将提供目标其他受保护区域(例如,PR3)的PR属性信息和交换密钥标识信息。然而,不时地存在TLB未命中。在此情形中,实施PR的固件/硬件执行通过包含被埋藏的存储器区域218ee的表的元数据的查走和搜索。这与直接从经修改的TLB 215’-215”获得所需信息相比消耗更多时间。根据本公开的一个方面,通过包含被埋藏的存储器区域218ee中的表的元数据的查走和搜索可以与系统管理程序通过其多级转换表进行查走和搜索以寻找对应的物理客页到物理页转换以填充到TLB中并行地执行。当两个查走和搜索通过操作并行进行时,服务实施PR的硬件/固件的一个查走和搜索通过操作通常比由系统管理程序执行的用于填充由于TLB未命中导致的其他未命中数据的查走和搜索通过操作花费更少的时间。因而,在此情形中,包括PR服务查走和搜索通过操作完全不影响系统的执行速度。即便对执行速度有影响,与通常由系统管理程序响应于TLB未命中而执行的多级查走和搜索通过操作相比,性能打击相对较小。
除了创建其内容和属性在没有证实校验抓到的试图修改的情况下无法被修改的受保护区域(PR)之外,一个实施例提供了使用后确保受保护区域及其属性的破坏,以使得使用后(释放之后)PR内容和属性无法被稍后抵达的恶意应用劫持使用。根据一个此类实施例,每一拥有PR的应用负责在它终止之前例如通过要求OS发送全局的破坏我的PR运算码到PR实施者218e(PR实施者218e接着消灭来自被埋藏的元数据区域218ee的对应元数据(包括密钥标签)并要求硬件破坏实际交换密钥(如果预先指定的PR群中的任何其他PR不再需要))来破坏其自己的受保护区域。终止应用还负责调用远程证实挑战,该远程证实挑战将示出在被埋藏的元数据区域218ee中没有针对该应用的其余受保护区域(PR)。替换地或附加地,操作系统(OS)的存储器空间解除分配例程自动发送全局的破坏PR应用N的运算码到PR实施者218e,PR实施者218e接着消灭来自被埋藏的元数据区域218ee的对应元数据。
提供仅消灭由消灭请求应用拥有的受保护区域(PR)的指定子集的运算码也在本公开的构想内。换言之,根据特定实施例,相应应用不仅可以向相应远程方(和/或同一系统上的其他应用)关于加载到它们的受保护区域中的初始内容以及加载到“被埋藏的”元数据区域218ee中的属性进行证实;而且它们还能够向远程方(和/或同一系统上的其他应用)证实对个体受保护区域或者它们的全部受保护区域的使用后破坏。当完整构成受保护区域的应用希望终止时,它可以在其受保护区域的终止和破坏之后请求事后证实。事后证实不会降低应用性能,因为该应用已不再运行。然而,它可以确保该应用处于它将要消灭所有其PR内容并且向实施PR的硬件/固件请求针对其属性PR ID和交换密钥也这么做的状态中。对用于加密和解密受保护区域的密钥的破坏将其内容呈现为无意义的。因而之后抵达的应用或虚拟机无法试图利用不再使用的受保护区域的留下的内容。
根据特定实施例,应用还可向远程方证实它们正在成功向硬件、固件或软件提供者(例如MicrosoftTM)证实固件、HV和加载的OS软件的序列和内容的系统平台上运行。这包括系统配置和/或特定系统(如果需要的话)。证实硬件可以确保没有固件或软件能够以错误地说服挑战者该系统和应用是正确的方式来对证实挑战作出响应。
参考图3的流程图,现在将描述过程300,其中应用程序被创建并且被开发以使用受保护区域。在步骤310,在没有在应用内声明任何受保护区域并且没有与其他应用交互的情况下,新的应用被创建和开发(例如,源代码被编写、编译、自己运行和调试)。在步骤312,最初开发的应用被插入模拟环境(例如,图2A的185),该模拟环境模拟其预期的现场环境,包括对第一应用被设计成与其交互的其他应用的模拟或实际使用。在该模拟期间,线路流映射器(例如,图2A的185.5)被用于自动地映射线路流行为(例如,由相应执行线程通过虚拟存储器取得的路径)以及相应执行线程的定时(例如,如在相应执行线程之间的相对执行次序)以及相关系统状态条件。如上所提及的,最终是人类应用开发者来决定应用的哪些部分应当在PR和NPR区域之一中或另一者中以及特定PR的属性应该是什么。此处描述的开发工具可以被认为是用于帮助人类应用开发者作出他们的决策的补充工具或辅助工具。
在步骤314,用于标识行为良好和行为不佳的(例如,产生异常标志和不产生异常标志的)执行线程的软件开发辅助工具与线路流映射器提供的线路流映射相结合地使用以标识行为良好的流与行为不佳的流在虚拟存储器中的一般位置。线路流映射进一步与行为良好的和行为不佳的线程的自动标识相结合地使用以标识在抵达它们应当抵达或不应当抵达的信息数据项时以及抵达将执行控制转移到它们应当向其转移控制或不应当向其转移控制的其他线程时相应线程抵达的位置。此外,映射可以提供关于良好行为或不佳行为的绝对或相对定时的信息和/或关于现存系统状态的信息,并且应用的开发者可以使用该信息来基于定时和/或系统状态来有条件地创建、破坏或修改各个受保护区域(PR)。
使用在步骤314确定的位置标识,在步骤316,相应受保护区域(PR)以及指派给每一受保护区域的属性的位置被自动和/或手动确定,以藉此允许所标识的行为良好的线程按期望执行同时阻止所标识的行为不佳的线程执行不期望的实务。
在步骤318,定义供测试的应用的代码的源或其他应用被修改为声明相应受保护区域及其相应属性的位置。例如,在图2A的部分181中,在PR相关的声明(诸如181.2、181.3、182、182.1、182.4等)尚未存在的情况下,这些PR相关的声明现在被添加并且源代码被重新编译。在此阶段,与证实有关的声明(诸如181.5和182.3)尚未被激活。连续的受保护区域可以一个接着一个地被激活,并且应用在步骤318中通过它们进行重新测试以验证该应用继续按期望在模拟环境中执行,即便在连续受保护区域(PR)生效时。当然要理解,与其他尚未被实现的PR有关的已经生效的PR的属性被禁用,直到其他PR生效。
在应用与其所有PR激活的操作性被确认之后,源代码中与证实相关的部分被激活,并且模拟证实在具有或不具有一次性随机代码的情况下运行以确定具有或不具有随机代码的对应结果。(图2A的185.2处给出的示例示出了没有随机代码的情况下进行测试的情形。)
接着在步骤320,应用的beta版本被安装在现场以用于由所标识的beta测试者进行测试,其中beta版本激活了它的受保护区域,激活了它的证实特征,并且beta版本被启用以与其他现场应用和/或外部设备交互。
在步骤322,应用开发者等待并且接收来自现场beta测试者的各种漏洞报告,包括与各个受保护区域(PR)及其相应属性的程度定义有关的漏洞报告。
在步骤324,确定是否存在尚待解决的任何严重漏洞。基于优先级对期望解决方案进行排序并且按照该排序来进行工作。一些期望解决方案可涉及对各个受保护区域(PR)的配置。因此,在步骤325(假定对测试324的回答已经是是),作出通过修改受保护区域的数目、通过修改受保护区域在存储器中的相应程度和/或它们的相应属性以便使得原本被阻止但合法的应用按期望地与beta阶段的应用进行交互来作出解决与PR有关的漏洞的尝试。步骤325的修改可附加地或替换地改变受保护区域配置,以便阻止新发现的违法应用(例如,由beta测试者发现的或由应用性能的远程监视发现的)恶意地或以其他方式与beta阶段的应用交互。
在步骤327,beta应用的经更新版本(包括对其PR配置和/或beta应用的其他方面的可任选的修改)被释放到现场以供进一步的beta测试并且该过程循环回到步骤322。
最终,测试步骤324处的确定是不存在与beta版本的应用的PR配置或者beta版本的两个其他方面有关的任何严重漏洞,并且接着在步骤334最新版本作为alpha版本被发布并且由大众用户进行测试。
在步骤332,应用的开发者等待并且接收来自应用的受信现场alpha测试者的漏洞报告。步骤334继续确定这些漏洞中的任一者是否是严重的并且因而要求立即解决。如果否,则该过程循环回到步骤332。如果是,则该过程继续到步骤325的alpha版本(被标识为步骤335的alpha版本),其中与PR配置和或alpha版本的其他方面有关的漏洞被解决,并且接着该过程循环直到步骤334以继续使用应用的最新版本,包括使用其最近的PR配置。
图4是描绘受保护区域(PR)赋予的应用的安装和完整性验证阶段400的流程图。在步骤410,操作系统代码的特权部分接收针对给定应用(例如,App1)的启动命令并且取得经预编译的应用文件(诸如图2A的190),该经预编译的应用文件包括初始受保护区域(PR)配置定义,诸如针对已编译应用文件的部分190.1所指示的。
在步骤412,其他特权OS代码扫描取得的文件以获得活跃受保护区域的声明。更具体地在图2A的示例中,OS可以扫描指示该应用将使用受保护区域功能的声明,诸如181.2。附加地或替换地,OS可以扫描指示要被启动的应用(App1)正请求创建其应用拥有的保护区域(例如,名为“App1_PR1”)中的一者或多者并且定义或重新配置相应保护区域的对应属性(例如,Atts_PR1)的声明,诸如182。自动化OS扫描可进一步通过定位PR终止声明(诸如图2A的182.4)来标识所声明的PR的程度。
附加地,在步骤412中,OS自动确定用于启动该应用(例如App1)将需要的虚拟存储器的量并且要求系统管理程序分配对应量的虚拟存储器并且生成相应的多级分层转换表,该多级分层转换表用于将虚拟存储器地址(VA)转换成客物理地址(GpA)并且接着转换成实际物理地址(PpgA)。在这一阶段期间,OS至少针对相应受保护区域(以及可任选地针对PR的声明的子部分)的开头和结束来跟踪虚拟地址到客物理地址的转换,因为从这些导出的数据将被不久之后被存储在被埋藏的元数据区域中。
在步骤414,特权OS代码要求硬件发放针对声明的PR的长度很长的标识、针对这些PR ID发放较短的标识标签,针对相应PR发放相应长度很长和安全的交换密钥,以及针对这些交换密钥发放较短的标识标签。发放的长度很长的标识应当是唯一的ID,每一个ID被安全地绑定到相应PR的内容(例如,其中该ID包括其相应PR的内容的强加密散列),
参考步骤416,直到此之前,OS已经访问了PR定义、它们的属性的相应定义、以及PRID的标签及其相应的交换密钥。然而,在步骤416,特权OS调用新创建的运算码(例如,IPR0)来将该信息连同相应PR和/或所定义的它的子部分的一页直接VA到PA转换页一起移动或复制到硬件的被埋藏的元数据区域218ee中。如上所指示的,OS无法容易理解地读取被埋藏的元数据区域218ee内部的内容。只有PR实施者硬件/固件218e能够这么做。
在步骤418并且根据一个非限制性示例实施例,一个或多个倒数计数器被启动以对何时证实需要被调用或完成的相应时间或其他计数进行倒数。其他计数可以是启动应用(例如,App1)的特定执行事件以及启动应用执行的指令数目。接着,应用被启动以开始执行其初始指令。例如,这些可包括图2A的181.5。在替换实施例中,不使用倒数计数器。取而代之,证实被系统管理程序、OS之一调用或者从应用的NPR部分之内被调用。
在步骤419,操作系统和所启动的应用(例如,App1)中的至少一者调用要从所启动的应用的拥有者的远程服务器或者要从由拥有者指派的恰适其他设备或由拥有者指定的代表发放的证实挑战。被调用的证实挑战致使OS使用新的第二运算码(例如,IPR1),该新的第二运算码致使PR实施者将其被埋藏的元数据区域218ee内的元数据流传输到硬件散列器(例如,图2B的212)和硬件加密器(213)以供后续传送回到证实挑战者。除了将被埋藏的元数据区域信息流传输通过散列器和加密器之外,OS可以可任选地将它们流传输通过相应受保护区域(PR)中已经将自身声明为证实链的一部分的内容。此外,OS将从挑战者接收到一次性随机代码,OS也将该一次性随机代码流传输通过散列器和加密器(例如,212/213)。在另一端,挑战者确定经散列和加密的流是否是针对其中被埋藏的元数据没有被破坏并且证实链中的受保护区域(PR)的内容也没有被破坏的情形所预期的。如果是,则挑战者往回发送恰适的数字签名的证书以证实被挑战信息的完整性。在一个实施例中,OS需要将数字签名的证书呈现给PR实施者218e。一旦PR实施者接收到证实挑战已经被成功满足的恰适保证,则PR实施者翻转为真,并且证实完成它的标志并且停止证实倒数计数器。步骤420指示如果计数器中的一者或多者倒数到0并且证实挑战尚未被成功满足则应用被自动停止。如上所指示的,倒数可以是与时间相关的、与事件相关的和/或与指令执行相关的。取决于应用拥有者来确定为了允许应用继续执行证实挑战完成约束中的哪些以及其中的多少需要被满足。
在步骤422,证实完成标志已经被翻转为真并且PR实施者218e允许所启动的应用(例如,App1)中的其余指令开始执行。在替换实施例中,不能访问PR的任何一个部分,直到整个PR被例如系统管理程序或OS调用的证实挑战的确认。
参考步骤425,当其余指令开始执行时,PR实施者218e自动开始执行匹配1和匹配2确认测试,如步骤427所指示的。如果这些中的任一者失败,则在步骤429应用被自动停止并且产生异常标志。
在一个实施例中,经增强的TLB硬件执行匹配测试,如先前对所有数据和代码取得所讨论的。在替换实施例中,PR实施者218e附加地对于应用的每一接下来要执行的指令(或推测要被执行但尚未提交的指令)进行确定,并且在步骤430,确定该指令是否要作出对当前执行的代码的PR内、另一PR内、主存储器的非受保护区域(NPR)内、或正同时向其传递执行控制(例如,通过CALL指令)的另一PR内的信息数据项的读或写(R/W)抓取。附加地或替换地,PR实施者218e在步骤430确定接下来要执行的指令是否将执行控制传递给另一PR内、或主存储器的非受保护区域(NPR)内的可执行代码,并且如果是,则该执行控制的传递是通过CALL指令还是通过直接线程进入另一可执行代码(例如,等效于JUMP TO指令)。
如果回答为否,意味着接下来要执行的指令未将执行控制传递到另一区域并且未对可能经受保护的信息数据项进行抓取,则该过程继续到步骤433,该步骤允许接下来要执行的指令进行执行。接着,PR实施者循环回到状态425以重复执行步骤427处的匹配确认测试和步骤430的保护和实施测试。尽管以序列来示出,但测试427和430被并行执行也在本公开的构想内。
如果对测试430的回答为是,意味着接下来要执行的指令要么将执行控制传递给另一区域和/或它正在对可能经受保护的信息数据项进行抓取,则该过程继续到步骤432。在步骤430,PR实施者自动验证允许接下来要执行的指令被执行、以及可任选地对经受保护的信息数据项作出读或写抓取、以及可任选地将执行控制传递给当前受保护区域外部的下一可执行代码的PR许可属性的存在。如果存在违背,则下一步骤434自动致使应用停止如435所指示的并且产生异常标志。如果否,则步骤433被执行,以允许接下来要执行的指令继续其操作,该操作可包括对经受保护的信息数据项进行读或写抓取和/或将执行控制传递给当前受保护区域外部的下一可执行代码。
图5是描绘存在TLB查找未命中时可以采用的过程500的流程图。在步骤510,集合关联输入被应用于转换后备缓冲器(TLB)。在图2C和2C中示出示例,例如在214i处。虚拟页地址(VpaA)可以源自操作系统或系统管理程序。对PR的接下来要执行的指令以及可任选地接下来是目标的其他代码或信息数据的标识源自正在执行的应用并且由长度较短的PR ID标签来表示。
在步骤512,TLB硬件试图寻找匹配的有效载荷数据。相应输出有效载荷的示例在图2C和2C中示出,例如在215o’处。如果期望信息被找到(是路径514),则控制通过两个步骤521和522。在步骤521,系统管理程序使用所需的TLB高速缓存的交换标签(PRKT)和物理页地址(PpgA)来寻找目标数据的物理位置以及可任选地解密该数据并且将其交换到系统高速缓存中。在步骤522,PR实施者使用TLB高速缓存的PR属性来实施接下来要执行的指令和/或以及可任选地目标信息数据项和或被调用的可执行代码的对应约束和/或要求。
如果尝试步骤512的结果指示有效载荷不存在于TLB中(否路径516),则控制通过并行执行的步骤518和519。在步骤518,PR实施者查走存储在被埋藏的元数据区域218ee中的一页转换表以寻找未命中的PR属性、R/W/X许可、以及用于其在匹配1、匹配2确认测试(例如,可以是使用更限制性的许可的并集的测试)中使用的物理地址以及属性实施操作。同时在步骤519,系统管理程序查走多级VA/GpA/PA转换表以用于将其输入提供给匹配2双源确认测试(例如,图2B的219b)。在步骤520,未从TLB中命中的数据被更新到TLB中。控制接着被传递到步骤521和522。值得注意的是,因为步骤518和519的表查走步骤是并行执行的,所以PR实施者表查走(步骤518)的存在并不对整体系统施加显著的性能变慢。PR实施者查走的一页表往往比系统管理程序使用的多级VA/GpA/PA转换表小得多。因此即便系统管理程序不需要进行查走但PR实施者需要,对性能速度的影响也是相对较小的。
图6是描绘当受保护区域的数据从通用存储器被交换到经封装的高速缓存存储器中时可以使用的过程600的流程图。步骤605提供了PR实施者的正常操作的示例,其包括标识接下来要执行的指令以及可任选地其下一目标信息数据项和/或向其转移控制的可执行代码的相应受保护区域(PR)。步骤605中的操作有时要求PR实施者确定接下来要执行的指令的本质和或其认可选的下一目标信息数据项和/或向其转移的可执行代码的本质。为此,PR实施者需要那些代码的明文版本。如果所需明文版本并未已经存在于经封装的系统高速缓存(例如,图2B的218a)中,则它们需要被解密并且从较不安全的存储器空间被交换进入(例如,图2B的116)。
如上所提及的,每一受保护区域(PR)可具有其自己的唯一交换加密和解密密钥。在一些实施例中,多个受保护区域(PR)的相应子集使用不同的交换加密和解密密钥集。在步骤610,接下来要执行的以及目标代码的受保护区域(PR)的标识被确定。在步骤612,确定相应受保护区域(PR)或那些PR的包含接下来要执行的指令和对应目标数据的相应子部分的相应明文内容是否已经存在于系统高速缓存中。如果是,控制被传递到步骤618,其中PR实施者取得所需的明文内容以在其属性实施操作中使用。
如果确定步骤612的结果为否,则控制传递到步骤614,其中要被交换进入PR的内容的标签被获得,对应的交换密钥被获得(由底层硬件),并且接着在步骤616,所获得的交换密钥被(由底层硬件)用来解密交换进入的新高速缓存数据。在一个实施例中,尽管交换密钥标签被保持在TLB中,但实际交换密钥被硬件秘密保持(不在被埋藏的元数据区域218ee中),并且因而仅能够被底层硬件容易理解地访问而且不能被任何用户软件、操作系统软件、或系统管理程序软件或甚至PR实施者访问。因而,受保护区域的明文内容被保持安全,并且仅在经封装的系统高速缓存中且仅在PR实施者和底层硬件的监督之下被转换成明文。
根据某些实施例,被埋藏的受保护区域元数据区域还存储指示受保护区域(PR)当前位于哪里的主存储器的地图。图2E的列210可以表示此类地图。受保护的主存储器地图对于如4千字节页边界那样小的分辨率可以每页一位那样简单(如果受保护则为“1”并且如果不受保护则为“0”)。替换地或附加地,树结构的图可以被使用。
在某些实施例中,长度较短的PRCAT标签可以是例如8到12位,而长度较长的受保护区域标识大得多,例如32位。在一个实施例中,两个PRCAT代码被保留以表示不在相应受保护区域内的特权和用户虚拟空间。
根据某些实施例,受保护区域被细分为子部分,每一子部分可具有其自己的子页属性。子页属性可以被用于控制对例如4千字节物理存储器页的每一64或256字节部分的读和/或写访问。
在一些实施例中,硬件限制和/或性能考量可需要限制将受到支持的受保护区域的数目和/或将被立即交换进入高速缓存中的受保护区域的大小。实际限制可以成百甚至上千PR。在一个实施例中,软加开发工具对其中源代码试图超过应用可具有的受保护区域的最大数目的情况作出标志。
受保护数据区域的数目不直接影响硬件成本和性能。各实现可支持任意大的数目。主要考量是用于属性的主存储器空间以及属性的完整性校验。各实现可根据性能相对于被校验存储器大小的折衷而非固定的硬件限制的完整性校验。
根据某些实施例,受保护区域对非受保护区域的访问可以类似于对特定其他受保护区域的访问来实施。作为每一受保护区域(PR)的属性,受保护区域硬件和固件可允许或不允许对非受保护区域(NPR)的访问。受保护区域架构不限制非受保护区域对非受保护区域的访问。现有的HV和OS限制继续适用。
受保护区域架构不改变现有的客虚拟到客物理到物理(或主机)页表或者HV和OS对它们的管理。
根据某些实施例,受保护区域在应用的虚拟地址空间中是线形区域。受保护区域可包括任何支持大小的页,例如,4千字节、64千字节、2兆字节、以及1千兆字节。应用可具有多个受保护区域,并且完全由一个PR组成或者由多个受保护区域和NPR的混合组成。
受保护区域可以通过将其自身结构化为多个受保护代码(以及代码和数据)区域并且通常为多个受保护数据区域,指定哪些代码区域可以访问每一数据区域,指定哪些代码区域可以读和/或写一些数据区域的子页部分,以及指定哪些代码区域可以进入每一代码区域来帮助应用保护其整体完整性免于同一应用的其他部分(例如,由不同编码组编码的)或者保护某些部分免于该应用的其余部分。
受保护区域还可通过仅允许OS、IO组件、专用处理器以及其他应用中的一些或一部分访问特定受保护数据区域中的数据和/或特定受保护数据区域的所选页,指定特权非受保护区域代码能够进入应用的哪里,以及指定非特权非受保护区域代码能否进入应用以及能够进入应用的哪里来帮助应用保护其自身免于OS、IO组件、专用处理器以及其他应用。
在某些情景中,应用可通过使用单独的受保护区域来与OS共享数据来使得它与OS的对接相对不被改变。它仍然可以限制特权模式的代码并且单独地限制共享库和其他用户模式代码访问作为数据的特定页。
根据某些实施例中,应用创建(声明)它们相应的受保护区域和/或经由OS动态修改它们,因为OS必须知悉它们的存在。替换地或附加地,应用可以直接与受保护区域固件(PR实施者)交互以动态改变它们的受保护区域的一些属性。OS还可创建应用将拥有的受保护区域,并且在启动应用之前准备部分证实信息。
根据某些实施例,除现有架构以外,硬件对每一受保护区域应用执行和数据访问控制。根据某些实施例,硬件用对一个区域或者一个区域群唯一的会话密钥来加密受保护区域。硬件生成并处理密钥。没有CPU或安全处理器软件知晓密钥值。当密钥不再被需要时硬件破坏密钥,并且因而受保护区域内容的加密版本变得无意义,即便在拥有应用终止时没有被正确地破坏。
根据某些实施例,硬件用恰适的驻留会话密钥来加密每一受保护区域的主存储器驻留的页。加密算法优选地对于小块是低等待时间的,包括CPU高速缓存线,并且可以纳入由物理地址修改的白化值。
根据某些实施例,当向外交换到其他存储中时以及相反地交换进入存储时,硬件用恰适的非驻留会话密钥和地址无关的算法来解密并重新加密每一受保护区域的页。受保护区域硬件和固件可以维护交换出去的页的SHA2 256位散列。该散列包括ID和版本信息。受保护区域硬件和固件以加密且完整性受保护的主存储器来维护散列,或者当向外交换到其他存储时以加密和签名来维护散列。
根据某些实施例,受保护区域具有将供加密的区域进行分组、实现主存储器加密并且单独地非驻留加密的属性。这些和其他属性可以是受保护区域证实的一部分。受保护区域拥有者可以在证实之后改变一些属性但不能改变加密。架构不允许属性改变,除非如所提及的使复杂度最小化(对于大部分情况细节仍待确定)。拥有者可以锁定许多可改变的属性以阻止进一步的改变。
受保护区域拥有者(例如,应用)指定哪些包含代码的受保护区域和系统组件能够访问访问作为数据的它们的受保护区域中的每一者。它们还指定包含代码的它们的受保护区域中的哪一者能够访问非受保护区域。该架构不允许非受保护区域访问受保护区域,除了在特权代码是非受保护区域的情况下对指定受保护区域的特权访问。
架构可实现从执行受保护区域、非受保护特权代码、以及系统组件的角度的数据访问。这指示哪些受保护区域(或非受保护区域)可以进行受保护区域访问数据,并且其中受保护区域可以是专用处理器、IO组件、或非受保护特权代码访问数据。
受保护区域硬件和固件使用和维护与实现有关的元数据,如上参考对确认对受保护区域的访问所略述的。架构不改变现有的客虚拟到客物理到物理(或主机)页表或者HV和OS对它们的管理。现有的基于页的访问属性继续适用。
该架构可包括用于页表中的受保护区域的基于页的访问属性,受保护区域硬件和固件使用和维护该属性。
该架构可以作为受保护数据区域的选项来提供子页访问控制。作为一个示例,这些可适用于4千字节页的每一64到256字节部分。它们可以允许或阻止针对只读页的访问,并且允许或阻止针对具有读和写访问的页的写入。受保护区域拥有者可以改变和锁定子页属性(在子页、页或区域的基础上进行锁定)。子页属性是可任选的,因为它们增加了属性空间和时间以在TLB未命中期间检查受保护区域属性。
根据某些实施例,受保护区域在创建之后无法在应用虚拟空间内移动,其中这一限制降低了复杂度。主存储器页可移动。受保护区域硬件和固件移动作为HV和OS的受保护区域的一部分的主存储器页。PR实施者架构不介意客物理地址,因为它仅与VA和PA工作。受保护区域硬件和固件管理主存储器访问、加密和OS在主存储器和其他存储之间移动的受保护区域页的完整性保护。
根据某些实施例,受保护区域拥有者指定包含代码的它们的受保护区域的入口点。它们指定哪些受保护区域可以进入,在它是非受保护区域的情况下特权代码是否能够进入,以及非特权非受保护区域是否能够进入。取决于实现,可能对入口点的数目、每页的数目、以及要确定的每区域或条目的限制是否适用存在限制。根据某些实施例,受保护区域入口限制不适用于系统调用。
根据某些实施例,当受保护区域调用另一受保护区域,则每一受保护区域必须访问许可区域中的数据以避免违背。根据某些实施例,调用者的堆栈在作出调用时必须处于共享区域中以将返回地址保存在可访问的位置中以供返回。这使得对现有架构的改变最小化,但是硬件除了现有架构之外保存用于返回确认的返回地址。调用者可以在作出调用之前将其堆栈(其堆栈指针的顶部)从其自己的受保护区域或其他私有受保护区域切换到与被调用区域的受保护数据区域。调用者可以在共享区域和寄存器中传递参数。调用者应当在它将其堆栈移动到共享区域之前移除它不希望与寄存器共享的秘密。
根据某些实施例,受保护区域拥有者指定包含代码的它们的受保护区域中的每一者能否调用非受保护区域。根据某些实施例,调用者的堆栈在作出调用时必须处于非受保护区域(NPR)中以将返回地址保存在可访问的位置中以供返回。调用者应当在它将其堆栈移动到非受保护区域之前移除它不希望与寄存器共享的秘密。硬件保存返回地址以供确认就像它对于受保护区域的调用所做的那样。
根据某些实施例,受保护区域拥有者指定包含代码的它们的受保护区域中的每一者能否作出系统调用。硬件除了现有架构之外还保存返回地址以供返回确认。类似于调用另一受保护应用区域,特权受保护区域或特权非受保护区域可仅访问应用朱旭的受保护应用区域中的数据。在特权代码是非受保护区域并且调用者正在非受保护特权代码无法访问的受保护区域中执行的可能情况下,它在作出调用之前将它的堆栈切换到与非受保护特权代码共享的受保护数据区域。调用者可以在共享区域和寄存器中传递参数。调用者应当在它将其堆栈移动到共享区域之前移除它不希望与寄存器共享的秘密。
中断、故障和陷阱将执行转移到特权OS代码。硬件保存应用状态,并且用受保护区域架构定义的状态来替换该应用状态以便在遵循现有架构之前维护应用隐私。OS支持的受保护区域不尝试访问受保护应用区域数据来处理中断、故障和陷阱。硬件在返回时恢复真实的应用状态并且确认返回地址。
根据某些实施例,当存在对受保护区域入口点的多个调用时,硬件可以在进入之后可任选地阻塞入口点直到受保护区域解除阻塞。该选项可以是每区域的而非每入口点的。使用该选项一般会具有阻塞和解除阻塞的某种性能效应。对于共享库以及在应用创建的受保护区域之间可能不是有用的。
包含代码的受保护应用区域可以可任选地指定用于解决OS未解决的潜在可恢复的故障和陷阱的入口点。这些包括诸如除以0之类的故障、以及软件中断和断点。该入口点可以总是阻塞附加进入,直到受保护区域解除阻塞它。应用故障和陷阱处理代码可以确定故障发生和故障或陷阱类型,以及来自保存在受保护区域中的信息的应用状态。
根据某些实施例,从正在执行的受保护区域或非受保护区域的角度,该架构确认调用和系统调用。这是受保护区域或非受保护区域能够进入哪些受保护区域。出于简明起见,该架构可以限制所选类型的调用和返回(以及系统调用、中断、故障和陷阱)转移进入受保护区域或者转移出受保护区域。包含代码的受保护区域的属性可以禁用受保护区域入口点校验和阻塞。单独的属性可以禁用保存和确认返回地址。
根据某些实施例,受保护区域SoC包含安全复合,包括安全处理器和相关硬件。安全复合引导系统,并且生成为安全处理器、HV、OS和受保护区域加载的固件和软件的证实测量。
根据某些实施例,安全复合根据OS和受保护区域拥有者的请求生成受保护区域的证实测量。受保护区域硬件和固件可以在OS启动应用之前最终化应用受保护区域证实。该应用可使OS创建附加受保护区域。它可以使OS请求对这些的证实的最终化。它还可以将代码和数据直接提供给HV、OS和其他应用无法看到的这些区域的受保护区域硬件和固件,并且接着请求对它们的证实的最终化。该应用可以从外部源接收加密的这一代码和数据。
根据某些实施例,安全复合中的证实硬件使用系统特定的ECC或RSA私钥来签署系统证实以及单独的私钥来签署应用证实。证实硬件将不会签名应用受保护区域证实,除非微软公司向其安全地传达该系统通过了证实挑战。安全处理器和CPU固件和软件无法访问用于证实的私钥,错误地证明系统证实,或者错误地递送正确的证实结果。
根据某些实施例,HV可使得硬件将所选的主存储器页锁定为能够在HV模式中执行的唯一存储器页,组织对HV代码的修改,将所选主存储器页锁定为仅能够被HV、完整性受保护的HV代码和数据访问。这与受保护区域是分开的。
根据某些实施例,如果还不是ISA的一部分,则可以添加特权保护的添加HV控制的升级。这与应用受保护区域的特权保护的受保护区域升级是分开的,但改进总体系统安全性。
CPU中的受保护区域固件可实际上是专门的受保护CPU软件。其保护与任何CPU固件可以有的保护一样强。硬件锁定、完整性保护、并且控制进入。ISA软件可以使用软件开发工具,并且消除许多实现依赖性。商业问题也可能偏好ISA软件。
受保护区域可以是活跃的或不活跃的。活跃的受保护区域具有在主存储器中的页和/或具有OS能够立即将其交换到主存储器中的页。一实现具有有限数目(例如,256到4096)包含代码的活跃受保护区域。TLB硬件限制该数目。一实现可具有大得多数目的活跃受保护数据区域。受保护区域固件以及用于属性的存储器空间确定该数目。一实现可具有任意大数目的不活跃的受保护区域。当应用执行以简化死锁阻止时,一实现可使得应用所拥有的所有受保护区域为活跃。活跃和非活跃区域的页可以在主存储器中或者被交换出去。
根据某些实施例,受保护区域使用分开的会话密钥用于受保护区域的主存储器驻留和不驻留的页,因为不驻留的页可存在较长时间。分开的密钥通常具有很少的成本,因为IO和每一存储器控制器一般将具有它们自己的密钥存储。
该实现可以维护受保护区域页的VA到PA视图。它不关心客-物理地址。根据某些实施例,受保护区域不干扰现有的存储器管理,但是HV、OS和/或应用必须将VPA和PPA信息传达给受保护区域固件。在将页交换进入和交换出主存储器中涉及受保护区域固件和硬件以确认虚拟和物理地址、管理加密、并且生成和校验散列。
CPU和其他系统组件TLB包含除了介绍章节快照部分中讨论的PRCAT、PRKT以及代码转换附加。
将经修改的数据驱逐到主存储器的高速缓存和缓冲器的标签包含PRKT以使得存储器控制器能够正确地加密被驱逐的数据。当较高级的高速缓存包括它们的内容时,这一般地不影响较低级的高速缓存。
在某些实施例中并且作为启动应用的一部分,OS请求受保护区域固件和硬件为应用的受保护区域创建会话密钥。没有软件或固件(包括受保护区域固件)能够看见密钥,并且当受保护区域硬件和固件将密钥存储在SoC之外时加密和签署密钥。
SoC主存储器控制器使用恰适的密钥来加密和解密存储器请求。提议是为在用于白化的引导时建立的所有受保护区域使用物理地址和公共的值。
SoC IO组件使用恰适的密钥不同于主存储器密钥来加密和解密被交换到其他存储的页。它们计算受保护区域固件和硬件保存在完整性受保护的主存储器中的、或者加密的、签名的、以及被交换出去的SHA2 256散列。用于将受保护区域页交换进出主存储器的IO组件就对受保护区域的访问而言是类似于CPU的关键安全组件。文件IO应当使用单独的加密引擎以用于执行、资源管理和安全隔离。
根据某些实施例,提供对主存储器中的HV代码和数据(包括物理页表)以及受保护区域元数据的完整性保护。它不一定包括对主存储器中的应用代码和数据的完整性保护。交换出去的应用代码和数据是完整性受保护的。主存储器加密算法的白化部分保护免于移动攻击。受保护区域保护免于不被允许的访问。服务器主存储器一般包括用于检测每64或128位的双位错误的ECC。修改经加密的存储器要求对电路板的物理访问,并且有用地修改内容是有问题的。没有性能效应的完整性保护是昂贵的,因为内容的散列在芯片上。完整性受保护的大部分数据使用树结构,该树结构具有在主存储器中但是也被高速缓存在CPU高速缓存中的完整性校验的值的叶子。这用性能来交换成本,但现有的表查走时间隐藏了大部分的潜在性能效应。类似的技术可以被应用于应用主存储器内容,但是性能效应没有被隐藏,因为它们适用于数据和代码CPU高速缓存未命中而非TLB未命中。
根据某些实施例,存在用于调试和性能监视的至少两个选项。一种选项是现有架构断点和软件生成的中断可以在其可任选的故障和陷阱解决入口点处进入被中断的受保护区域。在该区域内部实例化的代码可以作出响应并且返回到被中断的代码流。第二选项是应用可以创建在需要时能够访问其他受保护区域的受保护的调试代码和数据区域。
性能
以下是系统性能可如何受到受保护区域的影响的概述。
一般来说,对于非受保护区域访问存储器没有实质影响。TLB未命中硬件可以确定访问是与现有TLB未命中解决方案并行的对非受保护区域的。后者要求与24CPU可高速缓存的存储器访问一样多。确定访问是对非受保护区域应当通常较少。
一般来说,对受保护区域访问存储器没有实质影响,并且在大部分实现中违背可以是精确的,尽管常常无法重启。重启应该是不重要的,因为违背对于应用是致命的。TLB未命中硬件可以确定访问是否是对非受保护区域的,并且访问受保护区域信息与现有TLB未命中解决方案并行。所有的信息都是CPU可高速缓存的。要解决的访问的数目取决于实现细节,但通常小于要解决现有客-虚拟到客-物理到物理映射的访问的数目。
受保护区域之间的调用引发性能成本以保存与现有架构保存分开的返回信息。返回引发性能成本以检查被保存的返回信息。预期小的总体影响,但对典型的使用的分析是需要的。
主存储器加密通常成本为1-3%的CPU性能。加密任何区域向每一区域增加成本以容易地遵守排序要求。参见上文讨论的完整性保护。
在一个实施例中,重新指派PRCAT和PRKT,因为终止的应用要求用来自TLB的标签来转储清除条目。对于被终止的应用重新指派它们的主存储器空间,这无论如何都会发生。它还要求用来自高速缓存和写缓冲器的PRKT来转储清除经修改的数据。这具有某种性能成本,但存储器实务最终都会发生。附带利益是对加密密钥的破坏使得区域内容在主存储器中无法读取——清除是不必要的。
因为缺少标签而重新指派PRCAT和PRKT要求如终止的区域相同的步骤,应当保存重新激活的密钥。各实现应当支持足够的PRCAT和PRKT,以使得这不会频繁地发生。
●受保护区域,如上所述,可以与IntelTM软件保护扩展(SGX)以及IntelTM存储器保护扩展(MPX)共存于x86实现中(组合的架构可能不允许在同一虚拟空间内使用GSX包围和受保护区域)。受保护区域提供优于SGX的许多优点,包括对整个VM和应用的高效保护、受保护区域之间的私有和安全共享、受保护代码和数据、具有访问和进入权灵活性的仅代码和仅数据区域、页和子页访问权、以及将专用处理器、IO和OS纳入保护方案中。
高速缓存元数据
根据某些实施例,完全关联的L1TLB类的结构在其命中时支持全性能。命中指示分配ID是有效的。该条目的有效载荷数据提供对于其他校验必要的信息。
根据某些实施例,受保护指针TLB可以比典型的64条目地址TLB更大,因为它不必在全性能的单个周期中完成。执行是投机性的,直到校验完成,但执行不等待校验的结果因为它一般很快用于数据读取。
根据某些实施例,指针TLB在包括ASID的53位上关联(或如果在切换ASID时被清除的情况下45位)。地址TLB通常在44位(36VPA+8ASID)上关联。
根据某些实施例,具有相同条目数目的相关结构在60到6位的关联ID上进行关联。该结构指示指针TLB条目在它们匹配被释放的分配ID的情况下无效。它不具有有效载荷数据。多个条目可以匹配。
示例操作环境
图7解说了可在其中实现图1-6中的任何一个的示例和实现以及任何替换方案的合适计算和联网环境900的示例。计算系统环境900只是合适计算环境的一个示例,而非意在暗示对本技术的各实施例的使用范围或功能有任何限制。也不应该将计算环境900解释为与示例操作环境900中示出的任一组件或其组合有关的任何依赖性或要求。
本技术的各实施例可用各种其它通用或专用计算系统环境或配置来操作。可适用于本技术的各实施例的公知计算系统、环境、和/或配置的示例包括但不限于:个人计算机、服务器计算机、手持式或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、微型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境等等。
本技术的某些实施例可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中被描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本技术的某些实施例也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和/或远程计算机存储介质中。
参考图7,用于实现本技术的某些实施例的各方面的示例系统可包括计算机910形式的通用计算设备。计算机910的组件可以包括但不限于:处理单元920、系统存储器930和将包括系统存储器在内的各种系统组件耦合至处理单元920的系统总线921。系统总线921可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任一种的局部总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。尽管未示出,系统总线921可附加地具有可操作地耦合到它的其他资源,诸如专用图形处理单元、专用并行数学(例如,向量)处理单元等。
计算机910通常包括各种计算机可读介质。计算机可读介质可以是能由计算机910访问的任何可用介质,并包含易失性和非易失性介质以及可移动和不可移动介质两者。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不仅限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或可以用来储存所需信息并可以被计算机910访问的任何其他介质。通信介质通常以诸如载波或其他传输机制之类的已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传送介质。术语“经调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其它无线介质之类的无线介质。上面各项中的任何项的组合也包括在计算机可读介质的范围内。
系统存储器930包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)931和随机存取存储器(RAM)932。包含诸如在启动期间帮助在计算机910内的元件之间传输信息的基本例程的基本输入/输出系统933(BIOS)通常存储在ROM 931中。RAM932通常包含处理单元920可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图6示出了操作系统934、应用程序935、其他程序模块936(例如,系统管理程序)和程序数据937。
计算机910也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图6示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器941,从可移动、非易失性磁盘952中读取或向其写入的磁盘驱动器951,以及从诸如CD ROM或其他光学介质等可移动、非易失性光盘956中读取或向其写入的光盘驱动器955。可以在该示例操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器941通常通过诸如接口940之类的不可移动存储器接口连接到系统总线921,并且磁盘驱动器951和光盘驱动器955通常通过诸如接口950之类的可移动存储器接口连接到系统总线921。
以上描述并在图7中示出的驱动器及其相关联的计算机存储介质为计算机910提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图7中,硬盘驱动器941被示为存储操作系统944、应用程序945、其他程序模块946(例如,系统管理程序代码)和程序数据947。注意,这些组件可与操作系统934、应用程序935、其他程序模块936和程序数据937相同,也可与它们不同。操作系统944、应用程序945、其他程序模块946和程序数据947在这里被给予不同的附图标记是为了说明至少它们是不同的副本。用户可通过诸如平板或者电子数字化仪964、话筒963、键盘962和定点设备961(通常指的是鼠标、跟踪球或触摸垫)等输入设备向计算机910输入命令和信息。图7中未示出的其他输入设备可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些以及其他输入设备通常通过耦合到系统总线的用户输入接口960连接到处理单元920,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口和总线结构来连接。监视器991或其他类型的显示设备也经由诸如视频接口990之类的接口连接至系统总线921。监视器991也可以与触摸屏面板等集成。注意到监视器和/或触摸屏面板可以在物理上耦合至其中包括计算设备910的外壳,诸如在平板型个人计算机中。此外,诸如计算设备910等计算机还可以包括其他外围输出设备,诸如扬声器995和打印机996,它们可以通过输出外围接口994等连接。
计算机910可使用到一个或多个远程计算机(诸如,远程计算机980)的逻辑连接而在联网环境中操作。远程计算机980可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上相对计算机910所描述的元件,但在图7中仅示出了存储器存储设备981。图6中所示的逻辑连接包括一个或多个局域网(LAN)971和一个或多个广域网(WAN)973,但也可以包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和互联网中是常见的。
当在LAN联网环境中使用时,计算机910通过网络接口或适配器970连接到LAN971。当在WAN联网环境中使用时,计算机910通常包括调制解调器972或用于通过诸如因特网等WAN 973建立通信的其他手段。可为内置或可为外置的调制解调器972可以经由用户输入接口960或其他合适的机构连接至系统总线921。诸如包括接口和天线的无线联网组件974可以通过诸如接入点或对等计算机等合适的设备耦合到WAN或LAN。在联网环境中,相关于计算机910所示的程序模块或其部分可被储存在远程存储器存储设备中。作为示例而非限制,图7示出了远程应用程序985驻留在存储器设备981上。可以理解,所示的网络连接是示例,也可以使用在计算机之间建立通信链路的其他手段。
辅助子系统999(例如,用于内容的辅助显示)可经由用户接口960连接,从而即使计算机系统的主要部分处于低功率状态中,也允许诸如程序内容、系统状态和事件通知等数据被提供给用户。辅助子系统999可连接至调制解调器972和/或网络接口970,从而在主处理单元920处于低功率状态中时,也允许在这些系统之间进行通信。
本文使用的首字母缩写和专用术语
作为本公开的非限制性概览,看到已经公开的内容包括一种用于保护数据处理系统的安全的机器实现的方法,其中该方法包括:(a)在不能被用户软件和操作系统软件容易理解地访问的存储器区域中存储元数据,该元数据定义由数据处理系统的主存储器的对应第一区域构成的至少第一保护区域(PR)的程度,其中该第一区域在原本不被保护的情况下被用户软件和操作系统软件使用,所存储的元数据进一步定义第一PR的访问约束属性,该属性包括用于可存在于第一PR中的信息数据项的第一访问约束以及用于可存在于第一PR中的可执行代码的第二访问约束中的至少一者;以及(b)在数据处理系统中的用户软件和操作系统软件中的至少一者的执行期间,实施至少第一PR的访问约束属性。
以上方法可以是其中:数据处理系统包括系统管理程序;存储元数据的存储器区域不能被系统管理程序直接访问;在使用由系统管理程序管理的虚拟存储器空间的同时,用户软件和操作系统软件执行;以及至少第一PR的程度的元数据定义包括其在虚拟存储器空间中的程序。此外,以上方法可以是其中:系统管理程序产生对应于存储在主存储器中的信息数据项和可执行代码的虚拟地址(VA)的物理地址(超PA);以及存储存储元数据的的存储器区域存储存储在第一PR中的信息数据项和可执行代码中的至少一者的虚拟地址到物理地址转换。
此外,以上方法可以是其中:至少第一PR的访问约束属性的实施被受保护区域实施者(PR实施者)自动重复执行,受保护区域实施者被实现在系统硬件和固件中的至少一者中,其中PR实施者的操作无法被用户软件、操作系统软件和系统管理程序中的任一者直接更改;并且该方法进一步包括:当尝试对存储在第一PR中的信息数据项和可执行代码中的任一者的访问时,通过使用PR实施者来自动重复测试系统管理程序产生的物理地址(超PA)与从所存储的存储元数据的存储器区域的虚拟地址到物理地址转换获得的物理地址(元PA)之间的匹配。
以上方法可以是其中:至少第一PR的访问约束属性的实施被受保护区域实施者(PR实施者)自动重复执行,受保护区域实施者被实现在系统硬件和固件中的至少一者中,其中PR实施者的操作无法被用户软件、操作系统软件和系统管理程序中的任一者直接更改;并且该方法进一步包括:当尝试对存储在第一PR中的信息数据项和可执行代码中的至少一者的访问时,通过使用PR实施者来自动重复测试系统管理程序控制的读、写和/或执行许可(超R/W/X许可)集以及从存储元数据的存储器区域获得的对应读、写和/或执行许可(元R/W/X许可)之间的匹配。在替换实施例中,匹配测试可以如在相应许可属性的较首先的并集之间。
该方法可以是其中进一步包括:当尝试对存储在第一PR中的信息数据项和可执行代码中的任一者的访问时,通过使用PR实施者来自动重复测试系统管理程序产生的物理地址(超PA)与从所存储的存储元数据的存储器区域的虚拟地址到物理地址转换获得的物理地址(元PA)之间的匹配。
该方法可以是其中进一步包括:自动验证存储在存储元数据的存储器区域中的元数据的至少一部分的完整性。
该方法可以是其中:对完整性的自动验证包括自动调用针对存储在存储元数据的存储器区域中的元数据中的至少一部分的证实挑战。
该方法可以是其中:对证实挑战的自动调用在从中产生被挑战元数据被允许执行超过预定程度之前发生。
该方法可以是其中:自动调用的证实挑战通过网络以及来自远程服务器或其他此类挑战者或替换地来自本地挑战者。
该方法可以是其中进一步包括:从第一应用的应用定义文件中的获得定义由主存储器的对应第一分配的虚拟区域构成的至少第一保护区域(第一PR)的程度的对应第一元数据,第一分配的虚拟区域是被分配给第一应用的用于包含属于第一应用的第一信息数据项和第一可执行代码中的至少一者的区域。
该方法可以是其中进一步包括:自动验证获得的第一元数据的完整性。
该方法可以是其中进一步包括:从第一应用的应用定义文件中的获得定义由主存储器中不同于第一分配的虚拟区域的对应的第二分配的虚拟区域构成的第二保护区域(第二PR)的程度的对应第二元数据,第二分配的虚拟区域也是被分配给第一应用的用于包含属于第一应用的第二信息数据项和第二可执行代码中的至少一者的区域;其中第二元数据定义第二PR的访问约束属性,并且第二PR的至少一个访问约束属性不同于由第一元数据为其对应的第一PR定义的访问约束属性。
该方法可以是其中进一步包括:从第二应用的应用定义文件中获得定义由主存储器的对应另一分配的虚拟区域构成的至少另一保护区域的程度的对应另一元数据,另一分配的虚拟区域是被分配给第二应用的用于包含属于第二应用的另一信息数据项和另一可执行代码中的至少一者的区域;其中该另一元数据定义该另一保护区域的访问约束属性,该另一元数据定义该另一PR的访问约束属性,包括针对可存在于该另一PR中的信息数据项的另一访问约束以及针对可存在与该另一PR中的可执行代码的又一另一访问约束中的至少一者。
该方法可以是其中进一步包括:自动并且几乎在同时实施第一应用和第二应用两者的访问约束。
该方法可以是其中:第一应用的访问约束包括定义第二应用的可执行代码能否访问第一应用的受保护区域内的信息数据项和可执行代码中的至少一者的约束。
该方法可以是其中:第二应用的访问约束包括定义第一应用的可执行代码能否访问第二应用的受保护区域内的信息数据项和可执行代码中的至少一者以及如果能则能够访问到什么程度的约束。
附加地,看到已经公开的包括一种数据处理机器,包括:(a)不能被数据处理机器内的用户软件和操作系统软件直接访问的存储器区域;以及
(b)被配置成访问用于在其中存储元数据的存储器区域的硬件和固件中的至少一者,该元数据定义由数据处理机器的主存储器的对应第一区域构成的至少第一保护区域(第一PR)的程度,其中第一区域在原本不被保护的情况下能够被数据处理机器内的用户软件和操作系统软件中的至少一者使用,所存储的元数据进一步定义第一PR的访问约束属性,包括针对可存在于第一PR中的信息数据项的第一访问约束以及针对可存在于第一PR中的可执行代码的第二访问约束中的至少一者;其中存储器区域访问硬件和固件中的至少一者被进一步配置为PR实施者,该PR实施者被配置成在数据处理机器中的用户软件和操作系统软件中的至少一者的执行期间自动实施至少第一PR的访问约束属性。
附加地,看到已经公开的包括一种数据处理系统,包括:(a)相应的一个或多个数据处理设备内的一个或多个存储器区域,每一存储器区域被配置成不能被其相应数据处理设备内的用户软件和操作系统软件直接访问;以及(b)在每一数据处理设备内,被配置成访问设备的用于在其中存储元数据的相应一个或多个存储器区域的硬件和固件中的至少相应一个,该元数据定义由相应数据处理设备的主存储器的对应第一区域构成的至少第一保护区域(第一PR)的程度,其中第一区域在原本不受保护的情况下能够被数据处理设备内的用户软件和操作系统软件中的至少一者使用,所存储的元数据进一步定义第一PR的访问约束属性,包括针对可存在于第一PR中的信息数据项的第一访问约束以及针对可存在于第一PR中的可执行代码的第二访问约束中的至少一者;其中每一相应设备的存储器区域访问硬件和固件中的至少一者被进一步配置为PR实施者,该PR实施者被配置成在相应设备中的用户软件和操作系统软件中的至少一者的执行期间自动实施相应设备的至少第一PR的访问约束属性。
数据处理系统可以是其中:该设备中的至少第一设备包括相应的系统管理程序;该至少第一设备的该一个或多个存储元数据的存储器区域不能被设备的相应系统管理程序直接访问;用户软件和操作系统软件被配置成在使用由相应设备的相应系统管理程序管理的虚拟存储器空间的同时在该至少第一设备内执行;以及该至少第一PR的程度的元数据定义包括其在相应设备的虚拟存储器空间中的程序。
附加地,看到已经公开了包括一种产生可在受保护区域(PR)制度之下操作的可执行代码的方法,其中该方法包括:(a)在源代码和对象代码中的至少一者内定义至少第一受保护区域的起始位置和程度;以及(b)在源代码和对象代码中的至少一者内定义至少第一受保护区域的访问约束属性。
该方法可以是其中进一步包括:在源代码和对象代码中的至少一者内定义对至少第一受保护区域的起始位置、程度和属性中的至少一者的动态改变。
该方法可以是其中进一步包括:在源代码和对象代码中的至少一者内定义对至少第一受保护区域内的可执行代码和信息数据项中的至少一者的动态破坏以及对至少第一受保护区域的属性的动态破坏。
该方法可以是其中进一步包括:在源代码和对象代码中的至少一者内定义对具有相应的第二起始位置和程度以及相对于第一受保护区域的属性相同或不同属性的至少第二受保护区域的动态创建。
该方法可以是其中进一步包括:在源代码和对象代码中的至少一者内定义至少第一受保护区域及其属性的完整性的实施测试。
该方法可以是其中,对至少第一受保护区域的属性的完整性测试包括对如存储在存储器区域中的属性的完整性测试,该属性被配置成无法被要实施该属性的相应数据处理设备的用户软件和操作系统软件直接访问。该方法可以是其中完整性测试包括远程证实。该方法可以是其中对至少第一受保护区域的起始位置、程度和属性中的至少一者的定义基于在至少第一受保护区域被激活之前执行代码线程的线路流的映射和/或抵达可执行代码的内产生版本的信息数据项的映射。
该方法可以是其中进一步包括:在其受保护区域中的至少一者被激活的情况下运行所产生的可执行代码的beta版本;以及基于所述运行来修改beta版本的至少一个受保护区域的起点、程度和属性中的至少一者。
该方法可以是其中进一步包括:在其多个受保护区域被激活的情况下运行所产生的可执行代码的alpha版本;以及基于alpha版本的所述运行来修改alpha版本的至少一个受保护区域的起点、程度和属性中的至少一者。
附加地,看到已经公开的包括一种实施所定义的受保护区域的访问约束和/或要求的方法,包括:在转换后备缓冲器(TLB)中高速缓存属性。该方法可以是其中进一步包括:响应于TLB未命中,查走存储在存储器区域中的虚拟地址直接到物理地址的转换表,该转换表被配置成不能被实施属性的相应数据处理设备的用户软件和操作系统软件直接访问。
附加地,看到已经公开的包括一种实施所定义的受保护区域的访问约束和/或要求的方法,该方法包括:使用在每一受保护区域或每一受保护区域组的基础上指派给所定义的受保护区域的交换密钥来解密访问约束和/或要求的加密副本。
结语
尽管根据本公开的各实施例易于作出各种修改和替换构造,但其某些所解说的实施例在附图中示出并在上面被详细地描述。然而应当理解,这不旨在将本公开的各实施例限于所公开的具体形式,而是相反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。

Claims (15)

1.一种机器实现的用于保护数据处理系统安全的方法,所述方法包括:
在不能被用户软件、操作系统软件或补充处理器容易理解地访问的一个或多个存储器区域中存储元数据,所述元数据标识所述数据处理系统的系统存储器的一个或多个第一其他部分,其中所标识的一个或多个第一其他部分藉此被映射为受保护区域,并且其中所存储的元数据定义那些所标识的一个或多个第一其他部分的访问约束、分别约束所标识的第一其他部分执行的操作或者对所标识的第一其他部分的数据执行的操作的对应操作约束和/或操作要求中的至少一者;以及
在所述数据处理系统中的用户软件和操作系统软件中的至少一者的执行期间,如所述元数据所映射的向它们对应的所述系统存储器的第一其他部分实施所述操作约束和/或操作要求。
2.如权利要求1所述的方法,其特征在于:
所述数据处理系统包括系统管理程序;
所述一个或多个存储元数据的存储器区域不能被所述系统管理程序容易理解地访问;以及
所述用户软件和所述操作系统软件在使用由所述系统管理程序管理的虚拟存储器空间的同时执行。
3.如权利要求2所述的方法,其特征在于:
所述系统管理程序产生对应于存储在所述系统存储器的主存储器部分中的信息数据项和可执行代码的虚拟地址(VA)的物理地址(超PA);以及
所述一个或多个存储元数据的存储器区域存储储存在所述数据处理系统的系统存储器的一个或多个第一其他部分中的至少一者中的信息数据项和可执行代码中的至少一者的虚拟地址到物理地址转换。
4.如权利要求3所述的方法,其特征在于:
所述操作约束和/或操作要求的所述实施被受保护区域实施者(PR实施者)自动重复执行,所述受保护区域实施者被实现在系统硬件和固件中的至少一者中,其中所述PR实施者的内部操作无法被用户软件、操作系统软件和所述系统管理程序中的任一者直接更改;以及
所述方法进一步包括:当尝试对存储在所述第一其他部分中的对应一者中的信息数据项和可执行代码中的至少一者的访问时,通过使用所述PR实施者来自动重复测试系统管理程序产生的物理地址(超PA)与从所述一个或多个存储元数据的存储器区域的所存储的虚拟地址到物理地址的转换获得的物理地址(元PA)之间的匹配。
5.如权利要求3所述的方法,其特征在于:
所述操作约束和/或操作要求的所述实施被受保护区域实施者(PR实施者)自动重复执行,所述受保护区域实施者被实现在系统硬件和固件中的至少一者中,其中所述PR实施者的内部操作无法被用户软件、操作系统软件和所述系统管理程序中的任一者直接更改;以及
所述方法进一步包括:当尝试对存储在所述第一其他部分中的对应一者中的信息数据项和可执行代码中的至少一者的访问时,通过使用所述PR实施者来自动重复测试系统管理程序控制的读、写和/或执行许可(超R/W/X许可)集以及从所述存储元数据的存储器区域中的至少一者获得的对应读、写和/或执行许可(元R/W/X许可)之间的上下文下式的受限匹配。
6.如权利要求5所述的方法,其特征在于,还包括:
当尝试对存储在所述第一其他部分中的对应一者中的信息数据项和可执行代码中的至少一者的访问时,通过使用所述PR实施者来自动重复测试系统管理程序产生的物理地址(超PA)与从所述存储元数据的存储器区域中的至少一者的所存储的虚拟地址到物理地址的转换获得的物理地址(元PA)之间的匹配。
7.如权利要求1所述的方法,其特征在于,还包括:
从第一应用的应用定义文件中获得定义一个或多个第一保护区域(PR)作为分段还是作为整体来提供的程度的对应第一元数据,其中PR要由所述系统存储器的对应第一分配的虚拟区域构成,所述第一分配的虚拟区域是分配给所述第一应用的用于包含属于所述第一应用的第一信息数据项和第一可执行代码中的至少一者的区域。
8.如权利要求7所述的方法,其特征在于,还包括:
自动验证获得的第一元数据的完整性。
9.如权利要求7所述的方法,其特征在于,还包括:
从所述第一应用的应用定义文件中获得定义要由不同于所述第一分配的虚拟区域的系统存储器的对应第二分配的虚拟区域构成的一个或多个第二PR的程度的对应第二元数据,所述第二分配的虚拟区域也是被分配给所述第一应用的用于包含属于所述第一应用的第二信息数据项和第二可执行代码中的至少一者的区域;以及
从所述第一应用的应用定义文件中获得定义分别用于所述第一和第二分配的虚拟区域的相应的操作约束和/或操作要求的对应第三和第四元数据,其中获得的第三元数据不同于获得的第四元数据。
10.如权利要求7所述的方法,其特征在于,还包括:
从第二应用的应用定义文件中获得定义要由系统存储器的对应另一分配的虚拟区域构成的对应一个或多个其他保护区域的程度的对应另一元数据,所述另一分配的虚拟区域是被分配给所述第二应用的用于包含属于所述第二应用的另一信息数据项和另一可执行代码中的至少一者的区域;以及
从所述第二应用的应用定义文件中获得定义所述另一分配的虚拟区域的相应操作约束和/或操作要求的对应另一元数据。
11.如权利要求10所述的方法,其特征在于,还包括:
自动并且几乎在同时实施所述第一应用和第二应用两者的操作约束和/或操作要求。
12.如权利要求11所述的方法,其特征在于:
所述第一应用的操作约束和/或操作要求包括定义所述第二应用的可执行代码能否访问所述第一应用的受保护区域内的信息数据项和可执行代码中的至少一者的约束。
13.如权利要求12所述的方法,其特征在于:
所述第二应用的操作约束和/或操作要求包括定义所述第一应用的可执行代码能否访问所述第二应用的受保护区域内的信息数据项和可执行代码中的至少一者以及如果能则能够访问到什么程度的约束。
14.一种数据处理系统,包括:
相应的一个或多个数据处理设备内的一个或多个被埋藏的存储器区域,每一被埋藏的存储器区域被配置成不能被其相应数据处理设备内的用户软件和操作系统软件或主处理器或补充处理器容易理解地访问;以及
在每一数据处理设备内,硬件和固件中的至少相应一个被配置成容易理解地访问设备的用于在其中存储元数据的相应一个或多个被埋藏的存储器区域,所述元数据定义由相应数据处理设备的系统存储器的对应第一区域构成的至少第一保护区域(第一PR)的程度,其中所述第一区域在原本不受保护的情况下能够被数据处理设备内的用户软件和操作系统软件中的至少一者使用,所存储的元数据定义第一PR的访问约束属性,包括针对可存在于第一PR中的信息数据项的第一访问约束以及针对可存在于第一PR中的可执行代码的第二访问约束中的至少一者;
其中每一相应设备的被埋藏的存储器区域访问硬件和固件中的至少一者被进一步配置为PR实施者,所述PR实施者被配置成在相应设备中的用户软件和操作系统软件中的至少一者的执行期间自动实施相应设备的至少第一PR的访问约束属性。
15.如权利要求14所述的数据处理系统,其特征在于:
所述设备中的至少第一设备包括相应的系统管理程序;
所述至少第一设备的一个或多个存储元数据的存储器区域不能被所述设备的所述相应的系统管理程序直接访问;
用户软件和操作系统软件被配置成在使用由所述相应的设备的所述相应的系统管理程序管理的虚拟存储器空间的同时在所述至少第一设备内执行;以及
至少第一PR的程度的元数据定义包括其在所述相应的设备的虚拟存储器空间中的程度。
CN201680035756.7A 2015-06-16 2016-05-18 受保护区域 Active CN107771335B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562180324P 2015-06-16 2015-06-16
US62/180,324 2015-06-16
US201562233160P 2015-09-25 2015-09-25
US62/233,160 2015-09-25
US15/132,065 US10114958B2 (en) 2015-06-16 2016-04-18 Protected regions
US15/132,065 2016-04-18
PCT/US2016/032948 WO2016204913A1 (en) 2015-06-16 2016-05-18 Protected memory regions

Publications (2)

Publication Number Publication Date
CN107771335A true CN107771335A (zh) 2018-03-06
CN107771335B CN107771335B (zh) 2020-12-15

Family

ID=56087535

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680035756.7A Active CN107771335B (zh) 2015-06-16 2016-05-18 受保护区域

Country Status (4)

Country Link
US (1) US10114958B2 (zh)
EP (1) EP3311322B1 (zh)
CN (1) CN107771335B (zh)
WO (1) WO2016204913A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109446835A (zh) * 2018-09-30 2019-03-08 龙芯中科技术有限公司 数据访问控制方法、装置及设备
CN111414321A (zh) * 2020-02-24 2020-07-14 中国农业大学 一种基于动态映射机制的cache防护方法及装置
CN111797037A (zh) * 2020-09-08 2020-10-20 北京优炫软件股份有限公司 一种文件防篡改方法及装置
CN112231239A (zh) * 2020-10-19 2021-01-15 海光信息技术股份有限公司 一种页交换方法、装置、cpu、可信硬件及计算机设备
CN114651244A (zh) * 2019-11-06 2022-06-21 微软技术许可有限责任公司 机密计算机制

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11775443B2 (en) * 2014-10-23 2023-10-03 Hewlett Packard Enterprise Development Lp Supervisory memory management unit
US9830162B2 (en) * 2014-12-15 2017-11-28 Intel Corporation Technologies for indirect branch target security
US9626221B2 (en) * 2015-02-24 2017-04-18 Red Hat Israel, Ltd. Dynamic guest virtual machine identifier allocation
US9965649B2 (en) * 2015-05-19 2018-05-08 Rujing Tang System and method for protecting internet user data privacy
US10102151B2 (en) * 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
CN105346256B (zh) * 2015-11-09 2017-03-22 杭州旗捷科技有限公司 一种打印机芯片、墨盒、和打印机芯片存储分配方法
EP3179690A1 (en) * 2015-12-11 2017-06-14 Gemalto Sa Mobile device having trusted execution environment
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
FR3045881B1 (fr) * 2015-12-18 2018-12-07 Airbus Slc Sas Procede de verification de fonctionnalites d'un logiciel destine a etre embarque dans un composant cryptographique, systeme
CN106933751B (zh) * 2015-12-29 2019-12-24 澜起科技股份有限公司 用于保护动态随机访问存储器的方法和设备
US9936019B2 (en) * 2016-03-16 2018-04-03 Google Llc Efficient live-migration of remotely accessed data
US11379385B2 (en) 2016-04-16 2022-07-05 Vmware, Inc. Techniques for protecting memory pages of a virtual computing instance
US10572687B2 (en) * 2016-04-18 2020-02-25 America as represented by the Secretary of the Army Computer security framework and hardware level computer security in an operating system friendly microprocessor architecture
US10592267B2 (en) * 2016-05-17 2020-03-17 Vmware, Inc. Tree structure for storing monitored memory page data
US10241706B2 (en) * 2016-05-20 2019-03-26 Renesas Electronics Corporation Semiconductor device and its memory access control method
US20180004946A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Regulating control transfers for execute-only code execution
US11442760B2 (en) * 2016-07-01 2022-09-13 Intel Corporation Aperture access processors, methods, systems, and instructions
US10261919B2 (en) * 2016-07-08 2019-04-16 Hewlett Packard Enterprise Development Lp Selective memory encryption
US10482034B2 (en) * 2016-11-29 2019-11-19 Microsoft Technology Licensing, Llc Remote attestation model for secure memory applications
US20180196956A1 (en) * 2017-01-10 2018-07-12 Renesas Electronics America Inc. Security architecture and method
US10965474B1 (en) * 2017-02-27 2021-03-30 Apple Inc. Modifying security state with highly secured devices
US10303621B1 (en) * 2017-03-07 2019-05-28 Amazon Technologies, Inc. Data protection through address modification
US10489185B2 (en) * 2017-03-17 2019-11-26 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on attribute matching
US20180267818A1 (en) * 2017-03-17 2018-09-20 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on notification data
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10310814B2 (en) 2017-06-23 2019-06-04 International Business Machines Corporation Read and set floating point control register instruction
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
GB2563889B (en) * 2017-06-28 2019-10-09 Advanced Risc Mach Ltd Realm identifiers for realms for memory access control
GB2563885B (en) * 2017-06-28 2019-10-23 Advanced Risc Mach Ltd Interrupting export of memory regions
GB2563884B (en) * 2017-06-28 2020-01-08 Advanced Risc Mach Ltd Exception return instruction
GB2563886B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Realm management unit-private memory regions
GB2563887B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Masking of architectural state associated with a realm
GB2563883B (en) * 2017-06-28 2019-10-09 Advanced Risc Mach Ltd Invalidation of a target realm in a realm hierarchy
GB2563881B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Realm execution context masking and saving
US11016910B2 (en) 2017-06-28 2021-05-25 Arm Limited Memory region locking using lock/unlock flag state for exclusive rights to control memory access
GB2563888B (en) * 2017-06-28 2020-03-18 Advanced Risc Mach Ltd Sub-realms
US10467159B2 (en) * 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10534719B2 (en) * 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10613989B2 (en) * 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
GB2565146A (en) * 2017-08-04 2019-02-06 Kaleao Ltd Memory control for electronic data processing system
US10782993B2 (en) * 2017-10-13 2020-09-22 Dell Products L.P. Systems and methods for secure runtime dynamic resizing of memory namespaces
GB2570474B (en) * 2018-01-26 2020-04-15 Advanced Risc Mach Ltd Region fusing
CN111480160B (zh) * 2018-01-31 2023-11-03 惠普发展公司,有限责任合伙企业 用于过程验证的系统、方法和介质
WO2019152805A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. System and method for translating mapping policy into code
SG11202007272QA (en) 2018-02-02 2020-08-28 Charles Stark Draper Laboratory Inc Systems and methods for policy execution processing
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11416395B2 (en) * 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11461579B2 (en) 2018-02-08 2022-10-04 Western Digital Technologies, Inc. Configurable neural network engine for convolutional filter sizes
US11164074B2 (en) 2018-02-08 2021-11-02 Western Digital Technologies, Inc. Multi-core systolic processor system for neural network processing
CN112236752B (zh) * 2018-04-11 2024-09-27 康奈尔大学 用于改进软件容器性能和隔离的方法和系统
TW201945971A (zh) 2018-04-30 2019-12-01 美商多佛微系統公司 用於檢查安全性能的系統和方法
US11275587B2 (en) 2018-05-02 2022-03-15 Micron Technology, Inc. Static identifications in object-based memory access
US10761855B2 (en) 2018-05-02 2020-09-01 Micron Technology, Inc. Securing conditional speculative instruction execution
US11443072B2 (en) * 2018-06-29 2022-09-13 Microsoft Technology Licensing, Llc Peripheral device with resource isolation
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
GB2576506B (en) * 2018-08-20 2021-06-30 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
US11042636B2 (en) * 2018-09-12 2021-06-22 International Business Machines Corporation Using trap storage units to detect malicious processes
US11080397B2 (en) 2018-09-12 2021-08-03 International Business Machines Corporation Using trap cache segments to detect malicious processes
US11126757B2 (en) 2018-10-19 2021-09-21 Microsoft Technology Licensing, Llc Peripheral device
WO2020097177A1 (en) 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
GB2579034B (en) * 2018-11-15 2021-05-05 Trustonic Ltd Software installation method
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
EP3696698A1 (en) * 2019-02-18 2020-08-19 Verimatrix Method of protecting a software program against tampering
WO2020175720A1 (ko) * 2019-02-28 2020-09-03 엘지전자 주식회사 디지털 디바이스 및 그 제어 방법
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11455398B2 (en) * 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US20200285501A1 (en) * 2019-03-08 2020-09-10 International Business Machines Corporation Communication interface of a secure interface control
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US10725687B1 (en) * 2019-03-19 2020-07-28 Western Digital Technologies, Inc. Settable replay protected memory block characteristics in a logic unit
US11783176B2 (en) * 2019-03-25 2023-10-10 Western Digital Technologies, Inc. Enhanced storage device memory architecture for machine learning
US11288213B2 (en) * 2019-03-29 2022-03-29 Intel Corporation Memory protection with hidden inline metadata
US11609845B2 (en) * 2019-05-28 2023-03-21 Oracle International Corporation Configurable memory device connected to a microprocessor
US10938728B2 (en) * 2019-07-24 2021-03-02 Cisco Technology, Inc. High performance for efficient auto-scaling of stateful service
US11411843B2 (en) * 2019-08-14 2022-08-09 Verizon Patent And Licensing Inc. Method and system for packet inspection in virtual network service chains
US11050569B2 (en) * 2019-08-14 2021-06-29 Macronix International Co., Ltd. Security memory scheme
FR3100901B1 (fr) * 2019-09-12 2021-08-27 Stmicroelectronics Grand Ouest Sas Système de protection de la mémoire
US12079197B2 (en) 2019-10-18 2024-09-03 Dover Microsystems, Inc. Systems and methods for updating metadata
US20210144170A1 (en) * 2019-11-09 2021-05-13 Indian Institute Of Science System and method for protection against side channel attacks
US11030113B1 (en) 2019-12-27 2021-06-08 Intel Corporation Apparatus and method for efficient process-based compartmentalization
US11392492B2 (en) * 2019-12-27 2022-07-19 Intel Corporation Memory management apparatus and method for compartmentalization using linear address metadata
US11271933B1 (en) 2020-01-15 2022-03-08 Worldpay Limited Systems and methods for hosted authentication service
US11782610B2 (en) * 2020-01-30 2023-10-10 Seagate Technology Llc Write and compare only data storage
US11216366B2 (en) 2020-02-13 2022-01-04 Intel Corporation Security check systems and methods for memory allocations
US20210377309A1 (en) * 2020-06-02 2021-12-02 Hid Global Cid Sas System and method for establishing secure session with online disambiguation data
US20220075871A1 (en) * 2020-09-09 2022-03-10 Microsoft Technology Licensing, Llc Detecting hacker tools by learning network signatures
CN112416728A (zh) * 2020-11-23 2021-02-26 平安普惠企业管理有限公司 埋点数据获取方法、装置、客户端设备及可读存储介质
WO2022139850A1 (en) 2020-12-26 2022-06-30 Intel Corporation Cryptographic computing including enhanced cryptographic addresses
US11972126B2 (en) 2021-03-26 2024-04-30 Intel Corporation Data relocation for inline metadata
US11954045B2 (en) 2021-09-24 2024-04-09 Intel Corporation Object and cacheline granularity cryptographic memory integrity
US11561898B1 (en) * 2021-10-25 2023-01-24 Arm Limited Address expansion
US20230344834A1 (en) * 2022-04-21 2023-10-26 Cisco Technology, Inc. User role-driven metadata layers in a data mesh
CN117521054A (zh) * 2022-07-30 2024-02-06 华为技术有限公司 电子装置和安全访问软件的方法
EP4372567A1 (en) * 2022-11-18 2024-05-22 Thales Dis France Sas Processor and method for modifying processor behavior based on memory attributes and instruction type
WO2024137289A1 (en) * 2022-12-20 2024-06-27 Cryptography Research, Inc. Structural control flow integrity for protection against code reuse attacks
CN117251293B (zh) * 2023-11-14 2024-02-27 龙思云(北京)科技有限公司 一种云桌面共享gpu的实现方法及系统、宿主机、虚拟机

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080276051A1 (en) * 2007-05-04 2008-11-06 Atmel Corporation Configurable Memory Protection
CN101523367A (zh) * 2006-09-22 2009-09-02 爱特梅尔公司 对微处理器系统中的存储器空间的存取控制
US20100281273A1 (en) * 2009-01-16 2010-11-04 Lee Ruby B System and Method for Processor-Based Security
US20140189261A1 (en) * 2012-12-28 2014-07-03 Gur Hildesheim Access type protection of memory reserved for use by processor logic

Family Cites Families (21)

* 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
US7793111B1 (en) * 2000-09-28 2010-09-07 Intel Corporation Mechanism to handle events in a machine with isolated execution
US7752459B2 (en) 2001-12-06 2010-07-06 Novell, Inc. Pointguard: method and system for protecting programs against pointer corruption attacks
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US7509441B1 (en) 2006-06-30 2009-03-24 Siliconsystems, Inc. Systems and methods for segmenting and protecting a storage subsystem
US20080235436A1 (en) 2007-03-23 2008-09-25 Zimmer Vincent J Storage access control
US8438652B2 (en) * 2007-03-23 2013-05-07 Seagate Technology Llc Restricted erase and unlock of data storage devices
US8156565B2 (en) 2008-04-28 2012-04-10 Microsoft Corporation Hardware-based protection of secure data
WO2010019916A1 (en) 2008-08-14 2010-02-18 The Trustees Of Princeton University Hardware trust anchors in sp-enabled processors
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US8397306B1 (en) * 2009-09-23 2013-03-12 Parallels IP Holdings GmbH Security domain in virtual environment
US8881301B2 (en) * 2009-10-05 2014-11-04 Asset Intertech, Inc. Protection of proprietary embedded instruments
US9087200B2 (en) 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
US8972746B2 (en) 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US8959577B2 (en) * 2012-04-13 2015-02-17 Cisco Technology, Inc. Automatic curation and modification of virtualized computer programs
US20150227414A1 (en) 2012-08-31 2015-08-13 Pradeep Varma Systems And Methods Of Memory And Access Management
US9058494B2 (en) 2013-03-15 2015-06-16 Intel Corporation Method, apparatus, system, and computer readable medium to provide secure operation
US9087202B2 (en) 2013-05-10 2015-07-21 Intel Corporation Entry/exit architecture for protected device modules
US9530000B2 (en) 2013-06-14 2016-12-27 Microsoft Technology Licensing, Llc Secure privilege level execution and access protection
US9983894B2 (en) 2013-09-25 2018-05-29 Facebook, Inc. Method and system for providing secure system execution on hardware supporting secure application execution
US20150095661A1 (en) 2013-09-30 2015-04-02 Microsoft Corporation Flexible Memory Addressing For Data Security

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101523367A (zh) * 2006-09-22 2009-09-02 爱特梅尔公司 对微处理器系统中的存储器空间的存取控制
US20080276051A1 (en) * 2007-05-04 2008-11-06 Atmel Corporation Configurable Memory Protection
US20100281273A1 (en) * 2009-01-16 2010-11-04 Lee Ruby B System and Method for Processor-Based Security
US20140189261A1 (en) * 2012-12-28 2014-07-03 Gur Hildesheim Access type protection of memory reserved for use by processor logic

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109446835A (zh) * 2018-09-30 2019-03-08 龙芯中科技术有限公司 数据访问控制方法、装置及设备
CN114651244A (zh) * 2019-11-06 2022-06-21 微软技术许可有限责任公司 机密计算机制
US12061541B2 (en) 2019-11-06 2024-08-13 Microsoft Technology Licensing, Llc. System for confidential computing with capabilities
CN111414321A (zh) * 2020-02-24 2020-07-14 中国农业大学 一种基于动态映射机制的cache防护方法及装置
CN111797037A (zh) * 2020-09-08 2020-10-20 北京优炫软件股份有限公司 一种文件防篡改方法及装置
CN112231239A (zh) * 2020-10-19 2021-01-15 海光信息技术股份有限公司 一种页交换方法、装置、cpu、可信硬件及计算机设备
CN112231239B (zh) * 2020-10-19 2022-05-17 海光信息技术股份有限公司 一种页交换方法、装置、cpu、可信硬件及计算机设备

Also Published As

Publication number Publication date
WO2016204913A1 (en) 2016-12-22
US20160371496A1 (en) 2016-12-22
EP3311322B1 (en) 2020-02-26
CN107771335B (zh) 2020-12-15
EP3311322A1 (en) 2018-04-25
US10114958B2 (en) 2018-10-30

Similar Documents

Publication Publication Date Title
CN107771335A (zh) 受保护区域
Proskurin et al. xmp: Selective memory protection for kernel and user space
Lee et al. Hacking in darkness: Return-oriented programming against secure enclaves
Hu et al. Data-oriented programming: On the expressiveness of non-control data attacks
Ward et al. Survey of cyber moving targets second edition
CN103959247B (zh) 虚拟化计算机程序中的安全
Hu et al. Automatic Generation of {Data-Oriented} Exploits
CN106227693B (zh) 多处理器系统中的通信禁用
KR101457355B1 (ko) 보안 애플리케이션 실행을 제공하는 방법 및 장치
CN109583152A (zh) 用于隔离的密码强制执行能力
CN108780425A (zh) 受保护指针
Karger Improving security and performance for capability systems
US20130031364A1 (en) Fine-grained security in federated data sets
US20070106986A1 (en) Secure virtual-machine monitor
CN106462676B (zh) 用于保护计算机程序免受影响的方法和计算机系统
Gu et al. A {Hardware-Software} co-design for efficient {Intra-Enclave} isolation
WO2007050797A2 (en) Secure virtual-machine monitor
Gross et al. Breaking TrustZone memory isolation and secure boot through malicious hardware on a modern FPGA-SoC
Park et al. Libmpk: software abstraction for Intel memory protection keys
Blair et al. ThreadLock: Native Principal Isolation Through Memory Protection Keys
Fong Viewer's discretion: Host security in mobile code systems
Champagne Scalable security architecture for trusted software
Dautenhahn Protection in commodity monolithic operating systems
Faree et al. Protecting security-sensitive data using program transformation and trusted execution environment
Wieland vma_protect: Protecting Memory from Disclosure by Arbitrary Code Execution

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