DE102018101307A1 - Techniken für SGX-Enklaven-Fernauthentifizierung - Google Patents

Techniken für SGX-Enklaven-Fernauthentifizierung Download PDF

Info

Publication number
DE102018101307A1
DE102018101307A1 DE102018101307.8A DE102018101307A DE102018101307A1 DE 102018101307 A1 DE102018101307 A1 DE 102018101307A1 DE 102018101307 A DE102018101307 A DE 102018101307A DE 102018101307 A1 DE102018101307 A1 DE 102018101307A1
Authority
DE
Germany
Prior art keywords
enclave
sgx
message
computer
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102018101307.8A
Other languages
English (en)
Inventor
Andrea Miele
Karla Saur
James Held
Mic Bowman
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
Priority claimed from US15/600,667 external-priority patent/US20180241572A1/en
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102018101307A1 publication Critical patent/DE102018101307A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2201/00Algorithms used for the adjustment of time-domain equalizers
    • H04L2201/08Algorithms not covered by groups H04L2201/02 - H04L2201/06
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/42Anonymization, e.g. involving pseudonyms

Landscapes

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

Abstract

Es werden Techniken für die SGX-Enklaven-Fernauthentifizierung beschrieben. Ein Attestierungsdienst kann verwendet werden, um zu attestieren, dass auf einer Software-Guard-Extension(SGX)-fähigen Plattform eine Enklave erfolgreich hergestellt wurde. Ferner kann in Ausführungsformen ein Attestierungsdienst als ein Notarsystem verwendet werden, um zu attestieren, dass ein Zertifikat mit öffentlichem Schlüssel von einer bestimmten SGX-Enklave erzeugt wurde und deshalb für andere entfernte Enklaven für eine Authentifizierung vertrauenswürdig ist. In einer Ausführungsform kann eine client-seitige SGX-Enklave ein öffentlich-privates Schlüsselpaar (SK, PK) erzeugen, einen kryptographischen Hash H von PK berechnen, eine H beinhaltende Meldung R erstellen, ein Zitat (engl. Quote) Q auf der Meldung R von einer zitierenden Enklaven-Komponente erhalten, eine Fernattestierungsantwort RA von einem Attestierungsdienst erhalten und RA und PK an eine oder mehrere server-seitige SGX-Enklaven senden. Andere Ausführungsformen werden beschrieben und beansprucht.

