DE112019001957T5 - Sichere operationen mit verschlüsselten daten - Google Patents

Sichere operationen mit verschlüsselten daten Download PDF

Info

Publication number
DE112019001957T5
DE112019001957T5 DE112019001957.0T DE112019001957T DE112019001957T5 DE 112019001957 T5 DE112019001957 T5 DE 112019001957T5 DE 112019001957 T DE112019001957 T DE 112019001957T DE 112019001957 T5 DE112019001957 T5 DE 112019001957T5
Authority
DE
Germany
Prior art keywords
processor
operating mode
encrypted
code
data
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.)
Ceased
Application number
DE112019001957.0T
Other languages
English (en)
Inventor
Oliver Benke
Tobias BERGMANN
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112019001957T5 publication Critical patent/DE112019001957T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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

Landscapes

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

Abstract

An verschlüsseltem Code werden sichere Operationen durchgeführt. In einem ersten Betriebsmodus bezieht der Prozessor verschlüsselten Code. Der Prozessor schaltet vom ersten Betriebsmodus in einen zweiten Betriebsmodus und entschlüsselt den verschlüsselten Code, um entschlüsselten Code zu erhalten. Der entschlüsselte Code wird ausgeführt, wenn sich der Prozessor im zweiten Betriebsmodus befindet, um ein Ergebnis zu liefern. Das Ergebnis wird verschlüsselt, und das verschlüsselte Ergebnis wird an einen Nutzer gesendet, wenn der Prozessor wieder in den ersten Betriebsmodus umschaltet.

