DE102018109397A1 - Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen - Google Patents

Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen Download PDF

Info

Publication number
DE102018109397A1
DE102018109397A1 DE102018109397.7A DE102018109397A DE102018109397A1 DE 102018109397 A1 DE102018109397 A1 DE 102018109397A1 DE 102018109397 A DE102018109397 A DE 102018109397A DE 102018109397 A1 DE102018109397 A1 DE 102018109397A1
Authority
DE
Germany
Prior art keywords
execution environment
trusted execution
memory
partition
access control
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
DE102018109397.7A
Other languages
English (en)
Inventor
Siddhartha Chhabra
Alpa Narendra Trivedi
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 DE102018109397A1 publication Critical patent/DE102018109397A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

Es werden Techniken für Sicherheitschip-Speicher für vertrauenswürdige Ausführungsumgebungen beschrieben. Ein Prozessor kann einen Speicher umfassen, der zum Interagieren mit einer vertrauenswürdigen Ausführungsumgebung ausgebildet ist. Der Prozessor kann dazu ausgebildet sein, einer vertrauenswürdigen Ausführungsumgebung anzuzeigen, dass der Speicher dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt. Der Prozessor kann eine Anweisung von der vertrauenswürdigen Ausführungsumgebung empfangen. Der Prozessor kann eine Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durchsetzen. Es werden weitere Ausführungsformen beschrieben und beansprucht.

