DE102018129420A1 - Indirektionsverzeichnis für den kryptografischen speicherschutz - Google Patents

Indirektionsverzeichnis für den kryptografischen speicherschutz Download PDF

Info

Publication number
DE102018129420A1
DE102018129420A1 DE102018129420.4A DE102018129420A DE102018129420A1 DE 102018129420 A1 DE102018129420 A1 DE 102018129420A1 DE 102018129420 A DE102018129420 A DE 102018129420A DE 102018129420 A1 DE102018129420 A1 DE 102018129420A1
Authority
DE
Germany
Prior art keywords
page
metadata
memory
data
security
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
DE102018129420.4A
Other languages
English (en)
Inventor
Vedvyas Shanbhogue
Siddhartha Chhabra
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102018129420A1 publication Critical patent/DE102018129420A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • 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/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Abstract

Es wird ein Prozessor bereitgestellt, der einen auf dem Chip befindlichen Speicher, einen geschützten Speicherbereich und eine Speicherverschlüsselungs-Engine (MEE) beinhaltet. Die MEE beinhaltet eine Logik, zum Empfangen einer Datenanforderung auf einer bestimmten Seite in dem geschützten Bereich des Speichers und Zugreifen auf einen Zeiger in einem Indirektionsverzeichnis, wobei der Zeiger auf eine bestimmte Metadatenseite zeigen soll, die außerhalb des geschützten Bereichs des Speichers gespeichert ist. Die bestimmte Metadatenseite enthält einen ersten Teil Sicherheitsmetadaten zur der Verwendung bei der Sicherung der Daten der bestimmten Seite. Die MEE-Logik soll ferner auf einen zweiten Teil der Sicherheitsmetadaten, die der bestimmten Seite zugeordnet sind, aus dem geschützten Speicherbereich zugreifen und die Authentizität der Daten der bestimmten Seite basierend auf dem ersten und zweiten Teil der Sicherheitsmetadaten bestimmen.

