DE102018125747A1 - Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln - Google Patents

Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln Download PDF

Info

Publication number
DE102018125747A1
DE102018125747A1 DE102018125747.3A DE102018125747A DE102018125747A1 DE 102018125747 A1 DE102018125747 A1 DE 102018125747A1 DE 102018125747 A DE102018125747 A DE 102018125747A DE 102018125747 A1 DE102018125747 A1 DE 102018125747A1
Authority
DE
Germany
Prior art keywords
domain
secure
hardware
data structure
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018125747.3A
Other languages
English (en)
Inventor
Siddhartha Chhabra
David M. Durham
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 DE102018125747A1 publication Critical patent/DE102018125747A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • 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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/04Key management, e.g. using generic bootstrapping architecture [GBA]
    • H04W12/047Key management, e.g. using generic bootstrapping architecture [GBA] without using a trusted network node as an anchor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • H04W12/086Access security using security domains
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/04Key management, e.g. using generic bootstrapping architecture [GBA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication

Landscapes

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

Abstract

Ein Server weist einen Prozessorkern mit Systemspeicher und eine Kryptografie-Engine, die eine Schlüsseldatenstruktur speichert, auf. Die Datenstruktur soll mehrere Schlüssel für mehrere sichere Domänen speichern. Der Kern empfängt eine Anfrage zum Programmieren einer ersten sicheren Domäne in die Kryptografie-Engine. Die Anfrage beinhaltet erste Domäneninformationen in einem ersten eingehüllten binären Großobjekt (Binary Large Object, Blob). In Reaktion auf eine Bestimmung, dass es keinen verfügbaren Eintrag in der Datenstruktur gibt, wählt der Kern eine zweite sichere Domäne in der Datenstruktur zum Ausplanen aus und gibt einen Schlüssellesebefehl aus, um zweite Domäneninformationen aus einem Zieleintrag der Datenstruktur auszulesen. Der Kern verschlüsselt die zweiten Domäneninformationen, um ein zweites eingehülltes Blob zu generieren, und speichert das zweite eingehüllte Blob in einer bestimmten Region des Systemspeichers, was den Zieleintrag freisetzt, damit er für das Programmieren der ersten sicheren Domäne verwendet werden kann.

Description

  • Technisches Gebiet
  • Die Offenbarung betrifft den Schutz von Daten, die im Speicher eines Computersystems gespeichert sind, und insbesondere die Unterstützung für eine höhere Anzahl von gleichzeitigen Schlüsseln in Kryptografie-Engines mit mehreren Schlüsseln.
  • Hintergrund der Erfindung
  • Moderne Computersysteme nutzen eine Plattenverschlüsselung, um Daten zu schützen, die ruhend auf Festplattenlaufwerken oder in anderen Datenspeichern gespeichert sind. Angreifer können jedoch verschiedene Verfahren wie Bus-Scans, Speicher-Sans und dergleichen verwenden, um Daten aus dem Speicher abzurufen. Der Speicher selbst kann die Schlüssel für die Plattenverschlüsselung enthalten und somit die auf einem Plattenlaufwerk verschlüsselten Daten bloßlegen. Verschiedene Verfahren sind daher eingesetzt worden, um sensible Daten, die sich in wenigstens einigen Regionen des Speichers befinden, zu schützen. Dies ist inzwischen zu einer Herausforderung geworden, insbesondere in einer Cloud- oder Serverumgebung, in der unter Umständen mehrere Client-Arbeitslasten (von verschiedenen Entitäten) gleichzeitig auf demselben Server unterstützt werden.
  • Figurenliste
    • 1 ist ein Blockschaltbild einer Computervorrichtung für das sichere Programmieren einer hardwarebasierten Kryptografie-Engine gemäß verschiedenen Implementierungen.
    • 2 ist ein Systemblockschaltbild und veranschaulicht eine Schlüsseldatenstruktur der Kryptografie-Engine, die in der Lage ist, eine große Anzahl von im Speicher gespeicherten Schlüsseln gemäß verschiedenen Implementierungen zwischenzuspeichern.
    • 3 ist ein Systemflussdiagramm, das ein Verfahren für die Softwareverwaltung beim Programmieren mehrerer sicherer Domänen, unter Verwendung mehrerer entsprechender Schlüssel, in eine hardwarebasierte Kryptografie-Engine, gemäß verschiedenen Implementierungen veranschaulicht.
    • 4 ist ein Flussdiagramm eines Verfahrens zum Verwenden eines Hardwaremodus für das Verwalten der großen Anzahl von im Speicher gespeicherten Schlüsseln, auf die eine Kryptografie-Engine zugreifen kann, um eine Anzahl von Domänen eines Servers gemäß einer Implementierung zu sichern.
    • 5 ist ein Flussdiagramm eines Verfahrens für die Softwareverwaltung beim Programmieren mehrerer sicherer Domänen, unter Verwendung mehrerer entsprechender Schlüssel, in eine hardwarebasierte Kryptografie-Engine, gemäß verschiedenen Implementierungen.
    • ist ein Blockschaltbild, das eine In-Order-Pipeline und eine registerumbenennende Out-of-Order-Ausgabe-/Ausführungspipeline gemäß einer Implementierung veranschaulicht.
    • 6B ist ein Blockschaltbild, das eine Mikroarchitektur für einen Prozessor oder eine integrierte Schaltung veranschaulicht, der/die eine Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln gemäß einer Implementierung der Offenbarung implementieren kann.
    • 7 zeigt ein Blockschaltbild der Mikroarchitektur für einen Prozessor oder eine integrierte Schaltung, der/die eine Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln gemäß einer Implementierung der Offenbarung implementieren kann.
    • 8 ist ein Blockschaltbild eines Computersystems gemäß einer Implementierung.
    • 9 ist ein Blockschaltbild eines Computersystems gemäß einer weiteren Implementierung.
    • 10 ist ein Blockschaltbild eines Ein-Chip-Systems (System-on-Chip, SoC) gemäß einer Implementierung.
    • 11 zeigt eine weitere Implementierung eines Blockschaltbilds für ein Computersystem.
    • 12 ist ein Blockschaltbild der Verarbeitungskomponenten für das Ausführen von Befehlen zum Implementieren einer Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln gemäß einer Implementierung.
    • 13A ist ein Flussdiagramm eines beispielhaften Verfahrens, das von einem Prozessor ausgeführt werden soll, um einen Befehl zum Verschlüsseln einer Gruppe von Daten als eingehülltes binäres Großobjekt (Binary Large Object, Blob) auszuführen.
    • 13B ist ein Flussdiagramm eines beispielhaften Verfahrens, das von einem Prozessor durchgeführt werden soll, um einen Befehl zum Entschlüsseln eines eingehüllten Blobs in einzelne Bestandteile einer Gruppe von Daten auszuführen.
    • 14 ist ein Blockschaltbild, das ein beispielhaftes Format für die hier offenbarten Befehle veranschaulicht.
    • 15 zeigt eine weitere Implementierung eines Blockschaltbilds für ein Computersystem.
  • Ausführliche Beschreibung
  • Verschiedene Verfahren sind eingesetzt worden, um sensible Daten, die sich in Speicherregionen befinden, zu schützen. Einige Prozessoren stellen kryptografische Mechanismen für Verschlüsselungs-, Integritäts- und Wiedergabeschutz bereit. Speicherverschlüsselung schützt die Vertraulichkeit von speicherresidenten Daten. Beispielsweise kann die Gesamtspeicherverschlüsselung (Total Memory Encryption, TME) Daten verschlüsseln, die sich von einem Prozessorkern zum Speicher bewegen, und kann die verschlüsselten Daten auf ihrem Weg zurück zum Prozessorkern entschlüsseln.
  • In einigen Implementierungen, etwa der Intel® Software Guard Extensions (SGX)-Technologie, verwendet ein Prozessor beispielsweise eine Speicherverschlüsselungsengine (Memory Encryption Engine, MEE), um Daten zu schützen, wenn sie sich im Speicher befinden, z. B. in geschützten Enklaven oder Teilen des Speichers. Die MEE erweitert den (beispielsweise von der TME bereitgestellten) Verschlüsselungsschutz, um zusätzliche Sicherheitseigenschaften wie etwa Integritäts- und Wiedergabeschutz bereitzustellen. Der Integritätsschutz verhindert, dass ein Angreifer versteckte Modifikationen an dem Geheimtext (z. B. verschlüsselte Daten, im Gegensatz zu Klartext, bei dem es sich um unverschlüsselte Daten handelt) im Speicher vornimmt. Des Weiteren beseitigt der Wiedergabeschutz eine unerkannte temporäre Ersetzung des Geheimtextes. In Abwesenheit solcher Schutzmaßnahmen, die von der MEE bereitgestellt werden, kann ein Angreifer mit physischem Zugriff auf das System Schnappschüsse von Datenleitungen aufzeichnen und diese zu einem späteren Zeitpunkt wiedergeben, um Zugang zu den speicherresidenten Daten zu erhalten.
  • Implementierungen der Offenbarung erweitern die Funktionalität einer TME oder MEE, um mehrere Schlüssel in einer hardwarebasierten Kryptografie-Engine mit mehreren Schlüsseln zu unterstützen. Diese Funktionalitätserweiterung bietet Unterstützung für unterschiedliche Schlüssel für jede geschützte Domäne, die von einem Server bedient wird, z. B. bis zu Dutzende von Domänen auf einem gegebenen Server. Domänen können sich auf Arbeitslasten beziehen, beispielsweise eine Client-Maschine (z. B. eine virtuelle Maschine), ein Betriebssystem, eine Anwendung oder andere, vom Server unterstützte Arten von Arbeitslasten, die mit unterschiedlichen Client-Entitäten verknüpft sein können. Beispielsweise kann es sich bei einer sicheren Domäne um eine Client-Arbeitslast wie etwa ein Betriebssystem handeln, zusammen mit anderen Ring-3-Anwendungen, die als Aufsatz zum Betriebssystem ausgeführt werden, oder um eine virtuelle Maschine (VM), die als Aufsatz zu einem virtuellen Maschinenmonitor (VMM) zusammen mit anderen Ring-3-Anwendungen ausgeführt wird. Der Vorteil, der sich dadurch ergibt, dass die Verwendung mehrerer Schlüssel unterstützt wird, besteht darin, dass eine kryptografische Isolierung zwischen unterschiedlichen Client-Domänen bereitstellt wird, d. h., eine sichere Domäne kann nicht auf verschlüsselte Daten zugreifen, falls diese verschlüsselten Daten zu einer anderen sicheren Domäne gehören, die mit einem unterschiedlichen kryptografischen Schlüssel geschützt ist. Diese Vorteile erstrecken sich auf die Fähigkeit eines Cloud-Server-Providers (CSP), eine wachsende Anzahl von Client-Arbeitslasten auf demselben Server zu unterstützen, um sich an den zunehmenden Bedarf für cloudbasierte Hardwareressourcen anzupassen.
  • In verschiedenen Implementierungen kann die Kryptografie-Engine eine Unterstützung für mehrere Schlüssel durch Verwenden einer Schlüsseldatenstruktur (wie etwa einer Schlüsseltabelle) bereitstellen, die in der Hardware und einer zugehörigen Speicherregion für den Überlauf vorliegt. Die Schlüsseldatenstruktur kann einen Schlüssel und andere Domäneninformationen, die mit jeder zu schützenden Domäne, die in die Kryptografie-Engine programmiert ist, verknüpft sind, speichern. Solange ein Eintrag in der Schlüsseldatenstruktur verfügbar ist, kann eine neue Domäne in die Kryptografie-Engine programmiert werden und mit einem eindeutigen Schlüssel, der mit anderen Domäneninformationen (wie etwa einer Domänenkennung) in dem verfügbaren Schlüsseldatenstruktur-Eintrag gespeichert ist, geschützt werden. Werden neue Domänen hinzugefügt und füllt sich die Schlüsseldatenstruktur, können inaktive oder am längsten nicht verwendete Domänen ausgeplant werden, indem der Schlüssel und die Domäneninformationen für eine ausgeplante Domäne in ein eingehülltes binäres Großobjekt (Binary Large Object, Blob) eingehüllt werden. Der Vorgang des Einhüllens umfasst die Verschlüsselung, unter Verwendung eines Plattformschlüssels, einer Gruppe von Daten zu einem einzelnen verschlüsselten Paket (z. B. dem Blob), das anschließend einzeln verwaltet werden kann. Dieses eingehüllte Blob kann dann in einer bestimmten Region des Speichers, der für die sichere Datenspeicherung überschüssiger Domänen abgestellt ist, gespeichert werden. Auf diese Weise wird ein Schlüsseldatenstruktur-Eintrag für eine neue Domäne freigesetzt, und der Schlüssel und die Domäneninformationen für eine ausgeplante Domäne bleiben im Speicher erhalten. Anschließend kann, wenn eine Speicherzugriffsanfrage an die ausgeplante Domäne erkannt wird, das zuvor gespeicherte eingehüllte Blob aus dem Speicher ausgelesen und der Hardware oder Software, die die Planung von Domänen verwaltet, als neue sichere Domänenanfrage präsentiert werden.
  • In verschiedenen Implementierungen kann die vorstehend erörterte Domänenverwaltung unabhängig in kryptografischer Hardware durchgeführt werden, oder kann von Domänenverwaltungssoftware, die der Prozessorkern ausführt, durchgeführt werden. In einer Implementierung kann der Prozess der Domänenverwaltung, der die mehreren kryptografischen Schlüssel beinhaltet, von Hardware der Kryptografie-Engine durchgeführt werden, was unter Bezugnahme auf 5 ausführlicher besprochen wird. Der Domänenverwaltungsprozess kann auch von nicht vertrauenswürdiger Software verwaltet werden, wofür Befehle vom Prozessorkern ausgeführt werden. Der Verwaltungscode kann den Standard-Plattformverschlüsselungsschlüssel verwenden. Dieser Plattformschlüssel wird unter Umständen nicht entfernt und kann gegebenenfalls immer verwendet werden, um die VMM und andere Verwaltungssoftware zu schützen. Wenn der Domänenverwaltungsprozess von nicht vertrauenswürdiger Software verwaltet wird, können zusätzliche Sicherheitsmaßnahmen eingesetzt werden, um sicherzustellen, dass die Verwaltung für eingehüllte Blobs, die mit jeder Domäne verknüpft sind, durchgeführt wird und die nicht vertrauenswürdige Software somit nicht auf die Domäneninformationen oder Schlüssel in Klartext zugreift. Dieser softwareverwaltete Modus der Domänenverwaltung wird unter Bezugnahme auf die 6-7 ausführlicher erörtert.
  • Diese und andere hier beschriebene Merkmale umfassen viele Vorteile, insbesondere die Fähigkeit, eine große Anzahl von Domänen mit einer potenziell unbegrenzten Anzahl von kryptografischen Schlüsseln kryptografisch voneinander zu isolieren. Jede Domäne kann zu einem anderen Kunden gehören, und somit besteht der Bedarf, den Zugriff auf Daten im Speicher einer Domäne von dem einer anderen Domäne im Speicher zu isolieren. Beispielsweise ist jede Domäne von einer anderen Domäne, die von einem Server unterstützt wird, kryptografisch isoliert, wenn jede Domäne einen unterschiedlichen Schlüssel für das Sichern von Daten im Speicher verwendet. Dementsprechend werden, wenn Rechenzentren expandieren und sich bemühen, in einigen Fällen mehrere Kunden auf demselben Server zu unterstützen, die im Speicher gespeicherten und mit unterschiedlichen Domänen verknüpften Daten mit einem anderen Schlüssel verschlüsselt, und somit kann kein Datenzugriff im Speicher von einer anderen Domäne als der Domäne, für die die Daten verschlüsselt wurden, erfolgen. Die Fähigkeit, mehrere Schlüssel zu unterstützen, ermöglicht es einem Server, und einem Rechenzentrum ganz allgemein, bei erhöhtem Bedarf an Verarbeitungsressourcen, die der Server bereitstellt, zu expandieren.
  • 1 ist ein Blockschaltbild wenigstens einer Ausführungsform einer Computervorrichtung 100 für das sichere Programmieren einer hardwarebasierten Kryptografie-Engine gemäß verschiedenen Implementierungen. In einer Implementierung kann die Computervorrichtung 100, neben anderen Komponenten, einen oder mehrere Prozessorkerne 120, eine Speichersteuerung 128, Systemspeicher 132, Datenspeicher 134, Kommunikationsschaltungen 136, eine Sicherheitsengine 138 und eine hardwarebasierte Kryptografie-Engine 140 aufweisen.
  • In einer Implementierung handelt es sich bei der Computervorrichtung um einen Server 100, der die Domänen bedient, z. B. unterschiedliche Arbeitslasten wie etwa eine Client-Maschine, ein Betriebssystem, eine Anwendung oder andere Arten von Arbeitslasten, die unterstützt werden. In einigen Implementierungen können ein oder mehrere Prozessorkerne 120 Cache 118 (z. B. einen mehrstufigen Cache), eine Schaltung zur Unterstützung der Hardwarevirtualisierung 122, eine Schaltung zur Unterstützung sicherer Enklaven 124, eine Schaltung zur Unterstützung der Kryptoengine-Programmierung 126, eine Kryptografie-Engine 140 (wie etwa die zuvor erwähnte MKTME) und optional eine prozessorseitige Speichersteuerung 128 aufweisen.
  • In einer Implementierung weist die Kryptografie-Engine 140 eine Schlüsseldatenstruktur 142 auf, die in lokaler Hardware, z. B. einem lokalen Hardwarecache, Registern oder dergleichen, gehalten wird. Bei der Schlüsseldatenstruktur 142 kann es sich um eine Tabelle oder eine andere Datenstruktur handeln, die in Hardwarecache indiziert werden kann. In verschiedenen Implementierungen kann vertrauenswürdige Software die Kryptografie-Engine 140 unter Verwendung von einem oder mehreren Spezialbefehlen des Prozessorkerns programmieren, um eingehüllte Programmierinformationen, z. B. eine Gruppe von Daten, die zusammen mit einem Plattformschlüssel zu einem einzelnen Paket verschlüsselt ist, zu generieren. Die vertrauenswürdige Software stellt die eingehüllten Programmierinformationen für nicht vertrauenswürdige Software wie etwa einen Kernel-Modus-Treiber bereit. Die nicht vertrauenswürdige Software ruft unter Verwendung eines oder mehrerer Spezialbefehle des Prozessorkerns eine Enthüllengine auf, um die Programmierinformationen zu enthüllen und die Kryptografie-Engine 140 zu programmieren. Durch Verwenden von spezialisierten Prozessorkern-Befehlen zum Einhüllen (z. B. Verschlüsseln) der Programmierinformationen kann die Computervorrichtung 100 sicherstellen, dass vertrauenswürdige Software die Kryptografie-Engine 140 programmiert. Indem zugelassen wird, dass nicht vertrauenswürdige Software die Enthüllengine aufruft, bietet die Computervorrichtung 100 Systemsoftware (z. B. einem Betriebssystem und/oder einem VMM) die Möglichkeit, die Programmierung der Kryptografie-Engine 140 zu verwalten. Zusätzlich kann, durch Durchführen des Einhüllens und/oder Enthüllens mit dem Prozessorkern, die Computervorrichtung 100 die Komplexität der Kryptografie-Engine 140 reduzieren. Die Funktionalität des Einhüllens und Enthüllens wird unter Bezugnahme auf 3 ausführlicher erörtert.
  • Die Computervorrichtung 100 kann als ein beliebiger Typ von Rechen- oder Computervorrichtung ausgeführt sein, die in der Lage ist, die hier beschriebenen Funktionen durchzuführen, einschließlich, jedoch nicht beschränkt auf, Computer, Desktop-Computer, Workstation, Server, Laptop-Computer, Notebook-Computer, Tablet-Computer, mobile Datenverarbeitungsvorrichtung, tragbare Computervorrichtung, Netzgerät, Web-Gerät, verteiltes Computersystem, prozessorbasiertes System und/oder Unterhaltungselektronik-Vorrichtung. Die Computervorrichtung 100 kann, in anderen Ausführungsformen, andere oder zusätzliche Komponenten aufweisen, wie etwa solche, die gemeinhin in einem Desktop-Computer zu finden sind (z. B. verschiedene Eingabe-/Ausgabevorrichtungen). Zusätzlich können, in einigen Ausführungsformen, eine oder mehrere der veranschaulichenden Komponenten in eine andere Komponente integriert sein oder sonstwie einen Teil einer anderen Komponente bilden. Beispielsweise können der Speicher 132 oder Teile davon in einigen Ausführungsformen in den Prozessorkern integriert sein. Des Weiteren kann eine Speichersteuerung für den Speicher 132 im Prozessorkern enthalten sein.
  • Der Prozessorkern 120 kann in (einem) Einkern- oder Mehrkernprozessor(en), einem Digitalsignalprozessor, einem Mikrocontroller oder einem anderen Prozessor oder einer Verarbeitungs-/Steuerungsschaltung ausgeführt sein. Die Schaltung zur Unterstützung der Hardwarevirtualisierung 122 kann eine virtualisierte Ausführung von Betriebssystemen, Anwendungen und anderer Software durch die Computervorrichtung 100 unterstützen. Die Schaltung zur Unterstützung der Hardwarevirtualisierung 122 kann eine Unterstützung für virtuelle Maschinenerweiterungen (Virtual Machine Extensions, VMX) aufweisen, indem sie zwei Ausführungsmodi bereitstellt: VMX-root-Modus und VMX-non-root-Modus. Der VMX-root-Modus ermöglicht das Ausführen von Software, um eine umfassende Kontrolle über die Computervorrichtung 100 und deren Hardwareressourcen zu erhalten. Umgekehrt können ein Hypervisor, ein virtueller Maschinenmonitor (VMM) oder ein Host-Betriebssystem (Operating System, OS) im VMX-root-Modus ausgeführt werden. Der VMX-non-root-Modus schränkt den Zugriff auf bestimmte Hardwarebefehle ein, während er nach wie vor das gewöhnliche Ring/Privileg-System des Prozessorkerns implementiert. Ein oder mehrere Gast-OSs können im VMX-non-root-Modus ausgeführt werden. Diese Gast-OSs können in Ring Null ausgeführt werden, was der Ausführung ohne Virtualisierung ähnelt. Die Schaltung zur Unterstützung der Hardwarevirtualisierung 122 kann auch erweiterte Seitentabellen (Extended Page Tables, EPT) unterstützen, was als hardwareunterstützte Seitenadressumsetzung der zweiten Ebene ausgeführt sein kann. Die Schaltung zur Unterstützung der Hardwarevirtualisierung 122 kann beispielsweise als Intel® VT-x-Technologie ausgeführt sein.
  • Die Schaltung zur Unterstützung sicherer Enklaven 124 ermöglicht dem Prozessorkern, eine als sichere Enklave bekannte vertrauenswürdige Ausführungsumgebung einzurichten, in der das Ausführen von Code gemessen, verifiziert und/oder sonstwie als authentisch bestimmt werden kann. Zusätzlich können Code und Daten, die in der sicheren Enklave enthalten sind, verschlüsselt oder sonstwie davor geschützt sein, dass Zugriffe durch Code erfolgen, der außerhalb der sicheren Enklave ausgeführt wird. Beispielsweise können Code und Daten, die in der sicheren Enklave enthalten sind, durch Hardwareschutzmechanismen des Prozessorkerns geschützt sein, während sie ausgeführt werden oder während sie in einem bestimmten geschützten Cachespeicher des Prozessorkerns gespeichert sind. Der Code und die Daten, die sich in der sicheren Enklave befinden, können verschlüsselt sein, wenn sie in einem gemeinsam genutzten Cache oder dem Hauptspeicher 132 gespeichert sind. Die Schaltung zur Unterstützung sicherer Enklaven 124 kann als Satz von Prozessorbefehlserweiterungen ausgeführt sein, der dem Prozessorkern ermöglicht, eine oder mehrere sichere Enklaven im Speicher 132 einzurichten. Beispielsweise kann die Schaltung zur Unterstützung sicherer Enklaven 124 als Intel® Software Guard Extensions (SGX)-Technologie ausgeführt sein.
  • Die Schaltung zur Unterstützung der Kryptoengine-Programmierung 126 ermöglicht dem Prozessorkern 120, die Kryptografie-Engine 140 zu programmieren, um einen kryptografischen Schutz von Domänendaten bereitzustellen. Insbesondere kann der Prozessorkern die Verschlüsselung für eine Domäne aktivieren oder deaktivieren und kann Verschlüsselungsschlüssel für die Kryptografie-Engine 140 sicher bereitstellen. Die Schaltung zur Unterstützung der Kryptoengine-Programmierung 126 kann als ein oder mehrere spezialisierte Prozessorbefehle (z. B. die Befehle BIND, UNWRAP oder andere Befehle, die an späterer Stelle ausführlicher erörtert werden) ausgeführt sein und kann mit Hardware, Mikrocode, Firmware oder anderen Komponenten des Prozessorkerns 120 verknüpft sein.
  • Der Speicher 132 kann als beliebiger Typ von flüchtigem oder nichtflüchtigem Speicher oder Datenspeicher ausgeführt sein, der in der Lage ist, die hier beschriebenen Funktionen durchzuführen. Im Betrieb kann der Speicher 132 verschiedene Daten und Software speichern, die während des Betriebs der Computervorrichtung 100 verwendet werden, beispielsweise Betriebssysteme, Anwendungen, Bibliotheken und Treiber. Die Speichersteuerung 128 ist für das Speichern in den und das Abrufen aus dem Speicher an den Speicher 132 gekoppelt, was in einigen Fällen von ergebnislosen Zugriffen („Misses“) auf den Cache 118 abhängen kann. Die Speichersteuerung 128 kann in Kommunikationsverbindung mit dem Prozessorkern 120 stehen oder in diesen integriert sein.
  • Die Datenspeichervorrichtung 134 kann als beliebiger Typ einer oder mehrerer Vorrichtungen, die für die kurzfristige oder langfristige Speicherung von Daten ausgelegt sind, beispielsweise Speichervorrichtungen und -schaltungen, Speicherkarten, Festplattenlaufwerke, Festkörperlaufwerke oder andere Datenspeichervorrichtungen, ausgeführt sein. In einigen Ausführungsformen kann die Datenspeichervorrichtung 134 verwendet werden, um die Inhalte einer oder mehrerer sicherer Enklaven zu speichern. Beim Speichern durch die Datenspeichervorrichtung 134 können die Inhalte der sicheren Enklave verschlüsselt werden, um nicht autorisierte Zugriffe zu verhindern.
  • Die Kommunikationsschaltungen 136 der Computervorrichtung 100 können als beliebige Kommunikationsschaltung, Vorrichtung oder Sammlung davon ausgeführt sein, die in der Lage ist, die Kommunikation zwischen der Computervorrichtung 100 und anderen entfernten Vorrichtungen über ein Netz zu ermöglichen. Die Kommunikationsschaltungen 136 können dafür ausgelegt sein, eine oder mehrere Kommunikationstechnologien (z. B. drahtlose oder drahtgebundene Kommunikation) und zugehörige Protokolle (z. B. Ethernet, Bluetooth®, Wi-Fi®, WiMAX etc.) zu verwenden, um eine solche Kommunikation zu bewirken.
  • In einigen Ausführungsformen kann die Computervorrichtung 100 die Sicherheitsengine 138 aufweisen, die als beliebige Hardwarekomponente(n) oder Schaltung(en) ausgeführt sein kann, welche in der Lage sind, sicherheitsbezogene Dienste für die Computervorrichtung 100 bereitzustellen. Insbesondere kann die Sicherheitsengine 138 einen Mikroprozessor, einen Mikrocontroller oder eine andere eingebettete Steuerung aufweisen, die in der Lage ist, Firmware und/oder anderen Code unabhängig und sicher vom Prozessorkern auszuführen. Somit kann die Sicherheitsengine 138 verwendet werden, um eine vertrauenswürdige Ausführungsumgebung einzurichten, getrennt von Code, der vom Prozessorkern 120 ausgeführt wird. Die Sicherheitsengine 138 kann über einen dedizierten Bus, beispielsweise eine hostintegrierte Steuerungsschnittstelle (Host-Embedded Controller Interface, HECI) mit dem Prozessorkern 120 und/oder anderen Komponenten der Computervorrichtung 100 kommunizieren. Die Sicherheitsengine 138 kann außerdem eine Fernkonfiguration, Fernsteuerung oder Fernverwaltung für die Computervorrichtung 100 bereitstellen. In der veranschaulichenden Ausführungsform ist die Sicherheitsengine 138 als eine konvergierte Sicherheits- und Verwaltbarkeitsengine (Converged Security and Manageability Engine, CSME) ausgeführt, die in ein Ein-Chip-System (System-on-Chip, SoC) der Computervorrichtung 100 integriert ist. In einigen Ausführungsformen kann die Sicherheitsengine 138 als eine Verwaltbarkeitsengine, ein Außerband-Prozessor, ein vertrauenswürdiges Plattformmodul (Trusted Platform Module, TPM) oder eine andere Sicherheitsengine-Vorrichtung oder eine Sammlung von Vorrichtungen ausgeführt sein. Ferner kann, in einigen Ausführungsformen, die Sicherheitsengine 138 auch in der Lage sein, unter Verwendung der Kommunikationsschaltungen 136 oder einer dedizierten Kommunikationsschaltung unabhängig vom Zustand der Computervorrichtung 100 zu kommunizieren (z. B. unabhängig vom Zustand des Hauptprozessorkerns), was auch als „Außerband“-Kommunikation bekannt ist.
  • In verschiedenen Ausführungsformen kann die Kryptografie-Engine 140 als Mikrocontroller, Mikroprozessor, Funktionsblock, Logik oder eine andere Schaltung oder Sammlung von Schaltungen ausgeführt sein, der/die in der Lage ist, die hier beschriebenen Funktionen durchzuführen. Wie nachstehend näher beschrieben, kann die Kryptografie-Engine 140 aus dem/in den Speicher gelesene/geschriebene Domänendaten verschlüsseln und/oder entschlüsseln. Die Kryptografie-Engine 140 kann die interne Schlüsseldatenstruktur 142, welche die Kryptografie-Engine 140 verwenden kann, um zu schützende Domänenzugriffe zu identifizieren, zwischenspeichern. Wie erörtert, kann es sich bei der Schlüsseldatenstruktur 142 um eine Tabelle oder eine andere Datenstruktur handeln, die sich indizieren und in der Hardware der Kryptografie-Engine 140 speichern lässt. In einer Implementierung ist die Hardware ein Cache, ein Satz von Registern oder ein anderer Flash-Speicher.
  • Dementsprechend kann die Schlüsseldatenstruktur 142 von der Hardware der Kryptografie-Engine 140 oder durch vertrauenswürdige Software gesteuert und/oder programmiert werden, beispielsweise unter Verwendung der Schaltung zur Unterstützung der Kryptoengine-Programmierung 126 des Prozessorkerns 120. Die Schlüsseldatenstruktur 142 kann dafür ausgelegt sein, Schlüssel und Domäneninformationen für die Domänen zu speichern. Die Verschlüsselungsschlüssel und/oder andere geheime Informationen der Schlüsseldatenstruktur 142 stehen für nicht vertrauenswürdige Software unter Umständen nicht zur Verfügung. In einigen Ausführungsformen kann die Kryptografie-Engine 140 zusammen mit der Speichersteuerung 128 und dem Prozessorkern 120 in ein Ein-Chip-System (System-on-Chip, SoC) der Computervorrichtung 100 integriert sein.
  • 2 ist ein Systemblockschaltbild 200, das eine Schlüsseldatenstruktur 142 der Kryptografie-Engine 140 (1) veranschaulicht, die in der Lage ist, eine große Anzahl von im Speicher gespeicherten Schlüsseln gemäß verschiedenen Implementierungen zwischenzuspeichern. Das Systemblockschaltbild 200 beinhaltet einen Systemagenten 205, eine Kryptografie-Engine 240 und eine Speichersteuerung 228, die wie dargestellt miteinander gekoppelt sind. In verschiedenen Ausführungsformen repräsentiert der Systemagent 205 eine Hardwarekomponente, die Speicheranfragen von allen Agenten des Systems (z. B. Kernen, Grafiken, E/A-Vorrichtungen) empfängt. Die Domänen können virtuelle Maschinen oder Betriebssysteme aufweisen, die beispielsweise auf dem/den Prozessorkern(en) 120 ausgeführt werden. Jede Domäne, die auf den Kernen ausgeführt wird, kann nach Bedarf Speicheranfragen ausgeben und durchläuft den Systemagenten 205. Der Systemagent 205 wiederum kann die Anfragen an die Speichersteuerung 228 senden, die ihrerseits die angeforderten Daten aus dem Speicher 132 abruft (oder die angeforderten Daten in den Speicher 132 schreibt).
  • In verschiedenen Ausführungsformen kann die Kryptografie-Engine 240 als Teil der Speichersteuerung 228 implementiert sein, damit kryptografische und sicherheitsbezogene Funktionen in Bezug auf Daten, die aus dem/in den Speicher 132 gelesen/geschrieben werden, für die Domänen durchgeführt werden. Wie vorstehend erörtert, kann die Schlüsseldatenstruktur 142 in der Hardware der Kryptografie-Engine 240 gespeichert sein, um ein höheres Maß an Sicherheit, beispielsweise in einem Cache, Registern oder dergleichen zu erzielen. Der Systemspeicher 132 kann eine bestimmte Region 235 umfassen, in der eingehüllte Blobs gespeichert werden sollen. In einer Implementierung ist die bestimmte Region 235 des Speichers gemäß einer Domänenkennung (ID) jeder jeweiligen sicheren Domäne indiziert. Dementsprechend wird die Schlüsseldatenstruktur 142 effektiv für die eingehüllten Blobs, die in der bestimmten Region 235 des Speichers 132 gespeichert sind, zwischengespeichert.
  • In verschiedenen Implementierungen weist die Schlüsseldatenstruktur 142 indizierte Reihen auf, jede mit einer Schlitzkennung (ID), einer Schlüsseldomäne (z. B. einer Domänen-ID) und einem sicheren Schlüssel zum Durchführen einer Verschlüsselung und Entschlüsselung für Domänendaten. Die Schlüsseldomäne kann verwendet werden, um eine Domäne zu identifizieren (z. B. höherwertige Adressbits in einer Implementierung) und muss, in einer Implementierung, nicht in der Schlüsseldatenstruktur gespeichert sein, falls der Index (Schlitz-ID) der Schlüsseldomäne in einer Eins-zu-Eins-Entsprechung entspricht. Die Schlüsseldatenstruktur 142 kann eine feste Größe haben, um eine praktische Implementierung der Kryptografie-Engine 240 zu ermöglichen, die physische Grenzen beinhaltet.
  • In verschiedenen Implementierungen kann die Kryptografie-Engine 240 die Schlüsseldatenstruktur 142 unter Verwendung eingehüllter Blobs programmieren. Die eingehüllten Blobs werden unter Verwendung eines Plattformschlüssels, der zur Verwendung in der Domänenverwaltung von kryptografischen Schlüsseln in die Kryptografie-Engine vorprogrammiert ist, eingehüllt. In einer Ausführungsform ist der Plattformschlüssel für genau einen Rücksetzzyklus programmiert und kann nicht rücksetzübergreifend bestehen bleiben. Die eingehüllten Blobs können in der bestimmten Region 235 des Speichers 132 gespeichert sein und können in Verbindung mit einem Domänenwechsel auf die Schlüsseldatenstruktur 142 wiederhergestellt werden (um die Ausführung einer Domäne zu starten). Die Schlüsseldatenstruktur 142 kann somit als Cache für sichere Domäneninformationen (kryptografischer Schlüssel und andere Domäneninformationen) mit dem Systemspeicher arbeiten und auf diese Weise einen virtuell unbegrenzten Datenspeicher für verschlüsselte Domäneninformationen bilden, insofern die bestimmte Region 235 ausreichend groß ist. In einer Implementierung kann die bestimmte Region 235 des Speichers als eine sichere Enklave identifiziert sein und als sicherer Speicher geschützt sein, aber dennoch mit einem doppelten Sicherheitsniveau geschützt sein, insofern dass Domäneninformationen als eingehüllte Blobs verschlüsselt sind.
  • Die bestimmte Region 235 im Speicher 132 kann ein Speicher sein, der von dem Systemspeicher der Computervorrichtung 100 genommen wird, und kann von der Systemfirmware eingerichtet werden, z. B. dem Basis-Eingabe/Ausgabe-System (Basic Input/Output System, BIOS) der Computervorrichtung. Beispielsweise kann das BIOS beim Hochfahren des Computersystems 100 Reservierungsinformationen in einem Bereichsregister speichern, um die bestimmte Region 235 des Systemspeichers für Hardware zu reservieren. Nach dem Hochfahren können die Reservierungsinformationen aus dem Bereichsregister abgerufen und genutzt werden, um die hardwarebasierte Kryptografie-Engine zu programmieren und die bestimmte Region 235 des Speichers zu reservieren.
  • In verschiedenen Implementierungen kann die bestimmte Region 235 eine Größe aufweisen, die auf der Anzahl sicherer Domänen basiert, die unterstützt werden können. Als nur ein Beispiel: Falls die Größe jedes Satzes von Domäneninformationen (die in die Kryptografie-Engine 140 programmiert werden sollen) N Bytes beträgt und 16K sichere Domänen unterstützt werden sollen, dann kann das BIOS 16N KB Speicher für die bestimmte Region 235 des Speichers reservieren. Die Domänen-ID kann verwendet werden, um die Adresse in der bestimmten Region 235 des Speichers 132 zu finden, um ein gegebenes eingehülltes Blob zu lokalisieren. In einer Implementierung kann eine Eins-zu-Eins-Abbildung zwischen einer Domänen-ID und dem Standort in der vorgegebenen Region 235 des Speichers zum Speichern der eingehüllten Blobs bestehen, z. B. in dem Fall, dass die Domäneninformationen aus der Schlüsseldatenstruktur 142 entfernt werden sollen. Es sei daraufhingewiesen, dass, wenn in Reaktion auf einen Speicherzugriff einer Domäne der Schlüssel nicht in der Schlüsseldatenstruktur 142 vorgefunden wird und aus dem Speicher abgerufen werden sollte, für die eingehende Anfrage infolge des Abrufs und des nachfolgenden Enthüllens von Domäneninformationen, die in der Schlüsseldatenstruktur 142 gespeichert werden sollen, eine Verzögerung hervorgerufen werden kann. Da zu erwarten ist, dass, sobald Domäneninformationen wieder in die Kryptografie-Engine 140 zurückgespeichert sind, die Domäneninformationen für einige Zeit verwendet werden, können sich diese zusätzlichen Verzögerungen über die Zeit verringern und somit minimiert werden.
  • Das Computersystem 100 kann wenigstens zwei Modi zum Unterstützen einer erweiterten Anzahl von Schlüsseln nutzen, die praktisch unbegrenzt sein kann, was die Fähigkeit angeht, eine beliebige Anzahl von Domänen zu sichern, für die eine Domänenprogrammierung gefordert ist. Der erste Modus kann Verwaltungssoftware durch Verwendung der Befehlssatzarchitektur (Instruction Set Architecture, ISA) verwenden, um das Einhüllen und Speichern/Wiederherstellen von sichereren Domäneninformationen in den/aus dem Speicher 132 zu erzielen. Bei dem zweiten Modus kann es sich um einen Hardwaremodus handeln, in dem die Kryptografie-Engine 140 eine große Anzahl von Schlüsseln ankündigen kann (mehr als in der Kryptografie-Engine 140 vorgesehen sein kann) und dann die mit Domänen verknüpften Schlüssel ohne Softwareeingriff unabhängig verwaltet.
  • 3 ist ein Systemflussdiagramm, das ein Verfahren 300 für die Softwareverwaltung beim Programmieren mehrerer sicherer Domänen, unter Verwendung mehrerer entsprechender Schlüssel, in eine hardwarebasierte Kryptografie-Engine 340, gemäß verschiedenen Implementierungen veranschaulicht. Die hardwarebasierte Kryptografie-Engine 340 kann identisch mit oder ähnlich der hardwarebasierten Kryptografie-Engine 140 oder 240 sein. Das Verfahren 300 kann zwischen der vertrauenswürdigen Software 305, der Domänenverwaltungssoftware 307 (z. B. nicht vertrauenswürdiger Software, die vom Prozessorkern 120 ausgeführt werden kann) und der Kryptografie-Engine 340 ausgeführt werden. Wie vorstehend erörtert, kann die Schaltung zur Unterstützung der Kryptoengine-Programmierung 126 als ein oder mehrere spezialisierte Prozessorbefehle (z. B. die Befehle BIND, UNWRAP oder andere Befehle, die an späterer Stelle ausführlicher erörtert werden) ausgeführt sein und kann mit Hardware, Mikrocode, Firmware oder anderen Komponenten des Prozessorkerns 120 verknüpft sein.
  • In verschiedenen Implementierungen kann das Verfahren 300 beispielsweise mit der vertrauenswürdigen Software 305 beginnen, um eine Domäne einzurichten, wobei der Spezialbefehl BIND aufgerufen wird, um den mit der Domäne verknüpften Schlüssel und andere Domänenprogrammierinformationen (z. B. die Domänen-ID) in ein eingehülltes binäres Großobjekt („Blob“) (310) zu verschlüsseln. Diese Programmierinformationen können als geheimes Tastungsmaterial betrachtet werden, das als eingehülltes Blob verschlüsselt werden soll, so dass, wenn es von der nicht vertrauenswürdigen Verwaltungssoftware 607 gehandhabt wird, die nicht vertrauenswürdige Software nicht in der Lage ist, auf das geheime Tastungsmaterial zuzugreifen oder dieses einzusehen. Das Verfahren 300 kann damit fortfahren, das eingehüllte Blob 307 zum Programmieren in die Kryptografie-Engine 340 (320) an die Domänenverwaltungssoftware zu senden. Der BIND-Befehl hüllt daher Informationen in Form von geheimen Daten für ein spezifisches Ziel auf der Computervorrichtungsplattform ein, in diesem Fall z. B. die Kryptografie-Engine 340.
  • Sobald die Domänenverwaltungssoftware 307 das eingehüllte Blob hat, kann das Verfahren 300 damit fortfahren, dass diese nicht vertrauenswürdige Verwaltungssoftware einen UNWRAP-Befehl (330) aufruft, der die Integrität des Blobs unter Verwendung des Plattformschlüssels verifiziert, und falls die Verifizierung erfolgreich ist, eine kryptografische Antwort generiert, die von der nicht vertrauenswürdigen Domänenverwaltungssoftware 307 erkannt werden kann und durch die vertrauenswürdige Software 305 (335) verifizierbar ist. Das Verfahren 300 kann damit fortfahren, dass die Domänenverwaltungssoftware das Blob bei erfolgreichem Enthüllen (350) in die Kryptografie-Engine 240 programmiert. Diese Programmierung der Kryptografie-Engine 340 kann über ein vertrauenswürdiges Hardwarenetz im Prozessorkern 120 durchgeführt werden, und daher können externe Entitäten diese Transaktion nicht ausspionieren. Dementsprechend gibt es für einen Angreifer an dieser Stelle im Datenfluss keine Möglichkeit, auf die Programmierung des Blobs zuzugreifen.
  • Das Verfahren 300 kann damit fortfahren, dass die Domänenverwaltungssoftware 307 die kryptografische Antwort empfängt, die an die vertrauenswürdige Software 305 (360) weitergegeben werden kann. Dementsprechend kann das Verfahren 300 damit fortfahren, dass die Domänenverwaltungssoftware 307 die kryptografische Antwort an die vertrauenswürdige Software 305 zurückgibt, was der vertrauenswürdigen Software 305 signalisiert, dass die nicht vertrauenswürdige Verwaltungssoftware 307 tatsächlich den UNWRAP-Befehl aufgerufen hat, um die Kryptografie-Engine 240 mit der neuen Domäne (370) zu programmieren. Auf diese Weise verifiziert die vertrauenswürdige Software 305, dass die Programmierung erfolgreich war, und kann somit die Anzahl sicherer Domänen, die gegenwärtig von der Kryptografie-Engine 240 unterstützt werden, verfolgen.
  • Der UNWRAP-Befehl kann daher das eingehüllte Blob als Speicheroperand nehmen und zielspezifische Informationen (z. B. Schlüssel- und Domäneninformationen) in die Zielvorrichtung (z. B. die Kryptografie-Engine 240) programmieren, in Reaktion auf ein erfolgreiches Enthüllen des eingehüllten Blobs. Der UNWRAP-Befehl kann ein Ziel und einen zielspezifischen Befehl erwarten, auf den er wirken soll. Für die Kryptografie-Engine 240 als Ziel enthält Tabelle 1 eine Liste von Befehlen, die zu diesen zielspezifischen Befehlen zählen können. Es sei daraufhingewiesen, dass „KD“ für „Key Domain“ (Schlüsseldomäne) steht. Tabelle 1
    Befehl Codierung Beschreibung
    KD_SET_KEY 0 Verknüpft einen Domänenschlüssel unter Verwendung des bereitgestellten eingehüllten Blobs mit einer spezifischen Domäne.
    KD_CLEAR_KEY 1 Löscht den mit der Domäne verknüpften Schlüssel.
    KD_READ_KEY 2 Liest den Schlüssel aus der Schlüsseldatenstruktur 142 aus. Dieser Befehl liest den Schlüssel nicht in Klartext-Form aus, sondern generiert ein eingehülltes Blob mit dem Schlüssel für die Domänenverwaltungssoftware 307 zum Verwalten sicherer Domänen.
  • Es sei darauf hingewiesen, dass, damit die vorstehenden Befehle funktionieren, der UNWRAP-Befehl auch erwarten kann, dass eine Domänen-ID als Teil der Domäneninformationen enthalten ist, um die Domäne zu identifizieren, auf die gewirkt werden soll. Als ein Beispiel, damit Software einen Schlüssel mit einer Domäne verknüpft, kann die vertrauenswürdige Software 305 einen BIND-Befehl generieren, um ein Blob mit der Domänen-ID und in Reaktion auf einen Schlüssel-löschen-Befehl einzuhüllen. In einigen Implementierungen können, um die Sicherheit zu gewährleisten, diese Befehle den Aufrufer einschließlich einiger Besitzinformationen nach sich ziehen. Als ein Beispiel muss unter Umständen der aktuelle Schlüssel, der mit der Domäne verknüpft ist, im KD_CLEAR KEY-Befehl bereitgestellt werden. Da nur der Besitzer, der den Schlüssel vergeben hat, den Schlüssel kennt, kann die Echtheit des KD_CLEAR KEY-Befehls festgestellt werden. In einigen Implementierungen ist KD_READ_KEY ein Befehl, der es der Domänenverwaltungssoftware 307 ermöglicht, die Schlüsseldatenstruktur 142 als Cache mit dem vorgeschlagenen Mechanismus eingehüllter Schlüssel zu verwenden, welcher unter Bezugnahme auf 5 noch ausführlicher zu erläutern sein wird. Insbesondere ermöglicht es der Befehl KD_READ_KEY nicht vertrauenswürdiger Software, Domäneninformationen aus der Schlüsseldatenstruktur 142 in Form eines eingehüllten Blobs auszulesen, um die Domänen ohne direkten Zugriff zu verwalten, um Schlüssel- und Domäneninformationen zu sichern.
  • 4 ist ein Flussdiagramm eines Verfahrens 400 zum Verwenden eines Hardwaremodus für das Verwalten der großen Anzahl von im Speicher gespeicherten Schlüsseln, auf die die Kryptografie-Engine 140 zugreifen kann, um eine Anzahl von Domänen eines Servers gemäß einer Implementierung zu sichern. Dementsprechend kann das Verfahren 400 durchgeführt werden, indem Logik verarbeitet wird, die Hardware (z. B. Schaltungen, dedizierte Logik, programmierbare Logik, Mikrocode etc.), Firmware oder eine Kombination davon umfassen kann. In einer Implementierung wird das Verfahren 400 vom Prozessorkern 120 aus 1 durchgeführt, z. B. von der Kryptografie-Engine 140. In einer anderen Implementierung wird das Verfahren 400 von irgendeinem der in Bezug auf die 8a-14 beschriebenen Prozessoren durchgeführt.
  • Unter Bezugnahme auf 4 kann das Verfahren 400 damit beginnen, dass Verarbeitungslogik eine neue sichere Domänenprogrammierungsanfrage empfängt (410). Die Programmierungsanfrage kann von der Schaltung zur Unterstützung der Kryptoengine-Programmierung 126 empfangen werden, um die neue sichere Domäne in die Kryptografie-Engine 140 zu programmieren. Das Verfahren 400 kann damit fortfahren, dass die Verarbeitungslogik bestimmt, ob ein Eintrag in der Schlüsseldatenstruktur 142 verfügbar ist, z. B. nicht gefüllt (420). Falls ja, kann das Verfahren 400 damit fortfahren, dass die Verarbeitungslogik erste sichere Domäneninformationen in dem verfügbaren Eintrag in der Schlüsseldatenstruktur (430) speichert. Die ersten Domäneninformationen können beispielsweise einen ersten Schlüssel und eine erste Domänenkennung enthalten.
  • Falls bei Block 420 Nein gilt, kann das Verfahren 400 damit fortfahren, dass die Verarbeitungslogik eine zweite sichere Domäne auswählt, die ausgeplant werden soll, wobei die zweite sichere Domäne mit der Schlüsseldatenstruktur 142 in einem zweiten Eintrag (440) indiziert ist. Das Verfahren 400 kann damit fortfahren, dass die Verarbeitungslogik unter Verwendung eines Plattformschlüssels, zweite Domäneninformationen verschlüsselt, die aus dem zweiten Eintrag für die zweite sichere Domäne abgerufen werden, um ein eingehülltes binäres Großobjekt (Blob) (450) zu generieren. Die zweiten Domäneninformationen können einen zweiten Schlüssel und eine zweite Domänenkennung enthalten. Das Verfahren 400 kann damit fortfahren, dass die Verarbeitungslogik das eingehüllte Blob in einer bestimmten Region des Systemspeichers speichert, die gemäß der zweiten Domänenkennung (460) indiziert ist. Das Verfahren 400 kann damit fortfahren, dass die Verarbeitungslogik die ersten Domäneninformationen im zweiten Eintrag der Schlüsseldatenstruktur speichert, der aufgrund des Ausplanens bei Block 440 (470) freigesetzt worden ist.
  • Nachdem einige Zeit verstrichen ist, kann das Verfahren 400 damit fortfahren, dass die Verarbeitungslogik eine Zugriffsanfrage für die zweite sichere Domäne (475) empfängt. Es sei daran erinnert, dass die zweite sichere Domäne von der Unterstützung durch die Kryptografie-Engine 140 ausgeplant wurde und daher jetzt erneut geplant werden muss, um eine erneuerte kryptografische Unterstützung für die zweite Domäne bereitzustellen. Dementsprechend kann das Verfahren 400 damit fortfahren, dass die Verarbeitungslogik das eingehüllte Blob aus der bestimmten Region 235 des Speichers 132 (480) ausliest. Das Verfahren 400 kann damit fortfahren, dass die Verarbeitungslogik das eingehüllte Blob (wie beim Durchführen einer UNWRAP-Operation) entschlüsselt, um die zweiten Domäneninformationen zu generieren. Diese zweiten Domäneninformationen, jetzt im Klartext an der Kryptografie-Engine, können in einer Anfrage verwendet werden, um die zweite Domäne erneut zu planen. Die Domänenplanung durch die Kryptografie-Engine kann daher gemäß Verfahren 400 wiederholt werden, unabhängig davon, ob es sich um eine Anfrage für eine neue Domäne oder eine neuerliche Anfrage für eine zuvor im Speicher archivierte Domäne handelt.
  • 5 ist ein Flussdiagramm eines Verfahrens 500 für die Softwareverwaltung beim Programmieren mehrerer sicherer Domänen, unter Verwendung mehrerer entsprechender Schlüssel, in die hardwarebasierte Kryptografie-Engine 140 oder 440, gemäß verschiedenen Implementierungen. Das Verfahren 500 kann von der Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, dedizierte Logik, programmierbare Logik, Mikrocode etc.), Software (wie etwa Operationen, die von der vertrauenswürdigen Software 305 und von der nicht vertrauenswürdigen Domänenverwaltungssoftware 307 durchgeführt werden), Firmware oder eine Kombination davon umfassen. In einer Implementierung wird das Verfahren 500 von dem Prozessorkern 120 aus 1 durchgeführt. In einer anderen Implementierung wird das Verfahren 500 von irgendeinem der in Bezug auf die 6a-15 beschriebenen Prozessoren durchgeführt.
  • Unter Bezugnahme auf 5 kann das Verfahren 500 damit beginnen, dass die Verarbeitungslogik eine neue (z. B. erste) sichere Domänenprogrammierungsanfrage empfängt, die ein erstes eingehülltes Blob mit verschlüsselten ersten Domäneninformationen (510) enthält. Diese Anfrage kann von der vertrauenswürdigen Software 305 mit Ausführung eines KD_SET_KEY-Befehls kommen, um einen Domänenschlüssel mit einer ersten sicheren Domäne zu verknüpfen. Das Verfahren 500 kann damit fortfahren, dass die Verarbeitungslogik bestimmt, ob ein Eintrag in der Schlüsseldatenstruktur 142 (520) verfügbar ist. Falls ja, kann das Verfahren 500 damit fortfahren, dass die Verarbeitungslogik das erste eingehüllte Blob entschlüsselt (z. B. unter Verwendung eines UNWRAP-Befehls), um erste Domäneninformationen in Klartext (530) zu generieren, und die ersten Domäneninformationen in dem verfügbaren (z. B. ersten) Eintrag in der Schlüsseldatenstruktur 142 (535) speichert.
  • Unter weiterer Bezugnahme auf 5, falls kein Eintrag in der Schlüsseldatenstruktur 142 (520) verfügbar ist, kann das Verfahren 500 damit fortfahren, dass die Verarbeitungslogik eine zweite sichere Domäne in einem zweiten Eintrag der Schlüsseldatenstruktur auswählt, der ausgeplant (540) werden soll. In verschiedenen Implementierungen kann die Verarbeitungslogik bestimmen, welche programmierte Domäne inaktiv ist oder am längsten nicht verwendet wurde (Least Recently Used, LRU) oder kann einige andere ähnliche Algorithmen durchführen, um eine auszuplanende Domäne, z. B. als „zweite sichere Domäne“ in Verfahren 500, auszuwählen. Das Verfahren 500 kann damit fortfahren, dass die Verarbeitungslogik einen Schlüssellesebefehl (z. B. KD_READ_KEY aus Tabelle 1) ausgibt, um zweite Domäneninformationen aus einem Zieleintrag der Schlüsseldatenstruktur 142 (545) auszulesen. In Reaktion auf den Schlüssellesebefehl kann das Verfahren 500 damit fortfahren, dass die Verarbeitungslogik die zweiten Domäneninformationen verschlüsselt, um einen neues (z. B. zweites) eingehülltes Blob (550) zu generieren, und das zweite eingehüllte Blob in der bestimmten Region des Systemspeichers 132 (560) speichert. Das Verfahren 500 kann damit fortfahren, dass die Verarbeitungslogik die erste sichere Domäne in die Kryptografie-Engine programmiert, indem das erste eingehüllte Blob (z. B. über einen UNWRAP-Befehl) entschlüsselt wird, um erste Domäneninformationen (570) zu generieren, und die ersten Domäneninformationen an dem Zieleintrag der Schlüsseldatenstruktur, der durch das Ausplanen der zweiten Domäne (575) freigesetzt wurde, gespeichert werden.
  • Nachdem einige Zeit verstrichen ist, kann das Verfahren 500 damit fortfahren, dass die Verarbeitungslogik eine Zugriffsanfrage für die zweite sichere Domäne (580) empfängt. Es sei daran erinnert, dass die zweite sichere Domäne von der Unterstützung durch die Kryptografie-Engine 140 ausgeplant wurde und daher jetzt erneut geplant werden muss, um eine erneuerte kryptografische Unterstützung für die zweite Domäne bereitzustellen. Dementsprechend kann das Verfahren 500 damit fortfahren, dass die Verarbeitungslogik das zweite eingehüllte Blob aus der bestimmten Region 235 des Speichers 132 (585) ausliest. Das Verfahren kann jetzt auf das zweite eingehüllte Blob als Anfrage zum Programmieren der zweiten sicheren Domäne in die hardwarebasierte Kryptografie-Engine (510) reagieren. Auf diese Weise kann sich der Softwaremodus der Domänenverwaltung dabei wiederholen, das zweite eingehüllte Blob als neue, z. B. dritte Anfrage nach einer dritten sicheren Domäne, zu handhaben. Auch wenn das zweite eingehüllte Blob aus dem Speicher ausgelesen wurde, kann es so behandelt werden, als würde es sich um eine neue Anfrage von der vertrauenswürdigen Software 605 handeln.
  • Auf Domäneninformationen wurde zuvor allgemein verweisen, z. B. dass ein einzelner Basisschlüssel eingehüllt im Speicher gespeichert würde. Allerdings, um Leistungsoverheads zu reduzieren, kann ein erweiterter Schlüsselzeitplan ebenfalls im Speicher gespeichert werden statt nur der Basisschlüssel. Ermöglicht wird dies, da die Speicheranforderungen für den erweiterten Schlüsselzeitplan relativ klein sind (z. B. 176B für AES-128). Diese Optimierung wird es ermöglichen, dass beim Wiederherstellen einer Domäne aus dem Speicher 10 Zyklen zur Erweiterung gespeichert werden können. Wenn die hardwarebasierte AES-Verschlüsselung diese Schlüssel benötigt, kann die Hardware der Kryptografie-Engine 140 (oder andere Sicherheitshardware) dieses Blob anfordern oder das Blob aus dem Speicher enthüllen, um es in den zehn durchzuführenden Runden (oder wie vielen Runden auch immer) der AES-Verschlüsselung (oder einer anderen Art von Verschlüsselung) zu verwenden. Diese Optimierung ermöglicht einen Zugriff auf alle zehn Schlüssel, und speichert 9 Zyklen, die ansonsten zur Erweiterung jedes einzelnen Schlüssels benötigt würden, die beim Wiederherstellen einer Domäne aus der bestimmten Region 435 des Speichers 132 gespeichert werden sollen.
  • 6A ist ein Blockschaltbild, das eine Mikroarchitektur für einen Prozessor 600 veranschaulicht, der eine Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln gemäß einer Implementierung implementiert. Insbesondere zeigt der Prozessor 600 einen In-Order-Architekturkern und eine Registerumbenennungslogik, eine Out-of-Order-Ausgabe-/Ausführungslogik zum Einfügen in einen Prozessor gemäß wenigstens einer Implementierung der Offenbarung.
  • Der Prozessor 600 weist eine Frontend-Einheit 630 auf, die an eine Ausführungsengine-Einheit 650 gekoppelt ist, und beide sind an eine Speichereinheit 670 gekoppelt. Der Prozessor 600 kann einen Kern für die Verarbeitung reduzierter Befehlssätze (Reduced Instruction Set Computing, RISC), einen Kern für die Verarbeitung komplexer Befehlssätze (Complex Instruction Set Computing, CISC), einen Kern für sehr lange Befehlswörter (Very Long Instruction Word, VLIW) oder eine hybride oder alternative Kernart aufweisen. Als eine noch andere Option kann der Prozessor 600 einen Spezialkern aufweisen, beispielsweise einen Netz- oder Kommunikationskern, eine Kompressionsengine, einen Grafikkern oder dergleichen. In einer Implementierung kann der Prozessor 600 ein Mehrkernprozessor sein oder kann Teil eines Mehrkernprozessorsystems sein.
  • Die Frontend-Einheit 630 weist eine Sprungvorhersage-Einheit 632 auf, die an eine Befehlscache-Einheit 634 gekoppelt ist, welche an einen Übersetzungspuffer (Translation Lookaside Buffer, TLB) für Befehle 636 gekoppelt ist, der wiederum an eine Befehlsabrufeinheit 638 gekoppelt ist, die an eine Dekodiereinheit 640 gekoppelt ist. Die Dekodiereinheit 640 (auch als Dekodierer bekannt) kann Befehle dekodieren und als Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Einsprungpunkte, Mikrobefehle, andere Befehle oder andere Steuersignale generieren, die anhand der ursprünglichen Befehle dekodiert werden oder die ursprünglichen Befehle in anderer Weise wiedergeben oder von den ursprünglichen Befehlen abgeleitet sind. Der Dekodierer 640 kann unter Verwendung von verschiedenen Mechanismen implementiert sein. Beispiele für geeignete Mechanismen umfassen, ohne jedoch hierauf beschränkt zu sein, Nachschlagetabellen, Hardware-Implementierungen, programmierbare logische Anordnungen (Programmable Logic Arrays, PLAs), Festwertspeicher (Read-only Memories, ROMs) für Mikrocode etc. Die Befehlscache-Einheit 634 ist ferner an die Speichereinheit 670 gekoppelt. Die Dekodiereinheit 640 ist an eine Umbenennungs-/Zuweisungseinheit 652 in der Ausführungsengine-Einheit 650 gekoppelt.
  • Die Ausführungsengine-Einheit 650 weist die Umbenennungs-/Zuweisungseinheit 652 auf, die an eine Rückordnungseinheit 654 und an einen Satz von einer oder mehreren Planereinheit(en) 656 gekoppelt ist. Die Planereinheit(en) 656 repräsentiert (repräsentieren) eine beliebige Anzahl von unterschiedlichen Planerschaltungen, einschließlich Reservierungsstationen (RS), ein zentrales Befehlsfenster usw. Die Planereinheit(en) 656 ist (sind) an die physische(n) Registersatz-Einheit(en) 658 gekoppelt. Jede der physischen Registersatz-Einheiten 658 repräsentiert ein oder mehrere physische Registersätze, von denen verschiedene ein oder mehrere unterschiedliche Datentypen speichern, beispielsweise skalare Ganzzahl, skalarer Gleitkommawert, gepackte Ganzzahl, gepackter Gleitkommawert, Vektorganzzahl, Vektorgleitkommawert, usw., Status (z. B. einen Befehlszeiger, bei dem es sich um die Adresse des nächsten auszuführenden Befehls handelt) usw. Die physische(n) Registersatz-Einheit(en) 658 wird (werden) von der Rückordnungseinheit 654 überlappt, um verschiedene Arten und Weisen zu veranschaulichen, auf die eine Registerumbenennung und eine Out-of-Order-Ausführung implementiert sein können (z. B. unter Verwendung von (einem oder mehreren) Neuordnungspuffern und (einem oder mehreren) Rückordnungsregistersätzen; unter Verwendung von (einer oder mehreren) zukünftigen Dateien, (einem oder mehreren) historischen Puffern und (einem oder mehreren) Rückordnungsregistersätzen; unter Verwendung von Register-Maps und eines Registerpools.
  • Allgemein können die Architekturregister von der Außenseite des Prozessors oder aus Programmiererperspektive sichtbar sein. Die Register sind nicht auf irgendeinen bekannten bestimmten Schaltungstyp beschränkt. Mehrere unterschiedliche Arten von Registern sind geeignet, sofern diese in der Lage sind, Daten wie hier beschrieben zu speichern und bereitzustellen. Beispiele für geeignete Register umfassen, ohne jedoch hierauf beschränkt zu sein, dedizierte physische Register, unter Verwendung der Registerumbenennung dynamisch zugewiesene physische Register, Kombinationen aus dedizierten und dynamisch zugewiesenen physischen Registern etc. Die Rückordnungseinheit 654 und die physische(n) Registersatz-Einheit(en) 658 sind an den (die) Ausführungscluster 660 gekoppelt. Der (Die) Ausführungscluster 660 weist (weisen) einen Satz von einer oder mehreren Ausführungseinheiten 662 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 664 auf. Die Ausführungseinheiten 662 können verschiedene Operationen (z. B. Verschiebungen, Additionen, Subtraktionen, Multiplikationen) durchführen und auf verschiedene Datentypen (z. B. skalarer Gleitkommawert, gepackte Ganzzahl, gepackter Gleitkommawert, Vektorganzzahl, Vektorgleitkommawert) wirken.
  • Zwar können einige Implementierungen eine Anzahl von Ausführungseinheiten aufweisen, die für spezifische Funktionen oder Sätze von Funktionen vorgesehen sind, jedoch können andere Implementierungen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die alle Funktionen durchführen, aufweisen. Die Planereinheit(en) 656, die physische(n) Registersatz-Einheit(en) 658 und der (die) Ausführungscluster 660 werden als möglicherweise mehrfach vorhanden gezeigt, weil bestimmte Implementierungen getrennte Pipelines für bestimmte Arten von Daten/Operationen erzeugen (z. B. eine skalare Ganzzahl-Pipeline, eine Pipeline für skalare Gleitkommawerte/gepackte Ganzzahlen/gepackte Gleitkommawerte/Vektorganzzahlen/Vektorgleitkommawerte und/oder eine Speicherzugriffspipeline, die jeweils eine eigene Planereinheit, physische Registersatz-Einheit und/oder Ausführungscluster aufweisen - und im Fall einer separaten Speicherzugriffspipeline sind bestimmte Implementierungen implementiert, bei denen nur der Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 664 aufweist). Ferner sei daraufhingewiesen, dass in den Fällen, in denen separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines als Out-of-Order-Ausgabe-/Ausführungspipeline und der Rest als In-Order-Pipeline ausgeführt sein kann (können).
  • Der Satz von Speicherzugriffseinheiten 664 ist an die Speichereinheit 670 gekoppelt, die einen Daten-Prefetcher 680, eine Daten-TLB-Einheit 672, eine Datencache-Einheit (Data Cache Unit, DCU) 674 und eine Level-2 (L2)-Cache-Einheit 676 aufweisen kann, um nur einige Beispiele zu nennen. In einigen Implementierungen ist die DCU 674 auch als erster First-Level-Datencache (L1-Cache) bekannt. Die DCU 674 kann mehrere ausstehende Cache-Fehltreffer abwickeln und fortfahren, eingehende Speicher- und Ladevorgänge zu bedienen. Sie unterstützt außerdem das Aufrechterhalten der Cache-Kohärenz. Die Daten-TLB-Einheit 672 ist ein Cache, der verwendet wird, um die virtuelle Adressumsetzungsgeschwindigkeit durch Abbilden virtueller und physikalischer Adressräume zu verbessern. In einer beispielhaften Implementierung können die Speicherzugriffseinheiten 664 eine Ladeeinheit, eine Speicheradresseinheit und eine Speicherdateneinheit aufweisen, wobei jede dieser Einheiten an die Daten-TLB-Einheit 672 in der Speichereinheit 670 gekoppelt ist. Die L2-Cache-Einheit 676 kann an einen oder mehrere andere Cache-Level und letztendlich an einen Hauptspeicher gekoppelt sein.
  • In einer Implementierung werden vom Daten-Prefetcher 680 spekulativ Daten in die DCU 674 geladen/vorab abgerufen („Prefetch“), indem automatisch vorhergesagt wird, welche Daten ein Programm als nächstes nutzen wird. Das Vorabrufen kann sich darauf beziehen, dass Daten, die an einem Speicherort (z. B. einer Position) einer Speicherhierarchie (z. B. Caches oder Speicher tieferliegender Ebenen) gespeichert sind, an einen Speicherort einer höheren Ebene übertragen werden, der näher (z. B. eine geringere Zugriffslatenz aufweisend) am Prozessor liegt, bevor die Daten tatsächlich vom Prozessor angefordert werden. Insbesondere kann sich das Vorabrufen auf den frühen Abruf von Daten aus einem der Caches/Speicher einer tieferliegenden Ebene in einen Datencache und/oder Prefetch-Puffer beziehen, bevor der Prozessor eine Anforderung für die zurückgegebenen spezifischen Daten ausgibt.
  • Der Prozessor 600 kann einen oder mehrere Befehlssätze unterstützen (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt worden sind); den MIPS-Befehlssatz von Imagination Technologies aus Kings Langley, Hertfordshire (GB); den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings aus Sunnyvale, Kalifornien).
  • An dieser Stelle sei angemerkt, dass der Kern ein Multithreading (das Ausführen von zwei oder mehreren parallelen Sätzen von Operationen oder Programmfäden) unterstützen kann und dies auf verschiedene Art und Weise realisieren kann, einschließlich zeitscheibenbasiertes Multithreading, simultanes Multithreading (bei dem ein einzelner physischer Kern für jeden der Programmfäden, die dieser physische Kern gleichzeitig verarbeitet, einen logischen Kern bereitstellt) oder eine Kombination davon (z. B. zeitscheibenbasiertes Abrufen und Dekodieren und anschließendes simultanes Multithreading wie beispielsweise bei der Intel® Hyperthreading-Technologie).
  • Auch wenn die Registerumbenennung im Zusammenhang mit der Out-of-Order-Ausführung beschrieben wird, versteht es sich, dass die Registerumbenennung auch in einer In-Order-Architektur verwendet werden kann. Auch wenn die dargestellte Implementierung des Prozessors getrennte Befehls- und Datencache-Einheiten und eine gemeinsam genutzte L2-Cache-Einheit aufweist, können alternative Implementierungen einen einzelnen internen Cache für beides, Befehle und Daten, aufweisen, wie beispielsweise einen internen Level-1 (L1)-Cache oder mehrere Ebenen von internem Cache. In einigen Implementierungen kann das System eine Kombination aus einem internen Cache und einem externen Cache aufweisen, der außerhalb des Kerns und/oder Prozessors liegt. Alternativ kann der gesamte Cache außerhalb des Kerns und/oder Prozessors liegen.
  • 6B ist ein Blockschaltbild, das eine In-Order-Pipeline und eine registerumbenennende Out-of-Order-Ausgabe-/Ausführungspipeline veranschaulicht, die durch den Prozessor 600 aus 6A gemäß einigen Implementierungen der Offenbarung implementiert sind. Die in 6B mit einer durchgehenden Linie gekennzeichneten Felder veranschaulichen eine In-Order-Pipeline 601, während die mit einer gestrichelten Linie gekennzeichneten Felder eine registerumbenennende Out-of-Order-Ausgabe-/Ausführungspipeline 603 veranschaulichen. In 6B weisen die Pipelines 601 und 603 eine Abrufstufe 602, eine Längendekodierstufe 604, eine Dekodierstufe 606, eine Zuweisungsstufe 608, eine Umbenennungsstufe 610, eine Zeitplanungsstufe (auch Versandstufe oder Ausgabestufe genannt) 612, eine Registerlese-/Speicherlesestufe 614, eine Ausführungsstufe 616, eine Rückschreibe-/Speicherschreibstufe 618, eine Ausnahmebehandlungsstufe 622 und eine Übergabestufe 624 auf. In einigen Implementierungen kann die Reihenfolge der Stufen 602-624 von der dargestellten Reihenfolge abweichen und ist nicht auf die in 6B gezeigte spezifische Reihenfolge beschränkt.
  • 7 zeigt ein Blockschaltbild der Mikroarchitektur für einen Prozessor 700, die Logikschaltungen eines Prozessors oder einer integrierten Schaltung aufweist, der/die eine Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln gemäß einer Implementierung der Offenbarung implementiert. In einigen Implementierungen kann ein Befehl gemäß einer Implementierung implementiert sein, um auf Datenelemente zu wirken, die eine Byte-, Wort-, Doppelwort-, Vierwort-Größe etc. aufweisen, ebenso wie auf Datentypen wie etwa einfach und doppelt genaue Ganzzahlen und Gleitkomma-Datentypen. In einer Implementierung ist das In-Order-Frontend 701 der Teil des Prozessors 700, der auszuführende Befehle abruft und diese darauf vorbereitet, später in der Prozessorpipeline verwendet zu werden. Die Implementierungen der Seitenhinzufügungen und des Kopierens von Inhalten können im Prozessor 700 implementiert sein.
  • Das Frontend 701 kann mehrere Einheiten aufweisen. In einer Implementierung ruft der Befehlsprefetcher 716 vorab Befehle aus dem Speicher und führt diese einem Befehlsdekodierer 718 zu, der diese seinerseits dekodiert oder interpretiert. Beispielsweise dekodiert, in einer Implementierung, der Dekodierer einen abgerufenen Befehl in eine oder mehrere Operationen, die als „Mikrobefehle“ oder „Mikrooperationen“ bezeichnet werden (auch Mikro-Ops oder µOps genannt) und von der Maschine ausgeführt werden können. In anderen Implementierungen analysiert der Dekodierer den Befehl in einen Opcode und entsprechende Daten- und Steuerfelder, die von der Mikroarchitektur verwendet werden, um Operationen gemäß einer Implementierung durchzuführen. In einer Implementierung nimmt der Verfolgungscache 730 dekodierte µOps und assembliert diese in programmgeordnete Sequenzen oder Ablaufverfolgungen in der auszuführenden µOp-Warteschlange 734. Wenn der Verfolgungscache 730 einen komplexen Befehl vorfindet, stellt der Mikrocode-ROM (oder -RAM) 732 die benötigten µOps bereit, um die Operation abzuschließen.
  • Einige Befehle werden in eine einzelne Mikro-Op konvertiert, wohingegen andere mehrere Mikro-Ops benötigen, um die gesamte Operation abzuschließen. In einer Implementierung, falls mehr als vier Mikro-Ops benötigt werden, um einen Befehl abzuschließen, greift der Dekodierer 718 auf den Mikrocode-ROM 732 zu, um den Befehl zu verarbeiten. Bei einer Implementierung kann ein Befehl in eine kleine Anzahl von Mikro-Ops zur Verarbeitung an dem Befehlsdekodierer 718 dekodiert werden. In einer anderen Implementierung kann ein Befehl im Mikrocode-ROM 732 gespeichert werden, sollte eine Anzahl von Mikro-Ops zur Realisierung der Operation erforderlich sein. Der Verfolgungscache 730 bezieht sich auf eine Eintrittspunkt-PLA (programmierbare logische Anordnung) zum Bestimmen eines korrekten Mikrobefehlszeigers zum Lesen der Mikrocodesequenzen, um einen oder mehrere Befehle gemäß einer Implementierung aus dem Mikrocode-ROM 732 auszulesen. Nachdem der Mikrocode-ROM 732 die Sequenzierung von Mikro-Ops für einen Befehl beendet hat, nimmt das Frontend 701 der Maschine das Abrufen von Mikro-Ops aus dem Verfolgungscache 730 wieder auf.
  • Die Out-of-Order-Ausführungsengine 703 befindet sich da, wo die Befehle zur Ausführung vorbereitet werden. Die Out-of-Order-Ausführungslogik weist eine Anzahl von Puffern zum Glätten und Neuordnen des Flusses von Befehlen auf, um die Leistung zu optimieren, während diese die Pipeline entlanglaufen und zur Ausführung geplant werden. Die Zuweisungslogik weist die Maschinenpuffer und Ressourcen zu, die jede µ-op zur Ausführung benötigt. Die Registerumbenennungslogik benennt Logikregister auf Einträge in einem Registersatz um. Der Zuweiser weist außerdem einen Eintrag für jede µ-op in einer der beiden µ-op-Warteschlangen zu, eine für Speicheroperationen und eine für Nicht-Speicher-Operationen, vor den Befehlsplanern: Speicherplaner, schneller Planer 702, langsamer/allgemeiner Gleitkommaplaner 704 und einfacher Gleitkommaplaner 706. Die µOp-Planer 702, 704, 706 bestimmen, wann eine µOp zur Ausführung bereit ist, basierend auf der Bereitschaft ihrer abhängigen Eingangsregister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die die µOps benötigen, um ihre Operation abzuschließen. Der schnelle Planer 702 gemäß einer Implementierung kann bei jeder Hälfte des Haupttaktzyklus planen, während die anderen Planer nur einmalig pro Hauptprozessor-Taktzyklus planen können. Die Planer entscheiden über die Versandports zum Planen von auszuführenden µOps.
  • Die Registersätze 708, 710 befinden sich zwischen den Planern 702, 704, 706 und die Ausführungseinheiten 712, 714, 716, 718, 720, 722, 724 im Ausführungsblock 711. Es gibt einen getrennten Registersatz 708, 710 für Ganzzahl- bzw. Gleitkommaoperationen. Jeder Registersatz 708, 710 gemäß einer Implementierung weist außerdem ein Umgehungsnetz auf, das gerade fertiggestellte Ergebnisse, die noch nicht in den Registersatz geschrieben wurden, umgehen oder an neue abhängige µOps weiterleiten kann. Der Ganzzahl-Registersatz 708 und der Gleitkomma-Registersatz 710 sind außerdem in der Lage, Daten miteinander auszutauschen. Bei einer Implementierung ist der Ganzzahl-Registersatz 708 in zwei getrennte Registersätze unterteilt, einen Registersatz für die geringerwertigen 32 Datenbits und einen zweiten Registersatz für die höherwertigen 32 Datenbits. Der Gleitkomma-Registersatz 710 gemäß einer Implementierung weist 128 Bit breite Einträge auf, da Gleitkommabefehle typischerweise Operanden mit einer Breite von 64 bis 128 Bits aufweisen.
  • Der Ausführungsblock 711 enthält die Ausführungseinheiten 712, 714, 716, 718, 720, 722, 724, wo die Befehle tatsächlich ausgeführt werden. Dieser Abschnitt beinhaltet die Registersätze 708, 710, die die Ganzzahl- und Gleitkomma-Datenoperandwerte speichern, welche die Mikrobefehle zur Ausführung benötigen. Der Prozessor 700 gemäß einer Implementierung besteht aus einer Anzahl von Ausführungseinheiten: Adressgenerierungseinheit (Address Generation Unit, AGU) 712, AGU 714, schnelle ALU 716, schnelle ALU 718, langsame ALU 720, Gleitkomma-ALU 712, Gleitkomma-Bewegungseinheit 714. Bei einer Implementierung führen die Gleitkomma-Ausführungsblöcke 712, 714 Gleitkomma-, MMX-, SIMD- und SSE- oder andere Operationen aus. Die Gleitkomma-ALU 712 gemäß einer Implementierung weist einen 64-Bit-durch-64-Bit-Gleitkomma-Teiler zum Ausführen von Teilungs-, Quadratwurzel- und Rest-Mikro-Ops auf. Bei Implementierungen der Offenbarung können Befehl, die einen Gleitkommawert beinhalten, mit der Gleitkomma-Hardware gehandhabt werden.
  • In einer Implementierung können die ALU-Operationen an die Ausführungseinheiten der Hochgeschwindigkeits-ALUs 716, 718 gehen. Die schnellen ALUs 716, 718 gemäß einer Implementierung können schnelle Operationen mit einer effektiven Latenz von einem halben Taktzyklus ausführen. Bei einer Implementierung gehen die meisten komplexen Ganzzahl-Operationen an die langsame ALU 720, da die langsame ALU 720 eine Ganzzahlen-Ausführungshardware für Operationen mit längerer Latenz aufweist, beispielsweise einen Multiplizierer, Verschiebungen, Kennzeichenlogik und Verzweigungsverarbeitung. Speicherlast/Speicher-Operationen werden von den AGUs 722, 724 ausgeführt. Bei einer Implementierung werden die Ganzzahlen-ALUs 716, 718, 720 im Zusammenhang mit dem Durchführen von Ganzzahlenoperationen auf 64-Bit-Datenoperanden beschrieben. In alternativen Implementierungen können die ALUs 716, 718, 720 implementiert sein, um verschiedene Datenbits zu unterstützen, einschließlich 16, 32, 128, 256 etc. In ähnlicher Weise können die Gleitkommaeinheiten 722, 724 implementiert sein, um eine Reihe von Operanden zu unterstützen, die Bits mit verschiedener Breiten aufweisen. Bei einer Implementierung können die Gleitkommaeinheiten 722, 724 auf 128 Bit breite gepackte Datenoperanden in Verbindung mit SIMD- und Multimedia-Befehle wirken.
  • In einer Implementierung versenden die µOp-Planer 702, 704, 706 abhängige Operationen, bevor die Ausführung der übergeordneten Last abgeschlossen ist. Da µOps im Prozessor 700 spekulativ geplant und ausgeführt werden, weist der Prozessor 700 außerdem Logik zum Abwickeln von Speicher-Misses auf. Falls eine Datenlast im Datencache fehlt, kann es in der Pipeline abhängige In-Flight-Operationen geben, die den Planer mit temporär fehlerhaften Daten zurückgelassen haben. Ein Wiedergabemechanismus verfolgt Daten, die fehlerhafte Daten verwenden, und führt diese erneut aus. Nur die abhängigen Operationen müssen erneut wiedergegeben werden, und die unabhängigen dürfen abgeschlossen werden. Der Planer- und Wiedergabe-Mechanismus gemäß einer Implementierung eines Prozessors ist außerdem dafür ausgelegt, Befehlssequenzen für Textzeichenfolge-Vergleichsoperationen aufzufangen.
  • Der Begriff „Register“ kann sich auf die Datenspeicherorte des bordeigenen Prozessors beziehen, die als Teil von Befehlen zum Identifizieren von Operanden verwendet werden. Mit anderen Worten können Register diejenigen sein, die (aus Programmiererperspektive) von außerhalb des Prozessors verwendbar sind. Allerdings sollten die Register gemäß einer Implementierung von der Bedeutung her nicht auf einen bestimmten Schaltungstyp beschränkt sein. Vielmehr ist ein Register gemäß einer Implementierung in der Lage, Daten zu speichern und bereitzustellen und die hier beschriebenen Funktionen durchzuführen. Die hier beschriebenen Register können durch Schaltungen in einem Prozessor implementiert sein, unter Verwendung einer beliebigen Anzahl von unterschiedlichen Verfahren, beispielsweise dedizierte physische Register, unter Verwendung der Registerumbenennung dynamisch zugewiesene physische Register, Kombinationen von dedizierten und dynamisch zugewiesenen physischen Registern etc. In einer Implementierung speichern Ganzzahlenregister 32-Bit-Ganzzahlendaten. Ein Registersatz gemäß einer Implementierung enthält außerdem acht Multimedia-SIMD-Register für gepackte Daten.
  • Im Rahmen der Erörterungen hierin verstehen sich die Register als Datenregister, die dafür ausgelegt sind, gepackte Daten aufzunehmen, beispielsweise 64 Bit breite MMX™-Register (in einigen Instanzen auch als ,mm‘-Register bezeichnet) in Mikroprozessoren mit der MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien. Diese MMX-Register, verfügbar in Ganzzahl- und Gleitkommaform, können mit gepackten Datenelementen arbeiten, die SIMD- und SSE-Befehle begleiten. In ähnlicher Weise können 128 Bit breite XMM-Register, die sich auf SSE2, SSE3, SSE4 oder weitergehende (allgemein als „SSEx“ bezeichnete) Technologien beziehen, außerdem verwendet werden, um solche gepackten Datenoperanden aufzunehmen. In einer Implementierung brauchen die Register, beim Speichern gepackter Daten und ganzzahliger Daten, nicht zwischen den zwei Datentypen zu unterscheiden. In einer Implementierung sind Ganzzahlen und Gleitkommawerte entweder in demselben Registersatz oder in unterschiedlichen Registersätzen enthalten. Des Weiteren können, in einer Implementierung, Gleitkommawerte und ganzzahlige Daten in unterschiedlichen Registern oder in denselben Registern gespeichert sein.
  • Implementierungen können in vielen unterschiedlichen Systemtypen implementiert sein. Es wird nun Bezug genommen auf 8; gezeigt wird ein Blockschaltbild eines Mehrprozessorsystems 800, das Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln gemäß einer Implementierung implementieren kann. Wie in 8 gezeigt, ist das Mehrprozessorsystem 800 ein Punkt-zu-Punkt-Verbindungssystem und weist einen ersten Prozessor 870 und einen zweiten Prozessor 880 auf, die über eine Punkt-zu-Punkt-Verbindung 850 gekoppelt sind. Wie in 8 gezeigt, kann jeder der Prozessoren 870 und 880 ein Mehrkernprozessor mit einem ersten und einem zweiten Prozessorkern sein (d. h. die Prozessorkerne 874a und 874b und die Prozessorkerne 884a und 884b), auch wenn die Prozessoren potenziell viel mehr Kerne aufweisen können. Auch wenn hier nur zwei Prozessoren 870, 880 gezeigt werden, ist davon auszugehen, dass der Schutzbereich der Offenbarung nicht hierauf beschränkt ist. In anderen Implementierungen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 870 und 880 werden mit integrierten Speichersteuerungseinheiten (Integrated Memory Controllers, IMCs) 872 bzw. 882 gezeigt. Der Prozessor 870 weist außerdem als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt (P-P)-Schnittstellen 876 und 888 auf; in ähnlicher Weise weist der zweite Prozessor 880 P-P-Schnittstellen 886 und 888 auf. Die Prozessoren 870, 880 können Informationen über eine Punkt-zu-Punkt (P-P)-Schnittstelle 850 unter Verwendung von P-P-Schnittstellenschaltungen 878, 888 austauschen. Wie in 8 gezeigt, koppeln die IMCs 872 und 882 die Prozessoren an die jeweiligen Speicher, nämlich einen Speicher 832 und einen Speicher 834, die Teile des lokal mit den jeweiligen Prozessoren verbundenen Hauptspeichers sein können.
  • Die Prozessoren 870, 880 können über individuelle P-P-Schnittstellen 852, 854 Informationen mit einem Chipsatz 890 austauschen, wobei Punkt-zu-Punkt-Schnittstellenschaltungen 876, 894, 886, 898 verwendet werden. Der Chipsatz 890 kann auch über eine Hochleistungs-Grafikschnittstelle 838 Informationen mit einer Hochleistungs-Grafikschaltung 839 austauschen.
  • Der Chipsatz 890 kann über eine Schnittstelle 896 an einen ersten Bus 816 gekoppelt sein. In einer Implementierung kann der erste Bus 816 ein Peripheriegeräteverbindungsbus (Peripheral Component Interconnect, PCI) oder ein Bus wie beispielsweise ein PCI Express-Bus oder ein Verbindungsbus sein, wenngleich der Schutzbereich der Offenbarung nicht hierauf beschränkt ist.
  • Es wird nun Bezug genommen auf 9; gezeigt wird ein Blockschaltbild eines dritten Systems 900, das Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln gemäß einer Implementierung der Offenbarung implementieren kann. Gleiche Elemente in 8 und 9 tragen gleiche Bezugszeichen, und bestimmte Aspekte von 9 wurden in 8 ausgelassen, um zu verhindern, dass andere Aspekte von 9 verdeckt werden.
  • 9 veranschaulicht, dass die Prozessoren 970, 980 einen integrierten Speicher und eine E/A-Steuerungslogik (Control Logic, „CL“) 972 bzw. 992 aufweisen können. Bei wenigstens einer Implementierung kann die CL 972, 982 integrierte Speichersteuerungseinheiten wie die hier beschriebenen aufweisen. Darüber hinaus kann die CL 972, 992 auch E/A-Steuerungslogik aufweisen. 9 veranschaulicht, dass die Speicher 932, 934 an die CL 972, 992 gekoppelt sind und dass die E/A-Vorrichtungen 914 ebenfalls an die Steuerungslogik 972, 992 gekoppelt sind. Bisherige E/A-Vorrichtungen 915 sind an den Chipsatz 990 gekoppelt.
  • 10 ist ein beispielhaftes Ein-Chip-System (System-on-Chip, SoC) 1000, das einen oder mehrere der Kerne 1002A ... 1002N umfassen kann, die Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln implementieren können. Andere Systementwürfe und Konfigurationen nach dem Stand der Technik für Laptops, Desktops, Handheld-PCs, persönliche digitale Assistenten (PDAs), Arbeitsstationen (Engineering Workstations, EWS), Server, Netzvorrichtungen, Netzknoten, Switches, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienwiedergabegeräte, Handheld-Vorrichtungen und verschiedene andere elektronische Vorrichtungen sind ebenfalls geeignet. Im Allgemeinen ist eine enorme Vielzahl von verschiedenen Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder andere Ausführungslogik wie hier offenbart aufzunehmen, geeignet.
  • In dem beispielhaften SoC 1000 aus 10 sind mit einer gestrichelten Linie gekennzeichnete Felder Merkmale auf fortschrittlicheren SoCs. Eine oder mehrere Verbindungseinheiten 1002 können gekoppelt sein an: einen Anwendungsprozessor 1017, der einen Satz von einem oder mehreren Kernen 1002A-N und eine (mehrere) gemeinsam genutzte(n) Cache-Einheit(en) 1006 aufweist; eine Systemagent-Einheit 1010; (eine) Bussteuerungseinheit(en) 1016; (eine) integrierte Speichersteuerungseinheit(en) 1014; einen Satz von einem oder mehrere Coprozessoren 1020, der integrierte Grafiklogik 1008 aufweisen kann, einen Bildprozessor 1024 zum Bereitstellen einer Standbild- und/oder Videokamerafunktionalität, einen Audioprozessor 1026 zum Bereitstellen einer Hardware-Audiobeschleunigung und einen Videoprozessor 1028 zum Bereitstellen einer Videocodier-/-dekodierbeschleunigung; eine statische Direktzugriffsspeichereinheit (Static Random Access Memory, SRAM) 1030; eine Direktspeicherzugriffseinheit (Direct Memory Access, DMA) 1032; und eine Anzeigeeinheit 1040 für das Ankoppeln an eine oder mehrere externe Anzeigen.
  • Weiter geht es mit 11; dargestellt ist die Implementierung eines Entwurfs für ein Ein-Chip-System (System-on-Chip, SoC)-Entwurfs, das Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln gemäß Implementierungen der Offenbarung implementieren kann. Als ein veranschaulichendes Beispiel ist das SoC 1100 in Benutzer-Equipment (User Equipment, UE) angeordnet. In einer Implementierung bezieht sich die UE auf jede Vorrichtung, die von einem Endbenutzer zu verwenden ist, um zu kommunizieren, beispielsweise ein handgehaltenes Telefon, ein Smartphone, ein Tablet, ein ultradünnes Notebook, ein Notebook mit Breitbandadapter oder irgendeine andere ähnliche Kommunikationsvorrichtung. Ein UE kann sich mit einer Basisstation oder einem Knoten verbinden, was naturgemäß einer Mobilstation (MS) in einem GSM-Netz entsprechen kann. Die Implementierungen der Seitenhinzufügungen und des Kopierens von Inhalten können im SoC 1100 implementiert sein.
  • Hier weist das SoC 1100 2 Kerne auf - 1106 und 1107. Ähnlich wie bei der vorstehenden Erörterung, können die Kerne 1106 und 1107 einer Befehlssatzarchitektur (Instruction Set Architecture, ISA) entsprechen, beispielsweise einem Prozessor mit Intel® Architecture Core™, einem Advanced Micro Devices, Inc. (AMD)-Prozessor, einem MIPSbasierten Prozessor, einem ARM-basierten Prozessordesign oder einem Kunden davon, ebenso wie deren Lizenznehmer oder Anwender. Die Kerne 1106 und 1107 sind an die Cache-Steuerung 1108 gekoppelt, die mit einer Busschnittstelleneinheit 1109 und einem L2-Cache 1110 verknüpft ist, um mit anderen Teilen des Systems 1100 zu kommunizieren. Die Zwischenverbindung 1111 weist eine On-Chip-Zwischenverbindung auf, beispielsweise IOSF, AMBA oder andere vorstehend erörterte Zwischenverbindungen, die einen oder mehrere Aspekte der beschriebenen Offenbarung implementieren können.
  • In einer Implementierung kann sich die SDRAM-Steuerung 1140 über den Cache 1110 mit der Zwischenverbindung 1111 verbinden. Die Zwischenverbindung 1111 stellt Kommunikationskanäle für die anderen Komponenten bereit, wie etwa ein Teilnehmeridentitätsmodul (Subscriber Identity Module, SIM) 1130, um eine Schnittstellenverbindung zu einer SIM-Karte herzustellen, ein Boot-ROM 1135, um Boot-Code zur Ausführung durch die Kerne 1106 und 1107 aufzunehmen, um das SoC 1100 zu initialisieren und hochzufahren, eine SDRAM-Steuerung 1140, um eine Schnittstellenverbindung zu einem externem Speicher (z. B. DRAM 1160) herzustellen, eine Flash-Steuerung 1145, um eine Schnittstellenverbindung zu nichtflüchtigem Speicher (z. B. Flash 1165) herzustellen, eine Peripheriesteuerung 1150 (z. B. eine serielle Peripherieschnittstelle (Serial Peripheral Interface)), um eine Schnittstellenverbindung zu Peripheriegeräten herzustellen, Videocodecs 1120 und eine Videoschnittstelle 1125, um Eingaben (z. B. berührungsaktivierte Eingaben) anzuzeigen und zu empfangen, eine GPU 1115, um grafikbezogene Berechnungen durchzuführen, etc. Jede dieser Schnittstellen kann Aspekte der hier beschriebenen Implementierungen beinhalten.
  • Darüber hinaus veranschaulicht das System Peripheriegeräte für die Kommunikation, beispielsweise ein Bluetooth®-Modul 1170, ein 3 G-Modem 1175, GPS 1180 und Wi-Fi® 1185. Wie vorstehend ausgeführt, ist zu beachten, dass ein UE eine Funklösung für die Kommunikation aufweist. Infolgedessen sind unter Umständen nicht alle dieser peripheren Kommunikationsmodule enthalten. Allerdings sollte in einer UE eine Form von Funklösung für die externe Kommunikation enthalten sein.
  • 12 ist ein Blockschaltbild mit Verarbeitungskomponenten für das Ausführen von Befehlen,das eine Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln implementiert. Wie gezeigt, weist das Computersystem 1200 Codedatenspeicher 1202, eine Abrufschaltung 1204, eine Dekodierschaltung 1206, eine Ausführungsschaltung 1208, Register 1210, Speicher 1212 und eine Rückordnungs- oder Übergabeschaltung 1214 auf. Im Betrieb soll ein Befehl (z. B. BIND, UNWRAP) von einer Abrufschaltung 1204 aus dem Codedatenspeicher 1202 abgerufen werden, was, ohne Einschränkung, einen Cachespeicher, einen On-Chip-Speicher, einen Speicher auf demselben Halbleiterplättchen wie der Prozessor, ein Befehlsregister, ein allgemeines Register oder Systemspeicher umfassen kann. In einer Ausführungsform kann der Befehl ein Format aufweisen, das dem des Befehls 1400 in 14 ähnelt. Nach dem Abrufen des Befehls aus dem Codedatenspeicher 1202 kann die Dekodierschaltung 1206 den abgerufenen Befehl dekodieren, was auch das Analysieren der verschiedenen Felder des Befehls einschließt. Nach dem Dekodieren des abgerufenen Befehls soll die Ausführungsschaltung 1208 den dekodierten Befehl ausführen. Beim Durchführen des Schrittes der Befehlsausführung kann die Ausführungsschaltung 1208 Daten aus den/in die Register(n) 1210 und aus dem/in den Speicher 1212 auslesen/schreiben. Die Register 1210 können, ohne Einschränkung, ein Datenregister, ein Befehlsregister, ein Vektorregister, ein Maskenregister, ein allgemeines Register, einen On-Chip-Speicher, einen Speicher auf demselben Halbleiterplättchen wie der Prozessor oder einen Speicher in demselben Paket wie der Prozessor aufweisen. Der Speicher 1212 kann, ohne Einschränkung, einen On-Chip-Speicher, einen Speicher auf demselben Halbleiterplättchen wie der Prozessor, einen Speicher in demselben Paket wie der Prozessor, einen Cachespeicher oder Systemspeicher aufweisen. Nachdem die Ausführungsschaltung den Befehl ausgeführt hat, kann die Rückordnungs- oder Übergabeschaltung 1214 den Befehl rückordnen, wodurch sichergestellt wird, dass die Ausführungsergebnisse an ihre Ziele geschrieben werden oder geschrieben worden sind und Ressourcen zur späteren Nutzung freigesetzt oder freigegeben werden.
  • 13A ist ein Flussdiagramm eines beispielhaften Verfahrens 1320, das von einem Prozessor ausgeführt werden soll, um einen BIND-Befehl zum Verschlüsseln einer Gruppe von Daten als eingehülltes binäres Großobjekt (Binary Large Object, Blob) auszuführen. Nach dem Starten des Prozesses soll eine Abrufschaltung bei Block 1322 den BIND-Befehl aus einem Codedatenspeicher abrufen. Bei dem optionalen Block 1324 kann eine Dekodierschaltung den abgerufenen BIND-Befehl dekodieren. Bei Block 1326 soll eine Ausführungsschaltung den BIND-Befehl ausführen, um eine Gruppe von Daten als ein eingehülltes binäres Großobjekt (Binary Large Object, Blob) zu verschlüsseln, z. B. wie unter Bezugnahme auf Block 310 im Verfahren 300 aus 3 erläutert.
  • 13B ist ein Flussdiagramm eines beispielhaften Verfahrens 1330, das von einem Prozessor durchgeführt werden soll, um einen UNWAP-Befehl zum Entschlüsseln eines eingehüllten Blobs in einzelne Bestandteile einer Gruppe von Daten auszuführen. Nach dem Starten des Prozesses soll eine Abrufschaltung bei Block 1332 den UNWRAP-Befehl aus einem Codedatenspeicher abrufen. Bei dem optionalen Block 1334 kann eine Dekodierschaltung den abgerufenen UNWRAP-Befehl dekodieren. Bei Block 1336 soll eine Ausführungsschaltung den UNWRAP-Befehl ausführen, um ein eingehülltes Blob in einzelne Bestandteile einer Gruppe von Daten zu entschlüsseln, z. B. wie unter Bezugnahme auf die Blöcke 330-360 des Verfahrens 300 aus 3 erläutert.
  • 14 ist ein Blockschaltbild, das ein beispielhaftes Format für hier offenbarte Befehle 1400, die Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln implementieren, veranschaulicht. Bei dem Befehl 1400 kann es sich um BIND oder UNWRAP handeln. Die Parameter im Format des Befehls 1400 kann für BIND oder UNWRAP verschieden sein. Daher sind einige der Parameter durch gestrichelte Linien als optional dargestellt. Wie gezeigt, weist der Befehl 1400 eine Seitenadresse 1402, einen optionalen Opcode 1404, ein optionales Attribut 1406, ein optionales sicheres Statusbit 1408 und ein optionales gültiges Statusbit 1410 auf.
  • 15 zeigt eine Diagrammdarstellung einer Engine in der beispielhaften Form eines Computersystems 1500 mit einem Satz von Befehlen, der die Engine veranlasst, Hardwareunterstützung für eine Kryptografie-Engine mit mehreren Schlüsseln gemäß einem oder mehreren der hier erörterten Verfahren zu implementieren. In alternativen Implementierungen kann die Maschine mit anderen Maschinen in einem Ortsnetz (Local Area Network, LAN), einem Intranet, einem Extranet oder im Internet verbunden (z. B. vernetzt) werden. Die Maschine kann in der Eigenschaft einer Server- oder einer Client-Vorrichtung in einer Client-Server-Netzumgebung oder als Peer-Maschine in einer Peer-to-Peer (oder verteilten) Netzumgebung betrieben werden. Die Maschine kann ein PersonalComputer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelefon, ein Web-Gerät, ein Server, ein(e) Netzrouter, -Switch oder - Bridge oder eine beliebige Maschine sein, die in der Lage ist, eine Reihe von Befehlen, die von der betreffenden Maschine durchzuführende Aktionen definieren, (sequenziell oder in anderer Weise) auszuführen. Ferner soll, auch wenn nur eine einzelne Maschine dargestellt ist, der Ausdruck „Maschine“ auch dahingehend verstanden werden, dass er jegliche Ansammlung von Maschinen einschließt, die einzeln oder gemeinsam eine Reihe (oder mehrere Reihen) von Befehlen ausführen, um eines oder mehrere der hier erörterten Verfahren durchzuführen. Die Implementierungen der Seitenhinzufügungen und des Kopierens von Inhalten können im Computersystem 1500 implementiert sein.
  • Das Computersystem 1500 weist eine Verarbeitungsvorrichtung 1502, Hauptspeicher 1504 (z. B. Flash-Speicher, dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) (wie etwa synchronen DRAM (SDRAM) oder DRAM (RDRAM) etc.), statischen Speicher 1506 (z. B. Flash-Speicher, statischen Direktzugriffsspeicher (SRAM) etc.) und eine Datenspeichervorrichtung 1516 auf, die über einen Bus 1508 miteinander kommunizieren.
  • Die Verarbeitungsvorrichtung 1502 steht für eine oder mehrere universelle Verarbeitungsvorrichtungen wie etwa einen Mikroprozessor, eine zentrale Verarbeitungseinheit oder dergleichen. Insbesondere kann die Verarbeitungsvorrichtung ein CISC (Complex Instruction Set Computing, Rechnen mit komplexem Befehlssatz)-Mikroprozessor, ein RISC (Reduced Instruction Set Computing, Rechnen mit reduziertem Befehlssatz)-Mikroprozessor, ein VLIE (Very Long Instruction Word, langes Befehlswort)-Mikroprozessor oder ein Prozessor, der andere Befehlssätze implementiert, oder Prozessoren, die eine Kombination von Befehlssätzen implementieren, sein. Die Verarbeitungsvorrichtung 1502 kann auch eine oder mehrere Spezialverarbeitungsvorrichtungen sein, beispielsweise eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC), eine feldprogrammierbare Gatteranordnung (Field Programmable Gate Array, FPGA), ein Digitalsignalprozessor (DSP), ein Netzprozessor oder dergleichen. In einer Implementierung kann die Verarbeitungsvorrichtung 1502 einen oder mehrere Prozessorkerne aufweisen. Die Verarbeitungsvorrichtung 1502 ist dafür ausgelegt, die Verarbeitungslogik 1526 auszuführen, um die hier erörterten Operationen durchzuführen.
  • In einer Implementierung kann die Verarbeitungsvorrichtung 1502 Teil eines Prozessors oder einer integrierten Schaltung sein, die die offenbarte LLC-Caching-Architektur aufweist. Alternativ kann das Computersystem 1500 andere Komponenten als hier beschrieben aufweisen. An dieser Stelle sei angemerkt, dass der Kern ein Multithreading (das Ausführen von zwei oder mehreren parallelen Sätzen von Operationen oder Programmfäden) unterstützen kann und dies auf verschiedene Art und Weise realisieren kann, einschließlich zeitscheibenbasiertes Multithreading, simultanes Multithreading (bei dem ein einzelner physischer Kern für jeden der Programmfäden, die dieser physische Kern gleichzeitig verarbeitet, einen logischen Kern bereitstellt) oder eine Kombination davon (z. B. zeitscheibenbasiertes Abrufen und Dekodieren und anschließendes simultanes Multithreading wie beispielsweise bei der Intel® Hyperthreading- Technologie).
  • Das Computersystem 1500 kann ferner eine Netzschnittstellenvorrichtung 1518 aufweisen, die kommunikativ an ein Netz 1519 gekoppelt ist. Das Computersystem 1500 kann außerdem eine Video-Anzeigevorrichtung 1510 (z. B. eine Flüssigkristallanzeige (Liquid Crystal Display, LCD) oder eine Kathodenstrahlröhre (Cathode Ray Tube, CRT)), eine alphanumerische Eingabevorrichtung 1512 (z. B. eine Tastatur), eine Cursor-Steuervorrichtung 1514 (z. B. eine Maus), eine Signalerzeugungsvorrichtung 1520 (z. B. einen Lautsprecher) oder andere periphere Vorrichtungen aufweisen. Des Weiteren kann das Computersystem 1500 eine Grafik-Verarbeitungseinheit 1522, eine Video-Verarbeitungseinheit 1528 und eine Audio-Verarbeitungseinheit 1532 aufweisen. In einer anderen Implementierung kann das Computersystem 1500 einen (nicht dargestellten) Chipsatz aufweisen, der sich auf eine Gruppe von integrierten Schaltungen, oder Chips, bezieht, die dafür ausgelegt sind, mit der Verarbeitungsvorrichtung zusammenzuarbeiten 1502 und die Kommunikation zwischen der Verarbeitungsvorrichtung 1502 und externen Vorrichtungen zu steuern. Beispielsweise kann es sich bei dem Chipsatz um einen Satz von Chips auf einer Hauptplatine handeln, der die Verarbeitungsvorrichtung 1502 mit sehr schnellen Vorrichtungen, beispielsweise Hauptspeicher 1504 und Grafiksteuerungen, verbindet und ebenso die Verarbeitungsvorrichtung 1502 mit langsameren Peripheriebussen von Peripheriegeräten, beispielsweise USB-, PCI- oder ISA-Bussen, verbindet.
  • Die Datenspeichervorrichtung 1516 kann ein computerlesbares Datenspeichermedium 1524 aufweisen, auf dem Software 1526 gespeichert ist, die eine(s) oder mehrere der hier erörterten Verfahren oder Funktionen verkörpert. Die Software 1526 kann auch vollständig oder wenigstens teilweise im Hauptspeicher 1504 als Befehle 1526 und/oder in der Verarbeitungsvorrichtung 1502 als Verarbeitungslogik vorliegen, während sie vom Computersystem 1500 ausgeführt wird, wobei der Hauptspeicher 1500 und die Verarbeitungsvorrichtung 1502 ebenfalls computerlesbare Datenspeichermedien darstellen.
  • Das computerlesbare Datenspeichermedium 1524 kann außerdem verwendet werden, um Befehle 1526 zu speichern, die die Verarbeitungsvorrichtung 1502 nutzen, und/oder eine Softwarebibliothek, die Verfahren enthält, die die vorstehenden Anwendungen aufrufen. Zwar wird das computerlesbare Datenspeichermedium 1524 in einer beispielhaften Implementierung als ein einzelnes Medium dargestellt, doch ist der Ausdruck „computerlesbares Datenspeichermedium“ dahingehend zu verstehen, dass er ein einzelnes Medium ebenso wie mehrere Medien umfassen kann (z. B. eine zentrale oder verteilte Datenbank und/oder zugehörige Caches und Server), die den einen oder die mehreren Sätze von Befehlen speichern. Der Ausdruck „computerlesbares Datenspeichermedium“ soll außerdem dahingehend verstanden werden, dass er jegliches Medium einschließt, das in der Lage ist, einen Satz von Befehlen zu speichern, zu codieren oder zu transportieren, die von der Maschine ausgeführt werden und die die Maschine veranlassen, eines oder mehrere der Verfahren der offenbarten Implementierung auszuführen. Entsprechend soll der Ausdruck „computerlesbares Datenspeichermedium“ derart verstanden werden, dass er Festkörperspeicher, optische und magnetische Medien einschließt, ohne jedoch darauf beschränkt zu sein.
  • Die folgenden Beispiele beziehen sich auf weitere Implementierungen.
  • Beispiel 1 ist ein Prozessor, umfassend: 1) eine Speichersteuerung eines Servers; und 2) eine hardwarebasierte Kryptografie-Engine, die an die Speichersteuerung gekoppelt ist, wobei die hardwarebasierte Kryptografie-Engine eine Schlüsseldatenstruktur zum Speichern mehrerer Schlüssel für entsprechende mehrere sichere Domänen umfasst, wobei jede sicherere Domäne eine andere Arbeitslast umfasst, die vom Server zu bedienen ist, wobei die hardwarebasierte Kryptografie-Engine: a) eine Anfrage zum Programmieren einer ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine empfangen soll, wobei die erste sichere Domäne eine neue Arbeitslast umfasst, die vom Server zu bedienen ist, und wobei die Anfrage erste Domäneninformationen umfasst; b) bestimmen soll, ob es einen Eintrag in der Schlüsseldatenstruktur gibt, der verfügbar ist; und c) in Reaktion auf eine Bestimmung, dass der Eintrag verfügbar ist, die ersten Domäneninformationen im Eintrag der Schlüsseldatenstruktur speichern soll.
  • In Beispiel 2, der Prozessor aus Beispiel 1, wobei die ersten Domäneninformationen einen ersten Schlüssel und eine erste Domänenkennung für die erste sichere Domäne umfassen und wobei die mehreren Schlüssel eine kryptografische Isolierung zwischen einzelnen der mehreren sicheren Domänen bereitstellen.
  • In Beispiel 3, der Prozessor aus Beispiel 1, wobei die hardwarebasierte Kryptografie-Engine einen Cache zum Speichern der Schlüsseldatenstruktur umfasst und wobei die Schlüsseldatenstruktur gemäß Cachezeilen des Caches indiziert ist, mit einer Domänenkennung einer sicheren Domäne, die einer Nummer entspricht, die mit der Cachezeile verknüpft ist.
  • In Beispiel 4, der Prozessor aus Beispiel 1, wobei, in Reaktion auf eine Bestimmung, dass kein Eintrag in der Schlüsseldatenstruktur verfügbar ist, die hardwarebasierte Kryptografie-Engine ferner: a) eine zweite sichere Domäne auswählen soll, die ausgeplant werden soll, wobei die zweite sichere Domäne in der Schlüsseldatenstruktur in einem zweiten Eintrag indiziert ist; b) unter Verwendung eines Plattformschlüssels zweite Domäneninformationen, die aus dem zweiten Eintrag für die zweite sichere Domäne abgerufen wurden, verschlüsseln soll, um ein eingehülltes binäres Großobjekt (Binary Large Object, Blob) zu generieren; und c) das eingehüllte Blob in einer bestimmten Region des Systemspeichers, die gemäß einer Domänenkennung der zweiten sicheren Domäne indiziert ist, speichern soll.
  • In Beispiel 5, der Prozessor aus Beispiel 4, wobei die hardwarebasierte Kryptografie-Engine ferner die ersten Domäneninformationen im zweiten Eintrag der Schlüsseldatenstruktur speichern soll.
  • In Beispiel 6, der Prozessor aus Beispiel 4, wobei die hardwarebasierte Kryptografie-Engine ferner: a) eine Speicherzugriffsanfrage für die zweite sichere Domäne erkennen soll; b) das eingehüllte Blob aus dem Systemspeicher auslesen soll; c) das eingehüllte Blob entschlüsseln soll, um die zweiten Domäneninformationen zu generieren; und d) auf die zweiten Domäneninformationen als eine Anfrage zum Programmieren der zweiten sicheren Domäne in die hardwarebasierte Kryptografie-Engine reagieren soll.
  • In Beispiel 7, der Prozessor aus Beispiel 4, wobei, beim Hochfahren des Servers, ein Basis-Eingabe/Ausgabe-System (Basic Input/Output System, BIOS) Reservierungsinformationen in einem Bereichsregister speichern soll, um die bestimmte Region des Systemspeichers für Hardware zu reservieren, und wobei die Reservierungsinformationen genutzt werden, um die hardwarebasierte Kryptografie-Engine zu programmieren.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der vorstehend beschriebenen strukturellen Merkmale aufweisen. Beispielsweise können alle optionalen Merkmale der vorstehend beschriebenen Prozessoren und Verfahren ebenfalls in Bezug auf ein hier beschriebenes System implementiert sein, und Besonderheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 8 ist ein Server-Computersystem, umfassend: 1) einen Prozessorkern mit einer Speichersteuerung, gekoppelt an einen Systemspeicher; und 2) eine hardwarebasierte Kryptografie-Engine, die an den Prozessorkern und die Speichersteuerung gekoppelt ist, wobei die hardwarebasierte Kryptografie-Engine eine Schlüsseldatenstruktur zum Speichern mehrerer Schlüssel für entsprechende mehrere sichere Domänen umfasst; wobei der Prozessorkern Befehle ausführen soll, um: a) eine Anfrage zum Programmieren einer ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine zu empfangen, wobei die Anfrage erste Domäneninformationen in einem ersten eingehüllten binären Großobjekt (Binary Large Object, Blob) umfasst; und b) in Reaktion auf die Anfrage und auf eine Bestimmung, dass es keinen verfügbaren Eintrag in der Schlüsseldatenstruktur gibt: c) eine zweite sichere Domäne auszuwählen, die ausgeplant werden soll, wobei die zweite sichere Domäne in der Schlüsseldatenstruktur in einem Zieleintrag indiziert ist; d) einen Schlüssellesebefehl auszugeben, um zweite Domäneninformationen aus dem Zieleintrag der Schlüsseldatenstruktur auszulesen; e) unter Verwendung eines Plattformschlüssels die zweiten Domäneninformationen, die aus dem Zieleintrag für die zweite sichere Domäne abgerufen wurden, zu verschlüsseln, um ein zweites eingehülltes Blob zu generieren; und f) das zweite eingehüllte Blob in einer bestimmten Region des Systemspeichers zu speichern.
  • In Beispiel 9, das Server-Computersystem aus Beispiel 8, wobei die ersten Domäneninformationen einen ersten Schlüssel und eine erste Domänenkennung für die erste sichere Domäne umfassen und wobei die mehreren Schlüssel eine kryptografische Isolierung zwischen einzelnen der mehreren sicheren Domänen bereitstellen.
  • In Beispiel 10, das Server-Computersystem aus Beispiel 8, wobei, in Reaktion auf die Anfrage und darauf, dass ein erster Eintrag in der Schlüsseldatenstruktur verfügbar ist, der Prozessorkern ferner die Befehle ausführen soll, um: a) eine Enthülloperation durchzuführen, um das erste eingehüllte Blob zu entschlüsseln und die ersten Domäneninformationen zu generieren; b) die erste sichere Domäne in die hardwarebasierte Kryptografie-Engine zu programmieren, wobei das Programmieren das Speichern der ersten Domäneninformationen im ersten Eintrag der Schlüsseldatenstruktur beinhaltet; und c) eine kryptografische Antwort zu generieren, die ein erfolgreiches Enthüllen des ersten eingehüllten Blobs anzeigt.
  • In Beispiel 11, das Server-Computersystem aus Beispiel 8, wobei der Prozessorkern ferner die Befehle ausführen soll, um: a) eine Enthülloperation durchzuführen, um das erste eingehüllte Blob zu entschlüsseln und die ersten Domäneninformationen zu generieren; und b) die erste sichere Domäne in die hardwarebasierte Kryptografie-Engine zu programmieren, wobei das Programmieren das Speichern der ersten Domäneninformationen im Zieleintrag der Schlüsseldatenstruktur beinhaltet.
  • In Beispiel 12, das Server-Computersystem aus Beispiel 8, wobei der Prozessorkern ferner die Befehle ausführen soll, um: a) eine Speicherzugriffsanfrage für die zweite sichere Domäne zu erkennen; b) das zweite eingehüllte Blob an einem Ort, der einer Domänenkennung der zweiten sicheren Domäne entspricht, aus dem Systemspeicher auszulesen; und c) auf das zweite eingehüllte Blob als eine Anfrage zum Programmieren der zweiten sicheren Domäne in die hardwarebasierte Kryptografie-Engine zu reagieren.
  • In Beispiel 13, das Server-Computersystem aus Beispiel 8, wobei die bestimmte Region des Systemspeichers gemäß Domänenkennungen von jeweiligen sicheren Domänen der mehreren sicheren Domänen indiziert ist.
  • In Beispiel 14, das Server-Computersystem aus Beispiel 8, wobei, beim Hochfahren des Server-Computersystems, ein Basis-Eingabe/Ausgabe-System (Basic Input/Output System, BIOS) Reservierungsinformationen in einem Bereichsregister speichern soll, um die bestimmte Region des Systemspeichers für Hardware zu reservieren, die von einer Anzahl der mehreren sicheren Domänen abhängt, und wobei die Reservierungsinformationen genutzt werden, um die hardwarebasierte Kryptografie-Engine zu programmieren.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der vorstehend beschriebenen strukturellen Merkmale aufweisen. Beispielsweise können alle optionalen Merkmale der vorstehend beschriebenen Prozessoren und Verfahren ebenfalls in Bezug auf ein hier beschriebenes System implementiert sein, und Besonderheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 15 ist ein nicht-transitorisches computerlesbares Medium, das Befehle speichert, die, wenn sie von einem Prozessor ausgeführt werden, der einen Kern aufweist, der an einen Systemspeicher gekoppelt ist, den Prozessor veranlassen, mehrere logische Operationen durchzuführen, umfassend: a) Empfangen einer Anfrage zum Programmieren einer ersten sicheren Domäne in eine hardwarebasierte Kryptografie-Engine des Prozessors, wobei die Anfrage erste Domäneninformationen in einem ersten eingehüllten binären Großobjekt (Binary Large Object, Blob) beinhaltet; b) in Reaktion auf die Anfrage und auf eine Bestimmung, dass es keinen verfügbaren Eintrag in einer in der hardwarebasierten Kryptografie-Engine gespeicherten Schlüsseldatenstruktur gibt: c) Auswählen einer zweiten sicheren Domäne, die ausgeplant werden soll, wobei die zweite sichere Domäne in der Schlüsseldatenstruktur in einem Zieleintrag indiziert ist; d) Ausgeben eines Schlüssellesebefehls, um zweite Domäneninformationen aus dem Zieleintrag der Schlüsseldatenstruktur auszulesen; e) Verschlüsseln, unter Verwendung eines Plattformschlüssels, der zweiten Domäneninformationen, die aus dem Zieleintrag für die zweite sichere Domäne abgerufen wurden, um ein zweites eingehülltes Blob zu generieren; und f) Speichern des zweiten eingehüllten Blobs in einer bestimmten Region des Systemspeichers.
  • In Beispiel 16, das nicht-transitorische computerlesbare Medium aus Beispiel 15, wobei die ersten Domäneninformationen einen ersten Schlüssel und eine erste Domänenkennung für die erste sichere Domäne umfassen, wobei die Schlüsseldatenstruktur mehrere Schlüssel für entsprechende mehrere sichere Domänen speichern soll und wobei die mehreren Schlüssel eine kryptografische Isolierung zwischen einzelnen der mehreren sicheren Domänen bereitstellen.
  • In Beispiel 17, das nicht-transitorische computerlesbare Medium aus Beispiel 15, wobei, in Reaktion auf die Anfrage und darauf, dass ein erster Eintrag in der Schlüsseldatenstruktur verfügbar ist, die mehreren logischen Operationen ferner umfassen: a) Durchführen einer Enthülloperation, um das erste eingehüllte Blob zu entschlüsseln und die ersten Domäneninformationen zu generieren; b) Programmieren der ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine, wobei das Programmieren das Speichern der ersten Domäneninformationen im ersten Eintrag der Schlüsseldatenstruktur beinhaltet; und c) Generieren einer kryptografischen Antwort, die ein erfolgreiches Enthüllen des ersten eingehüllten Blobs anzeigt.
  • In Beispiel 18, das nicht-transitorische computerlesbare Medium aus Beispiel 15, wobei die mehreren logischen Operationen ferner umfassen: a) Durchführen einer Enthülloperation, um das erste eingehüllte Blob zu entschlüsseln und die ersten Domäneninformationen zu generieren; und b) Programmieren der ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine, wobei das Programmieren das Speichern der ersten Domäneninformationen im Zieleintrag der Schlüsseldatenstruktur beinhaltet.
  • In Beispiel 19, das nicht-transitorische computerlesbare Medium aus Beispiel 15, wobei die mehreren logischen Operationen ferner umfassen: a) Erkennen einer Speicherzugriffsanfrage für die zweite sichere Domäne; b) Auslesen des zweiten eingehüllten Blobs aus dem Systemspeicher, an einem Ort, der einer Domänenkennung der zweiten sicheren Domäne entspricht; und c) Reagieren auf das zweite eingehüllte Blob als eine Anfrage zum Programmieren der zweiten sicheren Domäne in die hardwarebasierte Kryptografie-Engine.
  • In Beispiel 20, das nicht-transitorische computerlesbare Medium aus Beispiel 15, wobei die Schlüsseldatenstruktur mehrere Schlüssel für entsprechende mehrere sichere Domänen speichern soll und wobei die bestimmte Region des Systemspeichers gemäß Domänenkennungen von jeweiligen sicheren Domänen der mehreren sicheren Domänen indiziert ist.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der vorstehend beschriebenen strukturellen Merkmale aufweisen. Beispielsweise können alle optionalen Merkmale der vorstehend beschriebenen Prozessoren und Verfahren ebenfalls in Bezug auf ein hier beschriebenes System implementiert sein, und Besonderheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 21 ist ein Prozessor, umfassend: 1) Mittel zum Steuern von Speicher eines Servers; 2) Mittel zum Speichern mehrerer Schlüssel in einer Schlüsseldatenstruktur einer hardwarebasierten Kryptografie-Engine für entsprechende mehrere Domänen des Servers, wobei jede sichere Domäne eine andere Arbeitslast umfasst, die vom Server zu bedienen ist; 3) Mittel zum Empfangen einer Anfrage zum Programmieren einer ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine, wobei die erste sichere Domäne eine neue Arbeitslast umfasst, die vom Server zu bedienen ist, und wobei die Anfrage erste Domäneninformationen umfasst; 4) Mittel zum Bestimmen, ob es einen Eintrag in der Schlüsseldatenstruktur gibt, der verfügbar ist; und 5) in Reaktion auf eine Bestimmung, dass der Eintrag verfügbar ist, Mittel zum Speichern der ersten Domäneninformationen im Eintrag der Schlüsseldatenstruktur.
  • In Beispiel 22, der Prozessor aus Beispiel 21, wobei die ersten Domäneninformationen einen ersten Schlüssel und eine erste Domänenkennung für die erste sichere Domäne umfassen und wobei die mehreren Schlüssel eine kryptografische Isolierung zwischen einzelnen der mehreren sicheren Domänen bereitstellen.
  • In Beispiel 23, der Prozessor aus Beispiel 21, wobei das Mittel zum Speichern einen Cache zum Speichern der Schlüsseldatenstruktur umfasst und wobei die Schlüsseldatenstruktur gemäß Cachezeilen des Caches indiziert ist, mit einer Domänenkennung einer sicheren Domäne, die einer Nummer entspricht, die mit der Cachezeile verknüpft ist.
  • In Beispiel 24, der Prozessor aus Beispiel 21, in Reaktion auf eine Bestimmung, dass kein Eintrag in der Schlüsseldatenstruktur verfügbar ist, ferner umfassend: 1) Mittel zum Auswählen einer zweiten sicheren Domäne, die ausgeplant werden soll, wobei die zweite sichere Domäne in der Schlüsseldatenstruktur in einem zweiten Zieleintrag indiziert ist; 2) Mittel zum Verschlüsseln, unter Verwendung eines Plattformschlüssels, von zweiten Domäneninformationen, die aus dem zweiten Eintrag für die zweite sichere Domäne abgerufen wurden, um ein eingehülltes binäres Großobjekt (Binary Large Object, Blob) zu generieren; und 3) Mittel zum Speichern des eingehüllten Blobs in einer bestimmten Region des Systemspeichers, die gemäß einer Domänenkennung der zweiten sicheren Domäne indiziert ist.
  • In Beispiel 25, der Prozessor aus Beispiel 24, ferner umfassend Mittel zum Speichern der ersten Domäneninformationen im zweiten Eintrag der Schlüsseldatenstruktur.
  • In Beispiel 26, der Prozessor aus Beispiel 24, ferner umfassend: 1) Mittel zum Erkennen einer Speicherzugriffsanfrage für die zweite sichere Domäne; 2) Mittel zum Auslesen des eingehüllten Blocks aus dem Systemspeicher; 3) Mittel zum Entschlüsseln des eingehüllten Blobs, um die zweiten Domäneninformationen zu generieren; und 4) Mittel zum Reagieren auf die zweiten Domäneninformationen als eine Anfrage zum Programmieren der zweiten sicheren Domäne in die hardwarebasierte Kryptografie-Engine.
  • In Beispiel 27, der Prozessor aus Beispiel 24, wobei beim Hochfahren des Servers, das Mittel zum Speichern Reservierungsinformationen in einem Bereichsregister speichern soll, um die bestimmte Region des Systemspeichers für Hardware zu reservieren, und wobei die Reservierungsinformationen genutzt werden, um die hardwarebasierte Kryptografie-Engine zu programmieren.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der vorstehend beschriebenen strukturellen Merkmale aufweisen. Beispielsweise können alle optionalen Merkmale der vorstehend beschriebenen Prozessoren und Verfahren ebenfalls in Bezug auf ein hier beschriebenes System implementiert sein, und Besonderheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 28 ist ein Verfahren, umfassend: 1) Speichern, durch eine Verarbeitungsvorrichtung eines Server-Computersystems, mehrerer Schlüssel in einer Schlüsseldatenstruktur einer hardwarebasierten Kryptografie-Engine, wobei die mehreren Schlüssel mehreren sicheren Domänen entsprechen; 2) Empfangen, unter Verwendung der Verarbeitungsvorrichtung, einer Anfrage zum Programmieren einer ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine, wobei die Anfrage erste Domäneninformationen in einem ersten eingehüllten binären Großobjekt (Binary Large Object, Blob) umfasst; und 3) Reagieren der Verarbeitungsvorrichtung auf das Empfangen der Anfrage und auf eine Bestimmung, dass es keinen verfügbaren Eintrag in der Schlüsseldatenstruktur gibt, durch: a) Auswählen einer zweiten sicheren Domäne, die ausgeplant werden soll, wobei die zweite sichere Domäne in der Schlüsseldatenstruktur in einem Zieleintrag indiziert ist; b) Ausgeben eines Schlüssellesebefehls, um zweite Domäneninformationen aus dem Zieleintrag der Schlüsseldatenstruktur auszulesen; c) Verschlüsseln, unter Verwendung eines Plattformschlüssels, der zweiten Domäneninformationen, die aus dem Zieleintrag für die zweite sichere Domäne abgerufen wurden, um ein zweites eingehülltes Blob zu generieren; und d) Speichern des zweiten eingehüllten Blobs in einer bestimmten Region des Systemspeichers.
  • In Beispiel 29, das Verfahren nach Anspruch 28, wobei die ersten Domäneninformationen einen ersten Schlüssel und eine erste Domänenkennung für die erste sichere Domäne umfassen und wobei die mehreren Schlüssel eine kryptografische Isolierung zwischen einzelnen der mehreren sicheren Domänen bereitstellen.
  • In Beispiel 30, das Verfahren nach Anspruch 28, wobei, in Reaktion auf die Anfrage und darauf, dass ein erster Eintrag in der Schlüsseldatenstruktur verfügbar ist, das Verfahren ferner umfasst: 1) Durchführen einer Enthülloperation, um das erste eingehüllte Blob zu entschlüsseln und die ersten Domäneninformationen zu generieren; 2) Programmieren der ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine, wobei das Programmieren das Speichern der ersten Domäneninformationen im ersten Eintrag der Schlüsseldatenstruktur beinhaltet; und 3) Generieren einer kryptografischen Antwort, die ein erfolgreiches Enthüllen des ersten eingehüllten Blobs anzeigt.
  • In Beispiel 31, das Verfahren nach Anspruch 28, ferner umfassend: 1) Durchführen einer Enthülloperation, um das erste eingehüllte Blob zu entschlüsseln und die ersten Domäneninformationen zu generieren; und 2) Programmieren der ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine, wobei das Programmieren das Speichern der ersten Domäneninformationen im Zieleintrag der Schlüsseldatenstruktur beinhaltet.
  • In Beispiel 32, das Verfahren nach Anspruch 28, ferner umfassend: 1) Erkennen einer Speicherzugriffsanfrage für die zweite sichere Domäne; 2) Auslesen des zweiten eingehüllten Blobs aus dem Systemspeicher, an einem Ort, der einer Domänenkennung der zweiten sicheren Domäne entspricht; und 3) Reagieren auf das zweite eingehüllte Blob als eine Anfrage zum Programmieren der zweiten sicheren Domäne in die hardwarebasierte Kryptografie-Engine.
  • In Beispiel 33, das Verfahren nach Anspruch 28, ferner umfassend das Indizieren der bestimmten Region des Systemspeichers gemäß Domänenkennungen von jeweiligen sicheren Domänen der mehreren sicheren Domänen.
  • In Beispiel 34, das Verfahren nach Anspruch 28, ferner umfassend, beim Hochfahren des Server-Computersystems, das Speichern, durch ein Basis-Eingabe/Ausgabe-System (Basic Input/Output System, BIOS), von Reservierungsinformationen in einem Bereichsregister, um die bestimmte Region des Systemspeichers für Hardware zu reservieren, die von einer Anzahl der mehreren sicheren Domänen abhängt, und wobei die Reservierungsinformationen genutzt werden, um die hardwarebasierte Kryptografie-Engine zu programmieren.
  • Auch wenn die Offenbarung in Bezug auf eine begrenzte Anzahl von Implementierungen beschrieben wurde, werden Fachleute auf diesem Gebiet der Technik zahlreiche Modifikationen und Variationen erkennen. Es ist beabsichtigt, dass die beigefügten Patentansprüche alle solche Modifikationen und Variationen abdecken sollen, die dem wahren Geist und Schutzbereich dieser Offenbarung entsprechen.
  • In der vorliegenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, beispielsweise Beispiele für spezifische Arten von Prozessoren und Systemkonfigurationen, spezifische Hardwarestrukturen, spezifische architektonische und mikroarchitektonische Einzelheiten, spezifische Registerkonfigurationen, spezifische Befehlstypen, spezifische Systemkomponenten, spezifische Messungen/Höhen, spezifische Prozessorpipelinestufen und Operationen etc., um ein gründliches Verständnis der Offenbarung zu vermitteln. Es wird jedoch für einen Fachmann auf diesem Gebiet ersichtlich sein, dass diese spezifischen Einzelheiten nicht eingesetzt werden müssen, um die Offenbarung in die Praxis umzusetzen. In anderen Fällen sind bekannte Komponenten oder Verfahren, beispielsweise spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltungen/spezifischer Code für beschriebene Algorithmen, spezifischer Firmwarecode, spezifische Verbindungsoperationen, spezifische Logikkonfigurationen, spezifische Fertigungstechniken und -materialien, spezifische Compiler-Implementierungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Herunterfahr- und Gattertechniken/-logiken und andere spezifische Betriebseinzelheiten eines Computersystems, hier nicht ausführlich beschrieben worden, um zu vermeiden, dass die Offenbarung unnötig unübersichtlich wird.
  • Die Implementierungen werden unter Bezugnahme auf das Bestimmen der Validität von Daten in Cachezeilen eines sektorbasierten Caches in spezifischen integrierten Schaltungen beschrieben, beispielsweise in Computerplattformen oder Mikroprozessoren. Die Implementierungen können außerdem auf andere Arten von integrierten Schaltungen und programmierbaren Logikbauelementen anwendbar sein. Beispielsweise sind die offenbarten Implementierungen nicht auf Desktop-Computersysteme oder tragbare Computer wie etwa die Intel® Ultrabook™-Computer beschränkt. Und sie können auch in anderen Vorrichtungen verwendet werden, beispielsweise in tragbaren Vorrichtungen, Tablets oder dünnen Notebooks, Ein-Chip-Systemen (Systems-on-Chip, SoCs) und eingebetteten Anwendungen. Einige Beispiele für tragbare Vorrichtungen umfassen Mobiltelefone, Internet-Protokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und Handheld-PCs. Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein Ein-Chip-System, Netzcomputer (NetPCs), Set-top-Boxen, Netzknoten, Switches für Weitverkehrsnetze (Wide Area Networks (WANs) oder ein beliebiges anderes System, das die nachstehend vorgestellten Funktionen und Operationen durchführen kann. Es wird beschrieben, dass es sich bei dem System um eine beliebige Art von Computer oder eingebettetem System handeln kann. Die offenbarten Implementierungen können insbesondere für einfache Vorrichtungen wie tragbare Vorrichtungen (z. B. Uhren), elektronische Implantate, Sensor- und Steuerungsinfrastruktur-Vorrichtungen, Steuerungen, SCADA (Supervisory Control & Data Acquisition)-Systeme oder dergleichen verwendet werden. Darüber hinaus sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Rechenvorrichtungen beschränkt, sondern können auch Softwareoptimierungen für Energieeinsparungen und Energieeffizienz betreffen. Wie in der nachstehenden Beschreibung leicht ersichtlich wird, sind die hier beschriebenen Implementierungen von Verfahren, Vorrichtungen und Systemen (ganz gleich, ob unter Bezugnahme auf Hardware, Firmware, Software oder Kombinationen davon) entscheidend für eine Zukunft „umweltfreundlicher Technologien“ unter gleichzeitiger Abwägung von Leistungsgesichtspunkten.
  • Auch wenn die Implementierungen hier unter Bezugnahme auf einen Prozessor beschrieben werden, sind auch andere Implementierungen auf andere Arten von integrierten Schaltungen und Logikbauelementen anwendbar. Ähnliche Techniken und Verfahren sowie Lehren von Implementierungen der Offenbarung können auf andere Arten von Schaltungen oder Halbleiterbauelementen angewendet werden, die von einem höheren Pipelinedurchsatz und einer verbesserten Leistung profitieren können. Die Lehren von Implementierungen der Offenbarung sind auf jeden Prozessor oder jede Maschine anwendbar, die Datenmanipulationen durchführt. Allerdings ist die Offenbarung 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 kann auf beliebige Prozessoren und Maschinen angewendet werden, in denen eine Manipulation oder Verwaltung von Daten erfolgt. Darüber hinaus stellt die hier vorliegende Beschreibung Beispiele bereit, und die beigefügten Zeichnungen zeigen verschiedene Beispiele zum Zwecke der Veranschaulichung. Allerdings sollten diese Beispiele nicht als einschränkend verstanden werden, da sie nur dafür vorgesehen sind, Beispiele für Implementierungen der Offenbarung bereitzustellen, und nicht eine erschöpfende Liste aller möglichen Implementierungen von Implementierungen der Offenbarung.
  • Auch wenn die vorstehenden Beispiele die Handhabung und Verteilung von Befehlen im Zusammenhang mit Ausführungseinheiten und Logikschaltungen beschreiben, können andere Implementierungen der Offenbarung durch Daten oder Befehle realisiert werden, die auf einem maschinenlesbaren physischen Medium gespeichert sind, die, wenn sie von einer Maschine ausgeführt werden, die Maschine veranlassen, Funktionen durchzuführen, die mit wenigstens einer Implementierung der Offenbarung übereinstimmen. In einer Implementierung sind Funktionen, die mit Implementierungen der Offenbarung verknüpft sind, in maschinenausführbaren Befehlen ausgeführt. Die Befehle können verwendet werden, um einen Universal- oder einen Spezialprozessor, der mit den Befehlen programmiert ist, zu veranlassen, die Schritte der Offenbarung durchzuführen. Implementierungen der Offenbarung können als Computerprogrammprodukt oder Software bereitgestellt werden, das/die ein maschinen- oder computerlesbares Medium beinhalten kann, auf dem Befehle gespeichert sind, die dazu verwendet werden können, einen Computer (oder andere elektronische Vorrichtungen) dafür zu programmieren, eine oder mehrere Operationen gemäß Implementierungen der Offenbarung durchzuführen. Alternativ könnten Operationen von Implementierungen der Offenbarung von spezifischen Hardwarekomponenten mit fester Funktionslogik zum Durchführen der Operationen durchgeführt werden, oder von einer beliebigen Kombination aus programmierten Computerkomponenten und Hardwarekomponenten mit festen Funktionen.
  • Befehle, die verwendet werden, um Logik zu programmieren, um Implementierungen der Offenbarung durchzuführen, können in einem Speicher im System gespeichert sein, beispielsweise DRAM, Cache, Flash-Speicher oder einem anderen Datenspeicher. Des Weiteren können die Befehle über ein Netz oder durch andere computerlesbare Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form umfassen, die von einer Maschine (z. B. einem Computer) gelesen werden kann, ohne jedoch beschränkt zu sein auf Floppydisketten, optische Datenträger, CDs (Compact Disks), Compact-Disk-Festwertspeicher (Compact Disc Read-Only Memory, CD-ROMs) und magnetooptische Platten, Festwertspeicher (Read-Only Memory, ROM), Direktzugriffsspeicher (Random Access Memory, RAM), löschbaren programmierbaren Festwertspeicher (Erasable Programmable Read-Only Memory, EPROM), elektrisch löschbaren programmierbaren Festwertspeicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen physischen, maschinenlesbaren Datenspeicher, wie er bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder sonstige Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale etc.) verwendet wird. Entsprechend umfasst das computerlesbare Medium jede Art von physischen maschinenlesbaren Medien, die dafür geeignet sind, elektronische Befehle oder Informationen in einer Form zu speichern oder zu übertragen, die von einer Maschine (z. B. einem Computer) gelesen werden kann.
  • Ein Entwurf kann verschiedene Phasen durchlaufen, von der Erstellung über die Simulation bis hin zur Fertigung. Daten, die einen Entwurf darstellen, können den Entwurf auf mehrere Weisen darstellen. Erstens, was in Simulationen nützlich ist, kann die Hardware unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionellen Beschreibungssprache dargestellt werden. Darüber hinaus kann ein Schaltungsebene-Modell mit Logik und/oder Transistorgattern in einigen Phasen des Entwurfsprozesses produziert werden. Des Weiteren erreichen die meisten Entwürfe, in einem gewissen Stadium, eine Ebene, in der Daten die physikalische Anordnung von verschiedenen Vorrichtungen im Hardwaremodell darstellen. In dem Fall, dass herkömmliche Halbleiterfertigungsverfahren verwendet werden, können die Daten, die das Hardwaremodell darstellen, die Daten sein, die bei Masken, die verwendet werden, um die integrierte Schaltung zu produzieren, das Vorhandensein oder Fehlen verschiedener Merkmale in unterschiedlichen Maskenschichten spezifizieren. In jeder Darstellung des Entwurfs können die Daten in beliebiger Form auf einem maschinenlesbaren Medium gespeichert werden. Ein Speicher oder ein magnetischer oder optischer Datenspeicher wie etwa eine Platte können das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen, welche moduliert oder sonstwie generiert werden, um derartige Informationen zu übertragen, übertragen werden. Wenn eine elektrische Trägerwelle, die den Code oder den Entwurf angibt oder transportiert, übertragen wird, insofern als dass ein Kopieren, Puffern oder Neuübertragen des elektrischen Signals durchgeführt wird, wird eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem physischen, maschinenlesbaren Medium, wenigstens temporär, ein Erzeugnis, beispielsweise in eine Trägerwelle kodierte Informationen, unter Einbeziehung von Implementierungen der Offenbarung speichern.
  • Ein Modul wie hier verwendet bezieht sich auf eine beliebige Kombination aus Hardware, Software und/oder Firmware. Als Beispiel umfasst ein Modul Hardware, beispielsweise einen Mikrocontroller, der mit einem nicht-transitorischen Medium verknüpft ist, um Code zu speichern, der dafür ausgelegt ist, von einem Mikrocontroller ausgeführt zu werden. Daher bezieht sich ein Verweis auf ein Modul, in einer Implementierung, auf die Hardware, die speziell dafür ausgelegt ist, den auf einem nicht-transitorischen Medium zu speichernden Code zu erkennen und/oder auszuführen. Des Weiteren bezieht sich, in einer anderen Implementierung, die Verwendung eines Moduls auf ein nicht-transitorisches Medium mit dem Code, der speziell dafür ausgelegt ist, vom Mikrocontroller ausgeführt zu werden, um vorgegebene Operationen durchzuführen. Und wie abgeleitet werden kann, kann sich der Begriff Modul (in diesem Beispiel) in noch einer anderen Implementierung auf die Kombination des Mikrocontrollers und des nicht-transitorischen Mediums beziehen. Modulgrenzen, die getrennt dargestellt sind, variieren häufig und sind potenziell überlappend. So können beispielsweise ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinsam nutzen, während sie potenziell einige unabhängige Hardware, Software oder Firmware beibehalten. In einer Implementierung umfasst die Verwendung des Begriffs Logik Hardware, beispielsweise Transistoren, Register oder andere Hardware wie etwa programmierbare Logikbauelemente.
  • Die Verwendung der Formulierung „dafür ausgelegt, dass“ bezieht sich, in einer Implementierung, auf das Anordnen, Zusammensetzen, Fertigen, Zum-Verkauf-Anbieten, Importieren und/oder Entwerfen einer Vorrichtung, Hardware, Logik oder eines Elements zum Durchführen einer vorgesehenen oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die/das nicht in Betrieb ist, dennoch „dafür ausgelegt“ eine vorgesehene Aufgabe durchzuführen, falls sie/es dafür konzipiert, gekoppelt und/oder verbunden ist, um die vorgesehene Aufgabe durchzuführen. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 liefern. Aber ein Logikgatter, dass „dafür ausgelegt ist“, ein Aktivierungssignal für einen Takt bereitzustellen, schließt nicht jedes potenzielle Logikgatter ein, das eine 1 oder eine 0 liefern kann. Vielmehr ist das Logikgatter ein Gatter, das in irgendeiner Weise gekoppelt ist, so dass während des Betriebs die Ausgabe 1 oder 0 den Takt aktivieren soll. Erneut ist zu beachten, dass die Verwendung des Begriffs „dafür ausgelegt, dass“ keinen Betrieb erfordert, sondern vielmehr auf den latenten Status einer Vorrichtung, einer Hardware und/oder eines Elements ausgerichtet ist, wobei im latenten Status die Vorrichtung, die Hardware und/oder das Element dafür ausgelegt sind, eine bestimmte Aufgabe durchzuführen, wenn die Vorrichtung, die Hardware und/oder das Element betrieben werden.
  • Des Weiteren bezieht sich die Verwendung der Formulierungen „um zu“, „in der Lage sein, etwas zu tun“ und/oder „betreibbar sein, um“, in einer Implementierung, auf einige Vorrichtungen, Logiken, Hardware und/oder Elemente, die so ausgelegt ist, dass sie die Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements in einer spezifizierten Weise ermöglichen. Wie beim Vorstehenden ist zu beachten, dass sich die Verwendung von „um zu“, „in der Lage sein, etwas zu tun“ oder „betreibbar sein, um“, in einer Implementierung, auf den latenten Status einer Vorrichtung, Logik, Hardware und/oder eines Elements bezieht, wobei die Vorrichtung, Logik, Hardware und/oder das Element nicht in Betrieb sind, aber so ausgelegt sind, dass sie die Verwendung der Vorrichtung in einer spezifizierten Weise ermöglichen.
  • Ein Wert, wie hier verwendet, beinhaltet jede bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Oft wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als Einsen (1) und Nullen (0) bezeichnet, was einfach binäre logische Zustände darstellt. Beispielsweise steht 1 für einen hohen Logikpegel, und 0 steht für einen niedrigen Logikpegel. In einer Implementierung kann eine Datenspeicherzelle, beispielsweise eine Transistor- oder Flash-Zelle, in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu speichern. Allerdings sind auch andere Darstellungen von Werten in Computersystemen verwendet worden. Beispielsweise kann die Dezimalzahl Zehn auch als Binärwert 1010 und als Hexadezimalbuchstabe A dargestellt sein. Daher beinhaltet ein Wert jede Darstellung von Informationen, die in der Lage ist, in einem Computersystem gespeichert zu werden.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt sein. Als ein Beispiel kann ein erster Wert, beispielsweise eine logische Eins, einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert, beispielsweise eine logische Null, einen Nicht-Standard-Zustand darstellen kann. Darüber hinaus beziehen sich die Begriffe „Zurücksetzen“ und „Setzen“, in einer Implementierung, auf einen Standardwert oder -zustand bzw. einen aktualisierten Wert oder Zustand. Beispielsweise beinhaltet ein Standardwert potenziell einen hohen logischen Wert, d. h. zurückgesetzt, während ein aktualisierter Wert potenziell einen niedrigen logischen Wert, d. h. gesetzt, beinhaltet. Es sei darauf hingewiesen, dass jede Kombination von Werten genutzt werden kann, um jede beliebige Anzahl von Zuständen darzustellen.
  • Die Implementierungen von Verfahren, Hardware, Software, Firmware oder Code wie vorstehend dargelegt können über Befehle oder Code implementiert sein, die auf einem für Maschinen zugänglichen, maschinenlesbaren, für Computer zugänglichen oder computerlesbaren Medium gespeichert und von einem Verarbeitungselement ausgeführt werden können. Ein nicht-transitorisches für Maschinen zugängliches/maschinenlesbares Medium weist einen Mechanismus auf, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), die von einer Maschine, beispielsweise einem Computer oder einem elektronischen System, gelesen werden können. Beispielsweise umfasst ein nicht-transitorisches maschinenlesbares Medium Direktzugriffsspeicher (Random Access Memory, RAM), beispielsweise einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Datenspeichermedium; Flash-Speichervorrichtungen; elektrische Datenspeichervorrichtungen; optische Speichervorrichtungen; akustische Datenspeichervorrichtungen; andere Formen von Datenspeichervorrichtungen für das Speichern von Informationen, die von transitorischen (sich ausbreitenden) Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale) empfangen werden; etc., die von den nicht-transitorischen Medien zu unterscheiden sind, die Informationen davon empfangen können.
  • Befehle, die verwendet werden, um Logik zu programmieren, um Implementierungen der Offenbarung durchzuführen, können in einem Speicher im System gespeichert sein, beispielsweise DRAM, Cache, Flash-Speicher oder einem anderen Datenspeicher. Des Weiteren können die Befehle über ein Netz oder durch andere computerlesbare Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form umfassen, die von einer Maschine (z. B. einem Computer) gelesen werden kann, ohne jedoch beschränkt zu sein auf Floppydisketten, optische Datenträger, CDs (Compact Disks), Compact-Disk-Festwertspeicher (Compact Disc Read-Only Memory, CD-ROMs) und magnetooptische Platten, Festwertspeicher (Read-Only Memory, ROM), Direktzugriffsspeicher (Random Access Memory, RAM), löschbaren programmierbaren Festwertspeicher (Erasable Programmable Read-Only Memory, EPROM), elektrisch löschbaren programmierbaren Festwertspeicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen physischen, maschinenlesbaren Datenspeicher, wie er bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder sonstige Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale etc.) verwendet wird. Entsprechend umfasst das computerlesbare Medium jede Art von physischen maschinenlesbaren Medien, die dafür geeignet sind, elektronische Befehle oder Informationen in einer Form zu speichern oder zu übertragen, die von einer Maschine (z. B. einem Computer) gelesen werden kann).
  • Der Hinweis in der Patentschrift auf „eine einzige Implementierung“ oder „eine Implementierung“ bedeutet, dass ein(e) besondere(s) Merkmal, Struktur oder Eigenschaft, das/die im Zusammenhang mit der Implementierung beschrieben wird, in wenigstens einer Implementierung der Offenbarung vorkommt. Der Ausdruck „in einer einzigen Implementierung“ oder „in einer Implementierung“ an diversen Stellen in der Beschreibung bezieht sich somit nicht notwendigerweise immer auf dieselbe Implementierung. Ferner können die bestimmten Merkmale, Strukturen, Funktionen oder Eigenschaften auf jede geeignete Weise in einer oder mehreren Implementierungen miteinander kombiniert werden.
  • In der vorstehenden Beschreibung wurde eine ausführliche Beschreibung unter Bezugnahme auf beispielhafte Implementierungen gegeben. Es liegt jedoch auf der Hand, dass verschiedene Modifikationen und Änderungen hieran vorgenommen werden können, ohne vom breiteren Grundgedanken und Schutzbereich der Offenbarung abzuweichen, wie sie in den beigefügten Ansprüchen dargelegt sind. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden Sinne und nicht in einem einschränkenden Sinne zu betrachten. Des Weiteren betreffen die vorstehende Verwendung einer Implementierung und andere beispielhafte Formulierungen nicht notwendigerweise dieselbe Implementierung oder dasselbe Beispiel, können sich jedoch auf andere und verschiedene Implementierungen beziehen sowie potenziell auf dieselbe Implementierung.
  • Einige Teile der ausführlichen Beschreibung werden in Bezug auf Algorithmen und symbolische Darstellungen von Operationen für Datenbits in einem Computerspeicher vorgestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die Fachleute auf dem Gebiet der Datenverarbeitung verwenden, um die Substanz ihrer Arbeit möglichst effektiv an andere Fachleute zu vermitteln. Unter einem Algorithmus versteht man hier und allgemein eine in sich konsistente Folge von Operationen, die zu einem gewünschten Ergebnis führt. Bei den Operationen handelt es sich um Operationen, die physische Manipulationen von physischen Mengen erfordern. Üblicherweise, wenn auch nicht notwendigerweise, nehmen derartige Größen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen oder anders manipuliert werden können. Gelegentlich hat es sich, hauptsächlich aus Gründen des allgemeinen Gebrauchs, als zweckmäßig erwiesen, derartige Signale als Bits, Werte, Elemente, Symbole, Zeichen, Ausdrücke, Zahlen oder dergleichen zu bezeichnen. Bei den hier beschriebenen Blöcken kann es sich um Hardware, Software, Firmware oder eine Kombination davon handeln.
  • Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe mit den entsprechenden physikalischen Größen in Verbindung zu bringen sind und es sich hierbei nur um zweckmäßige Kennzeichnungen handelt, die auf diese Größen angewendet werden. Sofern nicht ausdrücklich anders angegeben als anhand der vorstehenden Erörterung ersichtlich, ist einzusehen, dass sich in der gesamten Beschreibung Erörterungen, in denen Ausdrücke wie „Definieren“, „Empfangen“, „Bestimmen“, „Ausgeben“, „Verbinden“, „Verknüpfen“, „Erhalten“, „Authentifizieren“, „Hindern“, „Ausführen“, „Abrufen“, „Kommunizieren“ oder dergleichen verwendet werden, auf die Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Verarbeitungsvorrichtung beziehen, das/die als physikalische (z. B. elektronische) Größen dargestellte Daten innerhalb der Register und Speicher des Computersystems manipuliert und in andere Daten umwandelt, die auf ähnliche Weise als physikalische Größen innerhalb der Speicher oder Register oder anderen derartigen Informationsdatenspeicher-, Übertragungs- oder Anzeigevorrichtungen des Computersystems dargestellt sind.
  • Die Wörter „Beispiel“ oder „beispielhaft“ werden hier in der Bedeutung „als Beispiel, Fall oder zur Veranschaulichung dienend“ verwendet. Jede(r) hier als „Beispiel“ oder „beispielhaft“ beschriebene Aspekt oder Ausgestaltung ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Ausgestaltungen zu betrachten. Durch Verwendung der Wörter „Beispiel“ oder „beispielhaft“ sollen vielmehr Konzepte auf konkrete Weise präsentiert werden. So wie er in dieser Patentanmeldung verwendet wird, soll der Begriff „oder“ als einschließendes „oder“ und nicht als ausschließendes „oder“ verstanden werden.“ Das heißt, soweit nicht anders angegeben oder aus dem Kontext klar erkennbar ist, soll „X weist A oder B auf“ für alle natürlichen einschließenden Permutationen gelten. Das heißt, wenn X weist A auf; X weist B auf oder X weist A und B auf gilt, dann ist „X weist A oder B auf“ in jedem der vorstehenden Fälle erfüllt. Darüber hinaus sind die Artikel „ein/einer/eine/eines“ und „einen/eine/eines“, so wie sie in dieser Patentanmeldung und in den beigefügten Patentansprüchen verwendet werden, generell so zu verstehen, dass „ein(e) oder mehrere“ gemeint ist, soweit nicht anders angegeben oder sich diese Artikel durch den Kontext klar auf eine Singularform beziehen. Des Weiteren soll(en) bei Verwendung des Begriffs „eine Implementierung“ oder „eine einzige Implementierung“ im gesamten Text nicht dieselbe(n) Implementierung oder Implementierungen gemeint sein, sofern dies nicht genau so beschrieben wird. Außerdem werden die Begriffe „erster/erste/erstes“, „zweiter/zweite/zweites“, „dritter/dritte/drittes“ „vierter/vierte/viertes“ etc. wie hier verwendet als Kennzeichen verwendet, um zwischen verschiedenen Elementen zu unterscheiden, und haben unter Umständen nicht notwendigerweise eine ordinale Bedeutung gemäß ihrer numerischen Bezeichnung.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • CL 972982 [0071]
    • CL 972992 [0071]