Description

  • VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht den Vorteil der Priorität nach 35 U.S.C. § 119 (e) der vorläufigen US-Patentanmeldung Nr. 62/462,298 , mit dem Titel „TECHNIKEN FÜR SGX-ENKLAVEN-FERNAUTHENTIFIZIERUNG“, angemeldet am 22. Februar 2017, welche hiermit durch Bezugnahme vollumfänglich aufgenommen wird.
  • GEBIET DER OFFENBARUNG
  • Die Offenbarung betrifft allgemein Techniken zur Authentifizierung innerhalb verteilter Rechenumgebungen.
  • HINTERGRUND
  • In einigen Einrichtungen, die vertrauenswürdige Ausführungsumgebungen benutzen, können empfindliche Abschnitte einer Anwendung in einer sicheren Umgebung, Enklave genannt, ausgeführt und/oder gespeichert werden, um sowohl Code als auch Daten vor Kompromittierung zu schützen. In verteilten Anwendungen, wie etwa in einem Beispiel das Internet der Dinge (Internet of Things, IoT) kann es erforderlich sein, dass sich Enklaven, die auf verschiedenen Prozessoren untergebracht sind, gegenseitig authentifizieren, um sichere Kommunikationskanäle herzustellen. Viele gegenwärtige Lösungen basieren auf einer zentralisierten, vertrauenswürdigen Stelle, um zwei entfernte Enklaven innerhalb eines verteilten Systems zu authentifizieren. Die Verwendung einer zentralisierten, vertrauenswürdigen Stelle kann in einigen Fällen die Identität einer oder mehrerer Parteien offenlegen, was von jenen, die die Anonymität bevorzugen, nicht gewünscht sein dürfte. Deshalb sind verbesserte Techniken, die keine zentrale, vertrauenswürdige Stelle erfordern, um eine Authentifizierung zwischen Enklaven innerhalb eines verteilten Systems durchzuführen, wünschenswert.
  • KURZFASSUNG
  • Das Folgende stellt eine vereinfachte Kurzfassung dar, um ein grundlegendes Verständnis einiger hierin beschriebener neuartiger Ausfiihrungsformen bereitzustellen. Diese Kurzfassung stellt keinen umfassenden Überblick dar und soll keine Schlüsselelemente/entscheidenden Elemente identifizieren oder deren Schutzbereich abgrenzen. Der alleinige Zweck ist die Darstellung einiger Konzepte in vereinfachter Form als Einleitung zur detaillierteren Beschreibung, die weiter unten dargestellt wird.
  • Es werden Techniken für die Enklaven-Fernauthentifizierung beschrieben. Ein Attestierungsdienst, wie etwa der Intel Attestierungsdienst (Intel Attestation Service, IAS) kann zur Attestierung verwendet werden, dass auf einer Software-Guard-Extension(SGX)-fähigen Plattform eine Enklave erfolgreich hergestellt wurde. Ferner kann in Ausführungsformen ein IAS als Notarsystem verwendet werden, um zu attestieren, dass ein Zertifikat mit öffentlichem Schlüssel von einer bestimmten SGX-Enklave erzeugt wurde und deshalb für andere entfernte Enklaven für eine Authentifizierung vertrauenswürdig ist. In einer Ausführungsform kann eine client-seitige SGX-Enklave ein öffentlich-privates Schlüsselpaar (SK, PK) erzeugen, einen kryptographischen Hash H von PK berechnen, eine H beinhaltende Meldung R erstellen, ein Zitat (engl. Quote) Q auf der Meldung R von einer zitierenden Enklaven-Komponente erhalten, eine Fernattestierungsantwort RA von einem Attestierungsdienst erhalten und RA und PK an eine oder mehrere server-seitige SGX-Enklaven senden. Andere Ausführungsformen werden beschrieben und beansprucht.
  • Um das Vorstehende und ähnliche Ziele zu erreichen, werden hierin bestimmte veranschaulichende Aspekte im Zusammenhang mit der folgenden Beschreibung und den angefügten Zeichnungen beschrieben. Diese Aspekte geben die verschiedenen Wege an, wie die hierin offenbarten Grundprinzipien praktiziert werden können, und alle Aspekte und deren Entsprechungen sollen innerhalb des Schutzbereichs des beanspruchten Gegenstands liegen. Andere Vorteile und neuartige Merkmale ergeben sich aus der folgenden detaillierten Beschreibung in Verbindung mit den Zeichnungen.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform einer Betriebsumgebung.
    • 2 veranschaulicht eine Ausführungsform eines vertrauenswürdigen Enklaven-Systems.
    • 3 veranschaulicht eine Architektur eines vertrauenswürdigen Enklaven-Systems.
    • 4 veranschaulicht eine Ausführungsform eines Systems.
    • 5 veranschaulicht einen Logikfluss gemäß einer Ausführungsform.
    • 6A veranschaulicht einen Logikfluss gemäß einer Ausführungsform.
    • 6B veranschaulicht einen Logikfluss gemäß einer Ausführungsform.
    • 7 veranschaulicht einen Herstellungsartikel gemäß einer Ausführungsform.
    • 8 veranschaulicht eine Ausführungsform eines zentralisierten Systems.
    • 9 veranschaulicht eine Ausführungsform eines verteilten Systems.
    • 10 veranschaulicht eine Ausführungsform einer Rechnerarchitektur.
    • 11 veranschaulicht eine Ausführungsform einer Kommunikationsarchitektur.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden Techniken für die SGX-Enklaven-Fernauthentifizierung beschrieben. Ein Attestierungsdienst, wie etwa der Intel Attestierungsdienst (Intel Attestation Service, IAS) kann zur Attestierung verwendet werden, dass auf einer Software-Guard-Extension(SGX)-fähigen Plattform eine Enklave erfolgreich hergestellt wurde. Ferner kann in Ausführungsformen ein IAS als Notarsystem verwendet werden, um zu attestieren, dass ein Zertifikat mit öffentlichem Schlüssel von einer bestimmten SGX-Enklave erzeugt wurde und deshalb für andere entfernte Enklaven für eine Authentifizierung vertrauenswürdig ist. Andere Ausführungsformen werden beschrieben und beansprucht.
  • Allgemein werden anhand der hierin verwendeten Notation und Nomenklatur die nachfolgenden detaillierten Beschreibungen in Bezug auf Programmprozeduren, die auf einem Computer oder Netzwerk von Computern ausgeführt werden, dargestellt. Diese prozeduralen Beschreibungen und Darstellungen werden vom Fachmann verwendet, um einem anderen Fachmann den maßgeblichen Inhalt seiner Arbeit in möglichst effektiver Weise zu vermitteln.
  • Eine Prozedur wird hier und im Allgemeinen als eine folgerichtige Sequenz von Vorgängen, die zu einem gewünschten Ergebnis führen, verstanden. Diese Vorgänge erfordern physikalische Manipulationen physikalischer Größen. Üblicherweise, aber nicht notwendigerweise, nehmen diese Größen die Form von elektrischen, magnetischen oder optischen Signalen an, die in der Lage sind, gespeichert, übertragen, kombiniert, verglichen und in anderer Weise manipuliert zu werden. Es erweist sich zuweilen als günstig, hauptsächlich aus Gründen der üblichen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen. Es sei jedoch angemerkt, dass all diese und ähnliche Begriffe den geeigneten physikalischen Größen zuzuordnen sind und lediglich praktische Bezeichnungen sind, die auf diese Größen angewendet werden.
  • Ferner werden diese durchgeführten Manipulationen oft mit Begriffen wie z. B. hinzufügen oder vergleichen bezeichnet, die üblicherweise geistigen Arbeitsschritten zugeordnet werden, die von einem menschlichen Bediener durchgeführt werden. Es ist jedoch keine derartige Fähigkeit eines menschlichen Bedieners in irgendeiner der hier beschriebenen Vorgänge, die Teil einer oder mehrerer Ausführungsformen sind, notwendig oder in den meisten Fällen auch nicht wünschenswert. Vielmehr sind diese Vorgänge maschinelle Vorgänge. Nützliche Maschinen zur Durchführung von Vorgängen verschiedener Ausführungsformen umfassen digitale Allzweck-Computer oder ähnliche Einrichtungen.
  • Verschiedene Ausführungsformen betreffen auch Vorrichtungen oder Systeme zur Durchführung dieser Vorgänge. Diese Vorrichtung kann speziell für den geforderten Zweck aufgebaut sein, oder sie kann einen Allzweck-Computer umfassen, wie durch ein im Computer gespeichertes Computerprogramm wahlweise aktiviert oder rekonfiguriert. Die hierin dargestellten Prozeduren sind nicht von Natur aus an einen bestimmten Computer oder andere Vorrichtung gebunden. Verschiedene Allzweck-Maschinen können mit Programmen, die entsprechend den Lehren hierin geschrieben wurden, verwendet werden, oder es kann sich auch als günstig erweisen, eine noch spezialisiertere Vorrichtung zu konstruieren, um die erforderlichen Verfahrensschritte durchzuführen. Die erforderliche Struktur für eine Vielfalt dieser Maschinen ergibt sich aus der gegebenen Beschreibung.
  • 1 veranschaulicht ein Beispiel einer Betriebsumgebung 100, wie sie für einige Ausführungsformen repräsentativ sein kann. In der Betriebsumgebung 100, die eine Enklaven-Fernauthentifizierung enthalten kann, kann ein System 102 einen Server 110 und eine über ein Netzwerk 140 gekoppelte Verarbeitungseinrichtung 105 enthalten. Der Server 110 und die Verarbeitungseinrichtung 105 können Daten 130 über das Netzwerk 140 austauschen, und die Daten 130 können ausführbare Befehle 132 zur Ausführung innerhalb der Verarbeitungseinrichtung 105 enthalten. In einigen Ausführungsformen können die Daten 130 Datenwerte, ausführbare Instruktionen und/oder eine Kombination daraus enthalten. Das Netzwerk 140 kann auf irgendeiner aus einer Vielfalt (oder Kombination) von Kommunikationstechnologien basieren, durch welche Signale ausgetauscht werden können, einschließlich u.a. kabelgebundene Technologien, die elektrisch und/oder optisch leitende Verkabelung nutzen, und drahtlose Technologien, die Infrarot, Funkfrequenz und/oder andere Formen der drahtlosen Übertragung nutzen.
  • In verschiedenen Ausführungsformen kann die Verarbeitungseinrichtung 105 eine Prozessorkomponente 150, einen Speicher 160, Steuerungen 125 (zum Beispiel manuell bedienbare Steuerungen), ein Display 135 und/oder eine Netzwerkschnittstelle 115 einbinden, um die Verarbeitungseinrichtung 105 an das Netzwerk 140 zu koppeln. Die Prozessorkomponente 150 kann Sicherheits-Anmeldedaten 180, einen Sicherheits-Mikrocode 178, einen Metadaten 136 speichernden Metadatenspeicher 135, ein Sicherheitsteilsystem 174, einen oder mehrere Prozessorkerne 170, einen oder mehrere Caches 172 und/oder einen Graphik-Controller 176 einbinden. Der Speicher 160 kann einen flüchtigen Speicher 164, nichtflüchtigen Speicher 162 und/oder einen oder mehrere Speicher-Controller 165 enthalten. Die Verarbeitungseinrichtung 105 kann einen Controller 120 (zum Beispiel einen Sicherheits-Controller) enthalten, der Sicherheits-Anmeldedaten 180 enthalten kann. Der Controller 120 kann auch eine oder mehrere der hierin beschriebenen Ausführungsformen zur vereinheitlichten Hardwarebeschleunigung von HashFunktionen enthalten.
  • Der flüchtige Speicher 164 kann eine oder mehrere Speichereinrichtungen enthalten, die insoweit flüchtig sind, dass sie die kontinuierliche Bereitstellung elektrischer Energie benötigen, um darin gespeicherte Informationen zu behalten. Der Betrieb der Speichereinrichtung(en) des flüchtigen Speichers 164 kann durch den Speicher-Controller 165 gesteuert werden, der Befehle von der Prozessorkomponente 150 und/oder andere Komponenten der Verarbeitungseinrichtung 105 empfangen kann, um Informationen daraus zu speichern und/oder abzufragen, und kann diese Befehle zwischen den Bus-Protokollen und/oder Bus-Timings, durch welche sie empfangen werden, und anderen Bus-Protokollen und/oder Taktungen, durch welche die Speichereinrichtung(en) des flüchtigen Speichers 164 an den Speicher-Controller 165 gekoppelt sind, umwandeln. Beispielhaft kann die eine oder mehrere Speichereinrichtungen des flüchtigen Speichers 164 aus Einrichtungen des dynamischen Direktzugriffsspeichers (DRAM) bestehen, die beispielsweise über eine Schnittstelle an den Speicher-Controller 165 gekoppelt sind, in dem Zeilen- und Spaltenadressen, zusammen mit Byte-Aktivierungs-Signalen, genutzt werden, um Speicherorte auszuwählen, während die durch den Speicher-Controller 165 empfangenen Befehle dorthin entlang einem oder mehreren Paaren von digitalen, seriellen Übertragungsleitungen befördert werden.
  • Der nichtflüchtige Speicher 162 kann aus einem oder mehreren Speichereinrichtungen bestehen, die insoweit nichtflüchtig sind, als sie im Stande sind, Informationen ohne die kontinuierliche Bereitstellung elektrischer Energie darin gespeichert zu halten. Der Betrieb der Speichereinrichtung(en) des nichtflüchtigen Speichers 162 kann durch den Speicher-Controller 165 (zum Beispiel ein anderer Speicher-Controller als er zum Betreiben des flüchtigen Speichers 164 verwendet wird) gesteuert werden, der Befehle von der Prozessorkomponente 150 und/oder andere Komponenten der Verarbeitungseinrichtung 105 empfangen kann, um Informationen daraus zu speichern und/oder abzufragen, und kann diese Befehle zwischen den Bus-Protokollen und/oder Bus-Timings, durch welche sie empfangen werden, und anderen Bus-Protokollen und/oder Bus-Timings, durch welche die Speichereinrichtung(en) des nichtflüchtigen Speichers 162 an den Speicher-Controller 165 gekoppelt sind, umwandeln. Beispielhaft kann eine oder mehrere Speichereinrichtungen des nichtflüchtigen Speichers 162 aus ferromagnetischen scheiben-basierten Laufwerken (Festplatten) bestehen, die zum Beispiel über eine digitale serielle Schnittstelle an den Speicher-Controller 165 betreibbar gekoppelt sind, in denen Abschnitte des Speicherraums innerhalb jeder solcher Speichereinrichtung anhand von Tracks und Sektoren adressiert werden. Im Gegensatz dazu können vom Speicher-Controller 165 empfangene Befehle dorthin entlang einem oder mehreren Paaren von digitalen seriellen Übertragungsleitungen befördert werden, die Lese- und Schreibbefehle befördern, in denen diese gleichen Abschnitte des Speicherraums innerhalb einer jeden derartigen Speichereinrichtung auf eine völlig unterschiedliche Weise adressiert werden.
  • Die Prozessorkomponente 150 kann mindestens einen Prozessorkern 170 enthalten, um Instruktionen einer ausführbaren Routine in mindestens einem Ausführungsstrang (engl. thread of execution) auszuführen. Die Prozessorkomponente 150 kann jedoch auch mehr als einen der Prozessorkerne 170 einbinden und/oder kann andere Verarbeitungsarchitekturtechniken benutzen, um mehrere Ausführungsstränge zu unterstützen, durch welche die Instruktionen von mehr als einer ausführbaren Routine parallel ausgeführt werden können. Der/die Cache(s) 172 können einen mehrschichtigen Cache-Satz enthalten, der separate First-Level(L1)-Caches für jeden Prozessorkern 170 und/oder einen größeren Second-Level(L2)-Cache für mehrere der Prozessorkerne 170 enthalten kann.
  • In einigen Ausführungsformen, in denen die Verarbeitungseinrichtung 105 ein Display 135 und/oder einen Graphik-Controller 176 enthält, können ein oder mehrere Kerne 170, infolge des Ausführens der ausführbaren Befehle einer oder mehrerer Routinen, Steuerungen 125 und/oder das Display 135 betreiben, um eine Benutzeroberfläche bereitzustellen und/oder andere grafikbezogene Funktionen durchzuführen. Der Graphik-Controller 176 kann einen Grafikprozessorkern (zum Beispiel eine Grafikverarbeitungseinrichtung (GPU)) und/oder eine (nicht gezeigte) Komponente enthalten, um grafikbezogene Vorgänge durchzuführen, u.a. das Entkomprimieren und Darstellen eines Bewegungsvideos, das ein 2D-Bild eines oder mehrerer Objekte eines dreidimensionalen (3D) Modells usw. wiedergibt.
  • Der nichtflüchtige Speicher 162 kann Daten 130, einschließlich ausführbare Befehle 132, speichern. In dem oben erwähnten Austausch von Daten 130 zwischen Verarbeitungseinrichtung 105 und Server 110 kann die Verarbeitungseinrichtung 105 eine Kopie von Daten 130 zum Beispiel für eine längerfristige Speicherung innerhalb des nichtflüchtigen Speichers 162 beibehalten. Der flüchtige Speicher 164 kann verschlüsselte Daten 134 und/oder Metadaten 136 speichern. Verschlüsselte Daten 134 können aus mindestens einem Abschnitt von Daten 130, die innerhalb des flüchtigen Speichers 164 in verschlüsselter und/oder komprimierter Form gemäß einiger hierin beschriebenen Ausführungsformen gespeichert sind, bestehen. Ausführbare Befehle 132 können einen oder mehrere ausführbare Routinen, wie etwa ein Betriebssystem (Operating System, OS), Gerätetreiber und/oder eine oder mehrere Anwendungsroutinen bilden, die durch einen oder mehrere Prozessorkerne 170 der Prozessorkomponente 150 auszuführen sind. Andere Abschnitte der Daten 130 können Datenwerte enthalten, die durch einen oder mehrere Prozessorkerne 170 als Eingaben zum Durchführen verschiedener Aufgaben benutzt werden, zu deren Durchführung ein oder mehrere Prozessorkerne 170 durch Ausführung ausführbarer Befehle 132 veranlasst werden.
  • Als Teil der Durchführung ausführbarer Befehle 132 können ein oder mehrere Prozessorkerne 170 Abschnitte von ausführbaren Befehlen 132 abfragen und diese Abschnitte innerhalb des flüchtigen Speichers 164 in einer leichter ausführbaren Form speichern, in der Adressen abgeleitet werden, indirekte Bezüge aufgelöst und/oder Links vollständig definiert werden in den Abschnitten des Prozesses, der häufig als Laden bezeichnet wird. Wie dem Fachmann bekannt, kann ein solches Laden unter der Steuerung einer Laderoutine und/oder einer Seitenverwaltungsroutine eines OS, die unter den ausführbaren Befehlen 132 sein können, stattfinden. Da Abschnitte von Daten 130 (einschließlich Abschnitte von ausführbaren Befehlen 132) so zwischen nichtflüchtigem Speicher 162 und flüchtigem Speicher 164 ausgetauscht werden, kann das Sicherheitsteilsystem 174 diese Abschnitte von Daten 130 zwischen dem, was ihre ursprüngliche unkomprimierte und unverschlüsselte Form, wie innerhalb des nichtflüchtigen Speichers 162 gespeichert, sein kann, und einer Form, die mindestens verschlüsselt ist und die innerhalb des flüchtigen Speichers 164 als verschlüsselte Daten 134 in Begleitung von Metadaten 136 gespeichert sein kann, umwandeln.
  • Das Sicherheitsteilsystem 174 kann Hardwarelogik enthalten, die durch Sicherheits-Mikrocode 178 konfiguriert oder in anderer Weise kontrolliert wird, um die Logik zu implementieren, um solche Umwandlungen während des normalen Betriebs der Verarbeitungseinrichtung 105 durchzuführen. Sicherheits-Mikrocode 178 kann Angaben zu Verbindungen enthalten, die zwischen Logikschaltungen innerhalb des Sicherheitsteilsystems 174 herzustellen sind, um eine derartige Logik zu bilden sind. Alternativ oder zusätzlich kann Sicherheits-Mikrocode 178 ausführbare Befehle enthalten, die, wenn sie entsprechend ausgeführt werden, eine solche Logik bilden. Entweder kann das Sicherheitsteilsystem 174 solche Instruktionen des Sicherheits-Mikrocodes 178 ausführen, oder das Sicherheitsteilsystem 174 kann durch mindestens einen Prozessorkern 170, der solche Instruktionen ausführt, gesteuert werden. Das Sicherheitsteilsystem 174 und/oder mindestens ein Prozessorkern 170 kann mit Zugriff auf den Sicherheits-Mikrocode 178 während der Initialisierung der Verarbeitungseinrichtung 105, einschließlich Initialisierung der Prozessorkomponente 150, versehen sein. Ferner kann das Sicherheitsteilsystem 174 eine oder mehrere der hierin beschriebenen Ausführungsformen für eine vereinheitlichte Hardwarebeschleunigung von Hashfunktionen enthalten.
  • Sicherheits-Anmeldedaten 180 können einen oder mehrere Werte enthalten, die während des normalen Betriebs der Verarbeitungseinrichtung 105 vom Sicherheitsteilsystem 174 als Eingaben zur Durchführung einer Verschlüsselung von Daten 130 und/oder einer Entschlüsselung von verschlüsselten Daten 134 als Teil der Durchführung von Umwandlungen zwischen diesen benutzt werden. Insbesondere können Sicherheits-Anmeldedaten 180 beliebige Arten aus einer Vielfalt von Arten von Sicherheits-Anmeldedaten enthalten, darunter u.a. öffentliche und/oder private Schlüssel, Seeds (zu Deutsch Samen) zum Erzeugen von Zufallszahlen, Instruktionen zum Erzeugen von Zufallszahlen, Zertifikate, Signaturen, Chiffren und/oder dergleichen. Das Sicherheitsteilsystem 174 kann mit Zugriff zu Sicherheits-Anmeldedaten 180 während der Initialisierung der Verarbeitungseinrichtung 105 versehen sein.
  • 2 veranschaulicht eine Ausführungsform eines vertrauenswürdigen Enklaven-Systems 200. Das vertrauenswürdige Enklaven-System 200 kann die Anwendung 201 enthalten, die eine oder mehrere Anwendungen enthalten kann, die auf einer Software- und/oder Hardware-Plattform ausgeführt werden. Einige nicht einschränkende Beispiele für Anwendungen, die geheime, schutzbedürftige Daten enthalten können, sind Finanzanwendungen, Anwendungen des Internetbankings und Gesundheitsanwendungen oder medizinische Anwendungen. In einigen Ausführungsformen kann die Anwendung 201 eine nicht vertrauenswürdige Partition 202 enthalten, die eine Partition der Anwendung 201 sein kann, welche Instruktionen und Daten enthält, die allgemein nicht vor einem Angriff geschützt sind. Privilegierter Code 206 kann Code einer Plattform enthalten, die einen speziellen Zugriff, oder das Privileg, auf Daten innerhalb von Anwendungen, die auf der Plattform laufen, aufweist. Privilegierter Code kann zum Beispiel das Betriebssystem, einen virtuellen Maschinenmanager, das System-BIOS oder den Systemverwaltungsmodus enthalten. Zwar können diese beispielhaften Arten privilegierten Codes hier verwendet werden, aber es versteht sich, dass auch andere Code-Arten dauerhaft oder zeitweise ein Privileg enthalten können.
  • Wenn böswilliger Code privilegierten Systemcode 206 infizieren sollte, kann er Zugriff auf die nicht vertrauenswürdige Partition 202 erlangen, da privilegierter Systemcode 206 allgemein Zugriff auf die Anwendung 201 hat. Unter Verwendung eines vertrauenswürdigen Enklaven-Systems können gewisse Daten jedoch sogar vor einem Angriff, der vom privilegierten Systemcode 206 ausgeht, geheim und sicher gehalten werden. In einem Beispiel kann die Anwendung 201 eine vertrauenswürdige Enklave 204 bei 210 erstellen, um geheime Daten und sichere Daten 216 zu schützen. Das Erstellen einer vertrauenswürdigen Enklave 204 kann einen sicheren Speicherort erzeugen, manchmal innerhalb eines Prozessors einer Plattform, der unter Verwendung der hierin beschriebenen Techniken zugänglich ist. Die vertrauenswürdige Enklave 204 kann dazu konfiguriert sein, gewisse vertrauenswürdige Funktionen zu unterstützen, die auf sicheren Daten 216 ausgeführt werden können. Die nicht vertrauenswürdige Partition 202 kann eine vertrauenswürdige Funktion 212 unter Verwendung eines Aufrufgates 214 aufrufen, welches eine Kombination aus Software und Hardware sein kann, die dazu konfiguriert ist, gewisse vertrauenswürdige Funktionsaufrufe bei vertrauenswürdigen Enklave 204 zu akzeptieren. Das Ergebnis eines vertrauenswürdigen Funktionsaufrufs kann von der vertrauenswürdigen Enklave 204 an die nicht vertrauenswürdige Partition 202 zurückgegeben werden, während sichere Daten 216 geschützt innerhalb der vertrauenswürdigen Enklave 204 verbleiben. Auf diese Weise kann unter Verwendung eines begrenzten Satzes vertrauenswürdiger Funktionen auf sichere Daten 216 zugegriffen werden, sichere Daten 216 können noch innerhalb der Anwendung 201 verwendet werden, aber, wie durch die Blockierung 208 gezeigt, privilegierter Systemcode 208 kann am Zugriff auf sichere Daten 216 gehindert werden.
  • Durch das vertrauenswürdige Enklaven-System 200 kann jede auf einer Plattform laufende Anwendung ihre eigenen geheimen Daten unter Verwendung von sicheren Enklaven verteidigen, die für böswilligen Code verfügbare Angriffsoberfläche deutlich reduzieren, insbesondere böswilligen Code, der in privilegierten Systemcode 206 eingedrungen ist. Die in 2 beschriebene Ausführungsform veranschaulicht zwar eine einzelne Plattform, aber vertrauenswürdige Enklaven-Systeme können auch innerhalb von vernetzten verteilten Systemen, wie etwa IoT, verwendet werden. In diesen Systemen kann, wie weiter unten beschrieben, eine zentralisierte vertrauenswürdige Stelle verwendet werden, um sichere Enklaven zu authentifizieren. Verbesserte Techniken können jedoch, wie unten beschrieben, die Verwendung einer zentralisierten vertrauenswürdigen Stelle umgehen und vertrauenswürdigen Enklaven, die auf mehreren verteilten Prozessoren laufen, gestatten, einander zu authentifizieren.
  • 3 veranschaulicht eine Ausführungsform eines vertrauenswürdigen Enklaven-Systems 300. Das vertrauenswürdige Enklaven-System 300 kann eine Anwendungsumgebung 301, privilegierte Umgebung 302 und exponierte Hardware 304 enthalten, die alle hier noch besprochen werden. Die Anwendungsumgebung 301 kann eine oder mehrere Enklaven, 306, 308 enthalten, auf die jeweils unter Verwendung einer oder mehrerer SGX-Benutzer-Laufzeit-Module 310, 312 zugegriffen wird. Auf diese Weise kann auf jede Enklave 306, 308 auf sichere Arte und Weise durch eine privilegierte Umgebung 302 zugegriffen werden. Eine privilegierte Umgebung 302 kann ein SGX-Modul 314 enthalten, und Seitentabellen 314. Das SGX-Modul 314 kann eine Kombination aus Software und Hardware enthalten und kann dazu konfiguriert sein, aus einer Enklave 306, 308 über SGX-Benutzer-Laufzeiten 310, 312 geheime Informationen anzufordern oder vertrauenswürdige Funktionen auf geheimen Informationen durchzuführen. Die Seitentabellen 316 können zum Beispiel einen oder mehrere Speicherorte für innerhalb der exponierten Hardware 304 gespeicherte geheime Daten speichern. Die exponierte Hardware 304 kann eine Rechenplattform 318 wie hierin beschrieben enthalten und kann einen oder mehrere Prozessoren enthalten, die dazu konfiguriert sind, die hierin dargelegten Techniken durchzuführen.
  • Die Plattform 318 kann eine Speichereinrichtung enthalten, die den Enklaven-Seitencache (Enclave Page Cache, EPC) 320 und die Enklaven-Seitencache-Abbildung (Enclave Page Cache Map, EPCM) 322 speichern. Der EPC 320 kann ein Speicher sein, der eine Struktur EPCM 322 zur Zuordnung eines Satzes Zugriffsberechtigungen zu einer Enklave enthält. Der EPC 320 kann geschützten Code und Daten in Seiten beinhalten, die in einigen Ausführungsformen in einem nicht einschränkenden Beispiel 4-KB-Seiten sein können. Der EPC 320 kann Enklaven-Seiten und SGX-Strukturen speichern, und EPC-Seiten können gültig oder ungültig sein. Eine gültige EPC-Seite kann entweder eine Enklaven-Seite oder eine SGX-Struktur beinhalten. Die Sicherheitsattribute für jede EPC-Seite können in einer unten besprochenen internen Mikroarchitektur-Struktur, EPCM genannt, gehalten werden.
  • Die EPCM 322 kann Metadaten von Enklaven-Seiten beinhalten und kann eine geschützte Struktur sein, die von einem Prozessor zur Verfolgung der Inhalte des EPC 320 verwendet wird. Die EPCM 322 kann aus einer Serie von Einträgen mit genau einem Eintrag für jede Seite im EPC 320 bestehen. Es versteht sich, dass alternative Ausführungsformen keine 1:1 Korrelation erfordern. Die EPCM 322 kann durch den Prozessor als Teil verschiedener SGX-Instruktionen verwaltet werden und ist möglicherweise für Software oder Einrichtungen nicht direkt zugänglich. Das Format der EPCM 322 kann mikroarchitektonisch sein und hängt von der Implementierung ab. Logischerweise kann jeder EPCM-Eintrag eines oder mehrere aus dem Folgenden umfassen: ob die EPC-Seite gültig oder ungültig ist; die Enklaven-Instanz, die die Seite besitzt; die Art der Seite (REG, TCS, VA, SECS); die virtuelle Adresse, durch die die Enklave auf die Seite zugreifen kann; die enklavenspezifischen Lese-/Schreib-/Ausführungsberechtigung auf dieser Seite; und/oder ob die Seite zugänglich ist oder nicht (BLOCKIERT oder NICHT BLOCKIERT). Die EPCM-Struktur kann vom Prozessor im Adressumrechnungsablauf verwendet werden, um eine Zugriffskontrolle auf die in den EPC geladenen Enklaven-Seiten durchzusetzen. Logischerweise kann sie auch eine zusätzliche sichere Schicht für die Zugriffskontrolle zusätzlich zur „Legacy“-Segmentierung, Paging-Tabellen und erweiterten Paging-Tabellen-Mechanismen bereitstellen.
  • 4 veranschaulicht ein Blockdiagramm eines Systems 400. In einer Ausführungsform kann das System 400 eine oder mehrere Komponenten umfassen. Obgleich das in 4 gezeigte System 400 eine begrenzte Zahl von Elementen in einer gewissen Topologie aufweist, versteht es sich, dass das System 400 mehr oder weniger Elemente in alternativen Topologien, wie für eine gegebene Implementierung gewünscht, enthalten kann. Das System 400 kann eine Vielzahl von Modulen enthalten, die jeweils eine oder mehrere Verarbeitungseinrichtungen, Speichereinheiten, Netzwerkschnittstellen oder andere Hardware- und Softwareelemente enthalten können, welche hierin noch näher beschrieben werden. In einigen Ausführungsformen können diese Module in einer einzelnen Einrichtung enthalten sein. In anderen Ausführungsformen können ein oder mehrere Module Teil einer verteilten Architektur sein, ein Beispiel dafür wird mit Bezug auf 9 noch beschrieben.
  • In einer Ausführungsform kann jedes Modul des Systems 400 in nicht einschränkender Weise eine mobile Recheneinrichtung, ein Smartphone, ein Mobiltelefon, eine mit dem Internet der Dinge (IoT) verbundene Einrichtung, einen Handapparat, einen persönlichen digitalen Assistenten, einen Einwegpager, einem Zweiwegepager, eine Nachrichtenübermittlungseinrichtung, einen Computer, einen Personal-Computer (PC), einen Desktop-Computer, einen Laptop-Computer, einen Notebook-Computer, einen tragbaren Computer, einen Tablet-Computer oder eine tragbare Recheneinrichtung wie etwa eine Smart-Watch umfassen. Ferner können Module einen Server enthalten, der in nicht einschränkender Weise einen einzelnen Server, eine Serveranordnung oder Serverfarm, einen Webserver, einen Netzwerkserver, einen Internetserver, eine Workstation, einen Minicomputer, einen Großrechner, einen Supercomputer, ein Netzwerkgerät, ein Internetgerät, Multiprozessorsysteme, prozessorbasierte Systeme oder irgendeine Kombination daraus umfassen kann.
  • In verschiedenen Ausführungsformen kann das System 400 mehrere Komponenten oder Module umfassen oder implementieren. Die hierin verwendeten Begriffe „Komponente“ und „Modul“ beziehen sich auf computerbezogene Entitäten, die entweder Hardware, eine Kombination aus Hardware und Software, Software, oder Software in Ausführung umfassen. Zum Beispiel kann eine Komponente und/oder ein Modul als Prozess implementiert werden, der auf einem Prozessor, einem Festplattenlaufwerk, mehreren Speicherlaufwerken (eines optischen und/oder magnetischen Speichermediums), einem Objekt, einer ausführbaren Datei, einem Ausführungsstrang, einem Programm und/oder einem Computer läuft. Zur Veranschaulichung: Sowohl eine Anwendung, die auf einem Server läuft, als auch der Server können eine Komponente und/oder ein Modul sein. Eine oder mehr Komponenten und/oder Module können innerhalb eines Prozesses und/oder Ausführungsstrangs untergebracht sein, und eine Komponente und/oder ein Modul können sich auf einem Computer befinden und/oder auf zwei oder mehr Computer verteilt sein, wie für eine gegebene Implementierung gewünscht. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Die verschiedenen Einrichtungen innerhalb des Systems 400 und Komponenten und/oder Module innerhalb einer Einrichtung des Systems 400 können über verschiedene Arten von Kommunikationsmedien, wie durch die verschiedenen Linien und Pfeile angegeben, kommunikativ gekoppelt sein. Die Einrichtungen, Komponenten und/oder Module können Vorgänge untereinander koordinieren. Die Koordination kann den unidirektionalen oder bidirektionalen Informationsaustausch einschließen. So können die Einrichtungen, Komponenten und/oder Module etwa Informationen in der Form von über die Kommunikationsmedien kommunizierten Signalen kommunizieren. Die Informationen können als Signale implementiert sein, die verschiedenen Signalleitungen zugeteilt sind. In solchen Zuteilungen ist jede Mitteilung ein Signal. Weitere Ausführungsformen können jedoch alternativ Datenmitteilungen verwenden. Solche Datenmitteilungen können über verschiedene Verbindungen geschickt werden. Beispielhafte Verbindungen innerhalb einer Einrichtung enthalten parallele Schnittstellen, serielle Schnittstellen und Busschnittstellen. Beispielhafte Verbindungen zwischen Einrichtungen können Netzwerksverbindungen über ein kabelgebundenes oder drahtloses Kommunikationsnetz umfassen.
  • In verschiedenen Ausführungsformen können die verschiedenen Module und Speicher des Systems 400 als ein verteiltes System organisiert sein. Ein verteiltes System umfasst typischerweise mehrere autonome Computer, die über ein Rechnernetz kommunizieren. Die Computer können miteinander interagieren, um ein gemeinsames Ziel zu erreichen, wie etwa rechentechnische Probleme beheben. Zum Beispiel kann ein rechentechnisches Problem in viele Aufgaben unterteilt werden, von denen jede durch einen Computer gelöst wird. Ein Computerprogramm, das in einem verteilten System läuft, wird als verteiltes Programm bezeichnet, und hat die verteilte Programmierung ist der Prozess des Schreibens solcher Programme. Beispiele für ein verteiltes System können in nicht einschränkender Weise eine Client/Server-Architektur, eine 3-Tier-Architektur, eine N-Tier-Architektur, eine eng gekoppelte oder Cluster-Architektur, eine Peer-to-Peer-Architektur, eine Masterslave-Architektur, eine Architektur gemeinsam genutzter Datenbanken und andere Arten von verteilten Systemen umfassen. Es sei angemerkt, dass es sich versteht, auch wenn bei der Beschreibung verschiedener verbesserter Techniken für den Datenabruf einige Ausführungsformen ein verteiltes System benutzen mögen, dass die verbesserten Techniken für den Datenabruf auch durch eine einzelne Recheneinrichtung implementiert werden können. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Das System 400 kann die SGX-Enklave 404 enthalten. Die Enklave 404 kann zwar als SGX-Enklave veranschaulicht werden, aber es versteht sich, dass auch andere Arten von Enklaven in einigen Ausführungsformen verwendet werden können. In diesem Beispiel kann die Enklave 404 Teil eines SGX sein, wodurch es Einrichtungen gestattet sein kann, empfindliche Abschnitte einer Anwendung, wie etwa die Client-Anwendung 402, in einer sicheren Umgebung, Enklave genannt, auszuführen, um sowohl Code als auch Daten vor Kompromittierung zu schützen. In verteilten Anwendungen, wie etwa in einem Beispiel das IoT, kann es erforderlich sein, dass sich Enklaven, die auf verschiedenen Prozessoren untergebracht sind, gegenseitig authentifizieren, um sichere Kommunikationskanäle herzustellen. Gegenwärtig basieren viele Lösungen, mit denen sich zwei entfernte SGX-Enklaven gegenseitig authentifizieren können, auf einer zentralisierten vertrauenswürdigen Stelle. Einige Lösungen, wie TLS-Authentifizierung, können auf der Interaktion mit einer zentralisierten Zertifizierungsstelle (Certification Authority, CA) für die Verteilung und Verifikation von Zertifikaten eines öffentlichen Schlüssels basieren. Die Zertifikate in diesen Fällen können an Einzelpersonen oder Firmen ausgegeben werden und eine individuelle Identität exponieren.
  • Das in 4 dargelegte System kann die durch den Intel Attestation Server (IAS) bereitgestellte Authentifizierung für jede SGX-Enklave verwenden, ohne dass es einer zentralisierten vertrauenswürdigen Stelle bedarf. Es versteht sich, dass andere Arten von Attestierungsservern in verschiedenen Ausführungsformen verwendet werden können. In einigen Ausführungsformen kann die Authentifizierung auf der Hardware Enhanced-Privacy-ID (EPID) basieren, aber nicht auf einer Kennung, die mit einer Person oder Anwendung verbunden ist. Auf diese Weise kann der Datenschutz der einzelnen Plattform oder deren Benutzers bewahrt werden. Eine Authentifizierung kann in einigen Ausführungsformen deshalb anonym erfolgen, indem nachgewiesen wird, dass die Enklave in einer gültigen SGX-Hardware läuft, während die Identität der Einrichtung und/oder des Benutzers geschützt wird. Eine Enklave kann dann einer Attestierung des Codes, den es laufen lässt, durch die entfernte Enklave vertrauen. Auf diese Weise können hierin beschriebene Techniken mehrere Vorteile bereitstellen, darunter die Gestattung des Schutzes der Identität von SGX-Einrichtungen und -Eigentümern, da in einigen Ausführungsformen ein Zertifikat eines öffentlichen Schlüssels anonym an eine SGX-Enklave, die auf gültiger SGX-Hardware läuft, ausgegeben werden kann. Ferner können hierin beschriebene Techniken minimale Modifizierungen an SGX-basierten verteilten Anwendungen erfordern, die u.U. mit Authentifizierung verstärkt werden müssen. Ferner können, wie oben erwähnt, hierin beschriebene Techniken eine Authentifizierung zwischen Enklaven bereitstellen, ohne dass es einer zentralisierten Stelle bedarf.
  • Wie in 4 veranschaulicht, kann eine Client-Anwendung 402, die auf einer Client-Einrichtung wie hierin beschrieben laufen kann, Daten unter Verwendung einer sicheren Enklave, wie etwa die SGX-Enklave 404, ausführen und/oder speichern. Die SGX-Enklave kann in einigen Ausführungsformen auf einem oder mehreren Prozessoren einer Client-Einrichtung untergebracht sein. Es werden zwar durchgehend spezifische Beispiele verwendet, doch die beschriebenen Techniken können mit jedem Prozessor innerhalb verschiedener Arten von vertrauenswürdigen Ausführungsumgebungen verwendet werden. Wie oben dargelegt, kann zwar die Enklave 404 als SGX-Enklave veranschaulicht werden, doch können in einigen Ausführungsformen auch andere sichere Enklaven verwendet werden. Die SGX-Enklave 404 kann Daten erzeugen, die an andere sichere Enklaven, wie etwa SGX-Enklaven 410-a-n, die auf einer oder mehreren Servereinrichtungen untergebracht sein können, geschickt werden sollen, auf denen jeweils eine oder mehrere Server-Anwendungen 408-a-n laufen, wobei a und n positive ganze Zahlen darstellen. Jede der SGX-Enklaven 410-a-n kann auf verschiedenen Prozessoren untergebracht sein, und somit kann es erforderlich sein, dass diese authentifiziert werden müssen, um sichere Datenkommunikationskanäle mit der SGX-Enklave 104 herzustellen.
  • In einer Ausführungsform kann zum Beispiel eine SGX-Enklave 404 unter Verwendung irgendeines bekannten kryptographischen Hash-Algorithmus, wie etwa SHA-1 oder SHA-256, eine SGX-Meldung erzeugen, die einen kryptographischen Hash der Daten beinhaltet. Die Client-Anwendung 402 kann ein verknüpfbares Zitat auf der SGX-Meldung erzeugen, die durch eine zitierende Enklave (Quoting Enclave, QE) (nicht gezeigt) signiert sein kann, welche wiederum ein Zitat erzeugen kann, das die Meldung und den kryptographischen Hash beinhaltet. In einigen Ausführungsformen kann eine zitierende Enklave innerhalb einer Einrichtung als eine separate Komponente aus einer SGX-Enklave enthalten sind und dazu konfiguriert sein, Zitate wie hierin dargelegt zu erzeugen. Bei 403 kann die SGX-Enklave 404 die Attestierung des Zitats Q vom Attestierungsdienst 406, in einigen Beispielen IAS, der auf einem entfernten Server untergebracht sein kann, anfordern. Die Attestierungsantwort 405 vom Attestierungsdienst 406 kann mit einem öffentlichen IAS-Meldungsschlüssel signiert sein und kann wie veranschaulicht eine Kopie des Zitats beinhalten.
  • Die Client-Anwendung 402 kann bei 407 das Zitat, die IAS-Attestierungsmeldung auf dem Zitat und die Daten an eine oder mehrere andere Enklaven schicken, die auf verschiedenen Prozessoren untergebracht sind, wie etwa SGX-Enklaven 410-a-n, senden. Diese Enklaven können die Gültigkeit des Zitats durch Prüfen der Signatur auf der IAS-Antwort mit dem IAS-Meldungsschlüssel verifizieren. Die Empfängerenklave kann verifizieren, dass der kryptographische Hash der Daten dem Hash in dem Zitat entspricht. Auf diese Weise kann den Daten vertraut werden, dass sie direkt aus der schickenden Enklave kommen.
  • Hierin ist eine Reihe von Ablaufdiagrammen enthalten, die repräsentativ sind für beispielhafte Methodiken zum Durchführen neuartiger Aspekte der offenbarten Architektur. Zum Zweck der Vereinfachung der Erklärung werden zwar die eine oder mehrere hierin gezeigten Methodiken zum Beispiel als eine Serie von Handlungen in der Form eines Fließschemas oder Flussdiagramms gezeigt und beschrieben, doch es versteht sich, dass die Methodiken durch die Reihenfolge der Handlungen nicht beschränkt sind, da einige Taten in Übereinstimmung damit in einer anderen Reihenfolge und/oder gleichzeitig mit anderen Handlungen als den hierin gezeigten und beschriebenen stattfinden. Zum Beispiel wird es sich für den Fachmann verstehen, dass eine Methodik alternativ als eine Serie von untereinander zusammenhängenden Zuständen oder Ereignissen, wie etwa in einem Zustandsdiagramm, dargestellt werden könnte. Des Weiteren sind möglicherweise nicht alle in einer Methodik veranschaulichten Handlungen für eine neuartige Implementierung erforderlich.
  • 5 veranschaulicht einen Logikfluss 500 gemäß einer Ausführungsform. Zuerst kann auf Client-Seite bei 502 die SGX-Enklave Daten D erzeugen, die irgendwelche Daten enthalten können, von denen eine Anwendung fordert, dass sie durch eine sichere Enklave sicher gehandhabt werden. Bei 504 kann zum Beispiel die SGX-Enklave einen kryptographischen Hash H von D unter Verwendung eines bekannten Hash-Algorithmus, wie etwa SHA-1 oder SHA-256, berechnen. Bei 506 kann die SGX-Enklave eine SGX-Meldung R erstellen, die H beinhaltet. Bei 508 kann die Anwendung das SGX-Zitat Q auf der Meldung R von einer zitierenden Enklave erhalten, die wie oben beschrieben eine separate Enklaven-Komponente umfassen kann, die dazu konfiguriert ist, das Zitat zu erzeugen. Bei 510 kann die Anwendung eine Fernattestierungsantwort RA auf Q von IAS erhalten, der in beispielhaften Ausfiihrungsformen verwendet wird, es können jedoch auch andere Fernattestierungsdienste verwendet werden. Bei 512 kann eine Anwendung RA und D (Q, H, R befinden sich innerhalb RA) an eine oder mehrere Serverkomponenten senden, wobei jede eine Server-Anwendung und Enklave enthält, wie mit Bezug auf 4 veranschaulicht.
  • Nun mit Bezug auf die Server-Seite kann bei 514 eine Anwendung auf der Server-Seite RA und D in eine Server-SGX-Enklave kopieren, die der server-seitigen Anwendung zugeordnet ist. In einigen Ausführungsformen kann die server-seitige Anwendung einer sicheren Enklave zugeordnet sein, die von einem Prozessor verschieden ist, der einer Client-Anwendung, die D anfänglich erzeugt hat, zugeordnet ist. Bei 516 kann die Server-SGX-Enklave die enthaltene öffentliche IAS-Meldungsschlüsselsignatur auf RA prüfen. Bei 518 kann die Gültigkeit der Signatur auf Gültigkeit geprüft werden und, falls nicht gültig, kann der Logikfluss bei 526 enden. Wenn gültig, kann die Server-SGX-Enklave bei 520 prüfen, ob der kryptographische Hash von D mit H übereinstimmt. Wenn keine Übereinstimmung vorliegt, kann der Logikfluss bei 526 enden. Wenn eine Übereinstimmung festgestellt wird, kann die SGX-Enklave bei 524 D als durch eine Client-SGX-Enklave produzierte Daten akzeptieren.
  • 6A veranschaulicht einen Logikfluss 600 gemäß einer Ausführungsform. Wie in 6A veranschaulicht, kann eine Enklaven-Fernauthentifizierung durchgeführt werden, wobei die ausgetauschten Daten ein öffentlicher Schlüssel sind. In dieser Situation kann der Attestierungsserver (IAS) garantieren, dass ein solcher öffentlicher Schlüssel durch eine legitime SGX-Enklave erzeugt wurde. Mit anderen Worten, kann der IAS als Notarsystem handeln, das attestiert, dass eine bestimmte SGX-Enklave (welche die Attribute aufweist, die in dem Zitat spezifiziert sind) einen öffentlichen Schlüssel ausgegeben hat. Der IAS kann zum Beispiel eine ähnliche Rolle als CA im TLS-Bereich übernehmen. In einigen Ausführungsformen kann der öffentliche Schlüssel verwendet werden, um Daten zu authentifizieren, die von einer Enklave stammen, die sie ausgegeben hat (z. B. als symmetrischen Schlüssel, um einen sicheren Kanal herzustellen). Wie unten mit Bezug auf 6B beschrieben, müssen zum Beispiel zwei entfernte Enklaven (die durch eine Client-Anwendung und eine Server-Anwendung, die der in 4 veranschaulichten ähnlich ist, betrieben werden) möglicherweise einen symmetrischen Sitzungsschlüssel S sicher austauschen.
  • Beginnend auf der Client-Seite kann eine SGX-Enklave bei 602 ein öffentlich-privates Schlüsselpaar (SK, PK) unter Verwendung bekannter Verschlüsselungstechniken für öffentlich-private Schlüssel erzeugen. Zum Beispiel kann die SGX-Enklave bei 604 einen kryptographischen Hash H von PK unter Verwendung bekannter kryptographischer Hash-Techniken wie etwa SHA-1 oder SHA-256, berechnen. Bei 606 kann die SGX-Enklave eine SGX-Meldung R erstellen, die den Hash H beinhaltet. Bei 608 kann eine Client-Anwendung ein SGX-Zitat Q auf der Meldung R von einer Zitat-Enklave erhalten, die, wie oben beschrieben, als eine separate Komponente innerhalb einer Client-Einrichtung enthalten sein kann, die auch eine SGX-Enklave enthält. Bei 610 kann die Client-Anwendung zum Beispiel eine Fernattestierungsantwort RA auf Q vom IAS erhalten oder andere Attestierungsdienste in anderen Ausführungsformen verwenden. Bei 612 kann eine Anwendung RA und PK (Q, H, R kann in RA enthalten sein) an eine oder mehrere Server-Anwendungen senden, die auf einem oder mehreren jeweiligen Servern untergebracht sind, die jeder eine jeweilige sichere Enklave, wie etwa eine SGX-Enklave enthalten.
  • Mit Bezug auf die Server-Seite kann nun eine Anwendung bei 614 RA und PK in eine server-seitige SGX-Enklave kopieren. Bei 616 kann die server-seitige SGX-Enklave die öffentliche IAS-Meldungsschlüsselsignatur auf RA prüfen. Bei 618 kann, wenn die Signatur nicht gültig ist, der Logikfluss mit 634 enden. Wenn sie gültig ist, kann die server-seitige SGX-Enklave bei 620 prüfen, ob ein kryptographischer Hash von PK mit H übereinstimmt. Wenn bei 622 keine Übereinstimmung vorliegt, kann der Logikfluss bei 634 enden. Wenn eine Übereinstimmung vorliegt, kann die server-seitige SGX-Enklave bei 624 den öffentlichen Schlüssel der client-seitigen SGX-Enklave akzeptieren. Im Gegenzug kann die server-seitige SGX-Enklave bei 625 ihren öffentlichen Schlüssel an die client-seitige SGX-Enklave auf eine ähnliche Weise wie oben mit Bezug auf die Schritte 602-624 beschrieben senden, und der Prozess kann mit umgekehrten Rollen von Server und Client wiederholt werden, wobei die Schritte 602-622 unter Nutzung des öffentlichen Schlüssels der server-seitigen SGX-Enklave wiederholt werden können. Auf diese Weise können Geheimnisse zwischen der Client- und Server-SGX-Enklave hin und her geschickt werden, wie unten mit Bezug auf 6B dargelegt.
  • In einigen Ausführungsformen kann es sich verstehen, dass zusätzlich zu dem oben beschriebenen verknüpfbare Zitate verwendet werden können, um eine eindeutige Kennung für einen Prozessor, der eine SGX-Enklave laufen lässt, zu erhalten. Diese Kennung kann zum Beispiel das eindeutige EPID-Pseudonym sein, das in der IAS-Antwort enthalten ist. Dieses Merkmal kann verwendet werden, um die Anzahl der ausgegebenen öffentlichen Schlüssel für Anwendungen, die diese Begrenzung benötigen, auf einen pro SGX-Prozessor zu beschränken. Diese Begrenzung kann die Anonymität, die durch die EPID bereitgestellt wird, kosten. Da jede SGX Plattform jetzt durch das EPID-Pseudonym identifiziert ist, kann die Anonymität in dieser Ausführungsform auf ‚Pseudonymität‘ reduziert werden.
  • 6B veranschaulicht einen Logikfluss 601 gemäß einer Ausführungsform. Bei 626 kann die client-seitige SGX-Enklave einen geheimen Schlüssel S unter Verwendung von PK: C=E=PK, S) signieren und verschlüsseln. Bei 628 kann die Anwendung C an die server-seitige SGX-Enklave senden. Mit Bezug auf die Server-Seite kann die Anwendung bei 630 C in die server-seitige SGX-Enklave kopieren. Bei 632 kann die server-seitige SGX-Enklave einen geheimen Schlüssel S=D (SK, C) erhalten und die Signatur der client-seitigen SGX-Enklave verifizieren. Es versteht sich, dass der Logikfluss der 6B in einigen Ausführungsformen auch in der entgegengesetzten Richtung durchgeführt werden kann, d. h. von der server-seitigen SGX-Enklave zur client-seitigen SGX-Enklave.
  • 7 veranschaulicht einen Herstellungsartikel gemäß einer Ausführungsform. Das Speichermedium 700 kann irgendein computerlesbares Speichermedium oder maschinenlesbares Speichermedium, wie etwa ein optisches, magnetisches oder Halbleiterspeichermedium umfassen. In einigen Ausführungsformen kann das Speichermedium 700 ein nichtvergängliches Speichermedium umfassen. In verschiedenen Ausführungsformen kann das Speichermedium 700 einen Herstellungsartikel umfassen. In einigen Ausführungsformen kann das Speichermedium 700 zum Beispiel computerausführbare Instruktionen speichern, wie etwa computerausführbare Instruktionen zur Implementierung von Logikflüssen 500, 600 und/oder 601. Beispiele für ein computerlesbares Speichermedium oder maschinenlesbares Speichermedium können beliebige greifbare Medien enthalten, die zur Speicherung elektronischer Daten fähig sind, einschließlich flüchtige Speicher oder nichtflüchtige Speicher, entfernbare oder nichtentfernbare Speicher, löschbare oder nichtlöschbare Speicher, beschreibbare oder wiederbeschreibbare Speicher und so weiter. Beispiele für computerausführbare Instruktionen können jede beliebige geeignete Art von Code umfassen, wie etwa 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.
  • 8 veranschaulicht ein Blockdiagramm eines zentralisierten Systems 800. Das zentralisierte System 800 kann einige oder alle der Strukturen und/oder Vorgänge für das Webdienstsystem 820 in einer einzigen Rechenentität, wie etwa vollständig innerhalb einer einzigen Einrichtung 810 implementieren.
  • Die Einrichtung 810 kann irgendeine elektronische Einrichtung umfassen, die zum Empfang, zur Verarbeitung und zum Senden von Informationen für das Webdienstsystem 820 fähig ist. Beispiele einer elektronischen Einrichtung können in nicht einschränkender Weise eine Client-Einrichtung, einen persönlichen digitalen Assistenten (PDA), eine mobile Recheneinrichtung, ein Smartphone, ein Mobiltelefon, eBook-Reader, eine Nachrichtenübermittlungseinrichtung, einen Computer, einen Personal-Computer (PC), einen Desktop-Computer, einen Laptop-Computer, einen Notebook-Computer, einen Netbook-Computer, einen tragbaren Computer, einen Tablet-Computer, einen Server, eine Serveranordnung oder Serverfarm, einen Webserver, einen Netzwerkserver, einen Internetserver, eine Workstation, ein Netzwerkgerät, ein Webgerät, ein verteiltes Rechensystem, Multiprozessorsysteme, prozessorbasierte Systeme, Unterhaltungselektronik, programmierbare Unterhaltungselektronik, Spieleinrichtungen, Fernsehen, Set-Top-Box, drahtlosen Zugriffspunkt, Basisstation, Teilnehmerstation, Mobilfunkvermittlungsstelle, Funknetzwerkcontroller, Router, Hub, Gateway, Brücke, Schalter, Maschine oder Kombination daraus enthalten. Die Ausfiihrungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Die Einrichtung 810 kann für das Webdienstsystem 820 Verarbeitungsvorgänge oder -logik unter Verwendung einer Verarbeitungskomponente 830 ausführen. Die Verarbeitungskomponente 830 kann verschiedene Hardwareelemente, Softwareelemente oder eine Kombination von beiden umfassen. Beispiele für Hardwareelemente können Einrichtungen, Logikeinrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Prozessorschaltungen, Schaltungselemente (z.B. Transistoren, Widerstände, Kondensatoren, Induktoren, und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikeinrichtungen (PLD), Digitalsignalprozessoren (DSP), feldprogrammierbare Gate-Arrays (FPGA), Speichereinheiten, Logikgatter, Register, Halbleitereinrichtung, Chips, Mikrochips, Chip-Gruppen und so weiter enthalten. Beispiele für Softwareelemente können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwenderprogramme, Systemprogramme, Softwareentwicklungsprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Teilroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API), Befehlssätze, Rechen-Code, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination daraus enthalten. Das Bestimmen, ob eine Ausführungsform unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird kann gemäß irgendeiner Anzahl von Faktoren variieren, wie etwa gewünschte Rechengeschwindigkeit, Leistungspegel, Wärmetoleranzen, Budget des Verarbeitungszyklus, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Bau- und Leistungs-Randbedingungen, wie für eine gegebene Implementierung gewünscht.
  • Die Einrichtung 810 kann für das Webdienstsystem 820 Kommunikationsvorgänge oder -logik unter Verwendung einer Kommunikationskomponente 840 ausführen. Die Kommunikationskomponente 840 kann irgendwelche bekannten Kommunikationstechniken und -Protokolle implementieren, wie etwa Techniken, die für die Verwendung in paketvermittelten Netzwerken (z.B. öffentliche Netzwerke wie etwa das Internet, private Netzwerke wie etwa ein Unternehmensintranet und so weiter), leitungsvermittelten Netzwerken (z.B. das öffentliche Fernsprechnetz) oder einer Kombination von paketvermittelten Netzwerken und leitungsvermittelten Netzwerken (mit geeigneten Gateways und Compilern) geeignet sind. Die Kommunikationskomponente 840 kann verschiedene Arten von Standard-Kommunikationselementen, wie etwa eine oder mehrere Kommunikationsschnittstellen, Netzwerkschnittstellen, Netzwerkschnittstellenkarten (NIC), Radios, drahtlose Sender/Empfänger (Transceiver), kabelgebundene und/oder drahtlose Kommunikationsmedien, physische Verbinder und so weiter enthalten. Beispielhaft und in nicht einschränkender Weise enthalten Kommunikationsmedien 809, 849 kabelgebundene Kommunikationsmedien und drahtlose Kommunikationsmedien. Beispiele für kabelgebundene Kommunikationsmedien können eine Leitung, Kabel, Metallleitungen, Leiterplatten (PCB), Backplanes, Switch-Fabric, Halbleitermaterial, verdrilltes Leitungspaar, Koaxialkabel, Glasfasertechnik, ein weitergeleitetes Signal und so weiter enthalten. Beispiele für drahtlose Kommunikationsmedien können Akustik, Funkfrequenz(RF)-Spektren, Infrarot und andere drahtlose Medien enthalten.
  • Die Einrichtung 810 kann mit anderen Einrichtungen 805, 845 über ein jeweiliges Kommunikationsmedium 809, 849 unter Verwendung von jeweiligen Kommunikationssignalen 807, 847 über die Kommunikationskomponente 840 kommunizieren. Die Einrichtungen 805, 845 können intern oder extern der Einrichtung 810 liegen, wie für eine gegebene Implementierung gewünscht.
  • Zum Beispiel kann die Einrichtung 805 einer Client-Einrichtung entsprechen, etwa ein durch einen Benutzer verwendetes Telefon. Die über Medien 809 geschickten Signale 807 können deshalb Kommunikation zwischen dem Telefon und dem Webdienstsystem 820 umfassen, in der das Telefon eine Anforderung überträgt und eine Webseite oder andere Daten als Antwort empfängt.
  • Die Einrichtung 845 kann einer zweiten Benutzereinrichtung, die durch einen anderen Benutzer als dem oben beschriebenen ersten Benutzer verwendet wird, entsprechen. In einer Ausführungsform kann die Einrichtung 845 dem Webdienstsystem 820 unter Verwendung von Signalen 847, die über Medien 849 geschickt werden, Informationen bereitstellen, um eine Einladung für den ersten Benutzer aufzubauen, den durch das Webdienstsystem 820 angebotenen Diensten beizutreten. Wenn zum Beispiel das Webdienstsystem 820 einen Dienst eines sozialen Netzwerks umfasst, können die als Signale 847 geschickten Informationen einen Namen und Kontaktinformationen für den ersten Benutzer enthalten, wobei die Kontaktinformationen eine Telefonnummer oder andere Informationen beinhalten, die später durch das Webdienstsystem 820 verwendet werden, um eine eingehende Anforderung von dem Benutzer zu erkennen. In anderen Ausführungsformen kann die Einrichtung 845 einer Einrichtung entsprechen, die von einem anderen Benutzer verwendet wird, der ein Freund des ersten Benutzers auf einem Dienst eines sozialen Netzwerks ist, wobei die Signale 847 Statusinformationen, Nachrichten, Bilder, Kontaktinformationen oder andere Informationen zum sozialen Networking enthalten, die schließlich an die Einrichtung 805 zur Ansicht durch den ersten Benutzer als Teil der Funktionalität des sozialen Networkings des Webdienstsystems 820 übertragen werden.
  • 9 veranschaulicht ein Blockdiagramm eines verteilten Systems 900. Das verteilte System 900 kann Abschnitte der Struktur und/oder Vorgänge für die offenbarten Ausführungsformen über mehrere Rechenentitäten verteilen. Beispiele für ein verteiltes System 900 können in nicht einschränkender Weise eine Client/Server-Architektur, eine 3-Tier-Architektur, eine N-Tier-Architektur, eine eng gekoppelte oder Cluster-Architektur, eine Peer-to-Peer-Architektur, eine Masterslave-Architektur, eine Architektur gemeinsam genutzter Datenbanken und andere Arten von verteilten Systemen umfassen. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Das verteilte System 900 kann eine Client-Einrichtung 910 und eine Server-Einrichtung 940 umfassen. Im Allgemeinen können die Client-Einrichtung 910 und die Server-Einrichtung 940 gleich oder ähnlich der anhand von 8 beschriebenen Client-Einrichtung 810 sein. Zum Beispiel können das Client-System 910 und das Server-System 940 jeweils eine Verarbeitungskomponente 920, 950 und eine Kommunikationskomponente 930, 960 umfassen, die gleich oder ähnlich der Verarbeitungskomponente 830 bzw. der Kommunikationskomponente 840, wie in 8 beschrieben, sind. In einem anderen Beispiel können die Einrichtungen 910, 940 über Kommunikationsmedien 605 unter Verwendung von Kommunikationssignalen 907 über die Kommunikationskomponenten 930, 960 kommunizieren.
  • Die Client-Einrichtung 910 kann ein oder mehrere Client-Programme verwenden, die arbeiten, um verschiedene Methodiken gemäß den beschriebenen Ausführungsformen durchzuführen. In einer Ausführungsform kann die Client-Einrichtung 910 zum Beispiel einige Schritte, die mit Bezug auf 5 und 6A-B beschrieben wurden, implementieren.
  • Die Server-Einrichtung 940 kann ein oder mehrere Server-Programme verwenden, die arbeiten, um verschiedene Methodiken gemäß den beschriebenen Ausführungsformen durchzuführen. In einer Ausführungsform kann die Server-Einrichtung 940 zum Beispiel einige Schritte, die mit Bezug auf 5 und 6A-B beschrieben wurden, implementieren.
  • 10 veranschaulicht eine Ausführungsform einer beispielhaften Rechnerarchitektur 700, die zur Implementierung verschiedener Ausführungsformen, wie zuvor beschrieben, geeignet ist. In einer Ausführungsform kann die Rechnerarchitektur 1000 einen Teil einer elektronischen Einrichtung umfassen oder als Teil einer solchen implementiert sein. Beispiele für eine elektronische Einrichtung können die hierin beschriebenen enthalten. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Wie in dieser Anmeldung verwendet, sollen sich die Begriffe „System“ und „Komponente“ auf eine mit einem Computer verbundene Entität beziehen, entweder Hardware, eine Kombination aus Hardware und Software, Software oder Software in Ausführung, Beispiele dafür werden durch die beispielhafte Rechnerarchitektur 1000 gegeben. Zum Beispiel kann eine Komponente, in nicht einschränkender Weise, ein Prozess sein, der auf einem Prozessor, einem Festplattenlaufwerk, mehreren Speicherlaufwerken (eines optischen und/oder magnetischen Speichermediums), einem Objekt, einer ausführbaren Datei, einem Ausführungsstrang, einem Programm und/oder einem Computer läuft. Zur Veranschaulichung: Sowohl eine Anwendung, die auf einem Server läuft, als auch der Server können eine Komponente. Eine oder mehrere Komponenten können innerhalb eines Prozesses und/oder Ausführungsstrangs untergebracht sein, und eine Komponente kann sich auf einem Computer befinden und/oder auf zwei oder mehr Computer verteilt sein. Des Weiteren können Komponenten kommunikativ miteinander durch verschiedene Arten von Kommunikationsmedien gekoppelt sein, um Vorgänge zu koordinieren. Die Koordination kann den unidirektionalen oder bidirektionalen Informationsaustausch einschließen. So können die Komponenten etwa Informationen in der Form von über die Kommunikationsmedien kommunizierten Signalen kommunizieren. Die Informationen können als Signale implementiert sein, die verschiedenen Signalleitungen zugeteilt sind. In solchen Zuteilungen ist jede Mitteilung ein Signal. Weitere Ausführungsformen können jedoch alternativ Datenmitteilungen verwenden. Solche Datenmitteilungen können über verschiedene Verbindungen geschickt werden. Beispielhafte Verbindungen enthalten parallele Schnittstellen, serielle Schnittstellen und Busschnittstellen.
  • Die Rechnerarchitektur 1000 beinhaltet verschiedene gemeinsame Rechnerelemente, wie etwa einen oder mehrere Prozessoren, Mehrkern-Prozessoren, Coprozessoren, Speichereinheiten, Chipsätze, Controller, Peripheriegeräte, Schnittstellen, Oszillatoren, Timing-Geräte, Videokarten, Audiokarten, Multimedia-Eingabe/Ausgabe(I/O)-Komponenten, Stromversorgungen und so weiter. Die Ausführungsformen sind jedoch nicht auf die Implementierung durch die Rechnerarchitektur 1000 beschränkt.
  • Wie in 10 dargestellt, umfasst die Rechnerarchitektur 1000 eine Verarbeitungseinheit 1004, einen Systemspeicher 1006 und einen Systembus 1008. Die Verarbeitungseinheit 1004 kann irgendeiner aus verschiedenen handelsüblichen Prozessoren sein, einschließlich, in nicht einschränkender Weise, AMD® Athlon®, Duron® und Opteron®-Prozessoren, ARM®-Anwendung, eingebettete und sichere Prozessoren, IBM®- und Motorola® DragonBall®- und PowerPC®-Prozessoren, IBM- und Sony® Cell-Prozessoren, Intel® Celeron®, Core (2) Duo®, Itanium®, Pentium®, Xeon®, und XScale®-Prozessoren und ähnliche Prozessoren. Dual-Mikroprozessoren, Mehrkern-Prozessoren und andere Mehrprozessor-Architekturen können ebenfalls als Verarbeitungseinrichtung 1004 verwendet werden.
  • Der Systembus 1008 stellt eine Schnittstelle für Systemkomponenten bereit, einschließlich u. a. den Systemspeicher 1006 für die Verarbeitungseinheit 1004. Der Systembus 1008 kann eine beliebige von mehreren Arten von Busstrukturen sein, die ferner mit einem Speicherbus (mit oder ohne Speichercontroller), einem Peripheriebus und einem lokalen Bus unter Verwendung einer Vielzahl von handelsüblichen Busarchitekturen verbunden sein können. Schnittstellenadapter können über eine Steckplatzarchitektur mit dem Systembus 1008 verbunden sein. Beispielhafte Steckplatzarchitekturen können u.a. 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 enthalten.
  • Die Rechnerarchitektur 1000 kann verschiedene Herstellungsartikel umfassen oder implementieren. Ein Herstellungsartikel kann ein computerlesbares Speichermedium umfassen, um Logik zu speichern. Beispiele für ein computerlesbares Speichermedium können beliebige greifbare Medien enthalten, die zur Speicherung elektronischer Daten fähig sind, einschließlich flüchtige Speicher oder nichtflüchtige Speicher, entfernbare oder nichtentfernbare Speicher, löschbare oder nichtlöschbare Speicher, beschreibbare oder wiederbeschreibbare Speicher und so weiter. Beispiele für Logik können ausführbare Computerprogramminstruktionen enthalten, die unter Verwendung irgendeiner geeigneten Art von Code, wie etwa Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code, objektorientierten Code, visuellen Code und dergleichen implementiert werden. Ausführungsformen können auch zumindest teilweise als Instruktionen implementiert werden, die in oder auf einem nichtvergänglichen, computerlesbaren Medium beinhaltet sind, die durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können, um die Durchführung der hier beschriebenen Vorgänge zu ermöglichen.
  • Systemspeicher 1006 kann verschiedene Arten computerlesbarer Speichermedien in Form von einer oder mehreren Speichereinheiten mit höheren Geschwindigkeiten enthalten, wie zum Beispiel Nur-Lese-Speicher (Read-Only Memory, ROM), Direktzugriffsspeicher (Random-Access Memory, RAM), dynamischen RAM (DRAM), Doppel-Datenraten DRAM (Double-Data-Rate DRAM, DDRAM), synchronen DRAM (SDRAM), statischen RAM (SRAM), programmierbaren ROM (PROM), löschbaren programmierbaren ROM (Erasable Programmable ROM, EPROM), elektrisch löschbaren programmierbaren ROM (Electrically Erasable Programmable, EEPROM), Flash-Speicher, Polymerspeicher wie z. B. ferroelektrischer Polymerspeicher, Ovonic-Speicher, Phasenwechsel- oder ferroelektrischer Speicher, SONOS(Silicon-Oxide-Nitride-Oxide-Silicon)-Speicher, magnetische oder optische Karten, ein Array von Geräten, wie etwa Redundant Array of Independent Disks(RAID)-Laufwerke, Solid-State-Speichereinrichtungen (z. B. USB-Speicher, Solid-State-Drives (SSD)) und jede andere Art von Speichermedium, das zum Speichern von Information geeignet ist. In der in 10 veranschaulichten Ausführungsform kann der Systemspeicher 1006 einen nichtflüchtigen Speicher 1010 und/oder flüchtigen Speicher 1013 enthalten. Ein Basic Input/Output System (BIOS) kann im nichtflüchtigen Speicher 1010 gespeichert sein.
  • Der Computer 1002 kann verschiedene Arten von computerlesbarem Speichermedium in Form von einer oder mehreren Speichereinheiten mit niedrigerer Geschwindigkeiten enthalten, einschließlich eines internen (oder externen) Festplattenlaufwerks (HDD) 1014, eines magnetischen Diskettenlaufwerks (FDD) 1016, um von einem Magnet-Wechseldatenträger 1018 zu lesen und darauf zu schreiben, und eines optischen Disklaufwerks 1020, um von einem optischen Wechseldatenträger 1022 (z. B. eine CD-ROM, DVD, oder Blu-ray) zu lesen oder darauf zu schreiben. Das HDD 1014, FDD 1016 und das optische Disklaufwerk 1020 können durch eine HDD-Schnittstelle 1024, eine FDD-Schnittstelle 1026 bzw. eine Schnittstelle für ein optisches Laufwerk 1028 mit dem Systembus 1008 verbunden werden. Die HDD-Schnittstelle 1024 für die Implementierung externer Laufwerke kann mindestens eine oder beide Technologien von USB-Schnittstelle (Universal Serial Bus) und/oder IEEE 1394-Schnittstelle beinhalten.
  • Die Laufwerke und zugehörigen computerlesbaren Medien sorgen für eine flüchtige und/oder nichtflüchtige Speicherung von Daten, Datenstrukturen, computerausführbaren Instruktionen und so weiter. Zum Beispiel können eine Anzahl von Programmmodulen auf den Laufwerken und Speichereinheiten 1010, 1013 gespeichert werden, einschließlich Betriebssystem 1030, ein oder mehrere Anwendungsprogramme 1032, andere Programmmodule 1034 und Programmdaten 1036. Bei einer Ausführungsform können das eine oder die mehreren Anwendungsprogramme 1032, andere Programmmodule 1034 und Programmdaten 1036 zum Beispiel die verschiedenen Anwendungen und/oder Komponenten enthalten, um die offenbarten Ausführungsformen zu implementieren.
  • Ein Benutzer kann Befehle und Informationen in den Computer 1002 über eine oder mehrere kabelgebundene/drahtlose Eingabeeinrichtungen eingeben, zum Beispiel eine Tastatur 1038 und ein Zeigegerät, wie zum Beispiel eine Maus 1040. Andere Eingabegeräte können Mikrofone, Infrarot-(IR-)Fernbedienungen, Funkfrequenz-(RF-)Fernbedienungen, Gamepads, Stylusstifte, Kartenleser, Dongles, Fingerabdruckleser, Handschuhe, Grafik-Tablets, Joysticks, Tastaturen, Retina-Leser, Touchscreens (z. B. kapazitiv, resistiv usw.), Trackballs, Trackpads, Sensoren, Stylus und dergleichen beinhalten. Diese und andere Eingabegeräte werden mit der Verarbeitungseinheit 1004 häufig über eine Eingabeeinrichtungsschnittstelle 1042 verbunden, die mit dem Systembus 1008 gekoppelt ist, können aber auch durch andere Schnittstellen, wie einen parallelen Anschluss, seriellen IEEE 1394-Anschluss, einen Gameport, einen USB-Anschluss, eine IR-Schnittstelle und so weiter verbunden werden.
  • Ein Display 1044 ist ebenfalls mit dem Systembus 1008 über eine Schnittstelle, wie etwa einen Videoadapter 1046, verbunden. Das Display 1044 kann sich innerhalb oder außerhalb des Computers 1002 befinden. Neben dem Display 1044 enthält ein Computer typischerweise noch andere periphere Ausgabeeinrichtungen wie Lautsprecher, Drucker und so weiter.
  • Der Computer 1002 kann in einer vernetzten Umgebung unter Verwendung logischer Verbindungen über kabelgebundene und/oder drahtlose Kommunikation zu einem oder mehreren Remote-Computern arbeiten, wie etwa einem Remote-Computer 1048. Der Remote-Computer 1048 kann eine Workstation, ein Servercomputer, ein Router, ein Personal-Computer, tragbarer Computer, mikroprozessorbasierter Unterhaltungsapparat, eine Peer-Einrichtung oder ein anderer gängiger Netzwerkknoten sein und beinhaltet typischerweise viele oder alle der Elemente, die in Verbindung mit dem Computer 1002 beschrieben sind, auch wenn der Kürze halber nur eine Speichereinrichtung 1050 veranschaulicht ist. Die abgebildeten logischen Verbindungen enthalten kabelgebundene/drahtlose Konnektivität zu einem Local Area Network (LAN) 1052 und/oder größeren Netzwerken, zum Beispiel einem Wide Area Network (WAN) 1054. Solche LAN- und WAN-Netzwerkumgebungen sind in Büros und Unternehmen weitverbreitet und vereinfachen unternehmensweite Computernetzwerke, wie etwa Intranets, die alle mit einem globalen Kommunikationsnetzwerk, zum Beispiel dem Internet verbunden sein können.
  • Bei Verwendung in einer LAN-Netzwerkumgebung ist der Computer 1002 mit dem LAN 1052 über eine kabelgebundene und/oder drahtlose Kommunikationsnetzwerkschnittstelle oder Adapter 1056 verbunden. Der Adapter 1056 kann die kabelgebundene und/oder drahtlose Kommunikation mit dem LAN 1052 vereinfachen, was auch einen drahtlosen Zugangspunkt enthalten kann, der daran zur Kommunikation mit der drahtlosen Funktionalität des Adapters 1056 angeordnet ist.
  • Bei Verwendung in einer WAN-Netzwerkumgebung kann der Computer 1002 ein Modem 1058 beinhalten oder ist mit einem Kommunikationsserver auf dem WAN 1054 verbunden oder weist andere Mittel für die Herstellung der Kommunikation über das WAN 1054, wie zum Beispiel mithilfe des Internet, auf. Das Modem 1058, das intern oder extern und ein kabelgebundenes und/oder drahtloses Gerät sein kann, ist mit dem Systembus 1008 über die Eingabeeinrichtungsschnittstelle 1042 verbunden. In einer vernetzten Umgebung können Programmmodule, die in Verbindung mit Computer 1002 oder Abschnitten davon abgebildet sind, im Remote-Hauptspeicher-/Datenspeichereinrichtung 1050 gespeichert werden. Es versteht sich, dass die gezeigten Netzwerkverbindungen beispielhaft sind und andere Mittel der Herstellung von Kommunikationsverbindungen zwischen den Computern verwendet werden können.
  • Der Computer 1002 ist betreibbar, um unter Verwendung der Familie der IEEE 802-Standards mit kabelgebundenen und drahtlosen Einrichtungen oder Entitäten zu kommunizieren, wie etwa drahtlosen Geräten, die in der drahtlosen Kommunikation wirksam angeordnet sind (z. B. IEEE 802.11 Over-the-Air-Modulationstechniken). Dies umfasst mindestens WiFi (oder Wireless Fidelity), WiMax- und Bluetooth™-Drahtlostechnologien. Daher kann die Kommunikation eine vordefinierte Struktur wie bei einem konventionellen Netzwerk oder einfach eine Ad-hoc-Kommunikation zwischen mindestens zwei Geräten sein. WiFi-Netzwerke nutzen Funktechnologien namens IEEE 802.11x (a, b, g, n usw.), um sichere, zuverlässige, schnelle schnurlose Konnektivität bereitzustellen. Ein WiFi-Netzwerk kann verwendet werden, um Computer miteinander, mit dem Internet und mit kabelgebundenen Netzwerken (die mit IEEE 802.3 verbundene Medien und Funktionen verwenden) zu verbinden.
  • 11 veranschaulicht ein Blockdiagramm einer beispielhaften Kommunikationsarchitektur 1100, die für die Implementierung verschiedener Ausführungsformen, wie zuvor beschrieben, geeignet ist. Die Kommunikationsarchitektur 1100 enthält verschiedene übliche Kommunikationselemente, wie etwa einen Sender, Empfänger, Transceiver, Funk, Netzwerkschnittstelle, Basisbandprozessor, Antenne, Verstärker, Filter, Energieversorgungen und so weiter. Die Ausführungsformen sind jedoch nicht auf eine Implementierung durch die Kommunikationsarchitektur 1100 beschränkt.
  • Wie in 11, umfasst die Kommunikationsarchitektur 1100 einen oder mehrere Clients 1110 und Server 1140. Die Clients 1110 können zum Beispiel die Client-Einrichtung 1110 implementieren. Die Server 1140 können zum Beispiel die Server-Einrichtung 1140 implementieren. Clients 1110 und Server 1140 sind mit einem oder mehreren jeweiligen Client-Datenspeichern 1120 und Serverdatenspeichern 1150 wirkverbunden, die genutzt werden können, um Informationen lokal auf den jeweiligen Clients 1110 und Servern 1140 zu speichern, wie etwa Cookies und/oder zugehörige Kontext-Informationen.
  • Clients 1110 und Server 1140 können unter Verwendung eines Kommunikationsrahmens 1130 untereinander Informationen kommunizieren. Der Kommunikationsrahmen 1130 kann beliebige bekannte Kommunikationstechniken und Protokolle implementieren. Der Kommunikationsrahmen 1130 kann als paketvermitteltes Netzwerk (z.B. öffentliche Netzwerke wie etwa das Internet, private Netzwerke wie etwa ein Unternehmensintranet und so weiter), als leitungsvermitteltes Netzwerk (z.B. das öffentliche Fernsprechnetz) oder als eine Kombination von paketvermittelten Netzwerken und leitungsvermittelten Netzwerken (mit geeigneten Gateways und Compilern) implementiert sein.
  • Der Kommunikationsrahmen 1130 kann verschiedene Netzwerkschnittstellen implementieren, die angeordnet sind, um ein Kommunikationsnetz zu akzeptieren, mit diesem zu kommunizieren und um sich mit diesem zu verbinden. Eine Netzwerkschnittstelle kann als spezielle Form einer Eingabe-/Ausgabeschnittstelle betrachtet werden. Netzwerkschnittstellen können Verbindungsprotokolle einsetzen, einschließlich ohne darauf beschränkt zu sein: Direktverbindung, Ethernet (z. B. Thick, Thin, Twisted Pair 10/100/1000 Base T und dergleichen), Token Ring, drahtlose Netzwerkschnittstellen, Mobilfunknetzschnittstellen IEEE 802.11a-x-Netzwerkschnittstellen, IEEE 802.16-Netzwerkschnittstellen, IEEE 802.20-Netzwerkschnittstellen und dergleichen. Des Weiteren können mehrere Netzwerkschnittstellen verwendet werden, um verschiedene Kommunikationsnetzwerkarten einzubeziehen. Zum Beispiel können mehrere Netzwerkschnittstellen eingesetzt werden, um die Kommunikation über Broadcast-, Multicast- und Unicast-Netzwerke zu ermöglichen. Sollten Verarbeitungsanforderungen eine größere Geschwindigkeit und Kapazität vorschreiben, können verteilte Netzwerkcontrollerarchitekturen ähnlich eingesetzt werden, um die Kommunikationsbandbreite, die von Clients 1110 und Servern 1140 benötigt wird, durch Pooling, Lastverteilung oder sonstiges zu erhöhen. Ein Kommunikationsnetzwerk kann ein beliebiges oder eine Kombination aus kabelgebundenen und/oder drahtlosen Netzwerken sein, einschließlich, ohne darauf beschränkt zu sein, eine direkte Verbindung, eine gesicherte benutzerspezifische Verbindung, ein privates Netzwerk (z. B. ein Unternehmens-Intranet), ein öffentliches Netzwerk (z. B das Internet), ein Personal Area Network (PAN), ein Local Area Network (LAN), ein Metropolitan Area Network (MAN), ein Operating Missions as Nodes on the Internet (OMNI), ein Wide Area Network (WAN), ein drahtloses Netzwerk, ein Mobilfunknetzwerk und andere Kommunikationsnetzwerke.
  • Einige Ausführungsformen können unter Verwendung des Begriffes „eine Ausführungsform“ zusammen mit ihren Ableitungen beschrieben werden. Diese Begriffe bedeuten, dass ein bestimmtes Merkmal, eine Struktur oder Charakteristikum, das in Verbindung mit der Ausführungsform beschrieben wird, in zumindest einer Ausführungsform enthalten ist. Die an verschiedenen Stellen in der Patentbeschreibung vorkommende Formulierung „in einer Ausführungsform““ bezieht sich nicht notwendigerweise immer auf dieselbe Ausführungsform. Ferner können einige Ausführungsformen unter Verwendung der Ausdrücke „gekoppelt“ und „verbunden“ bzw. der davon abgeleiteten Wörter beschrieben sein. Diese Begriffe sollen nicht unbedingt als Synonyme füreinander benutzt werden. Zum Beispiel können einige Ausführungsformen unter Verwendung des Begriffs „verbunden“ und/oder „gekoppelt“ beschrieben sein, um anzugeben, dass sich zwei oder mehr Elemente in einem direkten physischen oder elektrischen Kontakt miteinander befinden. Der Begriff „gekoppelt,“ kann jedoch auch bedeuten, dass sich zwei oder mehr Elemente nicht in einem direkten Kontakt miteinander befinden, aber trotzdem zusammenwirken oder miteinander interagieren.
  • Allgemein werden anhand der hierin verwendeten Notation und Nomenklatur die detaillierten Beschreibungen hierin in Bezug auf Programmprozeduren, die auf einem Computer oder Netzwerk von Computern ausgeführt werden, dargestellt. Diese prozeduralen Beschreibungen und Darstellungen werden vom Fachmann verwendet, um einem anderen Fachmann den maßgeblichen Inhalt seiner Arbeit in möglichst effektiver Weise zu vermitteln.
  • Eine Prozedur wird hier und im Allgemeinen als eine folgerichtige Sequenz von Vorgängen, die zu einem gewünschten Ergebnis führen, verstanden. Diese Vorgänge erfordern physikalische Manipulationen physikalischer Größen. Üblicherweise, aber nicht notwendigerweise, nehmen diese Größen die Form von elektrischen, magnetischen oder optischen Signalen an, die in der Lage sind, gespeichert, übertragen, kombiniert, verglichen und in anderer Weise manipuliert zu werden. Es erweist sich zuweilen als günstig, hauptsächlich aus Gründen der üblichen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen. Es sei jedoch angemerkt, dass all diese und ähnliche Begriffe den geeigneten physikalischen Größen zuzuordnen sind und lediglich praktische Bezeichnungen sind, die auf diese Größen angewendet werden.
  • Ferner werden diese durchgeführten Manipulationen oft mit Begriffen wie z. B. hinzufügen oder vergleichen bezeichnet, die üblicherweise geistigen Arbeitsschritten zugeordnet werden, die von einem menschlichen Bediener durchgeführt werden. Es ist jedoch keine derartige Fähigkeit eines menschlichen Bedieners in irgendeiner der hier beschriebenen Vorgänge, die Teil einer oder mehrerer Ausführungsformen sind, notwendig oder in den meisten Fällen auch nicht wünschenswert. Vielmehr sind diese Vorgänge maschinelle Vorgänge. Nützliche Maschinen zur Durchführung von Vorgängen verschiedener Ausführungsformen umfassen digitale Allzweck-Computer oder ähnliche Einrichtungen.
  • Verschiedene Ausführungsformen betreffen auch Vorrichtungen oder Systeme zur Durchführung dieser Vorgänge. Diese Vorrichtung kann speziell für den geforderten Zweck aufgebaut sein, oder sie kann einen Allzweck-Computer umfassen, wie durch ein im Computer gespeichertes Computerprogramm wahlweise aktiviert oder rekonfiguriert. Die hierin dargestellten Prozeduren sind nicht von Natur aus an einen bestimmten Computer oder andere Vorrichtung gebunden. Verschiedene Allzweck-Maschinen können mit Programmen, die entsprechend den Lehren hierin geschrieben wurden, verwendet werden, oder es kann sich auch als günstig erweisen, eine noch spezialisiertere Vorrichtung zu konstruieren, um die erforderlichen Verfahrensschritte durchzuführen. Die erforderliche Struktur für eine Vielfalt dieser Maschinen ergibt sich aus der gegebenen Beschreibung.
  • Aus der vorstehenden Detaillierten Beschreibung ist ersichtlich, dass verschiedene Merkmale in einer einzigen Ausführungsform zusammengefasst sind, um die Offenbarung zu straffen. Dieses Verfahren der Offenbarung soll jedoch nicht als eine Absicht widerspiegelnd ausgelegt werden, dass die beanspruchten Ausführungsformen mehr Merkmale erfordern als in jedem Anspruch ausdrücklich wiedergegeben sind. Vielmehr liegt, wie die folgenden Ansprüche zeigen, der erfinderische Gegenstand in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform. Die folgenden Ansprüche werden hiermit in die Detaillierte Beschreibung aufgenommen, wobei jeder Anspruch als einzelne Ausführungsform gilt. In den angehängten Ansprüchen werden die Begriffe „einschließlich“ und „bei der/dem“ als die eindeutigen Äquivalente der entsprechenden Begriffe „umfassend“ bzw. „wobei“ verwendet. Außerdem werden die Begriffe „erste“, „zweite“, „dritte“ usw. lediglich als Kennzeichen verwendet und sollen ihren Objekten keine numerischen Anforderungen auferlegen.
  • Das vorstehend beschriebene beinhaltet Beispiele der offenbarten Architektur. Es ist selbstverständlich nicht möglich, jede denkbare Kombination von Komponenten und/oder Methodiken zu beschreiben, aber ein Fachmann kann erkennen, dass viele weitere Kombinationen und Permutationen möglich sind.
  • Beispiel 1. Ein System zur Enklaven-Authentifizierung, umfassend: eine client-seitige sichere Enklave, die durch einen Prozessor ausgeführt wird und dazu konfiguriert ist: ein öffentlich-privates Schlüsselpaar (SK, PK) zu erzeugen; einen kryptographischen Hash H von PK zu berechnen; eine H beinhaltende Meldung R zu erstellen; ein Zitat Q auf der Meldung R von einer zitierenden Enklaven-Komponente zu erhalten; eine Fernattestierungsantwort RA von einem Attestierungsdienst zu erhalten; und RA und PK an eine oder mehrere server-seitige Enklaven zu senden.
  • Beispiel 2. Das System des Beispiels 1, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  • Beispiel 3. Das System des Beispiels 1, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  • Beispiel 4. Das System des Beispiels 1, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  • Beispiel 5. Das System des Beispiels 1, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  • Beispiel 6. Das System des Beispiels 1, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  • Beispiel 7. Ein computerimplementiertes Verfahren zur Enklaven-Authentifizierung an einer client-seitigen sicheren Enklave, umfassend: Erzeugen eines öffentlich-privaten Schlüsselpaars (SK, PK); Berechnen eines kryptographischen Hash H von PK; Erstellen einer H beinhaltenden Meldung R; Erhalten eines Zitats Q auf der Meldung R von einer zitierenden Enklaven-Komponente; Erhalten einer Fernattestierungsantwort RA von einem Attestierungsdienst; und Senden von RA und PK an eine oder mehrere server-seitige Enklaven.
  • Beispiel 8. Das computerimplementierte Verfahren des Beispiels 7, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  • Beispiel 9. Das computerimplementierte Verfahren des Beispiels 7, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  • Beispiel 10. Das computerimplementierte Verfahren des Beispiels 7, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  • Beispiel 11. Das computerimplementierte Verfahren des Beispiels 7, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  • Beispiel 12. Das computerimplementierte Verfahren des Beispiels 7, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  • Beispiel 13. Ein Artikel, der ein nichtvergängliches computerlesbares Speichermedium umfasst, das Instruktionen speichert zur Ausführung durch eine Verarbeitungsschaltung einer Recheneinrichtung zur Enklaven-Authentifizierung an einer client-seitigen sicheren Enklave, wobei die Instruktionen die Recheneinrichtung veranlassen: ein öffentlich-privates Schlüsselpaar (SK, PK) zu erzeugen; einen kryptographischen Hash H von PK zu berechnen; eine H beinhaltende Meldung R zu erstellen; ein Zitat Q auf der Meldung R von einer zitierenden Enklaven-Komponente zu erhalten; eine Fernattestierungsantwort RA von einem Attestierungsdienst zu erhalten; und RA und PK an eine oder mehrere server-seitige Enklaven zu senden.
  • Beispiel 14. Der Artikel des Beispiels 13, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  • Beispiel 15. Der Artikel des Beispiels 13, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  • Beispiel 16. Der Artikel des Beispiels 13, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  • Beispiel 17. Der Artikel des Beispiels 13, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  • Beispiel 18. Der Artikel des Beispiels 13, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  • Beispiel 19. Eine Recheneinrichtung zur Enklaven-Authentifizierung an einer client-seitigen sicheren Enklave, umfassend: Mittel zum Erzeugen eines öffentlich-privaten Schlüsselpaars (SK, PK); Mittel zum Berechnen; eines kryptographischen Hash H von PK; Mittel zum Erstellen einer H beinhaltenden Meldung R; Mittel zum Erhalten eines Zitats Q auf der Meldung R von einer zitierenden Enklaven-Komponente; Mittel zum Erhalten einer Fernattestierungsantwort RA von einem Attestierungsdienst; und Mittel zum Senden von RA und PK an eine oder mehrere server-seitige Enklaven.
  • Beispiel 20. Die Recheneinrichtung des Beispiels 19, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  • Beispiel 21. Die Recheneinrichtung des Beispiels 19, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  • Beispiel 22. Die Recheneinrichtung des Beispiels 19, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  • Beispiel 23. Die Recheneinrichtung des Beispiels 19, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  • Beispiel 24. Die Recheneinrichtung des Beispiels 19, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  • Beispiel 25. Eine Vorrichtung zur Enklaven-Authentifizierung an einer client-seitigen sicheren Enklave, umfassend: mindestens einen Speicher; mindestens einen Prozessor; und Logik, wobei mindestens ein Abschnitt der Logik in der Hardware umfasst ist und durch den mindestens einen Prozessor ausgeführt wird, wobei die Logik ein öffentlich-privates Schlüsselpaar (SK, PK) erzeugen soll; einen kryptographischen Hash H von PK berechnen soll; eine H beinhaltende Meldung R erstellen soll; ein Zitat Q auf der Meldung R von einer zitierenden Enklaven-Komponente erhalten soll; eine Fernattestierungsantwort RA von einem Attestierungsdienst erhalten soll; und RA und PK an eine oder mehrere server-seitige Enklaven senden soll.
  • Beispiel 26. Die Vorrichtung des Beispiels 25, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  • Beispiel 27. Die Vorrichtung des Beispiels 25, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  • Beispiel 28. Die Vorrichtung des Beispiels 25, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  • Beispiel 29. Die Vorrichtung des Beispiels 25, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  • Beispiel 30. Die Vorrichtung des Beispiels 25, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  • Beispiel 31. Ein System zur Enklaven-Authentifizierung, umfassend: eine server-seitige sichere Enklave, die durch einen Prozessor ausgeführt wird und dazu konfiguriert ist: eine Fernattestierungsantwort RA einschließlich Zitat Q, Hash H eines öffentlich-privaten Schlüsselpaars (SK, PK) und Meldung R zu empfangen; einen öffentlichen Schlüssel PK zu empfangen; RA und PK in der server-seitigen sicheren Enklave zu speichern;
    zu bestimmen, dass eine Signatur eines öffentlichen Schlüssels einer Meldung eines Attestierungsdienstes auf RA gültig ist; zu bestimmen, dass ein kryptographischer Hash von PK mit H übereinstimmt; und PK als einen authentifizierten öffentlichen Schlüssel einer client-seitigen sicheren Enklave zu akzeptieren.
  • Beispiel 32. Das System des Beispiels 31, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  • Beispiel 33. Das System des Beispiels 31, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  • Beispiel 34. Das System des Beispiels 31, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  • Beispiel 35. Das System des Beispiels 31, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  • Beispiel 36. Das System des Beispiels 31, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  • Beispiel 37. Ein computerimplementiertes Verfahren zur Enklaven-Authentifizierung, umfassend: Empfangen, an einer server-seitigen sicheren Enklave, einer Fernattestierungsantwort RA einschließlich Zitat Q, Hash H eines öffentlich-privaten Schlüsselpaars (SK, PK) und Meldung R; Empfangen, an der server-seitigen sicheren Enklave, eines öffentlichen Schlüssels PK; Speichern von RA und PK in der server-seitigen sicheren Enklave; Bestimmen, dass eine Signatur eines öffentlichen Schlüssels einer Meldung eines Attestierungsdienstes auf RA gültig ist; Bestimmen, dass ein kryptographischer Hash von PK mit H übereinstimmt; und Akzeptieren von PK als einen authentifizierten öffentlichen Schlüssel einer client-seitigen sicheren Enklave.
  • Beispiel 38. Das computerimplementierte Verfahren des Beispiels 37, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  • Beispiel 39. Das computerimplementierte Verfahren des Beispiels 37, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  • Beispiel 40. Das computerimplementierte Verfahren des Beispiels 37, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  • Beispiel 41. Das computerimplementierte Verfahren des Beispiels 37, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  • Beispiel 42. Das computerimplementierte Verfahren des Beispiels 37, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  • Beispiel 43. Ein Artikel, der ein nichtvergängliches computerlesbares Speichermedium umfasst, das Instruktionen speichert zur Ausführung durch eine Verarbeitungsschaltung einer Recheneinrichtung zur Enklaven-Authentifizierung, wobei die Instruktionen die Recheneinrichtung veranlassen: an der server-seitigen sicheren Enklave eine Fernattestierungsantwort RA einschließlich Zitat Q, Hash H eines öffentlich-privaten Schlüsselpaars (SK, PK) und Meldung R zu empfangen; an der server-seitigen sicheren Enklave einen öffentlichen Schlüssel PK zu empfangen; RA und PK in der server-seitigen sicheren Enklave zu speichern; zu bestimmen, dass eine Signatur eines öffentlichen Schlüssels einer Meldung eines Attestierungsdienstes auf RA gültig ist; zu bestimmen, dass ein kryptographischer Hash von PK mit H übereinstimmt; und PK als einen authentifizierten öffentlichen Schlüssel einer client-seitigen sicheren Enklave zu akzeptieren.
  • Beispiel 44. Der Artikel des Beispiels 43, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  • Beispiel 45. Der Artikel des Beispiels 43, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  • Beispiel 46. Der Artikel des Beispiels 43, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  • Beispiel 47. Der Artikel des Beispiels 43, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  • Beispiel 48. Der Artikel des Beispiels 43, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  • Beispiel 49. Eine Recheneinrichtung zur Enklaven-Authentifizierung, umfassend: Mittel zum Empfangen, an einer server-seitigen sicheren Enklave, einer Fernattestierungsantwort RA einschließlich Zitat Q, Hash H eines öffentlich-privaten Schlüsselpaars (SK, PK) und Meldung R; Mittel zum Empfangen, an der server-seitigen sicheren Enklave, eines öffentlichen Schlüssels PK; Mittel zum Speichern von RA und PK in der server-seitigen sicheren Enklave; Mittel zum Bestimmen, dass eine Signatur eines öffentlichen Schlüssels einer Meldung eines Attestierungsdienstes auf RA gültig ist; Mittel zum Bestimmen, dass ein kryptographischer Hash von PK mit H übereinstimmt; und Mittel zum Akzeptieren von PK als einen authentifizierten öffentlichen Schlüssel einer client-seitigen sicheren Enklave.
  • Beispiel 50. Die Recheneinrichtung des Beispiels 49, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  • Beispiel 51. Die Recheneinrichtung des Beispiels 49, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  • Beispiel 52. Die Recheneinrichtung des Beispiels 49, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  • Beispiel 53. Die Recheneinrichtung des Beispiels 49, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  • Beispiel 54. Die Recheneinrichtung des Beispiels 49, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  • Beispiel 55. Eine Vorrichtung zur Enklaven-Authentifizierung, umfassend: mindestens einen Speicher; mindestens einen Prozessor; und Logik, wobei mindestens ein Abschnitt der Logik in der Hardware umfasst ist und durch den mindestens einen Prozessor ausgeführt wird, wobei die Logik eine Fernattestierungsantwort RA einschließlich Zitat Q, Hash H eines öffentlich-privaten Schlüsselpaars (SK, PK) und Meldung R empfangen soll; einen öffentlichen Schlüssel PK empfangen soll; RA und PK in der server-seitigen sicheren Enklave speichern soll; bestimmen soll, dass eine Signatur eines öffentlichen Schlüssels einer Meldung eines Attestierungsdienstes auf RA gültig ist; bestimmen soll, dass ein kryptographischer Hash von PK mit H übereinstimmt; und PK als einen authentifizierten öffentlichen Schlüssel einer client-seitigen sicheren Enklave akzeptieren soll.
  • Beispiel 56. Die Vorrichtung des Beispiels 55, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  • Beispiel 57. Die Vorrichtung des Beispiels 55, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  • Beispiel 58. Die Vorrichtung des Beispiels 55, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  • Beispiel 59. Die Vorrichtung des Beispiels 55, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  • Beispiel 60. Die Vorrichtung des Beispiels 55, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62462298 [0001]