Description

  • GEBIET DER TECHNIK
  • Diese Offenbarung bezieht sich im Allgemeinen auf das Gebiet der Computersicherheit und insbesondere auf die Sicherung des Speichers unter Verwendung der Zählermodus-Verschlüsselung.
  • HINTERGRUND
  • Computersysteme, wie etwa Hardwaresysteme und Softwaresysteme, die auf Computern ausgeführt werden, weisen oft unentdeckte Schwachstellen auf, die durch Hardwareangriffe oder Softwareangriffe ausgenutzt werden können, wie etwa über das Internet oder andere Kommunikationsnetzwerke empfangene schädliche Computerprogramme. Die Hardwareangriffe und Softwareangriffe können Trojaner, Viren, Würmer, Spyware und andere Malware umfassen. Viele vorhandene Computersicherheitssysteme bekämpfen Hardwareangriffe und Softwareangriffe, indem sie versuchen, zu verhindern, dass die Angriffe irgendeinen Teil des Computersystems gefährden. Computersysteme können mit Funktionen ausgestattet sein, um sensible Daten in dem Speicher sowohl vor Hardwareangriffen als auch vor Softwareangriffen zu schützen. Einige Prozessoren bieten kryptografische Mechanismen für Verschlüsselung, Integrität und Replay-Schutz. Die Speicherverschlüsselung schützt die Vertraulichkeit von speicherresidenten Daten. Der Integritätsschutz verhindert, dass ein Angreifer verdeckte Modifikationen am Verschlüsselungstext (d. h. verschlüsselte Daten im Gegensatz zu Klartext, der unverschlüsselte Daten darstellt) im Speicher verursacht. Der Replay-Schutz vermeidet jegliche unentdeckte zeitliche Ersetzung des Verschlüsselungstexts. Ohne Verschlüsselung, Integritäts- und Replay-Schutz kann ein Angreifer mit physischem Zugriff auf das System Momentaufnahmen von Cachezeilen aufzeichnen und die Cachezeilen zu einem späteren Zeitpunkt wiedergeben, um die Cachezeilen zu modifizieren und das Computersystem anzugreifen.
  • Figurenliste
    • 1 ist ein vereinfachtes schematisches Diagramm eines beispielhaften Systems, das ein Hostsystem enthält, um eine oder mehrere sichere Enklaven gemäß einer Ausführungsform zu hosten;
    • 2 ist ein vereinfachtes Blockdiagramm einer beispielhaften Vorrichtung, die einen Prozessor und eine Speicherverschlüsselungs-Engine gemäß einer Ausführungsform enthält;
    • 3 ist ein vereinfachtes Blockdiagramm, das die Attestierung der Anwendung gemäß einer Ausführungsform darstellt;
    • 4 ist ein vereinfachtes Blockdiagramm, das eine beispielhafte Replay-Integritätsbaumstruktur gemäß einer Ausführungsform darstellt;
    • 5 zeigt vereinfachte Diagramme, die die Zuweisung von Sicherheitsmetadaten in dem Speicher gemäß einer Ausführungsform darstellen;
    • 6 ist ein vereinfachtes Blockdiagramm, das die Verwendung eines beispielhaften Indirektionsverzeichnisses gemäß einer Ausführungsform darstellt;
    • 7 ist ein vereinfachtes Flussdiagramm, das eine beispielhafte Technik zur Sicherung einer Speicherseite gemäß einer Ausführungsform veranschaulicht;
    • 8 ist ein vereinfachtes Flussdiagramm, das eine beispielhafte Technik zur Zuweisung einer Metadatenseite, die einer gesicherten Speicherseite entspricht, gemäß einer Ausführungsform veranschaulicht;
    • 9 ist ein vereinfachtes Blockdiagramm, das die Bereitstellung von Schlüsseln bei der Verwendung sicherer Enklaven gemäß einer Ausführungsform darstellt.
    • 10 ist ein Blockdiagramm eines beispielhaften Prozessors gemäß einer Ausführungsform;
    • 11 ist ein Blockdiagramm eines beispielhaften Mobilgerätesystems gemäß einer Ausführungsform; und
    • 12 ist ein Blockdiagramm eines beispielhaften Computersystems gemäß einer Ausführungsform.
  • Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
  • DETAILLIERTE BESCHREIBUNG DER BEISPIELHAFTEN AUSFÜHRUNGSFORMEN
  • 1 ist ein vereinfachtes Blockdiagramm, das eine beispielhafte Ausführungsform einer Datenverarbeitungsumgebung 100 veranschaulicht, die ein Netzwerk von Computervorrichtungen beinhaltet, von denen mindestens einige Logik enthalten, die in Hardwareschaltungen, Firmware und/oder Software implementiert ist, um ein Zählermodus-Verschlüsselungsschema zu implementieren, um die Daten innerhalb des Systems zu schützen. Geschützte Speicherbereiche können unter Verwendung einer solchen Funktionalität implementiert werden. Als ein Beispiel, veranschaulicht in 1, kann ein Cloud-basiertes Computersystem 105 implementiert werden, um On-Demand- und verteilte Datenverarbeitungsressourcen zu erleichtern, die in einigen Fällen verschiedenen Verbrauchern zur Verfügung gestellt werden können. Das Cloud-System 105 kann mehrere Datenverarbeitungsressourcen enthalten, die selektiv verwendet werden können, um verschiedene Anwendungen, Daten und Dienste zu hosten. Zum Beispiel kann das Cloud-System 105 aus mehreren unterschiedlichen Host-Computersystemen bestehen, die jeweils verwendet werden können, um eine oder mehrere virtuelle Ressourcen zu hosten. Eine virtuelle Ressource kann sich im Rahmen dieser Offenbarung auf eine virtuelle Maschine, einen Container oder eine andere virtuelle Ausführungsumgebung beziehen, in der eine andere Softwareanwendung, ein anderes Programm, ein Mikrodienst oder eine Softwarekomponente gehostet und ausgeführt werden kann. In einigen Implementierungen können virtuelle Ressourcen einen privaten Server (z. B. eines Kunden oder eines anderen Verbrauchers) emulieren, und die virtuellen Maschinen können eingesetzt werden, um verschiedene Anwendungen und Dienste zu hosten. Das Cloud-System 105 kann eine Steuerung oder einen Skalierungsmanager beinhalten, um zu ermöglichen, dass die Menge der Ressourcen der Cloud, die für eine bestimmte Anwendung, einen bestimmten Dienst und/oder einen bestimmten Benutzer vorgesehen sind, vergrößert werden kann (d. h. dem Dienst mehr Ressourcen zugewiesen werden), um eine Anpassung an den steigenden Bedarf (oder einen vorhergesagten Anstieg des Bedarfs) vorzunehmen. In gleicher Weise kann der Skalierungsmanager neben anderen Beispielen die Cloud-Systemressourcen einer Anwendung in Reaktion auf eine reale oder vorhergesagte Bedarfsabnahme für die Anwendung verringern (d. h. subtrahieren).
  • In einigen Fällen können ein oder mehrere Verbraucher-Quellsysteme (z. B. 135) mit Ressourcen des Cloud-Systems 105 oder anderen Hostsystemen 110, 115 zusammenwirken, um als Quelle für verschiedene Anwendungen, Daten, Speicherabbilder virtueller Maschinen und sogar Geheimnisse und Schlüssel zu dienen. Zum Beispiel kann ein Quellsystem 135 mindestens einen Abschnitt eines Speicherabbilds einer virtuellen Maschine bereitstellen, um eine bestimmte Anwendungsinstanz auf dem Cloud-System 105 in Verbindung mit dem Hosten und dem Skalieren der bestimmten Anwendung auf dem Cloud-System 105 auszuführen. In gleicher Weise kann das Quellsystem neben anderen Beispielen den Verbrauchern ermöglichen, bestimmte geheime Daten und/oder Schlüssel festzulegen, deren Verwendung ein bestimmter Verbraucher in Verbindung mit einer Anwendung und/oder einer virtuellen Maschine wünscht, die von dem Quellsystem 135 stammt.
  • In einigen Implementierungen kann ein Cloud-System Host-Computersysteme (oder -Plattformen) enthalten, die mit Funktionen zur Unterstützung sicherer logischer Komponenten - oder Enklaven - ausgestattet sind, um das Hosting von virtuellen Maschinen zu ermöglichen, die selbst solche sicheren Enklaven enthalten, sodass auf der virtuellen Maschine gehostete Anwendungen und Daten durch eine oder mehrere sichere Enklaven gesichert werden, die unter Verwendung eines Zählermodus-Verschlüsselungsschemas implementiert werden. Tatsächlich kann die virtuelle Maschine eines solchen Systems ebenfalls sichere Enklaven enthalten. Eine sichere Enklave kann als ein Satz von Anweisungen verkörpert sein (z. B. in Mikrocode oder erweitertem Mikrocode implementiert), der einen sicheren Ort für eine Anwendung zur Ausführung von Code und zum Speichern von Daten im Kontext eines Betriebssystems (OS) oder eines anderen Prozesses bereitstellt. Eine Anwendung, die in dieser Umgebung ausgeführt wird, kann als eine Enklave bezeichnet werden. Enklaven werden von einem sicheren Enklaven-Cache aus ausgeführt. In einigen Implementierungen können Seiten der Enklave von einem Betriebssystem in den Cache geladen werden. Bei jedem Entfernen einer Seite einer Enklave aus dem gesicherten Cache können kryptografische Schutzeinrichtungen verwendet werden, um die Vertraulichkeit der Enklave zu schützen und unbefugte Eingriffe zu erkennen, wenn die Enklave wieder in den Cache geladen wird, wie hierin erörtert. Innerhalb des Caches können Enklaven-Daten durch Zugriffskontrollmechanismen geschützt werden, die von dem Prozessor bereitgestellt werden. Der Enklaven-Cache kann sich dort befinden, wo Enklaven-Code ausgeführt und auf geschützte Enklaven-Daten zugegriffen wird.
  • In einigen Implementierungen kann ein sicherer Speicherbereich Speicher zur Verwendung in sicheren Enklaven oder den Enklaven-Cache implementieren. Dementsprechend kann sich der Enklaven-Cache innerhalb des physischen Adressraums einer Plattform befinden, auf den jedoch nur Zugriff unter Verwendung sicherer Enklaven-Anweisungen besteht. Ein einzelner Enklaven-Cache kann Seiten von vielen verschiedenen Enklaven enthalten und bietet einen Zugriffssteuerungsmechanismus zum Schutz der Integrität und Vertraulichkeit der Seiten. Der Enklaven-Cache kann auf verschiedene Weise instanziiert werden. Zum Beispiel kann der Cache aus einem dedizierten SRAM auf dem Prozessorpaket aufgebaut sein. Der Enklaven-Cache kann in einem kryptografisch geschützten flüchtigen Speicher unter Verwendung eines Plattform-DRAM implementiert werden. Der Cache kann eine oder mehrere strategisch platzierte kryptografische Einheiten in dem CPU-Nicht-Kern verwenden, um unterschiedliche Schutzebenen bereitzustellen. Die verschiedenen Nicht-Kern-Agenten können modifiziert werden, um die Speicherzugriffe zu erkennen, die zu dem Cache gehen, und um diese Zugriffe an einen Krypto-Controller weiterzuleiten, der sich in dem Nicht-Kern befindet. Der Krypto-Controller erzeugt in Abhängigkeit von der gewünschten Schutzebene einen oder mehrere Speicherzugriffe auf den Plattform-DRAM, um den Verschlüsselungstext abzurufen. Er kann dann - neben den anderen beispielhaften Implementierungen und Merkmalen - den Verschlüsselungstext verarbeiten, um den Klartext zu erzeugen und die ursprüngliche Cache-Speicheranforderung zu erfüllen.
  • In einigen Implementierungen kann eine Plattform, wenn sie eine Enklave lädt, eine Systemroutine in dem Betriebssystem aufrufen. Das System kann versuchen, einige Seiten in dem Enklaven-Cache zuzuweisen. In einigen Implementierungen kann das Betriebssystem, wenn in dem Cache kein offener Speicherplatz vorhanden ist, einige geschützte Cachezeilen zum Entfernen auswählen, beispielsweise durch Entfernen einer entsprechenden „Opfer“-Enklave. In einigen Implementierungen kann zusätzlicher sicherer Speicher zugewiesen werden (z. B. durch Erweitern des sicheren Speicherbereichs), indem Seiten in gesicherte Seiten umgewandelt werden. In gleicher Weise kann das System dem Cache eine sichere Enklaven-Steuerstruktur (Secure Enclaves Control Structure, SECS) hinzufügen. Wenn die SECS erstellt ist, kann das System der Enklave, wie von der Anwendung angefordert, Seiten hinzufügen. Eine SECS gilt als aktiv, wenn sie zum aktuellen Zeitpunkt in den Cache geladen wird. In einigen Implementierungen kann eine sichere Enklave in einer virtuellen Maschine implementiert werden. Ein entsprechendes Betriebssystem (OS), Virtual Machine Manager (VMM) etc. kann für die Verwaltung dessen verantwortlich sein, was in den Enklaven-Seitencache (Enclave Page Cache, EPC) geladen wird. In einigen Implementierungen kann beim Laden einer Enklaven-Seite in den EPC das OS/der VMM die CPU über den Verbleib der SECS für diese Seite informieren, es sei denn, die in Betracht gezogene Seite ist selber eine SECS. Wenn die gerade geladene Seite keine SECS ist, kann sich die der Seite entsprechende SECS in dem EPC befinden. Bevor eine beliebige Seite für eine Enklave geladen wird, kann das OS/ der VMM die SECS für diese Enklave in den EPC laden.
  • In einigen Fällen können sichere Enklaven verwendet werden, um vertrauliche oder geheime Daten, die von einer Anwendung oder virtuellen Maschine verwendet werden, zu versiegeln oder zu sichern, beispielsweise durch Verschlüsselung unter Verwendung hardwarebasierter oder anderer Verschlüsselungsschlüssel. In einigen Implementierungen kann eine spezialisierte sichere Enklave bereitgestellt werden, um Schlüssel für eine virtuelle Maschine zu verwalten (z. B. in Verbindung mit einem auf dem Cloud-System 105 bereitgestellten Schlüsselspeicher). Sichere Enklaven können ferner verwendet werden, um eine Attestierung für verschiedene Komponenten einer virtuellen Maschine und der von ihr gehosteten Anwendung(en) durchzuführen. Die Attestierung kann der Prozess des Nachweisens sein, dass auf der Plattform eine Software speziell für eine entfernte Entität eingerichtet wurde. Im Fall von sicheren Enklaven ist die Attestierung der Mechanismus, durch den eine entfernte Plattform feststellt, dass die Software auf einer authentischen (d. h. für die sichere Enklave aktivierten) Plattform ausgeführt wird, die innerhalb einer Enklave geschützt ist, bevor dieser Software Geheimnisse und geschützte Daten anvertraut werden. Der Attestierungsprozess kann die Messung der sicheren Enklave und ihres Hosts, das Speichern der Messergebnisse (z. B. in einer entsprechenden SECS) und das Berichten von Messungen (möglicherweise mit zusätzlichen Informationen) durch Nachrichten („Quotes“) zum Nachweis der Authentizität der sicheren Enklave gegenüber einer anderen Entität beinhalten.
  • In einigen Implementierungen können ein oder mehrere Attestierungssysteme (z. B. 120) bereitgestellt werden, die Attestierungsdaten oder „Quotes“ empfangen können, die von sicheren Enklaven erzeugt werden, die auf Hostsystemen des Cloud-Systems 105 oder sogar anderen Nicht-Cloud-Hostsystemen (z. B. 110, 115) ausgeführt werden, um die Authentizität und Sicherheit (und andere Merkmale) einer anderen Anwendung oder Enklave des Hosts zu beweisen oder zu bestätigen. Ein Attestierungssystem 120 kann Daten, einschließlich Signaturen, verarbeiten, die in dem Quote enthalten sind, um die Vertrauenswürdigkeit der sicheren Enklave (und ihrer Plattform) zu überprüfen und die Attestierung basierend auf dem empfangenen Quote zu bestätigen.
  • Im Allgemeinen können Hostsysteme (z. B. 105, 110, 115) Anwendungen und Dienste hosten, und die Attestierung des Hostsystems kann verwendet werden, um die Vertrauenswürdigkeit von sowohl einer Anwendung als auch eines Diensts, einer auf dem Host bereitgestellten sicheren Enklave sowie dem Hostsystem selbst festzustellen. Im Falle von Anwendungen oder Diensten, die durch eine oder mehrere virtuelle Maschinen implementiert werden, die auf einem oder mehreren Hostsystemen (z. B. das Cloud-System 105) gehostet werden, können sichere Enklaven ebenfalls in den virtuellen Maschinen und den von ihnen gehosteten Anwendungen bereitgestellt werden, um diesen virtuellen „Host“-Maschinen (und ihren Anwendungen) auf ähnliche Weise zu ermöglichen, ihre Authentizität und Vertrauenswürdigkeit zuverlässig und sicher zu bestätigen. Wie angemerkt, können Attestierungen durch Quotes erleichtert werden, die Attribute des Systems, einer Anwendung und/oder einer Enklave identifizieren, die durch das Quote bestätigt werden. Das Quote kann zusätzlich signiert sein oder Daten enthalten, die mit einem kryptografischen Schlüssel (oder einem Schlüsselpaar), eine Verschlüsselung oder einem anderen Element (hierin gemeinsam als „Schlüssel“ bezeichnet) signiert wurden, auf dessen Grundlage das Attestierungssystem die Vertrauenswürdigkeit des Quotes (und damit auch die durch das Quote bestätigte Anwendung oder Enklave) authentifizieren oder bestätigen kann. Solche Schlüssel können als Attestierungsschlüssel bezeichnet werden. Ein Bereitstellungssystem 125 kann verwendet werden, um solche Bestätigungsschlüssel auf den verschiedenen Hostvorrichtungen (z. B. 105, 110, 115), virtuellen Maschinen und/oder Enklaven sicher bereitzustellen. Die Bereitstellungssysteme und -dienste können auch verwendet werden, um die Bereitstellung oder Erzeugung von Versiegelungsschlüsseln zur Verwendung beim Versiegeln geheimer Daten zu erleichtern, die in einer Anwendung oder einer virtuellen Maschine erzeugt oder dieser anvertraut werden. Solche geheimen Daten können versiegelt werden (z. B. in einem gemeinsam genutzten Speicherelement innerhalb des Cloud-Systems 105), sodass sie sicher aufbewahrt und für einen späteren Zugriff verfügbar gemacht werden können, wie etwa, neben anderen Beispielen, wenn eine virtuelle Maschine und Anwendung dekonstruiert oder verkleinert und später im Rahmen einer vertikalen Skalierung erneut instanziiert werden.
  • In einigen Fällen kann die Attestierung in Verbindung mit einem Clientserver oder einer Frontend-Backend-Interaktion (z. B. über ein oder mehrere Netzwerke 130) zwischen einer auf einem Hostsystem gehosteten Anwendung (z. B. 105, 110, 115) und einem Backend-Dienst durchgeführt werden, der von einem entfernten Backend-System (z. B. 140) gehostet wird. Sensible Daten und Transaktionen können bei solchen Interaktionen stattfinden, und die Anwendung kann gegenüber dem Backend-System unter Verwendung eines Attestierungssystems (z. B. 120) ihre Vertrauenswürdigkeit und Sicherheit bestätigen (und umgekehrt). In einigen Implementierungen kann das Attestierungssystem selbst auf dem Backend-System gehostet werden. In anderen Fällen kann ein Backend-System (z. B. 140) (oder sogar eine andere Hostvorrichtung in einer Peer-to-Peer-Attestierung) die Attestierungsdienste eines separaten Attestierungssystems (z. B. 105) in Anspruch nehmen. Die Attestierung gegenüber einem Backend-System 140 kann den Zugriff auf höhere Berechtigungen, sensible Daten, Schlüssel, Dienste etc. erleichtern, die für andere Systeme beschränkt sind, die ihre Vertrauensstufe nicht bestätigen können. Tatsächlich können geheime Daten, die in einer Anwendung verwaltet werden, Geheimnisse enthalten, die unter anderem einer Anwendung oder einer virtuellen Maschine durch einen Backend-Dienst (z. B. 140) basierend auf einer erfolgreichen Attestierung der Anwendung oder der virtuellen Maschine anvertraut werden.
  • Ein Bereitstellungssystem 125 kann eine Datenbank oder ein anderes Repository von Zertifikaten verwalten, die verschiedenen Hostplattformen (z. B. 105, 110, 115) oder virtuellen Maschinen zugeordnet sind, die zur Implementierung vertrauenswürdiger Ausführungsumgebungen oder sicherer Enklaven ausgestattet sind. Jedes der Zertifikate kann von Schlüsseln abgeleitet werden, z. B. Stammschlüsseln, die für die Hostvorrichtungen oder virtuellen Maschinen festgelegt wurden. Solche Schlüssel können selbst auf dauerhaft verwalteten, sicheren Geheimnissen basieren, die während der Herstellung auf den Hostvorrichtungen bereitgestellt werden. Im Falle von virtuellen Maschinen oder Plattformen, die mehrere Vorrichtungen verwenden (z. B. eine Serverarchitektur), kann das Geheimnis, neben anderen Beispielen, für die virtuelle Maschine und die Plattform festgelegt und bei einem Registrierungssystem 130 registriert werden. Die Stammschlüssel oder Geheimnisse bleiben für die Hostplattform oder die virtuelle Maschine geheim und können neben anderen Implementierungen als Sicherung, einem Code in dem sicheren dauerhaften Speicher, implementiert werden. Der Schlüssel kann das Geheimnis selbst sein oder ein von dem Geheimnis abgeleiteter Schlüssel. Das Zertifikat kann den Schlüssel möglicherweise nicht identifizieren, und der Schlüssel kann nicht aus dem Zertifikat abgeleitet werden, allerdings können Signaturen, die von dem Schlüssel erzeugt werden (und z. B. in einem Quote enthalten sind), als von einem bestimmten Code von einer bestimmten der Hostplattformen oder virtuellen Maschinen stammend identifiziert werden, für die ein Zertifikat basierend auf dem entsprechenden Zertifikat verwaltet wird. Auf diese Weise können sich ein Hostsystem (z. B. 105, 110, 115) oder darauf gehostete virtuelle Maschinen gegenüber dem Bereitstellungssystem 125 authentifizieren und (durch das Bereitstellungssystem 125) mit Attestierungsschlüsseln, Stammschlüsseln, Versiegelungsschlüsseln und anderen kryptografischen Strukturen versehen werden, die das Bereitstellungssystem 125 der Hostvorrichtung oder der virtuellen Maschine des Weiteren und auf sichere Weise zuordnen kann. Diese Attestierungsschlüssel können dann von sicheren Enklaven auf den entsprechenden Hostsystemen (z. B. 105, 110, 115) oder der virtuellen Maschine verwendet werden, um eine Attestierung für eine oder mehrere auf der Hostvorrichtung vorhandenen Anwendungen oder Enklaven durchzuführen.
  • Verschiedene Hostplattformen können mit einem Attestierungssystem (z. B. 120), Bereitstellungssystemen (z. B. 125), Quellsystem (z. B. 135) und Backend-Systemen (z. B. 140) über ein oder mehrere Netzwerke (z. B. 130) zusammenwirken. Die Netzwerke 130 können in einigen Implementierungen lokale und Fernnetzwerke, drahtlose und drahtgebundene Netzwerke, öffentliche und private Netzwerke und jedes andere Kommunikationsnetzwerk beinhalten, das die Kommunikation zwischen den Systemen ermöglicht. Ferner können zwei oder mehr Attestierungssysteme (z. B. 120), Bereitstellungssysteme (z. B. 125) und Backend-Systeme (z. B. 140) in einem einzigen System kombiniert werden. Kommunikationen über die Netzwerke 130, die diese verschiedenen Systeme (z. B. 105, 110, 115, 120, 125, 135, 140) miteinander verbinden, können gesichert werden. In einigen Fällen kann eine sichere Enklave auf einem Host (z. B. 105, 110, 115 etc.), neben anderen Beispielen, eine Kommunikation mit einem Attestierungssystem 120, Bereitstellungssystemen (z. B. 125) und/oder Quellsystemen (z. B. 135) unter Verwendung eines sicheren Kanals einleiten.
  • Im Allgemeinen können „Server“, „Vorrichtungen“, „Geräte“, „Computervorrichtungen“, „Hostvorrichtungen“, „Benutzergeräte“, „Clients“, „Server“, „Computer“, „Plattformen“, „Umgebungen“, „Systeme“ etc. (z. B. 105, 110, 115, 120, 125, 135, 140 etc.) elektronische Datenverarbeitungsvorrichtungen enthalten, die betreibbar sind, um Daten und Informationen, die der Datenverarbeitungsumgebung 100 zugeordnet sind, zu empfangen, übertragen, verarbeiten, speichern oder verwalten. So wie sie in diesem Dokument verwendet werden, sollen die Begriffe „Computer“, „Computervorrichtung“, „Prozessor“ oder „Verarbeitungsvorrichtung“ jede geeignete Verarbeitungsvorrichtung umfassen, die dazu vorgesehen ist, Datenverarbeitungsaufgaben durchzuführen, die mit der Ausführung von computerlesbaren Anweisungen übereinstimmen. Ferner können beliebige, alle oder einige der Computervorrichtungen dazu vorgesehen sein, ein beliebiges Betriebssystem, einschließlich Linux, UNIX, Windows Server etc., sowie virtuelle Maschinen auszuführen, die dazu vorgesehen sind, die Ausführung eines bestimmten Betriebssystems zu virtualisieren, einschließlich angepasster und proprietärer Betriebssysteme. Die Computervorrichtungen können ferner mit Kommunikationsmodulen ausgestattet sein, um die Kommunikation mit anderen Computervorrichtungen über ein oder mehrere Netzwerke (z. B. 130) zu erleichtern.
  • Hostvorrichtungen (z. B. 110, 115) können ferner Computervorrichtungen beinhalten, die als ein oder mehrere lokale und/oder entfernte Client- oder Endbenutzergeräte implementiert sind, wie etwa Anwendungsserver, Personalcomputer, Laptops, Smartphones, Tablet-Computer, persönliche digitale Assistenten, Medien-Clients, webfähige Fernsehgeräte, Telepräsenzsysteme, Spielsysteme, Multimedia-Server, Set-Top-Boxen, intelligente Haushaltsgeräte, fahrzeuginterne Computersysteme und andere Vorrichtungen, die dazu vorgesehen sind, Anwendungen, Programme und Dienste, die durch Server innerhalb oder außerhalb der jeweiligen Vorrichtung (oder der Umgebung 100) bereitgestellt werden, zu empfangen, anzuzeigen, zusammenzustellen, zu senden oder auf andere Weise mit diesen zusammenzuwirken, auf diese zuzugreifen, sie zu bearbeiten, beanspruchen oder auf andere Weise zu nutzen. Eine Hostvorrichtung kann eine beliebige Computervorrichtung beinhalten, die betreibbar ist, um sich zumindest mit Servern, anderen Hostvorrichtungen, Netzwerken und/oder anderen Geräten unter Verwendung einer drahtgebundenen oder drahtlosen Verbindung zu verbinden oder mit diesen zu kommunizieren. Eine Hostvorrichtung kann in einigen Fällen ferner mindestens eine grafische Anzeigevorrichtung und Benutzeroberflächen beinhalten, einschließlich Touchscreen-Displays, die es einem Benutzer ermöglichen, grafische Benutzeroberflächen von Anwendungen, Tools, Diensten und anderer in der Umgebung 100 bereitgestellter Software anzuzeigen und mit diesen zusammenzuwirken. Es versteht sich, dass es eine beliebige Anzahl von Hostvorrichtungen geben kann, die der Umgebung 100 zugeordnet sind, sowie eine beliebige Anzahl von Hostvorrichtungen außerhalb der Umgebung 100. Ferner können die Begriffe „Hostvorrichtung“, „Client“, „Endbenutzergerät“, „Endpunkt-Gerät“ und „Benutzer“, soweit angemessen, gleichbedeutend verwendet werden, ohne vom Schutzumfang dieser Offenbarung abzuweichen. Während jedes Endbenutzergerät in Bezug auf die Verwendung durch einen Benutzer beschrieben werden kann, sieht diese Offenbarung darüber hinaus neben anderen Beispielen vor, dass mehrere Benutzer einen Computer verwenden können oder dass ein Benutzer mehrere Computer verwenden kann.
  • Ein Hostsystem (z. B. 105) kann ferner konfiguriert sein, um eine oder mehrere virtuelle Maschinen zu hosten. Zum Beispiel kann eine Hostvorrichtung einen VM-Monitor (VMM) und/oder einen Hypervisor umfassen, der zum Hosten von virtuellen Maschinen auf der Hostvorrichtung verwendet werden kann. Eine Hostvorrichtung kann zusätzlich verschlüsselten oder anderweitig gesicherten Speicher enthalten oder reservieren, um gesicherte Enklaven zu ermöglichen, einschließlich der gesicherten Enklaven, die neben anderen Beispielen auf oder in Verbindung mit einer oder mehreren auf dem Hostsystem gehosteten virtuellen Maschinen (z. B. 105) gehostet werden sollen.
  • Während 1 als eine Vielzahl von Elementen enthaltend oder diesen zugeordnet beschrieben ist, kann auch nur ein Teil aller Elemente, die in dem System 100 von 1 veranschaulicht sind, in jeder alternativen Implementierung der vorliegenden Offenbarung verwendet werden. Außerdem können sich eines oder mehrere der hierin beschriebenen Elemente außerhalb des Systems 100 befinden, während in anderen Fällen bestimmte Elemente in einem oder mehreren der anderen beschriebenen Elemente oder als Teil davon enthalten sein können, sowie andere Elemente, die in der veranschaulichten Implementierung nicht beschrieben sind. Ferner können bestimmte Elemente, die in 1 veranschaulicht werden, mit anderen Komponenten kombiniert werden und für zusätzlich zu den hierin beschriebenen Zwecken für alternative oder zusätzliche Zwecke verwendet werden.
  • Unter Bezugnahme auf das Beispiel von 2 wird ein vereinfachtes Blockdiagramm 200 gezeigt, das mindestens einen Teil einer Computervorrichtung veranschaulicht, die dazu dient, einen kryptografischen Schutz in einer beispielhaften Datenverarbeitungsumgebung zu implementieren. Beispielsweise kann eine Ausführungsform einer Computervorrichtung einen Datenprozessor 210 enthalten, der Speicherverschlüsselungsoperationen für den Geheimhaltungs-, Integritäts- und Replay-Schutz ausführt. Der Prozessor 210 kann in einer Computervorrichtung verwendet werden, die Systeme implementiert, wie etwa einen Desktop-Computer, einen Tablet-Computer, einen Laptop-Computer, ein Netbook, einen Notebook-Computer, einen persönlichen digitalen Assistenten (PDA), einen Server, eine Workstation, ein Mobiltelefon, eine mobile Computervorrichtung, ein Smartphone, ein Internetgerät oder eine beliebige andere Art von Computervorrichtung. In einer anderen Ausführungsform kann der Prozessor 210 in einem Systemon-Chip (SOC)-System verwendet werden.
  • Der Prozessor 210 umfasst einen oder mehrere Verarbeitungskerne 240 zum Ausführen von Anweisungen des Systems. Ein Verarbeitungskern (z. B. 240) kann zum Beispiel eine Vorabruflogik zum Abrufen von Anweisungen, eine Dekodierungslogik zum Dekodieren der Anweisungen, eine Ausführungslogik zum Ausführen von Anweisungen und dergleichen enthalten. Der Prozessor 210 enthält einen Cache 260 zum Zwischenspeichern von Anweisungen und/oder Daten. Der Cache 260 kann zum Beispiel einen Cache der Ebene 1, Ebene 2 oder einen Cache der letzten Ebene (Last Level Cache, LLC) 265 oder eine beliebige andere Konfiguration des Cachespeichers innerhalb des Prozessors 210 enthalten.
  • In einem Beispiel kann eine Speichersteuerung 230 bereitgestellt werden, die konfiguriert ist, um Funktionen auszuführen, die es dem Prozessor 210 ermöglichen, auf einen Hauptspeicher 220, der einen flüchtigen Speicher und/oder einen nichtflüchtigen Speicher enthält, zuzugreifen und mit diesem zu kommunizieren. In einer Ausführungsform ist die Speichersteuerung 230 mit einem Systemagenten 280 gekoppelt, der eine Speicherverschlüsselungs-Engine (Memory Encryption Engine, MEE) 250 enthält. In einer Ausführungsform befindet sich die MEE 250 zwischen dem Cache der letzten Ebene 265 und der Speichersteuerung 230, um für die Datenzeilen, die in einen geschützten Bereich 225 des Hauptspeichers 220 hinein und aus diesem heraus bewegt werden, die Verschlüsselung, Entschlüsselung und Authentifizierung durchzuführen. Im Beispiel von 2 befindet sich die MEE 250 auf dem Prozessorchip, während sich der Speicher 220 außerhalb des Prozessorchips befindet.
  • Gemäß einer Ausführungsform der Erfindung enthält die MEE 250 eine Logik, die in einer Hardwareschaltung und/oder Firmware implementiert ist, um mehrere Speicherleseanforderungen parallel zu verarbeiten, um die Zugriffslatenz auf den geschützten Bereich 225 zu verbessern. Die MEE 250 arbeitet mit einer Zählermodus-Verschlüsselung, bei der der Startwert (oder „Versionswert“) der Verschlüsselung für eine Datenzeile zeitlich und räumlich eindeutig ist. Wie zuvor beschrieben, kann die räumliche Eindeutigkeit unter Verwendung der Adresse der Datenzeile erreicht werden, auf die zugegriffen wird, während die zeitliche Eindeutigkeit durch Verwendung eines Zählers erreicht werden kann, der als Version der Datenzeile dient. In einer Ausführungsform schützt die MEE 250 auch die Datenzeilen in dem geschützten Bereich 225 des Hauptspeichers 220 unter Verwendung einer Zählerbaumstruktur (hierin auch als „Replay-Integritätsbaum“, „Replay-Baum“ und „Integritätsbaum“ bezeichnet). Die MEE kann auch die Integrität der geschützten Daten (und der Zeilen der Zählerbaumstruktur) durch Nachrichtenintegritätscodes, wie etwa Nachrichtenauthentifizierungscodes (Message Authentication Codes, MACs), bewahren. Die Versionen der Datenzeilen sind Teil dieser Zählerbaumstruktur. Eine Ausführungsform der Zählerbaumstruktur wird beispielsweise in Verbindung mit 4 beschrieben, wie nachstehend dargelegt. Die Daten zu Version, MAC(s) und Integritätsbaum, die zum Implementieren eines beispielhaften Zählermodus-Verschlüsselungsschemas verwendet werden, können Sicherheitsmetadaten verkörpern. In einigen Implementierungen kann sich ein Teil der Sicherheitsmetadaten in dem geschützten Bereich 225 selbst befinden, während sich andere Teile der Sicherheitsmetadaten außerhalb des geschützten Bereichs 225 befinden (z. B. um neben anderen beispielhaften Implementierungen und Überlegungen bei Bedarf zugewiesen zu werden, um „gestohlenen“ Speicher aus dem geschützten Bereich 225 zu beschränken).
  • Wie vorstehend bei der Erörterung des Beispiels von 1 erwähnt, können Cache-Datenzeilen auf Speicherseiten innerhalb des geschützten Bereichs 225 zur Verwendung in Verbindung mit sicheren Enklaven zugewiesen werden, die unter Verwendung eines Computersystems implementiert werden, das mit einer Funktionalität ausgestattet ist, wie sie in dem Beispiel von 2 erwähnt wurde. Zum Beispiel kann unter Bezugnahme auf 3 eine Anwendungs-Enklave auf einer Anwendung (z. B. 300) bereitgestellt werden, um die gesamte oder einen Teil einer gegebenen Anwendung zu schützen und die Attestierung bezüglich der Anwendung (und ihrer Sicherheitsmerkmale) zu ermöglichen. Zum Beispiel kann ein Dienstanbieter 305, wie etwa ein Backend-Dienst oder ein Webdienst, es vorziehen oder verlangen, dass Clients, mit denen er eine Schnittstelle bildet, bestimmte Sicherheitsmerkmale oder -garantien besitzen, sodass der Dienst 305 überprüfen kann, dass er mit demjenigen Transaktionen durchführt, von dem der Client sagt, dass er es ist. Zum Beispiel kann Malware (z. B. 325) mitunter so aufgebaut sein, dass sie die Identität eines Benutzers oder einer Anwendung vortäuscht, um zu versuchen, sensible Daten aus einer Transaktion mit dem Dienst 305 zu gewinnen, diesen zu infizieren oder sich anderweitig böswillig zu verhalten. Eine signierte Attestierung (oder einfach „Attestierung“) kann es einer Anwendung (z. B. 320) ermöglichen, zu überprüfen, ob es sich um eine rechtmäßige Instanz der Anwendung (d. h. nicht um Malware) handelt. Andere Anwendungen (z. B. 320), die nicht mit einer sicheren Anwendungs-Enklave ausgestattet sind, sind möglicherweise rechtmäßig, können aber keine Attestierung gegenüber dem Dienstanbieter 305 leisten, wodurch der Dienstanbieter bis zu einem gewissem Grad an der Authentizität und Vertrauenswürdigkeit der Anwendung zweifeln kann. Ferner können Hostsystemplattformen (z. B. 300) emuliert werden (z. B. durch den Emulator 310), um zu versuchen, eine falsche Transaktion mit dem Dienst 305 durchzuführen. Die Attestierung durch eine sichere Enklave kann vor solchen unsicheren, böswilligen und fehlerhaften Transaktionen schützen.
  • Grundsätzlich kann es eine Datenverarbeitungsplattform, die mit Logik zum Implementieren von gesicherten Speicherbereichen für die Verwendung durch sichere Enklaven (und andere Verwendungszwecke) ausgestattet ist, ermöglichen, dass Software auf vertrauenswürdige Weise ausgeführt wird und geheime Daten verarbeitet. Dies kann vor böswilligen Akteuren schützen, einschließlich solchen, die eine volle Kontrolle über das System und die darauf auf jeder Berechtigungsstufe ausgeführte Software haben und den Inhalt des DRAM lesen oder ändern können (einschließlich Kopieren und Replay). Zum Beispiel kann die Datenverarbeitungsplattform einen Vertrauensbereich definieren, der nur die internen CPU-Informationen enthält. Mit der Plattform kann ein Satz von CPU-Anweisungen bereitgestellt werden, die von einem hardwarebasierten Zugriffssteuerungsmechanismus unterstützt werden, um das Laden von Anwendungscode und Daten aus dem Speicher zu ermöglichen, während diese in einem dedizierten gesicherten Speicherbereich (z. B. DRAM) inkrementell gesperrt werden, und ihre kryptografischen Messungen durchzuführen. Nachdem der Code geladen ist, kann er in einem speziellen Modus als sichere Enklave ausgeführt werden, sodass er von allen anderen Prozessen im System isoliert bleibt (z. B. wie durch den Zugriffskontrollmechanismus geregelt).
  • Dementsprechend können solche Datenverarbeitungsplattformen es einem Geheimnisinhaber ermöglichen, ein Geheimnis gegenüber einer vertrauenswürdigen Enklave offenzulegen. Die vertrauenswürdige Enklave kann gegenüber einer Entität, die kein Bestandteil der Plattform ist (oder einer anderen Enklave auf derselben Plattform), nachweisen, dass sie auf einem wirklichen Prozessor mit einer solchen Sicherheitsfunktion ausgeführt wird und dass der Wert, den sie für ihre kryptografisch gemessene Identität meldet, vertrauenswürdig ist.
  • In einigen Implementierungen kann die Attestierung auf der Grundlage eines signierten Datenelements oder „Quotes“ bereitgestellt werden, das unter Verwendung eines Attestierungsschlüssels, der auf der Plattform oder der virtuellen Maschine, die die Anwendung hostet, sicher bereitgestellt wird. Zum Beispiel kann eine Anwendung (z. B. 320) bereitgestellt werden, die mit einer sicheren Anwendungs-Enklave bereitgestellt wird, um Daten sicher zu verwalten und/oder bei Transaktionen sicher mit einem Backend-System 305 zu kommunizieren. Zusätzliche gesicherte Enklaven können bereitgestellt werden (d h. unabhängig von der sicheren Anwendungs-Enklave), um die Anwendung und ihre Enklave zu messen oder zu bewerten, die Messung (die in dem Quote enthalten ist) zu signieren und bei der Bereitstellung von Schlüsseln für die eine oder mehrere Enklaven behilflich zu sein, die zum Signieren des Quotes und Einrichten gesicherter Kommunikationskanäle zwischen Enklaven oder zwischen einer Enklave und einem externen Dienst oder System (z. B. 305) verwendet werden. Zum Beispiel können eine oder mehrere Bereitstellungs-Enklaven bereitgestellt werden, um mit einem entsprechenden Bereitstellungssystem zu kommunizieren, um Attestierungsschlüssel zur Verwendung durch eine Quote-Enklave und/oder Anwendungs-Enklave zu erhalten. Eine oder mehrere Quote-Enklaven können bereitgestellt werden, um unter anderem eine Anwendung und/oder die entsprechende Anwendungs-Enklave zuverlässig zu messen oder zu bewerten und die Messung mit dem von der Bereitstellungs-Enklave erhaltenen Attestierungsschlüssel durch das entsprechende Bereitstellungsdienstsystem zu signieren.
  • Durch die Attestierung kann ein vertrauenswürdiger Kanal mit einer identifizierten Enklave eingerichtet werden, um ein Geheimnis auf der Enklave bereitzustellen. Zur Handhabung der bereitgestellten Geheimnisse kann eine gesicherte Datenverarbeitungsplattform (wie in 2 veranschaulicht) mit zusätzlichen Anweisungen bereitgestellt werden, die es einer Enklave ermöglichen, eine beliebige Information mit einem geheimen Schlüssel zu verschlüsseln, der für die Plattform und deren Kennung eindeutig ist. Somit kann eine Enklave Geheimnisse an nicht vertrauenswürdigen Orten (z. B. einer Festplatte) sicher speichern (und abrufen). Wie vorstehend erwähnt, können geschützte Speicherbereiche bereitgestellt werden, um die sichere Handhabung von Geheimnissen zu ermöglichen. Um das Vertrauen in die kryptografische Identität einer Enklave, ihren beabsichtigten Ausführungsablauf und das Attestierungsprotokoll zu wahren, werden die entsprechenden Speicherseiten, die der Enklave zugewiesen und von dieser verwendet werden, gegen Manipulationen gesichert und vor Replay geschützt. Eine Speicherverschlüsselungs-Engine (MEE) (z. B. 250) stellt den Schutz für einen geschützten Speicherbereich (z. B. 225) bereit. In einigen Implementierungen kann die MEE Sicherheit durch einen Integritätsbaum, die kryptografischen Grundelemente, die die Verschlüsselung umsetzen, einen Nachrichtenauthentifizierungscode (MAC) und einen Anti-Replay-Mechanismus implementieren.
  • In einigen Implementierungen kann ein Integritätsbaum basierend auf dem Prinzip implementiert werden, dass nur die auf dem Chip befindlichen Ressourcen als vertrauenswürdig betrachtet werden. Da die interne Speicherung auf dem Chip begrenzt und teuer ist, kann nur ein Teil des Integritätsbaums auf dem Chip gespeichert werden, während verbleibende Teile des Integritätsbaums in dem geschützten Speicher gespeichert werden. Unterschiedliche Integritätsbäume verwenden verschiedene Kombinationen von Zählern und MAC-Tags (oder Hashes), um zwischen der Größe des internen Speichers und der Menge des geschützten Speichers, Kosten/Komplexität der Baum-„Durchlauf“-Überprüfungsabläufe und der sich daraus ergebenden Leistung abzuwägen. In einigen Implementierungen kann die MEE Schemata implementieren, die einen parallelisierbaren Verschlüsselungsmodus ermöglichen, neben anderen beispielhaften Funktionen einen MAC-Algorithmus, der kurze MAC-Tags mit einer kostengünstigen Hardware-Implementierung erzeugt.
  • Der interne Speicher (oder Cache) eines beispielhaften Prozessors kann relativ klein sein und einen viel schnelleren Zugriff als auf den Systemspeicher ermöglichen. Während des normalen Betriebs können Speichertransaktionen kontinuierlich von dem/den Kern(en) des Prozessors (z. B. 240) ausgegeben werden, und Transaktionen mit einem Cachefehler können von der Speichersteuerung (z. B. 230) gehandhabt werden. Die MEE 250 kann in einigen Implementierungen als eine Erweiterung der Speichersteuerung 230 betrieben werden, indem sie den Datenverkehr des Cachesystemspeichers (z. B. DRAM) übernimmt, der auf den geschützten Bereich 225 des Speichers zeigt. Ein zusätzlicher Teil des Speichers, der als „beschlagnahmter“ oder „gestohlener“ Bereich bezeichnet wird, beherbergt den Integritätsbaum der MEE. Der Zusammenschluss dieser Bereiche kann als der „MEE-Bereich“ bezeichnet werden, der einen Bereich physischer Adressen bildet, der zum Zeitpunkt des Startens auf vertrauenswürdige Weise auf eine bestimmte Größe festgelegt ist (z. B. 128 MB). In einigen Fällen kann die Gesamtheit der MEE-Region als geschützte oder gesicherte Speicherregion bezeichnet werden. Lese-/Schreibanforderungen an den geschützten Bereich können von der Speichersteuerung 230 an die MEE 250 weitergeleitet werden, die die Daten verschlüsselt (oder entschlüsselt), bevor sie an den DRAM gesendet (oder dort abgerufen) werden. Die MEE kann autonom weitere Transaktionen zur Überprüfung (oder Aktualisierung) des Integritätsbaums einleiten, wie etwa basierend auf einem Aufbau von Zählern und MAC-Tags (auch als eingebettete MACs bezeichnet). Die eigenständig eingeleiteten Transaktionen greifen auf den beschlagnahmten Bereich auf dem DRAM zu und auch auf ein Array auf dem Chip, das als Wurzel des Baums dient.
  • Ein Integritätsbaum kann als Mechanismus für die Verwendung einer kleinen Menge internen Speichers dienen, um eine größere Datenmenge zu schützen. Bei einer Speicherverschlüsselungstechnologie, die einen internen Integritätsschlüssel verwenden kann, können eingebettete MACs in Schichten des Integritätsbaums verwendet werden. Die Integrität kann als gegen Manipulationen gesichert angesehen werden, wenn mindestens die Wurzel (und in einigen Fällen nur die Wurzel) auf dem Chip gespeichert ist. Die Seiten innerhalb des geschützten Speicherbereichs werden vom Integritätsbaum „abgedeckt“, um einen Schutz vor Replay zu bieten. 4 veranschaulicht einen Anti-Replay-Zähler, der durch eine beispielhafte Integritätsbaumstruktur für Integritäts- und Replay-Schutz gemäß einer Ausführungsform implementiert ist. Es wird darauf hingewiesen, dass die hierin beschriebene Zählermodus-Verschlüsselung nur ein Beispiel darstellt; andere Ausführungsformen können mit alternativen Mechanismen der Zählermodus-Verschlüsselung arbeiten. In alternativen Ausführungsformen können neben anderen Varianten zum Beispiel mehr oder weniger Ebenen in der Integritätsbaumstruktur als in 4 vorhanden sein.
  • Eine Integritätsbaumstruktur umfasst eine Hierarchie von Ebenen von Baumknoten. Die oberste (Wurzel-)Ebene enthält eine Sequenz von auf dem Chip befindlichen Zählern (d. h. die L3-Zähler 410), die in dem internen Speicher des Prozessorchips gespeichert sind. Der interne Speicher umfasst den statischen Direktzugriffsspeicher (SRAM), Registerdateien und jeden anderen geeigneten Speicher im Prozessorchip, ist jedoch nicht darauf beschränkt. Da sich die L3-Zähler 410 auf dem Prozessorchip befinden, sind ihre Inhalte vertrauenswürdig und vor passiven und aktiven Angriffen geschützt. Die vertrauenswürdige Grenze (als gestrichelte Linie 405 gezeigt) endet jedoch bei den L3-Zählern 410. In einer Ausführungsform liegen die unteren Ebenen des Integritätsbaums außerhalb des Prozessorchips (z. B. in dem Hauptspeicher 220 des Beispiels von 2).
  • In einer Ausführungsform ist jeder L3-Zähler 410 mit einem Block von L2-Zwischenmetadaten verbunden, der eine Sequenz von L2-Zählern 420 enthält. Jeder L2-Zähler 420 ist mit einem Block von L1-Zwischenmetadaten verbunden, der eine Sequenz von Ll-Zählern 430 enthält. Die Blöcke, die die L1-Zwischenmetadaten und die L1-Zähler 430 darstellen, wurden in 4 zur Vereinfachung der Darstellung weggelassen. Jeder L1-Zähler 430 ist mit einem Block von L0-Zwischenmetadaten verbunden, der eine Sequenz von L0-Zählern 440 enthält. Jeder L0-Zähler 440 ist mit einem Versionsblock 450 verbunden, der eine Folge von Versionsknoten 460 (dargestellt durch „V“) enthält. Jeder Versionsknoten 460 ist einer verschlüsselten Datenzeile 480 in dem geschützten Bereich (z. B. 225) des Hauptspeichers (z. B. 220) zugeordnet. Der Inhalt eines Versionsknotens 260 kann die Version der zugeordneten Datenzeile sein, die eine zeitliche Komponente des Verschlüsselungsstartwerts in der Zählermodus-Verschlüsselung bereitstellt. Die Version ist der Startwert, der verschlüsselt werden soll, um ein kryptografisches Pad zu erzeugen, das dann mit dem Verschlüsselungs-/Klartextinhalt der Datenzeile mittels exklusivem ODER („XOR“) verschlüsselt werden kann, um den Klar-/Verschlüsselungstext zu erzeugen. Da die Zähler der unteren Ebenen (einschließlich der Zähler L2, L1 und L0 und der Versionsknoten 260) sich nicht auf dem Prozessorchip befinden und daher anfällig für Angriffe sind, werden jeder Zähler und jeder Versionsknoten mit einem eingebetteten Nachrichtenauthentifizierungscode (MAC) kodiert (als Blöcke mit schraffierten Linien gezeigt), um deren Integrität zu gewährleisten.
  • In einer Ausführungsform wird jeder eingebettete MAC über der Zeile, in die er eingebettet ist, berechnet, wobei ein entsprechender Zähler der nächsthöheren Ebene als Eingabewert verwendet wird. Im Beispiel von 4 wird der eingebettete MAC für den Versionsblock 450, der L0.sub.3 zugeordnet ist (in 4 als mittlerer Versionsblock gezeigt), unter Verwendung der Werte von V0 -Vp und seinem entsprechenden L0-Zähler (L03 ) berechnet. Der Wert dieses eingebetteten MAC wird in der Zeile der Versionsblöcke 450 gespeichert (in 4 als schraffierte Kästen gezeigt). Der eingebettete MAC für jede Zeile von L0, L1 und L2 wird auf ähnliche Weise berechnet. Die L3-Zähler benötigen keine eingebetteten MACs, da der Inhalt der L3-Zähler innerhalb der vertrauenswürdigen Grenze 405 liegt.
  • Der gesamte Integritätsbaum, der über den geschützten Speicherbereich hinweg von den Versionen bis zu den L3-Zählern aufgebaut wird, bietet Replay-Schutz für die Datenzeilen in dem geschützten Speicherbereich. Der Prozess des Replay-Schutzes verläuft wie nachfolgend beschrieben. Wenn ein Prozessor einen Lese- oder einen Schreibvorgang an einer Datenzeile ausführt, lädt die MEE 250 eine Verzweigung des Integritätsbaums, der Baumknoten (auch als Zweigknoten bezeichnet) enthält, die durch die Adresse der Datenzeile identifiziert werden. Das Laden der Baumknoten entlang einer Verzweigung und das Überprüfen der Authentizität ihrer Werte wird hier als Baumdurchlauf bezeichnet. Baumdurchläufe verlaufen von der untersten Ebene des Integritätsbaums (d. h. den Versionsknoten 460) zu den Wurzelknoten (d. h. den L3-Zählern). Die Authentizität der Baumknotenwerte muss überprüft werden, da sich ein Hauptteil der Baumstruktur in dem Hauptspeicher befindet und daher für Angriffe anfällig ist. Im Falle eines Schreibvorgangs wird der Baumdurchlauf durchgeführt, um die Authentizität der Zweigknotenwerte zu überprüfen und diese Werte zu aktualisieren. Im Falle eines Lesevorgangs wird der Baumdurchlauf ebenfalls durchgeführt, um die Authentizität der Zweigknotenwerte zu überprüfen, allerdings ohne diese Werte zu aktualisieren. In einer Ausführungsform enthält die MEE 250 eine Schaltung eines endlichen Zustandsautomaten, die den Baumdurchlauf implementiert.
  • In einer Ausführungsform wird jede verschlüsselte Datenzeile 480 mit einem MAC-Knoten 470 kodiert, der einen MAC enthält, der aus dem Inhalt der Datenzeile 480 berechnet wurde. Bei jedem Zurückschreiben der Datenzeile in den Speicher aktualisiert die MEE 250 (z. B. in 2) diesen MAC, um den neuesten im Speicher gespeicherten Datenwert widerzuspiegeln. Wenn eine Datenzeile aus dem Speicher gelesen wird, überprüft die MEE 250 den Wert ihres zugeordneten MAC-Knotens 470, um die Integrität der gelesenen Datenzeile festzustellen. Die Verwendung des MAC-Knotens 470 bietet einen Integritätsschutz gegen Änderungsangriffe auf eine speicherresidente Datenzeile.
  • Wenn der Prozessor einen Schreibvorgang ausführt, um eine der verschlüsselten Datenzeilen 480 in den geschützten Speicherbereich zurückzuschreiben (z. B. beim Versetzen einer Datenzeile aus einem auf dem Chip befindlichen Cache der letzten Ebene in den geschützten Bereich im Hauptspeicher), identifiziert die MEE 250 den Versionsknoten 460 und die L0-, L1-, L2- und L3-Zähler (410-440), die dieser Datenzeile zugeordnet sind. Die MEE 250 aktualisiert den der Datenzeile zugeordneten MAC 470 und erhöht die Version dieser Datenzeile in dem identifizierten Versionsknoten 460. Des Weiteren aktualisiert die MEE 250 auch die identifizierten L0-, L1-, L2- und L3-Zähler (410-440) dieser Datenzeile sowie den eingebetteten MAC, der der aktualisierten Version und den Zählern zugeordnet ist. Dieser Aktualisierungsprozess verläuft von der untersten Ebene des Integritätsbaums bis zur Wurzelebene der L3-Zähler, die auf dem Chip des Prozessorchips sicher gespeichert sind und für die somit ein Schutz vor Angriffen gewährleistet ist. Die Zähler auf jeder Ebene des Integritätsbaums fungieren als Versionen für die nächstniedrigere Ebene, die mit den Versionsknoten 460 endet, die die Versionen für die Datenzeilen speichern. Daher werden beim Schreiben in eine Datenzeile alle Zähler (einschließlich der Version) und ihre zugeordneten eingebetteten MACs entlang der durch die Adresse der Datenzeile identifizierten Verzweigung aktualisiert, um die Versionsaktualisierung widerzuspiegeln.
  • Um einen Replay-Schutz zu gewährleisten, wird jedes Mal, wenn eine Datenzeile aus dem geschützten Bereich geladen wird, die Authentizität im Vergleich zu den Baumknoten bis zu der Wurzel des Integritätsbaums überprüft. Eine mangelnde Übereinstimmung auf einer beliebigen Ebene verweist auf einen potenziellen Angriff und löst eine Sicherheitsausnahme aus, wodurch der Angriff abgewehrt wird. Insbesondere, wenn ein Prozessor einen Lesevorgang an einer der verschlüsselten Datenzeilen 480 ausführt, identifiziert die MEE 250 die Version und die L0-, L1-, L2- und L3-Zähler (410-440) dieser Datenzeile. Lesevorgänge verändern die Werte der Version und der L0-, L1-, L2- und L3-Zähler (410-440) nicht. Bei einem Lesevorgang prüft die MEE 250 den der Datenzeile zugeordneten MAC 470. Darüber hinaus prüft die MEE 250 den eingebetteten MAC, der jedem der L0-, L1-, L2- und L3-Zähler (410-440) der Version zugeordnet ist. Dieser Prüfprozess verläuft von der untersten Ebene des Integritätsbaums bis zum sicheren Wurzelzähler L3.
  • In einer Ausführungsform werden die in einen Baumdurchlauf geladenen Baumknoten lokal in einem MEE-Cache gespeichert, wobei es sich um einen lokalen Cache der MEE 250 handelt. Der MEE-Cache speichert die Werte der Baumknoten (einschließlich der Versionsknoten und der eingebetteten MACs), die durch die vorherigen Anforderungen überprüft wurden. Der Inhalt des MEE-Caches ist sicher, da er sich auf dem Prozessorchip befindet. Bei Lesevorgängen wird ein Baumdurchlauf beendet, wenn der erste Knoten entlang der Verzweigung des Baumdurchlaufs in dem MEE-Cache gefunden wird. Bei Schreibvorgängen wird ein Baumdurchlauf beendet, wenn der erste Knoten entlang der Verzweigung des Baumdurchlaufs in dem MEE-Cache gefunden und festgestellt wird, dass der zwischengespeicherte Baumknoten einen modifizierten Zustand aufweist.
  • Um sicherzustellen, dass der Integritätsbaum korrekte Zählerwerte für alle Anforderungen zurückgibt, schließt die MEE 250 bei einer Schreibanforderung die Aktualisierung an allen Baumknoten entlang der Verzweigung der Schreibanforderung ab, bevor eine andere Anforderung (Lesen oder Schreiben), die einen beliebigen dieser Baumknoten gemeinsam nutzt, fortgeführt werden kann. Da Leseanforderungen die Werte des Integritätsbaums nicht verändern, können einige Leseanforderungen parallel verarbeitet werden, auch wenn diese Leseanforderungen einen oder mehrere der Baumknoten im Integritätsbaum gemeinsam nutzen.
  • In Übereinstimmung mit dem Vorstehenden ermöglichen einige Ausführungsformen einen parallelisierten Baumdurchlauf, bei dem mehrere Leseanforderungen parallel ablaufen können. Der parallelisierte Baumdurchlauf reduziert den Overhead für Integritäts- und Replay-Schutz. Der parallelisierte Baumdurchlauf basiert auf der Beobachtung, dass Leseanforderungen nicht serialisiert werden müssen, da das Lesen keinen Zählerwert in dem Integritätsbaum verändert. Schreibvorgänge aktualisieren hingegen die Zählerwerte in dem Integritätsbaum, sodass die korrekte Reihenfolge beibehalten werden muss. Bei Anforderungen, die einen Schreibvorgang beinhalten, muss die Abhängigkeit erzwungen werden, um sicherzustellen, dass die korrekten Zählerwerte für die Authentizitätsprüfung verwendet werden. In einer Ausführungsform führt die MEE 250 beim Empfang einer eingehenden Leseanforderung eine Abhängigkeitsprüfung durch, um zu bestimmen, ob die eingehende Leseanforderung einen der Baumknoten mit einer zuvor empfangenen Leseanforderung, die von der MEE 250 verarbeitet wird, gemeinsam nutzt und ob parallelisierte Baumdurchläufe durchgeführt werden können, falls die Baumknoten gemeinsam genutzt werden.
  • In einigen Implementierungen kann der Schutz und die Verschlüsselung jeder Zeile (oder „Cachezeile“) des geschützten Speichers durch unterstützende Daten oder „Metadaten“ aktiviert werden, die den Integritätsbaum (und die eingebetteten MACs der Integritätsbaumschichten), einen Versionswert und einen MAC-Wert für die Zeile enthalten. Diese Metadaten oder „Sicherheitsmetadaten“, auf die hierin Bezug genommen wird, können erhebliche Speicher-Overheads verursachen, die in einigen Fällen ein Speicher-Overhead von 25 % darstellen, was in einigen Anwendungen die Verwendung dieser Technologie unattraktiv machen kann. Dieser Overhead kann bei herkömmlichen Implementierungen statisch sein, sodass der Speicher vorab zugewiesen oder „gestohlen“ wird, um Sicherheitsmetadaten zu speichern, unabhängig davon, ob neben anderen beispielhaften Aspekten entsprechende Zeilen oder Seiten des geschützten Speichers tatsächlich von Enklaven innerhalb eines Systems zugewiesen und verwendet werden.
  • In einigen Implementierungen können Indirektionsverzeichnisse bereitgestellt werden, um die Sicherheitsmetadaten-Overheads um bis zu 94 % zu reduzieren. In einer herkömmlichen Implementierung, die ein Speicher-Overhead von 25 % zur Unterstützung entsprechender Sicherheitsmetadaten beinhaltet, kann die Verwendung eines Indirektionsverzeichnisses beispielsweise die Reservierung von nur 1,5 % des Speichers zulassen. Ferner kann eine Implementierung eines Indirektionsverzeichnisses zusätzlich die dynamische Zuweisung von zusätzlichem geschützten Speicher und entsprechender Sicherheitsmetadaten mit sich bringen (z. B. abhängig von dem von Enklaven auf der Plattform verwendeten Speicher). Ferner können Indirektionsverzeichnisse mit anderen Optimierungslösungen für Sicherheitsmetadaten-Overhead kombiniert werden, um noch weitere Vorteile zu erzielen, wie etwa, neben anderen beispielhaften Lösungen, Haupt-/Nebenzähler (wie in dem US-Patent 9.798.900 , das durch Bezugnahme hierin aufgenommen wird) und Krypto-Cachezeilen (wie in der US-Patentanmeldung mit der Seriennummer 14/863.353 beschrieben, die durch Bezugnahme hierin aufgenommen wird).
  • Unter Bezugnahme auf 5 wird ein Beispiel der Cache-Zeilengrößen und entsprechenden Mengen von Sicherheitsmetadaten veranschaulicht, die bereitgestellt werden, um ein Zählermodus-Verschlüsselungsschema zum Schutz des Speichers eines Beispielsystems zu implementieren. Beispielsweise zeigt Tabelle 505, dass zum Schutz von ungefähr 96 MB Daten insgesamt etwa 26 MB Sicherheitsmetadaten verwendet werden sollen. Fast 24 MB dieser Sicherheitsmetadaten werden über die Werte für den MAC und die Version bereitgestellt, die für entsprechende Datenseiten bereitgestellt werden sollen. Dementsprechend werden, um diesen Block von geschützten Daten in einem Beispiel vorab zuzuweisen (veranschaulicht durch das Diagramm 510), fast 25 % der gesamten zugewiesenen Daten 514 für die Speicherung der Sicherheitsmetadaten 512 reserviert. Wird jedoch ein Indirektionsverzeichnis verwendet, speichert das Indirektionsverzeichnis Zeiger (z. B. für die Seite des geschützten Speichers), um auf einen Teil der Sicherheitsmetadaten zu verweisen, die dynamisch (und außerhalb des Bereichs von Daten, der für geschützte Daten reserviert ist) zugewiesen werden können. In einem Beispiel können die Metadaten für niedrigere Ebenen in dem Baum (z. B. die MAC- und Versionsschichten) für eine Speicherseite dynamisch in dem Speicher zugewiesen und auf entsprechende Zeiger des Indirektionsverzeichnisses verwiesen werden. Dementsprechend können die Metadaten für niedrigere Ebenen in dem Baum (die den Großteil des Speicher-Overheads für Sicherheitsmetadaten ausmachen, der zum Implementieren eines entsprechenden Zählermodus-Verschlüsselungsschemas verwendet wird) stattdessen dynamisch zugewiesen werden. Außerdem können ferner Anweisungen für die Umwandlung von Seiten eingeführt werden, um das flexible Hinzufügen (z. B. die Umwandlung) von Seiten zu dem geschützten Speicher bereitzustellen, indem, neben anderen beispielhaften Vorteilen, ermöglicht wird, dass die entsprechenden Sicherheitsmetadaten flexibel hinzugefügt (und auf das Indirektionsverzeichnis verwiesen) werden. Zum Beispiel veranschaulicht das Diagramm 515 die Overhead-Einsparungen gegenüber dem Beispiel in dem Diagramm 510, wobei nur die unteren Ebenen des Integritätsbaums und des Indirektionsverzeichnisses für einen Block geschützten Speichers vorab zugewiesen sind, wodurch ein minimaler Speicher-Overhead von ungefähr 1,5 % erreicht wird. Ferner können Implementierungen eines Indirektionsverzeichnisses minimale zusätzliche Leistungs-Overheads beinhalten, die nur auf die Anwendungen und Prozesse beschränkt sind, die entsprechende Seiten des geschützten Speichers verwenden.
  • In dem Beispiel von 5 veranschaulicht das Diagramm 515 eine Implementierung, bei der der Zählerbaum (mit Ausnahme der Zähler der obersten Ebene) in dem Speicher gespeichert ist. In einem Beispiel mit einem 56b-MAC und einem 56b-Versionswert können acht MACs und acht Versionswerte jeweils in einer einzigen Cachezeile gespeichert werden. Ein Indirektionsverzeichnis (z. B. 530) kann basierend auf der Beobachtung bereitgestellt werden, dass der Großteil des Speicher-Overheads in dem MEE-Replay-Baum auf die Knoten der niedrigeren Ebene (d. h. den MAC und die Versionswerte) zurückzuführen ist. Ferner ist in diesem bestimmten Beispiel L3 die oberste Ebene in dem Replay-Baum und wird in dem auf dem Chip befindlichen Speicher gespeichert. Die Zwischenebenen L0-L2 des Replay-Integritätsbaums nehmen nur 1,3 % des gesamten geschützten Speichers in Anspruch (in diesem Beispiel 128 MB). Bei Indirektionsverzeichnissen werden für einen Baum der Ebene N die Baumebenen L0 bis LN-1 in dem gestohlenen Speicher gespeichert. Die niedrigeren Metadatenebenen (MAC und Versionen) können dynamisch zugewiesen werden, zum Beispiel, wenn eine Speicherseite für den Schutz festgelegt ist, wie etwa, wenn sie zur Verwendung mit einer Enklave umgewandelt wird.
  • Die MEE-Hardware berechnet die Adressen aller Baumknoten für einen bestimmten Zugriff bei Zulassung der Speicheranforderung an die MEE. Bei einer herkömmlichen MEE-Auslegung (dargestellt durch das Diagramm 510) besteht, aufgrund dessen, dass der gesamte Speicher für den Replay-Baum (d. h. die gesamten Sicherheitsmetadaten) in dem Speicher reserviert ist, eine feste 1:1-Zuordnung der Replay-Baumknoten von der Anforderungsadresse. Bei einer MEE, die ein Indirektionsverzeichnis verwendet, kann die MEE-Hardware, aufgrund dessen, dass die Zuweisung der unteren Ebene in den Bäumen dynamisch ist, die Baumknotenadressen nicht direkt berechnen, um den Baumdurchlauf von der Datenzeilenadresse selbst zu starten. Damit die MEE die Baumknoten abrufen kann, kann die MEE auf das Indirektionsverzeichnis zugreifen, um die Sicherheitsmetadaten zu erhalten, die nicht bereits in dem Speicher zugeordnet sind. Ein Indirektionsverzeichnis speichert Zeiger auf Seiten, auf denen die unteren Knoten in dem Baum für eine physische Seite gespeichert sind. Jede Seite in dem physischen Speicher besitzt einen eindeutigen Eintrag in dem Indirektionsverzeichnis, damit die Systemsoftware einen Zeiger auf die Sicherheitsmetadaten der niedrigeren Ebene für jede physische Seite speichern kann. Wie in Diagramm 515 gezeigt, ist das Indirektionsverzeichnis 530 auch in einem festen/gestohlenen Speicher vorab zugewiesen. Zum Beispiel würde in einer beispielhaften Implementierung, die einen physischen 64b-Adresszeiger für jede Seite verwendet, das Indirektionsverzeichnis einen zusätzlichen Speicher-Overhead von 0,2 % verursachen. In Kombination mit dem Speicher für höhere Ebenen in dem Baum verursacht das Indirektionsverzeichnis einen gesamten festen Speicher-Overhead von 1,5 % für die Indirektionsbäum.
  • Wie oben angemerkt, kann eine beispielhafte MEE zwei primäre kryptografische Mechanismen - Speicherverschlüsselung und Integritäts-/Replay-Schutz - verkörpern, die dazu vorgesehen sind, jeweils passive und aktive Angriffe abzuwehren. Die Speicherverschlüsselung dient in erster Linie dazu, vor einer Klasse von Hardwareangriffen zu schützen, bei denen der Angreifer versucht, die Datenzeilen während dem Verschieben auf und von dem Prozessorchip heimlich auszuspähen (passive Angriffe). Um sich gegen diese Angriffe zu wehren, kann eine MEE eine Verschlüsselung des MEE-Bereichs anwenden. Im Wesentlichen wird hier eine Datenzeile beim Verschieben in den Speicher von der MEE auf dem Chip verschlüsselt, bevor sie in dem Hauptspeicher gespeichert wird. Bei einem Speicherlesevorgang in dem geschützten Bereich wird die Datenzeile zuerst von der MEE entschlüsselt, bevor sie dem Prozessor zugeführt wird. Die Verschlüsselung und Entschlüsselung kann unter Verwendung der Zählermodus-Verschlüsselung erfolgen. Dadurch kann die kryptografische Arbeit, die zum Verschlüsseln/Entschlüsseln einer Datenzeile erforderlich ist, von den Daten selbst entkoppelt werden. Dies kann durch Verschlüsseln eines Startwerts (oder „Versionsknotens“) (unabhängig von den Daten) erfolgen, der eindeutig einer jeweiligen Datenzeile zugeordnet ist. Jede zu verschlüsselnde Datenzeile kann einen zugeordneten Versionsstartwert aufweisen. Der Startwert wird verschlüsselt (um ein „Pad“ zu erstellen), das zum Verschlüsseln/Entschlüsseln der Datenzeile verwendet wird, indem das kryptografische Pad mittels exklusivem ODER (XOR) mit der Datenzeile verknüpft wird.
  • Um noch einmal zur Erörterung des Beispiels von 4 zurückzukehren, stellt ein Integritätsbaum eine Zählerbaum-Organisation höherer Ebene bereit, die zum Schutz der Integrität und zur Gewährleistung eines Replay-Schutzes der Datenzeilen in dem durch eine MEE geschützten Speicherbereich verwendet wird. Wie vorstehend erläutert, besteht der Zählerbaum aus MAC-Knoten, Versionsknoten und Metadatenknoten und den Zählern der höchsten Ebene (oder L3-Zählern). Für jede Datenzeile in dem MEE-Bereich wird ein MAC-Wert pro Datenzeile zugeordnet. Bei jedem Zurückschreiben der Datenzeile in den Speicher wird dieser MAC aktualisiert, um die zuletzt in dem Speicher gespeicherten Daten widerzuspiegeln. Wenn eine Datenzeile aus dem Speicher gelesen wird, überprüft die MEE auch deren MAC. Dies gewährleistet den Schutz vor Änderungsangriffen auf die Datenzeile, während sich diese im Speicher befand, und bietet so den Integritätsschutz für den MEE-Bereich. Die Versionsknoten enthalten die Version einer Datenzeile, die bei jedem Zurückschreiben einer Datenzeile in den Speicher erhöht wird. Ein Metadatenknoten in dem Zählerbaum (L0, L1, L2) besteht aus Zählerwerten und einem eingebetteten MAC, der über die in dem Knoten gespeicherten Zähler berechnet wird. Als Eingabe für den eingebetteten MAC wird ein Zähler von der nächsthöheren Ebene in dem Baum verwendet. Dieser Vorgang wird bis zu den Wurzelzählern oder den Zählern der höchsten Ebene (L3) fortgesetzt, die sicher auf dem Chip im SRAM gespeichert werden. In einigen Implementierungen werden diese L3-Zähler niemals vom Prozessorchip verlagert, und für sie ist somit ein Schutz vor Angriffen gewährleistet. Im Wesentlichen fungieren die Zähler auf jeder Ebene des Baums als Versionen für die nächstniedrigere Ebene, die mit den Versionsknoten endet, der die Versionen für die Datenzeilen speichert. Daher müssen beim Schreiben in eine Datenzeile alle Zähler (einschließlich der Version) und die zugeordneten eingebetteten MACs entlang der Verzweigungen der Datenzeile aktualisiert werden, um sicherzustellen, dass die Zähler entlang der Baumverzweigung diese Aktualisierung nun widerspiegeln. Um einen Replay-Schutz zu gewährleisten, wird jedes Mal, wenn eine Datenzeile aus dem geschützten Bereich geladen wird, die Authentizität im Vergleich zu den Baumknoten bis zu der Wurzel überprüft. Eine mangelnde Übereinstimmung auf einer beliebigen Ebene verweist auf einen potenziellen Angriff und löst eine Sicherheitsausnahme aus, wodurch der Angriff abgewehrt wird.
  • Der Prozess des Ladens der Baumknoten entlang einer Verzweigung und das Überprüfen ihrer Authentizität verkörpert einen „Baumdurchlauf“. Zum Beispiel wird im Falle eines Schreibvorgangs der Baumdurchlauf vorgenommen, um die Baumknoten zu laden, die aktualisiert werden müssen, und ihre Authentizität zu überprüfen, da sie im Hauptspeicher angesiedelt waren. Im Falle eines Lesevorgangs stellt der Baumdurchlauf auch die Integrität des Lesevorgangs für die Datenzeilen fest. Die MEE enthält eine Logik (z. B. wie durch eine Ausführungseinheit und eine entsprechende Anweisung implementiert), die den Baumdurchlauf implementiert. In einigen Fällen werden mindestens einige der in einem Baumdurchlauf geladenen Baumknoten lokal in einem MEE-spezifischen Cache zwischengespeichert. Mit dem MEE-Cache kann ein Baumdurchlauf beendet werden, wenn der erste Knoten entlang des Baumdurchlaufs in dem Cache gefunden wird (bei Schreibvorgängen sollte der zwischengespeicherte Baumknoten einen modifizierten Zustand aufweisen, damit der Baumdurchlauf beendet wird). Dies ist der Fall, da ein Knoten in dem MEE-Cache als sicher angesehen wird, da er zuvor durch eine vorherige Anforderung vor dem Zwischenspeichern überprüft wurde, und demselben Zweck dient wie der L3-Knoten auf dem Prozessorchip.
  • Wie vorstehend erwähnt, kann eine MEEbasierte Architektur durch Bereitstellung eines Indirektionsverzeichnisses erweitert werden, um zu ermöglichen, dass mindestens einige der Sicherheitsmetadaten, die von der MEE verwendet werden, im laufenden Betrieb (und potenziell an beliebiger Stelle im Speicher) zugewiesen werden, anstatt dass die meisten oder alle Sicherheitsmetadaten zusammen mit der Speicherreservierung für einen geschützten Bereich vorab zugewiesen werden. In einem Beispiel sind die einzigen Sicherheitsmetadaten, die vorab zuzuweisen sind, die Schichten 525 des Integritätsbaums über dem MAC und den Versionsknoten und unter der/den obersten Schicht(en) (z. B. L3), die in dem auf dem Chip befindlichen Speicher gespeichert sind. Das Indirektionsverzeichnis 530 kann auch vorab zugewiesen werden, wie in 5 gezeigt. Alle anderen Sicherheitsmetadaten (z. B. die MACs und Versionen der gesicherten Seiten) können dynamisch in anderen Speicherbereichen (z. B. 550) zugeordnet werden. Zum Beispiel kann beim Identifizieren von Daten, die auf einer bestimmten Seite, die für den sicheren Speicher bestimmt ist, geschützt werden sollen, eine separate Sicherheitsmetadaten-Seite 545 identifiziert oder erstellt werden, auf die durch das Indirektionsverzeichnis 530 verwiesen wird. Der MAC und die Versionswerte für die geschützte Seite können berechnet und in die Sicherheitsmetadaten-Seite 545 geladen werden. Die MEE kann das Indirektionsverzeichnis hinzuziehen, um einen der bestimmten Seite entsprechenden Zeiger zu identifizieren, der auf die Sicherheitsmetadaten-Seite 545 verweist, die die MEE verwenden kann, um auf den MAC und die Version für die Seite zuzugreifen, einen zugeordneten Baumdurchlauf abzuschließen und eine Verschlüsselung/Entschlüsselung der Daten der bestimmten Seite durchzuführen.
  • Unter Bezugnahme auf das vereinfachte Blockdiagramm von 6 werden beispielhafte Adressenzuordnungen gezeigt, um Zeiger eines beispielhaften Indirektionsverzeichnisses zu veranschaulichen. Wie vorstehend erwähnt, können bei Indirektionsverzeichnissen die höheren Ebenen in einem Integritätsbaum weiterhin in einem gestohlenen Speicher gespeichert werden, und daher können die Zuordnungen zu diesen Ebenen direkt von der MEE aus der Anforderungsadresse der geschützten Seite berechnet werden. Die Ebenen des MAC und der Versionen (VER) sind hingegen nicht fest oder im Speicher reserviert und werden stattdessen dynamisch zugewiesen. Außerdem können sich MAC- und VER-Daten potenziell an einer beliebigen Stelle im Speicher befinden. Die flexible EPC-Architektur führt zwei Anweisungen ein, EMKEPC und EMKNONEPC, um eine reguläre Seite in eine sichere Seite und umgekehrt umzuwandeln. Indirektionsverzeichnisse erweitern diese Anweisungen. Wenn eine neue Speicherseite als sicher festgelegt wird (z. B. durch Hinzufügen der Seite zum geschützten Speicher oder durch Umwandeln einer vorhandenen regulären Seite in einen geschützten Speicher etc.), wird zusätzlicher Speicher zum Speichern für den MAC und die VER dieser Seite zugewiesen. Ferner kann der Speicherort dieses zusätzlichen Speichers, der dem MAC und den VER zugewiesen ist, in einem Zeiger innerhalb des Indirektionsverzeichnisses 530 dokumentiert werden. Die MEE-Hardware kann dann das Indirektionsverzeichnis verwenden, um die MAC- und VER-Daten für eine entsprechende geschützte Seite abzurufen und zu aktualisieren. In einigen Implementierungen kann eine Sicherheitsmetadaten-Seite erstellt werden, die MAC- und VER-Daten für eine oder mehrere geschützte Seiten enthält. Das Indirektionsverzeichnis kann auf solche Sicherheitsmetadaten-Seiten verweisen, damit eine MEE den MAC- und VER-Zugriff von der Sicherheitsmetadaten-Seite aus extrahieren kann.
  • In einem Beispiel können eine MAC- und eine VER-Zeile Metadaten für jeweils 8 Datenzeilen speichern. Somit werden für eine einzelne Seite (z. B. 64 Datenzeilen) 8 Cachezeilen für MAC und 8 Cachezeilen für VER benötigt, wodurch eine einzelne Speicherseite Metadaten der niedrigeren Stufe (MAC und VER) für 4 Seiten des geschützten Speichers speichern kann. Dementsprechend kann in einem solchen Beispiel eine einzige Sicherheitsmetadaten-Seite verwendet werden, um die MAC- und VER-Informationen für einen Block von 4 geschützten Speicherseiten zu speichern. Wenn bei solchen Implementierungen eine neue Sicherheitsmetadaten-Seite zugewiesen wird, kann diese zusätzlich dazu verwendet werden, MAC- und VER-Informationen für bis zu drei im Anschluss zugewiesene geschützte Seiten zu speichern. Dementsprechend kann die Systemsoftware zusammen mit dem Nachverfolgen anderer Attribute einer physischen Seite nachverfolgen, ob Metadaten für eine bestimmte Seite im Speicher bereits zugewiesen sind und verwendet werden. Im vorstehenden Beispiel kann dies mit einer Granularität von 4 Speicherseiten erfolgen. Der gesamte Speicher kann in diesem Beispiel als zusammenhängende Gruppen (z. B. 605) von 4 Speicherseiten betrachtet werden, und für jede Gruppe wird eine einzelne Metadatenseite 610 (welche die MAC- und VER-Zeilen (z. B. 615) speichert) bereitgestellt, wie etwa in 6 veranschaulicht. Wenn für eine Gruppe eine Metadatenseite für eine der Mitgliedsseiten zugewiesen wurde, wird keine neue Metadatenseite zugewiesen, wenn eine andere Mitgliedsseite in eine sichere Seite umgewandelt wird. In einigen Fällen sind innerhalb jeder Metadatenseite (z. B. 610) die Zuordnungen innerhalb der entsprechenden Gruppe 605 von vier Speicherseiten fixiert. In einigen Fällen kann die Systemsoftware während der Lebensdauer des Systems keine ausreichende Anzahl zusammenhängender Seiten finden, um sie als Gruppe zuzuweisen (z. B. vier zusammenhängende Seiten), was dazu führt, dass einige Einträge auf der entsprechenden Sicherheitsmetadaten-Seite nicht verwendet werden (z. B. um eine Gruppierung von weniger als vier Seiten darzustellen). Solche Situationen können akzeptabel sein, da insgesamt eine hohe Auslastung der dynamisch zugewiesenen Sicherheitsmetadaten-Seiten erreichbar ist.
  • Es sollte jedoch erkannt werden, dass das Beispiel von 6 nur zu Veranschaulichungszwecken bereitgestellt wird und dass andere Beispiele Zeigerwerte, Cachezeilen, Speicherseiten, MAC- und VER-Werte etc. mit anderen Größen als in dem bestimmten Beispiel von 6 verwenden können. Es sollte ferner erkannt werden, dass eine einzelne Sicherheitsmetadaten-Seite bereitgestellt werden kann, um Sicherheitsmetadaten für mehrere geschützte Seiten zu speichern (d. h., dass die Gruppierung geschützter Seiten möglicherweise eine geringere Anzahl oder eine höhere Anzahl enthält als die vier veranschaulichten Seiten in dem Beispiel von 6). Als weitere Varianten können andere Sicherheitsmetadaten in Sicherheitsmetadaten-Seiten enthalten sein als in dem vorherigen Beispiel dargelegt, wie z. B. bei Implementierungen, die neben anderen alternativen Merkmalen und Implementierungen eine andere Version eines Integritätsbaums verwenden.
  • Unter Bezugnahme auf das Flussdiagramm 700 von 7 ist eine beispielhafte Technik zum Hinzufügen einer neuen Seite zu einem geschützten Speicher veranschaulicht. In diesem Beispiel identifiziert die Systemsoftware 705 eine Speicherseite, die in sicheren (geschützten) Speicher umgewandelt werden soll. In diesem Beispiel können Sicherheitsmetadaten-Seiten bereitgestellt werden, die Sicherheitsmetadaten für einen zusammenhängenden Block mehrerer Speicherseiten speichern können (wie in dem Beispiel von 6). Nach dem Zuweisen einer Speicherseite zum sicheren Bereich muss die entsprechende Sicherheitsmetadaten-Seite über das Indirektionsverzeichnis der physischen Seite zugeordnet werden. Zum Beispiel kann ein fester 64b-Platz in dem Indirektionsverzeichnis für jede physische Seite in dem Speicher bereitgestellt werden. Dieser Platz wird für die Adresse der Sicherheitsmetadaten-Seite für die physische Seite verwendet, die dann von der MEE bei ihrem Baumdurchlauf verwendet wird. Zum Beispiel kann, wenn die Systemsoftware über eine Seite verfügt, die in eine sichere Seite umgewandelt werden soll, sie zunächst (bei 710) prüfen, ob (unter Verwendung der internen Verfolgungsinformation) bereits eine Sicherheitsmetadaten-Seite für den Transport der Metadaten der niedrigeren Ebene (MAC und VER) für die umzuwandelnde Seite zugewiesen wurde (z. B. weil eine andere Speicherseite in einer Gruppe von Speicherseiten, die von der Metadatenseite abgedeckt wird, bereits zugewiesen wurde). Wenn die Sicherheitsmetadaten-Seite bereits zugewiesen wurde, kann die Systemsoftware die Seite in eine sichere Seite umwandeln 715. Andernfalls weist die Systemsoftware 720 eine Speicherseite zu, die als Sicherheitsmetadaten-Seite dienen soll, um zumindest einige der Sicherheitsmetadaten (z. B. MAC- und VER-Werte) für die in eine sichere Seite umzuwandelnde Seite zu speichern.
  • In einigen Implementierungen kann das Umwandeln 715 einer Seite in eine sichere Seite das Aufrufen einer spezifischen Anweisung beinhalten, die unter Verwendung eines Mikrocodes des Prozessors auszuführen ist. Die Anweisung kann als Eingaben die Adresse der bestimmten physischen Seite, die auf eine sichere Seite aktualisiert werden soll, und die Adresse der Sicherheitsmetadaten-Seite, die zum Speichern von Sicherheitsmetadaten (z. B. MAC- und VER-Werte) verwendet wird, in Verbindung mit dem Sichern der bestimmten physischen Seite verwenden. Bei Ausführung der Anweisung kann der Kern-Mikrocode das Indirektionsverzeichnis, das der physischen Seite entspricht, die umgewandelt wurde, um die Adresse der Metadatenseite zu tragen, aktualisieren 725. In diesem Beispiel wird der Speicher des Indirektionsverzeichnisses gestohlen, und es besteht kein direkter Zugriff über die Software. Die Umwandlung 715 der Seite in eine sichere Seite kann ferner dazu führen, dass zusätzliche Umwandlungsvorgänge durchgeführt werden 730, beispielsweise das Leeren des internen MEE-Caches, das Zurücksetzen von Versionszählern etc. Wenn die Seite in eine sichere Seite umgewandelt wurde, kann die Seite zur Verwendung durch eine Enklave verfügbar sein, deren Adressenzuordnungen vollständig installiert sind.
  • Unter Bezugnahme auf das Flussdiagramm 800 von 8 kann eine MEE für eine umgewandelte oder anderweitig zu einem sicheren Speicher hinzugefügte Seite (wie in dem Beispiel von 7 beschrieben) verwendet werden, um die Verschlüsselung, Entschlüsselung und Überprüfung der Daten, die in der Seite enthalten sein sollen, zu verwalten. Wie vorstehend beschrieben, kann die MEE bei der Verarbeitung einer Anforderung, die eine Datenzeile von einer geschützten Speicherseite beinhaltet, einen Baumdurchlauf eines Integritätsbaums durchführen, um die Sicherheit der Daten zu validieren. Zum Beispiel kann die MEE-Hardware beim Zulassen 805 einer Anforderung die Adresse des Indirektionsverzeichnisses für die physische Seite berechnen, auf der sich die Anforderung befindet. Unter Verwendung des Werts des Indirektionsverzeichnisses (eines Zeigers auf die entsprechende Sicherheitsmetadaten-Seite) kann die MEE Metadaten (z. B. den MAC und die VER) für die Anforderung abrufen 815, die sich nicht in einem festen gestohlenen Speicher befindet. Zum Beispiel kann die MEE die Adresse der Sicherheitsmetadaten-Seite aus dem Indirektionsverzeichnis identifizieren und die MAC- und VER-Zeilen für den Speicherzugriff extrahieren. Die MEE kann die Anforderungsadresse verwenden, um die Adressen der verbleibenden Sicherheitsmetadaten zu berechnen 820, die in einem gestohlenen Speicher gespeichert sind (z. B. mindestens einige der höheren Ebenen in dem Integritätszählerbaum), um auf alle Baumknoten zuzugreifen 825, die erforderlich sind, um einen Baumdurchlauf in Verbindung mit der Anforderung (in 805) abzuschließen.
  • In Implementierungen, die Indirektionsverzeichnisse verwenden, wie vorstehend beschrieben, kann die Systemsoftware die durch das Indirektionsverzeichnis referenzierten Sicherheitsmetadaten-Seiten als reguläre Seite verwenden oder sie sogar in eine sichere Seite umwandeln, sobald alle Speicherseiten, die die Metadatenseite verwenden, in eine reguläre Seite umgewandelt wurden. Jegliche fehlerhafte Bedienung durch die Systemsoftware kann von der MEE-Hardware als ein Integritätsfehler erkannt werden, sodass möglicherweise keine besonderen Vorgänge hinzugefügt (z. B. eine Anweisung für die Umwandlung von einer sicheren in eine reguläre Seite) und keine spezielle Schutzhardware bereitgestellt werden müssen, um die Integrität der Sicherheitsmetadaten-Seiten zu schützen. Während durch die Einführung eines Indirektionsverzeichnisses ein Baumdurchlauf um (im schlimmsten Fall) eine Ebene erweitert werden kann, können erhebliche Einsparungen bezüglich des Speicher-Overheads der zugeordneten Sicherheitsmetadaten erzielt werden. In einigen Fällen kann der geringfügige Verlust, der sich aus dem Zugriff auf ein Indirektionsverzeichnis ergibt, minimiert werden, indem neben anderen beispielhaften Erweiterungen das Indirektionsverzeichnis in dem MEE-Cache zwischengespeichert wird, und bei einer räumlichen Nachbarschaft der Anwendung die Mehrheit der Zugriffe den Wert des Indirektionsverzeichnisses in dem Cache finden sollte, sodass ein zusätzlicher Zugriff auf den Speicher vermieden wird.
  • Wie vorstehend erwähnt, können geschützte Speicherbereiche zur Verwendung durch sichere Enklaven zugewiesen werden, die unter Verwendung von MEE-Hardware geregelt werden. Eine Vielzahl von Anwendungen kann entwickelt werden, die sichere Enklaven verwenden, die auf Speicherschutz aufbauen können, wie vorstehend dargelegt. Als ein Beispiel ist 9 ein vereinfachtes Blockdiagramm 900, das die Verwendung von sicheren Enklaven veranschaulicht, um beispielhafte Attestierungen und die Bereitstellung von Schlüsseln durchzuführen, um eine gesicherte virtuelle Maschine 904 auf einem bestimmten Hostsystem 902 einzusetzen. In diesem Beispiel hostet das Hostsystem 902 eine Schlüsselmanager-Enklave 906 und eine sichere Steuerungsstruktur 908. Die Schlüsselmanager-Enklave kann für die Steuerungsstruktur 908 einen VM-Stammschlüssel bereitstellen, der in dem sicheren Speicher des Hostsystems 902 gespeichert wird. Die Schlüsselmanager-Enklave 906 kann eine Attestierung ihrer Vertrauenswürdigkeit für das Schlüsselspeichersystem 910 durchführen, um festzustellen, dass ein VM-Schlüssel, den es für eine VM (z. B. 904) registrieren möchte, authentisch ist oder dass ein Schlüsselspeichersystem 910 der Schlüsselmanager-Enklave 906 die bereits vorhandenen Schlüssel aus dem Schlüsselspeicher 910 anvertrauen kann. Da die Schlüsselmanager-Enklave direkt auf dem Hostsystem 902 gehostet wird, kann die Schlüsselmanager-Enklave ein Quote verwenden, das auf einem hardwarebasierten Stammschlüssel 912 ihres jeweiligen Hostsystems 902 basiert. Tatsächlich kann das Hostsystem 902 eine Quote-Enklave 914 enthalten, die Zugriff auf den Host-Stammschlüssel 912 (oder einen anderen von dem Host-Stammschlüssel 912 abgeleiteten Schlüssel) haben kann, um ein Quote für die Schlüsselmanager-Enklave 906 in Verbindung mit der Attestierung der Schlüsselmanager-Enklave 904 mit dem Schlüsselspeichersystem 910 zu signieren. Das Schlüsselspeichersystem 910 kann zur Validierung eines von der Schlüsselmanager-Enklave 904 empfangenen Quotes einen Host-Attestierungsdienst 916 identifizieren, der Zertifikate 918 basierend auf verschiedenen Hostplattform-Stammschlüsseln (z. B. 912) und darauf basierend hostet (die möglicherweise während der Herstellung der Hostplattform beim Einstellen des entsprechenden Stammschlüssels erzeugt wurden). Der Host-Attestierungsdienst 916 kann validieren, dass die Signatur durch einen gültigen Stammschlüssel einer vertrauenswürdigen Hardwareplattform (z. B. 902) erzeugt wurde, und dieses Ergebnis an das Schlüsselspeichersystem 910 zurückgeben, um dem Schlüsselspeichersystem 910 die Folgerung zu erlauben, dass die Schlüsselmanager-Enklave 904 sicher und vertrauenswürdig ist. Das Schlüsselspeichersystem 910 kann in einigen Implementierungen auch Zertifikate 920 erzeugen, die VM-Schlüsseln entsprechen, die in dem Schlüsselspeicher 910 verwaltet werden und die bestimmten Instanzen von virtuellen Maschinen zugeordnet und an diese gebunden sind. Diese Zertifikate 920 können für verschiedene Attestierungs- und Bereitstellungsdienste (z. B. 922) bereitgestellt werden, die verwendet werden können, um nachfolgende Attestierungen basierend auf Signaturen zu validieren, die von den VM-Stammschlüsseln (oder von den VM-Stammschlüsseln abgeleiteten Schlüsseln) signiert werden.
  • Mit einem Stammschlüssel, der einer VM (z. B. 904) zugewiesen und sicher in einer Steuerungsstruktur 908 (in dem sicheren Speicher implementiert) gespeichert ist, kann eine sichere VM-Instanz vollständig auf dem Hostsystem 902 instanziiert werden. Tatsächlich kann im Rahmen des Startens einer VM-Instanz (z. B. 904) auf einem Hostsystem 902 die Schlüsselmanager-Enklave 906 eine zugeordnete Steuerungsstruktur (z. B. 908) für die VM 904 (die nur für die Schlüsselmanager-Enklave 906 - und bestimmte prozessorbasierte Befehlssatzfunktionen (z. B. die Schlüssel-Generatorlogik 924) - zugänglich sein soll) errichten und einen entsprechenden VM-Stammschlüssel (und potenziell weitere Schlüssel) in die Datensteuerungsstruktur 908 laden. Andere Schlüssel können für die VM 904 basierend auf dem in der Datensteuerungsstruktur 908 bereitgestellten VM-Stammschlüssel abgeleitet werden (d. h. anstelle des Hardware-Stammschlüssels 912). Tatsächlich kann die Schlüsselerzeugungslogik 924 identifizieren, wann eine Datensteuerungsstruktur (z. B. 908) einer bestimmten VM-Instanz (z. B. 904) zugeordnet ist, zum Beispiel basierend auf der Datensteuerungsstruktur, die der CPU oder dem CPU-Thread zugeordnet ist, um die VM-Instanz auszuführen. Folglich kann die Schlüsselerzeugungslogik 924 neben anderen Beispielen bestimmen, dass ein VM-Stammschlüssel, der in der Datensteuerungsstruktur 908 gespeichert ist, anstelle des (z. B. standardmäßigen) Host-Stammschlüssels 912 verwendet werden soll.
  • In einigen Implementierungen kann die Schlüsselerzeugungslogik 924 konfiguriert sein, um Schlüssel von einem Host-Stammschlüssel (z. B. 912) oder einem VM-Stammschlüssel (gespeichert in einer Datensteuerungsstruktur, die einer entsprechenden VM-Instanz (z. B. 904) zugeordnet ist) für die Verwendung mit einer Anwendung oder VM-Instanz, einschließlich Versiegelungsschlüssel und VM-Bereitstellungsschlüssel, abzuleiten. Im Falle eines Bereitstellungsschlüssels, wie in dem Beispiel von 9 gezeigt, kann ein Bereitstellungsschlüssel von einem VM-Stammschlüssel in der Datensteuerungsstruktur 908 abgeleitet und in einer Bereitstellungs-Enklave 926 gesichert werden, die in der entsprechenden VM-Instanz 904 gehostet wird. Ein Bereitstellungsschlüssel kann von der Bereitstellungs-Enklave 926 verwendet werden, um die Bereitstellungs-Enklave 926 gegenüber einem Bereitstellungsdienst für Attestierungsschlüssel 922 zu authentifizieren. Der Bereitstellungsdienst für Attestierungsschlüssel 922 kann Zertifikate 920 (einschließlich Zertifikate für VM-Stammschlüssel, die in dem Schlüsselspeichersystem 910 verwaltet und von dem Schlüsselspeichersystem 910 an den Bereitstellungsdienst 922 übergeben werden) verwalten, die virtuelle Maschinen (z. B. 904) und/oder Geräte (z. B. nach Seriennummer oder anderen Kennungen) den entsprechenden Zertifikaten zuordnen, wobei jedes Zertifikat basierend auf Stammschlüsseln erzeugt wird, die in Verbindung mit der VM oder der Geräteplattform eingestellt (und geheim gehalten) werden. Auf diese Weise können Zertifikate bereitgestellt werden, die das Geheimnis nicht preisgeben, aber die Überprüfung des Vorhandenseins des Geheimnisses durch den Zertifikatsinhaber ermöglichen (z. B. basierend auf einer von dem Geheimnis erzeugten Signatur oder einem auf dem Geheimnis basierenden Schlüssel). Dementsprechend kann die Bereitstellungs-Enklave 926 dem Bereitstellungsdienst für Attestierungsschlüssel 922 signierte Daten bereitstellen, um ihre Authentizität und die Tatsache zu bestätigen, dass sie auf einer virtuellen Maschine (z. B. 910) implementiert ist, die bei dem Registrierungsdienst registriert ist und von der bekannt ist, dass sie eine Funktionalität aufweist, die die Instanziierung und das Hosten einer sicheren vertrauenswürdigen Enklave (z. B. 926) ermöglicht. Basierend auf dieser Attestierung kann der Bereitstellungsdienst für Attestierungsschlüssel 922 einen sicheren Kanal zwischen dem Bereitstellungsdienst für Attestierungsschlüssel 922 und der Bereitstellungs-Enklave 926 aushandeln und als Antwort einen Attestierungsschlüssel für die Bereitstellungs-Enklaven-Suite bereitstellen. Tatsächlich können die von der Bereitstellungs-Enklave 926 signierten Daten Informationen (z. B. signierte öffentliche Schlüssel, Protokollkennungen etc.) enthalten, die zum Einrichten des sicheren Kanals verwendet werden. Die Bereitstellungs-Enklave 926 der VM 904 kann dann für die Quote-Enklave 930 der VM den empfangenen Attestierungsschlüssel bereitstellen, wie in dem Beispiel von 9 gezeigt.
  • Die Quote-Enklave 930 kann Attribute von einer oder mehreren Anwendungen (z. B. 935) und/oder von Anwendungs-Enklaven (z. B. 940) sowie der virtuellen Maschine 904 und/oder der Hostplattform 902 messen oder identifizieren und kann diese Informationen in einem Quote bereitstellen, das Daten enthält, von denen mindestens ein Teil unter Verwendung des Attestierungsschlüssels bei der Quote-Enklave 930 signiert wird. Die Quote-Enklave übergibt dann das signierte Quote 945 an die Anwendungs-Enklave 940, die das Quote dann an einen Backend-Dienst kommunizieren kann (wie etwa über einen Geheimnisinhaber 950, der z. B. Geheimnisse hostet, die von der Anwendung zum Entschlüsseln von Daten oder für den Zugriff auf Inhalte etc. verwendbar sind), um die Authentizität der Anwendung 935 zu bestätigen. In diesem Beispiel kann der Backend-Dienst 950 (z. B. der „Geheimnisinhaber“) die Dienste eines Attestierungsdiensts 955 nutzen, der die Attestierungsschlüsselzertifikate 960 und Sperrlisten empfangen kann, die von dem Bereitstellungsdienst für Attestierungsschlüssel 922 erzeugt werden, der den Attestierungsschlüssel erzeugt hat, der von der Quote-Enklave 930 der virtuellen Maschine 904 verwendet wird. Durch diese Zertifikate 960 kann der Attestierungsdienst 955 die Authentizität des Quote basierend auf der Signatur überprüfen, die in dem Quote (das mit dem vom Bereitstellungsdienst für Attestierungsschlüssel 922 bereitgestellten Attestierungsschlüssel signiert wird) enthalten ist. Bei der Überprüfung der Authentizität des Quotes und der weiteren Überprüfung, aus der in dem Quote enthaltenen Beschreibung der Anwendungs-Enklave 940, der Merkmale der Anwendungs-Enklave 940 (z. B., dass es sich um eine zuverlässig implementierte Enklave auf einer fähigen, sicheren Plattform handelt), kann der Attestierungsdienst 955 die Ergebnisse der Attestierung an den Backend-Service 950 kommunizieren. Auf der Grundlage dieser Ergebnisse kann der Backend-Dienst 950 einen Servicegrad bereitstellen (oder den Dienst vollständig zulassen/ablehnen), der Anwendung 935 (über die Anwendungs-Enklave 940) den Zugriff auf bestimmte Daten gewähren, die dem Geheimnisinhaber gehören, geschützte Kommunikationskanäle zwischen dem System des Geheimnisinhabers und der Anwendungs-Enklave 940 einrichten, das Ausstellen von Zertifikaten durch eine Zertifizierungsstelle erwirken, es sensorähnlichen Plattformen erlauben, sich mit einem Koordinationspunkt zu koppeln und/oder neben potenziell unbegrenzten anderen Beispielen das Akzeptieren von Daten von Sensoren (z. B. in einem Internet-der-Dinge-System) darauf basierend zu erlauben, ob die Anwendung durch eine vertrauenswürdige Anwendungs-Enklave geschützt wird oder nicht.
  • Wie vorstehend erwähnt, kann ein VM-Stammschlüssel auch von der Schlüsselerzeugungslogik 924 verwendet werden, um einen oder mehrere Versiegelungsschlüssel für die VM 904 und/oder ihre sicheren Enklaven-Komponenten (z. B. 940, 926, 930) abzuleiten. Zum Beispiel kann eine sichere Enklave (z. B. 940, 926, 930) der VM 904 die Schlüsselerzeugungslogik 924 anfordern, um einen Versiegelungsschlüssel für die Enklave abzuleiten. Beispielsweise kann die Anwendungs-Enklave 940 einen aus dem VM-Stammschlüssel erzeugten Versiegelungsschlüssel zur Verwendung unter anderem beim Versiegeln von Benutzerdaten oder von einem Backend-Service (z. B. 950) empfangenen Schlüsseln erhalten. Sensible Daten können durch einen von einem VM-Stammschlüssel abgeleiteten Versiegelungsschlüssel versiegelt werden, während die sensiblen Daten empfangen werden. In anderen Fällen können die sensiblen Daten vor einem Verkleinern oder einem anderen Ereignis, das zu der Zerlegung der VM 904 führt, durch den Versiegelungsschlüssel versiegelt werden. In einigen Fällen können Daten in einem eigenen Speicherabbild der VM-Instanz (z. B. 904) versiegelt werden. In anderen Fällen können die Daten versiegelt und (in ihrer verschlüsselten Form) in einen entfernten Speicher (z. B. 965) geschrieben werden, sodass der Zugriff auf die sensiblen Daten durch die erneut instanziierte VM unabhängig von der Plattform ermöglicht wird, auf der sie gehostet werden. In einigen Fällen können Schlüssel anderer Enklaven der VM (z. B. der Bereitstellungsschlüssel und der Attestierungsschlüssel) in den versiegelten Daten (z. B. 970) versiegelt werden. In einigen Beispielen kann unter anderem das gesamte Speicherabbild der verkleinerten VW-Instanz durch den Versiegelungsschlüssel versiegelt werden.
  • Es sollte jedoch erkannt werden, dass das in 9 veranschaulichte Beispiel nur als eine einzige beispielhafte Implementierung dargestellt wird, die die Fähigkeiten von gesicherten Speicherbereichen nutzt, die von der beispielhaften MEE-Hardware verwaltet werden. Eine Vielzahl anderer Implementierungen kann unter Verwendung einer ähnlichen Technologie realisiert werden. Beispielsweise können auf IntelTM Software Guard Extension (SGX) basierende Lösungen die MEE und die MEE-basierte Verschlüsselung und Sicherheit verwenden, wobei die hierin erörterten Merkmale und Schemata neben anderen beispielhaften Plattformen und Lösungen verwendet werden.
  • Die 10 bis 12 sind Blockdiagramme von beispielhaften Computerarchitekturen, die gemäß hierin offenbarten Ausführungsformen verwendet werden können. Andere auf dem Fachgebiet bekannte Auslegungen von Computerarchitekturen für Prozessoren, Mobilgeräte und Computersysteme können ebenfalls verwendet werden. Im Allgemeinen können geeignete Computerarchitekturen für die hierin offenbarten Ausführungsformen Konfigurationen enthalten, die in den 10 bis 12 veranschaulicht werden, sind jedoch nicht darauf beschränkt.
  • 10 ist eine beispielhafte Darstellung eines Prozessors gemäß einer Ausführungsform. Der Prozessor 1000 ist ein Beispiel eines Typs einer Hardwarevorrichtung, die in Verbindung mit den vorstehenden Implementierungen verwendet werden kann.
  • Der Prozessor 1000 kann ein beliebiger Prozessortyp sein, wie etwa ein Mikroprozessor, ein eingebetteter Prozessor, ein digitaler Signalprozessor (DSP), ein Netzwerkprozessor, ein Mehrkernprozessor, ein Einkernprozessor oder eine andere Vorrichtung zum Ausführen von Code. Obwohl in 10 nur ein Prozessor 1000 dargestellt ist, kann ein Verarbeitungselement alternativ mehr als einen in 10 veranschaulichten Prozessor 1000 enthalten. Der Prozessor 1000 kann ein Single-Thread-Kern sein oder bei mindestens einer Ausführungsform kann der Prozessor 1000 Multi-Threading umfassen, bei dem er mehr als einen Hardware-Thread-Kontext (oder „logischen Prozessor“) pro Kern enthalten kann.
  • 10 veranschaulicht auch einen Speicher 1002, der gemäß einer Ausführungsform mit dem Prozessor 1000 gekoppelt ist. Der Speicher 1002 kann ein beliebiger aus einer Vielzahl von Speichern sein (einschließlich verschiedener Schichten der Speicherhierarchie), die Fachleuten auf dem Gebiet bekannt oder auf andere Weise verfügbar sind. Solche Speicherelemente können einen Direktzugriffsspeicher (Random Access Memory, RAM), einen schreibgeschützten Speicher (Read-Only Memory, ROM), Logikblöcke eines feldprogrammierbaren Gate-Arrays (Field Programmable Gate Array, FPGA), einen löschbaren programmierbaren schreibgeschützten Speicher (Erasable Programmable Read-Only Memory, EPROM) und einen elektrisch löschbaren programmierbaren schreibgeschützten Speicher (Electrically Erasable Programmable Read-Only Memory, EEPROM) beinhalten, sind jedoch nicht darauf beschränkt.
  • Der Prozessor 1000 kann jede Art von Anweisungen ausführen, die hierin beschriebenen Algorithmen, Prozessen oder Vorgängen zugeordnet sind. Im Allgemeinen kann der Prozessor 1000 ein Element oder einen Artikel (z. B. Daten) von einem Zustand oder einer Sache in einen anderen Zustand oder eine andere Sache umwandeln.
  • Der Code 1004, bei dem es sich um eine oder mehrere Anweisungen handeln kann, die von dem Prozessor 1000 ausgeführt werden sollen, kann in dem Speicher 1002 gespeichert werden oder kann in Software, Hardware, Firmware oder einer beliebigen geeigneten Kombination davon oder in einer anderen internen oder externen Komponente, Vorrichtung, Element oder Objekt gespeichert werden, sofern dies angemessen ist und auf besonderen Bedürfnissen basiert. In einem Beispiel kann der Prozessor 1000 einer Programmsequenz von Anweisungen folgen, die durch den Code 1004 angegeben ist. Jede Anweisung betritt eine Frontend-Logik 1006 und wird von einem oder mehreren Decodern 1008 verarbeitet. Der Decoder kann als Ausgabe eine Mikrooperation, wie etwa eine Mikrooperation mit fester Breite in einem vordefinierten Format, erzeugen oder er kann andere Anweisungen, Mikroanweisungen oder Steuersignale erzeugen, welche die ursprüngliche Codeanweisung widerspiegeln. Die Frontend-Logik 1006 umfasst auch eine Registerumbenennungslogik 1010 und eine Planungslogik 1012, die im Allgemeinen Ressourcen zuweisen und den Vorgang entsprechend der Anweisung zur Ausführung in eine Warteschlange einreihen.
  • Der Prozessor 1000 kann auch eine Ausführungslogik 1014 enthalten, die einen Satz von Ausführungseinheiten 1016a, 1016b, 1016n etc. aufweist. Einige Ausführungsformen können eine Anzahl von Ausführungseinheiten enthalten, die bestimmten Funktionen oder Funktionssätzen zugeordnet sind. Andere Ausführungsformen können nur eine Ausführungseinheit oder eine Ausführungseinheit enthalten, die eine bestimmte Funktion ausführen kann. Die Ausführungslogik 1014 führt die durch die Codeanweisungen spezifizierten Vorgänge aus.
  • Nach Abschluss der Ausführung der durch die Codeanweisungen spezifizierten Vorgänge kann die Backend-Logik 1018 die Anweisungen des Codes 1004 zurückziehen. In einer Ausführungsform erlaubt der Prozessor 1000 eine ungeordnete Ausführung, macht jedoch zur Bedingung, dass Anweisungen geordnet zurückgezogen werden. Die Rückordnungslogik 1020 kann eine Vielzahl bekannter Formen annehmen (z. B. Neuordnungspuffer oder dergleichen). Auf diese Weise wird der Prozessor 1000 während der Ausführung des Codes 1004 zumindest in Bezug auf die von dem Decoder erzeugte Ausgabe, den von der Registerumbenennungslogik 1010 verwendeten Hardwareregistern und Tabellen und allen von der Ausführungslogik 1014 modifizierten Registern (nicht gezeigt) umgewandelt.
  • Obwohl nicht in 10 gezeigt, kann ein Verarbeitungselement andere Elemente auf einem Chip mit dem Prozessor 1000 enthalten. Beispielsweise kann ein Verarbeitungselement neben dem Prozessor 1000 eine Speichersteuerlogik enthalten. Das Verarbeitungselement kann eine E/A-Steuerlogik und/oder eine E/A-Steuerlogik enthalten, die in der Speichersteuerlogik integriert ist. Das Verarbeitungselement kann auch einen oder mehrere Caches enthalten. In einigen Ausführungsformen kann ein nichtflüchtiger Speicher (wie etwa ein Flash-Speicher oder Sicherungen) ebenfalls auf dem Chip mit dem Prozessor 1000 enthalten sein.
  • Es wird nun auf 11 Bezug genommen, die ein Blockdiagramm eines beispielhaften Mobilgeräts 1100 veranschaulicht. Das Mobilgerät 1100 ist ein Beispiel eines möglichen Computersystems (z. B. einer Host- oder Endpunktvorrichtung) der hierin beschriebenen Beispiele und Implementierungen. In einer Ausführungsform wird das Mobilgerät 1100 als Sender und Empfänger von drahtlosen Kommunikationssignalen betrieben. In einem Beispiel kann das Mobilgerät 1100 insbesondere in der Lage sein, mobile Sprach- und Datendienste für ein zellulares Netzwerk sowohl zu senden als auch zu empfangen. Die mobilen Dienste enthalten Funktionen, wie etwa vollständigen Internetzugang, herunterladbare und Streaming-Videoinhalte sowie Sprachtelefonkommunikationen.
  • Das Mobilgerät 1100 kann einem herkömmlichen drahtlosen oder zellularen tragbaren Telefon entsprechen, beispielsweise einem Mobiltelefon, das in der Lage ist, Mobilfunkdienste des Typs „3G“ oder der „dritten Generation“ zu empfangen. In einem anderen Beispiel ist das Mobilgerät 1100 auch in der Lage, mobile „4G“-Dienste oder einen beliebigen anderen mobilen Dienst zu senden und zu empfangen.
  • Beispiele für Geräte, die dem Mobilgerät 1100 entsprechen können, beinhalten Mobiltelefone und Smartphones, die Internetzugang, E-Mail- und Instant Messaging-Kommunikation ermöglichen, und tragbare Videoempfangs- und Anzeigegeräte, die fähig sind, Telefondienste zu unterstützen. Es wird in Erwägung gezogen, dass für Fachleute auf dem Gebiet unter Bezugnahme auf diese Spezifikation die Art moderner Smartphones und Mobiltelefonvorrichtungen und -systeme, die für die Implementierung der verschiedenen Aspekte dieser Offenbarung geeignet sind, wie hierin beschrieben, leicht ersichtlich ist. Somit wird die Architektur des Mobilgeräts 1100, das in 11 veranschaulicht wird, auf einem relativ hohen Niveau dargestellt. Dennoch wird in Erwägung gezogen, dass Modifikationen und Alternativen zu dieser Architektur vorgenommen werden können und für den Leser offensichtlich sind, wobei solche Modifikationen und Alternativen als in den Umfang dieser Beschreibung fallend betrachtet werden.
  • In einem Aspekt dieser Offenbarung umfasst das Mobilgerät 1100 einen Transceiver 1102, der mit einer Antenne verbunden und mit dieser in Kommunikation ist. Der Transceiver 1102 kann ein Hochfrequenz-Transceiver sein. Außerdem können Funksignale über den Transceiver 1102 gesendet und empfangen werden. Der Transceiver 1102 kann beispielsweise so aufgebaut sein, dass er eine „Frontend“-Funktionalität für analoge und digitale Hochfrequenzen (HF), eine Schaltung zum Umwandeln von HF-Signalen in eine Basisbandfrequenz, falls gewünscht über eine Zwischenfrequenz (IF), analoge und digitale Filterung und andere herkömmliche Schaltungen, die zum Ausführen von drahtloser Kommunikation über moderne zellulare Frequenzen nützlich sind, enthält, beispielsweise solche, die für die 3G- oder 4G-Kommunikation geeignet sind. Der Transceiver 1102 ist mit einem Prozessor 1104 verbunden, der den Großteil der digitalen Signalverarbeitung der bei der Basisbandfrequenz zu kommunizierenden Signale und der empfangenen Signale durchführen kann. Der Prozessor 1104 kann für ein Anzeigeelement 1108 eine grafische Benutzeroberfläche zur Anzeige von Text, Grafiken und Videos für einen Benutzer sowie ein Eingabeelement 1110 zum Empfangen von Eingaben von Benutzern, wie etwa ein Touchpad, eine Tastatur, eine Rollermaus und andere Beispiele, bereitstellen. Der Prozessor 1104 kann eine Ausführungsform enthalten, wie sie mit Bezug auf den Prozessor 1000 von 10 gezeigt und beschrieben ist.
  • In einem Aspekt dieser Offenbarung kann der Prozessor 1104 ein Prozessor sein, der eine beliebige Art von Anweisungen ausführen kann, um die hierin beschriebenen Funktionen und Vorgänge zu erreichen. Der Prozessor 1104 kann auch mit einem Speicherelement 1106 gekoppelt sein, um Informationen und Daten zu speichern, die bei Vorgängen verwendet werden, die unter Verwendung des Prozessors 1104 durchgeführt werden. Zusätzliche Einzelheiten eines beispielhaften Prozessors 1104 und eines Speicherelements 1106 werden hierin nachfolgend beschrieben. In einer beispielhaften Ausführungsform kann das Mobilgerät 1100 mit einer System-On-Chip (SoC)-Architektur ausgelegt sein, die viele oder alle Komponenten des Mobilgeräts in mindestens einigen Ausführungsformen in einem einzigen Chip integriert.
  • 12 veranschaulicht ein Computersystem 1200, das gemäß einer Ausführungsform in einer Punkt-zu-Punkt-Konfiguration (PzP-Konfiguration) angeordnet ist. Insbesondere zeigt 12 ein System, bei dem Prozessoren, Speicher und Eingabe-/Ausgabegeräte durch eine Anzahl von Punkt-zu-Punkt-Schnittstellen miteinander verbunden sind. Im Allgemeinen können eines oder mehrere der hierin beschriebenen Computersysteme auf dieselbe oder ähnliche Weise wie das Computersystem 1200 konfiguriert sein.
  • Die Prozessoren 1270 und 1280 können auch jeweils eine integrierte Speichersteuerungslogik (Memory Controller, MC) 1272 und 1282 enthalten, um mit den Speicherelementen 1232 und 1234 zu kommunizieren. In alternativen Ausführungsformen kann die Speichersteuerungslogik 1272 und 1282 eine diskrete Logik sein, die von den Prozessoren 1270 und 1280 getrennt ist. Die Speicherelemente 1232 und/oder 1234 können verschiedene Daten speichern, die von den Prozessoren 1270 und 1280 zum Erzielen der hierin beschriebenen Vorgänge und Funktionen verwendet werden sollen.
  • Die Prozessoren 1270 und 1280 können eine beliebige Art von Prozessor sein, wie beispielsweise diejenige, die in Verbindung mit anderen Figuren erörtert wurde. Die Prozessoren 1270 und 1280 können Daten über eine Punkt-zu-Punkt-Schnittstelle (PzP-Schnittstelle) 1250 unter Verwendung der jeweiligen Punkt-zu-Punkt-Schnittstellenschaltung 1278 und 1288 austauschen. Die Prozessoren 1270 und 1280 können jeweils Daten mit einem Chipsatz 1290 über einzelne Punkt-zu-Punkt-Schnittstellen 1252 und 1254 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1276, 1286, 1294 und 1298 austauschen. Der Chipsatz 1290 kann auch Daten mit einer Hochleistungs-Grafikschaltung 1238 über eine Hochleistungs-Grafikschnittstelle 1239 unter Verwendung einer Schnittstellenschaltung 1292 austauschen, die eine PzP-Schnittstellenschaltung sein könnte. In alternativen Ausführungsformen könnten eine oder alle der in 12 veranschaulichten PzP-Verbindungen als ein Mehrstationenbus anstelle einer PzP-Verbindung implementiert sein.
  • Der Chipsatz 1290 kann über eine Schnittstellenschaltung 1296 mit einem Bus 1220 in Kommunikation sein. Der Bus 1220 kann eine oder mehrere Vorrichtungen aufweisen, die über ihn kommunizieren, wie etwa eine Busbrücke 1218 und E/A-Geräte 1216. Über einen Bus 1210 kann die Busbrücke 1218 in Kommunikation mit anderen Geräten sein, wie etwa eine Tastatur/Maus 1212 (oder andere Eingabegeräte, wie etwa ein Touchscreen, ein Trackball etc.), Kommunikationsgeräte 1226 (wie etwa Modems, Netzwerkschnittstellengeräte oder andere Arten von Kommunikationsgeräten, die über ein Computernetzwerk 1260 kommunizieren können), Audio-E/A-Geräte 1214 und/oder eine Datenspeichervorrichtung 1228. Die Datenspeichervorrichtung 1228 kann den Code 1230 speichern, der von den Prozessoren 1270 und/oder 1280 ausgeführt werden kann. In alternativen Ausführungsformen könnten beliebige Teile der Busarchitekturen mit einer oder mehreren PzP-Verbindungen implementiert werden.
  • Das in 12 dargestellte Computersystem ist eine schematische Darstellung einer Ausführungsform eines Computersystems, das zum Implementieren verschiedener hierin erörterter Ausführungsformen verwendet werden kann. Es lässt sich nachvollziehen, dass verschiedene Komponenten des in 12 dargestellten Systems in einer System-on-Chip (SoC)-Architektur oder in einer anderen geeigneten Konfiguration kombiniert werden können, die in der Lage ist, die Funktionalität und Merkmale der hierin bereitgestellten Beispiele und Implementierungen zu erreichen.
  • Obwohl diese Offenbarung im Hinblick auf bestimmte Implementierungen und allgemein zugehörige Verfahren beschrieben wurde, sind Änderungen und Permutationen dieser Implementierungen und Verfahren für Fachleute auf dem Gebiet ersichtlich. Beispielsweise können die hier beschriebenen Aktionen in einer anderen Reihenfolge als beschrieben durchgeführt werden und trotzdem die gewünschten Ergebnisse erzielen. Als ein Beispiel erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die gezeigte bestimmte Reihenfolge oder sequenzielle Reihenfolge, um die gewünschten Ergebnisse zu erzielen. In bestimmten Implementierungen können Multitasking und Parallelverarbeitung von Vorteil sein. Außerdem können andere Layouts und Funktionen der Benutzeroberfläche unterstützt werden. Andere Variationen liegen im Umfang der folgenden Ansprüche.
  • Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Spezifikation. Das Beispiel 1 ist eine Vorrichtung, die enthält: einen Prozessor, der einen auf dem Chip befindlichen Speicher enthält; einen Speicher, der einen geschützten Bereich enthält; und eine Speicherverschlüsselungs-Engine (MEE). Die MEE kann eine Schaltung enthalten, um: eine Datenanforderung auf einer bestimmten Seite in dem geschützten Speicherbereich zu empfangen; auf einen Zeiger in einem Indirektionsverzeichnis zuzugreifen, wobei der Zeiger auf eine bestimmte Metadatenseite zeigen soll, die außerhalb des geschützten Bereichs des Speichers gespeichert ist, und die bestimmte Metadatenseite einen ersten Teil der Sicherheitsmetadaten zur Verwendung bei der Sicherung der Daten der bestimmten Seite enthält; auf einen zweiten Teil der Sicherheitsmetadaten, die der bestimmten Seite zugeordnet sind, aus dem geschützten Speicherbereich zuzugreifen; und die Authentizität der Daten der bestimmten Seite basierend auf dem ersten und dem zweiten Teil der Sicherheitsmetadaten zu bestimmen.
  • Das Beispiel 2 kann den Gegenstand von Beispiel 1 enthalten, wobei der zweite Teil der Sicherheitsmetadaten Schichten eines Replay-Integritätsbaums enthält, der der bestimmten Seite zugeordnet ist, und die Authentizität der Daten basierend auf dem Replay-Integritätsbaum bestimmt wird.
  • Das Beispiel 3 kann den Gegenstand von Beispiel 2 enthalten, wobei eine Wurzel des Replay-Integritätsbaums in dem auf dem Chip befindlichen Speicher gespeichert wird.
  • Das Beispiel 4 kann den Gegenstand von Beispiel 3 enthalten, wobei das Bestimmen der Authentizität der Daten das Durchführen eines Durchlaufs des Replay-Integritätsbaums beinhaltet und der Durchlauf zumindest teilweise auf dem ersten Teil der Sicherheitsmetadaten basiert.
  • Das Beispiel 5 kann den Gegenstand eines der Beispiele 1 bis 4 enthalten, wobei der erste Teil der Sicherheitsmetadaten einen Nachrichtenauthentifizierungscode (MAC) für die Daten der bestimmten Seite enthält.
  • Das Beispiel 6 kann den Gegenstand von Beispiel 5 enthalten, wobei der erste Teil der Sicherheitsmetadaten ferner einen Versionsstartwert enthält, der der bestimmten Seite zugeordnet ist, und der Versionsstartwert verschlüsselt werden muss zur Verwendung beim Erzeugen einer Verschlüsselungstextversion der Klartextdaten der bestimmten Seite.
  • Das Beispiel 7 kann den Gegenstand von Beispiel 6 enthalten, wobei die Verschlüsselungstextversion unter Verwendung der Zählermodus-Verschlüsselung erzeugt wird.
  • Das Beispiel 8 kann den Gegenstand eines der Beispiele 1 bis 7 enthalten, wobei die bestimmte Seite eine aus einer Gruppe von Seiten in dem Speicher ist und die bestimmte Metadatenseite die Sicherheitsmetadaten für jede der Gruppe von Seiten enthält.
  • Das Beispiel 9 kann den Gegenstand von Beispiel 8 enthalten, wobei die Sicherheitsmetadaten für jede der Gruppe von Seiten einen jeweiligen MAC und Versionsstartwert für jede Seite in der Gruppe von Seiten enthalten.
  • Das Beispiel 10 kann den Gegenstand eines der Beispiele 1 bis 9 enthalten, wobei das Indirektionsverzeichnis in einem gestohlenen Speicher gespeichert ist, der für die Systemsoftware nicht zugänglich ist.
  • Das Beispiel 11 kann den Gegenstand eines der Beispiele 1 bis 10 enthalten, wobei die bestimmte Metadatenseite eine von einer Vielzahl von in dem Speicher zugewiesenen Metadatenseiten ist und das Indirektionsverzeichnis Zeiger für jede der Vielzahl von Metadatenseiten enthält.
  • Das Beispiel 12 kann den Gegenstand eines der Beispiele 1 bis 11 enthalten, wobei das Indirektionsverzeichnis einen jeweiligen Zeiger für jede Speicherseite enthält, um auf eine jeweilige Metadatenseite zu zeigen, wenn die entsprechende Seite als geschützt bezeichnet ist.
  • Das Beispiel 13 kann den Gegenstand eines der Beispiele 1 bis 12 enthalten, wobei die MEE ferner dazu dient, Daten in dem geschützten Speicherbereich durch die Zählermodus-Verschlüsselung basierend auf dem ersten Teil der Sicherheitsmetadaten zu entschlüsseln und verschlüsseln.
  • Das Beispiel 14 ist ein maschinenzugängliches Speichermedium, auf dem Anweisungen gespeichert sind, wobei die Anweisungen bei Ausführung auf einer Maschine die Maschine veranlassen: eine bestimmte Seite in dem Computerspeicher zu identifizieren, die gesichert werden soll; eine Metadatenseite in dem Computerspeicher zuzuweisen, um einen ersten Teil der Sicherheitsmetadaten zur Verwendung beim Sichern der bestimmten Seite zu speichern, wobei ein zweiter Teil der Sicherheitsmetadaten in einem gesicherten Teil des Computerspeichers vorab zugewiesen werden soll; und eine Adresse der Metadatenseite in einen bestimmten Zeiger in einem Indirektionsverzeichnis einzugeben, wobei das Indirektionsverzeichnis in dem gesicherten Teil des Computerspeichers vorab zugewiesen ist und der bestimmte Zeiger einer Adresse der bestimmten Seite zugeordnet ist.
  • Das Beispiel 15 kann den Gegenstand von Beispiel 14 enthalten, wobei die bestimmte Seite in dem gesicherten Teil des Computerspeichers aufgenommen werden soll und die Metadatenseite außerhalb des gesicherten Teils des Computerspeichers gespeichert werden soll.
  • Das Beispiel 16 kann den Gegenstand eines der Beispiele 14 bis 15 enthalten, wobei die Metadatenseite in Reaktion auf das Identifizieren, dass die bestimmte Seite gesichert werden soll, dynamisch zugewiesen werden soll.
  • Das Beispiel 17 kann den Gegenstand eines der Beispiele 14 bis 16 enthalten, wobei die bestimmte Seite zur Verwendung mit einer sicheren Enklave gesichert werden soll.
  • Das Beispiel 18 kann den Gegenstand eines der Beispiele 14 bis 17 enthalten, wobei die Anweisungen bei Ausführung die Maschine ferner veranlassen, zu prüfen, ob die Metadatenseite zugewiesen wurde, die Metadatenseite basierend auf der Zuweisung einer anderen Seite des gesicherten Speichers zugewiesen wird und die andere Seite des gesicherten Speichers und die bestimmte Seite in einer Gruppe von Speicherseiten enthalten sind, die der Metadatenseite zugeordnet ist.
  • Das Beispiel 19 ist ein System, das enthält: einen Prozessor; einen Speicher, der einen gesicherten Bereich enthält, wobei der gesicherte Bereich ein Indirektionsverzeichnis und erste Sicherheitsmetadaten speichert, um mindestens einen Teil eines Replay-Integritätsbaums zu implementieren; und eine Speicherverschlüsselungs-Engine (MEE). Die MEE kann eine Schaltung enthalten, um: eine Datenanforderung in einer bestimmten Speicherseite in dem gesicherten Bereich zu empfangen; auf einen Zeiger in dem Indirektionsverzeichnis zuzugreifen, wobei der Zeiger auf eine bestimmte Metadatenseite des Speichers außerhalb des gesicherten Bereichs zeigen soll und die bestimmte Metadatenseite zweite Sicherheitsmetadaten zur Verwendung bei der Sicherung der Daten der bestimmten Seite enthält; die zweiten Sicherheitsmetadaten von der bestimmten Metadatenseite abzurufen; und die Authentizität der Daten der bestimmten Seite basierend auf den ersten und zweiten Sicherheitsmetadaten zu bestimmen.
  • Das Beispiel 20 kann den Gegenstand des Beispiels 19 enthalten, das ferner Systemsoftware enthält, die vom Prozessor ausführbar ist, um: zu veranlassen, dass die bestimmte Speicherseite in den gesicherten Bereich aufgenommen wird; die bestimmte Metadatenseite in Reaktion auf die Aufnahme der bestimmten Seite in dem gesicherten Bereich zuzuweisen; und den Zeiger zu aktualisieren, um eine Adresse der bestimmten Metadatenseite anzuzeigen, wobei der Zeiger einer Adresse der bestimmten Seite zugeordnet ist.
  • Das Beispiel 21 kann den Gegenstand von Beispiel 20 enthalten, wobei die bestimmte Seite in dem gesicherten Bereich des Speichers aufgenommen werden soll und die Metadatenseite außerhalb des gesicherten Bereichs des Speichers gespeichert werden soll.
  • Das Beispiel 22 kann den Gegenstand eines der Beispiele 20 bis 21 enthalten, wobei die bestimmte Metadatenseite in Reaktion auf das Identifizieren, dass die bestimmte Seite gesichert werden soll, dynamisch zugewiesen werden soll.
  • Das Beispiel 23 kann den Gegenstand eines der Beispiele 20 bis 22 enthalten, wobei die bestimmte Seite zur Verwendung mit einer sicheren Enklave gesichert werden soll.
  • Das Beispiel 24 kann den Gegenstand eines der Beispiele 20 bis 23 enthalten, wobei die Systemsoftware bei Ausführung ferner prüfen soll, ob die Metadatenseite zugewiesen wurde, die Metadatenseite basierend auf der Zuweisung einer anderen Seite des gesicherten Speichers zugewiesen wird und die andere Seite des gesicherten Speichers und die bestimmte Seite in einer Gruppe von Speicherseiten enthalten sind, die der Metadatenseite zugeordnet ist.
  • Das Beispiel 25 kann den Gegenstand eines der Beispiele 19 bis 24 enthalten, wobei eine Wurzel des Replay-Integritätsbaums in dem auf dem Chip befindlichen Speicher gespeichert wird.
  • Das Beispiel 26 kann den Gegenstand eines der Beispiele 19 bis 25 enthalten, wobei das Bestimmen der Authentizität der Daten das Durchführen eines Durchlaufs des Replay-Integritätsbaums beinhaltet und der Durchlauf zumindest teilweise auf den ersten und zweiten Sicherheitsmetadaten basiert.
  • Das Beispiel 27 kann den Gegenstand eines der Beispiele 19 bis 26 enthalten, wobei die zweiten Sicherheitsmetadaten einen Nachrichtenauthentifizierungscode (MAC) für die Daten der bestimmten Seite enthalten.
  • Das Beispiel 28 kann den Gegenstand eines der Beispiele 19 bis 27 enthalten, wobei die zweiten Sicherheitsmetadaten einen Versionsstartwert enthalten, der der bestimmten Seite zugeordnet ist, und der Versionsstartwert verschlüsselt werden muss zur Verwendung beim Erzeugen einer Verschlüsselungstextversion der Klartextdaten der bestimmten Seite.
  • Das Beispiel 29 kann den Gegenstand von Beispiel 28 enthalten, wobei die Verschlüsselungstextversion unter Verwendung der Zählermodus-Verschlüsselung erzeugt wird.
  • Das Beispiel 30 kann den Gegenstand eines der Beispiele 19 bis 29 enthalten, wobei die bestimmte Seite eine aus einer Gruppe von Seiten in dem Speicher ist und die bestimmte Metadatenseite die Sicherheitsmetadaten für jede der Gruppe von Seiten enthält.
  • Das Beispiel 31 kann den Gegenstand von Beispiel 30 enthalten, wobei die Sicherheitsmetadaten für jede der Gruppen von Seiten einen jeweiligen MAC und Versionsstartwert für jede Seite in der Gruppe von Seiten enthalten.
  • Das Beispiel 32 kann den Gegenstand eines der Beispiele 19 bis 31 enthalten, wobei das Indirektionsverzeichnis in einem gestohlenen Speicher gespeichert ist, der für die Systemsoftware nicht zugänglich ist.
  • Das Beispiel 33 kann den Gegenstand eines der Beispiele 19 bis 32 enthalten, wobei die MEE ferner dazu dient, Daten in dem geschützten Speicherbereich durch die Zählermodus-Verschlüsselung basierend auf den zweiten Sicherheitsmetadaten zu entschlüsseln und verschlüsseln.
  • Das Beispiel 34 ist ein Verfahren, das beinhaltet: Empfangen einer Datenanforderung auf einer bestimmten Seite in dem geschützten Speicherbereich; Zugreifen auf einen Zeiger in einem Indirektionsverzeichnis, wobei der Zeiger auf eine bestimmte Metadatenseite zeigen soll, die außerhalb des geschützten Bereichs des Speichers gespeichert ist, und die bestimmte Metadatenseite einen ersten Teil der Sicherheitsmetadaten zur Verwendung bei der Sicherung der Daten der bestimmten Seite enthält; Zugreifen auf einen zweiten Teil der Sicherheitsmetadaten, die der bestimmten Seite zugeordnet sind, aus dem geschützten Speicherbereich; und Bestimmen der Authentizität der Daten der bestimmten Seite basierend auf dem ersten und zweiten Teil der Sicherheitsmetadaten.
  • Das Beispiel 35 kann den Gegenstand von Beispiel 34 enthalten, wobei der zweite Teil der Sicherheitsmetadaten Schichten eines Replay-Integritätsbaums enthält, der der bestimmten Seite zugeordnet ist, und die Authentizität der Daten basierend auf dem Replay-Integritätsbaum bestimmt wird.
  • Das Beispiel 36 kann den Gegenstand von Beispiel 35 enthalten, wobei eine Wurzel des Replay-Integritätsbaums in dem auf dem Chip befindlichen Speicher gespeichert wird.
  • Das Beispiel 37 kann den Gegenstand von Beispiel 36 enthalten, wobei das Bestimmen der Authentizität der Daten das Durchführen eines Durchlaufs des Replay-Integritätsbaums beinhaltet und der Durchlauf zumindest teilweise auf dem ersten Teil der Sicherheitsmetadaten basiert.
  • Das Beispiel 38 kann den Gegenstand eines der Beispiele 34 bis 37 enthalten, wobei der erste Teil der Sicherheitsmetadaten einen Nachrichtenauthentifizierungscode (MAC) für die Daten der bestimmten Seite enthält.
  • Das Beispiel 39 kann den Gegenstand von Beispiel 38 enthalten, wobei der erste Teil der Sicherheitsmetadaten ferner einen Versionsstartwert enthält, der der bestimmten Seite zugeordnet ist, und der Versionsstartwert verschlüsselt werden muss zur Verwendung beim Erzeugen einer Verschlüsselungstextversion der Klartextdaten der bestimmten Seite.
  • Das Beispiel 40 kann den Gegenstand von Beispiel 39 enthalten, wobei die Verschlüsselungstextversion unter Verwendung der Zählermodus-Verschlüsselung erzeugt wird.
  • Das Beispiel 41 kann den Gegenstand eines der Beispiele 34 bis 40 enthalten, wobei die bestimmte Seite eine aus einer Gruppe von Seiten in dem Speicher ist und die bestimmte Metadatenseite die Sicherheitsmetadaten für jede der Gruppe von Seiten enthält.
  • Das Beispiel 42 kann den Gegenstand von Beispiel 41 enthalten, wobei die Sicherheitsmetadaten für jede der Gruppe von Seiten einen jeweiligen MAC und Versionsstartwert für jede Seite in der Gruppe von Seiten enthalten.
  • Das Beispiel 43 kann den Gegenstand eines der Beispiele 34 bis 42 enthalten, wobei das Indirektionsverzeichnis in einem gestohlenen Speicher gespeichert ist, der für die Systemsoftware nicht zugänglich ist.
  • Das Beispiel 44 kann den Gegenstand eines der Beispiele 34 bis 43 enthalten, wobei die bestimmte Metadatenseite eine von einer Vielzahl von in dem Speicher zugewiesenen Metadatenseiten ist und das Indirektionsverzeichnis Zeiger für jede der Vielzahl von Metadatenseiten enthält.
  • Das Beispiel 45 kann den Gegenstand eines der Beispiele 34 bis 44 enthalten, wobei das Indirektionsverzeichnis einen jeweiligen Zeiger für jede Speicherseite enthält, um auf eine jeweilige Metadatenseite zu zeigen, wenn die entsprechende Seite als geschützt bezeichnet ist.
  • Das Beispiel 46 kann den Gegenstand eines der Beispiele 34 bis 45 enthalten, wobei die MEE ferner dazu dient, Daten in dem geschützten Speicherbereich durch die Zählermodus-Verschlüsselung basierend auf dem ersten Teil der Sicherheitsmetadaten zu entschlüsseln und verschlüsseln.
  • Das Beispiel 47 ist ein System, das Mittel zum Durchführen des Verfahrens nach einem der Beispiele 34 bis 46 enthält.
  • Das Beispiel 48 ist ein Verfahren, das beinhaltet: Identifizieren einer bestimmten Seite in dem Computerspeicher, die gesichert werden soll; Zuweisen einer Metadatenseite in dem Computerspeicher, um einen ersten Teil der Sicherheitsmetadaten zur Verwendung beim Sichern der bestimmten Seite zu speichern, wobei ein zweiter Teil der Sicherheitsmetadaten in einem gesicherten Teil des Computerspeichers vorab zugewiesen werden soll; und Eingeben einer Adresse der Metadatenseite in einen bestimmten Zeiger in einem Indirektionsverzeichnis, wobei das Indirektionsverzeichnis in dem gesicherten Teil des Computerspeichers vorab zugewiesen ist und der bestimmte Zeiger einer Adresse der bestimmten Seite zugeordnet ist.
  • Das Beispiel 49 kann den Gegenstand von Beispiel 48 enthalten, wobei die bestimmte Seite in dem gesicherten Teil des Computerspeichers aufgenommen werden soll und die Metadatenseite außerhalb des gesicherten Teils des Computerspeichers gespeichert werden soll.
  • Das Beispiel 50 kann den Gegenstand eines der Beispiele 48 bis 49 enthalten, wobei die Metadatenseite in Reaktion auf das Identifizieren, dass die bestimmte Seite gesichert werden soll, dynamisch zugewiesen werden soll.
  • Das Beispiel 51 kann den Gegenstand eines der Beispiele 48 bis 50 enthalten, wobei die bestimmte Seite zur Verwendung mit einer sicheren Enklave gesichert werden soll.
  • Das Beispiel 52 kann den Gegenstand eines der Beispiele 48 bis 51 enthalten, das ferner das Prüfen beinhaltet, ob die Metadatenseite zugewiesen wurde, die Metadatenseite basierend auf der Zuweisung einer anderen Seite des gesicherten Speichers zugewiesen wird und die andere Seite des gesicherten Speichers und die bestimmte Seite in einer Gruppe von Speicherseiten enthalten sind, die der Metadatenseite zugeordnet ist.
  • Beispiel 53 ist ein System, das Mittel zum Durchführen des Verfahrens nach einem der Beispiele 48 bis 52 enthält.
  • Während diese Beschreibung viele spezifische Einzelheiten der Implementierung enthält, sollten diese nicht als Einschränkungen des Schutzumfangs von Erfindungen oder dessen, was beansprucht werden kann, sondern als Beschreibungen von Merkmalen spezifisch für bestimmte Ausführungsformen bestimmter Erfindungen ausgelegt werden. Bestimmte Merkmale, die in dieser Beschreibung in Zusammenhang mit separaten Ausführungsformen beschrieben werden, können auch in Kombination in einer einzigen Ausführungsform implementiert werden. Umgekehrt können verschiedene Merkmale, die im Zusammenhang mit einer einzelnen Ausführungsform beschrieben werden, auch in mehreren Ausführungsformen separat oder in irgendeiner geeigneten Unterkombination implementiert werden. Darüber hinaus können, obwohl Merkmale oben als in bestimmten Kombinationen wirkend beschrieben und sogar ursprünglich als solche beansprucht werden können, ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgenommen werden, und die beanspruchte Kombination kann auf eine Unterkombination oder Variation einer Unterkombination gerichtet sein.
  • In ähnlicher Weise sollte, während Vorgänge in den Zeichnungen in einer bestimmten Reihenfolge dargestellt werden, dies nicht als Anforderung verstanden werden, dass solche Vorgänge in der gezeigten bestimmten Reihenfolge oder in einer sequenziellen Reihenfolge durchgeführt werden müssen oder dass alle dargestellten Vorgänge durchgeführt werden müssen, um die gewünschten Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und Parallelverarbeitung von Vorteil sein. Weiterhin sollte die Trennung der verschiedenen Systemkomponenten in den oben beschriebenen Ausführungsformen nicht so verstanden werden, als wäre eine solche Trennung in allen Ausführungsformen notwendig, und es sollte verstanden werden, dass die beschriebenen Programmkomponenten und Systeme allgemein zusammen in ein einziges Softwareprodukt integriert oder in mehrere Softwareprodukte verpackt werden können.
  • Somit wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Andere Ausführungsformen liegen im Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen aufgeführten Aktionen in einer anderen Reihenfolge ausgeführt werden und dennoch die gewünschten Ergebnisse erzielen. Darüber hinaus erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die gezeigte bestimmte Reihenfolge oder sequenzielle Reihenfolge, um die gewünschten Ergebnisse zu erzielen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 9798900 [0042]
    • US 14/863353 [0042]