Description

  • HINTERGRUND
  • Ein oder mehrere Aspekte betreffen allgemein Datenverschlüsselung, insbesondere die Durchführung sicherer Operationen mit verschlüsselten Daten in einer oder mehreren Datenverarbeitungsumgebungen, darunter Cloud-Computing-Umgebungen.
  • Cloud-Computing ermöglicht Kunden oder Nutzern, für die Verwendung von Hardware- und Software-Ressourcen zu bezahlen, die nach Bedarf angefragt und beispielsweise über das Internet bereitgestellt werden. Der Cloud-Anbieter stellt nicht nur die Ressourcen bereit, sondern sorgt auch für den Schutz der Daten eines Kunden, indem er anderen Kunden keinen Zugriff auf die Daten des Kunden erlaubt.
  • Da der Cloud-Anbieter Zugriff auf die Daten hat, wenn auch verschlüsselt, ist Vertrauen in den Cloud-Anbieter erforderlich. Beispielsweise ist es üblich, dass, wenn verschlüsselte Daten in die Cloud geladen werden und an den geladenen verschlüsselten Daten in der Cloud Operationen durchgeführt werden (z.B. zur Berichterstellung), der Cloud-Dienstanbieter die verarbeiteten Daten als Klartext sehen kann. Dies stellt ein Problem dar, da der Dienstanbieter von jemandem mit böswilligen Absichten gehackt werden kann.
  • KURZDARSTELLUNG
  • Durch die Bereitstellung eines Computerprogrammprodukts zum Erleichtern von Verarbeitung innerhalb einer Datenverarbeitungsumgebung werden Mängel des Standes der Technik behoben und zusätzliche Vorteile bereitgestellt. Das Computerprogrammprodukt enthält ein durch einen Computer lesbares Speichermedium, das durch eine Verarbeitungsschaltung lesbar ist und Anweisungen zum Durchführen eines Verfahrens speichert. Das Verfahren umfasst Beziehen von verschlüsseltem Code durch einen Prozessor in einem ersten Betriebsmodus, wobei der Prozessor dafür vorgesehen ist, Klartextanweisungen auszuführen, wenn er sich im ersten Betriebsmodus befindet. Der Prozessor wird vom ersten Betriebsmodus in einen zweiten Betriebsmodus umgeschaltet, wobei sich der zweite Betriebsmodus vom ersten Betriebsmodus unterscheidet. Wenn sich der Prozessor im zweiten Betriebsmodus befindet, werden die verschlüsselten Daten entschlüsselt, um entschlüsselten Code zu erhalten, und der entschlüsselte Code wird ausgeführt.
  • Durch einen Computer implementierte Verfahren und Systeme, die einen oder mehrere Aspekte betreffen, werden vorliegend ebenfalls beschrieben und beansprucht. Ferner werden auch einen oder mehrere Aspekte betreffende Dienste beschrieben und können vorliegend beansprucht werden.
  • Zusätzliche Merkmale und Vorteile werden durch die vorliegend beschriebenen Methoden realisiert. Weitere Ausführungsformen und Aspekte werden vorliegend ausführlich beschrieben und werden als Teil der beanspruchten Aspekte betrachtet.
  • Figurenliste
  • Ein oder mehrere Aspekte werden besonders hervorgehoben und in den Ansprüchen am Ende der Spezifikation als Beispiele eigens beansprucht. Die vorstehend genannten Aufgaben, Merkmale und Vorteile eines oder mehrerer Aspekte werden aus der nachfolgenden ausführlichen Beschreibung in Zusammenschau mit den begleitenden Zeichnungen ersichtlich. Es zeigen:
    • 1A bis 1F ein Beispiel für Verarbeitung in Zusammenhang mit Durchführen sicherer Operationen an verschlüsselten Daten gemäß einem Aspekt der vorliegenden Erfindung;
    • 2 weitere Einzelheiten eines Beispiels für Verarbeitung in Zusammenhang mit Durchführen sicherer Operationen an verschlüsselten Daten gemäß einem Aspekt der vorliegenden Erfindung;
    • 3A bis 3B ein Beispiel für bei einem Client durchgeführte Verarbeitung zum Durchführen sicherer Operationen an verschlüsselten Daten gemäß einem Aspekt der vorliegenden Erfindung;
    • 3C ein Beispiel für bei einem Cloud-Anbieter durchgeführte Verarbeitung zum Durchführen sicherer Operationen an verschlüsselten Daten gemäß einem Aspekt der vorliegenden Erfindung;
    • 4 eine Ausführungsform einer Cloud-Computing-Umgebung;
    • 5 ein Beispiel für Abstraktionsmodellschichten; und
    • 6 ein Beispiel einer Datenverarbeitungsumgebung zum Integrieren und Verwenden eines oder mehrerer Aspekte der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung wird eine Funktion zum Ermöglichen sicherer Operationen (z.B. sicherer Cloud-Operationen) an verschlüsselten Daten bereitgestellt. In einem Beispiel umfasst die Funktion Bereitstellen eines weiteren Betriebsmodus, vorliegend bezeichnet als zweiter Betriebsmodus oder Stealth-Modus, in einem vertrauenswürdigen Prozessor in der Cloud und Verwenden des vertrauenswürdigen Prozessors in dem weiteren Betriebsmodus, um sichere Cloud-Operationen an verschlüsselten Daten durchzuführen.
  • Ein Beispiel der Verwendung eines vertrauenswürdigen Prozessors zum Durchführen sicherer Operationen an verschlüsselten Daten wird unter Bezugnahme auf 1A bis 1F beschrieben. Unter Bezugnahme auf zunächst die 1A ist ein Prozessor 100, vorliegend bezeichnet als Prozessor X, über ein entfernt angeordnetes Netzwerk 102 (z.B. das Internet oder ein anderes Netzwerk) mit einem Client 104 verbunden, der z.B. auf einem weiteren Prozessor ausgeführt wird. In diesem Beispiel ist der Prozessor 100 ein vertrauenswürdiger Prozessor in einer Cloud-Computing-Umgebung 106 und enthält mindestens einen Code-Cache 110 und mindestens einen Daten-Cache 112. In diesem konkreten Beispiel enthält der Prozessor 100 einen Daten-Cache 112a für Eingabedaten und einen Daten-Cache 112b für Ergebnisdaten, wobei jedoch auch andere Umsetzungen möglich sind. Zudem ist der Prozessor 100, beispielsweise über eine Verbindung 114, mit einem Speicher 116 verbunden, der kundenverschlüsselte Daten in der Cloud-Computing-Umgebung enthält.
  • In einem Beispiel enthält der Code-Cache 110 beispielsweise durch den Prozessor auszuführenden Code, darunter, ohne jedoch hierauf eingeschränkt zu sein, Code-Segmente, Anweisungen und/oder Programme. Gemäß einem Aspekt der vorliegenden Erfindung wird beispielsweise ein Stealth-Modus-Programm 120 zur Ausführung durch den Prozessor 100 in den Code-Cache 110 des Prozessors des Cloud-Anbieters geladen. Die Verarbeitung von Code innerhalb des Code-Caches, darunter auch des Stealth-Modus-Programms 120, wird unter Bezugnahme auf 1B bis 1F beschrieben.
  • Gemäß 1B wird in einem Beispiel durch den Prozessor 100 eine Eingabe/Ausgabe- (E/A-) Leseoperation 130 durchgeführt, um kundenverschlüsselte Daten 132 aus dem Cloud-Speicher 116 in den Eingabedaten-Cache 112a zu lesen. Als Nächstes wird gemäß 1C für den Prozessor 100 ein Stealth-Modus (auch als der weitere oder zweite Betriebsmodus bezeichnet) eingeleitet. Im Stealth-Modus sind Verbindungen zwischen dem Prozessor 100 und externen Komponenten außerhalb des Prozessors deaktiviert. Beispielsweise ist die Verbindung zwischen dem Prozessor 100 und dem Client 104 deaktiviert, ebenso die zwischen dem Prozessor 100 und dem Speicher 116 (dargestellt durch das X durch die Verbindung 102 und die Verbindung 114). In einem Beispiel werden zum Deaktivieren der Verbindungen die zu/von dem Prozessorchip verlaufenden physischen Drähte abgeschirmt („fenced“). Wenn eine Abschirmung hoch ist, werden alle abgeschirmten Signale („fenced signals“) an Erde (GND, ground) gelegt und somit für Datenübertragung unbrauchbar. Da einige externe Verbindungen Protokolle verwenden, die bei vollständiger Trennung die Synchronisierung verlieren, reicht es, die Datensignale abzuschirmen.
  • Wie in 1D gezeigt ist, werden im Stealth-Modus die verschlüsselten Eingabedaten im Daten-Cache 112a durch den Prozessor 100 entschlüsselt 142, und an den entschlüsselten Daten werden Operationen durchgeführt. Im Stealth-Modus werden die Daten entschlüsselt, jedoch gibt es außerhalb des Stealth-Modus keinen Zugriffspfad zu den entschlüsselten Daten. Danach werden gemäß 1E Ergebnisse der Operationen verschlüsselt 144, und verschlüsselte Ergebnisdaten 146 werden in den Ergebnis-Cache 112b geschrieben. Anschließend wird der Stealth-Modus beendet. Durch das Beenden des Stealth-Modus werden Verbindungen mit den externen Komponenten, beispielsweise dem Speicher 116 und dem Client 104, wiederhergestellt, wie durch die Verbindungen 102 und 114 in 1F gezeigt ist. Ferner werden die verschlüsselten Ergebnisdaten über beispielsweise das entfernt angeordnete Netzwerk 102 an den Client 104 gesendet 150.
  • Weitere Einzelheiten zur Durchführung sicherer Cloud-Operationen im Stealth-Modus werden unter Bezugnahme auf 2 und 3A bis 3C beschrieben. 2 zeigt eine Ausführungsform einer Cloud-Umgebung, die den Stealth-Modus verwendet, um an verschlüsselten Daten sichere Cloud-Operationen durchzuführen; 3A bis 3B zeigen eine Ausführungsform einer Kundenverarbeitung in Zusammenhang mit dem Durchführen sicherer Cloud-Operationen; und 3C zeigt eine Ausführungsform einer Cloud-Verarbeitung in Zusammenhang mit dem Durchführen sicherer Cloud-Operationen. In der nachfolgenden Beschreibung wird auf 2 und 3A bis 3C Bezug genommen. Daher beziehen sich mit „2“ beginnende Bezugszeichen auf 2, während sich mit „3“ beginnende Bezugszeichen auf 3A, 3B oder 3C beziehen.
  • Unter Bezugnahme auf zunächst 2 ist eine Cloud-Umgebung 200 mit einem Client 202 verbunden und umfasst beispielsweise eine Mehrzahl von Einheiten, wie beispielsweise eine vertrauenswürdige Drittpartei (TTP, trusted third party) 204, einen Cloud-Anbieter 206, eine Cloud-Instanz 208 und Speicher 210, der verschlüsselte Daten speichert.
  • Die Cloud-Instanz 208 enthält beispielsweise einen Prozessorkern 250, eine Mehrzahl von Caches (z.B. L2-Cache 252, L3-Cache 254) und einen Arbeitsspeicher 256 (z.B. einen Direktzugriffsspeicher (RAM)). Der Arbeitsspeicher 256 kann verschlüsselte Daten 210 enthalten oder auf diese zugreifen. Der L3-Cache 254 ist in einem Beispiel mit einem PCIe-Anschluss 260 verbunden, und der Arbeitsspeicher 256 ist in einem Beispiel mit dem Speicher 262 verbunden. In einem Beispiel können der Kern 250, der L2-Cache 252, der L3-Cache 254 und der Arbeitsspeicher 256 für Operationen im Stealth-Modus insoweit abgeschirmt werden, als Verbindungen mit externen Komponenten, beispielsweise dem Speicher 262, Client-Prozessoren oder anderen Komponenten, die als außerhalb des Kerns liegend betrachtet werden, deaktiviert werden. Beispielsweise wird im Stealth-Modus die Verbindung vom L3-Cache 254 zur PCle deaktiviert, ebenso die Verbindung vom RAM 256 zum Speicher 262.
  • In einer Ausführungsform werden zum Bereitstellen sicherer Operationen an verschlüsselten Daten in einer Cloud-Umgebung mittels des Stealth-Modus bestimmte Aufgaben ausgeführt, wie unter Bezugnahme auf 3A bis 3C beschrieben wird. Unter Bezugnahme auf zunächst 2 und 3A reserviert 270 in einer Ausführungsform der Kunde über z.B. einen Client-Prozessor (z.B. den Client 202) eine Cloud-Instanz (z.B. die Cloud-Instanz 208) bei einem Cloud-Provider (z.B. dem Cloud-Provider 206), SCHRITT 300. Auf Grundlage des Reservierens der Cloud-Instanz wird dem Kunden vom Cloud-Provider eine Kern-ID (z.B. COREID 220) bereitgestellt 272, bei der es sich um eine vom Chiphersteller validierte eindeutige Kennung eines Cloud-Kerns (z.B. des Kerns 250) handelt. Der Kunde empfängt die COREID, SCHRITT 302, und erbittet 274 von einer vertrauenswürdigen Drittpartei (z.B. der vertrauenswürdigen Drittpartei 204) einen Codeschlüssel (z.B. CODEKEY 222) der COREID 220, SCHRITT 304. Bei dem Codeschlüssel handelt es sich um einen durch den Chiphersteller bereitgestellten und signierten öffentlichen Schlüssel des Cloud-Kerns. Auf Grundlage der Anfrage wird der CODEKEY dem Kunden von der vertrauenswürdigen Drittpartei bereitgestellt 276, SCHRITT 306, und in den Arbeitsspeicher 256 und/oder die Caches 252, 254 gelesen.
  • Zudem wird auf dem Client eine Codesequenz vorbereitet, SCHRITT 308. Bei der Codesequenz handelt es sich beispielsweise um eine Betriebssysteminstanz, die Datenschlüssel (auch als DATAKEYS bezeichnet) für Cloud-seitigen Datenzugriff enthält. Die Codesequenz wird mittels des von der vertrauenswürdigen Drittpartei empfangenen Codeschlüssels verschlüsselt, SCHRITT 310. Das heißt, die Codesequenz wird für den beim Cloud-Anbieter reservierten spezifischen Prozessor verschlüsselt. In einem Beispiel wird die Code-Sequenz mittels eines Verschlüsselungs-Tools verschlüsselt, das vom Hersteller des Prozessors bereitgestellt wird, um den verschlüsselten Code auszuführen. Das Tool kann beispielsweise als Open Source vertrieben werden. Der verschlüsselte Code wird an die Cloud-Instanz gesendet, SCHRITT 312. In einer Ausführungsform enthält der verschlüsselte Code einen oder mehrere Schlüssel (z.B. DATAKEYS), um private Kundendaten in der Cloud zu entschlüsseln.
  • Beispielsweise verwendet das Verschlüsselungs-Tool für die gesamte Code-Sequenz asymmetrische Verschlüsselung, oder leistungsbedingt eine hybride asymmetrische/symmetrische Verschlüsselung. Im ersten Fall wird die gesamte Code-Sequenz mittels des CODEKEY verschlüsselt. Im zweiten Fall wird beispielsweise nur ein Zufallsschlüssel mittels des CODEKEY verschlüsselt, und dieser Zufallsschlüssel wird zur symmetrischen Verschlüsselung der Code-Sequenz verwendet. Es sind auch andere Varianten möglich.
  • Gemäß 3B werden ferner Client-seitige Daten mit einem Datenschlüssel (z.B. DATAKEY) verschlüsselt, SCHRITT 320. Bei dem Datenschlüssel handelt es sich beispielsweise um einen durch den Client bereitgestellten symmetrischen Schlüssel für Eingabedatenverschlüsselung. Die verschlüsselten Daten werden z.B. über den Client-Prozessor an die Cloud-Instanz gesendet, SCHRITT 322.
  • An der Cloud-Instanz schaltet der Kern in den sicheren Stealth-Modus, deaktiviert die externen Schnittstellen (z.B. externe E/A-Schnittstellen) und entschlüsselt den Code. Der entschlüsselte Code wird ausgeführt, wobei Ergebnisse produziert werden, die verschlüsselt werden. Der Kern schaltet wieder in den Normalmodus (auch bezeichnet als erster Betriebsmodus) und zerstört jegliche unverschlüsselten Daten. Die verschlüsselten Ergebnisse werden an den Nutzer zurückgesendet. Dies wird unter Bezugnahme auf 3C weiter beschrieben.
  • Gemäß 3C werden in einer Ausführungsform die verschlüsselten Cloud-seitigen Daten (z.B. die verschlüsselten Client-Daten, einschließlich der Cloud-seitig befindlichen Daten) in den Arbeitsspeicher gelesen (z.B. den Arbeitsspeicher 256),
    SCHRITT 330. Ferner erfolgt der Übergang in den Stealth-Modus, in dem PCI und weitere E/A abgeschirmt werden, SCHRITT 332. Beispielsweise werden die Verbindungen zwischen dem L3-Cache 254 und der PCle 260 und zwischen dem RAM 256 und dem Speicher 262 deaktiviert. Weitere derartige Verbindungen, soweit vorhanden, werden ebenfalls deaktiviert.
  • Im Stealth-Modus wird der verschlüsselte Code mittels z.B. eines für den Prozessor eindeutigen privaten Schlüssels entschlüsselt, und der entschlüsselte Code wird in einem oder mehreren Prozessor-Caches (z.B. dem L2-Cache 252, dem L3-Cache 254 und/oder weiteren Caches) abgelegt, SCHRITT 334. Der entschlüsselte Code sieht die Datenschlüssel, die im Code enthalten waren und zum Entschlüsseln der Daten vorgesehen sind, SCHRITT 346. Gegebenenfalls vorhandene Daten werden aus dem Arbeitsspeicher 256 bezogen und mittels eines oder mehrerer der Datenschlüssel entschlüsselt. Ferner werden mittels des entschlüsselten Codes eine oder mehrere Berechnungen an den entschlüsselten Daten durchgeführt, was Ergebnisse liefert, SCHRITT 348. Die Ergebnisse werden mittels eines Ergebnisschlüssels (z.B. RESULTKEY) verschlüsselt, bei dem es sich um einen durch den Client bereitgestellten symmetrischen Schlüssel für Ergebnisdatenverschlüsselung handelt, und die verschlüsselten Ergebnisse werden z.B. im Arbeitsspeicher (z.B. dem RAM 256) abgelegt, SCHRITT 350.
  • Nach dem Ablegen der verschlüsselten Ergebnisse im Arbeitsspeicher werden die On-Chip-Caches genullt und der Stealth-Modus verlassen, SCHRITT 360. Die verschlüsselten Ergebnisse werden an den Kunden (auch bezeichnet als Nutzer) zurückgesendet, SCHRITT 362. Der Nutzer kann die Ergebnisse mittels des Datenschlüssels entschlüsseln, SCHRITT 364. Es sind auch andere Umsetzungen möglich.
  • Wie vorliegend beschrieben wird, wird eine Funktion zum Ermöglichen sicherer Operationen (z.B. sicherer Cloud-Operationen) an verschlüsselten Daten bereitgestellt. In einem Beispiel kann ein Prozessor, der in einem ersten Betriebsmodus arbeitet, in dem er unverschlüsselte bzw. Klartextanweisungen ausführen kann, in einen zweiten Betriebsmodus geschaltet werden, in dem Datenaustausch zwischen dem Prozessor und externen Komponenten deaktiviert ist. Im zweiten Betriebsmodus kann der Prozessor verschlüsselten Code und/oder verschlüsselte Daten entschlüsseln und den entschlüsselten Code ausführen. In einem Beispiel werden an den entschlüsselten Daten mittels des entschlüsselten Codes eine oder mehrere Operationen durchgeführt, um ein Ergebnis zu liefern. Das Ergebnis wird verschlüsselt und an den Nutzer gesendet, nachdem der Prozessor vom zweiten Betriebsmodus zurück in den ersten Betriebsmodus geschaltet wurde. Diese Funktion ermöglicht die Durchführung sicherer Operationen, indem beispielsweise ein Cloud-Dienstanbieter z. B. einen entsperrten Anspruchsschlüssel nicht duplizieren darf, so dass der Cloud-Dienstanbieter in der Cloud gespeicherte Kundendaten entschlüsseln kann. Die Ausführung mit dem Prozessor wird gegenüber der restlichen Umgebung abgeschirmt, um böswilligen Datendiebstahl zu vermeiden. Ein oder mehrere Aspekte der Erfindung vermeiden weitere Angriffsvektoren, die Schaden verursachen können.
  • Ein oder mehrere Aspekte ermöglichen es einem Kunden, verschlüsselte private Daten an einem entfernten Ort bei einem Cloud-Anbieter zu speichern und mittels dem Cloud-Anbieter gehörender Dienste mit den verschlüsselten privaten Daten zu arbeiten, wobei verschlüsselte Ergebnisse zur Rückübertragung an den Kunden erzeugt werden. Der Cloud-Anbieter kann die entschlüsselten privaten Daten nicht einsehen, selbst wenn der Cloud-Anbieter alle Berechtigungen besitzt. Vertrauen gegenüber dem Cloud-Anbieter, Betreibern, dem Betriebssystem oder einer System-Software ist somit nicht erforderlich. Allerdings muss dem Hersteller des Prozessors vertraut werden.
  • Wie vorliegend beschrieben wird, wird in einem oder mehreren Aspekten ein öffentlicher Schlüssel eines Prozessors eines Cloud-Anbieters erhalten. Code wird für diesen spezifischen Prozessor verschlüsselt, so dass nur dieser Prozessor den Code entschlüsseln kann. Der Prozessor besitzt einen zweiten Betriebsmodus, vorliegend bezeichnet als Stealth-Modus, in dem er während dieses Modus nicht mit externen Einheiten kommunizieren kann. Beispielsweise ist im zweiten Betriebsmodus der PCIe-Bus deaktiviert. Wenn er sich im zweiten Betriebsmodus befindet, entschlüsselt der Prozessor Code z.B. im Nur-Ausführungs-Modus. Schlüssel zum Entschlüsseln von Cloud-Daten können Teil des verschlüsselten Codes sein. Beispielsweise werden Code-Cache-Zeilen entschlüsselt, wenn sie in einen On-Chip-Cache geladen werden, und Daten werden z.B. nur im On-Chip-Cache entschlüsselt.
  • Der in den Stealth-Modus geschaltete Prozessor enthält einen eindeutigen Schlüssel, der bei der Herstellung aufgeschmolzen wurde. In einer Ausführungsform unterhält der Prozessorhersteller eine Datenbank dieser Schlüssel.
  • In einem Aspekt ist nur der Dateneigentümer mit einem privaten Datenschlüssel in der Lage, neue Software zu kompilieren, die in der Lage ist, mit den verschlüsselten Daten in der Cloud zu arbeiten. Der Schlüssel zum Entschlüsseln von Daten ist nur während der Ausführung des Stealth-Modus innerhalb des Prozessorkerns sichtbar. Es ist möglich, die Datenschlüssel außerhalb der Reichweite des Cloud-Rechenzentrums zu halten und dennoch mit den entschlüsselten Daten zu arbeiten.
  • In einer Ausführungsform werden die Datenschlüssel und die Ergebnisschlüssel vom Dateneigentümer privat gehalten, dennoch ist der Cloud-Anbieter in der Lage, mittels dieser Datenschlüssel mit den Daten zu arbeiten. Dem Hardware-Verkäufer wird vertraut, Vertrauen in den Cloud-Dienstanbieter ist jedoch nicht erforderlich. In einem Aspekt ist die Software-Komponente für den Stealth-Modus auf einen spezifischen Chip zugeschnitten. Beispielsweise sind die Software-Komponenten für den Stealth-Modus auf Prozessoren spezialisiert, die den Stealth-Modus unterstützen. Durch Verschlüsseln mit einem spezifischen CODEKEY eines spezifischen Prozessorkerns wird der Code z.B. auf genau diesen Kern ausgerichtet.
  • In einem weiteren Aspekt können ein oder mehrere Aspekte in einem Multiprozessorsystem (z.B. symmetrisches Multiprozessorsystem (SMP)) verwendet werden, in dem der Prozessor für eine Multiprozessor-fähige Anwendung Nur-Ausführungs-Modus-Seiten auf andere Kerne auf demselben Multiprozessorsystem duplizieren kann. Jeder Kern besitzt öffentliche Schlüssel der anderen SMP-Kerne und somit die Fähigkeit, den öffentlichen Zielschlüssel erneut zu verschlüsseln.
  • Es sind auch andere Ausführungsformen, Varianten und Umsetzungen möglich. Bei der vorstehenden Beschreibung handelt es sich um nur ein Beispiel für Ausführungsformen der Erfindung, und es sind Varianten, Abwandlungen und/oder Ersetzungen möglich.
  • Ein Beispiel eines Verwendungsszenarios, in dem ein oder mehrere Aspekte der vorliegenden Erfindung eingesetzt werden, umfasst beispielsweise Folgendes: Ein Kunde lädt Eingabedaten in verschlüsseltem Format auf einen Cloud-Dienstanbieter herunter. Der Cloud-Dienstanbieter speichert die Daten, kann sie jedoch nicht entschlüsseln. Der Kunde kauft vertrauenswürdige Datenverarbeitungsressourcen beim Cloud-Dienstanbieter. Der Cloud-Dienstanbieter reserviert einen Zeitschlitz bei einem bestimmten Server mit einer bestimmten CPU (Kern) von einem bestimmten Hersteller und informiert den Kunden über die ID bzw. den öffentlichen Schlüssel des Kerns, auf dem das vertrauenswürdige Programm ausgeführt werden soll. Der Kunde verifiziert, dass der bestimmte Hersteller eine CPU mit der bestimmten ID bzw. dem bestimmten öffentlichen Schlüssel hergestellt hat. Der Kunde verwendet ein vom CPU-Hersteller bereitgestelltes Verschlüsselungs-Tool, um das sichere Code-Modul zu verschlüsseln, welches Schlüssel enthält, die sich zum Entschlüsseln der privaten Daten eignen. Das Verschlüsselungs-Tool kann als Open Source vertrieben werden. Der Kunde sendet das teilweise verschlüsselte Programm an den Cloud-Dienstanbieter. Der Cloud-Dienstanbieter übergibt das sichere Programm an die bestimmte CPU, die einen entsprechenden privaten Schlüssel besitzt. Der private Schlüssel verlässt nie die CPU-Hardware, z.B. befinden sich geheime Schlüssel des Kunden nicht außerhalb des Ln-Caches oder des Arbeitsspeichers der CPU. Nach der Programmausführung verfügt die CPU über einen Zeiger auf das verschlüsselte Ergebnis auf, welches an einen für den Kunden zugänglichen Ort übertragen werden kann.
  • Um erweiterte Analysefähigkeiten durch Replay-Angriffe des Cloud-Dienstanbieters zu verhindern, können in weiteren Aspekten Zeitstempel zur Eliminierung von Replay-Angriffen verwendet werden. Ferner wird, wenn festgestellt wird, dass ein Kern kompromittiert wurde, dessen Schlüssel von der vertrauenswürdigen Drittpartei entfernt, so dass der Kern keine weiteren Aufgaben zugewiesen bekommen kann.
  • Ein weiteres Verwendungsszenario umfasst beispielsweise Folgendes:
    • Daten in Cloud laden:
    • - Daten mittels KEY3 (eines Cloud-Client-Datenschlüssels) verschlüsseln
    • - die verschlüsselten Daten in der Cloud speichern.
    • Bericht über die Daten in der Cloud ausführen: Verschlüsseln von Programmfragment wie dem folgenden mit KEY2 (dem öffentlichen Schlüssel zugeordnet - Prozessor besitzt öffentliches Schlüsselpaar <KEY1, KEY2>, KEY1 ist privat - das während der Herstellung in den Prozessor integriert und vom Hersteller nicht kopiert wurde; bleibt innerhalb des Prozessorkerns, nur verwendbar zur Entschlüsselung von Nur-Ausführungs-Blöcken und potenziell zur Durchführung einer Signaturentschlüsselung von Nur-Ausführungs-Blöcken und potenziell zur Durchführung einer Signatur; KEY2 ist der zugeordnete öffentliche Schlüssel):
    • - Block aus dem Speicher holen (z.B. Betriebssystem- (OS-) API-Aufruf, wobei der OS-Dienst nicht vertrauenswürdig ist/vom Cloud-Dienstanbieter bereitgestellt und aktualisiert wird)
    • - in Stealth-Modus schalten. Sichere Code-Sequenz entschlüsseln. In diesem Beispiel handelt es sich bei dem Programmcode um Nur-Ausführungs-Code.
    • - Daten z.B. im L2- und/oder L3-Cache mittels Hardware-Anweisung mittels KEY3 entschlüsseln, wobei es sich um einen Teil des verschlüsselten/Nur-Ausführungs-Programms handelt
    • - potenziell zusätzliche String-Konstanten aus Cloud-Dienst (Netzwerk, Speicher) entschlüsseln
    • - Bericht ausführen
    • - Ergebnisse mittels KEY3 verschlüsseln
    • - durch Prozessor mittels KEY1 (während der Herstellung in den Prozessor integrierter privater Schlüssel) signieren
    • - Stealth-Modus verlassen. Dieser Schritt zerstört z.B. alle unverschlüsselten Daten
    • - nicht vertrauenswürdigen OS-API-Aufruf verwenden, um verschlüsselte Ergebnisdaten an den Cloud-Client zurückzusenden (dieser nicht vertrauenswürdige Dienst transportiert jedoch nur verschlüsselte Daten)
    • - Der Cloud-Dienstanbieter/der verwendete Hypervisor/das verwendete OS sieht keine unverschlüsselten Daten
    • - In einem Beispiel kann KEY3 durch keine Prozessoroperation gelesen werden und verlässt z.B. die L2-/L3-Caches nicht.
  • Im Gegensatz zu Hardware-Appliances in z.B. einer VPN-Cloud sind die Schlüssel nicht Teil einer Cloud-Infrastruktur, sondern werden vor Ort aufbewahrt. Dies ermöglicht Backup/Notfallwiederherstellung von Schlüsseln und erleichtert das Zerstören von Schlüsseln vor Ort, wenn Daten nicht mehr benötigt werden.
  • Es ist kein Vertrauen in eine installierte Cloud-Software-Basis erforderlich, und Aspekte sind flexibler und schneller als z.B. homomorphe Verschlüsselung.
  • In noch einem weiteren Aspekt wird eine Arbeitsspeicher-Vollverschlüsselung verwendet, die z.B. KEY3 verwendet, der in einem Nur-Schreib-Spezialregister des Prozessors gespeichert werden soll (mit mehreren Registereinträgen für gleichzeitigen Kontext, wenn mehrere geschützte virtuelle Instanzen gleichzeitig ausgeführt werden sollen). Vor dem Eintritt in den Stealth-Modus stellt die Anwendung sicher, dass jede Bibliothek in dem verschlüsselten Arbeitsspeicher verfügbar ist. Ferner ruft die Anwendung bis zum Eintritt in den Stealth-Modus keine API (Iibc, Betriebssystem, Datenbank, ...) mehr auf. Aus dem Cloud-Speicher geladene Daten werden mittels KEY3 und einer speziellen Prozessoranweisung entschlüsselt. Nach dem Eintritt in den Stealth-Modus (mit Spezialregisteranweisung) wird die Prozessor-E/A (PCI-Express, North Bridge, ...) abgeschaltet. Es ist nun möglich, innerhalb des verschlüsselten Arbeitsspeichers Berichterstellung mittels nicht vertrauenswürdiger APIs durchzuführen. Das Ergebnis soll auf spezielle Seiten gelegt werden, die dann mittels des Kryptoschlüssels KEY3 wieder zurückgesendet werden. Wenn der benutzte Dienst das Schreiben eines Protokolls oder einer Ablaufverfolgung erfordert, wird er auf eine verschlüsselte RAM-Platte geschrieben (kann später einfach verworfen werden), bevor der Stealth-Modus verlassen wird. Der KEY3 wird genullt, so dass die Anwendung die Fähigkeit verliert, in der Cloud gespeicherte Daten zu entschlüsseln oder die erzeugten Ergebnisaufzeichnungen zu entschlüsseln. In einer Ausführungsform kann sie nun nur noch das verschlüsselte Ergebnis zurücksenden und sich beenden.
  • In einem weiteren Aspekt tritt ein komplettes SMP gleichzeitig in den Stealth-Modus ein. Wenn mehrere Workloads gleichzeitig ausgeführt werden, verringert dies die mögliche Nutzung von Cloud-Servern, eliminiert jedoch nicht die Möglichkeit der virtuellen Ausführung. Wahlweise wäre durch Nachverfolgen der Kern-ID jedes Arbeitsspeicher- und E/A-Transfers eine Abschirmung pro Kern und nicht pro Chip möglich. Die Abschirmungslogik muss wissen, wann welche Kern-IDs abgeschirmt werden müssen.
  • Ein oder mehrere Aspekte der vorliegenden Erfindung sind untrennbar mit Computertechnologie verbunden und erleichtern Verarbeitung in einem Computer und verbessern dessen Sicherheit und Leistung. In einem oder mehreren Aspekten werden sichere Operationen (z.B. sichere Cloud-Operationen) an verschlüsselten Daten in einer Cloud-Umgebung effizient durchgeführt, wodurch die Verwendung verschlüsselter Daten in Cloud-Umgebungen ermöglicht wird.
  • In einem oder mehreren Aspekten kann ein Prozessor in einem ersten Betriebsmodus Klartextanweisungen ausführen. Der Prozessor bezieht im ersten Betriebsmodus verschlüsselten Code und schaltet vom ersten Betriebsmodus in einen zweiten Betriebsmodus um, wobei sich der zweite Betriebsmodus vom ersten Betriebsmodus unterscheidet. Wenn sich der Prozessor im zweiten Betriebsmodus befindet, werden die verschlüsselten Daten entschlüsselt, um entschlüsselten Code zu erhalten, und der entschlüsselte Code wird ausgeführt.
  • Beispielsweise umfasst das Umschalten des Prozessors vom ersten Betriebsmodus in den zweiten Betriebsmodus Deaktivieren einer oder mehrerer Datenübertragungsverbindungen des Prozessors mit externen Komponenten des Prozessors, um den Prozessor in den zweiten Betriebsmodus zu versetzen.
  • In einem Aspekt umfasst das Ausführen des entschlüsselten Codes Durchführen einer oder mehrerer Operationen mittels des entschlüsselten Codes, um ein Ergebnis zu liefern. Das Ergebnis wird verschlüsselt, um ein verschlüsseltes Ergebnis bereitzustellen, und das verschlüsselte Ergebnis wird einem Client bereitgestellt, wenn der Prozessor vom zweiten Betriebsmodus in den ersten Betriebsmodus umschaltet. Das Umschalten vom zweiten Betriebsmodus in den ersten Betriebsmodus ermöglicht Datenaustausch des Prozessors mit externen Komponenten des Prozessors. Das Umschalten umfasst beispielsweise Löschen unverschlüsselter Daten aus einem oder mehreren Caches des Prozessors.
  • In einem weiteren Aspekt werden Eingabedaten entschlüsselt, um entschlüsselte Daten bereitzustellen, und die eine oder die mehreren Operationen werden an den entschlüsselten Daten durchgeführt, um das Ergebnis zu liefern. Beispielsweise umfasst das Entschlüsseln der Eingabedaten Verwenden mindestens eines Datenschlüssels, wobei der mindestens eine Datenschlüssel durch den entschlüsselten Code bereitgestellt wird.
  • Beispielsweise umfasst das Entschlüsseln des verschlüsselten Codes Entschlüsseln des verschlüsselten Codes mittels eines für den Prozessor eindeutigen privaten Schlüssels. Ferner wird der verschlüsselte Code beispielsweise mittels eines einer eindeutigen Kennung des Prozessors zugehörigen öffentlichen Schlüssels verschlüsselt.
  • In einem Aspekt wird ferner der Prozessor durch einen Cloud-Dienstanbieter bereitgestellt. In einem Beispiel wird der Prozessor vom Cloud-Dienstanbieter auf Grundlage einer Anfrage nach dem Prozessor bereitgestellt. Es werden eine eindeutige Kennung des Prozessors und ein der eindeutigen Kennung des Prozessors zugehöriger öffentlicher Schlüssel bereitgestellt, und der öffentliche Schlüssel wird verwendet, um Code zu verschlüsseln, um den verschlüsselten Code bereitzustellen. Der verschlüsselte Code wird an den Prozessor gesendet.
  • Es sind auch andere Varianten und Ausführungsformen möglich.
  • Wie vorliegend beschrieben wird, können ein oder mehrere Aspekte Cloud-Computing betreffen.
  • Es sei klargestellt, dass das Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, auch wenn diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing enthält. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung implementiert werden.
  • Cloud-Computing ist ein Dienstbereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften enthalten, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle.
  • Bei den Eigenschaften handelt es sich um die Folgenden:
  • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter des Dienstes erforderlich ist.
  • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
  • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
  • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
  • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Inanspruchnahme von Ressourcen kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Bei den Dienstmodellen handelt es sich um die Folgenden:
  • Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind von verschiedenen Client-Einheiten über eine Thin-Client-Schnittstelle wie einen Webbrowser (z.B. webbasierte eMail) zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
  • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
  • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, das Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Bei den Einsatzmodellen handelt es sich um die Folgenden:
  • Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
  • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Mission, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann in den eigenen Räumen oder fremden Räumen stehen.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und sie gehört einer Cloud-Dienste verkaufenden Organisation.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Herzen von Cloud-Computing liegt eine Infrastruktur, die ein Netzwerk aus zusammengeschalteten Knoten aufweist.
  • Unter Bezugnahme auf 4 ist eine veranschaulichende Cloud-Computing-Umgebung 50 abgebildet. Wie gezeigt ist, weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 52 auf, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie der elektronische Assistent (PDA, personal digital assistant) oder das Mobiltelefon 54A, der Desktop-Computer 54B, der Laptop-Computer 54C und/oder das Automobil-Computer-System 54N Daten austauschen können. Die Knoten 52 können miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie private, Benutzergemeinschafts-, öffentliche oder hybride Clouds gruppiert werden (nicht gezeigt), wie vorstehend beschrieben wurde, oder in eine Kombination daraus. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sei darauf hingewiesen, dass die Arten von in 4 gezeigten Datenverarbeitungseinheiten 54A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 52 und die Cloud-Computing-Umgebung 50 über eine beliebige Art Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 5 wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (4) bereitgestellt werden. Es sollte vorab klar sein, dass die in 5 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie abgebildet ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören: Mainframe-Computer 61; auf der RISC- (Reduced Instruction Set Computer) Architektur beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke sowie Netzwerkkomponenten 66. In einigen Ausführungsformen umfassen Software-Komponenten eine Netzwerk-Anwendungsserver-Software 67 und eine Datenbank-Software 68.
  • Die Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71, virtueller Speicher 72, virtuelle Netzwerke 73, darunter virtuelle private Netzwerke, virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann die Verwaltungsschicht 80 die nachstehend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 81 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Messen und eine Preisfindung 82 stellen die Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen aufweisen. Die Sicherheit stellt die Identitätsüberprüfung für Cloud-Kunden und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs 84 stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstziele erreicht werden. Ein Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) 85 stellt die Anordnung vorab und die Beschaffung von Cloud-Computing-Ressourcen, für die eine zukünftige Anforderung vorausgesehen wird, gemäß einem SLA bereit.
  • Eine Workload-Schicht 90 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Workloads und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 93; Datenanalytikverarbeitung 94; Transaktionsverarbeitung 95; und Verarbeitung verschlüsselter Daten 96.
  • Zusätzlich zum Vorstehenden kann in einem Beispiel der Client 104 auf vielen Arten von Prozessoren ausgeführt werden. Ferner können in einem Beispiel einer oder mehrere der vorliegend beschriebenen Prozessoren Teil einer Datenverarbeitungsumgebung sein, für die ein Beispiel unter Bezugnahme auf 6 beschrieben wird. Wie in 6 gezeigt, umfasst die Datenverarbeitungsumgebung 10 beispielsweise ein Computersystem 12, das z.B. in Form einer Universal-Datenverarbeitungseinheit gezeigt ist. Ohne hierauf eingeschränkt zu sein, kann das Computersystem 12 einen oder mehrere Prozessoren oder Verarbeitungseinheiten 14 (z.B. zentrale Verarbeitungseinheiten (CPUs)), die z.B. einen oder mehrere Clients ausführen können, einen Arbeitsspeicher 16 (z.B. auch als Systemspeicher, Hauptspeicher, Zentralspeicher oder Speicher bekannt) sowie eine oder mehrere Eingabe/Ausgabe- (E/A-) Schnittstellen 18 umfassen, die über einen oder mehrere Busse und/oder andere Verbindungen 20 miteinander verbunden sind.
  • Der Bus 20 stellt eine oder mehrere von verschiedenen Arten von Bus-Strukturen dar, darunter ein Speicherbus oder eine Speichersteuereinheit, ein Peripherie-Bus, ein AGP-Bus und ein Prozessor- oder lokaler Bus, der jedwede einer Vielfalt von Busarchitekturen verwendet. Als nicht einschränkende Beispiele gehören zu solchen Architekturen Industry Standard Architecture (ISA), Micro Channel Architecture, (MCA), Enhanced ISA (EISA), Video Electronics Standards Association (VESA) Localbus und Peripheral Component Interconnect.
  • Der Arbeitsspeicher 16 kann beispielsweise einen Cache 22 enthalten, beispielsweise einen gemeinsamen Cache, der mit lokalen Caches 23 der Prozessoren 14 verbunden sein kann. Ferner kann der Arbeitsspeicher 16 ein oder mehrere Programme oder Anwendungen 24, ein Betriebssystem 26 und eine oder mehrere durch einen Computer lesbare Programmanweisungen 28 enthalten. Die durch einen Computer lesbaren Programmanweisungen 28 können so konfiguriert sein, dass sie Funktionen von Ausführungsformen von Aspekten der Erfindung ausführen.
  • Das Computersystem 12 kann zudem über z.B. die E/A-Schnittstellen 18 mit einer oder mehreren externen Einheiten 30, einer oder mehreren Netzwerkschnittstellen 32 und/oder einer oder mehreren Datenspeichereinheiten 34 Daten austauschen. Zu beispielhaften externen Einheiten zählen ein Nutzer-Terminal, ein Bandlaufwerk, eine Zeigeeinheit, eine Anzeige usw. Durch die Netzwerkschnittstelle 32 kann das Computersystem 12 mit einem oder mehreren Netzwerken, beispielsweise einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet), Daten austauschen, wodurch Datenaustausch mit anderen Datenverarbeitungseinheiten oder -systemen bereitgestellt wird.
  • Die Datenspeichereinheit 34 kann ein oder mehrere Programme 36, eine oder mehrere durch einen Computer lesbare Programmanweisungen 38 und/oder Daten usw. speichern. Die durch einen Computer lesbaren Programmanweisungen können so konfiguriert sein, dass sie Funktionen von Ausführungsformen von Aspekten der Erfindung ausführen.
  • Das Computersystem 12 kann auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Speichermedien des Computersystems umfassen und/oder mit diesen verbunden sein. Beispielsweise kann es ein nicht auswechselbares, nichtflüchtiges magnetisches Medium (üblicherweise als „Festplatte“ bezeichnet), ein Magnetplattenlaufwerk zum Lesen von einer und Schreiben auf eine auswechselbare, nichtflüchtige Magnetplatte (z.B. eine „Floppy Disk“) und/oder ein optisches Plattenlaufwerk zum Lesen von einer oder Schreiben auf eine auswechselbare, nichtflüchtige optische Platte wie beispielsweise einen CD-ROM, DVD-ROM oder andere optische Medien umfassen oder mit diesen verbunden sein. Es sei angemerkt, dass andere Hardware- und/oder Software-Komponenten zusammen mit dem Computersystem 12 verwendet werden könnten. Zu Beispielen zählen, ohne auf diese beschränkt zu sein: Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
  • Das Computersystem 12 kann zusammen mit zahlreichen weiteren Universal- oder Spezial-Datenverarbeitungssystem-Umgebungen oder -Konfigurationen betriebsfähig sein. Zu Beispielen bekannter Datenverarbeitungssysteme, -umgebungen und/oderkonfigurationen, die sich für die Verwendung mit dem Computersystem 12 eignen können, zählen, ohne hierauf beschränkt zu sein, Personal-Computer- (PC-) Systeme, Servercomputersysteme, Thin Clients, Thick Clients, tragbare oder Laptop-Einheiten, Multiprozessorsysteme, Systeme aus Mikroprozessoren, Set-Top-Boxen, programmierbare Consumer-Elektronik, Netzwerk-PCs, Minicomputer-Systeme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, die jedwede der vorstehend genannten Systeme oder Einheiten umfassen, und dergleichen.
  • Bei Aspekten der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt jedes möglichen technisch detaillierten Integrationsgrads handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern mittels durch einen Computer lesbarer Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die im Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Zusätzlich zum Vorstehenden können ein oder mehrere Aspekte durch einen Dienstanbieter bereitgestellt, angeboten, eingesetzt, verwaltet, gewartet usw. werden, der Verwaltung von Kundenumgebungen anbietet. Beispielsweise kann der Dienstanbieter Computercode und/oder eine Computerinfrastruktur, der bzw. die einen oder mehrere Aspekte für einen oder mehrere Kunden durchführt, erzeugen, unterhalten, unterstützen usw. Der Dienstanbieter kann dafür beispielsweise gemäß einer Abonnement- und/oder Gebührenvereinbarung eine Bezahlung vom Kunden erhalten. Zusätzlich oder alternativ kann der Dienstanbieter Bezahlung aus dem Verkauf von Werbeinhalten an eine oder mehrere Drittparteien erhalten.
  • In einem Aspekt kann eine Anwendung zum Durchführen einer oder mehrerer Ausführungsformen eingesetzt werden. Beispielsweise umfasst der Einsatz einer Anwendung Bereitstellen von Computerinfrastruktur, die betriebsfähig ist, eine oder mehrere Ausführungsformen auszuführen.
  • Als weiterer Aspekt kann eine Datenverarbeitungsinfrastruktur eingesetzt werden, was Integrieren von durch einen Computer lesbarem Code in ein Datenverarbeitungssystem umfasst, wobei der Code in Kombination mit dem Datenverarbeitungssystem in der Lage ist, eine oder mehrere Ausführungsformen auszuführen.
  • Als weiterer Aspekt kann ein Prozess zum Integrieren von Datenverarbeitungsinfrastruktur bereitgestellt werden, der Integrieren von durch einen Computer lesbarem Code in ein Computersystem umfasst. Das Computersystem umfasst ein durch einen Computer lesbares Medium, wobei das Computermedium eine oder mehrere Ausführungsformen umfasst. Der Code ist in Kombination mit dem Computersystem in der Lage, eine oder mehrere Ausführungsformen auszuführen.
  • Auch wenn vorstehend verschiedene Ausführungsformen beschrieben sind, handelt es sich hierbei lediglich um Beispiele. Beispielsweise können andere Datenverarbeitungsumgebungen verwendet werden, um eine oder mehrere Ausführungsformen zu integrieren und zu verwenden. Ferner können viele Arten von Verschlüsselung und Entschlüsselung verwendet werden. Es sind viele Varianten möglich.
  • Ferner können andere Arten von Datenverarbeitungsumgebungen profitieren und verwendet werden. Beispielsweise ist ein zum Speichern und/oder Ausführen von Programmcode geeignetes Datenverarbeitungssystem verwendbar, das mindestens zwei Prozessoren enthält, die durch einen Systembus direkt oder indirekt mit Speicherelementen verbunden sind. Zu den Speicherelementen zählen beispielsweise während der eigentlichen Ausführung des Programmcodes eingesetzter lokaler Speicher, Massenspeicher sowie Cache-Speicher, die vorübergehende Speicherung zumindest eines Teils des Programmcodes bereitstellen, um die Anzahl nötiger Abrufe von Code aus dem Massenspeicher während der Ausführung zu verringern.
  • Eingabe/Ausgabe- bzw. E/A-Einheiten (darunter, ohne jedoch hierauf eingeschränkt zu sein, Tastaturen, Anzeigen, Zeigeeinheiten, DASD, Band, CDs, DVDs, Speichersticks und andere Speichermedien usw.) können entweder direkt oder durch dazwischenliegende E/A-Steuerungen mit dem System verbunden sein. Mit dem System können auch Netzwerkadapter verbunden sein, um eine Verbindung des Datenverarbeitungssystems mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten durch dazwischenliegende private oder öffentliche Netzwerke zu ermöglichen. Modems, Kabelmodems und Ethernetkarten sind nur einige der erhältlichen Arten von Netzwerkadaptern.
  • Die vorliegend verwendete Terminologie dient lediglich dem Zweck der Beschreibung bestimmter Ausführungsformen und soll nicht einschränkend sein. Die Singularformen „ein/eine“ und „der/die/das“ wie vorliegend verwendet sollen ebenso die Pluralformen einschließen, sofern nicht durch den Kontext offensichtlich anders angegeben. Ferner ist zu beachten, dass die Ausdrücke „weist auf“ und/oder „aufweisend“, soweit in dieser Spezifikation verwendet, das Vorliegen genannter Merkmale, Zahlen, Schritte, Operationen, Elemente und/oder Komponenten angibt, jedoch nicht das Vorliegen oder Hinzufügen eines oder mehrerer weiterer Merkmale, Zahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon ausschließt.
  • Die entsprechenden Strukturen, Materialien, Handlungen und Äquivalente aller Mittel oder Schritt-plus-Funktion-Elemente in den nachstehenden Ansprüchen sollen, soweit vorhanden, jegliche Strukturen, Materialien oder Handlungen zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen wie konkret beansprucht umfassen. Die Beschreibung einer oder mehrerer Ausführungsformen wurde zu Zwecken der Veranschaulichung und Beschreibung dargelegt, soll jedoch nicht abschließend oder auf die offenbarte Form eingeschränkt sein. Für den Fachmann sind viele Abwandlungen und Varianten ersichtlich. Die Ausführungsform wurde gewählt und beschrieben, um verschiedene Aspekte und die praktische Anwendung bestmöglich zu erläutern und dem Fachmann das Verständnis verschiedener Ausführungsformen mit verschiedenen für die jeweils beabsichtigte Nutzung geeigneten Abwandlungen zu ermöglichen.