Claims (21)

  1. Beansprucht wird:
  2. Prozessor, umfassend: eine Speichersteuerung eines Servers; und eine hardwarebasierte Kryptografie-Engine, die an die Speichersteuerung gekoppelt ist, wobei die hardwarebasierte Kryptografie-Engine eine Schlüsseldatenstruktur zum Speichern mehrerer Schlüssel für entsprechende mehrere sichere Domänen umfasst, wobei jede sichere Domäne eine andere Arbeitslast umfasst, die vom Server zu bedienen ist, wobei die hardwarebasierte Kryptografie-Engine: eine Anfrage zum Programmieren einer ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine empfangen soll, wobei die erste sichere Domäne eine neue Arbeitslast umfasst, die vom Server zu bedienen ist, und wobei die Anfrage erste Domäneninformationen umfasst; bestimmen soll, ob es einen Eintrag in der Schlüsseldatenstruktur gibt, der verfügbar ist; und in Reaktion auf eine Bestimmung, dass der Eintrag verfügbar ist, die ersten Domäneninformationen im Eintrag der Schlüsseldatenstruktur speichern soll.
  3. Prozessor nach Anspruch 1, wobei die ersten Domäneninformationen einen ersten Schlüssel und eine erste Domänenkennung für die erste sichere Domäne umfassen und wobei die mehreren Schlüssel eine kryptografische Isolierung zwischen einzelnen der mehreren sicheren Domänen bereitstellen.
  4. Prozessor nach einem der Ansprüche 1-2, wobei die hardwarebasierte Kryptografie-Engine einen Cache zum Speichern der Schlüsseldatenstruktur umfasst und wobei die Schlüsseldatenstruktur gemäß Cachezeilen des Caches indiziert ist, mit einer Domänenkennung einer sicheren Domäne, die einer Nummer entspricht, die mit der Cachezeile verknüpft ist.
  5. Prozessor nach einem der Ansprüche 1-3, wobei, in Reaktion auf eine Bestimmung, dass kein Eintrag in der Schlüsseldatenstruktur verfügbar ist, die hardwarebasierte Kryptografie-Engine ferner: eine zweite sichere Domäne auswählen soll, die ausgeplant werden soll, wobei die zweite sichere Domäne in der Schlüsseldatenstruktur in einem zweiten Eintrag indiziert ist; unter Verwendung eines Plattformschlüssels zweite Domäneninformationen, die aus dem zweiten Eintrag für die zweite sichere Domäne abgerufen wurden, verschlüsseln soll, um ein eingehülltes binäres Großobjekt (Binary Large Object, Blob) zu generieren; und das eingehüllte Blob in einer bestimmten Region des Systemspeichers, die gemäß einer Domänenkennung der zweiten sicheren Domäne indiziert ist, speichern soll.
  6. Prozessor nach Anspruch 4, wobei die hardwarebasierte Kryptografie-Engine ferner die ersten Domäneninformationen im zweiten Eintrag der Schlüsseldatenstruktur speichern soll.
  7. Prozessor nach Anspruch 4, wobei die hardwarebasierte Kryptografie-Engine ferner: eine Speicherzugriffsanfrage für die zweite sichere Domäne erkennen soll; das eingehüllte Blob aus dem Systemspeicher auslesen soll; das eingehüllte Blob entschlüsseln soll, um die zweiten Domäneninformationen zu generieren; und auf die zweiten Domäneninformationen als eine Anfrage zum Programmieren der zweiten sicheren Domäne in die hardwarebasierte Kryptografie-Engine reagieren soll.
  8. Prozessor nach Anspruch 4, wobei, beim Hochfahren des Servers, ein Basis-Eingabe/Ausgabe-System (Basic Input/Output System, BIOS) Reservierungsinformationen in einem Bereichsregister speichern soll, um die bestimmte Region des Systemspeichers für Hardware zu reservieren, und wobei die Reservierungsinformationen genutzt werden, um die hardwarebasierte Kryptografie-Engine zu programmieren.
  9. Server-Computersystem, umfassend: einen Prozessorkern mit einer Speichersteuerung, gekoppelt an einen Systemspeicher; und eine hardwarebasierte Kryptografie-Engine, die an den Prozessorkern und die Speichersteuerung gekoppelt ist, wobei die hardwarebasierte Kryptografie-Engine eine Schlüsseldatenstruktur zum Speichern mehrerer Schlüssel für entsprechende mehrere sichere Domänen umfasst; wobei der Prozessorkern Befehle ausführen soll, um: eine Anfrage zum Programmieren einer ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine zu empfangen, wobei die Anfrage erste Domäneninformationen in einem ersten eingehüllten binären Großobjekt (Binary Large Object, Blob) umfasst; und in Reaktion auf die Anfrage und auf eine Bestimmung, dass es keinen verfügbaren Eintrag in der Schlüsseldatenstruktur gibt: eine zweite sichere Domäne auszuwählen, die ausgeplant werden soll, wobei die zweite sichere Domäne in der Schlüsseldatenstruktur in einem Zieleintrag indiziert ist; einen Schlüssellesebefehl auszugeben, um zweite Domäneninformationen aus dem Zieleintrag der Schlüsseldatenstruktur auszulesen; unter Verwendung eines Plattformschlüssels die zweiten Domäneninformationen, die aus dem Zieleintrag für die zweite sichere Domäne abgerufen wurden, zu verschlüsseln, um ein zweites eingehülltes Blob zu generieren; und das zweite eingehüllte Blob in einer bestimmten Region des Systemspeichers zu speichern.
  10. Server-Computersystem nach Anspruch 8, wobei die ersten Domäneninformationen einen ersten Schlüssel und eine erste Domänenkennung für die erste sichere Domäne umfassen und wobei die mehreren Schlüssel eine kryptografische Isolierung zwischen einzelnen der mehreren sicheren Domänen bereitstellen.
  11. Server-Computersystem nach einem der Ansprüche 8-9, wobei, in Reaktion auf die Anfrage und darauf, dass ein erster Eintrag in der Schlüsseldatenstruktur verfügbar ist, der Prozessorkern ferner die Befehle ausführen soll, um: eine Enthülloperation durchzuführen, um das erste eingehüllte Blob zu entschlüsseln und die ersten Domäneninformationen zu generieren; die erste sichere Domäne in die hardwarebasierte Kryptografie-Engine zu programmieren, wobei das Programmieren das Speichern der ersten Domäneninformationen im ersten Eintrag der Schlüsseldatenstruktur beinhaltet; und eine kryptografische Antwort zu generieren, die ein erfolgreiches Enthüllen des ersten eingehüllten Blobs anzeigt.
  12. Server-Computersystem nach einem der Ansprüche 8-9, wobei der Prozessorkern ferner die Befehle ausführen soll, um: eine Enthülloperation durchzuführen, um das erste eingehüllte Blob zu entschlüsseln und die ersten Domäneninformationen zu generieren; und die erste sichere Domäne in die hardwarebasierte Kryptografie-Engine zu programmieren, wobei das Programmieren das Speichern der ersten Domäneninformationen im Zieleintrag der Schlüsseldatenstruktur beinhaltet.
  13. Server-Computersystem nach einem der Ansprüche 8-11, wobei der Prozessorkern ferner die Befehle ausführen soll, um: eine Speicherzugriffsanfrage für die zweite sichere Domäne zu erkennen; das zweite eingehüllte Blob an einem Ort, der einer Domänenkennung der zweiten sicheren Domäne entspricht, aus dem Systemspeicher auszulesen; und auf das zweite eingehüllte Blob als eine Anfrage zum Programmieren der zweiten sicheren Domäne in die hardwarebasierte Kryptografie-Engine zu reagieren.
  14. Server-Computersystem nach einem der Ansprüche 8-12, wobei die bestimmte Region des Systemspeichers gemäß Domänenkennungen von jeweiligen sicheren Domänen der mehreren sicheren Domänen indiziert ist.
  15. Server-Computersystem nach einem der Ansprüche 8-13, wobei, beim Hochfahren des Server-Computersystems, ein Basis-Eingabe/Ausgabe-System (Basic Input/Output System, BIOS) Reservierungsinformationen in einem Bereichsregister speichern soll, um die bestimmte Region des Systemspeichers für Hardware zu reservieren, die von einer Anzahl der mehreren sicheren Domänen abhängt, und wobei die Reservierungsinformationen genutzt werden, um die hardwarebasierte Kryptografie-Engine zu programmieren.
  16. Nicht-transitorisches computerlesbares Medium, das Befehle speichert, die, wenn sie von einem Prozessor ausgeführt werden, der einen Kern aufweist, der an einen Systemspeicher gekoppelt ist, den Prozessor veranlassen, mehrere logische Operationen durchzuführen, umfassend: Empfangen einer Anfrage zum Programmieren einer ersten sicheren Domäne in eine hardwarebasierte Kryptografie-Engine des Prozessors, wobei die Anfrage erste Domäneninformationen in einem ersten eingehüllten binären Großobjekt (Binary Large Object, Blob) beinhaltet; in Reaktion auf die Anfrage und auf eine Bestimmung, dass es keinen verfügbaren Eintrag in einer in der hardwarebasierten Kryptografie-Engine gespeicherten Schlüsseldatenstruktur gibt: Auswählen einer zweiten sicheren Domäne, die ausgeplant werden soll, wobei die zweite sichere Domäne in der Schlüsseldatenstruktur in einem Zieleintrag indiziert ist; Ausgeben eines Schlüssellesebefehls, um zweite Domäneninformationen aus dem Zieleintrag der Schlüsseldatenstruktur auszulesen; Verschlüsseln, unter Verwendung eines Plattformschlüssels, der zweiten Domäneninformationen, die aus dem Zieleintrag für die zweite sichere Domäne abgerufen wurden, um ein zweites eingehülltes Blob zu generieren; und Speichern des zweiten eingehüllten Blobs in einer bestimmten Region des Systemspeichers.
  17. Nicht-transitorisches computerlesbares Medium nach Anspruch 15, wobei die ersten Domäneninformationen einen ersten Schlüssel und eine erste Domänenkennung für die erste sichere Domäne umfassen, wobei die Schlüsseldatenstruktur mehrere Schlüssel für entsprechende mehrere sichere Domänen speichern soll und wobei die mehreren Schlüssel eine kryptografische Isolierung zwischen einzelnen der mehreren sicheren Domänen bereitstellen.
  18. Nicht-transitorisches computerlesbares Medium nach einem der Ansprüche 15-16, wobei, in Reaktion auf die Anfrage und darauf, dass ein erster Eintrag in der Schlüsseldatenstruktur verfügbar ist, die mehreren logischen Operationen ferner umfassen: Durchführen einer Enthülloperation, um das erste eingehüllte Blob zu entschlüsseln und die ersten Domäneninformationen zu generieren; Programmieren der ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine, wobei das Programmieren das Speichern der ersten Domäneninformationen im ersten Eintrag der Schlüsseldatenstruktur beinhaltet; und Generieren einer kryptografischen Antwort, die ein erfolgreiches Enthüllen des ersten eingehüllten Blobs anzeigt:
  19. Nicht-transitorisches computerlesbares Medium nach einem der Ansprüche 15-16, wobei die mehreren logischen Operationen ferner umfassen: Durchführen einer Enthülloperation, um das erste eingehüllte Blob zu entschlüsseln und die ersten Domäneninformationen zu generieren; und Programmieren der ersten sicheren Domäne in die hardwarebasierte Kryptografie-Engine, wobei das Programmieren das Speichern der ersten Domäneninformationen im Zieleintrag der Schlüsseldatenstruktur beinhaltet.
  20. Nicht-transitorisches computerlesbares Medium nach einem der Ansprüche 15-18, wobei die mehreren logischen Operationen ferner umfassen: Erkennen einer Speicherzugriffsanfrage für die zweite sichere Domäne; Auslesen des zweiten eingehüllten Blobs aus dem Systemspeicher, an einem Ort, der einer Domänenkennung der zweiten sicheren Domäne entspricht; und Reagieren auf das zweite eingehüllte Blob als eine Anfrage zum Programmieren der zweiten sicheren Domäne in die hardwarebasierte Kryptografie-Engine.
  21. Nicht-transitorisches computerlesbares Medium nach einem der Ansprüche 15-19, wobei die Schlüsseldatenstruktur mehrere Schlüssel für entsprechende mehrere sichere Domänen speichern soll und wobei die bestimmte Region des Systemspeichers gemäß Domänenkennungen von jeweiligen sicheren Domänen der mehreren sicheren Domänen indiziert ist.
