-
BEANSPRUCHUNG DER PRIORITÄT
-
Diese Anmeldung beansprucht die Priorität der US-Patentanmeldung, laufende Nr. 62/421.905, eingereicht am 14. November 2016, deren gesamter Inhalt hier durch Bezugnahme vollständig mit aufgenommen ist.
-
HINTERGRUND
-
Diese Beschreibung bezieht sich auf die Speicherung und Verarbeitung von Daten in Cloud-Umgebungen.
-
Das Cloud-Computing ist ein netzbasiertes Computing, bei dem typischerweise große Sammlungen von Servern, die in Datenzentren oder "Server-Farmen" untergebracht sind, Computerbetriebsmittel und einen Datenspeicher bereitstellen, wie sie durch entfernte Endanwender benötigt werden. Um die öffentliche Cloud anzuwenden, müssen die Kunden bereit sein, ihre sensiblen Daten und Anwendungen den Cloud-Anbietern anzuvertrauen. Um diese Entscheidung treffen zu können, müssen die Anwender überzeugt werden, dass ihre Daten und ihre Ausführung sicher sind; dass sie vor allen Typen von Angreifern geschützt sind und dass sie schließlich ihre Anwendungen und Daten steuern. Das Vertrauen ist folglich eine der Kernberechtigungen des Cloud-Einsatzes, aber außerdem eine wichtige Überlegung für den Einsatz.
-
Traditionell wurden die vertrauenswürdigen Ausführungsumgebungen erzeugt, um selbstständige Computer und Mobilvorrichtungen zu unterstützen, um eine sichere Ausführung in den isolierten vertrauenswürdigen firmware-basierten Umgebungen zu schaffen. Diese Strategien sind jedoch für die vergrößerte Flexibilität des verteilten Computings unangemessen und entsprechen insbesondere nicht den Zielen und dem Ausmaß der öffentlichen Cloud.
-
In Übereinstimmung mit den Anforderungen des Gebrauchsmustergesetzes sind nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren als das Gebrauchsmuster zu schützen und der Gegenstand des Gebrauchsmusters. Falls in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich dazu, die Vorrichtung oder die Vorrichtungen, für die mit den beigefügten Ansprüchen Schutz gesucht wird, zu veranschaulichen.
-
ZUSAMMENFASSUNG
-
Im Allgemeinen kann ein innovativer Aspekt des in dieser Beschreibung beschriebenen Gegenstands in Verfahren verkörpert sein, die die Handlungen des Startens einer Wurzelenklave; des Zugreifens auf ein Enklavenmanifest durch die Wurzelenklave, wobei das Enklavenmanifest für jede von mehreren Komponentenenklaven eine spezielle Rolle für die jeweilige Komponentenenklave spezifiziert; und des Instanziierens jeder der Komponentenenklaven enthalten, wobei jede Komponentenenklave konfiguriert ist, um ihre jeweilige Rolle auszuführen; wobei die Wurzelenklave und die Komponentenenklaven eine Enklavenhülle bilden. Andere Ausführungsformen dieses Aspekts enthalten entsprechende Systeme, Vorrichtungen und Computerprogramme, die konfiguriert sein, um die Handlungen der Verfahren, die in Computerspeichervorrichtungen codiert sind, auszuführen.
-
Ein zweiter innovativer Aspekt des in dieser Beschreibung beschriebenen Gegenstands kann in Verfahren verkörpert sein, die die Handlungen des Startens einer ersten Wurzelenklave und erster Komponentenenklaven gemäß einem ersten Manifest; des Startens einer zweiten Wurzelenklave und zweiter Komponentenenklaven gemäß einem zweiten Manifest; des Bereitstellens erster Daten für die ersten Komponentenenklaven; des Bereitstellens zweiter Daten, die von den ersten Daten verschieden sind, für die zweiten Komponentenenklaven enthalten. Andere Ausführungsformen dieses Aspekts enthalten entsprechende Systeme, Vorrichtungen und Computerprogramme, die konfiguriert sein, um die Handlungen der Verfahren, die in Computerspeichervorrichtungen codiert sind, auszuführen.
-
Mit anderen Worten, dieser zweite innovative Aspekt kann in Verfahren verkörpert sein, die die Handlungen des Startens einer ersten Wurzelenklave; des Zugreifens auf ein erstes Enklavenmanifest durch die erste Wurzelenklave, wobei das erste Enklavenmanifest für jede von mehreren ersten Komponentenenklaven eine spezielle Rolle für die jeweilige erste Komponentenenklave spezifiziert; des Instanziierens jeder der ersten Komponentenenklaven, wobei jede erste Komponentenenklave konfiguriert ist, um ihre jeweilige Rolle auszuführen; wobei die erste Wurzelenklave und die ersten Komponentenenklaven eine erste Enklavenhülle bilden; des Bereitstellens erster Daten für die ersten Komponentenenklaven; des Startens einer zweiten Wurzelenklave; des Zugreifens auf ein zweites Enklavenmanifest durch die zweite Wurzelenklave, wobei das zweite Enklavenmanifest für jede von mehreren zweiten Komponentenenklaven eine spezielle Rolle für die jeweilige zweite Komponentenenklave spezifiziert; des Instanziierens jeder der zweiten Komponentenenklaven, wobei jede zweite Komponentenenklave konfiguriert ist, um ihre jeweilige Rolle auszuführen; wobei die zweite Wurzelenklave und die zweiten Komponentenenklaven eine zweite Enklavenhülle bilden; und des Bereitstellens zweiter Daten für die zweiten Komponentenenklaven, wobei die zweiten Daten von den ersten Daten verschieden sind, enthalten.
-
Ein weiterer innovativer Aspekt des in dieser Beschreibung beschriebenen Gegenstands kann in Verfahren verkörpert sein, die die Handlungen des Empfangens von mehreren Enklaventeilnehmern eines Schlüsselfragments; des Konstruierens aus den Schlüsselfragmenten eines Master-Schlüssels für eine Rendezvous-Enklave; des Startens der Rendezvous-Enklave unter Verwendung des Master-Schlüssels; und des Ausführens in der Rendezvous-Enklave der Daten von den mehreren Enklaventeilnehmern enthalten. Andere Ausführungsformen dieses Aspekts enthalten entsprechende Systeme, Vorrichtungen und Computerprogramme, die konfiguriert sein, um die Handlungen der Verfahren, die in Computerspeichervorrichtungen codiert sind, auszuführen.
-
Spezielle Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands können implementiert sein, um einen oder mehrere der folgenden Vorteile zu verwirklichen. Ein skalierbares und dynamisches Netz aus vertrauenswürdigen Ausführungsumgebungen behandelt mehrere Anwendungsfälle, die die Geheimnisse der Anwender und einen wachsenden Bedarf, um die Daten und den Code des Anwenders, die in der Cloud ausgeführt werden, zu schützen, beinhalten. Das Netz aus vertrauenswürdigen Ausführungsumgebungen, die als Enklaven bezeichnet werden, kann für seine Vorgängerwurzel und für die Verifizierer einer dritten Partei kryptographisch beweisen, dass es Vertraulichkeit und Integrität bereitstellt. Laufende sensible kleine Ausführungs-Tasks in den Enklaven schaffen ein zusätzliches Niveau des Schutzes, der Elastizität und einer hohen Verfügbarkeit und stellen sicher, dass kritische Entscheidungen nicht durch nicht vertrauenswürdigen Code oder Gegner mit Wurzelprivilegien umgekehrt werden können.
-
Für die Rendezvous-Enklaven verringert das Binden des Codes und der Daten an das verteilte System der Enklaven, die mit der Enklave verbunden sind, die der Kunde steuert, die Komplexität, die für die Herausforderungen des expliziten Schlüsselmanagements für einen Satz vertrauenswürdiger Ausführungsumgebungen erforderlich sein würde.
-
Für Hybrid-Enklaven wird mehreren Anwendungsfällen, die die Geheimnisse der Kunden und den wachsenden Bedarf, um die Daten und den Code der Kunden, die mit den Cloud-Anbietern gemeinsam benutzt werden, zu schützen, beinhalten, durch die Einführung eines skalierbaren Satzes von vertrauenswürdigen Ausführungsumgebungen entsprochen, die als ein Rendezvousort für mehrere nicht vertrauenswürdige Parteien verwendet werden können. Die Enklave kann für ihre Mehrparteien-Teilnehmer kryptographisch nachweisen, dass sie Vertraulichkeit und Integrität bereitstellt. Laufende sensible Ausführungs-Tasks in den Enklaven stellen ein zusätzliches Niveau des Schutzes, der Elastizität und der hohen Verfügbarkeit bereit, um sicherzustellen, dass auf die sensiblen Daten und den sensiblen Code nicht durch nicht vertrauenswürdigen Code oder sogar durch hoch privilegierte Cloud-Insider zugegriffen oder die sensiblen Daten und der sensible Code nicht durch nicht vertrauenswürdigen Code oder sogar durch hoch privilegierte Cloud-Insider herausgefiltert werden können.
-
Die Enklaven können außerdem die Erzeugung kryptographisch signierter oder manipulationsgeschützter Protokolle, die alle Handlungen und Transaktionen ausführlich beschreiben, fördern. Diese Protokolle können als historische Datensätze oder Spurensicherungen bereitgestellt oder verwendet werden.
-
Die Einzelheiten einer oder mehrerer Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands sind in den beigefügten Zeichnungen und in der Beschreibung im Folgenden dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen offensichtlich.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist eine graphische Systemdarstellung einer Enklaven-Hülle.
-
2 ist ein Zeitdiagramm einer Zwischenenklavenkommunikation.
-
3 ist eine graphische Systemdarstellung mehrerer Enklaven in einer Hybrid-Cloud.
-
4 ist ein Ablaufplan eines beispielhaften Prozesses zum Erzeugen mehrerer Enklaven in einer Hybrid-Cloud.
-
5 ist eine graphische Systemdarstellung einer Rendezvous-Enklave für mehrere Parteien.
-
6 ist ein Ablaufplan eines beispielhaften Prozesses zum Erzeugen einer Rendezvous-Enklave.
-
Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen geben gleiche Elemente an.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Überblick
-
Gemäß den hier beschriebenen Ausführungsformen werden Verfahren, Systeme und Vorrichtungen einschließlich Computerprogrammen, die in einem Computer-Speichermedium codiert sind, zum Instanziieren und Managen von Systemen geschaffen, die hierarchische Enklaven in einer Cloud-Umgebung verwenden.
-
Eine Enklavenhülle ist eine isolierte und sichere Ausführungsumgebung, in der die Kunden ihre sensiblen Anwendungsnutzdaten ausführen können. Der Code und die Daten, die die Enklavengrenze überqueren, sind verschlüsselt. Die Enklavenhülle fördert eine Vertrauenskette, die in Hardware und/oder Software ermöglicht ist, die öffentliche Schnittstellen bereitstellt, um populäre Anwendungsfälle wie das Hosten einer Zertifizierungsstelle, um Zertifikatsignierungsantworten an die Anrufer auszugeben, oder das Ausführen sensibler Verifikationsentscheidungen im Namen von Authentifizierungs- oder Autorisierungssystemen mit dem Ziel zu ermöglichen, um sicherzustellen, dass der Betrieb und die Entscheidung, die in den isolierten sicheren Ausführungsumgebungen ausgeführt werden, nicht durch nicht berechtigte Entitäten geändert oder entfernt werden können. Die Enklavenhüllen schaffen folglich den Schutz der Vertraulichkeit und der Integrität für den Code und die Daten der Kunden, die in der Cloud ausgeführt werden, gegen unberechtigte Offenbarung und Modifikationen.
-
In einigen Implementierungen stellt eine Enklavenhülle die Vertraulichkeit und die Integrität des Codes und der Daten sicher, wenn sich der Code und die Daten in Ruhe befinden, bevor sie in die Grenzen der Enklaven eintreten und nachdem sie die Grenzen der Enklaven verlassen haben. Die Integrität der Enklaven kann aus der Ferne verifiziert werden, wie der Code und die Daten, die innerhalb der Enklaven ausgeführt werden, aus der Ferne verifiziert werden können. Um eine hohe Verfügbarkeit und Leistung ihrer Dienste sicherzustellen, oder aufgrund der Datenherkunftsanforderungen können überdies die Arbeitsbelastungen geographisch über mehrere Bereiche oder Zonen verteilt sein.
-
Weil ein Satz von Enklaven, die als Peers kommunizieren oder in vertrauenswürdigen Ausführungsumgebungen in einem jeweiligen selbstständigen Modus ausgeführt werden, den komplexen Anwendungsfällen nicht entsprechen, die die Cloud-Anbieter behandeln müssen, verwendet eine Enklavenhülle ein hierarchisches Modell des Vertrauens zwischen den Enklaven.
-
Eine Enklavenhülle teilt eine rechnerisch sensible Task in mehrere in Beziehung stehende Subtasks auf und führt sie in dem Satz vertrauenswürdiger Enklaven aus. Eine Enklavenhülle kann z. B. mehrere von einer Zertifizierungsstelle erwartete Tasks, wie z. B. die Authentifizierung eines Anrufers, die Validierung einer Anforderung, die Ausgabe einer Nonce/eines Zeitstempels usw., als einen Satz verschiedener Nachfolgerenklaven, die von einer Wurzelenklave abstammen, ausführen. Ähnlich können für die Genomforschung noch kompliziertere Sätze von Operationen durch das Verwenden der hierarchischen Art der Enklaven in einer Enklavenhülle ausgeführt werden.
-
Die Wurzelenklave kann die Vertrauensbeziehung zwischen den Nachfolgern attestieren und verifizieren, um Arbeit zu ihnen delegieren zu können. Die Wurzelenklave kann außerdem die Fähigkeit, das Vertrauen herzustellen und ihre Beweise zu attestieren und zu verifizieren, an die Nachfolgerenklaven delegieren, um sicherzustellen, dass das System skaliert werden und dem Bedarf verschiedener Anwendungsfälle entsprechen kann.
-
In einigen Implementierungen kann die Ausführung sensibler und streng geheimer Tasks an geographisch verteilte Cluster delegiert und über mehrerer geographische Orte und Bereiche verteilt werden, um die sensiblen Tasks des Kunden innerhalb der Unterenklaven auszuführen, die an diesen Orten gehostet sind und durch eine Master-Enklave geordnet werden.
-
Die Enklavenhüllen ermöglichen außerdem, dass die Anwenderanwendungen Ausführungseinheiten erzeugen, die vor Angriffen von der System-Software und in Abhängigkeit von der verwendeten Enklaventechnik der Hardware geschützt sind. Die Hüllenenklavenarchitektur ermöglicht es einer Enklave, ihre Identität an einem lokalen oder entfernten Verifizierer nachzuweisen, Geheimnisse zu erhalten/zu erzeugen und diese Geheimnisse für ihre eigene Identität zu versiegeln. Die Enklavenhülle erweitert die grundlegende Attestierungs- und Versiegelungsinfrastruktur, um die Attestierung und die Versiegelung auf Systemebene zu unterstützen. Die hierarchische Enklavenhülle wird im Folgenden bezüglich der 1 und 2 beschrieben.
-
In zusätzlichen Implementierungen können die Enklavenhüllen zusammenwirkend in einer Hybrid-Cloud verteilt sein, wo eine Master-Enklavenhülle in den Räumlichkeiten eines Kunden oder in einer privaten Cloud arbeitet, wobei zusätzliche Enklavenhüllen in der öffentlichen Cloud arbeiten. Die Hybrid-Cloud-Enklaven werden im Folgenden bezüglich der 3 und 4 beschrieben.
-
In noch weiteren Implementierungen kann eine Enklavenhülle konfiguriert sein, um das gemeinsame Benutzen sensibler Daten von mehreren Parteien für die Ausführung gemeinsamer Tasks zu ermöglichen. Der Zugriff auf die sensiblen Daten durch die mehreren Parteien ist jedoch ausgeschlossen. Derartige Enklavenhüllen werden als eine Rendezvous-Enklave bezeichnet und im Folgenden bezüglich der 5 und 6 beschrieben.
-
Eine hierarchische Enklavenhülle
-
1 ist eine graphische Systemdarstellung einer Enklavenhülle 100. Eine Enklavenhülle 100 ist eine manifestbasierte hierarchische Ansammlung von Enklaven, die ein System definieren. Die Enklavenhülle 100 versiegelt Geheimnisse (d. h., sensiblen Code, sensible Binärdateien, sensible Daten oder irgendwelche anderen Daten, Anweisungen, Code oder Informationen, die eine Partei als sensibel erachtet oder die eine Partei nicht öffentlich zu offenbaren wünscht) sowohl für eine Systembeschreibung als auch für eine einzelne Enklavenidentität. In Betrieb ist ein Geheimnis nur für eine Enklave in der Enklavenhülle 100 zugänglich, falls die Enklave ein Teil einer Enklavenhülle 100 ist und gemäß einem Manifest aufgebaut ist, und nur für eine Enklave in der Enklavenhülle 100 zugänglich, falls die identifizierte Enklave in der Enklavenhülle 100 dafür bestimmt ist, um Zugriff auf das Geheimnis zu haben.
-
Die Enklavenhülle 100 enthält eine Wurzelenklave 110, ein Manifest 112 und zwei oder mehr Komponentenenklaven 120. Jede Komponentenenklave in der Hülle 100 kann eine eindeutige Rolle aufweisen, ist z. B. einer speziellen Task oder einem speziellen Prozess, die bzw. der auszuführen ist, zugewiesen.
-
Das Manifest 112 beschreibt die Enklavenhülle 100. Das Manifest 112 listet die verschiedenen Rollen in der Hülle 100 und die Identitäten der Enklaven 120, die jeder Rolle entsprechen, auf. In einigen Implementierungen erlaubt das Manifest nur eine Identität pro Rolle, wobei eine Rolle nicht zwei getrennten Komponentenenklaven zugewiesen sein kann. Das Manifest 112 wird durch einen Systemerbauer signiert und weist einen Zweck und eine Version auf, die im Folgenden ausführlicher beschrieben werden. Ein Manifestverifikationsschlüssel, der mit dem Zweck und der Version des Manifests gekoppelt ist, definiert die Identität des Manifests.
-
Die Wurzelenklave 110 ist für das Verifizieren der Komponentenenklaven und das Sicherstellen, dass ihre Rollen/Identitäten jenen entsprechen, die in dem Manifest 112 aufgelistet sind, verantwortlich. Mit anderen Worten, die Wurzelenklave 110 ist für das Durchsetzen des Manifests 112 verantwortlich.
-
Die Komponentenenklaven 120 kommunizieren über wechselseitig authentifizierte und verschlüsselte Kanäle miteinander. Die Komponentenenklaven 120 kommunizieren über einen unidirektional authentifizierten und verschlüsselten Kanal mit der Wurzelenklave 110. Der Kanal von der Wurzel zur Komponente ist unidirektional authentifiziert, weil nur die Wurzelenklave 110 die Komponentenenklave 120 gegen das Manifest 112 verifiziert. Die Verifikation kann durch irgendeinen geeigneten Sicherheitsverifikationsprozess ausgeführt werden.
-
Die Komponentenenklaven 120 verifizieren in einigen Implementierungen die Wurzelenklave 110 nicht. In einigen Implementierungen sind die Komponentenenklaven 120 gegenüber dem Manifest 112 selbst agnostisch, wobei sie "blind" auf die Wurzelenklave 110 vertrauen, um das Manifest 112 durchzusetzen.
-
Die Enklaven 110 und 120 können durch irgendeinen geeigneten Enklaveninstanziierungsprozess instanziiert werden. Sobald die Hülle der Enklaven hergestellt ist, kann die Wurzelenklave 110 mit einem entfernten Verifizierer/Geheimnisversorger 130 kommunizieren, um die Geheimnisse, z. B. die Binärdateien und die Daten, für die Bereitstellung zu erhalten. Der entfernte Verifizierer 130 verifiziert die Wurzelenklave 110, die dann die Identität des Manifests 112, das sie durchsetzt, behauptet. Falls der Verifizierer 130 bestimmt, dass die Identität der Wurzelenklave 110 und die des Manifests 112, das die Wurzelenklave 110 durchsetzt, annehmbar sind, stellt der Verifizierer 130 die notwendigen Geheimnisse bereit. Die einzelnen Komponenten der Enklavenhülle 100 können außerdem zusätzliche Geheimnisse erzeugen. In einigen Implementierungen können die erzeugten und bereitgestellten Geheimnisse für das Manifest 112 und die Komponentenenklavenidentität versiegelt werden.
-
Jede Komponentenenklave 120 in einer Hülle 100 weist eine Rolle auf. Eine Rolle ist die durch die Enklave 120 implementierte Metafunktionalität und ist eine beliebige Zeichenkette. Jede Komponentenenklave 120 kennt ihre eigene Rolle und kennt die Rollen der anderen Komponentenenklaven 120, mit denen sie kommuniziert. Die Komponentenenklaven 120 kennen in einigen Implementierungen die Identitäten der anderen Komponentenenklaven 120 nicht und müssen in einigen Implementierungen die Identitäten der anderen Komponentenenklaven 120 auch nicht kennen. Die Rolle-Identität-Abbildung wird durch das Manifest 112 bereitgestellt und wird durch die Wurzelenklave 112 durchgesetzt. Wenn eine Komponentenenklave 120 mit einer weiteren Komponentenenklave kommunizieren muss, ist folglich die Bestimmung, mit welcher Enklave zu kommunizieren ist, von der Rolle abhängig.
-
Das Manifest weist drei Hauptzwecke auf. Erstens beschreibt das Manifest 112 die Enklavenhülle 100 für den entfernten Verifizierer 130. Zweitens erlaubt das Manifest 112 den Komponentenenklaven 120, basierend auf ihren Rollen anstatt auf ihren Identitäten miteinander zu kommunizieren. Schließlich erlaubt das Manifest 112 den Komponentenenklaven 120, zusätzlich zum Versiegeln der Geheimnisse für ihre eigene Identität, die Geheimnisse für die Hüllenkonfiguration zu versiegeln.
-
Das Manifest 112 ist durch den Systemerbauer signiert. Die Manifestsignatur selbst ist getrennt von dem Manifest 112 gespeichert. Die Manifestsignatur kann z. B. aus den Daten in dem Manifest, wie z. B. der Version, der Größe, einem Signaturkopf und irgendwelchen anderen Daten, die für die Signaturerzeugung geeignet sind, abgeleitet werden.
-
2 ist ein Zeitdiagramm 200 einer Zwischenenklavenkommunikation. Das Zeitdiagramm stellt einen beispielhaften Prozess zum Managen der Kommunikationen bereit, so dass die Vertraulichkeit und die Integrität geschützt sind. Im Folgenden wird auf spezielle Schlüsselpaartypen verwiesen, wobei aber andere Schlüsseltypen außerdem verwendet werden können. Gleichermaßen können jedoch andere sichere Kommunikationstechniken und -prozesse verwendet werden.
-
Die Kommunikationskanäle zwischen den Komponentenenklaven 120 sind bidirektional authentifiziert, während jene zwischen der Wurzelenklave 110 und einer Komponentenenklave 120 unidirektional authentifiziert sind. Dies wird durch einen Anschluss-Handshake erreicht. Jedes Element der Enklavenhülle sollte den Besitz eines ECDH-Schlüsselpaares (siehe unten) aufweisen, das durch den ECDSA-Schlüssel der Wurzelenklave 110 zertifiziert ist (siehe unten), um sicher untereinander kommunizieren zu können. Zusätzlich stellt jedes Mitglied der Enklave POD sicher, dass der ECDH-Schlüssel des Peers außerdem durch denselben ECDSA-Schlüssel zertifiziert ist, um irgendwelche Informationen gemeinsam benutzen zu können.
-
Gemäß dem Prozess nach 2 wird die Wurzelenklave 110 zuerst gestartet. In diesem speziellen Beispiel erzeugt die Wurzelenklave 110 zwei Schlüsselpaare für sich selbst – das rDSA und das rDH. Das rDSH ist ein Schlüsselpaar eines digitalen Elliptische-Kurven-Signaturalgorithmus (ECDSA-Schlüsselpaar), wohingegen das rDH ein Elliptische-Kurven-Diffie-Hellman-Schlüsselpaar (ECDH-Schlüsselpaar) ist. Die Wurzelenklave 110 signiert dann den rDH_pub als einen Kanalherstellungsschlüssel für die Rolle "WURZEL".
-
Dann werden die Komponentenenklaven 120 gestartet. Wenn die Komponentenenklaven 120 gestartet werden, gehen sie durch einen Anschlussprozess, der es ihnen ermöglicht, ihre eigenen Kanal-Herstellungs- und Bereitstellungs-Berechtigungsnachweise zu erhalten. Der Anschlussprozess arbeitet wie folgt. Jede der Komponentenenklaven 120 erzeugt zwei Schlüsselpaare – das cDH und das cIES. Das cDH ist ein ECDH-Schlüsselpaar, das für die Zwischenenklaven-Kanalherstellung verwendet wird, wobei das cIES ein Schlüsselpaar eines integrierten Elliptische-Kurven-Verschlüsselungsschemas (ECIES-Schlüsselpaar) ist, das durch andere verwendet werden kann, um der Enklavenhülle 100 Geheimnisse bereitzustellen.
-
Die Komponentenenklave 120 leitet dann den Anschluss-Handshake mit der Wurzelenklave 110 ein, wobei der Anschluss-Handshake gemäß dem Zeitdiagramm nach 2 ausgeführt wird. Wie in 2 dargestellt ist, sendet die Wurzelenklave 120 ihr Manifest mit der Rolle ("Rolle"), ihren eigenen öffentlichen Komponenten-ECDH-Schlüssel (cDH-pub) und ihren eigenen öffentlichen Komponenten-ECIES-Schlüssel (cIES_Pub) an die Wurzelenklave 110.
-
Die Wurzelenklave 110 gibt nach dem Empfangen dieser Anforderung eine Herausforderung aus, wobei sie ein Paket an die Komponentenenklave 120 sendet, die den Anschlussprozess eingeleitet hat. Das Paket enthält den eigenen öffentlichen Wurzel-ECDH-Schlüssel (rDSA_pub) der Wurzel, eine Herausforderung und eine Kombination aus dem öffentlichen ECDSA-Schlüssel und der Herausforderung, die durch den privaten ECDSA-Schlüssel (rDSA_priv) der Wurzelenklave 110 signiert ist.
-
Die Komponentenenklave 120 erhält das Paket, validiert die Signatur mit dem öffentlichen Wurzel-ECDSA-Schlüssel, der Teil des Pakets ist, und sendet die Attesterklärung zurück, die enthält: die Rolle der Komponentenenklave 120, wie sie in dem Manifest dargelegt ist; den öffentlichen Komponenten-ECDH-Schlüssel (cDH_pub) der Komponentenenklave 120; den öffentlichen Komponenten-ECIES-Schlüssel (cIES_pub) der Komponentenenklave 120; den im vorhergehenden Schritt empfangenen öffentlichen ECDSA-Schlüssel (rDSA_pub) der Wurzelenklave; und die im vorhergehenden Schritt empfangene Herausforderung. Das Paket ist mit dem privaten ECIES-Schlüssel der Komponentenenklave 120 signiert und enthält eine Attesterklärung, die das Integritätsmaß enthält, das den Zustand der Komponentenenklave 120 beschreibt.
-
Die Wurzelenklave 110 erhält das Paket, validiert die Signatur mit dem öffentlichen ECIES-Schlüssel der Komponentenenklave 110, verifiziert die Attesterklärung und verifiziert die Rolle gegen ein bekanntes Komponentenmanifest. Nach dem Abschluss speichert die Wurzelenklave 110 den öffentlichen ECDH-Schlüssel (cDH_pub) und den öffentlichen ECIES-Schlüssel (cIES_pub) der Komponentenenklave 120 zusammen mit der Rolle der Komponentenenklave 120 in dem POD-Manifest.
-
Im Ergebnis des Abschlusses des "Anschlussprozesses" gibt die Wurzelenklave 110 dann zwei Erklärungen aus. Die erste ist eine signierte Erklärung, die enthalten kann: die Rolle der Komponentenenklave 120; den Typ des zertifizierten Schlüssels "DH"; und den öffentlichen ECDH-Schlüssel cDH_pub der Komponentenenklave 120. Die Erklärung ist mit dem eigenen privaten rDSA-Wurzelenklaven-ECDSA-Schlüssel der Wurzelenklave 110 signiert. Die zweite signierte Erklärung kann enthalten: die Rolle der Komponentenenklave 120; den Typ des zertifizierten Schlüssels "IES"; und den öffentlichen ECIES-Schlüssel cIES_pub der Komponentenenklave 120. Die Erklärung ist mit dem eigenen privaten rDSA-Wurzelenklaven-ECDSA-Schlüssel der Wurzelenklave 110 signiert.
-
Am Ende des Anschluss-Handshakes weist jede Komponente ein ECDH-Schlüsselpaar und ein EC-IES-Schlüsselpaar auf, das durch den ECDSA-Schlüssel der Wurzelenklave zertifiziert ist. Danach können irgendwelche zwei Enklaven in der Hülle 100 unter Verwendung dieser zertifizierten ECDH-Schlüssel eine sichere Verbindung herstellen. Jede der Enklaven stellt sicher, dass der ECDH-Schlüssel des Peers durch denselben ECDSA-Schlüssel zertifiziert ist.
-
Sobald die Hülle 100 durch den Anschlussprozess hergestellt ist, kann der entfernte Verifizierer 130 in diesem System Geheimnisse bereitstellen. Um die Aufdeckung der bereitgestellten Geheimnisse zu minimieren, umwickelt der entfernte Verifizierer 130 derartige Geheimnisse mit dem cIES_pub-Schlüssel der einzelnen Komponentenenklaven 120. Die Wurzelenklave 110 befindet sich innerhalb der Vertrauensgrenze derartiger bereitgestellter Geheimnisse, da sie diejenige ist, die die cIES_pub-Schlüssel zertifiziert. Folglich besteht der Zweck eines derartigen Umwickelns lediglich darin, eine unbeabsichtigte Offenbarung dieser Geheimnisse zu verhindern.
-
Schließlich ist jede der Komponentenenklaven 120 für das Versiegeln ihrer eigenen Geheimnisse verantwortlich. Jede Komponentenenklave 120 führt dies durch das Mischen ihres eigenen Versiegelungsschlüssels mit einem durch die Wurzelenklave 110 bereitgestellten Schlüssel, der für die Rolle und das Manifest spezifisch ist, aus. Der für die Rolle und das Manifest spezifische Schlüssel wird durch das Mischen des Versiegelungsschlüssels der Wurzelenklave 110 mit der Rolle und der Manifestidentität erzeugt.
-
In einigen Implementierungen kann die Enklavenhülle 100 sichere Protokolle basierend auf allen in der Enklave ausgeführten Transaktionen oder Handlungen erzeugen. Die Protokolle sind mit dem Schlüssel der Enklave kryptographisch signiert.
-
Während die obige Beschreibung nach 2 spezifisch die Verwendung der Elliptische-Kurven-Kryptographie durch die Verwendung des ECDH-Schlüsselpaares und des ECDSA-Schlüssels betrifft, ist dies für die Erfindung nicht wesentlich, wobei andere Typen kryptographischer Schlüssel verwendet werden können.
-
Die Hybrid-Cloud-Enklaven
-
Bei einer privaten Cloud steuert der Kunde seine Umgebung in den Räumlichkeiten, wobei er vorhandene Arbeitsbelastungen aufweist, die innerhalb der Umgebung in den Räumlichkeiten ausgeführt werden. Die öffentliche Cloud kann jedoch skalierbarer und leistungsfähiger sein. Folglich ermöglichen es die Hybrid-Cloud-Enklaven dem Kunden, die Skalierbarkeit der öffentlichen Cloud auszunutzen, während sie immer noch den Schutz der Umgebung in den Räumlichkeiten für bestimmte Daten und Binärdateien bieten.
-
Wenn ein Kunde einen Hybrid-Cloud-Einsatz ausführt, kann der Kunde wünschen, seinen sensiblen Code oder seine sensiblen Daten vor dem öffentlichen Cloud-Anbieter zu schützen. Um dieses Ziel zu erreichen, erlaubt es die Hybrid-Cloud dem Kunden, seine Geheimnisse an die Komponenten zu binden, über die er die vollständige Steuerung in seiner Umgebung in den Räumlichkeiten hat. Dieser Mechanismus ermöglicht es dem Kunden, die Leistung der öffentlichen Cloud für anderen, weniger sensiblen Code und andere weniger sensible Daten wirksam einzusetzen, während er die Steuerung über hochwertige Daten und hochwertigen Code behält, indem sie lokal ausgeführt werden. Gleichermaßen kann der Cloud-Anbieter wünschen, einige sensible Tasks abzustoßen, um sie im Datenzentrum des Kunden oder in einer anderen Cloud auszuführen, um den Regelungen zu entsprechen oder um den Kunden mehr Flexibilitäten anzubieten, während er immer noch die vertrauenswürdige Beziehung mit der ausgelagerten Funktionalität aufgrund dessen aufrechterhält, dass er sie mit den Arbeitsbelastungen des Kunden verknüpft, die weiterhin in der öffentlichen Cloud liegen.
-
3 ist eine graphische Systemdarstellung mehrerer Enklaven in einer Hybrid-Cloud. Eine Hybrid-Cloud-Enklave 300 bindet den sensibelsten Code (bezüglich des weniger sensiblen Codes) und die sensibelsten Daten mit der isolierten sicheren Ausführungsumgebung in einer Enklavenhülle 302 in den Räumlichkeiten, die unter der Steuerung des Kunden betrieben wird. Die Enklavenhülle 302 in den Räumlichkeiten setzt das System der Enklaven wirkungsvoll ein, um eine strenge Isolation der Ausführung des sensiblen Codes oder des Zugriffs auf die sensiblen Daten, wie sie durch den Kunden spezifiziert werden, und dem weniger sensiblen Code zu ermöglichen, der in einer oder mehreren Cloud-Enklavenhüllen 352 ausgeführt wird. Die Hüllen 302 (die Wurzelenklave 310, das Manifest 312 und die Komponentenenklaven 320) und 352 (die Wurzelenklave 360, das Manifest 362 und die Komponentenenklaven 370) sind in der hierarchischen Architektur, die bezüglich der Hülle 100 nach 1 beschrieben worden ist, ähnlich.
-
Das Binden an die Enklavenhülle 302 in den Räumlichkeiten erzwingt automatisch die Verschlüsselung, wann immer Code oder Daten die Sicherheitsgrenze der Enklaven des Kunden verlassen. Die Enklavenhülle 302 in den Räumlichkeiten ermöglicht es außerdem einen Kunden, die Enklaven zu attestieren, und gibt den Kunden insgesamt die Versicherung, dass sein sensibler Code und seine sensiblen Daten unter seinen Bedingungen verarbeitet werden, wobei sie folglich die Hauptrisiken behandelt, die die Kunden in der Verwendung der öffentlichen Cloud mit mehreren Mietern für ihre sensiblen Arbeitsbelastungen sehen.
-
4 ist ein Ablaufplan eines beispielhaften Prozesses zum Erzeugen mehrerer Enklaven in einer Hybrid-Cloud. Der Prozess 400 erzeugt eine Master-Enklave in einer Umgebung in den Räumlichkeiten/der privaten Cloud (402). Der Kunde erzeugt z. B. seine Master-Enklave in leerer Form (ohne Code oder Daten) unter Verwendung eines bereitgestellten Werkzeugsatzes in der Umgebung in den Räumlichkeiten/der privaten Cloud unter seiner vollständigen Steuerung. Der Kunde signiert die Master-Enklave mit seinem eigenen privaten Schlüssel und fügt seinen öffentlichen Schlüssel zu dem Paket der Master-Enklave hinzu. Der Kunde aktiviert dann den Enklavenmanagementdienst von einem öffentlichen Cloud-Anbieter, wählt die Task für die Bereitstellung für eine Cloud-Enklavenhülle aus und spezifiziert, wie die Enklaven in der Cloud gemanagt werden sollen.
-
Der Prozess 400 lädt die leere Enklave als eine Master-Enklave hoch (404). Die Master-Enklave wird zu dem Cloud-Dienst hochgeladen. Die Master-Enklave, sobald sie instanziiert ist, ermöglicht es anderen Cloud-Enklaven, den Beweis des Besitzes eines Schlüssels, mit dem eine Master-Enklave signiert ist, unter Verwendung eines öffentlichen Schlüssels, der als Teil derselben Transaktion gemeinsam benutzt wird, zu validieren.
-
Der Prozess 400 validiert den öffentlichen Schlüssel für die Master-Enklave (406). Der öffentliche Schlüssel, der offline (z. B. durch einen weiteren sicheren Kanal) mit dem Cloud-Anbieter geteilt wurde, wird ebenso validiert, um sicherzustellen, dass ein verifizierbares Kundenkonto verwendet wird, um die Enklavenhülle zu erzeugen.
-
Der Prozess 400 setzt Code und Daten in die Master-Enklave ein (408). Der Kunde setzt z. B. den Code und die Daten in seiner Master-Enklave in den Räumlichkeiten ein und validiert die Funktionalität.
-
Der Prozess 400 stellt den Code und die Daten in anderen Enklaven von der Master-Enklave bereit (410). Wenn z. B. die Enklave des Kunden dem System der Enklaven in der Cloud beitritt, werden der Code und die Daten über die Master-Enklave in alle anderen Enklaven in dem System eingesetzt, wie es durch den Kunden spezifiziert ist (die Bereiche, die hierarchische Beziehung, die Verfügbarkeit usw.). Wenn jede neue Enklave in einer Hülle instanziiert wird, muss sie basierend auf den Attestabläufen in der Enklave ihren Ursprung und Zustand den vorhandenen Mitgliedern der Hülle attestieren. Ein Kunde kann dann mit seinem System von Enklaven in Wechselwirkung treten, um sensiblen Code auszuführen oder sensible Daten zu verarbeiten, ohne eine Verschlüsselung und ein kompliziertes Schlüsselmanagement getrennt zu managen. Der Kunde hat die Versicherung, dass sein sensibler Code und seine sensiblen Daten in der öffentlichen Cloud geschützt sind, während sie sich in Gebrauch befinden, und dass die Vertraulichkeit und Integrität durchgesetzt sind, während sie sich in Ruhe befinden.
-
Ein Kunde kann die Attestierung der in seinem System verwendeten Enklaven und des Codes, der in seinen Enklaven ausgeführt wird, periodisch ausführen, um die Integrität des Codes und der Daten, die in den Enklaven ausgeführt werden, zu validieren.
-
Eine Rendezvous-Enklave
-
Eine Rendezvous-Enklave ermöglicht die Verarbeitung von Daten und Code durch mehrere nicht vertrauenswürdige Parteien, während sie sicherstellt, dass jede Partei keinen Zugriff auf die Daten oder den Code anderer Parteien erreicht. Dies ermöglicht die gemeinschaftliche Verarbeitung zwischen den Parteien mit den Versicherungen der Integrität, Sicherheit und Vertraulichkeit der Daten.
-
Die Rendezvous-Enklave versieht die Kunden mit der Option, ihre privaten Anwendungsnutzdaten in den isolierten sicheren Ausführungsumgebungen auszuführen, während die nicht vertrauenswürdigen Parteien ihre Daten sicher gemeinsam benutzen und ihre gemeinsamen Tasks ausführen können, damit alle Teilnehmer profitieren. Die Rendezvous-Enklave unterstützt außerdem eine Vertrauenskette und erhält eine Vertrauenskette aufrecht, die in Hardware und/oder Software verwurzelt ist, und bietet ein kryptographisches Attest, das durch mehrere Parteien verifizierbar ist, um die Vertraulichkeit und die Integrität der in der Enklave ausgeführten Tasks sicherzustellen.
-
In einigen Implementierungen ermöglicht eine Rendezvous-Enklave die Aufteilung und die Rekonstruktion der kryptographischen Schlüssel in der Enklaven-Umgebung. Die Schlüssel werden durch den Satz der nicht vertrauenswürdigen Parteien hinterlegt, um sicherzustellen, dass eine Autorisierungsentscheidung mit hoher Wirkung mit der Überwachung und Zustimmung aller Parteien ausgeführt wird, wenn sie ihre Teile des "Schlüssels" anbieten, um die Operation zu autorisieren. Dieses Schema ist auf die Cloud-Anbieter anwendbar, wenn andere Parteien als die Cloud-Anbieter selbst ihre Einrichtungen betreiben und die Einrichtung und die Datenwächterentität werden. Ähnliche Herangehensweisen erstrecken sich nicht nur auf kryptographische Operationen, sondern auf den beliebigen Typ von Operationen, wo mehrere nicht vertrauenswürdige Parteien eine Zugriffssteuerung erzwingen können, die die Zustimmung von allen oder einer Teilmenge der Parteien erfordert. Die Rendezvous-Enklave stellt folglich sicher, dass private Operationen und Entscheidungen, die in der isolierten sicheren Ausführungsumgebung getroffen werden, nicht geändert werden können und dass von der Enklave nicht auf persönliche sensible Daten zugegriffen werden kann oder persönliche sensible Daten von der Enklave nicht herausgefiltert werden können.
-
5 ist eine graphische Systemdarstellung einer Rendezvous-Enklave 502 für mehrere Parteien. Die Enklave 502 (die Wurzelenklave 510, das Manifest 512 und die Komponentenenklaven 520) ist in der bezüglich der Hülle 100 nach 1 beschriebenen hierarchischen Architektur ähnlich. Die Rendezvous-Enklave 502 ermöglicht jedoch, dass jede Komponentenenklave 520 einer speziellen Partei von mehreren Parteien zugeordnet ist, die vereinbart haben, die Rendezvous-Enklave 502 zu bilden. Zusätzlich kann jede Partei außerdem jeweilige Daten 530 in verschlüsselter Form für die Verarbeitung in der Enklave 502 bereitstellen. Die Rendezvous-Enklave 502 implementiert einen geradlinigen Schlüsselmanagement- und Schlüsselhandhabungsmechanismus, um ein Vertrauen zwischen den Enklaven 530 herzustellen, um sicherzustellen, dass die Sicherheit nicht gefährdet ist. Die Rendezvous-Enklave 502 sorgt außerdem dafür, dass jede Partei eine Attesterklärung unabhängig aus der Ferne verifiziert, die den Zustand der Enklaven darstellt, wenn ihre sensiblen Tasks ausgeführt werden. Die Rendezvous-Enklave ermöglicht außerdem in einigen Implementierungen eine Quorum-Abstimmung durch die Verwendung der aufgeteilten Schlüssel, um zu entscheiden, wann die Ausführung der Enklave zu starten ist und wann ihre Ausführung stillzulegen ist, oder um unter Verwendung der Technik aufgeteilter Schlüssel andere notwendige Enklavenmanagement-Tasks auszuführen.
-
6 ist ein Ablaufplan eines beispielhaften Prozesses zum Erzeugen einer Rendezvous-Enklave. Der Prozess 600 ordnet N Kunden einer Rendezvous-Enklave zu (602). Es wird z. B. angenommen, dass mehrere Organisationen mit dem Ziel, ihren gemeinsamen Algorithmus an den kombinierten Dateneingaben zu berechnen und die Ergebnisse gemeinsam zu benutzen, vereinbaren, ihre vertrauliche Eingabe dem Cloud-Anbieter bereitzustellen, ohne ihre Daten zu enthüllen. Jeder Kunde aus der N-Gruppe meldet sich von einem öffentlichen Cloud-Anbieter für den Enklavenmanagementdienst an, wählt die Task für die Bereitstellung der Cloud-Enklavenhülle (z. B. der Komponentenenklavenhüllen 520 für diesen Kunden) und spezifiziert, wie die Enklaven zu managen sind, die Konfigurationseigenschaften usw.
-
Im Ergebnis dieser Operation löst jeder Kunde die Erzeugung eines jeweiligen Manifests aus, das die Konfiguration der Enklavenhülle, die er einsetzen möchte, eine Projektkennung und eine Kennung eines Speicherbehälters (der Speicherbehälter) und einen Satz von Verschlüsselungs- und Signierungsschlüsseln, der dieser Enklavenhülle zugeordnet ist, beschreibt. Das Manifest wird mit dem privaten Schlüssel des Kunden signiert, den er offline mit dem Cloud-Schlüsselmanagementdienst geteilt hat.
-
Der Prozess 600 umwickelt den Schlüssel jedes Kunden, der verwendet wird, um die Daten zu verschlüsseln, mit einem vom Kunden gelieferten Verschlüsselungsschlüssel (604). Die Daten in dem Cloud-Speicherbehälter werden mit dem erzeugten Cloud-KMS-Schlüssel, der mit dem vom Kunden gelieferten Verschlüsselungsschlüssel (KEK) umwickelt ist, verschlüsselt, um sicherzustellen, dass auf die Daten ohne die Zustimmung des Eigentümers nicht unverschlüsselt zugegriffen werden kann.
-
Der Prozess 600 verifiziert den mit dem Cloud-Anbieter gemeinsam benutzten öffentlichen Schlüssel (606). Der öffentliche Schlüssel, der mit dem Cloud-Anbieter offline geteilt wurde, wird ebenso validiert, um sicherzustellen, dass ein verifizierbares Kundenkonto verwendet wird, um die Enklavenhülle zu erzeugen.
-
Der Prozess 600 setzt Binärdateien ein (608). Die Kunden spezifizieren z. B. die Binärdateien, die sie in der Enklave einsetzen müssen, und spezifizieren die Orte der Binärdateien.
-
Der Prozess 600 teilt den Enklavensignierungsschlüssel unter den N Kunden auf, um eine Gruppenabstimmung zu ermöglichen, um die Enklave zu steuern, (610). Für die Enklaven mit geteilter Verantwortung erzeugt ein Cloud-Schlüsselmanagementsystem den Enklavensignierungsschlüssel und stellt unter Verwendung einer Schlüsselaufteilungstechnik allen N Teilnehmern einen jeweiligen Anteil oder ein jeweiliges Fragment des gesamten Schlüssels bereit. Die Schlüsselaufteilungstechnik ermöglicht es den Teilnehmern, über den Zugriff auf die Rendezvous-Enklavenhülle 502 abzustimmen, und ermöglicht es ihnen, als eine Gruppe die Enklavenverwendung ihrer jeweiligen Daten aus dem Speicherbehälter für die Algorithmenberechnung zu steuern.
-
Ein Cloud-Schlüsselmanagementdienst teilt einen privaten Signierungs-Enklavenschlüssel in Fragmente eines N-von-N-Quorums auf. Für jeden Kunden ist sein jeweiliges n-tes Fragment des Schlüssels einer Projekt-ID des Kunden zugeordnet und mit dem gelieferten Verschlüsselungsschlüssel KEK des Kunden umwickelt. Wenn die Kunden zustimmen, den Prozess in der Rendezvous-Enklave zu starten, verwenden sie ihr n-tes Fragment, um das Enklavenmanifest 512 zu signieren und um die teilweise signierte Nachricht mit dem Cloud-Enklavenmanagementsystemen gemeinsam zu benutzen. Weil nichts in der resultierenden Signatur enthüllt, wer "abgestimmt" hat, kann der Master-Schlüssel, der der Binärdatei und der Enklave zugeordnet ist, nur rekonstruiert werden und kann die Enklave nur gestartet werden, nachdem alle N Teilnehmer ihre Herausforderungen mit ihrem n-ten Fragment des Schlüssels signiert haben. Folglich stimmen alle Teilnehmer durch das Signieren des Enklavenmanifests der Verwendung ihrer Speicherbehälter als Eingabe in die Enklavenberechnung zu. Der gleiche "Abstimmungs"-Prozess kann angewendet werden, wenn die Enklave stillgelegt werden muss oder für das Attest verfügbar sein muss oder die Ergebnisse der Berechnung für jedermann verfügbar gemacht werden. Nur wenn N aus N Kunden mit ihren Anteilen der Schlüssel "abgestimmt" haben, um die Enklave zu starten, kann die Enklave durch die Cloud gestartet werden und kann auf die durch die N Kunden gemeinsam benutzten Daten zugegriffen werden.
-
In einigen Implementierungen kann jeder Kunde aus der Gruppe das Attestieren der Enklaven, die in der gemeinschaftlichen Angelegenheit verwendet werden, nach dem "Abstimmungs"-Zustimmen periodisch ausführen, um diese Fähigkeit in der Enklavenhülle 502 zu ermöglichen. Im Ergebnis können alle Kunden einen Integritätsanspruch mit den Enklavenmaßen erhalten, um die Integrität des Codes und der Daten, die in den Enklaven ausgeführt werden, validieren zu können.
-
In einigen Implementierungen kann diese Fähigkeit basierend auf einem Mehrheitsabstimmungsalgorithmus der Teilnehmer arbeiten. In anderen Implementierungen kann ein Aufteilungs- und Delegierungsmodell verwendet werden, wenn es ausreichend ist, nur M aus N aufgeteilten Schlüsselfragmenten zu verwenden, um den gesamten Schlüssel zu regenerieren, um ihn für die Autorisierung der hauptsächlichen kritischen Operation mit den Enklaven, wie z. B. das Starten, das Stilllegen und das Attestieren, zu verwenden.
-
Die Ausführungsformen des Gegenstands und der Operationen, die in dieser Beschreibung beschrieben sind, können in einer digitalen elektronischen Schaltungsanordnung oder in Computer-Software, Firmware oder Hardware einschließlich der in dieser Beschreibung offenbarten Strukturen und ihrer strukturellen Äquivalente oder in Kombinationen aus einem oder mehreren von diesen implementiert sein. Die Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h., ein oder mehrere Module von Computerprogrammanweisungen, die in einem Computerspeichermedium für die Ausführung durch eine Datenverarbeitungsvorrichtung oder zur Steuerung des Betriebs einer Datenverarbeitungsvorrichtung codiert sind, implementiert sein. Alternativ oder zusätzlich können die Programmanweisungen in einem künstlich erzeugten ausgebreiteten Signal, z. B. einem maschinenerzeugten elektrischen, optischen oder elektromagnetischen Signal, codiert sein, das erzeugt wird, um die Informationen für die Übertragung zu einer geeigneten Empfängervorrichtung für die Ausführung durch eine Datenverarbeitungsvorrichtung zu codieren. Ein Computerspeichermedium kann eine computerlesbare Speichervorrichtung, ein computerlesbares Speichersubstrat, eine Schreib-Lese-Speicheranordnung oder -vorrichtung oder eine Speicheranordnung oder -vorrichtung mit seriellem Zugriff oder eine Kombination aus einem oder mehreren von diesen sein oder darin enthalten sein. Während ein Computerspeichermedium kein ausgebreitetes Signal ist, kann ein Computerspeichermedium überdies eine Quelle oder ein Ziel von Computerprogrammanweisungen sein, die in einem künstlich erzeugten ausgebreiteten Signal codiert sind. Das Computerspeichermedium kann außerdem ein oder mehrere separate physische Komponenten oder Medien (z. B. mehrere CDs, Platten oder andere Speichervorrichtungen) sein oder darin enthalten sein.
-
Die in dieser Beschreibung beschriebenen Operationen können als Operationen implementiert sein, die durch eine Datenverarbeitungsvorrichtung an Daten ausgeführt werden, die in einer oder mehreren computerlesbaren Speichervorrichtungen gespeichert sind oder von anderen Quellen empfangen werden.
-
Der Begriff "Datenverarbeitungsvorrichtung" umfasst alle Arten von Geräten, Vorrichtungen und Maschinen zum Verarbeiten von Daten, beispielhaft einschließlich eines programmierbaren Prozessors, eines Computers, eines Systems auf einem Chip, mehrerer der Vorhergehenden oder Kombinationen aus den Vorhergehenden. Die Vorrichtung kann eine logische Spezialschaltungsanordnung, z. B. eine FPGA (eine feldprogrammierbare Gatteranordnung) oder eine ASIC (eine anwendungsspezifische integrierte Schaltung), enthalten. Die Vorrichtung kann außerdem zusätzlich zu der Hardware Code, der eine Ausführungsumgebung für das fragliche Computerprogramm erzeugt, z. B. Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbankmanagementsystem, ein Betriebssystem, eine plattformübergreifende Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination aus einem oder mehreren von diesen bildet, enthalten. Die Vorrichtung und die Ausführungsumgebung können verschiedene unterschiedliche Computermodellinfrastrukturen verwirklichen, wie z. B. Web-Dienste, verteilte Computer- und Grid-Computing-Infrastrukturen.
-
Ein Computerprogramm (das außerdem als ein Programm, Software, eine Software-Anwendung, ein Skript oder Code bekannt ist) kann in irgendeiner Form einer Programmiersprache einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder prozeduraler Sprachen geschrieben sein und kann in irgendeiner Form einschließlich als selbständiges Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder eine andere Einheit, die für die Verwendung in einer Computerumgebung geeignet ist, eingesetzt werden. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Abschnitt einer Datei, die andere Programme oder Daten (z. B. ein oder mehrere Skripte, die in einem Auszeichnungssprachendokument gespeichert sind) enthält, in einer einzigen Datei, die für das fragliche Programm dediziert ist, oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Abschnitte des Codes speichern) gespeichert sein. Ein Computerprogramm kann eingesetzt werden, um in einem Computer oder in mehreren Computern, die sich an einem Standort befinden oder über mehrere Standorte verteilt und durch ein Kommunikationsnetz verbunden sind, ausgeführt zu werden.
-
Die in dieser Beschreibung beschriebenen Prozesse und Logikflüsse können durch einen oder mehrere programmierbare Prozessoren ausgeführt werden, die ein oder mehrere Computerprogramme ausführen, um die Handlungen durch das Wirken auf die Eingangsdaten und das Erzeugen einer Ausgabe auszuführen. Die Prozesse und Logikflüsse können außerdem durch eine Spezial-Logikschaltungsanordnung, z. B. eine FPGA (eine feldprogrammierbare Gatteranordnung) oder eine ASIC (eine anwendungsspezifische integrierte Schaltung), ausgeführt werden und eine Vorrichtung kann außerdem als eine Spezial-Logikschaltungsanordnung, z. B. eine FPGA (eine feldprogrammierbare Gatteranordnung) oder eine ASIC (eine anwendungsspezifische integrierte Schaltung), implementiert sein.
-
Die für die Ausführung eines Computerprogramms geeigneten Prozessoren enthalten beispielhaft sowohl Universal- als auch Spezialmikroprozessoren und irgendeinen oder mehrere Prozessoren irgendeiner Art eines digitalen Computers. Im Allgemeinen empfängt ein Prozessor Anweisungen und Daten von einem Festwertspeicher oder einem Schreib-Lese-Speicher oder beiden. Die wesentlichen Elemente eines Computers sind ein Prozessor zum Ausführen der Handlungen in Übereinstimmung mit den Anweisungen und eine oder mehrere Speichervorrichtungen zum Speichern von Anweisungen und Daten. Im Allgemeinen enthält ein Computer außerdem eine oder mehrere Massenspeichervorrichtungen zum Speichern von Daten, z. B. magnetische, magnetooptische Platten oder optische Platten, oder ist ein Computer außerdem betriebstechnisch an eine oder mehrere Massenspeichervorrichtungen zum Speichern von Daten, z. B. magnetische, magnetooptische Platten oder optische Platten, gekoppelt, um Daten von ihnen zu empfangen oder Daten zu ihnen übertragen oder beides. Ein Computer muss jedoch derartige Vorrichtungen nicht aufweisen. Überdies kann ein Computer in eine andere Vorrichtung, z. B. ein Mobiltelephon, einen persönlichen digitalen Assistenten (PDA), ein mobilen Audio- oder Videoabspielgerät, eine Spielekonsole, einen Empfänger eines globalen Positionierungssystems (GPS-Empfänger) oder eine tragbare Speichervorrichtung (z. B. ein Flash-Laufwerk des universellen seriellen Busses (USB-Flash-Laufwerk)) eingebettet sein, um nur einige zu nennen. Die zum Speichern von Computerprogrammanweisungen und Daten geeigneten Vorrichtungen enthalten alle Formen von nichtflüchtigem Speicher, nichtflüchtigen Medien und nichtflüchtigen Speichervorrichtungen, einschließlich beispielhaft Halbleiterspeichervorrichtungen, z. B. EPROM, EEPROM und Flash-Speichervorrichtungen; Magnetplatten, z. B. interner Festplatten oder abnehmbarer Platten; magnetooptischer Platten; und CD-ROM- und DVD-ROM-Platten. Der Prozessor und der Speicher können außerdem durch eine logische Spezialschaltungsanordnung ergänzt oder in einer logischen Spezialschaltungsanordnung enthalten sein.
-
Um für eine Wechselwirkung mit einem Anwender zu sorgen, können die Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstandes in einem Computer implementiert sein, der eine Anzeigevorrichtung, z. B. einen CRT-(Kathodenstrahlröhren-) oder LCD-(Flüssigkristallanzeige-)Monitor, zum Anzeigen von Informationen für den Anwender und eine Tastatur und eine Anzeigevorrichtung, z. B. eine Maus oder eine Rollkugel, durch die der Anwender dem Computer eine Eingabe bereitstellen kann, aufweist. Es können ebenso andere Arten von Vorrichtungen verwendet werden, um für eine Wechselwirkung mit einem Anwender zu sorgen; eine dem Anwender bereitgestellte Rückkopplung kann z. B. irgendeine Form einer sensorischen Rückkopplung z. B. eine visuelle Rückkopplung, eine auditorische Rückkopplung oder eine taktile Rückkopplung sein; während die Eingabe von dem Anwender in irgendeiner Form einschließlich einer akustischen, Sprach- oder taktilen Eingabe empfangen werden kann. Zusätzlich kann ein Computer mit einem Anwender durch das Senden von Dokumenten an eine und das Empfangen von Dokumenten von einer Vorrichtung, die durch den Anwender verwendet wird, in Wechselwirkung treten; z. B. durch das Senden von Web-Seiten an einen Web-Browser in einer Anwendervorrichtung des Anwenders in Reaktion auf die von dem Web-Browser empfangenen Anforderungen.
-
Die Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands können in einem Computersystem, das eine Back-End-Komponente, z. B. als einen Daten-Server, enthält oder das eine Middleware-Komponente, z. B. einen Anwendungs-Server, enthält oder das eine Front-End-Komponente, z. B. einen Anwender-Computer, der eine graphische Anwenderschnittstelle oder einen Web-Browser aufweist, durch die bzw. den ein Anwender mit einer Implementierung des in dieser Beschreibung beschriebenen Gegenstands in Wechselwirkung treten kann, enthält, oder in irgendeiner Kombination aus einer oder mehreren derartigen Back-End-, Middleware- oder Front-End-Komponenten implementiert sein. Die Komponenten des Systems können durch irgendeine Form oder irgendein Medium der digitalen Datenkommunikation, z. B. ein Kommunikationsnetz, miteinander verbunden sein. Die Beispiele der Kommunikationsnetze enthalten ein lokales Netz ("LAN") und ein Weitbereichsnetz ("WAN"), ein Zwischennetz (z. B. das Internet) und Peer-zu-Peer-Netze (z. B. Ad-hoc-Peer-zu-Peer-Netze).
-
Das Computersystem kann Anwender und Server enthalten. Ein Anwender und ein Server befinden sich im Allgemeinen entfernt voneinander und treten typischerweise durch ein Kommunikationsnetz in Wechselwirkung. Die Beziehung des Anwenders und des Servers ergibt sich aufgrund der Computerprogramme, die in den jeweiligen Computern ausgeführt werden und die eine Anwender-Server-Beziehung zueinander aufweisen. In einigen Ausführungsformen sendet ein Server Daten (z. B. eine HTML-Seite) an eine Anwendervorrichtung (z. B. für die Zwecke des Anzeigens von Daten für einen oder des Empfangens einer Anwendereingabe von einem Anwender, der mit der Anwendervorrichtung in Wechselwirkung tritt). Die durch die Anwendervorrichtung (z. B. im Ergebnis der Anwenderwechselwirkung) erzeugten Daten können an dem Server von der Anwendervorrichtung empfangen werden.
-
Während diese Beschreibung viele spezifische Implementierungseinzelheiten enthält, sollten diese nicht als Einschränkungen an den Schutzumfang irgendwelcher Erfindungen oder an das, was beansprucht werden kann, sondern stattdessen als Beschreibungen der Merkmale, die für spezielle Ausführungsformen der speziellen Erfindungen spezifisch sind, ausgelegt werden. Bestimmte Merkmale, die in dieser Beschreibung im Kontext separater Ausführungsformen beschrieben sind, können außerdem in Kombination in einer einzigen Ausführungsform implementiert sein. Umgekehrt können verschiedene Merkmale, die im Kontext einer einzigen Ausführungsform beschrieben sind, außerdem in mehreren Ausführungsformen getrennt oder in irgendeiner geeigneten Unterkombination implementiert sein. Obwohl die Merkmale oben als in bestimmten Kombinationen wirkend beschrieben und sogar anfangs als solche beansprucht sein können, können überdies ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination entfernt werden und kann die beanspruchte Kombination auf eine Unterkombination oder eine Variation einer Unterkombination gerichtet sein.
-
Während die Operationen in den Zeichnungen in einer speziellen Reihenfolge dargestellt sind, sollte dies ähnlich nicht so verstanden werden, dass es erforderlich ist, dass derartige Operationen in der gezeigten speziellen Reihenfolge oder in einer sequentiellen Reihenfolge ausgeführt werden oder dass alle veranschaulichten Operationen ausgeführt werden, um die erwünschten Ergebnisse zu erreichen. Unter bestimmten Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Überdies sollte die Trennung der verschiedenen Systemkomponenten in den oben beschriebenen Ausführungsformen nicht so verstanden werden, dass eine derartige Trennung in allen Ausführungsformen erforderlich ist, wobei sie so verstanden werden sollte, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen in einem einzigen Software-Produkt integriert sein können oder in mehrere Pakete von Software-Produkten verpackt sein können.
-
Folglich sind spezielle Ausführungsformen des Gegenstands beschrieben worden. Andere Ausführungsformen befinden sich innerhalb des Schutzumfangs der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen dargestellten Handlungen in einer anderen Reihenfolge ausgeführt werden und dennoch die erwünschten Ergebnisse erreichen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die gezeigte spezielle Reihenfolge oder sequentielle Reihenfolge, um die erwünschten Ergebnisse zu erreichen. In bestimmten Implementierungen können Multitasking und Parallelverarbeitung vorteilhaft sein.