DE202019005672U1 - System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher - Google Patents

System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher Download PDF

Info

Publication number
DE202019005672U1
DE202019005672U1 DE202019005672.6U DE202019005672U DE202019005672U1 DE 202019005672 U1 DE202019005672 U1 DE 202019005672U1 DE 202019005672 U DE202019005672 U DE 202019005672U DE 202019005672 U1 DE202019005672 U1 DE 202019005672U1
Authority
DE
Germany
Prior art keywords
memory
encryption
register
processor
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202019005672.6U
Other languages
English (en)
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 DE202019005672U1 publication Critical patent/DE202019005672U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/74Protecting 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 operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Abstract

Prozessor, der Folgendes umfasst:
ein erstes Register; und
einen Prozessorkern, der mit dem ersten Register gekoppelt ist, wobei der Prozessorkern ausgelegt ist zum:
Bestimmen, dass ein Speicherverschlüsselungsmodus aktiviert ist, durch Zugriff auf ein Bit im ersten Register, wobei der Speicherverschlüsselungsmodus bewirken soll, dass in den Speicher gespeicherte Daten verschlüsselt werden und aus dem Speicher abgefragte Daten entschlüsselt werden;
Bestimmen, dass ein Debug-Modus aktiviert wurde;
als Reaktion auf eine Bestimmung, dass der Debug-Modus aktiviert wurde, Erzeugen eines zweiten Verschlüsselungsschlüssels, der sich von einem ersten Verschlüsselungsschlüssel unterscheidet, der vor einem Neubooten eines Rechensystems eingesetzt wird; und
Übertragen des zweiten Verschlüsselungsschlüssels zu einer kryptografischen Engine zur Verwendung bei der Verschlüsselung und Entschlüsselung der Daten gemäß dem Speicherverschlüsselungsmodus.