Claims (25)

  1. System zur Enklaven-Authentifizierung, umfassend: eine client-seitige sichere Enklave, die durch einen Prozessor ausgeführt wird und dazu konfiguriert ist: ein öffentlich-privates Schlüsselpaar (SK, PK) zu erzeugen; einen kryptographischen Hash H von PK zu berechnen; eine H beinhaltende Meldung R zu erstellen; ein Zitat (engl. Quote) Q auf der Meldung R von einer zitierenden Enklaven-Komponente zu erhalten; eine Fernattestierungsantwort RA von einem Attestierungsdienst zu erhalten; und RA und PK an eine oder mehrere server-seitige Enklaven zu senden.
  2. System nach Anspruch 1 oder 2, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  3. System nach einem der vorhergehenden Ansprüche, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  4. System nach einem der vorhergehenden Ansprüche, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  5. System nach einem der vorhergehenden Ansprüche, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  6. System nach einem der vorhergehenden Ansprüche, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  7. Computerimplementiertes Verfahren zur Enklaven-Authentifizierung an einer client-seitigen sicheren Enklave, umfassend: Erzeugen eines öffentlich-privaten Schlüsselpaars (SK, PK); Berechnen eines kryptographischen Hash H von PK; Erstellen einer H beinhaltenden Meldung R; Erhalten eines Zitats Q auf der Meldung R von einer zitierenden Enklaven-Komponente; Erhalten einer Fernattestierungsantwort RA von einem Attestierungsdienst; und Senden von RA und PK an eine oder mehrere server-seitige Enklaven.
  8. Computerimplementiertes Verfahren nach Anspruch 7, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  9. Computerimplementiertes Verfahren nach Anspruch 7 oder 8, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  10. Computerimplementiertes Verfahren nach einen der Ansprüche 7-9, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  11. Computerimplementiertes Verfahren nach einen der Ansprüche 7-10, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  12. Computerimplementiertes Verfahren nach einen der Ansprüche 7-11, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  13. Artikel, der ein nichtvergängliches computerlesbares Speichermedium umfasst, das Instruktionen speichert zur Ausführung durch eine Verarbeitungsschaltung einer Recheneinrichtung zur Enklaven-Authentifizierung an einer client-seitigen sicheren Enklave, wobei die Instruktionen die Recheneinrichtung veranlassen: ein öffentlich-privates Schlüsselpaar (SK, PK) zu erzeugen; einen kryptographischen Hash H von PK zu berechnen; eine H beinhaltende Meldung R zu erstellen; ein Zitat Q auf der Meldung R von einer zitierenden Enklaven-Komponente zu erhalten; eine Fernattestierungsantwort RA von einem Attestierungsdienst zu erhalten; und RA und PK an eine oder mehrere server-seitige Enklaven zu senden.
  14. System zur Enklaven-Authentifizierung, umfassend: eine server-seitige sichere Enklave, die durch einen Prozessor ausgeführt wird und dazu konfiguriert ist: eine Fernattestierungsantwort RA einschließlich Zitat Q, Hash H eines öffentlich-privaten Schlüsselpaars (SK, PK) und Meldung R zu empfangen; einen öffentlichen Schlüssel PK zu empfangen; RA und PK in der server-seitigen sicheren Enklave zu speichern; zu bestimmen, dass eine Signatur eines öffentlichen Schlüssels einer Meldung eines Attestierungsdienstes auf RA gültig ist; zu bestimmen, dass ein kryptographischer Hash von PK mit H übereinstimmt; und PK als einen authentifizierten öffentlichen Schlüssel einer client-seitigen sicheren Enklave zu akzeptieren.
  15. System nach Anspruch 14, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  16. System nach Anspruch 14, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  17. System nach Anspruch 14, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  18. System nach Anspruch 14, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  19. System nach Anspruch 14, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
  20. Computerimplementiertes Verfahren zur Enklaven-Authentifizierung, umfassend: Empfangen, an einer server-seitigen sicheren Enklave, einer Fernattestierungsantwort RA einschließlich Zitat Q, Hash H eines öffentlich-privaten Schlüsselpaars (SK, PK) und Meldung R; Empfangen, an der server-seitigen sicheren Enklave, eines öffentlichen Schlüssels PK; Speichern von RA und PK in der server-seitigen sicheren Enklave; Bestimmen, dass eine Signatur eines öffentlichen Schlüssels einer Meldung eines Attestierungsdienstes auf RA gültig ist; Bestimmen, dass ein kryptographischer Hash von PK mit H übereinstimmt; und Akzeptieren von PK als einen authentifizierten öffentlichen Schlüssel einer client-seitigen sicheren Enklave.
  21. Computerimplementiertes Verfahren nach Anspruch 20, wobei der kryptographische Hash unter Verwendung von SHA-1- oder SHA-256-Hash-Algorithmen durchgeführt wird.
  22. Computerimplementiertes Verfahren nach Anspruch 20 oder 21, wobei die sicheren Enklaven Software-Guard-Extensions(SGX)-Enklaven sind.
  23. Computerimplementiertes Verfahren nach einen der Ansprüche 20-22, wobei die Meldung eine Software-Guard-Extensions(SGX)-Meldung ist.
  24. Computerimplementiertes Verfahren nach einen der Ansprüche 20-23, wobei das Zitat ein Software-Guard-Extensions(SGX)-Zitat ist.
  25. Computerimplementiertes Verfahren nach einen der Ansprüche 20-24, wobei der Attestierungsdienst ein Intel Attestation Service (IAS) ist.