Description

  • GEBIET DER OFFENBARUNG
  • Die Offenbarung betrifft allgemein Techniken zum Bereitstellen von Sicherheitschip-Speicher für vertrauenswürdige Ausführungsumgebungen.
  • HINTERGRUND
  • In einigen Vorrichtungen, die vertrauenswürdige Ausführungsumgebungen (TEE, Trusted Execution Environments) nutzen, können vertrauliche Teile einer Anwendung in einer sicheren Umgebung, Enklave genannt, ausgeführt und/oder gespeichert werden, um sowohl Code als auch Daten vor einer Gefährdung zu schützen. Anders als konventionelle Anwendungsumgebungen behalten Enklaven jedoch unter Umständen Daten nicht, nachdem eine Vorrichtung in bestimmte Schlafzustände übergegangen ist. Obwohl viele Maschinen einen persistenten Speicher, der von einer Enklave genutzt werden kann, außerhalb des Chips umfassen können, bietet dies nicht den Sicherheitsgrad, der zum Aufrechterhalten der sicheren Umgebung einer Enklave nötig ist. Somit sind verbesserte Techniken für Sicherheitschip-Speicher für vertrauenswürdige Ausführungsumgebungen erwünscht.
  • KURZBESCHREIBUNG
  • Im Folgenden wird ein vereinfachter Überblick gegeben, um ein grundlegendes Verständnis einiger hier beschriebener neuartiger Ausführungsformen zu vermitteln. Diese Kurzbeschreibung ist keine ausführliche Übersicht und ist nicht dafür bestimmt, Schlüsselelemente/entscheidende Elemente zu ermitteln oder den Umfang davon abzugrenzen. Ihr Zweck ist es lediglich, einige Konzepte in einer vereinfachten Form als Einleitung für die ausführlichere Beschreibung, die später erfolgt, darzulegen.
  • Es werden Techniken für Sicherheitschip-Speicher für vertrauenswürdige Ausführungsumgebungen beschrieben. Ein Prozessor kann einen Speicher umfassen, der zum Interagieren mit einer vertrauenswürdigen Ausführungsumgebung ausgebildet ist. Der Prozessor kann dazu ausgebildet sein, der vertrauenswürdigen Ausführungsumgebung anzuzeigen, dass der Speicher dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt. Der Prozessor kann eine Anweisung von der vertrauenswürdigen Ausführungsumgebung empfangen. Der Prozessor kann eine Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durchsetzen. Weitere Ausführungsformen werden beschrieben und beansprucht.
  • Zum Erreichen der vorstehend genannten Ziele sowie damit zusammenhängender Ziele werden bestimmte veranschaulichende Aspekte in Verbindung mit der nachfolgenden Beschreibung und den beigefügten Zeichnungen hier beschrieben. Diese Aspekte sind bezeichnend für die verschiedenen Arten, auf die die hier offenbarten Prinzipien praktiziert werden können, und alle Aspekte und Äquivalente davon sollen innerhalb des Schutzumfangs des beanspruchten Gegenstands liegen. Weitere Vorteile und neuartige Merkmale werden aus der folgenden ausführlichen Beschreibung bei Betrachtung in Verbindung mit den Zeichnungen deutlich.
  • Figurenliste
    • 1 stellt eine Ausführungsform einer Betriebsumgebung dar.
    • 2 stellt eine Ausführungsform einer vertrauenswürdigen Ausführungsumgebung dar.
    • 3 stellt eine Architektur einer vertrauenswürdigen Ausführungsumgebung dar.
    • 4 stellt eine Ausführungsform eines Systems dar.
    • 5 stellt ein Speichersystem gemäß einer Ausführungsform dar.
    • 6 stellt eine Ausführungsform eines Systems dar.
    • 7 stellt eine Ausführungsform eines Systems dar.
    • 8 stellt einen Logikfluss gemäß einer Ausführungsform dar.
    • 9 stellt einen Herstellungsgegenstand gemäß einer Ausführungsform dar.
    • 10 stellt eine Ausführungsform eines zentralisierten Systems dar.
    • 11 stellt eine Ausführungsform eines verteilten Systems dar.
    • 12 stellt eine Ausführungsform einer Rechenarchitektur dar.
    • 13 stellt eine Ausführungsform einer Kommunikationsarchitektur dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Es werden Techniken für Sicherheitschip-Speicher für vertrauenswürdige Ausführungsumgebungen beschrieben. Ein Prozessor kann einen Speicher umfassen, der zum Interagieren mit einer vertrauenswürdigen Ausführungsumgebung ausgebildet ist. Der Prozessor kann dazu ausgebildet sein, der vertrauenswürdigen Ausführungsumgebung anzuzeigen, dass der Speicher dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt. Der Prozessor kann eine Anweisung von der vertrauenswürdigen Ausführungsumgebung empfangen. Der Prozessor kann eine Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durchsetzen. Weitere Ausführungsformen werden beschrieben und beansprucht.
  • Unter allgemeiner Bezugnahme auf hier verwendete Notationen und Nomenklatur können die folgenden ausführlichen Beschreibungen im Sinne von Programmprozeduren, die auf einem Computer oder einem Computernetzwerk ausgeführt werden, dargestellt werden. Diese prozeduralen Beschreibungen und Repräsentationen werden von Fachleuten verwendet, um den Gegenstand ihrer Arbeit anderen Fachleuten so effizient wie möglich zu vermitteln.
  • Eine Prozedur wird hier und allgemein als eine in sich konsistente Folge von Operationen angesehen, die zu einem gewünschten Ergebnis führen. Diese Operationen sind jene, die physikalische Manipulationen physikalischer Größen erfordern. Üblicherweise, jedoch nicht notwendigerweise, weisen diese Größen die Form elektrischer, magnetischer oder optischer Signale auf, die es vermögen, gespeichert, übertragen, kombiniert, verglichen und auf andere Art und Weise manipuliert zu werden. Es erweist sich zuweilen als zweckdienlich, hauptsächlich aus Gründen des allgemeinen Gebrauchs, sich auf diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen o. ä. zu beziehen. Es ist jedoch zu beachten, dass all diese und ähnliche Begriffe den adäquaten physikalischen Größen zuzuordnen sind und lediglich auf diese Größen angewendete günstige Bezeichnungen sind.
  • Ferner werden die ausgeführten Manipulationen häufig mit Begriffen wie zum Beispiel Hinzufügen oder Vergleichen bezeichnet, welche üblicherweise mit von einem menschlichen Anwender durchgeführten geistigen Operationen in Zusammenhang gebracht werden. Keine derartige Fähigkeit eines menschlichen Anwenders ist bei irgendeiner der hier beschriebenen Operationen, die Teil einer oder mehrerer Ausführungsformen sind, notwendig oder in den meisten Fällen wünschenswert. Vielmehr sind die Operationen maschinelle Operationen. Nützliche Maschinen zum Ausführen von Operationen verschiedener Ausführungsformen umfassen digitale Universalcomputer oder ähnliche Geräte.
  • Verschiedene Ausführungsformen betreffen auch Vorrichtungen oder Systeme zum Ausführen dieser Operationen. Diese Vorrichtungen können speziell für den geforderten Zweck konstruiert sein oder sie können einen als durch ein in dem Computer gespeichertes Computerprogramm selektiv aktivierten oder neu konfigurierten Universalcomputer aufweisen. Die hier vorgestellten Prozeduren beziehen sich nicht inhärent auf einen bestimmten Computer oder andere Vorrichtungen. Es können verschiedene Universalmaschinen mit gemäß den hier vorgestellten Lehren geschriebenen Programmen verwendet werden oder es kann sich als zweckdienlich erweisen, spezialisiertere Vorrichtungen zum Ausführen der notwendigen Verfahrensschritte zu konstruieren. Die erforderliche Struktur für eine Vielzahl dieser Maschinen wird aus der gegebenen Beschreibung hervorgehen.
  • 1 stellt ein Beispiel einer Betriebsumgebung 100 dar, wie es repräsentativ für einige Ausführungsformen sein kann. In Betriebsumgebung 100, die Sicherheitschip-Speicher für vertrauenswürdige Ausführungsumgebungen enthalten kann, kann ein System 102 einen Server 110 und eine Verarbeitungsvorrichtung 105, die über ein Netzwerk 140 gekoppelt sind, umfassen. Server 110 und Verarbeitungsvorrichtung 105 können Daten 130 über Netzwerk 140 austauschen und Daten 130 können ausführbare Anweisungen 132 zur Ausführung innerhalb Verarbeitungsvorrichtung 105 umfassen. In einigen Ausführungsformen können Daten 130 Datenwerte, ausführbare Anweisungen und/oder eine Kombination davon umfassen. Netzwerk 140 kann auf einer beliebigen einer Vielzahl (oder Kombination) von Kommunikationstechnologien, durch welche Signale ausgetauscht werden können, basieren, einschließlich ohne Beschränkung drahtgebundener Technologien unter Verwendung elektrisch und/oder optisch leitender Verdrahtung sowie drahtloser Technologien unter Verwendung von Infrarot, Funkfrequenz und/oder anderer Formen drahtloser Übertragung.
  • In verschiedenen Ausführungsformen kann Verarbeitungsvorrichtung 105 eine Prozessorkomponente 150, einen Speicher 160, Steuereinrichtungen 125 (beispielsweise manuell bedienbare Steuereinrichtungen), eine Anzeigeeinrichtung 135 und/oder eine Netzwerkschnittstelle 115 zum Koppeln von Verarbeitungsvorrichtung 105 mit Netzwerk 140 enthalten. Prozessorkomponente 150 kann Sicherheitsberechtigungsnachweise 180, einen Sicherheitsmikrocode 178, Metadaten 136 speichernden Metadatenspeicher 135, ein Sicherheitssubsystem 174, einen oder mehrere Prozessorkerne 170, einen oder mehrere Cachespeicher 172 und/oder einen Grafik-Controller 176 enthalten. Speicher 160 kann flüchtigen Speicher 164, nicht flüchtigen Speicher 162 und/oder einen oder mehrere Speicher-Controller 165 umfassen. Verarbeitungsvorrichtung 105 kann einen Controller 120 (beispielsweise einen Sicherheits-Controller) umfassen, der Sicherheitsberechtigungsnachweise 180 enthalten kann. Controller 120 kann auch eine oder mehrere der hier beschriebenen Ausführungsformen für vereinheitlichte Hardwarebeschleunigung von Hash-Funktionen umfassen.
  • Flüchtiger Speicher 164 kann eine oder mehrere Speichervorrichtungen umfassen, die insofern flüchtig sind, als sie die kontinuierliche Bereitstellung elektrischer Energie zum Behalten darin gespeicherter Informationen benötigen. Der Betrieb der Speichervorrichtung(en) von flüchtigem Speicher 164 kann von Speicher-Controller 165 gesteuert werden, der Befehle von Prozessorkomponente 150 und/oder anderen Komponenten von Verarbeitungsvorrichtung 105 zum Speichern und/oder Abrufen von Informationen darin empfangen kann und diese Befehle zwischen den Busprotokollen und/oder Zeitpunkten, zu denen sie empfangen werden, und anderen Busprotokollen und/oder Zeitpunkten, zu denen die Speichervorrichtung(en) von flüchtigem Speicher 164 mit dem Speicher-Controller 165 gekoppelt sind, umwandeln kann. Beispielsweise können die eine oder mehreren Speichervorrichtungen von flüchtigem Speicher 164 aus mit Speicher-Controller 165 mittels einer Schnittstelle gekoppelten dynamischen Direktzugriffsspeicher-(DRAM, Dynamic Random Access Memory)-Vorrichtungen bestehen, in denen beispielsweise Zeilen- und Spaltenadressen zusammen mit Byte-Freigabesignalen zum Auswählen von Speicherorten verwendet werden, während die durch Speicher-Controller 165 empfangenen Befehle dorthin über ein oder mehrere Paare digitaler serieller Übertragungsleitungen übermittelt werden können.
  • Nicht flüchtiger Speicher 162 kann aus einer oder mehreren Speichervorrichtungen bestehen, die insofern nicht flüchtig sind, als sie in der Lage sind, darin gespeicherte Informationen ohne die kontinuierliche Bereitstellung elektrischer Energie zu behalten. Der Betrieb von Speichervorrichtung(en) von nicht flüchtigem Speicher 162 kann von Speicher-Controller 165 (zum Beispiel ein anderer Speicher-Controller als der zum Betreiben von flüchtigem Speicher 164 verwendete) gesteuert werden, der Befehle von Prozessorkomponente 150 und/oder anderen Komponenten von Verarbeitungsvorrichtung 105 zum Speichern und/oder Abrufen von Informationen darin empfangen kann und diese Befehle zwischen den Busprotokollen und/oder Zeitpunkten, zu denen sie empfangen werden, und anderen Busprotokollen und/oder Zeitpunkten, zu denen die Speichervorrichtung(en) von nicht flüchtigem Speicher 162 mit Speicher-Controller 165 gekoppelt sind, umwandeln kann. Beispielsweise können eine oder mehrere Speichervorrichtungen von nicht flüchtigem Speicher 162 aus mit Speicher-Controller 165 mittels einer digitalen seriellen Schnittstelle funktionsmäßig gekoppelten ferromagnetischen plattenbasierten Laufwerken (Festplatten) bestehen, in denen beispielsweise Teile des Speicherraums innerhalb einer jeden solchen Speichervorrichtung durch Bezugnahme auf Spuren und Sektoren adressiert werden. Dagegen können durch Speicher-Controller 165 empfangene Befehle dorthin über ein oder mehrere Paare digitaler serieller Übertragungsleitungen übermittelt werden, wobei Lese- und Schreibbefehle übermittelt werden, in denen diese gleichen Teile des Speicherraums innerhalb einer jeden solchen Speichervorrichtung auf völlig andere Art und Weise adressiert werden.
  • Prozessorkomponente 150 kann mindestens einen Prozessorkern 170 zum Ausführen von Anweisungen einer ausführbaren Routine in mindestens einem Ausführungs-Thread umfassen. Prozessorkomponente 150 kann jedoch mehr als einen von Prozessorkernen 170 enthalten und/oder kann andere Verarbeitungsarchitekturtechniken zum Unterstützen mehrerer Ausführungs-Threads, durch die die Anweisungen von mehr als einer ausführbaren Routine parallel ausgeführt werden können, nutzen. Cache(s) 172 kann bzw. können einen mehrschichtigen Cache-Satz umfassen, der separate Level-1-(L1)-Caches für jeden Prozessorkern 170 und/oder einen größeren Level-2-(L2)-Cache für mehrere von Prozessorkernen 170 umfassen können.
  • In einigen Ausführungsformen, in denen Verarbeitungsvorrichtung 105 Anzeigeeinrichtung 135 und/oder Grafik-Controller 176 umfasst, können ein oder mehrere Kerne 170, als Folge des Ausführens der ausführbaren Anweisungen einer oder mehrerer Routinen, Steuereinrichtungen 125 und/oder die Anzeigeeinrichtung 135 zum Bereitstellen einer Benutzerschnittstelle und/oder zum Ausführen weiterer grafikrelevanter Befehle betreiben. Grafik-Controller 176 kann einen Grafikprozessorkern (z. B. eine Grafikprozessoreinheit (GPU)) und/oder Komponenten (nicht dargestellt) zum Ausführen grafikrelevanter Befehle, einschließlich und nicht beschränkt auf Dekomprimieren und Präsentieren eines Bewegtbildvideos, Rendern eines 2D-Bildes eines oder mehrerer Objekte eines dreidimensionalen (3D) Modells usw., umfassen.
  • Nicht flüchtiger Speicher 162 kann Daten 130 einschließlich ausführbarer Anweisungen 132 speichern. Bei den vorstehend genannten Austauschvorgängen von Daten 130 zwischen Verarbeitungsvorrichtung 105 und Server 110 kann Verarbeitungsvorrichtung 105 eine Kopie von Daten 130 beispielsweise für eine längerfristige Speicherung in nicht flüchtigem Speicher 162 behalten. Flüchtiger Speicher 164 kann verschlüsselte Daten 134 und/oder Metadaten 136 speichern. Verschlüsselte Daten 134 können aus mindestens einem Teil von Daten 130 bestehen, die in flüchtigem Speicher 164 in verschlüsselter und/oder komprimierter Form gemäß einigen hier beschriebenen Ausführungsformen gespeichert sind. Ausführbare Anweisungen 132 können eine oder mehrere ausführbare Routinen darstellen wie zum Beispiel ein Betriebssystem (OS, Operating System), Gerätetreiber und/oder eine oder mehrere von einem oder mehreren Prozessorkernen 170 von Prozessorkomponente 150 auszuführenden Anwendungsroutinen. Andere Teile von Daten 130 können Datenwerte umfassen, die von einem oder mehreren Prozessorkernen 170 als Eingänge zum Ausführen verschiedener Tasks, zu deren Durchführung ein oder mehrere Prozessorkerne 170 durch die Ausführung ausführbarer Anweisungen 132 veranlasst werden, verwendet werden.
  • Als Teil der Ausführung ausführbarer Anweisungen 132 können ein oder mehrere Prozessorkerne 170 Teile ausführbarer Anweisungen 132 abrufen und diese Teile in flüchtigem Speicher 164 in einer leichter ausführbaren Form speichern, in der Adressen abgeleitet werden, indirekte Verweise aufgelöst werden und/oder Verbindungen zwischen diesen oft als Laden bezeichneten Teilen in dem Vorgang umfassender definiert werden. Wie dem Fachmann bekannt ist, kann solch ein Ladevorgang unter der Kontrolle einer Laderoutine und/oder einer Seitenverwaltungsroutine eines OS, das zu den ausführbaren Anweisungen 132 gehören kann, erfolgen. Indem Teile von Daten 130 (einschließlich Teilen ausführbarer Anweisungen 132) so zwischen nicht flüchtigem Speicher 162 und flüchtigem Speicher 164 ausgetauscht werden, kann Sicherheitssubsystem 174 diese Teile von Daten 130 zwischen dem, was ihre ursprüngliche, unkomprimierte und unverschlüsselte Form, wie in nicht flüchtigem Speicher 162 gespeichert, sein mag, und einer Form, die mindestens verschlüsselt ist und die in flüchtigem Speicher 164 als durch Metadaten 136 ergänzte verschlüsselte Daten 134 gespeichert sein mag, konvertieren.
  • Sicherheitssubsystem 174 kann Hardware-Logik umfassen, die durch Sicherheitsmikrocode 178 für das Implementieren der Logik zum Durchführen solcher Konvertierungen während des Normalbetriebs von Verarbeitungsvorrichtung 105 konfiguriert oder anderweitig gesteuert ist. Sicherheitsmikrocode 178 kann Angaben von Verbindungen umfassen, die zum Bilden derartiger Logik zwischen Logikschaltungen innerhalb des Sicherheitssubsystems 174 zu erstellen sind, umfassen. Alternativ oder zusätzlich kann Sicherheitsmikrocode 178 ausführbare Anweisungen umfassen, die bei derartiger Ausführung eine solche Logik bilden. Sicherheitssubsystem 174 kann entweder solche Anweisungen des Sicherheitsmikrocodes 178 ausführen oder Sicherheitssubsystem 174 kann von mindestens einem Prozessorkern 170, der solche Anweisungen ausführt, gesteuert werden. Sicherheitssubsystem 174 und/oder mindestens ein Prozessorkern 170 können Zugriff auf Sicherheitsmikrocode 178 bei Initialisierung der Verarbeitungsvorrichtung 105 einschließlich Initialisierung der Prozessorkomponente 150 erhalten. Ferner kann Sicherheitssubsystem 174 eine oder mehrere der hier beschriebenen Ausführungsformen für vereinheitlichte Hardwarebeschleunigung von Hash-Funktionen umfassen.
  • Sicherheitsberechtigungsnachweise 180 können einen oder mehrere Werte umfassen, die von Sicherheitssubsystem 174 als Eingänge für die Ausführung der Verschlüsselung von Daten 130 und/oder der Entschlüsselung verschlüsselter Daten 134 als Teil des Durchführens von Konvertierungen dazwischen bei Normalbetrieb von Verarbeitungsvorrichtung 105 genutzt werden. Insbesondere können Sicherheitsberechtigungsnachweise 180 eine beliebige einer Vielzahl von Arten von Sicherheitsberechtigungsnachweisen umfassen, einschließlich und nicht beschränkt auf öffentliche und/oder private Schlüssel, „Seeds“ zum Erzeugen von Zufallszahlen, Anweisungen zum Erzeugen von Zufallszahlen, Zertifikate, Signaturen, Chiffren und/oder dergleichen. Sicherheitssubsystem 174 kann Zugriff auf Sicherheitsberechtigungsnachweise 180 bei Initialisierung der Verarbeitungsvorrichtung 105 erhalten.
  • 2 stellt eine Ausführungsform eines Systems 200 vertrauenswürdiger Enklaven dar, das in einigen hier beschriebenen Ausführungsformen verwendet werden kann. System 200 vertrauenswürdiger Enklaven kann Anwendung 201 umfassen, die eine oder mehrere auf einer Software- und/oder Hardwareplattform ausführende Anwendungen umfasst. Einige wenige nicht einschränkende Beispiele für Anwendungen, die schutzbedürftige geheime Daten umfassen können, sind Finanzanwendungen, Electronic-Banking-Anwendungen sowie Gesundheitsanwendungen oder medizinische Anwendungen. In einigen Ausführungsformen kann Anwendung 201 eine nicht vertrauenswürdige Partition 202 umfassen, die ein Teilbereich von Anwendung 201 sein kann, der Anweisungen und Daten enthält, die vor einem Angriff im Allgemeinen nicht geschützt sind. Privilegierter Code 206 kann Code einer Plattform umfassen, der über einen speziellen Zugriff (oder Privilegien) auf Daten innerhalb auf der Plattform laufenden Anwendungen verfügt. Privilegierter Code kann beispielsweise das Betriebssystem, einen „Virtual Machine Manager“, System-BIOS oder „System Management Mode“ umfassen. Obwohl diese beispielhaften Arten privilegierten Codes hier verwendet werden können, kann angemerkt werden, dass andere Arten von Code dauerhaft oder vorübergehend eine Privilegierung aufweisen können.
  • Würde schädlicher Code privilegierten Systemcode 206 infizieren, könnte er möglicherweise Zugriff auf nicht vertrauenswürdige Partition 202 haben, da privilegierter Systemcode 206 allgemein Zugriff auf Anwendung 201 hat. Durch Verwendung eines Systems vertrauenswürdiger Enklaven können jedoch bestimmte Daten geheim und sicher bleiben, selbst vor einem Angriff, der seinen Ursprung in privilegiertem Systemcode 206 hat. In einem Beispiel kann Anwendung 201 bei 210 eine vertrauenswürdige Enklave 204 zum Schützen geheimer Daten und sicherer Daten 216 erstellen. Die Erstellung einer vertrauenswürdigen Enklave 204 kann einen sicheren Speicherort erzeugen, zuweilen innerhalb eines Prozessors einer Plattform, der unter Nutzung der hier beschriebenen Techniken zugänglich ist. Vertrauenswürdige Enklave 204 kann dazu ausgebildet sein, bestimme vertrauenswürdige Funktionen zu unterstützen, die auf sichere Daten 216 angewendet werden. Nicht vertrauenswürdige Partition 202 kann bei 212 eine vertrauenswürdige Funktion unter Nutzung eines Call-Gates 214 aufrufen, das eine zum Akzeptieren bestimmter vertrauenswürdiger Funktionsaufrufe bei vertrauenswürdiger Enklave 204 konfigurierte Kombination aus Software und Hardware sein kann. Das Resultat eines vertrauenswürdigen Funktionsaufrufs kann von vertrauenswürdiger Enklave 204 an nicht vertrauenswürdige Partition 202 zurückgegeben werden, während sichere Daten 216 in vertrauenswürdiger Enklave 204 geschützt bleiben. Auf diese Weise kann auf sichere Daten 216 unter Verwendung einer begrenzten Zahl vertrauenswürdiger Funktionen zugegriffen werden und sichere Daten 216 können weiterhin in Anwendung 201 verwendet werden, jedoch kann, wie durch Sperre 208 gezeigt, privilegierter Systemcode 206 daran gehindert werden, auf sichere Daten 216 zuzugreifen. In einigen hier beschriebenen Ausführungsformen können sichere Daten 216 in Chip-internen (On-Chip) persistenten Speichern wie etwa NVRAM gespeichert sein und können derart aufgeteilt sein, dass jeder Teil einer bestimmten vertrauenswürdigen Ausführungsumgebung zugeordnet ist.
  • System 200 vertrauenswürdiger Enklaven ermöglicht, dass jede auf einer Plattform laufende Anwendung ihre eigenen geheimen Daten unter Verwendung sicherer Enklaven schützt, wodurch die Angriffsoberfläche für schädlichen Code, vor allem schädlichen Code, der in privilegierten Systemcode 206 eingedrungen ist, erheblich reduziert. Obwohl die in 2 beschriebene Ausführungsform eine einzelne Plattform darstellt, können Systeme vertrauenswürdiger Enklaven in vernetzten verteilten Systemen, wie zum Beispiel IoT, verwendet werden. Wie später beschrieben wird, kann in diesen Systemen eine zentralisierte vertrauenswürdige Instanz zum Authentifizieren sicherer Enklaven genutzt werden.
  • 3 stellt eine Architektur eines System 300 vertrauenswürdiger Enklaven dar. System 300 vertrauenswürdiger Enklaven kann eine Anwendungsumgebung 301, privilegierte Umgebung 302 und exponierte Hardware 304 umfassen, wobei nun jede der Reihe nach erörtert wird. Anwendungsumgebung 301 kann eine oder mehrere Enklaven 306, 308 umfassen, auf die jeweils unter Nutzung eines oder mehrerer SGX-Benutzer-Laufzeitmodule 310, 312 zugegriffen wird. Auf diese Weise kann auf jede Enklave 306, 308 durch privilegierte Umgebung 302 auf sichere Art zugegriffen werden. Privilegierte Umgebung 302 kann ein SGX-Modul 314 und Seitentabellen 316 umfassen. SGX-Modul 314 kann eine Kombination aus Soft- und Hardware umfassen und kann dazu ausgebildet sein, von einer Enklave 306, 308 über SGX-Benutzer-Laufzeiten 310, 312 geheime Informationen anzufordern oder vertrauenswürdige Funktionen an geheimen Informationen auszuführen. Seitentabellen 316 können beispielsweise einen oder mehrere Speicherorte für in exponierter Hardware 304 gespeicherte geheime Daten speichern. Exponierte Hardware 304 kann eine Rechenplattform 318 wie hier beschrieben umfassen und kann einen oder mehrere zum Ausführen der dargelegten Techniken ausgebildete Prozessoren umfassen.
  • Plattform 318 kann eine Speichervorrichtung NVRAM 324 umfassen, die Enklavenseiten-Cache (EPC, Enclave Page Cache) 320 und Enklavenseiten-Cache-Abbildung (EPCM, Enclave Page Cache Map) 322 speichert. EPC 320 kann ein Speicher sein, der eine Struktur EPCM 322 zum In-Verbindung-Bringen eines Satzes von Zugriffsberechtigungen mit einer Enklave umfasst. EPC 320 kann geschützten Code und Daten in Seiten enthalten, die in einigen Ausführungsformen in einem nicht einschränkenden Beispiel 4KB-Seiten sein können. EPC 320 kann Enklavenseiten und SGX-Strukturen speichern und EPC Seiten können gültig oder ungültig sein. Eine gültige EPC-Seite kann entweder eine Enklavenseite oder eine SGX Struktur enthalten. Die Sicherheitsattribute für jede EPC-Seite können in einer nachfolgend erörterten, EPCM genannten internen Mikroarchitekturstruktur gehalten werden.
  • EPCM 322 kann Metadaten von Enklavenseiten enthalten und kann eine durch einen Prozessor zum Verfolgen der Inhalte von EPC 320 genutzte geschützte Struktur sein. EPCM 322 kann sich aus einer Reihe von Einträgen mit genau einem Eintrag für jede Seite in EPC 320 zusammensetzen. Es kann angemerkt werden, dass alternative Ausführungsformen keine 1:1-Zuordnung erfordern mögen. EPCM 322 kann durch den Prozessor als Teil verschiedener SGX-Anweisungen verwaltet werden und kann für Software oder für Geräte nicht direkt zugreifbar sein. Das Format von EPCM 322 kann mikroarchitektonisch sein und ist abhängig von der Implementierung. Jedoch kann sinngemäß jeder EPCM-Eintrag eines oder mehrere der folgenden Elemente aufweisen: ob die EPC-Seite gültig oder ungültig ist; die Enklaveninstanz, die die Seite besitzt; die Art von Seite (REG, TCS, VA, SECS); die virtuelle Adresse, über welche die Enklave auf die Seite zugreifen kann; die enklavenspezifizierten Lese-/Schreib-/Ausführ-Berechtigungen auf dieser Seite; und/oder ob auf die Seite zugegriffen werden kann oder nicht (GESPERRT oder NICHT GESPERRT). Die EPCM-Struktur kann von dem Prozessor in dem Adressübersetzungsfluss dazu verwendet werden, eine Zugriffssteuerung auf den in den EPC geladenen Enklavenseiten durchzusetzen. Folgerichtig kann sie eine zusätzliche Sicherheitsebene der Zugriffssteuerung ergänzend zu „Legacy“-Segmentierung, Seitenwechseltabellen und erweiterten Seitenwechselmechanismen bereitstellen.
  • 4 stellt ein Blockdiagramm für ein System 400 dar. In einer Ausführungsform kann das System 400 eine oder mehrere Komponenten aufweisen. Obgleich das in 4 gezeigte System 400 eine begrenzte Anzahl von Elementen in einer bestimmten Topologie aufweist, ist anzumerken, dass das System 400 mehr oder weniger Elemente in alternativen Topologien, wie für eine gegebene Implementierung erwünscht, umfassen kann. Das System 400 kann eine Mehrzahl von Modulen umfassen, die jeweils eine oder mehrere hier ausführlicher beschriebene Verarbeitungseinheiten, Speichereinheiten, Netzwerkschnittstellen oder andere Hardware- und Softwareelemente umfassen können. In einigen Ausführungsformen können diese Module in einer einzelnen Vorrichtung enthalten sein. In anderen Ausführungsformen können ein oder mehrere Module Teil einer verteilten Architektur sein, wofür ein Beispiel mit Bezug auf 11 beschrieben wird.
  • In einer Ausführungsform kann jedes Modul von System 400 ohne Beschränkung umfassen: eine mobile Rechenvorrichtung, ein Smartphone, ein Funktelefon, eine mit dem Internet der Dinge (IoT, Internet of Things) verbundene Vorrichtung, ein Mobiltelefon, einen PDA (Personal Digital Assistant), einen Einweg-Pager, einen Zweiwege-Pager, eine Nachrichtenübermittlungsvorrichtung, einen Computer, einen Personal Computer (PC), einen Desktop-Computer, einen Laptop-Computer, einen Notebook-Computer, einen Handheld-Computer, einen Tablet-Computer oder eine am Körper tragbare Rechenvorrichtung wie zum Beispiel eine Smartwatch. Ferner können Module einen Server umfassen, der ohne Beschränkung einen einzelnen Server, ein Server-Array oder eine Serverfarm, einen Web-Server, einen Netzwerkserver, einen Internet-Server, eine Workstation, einen Minicomputer, einen Großrechner, einen Supercomputer, eine Netzwerkeinrichtung, eine Web-Einrichtung, Mehrprozessorsysteme, prozessorbasierte Systeme oder eine beliebige Kombination davon umfassen kann.
  • In verschiedenen Ausführungsformen kann System 400 mehrere Komponenten oder Module aufweisen oder implementieren. So wie hier verwendet, sind die Begriffe „Komponente“ und „Modul“ dazu bestimmt, sich auf computerbezogene Einheiten zu beziehen, die entweder Hardware, eine Kombination aus Hard- und Software, Software oder Software in Ausführung umfassen. Beispielsweise kann eine Komponente und/oder ein Modul als ein auf einem Prozessor ablaufender Prozess, ein Festplattenlaufwerk, mehrere Speicherlaufwerke (optischer und/oder magnetischer Speichermedien), ein Objekt, ein ausführbares Element, ein Ausführungs-Thread, ein Programm und/oder ein Computer implementiert sein. Zur Veranschaulichung können sowohl eine auf einem Server ablaufende Anwendung als auch der Server eine Komponente und/oder ein Modul sein. Ein/e oder mehrere Komponenten und/oder Module können sich in einem Prozess und/oder Ausführungs-Thread befinden und eine Komponente und/oder ein Modul können auf einem Computer lokalisiert und/oder zwischen zwei oder mehreren Computern verteilt sein, wie es für eine gegebene Implementierung erwünscht ist. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Die verschiedenen Vorrichtungen innerhalb Systems 400 und Komponenten und/oder Module innerhalb einer Vorrichtung von System 400 können über verschiedene Typen von Kommunikationsmedien kommunikativ gekoppelt sein, wie es durch diverse Linien und Pfeile angedeutet ist. Die Vorrichtungen, Komponenten und/oder Module können Operationen untereinander koordinieren. Die Koordinierung kann den unidirektionalen oder den bidirektionalen Austausch von Informationen einschließen. Beispielsweise können die Vorrichtungen, Komponenten und/oder Module Informationen in Form von über die Kommunikationsmedien übertragenen Signalen übermitteln. Die Informationen können als verschiedenen Signalleitungen zugewiesene Signale implementiert sein. Bei solchen Zuweisungen ist jede Nachricht ein Signal. Jedoch können weitere Ausführungsformen alternativ Datennachrichten nutzen. Solche Datennachrichten können über verschiedene Verbindungen gesendet werden. Beispielhafte Verbindungen innerhalb einer Vorrichtung umfassen parallele Schnittstellen, serielle Schnittstellen und Busschnittstellen. Beispielhafte Verbindungen zwischen Vorrichtungen können Netzwerkverbindungen über ein drahtgebundenes oder drahtloses Kommunikationsnetz aufweisen.
  • In verschiedenen Ausführungsformen können die verschiedenen Module und Speichereinrichtungen von System 400 als ein verteiltes System organisiert sein. Ein verteiltes System weist typischerweise mehrere autonome Computer auf, die über ein Computernetz kommunizieren. Die Computer können zum Erreichen eines gemeinsamen Ziels, wie zum Beispiel dem Lösen von Rechenproblemen, miteinander interagieren. Beispielsweise kann ein Rechenproblem in viele Tasks aufgeteilt werden, von denen jeder von einem Computer gelöst wird. Ein Computerprogramm, das in einem verteilten System abläuft, heißt verteiltes Programm und verteilte Programmierung ist der Vorgang des Schreibens solcher Programme. Beispiele eines verteilten Systems können ohne Einschränkung umfassen: eine Client-Server-Architektur, eine Drei-Schichten-Architektur (3-Tier), eine N-Schichten-Architektur (N-Tier), eine eng gekoppelte Architektur oder Clusterarchitektur, eine Peer-to-Peer-Architektur, eine Master-Slave-Architektur, eine Shared-Database-Architektur und andere Arten verteilter Systeme. Es ist anzumerken, dass, obgleich einige Ausführungsformen bei der Beschreibung verschiedener verbesserter Techniken zum Datenabruf ein verteiltes System nutzen mögen, auch zu sehen ist, dass die verbesserten Techniken zum Datenabruf ebenso durch eine einzelne Rechenvorrichtung implementiert werden können. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Hier beschriebene Ausführungsformen beschreiben Techniken für eine vertrauenswürdige Ausführungsumgebung (SGX als ein Beispiel dafür) zum Zugreifen auf einen dedizierten Chip-internen (On-Chip) Speicher, wie etwa NVRAM, um verbesserte Sicherheitsgarantien mit Leistungsvorteilen bereitzustellen. Obwohl Beispiele wie etwa SGX und NVRAM hier zum Beschreiben bestimmter Ausführungsformen verwendet werden können, kann angemerkt werden, dass andere vertrauenswürdige Ausführungsumgebungen und Speichervorrichtungen in einigen Ausführungsformen verwendet werden können. Beispielhafte Vorteile können Zustandswiederherstellbarkeitsfähigkeiten für sichere Enklaven umfassen, zum Teil ermöglicht durch das Speichern sicherheitskritischer Daten, wie zum Beispiel Schlüssel, auf sichere und beständige Weise. Des Weiteren kann die Leistung einer vertrauenswürdigen Ausführungsumgebung durch die Einbeziehung von On-Chip-Speicher verbessert werden. Ferner kann das sichere und beständige Erhalten TEE-bezogener Daten beispielsweise ermöglichen, dass ein sicherer Zustand für Dienste, wie zum Beispiel monotone Zähler, die Wiedergabeschutz an persistente Speicher über Reset-Zyklen hinaus bereitstellen, Anwendungen wie etwa digitale Rechteverwaltung (DRM, Digital Rights Management) aktiviert. Der Dienst des monotonen Zählers kann als Teil von SGX Plattformdiensten bereitgestellt sein und kann einen wiedergabegeschützten persistenten Speicher zum Speichern eines zu den monotonen Zählern zugehörigen Root-Hashwerts erfordern. Mit den vorgeschlagenen offenbarten Techniken kann On-Chip-NVRAM als der persistente Speicher verwendet werden.
  • Als ein weiteres Beispiel für einen Vorteil kann der On-Chip-NVRAM dazu verwendet werden, den Key-Wrapping-Schlüssel (KWK, Key Wrapping Key) zu speichern, der von einer Enklave mittels EBIND-Anweisung zum Erzeugen eingehüllter Blobs genutzt wird, die wiederum von Enklaven zum sicheren Übermitteln an verschiedene Vorrichtungen auf einer Plattform genutzt werden können. Dies kann ermöglichen, dass die Blobs über Schlafzustände hinaus gespeichert und wiederhergestellt werden. Zusätzlich kann der Speicher durch das Bereitstellen von Speicher für Plattformdienstmetadaten auch zur Verringerung der TCB für SGX TEE beitragen.
  • Bei Betrachtung der in 4 dargestellten Elemente kann System 400 das für vertrauenswürdige Ausführungsumgebung spezifische Softwaremodul 402 umfassen, das auf der Software-Seite des Systems 400 angeordnet ist. TEE 402 kann eine virtuelle Speicherverwaltungsanwendung SGX oder eine andere Art von TEE umfassen. In einer Ausführungsform kann TEE 402 eine Client-Anwendung umfassen, die wie hier beschrieben auf einer Client-Vorrichtung ablaufen kann, Daten ausführen und/oder unter Nutzung einer sicheren Enklave, wie zum Beispiel einer SGX-Enklave, speichern kann. SGX-Enklaven können sich in einigen Ausführungsformen auf einem oder mehreren Prozessoren einer Client-Vorrichtung befinden. Obgleich durchweg konkrete Beispiele verwendet werden, können die beschriebenen Techniken mit einem beliebigen Prozessor in verschiedenen Arten vertrauenswürdiger Ausführungsumgebungen verwendet werden.
  • In einigen Ausführungsformen können mehrere TEE der gleichen Art oder verschiedener Arten mit den hier beschriebenen Techniken verwendet werden. Beispielsweise können Techniken, eine oder mehrere hier ausführlich beschriebene Befehlssatzarchitektur-(ISA, Instruction Set Architecture)-Erweiterungen nutzend, exklusiven Zugriff 403 auf On-Chip-NVRAM 408 für mehrere misstrauende TEE (z. B. SGX, VMM) bereitstellen. Der vorgeschlagene On-Chip-NVRAM 408 kann durch System-BIOS an eine bestimmte TEE 402 gebunden sein, um exklusiven Zugriff für die TEE 402 zum Speichern geheimer Elemente oder sicherheitskritischer Daten, die über tiefere Schlafzustände wie beispielsweise (S3/S4) hinaus persistent sein sollen, als Teil des Plattformherstellungsprozesses bereitzustellen. TEE 402 kann für ihren Betrieb die Beibehaltung eines sicheren Zustands über Schlafzustände hinaus erfordern. Als Beispiel können das Speichern oder Wiederherstellen von Schlüsseln und anderen geheimen Daten über (S3/S4)-Schlafzustände hinaus ermöglichen, dass eine in einer TEE 402 laufende Anwendung übergangslos über Schlafzustände hinaus arbeitet.
  • NVRAM 408 kann auf der Hardware-Seite von System 400 vorhanden sein und kann innerhalb eines Prozessors von System 400 in einigen Ausführungsformen vorhanden sein. Obwohl NVRAM als eine beispielhafte Ausführungsform verwendet wird, können in anderen Ausführungsformen andere Arten von Speichervorrichtungen genutzt werden. NVRAM 408 kann in einigen Ausführungsformen entsprechend 5 konfiguriert sein. Insbesondere kann NVRAM 408 für eine oder mehrere TEE partitioniert werden, wobei jede Partition einen statischen Speicherbereich für eine zugehörige TEE bereitstellt. Auf diese Weise können mehrere TEE Zugriff auf NVRAM 408 haben, ohne dass ein Zugriff auf andere Anwendungen oder andere TEE bereitgestellt wird.
  • Die Verwaltung jeder NVRAM-Partition sowie die Zugriffssteuerung kann durch NVRAM-Controller 406 bereitgestellt werden, welcher dafür konfiguriert sein kann, den Zugriff 403 auf in NVRAM 408 gespeicherte Daten mittels Schnittstellen-Plugin 404 zu steuern. Hier beschriebene Techniken, die ISA-Erweiterungen nutzen, können dem für eine vertrauenswürdige Ausführungsumgebung spezifischen Softwaremodul 402 den Zugriff auf On-Chip-NVRAM 408 ermöglichen, der ansonsten vor anderer Systemsoftware und dem Betriebssystem versteckt ist. Obwohl einige hier beschriebene Ausführungsformen spezifische Anweisungen für gewisse TEE nutzen, kann angemerkt werden, dass ein einzelner Satz von Anweisungen für mehrere Arten von TEE in bestimmten Implementierungen genutzt werden kann. NVRAM-Controller 406 kann dafür konfiguriert sein, einen Hinweis an eine TEE zu senden, der anzeigt, dass er dedizierten On-Chip-Speicherzugriff für TEE unterstützt. Beispielsweise kann eine CPUID gesendet werden oder mittels Feature-Flags in der CPUID verfügbar gemacht werden, um einer TEE zu ermöglichen, die Unterstützung für die hier beschriebenen Techniken festzustellen.
  • Schnittstellen-Plugin 404 kann dafür konfiguriert sein, Anweisungen von TEE 402 zu empfangen, und kann einen Betriebsmodus bezüglich der Ausführung einer Anweisung zum Sicherstellen, welche TEE auf den NVRAM 408 zugreift, prüfen. Beispielsweise kann, wenn die Anweisung während des Ablaufens in einer Enklave ausgeführt wird, Schnittstellen-Plugin 404 einen Abgleich mit Enklavenanweisungen durchführen und kann, im VMX-Modus ablaufend, Schnittstellen-Plugin 404 einen Abgleich mit VMM-Anweisungen durchführen. In einer Ausführungsform kann Schnittstellen-Plugin 404 dafür konfiguriert sein, die Ausführung von Anweisungen auf eine bestimmte Enklave oder eine Teilmenge von Enklaven (beispielsweise SGX nutzend) zu begrenzen. In diesem Fall kann Schnittstellen-Plugin 404 durch das Vorab-Bereitstellen einer Bemessung der Enklave, die eine Anweisung ausführen darf, konfiguriert sein und die Anweisung kann dafür konfiguriert sein, zu überprüfen, dass die Bemessung der aufrufenden Enklave die gleiche ist wie die vorab bereitgestellte Bemessung.
  • On-Chip-NVRAM 408 kann in einer Ausführungsform uCode-exklusiv sein und kann als ein RAM-Modul mit als dem Gatekeeper von NVRAM-Controller 406 konfiguriertem Schnittstellen-Plugin 404 angesehen werden. Selbstverständlich muss uCode-Exklusivität nicht in allen Ausführungsformen erforderlich sein. Wenn erforderlich, kann uCode der einzige Agent sein, dem NVRAM-Controller 406 traut, und somit kann es für TEE 402 erforderlich sein, uCode aufzurufen, um auf NVRAM 408 über zielgerichtete Anweisungen, die an den in dem Schnittstellen-Plugin 404 konfigurierten Zugriffssteuerungsrichtlinien festhalten, zuzugreifen.
  • Schnittstellen-Plugin 404 kann dafür zuständig sein, Zugriffssteuerungsrichtlinien durchzusetzen, die an eine bestimmte TEE in Hardware gebunden sind, auf die über zielgerichtete Einstiegspunkte wie bestimmten Anweisungen zugegriffen wird. Die Zugriffssteuerungsrichtlinien können Partitionen in NVRAM 408 zugeordnet sein, um verschiedenen TEE zu ermöglichen, verschiedene Partitionen zu steuern. Zugriffssteuerungsrichtlinien für das Schnittstellen-Plugin 404 können bei allen Lese-/Schreibtransaktionen zu prüfende statische Lese- und Schreibrichtlinien umfassen, die während des Bootens durch BIOS gesetzt werden können. Diese Richtlinien können in einigen Ausführungsformen bei Laufzeitausführung nicht dynamisch neu konfiguriert werden.
  • Für jede TEE kann eine Zugriffssteuerungsrichtlinie die folgenden Informationen nutzen:
    • TEE-ID: Ein Identifizierer, der von dem Schnittstellen-Plugin 404 verwendet wird, um Zugriffssteuerungsrichtlinien durchzusetzen und auf die Genehmigung des TEE-NVRAM-Zugriffs zu prüfen.
    • TEE-INSTRUCTIONS: Ein Satz von Anweisungen, die nur von dieser TEE ausgeführt werden können.
    • TEE-RANGE: Ein Bereichsregister zum Festlegen eines Speicherbereichs in NVRAM für die TEE.
    • Schnittstellen-Plugin 404 kann mindestens die vorstehenden Informationen verwenden, um Zugriffssteuerungsrichtlinien für bestimmte TEE, die Zugriff auf eine Partition von NVRAM 408 anfragen, durchzusetzen. Beispielsweise kann Schnittstellen-Plugin 404 zum Prüfen, ob die NVRAM-Adresse zu der die Anfrage erzeugenden TEE gehört, konfiguriert sein. Wenn Schnittstellen-Plugin 404 einen Zugriffsfehler erfasst, wird es die Anfrage verwerfen und an die TEE eine Fehlerantwort zurücksenden.
  • 5 stellt ein Speichersystem 500 gemäß einer Ausführungsform dar. In diesem Beispiel umfasst das Speichersystem einen On-Chip-NVRAM, der in statische Speicherbereiche aufgeteilt sein kann, wovon jeder einer TEE zugeordnet ist. In einer Ausführungsform kann das System-BIOS verfügbaren NVRAM in unterstütze Speicherbereiche für jede bekannte TEE mittels TEEspezifischer Basis-/Masken-Speicherpartitionierungsdienste (wie zum Beispiel MSR) aufteilen. In einer Ausführungsform kann das Partitionieren derart durchgeführt werden, dass partitionierte Speicherbereiche zum Durchsetzen von Trennung und Sicherheit nicht überlappende Bereiche sind. Ein oder mehrere Bereichsregister können ein Sperr-Bit aufweisen und einmal gesetzt kann es nicht geändert werden. Während der Partitionierung durch BIOS kann ein Speicherpartitionierungsstrom dafür konfiguriert sein, auf ein Sperr-Bit zu prüfen und, falls gesetzt, einen GP-Fehler auszugeben. Falls es nicht gesetzt ist, kann er dafür konfiguriert sein, andere Bereichsregister zu prüfen, um sicherzustellen, dass der andere Bereich gesperrt ist. Ein Speicherpartitionierungsstrom kann dafür konfiguriert sein, zu bestimmen, dass ein Bereichswert, der in den On-Chip-NVRAM 500 für eine TEE programmiert ist, nicht mit dem gesperrten Wert in dem anderen Bereich überlappt. Wenn BIOS die Partitionierung beendet, kann On-Chip-NVRAM 500 gesperrt werden und kann auf jede jeweilige Partition durch eine entsprechende TEE zugegriffen werden.
  • In einem nicht einschränkenden Beispiel stellt 5 Hardware dar, die einen zum Unterstützen einer ersten TEE-A (64MB) 520 zwischen TEE-A-Maske 502 und TEE-A-Basis 504 und einer zweiten TEE-B (64MB) 512 zwischen TEE-B-Maske 506 und TEE-B-Basis 508 konfigurierten 256MB-On-Chip-NVRAM 500 aufweist. Ein Schnittstellen-Plugin kann dafür konfiguriert sein, die Attribute auf jeden Transaktionszugriff auf On-Chip-NVRAM 500 zu prüfen, wobei die hier beschriebenen Techniken verwendet werden.
  • NVRAM 500 kann als Teil eines Plattformherstellungsprozesses ausgebildet sein. Dementsprechend kann der Zugriff auf NVRAM 500 auf einen bestimmten Agenten, wie zum Beispiel uCode, beschränkt sein. Wie gemäß den hier beschriebenen Techniken konfiguriert, kann jede TEE nur von den ihr zugeordneten NVRAM-Registern Kenntnis haben und kann über keine Informationen bezüglich der vollständigen NVRAM-Konfiguration verfügen. Somit vermag es keine TEE, bösartigerweise oder aus Versehen auf den NVRAM-Bereich einer anderen TEE zuzugreifen.
  • 6 stellt ein System 600 gemäß einer Ausführungsform dar. System 600 kann eine auf der Software-Seite des Systems 600 angeordnete SGX-Enklave 602 umfassen. SGX-Enklave 602 kann dafür konfiguriert sein, auf einen bestimmten SGX-TEE-Speicherbereich 610 von NVRAM 608 auf der Hardware-Seite von System 600 mittels Schnittstellen-Plugin 604 und NVRAM-Controller 606 zuzugreifen 603. System 600 arbeitet weitgehend in Übereinstimmung mit den vorstehend mit Bezug auf 4 beschriebenen Techniken.
  • Hier beschriebene Techniken können Anweisungen für verschiedene Arten von TEE umfassen. Die in 6 dargestellte Ausführungsform richtet sich speziell auf SGX und Enklave 602. In einer beispielhaften Ausführungsform können zwei Anweisungen nur von einer genehmigten Enklave ausgeführt werden. In diesem Beispiel können die Anweisungen ENVRAM_RD (Lesen) und ENVRAM_WR (Schreiben) speziell durch SGX genutzt werden. Durch Verwendung dieser Anweisungen können in einem Beispiel andere Funktionen, wie zum Beispiel eine „Launch“-Enklavenfunktion, den On-Chip-Speicher zum Speichern kritischer Informationen, die für Speichern-Wiederherstellen aller Enklaven benötigt werden, verwenden.
  • Die ENVRAM_WR-Anweisung kann eine Ring-3-Anweisung (Blatt von ENCLU) sein und kann einer bestimmten Enklave ermöglichen, ein Schreiben in einen bestimmten Speicherbereich von NVRAM 608 durchzuführen. In einem Beispiel kann das Schreiben auf 64MB beschränkt sein. Die ENVRAM_WR-Anweisung kann die folgenden Parameter mit beispielhaften Werten umfassen:
    • DS:EAX: wr addr <32b Adresse>
    • DS:EBX: wr_data0 <32b Schreibwert>
    • DS:ECX: wr_datal <32b Schreibwert>
  • Die ENVRAM_RD-Anweisung kann eine Ring-3-Anweisung (Blatt von ENCLU) sein und kann einer bestimmten Enklave ermöglichen, ein Lesen in einen bestimmten Speicherbereich von NVRAM 608 durchzuführen. In einem Beispiel kann das Lesen auf 64MB beschränkt sein. Die ENVRAM_RD-Anweisung kann die folgenden Parameter mit beispielhaften Werten umfassen:
    • DS:EAX: rd addr <32b Leseadresse>
    • DS:EBX: rd_data0 <32b Leserückgabewert>
    • DS:ECX: rd_datal <32b Leserückgabewert>
  • 7 stellt ein System 700 gemäß einer Ausführungsform dar. System 700 kann einen mehreren VMM 702 und 704 entsprechenden VMM 706 auf der Software-Seite des Systems 700 umfassen. Obwohl zwei VMM 702 und 704 dargestellt sind, ist anzumerken, dass mehr oder weniger eingesetzt werden können. Ferner kann angemerkt werden, dass, während 6 SGX darstellt und 7 VMM darstellt, SGX, VMM und andere Arten von TEE in bestimmten Ausführungsformen gleichzeitig vorhanden sein können.
  • VMM 706 kann dafür konfiguriert sein, auf einen bestimmten SGX-TEE-Speicherbereich 714 von NVRAM 712 auf der Hardware-Seite von System 700 mittels Schnittstellen-Plugin 708 und NVRAM-Controller 710 zuzugreifen 703. System 700 arbeitet weitgehend in Übereinstimmung mit den vorstehend mit Bezug auf 4 beschriebenen Techniken.
  • Hier beschriebene Techniken können Anweisungen für verschiedene Arten von TEE umfassen. Die in 7 dargestellte Ausführungsform richtet sich speziell auf VMM 706. In einer beispielhaften Ausführungsform können zwei Anweisungen nur von einem genehmigten VMM ausgeführt werden. In diesem Beispiel können in einigen Ausführungsformen die Anweisungen VMVRAM_RD (Lesen) und VMVRAM_WR (Schreiben) speziell durch VMM 706 genutzt werden und können lediglich im VM<M-Root-Modus verwendet werden. Durch Verwendung dieser Anweisungen können in einem Beispiel andere Funktionen, wie zum Beispiel eine „Launch“-Enklavenanweisung, den On-Chip-Speicher zum Speichern kritischer Informationen, die für Speichern-Wiederherstellen aller Enklaven benötigt werden, verwenden.
  • Eine erste Anweisung VMRAM_WR kann eine VMX-Root-Anweisung zum Schreiben eines VMM-spezifischen NVRAM-Bereichs in Hardware sein. Die Attribute für diese Anweisung können eine Schreibadresse und Schreibdaten umfassen. Falls die Anweisung im VMX-Non-Root-Betriebsmodus ausgeführt wird, dann kann ein GP-Fehler auftreten. Eine zweite Anweisung VMRAM_RD kann eine VMX-Root-Anweisung zum Lesen eines VMM-spezifischen NVRAM-Bereichs in Hardware sein. Attribute für diese Anweisung können eine Leseadresse zum Abrufen eines Lesewerts umfassen. Falls die Anweisung im VMX-Non-Root-Betriebsmodus ausgeführt wird, kann ein GP-Fehler auftreten.
  • Eine Reihe von Flussdiagrammen, die repräsentativ für beispielhafte Methoden zum Durchführen neuartiger Aspekte der offenbarten Architektur sind, ist hier enthalten. Obgleich aus Gründen der Einfachheit der Erklärung die eine oder die mehreren hier beispielsweise in Form eines Flussdiagramms oder Ablaufdiagramms gezeigten Methoden als eine Folge von Aktionen gezeigt und beschrieben werden, versteht es sich und ist anzumerken, dass die Methoden nicht durch die Reihenfolge von Aktionen eingeschränkt sind, da einige Aktionen dementsprechend in einer anderen Reihenfolge als und/oder gleichzeitig mit anderen Aktionen der hier gezeigten und beschriebenen erfolgen können. Beispielsweise wird der Fachmann verstehen und anerkennen, dass eine Methode alternativ als eine Folge von in gegenseitiger Beziehung stehenden Zuständen oder Ereignissen dargestellt werden kann, wie zum Beispiel in einem Zustandsdiagramm. Zudem mögen nicht alle in einer Methode dargestellten Aktionen für eine neuartige Implementierung erforderlich sein.
  • 8 stellt einen Logikfluss 800 gemäß einer Ausführungsform dar. Bei 802 kann ein Prozessor einer vertrauenswürdigen Ausführungsumgebung anzeigen, dass ein Speicher, wie zum Beispiel ein On-Chip-NVRAM, dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt. Wie hier beschrieben, kann die TEE ein SGX-System oder ein VMM-System oder andere bekannte TEE sein. In einigen Ausführungsformen können VMM-Systeme „Virtual Secure Mode“ (VSM) implementieren. Das Anzeigen kann mittels einer CPUID erfolgen, welche ein mit einer CPU verknüpfter Identifizierer sein kann, der von einem Controller an eine TEE gesendet werden kann, oder ein oder mehrere Flags aufweisen kann, die Fähigkeiten angeben können, die von einer TEE durch Lesen der entsprechenden Flags erfasst werden können.
  • In einer Ausführungsform kann der Speicher eine Mehrzahl von Partitionen umfassen, wobei jede der Mehrzahl von Partitionen statisch mit einer bestimmten TEE verknüpft ist und durch ein System-BIOS erstellt werden kann. Auf diese Weise kann eine erste TEE daran gehindert werden, aus Versehen oder bösartigerweise auf geheime Daten von einer anderen TEE, die sich ebenfalls innerhalb des gleichen On-Chip-NVRAM befinden, zuzugreifen oder diese zu beschädigen. Innerhalb eines einzelnen On-Chip-NVRAM können Speicherbereiche einer bestimmten TEE zugewiesen werden und kann ein Schnittstellen-Plugin eines NVRAM-Controllers dafür zuständig sein, Anweisungen von einer oder mehreren TEE zu empfangen und Zugriffssteuerungsrichtlinien durchzusetzen.
  • Bei 804 kann ein Prozessor eine Anweisung von der vertrauenswürdigen Ausführungsumgebung empfangen. Die Anweisung kann eine bestimmte TEE betreffen, wie zum Beispiel vorstehend mit Bezug auf 6 und 7 beschrieben. In einigen Ausführungsformen können gemeinsame Anweisungssätze den verschiedenen Arten von TEE zur Verfügung stehen. Auf jeden Fall kann die Anweisung mit einer Zugriffssteuerungsrichtlinie verbundene Informationen umfassen, wie zum Beispiel eines oder mehr als eines von einem Identifizierer einer vertrauenswürdigen Ausführungsumgebung, Anweisungen einer vertrauenswürdigen Ausführungsumgebung und einem Bereich von Speicherorten, der einer vertrauenswürdigen Ausführungsumgebung zugeordnet ist.
  • Wiederum kann bei 806 ein Schnittstellen-Plugin eines NVRAM-Controllers eine Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durchsetzen. Das Schnittstellen-Plugin kann Zugriffssteuerungsrichtlinien zum Einschränken von Lese- und Schreibzugriffen einer TEE auf einen bestimmten Speicherbereich in einem On-Chip-NVRAM durchsetzen. In einigen Ausführungsformen können jede TEE und zugeordnete Speicherpartition eine zugehörige Zugriffssteuerungsrichtlinie haben und können zugehörige Anweisungssätze aufweisen. Gleichermaßen können in anderen Ausführungsformen mehrere TEE oder Arten von TEE Zugriffssteuerungsrichtlinien und/oder Anweisungssätze teilen.
  • 9 stellt einen Herstellungsgegenstand gemäß einer Ausführungsform dar. Speichermedium 900 kann ein beliebiges computerlesbares Speichermedium oder maschinenlesbares Speichermedium umfassen wie zum Beispiel ein optisches Speichermedium, ein magnetisches Speichermedium oder ein Halbleiterspeichermedium. In einigen Ausführungsformen kann Speichermedium 900 ein nicht transitorisches Speichermedium umfassen. In verschiedenen Ausführungsformen kann Speichermedium 900 einen Herstellungsgegenstand umfassen. In einigen Ausführungsformen kann Speichermedium 900 computerausführbare Anweisungen, beispielsweise etwa computerausführbare Anweisungen zum Implementieren von Logikfluss 800, speichern. Beispiele für ein computerlesbares Speichermedium oder maschinenlesbares Speichermedium können jedes greifbare Medium umfassen, das elektronische Daten zu speichern vermag, einschließlich flüchtigen Speichers oder nicht flüchtigen Speichers, entnehmbaren oder nicht entnehmbaren Speichers, löschbaren oder nicht löschbaren Speichers, beschreibbaren oder wiederbeschreibbaren Speichers usw. Beispiele für computerausführbare Anweisungen können jede geeignete Art von Code enthalten, wie zum Beispiel Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code, objektorientierten Code, visuellen Code und dergleichen. Die Ausführungsformen sind nicht auf diese Beispiele beschränkt.
  • 10 stellt ein Blockdiagramm eines zentralisierten Systems 1000 dar. Das zentralisierte System 1000 kann einige oder alle der Struktur und/oder Operationen für das Webservices-System 1020 in einer einzelnen Recheneinheit realisieren, etwa vollständig innerhalb einer einzelnen Vorrichtung 1010.
  • Die Vorrichtung 1010 kann jede elektronische Vorrichtung umfassen, die Informationen für das Webservices-System 1020 zu empfangen, zu verarbeiten und zu senden vermag. Beispiele einer elektronischen Vorrichtung können ohne Beschränkung umfassen: eine Client-Vorrichtung, einen PDA (Personal Digital Assistant), eine mobile Rechenvorrichtung, ein Smartphone, ein Funktelefon, E-Book-Reader, eine Nachrichtenübermittlungsvorrichtung, einen Computer, einen Personal Computer (PC), einen Desktop-Computer, einen Laptop-Computer, einen Notebook-Computer, einen Netbook-Computer, einen Handheld-Computer, einen Tablet-Computer, einen Server, ein Server-Array oder eine Serverfarm, einen Web-Server, einen Netzwerkserver, einen Internet-Server, eine Workstation, eine Netzwerkeinrichtung, eine Web-Einrichtung, ein verteiltes Rechensystem, Mehrprozessorsysteme, prozessorbasierte Systeme, Unterhaltungselektronik, programmierbare Unterhaltungselektronik, Spielevorrichtungen, Fernseher, eine Set-Top-Box, einen Wireless Access Point, eine Basisstation, eine Teilnehmerstation, ein mobiles Teilnehmerzentrum, eine Funknetzwerksteuereinrichtung, einen Router, einen Hub, ein Gateway, eine Brücke, einen Switch, eine Maschine oder Kombinationen davon. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Die Vorrichtung 1010 kann Verarbeitungsoperationen oder Logik für das Webservices-System 1020 unter Verwendung einer Verarbeitungskomponente 1030 ausführen. Die Verarbeitungskomponente 1030 kann verschiedene Hardware-Elemente, Software-Elemente oder eine Kombination aus beidem umfassen. Beispiele für Hardware-Elemente können umfassen: Vorrichtungen, Logikvorrichtungen, Bauteile, Prozessoren, Mikroprozessoren, Schaltungen, Prozessorschaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren usw.), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC, Application Specific Integrated Circuits), programmierbare Logik-Schaltungen (PLD, Programmable Logic Devices), digitale Signalprozessoren (DSP), FPGA (Field Programmable Gate Arrays), Speichereinheiten, Logikgatter, Register, Halbleiterbauteile, Chips, Mikrochips, Chipsätze usw. Beispiele für Software-Elemente können umfassen: Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Softwareentwicklungsprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Programmierschnittstellen (API, Application Programming Interfaces), Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon. Das Bestimmen, ob eine Ausführungsform unter Nutzung von Hardware-Elementen und/oder Software-Elementen implementiert ist, kann gemäß einer beliebigen Anzahl von Faktoren wie zum Beispiel gewünschte Rechengeschwindigkeit, Leistungspegel, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und sonstigen Auslegungs- oder Leistungsbeschränkungen variieren, wie es für eine gegebene Implementierung erwünscht ist.
  • Die Vorrichtung 1010 kann Kommunikationsoperationen oder Logik für das Webservices-System 1020 unter Verwendung einer Kommunikationskomponente 1040 ausführen. Die Kommunikationskomponente 1040 kann beliebige gut bekannte Kommunikationstechniken und -protokolle implementieren wie zum Beispiel Techniken, die zur Verwendung mit paketvermittelten Netzen (z. B. öffentlichen Netzwerken wie dem Internet, privaten Netzwerken wie einem Unternehmens-Intranet usw.), leitungsvermittelten Netzen (z. B. dem öffentlichen durchgeschalteten Telefonnetz) oder einer Kombination von paketvermittelten Netzen und leitungsvermittelten Netzen (mit geeigneten Gateways und Umsetzern) geeignet sind. Die Kommunikationskomponente 1040 kann verschiedene Arten von Standardkommunikationselementen umfassen wie zum Beispiel eine oder mehrere Kommunikationsschnittstellen, Netzwerkschnittstellen, Netzwerkkarten (NIC, Network Interface Cards), Radios, drahtlose Sender/Empfänger (Transceiver), drahtgebundene und/oder drahtlose Kommunikationsmedien, physikalische Verbinder usw. Beispielsweise und nicht einschränkend können Kommunikationsmedien 1009, 1049 drahtgebundene Kommunikationsmedien und drahtlose Kommunikationsmedien umfassen. Beispiele für drahtgebundene Kommunikationsmedien können einen Draht, ein Kabel, Metallleitungen, Leiterplatten (PCB, Printed Circuit Board), Rückplatten, Switch-Fabrics, ein Halbleitermaterial, eine Twisted-Pair-Leitung, ein Koaxialkabel, Faseroptik, ein propagiertes Signal usw. umfassen. Beispiele für drahtlose Kommunikationsmedien können akustische, Funkfrequenz-(RF, Radio Frequency)-Spektrum-, Infrarot- und andere drahtlose Medien umfassen.
  • Die Vorrichtung 1010 kann mit anderen Vorrichtungen 1005, 1045 über Kommunikationsmedien 1009 bzw. 1049 unter Nutzung von Kommunikationssignalen 1007 bzw. 1047 mittels der Kommunikationskomponente 1040 kommunizieren. Die Vorrichtungen 1005, 1045 können bezüglich der Vorrichtung 1010 intern oder extern sein, wie es für eine gegebene Implementierung erwünscht ist.
  • Beispielsweise kann Vorrichtung 1005 einer Client-Vorrichtung, wie zum Beispiel einem von einem Benutzer verwendeten Telefon, entsprechen. Über Medien 1009 gesendete Signale 1007 können daher die Kommunikation zwischen dem Telefon und dem Webservices-System 1020 umfassen, in dem das Telefon eine Anfrage sendet und als Reaktion eine Webseite oder andere Daten empfängt.
  • Vorrichtung 1045 kann einer zweiten Benutzervorrichtung entsprechen, die von einem zweiten Benutzer, der ein anderer als der vorstehend beschriebene erste Benutzer ist, verwendet wird. In einer Ausführungsform kann Vorrichtung 1045 Informationen an das Webservices-System 1020 unter Nutzung von über Medien 1049 gesendeten Signalen 1047 übergeben, um eine Aufforderung an den ersten Benutzer, den durch Webservices-System 1020 angebotenen Diensten beizutreten, zu erstellen. Beispielsweise können, wenn Webservices-System 1020 einen Social-Networking-Dienst umfasst, die als Signale 1047 gesendeten Informationen einen Namen und Kontaktinformationen für den ersten Benutzer umfassen, wobei die Kontaktinformationen eine Telefonnummer oder andere Informationen beinhalten, die später durch das Webservices-System 1020 zum Erkennen einer eingehenden Anfrage von dem Benutzer verwendet werden. In anderen Ausführungsformen kann Vorrichtung 1045 einer Vorrichtung entsprechen, die von einem anderen Benutzer, der ein Freund des ersten Benutzers auf einem Social-Networking-Dienst ist, genutzt wird, wobei die Signale 1047 Statusinformationen, Neuigkeiten, Bilder, Kontaktinformationen oder andere Social-Networking-Informationen umfassen, die schließlich zur Betrachtung durch den ersten Benutzer als Teil der Social-Networking-Funktionalität des Webservices-Systems 1020 an Vorrichtung 1005 übertragen werden.
  • 11 stellt ein Blockdiagramm eines verteilten Systems 1100 dar. Das verteilte System 1100 kann Teile der Struktur und/oder Operationen für die offenbarten Ausführungsformen über mehrere Recheneinheiten verteilen. Beispiele für verteiltes System 1100 können ohne Einschränkung umfassen: eine Client-Server-Architektur, eine Drei-Schichten-Architektur (3-Tier), eine N-Schichten-Architektur (N-Tier), eine eng gekoppelte Architektur oder Clusterarchitektur, eine Peer-to-Peer-Architektur, eine Master-Slave-Architektur, eine Shared-Database-Architektur und andere Arten verteilter Systeme. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Das verteilte System 1100 kann eine Client-Vorrichtung 1110 und eine Server-Vorrichtung 1140 umfassen. Im Allgemeinen können die Client-Vorrichtung 1110 und die Server-Vorrichtung 1140 die gleichen wie oder ähnlich der Client-Vorrichtung 1010, wie mit Bezug auf 10 beschrieben, sein. Beispielsweise können das Client-System 1110 und das Server-System 1140 jeweils eine Verarbeitungskomponente 1120, 1150 und eine Kommunikationskomponente 1130, 1160 aufweisen, die die gleichen wie oder ähnlich der Verarbeitungskomponente 1030 bzw. der Kommunikationskomponente 1040, wie mit Bezug auf 10 beschrieben, sind. In einem weiteren Beispiel können die Vorrichtungen 1110, 1140 über Kommunikationsmedien 1105 unter Nutzung von Kommunikationssignalen 1107 mittels der Kommunikationskomponenten 1130, 1160 kommunizieren.
  • Die Client-Vorrichtung 1110 kann ein oder mehrere Client-Programme umfassen oder nutzen, die zum Ausführen verschiedener Methoden gemäß den verschiedenen Ausführungsformen arbeiten. In einer Ausführungsform beispielsweise kann die Client-Vorrichtung 1110 einige mit Bezug auf 8 beschriebene Schritte umsetzen.
  • Die Server-Vorrichtung 1140 kann ein oder mehrere Server-Programme umfassen oder nutzen, die zum Ausführen verschiedener Methoden gemäß den verschiedenen Ausführungsformen arbeiten. In einer Ausführungsform beispielsweise kann die Server-Vorrichtung 1140 einige mit Bezug auf 8 beschriebene Schritte umsetzen.
  • 12 stellt eine Ausführungsform einer beispielhaften Rechenarchitektur 1200 dar, die für die Implementierung verschiedener Ausführungsformen, wie zuvor beschrieben, geeignet ist. In einer Ausführungsform kann die Rechenarchitektur 1200 eine elektronische Vorrichtung umfassen oder als Teil davon realisiert sein. Beispiele für eine elektronische Vorrichtung können die hier beschriebenen umfassen. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Wie in dieser Anmeldung verwendet, sind die Begriffe „System“ und „Komponente“ dazu bestimmt, sich auf eine computerbezogene Einheit, entweder Hardware, eine Kombination aus Hard- und Software, Software oder Software in Ausführung, zu beziehen, wofür Beispiele durch die beispielhafte Rechenarchitektur 1200 bereitgestellt werden. Beispielsweise kann eine Komponente ein auf einem Prozessor ablaufender Prozess, ein Prozessor, ein Festplattenlaufwerk, mehrere Speicherlaufwerke (optischer und/oder magnetischer Speichermedien), ein Objekt, ein ausführbares Element, ein Ausführungs-Thread, ein Programm und/oder ein Computer sein, ist aber nicht darauf beschränkt. Zur Veranschaulichung können sowohl eine auf einem Server ablaufende Anwendung als auch der Server eine Komponente sein. Eine oder mehrere Komponenten können sich in einem Prozess und/oder Ausführungs-Thread befinden und eine Komponente kann auf einem Computer lokalisiert und/oder zwischen zwei oder mehreren Computern verteilt sein. Ferner können Komponenten durch verschiedene Typen von Kommunikationsmedien zum Koordinieren von Operationen miteinander kommunikativ gekoppelt sein. Die Koordinierung kann den unidirektionalen oder den bidirektionalen Austausch von Informationen einschließen. Beispielsweise können die Komponenten Informationen in Form von über die Kommunikationsmedien übertragenen Signalen übermitteln. Die Informationen können als verschiedenen Signalleitungen zugewiesene Signale implementiert sein. Bei solchen Zuweisungen ist jede Nachricht ein Signal. Jedoch können weitere Ausführungsformen alternativ Datennachrichten nutzen. Solche Datennachrichten können über verschiedene Verbindungen gesendet werden. Beispielhafte Verbindungen umfassen parallele Schnittstellen, serielle Schnittstellen und Busschnittstellen.
  • Die Rechenarchitektur 1200 umfasst verschiedene gemeinsame Rechenelemente wie zum Beispiel einen oder mehrere Prozessoren, Mehrkernprozessoren, Koprozessoren, Speichereinheiten, Chipsätze, Controller, Peripheriegeräte, Schnittstellen, Oszillatoren, Zeitgeräte, Videokarten, Audiokarten, Multimedia-Eingabe/Ausgabe-(I/O)-Komponenten, Energieversorgungen usw. Die Ausführungsformen sind jedoch nicht auf die Implementierung durch die Rechenarchitektur 1200 beschränkt.
  • Wie in 12 dargestellt, umfasst die Rechenarchitektur 1200 eine Verarbeitungseinheit 1204, einen Systemspeicher 1206 und einen Systembus 1208. Die Verarbeitungseinheit 1204 kann einer von verschiedenen handelsüblichen Prozessoren sein, einschließlich ohne Einschränkung AMD® Athlon®, Duron® und Opteron® Prozessoren; eingebettete und sichere ARM®-Anwendungsprozessoren; IBM® und Motorola® DragonBall® und PowerPC® Prozessoren; IBM und Sony® Cell-Prozessoren; Intel® Celeron®, Core (2) Duo®, Itanium®, Pentium@, Xeon® und XScale® Prozessoren und ähnlicher Prozessoren. Duale Mikroprozessoren, Mehrkernprozessoren und andere Multiprozessorarchitekturen können ebenfalls als die Verarbeitungseinheit 1204 genutzt werden.
  • Der Systembus 1208 stellt eine Schnittstelle für Systemkomponenten, einschließlich, jedoch nicht darauf beschränkt, des Systemspeichers 1206, zu der Verarbeitungseinheit 1204 bereit. Der Systembus 1208 kann ein beliebiger von verschiedenen Typen von Busstruktur sein, welche ferner unter Verwendung einer beliebigen aus einer Vielzahl von handelsüblichen Busarchitekturen mit einem Speicherbus (mit oder ohne einem Speichercontroller), einem Peripheriebus und einem lokalen Bus verbunden sein kann. Schnittstellenadapter können mit dem Systembus 1208 mittels einer Slot-Architektur verbunden sein. Beispielhafte Slot-Architekturen können ohne Einschränkung umfassen: Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI-Express, Personal Computer Memory Card International Association (PCMCIA) und dergleichen.
  • Die Rechenarchitektur 1200 kann verschiedene Herstellungsgegenstände umfassen oder implementieren. Ein Herstellungsgegenstand kann ein computerlesbares Speichermedium zum Speichern von Logik umfassen. Beispiele für ein computerlesbares Speichermedium können jedes greifbare Medium umfassen, das elektronische Daten zu speichern vermag, einschließlich flüchtigen Speichers oder nicht flüchtigen Speichers, entnehmbaren oder nicht entnehmbaren Speichers, löschbaren oder nicht löschbaren Speichers, beschreibbaren oder wiederbeschreibbaren Speichers usw. Beispiele für Logik können ausführbare Computerprogrammanweisungen umfassen, die unter Verwendung jeder geeigneten Art von Code, wie zum Beispiel Quellcode, kompilierter Code, interpretierter Code, ausführbarer Code, statischer Code, dynamischer Code, objektorientierter Code, visueller Code und dergleichen, implementiert werden. Ausführungsformen können auch mindestens teilweise als Anweisungen implementiert werden, die in oder auf einem nicht transitorischen computerlesbaren Medium enthalten sind, das von einem oder mehreren Prozessoren zum Ermöglichen der Ausführung der hier beschriebenen Operationen gelesen und ausgeführt werden kann.
  • Der Systemspeicher 1206 kann verschiedene Arten computerlesbarer Speichermedien in Form einer oder mehrerer Speichereinheiten mit höherer Geschwindigkeit umfassen, wie zum Beispiel Nurlesespeicher (ROM), Speicher mit wahlfreiem Zugriff (RAM), dynamischen RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronen DRAM (SDRAM), statischen RAM (SRAM), programmierbaren ROM (PROM), löschbaren programmierbaren ROM (EPROM), elektrisch löschbarer programmierbarer ROM (EEPROM), Flash-Speicher, Polymerspeicher wie etwa ferroelektrischen Polymerspeicher, Ovonic-Speicher, Phasenwechsel- oder ferroelektrischen Speicher, Silicium-Oxid-Nitrid-Oxid-Silicium-(SONOS)-Speicher, Magnetkarten oder optische Karten, eine Anordnung von Vorrichtungen wie etwa RAID-(Redundant Array of Independent Disks)-Laufwerke, Solid-State-Speichervorrichtungen (z. B. USB-Speicher, Solid-State-Drives (SSD)) und jede andere Art von Speichermedien, die zum Speichern von Informationen geeignet sind. In der in 12 gezeigten dargestellten Ausführungsform kann der Systemspeicher 1206 einen nicht-flüchtigen Speicher 1210 und/oder einen flüchtigen Speicher 1213 umfassen. Ein Basic-Input/Output-System (BIOS) kann in dem nicht-flüchtigen Speicher 1210 gespeichert sein.
  • Der Computer 1202 kann verschiedene Arten computerlesbarer Speichermedien in Form einer oder mehrerer Speichereinheiten mit niedrigerer Geschwindigkeit umfassen, einschließlich eines internen (oder externen) Festplattenlaufwerks (HDD) 1214, eines magnetischen Diskettenlaufwerks (FDD) 1216 zum Lesen von einer entfernbaren Magnetplatte 1018 oder zum darauf Schreiben und eines optischen Plattenlaufwerks 1220 zum Lesen von einer entfernbaren optischen Disk 1222 (z.B. CD-ROM, DVD oder Blue-ray) oder zum darauf Schreiben. Das HDD 1214, das FDD 1216 und optisches Plattenlaufwerk 1220 können mit dem Systembus 1208 mittels einer HDD-Schnittstelle 1224, einer FDD-Schnittstelle 1226 bzw. einer optischen Laufwerksschnittstelle 1228 verbunden sein. Die HDD-Schnittstelle 1224 für externe Laufwerksimplementierungen kann mindestens eine von Universal Serial Bus-(USB)- und IEEE 1394-Schnittstellentechnologien oder beide umfassen.
  • Die Laufwerke und zugeordneten computerlesbaren Medien stellen eine flüchtige und/oder nicht flüchtige Speicherung von Daten, Datenstrukturen, computerausführbare Anweisungen usw. bereit. Beispielsweise kann eine Anzahl von Programmmodulen in den Laufwerken und Speichereinheiten 1210, 1213 gespeichert werden, einschließlich eines Betriebssystems 1230, eines oder mehrerer Anwendungsprogramme 1232, anderer Programmmodule 1234 und Programmdaten 1236. In einer Ausführungsform können das eine oder die mehreren Anwendungsprogramme 1232, andere Programmmodule 1234 und Programmdaten 1236 beispielsweise die verschiedenen Anwendungen und/oder Komponenten zum Implementieren der offenbarten Ausführungsformen umfassen.
  • Ein Benutzer kann Befehle und Informationen in den Computer 1202 über eine oder mehrere drahtgebundene/drahtlose Eingabevorrichtungen, beispielsweise eine Tastatur 1238 und eine Zeigervorrichtung wie etwa eine Maus 1240, eingeben. Andere Eingabevorrichtungen können Mikrofone, Infrarot-(IR)-Fernsteuerungen, Funkfrequenz-(RF)-Fernsteuerungen, Gamepads, Eingabestifte, Kartenleser, Dongles, Fingerabdruckleser, Handschuhe, Grafik-Tablets, Joysticks, Tastaturen, Retina-Leser, berührungsempfindliche Bildschirme (z. B. kapazitive, resistive etc.), Trackballs, Trackpads, Sensoren, Stifte und dergleichen umfassen. Diese und andere Eingabevorrichtungen sind häufig mit der Verarbeitungseinheit 1204 über eine Eingabevorrichtungsschnittstelle 1242, die mit dem Systembus 1208 gekoppelt ist, verbunden, können aber durch andere Schnittstellen, wie zum Beispiel einen parallelen Port, einen seriellen IEEE 1394 Port, einen Game Port, einen USB Port, eine IR Schnittstelle usw. verbunden sein.
  • Eine Anzeigeeinrichtung 1244 ist ebenfalls mit dem Systembus 1208 über eine Schnittstelle, wie zum Beispiel einen Videoadapter 1246, verbunden. Die Anzeigeeinrichtung 1244 kann hinsichtlich des Computers 1202 intern oder extern sein. Zusätzlich zur Anzeigeeinrichtung 1244 umfasst ein Computer typischerweise andere Peripherieausgabevorrichtungen wie etwa Lautsprecher, Drucker usw.
  • Der Computer 1202 kann in einer vernetzten Umgebung unter Verwendung von logischen Verbindungen mittels drahtgebundener und/oder drahtloser Kommunikation mit einem oder mehreren Remote- Computern, wie zum Beispiel einem Remote-Computer 1248, arbeiten. Der Remote-Computer 1248 kann eine Workstation, ein Servercomputer, ein Router, ein Personal Computer, ein tragbarer Computer, eine mikroprozessorbasierte Unterhaltungseinrichtung, eine Peer-Vorrichtung oder ein anderer gemeinsamer Netzknoten sein und umfasst typischerweise viele der Elemente oder alle Elemente, die in Bezug auf den Computer 1202 beschrieben sind, obgleich der Kürze halber nur eine Memory-/Speichervorrichtung 1250 dargestellt ist. Die dargestellten logischen Verbindungen umfassen eine drahtgebundene/drahtlose Verbindungsmöglichkeit zu einem lokalen Netz (LAN) 1252 und/oder größeren Netzen beispielsweise einem Weitverkehrsnetz (WAN) 1254. Solche LAN- und WAN-Netzwerkumgebungen sind in Büros und Unternehmen alltäglich und ermöglichen unternehmensweite Computernetze, wie zum Beispiel Intranets, von denen alle mit einem globalen Kommunikationsnetz, beispielsweise dem Internet, verbunden sein können.
  • Bei Verwendung in einer LAN-Netzwerkumgebung ist der Computer 1202 mit dem LAN 1252 über eine drahtgebundene und/oder drahtlose Kommunikationsnetzschnittstelle oder einen Adapter 1256 verbunden. Der Adapter 1256 kann drahtgebundene und/oder drahtlose Kommunikation mit dem LAN 1252 ermöglichen, das auch einen Wireless Access Point umfassen kann, der darauf zum Kommunizieren mit der drahtlosen Funktionalität des Adapters 1256 angeordnet ist.
  • Bei Verwendung in einer WAN-Netzwerkumgebung kann der Computer 1202 ein Modem 1258 umfassen oder er ist mit einem Kommunikationsserver auf dem WAN 1254 verbunden oder er verfügt über andere Mittel zum Herstellen von Kommunikationsverbindungen über das WAN 1254, zum Beispiel mittels des Internets. Das Modem 1258, das intern oder extern und eine drahtgebundene und/oder drahtlose Vorrichtung sein kann, ist mit dem Systembus 1208 über die Eingabevorrichtungsschnittstelle 1242 verbunden. In einer Netzwerkumgebung können bezogen auf den Computer 1202 dargestellte Programmodule oder Teile davon in der entfernten Memory-/Speichervorrichtung 1250 gespeichert werden. Es lässt sich nachvollziehen, dass die gezeigten Netzwerkverbindungen beispielhaft sind und andere Mittel der Herstellung einer Kommunikationsverbindung zwischen den Computern genutzt werden können.
  • Der Computer 1202 ist dazu betreibbar, mit drahtgebundenen und drahtlosen Vorrichtungen oder Einheiten zu kommunizieren, die die IEEE 802-Standardfamilie nutzen, wie zum Beispiel drahtlose Vorrichtungen, die funktionswirksam in drahtloser Kommunikation angeordnet sind (z. B. IEEE 802.11-Overthe-Air-Modulationstechniken). Dies umfasst unter anderem mindestens Wi-Fi- (oder Wireless Fidelity), WiMax- und Bluetooth™-Drahtlostechnologien. Somit kann die Kommunikation eine vordefinierte Struktur wie bei einem konventionellen Netz oder einfach eine Ad-hoc-Kommunikation zwischen mindestens zwei Vorrichtungen sein. Wi-Fi-Netze nutzen als IEEE 802.11x (a, b, g, n usw.) bezeichnete Funktechnologien zum Bereitstellen sicherer, zuverlässiger und schneller drahtloser Verbindungsmöglichkeiten. Ein Wi-Fi-Netz kann dazu verwendet werden, Computer miteinander, mit dem Internet und mit drahtgebundenen Netzen (die IEEE 802.3-bezogene Medien und Funktionen nutzen) zu verbinden.
  • 13 stellt ein Blockdiagramm einer beispielhaften Kommunikationsarchitektur 1300 dar, die für die Implementierung verschiedener Ausführungsformen, wie zuvor beschrieben, geeignet ist. Die Kommunikationsarchitektur 1300 umfasst verschiedene gemeinsame Kommunikationselemente wie zum Beispiel einen Sender, einen Empfänger, einen Transceiver, ein Radio, eine Netzwerkschnittstelle, einen Basisbandprozessor, eine Antenne, Verstärker, Filter, Energieversorgungseinrichtungen usw. Die Ausführungsformen sind jedoch nicht auf die Implementierung durch die Kommunikationsarchitektur 1300 beschränkt.
  • Wie in 13 dargestellt, umfasst die Kommunikationsarchitektur 1300 einen oder mehrere Clients 1310 und Server 1340. Die Clients 1310 können beispielsweise die Client-Vorrichtung 1310 realisieren. Die Server 1340 können beispielsweise die Server-Vorrichtung 1340 realisieren. Die Clients 1310 und die Server 1340 sind funktionsmäßig mit einem oder mehreren entsprechenden Client-Datenspeichern 1320 und Server-Datenspeichern 1350 verbunden, die zum Speichern von Informationen, die bezüglich der jeweiligen Clients 1310 und Server 1340 lokal sind, wie zum Beispiel Cookies und/oder damit verbundenen Kontextinformationen eingesetzt werden können.
  • Die Clients 1310 und die Server 1340 können unter Nutzung eines Kommunikationsframeworks 1330 Informationen untereinander austauschen. Das Kommunikationsframework 1330 kann beliebige gut bekannte Kommunikationstechniken und -protokolle implementieren. Das Kommunikationsframework 1330 kann als ein paketvermitteltes Netz (z. B. öffentliche Netzwerke wie das Internet, private Netzwerke wie ein Unternehmens-Intranet usw.), ein leitungsvermitteltes Netz (z. B. das öffentliche durchgeschaltete Telefonnetz) oder eine Kombination von paketvermittelten Netzen und leitungsvermittelten Netzen (mit geeigneten Gateways und Umsetzern) implementiert sein.
  • Das Kommunikationsframework 1330 kann verschiedene Netzwerkschnittstellen implementieren, die dazu ausgebildet sind, ein Kommunikationsnetz zu akzeptieren, damit zu kommunizieren und sich damit zu verbinden. Eine Netzwerkschnittstelle kann als eine spezialisierte Form einer Eingabe-/Ausgabe-Schnittstelle angesehen werden. Netzwerkschnittstellen können Verbindungsprotokolle verwenden, einschließlich ohne Einschränkung Direct Connect, Ethernet (z. B. Thick, Thin, Twisted Pair 10/100/1000 Base T und dergleichen), Tokenring, Drahtlosnetzwerkschnittstellen, Mobilfunknetzschnittstellen, IEEE 802.11 a-x-Netzwerkschnittstellen, IEEE 802.16-Netzwerkschnittstellen, IEEE 802.20-Netzwerkschnittstellen und dergleichen. Ferner können mehrere Netzwerkschnittstellen dazu verwendet werden, mit verschiedenen Arten von Kommunikationsnetzen in Verbindung zu treten. Beispielsweise können mehrere Netzwerkschnittstellen dafür eingesetzt werden, die Kommunikation über Broadcast-, Multicast- und Unicast-Netze zu ermöglichen. Sollten Verarbeitungsanforderungen eine höhere Geschwindigkeit und Kapazität vorschreiben, können verteilte Netzwerkcontroller-Architekturen gleichermaßen dafür eingesetzt werden, die Kommunikationsbandbreite, die durch Clients 1310 und die Server 1340 gefordert wird, zusammenzufassen, lastauszugleichen oder auf sonstige Weise zu erhöhen. Ein Kommunikationsnetz kann ein beliebiges von als auch die Kombination aus drahtgebundenen und/oder drahtlosen Netzwerken sein, einschließlich ohne Einschränkung einer direkten Zusammenschaltung, einer gesicherten aufgabenspezifischen Verbindung, eines privaten Netzwerks (z. B. eines Unternehmens-Intranets), eines öffentlichen Netzwerks (z. B. des Internets), eines Personal Area Network (PAN), eines lokalen Netzes (LAN), eines Metropolitan Area Network (MAN), eines Operating Missions as Nodes on the Internet (OMNI), eines Weitverkehrsnetzes (WAN), eines drahtlosen Netzwerks, eines Mobilfunknetzes und anderer Kommunikationsnetze.
  • Einige Ausführungsformen können unter Verwendung des Ausdrucks „eine bestimmte Ausführungsform“ oder „eine Ausführungsform“ zusammen mit ihren Ableitungen beschrieben werden. Diese Begriffe bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben werden, in mindestens einer Ausführungsform enthalten ist. Das Auftreten der Formulierung „in einer Ausführungsform“ an verschiedenen Stellen in der Beschreibung bezieht sich nicht notwendigerweise stets auf dieselbe Ausführungsform. Ferner können einige Ausführungsformen unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben werden. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander vorgesehen. Beispielsweise können einige Ausführungsformen unter Verwendung der Begriffe „verbunden“ und/oder „gekoppelt“ beschrieben werden, um anzuzeigen, dass zwei oder mehr Elemente miteinander in direktem physikalischen oder elektrischen Kontakt stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch miteinander zusammenwirken oder interagieren.
  • Unter allgemeiner Bezugnahme auf hier verwendete Notationen und Nomenklatur können die hier aufgeführten ausführlichen Beschreibungen im Sinne von auf einem Computer oder einem Computernetzwerk ausgeführten Programmprozeduren dargestellt werden. Diese prozeduralen Beschreibungen und Repräsentationen werden von Fachleuten verwendet, um den Gegenstand ihrer Arbeit anderen Fachleuten so effizient wie möglich zu vermitteln.
  • Eine Prozedur wird hier und allgemein als eine in sich konsistente Folge von Operationen angesehen, die zu einem gewünschten Ergebnis führen. Diese Operationen sind jene, die physikalische Manipulationen physikalischer Größen erfordern. Üblicherweise, jedoch nicht notwendigerweise, weisen diese Größen die Form elektrischer, magnetischer oder optischer Signale auf, die es vermögen, gespeichert, übertragen, kombiniert, verglichen und auf andere Art und Weise manipuliert zu werden. Es erweist sich zuweilen als zweckdienlich, hauptsächlich aus Gründen des allgemeinen Gebrauchs, sich auf diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen o. ä. zu beziehen. Es ist jedoch zu beachten, dass all diese und ähnliche Begriffe den adäquaten physikalischen Größen zuzuordnen sind und lediglich auf diese Größen angewendete günstige Bezeichnungen sind.
  • Ferner werden die ausgeführten Manipulationen häufig mit Begriffen wie zum Beispiel Hinzufügen oder Vergleichen bezeichnet, welche üblicherweise mit von einem menschlichen Anwender durchgeführten geistigen Operationen in Zusammenhang gebracht werden. Keine derartige Fähigkeit eines menschlichen Anwenders ist bei irgendeiner der hier beschriebenen Operationen, die Teil einer oder mehrerer Ausführungsformen sind, notwendig oder in den meisten Fällen wünschenswert. Vielmehr sind die Operationen maschinelle Operationen. Nützliche Maschinen zum Ausführen von Operationen verschiedener Ausführungsformen umfassen digitale Universalcomputer oder ähnliche Geräte.
  • Verschiedene Ausführungsformen betreffen auch Vorrichtungen oder Systeme zum Ausführen dieser Operationen. Diese Vorrichtungen können speziell für den geforderten Zweck konstruiert sein oder sie können einen als durch ein in dem Computer gespeichertes Computerprogramm selektiv aktivierten oder neu konfigurierten Universalcomputer aufweisen. Die hier vorgestellten Prozeduren beziehen sich nicht inhärent auf einen bestimmten Computer oder andere Vorrichtungen. Es können verschiedene Universalmaschinen mit gemäß den hier vorgestellten Lehren geschriebenen Programmen verwendet werden oder es kann sich als zweckdienlich erweisen, spezialisiertere Vorrichtungen zum Ausführen der notwendigen Verfahrensschritte zu konstruieren. Die erforderliche Struktur für eine Vielzahl dieser Maschinen wird aus der gegebenen Beschreibung hervorgehen.
  • In der vorstehenden Ausführlichen Beschreibung ist zu erkennen, dass verschiedene Merkmale zum Zwecke einer schlankeren Offenbarung in einer einzelnen Ausführungsform zusammengefasst sind. Diese Methodik der Offenbarung ist nicht im Sinne einer Absicht zu interpretieren, dass die beanspruchten Ausführungsformen mehr Merkmale erfordern als ausdrücklich in jedem Anspruch aufgeführt sind. Vielmehr liegt der erfinderische Gegenstand in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform, wie es die folgenden Ansprüche wiedergeben. Somit werden die folgenden Ansprüche hiermit in die Ausführliche Beschreibung einbezogen, wobei jeder Anspruch für sich selbst als eine separate Ausführungsform steht. In den angefügten Ansprüchen werden die Begriffe „einschließlich“ bzw. „enthalten(d)“ und „in dem/der/denen“ als die Entsprechungen in leicht verständlicher Sprache der jeweiligen Begriffe „aufweisen(d)“ bzw. „umfassen(d)“ und „wobei“ verwendet. Zudem werden die Begriffe „erster“, „zweiter“, „dritter“ usw. lediglich als Bezeichnungen verwendet und sind nicht dafür vorgesehen, zahlenmäßige Anforderungen bezüglich ihrer Objekte zu erheben.
  • Was vorstehend beschrieben wurde, umfasst Beispiele der offenbarten Architektur. Selbstverständlich ist es nicht möglich, jede denkbare Kombination von Komponenten und/oder Methoden zu beschreiben, aber ein Durchschnittsfachmann vermag zu erkennen, dass viele weitere Kombinationen und Permutationen möglich sind.
    • Beispiel 1. Ein System zum Verbinden einer vertrauenswürdigen Ausführungsumgebung mit einem Speicher über eine Schnittstelle, aufweisend: einen den Speicher umfassenden Prozessor, dazu ausgebildet, mit der vertrauenswürdigen Ausführungsumgebung zu interagieren, wobei der Prozessor dazu ausgebildet ist, der vertrauenswürdigen Ausführungsumgebung anzuzeigen, dass der Speicher dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt; eine Anweisung von der vertrauenswürdigen Ausführungsumgebung zu empfangen; und eine Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durchzusetzen.
    • Beispiel 2. Das System von Beispiel 1, wobei der Speicher ein nicht flüchtiger Speicher mit wahlfreiem Zugriff (NVRAM) ist.
    • Beispiel 3. Das System von Beispiel 1, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durch ein System-BIOS erstellt wird.
    • Beispiel 4. Das System von Beispiel 1, wobei die vertrauenswürdige Ausführungsumgebung ein Software-Guard-Extensions-(SGX)-System ist.
    • Beispiel 5. Das System von Beispiel 1, wobei die vertrauenswürdige Ausführungsumgebung ein Virtual-Machine-Manager-(VMM)-System ist.
    • Beispiel 6. Das System von Beispiel 1, wobei der Speicher eine Mehrzahl von Partitionen umfasst, wobei jede der Mehrzahl von Partitionen einer vertrauenswürdigen Ausführungsumgebung statisch zugeordnet ist.
    • Beispiel 7. Das System von Beispiel 1, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers Informationen bezüglich Speichern und Wiederherstellen für eine oder mehrere Enklaven enthält.
    • Beispiel 8. Das System von Beispiel 1, wobei die Zugriffssteuerungsrichtlinie insbesondere der vertrauenswürdigen Ausführungsumgebung zugeordnet ist.
    • Beispiel 9. Das System von Beispiel 1, wobei die Zugriffssteuerungsrichtlinie insbesondere der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers zugeordnet ist.
    • Beispiel 10. Das System von Beispiel 1, wobei die Zugriffssteuerungsrichtlinie eine Leseanweisung zum Lesen von gespeicherten Daten in der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers umfasst.
    • Beispiel 11. Das System von Beispiel 1, wobei die Zugriffssteuerungsrichtlinie eine Schreibanweisung zum Schreiben von Daten in die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers umfasst.
    • Beispiel 12. Das System von Beispiel 1, wobei die Zugriffssteuerungsrichtlinie eines oder mehr als eines von einem Identifizierer einer vertrauenswürdigen Ausführungsumgebung, Anweisungen einer vertrauenswürdigen Ausführungsumgebung und einem Bereich von Speicherorten, die einer vertrauenswürdigen Ausführungsumgebung zugeordnet sind, umfasst.
    • Beispiel 13. Ein computerimplementiertes Verfahren zum Verbinden einer vertrauenswürdigen Ausführungsumgebung mit einem Speicher über eine Schnittstelle, aufweisend: das Anzeigen, durch einen Prozessor, der vertrauenswürdigen Ausführungsumgebung, dass der Speicher des Prozessors dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt; das Empfangen einer Anweisung von der vertrauenswürdigen Ausführungsumgebung; und das Durchsetzen einer Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers.
    • Beispiel 14. Das computerimplementierte Verfahren von Beispiel 13, wobei der Speicher ein nicht flüchtiger Speicher mit wahlfreiem Zugriff (NVRAM) ist.
    • Beispiel 15. Das computerimplementierte Verfahren von Beispiel 13, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durch ein System-BIOS erstellt wird.
    • Beispiel 16. Das computerimplementierte Verfahren von Beispiel 13, wobei die vertrauenswürdige Ausführungsumgebung ein Software-Guard-Extensions-(SGX)-System ist.
    • Beispiel 17. Das computerimplementierte Verfahren von Beispiel 13, wobei die vertrauenswürdige Ausführungsumgebung ein Virtual-Machine-Manager-(VMM)-System ist.
    • Beispiel 18. Das computerimplementierte Verfahren von Beispiel 13, wobei der Speicher eine Mehrzahl von Partitionen umfasst, wobei jede der Mehrzahl von Partitionen einer vertrauenswürdigen Ausführungsumgebung statisch zugeordnet ist.
    • Beispiel 19. Das computerimplementierte Verfahren von Beispiel 13, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers Informationen bezüglich Speichern und Wiederherstellen für eine oder mehrere Enklaven enthält.
    • Beispiel 20. Das computerimplementierte Verfahren von Beispiel 13, wobei die Zugriffssteuerungsrichtlinie insbesondere der vertrauenswürdigen Ausführungsumgebung zugeordnet ist.
    • Beispiel 21. Das computerimplementierte Verfahren von Beispiel 13, wobei die Zugriffssteuerungsrichtlinie insbesondere der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers zugeordnet ist.
    • Beispiel 22. Das computerimplementierte Verfahren von Beispiel 13, wobei die Zugriffssteuerungsrichtlinie eine Leseanweisung zum Lesen von gespeicherten Daten in der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers umfasst.
    • Beispiel 23. Das computerimplementierte Verfahren von Beispiel 13, wobei die Zugriffssteuerungsrichtlinie eine Schreibanweisung zum Schreiben von Daten in die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers umfasst.
    • Beispiel 24. Das computerimplementierte Verfahren von Beispiel 13, wobei die Zugriffssteuerungsrichtlinie eines oder mehr als eines von einem Identifizierer einer vertrauenswürdigen Ausführungsumgebung, Anweisungen einer vertrauenswürdigen Ausführungsumgebung und einem Bereich von Speicherorten, die einer vertrauenswürdigen Ausführungsumgebung zugeordnet sind, umfasst.
    • Beispiel 25. Ein Gegenstand, der ein nicht flüchtiges computerlesbares Speichermedium umfasst, das Anweisungen zur Ausführung durch Verarbeitungsschaltungsanordnungen einer Rechenvorrichtung zum Verbinden einer vertrauenswürdigen Ausführungsumgebung mit einem Speicher über eine Schnittstelle speichert, wobei die Anweisungen bewirken, dass die Rechenvorrichtung: der vertrauenswürdigen Ausführungsumgebung anzeigt, dass der Speicher des Prozessors dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt; eine Anweisung von der vertrauenswürdigen Ausführungsumgebung empfängt; und eine Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durchsetzt.
    • Beispiel 26. Der Gegenstand von Beispiel 25, wobei der Speicher ein nicht flüchtiger Speicher mit wahlfreiem Zugriff (NVRAM) ist.
    • Beispiel 27. Der Gegenstand von Beispiel 25, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durch ein System-BIOS erstellt wird.
    • Beispiel 28. Das computerimplementierte Verfahren von Beispiel 13, wobei die vertrauenswürdige Ausführungsumgebung ein Software-Guard-Extensions-(SGX)-System ist.
    • Beispiel 29. Der computerimplementierte Verfahren von Beispiel 13, wobei die vertrauenswürdige Ausführungsumgebung ein Virtual-Machine-Manager-(VMM)-System ist.
    • Beispiel 30. Der Gegenstand von Beispiel 25, wobei der Speicher eine Mehrzahl von Partitionen umfasst, wobei jede der Mehrzahl von Partitionen einer vertrauenswürdigen Ausführungsumgebung statisch zugeordnet ist.
    • Beispiel 31. Der Gegenstand von Beispiel 25, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers Informationen bezüglich Speichern und Wiederherstellen für eine oder mehrere Enklaven enthält.
    • Beispiel 32. Der Gegenstand von Beispiel 25, wobei die Zugriffssteuerungsrichtlinie insbesondere der vertrauenswürdigen Ausführungsumgebung zugeordnet ist.
    • Beispiel 33. Der Gegenstand von Beispiel 25, wobei die Zugriffssteuerungsrichtlinie insbesondere der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers zugeordnet ist.
    • Beispiel 34. Der Gegenstand von Beispiel 25, wobei die Zugriffssteuerungsrichtlinie eine Leseanweisung zum Lesen von gespeicherten Daten in der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers umfasst.
    • Beispiel 35. Der Gegenstand von Beispiel 25, wobei die Zugriffssteuerungsrichtlinie eine Schreibanweisung zum Schreiben von Daten in die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers umfasst.
    • Beispiel 36. Der Gegenstand von Beispiel 25, wobei die Zugriffssteuerungsrichtlinie eines oder mehr als eines von einem Identifizierer einer vertrauenswürdigen Ausführungsumgebung, Anweisungen einer vertrauenswürdigen Ausführungsumgebung und einem Bereich von Speicherorten, die einer vertrauenswürdigen Ausführungsumgebung zugeordnet sind, umfasst.
    • Beispiel 37. Eine Rechenvorrichtung zum Verbinden einer vertrauenswürdigen Ausführungsumgebung mit einem Speicher über eine Schnittstelle, aufweisend: eine Einrichtung zum Anzeigen der vertrauenswürdigen Ausführungsumgebung, dass der Speicher des Prozessors dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt; eine Einrichtung zum Empfangen einer Anweisung von der vertrauenswürdigen Ausführungsumgebung; und eine Einrichtung zum Durchsetzen einer Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers.
    • Beispiel 38. Die Rechenvorrichtung von Beispiel 37, wobei der Speicher ein nicht flüchtiger Speicher mit wahlfreiem Zugriff (NVRAM) ist.
    • Beispiel 39. Die Rechenvorrichtung von Beispiel 37, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durch ein System-BIOS erstellt wird.
    • Beispiel 40. Die Rechenvorrichtung von Beispiel 37, wobei die vertrauenswürdige Ausführungsumgebung ein Software-Guard-Extensions-(SGX)-System ist.
    • Beispiel 41. Die Rechenvorrichtung von Beispiel 37, wobei die vertrauenswürdige Ausführungsumgebung ein Virtual-Machine-Manager-(VMM)-System ist.
    • Beispiel 42. Die Rechenvorrichtung von Beispiel 37, wobei der Speicher eine Mehrzahl von Partitionen umfasst, wobei jede der Mehrzahl von Partitionen einer vertrauenswürdigen Ausführungsumgebung statisch zugeordnet ist.
    • Beispiel 43. Die Rechenvorrichtung von Beispiel 37, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers Informationen bezüglich Speichern und Wiederherstellen für eine oder mehrere Enklaven enthält.
    • Beispiel 44. Die Rechenvorrichtung von Beispiel 37, wobei die Zugriffssteuerungsrichtlinie insbesondere der vertrauenswürdigen Ausführungsumgebung zugeordnet ist.
    • Beispiel 45. Die Rechenvorrichtung von Beispiel 37, wobei die Zugriffssteuerungsrichtlinie insbesondere der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers zugeordnet ist.
    • Beispiel 46. Die Rechenvorrichtung von Beispiel 37, wobei die Zugriffssteuerungsrichtlinie eine Leseanweisung zum Lesen von gespeicherten Daten in der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers umfasst.
    • Beispiel 47. Die Rechenvorrichtung von Beispiel 37, wobei die Zugriffssteuerungsrichtlinie eine Schreibanweisung zum Schreiben von Daten in die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers umfasst.
    • Beispiel 48. Die Rechenvorrichtung von Beispiel 37, wobei die Zugriffssteuerungsrichtlinie eines oder mehr als eines von einem Identifizierer einer vertrauenswürdigen Ausführungsumgebung, Anweisungen einer vertrauenswürdigen Ausführungsumgebung und einem Bereich von Speicherorten, die einer vertrauenswürdigen Ausführungsumgebung zugeordnet sind, umfasst.
    • Beispiel 49. Eine Vorrichtung zum Verbinden einer vertrauenswürdigen Ausführungsumgebung mit einem Speicher über eine Schnittstelle, aufweisend: mindestens einen Speicher; mindestens einen Prozessor und Logik, dafür konfiguriert, die vertrauenswürdige Ausführungsumgebung mit dem Speicher über eine Schnittstelle zu verbinden, wobei mindestens ein Teil der Logik in Hardware ausgebildet ist und durch den mindestens einen Prozessor ausgeführt wird, damit die Logik: der vertrauenswürdigen Ausführungsumgebung anzeigt, dass der Speicher des Prozessors dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt; eine Anweisung von der vertrauenswürdigen Ausführungsumgebung empfängt; und eine Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durchsetzt.
    • Beispiel 50. Die Vorrichtung von Beispiel 49, wobei der Speicher ein nicht flüchtiger Speicher mit wahlfreiem Zugriff (NVRAM) ist.
    • Beispiel 51. Die Vorrichtung von Beispiel 49, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durch ein System-BIOS erstellt wird.
    • Beispiel 52. Die Vorrichtung von Beispiel 49, wobei die vertrauenswürdige Ausführungsumgebung ein Software-Guard-Extensions-(SGX)-System ist.
    • Beispiel 53. Die Vorrichtung von Beispiel 49, wobei die vertrauenswürdige Ausführungsumgebung ein Virtual-Machine-Manager-(VMM)-System ist.
    • Beispiel 54. Die Vorrichtung von Beispiel 49, wobei der Speicher eine Mehrzahl von Partitionen umfasst, wobei jede der Mehrzahl von Partitionen einer vertrauenswürdigen Ausführungsumgebung statisch zugeordnet ist.
    • Beispiel 55. Die Vorrichtung von Beispiel 49, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers Informationen bezüglich Speichern und Wiederherstellen für eine oder mehrere Enklaven enthält.
    • Beispiel 56. Die Vorrichtung von Beispiel 49, wobei die Zugriffssteuerungsrichtlinie insbesondere der vertrauenswürdigen Ausführungsumgebung zugeordnet ist.
    • Beispiel 57. Die Vorrichtung von Beispiel, wobei die Zugriffssteuerungsrichtlinie insbesondere der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers zugeordnet ist.
    • Beispiel 58. Die Vorrichtung von Beispiel 49, wobei die Zugriffssteuerungsrichtlinie eine Leseanweisung zum Lesen von gespeicherten Daten in der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers umfasst.
    • Beispiel 59. Die Vorrichtung von Beispiel 49, wobei die Zugriffssteuerungsrichtlinie eine Schreibanweisung zum Schreiben von Daten in die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers umfasst.
    • Beispiel 60. Die Vorrichtung von Beispiel 49, wobei die Zugriffssteuerungsrichtlinie eines oder mehr als eines von einem Identifizierer einer vertrauenswürdigen Ausführungsumgebung, Anweisungen einer vertrauenswürdigen Ausführungsumgebung und einem Bereich von Speicherorten, die einer vertrauenswürdigen Ausführungsumgebung zugeordnet sind, umfasst.

