DE102019110309A1 - Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen - Google Patents

Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen Download PDF

Info

Publication number
DE102019110309A1
DE102019110309A1 DE102019110309.6A DE102019110309A DE102019110309A1 DE 102019110309 A1 DE102019110309 A1 DE 102019110309A1 DE 102019110309 A DE102019110309 A DE 102019110309A DE 102019110309 A1 DE102019110309 A1 DE 102019110309A1
Authority
DE
Germany
Prior art keywords
mac
memory
target data
processors
generating
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
DE102019110309.6A
Other languages
English (en)
Inventor
Baiju Patel
Kirk Yap
Siddhartha Chhabra
Rajat Agarwal
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 DE102019110309A1 publication Critical patent/DE102019110309A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Abstract

Es werden Techniken beschrieben, um eine kryptografische Speicherisolierung mit geringem Overhead bereitzustellen, um Angriffsschwachstellen in einer virtualisierten Mehrbenutzer-Rechenumgebung zu mindern. Speicherlese- und Speicherschreiboperationen für Zieldaten, wobei jede Operation über einen Befehl initiiert wird, der mit einer bestimmten virtuellen Maschine (VM) assoziiert ist, schließen die Generierung und/oder Validierung eines Nachrichtenauthentifizierungscodes ein, der wenigstens auf einem VM-spezifischen kryptografischen Schlüssel und einer physikalischen Speicheradresse der Zieldaten basiert. Derartige Operationen können ferner das Senden des generierten Nachrichtenauthentifizierungscodes über eine Vielzahl von Zusatzbits beinhalten, die innerhalb einer Datenzeile integriert sind, die die Zieldaten einschließt. Im Falle eines Validierungsfehlers können ein oder mehrere Fehlercodes generiert und verschiedenen Entitäten der Vertrauensdomänenarchitektur basierend auf einem Betriebsmodus der assoziierten virtuellen Maschine bereitgestellt werden.

