-
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.