Claims (25)

  1. System zum Verbinden einer vertrauenswürdigen Ausführungsumgebung mit einem Speicher über eine Schnittstelle, das aufweist: einen Prozessor, der den Speicher umfasst, der dazu ausgebildet ist, mit der vertrauenswürdigen Ausführungsumgebung zu interagieren, wobei der Prozessor dazu ausgebildet ist: der vertrauenswürdigen Ausführungsumgebung anzuzeigen, dass der Speicher dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt; eine Anweisung von der vertrauenswürdigen Ausführungsumgebung zu empfangen; und eine Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durchzusetzen.
  2. System nach Anspruch 1, wobei der Speicher ein nicht flüchtiger Speicher mit wahlfreiem Zugriff (NVRAM) ist.
  3. System nach Anspruch 1 oder 2, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durch ein System-BIOS erstellt wird.
  4. System nach einem der vorhergehenden Ansprüche, wobei die vertrauenswürdige Ausführungsumgebung ein Software-Guard-Extensions-(SGX)-System ist
  5. System nach einem der vorhergehenden Ansprüche, wobei die vertrauenswürdige Ausführungsumgebung ein Virtual-Machine-Manager-(VMM)-System ist.
  6. System nach einem der vorhergehenden Ansprüche, wobei der Speicher eine Mehrzahl von Partitionen umfasst, wobei jede der Mehrzahl von Partitionen einer vertrauenswürdigen Ausführungsumgebung statisch zugeordnet ist.
  7. System nach einem der vorhergehenden Ansprüche, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers Informationen bezüglich Speichern und Wiederherstellen für eine oder mehrere Enklaven enthält.
  8. System nach einem der vorhergehenden Ansprüche, wobei die Zugriffssteuerungsrichtlinie insbesondere der vertrauenswürdigen Ausführungsumgebung zugeordnet ist.
  9. System nach einem der vorhergehenden Ansprüche, wobei die Zugriffssteuerungsrichtlinie insbesondere der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers zugeordnet ist.
  10. System nach einem der vorhergehenden Ansprüche, wobei die Zugriffssteuerungsrichtlinie eine Leseanweisung zum Lesen von gespeicherten Daten in der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers umfasst.
  11. System nach einem der vorhergehenden Ansprüche, wobei die Zugriffssteuerungsrichtlinie eine Schreibanweisung zum Schreiben von Daten in die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers umfasst.
  12. System nach einem der vorhergehenden Ansprüche, wobei die Zugriffssteuerungsrichtlinie eines oder mehr als eines von einem Identifizierer einer vertrauenswürdigen Ausführungsumgebung, Anweisungen einer vertrauenswürdigen Ausführungsumgebung und einem Bereich von Speicherorten, die einer vertrauenswürdigen Ausführungsumgebung zugeordnet sind, umfasst.
  13. Computerimplementiertes Verfahren zum Verbinden einer vertrauenswürdigen Ausführungsumgebung mit einem Speicher über eine Schnittstelle, das aufweist: das Anzeigen, durch einen Prozessor, der vertrauenswürdigen Ausführungsumgebung, dass der Speicher des Prozessors dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt; das Empfangen einer Anweisung von der vertrauenswürdigen Ausführungsumgebung; und das Durchsetzen einer Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers.
  14. Computerimplementiertes Verfahren nach Anspruch 13, wobei der Speicher ein nicht flüchtiger Speicher mit wahlfreiem Zugriff (NVRAM) ist.
  15. Computerimplementiertes Verfahren nach Anspruch 13 oder 14, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durch ein System-BIOS erstellt wird.
  16. Computerimplementiertes Verfahren nach einem der Ansprüche 13 bis 15, wobei die vertrauenswürdige Ausführungsumgebung ein Software-Guard-Extensions-(SGX)-System ist.
  17. Computerimplementiertes Verfahren nach einem der Ansprüche 13 bis 16, wobei die vertrauenswürdige Ausführungsumgebung ein Virtual-Machine-Manager-(VMM)-System ist.
  18. Computerimplementiertes Verfahren nach einem der Ansprüche 13 bis 17, wobei der Speicher eine Mehrzahl von Partitionen umfasst, wobei jede der Mehrzahl von Partitionen einer vertrauenswürdigen Ausführungsumgebung statisch zugeordnet ist.
  19. Computerimplementiertes Verfahren nach einem der Ansprüche 13 bis 18, wobei die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers Informationen bezüglich Speichern und Wiederherstellen für eine oder mehrere Enklaven enthält.
  20. Computerimplementiertes Verfahren nach einem der Ansprüche 13 bis 19, wobei die Zugriffssteuerungsrichtlinie insbesondere der vertrauenswürdigen Ausführungsumgebung zugeordnet ist.
  21. Computerimplementiertes Verfahren nach einem der Ansprüche 13 bis 20, wobei die Zugriffssteuerungsrichtlinie insbesondere der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers zugeordnet ist.
  22. Computerimplementiertes Verfahren nach einem der Ansprüche 13 bis 21, wobei die Zugriffssteuerungsrichtlinie eine Leseanweisung zum Lesen von gespeicherten Daten in der der vertrauenswürdigen Ausführungsumgebung zugeordneten Partition des Speichers umfasst.
  23. Computerimplementiertes Verfahren nach einem der Ansprüche 13 bis 22, wobei die Zugriffssteuerungsrichtlinie eine Schreibanweisung zum Schreiben von Daten in die der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers umfasst.
  24. Computerimplementiertes Verfahren nach einem der Ansprüche 13 bis 23, wobei die Zugriffssteuerungsrichtlinie eines oder mehr als eines von einem Identifizierer einer vertrauenswürdigen Ausführungsumgebung, Anweisungen einer vertrauenswürdigen Ausführungsumgebung und einem Bereich von Speicherorten, die einer vertrauenswürdigen Ausführungsumgebung zugeordnet sind, umfasst.
  25. Gegenstand, der ein nicht flüchtiges computerlesbares Speichermedium aufweist, das Anweisungen zur Ausführung durch Verarbeitungsschaltungsanordnungen einer Rechenvorrichtung zum Verbinden einer vertrauenswürdigen Ausführungsumgebung mit einem Speicher über eine Schnittstelle speichert, wobei die Anweisungen bewirken, dass die Rechenvorrichtung: der vertrauenswürdigen Ausführungsumgebung anzeigt, dass der Speicher des Prozessors dedizierten Zugriff auf die vertrauenswürdige Ausführungsumgebung unterstützt; eine Anweisung von der vertrauenswürdigen Ausführungsumgebung empfängt; und eine Zugriffssteuerungsrichtlinie eines Schnittstellen-Plugins zum Einschränken des Speicherzugriffs durch die vertrauenswürdige Ausführungsumgebung auf eine der vertrauenswürdigen Ausführungsumgebung zugeordnete Partition des Speichers durchsetzt.