DE102018101307.8A 2017-02-22 2018-01-22 Techniken für SGX-Enklaven-Fernauthentifizierung Withdrawn DE102018101307A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762462298P 2017-02-22 2017-02-22
US62/462,298 2017-02-22
US15/600,667 2017-05-19
US15/600,667 US20180241572A1 (en) 2017-02-22 2017-05-19 Techniques for remote sgx enclave authentication

Publications (1)

Publication Number Publication Date
DE102018101307A1 true DE102018101307A1 (de) 2018-08-23

Family

ID=63046134

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018101307.8A Withdrawn DE102018101307A1 (de) 2017-02-22 2018-01-22 Techniken für SGX-Enklaven-Fernauthentifizierung

Country Status (2)

Country Link
CN (1) CN108462689B (de)
DE (1) DE102018101307A1 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112422500A (zh) * 2020-09-25 2021-02-26 北京熠智科技有限公司 跨平台数据传输方法以及装置、存储介质、电子装置
CN113556230A (zh) * 2020-04-24 2021-10-26 华控清交信息科技(北京)有限公司 数据安全传输方法、证书相关方法、服务端、系统及介质
CN114553590A (zh) * 2022-03-17 2022-05-27 北京字节跳动网络技术有限公司 数据传输方法及相关设备

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109150517B (zh) * 2018-09-04 2021-03-12 大唐高鸿信安(浙江)信息科技有限公司 基于sgx的密钥安全管理系统及方法
CN112654987A (zh) 2018-09-12 2021-04-13 华为技术有限公司 用于证明分布服务的方法和设备
EP3857838A1 (de) * 2018-10-16 2021-08-04 Huawei Technologies Co., Ltd. Knoten und verfahren zur sicheren serverkommunikation
CN109800584B (zh) * 2018-10-24 2020-10-16 中国科学院信息工程研究所 一种基于Intel SGX机制的身份或属性加密计算方法和系统
CN112468473B (zh) * 2018-11-16 2023-10-24 创新先进技术有限公司 可信应用程序的远程证明方法及装置、电子设备
WO2020143906A1 (en) * 2019-01-08 2020-07-16 Huawei Technologies Co., Ltd. Method and apparatus for trust verification
CN109995776B (zh) * 2019-03-26 2021-10-26 西安纸贵互联网科技有限公司 一种互联网数据验证方法及系统
CN115967534A (zh) * 2019-03-27 2023-04-14 创新先进技术有限公司 使用可信执行环境检索区块链网络的公开数据
CN110519054A (zh) * 2019-08-29 2019-11-29 四川普思科创信息技术有限公司 一种基于可信计算技术进行物联网数据安全保护的方法
CN110890962B (zh) * 2019-12-20 2021-04-13 支付宝(杭州)信息技术有限公司 认证密钥协商方法、装置、存储介质及设备
CN111988141B (zh) * 2020-03-18 2022-08-02 支付宝(杭州)信息技术有限公司 共享集群密钥的方法及装置
CN111611620B (zh) * 2020-05-26 2023-07-25 牛津(海南)区块链研究院有限公司 一种访问平台的访问请求处理方法及相关装置
CN113329012B (zh) * 2021-05-28 2022-07-26 交叉信息核心技术研究院(西安)有限公司 一种可信执行环境的快速认证方法及系统
CN113343234B (zh) * 2021-06-10 2023-01-20 支付宝(杭州)信息技术有限公司 对代码安全性进行可信检查的方法及装置
CN113591098B (zh) * 2021-06-11 2024-03-26 浙江大学 一种基于sgx的远程安全异构计算方法和系统
CN113721919B (zh) * 2021-08-09 2024-03-12 上海交通大学 基于Intel SGX可信执行环境的在线编译混淆实现方法
CN114268507B (zh) * 2021-12-30 2023-12-05 天翼物联科技有限公司 一种基于sgx的网络云安全优化方法、系统及相关介质
CN115514584B (zh) * 2022-11-16 2023-01-31 北京锘崴信息科技有限公司 服务器以及金融相关服务器的可信安全认证方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1673675A2 (de) * 2003-10-17 2006-06-28 International Business Machines Corporation Verfahren und system für benutzerattest-signaturen mit attributen
US10904218B2 (en) * 2013-11-25 2021-01-26 Mcafee, Llc Secure proxy to protect private data
KR101858375B1 (ko) * 2013-12-18 2018-05-15 인텔 코포레이션 일체형 종단점 및 공격의 네트워크 검출 및 박멸을 위한 기술
US9514317B2 (en) * 2013-12-19 2016-12-06 Intel Corporation Policy-based trusted inspection of rights managed content
US9703715B2 (en) * 2013-12-28 2017-07-11 Intel Corporation Shared memory in a secure processing environment

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113556230A (zh) * 2020-04-24 2021-10-26 华控清交信息科技(北京)有限公司 数据安全传输方法、证书相关方法、服务端、系统及介质
CN113556230B (zh) * 2020-04-24 2024-05-31 华控清交信息科技(北京)有限公司 数据安全传输方法、证书相关方法、服务端、系统及介质
CN112422500A (zh) * 2020-09-25 2021-02-26 北京熠智科技有限公司 跨平台数据传输方法以及装置、存储介质、电子装置
CN112422500B (zh) * 2020-09-25 2023-05-16 北京熠智科技有限公司 跨平台数据传输方法以及装置、存储介质、电子装置
CN114553590A (zh) * 2022-03-17 2022-05-27 北京字节跳动网络技术有限公司 数据传输方法及相关设备
CN114553590B (zh) * 2022-03-17 2023-08-22 抖音视界有限公司 数据传输方法及相关设备