DE102018125747.3A 2017-11-17 2018-10-17 Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln Pending DE102018125747A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/815,917 US10754960B2 (en) 2017-11-17 2017-11-17 Support for increased number of concurrent keys within multi-key cryptographic engine
US15/815,917 2017-11-17

Publications (1)

Publication Number Publication Date
DE102018125747A1 true DE102018125747A1 (de) 2019-05-23

Family

ID=66336540

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018125747.3A Pending DE102018125747A1 (de) 2017-11-17 2018-10-17 Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln

Country Status (2)

Country Link
US (2) US10754960B2 (de)
DE (1) DE102018125747A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110443053A (zh) * 2019-07-31 2019-11-12 四川效率源信息安全技术股份有限公司 一种基于密钥循环表及映射表的密钥生成方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11194562B2 (en) * 2017-05-19 2021-12-07 Blackberry Limited Method and system for hardware identification and software update control
US11228433B2 (en) * 2018-07-02 2022-01-18 Baskaran Dharmarajan Cloud based multi-key authorization based system
EP3980898A4 (de) * 2019-06-07 2023-07-19 Lockheed Martin Corporation Systeme und verfahren zur virtualisierung von prozessoren
KR102289478B1 (ko) * 2019-08-02 2021-08-13 주식회사 티모넷 보안키 관리 방법 및 보안키 관리 서버
DE102019128528A1 (de) 2019-10-22 2021-04-22 Infineon Technologies Ag Datenkryptografievorrichtungen und speichersysteme
CN111555870B (zh) * 2020-04-29 2023-01-17 支付宝实验室(新加坡)有限公司 一种密钥运算方法及装置
GB202010823D0 (en) * 2020-07-14 2020-08-26 Graphcore Ltd System and method for reading and writing encryted data
US20220207155A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Instruction support for saving and restoring key information
FR3118504A1 (fr) * 2020-12-28 2022-07-01 Stmicroelectronics (Rousset) Sas Système électronique comprenant plusieurs microprocesseurs
US20230205935A1 (en) * 2021-12-28 2023-06-29 Ati Technologies Ulc Software assisted acceleration in cryptographic queue processing

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006068152A1 (ja) * 2004-12-20 2006-06-29 Matsushita Electric Industrial Co., Ltd. 鍵情報生成方法
WO2011030248A2 (en) * 2009-09-11 2011-03-17 Koninklijke Philips Electronics N.V. Method and system for restoring domain management
US9344516B2 (en) * 2013-05-30 2016-05-17 Zentera Systems, Inc. Interlocking applications and files
US10303900B2 (en) 2015-07-20 2019-05-28 Intel Corporation Technologies for secure programming of a cryptographic engine for trusted I/O
US10303899B2 (en) * 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110443053A (zh) * 2019-07-31 2019-11-12 四川效率源信息安全技术股份有限公司 一种基于密钥循环表及映射表的密钥生成方法
CN110443053B (zh) * 2019-07-31 2023-03-14 四川效率源信息安全技术股份有限公司 一种基于密钥循环表及映射表的密钥生成方法