Claims (20)

  1. Computerprogrammprodukt zum Erleichtern von Verarbeitung in einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt Folgendes aufweist: ein durch einen Computer lesbares Speichermedium, das durch eine Verarbeitungsschaltung lesbar ist und Anweisungen zum Durchführen eines Verfahrens speichert, das Folgendes umfasst: Beziehen von verschlüsseltem Code durch einen Prozessor in einem ersten Betriebsmodus, wobei der Prozessor dafür vorgesehen ist, Klartextanweisungen auszuführen, wenn er sich im ersten Betriebsmodus befindet, Umschalten des Prozessors vom ersten Betriebsmodus in einen zweiten Betriebsmodus, wobei sich der zweite Betriebsmodus vom ersten Betriebsmodus unterscheidet, Entschlüsseln des verschlüsselten Codes, um entschlüsselten Code zu erhalten, wenn sich der Prozessor im zweiten Betriebsmodus befindet, und Ausführen des entschlüsselten Codes, wenn sich der Prozessor im zweiten Betriebsmodus befindet.
  2. Computerprogrammprodukt nach Anspruch 1, wobei das Umschalten des Prozessors vom ersten Betriebsmodus in den zweiten Betriebsmodus Deaktivieren einer oder mehrerer Datenübertragungsverbindungen des Prozessors mit externen Komponenten des Prozessors umfasst, um den Prozessor in den zweiten Betriebsmodus zu versetzen.
  3. Computerprogrammprodukt nach Anspruch 1, wobei das Ausführen des entschlüsselten Codes Folgendes umfasst: Durchführen einer oder mehrerer Operationen mittels des entschlüsselten Codes, um ein Ergebnis zu liefern, Verschlüsseln des Ergebnisses, um ein verschlüsseltes Ergebnis zu liefern, und Bereitstellen des verschlüsselten Ergebnisses an einen Client, wenn der Prozessor vom zweiten Betriebsmodus in den ersten Betriebsmodus umschaltet.
  4. Computerprogrammprodukt nach Anspruch 3, wobei das Verfahren ferner umfasst, dass das Umschalten vom zweiten Betriebsmodus in den ersten Betriebsmodus Datenaustausch des Prozessors mit externen Komponenten des Prozessors ermöglicht, wobei das Umschalten Löschen unverschlüsselter Daten aus einem oder mehreren Caches des Prozessors umfasst.
  5. Computerprogrammprodukt nach Anspruch 3, wobei das Verfahren ferner Entschlüsseln von Eingabedaten umfasst, um entschlüsselte Daten bereitzustellen, und wobei die eine oder die mehreren Operationen an den entschlüsselten Daten durchgeführt werden, um das Ergebnis zu liefern.
  6. Computerprogrammprodukt nach Anspruch 5, wobei das Entschlüsseln der Eingabedaten Verwenden mindestens eines Datenschlüssels zum Entschlüsseln der Eingabedaten umfasst, wobei der mindestens eine Datenschlüssel durch den entschlüsselten Code bereitgestellt wird.
  7. Computerprogrammprodukt nach Anspruch 1, wobei das Entschlüsseln des verschlüsselten Codes Entschlüsseln des verschlüsselten Codes mittels eines für den Prozessor eindeutigen privaten Schlüssels umfasst.
  8. Computerprogrammprodukt nach Anspruch 1, wobei der verschlüsselte Code mittels eines einer eindeutigen Kennung des Prozessors zugehörigen öffentlichen Schlüssels verschlüsselt wird.
  9. Computerprogrammprodukt nach Anspruch 1, wobei der Prozessor durch einen Cloud-Dienstanbieter bereitgestellt wird.
  10. Computerprogrammprodukt nach Anspruch 9, wobei das Verfahren ferner Folgendes umfasst: Bereitstellen einer eindeutigen Kennung des Prozessors und eines der eindeutigen Kennung des Prozessors zugehörigen öffentlichen Schlüssels durch den Cloud-Dienstanbieter auf Grundlage einer Anfrage nach dem Prozessor, Verschlüsseln von Code mittels des öffentlichen Schlüssels, um den verschlüsselten Code bereitzustellen, und Senden des verschlüsselten Codes an den Prozessor.
  11. Computersystem zum Erleichtern von Verarbeitung in einer Datenverarbeitungsumgebung, wobei das Computersystem Folgendes aufweist: einen Arbeitsspeicher und einen mit dem Arbeitsspeicher in Datenaustausch stehenden Prozessor, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren durchführt, wobei das Verfahren Folgendes umfasst: Beziehen von verschlüsseltem Code durch den Prozessor in einem ersten Betriebsmodus, wobei der Prozessor dafür vorgesehen ist, Klartextanweisungen auszuführen, wenn er sich im ersten Betriebsmodus befindet, Umschalten des Prozessors vom ersten Betriebsmodus in einen zweiten Betriebsmodus, wobei sich der zweite Betriebsmodus vom ersten Betriebsmodus unterscheidet, Entschlüsseln des verschlüsselten Codes, um entschlüsselten Code zu erhalten, wenn sich der Prozessor im zweiten Betriebsmodus befindet, und Ausführen des entschlüsselten Codes, wenn sich der Prozessor im zweiten Betriebsmodus befindet.
  12. Computersystem nach Anspruch 11, wobei das Umschalten des Prozessors vom ersten Betriebsmodus in den zweiten Betriebsmodus Deaktivieren einer oder mehrerer Datenübertragungsverbindungen des Prozessors mit externen Komponenten des Prozessors umfasst, um den Prozessor in den zweiten Betriebsmodus zu versetzen.
  13. Computersystem nach Anspruch 11, wobei das Ausführen des entschlüsselten Codes Folgendes umfasst: Durchführen einer oder mehrerer Operationen mittels des entschlüsselten Codes, um ein Ergebnis zu liefern, Verschlüsseln des Ergebnisses, um ein verschlüsseltes Ergebnis zu liefern, und Bereitstellen des verschlüsselten Ergebnisses an einen Client, wenn der Prozessor vom zweiten Betriebsmodus in den ersten Betriebsmodus umschaltet.
  14. Computersystem nach Anspruch 11, wobei der verschlüsselte Code mittels eines einer eindeutigen Kennung des Prozessors zugehörigen öffentlichen Schlüssels verschlüsselt wird.
  15. Computersystem nach Anspruch 11, wobei der Prozessor durch einen Cloud-Dienstanbieter bereitgestellt wird.
  16. Durch einen Computer implementiertes Verfahren zum Erleichtern von Verarbeitung in einer Datenverarbeitungsumgebung, wobei das durch einen Computer implementierte Verfahren Folgendes umfasst: Beziehen von verschlüsseltem Code durch einen Prozessor in einem ersten Betriebsmodus, wobei der Prozessor dafür vorgesehen ist, Klartextanweisungen auszuführen, wenn er sich im ersten Betriebsmodus befindet, Umschalten des Prozessors vom ersten Betriebsmodus in einen zweiten Betriebsmodus, wobei sich der zweite Betriebsmodus vom ersten Betriebsmodus unterscheidet, Entschlüsseln des verschlüsselten Codes, um entschlüsselten Code zu erhalten, wenn sich der Prozessor im zweiten Betriebsmodus befindet, und Ausführen des entschlüsselten Codes, wenn sich der Prozessor im zweiten Betriebsmodus befindet.
  17. Durch einen Computer implementiertes Verfahren nach Anspruch 16, wobei das Umschalten des Prozessors vom ersten Betriebsmodus in den zweiten Betriebsmodus Deaktivieren einer oder mehrerer Datenübertragungsverbindungen des Prozessors mit externen Komponenten des Prozessors umfasst, um den Prozessor in den zweiten Betriebsmodus zu versetzen.
  18. Durch einen Computer implementiertes Verfahren nach Anspruch 16, wobei das Ausführen des entschlüsselten Codes Folgendes umfasst: Durchführen einer oder mehrerer Operationen mittels des entschlüsselten Codes, um ein Ergebnis zu liefern, Verschlüsseln des Ergebnisses, um ein verschlüsseltes Ergebnis zu liefern, und Bereitstellen des verschlüsselten Ergebnisses an einen Client, wenn der Prozessor vom zweiten Betriebsmodus in den ersten Betriebsmodus umschaltet.
  19. Durch einen Computer implementiertes Verfahren nach Anspruch 16, wobei der verschlüsselte Code mittels eines einer eindeutigen Kennung des Prozessors zugehörigen öffentlichen Schlüssels verschlüsselt wird.
  20. Durch einen Computer implementiertes Verfahren nach Anspruch 16, wobei der Prozessor durch einen Cloud-Dienstanbieter bereitgestellt wird.