DE102018109397.7A 2017-05-19 2018-04-19 Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen Pending DE102018109397A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/600,666 US10706143B2 (en) 2017-05-19 2017-05-19 Techniques for secure-chip memory for trusted execution environments
US15/600,666 2017-05-19

Publications (1)

Publication Number Publication Date
DE102018109397A1 true DE102018109397A1 (de) 2018-11-22

Family

ID=64271755

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018109397.7A Pending DE102018109397A1 (de) 2017-05-19 2018-04-19 Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen

Country Status (3)

Country Link
US (1) US10706143B2 (de)
CN (1) CN108959932A (de)
DE (1) DE102018109397A1 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10691837B1 (en) 2017-06-02 2020-06-23 Apple Inc. Multi-user storage volume encryption via secure enclave
CN109726588B (zh) * 2018-12-21 2021-04-06 上海邑游网络科技有限公司 基于信息隐藏的隐私保护方法和系统
CN110134545B (zh) * 2019-04-03 2020-12-22 上海交通大学 基于可信执行环境的提供虚拟nvram的方法及系统
CN110998575B (zh) 2019-04-19 2024-04-16 创新先进技术有限公司 在支持受保护执行环境的处理器上执行可信应用的方法和设备
CN110138799B (zh) * 2019-05-30 2020-07-17 东北大学 一种基于sgx的安全云存储方法
US11388008B2 (en) * 2019-07-16 2022-07-12 International Business Machines Corporation Trusted platform module swarm
CN110417538B (zh) * 2019-07-30 2022-10-14 广州小鹏汽车科技有限公司 车辆及其内部安全通信的方法和系统
WO2021062242A1 (en) 2019-09-27 2021-04-01 Intel Corporation Software defined silicon implementation and management
DE112020004561T5 (de) 2019-09-27 2022-10-13 Intel Corporation Systeme, Verfahren und Einrichtungen für softwaredefinierte Siliziumsicherheit
US11556654B2 (en) * 2019-12-23 2023-01-17 Mediatek Inc. Security schemes for multiple trusted-execution-environments (TEEs) and multiple rich-execution-environments (REEs)
US11546341B2 (en) * 2020-02-14 2023-01-03 Sap Se Secure group file sharing
US11977612B2 (en) 2020-07-07 2024-05-07 Intel Corporation Software defined silicon guardianship
US20210109870A1 (en) * 2020-12-23 2021-04-15 Ravi L. Sahita Isolating memory within trusted execution environments
CN113282946B (zh) * 2021-07-20 2021-11-16 南湖实验室 基于高可信环境下数据访问过程的信息安全方法及系统
CN113721919B (zh) * 2021-08-09 2024-03-12 上海交通大学 基于Intel SGX可信执行环境的在线编译混淆实现方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6985951B2 (en) * 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US20050080934A1 (en) * 2003-09-30 2005-04-14 Cota-Robles Erik C. Invalidating translation lookaside buffer entries in a virtual machine (VM) system
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7380276B2 (en) * 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US8510859B2 (en) * 2006-09-26 2013-08-13 Intel Corporation Methods and arrangements to launch trusted, co-existing environments
US7986786B2 (en) * 2006-11-30 2011-07-26 Hewlett-Packard Development Company, L.P. Methods and systems for utilizing cryptographic functions of a cryptographic co-processor
US8156289B2 (en) * 2008-06-03 2012-04-10 Microsoft Corporation Hardware support for work queue management
US8539245B2 (en) * 2010-08-06 2013-09-17 Intel Corporation Apparatus and method for accessing a secure partition in non-volatile storage by a host system enabled after the system exits a first instance of a secure mode
US8938606B2 (en) * 2010-12-22 2015-01-20 Intel Corporation System, apparatus, and method for segment register read and write regardless of privilege level
US9594927B2 (en) * 2014-09-10 2017-03-14 Intel Corporation Providing a trusted execution environment using a processor
US9489534B2 (en) * 2014-10-23 2016-11-08 Northrop Grumman Systems Corporation Multi-level security system for enabling secure file sharing across multiple security levels and method thereof
WO2016149895A1 (en) * 2015-03-23 2016-09-29 Intel Corporation Execution context migration method and apparatus

Also Published As

Publication number Publication date
US20180336342A1 (en) 2018-11-22
CN108959932A (zh) 2018-12-07
US10706143B2 (en) 2020-07-07

Similar Documents

Publication Publication Date Title
DE102018109397A1 (de) Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen
DE102018101307A1 (de) Techniken für SGX-Enklaven-Fernauthentifizierung
US20220182365A1 (en) Techniques for shared private data objects in a trusted execution environment
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
DE102019108266A1 (de) Techniken zum bereitstellen von isolation auf funktionsebene mit auf fähigkeit basierender sicherheit
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE102019109088A1 (de) Schutz von schlüsseln und sensitiven daten gegen angriffe in einer mikroprozessorarchitektur
DE102019110309A1 (de) Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
DE102019110327A1 (de) Technologien zum verifizieren von speicherintegrität über mehrere speicherbereiche hinweg
US20180357444A1 (en) System, method, and device for unified access control on federated database
DE102011077218B4 (de) Zugriff auf in einer Cloud gespeicherte Daten
DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
DE202014011089U1 (de) System zum Kopieren von Dateien zwischen verschlüsselten und unverschlüsselten Datenspeichereinrichtungen
DE112011102876T5 (de) Ressourcenverwaltungs- und Sicherheitssystem
DE102010054614A1 (de) Eindringen in eine gesicherte EDV-Umgebung unter Verwendung mehrerer authentifizierter Codemodule
US20150066873A1 (en) Policy based deduplication techniques
DE112019000594T5 (de) Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen
DE102018004290A1 (de) Kryptographischer Speicherschutz mit Mehrfachschlüssel
DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
DE102013114091A1 (de) System und Verfahren zum Schutz von Daten
DE112020000285T5 (de) Programmunterbrechungen für Seiten-Import/-Export

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MAIWALD GMBH, DE

Representative=s name: MAIWALD PATENTANWALTS- UND RECHTSANWALTSGESELL, DE