CN114080592A - 从过程容器的上下文使用安全存储器包围区 - Google Patents

从过程容器的上下文使用安全存储器包围区 Download PDF

Info

Publication number
CN114080592A
CN114080592A CN202080049909.XA CN202080049909A CN114080592A CN 114080592 A CN114080592 A CN 114080592A CN 202080049909 A CN202080049909 A CN 202080049909A CN 114080592 A CN114080592 A CN 114080592A
Authority
CN
China
Prior art keywords
container
attestation
security
memory
containers
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.)
Pending
Application number
CN202080049909.XA
Other languages
English (en)
Inventor
M·C·伦科
T·J·斯塔尔克
B·M·舒尔茨
G·维斯瓦纳坦
F·J·史密斯
D·C·托马斯
H·R·普拉帕卡
A·T·郭
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 CN114080592A publication Critical patent/CN114080592A/zh
Pending legal-status Critical Current

Links

Images

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/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • 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/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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/1425Protection 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 physical, e.g. cell, word, block
    • G06F12/1433Protection 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 physical, e.g. cell, word, block for a module or a part of a module
    • 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/1425Protection 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 physical, e.g. cell, word, block
    • G06F12/1441Protection 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 physical, e.g. cell, word, block for a range
    • 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
    • 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/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/1004Compatibility, e.g. with legacy hardware
    • 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/1016Performance 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/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/152Virtualized environment, e.g. logically partitioned system
    • 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

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)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)
  • Communication Control (AREA)

Abstract

存储器在基于容器的存储器包围区中被分区和隔离。基于容器的存储器包围区具有可证明的安全保证。在从容器图像供应基于容器的存储器包围区期间,容器中到包围区的存储器地址的声称的链接被修改以可验证地链接到主机的实际存储器地址,诸如分区的存储器包围区。在一些实例中,基于来自类似容器的一个或多个早先容器证明报告的早先证明并且无需容器和针对每个新证明请求的远程证明服务之间的端到端证明,包围区证明报告可以被验证而无需向远程证明服务发送对应的证明请求。

Description