Description

  • GEBIET DER TECHNIK
  • Die vorliegende Offenbarung betrifft die kryptografische Speicherisolierung für Mehrbenutzer-Rechenumgebungen und insbesondere Techniken zum Schutz gegen einen Integritätsfehler in Bezug auf eine derartige kryptografische Speicherisolierung.
  • HINTERGRUND
  • Die steigende Nachfrage nach robuster Computersicherheit hat zu einer weit verbreiteten Verwendung der Kryptografie in gängigen Computersystemen und Netzen sowie zur Entwicklung von immer ausgefeilteren und sichereren modernen Kryptografietechniken geführt. Beispielsweise kann die Plattenverschlüsselung zum Schutz von Daten verwendet werden, die sich auf einer persistenten Plattenspeichervorrichtung befinden, während die Netzverschlüsselung zum Schutz von Daten verwendet werden kann, die über ein Netz gesendet werden. Daten, die sich im Systemspeicher befinden, werden jedoch oftmals in Plaintext gespeichert und/oder gesendet und können daher für Angriffe anfällig sein. Beispielsweise können Angreifer eine Vielzahl von Techniken verwenden, um bösartig auf im Speicher gespeicherte Daten zuzugreifen, wie beispielsweise Bus-Scanning und/oder Speicher-Scanning, neben anderen Beispielen. Darüber hinaus könnten diese bösartigen Techniken in einigen Fällen dazu verwendet werden, um auf Speicherorte zuzugreifen, die Verschlüsselungsschlüssel enthalten, die in Plaintext gespeichert sind, wie beispielsweise Verschlüsselungsschlüssel, die für die Plattenverschlüsselung verwendet werden, wodurch ein weiterer unbefugter Zugriff auf andere durch Verschlüsselung geschützte Daten ermöglicht wird.
  • Die kryptografische Speicherisolierung für Benutzer-Workloads ist daher beim Cloud-Computing und anderen Szenarien mit mehreren Benutzern von signifikantem Vorteil, wie beispielsweise zum Verhindern, dass Prozesse, die von einem Benutzer eines oder mehrerer Rechensysteme initiiert werden, Zugriff auf Prozesse und Daten erhalten, die anderen Benutzern derselben Rechensysteme gehören (oder auf andere Weise damit assoziiert sind). Jüngste veröffentlichte Offenbarungen zu verschiedenen Fehlern in der bestehenden Verarbeitung und im Datenschutz haben die Bedeutung einer derartigen kryptografischen Isolierung unterstrichen.
  • Traditionelle Ansätze zur Sicherstellung der Integrität von Benutzerdaten und der Verarbeitung in solchen Szenarien weisen typischerweise verschiedene Nachteile auf. Beispielsweise verursachen Speicherintegritätsansätze, die einen Nachrichtenauthentifizierungscode (MAC, Message Authentication Code) mit jeder Datenzeile assoziieren, im Allgemeinen erhebliche Speicher-, Leistungs- und Bandbreiten-Overheads, da das Laden und Verifizieren eines derartigen MAC bei jedem Datenzeilenzugriff erforderlich ist. Darüber hinaus führen typische Reaktionen auf eine Erkennung eines Integritätsfehlers bei solchen Ansätzen zu Sicherheitsausnahmen, die im Allgemeinen dazu führen, dass Operationen für alle Prozesse innerhalb eines Zielrechensystems angehalten werden. Obgleich diese Lösung im Allgemeinen in einer Single-Client-Plattform als akzeptabel betrachtet wird, kann eine derartige Unterbrechung bei Mehrbenutzerplattformen die Plattformverfügbarkeit direkt und negativ beeinflussen - und kann zu signifikanten Daten-, Umsatz- und/oder Produktivitätsverlusten führen.
  • Daher sind Lösungen erforderlich, um eine kryptografische Isolierung für Mehrbenutzer-Rechenszenarien bereitzustellen und durchzusetzen, während gleichzeitig der zusätzliche Overhead, der sich aus einer derartigen kryptografischen Isolierung ergibt, minimiert wird, und dies bei minimaler Unterbrechung des oder der beteiligten assoziierten Rechensysteme.
  • Figurenliste
  • Merkmale und Vorteile verschiedener Ausführungsformen des beanspruchten Gegenstands werden im Verlauf der nachfolgenden detaillierten Beschreibung und unter Bezugnahme auf die Zeichnungen offensichtlich, wobei gleiche Bezugszeichen gleiche Teile bezeichnen, und in denen:
    • 1 eine schematische Darstellung einer beispielhaften vernetzten Rechenumgebung gemäß einer Ausführungsform von wenigstens einigen der hierin beschriebenen Techniken ist;
    • 2 eine beispielhafte Ausführungsform eines kryptografischen Speicherschutzsystems mit mehreren Schlüsseln gemäß wenigstens einigen der hierin vorgestellten Techniken veranschaulicht;
    • 3 ein Blockschaltbild einer beispielhaften Host-Rechenvorrichtung ist, die zum Durchführen von Operationen gemäß wenigstens einigen der hierin beschriebenen Techniken geeignet ist;
    • 4 einen beispielhaften Prozessfluss zum Verwalten verschlüsselter Daten gemäß wenigstens einigen der hierin vorgestellten Techniken veranschaulicht;
    • 5A-5B Blockschaltbilder darstellen, die Aspekte beispielhafter Rechensysteme veranschaulichen, die jeweils eine Vertrauensdomänenarchitektur gemäß wenigstens einigen der hierin vorgestellten Techniken implementieren; und
    • 6 einen beispielhaften Ausführungsfluss zum Behandeln von Speicherintegritätsfehlern über eine oder mehrere Vertrauensdomänenarchitekturen gemäß wenigstens einigen der hierin vorgestellten Techniken darstellt.
  • Obgleich die folgende detaillierte Beschreibung auf veranschaulichende Ausführungsformen Bezug nehmen wird, werden für Fachleute auf dem Gebiet viele Alternativen, Modifikationen und Variationen davon offensichtlich sein.
  • DETAILLIERTE BESCHREIBUNG
  • In der vorliegenden Beschreibung werden zahlreiche spezielle Details dargelegt, wie Beispiele von speziellen Typen von Prozessoren und Systemkonfigurationen, speziellen Hardwarestrukturen, speziellen architekturellen und mikroarchitekturellen Details, speziellen Registerkonfigurationen, speziellen Befehlstypen, speziellen Systemkomponenten, speziellen Messungen/Höhen, speziellen Prozessor-Pipeline-Stufen und -Betriebsabläufen usw., um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Es wird jedoch für Fachleute auf dem Gebiet offensichtlich sein, dass diese speziellen Details nicht zum Ausführen der vorliegenden Erfindung verwendet werden müssen. In anderen Fällen wurden wohlbekannte Komponenten oder Verfahren, wie beispielsweise spezielle und alternative Prozessorarchitekturen, spezielle Logikschaltungen oder spezieller Logikcode für beschriebene Algorithmen, spezieller Firmwarecode, spezieller Interconnect-Betrieb, spezielle Logikkonfigurationen, spezielle Herstellungstechniken und -materialien, spezielle Compiler-Implementierungen, spezieller Ausdruck von Algorithmen in Code, spezielle Abschalt- und Gating-Techniken/Logik und andere spezielle Betriebsdetails des Computersystems, nicht im Detail beschrieben, um eine unnötige Verschleierung der vorliegenden Erfindung zu vermeiden.
  • Hierin beschriebene Techniken sind im Allgemeinen auf verschiedene Ausführungsformen des kryptografischen Speicherschutzes gerichtet. Derartige Ausführungsformen können verwendet werden, um einen Speicherverschlüsselungsschutz bereitzustellen, wodurch eine zusätzliche Sicherheitsschicht bereitgestellt wird, indem Schwachstellen gemindert werden, die mit ungeschütztem oder unsicherem Speicher assoziiert sind. In einigen Ausführungsformen kann beispielsweise eine Speicherverschlüsselung bereitgestellt werden, indem eine kryptografische Engine oder ein Controller auf dem Speicherpfad oder Speicherbus implementiert wird. Auf diese Weise können Daten verschlüsselt und geschützt werden, während sie sich im Speicher befinden und während der Übertragung zum und vom Speicher (z. B. beim Senden vom Speicher zu einem Prozessor und umgekehrt über den Speicherbus oder Speicherpfad). Obgleich die Speicherverschlüsselung für bestimmte Benutzer und/oder Anwendungsfälle eine Notwendigkeit sein kann, kann ein einheitlicher Speicherschutz in einem Rechensystem unter bestimmten Umständen jedoch unzureichend sein. Beispielsweise hostet ein CSP oftmals Daten und/oder Anwendungen - oder Workloads - für mehrere Benutzer oder Dritte. Darüber hinaus könnte der CSP eine Speicherverschlüsselung verwenden, um einen einheitlichen Schutz aller gehosteten Benutzer-Workloads beispielsweise unter Verwendung eines einzelnen Verschlüsselungsschlüssels bereitzustellen. Es ist jedoch möglicherweise nicht ausreichend, einfach einen einheitlichen Speicherverschlüsselungsschutz für alle gehosteten Workloads bereitzustellen, ohne zwischen den Workloads verschiedener Benutzer zu unterscheiden. Beispielsweise können ein CSP und/oder seine Benutzer abgeneigt sein, für alle Benutzer denselben Verschlüsselungsschlüssel zu teilen. Vielmehr können der CSP und/oder seine Benutzer möglicherweise eine Speicherverschlüsselung auf Tenant-Basis (z. B. pro Benutzer oder pro virtueller Maschine) bevorzugen, um sicherzustellen, dass jede Benutzer-Workload unter Verwendung eines eindeutigen Verschlüsselungsschlüssels separat geschützt und isoliert wird.
  • Dementsprechend stellen die beschriebenen Ausführungsformen eine Speicherverschlüsselung bereit, die mehrere Schlüssel unterstützt und konfigurierbar oder programmierbar ist. Die Anzahl der unterstützten Schlüssel kann beispielsweise implementierungsabhängig sein. In einigen Ausführungsformen kann beispielsweise eine Speicherschutz-Engine konfiguriert oder programmiert werden (z. B. durch Software), um verschiedene Regionen oder Seiten des Speichers unter Verwendung verschiedener Verschlüsselungsschlüssel und/oder -algorithmen zu verschlüsseln. Beispielsweise kann in einigen Ausführungsformen ein Benutzer oder Tenant (z. B. ein CSP oder Benutzer) einen Schutzmodus für eine bestimmte Region oder Seite des Speichers entweder als Plaintext (z. B. unverschlüsselt), Standard- oder Default-Verschlüsselungsschutz (z. B. unter Verwendung eines Standard- oder globalen Verschlüsselungsschlüssels verschlüsselt) oder benutzerdefinierten Verschlüsselungsschutz (z. B. unter Verwendung eines eindeutigen Verschlüsselungsschlüssels verschlüsselt) festlegen. Auf diese Weise kann die Speicherverschlüsselung für verschiedene Tenants, Benutzer oder Schutzdomänen separat bereitgestellt und konfiguriert werden. In einigen Ausführungsformen kann beispielsweise eine „Domäne“ als eine Sammlung von Ressourcen betrachtet werden, die mit einer bestimmten Workload assoziiert sind, was beliebige Speicherregionen beinhalten kann, die Daten enthalten, die mit der Workload assoziiert sind. Darüber hinaus kann die Speicherverschlüsselung für jede Domäne separat konfiguriert werden, so dass jede Domäne oder Workload unter Verwendung eines separaten Verschlüsselungsschlüssels geschützt werden kann. Auf diese Weise kann eine kryptografische Isolierung für Workloads verschiedener Benutzer erzielt werden. Darüber hinaus können die Workloads auch von Managementsoftware (z. B. von einem CSP), wie beispielsweise einem Virtual Machine Manager, isoliert werden. Domänen können auch im Plaintext-Modus konfiguriert werden, da es unter bestimmten Umständen unerwünscht sein kann, eine Speicherverschlüsselung für eine bestimmte Domäne durchzuführen (z. B. um Auswirkungen auf die Leistung bei der Speicherverschlüsselung zu vermeiden, Speicher (und E/A) zwischen verschiedenen Entitäten gemeinsam zu nutzen, Speicher zurückzugewinnen und so weiter).
  • Die beschriebenen Ausführungsformen können zahlreiche Merkmale und Vorteile bereitstellen, darunter kryptografischen Speicherschutz (z. B. über eine kryptografische Engine im Speicherpfad), Unterstützung für die Verschlüsselung mit mehreren Schlüsseln und softwareprogrammierbare Konfigurierbarkeit und Flexibilität. Diese Merkmale ermöglichen den isolierten Verschlüsselungsschutz unter Verwendung separater Schlüssel für verschiedene Domänen, Speicherregionen, Workloads, Tenants und/oder Benutzer und bieten somit Unterstützung für mehrere kryptografisch isolierte Schutzdomänen. Auf diese Weise können die beschriebenen Ausführungsformen verwendet werden, um erhöhte Sicherheitsanforderungen für bestimmte Benutzer und/oder Anwendungsfälle, wie beispielsweise CSPs mit gehosteten Workloads mehrerer Dritter oder Benutzer, zu erfüllen. Die beschriebenen Ausführungsformen können auch verwendet werden, um die Leistungsvorteile der Verwendung von Speicher für die persistente Datenspeicherung (z. B. NVDIMM oder anderer Speicherklassenspeicher (SCM, Storage Class Memory)) zu nutzen, ohne die Sicherheit zu beeinträchtigen.
  • Somit ist die vorliegende Offenbarung auf Techniken zum Bereitstellen einer kryptografischen Speicherisolierung innerhalb eines Mehrbenutzer-Rechensystems gerichtet, wie beispielsweise Rechensysteme, die für „Cloud-Computing“ oder andere verteilte Rechenplattformen verwendet werden, und solche, die in Verbindung mit mehreren Verschlüsselungsschlüsseln und/oder zusätzlichen Techniken verwendet werden können, die sich auf MKTME- (Multi-Key-Total-Memory-Encryption-) Operationen beziehen. Derartige Techniken können das Bereitstellen einer Nachrichtenauthentifizierungscode(MAC, Message Authentication Code)-Konstruktion mit minimalem Leistungs-Overhead sowie das Bereitstellen einer sicheren Benachrichtigung an vertrauenswürdige Softwareanwendungen bei Integritätsfehlern beinhalten, so dass diese vertrauenswürdige Software Korrekturmaßnahmen ergreifen kann (wie beispielsweise basierend auf einer oder mehreren Softwarerichtlinien). Derartige Techniken können zusätzlich zum Schutz gegen Speicherinvasionsangriffe wie Splicing, Spoofing (oder Relocation) und domänenübergreifenden Angriffen verwendet werden.
  • Die hierin beschriebenen Techniken können in wenigstens einigen Ausführungsformen das Implementieren einer Speicherintegritätslösung mit geringem Overhead durch Umfunktionierung oder anderweitige Nutzung von Zusatzbits beinhalten (wie beispielsweise Fehlerkorrekturcode(ECC, Error Correction Code)-Bits oder andere Bits, die mit Daten auf dem Speicherbus gesendet werden, anstatt dass ein separater Fetch von zusätzlichem Speicher erforderlich ist), um einen MAC zu senden, ohne den mit einem separaten Fetch assoziierten Betriebs-Overhead zu verursachen. Als ein nicht einschränkendes Beispiel implementieren verschiedene Serverplattformen mehrere RAS-Merkmale und Leistungsoptimierungen, für die Bits erforderlich sind, die über den Speicherbus mit der Datenzeile übertragen werden. Wie an anderer Stelle hierin detaillierter beschrieben, können derartige Bits so umfunktioniert werden, dass sie einen eingebetteten MAC beinhalten. Darüber hinaus kann in verschiedenen Ausführungsformen einem oder mehreren Benutzern ermöglicht werden, sich ausdrücklich für derartige Techniken „zu entscheiden“ (Opt-in), beispielsweise falls die Nutzung derartiger Zusatzbits für eine sichere MAC-Übertragung als weniger wünschenswert erachtet wird als andere Merkmale, für die derartige Zusatzbits genutzt werden können. Die Nutzung derartiger Zusatzbits, die mit Daten übertragen werden, kann jedoch möglicherweise keine zusätzlichen Speicherzugriffe (und entsprechende Bandbreitenressourcen) verursachen. Daher können die beschriebenen Techniken in derartigen Ausführungsformen möglicherweise nicht die Verwendung von zusätzlichem ECC oder anderem Speicher erfordern und können somit verschiedene mit einer solchen Verwendung assoziierte Kosten eliminieren oder reduzieren.
  • In wenigstens einigen Ausführungsformen kann ein MAC, der über derartige Zusatzbits gesendet wird, speziell konstruiert sein, um verschiedene Klassen von Angriffen zu mindern oder zu verhindern, wie beispielsweise Angriffe, die von einem oder mehreren Angreifern mit physikalischem Zugriff auf ein Mehrbenutzersystem durchgeführt werden können. Als nicht einschränkende Beispiele können derartige Angriffe Spoofing (bei dem ein Angreifer in der Lage ist, eine Cachezeile im Speicher oder über den Speicherbus zu modifizieren); Splicing (bei dem ein Angreifer in der Lage ist, Cachezeilen zwischen verschiedenen physikalischen Orten auszutauschen); und domänenübergreifende Angriffe (bei denen ein Angreifer Chiffretext und/oder einen entsprechenden MAC eines Benutzers oder einer VM aufzeichnen und zu einem späteren Zeitpunkt für einen anderen Benutzer oder eine andere VM gültig nutzen kann) beinhalten.
  • Hierin beschriebene Techniken können in bestimmten Ausführungsformen ferner das Bereitstellen einer neuartigen Reaktion auf Speicherintegritätsfehler in Form eines Seitenfehlercodes beinhalten, um vertrauenswürdigen Softwareanwendungen das Auftreten eines derartigen Speicherintegritätsfehlers anzuzeigen. Auf diese Weise kann einer vertrauenswürdigen Softwareanwendung ermöglicht werden, auf den Speicherintegritätsfehler zu reagieren und dennoch ein Rücksetzen des Systems zu vermeiden, das andernfalls aus einem derartigen Fehler resultieren könnte. In wenigstens einigen Ausführungsformen werden die hierin beschriebenen Techniken als kryptografisch sicher bereitgestellt und beinhalten Unterstützung für mehrere Verschlüsselungsschlüssel/MKTME (Multi-Key Total Memory Encryption), Replay-Prävention und kryptografisch starke Datenkorruptionserkennung, selbst durch einen Angreifer mit physikalischem Zugriff auf das Rechensystem.
  • Wie hierin verwendet, kann sich der Begriff „Vorrichtung“ auf eine speicherbasierte integrierte Schaltung oder andere Schaltungskomponente beziehen und kann einen beliebigen geeigneten Hardware- oder Logikchip zum Speichern einer vorbestimmten Anzahl von Bits in einer Speichervorrichtung aufweisen. Sofern der Kontext nicht eindeutig etwas anderes angibt, können die Begriffe „Benutzer“, „Kunde“ und „Tenant“, wie hierin verwendet, austauschbar verwendet werden. Auch, wie hierin verwendet, können sich „pro Tenant“-Schlüssel und/oder - Workloads auf eine Segmentierung pro Benutzer, pro Domäne oder eine andere geeignete Segmentierung derartiger Schlüssel und/oder Workloads beziehen. Wie hierin verwendet, bezieht sich die Trusted Computing Base (TCB) eines Systems auf einen Satz von Hardware-, Firmware- und/oder Softwarekomponenten, die in der Lage sind, das Vertrauen für den Gesamtbetrieb des Systems zu beeinflussen. Auch, wie hierin verwendet, kann eine „Domäne“ als eine Sammlung von Ressourcen betrachtet werden, die mit einer bestimmten Workload oder einem bestimmten Ausführungskontext assoziiert sind, was beliebige Speicherregionen beinhalten kann, die Daten enthalten, die mit der Workload assoziiert sind.
  • Hierin beschriebene Techniken stellen kryptografisch sichere Speicherisolierungsverfahren bereit, während gleichzeitig Fehlerkorrekturfähigkeiten beibehalten werden, um einen Hochleistungsspeicher bereitzustellen, der zufällige Bitfehler, Ausfälle von speicherbasierten integrierten Schaltungen und bösartige Gegner mindern kann. Eine speicherbasierte integrierte Schaltung, die hierin auch als eine Vorrichtung bezeichnet wird, kann einen beliebigen geeigneten Hardware- oder Logikchip zum Speichern einer vorbestimmten Anzahl von Bits in einer Speichervorrichtung aufweisen. Die hierin beschriebenen Techniken sind kryptografisch sicher und gewährleisten die Speicherintegrität, einschließlich mittels Unterstützung mehrerer Verschlüsselungsschlüsselansätze, wie beispielsweise MKTME (Multi-Key Total Memory Encryption), Replay-Prävention und kryptografisch starker Datenkorruptionserkennung, selbst bei einem physikalischen Gegner. Zusätzlich erfordern die hierin beschriebenen Techniken möglicherweise nicht die Verwendung eines zusätzlichen ECC-Speichers und reduzieren somit die Speicherkosten. Daher können derartige Techniken in verschiedenen Ausführungsformen in Verbindung mit oder anstelle von anderen ECC-Erkennungsmechanismen verwendet werden.
  • In einigen Ausführungsformen kann eine Rechenvorrichtung einen ersten MAC basierend auf Daten, die im Systemspeicher gespeichert sind, in Reaktion auf eine Schreiboperation zum Systemspeicher speichern. Ein MAC, wie hierin erwähnt, kann einen beliebigen geeigneten Nachrichtenauthentifizierungscode aufweisen, der eine kryptografische Hash-Funktion und einen geheimen kryptografischen Schlüssel beinhaltet. In einigen Ausführungsformen kann die Rechenvorrichtung auch eine Leseoperation entsprechend den im Systemspeicher gespeicherten Daten erkennen und einen zweiten MAC basierend auf den im Systemspeicher gespeicherten Daten berechnen. Die Rechenvorrichtung kann auch bestimmen, dass der zweite MAC nicht mit dem ersten gespeicherten MAC übereinstimmt, und den zweiten MAC neu berechnen (in verschiedenen Ausführungsformen nach einer Korrekturoperation). Ferner kann die Rechenvorrichtung die im Systemspeicher gespeicherten Daten in Reaktion auf das Erkennen, dass der neu berechnete zweite MAC mit dem ersten MAC übereinstimmt, entschlüsseln und die entschlüsselten Daten zum Cache senden.
  • 1 veranschaulicht eine schematische Darstellung einer beispielhaften vernetzten Rechenumgebung 100 gemäß einer Ausführungsform verschiedener hierin beschriebener Techniken. In verschiedenen Ausführungsformen können die vernetzte Rechenumgebung 100 und/oder ihre zugrunde liegenden Komponenten bestimmte kryptografische Speicherschutzfunktionalität aufweisen, wie in dieser Offenbarung beschrieben. Beispielsweise kann ein Cloud-Dienstanbieter (CSP, Cloud Service Provider) 120 Workloads 130 (z. B. Daten und/oder Anwendungen) für mehrere Benutzer oder Dritte hosten. Dementsprechend kann ein CSP 120 in einigen Ausführungsformen einen kryptografischen Speicherschutz mit mehreren Schlüsseln implementieren, um eine Speicherverschlüsselung auf Tenant-Basis bereitzustellen, wodurch sichergestellt wird, dass jede Benutzer-Workload 130 unter Verwendung eines eindeutigen Verschlüsselungsschlüssels separat geschützt und isoliert wird. Der kryptografische Speicherschutz kann auch durch andere Komponenten der vernetzten Rechenumgebung 100 implementiert werden, wie beispielsweise durch Edge-Vorrichtungen 110. Beispielhafte Ausführungsformen des kryptografischen Speicherschutzes werden in dieser Offenbarung näher beschrieben.
  • Die Edge-Vorrichtungen 110 können beliebige Geräte und/oder Vorrichtungen beinhalten, die in der Nähe des „Rands“ (Edge) eines Kommunikationsnetzes 150 eingesetzt oder angeschlossen werden. In der veranschaulichten Ausführungsform beinhalten die Edge-Vorrichtungen 110 Endbenutzervorrichtungen 112 (z. B. Desktops, Laptops, Mobilvorrichtungen), Internet-der-Dinge(IoT, Internet-of-Things)-Vorrichtungen 114 und Gateways und/oder Router 116, neben anderen Beispielen. Die Edge-Vorrichtungen 110 können miteinander und/oder mit anderen entfernten Netzen und Diensten (z. B. Cloud-Diensten 120) über ein oder mehrere Netze und/oder Kommunikationsprotokolle, wie beispielsweise das Kommunikationsnetz 150, kommunizieren. Darüber hinaus können eine oder mehrere der Edge-Vorrichtungen 110 eine oder mehrere Ausführungsformen der in dieser Offenbarung beschriebenen kryptografischen Speicherschutzfunktionalität aufweisen.
  • Die Endbenutzervorrichtungen 112 können eine beliebige Vorrichtung beinhalten, die eine Benutzerinteraktion mit der vernetzten Rechenumgebung 100 ermöglicht oder erleichtert, darunter beispielsweise Desktop-Computer, Laptops, Tablets, Mobiltelefone und andere mobile Vorrichtungen sowie tragbare Vorrichtungen (z. B. intelligente Uhren, intelligente Brillen, Headsets), neben anderen Beispielen.
  • Die IoT-Vorrichtungen 114 können eine beliebige Vorrichtung beinhalten, die in der Lage ist, mit einem Internet-der-Dinge(IoT, Internet-of-Things)-System oder -Netz zu kommunizieren und/oder daran teilzunehmen. IoT-Systeme können sich auf neue oder verbesserte Ad-hoc-Systeme und -Netze beziehen, die aus mehreren unterschiedlichen Vorrichtungen (z. B. IoT-Vorrichtungen 114) bestehen, die für eine bestimmte Anwendung oder einen bestimmten Anwendungsfall zusammenarbeiten und synergistisch wirken. Derartige Ad-hoc-Systeme entstehen immer häufiger, da sich immer mehr Produkte und Geräte entwickeln und „intelligent“ werden, das heißt, dass sie von Computerprozessoren gesteuert oder überwacht werden und in der Lage sind, mit anderen Vorrichtungen zu kommunizieren. Beispielsweise kann eine IoT-Vorrichtung 114 einen Computerprozessor und/oder eine Kommunikationsschnittstelle beinhalten, um eine Interoperation mit anderen Komponenten der vernetzten Rechenumgebung 100 zu ermöglichen, wie beispielsweise mit Cloud-Diensten 120 und/oder anderen Edge-Vorrichtungen 110. Die IoT-Vorrichtungen 114 können „Greenfield“-Vorrichtungen, die von Grund auf mit IoT-Fähigkeiten entwickelt werden, oder „Brownfield“-Vorrichtungen, die durch die Integration von IoT-Fähigkeiten in vorhandene Legacy-Vorrichtungen, die ursprünglich ohne IoT-Fähigkeiten entwickelt wurden, erstellt werden, sein. Beispielsweise können die IoT-Vorrichtungen 114 in einigen Fällen aus Sensoren und Kommunikationsmodulen aufgebaut sein, die in „Dinge“ integriert oder an diesen angebracht sind, wie beispielsweise Geräte, Spielzeuge, Werkzeuge, Fahrzeuge, Lebewesen (z. B. Pflanzen, Tiere, Menschen) und so weiter. Alternativ oder zusätzlich können bestimmte IoT-Vorrichtungen 114 auf Zwischenkomponenten, wie beispielsweise Edge-Gateways oder -Router 116, angewiesen sein, um mit den verschiedenen Komponenten der vernetzten Rechenumgebung 100 zu kommunizieren.
  • Die IoT-Vorrichtungen 114 können verschiedene Typen von Sensoren zum Überwachen, Erkennen, Messen und Generieren von Sensordaten und -signalen beinhalten, die mit Eigenschaften ihrer Umgebung assoziiert sind. Beispielsweise kann ein gegebener Sensor konfiguriert sein, um eine oder mehrere jeweilige Eigenschaften zu erkennen, wie beispielsweise Bewegung, Gewicht, physikalischer Kontakt, biometrische Eigenschaften, Temperatur, Wind, Lärm, Licht, Position, Feuchtigkeit, Strahlung, Flüssigkeit, spezielle chemische Verbindungen, Batterielebensdauer, drahtlose Signale, Computerkommunikation und Bandbreite, neben anderen Beispielen. Sensoren können physikalische Sensoren (z. B. physikalische Überwachungskomponenten) und virtuelle Sensoren (z. B. softwarebasierte Überwachungskomponenten) beinhalten. Die IoT-Vorrichtungen 114 können auch Aktuatoren beinhalten, um verschiedene Aktionen in ihren jeweiligen Umgebungen durchzuführen. Beispielsweise kann ein Aktuator verwendet werden, um eine bestimmte Funktionalität selektiv zu aktivieren, wie beispielsweise das Umschalten des Stroms oder Betriebs eines Sicherheitssystems (z. B. Alarm, Kamera, Schlösser) oder eines Haushaltsgeräts (z. B. Audiosystem, Beleuchtung, HLK-Geräte, Garagentore), neben anderen Beispielen.
  • In der Tat wird in dieser Offenbarung die Verwendung eines potenziell grenzenlosen Universums von IoT-Vorrichtungen 114 und assoziierten Sensoren/Aktuatoren erwogen. Die IoT-Vorrichtungen 114 können beispielsweise einen beliebigen Typ von Geräten und/oder Vorrichtungen beinhalten, die mit einem beliebigen Typ von vernetzter Rechenumgebung 100 und/oder Industrie assoziiert sind, darunter unter anderem Transport (z. B. Automobil, Fluggesellschaften), industrielle Fertigung, Energie (z. B. Kraftwerke), Telekommunikation (z. B. Internet-, Mobilfunk- und Fernsehdienstleister), Medizin (z. B. Gesundheitswesen, Pharma), Lebensmittelverarbeitung und/oder Einzelhandel. In der Transportindustrie können die IoT-Vorrichtungen 114 beispielsweise Geräte und Vorrichtungen beinhalten, die mit Flugzeugen, Automobilen oder Schiffen assoziiert sind, wie beispielsweise Navigationssysteme, autonome Flug- oder Fahrsysteme, Verkehrssensoren und -steuerungen und/oder beliebige interne mechanische oder elektrische Komponenten, die von Sensoren überwacht werden (z. B. Motoren). Die IoT-Vorrichtungen 114 können auch Geräte, Vorrichtungen und/oder Infrastrukturen beinhalten, die mit industrieller Fertigung und Produktion, Versand (z. B. Frachtverfolgung), Kommunikationsnetzen (z. B. Gateways, Router, Server, Mobilfunkmasten), Serverfarmen, elektrischen Kraftwerken, Windparks, Öl- und Gaspipelines, Wasseraufbereitung und -verteilung, Abwassersammlung und -aufbereitung und Wetterüberwachung (z. B. Temperatur-, Wind- und Feuchtigkeitssensoren) assoziiert sind, neben anderen Beispielen. Die IoT-Vorrichtungen 114 können beispielsweise auch einen beliebigen Typ einer „intelligenten“ Vorrichtung oder eines „intelligenten“ Systems beinhalten, wie beispielsweise intelligente Unterhaltungssysteme (z. B. Fernseher, Audiosysteme, Videospielsysteme), intelligente Haushalts- oder Bürogeräte (z. B. Geräte für Heizung, Lüftung und Klima (HLK), Kühlschränke, Waschmaschinen und Trockner, Kaffeemaschinen), Leistungsregelungssysteme (z. B. automatische Strom-, Licht- und HLK-Regelungen), Sicherheitssysteme (z. B. Alarme, Schlösser, Kameras, Bewegungsmelder, Fingerabdruckscanner, Gesichtserkennungssysteme) und andere Hausautomationssysteme, neben anderen Beispielen. Die IoT-Vorrichtungen 114 können statisch angeordnet sein, wie beispielsweise an einem Gebäude, einer Wand, einem Boden, einem Gelände, einem Laternenpfahl, einem Schild, einem Wasserturm oder einer anderen festen oder statischen Struktur montiert. Die IoT-Vorrichtungen 114 können auch mobil sein, wie beispielsweise Vorrichtungen in Fahrzeugen oder Flugzeugen, Drohnen, Paketen (z. B. zum Verfolgen von Fracht), mobilen Vorrichtungen und tragbaren Vorrichtungen, neben anderen Beispielen. Darüber hinaus kann eine IoT-Vorrichtung 114 auch ein beliebiger Typ einer Edge-Vorrichtung 110 sein, einschließlich Endbenutzervorrichtungen 112 und Edge-Gateways und-Routern 116.
  • Edge-Gateways und/oder -Router 116 können verwendet werden, um die Kommunikation zu und von den Edge-Vorrichtungen 110 zu ermöglichen. Beispielsweise können die Gateways 116 Kommunikationsfähigkeiten für vorhandene Legacy-Vorrichtungen bereitstellen, die ursprünglich ohne derartige Fähigkeiten entwickelt wurden (z. B. „Brownfield“-IoT-Vorrichtungen). Die Gateways 116 können auch genutzt werden, um die geografische Reichweite der Edge-Vorrichtungen 110 mit kurzstreckigen, proprietären oder anderweitig eingeschränkten Kommunikationsfähigkeiten zu erweitern, wie beispielsweise IoT-Vorrichtungen 114 mit Bluetooth- oder ZigBee-Kommunikationsfähigkeiten. Beispielsweise können die Gateways 116 durch Bereitstellen eines Fronthauls für die IoT-Vorrichtungen 114 unter Verwendung ihrer nativen Kommunikationsfähigkeiten (z. B. Bluetooth, ZigBee) und Bereitstellen eines Backhauls für andere Netze 150 und/oder Cloud-Dienste 120 unter Verwendung eines anderen drahtgebundenen oder drahtlosen Kommunikationsmediums (z. B. Ethernet, Wi-Fi, Mobilfunk) als Vermittler zwischen den IoT-Vorrichtungen 114 und entfernten Netzen oder Diensten dienen. In einigen Ausführungsformen kann ein Gateway 116 durch eine dedizierte Gateway-Vorrichtung oder durch eine Allzweckvorrichtung, wie beispielsweise eine andere IoT-Vorrichtung 114, eine Endbenutzervorrichtung 112 oder einen anderen Typ von Edge-Vorrichtung 110, implementiert werden.
  • In einigen Fällen können die Gateways 116 auch bestimmte Netzmanagement- und/oder Anwendungsfunktionalität (z. B. IoT-Management- und/oder IoT-Anwendungsfunktionalität für IoT-Vorrichtungen 114) entweder separat oder in Verbindung mit anderen Komponenten, wie beispielsweise Cloud-Diensten 120 und/oder anderen Edge-Vorrichtungen 110, implementieren. Beispielsweise können in einigen Ausführungsformen Konfigurationsparameter und/oder Anwendungslogik zu oder von einer Gateway-Vorrichtung 116 verschoben oder gezogen werden, so dass die IoT-Vorrichtungen 114 (oder andere Edge-Vorrichtungen 110) in Reichweite oder Nähe des Gateways 116 für eine bestimmte IoT-Anwendung oder einen bestimmten Anwendungsfall konfiguriert werden können.
  • Cloud-Dienste 120 können Dienste beinhalten, die entfernt über ein Netz 150 oder in der „Cloud“ gehostet werden. In einigen Ausführungsformen können die Cloud-Dienste 120 beispielsweise entfernt auf Servern im Datenzentrum (z. B. Anwendungsservern oder Datenbankservern) gehostet werden. Die Cloud-Dienste 120 können beliebige Dienste beinhalten, die von oder für Edge-Vorrichtungen 110 genutzt werden können, darunter, ohne darauf beschränkt zu sein, Daten- und Anwendungs-Hosting, Rechendienste (z. B. Datenanalytik, Suche, Diagnose 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, Social Networking, Nachrichten und Wetter, neben anderen Beispielen. Darüber hinaus können bestimmte Cloud-Dienste 120 in einigen Ausführungsformen die in dieser Offenbarung beschriebene kryptografische Speicherschutzfunktionalität aufweisen. Beispielsweise hostet ein CSP 120 oftmals Workloads 130 (z. B. Daten und/oder Anwendungen) für mehrere Benutzer oder Dritte. Dementsprechend kann ein CSP 120 in einigen Ausführungsformen einen kryptografischen Speicherschutz mit mehreren Schlüsseln implementieren, um eine Speicherverschlüsselung auf Tenant-Basis bereitzustellen, wodurch sichergestellt wird, dass jede Benutzer-Workload 130 unter Verwendung eines eindeutigen Verschlüsselungsschlüssels separat geschützt und isoliert wird.
  • Das Netz 150 kann verwendet werden, um eine Kommunikation zwischen den Komponenten der vernetzten Rechenumgebung 100 zu ermöglichen. Beispielsweise können die Edge-Vorrichtungen 110, wie beispielsweise die Endbenutzervorrichtungen 112 und die IoT-Vorrichtungen 114, das Netz 150 verwenden, um miteinander zu kommunizieren und/oder auf einen oder mehrere entfernte Cloud-Dienste 120 zuzugreifen. Das Netz 150 kann eine beliebige Anzahl oder einen beliebigen Typ von Kommunikationsnetzen beinhalten, darunter beispielsweise lokale Netze, Weitverkehrsnetze, öffentliche Netze, das Internet, Mobilfunknetze, Wi-Fi-Netze, Nahbereichsnetze (z. B. Bluetooth oder ZigBee) und/oder andere drahtgebundene oder drahtlose Netze oder Kommunikationsmedien.
  • Beliebige, alle oder einige der Rechenvorrichtungen der vernetzten Rechenumgebung 100 können angepasst sein, um ein beliebiges Betriebssystem auszuführen, darunter Linux oder andere UNIX-basierte Betriebssysteme, Microsoft Windows, Windows Server, MacOS, Apple iOS, Google Android oder ein beliebiges kundenspezifisches und/oder proprietäres Betriebssystem, zusammen mit virtuellen Maschinen, die zur Virtualisierung der Ausführung eines bestimmten Betriebssystems angepasst werden.
  • Während beschrieben wird, dass 1 eine Vielzahl von Elementen enthält oder mit diesen assoziiert ist, können nicht alle Elemente, die in der vernetzten Rechenumgebung 100 aus 1 veranschaulicht sind, in jeder alternativen Implementierung der vorliegenden Offenbarung genutzt werden. Zusätzlich können eines oder mehrere der in Verbindung mit den Beispielen aus 1 beschriebenen Elemente außerhalb der vernetzten Rechenumgebung 100 angeordnet sein, während in anderen Fällen bestimmte Elemente innerhalb oder als Teil eines oder mehrerer der anderen beschriebenen Elemente beinhaltet sein können, ebenso wie andere Elemente, die in der veranschaulichten Implementierung nicht beschrieben sind. Ferner können bestimmte in 1 veranschaulichte Elemente mit anderen Komponenten kombiniert sowie für alternative oder zusätzliche Zwecke zusätzlich zu den hierin beschriebenen Zwecken verwendet werden.
  • 2 veranschaulicht eine beispielhafte Ausführungsform eines kryptografischen Speicherschutzsystems 200 mit mehreren Schlüsseln. In der veranschaulichten Ausführungsform weist das Speicherschutzsystem 200 einen Prozessor 202, einen Systemagenten 204 und einen Speicher 210 auf. Wie weiter unten beschrieben, stellt das Speicherschutzsystem 200 einen kryptografischen Schutz von im Speicher 210 gespeicherten Daten bereit.
  • Der Prozessor 202 kann verwendet werden, um Befehle, Code und/oder eine beliebige andere Form von Logik oder Software auszuführen, wie beispielsweise Befehle, die mit einer Softwareanwendung assoziiert sind. Der Prozessor 202 kann eine beliebige Kombination von Logik- oder Verarbeitungselementen aufweisen, die zum Ausführen von Befehlen betriebsfähig sind, egal ob aus dem Speicher geladen oder direkt in der Hardware implementiert, wie beispielsweise einen Mikroprozessor, einen digitalen Signalprozessor, ein feldprogrammierbares Gate-Array (FPGA), eine Grafikverarbeitungseinheit (GPU, Graphics Processing Unit), ein programmierbares Logik-Array (PLA) oder eine anwendungsspezifische integrierte Schaltung (ASIC, Application-Specific Integrated Circuit), neben anderen Beispielen. In einigen Ausführungsformen können beispielsweise der Prozessor 202 und/oder das Speicherschutzsystem 200 unter Verwendung der Computerarchitekturen aus 6-10 implementiert werden.
  • Der Speicher 210 kann verwendet werden, um Informationen zu speichern, wie beispielsweise Code und/oder Daten, die vom Prozessor 202 während der Ausführung verwendet werden, und/oder persistente Daten, die mit einer Anwendung oder einem Benutzer des Systems 200 assoziiert sind. Der Speicher 210 kann einen beliebigen Typ oder eine beliebige Kombination von Komponenten aufweisen, die in der Lage sind, Informationen zu speichern, einschließlich eines flüchtigen Speichers (z. B. Direktzugriffsspeicher (RAM, Random Access Memory), wie beispielsweise dynamisches RAM (DRAM), synchrones DRAM (SDRAM) und statisches RAM (SRAM)) und/oder eines nichtflüchtigen Speichers (z. B. Speicherklassenspeicher (SCM, Storage Class Memory), Direct-Access-Storage(DAS)-Speicher, nichtflüchtige Dual-Inline-Speichermodule (NVDIMM, Non-Volatile Dual In-Line Memory Modules) und/oder andere Formen von Flash- oder Solid-State-Speicherung).
  • Der Systemagent 204 kann verwendet werden, um verschiedene Funktionen für den Prozessor 202 bereitzustellen, wie beispielsweise das Management des Zugriffs auf den Speicher 210 und/oder andere Ressourcen des Systems 200. In der veranschaulichten Ausführungsform weist der Systemagent 204 beispielsweise einen Speichercontroller 208 auf, um den Zugriff auf den Speicher 210 des Systems 200 zu steuern und/oder zu verwalten. Darüber hinaus weist der Systemagent 204, wie weiter unten beschrieben, auch einen Speicherschutzcontroller 206 zum Schutz von im Speicher 210 gespeicherte Daten auf. In einigen Ausführungsformen kann der Systemagent 204 auch eine Schnittstelle zwischen dem Prozessor 202 und anderen Komponenten des Systems 200 bereitstellen (z. B. unter Verwendung einer direkten Medienschnittstelle (DMI, Direct Media Interface) und/oder einer PCI-Express-Brücke). In verschiedenen Ausführungsformen kann der Systemagent 204 eine beliebige Kombination von Logikelementen beinhalten, die konfiguriert sind, um die Funktionalität des hierin beschriebenen Systemagenten 204 durchzuführen, egal ob aus dem Speicher oder einem anderen nichtflüchtigen computerlesbaren Medium geladen oder direkt in Hardware implementiert, einschließlich durch nicht einschränkende Beispiele: einen Mikroprozessor, einen digitalen Signalprozessor (DSP), ein feldprogrammierbares Gate-Array (FPGA), eine Grafikverarbeitungseinheit (GPU, Graphics Processing Unit), ein programmierbares Logik-Array (PLA), eine anwendungsspezifische integrierte Schaltung (ASIC, Application-Specific Integrated Circuit) und/oder einen Prozessor für eine virtuelle Maschine (VM). Der Systemagent 204 kann in den Prozessor 202 integriert sein, oder alternativ kann der Systemagent 204 auf einem separaten Chip implementiert sein, der kommunikativ mit dem Prozessor 202 gekoppelt oder verbunden ist.
  • Der Speichercontroller 208 kann verwendet werden, um den Zugriff auf den Speicher 210 des Systems 200 zu steuern und/oder zu verwalten. In verschiedenen Ausführungsformen kann der Speichercontroller 208 unter Verwendung einer beliebigen Kombination von Hardware- und/oder Softwarelogik implementiert werden, darunter ein Mikroprozessor, eine anwendungsspezifische integrierte Schaltung (ASIC, Application-Specific Integrated Circuit), ein feldprogrammierbares Gate-Array (FPGA), ein programmierbares Logik-Array (PLA), eine virtuelle Maschine (VM) und/oder jeder andere Typ von Schaltungen oder Logik.
  • In der veranschaulichten Ausführungsform stellt das System 200 einen kryptografischen Speicherschutz für den Speicher 210 bereit. In einigen Ausführungsformen kann beispielsweise ein kryptografischer Speicherschutz implementiert werden, indem eine bestimmte Computerarchitektur erweitert und/oder modifiziert wird. Beispielsweise kann ein kryptografischer Speicherschutz implementiert werden, indem die Funktionalität eines Prozessors 202 erweitert wird und/oder ein Speicherschutzcontroller 206 eingeführt wird. In der veranschaulichten Ausführungsform ist der Prozessor 202 beispielsweise erweitert, um die Steuerregister 203 und den/die Prozessorbefehl(e) zu unterstützen, die zum Aktivieren und/oder Konfigurieren des kryptografischen Speicherschutzes verwendet werden können, und der Speicherschutzcontroller 206 ist implementiert, um den kryptografischen Speicherschutz bereitzustellen. Obwohl das veranschaulichte Beispiel separate logische Blöcke verwendet, um den Speicherschutzcontroller 206 und den Prozessor 202 darzustellen, können der Speicherschutzcontroller 206 und der Prozessor 202 in tatsächlichen Ausführungsformen zusammen integriert sein oder alternativ als separate Komponenten implementiert sein. In verschiedenen Ausführungsformen kann der Speicherschutzcontroller 206 beispielsweise unter Verwendung einer beliebigen Kombination von Hardware- und/oder Softwarelogik implementiert werden, darunter ein Mikroprozessor, eine anwendungsspezifische integrierte Schaltung (ASIC, Application-Specific Integrated Circuit), ein feldprogrammierbares Gate-Array (FPGA), ein programmierbares Logik-Array (PLA), eine virtuelle Maschine (VM) und/oder jeder andere Typ von Schaltungen oder Logik.
  • Der Speicherschutzcontroller 206 verwendet eine Speicherverschlüsselung, um im Speicher 210 gespeicherte Daten zu schützen. In einigen Ausführungsformen kann der Speicherschutzcontroller 206 beispielsweise auf dem Speicherpfad oder Speicherbus implementiert sein, um die Verschlüsselung von Daten zu ermöglichen, die zum und vom Speicher 210 gesendet und/oder in diesem gespeichert werden. Darüber hinaus kann der Speicherschutzcontroller 206 in einigen Ausführungsformen konfigurierbar oder programmierbar sein und Unterstützung für mehrere Verschlüsselungsschlüssel aufweisen. Dementsprechend kann der Speicherschutzcontroller 206 konfiguriert oder programmiert werden (z. B. durch Software), um 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, Tenants, Kunden, Anwendungen und/oder Workloads separat bereitgestellt und konfiguriert werden.
  • Beispielsweise kann der Speicherschutzcontroller 206 in einigen Ausführungsformen verwendet werden, um verschiedene gesicherte oder geschützte Domänen zu definieren, die unter Verwendung der Speicherverschlüsselung separat konfiguriert und geschützt werden können. In einigen Ausführungsformen kann beispielsweise eine „Domäne“ als eine Sammlung von Ressourcen betrachtet werden, die mit einer bestimmten Workload (z. B. mit einer Workload eines bestimmten Benutzers oder einer bestimmten Anwendung) assoziiert sind, und kann beliebige Speicherregionen beinhalten, die Daten enthalten, die mit der Workload assoziiert sind. Beispielsweise kann eine geschützte Domäne für eine Kunden-Workload eines Cloud-Dienstanbieters Ressourcen (z. B. Speicher) beinhalten, die mit einem Betriebssystem (BS), einer virtuellen Maschine (VM) (z. B. einer auf einem Virtual Machine Manager (VMM) ausgeführten VM) und/oder beliebigen Ring-3-Anwendungen, die auf dem Betriebssystem oder der VM ausgeführt werden, assoziiert sind. Der Speicherschutzcontroller 206 kann ermöglichen, dass die geschützten Domänen separat konfiguriert und geschützt werden, wodurch ermöglicht wird, dass jede geschützte Domäne durch Verschlüsseln ihres assoziierten Codes und/oder ihrer assoziierten Daten mit einem eindeutigen Verschlüsselungsschlüssel kryptografisch im Speicher isoliert wird. Auf diese Weise können die Workloads verschiedener Benutzer, Kunden und/oder Tenants kryptografisch isoliert werden, indem verschiedene Schutzdomänen für die verschiedenen Workloads definiert werden.
  • In einigen Ausführungsformen kann der kryptografische Speicherschutz des Systems 200 unter Verwendung von Prozessorbefehlen und/oder Hardwareregistern entdeckt und konfiguriert werden. Beispielsweise kann in einigen Ausführungsformen ein Prozessorbefehl verwendet werden, um zu bestimmen, ob der kryptografische Speicherschutz vom System 200 unterstützt wird, beispielsweise ein CPU-Identifizierungsbefehl (CPUID-Befehl), der von der Software verwendet wird, um die Fähigkeiten eines bestimmten Prozessors zu identifizieren.
  • Wenn bestimmt wird, dass der kryptografische Speicherschutz vom System 200 unterstützt wird, kann der kryptografische Speicherschutz dann unter Verwendung von Hardwareregistern, wie beispielsweise den Steuerregistern 203 des Prozessors 202, aktiviert und/oder konfiguriert werden. Beispielsweise können die Steuerregister 203 verschiedene modellspezifische Register (MSRs) aufweisen, die es der Software ermöglichen, die kryptografischen Speicherschutzfähigkeiten des Systems 200 zu entdecken, zu aktivieren und/oder zu konfigurieren. In einigen Ausführungsformen können die Steuerregister 203 beispielsweise ein Speicherverschlüsselungs-Fähigkeitsregister, ein Speicherverschlüsselungs-Aktivierungsregister und/oder ein oder mehrere Speicherverschlüsselungs-Ausschlussregister aufweisen, wie weiter unten beschrieben wird.
  • In bestimmten Ausführungsformen kann ein Speicherverschlüsselungs-Fähigkeitsregister (ME_CAPABILITY_MSR) verwendet werden, um es der Software zu ermöglichen, die Speicherverschlüsselungsfähigkeiten des Systems 200 zu entdecken. Beispielsweise kann die Software ME_CAPABILITY_MSR lesen (z. B. unter Verwendung eines Befehls „read MSR“ (RDMSR)), um die unterstützten Verschlüsselungstypen und/oder -algorithmen, die maximale Anzahl von Verschlüsselungsschlüsseln, die gleichzeitig verwendet werden können, und so weiter zu identifizieren. TABELLE 1 veranschaulicht eine beispielhafte Ausführungsform des Speicherverschlüsselungs-Fähigkeitsregisters (ME_CAPABILITY_MSR). TABELLE 1:
    Speicherverschlüsselungs-Fähigkeitsregister (ME_CAPABILITY_MSR)
    FELD BITINDEX BESCHREIBUNG
    UNTERSTÜTZTE VERSCHLÜSSELUNG SALGORITHMEN 0:15 Dieses Feld wird verwendet, um unterstützte Verschlüsselungsalgorithmen oder Verschlüsselungstypen zu identifizieren. Jedes Bit dieses Felds (falls verwendet) entspricht einem bestimmten Verschlüsselungsalgorithmus. Beispielsweise kann Bit 0 einer AES-XTS-128-Bit-Verschlüsselung entsprechen, Bit 1 kann einer AES-XTS-256-Bit-Verschlüsselung entsprechen und so weiter. Ein bestimmter Verschlüsselungsalgorithmus wird unterstützt, falls das entsprechende Bit den Wert 1 hat, und wird nicht unterstützt, falls das entsprechende Bit den Wert 0 hat.
    In bestimmten Ausführungsformen können ein oder mehrere Bits dieses Felds ferner jeweils bestimmten Verschlüsselungsalgorithmen in Verbindung mit einer Speicherintegritätsschutzoption gemäß den hierin beschriebenen Techniken entsprechen, wodurch einem Benutzer ermöglicht wird, den Speicherintegritätsschutz sowie den unterstützten Verschlüsselungsalgorithmus zu aktivieren oder zu deaktivieren. Wenn beispielsweise das obige Beispiel fortgesetzt wird, in dem Bit 0 der AES-XTS-128-Bit-Verschlüsselung und Bit 1 der AES-XTS-
    256-Bit-Verschlüsselung entspricht, kann Bit 2 ferner einer AES-XTS-128-Bit-Verschlüsselung mit Speicherintegritätsoption entsprechen, Bit 3 kann ferner einer AES-XTS-256-Bit-Verschlüsselung mit Speicherintegritätsoption entsprechen usw.
    RESERVIERT 16:31 Diese Bits werden nicht verwendet und/oder sind reserviert (z. B. für Funktionalitätserweiterungen und/oder andere Zwecke reserviert). Dieses Feld wird verwendet, um die maximale Anzahl von Bits zu identifizieren, die für Schlüsselidentifizierungen verwendet werden können.
    MAX. ANZAHL VON SCHLÜSSEL-ID-BITS (ME_MAX_KEYID_BI TS) 32:35 Dieses Feld wird verwendet, um die maximale Anzahl von Bits zu identifizieren, die für Schlüsselidentifizierungen verwendet werden können.
    Insbesondere stellt der Wert dieses Bitfelds die maximale Anzahl höherwertiger Bits einer Speicheradresse dar, die als Schlüssel oder Domänenidentifizierung für die Speicherverschlüsselung verwendet werden können.
    Falls dieses Feld beispielsweise einen Wert von 8 (binär 1000) hat, können die höherwertigen 8 Bits einer Speicheradresse als Schlüsselidentifizierung verwendet werden, wodurch insgesamt 256 Schlüssel unterstützt werden (28 = 256).
    Da es sich um ein 4-Bit-Feld handelt, beträgt der Maximalwert 15 (binär 1111), was die Unterstützung von bis zu tv32k Schlüsseln ermöglicht (2115 = 32,768).
    Der Wert dieses Felds ist 0, falls die Speicherverschlüsselung mit mehreren Schlüsseln nicht unterstützt wird.
    MAX. ANZAHL VON SCHLÜSSELN (ME_MAX_KEYS) 36:50 Der Wert dieses Felds stellt die maximale Anzahl von Verschlüsselungsschlüsseln dar, die für die Speicherverschlüsselung verwendet werden können. Dieses Feld kann verwendet werden, um eine maximale Anzahl von Schlüsseln anzugeben, die kleiner als die Gesamtanzahl der unterstützten Schlüssel ist (wie im Feld ME_MAX_KEYID_BITS oben angegeben (Bits 32:35)).
    Falls das obige Feld ME_MAX_KEYID_BITS beispielsweise den Wert 8 hat, beträgt die Gesamtzahl der unterstützten Schlüssel 256 (28 = 256). Falls das aktuelle Feld (ME_MAX_KEYS) jedoch den Wert 200 hat, können nur 200 Schlüssel der insgesamt 256 unterstützten Schlüssel verwendet werden.
    Der Wert dieses Felds ist 0, falls die Speicherverschlüsselung mit mehreren Schlüsseln nicht unterstützt wird.
    RESERVIERT 51:63 Diese Bits werden nicht verwendet und/oder sind reserviert (z. B. für Funktionalitätserweiterungen und/oder andere Zwecke reserviert).
  • Das Speicherverschlüsselungs-Aktivierungsregister (ME_ACTIVATE_MSR) kann verwendet werden, um den kryptografischen Speicherschutz des Systems 200 zu aktivieren (z. B. durch Festlegen der geeigneten Werte in den Registerfeldern). TABELLE 2 veranschaulicht eine beispielhafte Ausführungsform des Speicherverschlüsselungs-Aktivierungsregisters (ME_ACTIVATE_MSR). TABELLE 2:
    Speicherverschlüsselungs-Aktivierungsregister (ME_ACTIVATE_MSR)
    FELD BITINDEX BESCHREIBUNG
    Dieses Feld wird verwendet, um eine Nur-Lese-Sperre für die Speicherverschlüsselungs-Konfigurationsregister zu aktivieren, nachdem die Speicherverschlüsselung aktiviert wurde.
    NUR-LESE-SPERRE 0 Beispielsweise kann die Sperre aktiviert werden, nachdem die Speicherverschlüsselung durch ein Schreiben zum Register ME_ACTIVATE_MSR aktiviert wurde (z. B. unter Verwendung eines „write MSR“- oder WRMSR-Befehls). Die Sperre kann aktiviert werden, indem dieses Bitfeld auf 1 gesetzt wird, und die Sperre kann deaktiviert werden, indem dieses Bitfeld auf 0 gesetzt wird.
    Die Sperre wird auf die Register ME_ACTIVATE_MSR, ME_EXCLUDE_BASE_MSR und
    ME_EXCLUDE_MASK_MSR angewandt. Alle Schreibvorgänge in diese Register werden ignoriert, solange die Sperre aktiv ist.
    Die Sperre wird zurückgesetzt, wenn der Prozessor zurückgesetzt wird.
    SPEICHERVERSC HLÜSSELUNG AKTIVIEREN 1 Dieses Feld wird verwendet, um die Speicherverschlüsselung zu aktivieren oder zu deaktivieren.
    Die Speicherverschlüsselung ist aktiviert, wenn dieses Bitfeld den Wert 1 hat, und ist deaktiviert, wenn dieses Bitfeld den Wert 0 hat.
    SCHLÜSSELAUS WAHL FÜR DEN STANDARDMO DUS 2 Dieses Feld wird verwendet, um einen Schlüssel auszuwählen, der für den Standardverschlüsselungsmodus verwendet werden soll. Beispielsweise werden mit dem Standardverschlüsselungsmodus geschützte Speicherregionen mit einem Standardverschlüsselungsalgorithmus und -schlüssel einheitlich geschützt.
    Falls dieses Bitfeld auf 0 gesetzt ist, wird ein neuer Schlüssel erstellt (z. B. nach einem Kalt- oder Warmstart).
    Falls dieses Bitfeld auf 1 gesetzt ist, wird ein vorhandener Schlüssel aus dem Speicher wiederhergestellt (z. B. nach der Rückkehr aus dem Standby).
    SCHLÜSSEL FÜR STANDBY SPEICHERN 3 Dieses Feld wird verwendet, um anzugeben, ob der für den Standardverschlüsselungsmodus verwendete Schlüssel gespeichert werden soll, damit der Schlüssel nach der Rückkehr aus dem Standby wiederhergestellt werden kann.
    Falls dieses Bitfeld auf 1 gesetzt ist, wird der Schlüssel gespeichert. Falls dieses Bitfeld auf 0 gesetzt ist, wird der
    Schlüssel nicht gespeichert.
    Dieses Feld kann verwendet werden, um den Verschlüsselungsalgorithmus anzugeben, der für den Standardverschlüsselungsmodus verwendet werden soll.
    Der Wert dieses Felds identifiziert den Bitindex im Register ME_CAPABILITY_MSR, der dem ausgewählten Verschlüsselungsalgorithmus entspricht.
    VERSCHLÜSSEL UNGSALGORITH MUS FÜR DEN STANDARDMOD US 4:7 Beispielsweise werden die unterstützten Verschlüsselungsalgorithmen durch die Bits 0:15 des Registers ME _CAPABILITY_MSR identifiziert.
    Beispielsweise kann der Bitindex 0 des Registers ME CAPABILITY MSR der AES-XTS-128-Bit-Verschlüsselung entsprechen, der Bitindex 1 kann der AES-XTS-256-Bit-Verschlüsselung entsprechen und so weiter.
    Falls das aktuelle Feld den Wert 0 hat (binär 0000), wird der dem Bitindex 0 des Registers ME_CAPABILITY_MSR entsprechende Verschlüsselungsalgorithmus ausgewählt, der eine AES-XTS-128-Bit-Verschlüsselung wäre.
    Falls das aktuelle Feld den Wert 1 hat (binär 0001), wird der dem Bitindex 1 des Registers ME_CAPABILITY_MSR entsprechende Verschlüsselungsalgorithmus ausgewählt, der eine AES-XTS-256-Bit-Verschlüsselung wäre.
    Der mit diesem Feld ausgewählte Verschlüsselungsalgorithmus muss unterstützt werden (z. B. muss sein entsprechender Bitindex im Register ME _CAPABILITY_MSR auf 1 gesetzt sein).
    RESERVIERT 8:31 Diese Bits werden nicht verwendet und/oder sind reserviert (z. B. für Funktionalitätserweiterungen und/oder andere Zwecke reserviert).
    Dieses Feld wird verwendet, um die Anzahl von Bits zu identifizieren, die für Schlüsselidentifizierungen verwendet werden.
    Insbesondere stellt der Wert dieses Felds die Anzahl höherwertiger Bits einer Speicheradresse dar, die als Schlüssel oder Domänenidentifizierung für die Speicherverschlüsselung verwendet werden.
    ANZAHL VON SCHLÜSSEL- ID-BITS (ME_KEYID_BITS) Dieses Feld kann verwendet werden, um eine Anzahl von Bits für Schlüsselidentifizierungen anzugeben, die kleiner ist als die maximale Anzahl verfügbarer Bits für Schlüsselidentifizierungen (wie im Feld ME_MAX_KEYID_BITS (Bits 32:35) des Registers ME_CAPABILITY_MSR angegeben).
    32:35 Falls das aktuelle Feld beispielsweise einen Wert von 8 (binär 1000) hat, werden die höherwertigen 8 Bits einer Speicheradresse als Schlüsselidentifizierung verwendet, wodurch insgesamt 256 Schlüssel unterstützt werden (28 = 256).
    Der Wert dieses Felds ist 0, falls die Speicherverschlüsselung mit mehreren Schlüsseln deaktiviert ist. Falls die Speicherverschlüsselung mit mehreren Schlüsseln deaktiviert ist, die Speicherverschlüsselung jedoch im Allgemeinen aktiviert ist (z. B. Bit 1 von ME_ACTIVATE_MSR ist gesetzt), ist nur der Standardverschlüsselungsmodus aktiviert (und die benutzerdefinierte Verschlüsselung oder Verschlüsselung mit mehreren Schlüsseln ist deaktiviert).
    RESERVIERT 36:47 Diese Bits werden nicht verwendet und/oder sind reserviert (z. B. für Funktionalitätserweiterungen und/oder andere Zwecke reserviert).
    VERSCHLÜSS ELUNGSBESC HRÄNKUNGS-BITMASKE 48:63 Dieses Feld kann verwendet werden, um die Verschlüsselungsalgorithmen einzuschränken, die für die Verschlüsselung mit mehreren Schlüsseln verwendet werden können.
    Beispielsweise werden die unterstützten Verschlüsselungsalgorithmen im Register ME_CAPABILITY_MSR identifiziert (Bits 0: 15). Die Bits im aktuellen Feld entsprechen den Bits des Registers ME_CAPABILITY_MSR, die zum Identifizieren der unterstützten Verschlüsselungsalgorithmen verwendet werden. Auf diese Weise kann verhindert werden, dass ein unterstützter Verschlüsselungsalgorithmus für die Verschlüsselung mit mehreren Schlüsseln verwendet wird, indem das entsprechende Bit im aktuellen Feld gelöscht wird (oder alternativ 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 von dem durch das System 200 bereitgestellten kryptografischen Speicherschutz auszuschließen. 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. um den Zugriff auf die ausgeschlossenen oder umgangenen Speicheradressen im Plaintext-Modus zu ermöglichen).
  • TABELLE 3 veranschaulicht eine beispielhafte Ausführungsform des Speicherverschlüsselungs-Ausschlussmaskenregisters (ME_EXCLUDE_MASK_MSR), und TABELLE 4 veranschaulicht eine beispielhafte Ausführungsform des Speicherverschlüsselungs-Ausschlussbasisregisters (ME_EXCLUDE_BASE_MSR). TABELLE 3:
    Speicherverschlüsselungs-Ausschlussmaskenregister (ME_EXCLUDE_MASK_MSR)
    FELD BITINDEX BESCHREIBUNG
    RESERVIERT 0:10 Diese Bits werden nicht verwendet und/oder sind reserviert (z. B. für Funktionalitätserweiterungen und/oder andere Zwecke reserviert).
    Dieses Feld kann verwendet werden, um Ausschlüsse vom Speicherverschlüsselungsschutz zu aktivieren oder zu deaktivieren.
    AUSSCHLUSS AKTIVIEREN 11 Wenn dieses Feld auf 0 gesetzt ist, werden keine Speicheradressen vom Speicherverschlüsselungsschutz ausgeschlossen.
    Wenn dieses Feld auf 1 gesetzt ist, werden die Register ME_EXCLUDE_MASK_MSR und ME_EXCLUDE_BASE_MSR verwendet, um einen Speicherbereich zu definieren, der vom Speicherverschlüsselungsschutz ausgeschlossen ist.
    AUSSCHLUSS MASKE 12:(MAX. ADRESSENGRÖSS E-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 UNDverknüpft werden, und falls das Ergebnis mit der AUSSCHLUSSBASIS übereinstimmt, wird die Speicherverschlüsselung für diese Speicheradresse umgangen.
    RESERVIERT (MAX. ADRESSENGRÖSS E) :63 Diese Bits werden nicht verwendet und/oder sind reserviert (z. B. für Funktionalitätserweiterungen und/oder andere Zwecke reserviert).
    TABELLE 4:
    Speicherverschlüsselungs-Ausschlussbasisregister (ME_EXCLUDE_BASE_MSR)
    FELD BITINDEX BESCHREIBUNG
    RESERVIERT 0:11 Diese Bits werden nicht verwendet und/oder sind reserviert (z. B. für Funktionalitätserweiterungen und/oder andere Zwecke reserviert).
    AUSSCHLUSS BASIS 12: (MAX. ADRESSENGRÖSS E-1) Dieses Feld wird verwendet, um die Basisspeicheradresse eines bestimmten Speicherbereichs anzugeben, der vom Speicherverschlüsselungsschutz ausgeschlossen werden soll.
    RESERVIERT (MAX. ADRESSENGRÖSS E): 63 Diese Bits werden nicht verwendet und/oder sind reserviert (z. B. für Funktionalitätserweiterungen und/oder andere Zwecke reserviert).
  • In der veranschaulichten Ausführungsform verwaltet der Speicherschutzcontroller 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 einer beliebigen Form von Speicher oder Speichereinrichtung (z. B. RAM) implementiert werden und kann auch direkt im Speicherschutzcontroller 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 weist jeder Eintrag 207a-d eine Schlüssel- oder Domänenidentifizierung (ID), einen Schutzmodus und einen assoziierten Verschlüsselungsschlüssel (falls zutreffend) auf. In einigen Ausführungsformen kann beispielsweise eine Schlüssel-ID die höherwertigen Bits der Speicheradressen darstellen, die sich innerhalb der assoziierten geschützten Domäne befinden. Wie oben erörtert, gibt das Feld ME_KEYID_BITS des Registers ME_ACTIVATE_MSR beispielsweise die Anzahl der für Schlüssel-IDs verwendeten Bits an. Im veranschaulichten Beispiel wird jede Schlüssel-ID in der Domänenschlüsseltabelle 207 unter Verwendung von 5 Bit dargestellt. Dementsprechend deckt die geschützte Domäne, die mit einer gegebenen Schlüssel-ID assoziiert ist, alle Speicheradressen ab, deren höchstwertige 5 Bit mit der Schlüssel-ID übereinstimmen. In der veranschaulichten Ausführungsform wird die Schlüssel-ID als ein Feld in der Schlüsseltabelle 207 gespeichert, aber in alternativen Ausführungsformen kann die Schlüssel-ID als ein Index in die Schlüsseltabelle 207 verwendet werden, anstatt direkt in der Schlüsseltabelle 207 gespeichert zu werden.
  • Darüber hinaus können in einigen Ausführungsformen mehrere Schutzmodi unterstützt werden, und jede geschützte Domäne kann unter Verwendung eines bestimmten Schutzmodus geschützt werden. Beispielsweise können die unterstützten Schutzmodi in einigen Ausführungsformen Plaintext-Modus (z. B. unverschlüsselt), Standard- oder Default-Verschlüsselungsmodus (z. B. unter Verwendung eines Standard- oder Default-Verschlüsselungsschlüssels verschlüsselt) und/oder benutzerdefinierten Verschlüsselungsmodus (z. B. unter Verwendung eines eindeutigen Verschlüsselungsschlüssels verschlüsselt) beinhalten. Dementsprechend kann die Schlüsseltabelle 207 den Schutzmodus identifizieren, der mit jeder geschützten Domäne oder Schlüssel-ID assoziiert ist.
  • Beispielsweise weist die Domänenschlüsseltabelle 207 im veranschaulichten Beispiel vier Einträge auf. Der erste Eintrag identifiziert eine geschützte Domäne, die der Schlüssel-ID 00000 entspricht (und somit alle Speicheradressen abdeckt, die 00000 in den höchstwertigen 5 Bit enthalten), die im standardmäßigen Verschlüsselungsmodus unter Verwendung des Schlüssels „ABC“ geschützt ist. Der zweite Eintrag identifiziert eine geschützte Domäne, die der Schlüssel-ID 00001 entspricht (und somit alle Speicheradressen abdeckt, die 00001 in den höchstwertigen 5 Bit enthalten), die im Plaintext-Modus geschützt ist und somit keinen assoziierten Verschlüsselungsschlüssel aufweist. Der dritte Eintrag identifiziert eine geschützte Domäne, die der Schlüssel-ID 00010 entspricht (und somit alle Speicheradressen abdeckt, die 00010 in den höchstwertigen 5 Bit enthalten), die im benutzerdefinierten Verschlüsselungsmodus unter Verwendung des Schlüssels „XYZ“ geschützt ist. Der vierte Eintrag identifiziert eine geschützte Domäne, die der Schlüssel-ID 00011 entspricht (und somit alle Speicheradressen abdeckt, die 00011 in den höchstwertigen 5 Bit enthalten), die im standardmäßigen Verschlüsselungsmodus unter Verwendung des Schlüssels „ABC“ geschützt ist. Wie in diesen Beispielen gezeigt, weist die unter Verwendung des benutzerdefinierten Verschlüsselungsmodus geschützte Domäne einen eindeutigen Schlüssel („XYZ“) auf, die unter Verwendung des standardmäßigen Verschlüsselungsmodus geschützten Domänen teilen sich einen Verschlüsselungsschlüssel („ABC“) und die im Plaintext-Modus geschützte Domäne ist unverschlüsselt und weist somit keinen assoziierten Schlüssel auf.
  • 3 ist ein Blockschaltbild einer beispielhaften Host-Rechenvorrichtung 300, die zum Durchführen von Operationen gemäß wenigstens einigen der hierin beschriebenen Techniken geeignet ist. Die Host-Rechenvorrichtung 300 kann unter anderem beispielsweise ein Mobiltelefon, ein Laptop-Computer, ein Desktop-Computer oder ein Tablet-Computer sein. Die Host-Rechenvorrichtung 300 kann Verarbeitungsschaltungen aufweisen, wie beispielsweise einen Prozessor 302, die angepasst sind, um gespeicherte Befehle auszuführen. Die Host-Rechenvorrichtung 300 kann ferner Speicherschaltungen, wie beispielsweise die Speichervorrichtung 304, zum Speichern von Befehlen aufweisen, die vom Prozessor 302 ausführbar sind. Eine oder mehrere der hierin beschriebenen Techniken können über derartige Befehle durchgeführt werden, die vom Prozessor 302 ausgeführt werden, wobei derartige Befehle in verschiedenen Ausführungsformen Programmcode und/oder Mikrocode umfassen, die konfiguriert sind, um den Prozessor 302 zu veranlassen, Aktivitäten durchzuführen, die sich auf das Lesen von Daten, Schreiben von Daten, Verarbeiten von Daten, Formulieren von Daten, Konvertieren von Daten, Transformieren von Daten usw. beziehen. Der Prozessor 302 kann ein Einzelkernprozessor, ein Multikernprozessor, ein Rechencluster oder eine beliebige Anzahl von anderen Konfigurationen sein. Beispielhafte Prozessoren können verschiedene x86-basierte Mikroprozessoren beinhalten, die von der Intel Corporation erhältlich sind, einschließlich derjenigen in den Produktfamilien Pentium, Xeon, Itanium, Celeron, Atom, Quark, Core i-Serie, Core M-Serie, Advanced-RISC- (z. B. Reduced Instruction Set Computing) Machine- oder „ARM“-Prozessoren oder eine beliebige andere Entwicklung des Rechenparadigmas oder der physikalischen Implementierung solcher integrierter Schaltungen (ICs, Integrated Circuits) usw., ohne darauf beschränkt zu sein. Die Speichervorrichtung 304 kann Direktzugriffsspeicher (RAM, Random Access Memory) und/oder Nur-Lese-Speicher (ROM, Read-Only Memory) in einem festen oder entfernbaren Format umfassen. Der RAM umfassende Speicher kann flüchtigen Speicher aufweisen, der konfiguriert ist, um Informationen während des Betriebs der Host-Rechenvorrichtung 300 zu halten, wie beispielsweise statisches RAM (SRAM) oder dynamisches RAM (DRAM). Der ROM umfassende Speicher kann nichtflüchtige (NV, Non-Volatile) Speicherschaltungen aufweisen, die basierend auf BIOS, UEFI usw. konfiguriert sind, um Befehle bereitzustellen, wenn die Host-Rechenvorrichtung 300 aktiviert ist, programmierbare Speicher, wie beispielsweise elektronisch programmierbare ROMs (EPROMs), Flash usw.
  • Der Prozessor 302 kann auch über das System-Interconnect oder den „Bus“ 306 (z. B. PCI®, PCI-Express®, NuBus usw.) mit einer Anzeigeschnittstelle 308 verknüpft sein, die angepasst ist, um die Host-Rechenvorrichtung 300 mit einer Anzeigevorrichtung 310 zu verbinden. In bestimmten Ausführungsformen kann die Anzeigevorrichtung 310 einen Anzeigebildschirm aufweisen, der innerhalb der Host-Rechenvorrichtung 300 untergebracht ist. In anderen Ausführungsformen kann die Anzeigevorrichtung 310 unter anderem einen Computermonitor, ein Fernsehgerät oder einen Projektor aufweisen, der/das beispielsweise extern mit der Host-Rechenvorrichtung 300 verbunden sein kann. Die Anzeigevorrichtung 310 kann eine oder mehrere Leuchtdioden (LEDs, Light-Emitting Diodes), Mikro-LEDs und/oder andere geeignete Anzeigeelemente aufweisen.
  • In der dargestellten Ausführungsform ist ein Netzschnittstellencontroller (hierin auch als ein NIC (Network Interface Controller) bezeichnet) 312 über das System-Interconnect 306 mit einem oder mehreren Rechennetzen (nicht gezeigt), wie beispielsweise dem Netz 150 aus 1, kommunikativ mit der Host-Rechenvorrichtung 300 verbunden.
  • Auch ist der Prozessor 302 in der dargestellten Ausführungsform über das System-Interconnect 306 kommunikativ mit einer Eingabe/Ausgabe(E/A)-Vorrichtungsschnittstelle 314 gekoppelt, die angepasst ist, um die Host-Rechenvorrichtung 300 mit einer oder mehreren E/A-Vorrichtungen 316 zu verbinden. Derartige E/A-Vorrichtungen 316 können beispielsweise Hardware und/oder Software aufweisen, um es Benutzern zu ermöglichen, mit der Host-Rechenvorrichtung 300 zu interagieren, wie beispielsweise verschiedene Eingabemechanismen (z. B. Mikrofone, Schalter, Tasten, Knöpfe, Tastaturen, Lautsprecher, berührungsempfindliche Oberflächen, ein oder mehrere Sensoren, die zum Erfassen von Bildern und/oder Abtasten von Nähe, Entfernung, Bewegung, Gesten, Orientierung, biometrischen Daten konfiguriert sind, usw.) und verschiedene Ausgabemechanismen (z. B. Lautsprecher, Anzeigen, beleuchtete/blinkende Anzeigen, elektromechanische Komponenten für Vibration, Bewegung usw.). In verschiedenen Ausführungsformen können die E/A-Vorrichtungen 316 eingebaute Komponenten der Host-Rechenvorrichtung 300 und/oder Vorrichtungen, die extern mit der Host-Rechenvorrichtung 300 verbunden sind, aufweisen.
  • In einigen Ausführungsformen kann der Prozessor 302 auch über das System-Interconnect 306 mit einer beliebigen Speicherungsvorrichtung 318 verknüpft sein, die eine Festplatte, ein optisches Laufwerk, ein USB-Flash-Laufwerk, ein Solid-State-Laufwerk (SSD, Solid State Drive) oder ein anderes nichtflüchtiges Speichermedium, eine Anordnung von Laufwerken oder beliebige Kombinationen davon beinhalten kann. In einigen Ausführungsformen kann die Speicherungsvorrichtung 318 beliebige geeignete Anwendungen und gespeicherte Daten beinhalten.
  • In bestimmten Ausführungsformen kann der Prozessor 302 eine beliebige geeignete Anzahl von Logikmodulen aufweisen, die durch einen Speichercontroller 319 ausführbar sind. In einigen Beispielen ist der Speichercontroller 319 (oder die Speichermanagementeinheit) eine Logik auf dem Prozessor 302, die mit der externen Systemspeichervorrichtung 304 interagiert. Der Speichercontroller 319 kann mit dem externen Speicher 304 für Lese-/Schreiboperationen. zum Senden oder Empfangen von Daten, zum Generieren/Verwalten der MACs, Fehlerkorrekturcodes, Verschlüsselung/Entschlüsselung und dergleichen interagieren. In bestimmten Ausführungsformen und Szenarien kann ein MAC-Manager 320 einen ersten MAC basierend auf im Systemspeicher gespeicherten Daten in Reaktion auf eine Schreiboperation im Systemspeicher speichern und kann ferner eine Leseoperation entsprechend den im Systemspeicher gespeicherten Daten erkennen und einen zweiten MAC basierend auf den im Systemspeicher gespeicherten Daten generieren. Der MAC-Manager 320 kann auch bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt, und den zweiten MAC neu berechnen. Ferner kann ein Entschlüsselungsmanager 322 die im Systemspeicher gespeicherten Daten in Reaktion auf das Erkennen, dass der neu berechnete zweite MAC mit dem ersten MAC übereinstimmt, entschlüsseln. In einigen Ausführungsformen kann ein Datensender 324 die entschlüsselten Daten zum Cache 326, der sich auf einem Prozessor 302 befindet, oder zu einem anderen geeigneten Cache oder einer anderen geeigneten Speichervorrichtung senden. In einigen Beispielen kann der Cache 326 (oder die Cachehierarchie) zwischen dem Prozessor 302 und dem Speichercontroller 319 eingefügt oder anderweitig angeordnet sein. In einigen Ausführungsformen können der Prozessor 302, der Cache 326 und der Speichercontroller 319 in einem einzelnen SOC (System-on-Chip) integriert oder anderweitig auf demselben physikalischen Chip/Die oder Package angeordnet sein.
  • In Übereinstimmung mit der vorliegenden Offenbarung kann die Host-Rechenvorrichtung 300 zusätzliche Hardware umfassen, die zum Transportieren und Verarbeiten von Daten konfiguriert ist, einschließlich Speicherabbilddaten, Konfigurationsregisterdaten und anderer Daten, ohne darauf beschränkt zu sein. Nicht ausschließliche Beispiele für derartige Hardware können diskrete analoge und/oder digitale Komponenten (z. B. auf einer gedruckten Leiterplatte (PCB, Printed Circuit Board) angeordnet, um Schaltungen auszubilden), wenigstens eine integrierte Schaltung (IC, Integrated Circuit), wenigstens eine Gruppe oder einen Satz von ICs, die konfiguriert sein können, um kooperativ zu arbeiten (z. B. Chipsatz), eine Gruppe von IC-Funktionalität, die auf einem Substrat (SoC) gefertigt ist, oder Kombinationen davon einschließen. In wenigstens einer beispielhaften Ausführungsform können Teile der Host-Rechenvorrichtung 300 aus Software (z. B. Befehle, Daten usw.) bestehen, die, wenn sie in die Speichervorrichtung 304 geladen wird, den Prozessor 302 veranlassen kann, sich von Allzweckverarbeitungsschaltungen in spezialisierte Schaltungen zu transformieren, die konfiguriert sind, um bestimmte Funktionen basierend auf einer derartigen Software durchzuführen.
  • Es ist zu verstehen, dass das Blockschaltbild aus 3 nicht anzeigen soll, dass die Host-Rechenvorrichtung 300 alle der in 3 gezeigten Komponenten beinhalten soll. Vielmehr kann die Host-Rechenvorrichtung 300 weniger oder zusätzliche Komponenten aufweisen, die nicht in 3 veranschaulicht sind (z. B. zusätzliche Speicherkomponenten, eingebettete Controller, zusätzliche Module, zusätzliche Netzschnittstellen usw.). Ferner können alle Funktionalitäten des MAC-Managers 320, des Entschlüsselungsmanagers 322 und des Datensenders 324 teilweise oder vollständig in Hardware und/oder im Prozessor 302 implementiert sein. Beispielsweise kann die Funktionalität unter anderem mit einer anwendungsspezifischen integrierten Schaltung, einer in einem eingebetteten Controller implementierten Logik oder einer im Prozessor 302 implementierten Logik implementiert werden. In einigen Ausführungsformen können die Funktionalitäten des MAC-Managers 320, des Entschlüsselungsmanagers 322 und des Datensenders 324 mit Logik implementiert werden, wobei die Logik, wie hierin erwähnt, eine beliebige geeignete Hardware (z. B. unter anderem einen Prozessor), Software (z. B. unter anderem eine Anwendung), Firmware oder eine beliebige geeignete Kombination aus Hardware, Software und Firmware beinhalten kann.
  • 4 veranschaulicht einen beispielhaften Prozessfluss zum Verwalten verschlüsselter Daten. Das in 4 veranschaulichte Verfahren 400 kann mit einer beliebigen geeigneten Rechenkomponente oder -vorrichtung implementiert werden, wie beispielsweise der Rechenvorrichtung 300 aus 3. Obgleich der beispielhafte MAC-Manager 320 aus 3 im folgenden Beispiel genutzt wird, versteht es sich, dass in verschiedenen Ausführungsformen andere Komponenten einen Teil oder die gesamte Funktionalität durchführen können, die nachstehend in Bezug auf das Verfahren 400 beschrieben ist. Als ein nicht einschränkendes Beispiel können verschiedene mit Bezug auf 4 beschriebene Operationen in bestimmten Ausführungsformen von einem Speichercontroller (wie beispielsweise dem Speichercontroller 208 aus 2) durchgeführt werden.
  • Bei Block 402 kann der MAC-Manager 320 einen ersten MAC basierend auf Daten, die im Systemspeicher gespeichert sind, in Reaktion auf eine Schreiboperation zum Systemspeicher generieren und/oder speichern. Beispielsweise kann der MAC-Manager 320 eine Schreiboperation zum Systemspeicher erkennen und eine beliebige geeignete kryptografische MAC-Funktion unter anderem mit einem zweiten Schlüssel verwenden, um einen MAC-Wert basierend auf den im Speicher gespeicherten Daten zu generieren. In einigen Ausführungsformen können die im Speicher gespeicherten Daten einen beliebigen geeigneten Chiffretext aufweisen, der mit einer beliebigen geeigneten Verschlüsselungstechnik verschlüsselt ist. Das Ergebnis der logischen Operation über Blöcke von Vorrichtungsdaten hinweg kann als ein Vorrichtungsdatenblock-Korrekturwert gespeichert werden.
  • Bei Block 404 kann der MAC-Manager 320 eine Leseoperation erkennen, die den im Systemspeicher gespeicherten Daten entspricht. Beispielsweise kann der MAC-Manager 320 einen Versuch erkennen, einen Befehl basierend auf den im Systemspeicher gespeicherten verschlüsselten Daten auszuführen.
  • Bei Block 406 kann der MAC-Manager 320 einen zweiten MAC basierend auf den aus dem Systemspeicher abgerufenen verschlüsselten Daten berechnen. Der MAC-Manager 320 kann die gleiche MAC-Funktion anwenden, die bei der Schreiboperation verwendet wird, sowie den gleichen Schlüssel verwenden, um einen übereinstimmenden MAC zu erzeugen.
  • Bei Block 408 kann der MAC-Manager 320 bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt. Beispielsweise kann der MAC-Manager 320 erkennen, ob Bits von im Speicher gespeicherten Daten umgedreht wurden, seit die Daten als Teil einer Schreiboperation im Speicher gespeichert wurden. In einigen Beispielen können die umgedrehten Bits im Speicher Daten darstellen, die durch einen bösartigen Versuch, die im Speicher gespeicherten Daten zu manipulieren, beschädigt wurden.
  • Bei Block 410 kann der MAC-Manager 320 den zweiten MAC neu berechnen, wie beispielsweise basierend auf einer verschlüsselten sicheren Hash-Operation der Vorrichtungsdatenblöcke 1-4. Der Ersatzwert sollte dann anstelle des fehlerhaften Vorrichtungsdatenblocks verwendet werden.
  • Bei Block 412 kann der Entschlüsselungsmanager 122 die im Systemspeicher gespeicherten Daten in Reaktion auf das Erkennen, dass der neu berechnete zweite MAC mit dem ersten MAC übereinstimmt, entschlüsseln. Bei Block 414 kann der Datensender 124 die entschlüsselten Daten zum Cache senden.
  • Das Prozessflussdiagramm aus 4 soll nicht anzeigen, dass die Operationen des Verfahrens 400 in allen Ausführungsformen in einer bestimmten Reihenfolge ausgeführt werden sollen oder dass alle Operationen des Verfahrens 400 in jedem Fall eingeschlossen werden sollen. Zusätzlich kann das Verfahren 400 eine beliebige geeignete Anzahl von zusätzlichen Operationen aufweisen. Beispielsweise können die hierin beschriebenen Techniken angewendet werden, um einen Block oder eine integrierte Schaltung einer beliebigen geeigneten Größe zu korrigieren.
  • Wie an anderer Stelle hierin detaillierter erörtert, kann ein beispielhafter MAC in wenigstens einigen Ausführungsformen durch einen Speichercontroller, einen MAC-Manager oder eine andere geeignete Komponente als Teil einer Schreiboperation, wenn eine Datenzeile zum Speicher geschrieben wird, als Teil einer Leseoperation, wenn eine Datenzeile aus dem Speicher gelesen wird, und/oder für eine andere architekturell geeignete Operation generiert werden. Derartige Operationen können beispielsweise als Teil eines Prozessors, der einen oder mehrere Befehle ausführt, initiiert oder anderweitig durchgeführt werden. In bestimmten Ausführungsformen kann ein derartiger beispielhafter MAC gemäß der folgenden Spezifikation generiert werden: MAC = MAC _ ALG ( CTDATA ,  PA _ CTDATA ,  KEYVM )
    Figure DE102019110309A1_0001
    so dass MAC ALG der Algorithmus ist, der zum Generieren des MAC verwendet wird, und so dass die für eine derartige Generierung angezeigten Parameter beinhalten:
    • CTDATA: Chiffretextdaten, die verschlüsselt und in einer Speicherdatenzeile gespeichert werden;
    • PA_CTDATA: Physikalische Host-Adresse der Chiffretextdatenzeile; und
    • KEYVM: MAC-Schlüssel, der mit der virtuellen Maschine, zu der die Datenzeile gehört, assoziiert ist (und für diese spezifisch ist).
  • Nicht ausschließliche Beispiele geeigneter kryptografischer MAC_ALG-Algorithmen schließen NIST-zugelassene Algorithmen (wie beispielsweise die SHA-3-, SHA-1-, SHA-2- und MD5-Algorithmen) ein, obwohl es sich versteht, dass andere kryptografische Algorithmen verwendet werden können.
  • In bestimmten Ausführungsformen kann eine MAC-Konstruktion gemäß den hierin beschriebenen Techniken den Schutz gegen verschiedene Typen von Angriffen erhöhen. Als nicht einschränkende Beispiele können derartige Angriffe Spoofing (bei dem ein Angreifer in der Lage ist, eine Cachezeile im Speicher oder über den Speicherbus zu modifizieren); Splicing (bei dem ein Angreifer in der Lage ist, Cachezeilen zwischen verschiedenen physikalischen Orten auszutauschen); und domänenübergreifende Angriffe (bei denen ein Angreifer Chiffretext und/oder einen entsprechenden MAC eines Benutzers oder einer VM aufzeichnen und zu einem späteren Zeitpunkt für einen anderen Benutzer oder eine andere VM gültig nutzen kann) beinhalten. Insbesondere kann die bereitgestellte MAC-Konstruktion Schutz gegen Spoofing (wobei ein Angreifer direkt versucht, Datenbits im Speicher zu modifizieren) gewähren, indem die Daten als eine Komponente des MAC eingeschlossen werden. Darüber hinaus wird durch die in der MAC-Konstruktion eingeschlossene physikalische Adresse sichergestellt, dass verhindert wird, dass ein Angreifer verschiedene Blöcke im Speicher (zusammen mit dem assoziierten MAC) ohne Erkennung austauscht, wodurch vor Splicing- oder Relocation-Angriffen geschützt wird. Zusätzlich bietet die bereitgestellte MAC-Konstruktion durch die Integration des Schlüssels, der mit der virtuellen Maschine assoziiert ist, zu der die Datenzeile gehört, Schutz gegen domänenübergreifende Angriffe.
  • Wie an anderer Stelle hierin angemerkt, kann in wenigstens bestimmten Ausführungsformen ein separater MAC-Schlüssel - der sich vom Verschlüsselungsschlüssel unterscheidet - mit jeder VM in einem Virtualisierungsszenario assoziiert sein. Man betrachte beispielsweise eine Cachezeile bei einer ersten physikalischen Speicheradresse (PA1) zum Zeitpunkt t1, die auf eine erste virtuelle Maschine VM1 abgebildet wird, wobei PA1 unter Verwendung des Schlüssels K1 verschlüsselt wird. Zu einem späteren Zeitpunkt t2 kann PA1 unter Verwendung eines eindeutigen anderen Schlüssels K2 auf eine zweite virtuelle Maschine VM2 abgebildet werden. Unter derartigen Umständen kann ein Angreifer versuchen, eine domänenübergreifende Injektion zu verursachen, indem er die zu VM1 gehörenden PA1-Inhalte wie folgt in VM2 injiziert:
    • • Aufzeichnung der PA1-Daten und des entsprechenden MAC zum Zeitpunkt t1, wenn PA1 auf VM1 abgebildet wird;
    • • Zum Zeitpunkt t2, wenn PA1 auf VM2 abgebildet wird, modifiziert der Angreifer PA1, um den im vorherigen Schritt aufgezeichneten Inhalt einzuschließen, und ersetzt den MAC, der zum Zeitpunkt t1 mit PA1 assoziiert war.
    • VM2 liest die Datenzeile bei PA1.
  • Es versteht sich, dass, obwohl die Daten bei PA1 unter Verwendung des Schlüssels K2, der mit VM2 assoziiert ist, entschlüsselt werden und daher zu Garbage-Werten entschlüsselt werden, die Integritätsprüfungen bestanden werden, falls der MAC basierend auf dem Chiffretext allein berechnet wird. Durch Integrieren des mit der VM assoziierten MAC-Schlüssels wehrt sich die oben beschriebene beispielhafte MAC-Konstruktion jedoch gegen den beschriebenen domänenübergreifenden Angriff, da der ab dem Zeitpunkt t1 verwendete MAC mit dem Schlüssel K1, der mit der VM1 assoziiert ist, generiert werden würde - und daher die Verifizierung fehlschlagen würde, wenn PA1 auf VM2 abgebildet wird, da stattdessen der Schlüssel, der mit VM2 assoziiert ist (d. h. K2) zum Verifizieren des MAC verwendet werden würde.
  • Wie an anderer Stelle hierin angemerkt, kann in bestimmten Ausführungsformen ein MAC auf eine Art und Weise mit geringem Overhead gesendet werden, indem der MAC unter Verwendung von Zusatzbits (wie beispielsweise ECC-Bits oder anderen Bits, die mit Daten auf dem Speicherbus gesendet werden, anstatt einen separaten Fetch von einer zusätzlichen Speichereinrichtung zu erfordern) eingebettet wird, ohne den Betriebs-Overhead zu verursachen, der mit einem separaten Fetch aus dem Speicher assoziiert ist. Als ein nicht einschränkendes Beispiel implementieren bestimmte Serverplattformen verschiedene Merkmale der „Zuverlässigkeit, Verfügbarkeit und Wartbarkeit“ (RAS, Reliability, Availability and Serviceability) und Leistungsoptimierungen, für die Bits erforderlich sind, die über den Speicherbus mit der Datenzeile übertragen werden. Derartige Bits können umfunktioniert werden, um einen eingebetteten MAC einzuschließen. Darüber hinaus kann, wie auch an anderer Stelle hierin beschrieben, in verschiedenen Ausführungsformen einem oder mehreren Benutzern ermöglicht werden, sich ausdrücklich für derartige Techniken „zu entscheiden“ (Opt-in) (wie beispielsweise durch Setzen von Konfigurationsbits innerhalb des unter Bezugnahme auf TABELLE 2 beschriebenen Speicherverschlüsselungs-Aktivierungsregisters (ME_ACTTVATE_MSR)), beispielsweise falls die Nutzung derartiger Zusatzbits für eine sichere MAC-Übertragung als weniger wünschenswert erachtet wird als andere Merkmale, für die derartige Zusatzbits genutzt werden können.
  • Zusätzliche Details werden nun in Bezug auf Operationen bereitgestellt, die in bestimmten Ausführungsformen im Falle eines erkannten Speicherintegritätsfehlers durchgeführt werden können, beispielsweise falls eine Integritätsprüfung, die gemäß den an anderer Stelle hierin beschriebenen Techniken durchgeführt wird, fehlschlägt. Im Folgenden werden insbesondere betriebliche Details in Bezug auf die Vertrauensdomänen(TD, Trust Domain)-Architektur beschrieben, wie sie zum Bereitstellen der Verarbeitungs- und Speicherisolierung in virtualisierten Systemen verwendet wird.
  • In verschiedenen Implementierungen werden Erweiterungen für eine TD-Architektur und Befehlssatzarchitektur (ISA, Instruction Set Architecture) (hierin als TD-Erweiterungen (TDX, TD Extensions) bezeichnet) für die TD-Architektur verwendet, um Vertraulichkeit und Integrität für Benutzer/Tenant-Software bereitzustellen, die in einer Mehrbenutzerinfrastruktur ausgeführt wird. Die TD-Architektur, bei der es sich um eine System-on-Chip(SoC)-Fähigkeit handeln kann, bietet eine Isolierung zwischen TD-Workloads und CSP-Software, wie beispielsweise einem Virtual Machine Manager (VMM) der Mehrbenutzerinfrastruktur. In bestimmten Ausführungsformen können Komponenten der TD-Architektur 1) Speicherverschlüsselung über eine MKTME-Engine; 2) eine Ressourcenmanagementfähigkeit, die hierin als Vertrauensdomänen-Ressourcenmanager (TDRM, Trust Domain Resource Manager) bezeichnet wird und in bestimmten Implementierungen als Softwareerweiterung des VMM fungieren kann; und 3) Ausführungszustands- und Speicherisolierungsfähigkeiten im Prozessor, die über eine CPU-verwaltete Speichereigentumstabelle (MOT, Memory Ownership Table) und über CPUzugriffsgesteuerte TD-Steuerstrukturen bereitgestellt werden, beinhalten. Die TD-Architektur bietet die Möglichkeit, dass ein Prozessor benutzerspezifische TDs einsetzt, die die MKTME-Engine, die MOT und die zugriffsgesteuerten TD-Steuerstrukturen für den sicheren Betrieb von TD-Workloads nutzen.
  • In einer Implementierung wird Benutzersoftware in einer benutzerspezifischen TD ausgeführt und umfasst eine Benutzer-Workload (die als nicht einschränkende Beispiele ein Betriebssystem (BS) allein zusammen mit anderen Ring-3-Anwendungen, die auf dem Betriebssystem ausgeführt werden, und/oder eine virtuelle Maschine (VM), die auf einem VMM ausgeführt wird, zusammen mit anderen Ring-3-Anwendungen, umfassen kann). Jede TD arbeitet unabhängig von anderen TDs im System und verwendet logische Prozessoren, Speicher und E/A, die vom TDRM auf der Plattform zugewiesen werden. Jede TD ist im Speicher kryptografisch isoliert, wobei wenigstens ein exklusiver Verschlüsselungsschlüssel der MKTME-Engine zum Verschlüsseln des Speichers (der Code und/oder Daten halten kann) verwendet wird, der mit der bestimmten TD assoziiert ist.
  • In wenigstens einigen Ausführungsformen arbeitet der TDRM als Host für die mehreren TDs und hat die volle Kontrolle über die Verarbeitungskerne und andere Plattformhardware. Ein TDRM weist Software in einer TD mit logischen Prozessoren zu, kann jedoch möglicherweise nicht auf den Ausführungszustand einer TD auf diesen zugewiesenen logischen Prozessoren zugreifen. Ähnlich weist ein TDRM den TDs physikalischen Speicher und E/A-Ressourcen zu, kann jedoch nicht auf den Speicherzustand einer TD zugreifen, da separate Verschlüsselungsschlüssel verwendet werden, die von den CPUs pro TD und anderen Integritäts- und Replay-Kontrollen des Speichers erzwungen werden. In einer TD ausgeführte Software arbeitet mit reduzierten Berechtigungen, so dass der TDRM die Kontrolle über Plattformressourcen behalten kann. In der Regel kann der TDRM jedoch die Vertraulichkeit oder Integrität des TD-Zustands im Speicher oder in den CPU-Strukturen unter definierten Umständen nicht beeinflussen. Darüber hinaus unterstützt die TD-Architektur einen Software-Stack, der aus mehreren VMMs (z. B. unter Verwendung von Virtual Machine Extensions oder „VMX“), Betriebssystemen und/oder Anwendungssoftware besteht, die von einem oder mehreren Betriebssystemen gehostet werden. Jede TD arbeitet unabhängig von anderen innerhalb des virtualisierten Systems.
  • 5A ist ein Blockschaltbild, das Aspekte eines beispielhaften Rechensystems darstellt, das eine VM-Architektur 501 implementiert, die ohne Funktionalität der TD-Erweiterung (TDX, TD Extension) arbeitet. Die VM-Architektur 501 weist einen CSP-VMM 505a auf, der im „VMX-Root-Modus“ ausgeführt wird. Die VM-Architektur 501 weist eine erste virtuelle Maschine (VM1) 510 auf, die im „VMX-Nicht-Root-Modus“ ausgeführt wird, und weist auch eine verschachtelte virtuelle Maschine 515 auf, die auf ähnliche Weise im VMX-Nicht-Root-Modus ausgeführt wird; die verschachtelte virtuelle Maschine weist einen Nicht-Root-VMM 515a und eine assoziierte virtuelle Nicht-Root-Maschine (VM2) 515b auf.
  • 5B ist ein Blockschaltbild, das Aspekte eines kontrastierenden beispielhaften Rechensystems darstellt, das eine TD-Architektur 502 implementiert. Insbesondere und im bemerkenswerten Gegensatz zur VM-Architektur 501 aus 5A arbeitet die TD-Architektur 502 mit verfügbarer TDX-Funktionalität, so dass ein CSP-VMM 505b (zusammen mit einer CSP-VM 518) im „TD-Root-Modus“ arbeitet, so dass der CSP-VMM 505b weiterhin gehostete Nicht-Root-Modus-VMs verwaltet, sich jedoch außerhalb der TCB solcher gehosteten Nicht-Root-Modus-VMs (und aller assoziierten Benutzer-Workloads) befindet. Es versteht sich, dass, während die in 5A dargestellte beispielhafte Ausführungsform TDX verwendet, die hierin in Bezug auf diese Ausführungsform beschriebenen Techniken durch eine beliebige Isolierungsarchitektur genutzt werden können. Die TD-Architektur 502 weist eine erste virtuelle Maschine 520, die innerhalb einer ersten TD (TD1) ausgeführt wird, sowie eine verschachtelte VM 525 (bestehend aus VMM 525a und VM 525b), die innerhalb einer zweiten TD (TD2) ausgeführt wird, auf. Die gehosteten Kunden-Workloads oder gehosteten VMs werden im TD-Nicht-Root-Modus ausgeführt.
  • 6 stellt einen beispielhaften Ausführungsfluss 600 zum Behandeln von Speicherintegritätsfehlern gemäß TD-Architekturen dar, die an anderer Stelle hierin beschrieben sind, wie beispielsweise einer oder mehreren der beispielhaften TD-Architekturen aus 5A-5B. Insbesondere erkennt die MKTME-Engine in Block 605 einen Integritätsfehler und signalisiert einem Prozessor, der die Anforderung veranlasst hat, die mit dem erkannten Integritätsfehler assoziiert ist, ein entsprechendes Interrupt. Beim Empfang des Interrupts bestimmt der Prozessor in Block 610, ob der logische Prozessor, der mit der fehlerverursachenden Anforderung assoziiert ist, im TD-Nicht-Root-Modus ausgeführt wird. Falls dies der Fall ist, übermittelt der logische Prozessor in Block 615 einen Seitenfehler-Fehlercode, der den erkannten Integritätsfehler anzeigt, an die TD, die aktuell auf dem logischen Prozessor ausgeführt wird. Falls andererseits in Block 610 bestimmt wird, dass sich der Prozessor im TD-Root-Modus befindet, geht der Ausführungsfluss zu Block 620 weiter, um zu bestimmen, ob der logische Prozessor im VMX-Root-Modus ausgeführt wird. Falls dies der Fall ist, wird der Seitenfehler-Fehlercode in Block 625 an die TD weitergeleitet, die auf dem logischen Prozessor ausgeführt wird. Falls in Block 620 bestimmt wurde, dass der logische Prozessor nicht im VMX-Root-Modus arbeitet (und sich daher im VMX-Nicht-Root-Modus befindet), wird der Seitenfehler-Fehlercode an die relevante Gast-VM übermittelt. In bestimmten Ausführungsformen kann der an eine relevante Gast-VM übermittelte Seitenfehler-Fehlercode vom VMM im TD-Root-Modus behandelt werden, beispielsweise falls die VM nicht aufgeklärt ist. Auf diese Weise hat die vertrauenswürdige Software die Kontrolle über ihr Schicksal. Integritätsfehler, die im TD-Nicht-Root-Modus und durch den VMM-Code oder im TD-Root-Modus ausgeführte Daten empfangen werden, können sich direkt auf die TD-Sicherheit/Operation auswirken und werden daher an die TD umgeleitet. Andererseits können Integritätsfehler, die im VMX-Nicht-Root-Modus im TD-Root-Modus empfangen werden, sicher von der Gast-VM behandelt werden, deren Daten oder Code beschädigt sind, da dies keine Auswirkungen auf die Sicherheit der TDs hat, die auf dem CSP-VMM ausgeführt werden.
  • Auf diese Weise kann die TD-Software, die den Seitenfehler-Fehlercode empfängt, eine geeignete Vorgehensweise bestimmen. Als nicht einschränkendes Beispiel kann die TD bestimmen, die Ausführung zu stoppen und den besitzenden Benutzer über den erkannten Fehler zu benachrichtigen, um über eine oder mehrere weitere Vorgehensweisen zu entscheiden. Es versteht sich, dass in früheren Operationen für verschiedene VM-Architekturen ein VMM ein Exit bei nicht maskierbaren Interrupts (NMIs, Non-Maskable Interrupts) und Ausnahmen wie dem beschriebenen Seitenfehler-Fehlercode verursachen kann, den der VMM möglicherweise unterdrückt und niemals an die VM übermittelt. Insbesondere bei den hierin beschriebenen Techniken können ein derartiges NMI, das von der MKTME-Engine im Fall von Integritätsfehlern generiert wird, und der entsprechende Seitenfehler-Fehlercode, der an eine Gast-VM übermittelt wird, möglicherweise nicht maskiert werden oder ein Exit des VMM verursachen. Dieser Ansatz kann die vertrauenswürdige Übermittlung einer Anzeige des Integritätsfehlers an die relevante vertrauenswürdige Software sicherstellen.
  • Obgleich Figuren der vorliegenden Offenbarung Operationen gemäß bestimmten Ausführungsformen gemäß hierin beschriebenen Techniken veranschaulichen und/oder beschreiben, versteht es sich, dass nicht alle derartigen Operationen für andere Ausführungsformen notwendig sind. Tatsächlich ist hierin vollständig vorgesehen, dass die veranschaulichten und/oder anderweitig hierin beschriebenen Operationen in anderen Ausführungsformen der vorliegenden Offenbarung in einer Art und Weise kombiniert werden können, die nicht ausdrücklich in diesen Zeichnungen gezeigt wird, aber immer noch vollständig im Einklang mit der vorliegenden Offenbarung ist. Demgemäß werden Ansprüche, die auf Merkmale und/oder Operationen gerichtet sind, die in einer Zeichnung nicht genau gezeigt sind, als innerhalb des Schutzbereichs und des Inhalts der vorliegenden Offenbarung liegend angesehen.
  • Im Allgemeinen können die hierin beschriebenen Vorrichtungen verschiedene physikalische und/oder logische Komponenten zur Kommunikation von Informationen umfassen, die je nach Bedarf für einen bestimmten Satz von Designparametern oder Leistungsbeschränkungen als Hardware, Software oder eine beliebige Kombination davon implementiert werden können. Obwohl die beigefügten Figuren und der entsprechende Text eine begrenzte Anzahl von Komponenten beispielhaft darstellen oder beschreiben können, versteht es sich, dass für eine gegebene Implementierung eine größere oder eine kleinere Anzahl von Komponenten eingesetzt werden kann.
  • In verschiedenen Ausführungsformen kann eine hierin beschriebene Vorrichtung für einen PC, CE und/oder eine mobile Plattform als ein System innerhalb einer Vorrichtung und/oder mit ihr verbunden implementiert sein, wie beispielsweise persönlicher Computer (PC), Set-Top-Box (STB), Fernsehgerät (TV), Internetprotokoll-TV(IPTV)-Vorrichtung, Media-Player und/oder Smartphone. Andere Beispiele für derartige Vorrichtungen können eine Workstation, ein Terminal, einen Server, ein Mediengerät, einen Audio/Video(A/V)-Empfänger, einen digitalen Musik-Player, ein Unterhaltungssystem, eine Digital-TV(DTV)-Vorrichtung, eine High-Definition-TV(HDTV)-Vorrichtung, eine Direct-Broadcast-Satellite-TV(DBS)-Vorrichtung, eine Video-on-Demand(VOD)-Vorrichtung, eine Web-TV-Vorrichtung, eine Digital-Video-Recorder(DVR)-Vorrichtung, eine Digital-Versatile-Disc(DVD)-Vorrichtung, eine High-Definition-DVD(HD-DVD)-Vorrichtung, eine Blu-ray-Disc(BD)-Vorrichtung, eine Video-Home-System(VHS)-Vorrichtung, eine digitale VHS-Vorrichtung, eine Digitalkamera, eine Spielkonsole, eine Anzeigevorrichtung, einen Notebook-PC, einen Laptop-Computer, einen tragbaren Computer, einen Handheld-Computer, einen persönlichen digitalen Assistenten (PDA), eine Voice-over-IP(VoIP)-Vorrichtung, ein Mobiltelefon, eine Mobiltelefon/PDA-Kombination, einen Pager, eine Messaging-Vorrichtung, einen drahtlosen Zugangspunkt (AP, Access Point), eine drahtlose Client-Vorrichtung, eine drahtlose Station (STA), eine Basisstation (BS), eine Teilnehmerstation (SS, Subscriber Station), ein Mobilteilnehmerzentrum (MSC, Mobile Subscriber Center), eine Mobileinheit und so weiter einschließen, ohne darauf beschränkt zu sein.
  • In verschiedenen Ausführungsformen kann eine hierin beschriebene Vorrichtung einen Teil eines drahtgebundenen Kommunikationssystems, eines drahtlosen Kommunikationssystems oder einer Kombination von beiden ausbilden. Beispielsweise kann eine derartige Vorrichtung angeordnet sein, um Informationen über einen oder mehrere Typen von drahtgebundenen Kommunikationsverbindungen zu kommunizieren. Beispiele für eine drahtgebundene Kommunikationsverbindung können einen Draht, ein Kabel, einen Bus, eine gedruckte Leiterplatte (PCB, Printed Circuit Board), eine Ethernet-Verbindung, eine Peer-to-Peer(P2P)-Verbindung, eine Rückwandplatine, eine Switch-Fabric, ein Halbleitermaterial, eine verdrillte Zweidrahtleitung, ein Koaxialkabel, eine Glasfaserverbindung und so weiter einschließen, ohne darauf beschränkt zu sein. Eine derartige Vorrichtung kann auch angeordnet sein, um Informationen über einen oder mehrere Typen von drahtlosen Kommunikationsverbindungen zu kommunizieren. Beispiele einer drahtlosen Kommunikationsverbindung können einen Funkkanal, einen Satellitenkanal, einen Fernsehkanal, einen Broadcast-Kanal, einen Infrarotkanal, einen Hochfrequenz(HF)-Kanal, einen Wireless-Fidelity(WiFi)-Kanal, einen Teil des HF-Spektrums und/oder ein oder mehrere lizenzierte oder lizenzfreie Frequenzbänder einschließen, ohne darauf beschränkt zu sein. Obwohl bestimmte Ausführungsformen beispielhaft unter Verwendung eines bestimmten Kommunikationsmediums veranschaulicht werden können, versteht es sich, dass die hierin erörterten Prinzipien und Techniken unter Verwendung verschiedener Kommunikationsmedien und begleitender Technologie implementiert werden können.
  • In verschiedenen Ausführungsformen kann eine hierin beschriebene Vorrichtung angeordnet sein, um innerhalb eines Netzes zu arbeiten, wie beispielsweise Wide Area Network (WAN), Local Area Network (LAN), Metropolitan Area Network (MAN), drahtloses WAN (WWAN, Wireless WAN), drahtloses LAN (WLAN, Wireless LAN), drahtloses MAN (WMAN, Wireless MAN), drahtloses Personal Area Network (WPAN, Wireless Personal Area Network), Worldwide-Interoperability-for-Microwave-Access(WiMAX)-Netz, Broadband-Wireless-Access(BWA)-Netz, Internet, World Wide Web, Telefonnetz, Funknetz, Fernsehnetz, Kabelnetz, Satellitennetz, wie beispielsweise Direct-Broadcast-Satellite(DBS)-Netz, Code-Division-Multiple-Access(CDMA)-Netz, Netz der dritten Generation (3G) wie besipielsweise Wide-band CDMA (WCDMA), Netz der vierten Generation (4G), Time-Division-Multiple-Access(TDMA)-Netz, Extended-TDMA(E-TDMA)-Mobilfunktelefonnetz, Global-System-for-Mobile-Communications(GSM)-Netz, GSM mit General-Packet-Radio-Service(GPRS)-System(GSM/GPRS)-Netz, Synchronous-Division-Multiple-Access(SDMA)-Netz, Time-Division-Synchronous-CDMA(TD-SCDMA)-Netz, Orthogonal-Frequency-Division-Multiplexing(OFDM)-Netz, Orthogonal-Frequency-Division-Multiple-Access(OFDMA)-Netz, North-American-Digital-Cellular(NADC)-Mobilfunktelefonnetz, Narrowband-Advanced-Mobile-Phone-Service(NAMPS)-Netz, Universal-Mobile-Telephone-System(UMTS)-Netz und/oder jedes andere drahtgebundene oder drahtlose Kommunikationsnetz, das zum Tragen von Daten konfiguriert ist, gemäß den beschriebenen Ausführungsformen.
  • Wie in dieser Anmeldung und in den Ansprüchen verwendet, kann eine Liste von Elementen, die mit dem Begriff „und/oder“ verbunden sind, eine beliebige Kombination der aufgeführten Elemente bedeuten. Beispielsweise kann der Ausdruck „A, B und/oder C“ A; B; C; A und B; A und C; B und C oder A, B und C bedeuten. Wie in dieser Anmeldung und in den Ansprüchen verwendet, kann eine Liste von Elementen, die mit dem Begriff „wenigstens eine/r/s von“ verbunden sind, eine beliebige Kombination der aufgeführten Elemente bedeuten. Beispielsweise können die Ausdrücke „wenigstens eine/r/s von A, B oder C“ A; B; C; A und B; A und C; B und C oder A, B und C bedeuten.
  • Wie hierin in einer beliebigen Ausführungsform verwendet, können sich die Begriffe „System“, „Komponente“ oder „Modul“ beispielsweise auf Software, Firmware und/oder Schaltungen beziehen, die konfiguriert sind, um eine beliebige der vorgenannten Operationen durchzuführen. Software kann als ein Softwarepaket, ein Code, Befehle, Befehlssätze und/oder Daten ausgeführt sein, die auf nichtflüchtigen computerlesbaren Speichermedien aufgezeichnet sind. Firmware kann als Code, Befehle oder Befehlssätze und/oder Daten ausgeführt sein, die in (z. B. nichtflüchtigen) Speichervorrichtungen fest codiert sind. „Schaltungen“, wie hierin in einer beliebigen Ausführungsform verwendet, können beispielsweise einzeln oder in beliebiger Kombination festverdrahtete Schaltungen, programmierbare Schaltungen wie beispielsweise Computerprozessoren, umfassend einen oder mehrere einzelne Befehlsverarbeitungskerne, Zustandsmaschinenschaltungen und/oder Firmware, die Befehle speichert, die von programmierbaren Schaltungen ausgeführt werden, oder zukünftige Rechenparadigmen, einschließlich beispielsweise massiver Parallelität, Analog- oder Quantenberechnung, Hardwareausführungsformen von Beschleunigern wie neuronalen Netzprozessoren und Nicht-Silizium-Implementierungen der obigen, umfassen. Die Schaltungen können gemeinsam oder einzeln als Schaltungen ausgeführt sein, die Teil eines größeren Systems ausbilden, beispielsweise eine integrierte Schaltung (IC, Integrated Circuit), System-on-Chip (SoC), Desktop-Computer, Laptop-Computer, Tablet-Computer, Server, Smartphones usw.
  • Jede der hierin beschriebenen Operationen kann in einem System implementiert werden, das ein oder mehrere Speichermedien (z. B. nichtflüchtige Speichermedien) aufweist, auf denen einzeln oder in Kombination Befehle gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, die Verfahren durchführen. Hier kann der Prozessor beispielsweise eine Server-CPU, eine Mobilvorrichtungs-CPU und/oder andere programmierbare Schaltungen aufweisen. Es ist auch beabsichtigt, dass die hierin beschriebenen Operationen auf eine Vielzahl von physikalischen Vorrichtungen verteilt sein können, wie beispielsweise Verarbeitungsstrukturen an mehr als einem unterschiedlichen physikalischen Ort. Das Speichermedium kann einen beliebigen Typ von konkretem Medium einschließen, beispielsweise einen beliebigen Typ von Platte, darunter Festplatten, Disketten, optische Platten, Compact-Disc-Nur-Lese-Speicher (CD-ROMs, Compact Disc Read-Only Memories), wiederbeschreibbare Compact-Discs (CD-RWs, Compact Disc Rewritables) und magnetooptische Platten, Halbleitervorrichtungen, wie beispielsweise Nur-Lese-Speicher (ROMs, Read-Only Memories), Direktzugriffsspeicher (RAMs, Random Access Memories), wie beispielsweise dynamische und statische RAMs, löschbare programmierbare Nur-Lese-Speicher (EPROMs, Erasable Programmable Read-Only Memories), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs, Electrically Erasable Programmable Read-Only Memories), Flash-Speicher, Solid-State-Platten (SSDs, Solid State Disks), eingebettete Multimedia-Karten (eMMCs, Embedded Multimedia Cards), sichere digitale Eingabe/Ausgabe(SDIO, Secure Digital Input/Output)-Karten, magnetische oder optische Karten oder alle Typen von Medien, die zum Speichern von elektronischen Befehlen geeignet sind. Andere Ausführungsformen können als Software implementiert sein, die von einer programmierbaren Steuervorrichtung ausgeführt wird.
  • Daher ist die vorliegende Offenbarung darauf gerichtet, eine kryptografische Speicherisolierung mit geringem Overhead bereitzustellen, um Angriffsschwachstellen in einer virtualisierten Mehrbenutzer-Rechenumgebung zu mindern. Speicherlese- und Speicherschreiboperationen für Zieldaten, die jeweils über einen Befehl initiiert werden, der mit einer bestimmten virtuellen Maschine (VM) assoziiert ist, schließen die Generierung und/oder Validierung eines Nachrichtenauthentifizierungscodes ein, der wenigstens auf einem VM-spezifischen kryptografischen Schlüssel und einer physikalischen Speicheradresse der Zieldaten basiert. Derartige Operationen können ferner das Senden des generierten Nachrichtenauthentifizierungscodes über eine Vielzahl von Zusatzbits beinhalten, die innerhalb einer Datenzeile integriert sind, die die Zieldaten einschließt. Im Falle eines Validierungsfehlers können ein oder mehrere Fehlercodes generiert und verschiedenen Entitäten der Vertrauensdomänenarchitektur basierend auf einem Betriebsmodus der assoziierten virtuellen Maschine bereitgestellt werden.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen. Die folgenden Beispiele der vorliegenden Offenbarung können Gegenstände, wie beispielsweise wenigstens eine Vorrichtung, ein Verfahren, wenigstens ein maschinenlesbares Medium zum Speichern von Befehlen, die, wenn sie ausgeführt werden, veranlassen, dass eine Maschine Handlungen basierend auf dem Verfahren durchführt, Mittel zum Durchführen von Handlungen basierend auf dem Verfahren und/oder ein System zur sicheren Anzeige von geschütztem Inhalt, umfassen.
  • Gemäß Beispiel 1 wird ein System zur kryptografischen Speicherisolierung bereitgestellt. Das System kann Verarbeitungsschaltungen zum Ausführen von jedem von einer Vielzahl von Befehlen, wobei jeder Befehl mit einer virtuellen Maschine (VM) von mehreren virtuellen Maschinen (VMs) assoziiert ist, umfassen. Das System kann ferner Speicherschaltungen umfassen, die kommunikativ mit den Verarbeitungsschaltungen gekoppelt sind, und einen Speichercontroller umfassen, um wenigstens Schreiboperationen über die Speicherschaltungen durchzuführen. Das Durchführen einer Schreiboperation kann das Generieren eines Nachrichtenauthentifizierungscodes (MAC, Message Authentication Code) beinhalten. Der MAC kann mit Zieldaten assoziiert sein, die über die Schreiboperation gespeichert werden sollen, und kann wenigstens teilweise auf (a) einem VM-spezifischen kryptografischen Schlüssel und (b) einer physikalischen Speicheradresse, in der die Zieldaten über die Schreiboperation gespeichert werden, basieren.
  • Beispiel 2 kann die Elemente von Beispiel 1 einschließen, wobei der Speichercontroller den MAC über einen oder mehrere kryptografische Algorithmen generieren soll, wobei ein eindeutiger anderer kryptografischer Schlüssel zum Verschlüsseln der Zieldaten verwendet wird, und wobei der MAC ferner auf den verschlüsselten Zieldaten basiert.
  • Beispiel 3 kann die Elemente von einem der Beispiele 1-2 einschließen, wobei der VM-spezifische kryptografische Schlüssel spezifisch für eine VM ist, die mit einem ersten Befehl der Vielzahl von Befehlen assoziiert ist, und wobei der erste Befehl die Verarbeitungsschaltungen veranlasste, die Schreiboperation zu initiieren.
  • Beispiel 4 kann die Elemente von einem der Beispiele 1-3 einschließen, wobei der Speichercontroller ferner Leseoperationen über die Speicherschaltungen durchführen soll, wobei das Durchführen einer Leseoperation das Generieren eines zweiten MAC zur Verwendung bei einer Validierung von Zieldaten beinhaltet, die zuvor über eine der Schreiboperationen gespeichert wurden, und wobei der zweite MAC wenigstens teilweise auf einem zweiten VM-spezifischen kryptografischen Schlüssel basiert, der mit einem zweiten Befehl assoziiert ist, der die Verarbeitungsschaltungen veranlasste, die Leseoperation zu initiieren.
  • Beispiel 5 kann die Elemente von Beispiel 4 einschließen, wobei die Speicherschaltungen ferner in Reaktion auf eine Bestimmung, dass die Validierung der zuvor gespeicherten Zieldaten fehlgeschlagen ist, eine Anzeige an die Verarbeitungsschaltungen bereitstellen sollen, dass die Validierung fehlgeschlagen ist; und wobei die Verarbeitungsschaltungen ferner einen Betriebsmodus einer VM bestimmen sollen, die mit dem zweiten Befehl assoziiert ist, einen Fehlercode in Reaktion auf die Anzeige von den Speicherschaltungen generieren sollen und den generierten Fehlercode an ein Ziel bereitstellen sollen, das auf dem bestimmten Betriebsmodus der assoziierten VM basiert.
  • Beispiel 6 kann die Elemente von einem der Beispiele 4-5 einschließen, wobei der generierte Fehlercode ein Seitenfehlercode ist, und wobei der bestimmte Betriebsmodus der assoziierten VM einer von einer Gruppe ist, die einen TD-Nicht-Root-Modus, einen TD-Root-Modus, einen VM-Erweiterungs(VMX, VM Extension)-Root-Modus und einen VMX-Nicht-Root-Modus beinhaltet.
  • Beispiel 7 kann die Elemente von einem der Beispiele 1-6 einschließen, wobei das Durchführen einer Schreiboperation ferner das Speichern von zusätzlichen Informationen beinhaltet, die eine Vielzahl von sekundären Bits als Teil einer Datenzeile umfassen, die die Zieldaten einschließt, die über die Schreiboperation gespeichert werden sollen, und wobei das Speichern der zusätzlichen Informationen, die die Vielzahl von sekundären Bits umfassen, das Einbetten des generierten MAC innerhalb der Vielzahl von sekundären Bits als Teil der Datenzeile beinhaltet.
  • Beispiel 8 kann die Elemente von Beispiel 7 einschließen, wobei der Speichercontroller ferner Leseoperationen über die Speicherschaltungen durchführen soll, und wobei das Durchführen einer Leseoperation das Extrahieren des generierten MAC aus der Datenzeile, die die Zieldaten einschließt, beinhaltet.
  • Gemäß Beispiel 9 wird eine Vorrichtung zur kryptografischen Speicherisolierung bereitgestellt. Die Vorrichtung kann Speicherschaltungen umfassen, um wenigstens Schreiboperationen über die Speicherschaltungen durchzuführen. Das Durchführen einer Schreiboperation kann das Generieren eines Nachrichtenauthentifizierungscodes (MAC, Message Authentication Code) beinhalten, der mit Zieldaten assoziiert ist, die innerhalb der Speicherschaltungen über die Schreiboperation gespeichert werden sollen, und der wenigstens teilweise auf (a) einem kryptografischen Schlüssel, der für eine virtuelle Maschine (VM) spezifisch ist, und (b) einer physikalischen Speicheradresse, in der die Zieldaten über die Schreiboperation gespeichert werden, basiert.
  • Beispiel 10 kann die Elemente von Beispiel 9 einschließen, wobei das Generieren des MAC das Generieren des MAC über einen oder mehrere kryptografische Algorithmen beinhaltet, wobei ein eindeutiger anderer kryptografischer Schlüssel zum Verschlüsseln der Zieldaten verwendet wird, und wobei der MAC ferner auf den verschlüsselten Zieldaten basiert.
  • Beispiel 11 kann die Elemente von einem der Beispiele 9-10 einschließen, wobei der VM-spezifische kryptografische Schlüssel spezifisch für eine VM ist, die mit einem ersten Befehl einer Vielzahl von Befehlen assoziiert ist, die jeweils mit einer von mehreren VMs assoziiert sind, und wobei der erste Befehl die Schreiboperation initiierte.
  • Beispiel 12 kann die Elemente von Beispiel 11 einschließen, wobei die Speicherschaltungen ferner Leseoperationen durchführen sollen, wobei das Durchführen einer Leseoperation das Generieren eines zweiten MAC zur Verwendung bei einer Validierung von Zieldaten beinhaltet, die zuvor über eine der Schreiboperationen gespeichert wurden, und wobei der zweite MAC wenigstens teilweise auf einem zweiten VM-spezifischen kryptografischen Schlüssel basiert, der mit einem zweiten Befehl assoziiert ist, der die Verarbeitungsschaltungen veranlasste, die Leseoperation zu initiieren.
  • Beispiel 13 kann die Elemente von einem der Beispiele 11-12 einschließen, wobei die Speicherschaltungen ferner in Reaktion auf eine Bestimmung, dass die Validierung der zuvor gespeicherten Zieldaten fehlgeschlagen ist, eine Anzeige bereitstellen sollen, dass die Validierung der Zieldaten fehlgeschlagen ist; und wobei die Vorrichtung ferner Verarbeitungsschaltungen umfasst, um einen Betriebsmodus einer VM zu bestimmen, die mit dem zweiten Befehl assoziiert ist, um einen Fehlercode in Reaktion auf die Anzeige von den Speicherschaltungen zu generieren und um den generierten Fehlercode an ein Ziel bereitzustellen, das auf dem bestimmten Betriebsmodus der assoziierten VM basiert.
  • Beispiel 14 kann die Elemente von Beispiel 13 einschließen, wobei der generierte Fehlercode ein Seitenfehlercode ist, und wobei der bestimmte Betriebsmodus der assoziierten VM einer von einer Gruppe ist, die einen TD-Nicht-Root-Modus, einen TD-Root-Modus, einen VM-Erweiterungs(VMX, VM Extension)-Root-Modus und einen VMX-Nicht-Root-Modus beinhaltet.
  • Beispiel 15 kann die Elemente von einem der Beispiele 9-14 einschließen, wobei das Durchführen einer Schreiboperation ferner das Speichern von zusätzlichen Informationen beinhaltet, die eine Vielzahl von sekundären Bits als Teil einer Datenzeile umfassen, die die Zieldaten einschließt, die über die Schreiboperation gespeichert werden sollen, und wobei das Speichern der zusätzlichen Informationen, die die Vielzahl von sekundären Bits umfassen, das Einbetten des generierten MAC innerhalb der Vielzahl von sekundären Bits als Teil der Datenzeile beinhaltet.
  • Beispiel 16 kann die Elemente von Beispiel 15 einschließen, wobei die Speicherschaltungen ferner Leseoperationen durchführen sollen, und wobei das Durchführen einer Leseoperation das Extrahieren des generierten MAC aus der Datenzeile, die die Zieldaten einschließt, beinhaltet.
  • Gemäß Beispiel 17 wird ein Verfahren zur kryptografischen Speicherisolierung bereitgestellt. Das Verfahren kann das Ausführen von jedem von einer Vielzahl von Befehlen über einen oder mehrere Prozessoren umfassen, wobei jeder Befehl mit einer virtuellen Maschine (VM) assoziiert ist, die von dem einen oder den mehreren Prozessoren ausgeführt wird. Das Verfahren kann ferner das Durchführen einer oder mehrerer Schreiboperationen über Speicherschaltungen, die kommunikativ mit dem einen oder den mehreren Prozessoren gekoppelt sind, umfassen. Jede Schreiboperation kann das Generieren, wenigstens teilweise basierend auf einem VM-spezifischen kryptografischen Schlüssel und auf einer physikalischen Speicheradresse für die Zieldaten, eines Nachrichtenauthentifizierungscodes (MAC, Message Authentication Code) beinhalten.
  • Beispiel 18 kann die Elemente von Beispiel 17 einschließen, ferner umfassend das Verschlüsseln der Zieldaten unter Verwendung eines eindeutigen anderen kryptografischen Schlüssels, und wobei das Generieren des MAC das Generieren des MAC über einen oder mehrere kryptografische Algorithmen beinhaltet, die ferner teilweise auf den verschlüsselten Zieldaten basieren.
  • Beispiel 19 kann die Elemente von einem der Beispiele 17-18 einschließen, wobei das Generieren des MAC wenigstens teilweise basierend auf dem VM-spezifischen kryptografischen Schlüssel das Generieren des MAC basierend auf einem kryptografischen Schlüssel beinhaltet, der für eine VM spezifisch ist, die mit einem Befehl der Vielzahl von Befehlen assoziiert ist, und wobei das Verfahren ferner das Initiieren der Schreiboperation in Reaktion auf den einen Befehl umfasst.
  • Beispiel 20 kann die Elemente von einem der Beispiele 17-19 einschließen, ferner umfassend das Durchführen einer oder mehrerer Leseoperationen über die Speicherschaltungen, wobei das Durchführen einer Leseoperation das Generieren eines zweiten MAC zur Verwendung bei der Validierung von Zieldaten beinhaltet, die zuvor über eine der Schreiboperationen gespeichert wurden, wobei das Generieren des zweiten MAC das Generieren des zweiten MAC wenigstens teilweise basierend auf einem zweiten VM-spezifischen kryptografischen Schlüssel beinhaltet, der mit einem zweiten Befehl assoziiert ist,und wobei das Verfahren ferner das Initiieren der Leseoperation in Reaktion auf den zweiten Befehl umfasst.
  • Beispiel 21 kann die Elemente von Beispiel 20 einschließen, ferner umfassend, in Reaktion auf das Bestimmen, dass die Validierung der zuvor gespeicherten Zieldaten fehlgeschlagen ist, das Generieren eines Fehlercodes, der anzeigt, dass die Validierung fehlgeschlagen ist; Bestimmen eines Betriebsmodus einer VM, die mit dem zweiten Befehl assoziiert ist; und Bereitstellen des generierten Fehlercodes an ein Ziel, das auf dem bestimmten Betriebsmodus der assoziierten VM basiert.
  • Beispiel 22 kann die Elemente von Beispiel 21 einschließen, wobei das Generieren des Fehlercodes das Generieren eines Seitenfehlercodes beinhaltet, und wobei das Bestimmen des Betriebsmodus der assoziierten VM das Bestimmen beinhaltet, dass der Betriebsmodus einer von einer Gruppe ist, die einen TD-Nicht-Root-Modus, einen TD-Root-Modus, einen VM-Erweiterungs(VMX, VM Extension)-Root-Modus und einen VMX-Nicht-Root-Modus beinhaltet.
  • Beispiel 23 kann die Elemente von einem der Beispiele 17-22 einschließen, wobei das Durchführen einer Schreiboperation ferner das Speichern von zusätzlichen Informationen beinhaltet, die eine Vielzahl von sekundären Bits als Teil einer Datenzeile umfassen, die die Zieldaten einschließt, und wobei das Speichern der zusätzlichen Informationen, die die Vielzahl von sekundären Bits umfassen, das Einbetten des generierten MAC innerhalb der Vielzahl von sekundären Bits als Teil der Datenzeile beinhaltet.
  • Beispiel 24 kann die Elemente von Beispiel 23 einschließen, ferner umfassend das Durchführen einer oder mehrerer Leseoperationen über die Speicherschaltungen, wobei das Durchführen einer Leseoperation das Extrahieren des generierten MAC aus der Datenzeile, die die Zieldaten einschließt, beinhaltet.
  • Zusätzliche Details bezüglich Operationen und Techniken im Zusammenhang mit der Speicherverschlüsselung mit mehreren Schlüsseln sind in der am 28. Juni 2017 eingereichten US-Patentanmeldung Nr. 15/635,548 zu finden, die hiermit hierin in ihrer Gesamtheit aufgenommen ist. Zusätzliche Informationen bezüglich Operationen und Techniken im Zusammenhang mit der Vertrauensdomänenarchitektur sind in der am 15. September 2017 eingereichten US-Patentanmeldung Nr. 15/705,562 zu finden, die hiermit hierin in ihrer Gesamtheit aufgenommen ist. Zusätzliche Informationen bezüglich Operationen und Techniken im Zusammenhang mit Nachrichtenauthentifizierungscodes sind in der am 17. November 2017 eingereichten US-Patentanmeldung Nr. 15/816,901 zu finden, die hiermit hierin in ihrer Gesamtheit aufgenommen ist.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15635548 [0113]
    • US 15705562 [0113]
    • US 15816901 [0113]

