DE102018115683A1 - Domänenübergreifende sicherheit in kryptographisch partionierter cloud - Google Patents

Domänenübergreifende sicherheit in kryptographisch partionierter cloud Download PDF

Info

Publication number
DE102018115683A1
DE102018115683A1 DE102018115683.9A DE102018115683A DE102018115683A1 DE 102018115683 A1 DE102018115683 A1 DE 102018115683A1 DE 102018115683 A DE102018115683 A DE 102018115683A DE 102018115683 A1 DE102018115683 A1 DE 102018115683A1
Authority
DE
Germany
Prior art keywords
memory
key
mke
engine
data
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
DE102018115683.9A
Other languages
English (en)
Inventor
David Durham
Siddhartha Chhabra
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 DE102018115683A1 publication Critical patent/DE102018115683A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks

Landscapes

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

Abstract

Lösungen für sicheren Speicherzugriff in einer Computerplattform, die eine Mehrfachschlüssel-Verschlüsselungs- (MKE-) Engine als Teil der Speicherschnittstelle zwischen Prozessorkern(en) und Arbeitsspeicher einer Computerplattform umfasst. Der bzw. die Speicherkern(e) führen Arbeitslasten aus, wobei jede davon ihr zugewiesene Teile eines Arbeitsspeichers verwendet. Die MKE-Engine führt Schlüssel-basierte kryptographische Operationen auf Daten aus, um Teile eines Arbeitsspeichers von Arbeitslasten zu isolieren, denen diese Teile eines Arbeitsspeichers nicht zugewiesen sind. Auf einen Schlüssel-Mapping-Datenspeicher ist durch die MKE-Engine zugreifbar und dieser umfasst Zuordnungen zwischen Identifikatoren der Teile eines Arbeitsspeichers sowie entsprechenden Schlüsselidentifikationsdaten, aus denen kryptographische Schlüssel erhalten werden. Ein Schlüssel-Verfolgungsprotokoll wird durch die MKE-Engine erhalten und die MKE-Engine speichert vorübergehend Einträge im Schlüssel-Verfolgungsprotokoll, die Identifikatoren der Teile eines Arbeitsspeichers und Schlüsselidentifikationsdaten für diese Teile eines Arbeitsspeichers während der Speicherzugriffsoperationen auf diese Teile eines Arbeitsspeichers umfassen.