从过程容器的上下文使用安全存储器包围区
背景技术
计算机技术已经演变到计算机现在无处不在的地步,几乎影响到每个行业并且实现存储和处理不同类型的数据。
为了安全地存储和处理数据,一些操作系统和计算机硬件已经被配置为提供存储器分区。存储器分区是在单个计算系统内和/或在多个计算系统的分布式网络内隔离数据的处理和存储的一种方式。
例如,系统可以将诸如加密密钥、用户身份、用户凭证和其他敏感数据之类的“安全关键”数据与其他计算过程和不那么敏感的数据隔离在存储器的各个隔离区域内,在本文中被称为包围区(enclave)。例如,计算行业有时将这些类型的隔离的计算环境称为“可信执行”环境和“机密计算”环境。
用于将存储器划分为包围区的技术通常以多种形式存在。一个示例是由英特尔的SGX、ARM Holdings TrustZone和其他公司来实现的基于硬件的分区。另一个示例是基于操作系统或管理程序,诸如基于虚拟化的安全性(VBS)。
VBS使用管理程序或另一资源管理层来在计算系统内创建附加的存储器分区以隔离和保护放置在其中的安全关键数据。利用VBS,可以定义多个虚拟信任级别(VTL),这些级别可以被用于提供与用户模式和内核模式的隔离。例如,典型的操作系统可以在第一VTL(例如VTL0)中运行,以支持现有的用户模式和内核模式驱动程序、应用、服务等,而附加的存储器分区可以在同一系统的第二VTL(例如VTL1)中运行,以支持隔离的用户模式(IUM)和安全内核(SK)。
VTL之间的安全边界可由管理程序或其他管理层强制执行以通过在映射到VLTl内的存储器的过程内创建隔离的存储器区域来例如防止VTL0访问VTL1,并且VTL0将无法访问隔离的存储器区域。这个隔离的存储器区域是一个包围区。这种包围区提供了一种在不受信任的环境中进行安全的可证明的计算的方法。因此,即使从VTL1运行的过程受到用户模式或内核模式的攻击,VTL1也可以保护包围区的内容。
基于硬件的分区是另一种通用类型的存储器分区,其可以被用于在存储器中创建隔离的包围区。硬件分区的一个示例包括英特尔的安全防护扩展(SGX),其中包括处理器指令集,其使得用户模式代码能够以与VBS类似的方式分配私有存储器区域,包括包围区。
应当理解,无论是由VBS还是其他基于硬件的包围区技术保护,包围区通常存在于主机过程的上下文内,以使得与包围区的任何交互都经受主机过程的现有保护。
分区的一个好处(尤其是在使用基于虚拟机的虚拟化的情况下)是能够以实现服务器资源的高密度部署以及实现云计算的方式来划分数据和应用。
基于容器的虚拟化(有时称为基于命名空间的虚拟化)是一种分区,其可以为缩放的服务提供更加增强的兼容性和增加的密度。这是很好的,因为更高的兼容性实现降低软件开发成本,而更高的密度可以在设施、劳动力和硬件的相对成本相同的情况下实现更多收入。
还可以使用容器和基于容器的虚拟化来提供隔离的、资源控制的和可移植的操作环境。例如,当软件应用在容器内运行时,它可以在不影响系统其余部分的情况下执行,并且系统也不会影响应用。容器可以特定于一个应用,或者也可以针对多个应用提供运行时,提供附加的操作系统功能和服务(例如输入/输出功能、安全性等)。
然而,虽然将应用和服务划分到常规容器中具有许多好处,包括增加了应用或服务的灵活性和可移植性,但是传统容器安全边界在某种程度上是有漏洞的。针对其一个原因是现有的容器技术依赖于底层操作系统的安全性,而不是任何特定的硬件安全保证,并且现有容器的结构是有意灵活的,以促进应用兼容性,这导致在如何保护容器内的数据方面存在差距。在这方面,容器无法提供与上述VBS和硬件分区包围区技术相同级别的可证明安全保证。
然而,在IoT和数据库工作负载中有许多新兴的容器场景,这些场景正在开发中,它们的容器化应用需要安全的存储器解决方案。但是,不幸的是,由于特别是以高效和可缩放的方式提供这种安全存储器存在若干挑战,所以还没有创建用于提供这种实用性的系统。这些缺点有效地限制了在分布式系统中使用容器的广泛采用,特别是在提高安全性被需要的情况下。
例如,目前没有操作系统能够提供/强制执行安全存储器分配,特别是在针对容器安全场景的稳健监测和证明的情况下。容器的生命周期也是短暂的,这使得利用被用于其他类型分区技术(诸如被用于VBS和硬件分区的那些技术)的配置、监测和端到端安全密钥管理和证明技术多少有些令人望而却步。
因此,持续需要能够以安全和可证明的方式对存储器进行分区和隔离的系统和方法,并且甚至更具体地以可以利用容器的功能优势的方式来这样做。在一些实施例中,可以通过使用更重量级的虚拟化形式(诸如虚拟机)来实现安全和隔离。在一些实施例中,一些基于管理程序的容器实现可能需要包围区。在一些实施例中,更重量级的虚拟化技术不是必要的,因为证明可以被使用来验证轻量级容器图像,并且基于容器的虚拟化技术(具有较少的隔离)可以被使用来仅在存储器包围区中托管安全密集型工作负载。
然而,将注意到,本文要求保护的主题不限于必须解决与现有系统相关联的任何缺点或仅在诸如上述那些环境中操作的实施例。相反,提供该背景仅是为了说明可以实践本文描述的一些实施例的一个示例性技术领域。
发明内容
所公开的实施例指向用于供应包括基于容器的存储器包围区的容器的实施例,具有可证明的安全保证。所公开的实施例还指向用于证明对所供应的包括基于容器的存储器包围区的容器的安全保证的实施例。
所公开的实施例通过以基于容器的存储器包围区的形式提供用于供应具有安全存储器隔离的容器的新系统和方法以及通过提供用于以高效并且可缩放的方式有效管理对容器的安全保证的证明的证明基础设施,来提供优于现有容器供应技术的技术优势。
一些实施例包括用于创建基于容器的存储器包围区的方法和系统。在这些实施例中,计算系统标识具有安全组件的容器图像,该安全组件被用于证明由在第一安全域上运行的主机系统使用的特定安全配置,该安全组件被存储在主机系统的存储器地址处。注意,在一些实施例中,虚拟机或容器主机实现包括VTL1和VTL0存储器的主机系统。
然后,计算系统使用容器图像在不同于第一安全域的第二安全域中实例化新容器,新容器被配置为基于存储在主机系统的地址处的安全组件来利用主机系统的包围区存储器,新容器包括具有特定存储器地址的安全组件的副本,该特定存储器地址是从容器到存储在主机系统处的安全组件的存储器地址的声称的链接。
另外,在新容器的实例化期间或之后,计算系统修改从容器到存储在主机系统处的安全组件的特定存储器地址的声称的链接,以使得从容器到存储器地址的声称的链接被修改为将容器可验证地链接到主机系统的存储器地址,从而针对容器创建可证明状态。
一些实施例还包括用于针对基于容器的存储器包围区执行证明的方法和系统。在这些实施例中,计算系统标识驻留在与主机系统的第一安全域不同的安全域中的一个或多个容器,一个或多个容器中的每一个容器被配置为引用主机系统的包围区存储器,并且使用安全组件以证明针对包围区存储器的特定安全配置,安全组件被存储在主机系统的存储器地址处并且通过对一个或多个容器处的安全组件的一个或多个引用而被链接到主机系统的存储器地址处。
然后,计算系统基于安全组件从远程证明服务获得关于一个或多个容器的安全配置的安全保证的证明报告。在一些实例中,这是单个证明报告,而不是多个证明报告。然后,在从远程证明服务接收到证明报告后,计算系统接收到针对证明一个或多个容器中的特定容器的安全保证的请求。然后,计算系统基于在接收到证明请求之前接收到的证明报告来证明针对特定容器的安全保证,并且不需要来自容器和针对新请求的远程证明服务的新的端到端证明。
本发明内容以简化的形式被提供来介绍在下面的详细描述中进一步描述的一系列概念。本发明内容不旨在标识要求保护的主题的关键特征或必要特征,也不旨在被用作确定要求保护的主题的范围的帮助。
附加特征和优点将在以下描述中被阐述,并且部分地从描述中将显而易见,或者可以通过本文教导的实践而获悉。本发明的特征和优点可以借助于所附权利要求中特别指出的手段和组合来实现和获得。本发明的特征将从以下描述和所附权利要求中变得更加明显,或者可以通过如下文所述的本发明的实践而获悉。
附图说明
为了描述能够获得上述和其他优点和特征的方式,将通过参考在附图中图示出的特定实施例来呈现对上述简要描述的主题的更具体的描述。应理解,这些附图仅描绘典型实施例并且因此不应被认为是对范围的限制,将通过使用附图用附加的特异性和细节来描述和解释实施例,其中:
图1图示了计算环境,其中密钥供应服务和证明服务与提供操作在第一域(例如,VTL0)中的用户模式和利用安全内核的隔离的用户模式的计算系统通信,并且隔离的存储器包围区操作在第二域(例如,VTL1)中。
图2图示了系统的设计概览的一个实施例,该系统利用具有可证明状态的容器和包围区并且包括容器管理服务、证明服务和密钥供应服务。
图3图示了被配置为包括和/或实现所公开的实施例的各方面的计算系统。
图4图示了另一计算系统,该计算系统被配置为包括和/或实现具有密钥供应服务和证明服务基础设施的要求保护的发明的各方面。
图5图示了根据所公开的实施例的具有与用于供应容器的方法相关联的多个动作的流程图的一个实施例。
图6示出了根据所公开的实施例的具有与用于证明容器的安全保证的方法相关联的多个动作的流程图的一个实施例。
具体实施方式
所公开的实施例指向用于供应包括基于容器的存储器包围区在内的容器的实施例,具有可证明的安全保证。所公开的实施例还指向用于证明对所供应的包括基于容器的存储器包围区的容器的安全保证的实施例。
在一些实例中,所公开的实施例通过提供用于将容器供应为基于容器的存储器包围区的新系统和方法以及通过提供用于以高效和可缩放的方式有效管理对容器的安全保证的证明的证明基础设施,来提供优于现有容器供应技术和现有包围区技术的技术优势。
与传统的VBS和传统的基于硬件的包围区相比,基于容器的包围区的创建还为存储器分区创建了甚至更多的隔离。例如,需要注意的是,无论是由VBS还是其他基于硬件的包围区技术保护,传统包围区通常存在于主机过程的上下文内,以使得与包围区的任何交互都经受主机过程的现有保护。然而,虽然正常的操作系统过程常规上不具有强大的隔离机制,但是通过以本文描述的方式在过程容器的上下文内封装包围区主机过程,可以向系统添加附加的隔离级别。基于容器的包围区的使用还可以被监测和验证,以有效和可缩放的方式提供已证明的安全保证。
下面将描述所公开的实施例的附加益处和功能性,包括基于容器的包围区的供应和监测,以及以高效和可缩放的方式证明基于容器的包围区的安全保证。
首先将注意力转向图示了计算环境100的图1,该计算环境100包括被配置为实现所公开的实施例的各方面的计算系统110。例如,该计算系统110包括容器管理服务112,其被配置为供应容器114和基于容器的存储器包围区116。计算系统110还被配置为实现处于操作在第一域(例如,操作系统VTL0)中的用户模式中的容器管理服务112和容器114并且实现处于第二域(例如,操作系统VTL1)中的隔离的基于容器的存储器包围区116和对应的安全内核。
管理程序120或其他管理层被配置为实现第一域(VTL0)和第二域(VTL1)之间的安全边界。TPM(可信平台模块)130被配置为向证明服务140证明状态。在一些实例中,这是通过提供由TPM制造商供应的认证背书密钥(EK)来实现的,诸如密钥供应服务150或另一关键供应服务。
在使用期间,运行TPM的主机生成证明身份密钥(AIK),其可以被用来在AIK证书或者稍后可以被用来完整性保护并且证实主机启动状态的其他报告中签署TPM声明(例如,证明TPM原语的安全保证)。响应于对证明报告的请求,AIK证书最初被提供给TPM130和/或计算系统110。响应于验证和证明TPM和AIK所提供的认证背书密钥(EK)的共同存在,AIK证书由证明服务或其他证书服务提供。
证明服务还可以验证或证明针对特定基于容器的包围区的安全保证(例如,证明其隔离安全保证和原语)。例如,主机测量系统启动链以及TPM平台配置寄存器(PCR)中的操作系统二进制文件的哈希值,利用AIK对这些进行数字签名,并且这些可以被用来在由证明服务所验证的证明报告中证实和证明包围区二进制文件。在安全内核启动期间,在TPM中生成和测量系统身份密钥(IDK)。在一些实施例中,作为系统启动链的一部分,启动顺序也被测量。
在启动之后,包围区从证明服务请求针对容器的证明报告。可选地,包围区可以向容器证明报告添加密钥,包围区可以与其客户端共享该密钥。为了实现这个密钥,包围区首先生成密钥对,并且利用被发送到证明服务(例如,证明服务140或另一证明服务)的包围区证明请求中的系统身份密钥(IDK)以及主机TPM启动日志和PCR来对包围区密钥对的公钥进行数字签名,所有这些都由AIK密钥和AIK证书进行签名。一旦包围区公钥被添加到容器证明报告中,该证明报告就可以被视为包围区证明报告,并且该密钥可以被用来与该包围区进行安全通信。
证明服务140验证:TPM启动日志用AIK密钥/证书正确地签名并且在PCR中测量的启动链与TPM引导日志相匹配。它还验证:启动日志中的IDK密钥是否与用于对证明请求中的包围区公钥进行签名的IDK密钥相匹配。证明服务还确保启动日志中的IDK密钥与用于对证明请求中的包围区公钥进行签名的IDK密钥相匹配。如果是,则证明服务生成具有系统健康状况的签名证明报告。此签名报告验证包围区证明报告并且包含包围区的公钥以及当前时间戳,从而证明基于容器的包围区的安全保证。
图2图示了利用具有可证明状态的容器和包围区并且包括容器管理服务、证明服务和密钥供应服务的系统的设计概览。这些组件之间的关系已在上文中进行了描述,并且将从参考图3和图4的以下描述中变得更加明显。
注意,容器管理服务被配置为供应、启动、监测和维护在系统上运行的所有容器的状态,从而提供用于创建任意N个容器的可缩放的基础设施。
每个容器还负责创建、初始化和分配它自己的包围区。
包围区和容器经由主机OS内核被绑定,这由容器管理服务来跟踪。这种绑定虽然在主机操作系统的上下文中是可信的和可证明的,但是并不维护包围区的安全边界。
证明服务可以被用来确保适当的包围区代码正运行在任何给定的包围区内。
在一些实施例中,内核可以向证明服务报告系统/平台证明报告,并且因此可以验证被用来创建包围区(VBS、SGX等)的平台的完整性。在一些实施例中,容器将包围区公钥添加到系统证明报告中,创建包围区证明报告。在一些实施例中,对包围区内容运行完整证明,创建包围区证明报告。
包围区/容器负责生成它们自己的包围区证明报告并且将该报告提供给证明服务(如上所述)。证明服务可以与容器管理服务协调以向容器和与那些容器交互的过程提供证明。
图3和图4图示了计算系统,该计算系统被配置为包括和/或实现所公开的实施例的各方面以供应和证明基于容器的包围区。图3的系统300A具体地与参照图5示出和描述的流程图500相对应,而图4的系统300B具体地与参照图6示出和描述的流程图600相对应。
如图所示,图示的系统300A和300B包括一个或多个硬件处理器310和存储装置320。值得注意的是,例如,存储装置302一般被图示为有界柱体,其可以与硬盘驱动器相对应。然而,应当理解,存储装置320不仅限于硬盘驱动器配置。相反,存储装置320可以包括用于一个或多个计算系统和存储位置的不同类型的独立和/或分布式存储装置。
在一些实例中,存储装置320包括非易失性存储装置。在其他情况中,存储装置包括非易失性和易失性存储装置的任何组合。存储装置320还可以包括例如存储器,其可以包括易失性存储器和/或闪存或其他非易失性存储器。
在一些实例中,存储器被用来存储和实现分区存储器,诸如分区存储器容器(例如,新容器315)和其他存储结构(例如,容器元数据322、映射表324、容器图像326、容器图像文件(例如,.dll 328和安全数据329)),以及可执行代码和应用,包括用于计算系统300A和300B的OS(操作系统)和内核。
存储还可以包含存储器分区,包括VTL0存储器380和VTL1存储器390。VTL0存储器380包括第一底层存储域,其被系统OS用来实现用户模式以及启动容器的供应。VTL0存储器还可以存储映射表(在下面更详细地描述)以将所供应的(多个)容器的(多个)地址映射到增强/隔离的安全存储域VTL1存储器390中的(多个)对应容器包围区,其包括隔离的安全存储器包围区。
存储装置320还存储可执行代码和应用,用于实例化或实现其他所图示的系统组件(例如,映射器330、容器证明服务340、容器管理服务350、存储器管理器360、加载器370、密钥供应服务394),这些系统组件被用来通过一个或多个网络连接399来供应、监测、加载或以其他方式与容器甚至远程系统连接,诸如远程密钥供应服务395和远程证明服务396。
应当理解,提供各种系统组件的图示分离仅是为了便于描述所公开的实施例,因此除非另有说明,否则不应被解释为强加系统组件相对于存储装置或者相对于彼此的任何物理边界或关系。
关于上述内容,将注意的是,在不同的域VTL0存储器380和VTL1存储器390之间存在强加和强制执行的物理和/或虚拟边界,它们相应地被用来实现系统的用户模式和隔离的用户模式。
例如,如本文所描述的,可以在容器的供应期间创建和强制执行在划分的域之间建立的一个或多个边界。在一些实施例中,该强制执行由管理程序来维护。在其他实施例中,另一管理层被用来强制执行和维护针对不同的域所创建的分区和存储器隔离分区。在一些实例中,容器管理服务340识标识不同容器之间的安全/隔离边界。安全/隔离边界通过硬件或管理程序(未图示)来强制执行。
应当理解,虽然在图3和图4中仅示出了两个不同的存储器分区,但是将第一安全域中的单个容器(例如,VTL0存储器380)与第二安全域(例如,VTL1存储器390)中对应的基于容器的包围区分区进行合并,可以有任意数目的不同分区。这些分区还可以利用/包括任意数目的不同安全域来支持在相同和/或不同安全域内建立的任意数目的容器,诸如但不限于VBS的虚拟信任级别的不同信任级别。
此外,尽管未示出,但是不同的分区也可以包含地或排他地基于硬件分区,诸如英特尔的SGX包围区技术,以及用于包含在其中的容器的硬件和虚拟存储器分区的任何组合。
参考不同的安全域,应当理解,每个安全域可以被配置为适应不同的需要和偏好,并且促进具有针对不同期望的安全存储器解决方案的不同级别的安全保证的基于容器的存储器包围区,包括但不限于现有以及甚至尚未开发的IoT、数据库和企业工作负载和存储场景。
在未示出的一些实例中,所公开的系统将基于容器的存储器包围区隔离在一个、两个或两个以上不同的安全域内,每个不同的安全域包括不同的虚拟安全域(例如,VTLl、VTL2等等),具有与底层主机用户模式安全域(例如VTL0)不同的安全保证,并且被实现或分布在一个或多个硬件存储设备(例如,相同/共享一组的一个或多个驱动器、磁盘、机架、数据中心等)内。这样的场景可以支持多租户实施例,例如,其中不同的租户利用相同的后端容器存储系统和存储设备,但是其中每个租户具有不同的安全约束并且利用不同的容器图像以供应基于容器的存储器包围区。
在未示出的一些情况中,所公开的系统将基于容器的存储器包围区隔离在一个、两个或两个以上不同的安全域内,每个不同的安全域具有与底层主机用户模式安全域不同的安全保证,并且每个不同的安全域被物理隔离在不同/物理分离和非共享的硬件存储设备上(例如,一组不同的一个或多个驱动器、磁盘、机架、数据中心等等)。这样的实施例对于在不同位置利用物理存储的分布式网络特别有用。
在一些情况中,所公开的系统在与底层主机用户模式安全域不同的同一安全域内隔离多个基于容器的存储器包围区,其中多个基于容器的存储器包围区中的每一个存储器包围区都从公共容器图像来供应。
在一些备选和/或附加实施例中,至少两个或更多不同的基于容器的存储器包围区从至少两个不同的对应容器图像被供应。
如图3至图4中所反映,并且如前面所指出,所公开的系统包括容器管理服务340。该容器管理服务340被配置为供应新容器(例如,新容器315),以及监测已经被供应的容器及其安全配置和存储器区域。
容器证明服务394也由系统300A/300B提供。在一些实施例中,该容器证明服务394是促进与一个或多个远程证明服务(例如,远程证明服务396)通信的接口。
另外,由于包围区本身不能容易地辨别它正在运行的过程的类型,因为正在调用包围区的过程由不受信任的另一域(例如,VTL0)控制,所以远程证明服务140,以及有时还有本地容器证明服务394,为容器管理服务340提供接口来与包围区进行协调以证明给定包围区正在使用什么类型的主机过程。例如,如果包围区在过程隔离容器的上下文内正在运行,则证明服务(连同平台证明报告和包围区证明报告,如上所述)能够做出可证明的声明,即:给定包围区的主机过程与系统的其余部分相隔离。
以这种方式,远程证明服务140以及有时还有本地容器证明服务394被配置为验证/证明由系统300A/300B和/或包围区容器提供的证明报告以证明系统和/或基于容器的存储器包围区的安全保证,如上所述并且特别是参照图1和图2所描述的。
在一些情况中,容器证明服务394仅在系统300B和(多个)远程证明服务396之间来回传递信息(例如,证明报告、证明请求、经验证的证明报告等)。
在其他情况中,容器证明服务394被配置为存储证明凭证并执行基于容器的存储器包围区安全保证的证明,而不针对为包围区而接收的每个证明请求而与远程证明服务进行接口。以这种方式,证明可以被更有效地执行以适应容器的短暂性质,并且不需要针对每个证明请求而在包围区和远程证明服务之间进行端到端证明。这对于本地验证全部从同一容器图像供应的多个容器/包围区的证明报告特别有效。
例如,在一些情况中,容器证明服务394被配置为验证或证明针对特定基于容器的包围区的安全保证(例如,证明其隔离安全保证和原语),而无需针对被发送用于验证的每个新证明报告的包围区证明报告的新的端到端验证。
例如,这通过如下操作是可能的:容器证明服务394存储包括AIK的凭证或从远程密钥供应服务395和/或远程证明服务396接收到的其他凭证以验证包围区证明报告,并且其可以在确定新的基于容器的包围区报告对应于或具有与早先由远程密钥供应服务验证的基于容器的包围区报告相似的配置文件时被用来验证新的包围区证明报告(来自早先的基于容器的包围区或新的基于容器的包围区)。
例如通过验证新的基于容器的包围区报告是利用从具有相同安全域和供应简档(例如,在TPM平台配置寄存器(PCR)中具有相似的系统启动链,具有相同的IDK密钥,和/或其被绑到相同的底层认证背书密钥(EK))的相同或不同的基于容器的包围区的先前远程证明中接收的相同AIK或其他凭证/安全信息来进行签名,例如可以确定新的基于容器的包围区报告对应于或具有与早先的经验证的基于容器的包围区报告相似的简档。
在其他实例中,可以通过确定从新容器接收到新的基于容器的包围区报告来做出确定,该新容器是从具有被用来供应早先供应的容器并且创建已由远程证明服务140验证的对应的包围区证明报告的相同安全数据329的相同容器图像供应的。
在一些情况中,证明由与先前/主机容器包围区相同的图像所供应的新的/访客容器包围区的过程由系统300A/B使用本地和/或远程容器证明服务394以及本地和/或远程密钥供应服务来执行,并且包括以下内容:(1)主机生成密钥(例如,通过使用密钥供应服务394)或获得密钥(例如,通过使用远程密钥供应服务),其被发送到新的/访客包围区,(2)新的/访客包围区生成证明报告,(3)新的/访客包围区开始与主机的Diffie-Hellman密钥交换过程,(4)诸如通过向容器证明服务340呈现证明报告,新的/来宾包围区向主机包围区呈现证明报告(具有密钥交换数据),并且其包括与先前容器包围区的早先经验证的证明报告相对应的信息,诸如主机包围区(5)主机开始Diffie-Hellman密钥交换过程,(6)主机诸如利用容器证明服务340来验证新的/访客证明报告,并且这可以基于从相同的容器图像所供应的早先供应的容器的早先证明,(7)使用由密钥供应服务394所提供的密钥信息,主机向新的/访客包围区发送密钥交换信息,(8)主机和访客包围区完成Diffie-Hellman密钥交换,以及(10)主机使用密钥供应服务340利用共享密钥来加密要被发送到访客包围区的密钥。
在这样的实施例中,有可能利用本地密钥供应服务394和容器证明服务340来验证从远程认证服务早先供应和证明的相同容器图像中供应的新的/访客包围区的包围区证明报告。
在一些实施例中,新容器315一旦被证明,就可以在本地为其他容器生成报告,或者将证明委托给其他容器。例如,在一些实例中,这些其他委托容器可能寿命更长,因此表现得像代理。例如,这使得在给定的主机系统300B上能够存在许多临时容器,以及在容器和委托容器的不同层次结构内嵌套证明。
在一些实例中,基于容器的属性(例如,容器的不同寿命期限、容器的不同类型、不同的容器位置、不同的容器租户、不同的容器内容、不同的容器风险概况、针对不同容器的不同服务质量保证、容器责任(例如,委托或主容器)和/或任何其他容器属性)。
例如,作为更长寿命容器和/或具有更高风险级别的容器可能需要证明特定的一个或多个远程证明服务,而作为更短寿命容器和/或具有更低风险级别的不同容器可能只需要证明更接近系统/容器的不同的远程证明服务,或者甚至证明本地容器证明服务(即,394)。
因此,在一些情况中,系统可以访问来自容器的证明并且基于生成证明的所确定的对应容器的寿命期限(或容器的(多个)任何其他属性)确定性地将证明路由到适当的证明服务。例如,在接收到后续容器证明后,系统可以确定与后续容器证明相关联的特定容器的属性,并且然后基于特定容器的属性来确定性地将后续容器证明路由到远程服务,或者备选地,至少部分地基于特定容器的属性来生成证明报告而不将后续容器证明路由到远程服务。由于属性可以包括容器的寿命,这还可以包括:系统分析第一组容器具有比第二组容器相对更长的寿命,其中将与第一组容器相关联的一个或多个容器证明路由到远程服务,同时为包括所述后续容器的第二组容器中的每一个容器生成具有本地证明的一个或多个证明报告,例如后续容器包括具有比第一组容器相对更短的寿命,并且不路由第二组容器到远程服务。
关于前述内容,应当理解,来自容器的证明可以是证明请求(例如,包围区证明请求、容器证明请求、证明报告和/或其他证明)。此外,还将理解,如上所述被用来路由证明的属性可以是容器寿命或任何其他容器/包围区属性。
现在将参考图5的流程图来描述用于为容器供应基于容器的存储器包围区的流程。如图所示,图5中的流程图500包括多个动作(动作510,动作520和动作530),它们与用于根据所公开的实施例供应容器的各种方法相关联。
所图示的第一动作(动作510)包括系统(例如,系统300A)标识具有安全组件(例如,诸如.dll 328之类的库文件)的容器图像(例如,容器图像326),该安全组件被用于证明由在第一安全域(例如,VTL0)上运行的主机系统所使用的特定安全配置。在一些情况中,容器图像被识标识并且由加载器370加载到存储器(例如,VTL0存储器380)中。存储器管理器360识别在哪里加载容器并且跟踪供应的和退役的容器以有效地管理存储器。
需要注意的是,容器图像的安全组件可以采取多种形式,并且不必须是库文件。相反,安全组件可以包括并且被配置为具有可证明的配置信息的任何数据(例如数据blob、数据结构、非结构化数据等),该配置信息被用来生成包围区证明请求或者具有被包括在包围区证明请求中的信息。在一些情况中,安全组件包括标识容器图像326的安全配置简档或加载它的包围区存储器的隔离属性的信息。
例如,安全组件将被加载到主机系统的存储器位置中,该存储器位置可以包括主机系统的包围区存储器分区内(例如,VTL1存储器390内)的位置。尽管不是必需的,但是容器图像326还可以包含可执行代码或其他安全数据329,其在被供应之后利用由密钥供应服务394提供的一个或多个密钥解密并且使得可执行代码在主机系统的隔离的包围区存储器分区(例如,VTL1)内自动实例化。
值得注意的是,在容器被完全供应之后,来自安全组件的信息可以被用来验证对应的基于容器的存储器包围区的安全保证。还注意到,在一些实例中,安全组件将被加载到包围区存储器分区(例如,VTL1存储器390)中以进一步隔离和保护安全组件免受在底层存储/安全域(例如,VTL0存储器380)中实现的组件/过程的不希望的访问。
在供应新容器的初始阶段期间,安全组件的实际/可验证存储器地址还不是已知的,因为它没有由容器图像指定。因此,当从容器图像326供应新容器315时被用来更新映射表和容器元数据的存储器地址只是用于安全组件的声称的存储器地址(这是不正确的占位符地址),而不是主机系统的实际/可验证地址。这就是为什么此时仅将其称为声称的存储器地址。
在容器的初始供应阶段期间,在诸如映射表324和/或容器元数据之类的数据结构内记录用于安全组件的该声称的存储器地址。
要注意的是,映射表324可以采取各种形式并且可以是单个独立数据结构或多个分布式表/结构。在一些情况中,映射表324由映射器330创建和维护,映射器330标识不同容器及其在系统内分配的存储位置。一旦被创建,映射表324就被容器管理服务340和存储器管理器360引用,形成对新容器315和其他供应容器的监测并与新容器315和其他供应容器接口。
在供应容器之后,容器将经由指向容器元数据和/或映射表中的安全组件的地址/指针来访问安全组件,以标识安全组件信息,容器将使用该安全组件信息来生成包围区证明报告。因此,如果安全组件的地址没有利用正确的地址被更新,则容器将无法访问来自安全组件的信息,也无法为容器/包围区产生具有适当安全保证的包围区证明报告并且证明这些安全保证的任何/所有尝试都将失败。
此外,在一些实例中,诸如分页操作之类的计算过程可能导致为容器所分配的存储器位置的改变。为了解决这种情况,可以进一步更新映射表324以反映所分配的存储器的改变。此外,容器可以对证明服务394进行证明或者容器可以由主机存储器包围区(例如,VTL1)验证,其验证容器的完整性与容器的代码完整性(CI)策略相匹配,并且例如使得存储器包围区将发布新的证明报告而无需从远程证明服务396获得远程证明。此外,在这种情况中,主机存储器包围区充当针对远程证明服务396的委托。注意,在一些实施例中,该证明可以被标记为映射表中的元数据,并且这也可以被存储管理器跟踪,以使得该元数据可能会被分页操作标记为“脏”,并且因此在每次之后都必须“刷新”证明。因此,在该实施例中,存储器范围将被包括在证明报告中。
因此,在一些实施例中,重要的是:一旦容器被完全供应并且安全组件最终被加载在主机系统的存储器中(诸如在主机系统的包围区存储器分区中),就更新针对被引用的容器的安全组件的存储器地址。
如动作520所反映的,系统300A使用容器图像326在不同于被用来实现主机系统的用户模式的第一安全域(例如,VTL0存储器380)的第二安全域(例如,VTLl存储器390)中实例化新容器315(其包括新容器包围区)。特别地,通过被配置为基于可证明安全组件(例如,.dll 328)中指定的配置来利用主机系统的隔离的包围区存储器分区,新容器被实例化为基于容器的包围区,并且这导致容器被配置为引用和利用隔离的包围区存储器来存储数据并且执行与主机系统的底层用户模式存储器隔离的过程。
一旦被供应,新容器315包括具有主机系统的特定存储器地址的安全组件的副本,并且该副本被存储在它引用的主机系统的隔离的包围区存储器分区中。然而,如上面所提及,基于初始容器图像,并且诸如反映在映射表324和/或容器元数据中,由新容器315提供或映射到的当前地址仅是从容器到主机系统处的安全组件的存储器地址的声称的链接(因为在容器图像首次被用来供应新容器时,该地址是未知的)。
这个问题特别突出并且与使用单个容器图像来供应多个不同容器以及不是在首次供应新容器的VTL0存储器中而是在主机的包围区存储器分区中存储/隔离这些容器的安全组件相关。
为了解决这个问题,系统访问并且修改声称的链接(例如,安全组件的记录/声称的物理存储器地址),以使得新容器和包围区存储器分区中的存储器地址之间的映射链接将可验证地将容器链接到包围区存储器分区中的主机系统的正确存储器地址(动作530)。
这种修改还可以包括以下中的一个或多个:利用安全组件实际存储在的主机系统的实际存储器地址覆盖新容器处的安全组件的声称的存储器地址,从安全组件实际存储在的主机系统的实际存储器地址创建链接,将映射表324内与安全组件相关联的声称的地址改变为实际/可验证地址,利用具有到安全组件的存储器地址的正确地址的新映射表324覆盖或替换具有安全组件的声称的存储器地址的映射表324,在映射表324内创建从原始声称的链接/地址到包围区存储器分区中的安全组件的实际可验证物理地址的链接或新指针。
修改还可以包括或遵循映射表的创建和与新容器相关联的元数据的使用以将安全组件在包围区存储器分区中的存储器地址添加到映射表
一旦该存储器地址在映射表中被改变、更新或以其他方式修改以指向安全组件的正确/可验证存储器位置,容器就可以访问并且生成具有基于安全组件的信息的证明报告。注意,在一些实施例中,证明报告与容器管理服务350或依赖方共享(动作540)。在一些实施例中,VTL1能够监测新容器315的状态和系统300B的状态。在一些实例中,容器管理服务350还能够监测容器状态和系统的状态。容器状态的监测可以包括访问和评估证明请求、评估证明报告和/或监测对容器的更新和写入请求和/或容器的包围区存储器的重新寻址/重新分配。
如果给定的新容器315或系统300B未通过证明或以其他方式出现受到攻击,则可以请求容器管理服务350拆除新容器315,和/或如果其独立标识此类攻击则可以主动采取此类行动(动作550)。
在一些实施例中,VTLl可以监测映射表324并且如果它们未通过证明或以其他方式受到攻击,则还可以防止更新以将VTLl存储器映射到新容器315和类似实体中。在一些实施例中,附加的通知可以从VTL1或其他组件被发送到远程管理实体,诸如远程证明服务396。
图6图示了具有与根据所公开的实施例的用于证明容器的安全保证的方法相关联的多个动作(动作610、620、630和640)的流程图600的一个实施例。该流程图600与图4中所示的系统300B相对应。
最初,如系统300B图示中所反映的以及如前所述的,远程证明服务396可以被用来验证系统证明报告以及验证个体包围区/容器报告。证明过程中所使用的密钥和其他凭证也可以由远程密钥供应服务395提供。然而,如进一步描述的,用于临时容器的端到端证明和密钥供应,特别是从相同容器图像供应的容器表示了浪费的资源。
当新容器基于被用来针对具有基于容器的存储器包围区的先前和/或现有容器供应和/或证明包围区证明报告的早先使用的容器图像时,当前系统通过提供包含和/或维护与远程服务相关联的凭证但可以被用来在供应和/或证明期间直接向容器提供密钥并且证明所供应的容器的安全保证的本地密钥供应服务394和本地容器证明服务340来解决这些低效率中的一些,而不将系统300B外部的针对新容器的供应或证明请求传递给远程服务(诸如端到端供应和/或证明所需的)。
如图6中所示,由系统实现的第一动作是识别驻留在与主机系统的第一安全域(VTL0)不同的安全域(例如,VTLl存储器,包括包围区存储器)中的一个或多个容器的动作(动作610)。值得注意的是,在这个动作中,容器中的每个容器被配置为引用主机系统的包围区存储器并且使用安全组件以证明包围区存储器的特定安全配置。该安全组件还被存储在主机系统的特定存储器地址处,诸如在包围区存储器中,并且通过对一个或多个容器处的安全组件的一个或多个引用而被链接到主机系统的特定存储器地址处。
下一动作包括:系统从远程证明服务获得单个证明报告,该证明报告基于由安全组件获得的或包括安全组件的信息来验证一个或多个容器的安全配置的安全保证。(动作620)。例如,这可以响应于系统针对第一容器而向远程证明服务提交容器证明请求而发生,该第一容器由特定容器图像供应并且利用主机系统的包围区存储器并且使用用于生成证明报告的安全组件。
接下来,系统在从远程证明服务接收到单个证明报告之后接收新请求以证明对一个或多个容器中的特定容器的安全保证(动作630)。例如,这可以响应于新的/第二容器(其从被用来供应第一容器的相同容器图像来供应)生成并且提交新的证明请求而发生。备选地,特定容器可以是提交附加证明请求或重新发送早先提交的证明请求的第一容器。注意,在一些实施例中,该证明请求是针对容器,并且在一些实施例中,该证明请求是针对容器以及与该容器相关联的包围区。
在一些实施例中,本地容器证明服务340拦截新请求,并且防止新证明请求被发送到响应于先前证明请求而被用来验证第一/单个证明报告的远程证明服务。在一些实施例中,到远程证明服务的网络连接失败、超时或以其他方式不可靠,因此,被发送到响应于先前证明请求而被用来验证第一/单个证明报告的远程证明服务的新请求不到达预定的目的地。
相反,系统(例如,本地容器证明服务340)独立地(不利用远程证明服务进行检查)验证和/或以其他方式证明特定容器的安全配置的安全保证(动作640)。例如,该动作响应于确定特定容器是从被用来供应已经生成证明报告的先前容器的相同容器图像中供应而被执行,该证明报告在单个证明报告中并且基于在接收到新的证明请求之前接收到的该先前证明报告而已被验证。
在一些情况中,对于不同的容器证明请求,重复动作630和640,以使得系统证明多个不同容器的安全保证,每个容器包括对存储在主机系统的地址处的相同安全组件的引用,它们全部从相同容器图像中供应,并且基于经由针对从相同容器图像中供应的另一容器而生成的早先接收/签名的证明报告对安全保证的早先验证。
在一些实施例中,证明服务可以被分层到多个缓存层级,例如,一个层级可以在容器本身中运行,另一层级可以在主机中运行,并且第三层级可以诸如作为远程证明服务396在远程服务中运行,等等。在这种情况下,容器图像的验证可能会被报告(或传播)到不同的层级,然后被“缓存”以确保证明服务是高度可用的。
关于前述内容,应当理解,不同层级内的不同证明的嵌套还可以包括每一层级的结构化和/或确定性证明。例如,对于证明的每一层级,系统可以独立地标识生成要被证明的证明报告的容器的属性。基于这些属性,可以由负责用于在该层级别处进行证明的组件/服务(例如,由容器、由委托容器、由主机、由远程服务等)在同一层级内执行证明,或者用于证明的请求可以被碰撞到另一层级/证明服务或组件。
应当理解,前述实施例可以被用来克服与传统存储器分区技术相关联的许多缺点,并且以利用容器的分层隔离来提供基于容器的存储器包围区的方式以及以可缩放且高效的方式而被使用。
应当理解,本文描述的方法可以由计算系统来实践,诸如上面描述的那些和要求保护的那些,并且其包括一个或多个处理器(例如,硬件处理器)和计算机可读介质,该计算机可读介质包括存储计算机可执行指令的计算机存储器和/或一个或多个其他硬件存储设备,该计算机可执行指令可由硬件处理器执行,并且该计算机可执行指令当由硬件处理器执行时使对应的计算系统执行各种功能,包括执行本文描述的方法中阐述的动作。
如下文更详细讨论的,本发明的实施例可以包括或利用专用或通用计算机,包括计算机硬件。本发明范围内的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这种计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种截然不同的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。
物理计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储(诸如CD、DVD等)、磁盘存储或其他磁存储设备,或者任何其他可以被用来以计算机可执行指令或数据结构的形式存储所期望的程序代码装置并且可由通用或专用计算机访问的介质。
“网络”被定义为一个或多个数据链路,其启用在计算机系统和/或模块和/或其他电子设备之间传送数据。当信息通过网络或其他通信连接(可以是硬连线、无线或硬连线,也可以是无线的组合)而被传送或提供到计算机时,计算机适当地将连接视为传输介质。传输介质可以包括网络和/或数据链路,其可以被用来携带或发送计算机可执行指令或数据结构形式的所需程序代码部件,并且其可以被通用或专用计算机访问。以上的组合也被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件后,计算机可执行指令或数据结构形式的程序代码装置可以从传输计算机可读介质自动传送到物理计算机可读存储介质(或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可以被缓存在网络接口模块(例如“NIC”)内的RAM中,然后最终被传送到计算机系统RAM和/或计算机系统中的低易失性计算机可读物理存储介质。因此,计算机可读物理存储介质可以被包括在也(或者甚至主要)利用传输介质的计算机系统组件中。
计算机可执行指令包括例如使通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。计算机可执行指令例如可以是二进制、中间格式指令诸如汇编语言甚至源代码。尽管已经以特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,在所附权利要求中定义的主题不一定局限于上述描述的特征或动作。相反,所描述的特征和动作作为实现权利要求的示例形式而被公开。
本领域技术人员将理解,本发明可以在具有多种类型的计算机系统配置的网络计算环境中被实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等。本发明还可以在分布式系统环境中被实践,其中通过网络被链接(通过硬连线数据链路、无线数据链路或通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。
备选地或附加地,本文描述的功能性可以至少部分地由一个或多个硬件逻辑组件来执行。例如但不限于,可以使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、程序专用集成电路(ASIC)、程序专用标准产品(ASSP)、系统级芯片系统(SOC)、复杂可编程逻辑器件(CPLD)等。
在不脱离本发明的精神或特性的情况下,本发明可以以其他特定形式来体现。所描述的实施例在所有方面都应被视为说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由前述描述来指示。在权利要求的等效含义和范围内的所有变化都被包含在它们的范围内。

Claims (15)

1.一种计算系统,包括:
一个或多个处理器;以及
一个或多个计算机可读存储介质,所述一个或多个计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令可由所述一个或多个处理器执行以实现用于创建基于容器的存储器包围区的方法,所述方法包括:
标识具有安全组件的容器图像,所述安全组件被用于证明由在第一安全域上运行的主机系统使用的特定安全配置,所述安全组件被存储在所述主机系统的存储器地址处;
使用所述容器图像来实例化新容器,所述新容器被配置为基于存储在所述主机系统的地址处的安全组件来利用主机系统的第二安全域中的包围区存储器,所述新容器包括具有特定存储器地址的所述安全组件的副本,所述特定存储器地址是从所述容器到存储在所述主机系统处的所述安全组件的所述存储器地址的声称的链接;以及
在所述新容器的实例化期间或之后,修改从所述容器到存储在所述主机系统处的所述安全组件的所述特定存储器地址的所述声称的链接,以使得从所述容器到所述存储器地址的所述声称的链接被修改为将所述容器可验证地链接到所述主机系统的所述存储器地址。
2.根据权利要求1所述的计算系统,其中修改所述声称的链接包括:利用所述主机系统的所述地址覆盖所述新容器处的所述安全组件的所述特定地址,在所述主机系统中由所述主机系统使用的所述安全组件被加载。
3.根据权利要求1所述的计算系统,其中修改所述声称的链接包括:创建从所述新容器处的所述安全组件的所述特定地址到所述主机系统的所述地址的链接,在所述主机系统中由所述主机系统使用的所述安全组件被加载。
4.根据权利要求1所述的计算系统,其中修改所述声称的链接包括:更新与所述特定地址相关联的映射表中的引用地址以包括或引用所述主机系统的所述地址,在所述主机系统中由所述主机系统使用的所述安全组件被加载。
5.根据权利要求4所述的计算系统,其中所述方法还包括创建映射表,并且在实例化所述新容器期间或之后,使用与所述新容器相关联的元数据来将所述引用地址添加到所述映射表。
6.根据权利要求1所述的计算系统,其中所述安全组件包括库文件。
7.根据权利要求1所述的计算系统,其中所述安全组件包括被用来生成关于针对所述新容器的所述安全配置的证明报告的数据。
8.根据权利要求7所述的计算系统,其中所述方法还包括执行与针对所述新容器的所述安全配置相关联的安全保证的证明。
9.一种计算系统,包括:
一个或多个处理器;以及
一个或多个计算机可读存储介质,所述一个或多个计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令可由所述一个或多个处理器执行以实现用于针对基于容器的存储器包围区执行证明的方法,所述方法包括:
标识一个或多个容器,所述一个或多个容器中的每一个容器被配置为引用驻留在与所述主机系统的第一安全域不同的安全域中的包围区存储器,并且使用安全组件以证明所述包围区存储器的特定安全配置,所述安全组件在所述主机系统的存储器地址处被加载、并且通过对所述一个或多个容器处的所述安全组件的一个或多个引用而被链接到所述主机系统的存储器地址处;
基于所述安全组件从远程证明服务获得关于所述一个或多个容器的安全配置的安全保证的单个证明报告;
在从所述远程证明服务接收到所述单个证明报告后,接收对证明针对所述一个或多个容器中的特定容器的安全保证的请求;以及
基于在接收到对证明的所述请求之前接收到的所述单个证明报告来证明针对所述特定容器的所述安全保证。
10.根据权利要求9所述的计算系统,其中所述方法还包括基于所述单个证明报告来证明针对多个容器的所述安全保证,每个容器包括对在所述主机系统的所述存储器地址处加载的所述安全组件的引用。
11.根据权利要求10所述的计算系统,其中响应于对证明不同容器的安全保证的请求而获得所述单个证明报告,所述不同容器具有对在所述主机的所述地址处加载的所述安全组件的引用。
12.根据权利要求9所述的计算系统,其中所述方法还包括:
接收针对具有已分配包围区存储器的特定容器的新证明请求,所述请求是在针对所述容器重新分配所述已分配包围区存储器之后被生成的;以及
验证所述容器的完整性并且发布新证明报告,而无需向远程证明服务提交所述新证明请求。
13.根据权利要求9所述的计算系统,其中所述方法还包括:
监测容器状态并且禁用被确定为受到攻击的容器。
14.根据权利要求9所述的计算系统,其中所述方法还包括:
在接收到后续容器证明请求后,确定与所述后续容器证明请求相关联的特定容器的属性;以及
基于所述特定容器的所述属性来确定性地向远程服务路由所述后续容器证明请求,或者备选地,至少部分地基于所述特定容器的所述属性来生成证明报告而不向所述远程服务路由所述后续容器证明请求。
15.根据权利要求14所述的计算系统,其中所述后续容器的所述属性包括所述容器的寿命,并且第一组容器具有比第二组容器相对更长的寿命,其中与所述第一组容器相关联的一个或多个容器证明请求被路由到所述远程服务,同时一个或多个证明报告针对包括所述后续容器的所述第二组容器中的每一个容器被生成,所述后续容器具有比所述第一组容器相对更短的寿命,而不向所述远程服务路由所述第二组容器。
CN202080049909.XA 2019-07-09 2020-06-08 从过程容器的上下文使用安全存储器包围区 Pending CN114080592A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962872233P 2019-07-09 2019-07-09
US62/872,233 2019-07-09
US16/565,271 2019-09-09
US16/565,271 US11256785B2 (en) 2019-07-09 2019-09-09 Using secure memory enclaves from the context of process containers
PCT/US2020/036575 WO2021006973A1 (en) 2019-07-09 2020-06-08 Using secure memory enclaves from the context of process containers

Publications (1)

Publication Number Publication Date
CN114080592A true CN114080592A (zh) 2022-02-22

Family

ID=74101941

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080049909.XA Pending CN114080592A (zh) 2019-07-09 2020-06-08 从过程容器的上下文使用安全存储器包围区

Country Status (12)

Country Link
US (2) US11256785B2 (zh)
EP (1) EP3997600B1 (zh)
JP (1) JP2022539969A (zh)
KR (1) KR20220027874A (zh)
CN (1) CN114080592A (zh)
AU (1) AU2020311836A1 (zh)
BR (1) BR112021024204A2 (zh)
CA (1) CA3143459A1 (zh)
IL (1) IL289614B1 (zh)
MX (1) MX2022000359A (zh)
WO (1) WO2021006973A1 (zh)
ZA (1) ZA202109971B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12010227B1 (en) 2019-09-30 2024-06-11 Amazon Technologies, Inc. System and methods for securing role credentials
US11363012B1 (en) * 2019-09-30 2022-06-14 Amazon Technologies, Inc. System and methods for using role credentials associated with a VM instance
US11481497B2 (en) * 2020-09-11 2022-10-25 Dell Products L.P. Systems and methods for hardware attestation in an information handling system
US11695549B2 (en) * 2021-07-08 2023-07-04 Nec Corporation Multi-device remote attestation
US20230044731A1 (en) * 2021-08-05 2023-02-09 International Business Machines Corporation Attestation of a secure guest
US20230068880A1 (en) * 2021-08-27 2023-03-02 EMC IP Holding Company LLC Function-based service framework with trusted execution platform
US11954219B1 (en) * 2021-11-15 2024-04-09 Amdocs Development Limited System, method, and computer program for universal security of container images
US20220109581A1 (en) * 2021-12-15 2022-04-07 Intel Corporation Distributed attestation in heterogenous computing clusters
US20230267196A1 (en) * 2022-02-22 2023-08-24 Mellanox Technologies, Ltd. Confidential Computing with Device Memory Isolation
US11949583B2 (en) 2022-04-28 2024-04-02 Hewlett Packard Enterprise Development Lp Enforcing reference operating state compliance for cloud computing-based compute appliances

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6305009B1 (en) * 1997-12-05 2001-10-16 Robert M. Goor Compiler design using object technology with cross platform capability
US7194446B1 (en) * 2003-09-25 2007-03-20 Rockwell Automation Technologies, Inc. Location-based execution of software/HMI
US20080022265A1 (en) * 2006-06-30 2008-01-24 Morris Robert P Methods, systems, and computer program products for generating and using object modules
US8489811B1 (en) * 2006-12-29 2013-07-16 Netapp, Inc. System and method for addressing data containers using data set identifiers
US20160085695A1 (en) * 2014-09-24 2016-03-24 Intel Corporation Memory initialization in a protected region
US20160350534A1 (en) * 2015-05-29 2016-12-01 Intel Corporation System, apparatus and method for controlling multiple trusted execution environments in a system
US10216529B1 (en) * 2015-11-19 2019-02-26 Virtuozzo International Gmbh Method and system for sharing driver pages
US10354095B2 (en) * 2016-03-31 2019-07-16 Intel Corporation Methods and apparatus to initialize enclaves on target processors
US10135859B2 (en) * 2016-05-03 2018-11-20 Cisco Technology, Inc. Automated security enclave generation
US10986496B2 (en) * 2016-08-01 2021-04-20 Georgia Tech Research Corporation Methods and systems for providing secure mobile edge computing ecosystems
US10911451B2 (en) * 2017-01-24 2021-02-02 Microsoft Technology Licensing, Llc Cross-platform enclave data sealing
US11443033B2 (en) * 2017-01-24 2022-09-13 Microsoft Technology Licensing, Llc Abstract enclave identity
US10372945B2 (en) 2017-01-24 2019-08-06 Microsoft Technology Licensing, Llc Cross-platform enclave identity
US10885189B2 (en) 2017-05-22 2021-01-05 Microsoft Technology Licensing, Llc Isolated container event monitoring
WO2019077607A1 (en) * 2017-10-17 2019-04-25 Argus Cyber Security Ltd. SYSTEM AND METHOD FOR MANAGING PROGRAM MEMORY ON A STORAGE DEVICE
US11010403B2 (en) * 2018-04-24 2021-05-18 Microsoft Technology Licensing, Llc Relational distributed ledger for smart contracts
US10713181B1 (en) * 2019-02-21 2020-07-14 Virtuozzo International Gmbh Method and system for sharing driver pages
CN111199048B (zh) * 2020-01-02 2023-07-25 航天信息股份有限公司 基于具有生命周期的容器的大数据分级脱敏方法和系统
CN111857973A (zh) * 2020-07-30 2020-10-30 江苏方天电力技术有限公司 一种应用资源访问方法及装置

Also Published As

Publication number Publication date
AU2020311836A1 (en) 2022-01-06
US20210011984A1 (en) 2021-01-14
EP3997600B1 (en) 2023-06-14
IL289614A (en) 2022-03-01
EP3997600A1 (en) 2022-05-18
WO2021006973A1 (en) 2021-01-14
IL289614B1 (en) 2024-05-01
US11256785B2 (en) 2022-02-22
KR20220027874A (ko) 2022-03-08
ZA202109971B (en) 2023-03-29
US20220147465A1 (en) 2022-05-12
MX2022000359A (es) 2022-02-03
CA3143459A1 (en) 2021-01-14
BR112021024204A2 (pt) 2022-04-12
US11762964B2 (en) 2023-09-19
JP2022539969A (ja) 2022-09-14

Similar Documents

Publication Publication Date Title
EP3997600B1 (en) Using secure memory enclaves from the context of process containers
US9989043B2 (en) System and method for processor-based security
US9501665B2 (en) Method and apparatus for remotely provisioning software-based security coprocessors
KR100930218B1 (ko) 소프트웨어 기반 보안 코프로세서를 제공하는 방법, 장치및 처리 시스템
US8448169B2 (en) Managing unique electronic identification for kernel extensions in isolated virtual space
Chakrabarti et al. Trusted execution environment with intel sgx
JP2022522664A (ja) ページ変更検出によるセキュアなページング
US10691356B2 (en) Operating a secure storage device
US11726922B2 (en) Memory protection in hypervisor environments
Rueda et al. Flexible security configuration for virtual machines
US20240220639A1 (en) Secure data offload in a disaggregated and heterogenous orchestration environment
US11907405B2 (en) Secure data storage device access control and sharing
US20220198070A1 (en) Provisioning secure/encrypted virtual machines in a cloud infrastructure
Ye et al. Enabling Performant and Secure EDA as a Service in Public Clouds Using Confidential Containers
Huh et al. Trustworthy distributed systems through integrity-reporting
NUST Design and Deployment of a Trusted Eucalyptus Cloud

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40066653

Country of ref document: HK