DE112019001957.0T 2018-06-27 2019-05-13 Sichere operationen mit verschlüsselten daten Ceased DE112019001957T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/019,624 2018-06-27
US16/019,624 US11120140B2 (en) 2018-06-27 2018-06-27 Secure operations on encrypted data
PCT/IB2019/053930 WO2020003018A1 (en) 2018-06-27 2019-05-13 Secure operations on encrypted data

Publications (1)

Publication Number Publication Date
DE112019001957T5 true DE112019001957T5 (de) 2021-03-04

Family

ID=68986101

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019001957.0T Ceased DE112019001957T5 (de) 2018-06-27 2019-05-13 Sichere operationen mit verschlüsselten daten

Country Status (6)

Country Link
US (1) US11120140B2 (de)
JP (1) JP7201300B2 (de)
CN (1) CN112513855A (de)
DE (1) DE112019001957T5 (de)
GB (1) GB2590239B (de)
WO (1) WO2020003018A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6671701B1 (ja) * 2019-07-19 2020-03-25 Eaglys株式会社 演算装置、演算方法、演算プログラム、および演算システム
US20230102111A1 (en) * 2021-09-30 2023-03-30 Lenovo Global Technology (United States) Inc. Securing customer sensitive information on private cloud platforms

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2078020C (en) 1992-09-11 2000-12-12 Rodney G. Denno Combination pin pad and terminal
SE515327C2 (sv) * 1999-08-27 2001-07-16 Ericsson Telefon Ab L M Anordning för att utföra säkra transaktioner i en kommunikationsanordning
JP4629416B2 (ja) 2003-11-28 2011-02-09 パナソニック株式会社 データ処理装置
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US8166296B2 (en) * 2004-10-20 2012-04-24 Broadcom Corporation User authentication system
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
US7747809B2 (en) 2008-02-19 2010-06-29 International Business Machines Corporation Managing PCI express devices during recovery operations
US8788428B2 (en) 2010-06-28 2014-07-22 Dresser, Inc. Multimode retail system
US8925075B2 (en) 2011-11-07 2014-12-30 Parallels IP Holdings GmbH Method for protecting data used in cloud computing with homomorphic encryption
US9053348B2 (en) 2012-03-26 2015-06-09 Microsoft Technology Licensing, Llc Secure cloud computing platform
KR101373542B1 (ko) 2012-08-06 2014-03-12 (주)소만사 가상화 기반 논리적 망 분리 기법을 이용한 개인정보 보호 시스템
US9894040B2 (en) 2012-09-11 2018-02-13 Microsoft Technology Licensing, Llc Trust services for securing data in the cloud
US8938622B2 (en) 2012-09-21 2015-01-20 Sap Ag Encryption in the cloud with customer controlled keys
JP2014089652A (ja) 2012-10-31 2014-05-15 Toshiba Corp 情報処理装置
EP2965254B1 (de) * 2013-03-08 2020-05-13 Robert Bosch GmbH Vorrichtungen und verfahren zum aufrechterhalten der integrität und geheimhaltung und in unsicheren datenverarbeitungsplattformen
US9246678B2 (en) 2013-03-14 2016-01-26 Intel Corporation Secure cloud storage and encryption management system
US9660814B2 (en) * 2013-04-26 2017-05-23 Visa International Service Association Providing digital certificates
US20150052616A1 (en) * 2013-08-14 2015-02-19 L-3 Communications Corporation Protected mode for securing computing devices
EP3036680B1 (de) * 2013-08-21 2018-07-18 Intel Corporation Private datenverarbeitung in einer cloud
US9413730B1 (en) 2014-06-04 2016-08-09 Skyhigh Networks, Inc. Encryption in the cloud using enterprise managed keys
US9922200B2 (en) * 2014-06-30 2018-03-20 Microsoft Technology Licensing, Llc Securely storing content within public clouds
US10541811B2 (en) * 2015-03-02 2020-01-21 Salesforce.Com, Inc. Systems and methods for securing data
US10223289B2 (en) * 2015-07-07 2019-03-05 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management
US10257189B2 (en) 2016-05-24 2019-04-09 Microsoft Technology Licensing, Llc Using hardware based secure isolated region to prevent piracy and cheating on electronic devices
US10303899B2 (en) * 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control