Also Published As

Publication number Publication date
US11531772B2 (en) 2022-12-20
US20190156043A1 (en) 2019-05-23
US10754960B2 (en) 2020-08-25
US20200327241A1 (en) 2020-10-15

Similar Documents

Publication Publication Date Title
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE102019109088A1 (de) Schutz von schlüsseln und sensitiven daten gegen angriffe in einer mikroprozessorarchitektur
EP3657378B1 (de) Bereitstellung von isolierung in virtualisierten systemen unter verwendung von vertrauensdomänen
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
EP3671515B1 (de) Verfahren und vorrichtung zur erstellung und zerstörung von vertrauenswürdigen domänen
EP3326107B1 (de) Unterstützung konfigurierbarer sicherheitsebenen für speicheradressbereiche
DE112017004017T5 (de) Sichere öffentliche cloud
DE102019113352A1 (de) Technologien für sichere e/a mit speicherverschlüsselungs-engines
DE102018005180A1 (de) Flexible Bescheinigung von Containern
DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102018004786A1 (de) Verfahren und Vorrichtung zum sicheren Binden eines ersten Prozessors an einen zweiten Prozessor
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE112017001766T5 (de) Power-side-channel-angriffsresistenter advanced-encryption-standard-beschleunigungsprozessor
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
DE112014000965T5 (de) Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System
DE112016004435T5 (de) Hardware-gestützte einseitige kryptografie
DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
DE102015002124A1 (de) Rücksprungzielbeschränkte Prozedurrücksprungbefehle, Prozessoren, Verfahren und Systeme
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren

Legal Events

Date Code Title Description
R012 Request for examination validly filed