Also Published As

Publication number Publication date
CN108462689B (zh) 2022-04-01
CN108462689A (zh) 2018-08-28

Similar Documents

Publication Publication Date Title
DE102018101307A1 (de) Techniken für SGX-Enklaven-Fernauthentifizierung
US12041037B2 (en) Techniques for shared private data objects in a trusted execution environment
US11239994B2 (en) Techniques for key provisioning in a trusted execution environment
US20180241572A1 (en) Techniques for remote sgx enclave authentication
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE102017104075B4 (de) Schützen von daten auf einer speichervorrichtung
US9930026B2 (en) Encryption/decryption in a cloud storage solution
DE102019110309A1 (de) Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen
DE102019123253A1 (de) System und einrichtung für datenvertraulichkeit im distributed ledger
DE202018002074U1 (de) System zur sicheren Speicherung von elektronischem Material
DE112015004555T5 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
DE102020126182A1 (de) Privatsphären- und datenschutz auf smart-edge-vorrichtungen
DE102011077218B4 (de) Zugriff auf in einer Cloud gespeicherte Daten
DE112016002285T5 (de) Adressvalidierung unter verwendung von signaturen
DE102019110327A1 (de) Technologien zum verifizieren von speicherintegrität über mehrere speicherbereiche hinweg
DE112017004033T5 (de) Verfahren zum Erhalten von geprüften Zertifikaten durch Mikrodienste in elastischen Cloud-Umgebungen
DE202015009801U1 (de) Sicherheits-Plug-In für eine System-on-a-Chip-Plattform
DE102018203482A1 (de) Vertrauliche Verifikation von FPGA-Code
DE112020000792T5 (de) Durch grafikverarbeitungseinheit beschleunigte vertrauenswürdige ausführungsumgebung
DE112011103580B4 (de) Verfahren, sichere Einheit, System und Computerprogrammprodukt für das sichere Verwalten des Benutzerzugriffs auf ein Dateisystem
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
DE202012013482U1 (de) Verteilung von Zugriffsinformationen auf Overlay-Netzwerken
DE202012013453U1 (de) Gehostete Speichersperrung
DE112020002343T5 (de) Verteilung von Sicherheitsberechtigungsnachweisen
DE102016105062A1 (de) Nähengestützte Berechtigungsprüfung für einheitenübergreifend verteilte Daten

Legal Events

Date Code Title Description
R082 Change of representative

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

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