DE102018123710A1 - Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud - Google Patents

Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud Download PDF

Info

Publication number
DE102018123710A1
DE102018123710A1 DE102018123710.3A DE102018123710A DE102018123710A1 DE 102018123710 A1 DE102018123710 A1 DE 102018123710A1 DE 102018123710 A DE102018123710 A DE 102018123710A DE 102018123710 A1 DE102018123710 A1 DE 102018123710A1
Authority
DE
Germany
Prior art keywords
guest
workload
address
physical hardware
expected
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018123710.3A
Other languages
English (en)
Inventor
Gilbert Neiger
Baiju Patel
Ravi Sahita
David Durham
Siddhartha Chhabra
Barry Huntley
Gideon Gerzon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102018123710A1 publication Critical patent/DE102018123710A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

In einer öffentlichen Cloud-Umgebung wird jede Arbeitslast eines Verbrauchers/Gasts in einem Serverspeicher eines Cloud-Dienst-Anbieters (Cloud Service Provider, CSP) unter Verwendung eines vom Verbraucher bereitgestellten Schlüssels, der der Arbeitslastverwaltungssoftware des CSP nicht bekannt ist, verschlüsselt. Ein verschlüsseltes Verbraucher-/Gastarbeitslastbild wird in den Serverspeicher des CSP an einem durch die Arbeitslastverwaltungssoftware des CSP spezifizierten Speicherort geladen. Basierend auf dem vom CSP bestimmten Speicherort bestimmt die Gastarbeitslast erwartete physische Hardwareadressen, in die Speicherabbildungsstrukturen und andere Typen von Verbraucherdaten geladen werden sollen. Diese erwarteten physischen Hardwareadressen werden durch die Gastarbeitslast in einer Speicherinhaberschaftstabelle (Memory Ownership Table, MOT) spezifiziert, die verwendet wird, um zu überprüfen, dass nachfolgende vom CSP bestimmte Speicherabbildungen wie erwartet sind. Speicherinhaberschaftstabelleneinträge können auch durch den vom Verbraucher bereitgestellten Schlüssel, der dem CSP nicht bekannt ist, verschlüsselt werden.