Claims (40)

  1. System zur kryptografischen Speicherisolierung, das System umfassend: Verarbeitungsschaltungen zum Ausführen von jedem von einer Vielzahl von Befehlen, wobei jeder Befehl mit einer virtuellen Maschine (VM) von mehreren virtuellen Maschinen (VMs) assoziiert ist; und Speicherschaltungen, die kommunikativ mit den Verarbeitungsschaltungen gekoppelt sind, und einen Speichercontroller umfassen, um wenigstens Schreiboperationen über die Speicherschaltungen durchzuführen, wobei das Durchführen einer Schreiboperation das Generieren eines Nachrichtenauthentifizierungscodes (MAC, Message Authentication Code) beinhaltet; wobei der MAC mit Zieldaten assoziiert ist, die über die Schreiboperation gespeichert werden sollen, und wenigstens teilweise auf (a) einem VM-spezifischen kryptografischen Schlüssel und (b) einer physikalischen Speicheradresse, in der die Zieldaten über die Schreiboperation gespeichert werden, basiert.
  2. System nach Anspruch 1, wobei der Speichercontroller den MAC über einen oder mehrere kryptografische Algorithmen generieren soll, wobei ein eindeutiger anderer kryptografischer Schlüssel zum Verschlüsseln der Zieldaten verwendet wird, und wobei der MAC ferner auf den verschlüsselten Zieldaten basiert.
  3. System nach einem der Ansprüche 1 bis 2, wobei der VM-spezifische kryptografische Schlüssel spezifisch für eine VM ist, die mit einem ersten Befehl der Vielzahl von Befehlen assoziiert ist, und wobei der erste Befehl die Verarbeitungsschaltungen veranlasste, die Schreiboperation zu initiieren.
  4. System nach einem der Ansprüche 1 bis 3, wobei der Speichercontroller ferner Leseoperationen über die Speicherschaltungen durchführen soll, wobei das Durchführen einer Leseoperation das Generieren eines zweiten MAC zur Verwendung bei einer Validierung von Zieldaten beinhaltet, die zuvor über eine der Schreiboperationen gespeichert wurden, und wobei der zweite MAC wenigstens teilweise auf einem zweiten VM-spezifischen kryptografischen Schlüssel basiert, der mit einem zweiten Befehl assoziiert ist, der die Verarbeitungsschaltungen veranlasste, die Leseoperation zu initiieren.
  5. System nach Anspruch 4, wobei: die Speicherschaltungen ferner in Reaktion auf eine Bestimmung, dass die Validierung der zuvor gespeicherten Zieldaten fehlgeschlagen ist, eine Anzeige an die Verarbeitungsschaltungen bereitstellen sollen, dass die Validierung fehlgeschlagen ist; und die Verarbeitungsschaltungen ferner einen Betriebsmodus einer VM bestimmen sollen, die mit dem zweiten Befehl assoziiert ist, einen Fehlercode in Reaktion auf die Anzeige von den Speicherschaltungen generieren sollen und den generierten Fehlercode an ein Ziel bereitstellen sollen, das auf dem bestimmten Betriebsmodus der assoziierten VM basiert.
  6. System nach einem der Ansprüche 4 oder 5, wobei der generierte Fehlercode ein Seitenfehlercode ist, und wobei der bestimmte Betriebsmodus der assoziierten VM einer von einer Gruppe ist, die einen TD-Nicht-Root-Modus, einen TD-Root-Modus, einen VM-Erweiterungs(VMX, VM Extension)-Root-Modus und einen VMX-Nicht-Root-Modus beinhaltet.
  7. System nach einem der Ansprüche 1-6, wobei das Durchführen einer Schreiboperation ferner das Speichern von zusätzlichen Informationen beinhaltet, die eine Vielzahl von sekundären Bits als Teil einer Datenzeile umfassen, die die Zieldaten einschließt, die über die Schreiboperation gespeichert werden sollen, und wobei das Speichern der zusätzlichen Informationen, die die Vielzahl von sekundären Bits umfassen, das Einbetten des generierten MAC innerhalb der Vielzahl von sekundären Bits als Teil der Datenzeile beinhaltet.
  8. System nach Anspruch 7, wobei der Speichercontroller ferner Leseoperationen über die Speicherschaltungen durchführen soll, und wobei das Durchführen einer Leseoperation das Extrahieren des generierten MAC aus der Datenzeile, die die Zieldaten einschließt, beinhaltet.
  9. Vorrichtung zur kryptografischen Speicherisolierung, die Vorrichtung umfassend: Speicherschaltungen führen wenigstens Schreiboperationen über die Speicherschaltungen durch, wobei das Durchführen einer Schreiboperation beinhaltet: Generieren eines Nachrichtenauthentifizierungscodes (MAC, Message Authentication Code), der mit Zieldaten assoziiert ist, die innerhalb der Speicherschaltungen über die Schreiboperation gespeichert werden sollen, und der wenigstens teilweise auf (a) einem kryptografischen Schlüssel, der für eine virtuelle Maschine (VM) spezifisch ist, und (b) einer physikalischen Speicheradresse, in der die Zieldaten über die Schreiboperation gespeichert werden, basiert.
  10. Vorrichtung nach Anspruch 9, wobei das Generieren des MAC das Generieren des MAC über einen oder mehrere kryptografische Algorithmen beinhaltet, wobei ein eindeutiger anderer kryptografischer Schlüssel zum Verschlüsseln der Zieldaten verwendet wird, und wobei der MAC ferner auf den verschlüsselten Zieldaten basiert.
  11. Vorrichtung nach einem der Ansprüche 9 oder 10, wobei der VM-spezifische kryptografische Schlüssel spezifisch für eine VM ist, die mit einem ersten Befehl einer Vielzahl von Befehlen assoziiert ist, die jeweils mit einer von mehreren VMs assoziiert sind, und wobei der erste Befehl die Schreiboperation initiierte.
  12. Vorrichtung nach Anspruch 11, wobei die Speicherschaltungen ferner Leseoperationen durchführen sollen, wobei das Durchführen einer Leseoperation das Generieren eines zweiten MAC zur Verwendung bei einer Validierung von Zieldaten beinhaltet, die zuvor über eine der Schreiboperationen gespeichert wurden, und wobei der zweite MAC wenigstens teilweise auf einem zweiten VM-spezifischen kryptografischen Schlüssel basiert, der mit einem zweiten Befehl assoziiert ist, der die Verarbeitungsschaltungen veranlasste, die Leseoperation zu initiieren.
  13. Vorrichtung nach einem der Ansprüche 11 oder 12, wobei die Speicherschaltungen ferner in Reaktion auf eine Bestimmung, dass die Validierung der zuvor gespeicherten Zieldaten fehlgeschlagen ist, eine Anzeige bereitstellen sollen, dass die Validierung der Zieldaten fehlgeschlagen ist; und wobei die Vorrichtung ferner Verarbeitungsschaltungen umfasst, um einen Betriebsmodus einer VM zu bestimmen, die mit dem zweiten Befehl assoziiert ist, um einen Fehlercode in Reaktion auf die Anzeige von den Speicherschaltungen zu generieren und um den generierten Fehlercode an ein Ziel bereitzustellen, das auf dem bestimmten Betriebsmodus der assoziierten VM basiert.
  14. Vorrichtung nach Anspruch 13, wobei der generierte Fehlercode ein Seitenfehlercode ist, und wobei der bestimmte Betriebsmodus der assoziierten VM einer von einer Gruppe ist, die einen TD-Nicht-Root-Modus, einen TD-Root-Modus, einen VM-Erweiterungs(VMX, VM Extension)-Root-Modus und einen VMX-Nicht-Root-Modus beinhaltet.
  15. Vorrichtung nach einem der Ansprüche 9 bis 14, wobei das Durchführen einer Schreiboperation ferner das Speichern von zusätzlichen Informationen beinhaltet, die eine Vielzahl von sekundären Bits als Teil einer Datenzeile umfassen, die die Zieldaten einschließt, die über die Schreiboperation gespeichert werden sollen, und wobei das Speichern der zusätzlichen Informationen, die die Vielzahl von sekundären Bits umfassen, das Einbetten des generierten MAC innerhalb der Vielzahl von sekundären Bits als Teil der Datenzeile beinhaltet.
  16. Vorrichtung nach Anspruch 15, wobei die Speicherschaltungen ferner Leseoperationen durchführen sollen, und wobei das Durchführen einer Leseoperation das Extrahieren des generierten MAC aus der Datenzeile, die die Zieldaten einschließt, beinhaltet.
  17. Verfahren zur kryptografischen Speicherisolierung, das Verfahren umfassend: Ausführen von jedem von einer Vielzahl von Befehlen über einen oder mehrere Prozessoren, wobei jeder Befehl mit einer virtuellen Maschine (VM) assoziiert ist, die von dem einen oder den mehreren Prozessoren ausgeführt wird; und Durchführen einer oder mehrerer Schreiboperationen über Speicherschaltungen, die kommunikativ mit dem einen oder den mehreren Prozessoren gekoppelt sind, wobei jede Schreiboperation das Generieren, wenigstens teilweise basierend auf einem VM-spezifischen kryptografischen Schlüssel und auf einer physikalischen Speicheradresse für die Zieldaten, eines Nachrichtenauthentifizierungscodes (MAC, Message Authentication Code) beinhaltet.
  18. Verfahren nach Anspruch 17, ferner umfassend das Verschlüsseln der Zieldaten unter Verwendung eines eindeutigen anderen kryptografischen Schlüssels, und wobei das Generieren des MAC das Generieren des MAC über einen oder mehrere kryptografische Algorithmen beinhaltet, die ferner teilweise auf den verschlüsselten Zieldaten basieren.
  19. Verfahren nach einem der Ansprüche 17 oder 18, wobei das Generieren des MAC wenigstens teilweise basierend auf dem VM-spezifischen kryptografischen Schlüssel das Generieren des MAC basierend auf einem kryptografischen Schlüssel beinhaltet, der für eine VM spezifisch ist, die mit einem Befehl der Vielzahl von Befehlen assoziiert ist, und wobei das Verfahren ferner das Initiieren der Schreiboperation in Reaktion auf den einen Befehl umfasst.
  20. Verfahren nach einem der Ansprüche 17 bis 19, ferner umfassend das Durchführen einer oder mehrerer Leseoperationen über die Speicherschaltungen, wobei das Durchführen einer Leseoperation das Generieren eines zweiten MAC zur Verwendung bei der Validierung von Zieldaten beinhaltet, die zuvor über eine der Schreiboperationen gespeichert wurden, wobei das Generieren des zweiten MAC das Generieren des zweiten MAC wenigstens teilweise basierend auf einem zweiten VM-spezifischen kryptografischen Schlüssel beinhaltet, der mit einem zweiten Befehl assoziiert ist, und wobei das Verfahren ferner das Initiieren der Leseoperation in Reaktion auf den zweiten Befehl umfasst.
  21. Verfahren nach Anspruch 20, ferner umfassend: in Reaktion auf das Bestimmen, dass die Validierung der zuvor gespeicherten Zieldaten fehlgeschlagen ist, Generieren eines Fehlercodes, der anzeigt, dass die Validierung fehlgeschlagen ist; Bestimmen eines Betriebsmodus einer VM, die mit dem zweiten Befehl assoziiert ist; und Bereitstellen des generierten Fehlercodes an ein Ziel, das auf dem bestimmten Betriebsmodus der assoziierten VM basiert.
  22. Verfahren nach Anspruch 21, wobei das Generieren des Fehlercodes das Generieren eines Seitenfehlercodes beinhaltet, und wobei das Bestimmen des Betriebsmodus der assoziierten VM das Bestimmen beinhaltet, dass der Betriebsmodus einer von einer Gruppe ist, die einen TD-Nicht-Root-Modus, einen TD-Root-Modus, einen VM-Erweiterungs(VMX, VM Extension)-Root-Modus und einen VMX-Nicht-Root-Modus beinhaltet.
  23. Verfahren nach Anspruch 17, wobei das Durchführen einer Schreiboperation ferner das Speichern von zusätzlichen Informationen beinhaltet, die eine Vielzahl von sekundären Bits als Teil einer Datenzeile umfassen, die die Zieldaten einschließt, und wobei das Speichern der zusätzlichen Informationen, die die Vielzahl von sekundären Bits umfassen, das Einbetten des generierten MAC innerhalb der Vielzahl von sekundären Bits als Teil der Datenzeile beinhaltet.
  24. Verfahren nach Anspruch 23, ferner umfassend das Durchführen einer oder mehrerer Leseoperationen über die Speicherschaltungen, wobei das Durchführen einer Leseoperation das Extrahieren des generierten MAC aus der Datenzeile, die die Zieldaten einschließt, beinhaltet.
  25. System zur kryptografischen Speicherisolierung, das Verfahren umfassend: Mittel zum Ausführen von jedem von einer Vielzahl von Befehlen über einen oder mehrere Prozessoren, wobei jeder Befehl mit einer virtuellen Maschine (VM) assoziiert ist, die von dem einen oder den mehreren Prozessoren ausgeführt wird; und Mittel zum Durchführen einer oder mehrerer Schreiboperationen über Speicherschaltungen, die kommunikativ mit dem einen oder den mehreren Prozessoren gekoppelt sind, wobei jede Schreiboperation das Generieren, wenigstens teilweise basierend auf einem VM-spezifischen kryptografischen Schlüssel und auf einer physikalischen Speicheradresse für die Zieldaten, eines Nachrichtenauthentifizierungscodes (MAC, Message Authentication Code) beinhaltet.
  26. System nach Anspruch 25, ferner umfassend: Mittel zum Verschlüsseln der Zieldaten unter Verwendung eines eindeutigen anderen kryptografischen Schlüssels, und wobei das Generieren des MAC das Generieren des MAC über einen oder mehrere kryptografische Algorithmen beinhaltet, die ferner teilweise auf den verschlüsselten Zieldaten basieren.
  27. System nach einem der Ansprüche 25 oder 26: wobei die Mittel zum Generieren des MAC wenigstens teilweise basierend auf dem VM-spezifischen kryptografischen Schlüssel beinhalten: Mittel zum Generieren des MAC basierend auf einem kryptografischen Schlüssel, der für eine VM spezifisch ist, die mit einem Befehl der Vielzahl von Befehlen assoziiert ist; und wobei das System ferner beinhaltet: Mittel zum Initiieren der Schreiboperation in Reaktion auf den einen Befehl.
  28. System nach einem der Ansprüche 25 bis 27, ferner umfassend: Mittel zum Durchführen einer oder mehrerer Leseoperationen über die Speicherschaltungen; wobei die Mittel zum Durchführen der einen oder mehreren Leseoperationen ferner beinhalten: Mittel zum Durchführen einer Leseoperation beinhalten das Generieren eines zweiten MAC zur Verwendung bei der Validierung von Zieldaten, die zuvor über eine der Schreiboperationen gespeichert wurden; wobei die Mittel zum Generieren des zweiten MAC ferner beinhalten: Mittel zum Generieren des zweiten MAC wenigstens teilweise basierend auf einem zweiten VM-spezifischen kryptografischen Schlüssel, der mit einem zweiten Befehl assoziiert ist; und wobei das System ferner umfasst: Mittel zum Initiieren der Leseoperation in Reaktion auf den zweiten Befehl.
  29. System nach Anspruch 28, ferner umfassend: in Reaktion auf das Bestimmen, dass die Validierung der zuvor gespeicherten Zieldaten fehlgeschlagen ist, Mittel zum Generieren eines Fehlercodes, der anzeigt, dass die Validierung fehlgeschlagen ist; Mittel zum Bestimmen eines Betriebsmodus einer VM, die mit dem zweiten Befehl assoziiert ist; und Mittel zum Bereitstellen des generierten Fehlercodes an ein Ziel, das auf dem bestimmten Betriebsmodus der assoziierten VM basiert.
  30. System nach Anspruch 29: wobei die Mittel zum Generieren des Fehlercodes beinhalten: Mittel zum Generieren eines Seitenfehlercodes; und wobei die Mittel zum Bestimmen des Betriebsmodus der assoziierten VM beinhalten: Mittel zum Bestimmen, dass der Betriebsmodus einer von einer Gruppe ist, die einen TD-Nicht-Root-Modus, einen TD-Root-Modus, einen VM-Erweiterungs(VMX, VM Extension)-Root-Modus und einen VMX-Nicht-Root-Modus beinhaltet.
  31. System nach Anspruch 25: wobei die Mittel zum Durchführen einer Schreiboperation ferner umfassen: Mittel zum Speichern von zusätzlichen Informationen, die eine Vielzahl von sekundären Bits als Teil einer Datenzeile umfassen, die die Zieldaten einschließt; und wobei die Mittel zum Speichern der zusätzlichen Informationen, die die Vielzahl von sekundären Bits umfassen, beinhalten: Mittel zum Einbetten des generierten MAC innerhalb der Vielzahl von sekundären Bits als Teil der Datenzeile.
  32. System nach Anspruch 31, ferner umfassend: Mittel zum Durchführen einer oder mehrerer Leseoperationen über die Speicherschaltungen; wobei die Mittel zum Durchführen einer Leseoperation beinhalten: Mittel zum Extrahieren des generierten MAC aus der Datenzeile, die die Zieldaten einschließt.
  33. Nichtflüchtige Speichervorrichtung, die Befehle aufweist, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: Ausführen von jedem von einer Vielzahl von Befehlen über einen oder mehrere Prozessoren, wobei jeder Befehl mit einer virtuellen Maschine (VM) assoziiert ist, die von dem einen oder den mehreren Prozessoren ausgeführt wird; Durchführen einer oder mehrerer Schreiboperationen über Speicherschaltungen, die kommunikativ mit dem einen oder den mehreren Prozessoren gekoppelt sind; und Generieren, für jede der einen oder mehreren Schreiboperationen, wenigstens teilweise basierend auf einem VM-spezifischen kryptografischen Schlüssel und auf einer physikalischen Speicheradresse für die Zieldaten, eines Nachrichtenauthentifizierungscodes (MAC, Message Authentication Code).
  34. Nichtflüchtige Speichervorrichtung nach Anspruch 33, wobei die Befehle den einen oder die mehreren Prozessoren ferner veranlassen zum: Verschlüsseln der Zieldaten unter Verwendung eines eindeutigen anderen kryptografischen Schlüssels; wobei die Befehle, die den einen oder die mehreren Prozessoren zum Generieren des MAC veranlassen, den einen oder die mehreren Prozessoren ferner veranlassen zum: Generieren des MAC über einen oder mehrere kryptografische Algorithmen basierend auf den verschlüsselten Zieldaten.
  35. Nichtflüchtige Speichervorrichtung nach Anspruch 33 oder 34, wobei die Befehle, die den einen oder die mehreren Prozessoren veranlassen, den MAC wenigstens teilweise basierend auf dem VM-spezifischen kryptografischen Schlüssel zu generieren, den einen oder die mehreren Prozessoren ferner veranlassen zum: Generieren des MAC basierend auf einem kryptografischen Schlüssel, der für eine VM spezifisch ist, die mit einem Befehl der Vielzahl von Befehlen assoziiert ist; wobei die Befehle den einen oder die mehreren Prozessoren ferner veranlassen zum: Initiieren der Schreiboperation in Reaktion auf den einen Befehl.
  36. Nichtflüchtige Speichervorrichtung nach einem der Ansprüche 33 bis 35 wobei die Befehle den einen oder die mehreren Prozessoren ferner veranlassen zum: Durchführen einer oder mehrerer Leseoperationen über die Speicherschaltungen; wobei die Befehle, die den einen oder die mehreren Prozessoren zum Durchführen einer Leseoperation veranlassen, den einen oder die mehreren Prozessoren ferner veranlassen zum: Generieren eines zweiten MAC zur Verwendung beim Validieren von Zieldaten, die zuvor über eine der Schreiboperationen gespeichert wurden, wobei die Befehle, die den einen oder die mehreren Prozessoren zum Generieren des zweiten MAC veranlassen, den einen oder die mehreren Prozessoren ferner veranlassen zum: Generieren des zweiten MAC wenigstens teilweise basierend auf einem zweiten VM-spezifischen kryptografischen Schlüssel, der mit einem zweiten Befehl assoziiert ist; und wobei die Befehle den einen oder die mehreren Prozessoren ferner veranlassen zum: Initiieren der Leseoperation in Reaktion auf den zweiten Befehl.
  37. Nichtflüchtige Speichervorrichtung nach Anspruch 36, wobei die Befehle den einen oder die mehreren Prozessoren ferner veranlassen zum: in Reaktion auf das Bestimmen, dass die Validierung der zuvor gespeicherten Zieldaten fehlgeschlagen ist, Generieren eines Fehlercodes, der anzeigt, dass die Validierung fehlgeschlagen ist; Bestimmen eines Betriebsmodus einer VM, die mit dem zweiten Befehl assoziiert ist; und Bereitstellen des generierten Fehlercodes an ein Ziel, das auf dem bestimmten Betriebsmodus der assoziierten VM basiert.
  38. Nichtflüchtige Speichervorrichtung nach Anspruch 37, wobei die Befehle, die den einen oder die mehreren Prozessoren zum Generieren des Fehlercodes veranlassen, den einen oder die mehreren Prozessoren ferner veranlassen zum: Generieren eines Seitenfehlercodes; und wobei die Befehle, die den einen oder die mehreren Prozessoren zum Bestimmen des Betriebsmodus der assoziierten VM veranlassen, den einen oder die mehreren Prozessoren ferner veranlassen zum: Bestimmen, dass der Betriebsmodus einer von einer Gruppe ist, die einen TD-Nicht-Root-Modus, einen TD-Root-Modus, einen VM-Erweiterungs(VMX, VM Extension)-Root-Modus und einen VMX-Nicht-Root-Modus beinhaltet.
  39. Nichtflüchtige Speichervorrichtung nach Anspruch 33: wobei die Befehle, die den einen oder die mehreren Prozessoren zum Durchführen einer Schreiboperation veranlassen, den einen oder die mehreren Prozessoren ferner veranlassen zum: Speichern von zusätzlichen Informationen, die eine Vielzahl von sekundären Bits als Teil einer Datenzeile umfassen, die die Zieldaten einschließt; und wobei die Befehle, die den einen oder die mehreren Prozessoren veranlassen, die zusätzlichen Informationen zu speichern, die die Vielzahl von sekundären Bits umfassen, den einen oder die mehreren Prozessoren ferner veranlassen zum: Einbetten des generierten MAC innerhalb der Vielzahl von sekundären Bits als Teil der Datenzeile.
  40. Nichtflüchtige Speichervorrichtung nach Anspruch 39, wobei die Befehle den einen oder die mehreren Prozessoren ferner veranlassen zum: Durchführen einer oder mehrerer Leseoperationen über die Speicherschaltungen; wobei die Befehle, die den einen oder die mehreren Prozessoren zum Durchführen jeder der einen oder mehreren Leseoperationen veranlassen, den einen oder die mehreren Prozessoren ferner veranlassen zum: Extrahieren des generierten MAC aus der Datenzeile, die die Zieldaten einschließt.