Description

  • Technisches Gebiet
  • Die Offenbarung betrifft den Schutz von in einem Speicher eines Computersystems gespeicherten Daten und insbesondere das Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher.
  • Hintergrund
  • Moderne Prozessoren sind dazu ausgebildet, sensible Daten in Speicher vor sowohl Hardware- als auch Softwareangriffen zu schützen, und derart geschützte Gebiete des Speichers werden hierin als geschützter Speicher bezeichnet. Manche Prozessoren stellen kryptografische Mechanismen zum Verschlüsselungs-, Integritäts- und Replay-Schutz bereit. Die Speicherverschlüsselung schützt die Vertraulichkeit von sich im Speicher befindlichen Daten. Andererseits verhindert ein Integritätsschutz einen Angreifer davon, irgendwelche verborgenen Modifikationen an dem chiffrierten Text (d. h. verschlüsselten Daten im Gegensatz zu Klartext, bei dem es sich um unverschlüsselte Daten handelt) im Speicher zu bewirken, und Replay-Schutz eliminiert eine jegliche nicht detektierte zeitliche Ersetzung des chiffrierten Texts. Bei Nichtvorhandensein solcher Schutzmaßnahmen kann ein Angreifer mit einem physischen Zugriff auf das System Snapshots der Datenzeilen aufnehmen und sie zu einem späteren Zeitpunkt wieder abspielen. Um den Modus der Speicherschutzverwaltung zu ändern, bestimmt ein BIOS (Basic Input-Output System), welcher Modus einzusetzen ist, und kommuniziert diesen Modus zu einem Betriebssystem nach dem Booten des Computersystems. Ein Benutzer des Computersystems kann auch einen Debug-Modus über das BIOS während eines Systemneustarts oder System-Bootens ermöglichen.
  • Figurenliste
    • 1 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, das eine kryptografische Engine zum Implementieren von Schutz gegenüber einem unautorisierten Zugriff auf einen Speicher einsetzt, gemäß verschiedenen Implementierungen der Offenbarung.
    • 2 ist ein Blockdiagramm eines Computersystems, bei dem über eine Debug-Hardwareschnittstelle auf verschlüsselte Daten in einem Speicher in Klartext zugegriffen werden kann, gemäß Implementierungen.
    • 3 ist ein Flussdiagramm eines Verfahrens zur Verschlüsselungsschlüsselerzeugung gemäß Implementierungen.
    • 4 ist ein Flussdiagramm eines Verfahrens zum Verhindern eines unautorisierten Zugriffs auf einen verschlüsselten Speicher, gemäß Implementierungen.
    • 5A ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerumbenennungsstufen-, Out-of-Order-Erstellungs-/Ausführungspipeline veranschaulicht, gemäß einer Implementierung.
    • 5B ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor oder eine integrierte Schaltung veranschaulicht, der/die Hardwareunterstützung für einen statischen Modus geschützter Speicherverwaltung auf einer flexibel konvertierbaren Enklavenplattform implementieren kann, gemäß einer Implementierung der Offenbarung.
    • 6 veranschaulicht ein Blockdiagramm der Mikroarchitektur für einen Prozessor oder eine integrierte Schaltung, der/die Hardwareunterstützung für einen statischen Modus geschützter Speicherverwaltung auf einer flexibel konvertierbaren Enklavenplattform implementiert, gemäß einer Implementierung der Offenbarung.
    • 7 ist ein Blockdiagramm eines Computersystems gemäß einer Implementierung.
    • 8 ist ein Blockdiagramm eines Computersystems gemäß einer anderen Implementierung.
    • 9 ist ein Blockdiagramm eines System-on-Chip gemäß einer Implementierung.
    • 10 veranschaulicht eine andere Implementierung eines Blockdiagramms für ein Rechensystem.
    • 11 veranschaulicht eine andere Implementierung eines Blockdiagramms für ein Rechensystem.
  • Ausführliche Beschreibung
  • Verschiedene Techniken wurden eingesetzt, um sensible Daten zu schützen, die sich in Gebieten eines Speichers befinden. Manche Prozessoren stellen kryptografische Mechanismen zum Verschlüsselungs-, Integritäts- und Replay-Schutz bereit. Die Speicherverschlüsselung schützt die Vertraulichkeit von sich in einem Speicher befindlichen Daten. Beispielsweise kann ein als TME (Total Memory Encryption) bekannter Verschlüsselungsmodus Daten verschlüsseln, die von einem Prozessorkern zu einem Speicher bewegt werden, und können die verschlüsselten Daten auf deren Weg zurück in den Prozessorkern entschlüsseln. Somit kann eine kryptografische Engine, die TME einsetzt, zwischen einem Prozessorkern und Eingabe/Ausgabe(E/A)-Vorrichtungen und einem Speicher positioniert sein. Ein zur Verschlüsselung und Entschlüsselung verwendeter kryptografischer Schlüssel kann innerhalb eines Mehrprozessor-Dies (z. B. einem System-on-Chip (SoC)), wie etwa innerhalb der kryptografischen Engine, gespeichert sein.
  • In manchen Implementierungen, wie etwa beispielsweise in Intel® Software Guard Extensions (SGX) Technologie, setzt ein Prozessor eine Speicherverschlüsselungs-Engine (MME: Memory Encryption Engine) ein, um Daten zu schützen, wenn sich diese in einem Speicher befinden, z. B. innerhalb geschützter Enklaven oder Teilen des Speichers. Eine Enklave bezieht sich auf einen sicheren Container, z. B. ein isoliertes Speichergebiet mit Code und Daten innerhalb des Hauptspeichers, der mit einem Grad an Sicherheit geschützt ist, der zumindest Verschlüsselung beinhaltet. Der Speicher, den eine Enklave verwendet, wird manchmal auch als ein EPC (Enclave Page Cache - Enklavenseitencache) bezeichnet. Die MME erweitert den Verschlüsselungsschutz (wie etwa durch TME bereitgestellt), um zusätzliche Sicherheitseigenschaften wie etwa Integritäts- und Replay-Schutz bereitzustellen. Wenn somit hierin ein Bezug auf TME gemacht wird, kann somit auch verstanden werden, dass ein Bezug auf die MME, zumindest hinsichtlich der Verschlüsselung und Entschlüsselung, gemacht wird. Der Integritätsschutz verhindert, dass ein Angreifer verborgene Modifikationen an dem chiffrierten Text (z. B. verschlüsselten Daten, im Gegensatz zu Klartext, bei dem es sich um unverschlüsselte Daten handelt) im Speicher bewirkt. Ferner eliminiert Replay-Schutz eine nicht detektierte zeitliche Ersetzung des chiffrierten Texts. Bei Nichtvorhandensein solcher von der MME bereitgestellter Schutzmaßnahmen kann ein Angreifer mit einem physischen Zugriff auf das System Snapshots von Datenzeilen aufnehmen und sie zu einem späteren Zeitpunkt wieder abspielen, um Zugang zu den sich im Speicher befindlichen Daten zu erlangen.
  • TME (Total Memory Encryption) (oder eine andere anders genannte Verschlüsselung) ist eine Fähigkeit, die Gesamtheit des physischen Speichers eines Systems zu verschlüsseln. Diese Fähigkeit kann in frühen Stufen eines Boot-Prozesses mit einer Änderung am BIOS ermöglicht werden, und sobald konfiguriert und gesperrt, kann eine Verschlüsselung von Daten auf externen Speicherbussen eines SoC (oder Prozessor-Dies) beispielsweise unter Verwendung eines AES-XTS-Algorithmus des NIST(National Institute of Standards and Technology)-Standards mit 128-Bit-Schlüsseln bewirken, obwohl andere Standards denkbar sind. Der für TME verwendete Verschlüsselungsschlüssel setzt einen im SoC implementierten Hardware-Zufallszahlengenerator ein, und auf die Schlüssel kann nicht durch Software, oder allgemein unter Verwendung externer Schnittstellen zu dem SoC, zugegriffen werden. Diese TME-Fähigkeit soll Schutzmaßnahmen von AES-XTS für externe Speicherbusse und DIMMs (Dual In-Line Memory Modules) bereitstellen. Die TME-Architektur ist flexibel und kann zusätzliche zukünftige Speicherschutzschemen unterstützen. Wenn TME aktiviert wird, z. B. durch das BIOS, soll das TME (nicht modifizierte) bestehende System- und Anwendungssoftware unterstützen.
  • Die TME-Fähigkeit kann ferner gegenüber Angreifern mit physischem Besitz einer Rechenvorrichtung des Systems schützen. Ein Beispiel einer abzuschwächenden Hauptattacke kann vorliegen, wenn ein Angreifer das DIMM auf einem gebooteten System (z. B. mit einem Freon-Spray) einfriert, das DIMM entfernt und das DIMM schnell in ein anderes System platziert, in dem die Speicherinhalte abgefragt oder heruntergeladen werden, um Benutzer- und Systemberechtigungsnachweise, z. B. Passwort-Hashes, Bitlocker-Schlüssel und dergleichen, zu gewinnen. Ferner ist den System-Debug-Merkmalen eines Debug-Modus absichtlich erlaubt, auf im Systemspeicher gespeicherten Daten zuzugreifen. Beispiele für einen solchen Debug-Modus können Prozessorkerndurchlaufsteuerung (z. B. Sondenmodus), Debug-Direktspeicherzugriff (Debug-DMA), der mit der Fähigkeit von E/A-Vorrichtungen assoziiert ist, direkt auf gemeinsam genutzte Speicherorte auf den DIMMs zuzugreifen, oder einen anderen Modus, bei dem das System eine Zustimmung für den Zugriff auf den Systemspeicher bereitstellt, der die Speicherverschlüsselung umgeht, z. B. TME oder einen anderen Systemverschlüsselungsmodus umgeht, beinhalten. Da diese Debug-Merkmale auf dieselben Pfade wie der Prozessorkern und die E/A-Vorrichtungen zugreifen, können die Debug-Merkmale auf Klartextversionen von im Speicher gespeicherten Daten zugreifen.
  • Historisch wurde TME vor Angreifern mit Debug-Zugriff gesichert, indem alle Debug-Merkmale, die auf den Systemspeicher zugreifen können, permanent deaktiviert wurden. Die permanente Deaktivierung wurde durch das Programmieren einer On-Die-Fuse erreicht. Damit diese vorherige Lösung effektiv ist, musste das Debugging abgeschlossen sein, bevor die On-Die-Fuse durchbrannte. Sobald durchgebrannt, wurde ein nicht privilegierter Debug-Zugriff auf den Speicher permanent deaktiviert, was für spätere Debug-Zugriffsbedürfnisse nicht gut war und mit dem Nutzungsmodell von TME: einem BIOS-Einverständnis-Merkmal, inkonsistent war.
  • Dementsprechend kann in einer Implementierung ein Prozessor oder ein System einen Prozessorkern zum Ausführen eines Satzes von Anweisungen beinhalten, um zu bestimmen, dass ein Speicherverschlüsselungsmodus (z. B. TME, MEE oder ein anderer Verschlüsselungsmodus) aktiviert ist, indem z. B. ein in einem Verschlüsselungsaktivierungsregister gespeichertes Bit gelesen wird. Der Speicherverschlüsselungsmodus kann bewirken, dass in den Speicher gespeicherte Daten verschlüsselt werden, und aus dem Speicher abgefragte Daten entschlüsselt werden. Dieser Prozessorkern kann ferner bestimmen, dass ein Debug-Modus aktiviert wurde, indem z. B. ein in einem Debug-Schnittstellen-Register gespeichertes Bit gelesen wird. Der Prozessorkern kann ferner als Reaktion auf eine Bestimmung, dass der Debug-Modus aktiviert wurde, einen zweiten Verschlüsselungsschlüssel erzeugen, der sich vom ersten Verschlüsselungsschlüssel unterscheidet, der vor einem Neubooten eines durch den Prozessorkern angetriebenen Rechensystems eingesetzt wird, indem z. B. der Debug-Modus eine deterministische Anpassung am Schlüsselerzeugungsprozess bewirkt. Eine deterministische Anpassung kann als eine kryptografische Anpassung verstanden werden, die in Anbetracht einer speziellen Eingabe immer die gleiche Ausgabe erzeugen wird, wobei die zugrundeliegende Maschine durch die gleiche Sequenz von Zuständen läuft, um die gleiche Ausgabe zu erzeugen. Der Prozessorkern kann den zweiten Verschlüsselungsschlüssel zu einer kryptografischen Engine (z. B. TME-Engine, MEE) zur Verwendung bei der Verschlüsselung und Entschlüsselung der Daten übertragen. In einer Implementierung erzeugt die kryptografische Engine ihre eigenen Verschlüsselungsschlüssel. In einer anderen Implementierung führt der Prozessorkern Mikrocode (z. B. Mikroanweisungen oder Mikro-Ops) aus, um die Verschlüsselungsschlüssel zu erzeugen, wie ausführlicher besprochen wird.
  • Durch das Aktivieren der Verwendung eines Debug-Schnittstellen-Registers und Unterstützen von Logik, verschlüsselten Speicher vor einem Debug (oder einem anderen unautorisierten Zugriff) zu schützen, ermöglichen die offenbarten Schutzmaßnahmen, dass Speicher-Debug-Merkmale dynamisch aktiviert und deaktiviert werden, ohne im Speicher gespeicherte vertrauliche Daten den Angreifern mit einem physischen Debug-Zugriff preiszugeben. Dies repräsentiert einen erheblichen Vorteil gegenüber vorherigen Lösungen, die erfordern, dass Speicher-Debug-Merkmale permanent deaktiviert werden.
  • 1 ist ein Blockdiagramm, das ein Computersystem 100 veranschaulicht, das eine kryptografische Engine zum Implementieren eines Schutzes gegenüber einem unautorisierten Zugriff auf einen Speicher einsetzt, gemäß verschiedenen Implementierungen der Offenbarung. Das Computersystem 100 kann einen Prozessor 110, einen Hauptspeicher 160 und eine oder mehrere E/A-Vorrichtungen 180 beinhalten. Der Prozessor 110 kann in eine Verarbeitungsvorrichtung integriert sein, die Teil des Computersystems 100 ist. Der Prozessor 110 kann einen oder mehrere Prozessorkerne 112 (z.B. ein Mehrkernprozessor sein), eine Speichersteuerung 140, einen nichtflüchtigen Speicher 144 (wie etwa Flash), eine kryptografische Engine 150 und einen Zufallszahlengenerator 154 beinhalten, unter anderen Komponenten, die sich auf einem einzelnen Die des Prozessors 110 befinden können. In einer alternativen Implementierung ist der nichtflüchtige Speicher 144 eine Computerspeicherung, die sich extern zu dem Die des Prozessors 110 befindet (mit den gestrichelten Linien angegeben).
  • In verschiedenen Implementierungen kann die kryptografische Engine 150 eine TME(Total Memory Encryption)-Hardware, eine MME (Memory Encryption Engine) oder eine andere Verschlüsselungs-Engine beinhalten. In einer Implementierung befindet sich der Zufallszahlengenerator 154 auf dem Verarbeitungskern 112. Der Verarbeitungskern 112 kann Mikroanweisungen des Mikrocodes 124 unter Verwendung einer durch den Zufallszahlengenerator 154 erzeugten Zufallszahl ausführen, um einen Verschlüsselungsschlüssel zur Verwendung durch die kryptografische Engine 150 zu erzeugen. In einer alternativen Implementierung erzeugt die kryptografische Engine 150 den Verschlüsselungsschlüssel und verwendet dann den Verschlüsselungsschlüssel, um Daten zu verschlüsseln und zu entschlüsseln, die in den Hauptspeicher 160 gespeichert bzw. aus diesem abgefragt werden.
  • In verschiedenen Implementierungen kann in einer Ausführungsform jeder Verarbeitungskern 112 einen Cache 120, einen Mikrocode 124, einen Satz von Anweisungen zum Ausführen einer EFI (Extensible Firmware Interface) 130 wie etwa einem BIOS (Basic Input/Output System) und eine Anzahl von Registern 134A, z. B. modellspezifischen Registern (MSRs), beinhalten. Einige der Register 134A können als Register 134B implementiert werden, z. B. als Teil von Nicht-Kern-Hardware des Prozessors 110 (mit den gestrichelten Linien angegeben). Die Register 134A und 134B können ein Verschlüsselungsaktivierungsregister 135 und ein Debug-Schnittstellen-Register 136 beinhalten. In einer Ausführungsform ist das Verschlüsselungsaktivierungsregister 135 ein TME-Aktivierungs-MSR, und das Debug-Schnittstellen-Register 136 ist ein Debug-Schnittstellen-MSR. In einer Ausführungsform werden das Verschlüsselungsaktivierungsregister 135 und das Debug-Schnittstellen-Register 136 mit Bits für jeweilige Verschlüsselungs- und Debug-Modi kombiniert, die sich innerhalb eines einzelnen Registers befinden.
  • Der Cache 120 kann mehrere Cacheebenen beinhalten, wie etwa L1-Cache, L2-Cache und Last-Level-Cache (LLC), der am nächsten zu der Speichersteuerung 140 positioniert ist, obwohl andere Cacheebenen denkbar sind. Die Speichersteuerung 140 kann zwischen dem Cache 120 und dem Hauptspeicher 160 positioniert sein, um das Speichern von Daten in den Hauptspeicher 160 und das Abfragen von Daten aus diesem anzuleiten. Die kryptografische Engine 150 kann mit dem einen oder den mehreren Verarbeitungskernen 112, den E/A-Vorrichtungen 180 und der Speichersteuerung 140 gekoppelt sein und kann den Schutz von Daten, die in den Hauptspeicher 160 gespeichert und aus diesem abgefragt werden, über die Speichersteuerung 140 steuern.
  • In verschiedenen Implementierungen beinhaltet der Hauptspeicher 160 DIMMs, die aus dynamischen Direktzugriffsspeicher (DRAM), nichtflüchtigen Direktzugriffsspeicher (NVRAM), eine Kombination von beiden oder eine andere Art von RAM bestehen. Der Hauptspeicher 160 kann ein oder mehrere ungeschützte Gebiete 165 beinhalten, kann aber ansonsten vollständig geschützt sein und verschlüsselte Daten speichern. Die ungeschützten Gebiete 165 können als ein Bereich von Speicheradressen designiert sein. Der Hauptspeicher kann auch Systemsoftware wie etwa ein Betriebssystem (OS), einen Virtuelle-Maschine-Monitor (VMM) oder dergleichen speichern. Das OS und der VMM können durch einen oder mehrere Prozessorkerne 112 ausführbar sein. Wenn ferner das Computersystem 100 mit dem Hauptspeicher 160 als NVRAM konfiguriert ist, dann kann der NVRAM auch durch den Prozessorkern 112 (oder die kryptografische Engine 150) erzeugte Verschlüsselungsschlüssel verwenden. Falls jedoch der NVRAM als nichtflüchtiger Speicher behandelt werden würde, gibt es eine Option, in der Lage zu sein, denselben Verschlüsselungsschlüssel aufzuweisen, der über Plattformleistungszyklen oder -Neubooten erzeugt/wiederverwendet wird. Die zum Erzeugen des Verschlüsselungsschlüssels verwendete Zufallszahl kann in den nichtflüchtigen Speicher 144 gespeichert werden, wie mit Bezug auf 3 ausführlicher besprochen.
  • In einer Implementierung befindet sich die kryptografische Engine 150 zwischen dem Cache 120 und der Speichersteuerung 140, um Verschlüsselung, Entschlüsselung und Authentifizierung von Datenzeilen durchzuführen, die sich in den und aus dem Hauptspeicher 160 bewegen. Dementsprechend können die Daten, die sich über eine Verbinderleitung 158 zwischen der Speichersteuerung 140 und dem Hauptspeicher 160 bewegen, verschlüsselt sein. Diese Datenzeilen können mit Systemsoftware, Firmware oder einer Anwendung der Systemsoftware assoziiert sein oder von diesen zugänglich sein. In einer Implementierung befindet sich die kryptografische Engine 150 auf dem Prozessor-Die, während sich der Hauptspeicher 160 außerhalb des Prozessor-Dies befindet. Gemäß einer Implementierung verarbeitet die kryptografische Engine 150 mehrere Speicherleseanforderungen parallel, um die Zugriffslatenz zu dem Speicher 160 zu verbessern.
  • Wenn die kryptografische Engine 150 eine MEE ist, kann die MEE Zählermodusverschlüsselung durchführen, die erfordert, dass eine Verschlüsselungs-Seed für eine Datenzeile sowohl zeitlich als auch räumlich eindeutig ist. Eine Verschlüsselungs-Seed kann zum Beispiel eine beginnende alphanumerische (oder nur numerische) Abfolge sein. Während räumliche Eindeutigkeit unter Verwendung der Adresse der aufzurufenden Datenzeile erreicht werden kann, kann zeitliche Eindeutigkeit unter Verwendung eines Zählers erreicht werden, der als die Version der Datenzeile dient. Die MEE 150 kann auch die Datenzeilen in einem geschützten Gebiet (z. B. einer geschützten Enklave) des Hauptspeichers 160 unter Verwendung einer Zählerbaumstruktur schützen, bei der die Wurzel des Baumes auf dem Die gespeichert ist und einen Vertrauensanker (d. h. eine Vertrauensgrenze) bildet. Die Versionen der Datenzeilen sind Teil dieser Zählerbaumstruktur. Alternativ können andere Schutzmechanismen zum Replay-Schutz verwendet werden.
  • Weiter mit Bezug auf die 1 kann die EFI 130 über den Prozessorkern 112 eingesetzt werden, der einen Satz von Anweisungen während des Bootens des Computersystems 100 ausführt. Wie erwähnt, kann der Speicherschutzmodus durch die EFI 130 während des Bootens eingestellt werden. In einer Implementierung, wenn in den TME-Modus des Speicherschutzes eingetreten wird, stellt die EFI 130 ein erstes Bit im Verschlüsselungsaktivierungsregister 135 ein. Die EFI 130 kann auch ein zweites Bit im Debug-Schnittstellen-Register 136 einstellen, um anzugeben, dass ein Debug-Modus aktiviert wurde. Unterschiedliche Arten von Debug-Modi sind mit Bezug auf 2 ausführlicher besprochen.
  • 2 ist ein Blockdiagramm eines Computersystems 200, in dem auf verschlüsselte Daten im Speicher 160 in Klartext über eine Debug-Hardwareschnittstelle zugegriffen werden kann, gemäß Implementierungen. In einer Implementierung ähnelt das Computersystem 200 dem Computersystem 100 von 1. Wenn die EFI 130 Bits des Debug-Schnittstellen-Registers 136 einstellt, kann das Computersystem 200 eine Durchlaufsteuerung (z. B. Sondenmodus) oder Debug-Direktspeicherzugriff (Debug-DMA) (oder einen anderen Debug-Modus) für Zwecke des Durchführens von System- und Programm-Debugging des Computersystems 200 aktivieren. Diese Debug-Merkmale können auf den Hauptspeicher 160 über dieselbe Pfade wie der Prozessorkern 120 und die E/A-Vorrichtungen 180 zugreifen, wie mittels der Freifluss-Pfeile veranschaulicht, was einen Zugriff auf Klartextversionen der im Hauptspeicher 160 gespeicherten chiffrierten Daten ermöglicht.
  • In einer Implementierung sind die Debug-Merkmale durch eine physische Debug-Schnittstelle 205 wie etwa ein JTAG, eine USB(Universal Serial Bus)-Schnittstelle oder eine andere Debug-Schnittstelle steuerbar. JTAG steht für Joint Test Action Group, die den JTAG-Standard zum Verifizieren von Designs und Testen von Leiterplatten nach der Herstellung kodifizierte. Die abgedunkelten gestrichelten Linien in 2 veranschaulichen den physischen Pfad von der Debug-Schnittstelle 205 zu dem Sondenmodus, der über den Prozessorkern 120 verfügbar ist, und den Debug-DMA, der über die E/A-Vorrichtungen 180 verfügbar ist. Andere Debug-Modi und Pfade werden in Betracht gezogen, bei denen das System ein Einverständnis für den Zugriff auf den Systemspeicher (z. B. den Hauptspeicher 160) bereitstellt, der den Speicherschutz umgeht, z. B. TME oder einen anderen Systemverschlüsselungsmodus umgeht, wie etwa die MEE.
  • In herkömmlichen Systemen kann somit über einen einfachen Hardwaremechanismus des Verbindens mit einer Debug-Schnittstelle 205 und des Ermöglichens eines Debug-Modus über die EFI 130 (während des Neubootens) ein Angreifer den Klartext der im kryptografisch geschützten Speicher gespeicherten chiffrierten Daten extrahieren. Durch das wirksame Einsetzen solcher Debug-Merkmale kann der Angreifer TME-Schutzmaßnahmen umgehen, ohne die DIMMs des Hauptspeichers 160 einzufrieren und zu entfernen. Stattdessen kann der Angreifer die Klartextinhalte der DIMMs über die JTAG- oder USB-Schnittstellen extrahieren.
  • Im Sondenmodus stellt die EFI 130 ein Aktivierungsbit des Debug-Schnittstellen-Registers 136 ein, um anzugeben, dass ein Debug-Modus aktiviert ist, wodurch ein Einverständnis gegeben wird, dass ein anfordernder Benutzer auf Debug-Merkmale zugreift. Die Ausführung von Debug-Merkmalen kann die Ausführung von Debug-Code von anderen Quellen wie etwa von Flash oder RAMinterner Software beinhalten. Somit stellt die Debug-Schnittstelle 205 eine Hintertür in den Hauptspeicher 160 aufgrund von Privilegien bereit, die Debug-Vorrichtungen für den Zugriff auf alle Gebiete des Speichers, auf die der Prozessorkern 120 zugreifen kann, bereitgestellt werden, egal, ob durch einen Verschlüsselungsmodus geschützt oder nicht. Die EFI 130 kann auch ein Sperrbit des Debug-Schnittstellen-Registers einstellen, das den Zustand des Debug-Modus sperrt, egal ob aktiviert oder deaktiviert. Diese Sperrung des Zustands des Debug-Modus kann bei dem ersten SMI (System Machine Interrupt) auftreten. Sobald gesperrt, kann der Zustand des Debug-Modus (aktiviert/deaktiviert) fortbestehen, bis entweder eine E/A-Vorrichtung oder das Computersystem 200 zurückgesetzt wird. Schließlich kann die EFI 130 auch ein Lesebit des Debug-Schnittstellen-Registers 136 einstellen, um selektiv eine Erlaubnis zum Lesen des aktivierten Bits und des Sperrbits des Debug-Schnittstellen-MSR zu gewähren.
  • 3 ist ein Flussdiagramm 300 eines Verfahrens zur Verschlüsselungsschlüsselerzeugung gemäß Implementierungen. In Implementierungen kann der Prozessorkern 112 den Mikrocode 124 (1) ausführen, um die innerhalb des Flussdiagramms 300 von 3 veranschaulichten Funktionen durchzuführen. Der Mikrocode 124 kann einen Multiplexer 302 (oder eine Multiplexer-äquivalente Logik) dahingehend auslösen, zwischen einer durch den Zufallszahlengenerator 154 erzeugten Zufallszahl (zum Erzeugen eines neuen Verschlüsselungsschlüssels) und einer im nichtflüchtigen Speicher 144 abgespeicherten (zum Neuerstellen eines zuvor verwendeten Verschlüsselungsschlüssels) auszuwählen. Falls die Zufallszahl aus dem nichtflüchtigen Speicher 144 abgefragt wird, kann ein Verschlüsselungsschlüssel neu erstellt werden, der vor dem Neubooten und einem neuen Leistungszyklus eingesetzt wurde. In jedem Fall kann der Prozessorkern 112 Mikrocode ausführen, um Schlüsselableitungslogik 350 durchzuführen, um den Verschlüsselungsschlüssel zu erzeugen, egal ob den neuen Verschlüsselungsschlüssel oder den zuvor verwendeten Verschlüsselungsschlüssel. Die Schlüsselableitungslogik 350 kann als Reaktion darauf ausgeführt werden, dass ein zweites Bit in einem zweiten Register eingestellt wird, um anzugeben, dass ein Debug-Modus aktiviert wurde.
  • In verschiedenen Implementierungen können die im Verschlüsselungsaktivierungsregister 135 gespeicherten Bits, die während des Neubootens des Computersystems 300 eingestellt werden können, vorgeben, ob ein neuer Schlüssel erzeugt wird, und ob die Zufallszahl in den nichtflüchtigen Speicher 144 abgespeichert wird. Beispielsweise kann ein Bit vom Verschlüsselungsaktivierungsregister als ein erstes Signal 314 in den Mikrocode eingespeist werden, um den Multiplexer 302 dahingehend auszulösen, zwischen dem Zufallszahlengenerator und dem nichtflüchtigen Speicher 144 zu wählen. Ein anderes Bit oder dasselbe Bit vom Verschlüsselungsaktivierungsregister 135 kann als ein zweites Signal 316 in den Mikrocode eingespeist werden, um vorzugeben, ob die durch den Multiplexer 302 gewählte Zufallszahl im nichtflüchtigen Speicher abzuspeichern ist, z. B. zur Verwendung nach einem späteren Neustart oder Neubooten, um den Verschlüsselungsschlüssel neu zu erstellen. Die Schlüsselableitungslogik 350 kann den Verschlüsselungsschlüssel im Fall einer neuen Zufallszahl erzeugen, die vom Zufallszahlengenerator 154 empfangen wird, oder einen vorherigen Verschlüsselungsfall in einem Fall, bei dem eine vorherige Zufallszahl vom nichtflüchtigen Speicher 144 übergeben wird, neu erstellen.
  • In manchen Implementierungen können neue Verschlüsselungsschlüssel für Warm- oder Kaltbootenszenarien erzeugt werden, bei denen Speicher nicht beibehalten wird. Ein Warmbootenszenario ist eines, bei dem ein Rechensystem von einem Betriebssystem neu gestartet wird, und somit nicht abgeschaltet wird. Ein Kaltbootenszenario ist eines, bei dem ein Rechensystem vollständig abgeschaltet (ausgeschaltet) und dann neu gestartet wird. Diese Verschlüsselungsschlüssel können jedoch für Szenarien neu erstellt werden, bei denen Speicher beibehalten wird. Beispiele, bei denen Verschlüsselungsschlüssel neu erstellt werden, beinhalten unter anderem Zugriffe auf nichtflüchtige Speicher und Niederleistungs-Standby-Flüsse, z. B. Wiederaufnahme nach Standby. Um einen unautorisierten Zugriff auf den Hauptspeicher 160 zum Extrahieren von Klartextversionen verschlüsselter Daten zu verhindern, kann der Mikrocode 124 gezwungen werden, eine Debug-Modus-Freigabeprüfung 340 vor der Ausführung der Schlüsselableitungslogik 350 durchzuführen. Diese Prüfung kann dem Mikrocode ermöglichen, die Verwendung einer deterministischen Anpassung zu erzwingen, um einen neuen Verschlüsselungsschlüssel in den Fällen zu erzeugen, bei denen der Debug-Modus aktiviert ist, wie nun ausführlicher mit Bezug auf 4 besprochen wird.
  • 4 ist ein Flussdiagramm eines Verfahrens 400 zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher, gemäß Implementierungen. Das Verfahren 400 kann durch eine Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungsanordnung, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie etwa durch den (die) Prozessorkern(e) 112 ausgeführte Anweisungen), Firmware (einschließlich Mikrocode) oder eine Kombination davon umfassen kann. In einer Implementierung wird das Verfahren 400 durch den Prozessor 110 von 1 durchgeführt. In einer anderen Implementierung wird das Verfahren 400 durch einen beliebigen der mit Bezug auf die 5a-11 beschriebenen Prozessoren durchgeführt. Alternativ können andere Komponenten des Computersystems 100 (oder Software, die auf dem Prozessor 110 ausgeführt wird) oder 200 einige oder alle der Operationen des Verfahrens 400 durchführen.
  • Mit Bezug auf 4 beginnt das Verfahren 400 damit, dass die Verarbeitungslogik ein System-Neubooten, während sie sich in einem Verschlüsselungsmodus (z. B. TME, MEE oder einem anderen Modus) befindet, unter Verwendung eines ersten Verschlüsselungsschlüssels detektiert (410). Das Verfahren 400 kann damit fortfahren, dass die Verarbeitungslogik bestimmt, dass der Verschlüsselungsmodus nach dem Neubooten aktiviert ist (420). Die Aktivierung des Verschlüsselungsmodus kann durch das Lesen eines Bits aus dem Verschlüsselungsaktivierungsregister 135 bestimmt werden. Das Verfahren 400 kann damit fortfahren, dass die Verarbeitungslogik bestimmt, ob ein Debug-Modus aktiviert ist, z. B. durch Detektieren, dass sich ein Status des Betriebssystems im Debug-Modus befindet (430). Die Aktivierung des Debug-Modus kann durch Lesen eines Bits aus dem Debug-Schnittstellen-Register 136 bestimmt werden.
  • Weiterhin mit Bezug auf 4, falls der Debug-Modus als aktiviert detektiert wird, kann das Verfahren 400 damit fortfahren, dass die Verarbeitungslogik einen zweiten Verschlüsselungsschlüssel, der sich vom ersten Verschlüsselungsschlüssel unterscheidet, zur Verwendung durch die kryptografische Engine erzeugt (434). Die Verarbeitungslogik kann den zweiten Verschlüsselungsschlüssel mit einer deterministischen Anpassung im Schlüsselerzeugungsprozess erzeugen oder andere Schlüsselerzeugungslogik als Reaktion auf die Detektion eines Status des Debug-Modus ausführen. Der zweite Verschlüsselungsschlüssel (z. B. ein Debug-Schlüssel) kann deterministisch sein, um den Debug-Modus durch Leistungszustände wie etwa ein Warmrücksetzen zu unterstützen. In einer Implementierung ist die kryptografische Engine 150 die Komponente zum Erzeugen des zweiten Verschlüsselungsschlüssels mit einer derartigen deterministischen Anpassung. In einer anderen Implementierung führt der Prozessorkern 112 einen Satz von Mikroanweisungen vom Mikrocode 124 aus oder führt anderweitig die Schlüsselableitungslogik 350 aus, um den zweiten Verschlüsselungsschlüssel mit der deterministischen Anpassung zu erzeugen.
  • In Ausführungsformen, wenn die kryptografische Engine 150 den zweiten Verschlüsselungsschlüssel nicht erzeugt, kann das Verfahren 400 damit fortfahren, dass die Verarbeitungslogik den zweiten Verschlüsselungsschlüssel zu der kryptografischen Engine zur Verwendung durch die kryptografische Engine überträgt (438). Das Verfahren 400 kann damit fortfahren, dass die kryptografische Engine 443 den zweiten Verschlüsselungsschlüssel verwendet, um die im Speicher 160 zu speichernden Daten zu verschlüsseln und die aus dem Speicher abzufragenden Daten zu entschlüsseln (442). Auf diese Weise kann ein Angreifer die Speicherverschlüsselung und -entschlüsselung mittels eines Neubooten und Auslösen des Debug-Modus über die EFI 130 nicht umgehen. Falls der Angreifer versucht, auf die Daten unter Verwendung des ersten Verschlüsselungsschlüssels zuzugreifen, werden die Daten unlesbar, da der Angreifer nicht den zweiten Verschlüsselungsschlüssel für den Zugriff auf die Daten im Speicher 160 verwendete.
  • Weiterhin mit Bezug auf 4, falls der Debug-Modus nicht bei Block 430 aktiviert ist, kann das Verfahren 400 damit fortfahren, dass die Verarbeitungslogik bestimmt, ob der erste Verschlüsselungsschlüssel neu zu erstellen ist, der vor dem System-Neubooten verwendet wird (450). Szenarien, in denen Daten im Speicher 160 während des Neubootens beibehalten werden, sind Beispiele für Fälle, bei denen der Verschlüsselungsschlüssel neu erstellt werden kann, wie zuvor besprochen. Falls der erste Verschlüsselungsschlüssel nicht neu erstellt werden muss, kann das Verfahren 400 damit fortfahren, dass die Verarbeitungslogik den zweiten Verschlüsselungsschlüssel, der sich vom ersten Verschlüsselungsschlüssel unterscheidet, mit einer neuen Zufallszahl zur Verwendung durch die kryptografische Engine erzeugt (454). Falls der erste Verschlüsselungsschlüssel nicht neu erstellt werden muss, kann das Verfahren 400 damit fortfahren, dass die Verarbeitungslogik eine abgespeicherte Zufallszahl für den ersten Verschlüsselungsschlüssel aus dem nichtflüchtigen Speicher 144 abfragt (454). Das Verfahren 400 kann damit fortfahren, dass die Verarbeitungslogik den ersten Verschlüsselungsschlüssel mit der aus dem nichtflüchtigen Speicher abgefragten Zufallszahl neu erstellt (458). Das Verfahren 400 kann damit fortfahren, dass die Verarbeitungslogik optional den ersten Verschlüsselungsschlüssel zu der kryptografischen Engine überträgt, wenn z. B. die kryptografische Engine den ersten Verschlüsselungsschlüssel nicht erzeugte (462). Das Verfahren 400 kann damit fortfahren, dass die kryptografische Engine den ersten Verschlüsselungsschlüssel verwendet, um die im Speicher 160 zu speichernden Daten zu verschlüsseln und die aus dem Speicher abzufragenden Daten zu entschlüsseln (442). Auf diese Weise kann, wenn der Debug-Modus nicht aktiviert ist und der Schlüssel neu erstellt werden sollte, um auf beibehaltenen Speicher zuzugreifen, die Verarbeitungslogik den ersten Schlüssel neu erstellen, der vor dem Neubooten des Rechensystems 100 oder 200 eingesetzt wurde.
  • 5A ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor 500 veranschaulicht, der Hardwareunterstützung zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher implementiert, gemäß einer Implementierung. Insbesondere stellt der Prozessor 500 einen In-Order-Architekturkern und eine Registerumbenennungslogik, Out-of-Order-Erstellungs-/Ausführungslogik dar, die in einen Prozessor einzuschließen ist, gemäß mindestens einer Implementierung der Offenbarung.
  • Der Prozessor 500 beinhaltet eine Frontend-Einheit 530, die mit einer Ausführungs-Engine-Einheit 550 gekoppelt ist, und beide sind mit einer Speichereinheit 570 gekoppelt. Der Prozessor 500 kann einen RISC-Kern (RISC: Reduced Instruction Set Computing - Computing mit reduzierten Befehlssatz), einen CISC-Kern (CISC: Complex Instruction Set Computing - Computing mit komplexem Befehlssatz), einen VLIW-Kern (VLIW: Very Long Instruction Word - sehr langes Anweisungswort) oder einen hybriden oder alternativen Kerntyp beinhalten. Als noch eine andere Option kann der Prozessor 500 einen Spezialzweck-Kern beinhalten, wie etwa zum Beispiel einen Netzwerk- oder Kommunikationskern, eine Komprimierungs-Engine, einen Grafikkern oder dergleichen. In einer Implementierung kann der Prozessor 500 ein Mehrkernprozessor sein oder kann Teil eines Mehrprozessorsystems sein.
  • Die Frontend-Einheit 530 beinhaltet eine Zweigvorhersageeinheit 532, die mit einer Anweisungscacheeinheit 534 gekoppelt ist, die mit einem Anweisungs-Übersetzungspuffer (Anweisungs-Translation-Lookaside-Buffer, Anweisungs-TLB) 536 gekoppelt ist, der mit einer Anweisungsabrufeinheit 538 gekoppelt ist, die mit einer Decodierungseinheit 540 gekoppelt ist. Die Decodierungseinheit 540 (auch als ein Decodierer bekannt) kann Anweisungen decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Eintrittspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale erzeugen, die aus den ursprünglichen Anweisungen decodiert werden, oder diese anderweitig widerspiegeln oder aus diesen abgeleitet werden. Der Decodierer 540 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen beinhalten unter anderem Nachschlagetabellen, Hardwareimplementierungen, programmierbare Logikarrays (PLAs), Mikrocode-Nur-Lese-Speicher (Mikrocode-ROMs) usw. Die Anweisungscacheeinheit 534 ist ferner mit der Speichereinheit 570 gekoppelt. Die Decodierungseinheit 540 ist mit einer Umbenennungs-/Zuweisereinheit 552 in der Ausführungs-Engine-Einheit 550 gekoppelt.
  • Die Ausführungs-Engine-Einheit 550 beinhaltet die Umbenennungs-/Zuweisereinheit 552, die mit einer Rückzugseinheit 554 und einem Satz einer oder mehrerer Scheduler-Einheiten 556 gekoppelt ist. Die eine oder mehrere Scheduler-Einheiten 556 repräsentieren eine beliebige Anzahl unterschiedlicher Scheduler-Schaltungen, einschließlich Reservierungsstationen (RS), eines zentralen Anweisungsfensters usw. Die eine oder die mehreren Scheduler-Einheiten 556 sind mit der einen oder den mehreren physischen Registersatzeinheiten 558 gekoppelt. Jede der physischen Registersatzeinheiten 558 repräsentiert einen oder mehrere physische Registersätze, wobei unterschiedliche von diesen einen oder mehrere unterschiedliche Datentypen speichern, wie etwa Skalar-Ganzzahl, Skalar-Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektor-Ganzzahl, Vektor-Gleitkomma usw., Status (z. B. einen Anweisungszeiger, der die Adresse der nächsten auszuführenden Anweisung ist) usw. Die eine oder die mehreren physischen Registersatzeinheiten 558 werden durch die Rückzugseinheit 554 überlappt, um verschiedene Weisen zu veranschaulichen, mit denen Registerumbenennung und Out-of-Order-Ausführung implementiert werden können (z. B. unter Verwendung eines oder mehrerer Umordnungspuffer und eines oder mehrerer Rückzugsregistersätzen, unter Verwendung einer oder mehrerer zukünftiger Dateien, eines oder mehrerer historischer Puffer und eines oder mehrerer Rückzugsregistersätze; unter Verwendung einer Registerabbildung und eines Pools von Registern usw.).
  • Im Allgemeinen sind die Architekturregister von außerhalb des Prozessors oder von der Sicht eines Programmierers aus sichtbar. Die Register sind nicht auf irgendeinen bekannten speziellen Typ von Schaltung beschränkt. Verschiedene unterschiedliche Typen von Registern sind geeignet, solange sie in der Lage sind, Daten wie hierin beschrieben zu speichern und bereitzustellen. Beispiele für geeignete Register beinhalten unter anderem dedizierte physische Register, dynamisch zugewiesene physische Register unter Verwendung von Registerumbenennung, Kombinationen dedizierter und dynamisch zugewiesener physischer Register usw. Die Rückzugseinheit 554 und die eine oder die mehreren physischen Registersatzeinheiten 558 sind mit dem einen oder den mehreren Ausführungsclustern 560 gekoppelt. Das eine oder die mehreren Ausführungscluster 560 beinhalten einen Satz einer oder mehrerer Ausführungseinheiten 562 und einen Satz einer oder mehrerer Speicherzugriffseinheiten 564. Die Ausführungseinheiten 562 können verschiedene Operationen durchführen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datentypen arbeiten (z. B. Skalar-Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektor-Ganzzahl, Vektor-Gleitkomma).
  • Obwohl manche Implementierungen eine Anzahl von Ausführungseinheiten beinhalten können, die spezifischen Funktionen oder Sätzen von Funktionen dediziert sind, können andere Implementierungen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die jeweils alle Funktionen durchführen, beinhalten. Die eine oder die mehreren Scheduler-Einheiten 556, die eine oder die mehreren physischen Registersatzeinheiten 558 und das eine oder die mehreren Ausführungscluster 560 sind als möglicherweise mehrzahlig gezeigt, da gewisse Implementierungen separate Pipelines für gewisse Datentypen/Operationen erzeugen (z.B. eine Skalar-Ganzzahl-Pipeline, eine Skalar-Gleitkomma-/Gepackte-Ganzzahl-/Gepacktes-Gleitkomma-/Vektor-Ganzzahl-/Vektor-Gleitkomma-Pipeline und/oder eine Speicherzugriffspipeline, die jeweils ihr(e) eigene(s) Scheduler-Einheit, physische Registersatzeinheit und/oder Ausführungscluster aufweisen - und im Fall einer separaten Speicherzugriffspipeline, werden gewisse Implementierungen implementiert, in denen nur das Ausführungscluster dieser Pipeline die eine oder die mehreren Speicherzugriffseinheiten 564 aufweist). Es sollte auch verstanden werden, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order-Erstellung/Ausführung und der Rest In-Order sein können.
  • Der Satz von Speicherzugriffseinheiten 564 ist mit der Speichereinheit 570 gekoppelt, die einen Daten-Prefetcher (Daten-Vorabrufer) 580, eine Daten-TLB-Einheit 572, eine Datencacheeinheit (DCU) 574 und eine Ebene-2(L2)-Cacheeinheit 576 beinhalten kann, um einige Beispiele zu nennen. In manchen Implementierungen ist die DCU 574 auch als ein Datencache erster Ebene (L1-Cache) bekannt. Die DCU 574 kann mehrere ausstehende Cachefehlschläge bearbeiten und das Abarbeiten eingehender Speicheroperationen und Ladeoperationen fortsetzen. Sie unterstützt auch das Beibehalten der Cachekohärenz. Die Daten-TLB-Einheit 572 ist ein Cache, der zum Verbessern der Übersetzungsgeschwindigkeit virtueller Adressen verwendet wird, indem virtuelle und physische Adressräume abgebildet werden. In einer beispielhaften Implementierung können die Speicherzugriffseinheiten 564 eine Ladeeinheit, eine Adressspeicherungseinheit und eine Datenspeicherungseinheit beinhalten, die jeweils mit der Daten-TLB-Einheit 572 in der Speichereinheit 570 gekoppelt sind. Die L2-Cacheeinheit 576 kann mit einer oder mehreren anderen Cacheebenen und letztlich mit einem Hauptspeicher gekoppelt sein.
  • In einer Implementierung lädt der Daten-Prefetcher 580 spekulativ Daten in die DCU 574 bzw. ruft diese vorher ab, indem er automatisch vorhersagt, welche Daten ein Programm in Kürze verbrauchen wird. Das Vorabrufen kann sich auf das Transferieren von an einem Speicherort (z. B. Position) einer Speicherhierarchie (z. B. Caches oder Speicher unterer Ebene) gespeicherten Daten zu einem Speicherort höherer Ebene beziehen, der sich näher (z. B. ergibt niedrigere Zugriffslatenz) an dem Prozessor befindet, bevor die Daten tatsächlich von dem Prozessor angefordert werden. Genauer gesagt kann sich das Vorabrufen auf das frühe Abfragen von Daten aus einem der Caches/Speicher unterer Ebene zu einem Datencache und/oder Vorabrufpuffer beziehen, bevor der Prozessor eine Aufforderung für die Rückgabe der spezifischen Daten erstellt.
  • Der Prozessor 500 kann einen oder mehrere Befehlssätze unterstützen (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von Imagination Technology in Kings Langley, Hertfordshire, UK; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie etwa NEON) von ARM Holdings in Sunnyvale, Kalifornien, USA).
  • Es sollte verstanden werden, dass der Kern Multithreading (Ausführung von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf eine Vielfalt von Weisen durchführen kann, einschließlich zeitlich unterteiltes Multithreading, simultanes Multithreading (bei dem ein einzelner physischer Kern einen Logikkern für jeden der Threads bereitstellt, die dieser physische Kern simultan einem Multithreading unterzieht), oder eine Kombination davon (z. B. zeitlich unterteiltes Abholen und Decodieren und simultanes Multithreading danach, wie etwa in der Intel® Hyperthreading Technologie).
  • Obwohl die Registerumbenennung im Kontext der Out-of-Order-Ausführung beschrieben ist, sollte verstanden werden, dass Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Obwohl die veranschaulichte Implementierung des Prozessors auch separate Anweisungs- und Datencacheeinheiten und eine gemeinsam genutzte L2-Cacheeinheit beinhaltet, können alternative Implementierungen einen einzigen internen Cache für sowohl Anweisungen als auch Daten aufweisen, wie etwa zum Beispiel einen internen Ebene-1(L1)-Cache oder mehrere Ebenen eines internen Cache. In manchen Implementierungen kann das System eine Kombination eines internen Cache und eines externen Cache, der sich extern zu dem Kern und/oder dem Prozessor befindet, beinhalten. Alternativ kann der gesamte Cache extern zu dem Kern und/oder dem Prozessor liegen.
  • 5B ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerumbennenungsstufen-, Out-of-Order-Erstellungs-/Ausführungspipeline veranschaulicht, die durch den Prozessor 500 von 5A implementiert werden, gemäß manchen Implementierungen der Offenbarung. Die Kästchen mit durchgezogenen Linien in 5B veranschaulichen eine In-Order-Pipeline 501, während die Kästchen mit gestrichelten Linien eine Registerumbennenungs-, Out-of-Order-Erstellungs-/Ausführungspipeline 503 veranschaulichen. In 5B beinhalten die Pipelines 501 und 503 eine Abrufstufe 502, eine Längendecodierungsstufe 504, eine Decodierungsstufe 506, eine Zuweisungsstufe 508, eine Umbenennungsstufe 510, eine Scheduling-Stufe (auch bekannt als eine Entsendungs- oder Erstellungsstufe) 512, eine Registerlese-/Speicherlesestufe 514, eine Ausführungsstufe 516, eine Zurückschreib-/Speicherschreibstufe 518, eine Ausnahmebehandlungsstufe 522 und eine Übergabestufe 524. In manchen Implementierungen kann die Reihenfolge der Stufen 502-524 anders als veranschaulicht sein und ist nicht auf die spezifische in 5B gezeigte Reihenfolge beschränkt.
  • 6 veranschaulicht ein Blockdiagramm der Mikroarchitektur für einen Prozessor 600, die Logikschaltungen eines Prozessors oder einer integrierten Schaltung beinhaltet, der/die Hardwareunterstützung zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher implementiert, gemäß einer Implementierung der Offenbarung. In manchen Implementierungen kann eine Anweisung gemäß einer Implementierung implementiert werden, um an Datenelementen mit Größen von Byte, Wort, Doppelwort, Vierfachwort usw. sowie Datentypen wie etwa Einzel- und Doppelpräzision-Ganzzahl- und -Gleitkomma-Datentypen zu arbeiten. In einer Implementierung ist das In-Order-Frontend 601 der Teil des Prozessors 600, der auszuführende Anweisungen abholt und sie zur späteren Verwendung in der Prozessorpipeline vorbereitet. Die Implementierungen der Seitenhinzufügungen und des Inhaltskopierens können im Prozessor 600 implementiert werden.
  • Das Frontend 601 kann mehrere Einheiten beinhalten. In einer Implementierung ruft der Anweisungs-Prefetcher 616 Anweisungen aus dem Speicher ab und speist sie in einen Anweisungsdecodierer 618 ein, der sie im Gegenzug decodiert oder interpretiert. Beispielsweise decodiert der Decodierer in einer Implementierung eine empfangene Anweisung in eine oder mehrere Operationen, „Mikroanweisungen“ oder „Mikrooperationen“ (auch Mikro-Op oder Uops genannt) genannt, die die Maschine ausführen kann. In anderen Implementierungen parst der Decodierer die Anweisung in einen Opcode und entsprechende Daten und Steuerfelder, die durch die Mikroarchitektur zum Durchführen von Operationen gemäß einer Implementierung verwendet werden. In einer Implementierung nimmt der Trace-Cache 630 decodierte Uops und assembliert sie in programmgeordnete Sequenzen oder Traces in der Uop-Warteschlange 634 zur Ausführung. Wenn der Trace-Cache 630 auf eine komplexe Anweisung trifft, liefert der Mikrocode-ROM (oder -RAM) 632 die zum Abschließen der Operation benötigten Uops.
  • Einige Anweisungen werden in eine einzelne Mikro-Op konvertiert, wohingegen andere mehrere Mikro-Ops benötigen, um die volle Operation abzuschließen. In einer Implementierung, falls mehr als vier Mikro-Ops zum Abschließen einer Anweisung benötigt werden, greift der Decodierer 618 auf den Mikrocode-ROM 632 zu, um die Anweisung durchzuführen. Für eine Implementierung kann eine Anweisung in eine kleine Anzahl von Mikro-Ops zur Verarbeitung am Anweisungsdecodierer 618 decodiert werden. In einer anderen Implementierung kann eine Anweisung innerhalb des Mikrocode-ROM 632 gespeichert werden, wenn eine Anzahl von Mikro-Ops zum Erreichen der Operation benötigt werden sollte. Der Trace-Cache 630 bezieht sich auf ein Eintrittspunkt-programmierbares Logikarray (PLA) zum Bestimmen eines korrekten Mikroanweisungszeigers zum Lesen der Mikrocodesequenzen, um eine oder mehrere Anweisungen gemäß einer Implementierung vom Mikrocode-ROM 632 abzuschließen. Nachdem der Mikrocode-ROM 632 das Sequenzieren von Mikro-Ops für eine Anweisung beendet, nimmt das Frontend 601 der Maschine das Abrufen von Mikro-Ops aus dem Trace-Cache 630 wieder auf.
  • Die Out-of-Order-Ausführungs-Engine 603 ist die Stelle, an der die Anweisungen zur Ausführung vorbereitet werden. Die Out-of-Order-Ausführungslogik weist eine Anzahl von Puffern zum Glätten und Umordnen des Ablaufs von Anweisungen auf, um die Performanz zu optimieren, während sie entlang der Pipeline laufen und zur Ausführung geplant werden. Die Zuweiserlogik weist die Maschinenpuffer und Ressourcen zu, die jede Uops benötigt, um ausgeführt zu werden. Die Registerumbenennungslogik benennt Logikregister auf Einträge in einem Registersatz um. Der Zuweiser weist außerdem einen Eintrag für jede Uop in einer der beiden Uop-Warteschlangen, eine für Speicheroperationen und eine für Nicht-Speicheroperationen, vor den Anweisungs-Schedulern zu: Speicher-Scheduler, schneller Scheduler 602, langsamer/allgemeiner Gleitkomma-Scheduler 604 und einfacher Gleitkomma-Scheduler 606. Die Uop-Scheduler 602, 604, 606 bestimmen basierend auf der Bereitschaft ihrer abhängigen Eingangsregisteroperandenquellen und der Verfügbarkeit der Ausführungsressourcen, die die Uops zum Abschließen ihres Betriebs erfordern, wann eine Uop zur Ausführung bereit ist. Der schnelle Scheduler 602 einer Implementierung kann auf jeder Hälfte des Haupttaktzyklus planen, während die anderen Scheduler nur einmal je Hauptprozessortaktzyklus planen können. Die Scheduler arbitrieren für die Entsendeports, um Uops zur Ausführung zu planen.
  • Die Registersätze 608, 610 sitzen zwischen den Schedulern 602, 604, 606 und den Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624 im Ausführungsblock 611. Es gibt einen separaten Registersatz 608, 610 für Ganzzahl- bzw. Gleitkomma-Operationen. Jeder Registersatz 608, 610 einer Implementierung beinhaltet auch ein Bypass-Netzwerk, das nur abgeschlossene Ergebnisse, die noch nicht in den Registersatz geschrieben wurden, zu neuen abhängigen Uops umleiten oder weiterleiten kann. Der Ganzzahl-Registersatz 608 und der Gleitkomma-Registersatz 610 sind auch in der Lage, Daten miteinander zu kommunizieren. Für eine Implementierung ist der Ganzzahl-Registersatz 608 in zwei separate Registersätze geteilt, ein Registersatz für die 32 Datenbits niedriger Ordnung und ein zweiter Registersatz für die 32 Datenbits hoher Ordnung. Der Gleitkomma-Registersatz 610 einer Implementierung weist 128-Bit-weite Einträge auf, da Gleitkomma-Anweisungen typischerweise Operanden von 64 bis 128 Bits in Breite aufweisen.
  • Der Ausführungsblock 611 enthält die Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624, in denen die Anweisungen tatsächlich ausgeführt werden. Dieser Abschnitt beinhaltet die Registersätze 608, 610, die die Ganzzahl- und Gleitkomma-Datenoperandenwerte speichern, die die Mikroanweisungen zur Ausführung benötigen. Der Prozessor 600 einer Implementierung besteht aus einer Anzahl von Ausführungseinheiten: Adresserzeugungseinheit (AGU: Address Generation Unit) 612, AGU 614, schnelle ALU 616, schnelle ALU 618, langsame ALU 620, Gleitkomma-ALU 612, Gleitkomma-Bewegungseinheit 614. Für eine Implementierung führen die Gleitkomma-Ausführungsblöcke 612, 614 Gleitkomma, MMX, SIMD und SSE oder andere Operationen aus. Die Gleitkomma-ALU 612 einer Implementierung beinhaltet einen 64-Bit-mal-64-Bit-Gleitkomma-Teiler zum Ausführen von Teilen-, Quadratwurzel- und Rest-Mikro-Ops. Für Implementierungen der Offenbarung können Anweisungen, die einen Gleitkommawert einbeziehen, mit der Gleitkomma-Hardware bearbeitet werden.
  • In einer Implementierung gehen die ALU-Operationen zu den Hochgeschwindigkeits-ALU-Ausführungseinheiten 616, 618. Die schnellen ALUs 616, 618 einer Implementierung können schnelle Operationen mit einer effektiven Latenz eines halben Taktzyklus ausführen. Für eine Implementierung gehen die komplexesten Ganzzahl-Operationen zu der langsamen ALU 620, da die langsame ALU 620 Ganzzahl-Ausführungshardware für Operationen mit langer Latenz beinhaltet, wie etwa ein Multiplizierer, Verschiebungen, Flag-Logik und Zweigverarbeitung. Speicherlade-/-speicherungsoperationen werden durch die AGUs 622, 624 ausgeführt. Für eine Implementierung sind die Ganzzahl-ALUs 616, 618, 620 im Kontext des Durchführens von Ganzzahl-Operationen an 64-Bit-Datenoperanden beschrieben. In alternativen Implementierungen können die ALUs 616, 618, 620 implementiert werden, um eine Vielfalt von Datenbits einschließlich 16, 32, 128, 256 usw. zu unterstützen. Gleichermaßen können die Gleitkomma-Einheiten 622, 624 implementiert werden, um einen Bereich von Operanden mit Bits verschiedener Breite zu unterstützen. Für eine Implementierung können die Gleitkomma-Einheiten 622, 624 an 128-Bit-breiten gepackten Datenoperanden in Verbindung mit SIMD und Multimedia-Anweisungen arbeiten.
  • In einer Implementierung entsenden die Uops-Scheduler 602, 604, 606 abhängige Operationen, bevor die übergeordnete Ladung die Ausführung beendet hat. Da Uops spekulativ im Prozessor 600 geplant und ausgeführt werden, beinhaltet der Prozessor 600 auch Logik zum Bearbeiten von Speicherfehltreffern. Falls eine Datenladung im Datencache fehlt, kann es in der Pipeline befindliche abhängige Operationen geben, die den Scheduler mit vorübergehend inkorrekten Daten verlassen haben. Ein Replay-Mechanismus verfolgt Anweisungen, die inkorrekte Daten verwenden, und führt diese erneut aus. Nur die abhängigen Operationen müssen wiedergegeben werden, und den unabhängigen wird der Abschluss gestattet. Die Scheduler und Replay-Mechanismen einer Implementierung eines Prozessors sind auch dazu ausgebildet, Anweisungssequenzen für Textstring-Vergleichsoperationen abzufangen.
  • Der Begriff „Register“ kann sich auf die On-Board-Prozessorspeicherungsorte beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden. Mit anderen Worten können Register jene sein, die von außerhalb des Prozessors (von der Sicht eines Programmierers aus) verwendbar sind. Die Register einer Implementierung sollten jedoch nicht in der Bedeutung auf eine spezielle Art von Schaltung beschränkt sein. Stattdessen ist ein Register einer Implementierung in der Lage, Daten zu speichern und bereitzustellen und die hierin beschriebenen Funktionen durchzuführen. Die hierin beschriebenen Register können durch eine Schaltungsanordnung innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl unterschiedlicher Techniken implementiert werden, wie etwa dedizierte physische Register, dynamisch zugewiesene physische Register unter Verwendung von Registerumbenennung, Kombinationen dedizierter und dynamisch zugewiesener physischer Register usw. In einer Implementierung speichern Ganzzahl-Register 32-Bit-Ganzzahl-Daten. Ein Registersatz einer Implementierung enthält auch acht Multimedia-SIMD-Register für gepackte Daten.
  • Für die Besprechung hierin werden die Register als Datenregister verstanden, die dazu ausgebildet sind, gepackte Daten zu halten, wie etwa 64-Bits-breite MMX™-Register (in manchen Fällen auch als ,mm'-Register bezeichnet) in Mikroprozessoren, die mit MMX-Technologie von Intel Corporation in Santa Clara, Kalifornien, USA freigeschaltet sind. Diese MMX-Register, die sowohl in Ganzzahl- als auch Gleitkomma-Formen verfügbar sind, können mit gepackten Datenelementen arbeiten, die SIMD- und SSE-Anweisungen begleiten. Gleichermaßen können 128-Bits-breite XMM-Register bezüglich SSE2-, SSE3-, SSE4-Technologie oder darüber hinaus (allgemein als „SSEx“ bezeichnet) auch verwendet werden, um solche gepackte Datenoperanden zu halten. In einer Implementierung müssen Register beim Speichern gepackter Daten und Ganzzahl-Daten nicht zwischen den beiden Datentypen unterscheiden. In einer Implementierung sind Ganzzahl und Gleitkomma entweder in demselben Registersatz oder unterschiedlichen Registersätzen enthalten. In einer Implementierung können ferner Gleitkomma- und Ganzzahl-Daten in verschiedenen Registern oder denselben Registern gespeichert werden.
  • Implementierungen können in vielen verschiedenen Systemtypen implementiert werden. Jetzt mit Bezug auf 7 ist ein Blockdiagramm eines Mehrprozessorsystems 700 gezeigt, gemäß einer Implementierung zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher. Wie in 7 gezeigt, ist das Mehrprozessorsystem 700 ein Punkt-zu-Punkt-Interconnect-System und beinhaltet einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über ein Punkt-zu-Punkt-Interconnect 750 gekoppelt sind. Wie in 7 gezeigt, kann jeder der Prozessoren 770 und 780 ein Mehrkernprozessor sein, die einen ersten und zweiten Prozessorkern beinhalten (d. h. Prozessorkerne 774a und 774b und Prozessorkerne 784a und 784b), obwohl potenziell viel mehr Kerne in den Prozessoren vorhanden sein können. Obwohl mit den beiden Prozessoren 770, 780 gezeigt, soll verstanden werden, dass der Schutzumfang der Offenbarung nicht darauf beschränkt ist. In anderen Implementierungen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 770 und 780 sind als Integrierte-Speichersteuerung-Einheiten 772 bzw. 782 beinhaltend gezeigt. Der Prozessor 770 beinhaltet auch als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt(P-P)-Schnittstellen 776 und 788; gleichermaßen beinhaltet der zweite Prozessor 780 P-P-Schnittstellen 786 und 788. Die Prozessoren 770, 780 können Informationen über eine Punkt-zu-Punkt(P-P)-Schnittstelle 750 unter Verwendung von P-P-Schnittstellenschaltungen 778, 788 austauschen. Wie in 7 gezeigt, koppeln IMCs 772 und 782 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 732 und einem Speicher 734, die Teile des Hauptspeichers sein können, die lokal an den jeweiligen Prozessoren angeschlossen sind.
  • Die Prozessoren 770, 780 können Informationen mit einem Chipsatz 790 über individuelle P-P-Schnittstellen 752, 754 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 776, 794, 786, 798 austauschen. Der Chipsatz 790 kann auch Informationen mit einer Hochleistungs-Grafikschaltung 738 über eine Hochleistungs-Grafikschnittstelle 739 austauschen.
  • Der Chipsatz 790 kann über eine Schnittstelle 796 mit einem ersten Bus 716 gekoppelt sein. In einer Implementierung kann der erste Bus 716 ein PCI(Peripheral Component Interconnect)-Bus oder ein Bus wie etwa ein PCI-Express-Bus oder ein Interconnect-Bus sein, obwohl der Schutzumfang der Offenbarung nicht darauf beschränkt ist.
  • Jetzt mit Bezug auf 8 ist ein Blockdiagramm eines dritten Systems 800 zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher gezeigt, gemäß einer Implementierung der Offenbarung. Gleichartige Elemente in den 7 und 8 führen gleiche Bezugsziffern, und gewisse Aspekte von 8 sind aus 7 ausgelassen worden, um eine Verundeutlichung anderer Aspekte von 8 zu vermeiden.
  • 8 veranschaulicht, dass die Prozessoren 870, 880 integrierten Speicher und E/A-Steuerlogik („CL”) 872 bzw. 892 beinhalten können. Für mindestens eine Implementierung kann die CL 872, 882 Integrierte-Speichersteuerung-Einheiten wie hierin beschrieben beinhalten. Zusätzlich kann die CL 872, 892 auch E/A-Steuerlogik beinhalten. 8 veranschaulicht, dass die Speicher 832, 834 mit der CL 872, 892 gekoppelt sind, und dass die E/A-Vorrichtungen 814 auch mit der Steuerlogik 872, 892 gekoppelt sind. Legacy-E/A-Vorrichtungen 815 sind mit dem Chipsatz 890 gekoppelt.
  • 9 ist ein beispielhaftes System-on-Chip (SoC) 900, das einen oder mehrere Kerne 902A...902N beinhalten kann, die dazu eingerichtet sind, einen unautorisierten Zugriff auf verschlüsselten Speicher zu verhindern. Andere in der Technik bekannte Systemdesigns und -konfigurationen für Laptops, Desktops, handgehaltene PCs, Personal Digital Assistants, Engineering Workstations, Server, Netzwerkvorrichtungen, Netzwerkhubs, Switches, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Grafikvorrichtungen, Videospielevorrichtungen, Set-Top-Boxes, Mikrocontroller, Mobiltelefone, tragbare Mediaplayer, handgehaltene Vorrichtungen und verschiedene andere elektronische Vorrichtungen sind auch geeignet. Im Allgemeinen ist eine große Vielfalt von Systemen oder elektronischen Vorrichtungen, die zum Integrieren eines Prozessors und/oder anderer Ausführungslogik fähig sind, wie hierin offenbart, allgemein geeignet.
  • Innerhalb des beispielhaften SoC 900 von 9 sind Kästchen mit gestrichelten Linien Merkmale auf fortschrittlicheren SoCs. Eine oder mehrere Interconnect-Einheiten 902 können mit Folgendem gekoppelt sein: einem Anwendungsprozessor 917, der einen Satz eines oder mehrerer Kerne 902A-N und eine oder mehrere gemeinsam genutzte Cacheeinheiten 906 beinhaltet; einer Systemagenteneinheit 910; einer oder mehreren Bussteuerungseinheiten 916; einer oder mehreren Integrierte-Speichersteuerung-Einheiten 914; einem Satz eines oder mehrerer Medienprozessoren 920, die integrierte Grafiklogik 908, einen Bildprozessor 924 zum Bereitstellen von Standbild- und/oder Videokamerafunktionalität, einen Audioprozessor 926 zum Bereitstellen von Hardwareaudiobeschleunigung und einen Videoprozessor 928 zum Bereitstellen von Videocodierungs-/-decodierungsbeschleunigung beinhalten können; einer Statischer-Direktzugriffsspeicher(SRAM)-Einheit 930; einer Direktspeicherzugriff(DMA)-Einheit 932 und einer Anzeigeeinheit 940 zum Koppeln mit einer oder mehreren externen Anzeigen.
  • Als Nächstes mit Bezug auf 10 ist eine Implementierung eines System-on-Chip(SoC)-Designs gemäß Implementierungen der Offenbarung dargestellt. Als ein veranschaulichendes Beispiel ist ein SoC 1000 in einem Benutzergerät (UE) eingeschlossen. In einer Implementierung bezieht sich das UE auf eine beliebige Vorrichtung, die durch einen Endbenutzer zum Kommunizieren verwendet werden soll, wie etwa ein handgehaltenes Telefon, ein Smartphone, ein Tablet, ein ultradünnes Notebook, ein Notebook mit Breitbandadapter oder eine beliebige andere ähnliche Kommunikationsvorrichtung. Ein UE kann sich mit einer Basisstation oder einem Knoten verbinden, die/der in der Art einer Mobilstation (MS) in einem GSM-Netzwerk entsprechen kann. Die Implementierungen der Seitenhinzufügungen und des Inhaltskopierens können im SoC 1000 implementiert werden.
  • Hier beinhaltet das SoC 1000 2 Kerne - 1006 und 1007. Ähnlich zu der obigen Besprechung können die Kerne 1006 und 1007 einer Befehlssatzarchitektur entsprechen, wie etwa einem Prozessor mit dem Intel® Architecture Core™, einem Advanced Micro Devices, Inc. (AMD) Prozessor, einem MIPS-basierten Prozessor, einem ARM-basierten Prozessordesign oder einem Kunden davon, sowie ihre Lizenznehmer oder Adoptierende. Die Kerne 1006 und 1007 sind mit einer Cachesteuerung 1008 gekoppelt, die mit einer Busschnittstelleneinheit 1009 und einem L2-Cache 1010 assoziiert ist, um mit anderen Teilen des Systems 1000 zu kommunizieren. Ein Interconnect 1011 beinhaltet ein On-Chip-Interconnect, wie etwa IOSF, AMBA oder andere oben besprochene Interconnects, die einen oder mehrere Aspekte der beschriebenen Offenbarung implementieren können.
  • In einer Implementierung kann sich eine SDRAM-Steuerung 1040 über den Cache 1010 mit dem Interconnect 1011 verbinden. Das Interconnect 1011 stellt den anderen Komponenten Kommunikationskanäle bereit, wie etwa ein Teilnehmeridentitätsmodul (SIM: Subscriber Identity Module) 1030 zum Verbinden mittels Schnittstelle mit einer SIM-Karte, einen Boot-ROM 1035 zum Halten von Boot-Code zur Ausführung durch die Kerne 1006 und 1007 zum Initialisieren und Booten des SoC 1000, eine SDRAM-Steuerung 1040 zum Verbinden mittels Schnittstelle mit externem Speicher (z. B. DRAM 1060), eine Flash-Steuerung 1045 zum Verbinden mittels Schnittstelle mit nichtflüchtigem Speicher (z. B. Flash 1065), eine Peripheriesteuerung 1050 (z. B. serielle Peripherieschnittstelle) zum Verbinden mittels Schnittstelle mit Peripheriegeräten, Video-Codecs 1020 und eine Videoschnittstelle 1025 zum Anzeigen und Empfangen einer Eingabe (z. B. berührungsgestützte Eingabe), GPU 1015 zum Durchführen von grafikbezogenen Berechnungen usw. Beliebige dieser Schnittstellen können Aspekte der hierin beschriebenen Implementierungen einbeziehen.
  • Zusätzlich veranschaulicht das System Peripheriegeräte zur Kommunikation, wie etwa ein Bluetooth®-Modul 1070, ein 3G-Modem 1075, ein GPS 1080 und WiFi® 1185. Es ist zu beachten, wie oben angemerkt, dass ein UE eine Funkeinrichtung zur Kommunikation beinhaltet. Infolgedessen sind möglicherweise nicht alle dieser peripheren Kommunikationsmodule enthalten. In einem UE sollte jedoch eine Form einer Funkeinrichtung zur externen Kommunikation enthalten sein.
  • 11 veranschaulicht eine diagrammatische Repräsentation einer Maschine in der beispielhaften Form eines Rechensystems 1100, in dem ein Satz von Anweisungen zum Bewirken, dass die Maschine eine oder mehrere beliebige der hierin besprochenen Methoden durchführt, ausgeführt werden kann, wie etwa zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher. In alternativen Implementierungen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet oder dem Internet verbunden (z. B. vernetzt) sein. Die Maschine kann in der Rolle eines Servers oder einer Client-Vorrichtung in einer Client-Server-Netzwerkumgebung oder als eine Peer-Maschine in einer Peer-zu-Peer- (oder verteilten) Netzwerkumgebung arbeiten. Die Maschine kann ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelefon, ein Webgerät, ein Server, ein Netzwerkrouter, ein Switch oder eine Bridge oder eine beliebige Maschine sein, die in der Lage ist, einen Satz von Anweisungen (sequenziell oder anderweitig) auszuführen, die durch diese Maschine vorzunehmende Handlungen spezifizieren. Obwohl nur eine einzige Maschine veranschaulicht ist, soll der Begriff „Maschine“ ferner so verstanden werden, dass er eine beliebige Sammlung von Maschinen beinhaltet, die individuell oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um eine oder mehrere beliebige der hierin besprochen Methoden durchzuführen.
  • Das Rechensystem 1100 beinhaltet eine Verarbeitungsvorrichtung 1102, einen Hauptspeicher 1104 (z.B. Flash-Speicher, dynamischen Direktzugriffsspeicher (DRAM) (wie etwa synchronen DRAM (SDRAM) oder DRAM (RDRAM) usw.), einen statischen Speicher 1106 (z.B. Flash-Speicher, statischen Direktzugriffsspeicher (SRAM) usw.) und eine Datenspeicherungsvorrichtung 1116, die über einen Bus 1108 miteinander kommunizieren.
  • Die Verarbeitungsvorrichtung 1102 repräsentiert eine oder mehrere Allzweck-Verarbeitungsvorrichtungen wie etwa einen Mikroprozessor, eine Zentralverarbeitungseinheit oder dergleichen. Insbesondere kann die Verarbeitungsvorrichtung ein CISC(Complex Instruction Set Computing)-Mikroprozessor, ein RISC(Reduced Instruction Set Computer)-Mikroprozessor, ein VLIW(Very Long Instruction Word)-Mikroprozessor oder ein Prozessor sein, der andere Befehlssätze implementiert, oder Prozessoren, die eine Kombination von Befehlssätzen implementieren. Die Verarbeitungsvorrichtung 1102 kann auch eine oder mehrere Spezialzweck-Verarbeitungsvorrichtungen sein, wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein Digitalsignalprozessor (DSP), ein Netzwerkprozessor oder dergleichen. In einer Implementierung kann die Verarbeitungsvorrichtung 1102 einen oder mehrere Prozessorkerne beinhalten. Die Verarbeitungsvorrichtung 1102 ist dazu ausgelegt, die Verarbeitungslogik 1126 zum Durchführen der hierin besprochenen Operationen auszuführen.
  • In einer Implementierung kann die Verarbeitungsvorrichtung 1102 Teil eines Prozessors oder einer integrierten Schaltung sein, der/die die offenbarte LLC-Caching-Architektur beinhaltet. Alternativ kann das Rechensystem 1100 andere Komponenten wie hierin beschrieben beinhalten. Es sollte verstanden werden, dass der Kern Multithreading (Ausführung von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf eine Vielfalt von Weisen durchführen kann, einschließlich zeitlich unterteiltes Multithreading, simultanes Multithreading (bei dem ein einzelner physischer Kern einen Logikkern für jeden der Threads bereitstellt, die der physische Kern simultan einem Multithreading unterzieht) oder eine Kombination davon (z. B. zeitlich unterteiltes Abholen und Decodieren und simultanes Multithreading danach, wie etwa in der Intel® Hyperthreading Technologie).
  • Das Rechensystem 1100 kann ferner eine Netzwerkschnittstellenvorrichtung 1118 beinhalten, die kommunikativ mit einem Netzwerk 1119 gekoppelt ist. Das Rechensystem 1100 kann auch eine Videoanzeigevorrichtung 1110 (z. B. eine Flüssigkristallanzeige (LCD) oder eine Kathodenstrahlröhre (CRT)), eine alphanumerische Eingabevorrichtung 1112 (z. B. eine Tastatur), eine Cursorsteuervorrichtung 1114 (z. B. eine Maus), eine Signalerzeugungsvorrichtung 1120 (z.B. einen Lautsprecher) oder andere Peripherievorrichtungen beinhalten. Ferner kann das Rechensystem 1100 eine Grafikverarbeitungseinheit 1122, eine Videoverarbeitungseinheit 1128 und eine Audioverarbeitungseinheit 1132 beinhalten. In einer anderen Implementierung kann das Rechensystem 1100 einen Chipsatz (nicht veranschaulicht) beinhalten, der sich auf eine Gruppe von integrierten Schaltungen oder Chips bezieht, die dazu ausgebildet sind, mit der Verarbeitungsvorrichtung 1102 zu arbeiten, und Kommunikationen zwischen der Verarbeitungsvorrichtung 1102 und externen Vorrichtungen steuert. Beispielsweise kann der Chipsatz ein Satz von Chips auf einem Motherboard sein, das die Verarbeitungsvorrichtung 1102 mit sehr schnellen Vorrichtungen verknüpft, wie etwa dem Hauptspeicher 1104 und Grafiksteuerungen, sowie die Verarbeitungsvorrichtung 1102 mit langsameren Peripheriebussen von Peripheriegeräten verknüpft, wie etwa USB-, PCI- oder ISA-Bussen.
  • Die Datenspeicherungsvorrichtung 1116 kann ein computerlesbares Speicherungsmedium 1124 beinhalten, auf dem Software 1126 gespeichert ist, die eine oder mehrere beliebige der hierin beschriebenen Methoden von Funktionen verkörpert. Die Software 1126 kann sich auch vollständig oder zumindest teilweise innerhalb des Hauptspeichers 1104 als Anweisungen 1126 und/oder innerhalb der Verarbeitungsvorrichtung 1102 als Verarbeitungslogik während deren Ausführung durch das Rechensystem 1100 befinden; wobei der Hauptspeicher 1104 und die Verarbeitungsvorrichtung 1102 auch computerlesbare Speicherungsmedien bilden.
  • Das computerlesbare Speicherungsmedium 1124 kann auch zum Speichern von Anweisungen 1126 unter Verwendung der Verarbeitungsvorrichtung 1102 und/oder einer Softwarebibliothek, die Verfahren enthält, die die obigen Anwendungen aufrufen, verwendet werden. Obwohl das computerlesbare Speicherungsmedium 1124 in einer beispielhaften Implementierung als ein einzelnes Medium gezeigt ist, sollte der Begriff „computerlesbares Speicherungsmedium“ so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien (z. B. eine zentralisierte oder verteilte Datenbank und/oder assoziierte Caches und Server), die den einen oder die mehreren Sätze von Anweisungen speichern. Der Begriff „computerlesbares Speicherungsmedium“ soll auch so verstanden werden, dass er ein beliebiges Medium beinhaltet, das in der Lage ist, einen Satz von Anweisungen zur Ausführung durch die Maschine zu speichern, zu codieren oder zu führen, die bewirken, dass die Maschine eine oder mehrere beliebige der Methoden der offenbarten Implementierungen durchführt. Der Begriff „computerlesbares Speicherungsmedium“ soll auch so verstanden werden, dass er unter anderem Solid-State-Speicher und optische und magnetische Medien beinhaltet.
  • Die folgenden Beispiele betreffen weitere Implementierungen.
  • Beispiel 1 ist ein Prozessor, der Folgendes umfasst: 1) ein erstes Register; und 2) einen Prozessorkern, der mit dem ersten Register gekoppelt ist, wobei der Prozessorkern ausgelegt ist zum: a) Bestimmen, dass ein Speicherverschlüsselungsmodus aktiviert ist, durch Zugriff auf ein Bit im ersten Register, wobei der Speicherverschlüsselungsmodus bewirken soll, dass in den Speicher gespeicherte Daten verschlüsselt werden und aus dem Speicher abgefragte Daten entschlüsselt werden; b) Bestimmen, dass ein Debug-Modus aktiviert wurde; c) als Reaktion auf eine Bestimmung, dass der Debug-Modus aktiviert wurde, Erzeugen eines zweiten Verschlüsselungsschlüssels, der sich vom ersten Verschlüsselungsschlüssel unterscheidet, der vor einem Neubooten eines Rechensystems eingesetzt wird; und d) Übertragen des zweiten Verschlüsselungsschlüssels zu einer kryptografischen Engine zur Verwendung bei der Verschlüsselung und Entschlüsselung der Daten gemäß dem Speicherverschl üssel ungsmod us.
  • In Beispiel 2, der Prozessor des Beispiels 1, wobei zum Erzeugen des zweiten Verschlüsselungsschlüssels der Prozessorkern eine deterministische Anpassung bei der Schlüsselerzeugung bewirken soll, um den zweiten Verschlüsselungsschlüssel zu erzeugen.
  • In Beispiel 3, der Prozessor des Beispiels 1, wobei das Bestimmen, dass der Debug-Modus aktiviert ist, Lesen eines Bits auf einem Debug-Schnittstellen-Register umfasst.
  • In Beispiel 4, der Prozessor des Beispiels 1, wobei der Speicher entweder einen dynamischen Direktzugriffsspeicher (DRAM) oder einen nichtflüchtigen Direktzugriffsspeicher (NVRAM) umfasst.
  • In Beispiel 5, der Prozessor des Beispiels 1, wobei die kryptografische Engine eine TME(Total Memory Encryption)-Engine umfasst.
  • In Beispiel 6, der Prozessor des Beispiels 1, wobei die kryptografische Engine teilweise eine MME (Memory Encryption Engine) umfasst.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der oben beschriebenen strukturellen Merkmale aufweisen. Beispielsweise können alle optionalen Merkmale der oben beschriebenen Prozessoren und Verfahren auch mit Bezug auf ein hierin beschriebenes System implementiert werden und Einzelheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 7 ist ein System, das Folgendes umfasst: 1) Speicher; 2) einen Prozessorkern, der mit dem Speicher gekoppelt ist, wobei der Prozessorkern einen Satz von Anweisungen umfasst, die eine Extensible Firmware Interface ausführen sollen, wobei der Prozessorkern den Satz von Anweisungen ausführen soll zum: a) Einstellen eines ersten Bits in einem ersten Register, um anzugeben, dass ein Speicherverschlüsselungsmodus aktiviert wurde; und b) Einstellen eines zweiten Bits in einem zweiten Register, um anzugeben, dass ein Debug-Modus aktiviert wurde; und 3) eine kryptografische Engine, die mit dem Prozessorkern und dem Speicher gekoppelt ist, wobei die kryptografische Engine ausgelegt ist zum: a) als Reaktion darauf, dass das zweite Bit eingestellt ist, Erzeugen eines zweiten Verschlüsselungsschlüssels, der sich von einem ersten Verschlüsselungsschlüssel unterscheidet, der vor einen System-Neubooten eingesetzt wird; und b) als Reaktion darauf, dass das erste Bit eingestellt ist, Verschlüsseln, unter Verwendung des zweiten Verschlüsselungsschlüssels, von in den Speicher zu schreibenden Daten und Entschlüsseln von aus dem Speicher abzufragenden Daten.
  • In Beispiel 8, das System des Beispiels 7, wobei zum Erzeugen des zweiten Verschlüsselungsschlüssels die kryptografische Engine eine deterministische Anpassung bei der Schlüsselerzeugung bewirken soll.
  • In Beispiel 9, das System des Beispiels 7, wobei zum Erzeugen des zweiten Verschlüsselungsschlüssels die kryptografische Engine eine Schlüsselableitungslogik ausführen soll.
  • In Beispiel 10, das System des Beispiels 7, wobei der Prozessorkern ferner ausgelegt ist zum: a) Ausführen von Mikrocode zum Erzeugen des zweiten Verschlüsselungsschlüssels; und b) Übertragen des zweiten Verschlüsselungsschlüssels zu der kryptografischen Engine.
  • In Beispiel 11, das System des Beispiels 7, wobei das erste Register ein Verschlüsselungsaktivierungsregister umfasst.
  • In Beispiel 12, das System des Beispiels 7, wobei das zweite Register ein Debug-Schnittstellen-Register umfasst.
  • In Beispiel 13, das System des Beispiels 7, wobei die kryptografische Engine eine Total Memory Encryption (TME) umfasst.
  • In Beispiel 14, das System des Beispiels 7, wobei die kryptografische Engine teilweise eine Memory Encryption Engine (MEE) umfasst.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der oben beschriebenen strukturellen Merkmale aufweisen. Beispielsweise können alle optionalen Merkmale der oben beschriebenen Prozessoren und Verfahren auch mit Bezug auf ein hierin beschriebenes System implementiert werden und Einzelheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 15 ist ein Verfahren, das Folgendes umfasst: 1) Bestimmen, durch einen Prozessorkern, dass ein Speicherverschlüsselungsmodus aktiviert ist, wobei der Speicherverschlüsselungsmodus bewirkt, dass in den Speicher gespeicherte Daten verschlüsselt werden und aus dem Speicher abgefragte Daten entschlüsselt werden; 2) Bestimmen, durch den Prozessorkern, dass ein Debug-Modus aktiviert wurde; 3) als Reaktion auf das Bestimmen, dass der Debug-Modus aktiviert wurde, Erzeugen, durch den Prozessorkern, eines zweiten Verschlüsselungsschlüssels, der sich vom ersten Verschlüsselungsschlüssel unterscheidet, der vor einem Neubooten eines Rechensystems eingesetzt wird; und 4) Übertragen, durch den Prozessorkern, des zweiten Verschlüsselungsschlüssels zu einer kryptografischen Engine zur Verwendung bei der Verschlüsselung und Entschlüsselung der Daten gemäß dem Speicherverschlüsselungsmodus.
  • In Beispiel 16, das Verfahren des Beispiels 15, wobei das Erzeugen des zweiten Verschlüsselungsschlüssels umfasst, dass der Prozessorkern eine deterministische Anpassung bei der Schlüsselerzeugung bewirkt.
  • In Beispiel 17, das Verfahren des Beispiels 15, wobei das Erzeugen des zweiten Verschlüsselungsschlüssels umfasst, dass der Prozessorkern einen Satz von Mikroanweisungen ausführt.
  • In Beispiel 18, das Verfahren des Beispiels 15, wobei das Bestimmen, dass der Speicherverschlüsselungsmodus aktiviert ist, Lesen eines in einem Verschlüsselungsaktivierungsregister gespeicherten Bits umfasst.
  • In Beispiel 19, das Verfahren des Beispiels 15, wobei das Bestimmen, dass der Debug-Modus aktiviert ist, Lesen eines Bits auf einem Debug-Schnittstellen-Register umfasst.
  • In Beispiel 20, das Verfahren des Beispiels 15, wobei die kryptografische Engine entweder eine TME(Total Memory Encryption)-Engine oder eine MME (Memory Encryption Engine) umfasst.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der oben beschriebenen strukturellen Merkmale aufweisen. Beispielsweise können alle optionalen Merkmale der oben beschriebenen Prozessoren und Verfahren auch mit Bezug auf ein hierin beschriebenes System implementiert werden und Einzelheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 21 ist ein nichttransitorisches computerlesbares Speicherungsmedium, das Anweisungen speichert, die bei Ausführung durch eine Verarbeitungsvorrichtung bewirken, dass die Verarbeitungsvorrichtung mehrere Operationen ausführt, die Folgendes umfassen: 1) Bestimmen, durch einen Prozessorkern, dass ein Speicherverschlüsselungsmodus aktiviert ist, wobei der Speicherverschlüsselungsmodus bewirkt, dass in den Speicher gespeicherte Daten verschlüsselt werden und aus dem Speicher abgefragte Daten entschlüsselt werden; 2) Bestimmen, durch den Prozessorkern, dass ein Debug-Modus aktiviert wurde; 3) als Reaktion auf das Bestimmen, dass der Debug-Modus aktiviert wurde, Erzeugen, durch den Prozessorkern, eines zweiten Verschlüsselungsschlüssels, der sich vom ersten Verschlüsselungsschlüssel unterscheidet, der vor einem Neubooten eines Rechensystems eingesetzt wird; und 4) Übertragen, durch den Prozessorkern, des zweiten Verschlüsselungsschlüssels zu einer kryptografischen Engine zur Verwendung bei der Verschlüsselung und Entschlüsselung der Daten gemäß dem Speicherverschlüsselungsmodus.
  • In Beispiel 22, das nichttransitorische computerlesbare Speicherungsmedium des Beispiels 21, wobei das Erzeugen des zweiten Verschlüsselungsschlüssels umfasst, dass der Prozessorkern eine deterministische Anpassung bei der Schlüsselerzeugung bewirkt.
  • In Beispiel 23, das nichttransitorische computerlesbare Speicherungsmedium des Beispiels 21, wobei das Erzeugen des zweiten Verschlüsselungsschlüssels umfasst, dass der Prozessorkern einen Satz von Mikroanweisungen ausführt.
  • In Beispiel 24, das nichttransitorische computerlesbare Speicherungsmedium des Beispiels 21, wobei das Bestimmen, dass der Speicherverschlüsselungsmodus aktiviert ist, Lesen eines in einem Verschlüsselungsaktivierungsregister gespeicherten Bits umfasst.
  • In Beispiel 25, das nichttransitorische computerlesbare Speicherungsmedium des Beispiels 21, wobei das Bestimmen, dass der Debug-Modus aktiviert ist, Lesen eines Bits auf einem Debug-Schnittstellen-Register umfasst.
  • In Beispiel 26, das nichttransitorische computerlesbare Speicherungsmedium des Beispiels 21, wobei die kryptografische Engine entweder eine TME(Total Memory Encryption)-Engine oder eine MME (Memory Encryption Engine) umfasst.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der oben beschriebenen strukturellen Merkmale aufweisen. Beispielsweise können alle optionalen Merkmale der oben beschriebenen Prozessoren und Verfahren auch mit Bezug auf ein hierin beschriebenes System implementiert werden und Einzelheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 27 ist ein System, das Folgendes umfasst: 1) Mittel zum Bestimmen, dass ein Speicherverschlüsselungsmodus aktiviert ist, wobei der Speicherverschlüsselungsmodus bewirkt, dass in den Speicher gespeicherte Daten verschlüsselt werden und aus dem Speicher abgefragte Daten entschlüsselt werden; 2) Mittel zum Bestimmen, dass ein Debug-Modus aktiviert wurde; 3) Mittel zum, als Reaktion auf das Bestimmen, dass der Debug-Modus aktiviert wurde, Erzeugen eines zweiten Verschlüsselungsschlüssels, der sich vom ersten Verschlüsselungsschlüssel unterscheidet, der vor einem Neubooten eines Rechensystems eingesetzt wird; und 4) Mittel zum Übertragen des zweiten Verschlüsselungsschlüssels zu einer kryptografischen Engine zur Verwendung bei der Verschlüsselung und Entschlüsselung der Daten gemäß dem Speicherverschlüsselungsmodus.
  • In Beispiel 28, das System des Beispiels 27, wobei Mittel zum Erzeugen des zweiten Verschlüsselungsschlüssels Mittel umfasst, damit der Prozessorkern eine deterministische Anpassung bei der Schlüsselerzeugung bewirkt.
  • In Beispiel 29, das System des Beispiels 27, wobei Mittel zum Erzeugen des zweiten Verschlüsselungsschlüssels Mittel zum Ausführen eines Satzes von Mikroanweisungen umfasst.
  • In Beispiel 30, das System des Beispiels 27, wobei Mittel zum Bestimmen, dass der Speicherverschlüsselungsmodus aktiviert ist, Mittel zum Lesen eines in einem Verschlüsselungsaktivierungsregister gespeicherten Bits umfasst.
  • In Beispiel 31, das System des Beispiels 27, wobei Mittel zum Bestimmen, dass der Debug-Modus aktiviert ist, Mittel zum Lesen eines Bits auf einem Debug-Schnittstellen-Register umfasst.
  • In Beispiel 32, das System des Beispiels 27, wobei die kryptografische Engine entweder eine TME(Total Memory Encryption)-Engine oder eine MME (Memory Encryption Engine) umfasst.
  • Obwohl die Offenbarung mit Bezug auf eine beschränkte Anzahl von Implementierungen beschrieben wurde, werden Fachleute zahlreiche Modifikationen und Variationen davon erkennen. Es ist beabsichtigt, dass die angehängten Ansprüche alle derartigen Modifikationen und Variationen abdecken, wie sie in den wahren Gedanken und Schutzumfang dieser Offenbarung fallen.
  • In der Beschreibung hierin wurden zahlreiche spezifische Einzelheiten dargelegt, wie etwa Beispiele spezifischer Arten von Prozessoren und Systemkonfigurationen, spezifische Hardwarestrukturen, spezifische Architektur- und Mikroarchitektureinzelheiten, spezifische Registerkonfigurationen, spezifische Anweisungsarten, spezifische Systemkomponenten, spezifische Abmessungen/Höhen, spezifische Prozessorpipelinestufen und -operationen usw., um ein umfassendes Verständnis der Offenbarung bereitzustellen. Einem Fachmann wird jedoch ersichtlich werden, dass diese spezifischen Einzelheiten nicht eingesetzt werden müssen, um die Offenbarung umzusetzen. In anderen Fällen sind wohlbekannte Komponenten oder Verfahren, wie etwa spezifische und alternative Prozessorarchitekturen, spezifische(r) Logikschaltungen/Code für beschriebene Algorithmen, spezifischer Firmwarecode, spezifischer Interconnect-Betrieb, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Compiler-Implementierungen, spezifischer Ausdruck von Algorithmen in Code, spezifische Ausschalte- und Gating-Techniken/-Logik und andere spezifische Betriebsdetails eines Computersystems, nicht ausführlich beschrieben worden, um die Offenbarung nicht unnötigerweise zu verundeutlichen.
  • Die Implementierungen sind mit Bezug auf das Bestimmen der Gültigkeit von Daten in Cachezeilen eines sektorbasierten Cache in spezifischen integrierten Schaltungen beschrieben, wie etwa in Rechenplattformen oder Mikroprozessoren. Die Implementierungen können auch bei anderen Arten integrierter Schaltungen und programmierbarer Logikvorrichtungen anwendbar sein. Beispielsweise sind die offenbarten Implementierungen nicht auf Desktop-Computersysteme oder tragbare Computer beschränkt, wie etwa die Intel® Ultrabooks™ Computer. Sondern können auch in anderen Vorrichtungen verwendet werden, wie etwa handgehaltenen Vorrichtungen, Tablets, anderen dünnen Notebooks, System-on-Chip(SoC)-Vorrichtungen und eingebetteten Anwendungen. Manche Beispiele handgehaltener Vorrichtungen beinhalten Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, Personal Digital Assistants (PDAs) und handgehaltene PCs. Eingebettete Anwendungen beinhalten typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), ein System-on-Chip, Netzwerkcomputer (NetPC), Set-Top-Boxes, Netzwerkhubs, WAN-Switches (WAN: Wide Area Network - großflächiges Netzwerk) oder ein beliebiges anderes System, das die nachstehend gelehrten Funktionen und Operationen durchführen kann. Es wird beschrieben, dass das System eine beliebige Art von Computer oder eingebettetem System sein kann. Die offenbarten Implementierungen können insbesondere für Low-End-Vorrichtungen wie Wearable-Vorrichtungen (z. B. Armbanduhren), elektronische Implantate, Sensor- und Steuerinfrastrukturvorrichtungen, Steuerungen, SCADA-Systeme (SCADA: Supervisory Control and Data Acquisition - Überwachungssteuerung und Datenerfassung) oder dergleichen verwendet werden. Darüber hinaus sind die hierin beschriebenen Einrichtungen, Verfahren und Systeme nicht auf physische Rechenvorrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen zur Energiebewahrung und -effizienz beziehen. Wie in der nachstehenden Beschreibung leicht zu erkennen ist, sind die Implementierungen von hierin beschriebenen Verfahren, Einrichtungen und Systemen (egal, ob in Bezug auf Hardware, Firmware, Software oder einer Kombination davon) für eine Zukunft mit ,grüner Technologie', abgestimmt mit Performanzerwägungen, wichtig.
  • Obwohl die Implementierungen hierin mit Bezug auf einen Prozessor beschrieben werden, sind andere Implementierungen bei anderen Arten von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von Implementierungen der Offenbarung können bei anderen Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, die von höherem Pipelinedurchsatz und verbesserter Performanz profitieren können. Die Lehren von Implementierungen der Offenbarung sind bei einem beliebigen Prozessor oder einer beliebigen Maschine anwendbar, der/die Datenmanipulationen durchführt. Die Offenbarung ist jedoch nicht auf Prozessoren oder Maschinen beschränkt, die 512-Bit-, 256-Bit-, 128-Bit-, 64-Bit-, 32-Bit- oder 16-Bit-Datenoperationen durchführen, und können bei einem beliebigen Prozessor und einer beliebigen Maschine angewendet werden, bei dem/der eine Manipulation oder Verwaltung von Daten durchgeführt wird. Zusätzlich liefert die Beschreibung hierin Beispiele, und die begleitenden Zeichnungen zeigen für Veranschaulichungszwecke verschiedene Beispiele. Diese Beispiele sollten jedoch nicht als beschränkend aufgefasst werden, da sie lediglich Beispiele von Implementierungen der Offenbarung bereitstellen sollen, anstatt eine umfassende Liste aller möglichen Implementierungen von Implementierungen der Offenbarung bereitstellen.
  • Obwohl die obigen Beispiele Anweisungsbearbeitung und -verteilung im Kontext von Ausführungseinheiten und Logikschaltungen beschreiben, können andere Implementierungen der Offenbarung mittels Daten oder Anweisungen erreicht werden, die auf einem maschinenlesbaren greifbaren Medium gespeichert sind und bei Durchführung durch eine Maschine bewirken, dass die Maschine Funktionen durchführt, die mit mindestens einer Implementierung der Offenbarung konsistent sind. In einer Implementierung sind mit Implementierungen der Offenbarung assoziierte Funktionen in maschinenausführbaren Anweisungen verkörpert. Die Anweisungen können verwendet werden, um zu bewirken, dass ein Allzweck- oder Spezialzweck-Prozessor, der mit den Anweisungen programmiert ist, die Schritte der Offenbarung durchführt. Implementierungen der Offenbarung können als ein Computerprogrammprodukt oder eine Software bereitgestellt werden, das/die ein maschinen- oder computerlesbares Medium mit darauf gespeicherten Anweisungen beinhalten kann, die verwendet werden können, um einen Computer (oder andere elektronische Vorrichtungen) dahingehend zu programmieren, eine oder mehrere Operationen gemäß Implementierungen der Offenbarung durchzuführen. Alternativ könnten Operationen von Implementierungen der Offenbarung durch spezifische Hardwarekomponenten durchgeführt werden, die Festfunktion-Logik zum Durchführen der Operationen enthalten, oder durch eine beliebige Kombination von programmierten Computerkomponenten und Festfunktion-Hardwarekomponenten.
  • Anweisungen, die zum Programmieren von Logik verwendet werden, um Implementierungen der Offenbarung durchzuführen, können innerhalb eines Speichers im System gespeichert werden, wie etwa DRAM, Cache, Flash-Speicher oder eine andere Speicherung. Ferner können die Anweisungen über ein Netzwerk oder mittels anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form beinhalten, unter anderem Disketten, optische Platten, CD-ROMs (Compact Disc, Read-Only-Memory) und magnetooptische Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), löschbarer programmierbarer Nur-Lese-Speicher (EPROM), elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder eine greifbare maschinenlesbare Speicherung, die bei der Übertragung von Informationen über das Internet mittels elektrischer, optischer, akustischer oder anderer Formen propagierter Signale (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet wird. Dementsprechend beinhaltet das computerlesbare Medium eine beliebige Art von greifbarem maschinenlesbarem Medium, das zur Speicherung oder Übertragung elektronischer Anweisungen oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • Ein Design kann durch verschiedene Stufen laufen, von der Erzeugung über Simulation bis hin zur Fertigung. Daten, die ein Design repräsentieren, können das Design auf eine Anzahl von Weisen repräsentieren. Zunächst, wie in Simulationen nützlich ist, kann die Hardware unter Verwendung einer Hardwarebeschreibungssprache oder einer anderen funktionellen Beschreibungssprache repräsentiert werden. Zusätzlich kann ein Modell auf Schaltungsebene mit Logik- und/oder Transistorgatter bei einigen Stufen des Designprozesses erzeugt werden. Ferner erreichen die meisten Designs bei einer Stufe ein Niveau von Daten, das die physische Platzierung verschiedener Vorrichtungen im Hardwaremodell repräsentiert. In dem Fall, bei dem herkömmliche Halbleiterfertigungstechniken verwendet werden, können die Daten, die das Hardwaremodell repräsentieren, die Daten sein, die das Vorhandensein oder Nichtvorhandensein verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken, die zum Erzeugen der integrierten Schaltung verwendet werden, spezifizieren. In einer beliebigen Repräsentation des Designs können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder eine magnetische oder optische Speicherung wie etwa eine Platte kann das maschinenlesbare Medium sein, um Informationen zu speichern, die über eine optische oder elektrische Welle übertragen werden, die zum Übertragen solcher Informationen moduliert oder anderweitig erzeugt wird. Wenn eine elektrische Trägerwelle, die den Code oder das Design angibt oder führt, übertragen wird, zu dem Ausmaß, dass Kopieren, Puffern oder Neuübertragen des elektrischen Signals durchgeführt wird, wird eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzwerkanbieter auf einem greifbaren maschinenlesbaren Medium zumindest vorübergehend einen Artikel speichern, wie etwa Informationen, die in eine Trägerwelle codiert sind, wodurch Techniken von Implementierungen der Offenbarung verkörpert werden.
  • Ein Modul, wie hierin verwendet, bezieht sich auf eine beliebige Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel beinhaltet ein Modul Hardware, wie etwa einen Mikrocontroller, der mit einem nichttransitorischen Medium assoziiert ist, um Code zu speichern, der dazu ausgebildet ist, durch den Mikrocontroller ausgeführt zu werden. Daher bezieht sich ein Bezug auf ein Modul in einer Implementierung auf die Hardware, die spezifisch dazu ausgelegt ist, den auf einem nichttransitorischen Medium zu haltenden Code zu erkennen und/oder auszuführen. Ferner bezieht sich in einer anderen Implementierung die Verwendung eines Moduls auf das nichttransitorische Medium einschließlich des Codes, der spezifisch dazu ausgebildet ist, durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Und wie geschlussfolgert werden kann, in noch einer anderen Implementierung, kann sich der Begriff Modul (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nichttransitorischen Mediums beziehen. Häufig und gewöhnlich variieren und überlappen sich Modulgrenzen, die als separat veranschaulicht sind. Beispielsweise können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon teilen, während sie potenziell eine unabhängige Hardware, Software oder Firmware beibehalten. In einer Implementierung beinhaltet die Verwendung des Begriffs Logik Hardware, wie etwa Transistoren, Register oder andere Hardware, wie etwa programmierbare Logikvorrichtungen.
  • Die Verwendung des Ausdrucks ,ausgelegt zum' in einer Implementierung bezieht sich auf das Anordnen, Zusammenlegen, Herstellen, zum Anbieten zum Verkauf, Importieren und/oder Gestalten einer Einrichtung, einer Hardware, einer Logik oder eines Elements, um eine designierte oder bestimmte Aufgabe durchzuführen. In diesem Beispiel ist eine Einrichtung oder ein Element davon, die/das nicht arbeitet, weiterhin ,ausgelegt zum' Durchführen einer designierten Aufgabe, falls sie/es gestaltet, gekoppelt und/oder verbunden ist, die designierte Aufgabe durchzuführen. Als lediglich ein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logikgatter, das ,ausgelegt ist zum' Bereitstellen eines Freigabesignals an einen Takt, beinhaltet nicht jedes potenzielle Logikgatter, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logikgatter eines, das auf eine Art und Weise gekoppelt ist, die während des Betriebs, bei dem die 1 oder 0 ausgegeben wird, den Takt freigeben soll. Es ist erneut zu beachten, dass die Verwendung des Begriffs ,ausgelegt zum' keinen Betrieb erfordert, sondern stattdessen auf den latenten Zustand einer Einrichtung, einer Hardware und/oder eines Elements fokussiert, wenn im latenten Zustand die Einrichtung, die Hardware und/oder das Element gestaltet ist, eine spezielle Aufgabe durchzuführen, wenn die Einrichtung, die Hardware und/oder das Element arbeitet.
  • Ferner bezieht die Verwendung der Ausdrücke ,zum', ,in der Lage zum' und/oder funktionsfähig zum' in einer Implementierung auf eine Einrichtung, eine Logik, eine Hardware und/oder ein Element, die/das auf eine derartige Weise gestaltet ist, die Verwendung der Einrichtung, der Logik, der Hardware und/oder des Elements auf eine spezifizierte Art und Weise zu ermöglichen. Wie oben ist zu beachten, dass sich die Verwendung von ,zum', ,in der Lage zum' oder ,funktionsfähig zum' in einer Implementierung auf den latenten Zustand einer Einrichtung, einer Logik, einer Hardware und/oder eines Elements bezieht, wenn die Einrichtung, die Logik, die Hardware und/oder das Element nicht arbeitet, aber auf eine derartige Art und Weise gestaltet ist, die Verwendung einer Einrichtung auf eine spezifizierte Art und Weise zu ermöglichen.
  • Ein Wert, wie hierin verwendet, beinhaltet eine beliebige bekannte Repräsentation einer Zahl, eines Zustands, eines Logikzustands oder eines binären Logikzustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als Einsen und Nullen bezeichnet, die einfach binäre Logikzustände repräsentieren. Beispielsweise bezieht sich eine 1 auf einen High-Logikpegel, und 0 bezieht sich auf einen Low-Logikpegel. In einer Implementierung kann eine Speicherzelle, wie etwa eine Transistor- oder Flash-Zelle, in der Lage sein, einen einzigen logischen Wert oder mehrere logische Werte zu halten. Andere Repräsentationen von Werten in Computersystemen wurden jedoch verwendet. Beispielsweise kann die Dezimalzahl Zehn auch als ein Binärwert von 1010 und ein Hexadezimalbuchstabe A repräsentiert werden. Daher beinhaltet ein Wert eine beliebige Repräsentation von Informationen, die in einem Computersystem gehalten werden können.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten repräsentiert werden. Als ein Beispiel kann ein erster Wert, wie etwa eine logische Eins, einen Standard- oder Anfangswert repräsentieren, während ein zweiter Wert, wie etwa eine logische Null, einen Nicht-Standardzustand repräsentieren kann. Zusätzlich beziehen sich die Begriffe Zurücksetzen und Einstellen in einer Implementierung auf einen Standard- bzw. einen aktualisierten Wert oder Zustand. Beispielsweise beinhaltet ein Standardwert potenziell einen High-Logikwert, d. h. Zurücksetzen, während ein aktualisierter Wert potenziell einen Low-Logikwert, d. h. Einstellen, beinhaltet. Es ist anzumerken, dass eine beliebige Kombination von Werten genutzt werden kann, um eine beliebige Anzahl von Zuständen zu repräsentieren.
  • Die Implementierungen von Verfahren, Hardware, Software, Firmware oder Code, die vorstehend dargelegt sind, können über Anweisungen oder Code implementiert werden, die auf einem maschinenzugreifbaren, maschinenlesbaren, computerzugreifbaren oder computerlesbaren Medium gespeichert sind und durch ein Verarbeitungselement ausführbar sind. Ein nichttransitorisches maschinenzugreifbares/-lesbares Medium beinhaltet einen beliebigen Mechanismus, der Informationen in einer durch eine Maschine, wie etwa einen Computer oder ein elektronisches System, lesbaren Form bereitstellt (d. h. speichert und/oder überträgt). Beispielsweise beinhaltet ein nichttransitorisches maschinenzugreifbares Medium Direktzugriffsspeicher (RAM), wie etwa statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speicherungsmedium; Flash-Speichervorrichtungen; elektrische Speicherungsvorrichtungen; optische Speicherungsvorrichtungen; akustische Speicherungsvorrichtungen; eine andere Form von Speicherungsvorrichtungen zum Halten von Informationen, die von transitorischen (propagierten) Signalen (z. B. Trägerwellen, Infrarotsignalen, Digitalsignalen) usw. empfangen werden, die von den nichtflüchtigen Medien zu unterscheiden sind, die Informationen davon empfangen können.
  • Anweisungen, die zum Programmieren von Logik zum Durchführen von Implementierungen der Offenbarung verwendet werden, können in einem Speicher im System gespeichert werden, wie etwa DRAM, Cache, Flash-Speicher oder eine andere Speicherung. Ferner können die Anweisungen über ein Netzwerk oder mittels anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form beinhalten, unter anderem Disketten, optische Platten, CD-ROMs (Compact Disc, Read-Only Memory) und magnetooptische Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), löschbarer programmierbarer Nur-Lese-Speicher (EPROM), elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder eine greifbare maschinenlesbare Speicherung, die bei der Übertragung von Informationen über das Internet mittels elektrischer, optischer, akustischer oder anderer Formen propagierter Signale (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet wird. Dementsprechend beinhaltet das computerlesbare Medium eine beliebige Art von greifbarem maschinenlesbarem Medium, das zum Speichern oder Übertragen elektronischer Anweisungen oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • Ein Bezug durchweg durch diese Beschreibung auf „eine Implementierung“ bedeutet, dass ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Charakteristik, das/die in Verbindung mit der Implementierung beschrieben ist, in mindestens einer Implementierung der Offenbarung enthalten ist. Somit bezieht sich jedes Auftreten des Ausdrucks „in einer Implementierung“ an verschiedenen Stellen durchweg durch diese Beschreibung nicht notwendigerweise auf dieselbe Implementierung. Ferner können die speziellen Merkmale, Strukturen oder Charakteristiken in einer oder mehreren Implementierungen auf eine beliebige geeignete Weise kombiniert werden.
  • In der vorstehenden Beschreibung wurde eine ausführliche Beschreibung mit Bezug auf spezifische beispielhafte Implementierungen gegeben, es wird jedoch ersichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom breiteren Gedanken und Schutzumfang der Offenbarung abzuweichen, wie in den angehängten Ansprüchen dargelegt. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden anstatt beschränkenden Sinn anzusehen. Ferner bezieht sich die vorstehende Verwendung von Implementierung und anderer beispielhafter Sprache nicht notwendigerweise auf dieselbe Implementierung oder dasselbe Beispiel, aber kann sich auf verschiedene und unterscheidbare Implementierungen sowie potenziell dieselbe Implementierung beziehen.
  • Einige Teile der ausführlichen Beschreibung sind hinsichtlich von Algorithmen und symbolischen Repräsentationen von Operationen an Datenbits innerhalb eines Computerspeichers präsentiert. Diese algorithmischen Beschreibungen und Repräsentationen sind die Mittel, die durch Fachleute in der Datenverarbeitungstechnik verwendet werden, um den Inhalt ihrer Arbeit für andere Fachleute am effektivsten zu übermitteln. Ein Algorithmus wird, hier und allgemein, als eine selbstkonsistente Abfolge von Operationen aufgefasst, die zu einem gewünschten Ziel führt. Die Operationen sind jene, die physische Manipulationen physikalischer Größen erfordern. Gewöhnlich, obwohl nicht notwendigerweise, nehmen diese Größen die Form elektrischer oder magnetischer Signale an, die gespeichert, transferiert, kombiniert, verglichen und anderweitig manipuliert werden können. Es hat zeitweilig als vorteilhaft erwiesen, hauptsächlich aus Gründen des üblichen Gebrauchs, sich auf diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu beziehen. Die hierin beschriebenen Blöcke können Hardware, Software, Firmware oder eine Kombination davon sein.
  • Es sollte jedoch bedacht werden, dass alle dieser und ähnliche Begriffe mit den zweckmäßigen physikalischen Größen zu assoziieren sind und lediglich zweckdienliche Bezeichnungen sind, die diesen Größen gegeben werden. Insofern nicht spezifisch anderweitig angemerkt, wie aus der obigen Besprechung ersichtlich, wird gewürdigt werden, dass durchweg durch diese Beschreibung sich Besprechungen unter Verwendung von Begriffen wie etwa „Definieren“, „Empfangen“, „Bestimmen“, „Erstellen“, „Verknüpfen“, „Assoziieren“, „Erhalten“, „Authentifizieren“, „Verbieten“, „Ausführen“, „Anfordern“, „Kommunizieren“ oder dergleichen auf die Handlungen und Prozesse eines Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, das/die Daten, die als physikalische (z. B. elektronische) Größen in den Registern und Speichern des Rechensystems repräsentiert werden, in andere Daten manipuliert und transformiert, die gleichermaßen als physikalische Größen in den Speichern und Registern des Rechensystems oder anderen derartigen Informationsspeicherungs-, Übertragungs- oder Anzeigevorrichtungen repräsentiert werden.
  • Die Wörter „Beispiel“ oder „beispielhaft“ werden hierin verwendet, um als ein Beispiel, ein Fall oder eine Veranschaulichung dienend zu bedeuten. Ein beliebiger Aspekt oder ein beliebiges Design, der/das hierin als „Beispiel“ oder „beispielhaft“ beschrieben ist, soll nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs ausgelegt werden. Stattdessen soll die Verwendung dieser Wörter „Beispiel“ oder „beispielhaft“ Konzepte auf eine konkrete Weise präsentieren. Wie in dieser Anmeldung verwendet, soll der Begriff „oder“ ein inklusives „Oder“ anstatt ein exklusives „Oder“ bedeuten. Das heißt, insofern nicht anders spezifiziert, oder aus dem Kontext erkenntlich, soll „X beinhaltet A oder B“ beliebige der natürlichen inklusiven Permutationen bedeuten. Das heißt, falls X A beinhaltet; X B beinhaltet; oder X sowohl A als auch B beinhaltet, dann ist „X beinhaltet A oder B“ unter beliebigen der vorstehenden Fälle erfüllt. Zusätzlich sollten die Artikel „ein“ und „eine“, wie in dieser Anmeldung und den angehängten Ansprüchen verwendet, allgemein so aufgefasst werden, dass sie „ein oder mehr“ bedeuten, insofern nicht anders spezifiziert, oder aus dem Kontext erkenntlich, dass es sich auf eine Singularform bezieht. Darüber hinaus soll die durchgehende Verwendung des Begriffs „eine Implementierung“ nicht dieselbe Implementierung bedeuten, insofern nicht derartig beschrieben. Außerdem sollen die Begriffe „erster“, „zweiter“, „dritter“, „vierter“ usw., wie hierin verwendet, Bezeichnungen sein, um zwischen verschiedenen Elementen zu unterscheiden, und besitzen möglicherweise nicht notwendigerweise eine ordinale Bedeutung nach ihrer numerischen Kennzeichnung.

Claims (12)

  1. Prozessor, der Folgendes umfasst: ein erstes Register; und einen Prozessorkern, der mit dem ersten Register gekoppelt ist, wobei der Prozessorkern ausgelegt ist zum: Bestimmen, dass ein Speicherverschlüsselungsmodus aktiviert ist, durch Zugriff auf ein Bit im ersten Register, wobei der Speicherverschlüsselungsmodus bewirken soll, dass in den Speicher gespeicherte Daten verschlüsselt werden und aus dem Speicher abgefragte Daten entschlüsselt werden; Bestimmen, dass ein Debug-Modus aktiviert wurde; als Reaktion auf eine Bestimmung, dass der Debug-Modus aktiviert wurde, Erzeugen eines zweiten Verschlüsselungsschlüssels, der sich von einem ersten Verschlüsselungsschlüssel unterscheidet, der vor einem Neubooten eines Rechensystems eingesetzt wird; und Übertragen des zweiten Verschlüsselungsschlüssels zu einer kryptografischen Engine zur Verwendung bei der Verschlüsselung und Entschlüsselung der Daten gemäß dem Speicherverschlüsselungsmodus.
  2. Prozessor nach Anspruch 1, wobei zum Erzeugen des zweiten Verschlüsselungsschlüssels der Prozessorkern eine deterministische Anpassung bei der Schlüsselerzeugung bewirken soll.
  3. Prozessor nach Anspruch 1, wobei das Bestimmen, dass der Debug-Modus aktiviert ist, Lesen eines Bits auf einem Debug-Schnittstellen-Register umfasst.
  4. Prozessor nach einem der Ansprüche 1-3, wobei der Speicher entweder einen dynamischen Direktzugriffsspeicher (DRAM) oder einen nichtflüchtigen Direktzugriffsspeicher (NVRAM) umfasst.
  5. Prozessor nach einem der Ansprüche 1-3, wobei die kryptografische Engine entweder eine TME(Total Memory Encryption)-Engine oder eine MME (Memory Encryption Engine) umfasst.
  6. System, das Folgendes umfasst: Speicher; einen Prozessorkern, der mit dem Speicher gekoppelt ist, wobei der Prozessorkern einen Satz von Anweisungen umfasst, die eine Extensible Firmware Interface ausführen sollen, wobei der Prozessorkern den Satz von Anweisungen ausführen soll zum: Einstellen eines ersten Bits in einem ersten Register, um anzugeben, dass ein Speicherverschlüsselungsmodus aktiviert wurde; und Einstellen eines zweiten Bits in einem zweiten Register, um anzugeben, dass ein Debug-Modus aktiviert wurde; und eine kryptografische Engine, die mit dem Prozessorkern und dem Speicher gekoppelt ist, wobei die kryptografische Engine ausgelegt ist zum: als Reaktion darauf, dass das zweite Bit eingestellt ist, Erzeugen eines zweiten Verschlüsselungsschlüssels, der sich von einem ersten Verschlüsselungsschlüssel unterscheidet, der vor einen System-Neubooten eingesetzt wird; und als Reaktion darauf, dass das erste Bit eingestellt ist, Verschlüsseln, unter Verwendung des zweiten Verschlüsselungsschlüssels, von in den Speicher zu schreibenden Daten und Entschlüsseln von aus dem Speicher abzufragenden Daten.
  7. System nach Anspruch 6, wobei zum Erzeugen des zweiten Verschlüsselungsschlüssels die kryptografische Engine eine deterministische Anpassung bei der Schlüsselerzeugung bewirken soll.
  8. System nach Anspruch 6, wobei zum Erzeugen des zweiten Verschlüsselungsschlüssels die kryptografische Engine eine Schlüsselableitungslogik ausführen soll.
  9. System nach einem der Ansprüche 6-8, wobei der Prozessorkern ferner ausgelegt ist zum: Ausführen von Mikrocode zum Erzeugen des zweiten Verschlüsselungsschlüssels; und Übertragen des zweiten Verschlüsselungsschlüssels zu der kryptografischen Engine.
  10. System nach einem der Ansprüche 6-9, wobei das erste Register ein Verschlüsselungsaktivierungsregister umfasst.
  11. System nach einem der Ansprüche 6-10, wobei das zweite Register ein Debug-Schnittstellen-Register umfasst.
  12. System nach einem der Ansprüche 6-11, wobei die kryptografische Engine entweder eine Total Memory Encryption (TME) oder eine Memory Encryption Engine (MEE) umfasst.
DE202019005672.6U 2018-05-11 2019-04-05 System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher Active DE202019005672U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/977,353 US11243893B2 (en) 2018-05-11 2018-05-11 Preventing unauthorized access to encrypted memory
US15/977,353 2018-05-11

Publications (1)

Publication Number Publication Date
DE202019005672U1 true DE202019005672U1 (de) 2021-06-10

Family

ID=66102433

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202019005672.6U Active DE202019005672U1 (de) 2018-05-11 2019-04-05 System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher

Country Status (4)

Country Link
US (1) US11243893B2 (de)
EP (1) EP3567511A1 (de)
CN (1) CN110472444A (de)
DE (1) DE202019005672U1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11843597B2 (en) * 2016-05-18 2023-12-12 Vercrio, Inc. Automated scalable identity-proofing and authentication process
US11630920B2 (en) * 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
US10754743B2 (en) * 2018-12-17 2020-08-25 Arm Limited Apparatus and method using debug status storage element
US11085964B2 (en) * 2019-05-03 2021-08-10 Intel Corporation Systems and methods for intellectual property-secured, remote debugging
US11308243B2 (en) * 2019-09-11 2022-04-19 International Business Machines Corporation Maintenance of access for security enablement in a storage device
WO2021167617A1 (en) * 2020-02-21 2021-08-26 Hewlett-Packard Development Company, L.P. Computing devices for encryption and decryption of data
US11329816B2 (en) * 2020-06-01 2022-05-10 Hewlett Packard Enterprise Development Lp Encryption keys for removable storage media
US11604740B2 (en) * 2020-12-01 2023-03-14 Capital One Services, Llc Obfuscating cryptographic material in memory
CN115437603B (zh) * 2021-06-04 2023-12-19 中科寒武纪科技股份有限公司 用于生成随机数的方法及其相关产品
CN113342278B (zh) * 2021-06-22 2022-10-25 海光信息技术股份有限公司 处理器及其保持缓存数据一致性的方法
US11822675B2 (en) * 2021-06-24 2023-11-21 International Business Machines Corporation Securing customer data and internal register data during hardware checkstops in a multi-tenant environment

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004287590A (ja) 2003-03-19 2004-10-14 Matsushita Electric Ind Co Ltd デバッグシステム、マイクロプロセッサ及びデバッガ
US8687802B2 (en) * 2009-03-30 2014-04-01 The Regents Of The University Of California Method and system for accelerating the deterministic enciphering of data in a small domain
WO2013102521A1 (en) * 2012-01-03 2013-07-11 International Business Machines Corporation Method for secure self-booting of an electronic device
WO2014166551A1 (en) 2013-04-12 2014-10-16 Nec Europe Ltd. Method and system for providing an information centric network
US8955144B2 (en) 2013-06-28 2015-02-10 Intel Corporation Protecting information processing system secrets from debug attacks
US9684608B2 (en) * 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles
WO2016085492A1 (en) * 2014-11-26 2016-06-02 Hewlett-Packard Development Company, L.P. In-memory attack prevention
US9524249B2 (en) * 2014-12-23 2016-12-20 Intel Corporation Memory encryption engine integration
JP6162736B2 (ja) * 2015-03-19 2017-07-12 ファナック株式会社 機械と可搬式無線操作盤との間の距離に応じて通信品質基準を変化させる機能を備えたロボット制御システム
US9893881B2 (en) 2015-06-29 2018-02-13 Intel Corporation Efficient sharing of hardware encryption pipeline for multiple security solutions

Also Published As

Publication number Publication date
CN110472444A (zh) 2019-11-19
EP3567511A1 (de) 2019-11-13
US20190347213A1 (en) 2019-11-14
US11243893B2 (en) 2022-02-08

Similar Documents

Publication Publication Date Title
DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
EP3657378B1 (de) Bereitstellung von isolierung in virtualisierten systemen unter verwendung von vertrauensdomänen
US10671740B2 (en) Supporting configurable security levels for memory address ranges
EP3671515B1 (de) Verfahren und vorrichtung zur erstellung und zerstörung von vertrauenswürdigen domänen
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
DE102019109088A1 (de) Schutz von schlüsseln und sensitiven daten gegen angriffe in einer mikroprozessorarchitektur
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
KR102269010B1 (ko) 보호 영역에서의 메모리 초기화
DE112017004017T5 (de) Sichere öffentliche cloud
DE102018005180A1 (de) Flexible Bescheinigung von Containern
US20230027329A1 (en) Cryptographic computing in multitenant environments
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
US10031861B2 (en) Protect non-memory encryption engine (non-mee) metadata in trusted execution environment
DE112017000677T5 (de) Prozessorerweiterungen zum Schutz von Stapeln während Ringübergängen
DE102018004786A1 (de) Verfahren und Vorrichtung zum sicheren Binden eines ersten Prozessors an einen zweiten Prozessor
US10255199B1 (en) Evicting clean secure pages without encryption
DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
DE112010004885T5 (de) Bereitstellen von Integritätsüberprüfung und -bestätigung in einer verborgenen Ausführungsumgebung
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE112017005005T5 (de) Systeme, vorrichtungen, und verfahren zur plattformsicherheit
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
US20190102324A1 (en) Cache behavior for secure memory repartitioning systems
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
US20190095357A1 (en) Hardware support for static mode of protected memory management on flexibly-convertible enclave platform

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years