Claims (53)

  1. Vorrichtung, umfassend: einen Prozessor, der einen auf dem Chip befindlichen Speicher umfasst; einen Speicher, der einen geschützten Bereich umfasst; eine Speicherverschlüsselungs-Engine (Memory Encryption Engine, MEE), die eine Schaltung umfasst, um: eine Datenanforderung auf einer bestimmten Seite in dem geschützten Speicherbereich zu empfangen; auf einen Zeiger in einem Indirektionsverzeichnis zuzugreifen, wobei der Zeiger auf eine bestimmte Metadatenseite zeigen soll, die außerhalb des geschützten Bereichs des Speichers gespeichert ist, und die bestimmte Metadatenseite einen ersten Teil der Sicherheitsmetadaten zur Verwendung bei der Sicherung der Daten der bestimmten Seite umfasst; auf einen zweiten Teil der Sicherheitsmetadaten, die der bestimmten Seite zugeordnet sind, aus dem geschützten Speicherbereich zuzugreifen; und die Authentizität der Daten der bestimmten Seite basierend auf dem ersten und zweiten Teil der Sicherheitsmetadaten zu bestimmen.
  2. Vorrichtung nach Anspruch 1, wobei der zweite Teil der Sicherheitsmetadaten Schichten eines Replay-Integritätsbaums umfasst, der der bestimmten Seite zugeordnet ist, und die Authentizität der Daten basierend auf dem Replay-Integritätsbaum bestimmt wird.
  3. Vorrichtung nach Anspruch 2, wobei eine Wurzel des Replay-Integritätsbaums in dem auf dem Chip befindlichen Speicher gespeichert wird.
  4. Vorrichtung nach Anspruch 3, wobei das Bestimmen der Authentizität der Daten das Durchführen eines Durchlaufs des Replay-Integritätsbaums umfasst und der Durchlauf zumindest teilweise auf dem ersten Teil der Sicherheitsmetadaten basiert.
  5. Vorrichtung nach einem der Ansprüche 1 bis 4, wobei der erste Teil der Sicherheitsmetadaten einen Nachrichtenauthentifizierungscode (Message Authentification Code, MAC) für die Daten der bestimmten Seite umfasst.
  6. Vorrichtung nach Anspruch 5, wobei der erste Teil der Sicherheitsmetadaten ferner einen Versionsstartwert umfasst, der der bestimmten Seite zugeordnet ist, und der Versionsstartwert verschlüsselt werden muss zur Verwendung beim Erzeugen einer Verschlüsselungstextversion der Klartextdaten der bestimmten Seite.
  7. Vorrichtung nach Anspruch 6, wobei die Verschlüsselungstextversion unter Verwendung einer Zählermodus-Verschlüsselung erzeugt wird.
  8. Vorrichtung nach einem der Ansprüche 1 bis 7, wobei die bestimmte Seite eine aus einer Gruppe von Seiten in dem Speicher ist und die bestimmte Metadatenseite die Sicherheitsmetadaten für jede der Gruppe von Seiten umfasst.
  9. Vorrichtung nach Anspruch 8, wobei die Sicherheitsmetadaten für jede der Gruppe von Seiten einen jeweiligen MAC und Versionsstartwert für jede Seite in der Gruppe von Seiten umfassen.
  10. Vorrichtung nach einem der Ansprüche 1 bis 9, wobei das Indirektionsverzeichnis in einem gestohlenen Speicher gespeichert ist, der für die Systemsoftware nicht zugänglich ist.
  11. Vorrichtung nach einem der Ansprüche 1 bis 10, wobei die bestimmte Metadatenseite eine von einer Vielzahl von in dem Speicher zugewiesenen Metadatenseiten ist und das Indirektionsverzeichnis Zeiger für jede der Vielzahl von Metadatenseiten umfasst.
  12. Vorrichtung nach einem der Ansprüche 1 bis 11, wobei das Indirektionsverzeichnis einen jeweiligen Zeiger für jede Speicherseite umfasst, um auf eine jeweilige Metadatenseite zu zeigen, wenn die entsprechende Seite als geschützt bezeichnet ist.
  13. Vorrichtung nach einem der Ansprüche 1 bis 12, wobei die MEE ferner dazu dient, Daten in dem geschützten Speicherbereich durch die Zählermodus-Verschlüsselung basierend auf dem ersten Teil der Sicherheitsmetadaten zu entschlüsseln und verschlüsseln.
  14. Mindestens ein maschinenzugängliches Speichermedium, auf dem Anweisungen gespeichert sind, wobei die Anweisungen bei Ausführung auf einer Maschine die Maschine veranlassen: eine bestimmte Seite in dem Computerspeicher zu identifizieren, die gesichert werden soll; eine Metadatenseite in dem Computerspeicher zuzuweisen, um einen ersten Teil der Sicherheitsmetadaten zur Verwendung beim Sichern der bestimmten Seite zu speichern, wobei ein zweiter Teil der Sicherheitsmetadaten in einem gesicherten Teil des Computerspeichers vorab zugewiesen werden soll; und eine Adresse der Metadatenseite in einen bestimmten Zeiger in ein Indirektionsverzeichnis einzugeben, wobei das Indirektionsverzeichnis in dem gesicherten Teil des Computerspeichers vorab zugewiesen ist und der bestimmte Zeiger einer Adresse der bestimmten Seite zugeordnet ist.
  15. Speichermedium nach Anspruch 14, wobei die bestimmte Seite in dem gesicherten Teil des Computerspeichers aufgenommen werden soll und die Metadatenseite außerhalb des gesicherten Teils des Computerspeichers gespeichert werden soll.
  16. Speichermedium nach einem der Ansprüche 14 bis 15, wobei die Metadatenseite in Reaktion auf das Identifizieren, dass die bestimmte Seite gesichert werden soll, dynamisch zugewiesen werden soll.
  17. Speichermedium nach einem der Ansprüche 14 bis 16, wobei die bestimmte Seite zur Verwendung mit einer sicheren Enklave gesichert werden soll.
  18. Speichermedium nach einem der Ansprüche 14 bis 17, wobei die Anweisungen bei Ausführung die Maschine ferner veranlassen, zu prüfen, ob die Metadatenseite zugewiesen wurde, die Metadatenseite basierend auf der Zuweisung einer anderen Seite des gesicherten Speichers zugewiesen wird und die andere Seite des gesicherten Speichers und die bestimmte Seite in einer Gruppe von Speicherseiten enthalten sind, die der Metadatenseite zugeordnet ist.
  19. System, umfassend: einen Prozessor; einen Speicher, der einen gesicherten Bereich umfasst, wobei der gesicherte Bereich ein Indirektionsverzeichnis und erste Sicherheitsmetadaten speichert, um mindestens einen Teil eines Replay-Integritätsbaums zu implementieren; und eine Speicherverschlüsselungs-Engine (Memory Encryption Engine, MEE), die eine Schaltung umfasst, um: eine Datenanforderung in einer bestimmten Speicherseite in dem gesicherten Bereich zu empfangen; auf einen Zeiger in dem Indirektionsverzeichnis zuzugreifen, wobei der Zeiger auf eine bestimmte Metadatenseite des Speichers außerhalb des gesicherten Bereichs zeigen soll, und die bestimmte Metadatenseite zweite Sicherheitsmetadaten zur Verwendung bei der Sicherung der Daten der bestimmten Seite umfasst; die zweiten Sicherheitsmetadaten von der bestimmten Metadatenseite abzurufen; und die Authentizität der Daten der bestimmten Seite basierend auf den ersten und zweiten Sicherheitsmetadaten zu bestimmen.
  20. System nach Anspruch 19, ferner umfassend Systemsoftware, die von dem Prozessor ausführbar ist, um: zu veranlassen, dass die bestimmte Speicherseite in den gesicherten Bereich aufgenommen wird; die bestimmte Metadatenseite in Reaktion auf die Aufnahme der bestimmten Seite in dem gesicherten Bereich zuzuweisen; und den Zeiger zu aktualisieren, um eine Adresse der bestimmten Metadatenseite anzuzeigen, wobei der Zeiger einer Adresse der bestimmten Seite zugeordnet ist.
  21. System nach Anspruch 20, wobei die bestimmte Seite in dem gesicherten Bereich des Speichers aufgenommen werden soll und die Metadatenseite außerhalb des gesicherten Bereichs des Speichers gespeichert werden soll.
  22. System nach einem der Ansprüche 20 bis 21, wobei die bestimmte Metadatenseite in Reaktion auf das Identifizieren, dass die bestimmte Seite gesichert werden soll, dynamisch zugewiesen werden soll.
  23. System nach einem der Ansprüche 20 bis 22, wobei die bestimmte Seite zur Verwendung mit einer sicheren Enklave gesichert werden soll.
  24. System nach einem der Ansprüche 20 bis 23, wobei die Systemsoftware bei Ausführung ferner prüfen soll, ob die Metadatenseite zugewiesen wurde, die Metadatenseite basierend auf der Zuweisung einer anderen Seite des gesicherten Speichers zugewiesen wird und die andere Seite des gesicherten Speichers und die bestimmte Seite in einer Gruppe von Speicherseiten enthalten sind, die der Metadatenseite zugeordnet ist.
  25. System nach einem der Ansprüche 19 bis 24, wobei eine Wurzel des Replay-Integritätsbaums in dem auf dem Chip befindlichen Speicher gespeichert wird.
  26. System nach einem der Ansprüche 19 bis 25, wobei das Bestimmen der Authentizität der Daten das Durchführen eines Durchlaufs des Replay-Integritätsbaums umfasst und der Durchlauf zumindest teilweise auf den ersten und zweiten Sicherheitsmetadaten basiert.
  27. System nach einem der Ansprüche 19 bis 26, wobei die zweiten Sicherheitsmetadaten einen Nachrichtenauthentifizierungscode (MAC) für die Daten der bestimmten Seite umfassen.
  28. System nach einem der Ansprüche 19 bis 27, wobei die zweiten Sicherheitsmetadaten einen Versionsstartwert umfassen, der der bestimmten Seite zugeordnet ist, und der Versionsstartwert verschlüsselt werden muss zur Verwendung beim Erzeugen einer Verschlüsselungstextversion der Klartextdaten der bestimmten Seite.
  29. System nach Anspruch 28, wobei die Verschlüsselungstextversion unter Verwendung einer Zählermodus-Verschlüsselung erzeugt wird.
  30. System nach einem der Ansprüche 19 bis 29, wobei die bestimmte Seite eine aus einer Gruppe von Seiten in dem Speicher ist und die bestimmte Metadatenseite die Sicherheitsmetadaten für jede der Gruppe von Seiten umfasst.
  31. System nach Anspruch 30, wobei die Sicherheitsmetadaten für jede der Gruppen von Seiten einen jeweiligen MAC und Versionsstartwert für jede Seite in der Gruppe von Seiten umfassen.
  32. System nach einem der Ansprüche 19 bis 31, wobei das Indirektionsverzeichnis in einem gestohlenen Speicher gespeichert ist, der für die Systemsoftware nicht zugänglich ist.
  33. System nach einem der Ansprüche 19 bis 32, wobei die MEE ferner dazu dient, Daten in dem geschützten Speicherbereich durch die Zählermodus-Verschlüsselung basierend auf den zweiten Sicherheitsmetadaten zu entschlüsseln und verschlüsseln.
  34. Verfahren, umfassend: Empfangen einer Datenanforderung auf einer bestimmten Seite in dem geschützten Speicherbereich; Zugreifen auf einen Zeiger in einem Indirektionsverzeichnis, wobei der Zeiger auf eine bestimmte Metadatenseite zeigen soll, die außerhalb des geschützten Bereichs des Speichers gespeichert ist, und die bestimmte Metadatenseite einen ersten Teil der Sicherheitsmetadaten zur Verwendung bei der Sicherung der Daten der bestimmten Seite umfasst; Zugreifen auf einen zweiten Teil der Sicherheitsmetadaten, die der bestimmten Seite zugeordnet sind, aus dem geschützten Speicherbereich; und Bestimmen der Authentizität der Daten der bestimmten Seite basierend auf dem ersten und dem zweiten Teil der Sicherheitsmetadaten.
  35. Verfahren nach Anspruch 34, wobei der zweite Teil der Sicherheitsmetadaten Schichten eines Replay-Integritätsbaums umfasst, der der bestimmten Seite zugeordnet ist, und die Authentizität der Daten basierend auf dem Replay-Integritätsbaum bestimmt wird.
  36. Verfahren nach Anspruch 35, wobei eine Wurzel des Replay-Integritätsbaums in dem auf dem Chip befindlichen Speicher gespeichert wird.
  37. Verfahren nach Anspruch 36, wobei das Bestimmen der Authentizität der Daten das Durchführen eines Durchlaufs des Replay-Integritätsbaums umfasst und der Durchlauf zumindest teilweise auf dem ersten Teil der Sicherheitsmetadaten basiert.
  38. Verfahren nach einem der Ansprüche 34 bis 37, wobei der erste Teil der Sicherheitsmetadaten einen Nachrichtenauthentifizierungscode (MAC) für die Daten der bestimmten Seite umfasst.
  39. Verfahren nach Anspruch 38, wobei der erste Teil der Sicherheitsmetadaten ferner einen Versionsstartwert umfasst, der der bestimmten Seite zugeordnet ist, und der Versionsstartwert verschlüsselt werden muss zur Verwendung beim Erzeugen einer Verschlüsselungstextversion der Klartextdaten der bestimmten Seite.
  40. Verfahren nach Anspruch 39, wobei die Verschlüsselungstextversion unter Verwendung einer Zählermodus-Verschlüsselung erzeugt wird.
  41. Verfahren nach einem der Ansprüche 34 bis 40, wobei die bestimmte Seite eine aus einer Gruppe von Seiten in dem Speicher ist und die bestimmte Metadatenseite die Sicherheitsmetadaten für jede der Gruppe von Seiten umfasst.
  42. Verfahren nach Anspruch 41, wobei die Sicherheitsmetadaten für jede der Gruppe von Seiten einen jeweiligen MAC und Versionsstartwert für jede Seite in der Gruppe von Seiten umfassen.
  43. Verfahren nach einem der Ansprüche 34 bis 42, wobei das Indirektionsverzeichnis in einem gestohlenen Speicher gespeichert ist, der für die Systemsoftware nicht zugänglich ist.
  44. Verfahren nach einem der Ansprüche 34 bis 43, wobei die bestimmte Metadatenseite eine von einer Vielzahl von in dem Speicher zugewiesenen Metadatenseiten ist und das Indirektionsverzeichnis Zeiger für jede der Vielzahl von Metadatenseiten umfasst.
  45. Verfahren nach einem der Ansprüche 34 bis 44, wobei das Indirektionsverzeichnis einen jeweiligen Zeiger für jede Speicherseite umfasst, um auf eine jeweilige Metadatenseite zu zeigen, wenn die entsprechende Seite als geschützt bezeichnet ist.
  46. Verfahren nach einem der Ansprüche 34 bis 45, wobei die MEE ferner dazu dient, Daten in dem geschützten Speicherbereich durch die Zählermodus-Verschlüsselung basierend auf dem ersten Teil der Sicherheitsmetadaten zu entschlüsseln und verschlüsseln.
  47. System, umfassend Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 34 bis 46.
  48. Verfahren, umfassend: Identifizieren einer bestimmten Seite in dem Computerspeicher, die gesichert werden soll; Zuweisen einer Metadatenseite in dem Computerspeicher, um einen ersten Teil der Sicherheitsmetadaten zur Verwendung beim Sichern der bestimmten Seite zu speichern, wobei ein zweiter Teil der Sicherheitsmetadaten in einem gesicherten Teil des Computerspeichers vorab zugewiesen werden soll; und Eingeben einer Adresse der Metadatenseite in einen bestimmten Zeiger in einem Indirektionsverzeichnis, wobei das Indirektionsverzeichnis in dem gesicherten Teil des Computerspeichers vorab zugewiesen ist und der bestimmte Zeiger einer Adresse der bestimmten Seite zugeordnet ist.
  49. Verfahren nach Anspruch 48, wobei die bestimmte Seite in dem gesicherten Teil des Computerspeichers aufgenommen werden soll und die Metadatenseite außerhalb des gesicherten Teils des Computerspeichers gespeichert werden soll.
  50. Verfahren nach einem der Ansprüche 48 bis 49, wobei die Metadatenseite in Reaktion auf das Identifizieren, dass die bestimmte Seite gesichert werden soll, dynamisch zugewiesen werden soll.
  51. Verfahren nach einem der Ansprüche 48 bis 50, wobei die bestimmte Seite zur Verwendung mit einer sicheren Enklave gesichert werden soll.
  52. Verfahren nach einem der Ansprüche 48 bis 51, ferner umfassend das Prüfen, ob die Metadatenseite zugewiesen wurde, die Metadatenseite basierend auf der Zuweisung einer anderen Seite des gesicherten Speichers zugewiesen wird und die andere Seite des gesicherten Speichers und die bestimmte Seite in einer Gruppe von Speicherseiten enthalten sind, die der Metadatenseite zugeordnet ist.
  53. System, umfassend Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 48 bis 52.
DE102018129420.4A 2017-12-29 2018-11-22 Indirektionsverzeichnis für den kryptografischen speicherschutz Pending DE102018129420A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/859,295 US11082231B2 (en) 2017-12-29 2017-12-29 Indirection directories for cryptographic memory protection
US15/859,295 2017-12-29

Publications (1)

Publication Number Publication Date
DE102018129420A1 true DE102018129420A1 (de) 2019-07-04

Family

ID=65231829

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018129420.4A Pending DE102018129420A1 (de) 2017-12-29 2018-11-22 Indirektionsverzeichnis für den kryptografischen speicherschutz

Country Status (3)

Country Link
US (1) US11082231B2 (de)
CN (1) CN110022199A (de)
DE (1) DE102018129420A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11921905B2 (en) 2018-04-30 2024-03-05 Google Llc Secure collaboration between processors and processing accelerators in enclaves
EP4155996A1 (de) * 2018-04-30 2023-03-29 Google LLC Enklavewechselwirkungen
WO2019212579A1 (en) * 2018-04-30 2019-11-07 Google Llc Managing enclave creation through a uniform enclave interface
US11093272B2 (en) * 2018-06-27 2021-08-17 International Business Machines Corporation Virtual machine allocation and migration between hardware devices by destroying and generating enclaves using transmitted datafiles and cryptographic keys
US11048800B2 (en) * 2018-12-17 2021-06-29 Intel Corporation Composable trustworthy execution environments
US11550903B1 (en) * 2019-04-26 2023-01-10 Joseph Alan Epstein System and method for trustworthiness, reputation, provenance, and measurement of software
US11343090B2 (en) * 2019-06-27 2022-05-24 Intel Corporation Device ID for memory protection
US11019033B1 (en) * 2019-12-27 2021-05-25 EMC IP Holding Company LLC Trust domain secure enclaves in cloud infrastructure
US11356271B2 (en) * 2020-02-13 2022-06-07 Verifone, Inc. Systems and methods for providing a trusted keystore
EP4196892A1 (de) * 2020-08-17 2023-06-21 Harman International Industries, Incorporated Systeme und verfahren zur objekterkennung in autonomen fahrzeugen
US11665148B2 (en) * 2021-03-22 2023-05-30 Cisco Technology, Inc. Systems and methods for addressing cryptoprocessor hardware scaling limitations
CN113111391B (zh) * 2021-04-09 2022-07-08 支付宝(杭州)信息技术有限公司 用于内存完整性保护的方法和内存控制器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798900B2 (en) 2015-03-26 2017-10-24 Intel Corporation Flexible counter system for memory protection

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4758946A (en) * 1986-04-09 1988-07-19 Elxsi Page mapping system
US5479627A (en) * 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US7249242B2 (en) * 2002-10-28 2007-07-24 Nvidia Corporation Input pipeline registers for a node in an adaptive computing engine
US7512750B2 (en) * 2003-12-31 2009-03-31 Intel Corporation Processor and memory controller capable of use in computing system that employs compressed cache lines' worth of information
US7681050B2 (en) * 2005-12-01 2010-03-16 Telefonaktiebolaget L M Ericsson (Publ) Secure and replay protected memory storage
US20090031142A1 (en) * 2007-07-25 2009-01-29 Shai Halevi System, Method and Computer Program Product for Processing a Memory Page
US8104089B1 (en) * 2007-12-31 2012-01-24 Symantec Corporation Tracking memory mapping to prevent packers from evading the scanning of dynamically created code
US20090198952A1 (en) * 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
US9117094B2 (en) * 2008-10-29 2015-08-25 Microsoft Technology Licensing, Llc Data location obfuscation
US8379846B2 (en) * 2009-05-21 2013-02-19 Freescale Semiconductor, Inc. Encryption apparatus and method therefor
US20110153944A1 (en) * 2009-12-22 2011-06-23 Klaus Kursawe Secure Cache Memory Architecture
US20110202740A1 (en) * 2010-02-17 2011-08-18 Arm Limited Storing secure page table data in secure and non-secure regions of memory
US8688954B2 (en) * 2011-08-26 2014-04-01 Microsoft Corporation Remapping inoperable memory blocks using pointers
US8819455B2 (en) * 2012-10-05 2014-08-26 Intel Corporation Parallelized counter tree walk for low overhead memory replay protection
US9071281B2 (en) * 2013-03-10 2015-06-30 Intel Corporation Selective provision of error correction for memory
US10324863B2 (en) * 2013-06-24 2019-06-18 Intel Corporation Protected memory view for nested page table access by virtual machine guests
US9767044B2 (en) * 2013-09-24 2017-09-19 Intel Corporation Secure memory repartitioning
US9448950B2 (en) * 2013-12-24 2016-09-20 Intel Corporation Using authenticated manifests to enable external certification of multi-processor platforms
US20160085695A1 (en) * 2014-09-24 2016-03-24 Intel Corporation Memory initialization in a protected region
US9684608B2 (en) * 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles
US9524249B2 (en) * 2014-12-23 2016-12-20 Intel Corporation Memory encryption engine integration
US10230528B2 (en) * 2015-05-04 2019-03-12 Intel Corporation Tree-less integrity and replay memory protection for trusted execution environment
US9934148B2 (en) * 2015-06-23 2018-04-03 Advanced Micro Devices, Inc. Memory module with embedded access metadata
US10007580B2 (en) * 2016-04-11 2018-06-26 International Business Machines Corporation Assigning storage locations based on a graph structure of a workload
US10019377B2 (en) * 2016-05-23 2018-07-10 Advanced Micro Devices, Inc. Managing cache coherence using information in a page table
US10243990B1 (en) * 2016-09-23 2019-03-26 Apple Inc. Systems and methods for detecting replay attacks on security space
US20180211046A1 (en) * 2017-01-26 2018-07-26 Intel Corporation Analysis and control of code flow and data flow
GB201709499D0 (en) * 2017-06-15 2017-08-02 Microsoft Technology Licensing Llc Memory management in non-volatile memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798900B2 (en) 2015-03-26 2017-10-24 Intel Corporation Flexible counter system for memory protection

