CN113544679A - 安全操作系统映像的增量解密和完整性验证 - Google Patents

安全操作系统映像的增量解密和完整性验证 Download PDF

Info

Publication number
CN113544679A
CN113544679A CN202080019498.XA CN202080019498A CN113544679A CN 113544679 A CN113544679 A CN 113544679A CN 202080019498 A CN202080019498 A CN 202080019498A CN 113544679 A CN113544679 A CN 113544679A
Authority
CN
China
Prior art keywords
operating system
page
system image
secure operating
secure
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
CN202080019498.XA
Other languages
English (en)
Inventor
R·宾德根
C·博恩特雷格
J·布拉德伯里
F·布萨巴
L·海勒
V·米哈拉夫斯基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN113544679A publication Critical patent/CN113544679A/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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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/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
    • G06F21/575Secure boot
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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

Landscapes

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

Abstract

通过增量解密安全操作系统映像来提供计算环境内的安全处理,包括针对安全操作系统映像的页接收在页的加密期间使用的页地址和微调值。处理确定先前在对安全操作系统映像的另一页进行解密期间尚未使用微调值,并使用映像加密密钥和微调值来解密页地址处的内存页内容以促进获得解密的安全操作系统映像。进一步,验证安全操作系统映像的完整性,并基于验证安全操作系统映像的完整性,开始执行解密的安全操作系统映像。

Description

安全操作系统映像的增量解密和完整性验证
背景技术
客户机操作系统是指例如安装在虚拟机上的操作系统软件。在计算中,虚拟机是计算机系统的仿真。可由虚拟机监控程序(supervisor)创建的虚拟机基于计算机架构并且提供物理计算机的功能。虚拟机的实现可涉及专用硬件、软件或其组合。虚拟化技术允许计算机一次运行一个以上的操作系统。
在当前计算环境中,诸如操作系统的系统软件必须是可信的,因为它具有对要执行的应用和数据的完全控制。传统上讲,操作系统(以及虚拟机监控程序)可以访问或修改任何应用的数据,或者潜在地篡改由应用实施的安全特征而不被检测到。因此,底层软件应该是可信计算库的一部分。
在共享环境中,应用的客户被迫信任开发、配置、部署和控制系统软件的实体不是恶意的。客户应用还必须信任系统软件不易受到升级特权并损害应用信息的完整性的攻击。这种广泛的信任要求有时可能难以证明是正当的,并且具有显著风险,对于采用例如公共云服务的应用客户而言尤其如此。
发明内容
通过提供计算机系统来促进计算环境内的安全处理,克服了现有技术的某些缺点,并提供了额外的优点。计算机系统包括存储器和耦合到存储器的处理器,并且计算机系统被配置用以执行一种方法。该方法包括增量解密安全操作系统映像。增量解密包括,针对安全操作系统映像的多个页中的一页:接收所述页的页地址和在所述页的加密期间使用的微调值;确定先前在对安全操作系统映像的所述多个页中的另一页进行解密期间尚未使用所述微调值;和使用在加密所述页时使用的映像加密密钥和所述微调值来解密所述页地址处的内存页内容,以促进获得解密的安全操作系统映像。该方法进一步包括验证安全操作系统映像的完整性,以及基于验证安全操作系统映像的完整性,开始执行解密的安全操作系统映像。有利地,安全操作系统映像的页的增量解密(其中,使用映像加密密钥和唯一微调值(也称为初始化向量)单独地加密页)通过例如防止对安全操作系统映像进行统计分析以获得有意义的数据来提供计算环境内的增强的安全性。进一步,概括的方法还允许不同地加密存储在不同位置中的数据。
在一个或多个实施例中,增量解密和验证完整性由计算机系统的安全接口控件来执行。安全接口控件是计算机系统的安全和可信实体,并且页地址和微调值由安全接口控件从虚拟机监控程序接收。有利地,安全接口控件呈现安全执行环境,其中客户机操作系统的内存及其在安全虚拟机中运行的应用被保护免受虚拟机监控程序以及其他虚拟机和在与虚拟机相同的主机系统上运行的任何程序的影响。
在一个或多个实施例中,多个页的页地址具有固定顺序(例如,从低到高),并且增量解密安全操作系统映像包括确定所述页地址不同于(例如,在从低到高排序的情况下,大于)安全操作系统映像的所述多个页中的先前解密的页的任何先前页地址。进一步,在一个或多个实现方式中,增量解密安全操作系统映像进一步包括确定微调值不同于(例如,在从低到高排序的情况下,大于)在安全操作系统映像的多个页中的先前解密的页的解密期间使用的任何先前微调值。
在一个实施例中,验证完整性包括部分地采用使用所述多个页的内存页内容获得的累积内容哈希以及使用所述多个页的页地址获得的累积地址哈希。例如,验证安全操作系统映像的完整性可包括将累积内容哈希与由安全接口控件随来自虚拟机监控程序的元数据一起接收的完整性内容哈希进行比较,以及将累积地址哈希与由安全接口控件随来自虚拟机监控程序的元数据一起接收的完整性地址哈希进行比较。例如,安全接口控件可以从从虚拟机监控程序接收的元数据提取完整性内容哈希和完整性地址哈希以及映像加密密钥。有利地,安全接口控件(即,主机系统的安全实体)能够验证操作系统映像的完整性,以防止已经被篡改的映像的执行。为此目的,使用根据内存页的内容计算的哈希值以及根据操作系统映像的内存页地址的列表计算的哈希值,并将其与以页地址的顺序提供的内容和地址的相应完整性哈希值进行比较。注意,在这点上,将页地址从低到高排序有利于微调值的有效性和完整性检查。还注意,采用上述过程时内存页不需要是连续的。
在一个或多个实施例中,安全接口控件包括计算机系统的固件元件,并且安全操作系统映像将作为计算环境内的安全客户机操作系统映像来运行。在一个或多个具体实施例中,将一个私钥-公钥对与计算机系统相关联,其中,私有密钥仅对于安全接口控件是已知的,对于在计算机系统上运行的软件则是不可访问的。公钥由安全操作系统映像的所有者用来生成密钥协定数据,以便与安全接口控件安全地传送用于对安全操作系统映像进行加密的映像加密密钥,并将密钥协定数据存储在元数据结构中。可由安全接口控件随来自虚拟机监控程序的调用一起接收元数据结构。元数据结构可进一步包括在验证安全操作系统映像的完整性时使用的完整性哈希值。有利地,该过程导致这样一个安全执行环境,其中安全操作系统映像的机密性被保留,并且同时操作系统的完整性被验证。在这个过程中,安全操作系统映像的所有者选择密钥,即映像加密密钥,并且假设操作系统的所有组件都被加密,在操作系统映像已被引导之后操作系统映像使用的静止数据也被加密。
在此还描述和要求保护涉及一个或多个方面的计算机程序产品和计算机实现的方法。进一步,在此还描述并且可以要求保护与一个或多个方面相关的服务。
通过本发明的技术实现了额外的特征和优点。本发明的其他实施例和各方面在此作了详细描述并且被认为是所要求保护的发明的一部分。
附图说明
在本说明书的结尾处权利要求书中特别指出并清楚地要求保护作为实例的本发明的一个或多个方面。从以下结合附图的详细描述中,本发明的上述和其他目的、特征和优点是显而易见的,其中:
图1描绘了根据本发明的一个或多个方面的包括并使用安全操作系统映像解密和完整性验证的一个或多个方面的计算环境的一个示例;
图2描绘了根据本发明的一个或多个方面的安全操作系统映像的增量解密和完整性验证的过程的一个实施例;
图3A描绘了根据本发明的一个或多个方面的在安全操作系统映像加载之后的虚拟机(VM)内存内容的一个实施例;
图3B描绘了根据本发明的一个或多个方面的用于根据增量解密和完整性验证过程对安全操作系统映像进行解包的元数据的一个实施例;
图4A描绘了根据本发明的一个或多个方面的开始映像解包过程的一个实施例,示出了客机地址空间、虚拟机监控程序和超级管理器(或安全接口控件)根据增量解密和完整性验证过程的数据结构和操作;
图4B描绘了根据本发明的一个或多个方面的在图4A的客户机地址空间、虚拟机监控程序和超级管理器之间的解包过程的一个实施例的进一步细节;
图4C描绘了根据本发明的一个或多个方面的在完成操作系统映像解包时的图4A和4B的客户机地址空间、虚拟机监控程序和超级管理器的一个实施例;
图5A-5B描绘了根据本发明的一个或多个方面的安全操作系统映像的增量解密和完整性验证的一个示例;
图6A描绘包括或使用本发明的一个或多个方面的计算环境的另一示例;
图6B描绘了根据本发明的一个或多个方面的图6A的存储器的进一步细节;
图7描绘了云计算环境的一个实施例;和
图8描绘了抽象模型层的示例。
具体实施方式
根据本发明的一方面,提供一种促进计算环境内的安全处理的能力。在一个示例中,该能力包括逐页地增量解密安全操作系统映像,其中,假设每一页都已使用映像加密密钥(即,秘密密钥)和相应的唯一微调值进行了加密。增量解密包括确定特定页的唯一微调值先前在安全操作系统映像的另一页的解密期间未被使用。另外,安全操作系统映像的完整性验证与对映像的加密的页的解密相称地执行。进一步,基于验证安全操作系统映像的完整性,开始映像的执行。
参见图1描述了包括并使用诸如本文所公开的增量解密和完整性验证过程的一个或多个方面的计算环境的一个示例。参见图1,在一个示例中,计算环境100基于由美国纽约州阿蒙克市的国际商业机器
Figure BDA0003247401620000041
公司提供的z/Architecture。关于z/Architecture的描述见于IBM出版物“z/Architecture Principles of Operation”(
Figure BDA0003247401620000051
PublicationNo.SA22-7832-11,12th Edition,September 2017),特此通过引用并入其全文。(本文引用的)Z/ARCHITECTURE、IBM、Z/VM和Z/OS是纽约州阿蒙克市的国际商业机器公司的注册商标。本文中使用的其他名称可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。
在另一示例中,计算环境基于由美国纽约州阿蒙克市的国际商业机器公司提供的PowerArchitecture。PowerArchitecture的一个实施例的描述见于“Power ISATM Version2.07B”(International Business Machines Corporation,April 9,2015),特此通过引用并入其全文。POWER ARCHITECTURE是美国纽约州阿蒙克市的国际商业机器公司的注册商标。
计算环境100包括提供虚拟机支持的中央处理器复合体(CPC)102。CPC 102经由一个或多个控制单元108耦合到一个或多个输入/输出(I/O)设备106。中央处理器复合体102包括例如耦合到一个或多个中央处理器(又称中央处理单元(CPU))110的处理器存储器104(又称主内存、主存储器、中央存储器)和输入/输出子系统111,它们各自将在下文描述。
处理器存储器104包括例如一个或多个虚拟机112、虚拟机管理器(诸如管理虚拟机的虚拟机监控程序114)、超级管理器((ultravisor))115(或安全接口控件)和处理器固件116。虚拟机监控程序114的一个示例是由纽约州阿蒙克的国际商业机器公司提供的
Figure BDA0003247401620000052
虚拟机监控程序有时被称为主机。进一步,如本文所使用的,固件包括例如处理器的微代码和/或毫代码。其包括例如在更高级机器代码的实现中使用的硬件级指令和/或数据结构。在一个实施例中,其包括例如通常作为微代码递送的专有代码,所述微代码包括可信软件或特定于底层硬件的微代码,并控制对系统硬件的操作系统访问。在一个或多个实施例中,安全接口控件(超级管理器115)可以至少部分地在硬件和/或固件中实现,所述硬件和/或固件被配置为执行例如本文所述的过程。
CPC的虚拟机支持提供操作大量虚拟机112的能力,每个虚拟机112能够与不同的程序120一起操作并运行客户机操作系统122,诸如Linux。每个虚拟机112能够充当单独的系统。即,每个虚拟机可独立地重置,运行客户机操作系统,并用不同的程序操作。在虚拟机中运行的操作系统或应用程序看上去可以访问整个系统,但实际上,其仅一部分是可用的。
处理器存储器104耦合到中央处理单元(CPU)110,其是可分配给虚拟机的物理处理器资源。例如,虚拟机112包括一个或多个逻辑处理器,每个逻辑处理器表示可被动态地分配给虚拟机的物理处理器资源110的全部或一份。
另外,在一个实施例中,每个CPU 110是在处理内核(也称为內核)132内执行的硬件线程。内核包括一个或多个线程,并且在该示例中,内核132包括四个硬件线程。在其他示例中,计算环境可包括一个或多个内核,并且每个内核可包括一个或多个硬件线程。
进一步,处理器存储器104耦合到I/O子系统111。输入/输出子系统111引导输入/输出控制单元108与设备106和主存储器104之间的信息流。它耦合到中央处理复合体,因为它可以是中央处理复合体的一部分或与中央处理复合体分离。
在一个特定示例中,虚拟机的模型是V=V模型,其中虚拟机的实或绝对内存(memory)由主机虚拟内存而不是实或绝对内存支持。每个虚拟机具有连续的虚拟内存空间。物理资源由虚拟机监控程序114管理,并且共享的物理资源由主机根据需要分派给客户机操作系统以满足其处理需求。该V=V虚拟机(即,可分页(pageable)客户机)模型假设客户机操作系统与物理共享机器资源之间的交互由主机控制,因为大量客户机通常阻止主机简单地划分硬件资源并将硬件资源分配给配置的客户机。
如上所述,存储器104耦接到I/O子系统111。I/O子系统111可以是中央处理复合体的一部分或者与其分离。它可以引导主存储器104和耦合到中央处理复合体的输入/输出控制单元108和输入/输出(I/O)设备106之间的信息流。
可以使用许多类型的I/O设备。一个特定类型是数据存储设备140。数据存储设备140可以存储一个或多个程序142、一个或多个计算机可读程序指令144、和/或数据等。计算机可读程序指令可以被配置为执行本发明的各方面的实施例的功能。
被配置为执行本发明的各方面的实施例的功能的计算机可读程序指令还可以或者可替代地包括在存储器104中。许多变化是可能的。
如本文所公开的,客户机操作系统的内存及其在安全虚拟机中运行的应用被保护免受不可信虚拟机监控程序的影响,以及免受在与虚拟机相同的主机系统上运行的其他虚拟机和任何程序的影响。保护由可信实体实施,所述可信实体包括安全主机系统的硬件和/或固件元件。可信实体在本文中被称为安全接口控件或超级管理器。在一个或多个实现方式中,安全接口控件(或超级管理器)在可信固件中运行。可信固件驻留在硬件系统区域(HSA)中,HAS受高度保护,并且仅可以由最低级别的固件访问。在一个或多个实施例中,该代码由计算机系统的制造商拥有,由制造商推出,由制造商安全地维护。该代码的内容由机器读取以执行代码,但不被从机器转储或提取。在一个或多个实施例中,安全接口控件是硬件的扩展,用于实现可能太复杂而不能纯粹在硬件中实现指令。相比之下,虚拟机监控程序可以指代可以托管多个客户机(亦称虚拟机)的任何软件。虚拟机监控程序未必属于被小心加载并被保护免受在系统上运行的软件的访问的固件。一般来说,在一个或多个实施例中,虚拟机监控程序可以是具有广泛的管理接口(包括网络接口)的第三方软件。虚拟机监控程序因此是不可信的。虚拟机监控程序因此是不可信的,并且可能有通过网络接口可利用的漏洞,或者有容易遭受恶意或疏忽性管理的弱点。
打算在计算环境中作为安全客户机运行的操作系统映像,在此被假定为受免于检查和篡改的保护的,这甚至在其可用于主机系统之前,以便确保机密和完整性。为了实现这一点,操作系统映像由映像所有者选择的秘密密钥来加密和完整性保护。该密钥在此也被称为映像加密密钥。假定操作系统映像的所有组件被加密,在系统已被引导之后由操作系统使用的所有静止数据也被加密。
对引导操作系统所不需要的数据的加密,可以独立于操作系统映像本身的加密来完成。对额外的数据的解密,可由作为安全客户机运行的操作系统完成。例如,加密的Linux操作系统映像可以包含内核、初始虚拟磁盘(ramdisk)和内核参数行。初始虚拟磁盘可包含用于对驻留在分配给虚拟机的加密磁盘卷上的数据进行解密的密钥。
运行虚拟机的主机系统需要能够解密安全操作系统映像以便引导(boot)安全操作系统映像。为了确保机密性,此能力在此被保留给主机系统的可信硬件和固件(“安全接口控件”或“超级管理器”)。为此目的,将私钥-公钥对与主机系统相关联。私钥仅对于主机系统的可信硬件和固件(即,安全接口控件或超级管理器)是已知的,并且不可由在主机上运行的任何软件访问。公钥由加密的操作系统映像的所有者用于生成密钥协定数据(keyagreement data),以安全地将用于加密安全操作系统映像的映像加密密钥与安全接口控件进行通信,并将密钥协定数据存储在一个元数据结构(本文中称为安全执行(SE)报头)中。例如,可以使用RSA密钥包装(wrapping)或Diffie-Hellman/KEM型密钥交换方法。SE报头的大小独立于操作系统映像的大小。
进一步,如本文所公开的,主机系统还验证操作系统映像的完整性,以便防止已经被篡改的映像的执行。为此目的,为内存页的内容计算完整性哈希值,以及为操作系统映像的内存页地址的列表计算完整性哈希值。在一个或多个实施例中,为了促进两个哈希值的计算,以页地址的顺序(例如,从最低到最高)提供页及其地址。要与之进行比较的这些完整性哈希值可经由元数据结构(SE报头)存储在安全接口控件或超级管理器中和提供给安全接口控件或超级管理器。
增量解密并促进安全操作系统映像的完整性检查的过程在本文中被称为解包(unpacking)。本文公开的一个或多个方面涵盖安全主机系统内以在保护机密性的同时验证操作系统映像完整性的方式对操作系统映像进行解密的过程。在一个或多个实施例中,这可以通过在解包过程期间实施内存页的顺序来促进。本文描述的发明方面的另一优点是处理非连续地保存的操作系统映像的能力。
另外,在一个或多个方面,所公开的解密安全操作系统映像并验证安全操作系统映像完整性的方法使得更难以完成对安全操作系统映像的统计分析以及基于统计分析对映像的攻击。
如上所述,在一个或多个实施例中,以将不允许观察在安全状态中的内存内容的方式执行专门准备的安全操作系统映像。为了具有固有的安全性,假设用由安全操作系统映像的用户或所有者选择的密钥(本文中称为秘密密钥或映像加密密钥)来加密操作系统映像。在加密完成之后,加密密钥(即,映像加密密钥)用主机计算系统的第二密钥包装,即用公钥-私钥对中的公钥或用从公钥-私钥对中导出的对称密钥包装。在一个或多个实施例中,可以通过一种使用例如本文中称为微调值(tweak value)的初始化向量的对称密钥算法进行逐页加密,其中,微调值是映像的每一页唯一的值。
图2描绘了根据一个或多个方面的解包处理的一个实施例。在一个或多个实施例中,超级管理器或安全接口控件提供虚拟机监控程序可通过包括开始解包操作调用、执行逐页解包操作调用和完整解包操作调用的超级管理器调用可访问的功能。在超级管理器能被调用之前,将加密的安全操作系统映像加载到仍不安全的虚拟机(VM)存储器中,以允许超级管理器执行加载。进一步,虚拟机监控程序必须知道构成操作系统映像的所有页的地址,并且还要知道用于每个页的加密的微调值。对于本发明的方面来说,如何使此信息可供虚拟机监控程序使用并不重要。为了简单起见,可以将未加密的引导组件与加密的映像一起加载到虚拟机内存中。可以用该组件以下列参数来调用虚拟机监控程序:SE报头、内存页地址列表和微调值列表(例如,每页地址一个调整)。
代替向虚拟机监控程序提供全面的页列表,还可以指定页范围列表以节省存储器。类似地,代替提供微调值的列表,可以指定后续微调值相差固定正值的微调值范围。可替代地,可以从页地址导出微调值。以上选项均不影响虚拟机监控程序与超级管理器之间的交互。虚拟机监控程序通过一个对超级管理器的调用(call)来开始解包操作,该调用例如是以SE报头为参数的“start unpack”(开始解包)(200)。SE报头包含由主机公钥(publichost key)包装的所有者的映像加密密钥,以及映像页内容和页地址的映像完整性哈希值。超级管理器从SE报头提取映像加密密钥和完整性值(202),并确定SE报头数据是否有效(204)。如果“否”,则解包操作失败,进入禁用等待状态(206)。进入禁用等待状态使得客户机操作系统不能运行,即客户机不能离开禁用等待状态。例如,可以向虚拟机监控程序返回错误。在一个或多个实施例中,客户机系统可以被重置,在这种情况下,它将再次以加载加密的映像开始,并开始上述解包过程。可替代地,可以关闭客户机系统,这实际上是删除虚拟机,即,释放该虚拟机使用的主机资源。
虚拟机监控程序按从低到高页地址(在一个或多个实施例中)的顺序,在指定内存区域的所有页地址上循环(208),用页地址和用于该页的加密的微调值,调用超级管理器“unpack page”(解包页)操作(210)。超级管理器于是执行以下操作。超级管理器将内存页设置为安全的,并且使用来自SE报头的映像加密密钥和为加密该页而用过的微调值来解密内存页内容。为了防止微调值被使用多于一次,每个新的微调值应当由一个大于先前使用的微调值的数字来表示,并且每个页地址应当大于先前使用的页地址(212)。如果“否”,则解包失败,进入禁用等待状态(206)。否则,超级管理器将该页标记为安全,用映像加密密钥和微调值来解密该页,并确定页内容的累积内容哈希和页地址的累积地址哈希(214)。(例如,累积哈希的计算可以是:cum_hash(累积_哈希):=cum_hash+所有页上的部分哈希(页i),其中1<=i<=n,+是复杂操作。)在一个实施例中,超级管理器根据该内存页的内容和所有先前解密的页的汇总值确定运行哈希值(running hash value),并且根据该内存页的页地址和所有先前解密的页的页地址的汇总值确定另一哈希值。通过将多个页地址级联到一个内存页中,然后计算在该内存页上的哈希值,可以实现对诸如上面提到的逐页地址哈希计算的增强。
在所有操作系统映像页都已经被处理之后(208),虚拟机监控程序用“finalizeunpack”(完成解包)操作调用超级管理器(216),其中,超级管理器将针对该内容和页地址计算的内容和地址哈希值与SE报头中包含的相应完整性哈希值进行比较(218)。如果它们不匹配,则解包操作失败,向虚拟机监控程序返回错误指示(206)。否则,解包操作已经成功,超级管理器可以用SE报头中的程序状态字(PSW)开始安全客户机执行,这就开始在安全模式下运行的操作系统映像。
注意,利用在此描述的处理,内存页不必是连续的,因为映像可以具有“空洞”,但是解密过程应当(在一个或多个实施例中)按从低到高的顺序进行,以便能够进行在此描述的微调值的有效性和完整性检查。在客户机初始化期间属于客户机但未被解包的页将是安全的,并且在安全客户机的第一次访问时归零。
作为进一步的示例,图3A描绘了在安全操作系统映像加载之后的内存内容的一个实施例。如上所述,在一个或多个实施例中,安全操作系统映像被假定为由安全操作系统映像的用户或所有者用映像加密密钥来加密的。映像加密密钥是由用户或所有者选择的秘密密钥。加密完成后,加密密钥被用或者使用从主机计算系统的公钥-私钥对中的公钥或从公钥-私钥对中导出的对称密钥包装,并存储在元数据结构(即,安全执行(SE)报头)301,其是作为来自客户机磁盘310的元数据303的一部分在客户机地址空间300内提供的。客户机磁盘310和客户机地址空间300是(在一个或多个实施例中)由虚拟机监控程序提供给虚拟机以运行安全操作系统映像的内存。可以连同SE报头301一起提供引导组件302,用于发起安全操作系统映像的执行。在一个或多个实现方式中,元数据303是未加密的,但是被保护不受篡改。安全操作系统映像305包括地址页304,如上所述,地址页304已经被用所有者的映像加密密钥单独地加密以确保保护操作系统映像。安全操作系统映像可通过虚拟机监控程序被加载到内存(如图3A所示)中。
图3B进一步描绘了在一个或多个实施例中用于对安全操作系统映像进行解包的元数据。如图所示,客户机地址空间300内的SE报头301可包括(用公钥包装的)映像加密密钥306,以及映像内容的完整性哈希307和映像地址的完整性哈希308。在一个或多个实施例中,引导程序组件302可包括引导程序(bootstrap)代码309以及每页(per-page)信息311,导程序代码309可以是或者包括可由虚拟机监控程序执行的代码段,每页信息311包括页地址和微调值。如上所述,在一个或多个实施例中,虚拟机监控程序可以将页地址发送至超级管理器,页地址被排序,诸如按升序或降序排序,作为能够评估页地址和微调值不同于安全操作系统映像的先前的页地址和微调值的有效方法。仅作为举例,在本文的一个或多个实施例中将页地址描述为按升序布置,如以下的图4A-4C的示例中的那样。如本文所描述的,包含页和调整列表的元数据可由实体(诸如软件工具)产生,并且该实体和虚拟机监控程序将具有对列表内的地址和微调值的顺序的共识。更具体地,在一个或多个实现方式中,重要的顺序是页被加密和哈希的顺序,以及虚拟机监控程序将页提交给超级管理器的顺序,这些顺序匹配。如上所述,顺序可以是升序的或降序的,但是超级管理器需要知道在生成映像时使用哪个方向的顺序。因此,该方向通常由安全接口控件(或超级管理器)架构规定。
图4A-4C示出了根据本发明的一个或多个方面的解包过程的一个实施例,其示出了虚拟机监控程序和超级管理器根据增量解密和完整性验证过程的数据结构和/或操作。
在图4A中,描绘了客户机地址空间300、虚拟机监控程序400和超级管理器410的相关数据结构。如图所示,对虚拟机监控程序400进行调用以运行安全操作系统映像。虚拟机监控程序400接收SE报头301,并且临时存储报头,以转发给超级管理器410。超级管理器410被虚拟机监控程序调用以开始解包过程,超级管理器从SE报头提取映像加密密钥306、完整性内容哈希307和完整性地址哈希308,并将其放置在其受保护的存储器(例如,寄存器)内。如图所示,在一个或多个实施例中,超级管理器410还维持具有当前微调值411、待解密页的当前地址412、当前内容哈希413,以及当前地址哈希414,以及累积内容哈希415、累积地址哈希416,最后微调值417和最后页地址418的寄存器。
作为示例,累积内容哈希415包括到目前为止已经被超级管理器解密的内存页的内容上的哈希值,累积地址哈希416包含到目前为止已经被解密的内存页的地址上的哈希值,最后微调值417和最后地址418将包含由超级管理器最后看到的微调值和地址值,在本文公开的一个或多个实施例中,这允许超级管理器确保页地址和微调值不被再使用。微调值、当前地址、当前内容哈希和当前地址哈希是工作寄存器,引用当前正由超级管理器410处理的页。
虚拟机监控程序400重新获得控制并构造数据结构401,在一个或多个实施例中,数据结构401包括安全操作系统映像的每个页地址的页地址和微调值对402。由虚拟机监控程序400提供用于在映像的内存页上迭代的索引403。
图4B描绘了进行解包操作时图4A的客户机地址空间、虚拟机监控程序和超级管理器结构以及处理,其中页地址-微调值对402已经由虚拟机监控程序400提供给超级管理器410。这个当前对已被放置到当前地址和当前调整寄存器中,并且示出了为确保当前地址大于最后地址且当前微调值大于最后微调值而进行的比较。进一步,作为客户机地址空间中的特定页内容的解密的一部分,可将当前内容哈希和当前地址哈希添加到由超级管理器410维护的累积内容哈希和累积地址哈希中。如图4B所示,某些页已经被解密304’。在解密之后,在一个或多个实施例中,这些页由超级管理器410毫代码保护,因此一旦被解密,虚拟机监控程序400就不能访问受保护页。超级虚拟机监控程序410可以使用例如存储密钥设施来确保超级虚拟机监控程序不能访问安全操作系统映像的未加密页。
图4C描绘了在安全操作系统映像的所有内存页已经被超级管理器解密(以及被超级管理器保护)之后的图4A和4B的数据结构和过程。虚拟机监控程序400采用累积内容哈希值415和累积地址哈希值416对超级管理器进行最终解包调用(final unpack call)以验证安全操作系统映像的完整性。如图所示,调用超级管理器来比较与SE报头一起接收的完整性内容哈希与查明的累积内容哈希,以及比较SE报头的完整性地址哈希与所获得的累积地址哈希。假设各个比较都为真,即,累积内容哈希值等于完整性内容哈希值,以及累积地址哈希等于完整性地址哈希,则确认安全操作系统映像的完整性,并且超级管理器可以用例如SE报头中的程序状态字(PSW)来启动解密的安全操作系统映像的执行。
参见图5A和5B描述了在计算环境内促进安全处理的一个实施例的涉及本发明的一个或多个方面的进一步细节。
参照图5A,在一个实施例中,安全操作系统映像被增量解密(500),包括针对安全操作系统映像的多个页中的一页:接收所述页的页地址和在所述页的加密期间使用的微调值(502);确定先前在对安全操作系统映像的所述多个页中的另一页进行解密期间尚未使用所述微调值(504);以及使用在加密所述页时使用的映像加密密钥和所述微调值来解密所述页地址处的内存页内容,以促进获得解密的安全操作系统映像(506)。进一步,验证安全操作系统映像的完整性(508),以及基于验证安全操作系统映像的完整性,开始执行解密的安全操作系统映像(510)。
在一个或多个实施例中,增量解密和验证完整性由计算机系统的安全接口控件来执行,安全接口控件是计算机系统的可信实体,并且,所述页地址和所述微调值由安全接口控件从虚拟机监控程序接收(512)。进一步,在一个实施例中,多个页地址中的页地址顺序固定(例如,从低到高),并且,增量解密安全操作系统映像包括确定所述页地址不同于安全操作系统映像的所述多个页中的先前解密的页的任何先前页地址(514)。
在一个或多个实现方式中,增量解密安全操作系统映像进一步包括确定所述微调值不同于在安全操作系统映像的所述多个页中的先前解密的页的解密期间使用的先前微调值(516)。
作为另一示例,验证完整性包括部分地采用使用所述多个页的内存页内容获得的累积内容哈希以及使用所述多个页的页地址获得的累积地址哈希(518)。例如,如图5B所示,验证安全操作系统映像的完整性可包括将累积内容哈希与由安全接口控件从虚拟机监控程序接收的完整性内容哈希进行比较,以及将累积地址哈希与由安全接口控件从虚拟机监控程序接收的完整性地址哈希进行比较(520)。
在一个或多个实施例中,该过程包括由安全接口控件从接收自虚拟机监控程序的元数据中提取映像加密密钥以及完整性内容哈希和完整性地址哈希(522)。在具体示例中,安全接口控件包括计算机系统的硬件和/或固件元件,并且,安全操作系统映像作为计算环境内的安全客户机操作系统来运行(524)。作为示例,可以将一个私钥-公钥与计算机系统相关联,其中,私钥仅对安全接口控件是已知的,对计算机系统上运行的软件则是不可访问的,并且其中,公钥由安全操作系统映像的所有者包装用于生成用于对安全操作系统映像进行加密的映像加密密钥、以及用于将包装的映像加密密钥存储在向安全接口控件传送的元数据结构中(526)。进一步,安全接口控件可以随来自虚拟机监控程序的调用一起接收元数据结构,元数据结构进一步包括在验证安全操作系统映像的完整性时使用的完整性哈希值(528)。
其他变化和实施例是可能的。
本发明的方面可由许多类型的计算环境使用。参见图6A描述并入和使用本发明的一个或多个方面的计算环境的另一实施例。在此示例中,计算环境10包含(例如)本机中央处理单元(CPU)12、存储器14和经由(例如)一个或多个总线18和/或其他连接而彼此耦合的一个或多个输入/输出装置和/或接口16。作为示例,计算环境10可以包括由纽约州阿蒙克市的国际商业机器公司提供的
Figure BDA0003247401620000141
处理器;具有Intel Itanium II处理器的HPSuperdome,其由Hewlett Packard Co.,Palo Alto,California提供;和/或基于由国际商业机器公司、惠普、英特尔公司、Oracle或其他公司提供的架构的其他机器。IBM、z/Architecture、IBM Z、z/OS、PR/SM和PowerPC是国际商业机器公司在至少一个管辖区域中的商标或注册商标。Intel和Itanium是Intel公司或其子公司在美国和其他国家的商标或注册商标。
本机(native)中央处理单元12包括一个或多个本机寄存器20,诸如在环境内的处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示环境在任何特定时间点的状态的信息。
此外,本机中央处理单元12执行存储在存储器14中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器14中的仿真器代码22。此代码使在一个架构中配置的计算环境能够模拟另一架构。例如,仿真器代码22允许基于除z/Architecture硬件架构之外的架构的机器(诸如PowerPC处理器、HPSuperdome服务器或其他)仿真z/Architecture硬件架构并执行基于z/Architecture硬件架构开发的软件和指令。
参考图6B描述与仿真器代码22有关的进一步细节。存储在存储器14中的客户机指令30包括经开发以在不同于本机CPU 12的架构的架构中执行的软件指令(例如,与机器指令相关)。例如,客户机指令30可设计用以基于z/Architecture硬件架构在处理器上执行,但改为在本机CPU 12上仿真,本机CPU 12可为(例如)Intel Itanium II处理器。在一个示例中,仿真器代码22包括指令获取例程32,以从存储器14获得一个或多个客户机指令30,并且可选地为所获得的指令提供本地缓冲。它进一步包括指令转换例程34以确定已经获得的客户机指令的类型并将客户机指令转换成一个或多个对应的本机指令36。此转换包含(例如)识别将由客户机指令执行的函数及选择原生指令以执行所述函数。
进一步,仿真器代码22包括仿真控制例程40以使得本机指令被执行。模拟控制例程40可致使本机CPU 12执行模拟一个或多个先前获得的客户机指令的本机指令的例程,且在此执行结束时,将控制返回到指令获取例程以模拟下一客户机指令或一组客户机指令的获得。本机指令36的执行可包含将数据从存储器14加载到寄存器中;将数据从寄存器存储回存储器;或执行某种类型的算术或逻辑运算,如由转换例程确定的。
每一例程例如以软件实施,所述软件存储在存储器中且由本机中央处理单元12执行。在其他示例中,在固件、硬件、软件或其某一组合中实施例程或操作中的一者或一者以上。可使用本机CPU的寄存器20或通过使用存储器14中的位置来仿真经仿真处理器的寄存器。在实施例中,客户机指令30、本机指令36和仿真器代码22可以驻留在相同的存储器中或者可以分布在不同的存储器设备之间。
上文所描述的计算环境仅为可使用的计算环境的示例。可以使用其他环境,包括但不限于非分区环境、分区环境和/或仿真环境;实施例不限于任何一个环境。
每个计算环境能够被配置成包括本发明的一个或多个方面。例如,根据本发明的一个或多个方面,每个都被配置用于提供溢出处理。
一个或多个方面涉及云计算。
应当理解,尽管本公开包括关于云计算的详细描述,但是本文所引用的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其他类型的计算环境来实现。
云计算是一种服务交付模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便、按需的网络访问,所述可配置计算资源可以用最小的管理努力或与服务提供商的交互来快速配置和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特性如下:
按需自助服务:云消费者可按需自动地单方面供应计算能力,诸如服务器时间和网络存储,而无需与服务提供商进行人工交互。
广泛的网络接入:通过网络提供功能,并通过标准机制进行访问,所述标准机制促进由异构的瘦客户端或厚客户端平台(例如,移动电话、膝上型计算机和PDA)的使用。
资源池化:提供者的计算资源被汇集起来以使用多租户模型来服务于多个消费者,不同的物理和虚拟资源根据需要被动态分配和重新分配。存在位置独立性的意义,因为消费者通常对所提供资源的确切位置不具有控制权或知识,但可能能够指定更高抽象层级的位置(例如,国家、州或数据中心)。
快速弹性:可以快速且弹性地配置功能,在某些情况下自动地快速扩展,迅速释放以快速收缩。对于消费者而言,可用于配置的功能通常看起来是无限的,可以在任何时间以任何数量购买。
度量的服务:云系统通过利用与服务类型(例如,存储、处理、带宽和活动用户帐户)相适应的某种抽象级别的计量功能来自动控制和优化资源使用。可以监视、控制和报告资源使用情况,为所使用服务的提供者和使用者提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的功能是使用在云基础设施上运行的提供者的应用。这些应用可通过诸如web浏览器(例如,基于web的电子邮件)的瘦客户端接口从不同客户端设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储或甚至个体应用功能的底层云基础结构,可能的例外是有限的用户特定的应用配置设置。
平台即服务(PaaS):向消费者提供的功能是在云基础结构上部署消费者创建或获取的应用,所述应用是用提供者所支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础结构,但是具有对所部署的应用以及可能的应用托管环境配置的控制。
基础设施即服务(IaaS):向消费者提供的功能是提供消费者能够部署和运行可包括操作系统和应用的任意软件的处理、存储、网络和其他基本计算资源。消费者不管理或控制底层云基础结构,而是具有对操作系统、存储、所部署的应用的控制,以及对所选联网组件(例如,主机防火墙)的可能有限的控制。
部署模型如下:
私有云:云基础结构仅为组织运营。它可以由组织或第三方管理,并且可存在于场所内或场所外。
社区云:云基础结构由多个组织共享,并支持具有共同关注点(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可存在于场所内或场所外。
公共云:云基础结构可供公众或大型行业团体使用,并由销售云服务的组织拥有。
混合云:云基础结构是由两个或更多个云(私有、社区或公共的)组成的,这些云仍然是唯一性实体,但通过标准化或专有技术来绑定在一起,这些技术实现数据和应用的可移植性(例如,用于云之间的负载平衡的云突发)。
云计算环境是面向服务的,着重于无状态性、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础架构。
现在参见图7,描绘说明性云计算环境50。如图所示,云计算环境50包括一个或多个云计算节点52,云消费者使用的本地计算设备(诸如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N)可与云计算节点52通信。节点52可以彼此通信。它们可以在一个或多个网络中,诸如在上文所述的私有云、社区云、公共云或混合云或其组合中,被物理地或虚拟地分组(未示出)。这允许云计算环境50提供基础结构、平台和/或软件作为服务,云消费者不需要为其在本地计算设备上维护资源。应当理解,图7中所示的计算设备54A-N的类型仅旨在是说明性的,并且计算节点52和云计算环境50可通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备进行通信。
现在参见图8,示出了由云计算环境50(图7)提供的一组功能抽象层。应预先理解,图8中所示的部件、层和功能旨在仅是说明性的,并且本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供以下虚拟实体的示例:虚拟服务器71;虚拟存储72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
在一个示例中,管理层80可提供下文所描述的功能。资源供应81提供用于执行云计算环境内的任务的计算资源和其他资源的动态获取。计量和定价82在云计算环境内利用资源时提供成本跟踪,并针对这些资源的消费进行计费或开票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及对数据和其他资源的保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)计划和履行85为根据SLA预期的云计算资源的未来要求提供云计算资源的预安排和采购。
工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负荷和功能的示例包括:地图和导航91;软件开发和生命周期管理92;虚拟教室教育交付93;数据分析处理94;事务处理95;以及安全接口控件(超级管理器)处理96。
本发明可以是任何可能的集成技术细节水平的系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质(或介质),所述计算机可读程序指令用于致使处理器执行本发明的各方面。
计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码设备(诸如穿孔卡片或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令并且转发这些计算机可读程序指令以便存储在对应的计算/处理设备内的计算机可读存储介质中。
用于执行本技术方案的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,集成电路的配置数据,或以一种或多种编程语言的任何组合编写的源代码或目标代码,包括面向对象的Smalltalk、C++等编程语言,以及过程式编程语言,例如“C”编程语言或类似的编程语言。计算机可读程序指令可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过使用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的各方面。
在此参照根据技术方案的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本技术方案的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储介质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的过程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中指定的功能和动作。
附图中的流程图和框图示出了根据本技术方案的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中所标注的功能可以不以图中所标注的次序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
除上述内容外,还可以由提供客户环境管理的服务提供商提供、提供、部署、管理、服务等一个或多个方面。例如,服务提供商可以创建、维护、支持计算机代码和/或为一个或多个客户执行一个或多个方面的计算机基础设施。作为回报,服务提供商可以根据订阅和/或费用协议从客户处获得付款,例如。另外,或者,服务提供商可以从向一个或多个第三方广告内容销售中获得付款。
在一个方面,可以部署应用程序来执行一个或多个实施例。作为一个示例,应用程序的部署包括提供可操作以执行一个或多个实施例的计算机基础设施。
作为另一个方面,可部署计算基础设施,包括将计算机可读代码集成到计算系统中,其中与计算系统组合的代码能够执行一个或多个实施例。
作为又一方面,可以提供一种用于集成计算基础设施的过程,该过程包括将计算机可读代码集成到计算机系统中。计算机系统包括计算机可读介质,其中计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。
尽管上文描述了各种实施例,但这些只是示例。例如,其他架构的计算环境可用于包括和使用一个或多个实施例。此外,可以使用不同的指令或操作。此外,可以指定不同类型的指示器。许多变化是可能的。
此外,其他类型的计算环境也可以受益和使用。例如,适合于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦合到存储器元件的至少两个处理器。存储器元件包括,例如,在实际执行程序代码期间使用的本地存储器、大容量存储器和高速缓存存储器,其提供至少一些程序代码的临时存储器,以便减少在执行期间必须从大容量存储器检索代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指针设备、DASD、磁带、CD、DVD、拇指驱动器和其他存储介质等)可以直接或通过插入式I/O控制器耦合到系统。网络适配器还可以耦合到系统,以使得数据处理系统能够通过介入的私有或公共网络耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是几种可用的网络适配器。在此使用的术语仅用于描述具体实施例的目的并且不旨在是限制性的。如在此使用的,单数形式“一个”、“一种”和“该”旨在也包括复数形式,除非上下文另外清楚地指示。将进一步理解的是,当在本说明书中使用术语“包括”和/或“包含”时,其指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。
以下权利要求中的所有装置或步骤加功能元件(如有的话)的相应结构、材料、动作和等效物旨在包括用于与具体权利要求的其他权利要求元件一起执行功能的任何结构、材料或动作。出于说明和描述的目的已经给出了对一个或多个实施例的描述,但是并不旨在是详尽的或限于所公开的形式。许多修改和变化对本领域的普通技术人员将是明显的。实施例的选择和描述方式是为了最好地解释各个方面和实际应用,使得本领域普通技术人员能够理解具有适合于所预期的特定用途的不同修改的不同实施例。

Claims (20)

1.一种用于促进计算环境内的安全处理的计算机系统,计算机系统包括:
存储器;
耦合到存储器的处理器,其中,计算机系统被配置用以执行一种方法,所述方法包括:
增量解密安全操作系统映像,包括针对安全操作系统映像的多个页中的一页:
接收所述页的页地址和在所述页的加密期间使用的微调值;
确定先前在对安全操作系统映像的所述多个页中的另一页进行解密期间尚未使用所述微调值;和
使用在加密所述页时使用的映像加密密钥和所述微调值来解密所述页地址处的内存页内容,以促进获得解密的安全操作系统映像;
验证安全操作系统映像的完整性;和
基于验证安全操作系统映像的完整性,开始执行解密的安全操作系统映像。
2.根据权利要求1所述的计算机系统,其中,增量解密和验证完整性由计算机系统的安全接口控件来执行,安全接口控件是计算机系统的可信实体,并且,所述页地址和所述微调值由安全接口控件从虚拟机监控程序接收。
3.根据前述权利要求中任一项所述的计算机系统,其中,所述多个页的页地址具有固定顺序,并且,增量解密安全操作系统映像包括确定所述页地址不同于安全操作系统映像的所述多个页中的先前解密的页的任何先前页地址。
4.根据前述权利要求中任一项所述的计算机系统,其中,增量解密安全操作系统映像进一步包括确定所述微调值不同于在安全操作系统映像的所述多个页中的先前解密的页的解密期间使用的先前微调值。
5.根据前述权利要求中任一项所述的计算机系统,其中,验证完整性包括部分地采用使用所述多个页的内存页内容获得的累积内容哈希以及使用所述多个页的页地址获得的累积地址哈希。
6.根据权利要求5所述的计算机系统,其中,验证安全操作系统映像的完整性包括:将累积内容哈希与由安全接口控件接收的完整性内容哈希进行比较,以及将累积地址哈希与由安全接口控件接收的完整性地址哈希进行比较。
7.根据权利要求6所述的计算机系统,进一步包括:由安全接口控件从接收自虚拟机监控程序的元数据中提取映像加密密钥以及完整性内容哈希和完整性地址哈希。
8.根据前述权利要求中任一项所述的计算机系统,其中,安全接口控件包括计算机系统的一个或多个元件,该一个或多个元件是选自由硬件元件和固件元件组成的组,并且,安全操作系统映像作为计算环境内的安全客户机操作系统来运行。
9.根据前述权利要求中任一项所述的计算机系统,其中,将一个私钥-公钥对与计算机系统相关联,私钥仅对安全接口控件是已知的,对计算机系统上运行的软件则是不可访问的,并且其中,公钥由安全操作系统映像的所有者用于生成密钥协定数据,以便与安全接口控件安全地传送用于对安全操作系统映像进行加密的映像加密密钥,并且将密钥协定数据存储在元数据结构中。
10.根据权利要求9所述的计算机系统,进一步包括:由安全接口控件随来自虚拟机监控程序的调用一起接收元数据结构,元数据结构进一步包括在验证安全操作系统映像的完整性时使用的完整性哈希值。
11.一种计算机程序产品,包括:
计算机可读存储介质,可由处理电路读取且存储用于执行一种方法的指令,所述方法包括:
增量解密安全操作系统映像,包括针对安全操作系统映像的多个页中的一页:
接收所述页的页地址和在所述页的加密期间使用的微调值;
确定先前在对安全操作系统映像的所述多个页中的另一页进行解密期间尚未使用所述微调值;和
使用在加密所述页时使用的映像加密密钥和所述微调值来解密所述页地址处的内存页内容,以促进获得解密的安全操作系统映像;
验证安全操作系统映像的完整性;和
基于验证安全操作系统映像的完整性,开始执行解密的安全操作系统映像。
12.根据权利要求11所述的计算机程序产品,其中,所述多个页的页地址具有固定顺序,并且,增量解密安全操作系统映像包括确定所述页地址不同于安全操作系统映像的所述多个页中的先前解密的页的任何先前页地址。
13.根据权利要求11至12中任一项所述的计算机程序产品,其中,增量解密安全操作系统映像进一步包括:确定所述微调值不同于在安全操作系统映像的所述多个页中的先前解密的页的解密期间使用的先前微调值。
14.根据权利要求12至13中任一项所述的计算机程序产品,其中,验证完整性包括部分地采用使用所述多个页的内存页内容获得的累积内容哈希以及使用所述多个页的页地址获得的累积地址哈希。
15.根据权利要求14所述的计算机程序产品,其中,验证安全操作系统映像的完整性包括将累积内容哈希与由安全接口控件接收的完整性内容哈希进行比较。
16.根据权利要求14至15中任一项所述的计算机程序产品,其中,验证安全操作系统映像的完整性进一步包括将累积地址哈希与由安全接口控件接收的完整性地址哈希进行比较。
17.根据权利要求16所述的计算机程序产品,进一步包括从接收自虚拟机监控程序的元数据中提取映像加密密钥以及完整性内容哈希和完整性地址哈希。
18.一种计算机实现的方法,包括:
增量解密安全操作系统映像,包括针对安全操作系统映像的多个页中的一页:
接收所述页的页地址和在所述页的加密期间使用的微调值;
确定先前在对安全操作系统映像的所述多个页中的另一页进行解密期间尚未使用所述微调值;和
使用在加密所述页时使用的映像加密密钥和所述微调值来解密所述页地址处的内存页内容,以促进获得解密的安全操作系统映像;
验证安全操作系统映像的完整性;和
基于验证安全操作系统映像的完整性,开始执行解密的安全操作系统映像。
19.根据权利要求18所述的计算机实施的方法,其中,增量解密和验证完整性由计算机系统的安全接口控件来执行,安全接口控件是计算机系统的可信实体,并且,所述页地址和所述微调值由安全接口控件从虚拟机监控程序接收。
20.根据权利要求18至19中任一项所述的计算机实现的方法,所述多个页的页地址具有固定顺序,并且,增量解密安全操作系统映像包括确定所述页地址不同于安全操作系统映像的所述多个页中的先前解密的页的任何先前页地址;并且,增量解密安全操作系统映像进一步包括确定所述微调值不同于在安全操作系统映像的所述多个页中的先前解密的页的解密期间使用的先前微调值。
CN202080019498.XA 2019-03-08 2020-02-17 安全操作系统映像的增量解密和完整性验证 Pending CN113544679A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/296,334 2019-03-08
US16/296,334 US11354418B2 (en) 2019-03-08 2019-03-08 Incremental decryption and integrity verification of a secure operating system image
PCT/EP2020/054101 WO2020182420A1 (en) 2019-03-08 2020-02-17 Incremental decryption and integrity verification of a secure operating system image

Publications (1)

Publication Number Publication Date
CN113544679A true CN113544679A (zh) 2021-10-22

Family

ID=69593703

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080019498.XA Pending CN113544679A (zh) 2019-03-08 2020-02-17 安全操作系统映像的增量解密和完整性验证

Country Status (17)

Country Link
US (1) US11354418B2 (zh)
EP (1) EP3935545B1 (zh)
JP (1) JP7388802B2 (zh)
KR (1) KR102551935B1 (zh)
CN (1) CN113544679A (zh)
AU (1) AU2020236629B2 (zh)
BR (1) BR112021017438A2 (zh)
CA (1) CA3132735A1 (zh)
ES (1) ES2969160T3 (zh)
HU (1) HUE065398T2 (zh)
IL (1) IL285161B2 (zh)
MX (1) MX2021010585A (zh)
PL (1) PL3935545T3 (zh)
SG (1) SG11202105427YA (zh)
TW (1) TWI737172B (zh)
WO (1) WO2020182420A1 (zh)
ZA (1) ZA202106315B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116956364A (zh) * 2023-09-21 2023-10-27 中航金网(北京)电子商务有限公司 虚拟化产品完整性校验方法、装置、系统及电子设备

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12008087B2 (en) * 2020-10-26 2024-06-11 Apple Inc. Secure reduced power mode
CN112989440B (zh) * 2021-04-21 2021-09-14 北京芯愿景软件技术股份有限公司 芯片、处理器驱动方法及电子设备
CN114547630B (zh) * 2022-04-25 2022-08-09 宁波均联智行科技股份有限公司 一种基于车机多操作系统的验证方法及装置
US20240249000A1 (en) * 2023-01-25 2024-07-25 Qualcomm Incorporated Encryption with enhanced tweak generation

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4245302A (en) 1978-10-10 1981-01-13 Magnuson Computer Systems, Inc. Computer and method for executing target instructions
US7162635B2 (en) 1995-01-17 2007-01-09 Eoriginal, Inc. System and method for electronic transmission, storage, and retrieval of authenticated electronic original documents
US6138236A (en) 1996-07-01 2000-10-24 Sun Microsystems, Inc. Method and apparatus for firmware authentication
JP2007508623A (ja) 2003-10-08 2007-04-05 ユニシス コーポレーション 複数のノードにわたってシステムリソースを割り当てて管理する仮想データセンタ
US7984103B2 (en) 2008-11-25 2011-07-19 International Business Machines Corporation System and method for managing data transfers between information protocols
US9086913B2 (en) 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
US8387114B2 (en) 2009-01-02 2013-02-26 International Business Machines Corporation Secure workload partitioning in a server environment
JP2011048661A (ja) 2009-08-27 2011-03-10 Nomura Research Institute Ltd 仮想サーバ暗号化システム
US8639783B1 (en) 2009-08-28 2014-01-28 Cisco Technology, Inc. Policy based configuration of interfaces in a virtual machine environment
US8856504B2 (en) 2010-06-07 2014-10-07 Cisco Technology, Inc. Secure virtual machine bootstrap in untrusted cloud infrastructures
US20120179904A1 (en) 2011-01-11 2012-07-12 Safenet, Inc. Remote Pre-Boot Authentication
US9092644B2 (en) * 2011-12-28 2015-07-28 Intel Corporation Method and system for protecting memory information in a platform
US9594927B2 (en) 2014-09-10 2017-03-14 Intel Corporation Providing a trusted execution environment using a processor
GB2532415A (en) 2014-11-11 2016-05-25 Ibm Processing a guest event in a hypervisor-controlled system
US10599458B2 (en) 2015-01-23 2020-03-24 Unisys Corporation Fabric computing system having an embedded software defined network
US10303899B2 (en) * 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control
US12063309B2 (en) * 2018-04-26 2024-08-13 The Assay Depot, Inc. Decentralized data verification
US11003537B2 (en) * 2018-05-29 2021-05-11 Micron Technology, Inc. Determining validity of data read from memory by a controller
US11520611B2 (en) * 2018-08-20 2022-12-06 Intel Corporation Secure public cloud using extended paging and memory integrity

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116956364A (zh) * 2023-09-21 2023-10-27 中航金网(北京)电子商务有限公司 虚拟化产品完整性校验方法、装置、系统及电子设备
CN116956364B (zh) * 2023-09-21 2024-02-09 中航国际金网(北京)科技有限公司 虚拟化产品完整性校验方法、装置、系统及电子设备

