DE112014000965T5 - Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System - Google Patents

Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System Download PDF

Info

Publication number
DE112014000965T5
DE112014000965T5 DE112014000965.2T DE112014000965T DE112014000965T5 DE 112014000965 T5 DE112014000965 T5 DE 112014000965T5 DE 112014000965 T DE112014000965 T DE 112014000965T DE 112014000965 T5 DE112014000965 T5 DE 112014000965T5
Authority
DE
Germany
Prior art keywords
guest
memory
hypervisor
event
firmware
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
DE112014000965.2T
Other languages
English (en)
Inventor
Utz Bacher
Reinhard Buendgen
Einar Lueck
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 DE112014000965T5 publication Critical patent/DE112014000965T5/de
Pending legal-status Critical Current

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
    • 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
    • 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/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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

Abstract

Die Erfindung betrifft ein Verfahren zum Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System (10), aufweisend die Schritte: (i) durch das Gastereignis das Auslösen eines ersten, für das Gastereignis speziellen Firmwaredienstes in einer Firmware (70), wobei das Gastereignis einem Gast (20) und einem Gastzustand (52) und einem Gastspeicher (22) zugehörig ist, der mit einem Gastschlüssel (24) verschlüsselt ist; (ii) durch die Firmware (70) das Verarbeiten von Informationen, die zu dem Gastereignis gehören, die Daten des Gastzustands (52) und des Gastspeichers (22) aufweisen, und das Übergeben nur einer Teilmenge der Informationen des Gastzustands (52) und des Gastspeichers (22) in verschlüsselter Form an einen Hypervisor (30), wobei die Teilmenge der Informationen so ausgewählt ist, dass sie für den Hypervisor (30) ausreicht, um das Gastereignis zu verarbeiten; (iii) durch die Firmware (70) das Zurückhalten eines Teils der Informationen des Gastzustands (52) und des Gastspeichers (22), der nicht an den Hypervisor (30) gesendet wird; (iv) durch den Hypervisor (30) das Verarbeiten des Gastereignisses aufgrund der empfangenen Teilmenge der Informationen des Gastzustands (52) und des Gastspeichers (22) und das Senden eines Prozessergebnisses an die Firmware (70), das einen zweiten, für das Gastereignis speziellen Firmwaredienst auslöst; (v) durch die Firmware (70) das Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen des Gastzustands (52) und des Gastspeichers (22), der nicht an den Hypervisor (30) gesendet wurde, wodurch eine Zustands- und/oder Speicherveränderung erzeugt wird; (vi) durch die Firmware (70) das Durchführen der zu dem Gastereignis und dem Gastspeicher (22) gehörenden Zustands- und/oder Speicherveränderung in verschlüsselter Form.

Description

  • Die vorliegende Erfindung betrifft allgemein Datenverarbeitungssysteme und insbesondere ein Verfahren und ein System zum Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System.
  • HINTERGRUND
  • Die Kundenakzeptanz gegenüber öffentlichen Clouds beschränkt sich auf Daten, die für ein Unternehmen nicht von entscheidender Bedeutung sind. Sehr häufig sind die Daten über die Hauptgeschäftstätigkeit für einen Kunden ein wertvolles Wirtschaftsgut, und die Geheimhaltung der Daten ist für den Unternehmenserfolg von entscheidender Bedeutung. Solange Kunden den Cloud-Umgebungen nicht vertrauen, bleibt die Cloud-Akzeptanz bei derartigen geschäftlich sensiblen Umgebungen minimal. Zu den Hauptbedenken von Kunden gehören das fehlende Vertrauen in den Cloud-Anbieter und die Sicherheit der Cloud.
  • Das Vertrauen in den Cloud-Anbieter ist von entscheidender Bedeutung, da ein Administrator des Providers die Möglichkeit des vollständigen Einblicks in den Arbeitsumfang und in die Daten des Kunden hat. Dieser mögliche Einbruch zu Spionagezwecken ist der Grund für die Zurückhaltung vieler Kunden.
  • Das Vertrauen in die Sicherheit der Cloud betrifft die Bedrohung durch einen Einbruch in den Hypervisor, d. h., wenn ein Angreifer Zugriff auf den Hypervisor erhält, sind der Arbeitsumfang und die Daten des Kunden erneut gefährdet.
  • Gegenwärtig sind Ansätze zur Gewährleistung von Geheimhaltung und Datenschutz auf den Eingang/Ausgang (E/A) beschränkt: eine Netzwerkverschlüsselung wie zum Beispiel Secure Sockets Layer (SSL) kann verwendet werden, um Socket-Verbindungen zu verschlüsseln, und Hilfsprogramme zur Plattenverschlüsselung wie zum Beispiel dm-crypt in LINUX können verwendet werden, um Daten auf einer Platteneinheit zu verschlüsseln.
  • Ein Trusted Platform Module (TPM) wurde entwickelt, das dafür sorgt, dass der Bootablauf zu dem Zeitpunkt gültig ist, an dem der Kunde seinen Arbeitsumfang abarbeitet, aber es wurde bisher noch nicht in einer Cloud-Umgebung eingerichtet. Außerdem gewährleisten TPMs nicht den Datenschutz, sondern bestenfalls die Integrität der Konfiguration.
  • Alle diese Technologien, selbst wenn sie genutzt werden, lösen nicht das Problem, dass ein Hypervisor stets Einblick in seine Gäste hat, wobei Gäste allgemein virtuelle Maschinen auf einem hypervisorgesteuerten System sein können, und Speicherinhalte mit möglicherweise sensiblen Daten des Abbilds lesen kann, das in dem Gast ausgeführt wird. Oben erwähnten Bedenken können durch diese Technologien nicht ausgeräumt werden.
  • US 2011/0302400 A1 beschreibt ein Verfahren, das allgemein das Empfangen eines Abbilds einer virtuellen Maschine (VM-Abbild) durch einen Vertrauensanker auf einer zentralen Verarbeitungseinheit (Central Processing Unit, CPU) aufweist, die eine Vielzahl von Verarbeitungskernen aufweist. Nach dem Empfang wird das VM-Abbild mithilfe eines VM-Abbild-Verschlüsselungsschlüssels verschlüsselt. Das Verfahren weist außerdem das Erhalten des VM-Abbild-Verschlüsselungsschlüssels und das Konfigurieren eines ersten Verschlüsselungs-/Entschlüsselungsblocks mit dem VM-Abbild-Verschlüsselungsschlüssel auf. Das Verfahren weist auch das Erzeugen eines Speichersitzungsschlüssels und das Konfigurieren eines zweiten Verschlüsselungs-/Entschlüsselungsblocks mit dem Speichersitzungsschlüssel auf. Das Verfahren weist auch das Abrufen einer oder mehrerer Seiten des VM-Abbilds in einen Speicher auf, der für eine Vielzahl von Verarbeitungskernen zugriffsfähig ist. Jede abgerufene Seite wird durch den ersten Verschlüsselungs-/Entschlüsselungsblock unter Verwendung des VM-Abbild-Verschlüsselungsschlüssels entschlüsselt und anschließend durch den zweiten Verschlüsselungs-/Entschlüsselungsblock unter Verwendung des Speichersitzungsschlüssels verschlüsselt.
  • KURZDARSTELLUNG
  • Eine Zielsetzung der Erfindung besteht darin, ein Verfahren zum sicheren Verarbeiten von Gastdaten in einer nicht vertrauenswürdigen Cloud-Umgebung bereitzustellen.
  • Eine weitere Zielsetzung besteht darin, ein System zum sicheren Verarbeiten von Gastdaten in einer nicht vertrauenswürdigen Cloud-Umgebung bereitzustellen.
  • Diese Zielsetzungen werden durch die Merkmale der Hauptansprüche erreicht. Die anderen Ansprüche, die Zeichnungen und die Beschreibung offenbaren vorteilhafte Ausführungsformen der Erfindung.
  • Gemäß einem ersten Aspekt der Erfindung wird ein Verfahren zum Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System vorgeschlagen, das die Schritte aufweist: (i) durch das Gastereignis das Auslösen eines ersten, für das Gastereignis speziellen Firmwaredienstes in einer Firmware, wobei das Gastereignis einem Gast und einem Gastzustand und einem Gastspeicher zugehörig ist, der mit einem Gastschlüssel verschlüsselt ist; (ii) durch die Firmware das Verarbeiten von Informationen, die zu dem Gastereignis gehören, die Informationen des Gastzustands und des Gastspeichers aufweisen, und das Übergeben nur einer Teilmenge der Informationen des Gastzustands und des Gastspeichers in verschlüsselter Form an einen Hypervisor, wobei die Teilmenge der Informationen so ausgewählt ist, dass sie für den Hypervisor ausreicht, um das Gastereignis zu verarbeiten; (iii) durch die Firmware das Zurückhalten eines Teils der Informationen des Gastzustands und des Gastspeichers, der nicht an den Hypervisor gesendet wird; (iv) durch den Hypervisor das Verarbeiten des Gastereignisses aufgrund der empfangenen Teilmenge der Informationen des Gastzustands und des Gastspeichers und das Senden eines Prozessergebnisses an die Firmware, das einen zweiten, für das Gastereignis speziellen Firmwaredienst auslöst; (v) durch die Firmware das Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen des Gastzustands und des Gastspeichers, der nicht an den Hypervisor gesendet wurde, wodurch eine Zustands- und/oder Speicherveränderung erzeugt wird; (vi) durch die Firmware das Durchführen der zu dem Gastereignis und dem Gastspeicher gehörenden Zustands- und/oder Speicherveränderung in verschlüsselter Form.
  • Der erste Firmwaredienst kann zweckmäßigerweise die Schritte (ii) und (iii) aufweisen, d. h. (ii) durch die Firmware das Verarbeiten von Informationen, die zu dem Gastereignis gehören, die Informationen des Gastzustands und des Gastspeichers aufweisen, und das Übergeben nur einer Teilmenge der Informationen des Gastzustands und des Gastspeichers in verschlüsselter Form an einen Hypervisor, wobei die Teilmenge von Informationen so ausgewählt ist, dass sie für den Hypervisor ausreicht, um das Gastereignis zu verarbeiten; und (iii) durch die Firmware das Zurückhalten eines Teils der Informationen des Gastzustands und des Gastspeichers, der nicht an den Hypervisor gesendet wurde.
  • Der zweite Firmwaredienst kann zweckmäßigerweise die Schritte (v) und (vi) aufweisen, d. h. (v) durch die Firmware das Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen des Gastzustands und des Gastspeichers, der nicht an den Hypervisor gesendet wurde, wodurch eine Zustands- und/oder Speicherveränderung erzeugt wird; und (vi) durch die Firmware das Durchführen der zu dem Gastereignis und dem Gastspeicher gehörenden Zustands- und/oder Speicherveränderung in verschlüsselter Form.
  • Insbesondere wird ein Verfahren zum Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System behandelt, das den Vorteil des Schutzes der Gastgeheimhaltung zeigt. Deshalb beschreibt das Verfahren gemäß der Erfindung allgemein das sichere Verwalten virtueller Maschinen, während gleichzeitig der Datenschutz der Inhalte der virtuellen Maschine gegenüber dem Hypervisor aufrechterhalten wird, der eine oder mehrere VM aufweist, von denen jede Ressourcen einschließlich verschlüsselter Speicher- und Kontextdaten aufweist, einen Hypervisor, der VM-Ressourcen und VN-Zustände verwaltet, und eine CPU-unterstützte Virtualisierung, die einen eingeschränkten Zugriff des Hypervisors auf den Zustand/Speicher/Kontext der VM durch Firmwaredienste durchsetzt.
  • Insbesondere beschreibt das Verfahren gemäß der Erfindung das Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System, wobei Gastdaten mit einem Gastschlüssel verschlüsselt sind, der für den Hypervisor nicht zugriffsfähig ist, und wobei CPUs und Firmware als vertrauenswürdig gelten und beim Ausführen im Gastkontext Zugriff auf den Gastschlüssel haben. Der Begriff „Firmware” bezeichnet in diesem Kontext insbesondere Systemsoftware, die in einer auf Hardware beruhenden Umgebung realisiert ist.
  • Wie erwähnt beschreibt das Verfahren gemäß der Erfindung das Ausführen virtueller Maschinen aus einem Speicher, der für eine virtuelle Maschine verschlüsselt ist. Dennoch verhindert das Verfahren, dass der Hypervisor ständig Einblick in seine Gäste, d. h. virtuelle Maschinen/Abbilder, haben und Speicherinhalte mit möglicherweise sensiblen Daten lesen kann. Der Vorteil ist, dass das beschriebene Verfahren keine Prozesse wie zum Beispiel Authentifizierung eines Vertrauensankers mit einem (Kunden-)Schlüsseldienst oder erneute Verschlüsselung eines VM-Abbilds (unter Verwendung eines zweiten Schlüssels) nutzt, wenn das verschlüsselte Abbild von der Platte in den Speicher geladen wird. Es bedarf nicht der Verwendung einer einfachen Counter-Mode-Verschlüsselung (CTR-Verschlüsselung), die unsicher ist, sondern schlägt stattdessen die Verwendung einer Variante der CTR-Verschlüsselung vor, zum Beispiel einen Tweaked-Codebook-Modus auf XEX-Basis (XEX = XOR-Encrypt-XOR) mit sicherer Ciphertext-Stealing-Verschlüsselung (XTR-Verschlüsselung). Das Verfahren kann Interrupts oder Hypervisor-Abfangvorgänge bewältigen. Es kann unverschlüsselte Cache-Inhalte aus einem unberechtigten Zugriff sichern und mit E/As umgehen. Das beschriebene Verfahren benötigt kein Beglaubigungsmodul (z. B. ein TPM) auf der CPU.
  • Vorteilhafterweise kann das Verfahren insbesondere zum Erweitern einer virtualisierten Umgebung von CPU-Architekturen ferner die Schritte aufweisen (i) Entschlüsseln oder Verschlüsseln des Gastspeichers durch eine CPU, wenn die CPU im Gastkontext ausgeführt wird; (ii) Zulassen, dass der Gast extern über einen unverschlüsselten Speicherbereich Daten austauschen kann; (iii) Auslagern verschlüsselter Seiten des Gastspeichers durch den Hypervisor. Ein Virtualisierungsmechanismus von CPU-Architekturen kann erweitert werden, sodass ein Speicher von Gästen stets verschlüsselt ist. Dies kann während der Verarbeitung durch die CPU geschehen und verhindert, dass der Hypervisor den Speicher liest oder Inhalte in Klartext aufzeichnet. Zur effizienten Verarbeitung kann der Cache unverschlüsselt sein. Wenn die Daten eines Gastes jedoch die CPU verlassen, kann der Inhalt verschlüsselt sein. Die Entschlüsselung des Gastspeichers während der Ausführung des Gastes kann in einer für die CPU transparenten Form stattfinden, aber nur, während die CPU den Gastkontext ausführt.
  • Ferner kann das Verfahren insbesondere zur sicheren Einrichtung und Ausführung einer virtuellen Maschine vorteilhafterweise die Schritte aufweisen (i) Versehen des Gastes mit einem Gastschlüssel, der mit dem zu einem privaten Schlüssel der CPU gehörenden öffentlichen Schlüssel verschlüsselt ist, zur Übertragung in den Schlüsselspeicher der CPU; (ii) Versehen der CPU mit dem privaten Schlüssel, der in der CPU gespeichert ist und zur Entschlüsselung des verschlüsselten Gastschlüssels verwendet wird; (iii) wobei der Gastschlüssel verwendet wird, um den Gastspeicher zu verschlüsseln und entschlüsseln, während durch die CPU Gastcode oder Firmwarecode im Gastkontext ausgeführt wird. Auf diese Weise kann eine sichere Einrichtung und Ausführung einer virtuellen Maschine in einem hypervisorgesteuerten System ermöglicht werden.
  • Jede CPU kann ein Schlüsselpaar erhalten; ihr privater Schlüssel kann nur in einer CPU gespeichert sein und zur Entschlüsselung von Gastschlüsseln verwendet werden. Der öffentliche CPU-Schlüssel kann verwendet werden, um den privaten Gastschlüssel zu verschlüsseln (und in die CPU zu übertragen), in der der Gastschlüssel sicher gespeichert und verwendet werden kann.
  • Der Gastschlüssel kann ebenfalls einen Schlüssel erzeugen. Der Gastschlüssel kann mit dem öffentlichen CPU-Schlüssel verschlüsselt werden, bevor er zur CPU übertragen wird. Die CPU kann diesen Gastschlüssel verwenden, um den Speicher des Gastes zu verschlüsseln (aber nur, wenn der Gast im Kontext der CPU-Virtualisierungsfunktion ausgeführt wird). Der Gastschlüssel kann außerdem verwendet werden, um Abbilder aus dem Gast in einer Cloud-Umgebung einzurichten.
  • Zweckmäßigerweise kann das Verfahren gemäß der Erfindung insbesondere zur Erzeugung und Einrichtung von Boot-Abbildern ferner die Schritte aufweisen (i) Erzeugen eines Boot-Abbilds durch einen Client oder Kunden; (ii) Verschlüsselung des Boot-Abbilds mit dem Gastschlüssel; (iii) Übertragen des verschlüsselten Boot-Abbilds auf eine Boot-Platte; (iv) Laden des verschlüsselten Boot-Abbilds eines Gastes durch den Hypervisor in den Gastspeicher; (v) Starten einer Ausführung eines Gastes als virtuelle Maschine auf der CPU-Ebene, wobei der Gast durch einen Bereich eines verschlüsselten Speichers, einen Bereich eines unverschlüsselten Speichers und einen verschlüsselten Gastschlüssel definiert ist. Der Gastschlüssel kann nur dem Client bzw. dem Gast und der CPU im Gastkontext bekannt sein, und zum Transport zur CPU kann der Gastschlüssel mit dem öffentlichen Schlüssel verschlüsselt sein, der zu dem privaten Schlüssel der CPU gehört. Er muss einem Cloud-Betreiber oder dem Hypervisor nicht bekannt sein. Der Gastschlüssel kann für ein oder mehrere Systeme oder CPUs verschlüsselt sein.
  • Vorteilhafterweise kann das Verfahren insbesondere für einen Boot-Prozess des Boot-Abbilds ferner die Schritte aufweisen (i) Entschlüsseln eines Ausführungs-Threads in Klartext in der virtuellen Maschine, die auf dem Boot-Abbild ausgeführt wird, wenn sich die CPU nicht im Gastkontext befindet; (ii) Entschlüsseln des Gastspeichers, während sich die CPU im Gastkontext und im Gastzustand befindet, die beide vor dem Zugriff durch den Hypervisor oder durch andere Gäste geschützt sind. Der Hypervisor kann Inhalte des Boot-Abbilds von der Boot-Platte ohne Verlagerung in den Gastspeicher laden, wobei der Inhalt der Boot-Platte einen Kernel, Parameter und eine Ausgangspartition im Arbeitsspeicher aufweist. Das Laden des Boot-Abbilds kann auch das Anbinden eines auf herkömmliche Weise (z. B. mithilfe von dm-crypt, einem häufig verwendeten LINUX-Hilfsprogramm zur Verschlüsselung) verschlüsselten Stammdateisystems aufweisen. Ferner kann der Inhalt der Boot-Platte eine Kernelausführungsumgebung (Kexec-Umgebung) (Kexec = kernel execution) aufweisen, die einen neuen Kernel von einer herkömmlich verschlüsselten Ziel-Boot-Einheit lädt.
  • Zweckmäßigerweise kann das Verfahren insbesondere zur Ausführung einer virtuellen Maschine die Schritte aufweisen (i) Erweitern einer Virtualisierungsfunktion der CPU, um den Gastspeicher zu verschlüsseln, wenn im Gastkontext auf den verschlüsselten Bereich des Gastspeichers geschrieben wird; (ii) Entschlüsseln des Gastspeichers, wenn im Gastkontext aus dem verschlüsselten Bereich eines Gastspeichers gelesen wird; (iii) den verschlüsselten Bereich des Gastspeichers und der Gastregister für den Hypervisor nur in verschlüsselter Form zugriffsfähig halten. Die CPU-Architektur kann erweitert werden, um ein klar definiertes Mittel für den Zugriff auf einen Gastzustand bereitzustellen, wobei Zugriffsverfahren dem Hypervisor nur die zur Durchführung seiner Aufgaben (z. B. Behandlung von Unterbrechungen (Traps)) notwendigen Informationen bereitstellt. Der Gastspeicher und die Registerdatei sind jedoch unter Umständen außerhalb der Zugriffsverfahren nicht zugriffsfähig. Die Geheimhaltung des Gastes kann geschützt werden, da der Hypervisor einen Gastzustand oder Gastdaten nicht vollständig lesen kann, Die Registerdatei ist unter Umständen durch den Hypervisor nicht direkt zugriffsfähig, sondern kann an einem anderen Ort gespeichert sein und mittels eines Hypervisor-Dienstes wiederhergestellt werden. Andere Kontexte als der Gast selbst sehen unter Umständen nur verschlüsselte Speicherinhalte, so wie der Hypervisor unter Umständen den unverschlüsselten Gastspeicher nicht sehen kann. Ein Bereich des Gastspeichers kann unverschlüsselt bleiben, um Daten mit dem Hypervisor oder E/A-Einheiten auszutauschen. Ein E/A-Arbeitsbereich kann außerhalb des verschlüsselten Speicherbereiches liegen.
  • Bei einer vorteilhaften Ausführungsform, insbesondere für eine Interaktion zwischen der virtuellen Maschine und dem Hypervisor, kann das Verfahren ferner die Schritte aufweisen (i) den verschlüsselten Bereich des Gastspeichers oder der Register, der bzw. die zu dem Gastereignis gehören, für den Hypervisor nicht in entschlüsselter Form zugriffsfähig halten; (ii) Erweitern der Virtualisierungsfunktion der CPU durch Zugriffsverfahren auf spezielle Gastdaten, die zu dem Gastereignis gehören. Dieser Schritt kann für eine Operation des Hypervisors vorteilhaft sein, enthüllt aber unter Umständen keine Daten oder Code des Gastes (außer dem Grund und relevanten Parametern bei Anweisungen, die zu Unterbrechungen führen) und ermöglicht unter Umständen die Fortsetzung des Gastereignisses. Einige Unterbrechungen sind unter Umständen vollständig deaktiviert, da sie möglicherweise nur sinnvoll sind (z. B. bei Einzelschrittausführung), wenn ein Hypervisor vollen Zugriff auf einen Gast hat.
  • Vorteilhafterweise kann das Verfahren ferner insbesondere für einen E/A-Prozess eines Gastes die Schritte aufweisen (i) Definieren eines unverschlüsselten Speicherbereiches für E/A-Puffer und E/A-Steuerstrukturen des Gastes außerhalb des verschlüsselten Bereiches des Gastspeichers; (ii) Starten des E/A-Prozesses durch den Gast unter Verwendung dieses unverschlüsselten Bereiches des Gastspeichers; (iii) Erzeugen eines Gastereignisses durch die Virtualisierungsfunktion der CPU; (iv) Lesen des Grundes für das Gastereignis und Durchführen des E/A-Prozesses durch den Hypervisor. Durch Anlegen der E/A-Puffer außerhalb des verschlüsselten Gastspeichers haben der Hypervisor und E/A-Einheiten unter Umständen Zugriff auf E/A-Steuerstrukturen und Daten.
  • Vorteilhafterweise kann das Verfahren insbesondere für einen Seitenauslagerungsprozess durch den Hypervisor die Schritte aufweisen (i) Auslagern von Seiten des Gastspeichers durch den Hypervisor; (ii) nach dem versuchten Zugriff auf eine ausgelagerte Seite das Bereitstellen eines Seitenfehlers, der dem Hypervisor anzeigt, ob eine Seitenauslagerungsoperation des Hypervisors diesen Seitenfehler verursacht hat; (iii) Veranlassen des Hypervisors, einen Prozess zur Seiteneinlagerung in den Gastspeicher durchzuführen. Der Hypervisor kann die Seiten auf einer eigenen Auslagerungseinheit speichern, auf der der Seiteninhalt noch verschlüsselt werden kann. Die Virtualisierungsfunktion der CPU kann eine Unterbrechung ausführen, bei der der Hypervisor einen Grund für die Unterbrechung (z. B. „Seitenfehler”) lesen und eine Gastadresse lesen kann. Anschließend kann der Hypervisor die Seite zurück auf dieselbe Gastadresse legen, wodurch die Integrität von Gastdaten gewahrt wird, wenn Entschlüsselungsergebnisse als nicht verschiebbar beibehalten werden. Danach kann der Hypervisor den Gast unter Umständen neu starten.
  • Bei einer vorteilhaften Ausführungsform kann das Verfahren insbesondere zum Herstellen von Vertrauen in das beschriebene Verfahren das Prüfen einer Gastintegrität mithilfe eines Prüfprozesses aufweisen, der den Gastschlüssel kennt, wobei der Prüfprozess die Schritte aufweist (i) durch den Gast das Lesen eines Speicherinhalts in Klartext aus dem Gastspeicher und Übertragen eines willkürlichen Bereiches des Gastspeichers über einen sicheren Datenübertragungspfad zum Prüfprozess; (ii) Anfordern desselben Speicherbereiches des Gastspeichers aus dem Hypervisor und Übertragen des Bereiches zum Prüfprozess; (iii) Vergleichen des vom Gast erhaltenen Speicherinhalts mit dem Ergebnis des Entschlüsselns des vom Hypervisor erhaltenen Speicherinhalts; (iv) Bereitstellen eines Vergleichsergebnisses in Abhängigkeit vom Inhalt der zwei Speicherbereiche; (v) Zurückgeben des Ergebnisses des Prüfprozesses als positiv, wenn das Vergleichsergebnis null ist, andernfalls als negativ. Diese Verfahrensschritte können besonders vorteilhaft sein, da der Hypervisor keine Code oder Daten lesen/einschleusen kann, da dies nicht mit dem Schlüssel zur Entschlüsselung/Verschlüsselung des Gastspeichers bereitgestellt wird.
  • Gemäß einem weiteren vorteilhaften Aspekt der Erfindung wird ein Datenverarbeitungsprogramm zur Ausführung in einem Datenverarbeitungssystem vorgeschlagen, das eine Realisierungsform eines Anweisungssatzes zum Durchführen eines oben beschriebenen Verfahrens aufweist, wenn das Datenverarbeitungsprogramm auf einem Computer ausgeführt wird.
  • Ferner wird ein zweckdienliches Computerprogrammprodukt vorgeschlagen, das ein computernutzbares Medium aufweist, das ein computerlesbares Programm aufweist, wobei das computerlesbare Programm, wenn es auf einem Computer ausgeführt wird, den Computer veranlasst, ein Verfahren zum Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System durchzuführen, das die Schritte aufweist: (i) durch das Gastereignis das Auslösen eines ersten, für das Gastereignis speziellen Firmwaredienstes in einer Firmware, wobei das Gastereignis einem Gast und einem Gastzustand und einem Gastspeicher zugehörig ist, der mit einem Gastschlüssel verschlüsselt ist; (ii) durch die Firmware das Verarbeiten von Informationen, die zu dem Gastereignis gehören, die Informationen des Gastzustands und des Gastspeichers aufweisen, und das Übergeben nur einer Teilmenge der Informationen des Gastzustands und des Gastspeichers in verschlüsselter Form an einen Hypervisor, wobei die Teilmenge der Informationen so ausgewählt ist, dass sie für den Hypervisor ausreicht, um das Gastereignis zu verarbeiten; (iii) durch die Firmware das Zurückhalten eines Teils der Informationen des Gastzustands und des Gastspeichers, der nicht an den Hypervisor gesendet wird; (iv) durch den Hypervisor das Verarbeiten des Gastereignisses aufgrund der empfangenen Teilmenge der Informationen des Gastzustands und des Gastspeichers und das Senden eines Prozessergebnisses an die Firmware, das einen zweiten, für das Gastereignis speziellen Firmwaredienst auslöst; (v) durch die Firmware das Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen des Gastzustands und des Gastspeichers, der nicht an den Hypervisor gesendet wurde, wodurch eine Zustands- und/oder Speicherveränderung erzeugt wird; (vi) durch die Firmware das Durchführen der zu dem Gastereignis und dem Gastspeicher gehörenden Zustands- und/oder Speicherveränderung in verschlüsselter Form.
  • Dem Fachmann wird klar sein, dass Aspekte der vorliegenden Erfindung in Form eines Systems, Verfahrens oder Computerprogrammprodukts verkörpert sein können. Demzufolge können Aspekte der vorliegenden Erfindung die Form einer komplett in Hardware realisierten Ausführungsform, einer komplett in Software realisierten Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert, die hier allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden.
  • Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es können beliebige Kombinationen eines oder mehrerer computerlesbarer Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Zu computerlesbaren Speichermedien können beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, ein magnetisches, ein optisches, ein elektromagnetisches System bzw. ein Infrarot- oder ein Halbleitersystem bzw. eine derartige Vorrichtung oder Einheit oder eine beliebige geeignete Kombination des Vorstehenden gehören. Zu konkreteren Beispielen (unvollständige Liste) des computerlesbaren Speichermediums zählen unter anderem folgende: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes beliebige vergegenständlichte Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Ein computerlesbares Signalmedium kann unter anderem ein im Basisband oder als Teil einer Trägerwelle verbreitetes Datensignal mit darin verkörpertem computerlesbarem Programmcode aufweisen. Ein derartiges verbreitetes Signal kann eine beliebige Vielfalt von Formen annehmen, einschließlich und ohne darauf beschränkt zu sein, einer elektromagnetischen oder optischen Form oder einer beliebigen geeigneten Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm übertragen, ausbreiten oder transportieren kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes beliebigen geeigneten Mediums, einschließlich, ohne darauf beschränkt zu sein, drahtloser, drahtgebundener Medien, von Lichtwellenleitern, HF usw. oder unter Verwendung einer beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
  • Computerprogrammcode zum Ausführen von Operationen bei Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter in einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und in herkömmlichen prozeduralen Programmiersprachen wie „C” oder ähnlichen Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (LAN) oder über ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
  • Aspekte der vorliegenden Erfindung sind nachstehend unter Bezugnahme auf Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird klar sein, dass jeder Block der Flussdiagrammdarstellungen und/oder der Blockschemata und Kombinationen von Blöcken in den Blockschemata durch Computerprogrammanweisungen realisiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderen programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Realisieren der in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen schaffen.
  • Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis schaffen, das die Anweisungen aufweist, die die in einem Block bzw. in den Blöcken der Blockschemata angegebene Funktion/Aktion realisieren.
  • Die Computerprogrammanweisungen können auch in einen Computer, in andere programmierbare. Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Realisierung der in einem Block bzw. in den Blöcken der Blockschemata angegebenen Funktionen/Aktionen bereitstellen.
  • Aufgrund eines weiteren Aspekts der Erfindung wird ein Datenverarbeitungssystem zur Ausführung eines Datenverarbeitungsprogramms vorgeschlagen, das Softwarecodeteile zum Durchführen eines oben beschriebenen Verfahrens aufweist.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN IN DEN ZEICHNUNGEN
  • Die vorliegende Erfindung zusammen mit den oben erwähnten und weiteren Aufgaben und Vorteilen werden am besten anhand der folgenden Beschreibung der Ausführungsformen verständlich, wobei die Erfindung nicht auf die Ausführungsformen beschränkt ist und wobei dargestellt ist in:
  • 1 ein Stapel von Komponenten in einem hypervisorgesteuerten System gemäß dem Stand der Technik;
  • 2 ein allgemeiner Überblick über ein Verfahren zur sicheren Ausführung von Gästen in einer unsicheren Umgebung gemäß einer Ausführungsform der Erfindung;
  • 3 eine Systemdarstellung eines hypervisorgesteuerten Systems zur sicheren Ausführung von Gästen in einer unsicheren Umgebung gemäß einer Ausführungsform der Erfindung;
  • 4 ein allgemeines Flussdiagramm zum Ausführen eines verschlüsselten Gastes gemäß einer Ausführungsform der Erfindung;
  • 5 ein ausführliches Flussdiagramm zum Behandeln von Abfangvorgängen bei einem ausgeführten verschlüsselten Gast gemäß einer Ausführungsform der Erfindung;
  • 6 eine beispielhafte Ausführungsform eines Datenverarbeitungssystems zum Ausführen eines Verfahrens gemäß der Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In den Zeichnungen sind ähnliche Elemente mit gleichen Bezugsnummern bezeichnet. Die Zeichnungen sind lediglich schematische Darstellungen und nicht dazu gedacht, spezielle Parameter der Erfindung wiederzugeben. Darüber hinaus dienen die Zeichnungen dazu, lediglich typische Ausführungsformen der Erfindung bildlich darzustellen und sollten daher nicht als Einschränkung des Schutzbereiches der Erfindung angesehen werden.
  • 1 zeigt einen Stapel von Komponenten in einem hypervisorgesteuerten System gemäß dem Stand der Technik Die unterschiedlichen Komponenten weisen einen oder mehrere Gäste 20 auf, die als virtuelle Maschine realisiert sind und auf einem hypervisorgesteuerten System als virtuelles Serversystem ausgeführt werden, das aus Firmware 70, Hardware 72, wie z. B. eine oder mehrere CPUs, Speicher, E/A-Einheiten 74 zur Speichervernetzung besteht. Ein Hypervisor 30 verwaltet die Ressourcen der Hardware 72 und der E/A-Einheiten 74 und teilt den Gästen 20 entsprechende Teile dieser Ressourcen zu. In einer Cloud-Umgebung wird die Gast-VM 20 von einem Client oder Kunden betrieben, während der Hypervisor 30 von einem Cloud-Anbieter betrieben wird, dem der Client unter Umständen nicht vertraut. Die Firmware 70 sowie die Hardware 72 wurden von einem Hardwarelieferanten hergestellt, der als vertrauenswürdig angesehen werden kann. Eine Zielsetzung der Erfindung besteht darin, ein Verfahren zum sicheren Verarbeiten der Gast-VM 20 in einer Cloud-Umgebung bereitzustellen, in der der Cloud-Anbieter unter Umständen nicht vertrauenswürdig ist.
  • Kurz gesagt weist das erfindungsgemäße Verfahren zum Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System 10 die Schritte auf: (i) durch das Gastereignis das Auslösen eines ersten, für das Gastereignis speziellen Firmwaredienstes in einer Firmware 70, wobei das Gastereignis einem Gast 20 und einem Gastzustand 52 und einem Gastspeicher 22 zugehörig ist, der mit einem Gastschlüssel 24 verschlüsselt ist; (ii) durch die Firmware 70 das Verarbeiten von Informationen, die zu dem Gastereignis gehören, die Daten des Gastzustands 52 und des Gastspeichers 22 aufweisen, und das Übergeben nur einer Teilmenge der Informationen des Gastzustands 52 und des Gastspeichers 22 in verschlüsselter Form an einen Hypervisor 30, wobei die Teilmenge der Informationen so ausgewählt ist, dass sie für den Hypervisor 30 ausreicht, um das Gastereignis zu verarbeiten; (iii) durch die Firmware 70 das Zurückhalten eines Teils der Informationen des Gastzustands 52 und des Gastspeichers 22, der nicht an den Hypervisor gesendet 30 wurde; (iv) durch den Hypervisor 30 das Verarbeiten des Gastereignisses aufgrund der empfangenen Teilmenge der Informationen des Gastzustands 52 und des Gastspeichers 22 und das Senden eines Prozessergebnisses an die Firmware 70, das einen zweiten, für des Gastereignis speziellen Firmwaredienst auslöst; (v) durch die Firmware 70 das Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen des Gastzustands und des Gastspeichers, der nicht an den Hypervisor 30 gesendet wurde, wodurch eine Zustands- und/oder Speicherveränderung erzeugt wird; (vi) durch die Firmware 70 des Durchführen der zu dem Gastereignis und dem Gastspeicher 22 gehörenden Zustands- und/oder Speicherveränderung in verschlüsselter Form. Auf diese Schritte wird in der Beschreibung der Ausführungsformen in den folgenden Figuren Bezug genommen.
  • Bei einer Ausführungsform kann der erste Firmwaredienst zweckmäßigerweise mindestens einen der Schritte (ii) und (iii) der obigen Beschreibung aufweisen, wobei in Schritt (ii) die Firmware 70 Daten verarbeitet, die zu dem Gastereignis gehören, die Informationen des Gastzustands 52 und des Gastspeichers 22 aufweisen, und nur eine Teilmenge der Informationen des Gastzustands 52 und des Gastspeichers 22 in verschlüsselter Form an einen Hypervisor 30 übergibt, wobei die Teilmenge von Informationen so ausgewählt ist, dass sie für den Hypervisor 30 ausreicht, um das Gastereignis zu verarbeiten. Der Schritt (iii) weist das Zurückhalten eines Teils der Informationen des Gastzustands 52 und des Gastspeichers 22 durch die Firmware 70 auf, der nicht an den Hypervisor 30 gesendet wurde.
  • Bei einer Ausführungsform kann der zweite Firmwaredienst zweckmäßigerweise mindestens einen der Schritte (v) und (vi) der obigen Beschreibung aufweisen, wobei der Schritt (v) das Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen des Gastzustands und des Gastspeichers durch die Firmware 70 aufweist, der nicht an den Hypervisor 30 gesendet wurde, wodurch eine Zustands- und/oder Speicherveränderung erzeugt wird; und wobei in Schritt (vi) die Firmware 70 die zu dem Gastereignis und dem Gastspeicher 22 gehörende Zustands- und/oder Speicherveränderung in verschlüsselter Form durchführt.
  • 2 gibt einen allgemeinen Überblick über ein Verfahren zur sicheren Ausführung von Gästen 20 in einer unsicheren Umgebung eines hypervisorgesteuerten Systems 10 gemäß einer Ausführungsform der Erfindung. Dieses kann analog zu einer Secure Socket Layer erreicht werden, bei der eine sichere Operation (d. h. Nachrichtenübertragung (Messaging)) ebenfalls über ein unsicheres Medium erreicht wird. Ein Hypervisor 30, der als unsicher angesehen wird, kann gleichzeitig und im selben System sowohl sichere Gäste 20 als auch unsichere Gäste 40 steuern. Die CPU 216, die den Hypervisor 30 und die Gäste 20, 40 ausführt, hält einen speziellen Kontext 42 für jeden sicheren Gast 20, einen speziellen Kontext 44 für jeden unsicheren Gast 40 bzw. einen Kontext 46 für den Hypervisor 30 aufrecht. Jeder Kontext 42 eines sicheren Gastes 20 enthält einen Gastschlüssel 24, der zu dem entsprechenden sicheren Gast 20 gehört. Der Speicher jedes sicheren Gastes 20 ist mit dem Gastschlüssel 24 des entsprechenden sicheren Gastes 20 verschlüsselt. Die Gäste 20, 40 sowie der Hypervisor 30 können auf einer CPU 216 in ihren eigenen Kontexten 42, 44, 46 ausgeführt werden. Außerdem wird auf der CPU 216 der Hypervisor 30 in seinem eigenen Kontext 46 ausgeführt. Wenn eine CPU 216 in einem Kontext ausgeführt wird, hat sie keinen Zugriff auf Informationen, die von einem anderen Kontext aufrechterhalten werden. Wenn eine CPU 216 in einem Gastkontext 42 eines sicheren Gastes 20 ausgeführt wird, hat sie Zugriff auf den Gastschlüssel 24 dieses Gastes 20, um Daten dieses Gastes 20 zu verschlüsseln und zu entschlüsseln. Ferner gelangt eine CPU 216 nur dann in einen Kontext eines Gastes 20, 40 oder eines Hypervisors 30, wenn sie Code dieses Gastes 20, 40 bzw. dieses Hypervisors 30 verarbeitet.
  • 3 zeigt eine Systemdarstellung eines hypervisorgesteuerten Systems 10 zur sicheren Ausführung von Gästen 20 in einer unsicheren Umgebung gemäß einer Ausführungsform der Erfindung. Nummern, auf die in der folgenden Beschreibung Bezug genommen wird und die nicht in 3 dargestellt sind, beziehen sich auf Objekte der 1 und 2.
  • Zunächst werden unter Verwendung der Darstellung in 3 allgemeine Funktionen einer verschlüsselten Ausführung von Gästen 20 in einer unsicheren Umgebung gemäß einer Ausführungsform der Erfindung erläutert, bevor das Verhalten eines hypervisorgesteuerten Systems zur Behandlung von Interrupts oder Abfangvorgängen aufgrund eines Gastereignisses erörtert wird.
  • Die Darstellung in 3 zeigt einen oder mehrere Gäste 20, die mit Gast 1 bis Gast n bezeichnet sind und durch einen Hypervisor 30 gesteuert werden, wobei alle Komponenten auf einer CPU 216 ausgeführt werden, die mit einem Speicher 230 verbunden ist. Die CPU 216 weist Zugriffsmittel 50 für einen Zustand des Gastkontextes der Virtualisierungsfunktion 34 der CPU auf, wobei der Zugriff auf der Grundlage des Kontextes gesteuert wird, in dem sich die CPU 216 befindet. Diese Zugriffsmittel 50 können einen Gastzustand 52 und/oder einen virtuellen CPU Zustand aus einem Speicher von Gastzuständen 52 lesen, der eine Kontextinformation und/oder Steuerblöcke enthält, die gegenüber dem Hypervisor 30 verborgen sein können. Der Speicher der Gastzustände 52 enthält einen Gastzustand 52 aus der Ausführung der Virtualisierungsfunktion 34. Die Anweisungsausführungseinheit 54 ruft Code aus dem Speicher 230 in den Cache 56 ab und führt diesen Code aus. Infolgedessen können die durch die Anweisungsausführungseinheit 54 ausgeführten Vorgänge zum Abrufen aus dem und Speichern in den Speicher ausgelöst werden. Wenn diese Anforderungen zum Abrufen aus dem und Speichern in den Speicher vom Cache 56 behandelt werden, liegen Daten, die von diesen Abruf- und Speicheranforderungen betroffen sind, in Klartext vor. Damit die Speicherabrufe bis in den verschlüsselten Gastspeicherbereich 22 im Speicher 230 reichen, werden Daten bei der Übertragung in den Cache 56 durch die Verschlüsselungseinheit 58 unter Verwendung des Gastschlüssels 24 verschlüsselt, wenn die Virtualisierungsfunktion 34 im Kontext des entsprechenden Gastes 20 ausgeführt wird. Wenn Cache-Zeilen in den Speicher 230 ausgelagert werden, verschlüsselt die Verschlüsselungseinheit 58 die Cache-Zeilen bei der Übertragung aus dem Cache in den Speicher 230, wobei der Gastschlüssel 24 des entsprechenden Gastes 20 verwendet wird, der gegenwärtig durch die Virtualisierungsfunktion 34 ausgeführt wird.
  • Die Verschlüsselungseinheit 58 ist zwischen dem Cache 56 und der Speicherschnittstelle 60 der CPU 216 angeordnet, die mit dem Speicher 230 verbunden ist. Die Virtualisierungsfunktion 34 steuert 64 die Verschlüsselungseinheit 58 und stellt ihr aus dem Gastschlüsselspeicher 28 den Verschlüsselungs-Gastschlüssel 24 eines sicheren Gastes 20 bereit, wenn die CPU 216 im Kontext dieses sicheren Gastes 20 ausgeführt wird. Die CPU 216 hat einen privaten Schlüssel 26 zum Entschlüsseln verschlüsselter Gastschlüssel 24 erhalten, die im Schlüsselspeicher 28 gespeichert sind und der Verschlüsselungseinheit 58 zugeführt werden. Der Gastschlüsselspeicher 28 kann verschlüsselte Gastschlüssel 24 zur Übertragung zur CPU 216 sowie entschlüsselte Gastschlüssel zur Anweisungsausführung enthalten. Der Cache 56 kann Klartextdaten enthalten, aber Prozesse, die nicht in einem Gastkontext ausgeführt werden, können nicht auf diese Klartextdaten zugreifen. Der Cache 56 kann daher Daten dem Kontext des Gastes 20 zuordnen, zu dem die Daten gehören. Der Speicher 230 kann verschlüsselte Gastspeicherbereiche 22 sowie Klartextbereiche enthalten, um Gastdaten über E/As mit einem außerhalb angeordneten System sowie mit Speicherbereichen auszutauschen, die zum Hypervisor 30 und unsicheren Gästen gehören.
  • Der Hypervisor 30 hat nur einen eingeschränkten Zugriff auf Daten und/oder Code im Speicher 230, da dort Bereiche bestehen, die mit einem Gastschlüssel 24 verschlüsselt sind, und andere Bereiche, die für den Hypervisor 30 sichtbar sind.
  • Im Folgenden wird die Realisierung der Behandlung von Unterbrechungen oder Abfangvorgängen mithilfe von Firmwarediensten erläutert, die gemäß einer Ausführungsform der Erfindung als Dienste in der Firmware 70 realisiert sind. Kurz gesagt weist das Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System 10 die Schritte auf: (i) Auslösen eines ersten Firmwaredienstes; (ii) durch die Firmware 70 das Verarbeiten von Informationen, die zu dem Gastereignis gehören, und Übergeben nur einer Teilmenge der Informationen in verschlüsselter Form an einen Hypervisor 30; (iii) durch die Firmware das Zurückhalten eines Teils der Informationen, der nicht an den Hypervisor 30 gesendet wird; (iv) durch den Hypervisor 30 das Auslösen eines zweiten Firmwaredienstes; (v) durch die Firmware das Erzeugen einer Veränderung des Gastzustands 52 und/oder des Gastspeichers 22; (vi) durch die Firmware das Durchführen der Veränderung des Gastzustands 52 und/oder des Gastspeichers 22.
  • Konkrete Merkmale dieses allgemeinen Konzepts werden nachstehend ausführlicher beschrieben.
  • Im Falle des Auftretens einer Unterbrechung oder eines Anweisungs-Abfangvorgangs, die bzw. der zu einem Gast 20 und zu einem Gastzustand 52 und zu einem Gastspeicher 22 gehört, der mit einem Gastschlüssel 24 verschlüsselt ist, haben der erste und zweite Firmwaredienst, die zu dieser Unterbrechung oder zu diesem Anweisungs-Abfangvorgang gehören, Zugriff auf den Gastzustand 52 und den Gastspeicher 22, die beide mit dem Gastschlüssel 24 verschlüsselt sind und im Cache 56 und im (unverschlüsselten) Hypervisorspeicher entschlüsselt werden. Beide Dienste weisen die Fähigkeit auf, den Gastspeicher 22 des Gastes 20 zu lesen, indem sie veranlassen, dass dieser Speicher 22 in den Cache 56 übertragen und dadurch veranlasst wird, dass der Speicher 22 unter Verwendung des Gastschlüssels 24 entschlüsselt wird. Die Firmwaredienste können unverschlüsselte Daten vom Cache 56 zum Speicher übertragen, der für den Firmwaredienst oder für den Hypervisor 30 privat ist. Der zweite Firmwaredienst weist die Fähigkeit auf, unverschlüsselte Daten aus seinem privaten Speicher oder aus dem Hypervisorspeicher in eine Cache-Region zu übertragen, die zum verschlüsselten Gastspeicher 22 gehört, und anschließend den Inhalt dieser Cache-Region zum verschlüsselten Gastspeicher 22 zu übertragen, während der Inhalt der Cache-Region unter Verwendung des Gastschlüssels 24 verschlüsselt wird.
  • Eine virtualisierte Umgebung einer CPU 216 wird erweitert, indem der Gastspeicher 22 durch die CPU 216 entschlüsselt oder verschlüsselt wird, wenn die CPU 216 im Kontext des Gastes 20 ausgeführt wird; indem zugelassen wird, dass der Gast 20 extern über einen unverschlüsselten Speicherbereich Daten austauscht; und verschlüsselte Seiten des Gastspeichers 22 durch den Hypervisor 30 ausgelagert werden.
  • Eine sichere Einrichtung und Ausführung eines Gastes 20 weist das Versehen des Gastes 20 mit dem Gastschlüssel 24 auf, der zur Übertragung in den Schlüsselspeicher 28 der CPU 216 mit dem zu einem privaten Schlüssel 26 der CPU 216 gehörenden öffentlichen Schlüssel 32 verschlüsselt ist; Versehen der CPU 216 mit dem privaten Schlüssel 26, der in der CPU 216 gespeichert ist und zur Entschlüsselung des verschlüsselten Gastschlüssels 24 verwendet wird; wobei der Gastschlüssel 24 verwendet wird, um den Gastspeicher 22 zu verschlüsseln und entschlüsseln, während durch die CPU 216 Gastcode oder Firmwarecode im Kontext des Gastes 20 ausgeführt wird.
  • Ein Prozess zur Erzeugung und Einrichtung von Boot-Abbildern betrifft das Erzeugen eines Boot-Abbilds durch einen Client oder Kunden für den Gast 20; das Verschlüsseln des Boot-Abbilds mit dem Gastschlüssel 24; das Übertragen des verschlüsselten Boot-Abbilds auf eine Boot-Platte; das Laden des verschlüsselten Boot-Abbilds eines Gastes 20 durch den Hypervisor 30 in den Gastspeicher 22; und das Starten einer Ausführung eines Gastes 20 als virtuelle Maschine auf der Ebene der CPU 216.
  • Ein Boot-Prozess des Boot-Abbilds weist einen Ausführungs-Thread in der virtuellen Maschine auf, die auf dem Gastspeicher 22 ausgeführt wird, der in Klartext entschlüsselt wird, während sich die CPU 216 im Kontext des Gastes 20 befindet; Entschlüsseln des Gastspeichers 22, während sich die CPU 216 im Kontext des Gastes 20 befindet und der Gastzustand 52, sowohl der Gastspeicher 22 als auch der Gastzustand 52 vor dem Zugriff durch den Hypervisor 30 oder durch andere Gäste geschützt sind.
  • Die weitere Ausführung eines Gastes 20 weist das Erweitern der Virtualisierungsfunktion 34 der CPU 216 auf, um den Gastspeicher 22 zu verschlüsseln, wenn im Kontext des Gastes 20 auf den verschlüsselten Bereich des Gastspeichers 22 geschrieben wird; das Entschlüsseln des Gastspeichers 22, wenn im Kontext des Gastes 20 aus dem verschlüsselten Bereich eines Gastspeichers 22 gelesen wird; wobei der verschlüsselte Bereich des Gastspeichers 22 und der Gastregister für den Hypervisor 30 nur in verschlüsselter Form zugriffsfähig gehalten wird.
  • Eine Interaktion zwischen dem Gast 20 und dem Hypervisor 30 umfasst ferner, dass der verschlüsselte Bereich des Gastspeichers 22 oder der Register, der bzw. die zu dem Gastereignis gehören, für den Hypervisor 30 nicht in entschlüsselter Form zugriffsfähig ist; das Erweitern der Virtualisierungsfunktion 34 der CPU 216 durch Zugriffsverfahren auf spezielle Gastdaten, die zu dem Gastereignis gehören.
  • Ein E/A-Prozess eines Gastes 20 weist ferner das Definieren eines unverschlüsselten Speicherbereiches für E/A-Puffer und E/A-Steuerstrukturen des Gastes 20 außerhalb des verschlüsselten Bereiches des Gastspeichers 22 auf; das Starten des E/A-Prozesses durch den Gast 20 unter Verwendung dieses unverschlüsselten Bereiches des Gastspeichers 22; das Erzeugen eines Gastereignisses durch die Virtualisierungsfunktion 34 der CPU 216; das Lesen des Grundes für das Gastereignis und Durchführen des E/A-Prozesses durch den Hypervisor 30.
  • Ein Auslagerungsprozess ist ferner gekennzeichnet durch das Auslagern von Seiten des Gastspeichers 22 durch den Hypervisor 30; nach dem versuchten Zugriff auf eine ausgelagerte Seite das Bereitstellen eines Seitenfehlers, der dem Hypervisor 30 anzeigt, ob eine Seitenauslagerungsoperation des Hypervisors 30 diesen Seitenfehler verursacht hat; Veranlassen des Hypervisors 30, einen Prozess zur Seiteneinlagerung in den Gastspeicher 22 durchzuführen.
  • Ferner weist das Prüfen einer Gastintegrität mit einem Prüfprozess die Schritte auf: Kennen des Gastschlüssel 24 durch den Prüfprozess; durch den Gast 20 das Lesen eines Speicherinhalts in Klartext aus dem Gastspeicher 22 und Übertragen eines willkürlichen Bereiches des Gastspeichers 22 über einen sicheren Datenübertragungspfad zum Prüfprozess; Anfordern desselben Speicherbereiches des Gastspeichers 22 aus dem Hypervisor 30 und Übertragen des Bereiches zum Prüfprozess; Vergleichen des vom Gast 20 erhaltenen Speicherinhalts mit dem Ergebnis des Entschlüsselns des vom Hypervisor 30 erhaltenen Speicherinhalts; Bereitstellen eines Vergleichsergebnisses in Abhängigkeit vom Inhalt der zwei Speicherbereiche; wobei das Ergebnis des Prüfprozesses positiv ist, wenn das Vergleichsergebnis null ist, und andernfalls negativ ist.
  • In 4 ist ein allgemeines Flussdiagramm zum Ausführen eines gemäß einer Ausführungsform der Erfindung ausgeführten verschlüsselten Gastes aus der Sicht eines Hypervisors 30 und einer CPU 216 dargestellt. Sowohl 4 als auch 5 nehmen in den Flussdiagrammen Bezug auf Objekte, die in den Darstellungen der 2 und 3 definiert sind, sodass verwendete Bezugsnummern auch Bezug auf die Objekte dieser Figuren nehmen. Das Ausführen eines verschlüsselten Gastes 20 beginnt bei Schritt S410, in dem der Hypervisor 30 ein verschlüsseltes Gastabbild aus einer Anfangsprogrammlader-Einheit (IPL-Einheit, IPL = Initial Program Loader) zusammen mit einem verschlüsselten Gastschlüssel 24 liest. Als Nächstes speichert der Hypervisor 30 in Schritt S420 das verschlüsselte Gastabbild in den Gastspeicher 22. In Schritt S430 erstellt der Hypervisor 30 einen Anfangsgastzustand 52, der den verschlüsselten Gastschlüssel 24 aufweist. Somit dienen die Schritte S410 und S430 zum Initialisieren eines Gastes 20 in einem hypervisorgesteuerten System 10. In Schritt S440 wird entsprechend dem aktuellen Gaszustand 52 eine virtuelle Maschine des sicheren Gastes 20 gestartet. Daraufhin führt eine CPU 216 in Schritt S450 den sicheren Gast 20 in einem sicheren Gastkontext 42 aus, der durch den aktuellen Gastzustand 52 beschrieben ist. Wenn ein Gastereignis in Form eines Interrupts oder Anweisungs-Abfangvorgangs auftritt, verlässt der Gast 20 aufgrund dieses Interrupts bzw. Anweisungs-Abfangvorgangs in Schritt S460 den Gastkontext 42 mit einem aktualisierten Gastzustand 52. Der Hypervisor 30 kann jetzt in Schritt S470 den Interrupt bzw. Abfangvorgang unter Verwendung eines ersten Firmwaredienstes verarbeiten, um Daten aus dem sicheren Gast 20 zu lesen, oder eines zweiten Firmwaredienstes, um Daten auf den sicheren Gast 20 zu schreiben.
  • Allgemein kann ein erster Firmwaredienst ausgelöst werden, was bedeutet, dass (ii) die Firmware 70 Daten verarbeitet, die zu dem Gastereignis gehören, und nur eine Teilmenge der Informationen des Gastzustands 52 und des Gastspeichers 22 in verschlüsselter Form an den Hypervisor 30 übergibt und (iii) die Firmware 70 einen Teil der Informationen zurückhält, die nicht an den Hypervisor 30 gesendet werden. Ferner kann der Hypervisor 30 (iv) auf der Grundlage der empfangenen Teilmenge der Informationen einen zweiten Firmwaredienst auslösen, um (v) eine Zustands- und/oder Speicherveränderung des Gastes 20 zu erzeugen und (vi) die zu dem Gastereignis gehörende Zustands- und/oder Speicherveränderung im Gastspeicher 22 in verschlüsselter Form durchzuführen.
  • Wenn der sichere Gast 20 beendet ist, gelangt der gesamte Prozess bei der Verzweigung S480 zu einem Ende. Wenn der sichere Gast 20 nicht beendet ist, wird eine Schleife zum Schritt S440 geschlossen, und der Hypervisor 30 startet den sicheren Gast 20 erneut.
  • In 5 ist ein ausführliches Flussdiagramm zum Behandeln von Abfangvorgängen bei einem ausgeführten verschlüsselten Gast gemäß einer Ausführungsform der Erfindung abgebildet. Schritt S510 beginnt mit einem Gastereignis, was bedeutet, dass der sichere Gast 20 eine Anweisung ausgibt, die die Interpretation oder Unterstützung durch den Hypervisor 30 erfordert, z. B. eine Anweisung zur Speicherung von Systemumgebungsparametern, die normalerweise durch den Hypervisor 30 bereitgestellt wird. In einem nächsten Schritt S520 verlässt die Ausführung der Virtualisierungsfunktion 34 den Gastkontext 42 und übergibt die Initiative an einen CPU-internen Virtualisierungscode. Anschließend erkennt der CPU-interne Virtualisierungscode in Schritt S530 einen Grund zum Verlassen des Gastes 20, z. B. erkennt er die Anweisung zur Speicherung von Systemumgebungsparametern. In Schritt S540 erstellt der CPU-interne Visualisierungscode entsprechend dem Grund für das Verlassen des Gastes 20 Handles, z. B. weist er den Speicherplatz für die angeforderten Informationen einem Handle zu, sodass der Hypervisor 30 auf Eingangs- und Ausgangsparameter zugreifen kann. Anschließend markiert der CPU-interne Visualisierungscode in Schritt S550 den Teil des Ausführungszustands, der zur Verarbeitung des Abfangvorgangs nicht benötigt wird, und gibt die Initiative an den Hypervisor 30 zurück, indem er das Verlassen des Gastes 20 anzeigt und einen Hinweis an Handles für Eingangs- und Ausgangsparameter gibt, z. B. verbirgt er Register und Kontextdaten vor dem Hypervisor 30, indem er sie verschlüsselt. Der CPU-interne Visualisierungscode in den Schritten S520 bis S550 kann alternativ als erster Firmwaredienst realisiert sein. Als Nächstes erkennt der Hypervisor 30 in Schritt S560 den Grund für das Verlassen des Gastes 20, indem er die vom CPU-internen Virtualisierungscode stammende Anzeige des Grundes liest, z. B. liest er einen Begründungscode, um eine Anforderung eines virtuellen Servers zu erkennen, Systemumgebungsparameter zu speichern. Der Hypervisor 30 löst in Schritt S570 (sofern notwendig, mehrmals) Firmwaredienste aus (z. B. den ersten Firmwaredienst), um zur Verarbeitung des Verlassens des Gastes 20 mit Eingangs- und Ausgangsparametern zu arbeiten. Um dies durchzuführen, verwendet der Hypervisor 30 zuvor eingerichtete Handles als Mittel, um auf Inhalte des Speichers 230 und von Registern zu verweisen, die zur Verarbeitung benötigt werden, z. B. speichert der Hypervisor 30 Systemumgebungsparameter über Firmwaredienste (z. B. den zweiten Firmwaredienst) in den Speicher des virtuellen Servers, indem er die empfangenen Handles verwendet.
  • Auf diese Weise ist in dem ausführlichen Flussdiagramm zur Verarbeitung von Abfangvorgängen mit einem verschlüsselten Gast in 5 beschrieben, wie der erste und zweite Firmwaredienst zur Verarbeitung eines Gastereignisses in einem hypervisorgesteuerten System 10 verwendet werden, wie (ii) die Firmware 70 Daten verarbeitet, die zu dem Gastereignis gehören, und nur eine Teilmenge in verschlüsselter Form an den Hypervisor 30 übergibt, sowie, wie (iii) die Firmware 70 einen Teil der Daten zurückhält, und wie (iv) der zweite Firmwaredienst auf der Grundlage der Teilmenge der empfangenen Daten ausgelöst werden kann.
  • Als Nächstes startet der Hypervisor 30 in Schritt S580 die Ausführung der Virtualisierungsfunktion 34 neu, indem er eine entsprechende CPU-Anweisung ausgibt, bis der CPU-interne Virtualisierungscode in Schritt S590 Handles aus dem vorherigen Verlassen des Gastes 20 löscht, die Maskierung des Kontextes des virtuellen Servers zur Ausführung der Virtualisierungsfunktion 34 aufhebt und die Ausführung des virtuellen Servers startet.
  • Somit kann im Gastspeicher 22 eine Zustands- und/oder Speicherveränderung des Gastes 20 in verschlüsselter Form erzeugt und durchgeführt werden.
  • Unter Bezugnahme auf 6 ist dort nun ein Beispiel eines Datenverarbeitungssystems 210 dargestellt. Das Datenverarbeitungssystem 210 ist nur ein Beispiel eines geeigneten Datenverarbeitungssystems und nicht dazu gedacht, eine beliebige Einschränkung hinsichtlich des Schutzbereiches oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung nahezulegen. Ungeachtet dessen kann das Datenverarbeitungssystem 210 realisiert werden und/oder eine beliebige der hierin oben dargelegten Funktionalitäten durchführen.
  • In dem Datenverarbeitungssystem 210 liegt ein Computersystem/Server 212 vor, der in Verbindung mit zahlreichen anderen Mehrzweck- oder Spezial-Datenverarbeitungssystemumgebungen oder derartigen Konfigurationen betriebsfähig ist. Zu Beispielen wohlbekannter Datenverarbeitungssysteme, umgebungen und/oder -konfigurationen, die zur Verwendung in Verbindung mit dem Computersystem/Server 212 geeignet sind, gehören, ohne darauf beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin-Clients, Thick-Clients, Hand- oder Notebook-Einheiten, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Einheiten der Konsumgüterelektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, zu denen beliebige der oben erwähnten Systeme oder Einheiten gehören, und dergleichen.
  • Das Computersystem/der Server 212 kann im allgemeinen Kontext von auf einem Computersystem ausführbaren Anweisungen beschrieben werden, wie zum Beispiel von Programmmodulen, die durch ein Computersystem ausgeführt werden. Programmmodule können im Allgemeinen Routinen, Programme, Objekte, Komponenten, Logik und Datenstrukturen usw. aufweisen, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 212 kann in verteilten Cloud-Computing-Umgebungen praktisch umgesetzt werden, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Bei einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokal als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, zu denen Hauptspeichereinheiten gehören.
  • Wie in 6 gezeigt, ist das Computersystem/der Server 212 im Datenverarbeitungssystem 210 in Form einer Mehrzweck-Datenverarbeitungseinheit dargestellt. Zu den Komponenten des Computersystems/des Servers 212 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 216, ein Systemspeicher 228 und ein Bus 218 gehören, der verschiedene Systemkomponenten einschließlich des Systemspeichers 228 mit dem Prozessor 216 verbindet.
  • Der Bus 218 stellt eine oder mehrere beliebiger verschiedener Arten von Busstrukturen dar, zu denen ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein Accelerated Graphics Port und ein Prozessorbus oder lokaler Bus gehören, die eine beliebige einer Vielfalt von Busarchitekturen nutzen. Als Beispiel und nicht als Einschränkung gedacht gehören zu derartigen Architekturen der ISA-Bus (ISA = Industry Standard Architecture), der MCA-Bus (MCA = Micro Channel Architecture), der ELSA-Bus (EISA = Enhanced ISA), der lokale VESA-Bus (VESA = Video Electronics Standards Association) und der PCI-Bus (PCI = Peripheral Component Interconnect).
  • Das Computersystem/der Server 212 weist normalerweise eine Vielfalt von Medien auf, die von Computersystemen gelesen werden können. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 212 zugreifen kann, und zu diesen Medien gehören sowohl flüchtige als auch nichtflüchtige Medien, Wechselmedien und nicht auswechselbare Medien.
  • Zum Systemspeicher 228 können für Computersysteme lesbare Medien in Form von flüchtigem Speicher wie zum Beispiel Direktzugriffsspeicher (Random Access Memory, RAM) 230 und/oder Cache-Speicher 232 gehören. Das Computersystem/der Server 212 kann ferner andere auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien aufweisen. Lediglich als Beispiel kann ein Speichersystem 234 zum Lesen von einem und Schreiben auf ein nicht auswechselbares, nichtflüchtiges magnetisches Medium (nicht dargestellt und normalerweise als „Festplatte” bezeichnet) bereitgestellt sein. Obwohl nicht dargestellt, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine auswechselbare nichtflüchtige Magnetplatte (z. B. eine „Diskette”) und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine auswechselbare nichtflüchtige optische Platte wie zum Beispiel ein CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt sein. in solchen Fällen kann jede dieser Einheiten durch eine oder mehrere Datenmedienschnittstellen mit dem Bus 218 verbunden sein. Wie ferner abgebildet und nachfolgend beschrieben, kann der Speicher 228 mindestens ein Programmprodukt aufweisen, das eine Menge (z. B. mindestens eines) von Programmmodulen aufweist, die so gestaltet sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Ein Programm/Dienstprogramm 240, das eine Menge (mindestens eines) von Programmmodulen 242 aufweist kann als Beispiel und nicht als Einschränkung im Speicher 228 sowie in einem Betriebssystem, in einem oder mehreren Anwendungsprogrammen oder in anderen Programmmodulen und Programmdaten gespeichert sein. Jedes der Betriebssysteme, eines oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder jede einer bestimmten Kombination davon kann bzw. können eine Realisierungsform einer Vernetzungsumgebung aufweisen. Die Programmmodule 242 führen üblicherweise die Funktionen und/oder Methodiken von Ausführungsformen der Erfindung wie hierin beschrieben aus. Das Computersystem/der Server 212 kann außerdem mit einer oder mehreren externen Einheiten 214 Daten austauschen, zum Beispiel mit einer Tastatur, einer Zeigeeinheit, einer Anzeigeeinheit 224 usw.; mit einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 212 zu interagieren; und/oder mit beliebigen Einheiten (z. B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server 212 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 222 stattfinden. Darüber hinaus kann das Computersystem/der Server 212 über einen Netzwerkadapter 220 mit einem oder mehreren Netzwerken Daten austauschen, zum Beispiel mit einem lokalen Netzwerk (Local Area Network, LAN), mit einem allgemeinen Weitverkehrsnetzwerk (Wide Area Network, WAN) und oder mit einem öffentlichen Netzwerk (z. B. dem Internet). Wie abgebildet tauscht der Netzwerkadapter 220 über den Bus 218 Daten mit den anderen Komponenten des Computersystems/Servers 212 aus. Es sollte klar sein, dass, obwohl nicht abgebildet, andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 212 verwendet werden könnten. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Festplatten-Anordnungen, RAID-Systeme (RAID = Redundant Array of Independent Disks), Bandlaufwerke, Speichersysteme zur Datenarchivierung usw.
  • Die Blockschemata in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß den verschiedenen Ausführungsformen der vorliegenden Beschreibung der Erfindung. Dementsprechend kann jeder Block in den Blockschemata ein Modul, Segment oder einen Teil des Codes darstellen, der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktionen aufweist. Außerdem sollte beachtet werden, dass bei einigen alternativen Realisierungsformen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als der ausgeführt werden können, die in den Figuren angegeben ist. Beispielsweise können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der damit verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der dargestellten Blockschemata sowie Kombinationen von Blöcken in den Blockschemata mithilfe von speziellen Systemen auf der Grundlage von Hardware zur Ausführung der angegebenen Funktionen bzw. Aktionen oder mithilfe von Kombinationen aus spezieller Hardware und Computeranweisungen realisiert werden kann bzw. können.

Claims (13)

  1. Verfahren zum Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System (10), aufweisend die Schritte: (i) durch das Gastereignis das Auslösen eines ersten, für das Gastereignis speziellen Firmwaredienstes in einer Firmware (70), wobei das Gastereignis einem Gast (20) und einem Gastzustand (52) und einem Gastspeicher (22) zugehörig ist, der mit einem Gastschlüssel (24) verschlüsselt ist; (ii) durch die Firmware (70) das Verarbeiten von Informationen, die zu dem Gastereignis gehören, die Daten des Gastzustands (52) und des Gastspeichers (22) aufweisen, und das Übergeben nur einer Teilmenge der Informationen des Gastzustands (52) und des Gastspeichers (22) in verschlüsselter Form an einen Hypervisor (30), wobei die Teilmenge der Informationen so ausgewählt ist, dass sie für den Hypervisor (30) ausreicht, um das Gastereignis zu verarbeiten; (iii) durch die Firmware (70) das Zurückhalten eines Teils der Informationen des Gastzustands (52) und des Gastspeichers (22), der nicht an den Hypervisor (30) gesendet wird; (iv) durch den Hypervisor (30) das Verarbeiten des Gastereignisses aufgrund der empfangenen Teilmenge der Informationen des Gastzustands (52) und des Gastspeichers (22) und das Senden eines Prozessergebnisses an die Firmware (70), das einen zweiten, für das Gastereignis speziellen Firmwaredienst auslöst; (v) durch die Firmware (70) das Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen des Gastzustands (52) und des Gastspeichers (22), der nicht an den Hypervisor (30) gesendet wurde, wodurch eine Zustands- und/oder Speicherveränderung erzeugt wird; (vi) durch die Firmware (70) das Durchführen der zu dem Gastereignis und dem Gastspeicher (22) gehörenden Zustands- und/oder Speicherveränderung in verschlüsselter Form.
  2. Verfahren nach Anspruch 1, ferner aufweisend die Schritte: (i) Entschlüsseln oder Verschlüsseln des Gastspeichers (22) durch eine CPU (216), wenn die CPU (216) im Kontext des Gastes (20) ausgeführt wird; (ii) Zulassen, dass der Gast (20) extern über einen unverschlüsselten Speicherbereich Daten austauschen kann; (iii) Auslagern verschlüsselter Seiten des Gastspeichers (22) durch den Hypervisor (30).
  3. Verfahren nach Anspruch 1 oder 2, ferner aufweisend die Schritte: (i) Versehen des Gastes (20) mit dem Gastschlüssel (24), der zur Übertragung in den Schlüsselspeicher (28) der CPU (216) mit dem zu einem privaten Schlüssel (26) der CPU (216) gehörenden öffentlichen Schlüssel (32) verschlüsselt ist; (ii) Versehen der CPU (216) mit dem privaten Schlüssel (26), der in der CPU (216) gespeichert ist und zur Entschlüsselung des verschlüsselten Gastschlüssels (24) verwendet wird; (iii) wobei der Gastschlüssel (24) verwendet wird, um den Gastspeicher (22) zu verschlüsseln und entschlüsseln, während durch die CPU (216) Gastcode oder Firmwarecode im Kontext des Gastes (20) ausgeführt wird.
  4. Verfahren nach einem der vorhergehenden Ansprüche, ferner aufweisend die Schritte: (i) Erzeugen eines Boot-Abbilds durch einen Client; (ii) Verschlüsseln des Boot-Abbilds mit dem Gastschlüssel (24); (iii) Übertragen des verschlüsselten Boot-Abbilds auf eine Boot-Platte; (iv) Laden des verschlüsselten Boot-Abbilds eines Gastes (20) durch den Hypervisor (30) in den Gastspeicher (22); (v) Starten einer Ausführung eines Gastes (20) als virtuelle Maschine auf der Ebene der CPU (216).
  5. Verfahren nach einem der vorhergehenden Ansprüche, ferner aufweisend die Schritte: (i) Entschlüsseln eines Ausführungs-Threads in Klartext in der virtuellen Maschine, die auf dem Gastspeicher (22) ausgeführt wird, während sich die CPU (216) im Kontext des Gastes (20) befindet; (ii) Entschlüsseln des Gastspeichers (22), während sich die CPU (216) im Kontext des Gastes (20) und im Gastzustand (52) befindet, die beide vor dem Zugriff durch den Hypervisor (30) oder durch andere Gäste geschützt sind.
  6. Verfahren nach einem der vorhergehenden Ansprüche, ferner aufweisend die Schritte: (i) Erweitern einer Virtualisierungsfunktion (34) der CPU (216), um den Gastspeicher (22) zu verschlüsseln, wenn im Kontext des Gastes (20) auf den verschlüsselten Bereich des Gastspeichers (22) geschrieben wird; (ii) Entschlüsseln des Gastspeichers (22), wenn im Kontext des Gastes (20) aus dem verschlüsselten Bereich eines Gastspeichers (22) gelesen wird; (iii) den verschlüsselten Bereich des Gastspeichers (22) und der Gastregister für den Hypervisor (30) nur in verschlüsselter Form zugriffsfähig halten.
  7. Verfahren nach einem der vorhergehenden Ansprüche, ferner aufweisend die Schritte: (i) den verschlüsselten Bereich des Gastspeichers (22) oder der Register, der bzw. die zu dem Gastereignis gehören, für den Hypervisor (30) nicht in entschlüsselter Form zugriffsfähig halten; (ii) Erweitern der Virtualisierungsfunktion (34) der CPU (216) durch Zugriffsverfahren auf spezielle Gastdaten, die zu dem Gastereignis gehören.
  8. Verfahren nach einem der vorhergehenden Ansprüche, ferner aufweisend die Schritte: (i) Definieren eines unverschlüsselten Speicherbereiches für E/A-Puffer und E/A-Steuerstrukturen des Gastes (20) außerhalb des verschlüsselten Bereiches des Gastspeichers (22); (ii) Starten des E/A-Prozesses durch den Gast (20) unter Verwendung dieses unverschlüsselten Bereiches des Gastspeichers (22); (iii) Erzeugen eines Gastereignisses durch die Virtualisierungsfunktion (34) der CPU (216); (iv) Lesen des Grundes für das Gastereignis und Durchführen des E/A-Prozesses durch den Hypervisor (30).
  9. Verfahren nach einem der vorhergehenden Ansprüche, ferner aufweisend die Schritte: (i) Auslagern von Seiten des Gastspeichers (22) durch den Hypervisor (30); (ii) nach dem versuchten Zugriff auf eine ausgelagerte Seite das Bereitstellen eines Seitenfehlers, der dem Hypervisor (30) anzeigt, ob eine Seitenauslagerungsoperation des Hypervisors (30) diesen Seitenfehler verursacht hat; (iii) Veranlassen des Hypervisors (30), einen Prozess zur Seiteneinlagerung in den Gastspeicher (22) durchzuführen.
  10. Verfahren nach einem der vorhergehenden Ansprüche, ferner aufweisend das Prüfen einer Gastintegrität mithilfe eines Prüfprozesses, der den Gastschlüssel (24) kennt, wobei der Prüfprozess die Schritte aufweist: (i) durch den Gast (20) das Lesen eines Speicherinhalts in Klartext aus dem Gastspeicher (22) und Übertragen eines willkürlichen Bereiches des Gastspeichers (22) über einen sicheren Datenübertragungspfad zum Prüfprozess; (ii) Anfordern desselben Speicherbereiches des Gastspeichers (22) aus dem Hypervisor (30) und Übertragen des Bereiches zum Prüfprozess; (iii) Vergleichen des vom Gast (20) erhaltenen Speicherinhalts mit dem Ergebnis des Entschlüsselns des vom Hypervisor (30) erhaltenen Speicherinhalts; (iv) Bereitstellen eines Vergleichsergebnisses in Abhängigkeit vom Inhalt der zwei Speicherbereiche; (v) Zurückgeben eines Ergebnisses des Prüfprozesses als positiv, wenn das Vergleichsergebnis null ist, andernfalls als negativ.
  11. Datenverarbeitungsprogramm (240) zur Ausführung in einem Datenverarbeitungssystem (210), das eine Realisierungsform eines Anweisungssatzes zum Durchführen eines Verfahrens nach einem beliebigen der Ansprüche 1 bis 10 aufweist, wenn das Datenverarbeitungsprogramm (240) auf einem Computer (212) ausgeführt wird.
  12. Computerprogrammprodukt, das ein computernutzbares Medium aufweist, das ein computerlesbares Programm aufweist, wobei das computerlesbare Programm, wenn es auf einem Computer (212) ausgeführt wird, den Computer (212) veranlasst, ein Verfahren zum Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System durchzuführen, das die Schritte aufweist: (i) durch das Gastereignis das Auslösen eines ersten, für das Gastereignis speziellen Firmwaredienstes in einer Firmware (70), wobei das Gastereignis einem Gast (20) und einem Gastzustand (52) und einem Gastspeicher (22) zugehörig ist, der mit einem Gastschlüssel (24) verschlüsselt ist; (ii) durch die Firmware (70) das Verarbeiten von Informationen, die zu dem Gastereignis gehören, die Daten des Gastzustands (52) und des Gastspeichers (22) aufweisen, und das Übergeben nur einer Teilmenge der Informationen des Gastzustands (52) und des Gastspeichers (22) in verschlüsselter Form an einen Hypervisor (30), wobei die Teilmenge der Informationen so ausgewählt ist, dass sie für den Hypervisor (30) ausreicht, um das Gastereignis zu verarbeiten; (iii) durch die Firmware (70) das Zurückhalten eines Teils der Informationen des Gastzustands (52) und des Gastspeichers (22), der nicht an den Hypervisor (30) gesendet wird; (iv) durch den Hypervisor (30) das Verarbeiten des Gastereignisses aufgrund der empfangenen Teilmenge der Informationen des Gastzustands (52) und des Gastspeichers (22) und das Senden eines Prozessergebnisses an die Firmware (70), das einen zweiten, für das Gastereignis speziellen Firmwaredienst auslöst; (v) durch die Firmware (70) das Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen des Gastzustands (52) und des Gastspeichers (22), der nicht an den Hypervisor (30) gesendet wurde, wodurch eine Zustands- und/oder Speicherveränderung erzeugt wird; (vi) durch die Firmware (70) das Durchführen der zu dem Gastereignis und dem Gastspeicher (22) gehörenden Zustands- und/oder Speicherveränderung in verschlüsselter Form.
  13. Datenverarbeitungssystem (210) zur Ausführung eines Datenverarbeitungsprogramms (240), das Softwarecodeteile zum Durchführen eines Verfahrens nach einem beliebigen der vorhergehenden Ansprüche 1 bis 10 aufweist.
DE112014000965.2T 2013-06-27 2014-03-14 Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System Pending DE112014000965T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1311430.1A GB2515536A (en) 2013-06-27 2013-06-27 Processing a guest event in a hypervisor-controlled system
GB1311430.1 2013-06-27
PCT/IB2014/059780 WO2014207581A2 (en) 2013-06-27 2014-03-14 Processing a guest event in a hypervisor-controlled system

Publications (1)

Publication Number Publication Date
DE112014000965T5 true DE112014000965T5 (de) 2015-12-03

Family

ID=48999042

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014000965.2T Pending DE112014000965T5 (de) 2013-06-27 2014-03-14 Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System

Country Status (6)

Country Link
US (1) US9690947B2 (de)
JP (1) JP6347831B2 (de)
CN (1) CN105453034B (de)
DE (1) DE112014000965T5 (de)
GB (2) GB2515536A (de)
WO (1) WO2014207581A2 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3036680B1 (de) * 2013-08-21 2018-07-18 Intel Corporation Private datenverarbeitung in einer cloud
GB2532415A (en) * 2014-11-11 2016-05-25 Ibm Processing a guest event in a hypervisor-controlled system
US9875047B2 (en) * 2015-05-27 2018-01-23 Red Hat Israel, Ltd. Exit-less host memory locking in a virtualized environment
GB2539435B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539433B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
CN105184154B (zh) * 2015-09-15 2017-06-20 中国科学院信息工程研究所 一种在虚拟化环境中提供密码运算服务的系统和方法
US9894061B2 (en) 2015-10-16 2018-02-13 International Business Machines Corporation Method for booting and dumping a confidential image on a trusted computer system
US10102151B2 (en) 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
US9841987B2 (en) 2015-12-17 2017-12-12 International Business Machines Corporation Transparent secure interception handling
US10019279B2 (en) * 2015-12-17 2018-07-10 International Business Machines Corporation Transparent secure interception handling
US9898326B2 (en) * 2016-02-23 2018-02-20 Red Hat Israel, Ltd. Securing code loading in a virtual environment
US11188651B2 (en) * 2016-03-07 2021-11-30 Crowdstrike, Inc. Hypervisor-based interception of memory accesses
US10348500B2 (en) * 2016-05-05 2019-07-09 Adventium Enterprises, Llc Key material management
US10243746B2 (en) * 2017-02-27 2019-03-26 Red Hat, Inc. Systems and methods for providing I/O state protections in a virtualized environment
CN107240408B (zh) * 2017-05-11 2019-05-10 中国科学院信息工程研究所 针对cd-rom光盘介质的读写管控系统
GB2563886B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Realm management unit-private memory regions
US10686605B2 (en) * 2017-09-29 2020-06-16 Intel Corporation Technologies for implementing mutually distrusting domains
US10757082B2 (en) * 2018-02-22 2020-08-25 International Business Machines Corporation Transforming a wrapped key into a protected key
US10949547B2 (en) * 2018-10-05 2021-03-16 Google Llc Enclave fork support
US11354421B2 (en) * 2019-03-08 2022-06-07 International Business Machines Corporation Secure execution guest owner controls for secure interface control
US11443040B2 (en) * 2019-03-08 2022-09-13 International Business Machines Corporation Secure execution guest owner environmental controls
US10956188B2 (en) 2019-03-08 2021-03-23 International Business Machines Corporation Transparent interpretation of guest instructions in secure virtual machine environment
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11308215B2 (en) 2019-03-08 2022-04-19 International Business Machines Corporation Secure interface control high-level instruction interception for interruption enablement
WO2021167659A1 (en) * 2019-11-14 2021-08-26 Trideum Corporation Systems and methods of monitoring and controlling remote assets
US11475167B2 (en) 2020-01-29 2022-10-18 International Business Machines Corporation Reserving one or more security modules for a secure guest
CN111833108A (zh) * 2020-07-17 2020-10-27 上海国际技贸联合有限公司 一种信息采集分析处理系统、方法以及存储介质

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404563A (en) * 1991-08-28 1995-04-04 International Business Machines Corporation Scheduling normally interchangeable facilities in multiprocessor computer systems
US5371867A (en) * 1992-11-10 1994-12-06 International Business Machines Corporation Method of using small addresses to access any guest zone in a large memory
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
US7024555B2 (en) * 2001-11-01 2006-04-04 Intel Corporation Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment
US7546447B2 (en) * 2004-05-08 2009-06-09 Intel Corporation Firmware interface runtime environment protection field
US8627315B2 (en) * 2004-12-31 2014-01-07 Intel Corporation Apparatus and method for cooperative guest firmware
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US20080059556A1 (en) * 2006-08-31 2008-03-06 Egenera, Inc. Providing virtual machine technology as an embedded layer within a processing platform
US8615643B2 (en) * 2006-12-05 2013-12-24 Microsoft Corporation Operational efficiency of virtual TLBs
US7788464B2 (en) * 2006-12-22 2010-08-31 Microsoft Corporation Scalability of virtual TLBs for multi-processor virtual machines
JP2008181228A (ja) 2007-01-23 2008-08-07 Sony Corp 管理システムおよび管理方法、端末装置、管理サーバ、並びにプログラム
US8688920B2 (en) * 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
US8127292B1 (en) * 2007-06-22 2012-02-28 Parallels Holdings, Ltd. Virtualization system with hypervisor embedded in bios or using extensible firmware interface
JP4678396B2 (ja) * 2007-09-25 2011-04-27 日本電気株式会社 仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム
US8156298B1 (en) * 2007-10-24 2012-04-10 Adam Stubblefield Virtualization-based security apparatuses, methods, and systems
US8819676B2 (en) * 2007-10-30 2014-08-26 Vmware, Inc. Transparent memory-mapped emulation of I/O calls
CN101179379A (zh) 2007-12-11 2008-05-14 中兴通讯股份有限公司 用于微波接入全球互通系统的固件安全管理方法
CN101470783B (zh) 2007-12-25 2010-09-01 中国长城计算机深圳股份有限公司 一种基于可信平台模块的身份识别方法及装置
US8261028B2 (en) * 2007-12-31 2012-09-04 Intel Corporation Cached dirty bits for context switch consistency checks
US8364983B2 (en) * 2008-05-08 2013-01-29 Microsoft Corporation Corralling virtual machines with encryption keys
US8381032B2 (en) * 2008-08-06 2013-02-19 O'shantel Software L.L.C. System-directed checkpointing implementation using a hypervisor layer
JP4643702B2 (ja) * 2008-10-27 2011-03-02 株式会社東芝 マイクロプロセッサ
US20100146267A1 (en) * 2008-12-10 2010-06-10 David Konetski Systems and methods for providing secure platform services
US8738932B2 (en) * 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US10437865B1 (en) * 2009-01-21 2019-10-08 Vmware, Inc. Computer storage deduplication
US8538919B1 (en) * 2009-05-16 2013-09-17 Eric H. Nielsen System, method, and computer program for real time remote recovery of virtual computing machines
US20110041126A1 (en) * 2009-08-13 2011-02-17 Levy Roger P Managing workloads in a virtual computing environment
US20110202765A1 (en) * 2010-02-17 2011-08-18 Microsoft Corporation Securely move virtual machines between host servers
US9703586B2 (en) * 2010-02-17 2017-07-11 Microsoft Technology Licensing, Llc Distribution control and tracking mechanism of virtual machine appliances
JP5484117B2 (ja) * 2010-02-17 2014-05-07 株式会社日立製作所 ハイパーバイザ及びサーバ装置
WO2011101972A1 (ja) * 2010-02-18 2011-08-25 株式会社東芝 プログラム
US8793439B2 (en) * 2010-03-18 2014-07-29 Oracle International Corporation Accelerating memory operations using virtualization information
US8375437B2 (en) * 2010-03-30 2013-02-12 Microsoft Corporation Hardware supported virtualized cryptographic service
US8671405B2 (en) * 2010-03-31 2014-03-11 Microsoft Corporation Virtual machine crash file generation techniques
JP5574230B2 (ja) * 2010-04-28 2014-08-20 株式会社日立製作所 障害処理方法および計算機
US8555377B2 (en) * 2010-04-29 2013-10-08 High Cloud Security Secure virtual machine
US8812871B2 (en) * 2010-05-27 2014-08-19 Cisco Technology, Inc. Method and apparatus for trusted execution in infrastructure as a service cloud environments
US8566613B2 (en) * 2010-06-11 2013-10-22 Intel Corporation Multi-owner deployment of firmware images
EP2588950A4 (de) * 2010-07-01 2015-08-19 Hewlett Packard Development Co Benutzerverwaltungsarchitektur für mehrere umgebungen auf einer datenverarbeitungsvorrichtung
US8239620B2 (en) * 2010-09-27 2012-08-07 Mips Technologies, Inc. Microprocessor with dual-level address translation
WO2012103517A1 (en) * 2011-01-27 2012-08-02 L-3 Communications Corporation Internet isolation for avoiding internet security threats
JP5770840B2 (ja) * 2011-05-16 2015-08-26 株式会社日立製作所 計算機システム及びノード探索方法
JP5365664B2 (ja) * 2011-06-20 2013-12-11 富士通セミコンダクター株式会社 セキュアプロセッサ
US8984478B2 (en) * 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
US9256552B2 (en) * 2011-11-21 2016-02-09 Cisco Technology, Inc. Selective access to executable memory
US9146847B2 (en) * 2011-12-14 2015-09-29 Vmware, Inc. Optimizing for page sharing in virtualized java virtual machines
US8918608B2 (en) * 2012-01-09 2014-12-23 Ravello Systems Ltd. Techniques for handling memory accesses by processor-independent executable code in a multi-processor environment
US8959577B2 (en) * 2012-04-13 2015-02-17 Cisco Technology, Inc. Automatic curation and modification of virtualized computer programs
US10152409B2 (en) * 2012-04-30 2018-12-11 Vmware, Inc. Hybrid in-heap out-of-heap ballooning for java virtual machines
US10063380B2 (en) * 2013-01-22 2018-08-28 Amazon Technologies, Inc. Secure interface for invoking privileged operations
US9503268B2 (en) * 2013-01-22 2016-11-22 Amazon Technologies, Inc. Securing results of privileged computing operations
WO2014118969A1 (ja) * 2013-02-01 2014-08-07 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムのデータ転送制御方法
US9606818B2 (en) * 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US9880773B2 (en) * 2013-03-27 2018-01-30 Vmware, Inc. Non-homogeneous disk abstraction for data oriented applications

Also Published As

Publication number Publication date
WO2014207581A2 (en) 2014-12-31
US20160148001A1 (en) 2016-05-26
GB2530225A (en) 2016-03-16
GB2515536A (en) 2014-12-31
US9690947B2 (en) 2017-06-27
JP6347831B2 (ja) 2018-06-27
CN105453034B (zh) 2018-11-16
GB201600172D0 (en) 2016-02-17
WO2014207581A3 (en) 2015-04-09
GB2530225B (en) 2016-10-19
GB201311430D0 (en) 2013-08-14
CN105453034A (zh) 2016-03-30
JP2016523421A (ja) 2016-08-08

Similar Documents

Publication Publication Date Title
DE112014000965T5 (de) Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System
DE112015004555B4 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
DE102018005180A1 (de) Flexible Bescheinigung von Containern
DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
DE102019113352A1 (de) Technologien für sichere e/a mit speicherverschlüsselungs-engines
DE112018002031T5 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
US11475138B2 (en) Creation and execution of secure containers
DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE102019110309A1 (de) Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen
DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE112011105752T5 (de) Webbasierte Schnittstelle zum Zugriff auf eine Funktion eines Basic Input/Output-Systems
DE112010004885T5 (de) Bereitstellen von Integritätsüberprüfung und -bestätigung in einer verborgenen Ausführungsumgebung
CN103026347A (zh) 多核架构中的虚拟机内存划分
DE102018203482A1 (de) Vertrauliche Verifikation von FPGA-Code
JP2011048661A (ja) 仮想サーバ暗号化システム
CN102609643A (zh) 一种对虚拟机作动态密码学保护与所需的密钥管理方法
DE112018002947T5 (de) Computersystem-software/firmware und prozessoreinheit mit einem sicherheitsmodul
Onarlioglu et al. Privexec: Private execution as an operating system service
DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
DE112021002099T5 (de) Hypervisor-geschützter schlüssel
DE102023202297A1 (de) Wahrung der vertraulichkeit von mandanten in einer cloud-umgebung beim einsatz von sicherheitsdiensten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009440000

Ipc: G06F0015160000