Description

  • Technisches Gebiet
  • Diese Anmeldung beansprucht die Priorität der am 28. Februar 2017 eingereichten US-Patentanmeldung Nr. 15/444,771 mit dem Titel „Secure Public Cloud With Protected Guest-Verified Host Control“, die die Priorität der am 14. Oktober 2016 eingereichten US-Patentanmeldung Nr. 15/293,967 mit dem Titel „Secure Public Cloud“ beansprucht, die die Priorität der am 11. August 2016 eingereichten vorläufigen US-Patentanmeldung 62/373,627 mit dem Titel „Secure Public Cloud“ beansprucht, wobei jede Offenbarung von diesen hiermit durch Bezugnahme eingeschlossen wird.
  • Hintergrund
  • In Cloud-Dienst-Umgebungen hat die Software zur Verwaltung der Host-Arbeitslast des Cloud-Dienst-Anbieters (wie ein Virtual Machine Monitor (VMM) in einer Virtualisierungsumgebung) aktuell volle Kontrolle über die Gastarbeitslasten (wie virtuelle Gastmaschinen), die die Software zur Verwaltung der Host-Arbeitslast für einen Verbraucher eines Cloud-Diensts verwaltet. Die Software zur Verwaltung der Host-Arbeitslast kann in Gastspeicher lesen oder schreiben, den Steuerfluss von Software, die die Gastarbeitslast ausführt, modifizieren, den Gastregisterzustand lesen oder modifizieren, Gaststeuerstrukturen, wie Registerwerte, lesen oder modifizieren und so weiter. Diese volle Kontrolle der Ausführung einer Gastarbeitslast stellt ein Sicherheitsrisiko dar, dass die Software zur Verwaltung der Host-Arbeitslast kompromittiert ist und die Gastarbeitslast derart modifizieren kann, dass Geheimnisse und Daten des Verbrauchers, die sich in der Gastarbeitslast befinden, offengelegt werden.
  • Figurenliste
    • 1 ist ein Blockdiagramm, das eine typische Umgebung einer virtuellen Maschine zeigt.
    • 2 ist ein Blockdiagramm einer Cloud-Dienst-Umgebung, die zum Implementieren von Ausführungsformen verwendet werden kann.
    • 3 ist ein Diagramm, das eine Serverumgebung zeigt, die zum Implementieren von Ausführungsformen verwendet werden kann.
    • 4 ist ein Diagramm, das Datenflüsse zwischen einem Verbraucheragenten und Komponenten einer Serverumgebung gemäß Ausführungsformen zeigt.
    • 5 ist ein Diagramm, das Datenflüsse zwischen einem Verbraucheragenten und Komponenten einer Serverumgebung gemäß Ausführungsformen zeigt.
    • 6A und 6B sind Diagramme, die Datenflüsse zwischen Komponenten einer Serverumgebung gemäß Ausführungsformen zeigen.
    • 7 ist ein Diagramm, das Datenflüsse zwischen Komponenten einer Serverumgebung gemäß Ausführungsformen zeigt.
    • 8 ist ein Flussdiagramm eines Verfahrens, das gemäß Ausführungsformen durchgeführt wird.
    • 9 ist ein Flussdiagramm eines Verfahrens, das gemäß Ausführungsformen durchgeführt wird.
    • 10 ist ein Diagramm, das eine Speicherinhaberschaftstabelle gemäß Ausführungsformen zeigt.
  • Detaillierte Beschreibung
  • In einer virtualisierten Cloud-Umgebung dient ein Virtual Machine Monitor (VMM) als die Software zur Verwaltung der Host-Arbeitslast und werden Gastarbeitslasten als „virtuelle Maschinen“ bezeichnet. Die hierin bereitgestellten Techniken werden in Bezug auf einen VMM und eine Gast-VM beschrieben, wenngleich die Techniken allgemein auf andere Typen von Software zur Verwaltung der Host-Arbeitslast, wie Betriebssysteme, und andere Typen von Gastarbeitslasten, wie Anwendungen, anwendbar sind.
  • Um Ressourcen optimal zu nutzen, kann Software zur Verwaltung der Host-Arbeitslast, die in der Cloud ausgeführt wird, die Ausführung von einer Gastarbeitslast, die einem Verbraucher (gelegentlich als ein Inhaber der Gastarbeitslast oder ein Mandant der Serverumgebung des Cloud-Dienst-Anbieters bezeichnet) gehört, zu einer anderen Gastarbeitslast, die einem anderen Verbraucher gehört, umschalten. Bei einer Umschaltung von einer Gastarbeitslast zu einer anderen können Datenstrukturen, die zu dem Ausführungszustand der Gastarbeitslast gehören, durch die Software zur Verwaltung der Host-Arbeitslast modifiziert werden. Diese Datenstrukturen können Speicherabbildungen (z. B. Seitentabellen und erweiterte Seitentabellen (Extended Page Tables, EPTs)) und Steuerstrukturen (wie Steuerstrukturen für virtuelle Maschinen), die verwendet werden, um die Ausführung der Gastarbeitslast zu steuern, einschließen.
  • Eine Seitentabelle ist die Datenstruktur, die durch ein Speichersystem in einem Computerbetriebssystem verwendet wird, um die Abbildung zwischen virtuellen/linearen Adressen und physischen Adressen zu speichern. Virtuelle/lineare Adressen werden durch den Zugriffsprozess verwendet, während physische Adressen durch die Hardware verwendet werden. Jedem Prozess wird der Eindruck vermittelt, dass große angrenzende Speicherabschnitte verwendet werden, um die Arbeitslast des Prozesses auszuführen; jedoch kann der Speicher jedes Prozesses physisch über verschiedene Bereiche von physischem Speicher verteilt sein oder kann zu einer anderen Speichervorrichtung, üblicherweise zu einem Festplattenlaufwerk, verschoben („ausgepaget“) worden sein. Wenn ein Prozess Zugriff auf Daten in einem Speicher anfordert, ordnet das Betriebssystem die durch den Prozess bereitgestellte virtuelle/lineare Adresse der physischen Adresse des tatsächlichen Speicherorts zu, an dem diese Daten gespeichert sind.
  • In einer Virtualisierungsumgebung hat jedoch das Betriebssystem für einen Gast-VM keinen Zugriff auf die physischen Hardwareadressen. Deshalb bildet eine Gast-VM ihre eigenen Speicherabbildungen zwischen virtuellen/linearen Gastadressen (VAs) und physischen Gastspeicheradressen (GPAs) unter Verwendung der eigenen Seitentabellen des Gastbetriebssystems. Diese Speicherabbildungen können auch die Extended Page Table(EPT)-Technologie von Intel® verwenden, in der ein Übersetzungspuffer(Translation Lookaside Buffer, TLB)-Cache virtuellen Speicher und physischen Speicher für das Gastbetriebssystem nachverfolgt. Der Zweck der EPT besteht darin, jeder virtuellen Gastmaschine den Eindruck zu vermitteln, dass die Gast-VM beim Zugriff auf eine physische Gastadresse die Speicherhardware selbst verwaltet. Tatsächlich jedoch wird die physische Gastadresse durch den VMM verwaltet und in die tatsächliche physische Hardwareadresse übersetzt. Auf diese Weise vermittelt der VMM VM-Software den Eindruck, dass die VM-Software ein physisches System verwaltet, während das physische System in Wirklichkeit durch eine andere Softwareschicht, den VMM, verwaltet wird.
  • Einzelne VMs werden durch den TLB durch Zuweisen eines Adressraumidentifikators (Address Space Identifier, ASID) zu jeder VM nachverfolgt. Unter Verwendung des Adressraumidentifikators kann der TLB die Abbildung von Adressraum für virtuelle Maschinen in physische Hardwareadressen für jede virtuelle Maschine nachverfolgen. Der ASID wird verwendet, um TLBs zu kennzeichnen, sodass der Gast-VM-Zustand beim Umschalten zu einer anderen VM nicht von den TLBs für die vorhergehende VM geleert werden muss. Stattdessen verwendet der TLB das Kennzeichen, um die verschiedenen VM-Einträge getrennt zu halten, wobei nur die Kennzeichen für die aktuell ausgeführte VM verwendet werden, während weiterhin der Zustand für die nicht aktiven VMs zwischengespeichert wird.
  • In Virtualisierungsumgebungen ist die Steuerstruktur für virtuelle Maschinen (VMCS) eine Datenstruktur in einem Speicher, der bisher durch den Host-VMM verwaltet wurde. Die VMCS enthält die Prozessorregisterzustände von sowohl der Gast-VM als auch dem Host-VMM. Die VMCS ist einmal für jeden logischen Prozessor für jede Gast-VM vorhanden, während die Gast-VM durch den Host-VMM verwaltet wird. In einem Multiprozessorsystem kann jeder Prozessor, der gleichzeitig die Gast-VM ausführt, eine eindeutige VMCS aufweisen. Mit jeder Änderung des Ausführungskontexts zwischen verschiedenen VMs wird die entsprechende VMCS für die aktuell ausgeführte VM wiederhergestellt, wodurch der Zustand des virtuellen Prozessors der VM definiert wird. Wenn der Ausführungskontext (VMExits) von einer Gast-VM zurück zu dem Host-VMM wechselt, wird dieselbe VMCS-Struktur verwendet, um den gespeicherten Prozessorzustand des Hosts aus dem Host-Zustandsbereich der VMCS wiederherzustellen.
  • Die hierin dargestellte Offenbarung erlaubt es dem Host-VMM, die Kontrolle über Speicherabbildungen/Seitentabellen derart beizubehalten, dass der Cloud-Dienst-Anbieter, der den Host-VMM bereitstellt, die Verwendung der Ressourcen des Cloud-Dienst-Anbieters steuert. Demgegenüber wird die Verwaltung von Steuerstrukturen für virtuelle Maschinen (VMCSs) zu der Gast-VM verschoben. Während der Host-VMM die vom Gast erzeugten oder vom Gast modifizierten VMCS weiterhin messen und verifizieren kann, kann der Host-VMM die Gast-VM dazu auffordern, die VMCS zu modifizieren, wie es der Host erfordert, bevor die VMCS verwendet wird.
  • In dieser Offenbarung werden die Konzepte des Schützens der Arbeitslast und Geheimnisse eines Verbrauchers vor einer kompromittierten Hardware oder Software eines Cloud-Dienst-Anbieters und des Schützens der Hardware und Software des Cloud-Dienst-Anbieters vor einer kompromittierten Verbraucherarbeitslast weiterentwickelt. Diese Konzepte wurden in den weiter oben beschriebenen gemeinsam anhängigen Patentanmeldungen, einschließlich der am 28. Februar 2017 eingereichten US-Patentanmeldung Nr. 15/444,771 mit dem Titel „Secure Public Cloud With Protected Guest-Verified Host Control“, die die Priorität der am 14. Oktober 2016 eingereichten US-Patentanmeldung Nr. 15/293,967 mit dem Titel „Secure Public Cloud“ beansprucht, die die Priorität der am 11. August 2016 eingereichten vorläufigen US-Patentanmeldung 62/373,627 mit dem Titel „Secure Public Cloud“ beansprucht, eingeführt.
  • In den oben angegebenen Patentanmeldungen basieren der Schutz der Arbeitslast und Geheimnisse eines Verbrauchers vor einer kompromittierten Hardware oder Software eines Cloud-Dienst-Anbieters und der Schutz der Hardware und Software des Cloud-Dienst-Anbieters vor einer kompromittierten Verbraucherarbeitslast auf dem Konzept einer Schlüsseldomäne. Eine Schlüsseldomäne ist ein kryptografisch getrennter Speicherabschnitt, wobei ein Zugriff auf Daten, die in Speicherorten gespeichert sind, die zu der Schlüsseldomäne gehören, ein Verwenden eines zugehörigen Schlüsseldomänenschlüssels zum Entschlüsseln der Daten erfordert. Wenn die Hardware Daten in einen Speicherort schreibt, der zu einer Schlüsseldomäne gehört, werden die Daten unter Verwendung des Schlüsseldomänenschlüssels verschlüsselt; wenn die Hardware Daten von einem Speicherort liest, der zu der Schlüsseldomäne gehört, werden die Daten unter Verwendung des Schlüsseldomänenschlüssels entschlüsselt. Wenn Inhalte der physischen Speicherorte, die zu einer Schlüsseldomäne gehören, unter Verwendung des falschen Schlüsseldomänenschlüssels entschlüsselt werden, kann der resultierende Klartext beschädigt sein und/oder es kann eine Integritätsverletzung berichtet werden. Als Reaktion auf eine Integritätsverletzung kann der falsch verwendete Schlüsseldomänenschlüssel ungültig gemacht werden.
  • Unter Verwendung von Schlüsseldomänen werden Gast-VMs in einem geschützten Speicherbereich ausgeführt, auf den selbst der Host-VMM nicht zugreifen kann, weil die Schlüsseldomäne mit einem vom Verbraucher bereitgestellten (vom Mandanten bereitgestellten) Schlüsseldomänenschlüssel verschlüsselt ist, der dem Host-VMM nicht bekannt ist. In einer anderen Ausführungsform ist der geschützte Speicherbereich unter Verwendung von Bereichsregistern implementiert, wobei ein bestimmter Register den Host-VMM (und andere Software) blockiert, sodass dieser nicht auf den geschützten Speicherbereich einer Gast-VM zugreifen kann. Zu Zwecken dieser Offenbarung wird der geschützte Speicherbereich der Gast-VM in Bezug auf Schlüsseldomänen beschrieben, wenngleich die hierin beschriebenen Techniken auf geschützte Speicherbereiche anwendbar sind, die unter Verwendung von anderen Techniken implementiert wurden, um die Gast-VM des Verbrauchers für den Host-VMM unzugänglich zu machen. Die Gast-VMs können auch sicherstellen, dass die von dem VMM gesteuerten Speicherabbildungen die Gast-VM nicht kompromittieren.
  • Gemäß der vorliegenden Offenbarung befinden sich Virtualisierungsdatenstrukturen, die zu dem Ausführungszustand der Gast-VM gehören, (z. B. die VMCS) ebenfalls in dem geschützten Speicherbereich (Schlüsseldomäne). Diese Virtualisierungsdatenstrukturen sind mit dem Schlüsseldomänenschlüssel verschlüsselt. Der Host-VMM und andere Gast-VMs, die den Schlüsseldomänenschlüssel für andere Schlüsseldomänen nicht besitzen, sind nicht dazu in der Lage, diese Steuerstrukturen zu modifizieren, und sind nicht dazu in der Lage, auf den geschützten Speicherbereich zuzugreifen. Es werden jedoch Verfahren bereitgestellt, bei denen die Hardware es dem Host-VMM ermöglicht, die Inhalte dieser Steuerstrukturen zu verifizieren, um sicherzustellen, dass die Sicherheit des Hosts nicht durch einen Gast kompromittiert werden kann.
  • Ein Speichermanager eines Cloud-Dienst-Anbieters, wie ein VMM oder ein Betriebssystemkern, kann verschiedene Schlüsseldomänen verwenden, um Daten, die zu verschiedenen Inhabern/Verbrauchern/Mandanten gehören, kryptografisch zu trennen. Zum Beispiel können in einer Cloud-Dienst-Umgebung verschiedene Schlüsseldomänen verwendet werden, um Daten, die zu verschiedenen Verbrauchern von Cloud-Diensten, wie Bankdiensten, gehören, kryptografisch zu trennen. In einer Virtualisierungsumgebung können verschiedene Schlüsseldomänen verwendet werden, um Daten, die zu verschiedenen virtuellen Maschinen gehören, zu trennen. Die Daten, die zu jeder der virtuellen Maschinen gehören, können zum Beispiel Verbrauchergeheimnisse (wie Bankkontonummern, Sozialversicherungsnummer usw.) einschließen, die zu jeder virtuellen Maschine gehören. Die Daten, die zu jeder der virtuellen Maschinen gehören, können auch Computercode (auch als ein Codebild oder nur ein Bild bezeichnet) einschließen, der auszuführen ist, um die Geheimnisse von jeder jeweiligen virtuellen Maschine in der Umgebung des Cloud-Dienst-Anbieters zu schützen.
  • Ein Verbraucher besitzt die Schlüsseldomäne, in der die Arbeitslast des Verbrauchers ausgeführt wird. Der Schlüsseldomänenschlüssel wird durch den Verbraucher erstellt, der die Schlüsseldomäne besitzt, und auf sichere Weise direkt für die Serverhardware des Cloud-Dienst-Anbieters bereitgestellt, ohne eine Kommunikation durch den Speichermanager/VMM/Betriebssystemkern des Cloud-Dienst-Anbieters zu erfordern. In anderen Ausführungsformen kann der Verbraucher einen Schlüssel, der durch eine andere Entität (wie den Server des Cloud-Dienst-Anbieters) bereitgestellt wird, in einen anderen Schlüssel übersetzen, der verwendet wird, um Speicherorte zu verschlüsseln, die zu einer Schlüsseldomäne gehören. In noch weiteren Ausführungsformen können verschiedene Schlüssel verwendet werden, um verschiedene IP-Blöcke (Sätze von Speicherorten) zu verschlüsseln, die zu der Schlüsseldomäne gehören; zum Beispiel kann ein Schlüssel zum Verschlüsseln eines IP-Blocks mit Code für ein Verbraucher-VM-Bild verwendet werden, der von dem Schlüssel verschieden ist, der zum Verschlüsseln von anderen Verbrauchergeheimnissen verwendet wird. Um die hierin enthaltenen Beschreibungen von Ausführungsformen zu vereinfachen, beschreibt die vorliegende Anmeldung die Inhalte von jedem physischen Speicherort, der zu einer Schlüsseldomäne gehört, als durch einen Schlüsseldomänenschlüssel verschlüsselt, der durch den Verbraucher erstellt wird, der die Schlüsseldomäne besitzt, wenngleich andere Ausführungsformen innerhalb des Umfangs der Erfindung liegen.
  • In einer Ausführungsform wird eine Schlüsseldomäne unter Verwendung von nicht verwendeten Bits der physischen Adresse identifiziert und fügt die Hardware einen Identifikator (hierin auch als ein Selektor bezeichnet) für die identifizierte Schlüsseldomäne in den nicht verwendeten Adress-Bits (oder anderen Metadaten, die durch einen Cache geleitet werden) an. Da wahrscheinlich weniger physische Speicherorte in einem System installiert sind als unter Verwendung einer physischen 64-Bit-Speicheradresse adressiert werden können, können zum Beispiel die nicht verwendeten höchstwertigen Adress-Bits verwendet werden, um zwischen verschiedenen Schlüsseldomänen auszuwählen. Zwei verschiedene Schlüsseldomänenadressen können mit demselben physischen Speicherort verknüpft werden. Wenn jedoch Daten von diesem physischen Speicherort in einen Cache gelesen werden, hält der Cache die Schlüsseldomänenadressen unabhängig mit der vollständigen Adressauflösung (z. B. einschließlich der vollständigen physischen 64-Bit-Speicheradresse). Die Schlüsseldomänenadresse, die eindeutig identifiziert wird, wenn die nicht verwendeten Bits der physischen Adresse der vollständigen physischen 64-Bit-Speicheradresse berücksichtigt werden, bestimmt die Schlüsseldomäne, zu der der physische Speicherort gehört. Durch Identifizieren der Schlüsseldomäne, zu der der physische Speicherort gehört, wird auch der Schlüsseldomänenschlüssel identifiziert, der verwendet werden kann, um den Inhalt dieses physischen Speicherorts zu entschlüsseln. Andere Ausführungsformen können eine Tabelle von Schlüsseln oder Schlüsselidentifikatoren verwenden, die basierend auf einer Speicheradresse ermittelt werden. Andere Ausführungsformen können den Speicher an dem Prozessor vor dem Cache verschlüsseln. Die Speicherverschlüsselungslogik kann sich auf einer beliebigen Ebene der Speicherhierarchie befinden.
  • In einer Ausführungsform schließt ein Virtual Machine Monitor privilegierten Code ein, der die Fähigkeit aufweist, VMs zu erstellen und deren Ausführung zu beenden und fortzusetzen. Diese Rechte können die Fähigkeit einschließen, die Ausführung einer virtuellen Maschine zu beenden oder fortzusetzen (VMexit/VMresume und VMLaunch).
  • Das VM-Bild des Verbrauchers wird als eine Gast-VM ausgeführt, die nur auf den Speicher zugreifen kann, der durch den VMM abgebildet ist und für den durch den VMM eine Erlaubnis erteilt wurde. Die VM verwendet Seitentabellen, um Abbildungen zwischen virtuellen/linearen Adressen und physischen Gastadressen zu speichern. Eine Adressübersetzung der zweiten Ebene (auch bekannt als Nested Paging) wird durchgeführt, um physische Gastadressen (Guest Physical Addresses, GPA) in physische Host-Adressen (Host Physical Addresses, HPA) zu übersetzen. Im Kontext der Adressübersetzung können virtuelle/lineare Gastadressen einfach als „virtuelle Adressen“ bezeichnet werden, können physische Gastadressen einfach als „Gastadressen“ bezeichnet werden und können physische Host-Adressen einfach als „physische Hardwareadressen“ bezeichnet werden. In einer Ausführungsform wird die Adressübersetzung der zweiten Ebene in erweiterten Seitentabellen (Extended Page Tables, EPTs) nachverfolgt.
  • Gemäß der vorliegenden Offenbarung kann das Bild einer verschlüsselten Verbraucherdomäne eine Steuerstruktur einer verschlüsselten Verbraucherdomäne einschließen, die für die virtuelle Maschine des Verbrauchers spezifisch ist, während ein VMM die Kontrolle über EPTs behält. Die Steuerstruktur für virtuelle Maschinen (VMCS), die normalerweise durch den Host-VMM bereitgestellt würde, ist jetzt auch in dem Bild einer verschlüsselten Verbraucherdomäne enthalten, das durch den Verbraucher oder einen Vermittler, dem der Verbraucher vertraut, für den Cloud-Dienst-Anbieter bereitgestellt wird.
  • Durch Bereitstellen der Steuerstruktur, die den VM-Prozessorzustand des Verbrauchers festlegt, behält der Verbraucher die Kontrolle über die Verbraucherarbeitslast, ohne sich darauf zu verlassen, dass der Virtual Machine Monitor des Hosts die Arbeitslast und Daten des Verbrauchers schützt. Des Weiteren schützt das Bereitstellen der Steuerstruktur in dem verschlüsselten Speicher, auf den der Host-VMM keinen Zugriff hat und für den der Host-VMM den Verschlüsselungsschlüssel nicht besitzt, die Arbeitslast und Daten des Verbrauchers weiter vor einem kompromittierten Host-VMM. Unterdessen kann der Host-VMM weiterhin Hardwaremechanismen (wie einen Hash-Schlüsseldomänen(Hash Key Domain, HashKD)-Befehl, der in den zuvor angegebenen Patentanmeldungen beschrieben ist) verwenden, um den Inhalt der VM-Steuerstruktur (und anderer durch den Verbraucher bereitgestellter Strukturen) auszuwerten und zu verifizieren, bevor der Host-VMM die zugehörige VM instanziiert oder ausführt.
  • Um es dem Host-VMM zu ermöglichen, die Ausführung von Gast-VMs zu verwalten, ohne die Steuerstrukturen der Gast-VMs direkt zu modifizieren, kann ein anderer Typ von Gast-VM oder eine Softwarekomponente in einer VM verwendet werden, der/die hierin als „Gast-Agenten-VM“ oder einfach „Agent“ bezeichnet wird. Der Host-VMM startet einen Agenten, der in der geschützten Schlüsseldomäne betrieben wird, in der die Gast-VM ausgeführt wird. Der Agent arbeitet mit der Gast-VM zusammen, um die Gast-VM vor einer Manipulation zu schützen. In einer Ausführungsform implementiert die Virtualisierungsumgebung Richtlinien, die es dem Agenten ermöglichen, auf die Steuerstrukturen, die den Ausführungsfluss und Registerzustand von anderen Gast-VMs für den Host-VMM steuern, zuzugreifen und diese zu modifizieren. Durch Modifizieren der Steuerstrukturen einer anderen Gast-VM kann der Agent Funktionen, wie das Laden eines vom Verbraucher bereitgestellten Bilds in die Gast-VM und das Erstellen oder Modifizieren von zusätzlichen VMCSs für mehrere Gast-VMs in einem geschützten Speicherbereich/einer geschützten Schlüsseldomäne, durchführen. Es sei darauf hingewiesen, dass die in herkömmlichen Virtualisierungsumgebungen durch den Host-VMM bereitgestellte VMCS-Funktionalität stattdessen durch den Agenten nach einer entsprechenden Anforderung durch den Host-VMM implementiert wird, wodurch der Agent zu einem Vermittler für den Host-VMM gemacht wird, der in der verschlüsselten Schlüsseldomäne des Verbrauchers betrieben wird. Die Hardware kann es dem Host-VMM erlauben, den Inhalt der VMCS (und zugehöriger Strukturen) zu verifizieren (lesen, aber nicht modifizieren), bevor die VM ausgeführt wird, um sicherzustellen, dass die Inhalte der Strukturen richtig sind und den Host-VMM nicht kompromittieren.
  • Des Weiteren erlaubt es das Verwenden des Agenten als einen Vermittler zwischen dem Host-VMM und der Gast-VM dem Agenten, zu validieren, dass der VMM die Gast-VM nicht falsch konfiguriert, um vertrauliche Daten durchzulassen, Code oder Daten zu injizieren oder den Ausführungsfluss der Gast-VM zu modifizieren. Die Gast-VM kann ihren eigenen Speicherverschlüsselungsschlüssel (Schlüsseldomänenschlüssel) verwenden, um Speicherstrukturen zu verschlüsseln. Die Gast-VM gibt dann den resultierenden Geheimtext zur Installation in den vom Host-VMM angegebenen Speicherorten für den Gast-VM unter der Kontrolle des Host-VMM an den Host-VMM zurück. Unter der Annahme, dass die Gast-VM nicht bereits Zugriff auf diese Speicherorte hat, kann der VMM den Geheimtext für die VM installieren.
  • Der Agent kann auch sicherstellen, dass die vom VMM gesteuerten Speicherabbildungen/Seitentabellen mit den eigenen Speicherabbildungen der Gast-VM im Einklang sind. Zum Beispiel kann der Agent eine Speicherinhaberschaftstabelle (Memory Ownership Table, MOT), auch als eine Tabelle für reverse Abbildungen (Reverse Mapping Table, RMT) bezeichnet, verwenden, die Abbildungen von Gastadressen (entweder virtuelle Gastadressen und/oder physische Gastadressen) auf erwartete physische Hardwareadressen bereitstellt. Diese Abbildungen werden in der MOT durch die Gast-VM erfasst, sodass der Gast-VM versichert werden kann, dass der verschlüsselte Speicher der Gast-VM nicht Gegenstand von Remapping-Angriffen durch den VMM war. Hier kann die VM Geheimtexteinträge für die MOT erstellen (mit dem geheimen Speicherverschlüsselungsschlüssel/Schlüsseldomänenschlüssel der VM verschlüsselt). Die VM kann diese Geheimtexteinträge für den VMM bereitstellen, und der VMM kann diese Einträge in der MOT-Tabelle (die als eine speicherinterne Datenstruktur verwaltet werden kann) installieren.
  • In einer Ausführungsform initialisiert ein Agent, der für den Host-VMM ausgeführt wird, vor der Instanziierung einer bestimmten Gast-VM eine VMCS für die bestimmte virtuelle Gastmaschine. Der Host-VMM bewirkt, dass die VMCS geladen wird, wenn die bestimmte Gast-VM instanziiert wird (z. B. über einen VM Pointer Load(VMPTRLD)-Befehl). In einer anderen Ausführungsform kann der Verbraucher ein Bild unter Verwendung dieser selben Methodik dezentral erstellen (z. B. die Agenten-VM erstellen). Sobald der Agent in den Speicher geladen ist und ausgeführt werden kann, kann der Agent damit fortfahren, VMCSs und andere Steuerstrukturen für den VMM zu erstellen und zu modifizieren.
  • Der Host-VMM stellt dem Verbraucher zumindest eine physische Hardwareadresse eines Speicherorts bereit, in den ein Bild für die Gast-VM geladen werden soll. Diese physische Hardwareadresse kann entweder dem Verbraucher bereitgestellt werden, wenn der Verbraucher das anfängliche verschlüsselte Speicherbild erstellt, oder dem Agenten der Verbraucher-VM vor der Instanziierung der Gast-VM oder dem Gast-VM des Verbrauchers, nachdem die Gast-VM des Verbrauchers instanziiert ist. Ein anfänglicher Befehlszeiger ist in der VMCS der Gast-VM festgelegt, um auf die vom VMM bereitgestellte physische Hardwareadresse zu verweisen, in die das Bild für die Gast-VM geladen werden soll. Unter Verwendung der vom Host-VMM bereitgestellten physischen Hardwareadresse als einen Startpunkt bestimmt die Gast-VM andere erwartete physische Hardwareadressen, auf die während der Ausführung durch die Gast-VM zugegriffen werden soll. Zusätzliche Felder in der VMCS können mit den Werten dieser erwarteten physischen Hardwareadressen aktualisiert werden.
  • In einer Ausführungsform stellt eine Gast-VM Abbildungen von den Gastadressen der Seitentabelle der Gast-VM auf diese erwarteten physischen Hardwareadressen her, wenn die Gast-VM erwartete physische Hardwareadressen bestimmt, auf die während der Ausführung zugegriffen werden soll. Die Abbildungen der Gast-VM von den Gastadressen der Seitentabelle der Gast-VM auf die erwarteten physischen Hardwareadressen werden in einer Speicherinhaberschaftstabelle (Memory Ownership Table, MOT) gespeichert. In einer Ausführungsform verschlüsselt die Gast-VM die ihre Speicherinhaberschaftstabelleneinträge mit demselben Schlüsseldomänenschlüssel, der verwendet wird, um die Schlüsseldomäne für die Gast-VM zu verschlüsseln. Durch Verschlüsseln der MOT-Einträge einer Gast-VM mit dem Schlüsseldomänenschlüssel der Gast-VM kann nur ein Besitzer des Schlüsseldomänenschlüssels gültige Abbildungen für den verschlüsselten Speicher dieser Gast-VM in der Speicherinhaberschaftstabelle herstellen.
  • Beim Erstellen des anfänglichen verschlüsselten Verbraucherbilds des Verbrauchers verschlüsselt der dezentrale Verbraucher den Schlüsseldomänenschlüssel, den der Verbraucher mit dem öffentlichen Schlüssel des Servers verwenden möchte, derart, dass nur die Serverhardware (oder der/die zugrunde liegende geschützte Prozessor/Mikrocode/Firmware der Serverhardware) den Schlüsseldomänenschlüssel entschlüsseln und den Schlüsseldomänenschlüssel in der Speicherverschlüsselungs-Engine installieren kann. Der Create Key Domain(CreateKD)-Befehl (in den zuvor angegebenen Patentanmeldungen beschrieben) wird verwendet, um den verschlüsselten Schlüsseldomänenschlüssel des Verbrauchers zu der Serverhardware weiterzuleiten. Der Host-VMM kann den zugeordneten Schlüsselidentifikator (KeyID) für die Schlüsseldomäne bestimmen. Der Host-VMM hat nur auf den verschlüsselten Schlüsseldomänenschlüssel Zugriff und kann deshalb die geschützte Schlüsseldomäne der Gast-VM nicht entschlüsseln. Der Host-VMM gibt den CreateKD-Befehl an einen Prozessor aus und stellt dadurch den verschlüsselten Schlüsseldomänenschlüssel und dessen zugehörigen Schlüsselidentifikator (KeyID) bereit. Als Reaktion auf das Empfangen des CreateKD-Befehls entschlüsselt der Prozessor den verschlüsselten Schlüsseldomänenschlüssel unter Verwendung eines privaten Schlüssels, der dem Prozessor zugeordnet ist. Der Prozessor programmiert die Speicherverschlüsselungs-Engine auch dazu, den entschlüsselten Schlüsseldomänenschlüssel für jede Speicheradresse zu verwenden, die den Schlüsseldomänenidentifikator enthält.
  • Wenn die Prozessorhardware einen Befehl zum Lesen von oder Schreiben in Speicher für eine aktuell ausgeführte Gast-VM verarbeitet, ermittelt die Prozessorhardware (z. B. ein Page Miss Handler (PMH)) die durch die aktuell ausgeführte Gast-VM bereitgestellte virtuelle/lineare Adresse in den Seitentabellen des Betriebssystems, um die physische Gastadresse zu erhalten. Der Prozessor verwendet den Schlüsseldomänenschlüssel der VM beim Zugreifen auf die Seitentabellen der VM, um die physische Gastadresse für die virtuelle/lineare Adresse zu bestimmen, auf die durch den Lese- oder Schreibbefehl zugegriffen werden soll. Der Prozessor verwendet dann den Schlüsseldomänenschlüssel des VMM (durch Festlegen der KeyID des VMM in der Adresse oder indem ansonsten kein Schlüssel angegeben wird), um die physische Host-Adresse (Host Physical Address, HPA, oder physische Hardwareadresse) für die physische Gastadresse (Guest Physical Address, GPA) von den erweiterten Seitentabellen zu erhalten, die durch den VMM verwaltet werden. Wenn die physische Gastadresse (Guest Physical Address, GPA) in den zwischengespeicherten Abbildungen nicht gefunden wird, lädt ein Page Miss Handler (PMH) die erweiterten Seitentabellen (Extended Page Tables, EPTs) aus einem unverschlüsselten Speicher (oder auf andere Weise unter Verwendung der KeyID des VMM). Der PMH führt einen Page Walk der EPTs durch, um eine Abbildung von der virtuellen/linearen Gastadresse auf eine physische Hardwareadresse zu suchen.
  • In einer Ausführungsform endet der EPT-Walk des PMH mit einem Verifizieren, dass die gefundene physische Hardwareadresse, die einer gegebenen physischen Gastadresse entspricht, mit der erwarteten physischen Hardwareadresse der Gast-VM übereinstimmt. Diese Verifizierung wird unter Verwendung einer Speicherinhaberschaftstabelle (Memory Ownership Table, MOT) durchgeführt. Die Prozessorhardware verwendet den aktuell ausgeführten Speicherverschlüsselungsschlüssel der Gast-VM (Schlüsseldomänenschlüssel), um den Speicherinhaberschaftstabelleneintrag zu entschlüsseln, um die erwartete physische Hardwareadresse zu bestimmen.
  • Die Speicherinhaberschaftstabelle, als eine Tabelle, kann durch die physische Adresse der Seite indiziert werden, auf die zugegriffen wird. Die MOT kann auf einen nicht zwischengespeicherten (nicht bereits im TLB) Speicherzugriff überprüfen, einschließlich Zugriffen von direkten physischen Adressen, die ein Paging umgehen. Zugriffe von direkten physischen Adressen, die ein Paging umgehen, schließen ein Zugreifen auf die Adressen in der VMCS und ein Zugreifen auf die Adresse, die zum Laden einer VMCS verwendet wird, wie durch den VM Pointer Load (VMPTRLD)-Befehl durchgeführt, ein. Diese Verifizierung wird mit einer Ermittlung der gefundenen physischen Hardwareadresse in Einträgen in der Speicherinhaberschaftstabelle, die der aktuell ausgeführten Gast-VM entspricht, durchgeführt. In einer Ausführungsform bestimmt die Prozessorhardware den Schlüsseldomänenidentifikator (KD_ID) der aktuell ausgeführten Gast-VM aus den obersten Bits in der physischen Hardwareadresse, die beim Laden einer VMCS bereitgestellt wird (wie die physische Adresse, die mit dem VMPTRLD-Befehl verwendet wird). Die MOT kann auch angeben, ob die in dem VMPTRLD-Befehl bereitgestellte physische Adresse eine VMCS ist, was die Gast-VM betrifft (weil nur der Verbraucher, der Gast oder dessen Agent eine VMCS erstellt, die mit dem Schlüsseldomänenschlüssel verschlüsselt ist).
  • Wenn der Speicherinhaberschaftstabelleneintrag auf geeignete Weise entschlüsselt wird und nicht beschädigt ist, wird die gefundene physische Hardwareadresse des EPT-Eintrags mit der erwarteten physischen Hardwareadresse verglichen, die in der Speicherinhaberschaftstabelle für die physische Gastadresse gespeichert ist. Wenn die physische Hardwareadresse der EPT mit der erwarteten physischen Hardwareadresse der Gast-VM übereinstimmt, kann die Prozessorhardware das Lesen aus dem oder Schreiben in den Speicher fortsetzen. In einer Ausführungsform wird die Abbildung von der virtuellen/linearen Adresse in die physische Hardwareadresse in einem Übersetzungspuffer und/oder Cache gespeichert.
  • Wenn die physische Hardwareadresse der EPT mit der erwarteten physischen Hardwareadresse der Gast-VM nicht übereinstimmt, kann die Gast-VM zum Beenden gezwungen werden oder kann der Prozessor den Versuch des Lesens aus dem oder Schreibens in den Speicher abbrechen.
  • Diese Techniken schützen die Arbeitslast des Verbrauchers vor einem Zugriff oder einer Bearbeitung durch den Host-VMM, ermöglichen es aber dem Host-VMM, die volle Kontrolle über die Plattform beizubehalten und virtuelle Gastmaschinen, die auf der Plattform ausgeführt werden, zu verwalten. Speicherverschlüsselungstechnologie schützt Gast-VM-Arbeitslasten vor physischen Angriffen und verhindert, dass der Host-VMM auf den (verschlüsselten) Speicher der VM zugreift. Weder die Software des Cloud-Dienst-Anbieters noch Administratoren noch eine Person mit physischem Zugriff auf den Server des Cloud-Dienst-Anbieters kann auf geschützte Gast-VMs zugreifen oder diese modifizieren. Der unter Verwendung der hierin beschriebenen Techniken bereitgestellte Schutz stellt dieselbe Ebene der Vertraulichkeit und Sicherheit bereit, die der Verbraucher hätte, wenn er die Arbeitslast in einer privaten Cloud (vor Ort) ausführen würde.
  • Nun Bezug nehmend auf 1 ist ein Blockdiagramm gezeigt, das Komponenten einer typischen Umgebung einer virtuellen Maschine 100 zeigt. Eine typische Implementierung einer Umgebung einer virtuellen Maschine, die in einem Server eines Cloud-Dienst-Anbieters bereitgestellt wird, ist gezeigt. Eine Serverhardware 110 schließt einen Speicher 112 und eine Speicherverschlüsselungs-Engine 114 ein.
  • Auf der Serverhardware 110 wird eine Virtual Machine Monitor(VMM)-Schicht 120 ausgeführt. In der gezeigten typischen Umgebung einer virtuellen Maschine 100 ist die VMM-Schicht 120 eine Computersoftware oder Firmware, die virtuelle Maschinen (VMs), wie VM1 1301 , VM2 1302 und VM3 1303 , auf der Serverhardware 110 des Cloud-Dienst-Anbieters erstellt und ausführt. Jede der VMs VM1 1301 , VM2 1302 und VM3 1303 ist in 1 als eigenständiger Block gezeigt, der verschiedene VMs darstellt, die alle unter der Kontrolle einer gemeinsamen VMM-Schicht 120 sind. Die VMM-Schicht 120 stellt Zugriff auf Serverressourcen, wie die Serverhardware 110, für die VMs bereit, die der VMM steuert.
  • Die VMM-Schicht 120 verwendet Datenstrukturen, wie eine VM-Steuerstruktur (VMCS) 124 und erweiterte Seitentabellen (Extended Page Tables, EPTs) 126, um die Ausführung von VMs zu steuern. Die VMCS ist eine Datenstruktur in Speicher, die einmal für jede VM vorhanden ist, während sie durch den VMM verwaltet wird. Mit jeder Änderung des Ausführungskontexts zwischen verschiedenen VMs wird die VMCS für die aktuelle VM wiederhergestellt, wodurch der Zustand des virtuellen Prozessors der VM definiert wird. Erweiterte Seitentabellen (Extended Page Tables, EPTs) werden verwendet, um den Speicher des virtuellen Prozessors einer VM von durch den Gast verwendeten physischen Gastadressen auf die durch den Host verwalteten physischen Adressen neu abzubilden, wodurch es dem Host erlaubt wird, zuzuweisen, welche Speicherressourcen/-orte für einen Gast verfügbar sind.
  • Die Software oder Firmware der VMM-Schicht 120 wird durch den Cloud-Dienst-Anbieter bereitgestellt und ist Teil der vertrauenswürdigen Rechenbasis (Trusted Computing Base, TCB) für jede VM. Moderne Betriebssysteme versuchen, die Größe der TCB zu reduzieren, sodass eine erschöpfende Untersuchung der TCB-Codebasis (mittels eines/einer manuellen oder computergestützten Software-Audits oder Programmverifizierung) durchführbar wird.
  • In der normalen Umgebung einer virtuellen Maschine 100 von 1 befindet sich der durch den Cloud-Dienst-Anbieter bereitgestellte VMM 122 in der TCB von jeder der VMs VM1 1301 , VM2 1302 und VM3 1303 . Die Einbeziehung des VMM 122 in die TCB verhindert, dass eine bestimmte VM, wie die VM1 1301 , den VMM 122, der diese bestimmte VM steuert, sieht, misst oder diesem vertraut. Der Cloud-Dienst-Anbieter kann den VMM 122 zu einer beliebigen Zeit ohne das Wissen des Inhabers der VM VM1 1301 ändern. Des Weiteren besteht keine kryptografische Trennung zwischen VMs. Wenn der VMM nicht kompromittiert wurde, kann eine beschädigte VM über den kompromittierten VMM, dem die zweite VM dennoch vertraut, auf private Daten in einer zweiten VM zugreifen.
  • Damit ein Verbraucher eine Versicherung empfängt, dass der VMM, der die Prozesse/VMs des Verbrauchers steuert, vertrauenswürdig ist, verwenden die meisten bekannten Techniken Hardware, um die auf der dezentralen Maschine in der Cloud ausgeführte Software/Firmware (in diesem Fall den VMM 122) zu messen und dem Verbraucher zu bestätigen, dass die auf der dezentralen Maschine in der Cloud ausgeführte Software/Firmware eine Version der Software/Firmware ist, die der Verbraucher erwartet. Dadurch, dass der VMM des öffentlichen Cloud-Dienst-Anbieters in der TCB des Verbrauchers enthalten ist, hat der Verbraucher keine Möglichkeit, eine durch den öffentlichen Cloud-Dienst-Anbieter erteilte Bestätigung der Vertrauenswürdigkeit unabhängig zu beurteilen, noch kann der Verbraucher wissen, dass der VMM nach der Durchführung einer Messung unkompromittiert bleibt.
  • Nun, unter Bezugnahme auf 2, ist ein Blockdiagramm einer Cloud-Dienst-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt, kann ein Netzwerk 200 verwendet werden, um es Verbrauchern zu erlauben, Dienste, einschließlich Virtualisierungsdiensten, von einem öffentlichen Cloud-Dienst-Anbieter anzufordern. Wie zu sehen ist, kann das Netzwerk 200 einem beliebigen Typ von Kommunikationsnetzwerk entsprechen und kann viele verschiedene Typen von Rechenvorrichtungen einschließen, die über ein Netzwerk, wie das Internet 220, miteinander verbunden sind.
  • Ein Cloud-Speicher 210 kann als Teil eines Datenzentrums bereitgestellt werden, das verschiedene Rechenvorrichtungen, Speichervorrichtungen und so weiter einschließt. Als ein Beispiel kann der Cloud-Speicher 210 eine Speichervorrichtung sein, die mehrere Speicherkomponenten, wie Platten, optischen oder halbleiterbasierten Speicher, einschließt. Der Cloud-Speicher 210 kann zum Beispiel als ein Repository von Hauptkopien von verschiedenen Anwendungen, einschließlich einer Virtual Machine Monitor(VMM)-Anwendung, wirken, das virtuelle Maschinen instanziiert, um Dienste als Reaktion auf die Anforderung eines Verbrauchers bereitzustellen. In der in 2 gezeigten Ausführungsform wird eine Hauptkopie einer VMM-Anwendung in Form eines VMM-Bilds 212 gespeichert. Das VMM-Bild 212 ist ein Softwarebild mit einem Softwarestapel, der dazu ausgelegt ist, eine Plattform für virtuelle Maschinen in Form eines Virtual Machine Monitor (VMM) bereitzustellen.
  • Wie in 2 weiter zu sehen ist, können somit an demselben Ort, z. B. als Teil desselben Datenzentrums, ein oder mehrere Server eines öffentlichen Cloud-Dienst-Anbieters, wie Server eines öffentlichen Cloud-Anbieters 2151 und 2152 , an den Cloud-Speicher 210 gekoppelt werden. In verschiedenen Ausführungsformen können Server eines öffentlichen Cloud-Dienst-Anbieters verwendet werden, um Verbraucherdienstanforderungen, einschließlich Virtualisierungsanforderungen, zu bedienen. Zum Beispiel kann jeder Server eines öffentlichen Cloud-Dienst-Anbieters eine oder mehrere virtuelle Maschinen für einen Verbraucher hosten. In dem in 2 gezeigten Beispiel hostet der Server eines öffentlichen Cloud-Anbieters 2151 zwei virtuelle Maschinen, VM1 2401 und VM2 2402 . In ähnlicher Weise hostet der Server eines öffentlichen Cloud-Anbieters 2152 zwei virtuelle Maschinen, VM1 2403 und VM2 2404 . In der gezeigten Ausführungsform führt jeder der Server eines öffentlichen Cloud-Anbieters 2151 und 2152 auch eine jeweilige VMM-Instanz des VMM-Bilds 212 als VMM 2221 und VMM 2222 aus.
  • Wie in 2 gezeigt, können verschiedene Verbrauchervorrichtungen, z. B. Cloud-Dienst-Verbrauchervorrichtungen 2301 und 2302 , vorhanden sein. Diese Cloud-Dienst-Verbrauchervorrichtungen können persönliche Vorrichtungen eines gegebenen Benutzers sein, wie ein Smartphone, ein Tablet-Computer, ein Desktop-Computer und so weiter. Alternativ dazu können Cloud-Dienst-Verbrauchervorrichtungen Server für eine Organisation sein, die Cloud-Dienste in Anspruch nimmt. Außerdem können Cloud-Dienst-Verbrauchervorrichtungen über eine Software nachgebildet oder selbst in virtuellen Maschinen (VMs) ausgeführt werden. Mit anderen Worten kann ein Emulator oder Simulator die Hardware des Cloud-Anbieters derart in Software nachbilden, dass der Verbraucher Emulatoren der Hardware des Cloud-Anbieters auf den Vorrichtungen des Verbrauchers ausführen kann.
  • Jede der Cloud-Dienst-Verbrauchervorrichtungen 2301 und 2302 stellt einen jeweiligen Cloud-Dienst-Verbraucher 2311 und 2312 und ein jeweiliges VM-Bild 2321 und 2322 bereit. Die Cloud-Dienst-Verbraucher 2311 und 2312 können zum Beispiel eine Client-Komponente einer Cloud-Dienst-Anwendung sein, die verwendet wird, um Cloud-Dienste anzufordern. Auf Cloud-Dienst-Verbraucher, wie die Cloud-Dienst-Verbraucher 2311 und 2312 , wird hierin als „Verbraucher“ Bezug genommen. Die VM-Bilder 2321 und 2322 können in einem Speicher (nicht gezeigt) gespeichert werden, der an die jeweiligen Cloud-Dienst-Verbrauchervorrichtungen 2301 und 2302 gekoppelt ist. Diese VM-Bilder werden durch den Verbraucher für den Cloud-Dienst-Anbieter bereitgestellt und verwendet, um eine sichere VM, wie VM1 2401 , zu erstellen, die auf dem Server eines Cloud-Anbieters 2151 ausgeführt wird.
  • Wenn eine sichere VM auf dem Server des Cloud-Dienst-Anbieters gemäß den hierin beschriebenen Techniken hergestellt wurde, kann der Verbraucher dann diese VM mit dem geheimen Schlüssel des Verbrauchers verwenden, um zusätzliche VMs für den Verbraucher zu erstellen. Sobald somit eine Verbraucher-VM sicher in der Cloud des Cloud-Dienst-Anbieters hergestellt werden kann, kann diese VM alle Vorgänge der Verbrauchervorrichtungen in 2, einschließlich des Erstellens von zusätzlichen sicheren VMs, durchführen. Gleichermaßen kann ein Verbraucher sichere VMs bei mehreren Cloud-Dienst-Anbietern herstellen und können diese sicheren VMs sicher über sichere Kommunikationskanäle unter Verwendung des geheimen Schlüssels des Verbrauchers interagieren.
  • Bezug nehmend auf 3 ist eine Umgebung 300 im Einklang mit der vorliegenden Offenbarung dargestellt. Die Umgebung 300 schließt eine Hardwareschicht 310, eine Gastarbeitslastschicht (d. h. eine Virtual Machine Monitor(VMM)-Schicht 320) und einen Speicher 312 ein. Eine Speicherverschlüsselungs-Engine 314 ist als Teil der Hardware 310 gezeigt. Die Speicherverschlüsselungs-Engine 314 ist angrenzend an den Speicher 312 gezeigt, um zu veranschaulichen, dass die Speicherverschlüsselungs-Engine 314 verwendet wird, um den Speicher 312 zu verschlüsseln und/oder zu entschlüsseln. Die Speicherverschlüsselungs-Engine 314 ist auch angrenzend an eine Speicherinhaberschaftstabelle (Memory Ownership Table, MOT) 380 gezeigt, um zu zeigen, dass die Speicherverschlüsselungs-Engine 314 verwendet wird, um die MOT 380 zu verschlüsseln und/oder zu entschlüsseln. In der VMM-Schicht 320 verwaltet ein VMM 322 virtuelle Maschinen und führt eine erweiterte Seitentabelle (Extended Page Table, EPT) 326.
  • Die Hardwareschicht 310, einschließlich der Speicherverschlüsselungs-Engine 314, und die VMM-Schicht 320 teilen eine Speicherinhaberschaftstabelle (Memory Ownership Table, MOT) 380. Die Speicherinhaberschaftstabelle 380 wird verwendet, um die Gastadresse einer Gast-VM auf eine tatsächliche physische Hardwareadresse (Hardware Physical Address, HPA) abzubilden. In einer Ausführungsform kann eine Gast-VM die MOT 380 verwenden, um zu verifizieren, dass eine physische Adresse, die durch den Host-VMM (hierin als eine „vom Arbeitslastmanager bereitgestellte physische Hardwareadresse“ bezeichnet) verwendet wird, für eine gegebene physische Gastadresse im Einklang mit den Speicherabbildungen der Gast-VM ist.
  • In einigen Ausführungsformen können Abschnitte eines verschlüsselten Gastbilds (z. B. Speicherseiten) kryptografisch an bestimmte physische Speicheradressen gebunden werden. Diese Bindung stellt sicher, dass das verschlüsselte Speicherbild ohne das Wissen des Gasts/Verbrauchers nicht einfach kopiert oder an alternative Speicherorte verschoben werden kann. Die Gast-VM kann die Speicherinhaberschaftstabelle 380 verwenden, um zu verifizieren, dass die physischen Gastadressen (GPAs), die verwendet werden, um auf ihr verschlüsseltes Speicherbild zuzugreifen, in den richtigen Speicherinhalten abgebildet werden. Die MOT verknüpft die GPAs des Gasts mit den physischen Hardwareadressen (Hardware Physical Addresses, HPAs), und dadurch kann der Gast-VM versichert werden, dass die Gastadressen die erwarteten/richtigen verschlüsselten Speicherinhalte referenzieren.
  • Durch Verschlüsseln einer Abbildung für die Gastarbeitslast mit dem vom Verbraucher bereitgestellten Schlüssel wird die jeweilige ursprüngliche Gastadresse der Abbildung an die jeweilige ursprüngliche physische Hardwareadresse der Abbildung gebunden. Außerdem wird durch ein Verschlüsseln von durch die Gastarbeitslast geschriebenen Inhalten mit dem vom Verbraucher bereitgestellten Schlüssel die jeweilige ursprüngliche Gastadresse der Abbildung an die verschlüsselten Inhalte der jeweiligen ursprünglichen physischen Hardwareadresse der Abbildung gebunden.
  • Der Speicher 312 ist als zwei Abschnitte, einen unverschlüsselten Speicherabschnitt 312U, der Speicher außerhalb einer Schlüsseldomäne 350 (oder möglicherweise zu einer anderen getrennten Schlüsseldomäne gehörend und somit unter Verwendung eines anderen Schlüssels verschlüsselt) darstellt, und einen verschlüsselten Speicherabschnitt 312E, der Speicher in der Schlüsseldomäne 350 darstellt, einschließend dargestellt. Virtuelle Maschinen 3301 und 3302 sind in der Schlüsseldomäne 350 gezeigt. Die virtuellen Maschinen 3301 und 3302 weisen entsprechende Steuerstrukturen für virtuelle Maschinen (VMCSs) 3241 und 3242 auf. Es sei darauf hingewiesen, dass sich die beiden VMCSs 3241 und 3242 in der Schlüsseldomäne 350 befinden und deshalb durch den Schlüsseldomänenschlüssel für die Schlüsseldomäne 350 verschlüsselt sind.
  • Jeder Verbraucher stellt seinen eigenen Schlüssel für verschlüsselten Speicher bereit und jedem Verbraucher ist eine Schlüsseldomänen-ID (KD_ID) (als KD1 gezeigt) zugewiesen. Der zugeordnete Speicher des Verbrauchers, der mit dem Schlüsseldomänenschlüssel des Verbrauchers verschlüsselt ist, kann mehrere VMs, einschließlich VMCS-Strukturen, enthalten. Der VMM hat keinen Zugriff auf den Speicher des Verbrauchers, weil dieser verschlüsselt ist, aber der VMM kann die VMs unter Verwendung der VMCSs in den verschlüsselten Speicherbereichen starten. Da der VMM das Ausführen des Speichers des Verbrauchers weiterhin neu abbilden kann, wird auch eine Speicherinhaberschaftstabelle verwendet, um zu überprüfen, dass die durch den Host-VMM verwendeten Speicherabbildungen (die „vom Arbeitslastmanager bereitgestellten physischen Host-Adressen“) mit den erwarteten physischen Hardwareadressen der Gast-VM des Verbrauchers übereinstimmen und den mit dem Schlüssel des Verbrauchers verschlüsselten Speicherbildinhalten entsprechen.
  • In einer Ausführungsform wird eine Verschlüsselungstechnik verwendet, die als ein Tweakable Block Cipher bezeichnet wird. Ein Tweakable Block Cipher akzeptiert es, dass eine zweite Eingabe, die als Tweak bezeichnet wird, zusammen mit einer Klartext- oder Geheimtexteingabe verschlüsselt wird. Der Tweak wählt zusammen mit dem Schlüssel die durch die Verschlüsselung berechnete Permutation aus. Beim Verschlüsseln des Verbraucherbilds wird die physische Hardwareadresse des Servers, in die das Verbraucherbild geladen werden soll, als der Tweak verwendet, wodurch das resultierende verschlüsselte Verbraucherbild speicherpositionsabhängig gemacht wird. Das verschlüsselte Verbraucherbild wird als speicherpositionsabhängig beschrieben, weil das verschlüsselte Verbraucherbild in die richtigen vom VMM bestimmten physischen Hardwareadressen des Servers des Cloud-Dienst-Anbieters geladen werden muss, bevor das verschlüsselte Verbraucherbild richtig entschlüsselt werden kann.
  • In einer Ausführungsform wird das Verbraucherbild unter Verwendung eines XEX-basierten getweakten Codebuchmodus mit Ciphertext Stealing (XTS) verschlüsselt. Der Verbraucher verschlüsselt das Verbraucherbild in einem speicherpositionsabhängigen XTS-Modus unter Verwendung von Seitenadressen-Tweaks und des Schlüsseldomänenschlüssels. Die richtigen physischen Adressen dafür, wo das Verbraucherbild geladen wird, sind in dem XTS-Tweak für jeden verschlüsselten Block enthalten. Andere Tweak-fähige Verschlüsselungen können auch in anderen Ausführungsformen, wie Liskov, Rivest und Wagner (LRW) oder einer Counter Mode-Verschlüsselung, verwendet werden.
  • Da das Verbraucherbild unter Verwendung einer speicherpositionsabhängigen „getweakten“ Verschlüsselung verschlüsselt ist, kann ein Angreifer Teile des Verbraucherbilds nicht im Speicher verschieben. Die Seitentabellen bilden die Programme und Daten des Verbraucherbilds auf die richtigen physischen Speicheradressen auf dem Server des Cloud-Dienst-Anbieters ab, sodass das Programmverhalten nicht böswillig geändert werden kann, weil das Verbraucherbild kryptografisch an die richtigen physischen Speicherorte gebunden ist. Mit anderen Worten kann das Verbraucherbild nicht richtig entschlüsselt werden, wenn das Verbraucherbild nicht in die richtigen physischen Speicherorte auf dem Server des Cloud-Dienst-Anbieters geladen wird. Des Weiteren können Integritätsprüfungswerte (zum Beispiel ein Nachrichtenauthentifizierungscode (Message Authentication Code, MAC) oder Hashed MAC (HMAC) basierend auf einem sicheren SHA2/3-Hash-Algorithmus der Speicherinhalte) verwendet werden, um Versuche, die Verbraucherbildinhalte und/oder den Ort in einem Speicher, in den das Verbraucherbild geladen ist, zu erkennen.
  • Da das Bild des Verbrauchers kryptografisch an die Orte der physischen Adresse gebunden sein kann, bildet die Speicherinhaberschaftstabelle (Memory Ownership Table, MOT) die physischen Gastadressen (GPAs) auf die erwarteten physischen Hardwareadressen (Hardware Physical Addresses, HPAs) ab, an die das Bild kryptografisch gebunden ist. Diese MOT-Abbildung ermöglicht es der Gast-VM, sicherzustellen, dass die Gast-VM auf die erwarteten Speicherbildinhalte für diese selbe physische Gastadresse zugreift, wenn die VM auf einen Speicher an einer bestimmten GPA zugreift.
  • Bezug nehmend auf 4 sind Datenflüsse zum Bereitstellen eines geschützten Speicherbereichs für eine Gastarbeitslast/virtuelle Maschine (VM) zwischen einem Verbraucheragenten/einer VM, einer Host-Verwaltungssoftware/einem Virtual Machine Monitor (VMM) und Hardware gezeigt. Ein Verbraucher/Agent 430 kann in verschiedenen Ausführungsformen eine dezentrale Maschine, die einem Verbraucher gehört, einen Agenten, der für den Verbraucher betrieben wird, die Gast-VM des Verbrauchers, einen vertrauenswürdigen Dritten, der Verbraucherbilder für den Verbraucher erstellt, oder ein vertrauenswürdiges eingebettetes System (z. B. eine Converged Security and Manageability Engine (CSME), wie sie von Intel® bereitgestellt wird), darstellen. In der Aktion 4.1 fordert der Verbraucheragent/die VM 430 einen Dienst von einem Cloud-Dienst-Anbieter an, was in einer Instanziierung einer virtuellen Maschine resultiert, um die Arbeitslast des Verbrauchers zu verwalten. In der Aktion 4.2.1 ordnet der VMM 422 Platz (d. h. Seiten) 412VM von unverschlüsseltem (geteiltem) Speicher 412U für den Verbraucheragenten/die VM 430 zu. In der Aktion 4.2.2 ordnet der VMM 422 Einträge in einer Speicherinhaberschaftstabelle 480 für den Verbraucheragenten/die VM zu. Die Speicherinhaberschaftstabelle 480 wird verwendet, um die Abbildungen zwischen den physischen Gastadressen des Verbraucheragenten/der VM 430 auf die erwarteten physischen Hardwareadressen des Verbraucheragenten/der VM zu verifizieren. Die Bestimmung der erwarteten physischen Hardwareadressen des Verbraucheragenten/der VM 430 ist weiter unten ausführlicher beschrieben.
  • In der Aktion 4.3 benachrichtigt der VMM 422 den Verbraucheragenten/die VM 430 über die physischen Hardwareadressen (Hardware Physical Addresses, HPAs) der Speicherorte 412VM, die in der Aktion 4.2.1 für den Verbraucheragenten/die VM 430 zugeordnet wurden. Diese physischen Hardwareadressen können physische Hardwareadressen von Seiten in einem Speicher (wie Seiten, in die das Verbraucherbild geladen werden soll), physische Hardwareadressen für Seitentabellen, Interrupt Descriptor Table-Registerinformationen und andere physische Hardwareadressen für die Server, die die Anforderung des Verbrauchers bedienen, einschließen. Neben den physischen Adressen, die zum Erstellen (XTS-Verschlüsseln) der Seiten des Speicherbilds der VM verwendet werden, verwendet der Verbraucher die physischen Adressen, um die VMCS-Struktur(en) und MOT-Einträge einzupflegen. Wie zuvor beschrieben, werden diese physischen Hardwareadressen hierin als speicherpositionsabhängige Adressinformationen bezeichnet, weil spezifische Typen von Daten (z. B. Seitentabellen) in die richtigen vom VMM bestimmten physischen Hardwareadressen auf dem Server geladen werden müssen, damit der Verbraucher agent/die VM auf geeignete Weise ausgeführt wird.
  • In der Aktion 4.4 erstellt der Verbraucheragent/die VM 430 ein verschlüsseltes Verbraucherbild unter Verwendung seines/ihres eigenen vom Verbraucher erzeugten Schlüsseldomänenschlüssels. In einer Ausführungsform verschlüsselt der Verbraucheragent/die VM das Verbraucherbild unter Verwendung der physischen Hardwareadressen, die durch den VMM 422 des Cloud-Dienst-Anbieters bereitgestellt werden.
  • In der Aktion 4.5 kann der Verbraucher eine VMCS-Struktur in das verschlüsselte Verbraucherbild einschließen, die gemäß der Spezifikation des Servers/VMM konfiguriert ist, um die Gast-VM des Verbrauchers auf geeignete Weise zu starten. Zum Beispiel definiert die VMCS den Zustand des virtuellen Prozessors einer virtuellen Maschine. Wie weiter oben angegeben, wurde der Ort der Seite, in die das VM-Bild des Verbrauchers geladen werden soll, durch den Cloud-Dienst-Anbieter als speicherpositionsabhängige Adressinformationen bereitgestellt, sodass das Bild des Verbrauchers in die richtigen vom VMM bestimmten physischen Hardwareadressen auf dem Server geladen werden kann, um es zu ermöglichen, dass der Verbraucheragent/die VM auf geeignete Weise ausgeführt wird. Die VMCS-Struktur kann verwendet werden, um ein bereits verschlüsseltes Verbraucherbild zu aktualisieren.
  • In der Aktion 4.6 werden Speicherinhaberschaftstabelleneinträge auch für die erwarteten physischen Hardwareadressen berechnet, die dem Verbraucherbild zugeordnet sind. Diese Speicherinhaberschaftstabelleneinträge sind einer bestimmten VM zugeordnet und schließen eine Abbildung von jeder physischen Gastadresse (Guest Physical Address, GPA) der Seitentabellen der VM auf die erwartete physische Hardwareadresse (erwartete HPA) der VM auf dem Server des Cloud-Dienst-Anbieters ein. Wenn eine VM anfordert, Daten für eine virtuelle/lineare Adresse abzurufen, die auf eine gegebene physische Gastadresse (Guest Physical Address, GPA) abgebildet ist, kann die tatsächliche vom VMM bestimmte (vom Arbeitslastmanager bereitgestellte) physische Hardwareadresse (Hardware Physical Address, HPA), von der die Daten abgerufen werden sollen, verifiziert werden. Diese Verifizierung kann durchgeführt werden, indem die erwartete physische Hardwareadresse (Hardware Physical Address, HPA) entsprechend der GPA mit der tatsächlichen vom Arbeitslastmanager bereitgestellten physischen Hardwareadresse (Hardware Physical Address, HPA), von der der Code/die Daten abgerufen werden sollen, verglichen wird. Wenn die erwartete HPA nicht mit der tatsächlichen HPA für eine gegebene GPA übereinstimmt, kann die anfordernde VM davon ausgehen, dass der VMM kompromittiert wurde, den Lese- oder Schreibbefehl abbrechen und das Verarbeiten beenden. Außerdem kann der Schlüsseldomänenschlüssel gesperrt werden. Wenn die erwartete HPA nicht mit der tatsächlichen HPA für die gegebene GPA übereinstimmt, kann die anfordernde VM einen Ausnahme-/Standard-Handler ausführen und den Speicherinhaberschaftstabelleneintrag mit dem Schlüsseldomänenschlüssel der VM verschlüsseln.
  • In der Aktion 4.7 stellt der Verbraucher den Speicherverschlüsselungsschlüssel mit dem Server des Cloud-Dienst-Anbieters her, indem er den zum Verschlüsseln des Verbraucherbilds verwendeten symmetrischen Schlüssel (d. h. den Schlüsseldomänenschlüssel) mit dem öffentlichen Schlüssel des Servers des Cloud-Dienst-Anbieters verschlüsselt. Die Serverhardware verhindert dann eine Offenlegung des Schlüsseldomänenschlüssels gegenüber dem Cloud-Dienst-Anbieter, dem VMM des Cloud-Dienst-Anbieters und anderen potenziellen Angreifern.
  • In der Aktion 4.8 stellt der Verbraucheragent/die VM 430 den verschlüsselten Schlüsseldomänenschlüssel, das verschlüsselte Verbraucherbild, einschließlich VMCS(s) und zugehöriger Strukturen, und verschlüsselte Speicherinhaberschaftstabelleneinträge für die VM 422 bereit.
  • In der Aktion 4.9 erstellt der VMM 422 eine Schlüsseldomäne für den Verbraucheragenten/die VM, indem er einen Create Key Domain(CreateKD)-Befehl an einen Prozessor (nicht gezeigt) in der Hardware 410 ausgibt.
  • In der Aktion 4.10 lädt der VMM 422 das verschlüsselte Verbraucherbild in die richtigen Speicherorte auf dem Server des Cloud-Dienst-Anbieters (an den physischen Hardwareadressen, die dem Verbraucheragenten/der VM 430 in der Aktion 4.2.1 zugeordnet und dem Verbraucheragenten/der VM 430 in der Aktion 4.3 kommuniziert wurden).
  • In der Aktion 4.11 kopiert die VM 422 die durch den Verbraucheragenten/die VM 430 bereitgestellten verschlüsselten Speicherinhaberschaftstabelleneinträge in die Einträge in der Speicherinhaberschaftstabelle 480, die in der Aktion 4.2.2 für den Verbraucheragenten/die VM 430 zugeordnet wurden. Dadurch enthält die Speicherinhaberschaftstabelle 480 Abbildungen von durch den Verbraucheragenten/die VM 430 verwendeten physischen Gastadressen auf erwartete physische Hardwareadressen in dem Serverspeicher 412U des Cloud-Dienst-Anbieters.
  • Der Cloud-Dienst-Anbieter kann einen Schlüsseldomänenidentifikator KD_ID für den neu bereitgestellten verschlüsselten Schlüsseldomänenschlüssel auswählen oder erzeugen. Bei Ausführung des Create_KD-Befehls leert der Hauptprozessor in der Hardware 410, der die Schlüsseldomäne erstellt, alle zuvor verwendeten Schlüsseldomänenidentifikatoren für den Verbraucheragenten/die VM 430 aus dem Speicher. Der Hauptprozessor leert auch Caches, die zuvor verwendeten Schlüsseldomänen zugeordnet sind, und programmiert die Speicherverschlüsselungs-Engine mit dem Schlüsseldomänenschlüssel, der dem neu erzeugten Schlüsseldomänenidentifikator zugeordnet ist.
  • Bezug nehmend auf 5 kann ein Cloud-Dienst-Anbieter eine sichere Enclave als ein alternatives Verfahren verwenden, um einen geschützten Speicherbereich zum Ausführen der Arbeitslast des Verbrauchers bereitzustellen. 5 zeigt einen Zeitpunkt, wenn der Platz 512VM für den Verbraucheragenten/die VM 530 in dem unverschlüsselten Speicher 512U zugeordnet wurde, wie weiter oben Bezug nehmend auf die Aktion 4.2.1 von 4 beschrieben. Des Weiteren hat der VMM 522 auch Einträge in der Speicherinhaberschaftstabelle 580 zugeordnet, wie weiter oben Bezug nehmend auf die Aktion 4.2.2 von 4 beschrieben.
  • 5 zeigt eine Ausführungsform zum Herstellen der Gastarbeitslast des Verbrauchers in dem geschützten Bereich des Speichers des Cloud-Dienst-Anbieters. In einer Ausführungsform stellt der Verbraucher ein verschlüsseltes Bild für eine Enclave bereit, die auf dem Server des Cloud-Dienst-Anbieters ausgeführt wird. Das Bild des Verbrauchers ist verschlüsselt, sodass der Cloud-Dienst-Anbieter das Bild nicht lesen kann. In einer Ausführungsform kann das Bild des Verbrauchers durch Senden des unverschlüsselten Bilds des Verbrauchers über sichere Netzwerkprotokolle, wie TLS/SSL/IPSec, die in der Enclave enden, verschlüsselt werden. Die Enclave verschlüsselt das Bild für den lokalen Server neu, um das verschlüsselte Speicherbild zu erstellen, das lokal ausgeführt wird.
  • Um einen geschützten Speicherbereich für die Verbraucherarbeitslast bereitzustellen, verwendet der VMM 522 in der Aktion 5.1 ein Merkmal einer vertrauenswürdigen Ausführungsumgebungsunterstützung 516 eines Prozessors 514 in der Hardware 510, um eine sichere Enclave 504 in dem geteilten unverschlüsselten Speicher 512U herzustellen. In der Enclave 504 kann ausgeführter Code gemessen, verifiziert und/oder auf andere Weise als authentisch bestimmt werden. Außerdem können Code und Daten, die in der Enclave 504 enthalten sind, verschlüsselt oder auf andere Weise vor einem Zugriff durch Code, der außerhalb der Enclave 504 ausgeführt wird, geschützt werden. Zum Beispiel können Code und Daten, die in der sicheren Enclave 504 enthalten sind, durch Hardwareschutzmechanismen des Prozessors 514 geschützt werden, während sie ausgeführt werden oder während sie in einem bestimmten geschützten Cache-Speicher des Prozessors 514 gespeichert werden. Der Code und die Daten, die in der sicheren Enclave 504 enthalten sind, können auch verschlüsselt werden, wenn sie in einem geteilten Cache oder dem Hauptspeicher gespeichert werden. Die vertrauenswürdige Ausführungsumgebungsunterstützung 516 kann als ein Satz von Prozessorbefehlserweiterungen ausgeführt sein, der es dem Prozessor 514 erlaubt, eine oder mehrere sichere Enclaves in dem Speicher herzustellen. Zum Beispiel kann die vertrauenswürdige Ausführungsumgebungsunterstützung 516 als eine Intel® Software Guard Extensions(SGX)-Technologie ausgeführt sein. Alternativ dazu kann eine eingebettete vertrauenswürdige Ausführungsumgebung (z. B. die Converged Security and Manageability Engine (CSME) von Intel) oder andere Umgebung, die einen sicheren Betriebsmodus (z. B. System Management Mode (SMM)/Intel®Trusted Execution Technology (TXT)) bereitstellt, ähnliche Vorgänge durchführen, um ein anfänglich verschlüsseltes Speicherbild bereitzustellen.
  • In der Aktion 5.2 erhält der Verbraucheragent/die VM 530 ein Zertifikat von der Enclave 504 und verifiziert das Zertifikat. Nach dem Zertifizieren der Enclave 504 stellt der Verbraucheragent/die VM 530 einen sicheren Kommunikationskanal zu der Enclave 504 her und stellt ein Verbraucherbild 502 für die Enclave 504 über den sicheren Kommunikationskanal bereit.
  • In der Aktion 5.3 erhält die Enclave 504 physische Hardwareadressen (Hardware Physical Addresses, HPAs) der Speicherorte 512VM, die zuvor von dem VMM 522 für den Verbraucheragenten/die VM 530 zugeordnet wurden. Diese physischen Hardwareadressen der Speicherorte 512VM sind mit verschlüsseltem Code für das Verbraucherbild 502 zu laden.
  • In der Aktion 5.4 programmiert die Enclave 504 einen lokalen Schlüsseldomänenschlüssel, der verwendet wird, um Speicherorte/physische Hardwareadressen zu verschlüsseln, die die Schlüsseldomäne für den Verbraucheragenten/die VM 530 bilden. Der Schlüsseldomänenschlüssel ist für die Enclave 504 in dem Sinne lokal, dass der Schlüsseldomänenschlüssel verwendet wird, um Speicherorte auf demselben Server wie die Enclave 504 zu verschlüsseln.
  • In der Aktion 5.5 gibt die Enclave 504 einen Create Key Domain(CreateKD)-Befehl für einen Prozessor in der Hardware 510, wie den Prozessor 514, aus.
  • In der Aktion 5.6 erstellt die Enclave 504 eine VMCS für den Verbraucheragenten/die VM 530. Die VMCS ist in einer bestimmten physischen Hardwareadresse/einem bestimmten Speicherort, die/der in der Aktion 5.3 von dem VMM 522 bereitgestellt wurde, zu speichern.
  • In der Aktion 5.7 verschlüsselt die Enclave 504 das Verbraucherbild 502 unter Verwendung des Schlüsseldomänenschlüssels, um das verschlüsselte Verbraucherbild 502E zu erzeugen. Wie weiter oben Bezug nehmend auf die Aktion 4.4 von 4 beschrieben, wird ein Tweakable Block Cipher verwendet. Beim Verschlüsseln des Verbraucherbilds wird die physische Hardwareadresse des Servers, in die das Verbraucherbild geladen werden soll, als der Tweak verwendet, wodurch das resultierende verschlüsselte Verbraucherbild speicherpositionsabhängig gemacht wird. Das verschlüsselte Verbraucherbild wird als speicherpositionsabhängig beschrieben, weil das verschlüsselte Verbraucherbild in die richtigen vom VMM bestimmten physischen Hardwareadressen des Servers des Cloud-Dienst-Anbieters geladen werden muss, bevor das verschlüsselte Verbraucherbild richtig entschlüsselt werden kann.
  • In der Aktion 5.8 berechnet die Enclave 504 Speicherinhaberschaftstabelleneinträge für das verschlüsselte Verbraucherbild 502E unter Verwendung des Schlüsseldomänenschlüssels. Diese Speicherinhaberschaftstabelleneinträge bilden die physische Gastadresse von den Seitentabellen der Gast-VM auf erwartete physische Hardwareadressen ab, in die die Enclave 504 erwartet, dass das Verbraucherbild geladen wird. Diese erwarteten physischen Hardwareadressen basieren auf den physischen Hardwareadressen, die in der Aktion 5.3 durch den VMM 522 bereitgestellt wurden.
  • In der Aktion 5.9 stellt die Enclave 504 das verschlüsselte Verbraucherbild, verschlüsselte Speicherinhaberschaftstabelleneinträge und den verschlüsselten Schlüsseldomänenschlüssel für den VMM 522 bereit. Alternativ dazu kann die Enclave 504 in der Aktion 5.9 das verschlüsselte Verbraucherbild direkt in die durch den VMM 522 bestimmten richtigen Speicherorte schreiben, anstatt das verschlüsselte Verbraucherbild für den VMM 522 bereitzustellen.
  • In der Aktion 5.10 lädt der VMM 522 das verschlüsselte Verbraucherbild 502E in die Speicherorte, die in der Aktion 5.3 durch die Enclave 504 von dem VMM 522 erhalten wurden.
  • In der Aktion 5.11 schreibt der VMM 522 die verschlüsselten Verbraucherbildspeicherinhaberschaftstabelleneinträge in die Speicherinhaberschaftstabelle 580.
  • Bezug nehmend auf 6A ist ein Datenfluss für das Herstellen eines Eintrags der Speicherinhaberschaftstabelle (Memory Ownership Table, MOT) für eine Abbildung von einer durch eine Gastarbeitslast/Gast-VM bereitgestellten ursprünglichen Gastadresse auf eine vom Arbeitslastmanager bereitgestellte ursprüngliche physische Hardwareadresse gezeigt. Die ursprüngliche Gastadresse kann abhängig von der Art der Gastarbeitslast 630 und der Art des Arbeitslastmanagers 622 eine virtuelle Gastadresse oder eine physische Gastadresse sein. In der Aktion 6.1 stellt die Gastarbeitslast 630 die ursprüngliche Gastadresse für den Arbeitslastmanager 622 bereit. In der Aktion 6.2 weist der nicht vertrauenswürdige Arbeitslastmanager 622 eine vom Arbeitslastmanager bereitgestellte ursprüngliche physische Hardwareadresse für die ursprüngliche Gastadresse zu. In der Aktion 6.3 speichert der nicht vertrauenswürdige Arbeitslastmanager 622 die vom Arbeitslastmanager bereitgestellte ursprüngliche physische Hardwareadresse mit der ursprünglichen Gastadresse in einer Seitentabelle 604. Zum Beispiel kann in dem Fall, in dem der nicht vertrauenswürdige Arbeitslastmanager 622 ein VMM ist, die Seitentabelle 604 eine erweiterte Seitentabelle sein, die eine Adressübersetzung der zweiten Ebene bereitstellt.
  • In der Aktion 6.4 stellt der nicht vertrauenswürdige Arbeitslastmanager 622 die von der Gastarbeitslast/Gast-VM 630 empfangene ursprüngliche Gastadresse für den Prozessor 614 bereit. In der Aktion 6.5 ermittelt der Prozessor 614 die ursprüngliche Gastadresse in der Seitentabelle 604, um die vom Arbeitslastmanager bereitgestellte ursprüngliche physische Hardwareadresse zu erhalten. In der Aktion 6.6 gibt der Prozessor 614 die vom Arbeitslastmanager bereitgestellte ursprüngliche physische Hardwareadresse für die ursprüngliche Gastadresse zurück. In der Aktion 6.7.1 verwendet die Gastarbeitslast 630 die vom Arbeitslastmanager bereitgestellte ursprüngliche physische Hardwareadresse als einen Index in die Speicherinhaberschaftstabelle 680, um Einträge in Bezug auf die ursprüngliche Gastadresse zu speichern. Die Gastarbeitslast 630 erstellt einen Eintrag in der MOT-Tabelle 680, indem sie in der Aktion 6.7.2 die vom Arbeitslastmanager bereitgestellte ursprüngliche physische Hardwareadresse in ein Feld für die erwartete HPA 682 und in der Aktion 6.7.3 die ursprüngliche Gastadresse in eine erwartete Gastadresse 684 schreibt. Die Gastarbeitslast kann den Eintrag auch unter Verwendung des geheimen Schlüsseldomänenschlüssels der Gastarbeitslast (Speicherverschlüsselungsschlüssel), der dem VMM nicht bekannt ist, verschlüsseln. Durch Verschlüsseln des MOT-Eintrags mit dem Schlüsseldomänenschlüssel der Gastarbeitslast schützt sich die Gastarbeitslast 630 vor MOT-Einträgen, die durch einen kompromittierten Host-Arbeitslastmanager/VMM gefälscht wurden.
  • Durch Speichern des durch die Gastarbeitslast 630 zugewiesenen Werts der ursprünglichen Gastadresse in einem Eintrag mit der vom Arbeitslastmanager bereitgestellten ursprünglichen physischen Hardwareadresse, die durch den nicht vertrauenswürdigen Arbeitslastmanager 622 bereitgestellt wurde, behält die Speicherinhaberschaftstabelle 680 die ursprünglich zugewiesenen Werte zur späteren Verwendung bei. Insbesondere sind die ursprünglich zugewiesenen Werte die Werte der erwarteten HPA und der erwarteten Gastadresse für einen Eintrag, der durch die vom Arbeitslastmanager bereitgestellte ursprüngliche physische Hardwareadresse indiziert wurde. Die erwarteten Werte für die HPA und die Gastadresse können mit den Werten verglichen werden, die in der Aktion 6.6 empfangen und in der Aktion 6.6 zum Verifizieren der Werte verwendet wurden.
  • Bezug nehmend auf 6B ist ein Datenfluss für das Abrufen eines Eintrags in der Speicherinhaberschaftstabelle 680 für eine angeforderte Gastadresse gezeigt. In der Aktion 6.8 stellt die Gastarbeitslast 630 eine angeforderte Gastadresse für den nicht vertrauenswürdigen Arbeitslastmanager 622 bereit. In der Aktion 6.9 leitet der nicht vertrauenswürdige Arbeitslastmanager 622 die angeforderte Gastadresse zur Übersetzung in eine vom Arbeitslastmanager bereitgestellte physische Hardwareadresse an den Prozessor 614 weiter. In der Aktion 6.10 übersetzt der Prozessor 614 unter Verwendung der Seitentabelle 604 die angeforderte Gastadresse in eine übersetzte vom Arbeitslastmanager bereitgestellte physische Hardwareadresse. In der Aktion 6.11 durchsucht der Prozessor 614 die Speicherinhaberschaftstabelle 680 auf Einträge, die der übersetzten vom Arbeitslastmanager bereitgestellten physischen Hardwareadresse entsprechen. Wenn ein Eintrag in der Speicherinhaberschaftstabelle 680 gefunden wird, der der übersetzten vom Arbeitslastmanager bereitgestellten physischen Hardwareadresse entspricht, wird ein Schlüsseldomänenschlüssel/Speicherverschlüsselungsschlüssel für die ausgeführte Gastarbeitslast 630 verwendet, um zu versuchen, den gefundenen MOT-Eintrag zu entschlüsseln.
  • In der Aktion 6.12 verifiziert der Prozessor 614, dass die übersetzte vom Arbeitslastmanager bereitgestellte physische Hardwareadresse die Werte aufweist, die von der Gastarbeitslast 630 erwartet werden. In einer Ausführungsform wird die vom Arbeitslastmanager bereitgestellte übersetzte physische Hardwareadresse verifiziert, wenn die folgenden Bedingungen erfüllt sind: (i) der MOT-Eintrag wurde unter Verwendung des ausgeführten Schlüsseldomänenschlüssels der Gastarbeitslast (Speicherverschlüsselungsschlüssel) richtig entschlüsselt, (ii) die erwartete physische Hardwareadresse 682 stimmt mit der übersetzten vom Arbeitslastmanager bereitgestellten physischen Hardwareadresse überein, die als ein Index in die MOT 680 verwendet wird, und (iii) die angeforderte Gastadresse stimmt mit der erwarteten Gastadresse 684 für denselben Index überein. In der Aktion 6.13 stellt der Prozessor 614 die verifizierte vom Arbeitslastmanager bereitgestellte übersetzte physische Hardwareadresse für die Gastarbeitslast 630 als die physische Hardwareadresse für die angeforderte Gastadresse bereit. Wenn der Prozessor 614 die vom Arbeitslastmanager bereitgestellte übersetzte physische Hardwareadresse nicht verifiziert, kann der Prozessor 614 einen Interrupt- oder Fehler-Handler aufrufen, um zu bewirken, dass die Gastarbeitslast 630 beendet wird, oder um andere Fehlerbehandlungsprozesse durchzuführen.
  • Nun Bezug nehmend auf 7 kann ein öffentlicher Cloud-Anbieter im Einsatz eine Umgebung 700 zum Schützen von Gastarbeitslasten herstellen, die auf einem Server eines öffentlichen Cloud-Anbieters 715 instanziiert wurden. Die veranschaulichende Umgebung 700 schließt einen Virtual Machine Monitor (VMM) 722 und eine oder mehrere virtuelle Maschinen (VMs) 730i , einen Speichermanager 760 und einen Speicherseitenfehlerdetektor 770 ein. Einige der Komponenten der Umgebung können als Hardware, Firmware, Software oder eine Kombination davon ausgeführt sein. Deshalb können in einigen Ausführungsformen eine oder mehrere der Komponenten der Umgebung 700 als eine Schaltung oder eine Sammlung von elektrischen Vorrichtungen (z. B. eine Speichermanagerschaltung 760, eine Speicherseitenfehlerdetektorschaltung 770 usw.) ausgeführt sein. Es versteht sich, dass in solchen Ausführungsformen eines oder mehrere von der Speichermanagerschaltung 760 und/oder der Speicherseitenfehlerdetektorschaltung 770 einen Abschnitt von einem oder mehreren von einer Rechen-Engine, einem Prozessor, einem E/A-Untersystem, einem Kommunikationsuntersystem und/oder anderen Komponenten des Servers eines öffentlichen Cloud-Anbieters 715 bilden können. Außerdem können in einigen Ausführungsformen eine oder mehrere der veranschaulichenden Komponenten der Umgebung 700 einen Abschnitt einer anderen Komponente bilden und/oder können eine oder mehrere der veranschaulichenden Komponenten voneinander unabhängig sein. Ferner können in einigen Ausführungsformen eine oder mehrere der Komponenten der Umgebung 700 als virtualisierte Hardwarekomponenten oder eine nachgebildete Architektur ausgeführt sein, die durch eine Rechen-Engine oder andere Komponenten des Servers eines öffentlichen Cloud-Anbieters 715 hergestellt und beibehalten werden können.
  • Der Virtual Machine Monitor (VMM) 722 ist dazu konfiguriert, die virtuellen Maschinen 730i auf dem Server eines öffentlichen Cloud-Anbieters 715 zu instanziieren. Der VMM 722 ordnet physische Hardwareadressen zu jeder virtuellen Maschine 730i zu. Der VMM 722 erstellt erweiterte Seitentabellen (Extended Page Tables, EPTs), die die physischen Gastadressen (durch die VM zugewiesen) aufnehmen und bildet diese physischen Gastadressen auf tatsächliche physische Adressen ab, die durch Hardware verwendet werden (HPAs). In einer Ausführungsform werden physische Hardwareadressen als Speicherseiten (Speicherblöcke mit fester Größe) zugewiesen.
  • In einer Ausführungsform ist jede virtuelle Maschine (VM) 730i dazu konfiguriert, ein Verbraucherbild auszuführen, das durch den Verbraucher bereitgestellt wird, für den die virtuelle Maschine instanziiert ist. Jede virtuelle Maschine 730i stellt eine VM-Seitentabelle 702i her, um eine Übersetzungsabbildung zwischen virtuellen/linearen Adressen (VA) der virtuellen Maschine und den physischen Gastadressen (Guest Physical Addresses, GPA) entsprechend den physischen Hardwareadressen, die der VM 730i durch den Virtual Machine Monitor 722 zugeordnet werden, zu speichern. Dazu kann die virtuelle Maschine 704 eine VA→GPA-Abbildung erzeugen, die verwendet wird, um eine virtuelle/lineare Adresse in eine physische Gastadresse zu übersetzen. Der VMM 722 kann erweiterte Seitentabellen (Extended Page Tables, EPTs) verwenden, um eine GPA auf eine physische Hardwareadresse (Hardware Physical Address, HPA) abzubilden.
  • In einer Ausführungsform kann der VMM 722 ferner einen Identifikator einer virtuellen Maschine (VMID) erzeugen, der jeder VM 730i zugeordnet ist, und einen VM_ID→GPA→HPA-Eintrag in die VMM-Seitentabelle 704 einschließen, um die VM 730i mit dem zugewiesenen Bereich physischer Gastadressen nachzuverfolgen. Der VM_ID-Identifikator identifiziert eindeutig jede virtuelle Maschine 730i , die auf dem Server eines öffentlichen Cloud-Anbieters 715 instanziiert ist. Andere Mittel zum Identifizieren einer virtuellen Maschine 730i , wie ein Adressraumidentifikator oder ein Schlüsseldomänenidentifikator, können ebenfalls verwendet werden.
  • Wie weiter oben erörtert, kann der Virtual Machine Monitor 722 in einigen Fällen kompromittiert sein und kann versuchen, die Abbildungen böswillig von den physischen Gastadressen einer VM in physische Host-Adressen zu ändern. Um sicherzustellen, dass der Server eines öffentlichen Cloud-Anbieters 715 nicht böswillig kompromittiert ist, kann die VM 730i einen Eintrag bereitstellen, der in einer Speicherinhaberschaftstabelle 706 zu speichern ist. Die Speicherinhaberschaftstabelleneinträge 7061 und 7062 behalten die ursprünglichen GPA→erwartete HPA-Abbildungen verschlüsselt mit dem Schlüsseldomänenschlüssel der VM 730i bei. Die Speicherinhaberschaftstabelle 706 enthält deshalb verschlüsselte Einträge, die einen Schlüsseldomänenschlüssel→GPA→erwartete HPA-Abbildungseintrag bestimmen. Der VMID oder KD_ID wird verwendet, um den Schlüsseldomänenschlüssel auszuwählen, der zum Entschlüsseln eines MOT-Eintrags verwendet werden soll.
  • Der Speichermanager 760 ist dazu konfiguriert, Speicheranforderungen von den virtuellen Maschinen 730i zu verwalten und zugleich Sicherheit für den virtuellen Speicher der virtuellen Maschinen 730i bereitzustellen. Im Einsatz ist der Speichermanager 760 dazu konfiguriert, eine Speicherzugriffsanforderung, einschließlich einer virtuellen/linearen Adresse, von einer virtuellen Maschine 730i zu empfangen. Als Reaktion auf die Speicherzugriffsanforderung führt der Speichermanager 760 eine Übersetzung der virtuellen/linearen Adresse in eine übersetzte physische Hardwareadresse des Servers eines öffentlichen Cloud-Anbieters 715 unter Verwendung der VM-Seitentabelle 702i , die der anfordernden virtuellen Maschine 730i zugeordnet ist, und der VMM-Seitentabelle (auch als die erweiterte Seitentabelle (Extended Page Table, EPT) bezeichnet) 704, die dem Virtual Machine Monitor 722 zugeordnet ist, durch.
  • Um Sicherheit für den virtuellen Speicher der virtuellen Maschinen 730i bereitzustellen, kann der Speichermanager 760 dazu konfiguriert sein, die Übersetzung der Gastadresse in die übersetzte physische Hardwareadresse zu verifizieren. In einer Ausführungsform basiert die Verifizierung auf einem Vergleich der übersetzten physischen Hardwareadresse für eine gegebene physische Gastadresse mit einer erwarteten physischen Host-Adresse, die in der Speicherinhaberschaftstabelle 706 für diese gegebene physische Gastadresse (Guest Physical Address, GPA) gespeichert ist.
  • Der Speicherseitenfehlerdetektor 770 ist dazu konfiguriert, einen Speicherseitenfehler zu erkennen, der während einer Adressübersetzung unter Verwendung der Seitentabellen, die einer virtuellen Maschine 730i oder dem Virtual Machine Monitor 722 zugeordnet sind, auftreten kann. Zum Beispiel kann der Speicherseitenfehlerdetektor 770 einen Speicherseitenfehler erkennen, wenn eine übersetzte physische Adresse (z. B. eine übersetzte physische Gastadresse und/oder eine übersetzte physische Hardwareadresse) nicht in einer entsprechenden Seitentabelle vorhanden ist. Wenn zum Beispiel der Speichermanager 770 eine virtuelle/lineare Adresse einer virtuellen Maschine 730i in eine übersetzte physische Gastadresse übersetzt, bestimmt der Speicherseitenfehlerdetektor 770, ob die übersetzte physische Gastadresse in der VM-Seitentabelle 702i , die der virtuellen Maschine 730i zugeordnet ist, vorhanden ist. Wenn die übersetzte physische Gastadresse in der VM-Seitentabelle 702i nicht vorhanden ist, erzeugt der Speicherseitenfehlerdetektor 770 einen Speicherseitenfehler. Wenn außerdem der Speichermanager 760 die übersetzte physische Gastadresse in eine übersetzte physische Hardwareadresse übersetzt, bestimmt der Speicherseitenfehlerdetektor 770, ob die übersetzte physische Hardwareadresse in der VMM-Seitentabelle 704, die dem Virtual Machine Monitor 722 zugeordnet ist, vorhanden ist. Wenn die übersetzte physische Hardwareadresse in der VMM-Seitentabelle 704 nicht vorhanden ist, erzeugt der Speicherseitenfehlerdetektor 770 einen Speicherseitenfehler oder VMExit, um die Gast-VM zu beenden. In einigen Ausführungsformen kann der Speicherseitenfehlerdetektor 770 einen Benutzer darüber benachrichtigen, dass der Server eines öffentlichen Cloud-Anbieters 715 kompromittiert wurde, oder er kann den Schlüsseldomänenschlüssel sperren, sodass der VMM nicht dazu in der Lage ist, das Ausführen der VM fortzusetzen.
  • Bezug nehmend auf 8 veranschaulicht ein Flussdiagramm ein Verfahren 800, das durch einen Server eines Cloud-Dienst-Anbieters durchgeführt werden kann, um eine Speicherinhaberschaftstabelle gemäß einer Ausführungsform der Erfindung herzustellen. Bei dem „lnitialisieren eines Virtual Machine Monitor (VMM)“-Block 810 wird ein Host-Arbeitslastmanager in Form eines Virtual Machine Monitor auf einem Server eines Cloud-Dienst-Anbieters initialisiert. Wie weiter oben beschrieben, kann der Host-Arbeitslastmanager einem Betriebssystem in einer nicht virtualisierten Umgebung entsprechen; die hierin enthaltene Beschreibung des VMM als ein Host-Arbeitslastmanager gilt gleichermaßen für das Betriebssystem oder andere Arbeitslastmanager in nicht virtualisierten Umgebungen.
  • Der VMM von 8 kann eine Gastarbeitslast in Form einer virtuellen Gastmaschine (VM) instanziieren, um einen Cloud-Dienst für einen anfordernden Verbraucher bereitzustellen. Bei dem „Neue VM instanziieren?“-Entscheidungspunkt 814 wird durch den Host-Arbeitslastmanager/VMM eine Bestimmung vorgenommen, ob eine neue Gastarbeitslast/Gast-VM instanziiert wird. Eine neue Gastarbeitslast/Gast-VM kann zum Beispiel instanziiert werden, wenn eine neue Anforderung für Cloud-Dienste von einem Verbraucher empfangen wird. Wenn bei dem „Neue VM instanziieren?“-Entscheidungspunkt 814 keine neue VM instanziiert werden soll, kehrt die Steuerung zu dem „Neue VM instanziieren?“-Entscheidungspunkt 814 zurück und wartet der VMM weiter auf das Erfordernis, eine neue Gastarbeitslast/Gast-VM zu instanziieren. Wenn eine neue Gastarbeitslast/Gast-VM bei dem „Neue VM instanziieren?“-Entscheidungspunkt 814 instanziiert werden soll, wechselt die Steuerung zu dem „VMM ordnet physische Hardwareadressen (Hardware Physical Addresses, HPAs) (Seiten) zu der neuen VM zu“-Block 816.
  • Bei dem „VMM ordnet physische Hardwareadressen (Hardware Physical Addresses, HPAs) (Seiten) zu der neuen VM zu“-Block 816 ordnet der Host-Arbeitslastmanager/VMM physische Hardwareadressen zur Verwendung durch die Gastarbeitslast/Gast-VM zu, wie Bezug nehmend auf 4, 5 und 6A beschrieben. Der VMM kann auch einen Identifikator einer virtuellen Maschine (VM_ID) zu der Gastarbeitslast/Gast-VM zuweisen.
  • Von dem „VMM ordnet physische Hardwareadressen (Hardware Physical Addresses, HPAs) (Seiten) zu der neuen VM zu“-Block 816 wechselt die Steuerung dann zu dem „VMM startet neue VM und stellt Informationen für die zugeordneten HPAs (Seiten) bereit“-Block 822, wobei der Host-Arbeitslastmanager/VMM die neue Gastarbeitslast/Gast-VM startet und Informationen für die HPAs (Seiten) bereitstellt, die der neuen Gastarbeitslast/Gast-VM zugeordnet sind. Zum Beispiel kann der Host-Arbeitslastmanager/VMM speicherpositionsabhängige Adressinformationen für die Gastarbeitslast/Gast-VM bereitstellen. Diese speicherpositionsabhängigen Adressinformationen können physische Hardwareadressen von Seiten in einem Speicher (wie Seiten, in die das Verbraucherbild geladen werden soll), Interrupt Descriptor Table-Registerinformationen und andere physische Hardwareadressen für die Server, die die Anforderung des Verbrauchers bedienen, einschließen. Diese physischen Hardwareadressen werden hierin als speicherpositionsabhängige Adressinformationen bezeichnet, weil spezifische Typen von Daten (z. B. Seitentabellen) in die richtigen vom VMM bestimmten physischen Hardwareadressen auf dem Server geladen werden müssen, damit der Verbraucheragent/die VM auf geeignete Weise ausgeführt wird. Der VMM kann auch den Identifikator einer virtuellen Maschine VMID für die Gastarbeitslast/Gast-VM bereitstellen. Die Steuerung wechselt von dem „VMM startet neue VM und stellt Informationen für die zugeordneten HPAs (Seiten) bereit“-Block 822 zu dem „Neue VM initialisiert eine VMCS und bestimmt erwartete HPAs“-Block 824.
  • Bei dem „Neue VM initialisiert eine VMCS und bestimmt erwartete HPAs“-Block 824 initialisiert die neue Gastarbeitslast/Gast-VM Steuerstrukturen, die bestimmen, wie die Gastarbeitslast ausgeführt werden soll. Zum Beispiel wird für eine Gast-VM eine Steuerstruktur für virtuelle Maschinen (VMCS) initialisiert, um physische Hardwareadressen anzugeben, die während der Ausführung der Gastarbeitslast/Gast-VM zu verwenden sind. Diese physischen Hardwareadressen können physische Hardwareadressen von Seiten in einem Speicher (wie Seiten, in die das Verbraucherbild geladen werden soll) und physische Hardwareadressen für die Seitentabellen der Gast-VM einschließen. Ausgehend von den in der VMCS initialisierten physischen Hardwareadressen kann die Gast-VM auch Werte von erwarteten physischen Hardwareadressen bestimmen, die während künftigen Ausführungszyklen in der VMCS enthalten sein sollten. Zum Beispiel enthält eine VMCS eine Anzahl von physischen Host-Adressen, wie den Ort des Stamms der erweiterten Seitentabelle (der EPTP oder erweiterte Seitentabellenzeiger). Die VMCS kann auch physische Hardwareadressen für Datenstrukturen, wie eine MSR-Beenden-Tabelle, eine VM-Informationstabelle, ein Seitenmodifikationsprotokoll usw., enthalten, die nicht durch Seitentabellen übersetzt werden. Da diese VMCS-Adressen nicht durch Seitentabellen übersetzt werden, werden diese VMCS-Adressen mit den richtigen physischen Hardwarespeicheradressen konfiguriert. Einige Ausführungsformen können es dem VMM erlauben, ausgewählte Felder der VMCS (wie den EPTP oder den Host-Zustandsbereich) zu modifizieren, indem es dem VMM selektiv erlaubt wird, VMWrite-Vorgänge bei ausgewählten Feldern durchzuführen, die die Sicherheit nicht kompromittieren und das Verhalten der VM nicht verändern. Von dem „Neue VM initialisiert eine VMCS und bestimmt erwartete HPAs“-Block 824 wechselt die Steuerung zu dem „Neue VM richtet VM-Seitentabelle mit VA→GPA-Abbildungen ein“-Block 826.
  • Bei dem „Neue VM richtet VM-Seitentabelle mit VA→GPA-Abbildungen ein“-Block 826 richtet die neu hergestellte Gastarbeitslast/VM eine VM-Seitentabelle mit Abbildungen von einer virtuellen Adresse (VA) auf eine physische Gastadresse (Guest Physical Address, GPA) ein. Die physischen Gastadressen (Guest Physical Addresses, GPAs) werden durch den VMM unter Verwendung von erweiterten Seitentabellen (Extended Page Tables, EPTs) auf physische Hardwareadressen (Hardware Physical Addresses, HPAs) abgebildet. Bei dem „Neue VM richtet VM-Seitentabelle mit VA→GPA-Abbildungen ein“-Block 826 weist die Gastarbeitslast/Gast-VM virtuelle/lineare Adressen zu den durch die Gast-VM ausgewählten physischen Gastadressen (Guest Physical Addresses, GPAs) zu. Der Host-VMM verwendet EPTs, um die GPAs des Gasts in die HPAs des Hosts zu übersetzen. Von dem „Neue VM richtet VM-Seitentabelle mit VA→GPA-Abbildungen ein“-Block 826 wechselt die Steuerung dann zu dem „Neue VM speichert MOT-Eintrag als GPA→erwartete HPA“-Block 830.
  • Bei dem „Neue VM speichert MOT-Eintrag als GPA→erwartete HPA“-Block 830 gibt die neue VM eine Abbildung zwischen der GPA und einer erwarteten HPA als einen Speicherinhaberschaftstabelleneintrag an. Der Speicherinhaberschaftstabelleneintrag kann dann durch die Gastarbeitslast/Gast-VM verwendet werden, um zu bestätigen, dass zu einem späteren Zeitpunkt durch den Host-Arbeitslastmanager/VMM bereitgestellte Adressen mit den ursprünglich bereitgestellten Abbildungen auf die verschlüsselten Bildinhalte im Einklang sind und nicht kompromittiert wurden. Von dem „Neue VM speichert MOT-Eintrag als GPA→erwartete HPA“-Block 830 wechselt die Steuerung dann zu dem „Neue VM verschlüsselt MOT-Eintrag mit Schlüsseldomänenschlüssel und stellt MOT-Eintrag für den VMM bereit“-Block 832.
  • Bei dem „Neue VM verschlüsselt MOT-Eintrag mit Schlüsseldomänenschlüssel und stellt MOT-Eintrag für den VMM bereit“-Block 832 verschlüsselt die neue Gastarbeitslast/Gast-VM den Speicherinhaberschaftstabellen(Memory Ownership Table, MOT)-Eintrag mit dem Schlüsseldomänenschlüssel, der zum Verschlüsseln von Speicher verwendet wird, der der neuen Gastarbeitslast/Gast-VM zugewiesen ist. Beim Verschlüsseln des MOT-Eintrags kann die VM auch die physische Hardwareadresse des Eintrags in der MOT-Tabelle als einen Tweak für die Verschlüsselung verwenden. Dieses Verschlüsselungsprotokoll wahrt die Konsistenz mit dem Verwenden einer XTS-Speicherverschlüsselung, wenn eine physische Hardwarespeicheradresse als ein Tweak verwendet wird, weil die MOT-Tabelle selbst ebenfalls in einem Speicher gespeichert wird. Durch Verschlüsseln der MOT-Einträge mit dem Schlüsseldomänenschlüssel stellt die Gastarbeitslast/Gast-VM sicher, dass der Host-Arbeitslastmanager/VMM die MOT-Einträge nicht lesen, modifizieren oder fälschen kann. Von dem „Neue VM verschlüsselt MOT-Eintrag mit Schlüsseldomänenschlüssel“-Block 832 wechselt die Steuerung dann zu dem „VMM schreibt verschlüsselten MOT-Eintrag in die Speicherinhaberschaftstabelle“-Block 834.
  • Bei dem „VMM schreibt verschlüsselten MOT-Eintrag in die Speicherinhaberschaftstabelle“-Block 834 schreibt der Host-Arbeitslastmanager/VMM den durch die Gastarbeitslast/Gast-VM bereitgestellten verschlüsselten MOT-Eintrag in die Speicherinhaberschaftstabelle an einem Ort in der Tabelle entsprechend der erwarteten physischen Hardwareadresse des MOT-Eintrags. In einer Ausführungsform wird der Identifikator der Gastarbeitslast/Gast-VM (KD_ID) ebenfalls in der Speicherinhaberschaftstabelle erfasst.
  • Bezug nehmend auf 9 veranschaulicht ein Flussdiagramm ein Verfahren 900 für den Zugriff auf Daten in einem Speicher als Reaktion auf eine Anforderung von einer Gastarbeitslast. In dem „Empfangen einer Anforderung für den Zugriff auf eine Gastadresse“-Block 902 empfängt ein Prozessor eine Anforderung von einer Gastarbeitslast/Gast-VM für den Zugriff auf Daten an einer durch die Gast-VM bereitgestellten Gastadresse. Die angeforderte Gastadresse kann eine virtuelle/lineare Gastadresse oder eine physische Gastadresse sein, und der Prozessor sucht eine tatsächliche physische Hardwareadresse entsprechend der angeforderten Gastadresse. Der Begriff „vom Arbeitslastmanager bereitgestellte physische Hardwareadresse“ wird hierin verwendet, um auf die Übersetzung der niedrigsten Ebene einer Gastadresse in die tatsächliche physische Hardwareadresse Bezug zu nehmen. In einer virtualisierten Umgebung kann die Übersetzung der niedrigsten Ebene einer Gastadresse in eine tatsächliche physische Hardwareadresse unter Verwendung einer durch den VMM verwalteten erweiterten Seitentabelle bereitgestellt werden. In einer nicht virtualisierten Umgebung kann die Übersetzung der niedrigsten Ebene einer Gastadresse in eine tatsächliche physische Hardwareadresse unter Verwendung einer durch das Betriebssystem verwalteten Seitentabelle bereitgestellt werden.
  • Von dem „Empfangen einer Anforderung für den Zugriff auf eine Gastadresse“-Block 902 wechselt die Steuerung dann zu dem „Suchen einer vom Arbeitslastmanager bereitgestellten HPA, die auf die angeforderte Gastadresse abgebildet ist“-Block 904. In einer Ausführungsform wird die HPA durch den Prozessor in den Seitentabellen für den Host-Arbeitslastmanager/VMM oder durch einen Page Miss Handler des Prozessors in den erweiterten Seitentabellen für den Host-Arbeitslastmanager/VMM gefunden. In einer Ausführungsform „walkt“ der Prozessor (Page Miss Handler, PMH) die Seitentabellen, um die angeforderte Gastadresse in eine physische Hardwareadresse (Hardware Physical Address, HPA) zu übersetzen, sodass der Speicherzugriff (Laden/Speichern/Ausführen) abgeschlossen werden kann. Der Prozessor/PMH ermittelt die angeforderte Gastadresse in den Seitentabellen/EPTs, um eine „vom Arbeitslastmanager bereitgestellte physische Hardwareadresse (Hardware Physical Address, HPA)“ zu finden, die auf die angeforderte Gastadresse abgebildet ist. Der Begriff „vom Arbeitslastmanager bereitgestellte physische Hardwareadresse“ wird verwendet, um anzugeben, dass die physische Hardwareadresse durch den Host-Arbeitslastmanager oder VMM bereitgestellt wird und deshalb für die Gastarbeitslast/Gast-VM nicht vertrauenswürdig ist. Falls ein kompromittierter VMM versucht, den Steuerfluss der Gastarbeitslast/Gast-VM zu modifizieren, kann der kompromittierte VMM die physische Hardwareadresse modifizieren, die für die Gastarbeitslast/Gast-VM für die angeforderte Gastadresse bereitgestellt wird. Aus diesem Grund wird die vom Arbeitslastmanager bereitgestellte physische Hardwareadresse im nächsten Schritt verifiziert.
  • In einer Ausführungsform kann die Gastarbeitslast nach dem Suchen der vom Arbeitslastmanager bereitgestellten physischen Hardwareadresse die Speicherabbildung von der angeforderten Gastadresse auf die vom Arbeitslastmanager bereitgestellte HPA in der Speicherinhaberschaftstabelle speichern. Des Weiteren kann die angeforderte Gastadresse als eine erwartete Gastadresse für die vom Arbeitslastmanager bereitgestellte HPA gespeichert werden, um die Speicherabbildung zur zukünftigen Verwendung beizubehalten. Das Speichern einer erwarteten Gastadresse ermöglicht es dem Prozessor, die angeforderte Gastadresse mit der erwarteten Gastadresse in der MOT für die Gastarbeitslast/Gast-VM, die einen Zugriff anfordert, zu vergleichen. Von dem „Suchen einer vom Arbeitslastmanager bereitgestellten HPA, die auf die angeforderte Gastadresse abgebildet ist“-Block 904 wechselt die Steuerung dann zu dem „Verifizieren einer vom Arbeitslastmanager bereitgestellten HPA“-Block 906.
  • Bei dem „Verifizieren einer vom Arbeitslastmanager bereitgestellten HPA“-Block 906 wird die für die angeforderte Gastadresse gefundene physische Hardwareadresse verifiziert. In einer Ausführungsform wird die HPA unter Verwendung der weiter oben beschriebenen Speicherinhaberschaftstabelle verifiziert. Bei dem „Lesen eines MOT-Eintrags für eine vom WM bereitgestellte HPA-Abbildung und Bestimmen eines Entschlüsselungsschlüssels“-Block 908 wird der verschlüsselte MOT-Eintrag entsprechend der in den Seitentabellen gefundenen vom Arbeitslastmanager bereitgestellten übersetzten HPA entschlüsselt. Zum Beispiel ist die MOT eine Tabelle in einem Speicher und werden die MOT-Einträge basierend auf der HPA der Seite indiziert, auf die zugegriffen wird (z. B. ist die Seite HPA 0 der Index 0 in der MOT-Tabelle oder der erste Eintrag und ist die Seite HPA 1 der Index 1 in der MOT-Tabelle, der zweite Eintrag, und so weiter).
  • In einer Ausführungsform wird der Entschlüsselungsschlüssel unter Verwendung eines Schlüsseldomänenidentifikators(KD_ID) bestimmt, der in den obersten physischen Bits der HPA gespeichert ist; sobald der Schlüsseldomänenidentifikator (KD_ID) bekannt ist, kann der Schlüsseldomänenschlüssel identifiziert und für eine Speicherverschlüsselungs-Engine bereitgestellt werden, die die in der Speicherinhaberschaftstabelle (Memory Ownership Table, MOT) gespeicherten Daten entschlüsseln kann. Die Speicherverschlüsselungs-Engine kann auch die physische Hardwareadresse des MOT-Eintrags als einen Tweak verwenden. Wenn der MOT-Eintrag nicht in die richtige vom Arbeitslastmanager bereitgestellte physische Hardwareadresse geladen ist, wird der MOT-Eintrag nicht auf geeignete Weise entschlüsselt. Diese Ausführungsformen erfordern es möglicherweise nicht, dass die erwartete physische Hardwareadresse in dem MOT-Eintrag entsprechend dieser HPA redundant gespeichert ist.
  • Von dem „Lesen eines MOT-Eintrags für eine vom WM bereitgestellte HPA-Abbildung und Bestimmen eines Entschlüsselungsschlüssels“-Block 908 wechselt die Steuerung dann zu dem „Stimmt die vom WM bereitgestellte HPA mit der erwarteten HPA der MOT für die angeforderte Gastadresse überein und stimmt die erwartete Gastadresse der MOT mit der angeforderten Gastadresse überein?“-Entscheidungspunkt 910. Wenn die vom Arbeitslastmanager bereitgestellte übersetzte HPA nicht mit dem Feld für die erwartete HPA des MOT-Eintrags (1004 von 10) übereinstimmt und/oder die angeforderte Gastadresse nicht mit dem Feld für die erwartete Gastadresse des MOT-Eintrags (1006 von 10) übereinstimmt, wechselt die Steuerung zu dem „Durchführen einer Fehlerbehandlung/von VMExit“-Block 912. Bei dem „Durchführen einer Fehlerbehandlung/von VMExit“-Block 912 kann eine Fehlerbehandlung durchgeführt werden und kann bewirkt werden, dass die Gastarbeitslast/Gast-VM beendet wird.
  • Bei dem „Stimmt die vom WM bereitgestellte HPA mit der erwarteten HPA der MOT für die angeforderte Gastadresse überein und stimmt die erwartete Gastadresse der MOT mit der angeforderten Gastadresse überein?“-Entscheidungspunkt 910 müssen die vom Arbeitslastmanager bereitgestellte HPA und die in dem Prozessor-/PMH-Walk der Seitentabellen gefundene Gastadresse mit der erwarteten HPA und der erwarteten Gastadresse in dem entschlüsselten MOT-Eintrag übereinstimmen. Wenn die vom Arbeitslastmanager bereitgestellte HPA mit der erwarteten HPA der MOT (1004 von 10) übereinstimmt und das Feld für die erwartete Gastadresse des MOT-Eintrags (1006 von 10) mit der tatsächlichen übersetzten Gastadresse übereinstimmt, die während des Page Walks gefunden wurde, wechselt die Steuerung zu dem „Zugreifen auf Daten an der gefundenen HPA unter Verwendung des Entschlüsselungsschlüssels“-Block 914.
  • Bei dem „Zugreifen auf Daten an der vom Arbeitslastmanager bereitgestellten HPA unter Verwendung des Entschlüsselungsschlüssels“-Block 914 wird auf die durch die Gast-VM angeforderten Daten zugegriffen. Der Entschlüsselungsschlüssel ist der in Block 908 identifizierte Schlüsseldomänenschlüssel.
  • Bezug nehmend auf 10 ist ein Beispiel einer Speicherinhaberschaftstabelle 1000 gezeigt. Die Spalte 1002 enthält den Zeilenindex und ist in gestrichelten Linien gezeigt, weil der Zeilenindex hier nur zu veranschaulichenden Zwecken verwendet wird; der Zeilenindex wird nicht als Teil der Speicherinhaberschaftstabelle gespeichert. In einer Ausführungsform, wie der in 6A und 6B beschriebenen Ausführungsform, wird eine vom Arbeitslastmanager bereitgestellte ursprüngliche physische Hardwareadresse, die der Gast-VM zugeordnet ist, als ein Index für die Tabelle verwendet. Die Zuordnung von physischen Hardwareadressen zu der Gast-VM wurde zuvor Bezug nehmend auf 4 und 5 beschrieben. Während diese Ausführungsform eine durch eine physische Hardwareadresse/HPA indizierte Speicherinhaberschaftstabelle verwendet, können andere Ausführungsformen jede beliebige Form von durchsuchbarer Struktur, wie eine Liste, einen Baum, eine Hash-Tabelle, einen Graphen usw., verwenden, um die Gastadresse für die übersetzte physische Hardwareadresse zu suchen.
  • Die Spalte 1004 enthält eine erwartete physische Host-Adresse und die Spalte 1006 enthält eine erwartete Gastadresse. Diese Spalten werden durch die Gastarbeitslast/Gast-VM verwendet, um die ursprünglichen Abbildungen beizubehalten, die durch den Host-Arbeitslastmanager bereitgestellt werden, wenn die Gastarbeitslast/Gast-VM anfänglich erstellt wird, wie Bezug nehmend auf 6A und 8 beschrieben.
  • Die Spalte 1008 enthält einen Zustand einer Seite, die an der Gastadresse gespeichert ist; und die Spalte 1010 enthält Datenwerte von „0000“. Die Spalte 1010 kann als ein Qualitätssicherungsmechanismus verwendet werden, um sicherzustellen, dass der richtige Schlüssel zum Entschlüsseln eines MOT-Eintrags verwendet wurde. Wenn der falsche Entschlüsselungsschlüssel zum Entschlüsseln der Spalte 1010 verwendet wird, weisen die resultierenden Daten andere Werte als „0000“ auf, weil das Verwenden des falschen Schlüssels bewirkt, dass die Felder 1004, 1006, 1008 und 1010 des MOT-Eintrags auf zufällige (beschädigte) Werte entschlüsseln, die unwahrscheinlich den spezifischen Wert 0000 aufweisen, wodurch ein Fehler angegeben wird.
  • In Bezug auf die Spalte 1008 ist das Zustandsfeld mit den Werten „Groß“, „Aktiv“, „Geteilt“ und Ungültig“ gezeigt. Der Wert „Geteilt“ gibt an, dass der Verbraucher/die Gast-VM beabsichtigte, die Seite zu teilen. Wenn der Prozessor einen solchen „geteilten“ MOT-Eintrag interpretiert, verwendet der Prozessor die KD_ID des VMM in den physischen Speicheradressen für diese Seite (oder gibt anderenfalls keinen Schlüssel an), sodass die Speicherinhalte der zugeordneten Speicherseite nicht verschlüsselt werden (oder mit einem gemeinsamen Schlüssel verschlüsselt werden, der durch den VMM und eine bestimmte Gast-VM geteilt wird). Die Speicherseite eines VM kann selektiv mit dem VMM geteilt/dem VMM offengelegt werden, um eine Kommunikation zwischen der Gast-VM und dem Host-VMM zu erlauben.
  • Das Zustandsfeld in der Spalte 1008 kann einen Wert „Groß“ oder einen Wert „Riesengroß“ enthalten. Eine normale (Basis-)Seitengröße ist 4 KB. Intel®-Prozessoren unterstützen große Seiten mit 4 MB und riesengroße Seiten mit 4 GB. Die Speicherinhaberschaftstabelle gibt die erwartete Seitengröße an, um sicherzustellen, dass die Seitengröße (wie aus dem Seitentabellen-Walk bestimmt) wie erwartet ist, damit der VMM die Seitengröße nicht falsch darstellen kann.
  • Es sei darauf hingewiesen, dass die schraffierten Zeilen unter Verwendung des Schlüssels K1 verschlüsselt und entschlüsselt werden und einer Gastarbeitslast/virtuellen Gastmaschine entsprechen. Die nicht schraffierten Zeilen werden unter Verwendung des Schlüssels K2 verschlüsselt und entschlüsselt und entsprechen einer anderen Gastarbeitslast/virtuellen Gastmaschine. Die gesamte MOT-Tabelle kann eine beliebige Anzahl von Einträgen aufweisen, die zu einer beliebigen Anzahl von getrennten Schlüsseldomänen/VMs gehören, wobei jeder MOT-Eintrag mit den entsprechenden Schlüsseldomänenschlüsseln verschlüsselt ist.
  • Die Spalte 1012 ist in gestrichelten Linien gezeigt, weil der Speicherverschlüsselungsschlüssel/Schlüsseldomänenschlüssel für den MOT-Eintrag nicht als Teil der Speicherinhaberschaftstabelle gespeichert werden muss. Der Schlüsseldomänenschlüssel für den MOT-Eintrag wird identifiziert und zum Verschlüsseln und Entschlüsseln von Einträgen in der MOT-Tabelle 1000 verwendet. In einer Ausführungsform ist der Schlüsseldomänenidentifikator in den obersten physischen Adress-Bits der physischen Hardwareadresse vorhanden, die durch den Prozessor verwendet wird, um auf einen MOT-Eintrag zuzugreifen, und kann der Schlüsseldomänenidentifikator verwendet werden, um den Schlüsseldomänenschlüssel zu bestimmen, der verwendet werden soll, um den MOT-Eintrag zu verschlüsseln (bei einem Speicherschreiben) oder entschlüsseln (bei einem Speicherlesen).
  • In diesem Beispiel stellt ein VMM, für die Speicherinhaberschaftstabelle 1000 von 10, eine erweiterte Seitentabelle bereit, die eine jeweilige von erwarteten HPAs 0, 2, 4, 6 auf eine Gastadresse 7, 5, 3, 1 und eine jeweilige von erwarteten HPAs 1, 3, 5, 7 auf eine Gastadresse 9, 11, 13, 15 abbildet. Der Prozessor kann die Speicherinhaberschaftstabelle 1000 verwenden, um zu bestimmen, dass die vom Arbeitslastmanager bereitgestellte übersetzte HPA nicht mit der erwarteten HPA übereinstimmt und dass der VMM kompromittiert sein kann. Wenn zum Beispiel der VMM eine Seitentabelle bereitstellt, die eine jeweilige von HPAs 1, 3, 5, 7 auf eine andere Gastadresse als 9, 11, 13, 15 abbildet, kann der Prozessor auch die Speicherinhaberschaftstabelle 1000 verwenden, um zu bestimmen, dass die vom Arbeitslastmanager bereitgestellte übersetzte HPA nicht mit der erwarteten HPA übereinstimmt und dass der VMM kompromittiert sein kann.
  • In einigen Ausführungsformen kann die Speicherinhaberschaftstabelle ein Feld enthalten, das angibt, ob eine physische Speicherseite eine VMCS enthält oder nicht. Auf diese Weise kann der Verbraucher/die VM die MOT-Einträge verwenden, um die Abschnitte des verschlüsselten Bilds des Verbrauchers/der VM zu identifizieren, die VMCS-Strukturen enthalten. Ein VMCS-Feld kann verwendet werden, um zu verhindern, dass ein böswilliger VMM versucht, eine störende VMCS in die VM zu injizieren (z. B. durch einen Kommunikationskanal), und versucht, die störende VMCS als die autorisierte VMCS der VM zu laden. Wenn der Prozessor den VMPTRLD-Befehl ausführt, kann der Prozessor auf die MOT-Tabelle für die physische Adresse HPA zugreifen, die in dem EAX-Register für VMPTRLD spezifiziert ist. Unter der beispielhaften Annahme, dass die HPA der VMCS mit der erwarteten HPA des MOT-Eintrags übereinstimmt, setzt der Prozessor das Laden der VMCS fort, wenn bei dem MOT-Eintrag für die VMPTRLD-HPA das VMCS-Feld auf TRUE (ein Boolesches Feld) gesetzt ist. Wenn das VMCS-Feld FALSE ist, beendet der Prozessor den Vorgang und berichtet einen Fehler an den VMM. Der Prozessor verwendet die KD_ID, die als Teil der Adresse spezifiziert ist, die in dem VMPTRLD verwendet wird, beim Zugreifen auf den MOT-Eintrag, sodass der Schlüssel entsprechend der spezifizierten KD_ID durch die Speicherverschlüsselungs-Engine zum Entschlüsseln des entsprechenden MOT-Eintrags verwendet wird.
  • Ein anderes zusätzliches Feld, das in den MOT-Einträgen enthalten sein kann, ist die virtuelle/lineare Adresse der Gast-VM (VA, in 10 nicht gezeigt). Da der Prozessor/PMH die VA verwenden kann, um eine physische Gastadresse zu ermitteln, und die physische Gastadresse verwenden kann, um die vom Arbeitslastmanager bereitgestellte HPA durch Walken der Seitentabellen zu ermitteln, kann es der MOT-Eintrag auch erfordern, dass die VA mit der in dem MOT-Eintrag gefundenen VA übereinstimmt. Das VA-Feld kann verwendet werden, um zu verhindern, dass Speicherinhalte erneut wiedergegeben werden, nachdem eine VM-Arbeitslast ihre GPAs zu verschiedenen VAs neu zuweist.
  • In ähnlicher Weise kann der erwartete CR3-Prozessorregister-Wert (nicht gezeigt) ein Feld in der MOT sein. Das CR3-Prozessorregister ermöglicht es dem Prozessor, virtuelle/lineare Adressen in physische Hardwareadressen zu übersetzen, indem er das Seitenverzeichnis und die Seitentabellen für die aktuelle Aufgabe/Arbeitslast lokalisiert. Üblicherweise werden die oberen 20 Bits von CR3 das Seitenverzeichnisbasisregister (Page Directory Base Register, PDBR), das die physische Hardwareadresse des ersten Seitenverzeichniseintrags speichert. Das Speichern eines erwarteten CR3-Prozessorregister-Werts in der MOT ermöglicht es dem Prozessor/PMH, zu überprüfen, dass der Wert des tatsächlichen CR3-Seitenverzeichnisbasisregisters mit dem erwarteten CR3-Wert übereinstimmt, der in dem entsprechenden MOT-Eintrag gespeichert ist. Die in diesem Absatz und in dem vorhergehenden Absatz beschriebenen Felder für VA und erwartetes CR3 der MOT können auch einen Wert „ANY“ enthalten, der angibt, dass ein beliebiger Wert von CR3 oder VA annehmbar ist. Dieses Verfahren kann durch die Gastarbeitslast verwendet werden, um zu verhindern, dass Speicherabbildungen, die zu vorhergehenden Aufgaben/Prozessen gehören, erneut wiedergegeben werden, wenn neue MOT-Einträge für neue Aufgaben/Prozesse erstellt werden.
  • Andere Felder können verifizieren, dass Berechtigungen in den EPT-Strukturen und/oder Speichertypen in der EPT-Struktur mit den erwarteten Berechtigungen und Speichertypen in den MOT-Einträgen wie von dem Verbraucher/der VM erwartet übereinstimmen. Jeder beliebige andere Prozessorzustand/jede beliebige andere Information, die der Prozessor gemäß einer Anforderung einer Gastarbeitslast mit den erwarteten Werten der Gastarbeitslast vergleichen und verifizieren soll, können als zusätzliche Felder in den MOT-Einträgen enthalten sein.
  • BEISPIELE
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • In Beispiel 1 schließt eine Einrichtung zum Sichern einer Gastarbeitslast in einer Umgebung eines öffentlichen Cloud-Dienst-Anbieters einen Prozessor und einen an den Prozessor gekoppelten Speicher ein; wobei der Prozessor einen nicht vertrauenswürdigen Arbeitslastmanager zum Verwalten der Ausführung von zumindest einer Gastarbeitslast ausführen soll; der nicht vertrauenswürdige Arbeitslastmanager (i) einen Speicherbereich für eine Gastarbeitslast der zumindest einen Gastarbeitslast zuordnen soll und (ii) eine jeweilige ursprüngliche physische Hardwareadresse, die einem jeweiligen Speicherort des Speicherbereichs zugeordnet ist, zu einer durch die Gastarbeitslast bereitgestellten jeweiligen ursprünglichen Gastadresse zuweisen soll; die Gastarbeitslast eine jeweilige Abbildung von jeder jeweiligen ursprünglichen Gastadresse für den der Gastarbeitslast zugeordneten Speicherbereich auf die jeweilige ursprüngliche physische Hardwareadresse für die Gastarbeitslast speichern soll. Als Reaktion auf das Empfangen einer Anforderung von der Gastarbeitslast, auf den Speicher unter Verwendung einer angeforderten Gastadresse zuzugreifen, soll der Prozessor ferner Folgendes durchführen: (i) Erhalten, von dem nicht vertrauenswürdigen Arbeitslastmanager, einer vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse, die der angeforderten Gastadresse entspricht; (ii) Bestimmen, ob eine gespeicherte Abbildung für die vom Arbeitslastmanager bereitgestellte übersetzte physische Hardwareadresse vorhanden ist; (iii) als Reaktion auf das Finden der gespeicherten Abbildung, Bestimmen, ob eine gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt; und (iv) wenn die gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt, Ermöglichen, dass die Gastarbeitslast auf Inhalte der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse zugreift.
  • In Beispiel 2 soll der Prozessor von Beispiel 1 ferner Folgendes durchführen: Bestimmen, ob eine gespeicherte erwartete physische Hardwareadresse von der gespeicherten Abbildung mit der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse übereinstimmt, wobei das Ermöglichen, dass die Gastarbeitslast auf Inhalte der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse zugreift, ein Ermöglichen der Gastarbeitslast einschließt, wenn die gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt und die gespeicherte erwartete physische Hardwareadresse von der gespeicherten Abbildung mit der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse übereinstimmt.
  • In Beispiel 3 soll die Gastarbeitslast der Beispiele 1 und 2 ferner Folgendes durchführen: (i) Bewirken, dass durch die Gastarbeitslast in jeden jeweiligen Speicherort des Speicherbereichs geschriebene Inhalte mit einem vom Verbraucher bereitgestellten Schlüssel für die Gastarbeitslast verschlüsselt werden; und (ii) Bewirken, dass jede jeweilige Abbildung für die Gastarbeitslast mit dem vom Verbraucher bereitgestellten Schlüssel verschlüsselt wird.
  • In Beispiel 4 bindet die Gastarbeitslast der Beispiele 1-3, die bewirkt, dass eine Abbildung für die Gastarbeitslast mit dem vom Verbraucher bereitgestellten Schlüssel verschlüsselt wird, die jeweilige ursprüngliche Gastadresse der Abbildung an die jeweilige ursprüngliche physische Hardwareadresse der Abbildung.
  • In Beispiel 5 bindet die Gastarbeitslast der Beispiele 1-3, die bewirkt, dass durch die Gastarbeitslast geschriebene Inhalte mit dem vom Verbraucher bereitgestellten Schlüssel verschlüsselt werden, ferner die jeweilige ursprüngliche Gastadresse der Abbildung an verschlüsselte Inhalte der jeweiligen ursprünglichen physischen Hardwareadresse der Abbildung.
  • In Beispiel 6 soll die Gastarbeitslast der Beispiele 1-5 ferner jede jeweilige Abbildung als einen jeweiligen Eintrag in eine Speicherinhaberschaftstabelle speichern.
  • In Beispiel 7 soll die Gastarbeitslast der Beispiele 1-6 ferner eine virtuelle Abbildung von einer jeweiligen ursprünglichen Gastadresse für die Gastarbeitslast auf eine jeweilige ursprüngliche virtuelle Adresse für die Gastarbeitslast in der Speicherinhaberschaftstabelle speichern und soll der Prozessor der Beispiele 1-6, als Reaktion auf eine Anforderung von der Gastarbeitslast, auf an der jeweiligen ursprünglichen Gastadresse gespeicherte Daten zuzugreifen, ferner Folgendes durchführen: (i) Identifizieren eines Eintrags in der Speicherinhaberschaftstabelle entsprechend der jeweiligen ursprünglichen Gastadresse und (ii) Verifizieren, dass eine erwartete ursprüngliche virtuelle Adresse von dem Eintrag in der Speicherinhaberschaftstabelle mit der jeweiligen ursprünglichen virtuellen Adresse übereinstimmt, bevor auf an der jeweiligen ursprünglichen Gastadresse gespeicherte Daten zugegriffen wird.
  • In Beispiel 8 soll die Gastarbeitslast der Beispiele 1-7 ferner einen erwarteten Registerwert für die Gastarbeitslast speichern, um es dem Prozessor zu ermöglichen, ein Seitenverzeichnis und eine Seitentabelle für die Gastarbeitslast zu lokalisieren; und soll der Prozessor der Beispiele 1-7 verifizieren, dass ein vom Arbeitslastmanager bereitgestellter Registerwert mit dem erwarteten Registerwert für die Gastarbeitslast übereinstimmt, bevor auf das Seitenverzeichnis und die Seitentabelle für die Gastarbeitslast zugegriffen wird.
  • In Beispiel 9 soll die Gastarbeitslast der Beispiele 1-8 ferner Folgendes durchführen: (i) Speichern einer Steuerstrukturabbildung von einer physischen Hardwareadresse einer ursprünglichen Steuerstruktur auf eine physische Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast und (ii) Speichern eines Steuerstrukturindikators mit der Steuerstrukturabbildung, wobei der Steuerstrukturindikator auf TRUE gesetzt wird, wenn Inhalte der physischen Hardwareadresse einer ursprünglichen Steuerstruktur eine Steuerstruktur für die Gastarbeitslast enthalten; und soll der Prozessor der Beispiele 1-8 ferner verifizieren, dass eine physische Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur für die Gastarbeitslast mit der physischen Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast übereinstimmt und dass der Steuerstrukturindikator TRUE ist, bevor die Steuerstruktur für die Gastarbeitslast von der physischen Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur geladen wird.
  • In Beispiel 10 soll die Gastarbeitslast der Beispiele 1-9 ferner einen erwarteten Inhaltsverifizierungswert für eine bestimmte ursprüngliche physische Hardwareadresse speichern, wobei der erwartete Inhaltsverifizierungswert durch Verstreuen von Inhalten der bestimmten ursprünglichen physischen Hardwareadresse bestimmt wird; und soll der Prozessor der Beispiele 1-9 verifizieren, dass der erwartete Inhaltsverifizierungswert mit einem Hash von Inhalten der bestimmten ursprünglichen physischen Hardwareadresse übereinstimmt, bevor auf an der bestimmten ursprünglichen physischen Hardwareadresse gespeicherte Daten zugegriffen wird.
  • Beispiel 10 ist ein computerimplementiertes Verfahren zum Sichern einer Gastarbeitslast in einer Umgebung eines öffentlichen Cloud-Dienst-Anbieters, wobei das Verfahren durch einen Prozessor durchgeführt wird und das Verfahren Folgendes einschließt: Ausführen eines nicht vertrauenswürdigen Arbeitslastmanagers zum Verwalten der Ausführung von zumindest einer Gastarbeitslast; Empfangen einer Anforderung von einer Gastarbeitslast der zumindest einen Gastarbeitslast, auf einen Speicher unter Verwendung einer angeforderten Gastadresse zuzugreifen; Erhalten, von dem nicht vertrauenswürdigen Arbeitslastmanager, einer vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse, die der angeforderten Gastadresse entspricht; Bestimmen, ob eine gespeicherte Abbildung für die vom Arbeitslastmanager bereitgestellte übersetzte physische Hardwareadresse vorhanden ist; als Reaktion auf das Finden der gespeicherten Abbildung, Bestimmen, ob eine gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt; und, wenn die gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt, Ermöglichen, dass die Gastarbeitslast auf Inhalte der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse zugreift.
  • In Beispiel 12 schließt das computerimplementierte Verfahren nach Anspruch 11 ferner ein Bestimmen ein, ob eine gespeicherte erwartete physische Hardwareadresse von der gespeicherten Abbildung mit der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse übereinstimmt, wobei das Ermöglichen, dass die Gastarbeitslast auf Inhalte der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse zugreift, ein Ermöglichen der Gastarbeitslast einschließt, wenn die gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt und die gespeicherte erwartete physische Hardwareadresse von der gespeicherten Abbildung mit der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse übereinstimmt.
  • In Beispiel 13 schließt das computerimplementierte Verfahren der Beispiele 11-12 ferner ein Identifizieren eines Eintrags in einer Speicherinhaberschaftstabelle mit einer virtuellen Abbildung von einer jeweiligen ursprünglichen Gastadresse für die Gastarbeitslast auf eine jeweilige ursprüngliche virtuelle Adresse für die Gastarbeitslast; und ein Verifizieren, dass eine erwartete ursprüngliche virtuelle Gastadresse von dem Eintrag in der Speicherinhaberschaftstabelle mit der jeweiligen ursprünglichen virtuellen Adresse von dem Eintrag übereinstimmt, bevor auf an der jeweiligen ursprünglichen Gastadresse gespeicherte Daten zugegriffen wird, ein.
  • In Beispiel 14 schließt das computerimplementierte Verfahren der Beispiele 11-13 ferner ein Identifizieren eines gespeicherten erwarteten Registerwerts für die Gastarbeitslast, um ein Seitenverzeichnis und eine Seitentabelle für die Gastarbeitslast zu lokalisieren; und ein Verifizieren, dass ein vom Arbeitslastmanager bereitgestellter Registerwert mit dem gespeicherten erwarteten Registerwert für die Gastarbeitslast übereinstimmt, bevor auf das Seitenverzeichnis und die Seitentabelle für die Gastarbeitslast zugegriffen wird, ein.
  • In Beispiel 15 schließt das computerimplementierte Verfahren der Beispiele 11-14 ferner ein Identifizieren (i) einer gespeicherten Steuerstrukturabbildung von einer physischen Hardwareadresse einer ursprünglichen Steuerstruktur auf eine physische Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast und (ii) eines gespeicherten Steuerstrukturindikators, der der Steuerstrukturabbildung zugeordnet ist, wobei der Steuerstrukturindikator auf TRUE gesetzt wird, wenn Inhalte der physischen Hardwareadresse einer ursprünglichen Steuerstruktur eine Steuerstruktur für die Gastarbeitslast enthalten; und ein Verifizieren, dass eine physische Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur für die Gastarbeitslast mit der physischen Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast übereinstimmt und dass der Steuerstrukturindikator TRUE ist, bevor die Steuerstruktur für die Gastarbeitslast von der physischen Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur geladen wird, ein.
  • In Beispiel 16 schließt das computerimplementierte Verfahren der Beispiele 11-15 ferner ein Identifizieren eines erwarteten Inhaltsverifizierungswerts für eine bestimmte ursprüngliche physische Hardwareadresse; und ein Verifizieren, dass der erwartete Inhaltsverifizierungswert mit einem Hash von Inhalten der bestimmten ursprünglichen physischen Hardwareadresse übereinstimmt, bevor auf an der bestimmten ursprünglichen physischen Hardwareadresse gespeicherte Daten zugegriffen wird, ein.
  • In Beispiel 17 schließt zumindest ein computerlesbares Medium Befehle ein, die bei Ausführung durch einen Prozessor bewirken, dass eine Maschine die Verfahren der Beispiele 11-16 durchführt.
  • In Beispiel 18 schließt eine Einrichtung zum Sichern einer Gastarbeitslast in einer Umgebung eines öffentlichen Cloud-Dienst-Anbieters ein Mittel zum Ausführen eines nicht vertrauenswürdigen Arbeitslastmanagers zum Verwalten der Ausführung von zumindest einer Gastarbeitslast; ein Mittel zum Empfangen einer Anforderung von einer Gastarbeitslast der zumindest einen Gastarbeitslast, auf einen Speicher unter Verwendung einer angeforderten Gastadresse zuzugreifen; ein Mittel zum Erhalten, von dem nicht vertrauenswürdigen Arbeitslastmanager, einer vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse, die der angeforderten Gastadresse entspricht; ein Mittel zum Bestimmen, ob eine gespeicherte Abbildung für die vom Arbeitslastmanager bereitgestellte übersetzte physische Hardwareadresse vorhanden ist; ein Mittel zum Bestimmen, ob eine gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt, als Reaktion auf das Finden der gespeicherten Abbildung; und ein Mittel zum Ermöglichen, dass die Gastarbeitslast auf Inhalte der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse zugreift, wenn die gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt, ein.
  • In Beispiel 19 schließt die Einrichtung von Beispiel 18 ferner Folgendes ein: ein Mittel zum Bestimmen, ob eine gespeicherte erwartete physische Hardwareadresse von der gespeicherten Abbildung mit der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse übereinstimmt, wobei das Mittel zum Ermöglichen, dass die Gastarbeitslast auf Inhalte der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse zugreift, ein Mittel zum Ermöglichen der Gastarbeitslast einschließt, wenn die gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt und die gespeicherte erwartete physische Hardwareadresse von der gespeicherten Abbildung mit der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse übereinstimmt.
  • In Beispiel 20 schließt die Einrichtung der Beispiele 18-19 ferner ein Mittel zum Identifizieren eines Eintrags in einer Speicherinhaberschaftstabelle mit einer virtuellen Abbildung von einer jeweiligen ursprünglichen Gastadresse für die Gastarbeitslast auf eine jeweilige ursprüngliche virtuelle Adresse für die Gastarbeitslast; und ein Mittel zum Verifizieren, dass eine erwartete ursprüngliche virtuelle Gastadresse von dem Eintrag in der Speicherinhaberschaftstabelle mit der jeweiligen ursprünglichen virtuellen Adresse von dem Eintrag übereinstimmt, bevor auf an der jeweiligen ursprünglichen Gastadresse gespeicherte Daten zugegriffen wird, ein.
  • In Beispiel 21 schließt die Einrichtung der Beispiele 18-20 ferner ein Mittel zum Identifizieren eines gespeicherten erwarteten Registerwerts für die Gastarbeitslast, um ein Seitenverzeichnis und eine Seitentabelle für die Gastarbeitslast zu lokalisieren; und ein Mittel zum Verifizieren, dass ein vom Arbeitslastmanager bereitgestellter Registerwert mit dem gespeicherten erwarteten Registerwert für die Gastarbeitslast übereinstimmt, bevor auf das Seitenverzeichnis und die Seitentabelle für die Gastarbeitslast zugegriffen wird, ein.
  • In Beispiel 22 schließt die Einrichtung der Beispiele 18-21 ferner ein Mittel zum Identifizieren einer gespeicherten Steuerstrukturabbildung von einer physischen Hardwareadresse einer ursprünglichen Steuerstruktur auf eine physische Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast; und ein Mittel zum Identifizieren eines gespeicherten Steuerstrukturindikators, der der Steuerstrukturabbildung zugeordnet ist, wobei der Steuerstrukturindikator auf TRUE gesetzt wird, wenn Inhalte der physischen Hardwareadresse einer ursprünglichen Steuerstruktur eine Steuerstruktur für die Gastarbeitslast enthalten; und ein Mittel zum Verifizieren, dass eine physische Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur für die Gastarbeitslast mit der physischen Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast übereinstimmt und dass der Steuerstrukturindikator TRUE ist, bevor die Steuerstruktur für die Gastarbeitslast von der physischen Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur geladen wird, ein.
  • In Beispiel 23 schließt die Einrichtung der Beispiele 18-22 ferner ein Mittel zum Identifizieren eines erwarteten Inhaltsverifizierungswerts für eine bestimmte ursprüngliche physische Hardwareadresse; und ein Mittel zum Verifizieren, dass der erwartete Inhaltsverifizierungswert mit einem Hash von Inhalten der bestimmten ursprünglichen physischen Hardwareadresse übereinstimmt, bevor auf an der bestimmten ursprünglichen physischen Hardwareadresse gespeicherte Daten zugegriffen wird, ein.
  • In Beispiel 24 schließt zumindest ein computerlesbares Medium Befehle ein, die bei Ausführung durch einen Prozessor bewirken, dass eine Maschine die Verfahren der Beispiele 11-16 durchführt.
  • In Beispiel 25 wird ein computerimplementiertes Verfahren zum Sichern einer Gastarbeitslast in einer Umgebung eines öffentlichen Cloud-Dienst-Anbieters durch einen Prozessor durchgeführt und schließt Folgendes ein: Ausführen, durch einen Prozessor, einer Gastarbeitslast von einer Vielzahl von Gastarbeitslasten, die durch einen nicht vertrauenswürdigen Arbeitslastmanager verwaltet werden; Empfangen, durch die Gastarbeitslast, von dem nicht vertrauenswürdigen Arbeitslastmanager, einer Zuordnung eines Speicherbereichs; Bereitstellen, durch die Gastarbeitslast, einer jeweiligen ursprünglichen Gastadresse für einen jeweiligen Speicherort des Speicherbereichs; Empfangen, durch die Gastarbeitslast, einer jeweiligen ursprünglichen physischen Hardwareadresse, die der jeweiligen ursprünglichen Gastadresse zugewiesen ist; Speichern, durch die Gastarbeitslast, einer jeweiligen Abbildung von der jeweiligen ursprünglichen Gastadresse auf die jeweilige ursprüngliche physische Hardwareadresse.
  • In Beispiel 26 schließt das computerimplementierte Verfahren von Beispiel 25 ferner Folgendes ein: Bewirken, durch die Gastarbeitslast, dass durch die Gastarbeitslast in jeden jeweiligen Speicherort des Speicherbereichs geschriebene Inhalte mit einem vom Verbraucher bereitgestellten Schlüssel für die Gastarbeitslast verschlüsselt werden; und Bewirken, durch die Gastarbeitslast, dass jede jeweilige Abbildung für die Gastarbeitslast mit dem vom Verbraucher bereitgestellten Schlüssel verschlüsselt wird.
  • In Beispiel 27 bindet in dem computerimplementierten Verfahren der Beispiele 25-26 das Bewirken, dass eine Abbildung für die Gastarbeitslast mit dem vom Verbraucher bereitgestellten Schlüssel verschlüsselt wird, die jeweilige ursprüngliche Gastadresse der Abbildung an die jeweilige ursprüngliche physische Hardwareadresse der Abbildung.
  • In Beispiel 28 bindet in dem computerimplementierten Verfahren der Beispiele 25-27 das Bewirken, dass durch die Gastarbeitslast geschriebene Inhalte mit dem vom Verbraucher bereitgestellten Schlüssel verschlüsselt werden, ferner die jeweilige ursprüngliche Gastadresse der Abbildung an verschlüsselte Inhalte der jeweiligen ursprünglichen physischen Hardwareadresse der Abbildung.
  • In Beispiel 29 schließt das computerimplementierte Verfahren der Beispiele 25-28 ferner ein Speichern, durch die Gastarbeitslast, von jeder jeweiligen Abbildung als einen jeweiligen Eintrag in eine Speicherinhaberschaftstabelle ein.
  • In Beispiel 30 schließt das computerimplementierte Verfahren der Beispiele 25-29 ferner ein Speichern, durch die Gastarbeitslast, einer virtuellen Abbildung von einer jeweiligen ursprünglichen Gastadresse für die Gastarbeitslast auf eine jeweilige ursprüngliche virtuelle Adresse für die Gastarbeitslast in der Speicherinhaberschaftstabelle; ein Identifizieren, durch den Prozessor, eines Eintrags in der Speicherinhaberschaftstabelle entsprechend der jeweiligen ursprünglichen Gastadresse als Reaktion auf eine Anforderung von der Gastarbeitslast, auf an der jeweiligen ursprünglichen Gastadresse gespeicherte Daten zuzugreifen; und ein Verifizieren, durch den Prozessor, dass eine erwartete ursprüngliche virtuelle Adresse von dem Eintrag in der Speicherinhaberschaftstabelle mit der jeweiligen ursprünglichen virtuellen Adresse übereinstimmt, bevor auf an der jeweiligen ursprünglichen Gastadresse gespeicherte Daten zugegriffen wird, ein.
  • In Beispiel 31 schließt das computerimplementierte Verfahren der Beispiele 25-30 ferner ein Speichern, durch die Gastarbeitslast, eines erwarteten Registerwerts für die Gastarbeitslast, um es dem Prozessor zu ermöglichen, ein Seitenverzeichnis und eine Seitentabelle für die Gastarbeitslast zu lokalisieren; und ein Verifizieren, durch den Prozessor, dass ein vom Arbeitslastmanager bereitgestellter Registerwert mit dem erwarteten Registerwert für die Gastarbeitslast übereinstimmt, bevor auf das Seitenverzeichnis und die Seitentabelle für die Gastarbeitslast zugegriffen wird, ein.
  • In Beispiel 32 schließt das computerimplementierte Verfahren der Beispiele 25-31 ferner ein Speichern, durch die Gastarbeitslast, einer Steuerstrukturabbildung von einer physischen Hardwareadresse einer ursprünglichen Steuerstruktur auf eine physische Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast; ein Speichern, durch die Gastarbeitslast, eines Steuerstrukturindikators mit der Steuerstrukturabbildung, wobei der Steuerstrukturindikator auf TRUE gesetzt wird, wenn Inhalte der physischen Hardwareadresse einer ursprünglichen Steuerstruktur eine Steuerstruktur für die Gastarbeitslast enthalten; und ein Verifizieren, durch den Prozessor, dass eine physische Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur für die Gastarbeitslast mit der physischen Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast übereinstimmt und dass der Steuerstrukturindikator TRUE ist, bevor die Steuerstruktur für die Gastarbeitslast von der physischen Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur geladen wird, ein.
  • In Beispiel 33 schließt das computerimplementierte Verfahren der Beispiele 25-32 ferner ein Speichern, durch die Gastarbeitslast, eines erwarteten Inhaltsverifizierungswerts für eine bestimmte ursprüngliche physische Hardwareadresse, wobei der erwartete Inhaltsverifizierungswert durch Verstreuen von Inhalten der bestimmten ursprünglichen physischen Hardwareadresse bestimmt wird; und ein Verifizieren, durch den Prozessor, dass der erwartete Inhaltsverifizierungswert mit einem Hash von Inhalten der bestimmten ursprünglichen physischen Hardwareadresse übereinstimmt, bevor auf an der bestimmten ursprünglichen physischen Hardwareadresse gespeicherte Daten zugegriffen wird, ein.
  • Es sei daraufhingewiesen, dass der Prozessor der Beispiele 1-33 unter Verwendung verschiedener Mittel implementiert werden kann.
  • In Beispiel 34 wird der Prozessor der Beispiele 1-33 als ein virtueller Prozessor implementiert.
  • In Beispiel 35 umfasst der Prozessor der Beispiele 1-33 ein Systemon-a-Chip (SoC), das in eine Touch-fähige Benutzerausrüstungsvorrichtung integriert ist.
  • In Beispiel 36, der Prozessor der Beispiele 1-33, umfasst ein System eine Anzeige und einen Speicher und schließt den Prozessor von einem oder mehreren der vorstehenden Beispiele ein.
  • In Beispiel 37 ist ein computerlesbares Medium mit Daten durch zumindest eine Maschine zu verwenden, um zumindest eine integrierte Schaltung zum Durchführen des Verfahrens von einem oder mehreren der vorstehenden Beispiele herzustellen.
  • In Beispiel 38 umfasst eine Einrichtung ein Mittel zum Durchführen des Verfahrens von einem oder mehreren der vorstehenden Beispiele.
  • Es sei klargestellt, dass verschiedene Kombinationen der vorstehenden Beispiele möglich sind.
  • Es sei darauf hingewiesen, dass die Begriffe „Schaltung“ und „Schaltungen“ hierin austauschbar verwendet werden. Bei Verwendung in diesem Dokument werden diese Begriffe und der Begriff „Logik“ verwendet, um allein oder in einer beliebigen Kombination auf analoge Schaltungen, digitale Schaltungen, festverdrahtete Schaltungen, programmierbare Schaltungen, Prozessorschaltungen, Mikrocontrollerschaltungen, Hardwarelogikschaltungen, Zustandsmaschinenschaltungen und/oder einen beliebigen anderen Typ von physischer Hardwarekomponente Bezug zu nehmen. Ausführungsformen können in vielen verschiedenen Typen von Systemen verwendet werden. Zum Beispiel kann in einer Ausführungsform eine Kommunikationsvorrichtung angeordnet sein, um die verschiedenen hierin beschriebenen Verfahren und Techniken durchzuführen. Selbstverständlich ist der Umfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt und andere Ausführungsformen können sich stattdessen auf andere Typen von Einrichtungen zum Verarbeiten von Befehlen oder ein oder mehrere maschinenlesbare Medien mit Befehlen, die als Reaktion auf eine Ausführung auf einer Rechenvorrichtung bewirken, dass die Vorrichtung eine oder mehrere der hierin beschriebenen Verfahren und Techniken ausführt, richten.
  • Ausführungsformen können in Code implementiert sein und können auf einem nicht-flüchtigen Speichermedium gespeichert sein, auf dem Befehle gespeichert sind, die verwendet werden können, um ein System zum Durchführen der Befehle zu programmieren. Ausführungsformen können auch in Daten implementiert sein und können auf einem nicht-flüchtigen Speichermedium gespeichert sein, das bei Verwendung durch zumindest eine Maschine bewirkt, dass die zumindest eine Maschine zumindest eine integrierte Schaltung zum Durchführen von einem oder mehreren Vorgängen herstellt. Noch weitere Ausführungsformen können in einem computerlesbaren Speichermedium implementiert werden, das Informationen einschließt, die bei Herstellung in einem SoC oder einem anderen Prozessor das SoC oder den anderen Prozessor zum Durchführen von einem oder mehreren Vorgängen konfigurieren sollen. Das Speichermedium kann einen beliebigen Plattentyp, einschließlich Disketten, optischer Platten, Festkörperlaufwerken (Solid State Drives, SSDs), Compact Disk-Festwertspeicher (Compact Disk Read-Only Memories, CD-ROMs), wiederbeschreibbarer Compact Disks (Compact Disk Rewritables, CD-RWs) und magnetooptischer Platten, Halbleitervorrichtungen, wie Festwertspeicher (Read-Only Memories, ROMs), Speicher mit wahlfreiem Zugriff (Random Access Memories, RAMs), wie dynamische Speicher mit wahlfreiem Zugriff (Dynamic Random Access Memory, DRAMs), statische Speicher mit wahlfreiem Zugriff (Static Random Access Memories, SRAMs), löschbare programmierbare Festwertspeicher (Erasable Programmable Read-Only Memory, EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Festwertspeicher (Electrically Erasable Programmable Read-Only Memories, EEPROMs), Magnetkarten oder optische Karten oder einen beliebigen anderen Typ von Medien, die zum Speichern von elektronischen Befehlen geeignet sind, einschließen, ohne darauf beschränkt zu sein.
  • Wenngleich die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, wird der Fachmann zahlreiche Modifikationen und Variationen davon erkennen. Es ist beabsichtigt, dass die beigefügten Ansprüche alle diese Modifikationen und Variationen, die innerhalb des wahren Wesens und Umfangs dieser vorliegenden Erfindung liegen, abdecken.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15444771 [0001, 0010]
    • US 15293967 [0001, 0010]
    • US 62373627 [0001, 0010]

Claims (18)

  1. Einrichtung, umfassend: einen Prozessor und einen an den Prozessor gekoppelten Speicher; wobei der Prozessor einen nicht vertrauenswürdigen Arbeitslastmanager zum Verwalten der Ausführung von zumindest einer Gastarbeitslast ausführen soll; der nicht vertrauenswürdige Arbeitslastmanager (i) einen Speicherbereich für eine Gastarbeitslast der zumindest einen Gastarbeitslast zuordnen soll und (ii) eine jeweilige ursprüngliche physische Hardwareadresse, die einem jeweiligen Speicherort des Speicherbereichs zugeordnet ist, zu einer durch die Gastarbeitslast bereitgestellten jeweiligen ursprünglichen Gastadresse zuweisen soll; die Gastarbeitslast eine jeweilige Abbildung von jeder jeweiligen ursprünglichen Gastadresse für den der Gastarbeitslast zugeordneten Speicherbereich auf die jeweilige ursprüngliche physische Hardwareadresse für die Gastarbeitslast speichern soll; der Prozessor als Reaktion auf das Empfangen einer Anforderung von der Gastarbeitslast, auf den Speicher unter Verwendung einer angeforderten Gastadresse zuzugreifen, ferner Folgendes durchführen soll: (i) Erhalten, von dem nicht vertrauenswürdigen Arbeitslastmanager, einer vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse, die der angeforderten Gastadresse entspricht; (ii) Bestimmen, ob eine gespeicherte Abbildung für die vom Arbeitslastmanager bereitgestellte übersetzte physische Hardwareadresse vorhanden ist; (iii) als Reaktion auf das Finden der gespeicherten Abbildung, Bestimmen, ob eine gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt; und (iv) wenn die gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt, Ermöglichen, dass die Gastarbeitslast auf Inhalte der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse zugreift.
  2. Einrichtung nach Anspruch 1, wobei der Prozessor ferner Folgendes durchführen soll: Bestimmen, ob eine gespeicherte erwartete physische Hardwareadresse von der gespeicherten Abbildung mit der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse übereinstimmt, wobei das Ermöglichen, dass die Gastarbeitslast auf Inhalte der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse zugreift, ein Ermöglichen der Gastarbeitslast umfasst, wenn die gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt und die gespeicherte erwartete physische Hardwareadresse von der gespeicherten Abbildung mit der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse übereinstimmt.
  3. Einrichtung nach Anspruch 1, wobei die Gastarbeitslast ferner Folgendes durchführen soll: (i) Bewirken, dass durch die Gastarbeitslast in jeden jeweiligen Speicherort des Speicherbereichs geschriebene Inhalte mit einem vom Verbraucher bereitgestellten Schlüssel für die Gastarbeitslast verschlüsselt werden; und (ii) Bewirken, dass jede jeweilige Abbildung für die Gastarbeitslast mit dem vom Verbraucher bereitgestellten Schlüssel verschlüsselt wird.
  4. Einrichtung nach Anspruch 3, wobei das Bewirken, dass eine Abbildung für die Gastarbeitslast mit dem vom Verbraucher bereitgestellten Schlüssel verschlüsselt wird, die jeweilige ursprüngliche Gastadresse der Abbildung an die jeweilige ursprüngliche physische Hardwareadresse der Abbildung bindet.
  5. Einrichtung nach Anspruch 3, wobei das Bewirken, dass durch die Gastarbeitslast geschriebene Inhalte mit dem vom Verbraucher bereitgestellten Schlüssel verschlüsselt werden, ferner die jeweilige ursprüngliche Gastadresse der Abbildung an verschlüsselte Inhalte der jeweiligen ursprünglichen physischen Hardwareadresse der Abbildung bindet.
  6. Einrichtung nach Anspruch 1, wobei die Gastarbeitslast ferner jede jeweilige Abbildung als einen jeweiligen Eintrag in eine Speicherinhaberschaftstabelle speichern soll.
  7. Einrichtung nach Anspruch 6, wobei die Gastarbeitslast ferner eine virtuelle Abbildung von einer jeweiligen ursprünglichen Gastadresse für die Gastarbeitslast auf eine jeweilige ursprüngliche virtuelle Adresse für die Gastarbeitslast in der Speicherinhaberschaftstabelle speichern soll; der Prozessor als Reaktion auf eine Anforderung von der Gastarbeitslast, auf an der jeweiligen ursprünglichen Gastadresse gespeicherte Daten zuzugreifen, ferner Folgendes durchführen soll: (i) Identifizieren eines Eintrags in der Speicherinhaberschaftstabelle entsprechend der jeweiligen ursprünglichen Gastadresse und (ii) Verifizieren, dass eine erwartete ursprüngliche virtuelle Adresse von dem Eintrag in der Speicherinhaberschaftstabelle mit der jeweiligen ursprünglichen virtuellen Adresse übereinstimmt, bevor auf an der jeweiligen ursprünglichen Gastadresse gespeicherte Daten zugegriffen wird.
  8. Einrichtung nach Anspruch 1, wobei die Gastarbeitslast ferner einen erwarteten Registerwert für die Gastarbeitslast speichern soll, um es dem Prozessor zu ermöglichen, ein Seitenverzeichnis und eine Seitentabelle für die Gastarbeitslast zu lokalisieren; und der Prozessor verifizieren soll, dass ein vom Arbeitslastmanager bereitgestellter Registerwert mit dem erwarteten Registerwert für die Gastarbeitslast übereinstimmt, bevor auf das Seitenverzeichnis und die Seitentabelle für die Gastarbeitslast zugegriffen wird.
  9. Einrichtung nach Anspruch 1, wobei die Gastarbeitslast ferner Folgendes durchführen soll: (i) Speichern einer Steuerstrukturabbildung von einer physischen Hardwareadresse einer ursprünglichen Steuerstruktur auf eine physische Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast und (ii) Speichern eines Steuerstrukturindikators mit der Steuerstrukturabbildung, wobei der Steuerstrukturindikator auf TRUE gesetzt wird, wenn Inhalte der physischen Hardwareadresse einer ursprünglichen Steuerstruktur eine Steuerstruktur für die Gastarbeitslast enthalten; und der Prozessor ferner verifizieren soll, dass eine physische Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur für die Gastarbeitslast mit der physischen Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast übereinstimmt und dass der Steuerstrukturindikator TRUE ist, bevor die Steuerstruktur für die Gastarbeitslast von der physischen Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur geladen wird.
  10. Einrichtung nach Anspruch 1, wobei die Gastarbeitslast ferner einen erwarteten Inhaltsverifizierungswert für eine bestimmte ursprüngliche physische Hardwareadresse speichern soll, wobei der erwartete Inhaltsverifizierungswert durch Verstreuen von Inhalten der bestimmten ursprünglichen physischen Hardwareadresse bestimmt wird; der Prozessor verifizieren soll, dass der erwartete Inhaltsverifizierungswert mit einem Hash von Inhalten der bestimmten ursprünglichen physischen Hardwareadresse übereinstimmt, bevor auf an der bestimmten ursprünglichen physischen Hardwareadresse gespeicherte Daten zugegriffen wird.
  11. Computerimplementiertes Verfahren, umfassend: Ausführen eines nicht vertrauenswürdigen Arbeitslastmanagers zum Verwalten der Ausführung von zumindest einer Gastarbeitslast; Empfangen einer Anforderung von einer Gastarbeitslast der zumindest einen Gastarbeitslast, auf einen Speicher unter Verwendung einer angeforderten Gastadresse zuzugreifen; Erhalten, von dem nicht vertrauenswürdigen Arbeitslastmanager, einer vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse, die der angeforderten Gastadresse entspricht; Bestimmen, ob eine gespeicherte Abbildung für die vom Arbeitslastmanager bereitgestellte übersetzte physische Hardwareadresse vorhanden ist; als Reaktion auf das Finden der gespeicherten Abbildung, Bestimmen, ob eine gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt; und wenn die gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt, Ermöglichen, dass die Gastarbeitslast auf Inhalte der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse zugreift.
  12. Computerimplementiertes Verfahren nach Anspruch 11, ferner umfassend: Bestimmen, ob eine gespeicherte erwartete physische Hardwareadresse von der gespeicherten Abbildung mit der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse übereinstimmt, wobei das Ermöglichen, dass die Gastarbeitslast auf Inhalte der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse zugreift, ein Ermöglichen der Gastarbeitslast umfasst, wenn die gespeicherte erwartete Gastadresse von der gespeicherten Abbildung mit der angeforderten Gastadresse übereinstimmt und die gespeicherte erwartete physische Hardwareadresse von der gespeicherten Abbildung mit der vom Arbeitslastmanager bereitgestellten übersetzten physischen Hardwareadresse übereinstimmt.
  13. Computerimplementiertes Verfahren nach Anspruch 11, ferner umfassend: Identifizieren eines Eintrags in einer Speicherinhaberschaftstabelle mit einer virtuellen Abbildung von einer jeweiligen ursprünglichen Gastadresse für die Gastarbeitslast auf eine jeweilige ursprüngliche virtuelle Adresse für die Gastarbeitslast; Verifizieren, dass eine erwartete ursprüngliche virtuelle fastadresse von dem Eintrag in der Speicherinhaberschaftstabelle mit der jeweiligen ursprünglichen virtuellen Adresse übereinstimmt, bevor auf an der jeweiligen ursprünglichen Gastadresse gespeicherte Daten zugegriffen wird.
  14. Computerimplementiertes Verfahren nach Anspruch 11, ferner umfassend: Identifizieren eines gespeicherten erwarteten Registerwerts für die Gastarbeitslast, um ein Seitenverzeichnis und eine Seitentabelle für die Gastarbeitslast zu lokalisieren; und Verifizieren, dass ein vom Arbeitslastmanager bereitgestellter Registerwert mit dem gespeicherten erwarteten Registerwert für die Gastarbeitslast übereinstimmt, bevor auf das Seitenverzeichnis und die Seitentabelle für die Gastarbeitslast zugegriffen wird.
  15. Computerimplementiertes Verfahren nach Anspruch 11, ferner umfassend: Identifizieren (i) einer gespeicherten Steuerstrukturabbildung von einer physischen Hardwareadresse einer ursprünglichen Steuerstruktur auf eine physische Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast und (ii) eines gespeicherten Steuerstrukturindikators, der der Steuerstrukturabbildung zugeordnet ist, wobei der Steuerstrukturindikator auf TRUE gesetzt wird, wenn Inhalte der physischen Hardwareadresse einer ursprünglichen Steuerstruktur eine Steuerstruktur für die Gastarbeitslast enthalten; und Verifizieren, dass eine physische Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur für die Gastarbeitslast mit der physischen Hardwareadresse einer erwarteten Steuerstruktur für die Gastarbeitslast übereinstimmt und dass der Steuerstrukturindikator TRUE ist, bevor die Steuerstruktur für die Gastarbeitslast von der physischen Hardwareadresse einer vom Arbeitslastmanager bereitgestellten Steuerstruktur geladen wird.
  16. Computerimplementiertes Verfahren nach Anspruch 11, ferner umfassend: Identifizieren eines erwarteten Inhaltsverifizierungswerts für eine bestimmte ursprüngliche physische Hardwareadresse; Verifizieren, dass der erwartete Inhaltsverifizierungswert mit einem Hash von Inhalten der bestimmten ursprünglichen physischen Hardwareadresse übereinstimmt, bevor auf an der bestimmten ursprünglichen physischen Hardwareadresse gespeicherte Daten zugegriffen wird.
  17. Zumindest ein computerlesbares Medium mit Befehlen, die bei Ausführung durch einen Prozessor bewirken, dass eine Maschine die Verfahren nach den Ansprüchen 11-16 durchführt.
  18. Computerimplementierte Einrichtung mit einem Mittel zum Durchführen der Verfahren nach den Ansprüchen 11-16.
DE102018123710.3A 2017-11-10 2018-09-26 Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud Pending DE102018123710A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/808,986 US10671737B2 (en) 2017-11-10 2017-11-10 Cryptographic memory ownership table for secure public cloud
US15/808,986 2017-11-10

Publications (1)

Publication Number Publication Date
DE102018123710A1 true DE102018123710A1 (de) 2019-05-16

Family

ID=65230509

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018123710.3A Pending DE102018123710A1 (de) 2017-11-10 2018-09-26 Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud

Country Status (4)

Country Link
US (3) US10671737B2 (de)
JP (2) JP7158985B2 (de)
CN (1) CN109783188B (de)
DE (1) DE102018123710A1 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11693792B2 (en) * 2018-01-04 2023-07-04 Google Llc Infernal storage in cloud disk to support encrypted hard drive and other stateful features
US10802983B2 (en) * 2018-05-31 2020-10-13 Vmware, Inc. Programmable block storage addressing using embedded virtual machines
US11341281B2 (en) * 2018-09-14 2022-05-24 International Business Machines Corporation Providing differential privacy in an untrusted environment
US11106441B2 (en) * 2018-09-14 2021-08-31 Microsoft Technology Licensing, Llc Secure device-bound edge workload delivery
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11455398B2 (en) * 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11550903B1 (en) * 2019-04-26 2023-01-10 Joseph Alan Epstein System and method for trustworthiness, reputation, provenance, and measurement of software
US11720384B2 (en) * 2020-06-05 2023-08-08 Nxp B.V. Program code protection in a data processing system
EP4226573A1 (de) 2020-10-05 2023-08-16 Redcom Laboratories, Inc. Zkmfa: null-kenntnis-basiertes mehrfaktor-authentifizierungssystem
US11782744B2 (en) * 2020-10-08 2023-10-10 Nxp B.V. Data processing system and method for accessing data in the data processing system
CN114490450A (zh) * 2020-11-12 2022-05-13 华为技术有限公司 一种地址转换关系的配置方法及计算机系统
CN112817780B (zh) * 2021-02-01 2022-03-11 上海交通大学 一种实现安全与高性能进程间通信的方法和系统
US11829495B2 (en) 2021-08-05 2023-11-28 International Business Machines Corporation Confidential data provided to a secure guest via metadata
US11809607B2 (en) 2021-08-05 2023-11-07 International Business Machines Corporation Customization of multi-part metadata of a secure guest
CN114124883B (zh) * 2021-10-12 2023-09-12 鸬鹚科技(深圳)有限公司 基于云存储地址的数据访问方法、装置、计算机设备及介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069413B1 (en) * 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
CN100472452C (zh) * 2006-06-23 2009-03-25 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
US20080065854A1 (en) * 2006-09-07 2008-03-13 Sebastina Schoenberg Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor
JP2009230596A (ja) 2008-03-25 2009-10-08 Hitachi Ltd サーバ装置のユーザデータ保護方法、サーバ装置及びコンピュータプログラム
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US8954959B2 (en) * 2010-09-16 2015-02-10 Red Hat Israel, Ltd. Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
CN103597451B (zh) * 2011-03-31 2017-06-13 英特尔公司 用于高可用性的存储器镜像和冗余生成
CN102855450B (zh) * 2011-06-28 2015-10-28 上海网技信息技术有限公司 用于对虚拟计算环境进行隔离保护的方法及系统
US9703723B2 (en) 2011-08-29 2017-07-11 International Business Machines Corporation Method and apparatus for performing mapping within a data processing system having virtual machines
US9804870B2 (en) * 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US8819455B2 (en) 2012-10-05 2014-08-26 Intel Corporation Parallelized counter tree walk for low overhead memory replay protection
US9355032B2 (en) * 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9286152B2 (en) 2013-06-14 2016-03-15 Microsoft Technology Licensing, Llc Securely obtaining memory content after device malfunction
US9563455B2 (en) 2013-10-28 2017-02-07 Intel Corporation Virtualization exceptions
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
CN103731353B (zh) * 2013-12-26 2017-07-14 华为技术有限公司 虚拟机的物理地址获取方法
KR101541350B1 (ko) * 2014-03-04 2015-08-05 주식회사 윈스 클라우드 서비스 네트워크에서 트래픽 제어를 통한 클라우드 보안 서비스 제공 방법 및 시스템
US9792222B2 (en) * 2014-06-27 2017-10-17 Intel Corporation Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure
US9335943B2 (en) 2014-06-30 2016-05-10 Intel Corporation Method and apparatus for fine grain memory protection
US9684605B2 (en) * 2015-02-23 2017-06-20 Intel Corporation Translation lookaside buffer for guest physical addresses in a virtual machine
US9772962B2 (en) * 2015-05-28 2017-09-26 Red Hat Israel, Ltd. Memory sharing for direct memory access by a device assigned to a guest operating system
US9904782B2 (en) * 2015-10-27 2018-02-27 Mcafee, Llc Synchronous execution of designated computing events using hardware-assisted virtualization
US10255196B2 (en) * 2015-12-22 2019-04-09 Intel Corporation Method and apparatus for sub-page write protection
US10185679B2 (en) * 2016-02-24 2019-01-22 Red Hat Israel, Ltd. Multi-queue device assignment to virtual machine groups
US10169244B2 (en) * 2016-07-29 2019-01-01 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10013199B2 (en) * 2016-11-15 2018-07-03 Red Hat Israel, Ltd. Translation bypass by host IOMMU for systems with virtual IOMMU

Also Published As

Publication number Publication date
CN109783188A (zh) 2019-05-21
JP2023015049A (ja) 2023-01-31
JP7158985B2 (ja) 2022-10-24
US11520906B2 (en) 2022-12-06
US20190042764A1 (en) 2019-02-07
CN109783188B (zh) 2024-04-09
US20200293668A1 (en) 2020-09-17
US10671737B2 (en) 2020-06-02
JP7428770B2 (ja) 2024-02-06
JP2019091430A (ja) 2019-06-13
US20200349266A1 (en) 2020-11-05
US11651085B2 (en) 2023-05-16

Similar Documents

Publication Publication Date Title
DE102018123710A1 (de) Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
DE112017004017T5 (de) Sichere öffentliche cloud
DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
CN108509250A (zh) 具有受保护的访客机验证主机控制的安全公共云
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE112020000223B4 (de) Gemeinsame speichernutzung zwischen einer sicheren domäne und einer nicht sicheren entität
DE102019110327A1 (de) Technologien zum verifizieren von speicherintegrität über mehrere speicherbereiche hinweg
DE102020125599A1 (de) Vertrauenswürdige lokale speicherverwaltung in einer virtualisierten gpu
DE112009005466T5 (de) Verfahren und Vorrichtung zum Bereitstellen einer sicheren Anwendungsausführung
DE112017004980T5 (de) Technologien für objektorientiertes speichermanagement mit erweiterter segmentierung
DE112010004885T5 (de) Bereitstellen von Integritätsüberprüfung und -bestätigung in einer verborgenen Ausführungsumgebung
DE102020208234A1 (de) Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung
DE112020000303T5 (de) Testen von speicherschutz-hardware in einer umgebung einer sicheren virtuellen maschine
DE112020000289T5 (de) Abfrage und überlassung von sicherem speicher
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
JP7431224B2 (ja) レルム・セキュリティ構成パラメータのためのパラメータ署名
JP7431225B2 (ja) 信頼される仲介レルム
DE102017117895A1 (de) Sicherer Prozessor für mandantenfähige Cloud-Arbeitslasten
DE112015005602T5 (de) System und Verfahren zum Unterstützen von sicherer Objekten unter Verwendung einer Überwachungseinrichtung zur Speicherzugriffsteuerung
DE112018002947T5 (de) Computersystem-software/firmware und prozessoreinheit mit einem sicherheitsmodul
DE112020000285T5 (de) Programmunterbrechungen für Seiten-Import/-Export
DE112020005517T5 (de) Prozessgestütztes virtualisierungssystem zum ausführen eines sicheren anwendungsprozesses