-
Die vorliegende Erfindung betrifft im Allgemeinen Datenverarbeitungssysteme und insbesondere ein Verfahren und ein System zur Verarbeitung eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System.
-
HINTERGRUND
-
Die Kundenakzeptanz von öffentlichen Clouds ist auf nicht geschäftskritische Daten beschränkt. Sehr oft stellen die Kerngeschäftsdaten eine wichtige Ressource für einen Kunden dar und die Vertraulichkeit der Daten ist für den geschäftlichen Erfolg von entscheidender Bedeutung. Solange Kunden Cloud-Umgebungen nicht vertrauen, bleibt die Akzeptanz von Clouds durch solche geschäftskritischen Umgebungen äußerst gering. Zu den größten Bedenken der Kunden zählen ein Mangel an Vertrauen in den Cloud-Anbieter und die Sicherheit der Cloud.
-
Vertrauen in den Cloud-Anbieter ist entscheidend, da es einem Administrator des Anbieters möglich ist, vollständig Einblick in die Verarbeitungsprozesse und die Daten des Kunden zu nehmen. Diese mögliche Spionagelücke ist der Grund für die Zurückhaltung vieler Kunden.
-
Vertrauen in die Sicherheit von Clouds bezieht sich auf die Bedrohung in Form einer Hypervisor-Lücke, d. h. wenn ein Angreifer Zugriff auf den Hypervisor erlangt, sind die Verarbeitungsprozesse und die Daten des Kunden wieder gefährdet.
-
Herangehensweisen, um die Vertraulichkeit und den Datenschutz zu gewährleisten, sind derzeit auf die Eingabe/Ausgabe (E/A) beschränkt: Netzwerkverschlüsselung wie Secure Sockets Layer (SSL) kann zur Verschlüsselung von Socketverbindungen verwendet werden und Festplattenverschlüsselungswerkzeuge wie dm-crypt in LINUX können zur Verschlüsselung von Daten auf einer Festplatteneinheit verwendet werden.
-
Ein Trusted Platform Module (TPM) wurde entwickelt, um sicherzustellen, dass die Bootkette zu dem Zeitpunkt gültig ist, zu dem der Kunde seine Verarbeitungsprozesse ausführt, jedoch wird sie nicht in einer Cloud-Umgebung eingesetzt. Auch stellen TPMs keinen Datenschutz sicher, sondern bestenfalls die Zuverlässigkeit der Konfiguration.
-
Selbst wenn sie zum Einsatz kommen, gehen alle diese Technologien nicht das Problem an, dass ein Hypervisor seine Gäste immer vollständig überprüfen kann, wobei es sich bei den Gästen im Allgemeinen um virtuelle Maschinen auf einem von einem Hypervisor gesteuerten System handeln kann, und den Inhalt des Hauptspeichers mit möglicherweise sensiblen Daten des Abbilds, welches in dem Gast ausgeführt wird, lesen kann. Die vorstehend erwähnten Bedenken können von diesen Technologien nicht ausgeräumt werden.
-
US 2011/0302400 A1 beschreibt ein Verfahren, das im Allgemeinen den Empfang eines Abbilds einer virtuellen Maschine (VM) durch einen Trust-Anchor auf einer zentralen Verarbeitungseinheit (CPU) beinhaltet, welche über eine Vielzahl von Verarbeitungskernen verfügt. Beim Empfang wird das VM-Abbild mit Hilfe eines Verschlüsselungsschlüssels für VM-Abbilder verschlüsselt. Das Verfahren beinhaltet auch das Beschaffen des Verschlüsselungsschlüssels für VM-Abbilder und das Konfigurieren eines ersten Verschlüsselungs-/Entschlüsselungsblocks mit dem Verschlüsselungsschlüssel für VM-Abbilder. Das Verfahren beinhaltet auch das Erzeugen eines Hauptspeicher-Sitzungsschlüssels und das Konfigurieren eines zweiten Verschlüsselungs-/Entschlüsselungsblocks mit dem Hauptspeicher-Sitzungsschlüssel. Das Verfahren beinhaltet auch das Abrufen von einer oder mehreren Seiten des VM-Abbilds in einen Hauptspeicher, auf den die Vielzahl der Verarbeitungskerne zugreifen kann. Jede abgerufene Seite wird von dem ersten Verschlüsselungs-/Entschlüsselungsblock mit Hilfe des Verschlüsselungsschlüssels für VM-Abbilder entschlüsselt und anschließend von dem zweiten Verschlüsselungs-/Entschlüsselungsblock mit Hilfe des Hauptspeicher-Sitzungsschlüssels verschlüsselt.
-
KURZDARSTELLUNG
-
Es ist ein Ziel der Erfindung, ein Verfahren bereitzustellen, um Gast-Daten in einer nicht vertrauenswürdigen Cloud-Umgebung sicher zu verarbeiten.
-
Ein weiteres Ziel besteht darin, ein System bereitzustellen, um Gast-Daten in einer nicht vertrauenswürdigen Cloud-Umgebung sicher zu verarbeiten.
-
Diese Ziele werden durch die Merkmale der unabhängigen Ansprü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 vorgeschlagen, das dazu dient, ein Gast-Ereignis in einem von einem Hypervisor gesteuerten System zu verarbeiten, wobei das Verfahren die Schritte aufweist: (i) Durch das Gast-Ereignis Auslösen eines ersten Firmware-Dienstes, der für das Gast-Ereignis spezifisch ist, in einer Firmware, wobei das Gast-Ereignis zu einem Gast und zu einem Gast-Zustand und einem geschützten Gast-Hauptspeicher, auf den nur der Gast und die Firmware zugreifen können, sowie einem Gast-Schlüssel gehört; (ii) durch die Firmware Verarbeiten von zu dem Gast-Ereignis gehörenden Informationen, die Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher aufweisen, und Übergeben von nur einer Teilmenge der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher an einen Hypervisor, wobei die Teilmenge der Informationen so ausgewählt wird, dass sie dem Hypervisor zur Verarbeitung des Gast-Ereignisses genügt; (iii) durch die Firmware Zurückhalten eines Teils der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher, welcher nicht an den Hypervisor gesendet wird; (iv) Verarbeiten des Gast-Ereignisses durch den Hypervisor auf der Grundlage der empfangenen Teilmenge der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher und Senden eines Prozessergebnisses an die Firmware, die einen zweiten Firmware-Dienst auslöst, der für das Gast-Ereignis spezifisch ist; (v) durch die Firmware Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher, welcher nicht an den Hypervisor gesendet wurde, was eine Zustands- und/oder eine Hauptspeicheränderung erzeugt; (vi) Durchführen der Zustands- und/oder der Hauptspeicheränderung, die zu dem Gast-Ereignis gehört, an dem geschützten Gast-Hauptspeicher durch die Firmware.
-
Der erste Firmware-Dienst kann vorteilhafterweise die Schritte (ii) und (iii) aufweisen, nämlich (ii) durch die Firmware Verarbeiten der zu dem Gast-Ereignis gehörenden Informationen, die Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher aufweisen, und Übergeben von nur einer Teilmenge der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher an einen Hypervisor, wobei die Teilmenge der Informationen so ausgewählt wird, dass sie dem Hypervisor zur Verarbeitung des Gast-Ereignisses genügt; und (iii) durch die Firmware Zurückhalten eines Teils der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher, welcher nicht an den Hypervisor gesendet wurde.
-
Der zweite Firmware-Dienst kann vorteilhafterweise die Schritte (v) und (vi) aufweisen, nämlich (v) durch die Firmware Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher, welcher nicht an den Hypervisor gesendet wurde, was eine Zustands- und/oder eine Hauptspeicheränderung erzeugt; und (vi) Durchführen der Zustands- und/oder der Hauptspeicheränderung, die zu dem Gast-Ereignis gehört, an dem geschützten Gast-Hauptspeicher durch die Firmware.
-
Insbesondere befasst man sich mit einem Verfahren zur Verarbeitung eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System, das den Vorteil hat, dass vertrauliche Daten des Gasts geschützt werden. Folglich beschreibt das erfindungsgemäße Verfahren im Allgemeinen das sichere Verwalten virtueller Maschinen, während die Vertraulichkeit des Inhalts von virtuellen Maschinen gegenüber dem Hypervisor gewahrt bleibt, wobei das Verfahren eine oder mehrere VMs, von denen jede mit Ressourcen einschließlich eines verdeckten Hauptspeichers und verdeckter Kontextdaten ausgestattet ist, einen Hypervisor, der VM-Ressourcen und VM-Zustände verwaltet, eine von der CPU unterstützte Virtualisierung, die den eingeschränkten Zugriff des Hypervisors auf den Zustand/Hauptspeicher/Kontext von VMs durch Firmware-Dienste durchsetzt, aufweist.
-
Insbesondere beschreibt das erfindungsgemäße Verfahren die Verarbeitung eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System, wobei Gast-Daten mit einem Gast-Schlüssel verschlüsselt werden, auf den der Hypervisor nicht zugreifen kann, und wobei CPUs und Firmware als vertrauenswürdig erachtet werden und Zugriff auf den Gast-Schlüssel haben, wenn sie im Gast-Kontext ausgeführt werden. Unter der Firmware dieses Kontexts versteht man insbesondere System-Software, die in einer hardwarebasierten Umgebung ausgeführt wird.
-
Wie erwähnt wurde, beschreibt das erfindungsgemäße Verfahren das Ausführen von virtuellen Maschinen aus einem geschützten Hauptspeicher, so dass auf den geschützten Hauptspeicher, der zu einer bestimmten virtuellen Maschine gehört, selbst dann nicht durch eine weitere virtuelle Maschine zugegriffen werden kann, wenn der Hypervisor einen solchen Hauptspeicherzugriff zulassen würde. Auch verhindert das Verfahren, dass ein Hypervisor seine Gäste, d. h. virtuelle Maschinen/Abbilder, immer vollständig überprüfen und den Inhalt des Hauptspeichers mit möglicherweise sensiblen Daten lesen kann. Der Vorteil ist, dass das beschriebene Verfahren keine Prozesse wie zum Beispiel die Authentifizierung eines Trust-Anchors mit einem Schlüsseldienst (des Kunden) verwendet. Es kann mit Unterbrechungen oder Abfangoperationen des Hypervisors umgehen. Das beschriebene Verfahren erfordert kein Bestätigungsmodul (z. B. ein TPM) auf der CPU.
-
In einer vorteilhaften Ausführungsform, insbesondere, um den Zugriff auf eine Seite des Hauptspeichers für den Hypervisor zu ermöglichen, kann das Verfahren des Weiteren aufweisen, dass (i) der Hypervisor den Zugriff auf eine Seite des geschützten Gast-Hauptspeichers von Firmware aus anfordert; (ii) die Firmware den Zugriff auf diese Seite für den Gast sperrt; (iii) die Firmware diese Seite mit dem Gast-Schlüssel verschlüsselt; und (iv) die Firmware den Zugriff auf diese Seite für den Hypervisor ermöglicht.
-
Insbesondere, um den Zugriff auf eine Seite des Hauptspeichers für einen Gast zu ermöglichen, kann das Verfahren des Weiteren vorteilhafterweise aufweisen, dass (i) der Hypervisor der Firmware eine verschlüsselte Seite bereitstellt; (ii) die Firmware den Zugriff auf diese Seite für den Hypervisor sperrt; (iii) die Firmware diese Seite entschlüsselt; und (iv) die Firmware den Zugriff auf diese Seite für den Gast ermöglicht.
-
Gemäß den vorstehend beschriebenen Ausführungsformen kann das Verfahren, insbesondere, um die Entschlüsselung einer Seite zuzulassen, vorteilhafterweise aufweisen, dass (i) die Firmware einen Integritätswert der Seite, die verschlüsselt und dem Hypervisor zugänglich gemacht werden soll, berechnet; (ii) der Hypervisor der Firmware eine verschlüsselte Seite bereitstellt, die zu den geschützten Seiten einer virtuellen Maschine hinzugefügt werden soll; und (iii) die Firmware das Hinzufügen der entschlüsselten Seite zu den geschützten Seiten der virtuellen Maschine nur zulässt, wenn der Integritätswert mit der Seite übereinstimmt.
-
Des Weiteren kann das Verfahren, insbesondere für eine sichere Bereitstellung und Ausführung einer virtuellen Maschine, vorteilhafterweise die Schritte (i) des Ausstattens des Gasts mit dem Gast-Schlüssel, der mit dem öffentlichen Schlüssel verschlüsselt wird, welcher zu einem privaten Schüssel des von dem Hypervisor gesteuerten Systems gehört, um ihn in den Schlüsselspeicher des von dem Hypervisor gesteuerten Systems zu überfragen; (ii) des Ausstattens des von dem Hypervisor gesteuerten Systems mit dem privaten Schlüssel, der in dem von dem Hypervisor gesteuerten System gespeichert und zur Entschlüsselung des verschlüsselten Gast-Schlüssels verwendet wird, (iii) des Verwendens des Gast-Schlüssels zur Verschlüsselung und Entschlüsselung der Gast-Daten, wenn diese aus dem oder in den geschützten Gast-Hauptspeicher übertragen werden, aufweisen. Folglich kann eine sichere Bereitstellung und Ausführung einer virtuellen Maschine in einem von einem Hypervisor gesteuerten System ermöglicht werden.
-
Zur Verschlüsselung/Entschlüsselung von Gast-Daten kann das von dem Hypervisor gesteuerte System ein Schlüsselpaar bekommen; sein privater Schlüssel kann in der vertrauenswürdigen Firmware oder Hardware gespeichert und zur Entschlüsselung von Gast-Schlüsseln verwendet werden. Der öffentliche Schlüssel kann zur Verschlüsselung (und Übertragung) des privaten Gast-Schlüssels an die vertrauenswürdige Firmware oder Hardware verwendet werden, in der der Gast-Schlüssel gespeichert und sicher verwendet werden kann.
-
Der Gast kann ebenfalls einen Schlüssel erzeugen. Der Gast-Schlüssel kann mit dem öffentlichen Schlüssel des von dem Hypervisor gesteuerten Systems verschlüsselt werden, bevor er an das von dem Hypervisor gesteuerte System übertragen wird. Die vertrauenswürdige Firmware oder Hardware des von dem Hypervisor gesteuerten Systems kann diesen Gast-Schlüssel verwenden, um den Hauptspeicher des Gasts zu verschlüsseln (aber nur, wenn der Gast im Kontext der CPU-Virtualisierungsfunktion ausgeführt wird). Der Gast-Schlüssel kann auch verwendet werden, um Abbilder von dem Gast in einer Cloud-Umgebung bereitzustellen.
-
Vorteilhafterweise, insbesondere für die Erzeugung und Bereitstellung von Boot-Abbildern, kann das erfindungsgemäße Verfahren des Weiteren die Schritte (i) des Erzeugens eines Boot-Abbilds durch einen Client oder Kunden; (ii) des Verschlüsselns des Boot-Abbilds mit dem Gast-Schlüssel; (iii) des Übertragens des verschlüsselten Boot-Abbilds an eine Boot-Platte; (iv) des Ladens des verschlüsselten Boot-Abbilds eines Gasts durch den Hypervisor in den Gast-Hauptspeicher; (v) des Umwandelns des Gast-Hauptspeichers (23) in den geschützten Gast-Hauptspeicher (22); (vi) des Entschlüsselns des Inhalts des geschützten Gast-Hauptspeichers; (vii) des Startens einer Ausführung eines Gasts als eine virtuelle Maschine auf CPU-Ebene, wobei der Gast von einem Bereich eines verschlüsselten Hauptspeichers, einem Bereich eines unverschlüsselten Hauptspeichers und einem verschlüsselten Gast-Schlüssel angegeben wird, aufweisen. Der Gast-Schlüssel darf nur dem Client beziehungsweise dem Gast und der vertrauenswürdigen Firmware oder Hardware im Gast-Kontext bekannt sein und für den Transport an die vertrauenswürdige Firmware oder Hardware kann der Gast-Schlüssel mit dem öffentlichen Schlüssel verschlüsselt werden, der zu dem privaten Schlüssel des von dem Hypervisor gesteuerten Systems gehört. Er braucht einem Cloud-Betreiber oder dem Hypervisor nicht bekannt zu sein.
-
Der Hypervisor kann den Inhalt eines Boot-Abbilds von der Boot-Platte in den Gast-Hauptspeicher ohne Verschiebung einlesen, wobei der Inhalt der Boot-Platte einen Kernel, Parameter, eine anfängliche RAM-Platte aufweist. Das Laden des Boot-Abbilds kann auch das Installieren eines herkömmlich verschlüsselten (z. B. über dm-crypt, ein gewöhnlich angewandtes LINUX-Verschlüsselungstool) Stammdateisystems aufweisen. Des Weiteren kann der Inhalt der Boot-Platte eine Umgebung zur Ausführung eines Kernels (kexec-Umgebung) aufweisen, die einen neuen Kernel von einer herkömmlich verschlüsselten Ziel-Booteinheit lädt.
-
Die CPU-Architektur kann so erweitert werden, dass sie ein klar strukturiertes Mittel für den Zugriff auf einen Gast-Zustand bereitstellt, wobei Zugriffsverfahren den Hypervisor nur mit den für die Ausführung seiner Aufgaben (z. B. Verarbeitung von Abfangoperationen (Traps)) notwendigen Informationen versorgen dürfen. Auf den Gast-Hauptspeicher und die Registerdatei kann möglicherweise jedoch nicht von außerhalb dieser Zugriffsverfahren zugegriffen werden. Folglich kann die Vertraulichkeit der Daten des Gasts geschützt werden, da der Hypervisor einen Gast-Zustand oder Gast-Daten nicht vollständig lesen kann. Auf die Registerdatei kann der Hypervisor möglicherweise nicht direkt zugreifen, sie kann jedoch weggespeichert und durch einen Hypervisor-Dienst wiederhergestellt werden. Andere Kontexte als der Gast selbst können nur den verschlüsselten Inhalt des Hauptspeichers sehen, da der Hypervisor den unverschlüsselten Gast-Hauptspeicher nicht sehen kann. Ein Bereich des Gast-Hauptspeichers kann unverschlüsselt und ungeschützt bleiben, um Daten mit dem Hypervisor oder E/A-Einheiten auszutauschen. Ein E/A-Arbeitsbereich kann sich außerhalb des geschützten Hauptspeicherbereichs des Gasts befinden.
-
In einer vorteilhaften Ausführungsform kann das Verfahren, insbesondere für eine Interaktion zwischen der virtuellen Maschine und dem Hypervisor, des Weiteren die Schritte (i) des Belassens des Bereichs des geschützten Gast-Hauptspeichers oder von Registern, der beziehungsweise die zu dem Gast-Ereignis gehören, auf den/die der Hypervisor nicht zugreifen kann, in entschlüsselter Form; (ii) des Erweiterns einer Virtualisierungsfunktion des von dem Hypervisor gesteuerten Systems um Zugriffsverfahren auf bestimmte Gast-Daten, die zu dem Gast-Ereignis gehören, aufweisen. Dieser Schritt kann für einen Betrieb des Hypervisors vorteilhaft sein, darf aber keine Daten oder Code (außer den Grund und relevante Parameter für Abfang-Anweisungen) des Gasts offenlegen und es ermöglichen, die Ausführung des Gast-Ereignisses fortzusetzen. Manche Abfangoperationen können vollständig gesperrt werden, da sie gegebenenfalls nur bedeutsam (z. B. ”Single Stepping”) sind, wenn ein Hypervisor vollen Zugriff auf einen Gast hat.
-
Vorteilhafterweise kann das Verfahren, insbesondere für einen E/A-Prozess eines Gasts, des Weiteren die Schritte (i) des Angebens eines nicht geschützten Hauptspeicherbereichs für E/A-Pufferspeicher und E/A-Steuerstrukturen des Gasts außerhalb des Bereichs des geschützten Gast-Hauptspeichers; (ii) des Startens des E/A-Prozesses durch den Gast unter Verwendung dieses nicht geschützten Bereichs des Gast-Hauptspeichers; (iii) des Erzeugens eines Gast-Ereignisses durch die Virtualisierungsfunktion des von dem Hypervisor gesteuerten Systems; (iv) des Lesens eines Grunds für das Gast-Ereignis und des Durchführens des E/A-Prozesses durch den Hypervisor aufweisen. Indem man die E/A-Pufferspeicher außerhalb des geschützten Gast-Hauptspeichers anordnet, können der Hypervisor und E/A-Einheiten Zugriff auf E/A-Steuerstrukturen und Daten haben.
-
Der Hypervisor kann Seiten auf einer Auslagerungseinheit, die dem Hypervisor gehört, speichern, wo der Seiteninhalt weiterhin verschlüsselt sein kann. Die Virtualisierungsfunktion der CPU kann in den Fällen eine Abfangoperation durchführen, in denen der Hypervisor einen Grund für die Abfangoperation (z. B. ”Seitenfehler”) sowie eine Gast-Adresse lesen kann. Der Hypervisor kann dann die Seite zurück an dieselbe Gast-Adresse stellen, wodurch die Integrität der Daten des Gasts gewahrt bleibt, wenn Verschlüsselungsergebnisse nichtverschiebbar bleiben. Daraufhin kann der Hypervisor den Gast neu starten.
-
In einer vorteilhaften Ausführungsform kann das Verfahren, insbesondere, um Vertrauen in das beschriebene Verfahren herzustellen, des Weiteren das Prüfen der Integrität eines Gasts mit einem Prüfprozess, der den Gast-Schlüssel kennt, aufweisen, wobei der Prüfprozess die Schritte (i) des Lesens des Inhalts eines Hauptspeichers in Klartext aus dem geschützten Gast-Hauptspeicher durch den Gast, wobei ein beliebiger Bereich des geschützten Gast-Hauptspeichers über einen sicheren Übertragungspfad an den Prüfprozess übertragen wird, (ii) des Anforderns desselben Hauptspeicherbereichs des geschützten Gast-Hauptspeichers von dem Hypervisor und des Übertragens des Hauptspeicherbereichs an den Prüfprozess; (iii) des Vergleichens des von dem Gast erhaltenen Inhalts des Hauptspeichers mit dem Ergebnis der Entschlüsselung des von dem Hypervisor erhaltenen Inhalts des Hauptspeichers; (iv) des Lieferns eines Vergleichsergebnisses in Abhängigkeit von dem Inhalt der beiden Hauptspeicherbereiche; (v) des Zurücksendens des Ergebnisses des Prüfprozesses, das positiv ist, wenn das Vergleichsergebnis den Wert null hat, und das andernfalls negativ ist, aufweist. Diese Verfahrensschritte können besonders vorteilhaft sein, da der Hypervisor nicht in der Lage ist, Code oder Daten zu lesen/einzufügen, da er nicht mit dem Schlüssel für die Verschlüsselung/Entschlüsselung des Gast-Hauptspeichers ausgestattet ist.
-
Gemäß einem weiteren vorteilhaften Aspekt der Erfindung wird ein Datenverarbeitungsprogramm zur Ausführung in einem Datenverarbeitungssystem vorgeschlagen, das eine Ausführungsart eines Anweisungssatzes zur Durchführung eines Verfahrens, wie es vorstehend beschrieben wurde, aufweist, wenn das Datenverarbeitungsprogramm auf einem Computer ausgeführt wird.
-
Des Weiteren wird ein vorteilhaftes Computerprogrammprodukt vorgeschlagen, das einen von einem Computer verwendbaren Datenträger aufweist, der ein von einem Computer lesbares Programm enthält, wobei das von dem Computer lesbare Programm, wenn es auf einem Computer ausgeführt wird, den Computer veranlasst, ein Verfahren zur Verarbeitung eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System durchzuführen, wobei das Verfahren die Schritte aufweist: (i) Durch das Gast-Ereignis Auslösen eines ersten Firmware-Dienstes, der für das Gast-Ereignis spezifisch ist, in einer Firmware, wobei das Gast-Ereignis zu einem Gast und zu einem Gast-Zustand und einem geschützten Gast-Hauptspeicher, auf den nur der Gast und die Firmware zugreifen können, sowie einem Gast-Schlüssel gehört; (ii) durch die Firmware Verarbeiten von zu dem Gast-Ereignis gehörenden Informationen, die Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher aufweisen, und Übergeben von nur einer Teilmenge der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher an einen Hypervisor, wobei die Teilmenge der Informationen so ausgewählt wird, dass sie dem Hypervisor zur Verarbeitung des Gast-Ereignisses genügt; (iii) durch die Firmware Zurückhalten eines Teils der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher, welcher nicht an den Hypervisor gesendet wird; (iv) Verarbeiten des Gast-Ereignisses durch den Hypervisor auf der Grundlage der empfangenen Teilmenge der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher und Senden eines Prozessergebnisses an die Firmware, die einen zweiten Firmware-Dienst auslöst, der für das Gast-Ereignis spezifisch ist; (v) durch die Firmware Verarbeiten des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen über den Gast-Zustand und den geschützten Gast-Hauptspeicher, welcher nicht an den Hypervisor gesendet wurde, was eine Zustands- und/oder eine Hauptspeicheränderung erzeugt; (vi) Durchführen der Zustands- und/oder der Hauptspeicheränderung, die zu dem Gast-Ereignis gehört, an dem geschützten Gast-Hauptspeicher durch die Firmware.
-
Wie der Fachmann verstehen wird, können Aspekte der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogrammprodukt ausgebildet sein. Folglich können Aspekte der vorliegenden Erfindung die Form einer ganz in Hardware realisierten Ausführungsform, einer ganz in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte in sich vereint, welche hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können.
-
Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das sich auf einem oder mehreren von einem Computer lesbaren Datenträger(n) befindet, auf dem beziehungsweise denen von einem Computer lesbarer Programmcode ausgebildet ist.
-
Jede beliebige Kombination aus einem oder mehreren von einem Computer lesbaren Datenträgern kann verwendet werden. Der von einem Computer lesbare Datenträger kann ein von einem Computer lesbarer Signaldatenträger oder ein von einem Computer lesbares Speichermedium sein. Ein von einem Computer lesbares Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für das von einem Computer lesbare Speichermedium würden folgende gehören: 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 Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination des Vorstehenden. In Zusammenhang mit diesem Schriftstück kann ein von einem Computer lesbares Speichermedium jedes physisch greifbare Medium sein, das ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
-
Ein von einem Computer lesbarer Signaldatenträger kann ein weitergeleitetes Datensignal mit darin enthaltenem, von einem Computer lesbarem Programmcode, beispielsweise im Basisband oder als Teil einer Trägerwelle, enthalten. Solch ein weitergeleitetes Signal kann eine beliebige Form von vielen verschiedenen Formen einschließlich elektromagnetischer, optischer Formen oder jede beliebige geeignete Kombination dieser Formen, ohne auf diese beschränkt zu sein, annehmen. Bei einem von einem Computer lesbaren Signaldatenträger kann es sich um jeden beliebigen von einem Computer lesbaren Datenträger handeln, der kein von einem Computer lesbares Speichermedium ist und der ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit übertragen, weiterleiten oder transportieren kann.
-
Auf einem von einem Computer lesbaren Datenträger enthaltener Programmcode kann mittels eines beliebigen geeigneten Mediums einschließlich eines drahtlosen Mediums, eines drahtgebundenen Mediums, eines Lichtwellenleiterkabels, mittels Hochfrequenz (HF) usw. oder mittels einer beliebigen zweckmäßigen Kombination des Vorstehenden, ohne darauf beschränkt zu sein, übertragen werden.
-
Computer-Programmcode zur Durchführung von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Java, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sein. Die Ausführung des Programmcodes kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server erfolgen. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden sein oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Dienstanbieters) hergestellt werden.
-
Aspekte der vorliegenden Erfindung werden nachstehend mit Bezug auf Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Blockschaubildern mittels Anweisungen eines Computerprogramms realisiert werden können. Diese Anweisungen eines Computerprogramms können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
-
Diese Anweisungen eines Computerprogramms können auch auf einem von einem Computer lesbaren Datenträger gespeichert werden, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem von einem Computer lesbaren Datenträger gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, der Anweisungen enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Block oder den Blöcken der Blockschaubilder angegeben ist.
-
Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Computer ausgeführten Prozess so zu erzeugen, dass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Block oder den Blöcken der Blockschaubilder angegeben sind.
-
Aufgrund eines weiteren Aspekts der Erfindung wird ein Datenverarbeitungssystem zur Ausführung eines Datenverarbeitungsprogramms vorgeschlagen, das Teile von Software-Code aufweist, um ein vorstehend beschriebenes Verfahren durchzuführen.
-
KURZE BESCHREIBUNG DER DIVERSEN ANSICHTEN DER ZEICHNUNGEN
-
Die vorliegende Erfindung, zusammen mit den vorstehenden sowie weiteren Aufgaben und Vorteilen, lässt sich am besten anhand der folgenden ausführlichen Beschreibung der Ausführungsformen, jedoch nicht auf die Ausführungsformen beschränkt, verstehen, wobei in:
-
1 ein Stapel von Komponenten in einem von einem Hypervisor gesteuerten System nach dem Stand der Technik gezeigt ist;
-
2 ein allgemeiner Überblick über ein Verfahren für eine sichere Ausführung von Gästen in einer unsicheren Umgebung gemäß einer Ausführungsform der Erfindung gegeben ist;
-
3 eine Systemübersicht über ein von einem Hypervisor gesteuertes System für eine sichere Ausführung von Gästen in einer unsicheren Umgebung gemäß einer Ausführungsform der Erfindung gegeben ist;
-
4 ein generischer Ablaufplan zur Ausführung eines sicheren Gasts gemäß einer Ausführungsform der Erfindung gezeigt ist;
-
5 ein ausführlicher Ablaufplan für die Verarbeitung von Abfangoperationen mit einer Ausführung eines sicheren Gasts gemäß einer Ausführungsform der Erfindung gezeigt ist;
-
6 eine beispielhafte Ausführungsform eines Datenverarbeitungssystems zur Durchführung eines erfindungsgemäßen Verfahrens gezeigt ist.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In den Zeichnungen wird auf gleiche Elemente mit gleichen Bezugszahlen Bezug genommen. Bei den Zeichnungen handelt es sich lediglich um schematische Darstellungen, die keine bestimmten Parameter der Erfindung darstellen sollen. Darüber hinaus sollen die Zeichnungen nur typische Ausführungsformen der Erfindung zeigen und sind folglich nicht als den Umfang der Erfindung einschränkend zu betrachten.
-
1 zeigt einen Stapel von Komponenten in einem von einem Hypervisor gesteuerten System nach dem Stand der Technik. Die verschiedenen Komponenten weisen einen oder mehrere Gäste 20 auf, die als eine virtuelle Maschine realisiert sind, welche auf einem von einem Hypervisor gesteuerten System als ein virtuelles Serversystem ausgeführt wird, das aus Firmware 70, Hardware 72 in Form von z. B. einer oder mehrerer CPUs, Hauptspeicher sowie E/A-Einheiten 74 für das Storage Networking besteht. Ein Hypervisor 30 verwaltet die Ressourcen der Hardware 72 und die E/A-Einheiten 74 und weist entsprechende Teile dieser Ressourcen den Gästen 20 zu. In einer Cloud-Umgebung wird die Gast-VM 20 von einem Client oder Kunden betrieben, wohingegen der Hypervisor 30 von einem Cloud-Anbieter betrieben wird, welchen der Client möglicherweise als nicht vertrauenswürdig erachtet. Die Firmware 70 für das virtuelle Serversystem wird ebenso wie die Hardware 72 von einem Hardware-Anbieter hergestellt, der als vertrauenswürdig erachtet werden kann. Es ist ein Ziel der Erfindung, ein Verfahren bereitzustellen, um die Gast-VM 20 in einer Cloud-Umgebung sicher zu verarbeiten, in der der Cloud-Anbieter möglicherweise nicht vertrauenswürdig ist.
-
In einer Ausführungsform kann der erste Firmware-Dienst vorteilhafterweise mindestens einen der Schritte (ii) und (iii) der vorstehenden Beschreibung aufweisen, wobei die Firmware 70 im Schritt (ii) zu dem Gast-Ereignis gehörende Informationen verarbeitet, die Informationen über den Gast-Zustand 52 und den geschützten Gast-Hauptspeicher 22 aufweisen, und nur eine Teilmenge der Informationen über den Gast-Zustand 52 und den geschützten Gast-Hauptspeicher 22 in verschlüsselter Form an einen Hypervisor 30 übergibt, wobei die Teilmenge der Informationen so ausgewählt wird, dass sie dem Hypervisor 30 zur Verarbeitung des Gast-Ereignisses genügt. Der Schritt (iii) weist das Zurückhalten eines Teils der Informationen über den Gast-Zustand 52 und den geschützten Gast-Hauptspeicher 22 durch die Firmware 70 auf, welcher nicht an den Hypervisor 30 gesendet wurde.
-
In einer Ausführungsform kann der zweite Firmware-Dienst vorteilhafterweise mindestens einen der Schritte (v) und (vi) der vorstehenden Beschreibung aufweisen, wobei der Schritt (v) das Verarbeiten durch die Firmware 70 des empfangenen Prozessergebnisses zusammen mit dem Teil der Informationen über den Gast-Zustand 52 und den geschützten Gast-Hauptspeicher 22 aufweist, welcher nicht an den Hypervisor 30 gesendet wurde, was eine Zustands- und/oder eine Hauptspeicheränderung erzeugt; und wobei im Schritt (vi) die Zustands- und/oder die Hauptspeicheränderung, die zu dem Gast-Ereignis gehört, an dem geschützten Gast-Hauptspeicher 22 durch die Firmware 70 durchgeführt wird.
-
2 gibt einen allgemeinen Überblick über ein Verfahren für eine sichere Ausführung von Gästen 20 in einer unsicheren Umgebung eines von einem Hypervisor gesteuerten Systems 10 gemäß einer Ausführungsform der Erfindung. Dies kann analog zu einer sicheren Sockelschicht erreicht werden, bei der der sichere Betrieb (d. h. die Nachrichtenübertragung) auch über ein unsicheres Medium erreicht wird. Ein Hypervisor 30, der als nicht vertrauenswürdig erachtet wird, kann zur selben Zeit und in demselben System sichere Gäste 20 sowie unsichere Gäste 40 steuern. Das System 10, das den Hypervisor 30 und die Gäste 20, 40 auf einer CPU 216 ausführt, verwaltet für jeden sicheren Gast 20 einen bestimmten Kontext 42, für jeden unsicheren Gast 40 einen bestimmten Kontext 44 beziehungsweise für jeden Hypervisor 30 einen Kontext 46. Jeder Kontext 42 eines sicheren Gasts 20 enthält einen Gast-Schlüssel 24, der zu dem entsprechenden sicheren Gast 20 gehört. Der Hauptspeicher eines jeden sicheren Gasts 20 wird gegen Zugriffsform-Code geschützt, der in einem Kontext ausgeführt wird, welcher nicht zu dem sicheren Gast 20 gehört. Wenn auf den Gast-Hauptspeicher 23 aus einem Kontext zugegriffen wird, der nicht zu dem sicheren Gast 20 gehört, wird der Gast-Hauptspeicher 23 mit dem Gast-Schlüssel 24 des entsprechenden sicheren Gasts 20 verschlüsselt. Diese Gäste 20, 40 sowie der Hypervisor 30 können auf dem System 10 in ihren eigenen Kontexten 42, 44, 46 ausgeführt werden. Auch auf dem System 10 wird 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 verwaltet werden. Wenn eine CPU 216 in einem Gast-Kontext 42 eines sicheren Gasts 20 ausgeführt wird, hat sie Zugriff auf den Gast-Schlüssel 24 dieses Gasts 20, um Daten von diesem Gast 20 zu verschlüsseln und zu entschlüsseln. Überdies tritt eine CPU 216 nur in einen Kontext eines Gasts 20, 40 oder eines Hypervisors 30 ein, wenn sie Code von diesem Gast 20, 40 beziehungsweise von diesem Hypervisor 30 verarbeitet oder wenn sie einen Firmware-Dienst zur Unterstützung von diesem Gast 20, 40 beziehungsweise von diesem Hypervisor 30 ausführt. Die Firmware 70 weist auch einen privaten Schlüssel 26 des Systems 10 auf.
-
3 zeigt eine Systemübersicht über ein von einem Hypervisor gesteuertes System 10 für eine sichere Ausführung von Gästen 20 in einer unsicheren Umgebung gemäß einer Ausführungsform der Erfindung. In der folgenden Beschreibung genannte Zahlen, die in 3 nicht gezeigt sind, beziehen sich auf Objekte der 1 und 2.
-
Zunächst werden generische Funktionen einer Ausführung von Gästen 20 in einer unsicheren Umgebung gemäß einer Ausführungsform der Erfindung mit Hilfe der Übersichtsdarstellung in 3 erklärt, bevor das Verhalten des von dem Hypervisor gesteuerten Systems zur Verarbeitung von Unterbrechungen oder Abfangoperationen aufgrund eines Gast-Ereignisses erörtert wird.
-
Die Übersichtsdarstellung in 3 zeigt zwei Gäste 20 mit dem Namen 'Gast 1' und 'Gast 2', die von einem Hypervisor 30 gesteuert werden, wobei alle Komponenten auf einer Firmware 70 ausgeführt werden, die eine mit einem Hauptspeicher 230 verbundene CPU 216 aufweist. Die CPU 216 weist Zugriffsmittel für einen Zustand des Gast-Kontexts der Virtualisierungsfunktion der CPU auf, wobei der Zugriff auf der Grundlage des Kontexts gesteuert wird, in dem sich die CPU 216 befindet.
-
Die Firmware 70 führt eine Kontextverwaltungsfunktion 50 aus, die die verschiedenen Kontexte steuert, unter denen die Gäste 20 wie auch der Hypervisor 30 betrieben werden. Die Kontextverwaltungsfunktion 50 löst Hauptspeicher-Zugriffsoperationen durch die CPU 216 aus, in der Gast-Zustandsfunktionen 52, ein Hauptspeicher-Zugriffsschutz 54 sowie eine Hauptspeicher-Zugriffslogik 60 realisiert sind. Die Kontextverwaltungsfunktion 50 steuert die Ausführung der Gäste 20 auf dem Hypervisor 30, wie von der Operation 80 angegeben ist.
-
Kurz gesagt, das erfindungsgemäße Verfahren zur Verarbeitung eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System 10 weist die folgenden Schritte auf, die in 3 gezeigt sind. Auf diese Schritte wird in der Beschreibung Bezug genommen. Als Erstes löst ein Gast-Ereignis, das in der in 3 gezeigten Ausführungsform seinen Ursprung am Gast 1 hat, in der Firmware 70 einen ersten Firmware-Dienst aus, der für das Gast-Ereignis spezifisch ist, wobei das Gast-Ereignis zu dem Gast 20 und zu einem Gast-Zustand 52 und einem geschützten Gast-Hauptspeicher 22, auf den nur der Gast 20 und die Firmware 70 zugreifen können, sowie einem Gast-Schlüssel 24 gehört. Dies wird von der Kontextverwaltungsfunktion 50 gesteuert, indem der von der Operation 82 angegebene Gast-Kontext 42 gelesen wird. Als Zweites verarbeitet die Firmware 70 zu dem Gast-Ereignis gehörende Informationen, die Informationen über den Gast-Zustand 52 und den geschützten Gast-Hauptspeicher 22 aufweisen, und übergibt nur eine Teilmenge der Informationen über den Gast-Zustand 52 und den geschützten Gast-Hauptspeicher 22 an den Hypervisor 30. Die Teilmenge der Informationen wird so ausgewählt, dass sie dem Hypervisor 30 zur Verarbeitung des Gast-Ereignisses genügt. Als Drittes hält die Firmware 70 einen Teil der Informationen über den Gast-Zustand 52 und den geschützten Gast-Hauptspeicher 22 zurück, welcher nicht an den Hypervisor 30 gesendet wurde. Als Viertes verarbeitet der Hypervisor 30 das Gast-Ereignis auf der Grundlage der empfangenen Teilmenge der Informationen über den Gast-Zustand 52 und den geschützten Gast-Hauptspeicher 22 und sendet ein Prozessergebnis an die Firmware 70, die einen zweiten Firmware-Dienst auslöst, der für das Gast-Ereignis spezifisch ist. Als Fünftes verarbeitet die Firmware 70 das empfangene Prozessergebnis zusammen mit dem Teil der Informationen über den Gast-Zustand 52 und den geschützten Gast-Hauptspeicher 22, welcher nicht an den Hypervisor 30 gesendet wurde, was eine Zustands- und/oder eine Hauptspeicheränderung erzeugt. Daher setzt die Kontextverwaltungsfunktion 50 den Gast-Zustand 52 in der CPU 216 mittels der Operation 84, wobei Informationen an eine Hauptspeicher-Zugriffsschutzfunktion 54 und schließlich an eine Hauptspeicher-Zugriffslogik 60, die den Zugriff auf den Hauptspeicher 230 steuert, weitergegeben werden. Als Sechstes führt die Firmware 70 die Zustands- und/oder die Hauptspeicheränderung, die zu dem Gast-Ereignis gehört, an dem geschützten Gast-Hauptspeicher 22 durch. Dies geschieht durch die Hauptspeicherzugriffe 86, wobei ein Hauptspeicherzugriff 86 nur auf den geschützten Hauptspeicher 22 des jeweiligen Gasts 20 und nicht auf den Hauptspeicher eines Gasts zulässig ist, welcher nicht der Urheber des Gast-Ereignisses ist, wie von der Operation 88 angegeben ist.
-
Der Hypervisor 30 hat nur beschränkten Zugriff auf Daten und/oder Code im Hauptspeicher 230, da es Bereiche gibt, die mit einem Gast-Schlüssel 24 verschlüsselt sind, und andere Bereiche, die für den Hypervisor 30 sichtbar sind. Des Weiteren gibt es Bereiche des geschützten Gast-Hauptspeichers 22, die von der Firmware 70 geschützt werden und auf die der Hypervisor 30 ebenfalls nicht zugreifen kann.
-
Im Folgenden wird die Realisierung der Verarbeitung von Unterbrechungen oder Abfangoperationen mit Hilfe von Firmware-Diensten als Dienste, die in der Firmware 70 ausgeführt werden, gemäß einer Ausführungsform der Erfindung erklärt. In einer kurzen Beschreibung weist die Verarbeitung eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System 10 die Schritte auf: (i) Auslösen eines ersten Firmware-Dienstes; (ii) durch die Firmware 70 Verarbeiten von Informationen, die zu dem Gast-Ereignis gehören, Übergeben von nur einer Teilmenge der Informationen an einen Hypervisor 30; (iii) durch die Firmware Zurückhalten eines Teils der Informationen, welcher nicht an den Hypervisor 30 gesendet wird; (iv) Auslösen eines zweiten Firmware-Dienstes durch den Hypervisor 30; (v) Erzeugen einer Änderung an dem Gast-Zustand 52 und/oder an dem geschützten Gast-Hauptspeicher 22 durch die Firmware; (vi) Durchführen der Änderung an dem Gast-Zustand 52 und/oder dem geschützten Gast-Hauptspeicher 22 durch die Firmware.
-
Das Ermöglichen des Zugriffs für den Hypervisor 30 auf eine Seite des Hauptspeichers durch die Firmware 70 weist auf, dass (i) der Hypervisor 30 den Zugriff auf eine Seite des geschützten Gast-Hauptspeichers 22 von Firmware 70 aus anfordert; (ii) die Firmware 70 den Zugriff auf diese Seite für den Gast 20 sperrt; (iii) die Firmware 70 diese Seite mit dem Gast-Schlüssel 24 verschlüsselt; und (iv) die Firmware 70 den Zugriff auf diese Seite für den Hypervisor 30 ermöglicht.
-
Des Weiteren weist das Ermöglichen des Zugriffs auf eine Seite des Hauptspeichers für einen Gast 20 durch die Firmware 70 auf, dass (i) der Hypervisor 30 der Firmware 70 eine verschlüsselte Seite bereitstellt; (ii) die Firmware 70 den Zugriff auf diese Seite für den Hypervisor 30 sperrt; (iii) die Firmware 70 diese Seite entschlüsselt; und (iv) die Firmware 70 den Zugriff auf diese Seite für den Gast 20 ermöglicht.
-
Das Zulassen der Entschlüsselung durch die Firmware 70 weist des Weiteren auf, dass (i) die Firmware 70 einen Integritätswert der Seite, die verschlüsselt und dem Hypervisor 30 zugänglich gemacht werden soll, berechnet, (ii) der Hypervisor 30 der Firmware 70 eine verschlüsselte Seite bereitstellt, die zu den geschützten Seiten einer virtuellen Maschine hinzugefügt werden soll; und (iii) die Firmware 70 das Hinzufügen der entschlüsselten Seite zu den geschützten Seiten der virtuellen Maschine nur zulässt, wenn der Integritätswert mit der Seite übereinstimmt.
-
Eine sichere Bereitstellung und Ausführung eines Gasts 20 weist das Ausstatten des Gasts mit dem Gast-Schlüssel 24, der mit dem öffentlichen Schlüssel 32 verschlüsselt wird, welcher zu einem privaten Schüssel 26 des von dem Hypervisor gesteuerten Systems 10 gehört, um ihn in den Schlüsselspeicher 28 des von dem Hypervisor gesteuerten Systems 10 zu übertragen; das Ausstatten des von dem Hypervisor gesteuerten Systems 10 mit dem privaten Schlüssel 26, der in dem von dem Hypervisor gesteuerten System 10 gespeichert wird und zur Entschlüsselung des verschlüsselten Gast-Schlüssels 24 verwendet wird; das Verwenden des Gast-Schlüssels 24 zur Verschlüsselung und Entschlüsselung der Gast-Daten, wenn diese aus dem oder in den geschützten Gast-Hauptspeicher 22 übertragen werden, auf.
-
Ein Prozess zur Erzeugung und Bereitstellung eines Boot-Abbilds umfasst das Erzeugen eines Boot-Abbilds durch einen Client oder Kunden für den Gast 20; das Verschlüsseln des Boot-Abbilds mit dem Gast-Schlüssel 24; das Übertragen des verschlüsselten Boot-Abbilds an eine Boot-Platte; das Laden des verschlüsselten Boot-Abbilds eines Gasts 20 durch den Hypervisor 30 in den Gast-Hauptspeicher 23; das Umwandeln des Gast-Hauptspeichers 23 in den geschützten Gast-Hauptspeicher 22; das Entschlüsseln des Inhalts des geschützten Gast-Hauptspeichers 22; das Starten einer Ausführung eines Gasts 20 als eine virtuelle Maschine.
-
Eine Interaktion zwischen dem Gast 20 und dem Hypervisor 30 umfasst des Weiteren einen Bereich des geschützten Gast-Hauptspeichers 22 oder Register, der beziehungsweise die zu dem Gast-Ereignis gehören, auf den/die der Hypervisor 30 nicht zugreifen kann; das Erweitern einer Virtualisierungsfunktion 34 des von dem Hypervisor gesteuerten Systems 10 um Zugriffsverfahren auf bestimmte Gast-Daten, die zu dem Gast-Ereignis gehören.
-
Ein E/A-Prozess eines Gasts 20 weist des Weiteren das Angeben eines nicht geschützten Speicherbereichs für E/A-Pufferspeicher und E/A-Steuerstrukturen des Gasts 20 außerhalb des Bereichs des geschützten Gast-Hauptspeichers 22; das Starten des E/A-Prozesses durch den Gast 20 unter Verwendung dieses nicht geschützten Bereichs des Gast-Hauptspeichers 22; das Erzeugen eines Gast-Ereignisses durch die Virtualisierungsfunktion 34 des von dem Hypervisor gesteuerten Systems 10; das Lesen eines Grunds für das Gast-Ereignis und das Durchführen des E/A-Prozesses durch den Hypervisor 30 auf.
-
Darüber hinaus das Prüfen der Integrität eines Gasts mit einem Prüfprozess, wobei der Prüfprozess die Schritte aufweist: Kennen des Gast-Schlüssels 24 seitens des Prüfprozesses; Lesen des Inhalts eines Hauptspeichers in Klartext aus dem geschützten Gast-Hauptspeicher 22 durch den Gast 20, wobei ein beliebiger Bereich des geschützten Gast-Hauptspeichers 22 über einen sicheren Übertragungspfad an den Prüfprozess übertragen wird; Anfordern desselben Hauptspeicherbereichs des geschützten Gast-Hauptspeichers 22 von dem Hypervisor 30 und Übertragen des Hauptspeicherbereichs an den Prüfprozess; Vergleichen des von dem Gast 20 erhaltenen Inhalts des Hauptspeichers mit dem Ergebnis der Entschlüsselung des von dem Hypervisor 30 erhaltenen Inhalts des Hauptspeichers; Liefern eines Vergleichsergebnisses in Abhängigkeit von dem Inhalt der beiden Hauptspeicherbereiche; wobei das Ergebnis des Prüfprozesses positiv ist, wenn das Vergleichsergebnis den Wert null hat, und andernfalls negativ ist.
-
In 4a ist ein generischer Ablaufplan zur Ausführung eines sicheren Gasts aus Sicht eines Hypervisors 30 und einer CPU 216 gemäß einer Ausführungsform der Erfindung gezeigt. 4 bezieht sich ebenso wie 5 in den Ablaufplänen auf Objekte, die in den Übersichtsdarstellungen der 2 und 3 angegeben sind, so dass sich die verwendeten Bezugszahlen ebenfalls auf die Objekte dieser Figuren beziehen. Das Ausführen eines sicheren Gasts 20 beginnt mit dem Schritt S410, in dem der Hypervisor 30 ein verschlüsseltes Gast-Abbild aus einer Einheit zum einleitenden Programmladen (Initial Program Loader (IPL)) zusammen mit einem verschlüsselten Gast-Schlüssel 24 liest. Als Nächstes, im Schritt S420, speichert der Hypervisor 30 das verschlüsselte Gast-Abbild in dem geschützten Gast-Hauptspeicher 22. Im Schritt S430 bereitet der Hypervisor 30 einen anfänglichen Gast-Zustand 52 vor, der den verschlüsselten Gast-Schlüssel 24 enthält, und übergibt ihn der Firmware 70. Somit dienen die Schritte S410 bis S430 dazu, einen Gast 20 in einem von einem Hypervisor gesteuerten System 10 zu initialisieren. Als Nächstes, im Schritt S440, entschlüsselt die Firmware 70 den geschützten Gast-Hauptspeicher 22 und schützt den geschützten Gast-Hauptspeicher 22 auf diese Weise vor dem Zugriff durch nicht vertrauenswürdige Komponenten, wie z. B. den Hypervisor 30 oder andere Gäste. Im Schritt S450 wird ein sicherer Gast 20 in Form einer virtuellen Maschine entsprechend dem aktuellen Gast-Zustand 52 gestartet. Im Anschluss an den Schritt S460 führt eine CPU 216 den sicheren Gast 20 in einem sicheren Gast-Kontext 42 aus, der von dem aktuellen Gast-Zustand 52 beschrieben wird. Wenn im Schritt S470 ein Gast-Ereignis in Form einer Unterbrechung oder einer Anweisungs-Abfangoperation eintritt, verlässt der Gast 20 den Gast-Kontext 42 mit einem aktualisierten Gast-Zustand 52 aufgrund dieser Unterbrechung oder Abfangoperation. Der Hypervisor 30 ist im Schritt S480 nun in der Lage, die Unterbrechung oder die Abfangoperation mit Hilfe eines ersten Firmware-Dienstes, um Daten aus dem sicheren Gast 20 zu lesen, oder mit Hilfe eines zweiten Firmware-Dienstes, um Daten in den sicheren Gast 20 zu schreiben, zu verarbeiten.
-
Im Allgemeinen kann ein erster Firmware-Dienst ausgelöst werden, was bedeutet, dass (ii) die Firmware 70 Informationen verarbeitet, die zu dem Gast-Ereignis gehören, und dem Hypervisor 30 nur eine Teilmenge der Informationen über den Gast-Zustand 52 und den geschützten Gast-Hauptspeicher 22 übergibt und (iii) die Firmware 70 einen Teil der Informationen zurückhält, welcher nicht an den Hypervisor 30 gesendet wird. Ferner kann (iv) der Hypervisor 30 auf der Grundlage der empfangenen Teilmenge der Informationen einen zweiten Firmware-Dienst auslösen, um (v) eine Zustands- und/oder Hauptspeicheränderung des Gasts 20 zu erzeugen und um (vi) die Zustands- und/oder die Hauptspeicheränderung, die zu dem Gast-Ereignis gehört, an dem geschützten Gast-Hauptspeicher 22 durchzuführen.
-
Wenn der sichere Gast 20 fertig ist, kommt der ganze Prozess an der Verzweigung S490 zu einem Ende. Wenn der sichere Gast 20 nicht fertig ist, wird eine Schleife zum Schritt S450 geschlossen und der Hypervisor 30 startet den sicheren Gast 20 erneut.
-
In 5 ist ein ausführlicher Ablaufplan für die Verarbeitung von Abfangoperationen mit einer Ausführung eines sicheren Gasts gemäß einer Ausführungsform der Erfindung gezeigt. Der Schritt S510 beginnt mit einem Gast-Ereignis, was bedeutet, dass der sichere Gast 20 eine Anweisung ausgibt, die die Auswertung oder die Unterstützung durch den Hypervisor 30 anfordert, z. B. eine Anweisung, Systemumgebungsparameter zu speichern, die üblicherweise von dem Hypervisor 30 bereitgestellt wird. In einem nächsten Schritt S520 verlässt die Ausführung der Virtualisierungsfunktion 34 den Gast-Kontext 42 und übergibt die Initiative einer CPU-internen Virtualisierungslogik. Im Schritt S530 erkennt die CPU-interne Virtualisierungslogik dann einen Grund für den Ausstieg des Gasts 20, beispielsweise stellt sie eine Anweisung zur Speicherung von Systemumgebungsparametern fest. Im Schritt S540 bereitet die CPU-interne Virtualisierungslogik Kennungen für den Hypervisor 30 zum Zugriff auf Eingabe- und Ausgabeparameter entsprechend dem Grund für den Ausstieg des Gasts 20 vor, beispielsweise weist sie dem Speicherplatz für die angeforderten Informationen eine Kennung zu. Im Schritt S550 maskiert die CPU-interne Virtualisierungslogik dann den Teil des Ausführungszustands, der für die Verarbeitung der Abfangoperation nicht notwendig ist, und schickt die Initiative an den Hypervisor 30 zurück, wobei sie den Ausstieg des Gasts 20 sowie einen Hinweis auf Kennungen von Eingabe- und Ausgabeparametern angibt, beispielsweise verbirgt sie Register und Kontextdaten vor dem Hypervisor 30, indem sie sie z. B. verschlüsselt. In den Schritten S520 bis S550 kann die CPU-interne Virtualisierungslogik alternativ als ein erster Firmware-Dienst ausgeführt werden. Als Nächstes erkennt der Hypervisor 30 im Schritt S560 den Grund für den Ausstieg des Gasts 20, indem er die Angabe des Grunds aus der CPU-internen Virtualisierungslogik liest, beispielsweise liest er einen Grund-Code, um die Anforderung eines virtuellen Servers, Systemumgebungsparameter zu speichern, festzustellen. Im Schritt S570 löst der Hypervisor 30 (wenn notwendig wiederholt) Firmware-Dienste aus (z. B. den ersten Firmware-Dienst), um mit Eingabe- und Ausgabeparametern zu arbeiten, um den Ausstieg des Gasts 20 zu verarbeiten. Dazu verwendet der Hypervisor 30 zuvor festgelegte Kennungen als ein Mittel, um auf den Inhalt des Hauptspeichers 230 und Register, die zur Verarbeitung notwendig sind, Bezug zu nehmen, beispielsweise speichert der Hypervisor 30 mittels Firmware-Diensten (z. B. mittels des zweiten Firmware-Dienstes) unter Verwendung der empfangenen Kennung Systemumgebungsparameter im Hauptspeicher des virtuellen Servers.
-
In dem ausführlichen Ablaufplan für die Verarbeitung von Abfangoperationen mit einem sicheren Gast in 5 wird auf diese Weise beschrieben, wie der erste und der zweite Firmware-Dienst zur Verarbeitung eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System 10 verwendet werden, wie (ii) die Firmware 70 Informationen verarbeitet, die zu dem Gast-Ereignis gehören, und nur eine Teilmenge der Informationen an den Hypervisor 30 übergibt und (iii) dass die Firmware 70 einen Teil der Informationen zurückhält und (iv) der zweite Firmware-Dienst auf der Grundlage der empfangenen Teilmenge der Informationen ausgelöst werden kann.
-
Als Nächstes startet der Hypervisor 30 im Schritt S580 erneut die Ausführung der Virtualisierungsfunktion 34, indem er eine entsprechende CPU-Anweisung ausgibt, bis die CPU-interne Virtualisierungslogik im Schritt S590 Kennungen von dem vorherigen Ausstieg des Gasts 20 löscht, den Kontext des virtuellen Servers für die Ausführung der Virtualisierungsfunktion 34 demaskiert und die Ausführung des virtuellen Servers startet.
-
Somit kann eine Zustands- und/oder Hauptspeicheränderung des Gasts 20 erzeugt und am Gast-Hauptspeicher 22 in verschlüsselter Form durchgeführt werden.
-
Nun Bezug nehmend auf 6 ist eine schematische Darstellung eines Beispiels eines Datenverarbeitungssystems 210 gezeigt. Das Datenverarbeitungssystem 210 stellt lediglich ein Beispiel für ein geeignetes Datenverarbeitungssystem dar und ist nicht als Einschränkung des Nutzungsumfangs oder der Funktionalität von Ausführungsformen der hier beschriebenen Erfindung zu verstehen. Ungeachtet dessen kann das Datenverarbeitungssystem 210 realisiert werden und/oder ist in der Lage, jedwede Funktionalität, die vorstehend beschrieben wurde, auszuführen.
-
In dem Datenverarbeitungssystem 210 gibt es ein Computersystem/einen Server 212, das beziehungsweise der mit zahlreichen anderen Umgebungen oder Konfigurationen eines universellen oder eines speziellen IT-Systems betrieben werden kann. Zu Beispielen für bekannte IT-Systeme, Umgebungen und/oder Konfigurationen von IT-Systemen, die für die Verwendung mit dem Computersystem/Server 212 geeignet sein können, gehören, ohne darauf beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin-Clients, Thick-Clients, tragbare oder Laptop-Einheiten, Mehrprozessorsysteme, auf einem Mikroprozessor beruhende Systeme, Aufsatzgeräte (Set-Top-Boxen), programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der vorstehenden Systeme oder Einheiten enthalten, und dergleichen.
-
Das Computersystem/der Server 212 kann in dem allgemeinen Kontext von Anweisungen, die von einem Computersystem ausgeführt werden können, wie zum Beispiel Programmmodulen, die von einem Computersystem ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 212 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, in denen Aufgaben von fernen Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten CCU können sich Programmmodule sowohl in Speichermedien, einschließlich Hauptspeicher-Einheiten, eines lokalen als auch eines fernen Computersystems befinden.
-
Wie in 6 gezeigt ist, ist das Computersystem/der Server 212 in dem Datenverarbeitungssystem 210 in Form einer universellen Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/des Servers 212 können, ohne auf diese 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 von diversen beliebigen Arten von Busstrukturen einschließlich eines Hauptspeicher-Busses oder einer Hauptspeicher-Steuereinheit, eines peripheren Busses, eines Accelerated Graphics Port und eines Prozessor- oder lokalen Busses, der eine beliebige von vielen verschiedenen Busarchitekturen nutzt, dar. Als Beispiel, aber nicht darauf beschränkt, gehören zu solchen Architekturen der Bus ”Industry Standard Architecture (ISA)”, der Bus ”Micro Channel Architecture (MCA)”, der Bus ”Enhanced ISA (EISA)”, der lokale Bus ”Video Electronics Standards Association (VESA)” und der Bus ”Peripheral Component Interconnect (PCI)”.
-
Das Computersystem/der Server 212 enthält üblicherweise viele verschiedene Datenträger, die von einem Computersystem gelesen werden können. Solche Datenträger können jedwede verfügbaren Datenträger sein, auf die von dem Computersystem/dem Server 212 zugegriffen werden kann, und sie beinhalten sowohl flüchtige als auch nicht flüchtige Datenträger sowie auswechselbare und nicht auswechselbare Datenträger.
-
Der Systemspeicher 228 kann von einem Computersystem lesbare Datenträger in Form von flüchtigem Hauptspeicher, wie beispielsweise einem Direktzugriffsspeicher (RAM) 230 und/oder einem Cachespeicher 232, einschließen. Das Computersystem/der Server 212 kann darüber hinaus weitere auswechselbare/nicht auswechselbare und flüchtige/nicht flüchtige Speichermedien eines Computersystems enthalten. Lediglich als Beispiel kann das Speichersystem 234 für Leseoperationen von und für Schreiboperationen auf einen nicht auswechselbaren, nicht flüchtigen Magnetdatenträger (nicht gezeigt und üblicherweise als ”Festplattenlaufwerk” bezeichnet) bereitgestellt werden. Obgleich nicht gezeigt, können ein Magnetplattenlaufwerk für Leseoperationen von und Schreiboperationen auf eine auswechselbare, nicht flüchtige Magnetplatte (z. B. eine ”Diskette”) und ein optisches Plattenlaufwerk für Leseoperationen von oder Schreiboperationen auf eine auswechselbare, nicht flüchtige optische Platte, wie zum Beispiel ein CD-ROM, ein DVD-ROM, oder andere optische Datenträger bereitgestellt werden. In diesen Fällen kann jedes Speichermedium über eine oder mehrere Datenträger-Schnittstellen mit dem Bus 218 verbunden werden. Wie weiter gezeigt und nachstehend beschrieben wird, kann der Systemspeicher 228 mindestens ein Programmprodukt enthalten, das über einen Satz (z. B. mindestens einen Satz) von Programmmodulen verfügt, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
-
Das Programm/Dienstprogramm 240, das über einen Satz (mindestens einen Satz) von Programmmodulen 242 verfügt, kann als Beispiel, das nicht als Einschränkung zu verstehen ist, im Systemspeicher 228 abgelegt werden, ebenso ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Ausführungsart einer Netzwerkumgebung beinhalten. Die Programmmodule 242 führen im Allgemeinen die Funktionen und/oder die methodischen Vorgehensweisen von den hier beschriebenen Ausführungsformen der Erfindung aus. Das Computersystem/der Server 212 kann auch mit einer oder mehreren externen Einheiten 214 wie zum Beispiel einer Tastatur, einem Zeigegerät, einem Bildschirm 224 usw.; mit einer oder mehreren Einheiten, die einem Benutzer den Dialogverkehr mit dem Computersystem/Server 212 ermöglichen; und/oder beliebigen Einheiten (z. B. Netzwerkkarte, Modem usw.), die dem Computersystem/Server 212 den Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen, Daten austauschen. Ein solcher Datenaustausch kann über Eingabe-/Ausgabe-(E/A-)Schnittstellen 222 erfolgen. Weiterhin kann das Computersystem/der Server 212 mit einem oder mehreren Netzwerken wie zum Beispiel einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z. B. dem Internet) über den Netzwerkadapter 220 Daten austauschen. Wie gezeigt ist, tauscht der Netzwerkadapter 220 mit den anderen Komponenten des Computersystems/Servers 212 über den Bus 218 Daten aus. Es sollte sich verstehen, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 212 verwendet werden könnten, obgleich diese nicht gezeigt sind. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Festplattenlaufwerken, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
-
Die Blockschaubilder in den Figuren zeigen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computer-Programmprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Befehle zur Ausführung der angegebenen logischen Funktionen aufweist. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten mitunter in einer anderen als in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können zuweilen in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaubilder sowie Kombinationen aus Blöcken in den Blockschaubildern von Systemen, die auf Hardware für spezielle Anwendungen beruhen und die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Hardware für spezielle Anwendungen und Computerbefehlen ausgeführt werden können.