DE102019110309.6A 2018-06-29 2019-04-18 Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen Pending DE102019110309A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/023,576 2018-06-29
US16/023,576 US11397692B2 (en) 2018-06-29 2018-06-29 Low overhead integrity protection with high availability for trust domains

Publications (1)

Publication Number Publication Date
DE102019110309A1 true DE102019110309A1 (de) 2020-01-02

Family

ID=65229644

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019110309.6A Pending DE102019110309A1 (de) 2018-06-29 2019-04-18 Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen

Country Status (3)

Country Link
US (2) US11397692B2 (de)
CN (1) CN110659521A (de)
DE (1) DE102019110309A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761996B2 (en) 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11397692B2 (en) * 2018-06-29 2022-07-26 Intel Corporation Low overhead integrity protection with high availability for trust domains
US20200137021A1 (en) * 2018-10-31 2020-04-30 Hewlett Packard Enterprise Development Lp Using intent to access in discovery protocols in a network for analytics
US11461244B2 (en) * 2018-12-20 2022-10-04 Intel Corporation Co-existence of trust domain architecture with multi-key total memory encryption technology in servers
US11036636B2 (en) 2019-06-28 2021-06-15 Intel Corporation Providing improved efficiency for metadata usages
US11635990B2 (en) * 2019-07-01 2023-04-25 Nutanix, Inc. Scalable centralized manager including examples of data pipeline deployment to an edge system
US11139983B2 (en) * 2019-07-11 2021-10-05 Cyber Armor Ltd. System and method of verifying runtime integrity
WO2022133860A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Key management for crypto processors attached to other processing units
US20220207155A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Instruction support for saving and restoring key information
US20220209959A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Isa support for programming hardware over untrusted links
CN117063178A (zh) * 2021-04-02 2023-11-14 谷歌有限责任公司 只读存储器(rom)安全
US20220335431A1 (en) * 2021-04-16 2022-10-20 Somos, Inc. Systems and methods for fraudulent activity detection
US20230251782A1 (en) * 2022-02-10 2023-08-10 Macronix International Co., Ltd. Memory device and associated control method
WO2023191895A1 (en) * 2022-03-28 2023-10-05 Intel Corporation Secure shared memory buffer for communications between trusted execution environment virtual machines

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6000832A (en) * 1997-09-24 1999-12-14 Microsoft Corporation Electronic online commerce card with customer generated transaction proxy number for online transactions
JP2006203564A (ja) * 2005-01-20 2006-08-03 Nara Institute Of Science & Technology マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
JP6584823B2 (ja) * 2014-06-20 2019-10-02 株式会社東芝 メモリ管理装置、プログラム、及び方法
US10108557B2 (en) * 2015-06-25 2018-10-23 Intel Corporation Technologies for memory confidentiality, integrity, and replay protection
US9710401B2 (en) * 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US10594491B2 (en) * 2015-12-24 2020-03-17 Intel Corporation Cryptographic system memory management
US20190004973A1 (en) 2017-06-28 2019-01-03 Intel Corporation Multi-key cryptographic memory protection
US11314865B2 (en) * 2017-08-01 2022-04-26 The Trustees Of Princeton University Pluggable trust architecture
US11687654B2 (en) * 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains
US10686605B2 (en) * 2017-09-29 2020-06-16 Intel Corporation Technologies for implementing mutually distrusting domains
US10938559B2 (en) * 2017-12-12 2021-03-02 Advanced Micro Devices, Inc. Security key identifier remapping
US11397692B2 (en) * 2018-06-29 2022-07-26 Intel Corporation Low overhead integrity protection with high availability for trust domains

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761996B2 (en) 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains
US11392506B2 (en) 2018-09-28 2022-07-19 Intel Corporation Apparatus and method for secure memory access using trust domains

Also Published As

Publication number Publication date
US11397692B2 (en) 2022-07-26
US20190042476A1 (en) 2019-02-07
US20220365885A1 (en) 2022-11-17
CN110659521A (zh) 2020-01-07

Similar Documents

Publication Publication Date Title
DE102019110309A1 (de) Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen
Nguyen et al. {FLAME}: Taming backdoors in federated learning
DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
DiLuoffo et al. Robot Operating System 2: The need for a holistic security approach to robotic architectures
US20190147160A1 (en) Virtual machine manager facilitated selective code integrity enforcement
RU2679721C2 (ru) Аттестация хоста, содержащего доверительную среду исполнения
DE102018101307A1 (de) Techniken für SGX-Enklaven-Fernauthentifizierung
DE102018005180A1 (de) Flexible Bescheinigung von Containern
DE112017004017T5 (de) Sichere öffentliche cloud
US9576147B1 (en) Security policy application through data tagging
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE102020126182A1 (de) Privatsphären- und datenschutz auf smart-edge-vorrichtungen
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE102019110327A1 (de) Technologien zum verifizieren von speicherintegrität über mehrere speicherbereiche hinweg
DE112017002044T5 (de) Plattformattestierung und registrierung für server
DE112014000965T5 (de) Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System
DE102018109397A1 (de) Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen
DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
DE102018004290A1 (de) Kryptographischer Speicherschutz mit Mehrfachschlüssel
DE112015004555T5 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
CN106687971A (zh) 用来减少软件的攻击面的自动代码锁定
DE112010004885T5 (de) Bereitstellen von Integritätsüberprüfung und -bestätigung in einer verborgenen Ausführungsumgebung
DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
DE112020000792T5 (de) Durch grafikverarbeitungseinheit beschleunigte vertrauenswürdige ausführungsumgebung
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud