DE112016006003T5 - Vertrauenswürdiger Start sicherer Enklaven in virtuellen Umgebungen - Google Patents

Vertrauenswürdiger Start sicherer Enklaven in virtuellen Umgebungen Download PDF

Info

Publication number
DE112016006003T5
DE112016006003T5 DE112016006003.3T DE112016006003T DE112016006003T5 DE 112016006003 T5 DE112016006003 T5 DE 112016006003T5 DE 112016006003 T DE112016006003 T DE 112016006003T DE 112016006003 T5 DE112016006003 T5 DE 112016006003T5
Authority
DE
Germany
Prior art keywords
enclave
instance
trusted
enclave instance
instructions
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.)
Withdrawn
Application number
DE112016006003.3T
Other languages
English (en)
Inventor
Scott H. Robinson
Ravi L. Sahita
Mark W. Shanahan
Karanvir S. Grewal
Nitin V. Sarangdhar
Carlos V. Rozas
Bo Zhang
Shanwei Cen
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 DE112016006003T5 publication Critical patent/DE112016006003T5/de
Withdrawn 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Abstract

Systeme, Vorrichtungen und Verfahren können zum Verifizieren, von außerhalb einer vertrauenswürdigen Computerbasis eines Datenverarbeitungssystems, einer Identität einer Enklaveninstanz, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet wird, ein Bestimmen eines Speicherorts der Enklaveninstanz und ein Bestätigen bereitstellen, dass der Speicherort für das Datenverarbeitungssystem lokal ist. Bei einem Beispiel ist die Enklaveninstanz eine Proxy-Enklaveninstanz, wobei Kommunikationen mit einer oder mit mehreren zusätzlichen Enklaveninstanzen in der vertrauenswürdigen Computerbasis über die Proxy-Enklaveninstanz und einen unverschlüsselten Kanal ausgeführt werden.

Description

  • QUERVERWEIS ZU VERWANDTEN ANMELDUNGEN
  • Die vorliegende Patenanmeldung beansprucht den Nutzen der Priorität über die nicht-vorläufige US-Patentanmeldung Nr. 14/998,065 , eingereicht am 24. Dezember 2015.
  • TECHNISCHES GEBIET
  • Ausführungsformen betreffen im Allgemeinen die Datensicherheit. Insbesondere betreffen Ausführungsformen den vertrauenswürdigen Start von sicheren Enklaven in virtuellen Umgebungen.
  • HINTERGRUND
  • In Datenverarbeitungssystemen kann eine vertrauenswürdige Ausführungsumgebung (TEE, Trusted Excecution Environment) als eine sichere Enklave implementiert werden, welche innerhalb einer dedizierten vertrauenswürdigen Computerbasis (TCB, Trusted Computing Base) läuft, wobei die sichere Enklave sensible Informationen empfangen und verarbeiten kann. Virtuelle Computerarchitekturen können eine oder mehrere virtuelle Maschinen umfassen, welche von einem virtuellen Maschinenmonitor (VMM, z. B. Hypervisor) verwaltet werden. In einem virtuellen enklavenbasierten Datenverarbeitungssystem, können sowohl der VMM als auch das Betriebssystem (OS) einer gegebenen virtuellen Maschine (VM) außerhalb der vertrauenswürdigen Computerbasis einer bestimmten Enklave arbeiten (obwohl der VMM innerhalb einer TCB laufen kann, welche von der TCB der sicheren Enklave verschieden ist). Dementsprechend kann es ein Risiko von Malware geben, welche den VMM und OS-Komponenten verwendet, um eine Enklavenstartsequenz zu erzeugen, welche der Malware ermöglicht, den Speicherort der Enklave falsch darzustellen, sensible Informationen, welche der Enklave geliefert werden, abzufangen und/oder zu manipulieren, falsche Informationen an andere sichere Enklaven weiterzugeben usw.
  • Figurenliste
  • Die verschiedenen Vorteile der Ausführungsformen werden Durchschnittsfachleuten durch Lesen der nachfolgenden Beschreibung und angefügten Ansprüche und durch Bezugnahme auf die nachfolgenden Zeichnungen offenkundig, wobei:
    • 1 ein Blockdiagramm eines Beispiels eines virtuellen enklavenbasierten Datenverarbeitungssystems ist;
    • 2 ein Ablaufdiagramm eines Beispiels eines Verfahrens zum Betreiben einer virtuellen Maschinenmonitorvorrichtung gemäß einer Ausführungsform ist;
    • 3 ein Ablaufdiagramm eines Beispiels eines Verfahrens zum Starten von sicheren Enklaven über ein nicht vertrauenswürdiges Laufzeitsystem gemäß einer Ausführungsform ist;
    • 4 ein Ablaufdiagramm eines Beispiels eines Verfahrens zum Starten von sicheren Enklaven über einen vertrauenswürdigen Enklavenstarter gemäß einer Ausführungsform ist;
    • 5 ein Blockdiagramm eines Beispiels eines Privilegienstapels gemäß einer Ausführungsform ist;
    • 6 ein Blockdiagramm eines Beispiels einer virtuellen Maschinenmonitorvorrichtung gemäß einer Ausführungsform ist;
    • 7 ein Blockdiagramm eines Beispiels eines Prozessors gemäß einer Ausführungsform ist; und
    • 8 ein Blockdiagramm eines Beispiels eines Datenverarbeitungssystems gemäß einer Ausführungsform ist.
  • BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Unter Bezugnahme auf 1 wird nun ein virtuelles enklavenbasiertes Datenverarbeitungssystem 10 gezeigt. Das System 10 kann Teil beispielsweise eines Servers, eines Arbeitsplatzcomputers, eines Notebook-Computers, eines Tablet-Computers, eines wandelbaren Tablets, eines Smartphones, eines PDA-Minicomputers (PDA), einer am Körper tragbaren Vorrichtung, einer mobilen Internet-Vorrichtung (MID), eines Medienabspielers usw. oder jede Kombination davon sein. Bei dem illustrierten Beispiel läuft ein virtueller Maschinenmonitor (VMM) 12 in einer vertrauenswürdigen Computerbasis (TCB) 11 und ist kommunikativ mit einer oder mit mehreren Enklaven-TCBs 14 (14a bis 14c), mit einer oder mit mehreren Eingabe-/Ausgabe-(E/A)-Vorrichtungen 16 (z. B. einer humanen Schnittstellenvorrichtung/HID, wie beispielsweise einem biometrischen Scanner, mit einer Anzeige, wie beispielsweise einer organischen Leuchtdioden-/OLED-Anzeige, Flüssigkristallanzeige/LCD, Berührungsbildschirm) verbunden. Jede Enklaven-TCB 14 kann im Allgemeinen einen Satz Laufzeitkomponenten (z. B. Prozessoren, Register usw.) umfassen, welche ermöglichen, dass mindestens ein Abschnitt des Systems 10 als vertrauenswürdig gilt. Wenn sich beispielsweise eine der Komponenten beim Prozess des Hochfahrens/Startens verändert (oder aktualisiert wird), nachdem das Vertrauen hergestellt ist, können die Enklaven-TCBs 14 eine Migration oder ein erneutes Absichern von Geheimnissen unterstützen.
  • Jede Enklaven-TCB 14 kann kommunikativ mit einem gemeinsam genutzten Puffer verbunden sein, welcher dem VMM 12, dem OS und/oder dem Starter sichtbar oder zugänglich ist, und wobei die Enklaven-TCB einen relativ kleinen Enklavenseiten-Cache (EPC) umfassen kann, welcher dem VMM 12 im Allgemeinen nicht sichtbar oder zugänglich ist. Bei dem illustrierten Beispiel umfasst beispielsweise eine erste Enklaven-TCB 14a einen ersten gemeinsam genutzten Puffer 24 und einen ersten EPC 20, umfasst eine zweite Enklaven-TCB 14b einen zweiten gemeinsam genutzten Puffer 25 und einen zweiten EPC 21, umfasst eine dritte Enklaven-TCB 14c einen dritten gemeinsam genutzten Puffer 27 und einen dritten Enklaven-EPC 23 usw.
  • Folglich könnte der erste gemeinsam genutzte Puffer 24 der ersten Enklaven-TCB 14a im Allgemeinen dem VMM 12 und einer ersten Enklaveninstanz 22a sichtbar und zugänglich sein. Dementsprechend kann der VMM 12 den ersten gemeinsam genutzten Puffer 24 verwenden, um mit der ersten Enklaveninstanz 22a zu kommunizieren. Insbesondere kann der VMM 12 den ersten gemeinsam genutzten Puffer 24 als einen unverschlüsselten Kanal verwenden, um sensible Daten zwischen den E/A-Vorrichtungen 16 und den sicheren Enklaveninstanzen 22 zu übertragen. Wie ausführlicher diskutiert wird, kann ein Zugriff auf den ersten gemeinsam genutzten Puffer 24 durch eine erweiterte Seitentabelle (EPT, nicht gezeigt) geschehen, welche von dem VMM 12 gesteuert wird und nur dem VMM 12 und den ersten Enklaveninstanzen 22a sichtbar ist. Dementsprechend kann der erste gemeinsam genutzte Puffer 24 als innerhalb der TCB 11 des VMM 12 angesehen werden.
  • Folglich könnten die E/A-Vorrichtungen 16 einen biometrischen Scanner umfassen, welcher sensible Daten erzeugt, wie beispielsweise Fingerabdruckdaten, und kann eine der sicheren Enklaveninstanzen 22 verschiedene Verarbeitungs- und/oder Vergleichsoperationen an den Fingerabdruckdaten durchführen. In einem derartigen Fall könnte die Anzeige 18 die Ergebnisse der Verarbeitungs-/Vergleichsoperationen oder andere Informationen, welche den Daten zugeordnet sind, ausgeben (z. B. visuell darstellen). Das illustrierte System 10 kann ein verbessertes Dauerleistungsvermögen und eine reduzierte Protokollkomplexität zeigen, weil Datenübertragungen durch die gemeinsam genutzten Puffer 24, 25, 27 unverschlüsselt sein können. Bei einem Beispiel sind die sicheren Enklaveninstanzen 22 Enklaven der INTEL Software Guard eXtensions (SGX). Ferner kann der VMM 12 sensible Daten von den E/A-Vorrichtungen 16 über die erste Enklaveninstanz 22a an eine oder mehrere zusätzliche Enklaveninstanzen 22b bis 22c kommunizieren, wobei die erste Enklaveninstanz 22a als eine Proxy-Enklaveninstanz fungiert.
  • Wie ausführlicher diskutiert wird, kann der VMM 12 die Identität (z. B. einen kryptografischen Hash) mindestens der ersten Enklaveninstanz 22a verifizieren, den Speicherort in dem EPC 20 der ersten Enklaveninstanz 22a bestimmen und bestätigen, dass der Speicherort für das Datenverarbeitungssystem 10 lokal ist. Es ist besonders zu beachten, dass an Stelle eines Verifizierens der Identität der ersten Enklaveninstanz 22a, nachdem die erste Enklaveninstanz 22a gestartet wurde, der illustrierte VMM 12 die Identität der ersten Enklaveninstanz 22a verifiziert, bevor die erste Enklaveninstanz 22a gestartet wird. Ferner kann der VMM 12 ein nicht vertrauenswürdiges Laufzeitsystem (URTS, z. B. ein Betriebssystem/eine OS-Komponente) 13 und/oder einen vertrauenswürdigen Enklavenstarter 15 verwenden, um mindestens die erste Enklaveninstanz 22a auf eine sichere Weise zu starten, sogar obwohl das URTS 13 und/oder der zuverlässige Enklavenstarter 15 außerhalb der ersten Enklaven-TCB 14a der ersten Enklaveninstanz 22a arbeiten können. Im Ergebnis reduziert die illustrierte Lösung das Risiko von Malware (z. B. lokal oder entfernt), welche eine Enklavenstartsequenz erzeugt, welche der Malware ermöglicht, den Speicherort der ersten Enklaveninstanz 22a falsch darzustellen, sensible Informationen, welche der ersten Enklaveninstanz 22a zugeführt werden, abzufangen und/oder zu manipulieren, falsche Informationen an die zusätzlichen Enklaveninstanzen 22b bis 22c weiterzureichen usw.
  • 2 zeigt ein Verfahren 26 zum Betreiben einer virtuellen Maschinenmonitorvorrichtung. Das Verfahren 26 kann im Allgemeinen in einem Datenverarbeitungssystem implementiert sein, wie beispielsweise dem bereits diskutierten virtuellen enklavenbasierten Datenverarbeitungssystem 10 (1). Insbesondere kann das Verfahren 26 in einem oder in mehreren Modulen als ein Satz von Logikbefehlen implementiert werden, welche in einem maschinen- oder computerlesbaren Speichermedium, wie beispielsweise Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), programmierbarer ROM (PROM), Firmware, Flash-Speicher usw., in konfigurierbarer Logik, wie beispielsweise programmierbaren Logik-Arrays (PLAs), feldprogrammierbaren Gate-Arrays (FPGAs), komplexen programmierbaren Logikvorrichtungen (CPLDs), in Logik-Hardware mit fester Funktionalität unter Verwendung von Schaltungstechnik, wie beispielsweise der Technik anwendungsspezifischer integrierter Schaltkreise (ASIC), komplementärer Metalloxidhalbleiter (CMOS) oder Transistor-Transistor-Logik (TTL) oder jeder Kombination davon, gespeichert sind. Beispielsweise kann Computerprogrammcode, um in dem Verfahren 26 gezeigte Operationen auszuführen, in jeder Kombination von einer oder von mehreren Programmiersprachen geschrieben sein, welche eine objektorientierte Programmiersprache, wie beispielsweise JAVA, SMALLTALK, C++ oder dergleichen, und herkömmliche prozedurale Programmiersprachen umfassen, wie beispielsweise die Programmiersprache „C“ oder ähnliche Programmiersprachen.
  • Ein illustrierter Verarbeitungsblock 28 stellt von außerhalb einer vertrauenswürdigen Computerbasis einer Enklaveninstanz ein Verifizieren einer Identität (z. B. eines kryptografischen Hashs) der Enklaveninstanz bereit, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet ist. Block 30 kann einen Speicherort der Enklaveninstanz bestimmen, wobei ein illustrierter Block 32 bestätigt, dass der Speicherort für das Datenverarbeitungssystem lokal ist. Bei einem Beispiel kommuniziert ein Block 34 über die Enklaveninstanz und einen unverschlüsselten Kanal (z. B. fungiert die Enklaveninstanz als ein Proxy) mit einer oder mit mehreren zusätzlichen Enklaveninstanzen in der vertrauenswürdigen Computerbasis. Das Verfahren 26 kann ein URTS und/oder einen vertrauenswürdigen Enklavenstarter verwenden, um die Enklaveninstanzen sicher zu starten.
  • 3 zeigt ein Verfahren 36 zum Starten sicherer Enklaven über ein URTS. Das Verfahren 36 kann im Allgemeinen in einem Datenverarbeitungssystem implementiert sein, wie beispielsweise dem bereits diskutierten virtuellen enklavenbasierten Datenverarbeitungssystem 10 (1). Insbesondere kann das Verfahren 36 in einem oder in mehreren Modulen als ein Satz von Logikbefehlen implementiert werden, welche in einem maschinen- oder computerlesbaren Speichermedium, wie beispielsweise RAM, ROM, PROM, Firmware, Flash-Speicher usw., in konfigurierbarer Logik, wie beispielsweise PLAs, FPGAs, CPLDs, in Logik-Hardware mit fester Funktionalität unter Verwendung von Schaltungstechnik, wie beispielsweise der ASIC-, CMOS- oder TTL-Technik oder jeder Kombination davon, gespeichert sind.
  • Bei dem illustrierten Beispiel tritt ein Hochfahren des Systems bei Block 38 auf. Block 38 kann das Starten eines VMM, einer VM und/oder einer Hardware-basierten Sicherheitsrahmenstruktur umfassen, wie beispielsweise SGX. Eine oder mehrere Abbruchsteuerungen können in einer VM bei Block 40 aktiviert sein, wobei die Abbruchsteuerungen einen Enklavenerzeugungs-(z. B. ECREATE)-VM-Abbruchbefehl, einen Enklaveninitialisierungs- (z. B. EINIT)-VM-Abbruchbefehl usw. umfassen können. Die Abbruchsteuerungen können insoweit als „Fallen“ angesehen werden, dass eine Ausführung der unterliegenden Startbefehle (z. B. ECREATE, EINIT) innerhalb der VM automatisch eine Übertragung der Steuerung (z. B. eines „Abbruchs“) von der VM auf den VMM auslöst. Ein Ring-3-VMM-Agent kann bei Block 42 gestartet werden. In dieser Hinsicht kann das Datenverarbeitungssystem verschiedene Privilegienringe umfassen, wobei sich Anwendungen auf dem relativ unprivilegierten „Ring-3“-Schutzniveau (z. B. ohne Privilegien des Systemniveaus) befinden, sich das Betriebssystem (OS) auf dem „Ring-0“-Schutzniveau (z. B. mit einigen Privilegien des Systemniveaus) befindet und sich der VMM unter dem Ring-0-Schutzniveau (z. B. mit vollen Privilegien des Systemniveaus) befindet. Aus der Perspektive der Enklaveninstanz kann der Agent, welcher bei Block 42 gestartet wurde, als eine nicht vertrauenswürdige Anwendung angesehen werden, welche die Enklaveninstanz begleitet (z. B. kann eine SGX-Enklave nichts anderem als sich selbst vertrauen).
  • In Block 44 kann der Ring-3-VMM-Agent das Ring-0-URTS aufrufen, um eine Enklaveninstanz zu starten, welche in nicht flüchtigem Speicher (NVM) gespeichert sein kann, wie beispielsweise auf einer Halbleiter-Festplatte (SSD). Das URTS kann den ECREATE-Startbefehl bei Block 46 aufrufen, welcher bei dem illustrierten Beispiel die Ausführung einer Abbruchsteuerung bei Block 48 auslöst. Während des Blocks 46 kann das URTS EPC-Seiten zuteilen und andere Informationen für ein Starten der Enklaveninstanz zusammenstellen. In dieser Hinsicht kann der ECREATE-Startbefehl nicht schon an sich Enklavenidentitätsinformationen (z. B. MRENCLAVE) oder öffentliche Schlüsselinformationen mit Siegelautorität (z. B. MRSIGNER) empfangen oder erzeugen, welche andernfalls dem VMM ermöglichen würden, zu bestimmen, welche Enklaveninstanz gestartet wird. Dementsprechend kann Block 46 auch Hinzufügen einer oder mehrerer Annotationen (z. B. Tags) zu dem ECREATE-Startbefehl einbeziehen, um den bestimmten ECREATE-Startbefehl nachzuverfolgen. Bei einem anderen Beispiel kann eine Nachverfolgungsdatenstruktur, wie beispielsweise eine Liste, Datenbank usw., verwendet werden, um alle Startbefehle nachzuverfolgen.
  • Der illustrierte Block 50 führt eine Analyse eines oder mehrerer Parameter durch, welche der Ausführung der Abbruchsteuerung zugeordnet sind (z. B. Kopieren von interessierenden Strukturen in einen VMM-sicheren Bereich, welcher nicht von dem normalen OS zugänglich ist, so dass sie unveränderlich sind) und führt den ECREATE-Startbefehl sicher aus, wenn die Analyse die Identität (z. B. einen kryptografischen Hash) der Enklaveninstanz bestätigt. Block 50 kann Entfernen einer oder mehrerer Annotationen von dem ECREATE-Startbefehl umfassen. Ferner kann Block 50 relevante Informationen erfassen, wie beispielsweise eine SECS-(SGX-Enklavensteuerungsstruktur)-Adresse in dem EPC, einen Enklavenbereich usw. Der VMM kann sich auf die Sicherheitsrahmenstruktur-Hardware verlassen, um andere Prüfungen des ECREATE-Befehls nach Abschluss des Verfahrens 36 durchzuführen. Bei Block 52 kann eine Bestimmung darüber ausgeführt werden, ob ein Fehler aufgetreten ist (z. B. auf der Grundlage verschiedener Abbruchbedingungen des ECREATE-Befehls). Wenn kein Fehler aufgetreten ist, kann Block 54 zur Ausführung des Ring-0-URTS zurückkehren, welches bei dem illustrierten Beispiel den EINIT-Befehl aufruft.
  • Der EINIT-Befehl kann die Ausführung einer anderen Abbruchsteuerung bei Block 56 auslösen. Der illustrierte Block 58 führt eine Analyse eines oder mehrerer Parameter durch, welche der Ausführung der Abbruchsteuerung zugeordnet sind (z. B. Kopieren von interessierenden Strukturen in einen sicheren Bereich) und führt den EINIT-Startbefehl sicher aus, wenn die Analyse die Identität der Enklaveninstanz bestätigt. Die wirksame Adresse der SECS-Adresse aus dem ECREATE-Startbefehl kann mit dem EINIT-Startbefehl korreliert werden, um die MRSIGNER/MRENCLAVE-Informationen zu erhalten. Insbesondere können die MRENCLAVE-Informationen die Enklaveninstanz eindeutig identifizieren und können mit einem im VMM gespeicherten Wert verglichen werden, um die Identität der Enklave zu verifizieren. Block 58 kann auch andere Eigenschaften prüfen, wie beispielsweise, ob die Enklaveninstanz von Fehlern bereinigt werden kann, wobei eine Unfähigkeit, die Enklaveninstanz von Fehlern zu bereinigen, Grund zur Disqualifikation sein kann. Wenn die SECS-Adresse nicht übereinstimmt, kann zugelassen werden, dass der EINIT-Startbefehl auf der Grundlage normal fortfährt, dass keine Übereinstimmung mit dem interessierenden ECREATE-Startbefehl ermittelt werden konnte. Wenn eine Nachverfolgungsdatenstruktur (z. B. eine Liste, Datenbank usw.) verwendet wird, um alle Startbefehle nachzuverfolgen, kann Block 58 ein Suchen der Nachverfolgungsdatenstruktur umfassen, um festzustellen, ob der EINIT-Startbefehl dem interessierenden ECREATE-Startbefehl entspricht.
  • Bei Block 60 kann eine Bestimmung darüber ausgeführt werden, ob ein Fehler aufgetreten ist. Wenn nicht, da der VMM die Enklavenidentität und den EPC-Adressbereich bei Block 62 kennt, wendet der illustrierte Block 64 EPT-Sicherungen an der Enklaveninstanz an, beispielsweise durch „Verpacken“ der Enklaveninstanz in eine EPT-geschützte Ansicht und durch Bestätigen einer Örtlichkeit vor Übertragen sensibler Daten an die Enklaveninstanz. Die URTS-Ausführung kann bei dem illustrierten Block 66 fortfahren. Wenn entweder ein ECREATE-Fehler oder ein EINIT-Fehler detektiert wird, kann Block 68 eine geeignete Fehlermeldung erzeugen, wobei Protokollieren des Fehlers und Bereinigen von Systemdateien bei Block 70 durchgeführt werden kann.
  • 4 zeigt einen anderen Ansatz, bei welchem ein Verfahren 72 sichere Enklaven über einen vertrauenswürdigen Enklavenstarter startet. Das Verfahren 72 kann im Allgemeinen in einem Datenverarbeitungssystem implementiert sein, wie beispielsweise dem bereits diskutierten virtuellen enklavenbasierten Datenverarbeitungssystem 10 (1). Insbesondere kann das Verfahren 72 in einem oder in mehreren Modulen als ein Satz von Logikbefehlen implementiert werden, welche in einem maschinen- oder computerlesbaren Speichermedium, wie beispielsweise RAM, ROM, PROM, Firmware, Flash-Speicher usw., in konfigurierbarer Logik, wie beispielsweise PLAs, FPGAs, CPLDs, in Logik-Hardware mit fester Funktionalität unter Verwendung von Schaltungstechnik, wie beispielsweise der ASIC-, CMOS- oder TTL-Technik oder jeder Kombination davon, gespeichert sind.
  • Der illustrierte Verarbeitungsblock 74 fährt ein System hoch, was ein Starten eines VMM, einer VM und/oder einer Hardware-basierten Sicherheitsrahmenstruktur umfassen kann, wie beispielsweise SGX. Ein vertrauenswürdiger Enklavenstarter (z. B. ein für den VMM vertrauenswürdiges Laufzeitsystem/VTRTS) kann bei Block 76 aufgerufen werden. Block 76 kann beispielsweise Laden von SGX-URTS- und VTRTS-Treibern und Hinzufügen der VTRTS-Treiber zu einer VMM-geschützten Domäne umfassen. Ein Ring-3-VMM-Agent kann bei Block 78 gestartet werden, wobei der Ring-3-VMM-Agent den vertrauenswürdigen Enklavenstarter bei Block 80 aufrufen kann, um die Enklaveninstanz zu starten. Der vertrauenswürdige Enklavenstarter kann wiederum das URTS bei Block 82 aufrufen, um EPC-Seiten aus dem Speicher zuzuteilen. Der vertrauenswürdige Enklavenstarter ruft den ECREATE-Startbefehl unmittelbar bei dem illustrierten Block 84 auf. Bei Block 86 kann eine Bestimmung darüber ausgeführt werden, ob ein Fehler aufgetreten ist (z. B. auf der Grundlage verschiedener Abbruchbedingungen des ECREATE-Befehls).
  • Wenn kein ECREATE-Fehler aufgetreten ist, kann der vertrauenswürdige Enklavenstarter bei Block 88 einen EADD-Startbefehl für jede zugeordnete EPC-Seite aufrufen. In dieser Hinsicht können Seiten mit Daten/Code im Allgemeinen durch den EADD-Startbefehl in den Enklavenspeicherraum geladen werden. Beispielsweise kann jeder EADD-Ladebefehl eine Seite (z. B. 4096 Bytes) mit Code/Daten in die Enklaveninstanz laden. Block 88 kann auch die Verwendung von EEXTEND-Startbefehlen vorsehen, um jede Seite zu messen, obwohl manche Seiten nicht gemessen werden dürfen. Der EEXTEND-Startbefehl kann beispielsweise für 256 Bytes Daten einen Hash zu einer MRENCLAVE-Messung berechnen. Es kann unwahrscheinlich sein, dass die korrekte MRENCLAVE-Messung, welche durch den EINIT-Befehl verifiziert wird, erhalten wird, außer die EADD/EEXTEND-Startbefehle werden auf allen Daten in der Enklaveninstanz in der korrekten Weise angewendet (z. B. einer Konvention zwischen einem Werkzeug, welches die Enklaveninstanz signiert, und den VTRTS/URTS-Ladeprogrammen). Das bereits diskutierte Verfahren 36 (1) muss keine Verwendung von EADD-(und EEXTEND)-Startbefehlen zeigen, weil der VMM einfach die Ladeoperationen des URTS über die Abbruchsteuerungen beobachten kann (z. B. wenn der EINIT-Ladebefehl erfolgreich ist, dann kann vermutet werden, dass das URTS alle der EADD- und EEXTEND-Ladebefehle korrekt durchgeführt hat, weil die MRENCLAVE-Messung verifiziert wurde).
  • Bei Block 90 kann eine Bestimmung darüber ausgeführt werden, ob ein EADD-Fehler aufgetreten ist. Wenn kein EADD-Fehler aufgetreten ist, wendet der vertrauenswürdige Enklavenstarter bei Block 92 EPT-Sicherungen auf die EPC-Seiten an, welcher der Enklaveninstanz zugeordnet sind. Block 92 kann im Allgemeinen gewährleisten, dass der vertrauenswürdige Enklavenstarter vorübergehend die einzige Entität ist, welche fähig ist, die EPC-Seiten zu modifizieren (z. B. durch SGX-Befehle). Außerdem ruft der vertrauenswürdige Enklavenstarter bei dem illustrierten Block 94 den EINIT-Startbefehl auf, wobei bei Block 96 eine Bestimmung darüber ausgeführt werden kann, ob ein EINIT-Fehler aufgetreten ist.
  • Wenn kein EINIT-Fehler aufgetreten ist, kann eine Ausführung durch den vertrauenswürdigen Enklavenstarter bei Block 98 fortfahren, wobei der vertrauenswürdige Enklavenstarter bei Block 100 die Enklavenidentität und den EPC-Adressbereich kennt. Ferner kann der vertrauenswürdige Enklavenstarter bei Block 102 der Enklaveninstanz EPT-Sicherungen validieren. Block 102 kann die EPT-Sicherungen modifizieren, welche in Block 92 angewendet wurden, um die Enklaveninstanz zu einer Ansicht umzuwandeln, welche spezifisch einer Anwendung zugeordnet werden kann.
  • Nach Verifizieren, dass der EINIT-Startbefehl erfolgreich war (was durchgeführt werden kann, um Code innerhalb der Enklaveninstanz auszuführen), kann ein Eintritt in die Enklaveninstanz auf eine spezifische Weise durchgeführt werden. Beispielsweise kann ein Eintritt die Verwendung eines EENTER-Befehls und einen Zeiger auf eine spezielle Seite innerhalb der Enklave einbeziehen (eine Thread-Steuerungsstruktur-/TCS-Seite). Es kann vermutet werden, dass die TCS-Seite einer Steuerung der EPT-Ansicht unterliegt (z. B. dem vertrauenswürdigen Enklavenstarter zugänglich ist) und nicht unbefugt manipuliert wurde. Wenn ein Eintritt in die Enklaveninstanz einmal erfolgt ist, kann die Sicherheitsrahmenstruktur (z. B. die SGX-Rahmenstruktur) eine Ausführung nur auf Seiten begrenzen, welche über den EADD-Startbefehl auf diese Enklaveninstanz geladen wurden (z. B. ist der genaue Seitenaufbau bekannt, weil die MRENCLAVE-Messung durch den EINIT-Startbefehl verifiziert wurde). Malware könnte eine Seite aus einer Enklaveninstanz entfernen, welche unter einem derartigen Ansatz geschützt ist, aber die Malware wäre nicht fähig, die Seite wieder der Enklaveninstanz hinzuzufügen. Zusätzlich können EPTs verwendet werden, um die Entfernung von Seiten zu verhindern, jedoch kann die Sicherheitsrahmenstruktur bereits einen Vertrauens-/Integritätsschutz bereitstellen.
  • Wenn bei den Blöcken 86, 90 oder 96 ein Fehler detektiert wird, erzeugt der illustrierte Block 104 eine Fehlermeldung. Das Protokollieren des Fehlers und das Bereinigen der Systemdateien kann bei Block 106 durchgeführt werden.
  • 5 zeigt einen Privilegienstapel 108, welcher in Verbindung mit dem bereits diskutierten Verfahren 72 (4) verwendet werden kann. Im Allgemeinen befindet sich eine Ring-3-Schicht 112 über einer Ring-0-Schicht 110, welche sich über dem VMM 12 befindet. Die Ring-3-Schicht 112 kann eine Anwendung 114 mit einer Enklaveninstanz 116 umfassen, welche in einem EPC-Speicher und in dem gemeinsam genutzten Puffer 24 gespeichert ist, welcher in nicht-EPC-Speicher gespeichert ist. Sowohl die Enklaveninstanz 116 als auch der gemeinsam genutzte Puffer 24 können aus der Perspektive der fraglichen Enklaven-TCB als vertrauenswürdige Betriebsmittel angesehen werden. Die illustrierte Ring-0-Schicht 110 umfasst den vertrauenswürdigen Enklavenstarter 15 (z. B. VTRTS) und das URTS 13, wobei der vertrauenswürdige Enklavenstarter 15 über das URTS 13 EPC-Zuteilungs- und EPC-freie Prozesse aufrufen kann. Der vertrauenswürdige Enklavenstarter 15 und das URTS 13 können jeder konfiguriert sein, Startbefehle aufzurufen, wie beispielsweise EINIT, ECREATE, EADD usw. Der VMM 12 kann eine oder mehrere vertrauenswürdige EPTs 118 und eine oder mehrere nicht vertrauenswürdige EPTs 120 umfassen. Die vertrauenswürdigen EPTs 118 können verwendet werden, um Ansichten vertrauenswürdiger Komponenten zu erzeugen, wie beispielsweise der Enklaveninstanz 116, des gemeinsam genutzten Puffers 24 und/oder des vertrauenswürdigen Enklavenstarters 15.
  • Jetzt unter Bezugnahme auf 6, wird eine VMM-Vorrichtung 122 (122a bis 122d) gezeigt. Die VMM-Vorrichtung 122, welche einen oder mehrere Gesichtspunkte des Verfahrens 26 (2), des Verfahrens 36 (3) und/oder des Verfahrens 72 (4), welche bereits diskutiert wurden, implementieren kann, kann unmittelbar für den bereits diskutierten VMM 12 (1 und 5) substituiert werden. Bei dem illustrierten Beispiel kann ein Identitätsmanager 122a von außerhalb einer vertrauenswürdigen Computerbasis einer Enklaveninstanz eine Identität der Enklaveninstanz verifizieren, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet ist. Die Vorrichtung 122 kann auch einen Seiten-Cache-Manager 122b umfassen, welcher einen Speicherort der Enklaveninstanz bestimmt. Zusätzlich kann ein Örtlichkeitsmanager 122c bestätigen, dass der Speicherort für das Datenverarbeitungssystem lokal ist. Bei einem Beispiel ist die Enklaveninstanz eine Proxy-Enklaveninstanz, und eine Datenübermittelungskomponente 122d kommuniziert mit einer oder mit mehreren zusätzlichen Enklaveninstanzen in der vertrauenswürdigen Computerbasis über die Proxy-Enklaveninstanz und einen unverschlüsselten Kanal.
  • Bei einem Beispiel, wie beispielsweise dem Verfahren 36 (3), kann der Identitätsmanager 122a eine oder mehrere Abbruchsteuerungen in einer VM ermöglichen, eine Ausführung der Abbruchsteuerung(en) über ein URTS auslösen, welches der VM zugeordnet ist, eine Analyse eines oder mehrerer Parameter durchführen, welche der Ausführung der Abbruchsteuerung(en) zugeordnet sind, und die Enklaveninstanz starten, wenn die Analyse die Identität der Enklaveninstanz bestätigt. In einem derartigen Fall kann der Speicherort von dem URTS erhalten werden. Ferner kann der Identitätsmanager 122a mehrere Startbefehle (z. B. ECREATE und EINIT), welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer oder mehrerer Annotationen zu den mehreren Startbefehlen nachverfolgen und die Annotation(en) von dem(den) Startbefehl(en) entfernen. Ersatzweise kann der Identitätsmanager 122a die mehreren Startbefehle auf der Grundlage einer Nachverfolgungsdatenstruktur (z. B. einer Liste, Datenbank) nachverfolgen.
  • Bei einem anderen Beispiel, wie beispielsweise dem Verfahren 72 (4), kann der Identitätsmanager 122a einen vertrauenswürdigen Enklavenstarter aufrufen und die Enklaveninstanz über den vertrauenswürdigen Enklavenstarter starten. In einem derartigen Fall kann der Speicherort von dem vertrauenswürdigen Enklavenstarter erhalten werden.
  • 7 illustriert einen Prozessorkern 200 gemäß einer Ausführungsform. Der Prozessorkern 200 kann der Kern für einen beliebigen Prozessortyp sein, wie beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor oder eine andere Vorrichtung zum Ausführen von Code. Obwohl in 7 nur ein Prozessorkern 200 illustriert ist, kann ein Verarbeitungselement ersatzweise mehr als den einen in 7 illustrierten Prozessorkern 200 umfassen. Der Prozessorkern 200 kann ein Einzel-Thread-Kern, oder der Prozessorkern 200 kann für mindestens eine Ausführungsform dadurch ein Multi-Thread-Kern sein, dass er mehr als einen Hardware-Thread-Kontext (oder „logischen Prozessor“) pro Kern umfassen kann.
  • 7 illustriert auch einen Speicher 270, welcher mit dem Prozessorkern 200 verbunden ist. Der Speicher 270 kann ein beliebiger einer breiten Vielfalt von Speichern sein (verschiedene Schichten von Speicherhierarchie umfassend), wie sie Durchschnittsfachleuten bekannt sind oder auf andere Weise verfügbar sind. Der Speicher 270 kann einen oder mehrere Codebefehl(e) 213 umfassen, welche durch den Prozessorkern 200 ausgeführt werden sollen, wobei der Code 213 das Verfahren 26 (2), das Verfahren 36 (3) und/oder das Verfahren 72 (4) implementieren kann, welche bereits diskutiert wurden. Der Prozessorkern 200 folgt einer Programmsequenz von Befehlen, welche durch den Code 213 angegeben werden. Jeder Befehl kann in einen Vorstufenabschnitt 210 eintreten und durch einen oder mehrere Decodierer 220 verarbeitet werden. Der Decodierer 220 kann als seinen Ausgang eine Mikro-Operation erzeugen, wie beispielsweise eine Mikro-Operation fester Breite in einem vordefinierten Format, oder er kann andere Befehle, Mikrobefehle oder Steuerungssignale erzeugen, welche den ursprünglichen Codebefehl wiedergeben. Der illustrierte Vorstufenabschnitt 210 umfasst auch Registerumbenennungslogik 225 und Einplanungslogik 230, welche im Allgemeinen Betriebsmittel zuteilen und die Operation entsprechend des umgewandelten Befehls zur Ausführung in eine Warteschlange einreihen.
  • Der Prozessorkern 200 wird mit Ausführungslogik 250 gezeigt, welche einen Satz Ausführungseinheiten 255-1 bis 255-N aufweist. Manche Ausführungsformen können eine Anzahl Ausführungseinheiten umfassen, welche für spezifische Funktionen oder Funktionssätze fest geschaltet sind. Andere Ausführungsformen können nur eine Ausführungseinheit oder eine Ausführungseinheit umfassen, welche eine bestimmte Funktion durchführen kann. Die illustrierte Ausführungslogik 250 führt die Operationen durch, welche durch Codebefehle spezifiziert sind.
  • Nach Beenden der Ausführung der Operationen, welche durch die Codebefehle spezifiziert sind, zieht eine Nachstufenlogik 260 die Befehle des Codes 213 zurück. Bei einer Ausführungsform ermöglicht der Prozessorkern 200 eine Ausführung außerhalb der Reihenfolge, erfordert jedoch ein Zurückziehen von Befehlen in der Reihenfolge. Eine Zurückziehlogik 265 kann verschiedene Formen annehmen, wie Durchschnittsfachleuten bekannt ist (z. B. Umordnungspuffer oder dergleichen). Auf diese Weise wird der Prozessorkern 200 während einer Ausführung des Codes 213 mindestens in Bezug auf den Ausgang, welcher durch den Decodierer erzeugt wird, die Hardware-Register und Tabellen, welche durch die Registerumbenennungslogik 225 eingesetzt werden, und alle Register (nicht gezeigt) transformiert, welche durch die Ausführungslogik 250 modifiziert werden.
  • Obwohl nicht in 7 illustriert, kann ein Verarbeitungselement andere Elemente umfassen, welche mit dem Prozessorkern 200 chipintegriert sind. Beispielsweise kann ein Verarbeitungselement Speichersteuerungslogik zusammen mit dem Prozessorkern 200 umfassen. Das Verarbeitungselement kann E/A-Steuerungslogik umfassen und/oder es kann E/A-Steuerungslogik umfassen, welche mit Speichersteuerungslogik integriert ist. Das Verarbeitungselement kann auch ein oder mehrere Caches umfassen.
  • Jetzt unter Bezugnahme auf 8, wird ein Blockdiagramm einer Ausfiihrungsform eines Datenverarbeitungssystems 1000 gemäß einer Ausführungsform gezeigt. In 8 wird ein Multiprozessorsystem 1000 gezeigt, welches ein erstes Verarbeitungselement 1070 und ein zweites Verarbeitungselement 1080 umfasst. Während zwei Verarbeitungselemente 1070 und 1080 gezeigt sind, versteht es sich, dass eine Ausführungsform des Systems 1000 auch nur ein derartiges Verarbeitungselement umfassen kann.
  • Das System 1000 ist als ein Punkt-zu-Punkt-Zwischenverbindungssystem illustriert, wobei das erste Verarbeitungselement 1070 und das zweites Verarbeitungselement 1080 über eine Punkt-zu-Punkt-Zwischenverbindung 1050 verbunden sind. Es versteht sich, dass eine oder alle der in 8 illustrierten Zwischenverbindungen als ein Mehrpunkt-Bus statt als Punkt-zu-Punkt-Zwischenverbindung implementiert werden können.
  • Wie in 8 gezeigt, kann jedes der Verarbeitungselemente 1070 und 1080 mehrkernige Prozessoren sein, welche erste und zweite Prozessorkerne umfassen (d. h. Prozessorkerne 1074a und 1074b und Prozessorkerne 1084a und 1084b). Derartige Kerne 1074a, 1074b, 1084a, 1084b können konfiguriert sein, Befehlscode in einer ähnlichen Weise auszuführen, wie die im Zusammenhang mit 7 oben stehend diskutierte.
  • Jedes Verarbeitungselement 1070, 1080 kann mindestens einen gemeinsam genutzten Cache 1896a, 1896b umfassen. Der gemeinsam genutzte Cache 1896a, 1896b kann Daten (z. B. Befehle) speichern, welche von einer oder von mehreren Komponenten des Prozessors eingesetzt werden, wie beispielsweise der Kerne 1074a, 1074b bzw. 1084a, 1084b. Beispielsweise kann der gemeinsam genutzte Cache 1896a, 1896b Daten, welche in einem Speicher 1032, 1034 gespeichert sind, für einen schnelleren Zugang durch Komponenten des Prozessors lokal Cache-speichern. Bei einer oder mehreren Ausführungsformen kann der gemeinsam genutzte Cache 1896a, 1896b ein oder mehrere Caches mit mittlerem Level umfassen, wie beispielsweise Level 2 (L2), Level 3 (L3), Level 4 (L4) oder Caches anderer Level, einen Letzter-Level-Cache (LLC) und/oder Kombinationen davon.
  • Während sie mit nur zwei Verarbeitungselementen 1070, 1080 gezeigt sind, versteht es sich, dass der Schutzumfang der Ausführungsformen nicht so beschränkt ist. Bei anderen Ausführungsformen können ein oder mehrere zusätzliche Verarbeitungselemente in einem gegebenen Prozessor vorhanden sein. Ersatzweise können ein oder mehrere Verarbeitungselemente 1070, 1080 ein anderes Element als ein Prozessor sein, wie beispielsweise ein Beschleuniger oder ein feldprogrammierbares Gate-Array. Beispielsweise kann ein zusätzliches Verarbeitungselement (können zusätzliche Verarbeitungselemente) einen zusätzlichen Prozessor (zusätzliche Prozessoren), welche die gleichen sind wie der Prozessor 1070, einen zusätzlichen Prozessor (zusätzliche Prozessoren), welche heterogen oder asymmetrisch zu dem Prozessor 1070 sind, Beschleuniger (wie beispielsweise Grafikbeschleuniger oder digitale Signalverarbeitungseinheiten (DSP)), feldprogrammierbare Gate-Arrays oder alle anderen Verarbeitungselemente umfassen. Es können verschiedene Unterschiede zwischen dem(den) Verarbeitungselement(en) 1070, 1080 in Bezug auf ein Spektrum von Gütemetriken vorhanden sein, welche Struktur-, Mikrostruktur-, thermische, Stromverbrauchseigenschaften und dergleichen umfassen. Diese Unterschiede können sich effektiv als Asymmetrie und Heterogenität unter den Verarbeitungselementen 1070, 1080 zeigen. Bei mindestens einer Ausführungsform können sich die verschiedenen Verarbeitungselemente 1070, 1080 in dem gleichen Chip-Paket befinden.
  • Das erste Verarbeitungselement 1070 kann weiterhin Speichersteuerungslogik (MC) 1072 und Punkt-zu-Punkt-(P-P)-Schnittstellen 1076 und 1078 umfassen. Genauso kann das zweite Verarbeitungselement 1080 eine MC 1082 und P-P-Schnittstellen 1086 und 1088 umfassen. Wie in 8 gezeigt, verbinden die MCs 1072 und 1082 die Prozessoren mit jeweiligen Speichern, namentlich einem Speicher 1032 und einem Speicher 1034, welche Abschnitte des Hauptspeichers sein können, welcher lokal mit den jeweiligen Prozessoren verbunden ist. Während die MC 1072 und 1082 als in die Verarbeitungselemente 1070, 1080 integriert illustriert sind, kann die MC-Logik für alternative Ausführungsformen eine diskrete Logik außerhalb der Verarbeitungselemente 1070, 1080 sein, statt darin integriert zu sein.
  • Das erste Verarbeitungselement 1070 und das zweites Verarbeitungselement 1080 können über P-P-Zwischenverbindungen 1076 bzw. 1086 mit einem E/A-Subsystem 1090 verbunden sein. Wie in 8 gezeigt, umfasst das E/A-Subsystem 1090 P-P-Schnittstellen 1094 und 1098. Weiterhin umfasst das E/A-Subsystem 1090 eine Schnittstelle 1092, um das E/A-Subsystem 1090 mit einer Hochleistungs-Grafikmaschine 1038 zu verbinden. Bei einer Ausführungsform kann ein Bus 1049 verwendet werden, um die Grafikmaschine 1038 mit dem E/A-Subsystem 1090 zu verbinden. Ersatzweise kann eine Punkt-zu-Punkt-Zwischenverbindung diese Komponenten verbinden.
  • Das E/A-Subsystem 1090 kann wiederum über eine Schnittstelle 1096 mit einem ersten Bus 1016 verbunden sein. Bei einer Ausführungsform kann der erste Bus 1016 ein Peripheral-Component-Interconnect-(PCI)-Bus oder ein Bus sein, wie beispielsweise ein PCI-Express-Bus oder ein anderer E/A-Zwischenverbindungsbus der dritten Generation, obwohl der Schutzumfang der Ausführungsformen nicht so beschränkt ist.
  • Wie in 8 gezeigt, können verschiedene E/A-Vorrichtungen 1014 (z. B. biometrische Scanner, Lautsprecher, Kameras, Sensoren) mit dem ersten Bus 1016 zusammen mit einer Busbrücke 1018 verbunden sein, welche den ersten Bus 1016 mit einem zweiten Bus 1020 verbinden kann. Bei einer Ausführungsform kann der zweite Bus 1020 ein Bus mit geringer Anschlusszahl (LPC-Bus) sein. Verschiedene Vorrichtungen können bei einer Ausführungsform mit dem zweiten Bus 1020 verbunden sein, einschließlich beispielsweise eine Tastatur/Maus 1012, eine Kommunikationsvorrichtung(en) 1026 und eine Datenspeichereinheit 1019, wie beispielsweise ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, welche Code 1030 umfassen kann. Der illustrierte Code 1030 kann das Verfahren 26 (2), das Verfahren 36 (3) und/oder das Verfahren 72 (4), welche bereits diskutiert wurden, implementieren und kann dem bereits diskutierten Code 213 ( 7) ähnlich sein. Weiterhin kann eine Audio-E/A 1024 mit einem zweiten Bus 1020 verbunden sein und eine Batterie 1010 kann das Datenverarbeitungssystem 1000 mit Strom versorgen.
  • Es ist zu beachten, dass andere Ausführungsformen in Betracht gezogen werden. Beispielsweise kann ein System an Stelle der Punkt-zu-Punkt-Architektur der 8 einen Mehrpunkt-Bus oder eine andere derartige Kommunikationstopologie implementieren. Außerdem können die Elemente der 8 ersatzweise unter Verwendung mehr oder weniger integrierter Chips unterteilt werden, als in 8 gezeigt.
  • Zusätzliche Anmerkungen und Beispiele:
  • Beispiel 1 kann ein virtuelles enklavenbasiertes Datenverarbeitungssystem umfassen, welches eine Eingabe-Ausgabevorrichtung, um Daten zu erzeugen, eine Anzeige, um Informationen visuell darzustellen, welche den Daten zugeordnet sind, eine vertrauenswürdige Computerbasis, welche mit der Anzeige und mit der Eingabe-Ausgabevorrichtung verbunden ist, einen enklavenseitigen Cache-(EPC)-Speicher, welcher mit der vertrauenswürdigen Computerbasis verbunden ist, und eine virtuelle Maschinenmonitorvorrichtung umfasst, welche einen Identitätsmanager, um von außerhalb der vertrauenswürdigen Computerbasis eine Identität einer Enklaveninstanz zu verifizieren, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet wird, einen Seiten-Cache-Manager, um einen Speicherort der Enklaveninstanz in dem EPC-Speicher zu bestimmen, und einen Örtlichkeitsmanager umfasst, um zu bestätigen, dass der Speicherort für das Datenverarbeitungssystem lokal ist.
  • Beispiel 2 kann das Datenverarbeitungssystem des Beispiels 1 umfassen, welches weiterhin einen unverschlüsselten Kanal umfasst, welcher nicht-EPC-Pufferspeicher umfasst, wobei die Enklaveninstanz eine Proxy-Enklaveninstanz ist und die virtuelle Maschinenmonitorvorrichtung weiterhin eine Datenübermittelungskomponente umfasst, um die Daten an eine oder mehrere zusätzliche Enklaveninstanzen in der vertrauenswürdigen Computerbasis über die Proxy-Enklaveninstanz und den unverschlüsselten Kanal zu kommunizieren.
  • Beispiel 3 kann das Datenverarbeitungssystem des Beispiels 1 umfassen, wobei der Identitätsmanager dazu dient, eine oder mehrere Abbruchsteuerungen in einer virtuellen Maschine zu ermöglichen, eine Ausführung der einen oder der mehreren Abbruchsteuerungen über ein nicht vertrauenswürdiges Laufzeitsystem (URTS) auszulösen, welches der virtuellen Maschine zugeordnet ist, eine Analyse eines oder mehrerer Parameter durchzuführen, welche der Ausführung der einen oder der mehreren Abbruchsteuerungen zugeordnet sind, und die Enklaveninstanz zu starten, wenn die Analyse die Identität der Enklaveninstanz bestätigt, wobei der Speicherort aus dem URTS erhalten werden muss.
  • Beispiel 4 kann das Datenverarbeitungssystem des Beispiels 3 umfassen, wobei der Identitätsmanager dazu dient, mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer oder mehrerer Annotationen zu den mehreren Startbefehlen nachzuverfolgen und die eine oder die mehreren Annotationen von den mehreren Startbefehlen zu entfernen.
  • Beispiel 5 kann das Datenverarbeitungssystem des Beispiels 3 umfassen, wobei der Identitätsmanager dazu dient, mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer Nachverfolgungsdatenstruktur nachzuverfolgen.
  • Beispiel 6 kann das Datenverarbeitungssystem eines der Beispiele 1 oder 2 umfassen, wobei der Identitätsmanager dazu dient, einen vertrauenswürdigen Enklavenstarter aufzurufen und die Enklaveninstanz über den vertrauenswürdigen Enklavenstarter zu starten, und wobei der Speicherort von dem vertrauenswürdigen Enklavenstarter erhalten werden muss.
  • Beispiel 7 kann eine virtuelle Maschinenmonitorvorrichtung umfassen, welche einen Identitätsmanager, um von außerhalb einer vertrauenswürdigen Computerbasis einer Enklaveninstanz eine Identität der Enklaveninstanz zu verifizieren, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet wird, einen Seiten-Cache-Manager, um einen Speicherort der Enklaveninstanz zu bestimmen, und einen Örtlichkeitsmanager umfasst, um zu bestätigen, dass der Speicherort für das Datenverarbeitungssystem lokal ist.
  • Beispiel 8 kann die Vorrichtung des Beispiels 7 umfassen, wobei die Enklaveninstanz eine Proxy-Enklaveninstanz ist und die Vorrichtung weiterhin eine Datenübermittelungskomponente umfasst, um über die Proxy-Enklaveninstanz und einen unverschlüsselten Kanal mit einer oder mit mehreren zusätzlichen Enklaveninstanzen in der vertrauenswürdigen Computerbasis zu kommunizieren.
  • Beispiel 9 kann die Vorrichtung des Beispiels 7 umfassen, wobei der Identitätsmanager dazu dient, eine oder mehrere Abbruchsteuerungen in einer virtuellen Maschine zu ermöglichen, eine Ausführung der einen oder der mehreren Abbruchsteuerungen über ein nicht vertrauenswürdiges Laufzeitsystem (URTS) auszulösen, welches der virtuellen Maschine zugeordnet ist, eine Analyse eines oder mehrerer Parameter durchzuführen, welche der Ausführung der einen oder der mehreren Abbruchsteuerungen zugeordnet sind, und die Enklaveninstanz zu starten, wenn die Analyse die Identität der Enklaveninstanz bestätigt, wobei der Speicherort aus dem URTS erhalten werden muss.
  • Beispiel 10 kann die Vorrichtung des Beispiels 9 umfassen, wobei der Identitätsmanager dazu dient, mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer oder mehrerer Annotationen zu den mehreren Startbefehlen nachzuverfolgen und die eine oder die mehreren Annotationen von den mehreren Startbefehlen zu entfernen.
  • Beispiel 11 kann die Vorrichtung des Beispiels 9 umfassen, wobei der Identitätsmanager dazu dient, mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer Nachverfolgungsdatenstruktur nachzuverfolgen.
  • Beispiel 12 kann die Vorrichtung eines der Beispiele 7 oder 8 umfassen, wobei der Identitätsmanager dazu dient, einen vertrauenswürdigen Enklavenstarter aufzurufen und die Enklaveninstanz über den vertrauenswürdigen Enklavenstarter zu starten, und wobei der Speicherort von dem vertrauenswürdigen Enklavenstarter erhalten werden muss.
  • Beispiel 13 kann ein Verfahren zum Betreiben einer virtuellen Maschinenmonitorvorrichtung umfassen, welches Verifizieren, von außerhalb einer vertrauenswürdigen Computerbasis einer Enklaveninstanz, einer Identität der Enklaveninstanz, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet wird, Bestimmen eines Speicherorts der Enklaveninstanz, und Bestätigen umfasst, dass der Speicherort für das Datenverarbeitungssystem lokal ist.
  • Beispiel 14 kann das Verfahren des Beispiels 13 umfassen, wobei die Enklaveninstanz eine Proxy-Enklaveninstanz ist und das Verfahren weiterhin Kommunizieren über die Proxy-Enklaveninstanz und einen unverschlüsselten Kanal mit einer oder mit mehreren zusätzlichen Enklaveninstanzen in der vertrauenswürdigen Computerbasis umfasst.
  • Beispiel 15 kann das Verfahren des Beispiels 13 umfassen, welches weiterhin Ermöglichen einer oder mehrerer Abbruchsteuerungen in einer virtuellen Maschine, Auslösen einer Ausführung der einen oder der mehreren Abbruchsteuerungen über ein nicht vertrauenswürdiges Laufzeitsystem (URTS), welches der virtuellen Maschine zugeordnet ist, Durchführen einer Analyse eines oder mehrerer Parameter, welche der Ausführung der einen oder der mehreren Abbruchsteuerungen zugeordnet sind, und Starten der Enklaveninstanz umfasst, wenn die Analyse die Identität der Enklaveninstanz bestätigt, wobei der Speicherort aus dem URTS erhalten wird.
  • Beispiel 16 kann das Verfahren des Beispiels 15 umfassen, welches weiterhin Nachverfolgen mehrerer Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer oder mehrerer Annotationen zu den mehreren Startbefehlen und Entfernen der einen oder der mehreren Annotationen von den mehreren Startbefehlen umfasst.
  • Beispiel 17 kann das Verfahren des Beispiels 15 umfassen, welches weiterhin Nachverfolgen mehrerer Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer Nachverfolgungsdatenstruktur umfasst.
  • Beispiel 18 kann das Verfahren eines der Beispiele 13 oder 14 umfassen, welches weiterhin Aufrufen eines vertrauenswürdigen Enklavenstarters und Starten der Enklaveninstanz über den vertrauenswürdigen Enklavenstarter umfasst, wobei der Speicherort von dem vertrauenswürdigen Enklavenstarter erhalten wird.
  • Beispiel 19 kann mindestens ein computerlesbares Speichermedium umfassen, welches einen Satz von Befehlen umfasst, welche, wenn sie von einem Datenverarbeitungssystem ausgeführt werden, bewirken, dass das Datenverarbeitungssystem von außerhalb einer vertrauenswürdigen Computerbasis einer Enklaveninstanz eine Identität der Enklaveninstanz verifiziert, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet wird, einen Speicherort der Enklaveninstanz bestimmt und bestätigt, dass der Speicherort für das Datenverarbeitungssystem lokal ist.
  • Beispiel 20 kann das mindestens eine computerlesbare Speichermedium des Beispiels 19 umfassen, wobei die Enklaveninstanz eine Proxy-Enklaveninstanz ist und die Befehle, wenn sie ausgeführt werden, bewirken, dass das Datenverarbeitungssystem über die Proxy-Enklaveninstanz und einen unverschlüsselten Kanal mit einer oder mit mehreren zusätzlichen Enklaveninstanzen in der vertrauenswürdigen Computerbasis kommuniziert.
  • Beispiel 21 kann das mindestens eine computerlesbare Speichermedium des Beispiels 19 umfassen, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass das Datenverarbeitungssystem eine oder mehrere Abbruchsteuerungen in einer virtuellen Maschine ermöglicht, eine Ausführung der einen oder der mehreren Abbruchsteuerungen über ein nicht vertrauenswürdiges Laufzeitsystem (URTS) auslöst, welches der virtuellen Maschine zugeordnet ist, eine Analyse eines oder mehrerer Parameter durchführt, welche der Ausführung der einen oder der mehreren Abbruchsteuerungen zugeordnet sind, und die Enklaveninstanz startet, wenn die Analyse die Identität der Enklaveninstanz bestätigt, wobei der Speicherort aus dem URTS erhalten werden muss.
  • Beispiel 22 kann das mindestens eine computerlesbare Speichermedium des Beispiels 21 umfassen, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass das Datenverarbeitungssystem mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer oder mehrerer Annotationen zu den mehreren Startbefehlen nachverfolgt und die eine oder die mehreren Annotationen von den mehreren Startbefehlen entfernt.
  • Beispiel 23 kann das mindestens eine computerlesbare Speichermedium des Beispiels 21 umfassen, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass das Datenverarbeitungssystem mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer Nachverfolgungsdatenstruktur nachverfolgt.
  • Beispiel 24 kann das mindestens eine computerlesbare Speichermedium eines der Beispiele 19 oder 20 umfassen, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass das Datenverarbeitungssystem einen vertrauenswürdigen Enklavenstarter aufruft und die Enklaveninstanz über den vertrauenswürdigen Enklavenstarter startet, wobei der Speicherort von dem vertrauenswürdigen Enklavenstarter erhalten werden muss.
  • Beispiel 25 kann eine virtuelle Maschinenmonitorvorrichtung umfassen, welche Mittel zum Verifizieren, von außerhalb einer vertrauenswürdigen Computerbasis einer Enklaveninstanz, einer Identität der Enklaveninstanz, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet wird, Mittel zum Bestimmen eines Speicherorts der Enklaveninstanz, und Mittel zum Bestätigen umfasst, dass der Speicherort für das Datenverarbeitungssystem lokal ist.
  • Beispiel 26 kann die Vorrichtung des Beispiels 25 umfassen, wobei die Enklaveninstanz eine Proxy-Enklaveninstanz sein muss und die Vorrichtung weiterhin Mittel zum Kommunizieren über die Proxy-Enklaveninstanz und einen unverschlüsselten Kanal mit einer oder mit mehreren zusätzlichen Enklaveninstanzen in der vertrauenswürdigen Computerbasis umfasst.
  • Beispiel 27 kann die Vorrichtung des Beispiels 25 umfassen, welche weiterhin Mittel zum Ermöglichen einer oder mehrerer Abbruchsteuerungen in einer virtuellen Maschine, wobei eine Ausführung der einen oder der mehreren Abbruchsteuerungen über ein nicht vertrauenswürdiges Laufzeitsystem (URTS) ausgelöst wird, welches der virtuellen Maschine zugeordnet ist, Mittel zum Durchführen einer Analyse eines oder mehrerer Parameter, welche der Ausführung der einen oder der mehreren Abbruchsteuerungen zugeordnet sind, und Mittel zum Starten der Enklaveninstanz umfasst, wenn die Analyse die Identität der Enklaveninstanz bestätigt, wobei der Speicherort aus dem URTS erhalten wird.
  • Beispiel 28 kann die Vorrichtung des Beispiels 27 umfassen, welche weiterhin Mittel zum Nachverfolgen mehrerer Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer oder mehrerer Annotationen zu den mehreren Startbefehlen und Mittel zum Entfernen der einen oder der mehreren Annotationen von den mehreren Startbefehlen umfasst.
  • Beispiel 29 kann die Vorrichtung des Beispiels 27 umfassen, welche weiterhin Mittel zum Nachverfolgen mehrerer Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer Nachverfolgungsdatenstruktur umfasst.
  • Beispiel 30 kann die Vorrichtung eines der Beispiele 25 oder 26 umfassen, welche weiterhin Mittel zum Aufrufen eines vertrauenswürdigen Enklavenstarters und Mittel zum Starten der Enklaveninstanz über den vertrauenswürdigen Enklavenstarter umfasst, wobei der Speicherort von dem vertrauenswürdigen Enklavenstarter erhalten wird.
  • Somit können hier beschriebene Techniken einem VMM ermöglichen, die Identität (z. B. einen kryptografischen Hash) einer Enklave zu verifizieren, bevor sie gestartet wird. Der VMM kann auch fähig sein, die EPC-Seiten zu identifizieren, welche die Enklave belegt, weil der VMM Hinzufügungen von Seiten steuert. Ein derartiger Ansatz kann dem VMM ermöglichen, diese Seiten genau in eine EPT-geschützte Ansicht aufzunehmen. Es kann auch Szenarien geben, bei welchen ein bösartiger Agent versucht, Teile einer Enklave niederzureißen. Hier beschriebene Techniken können Löschungen von Seiten durch Virtualisieren von Befehlen verhindern. Durch Verifizieren von Seitenaufrufen und durch Verhindern von Seitenlöschungen, bevor eine Ansicht erzeugt wird, kann der VMM die Enklave in eine Ansicht (z. B. eine exklusive EPT) verpacken. Dementsprechend kann der VMM die Enklave sicher starten, den Enklaven-EPC-Bereich kennen und eine Enklavenidentität (unter Verwendung der dazugehörigen Messung) sicherstellen.
  • In manchen Fällen kann die Enklave die Identität des VMM bewerten (z. B. unter Verwendung vertrauenswürdiger Plattformmodul-/TPM-Messungen oder anderer Zertifikate). Wenn die Enklave der Identität vertraut, kann die Enklave auch wissen, dass sie eine Örtlichkeit hinsichtlich des VMM aufweist, da Vertrauen Örtlichkeit zu einer transitiven Eigenschaft macht. Das Beispiel des Verfahrens 36 (3) kann für einen VMM-Anbieter vorteilhafter sein, es kann jedoch die Virtualisierung von Startbefehlen einbeziehen. Das Beispiel des Verfahrens 72 (4) kann die Verwendung von VMM-EPT-Sicherungen auch für den vertrauenswürdigen Start einbeziehen, diese Sicherungen können jedoch unter Verwendung wohlbekannter Techniken in einen Ring-0 exportiert werden.
  • Ausführungsformen sind zur Verwendung mit allen Chiptypen integrierter Halbleiterschaltkreise („IS“) anwendbar. Beispiele dieser IS-Chips umfassen insbesondere Prozessoren, Steuervorrichtungen, Chipsatz-Komponenten, programmierbare Logik-Arrays (PLAs), Speicherchips, Netzwerkchips, chipintegrierte Systeme (SoCs), SSD/NAND-Steuerungs-ASICs und dergleichen. Zusätzlich sind bei manchen Zeichnungen Signalleiterbahnen durch Linien dargestellt. Manche können verschieden sein, um stärker konstituierende Signalwege anzugeben, eine Nummerierung aufweisen, um eine Nummer der konstituierenden Signalwege anzugeben, und/oder Pfeile an einem oder an mehreren Enden aufweisen, um eine primäre Informationsflussrichtung anzugeben. Dies darf jedoch nicht in einem einschränkenden Sinn verstanden werden. Stattdessen kann eine derartige hinzugefügte Einzelheit im Zusammenhang mit einer oder mit mehreren beispielhaften Ausführungsformen verwendet werden, um ein leichteres Verständnis einer Schaltung zu vereinfachen. Alle dargestellten Signalleitungen, ob sie zusätzliche Informationen aufweisen oder nicht, können tatsächlich ein oder mehrere Signale umfassen, welche sich in mehreren Richtungen bewegen können und mit jedem geeigneten Typ eines Signalschemas implementiert werden können, z. B. durch digitale oder analoge Leitungen, welche mit differenziellen Paaren implementiert sind, Leitungen optischer Fasern und/oder unsymmetrische Leitungen.
  • Beispielgrößen/-modelle/-werte/-bereiche können angegeben sein, obwohl Ausführungsformen nicht darauf beschränkt sind. Mit der Reifung von Herstellungstechniken (z. B. Fotolithografie) mit der Zeit wird erwartet, dass Geräte von kleinerer Größe hergestellt werden können. Außerdem können wohlbekannte Strom-/Masseverbindungen zu IS-Chips und anderen Komponenten in den Figuren aus Gründen der Einfachheit der Darstellung und der Beschreibung und, um bestimmte Gesichtspunkte der Ausführungsformen zu verschleiern, gezeigt werden oder nicht. Weiterhin können Anordnungen in Form eines Blockdiagramms gezeigt werden, um ein Verschleiern von Ausführungsformen zu vermeiden, und auch im Hinblick auf die Tatsache, dass Besonderheiten hinsichtlich einer Implementierung derartiger Blockdiagrammanordnungen sehr abhängig von dem Datenverarbeitungssystem sind, innerhalb welches die Ausführungsform implementiert werden soll, d. h. derartige Besonderheiten liegen sehr wohl innerhalb des von Durchschnittsfachleuten anerkannten Schutzbereichs. Wo spezifische Details (z. B. Schaltungen) ausgeführt werden, um beispielhafte Ausführungsformen zu beschreiben, ist es Durchschnittsfachleuten offenkundig, dass Ausführungsformen ohne oder mit Variation dieser spezifischen Details in die Praxis umgesetzt werden können. Die Beschreibung muss folglich als beispielhaft und nicht als einschränkend angesehen werden.
  • Der Begriff „verbunden“ kann hier verwendet werden, jeden Typ einer Beziehung, direkt oder indirekt, zwischen den fraglichen Komponenten zu bezeichnen, und kann sich auf elektrische, mechanische, flüssige, optische, elektromagnetische, elektromechanische oder andere Verbindungen beziehen. Zusätzlich können die Begriffe „erste“, „zweite“ usw. hier verwendet werden, um nur die Diskussion zu vereinfachen, und sie tragen keine bestimmte zeitliche oder chronologische Signifikanz, außer es ist anders angegeben.
  • Wie sie in dieser Anmeldung und in den Ansprüchen verwendet wird, kann eine Liste von Elementen, welche durch den Begriff „ein oder mehrere“ verbunden sind, jede Kombination der aufgeführten Begriffe bedeuten. Beispielsweise bedeutet die Phrase „eins oder mehrere von A, B oder C“ A; B; C; A und B; A und C; B und C; oder A, B und C.
  • Durchschnittsfachleute erkennen aus der vorangehenden Beschreibung, dass die breiten Techniken der Ausführungsformen in verschiedenen Formen implementiert werden können. Während die Ausführungsformen im Zusammenhang mit bestimmten Beispielen davon beschrieben wurden, ist deshalb der wahre Schutzumfang der Ausführungsformen nicht so beschränkt, da Durchschnittsfachleuten bei einem Studium der Zeichnungen, der Beschreibung und der folgenden Ansprüche andere Modifikationen offenkundig werden.
  • 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 14998065 [0001]