Also Published As

Publication number Publication date
US20190044729A1 (en) 2019-02-07
US11082231B2 (en) 2021-08-03
CN110022199A (zh) 2019-07-16

Similar Documents

Publication Publication Date Title
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
US11770368B2 (en) Techniques for shared private data objects in a trusted execution environment
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
DE102018005180A1 (de) Flexible Bescheinigung von Containern
DE102018115491A1 (de) System, vorrichtung und verfahren zur seitengranularen, softwaregesteuerten speicherverschlüsselung mit mehreren schlüsseln
US11675919B2 (en) Separation of managed and unmanaged data in a computing device
DE102019113352A1 (de) Technologien für sichere e/a mit speicherverschlüsselungs-engines
DE102018101307A1 (de) Techniken für SGX-Enklaven-Fernauthentifizierung
US10541804B2 (en) Techniques for key provisioning in a trusted execution environment
DE112017004017T5 (de) Sichere öffentliche cloud
US20180183578A1 (en) Provisioning keys for virtual machine scaling
DE102018123710A1 (de) Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud
DE112017002044T5 (de) Plattformattestierung und registrierung für server
DE112017001853T5 (de) Flexible Bereitstellung von Bestätigungsschlüsseln in sicheren Enklaven
US20180095899A1 (en) Multi-crypto-color-group vm/enclave memory integrity method and apparatus
DE102019110309A1 (de) Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen
DE102018109397A1 (de) Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen
DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
DE102013203126B4 (de) System, Verfahren und Programmprodukt zum transparenten Zugreifen auf verschlüsselte nicht-relationale Daten in Echtzeit
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE112016004435T5 (de) Hardware-gestützte einseitige kryptografie
DE112015004555T5 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
DE112010004885T5 (de) Bereitstellen von Integritätsüberprüfung und -bestätigung in einer verborgenen Ausführungsumgebung