Also Published As

Publication number Publication date
US11120140B2 (en) 2021-09-14
WO2020003018A1 (en) 2020-01-02
GB2590239B (en) 2022-07-06
GB202100676D0 (en) 2021-03-03
GB2590239A (en) 2021-06-23
JP7201300B2 (ja) 2023-01-10
US20200004969A1 (en) 2020-01-02
CN112513855A (zh) 2021-03-16
JP2021530009A (ja) 2021-11-04

Similar Documents

Publication Publication Date Title
DE102012219155B4 (de) Verschlüsseln von Datenobjekten zur Datensicherung
DE112020004699B4 (de) Schützen von arbeitslasten in kubernetes
DE112018004390B4 (de) Sichere zugriffsverwaltung für werkzeuge innerhalb einer sicheren umgebung
DE112021001766B4 (de) Inhaltskontrolle durch datenaggregationsdienste dritter
DE112021004937T5 (de) Sicheres erneutes verschlüsseln von homomorph verschlüsselten daten
DE112016000915T5 (de) Sicherheit innerhalb softwaredefinierter Infrastruktur
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE112021001270T5 (de) Sicherer schlüsselaustausch in einer datenverarbeitungsumgebung
DE112021002245T5 (de) Verhindern einer unberechtigten bereitstellung von paketen in clustern
DE102016105062A1 (de) Nähengestützte Berechtigungsprüfung für einheitenübergreifend verteilte Daten
DE112021006372T5 (de) Sichere bereitstellung einer datenverarbeitungsressource unter verwendung einer homomorphen verschlüsselung
DE112020002164T5 (de) Sichere datenspeicherung auf der grundlage von verschleierung durch verteilung
DE112019001433T5 (de) Datenanonymisierung
DE112021002099T5 (de) Hypervisor-geschützter schlüssel
DE112020000891T5 (de) Erzeugung von nativem code für cloud-services
DE112021005561T5 (de) Implementieren einer widerstandsfähigen deterministischen verschlüsselung
DE112020003357T5 (de) Undurchsichtige verschlüsselung für datendeduplizierung
DE112020005526T5 (de) Reservieren eines oder mehrerer sicherheitsmodule für einen sicheren gast
DE112017005772T5 (de) Zeitpunktgesteuerte sicherungen über einen speicher-controller in eine objektspeicher-cloud
DE112020002343T5 (de) Verteilung von Sicherheitsberechtigungsnachweisen
DE112020000285T5 (de) Programmunterbrechungen für Seiten-Import/-Export
DE102021130942A1 (de) Mehrstufiger schutz für datenzentrierte objekte
DE112019001957T5 (de) Sichere operationen mit verschlüsselten daten
DE112022003785T5 (de) Sichere verschlüsselung von teilblöcken
DE112021006008T5 (de) Sichere übertragung grosser datenmengen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final