Description

  • FACHGEBIET
  • Die hierin beschriebenen Ausführungsformen beziehen sich allgemein auf Informationssysteme und Datenverarbeitungsarchitektur und, genauer gesagt, auf eine Systemarchitektur und Funktionsfähigkeit zur Prävention von Informationslecks und domänenübergreifenden Angriffen in kryptographisch isolierten Domänen in einer sicheren, öffentlichen Cloud.
  • HINTERGRUND DER ERFINDUNG
  • Cloud-Computing- und Software-as-a-service- (SAAS-) Anbieter operieren immer komplexere Computerserver und Serverfarmen, bei denen Informationssicherheit eines der obersten Interessen bleibt. Jüngste Fortschritte bezüglich der Sicherheit umfassen kryptographische Isolierung zwischen Kunden-Arbeitslasten, die üblicherweise als einzelne virtuelle Maschinen (VMs), die auf einer gewöhnlichen Plattform laufen, implementiert sind.
  • Ein Sicherheitsansatz umfasst die Verwendung von Mehrfachschlüssel-Gesamtspeicherverschlüsselung (MKTME), wobei ein Hypervisor jeder Kunden-Arbeitslast, die auf ihrer eigenen VM läuft, einen kryptographischen Schlüssel zuordnen kann. Jede Arbeitslast kann ihren Schlüssel verwenden, um die von ihm im physischen Speicher des Servers gespeicherten Informationen zu schützen. Eine sichere MKTME-Engine kann als Teil eines Speicherzugriffs-Subsystems verwendet werden, um Verschlüsselungs- und Entschlüsselungsoperationen als Teil der Bereitstellung gesicherten Speicherzugriffs durchzuführen.
  • Obwohl die Erwartungen, mit MKTME eine effektive Komponente einer Serversystemarchitektur zur Verbesserung der Isolation zwischen Kunden-Arbeitslasten zu erhalten, sehr groß sind, müssen einige wichtige Herausforderungen noch gelöst werden. Diese umfassen den Schutz vor bestimmten Arten von Angriffen, wie z.B. Hardware-Replay-Angriffe und domänenübergreifende Injektionsangriffe.
  • Figurenliste
  • In den Zeichnungen, die nicht unbedingt maßstabsgetreu sind, beschreiben gleiche Zahlen ähnliche Komponenten aus unterschiedlichen Ansichten. Gleiche Zahlen mit unterschiedlichen nachgestellten Buchstaben können unterschiedliche Beispiele für ähnliche Komponenten zeigen. Manche Ausführungsformen sind als Beispiele ohne einschränkende Wirkung in den folgenden Figuren der beiliegenden Zeichnungen angegeben.
    • 1 ist eine schematische Darstellung eines beispielhaften Computersystems, das Edge-Vorrichtungen und Cloud-Dienste umfasst, in dem kryptographischer Speicherschutz nach einigen Ausführungsformen angewendet werden kann.
    • 2 ist ein Blockdiagramm auf hoher Ebene, das eine Hostmaschinen-Plattform darstellt, die alle oder Teile der Edge-Vorrichtungen oder der Cloud-Dienste aus 1 nach einigen Ausführungsformen anwenden kann.
    • 3 ist ein Diagramm, das eine beispielhafte Computerhardware und Softwarearchitektur eines Computersystems darstellt, wie jene in 2 dargestellt, in der verschiedene Schnittstellen zwischen den Komponenten der Hardware und der Software gezeigt sind.
    • 4 ist ein funktionelles Diagramm, das die Operationen einer Mehrfachschlüssel-Speicherverschlüsselungsanordnung nach einigen Ausführungsformen darstellt.
    • 5 ist ein Teil eines Systemarchitekturdiagramms, das eine Enginebasierte Anwendung einer Mehrfachschlüssel-Speicherverschlüsselungsanordnung nach einigen Ausführungsformen darstellt.
    • 6 ist ein Flussdiagramm, das Operationen einer Mehrfachschlüssel-Verschlüsselungsschaltung, die mit der Schlüsselverfolgungstabelle (KTT) in Verbindung stehen, als Antwort auf eine Speicherleseoperation nach einem Beispiel darstellt.
    • 7 ist ein Flussdiagramm, das KTT-bezogene Operationen einer Mehrfachschlüssel-Verschlüsselungsschaltung, als Antwort auf eine Speicherschreiboperation nach einem Beispiel darstellt.
    • 8 ist ein Flussdiagramm, das Operationen darstellt, die von einer Mehrfachschlüssel-Verschlüsselungsengine in Zusammenwirkung mit einem Prozessorkern nach einer Ausführungsform durchgeführt werden, zum Beispiel unter Verwendung eines Salt-Verfahrens zur Abwehr eines domänenübergreifenden Replay-Angriffs.
  • DETAILLIERTE BESCHREIBUNG
  • Aspekte dieser Offenbarung zielen auf kryptographischen Speicherschutz ab. Die beschriebenen Ausführungsformen können verwendet werden, um Speicherverschlüsselungsschutz bereitzustellen, wodurch eine zusätzliche Schutzschicht durch das Stopfen der Lücke, das mit dem ungeschützten und unsicheren Speicher in Verbindung steht, bereitgestellt wird. Zum Beispiel kann Speicherverschlüsselung in manchen Ausführungsformen durch die Anwendung einer kryptographischen Engine oder Steuerung am Speicherpfad oder Speicherbus bereitgestellt werden. Auf diese Weise können Daten verschlüsselt und geschützt werden, während sie im Arbeitsspeicher liegen und während der Übertragung in und aus dem Arbeitsspeicher (z.B. beim Übertragen aus dem Arbeitsspeicher in einen Prozessor, sowie vice versa, über den Speicherbus oder Speicherpfad). Obwohl Speicherverschlüsselung eine Notwendigkeit für bestimmte Nutzer oder Nutzungsfälle ist, kann einheitlicher Speicherschutz für ein Computersystem in manchen Fällen unzureichend sein. Zum Beispiel hosten Cloud-Dienstanbieter häufig Daten oder Applikationen - oder Arbeitslasten - für mehrere Kunden und Dritte. Außerdem könnte der Cloud-Dienstanbieter Speicherverschlüsselung verwenden, um einheitlichen Schutz für alle gehosteten Kunden-Arbeitslasten bereitzustellen, zum Beispiel unter Verwendung eines einzigen Verschlüsselungsschlüssels. Nichtsdestotrotz kann die einfache Bereitstellung eines einheitlichen Speicherverschlüsselungsschutzes für alle gehosteten Arbeitslasten - ohne Differenzierung zwischen den Arbeitslasten unterschiedlicher Kunden - unzureichend sein. Zum Beispiel kann ein Cloud-Serviceanbieter oder dessen Kunden dagegen sein, den gleichen Verschlüsselungsschlüssel mit allen Kunden zu teilen. Der Cloud-Dienstanbieter oder dessen Kunden bevorzugen eher Speicherverschlüsselung, die jedem Kunden individuell bereitgestellt ist (z.B. pro Kunde oder pro virtueller Maschine), um sicherzustellen, dass jeder Kunden-Arbeitslast mit einem eindeutigen Verschlüsselungsschlüssel getrennt voneinander geschützt und isoliert ist.
  • Dementsprechend stellen Aspekte dieser Offenbarung Speicherverschlüsselung bereit, die mehrere Schlüssel unterstützt. Die Anzahl an unterstützten Schlüsseln kann zum Beispiel implementierungs-abhängig sein. In einem Beispiel kann eine Speicherschutzengine zum Beispiel konfiguriert oder programmiert sein (z.B. durch Software), um unterschiedliche Regionen oder Seiten des Speichers mittels unterschiedlicher Verschlüsselungsschlüssel oder Algorithmen zu verschlüsseln. Zum Beispiel kann ein Nutzer oder Mandant (z.B. ein Cloud-Dienstanbieter oder Kunde) in einem Beispiel einen Schutzmodus für eine bestimmte Region oder Seite eines Speichers entweder als Klartext (z.B. unverschlüsselt), Standard- oder Default-Verschlüsselungsschutz (z.B. mit Default- oder Globalverschlüsselungsschlüssel verschlüsselt) oder Kunden-Verschlüsselungsschutz bestimmen. Auf diese Weise kann eine Speicherverschlüsselung bereitgestellt werden und getrennt für unterschiedliche Mandanten, Kunden oder Schutzdomänen konfiguriert werden. In einem Beispiel kann eine „Domäne“, zum Beispiel, als eine Sammlung von Ressourcen mit einer bestimmten Arbeitslast gesehen werden, die eine beliebige Region des Arbeitsspeichers umfassen können, die mit der Arbeitslast in Verbindung gebrachte Daten umfassen. Außerdem kann die Speicherverschlüsselung für jede Domäne einzeln konfiguriert sein, wodurch jede Domäne oder Arbeitslast mittels eines eignen Verschlüsselungsschlüssels geschützt werden kann. Auf diese Weise kann kryptographische Isolation für Arbeitslasten unterschiedlicher Mandanten, Kunden oder Nutzer erreicht werden. Ferner können die Arbeitslasten auch von der Verwaltungssoftware (z. B. von einem Cloud-Dienstanbieter), wie einem Hypervisor, isoliert sein. Domänen können auch in Klartextmodus konfiguriert sein, da es unter manchen Umständen unerwünscht ist, eine Speicherverschlüsselung für eine bestimmte Domäne durchzuführen (z.B. um Leistungsauswirkungen der Speicherverschlüsselung zu vermeiden, Arbeitsspeicher (und E/A) zwischen unterschiedlichen Einheiten zu teilen, Speicherplatz freizugeben und so weiter).
  • Die beschriebenen Ausführungsformen können ebenfalls zum Schutz von Daten verwendet werden, wenn ein Arbeitsspeicher für dauerhafte Datenspeicherung verwendet wird, wie z.B. Storage Class Memory (SCM) und anderen Arten von Flash- und Festspeichern (z.B. nichtflüchtige, zweireihiges Speichermodul (NVDIMM), Direktzugriffsspeicher (DAS) und dergleichen). Beispielsweise, wird dauerhafte Datenspeicherung mittels eines Arbeitsspeichers anstelle von festplattenbasierten Speichern bereitgestellt, ist Festplattenverschlüsselungssoftware möglicherweise nicht in der Lage sein, die gespeicherten Daten adäquat zu schützen, wenn die Speicherverschlüsselung nicht unterstützt wird. Dementsprechend können die beschriebenen Ausführungsformen verwendet werden, um Daten mittels Speicherverschlüsselung zu schützen, wenn Arbeitsspeicher zur dauerhaften Datenspeicherung verwendet werden.
  • 1 ist ein schematisches Diagramm, das ein beispielhaftes Computersystem 100 darstellt. In verschiedenen Ausführungsformen können das System 100 oder die ihm zugrundeliegenden Komponenten die kryptographische Speicherschutzfunktion umfassen, die in der vorliegenden Offenbarung beschrieben ist. Zum Beispiel kann ein Cloud-Serviceprovider 120 Arbeitslasten 130 (z.B. virtuelle Maschinen) für mehrere Kunden oder Dritte hosten. Dementsprechend kann ein Cloud-Serviceprovider 120 kryptographischen Mehrfachschlüssel-Speicherschutz mit mehreren Schlüsseln ausführen, um Speicherverschlüsselung einzeln für jeden Mandanten bereitzustellen, wobei sichergestellt wird, dass die Arbeitslast 130 jedes Kunden getrennt voneinander geschützt und mit einem eindeutigen Verschlüsselungsschlüssel geschützt ist. Kryptographische Speicherschutz kann auch von anderen Komponenten des Systems 100 ausgeführt werden, wie z.B. von Edge- Vorrichtungen 110.
  • Edge-Vorrichtungen 110 können jedes beliebige Equipment oder jede beliebige Vorrichtung umfassen, die in der Nähe des „Edge“ eines Kommunikationssystems 100 platziert sind oder diesem zugewiesen sind. In den dargestellten Ausführungsformen umfassen Edge-Vorrichtungen 110 u.a. Endnutzervorrichtungen 112 (z.B. Desktops, Laptops, Mobilgeräte), Internet-of-Things- (IoT) Vorrichtungen 114 und Netzwerkvorrichtungen 116, wie z.B. Netzwerkübergangseinrichtungen oder Router. Edge-Vorrichtungen 110 können miteinander oder mit anderen entfernten Netzwerken und Dienste (z.B. Cloud-Dienste 120) über ein oder mehrere Netzwerke oder Kommunikationsprotokolle, wie z. B. Kommunikationsnetzwerk 150 kommunizieren. Ferner können bestimmte Edge-Vorrichtungen 110 die kryptographische Speicherschutzfunktion, die in der vorliegenden Beschreibung beschrieben ist, umfassen.
  • Endnutzervorrichtungen 112 können jede Vorrichtung umfassen, die Nutzerwechselwirkung mit dem Computersystem 100 ermöglicht oder erleichtert, zum Beispiel Desktopcomputer, Laptops, Tablets, Mobiltelefone oder andere Mobilgeräte, und tragbare Geräte (z.B. Smartwatches, Smartglasses, Headsets), neben andere Beispielen, umfassend.
  • IoT-Vorrichtungen 114 können jede Vorrichtung umfassen, die in der Lage ist, in einem Internet-of-Things- (IoT) System oder -Netzwerk zu kommunizieren oder teilzuhaben. IoT-Systeme können sich auf neue oder verbesserte Ad-Hoc-Systeme und -Netzwerke beziehen, die aus mehreren unterschiedlichen Vorrichtungen (z.B. IoT-Vorrichtungen 114) bestehen und für eine bestimmte Nutzung oder einen Anwendungsfall interagieren oder synergieren. Solche Ad-Hoc-Systeme entstehen, da immer mehr „smarte“ Produkte und Ausrüstung entwickelt werden, was bedeutet, dass sie mit Computerprozessoren gesteuert oder kontrolliert werden und in der Lage sind, mit anderen Vorrichtungen zu kommunizieren. Zum Beispiel kann eine IoT-Vorrichtung 114 einen Computerprozessor oder Computerschnittstelle umfassen, die Interaktion mit anderen Komponenten des Systems 100 erlaubt, wie etwa mit Cloud-Diensten 120 oder anderen Edge-Vorrichtungen 110. IoT-Vorrichtungen 114 können „Greenfield-“ Vorrichtungen sein, die von Grund auf mit IoT-Fähigkeiten entwickelt worden sind oder „Brownfield-“ Vorrichtungen, die erzeugt wurden, indem IoT-Fähigkeiten in bereits existierende Altgeräte integriert wurden, die ursprünglich ohne IoT-Fähigkeiten entwickelt wurden. Zum Beispiel können IoT-Geräte 114 in manchen Fällen aus Sensoren und Kommunikationsmodulen gebaut werden, die in „Dinge“, wie etwa Ausrüstung, Spielzeuge, Werkzeuge, Fahrzeuge, Lebewesen (z.B. Pflanzen, Tiere, Menschen) und so weiter, integriert oder an diesen angebracht werden. Alternativ oder zusätzlich dazu können bestimmte IoT-Vorrichtungen 114 von Zwischenkomponenten, wie z.B. Edge-Netzwerkübergangseinrichtungen 116, abhängen, um mit den verschiedenen Komponenten des Systems 100 zu kommunizieren.
  • Cloud-Dienste 120 können Dienste umfassen, die an einem entfernten Standort über ein Netzwerk 150 oder in der „Cloud“ untergebracht sind. In einem Beispiel, können Cloud-Dienste 120 entfernt auf Servern in einem Rechenzentrum (z.B. Anwendungsservern oder Datenbankservern) untergebracht sein. Cloud-Dienste 120 können beliebige Dienste umfassen, die von oder für Edge-Vorrichtungen 110 verwendet werden können, die, ohne darauf beschränkt zu sein, Daten- und Anwendungshosting, Computerservices (z.B. Datenanalytik, Suche, Diagnosen und Fehlerverwaltung), Sicherheitsservices (z.B. Überwachung, Alarme und Nutzerauthentifizierung), Karten- und Navigationsanwendungen, Geolokalisierungsdienste, Netzwerk- oder Infrastrukturverwaltung, IoT-Anwendungen und Verwaltungsdiensten, Zahlungsabwicklung, Audio- und Videostreaming, Nachrichtenübermittlung, soziale Netzwerke, Nachrichten und Wetter, neben anderen Beispielen, umfasst. Außerdem können manche Cloud-Dienste 120 in einem Beispiel die kryptographische Speicherschutzfunktion umfassen, die in der vorliegenden Offenbarung beschrieben ist. Zum Beispiel hostet ein Cloud-Dienstanbieter 120 oft Arbeitslasten 130 (z.B. Daten oder Anwendungen) für mehrere Kunden oder Dritte. Dementsprechend kann ein Cloud-Dienstanbieter 120 kryptographischen Speicherschutz mit mehreren Schlüsseln anwenden, um Speicherverschlüsselung individuell für jeden einzelnen Kunden bereitzustellen, wobei sichergestellt wird, dass jede Kunden-Arbeitslast 130 einzeln geschützt und durch die Verwendung eines eindeutigen Verschlüsselungsschlüssels isoliert ist.
  • Das Netzwerk 150 kann verwendet werden, um die Kommunikation zwischen den Komponenten des Computersystems 100 zu erleichtern. Zum Beispiel können Edge-Vorrichtungen 110, wie Endnutzervorrichtungen 112 und IoT-Vorrichtungen 114, in einem Netzwerk 150 verwendet werden, um miteinander zu kommunizieren oder auf einen oder mehrere entfernte Cloud-Dienste 120 zuzugreifen. Das Netzwerk 150 kann jede Anzahl oder Art von Kommunikationsnetzwerken umfassen, beispielsweise lokale Netzwerke, Großraumnetzwerke, öffentliche Netzwerke, das Internet, Zellnetzwerke, Wi-Fi-Netzwerke, Netzwerke geringer Reichweite (z.B. Bluetooth oder ZigBee) oder jedes beliebige andere verdrahtete oder drahtlose Netzwerk oder Kommunikationsmedium miteingeschlossen.
  • Die hierin beschriebenen Beispielausführungsformen können Logik oder eine Anzahl an Komponenten, Modulen, Schaltungen oder Engines umfassen oder auf diesen betrieben werden, die zum Zweck der Konsistenz als Engines bezeichnet werden, obwohl verstanden wird, dass diese Termini synonym verwendet werden können. Engines können Hardware, Software oder Firmware sein, die kommunikativ an eine oder mehrere Elektronikschaltungen gekoppelt ist, um die hierin beschriebenen Operationen auszuführen. Engines umfassen Hardware und so sind Engines greifbare Einheiten, die in der Lage sind, bestimmte Operationen auszuführen und in jeder geeigneten Weise konfiguriert oder angeordnet sein können. In einem Beispiel kann eine Elektronikschaltung auf eine bestimmte Weise als Engine angeordnet sein (z.B. intern oder mit in Bezug auf externe Einheiten, wie andere Schaltungen). In einem Beispiel können ein ganzes oder ein Teil eines oder mehrerer Computersysteme (z.B. ein Stand-Alone-, Kunden- oder Server-Computersystem) oder eines oder mehrerer Hardwareprozessoren kann mittels Firmware oder Software (z.B. Anweisungen, ein Anwendungsteil oder eine Anwendung) als Engine konfiguriert sein, die arbeitet, um bestimmte Operationen auszuführen. In einem Beispiel kann die Software auf einem maschinenlesbaren Medium (zum Beispiel einem nichttransitorischen Speichermedium, wie einem Hardware-Speichermedium) untergebracht sein. In einem Beispiel verursacht die Software die Hardware dazu, die bestimmten Operationen auszuführen, wenn diese von der der Engine zugrundeliegenden Hardware ausgeführt wird.
  • Demnach wird der Terminus Engine so verstanden, dass er eine greifbare Einheit miteinschließt, sei es eine physikalisch konstruierte, spezifisch konfigurierte (z.B. festverdrahtet) oder eine temporär (z.B. transitorisch) konfigurierte (z.B. programmierte) Einheit, die auf eine spezifischen Weise arbeitet oder einen Teil oder jeden beliebige hierin beschriebene Operation ausführt. Unter Berücksichtigung von Beispielen in denen Engines temporär konfiguriert sind, muss keine der Engines an einem beliebigen Zeitpunkt instanziiert werden. Umfassen Engines zum Beispiel einen Universal-Hardwareprozessor, der mittels Software konfiguriert ist, wobei der Universal-Hardwareprozessor zu unterschiedlichen Zeitpunkten als jeweils unterschiedliche Engines konfiguriert sein kann. Die Software kann zum Beispiel einen Hardwareprozessor dementsprechend konfigurieren, um eine bestimmte Engine an einem bestimmten Zeitpunkt zu bilden und eine bestimmte Engine an einem anderen Zeitpunkt zu bilden.
  • 2 ist ein Blockdiagramm auf hoher Ebene, das eine Hostmaschinen-Plattform darstellt, die alle oder Teile der Edge-Vorrichtungen 110 oder der Cloud-Dienste 120 aus 1 nach einigen Ausführungsformen anwenden kann. In bestimmten Ausführungsformen bringt die Programmierung des Computersystems 200 nach einem oder mehreren Algorithmen eine Sonderzweckmaschine nach dem Ausführen der Programmierung hervor. In einer Netzwerkeinrichtung kann die Hostmaschine entweder in der Fähigkeit eines Servers oder einer Kunden-Maschine in Server-Kunden-Netzwerkumgebungen fungieren oder als Peer-Maschine in Peer-To-Peer-Netzwerkumgebungen agieren. Die Hostmaschine kann jeden geeigneten Formfaktor annehmen, wie den eines Personalcomputer- (PC-) Arbeitsplatzes, eines Servers, sei er rackmontiert oder ein Stand-Alone, eines Mainframe-Computers, eines Cluster-Computersystems oder dergleichen, einer Set-Top-Box, sowie eines mobilen oder tragbaren Computersystems, wie z.B. eines Laptop/Notebook-PCs, eines eingebauten Vehikelsystems, tragbaren Vorrichtung eines Tablet-PCs, eines Hybrid-Tablets, eines persönlichen digitalen Assistenten (PDA), eines mobilen Telefons oder allgemeiner, jeder Maschine, die in der Lage ist Instruktionen auszuführen (sequenziell oder auf andere Weise), die die Prozesse, die von der Maschine ausgeführt werden sollen, spezifizieren.
  • Beispielhafte Hostmaschinen 200 umfassen zumindest einen Prozessor 202 (z.B. ein Hauptprozessor (CPU), Grafikprozessor (GPU) oder beide, Prozessorkerne, Computerknoten etc.), einen Hauptspeicher 204 und einen statischen Speicher 206, die miteinander über eine Datenverbindung 208 (z.B. Bus) kommunizieren. Die Hostmaschine 200 kann ferner eine Videoanzeigevorrichtung 210, eine alphanumerische Eingabevorrichtung 212 (z.B. eine Tastatur) und ein Nutzeroberflächen- (UI-) Navigationsvorrichtung 214 (z.B. eine Maus) umfassen. In einer Ausführungsform sind die Videoanzeigevorrichtung 210, die Eingabevorrichtung 212 und die UI-Navigationsvorrichtung 214 in einen Touchscreen-Bildschirm eingebaut. Die Hostmaschine 200 kann eine zusätzliche Speichervorrichtung 216 (z.B. eine Antriebseinheit), eine Signalerzeugungsvorrichtung 218 (z.B. einen Lautsprecher), eine Netzwerkschnittstellenvorrichtung (NID) 220 und einen oder mehrere Sensoren (nicht gezeigt), wie einen globalen Positionsbestimmungssystem- (GPS-) Sensor, Kompass, Beschleunigungssensor oder einen anderen Sensor umfassen.
  • Die Speichervorrichtung 216 umfasst ein maschinenlesbares Medium 222, auf dem ein oder mehrere Sets von Datenstrukturen und -instruktionen 224 (z.B. Software) gespeichert sind, die von jeder beliebigen oder mehreren der hierin beschriebenen Methodologien und Funktionen verkörpert oder verwendet werden. Die Instruktionen 224 können auch vollständig oder zumindest teilweise im Hauptspeicher 204, dem statischen Speicher 206 oder im Prozessor 202 liegen, während diese durch die Hostmaschine 200 ausgeführt werden, wobei der Hauptspeicher 204, der statische Speicher 206 und der Prozessor 202 auch maschinenlesbare Medien bilden.
  • Während das maschinenlesbare Medium 222 in einer beispielhaften Ausführungsform als Einzelmedium dargestellt ist, kann der Terminus „maschinenlesbares Medium“ ein einzelnes Medium oder mehrere Medien umfassen (z.B. eine zentralisierte oder verteilte Datenbank oder damit verbundene Caches und Server), die ein oder mehrere Instruktionen 224 speichern. Der Terminus „maschinenlesbares Medium“ soll so verstanden werden, dass er jedes greifbare Medium umfasst, das in der Lage ist Instruktionen für die Ausführung durch eine Maschine zu speichern, zu kodieren oder zu tragen und das die Maschine dazu veranlasst, eine oder mehrere der Methodologien der vorliegenden Offenbarung auszuführen, oder das in der Lage ist, Datenstrukturen, die von solchen Instruktionen verwendet werden oder mit ihnen in Verbindung gebracht werden, zu speichern, zu kodieren oder zu tragen. Der Terminus „maschinenlesbares Medium“ soll dementsprechend Festspeichern, und optische und magnetische Medien umfassen, ohne darauf beschränkt zu sein. Bestimmte Beispiele von maschinenlesbaren Medien umfassen nichtflüchtige Speicher, die beispielsweise Halbleiterspeichervorrichtungen (z.B. elektrisch programmierbare Nur-Lese-Speicher- (EPROM-), elektrisch löschbarere programmierbare Nur-Lese-Speicher- (EEPROM-) und Flash-Speichervorrichtungen, magnetische Platten, wie etwa interne Festplatten oder Wechseldatenträger, magnetooptische Platten und CD-ROM und DVD-ROM-Platten.
  • Die NID 220 kann gemäß einigen Ausführungsformen jeden geeigneten Formfaktor haben. In einer dieser Ausführungsformen liegt die NID 220 in Form einer Netzwerkschnittstellenkarte (NIC) vor, die eine Schnittstelle mit dem Prozessor 202 über die Datenverbindung 208 darstellt. In einem Beispiel umfasst die Datenverbindung 208 eine PCI-Express- (PCIe) Zwischenverbindung, die einen Steckplatz umfasst, in den der NIC-Formfaktor entfernbar einrasten kann. In einer anderen Ausführungsform ist die NID 220 eine Netzwerkschnittstellenschaltung, die zusammen mit einer lokalen Verbindungsschaltung, einer Prozessorschnittstellenschaltung, anderen Eingabe/Ausgabe-Schaltungen, Speicherschaltungen, Speichermedien und peripheren Steuerschaltungen und dergleichen auf einer Hauptplatine montiert ist. In einer weiteren Ausführungsform ist die NID 220 eine Peripherievorrichtung, die eine Schnittstelle mit der Datenverbindung 208 über einen peripheren Eingabe/Ausgabe-Anschluss, wie einem Universal Serial Bus-(USB-) Anschluss, darstellt. Die NID 220 überträgt und empfängt Daten über das Übertragungsmedium 226, das verkabelt oder kabellos (z.B. Radiofrequenz, Infrarot oder sichtbare Lichtspektren etc.), mit Faseroptik oder dergleichen sein kann.
  • 3 ist ein Diagramm, das eine beispielhafte Computerhardware und Softwarearchitektur eines Computersystems darstellt, wie jene in 2 dargestellt, in der verschiedene Schnittstellen zwischen den Komponenten der Hardware und der Software gezeigt sind. Wie durch die Kennzeichnung „HW“ angegeben, sind die Hardware-Komponenten unter der Trennlinie dargestellt, während die Software-Komponenten, die durch mit „SW“ gekennzeichnet sind, über der Trennlinie liegen. Auf der Seite der Hardware sind Verarbeitungsvorrichtungen 302 (die einen oder mehrere Mikroprozessoren, Digitalsignalprozessoren etc. umfassen können), die je einen oder mehrere Prozessorkerne aufweisen, sind mit einer Speicherverwaltungsvorrichtung 304 und einer Systemzwischenverbindung 306 verbunden. Die Speicherverwaltungsvorrichtung 304 stellt Abbildungen zwischen virtuellen Speichern bereit, die von ausgeführten Prozessen verwendet werden, und dem physischem Speicher bereit. Die Speicherverwaltungsvorrichtung 304 kann einen wichtigen Teil einer Zentraleinheit darstellen, der auch die Verarbeitungsvorrichtungen 302 umfasst.
  • Die Zwischenverbindung 306 umfasst eine Rückwandplatine, wie etwa Speicher-, Daten- und Steuerzeilen, sowie die Schnittstelle mit Eingabe/Ausgabe-Vorrichtungen, z.B. PCI-e, USB etc. Arbeitsspeicher 308 (z.B. dynamischer Direktzugriffsspeicher - DRAM) und nichtflüchtige Speicher 309, wie z.B. Flash-Speicher (z.B. elektrisch löschbare Nur-Lese-Speicher - EEPROM, NAND-Flash, NOR-Flash etc.), sind über die Speichersteuerung 310 mit der Speicherverwaltungsvorrichtung 304 und der Zwischenverbindung 306 verbunden. E/A-Vorrichtungen, Video- und Audioadapter, nichtflüchtige Speicher, externe periphere Verbindungen wie z.B. USB, persönliche Netzwerke (z. B. Bluetooth) etc., Kamera-/Mikrofondatenerfassungsgeräte, Fingerabdrucklesevorrichtungen und andere biometrische Sensoren sowie Netzwerkschnittstellenvorrichtungen wie jene, die über Wi-Fi oder LTE-Familienschnittstellen kommunizieren, miteingeschlossen, sind kollektiv als E/A-Vorrichtungen und Netzwerk 312 dargestellt, die mit der Zwischenverbindung 306 über die entsprechenden E/A-Steuerungen 314 verbunden sind.
  • In einer verwandten Ausführungsform unterstützt die Eingabe/Ausgabe-Speicherverwaltungseinheit IOMMU 315 Speicherdirektzugriff (DMA) durch Peripheriegeräte. IOMMU 315 kann Speicherschutz durch die Regelung des Zugriffs auf den Speicher 308 der A/E-Vorrichtung 312 bereitstellen. IOMMU 315 kann auch DMA-Speicherschutz in virtualisierten Umgebungen bereitstellen, wo es bestimmten Computerhardwareressourcen erlaubt, bestimmten Gast-VMs zugewiesen zu werden, die auf dem System laufen, und Isolation zwischen anderen VMs und Peripheriegeräten, die ihnen nicht zugewiesen sind, erzwingt.
  • Auf der Seite der Software liegt eine Umgebung vor dem Starten (pre-OS) des Systems 316, die beim Systemstart ausgeführt wird und für die Initiierung des Hochfahrens des Betriebssystems verantwortlich ist. Ein übliches Beispiel für eine pre-OS-Umgebung 316 ist ein einfaches Eingabe/Ausgabe-System (BIOS). In heutigen Systemen ist eine vereinheitlichte Formware-Schnittstelle (UEFI) eingebaut. Die pre-OS-Umgebung 316 ist für die Initialisierung des Starts des Betriebssystems oder des virtuellen Maschinenmanagers verantwortlich, wobei sie jedoch auch eine Ausführungsumgebung für integrierte Anwendungen bereitstellt.
  • Ein Hypervisor 318 ist eine Systemsoftware, die die Ausführung von virtuellen Maschinen (VMs) 320A und 320B verursacht und steuert. Der Hypervisor 318 kann direkt auf der Hardware HW laufen, wie dargestellt, oder der Hypervisor 318 kann unter der Steuerung eines Betriebssystems als gehosteter Hypervisor laufen. Jeder VM 320A, 320B umfasst ein Gastbetriebssystem 322A, 322B und Anwendungsprogramme 324A, 324B.
  • Jedes Gastbetriebssystem (OS) 322A, 322B stellt einen Betriebssystemkern bereit, der über die von Hypervisor 318 bereitgestellten Ressourcen arbeitet, um die Hardwarevorrichtungen zu steuern, Speicherzugriff für Programme im Arbeitsspeicher zu leiten, Arbeitsschritte zu koordinieren und Mehrprozessbetrieb zu erleichtern, zu speichernde Daten zu verwalten, Speicherplatz und andere Ressourcen zuzuordnen, binären Programmcode in den Arbeitsspeicher zu laden, die Ausführung des entsprechenden Anwendungsprogramms zu initiieren, das dann mit dem Nutzer und den Hardwarevorrichtungen in Wechselwirkung tritt, und einige bestimmte Unterbrechungen zu erkennen und auf diese zu antworten. Jedes Gast-OS 322A, 322B stellt außerdem Vorrichtungstreiber sowie eine Vielzahl an üblichen Diensten bereit, wie z.B. jene, die das Verbinden mit Peripheriegeräten und Netzwerken erleichtern, die Abstraktion für entsprechende Anwendungsprogramme 324A, 324B bereitstellen, sodass die Anwendungen nicht für die Handhabung der Details solcher allgemeinen Operationen verantwortlich sind. Jedes Gast-OS 322A, 322B kann zusätzlich dazu eine grafische Benutzeroberfläche (GUI) bereitstellen, die Wechselwirkung mit dem Nutzer über periphere Vorrichtungen, wie z.B. einen Monitor, eine Tastatur, eine Maus, ein Mikrofon, eine Videokamera, einen Touchscreen und dergleichen, ermöglicht. In einem Beispiel kann der Gast-OS 322B ohne einen GUI vorliegen.
  • Jeder Gast-OS 322A, 322B kann ein Laufzeitsystem bereitstellen, das Teile eines Ausführungsmodells anwendet, wobei Operationen wie das Stapeln von Parametern vor einem Funktionsaufruf, das Verhalten von Platten-Eingabe/Ausgabe (E/A) und paralleles, mit der Ausführung in Verbindung gebrachtes Verhalten miteingeschlossen sind.
  • Zusätzlich dazu kann jedes Gast-OS 322A, 322B Bibliotheken bereitstellen, die Sammlungen von Programmfunktionen umfassen, die ferner Abstraktion für Anwendungsprogramme bereitstellen. Diese umfassen beispielsweise geteilte Bibliotheken und dynamische Programm-Bibliotheken (DLLs).
  • Anwendungsprogramme 324A, 324B sind Programme, die nützliche Arbeitsschritte für Nutzer ausführen, die über jene Arbeitsschritte hinausgehen, die von Systemprogrammen niedrigerer Ebene ausgeführt werden, die die Grundfunktionsfähigkeit des Computersystems an sich koordinieren.
  • 4 ist ein funktionelles Diagramm, das die Operationen einer Mehrfachschlüssel-Speicherverschlüsselungsanordnung nach einigen Ausführungsformen darstellt. Die Arbeitslasten 402A und 402B können als voneinander isolierte VMs implementiert werden. Jede Arbeitslast 402 besitzt ihre entsprechenden Daten, die gegebenenfalls auf ihrem eignen kryptographischen Schlüssel verschlüsselt sind, sodass die anderen Arbeitslasten (oder jede beliebige andere Einheit) nicht in der Lage sind, die gespeicherten Daten zu entschlüsseln.
  • Ein sicherer Speicherzuordner 404 ordnet den entsprechenden Arbeitslasten 402 Speicheradressen zu (z.B. die aus Einheiten von Speicherseiten 416 oder anderen logischen Speicherblöcken bestehen können). In einem Beispiel ordnet der sichere Speicherzuordner 404 jedem Arbeitsspeicher Schreiboperationen in einem gesicherten/ungesicherten Modus zu. Im gesicherten Modus werden die Daten verschlüsselt, wohingegen die Daten im ungesicherten Modus als Klartext belassen werden. In einem Beispiel kann der sichere Speicherzuordner 404 mit einem Hypervisor implementiert werden. In einem Praxisbeispiel, das in 4 dargestellt ist, ordnet der sichere Speicherzuordner 404 der Arbeitslast 402A zwei Speicherseiten und der Arbeitslast 402b zwei weitere Speicherseiten zu.
  • Mehrfachschlüssel-Verschlüsselungs- (MKE-) Engine 406 führt kryptographische Operationen und Operationen, die mit der Verschlüsselung und Entschlüsselung von Daten in Verbindung gebracht werden, die in einen Arbeitsspeicher 418 geschrieben werden und aus diesem gelesen werden (der die Seiten 416 gespeichert haben kann), aus. Die MKE-Engine 406 kann als isolierte Ausführungsumgebung implementiert werden.
  • Jede zugewiesene Speicherseite muss einem Schlüsselidentifikator (keyID) zugeordnet werden, die einem bestimmten kryptographischen Schlüssel entspricht. Jede keyID ist ein Pointer oder ein Bezug auf einen spezifischen kryptographischen Schlüssel, der getrennt vom Arbeitsspeicher 418, dem sicheren Speicherzuordner 404 und den Arbeitslasten 402 gespeichert ist. In einem Beispiel, wie in 4 dargestellt, können Schlüsselnachschlage-Datenspeicher 408 in einem Arbeitsspeicher 418, in einer MKE-Engine 406 oder anderswo enthalten sein, wo auf diese durch MKE-Engine 406, die unten beschrieben ist, effizient zugegriffen werden kann. Ein Schlüsselnachschlage-Datenspeicher 408 ordnet keyIDs den entsprechenden kryptographischen Schlüsseln zu. Ein Schlüsselnachschlage-Datenspeicher 408 kann unter Verwendung jeder geeigneten Datenstruktur verwendet werden.
  • In einer verwandten Ausführungsform sind die im Schlüsselnachschlage-Datenspeicher 408 gespeicherten Schlüssel selbst verschlüsselt (z. B. in einen geheimen Code gepackt, der nur der Hardware-Plattform bekannt ist, oder für einen Sicherungsschlüssel oder eine physisch nicht-klonierbare Funktions- (PUF-) Schaltung abgeleitet).
  • Auffallend ist, dass in einem Beispiel bestimmte keyIDs keinem Schlüssel zugeordnet werden können. Eine Speicheranforderung, die mit dieser Art von keyID erhalten wird, umgeht die Verschlüsselungsengine vollständig. In einem Beispiel kann dieses Umgehen auch implementiert werden, um einen Leistungsvorteil zu ermöglichen. In einer verwandten Ausführungsform kann der nichtverschlüsselte Betriebsmodus vom sicheren Speicherzuordner 404 ausgewählt werden, wobei in diesem Fall die Mehrfachschlüssel-Verschlüsselungsoperationen vollständig umgangen werden, um die Speicherzugriffsleistung zu verbessern.
  • Die MKE-Engine 406 greift auf den Schlüsselnachschlage-Datenspeicher 408 zu, um die Schlüssel, die für die Verschlüsselung oder Entschlüsselung der Daten benötigt werden, die in den Arbeitsspeicher 418 geschrieben oder aus diesem gelesen werden sollen. Dabei kann die MKE-Engine 406 individuelle Schlüssel für schnelleren Abruf zwischenspeichern, wenn angenommen wird, dass diese in nachfolgenden Speicherzugriffen wiederverwendet werden. Der Schlüsselnachschlage-Datenspeicher 408 ist durch die keyID der entsprechenden Schlüssel im indizierten Eintrag indiziert. Wird der Tabelle ein neuer Schlüssel zugefügt oder ein bestehender Schlüsseleintrag modifiziert, sollen Zwischenspeicherungen der Schlüssel geleert werden und alle Prozessor-Umwandlungs-Nachschlage-Puffer- (TLB-) Zustände gelöscht werden.
  • Die MKE-Engine 406 greift auch auf Schlüssel-Mapping-Datenspeicher 410 zu. Der Schlüssel-Mapping-Datenspeicher 410 ordnet die keyIDs den physischen Speicheradressen oder -seiten zu. Der Schlüssel-Mapping-Datenspeicher 410 kann im Arbeitsspeicher 418 oder an einem anderen geeigneten Speicherort der Computerplattform unterhalten werden, an dem die MKE-Engine 406 effizient auf diesen zugreifen kann. Der Schlüssel-Mapping-Datenspeicher 410 kann in Form einer Tabelle oder jeder geeigneten anderen Datenstruktur implementiert werden.
  • In einem Beispiel kann jeder Eintrag im Schlüssel-Mapping-Datenspeicher 410 unter Verwendung des entsprechenden Schlüsseldomänenschlüssels verschlüsselt sein, wobei gezeigt wird, dass der Inhaber des Schlüssels die Inhaberschaft an der zugeordneten Speicherseite anerkennt. Es handelt sich um den gleichen Schlüssel, den die MKE-Engine 406 zum Verschlüsseln (beim Schreiben in den Speicher) und zum Entschlüsseln (beim Lesen aus dem Speicher) von Daten verwendet, die in eine zugewiesene Speicherseite geschrieben oder aus dieser gelesen werden. In einem verwandten Beispiel hat jeder Schlüssel-Mapping-Datenspeicher 410 einen unverschlüsselten Teil, die keyID (die in einem Index liegt, der auf Seitenadressen basiert). Jeder Eintrag weist auch einen verschlüsselten Teil auf, der die Speicheradresse, einen Integritätsprüfwert (der ein fixer Wert sein kann) und eine Versionsnummer umfasst.
  • Wird von einer Arbeitslast auf einen Arbeitsspeicher zugegriffen, um eine Lese- oder Schreiboperation auszuführen, verwendet die MKE-Engine 406 den Schlüssel-Mapping-Datenspeicher 410, um die keyID nachzuschlagen, die der Seitengranularitätsadresse entspricht. Im vorliegenden Beispiel sind keyIDs 408A1 und 408A2 den Seitenadressen 416A1 und 416A2 zugeordnet, wobei jede jeweils der Arbeitslast 402A entspricht. Auf ähnliche Weise sind die keyIDs 408B1 und 408B2 den Seitenadressen 416B1 und 416B2 zugeordnet, wobei jede jeweils der Arbeitslast 402B entspricht.
  • Unter Verwendung jeder der keyIDs 408, schlägt die MKE-Engine 406 den entsprechenden kryptographischen Schlüssel im Schlüssel-Mapping-Datenspeicher 408 nach und verwendet den Schlüssel zum Entschlüsseln des verschlüsselten Teils des P2K-Eintrags. Stimmt die Eintragsadresse mit der Speicheradresse (bei Seitengranularität) des Speicherlesens/-schreibens überein, wird das Schlüssel-Mapping als gültig betrachtet und MKE-Engine 406 verwendet den Schlüssel zur Entschlüsselung/Verschlüsselung der Daten, die, wie bei 414 gezeigt, gelesen oder geschrieben werden.
  • Die MKE-Engine 406 greift auch auf Schlüssel-Verfolgungsprotokoll 412 zu. Das Schlüssel-Verfolgungsprotokoll 412 arbeitet als Zwischenspeicher, um Adressen zu enthalten, die aktuell von einer oder mehreren Arbeitslasten 402 bearbeitet werden. Das Schlüssel-Verfolgungsprotokoll 412 kann als Teil der Hardware, die die MKE-Engine 406 bildet, oder ein Schaltungssatz implementiert sein, der vom Zugriff auf jede Arbeitslast 402 isoliert ist. Als Antwort auf eine geschützte Speicherleseoperation erfasst das Schlüssel-Verfolgungsprotokoll 412 die Speicheradresse(n) oder Seite(n) und keyID der gelesenen Daten. Anschließend, wenn die gleiche Arbeitslast 402 wieder zurück in den Arbeitsspeicher 418 geschrieben wird, wird die entsprechende keyID-Schreiboperation im Schlüssel-Verfolgungsprotokoll 412 nachgeschlagen anstatt den Schlüssel-Mapping-Datenspeicher 410 aus dem Arbeitsspeicher lesen zu müssen.
  • In einem Beispiel werden Einträge aus dem Schlüssel-Verfolgungsprotokoll 412 unter zwei Bedingungen gelöscht. Eine Bedingung ist als Reaktion darauf, dass die geschützte Datenzeile, auf der vom Prozessorzwischenspeicher gearbeitet wurde, gelöscht wurde. Das passiert, wenn die Zeile mit neuen geheimen Daten beschrieben wird. Die andere Bedingung ist als Reaktion auf stilles Verwerfen des Last-Level-Cache (LLC). Werden Daten nicht geschrieben, wird kein Ersatz für die Datenzeile in den LLC in den Arbeitsspeicher zurückgeschrieben, da die Daten nicht aktualisiert wurden. Das kann dazu führen, dass sich das Schlüssel-Verfolgungsprotokoll 412 mit Nur-Lese-Daten füllt.
  • Dementsprechend wird in einer verwandten Ausführungsform eine DropReadData-Nachricht verwendet. Es handelt sich um eine Nachricht, die vom Kern der MKE-Engine 406 gesendet wird, wenn eine Nur-Lese-Zeile still verworfen wird. Die DropReadData-Nachricht umfasst die Adresse des Eintrags, der verworfen wird. Die Nachricht endet in der MKE-Engine, was ihr erlaubt die Nur-Lese-Daten aus dem Schlüssel-Verfolgungsprotokoll 412 zu verwerfen, wobei dem Protokoll 412 erlaubt wird, nur das zu verfolgen, was in den Kernzwischenspeichern liegt. Besonders in einem Beispiel wird eine Zeile, die ursprünglich aus dem Arbeitsspeicher in einem Klartextstatus gelesen wird, nicht im Schlüssel-Verfolgungsprotokoll 412 verfolgt.
  • 5 ist ein Teilsystemarchitekturdiagramm, das eine computerbasierte Anwendung einer Mehrfachschlüssel-Speicherverschlüsselungsanordnung gemäß einigen Ausführungsformen dargestellt. Ein Speicherfabric 502 umfasst eine adaptive Zwischenverbindung, die Zugriff auf Speicherschaltung 516 über Speichersteuerung 518 und MKE-Schaltung 510 ermöglicht. Datenanschluss 506 verbindet Nacktchip-Zwischenverbindungs- (IDI-) Agenten (z.B. Prozessorkerne, Grafikengines) mit dem Speicherfabric 502. Der Eingabe/Ausgabe- (E/A-) Anschluss 508 verbindet E/A-Steuerungen mit dem Speicherfabric 502, um direkten Speicherzugriff durch E/A-Vorrichtungen zu unterstützen.
  • MKE-Schalung 510 implementiert die oben beschriebene (4) MKE-Engine 406. In einem Beispiel ist die MKE-Schaltung 510 implementiert, indem dedizierte Hardwareschaltungen verwendet werden, die eine arithmetisch logische Einheit (ALU) oder eine spezialisierte Logik umfassen können, die für kryptographische Operationen, Datenregister, lokale Zwischenspeicher, Daten- und Adressbusschnittstellen und dergleichen optimiert sind. In einem Beispiel ist die MKE-Schaltung 510 auf einem dedizierten Co-Prozessor implementiert. Im dargestellten Beispiel speichert die MKE-Schaltung 510 Schlüssel-Verfolgungstabellen (KTT) 512 (die eine Implementierung des Schlüssel-Verfolgungsprotokolls 412 ist, das oben in Bezug auf 4 beschrieben ist) und gegebenenfalls LLC-Spiegellogik 514, die unten im Detail beschrieben ist.
  • Die Speichersteuerung 518 ermöglicht die Schnittstelle zwischen logischem und physikalischem Speicher, die Erhaltung der Daten in DRAM-Vorrichtungen und die Durchführung von Lese- und Schreiboperationen miteingeschlossen. Die Speichersteuerung 518 kann einen statischen RAM-Puffer-Zwischenspeicher für schnelleren Betrieb als hochdichte Speichermedien (z.B. DRAM) umfassen, die die Mehrheit des Arbeitsspeichers 516 ausmachen.
  • Arbeitsspeicher 516 umfasst Datenseiten, die unterschiedlichen VMs oder Arbeitslasten zugeordnet sein können. Zusätzlich dazu umfasst der Arbeitsspeicher 516 eine physikalische Speicher-zu-Schlüssel- (P2K-) Tabelle 520 (die eine Implementierung des Schlüssel-Mapping-Datenspeichers 410 ist, wie oben in Bezug auf 4 beschrieben ist), eine Reverse-Mapping-Tabelle (RMT) 522 und eine Schlüsselnachschlagetabelle 524. Die Schlüsselnachschlagetabelle 524 ist eine Implementierung des Schlüsselnachschlage-Datenspeichers 408 (oben in Bezug auf 4 beschrieben).
  • 6 ist ein Flussdiagramm, das Operationen von MKE-Schaltung 510, die mit der Schlüsselverfolgungstabelle (KTT) in Verbindung stehen, als Antwort auf eine Speicherleseoperation nach einem Beispiel darstellt. Bei 602 empfängt die MKE-Schaltung 510 eine Speicherleseinstruktion von einem Prozessorkern. Bei 604 bestimmt die MKE-Schaltung 510, ob die Leseanweisung ein geschütztes Lesen ist. Ein geschütztes Lesen ist ein Lesen, für das die zu lesenden gespeicherten Daten entschlüsselt werden müssen. Wenn für die Leseoperation kein geschütztes Lesen benötigt wird, schreitet das Verfahren zu 606 voran, wobei die MKE-Schaltung 510 den Lesebefehl an die Speichersteuerung 518 weitergibt, die Daten empfängt und sie an den Prozessorkern, von dem die Leseanweisung stammt, ohne eine Entschlüsselung durchzuführen weitergibt. Handelt es sich bei der Leseoperation um ein geschütztes Lesen, schreitet das Verfahren zu 608 voran, wobei die MKE-Schaltung 510 eine physikalische Adresse (PA) oder eine Markierung, die die PA repräsentiert, gemeinsam mit der anwendbaren keyID aus der P2K-Tabelle 520, in der KTT 512 hinzufügt. Bei 610 ruft die MKE-Schaltung 510 den kryptographischen Schlüssel ab, der der keyID zugeordnet ist, und entschlüsselt die Daten unter Verwendung des Schlüssels, um Klartextdaten herzustellen. Bei 612 leitet die MKE-Schaltung 510 die Klartextdaten an den Prozessorkern weiter, von dem der Lesebefehl stammt.
  • 7 ist ein Flussdiagramm, das KTT-bezogene Operationen einer MKE-Schaltung, als Antwort auf eine Speicherschreiboperation gemäß einem Beispiel darstellt. Bei 702 empfängt die MKE-Schaltung 510 eine Speicherschreibanweisung von einem Prozessorkern. Getrennt davon kann die MKE-Schaltung 510 bei 704 eine DropReadData-Anweisung vom Prozessorkern anstelle einer Speicherschreibanweisung empfangen. Bei 706 liest die MKE-Schaltung 510 die KTT 512 und bestimmt, ob die Adresse, die dem Schreib- oder DropReadData-Befehl zugeordnet ist, in der KTT 512 vorhanden ist. Befindet sich die Adresse nicht in der KTT 512, rückt das Verfahren auf 708 vor, wobei die MKE-Schaltung 510 die zu schreibenden Daten, sofern vorhanden, an die Speichersteuerung 518 weiterleitet, ohne eine Verschlüsselung der Daten durchzuführen. Andernfalls, wenn die Schreibadresse in der KTT 512 vorhanden ist, liest die Operation 710 den KTT-Eintrag und löscht den entsprechenden Eintrag aus der KTT 512. Bei 512 verschlüsselt die MKE-Schaltung 510 die Daten, wenn Daten zu schreiben sind, unter Verwendung des kryptographischen Schlüssels, der der keyID, die aus der KTT 512 genommen wurde (und nun aus der KTT gelöscht wurde) zugeordnet ist, um verschlüsselten Text herzustellen. Bei 714 wird der verschlüsselte Text an die Speichersteuerung 518 weitergegeben, um in den Arbeitsspeicher 516 zu schreiben.
  • Zurückkehrend zu 5, ist LLC-Spiegellogik 514 ein optionales Element, das den LLC-Status in der MKE-Schaltung 510 überwacht, was im Grund bedeutet, dass die Markierungen des LLC gemeinsam mit der KEYID, die jeder der Datenzeilen lokal im von der MKE-Schaltung 510 bereitgestellten Arbeitsspeicher zugeordnet sind, gespeichert werden. LLC-Spiegellogik 514 erlaubt der KTT 512 von der MKE-Schaltung 510 verwaltet zu werden, ohne von DropReadData-Nachrichten abhängig zu sein.
  • RMT 522 wird verwendet, um zu bestimmen, ob eine physikalische Seite in einem Arbeitsspeicher der richtigen Domäne zugewiesen ist und, ob das Mapping zur physikalischen Gastadresse richtig ist. RMT 522 ist eine vom Kern verwaltete Tabelle, die Einträge umfasst, die physikalische Gastadressen (z.B. wo jede Arbeitslast oder VM vorliegt) und die tatsächliche physikalische Hardwareadresse, wie sie von der Speichersteuerung 518 erfasst wurde, zu der die physikalische Gastadresse zugewiesen wurde, sowie die VM/Arbeitslast-zu-Speicher-Seitenzuordnung, und Lese/Schreiberlaubnisse, die den Adressen zugeordnet sind, zuordnen. Der Eintrag wird mit dem Domänenschlüssel verschlüsselt, um der Domäne die Autorisierung des Speicher-Mapping zu erlauben. Bei einem Fehlschlag des TLB wird zuerst in der RMT 522 nachgeschlagen, bevor das Mapping im TLB installiert wird. Jeder Versuch eines Angriffs bei dem eine Seite, die zu einer anderen Domäne gehört, zugeordnet werden soll, wird abgewiesen, da der falsche Schlüssel zum Entziffern des RMT-Eintrags verwendet werden würde und die implizite Integrität, die in jeder der RMTs verwaltet wird, fehlschlagen würde.
  • Die RMT 522 und die P2K-Tabelle 520 können zusammen verwendet werden. Als Antwort auf ein Arbeitsspeicherlesen verwendet die MKE-Schaltung 510 eine P2K-Tabelle 520, um die keyID zu bestimmen und verwendet dann die keyID, um den Schlüssel nachzuschlagen, der für das Entschlüsseln der Daten zu verwenden ist, die aus dem Arbeitsspeicher ausgelesen werden. Die Schlüssel können in einer Schlüsselnachschlage-Tabelle 524 im Arbeitsspeicher 516 mit einem Schlüssel verpackt sein, der nur der MK-Verschlüsselungsschaltung 510 bekannt ist. Ähnlich wie bei anderen Arbeitsspeicherzugriffen, wird in der P2K-Tabelle 520 naschgeschlagen, wenn ein RMT-Eintrag aus der RMT 522 ausgelesen wird, um die zugeordnete keyID zu erhalten und ein korrekt entschlüsselter RMT-Eintrag verifiziert die Zuordnung der physikalischen Gastadresse zur physikalischen Hardwareadresse.
  • Ein Vorteil der Ausführungsformen, die in den 4 bis 5 gezeigt sind, ist ihre Immunität gegen bestimmte Arten von Hackingangriffen, in denen ein Angreifer, der über die Hardware Zugriff auf das System hat, eine Arbeitslast/VM dazu veranlasst, Informationen in Klartext herauszugeben. Gemäß Hardware-Replay-Angriffen wiederholt oder modifiziert der Angreifer eine Schlüsseltabelle, die im Arbeitsspeicher während eines Zeitfensters, das zwischen eine Leseoperation und eine Schreiboperation fällt, gespeichert ist. Der Angriff verursacht, dass die Leseoperation mit dem richtigen Schlüssel entschlüsselt wird, der der Arbeitslast zugeordnet ist, wobei die Operation aber den kryptographischen Schutz umgeht (z.B. Daten werden in Klartext zurückgeschrieben), wie von einer wiedergegebenen Schlüsseltabelle im Arbeitsspeicher angeleitet.
  • Vorteilhafterweise erkennen und lösen manche hierin beschriebene Ausführungsformen das Schwachstellenfenster zwischen der Lese- und der Schreiboperation unter Verwendung eines Schlüssel-Verfolgungsprotokolls 412 (4), das als KTT 512, (5), wie oben beschrieben, implementiert werden kann. Zum Beispiel verhindert die Verwendung des Schlüssel-Verfolgungsprotokolls 412 oder der KTT 512 die Notwendigkeit, die P2K-Tabelle 410, 520 für eine Schreiboperation, die einer Leseoperation folgt, aus dem Arbeitsspeicher 418, 516 (der von einem Angriff beeinträchtigt sein kann) erneut auszulesen.
  • Zusätzlich dazu, dass Vertraulichkeitslücken verursacht werden, kann ein Angreifer auch domänenübergreifende Injektionsangriffe verursachen. Beispielsweise beobachtet ein Angreifer den Arbeitsspeicherzugriff einer ersten Arbeitslast/VM und hinterlegt eine Kopie einer physikalischen Seite, gemeinsam mit dem entsprechenden P2K-Tabelleneintrag. Später, wenn eine physikalische Seite einer zweiten Arbeitslast/VM zugewiesen wird, wiederholt oder ersetzt der Angreifer die Seiteninhalte und den P2K-Tabelleneintrag. Dies hat zum Ergebnis, dass die ersten Arbeitslastdaten oder VM-Daten korrekt entschlüsselt und an die zweite Arbeitslast/VM gesendet werden. Bei diesem Angriff bleibt die zweite Arbeitslast/VM in Unkenntnis darüber, dass ihr inkorrekte Daten gefüttert wurden.
  • Nach einer verwandten Ausführungsform wird ein Salting-Verfahren verwendet, um das System gegen domänenübergreifende Injektionsangriffe zu immunisieren. Salting einer Arbeitslast oder einer VM erkennt, dass der Prozessorkern sich immer der Identität der VM oder Arbeitslast bewusst ist, die er ausführt. Jeder Seite, die kreiert und einer Arbeitslast zugeordnet wird, wird vom Prozessorkern eine zufällige oder zufallsartige Nummer zugeordnet. Diese zufällige oder zufallsartige Nummer wird sowohl im RMT-Eintrag als auch im P2K-Eintrag dieser Seite gespeichert. Diese eindeutige zufällige Nummer, die jeder der Arbeitslasten zugeordnet wird, wird als VM- oder Arbeitslast-Salt bezeichnet.
  • 8 ist ein Flussdiagramm, das Operationen darstellt, die von einer MKE-Engine, wie z.B. der MKE-Engine 406 (4), in Zusammenwirkung mit einem Prozessorkern nach einer Ausführungsform durchgeführt werden, unter Verwendung eines Salting-Verfahrens. Bei 802 sendet der Prozessorkern einen Leseaufruf an die MKE-Engine 406. Bei 804 liest die MK-Verschlüsselung 406 die P2K-Tabelle 410, um die keyID, die physikalische Adresse und den Salt-Wert aus der P2K-Tabelle zu erhalten. Bei 806 entschlüsselt die MKE-Engine 406 die verschlüsselten Daten, die aus dem Arbeitsspeicher 418 unter Verwendung des kryptographischen Schlüssels, der von der keyID aus der P2K-Tabelle 410 referenziert ist, ausgelesen werden, um eine Klartextversion der Daten (PT) herzustellen. Bei 808 berechnet die MKE-Engine 406 ein XOR der der PT mit dem Salt aus der P2K-Tabelle, SALT_P2K, um eine Salted-Version der Daten, PT_SALT, zu berechnen. Bei 810 leitet die MKE-Engine 406 die Salted-Klartextdaten, PT_SALT, an den Prozessorkern weiter, um das Lesen anzufordern. Bei 812 ruft der Prozessorkern den Salt-Wert ab, der im RMT-Eintrag gespeichert ist, SALT_RMT. Bei 814 verwendet der Prozessorkern SALT_RMT für eine XOR-Operation mit den von der MKE-Engine erhaltenen Salted-Daten, PT_SALT, um einen Klartext-Endwert, FINAL PT, herzustellen. Wird ein domänenübergreifender Angriff, wie oben beschrieben, versucht, passen die zwei Salts aus P2K und RMT nicht zusammen und der Endwert, FINAL_PT, resultiert in Datenmüll, wodurch der Angriff verhindert wird.
  • Ein Angreifer kann versuchen, die RMT zu modifizieren sowie den aktuellen RMT-Eintrag mit dem alten RMT-Eintrag zu ersetzen. Allerdings wird die RMT vom Kern verwaltet und dem Kern ist die Identität der aktuell ausgeführten VM oder Arbeitslast bekannt. Daher kann ein RMT-Eintrag für eine andere Domäne nicht unerkannt verwendet werden. Zusätzlich dazu ist ein Angreifer nicht in der Lage, einen Teil des RMT-Eintrags zu modifizieren, ohne dass dies erkannt wird, da die Felder in der RMT mit impliziter Integrität verschlüsselt sind. Daher wird sogar jeder Versuch einen Salt in einem RMT-Eintrag zu verändern, ohne die Domänen-ID zu verändern, vom Kern erkannt, da die implizite Integritätskontrolle fehlschlägt.
  • Zusätzliche Anmerkungen & Beispiele:
    • Beispiel 1 ist eine Vorrichtung für sicheren Speicherzugriff in einer Computerplattform, wobei die Vorrichtung Folgendes umfasst: Computerhardware, die zumindest einen Prozessorkern, einen Arbeitsspeicher und eine Speicherschnittstelle umfasst, die den zumindest einen Prozessorkern kommunikativ koppelt, wobei der zumindest eine Prozessorkern eine Vielzahl an Arbeitslasten ausführt, wobei jede Arbeitslast zugewiesene Teile des Arbeitsspeichers verwendet, und wobei die Speicherschnittstelle eine Mehrfachschlüssel-Verschlüsselungs- (MKE-) Engine umfasst; ein Speichermedium, das einen Schlüssel-Mapping-Datenspeicher umfasst, auf den durch die MKE-Engine zugegriffen werden kann, wobei Zuordnungen zwischen Identifikatoren der Teile des Arbeitsspeichers und entsprechende Schlüsselidentifikationsdaten enthalten sind; und ein Speichermedium, das ein Schlüssel-Verfolgungsprotokoll umfasst, auf das durch die MKE-Engine zugegriffen werden kann, wobei die MKE-Engine Folgendes ausführt: Durchführen von schlüsselbasierten kryptographischen Operationen auf Daten, die aus dem Arbeitsspeicher gelesen oder in diesen geschrieben werden, um bestimmte der Teile des Arbeitsspeichers von Arbeitslasten zu isolieren, denen diese Teile des Arbeitsspeichers nicht zugewiesen sind; Bestimmen der kryptographischen Schlüssel für die kryptographischen Operationen basierend auf dem Schlüssel-Mapping-Datenspeicher; und temporäres Speichern der Einträge in das Schlüssel-Verfolgungsprotokoll, die Identifikatoren der Teile des Arbeitsspeichers und die entsprechenden Schlüsselidentifikationsdaten für diese Teile des Arbeitsspeichers während einer Speicherzugriffsoperation auf diese Teile des Arbeitsspeichers umfassen.
    • In Beispiel 2 ist der Gegenstand von Beispiel 1 umfasst, wobei die MKE-Engine zu Folgendem dient: Speichern eines ersten Eintrags in das Schlüssel-Verfolgungsprotokoll, der einen ersten Speicherteilidentifikator und einen entsprechenden ersten Schlüsselidentifikator als Antwort auf einen Leseoperationsaufruf zum Lesen aus einem ersten Teil des Arbeitsspeichers umfasst, der dem ersten Speicherteilidentifikator entspricht; und als Antwort auf einen nachfolgenden Schreiboperationsaufruf zum Schreiben in den ersten Teil der Arbeitsspeichers, das Lesen des ersten Eintrags auf dem Schlüssel-Verfolgungsprotokoll, um den ersten Schlüsselidentifikator zu erhalten; und Anwenden eines ersten kryptographischen Schlüssels, der dem ersten Schlüsselidentifikator entspricht, um Daten die in den ersten Teil des Arbeitsspeichers geschrieben werden, zu verschlüsseln, bevor die Daten geschrieben werden.
    • In Beispiel 3 ist der Gegenstand der Beispiele 1-2 umfasst, wobei die MKE-Engine und das Schlüssel-Verfolgungsprotokoll jeweils kommunikativ vom Zugriff durch den zumindest einen Prozessorkern isoliert sind.
    • In Beispiel 4 ist der Gegenstand der Beispiele 1-3 umfasst, wobei die MKE-Engine einen Datenspeicher umfasst und wobei das Schlüssel-Verfolgungsprotokoll im Datenspeicher der MKE-Engine umfasst ist.
    • In Beispiel 5 ist der Gegenstand der Beispiele 1-4 umfasst, wobei jede der Vielzahl an Arbeitslasten als virtuelle Maschine implementiert ist.
    • In Beispiel 6 ist der Gegenstand der Beispiele 1-5 umfasst, wobei der Schlüssel-Mapping-Datenspeicher im Arbeitsspeicher umfasst ist.
    • In Beispiel 7 ist der Gegenstand der Beispiele 1-6 umfasst, wobei die zugewiesenen Teile des Arbeitsspeichers Speicherseiten sind.
    • In Beispiel 8 ist der Gegenstand der Beispiele 1-7 umfasst, wobei ein Schlüsselnachschlage-Datenspeicher einen Satz kryptographischer Schlüssel umfasst, wobei jeder der kryptographischen Schlüssel einem Schlüsselidentifikator der Schlüsselidentifikationsdaten, die im Schlüsselnachschlage-Datenspeicher umfasst sind, zugeordnet ist.
    • In Beispiel 9 ist der Gegenstand der Beispiel 8 umfasst, wobei der Schlüsselnachschlage-Datenspeicher im Arbeitsspeicher umfasst ist und wobei jeder der kryptographischen Schlüssel im Schlüsselnachschlage-Datenspeicher so verschlüsselt ist, dass nur die MKE-Engine in der Lage ist, die kryptographischen Schlüssel wiederherzustellen.
    • In Beispiel 10 ist der Gegenstand der Beispiele 1-9 umfasst, wobei die MKE-Engine einen Befehl von dem zumindest einen Prozessorkern empfängt, einen Eintrag aus dem Schlüssel-Verfolgungsprotokoll zu entfernen.
    • In Beispiel 11 ist der Gegenstand der Beispiele 1-10 umfasst, wobei die MKE-Engine eine Kopie eines Last-Level-Cache (LLC) von dem zumindest einen Prozessorcore speichert.
    • In Beispiel 12 ist der Gegenstand der Beispiele 1-11 umfasst, wobei ein eindeutiger Salt-Wert jeder der Arbeitslasten zugeordnet und in einem vom Prozessorkern verwalteten Datenspeicher gespeichert ist und wobei eine Kopie jedes der eindeutigen Salt-Werte, die jeder der Arbeitslasten zugeordnet sind, in einem von der MKE-Engine verwalteten Datenspeicher gespeichert ist und wobei jeder der eindeutigen Salt-Werte zugewiesenen Teilen des Arbeitsspeichers zugeordnet ist, der jeder der jeweiligen Arbeitslasten entspricht und wobei die MKE-Engine, als Antwort auf eine Leseoperation durch eine erste Arbeitslast zur Wiederherstellung eines ersten Datensatzes aus dem Arbeitsspeicher, den ersten Datensatz mit einem zugeordneten ersten Salt-Wert aus dem von der MKE-Engine verwalteten Datenspeicher kombiniert, um einen ersten Salted-Wert herzustellen, bevor die ersten Salted-Daten an den zumindest einen Prozessorkern, auf dem die erste Arbeitslast ausgeführt wird, weitergegeben werden.
    • In Beispiel 13 ist der Gegenstand von Beispiel 12 umfasst, wobei der von der MKE-Engine verwaltete Datenspeicher und der vom Prozessorkern verwaltete Datenspeicher beide im Arbeitsspeicher umfasst sind.
    • In Beispiel 14 ist der Gegenstand der Beispiele 12-13 umfasst, wobei der zumindest eine Prozessorkern, als Antwort auf den Empfang erster Salted-Daten, als Antwort auf eine Leseoperation, die ersten Salted-Daten mit einem zugeordneten Salt-Wert aus dem vom Prozessorkern verwalteten Datenspeicher kombiniert, um den ersten Datensatz wiederherzustellen.
    • Beispiel 15 ist ein Verfahren für sicheren Speicherzugriff in einer Computerplattform, wobei das Verfahren Folgendes umfasst: Ausführen einer Vielzahl an Arbeitslasten durch zumindest einen Prozessorkern der Computerplattform, wobei jede Arbeitslast ihr zugewiesene Teile des Arbeitsspeichers verwendet; und Durchführen schlüsselbasierter Kryptographie durch eine Mehrfachschlüssel-Verschlüsselungs- (MKE-) Engine, die das Durchführen von Operationen an Daten, die aus Teilen des Arbeitsspeichers gelesen oder in diesen eingeschrieben werden sollen, umfasst, um bestimmte der Teile des Arbeitsspeichers von Arbeitslasten zu isolieren, die den Teilen des Arbeitsspeichers nicht zugewiesen sind; Verwalten eines Schlüssel-Mapping-Datenspeichers, auf den durch die MKE-Engine zugegriffen werden kann, und der Zuordnungen zwischen Identifikatoren von Teilen des Arbeitsspeichers und entsprechenden Schlüsselidentifikationsdaten enthält, auf Basis derer die MKE-Engine kryptographische Schlüssel bestimmt, mit denen die kryptographische Isolation durchgeführt wird; und Verwalten eines Schlüssel-Verfolgungsprotokolls durch die MKE-Engine, wobei die MKE-Engine temporär Einträge in das Schlüssel-Verfolgungsprotokoll speichert, die, während Speicherzugriffsoperationen auf diese Teile des Speichers, Identifikatoren der Teile des Arbeitsspeichers und die entsprechenden Schlüsselidentifikationsdaten für diese Teile des Arbeitsspeichers umfassen.
    • In Beispiel 16 ist der Gegenstand von Beispiel 15 umfasst, in dem die MKE-Engine Folgendes durchführt: Speichern eines ersten Eintrags im Schlüssel-Verfolgungsprotokoll, der einen ersten Speicherteilidentifikator und einen entsprechenden ersten Schlüsselidentifikator als Antwort auf einen Leseoperationsaufruf zum Lesen eines ersten Teils eines Arbeitsspeichers, der dem ersten Speicherteilidentifikator entspricht, und, als Antwort auf einen anschließenden Schreiboperationsaufruf zum Schreiben in den ersten Teil des Speichers, Lesen des ersten Eintrags aus dem Schlüssel-Verfolgungsprotokoll, um den ersten Schlüsselidentifikator abzurufen, und Anwenden eines ersten kryptographischen Schlüssels, der dem ersten Schlüsselidentifikator entspricht, um die Daten, die in den ersten Teil des Speichers geschrieben werden, vor dem Schreiben der Daten zu verschlüsseln.
    • In Beispiel 17 ist der Gegenstand der Beispiele 15-16 umfasst, wobei die MKE-Engine und das Schlüssel-Verfolgungsprotokoll jeweils kommunikativ vom Zugriff durch den zumindest einen Prozessorkern isoliert sind.
    • In Beispiel 18 ist der Gegenstand der Beispiele 15-17 umfasst, wobei jedes beliebige der Vielzahl der Arbeitslasten als virtuelle Maschine implementiert ist.
    • In Beispiel 19 ist der Gegenstand der Beispiele 15-18 umfasst, wobei der Schlüssel-Mapping-Datenspeicher im Arbeitsspeicher umfasst ist.
    • In Beispiel 20 ist der Gegenstand der Beispiele 15-19 umfasst, wobei die zugewiesenen Teile des Arbeitsspeichers Speicherseiten sind.
    • In Beispiel 21 ist der Gegenstand der Beispiele 15-20 umfasst, wobei ein Schlüsselnachschlage-Datenspeicher einen Satz kryptographischer Schlüssel umfasst, wobei jeder der kryptographischen Schlüssel mit einem Schlüsselidentifikator der im Schlüssel-Mapping-Datenspeicher enthaltenen Schlüsselidentifikationsdaten zugeordnet ist.
    • In Beispiel 22 ist der Gegenstand von Beispiel 21 umfasst, wobei der Schlüsselnachschlage-Datenspeicher im Arbeitsspeicher umfasst ist und wobei jeder der kryptographischen Schlüssel im Schlüsselnachschlage-Datenspeicher so verschlüsselt ist, dass nur die MKE-Engine in der Lage ist, die kryptographischen Schlüssel wiederherzustellen.
    • In Beispiel 23 ist der Gegenstand der Beispiele 15-22 umfasst, wobei die MKE-Engine einen Befehl von dem zumindest einen Prozessorkern empfängt und verarbeitet, um einen Eintrag aus dem Schlüssel-Verfolgungsprotokoll zu entfernen.
    • In Beispiel 24 ist der Gegenstand der Beispiele 15-23 umfasst, wobei die MKE-Engine eine Kopie des Last-Level-Cache (LLC) von dem zumindest einen Prozessorkern speichert.
    • In Beispiel 25 ist der Gegenstand der Beispiele 15-24 umfasst, wobei jeder Arbeitslast ein eindeutiger Salt-Wert zugeordnet wird, der in einem vom Prozessorkern verwalteten Datenspeicher gespeichert wird, und wobei eine Kopie jedes eindeutigen Salt-Werts, der jeder Arbeitslast zugeordnet ist, in einem von der MKE-Engine verwalteten Datenspeicher gespeichert wird, und wobei jeder eindeutige Salt-Wert entsprechend der jeweiligen Arbeitslast dem zugewiesenen Teilen des Arbeitsspeichers zugeordnet ist, und wobei die MKE-Engine als Antwort auf eine Leseoperation durch eine erste Arbeitslast, um einen ersten Satz an Daten aus dem Arbeitsspeicher wiederherzustellen, den ersten Satz an Daten mit einem zugeordneten ersten Salt-Wert aus dem von der MKE-Engine verwalteten Datenspeicher kombiniert, um einen ersten Salted-Wert vor dem Weitergeben der ersten Salted-Daten an den zumindest einen Prozessor, auf dem die erste Arbeitslast ausgeführt wird, herzustellen.
    • In Beispiel 26 ist der Gegenstand von Beispiel 25 umfasst, wobei der zumindest eine Prozessorkern, als Antwort auf den Empfang der ersten Salted-Daten, als Antwort auf eine Leseoperation, die ersten Salted-Daten mit einem zugeordneten Salt-Wert aus dem vom Prozessorkern verwalteten Datenspeicher kombiniert, um den ersten Satz an Daten wiederherzustellen.
    • Beispiel 27 ist zumindest ein maschinenlesbares Medium, das Instruktionen umfasst, die, wenn sie von einer Computerplattform ausgeführt werden, die Computerplattform zu Folgendem veranlassen: Durchführen einer Vielzahl an Arbeitslasten durch zumindest einen Prozessorkern der Computerplattform, wobei jede Arbeitslast zugewiesene Teile des Arbeitsspeichers benutzt; und Durchführen schlüsselbasierter Kryptographie durch eine Mehrfachschlüssel-Verschlüsselungs- (MKE-) Engine, die Operationen an Daten, die aus Teilen des Arbeitsspeichers gelesen oder in diesen geschrieben werden sollen, umfasst, um Teile des Arbeitsspeichers von Arbeitslasten, denen die Teile des Arbeitsspeichers nicht zugewiesen sind, zu isolieren; Erhalten eines Schlüssel-Mapping-Datenspeichers, auf den durch die MKE-Engine zugegriffen werden kann, der Zuordnungen zwischen Identifikatoren von Teilen des Arbeitsspeichers und den entsprechenden Schlüsselidentifikationsdaten, von denen kryptographische Schlüssel durch die MKE-Engine bestimmt werden, umfasst, um kryptographische Isolation durchzuführen; und Verwalten eines Schlüssel-Verfolgungsprotokolls durch die MKE-Engine, und Veranlassen der MKE-Engine dazu, vorübergehend Einträge in das Schlüssel-Verfolgungsprotokoll zu speichern, die Identifikatoren der Teile des Arbeitsspeichers und die entsprechenden Schlüsselidentifikationsdaten für diese Teile des Arbeitsspeichers während den Speicherzugriffsoperationen dieser Teile des Arbeitsspeichers umfassen.
    • In Beispiel 28 ist der Gegenstand von Beispiel 27 umfasst, wobei die Instruktionen die MKE-Engine der Computerplattform zu Folgendem veranlassen sollen: Speichern eines ersten Eintrags in das Schlüssel-Verfolgungsprotokoll, der einen ersten Speicherteilidentifikator und einen entsprechenden ersten Schlüsselidentifikator darstellt, als Antwort auf einen Leseoperationsaufruf zum Lesen eines ersten Teils aus dem Arbeitsspeicher, der dem ersten Speicherteilidentifikator entspricht, und Lesen des ersten Eintrags aus dem Schlüssel-Verfolgungsprotokoll, als Antwort auf einen anschließenden Schreiboperationsaufruf zum Schreiben in den ersten Teil der Daten, um den ersten Schlüsselidentifikator wiederherzustellen, und Anwenden eines ersten kryptographischen Schlüssels, der dem ersten Schlüsselidentifikator entspricht, um Daten, die in den ersten Teil des Arbeitsspeichers geschrieben werden sollen, vor dem Schreiben der Daten zu verschlüsseln.
    • In Beispiel 29 ist der Gegenstand der Beispiele 27-28 umfasst, wobei die MKE-Engine und das Schlüssel-Verfolgungsprotokoll jeweils kommunikativ von Zugriff durch den zumindest einen Prozessorkern isoliert sind.
    • In Beispiel 30 ist der Gegenstand der Beispiele 27-29 umfasst, wobei jede der Vielzahl an Arbeitslasten als virtuelle Maschine implementiert ist.
    • In Beispiel 31 ist der Gegenstand der Beispiele 27-30 umfasst, wobei der Schlüssel-Mapping-Datenspeicher im Arbeitsspeicher umfasst ist.
    • In Beispiel 32 ist der Gegenstand der Beispiele 27-31 umfasst, wobei die zugewiesenen Teile des Arbeitsspeichers Speicherseiten sind.
    • In Beispiel 33 ist der Gegenstand der Beispiele 27-32 umfasst, wobei die Instruktionen die MKE-Engine zu Folgendem veranlassen sollen: Verwalten des Schlüssel-Nachschlagedatenspeichers, der einen Satz kryptographischer Schlüssel umfasst, wobei jeder der kryptographischen Schlüssel einem Schlüsselidentifikator der Schlüsselidentifikationsdaten, die im Schlüssel-Mapping-Datenspeicher umfasst sind, zugeordnet ist.
    • In Beispiel 34 ist der Gegenstand von Beispiel 33 umfasst, wobei der Schlüssel-Nachschlagedatenspeicher im Arbeitsspeicher umfasst ist und wobei jeder der kryptographischen Schlüssel im Schlüssel-Nachschlagedatenspeicher so verschlüsselt ist, das nur die MKE-Engine in der Lage ist, die kryptographischen Schlüssel wiederherzustellen.
    • In Beispiel 35 ist der Gegenstand der Beispiele 27-34 umfasst, wobei die MKE-Engine, gemäß den Anweisungen, einen Befehl von dem zumindest einen Prozessorkern empfängt und verarbeitet, um einen Eintrag aus dem Schlüssel-Verfolgungsprotokoll zu entfernen.
    • In Beispiel 36 ist der Gegenstand der Beispiele 27-35 umfasst, wobei die MKE-Engine, gemäß der Anweisungen, eine Kopie des Last-Level-Cache (LLC) des zumindest einen Prozessorkerns speichert.
    • In Beispiel 37 ist der Gegenstand der Beispiele 27-36 umfasst, wobei die Instruktionen die Computerplattform dazu veranlassen, jeder Arbeitslast einen eindeutigen Salt-Wert zuzuordnen, der in einem vom Prozessorkern verwalteten Datenspeicher gespeichert wird, wobei eine Kopie jedes Salt-Werts, der jeder Arbeitslast zugeordnet ist, in einem von der MKE-Engine verwalteten Datenspeicher gespeichert ist, und wobei jeder eindeutige Salt-Wert den zugewiesenen Teilen des Arbeitsspeichers, die den jeweiligen Arbeitslasten entsprechen, zugeordnet ist, und die MKE-Engine, als Antwort auf eine Leseoperation durch eine erste Arbeitslast einen ersten Satz an Daten aus dem Arbeitsspeicher wiederherzustellen, den ersten Satz an Daten mit einem ersten zugeordneten Salt-Wert aus dem von der MKE-Engine verwalteten Datenspeicher kombiniert, um einen ersten Salted-Wert, vor der Weitergabe der ersten Salted-Daten an den zumindest einen Prozessor, auf dem die erste Arbeitslast ausgeführt wird, abzurufen.
    • In Beispiel 38 ist der Gegenstand von Beispiel 37 umfasst, wobei die Instruktionen den zumindest einen Prozessorkern der Computerplattform dazu veranlassen, als Antwort auf den Erhalt der ersten Salted-Daten, als Antwort auf eine Leseoperation, die ersten Salted-Daten mit einem zugeordneten Salt-Wert aus dem vom Prozessorkern verwalteten Datenspeicher zu kombinieren, um den ersten Satz an Daten wiederherzustellen.
    • Beispiel 39 ist ein System für sicheren Speicherzugriff in einer Computerplattform, wobei das System Folgendes umfasst: Mittel zur Ausführung, durch den zumindest einen Prozessorkern der Computerplattform, einer Vielzahl an Arbeitslasten, wobei jede Arbeitslast ihr zugewiesene Teile des Arbeitsspeichers umfasst; und Mittel zur Durchführung schlüsselbasierter Kryptographie, das Durchführen von Operationen auf Daten, die aus Teilen des Arbeitsspeichers gelesen oder in diesen eingeschrieben werden umfasst, um bestimmte der Teile des Arbeitsspeichers von Arbeitslasten, denen die Teile des Arbeitsspeichers nicht zugewiesen sind, zu isolieren; Mittel zum Verwalten eines Schlüssel-Mapping-Datenspeichers durch die Mittel zum Durchführen schlüsselbasierter Kryptographie, der Zuordnungen zwischen Identifikatoren von Teilen des Arbeitsspeichers und den entsprechenden Schlüsselidentifikationsdaten auf Basis derer die kryptographischen Schlüssel bestimmt werden, die von Mittel zum Durchführen der schlüsselbasierten Kryptographie verwendet werden, um kryptographische Isolation durchzuführen; und ein Mittel zum Verwalten eines Schlüssel-Verfolgungsprotokolls durch die Mittel zur Durchführung schlüsselbasierter Kryptographie, wobei das Mittel zum Durchführen der schlüsselbasierten Kryptographie vorübergehend Einträge in das Schlüssel-Verfolgungsprotokoll speichert, das, während Speicherzugriffsoperationen dieser Teile des Arbeitsspeichers, Identifikator der Teile des Arbeitsspeichers und die entsprechenden Schlüsselidentifikationsdaten für diese Teile des Arbeitsspeichers umfasst.
    • In Beispiel 40 ist der Gegenstand von Beispiel 39 umfasst, wobei die Mittel zum Durchführen schlüsselbasierter Kryptographie Folgendes umfassen: Mittel zum Speichern eines ersten Eintrags im Schlüssel-Verfolgungsprotokoll, das einen ersten Speicherteilidentifikator und einen entsprechenden ersten Schlüsselidentifikator, als Antwort auf einen Leseoperationsaufruf zum Lesen eines ersten Teils aus dem Arbeitsspeicher, der dem ersten Speicherteilidentifikator entspricht, umfasst; und Lesen des ersten Eintrags des Schlüssel-Verfolgungsprotokolls, als Antwort auf einen anschließenden Leseoperationsaufruf zum Schreiben in den ersten Teil des Arbeitsspeichers, um den ersten Schlüsselidentifikator wiederherzustellen, und Anwenden eines ersten Schlüssels, der dem ersten Schlüsselidentifikator entspricht, um Daten, die in den ersten Teil des Arbeitsspeichers geschrieben werden sollen, vor dem Schreiben der Daten zu verschlüsseln.
    • In Beispiel 41 ist der Gegenstand der Beispiele 39-40 umfasst, wobei die Mittel zum Durchführen schlüsselbasierter Kryptographie und das Schlüssel-Verfolgungsprotokoll jeweils kommunikativ vom Zugriff durch den zumindest einen Prozessorkern isoliert sind.
    • In Beispiel 42 ist der Gegenstand der Beispiele 39-41 umfasst, wobei jede der Vielzahl an Arbeitslasten als virtuelle Maschine implementiert ist.
    • In Beispiel 43 ist der Gegenstand der Beispiele 39-42 umfasst, wobei der Schlüssel-Mapping-Datenspeicher im Arbeitsspeicher umfasst ist.
    • In Beispiel 44 ist der Gegenstand der Beispiele 39-43 umfasst, wobei die zugewiesenen Teile des Arbeitsspeichers Speicherseiten sind.
    • In Beispiel 45 ist der Gegenstand der Beispiele 39-44 das Verwalten eines Schlüssel-Nachschlagedatenspeichers, der einen Satz kryptographischer Schlüssel umfasst, wobei jeder der kryptographischen Schlüssel einem Schlüsselidentifikator der Schlüsselidentifikationsdaten, die im Schlüsselnachschlage-Datenspeicher umfasst sind, zugeordnet ist.
    • In Beispiel 46 ist der Gegenstand von Beispiel 45 umfasst, wobei der Schlüsselnachschlage-Datenspeicher im Arbeitsspeicher umfasst ist und wobei jeder der kryptographischen Schlüssel im Schlüsselnachschlage-Datenspeicher so verschlüsselt ist, dass nur das Mittel zum Durchführen der schlüsselbasierten Kryptographie in der Lage ist, die kryptographischen Schlüssel wiederherzustellen.
    • In Beispiel 47 ist der Gegenstand der Beispiele 39-46 umfasst, wobei das Mittel zum Durchführen schlüsselbasierter Kryptographie einen Befehl von dem zumindest einen Prozessorkern empfängt und verarbeitet, einen Eintrag aus dem Schlüssel-Verfolgungsprotokoll zu entfernen.
    • In Beispiel 48 ist der Gegenstand der Beispiele 39-47 umfasst, wobei das Mittel zum Durchführen schlüsselbasierter Kryptographie eine Kopie eines Last-Level-Cache (LLC) von dem zumindest einen Prozessorcore speichert.
    • In Beispiel 49 ist der Gegenstand der Beispiele 39-48 umfasst, wobei ein eindeutiger Salt-Wert jeder der Arbeitslasten zugeordnet und in einem vom Prozessorkern verwalteten Datenspeicher gespeichert ist und wobei eine Kopie jedes der eindeutigen Salt-Werte, die jeder der Arbeitslasten zugeordnet sind, in einem Datenspeicher gespeichert ist, der vom Mittel zum Durchführen schlüsselbasierter Kryptographie verwaltetet wird, und wobei jeder der eindeutigen Salt-Werte einem zugewiesenen Teil des Arbeitsspeichers zugeordnet ist, der jeder der jeweiligen Arbeitslasten entspricht und wobei die Mittel zum Durchführen schlüsselbasierter Kryptographie, als Antwort auf eine Leseoperation durch eine erste Arbeitslast zur Wiederherstellung eines ersten Datensatzes aus dem Arbeitsspeicher, den ersten Datensatz mit einem zugeordneten ersten Salt-Wert aus dem von der MKE-Engine verwalteten Datenspeicher kombiniert, um einen ersten Salted-Wert herzustellen, bevor die ersten Salted-Daten an den zumindest einen Prozessorkern, auf dem die erste Arbeitslast ausgeführt wird, weitergegeben werden.
    • In Beispiel 50 ist der Gegenstand von Beispiel 49 umfasst, wobei der zumindest eine Prozessorkern, als Antwort auf den Empfang erster Salted-Daten, als Antwort auf eine Leseoperation, die ersten Salted-Daten mit einem zugeordneten Salt-Wert vom Datenspeicher, der vom Prozessorkern verwaltet wird, kombiniert, im den ersten Satz an Daten wiederherzustellen.
    • Beispiel 51 ist zumindest ein maschinenlesbares Medium, das Instruktionen umfasst, die, ausgeführt von der Verarbeitungsschaltung, die Verarbeitungsschaltung dazu veranlassen, Operationen zur Implementierung jedes beliebigen der Beispiele 1-50 durchzuführen.
    • Beispiel 52 ist eine Vorrichtung, die Mittel zur Implementierung jedes beliebigen der Beispiele 1-50 umfasst.
    • Beispiel 53 ist ein System zur Implementierung jedes beliebigen der Beispiele 1-50.
    • Beispiel 54 ist ein Verfahren zur Implementierung jedes beliebigen der Beispiele 1-50.
  • Die vorangehende detaillierte Beschreibung umfasst Bezüge auf die beiliegenden Zeichnungen, die Teil der detaillierten Beschreibung sind. Die Zeichnungen zeigen, zum Zweck der Veranschaulichung, spezifische Ausführungsformen, die umgesetzt werden können. Auf diese Ausführungsformen wird hierin auch als „Beispiele“ Bezug genommen. Diese Beispiele können zusätzliche Elemente zu jenen, die gezeigt oder beschrieben sind, umfassen. Allerdings sind auch Beispiele vorgesehen, die hierin gezeigte oder beschriebene Elemente umfassen. Außerdem sind auch Beispiele vorgesehen, die jede Kombination oder Permutation der gezeigten oder beschriebenen Elemente (oder eines oder mehrerer Aspekte davon) verwenden, entweder in Bezug auf ein bestimmtes Bespiel (oder einen oder mehrere Aspekte davon) oder in Bezug auf andere hierin gezeigte oder beschriebene Beispiele (oder einen oder mehrere Aspekte davon).
  • Im vorliegenden Dokument werden die Artikel „ein“, „eines“ bzw. „eine“ verwendet, wie es in Patentdokumenten üblich ist, um ein/e/n oder mehr als ein/e/n, unabhängig von jedem andere Beispiel oder jeder anderen Verwendung von „zumindest ein/e/n“ oder „ein/e/n oder mehrere“, zu umfassen. Im vorliegenden Dokument wird das Wort „oder“ verwendet, um auf Etwas hinzuweisen, das nicht ausschließliches ist, oder, das „A oder B“ „A aber nicht“, „B aber nicht A“ und „A und B“ umfasst, sofern nicht anders angegeben. In den angehängten Patentansprüchen werden die Wörter „umfassen“ und „in dem/der“ als deutsche Äquivalente der entsprechenden Termini „miteingeschlossen sein“ und „wobei“ verwendet. Außerdem sind die Wörter „umfassen“ und „miteingeschlossen sein“ in den nachfolgenden Patentansprüchen als nichteinschränkend zu verstehen, also als System, Vorrichtung, Artikel oder Verfahren, der zusätzlich zu den nach einem solchen Terminus in den Ansprüchen aufgelisteten Elementen weitere Elemente umfasst, die im Schutzumfang des Patentanspruchs liegen. Außerdem werden die Wörter „erste/s/r“, „zweite/s/r“ und „dritte/s/r“ etc. nur als Markierungen verwendet und es soll damit keine numerische Ordnung der Objekte angedeutet werden.
  • Die vorangehende Beschreibung dient als Illustration und ist nicht beschränkend. Zum Beispiel können die oben beschriebenen Beispiele (oder ein oder mehrere Aspekte davon) in Kombination mit anderen verwendet werden. Es können andere Ausführungsformen verwendet werden, z.B. von Fachleuten auf dem Gebiet der Erfindung nach der Lektüre der vorangehenden Beschreibung. Die Zusammenfassung erlaubt dem Leser, die Art der technischen Offenbarung schnell zu erkennen. Es wird übermittelt, wobei es selbstverständlich nicht verwendet wird, um den Schutzumfang oder die Bedeutung der Patentansprüche zu interpretieren oder zu beschränken. Außerdem können einige Eigenschaften in der detaillierten Beschreibung zusammengefasst werden, um die Offenbarung zu straffen. Nichtsdestotrotz werden die Patentansprüche nicht um jede hierin offenbarten Eigenschaft erweitert, da Ausführungsformen einen Teil der genannten Eigenschaften aufweisen können. Ferner können Ausführungsformen weniger Eigenschaften umfassen, als jede, die in einem bestimmten Beispiel offenbart sind. Daher werden die nachfolgenden Patentansprüche hiermit in die detaillierte Beschreibung inkorporiert, wobei ein Anspruch als separate Ausführungsform alleinstehend ist. Der Schutzumfang der hierin offenbarten Ausführungsformen wird durch Bezug auf die angehängten Patentansprüche bestimmt, gemeinsam mit dem vollen Schutzumfang der Äquivalente, zu dem solche Patentansprüche berechtigt sind.

Claims (25)

  1. Vorrichtung für sicheren Datenzugriff in einer Computerplattform, wobei die Vorrichtung Folgendes umfasst: eine Computerhardware, die zumindest einen Prozessorkern, einen Arbeitsspeicher und eine Speicherschnittstelle umfasst, die den zumindest einen Prozessorkern kommunikativ koppelt, wobei der zumindest eine Prozessorkern eine Vielzahl an Arbeitslasten ausführt, wobei jede Arbeitslast zugewiesene Teile des Arbeitsspeichers verwendet, und worin die Speicherschnittstelle eine Mehrfachschlüssel-Verschlüsselungs- (MKE-) Engine umfasst; ein Speichermedium, das einen Schlüssel-Mapping-Datenspeicher umfasst, auf den durch die MKE-Engine zugegriffen werden kann, und der Zuordnungen zwischen den Identifikatoren von Teilen des Speichers und entsprechenden Schlüsselidentifikationsdaten umfasst; und ein Speichermedium, das ein Schlüssel-Verfolgungsprotokoll umfasst, auf das durch die MKE-Engine zugegriffen werden kann, wobei die MKE-Engine Folgendes auszuführen hat: Durchführen von Schlüssel-basierten kryptographischen Operationen an Daten, die aus dem Arbeitsspeicher auszulesen oder in diesen einzuschreiben sind, um bestimmte Teile des Speichers von Arbeitslasten zu isolieren, denen diese Teile des Speichers nicht zugeteilt sind; Bestimmen von kryptographischen Schlüsseln für die kryptographischen Operationen, basierend auf dem Schlüssel-Mapping-Datenspeicher; und vorübergehendes Speichern von Einträgen im Schlüssel-Verfolgungsprotokoll, das die Identifikatoren der Teile des Arbeitsspeichers und die entsprechenden Schlüsselidentifikationsdaten für diese Teile des Arbeitsspeichers während den Speicherzugriffsoperationen dieser Teile des Speichers umfasst.
  2. Vorrichtung nach Anspruch 1, wobei die MKE-Engine folgende Aufgaben hat: Speichern eines ersten Eintrags, der einen ersten Speicherteilidentifikator darstellt, und einen entsprechenden ersten Schlüsselidentifikator in dem Schlüssel-Verfolgungsprotokoll als Antwort auf einen Leseoperationsaufruf zum Lesen eines ersten Teils des Arbeitsspeichers, der dem ersten Speicherteilidentifikator entspricht; und als Antwort auf einen nachfolgenden Schreiboperationsaufruf zum Schreiben in den ersten Teil des Speichers, das Lesen des ersten Eintrags aus dem Schlüssel-Verfolgungsprotokoll, um den ersten Schlüsselidentifikator abzurufen, und das Anwenden eines ersten kryptographischen Schlüssels, der dem ersten Schlüsselidentifikator entspricht, um Daten zu verschlüsseln, die in den ersten Teil des Speichers zu schreiben sind, bevor die Daten geschrieben werden.
  3. Vorrichtung nach Anspruch 1, wobei die MKE-Engine und das Schlüssel-Verfolgungsprotokoll jeweils kommunikativ vom Zugriff von dem zumindest einen Prozessorkern isoliert sind.
  4. Vorrichtung nach Anspruch 1, wobei die MKE-Engine einen Datenspeicher umfasst und worin das Schlüssel-Verfolgungsprotokoll im Datenspeicher der MKE-Engine umfasst ist.
  5. Vorrichtung nach Anspruch 1, wobei der Schlüssel-Mapping-Datenspeicher im Arbeitsspeicher umfasst ist.
  6. Vorrichtung nach Anspruch 1, ferner umfassend: einen Schlüsselnachschlage-Datenspeicher, der einen Satz kryptographischer Schlüssel umfasst, wobei jeder der kryptographischen Schlüssel einem Schlüsselidentifikator der Schlüsselidentifikationsdaten zugeordnet ist, die im Schlüssel-Mapping-Datenspeicher enthalten sind.
  7. Vorrichtung nach Anspruch 6, wobei der Schlüsselnachschlage-Datenspeicher im Arbeitsspeicher umfasst ist und wobei jeder der kryptographischen Schlüssel im Schlüsselnachschlage-Datenspeicher so verschlüsselt ist, dass nur die MKE-Engine in der Lage ist, die kryptographischen Schlüssel wiederherzustellen.
  8. Vorrichtung nach Anspruch 1, wobei die MKE-Engine einen Befehl von dem zumindest einen Prozessorkern erhält, einen Eintrag aus dem Schlüssel-Verfolgungsprotokoll zu entfernen.
  9. Vorrichtung nach Anspruch 1, wobei die MKE-Engine eine Kopie eines Last-Level-Cache (LLC) des zumindest einen Prozessorkerns speichert.
  10. Vorrichtung nach Anspruch 1, wobei ein eindeutiger Salt-Wert jeder einzelnen Arbeitslast zugeordnet ist und in einem Datenspeicher, der vom Prozessorkern verwaltet ist, gespeichert ist und wobei eine Kopie jedes eindeutigen Salt-Werts, der jeder einzelnen Arbeitslast zugeordnet ist, in einem Datenspeicher, der von der MKE-Engine verwaltet ist, gespeichert ist und wobei jeder eindeutige Salt-Wert zugewiesenen Teilen des Speichers zugeordnet ist, der jeder entsprechenden Arbeitslast entspricht; und wobei, um einen ersten Datensatz aus dem Arbeitsspeicher abzurufen, die MKE-Engine, als Antwort auf eine Leseoperation durch eine erste Arbeitslast, den ersten Datensatz mit einem zugeordneten ersten Salt-Wert aus dem Datenspeicher, der von der MKE-Engine verwaltet ist, kombiniert, um einen ersten Salted-Wert zu erzeugen, bevor die ersten Salted-Daten an den zumindest einen Prozessor weitergegeben werden, auf dem die erste Arbeitslast ausgeführt wird.
  11. Vorrichtung nach Anspruch 10, wobei der Datenspeicher, der von der MKE-Engine verwaltet ist, und der Datenspeicher, der vom Prozessorkern verwaltet ist, jeweils im Arbeitsspeicher umfasst sind.
  12. Vorrichtung nach Anspruch 10, wobei der zumindest eine Prozessorkern als Antwort auf den Erhalt erster Salted-Daten, als Antwort auf eine Leseoperation, die ersten Salted-Daten mit einem zugeordneten Salt-Wert aus dem Datenspeicher, der vom Prozessorkern verwaltet ist, kombiniert wird, um den ersten Datensatz wiederherzustellen.
  13. Verfahren für sicheren Datenzugriff in einer Computerplattform, wobei das Verfahren Folgendes umfasst: Ausführen einer Vielzahl an Arbeitslasten durch zumindest einen Prozessorkern der Computerplattform, wobei jede Arbeitslast zugewiesene Teile des Arbeitsspeichers verwendet, und Ausführen von Schlüssel-basierter Kryptographie durch eine Mehrfachschlüssel-Verschlüsselungs- (MKE-) Engine, die das Ausführen von Operationen an Daten umfasst, die aus Teilen des Arbeitsspeichers gelesen oder in diese geschrieben werden, um bestimmte der Teile des Arbeitsspeichers von den Arbeitslasten zu isolieren, denen diese Teile des Arbeitsspeichers nicht zugewiesen sind; Verwalten eines Schlüssel-Mapping-Datenspeichers, auf den durch die MKE-Engine zugegriffen werden kann und der Zuordnungen zwischen den Identifikatoren der Teile des Arbeitsspeichers und entsprechenden Schlüsselidentifikationsdaten enthält, basierend auf welchen die MKE-Engine kryptographische Schlüssel bestimmt, mit denen kryptographische Isolation durchgeführt wird; und Verwalten eines Schlüssel-Verfolgungsprotokolls durch die MKE-Engine, wobei die MKE-Engine vorübergehend Einträge in das Schlüssel-Verfolgungsprotokoll speichert, die Identifikatoren der Teile des Arbeitsspeichers und die entsprechenden Schlüsselidentifikationsdaten für diese Teils des Arbeitsspeichers während Speicherzugriffsoperationen auf diese Teils des Arbeitsspeichers umfasst.
  14. Verfahren nach Anspruch 13, wobei die MKE-Engine Folgendes durchführt: Speichern eines ersten Eintrags, der einen ersten Speicherteilidentifikator und einen entsprechenden ersten Schlüsselidentifikator im Schlüssel-Verfolgungsprotokoll als Antwort auf einen Leseoperationsaufruf zum Lesen eines ersten Teils eines Arbeitsspeichers, der dem ersten Speicherteilidentifikator entspricht; und als Antwort auf einen darauffolgenden Schreiboperationsaufruf zum Schreiben in den ersten Teil eines Arbeitsspeichers, Lesen des ersten Eintrags des Schlüssel-Verfolgungsprotokolls, um den ersten Schlüsselidentifikator abzurufen, und Anwenden eines ersten kryptographischen Schlüssels, der dem ersten Schlüsselidentifikator entspricht, um Daten, die in den ersten Teil eines Arbeitsspeichers geschrieben werden, vor dem Schreiben der Daten zu verschlüsseln.
  15. Verfahren nach Anspruch 13, wobei jede der Vielzahl an Arbeitslasten als virtuelle Maschine implementiert ist.
  16. Verfahren nach Anspruch 13, wobei der Schlüssel-Mapping-Datenspeicher in dem Arbeitsspeicher umfasst ist.
  17. Verfahren nach Anspruch 13, wobei die zugewiesenen Teile des Arbeitsspeichers Speicherseiten sind.
  18. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Verwalten eines Schlüsselnachschlage-Datenspeichers, der einen Satz kryptographischer Schlüssel umfasst, wobei jeder der kryptographischen Schlüssel einem Schlüsselidentifikator der Schlüsselidentifikationsdaten zugeordnet ist, die im Schlüssel-Mapping-Datenspeicher enthalten sind.
  19. Verfahren nach Anspruch 18, wobei der Schlüsselnachschlage-Datenspeicher im Arbeitsspeicher umfasst ist und wobei jeder der kryptographischen Schlüssel im Schlüsselnachschlage-Datenspeicher so verschlüsselt ist, dass nur die MKE-Engine in der Lage ist, die kryptographischen Schlüssel wiederherzustellen.
  20. Verfahren nach Anspruch 13, wobei die MKE-Engine von dem zumindest einen Prozessorkern einen Befehl erhält und verarbeitet, um einen Eintrag aus dem Schlüssel-Verfolgungsprotokoll zu entfernen.
  21. Verfahren nach Anspruch 13, wobei die MKE-Engine eine Kopie von einem Last-Level-Cache (LLC) von dem zumindest einen Prozessorkern speichert.
  22. Verfahren nach Anspruch 13, wobei ein eindeutiger Salt-Wert jeder Arbeitslast zugeordnet und in einem Datenspeicher, der vom Prozessorkern verwaltet wird, gespeichert ist, und wobei eine Kopie jedes eindeutigen Salt-Wertes, der jeder Arbeitslast zugeordnet ist, in einem Datenspeicher, der von der MKE-Engine verwaltet ist, gespeichert ist, und wobei jeder eindeutige Salt-Wert einem zugewiesenen Speicherteil zugeordnet ist, der jeder entsprechenden Arbeitslast entspricht; und wobei als Antwort auf eine Leseoperation durch eine erste Arbeitslast, um einen ersten Datensatz aus dem Arbeitsspeicher zu erhalten, die MKE-Engine den ersten Datensatz mit einem zugeordneten ersten Salt-Wert aus dem Datenspeicher, der von der MKE-Engine verwaltet wird, kombiniert, um einen ersten Salted-Wert zu erzeugen, bevor die ersten Salted-Daten an den zumindest einen Prozessor weitergegeben werden, auf dem die erste Arbeitslast ausgeführt wird.
  23. Verfahren nach Anspruch 22, wobei der zumindest eine Prozessorkern, als Antwort auf den Erhalt erster Salted-Daten als Antwort auf eine Leseoperation, die ersten Salted-Daten mit einem zugeordneten Salt-Wert aus dem Datenspeicher, der vom Prozessorkern verwaltet wird, kombiniert, um den ersten Datensatz wiederherzustellen.
  24. Zumindest ein maschinenlesbares Medium, das Instruktionen umfasst, die, wenn sie auf einer Computerplattform ausgeführt werden, die Computerplattform dazu veranlassen, das Verfahren nach einem der Ansprüche 13-23 durchzuführen.
  25. System für sicheren Speicherzugriff in einer Computerplattform, wobei das System Mittel zur Ausführung des Verfahrens nach einem der Ansprüche 13-23 umfasst.
DE102018115683.9A 2017-09-29 2018-06-28 Domänenübergreifende sicherheit in kryptographisch partionierter cloud Pending DE102018115683A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/720,521 2017-09-29
US15/720,521 US10372628B2 (en) 2017-09-29 2017-09-29 Cross-domain security in cryptographically partitioned cloud

Publications (1)

Publication Number Publication Date
DE102018115683A1 true DE102018115683A1 (de) 2019-04-04

Family

ID=65728221

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018115683.9A Pending DE102018115683A1 (de) 2017-09-29 2018-06-28 Domänenübergreifende sicherheit in kryptographisch partionierter cloud

Country Status (3)

Country Link
US (1) US10372628B2 (de)
CN (1) CN109587106A (de)
DE (1) DE102018115683A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11106441B2 (en) 2018-09-14 2021-08-31 Microsoft Technology Licensing, Llc Secure device-bound edge workload delivery
US20190342093A1 (en) * 2019-06-28 2019-11-07 Siddhartha Chhabra Converged cryptographic engine
US11216366B2 (en) 2020-02-13 2022-01-04 Intel Corporation Security check systems and methods for memory allocations
US11895543B2 (en) * 2020-04-06 2024-02-06 Intel Corporation MRO for 5G networks
US11704444B2 (en) * 2021-03-08 2023-07-18 Micron Technology, Inc. Managing encryption keys per logical block on a persistent memory device
US11972126B2 (en) 2021-03-26 2024-04-30 Intel Corporation Data relocation for inline metadata
US11954045B2 (en) 2021-09-24 2024-04-09 Intel Corporation Object and cacheline granularity cryptographic memory integrity
CN114124548B (zh) * 2021-11-26 2024-01-26 中通服咨询设计研究院有限公司 一种基于边缘计算的数据跨域流动安全的方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030191719A1 (en) * 1995-02-13 2003-10-09 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
CA2212574C (en) * 1995-02-13 2010-02-02 Electronic Publishing Resources, Inc. Systems and methods for secure transaction management and electronic rights protection
US6011847A (en) * 1995-06-01 2000-01-04 Follendore, Iii; Roy D. Cryptographic access and labeling system
US5787175A (en) * 1995-10-23 1998-07-28 Novell, Inc. Method and apparatus for collaborative document control
US6272537B1 (en) * 1997-11-17 2001-08-07 Fujitsu Limited Method for building element manager for a computer network element using a visual element manager builder process
US6664978B1 (en) * 1997-11-17 2003-12-16 Fujitsu Limited Client-server computer network management architecture
US6289382B1 (en) * 1999-08-31 2001-09-11 Andersen Consulting, Llp System, method and article of manufacture for a globally addressable interface in a communication services patterns environment
US6339832B1 (en) * 1999-08-31 2002-01-15 Accenture Llp Exception response table in environment services patterns
US6332163B1 (en) * 1999-09-01 2001-12-18 Accenture, Llp Method for providing communication services over a computer network system
US20020092019A1 (en) * 2000-09-08 2002-07-11 Dwight Marcus Method and apparatus for creation, distribution, assembly and verification of media
US8732182B2 (en) * 2004-12-02 2014-05-20 Desktopsites Inc. System and method for launching a resource in a network
US10127564B2 (en) * 2011-09-15 2018-11-13 Stephan HEATH System and method for using impressions tracking and analysis, location information, 2D and 3D mapping, mobile mapping, social media, and user behavior and information for generating mobile and internet posted promotions or offers for, and/or sales of, products and/or services
US11216491B2 (en) * 2016-03-31 2022-01-04 Splunk Inc. Field extraction rules from clustered data samples

Also Published As

Publication number Publication date
CN109587106A (zh) 2019-04-05
US10372628B2 (en) 2019-08-06
US20190102322A1 (en) 2019-04-04

Similar Documents

Publication Publication Date Title
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
US10409990B2 (en) Encryption and decryption method and apparatus in virtualization system, and system
DE102019113352A1 (de) Technologien für sichere e/a mit speicherverschlüsselungs-engines
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
US11675919B2 (en) Separation of managed and unmanaged data in a computing device
DE102009013384B4 (de) System und Verfahren zur Bereitstellung einer sicheren Anwendungsfragmentierungsumgebung
DE102019110327A1 (de) Technologien zum verifizieren von speicherintegrität über mehrere speicherbereiche hinweg
DE102018109397A1 (de) Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen
DE102018005180A1 (de) Flexible Bescheinigung von Containern
DE102018123710A1 (de) Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud
DE102013108394A1 (de) Verfahren zum Verwalten eines Schlüssels für sicheres Speichern von Daten und Vorrichtung dafür
DE112009004491T5 (de) System und Verfahren zum sicheren Speichern von Daten in einem elektronischen Gerät
DE102019128261A1 (de) Datenfreigabesteuerung auf der Basis von Authentifizierung und Verbindungsstreckenschutz
DE102013111339A1 (de) Sicherheitsverwaltungseinheit, Hostcontrollerschnittstelle mit derselben, Verfahren zum Betreiben einer Hostcontrollerschnittstelle und Vorrichtungen mit einer Hostcontrollerschnittstelle
DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
DE112020000792T5 (de) Durch grafikverarbeitungseinheit beschleunigte vertrauenswürdige ausführungsumgebung
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE102020127800A1 (de) Ein-chip-system und verfahren zu dessen betrieb
DE102018004290A1 (de) Kryptographischer Speicherschutz mit Mehrfachschlüssel
CN112149144A (zh) 聚合密码引擎
DE112016006047T5 (de) Skalierbare techniken zur datenübertragung zwischen virtuellen maschinen
DE102018126136A1 (de) Technologien zur biometrischen Authentifizierung vor dem Booten
DE112015007220T5 (de) Techniken zum Koordinieren von Vorrichtungshochfahrsicherheit
DE102021105949A1 (de) Freischaltung des zugriffs auf informationen in abhängigkeit von der validierung von programmcodes virtueller entitäten