DE102018004290A1 - Kryptographischer Speicherschutz mit Mehrfachschlüssel - Google Patents

Kryptographischer Speicherschutz mit Mehrfachschlüssel Download PDF

Info

Publication number
DE102018004290A1
DE102018004290A1 DE102018004290.2A DE102018004290A DE102018004290A1 DE 102018004290 A1 DE102018004290 A1 DE 102018004290A1 DE 102018004290 A DE102018004290 A DE 102018004290A DE 102018004290 A1 DE102018004290 A1 DE 102018004290A1
Authority
DE
Germany
Prior art keywords
protected
memory
encryption
domain
key
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
DE102018004290.2A
Other languages
English (en)
Inventor
Siddhartha Chhabra
Hormuzd M. Khosravi
Gideon Gerzon
Barry E. Huntley
Gilbert Neiger
Ido Ouziel
Baiju Patel
Ravi Sahita
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 DE102018004290A1 publication Critical patent/DE102018004290A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

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

Abstract

In einer Ausführungsform umfasst eine Vorrichtung einen Prozessor, um eine Instruktion(en) auszuführen, wobei die Instruktionen eine Speicherzugriffsoperation umfassen, die einem Speicherort eines Speichers zugeordnet ist. Die Vorrichtung umfasst ferner eine Speicherverschlüsselungs-Steuereinheit, um: die Speicherzugriffsoperation zu identifizieren; zu bestimmen, dass der Speicherort einer geschützten Domäne zugeordnet ist, wobei die geschützte Domäne einer geschützten Speicherregion des Speichers zugeordnet ist, und wobei die geschützte Domäne aus einer Vielzahl geschützter Domänen identifiziert wird, die einer Vielzahl geschützter Speicherregionen des Speichers zugeordnet ist; einen Verschlüsselungsschlüssel zu identifizieren, der der geschützten Domäne zugeordnet ist; eine Kryptographieoperation an Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, wobei die Kryptographieoperation auf der Basis des Verschlüsselungsschlüssels vorgenommen wird, der der geschützten Domäne zugeordnet ist; und ein Ergebnis der Kryptographieoperation zurückzuführen, wobei das Ergebnis für die Speicherzugriffsoperation zu verwenden ist.

Description

  • GEBIET DER BESCHREIBUNG
  • Diese Offenbarung betrifft allgemein das Gebiet der Computersicherheit, und insbesondere, obwohl nicht ausschließlich, den kryptographischen Speicherschutz.
  • HINTERGRUND
  • Die steigende Nachfrage nach robuster Computersicherheit hat zur verbreiteten Verwendung der Kryptographie in Standard-Computersystemen und -Netzen geführt. Beispielsweise kann eine Plattenverschlüsselung dazu verwendet werden, Daten zu schützen, die auf einer persistenten Plattenspeichervorrichtung residieren, während die Netzverschlüsselung verwendet werden kann, um Daten zu schützen, die über ein Netz übertragen werden. Daten, die in einem Systemspeicher residieren, werden jedoch häufig im Klartext gespeichert und/oder übertragen und können somit Angriffen ausgesetzt sein.
  • Figurenliste
  • Die vorliegende Offenbarung wird am besten durch die folgende detaillierte Beschreibung verständlich, die mit den begleitenden Figuren zu lesen ist. Es wird hervorgehoben, dass, gemäß der Standard-Praxis in der Industrie, verschiedene Merkmale nicht unbedingt maßstabgetreu gezeichnet sind und nur zu Zwecken der Veranschaulichung verwendet werden. Wenn ein Maßstab explizit oder implizit gezeigt ist, liefert dieser nur ein veranschaulichendes Beispiel. In anderen Ausführungsformen können die Abmessungen der verschiedenen Merkmale willkürlich der Klarheit der Diskussion halber vergrößer oder verkleinert werden.
    • 1 veranschaulicht eine schematische Darstellung eines Beispiels eines Rechnersystems gemäß bestimmten Ausführungsformen.
    • 2 veranschaulicht ein Beispiel einer Ausführungsform eines kryptographischen Speicherschutzsystems mit Mehrfachschlüssel.
    • 3 veranschaulicht ein Beispiel der Konfigurierung einer geschützten Domäne unter Verwendung einer Prozessorinstruktion.
    • 4 veranschaulicht eine Zustandsmaschine für ein Beispiel einer Ausführungsform des kryptographischen Speicherschutzes.
    • 5 veranschaulicht ein Flussdiagramm für ein Beispiel einer Ausführungsform des kryptographischen Speicherschutzes.
    • 6A-B, 7, 8, 9 und 10 veranschaulichen ein Beispiel von Computerarchitekturen, die gemäß hier geoffenbarten Ausführungsformen verwendet werden können.
  • AUSFÜHRUNGSFORMEN DER OFFENBARUNG
  • Die folgende Offenbarung sieht viele verschiedene Ausführungsformen oder Beispiele zur Implementierung verschiedener Merkmale der vorliegenden Offenbarung vor. Spezifische Beispiele von Komponenten und Anordnungen werden nachstehend beschrieben, um die vorliegende Offenbarung zu vereinfachen. Diese sind natürlich nur Beispiele und sollen nicht einschränkend sein. Ferner kann die vorliegende Offenbarung Bezugszahlen und/oder -buchstaben in den verschiedenen Beispielen wiederholen. Diese Wiederholung dient dem Zweck der Einfachheit und Klarheit und gibt selbst keine Beziehung zwischen den verschiedenen diskutierten Ausführungsformen und/oder Konfigurierungen vor. Verschiedene Ausführungsformen können verschiedene Vorteile aufweisen, und es ist kein bestimmter Vorteil für irgendeine Ausführungsform unbedingt erforderlich.
  • Die steigende Nachfrage nach robuster Computersicherheit hat zur verbreiteten Verwendung der Kryptographie in Standard-Computersystemen und -Netzen geführt, gemeinsam mit der Entwicklung zunehmend komplexer und sicherer moderner Kryptographietechniken. Beispielsweise kann eine Plattenverschlüsselung verwendet werden, um Daten zu schützen, die auf einer persistenten Plattenspeichervorrichtung residieren, während eine Netzverschlüsselung verwendet werden kann, um Daten zu schützen, die über ein Netz übertragen werden. Daten, die in einem Systemspeicher residieren, werden jedoch häufig im Klartext gespeichert und/oder übertragen und können somit Angriffen ausgesetzt sein. Beispielsweise können, neben anderen Beispielen, Angreifer verschiedenste Techniken verwenden, um mit böser Absicht auf in einem Speicher gespeicherte Daten zuzugreifen, wie Bus-Scanning und/oder Speicher-Scanning. Außerdem könnten in einigen Fällen diese böswilligen Techniken verwendet werden, um auf Speicherorte zuzugreifen, die Verschlüsselungsschlüssel enthalten, welche im Klartext gespeichert sind, wie Verschlüsselungsschlüssel, die zur Plattenverschlüsselung verwendet werden, wodurch ein weiterer unautorisierter Zugriff auf andere Daten erleichtert wird, die durch eine Verschlüsselung geschützt werden.
  • Demgemäß beschreibt diese Offenbarung verschiedene Ausführungsformen eines kryptographischen Speicherschutzes. Die beschriebenen Ausführungsformen können verwendet werden, um einen Speicherverschlüsselungsschutz zu bieten, wodurch eine zusätzliche Sicherheitsschicht vorgesehen wird, indem die Lücke, die einem ungeschützten oder ungesicherten Speicher zugeordnet ist, geschlossen wird. Beispielsweise kann in einigen Ausführungsformen eine Speicherverschlüsselung vorgesehen werden, indem eine kryptographische Engine oder Steuereinheit auf dem Speicherweg oder Speicherbus implementiert wird. Auf diese Weise können Daten verschlüsselt und geschützt werden, während sie im Speicher residieren und während der Übertragung zum und vom Speicher (z.B. wenn sie vom Speicher zu einem Prozessor über den Speicherbus oder Speicherweg übertragen werden, und umgekehrt). Obwohl die Speicherverschlüsselung für bestimmte Benutzer und/oder Verwendungsfälle eine Notwendigkeit sein kann, kann ein gleichmäßiger Speicherschutz über ein Rechnersystem unter bestimmten Umständen unzureichend sein. Beispielsweise hostet ein Cloud-Serviceanbieter häufig Daten und/oder Anwendungen - oder Arbeitslasten - für mehrere Kunden oder Dritte. Außerdem könnte der Cloud-Serviceanbeiter eine Speicherverschlüsselung verwenden, um einen gleichmäßigen Schutz aller gehosteten Kundenarbeitslasten zu bieten, beispielsweise unter Verwendung eines einzigen Verschlüsselungsschlüssels. Das einfache Vorsehen eines gleichmäßigen Speicherverschlüsselungsschutzes für alle gehosteten Arbeitslasten -ohne Differenzierung zwischen den Arbeitslasten verschiedener Kunden - kann jedoch unzureichend sein. Beispielsweise können ein Cloud-Serviceanbeiter und/oder seine Kunden dagegen sein, denselben Verschlüsselungsschlüssel für alle Kunden gemeinsam zu nutzen. Stattdessen können der Cloud-Serviceanbeiter und/oder seine Kunden es bevorzugen, eine Speicherverschlüsselung auf einer Basis pro Mieter vorgesehen zu haben (z.B. pro Kunde oder pro virtueller Maschine), um sicherzustellen, dass jede Kundenarbeitslast getrennt unter Verwendung eines einzigartigen Verschlüsselungsschlüssels geschützt und isoliert wird.
  • Demgemäß bieten die beschriebenen Ausführungsformen eine Speicherverschlüsselung, die mehrfache Schlüssel unterstützt und konfigurierbar oder programmierbar ist. Die Anzahl unterstützter Schlüssel kann beispielsweise von der Implementierung abhängig sein. In einigen Ausführungsformen kann beispielsweise eine Speicherschutz-Engine konfiguriert oder (z.B. durch Software) programmiert sein, verschiedene Regionen oder Seiten eines Speichers unter Verwendung verschiedener Verschlüsselungsschlüssel und/oder -algorithmen zu verschlüsseln. Beispielsweise kann in einigen Ausführungsformen ein Benutzer oder Mieter (z.B. ein Cloud-Serviceanbieter oder Kunde) einen Schutzmodus für eine bestimmte Speicherregion- oder -seite entweder als Klartext (z.B. unverschlüsselt), Vorgabe- oder Standard-Verschlüsselungsschutz (z.B. verschlüsselt unter Verwendung eines Standard- oder globalen Verschlüsselungsschlüssels) oder benutzerdefinierten Verschlüsselungsschutz (z.B. verschlüsselt unter Verwendung eines einzigartigen Verschlüsselungsschlüssels) bezeichnen. Auf diese Weise kann eine Speicherverschlüsselung getrennt für verschiedene Mieter, Kunden oder Schutzdomänen vorgesehen und konfiguriert werden. In einigen Ausführungsformen kann beispielsweise eine „Domäne“ als Sammlung von Ressourcen angesehen werden, welche einer bestimmten Arbeitslast zugeordnet sind, die beliebige Speicherregionen umfassen können, welche der Arbeitslast zugeordnete Daten enthalten. Außerdem kann eine Speicherverschlüsselung getrennt für jede Domäne konfiguriert werden, wodurch es ermöglicht wird, jede Domäne oder Arbeitslast unter Verwendung eines getrennten Verschlüsselungsschlüssels zu schützen. Auf diese Weise kann eine kryptographische Isolierung für Arbeitslasten verschiedener Mieter, Kunden oder Benutzer erzielt werden. Außerdem können die Arbeitslasten auch von Management-Software (z.B. eines Cloud-Serviceanbieters), wie einem virtuellen Maschinenmanager, isoliert werden. Domänen können auch im Klartextmodus konfiguriert werden, da es unter bestimmten Umständen unerwünscht sein kann, eine Speicherverschlüsselung für eine bestimmte Domäne vorzunehmen (z.B. um Leistungseinflüsse der Speicherverschlüsselung, gemeinsamen Speichernutzung (und I/O) zwischen verschiedenen Einheiten und Speicherfreigabe usw. zu vermeiden).
  • Die beschriebenen Ausführungsformen können auch verwendet werden, um Daten zu schützen, wenn ein Speicher für eine persistente Datenspeicherung verwendet wird, wie ein Storage Class Memory (SCM) und andere Formen von Flash- und Festspeichern (z.B. nicht-flüchtige duale In-line-Speichermodule (NVDIMM), Direct Access Storage (DAS) Memory usw.). Wenn beispielsweise ein persistenter Datenspeicher unter Verwendung eines Speichers anstelle einer plattenbasierten Speicherung vorgesehen wird, kann eine Plattenverschlüsselungs-Software nicht in der Lage sein, die gespeicherten Daten adäquat zu schützen, wenn eine Speicherverschlüsselung nicht unterstützt wird. Demgemäß können die beschriebenen Ausführungsformen verwendet werden, um Daten unter Verwendung einer Speicherverschlüsselung zu schützen, wenn der Speicher für eine persistente Datenspeicherung verwendet wird.
  • Die beschriebenen Ausführungsformen liefern zahlreiche Merkmale und Vorteile, umfassend einen kryptographischen Speicherschutz (z.B. über eine kryptographische Engine auf dem Speicherweg), eine Mehrfachschlüssel-Verschlüsselungsunterstützung und durch Software programmierbare Konfigurierbarkeit und Flexibilität. Diese Merkmale ermöglichen einen isolierten Verschlüsselungsschutz unter Verwendung getrennter Schlüssel für verschiedene Domänen, Speicherregionen, Arbeitslasten, Mieter und/oder Kunden, wodurch eine Unterstützung für mehrfache kryptographisch isolierte Schutzdomänen geliefert wird. Auf diese Weise können die beschriebenen Ausführungsformen verwendet werden, um erhöhte Sicherheitsanforderungen für bestimmte Benutzer und/oder Verwendungsfälle zu erfüllen, wie Cloud-Serviceanbieter mit gehosteten Arbeitslasten von mehreren Dritten oder Kunden. Die beschriebenen Ausführungsformen können auch verwendet werden, um die Leistungsvorteile der Verwendung eines Speichers für eine persistente Datenspeicherung (z.B. NVDIMM oder anderer Storage Classe Memory (SCM)) ohne Einbußen an Sicherheit zu erhöhen.
  • Außerdem können die beschriebenen Speicherverschlüsselungsausführungsformen unter Verwendung eines generischen CPU-zentrischen Ansatzes implementiert werden, der mit einem beliebigen Speichertyp kompatibel ist, umfassend sowohl einen flüchtigen Speicher (z.B. Speicher mit wahlfreiem Zugriff (RAM), wie dynamischen RAM (DRAM), synchronen dynamischen RAM (SDRAM) und statischen RAM (SRAM)) als auch einen nicht-flüchtigen Speicher (z.B. Storage Class Memory (SCM), Direct Access Storage (DAS) Memory, nicht-füchtige duale In-line-Speichermodule (NVDIMM) und/oder andere Formen eines Flash- oder Festspeichers).
  • Die beschriebenen Ausführungsformen sind auch skalierbar, da sie unter Verwendung von Instruktionen, Befehlen, Parametern und/oder Datenstrukturen (z.B. Verschlüsselungsschlüsseltabellen) implementiert werden können, die in der Zukunft nach Wunsch erweitert werden können. Beispielsweise könnten die beschriebenen Ausführungsformen skaliert werden, um eine Mehrfachdomänen-Speicherverschlüsselung für ein Rechnersystem mit 64 Terabytes (TB) eines adressierbaren physischen Speichers zu liefern. Außerdem könnten die beschriebenen Ausführungsformen sogar noch weiter skaliert werden, beispielsweise durch Erweiterungen für physische Adressen (PAs) und/oder Cache-Tagging.
  • Nun werden Beispiele von Ausführungsformen, die verwendet werden können, um die Merkmale und Funktionalität dieser Offenbarung zu implementieren, mit Bezugnahme auf die beigeschlossenen FIGUREN mehr im Einzelnen beschrieben.
  • 1 veranschaulicht eine schematische Darstellung eines Beispiels eines Rechnersystems 100. In verschiedenen Ausführungsformen können das System 100 und/oder seine zugrundeliegenden Komponenten die kryptographische Speicherschutzfunktionalität umfassen, die in dieser gesamten Offenbarung beschrieben wird. Beispielsweise hostet ein Cloud-Serviceanbieter 120 häufig Arbeitslasten 130 (z.B. Daten und/oder Anwendungen) für mehrere Kunden oder Dritte. Demgemäß kann in einigen Ausführungsformen ein Cloud-Serviceanbieter 120 einen kryptographischen Speicherschutz mit Mehrfachschlüssel implementieren, um eine Speicherverschlüsselung auf einer Basis pro Mieter vorzusehen, wodurch sichergestellt wird, dass jede Kundenarbeitslast 130 unter Verwendung eines einzigartigen Verschlüsselungsschlüssels getrennt geschützt und isoliert wird. Ein kryptographischer Speicherschutz kann auch durch andere Komponenten des Systems 100 implementiert werden, wie periphere Vorrichtungen 110. Beispiele von Ausführungsformen eines kryptographischen Speicherschutzes werden in dieser gesamten Offenbarung in Verbindung mit den übrigen FIGUREN weiter beschrieben.
  • Nun werden die verschiedenen Komponenten im veranschaulichten Beispiel eines Rechnersystems 100 im Nachstehenden weiter diskutiert.
  • Periphere Vorrichtungen 110 können beliebige Ausrüstung und/oder Vorrichtungen umfassen, die nahe bei der „Peripherie“ eines Kommunikationssystems 100 verwendet oder angeschlossen werden. In der veranschaulichten Ausführungsform umfassen, neben anderen Beispielen, periphere Vorrichtungen 100 Endbenutzervorrichtungen 112 (z.B. Desktops, Laptops, mobile Vorrichtungen), Internet-der-Dinge- (IoT-) Vorrichtungen 114 und Gateways und/oder Router 116. Periphere Vorrichtungen 110 können miteinander und/oder mit anderen entfernten Netzen und Diensten (z.B. Cloud-Services 120) durch ein oder mehrere Netze und/oder Kommunikationsprotokolle, wie das Kommunikationsnetz 150, kommunizieren. Außerdem können in einigen Ausführungsformen bestimmte periphere Vorrichtungen 110 die kryptographische Speicherschutzfunktionalität aufweisen, die in dieser gesamten Offenbarung beschrieben wird.
  • Endbenutzervorrichtungen 112 können eine beliebige Vorrichtung umfassen, die eine Benutzerinteraktion mit dem Rechnersystem 100 ermöglicht oder erleichtert, umfassend beispielsweise Desktop-Computer, Laptops, Tablets, Mobiltelephone und andere mobile Vorrichtungen, und tragbare Vorrichtungen (z.B. Smart Watches, Smart Glasses, Kopfhörer), unter anderen Beispielen.
  • IoT-Vorrichtungen 114 können eine beliebige Vorrichtung umfassen, die in einem Internet-der-Dinge- (IoT-) System kommunizieren und/oder teilnehmen können. IoT-Systeme können sich auf neue oder verbesserte Ad-hoc-Systeme und -Netze beziehen, die aus mehreren verschiedenen Vorrichtungen (z.B. IoT-Vorrichtungen 114) bestehen, welche für eine bestimmte Anwendung oder einen Verwendungsfall miteinander arbeiten und synergistisch wirken. Solche Adhoc-Systeme kommen auf, da mehr und mehr Produkte und Ausrüstung entwickelt werden, um „smart“ zu werden, was bedeutet, dass sie von Computerprozessoren gesteuert oder überwacht werden und mit anderen Vorrichtungen kommunizieren können. Beispielsweise kann eine IoT-Vorrichtung 114 einen Computerprozessor und/oder eine Kommunikationsschnittselle umfassen, um einen gegenseitigen Betrieb mit anderen Komponenten des Systems 100 zu ermöglichen, wie mit Cloud-Services 120 und/oder peripheren Vorrichtungen 110. IoT-Vorrichtungen 114 können „Greenfield“-Vorrichtungen sein, die mit IoT-Fähigkeiten von Grund auf entwickelt werden, oder „Brownfield“-Vorrichtungen, die durch die Integration von IoT-Fähigkeiten in bestehende Altvorrichtungen geschaffen werden, welche anfänglich ohne IoT-Fähigkeiten entwickelt wurden. Beispielsweise können in einigen Fällen IoT-Vorrichtungen 114 aus Sensoren und Kommunikationsmodulen gebaut werden, die in „Dingen“ integriert oder daran angebracht werden, wie Ausrüstung, Spielzeug, Werkzeuge, Fahrzeuge, lebende Dinge (z.B. Pflanzen, Tiere, Menschen) usw. Alternativ dazu oder zusätzlich können bestimmte IoT-Vorrichtungen 114 auf Zwischenkomponenten zurückgreifen, wie periphere Gateways oder Router 116, um mit den verschiedenen Komponenten des Systems 100 zu kommunizieren.
  • IoT-Vorrichtungen 114 können verschiedene Typen von Sensoren zur Überwachung, Detektion, Messung und Erzeugung von Sensordaten und Signalen aufweisen, die Charakteristiken ihrer Umgebung zugeordnet sind. Beispielsweise kann ein gegebener Sensor konfiguriert sein, eine oder mehrere spezifische Charakteristiken zu detektieren, wie Bewegung, Gewicht, physischen Kontakt, biometrische Eigenschaften, Temperatur, Wind, Geräusche, Licht, Position, Feuchtigkeit, Strahlung, Flüssigkeit, spezfische chemische Verbindungen, Batterielebensdauer, drahtlose Signale, Computerkommunikationen und Bandbreite, unter anderen Beispielen. Sensoren können physische Sensoren (z.B. physische Überwachungskomponenten) und virtuelle Sensoren (z.B. Software-basierte Überwachungskomponenten) umfassen. IoT-Vorrichtungen 114 können auch Betätiger umfassen, um verschiedene Aktionen in ihren jeweiligen Umgebungen vorzunehmen. Beispielsweise kann ein Betätiger verwendet werden, um selektiv eine bestimmte Funktionalität zu aktivieren, wie Umschalten der Leistung oder des Betriebs eines Sicherheitssystems (z.B. Alarm, Kamera, Verriegelungen) oder eines Haushaltsgeräts (z.B. Audio-System, Beleuchtung, HVAC-Geräte, Garagentore), unter anderen Beispielen.
  • Tatsächlich sieht diese Offenbarung die Verwendung eines potentiell grenzenlosen Universums von IoT-Vorrichtungen 114 und zugeordneten Sensoren/Betätigern vor. IoT-Vorrichtungen 114 können beispielsweise einen beliebigen Typ einer Ausrüstung und/oder von Vorrichtungen umfassen, die einem beliebigen Typ eines Systems 100 und/oder einer Industrie zugeordnet sind, umfassend Transport (z.B. Auto, Fluglinien), industrielle Herstellung, Energie (z.B. Kraftwerke), Telekommunikation (z.B. Internet, zelluläre und Fernsehdiensteanbieter), Medizin (z.B. Gesundheitswesen, Pharmazie), Nahrungsmittelverarbeitung und/oder Einzelhandel, u.a. In der Transportindustrie können IoT-Vorrichtungen 114 beispielsweise Ausrüstung und Vorrichtungen umfassen, die Luftfahrzeugen, Autos oder Schiffen zugeordnet sind, wie Navigationssysteme, autonome Flug- oder Fahrsysteme, Verkehrssensoren und -steuereinheiten, und/oder beliebige interne mechanische oder elektrische Komponenten, die von Sensoren überwacht werden (z.B. Motoren). IoT-Vorrichtungen 114 können auch Ausrüstung, Vorrichtungen und/oder Infrastruktur umfassen, die zugeordnet sind mit industrieller Herstellung und Fertigung, Versand (z.B. Sendungsverfolgung), Kommunikationsnetzen (z.B. Gateways, Router, Server, Sendemasten), Server-Farmen, Stromkraftwerken, Windparks, Öl- und Gaspipelines, Wasserbehandlung und -verteilung, Abwassersammlung und -behandlung, und Wetterüberwachung (z.B. Temperatur-, Wind- und Feuchtigkeitssensoren), unter anderen Beispielen. IoT-Vorrichtungen 114 können auch beispielsweise einen beliebigen Typ einer „smarten“ Vorrichtung oder eines Systems umfassen, wie smarte Unterhaltungssysteme (z.B. Fernsehen, Audio-Systeme, Videospielsysteme), smarte Haushalts- oder Bürogeräte (z.B. Heizungs-, Lüftungs-, Klimatechnik- (HVAC-) Geräte, Kühlschränke, Waschmaschinen und Trockner, Kaffeemaschinen, Enegiesteuersysteme (z.B. automatische Strom-, Licht- und HVAC-Steuerungen), Sicherheitssysteme (z.B. Alarme, Schlösser, Kameras, Bewegungsdetektoren, Fingerabdruckscanner, Gesichtserkennungssysteme), und andere automatische Heimsysteme, unter anderen Beispielen. IoT-Systeme 114 können statisch angeordnet sein, wie montiert an einem Gebäude, einer Wand, einem Boden, einem Laternenpfahl, einem Verkehrszeichen, einem Wasserturm oder irgendeiner anderen festen oder statischen Struktur. IoT-Vorrichtungen 114 können auch mobil sein, wie Vorrichtungen in Fahrzeugen oder Luftfahrzeugen, Dronen, Paketen (z.B. zur Sendungsverfolgung), mobilen Vorrichtungen und tragbaren Vorrichtungen, unter anderen Beispielen. Außerdem kann eine IoT-Vorrichtung 114 auch ein beliebiger Typ einer peripheren Vorrichtung 110 sein, umfassend Endbenutzervorrichtungen 112 und periphere Gateways und Router 116.
  • Periphere Gateways und/oder Router 116 können verwendet werden, um eine Kommunikation zu und von peripheren Vorrichtungen 110 zu erleichtern. Beispielsweise können Gateways 116 Kommunikationsfähigkeiten für bestehende Altvorrichtungen vorsehen, die anfänglich ohne irgendwelche solche Fähigkeiten entwickelt wurden (z.B. „Brownfield“-IoT-Vorrichtungen). Gateways 116 können auch verwendet werden, um die geographische Reichweite von peripheren Vorrichtungen 110 mit kurzreichweitigen, proprietären oder sonst eingeschränkten Kommunikationsfähigkeiten zu erweitern, wie IoT-Vorrichtungen 114 mit Bluetooth- oder ZigBee-Kommunikationsfähigkeiten. Beispielsweise können Gateways 116 als Vermittler zwischen IoT-Vorrichtungen 114 und entfernten Netzen oder Diensten dienen, indem ein Fronthaul für die IoT-Vorrichtungen 114 unter Verwendung ihrer nativen Kommunikationsfähigkeiten (z.B. Bluetooth, ZigBee) vorgesehen wird, und ein Backhaul für andere Netze 150 und/oder Cloud-Services 120 unter Verwendung eines anderen verdrahteten oder drahtlosen Kommunikationsmediums (z.B. Ethernet, Wi-Fi, zellulär) vorgesehen wird. In einigen Ausführungsformen kann ein Gateway 116 durch eine dedizierte Gateway-Vorrichtung oder durch eine UniversalVorrichtung, wie eine weitere IoT-Vorrichtung 114, Endbenutzervorrichtung 112 oder einen anderen Typ einer peripheren Vorrichtung 110, implementiert werden.
  • In einigen Fällen können Gateways 116 auch eine bestimmte Netzmanagement- und/oder Anwendungsfunktionalität (z.B. IoT-Mangement und/oder IoT-Anwendungsfunktionalität für IoT-Vorrichtungen 114) implementieren, entweder getrennt oder in Verbindung mit anderen Komponenten, wie Cloud-Services 120 und/oder anderen peripheren Vorrichtungen 110. Beispielsweise können in einigen Ausführungsformen Konfigurierungsparamter und/oder Anwendungslogik zu oder von einer Gateway-Vorrichtung 116 geschoben oder gezogen werden, wodurch es ermöglicht wird, dass IoT-Vorrichtungen 114 (oder andere periphere Vorrichtungen 110) innerhalb der Reichweite oder in der Nähe des Gateways 116 für eine bestimmte IoT-Anwendung oder einen Verwendungsfall konfiguriert werden.
  • Cloud-Services 120 können Dienste umfassen, die entfernt oder über ein Netz 150 oder in der „Cloud“ gehostet werden. In einigen Ausführungsformen können beispielsweise Cloud-Services 120 entfernt auf Servern in einem Datenzentrum gehostet werden (z.B. Anwendungsservern oder Datenbankservern). Cloud-Services 120 können beliebige Dienste umfassen, die durch oder für periphere Vorrichtungen 110 verwendet werden können, umfassend, jedoch nicht beschränkt auf Daten- und Anwendungs-Hosting, Rechendienste (z.B. Datenanalytik, Suche, Diagnostik und Fehlermanagement), Sicherheitsdienste (z.B. Überwachung, Alarme, Benutzerauthentifizierung), Mapping und Navigation, Geolokalisierungsdienste, Netz- oder Infrastrukturmanagement, IoT-Anwendungs- und -Managementdienste, Zahlungsverarbeitung, Audio- und Video-Streaming, Messaging, soziale Netze, Nachrichten und Wetter, unter anderen Beispielen. Außerdem können in einigen Ausführungsformen bestimmte Cloud-Services 120 die kryptographische Speicherschutzfunktionalität umfassen, die in dieser gesamten Offenbarung beschrieben wird. Beispielsweise hostet ein Cloud-Serviceanbieter 120 häufig Arbeitslasten 120 (z.B. Daten und/oder Anwendungen) für mehrere Kunden oder Dritte. Demgemäß kann in einigen Ausführungsformen ein Cloud-Serviceanbieter 120 einen kryptographischen Speicherschutz mit Mehrfachschlüssel implementieren, um eine Speicherverschlüsselung auf einer Basis pro Mieter zu bieten, wodurch sichergestellt wird, dass jede Kundenarbeitslast 130 unter Verwendung eines einzigartigen Verschlüsselungsschlüssels getrennt geschützt und isoliert wird.
  • Das Netz 150 kann verwendet werden, um eine Kommunikation zwischen den Komponenten des Rechnersystems 100 zu erleichtern. Beispielsweise können periphere Vorrichtungen 110, wie Endbenutzervorrichtungen 112 und IoT-Vorrichtungen 114, das Netz 150 verwenden, um miteinander zu kommunizieren und/oder auf ein oder mehrere entfernte Cloud-Services 120 zuzugreifen. Das Netz 150 kann eine beliebige Anzahl oder einen beliebigen Typ von Kommunikationsnetzen umfassen, beispielsweise umfassend lokale Netze, Weitverkehrsnetze, öffentliche Netze, das Internet, zelluläre Netze, Wi-Fi-Netze, Netze mit kurzer Reichweite (z.B. Bluetooth oder ZigBee) und/oder beliebige andere verdrahtete oder drahtlose Netze oder Kommunikationsmedien.
  • Beliebige, alle oder einige der Rechnervorrichtungen des Systems 100 können eingerichtet sein, ein beliebiges Betriebssystem auszuführen, umfassend Linux oder andere UNIX-basierte Betriebssysteme, Microsoft Windows, Windows Server, MacOS, Apple iOS, Google Android, oder ein beliebiges spezifisches und/oder proprietäres Betriebssystem, gemeinsam mit virtuellen Maschinen, die eingerichtet sind, die Ausführung eines bestimmten Betriebssystems zu virtualisieren.
  • Obwohl 1 so beschrieben wird, dass sie eine Vielzahl von Elementen enthält oder damit zugeordnet ist, können nicht alle Elemente, die innerhalb des Systems 100 von 1 veranschaulicht sind, in jeder alternativen Implementierung der vorliegenden Offenbarung verwendet werden. Zusätzlich kann oder können ein oder mehrere der Elemente, die in Verbindung mit den Beispielen von 1 beschrieben werden, extern vom System 100 angeordnet sein, während in anderen Fällen bestimmte Elemente innerhalb oder als Teil eines oder mehrerer der anderen beschriebenen Elemente eingeschlossen sein können, sowie andere Elemente, die in der veranschaulichten Implementierung nicht beschrieben werden. Ferner können bestimmte Elemente, die in 1 veranschaulicht sind, mit anderen Komponenten kombiniert werden sowie für alternative oder zusätzliche Zwecke zusätzlich zu den hier beschriebenen Zwecken verwendet werden.
  • Kryptographischer Speicherschutz mit Mehrfachschlüssel
  • 2 veranschaulicht ein Beispiel einer Ausführungsform eines kryptographischen Speicherschutzsystems 200 mit Mehrfachschlüssel. In der veranschaulichten Ausführungsform umfasst das Speicherschutzsystem 200 einen Prozessor 202, einen Systemagenten 204 und einen Speicher 210. Wie nächstehend weiter beschrieben, bietet das Speicherschutzsystem 200 einen kryptographischen Schutz von Daten, die in dem Speicher 210 gespeichert sind.
  • Der Speicher 202 kann verwendet werden, um Instruktionen, Code und/oder eine beliebige andere Form von Logik oder Software auszuführen, wie Instruktionen, die einer Software-Anwendung zugeordnet sind. Der Prozessor 202 kann eine beliebige Kombination von Logik oder Verarbeitungselementen umfassen, die betreibbar sind, Instruktionen auszuführen, egal ob vom Speicher heruntergeladen oder direkt in Hardware implementiert, wie einen Mikroprozessor, einen digitalen Signalprozessor, ein feldprogrammierbares Logik-Array (FPGA), eine Graphikverarbeitungseinheit (GPU), ein programmierbares Logik-Array (PLA) oder eine anwendungsspezifische Integrationsschaltung (ASIC), unter anderen Beispielen. In einigen Ausführungsformen können beispielsweise der Prozessor 202 und/oder das Speicherschutzsystem 200 unter Verwendung der Computerarchitekturen von 6 bis 10 implementiert werden.
  • Der Speicher 210 kann verwendet werden, um Informationen zu speichern, wie Code und/oder Daten, die vom Prozessor 202 während der Verarbeitung verwendet werden, und/oder persistente Daten, die einer Anwendung oder einem Benutzer des Systems 200 zugeordnet sind. Der Speicher 210 kann einen beliebigen Typ oder eine Kombination von Komponenten umfassen, die Informationen speichern können, umfassend einen flüchtigen Speicher (z.B. Speicher mit wahlfreiem Zugriff (RAM), wie dynamischen RAM (DRAM), synchronen dynamischen RAM (SDRAM) und statischen RAM (SRAM)) und/oder einen nicht-flüchtigen Speicher (z.B. Storage Class Memory (SCM), Direct Access Storage (DAS) Memory, nicht-füchtige duale In-line-Speichermodule (NVDIMM) und/oder andere Formen eines Flash- oder Festspeichers).
  • Der Systemagent 204 kann verwendet werden, um verschiedene Funktionen für den Prozessor 202 vorzusehen, wie die Verwaltung eines Zugriffs auf den Speicher 210 und/oder andere Ressourcen des Systems 200. In der veranschaulichten Ausführungsform umfasst der Systemagent 204 beispielsweise eine Speichersteuereinheit 208, um einen Zugriff auf den Speicher 210 des Systems 200 zu steuern und/oder zu verwalten. Außerdem, wie nachstehend weiter beschrieben, umfasst der Systemagent 204 auch eine Speicherschutz-Steuereinheit 206, um Daten zu schützen, die im Speicher 210 gespeichert sind. In einigen Ausführungsformen kann der Systemagent 204 auch eine Schnittstelle zwischen dem Prozessor 202 und anderen Komponenten des Systems 200 vorsehen (z.B. unter Verwendung einer Direct Media Interface (DMI) und/oder PCI-Express-Brücke). In verschiedenen Ausführungsformen kann der Systemagent 204 eine beliebige Kombination von Logikelementen umfassen, die konfiguriert sind, eine hier beschriebene Funktionalität des Systemagenten 204 vorzunehmen, egal ob vom Speicher oder einem anderen nicht-transitorischen computerlesbaren Medium geladen, oder direkt in Hardware implementiert, umfassend als nichteinschränkende Beispiele: einen Mikroprozessor, einen digitalen Signalprozessor (DSP), ein feldprogrammierbares Gate-Array (FPGA), eine Graphikverarbeitungseinheit (GPU), ein programmierbares Logik-Array (PLA), eine anwendungsspezifische Integrationsschaltung (ASIC) und/oder einen virtuellen Maschinen- (VM-) Prozessor. Der Systemagent 204 kann mit dem Prozessor 202 integriert sein, oder alternativ dazu kann der Systemagent 204 auf einem getrennten Chip implementiert sein, der mit dem Prozessor 202 kommunikativ gekoppelt oder verbunden ist.
  • Die Speichersteuereinheit 208 kann verwendet werden, um einen Zugriff auf den Speicher 210 des Systems 200 zu steuern und/oder zu verwalten. In verschiedenen Ausführungsformen kann die Speichersteuereinheit 208 implementiert werden unter Verwendung einer beliebigen Kombination von Hardware und/oder Software-Logik, umfassend einen Mikroprozessor, eine anwendungsspezifische Integrationsschaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein programmierbares Logik-Array (PLA), eine virtuelle Maschine (VM) und/oder einen beliebigen anderen Typ einer Schaltung oder Logik.
  • In der veranschaulichten Ausführungsform bietet das System 200 einen kryptographischen Speicherschutz für den Speicher 210. In einigen Ausführungsformen kann der kryptographische Speicherschutz beispielsweise durch die Erweiterung und/oder Modifikation einer bestimmten Computerarchitektur implementiert werden. Beispielsweise kann der kryptographische Speicherschutz durch die Erweiterung der Funktionalität eines Prozessors 202 und/oder Einfügen einer Speicherschutz-Steuereinheit 206 implementiert werden. In der veranschaulichten Ausführungsform ist der Prozessor 202 beispielsweise erweitert, um Steuerregister 203 und eine Prozessorinstruktion(en) zu unterstützen, die verwendet werden können, um einen kryptographischen Speicherschutz zu ermöglichen und/oder zu konfigurieren, und die Speicherschutz-Steuereinheit 206 ist implementiert, um den kryptographischen Speicherschutz vorzusehen. Obwohl das veranschaulichte Beispiel getrennte Logikblöcke verwendet, um die Speicherschutz-Steuereinheit 206 und den Prozessor 202 darzustellen, können in tatsächlichen Ausführungsformen die Speicherschutz-Steuereinheit 206 und der Prozessor 202 miteinander integriert sein oder können alternativ dazu als getrennte Komponenten implementiert sein. In verschiedenen Ausführungsformen kann die Speicherschutz-Steuereinheit 206 beispielsweise unter Verwendung einer beliebigen Kombination von Hardware und/oder Software-Logik implementiert sein, umfassend einen Mikroprozessor, eine anwendungsspezifische Integrationsschaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein programmierbares Logik-Array (PLA), eine virtuelle Maschine (VM) und/oder einen beliebigen anderen Typ einer Schaltung oder Logik.
  • Die Speicherschutz-Steuereinheit 206 verwendet eine Speicherverschlüsselung, um Daten zu schützen, die im Speicher 210 gespeichert sind. In einigen Ausführungsformen kann die Speicherschutz-Steuereinheit 206 beispielsweise auf dem Speicherweg oder Speicherbus implementiert sein, um eine Verschlüsselung der Daten zu gestatten, die zum oder vom Speicher 210 übertragen und/oder darin gespeichert werden. Außerdem kann in einigen Ausführungsformen die Speicherschutz-Steuereinheit 206 konfigurierbar oder programmierbar sein, und kann eine Unterstützung für mehrfache Verschlüsselungsschlüssel umfassen. Demgemäß kann die Speicherschutz-Steuereinheit 206 konfiguriert oder programmiert sein (z.B. durch Software), verschiedene Regionen oder Seiten des Speichers 210 unter Verwendung verschiedener Verschlüsselungsschlüssel und/oder -algorithmen zu verschlüsseln. Auf diese Weise kann die Speicherverschlüsselung für verschiedene Benutzer, Mieter, Kunden, Anwendungen und/oder Arbeitslasten vorgesehen und konfiguriert werden.
  • Beispielsweise kann in einigen Ausführungsformen die Speicherschutz-Steuereinheit 206 verwendet werden, um verschiedene gesicherte oder geschützte Domänen zu definieren, die unter Verwendung einer Speicherverschlüsselung getrennt konfiguriert und geschützt werden können. In einigen Ausführungsformen kann beispielsweise eine „Domäne“ als Sammlung von Ressourcen angesehen werden, die einer bestimmten Arbeitslast zugeordnet sind (z.B. einer Arbeitslast eines bestimmten Benutzers oder einer Anwendung), und kann beliebige Speicherregionen umfassen, die der Arbeitslast zugeordnete Daten enthält. Beispielsweise kann eine geschützte Domäne für eine Kundenarbeitslast eines Cloud-Serviceanbieters Ressourcen (z.B. Speicher) umfassen, die einem Betriebssystem (O/S), einer virtuellen Maschine (VM) (z.B. einer VM, die auf einem virtuellen Maschinenmanager (VMM) läuft), und/oder beliebigen Ring-3-Anwendungen, die auf dem O/S oder der VM laufen, zugeordnet sind. Die Speicherschutz-Steuereinheit 206 kann gestatten, dass die geschützten Domänen getrennt konfiguriert und geschützt werden, wodurch es ermöglicht wird, dass jede geschützte Domäne im Speicher kryptographisch isoliert wird, indem ihr zugeordneter Code und/oder Daten mit einem einzigartigen Verschlüsselungsschlüssel verschlüsselt werden. Auf diese Weise können die Arbeitslasten verschiedener Benutzer, Kunden und/oder Mieter kryptographisch isoliert werden, indem verschiedene Schutzdomänen für die verschiedenen Arbeitslasten definiert werden.
  • In einigen Ausführungsformen kann der kryptographische Speicherschutz des Systems 200 unter Verwendung von Prozessorinstruktionen und/oder Hardware-Registern gefunden und konfiguriert werden. Beispielsweise kann in einigen Ausführungsformen eine Prozessorinstruktion verwendet werden, um zu bestimmen, ob ein kryptographischer Speicherschutz vom System 200 unterstützt wird, wie eine CPU-Identifikations- (CPUID-) Instruktion, die von Software verwendet wird, um die Fähigkeiten eines bestimmten Prozessors zu identifizieren.
  • Bei der Bestimmung, dass ein kryptographischer Speicherschutz vom System 200 unterstützt wird, kann dann der kryptographische Speicherschutz unter Verwendung von Hardware-Registern, wie Steuerregistern 203 des Prozessors 202, freigegeben und/oder konfiguriert werden. Beispielsweise können die Steuerregister 203 verschiedene modellspezifische Register (MSRs) umfassen, die es gestatten, dass Software die kryptographischen Speicherschutzfähigkeiten des Systems 200 findet, freigibt und/oder konfiguriert. In einigen Ausführungsformen können die Speicherregister 203 beispielsweise ein Speicherverschlüsselungs-Fähigkeitsregister, ein Speicherverschlüsselungs-Aktivierungsregister und/oder ein oder mehrere Speicherverschlüsselungs-Ausschlussregister umfassen, wie nachstehend weiter beschrieben.
  • Das Speicherverschlüsselungs-Fähigkeitsregister (ME_CAPABILITY_ MSR) kann verwendet werden, um zu gestatten, dass Software die Speicherverschlüsselungsfähigkeiten des Systems 200 findet. Beispielsweise kann Software das ME_CAPABILITY_MSR lesen (z.B. unter Verwendung einer Lese-MSR- (RDMSR-) Instruktion), um die unterstützten Verschlüsselungstypen und/oder -algorithmen zu identifizieren, die maximale Anzahl von Verschlüsselungsschlüsseln, die gleichzeitig verwendet werden können, usw.). TABELLE 1 veranschaulicht ein Beispiel einer Ausführungsform des Speicherverschlüsselungs-Fähigkeitsregisters (ME_CAPABILITY_MSR). TABELLE 1: Speicherverschlüsselungs-Fähigkeitsregister (ME_CAPABILITY_MSR)
    GEBIET BITINDEX BESCHREIBUNG
    UNTERSTÜTZTE VERSCHLÜSSELUNGSALGORITHMEN 0:15 Dieses Feld wird verwendet, um unterstützte Verschlüsselungsalgorithmen oder Verschlüsselungstypen zu identifizieren.
    Jedes Bit dieses Felds (so verwendet) entspricht einem bestimmten Verschlüsselungsalgorithmus. Beispielsweise kann das Bit 0 einer AES-XTS 128-Bit-Verschlüsselung entsprechen, das Bit 1 kann einer AES-XTS 256-Bit-Verschlüsselung entsprechen, usw. Ein bestimmter Verschlüsselungsalgorithmus wird unterstützt, wenn das entsprechende Bit einen Wert von 1 hat, und wird nicht unterstützt, wenn das entsprechende Bit einen Wert von 0 hat.
    RESERVIERT 16:31 Diese Bits sind ungenutzt und/oder reserviert (z.B. reserviert für Funktionalitätserweiterungen und/oder andere Zwecke).
    MAX # VON SCHLÜSSEL-ID-BITS (ME_MAX_KEYID_BITS) 32:35 Dieses Feld wird verwendet, um die maximale Anzahl von Bits zu identifizieren, die für Schlüsselidentifikatoren verwendet werden können.
    Spezifischer repräsentiert der Wert dieses Bitfelds die maximale Anzahl von Bits höherer Ordnung einer Speicheradresse, die als Schlüssel oder Domänenidentifikator zur Speicher-
    verschlüsselung verwendet werden können.
    Wenn dieses Feld beispielsweise einen Wert von 8 hat (binär 1000), können die 8 Bits höherer Ordnung einer Speicheradresse als Schlüsselidentifikator verwendet werden, wobei so insgesamt 256 Schlüssel (28 = 256) unterstützt werden.
    Da dies ein Feld mit vier Bits ist, ist der maximale Wert 15 (binär 1111), was eine Unterstützung für bis zu ~32k Schlüssel (215 = 32,768) gestattet.
    Der Wert dieses Felds ist 0, wenn eine Mehrfachschlüssel-Speicherverschlüsselung nicht unterstützt wird.
    MAX # VON SCHLÜSSELN (ME_MAX_KEYS) 36:50 Der Wert dieses Felds repräsentiert die maximale Anzahl von Verschlüsselungsschlüsseln, die für die Speicherverschlüsselung verwendet werden können. Dieses Feld kann verwendet werden, um eine maximale Anzahl von Schlüsseln zu spezifizieren, die kleiner ist als die Gesamtanzahl unterstützter Schlüssel (wie durch das Feld ME_MAX_KEYID_BITS oben (Bits 32:35) spezifiziert).
    Wenn beispielsweise das obige Feld ME_MAX_KEYID_BITS einen Wert von 8 hat, ist die Gesamtanzahl unterstützter Schlüssel 256 (28 = 256). Wenn jedoch das vorliegende Feld (ME_MAX_KEYS) einen Wert von 200 hat, dann können nur 200 Schlüssel der insgesamt 256 unterstützten Schlüssel verwendet werden.
    Der Wert dieses Felds ist 0, wenn eine Mehrfachschlüssel-Speicherverschlüsselung nicht unterstützt wird.
    RESERVIERT 51:63 Diese Bits sind ungenutzt und/oder reserviert (z.B. reserviert für Funktionalitätserweiterungen und/oder andere Zwecke).
  • Das Speicherverschlüsselungs-Aktivierungsregister (ME_ACTIVATE_ MSR) kann verwendet werden, um den kryptographischen Speicherschutz des Systems 200 zu aktivieren (z.B. durch Setzen der geeigneten Werte in den Registerfeldern). TABELLE 2 veranschaulicht ein Beispiel einer Ausführungsform des Speicherverschlüsselungs-Aktivierungsregisters (ME_ACTIVATE_MSR). TABELLE 2: Speicherverschlüsselungs-Aktivierungsregister (ME_ACTIVATE_ MSR)
    FELD BIT-INDEX BESCHREIBUNG
    NURLESE-VERRIEGELUNG 0 Dieses Feld wird verwendet, um eine Nurleseverriegelung in den Speicherverschlüsselungs-Konfigurierungsregistern zu aktivieren, nachdem die Speicherverschlüsselung aktiviert wurde.
    Diese Verriegelung kann beispielsweise aktiviert werden, nachdem die Speicherverschlüsselung aktiviert wurde, durch ein Schreiben in das Register ME_ACTIVATE_MSR (z.B. unter Verwendung einer MSR- oder WRMSR-Instruktion). Die Verriegelung kann freigegeben werden, indem dieses Bitfeld auf 1 gesetzt wird, und die Verriegelung kann gesperrt werden, indem dieses Bitfeld auf 0 gesetzt wird.
    Die Verriegelung wird auf die Register ME_ACTIVATE_MSR, ME_EXCLUDE_BASE_MSR und ME_EXCLUDE_MASK_MSR angewendet. Jegliches Schreiben in diese Register wird ignoriert, während die Verriegelung aktiv ist.
    Die Verriegelung wird zurückgesetzt, wenn der Prozessor zurückgesetzt wird.
    SPEICHERVERSCHLÜSSELUNG FREIGEBEN 1 Dieses Feld wird verwendet, um die Speicherverschlüsselung freizugeben oder zu sperren.
    Die Speicherverschlüsselung wird freigegeben, wenn dieses Bitfeld einen Wert von 1 hat, und wird gesperrt, wenn dieses Bitfeld einen Wert von 0 hat.
    SCHLÜSSELAUSWAHL FÜR STANDARD-MODUS 2 Dieses Feld wird verwendet, um einen Schlüssel auszuwählen, der für den Standard-Verschlüsselungsmodus zu verwenden ist. Unter Verwendung des Standard-Verschlüsselungsmodus geschützte Speicherregionen werden beispielsweise unter Verwendung eines
    Verschlüsselungsalgorithmus und -schlüssels gleichmäßig geschützt.
    Wenn dieses Bitfeld auf 0 gesetzt wird, wird ein neuer Schlüssel erzeugt (z.B. nach einem Kalt- oder Warmstart).
    Wenn dieses Bitfeld auf 1 gesetzt wird, wird ein bestehender Schlüssel aus dem Speicher wiederhergestellt (z.B. nach Wiederaufnahme aus Standby) .
    SCHLÜSSEL FÜR STANDBY SICHERN 3 Dieses Feld wird verwendet, um zu spezifizieren, ob der für den Standard-Verschlüsselungsmodus verwendete Schlüssel gesichert werden sollte, um zu ermöglichen, dass der Schlüssel nach Wiederaufnahme aus Standby wiederhergestellt wird.
    Wenn dieses Bitfeld auf 1 gesetzt wird, wird der Schlüssel gesichert. Wenn dieses Bitfeld auf 0 gesetzt wird, wird der Schlüssel nicht gesichert.
    VERSCHLÜSSELUNGSALGORITHMUS FÜR STANDARD-MODUS 4:7 Dieses Feld kann verwendet werden, um den Verschlüsselungsalgorithmus zu spezifizieren, der für den Standard-Verschlüsselungsmodus zu verwenden ist.
    Der Wert dieses Felds identifiziert den Bitindex im Register ME_CAPABILITY_MSR, das dem ausgewählten Verschlüsselungsalgorithmus entspricht.
    Beispielsweise werden die unterstützten Verschlüsselungsalgorithmen durch Bits 0:15 des Registers ME_CAPABILITY_MSR identifiziert. Beispielsweise kann der Bitindex 0 des Registers ME_CAPABILITY_MSR einer AES-XTS-128 Bit-Verschlüsselung entsprechen, der Bitindex 1 kann der AES-XTS 256-Bit-Verschlüsselung entsprechen, usw.
    Wenn das vorliegende Feld einen Wert von 0 hat (binär 1000), wird der Verschlüsselungsalgorithmus ausgewählt, der dem Bitindex 0 des Registers ME_CAPABILITY_MSR entspricht, was die AES-XTS 128-Bit-Verschlüsselung wäre.
    Wenn das vorliegende Feld einen Wert von 1 hat (binär 0001), wird der Verschlüsselungs-
    algorithmus ausgewählt, der dem Bitindex 1 des Registers ME_CAPABILITY_MSR entspricht, was die AES-XTS 256-Bit-Verschlüsselung wäre.
    Der unter Verwendung dieses Felds ausgewählte Verschlüsselungsalgorithmus muss unterstützt werden (z.B. muss sein entsprechender Bitindex im Register ME_CAPABILITY_MSR auf 1 gesetzt werden).
    RESERVIERT 8:31 Diese Bits sind ungenutzt und/oder reserviert (z.B. reserviert für Funktionalitätserweiterungen und/oder andere Zwecke).
    # VON SCHLÜSSEL-ID-BITS (ME_KEYID_BITS) 32:35 Dieses Feld wird verwendet, um die Anzahl von Bits zu identifizieren, die für Schlüsselidentifikatoren verwendet werden.
    Spezifischer repräsentiert der Wert dieses Felds die Anzahl von Bits höherer Ordnung einer Speicheradresse, die als Schlüssel oder Domänenidentifikator zur Speicherverschlüsselung verwendet werden.
    Dieses Feld kann verwendet werden, um eine Anzahl von Bits für Schlüsselidentifikatoren zu spezifizieren, die kleiner ist als die maximale Anzahl verfügbarer Bits für Schlüsselidentifikatoren (wie durch das Feld ME_MAX_KEYID_ BITS (Bits 32:35) des Registers ME_CAPABILITY _MSR spezifiziert).
    Wenn das vorliegende Feld beispielsweise einen Wert von 8 hat (binär 1000), werden die 8 Bits höherer Ordnung einer Speicheradresse als Schlüsselidentifikator verwendet, wodurch insgesamt 256 Schlüssel (28 = 256) unterstützt werden.
    Der Wert dieses Felds ist 0, wenn die Mehrfachschlüssel-Speicherverschlüsselung gesperrt ist. Wenn die Mehrfachschlüssel-Speicherverschlüsselung gesperrt ist, jedoch eine Speicherverschlüsselung allgemein freigegeben ist (z.B. Bit 1 von ME_ACTIVATE_MSR wird gesetzt), wird dann nur der Standard-Verschlüsselungsmodus freigegeben (und der benutzerdefinierte oder Mehrfachschlüssel-Verschlüsselungsmodus wird gesperrt).
    RESERVIERT 36:47 Diese Bits sind ungenutzt und/oder reserviert (z.B. reserviert für Funktionalitätserweiterungen und/oder andere Zwecke).
    VERSCHLÜSSELUNGS-EINSCHRÄNKUNGS-BITMASKE 48:63 Dieses Feld kann verwendet werden, um die Verschlüsselungsalgorithmen einzuschränken, die für die Mehrfachschlüssel-Verschlüsselung verwendet werden können.
    Beispielsweise werden die unterstützten Verschlüsselungsalgorithmen im Register ME_CAPABILITY_MSR identifiziert (Bits 0:15). Die Bits im vorliegenden Feld entsprechen den Bits des Registers ME_CAPABILITY_MSR, die verwendet werden, um die unterstützten Verschlüsselungsalgorithmen zu identifizieren. Auf diese Weise kann eingeschränkt werden, dass ein unterstützter Verschlüsselungsalgorithmus für die Mehrfachschlüssel-Verschlüsselung verwendet wird, indem das entsprechende Bit im vorliegenden Feld gelöscht wird (oder alternativ dazu das entsprechende Bit gesetzt wird).
  • Die Speicherverschlüsselungs-Ausschlussregister (ME_EXCLUDE_BASE _MSR und ME_EXCLUDE_MASK_MSR) können verwendet werden, um bestimmte Speicherregionen vom kryptographischen Speicherschutz auszuschließen, der vom System 200 vorgesehen wird. Beispielsweise können in einigen Ausführungsformen die Ausschlussregister verwendet werden, um eine Basisspeicheradresse zu identifizieren, und die Speicherverschlüsselung kann dann für Speicheradressen umgangen werden, die mit der Basisadresse übereinstimmen (z.B. wobei gestattet wird, dass auf die ausgeschlossenen oder umgangegen Speicheradressen im Klartextmodus zugegriffen wird).
  • TABELLE 3 veranschaulicht ein Beispiel einer Ausführungsform des Speicherverschlüsselungs-Ausschlussmaskenregisters (ME_EXCLUDE_MASK_MSR), und TABELLE 4 veranschaulicht ein Beispiel einer Ausführungsform des Speicherverschlüsselungs-Ausschlussbasisregisters (ME_EXCLUDE_BASE_MSR). TABELLE 3: Speicherverschlüsselungs-Ausschlussmaskenregister (ME_EXCLUDE_MASK_MSR)
    FELD BIT-INDEX BESCHREIBUNG
    RESERVIERT 0:10 Diese Bits sind ungenutzt und/oder reserviert (z.B. reserviert für Funktionalitätserweiterungen und/oder andere Zwecke).
    AUSSCHLUSS FREIGEBEN 11 Dieses Feld kann verwendet werden, um Ausschlüsse von dem Speicherverschlüsselungsschutz freizugeben oder zu sperren.
    Wenn dieses Feld auf 0 gesetzt wird, werden keine Speicheradressen vom Verschlüsselungsschutz ausgeschlossen.
    Wenn dieses Feld auf 1 gesetzt wird, werden die Register ME_EXCLUDE_MASK_MSR und ME_EXCLUDE_BASE_MSR verwendet, um einen Speicherbereich zu definieren, der vom Speicherverschlüsselungsschutz ausgeschlossen wird.
    AUSSCHLUSSMASKE 12:(MAX ADDRESS SIZE-1) Dieses Feld wird verwendet, um die Bits einer Speicheradresse zu identifizieren, die mit der AUSSCHLUSSBASIS (definiert im Register ME_EXCLUDE_BASE_MSR) übereinstimmen müssen, um als ausgeschlossener Speicherbereich qualifiziert zu werden.
    Wenn beispielsweise auf eine bestimmte Speicheradresse zugegriffen wird, kann die Speicheradresse mit der AUSSCHLUSSMASKE einem AND unterzogen werden, und wenn das Ergebnis mit der AUSSCHLUSSBASIS übereinstimmt, wird die Speicherverschlüsselung für diese Speicheradresse umgangen.
    RESERVIERT (MAX ADDRESS SIZE): 63 Diese Bits sind ungenutzt und/oder reserviert (z.B. reserviert für Funktionalitätserweiterungen und/oder andere Zwecke).
    TABELLE 4: Speicherverschlüsselungs-Ausschlussbasisregister (ME_EXCLUDE_BASE_MSR)
    FELD BIT-INDEX BESCHREIBUNG
    RESERVIERT 0:11 Diese Bits sind ungenutzt und/oder reserviert (z.B. reserviert für Funktionalitätserweiterungen und/oder andere Zwecke).
    AUSSCHLUSSBASIS 12:(MAX ADDRESS SIZE-1) Dieses Feld wird verwendet, um die Basisspeicheradresse eines bestimmten Speicherbereichs zu identifizieren, um vom Speicherverschlüsselungsschutz ausgeschlossen zu werden.
    RESERVIERT (MAX ADDRESS SIZE): 63 Diese Bits sind ungenutzt und/oder reserviert (z.B. reserviert für Funktionalitätserweiterungen und/oder andere Zwecke).
  • In der veranschaulichten Ausführungsform hält die Speicherschutz-Steuereinheit 206 eine interne Domänenschlüsseltabelle 207, um geschützte Domänen zu identifizieren, die im System 200 konfiguriert wurden. Die Schlüsseltabelle 207 kann unter Verwendung irgendeiner Form eines Memory oder Speichers (z.B. RAM) implementiert werden und kann auch direkt auf der Speicherschutz-Steuereinheit 206, im Speicher 210 und/oder unter Verwendung einer anderen Speicherkomponente implementiert werden.
  • Die Einträge 207a-d der Domänenschlüsseltabelle 207 entsprechen jeweils einer anderen geschützten Domäne. Beispielsweise umfasst jeder Eintrag 207a-d einen Schlüssel oder Domänenidentifikator (ID), einen Schutzmodus und einen zugeordneten Verschlüsselungsschlüssel (wenn anwendbar). In einigen Ausführungsformen kann beispielsweise ein Schlüssel-ID die Bits höherer Ordnung der Speicheradressen repräsentieren, die innerhalb der zugeordneten geschützten Domäne liegen. Beispielsweise, wie oben diskutiert, spezifiziert das Feld ME_KEYID_BITS des Registers ME_ACTIVATE_MSR die Anzahl von Bits, die für Schlüssel-IDs verwendet werden. Im veranschaulichten Beispiel wird jeder Schlüssel-ID in der Domänenschlüsseltabelle 207 unter Verwendung von 5 Bits repräsentiert. Demgemäß deckt die geschützte Domäne, die einem gegebenen Schlüssel-ID zugeordnet ist, alle Speicheradressen ab, deren 5 Bits höchster Ordnung mit dem Schlüssel-ID übereinstimmen. In der veranschaulichten Ausführungsform wird der Schlüssel-ID als Feld in der Schlüsseltabelle 207 gespeichert, in alternative Ausführungsformen kann der Schlüssel-ID jedoch als Index in die Schlüsseltabelle 207 verwendet werden, anstatt direkt in der Schlüsseltabelle 207 gespeichert zu werden.
  • In einigen Ausführungsformen können mehrere Schutzmodi unterstützt werden, und jede geschützte Domäne kann unter Verwendung eines bestimmten Schutzmodus geschützt werden. Beispielsweise können in einigen Ausführungsformen die unterstützten Schutzmodi den Klartextmodus (z.B. unverschlüsselt), Vorgabe- oder Standard-Verschlüsselungsmodus (z.B. verschlüsselt unter Verwendung eines Vorgabe- oder Standard-Verschlüsselungsschlüssels) und/oder benutzerdefinierten Verschlüsselungsmodus (z.B. verschlüssedlt unter Verwendung eines einzigartigen Verschlüsselungsschlüssels) umfassen. Demgemäß kann die Schlüsseltabelle 207 den Schutzmodus identifizieren, der jeder geschützten Domäne oder dem Schlüssel-ID zugeordnet ist.
  • Beispielsweise weist im veranschaulichten Beispiel die Domänenschlüsseltabelle 207 vier Einträge auf. Der erste Eintrag identifiziert eine geschützte Domäne, die dem Schlüssel-ID 00000 entspricht (wobei somit alle Speicheradressen abgedeckt sind, die 00000 in den 5 Bits höchster Ordnung enthalten), und die im Standard-Verschlüsselungsmodus unter Verwendung des Schlüssels „ABC“ geschützt wird. Der zweite Eintrag identifiziert eine geschützte Domäne, die dem Schlüssel-ID 00001 entspricht (wobei somit alle Speicheradressen abgedeckt sind, die 00001 in den 5 Bits höchster Ordnung enthalten), die im Klartextmodus geschützt wird und die somit keinen zugeordneten Verschlüsselungsschlüssel aufweist. Der dritte Eintrag identifiziert eine geschützte Domäne, die dem Schlüssel-ID 00010 entspricht (wobei somit alle Speicheradressen abgedeckt sind, die 00010 in den 5 Bits höchster Ordnung enthalten), und die im benutzerdefinierten Verschlüsselungsmodus unter Verwendung des Schlüssels „XYZ“ geschützt wird. Der vierte Eintrag identifiziert eine geschützte Domäne, die dem Schlüssel-ID 00011 entspricht (wobei somit alle Speicheradressen abgedeckt sind, die 00011 in den 5 Bits höchster Ordnung enthalten), und die im Standard-Verschlüsselungsmodus unter Verwendung des Schlüssels „ABC“ geschützt wird. Wie durch diese Beispiele gezeigt, hat die Domäne, dieunter Verwendung des benutzerdefinierten Verschlüsselungsmodus geschützt wird, einen einzigartigen Schlüssel („XYZ“), haben die Domänen, die unter Verwendung des Standard-Verschlüsselungsmodus geschützt werden, einen Verschlüsselungsschlüssel gemeinsam („ABC“), und ist die Domäne, die im Klartextmodus geschützt wird, unverschlüsselt und hat somit keinen zugeordneten Schlüssel.
  • In einigen Ausführungsformen können geschützte Domänen unter Verwendung einer Prozessorinstruktion definiert und/oder konfiguriert werden, die vom Prozessor 202 implementiert wird, wie der „Plattformkonfigurierungs-“ (PCONFIG-) Instruktion, die in Verbindung mit 3 und in dieser gesamten Offenbarung beschrieben wird. Die PCONFIG-Instruktion kann beispielsweise verwendet werden, um eine geschützte Domäne zu definieren und/oder zu konfigurieren, indem ein neuer Eintrag in der Schlüsseltabelle 207 der Speicherschutz-Steuereinheit 206 programmiert wird - oder ein bestehender Eintrag modifiziert wird. Auf diese Weise können geschützte Domänen programmatisch (z.B. durch Management-Software) unter Verwendung der PCONFIG-Instruktion definiert und konfiguriert werden.
  • 3 veranschaulicht ein Beispiel 300 der Konfigurierung einer geschützten Domäne unter Verwendung einer Prozessorinstruktion. In einigen Ausführungsformen kann beispielsweise ein Prozessor eine Instruktion implementieren, die verwendet werden kann, um die geschützten Domänen zu konfigurieren, die einem Speicherschutzsystem zugeordnet sind. Beispielsweise könnte die Prozessorinstruktion eine „Plattformkonfigurierungs-“ (PCONFIG-) Instruktion, eine „Trusted Platform Action Supervisor-“ (TPAS-) Instruktion und/oder irgendein anderer geeigneter Typ einer Instruktion sein.
  • Eine „Plattformkonfigurierungs-“ (PCONFIG-) Instruktion kann beispielsweise verwendet werden, um eine geschützte Domäne zu definieren und/oder zu konfigurieren, indem ein neuer Eintrag in einer Domänenschlüsseltabelle einer Speicherschutz-Steuereinheit (z.B. Domänenschlüsseltabelle 207 der Speicherschutz-Steuereinheit 206 von 2) programmiert wird - oder ein bestehender Eintrag modifiziert wird. Auf diese Weise können geschützte Domänen programmatisch unter Verwendung der PCONFIG-Instruktion definiert und konfiguriert werden. Sobald eine geschützte Domäne unter Verwendung der PCONFIG-Instruktion konfiguriert wurde, werden Speicheradressen, die der geschützten Domäne zugeordnet sind, in der Weise geschützt, die von der Konfigurierung für die geschützte Domäne spezifiziert wird. Wenn beispielsweise ein Verschlüsselungsschutz verwendet wird, werden Daten verschlüsselt, bevor sie in Speicheradressen innerhalb der geschützten Domäne geschrieben werden, und Daten, die aus Speicheradressen innerhalb der geschützten Domäne gelesen werden, werden entschlüsselt, bevor sie zum anfordernden Prozessor zurückgeführt werden.
  • In einigen Ausführungsformen kann die PCONFIG-Instruktion eine bestimmte Privilegierungsebene oder einen Privilegierungsring erfordern. Beispielsweise kann der Prozessor eine Hierarchie von Privilegierungsebenen oder Privilegierungsringen unterstützen, um einen Zugriff auf bestimmte Ressourcen einzuschränken. In einigen Ausführungsformen kann der Privilegierungsring 0 die am wenigsten einschränkende Ebene sein, während Privilegierungsringe mit höheren Zahlen zunehmend einschränkender sein können. Beispielsweise kann der Privilegierungsring 0 für Systemanagement-Software verwendet werden (z.B. den Betriebssystemkernel und Vorrichtungstreiber), während der Privilegierungsring 3 für Benutzeranwendungen verwendet werden kann. Demgemäß kann in einigen Ausführungsformen die PCONFIG-Instruktion eine Ring-0-Instruktion sein, die nur von Software verwendet werden kann, die im höchsten Privilegierungsring ausgeführt wird (z.B. Management-Software, die zur Konfigurierung geschützter Domänen verwendet wird). Atlernativ dazu oder zusätzlich kann die PCONFIG-Instruktion eine Ring-3-Instruktion sein, die von einer beliebigen Benutzeranwendung verwendet werden kann, um ihre eigene geschützte Domäne zu konfigurieren.
  • 3 veranschaulicht ein Beispiel eines Aufrufverlaufs 300, der der PCONFIG-Instruktion zugeordnet ist. Das veranschaulichte Beispiel identifiziert den Aufrufverlauf 300 zwischen Software 310, die eine Domänenkonfigurierung unter Verwendung der PCONFIG-Instruktion vornimmt, und einer Speicherschutz-Steuereinheit 320. Die Speicherschutz-Steuereinheit 320 kann irgendeine Engine, Steuereinheit oder andere Komponente umfassen, die einen kryptographischen Speicherschutz bietet (z.B. die Speicherschutz-Steuereinheit 206 von 2). Die Software 310 kann beliebige Software umfassen, die verwendet wird, um die Domänen zu konfigurieren, die durch die Speicherschutz-Steuereinheit 320 geschützt werden, wie einen virtuellen Maschinenmanager und/oder andere Management-Software. Der veranschaulichte Aufrufverlauf beginnt damit, dass die Software 310 einen Schlüsselprogrammierungsmodus zum Programmieren eines Verschlüsselungsschlüssels für eine bestimmte Domäne auswählt (Aufruf 302a). Beispielsweise, wie nächstehend weiter diskutiert, kann die Software 310 direkt einen Schlüssel für die Domäne spezifizieren oder kann anfordern, dass ein Zufallsschlüssel generiert wird. Dann kann die Software 310 die PCONFIG-Prozessorinstruktion abrufen, um die Domänenkonfigurierung vorzunehmen (Aufruf 302b). Wenn die PCONFIG-Instruktion abgerufen wird, programmiert die Speicherschutz-Steuereinheit 320 den Schlüssel und Schutzmodus für die bestimmte Domäne (Aufruf 302c). Die Speicherschutz-Steuereinheit 320 führt dann einen Statuscode zur Software 310 zurück (Aufruf 302d), und dann wird der Statuscode von der Software 310 verarbeitet (Aufruf 302e).
  • In einigen Ausführungsformen kann die PCONFIG-Instruktion verschiedene Blattfunktionen zur Konfigurierung und Verwaltung geschützter Domänen unterstützen. Wenn die PCONFIG-Instruktion ausgeführt wird, kann beispielsweise die bestimmte Blattfunktion, die abzurufen ist, in einem Hardware-Register (z.B. dem Register EAX) spezifiziert werden. In einigen Ausführungsformen können auch die Parameter, die von einer bestimmten Blattfunktion verwendet werden, in Hardware-Registern (z.B. den Registern RBX/RCX/RDX) spezifiziert werden.
  • TABELLE 5 veranschaulicht ein Beispiel von PCONFIG-Blattverschlüsselungen, die verwendet werden könnten, um eine Unterstützung für mehrfache Blattfunktionen zu ermöglichen. Obwohl nur eine Blattfunktion definiert wird (das Blatt KEY_PROGRAM), können zusätzliche Blattfunktionen unter Verwendung der reservierten Blattcodierungen definiert werden, um die Funktionalität der PCONFIG-Instruktion zu erweitern. TABELLE 5: PCONFIG-Blattfunktionscodierungen
    BLATT CODIERUNG BESCHREIBUNG
    KEY_PROGRAM 0x00000000 Diese Blattfunktion wird verwendet, um den Schlüssel zu programmieren, der einer Domäne zugeordnet ist.
    SONSTIGE 0x00000001 - 0xFFFFFFFF Zusätzliche Blattfunktionen können unter Verwendung dieser reservierten Blattcodierungen für zukünftige Erweiterungen der Funktionalität der PCONFIG-Instruktion definiert werden.
  • Die Schlüsselprogramm-Blattfunktion (KEY_PROGRAM) der PCONFIG-Instruktion kann verwendet werden, um einen Schlüssel für eine geschützte Domäne zu programmieren. In einigen Ausführungsformen können die Parameter, die von der Schlüsselprogramm-Blattfunktion verwendet werden, in einer Schlüsselprogrammstruktur (KEY_PROGRAM_STRUCT) spezifiziert werden, und die Adresse der Schlüsselprogrammstruktur kann in einem Hardware-Register (z.B. dem Register RBX) spezifiziert werden. TABELLE 6 veranschaulicht ein Beispiel einer Ausführungsform der Schlüsselprogrammstruktur (KEY_PROGRAM_STRUCT). TABELLE 6: Schlüsselprogrammstruktur (KEY_PROGRAM_STRUCT)
    FELD GRÖSSE (Bytes) BESCHREIBUNG
    KEYID 1 Dieses Feld identifiziert den Schlüssel-ID einer Domäne, die programmiert wird.
    KEYID_CMD 1 Dieses Feld identifiziert einen Schlüsselprogrammierungsbefehl.
    KEYID_ENC_ALG 2 Dieses Feld kann verwendet werden, um einen Verschlüsselungsalgorithmus auszuwählen, der für die Domäne zu verwenden ist (auf der Basis der verfügbaren Verschlüsselungsalgorithmen).
    KEYID_KEY 16 Dieses Feld kann einen Verschlüsselungsschlüssel für die Domäne identifizieren.
    KEYID_TWEAK_KEY 16 Dieses Feld kann einen Veränderungsschlüsselwert identifizieren.
  • Wie in TABELE 6 gezeigt, identifiziert die Schlüsselprogrammstruktur den Schlüssel-ID der bestimmten Domäne, die programmiert wird, und sie spezifiziert auch einen Schlüsselprogrammierbefehl. In einigen Ausführungsformen kann beispielsweise die Schlüsselprogramm-Blattfunktion mehrere Schlüsselprogrammierbefehle unterstützen, und der gewünschte Befehl kann in der Schlüsselprogrammstruktur spezifiziert werden. Außerdem kann in einigen Ausführungsformen die Schlüsselprogrammstruktur auch ein reserviertes Feld oder Felder umfassen, das oder die für anschließende Erweiterungen für die Schlüsselprogramm-Blattfunktion verwendet werden kann oder können.
  • TABELLE 7 veranschaulicht Beispiele von Schlüsselprogrammierbefehlen, die von der Schlüsselprogramm-Blattfunktion unterstützt werden können. TABELLE 7: Schlüsselprogrammierbefehle
    SCHLÜSSELDOMÄNEN-(KD-) BEFEHL CODIERUNG BESCHREIBUNG
    Schlüssel direkt setzen (KD_SET_KEY_DIRECT) 0 Dieser Befehl setzt den Schlüssel für eine Domäne direkt unter Verwendung des Schlüssels, der in der Schlüsselprogrammstruktur spezifiziert wird (KEY_ PROGRAM_STRUCT). Der Schlüssel wird von der Software geliefert, die diesen Schlüsselprogrammierbefehl initiiert.
    Dann wird die Domäne im benutzerdefinierten Verschlüsselungsmodus geschützt.
    Schlüssel zufällig setzen (KD_SET_KEY_RANDOM) 1 Dieser Befehl setzt den Schlüssel für eine Domäne unter Verwendung eines zufällig erzeugten Schlüssels.
    Beispielsweise kann ein Schlüssel zufällig von einem Prozessor und/oder einem Zufallszahlengenerator generiert werden und kann somit der Software, die den Schlüsselprogrammierbefehl initiiert, nicht bekannt sein (oder von dieser gemeinsam genutzt werden).
    Dann wird die Domäne im benutzerdefinierten Verschlüsselungsmodus geschützt.
    Schlüssel löschen (KD_CLEAR_KEY) 2 Dieser Befehl löscht den Schlüssel, der zuvor für eine Domäne gesetzt wurde.
    Dann wird die Domäne im Standard-Verschlüsselungsmodus geschützt.
    Kein Schlüssel (KD_NO_KEY) 3 Dieser Befehl sperrt die Speicherverschlüsselung für eine Domäne.
    Dann wird die Domäne im Klartextmodus geschützt.
  • Nachdem die Schlüsselprogramm-Blattfunktion ausgeführt wird, kann ein Rückführwert oder Statuscode in einem Hardware-Register spezifiziert werden, um anzuzeigen, ob die Schlüsselprogrammfunktion erfolgreich war. TABELLE 8 veranschaulicht Beispiele der Statuscodes, die von der Schlüsselprogramm-Blattfunktion zurückgeführt werden können. TABELLE 8: Statuscodes, die von einer Schlüsselprogramm-Blattfunktion zurückgeführt werden (KEY_PROGRAM)
    STATUSCODE CODIERUNG BESCHREIBUNG
    PROG_SUCCESS 0 Die Domäne wird erfolgreich programmiert.
    INVALID_PROG_CMD 1 Der Schlüsselprogrammierbefehl ist ungültig.
    ENTROPY_ERROR 2 Die Entropie eines zufällig generierten Schlüssels ist unzureichend.
    INVALID_KEYID 3 Der Domänen-Schlüssel-ID ist ungültig.
    INVALID_ENC_ALG 4 Ein ungültiger Verschlüsselungsalgorithmus wird ausgewählt.
    DEVICE_BUSY 5 Eine Verriegelung für die Domänenschlüsseltabelle kann nicht erhalten werden.
  • Obwohl die veranschaulichte Ausführungsform die PCONFIG-Prozessorinstruktion verwendet, um eine Domänenkonfigurierung vorzunehmen, können andere Ausführungsformen alternative und/oder zusätzliche Ansätze für eine Domänenkonfigurierung verwenden. In einigen Ausführungsformen kann die Domänenkonfigurierung beispielsweise unter Verwendung von Hardware-Registern vorgenommen werden. Beispielsweise kann ein PCONFIG-modellspezifisches Register (MSR) implementiert werden, um die Domänenkonfigurierung vorzunehmen, wobei gestattet wird, dass Software die PCONFIG-Operation abruft, indem in das PCONFIG MSR geschrieben wird (z.B. Auführen einer WRMSR-Instruktion, wobei der Index für das PCONFIG MSR in ein Register, wie das Register ECX, geführt wird). Außerdem können bestimmte Parameter für die PCONFIG-Operation (und ihre zugeordneten Blattfunktionen und Befehle) in Hardware-Register geführt werden. Beispielsweise kann die Adresse der Schlüsselprogrammstruktur (KEY_PROGRAM_STRUCT) in ein Hardware-Register, wie das Register EDX, Register EAX oder beide von diesen Registern (z.B. für 64-Bit-Speicheradressen), geführt werden. Dann kann die PCONFIG-Operation auf ähnliche Weise wie oben beschrieben vorgenommen werden.
  • Außerdem kann in einigen Ausführungsformen die PCONFIG-Operation Wrapped Blobs zur Domänenschlüsselprogrammierung verwenden. Auf diese Weise können Domänenschlüssel programmiert werden, ohne die Schlüssel Management-Software bekanntzugeben. In einigen Ausführungsformen können beispielsweise zusätzliche PCONFIG-Blattfunktionen implementiert werden, um zu ermöglichen, dass Schlüssel einem Wrapping unterzogen und dann anschließend in der Speicherschutz-Steuereinheit 320 programmiert werden, nachdem sie einem Unwrapping unterzogen werden.
  • Ein Beispiel eines Pseudocodes zur Implementierung der PCONFIG-Instruktion wird nachstehend angegeben:

 // #UD (undefined opcode exception) if PCONFIG is not enumerated or in VM86, or
 CPL>0
 if (CPUID.7.0:ECX[PCONFIG] == 0 OR RFLAGS.VM == 1 OR CPL > 0) #UD;
 if (in VMX non-root mode)
 {
  if (VMCS.PCONFIG)
  {
  if ((EAX > 62 AND VMCS.PCONFIG_EXITING[63] ==1) OR
  {(EAX < 63 AND VMCS.PCONFIG_EXITING[EAX] == 1))
  Set VMCS.EXIT_REASON = PCONFIG; //No Exit qualification
  Deliver VMEXIT;
  }
  else
  {
  }#UD}
  }
  // #GP(0) (general protection fault) for an unsupported leaf
  if(EAX != 0) #GP(0)
  // KEY_PROGRAM leaf flow
  if (EAX == 0)
  {
  //#GP(0) if ME_ACTIVATE_MSR is not locked or does not enable memory
  encryption (ME) or multiple keys are not enabled
  if (ME_ACTIVATE_MSR.LOCK != 1 OR ME_ACTIVATE_MSR.ENABLE != 1 OR
  ME_ACTIVATE_MSR.ME_KEYID_BITS == 0) #GP(0)
    // Check KEY_PROGRAM_STRUCT is 256B aligned
    if(DS:RBX is not 256B aligned) #GP(0);
    // Check that KEY_PROGRAM_STRUCT is read accessible
    <<DS: RBX should be read accessible>>
    // Copy KEY_PROGRAM_STRUCT to a temporary variable
    TMP_KEY_PROGRAM_STRUCT = DS:RBX.*;
    // RSVD field check
    if(TMP_KEY_PROGRAM_STRUCT.RSVD != 0) #GP(0);
    if(TMP_KEY_PROGRAM STRUCT.USUPP_KEYID_KEY.BYTES[63:16] != 0)
    #GP(0);
    if(TMP_KEY_PROGRAM_STRUCT.USUPP_KEYID_TWEAK_KEY.BYTES[63:16] !=
    0)
    #GP(0);
    // Check for a valid command
    if(TMP_KEY_PROGRAM_STRUCT. KEYID_CMD.COMMAND is not a valid command)
    {
    RFLAGS.ZF = 1;
    RAX = INVALID_PROG_CMD;
         goto EXIT;
         }
         // Check that the KEYID being operated upon is a valid KEYID
         if(TMP_KEY_PROGRAM_STRUCT.KEYID >
         2^ME_ACTIVATE_MSR.ME_KEYID_BITS - 1
         OR TMP_KEY_PROGRAM_STRUCT.KEYID >
         ME_CAPABILITY_MSR.ME_MAX_KEYS
         OR TMP_KEY_PROGRAM_STRUCT.KEYID == 0)
         {
         RFLAGS.ZF = 1;
         RAX = INVALID_KEYID;
         } goto EXIT;
         // Check that only one algorithm is requested for the KEYID domain and it is one of
         the activated algorithms
         if(NUM_BITS(TMP_KEY_PROGRAM_STRUCT.KEYID_CMD.ENC_ALG) != 1 ||
         (TMP_KEY_PROGRAM_STRUCT.KEYID_CMD.ENC_ALG &
         ME_ACTIVATE_MSR.ME_ALG_ENABLE ==0))
         {
         RFLAGS.ZF = 1;
         RAX = INVALID_ENC_ALG;
         goto EXIT;
         }
         // Try to acquire exclusive lock
         if (NOT KEY_TABLE_LOCK.ACQUIRE(WRITE))
         {
    // PCONFIG failure

     RFLAGS.ZF = 1;
     RAX = DEVICE_BUSY;
     } goto EXIT;
     // Lock is acquired
     switch(TMP_KEY_PROGRAM_STRUCT.KEYID_CMD.COMMAND)
     {
     case KD_SET_KEY_DIRECT:
     <<Write
     KEY=TMP_KEY_PROGRAM_STRUCT.USUPP_KEYID_KEY,
     TWEAK_KEY=TMP_KEY_PROGRAM_STRUCT.USUPP_KEYID_TWEAK_KEY,
     KEY_CONTROL=2'b01,
     to ME Key table at index TMP_KEY_PROGRAM_STRUCT.KEYID
     »
     // Do a read to guarantee completion of previous writes
     <<Read KEY_CONTROL bits at index TMP_KEY_PROGRAM_STRUCT.KEYID>>
     break;
     case KD_SET_KEY_RANDOM:
     TMP_RND_KEY = «Generate a random key using RDSEED»
          if (NOT ENOUGH ENTROPY)
          {
          RFLAGS.ZF = 1;
               RAX = ENTROPY_ERROR;
               goto EXIT;
               }
               TMP_RND_TWEAK_KEY = <<Generate a random key using RDSEED>>
          if (NOT ENOUGH ENTROPY)
          {
          RFLAGS.ZF = 1;
               RAX = ENTROPY_ERROR;
               goto EXIT;
               }
               // Mix user supplied entropy to the data key and tweak key
               TMP_RND_KEY = TMP_RND_KEY XOR
               TMP_KEY_PROGRAM_STRUCT.USUPP_KEYID_KEY.BYTES[15:0];
               TMP_RND_TWEAK_KEY = TMP_RND_TWEAK_KEY XOR
               TMP_KEY_PROGRAM_STRUCT.USUPP_KEYID_TWEAK_KEY.BYTES[15:0];
               <<Write
               KEY=TMP_RND_KEY,
               TWEAK_KEY=TMP_RND_TWEAK_KEY,
               KEY_CONTROL=2'b01,
               to ME_KEY_TABLE at index TMP_KEY_PROGRAM_STRUCT.KEYID
               >>
               // Do a read to guarantee completion of previous writes
               «Read KEY_CONTROL bits at index TMP_KEY_PROGRAM_STRUCT.KEYID>>
     break;
     case KD_CLEAR_KEY:
          <<Write
          KEY='0,
          TWEAK_KEY ='0,
          KEY_CONTROL = 2'b00,
          to ME_KEY_TABLE at index TMP_KEY_PROGRAM_STRUCT.KEYID
          »
          // Do a read to guarantee completion of previous writes
          <<Read KEY_CONTROL bits at index TMP_KEY_PROGRAM_STRUCT.KEYID>>
     break;
     case KD_NO_KEY:
     <<Write
     KEY_CONTROL=2'b11,
     to ME Key table at index TMP_KEY_PROGRAM_STRUCT.KEYID
     »
     // Do a read to guarantee completion of previous writes
     <<Read KEY_CONTROL bits at index TMP_KEY_PROGRAM_STRUCT.KEYID>>
     } break;
     RAX = 0;
     RFLAGS.ZF = 0;
     // Release Lock
     KEY_TABLE_LOCK(RELEASE);
     EXIT:
     RFLAGS.CF=0;
     RFLAGS.PF=0;
     RFLAGS.AF=0;
     RFLAGS.OF=0;
     RFLAGS.SF=0;
     }
  • 4 veranschaulicht eine Zustandsmaschine 400 für ein Beispiel einer Ausführungsform eines kryptographischen Speicherschutzes. Die Zustandsmaschine 400 veranschaulicht den Lebenszyklus einer Domäne, die unter Verwendung eines kryptographischen Speicherschutzes geschützt wird. Beispielsweise umfasst die Zustandsmaschine 400 drei Schutzzustände für eine bestimmte Domäne: den ungeschützten Zustand 401, den Standard-Schutzzustand 402 und den benutzerdefinierten Schutzustand 403. Die Zustandsmaschine 400 geht zwischen diesen Zuständen auf der Basis von Schlüsselprogrammierbefehlen hin und her. Beispielsweise können in einigen Ausführungsformen die Schlüsselprogrammierbefehle, die dem Schlüsselprogrammblatt der PCONFIG-Instruktion zugeordnet sind (z.B. wie in Verbindung mit 3 und TABELLE 7 beschrieben), verwendet werden, um zwischen Zuständen der Zustandsmaschine 400 hin und her zu gehen.
  • Nach dem Hochfahren oder Zurücksetzen des Systems ist der Initialzustand der Zustandsmaschine 400 für eine bestimmte Domäne der ungeschützte Zustand 401, wo die Domäne im Klartext- (z.B. unverschlüsselten) Modus geschützt wird.
  • Sobald die Speicherverschlüsselung für das System aktiviert ist (z.B. unter Verwendung des Speicherverschlüsselungs-Aktivierungsregisters (ME_ACTIVATE_MSR) von TABELLE 2), geht die Zustandsmaschine 400 in den Standard-Schutzustand 402 über, wo die Domäne im Standard-Verschlüsselungsmodus (z.B. unter Verwendung eines Standard- oder globalen Verschlüsselungsschlüssels) geschützt wird.
  • Wenn ein Befehl „Schlüssel setzen“ (z.B. KD_SET_KEY_DIRECT oder KD_SET_KEY_RANDOM von TABELLE 7) während des ungeschützten Zustands 401 oder des Standard-Schutzustands 402 erteilt wird, geht die Zustandsmaschine 400 in den benutzerdefinierten Schutzzustand 403 über, wo die Domäne unter Verwendung eines einzigartigen Verschlüsselungsschlüssels geschützt wird. Wenn ein weiterer Befehl „Schlüssel setzen“ (z.B. KD_SET_KEY_DIRECT oder KD_SET_KEY_ RANDOM von TABELLE 7) während des benutzerdefinierten Schutzzustands 403 erteilt wird, wird ein neuer Schlüssel für die Domäne programmiert, und die Zustandsmaschine 400 bleibt im benutzerdefinierten Schutzzustand 403.
  • Wenn ein Befehl „Schlüssel löschen“ (z.B. KD_CLEAR_KEY von TABELLE 7) während des benutzerdefinierten Schutzzustands 403 erteilt wird, wird der einzigartige Verschlüsselungsschlüssel für die Domäne gelöscht, und die Zustandsmaschine 400 geht in den Standard-Schutzzustand 402 zurück, wo die Domäne im Standard-Verschlüsselungsmodus (z.B. unter Verwendung eines Standard- oder globalen Verschlüsselungsschlüssels) geschützt wird.
  • Wenn ein Befehl „kein Schlüssel“ (z.B. KD_NO_KEY von TABELLE 7) während des Standard-Schutzzustands 402 oder des benutzerdefinierten Schutzzustands 403 erteilt wird, geht die Zustandsmaschine 400 in den ungeschützten Zustand 401 zurück, wo die Domäne im Klartext- (z.B. unverschlüsselten) Modus geschützt wird.
  • 5 veranschaulicht ein Flussdiagramm 500 für ein Beispiel einer Ausführungsform eines kryptographischen Speicherschutzes. Das Flussdiagramm 500 kann in einigen Ausführungsformen unter Verwendung der Ausführungsformen und Funktionalität implementiert werden, die in dieser gesamten Offenbarung beschrieben werden.
  • Das Flussdiagramm kann bei Block 502 beginnen, indem eine Speicherzugriffsoperation für einen bestimmten Speicherort identifiziert wird. Die Speicherzugriffsoperation könnte beispielsweise eines Leseoperation sein, um Daten aus dem Speicherort zu lesen, oder eine Schreiboperation, um Daten in den Speicherort zu schreiben.
  • Dann kann das Flussdiagramm zu Block 504 weitergehen, um zu bestimmen, ob der Speicherort einer geschützten Domäne zugeordnet ist. Eine „Domäne“ kann beispielsweise als Sammlung von Ressourcen angesehen werden, die einer bestimmten Arbeitslast oder einem Ausführungskontext zugeordnet sind, was beliebige Speicherregionen umfassen kann, die der Arbeitslast zugeordnete Daten enthalten. Außerdem kann es in einigen Fällen eine Vielzahl von Arbeitslasten geben, die verschiedenen Mietern, Benutzern und/oder Kunden (z.B. Kunden eines Cloud-Serviceanbieters) zugeordnet sind. Demgemäß können geschützte Domänen definiert werden, um einen Speicherverschlüsselungsschutz für die verschiedenen Arbeitslasten zu bieten. Außerdem kann jede geschützte Domäne unter Verwendung verschiedener Schutzmodi konfiguriert werden, umfassend den Klartextmodus (z.B. unverschlüsselt), Vorgabe- oder Standard-Verschlüsselungsmodus (z.B. verschlüsselt unter Verwendung eines Vorgabe- oder Standard-Verschlüsselungsschlüssels) und/oder benutzerdefinierten Verschlüsselungsmodus (z.B. verschlüsselt unter Verwendung eines einzigartigen Verschlüsselungsschlüssels). Auf diese Weise kann eine kryptographische Isolierung für Arbeitslasten verschiedener Mieter, Benutzer und/oder Kunden erzielt werden. In einigen Ausführungsformen kann beispielsweise eine geschützte Domäne unter Verwendung eines Befehls, einer Instruktion und/oder eines Registers erzeugt und/oder konfiguriert werden, um einen Schutzmodus, Verschlüsselungstyp und/oder Verschlüsselungsschlüssel für die geschützte Domäne zu identifizieren.
  • Wenn in Block 504 bestimmt wird, dass der Speicherort NICHT einer geschützten Domäne zugeordnet ist (und/oder unter Verwendung des Klartextmodus geschützt wird), kann das Flussdiagramm dann zu Block 512 weitergehen, um die Speicherzugriffsoperation vorzunehmen (z.B. wie sie normalerweise vorgenommen werden würde).
  • Wenn in Block 504 bestimmt wird, dass der Speicherort einer geschützten Domäne zugeordnet ist (und/oder unter Verwendung des Standard- oder benutzerdefinierten Verschlüsselungsmodus geschützt wird), kann das Flussdiagramm dann zu Block 506 weitergehen, um einen Verschlüsselungsschlüssel zu identifizieren, der der geschützten Domäne zugeordnet ist. In einigen Ausführungsformen kann auch ein Verschlüsselungstyp, der der geschützten Domäne zugeordnet ist, identifiziert werden.
  • Dann kann das Flussdiagramm zu Block 508 weitergehen, um eine Kryptographieoperation (z.B. eine Verschlüsselungs- und/oder Entschlüsselungsoperation) an Daten, die dem Speicherort zugeordnet sind, unter Verwendung des Verschlüsselungsschlüssels für die geschützte Domäne vorzunehmen. Beispielsweise können für eine Leseoperation Daten aus dem Speicherort erhalten werden und können dann unter Verwendung des identifizierten Verschlüsselungsschlüssel entschlüsselt werden. Für eine Schreiboperation können Daten, die in den Speicherort zu schreiben sind, zuerst unter Verwendung des identifizierten Verschlüsselungsschlüssels verschlüsselt werden.
  • Dann kann das Flussdiagramm zu Block 510 weitergehen, um ein Ergebnis der Kryptographieoperation (z.B. einer Verschlüsselungs- und/oder Entschlüsselungsoperation) zurückzuführen, wobei das Ergebnis der Kryptographieoperation für die Speicherzugriffsoperation zu verwenden ist. Beispielsweise werden entschlüsselte Daten für eine Leseoperation zurückgeführt, und verschlüsselte Daten werden für eine Schreiboperation zurückgeführt. Dann kann das Flussdiagramm zu Block 512 weitergehen, um die Speicherzugriffsoperation (z.B. unter Verwendung des Ergebnisses der Kryptographieoperation) vorzunehmen.
  • An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten und/oder bestimmte Blöcke können wiederholt werden. Beispielsweise kann in einigen Ausführungsformen das Flussdiagrmm bei Block 502 neu starten, um die Verarbeitung zusätzlicher Speicherzugriffsoperationen fortzusetzen.
  • Beispiele von Rechnerarchitekturen
  • 6 bis 10 veranschaulichen Beispiele von Computerarchitekturen, die gemäß hier geoffenbarten Ausführungsformen verwendet werden können. Beispielsweise können in verschiedenen Ausführungsformen die Computerarchitekturen von 6 bis 10 in Verbindung mit der kryptographischen Speicherschutz-Engine, Architektur und Funktionaliltät, die in dieser gesamten Offenbarung beschrieben werden, verwendet werden, und/oder können verwendet werden, um diese zu implementieren. Andere Computerarchitekturen, Systemausbildungen und Konfigurierungen, die für Laptops, Desktops, Hand-PCs, Personal Digital Assistants, technische Arbeitsstationen, Server, Netzvorrichtungen, Netz-Hubs, Schalter, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Graphikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxes, Mikrosteuereinheiten, Mobiltelephone, tragbare Media Player, Hand-Vorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, sind auch geeignet. Im Allgemeinen sind viele verschiedene Systeme oder elektronische Vorrichtungen, die einen Prozessor und/oder andere Ausführungslogik enthalten können, wie hier geoffenbart, allgemein geeignet.
  • 6A ist ein Blockbild, das sowohl ein Beispiel einer geordneten Pipeline als auch ein Beispiel einer Registerumbenennungs-, ungeordneten Ausgabe/Ausführungs-Pipeline gemäß Ausführungsformen der Erfindung veranschaulicht. 6B ist ein Blockbild, das sowohl ein Beispiel einer Ausführungsform eines geordneten Architekturkerns als auch ein Beispiel eines Registerumbenennungs-, ungeordneten Ausgabe/Ausführungs-Architekturkerns veranschaulicht, der in einen Prozessor gemäß Ausführungsformen der Erfindung einzuschließen ist. Die durchgehend umrahmten Kästchen in 6A-B veranschaulichen die geordnete Pipeline und den geordneten Kern, während das optionale Hinzufügen der Kästchen mit gestrichelten Linien die/den Registerumbenennungs-, ungeordnete/n Ausgabe/Ausführungs-Pipeline und -Kern veranschaulicht. Angesichts dessen, dass der geordnete Aspekt ein Subsatz des ungeordneten Aspekts ist, wird der ungeordnete Aspekt beschrieben.
  • In 6A umfasst eine Prozessor-Pipeline 600 eine Abrufstufe 602, eine Längendecodierstufe 604, eine Decodierstufe 606, eine Zuordnungsstufe 608, eine Umbenennungsstufe 610, eine Planungsstufe (auch als Sende- oder Ausgabestufe bekannt) 612, eine Registerlese/Speicherlesestufe 614, eine Ausführungsstufe 616, eine Rückschreib/Speicherschreibstufe 618, eine Ausnahmebehandlungsstufe 622 und eine Festlegungsstufe 624.
  • 6B zeigt einen Prozessorkern 690, der eine Frontend-Einheit 630 aufweist, die mit einer Ausführungs-Engine-Einheit 650 gekoppelt ist, und beide sind mit einer Speichereinheit 670 gekoppelt. Der Kern 690 kann ein Rechnerkern mit reduziertem Instruktionssatz (RISC), ein Rechnerkern mit komplexem Instruktionssatz (CISC), ein Kern mit sehr langem Instruktionswort (VLIW) oder ein hybrider oder alternativer Kerntyp sein. Als noch weitere Option kann der Kern 690 ein Spezialkern sein, wie beispielsweise ein Netz- oder Kommunikationskern, eine Kompressions-Engine, ein Coprozessorkern, ein Universalrechner-Graphikverarbeitungseinheit- (GPGPU-) Kern, ein Graphikkern oder dgl.
  • Die Frontend-Einheit 630 umfasst eine Verzweigungsvorhersageeinheit 632, die mit einer Instruktions-Cache-Einheit 634 gekoppelt ist, welche mit einem Instruktionsübersetzungs-Lookaside-Puffer (TLB) 636 gekoppelt ist, der mit einer Instruktionsabrufeinheit 638 gekoppelt ist, die mit einer Decodiereinheit 640 gekoppelt ist. Die Decodiereinheit 640 (oder der Decoder) kann Instruktionen decodieren und als Ausgang eine oder mehrere Mikrooperationen, Mikroeintrittspunkte, Mikroinstruktionen, andere Instruktionen oder andere Steuersignale generieren, die aus den ursprünglichen Instruktionen decodiert werden, oder diese auf andere Weise reflektieren, oder von diesen abgeleitet sind. Die Decodiereinheit 640 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele geeigneter Mechanismen umfassen, sind jedoch nicht beschränkt auf Nachschlagtabellen, Hardware-Implementierungen, programmierbare Logik-Arrays (PLAs), Mikrocode-Nurlesespeicher (ROMs) usw. In einer Ausführungsform enthält der Kern 690 einen Mikrocode-ROM oder ein anderes Medium, das einen Mikrocode für bestimmte Makroinstruktionen speichert (z.B. in der Decodiereinheit 640 oder ansonsten innerhalb der Frontend-Einheit 630). Die Decodiereinheit 640 ist mit einer Umbenennungs/Zuordnereinheit 652 in der Ausführungs-Engine-Einheit 650 gekoppelt.
  • Die Auführungs-Engine-Einheit 650 umfasst die Umbenennungs/Zuordnereinheit 652, die mit einer Stillegungseinheit 654 und einem Satz einer oder mehrerer Scheduler-Einheiten 656 gekoppelt ist. Die Scheduler-Einheit(en) 656 repräsentiert (repräsentieren) eine beliebige Anzahl verschiedener Scheduler, umfassend Reservierungsstationen, ein zentrales Instruktionsfenster usw. Die Scheduler-Einheit(en) 656 ist (sind) mit der (den) physischen Registerdateieinheit(en) 658 gekoppelt. Jede der physischen Registerdateieinheit(en) 658 repräsentiert eine oder mehrere physische Registerdateien, von denen verschiedene einen oder mehrere unterschiedliche Datentypen speichern, wie Skalarganzzahlen, skalare Gleitkommawerte, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma, Status (z.B. ein Instruktionszeiger, der die Adresse der nächsten auszuführenden Instruktion ist) usw. In einer Ausführungsform umfasst die physische Registerdateieinheit(en) 658 eine Vektorregistereinheit, eine Schreibmasken-Registereinheit und eine skalare Registereinheit. Diese Registereinheiten können Architektur-Vektorregister, Vektormaskenregister und Universalregister bereitstellen. Die physikalische Registerdateieinheit(en) 658 wird von der Stilllegungseinheit 654 überlappt, um verschiedene Wege zu veranschaulichen, auf denen eine Registerumbenennung und ungeordnete Ausführung implementiert werden können (z.B. unter Verwendung eines oder mehrerer Umordnungspuffer und einer oder mehrerer Stilllegungsregisterdateien; unter Verwendung einer oder mehrerer Zukunftsdateien, eines oder mehrerer Verlaufspuffer und einer oder mehrerer Stilllegungsregisterdateien; unter Verwendung einer oder mehrerer Registermaps und eines Pools von Registern usw.). Die Stilllegungseinheit 654 und die physische(n) Registerdateieinheit(en) 658 sind mit dem (den) Ausführungs-Clustern(n) 660 gekoppelt. Der (die) Ausführungscluster 660 umfasst einen Satz einer oder mehrerer Ausführungseinheiten 762 und einen Satz einer oder mehrerer Speicherzugriffseinheiten 664. Die Ausführungseinheiten 662 können verschiedene Operationen (z.B. Verschiebungen, Addition, Subtraktion, Multiplikation) vornehmen und arbeiten an verschiedenen Datentypen (z.B. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma). Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten aufweisen können, die für spezifische Funktionen oder Sätze von Funktionen dediziert sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten aufweisen, die alle alle Funktionen vornehmen. Die Scheduler-Einheit(en) 656, physische(n) Registerdateieinheit(en) 658 und Ausführungscluster 660 sind als möglicherweise mehrfach gezeigt, da bestimmte Ausführungsformen getrennte Pipelines für bestimmte Typen von Daten/Operationen erzeugen (z.B. skalare Ganzzahl-Pipeline, skalare Gleitkomma/gepackte Ganzzahl/gepackte Gleitkomma/Vektorganzzahl/Vektorgleitkomma-Pipeline, und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Scheduler-Einheit haben, physische Registerdateieinheit(en), und/oder Ausführungs-Cluster - und im Fall einer getrennten Speicherzugriffs-Pipeline werden bestimmte Ausführungsformen implementiert, in denen nur der Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 664 aufweist). Es ist auch klar, dass, wo getrennte Pipelines verwendet werden, eine oder mehrere dieser Pipelines ungeordnete Ausgabe/Ausführung und der Rest geordnet sein können.
  • Der Satz von Speicherzugriffseinheiten 664 ist mit der Speichereinheit 670 gekoppelt, welche eine Daten-TLB-Einheit 672 aufweist, die mit einer Daten-Cache-Einheit 674 gekoppelt ist, welche mit einer Level 2- (L2-) Cache-Einheit 676 gekoppelt ist. In einem Beispiel einer Ausführungsform können die Speicherzugriffseinheiten 664 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit aufweisen, von denen jede mit der Daten-TLB-Einheit 672 in der Speichereinheit 670 gekoppelt ist. Die Instruktions-Cache-Einheit 634 ist ferner mit einer Level 2- (L2-) Cache-Einheit 676 in der Speichereinheit 670 gekoppelt. Die L2-Cache-Einheit 676 ist mit einer oder mehreren Cache-Ebenen und gegebenenfalls mit einem Hauptspeicher gekoppelt.
  • Als Beispiel kann das Beispiel der Registerumbenennungs-, ungeordneten Ausgabe/Ausführungs-Kernarchitektur die Pipeline 600 wie folgt implementieren: 1) die Instruktionsabrufeinheit 638 nimmt die Abruf- und Längendecodierungsstufe 602 und 604 vor; 2) die Decodiereinheit 640 nimmt die Decodierungsstufe 606 vor; 3) die Umbenennungs/Zuordnereinheit 652 nimmt die Zuordnungsstufe 608 und Umbenennungsstufe 610 vor; 4) die Scheduler-Einheit(en) 656 nimmt die Scheduling-Stufe 612 vor; 5) die physische Registerdateieinheit(en) 658 und die Speichereinheit 670 nehmen die Registerlese/Speicherlesestufe 614 vor; der Ausführungs-Cluster 660 nimmt die Ausführungsstufe 616 vor; 6) die Speichereinheit 670 und die physische(n) Registerdateieinheit(en) 658 nehmen die Rückschreib/Speicherschreibstufe 618 vor; 7) verschiedene Einheiten können in die Ausnahmebehandlungsstufe 622 involviert sein; und 8) die Stilllegungseinheit 654 und die physische(n) Registerdateieinheit(en) 658 nehmen die Festlegungsstufe 624 vor.
  • Der Kern 690 kann einen oder mehrere Instruktionssätze unterstützen (z.B. den x86-Instruktionssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden)); den MIPS-Instruktionssatz, entwickelt von MIPS Technologies, Sunnyvale, CA; den ARM-Instruktionssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings, Sunnyvale, CA), einschließlich der hier beschriebenen Instruktion(en). In einer Ausführungsform umfasst der Kern 690 Logik, um eine gepackte Dateninstruktionssatz-Erweiterung zu unterstützen (z.B. AVX1, AVX2), wodurch ermöglicht wird, dass die von vielen Multimedia-Anwendungen verwendeten Operationen unter Verwendung gepackter Daten vorgenommen werden.
  • Es ist klar, dass der Kern ein Multithreading (Ausführung von zwei oder mehreren parallelen Sätzen oder Operationen oder Datensträngen) unterstützen kann und dies auf verschiedensten Wegen tun kann, einschließlich zeitgeteiltes Multithreading, gleichzeitiges Multithreading (wo ein einzelner physikalischer Kern einen logischen Kern für jeden der Stränge bereitstellt, an denen der physikalische Kern ein gleichzeitiges Multithreading vornimmt), oder eine Kombination davon (z.B. zeitgeteilter Abruf und Decodieren und gleichzeitiges Multithreading danach, wie bei der Intel® Hyperthreading-Technologie).
  • Obwohl die Registerumbenennung im Kontext der ungeordneten Ausführung beschrieben wird, ist es klar, dass die Registerumbenennung in einer geordneten Architektur verwendet werden kann. Obwohl die veranschaulichte Ausführungsform des Prozessors auch eine getrennte Instruktions- und Daten-Cache-Einheit 634/674 und eine gemeinsam genutzte L2-Cache-Einheit 676 aufweist, können alternative Ausführungsformen einen einzelnen internen Cache sowohl für Instruktionen als auch Daten haben, wie beispielsweise ein interner Level 1- (L1-) Cache, oder mehrfache Ebenen eines internen Caches. In einigen Ausführungsformen kann das System eine Kombination eines internen Caches und eines externen Caches aufweisen, der extern vom Kern und/oder vom Prozessor ist. Alternativ dazu können alle Caches extern vom Kern und/oder vom Prozessor sein.
  • In einigen Ausführungsformen kann die Plattformkonfigurierungs-(PCONFIG-) Instruktion, die in dieser gesamten Offenbarung beschrieben wird, unter Verwendung der Prozessorarchitektur von 6A-B implementiert werden. Beispielsweise kann der Instruktions-Cache 634 einen PCONFIG-Instruktion zum Konfigurieren einer geschützten Domäne auf der Basis einer bestimmten Speicherregion, eines Schutzmodus, eines Verschlüsselungsschlüssels und/oder Verschlüsselungstyps enthalten. Demgemäß kann die PCONFIG-Instruktion aus dem Instruktions-Cache 634 abgerufen und vom Decoder 640 decodiert werden, und eine Ausführungseinheit 662 kann dann die geschützte Domäne in einer Speicherverschlüsselungs-Steuereinheit (z.B. Speicherverschlüsselungs-Steuereinheit 206 von 2) programmieren oder konfigurieren.
  • 7 ist ein Blockbild eines Prozessors 700, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuereinheit aufweisen kann, und integrierte Graphik aufweisen kann, gemäß Ausführungsformen der Erfindung. Die Kästchen mit durchgehenden Linien in 7 veranschaulichen einen Prozessor 700 mit einem einzelnen Kern 702A, einen Systemagenten 710, einen Satz einer oder mehrerer Bussteuereinheiten 716, während das optionale Hinzufügen der Kästchen mit gestrichelten Linien einen alternative Prozessor 700 mit mehreren Kernen 702A-N, einen Satz einer oder mehrerer integrierter Speichersteuereinheiten 714 in der Systemagenteneinheit 710 und Speziallogik 708 veranschaulicht.
  • Somit können verschiedene Implementierungen des Prozessors 700 umfassen: 1) eine CPU mit Speziallogik 708, die integrierte Graphik und/oder wissenschaftliche (Durchsatz-) Logik (die einen oder mehrere Kerne umfassen kann) ist, und die Kerne 702A-N, die ein oder mehrere Universalkerne sind (z.B. geordnete Universalkerne, ungeordnete Universalkerne, eine Kombination von beiden); 2) einen Coprozessor mit den Kernen 702A-N, welche eine große Anzahl von Spezialkernen sind, die primär für Graphik und/oder wissenschaftlich (Durchsatz) bestimmt sind; und 3) einen Coprozessor mit den Kernen 702A-N, die eine große Anzahl von geordneten Univeralkernen sind. Somit kann der Prozessor 700 ein Universalprozessor, Coprozessor oder Spezialprozessor sein, wie beispielsweise ein Netz- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Graphikprozessor, eine GPGPU (Universal-Graphikverarbeitungseinheit), ein Mehrfachintegrationskern- (MIC-) Coprozessor mit hohem Durchsatz (umfassend 30 oder mehr Kerne), ein eingebetteter Prozessor oder dgl. sein. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 700 kann ein Teil eines oder mehrerer Substrate sein und/oder darauf unter Verwendung beliebiger einer Reihe von Verfahrenstechnologien implementiert sein, wie beispielsweise BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie umfasst eine oder mehrere Cache-Ebenen innerhalb der Kerne, einen Satz einer oder mehrere gemeinsam genutzter Cache-Einheiten 706, und einen externen Speicher (nicht gezeigt), der mit dem Satz integrierter Speichersteuereinheiten 714 gekoppelt ist. Der Satz gemeinsam genutzter Cache-Einheiten 706 kann einen oder mehrerer Caches mittlerer Ebene aufweisen, wie Level 2- (L2-), Level 3- (L3-), Level 4- (L4-) oder andere Cache-Ebenen, einen Last Level Cache (LLC) und/oder Kombinationen davon. Obwohl in einer Ausführungsform eine ringbasierte Zwischenverbindungseinheit 712 die integrierte Graphiklogik 708, den Satz gemeinsam genutzter Cache-Einheiten 706 und die Systemagenteneinheit 710/integrierte Speichersteuereinheit(en) 714 miteinander verbindet, können alternative Ausführungsformen eine beliebige Anzahl wohlbekannter Techniken für eine Zwischenverbindung solcher Einheiten verwenden. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 706 und den Kernen 702A-N aufrechterhalten.
  • In einigen Ausführungsformen ist ein oder sind mehrere der Kerne 702A-N Multithreading-fähig. Der Systemagent 710 umfasst jene Komponenten, welche die Kerne 702A-N koordinieren und betreiben. Der Systemagent 710 kann beispielsweise eine Energiesteuereinheit (PCU) und eine Anzeigeeinheit aufweisen. Die PCU kann Logik und Komponenten zur Regelung des Energiezustands der Kerne 702A-N und/oder der integrieten Graphiklogik 708 aufweisen oder sein. Die Anzeigeeinheit dient zum Treiben einer oder mehrerer extern angeschlossener Anzeigen.
  • Die Kerne 702A-N können homogen oder heterogen hinsichtlich des Architektur-Instruktionssatzes sein; das heißt, zwei oder mehrere der Kerne 702AN können fähig sein, denselben Instruktionssatz auszuführen, während andere fähig sein können, nur einen Subsatz dieses Instruktionssatzes oder einen anderen Instruktionssatz auszuführen.
  • Mit nunmehriger Bezugnahme auf 8 ist ein Blockbild eines Systems 800 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 800 kann einen oder mehrere Prozessoren 810, 815 umfassen, die mit einem Steuereinheit-Hub 820 gekoppelt sind. In einer Ausführungsform umfasst der Steuereinheit-Hub 820 einen Graphik-Speichersteuereinheit-Hub (GMCH) 890 und einen Eingabe/Ausgabe-Hub (IOH) 850 (die auf getrennten Chips sein können); der GMCH 890 umfasst Speicher- und Graphiksteuereinheiten, mit denen der Speicher 840 und ein Coprozessor 845 gekoppelt sind; der IOH 850 koppelt die Eingabe/Ausgabe- (I/O-) Vorrichtungen 860 mit dem GMCH 890. Alternativ dazu sind einer oder beide von der Speicher- und Graphiksteuereinheit innerhalb des Prozessors integriert (wie hier beschrieben), der Speicher 840 und der Coprozessor sind direkt mit dem Prozessor 810 gekoppelt, und der Steuereinheit-Hub 820 ist auf einem einzelnen Chip mit dem IOH 850.
  • Die optionale Beschaffenheit der zusätzlichen Prozessoren 815 ist in 8 mit gestrichelten Linien bezeichnet. Jeder Prozessor 810, 815 kann einen oder mehrere der hier beschriebenen Verarbeitungskerne umfassen und kann irgendeine Version des Prozessors 700 sein.
  • Der Speicher 840 kann beispielsweise ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM), ein Phasenänderungspeicher (PCM) oder eine Kombination der beiden sein. Für mindestens eine Ausführungsform kommuniziert der Steuereinheit-Hub 820 mit dem (den) Prozessor(en) 810, 815 über einen Multi-Drop-Bus, wie einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie eine QuickPath-Zwischenverbindung (QPI) oder ähnliche Verbindung 895.
  • In einer Ausführungsform ist der Coprozessor 845 ein Spezialprozessor, wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Graphikprozessor, eine GPGU, ein eingebetteter Prozessor oder dgl. In einer Ausführungsform kann der Steuereinheit-Hub 820 einen integrierten Graphikbeschleuniger umfassen.
  • Es kann verschiedenste Unterschiede zwischen den physischen Ressourcen 810, 815 hinsichtlich eines Gütemetrikspektrums geben, umfassend Architektur-, Mikroarchitektur-, thermische, Energieverbrauchscharakteristiken und dgl.
  • In einer Ausführungsform führt der Prozessor 810 Instruktionen aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Innerhalb der Instruktion können Coprozessorinstruktionen eingebettet sein. Der Prozessor 810 erkennt, dass diese Coprozessorinstruktionen von einem Typ sind, der vom angeschlossenen Coprozessor 845 ausgeführt werden sollte. Demgemäß erteilt der Prozessor 810 diese Coprozessorinstruktionen (oder Steuersignale, die Coprozessorinstruktionen repräsentieren) dem Coprozessor 845 auf einem Coprozessorbus oder einer anderen Zwischenverbindung. Der (die) Coprozessor(en) 845 akzeptiert (akzeptieren) die empfangenen Coprozessorinstruktionen und führt (führen) diese aus.
  • Mit nunmehriger Bezugnahme auf 9 ist ein Blockbild eines ersten spezifischeren Beispiels eines Systems 900 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 9 gezeigt, ist das Mehrprozessorsystem 900 ein Punkt-zu-Punkt-Zwischenverbindungssystem und umfasst einen ersten Prozessor 970 und einen zweiten Prozessor 980, die über eine Punkt-zu-Punkt-Zwischenverbindung 950 gekoppelt sind. Jeder der Prozessoren 970 und 980 kann irgendeine Version des Prozessors 700 sein. In einer Ausführungsform der Erfindung sind die Prozessoren 970 und 980 jeweils die Prozessoren 810 und 815, während der Coprozessor 938 der Coprozessor 845 ist. In einer weiteren Ausführungsform sind die Prozessoren 970 und 980 jeweils der Prozessor 810 und der Coprozessor 845.
  • Von den Prozessoren 970 und 980 ist gezeigt, dass sie integrierte Speichersteuereinheit- (IMC-) Einheiten 972 bzw. 982 aufweisen. Der Prozessor 970 umfasst auch als Teil seiner Bussteuereinheit Punkt-zu-Punkt- (P-P-) Schnittstellen 976 und 978; ähnlich umfasst der zweite Prozessor 980 P-P-Schnittstellen 986 und 988. Die Prozessoren 970, 980 können Informationen über eine Punkt-zu-Punkt- (P-P-) Schnittstelle 950 unter Verwendung der P-P-Schnittstellenschaltungen 978, 988 austauschen. Wie in 9 gezeigt, koppeln IMCs 972 und 982 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 932 und einem Speicher 934, die Teile eines Hauptspeichers sein können, der lokal an die jeweiligen Prozessoren angeschlossen ist.
  • Die Prozessoren 970, 980 können Informationen mit einem Chipsatz 990 über einzelne P-P-Schnittstellen 952, 954 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 976, 994, 986, 998 austauschen. Der Chipsatz 990 kann gegebenenfalls Informationen mit dem Coprozessor 938 über eine Hochleistungsschnittstelle 939 austauschen. In einer Ausführungsform ist der Coprozessor 938 ein Spezialprozessor, wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Graphikprozessor, eine GPGU, ein eingebetteter Prozessor oder dgl.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in einem der beiden Prozessoren oder außerhalb beider Prozessoren eingeschlossen sein, jedoch mit den Prozessoren über die P-P-Zwischenverbindung verbunden sein, so dass lokale Cache-Informationen eines der beiden oder beider Prozessoren im gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Niederenergiemodus versetzt wird.
  • Der Chipsatz 990 kann mit einem ersten Bus 916 über eine Schnittstelle 996 gekoppelt sein. In einer Ausführungsform kann der erste Bus 916 ein Peripheral Component Interconnect- (PCI-) Bus oder ein Bus sein, wie ein PCI Express-Bus oder ein anderer I/O-Zwischenverbindungsbus der dritten Generation, obwohl der Umfang der vorliegenden Erfindung nicht so eingeschränkt ist.
  • Wie in 9 gezeigt, können verschiedene I/O-Vorrichtungen 914 mit dem ersten Bus 916 zusammen mit einer Busbrücke 918 gekoppelt sein, die den ersten Bus 916 mit einem zweiten Bus 920 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 915, wie Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGUs, Beschleuniger (wie z.B. Graphikbeschleuniger oder digitale Signalverarbeitungs- (DSP-) Einheiten), feldprogrammierbare Gate-Arrays oder irgendein anderer Prozessor mit dem ersten Bus 916 gekoppelt. In einer Ausführungsform kann der zweite Bus 920 ein Bus mit niedriger Pin-Anzahl (LPC) sein. Verschiedene Vorrichtungen können mit dem zweiten Bus 920 gekoppelt sein, umfassend beispielsweise eine Tastatur und/oder Maus 922, Kommunikationsvorrichtungen 927 und eine Speichereinheit 928, wie ein Diskettenlaufwerk oder eine andere Massenspeichervorrichtung, die Instruktionen/Code und Daten 930 umfassen kann, in einer Ausführungsform. Ferner kann eine Audio-I/O 924 mit dem zweiten Bus 920 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Beispielsweise kann anstelle der Punkt-zu-Punkt-Architektur von 9 ein System einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Mit nunmehriger Bezugnahme auf 10 ist ein Blockbild eines SoC 1000 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 7 tragen ähnliche Bezugszahlen. Kästchen mit gestrichelten Linien sind auch optionale Merkmale auf weiterentwickelten SoCs. In 10 ist eine Zwischenverbindungseinheit(en) 1002 gekoppelt mit: einem Anwendungsprozessor 1010, umfassend einen Satz von einem oder mehreren Kernen 1002A-N und eine gemeinsame Cache-Einheit(en) 1006; einer Systemagenteneinheit 1010; einer Bussteuereinheit(en) 1016; einer integrierten Speichersteuereinheit(en) 1014; einem Satz eines oder mehrerer Co-Prozessoren 1020, die integrierte Graphiklogik, einen Bildprozessor, einen Audio-Prozessor und einen Video-Prozessor umfassen können; einer statischen Speichereinheit 1030 mit wahlfreiem Zugriff (SRAM); einer Direktspeicherzugriffs- (DMA-) Einheit 1032; und einer Anzeigeeinheit 1040 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfassen die Co-Prozessoren 1020 einen Spezialprozessor, wie beispielsweise einen Netz- oder Kommunikationsprozessor, eine Kompressions-Engine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder dgl.
  • Ausführungsformen der hier geoffenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze implementiert werden. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode implementiert werden, die auf programmierbaren Systemen ausgeführt werden, umfassend mindestens einen Prozessor, ein Speichersystem (umfassend einen flüchtigen und nicht-flüchtigen Speicher und/oder Speicherelemente), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung.
  • Der Programmcode, wie der in 9 veranschaulichte Programmcode 930, kann auf Eingabeinstruktionen angewendet werden, um die hier beschriebenen Funktionen vorzunehmen und Ausgabeinformationen zu generieren. Die Ausgabeinformationen können auf eine oder mehrere Ausgabevorrichtungen auf bekannte Weise angewendet werden. Für Zwecke dieser Anmeldung umfasst ein Verarbeitungssystem irgendein System, das einen Prozessor aufweist, wie beispielsweise einen digitalen Signalprozessor (DSP), eine Mikrosteuereinheit, eine anwendungsspezifische Integrationsschaltung (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer prozessorientierten oder objektorientierten Programmierhochsprache implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auch in einer Assemblier- oder Maschinensprache implementiert sein, wenn gewünscht. Tatsächlich sind die hier beschriebenen Mechanismen im Umfang nicht auf irgendeine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere der Aspekte wenigstens einer Ausführungsform können durch repräsentative Instruktionen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine gelesen wird, die Maschine veranlasst, Logik herzustellen, um die hier beschriebenen Techniken vorzunehmen. Solche Repräsentationen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert werden und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um in die Herstellungsmaschinen geladen zu werden, die tatsächlich die Logik oder den Prozessor herstellen.
  • Solche maschinenlesbaren Speichermediem können ohne Einschränkung umfassen: nicht-transitorische, greifbare Anordnungen von Artikeln, die von einer Maschine oder Vorrichtung hergestellt oder gebildet werden, umfassend Speichermedien, wie Festplatten, irgendeinen anderen Typ einer Platte, umfassend Disketten, optische Platten, Compact Disk Nurlesespeicher (CD-ROMs), überschreibbare Compact Disks (CD-RWs) und magnetooptische Platten, Halbleitervorrichtungen, wie Nurlesespeicher (ROMs), Speicher mit wahlfreiem Zugriff (RAMs), wie dynamische Speicher mit wahlfreiem Zugriff (DRAMs), statische Speicher mit wahlfreiem Zugriff (SRAMs), löschbare programmierbare Nurlesespeicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nurlesespeicher (EEPROMs), Phasenänderungsspeicher (PCM), magnetische oder optische Karten, oder irgendeinen anderen Typ von Medien, die zum Speichern elektronischer Instruktionen geeignet sind.
  • Demgemäß umfassen Ausführungsformen der Erfindung auch nicht-transitorische, greifbare maschinenlesbare Medien, die Instruktionen enthalten oder Ausbildungsdaten enthalten, wie Hardware-Beschreibungssprache (HDL), die hier beschriebene Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Die Flussdiagramme und Blockbilder in den FIGUREN veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Aspekten der vorliegenden Offenbarung. In dieser Hinsicht kann jeder Block in dem Flussdiagramm oder den Blockbildern ein Modul, ein Segment oder einen Teil eines Codes repräsentieren, umfassend eine oder mehrere ausführbare Instruktionen zur Implementierung der spezifizierten Logikfunktion(en). Es ist auch anzumerken, dass in einigen alternativen Implementierungen die in dem Block verzeichneten Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Beispielsweise können zwei aufeinanderfolgend gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge oder in alternativen Reihenfolgen ausgeführt werden, in Abhängigkeit von der involvierten Funktionalität. Es ist auch anzumerken, dass jeder Block der Blockbilder und/oder Flussdiagrammveranschaulichung, und Kombinationen von Blöcken in den Blockbildern und/oder der Flussdiagrammveranschaulichung, durch Spezial-Hardware-basierte Systeme, welche die spezifizierten Funktionen oder Handlungen vornehmen, oder Kombinationen von Spezial-Hardware und Computerinstruktionen implementiert werden können.
  • Die obige Offenbarung beschreibt Merkmale einiger Ausführungsformen, so dass Fachleute verschiedene Aspekte der vorliegenden Offenbarung besser verstehen können. Fachleuten sollte klar sein, dass sie die vorliegenden Offenbarung leicht als Basis zur Ausbildung und Modifikation anderer Prozesse und Strukturen zur Duchführung derselben Zwecke und/oder zum Erzielen derselben Vorteile der hier vorgestellten Ausführungsformen verwenden können. Fachleute sollten auch erkennen, dass solche äquivalenten Konstruktionen nicht vom Grundgedanken und Umfang der vorliegenden Offenbarung abweichen, und dass sie verschiedene Änderungen, Ergänzungen und Abhänderungen hier vornehmen können, ohne vom Grundgedanken und Umfang der vorliegenden Offenbarung abzuweichen.
  • Das gesamte oder ein Teil irgendeines hier geoffenbarten Hardware-Elements kann leicht in einem System-on-chip (SoC) vorgesehen werden, umfassend ein zentrales Verarbeitungseinheit- (CPU-) Gehäuse. Ein SoC repräsentiert eine Integrationsschaltung (IC), die Komponenten eines Computers oder anderer elektronischer Systeme auf einem einzelnen Chip integriert. Das SoC kann digitale, analoge, Mischsignal- und Funkfrequenzfunktionen enthalten, von denen alle auf einem einzelnen Chipsubstrat vorgesehen werden können. Andere Ausführungsformen können ein Mehrfach-Chipmodul (MCM) umfassen, wobei eine Vielzahl von Chips innerhalb eines einzelnen elektronischen Gehäuses angeordnet und konfiguriert ist, miteinander durch das elektronische Gehäuse eng zu interagieren. In verschiedenen anderen Ausführungsformen können die hier geoffenbarten Rechnerfunktionalitäten in einem oder mehreren Siliciumkernen in anwendungsspezifischen Integrationsschaltungen (ASICs), feldprogrammierbaren Gate-Arrays (FPGAs) und anderen Halbleiter-Chips implementiert werden.
  • Wie in dieser gesamten Beschreibung verwendet, ist der Ausdruck „Prozessor“ oder „Mikroprozessor“ so zu verstehen, dass er nicht nur einen traditionellen Mikroprozessor (wie die industriell führenden X86- und x64-Architekturen von Intel®), sondern auch umfassen kann: Graphikprozessoren, Matrixprozessoren und beliebige ASICs, FPGAs, Mikrosteuereinheiten, Digitale Signalprozessoren (DSP), programmierbare Logikvorrichtungen, programmierbare Logik-Arrays (PLA), Mikrocode, Instruktionssätze, emulierte oder virtuelle Maschinenprozessoren oder eine beliebige ähnliche „Turing-complete“-Vorrichtung, Kombinationen von Vorrichtungen oder Logikelemente (Hardware oder Software), welche die Ausführung von Instruktionen gestatten.
  • Es ist auch zu beachten, dass in bestimmten Ausführungsformen einige der Komponenten weggelassen oder konsolidiert werden können. In einem allgemeinen Sinn sind die in den Figuren dargestellten Anordnungen als logische Teilungen zu verstehen, während eine physische Architektur verschiedene Permutationen, Kombinationen und/oder Hybride dieser Elemente umfassen kann. Es ist unerlässlich unzumerken, dass zahllose mögliche Ausbildungskonfigurierungen verwendet werden können, um die hier beschriebenen Betriebsziele zu erreichen. Demgemäß hat die zugeordnete Infrastruktur zahllose Ersatzanordnungen, Ausbildungsauswahlen, Vorrichtungsmöglichkeiten, Hardware-Ausbildungen, Software-Implementierungen und Ausrüstungsoptionen.
  • In einem allgemeinen Sinn kann ein beliebiger geeignet konfigurierter Prozessor Instruktionen ausführen, die Daten oder Mikrocode zugeordnet sind, um die hier detailliert ausgeführten Operationen zu erzielen. Ein beliebiger hier geoffenbarter Prozessor könnte ein Element oder einen Artikel (beispielsweise Daten) von einem Zustand oder Ding in einen anderen Zustand oder ein Ding umwandeln. In einem weiteren Beispiel können einige hier beschriebene Aktivitäten mit fester Logik oder programmierbarer Logik implementiert werden (beispielsweise Software- und/oder Computerinstruktionen, die von einem Prozessor ausgeführt werden), und die hier identifizierten Elemente könnten irgendein Typ eines programmierbaren Prozessors sein, einer programmierbaren digitalen Logik (beispielsweise ein feldprogrammierbares Gate-Array (FPGA), ein löschbarer programmierbarer Nurlesespeicher (EPROM), ein elektrisch löschbarer programmierbarer Nurlesespeicher (EEPROM)), einer ASIC, umfassend digitale Logik, Software, Code, elektronische Instruktionen, Flash-Speicher, optische Platten, CD-ROMs, DVD ROMs, magnetische oder optische Karten, anderen Typen maschinenlesbarer Medien, die zum Speichern elektronischer Instruktionen geeignet sind, oder irgendeine beliebige Kombination davon.
  • Im Betrieb kann ein Speicher Informationen in irgendeinem geeigneten Typ eines greifbaren, nicht-transitorischen Mediums speichern (beispielsweise Speicher mit wahlfreiem Zugriff (RAM), Nurlesespeicher (ROM), feldprogrammierbares Gate-Array (FPGA), löschbarer programmierbarer Nurlesespeicher (EPROM), elektrisch löschbarer programmierbarer Nurlesespeicher (EEPROM) oder Microcode), Software, Hardware (beispielsweise Prozessorinstruktionen oder Mikrocode), oder in einer beliebigen anderen geeigneten Komponente, Vorrichtung, in einem Element oder Objekt, wo geeignet und auf der Basis bestimmter Anforderungen. Ferner könnten die Informationen, die in einem Prozessor verfolgt, gesendet, empfangen oder gespeichert werden, in irgendeiner Datenbank, einem Register, einer Tabelle, einem Cache, einer Warteschlange, einer Steuerliste oder einer Speicherstruktur auf der Basis bestimmter Anforderungen und Implementierungen vorgesehen werden, von denen alle in irgendeinem geeigneten Zeitrahmen referenziert werden können. Beliebige der hier geoffenbarten Speicher oder Speicherelemente sind so auszulegen, dass sie in den breiten Ausdrücken „Memory“ und „Speicher“ eingeschlossen sind, wie geeignet. Ein nicht-transitorisches Speichermedium soll hier ausdrücklich irgendeine nicht-transitorische Spezial- oder programmierbare Hardware umfassen, die konfiguriert ist, die geoffenbarten Operationen vorzusehen, oder einen Prozessor zu veranlassen, die geoffenbarten Operationen vorzunehmen. Ein nicht-transitorisches Speichermedium umfasst auch ausdrücklich einen Prozessor mit darauf gespeichertem Hardware-codierten Instruktionen und gegebenenfalls Mikrocodeinstruktionen oder Sequenzen, die in Hardware, Firmware oder Software codiert sind.
  • Computerprogrammlogik, welche die gesamte oder einen Teil der hier beschriebenen Funktionalität implementiert, wird in verschiedenen Formen implementiert, umfassend, jedoch in keiner Weise beschränkt auf Hardware-Beschreibungssprache, eine Quellcode-Form, eine computerausführbare Form, Maschineninstruktionen oder Mikrocode, programmierbare Hardware und verschiedene Zwischenformen (beispielsweise Formen, die von einem HDL-Prozessor, Assemblierer, Kompilierer, Linker oder Locator erzeugt werden). In einem Beispiel umfasst ein Quellcode eine Serie von Computerprogamminstruktionen, die in verschiedenen Programmiersprachen implementiert werden, wie einen Objektcode, eine Assembliersprache, oder eine Hochsprache, wie OpenCL, FORTRAN, C, C++, JAVA oder HTML, zur Verwendung mit verschiedenen Betriebssystemen oder Betriebsumgebungen, oder in Hardware-Beschreibungssprachen, wie Spice, Verilog und VHDL. Der Quellcode kann verschiedene Datenstrukturen und Kommunikationsnachrichten definieren und verwenden. Der Quellcode kann in einer computerausführbaren Form sein (z.B. über einen Interpreter), oder der Quellcode kann in eine computerausführbare Form umgewandelt werden (z.B. über einen Translator, Assemblierer oder Kompilierer), oder in eine Zwischenform wie einen Bytecode umgewandelt werden. Wo geeignet, kann irgendeiner der vorhergehenden verwendet werden, um geeignete diskrete oder integrierte Schaltungen aufzubauen oder zu beschreiben, egal ob sequentiell, kombinatorisch, Zustandsmaschinen oder auf andere Weise.
  • In einem Beispiel kann eine beliebige Anzahl elektrischer Schaltungen der FIGUREN auf einer Platine einer zugeordneten elektronischen Vorrichtung implementiert werden. Die Platine kann eine allgemeine Leiterplatte sein, die verschiedene Komponenten des internen elektronischen Systems der elektronischen Vorrichtung halten kann und ferner Verbinder für andere periphere Vorrichtungen vorsehen. Spezifischer kann die Platine die elektrischen Verbindungen vorsehen, durch welche die anderen Komponenten des Systems elektrisch kommunizieren können. Ein beliebiger geeigneter Prozessor und Speicher kann geeignet mit der Platine auf der Basis bestimmter Konfigurierungsanforderungen, Verarbeitungserfordernisse und Rechnerkonfigurierungen gekoppelt werden. Andere Komponenten, wie externe Speicher, zusätzliche Sensoren, Steuereinheiten für eine Audio/Video-Anzeige und periphere Vorrichtungen, können an der Platine als Plug-in-Karten, über Kabel angebracht oder in die Platine selbst integriert werden. In einem weiteren Beispiel können die elektrischen Schaltungen der FIGUREN als unabhängige Module (z.B. eine Vorrichtung mit zugeordneten Komponenten und Schaltungen, die konfiguriert sind, eine spezifische Anwendung oder Funktion vorzunehmen) implementiert werden oder als Plug-in-Module in anwendungsspezifischer Hardware elektronischer Vorrichtungen implementiert werden.
  • Es ist zu beachten, dass mit den hier vorgesehenen zahlreichen Beispielen eine Interaktion hinsichtlich zwei, drei, vier oder mehrerer elektrischer Komponenten beschrieben werden kann. Dies erfolgte jedoch nur für Zwecke der Klarheit und als Beispiel. Es ist klar, dass das System auf irgendeine geeignete Weise konsolidiert oder neu konfiguriert werden kann. Gemäß ähnlichen Ausbildungsalternativen können beliebige der veranschaulichten Komponenten, Module und Elemente der FIGUREN in verschiedenen möglichen Konfigurierungen kombiniert werden, von denen alle im breiten Umfang dieser Beschreibung liegen. In bestimmten Fällen kann es einfacher sein, eine oder mehrere der Funktionalitäten eines gegebenen Satzes von Flüssen zu beschreiben, indem nur auf eine begrenzte Anzahl elektrischer Elemente Bezug genommen wird. Es ist klar, dass die elektrischen Schaltungen der FIGUREN und ihre Lehren leicht sklaierbar sind und eine große Anzahl von Komponenten aufnehmen können, sowie kompliziertere/komplexere Anordnungen und Konfigurierungen. Demgemäß sollen die gelieferten Beispiele den Umfang nicht einschränken oder die breiten Lehren der elektrischen Schaltungen nicht behindern, wie sie potentiell bei zahllosen anderen Architekturen angewendet werden.
  • Zahlreiche andere Änderungen, Ergänzungen, Variationen, Abänderungen und Modifikationen können von Fachleuten festgestellt werden, und die vorliegende Offenbarung solle alle solchen Änderungen, Ergänzungen, Variationen, Abänderungen und Modifikationen umfassen, wie sie in den Umfang der beigeschlossenen Ansprüche fallen.
  • Beispiele von Implementierungen
  • Die folgenden Beispiele betreffen Ausführungsformen, die in dieser gesamten Offenbarung beschrieben werden.
  • Eine oder mehrere Ausführungsformen können eine Vorrichtung umfassen, umfassend: einen Prozessor, um eine oder mehrere Instruktionen auszuführen, wobei die eine oder mehreren Instruktionen eine Speicherzugriffsoperation umfassen, die einem Speicherort eines Speichers zugeordnet ist; eine Speicherverschlüsselungs-Steuereinheit, um: die Speicherzugriffsoperation, die dem Speicherort des Speichers zugeordnet ist, zu identifizieren; zu bestimmen, dass der Speicherort einer geschützten Domäne zugeordnet ist, wobei die geschützte Domäne einer geschützten Speicherregion des Speichers zugeordnet ist, und wobei die geschützte Domäne aus einer Vielzahl geschützter Domänen identifiziert wird, die einer Vielzahl geschützter Speicherregionen des Speichers zugeordnet ist; einen Verschlüsselungsschlüssel zu identifizieren, der der geschützten Domäne zugeordnet ist; eine Kryptographieoperation an Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, wobei die Kryptographieoperation auf der Basis des Verschlüsselungsschlüssels vorgenommen wird, der der geschützten Domäne zugeordnet ist; und ein Ergebnis der Kryptographieoperation zurückzuführen, wobei das Ergebnis der Kryptographieoperation für die Speicherzugriffsoperation zu verwenden ist.
  • In einem Beispiel einer Ausführungsform einer Vorrichtung: umfasst die Speicherzugriffsoperation eine Speicherleseoperation; und hat die Speicherverschlüsselungs-Steuereinheit, um die Kryptographieoperation an den Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, ferner: die Daten aus dem Speicherort des Speichers zu erhalten; und die Daten auf der Basis des Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist, zu entschlüsseln.
  • In einem Beispiel einer Ausführungsform einer Vorrichtung: umfasst die Speicherzugriffsoperation eine Speicherschreiboperation; und hat die Speicherverschlüsselungs-Steuereinheit, um die Kryptographieoperation an den Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, ferner die Daten auf der Basis des Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist, zu verschlüsseln, wobei das Ergebnis der Kryptographieoperation in den Speicherort des Speichers zu schreiben ist.
  • In einem Beispiel einer Ausführungsform einer Vorrichtung: hat die Speicherverschlüsselungs-Steuereinheit, um die Kryptographieoperation an den Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, ferner: einen Verschlüsselungstyp, der der geschützten Domäne zugeordnet ist, zu identifizieren, wobei die Vielzahl geschützter Domänen einer Vielzahl von Verschlüsselungstypen zugeordnet ist; und die Kryptographieoperation auf der Basis des Verschlüsselungstyps, der der geschützten Domäne zugeordnet ist, vorzunehmen.
  • In einem Beispiel einer Ausführungsform einer Vorrichtung: umfasst die Vielzahl geschützter Domänen eine Vielzahl von Ausführungskontexten; und umfasst jede geschützte Domäne der Vielzahl geschützter Domänen einen bestimmten Ausführungskontext der Vielzahl von Ausführungskontexten.
  • In einem Beispiel einer Ausführungsform einer Vorrichtung: ist die Vielzahl geschützter Domänen ferner einer Vielzahl von Verschlüsselungsschlüsseln zugeordnet; und ist jede geschützte Domäne der Vielzahl geschützter Domänen einem bestimmten Verschlüsselungsschlüssel der Vielzahl von Verschlüsselungsschlüsseln zugeordnet.
  • In einem Beispiel einer Ausführungsform einer Vorrichtung: ist die Vielzahl geschützter Domänen ferner einer Vielzahl von Benutzern zugeordnet; und ist jede geschützte Domäne der Vielzahl geschützter Domänen einem bestimmten Benutzer der Vielzahl von Benutzern zugeordnet.
  • In einem Beispiel einer Ausführungsform einer Vorrichtung hat die Speicherverschlüsselungs-Steuereinheit ferner: einen Befehl zu identifizieren, eine zweite geschützte Domäne zur Vielzahl geschützter Domänen hinzuzufügen; eine zweite geschützte Speicherregion, die der zweiten geschützten Domäne zugeordnet ist, zu identifizieren; einen zweiten Verschlüsselungsschlüssel, der der zweiten geschützten Domäne zugeordnet ist, zu identifizieren; und die zweite geschützte Domäne auf der Basis der zweiten geschützten Speicherregion und des zweiten Verschlüsselungsschlüssels zu konfigurieren.
  • In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst der Prozessor ferner: einen Instruktionen-Cache, der eine Plattformkonfigurierungsinstruktion umfasst, wobei die Plattformkonfigurierungsinstruktion den Befehl umfasst, die zweite geschützte Domäne zur Vielzahl geschützter Domänen hinzuzufügen; einen Decoder, um die Plattformkonfigurierungsinstruktion zu decodieren; und eine Ausführungseinheit, um die zweite geschützte Domäne in der Speicherverschlüsselungs-Steuereinheit zu programmieren.
  • In einem Beispiel einer Ausführungsform einer Vorrichtung hat die Speicherverschlüsselungs-Steuereinheit ferner: einen Schutzmodus, der der zweiten geschützten Domäne zugeordnet ist, zu bestimmen; und die zweite geschützte Domäne auf der Basis des Schutzmodus zu konfigurieren.
  • In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst der Schutzmodus: Klartextmodus; Standard-Verschlüsselungsmodus; oder benutzerdefinierter Verschlüsselungsmodus.
  • Eine oder mehrere Ausführungsformen können mindestens ein maschinenzugängliches Speichermedium mit darauf gespeicherten Instruktionen umfassen, wobei die Instruktionen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen: eine Speicherzugriffsoperation, die einem Speicherort eines Speichers zugeordnet ist, zu identifizieren; zu bestimmen, dass der Speicherort einer geschützten Domäne zugeordnet ist, wobei die geschützte Domäne einer geschützten Speicherregion des Speichers zugeordnet ist, und wobei die geschützte Domäne aus einer Vielzahl geschützter Domänen, die einer Vielzahl geschützter Speicherregionen des Speichers zugeordnet sind, identifiziert wird; einen Verschlüsselungsschlüssel, der der geschützten Domäne zugeordnet ist, zu identifizieren; eine Kryptographieoperation an Daten, die der Speicherzugriffsoperation zugeordnet sind, vorzunehmen, wobei die Kryptographieoperation auf der Basis des Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist, vorgenommen wird; und ein Ergebnis der Kryptographieoperation zurückzuführen, wobei das Ergebnis der Kryptographieoperation für die Speicherzugriffsoperation zu verwenden ist.
  • In einem Beispiel einer Ausführungsform eines Speichermediums: umfasst die Speicherzugriffsoperation eine Speicherleseoperation; und die Instruktionen, welche die Maschine veranlassen, die Kryptographieoperation an den Daten, die der Speicherzugriffsoperation zugeordnet sind, vorzunehmen, veranlassen die Maschine ferner: die Daten aus dem Speicherort des Speichers zu erhalten; und die Daten auf der Basis des Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist, zu entschlüsseln.
  • In einem Beispiel einer Ausführungsform eines Speichermediums: umfasst die Speicherzugriffsoperation eine Speicherschreiboperation; und veranlassen die Instruktionen, welche die Maschine veranlassen, die Kryptographieoperation an den Daten, die der Speicherzugriffsoperation zugeordnet sind, vorzunehmen, die Maschine ferner, die Daten auf der Basis des Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist, zu verschlüsseln, wobei das Ergebnis der Kryptographieoperation in den Speicherort des Speichers zu schreiben ist.
  • In einem Beispiel einer Ausführungsform eines Speichermediums, veranlassen die Instruktionen, welche die Maschine veranlassen, die Kryptographieoperation an den Daten, die der Speicherzugriffsoperation zugeordnet sind, vorzunehmen, die Maschine ferner: einen Verschlüsselungstyp, der der geschützten Domäne zugeordnet ist, zu identifizieren, wobei die Vielzahl geschützter Domänen einer Vielzahl von Verschlüsselungstypen zugeordnet ist; und die Kryptographieoperation auf der Basis des Verschlüsselungstyps, der der geschützten Domäne zugeordnet ist, vorzunehmen.
  • In einem Beispiel einer Ausführungsform eines Speichermediums: umfasst die Vielzahl geschützter Domänen eine Vielzahl von Ausführungskontexten; und jede geschützte Domäne der Vielzahl geschützter Domänen umfasst einen bestimmten Ausführungskontext der Vielzahl von Ausführungskontexten.
  • In einem Beispiel einer Ausführungsform eines Speichermediums: ist die Vielzahl geschützter Domänen ferner einer Vielzahl von Verschlüsselungsschlüsseln zugeordnet; und ist jede geschützte Domäne der Vielzahl geschützter Domänen einem bestimmten Verschlüsselungsschlüssel der Vielzahl von Verschlüsselungsschlüsseln zugeordnet.
  • In einem Beispiel einer Ausführungsform eines Speichermediums: ist die Vielzahl geschützter Domänen ferner einer Vielzahl von Benutzern zugeordnet; und ist jede geschützte Domäne der Vielzahl geschützter Domänen einem bestimmten Benutzer der Vielzahl von Benutzern zugeordnet.
  • In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen die Maschine ferner: einen Befehl zu identifizieren, eine zweite geschützte Domäne zur Vielzahl geschützter Domänen hinzuzufügen; eine zweite geschützte Speicherregion, die der zweiten geschützten Domäne zugeordnet ist, zu identifizieren; einen zweiten Verschlüsselungsschlüssel, der der zweiten geschützten Domäne zugeordnet ist, zu identifizieren; und die zweite geschützte Domäne auf der Basis der zweiten geschützten Speicherregion und des zweiten Verschlüsselungsschlüssels zu konfigurieren.
  • In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen die Maschine ferner: einen Schutzmodus, der der zweiten geschützten Domäne zugeordnet ist, zu bestimmen; und die zweite geschützte Domäne auf der Basis des Schutzmodus zu konfigurieren.
  • In einem Beispiel einer Ausführungsform eines Speichermediums umfasst der Schutzmodus: Klartextmodus; Standard-Verschlüsselungsmodus; oder benutzerdefinierter Verschlüsselungsmodus.
  • Eine oder mehrere Ausführungsformen können ein System umfassen, umfassend: einen Speicher; einen Prozessor, um eine oder mehrere Instruktionen auszuführen, wobei die eine oder mehreren Instruktionen eine Speicherzugriffsoperation umfassen, die einem Speicherort des Speichers zugeordnet ist; eine Speicherverschlüsselungs-Steuereinheit, um: die Speicherzugriffsoperation, die dem Speicherort des Speichers zugeordnet ist, zu identifizieren; zu bestimmen, dass der Speicherort einer geschützten Domäne zugeordnet ist, wobei die geschützte Domäne einer geschützten Speicherregion des Speichers zugeordnet ist, und wobei die geschützte Domäne aus einer Vielzahl geschützter Domänen identifiziert wird, die einer Vielzahl geschützter Speicherregionen des Speichers zugeordnet ist; einen Verschlüsselungsschlüssel zu identifizieren, der der geschützten Domäne zugeordnet ist; eine Kryptographieoperation an Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, wobei die Kryptographieoperation auf der Basis des Verschlüsselungsschlüssels vorgenommen wird, der der geschützten Domäne zugeordnet ist; und ein Ergebnis der Kryptographieoperation zurückzuführen, wobei das Ergebnis der Kryptographieoperation für die Speicherzugriffsoperation zu verwenden ist.
  • In einem Beispiel einer Ausführungsform eines Systems: ist die Vielzahl geschützter Domänen ferner einer Vielzahl von Benutzern eines Cloud-Serviceanbieters zugeordnet; und ist jede geschützte Domäne der Vielzahl geschützter Domänen einem bestimmten Benutzer der Vielzahl von Benutzern zugeordnet.
  • In einem Beispiel einer Ausführungsform eines Systems umfasst der Speicher einen Festspeicher zum Vorsehen einer persistenten Datenspeicherung.
  • Eine oder mehrere Ausführungsformen können ein Verfahren umfassen, umfassend: Identifizieren einer Speicherzugriffsoperation, die einem Speicherort eines Speichers zugeordnet ist; Bestimmen, dass der Speicherort einer geschützten Domäne zugeordnet ist, wobei die geschützte Domäne einer geschützten Speicherregion des Speichers zugeordnet ist, und wobei die geschützte Domäne aus einer Vielzahl geschützter Domänen identifiziert wird, die einer Vielzahl geschützter Speicherregionen des Speichers zugeordnet ist; Identifizieren eines Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist; Vornehmen einer Kryptographieoperation an Daten, die der Speicherzugriffsoperation zugeordnet sind, wobei die Kryptographieoperation auf der Basis des Verschlüsselungsschlüssels vorgenommen wird, der der geschützten Domäne zugeordnet ist; und Zurückführen eines Ergebnisses der Kryptographieoperation, wobei das Ergebnis der Kryptographieoperation für die Speicherzugriffsoperation zu verwenden ist.
  • In einem Beispiel einer Ausführungsform eines Verfahrens umfasst das Verfahren ferner: Identifizieren eines Befehls, eine zweite geschützte Domäne zur Vielzahl geschützter Domänen hinzuzufügen; Identifizieren einer zweiten geschützten Speicherregion, die der zweiten geschützten Domäne zugeordnet ist; Identifizieren eines zweiten Verschlüsselungsschlüssels, der der zweiten geschützten Domäne zugeordnet ist; und Konfigurieren der zweiten geschützten Domäne auf der Basis der zweiten geschützten Speicherregion und des zweiten Verschlüsselungsschlüssels.
  • Claims (25)

    1. Vorrichtung, umfassend: einen Prozessor, um eine oder mehrere Instruktionen auszuführen, wobei die eine oder mehreren Instruktionen eine Speicherzugriffsoperation umfassen, die einem Speicherort eines Speichers zugeordnet ist; eine Speicherverschlüsselungs-Steuereinheit, um: die Speicherzugriffsoperation, die dem Speicherort des Speichers zugeordnet ist, zu identifizieren; zu bestimmen, dass der Speicherort einer geschützten Domäne zugeordnet ist, wobei die geschützte Domäne einer geschützten Speicherregion des Speichers zugeordnet ist, und wobei die geschützte Domäne aus einer Vielzahl geschützter Domänen identifiziert wird, die einer Vielzahl geschützter Speicherregionen des Speichers zugeordnet ist; einen Verschlüsselungsschlüssel zu identifizieren, der der geschützten Domäne zugeordnet ist; eine Kryptographieoperation an Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, wobei die Kryptographieoperation auf der Basis des Verschlüsselungsschlüssels vorgenommen wird, der der geschützten Domäne zugeordnet ist; und ein Ergebnis der Kryptographieoperation zurückzuführen, wobei das Ergebnis der Kryptographieoperation für die Speicherzugriffsoperation zu verwenden ist.
    2. Vorrichtung nach Anspruch 1: wobei die Speicherzugriffsoperation eine Speicherleseoperation umfasst; und wobei die Speicherverschlüsselungs-Steuereinheit, um die Kryptographieoperation an den Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, ferner: die Daten aus dem Speicherort des Speichers zu erhalten hat; und die Daten auf der Basis des Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist, zu entschlüsseln hat.
    3. Vorrichtung nach Anspruch 1: wobei die Speicherzugriffsoperation eine Speicherschreiboperation umfasst; und wobei die Speicherverschlüsselungs-Steuereinheit, um die Kryptographieoperation an den Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, ferner die Daten auf der Basis des Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist, zu verschlüsseln hat, wobei das Ergebnis der Kryptographieoperation in den Speicherort des Speichers zu schreiben ist.
    4. Vorrichtung nach Anspruch 1, wobei die Speicherverschlüsselungs-Steuereinheit, um die Kryptographieoperation an den Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, ferner: einen Verschlüsselungstyp, der der geschützten Domäne zugeordnet ist, zu identifizieren hat, wobei die Vielzahl geschützter Domänen einer Vielzahl von Verschlüsselungstypen zugeordnet ist; und die Kryptographieoperation auf der Basis des Verschlüsselungstyps, der der geschützten Domäne zugeordnet ist, vorzunehmen hat.
    5. Vorrichtung nach Anspruch 1: wobei die Vielzahl geschützter Domänen eine Vielzahl von Ausführungskontexten umfasst; und wobei jede geschützte Domäne der Vielzahl geschützter Domänen einen bestimmten Ausführungskontext der Vielzahl von Ausführungskontexten umfasst.
    6. Vorrichtung nach Anspruch 1: wobei die Vielzahl geschützter Domänen ferner einer Vielzahl von Verschlüsselungsschlüsseln zugeordnet ist; und wobei jede geschützte Domäne der Vielzahl geschützter Domänen einem bestimmten Verschlüsselungsschlüssel der Vielzahl von Verschlüsselungsschlüsseln zugeordnet ist.
    7. Vorrichtung nach Anspruch 6: wobei die Vielzahl geschützter Domänen ferner einer Vielzahl von Benutzern zugeordnet ist; und wobei jede geschützte Domäne der Vielzahl geschützter Domänen einem bestimmten Benutzer der Vielzahl von Benutzern zugeordnet ist.
    8. Vorrichtung nach Anspruch 1, wobei die Speicherverschlüsselungs-Steuereinheit ferner: einen Befehl zu identifizieren hat, eine zweite geschützte Domäne zur Vielzahl geschützter Domänen hinzuzufügen; eine zweite geschützte Speicherregion, die der zweiten geschützten Domäne zugeordnet ist, zu identifizieren hat; einen zweiten Verschlüsselungsschlüssel, der der zweiten geschützten Domäne zugeordnet ist, zu identifizieren hat; und die zweite geschützte Domäne auf der Basis der zweiten geschützten Speicherregion und des zweiten Verschlüsselungsschlüssels zu konfigurieren hat.
    9. Vorrichtung nach Anspruch 8, wobei der Prozessor ferner umfasst: einen Instruktionen-Cache, der eine Plattformauslegungsinstruktion umfasst, wobei die Plattformauslegungsinstruktion den Befehl umfasst, die zweite geschützte Domäne zur Vielzahl geschützter Domänen hinzuzufügen; einen Decoder, um die Plattformauslegungsinstruktion zu decodieren; und eine Ausführungseinheit, um die zweite geschützte Domäne in der Speicherverschlüsselungs-Steuereinheit zu programmieren.
    10. Vorrichtung nach Anspruch 8, wobei die Speicherverschlüsselungs-Steuereinheit ferner: einen Schutzmodus, der der zweiten geschützten Domäne zugeordnet ist, zu bestimmen hat; und die zweite geschützte Domäne auf der Basis des Schutzmodus zu konfigurieren hat.
    11. Vorrichtung nach Anspruch 10, wobei der Schutzmodus umfasst: Klartextmodus; Standard-Verschlüsselungsmodus; oder benutzerdefinierter Verschlüsselungsmodus.
    12. Maschinenzugängliches Speichermedium bzw. mehrere maschinenzugängliche Speichermedien mit darauf gespeicherten Instruktionen, wobei die Instruktionen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen: eine Speicherzugriffsoperation, die einem Speicherort eines Speichers zugeordnet ist, zu identifizieren; zu bestimmen, dass der Speicherort einer geschützten Domäne zugeordnet ist, wobei die geschützte Domäne einer geschützten Speicherregion des Speichers zugeordnet ist, und wobei die geschützte Domäne aus einer Vielzahl geschützter Domänen, die einer Vielzahl geschützter Speicherregionen des Speichers zugeordnet ist, identifiziert wird; einen Verschlüsselungsschlüssel, der der geschützten Domäne zugeordnet ist, zu identifizieren; eine Kryptographieoperation an Daten, die der Speicherzugriffsoperation zugeordnet sind, vorzunehmen, wobei die Kryptographieoperation auf der Basis des Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist, vorgenommen wird; und ein Ergebnis der Kryptographieoperation zurückzuführen, wobei das Ergebnis der Kryptographieoperation für die Speicherzugriffsoperation zu verwenden ist.
    13. Speichermedium nach Anspruch 12: wobei die Speicherzugriffsoperation eine Speicherleseoperation umfasst; und wobei die Instruktionen, welche die Maschine veranlassen, die Kryptographieoperation an den Daten, die der Speicherzugriffsoperation zugeordnet sind, vorzunehmen, die Maschine ferner veranlassen: die Daten aus dem Speicherort des Speichers zu erhalten; und die Daten auf der Basis des Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist, zu entschlüsseln.
    14. Speichermedium nach Anspruch 12: wobei die Speicherzugriffsoperation eine Speicherschreiboperation umfasst; und wobei die Instruktionen, welche die Maschine veranlassen, die Kryptographieoperation an den Daten, die der Speicherzugriffsoperation zugeordnet sind, vorzunehmen, die Maschine ferner veranlassen, die Daten auf der Basis des Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist, zu verschlüsseln, wobei das Ergebnis der Kryptographieoperation in den Speicherort des Speichers zu schreiben ist.
    15. Speichermedium nach Anspruch 12, wobei die Instruktionen, welche die Maschine veranlassen, die Kryptographieoperation an den Daten, die der Speicherzugriffsoperation zugeordnet sind, vorzunehmen, die Maschine ferner veranlassen: einen Verschlüsselungstyp, der der geschützten Domäne zugeordnet ist, zu identifizieren, wobei die Vielzahl geschützter Domänen einer Vielzahl von Verschlüsselungstypen zugeordnet ist; und die Kryptographieoperation auf der Basis des Verschlüsselungstyps, der der geschützten Domäne zugeordnet ist, vorzunehmen.
    16. Speichermedium nach Anspruch 12: wobei die Vielzahl geschützter Domänen ferner einer Vielzahl von Verschlüsselungsschlüsseln zugeordnet ist; und wobei jede geschützte Domäne der Vielzahl geschützter Domänen einem bestimmten Verschlüsselungsschlüssel der Vielzahl von Verschlüsselungsschlüsseln zugeordnet ist.
    17. Speichermedium nach Anspruch 16: wobei die Vielzahl geschützter Domänen ferner einer Vielzahl von Benutzern zugeordnet ist; und wobei jede geschützte Domäne der Vielzahl geschützter Domänen einem bestimmten Benutzer der Vielzahl von Benutzern zugeordnet ist.
    18. Speichermedium nach Anspruch 12, wobei die Instruktionen die Maschine ferner veranlassen: einen Befehl zu identifizieren, eine zweite geschützte Domäne zur Vielzahl geschützter Domänen hinzuzufügen; eine zweite geschützte Speicherregion, die der zweiten geschützten Domäne zugeordnet ist, zu identifizieren; einen zweiten Verschlüsselungsschlüssel, der der zweiten geschützten Domäne zugeordnet ist, zu identifizieren; und die zweite geschützte Domäne auf der Basis der zweiten geschützten Speicherregion und des zweiten Verschlüsselungsschlüssels zu konfigurieren.
    19. Speichermedium nach Anspruch 18, wobei die Instruktionen die Maschine ferner veranlassen: einen Schutzmodus, der der zweiten geschützten Domäne zugeordnet ist, zu bestimmen; und die zweite geschützte Domäne auf der Basis des Schutzmodus zu konfigurieren.
    20. Speichermedium nach Anspruch 19, wobei der Schutzmodus umfasst: Klartextmodus; Standard-Verschlüsselungsmodus; oder benutzerdefinierter Verschlüsselungsmodus.
    21. System, umfassend: einen Speicher; einen Prozessor, um eine oder mehrere Instruktionen auszuführen, wobei die eine oder mehreren Instruktionen eine Speicherzugriffsoperation umfassen, die einem Speicherort des Speichers zugeordnet ist; eine Speicherverschlüsselungs-Steuereinheit, um: die Speicherzugriffsoperation, die dem Speicherort des Speichers zugeordnet ist, zu identifizieren; zu bestimmen, dass der Speicherort einer geschützten Domäne zugeordnet ist, wobei die geschützte Domäne einer geschützten Speicherregion des Speichers zugeordnet ist, und wobei die geschützte Domäne aus einer Vielzahl geschützter Domänen identifiziert wird, die einer Vielzahl geschützter Speicherregionen des Speichers zugeordnet ist; einen Verschlüsselungsschlüssel zu identifizieren, der der geschützten Domäne zugeordnet ist; eine Kryptographieoperation an Daten vorzunehmen, die der Speicherzugriffsoperation zugeordnet sind, wobei die Kryptographieoperation auf der Basis des Verschlüsselungsschlüssels vorgenommen wird, der der geschützten Domäne zugeordnet ist; und ein Ergebnis der Kryptographieoperation zurückzuführen, wobei das Ergebnis der Kryptographieoperation für die Speicherzugriffsoperation zu verwenden ist.
    22. System nach Anspruch 21: wobei die Vielzahl geschützter Domänen ferner einer Vielzahl von Benutzern eines Cloud-Serviceanbieters zugeordnet ist; und wobei jede geschützte Domäne der Vielzahl geschützter Domänen einem bestimmten Benutzer der Vielzahl von Benutzern zugeordnet ist.
    23. System nach Anspruch 21, wobei der Speicher einen Festspeicher zum Vorsehen einer persistenten Datenspeicherung umfasst.
    24. Verfahren, umfassend: Identifizieren einer Speicherzugriffsoperation, die einem Speicherort eines Speichers zugeordnet ist; Bestimmen, dass der Speicherort einer geschützten Domäne zugeordnet ist, wobei die geschützte Domäne einer geschützten Speicherregion des Speichers zugeordnet ist, und wobei die geschützte Domäne aus einer Vielzahl geschützter Domänen identifiziert wird, die einer Vielzahl geschützter Speicherregionen des Speichers zugeordnet ist; Identifizieren eines Verschlüsselungsschlüssels, der der geschützten Domäne zugeordnet ist; Vornehmen einer Kryptographieoperation an Daten, die der Speicherzugriffsoperation zugeordnet sind, wobei die Kryptographieoperation auf der Basis des Verschlüsselungsschlüssels vorgenommen wird, der der geschützten Domäne zugeordnet ist; und Zurückführen eines Ergebnisses der Kryptographieoperation, wobei das Ergebnis der Kryptographieoperation für die Speicherzugriffsoperation zu verwenden ist.
    25. Verfahren nach Anspruch 24, ferner umfassend: Identifizieren eines Befehls, um eine zweite geschützte Domäne zur Vielzahl geschützter Domänen hinzuzufügen; Identifizieren einer zweiten geschützten Speicherregion, die der zweiten geschützten Domäne zugeordnet ist; Identifizieren eines zweiten Verschlüsselungsschlüssels, der der zweiten geschützten Domäne zugeordnet ist; und Konfigurieren der zweiten geschützten Domäne auf der Basis der zweiten geschützten Speicherregion und des zweiten Verschlüsselungsschlüssels.
    DE102018004290.2A 2017-06-28 2018-05-29 Kryptographischer Speicherschutz mit Mehrfachschlüssel Pending DE102018004290A1 (de)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    US15/635,548 US20190004973A1 (en) 2017-06-28 2017-06-28 Multi-key cryptographic memory protection
    US15/635,548 2017-06-28

    Publications (1)

    Publication Number Publication Date
    DE102018004290A1 true DE102018004290A1 (de) 2019-01-03

    Family

    ID=64662038

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102018004290.2A Pending DE102018004290A1 (de) 2017-06-28 2018-05-29 Kryptographischer Speicherschutz mit Mehrfachschlüssel

    Country Status (3)

    Country Link
    US (2) US20190004973A1 (de)
    CN (2) CN109145611A (de)
    DE (1) DE102018004290A1 (de)

    Cited By (1)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US11687654B2 (en) 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains

    Families Citing this family (7)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    GB2563886B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Realm management unit-private memory regions
    CN112400170A (zh) * 2018-06-24 2021-02-23 海克斯伍安全公司 配置、实施和监控可信执行环境的分离
    US11397692B2 (en) 2018-06-29 2022-07-26 Intel Corporation Low overhead integrity protection with high availability for trust domains
    US20190342093A1 (en) * 2019-06-28 2019-11-07 Siddhartha Chhabra Converged cryptographic engine
    CN111130784B (zh) * 2019-12-25 2023-08-08 成都海光集成电路设计有限公司 一种密钥生成方法、装置、cpu芯片及服务器
    EP4237983A1 (de) * 2020-11-02 2023-09-06 INTEL Corporation Grafiksicherheit mit synergistischer verschlüsselung, inhaltsbasierter und ressourcenverwaltungstechnologie
    CN115421174B (zh) * 2022-08-31 2023-05-12 杭州数聚链科技有限公司 一种基于时空信息的无人机运动轨迹识别系统及方法

    Family Cites Families (16)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US7434068B2 (en) * 2001-10-19 2008-10-07 Intel Corporation Content protection in non-volatile storage devices
    EP1723564A2 (de) * 2004-02-11 2006-11-22 Storage Technology Corporation Geclusterte hierarchische dateidienste
    US20050188173A1 (en) * 2004-02-24 2005-08-25 Robert Hasbun Physical domain separation
    JP4885629B2 (ja) * 2006-06-29 2012-02-29 フェリカネットワークス株式会社 金融カードシステム、通信デバイス、認証端末、認証方法、及びプログラム。
    US9712495B2 (en) * 2011-05-03 2017-07-18 International Business Machines Corporation Methods and systems for selective encryption and secured extent quota management for storage servers in cloud computing
    FR2980285B1 (fr) * 2011-09-15 2013-11-15 Maxim Integrated Products Systemes et procedes de gestion de cles cryptographiques dans un microcontroleur securise
    US9270459B2 (en) * 2011-09-20 2016-02-23 Cloudbyte, Inc. Techniques for achieving tenant data confidentiality from cloud service provider administrators
    US9292673B2 (en) * 2013-03-15 2016-03-22 International Business Machines Corporation Virtual key management and isolation of data deployments in multi-tenant environments
    US9607177B2 (en) * 2013-09-30 2017-03-28 Qualcomm Incorporated Method for securing content in dynamically allocated memory using different domain-specific keys
    US9762573B2 (en) * 2014-05-30 2017-09-12 Verizon Patent And Licensing Inc. Biometric framework allowing independent application control
    US9419952B2 (en) * 2014-06-05 2016-08-16 Stmicroelectronics (Grenoble 2) Sas Memory encryption method compatible with a memory interleaved system and corresponding system
    US9626108B2 (en) * 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
    US10049001B1 (en) * 2015-03-27 2018-08-14 Amazon Technologies, Inc. Dynamic error correction configuration
    US10013364B1 (en) * 2015-06-26 2018-07-03 EMC IP Holding Company LLC Securing data using per tenant encryption keys
    US10447659B2 (en) * 2016-03-02 2019-10-15 Google Llc Sharing protected user content between devices
    US10296757B2 (en) * 2016-07-29 2019-05-21 Sap Se Appended key ID for key identification during data encryption

    Cited By (1)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US11687654B2 (en) 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains

    Also Published As

    Publication number Publication date
    CN115470530A (zh) 2022-12-13
    US20190004973A1 (en) 2019-01-03
    CN109145611A (zh) 2019-01-04
    US20210224202A1 (en) 2021-07-22

    Similar Documents

    Publication Publication Date Title
    DE102018004290A1 (de) Kryptographischer Speicherschutz mit Mehrfachschlüssel
    DE102015007571B4 (de) Keine-lokalität-hinweis-vektor-speicherzugriff-prozessoren, -verfahren, -systeme und -befehle
    DE102019109088A1 (de) Schutz von schlüsseln und sensitiven daten gegen angriffe in einer mikroprozessorarchitektur
    DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
    DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
    DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
    DE102019110309A1 (de) Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen
    DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
    DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
    DE112013005431T5 (de) Sichere Schlüsselableitungs- und Kryptografielogik für integrierte Schaltungen
    DE112017004017T5 (de) Sichere öffentliche cloud
    DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
    DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
    DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
    DE112017001766T5 (de) Power-side-channel-angriffsresistenter advanced-encryption-standard-beschleunigungsprozessor
    DE102015008012A1 (de) SM4-Beschleunigungsprozessoren, Verfahren, Systeme und Anweisungen
    DE112016004435T5 (de) Hardware-gestützte einseitige kryptografie
    DE102018004786A1 (de) Verfahren und Vorrichtung zum sicheren Binden eines ersten Prozessors an einen zweiten Prozessor
    DE102019109845A1 (de) Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia
    DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
    DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
    DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
    DE112013005428T5 (de) Befehle, Prozessoren, Verfahren und Systeme zum Verarbeiten sicherer Hash-Algorithmen
    DE102014003661A1 (de) Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken
    DE202019005682U1 (de) Hardwaregestützte Paging-Mechanismen

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed
    R130 Divisional application to

    Ref document number: 102018010510

    Country of ref document: DE