CN107667350B - 基于虚拟化的平台保护技术 - Google Patents

基于虚拟化的平台保护技术 Download PDF

Info

Publication number
CN107667350B
CN107667350B CN201680028447.7A CN201680028447A CN107667350B CN 107667350 B CN107667350 B CN 107667350B CN 201680028447 A CN201680028447 A CN 201680028447A CN 107667350 B CN107667350 B CN 107667350B
Authority
CN
China
Prior art keywords
trusted
untrusted
application
isr
ppt
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.)
Active
Application number
CN201680028447.7A
Other languages
English (en)
Other versions
CN107667350A (zh
Inventor
R·P·班金沃
S·纳罗潘斯
S·K·诺塔拉帕提普拉巴卡拉
S·K·辛格
A·莫汉
R·L·萨希塔
R·马尔豪特拉
A·贝克什
V·卡玛
J·纳亚克
V·萨卡
R·A·平特
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Priority to CN202111528699.5A priority Critical patent/CN114185648A/zh
Publication of CN107667350A publication Critical patent/CN107667350A/zh
Application granted granted Critical
Publication of CN107667350B publication Critical patent/CN107667350B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1009Address translation using page tables, e.g. page table structures
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • G06F21/53Monitoring 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 by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/651Multi-level translation tables
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

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

Abstract

数据处理系统(DPS)使用平台保护技术(PPT)来保护属于某些软件模块的代码和数据的一部分或全部。PPT可包括虚拟机监视器(VMM),该VMM使不可信应用和可信应用能够在单个操作系统(OS)上运行,同时防止不可信应用访问可信应用所使用的存储器。对于不可信应用VMM可以使用第一扩展页表(EPT)来将客户机物理地址(GPA)转换成第一主机物理地址(HPA)。对于可信应用VMM可以使用第二EPT来将GPA转换成第二HPA。第一和第二EPT可将相同的GPA映射到不同的HPA。描述了其他实施例并要求它们的权利。

Description

基于虚拟化的平台保护技术
技术领域
本文描述的实施例一般涉及数据处理,尤其涉及平台安全性。
背景技术
在常规数据处理系统中,应用可使用所谓的“逻辑地址”来访问存储器。操作系统(OS)可将该逻辑地址转换成线性地址。例如,正在运行的进程可使用逻辑地址,并且当该进程中的指令请求访问存储器时,OS可使用描述符表来将该逻辑地址转换成线性地址。线性地址也可被称为虚拟地址。
此外,数据处理系统可包括具有存储器管理单元(MMU)的中央处理单元(CPU),并且OS可使用该MMU来将虚拟地址转换成物理地址。例如,MMU可提供用于每一活跃进程的页目录以及用于每一页目录的一个或多个页表。具体而言,页表可包括针对虚拟存储器的每一页的页表条目(PTE)以标识对应的物理页。一般而言,MMU可将页目录和页表存储在随机存取存储器(RAM)中,但MMU可使用旁路转换缓冲区(TLB)来高速缓存最近使用的PTE。MMU还可使用其它硬件资源(例如,描述符表)来服务存储器存取请求。例如,CPU中的控制寄存器(CR)(例如,CR3)可以指向当前进程在页目录中的物理地址。当数据处理系统允许OS直接访问MMU时,以上提及的页表可被称为OS页表。
不幸的是,OS可能被恶意软件感染。并且如果OS可访问存储在存储器中的所有数据,则OS可能为系统带来全部种类的严重破坏。例如,在被破解超级用户权限的内核中,攻击者可通过修改页表中的条目(例如将PTE改为指向某一恶意代码)来损害系统的安全性。这种改变可导致代码注入,并且恶意软件由此可访问关键数据。
附图说明
图1是示出用于平台保护技术(PPT)架构的示例实施例的某些组件和通信流程的框图。
图2是示出使用PPT来执行并保护一个或多个可信应用的数据处理系统的示例实施例的框图。
图3是示出根据示例实施例的如何将客户机虚拟地址转换成主机物理页的流程图。
图4是示出根据示例实施例的用于动态存储器分配的示例总流程的流程图。
图5是示出根据示例实施例的用于检查访问权限的示例过程的流程图。
图6是示出根据示例实施例的用于清理存储器的示例总流程的流程图。
图7呈现了描绘根据示例实施例的与创建断言页表(APT)相关联的操作的流程图。
图8呈现了描绘根据示例实施例的与创建APT相关联的操作的另一流程图。
图9是示出与创建APT相关联的某些操作的框图。
图10是示出根据示例实施例的由可信中断服务例程访问的各种安全数据结构的框图。
图11是示出根据示例实施例的使用可信中断服务例程来进入和退出TA的流程图。
图12是示出根据示例实施例的异步的从TA的退出和到TA的恢复的流程图。
图13是示出TA在虚拟地址空间和物理地址空间之间的存储器映射的框图。
图14呈现了描绘根据示例实施例的与创建和保存安全cookie值相关联的操作的流程图。
图15是用于创建用于存储安全cookie值的PPT数据结构的过程的示例实施例的流程图。
图16是示出根据示例实施例的PPT数据结构映射的框图。
图17是描绘根据示例实施例的与从富执行环境切换到可信执行环境相关联的操作的流程图。
图18是示出根据示例实施例的支持调试的过程的流程图。
具体实施方式
为了阐示,本公开描述了一个或多个示例实施例。然而,本教导不限于这些特定实施例。
具体实施方式包括以下六部分:
·部分1:可信视图;
·部分2:断言页表;
·部分3:虚拟中断描述符表;
·部分4:安全Cookie值;
·部分5:异常处置机制;以及
·部分6:结论。
这些部分在下文中在以下介绍资料后呈现。
对于支持虚拟化的数据处理系统,OS可以在虚拟机管理器(VMM)上的虚拟机(VM)中运行。在VM中运行的OS可被称为客户机OS,并且底层VMM可被称为主机OS。不同的VMM可使用不同的技术来防止客户机OS不受限地访问存储器。这些技术可涉及由客户机管理以将客户机虚拟地址(GVA)映射到客户机物理地址的页表。该页表可被称为OS页表或客户机页表。VMM然后可将客户机物理地址(GPA)转换成主机物理地址(HPA)。
根据一种用于限制对存储器的客户机访问的技术,主机OS使用所谓的“影子页表”(SPT)来防止客户机改变用于地址转换的PTE。使用该技术,客户机维护客户机页表(GPT)的一个副本,并且主机在对客户机隐藏的存储器区域中维护该GPT的第二副本。第二副本被称为影子页表(SPT)。另外,主机使用MMU来维护用于从GPA到HPA的转换的页表。由VMM通过使用MMU硬件来管理的页表也可被称为硬件页表。主机通过在客户机尝试访问存储器时陷获每个页错误来维护SPT。响应于页错误,主机更新针对该页的SPT条目。随后,在地址转换期间,主机使用该SPT,而不是GPT。并且由于SPT是在隔离的存储器区域中维护的,因此甚至在来自被破解超级用户权限的内核(rooted kernel)的攻击中也无法修改该SPT。由此,主机可使用SPT来防止客户机OS访问例如某些物理页。然而,该办法增加存储器存取的成本,因为需要对每一次存储器存取执行两次地址转换:客户机OS使用影子页表来执行一次转换,并且然后VMM使用硬件页表来执行另一次转换。而且,VMM为了更新SPT而陷获每一个页错误的成本可能对系统性能产生不利影响。
常规的可信执行环境(TEE)解决方案可能以以下一种或多种方式资源受限:(1)这些解决方案可能需要在单独的OS或者实时OS(RTOS)中主存TEE中的可信应用(TA)。(2)这些解决方案可能需要特殊硬件支持或微代码扩展来促成可信执行。ARM有限公司以名称或商标TRUSTZONE描述的技术具有前一需求,并且该技术需要特殊硬件模式。如由英特尔公司以名称或商标
Figure BDA0001470538900000041
软件防护扩展(SGX)描述的技术可利用微代码扩展来支持TEE。
本公开引入了支持可包括但不限于TEE中的动态存储器分配的特征的保护模型。实现该保护模型的部分或全部组件在客户机OS的层级下操作。换言之,部分或全部组件在平台级操作。因此,出于本公开的目的,本文引入的技术可被称为平台保护技术(PPT)。如以下更详细地描述的,PPT的一个好处是针对用户级(例如,环3)恶意软件并针对内核级(例如,环0)恶意软件保护属于某些软件模块的部分或全部代码和数据的能力。PPT可提供各种可信实体之间的隔离以及在运行时动态地分配、释放和重用存储器的能力。另外,除了TA之间的存储器共享以外,PPT存储器共享模型还可允许TA与不可信OS之间的存储器共享。
而且,PPT可由管理程序管理,并且客户机OS不可以访问共享存储器,除非管理程序明确准许。而且,PPT可以在不复制正被共享的数据的情况下提供共享存储器。另外,TA可以向PPT管理程序发送确定TA对特定存储器缓冲区具有独占还是共享权限的请求。PPT还可以在TA崩溃或退出后和/或在创建TA的进程崩溃或退出后提供存储器清理。
PPT可利用二级地址转换(SLAT)。例如,在一个实施例中,数据处理系统使用扩展页表(EPT)技术来实现SLAT。使用EPT可以比使用SPT更高效。关于EPT技术的更多细节以及用于平台安全性的其它选项在下文中提供。
图1是示出用于PPT架构的示例实施例的某些组件和通信流的框图。如在图例中指示的,可信组件在图1中用点填充来示出。图1的底部示出了处在硬件和固件层的可信安全引擎180。安全引擎180可用于使用例如密码和散列操作来帮助安全引导。安全引擎180可用于确保系统引导至例如可信计算库(TCB)。
硬件和固件之上的逻辑层可被称为管理程序空间。可信PPT VMM 170可以在管理程序空间中操作。PPT VMM 170也可被称为PPT管理程序170。
往上的下一逻辑层可被称为内核空间。不可信PPT驱动程序150可以在内核空间中操作。各种中断处理程序或中断服务例程(ISR)也可在内核空间中操作。例如,PPT驱动程序150可安装可信IRSR(TISR)152的集合以便在内核空间中操作。如在下文中更详细地描述的,TISR 152可用作允许执行从不可信环境转移到可信环境以及从可信环境转移到不可信环境的蹦床函数(trampoline)。不可信安全引擎驱动程序160也可以在内核空间中操作。在主机OS或客户机OS上运行的软件应用可使用安全引擎驱动程序160来与安全引擎180通信。
在一个实施例中,PPT通过只将由可信实体(诸如硬件制造商、原始设备制造商(OEM)或已知的第三方供应商)认证的组件保持在数据处理系统的信任控制边界中来提供TEE。PPT故意将操作系统和其它系统库保持在TCB之外,因为破解平台的超级用户权限可导致安装恶意OS或恶意系统库。
往上的下一逻辑层可被称为用户空间。一个或多个不可信应用130可以在用户空间中运行。不可信应用130可以在用户空间中使用一个或多个不可信库集。这些不可信库集可包括不可信PPT库(UPL)132的集合。UPL 132可包括不可信PPT加载器134。可信PPT库(TPL)122的集合也可在用户空间中使用。不可信应用130可使用PPT加载器134和TPL 122来启动可信应用(TA)120。例如,开发者可编写TA 120并且对照TPL 122静态地链接该TA 120。发起或启动该组合式静态应用可导致系统创建TEE 124,且TA 120在TEE 124内执行。
再次参照内核空间,每当TA与安全引擎180通信,TA就加密数据并且然后通过安全引擎驱动程序160的不安全通道来发送数据。例如,用作平台服务TA的TA可使用安全引擎驱动程序160来编写用于保护由安全引擎180管理的存储或者导出用于给定TA的对称加密密钥的对象块(blob)。安全引擎180具有用于解密或加密正与TA共享的数据的密钥。
出于阐述的目的,本公开涉及其中不可信应用130是银行应用、而TA 120是由该银行应用启动和使用的可信认证功能的假设场景。然而,如将对本领域普通技术人员显而易见的,许多其它种类的不可信应用和可信应用可使用PPT。
图1示出了各种组件之间的运行时关系。例如,图1示出了TA 120在不可信应用130的上下文内运行。并且图1上的双头箭头涉及处在不同层的组件之间的通信。例如,箭头190示出了执行从不可信环境到可信环境以及从可信环境到不可信环境的转移经由担当蹦床函数的TISR 152来进行。箭头192示出了不可信或可信应用用来从VMM 170获取服务的基于超级调用的通信机制。箭头194示出了加密数据经由不可信安全引擎驱动程序在不可信框架之间流动。箭头196示出了安全引擎驱动程序160将加密数据传递至安全引擎180。
箭头198示出了由VMM 170提供给PPT驱动程序150的服务。例如,这种通信可以在PPT驱动程序150使用VMM 170来创建虚拟中断描述符表(IDT)时进行。随后,当中断/异常到达时,处理器对虚拟IDT(VIDT)进行索引以获取指向TISR 152中的合适ISR的指针。该TISR然后可确定(a)该中断/异常应被传递至不可信ISR(UISR)还是(2)它应由TISR自身处置。箭头198还表示在PPT驱动程序150向VMM 170注册可信ISR 152以使得VMM 170能将这些ISR安装在可信存储器中时进行的通信种类。
图2是示出使用PPT来执行并保护一个或多个TA 120的数据处理系统20的示例实施例的框图。数据处理系统20可被实现为例如便携式或手持式计算设备(诸如智能手机或平板)或者任何其它合适类型的计算设备。例如,在一个实施例中,数据处理系统20使用处理器22(如由英特尔公司以名称或商标
Figure BDA0001470538900000061
ATOM分销的那些处理器),并且数据处理系统20使用PPT架构来运行管理程序170并创建TEE 124。数据处理系统20可使用VMM 170来创建隔离的存储器区域以主存属于在富执行环境中运行的应用的安全敏感部分的代码和数据。VMM 170可支持诸如CPU虚拟化(包括描述符表退出)和存储器虚拟化等特征,包括支持EPT和虚拟化功能或指令。这些虚拟化功能或指令可包括使VM能够在不退出到VMM的情况下使用处理器功能的指令。这些处理器指令可包括用于在不可信环境(或世界)和可信世界之间高效地切换的指令。在一个实施例中,这一指令可被称为VMFUNC指令,并且该指令可使用在不导致VMEXIT的情况下(即,在不从客户机切换到VMM世界的情况下)切换EPT(并由此在不可信世界和可信世界之间转变)的处理器功能。避免VMEXIT帮助降低或消除跨不可信世界和可信世界切换的成本。
在图2的实施例中,数据处理系统20包括与诸如RAM 28、大容量存储26和安全硬件182等各种硬件组件通信的至少一个处理器22。在一个实施例中,所有这些组件都可被实现为片上系统(SOC)。在其它实施例中,可使用多个不同的芯片或其它组件。例如,大容量存储26可使用任何合适的存储技术或存储技术的组合来实现,包括但不限于硬盘驱动器(HDD)、固态驱动器(SSD)、只读存储器(ROM)和/或其它类型的非易失性或易失性存储技术。在一个实施例中,处理器22表示一个处理核,并且安全硬件182是不同的处理核的一部分,且安全固件184驻留在嵌入在同一核上或者链接到该核的存储上。安全引擎180(来自图1)可以用诸如安全硬件182和安全固件184等硬件和相关固件来实现。处理器22可包括各种控制寄存器(CR)24,诸如CR3。
大容量存储24包括可被加载到RAM 28中并由处理器22执行的各种指令集。这些指令集可包括软件,诸如PPT VMM 270、客户机OS 32、具有相关联的UPL 132的不可信应用130以及具有相关联的TPL 122的TA 120。不像更多地聚焦于某些组件之间的运行时关系的图1,图2描绘了软件组件、数据结构以及此类组件的逻辑隔离。例如,图2示出了诸如TA 120和不可信应用130之类的组件在逻辑上相异于客户机OS 32。
如图所示,客户机OS 32可包括OS页表80,该OS页表也可被称为客户机页表(GPT)80。在一个实施例中,客户机OS 32可以是由谷歌公司以名称或商标ANDROID分销的OS的映像。其它实施例可使用不同的OS。OS 32还可包括IDT 82及相关联的ISR 154以及其它组件,诸如PPT驱动程序150和安全引擎驱动程序160。VMM 170可允许客户机OS 32更新该IDT和那些ISR。因此,IDT 82可被称为不可信IDT(UIDT 82),而ISR 154可被称为不可信ISR(UISR)154。
另外,VMM 170可以在客户机OS 32的上下文中创建可信内核上下文(TKC)34。VMM170还可将VIDT 84和相关联的TISR 152安装到客户机OS 32中。在安装VIDT 84时,VMM 170还可将CR 24中的寄存器更新为指向VIDT 84,而不是UIDT 82。在安装TSR 152时,VMM 170可将其加载到TCK 34中。VMM 170随后可防止客户机OS 32修改该寄存器以及修改TCK 34的内容。
在图2的实施例中,客户机OS 32在由VMM 170创建并管理的虚拟机(VM)30内操作。另外,不可信应用130和TA 120两者都在客户机OS 32上在同一VM 30内运行。然而,PPT实施可信组件与不可信组件之间的存储器隔离。
另外,VMM 170可将断言页表(APT)94加载到TKC 34中。关于APT的更多细节在以下参照图7提供。
PPT可以在TEE中包括用于动态存储器分配、共享存储器和垃圾收集的独特存储器管理技术。PPT可以提供这些好处,而无需TA被主存在单独的OS中或RTOS中,并且无需特殊硬件支持或微代码扩展。
PPT可提供将属于第三方应用的代码和数据的各部分(或全部)与主执行环境隔离以由此使该第三方应用能够作为TA操作的TEE。具体而言,VMM 170可使用EPT来提供用于该TA的代码和数据的可信视图,同时防止不可信应用访问该代码和数据。例如,VMM 170可以对不可信应用使用不同的EPT,且该EPT提供不包括可信视图中的存储器的不可信存储器视图。可信视图中的存储器因此可被称为隔离的存储器区域。
在一个实施例中,PPT使用硬件辅助式虚拟化技术(VT)(诸如英特尔公司以名称或商标
Figure BDA0001470538900000081
VT分销的技术)来建立信任边界。PPT在受保护存储器区域中配置VMM 170。具体而言,该受保护存储器区域对于OS 32以及该系统中的其它设备是不可访问的。PPTVMM 170主存用于TA的代码和数据的存储器。具体而言,VMM 170使用EPT 90来保护TA,其中用于每一TA的存储器只在一个EPT中映射。访问TA的存储器的任何非授权尝试都导致EPT违例,由此保证只准许对TA的代码和数据的安全且授权的访问。VMM 170由此使用EPT 90来为每一TA提供可信存储器视图。
TA自身经由标准OS调度器来执行,从而导致不改变现有执行模型且无需RTOS。换言之,PPT不需要附加VM。具有不可信运行时系统(URTS)和客户机OS的VM是在PPT VMM之上运行的唯一VM。URTS和客户机OS可被统称为富执行环境(REE)。URTS还可被称为不可信框架。在一个实施例中,一个EPT用于为每一TA提供可信视图,而另一EPT用于为REE提供不可信视图。
如在下文中更详细地描述的,PPT还可提供OS不可知存储器管理-包括在所有情况(包括非预期TA崩溃和主存服务终止)下执行TA后的动态(基于堆的)存储器分配和清理。
部分1:可信视图
如上所示,VMM 170使用EPT 90来提供存储器的可信视图和不可信视图。具体地,图2中描绘的示例场景涉及一个不可信应用130以及一个TA 120。因此,该示例场景涉及两个EPT 90-一个EPT用于不可信应用130及其相关联的不可信环境(包括例如OS 32),而另一EPT用于TA 120。不可信环境还可包括多个不可信应用,且VMM 170可以对所有这些不可信应用使用相同的EPT。然而,如果多个TA将被启动,则VMM 170可以对每一个TA使用不同的EPT。因此,用于不可信环境的EPT提供了不可信存储器视图,而用于TA 120的EPT提供可信视图。
换言之,EPT就像到存储器中的透镜,并且可经由EPT访问的存储器区域构成视图。类似地,视图可被认为是容器,并且该容器可主存或包含代码和数据。例如,TA 120的视图可包含用于TA 120的代码和数据。
如果已经为TA创建EPT,则该EPT可被称为可信EPT;并且它提供的视图可被称为可信视图。类似地,如果已经为不可信环境(包括客户机OS以及在该OS上运行的任何不可信应用)创建EPT,则该EPT可被称为不可信EPT,并且它提供的视图可被称为不可信视图。出于本公开的目的,不可信视图也可被称为视图0,而可信视图可被称为视图1。
每一个视图采用唯一EPT,由此提供与所有其它视图的隔离。换言之,VMM 170对每一个不同的视图使用唯一的EPT,由此在给定视图中运行的软件被防止访问该视图之外的存储器。
该示例场景还涉及用于不可信应用130的一个GPT 80。如在下文中更详细地描述的,TA 120不使用GPT;它改为使用一个APT 94。
图3是示出根据示例实施例的如何将GVA转换成主机物理页的流程图。例如,图3示出了客户机OS 32使用GVA和GPT 80来确定客户机物理页,诸如客户机物理页A和客户机物理页B。另外,图3示出了VMM 170使用EPT来将客户机物理页A和B分别转换成主机物理页A和B。此外,图3示出了不同视图可以提供对同一GVA的不同类型的访问。例如,图3示出了存储器视图0如何提供对主机物理页的只读(R__)访问,以及存储器视图1如何提供对主机物理页的读取与执行访问(R_X)。
PPT驱动程序
再次参照图1和2,PPT驱动程序150管理多个任务,诸如设置并管理VIDT 84以及主存用于诸如中断29、30和31等一些中断的ISR。在一个实施例中,用于中断29的ISR(Int-29)导致当前正在执行的进程从不可信代码执行转变至可信视图。用于中断31的ISR(Int-31)导致执行控制从可信视图转移至不可信视图。用于中断30的ISR(Int-30)导致当前进程在已被异步中断中断后恢复可信视图。
出于本公开的目的,服务于以上参照中断29-31讨论的目的的中断可被分别称为TA进入中断、TA恢复中断以及TA退出中断。另外,这些中断一般可被称为PPT中断。类似地,对应的TSIR可被分别称为TA进入ISR、TA恢复ISR以及TA退出ISR,且更一般地被称为PPTISR。在其它实施例中,其它中断号可用作PPT中断。
PPT管理程序
以比客户机OS 32更高的特权运行,VMM 170提供可信视图中的代码和数据与包括视图0(即,不可信视图)的其余视图的所需隔离。VMM 170实现多视图模型并且管理针对每一视图的EPT指针92。
用户应用和其它基于OS的软件通过可通过cpuid或vmcall来实现的超级调用来与管理程序170通信。
在示例实施例中,VMM 170以更高的特权执行,如同它在英特尔公司以商标
Figure BDA0001470538900000101
VT或
Figure BDA0001470538900000102
VT-X的名义分销的虚拟化技术所支持的根模式中运行。该虚拟化技术可使用虚拟机扩展(VMX)来允许进入根模式。因此,根模式可被称为VMX根模式。在其他实施例中,可使用其它技术来提供类似的功能。
此外,VMM 170管理EPT以保护已经从由VMM 170管理的存储器空间分配的存储器,由此提供与客户机可访问物理存储器的隔离。每一存储器视图由管理程序使用单独的EPT分层结构来管理。如以上参照图3所指示的,每一个EPT将具有恰当的读/写/执行许可的客户机物理存储器页映射到客户机OS 32利用的物理存储器页。VMM 170可执行以嵌套方式将客户机虚拟地址转换成最终主机物理页的处理器页走查。
在一个实施例中,所有可信视图构成已经从VMM堆分配的存储器,并且所有不可信视图构成具有与OS分配的客户机物理地址相同的主机物理地址的存储器。例如,不可信EPT可指定GPA等于HPA,这实际上意味着客户机拥有正尝试访问的存储器。然而,其它实施例可使用其它办法。例如,在其它实施例中,VMM不可以从其堆分配用于可信视图的新主机物理地址,但可改为只改变EPT中的许可。
一旦构造一个或多个可信视图,对从可信视图去往不可信视图的执行的控制经由TISR 152。
在一个实施例中,EPT通过指定访问权限并从客户机物理页映射到主机物理页来定义视图。然而,哪一个应用能访问视图由TISR 152和VMM 170的组合来控制。例如,在一个实施例中TISR可以只允许创建该视图的应用使用该视图。在另一实施例中,该限制可通过使用不同的TISR来放松。
而且,如上所示,在一个实施例中VMM 170只在VMX根模式中运行。当VMX根模式活跃时,EPT不是活跃的。VMM 170用于其自己的代码和数据的存储器在可信或不可信EPT映射中是不可见的,并由此它保持受保护以免遭客户机世界的攻击。然而,当数据处理系统20正在客户机模式(即,非VMX根模式)中运行时,一个EPT将被用来提供存储器保护。
动态存储器分配
TA 120可动态地分配存储器。
图4是示出TA 120在不可信应用130已经启动TA 120后进行动态存储器分配的示例总流程的流程图。图4的流程开始于TA 120在具有可信存储器视图的情况下执行。换言之,VMM 170正在使用EPT 90中的可信EPT来为TA 120提供可信存储器视图。
TA 120然后可使用可信存储器分配指令或函数(例如,malloc)。TA 120可以从例如TPL 122中的可信侧C库(例如,tlibc)调用可信分配函数。可信分配函数可使用外部调用(oCall)函数,并且对于实际系统调用该oCall函数可暂时从可信视图退出到不可信视图以便在页大小上对齐存储器分配。oCall函数可使用来自UPL 132的不可信分配函数(例如,PPT-malloc)来始终在页边界上执行存储器分配操作。来自UPL 132的分配函数然后可以对VMM 170做出超级调用,以指令VMM 170将对新分配的存储器的独占访问权给予最初由TA120使用的可信视图。
基于OS页表映射,VMM 170然后可确保调用者(即,来自UPL 132的分配函数)具有更新(例如,读写或“RW”)访问权。例如,VMM 170可走查GPT 80以逐页获取对刚刚分配的虚拟地址范围的访问许可。换言之,VMM 170可确定GPT 80是否向主存进程(正在不可信视图中运行)提供RW访问权。出于图4的目的,主存进程包括UPL 132以及在用于不可信环境的视图内执行的任何其它软件。
如果不可信视图中的主存进程不具有RW访问权,则VMM 170可通过在返回状态中返回错误来使超级调用失败。然而,如果正在运行的主存进程具有RW访问权,则VMM 170可以在确保所请求的许可不给予该存储器上的“执行”许可后用所请求的许可来更新EPT 90中的用于TA 120的可信EPT。VMM 170由此可动态地将TA 120的视图调整为包括所分配的存储器。
如果TA 120已经请求对所请求的存储器的独占访问权,则超级调用将向VMM 170传达该需求/参数。为了给予TA 120独占访问权,VMM 170从其堆分配受保护存储器并且在针对TA 120的可信视图的EPT中映射该存储器。
当从UPL 132中的PPT-malloc函数返回到TPL 122中的可信分配函数时,PPT-malloc返回所分配的存储器缓冲区或区域的地址。如下所示,可信分配函数随后可将该存储器指针返回到TA 120。
由此,虚拟地址分配在不可信环境中进行,并且VMM 170将HPA所标识的新物理区域映射到该同一虚拟地址范围。
在PPT-malloc已经将存储器指针返回到可信分配函数后,可信分配函数然后可确保存储器缓冲区访问权限对于TA 120是独占的。
图5是示出用于检查访问权限的示例过程的流程图。如图所示,TA 120可使用TPL122来将存储器地址和大小与权限询问一起传递至VMM 170。作为响应,VMM 170可指示TA120对所指定的存储器范围具有独占权限还是共享权限。而且,存储器范围可具有任何类型,例如malloc分配的存储器、栈存储器或共享存储器。
再次参照图4,TLP 122然后可以在将指针给回到TA 120之前初始化所分配的存储器。替换地,TLP 122可跳过该初始化步骤,例如在VMM 170已经将数据从不可信客户机存储器复制到VMM 170所分配的存储器的情况下。此外,在其它实施例或场景中,用于给予对存储器的独占TA访问权的超级调用可以从除malloc上下文之外的上下文中调用。
如可以从图4中看到的,PPT确保TA 120按照运行时需求获得不断增长的堆。更重要地,这以安全方式完成,其中可信应用库必须确保权限许可通过超级调用给予正在考虑的存储器页。
PPT还向TA 120提供将从可信环境中调用的存储器释放函数(例如,“Free(释放)”),并且该函数可以与以上提及的malloc极为类似地运转,不同之处在于它释放先前分配的存储器。
共享存储器
PPT还提供用于包括以下各项的场景的共享存储器:(i)不可信应用130与TA 120共享缓冲区或相反;以及(ii)TA 120与另一TA共享缓冲区。其间进行共享的两个实体可以处在或不处在同一进程中。
在示例进程中,TA 120与可被称为TA2的另一TA共享存储器。而且,这两个TA驻留在不同的进程中。共享过程涉及两个主要步骤:共享和映射。
对于共享步骤,TA 120创建第一缓冲区。TA 120然后请求VMM 170与实体列表-该情形中是TA2共享该第一缓冲区。VMM 170创建用于管理共享存储器的本地数据结构并且将缓冲区句柄返回到TA 120。该缓冲区句柄可被称为共享存储器句柄。
对于映射步骤,VMM 170将共享存储器句柄传递至TA2驻留在其中的进程。TA2然后创建具有起始地址的第二缓冲区。使用第二缓冲区的起始地址以及共享存储器句柄,TA2请求VMM 170映射到共享缓冲区。作为响应,VMM 170更新用于TA 120的EPT以及用于TA2的EPT以使得这些EPT将相同的物理页映射到TA 120和TA2所创建的缓冲区的虚拟页。因此,TA2可通过访问TA2所创建的缓冲区来访问TA1的共享数据。
如果TA 120和TA2驻留在同一进程中,则TA2无需创建新缓冲区。它可以仅仅用TA1所创建的相同的缓冲区地址来调用映射请求。
而且,为了使该解决方案通用,在以上流程中TA 120或TA2可被不可信应用替换。
该解决方案的一个益处是不复制数据。另一好处是在数据共享中不涉及OS。VMM170管理共享存储器。存储器只能由已被VMM 170授予显式访问权的TA访问。因此,共享存储器是安全的。
存储器清理
TA的垃圾收集应当在存储器不再被需要时完成。除了TA完全终止之外,存储器可以在TA在执行期间崩溃或者创建TEE会话的进程退出的情况下不再被需要。
图6是示出用于清理存储器的示例总流程的流程图。如箭头1所示,调用者进程(例如,不可信应用130)在TEE中创建可信应用(例如,TEE 124中的TA 120)。例如,不可信应用130可使用PPT加载器134来创建TA 120。
另外,数据处理系统20在引导时间启动被称为监视器172的特殊进程。在一个实施例中,监视器172是或多或少地与不可信应用130和TEE 124并行操作的不可信进程,并且监视器172跟踪创建TA的所有进程。例如,如箭头2所示,一旦不可信应用130创建TA 120,不可信应用130就可将自身与监视器172连接。具体而言,在不可信应用130的上下文中执行的UPL 132之一可使用已命名的管道或任何其他合适的机制(包括便携式OS接口(POSIX)进程间通信(IPC)机制,如信号、套接字等)来与监视器172连接。如箭头3所示,不可信应用130然后可使用TA 120。
一旦TA 120的执行完成,则调用者进程(不可信应用130)检查TA 120是否在其执行期间崩溃。如果不可信应用130确定TA 120退出或崩溃,则不可信应用130可直接执行存储器清理,如箭头4所示。否则,不可信应用130可以继续运行。一旦不可信应用130退出,不可信应用(UA)130与监视器172之间的管道断开。这触发监视器进程发起垃圾收集,如箭头5所示。
该垃圾收集独立于任何OS或RTOS,因为这是甚至OS也无法访问的受保护TA存储器。VMM 170跟踪被指派给每一个TA的存储器并且依靠监视器进程和不可信侧进程来发起清理过程。如果TA崩溃,则不可信侧进程(例如,不可信应用130)应发起对TA存储器的清理。如果不可信侧进程自身崩溃,则监视器进程将发起垃圾收集。
部分2:断言页表
APT使用不同的办法来提供与SPT所提供的保护相类似的保护。APT和SPT之间的一个区别在于APT不是基于页错误来维护的。取而代之的是PPT VMM在TA被加载到存储器中时在APT中为与该TA相关联的每一代码页和每一数据页创建条目。例如,如下所示,PPT加载器134可以在PPT加载器134将用于TA 120的每一页加载到存储器中时自动指令VMM 170在逐页的基础上创建APT 94的条目。
该办法提高了TA的运行时性能,因为它缓解了由于页错误导致的恒定的VM退出和VM进入。APT还导致更好的性能,因为页表占用空间小。PPT VMM仅仅将针对需要由TA访问的存储器的条目置于APT中。相比于SPT,这还导致APT的更小的存储器需求。
另外,当创建APT时,用于保存该APT的存储器并非从客户机OS存储器分配,而是从客户机OS不可访问的隔离的存储器区域分配。使用存储器虚拟化来显式地将对APT的访问权仅仅给予拥有它的TA。OS无法对这些页进行读取或写入。取而代之的是完全由PPT VMM来管理APT。由于客户机OS无法修改APT中的条目,因此上述攻击被缓解。
使用APT的好处在于能在不采用实时OS(RTOS)的系统中使用APT并且能在没有专用处理器指令的情况下使用APT。作为对比,其他系统可能需要在不同处理器上运行的RTOS来为TA提供安全页表。此外,APT由在其系统的TCB中的VMM创建。
再次参照图2,在示例场景中,VMM 170在TA 120被加载到RAM 28中时创建APT 94。用于APT 94的存储器被保护以免遭从OS 32的视图的访问。因此,OS 32无法对其进行读取或写入。APT 94完全由VMM 170在VMX根模式中管理。
如以下更详细地描述的,当PPT加载器134加载TA 120时,PPT加载器134向VMM 170注册用于TA 120的代码和数据页中的每一者。作为响应,VMM 170走查OS页表并获取该页的GVA到GPA映射以及页属性,并且VMM170然后在APT 94中创建类似的条目。这继续直到加载整个TA。在向管理程序注册TA页时,PPT加载器134还将页类型(代码/数据/保护页)作为参数发送到VMM 170,并且VMM 170在APT 94中为这些页设置合适的许可(RX/RW/RO)。
一旦TA 120的所有页都被注册,PPT加载器134就信令通知VMM 170锁定APT 94。从那一刻起,不再能向APT 94添加针对附加代码页的条目。
为了在APT 94中创建每一个条目,从OS 32不可访问的隔离的存储器区域取得存储器。该隔离的存储器区域可由VMM 170管理。在一个实施例中,管理程序使用如以上参照图4描述的办法来向所有者TA给予对APT存储器的独占权限。
就在进入TA 120之前,TISR 152之一更新被假设指向用于TA 120的页表库的控制寄存器(CR)(例如,CR3)以使该CR指向用于TA 120的APT根。
图7呈现了描绘根据示例实施例的与创建APT相关联的操作的流程图。具体而言,图7描绘了主要从PPT加载器134的视角来看的那些操作。所示过程开始于框210,其中不可信应用130调用PPT加载器134来启动TA 120。作为响应,如框212所示,PPT加载器134将所有TA 120都读取到存储器中。例如,PPT加载器可将TA 120读取到PPT加载器的存储器空间中。如框214所示,PPT加载器134然后可分配等于主存TA 120所需的大小的动态存储器。在PPT加载器已完成将TA 120加载到该存储器(如下所述)后,该存储器将包括代码、静态数据、栈存储器和某些其它特殊页。
如框216所示,该动态分配将导致OS 32在GPT 80中创建针对所分配的页的条目。如框218所示,PPT加载器然后解析已被读取的TA图像并且将内容从第一页复制到所分配的存储器。另外,PPT加载器向VMM 170注册该页,如框220所示。如在下文中参照图8更详细地描述的,VMM 170然后可将该页添加到TA 120的可信视图。
如框222所示,PPT加载器134然后可确定用于TA 120的所有页都已被加载并注册。如果没有,则该过程可返回到框218,PPT加载器134逐个加载并注册每一页,如上所示。
在已加载并注册所有页后,PPT加载器134可指令VMM 170锁定APT 94,如框224所示。
图8呈现了描绘根据示例实施例的与创建APT相关联的操作的另一流程图。具体而言,图8描绘了主要从VMM 170的视角来看的那些操作。这些操作可以开始于框230,其中VMM170确定它是否已经从PPT加载器接收到注册用于TA 120的页的请求。如果PPT加载器正向VMM 170注册页(如框232所示),则VMM 170可以从隔离的存储器区域分配用于该TA页的存储器。
此外,如框234所示,如果APT 94需要另一页来容适另一条目,或者如果这是第一个条目并由此是用于APT 94的第一页,则VMM 170可以从隔离的存储器分配用于APT 94的页。如框236所示,VMM 170然后可以在GPT 80中走查该虚拟页地址以获取对应的GPA。VMM170然后可通过创建新条目来将从GVA到GPA的相同映射添加到APT 94。如框240所示,VMM170然后可通过将GPA映射到来自框232的HPA来在EPT中为TA 120分配新条目。
如框250所示,VMM 170然后可确定PPT加载器134是否已经指令VMM170锁定APT94。例如,PPT加载器134可标识用于TA 120的代码页,并且PPT加载器可指令VMM 170锁定针对这些页的APT条目。作为响应,如框252所示,VMM 170可认为对于代码页APT 94被锁定,并且VMM 170因此可防止任何附加代码页被添加到APT 94。然而,其它动态堆页可被添加到TA120的视图并由此稍后被添加到APT 94。例如,在共享存储器情形中,不可信视图可能想要与可信视图共享某一存储器;并且在该情形中,VMM 170可以向APT 94添加对应于该共享存储器的条目。
如框254所示,在VMM 170已经锁定APT 94后,来自TISR 152的TA进入ISR可将APT94的根地址加载到CR3中。TA进入ISR在进入流的时间被调用。换言之,在TA 120由所描述的过程通过框252创建后,不可信代码流可能想要进入TA 120以初始化或使用TA 120所展示的服务。在每一次进入TA 120之际,蹦床函数流将APT 94的根地址加载到CR3中,以切换至可信视图页表。如以下更详细地描述的,该蹦床函数流可由TISR 152之一执行。
因此,TA创建可以结束于框252,并且TA进入可以开始于框254,视图从不可信切换至可信。然后,如框256所示,VMM 170导致TA 120开始以可信视图执行,并且图8的过程可结束。
随后,TA退出ISR可以通过将CR3修改为指向GPT 80来从可信视图切换至不可信视图。
图9是示出与创建APT 94相关联的某些操作的框图。除了上述操作以外,图9还示出了VMM 170使内部高速缓存(诸如包含GVA到HPA映射以及GPA与HPA之间的映射的TLB)无效以确保客户机软件能够在通过GVA参照时定址正确的物理页。此外,在箭头5,图9示出了存储器管理模块为一页创建APT条目。具体而言,存储器管理模块可以用匹配GPT 80中的页属性的页属性以及基于页类型的页许可来配置该条目。
部分3:虚拟中断描述符表
通过损坏调用者栈来跳转到函数的中间是常见的安全问题。该剥削的影响在可完成从不可信应用空间到可信应用空间的跳转的情况下提升,因为这一跳转会破坏TEE本身。为了缓解这个问题,常见的办法是开发出其中对TEE中的预定位置做出从不可信空间到可信空间的跳转并且该TEE然后在设置可信环境后跳转到特定可信方法的架构。
到TA的跳转也可以在中断已经将执行取出到OS处理程序后进行,并且然后运行时环境从TA执行被中断的时刻恢复该执行。恶意软件/木马可攻击不可信运行时环境并且跳转到TA中的可损害安全性的任意位置。具有基于管理程序的TEE的系统可使用由ARM有限公司以名称或商标TRUSTZONE描述的技术来切换到和切换出安全世界。然而,该技术需要专用硬件指令和特殊硬件模式,并且它需要在以安全世界模式运行的安全OS主机的上下文中运行TEE。因此,该技术需要VMM执行准虚拟化或全虚拟化。
这部分描述了PPT特征,这些PPT特征消除对特殊硬件支持的需求以及对VMM提供全虚拟化或完整虚拟化的需求以使得数据处理系统能够运行安全OS和不安全OS两者。例如,如以下更详细地描述的,具有PPT的数据处理系统可使用VIDT来促成TA中的安全进入。此外,数据处理系统可以在不安全OS本身的上下文中运行TEE。因此,到安全世界和不安全世界的切换如同改变EPT指针那样简单,并且该改变可由单个CPU指令执行。
再次参照图2,到TA 120中的进入主要由于两个原因发生:(1)不可信应用130调用TA 120来利用TA 120所展示的功能以及(2)从在运行TA 120代码时由于各种中断和/或异常而发生的异步退出中恢复。在第一个情形中,数据处理系统20可使用作为蹦床函数的TA进入ISR来跳转到TA 120中的预定位置。在第二个情形中,数据处理系统20可使用TA恢复ISR来安全地从在发生中断时待决的下一指令恢复TA 120。
图10是示出根据示例实施例的由TISR 152访问的各种安全数据结构的框图。此类数据结构一般可被称为PPT数据结构(PDS)。这些结构之一是SGX飞地控制结构(SECS)310。SECS 310可被实现为VMM 170与TISR 152之间的共享页。VMM 170可以为每一个TA创建一个SECS。SECS 310包含用于管理TA 120的数据,诸如TA 120的基地址。例如,在PPT加载器134已经将TA 120加载到存储器中后,PPT加载器134可分配存储器并在该存储器中复制TA代码、数据和线程上下文相关页。所分配的存储器的起始地址变成TA基地址。PPT加载器134然后可以向VMM 170传递TA 120的基地址作为create_view()超级调用的一部分。VMM 170然后可将该基地址存储在用于新创建的视图的SECS页中。
如图所示,TA 120的可信视图312可包括来自TA 120和TPL 122的代码和数据页。可信视图312还可包括用于将关于每一线程的上下文数据存储在TA 120进程中的一个或多个线程上下文数据结构(TCDS)314。如图所示,TCDS 314可包含线程控制结构(TCS)、用于线程数据(TD)的线程本地存储(TLS)、状态保存区域(SSA)、保护页、栈页、参数页等。TCDS 314以及TCDS 314内的每一结构还可构成由TISR 152访问的数据结构。
每一PDS可由不同的组件访问和使用。例如,TD可由TA 120访问和使用,TCS可由TISR 152访问和使用,SECS 310可以在VMM 170与TISR 152之间共享,SSA可只由TISR 152使用等等。然而,数据处理系统20可以为每一视图创建不同的PDS集合,并且这些PDS可以从VMM堆存储器分配。
在一个实施例中,作为用于初始化用于TA 120的一些因线程而异的结构的过程的一部分,PPT加载器134准备TLS。来自可信侧上的TPL 122的一个或多个程序然后取得TLS的经初始化的内容并且对结构成员进行某些重定位并创建TD。参照图2,SECS 310可作为在VMM 170与TISR 152之间共享的可信页驻留在VM 30之外的RAM 28中。
图11是示出根据示例实施例的使用TISR来进入和退出TA 120的流程图。具体而言,图11示出了涉及从不可信应用130到TA 120的典型调用的示例流程。
然而,在图11的过程开始之前(例如TA 120的二进制代码已被构建时),开发者将使用TA 120的二进制代码中的ELF首部中的可执行和可链接格式(ELF)符号来定义针对TA120的共用入口点。该入口点可以按照与基地址的偏移来定义。同样,数据处理系统20将创建用于TA 120的TCS,并且数据处理系统20将入口点偏移存储在TCS中。
另外,为了保护机密性和完整性,TCS被包括在离线签名过程中,该离线签名过程包括散列化TA 120的所有代码和数据页的内容(这些页包括TCDS314)以及用TA供应商的Rivest-Shamir-Adleman(RSA)私钥来签署该散列。被散列化的内容可被称为TA对象块。VMM170随后执行(a)散列验证以确保TA对象块的完整性(包括TCS的完整性)以及(b)使用TA供应商的RSA公钥来进行签名验证以确保TA对象块的机密性(包括TCS的机密性)。
不可信应用130然后可使用PPT加载器134来将TA 120加载到存储器中。
如图11所示,不可信应用130然后可以对TA 120做出调用。具体而言,不可信应用130可解析用于TA 120的ELF首部以提取各种符号,诸如入口点偏移,并且不可信应用130然后可将该偏移用作为参数来调用函数或执行语句以进入可信视图。
出于本公开的目的,用于从不可信应用调用可信应用的函数或语句可被称为进入调用。在一些实施例中,进入调用可被实现为诸如UPL 132等UPL中的ecall或Se_ecall函数。如以下更详细地描述的,ecall函数可使用TA进入中断来调用TA进入ISR,并且TA进入ISR可使用VMFUNC指令来从不可信视图切换到可信视图。
具体而言,在图11的实施例中,当ecall函数被调用时,URTS通过将来自该调用的参数加载到寄存器中并且然后调用保留的TA进入中断(例如,Int-29)来进行响应。URTS可使用例如“int”指令来调用软件中断。数据处理系统20然后可基于VIDT 84来自动启动来自TISR 152的对应的TA进入ISR。
在一个实施例中,VIDT 84使用如在美国专利no.8,578,080中描述的教导来处置此类中断。例如,VIDT 84可包括用于从被中断的程序的视图退出到在VIDT 84中注册的TISR的视图的退出存根以及供每一TA将中断处理程序的视图切换回到被中断的程序的视图的重新进入存根。此外,VIDT 84可以驻留在具有对所有其它程序的只读许可视图的主机存储器页中以禁止VIDT 84的篡改。
如图11所示,一旦TA进入ISR已经启动,它就可读取并确认SECS 310。如果SECS310有效,则TA进入ISR然后使用VMFUNC指令来切换到TA 120的可信视图。另外,TA进入ISR切换到可信页表(即,APT 94)以缓解页重映射攻击。TA进入ISR还将包括已由硬件在“int”之际自动保存的返回指令指针(RIP)的所有通用寄存器(GPR)状态连同硬件保存的寄存器状态一起复制到可信环0栈以进一步提高安全性。另外,TA进入ISR从TCS 314中读取入口点偏移。
在一个实施例中,数据处理系统20使用EPT保护来保护TCS和其他PDS,以使得用于不可信视图的EPT不具有访问这些私有数据结构的许可。因此,TA进入ISR可依赖于偏移是正确的。TA进入ISR然后从SECS 310中检索TA 120的基地址,并将偏移添加到基地址。该添加给出TA 120的实际入口点地址。
TA进入ISR然后用TA 120的入口点地址来替换或盖写已由硬件在“int”之际自动保存的RIP。TA进入ISR然后执行中断返回或“iret”指令,该指令导致控制跳转到该入口点。
如果这是第一个ecall,则TRTS(例如,TPL 122中的一个或多个程序)通过将TCS地址添加到已由PPT加载器134填充的TLS中的各个字段来初始化TA 120的TD。并且即使TLS可能已经在它被PPT加载器134初始化时被认为是不可信的,该TLS也可被认为是机密性和完整性受保护的数据,因为随后作为可信页的一部分,TLS的所有经初始化内容都将由VMM170复制到受保护的存储器。并且该初始化可被认为是可靠的,因为TLS也曾是TA对象块的已被散列化并签名且稍后被VMM 170验证的部分。
在初始化后,TD包含指向可信栈的指针。TRTS然后使用该可信栈指针来切换到可信栈,因为TA执行必须使用用于保存局部变量的已知私有栈并返回TA函数的地址。TRTS然后可将控制传递至TA 120,并且TA 120然后可执行。
在TA函数返回后,对TA进入-退出流的控制回到TRTS(例如,TPL 122中的一个或多个程序),并且TRTS然后通过调用TA退出中断(例如,Int-31)来安全地返回。作为该安全返回的一部分,TA退出代码清空GPR,由此保护信息免遭通过寄存器泄漏。另外,TA退出代码在调用TA退出中断之前切换回到不可信栈。
TA退出ISR然后将切换回到不可信视图,并且通过将CR3指向GPT 80处的OS页表库来加载常规OS页表。此外,TRTS在寄存器之一中传递返回IP,并且TA退出ISR将该IP加载到中断栈返回框架。TA退出ISR然后执行Iret,该Iret导致控制跳转到进入指令后的下一指令(即,TA进入中断后的下一指令)。作为响应,URTS然后恰当地将控制返回给ecall的调用者(即,不可信应用130)。
图12是示出根据示例实施例的异步的从TA 120的退出和到TA 120的恢复的流程图。从异步退出的这一恢复可以在执行TA代码时当中断来到时进行。
如果中断在执行TA 120时出现,则该中断导致异步退出。VIDT 84被设置以确保可信ISR对每一次这样的异步退出执行。例如,响应于该中断,VIDT 84可使得来自TISR 152的通用(GP)或“非保留”ISR确定当前正在执行的代码是否正在使用TA。例如,该TISR可使用view-id函数来确定当前视图是否是可信视图。如果当前视图不是可信视图,则TISR将该中断移交给客户机OS的中断处理程序。
然而,如图12所示,如果当前视图是可信视图,则TISR将包括RIP的当前GPR状态保存在SSA中,该SSA是TA 120中的在可信视图外不可见的数据区域。
TISR还用中断栈中的不可信运行时的异步退出指针(AEP)来替换当前栈上的RIP。TISR还用中断栈上的不可信运行时栈指针(RSP)来替换可信RSP。这样做使得“iret”能跳转到URTS中的已知退出点。
此外,TISR准备中断栈上的综合GPR状态。这确保GPR中可用的潜在可信秘密信息不被暴露给外部世界。综合状态中的一个GPR包含指示为了使控制回到TA 120,控制必须来自恢复流的标志。
TISR然后从可信页表切换到不可信页表(例如,通过将CR3从指向APT 94切换到指向GPT 80)。
TISR然后使用VMFUNC来从可信试图切换到不可信视图。TISR然后从可信环0栈切换到不可信环0栈。TISR然后将所有综合GPR状态复制到不可信栈。TISR然后通过执行返回指令来跳转到OS ISR。OS ISR然后处置该中断。
OS ISR然后执行“iret”,此刻控制被转移至URTS中的AEP。URTS然后将目标视图id推入另一GPR中。换言之,URTS将要进入的视图的标识符保存在寄存器中。URTS然后使用“int”指令来触发保留的TA退出中断(例如,Int-30)。
然后,用于在异步退出后重新进入TA 120的其余流程可以类似于同步进入,不同之处在于入口点从SSA中的RIP条目中取得。此外,异步中断时的可信视图的GPR状态从SSA中取得并置于可信环0栈中,以使得在“iret”之际,架构状态在重新进入TA 120时被保留。
部分4:安全Cookie值
TEE需要包含用于正确且安全的执行的状态信息的至少一个数据结构。例如,在一个实施例中,PPT涉及用于每一TA的SECS、用于每一TA的TCS等,如上所示。此类数据结构需要被保护以免遭来自不可信世界的读取、写入以及执行访问。用于通过加密或受限许可来提供保护的一些技术利用OS管理的页表或VMM管理的EPT。然而,考虑到可能的攻击的多样性,这些技术可能太复杂或不足。
本公开引入了安全cookie值(SCV),该SCV从安全硬件代理获取并且被可信软件块(诸如VMM 170)用来修补针对完整性和机密性进行保护的软件(诸如TA 120)。在修补后,该SCV变成受保护软件的一部分。SCV然后与EPT保护的数据结构中的对应值进行比较。在一个实施例中,该EPT保护的数据结构是SECS 310。在失配的情形中,受保护软件的执行在该软件可能从TEE泄露出任何安全敏感信息之前被中止。该解决方案还可以免遭基于页重映射的攻击。例如,即使被损坏的OS内核执行对TEE的私有数据页的存储器重映射,该解决方案也提供了保护。
为了保护在TEE 124的上下文中运行的TA 120的私有数据,允许转入TA 120和转出TA 120的蹦床函数代码执行SCV校验。在一个实施例中,该蹦床函数代码被实现为TISR152。SCV本身由硬件随机生成并由VMM 170高速缓存。VMM 170然后将该SCV写入或补入到TISR流中。例如,VMM 170可将SCV修补到TISR 152中的各个指令偏移。另外,VMM 170将SCV写入到用于TA 120的SECS(即,SECS 310)。然后,在将控制转移至TA 120之前,TISR 152中的一个或多个程序对照已被补入到TISR 152中的SCV来校验SECS 310中的SCV以确保它们匹配。TISR在校验失败的情况下中止TA 120的执行。由此,校验将存储在EPT保护的数据结构(SECS 310)中的随机生成(由硬件)SCV与由可信软件实体(VMM 170)补入在蹦床函数代码(TISR 152)中的值进行比较,并且蹦床函数执行在校验失败的情况下被中止。因此,TEE124未被激活。
可信世界中的SECS 310的物理内容使用基于EPT的存储器虚拟化技术来隐藏。但蹦床函数执行要求在蹦床函数代码中引用正确的数据结构,即使OS的页表由攻击者操纵以将该数据结构的虚拟地址映射到不同的物理页。随机安全cookie校验进行保护以免遭这种类型的攻击。
图13是示出TA 120在虚拟地址空间和物理地址空间之间的存储器映射的框图。如上所示,虚拟地址还可被称为线性地址。因此,图13将TA 120的客户机虚拟地址空间描绘为“TA线性地址空间”,并且图13描绘了对应的“主机物理存储器”。因此,所示数据结构可通过TEE和不可信REE两者的相同的虚拟地址来访问。然而,数据结构的物理副本基于EPT映射保持不同。
具体而言,图13示出了在线性地址空间中,诸如SECS、VIDT、ISR、全局描述符表(GDT)等结构只可由以最高特权等级(例如,环0)运行的软件访问。另外,图13示出了当前视图将一些对象重新映射到在可由OS寻址的存储器的顶部之上的主机物理存储器地址。具体而言,GDT和共享存储器驻留在OS可用存储器的顶部之下,但其它组件(例如,TA代码和数据、SECS等)驻留在OS可用存储器的顶部之上。如图13所示,驻留在OS可用存储器的顶部之上的组件已经经由视图重新映射到管理程序或VMM堆。
因此,这些组件被保护以免遭直接存储器存取(DMA)攻击。一些设备可使用DMA来直接访问物理存储器(即,在不通过页表或EPT来进行线性到物理地址转换的情况下访问物理存储器)。然而,VMM堆是从硬件保护以免受DMA访问的特殊存储器池中分配的。由此,VMM存储器被保护以免遭基于DMA的攻击,否则该攻击可导致数据盗取或非预期代码执行。
GVA到GPA映射由不在系统的TCB中的OS页表控制。PPT通过SCV机制来确保数据结构的私有副本有效,该SCV机制不需要特定OS支持并且还提供针对页重映射攻击(涉及改变OS页表条目)的保护。另外,SCV不需要设置私有页表来将虚拟地址映射到安全物理地址。
在一个实施例中,在TEE(例如,TEE 124)内运行的每一个TA(例如,TA 120)具有其私有SECS(例如,SECS 310)。在进入TA 120和退出TA 120时使用SECS 310。SECS 310中的数据对于TA 120是唯一的,并且SECS 310只由受保护的蹦床函数页(诸如TISR 152)访问。SECS 310不能由用于TA 120的TCB之外的任何其它可信或不可信组件访问。
另外,组件必须以最高特权等级(例如,环0)运行以访问包含SECS 310的页。并且TISR 152只以最高特权等级运行。此外,在OS 32之下运行的VMM 170将SECS页和TISR蹦床函数页映射到环0。VMM 170还将这些蹦床函数页配置成具有只执行许可。
在VMM 170的初始化期间,VMM 170使用处理器22或安全硬件182中的随机数发生器来获取随机数或现时数以用作系统SCV。VMM 170然后将该SCV补入到TISR 152中以便在其中将进行比较的代码中添加cookie。VMM 170还在TA创建时将该SCV写入到SECS 310中。随后,蹦床函数代码将补入的SCV与SECS 310中的SCV比较。此外,如果存在多个TA,则VMM170可将相同的SCV给予每一个TA。
图14呈现了描绘根据示例实施例的与创建和保存SCV相关联的操作的流程图。所示过程开始于框410,其中PPT加载器134例如响应于不可信应用130调用TA 120而调用PPT驱动程序150。PPT驱动程序150可能已经被初始化。
如框412所示,PPT驱动程序150然后可以将SECS 310的GVA与注册SECS 310的请求一起传递至VMM 170。如框414所示,PPT驱动程序150然后可以为TA 120分配SECS 310。
如框416所示,VMM 170然后可将SCV加载到SECS 310中。如上所示,VMM 170可能已经在VMM 170被初始化时获取该SCV。如框418所示,VMM 170然后可以在用于TA 120的APT(即,APT 94)中映射SECS 310的GVA,并且VMM 170可创建用于将SECS 310的GPA映射到已被分配给SECS(如框414所示)的页的EPT映射。
如框420所示,PPT驱动程序150然后可以为用于数据处理系统20中的每一个CPU的VIDT代码页分配存储器。例如,PPT驱动程序150可以为TSIR 152分配存储器。PPT驱动程序150还可向VMM 170注册这些页。如框422所示,VMM 170然后可将VIDT代码页映射到EPT 90。如框424所示,VMM 170然后可以用SCV来修补TISR 152的二进制代码。图14的过程然后可结束。
图15是用于创建用于存储SCV的PPT数据结构的过程的示例实施例的流程图。具体而言,示例过程涉及创建用于TA 120的SECS 310。该过程可开始于框440,其中PPT加载器134调用VMM 170来创建TEE 124和TA 120的可信视图。如框450所示,VMM 170然后可确定VIDT 84是否已被初始化。如果尚未初始化,则VMM 170可初始化VIDT 84,如框452所示。例如,VMM 170可执行对TISR流的签名和散列验证并且然后在验证成功的情况下安装TISR152。
如框460所示,VMM 170然后可创建TA 120的可信视图。例如,VMM 170可以向EPT90添加EPT以用作EPT根结构,由此创建该视图。VMM 170随后可将GPA到HPA页映射添加到用于TA代码、数据、TCDS、SECS等的EPT。
例如,如框462所示,VMM 170然后为SECS 310分配存储器,并且然后更新EPT 90中的用于TA 120的EPT以提供对SECS 310的访问。如框464所示,VMM 170然后将SECS 310映射到已经在向VIDT 84注册SECS 310期间创建的GVA。(例如,参见图14的框412。)图15的过程然后可结束。
图16是示出根据示例实施例的PPT数据结构映射的框图。具体而言,图16描绘了其中已经创建多个TA的场景,并且图16示出了用于每一个不同TA的每一个不同SECS的GVA基于当前活跃视图来指向恰当的HPA。“SECS GVA”到“SECS GPA”映射可由客户机OS 32完成。垂直线表示通过EPT 90执行的转换。并且右侧的框示出了如果存在多个TA,则每一个不同TA获得不同EPT,并且每一个不同EPT将相同的SECS GPA映射到不同的HPA。
图17是描绘根据示例实施例的与从富执行环境切换到可信执行环境相关联的操作的流程图。所示过程开始于框470,其中REE中的程序发起到TEE的切换并且使用GPR来传递该TEE的视图的标识符。例如,如参照图11描述的,不可信应用130可使用ecall来调用TA120,并且作为响应REE可以触发TA进入中断。作为响应,如框472所示,TISR 152之一(例如,TA进入ISR)可截取TA进入中断并且作为响应从不可信视图切换到TA 120的可信视图。
例如,在一个实施例中,VMM维护指向该CPU上的当前活跃EPT的指针。该指针可以是被称为EPT指针或EPTP的VMX数据结构。VMM还可维护包含针对每一个视图的EPT的指针的另一数据结构。该数据结构可被称为EPTP列表页。VMFUNC指令可使用指定视图id作为索引来读取EPT列表页以获取针对该视图的EPTP指针。VMM然后可以在内部用该EPTP指针来更新EPTP。
如框474所示,在切换视图后,ISR然后可以从用于当前视图的SECS(例如,SECS310)中读取SCV。如框480所示,ISR然后可以从将被执行的TA(例如,TA 120)读取SCV,并且该ISR可确定该ISR中的补入的SCV与SECS 310中的TA 120的SCV是否匹配。如果这些SCV不匹配,则ISR可得出正在试图攻击的结论,并且ISR可采取补救动作,如框482所示。例如,ISR可得出它已检测到将视图切换成可信应用视图的无效尝试的结论,并且作为响应,该ISR可以永久地阻止针对该视图句柄的视图切换。ISR还可采取其它补救措施。例如,ISR可通过做出VMM断言超级调用来引发系统关闭。
然而,如果这些SCV匹配,则ISR然后可将控制传递给TA,如框484所示。图17的过程然后可结束。
部分5:异常处理机制
如上所示,TA是在与REE隔离的执行环境中运行的应用,并且在REE中运行的应用无法访问TA地址空间。这引发了以下问题:从在REE环境中运行的常规调试工具(例如,GNU调试器(GDB))调试运行时TA漏洞。
本公开引入了能够在不使得主存TA的进程崩溃的情况下提供关于在错误时间的TA执行状态的信息的调试技术。例如,该技术可以提供来自寄存器(包括指令指针(IP))、来自栈、来自异常等的信息。此外,该信息可以按安全的方式与对应的REE共享,并且该信息可用于调制TA并解决问题。如以下更详细地描述的,该技术使用VIDT 84和相关联的PPT异常处理程序(PEH)。
基本上,VIDT 84和PEH在异常(例如,页错误)在TA内生成的情况下规避OS异常处理程序。PEH通过处理异常并用作将执行从TEE切换到REE的蹦床函数代码来完成该规避。在看到崩溃状态之际,REE从PEH收集信息并将该信息传递至调用TA服务的程序,诸如不可信应用130。不可信应用130然后可选择发起对TA的破坏。但是,由于TEE OS异常处理程序未被调用,因此主存进程未被杀死。VIDT 84和PEH由此虚拟化中断和异常并提供用于在TA与REE之间切换的安全机制。
如以上参照图2指示的,VMM 170可将VIDT 84安装到客户机OS 32中,并且VMM 170可将CR 24中的一寄存器更新为指向VIDT 84而不是UIDT 82。VIDT 84可包括用于陷获中断或异常以及用于响应于这些中断来自动调用某些指定ISR的门。具体而言,VIDT门描述符被配置成将控制转移至软件处理程序(例如,PEH),该软件处理程序基于由硬件在出现指定/异常时生成的向量号来将架构异常与其它中断源区分开来。架构异常可标识进程执行中的错误,诸如一般保护错误、页错误、除零错误等。其它中断源可包括设备中断、计时器中断、性能监视中断等。可以使用相同的IDT来向量化所有中断。然而,出于异常处理的目的,PEH可基于导致异步退出TISR中的跳转的向量来仅仅处理架构异常。
如果异常是从TA内生成的,则PEH收集出错数据,如IP、异常类型(例如,页错误、GP错误、除零等)、栈轨迹以及在错误期间访问的出错地址。然而,REE异常处理程序未被调用。作为替代,通过退出TA来将控制直接转移回到调用TA的进程。另外,“TA崩溃”状态在预定义GPR中返回到调用TA入口点的进程。PEH还在用于该TA的SECS中设置“无效状态”标志,以使得可避免该TA中的附加进入。
如上所示,TA是在调用进程的地址空间内创建的,并且VMM在创建该TA的视图期间将调用进程重新映射到EPT。调用进程无法直接访问用于TA的所映射的EPT存储器,因为该存储器与调用进程隔离。然而,调用进程可通过使用诸如上述VMFUNC指令等技术来进入该TA的视图。
如上所示,PPT使用用于保留中断的定制ISR(诸如TA进入、TA恢复和TA退出)来管理不可信应用与TA之间的转变。作为用于安全地切换视图的过程的一部分,ISR创建用于TA的隔离栈,填充关于TA的所需参数,并且然后跳转到TA入口点。
图18是示出根据示例实施例的支持调试的过程的流程图。在所示过程中,REE中的软件(例如,不可信应用130)调用TA(例如,TA 120),这导致该REE触发TA进入中断(例如,Int-29),如上所述。替换地,TA可能已经被异步事件中断,并且图18的流程可开始于控制经由TA恢复中断(例如,Int-30)返回到TA。
如图18所示,对于“进入流”,TA进入ISR将不可信栈指针和不可信基指针保存在作为TCDS的一部分的SSA中。对于“恢复流”,TA恢复ISR从SSA中还原TA上下文(例如,GPR、IP、可信栈指针的状态)。如上所示,该TA上下文将由异步退出TISR来保存,该异步退出TISR已被更早地(例如在客户机中断在TA正在执行时命中时)调用。
控制然后被传递至TA,并且然后TA于是执行。TA然后可经历异常、中断或某一其它错误(例如,代码具有漏洞)。如果TA发生错误,则作为响应,PEH标识错误源。例如,PEH可基于执行上下文的当前状态来区分错误由TA生成还是在TEE之外生成。如果源不是TA,则PEH将错误转发至UIDT以供OS处理。
然而,如果源是TA,则PEH处理该异常或错误并且收集关于该错误的数据,诸如IP、栈轨迹以及在错误期间访问的存储器地址。另外,PEH将错误状态记录在用于TA的SECS中。如上所示,处理元件还在预定义的GPR中设置“TA崩溃”状态以便在错误后进入TA。数据处理系统20随后可基于SECS和/或TA崩溃标志中的错误状态来阻止到TA中的附加进入。
另外,PEH创建安全缓冲区以便与REE共享关于错误的数据转储。具体而言,VMM在创建TA视图期间创建该转储缓冲区,并且VMM在TA的SECS中指派该转储缓冲区。例如,VMM可将对转储缓冲区的引用或指向转储缓冲区的指针保存在SECS中。该转储缓冲区可由环0中的PEH在该PEH正在TA上下文下执行时访问。此外,如果错误在TA内发生,则PEH跟踪通过TA栈并将栈轨迹连同导致该错误的IP地址、异常类型等一起转储到转储缓冲区中。
PEH然后通过简单地退出TA视图来与REE共享该转储缓冲区。REE然后可以从GPR中读取TA崩溃状态,并且REE可以选择清除TA视图。例如,REE可调用破坏视图超级调用来指令VMM清理视图。
然而,在清除出错的TA存储器之前,REE可以从VMM 170读取转储缓冲区。基于转储缓冲区,REE然后可标识TA栈、IP等以调试和解决问题。
在一个示例中,VMM简单地将数据复制到不可信缓冲区。在另一实施例中,VMM在与REE共享来自转储缓冲区的数据之前加密该数据,并且REE然后解密该数据。
另外,数据处理系统可执行安全引导过程,该过程基于硬件和/或固件调试令牌来提供TEE调试策略。管理员可通过这些令牌来配置某些特征以便在设备上供应这些特征。此后,在引导时,安全引擎固件184可以从静态RAM(SRAM)或某一其它安全防篡改存储器读取这些令牌值,并且基于这些令牌来启用或禁用TEE调试策略。
替换地,安装TEE调试令牌的能力可被限于数据处理系统的制造商,诸如原始设备制造商(OEM)和/或CPU制造商。并且只有在TEE调试令牌被安装的情况下VMM才启用TEE调试特征。
PPT由此在隔离TEE中启用强大的调试,而无需任何专用软件工具或硬件来调试TA。
部分6:结论
如已经描述的,数据处理系统可使用PPT保护属于某些软件模块的部分或全部代码和数据以免遭用户级(例如,环3)恶意软件和内核级(例如,环0)恶意软件的攻击。PPT可提供各种可信实体之间的隔离以及在运行时动态地分配、释放和重用存储器的能力。另外,除了TA之间的存储器共享以外,PPT存储器共享模型还可允许TA与不可信OS之间的存储器共享。
鉴于本文描述和示出的原理和示例实施例,将认识到所示实施例可以在布置和细节方面进行修改而不背离这些原理。而且,以上讨论聚焦于特定实施例,但可构想其它配置。此外,即使此处使用诸如“一实施例”、“一个实施例”、“另一实施例“等表达,但这些短语旨在一般地引用实施例可能性,且不旨在将本发明限于特定实施例配置。如此处所使用的,这些短语可引用相同的实施例或不同的实施例,并且这些实施例可被组合成其它实施例。
例如,在一个实施例中,二进制转换器可以对非托管代码内的所有内部转移目的地以及非托管代码内的到这些目的地的所有转移使用相同的Tag-U值(例如,0x03)。在另一实施例中,二进制转换器可以在入口点对所定义的所有函数以及对这些函数的调用使用相同的Tag-U值,而对其它类型的目的地使用一个或多个不同的Tag-U值。
可使用任何合适的操作环境和编程语言(或操作环境和编程语言的组合)来实现本文描述的组件。本教导还可用于在许多不同种类的数据处理系统中取得优势。示例处理系统包括但不限于,分布式计算系统、超级计算机、高性能计算系统、计算群集、大型计算机、小型计算机、客户机-服务器系统、个人计算机(PC)、工作站、服务器、便携式计算机、膝上计算机、平板计算机、个人数字助理(PDA)、电话、手持设备、诸如音频、视频设备、音频/视频设备(例如,电视机和机顶盒)之类的娱乐设备、车载处理系统以及其它用于处理或传输信息的设备。因此,除非另外明确指定或者上下文需要,否则对任何特定类型的数据处理系统(例如,移动设备)的引用都应被理解为也包含其它类型的数据处理系统。此外,除非另外明确指定,否则被描述为彼此耦合、彼此通信、彼此响应等的组件无需持续彼此通信且无需彼此直接耦合。同样,当一个组件被描述为从另一组件接收或者向另一组件发送数据时,该数据可通过一个或多个中间组件发送或接收,除非另外明确指定。另外,数据处理系统的一些组件可被实现为具有用于与总线通信的接口(例如,连接器)的适配器卡。替换地,利用诸如可编程或不可编程逻辑设备或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等组件,可将设备或组件实现为嵌入式控制器。出于本公开的目的,术语“总线”包括可由不止两个设备共享的路径以及点到点路径。
本公开可引用指令、函数、规程、数据结构、应用程序、微代码、配置设置和其它种类的数据。如上所述,当机器或设备访问数据时,机器或设备可通过执行任务、定义抽象数据类型或低级硬件上下文和/或执行其它操作来进行响应。例如,数据存储、RAM和/或闪存可包括在被执行时执行各种操作的各种指令集。这些指令集可被一般称为软件。另外,术语“程序”可被一般地用来涵盖各种各样的软件构造,包括应用、例程、模块、驱动程序、子程序、进程以及其它类型的软件组件。此外,以上在一个示例实施例中被描述为驻留在特定设备上的应用和/或其它数据在其它实施例中可以驻留在一个或多个其它设备上。并且以上在一个示例实施例中被描述为在一个特定设备上执行的计算操作在其它实施例中可由一个或多个其它设备执行。
还应理解,本文描述的硬件和软件组件表示功能元素,这些功能元素合理地自包含以使得每一功能元素都能基本上独立于其它功能元素来设计、构造或更新。在替代实施例中,许多组件可被实现为用于提供本文描述和示出的功能的硬件、软件或硬件和软件的组合。例如,替代实施例包括编码了用于执行本发明的操作的指令或控制逻辑的机器可访问介质。这些实施例也被称为程序产品。这一机器可访问介质可包括但不限于诸如磁盘、光盘、RAM、ROM等有形存储介质以及包括RAM、ROM和/或其它存储设施的处理器、控制器和其它组件。为了本公开的目的,术语“ROM”可一般地用于指代非易失性存储器设备,诸如可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存ROM、闪存等。在一些实施例中,用于实现所描述的操作的部分或全部控制逻辑可以在硬件逻辑中实现(例如,实现为集成电路芯片、可编程门阵列(PGA)、ASIC等的一部分)。在至少一个实施例中,用于所有组件的指令可被存储在一个非瞬态机器可访问介质中。在至少一个其它实施例中,两个或更多个非瞬态机器可访问介质可用于存储用于这些组件的指令。例如,用于一个组件的指令可被存储在一个介质中,而用于另一组件的指令可被存储在另一介质中。替换地,用于一个组件的指令的一部分可被存储在一个介质中,而用于该组件的其余指令(以及用于其它组件的指令)可被存储在一个或多个其它介质中。指令也可以在分布式环境中使用,并且可被本地和/或远程地存储以供单或多处理器机器访问。
而且,尽管已经参照以特定顺序执行的特定操作描述了一个或多个示例过程,但可以对这些过程应用众多修改以导出本发明的众多替代实施例。例如,替代实施例可包括使用比所公开的全部操作更少的操作的过程、使用附加操作的过程以及其中本文公开的各个操作被组合、细分、重排列或以其它方式更改的过程。
鉴于可以从本文描述的示例实施例中容易地导出的各种各样的有用排列,此具体实施方式旨在仅仅是说明性的,且不应被视为限制覆盖范围。
以下示例关于进一步的实施例。
示例A1是存储非瞬态计算机可执行指令的一种或多种有形计算机可读介质,这些指令在由设备的处理器执行时实现虚拟机监视器(VMM),该VMM使不可信应用和可信应用能够在单个操作系统(OS)上运行,同时防止不可信应用访问由可信应用使用的存储器。该VMM可通过对于不可信应用使用第一扩展页表(EPT)来将客户机物理地址(GPA)转换成第一主机物理地址(HPA)并且对于可信应用使用第二EPT将GPA转换成第二HPA来实现该功能。第一和第二EPT将相同的GPA映射到不同的HPA。
示例A2是根据示例A1的计算机可读介质,其中VMM使OS、不可信应用以及可信应用能够在单个虚拟机(VM)中执行。
示例A3是根据示例A1的计算机可读介质,其中对于不可信应用和可信应用OS使用客户机页表来将客户机虚拟地址(GVA)转换成GPA。示例A3还可包括示例A2的特征。
示例A4是根据示例A1的计算机可读介质,其中指令在被执行时还实现使不可信应用能够将控制转移至可信应用的中断服务例程(ISR)。
示例A4还可包括示例A2和A3中的任一者或多者的特征。
示例A5是根据示例A5的计算机可读介质,其中机器可访问介质中的指令在被执行时还实现平台保护技术(PPT)驱动程序以安装ISR。示例A5还可包括示例A2和A3中的任一者或多者的特征。
示例A6是根据示例A1的计算机可读介质,其中VMM包括将不同的视图标识符与不同的EPT相关联的数据结构。示例A6还可包括示例A2到A5中的任一者或多者的特征。
示例A7是根据示例A6的计算机可读介质,其中VMM包括指向用于当前活跃的视图的EPT的EPT指针。示例A7还可包括示例A2到A5中的任一者或多者的特征。
示例B1是根据示例A1的计算机可读介质,其中指令在被执行时实现平台保护技术(PPT)以便(a)加载可信应用以便在OS上执行,其中OS使用客户机页表(GPT)来将客户机虚拟地址(GVA)转换成客户机物理地址(GPA);(b)创建用于可信应用的断言页表(APT),对于可信应用该APT将GVA转换成GPA;(c)防止OS修改APT;(d)将设备的处理器配置成使用APT而不是GPT;以及(e)在将处理器配置成使用APT而不是GPT后,执行可信应用。示例A8还可包括示例A2到A7中的任一者或多者的特征。
示例C1是根据示例B1的计算机可读介质,其中OS包括不可信中断描述符表(IDT),该IDT具有将中断向量与不可信中断服务例程(ISR)相关联的门。示例A9还包括PPT,该PPT用于:(a)创建具有将中断向量与可信ISR相关联的门的虚拟IDT(VIDT),其中可信ISR包括使设备从与不可信应用相关联的不可信存储器视图切换到与可信应用相关联的可信存储器视图的TA进入ISR;(b)将设备的处理器配置成使用VIDT而不是不可信IDT(UIDT);以及(c)在将处理器配置成使用VIDT而不是UIDT后,通过调用TA进入ISR来响应TA进入中断。示例A9还可包括示例A2到A7中的任一者或多者的特征。
示例D1是根据示例C1的计算机可读介质,该介质还包括在富执行环境(REE)中在虚拟机(VM)中的OS上运行的不可信应用以及在可信执行环境(TEE)中在该VM中的该OS上运行的可信应用,该TEE防止不可信应用访问由可信应用使用的存储器。示例A10还包括PPT,该PPT用于(a)生成用于可信应用的秘密cookie值(SCV);(b)将该SCV保存到与可信应用相关联的PPT数据结构;(c)将该SCV补入到允许将控制从不可信应用转移至可信应用的蹦床函数代码中;(d)响应于不可信应用调用可信应用,在允许可信应用执行之前,确定蹦床函数代码和PPT数据结构是否包含匹配的SCV;(e)只在蹦床函数代码和PPT数据结构包含匹配的SCV的情况下允许可信应用执行;(f)在允许可信应用在TEE中执行之前,在TEE中创建转储缓冲区;(g)响应于在可信应用执行期间的错误,将错误数据从TEE保存到转储缓冲区;以及(h)与REE共享该转储缓冲区。示例A10还可包括示例A2到A7中的任一者或多者的特征。
示例E1是存储非瞬态计算机可执行指令的一种或多种有形计算机可读介质,其中指令在由设备的处理器执行时实现平台保护技术(PPT)以便(a)加载可信应用以便在操作系统(OS)上执行,该OS使用客户机页表(GPT)来将客户机虚拟地址(GVA)转换成客户机物理地址(GPA);(b)创建用于可信应用的断言页表(APT),对于可信应用该APT将GVA转换成GPA;(c)防止OS修改APT;(d)将设备的处理器配置成使用APT而不是GPT;以及(e)在将处理器配置成使用APT而不是GPT后,执行可信应用。
示例E2是根据示例E1的计算机可读介质,其中GPT不受写保护。
示例E3是根据示例E1的计算机可读介质,其中PPT包括创建APT的虚拟机监视器(VMM)以及将处理器配置成使用APT而不是GPT的中断服务例程(ISR)。示例E3还可包括示例E2的特征。
示例E4是根据示例E1的计算机可读介质,其中PPT包括PPT加载器,该PPT加载器将可信应用加载到存储器中并且向VMM注册可信应用的每一页,并且其中该VMM响应于PPT加载器来创建APT。示例E4还可包括示例E2到E3中的任一者或多者的特征。
示例E5是根据示例E4的计算机可读介质,该介质还包括VMM,该VMM响应于PPT加载器向该VMM注册所述页来走查用于每一TA页的OS页表,并且该VMM将针对所述页的OS页表条目复制到APT。示例E5还可包括示例E2到E3中的任一者或多者的特征。
示例E6是根据示例E3的计算机可读介质,该介质还包括锁定APT的VMM以及只在该VMM已锁定APT后执行的可信应用。示例E6还可包括示例E2到E5中的任一者或多者的特征。
示例F1是存储非瞬态计算机可执行指令的一种或多种有形计算机可读介质,其中指令在由设备的处理器执行时实现平台保护技术(PPT)以便(a)使不可信应用和可信应用能够在单个操作系统(OS)上运行,同时防止不可信应用访问由可信应用使用的存储器,其中该OS包括具有将中断向量与不可信中断服务例程(ISR)相关联的门的不可信中断描述符表(IDT);(b)创建具有将中断向量与可信ISR相关联的门的虚拟IDT(VIDT),其中可信ISR包括使该设备从与不可信应用相关联的不可信存储器视图切换到与可信应用相关联的可信存储器视图的TA进入ISR;(c)将该设备的处理器配置成使用VIDT而不是不可信IDT(UIDT);以及(d)在将处理器配置成使用VIDT而不是UIDT后,通过调用TA进入ISR来响应TA进入中断。
示例F2是根据示例F1的计算机可读介质,该介质还包括将可信ISR存储在可信内核上下文(TKC)中的VMM,其中该VMM防止OS修改TKC。
示例F3是根据示例F1的计算机可读介质,其中可信ISR还包括响应于TA退出中断而使该设备从与可信应用相关联的可信存储器视图切换到与不可信应用相关联的不可信存储器视图的TA退出ISR。示例F3还可包括示例F2的特征。
示例F4是根据示例F1的计算机可读介质,其中可信ISR还包括TA恢复ISR,该TA恢复ISR响应于TA恢复中断而使该设备(a)从与不可信应用相关联的不可信存储器视图切换到与可信应用相关联的可信存储器视图;以及(b)还原可信应用的上下文。示例F4还可包括示例F2到F3中的任一者或多者的特征。
示例F5是根据示例F1的计算机可读介质,其中可信ISR还包括通用(GP)ISR,该GPISR(a)响应于中断,确定该中断是否在可信应用正在执行时出现;以及(b)响应于确定中断在可信应用正在执行时出现:(i)将来自至少一个寄存器的状态数据保存到用于可信应用的保存状态区域(SSA);以及(ii)用与不可信应用相关联的不可信运行时的异步退出指针(AEP)来替换当前可信栈上的返回指令指针(RIP)。示例F5还可包括示例F2到F4中的任一者或多者的特征。
示例F6是根据示例F5的计算机可读介质,其中该状态数据包括来自当前可信栈的RIP。示例F6还可包括示例F2到F4中的任一者或多者的特征。
示例F7是根据示例F5的计算机可读介质,该介质还包括GP ISR,该GP ISR通过将控制寄存器切换为指向可信页表来从可信页表切换到不可信页表,并且从可信存储器视图切换到不可信存储器视图。示例F7还可包括示例F2到F6中的任一者或多者的特征。
示例F8是根据示例F5的计算机可读介质,还包括GP ISR,该GP ISR(a)用不可信运行时栈指针(RSP)来替换可信RSP;以及(b)在用不可信RSP来替换可信RSP后,执行中断返回(iret)以使得控制在不可信执行时中跳转到已知退出点。示例F8还可包括示例F2到F7中的任一者或多者的特征。
示例F9是根据示例F5的计算机可读介质,还包括GP ISR,该GP ISR用于:(a)在中断栈上准备综合通用寄存器(GPR)状态,其中综合GPR状态包括指示为了使控制返回到可信应用,控制必须来自TA恢复ISR的标志;(b)从当前可信栈切换到不可信栈;(c)将合成GPR状态复制到不可信栈;以及(d)通过执行返回指令来跳转到OS ISR。示例F9还可包括示例F2到F8中的任一者或多者的特征。
示例G1是存储非瞬态计算机可执行指令的一种或多种有形计算机可读介质,这些指令在由设备的处理器执行时,实现平台保护技术(PPT),该PPT用于(a)为在虚拟机(VM)中的操作系统(OS)上运行的可信应用生成秘密cookie值(SCV);(b)将SCV保存到与可信应用相关联的PPT数据结构;(c)将SCV补入到允许将控制从不可信应用转移到可信应用的蹦床函数代码中;(d)响应于不可信调用可信应用,在允许可信应用执行之前,确定蹦床函数代码和PPT数据结构是否包含匹配的SCV;以及(e)只在蹦床函数代码和PPT结构包含匹配的SCV的情况下允许可信应用执行。
示例G2是根据示例G1的计算机可读介质,其中PPT包括可信中断服务例程(ISR);可信ISR包括使设备从与不可信应用相关联的不可信存储器视图切换到与可信应用相关联的可信存储器视图的TA进入ISR;以及执行确定蹦床函数代码和PPT数据结构是否包含匹配的SCV的操作的TA进入ISR。
示例G3是根据示例G1的计算机可读介质,其中与可信应用相关联的PPT数据结构驻留在VM之外。示例G3还可包括示例G2的特征。
示例H1是存储非瞬态计算机可执行指令的一种或多种有形计算机可读介质,这些指令在由设备的处理器执行时实现平台保护技术(PPT)以便(a)使不可信应用能够在富执行环境(REE)中在操作系统(OS)上运行;(b)使可信应用能够在可信执行环境(TEE)中在该OS上运行,该TEE防止不可信应用访问由可信应用使用的存储器;(c)在允许可信应用在TEE中执行之前,在TEE中创建转储缓冲区;(d)响应于可信应用的执行期间的错误,将错误数据从TEE保存到转储缓冲区;以及(e)与REE共享转储缓冲区。
示例H2是根据示例H1的计算机可读介质,其中与REE共享转储缓冲区包括将转储缓冲区复制到不可信存储器。

Claims (24)

1.一种或多种存储非瞬态计算机可执行指令的有形计算机可读介质,所述指令在由设备的处理器执行时实现虚拟机监视器VMM,所述VMM用于:
通过以下操作来使不可信应用和可信应用能够在单个操作系统OS上运行,同时防止所述不可信应用访问由所述可信应用使用的存储器:
对于所述不可信应用,使用第一扩展页表EPT来将客户机物理地址GPA转换成第一主机物理地址HPA;以及
对于所述可信应用,使用第二EPT将所述GPA转换成第二HPA;
其中所述第一EPT和所述第二EPT将相同的所述GPA映射到不同的HPA;以及
所述指令在被执行时实现平台保护技术PPT,所述PPT用于:
加载所述可信应用以便在所述OS上执行,其中所述OS使用客户机页表GPT来将客户机虚拟地址GVA转换成客户机物理地址GPA;
创建用于所述可信应用的断言页表APT,对于所述可信应用,所述APT将GVA转换成GPA;
防止所述OS修改所述APT;
将所述设备的所述处理器配置成使用所述APT而不是所述GPT;以及
在将所述处理器配置成使用所述APT而不是所述GPT后,执行所述可信应用。
2.如权利要求1所述的计算机可读介质,其特征在于,所述VMM使所述OS、所述不可信应用以及所述可信应用能够在单个虚拟机VM中执行。
3.如权利要求1所述的计算机可读介质,其特征在于,对于所述不可信应用和所述可信应用,所述OS使用客户机页表来将客户机虚拟地址GVA转换成GPA。
4.如权利要求1所述的计算机可读介质,其特征在于,所述指令在被执行时还实现使所述不可信应用能够将控制转移至所述可信应用的中断服务例程ISR。
5.如权利要求4所述的计算机可读介质,其特征在于,所述计算机可读介质中的所述指令在被执行时还实现平台保护技术PPT驱动程序以安装所述ISR。
6.如权利要求1所述的计算机可读介质,其特征在于,所述VMM包括将不同的视图标识符与不同的EPT相关联的数据结构。
7.如权利要求6所述的计算机可读介质,其特征在于,所述VMM包括指向用于当前活跃的视图的EPT的EPT指针。
8.如权利要求1所述的计算机可读介质,其特征在于,
所述OS包括不可信中断描述符表IDT,所述IDT具有将中断向量与不可信中断服务例程ISR相关联的门;并且
所述介质还包括用于执行以下操作的PPT:
创建具有将中断向量与可信ISR相关联的门的虚拟IDT VIDT,其中所述可信ISR包括使所述设备从与所述不可信应用相关联的不可信存储器视图切换到与所述可信应用相关联的可信存储器视图的TA进入ISR;
将所述设备的所述处理器配置成使用所述VIDT而不是不可信IDT UIDT;以及
在将所述处理器配置成使用所述VIDT而不是所述UIDT后,通过调用所述TA进入ISR来响应TA进入中断。
9.如权利要求8所述的计算机可读介质,其特征在于,还包括:
在富执行环境REE中在虚拟机VM中的OS上运行的所述不可信应用;以及
在可信执行环境TEE中在所述VM中的所述OS上运行的所述可信应用,所述TEE防止所述不可信应用访问由所述可信应用使用的存储器;以及
用于以下操作的PPT:
生成用于所述可信应用的秘密cookie值SCV;
将所述SCV保存到与所述可信应用相关联的PPT数据结构;
将所述SCV补入到允许将控制从所述不可信应用转移至所述可信应用的蹦床函数代码中;
响应于所述不可信应用调用所述可信应用,在允许所述可信应用执行之前,确定所述蹦床函数代码和所述PPT数据结构是否包含匹配的SCV;
只在所述蹦床函数代码和所述PPT数据结构包含匹配的SCV的情况下允许所述可信应用执行;
在允许所述可信应用在所述TEE中执行之前,在所述TEE中创建转储缓冲区;
响应于在所述可信应用执行期间的错误,将错误数据从所述TEE保存到所述转储缓冲区;以及
与所述REE共享该转储缓冲区。
10.一种或多种存储非瞬态计算机可执行指令的计算机可读介质,所述指令在由设备的处理器执行时实现平台保护技术PPT,所述PPT用于:
加载可信应用以便在操作系统OS上执行,所述OS使用客户机页表GPT来将客户机虚拟地址GVA转换成客户机物理地址GPA;
创建用于所述可信应用的断言页表APT,对于所述可信应用,所述APT将GVA转换成GPA;
防止所述OS修改所述APT;
将所述设备的所述处理器配置成使用所述APT而不是所述GPT;以及
在将所述处理器配置成使用所述APT而不是所述GPT后,执行所述可信应用。
11.如权利要求10所述的计算机可读介质,其特征在于,所述GPT不受写保护。
12.如权利要求10所述的计算机可读介质,其特征在于,所述PPT包括:
创建所述APT的虚拟机监视器VMM;以及
将所述处理器配置成使用所述APT而不是所述GPT的中断服务例程ISR。
13.如权利要求12所述的计算机可读介质,其特征在于,所述PPT包括:
PPT加载器,所述PPT加载器将所述可信应用加载到存储器中并且向所述VMM注册所述可信应用的每一页;并且
其中所述VMM响应于所述PPT加载器来创建所述APT。
14.如权利要求13所述的计算机可读介质,其特征在于,还包括用于以下操作的所述VMM:
响应于所述PPT加载器向所述VMM注册所述页来走查用于每一TA页的OS页表;以及
将用于所述页的OS页表条目复制到所述APT。
15.如权利要求12所述的计算机可读介质,其特征在于,还包括:
锁定所述APT的所述VMM;以及
只在所述VMM锁定所述APT后执行的所述可信应用。
16.一种或多种存储非瞬态计算机可执行指令的计算机可读介质,所述指令在由设备的处理器执行时实现平台保护技术PPT,所述PPT用于:
使不可信应用和可信应用能够在单个操作系统OS上运行,同时防止所述不可信应用访问由所述可信应用使用的存储器,其中所述OS包括具有将中断向量与不可信中断服务例程ISR相关联的门的不可信中断描述符表IDT;
创建具有将中断向量与可信ISR相关联的门的虚拟IDT VIDT,其中所述可信ISR包括使所述设备从与所述不可信应用相关联的不可信存储器视图切换到与所述可信应用相关联的可信存储器视图的TA进入ISR;
将所述设备的所述处理器配置成使用所述VIDT而不是不可信IDTUIDT;以及
在将所述处理器配置成使用所述VIDT而不是所述UIDT后,通过调用所述TA进入ISR来响应TA进入中断。
17.如权利要求16所述的计算机可读介质,其特征在于,还包括:
将所述可信ISR存储在可信内核上下文TKC中的VMM,其中所述VMM防止所述OS修改所述TKC。
18.如权利要求16所述的计算机可读介质,其特征在于,所述可信ISR还包括TA退出ISR,所述TA退出ISR响应于TA退出中断而使所述设备从与所述可信应用相关联的可信存储器视图切换到与所述不可信应用相关联的不可信存储器视图。
19.如权利要求16所述的计算机可读介质,其特征在于,所述可信ISR还包括TA恢复ISR,所述TA恢复ISR响应于TA恢复中断而使所述设备:
从与所述不可信应用相关联的所述不可信存储器视图切换到与所述可信应用相关联的所述可信存储器视图;以及
还原所述可信应用的上下文。
20.如权利要求16所述的计算机可读介质,其特征在于,所述可信ISR还包括通用GPISR,所述GP ISR用于:
响应于中断,确定所述中断是否在所述可信应用正在执行时出现;以及
响应于确定所述中断在所述可信应用正在执行时出现:
将来自至少一个寄存器的状态数据保存到用于所述可信应用的保存状态区域SSA;以及
用与所述不可信应用相关联的不可信运行时的异步退出指针AEP来替换当前可信栈上的返回指令指针RIP。
21.如权利要求20所述的计算机可读介质,其特征在于,所述状态数据包括来自所述当前可信栈的所述RIP。
22.如权利要求20所述的计算机可读介质,其特征在于,还包括用于以下操作的GPISR:
通过将控制寄存器切换为指向可信页表来从所述可信页表切换到不可信页表;以及
从所述可信存储器视图切换到不可信存储器视图。
23.如权利要求20所述的计算机可读介质,其特征在于,还包括用于以下操作的GPISR:
用不可信运行时栈指针RSP来替换可信RSP;以及
在用所述不可信RSP来替换所述可信RSP后,执行中断返回(iret)以使得控制在所述不可信执行时中跳转到已知退出点。
24.如权利要求16所述的计算机可读介质,其特征在于,
所述PPT包括虚拟机监视器VMM,所述VMM(a)使所述不可信应用和所述可信应用能够在所述单个OS上运行,同时(b)通过以下操作来防止所述不可信应用访问由所述可信应用使用的存储器:
对于所述不可信应用,使用第一扩展页表EPT来将客户机物理地址GPA转换成第一主机物理地址HPA;以及
对于所述可信应用,使用第二EPT将所述GPA转换成第二HPA;
所述第一EPT和所述第二EPT将相同的所述GPA映射到不同的HPA;
所述OS使用客户机页表GPT来将客户机虚拟机GVA转换成GPA;并且
所述VMM使所述设备能:
创建用于所述可信应用的断言页表APT,对于所述可信应用,所述APT将GVA转换成GPA;
防止所述OS修改所述APT;
将所述设备的所述处理器配置成使用所述APT而不是所述GPT;以及
在将所述处理器配置成使用所述APT而不是所述GPT后,执行所述可信应用。
CN201680028447.7A 2015-06-15 2016-05-13 基于虚拟化的平台保护技术 Active CN107667350B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111528699.5A CN114185648A (zh) 2015-06-15 2016-05-13 基于虚拟化的平台保护技术

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/739,560 2015-06-15
US14/739,560 US9842065B2 (en) 2015-06-15 2015-06-15 Virtualization-based platform protection technology
PCT/US2016/032282 WO2016204892A1 (en) 2015-06-15 2016-05-13 Virtualization-based platform protection technology

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202111528699.5A Division CN114185648A (zh) 2015-06-15 2016-05-13 基于虚拟化的平台保护技术

Publications (2)

Publication Number Publication Date
CN107667350A CN107667350A (zh) 2018-02-06
CN107667350B true CN107667350B (zh) 2022-01-11

Family

ID=57515948

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111528699.5A Pending CN114185648A (zh) 2015-06-15 2016-05-13 基于虚拟化的平台保护技术
CN201680028447.7A Active CN107667350B (zh) 2015-06-15 2016-05-13 基于虚拟化的平台保护技术

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202111528699.5A Pending CN114185648A (zh) 2015-06-15 2016-05-13 基于虚拟化的平台保护技术

Country Status (4)

Country Link
US (4) US9842065B2 (zh)
EP (4) EP3825851B1 (zh)
CN (2) CN114185648A (zh)
WO (1) WO2016204892A1 (zh)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158909B2 (en) * 2014-03-04 2015-10-13 Amazon Technologies, Inc. Authentication of virtual machine images using digital certificates
US10754967B1 (en) * 2014-12-15 2020-08-25 Marvell Asia Pte, Ltd. Secure interrupt handling between security zones
US9842065B2 (en) 2015-06-15 2017-12-12 Intel Corporation Virtualization-based platform protection technology
US10691476B2 (en) * 2015-06-27 2020-06-23 Mcafee, Llc Protection of sensitive data
US10230529B2 (en) * 2015-07-31 2019-03-12 Microsft Technology Licensing, LLC Techniques to secure computation data in a computing environment
CN105528554B (zh) * 2015-11-30 2019-04-05 华为技术有限公司 用户界面切换方法和终端
CN107038128B (zh) * 2016-02-03 2020-07-28 华为技术有限公司 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置
US11429412B2 (en) * 2016-02-25 2022-08-30 Red Hat Israel, Ltd. Guest protection from application code execution in kernel mode
US9971675B2 (en) * 2016-04-04 2018-05-15 International Business Machines Corporation Triggering debug processing within a scalable cloud environment
US11734430B2 (en) * 2016-04-22 2023-08-22 Hewlett Packard Enterprise Development Lp Configuration of a memory controller for copy-on-write with a resource controller
US10884952B2 (en) * 2016-09-30 2021-01-05 Intel Corporation Enforcing memory operand types using protection keys
US10452572B2 (en) * 2016-10-06 2019-10-22 Vmware, Inc. Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive
US10528746B2 (en) * 2016-12-27 2020-01-07 Intel Corporation System, apparatus and method for trusted channel creation using execute-only code
US10747686B2 (en) * 2016-12-28 2020-08-18 Narf Industries, LLC Method and system for co-privileged security domains
US10867029B2 (en) * 2017-01-24 2020-12-15 Microsoft Technology Licensing, Llc Enclave client abstraction model
CN108459899B (zh) * 2017-02-21 2021-06-01 华为技术有限公司 信息保护方法及装置
US10204229B2 (en) * 2017-03-21 2019-02-12 Nxp B.V. Method and system for operating a cache in a trusted execution environment
US10614211B2 (en) * 2017-03-22 2020-04-07 Ca, Inc. Bringing a non-isolated application into an isolation layer with an isolated application
US10331578B2 (en) * 2017-06-09 2019-06-25 Intel Corporation Fine-grained access host controller for managed flash memory
US11372787B2 (en) * 2017-12-09 2022-06-28 Intel Corporation Unified address space for multiple links
US10970390B2 (en) 2018-02-15 2021-04-06 Intel Corporation Mechanism to prevent software side channels
CN108628663B (zh) * 2018-05-11 2021-08-10 浙江大学 一种支持新型大页框架的kvm系统
CN110532766B (zh) 2018-05-25 2023-09-08 华为技术有限公司 一种基于多容器的可信应用程序的处理方法及相关设备
US11258861B2 (en) * 2018-06-29 2022-02-22 Intel Corporation Secure reporting of platform state information to a remote server
US10705976B2 (en) * 2018-06-29 2020-07-07 Intel Corporation Scalable processor-assisted guest physical address translation
US10860709B2 (en) 2018-06-29 2020-12-08 Intel Corporation Encoded inline capabilities
EP3764239B1 (en) 2018-07-11 2024-09-11 Huawei Technologies Co., Ltd. Method and device for enhancing isolation between user space and kernel space
US10754796B2 (en) 2018-08-29 2020-08-25 Red Hat, Inc. Efficient user space driver isolation by CPU page table switching
US10983926B2 (en) 2018-08-29 2021-04-20 Red Hat, Inc. Efficient userspace driver isolation for virtual machines
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
CN109597677B (zh) * 2018-12-07 2020-05-22 北京百度网讯科技有限公司 用于处理信息的方法和装置
US10534730B1 (en) * 2018-12-20 2020-01-14 Ati Technologies Ulc Storing microcode for a virtual function in a trusted memory region
CN112352220B (zh) * 2019-01-04 2024-05-10 百度时代网络技术(北京)有限公司 保护由数据处理加速器处理的数据的方法和系统
WO2020140269A1 (en) * 2019-01-04 2020-07-09 Baidu.Com Times Technology (Beijing) Co., Ltd. Method and system for managing memory of data processing accelerators
CN109947666B (zh) * 2019-02-27 2023-04-25 余炀 可信执行环境缓存隔离方法及装置、电子设备和存储介质
CN109933441B (zh) * 2019-02-28 2020-11-17 上海交通大学 微内核进程间通讯方法和系统
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
CN110058921B (zh) * 2019-03-13 2021-06-22 上海交通大学 客户虚拟机内存动态隔离和监控方法及系统
FR3114671B1 (fr) * 2020-09-25 2024-08-30 St Microelectronics Srl Elément sécurisé embarqué
US12045336B2 (en) * 2019-03-26 2024-07-23 Stmicroelectronics S.R.L. Embedded secure element
US11669335B2 (en) 2019-03-28 2023-06-06 Intel Corporation Secure arbitration mode to build and operate within trust domain extensions
US10878134B2 (en) 2019-03-29 2020-12-29 Intel Corporation Technologies for controlling memory access transactions received from one or more I/O devices
CN110119302B (zh) * 2019-04-23 2023-07-21 上海隔镜信息科技有限公司 虚拟机监视器以及虚拟可信执行环境构建方法
CN111095899B (zh) * 2019-04-26 2021-12-24 创新先进技术有限公司 针对可信执行环境的分布式密钥管理
CN110245001B (zh) * 2019-05-05 2023-04-18 创新先进技术有限公司 数据隔离方法及装置、电子设备
US11099878B2 (en) * 2019-06-28 2021-08-24 Intel Corporation Scalable virtual machine operation inside trust domains within the trust domain architecture
US10908912B1 (en) * 2019-07-08 2021-02-02 Vmware, Inc. Target injection safe method for dynamically inlining branch predictions
US11500550B2 (en) 2019-08-27 2022-11-15 Red Hat, Inc. Inhibiting memory accesses to executable modules
US11150887B2 (en) 2019-10-01 2021-10-19 Red Hat, Inc. Secure code patching
US11392492B2 (en) * 2019-12-27 2022-07-19 Intel Corporation Memory management apparatus and method for compartmentalization using linear address metadata
US11030113B1 (en) 2019-12-27 2021-06-08 Intel Corporation Apparatus and method for efficient process-based compartmentalization
CN111148070B (zh) * 2019-12-31 2021-06-15 华为技术有限公司 V2x通信方法、装置及车辆
US11449601B2 (en) * 2020-01-08 2022-09-20 Red Hat, Inc. Proof of code compliance and protected integrity using a trusted execution environment
CN113138878B (zh) * 2020-01-19 2022-11-18 华为技术有限公司 可信执行环境操作系统崩溃处理方法及电子设备
US11748484B2 (en) * 2020-01-21 2023-09-05 Wind River Systems, Inc. Tri-level secure separation kernel
US11216366B2 (en) 2020-02-13 2022-01-04 Intel Corporation Security check systems and methods for memory allocations
DE102020002055A1 (de) 2020-03-30 2021-09-30 Paul Hamm Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems
US11741219B2 (en) 2020-09-08 2023-08-29 Truepic Inc. Protocol and system for tee-based authenticating and editing of mobile-device captured visual and audio media
EP4217861A1 (en) 2020-09-25 2023-08-02 STMicroelectronics S.r.l. Memory management for applications of a multiple operating systems embedded secure element
KR20220057005A (ko) * 2020-10-29 2022-05-09 삼성전자주식회사 전자 장치 및 이를 이용한 메모리 보호 방법
CN114490448A (zh) * 2020-11-13 2022-05-13 华为技术有限公司 一种切换执行环境的方法及其相关设备
US20210110070A1 (en) * 2020-12-22 2021-04-15 Anjo Lucas Vahldiek-Oberwagner Reducing latency of hardware trusted execution environments
US20220197995A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Device, system and method to efficiently update a secure arbitration mode module
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
US11816203B2 (en) * 2021-11-23 2023-11-14 Malwarebytes Inc. Stack execution detection in a sandbox environment
CN114201269B (zh) * 2022-02-18 2022-08-26 阿里云计算有限公司 内存换页方法、系统及存储介质
US20230401081A1 (en) * 2022-06-10 2023-12-14 Microsoft Technology Licensing, Llc Software isolation of virtual machine resources
CN115208941B (zh) * 2022-07-13 2024-04-23 北京天融信网络安全技术有限公司 一种基于会话连接的数据处理方法及系统
CN115102780B (zh) * 2022-07-15 2022-12-06 飞腾信息技术有限公司 数据传输方法、相关装置、系统及计算机可读存储介质
EP4343593A1 (en) * 2022-09-20 2024-03-27 Samsung Electronics Co., Ltd. Method, device, and electronic apparatus for securely passing data
US20240220297A1 (en) * 2022-12-29 2024-07-04 Advanced Micro Devices, Inc. Interrupt control using a guest owned backing page

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581073A (zh) * 2003-08-07 2005-02-16 微软公司 从可信环境到不可信环境的可信性投影
CN1797345A (zh) * 2004-12-30 2006-07-05 微软公司 用于虚拟化图形子系统的系统和方法
CN103778389A (zh) * 2012-10-18 2014-05-07 美国博通公司 不可信的框架组件与安全操作系统环境的整合
CN103996004A (zh) * 2014-06-12 2014-08-20 浪潮电子信息产业股份有限公司 一种基于虚拟化的高可用系统设计方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199181B1 (en) * 1997-09-09 2001-03-06 Perfecto Technologies Ltd. Method and system for maintaining restricted operating environments for application programs or operating systems
US8090919B2 (en) 2007-12-31 2012-01-03 Intel Corporation System and method for high performance secure access to a trusted platform module on a hardware virtualization platform
US20080244155A1 (en) 2007-03-30 2008-10-02 Kyungwoo Lee Methods and apparatus to protect dynamic memory regions allocated to programming agents
US8799620B2 (en) 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US7917724B2 (en) * 2007-12-28 2011-03-29 Intel Corporation Protection of user-level applications based on page table information
US8149804B2 (en) 2008-04-04 2012-04-03 Intel Corporation Multi-transceiver wireless communication device and methods for operating during device discovery and connection establishment
US8316211B2 (en) 2008-06-30 2012-11-20 Intel Corporation Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts
US8776245B2 (en) 2009-12-23 2014-07-08 Intel Corporation Executing trusted applications with reduced trusted computing base
US8578080B2 (en) 2011-07-01 2013-11-05 Intel Corporation Secure handling of interrupted events utilizing a virtual interrupt definition table
US9804870B2 (en) 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US9047476B2 (en) * 2011-11-07 2015-06-02 At&T Intellectual Property I, L.P. Browser-based secure desktop applications for open computing platforms
US8726404B2 (en) 2011-11-14 2014-05-13 Intel Corporation Regulating access to and protecting portions of applications of virtual machines
US9058494B2 (en) * 2013-03-15 2015-06-16 Intel Corporation Method, apparatus, system, and computer readable medium to provide secure operation
JP6099458B2 (ja) 2013-03-29 2017-03-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 特定の仮想マシンに関連するトレース・データを得るためのコンピュータ実装方法、プログラム、トレーサ・ノード
US9842065B2 (en) 2015-06-15 2017-12-12 Intel Corporation Virtualization-based platform protection technology

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581073A (zh) * 2003-08-07 2005-02-16 微软公司 从可信环境到不可信环境的可信性投影
CN1797345A (zh) * 2004-12-30 2006-07-05 微软公司 用于虚拟化图形子系统的系统和方法
CN103778389A (zh) * 2012-10-18 2014-05-07 美国博通公司 不可信的框架组件与安全操作系统环境的整合
CN103996004A (zh) * 2014-06-12 2014-08-20 浪潮电子信息产业股份有限公司 一种基于虚拟化的高可用系统设计方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Efficient Virtualization-Based Application Protection Against Untrusted Operating System;Yueqiang Cheng;《Proceedings of the 10th ACM Symposium on Information, Computer and Communications Security, ASIA CCS"15》;20150101;参见第2-4节 *

Also Published As

Publication number Publication date
US20160364341A1 (en) 2016-12-15
US11467982B2 (en) 2022-10-11
EP3825851B1 (en) 2024-02-14
EP4339818A3 (en) 2024-06-19
US20230030961A1 (en) 2023-02-02
US20180113817A1 (en) 2018-04-26
EP3308317A4 (en) 2019-02-20
US10754794B2 (en) 2020-08-25
US9842065B2 (en) 2017-12-12
CN107667350A (zh) 2018-02-06
WO2016204892A1 (en) 2016-12-22
EP4398138A3 (en) 2024-09-11
US20200364158A1 (en) 2020-11-19
CN114185648A (zh) 2022-03-15
EP3308317B1 (en) 2021-01-13
EP3308317A1 (en) 2018-04-18
EP4339818A2 (en) 2024-03-20
EP3825851A1 (en) 2021-05-26
EP4398138A2 (en) 2024-07-10

Similar Documents

Publication Publication Date Title
US11467982B2 (en) Virtualization-based platform protection technology
Sev-Snp Strengthening VM isolation with integrity protection and more
US12052368B2 (en) System and method for high performance secure access to a trusted platform module on a hardware virtualization platform
Champagne et al. Scalable architectural support for trusted software
Li et al. A secure and formally verified Linux KVM hypervisor
EP3311322B1 (en) Protected memory regions
US8839455B1 (en) Security domain in virtual environment
US11269992B2 (en) Systems and methods for hypervisor-based protection of code
US10095862B2 (en) System for executing code with blind hypervision mechanism
US20200409740A1 (en) Systems, methods, and media for trusted hypervisors
KR101922798B1 (ko) 범용성 및 트러스트존 기능 연동을 보장하는 모바일 기기상의 안전한 실행 환경 생성 방법 및 장치
Van't Hof et al. {BlackBox}: a container security monitor for protecting containers on untrusted operating systems
Jang et al. SelMon: reinforcing mobile device security with self-protected trust anchor
Park et al. Libmpk: software abstraction for Intel memory protection keys
Wu et al. Building GPU tees using CPU secure enclaves with gevisor
Lin et al. HyperPS: A Virtual-Machine Memory Protection Approach Through Hypervisor's Privilege Separation
US20230098991A1 (en) Systems, methods, and media for protecting applications from untrusted operating systems
CN117494108B (zh) 可信执行环境实现方法、计算机设备及存储介质
Yu An I/O Separation Model and its Applications to On-Demand I/O on Commodity Platforms
Hong et al. Sdvisor: Secure debug enclave with hypervisor
US20240078307A1 (en) Apparatus for reinforcing security of mobile trusted execution environment
Brookes Mitigating Privilege Escalation
Lee et al. GENESIS: A Generalizable, Efficient, and Secure Intra-kernel Privilege Separation
ZHAO Secure enforcement of isolation policy on multicore platforms with virtualization techniques
CN113742789A (zh) 数据处理方法及数据处理装置

Legal Events

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