Also Published As

Publication number Publication date
US20200285753A1 (en) 2020-09-10
KR20210121087A (ko) 2021-10-07
AU2020236629B2 (en) 2023-01-19
BR112021017438A2 (pt) 2021-11-16
HUE065398T2 (hu) 2024-05-28
PL3935545T3 (pl) 2024-03-25
IL285161A (en) 2021-09-30
JP7388802B2 (ja) 2023-11-29
SG11202105427YA (en) 2021-06-29
IL285161B2 (en) 2024-03-01
US11354418B2 (en) 2022-06-07
ES2969160T3 (es) 2024-05-16
EP3935545C0 (en) 2023-12-20
ZA202106315B (en) 2023-03-29
TW202101263A (zh) 2021-01-01
IL285161B1 (en) 2023-11-01
MX2021010585A (es) 2021-10-13
KR102551935B1 (ko) 2023-07-06
JP2022522627A (ja) 2022-04-20
AU2020236629A1 (en) 2021-06-10
EP3935545A1 (en) 2022-01-12
EP3935545B1 (en) 2023-12-20
WO2020182420A1 (en) 2020-09-17
CA3132735A1 (en) 2020-09-17
TWI737172B (zh) 2021-08-21

Similar Documents

Publication Publication Date Title
EP3935545B1 (en) Incremental decryption and integrity verification of a secure operating system image
CN113544675A (zh) 安全执行客户机所有者环境控制符
AU2020426828B2 (en) Reserving one or more security modules for secure guest
CN117940900A (zh) 存储安全虚拟机的诊断状态
US11829495B2 (en) Confidential data provided to a secure guest via metadata
US20230039894A1 (en) Deferred reclaiming of secure guest resources
US20230044731A1 (en) Attestation of a secure guest
EP3925158B1 (en) Perform cryptographic computation scalar multiply instruction
US12130953B2 (en) Secure guest image and metadata update
US20230040577A1 (en) Secure guest image and metadata update

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: 40057636

Country of ref document: HK