Claims (25)

  1. Virtuelles enklavenbasiertes Datenverarbeitungssystem, Folgendes umfassend: eine Eingabe-Ausgabevorrichtung, um Daten zu erzeugen; eine Anzeige, um Informationen, welche den Daten zugeordnet sind, visuell darzustellen; eine vertrauenswürdige Computerbasis, welche mit der Anzeige und mit der Eingabe-Ausgabevorrichtung verbunden ist; einen enklavenseitigen Cache-(EPC)-Speicher, welcher mit der vertrauenswürdigen Computerbasis verbunden ist; und eine virtuelle Maschinenmonitorvorrichtung, Folgendes umfassend: einen Identitätsmanager, um von außerhalb der vertrauenswürdigen Computerbasis eine Identität einer Enklaveninstanz zu verifizieren, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet ist, einen Seiten-Cache-Manager, um einen Speicherort der Enklaveninstanz in dem EPC-Speicher zu bestimmen, und einen Örtlichkeitsmanager, um zu bestätigen, dass der Speicherort für das Datenverarbeitungssystem lokal ist.
  2. Datenverarbeitungssystem nach Anspruch 1, weiterhin umfassend einen unverschlüsselten Kanal, welcher nicht-EPC-Pufferspeicher umfasst, wobei die Enklaveninstanz eine Proxy-Enklaveninstanz ist und die virtuelle Maschinenmonitorvorrichtung weiterhin eine Datenübermittelungskomponente umfasst, um die Daten an eine oder an mehrere zusätzliche Enklaveninstanzen in der vertrauenswürdigen Computerbasis über die Proxy-Enklaveninstanz und den unverschlüsselten Kanal zu kommunizieren.
  3. Datenverarbeitungssystem nach Anspruch 1, wobei der Identitätsmanager dazu dient, eine oder mehrere Abbruchsteuerungen in einer virtuellen Maschine zu ermöglichen, eine Ausführung der einen oder der mehreren Abbruchsteuerungen über ein nicht vertrauenswürdiges Laufzeitsystem (URTS) auszulösen, welches der virtuellen Maschine zugeordnet ist, eine Analyse eines oder mehrerer Parameter durchzuführen, welche der Ausführung der einen oder der mehreren Abbruchsteuerungen zugeordnet sind, und die Enklaveninstanz zu starten, wenn die Analyse die Identität der Enklaveninstanz bestätigt, wobei der Speicherort aus dem URTS erhalten werden muss.
  4. Datenverarbeitungssystem nach Anspruch 3, wobei der Identitätsmanager dazu dient, mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer oder mehrerer Annotationen zu den mehreren Startbefehlen nachzuverfolgen und die eine oder die mehreren Annotationen von den mehreren Startbefehlen zu entfernen.
  5. Datenverarbeitungssystem nach Anspruch 3, wobei der Identitätsmanager dazu dient, mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer Nachverfolgungsdatenstruktur nachzuverfolgen.
  6. Datenverarbeitungssystem nach einem der Ansprüche 1 oder 2, wobei der Identitätsmanager dazu dient, einen vertrauenswürdigen Enklavenstarter aufzurufen und die Enklaveninstanz über den vertrauenswürdigen Enklavenstarter zu starten, und wobei der Speicherort von dem vertrauenswürdigen Enklavenstarter erhalten werden muss.
  7. Virtuelle Maschinenmonitorvorrichtung, Folgendes umfassend: einen Identitätsmanager, um von außerhalb einer vertrauenswürdigen Computerbasis einer Enklaveninstanz eine Identität der Enklaveninstanz zu verifizieren, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet ist; einen Seiten-Cache-Manager, um einen Speicherort der Enklaveninstanz zu bestimmen; und einen Örtlichkeitsmanager, um zu bestätigen, dass der Speicherort für das Datenverarbeitungssystem lokal ist.
  8. Vorrichtung nach Anspruch 7, wobei die Enklaveninstanz eine Proxy-Enklaveninstanz ist und die Vorrichtung weiterhin eine Datenübermittelungskomponente umfasst, um über die Proxy-Enklaveninstanz und einen unverschlüsselten Kanal mit einer oder mit mehreren zusätzlichen Enklaveninstanzen in der vertrauenswürdigen Computerbasis zu kommunizieren.
  9. Vorrichtung nach Anspruch 7, wobei der Identitätsmanager dazu dient, eine oder mehrere Abbruchsteuerungen in einer virtuellen Maschine zu ermöglichen, eine Ausführung der einen oder der mehreren Abbruchsteuerungen über ein nicht vertrauenswürdiges Laufzeitsystem (URTS) auszulösen, welches der virtuellen Maschine zugeordnet ist, eine Analyse eines oder mehrerer Parameter durchzuführen, welche der Ausführung der einen oder der mehreren Abbruchsteuerungen zugeordnet sind, und die Enklaveninstanz zu starten, wenn die Analyse die Identität der Enklaveninstanz bestätigt, wobei der Speicherort aus dem URTS erhalten werden muss.
  10. Vorrichtung nach Anspruch 9, wobei der Identitätsmanager dazu dient, mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer oder mehrerer Annotationen zu den mehreren Startbefehlen nachzuverfolgen und die eine oder die mehreren Annotationen von den mehreren Startbefehlen zu entfernen.
  11. Vorrichtung nach Anspruch 9, wobei der Identitätsmanager dazu dient, mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer Nachverfolgungsdatenstruktur nachzuverfolgen.
  12. Vorrichtung nach einem der Ansprüche 7 oder 8, wobei der Identitätsmanager dazu dient, einen vertrauenswürdigen Enklavenstarter aufzurufen und die Enklaveninstanz über den vertrauenswürdigen Enklavenstarter zu starten, und wobei der Speicherort von dem vertrauenswürdigen Enklavenstarter erhalten werden muss.
  13. Verfahren zum Betreiben eines virtuellen Maschinenmonitors, Folgendes umfassend: Verifizieren, von außerhalb einer vertrauenswürdigen Computerbasis einer Enklaveninstanz, einer Identität der Enklaveninstanz, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet ist; Bestimmen eines Speicherorts der Enklaveninstanz; und Bestätigen, dass der Speicherort für das Datenverarbeitungssystem lokal ist.
  14. Verfahren nach Anspruch 13, wobei die Enklaveninstanz eine Proxy-Enklaveninstanz ist und das Verfahren weiterhin Kommunizieren über die Proxy-Enklaveninstanz und einen unverschlüsselten Kanal mit einer oder mit mehreren zusätzlichen Enklaveninstanzen in der vertrauenswürdigen Computerbasis umfasst.
  15. Verfahren nach Anspruch 13, weiterhin Folgendes umfassend: Ermöglichen einer oder mehrerer Abbruchsteuerungen in einer virtuellen Maschine; Auslösen einer Ausführung der einen oder der mehreren Abbruchsteuerungen über ein nicht vertrauenswürdiges Laufzeitsystem (URTS), welches der virtuellen Maschine zugeordnet ist; Durchführen einer Analyse eines oder mehrerer Parameter, welche der Ausführung der einen oder der mehreren Abbruchsteuerungen zugeordnet sind; und Starten der Enklaveninstanz, wenn die Analyse die Identität der Enklaveninstanz bestätigt, wobei der Speicherort von dem URTS erhalten wird.
  16. Verfahren nach Anspruch 15, weiterhin Folgendes umfassend: Nachverfolgen mehrerer Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer oder mehrerer Annotationen zu den mehreren Startbefehlen; und Entfernen der einen oder der mehreren Annotationen von den mehreren Startbefehlen.
  17. Verfahren nach Anspruch 15, weiterhin umfassend Nachverfolgen mehrerer Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer Nachverfolgungsdatenstruktur.
  18. Verfahren nach einem der Ansprüche 13 oder 14, weiter umfassend: Aufrufen eines vertrauenswürdigen Enklavenstarters; und Starten der Enklaveninstanz über den vertrauenswürdigen Enklavenstarter, wobei der Speicherort von dem vertrauenswürdigen Enklavenstarter erhalten wird.
  19. Mindestens ein computerlesbares Speichermedium, umfassend einen Satz von Befehlen, welche, wenn sie durch ein Datenverarbeitungssystem ausgeführt werden, bewirken, dass das Datenverarbeitungssystem: von außerhalb einer vertrauenswürdigen Computerbasis einer Enklaveninstanz eine Identität einer Enklaveninstanz verifiziert, bevor die Enklaveninstanz in der vertrauenswürdigen Computerbasis gestartet ist; einen Speicherort der Enklaveninstanz bestimmt; und bestätigt, dass der Speicherort für das Datenverarbeitungssystem lokal ist.
  20. Mindestens ein computerlesbares Speichermedium nach Anspruch 19, wobei die Enklaveninstanz eine Proxy-Enklaveninstanz ist und die Befehle, wenn sie ausgeführt werden, bewirken, dass das Datenverarbeitungssystem über die Proxy-Enklaveninstanz und einen unverschlüsselten Kanal mit einer oder mit mehreren zusätzlichen Enklaveninstanzen in der vertrauenswürdigen Computerbasis kommuniziert.
  21. Mindestens ein computerlesbares Speichermedium nach Anspruch 19, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass das Datenverarbeitungssystem: eine oder mehrere Abbruchsteuerungen in einer virtuellen Maschine ermöglicht; eine Ausführung der einen oder der mehreren Abbruchsteuerungen über ein nicht vertrauenswürdiges Laufzeitsystem (URTS) auslöst, welches der virtuellen Maschine zugeordnet ist; eine Analyse eines oder mehrerer Parameter durchführt, welche der Ausführung der einen oder der mehreren Abbruchsteuerungen zugeordnet sind; und die Enklaveninstanz startet, wenn die Analyse die Identität der Enklaveninstanz bestätigt, wobei der Speicherort von dem URTS erhalten werden muss.
  22. Mindestens ein computerlesbares Speichermedium nach Anspruch 21, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass das Datenverarbeitungssystem: mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer oder mehrerer Annotationen zu den mehreren Startbefehlen nachverfolgt; und die eine oder die mehreren Annotationen von den mehreren Startbefehlen entfernt.
  23. Mindestens ein computerlesbares Speichermedium nach Anspruch 21, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass das Datenverarbeitungssystem mehrere Startbefehle, welche der Enklaveninstanz zugeordnet sind, auf der Grundlage einer Nachverfolgungsdatenstruktur nachverfolgt.
  24. Mindestens ein computerlesbares Speichermedium nach einem der Ansprüche 19 oder 20, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass das Datenverarbeitungssystem: einen vertrauenswürdigen Enklavenstarter aufruft; und die Enklaveninstanz über den vertrauenswürdigen Enklavenstarter startet, wobei der Speicherort von dem vertrauenswürdigen Enklavenstarter erhalten werden muss.
  25. Virtuelle Maschinenmonitorvorrichtung umfassend Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 13 oder 14.
DE112016006003.3T 2015-12-24 2016-11-22 Vertrauenswürdiger Start sicherer Enklaven in virtuellen Umgebungen Withdrawn DE112016006003T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/998,065 2015-12-24
US14/998,065 US10353831B2 (en) 2015-12-24 2015-12-24 Trusted launch of secure enclaves in virtualized environments
PCT/US2016/063301 WO2017112248A1 (en) 2015-12-24 2016-11-22 Trusted launch of secure enclaves in virtualized environments

Publications (1)

Publication Number Publication Date
DE112016006003T5 true DE112016006003T5 (de) 2018-09-06

Family

ID=59087116

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016006003.3T Withdrawn DE112016006003T5 (de) 2015-12-24 2016-11-22 Vertrauenswürdiger Start sicherer Enklaven in virtuellen Umgebungen

Country Status (4)

Country Link
US (1) US10353831B2 (de)
CN (1) CN108292337B (de)
DE (1) DE112016006003T5 (de)
WO (1) WO2017112248A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US10592670B2 (en) * 2016-06-28 2020-03-17 Intel Corporation Technologies for provisioning and managing secure launch enclave with platform firmware
US11777729B2 (en) 2017-01-20 2023-10-03 Enveil, Inc. Secure analytics using term generation and homomorphic encryption
US10880275B2 (en) 2017-01-20 2020-12-29 Enveil, Inc. Secure analytics using homomorphic and injective format-preserving encryption
US10693627B2 (en) 2017-01-20 2020-06-23 Enveil, Inc. Systems and methods for efficient fixed-base multi-precision exponentiation
US10644876B2 (en) 2017-01-20 2020-05-05 Enveil, Inc. Secure analytics using homomorphic encryption
US11507683B2 (en) 2017-01-20 2022-11-22 Enveil, Inc. Query processing with adaptive risk decisioning
US11196541B2 (en) 2017-01-20 2021-12-07 Enveil, Inc. Secure machine learning analytics using homomorphic encryption
US10867029B2 (en) * 2017-01-24 2020-12-15 Microsoft Technology Licensing, Llc Enclave client abstraction model
US20190087580A1 (en) * 2017-09-19 2019-03-21 Microsoft Technology Licensing, Llc Secure launch for a hypervisor
EP3688647B1 (de) 2017-09-25 2023-06-14 Telefonaktiebolaget LM Ericsson (PUBL) Enklaven-handhabung auf einer ausführungsplattform
EP3776303A1 (de) 2018-03-27 2021-02-17 Telefonaktiebolaget Lm Ericsson (Publ) Handhabung von instanzen einer vertrauenswürdigen ausführungsumgebung
EP3776315A1 (de) 2018-03-27 2021-02-17 Telefonaktiebolaget LM Ericsson (publ) Verwaltung von lizenzen für instanzen einer vertrauenswürdigen ausführungsumgebung
CN110737926B (zh) * 2018-07-19 2022-03-25 华为技术有限公司 一种显示方法、装置及存储介质
US10902133B2 (en) 2018-10-25 2021-01-26 Enveil, Inc. Computational operations in enclave computing environments
US10817262B2 (en) 2018-11-08 2020-10-27 Enveil, Inc. Reduced and pipelined hardware architecture for Montgomery Modular Multiplication
US10970103B2 (en) * 2018-12-28 2021-04-06 Intel Corporation Technologies for hybrid virtualization and secure enclave policy enforcement for edge orchestration
US11494214B2 (en) * 2019-03-28 2022-11-08 Amazon Technologies, Inc. Verified isolated run-time environments for enhanced security computations within compute instances
CN110245490B (zh) * 2019-05-20 2021-06-22 创新先进技术有限公司 有条件的结合代码标注与类型维度的收据存储方法和节点
CN111625222B (zh) * 2020-05-26 2023-08-04 北京互金新融科技有限公司 前端代码的线上验证系统及验证方法
CN112800431B (zh) * 2020-08-28 2023-09-29 支付宝(杭州)信息技术有限公司 超线程场景下安全进入可信执行环境的方法及装置
US11601258B2 (en) 2020-10-08 2023-03-07 Enveil, Inc. Selector derived encryption systems and methods
US20210141658A1 (en) * 2020-11-11 2021-05-13 Ravi Sahita Method and apparatus for trusted devices using trust domain extensions

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925547B2 (en) * 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US7886293B2 (en) * 2004-07-07 2011-02-08 Intel Corporation Optimizing system behavior in a virtual machine environment
US20070234412A1 (en) 2006-03-29 2007-10-04 Smith Ned M Using a proxy for endpoint access control
CN101599025B (zh) * 2009-07-07 2012-07-18 武汉大学 可信密码模块安全虚拟化方法
US8407723B2 (en) * 2009-10-08 2013-03-26 Tibco Software, Inc. JAVA virtual machine having integrated transaction management system and facility to query managed objects
US8972746B2 (en) 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US8832452B2 (en) 2010-12-22 2014-09-09 Intel Corporation System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves
EP2482220A1 (de) 2011-01-27 2012-08-01 SafeNet, Inc. Mehrfach-Enklave-Token
US20140006776A1 (en) 2012-06-29 2014-01-02 Mark Scott-Nash Certification of a virtual trusted platform module
EP2936761B1 (de) * 2012-12-20 2019-07-24 Telefonaktiebolaget LM Ericsson (publ) Verfahren zur aktivierung eines clients zwecks bereitstellung einer servereinheit
CN103051455B (zh) * 2012-12-22 2015-12-02 中国船舶重工集团公司第七0九研究所 一种云计算环境下的可信密码模块密码功能授权代理的实现方法
CN104636666A (zh) * 2013-11-07 2015-05-20 中国移动通信集团公司 一种用于移动终端进行安全地信息处理的方法和安全装置
CN103701607A (zh) * 2013-12-25 2014-04-02 国家电网公司 一种虚拟机环境下可信平台模块的虚拟化方法
US9864861B2 (en) * 2014-03-27 2018-01-09 Intel Corporation Object oriented marshaling scheme for calls to a secure region

Also Published As

Publication number Publication date
US20170185776A1 (en) 2017-06-29
US10353831B2 (en) 2019-07-16
WO2017112248A1 (en) 2017-06-29
CN108292337B (zh) 2023-07-04
CN108292337A (zh) 2018-07-17

Similar Documents

Publication Publication Date Title
DE112016006003T5 (de) Vertrauenswürdiger Start sicherer Enklaven in virtuellen Umgebungen
DE112018002031B4 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
DE10393456B4 (de) Verkapselung einer TCPA-vertrauenswürdigen Plattformmodulfunktionalität innerhalb eines Server-Management-Coprozessor-Subsystems
DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
US10319457B2 (en) Methods and systems of testing interfaces of computer storage for storage vulnerabilities
DE102015118886A1 (de) Lizenzieren in der Cloud
US20200250343A1 (en) Integrity protection of a mandatory access control policy in an operating system using virtual machine extension root operations
DE112011104496T5 (de) Validieren von virtuellen Maschinen
DE112020000280B4 (de) Transparente interpretation von gastbefehlen in einer sicheren virtuellen maschinenumgebung
DE112013003079T5 (de) Anweisungen für Transaktionsbeginn/-ende
DE112013001941T5 (de) Eingeschränkte Anweisungen in Transaktionsgebundener Ausführung
DE102011082184A1 (de) Sicherheitsschutz für Speicherinhalt von Prozessorhauptspeicher
DE112008002888T5 (de) Hardwarevorrichtungsschnittstelle, die Transaktionsauthentifizierung unterstützt
DE102020127800A1 (de) Ein-chip-system und verfahren zu dessen betrieb
DE112017000163T5 (de) Priorisierung von Transaktionen
DE112020000792T5 (de) Durch grafikverarbeitungseinheit beschleunigte vertrauenswürdige ausführungsumgebung
DE112011102876T5 (de) Ressourcenverwaltungs- und Sicherheitssystem
DE102019109357A1 (de) Selektive ausführung von cache-linien-ausräumoperationen
DE112011105745T5 (de) Bereitstellen einer Funktion eines Basisdatenaustauschsystems (BIOS) in einer privilegierten Domain
DE112018000525T5 (de) Systeme und Verfahren für die Authentifizierung von Platform Trust bzw. Plattform-Vertrauen in einerNetzwerkfunktions-Virtualisierungsumgebung
DE112017007643T5 (de) Bitstromschlüssel-Authentifizierung umkonfigurierbarer Vorrichtungen
DE102020124498A1 (de) Vorrichtung und Verfahren zur Durchsetzung von Kontrollfluss-Integrität
DE112020003881T5 (de) System und verfahren zur durchführung von trusted computing mit fernbescheinigung und informationsisolierung auf heterogenen prozessoren über eine offene verbindung
DE102020134018A1 (de) Technologie zum ermöglichen sicherer und belastbarer wiederherstellung von firmware-daten
DE102022108625A1 (de) Mehrere physische anforderungsschnittstellen für sicherheitsprozessoren

Legal Events

Date Code Title Description
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee