DE112018001285T5 - Kryptografische Schlüsselerzeugung mit Anwendung auf Datendeduplizierung - Google Patents

Kryptografische Schlüsselerzeugung mit Anwendung auf Datendeduplizierung Download PDF

Info

Publication number
DE112018001285T5
DE112018001285T5 DE112018001285.9T DE112018001285T DE112018001285T5 DE 112018001285 T5 DE112018001285 T5 DE 112018001285T5 DE 112018001285 T DE112018001285 T DE 112018001285T DE 112018001285 T5 DE112018001285 T5 DE 112018001285T5
Authority
DE
Germany
Prior art keywords
key
commitment
server
client computer
client
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.)
Granted
Application number
DE112018001285.9T
Other languages
English (en)
Other versions
DE112018001285B4 (de
Inventor
Angelo De Caro
Esha Ghosh
Alessandro Sorniotti
Jan Camenisch
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 DE112018001285T5 publication Critical patent/DE112018001285T5/de
Application granted granted Critical
Publication of DE112018001285B4 publication Critical patent/DE112018001285B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • H04L9/3221Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

Eine Erzeugung eines Verschlüsselungsschlüssels wird deterministisch aus Client-Daten abgeleitet, deren Kenntnis ein Client-Computer beweist, um den Schlüssel zu erhalten. Ein Client-Computer stellt Client-Daten bereit und ist so ausgelegt, dass er einen Vektor definiert, der über eine Vielzahl von Datenblöcken mit Indizes verfügt, die den Client-Daten entsprechen. Der Client-Computer ist des Weiteren so ausgelegt, dass er ein erstes, nicht versteckendes Vektor-Commitment und ein zweites, versteckendes Vektor-Commitment auf den Vektor und ein drittes Commitment auf das erste Commitment erzeugt. Der Client-Computer sendet das zweite und das dritte Commitment an den Schlüsselserver und stellt dem Schlüsselserver einen ersten Wissensbeweis, für eine Teilmenge der Indizes, über die Kenntnis der entsprechenden Datenblöcke des Vektors in dem zweiten und dem dritten Commitment bereit. Der Schlüsselserver speichert einen geheimen Serverschlüssel und ist so ausgelegt, dass er sich mit dem Client-Computer an einem Schlüsselerzeugungsprotokoll beteiligt.

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung betrifft allgemein die Erzeugung von Verschlüsselungsschlüsseln und insbesondere die Erzeugung von Schlüsseln, die deterministisch aus Daten abgeleitet werden, über die Computer verfügen, welche die Schlüssel verwenden. Ausführungsformen der Erfindung können in Datendeduplizierungssystemen angewendet werden.
  • KURZDARSTELLUNG
  • Gemäß mindestens einer einzelnen Ausführungsform der vorliegenden Erfindung wird ein System bereitgestellt, das einen Client-Computer und einen Schlüsselserver, der für eine Übertragung über ein Netzwerk ausgelegt ist, aufweist. Der Client-Computer stellt Client-Daten bereit und ist so ausgelegt, dass er einen Vektor x definiert, der über eine Vielzahl n von Datenblöcken xi mit den Indizes i = 1 bis n verfügt, die den Client-Daten entsprechen. Der Client-Computer ist des Weiteren so ausgelegt, dass er ein erstes Commitment, bei dem es sich um ein nicht versteckendes Vektor-Commitment handelt, auf den Vektor x erzeugt, ein zweites Commitment, bei dem es sich um ein versteckendes Vektor-Commitment handelt, auf den Vektor x erzeugt und ein drittes Commitment auf das erste Commitment erzeugt. Der Client-Computer sendet das zweite und das dritte Commitment an den Schlüsselserver und stellt dem Schlüsselserver einen ersten Wissensbeweis, für eine Teilmenge der Indizes i, über die Kenntnis der entsprechenden Datenblöcke xi des Vektors x in dem zweiten und dem dritten Commitment bereit. Der Schlüsselserver speichert einen geheimen Schlüssel k und ist so ausgelegt, dass er sich als Reaktion auf die Überprüfung des ersten Wissensbeweises mit dem Client-Computer an einem Schlüsselerzeugungsprotokoll beteiligt. In diesem Protokoll ist der Client-Computer so ausgelegt, dass er eine verblendete Funktion des ersten Commitments an den Schlüsselserver sendet und dem Schlüsselserver einen zweiten Wissensbeweis über die Kenntnis des ersten Commitments in dieser verblendeten Funktion und in dem dritten Commitment bereitstellt. Der Schlüsselserver ist so ausgelegt, dass er als Reaktion auf die Überprüfung des zweiten Wissensbeweises aus der vorstehend erwähnten verblendeten Funktion einen verblendeten Schlüssel K' erzeugt, der eine verblendete Funktion des ersten Commitments und des Serverschlüssels k aufweist, und den verblendeten Schlüssel K' an den Client-Computer sendet. Der Client-Computer ist des Weiteren so ausgelegt, dass er den verblendeten Schlüssel K' entblendet, um einen Client-Schlüssel K zu erhalten, der eine deterministische Funktion des ersten Commitments und des Serverschlüssels k aufweist.
  • Figurenliste
    • 1 ist ein Blockschaubild eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung;
    • 2 ist ein Ablaufplan, der Prozessschritte zum Erzeugen eines Client-Schlüssels gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
    • 3 ist ein Ablaufplan, der Prozessschritte zum Speichern von Client-Daten gemäß einer Ausführungsform veranschaulicht;
    • Die 4A und 4B sind Ablaufpläne, die Prozessschritte zum Erzeugen des Client-Schlüssels gemäß einer weiteren Ausführungsform der vorliegenden Erfindung veranschaulichen;
    • 5 ist ein Blockschaubild von internen und externen Komponenten des Computersystems von 1 gemäß einer Ausführungsform der vorliegenden Erfindung;
    • 6 ist ein Blockschaubild einer Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung; und
    • 7 ist ein Blockschaubild von Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Erzeugung eines Verschlüsselungsschlüssels als eine deterministische Funktion von an einem Computer bereitgestellten Daten ist für sichere Datendeduplizierungssysteme elementar. Datendeduplizierung ist ein Prozess, der verwendet wird, um den Speicherbedarf zu verringern, indem sichergestellt wird, dass ein Speichersystem nur eine Kopie eines bestimmten Datenelements wie beispielsweise einer Datei speichert. Wenn die Speicherung einer zweiten Kopie einer zuvor gespeicherten Datei angefordert wird, wird dies durch den Speicherserver erkannt, üblicherweise, indem ein Hash der Datei mit Hashes von Dateien, die bereits von dem Server gespeichert wurden, verglichen wird. Wenn eine Übereinstimmung erkannt wird, wird die neue Datei nicht gespeichert und der Server speichert einfach einen Zeiger auf die übereinstimmende, zuvor gespeicherte Datei.
  • Wenn Client-Computer Daten an einen Speicherserver außerhalb ihrer Vertrauensdomäne (z.B. an einen cloudbasierten Speicheranbieter) senden, erfordert es die Sicherheit, dass die Daten verschlüsselt werden, bevor sie zur Speicherung versendet werden. Um eine Deduplizierung zuzulassen, kann der Verschlüsselungsprozess deterministisch sein (d.h., dieselben Daten verschlüsseln sich zu demselben verschlüsselten Text), so dass Übereinstimmungen erkannt werden können. Darüber hinaus besteht das Erfordernis, dass dieselben Daten unter Verwendung desselben Verschlüsselungsschlüssels verschlüsselt werden können. Für eine wirksame benutzerübergreifende Deduplizierung, bei der ein Speicherserver eine Deduplizierung für Daten durchführt, die von verschiedenen Client-Computern gesendet werden, können alle Client-Computer in der Lage sein, denselben Schlüssel zur Verschlüsselung derselben Datei abzuleiten.
  • Üblicherweise können Schemata für eine Schlüsselableitung einzig von einem öffentlichen Hash der Client-Daten und nicht von den Daten selbst abhängig sein. Daher kann eine böswillige Partei allein durch Kenntnis des Hashs der Datei an den Verschlüsselungsschlüssel für eine Datei gelangen. Folglich wäre jedes beliebige System, das solche Schemata einsetzt, in einem realistischen Sicherheitsmodell unsicher: ein Angreifer, der den verschlüsselten Text für eine Datei aufgrund von irgendeiner Beeinträchtigung des Speicherservers erhält, oder ein böswilliger Speicheranbieter selbst kann den Schlüssel verwenden, um diesen zu entschlüsseln.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Arbeitsweise 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 in dem 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 bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern 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.
  • 1 ist ein Blockschaubild eines Systems 100 gemäß einer Ausführungsform der vorliegenden Erfindung. Das System 100 weist eine Vielzahl von Client-Computern 102, einen Schlüsselserver 103 und einen Speicherserver 104 auf. Die Client-Computer 102 können für eine Übertragung mit dem Schlüsselserver 103 und dem Speicherserver 104 über ein Netzwerk 105 ausgelegt sein, wobei zu dem Netzwerk 105 ein oder mehrere Komponentennetzwerke und/oder Internetzwerke, darunter das Internet, gehören können. Beim Betrieb des Systems 100 senden die Client-Computer 102 Client-Daten (z.B. Datendateien) über das Netzwerk 105 zur Speicherung durch den Speicherserver 104. Der Speicherserver 104 kann sich außerhalb der Vertrauensdomäne der Client-Computer 102 befinden, so dass alle Dateien vor der Übertragung an den Speicherserver 104 durch die Client-Computer 102 verschlüsselt werden. Der Speicherserver 104 kann von den Client-Computern 102 empfangene verschlüsselte Dateien im Speicher speichern, der durch die Datenbank 106 dargestellt ist, welche mit dem Speicherserver 104 betriebsfähig verbunden ist. Der Speicherserver 104 führt eine Deduplizierung für in der Datenbank 106 gespeicherte verschlüsselte Dateien durch. Zum Beispiel kann die Granularität der Deduplizierung eine ganze verschlüsselte Datei sein. Folglich kann der Speicherserver 104 eine Kopie von irgendeiner bestimmten verschlüsselten Datei in der Datenbank 106 speichern. Der Speicherserver 104 kann erkennen, ob eine zweite Kopie einer zuvor gespeicherten verschlüsselten Datei von einem der Client-Computer 102 empfangen wird, wie nachstehend ausführlicher beschrieben ist. Der Speicherserver 104 kann die verschlüsselte Datei nicht nochmals speichern, kann stattdessen aber einen Zeiger auf die identische, zuvor gespeicherte Datei an einen der betreffenden Client-Computer 102 senden.
  • Jeder der Client-Computer 102 kann eine Datei zur Speicherung verschlüsseln, wobei er einen Client-Schlüssel, der mit K bezeichnet wird, für diese Datei verwendet. Um eine Deduplizierung von Dateien über Client-Computer 102 hinweg zuzulassen, können sich identische Client-Dateien zu identischen verschlüsselten Texten verschlüsseln und unter Verwendung desselben Verschlüsselungsschlüssels verschlüsselt werden. Wenn verschiedene Client-Computer 102 identische Dateien verschlüsseln, kann folglich jeder der Client-Computer 102 denselben Client-Schlüssel für die Datei verwenden. Client-Schlüssel K erhalten die Client-Computer 102 durch Interaktion mit dem Schlüsselserver 103. Der Schlüsselserver 103 kann einen Verschlüsselungsschlüssel k speichern, der für den Schlüsselserver 103 geheim ist. Um einen Client-Schlüssel K zu erhalten, können sich die Client-Computer 102 an einem Verschlüsselungsprotokoll mit dem Schlüsselserver 103 beteiligen, wodurch einer der Client-Computer 102 einen Schlüssel K erhält, bei dem es sich um eine deterministische Funktion des Serverschlüssels k und der zu verschlüsselnden Client-Datei handelt. Bei diesem Protokoll müssen die Client-Computer 102 gegebenenfalls beweisen, dass sie Kenntnis von der Client-Datei haben, um den Schlüssel K zu erhalten. Folglich kann nur einer der Client-Computer 102 einen Client-Schlüssel erhalten, der im Besitz der Client-Datei selbst und nicht nur eines kurzen Hashs der Datei ist. Der Schlüsselserver 103 ist für die Client-Computer 102 gegebenenfalls nicht vertrauenswürdig, so dass das Protokoll ausgeführt werden kann, ohne dass der Schlüsselserver 103 die Client-Datei und/oder den resultierenden Client-Schlüssel K in Erfahrung bringt.
  • Der Schlüsselserver 103 kann durch einen Computer ausgeführt sein, der von einer Einheit betrieben wird, die den Client-Computern 102 einen Schlüsselerzeugungsdienst bereitstellt (z.B. einem Anbieter von Cloud-Diensten). Der Speicherserver 104 kann ebenso durch einen Computer ausgeführt sein, der von einem Anbieter von Speicherdiensten betrieben wird (z.B. einem Anbieter von Cloud-Speicher). Die Datenbank 106 kann eine beliebige Datenspeichervorrichtung enthalten, darunter ein oder mehrere Datenspeichermedien, und kann durch eine verteilte Speichervorrichtung in einer Cloud-Speicherumgebung ausgeführt sein. Eine typische Speichervorrichtung kann eine Plattenspeichervorrichtung enthalten, die eine oder mehrere Platten, wie beispielsweise Magnet- oder optische Platten, aufweist, welche sich in einem Computer (z.B. in einem Festplattenlaufwerk) befinden können oder durch eine Plattenvorrichtung, auf die extern zugegriffen werden kann (z.B. in einer Anordnung von Festplattenlaufwerken wie beispielsweise einer redundanten Anordnung unabhängiger Festplatten), bereitgestellt werden können.
  • Die Client-Computer 102 können zum Beispiel durch einen Benutzercomputer wie etwa einen Desktop-Computer, Laptop-Computer, Tablet-Computer, ein Notebook, Palmtop, Mobiltelefon, einen PDA (elektronischen Assistenten), ein persönliches Musikwiedergabegerät etc. oder einen beliebigen anderen Computer, der einen fernen Speicher zur Speicherung von Daten verwendet, ausgeführt sein.
  • Im Allgemeinen können die Client-Computer 102, der Schlüsselserver 103, der Speicherserver 104 des Systems 100 durch einen oder mehrere Universal- oder Spezialcomputer ausgeführt sein, die eine oder mehrere reale und/oder virtuelle Maschinen aufweisen können, welche Funktionalität bereitstellen, um die hierin beschriebenen Operationen durchzuführen. Diese Funktionalität kann durch Logik bereitgestellt werden, welche in Hardware oder Software oder einer Kombination daraus ausgeführt sein kann. Solche Logik kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen, wie zum Beispiel Programmmodulen, die durch eine Datenverarbeitungsvorrichtung ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren. Die Datenverarbeitungsvorrichtung kann in verteilten Cloud-Computing-Umgebungen betrieben werden, in denen Aufgaben von fernen Verarbeitungseinheiten durchgeführt werden, die über ein Übertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Daten und Programmmodule sowohl in lokalen als auch in entfernt angeordneten Speichermedien eines Computersystems, darunter auch in Hauptspeichereinheiten, befinden.
  • 2 ist ein Ablaufplan, der Prozessschritte zum Erzeugen eines Client-Schlüssels gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Wenn der Client-Computer 102 eine Client-Datei F zur Speicherung sendet, kontaktiert der Client-Computer 102 zuerst den Schlüsselserver 103, um einen Client-Schlüssel K für die Datei zu erhalten. Im Schritt 30 definiert der Client-Computer 102 einen Vektor x, der über eine Vielzahl n von Datenblöcken xi mit den Indizes i = 1 bis n verfügt, welche seiner Datei F entsprechen. Im Schritt 30 kann der Client-Computer 102 die Datei F in n Datenblöcke x1, x2, ... xn beliebiger Länge aufteilen oder die Datei F codieren, wie nachstehend ausführlicher beschrieben ist, und die resultierende codierte Datei dann in n Blöcke xi aufteilen. Im Schritt 31 erzeugt der Client-Computer 102 ein erstes kryptografisches Commitment auf den Vektor x. Bei diesem ersten Commitment, das mit c1 bezeichnet wird, handelt es sich um ein nicht versteckendes Vektor-Commitment (NHVC, non-hiding vector commitment), wie nachstehend ausführlicher beschrieben ist. Im Schritt 32 kann der Client-Computer 102 auch ein zweites kryptografisches Commitment auf den Vektor x erzeugen. Bei dem zweiten Commitment, das mit c2 bezeichnet wird, handelt es sich um ein versteckendes Vektor-Commitment (HVC, hiding vector commitment), wie nachstehend ausführlicher beschrieben ist. Ferner erzeugt der Client-Computer 102 im Schritt 33 ein drittes Commitment, das mit c3 bezeichnet wird, auf das erste Commitment c1. Das dritte Commitment c3 ist ein „normales“ kryptografisches Commitment (d.h., es verfügt über die üblichen versteckenden und bindenden Eigenschaften eines kryptografischen Commitments), wie nachstehend ausführlicher beschrieben ist. Der Client-Computer 102 sendet das zweite und das dritte Commitment c2 und c3 an den Schlüsselserver 103, wie durch den Schritt 34 angegeben ist. Darüber hinaus stellt der Client-Computer 102 im Schritt 35 dem Schlüsselserver 103 einen ersten kryptografischen Wissensbeweis (PoK, proof of knowledge), mit Π1 bezeichnet, bereit, der die Kenntnis des Client-Computers 102, für eine Teilmenge der Indizes i, der entsprechenden Datenblöcke xi des Vektors x in dem zweiten und dem dritten Commitment c2 und c3 beweist. Dieser erste Beweis Π1 kann in verschiedenen Stufen geführt werden, wie nachstehend beispielhaft gezeigt ist. In weiteren Ausführungsformen kann die Teilmenge der Indizes i, für die ein Beweis Π1 erbracht wird, durch den Client-Computer 102 ausgewählt werden. In einer einzelnen Ausführungsform kann diese Teilmenge für erhöhte Sicherheit durch den Schlüsselserver 103 zufällig ausgewählt werden. Die Größe der Teilmenge kann optimiert, geändert und/oder wie gewünscht angepasst werden, wie nachstehend ausführlicher beschrieben ist.
  • Im Schritt 36 überprüft der Schlüsselserver 103 den ersten Beweis Π1 in Bezug auf c2 und c3, bevor er fortfährt. Wenn der Beweis ungültig ist („N“-Verzweigung, Entscheidungsblock 37), bricht der Schlüsselserver 103 das Protokoll im Schritt 38 ab und der Prozess endet. Folglich kann der Schlüsselserver 103 eine entsprechende Nachricht an den Client-Computer 102 senden, die angibt, dass die Überprüfung fehlgeschlagen ist. Nach einer erfolgreichen Überprüfung von Π1 („J“-Verzweigung, Entscheidungsblock 37) schaltet der Schlüsselserver 103 zum Schritt 39, in dem das Schlüsselerzeugungsprotokoll eingeleitet wird. Der Schlüsselserver 103 kann mit dem Client-Computer 102 Daten austauschen, um das Protokoll in diesem Schritt einzuleiten, und er kann für den Schlüsselerzeugungsprozess benötigte Daten senden, wie nachstehend ausführlicher beschrieben ist.
  • Unter der Annahme, dass das Schlüsselerzeugungsprotokoll eingeleitet ist, erzeugt der Client-Computer 102 im Schritt 40 eine verblendete Funktion, die mit B bezeichnet wird, des ersten Commitments c1. Der Client-Computer 102 sendet die verblendete Funktion B im Schritt 41 an den Schlüsselserver 103, und im Schritt 42 stellt der Client-Computer 102 dem Schlüsselserver 103 einen zweiten kryptografischen Wissensbeweis bereit, der mit Π2 bezeichnet wird. Der zweite Beweis Π2 beweist die Kenntnis des Client-Computers 102 des ersten Commitments c1 sowohl in der verblendeten Funktion B als auch in dem im Schritt 34 gesendeten dritten Commitment c3. Der Schlüsselserver 103 überprüft den zweiten Beweis Π2 in Bezug auf B und c3 im Schritt 43. Falls die Überprüfung fehlschlägt („N“-Verzweigung, Entscheidungsblock 44), kehrt der Prozess zum Schritt 38 zurück, in dem das Protokoll abgebrochen wird und der Prozess endet. Als Reaktion auf die Überprüfung von Π2 („Y“-Verzweigung, Entscheidungsblock 44) schaltet der Prozess zum Schritt 45, in dem der Schlüsselserver 103 einen verblendeten Schlüssel K' aus der im Schritt 41 empfangenen verblendeten Funktion B erzeugt. Dieser verblendete Schlüssel K' weist eine verblendete Funktion des ersten Commitments c1 und des geheimen Serverschlüssels k auf. Der Schlüsselserver 103 sendet den verblendeten Schlüssel K' dann im Schritt 46 an den Client-Computer 102. Nach dem Empfang entblendet der Client-Computer 102 den verblendeten Schlüssel K', um den endgültigen Client-Schlüssel K zu erhalten.
  • Aufgrund des Betriebs des vorstehend erwähnten Protokolls ist der resultierende Client-Schlüssel K eine deterministische Funktion des ersten Commitments c1 und des geheimen Serverschlüssels k. Da das erste Commitment ein nicht versteckendes Vektor-Commitment auf den Vektor x ist, ist der Client-Schlüssel K somit eine deterministische Funktion des Vektors x und des Serverschlüssels k. Während c1 nicht versteckend ist, empfängt der Schlüsselserver 103 jedoch nur die verblendete Funktion B dieses Commitments und bringt c1 selbst nicht in Erfahrung (was Informationen über die Client-Datei F preisgeben würde). Der Client-Schlüssel K kann somit über den Schlüsselserver 103 blind erzeugt werden, ohne dass der Schlüsselserver 103 die Client-Datei F oder den endgültigen Client-Schlüssel K in Erfahrung bringt, den man erst nach dem Entblenden am Client-Computer 102 erhält. Überdies kann der Client-Computer 102 den Client-Schlüssel K erst erhalten, nachdem er die Kenntnis der Datenblöcke xi für die aktuelle Datei F, die diesem Schlüssel zugrunde liegt, bewiesen hat. Die besondere Kombination aus Commitments und Wissensbeweisen stellt sicher, dass ein Client-Schlüssel K nur für die gleiche Datei F wie diejenige, für die die Kenntnis der Datenblöcke bewiesen wurde, erzeugt werden kann. Im Einzelnen erlaubt das zweite, versteckende Vektor-Commitment c2, dass ein Wissensbeweis über die Kenntnis der Dateiblöcke xi erstellt wird, ohne dem Schlüsselserver 103 die Dateiblöcke preiszugeben, und der erste Beweis Π1 beweist, dass derselbe Vektor x diesem Commitment c2 und dem dritten Commitment c3 zugrunde liegt. Dieses dritte Commitment c3 legt sich auf das erste Commitment c1 fest, das wiederum (wenn es in der Funktion B verblendet wurde) dem Schlüsselerzeugungsprotokoll der Schritte 39 bis 47 die Client-Eingabe bereitstellt. Der zweite Beweis Π2 beweist dann, dass das dritte Commitment c3 aus demselben Wert (c1) wie die verblendete Funktion B in dem Schlüsselerzeugungsprotokoll berechnet wird. Das dritte Commitment c3 dient somit dazu, die beiden Teile des Protokolls (d.h. Wissensbeweis über die Kenntnis der Dateiblöcke und Schlüsselerzeugung) zu verknüpfen, während der gesamte Satz von Commitments und Beweisen es erlaubt, dass jeder Teil des Protokolls ohne Wissen des Schlüsselservers 103 ausgeführt werden kann.
  • 3 ist ein Ablaufplan, der Prozessschritte zum Speichern von Client-Daten gemäß einer Ausführungsform veranschaulicht. Im Schritt 50 erhält der Client-Computer 102 den Client-Schlüssel K für seine Datei F über den Prozess von 2. Im Schritt 51 verschlüsselt der Client-Computer 102 die Datei F unter Verwendung des Client-Schlüssels K über ein symmetrisches Verschlüsselungsschema, um einen verschlüsselten Text (d.h. eine verschlüsselte Datei) CF zu erzeugen. Im Schritt 52 sendet der Client-Computer 102 den verschlüsselten Text CF dann an den Speicherserver 104 über das Netzwerk 105. Im Schritt 53 wendet der Speicherserver 104 eine Hashfunktion H auf den verschlüsselten Text CF an, um einen Hashwert H(CF) zu erhalten. Um eine Deduplizierung zuzulassen, verwaltet der Speicherserver 104 eine Hashtabelle, die für jede in der Datenbank 106 gespeicherte verschlüsselte Datei CF den Hashwert H(CF) für diese Datei und die Dateispeicherposition in der Datenbank 106 angibt. In einer weiteren Ausführungsform kann der Speicherserver 104 auch zusätzliche Daten (z.B. ID-Daten wie beispielsweise eine Datei-ID, eine Client-ID usw.) für eine gespeicherte Datei zusammen mit beliebigen weiteren Daten speichern, die für eine Zugriffssteuerung erforderlich sein können. Im Schritt 54 vergleicht der Speicherserver 104 den im Schritt 53 erhaltenen Hashwert mit allen Hashwerten in der Tabelle, um festzustellen, ob es eine Übereinstimmung gibt. Wenn keine Übereinstimmung gefunden wird („N“-Verzweigung, Entscheidungsblock 55), speichert der Speicherserver 104 im Schritt 56 dann den empfangenen verschlüsselten Text CF in der Datenbank 106. Im Schritt 57 aktualisiert der Speicherserver 104 die Hashtabelle mit dem neuen Hashwert H(CF) und dem Speicherplatz für CF. Im Schritt 58 sendet der Speicherserver 104 dem Client-Computer 102 dann einen Link zu seiner gespeicherten Datei CF, und der Prozess ist abgeschlossen. Zum Entscheidungsblock 55 zurückkehrend, ist, wenn eine Übereinstimmung gefunden wird („Y“-Verzweigung, Entscheidungsblock 55), eine identische verschlüsselte Datei CF bereits in der Datenbank 106 gespeichert. Darüber hinaus sendet der Speicherserver 104 dem Client-Computer 102 im Schritt 59 einen Link zu der Adresse der zuvor gespeicherten identischen Datei in der Datenbank 106 und CF braucht nicht erneut gespeichert zu werden.
  • Jeder der Client-Computer 102 speichert Client-Schlüssel K für Dateien, um eine Entschlüsselung der entsprechenden verschlüsselten Texte zu ermöglichen, wenn diese anschließend von dem Speicherserver 104 abgerufen werden, indem auf die in den vorstehenden Schritten 58 oder 59 bereitgestellten Links zugegriffen wird. Ein Client-Schlüssel K kann am Client-Computer 102 oder in verschlüsselter Form an einem fernen Speicherort (z.B. am Speicherserver 104) gespeichert und dann abgerufen werden, wenn er vom Client-Computer 102 benötigt wird. Im Allgemeinen, da jeder Client-Schlüssel K eine deterministische Funktion des Schlüssels k des Schlüsselservers 103 und der mit diesem Client-Schlüssel verschlüsselten Datei F ist, können alle Client-Computer 102 identische Client-Schlüssel für identische Dateien erhalten, und für identische Dateien erhält man identische verschlüsselte Texte CF, so dass folglich eine Deduplizierung am Speicherserver 104 und eine Entschlüsselung durch einen Client-Computer einer identischen Datei, die von einem anderen Client-Computer 102 gespeichert wird, zugelassen wird. Da der Besitz der Datei selbst und nicht nur eines kurzen Hashs bewiesen werden kann, um einen Client-Schlüssel zu erhalten, kann der Speicherserver 104 jedoch keine Client-Schlüssel erhalten, indem er als ein Client mit dem Schlüsselserver 103 teilnimmt.
  • In einer weiteren Ausführungsform kann der Hashwert H(CF) für eine verschlüsselte Datei am Client-Computer 102 berechnet und im Schritt 52 anstelle des verschlüsselten Textes CF an den Speicherserver 104 gesendet werden. In dieser Ausführungsform wird der Schritt 53 weggelassen. Wenn es keine Übereinstimmung gibt, wird die vorab gespeicherte Datei im Schritt 55 ermittelt, der Speicherserver 104 fordert die verschlüsselte Datei CF vom Client-Computer 102 zur Speicherung im Schritt 56 an. Hier hängt der Schritt des Sendens der verschlüsselten Datei CF an den Speicherserver daher davon ab, dass im Schritt 55 keine Übereinstimmung gefunden wird, und nur der erste Client-Computer 102, der eine bestimmte Datei F verschlüsselt, muss CF an den Speicherserver 104 senden.
  • Die 4A und 4B sind Ablaufpläne, die Prozessschritte zum Erzeugen des Client-Schlüssels gemäß einer weiteren Ausführungsform der vorliegenden Erfindung veranschaulichen. Die Schritte 60 bis 63 von 4A entsprechen den Schritten 30 bis 33 von 2. Im Schritt 64 erzeugt der Client-Computer 102 einen ersten Teilbeweis, bezeichnet mit Πs1, welcher die Kenntnis des Client-Computers 102 des ersten Commitments c1 in dem dritten Commitment c3 beweist. Im Schritt 65 erzeugt der Client-Computer 102 einen zweiten Teilbeweis, bezeichnet mit Πs2, welcher beweist, dass das zweite und das dritte Commitment c2 und c3 aus einem gemeinsamen Wert berechnet werden. Beide Commitments können von demselben Vektor x abgeleitet werden, obgleich der gemeinsame Wert hier eine Funktion von x sein kann, wie nachstehend beispielhaft gezeigt ist. Im Schritt 66 sendet der Client-Computer 102 den ersten und den zweiten Teilbeweis Πs1, Πs2 an den Schlüsselserver 103 mit dem zweiten und dem dritten Commitment c2, c3. Im Schritt 67 überprüft der Schlüsselserver 103 die Teilbeweise Πs1, Πs2 in Bezug auf c2 und c3. Wenn die Überprüfung fehlschlägt („Nein“ am Entscheidungsblock 68), bricht der Schlüsselserver 103 das Protokoll im Schritt 69 ab und der Prozess endet. Nach einer erfolgreichen Überprüfung („Ja“ am Entscheidungsblock 68) wählt der Schlüsselserver 103 im Schritt 70 eine Teilmenge I = {ji, ...jt} der Positionsindizes i = 1 bis n aus, wobei die Anzahl t der Indizes in der Teilmenge / beruhend auf Sicherheits- und Effizienzvorgaben wie gewünscht ausgewählt werden kann. Der Schlüsselserver 103 sendet die ausgewählte Teilmenge I im Schritt 71 an den Client-Computer 102. Nach dem Empfang der Teilmenge I erzeugt der Client-Computer 102 im Schritt 72 einen dritten, mit Πs3 bezeichneten Teilbeweis. Dieser Teilbeweis Πs3 beweist die Kenntnis, für jeden Index der Positionsindizes i in der Teilmenge I, des Datenblocks xi an der Position i des Vektors x in dem zweiten Commitment c2. Der Client-Computer 102 sendet den dritten Teilbeweis im Schritt 73 Πs3 an den Schlüsselserver 103. Der Schlüsselserver 103 überprüft den Teilbeweis Πs3 in Bezug auf c2 im Schritt 74.
  • In dieser Ausführungsform wird der erste Wissensbeweis Π1 in 2 daher durch die drei Teilbeweise Πs1 bis Πs3 erbracht und eine Überprüfung des dritten Teilbeweises Πs3 durch den Schlüsselserver 103 schließt die Überprüfung des Beweises Π1 ab. Tatsächlich beweist der erste Teilbeweis Πs1 die Kenntnis des Inhalts von c3, der zweite Teilbeweis Πs2 verknüpft den Inhalt von c2 und c3, und der dritte Teilbeweis Πs3 beweist die Kenntnis der Dateiblöcke in dem Vektor x, der c2 zugrunde liegt (und daher c3 über die früheren Teilbeweise), wodurch der Beweis Π1 abgeschlossen ist. Mit den drei Teilbeweisen wird hier der erforderliche Wissensbeweis über die Kenntnis der Datei, für die der Client-Schlüssel erzeugt wird, wirksam erbracht, ohne dem Schlüsselserver 103 irgendwelche Informationen über die Datei selbst preiszugeben. Falls die Überprüfung von Πs3 fehlschlägt („Nein“ am Entscheidungsblock 75), bricht der Schlüsselserver 103 ab und der Prozess endet. Wenn die Überprüfung erfolgreich ist („Ja“ am Entscheidungsblock 75), schaltet der Schlüsselserver 103 zum Schlüsselerzeugungsprotokoll von 4A.
  • Im Schritt 80 von 4B verschlüsselt der Schlüsselserver 103 seinen geheimen Schlüssel k über ein homomorphes Verschlüsselungsschema HES mit einem öffentlichen Schlüssel epk eines aus einem öffentlichen/privaten Schlüssel bestehenden Paares (epk, esk) des Schemas. Üblicherweise hat ein homomorphes Verschlüsselungsschema eine homomorphe Eigenschaft, wodurch es eine wirksame Operation ⊙ an verschlüsselten Texten C = HES.Encepk(m) gibt, die eine Nachricht m mit dem öffentlichen Schlüssel epk verschlüsselt, so dass, wenn C1 ∈ HES.Encepk(m1) und c2 ∈ HES.Encepk(m2), dann C1 ⊙ C2 ∈ HES.Encepk(m1·m2) für eine Gruppenoperation „·“ gilt. Der Schlüsselserver 103 sendet den resultierenden verschlüsselten Schlüssel [k] = HES.Encepk(k) im Schritt 81 an den Client-Computer 102. Im Schritt 82 verschlüsselt der Client-Computer 102 das erste Commitment c1 mit dem öffentlichen Schlüssel epk über das Verschlüsselungsschema HES, um ein verschlüsseltes Commitment [c1] = HES.Encepk(c1) zu erzeugen. In einer weiteren Ausführungsform kann der öffentliche Schlüssel epk durch den Schlüsselserver 103 allgemein veröffentlicht werden und allen Client-Computern 102 zur Verfügung stehen. Für erhöhte Sicherheit in bevorzugten Ausführungsformen wird das Schlüsselpaar (epk, esk) im Schritt 80 durch den Schlüsselserver jedoch neu erzeugt und der öffentliche Schlüssel epk wird im Schritt 81 an den Client-Computer 102 gesendet. Im Schritt 83 erzeugt der Client-Computer 102 dann die verblendete Funktion B des ersten Commitments c1, indem er eine Funktion von [k] und [c1] unter Verwendung einer Nonce N verblendet. Im Schritt 84 berechnet der Client-Computer 102 den zweiten Wissensbeweis Π2 , der die Kenntnis des ersten Commitments c1 sowohl in der verblendeten Funktion B als auch in dem im Schritt 66 von 4A gesendeten dritten Commitment c3 beweist. Der Client-Computer 102 sendet B und Π2 im Schritt 85 an den Schlüsselserver 103. Der Schlüsselserver 103 überprüft den zweiten Beweis Π2 in Bezug auf B und c3 im Schritt 86. Falls die Überprüfung am Entscheidungsblock 87 fehlschlägt, bricht der Schlüsselserver 103 im Schritt 88 ab und der Prozess endet. Wenn die Überprüfung von Π2 erfolgreich ist, entschlüsselt der Schlüsselserver 103 im Schritt 89 die verblendete Funktion B unter Verwendung des privaten (geheimen) Schlüssels esk, der dem öffentlichen Schlüssel epk entspricht, über einen Entschlüsselungsalgorithmus HES.Dec des Verschlüsselungsschemas HES, wodurch er einen entschlüsselten Wert V = HES.Decesk(B) erhält. Im Schritt 90 erzeugt der Schlüsselserver 103 den verblendeten Schlüssel K' aus dem entschlüsselten Wert V. Aufgrund der homomorphen Eigenschaft des Verschlüsselungsschemas weist der resultierende verblendete Schlüssel K' eine verblendete Funktion (verblendet mit der Nonce N) von c1 und dem über die verblendete Funktion B im Schritt 83 eingeführten Serverschlüssel k auf. Dies ist nachstehend für ein Beispiel ausführlicher veranschaulicht, in dem der verblendete Schlüssel K' eine verblendete pseudozufällige Funktion (PRF) von c1 und k aufweist. Der Schlüsselserver 103 sendet im Schritt 91 den verblendeten Schlüssel K' an den Client-Computer 102. Schließlich erhält der Client-Computer 102 im Schritt 92 den Client-Schlüssel K, indem er den verblendeten Schlüssel K' unter Verwendung der Nonce N entblendet. Der resultierende Client-Schlüssel wird somit wirksam als eine deterministische Funktion des Serverschlüssels k und des Commitments c1 (und folglich des Vektors x, dessen Kenntnis bewiesen wurde) abgeleitet, ohne dass der Schlüsselserver irgendwelche Informationen über den Vektor x oder den endgültigen Client-Schlüssel K in Erfahrung bringt.
  • Eine beispielhafte Umsetzung des vorstehenden Schemas und eine Einführung von ersten vorläufigen Konzepten werden nachstehend ausführlich beschrieben.
  • Beweissysteme (PoK):
  • PoK{(w) : statement(w)} bezeichnet ein generisches interaktives Zero-Knowledge-Beweisprotokoll der Kenntnis eines Zeugens w, so dass das statement(w) wahr ist. Ein PoK-System erfüllt Vollständigkeit, Zero-Knowledge und Simulation-Sound Extractability. Ein PoK-System kann aus den beiden Protokollen PK. Setup und PK. Provebestehen. Nach der Eingabe gibt ein Sicherheitsparameter1λ, PK. Setup(1λ) (parPK) aus. PK. Prove(parPK,·) ist ein interaktives Protokoll zwischen einem Beweiser und einem Verifizierer, dass statement(w) wahr ist. Die zusätzliche Eingabe, über die der Beweiser verfügt, ist der Zeuge w für die Aussage.
  • Für konkrete Realisierungen von PoKs (d.h. verallgemeinerte Schnorr-Signaturbeweise, siehe „On the portability of generalized Schnorr proofs“, Camenisch u.a., EUROCRYPT 2009, Band 5479 von LNCS, Seiten 425 bis 442, April 2009) wird eine Notation wie beispielsweise GSPK{(a, b, c) : y = gahb Λ ỹ = g̃ac} verwendet, wie in „Efficient group signature schemes for large groups“ (erweiterter Auszug), Camenisch & Stadler, CRYPTO‘97, Band 1294 von LNCS, Seiten 410 bis 424, August 1997, beschrieben ist.
  • Commitment-Schema (CS):
  • Ein CS mit einem Pedersen-Commitment kann instanziiert werden, das Korrektheit, versteckende und bindende Eigenschaften erfüllt. Ferner sind Pedersen-Commitments homomorph. Das Commitment-Schema kann in einer Gruppe zusammengesetzter Ordnung instanziiert werden, damit es mit den anderen Basiselementen, die verwendet werden, kompatibel ist.
  • CS. Setup(1λ): Der Konfigurationsalgorithmus wählt zwei λ bitsichere Primzahlen p, q aus, so dass gcd(p-1, q-1, 7) = 1, setzt N = pq und setzt den Nachrichtenraum und den Zufälligkeitsraum jeweils als: M = N * ,
    Figure DE112018001285T5_0001
    Figure DE112018001285T5_0002
    Dann wählt der Algorithmus eine Primzahl ρ, so dass ρ = 2kN + 1, wobei k eine kleine Primzahl ist. Es sei G = 〈G〉 = 〈H〉 eine Teilgruppe der Ordnung N der Gruppe ρ * ,
    Figure DE112018001285T5_0003
    wobei G und H zwei Zufallsgeneratoren von G sind, so dass logHG unbekannt ist. Es sei angemerkt, dass G eine zyklische Teilgruppe von ρ *
    Figure DE112018001285T5_0004
    der Ordnung N ist und alle Operationen mod ρ stattfinden (d.h., reduziertes mod N in dem Exponenten). Schließlich gibt der Algorithmus öffentliche Parameter par := (ρ, N, G, G, H, ℳ, ℜ) aus.
  • CS. Commit(par, m, r) aus: Berechne com ← GmHr mod ρ. Gib (com, open = r) aus.
  • CS. Verify(par,com,m,open): Gib 1 aus, wenn com ← GmHopen mod ρ, andernfalls 0.
  • Pseudozufällige Funktion (PRF, pseudorandom function):
  • Ein PRF-Schema kann verwendet werden, wie in „Efficient oblivious pseudorandom function with applications to adaptive OT and secure computation of set intersection“, Jarecki & Liu, TCC 2009, Band 5444 von LNCS, Seiten 577 bis 594, März 2009, und „Déjà Q: Using dual systems to revisit q-type assumptions“, Chase & Meiklejohn, EURO-CRYPT 2014, Band 8441 von LNCS, Seiten 622 bis 639, Mai 2014 beschrieben, wobei es sich um eine Variante des PRF-Schemas von Dodis-Yampolskiy („A verifiable random function with short proofs and keys“, PKC 2005, Band 3386 von LNCS, Seiten 416 bis 431, Januar 2005) handelt, die auf der unvorhersagbaren Funktion von Boneh-Boyen („Short signatures without random oracles“, EUROCRYPT 2004, Band 3027 von LNCS, Seiten 56 bis 73, Mai 2004) beruht, welche auf einer Gruppe zusammengesetzter Ordnung anstatt auf einer Gruppe mit Primzahlordnung instanziiert wird. Diese PRF wurde für eine Domäne beliebiger Größe, die allein auf einem Verstecken von Teilgruppen beruht, als sicher bewiesen. Der Beweis für die ursprüngliche PRF, die mit Gruppen mit Primzahlordnung instanziiert wird, lässt nur eine Domäne zu, die im Sicherheitsparameter von polynomialer Größe ist. In dieser Ausführungsform eine Domäne beliebiger Größe, um einen Offline-Brute-Force-Angriff durch einen Honest-butcurious-Schlüsselserver zu unterbinden. Siehe die nachstehende PRF-Definition.
  • PRF. Setup(1λ): Nach der Eingabe des Sicherheitsparameters λ wählt der Konfigurationsalgorithmus zwei λ bitsichere Primzahlen p, q aus und setzt N = pq, dann erzeugt er Gruppen ( N , G ( G 1 , G 2 ) ) G ( 1 λ ) ,
    Figure DE112018001285T5_0005
    , wobei G 1 , G 2
    Figure DE112018001285T5_0006
    Teilgruppen von G
    Figure DE112018001285T5_0007
    sind. In einer Ausführungsform können Kandidaten für die Gruppe G
    Figure DE112018001285T5_0008
    Gruppen von elliptischen Kurven zusammengesetzter Ordnung ohne wirksame Paarungen oder die Zielgruppe einer bilinearen Gruppe zusammengesetzter Ordnung sein. Schließlich wählt der Konfigurationsalgorithmus g G  und setzt D = K N * ,  R G ,
    Figure DE112018001285T5_0009
    und gibt par = (N, G
    Figure DE112018001285T5_0010
    g, D, K, R) aus.
  • PRF. KeyGen(1λ,par): Nach der Eingabe des Sicherheitsparameters und der öffentlichen Parameter λ, par wählt der Schlüsselerzeugungsalgorithmus k ← K und gibt k aus.
  • PRF. Evaluate(par, k, m): Nach der Eingabe der öffentlichen Parameter par, des Schlüssels k ∈ K und der Eingabe m E D macht der Bewertungsalgorithmus Folgendes: Wenn gcd((k + m), N) ≠ 1, gib ┴ aus (wobei ┴ ein Fehlersymbol bezeichnet), gib andernfalls g 1 ( k + m ) mod  N R
    Figure DE112018001285T5_0011
    aus.
  • Homomorphes Verschlüsselungsschema (HES, Homomorphic Encryption Scheme):
  • Ein Projective-Paillier-Verschlüsselungsschema wird in „Efficient constructions of composable commitments and zero-knowledge proofs", Dodis u.a., CRYPTO 2008, Band 5157 von LNCS, Seiten 515 bis 535, August 2008, und „Practical verifiable encryption and decryption of discrete logarithms", Camenisch & Shoup, CRYPTO 2003, Band 2729 von LNCS, Seiten 126 bis 144, August 2003, vorgeschlagen. Bei diesem Schema werden die homomorphen Eigenschaften der Paillier-Verschlüsselung beibehalten, es hat aber einen dichten Satz von öffentlichen Schlüsseln.
  • HES. Setup(1λ): Nach der Eingabe des Sicherheitsparameters λ wählt der Konfigurationsalgorithmus zwei λ bitsichere Primzahlen p, q und setzt N = pq. (Ein solches N kann verteilt erzeugt werden, wie in „Efficient computation modulo a shared secret with application to the generation of shared safe-prime products", Algesheimer u.a.., CRYPTO 2002, Band 2442 von LNCS, Seiten 417 bis 432, August 2002, beschrieben ist). Dann erzeugt er ein zufälliges Element g ( N 2 ) 2 N  und setzt h : = ( 1 + N  mod  N 2 ) N 2 * ,
    Figure DE112018001285T5_0012
    einem speziellen Element der Ordnung N. Schließlich gibt der Algorithmus par := (N, g, h) aus.
  • HES. KeyGen(par): Nach der Eingabe der öffentlichen Parameter par wählt der Schlüsselerzeugungsalgorithmus ein zufälliges t ∈ [N/4] und berechnet epk ← gt mod N2. Schließlich gibt der Algorithmus (epk, esk := t). aus.
  • HES. Enc(epk, m): Nach der Eingabe des öffentlichen Schlüssels epk und der Nachricht m wählt der Verschlüsselungsalgorithmus ein zufälliges r ∈ [N/4] und berechnet u←gr mod N2; v ← epkrhm mod N2. Schließlich gibt der Algorithmus den verschlüsselten Text et: = (u, v) aus. In einigen Ausführungsformen wird [m] im Sinne der Verschlüsselung von m verwendet.
  • HES. Dec(esk, ct): Nach der Eingabe des geheimen Schlüssels esk und des verschlüsselten Texts ct berechnet der Entschlüsselungsalgorithmus m' ← v/uesk mod N2. Wenn m' die Form (1 + Nm mod N2) bei einigen n ∈[N] hat, gib m aus. Gib andernfalls 1 aus.
  • Kollisionsresistente Hash-Funktion (CRHF, Collision Resistant Hash Function):
  • Eine Familie von Funktionen ℌ ist kollisionsresistent, wenn kein effizienter Algorithmus, nach der Eingabe eines zufälligen H ∈ ℌ, zwei verschiedene Eingaben x ≠ y finden kann, so dass H(x) = H(y) (außer mit vernachlässigbarer Wahrscheinlichkeit in dem Sicherheitsparameter). Die CRHF kann so ausgeführt werden, wie in „Bivariate polynomials modulo composites and their applications“, Boneh & Corrigan-Gibbs, ASIACRYPT 2014, Teil I, Band 8873 von LNCS, Seiten 42 bis 62, Dezember 2014, beschrieben ist.
  • Merkle Hash Tree (MHT):
  • Ein Merkle-Hash-Baum (siehe „A certified digital signature“, Merkle, CRYPTO‘89, Band 435 von LNCS, Seiten 218 bis 238, August 1990) stellt einem Vektor ein kurzes Commitment bereit, so dass es später möglich ist, einzelne Werte in dem Vektor zu öffnen und zu überprüfen, ohne den ganzen Vektor zu öffnen. Bei einem gegebenen Vektor x = (x1, ..., xn) wird darauf ein MHT wie folgt erstellt: Gruppiere die Werte paarweise und verwende dann eine CRHF, um jedes Paar zu hashen. Die Hash-Werte werden dann wieder paarweise gruppiert und jedes Paar wird weiter gehasht, und dieser Prozess wird wiederholt, bis lediglich ein einziger Hashwert übrig bleibt. Dies führt zu einem Binärbaum, wobei die Blätter den Blöcken des Vektors entsprechen und die Wurzel dem letzten verbleibenden Hashwert entspricht. Die Wurzel dient als das Commitment auf x und später können einzelne Positionen geöffnet werden, so dass das Öffnen im Hinblick auf die Wurzel überprüft werden kann.
  • Vektor-Commitments (VC):
  • Vektor-Commitments (siehe „Vector commitments and their applications“, Catalano & Fiore, PKC 2013, Band 7778 von LNCS, Seiten 55 bis 72, 2013) erlauben es einem, sich auf einen Vektor von Nachrichten so festzulegen, dass es später möglich ist, das Commitment auf eine der Nachrichten zu öffnen (d.h., einen Zeugen bereitzustellen, der beweist, dass xi tatsächlich der i-te Wert in dem festgelegten Vektor x ist). Die Größe des Commitments und der Öffnung sind von der Länge des Vektors unabhängig. In dieser Ausführungsform wird das Effizienzerfordernis durch VC geändert. Es sei n zum Beispiel die Länge des festgelegten Vektors. Folglich kann es notwendig sein, dass die Größe des Commitments unabhängig von n ist, doch sollte die Größe der Öffnung kleiner als n sein, d.h. o(n). Ein VC kann entweder nicht versteckend (NHVC) oder versteckend (HVC) sein. Bei einem NHVC ist die Sicherheitsanforderung bindend. Anders ausgedrückt, diese Eigenschaft macht es erforderlich, dass ein Angreifer, sobald er mit einem VC erscheint, nicht in der Lage sein kann, zwei verschiedene Werte in Bezug auf dieselbe Position für dieses VC zu beweisen. Bei einem HVC ist das Verstecken eine zusätzliche Sicherheitsanforderung. Anders ausgedrückt, diese Anforderung besagt, dass das VC den festgelegten Vektor verbergen sollte (d.h. ein Angreifer sollte nicht in der Lage sein, zu unterscheiden, ob ein VC für einen Vektor x oder einen Vektor y erstellt wurde, wobei x ≠ y). Das Verstecken kann wie bei einem Standard-Commitment definiert werden.
  • Die meisten Eingaben in die Algorithmen sind bei einem HVC und einem NHVC gleich. Die Eingaben, die gegebenenfalls ausschließlich für ein HVC benötigt werden, werden nachstehend ausführlicher beschrieben.
  • VC. Setup(1λ, n): Erzeuge nach der Eingabe des Sicherheitsparameters 1λ und einer oberen Grenze n für die Größe des Vektors die Parameter des Commitment-Schemas par, zu denen eine Beschreibung des Nachrichtenraums ℳ und eine Beschreibung des Zufälligkeitsraums ℜ gehört.
  • VC. Commit(par, x): Nach der Eingabe der öffentlichen Parameter par und eines Vektors x ∈ ℳl (l ≤ n) gibt der Algorithmus ein Commitment com auf x aus.
  • VC. Prove(par, i, x): Nach der Eingabe der öffentlichen Parameter par, eines Positionsindex i und eines Vektors x erzeugt der Algorithmus einen Zeugen w für xi und gibt (w, xi) aus.
  • VC. Verify(par, i, com, w, x): Nach der Eingabe der öffentlichen Parameter par, eines Positionsindex i, eines Commitments com und eines Zeugen w für x gibt der Algorithmus 1 aus, wenn w ein gültiger Zeuge dafür ist, dass sich x an der Position i befindet, und andernfalls 0.
  • Nachstehend werden zwei Algorithmen definiert (VC. RandCommitment, VC. RandWitness). VC. RandCommitment erlaubt gegebenenfalls die Aktualisierung eines NHVC auf ein HVC und VC. RandWitness erlaubt gegebenenfalls die Aktualisierung eines NHVC-Zeugen auf einen HVC-Zeugen.
  • VC.RandCommitment(par, com, r): Nach der Eingabe der öffentlichen Parameter par gibt ein nicht versteckendes Commitment com und r ∈ ℜ ein HVC com' aus.
  • VC. RandWitness (par, com, i, r, w): Nach der Eingabe der öffentlichen Parameter par, eines NHVC-Zeugen w gibt ein nicht versteckendes Commitment com und r ∈ ℜ einen HVC-Zeugen w' aus.
  • Protokoll:
  • Das Protokoll ist in dem vertrauenswürdigen CRS-(Common Reference String-)Modell ausgeführt, so dass jede Partei, der Schlüsselserver 103 (KS) und der Client-Computer 102 (Ci), die öffentlichen Parameter des Schemas von einer vertrauenswürdigen Partei empfängt. Der Schlüsselserver 103 wählt zusätzlich einen Schlüssel für eine PRF.
  • Das Protokoll hat zwei wichtige Bausteine, nämlich VC und eine PRF: In dieser Ausführungsform sind der Client-Schlüssel, den der KS für die Eingabedatei von Ci erzeugt:
    • (1) Der Schlüssel sollte zufällig und daher von einem Angreifer schwer zu erraten sein, aber
    • (2) trotz seiner Zustandslosigkeit sollte er für eine Datei eindeutig sein (d.h., der KS sollte in der Lage sein, denselben Schlüssel für dieselbe Datei zu erzeugen) und (3) der Schlüssel sollte nicht öffentlich berechenbar sein (d.h., nur der KS, der im Besitz geheimer Informationen ist, sollte in der Lage sein, einen Schlüssel für eine Datei zu berechnen). Alle diese Eigenschaften werden hier bereitgestellt, indem man aus dem Client-Schlüssel eine PRF-Bewertung eines kurzen, nicht versteckenden und bindenden Commitments auf den Vektor x macht. Dieses kurze Commitment wird mit s bezeichnet.
  • Die PRF-Bewertung kann blind vorgenommen werden, da der KS keine Informationen über die Eingabe von Ci in Erfahrung bringen sollte. In dieser Ausführungsform das PRF-Blindbewertungsprotokoll zwischen KS (der über k verfügt) und Ci (der über s verfügt) für die vorstehend beschriebene PRF. Darüber hinaus kann dieser Teil des Protokolls das vorstehend beschriebene homomorphe Verschlüsselungsschema HES nutzen. In einer einzelnen Ausführungsform kann Ci böswillig sein. Folglich kann es vorteilhaft sein, sicherzustellen, dass sich Ci auf seine Eingabe s festlegt und die Kenntnis seiner Öffnung (PoK Π2) beweist, bevor sich der KS mit der Berechnung der PRF beschäftigt.
  • Die Eigenschaften von VC werden genutzt, um dem Client zu erlauben, seine Kenntnis des Urbilds von s wirksam zu beweisen. Ein VC lässt Ci seine Kenntnis einiger zufälliger Positionen des Urbilds beweisen. In dieser Ausführungsform wird von dieser Eigenschaft Gebrauch gemacht, indem man dem KS erlaubt, Ci herauszufordern, seine Kenntnis von t zufälligen Positionen seiner Eingabe zu beweisen, wobei t sehr viel weniger als die Länge n von x sein kann. Eine Entscheidung über den Wert von t hängt von dem Korrektheitsfehler ab, der bei einem bestimmten Protokoll akzeptiert werden kann.
  • Konstruktion:
  • Setup: Nach der Eingabe einer Setup-Anforderung Setup und einer Setup-ID sid für den speziellen Aufruf von Setup, führt der KS aus:
    1. 1. Empfange (par) von der vertrauenswürdigen Quelle, wobei par = (parPRF, parVC, parCS, parPK, parHES ) d.h., der par für das vorstehende PRF. Setup, VC. Setup, CS. Setup, PK. Setup und HES. Setup. (Bei diesen ausgewählten Schemata funktionieren diese alle in derselben Umgebung mit gemeinsam genutzten Parametern. Wenn sich das verwendete Basiselement aus dem Zusammenhang ergibt, kann man sich zur Vereinfachung der Notation auf par und nicht auf die spezifischen Parameter dieses Basiselements beziehen.)
    2. 2. Führe k ←PRF. KeyGen(1λ, par) aus und speichere k.
    3. 3. Gib (Setup, sid) aus.
  • Bewerte: Nach der Eingabe von (Evaluate, sid, qid, x = (x1, ..., xn) ∈ par. ℳn) an Ci (wobei qid eine Abfragekennung für den speziellen Aufruf von ‚Bewerte‘ ist), wird das folgende Protokoll zwischen Ci und KS ausgeführt.
    1. 1. Empfange (par) = (parPRF, parVC, parCS, parPK, parHES) von der vertrauenswürdigen Quelle.
    2. 2. Ci wählt ein zufälliges r1 ← par.ℜ und berechnet s ← VC. Commit(par, x) und s' ← VC.RandCommitment(par,s,r1). Ferner macht Ci Folgendes:
      1. (a) Wähle ein zufälliges r2 ← par.ℜ
      2. (b) Berechne com ← CS.Commit(par,s,r2).
      3. (c) Dann erzeugt Ci den folgenden Wissensbeweis Πs1 := PoK{(s,r2) : com = CS. Commit(par,s,r2)}
      4. (d) Ferner berechnet Ci den folgenden Wissensbeweis s 2 : = PoK { ( s , r 1 , r 2 ) : com = CS .Commit ( par , s , r 2 ) s ' = VC .RandCommitment ( par , s , r 1 ) }
        Figure DE112018001285T5_0013
        und sendet (s', com, Πs1, Πs2 ) an KS.
    3. 3. KS überprüft Πs1 und Πs2. Wenn die Überprüfung erfolgreich ist, schaltet KS zum nächsten Schritt.
    4. 4. KS wählt zufällig eine Teilmenge I = {j1, ..., jt} von Indizes [1, n] und sendet I an c1.
    5. 5. Für jeden herausgeforderten Index j ∈ I berechnet Ci ( w j , x i ) VC .Prove ( par , j , x )
      Figure DE112018001285T5_0014
      ( w ' j ) VC .RandWitness ( par , s , j , r 1 , w j )
      Figure DE112018001285T5_0015
      und erzeugt den folgenden Wissensbeweis π j = PoK { ( w ' j , x j ) : 1 = VC .Verify ( par , j , s ' , w ' j , x j ) }
      Figure DE112018001285T5_0016
      Es sei Πs3 = {πj |j ∈I}. Ci sendet Πs3 zurück an KS.
    6. 6. KS überprüft Πs3 und wenn die Überprüfung erfolgreich ist, schaltet KS zum nächsten Schritt.
    7. 7. KS wählt (epk, esk) ← HES. KeyGen(par), berechnet [k] ← HES. Enc(epk, k) und sendet (epk, [k]) an Ci.
    8. 8. Dann wählt Cir3 ← par.ℜ und berechnet ct ( [ k ] [ s ] ) r 3 ,
      Figure DE112018001285T5_0017
      wobei [s] ← HES. Enc(epk, s)
    9. 9. Als Nächstes erzeugt Ci den folgenden Wissensbeweis 2 : = P o K { ( s , r 2 , r 3 ) : com = CS .Commit ( par , s , r 2 ) ct ( [ k ] [ s ] ) r 3 }
      Figure DE112018001285T5_0018
      Ci sendet (ct, Π2) an KS.
    10. 10. KS überprüft Π2 und wenn die Überprüfung erfolgreich ist, fährt KS fort.
    11. 11. KS berechnet V ← HES. Dec(esk, ct)
    12. 12. KS berechnet dann K ' g 1 V
      Figure DE112018001285T5_0019
      und sendet K' an Ci.
    13. 13. Wenn K' = ┴, gib ┴ aus. Berechne andernfalls K = K'(r3 mod par.N) und gib K aus. (Die Zufälligkeit r3 hebt sich hier mit algebraischen PRFs mit entsprechenden Co-Domänen auf, wie bei dieser Konstruktion gewählt).
  • In der obigen Konstruktion entsprechen die Commitments s, s' und com jeweils dem ersten, zweiten und dritten Commitment c1, c2 und c1 in den 4A und 4B, und der zufällige Wert r3 entspricht der Nonce N in diesen Figuren. Der zweite Teilbeweis Πs2 beweist, dass c2 und c3 aus einem gemeinsamen Wert, nämlich c1, berechnet werden. Das homomorphe Verschlüsselungsschema HES hier ist ein additiv homomorphes Verschlüsselungsschema, wobei, wenn C1 = HES.Encepk(m1) und c2 = HES.Encepk(m2), dann C1 ⊙ C2 = HES.Encepk(m1+m2), und (HES.Encepk(m))r = HES.Encepk(r · m), wobei ⊙ hier einer Multiplikation entspricht. Daher im Schritt 8: ct ( [ k ] [ s ] ) r 3 = HES .Enc epk ( r 3 ( k + s ) )
    Figure DE112018001285T5_0020
    wobei, im Schritt 11, V = r3(k + s). Im Schritt 12, K ' = g 1 r 3 ( k + s ) ,
    Figure DE112018001285T5_0021
    wobei K = K ' r 3 = g 1 ( k + s )
    Figure DE112018001285T5_0022
    im Schritt 13, was der bereits definierten PRF entspricht. Der Schlüsselserver 103 bringt nichts über den Vektor x oder den endgültigen Client-Schlüssel K in Erfahrung und der Client erlangt keine Informationen über den Serverschlüssel k.
  • Der Parameter t ist ein Optimierungsparameter, der zugunsten der Effizienz auf Übertragungsbandbreite verzichtet. Dieser Parameter kann wie gewünscht gesetzt werden, um einen gewünschten Vertrauensgrad anzugeben, dass dem Beweiser (d.h. dem Client) die ganze Datei gehört. Um den Korrektheitsfehler zu minimieren, kann eine Client-Datei F zuerst löschcodiert und der Vektor x definiert werden, indem die löschcodierte Datei in n Blöcke aufgeteilt wird. Wenn der Löschcode widerstandsfähig gegen das Löschen von bis zu einem Teil der Bits ist und ε die gewünschte Korrektheitsgrenze ist, kann t als die kleinste ganze Zahl gewählt werden, so dass (1 - α)t < ε.
  • Hier zwei Beispiele für Vektor-Commitment-Schemata zur Verwendung in Ausführungsformen, die auf der vorstehenden Konstruktion beruhen:
  • Auf dem Merkle-Baum beruhendes Vektor-Commitment:
  • Dieses VC-Schema beruht auf der Akkumulatorkonstruktion, vorgestellt in „Bivariate polynomials modulo composites and their applications“ Boneh u.a., ASIACRYPT 2014, Teil I, Band 8873 von LNCS, Seiten 42 bis 62, Dezember 2014. In einer Ausführungsform kann dieselbe auf dem Merkle Hash Tree (MHT) beruhende Konstruktion verwendet werden, doch muss die Indexposition des Blattes gegebenenfalls nicht versteckt werden, was eine Effizienzverbesserung ergibt.
  • VC. Setup(1λ,n): Nach der Eingabe eines Sicherheitsparameters 1λ und einer oberen Grenze n ruft der Algorithmus CS. Setup auf (1λ). Lass CS. Setup(1λ) (ρ,N,G,G,H,ℳ,ℜ) zurückgeben. Dieser Algorithmus fügt das Tupel mit der kollisionsresistenten Hashfunktion H: ( ℤN)2 → ℤN an, die definiert ist als: H(x, y) = x7 + 3y7 mod N und gibt es als par zurück.
  • VC. Commit(par,x): Nach der Eingabe der öffentlichen Parameter par und der Eingabe x = (x1, ..., xn) erstellt der Algorithmus, unter Verwendung von H(·,·), rekursiv einen Merkle Hash Tree auf x. (Wenn n keine Potenz von zwei ist, füge „Dummy“-Elemente in x ein, bis n eine perfekte Potenz von 2 ist.) Es sei MR die Wurzel des MHT. Der Algorithmus gibt das Commitment com = MR aus.
  • VC. Prove(par, i, x): Nach der Eingabe der öffentlichen Parameter par, des Positionsindex i und der Eingabe x = (x1;...,xn) macht der Algorithmus Folgendes. Bezeichnen wir die Knotenwerte entlang des Pfades von dem Wurzelknoten mit dem Wert MR bis zum Blattknoten, mit dem Wert x[i], in dem MHT als P = ( p 0 ,   p 1 ,   ,   p d ) .
    Figure DE112018001285T5_0023
    Beachte, dass p0 = MR und pd = x[i]. Es sei P S = ( p ' 1 , , p ' d )
    Figure DE112018001285T5_0024
    der Geschwisterpfad von P
    Figure DE112018001285T5_0025
    (beachte, dass p0 kein Geschwister hat). Dann berechnet der Algorithmus P S
    Figure DE112018001285T5_0026
    und gibt den Zeugen ( w = P S , x i )
    Figure DE112018001285T5_0027
    aus.
  • VC. Verify(par, i, com, w, x): Nach der Eingabe der öffentlichen Parameter par, des Positionsindex i, des Commitments com = MR und des Zeugen (w, x) parst der Algorithmus w als P S = ( p ' 1 , , p ' d )
    Figure DE112018001285T5_0028
    und setzt pd = x. Für jedes j = d, ..., 1 berechnet der Algorithmus rekursiv die internen Knoten, indem er das linke und das rechte Kind hasht. Es sei p0 = H(p1, p'1) (wenn p1 das linke Geschwister ist, andernfalls H(p'1, p1)). Dieser Algorithmus prüft, ob MR = p0. Er gibt 1 aus, wenn die Gleichheit gilt, andernfalls 0. Bei einer NHVC-Realisierung muss w als ( P S = ( p ' 1 , , p ' d ) ,
    Figure DE112018001285T5_0029
    comMR, openMR) geparst werden. Die restlichen Schritte bleiben gleich. Anstatt zu prüfen, ob MR = p0, prüft der Algorithmus im letzten Schritt, ob CS. Verify(par, comMR, MR, openMR) = 1. Der Algorithmus gibt 1 aus, wenn die Gleichheit gilt, andernfalls 0.
  • VC.RandCommitment(par, com, r): Nach der Eingabe der öffentlichen Parameter par, des nicht versteckenden Vektor-Commitments com = MR und der Zufälligkeit r ∈ ℜ ruft der Algorithmus CS. Commit(par, MR, r) auf. Lass CS. Commit(par, MR, r) (comMR, openMR) zurückgeben. Gib com' = comMR. aus
  • VC. RandWitness (par, com, i, r, w): Nach der Eingabe der öffentlichen Parameter par, des nicht versteckenden Vektor-Commitments com = MR, der Position i, der Zufälligkeit r ∈ ℜ und des teilweisen Zeugen w parst der Algorithmus w als P S = ( p ' 1 , , p ' d ) ,
    Figure DE112018001285T5_0030
    fügt w mit (comMR, openMR)an, wobei (comMR, openMR) = CS. Commit(par, MR, r), und gibt w ' = ( P S ,  com MR ,  open MR )
    Figure DE112018001285T5_0031
    aus.
  • Wissensbeweise für ein auf dem Merkle-Baum beruhendes Vektor-Commitment:
  • In dieser Ausführungsform müssen gegebenenfalls drei zugehörige PoKs wirksam implementiert werden. Die vollständigen Implementierungen aller PoKs werden nachstehend ausführlicher beschrieben. Hierin beschrieben sind Beweise, die bei dieser VC-Instanziierung vermieden werden können und die einer größeren Sorgfalt bedürfen. Man beachte, dass VC. RandCommitment dasselbe wie der CS. Commit-Algorithmus ist, der ein Pedersen-Commitment auf das NHVC, MR berechnet. Folglich ist Πs2 lediglich ein Standardbeweis der Gleichheit. Tatsächlich kann die folgende Optimierung vorgenommen werden: Verwende s' als com im gesamten Protokoll und überspringe Πs2. Für die Beweise πj: PoK { ( w ' , x ) : 1 = HVC .Verify ( par , j , com , w ' , x ) } ,
    Figure DE112018001285T5_0032
    ist das Beweisen dieser Beziehungen komplexer und macht die folgenden Schritte erforderlich.
    1. 1. Der Algorithmus parst w' als ( P S = ( p ' 1 , , p ' d ) ,
      Figure DE112018001285T5_0033
      comMR, openMR).
    2. 2. Die Knotenwerte entlang des Pfades von dem Wurzelknoten mit dem Wert MR werden, bis zum Blattknoten, mit dem Wert xi in dem MHT als P = ( p 0 , p 1 , , p d )
      Figure DE112018001285T5_0034
      angegeben. Der Algorithmus stellt diesen Pfad rekursiv von unten nach oben wieder her, wobei er H(·,·) auf P S
      Figure DE112018001285T5_0035
      verwendet. Die Indexposition j bestimmt eindeutig das linke und das rechte Kind in jedem Schritt.
    3. 3. Dann legt sich der Algorithmus auf jeden Wert pj in diesem Pfad und auf die Werte des linken und des rechten Kindes von pj in dem MHT fest, d.h., wenn lj das linke Kind und rj das rechte Kind ist, berechnet der Algorithmus ( P j , s j ) CS .Commit ( par , p j , s j ) ,
      Figure DE112018001285T5_0036
      ( L j , s ' j ) CS .Commit ( par , l j , s ' j ) ,
      Figure DE112018001285T5_0037
      ( R j , s ' ' j ) CS . Commit ( par r j , s ' ' j ) .
      Figure DE112018001285T5_0038
    4. 4. Dann erzeugt der Algorithmus einen Beweis, dass P0 tatsächlich ein Commitment auf die Wurzel ist (das open in der Ausgabe wird der Klarheit halber von CS. Commit ignoriert): PoK MR { ( M ,R , r , s ) : com = CS . Commit ( par , MR , r ) P 0 = CS . Commit ( par , MR , s ) }
      Figure DE112018001285T5_0039
    5. 5. Als Nächstes, für j = 0, ..., d - 1, beweist der folgende Wissensbeweis, dass jedes Triplet (Pj, Lj, Rj) wohlgeformt ist. Man beachte, dass Lj (oder Rj) als Pj+1 verwendet wird. PoK j { ( l , r , s , s ' , s ' ' ) : P j = CS . Commit ( par l 7 + 3 r 7 , s )   L j = CS . Commit ( par l , s ' )   R j = CS . Commit ( par r , s ' ' ) }
      Figure DE112018001285T5_0040
      Dieser Beweis erfordert die folgenden Teilschritte.
      1. (a) Dieser Beweis verwendet die homomorphe Eigenschaft des Pedersen-Commitment-Schemas und ein Teilprotokoll für PoKmult zur Multiplikation von zwei Werten. Dieses Protokoll wird unter Verwendung von Standardtechniken instanziiert und durch PoKmult wie folgt kurz dargestellt: PoK mult { ( x , y , z , s x , s y , s z ) : C x = CS . Commit ( par x , s x )   C y = CS . Commit ( par y , s y )   C z = CS . Commit ( par c z , s z )   z = x y }
        Figure DE112018001285T5_0041
      2. (b) Der Beweiser berechnet Cl, Cl 2 , Cl 4 , Cl 6 , Cl 7 und Cr, Cr 2 , Cr 4 , Cr 6 , Cr 7 .
      3. (c) Der Beweiser ruft PoKmult auf jedem der folgenden Triplets auf, um die Korrektheit der Commitments zu beweisen: (Cl, Cl, Cl 2 ), (Cl 2 , Cl 2 , Cl 4 ), (Cl 2 , Cl 4 , Cl 6 ), (Cl, Cl 6 , Cl 7 , (Cr, Cr, Cr 2 ), (Cr 2 , Cr 2 , Cr 4 ), (Cr, Cr 4 , Cr 6 ), (Cr, Cr 6 , Cr 7 ).
      4. (d) Der Verifizierer kann Cl 7+3r 7 unter Verwendung von Cl 7 und Cr 7 als Cl 7+3r 7 ← Cl 7 · (Cr 7 )3 berechnen (mittels des Homomorphismus).
      5. (e) Der Beweiser sendet all diese Commitments und PoKmult's an den Verifizierer.
    6. 6. Es sei d = logn die Tiefe des MHT. Der komplette Beweis besteht aus dem Satz von Commitments { ( P j , L j , R j ) } j d = 0,
      Figure DE112018001285T5_0042
      den 10d Zusatzcommitments in dem vorhergehenden Teilschritt und 8d +1 PoK's. Die Gesamtgröße des Beweises ist O(d) = O(logn). Man beachte, dass die 10 Commitments und 8 PoKmult's je POKj in die Notation PoKj aufgenommen werden.
  • RSA-basiertes Vektor-Commitment:
  • Dieses Schema beruht auf dem in „Vector commitments and their applications", Catalano u.a., PKC 2013, Band 7778 von LNCS, Seiten 55 bis 72, 2013, vorgestellten RSA-basierten, nicht versteckenden VC-Schema mit zwei wesentlichen Änderungen: (1) Das Commitment-Schema wird so konfiguriert, dass es versteckt, und (2) ein PoK wird hinzugefügt, um den i-ten Index zu beweisen, anstatt den Wert und den Zeugen direkt bereitzustellen.
  • VC. Setup(1λ,n): Nach der Eingabe des Sicherheitsparameters 1λ und einer oberen Grenze n macht der Algorithmus Folgendes:
    1. 1. Wähle zwei λ bitsichere Primzahlen p = 2p' + 1 und q = 2q' + 1 q und setze N = pq.
    2. 2. Wähle l = poly(λ) als die obere Grenze bei der Länge der Nachrichten.
    3. 3. Wähle n, l + 1618 Bit-Primzahlen e1, ..., en, die ϕ(N) nicht teilen.
    4. 4. Wähle ein zufälliges b N * .
      Figure DE112018001285T5_0043
    5. 5. Für j = 1 bis n berechne K j b i = 1, i j n e i
      Figure DE112018001285T5_0044
      mod N.
    6. 6. Setze K 0 b i = 1 n e i
      Figure DE112018001285T5_0045
      mod N.
    7. 7. Gib die Parameter par : = aus  ( N , b ,e 1 , , e n ,K 0 , K n ,   M = { 0,1 } l , R = N * )
      Figure DE112018001285T5_0046
  • VC. Commit(par,x): Nach der Eingabe der öffentlichen Parameter par und der Eingabe x = (x1, ..., xn) berechnet der Algorithmus com ← K 1 x 1 K n x n
    Figure DE112018001285T5_0047
    mod N und gibt das Commitment com aus.
  • VC. Prove(par, i, x): Nach der Eingabe der öffentlichen Parameter par, einer Position i und x = (xi, ..., xn) berechnet der Algorithmus w ( j = 1, j i N K j x [ j ] ) 1 e i
    Figure DE112018001285T5_0048
    mod N und gibt den Zeugen (w, xi) aus.
  • VC. Verify(par, i, com, w, x): Nach der Eingabe der öffentlichen Parameter par, der Position i, eines Commitments com und des Zeugen (w, x) gibt der Algorithmus 1 aus, wenn K i x w e i
    Figure DE112018001285T5_0049
    mod N = com, und andernfalls x ∈ ℳ, 0. Der Verifizierungsalgorithmus ist sowohl bei HVC als auch NHVC gleich, außer dass der Algorithmus com' anstelle von com als Eingabe nimmt.
  • VC. RandCommitment (par, com, r): Nach der Eingabe der öffentlichen Parameter par, des nicht versteckenden Vektor-Commitments com und der Zufälligkeit r ∈ ℜ berechnet der Algorithmus com' com K 0 r
    Figure DE112018001285T5_0050
    mod N und gibt com' aus.
  • VC. RandWitness (par, com, i, r, w): Nach der Eingabe der öffentlichen Parameter par, des nicht versteckenden Vektor-Commitments com, der Position i, der Zufälligkeit r ∈ ℜ und des teilweisen Zeugen w berechnet der Algorithmus w ' w ( b j = 1, j i n e j ) r = w K 0 r e i
    Figure DE112018001285T5_0051
    mod N und gibt w' aus.
  • Das Folgende gibt die konkreten Ausführungen der vorstehend verwendeten PoK-Protokolle an. Das CRS enthält den öffentlichen Schlüssel der CPA-Version des Camenisch-Shoup-Verschlüsselungsschemas („Practical verifiable encryption and decryption of discrete logarithms“, auf das bereits Bezug genommen wurde). In dieser Ausführungsform wird der Modulus N in dem CRS abgerufen, wobei N ein Produkt aus zwei sicheren Primzahlen ist, das verteilt erzeugt werden kann. Es seien g' und y' zufällige Elemente des in dem CRS enthaltenen N 2 * .
    Figure DE112018001285T5_0052
    Setze g = g'2N,y = y'2N, und h = 1 + N mod N2. Zunächst werden Ausführungen der PoK's beschrieben, die bei den beiden vorstehenden VC-Instanziierungen gleich sind, und dann werden für jedes VC spezifische Ausführungen angegeben. Wie in der Technik hinlänglich bekannt ist, können alle PoK's wie gewünscht als interaktive oder nicht interaktive Beweise ausgeführt werden.
  • PoK's, die bei beiden VC-Schemata gleich sind:
  • s 1 : = PoK { ( s , r ) : com = CS . Commit ( par s , r ) }
    Figure DE112018001285T5_0053
  • Dies wird ausgeführt, indem zuerst
    Es = (gr 1 mod N2, hsyr 1 mod N2), Er = (gr 2 mod N2, hryr 2 mod N2)berechnet wird, wobei r1 und r2 zufällig aus [N/4] gezogen werden, diese Werte an den Verifizierer gesendet werden und dann der folgende Beweis mit dem Verifizierer ausgeführt wird: GSPK { ( s , r , r 1 , r 2 ) : com = G s H r E s = ( g r 1 , h s y r 1 ) E r = ( g r 2 , h r y r 2 ) }
    Figure DE112018001285T5_0054
    wobei mod ρ und mod N2 der Kürze halber weggelassen werden. 2 : = P o K { ( s , r 2 , r 3 ) : com = CS . Commit ( par s , r 2 ) ct ( [ k ] [ s ] ) r 3 }
    Figure DE112018001285T5_0055
    wird wie folgt ausgeführt. Es sei [k] = (e1, e2).. Der Beweiser berechnet zuerst Er = (gu r mod N2, hr 3 yu r mod N2), wobei ur zufällig aus [N/4] gezogen wird, sendet diese Werte an den Verifizierer und führt das folgende Beweisprotokoll mit dem Verifizierer aus: GSPK { ( s , r 2 , r 3 , w , r ) : com = G s H r 2 1 = com r 3 G w H r '
    Figure DE112018001285T5_0056
    Hier zeigt der Term 1 = com -r 3 GwHr', dass w = sr3 und folglich, dass ct = ([k] [s])r 3 , wobei B der Wert ist, mit dem der Beweiser die Verschlüsselung zufällig ausgewählt hat.
  • PoK's für das MHT-VC:
  • Diese Beweise führen Πs3 aus (Πs2 kann hier weggelassen werden, wie vorstehend erklärt wurde). PoK MR { ( MR , r , s ) : com = CSCommit ( par , MR , r ) P 0 = CSCommit ( par , MR , s ) }
    Figure DE112018001285T5_0057
    wird ausgeführt, indem zuerst
    EMR = (gr 1 mod N2, hMRyr 1 mod N2), Er = (gr 2 mod N2, hryr 2 mod N2) und Es = (gr 3 mod N2, hsyr 3 mod N2) berechnet wird, wobei r1, r2 und r3 zufällig aus [N/4] gezogen werden, diese Werte an den Verifizierer gesendet werden und dann das folgende Beweisprotokoll mit dem Verifizierer ausgeführt wird: GSPK { ( MR , r , s , r 1 , r 2 , r 3 ) : com = G MR H r P 0 = G MR H r E MR = ( g r 1 , h MR y r 1 ) E r = ( g r 2 , h r y r 2 ) E s = ( g r 3 , h s y r 3 ) ,
    Figure DE112018001285T5_0058
    wobei mod ρ und mod N2 der Kürze halber weggelassen werden. PoK mult { ( x , y , z , s x , s y , s z ) : C x = CSCommit ( par x , s x ) C y = CSCommit ( par c z , s z ) z = x y }
    Figure DE112018001285T5_0059
    wird ausgeführt, indem zuerst Ex = (gu 1 mod N2, hxyu 1 mod N2) und
    Ey = (gu 2 mod N2, hyyu 2 mod N2) berechnet wird, wobei r1 und r2 zufällig aus [N/4] gezogen werden, diese Werte an den Verifizierer gesendet werden und dann das folgende Beweisprotokoll mit dem Verifizierer ausgeführt wird: GSPK { ( x , y , z , s x , s y , s z , s ' , u 1 , u 2 ) : C x = G x H s x C y = G y H s y C z = G z H s z C z = C y z H s ' E x = ( g u 1 ,h x y u 1 ) E y = ( g u 21 ,h y y u 2 ) } .
    Figure DE112018001285T5_0060
  • In einer einzelnen Ausführungsform ist es gegebenenfalls nicht notwendig, den Zeugen z verifizierbar zu verschlüsseln, da dieser aus x und y berechnet werden kann. Ebenso können mehrere Verschlüsselungen weggelassen werden, wenn diese Beweise in dem größeren Beweis des Hashbaum-Pfads zusammengefasst werden.
  • PoKs für das RSA-VC:
  • s 2 : = P o K { ( s , r 1 , r 2 ) : com s = CS . Commit ( par s , r 2 ) s ' = VC .RandCommitment ( par s , r 1 ) }
    Figure DE112018001285T5_0061
    Diese Aussage beweist, dass s' eine zufällig ausgewählte Version der Vektor-Commitments ist, auf die sich wiederum coms festlegt. Anders ausgedrückt, dass s ' = s K 0 r 0
    Figure DE112018001285T5_0062
    für einen bestimmten Wert von r0 und für das in coms festgelegte s gilt. Diese Aussage kann durch das folgende Beweisprotokoll bewiesen werden GSPK 01 { ( r 1 , r ' 2 ) : G s ' = com s K 0 r 1 H r ' 2  mod  ρ } .
    Figure DE112018001285T5_0063
  • Hier nimmt r'2 die Zufälligkeit -r2 K0 r 1 auf, d.h. r'2 = -r2 K0 r 1 , doch ist es gegebenenfalls nicht notwendig, etwas über r'2 zu beweisen. Dieses Protokoll arbeitet mit binären Herausforderungen (Challenges), da darin eine „Double Discrete Logarithm“-Beziehung auftrat (somit Suffix 01 für GSPK01). π j = PoK { ( w , x ) : 1 = VC .Verify ( par ,com' , j , x , w ) }
    Figure DE112018001285T5_0064
  • Für diesen Beweis muss das CRS gegebenenfalls die Elemente z1, z2 und z3 aus N *
    Figure DE112018001285T5_0065
    der Ordnung p'q' enthalten, so dass dieser w verifizierbar EIGamal-verschlüsselt in Bezug auf z1 werden kann, sowie Bereichsbeweise für w in Bezug auf z2 und z3 erstellen. Somit berechnet der Beweiser zuerst E 1 = w z 1 r  mod  N ,  E 2 = w z 2 r  mod  N ,  E' = z 2 x z 3 r  mod  N  und E x = ( g u x mod  N 2 , h x y u x  mod  N 2 ) ,
    Figure DE112018001285T5_0066
    wobei ux und r zufällig aus [N/4] gezogen werden, sendet E1, E2, E' und Ex an den Verifizierer und führt den folgenden Beweis mit dem Verifizierer aus: G S P K { ( x , w , r ) : com' / E 1 e j = K i x ( z 1 e j ) r E 2 = z 2 r
    Figure DE112018001285T5_0067
    E x = ( g u x ,h x y u x ) E' = z 2 x z 3 r x [ 2 l + 160 ,2 l + 160 ] }
    Figure DE112018001285T5_0068
    Dieser Beweis zeigt, dass e 1 / z 1 r
    Figure DE112018001285T5_0069
    ein Zeuge für x ist und dass x in dem erforderlichen Bereich liegt.
  • Man wird sehen, dass die vorstehenden Ausführungsformen eine außergewöhnlich sichere und effiziente Erzeugung von Client-Schlüsseln gestatten, die für Deduplizierungsanwendungen geeignet sind und die nur Clients erhalten können, welche im Besitz der Datei sind, aus der der Schlüssel erzeugt wird. Es wird darauf hingewiesen, dass die beschriebenen Schlüsselerzeugungsprozeduren in einer beliebigen Anwendung angewendet werden können, die eine blinde Erzeugung eines Schlüssels erforderlich macht, der deterministisch aus Daten abgeleitet wird, deren Kenntnis der Client beweist, um den Schlüssel zu erhalten.
  • Viele weitere Ab- und Veränderungen können an den beschriebenen beispielhaften Ausführungsformen vorgenommen werden. Während vorstehend zum Beispiel eine Deduplizierung auf Dateiebene durch den Speicherserver 4 beschrieben wurde, kann die Deduplizierungsgranularität in weiteren Ausführungsformen ein Datenblock, ein Objekt oder eine beliebige andere Dateneinheit sein. Da der Schlüsselserver 103 bei seiner Interaktion mit dem Client nichts in Erfahrung bringt, wäre es auch möglich, die Funktionalität des Schlüsselservers 103 und des Speicherservers 104 in einigen Ausführungsformen zusammenzuführen. Eine Ausführung der Server 103 und 104 als getrennte Einheiten wird jedoch für den zusätzlich gebotenen Schutz gegen Offline-Brute-Force-Angriffe bevorzugt.
  • Während besonders effiziente Ausführungen beschrieben wurden, können weitere Schemata für eine blinde Schlüsselerzeugung in dem Schlüsselerzeugungsprotokoll und für das Erstellen der verschiedenen Beweise in Betracht gezogen werden.
  • Im Allgemeinen können Schritte von Ablaufplänen gegebenenfalls in einer anderen als der gezeigten Reihenfolge und einige Schritte können gleichzeitig durchgeführt werden.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung erfolgten zum Zweck der Veranschaulichung, sollen jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Änderungen und Varianten sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt befindlicher Technologien am besten zu erklären bzw. um anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • 5 ist ein Blockschaubild von internen und externen Komponenten eines Computersystems 500, das repräsentativ für die Computersysteme von 1 gemäß einer Ausführungsform der vorliegenden Erfindung ist. Es sollte sich verstehen, dass 5 lediglich eine einzelne Ausführung veranschaulicht und keine Einschränkung in Bezug auf die Umgebungen bedeutet, in denen verschiedene Ausführungsformen ausgeführt werden können. Im Allgemeinen sind die in 5 veranschaulichten Komponenten repräsentativ für ein beliebiges elektronisches Gerät, das in der Lage ist, maschinenlesbare Programmanweisungen auszuführen. Zu Beispielen für Computersysteme, Umgebungen und/oder Konfigurationen, die von den in 5 veranschaulichten Komponenten dargestellt werden können, gehören, ohne darauf beschränkt zu sein, Personal-Computer-Systeme, Server-Computer-Systeme, Thin-Clients, Thick-Clients, Laptop-Computer-Systeme, Tablet-Computer-Systeme, Mobiltelefone (z.B. Smartphones), Mehrprozessorsysteme, auf einem Mikroprozessor beruhende Systeme, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der vorstehenden Systeme oder Einheiten enthalten.
  • Das Computersystem 500 enthält eine Übertragungsstruktur 502, die Übertragungen zwischen einem oder mehreren Prozessoren 504, einem Hauptspeicher 506, einem persistenten Speicher 508, einer Übertragungseinheit 512 und einer oder mehreren Ein-/Ausgabe-(E/A-)Schnittstellen 514 ermöglicht. Die Übertragungsstruktur 502 kann mit einer beliebigen Architektur ausgeführt sein, die dafür ausgelegt ist, Daten und/oder Steuerinformationen zwischen Prozessoren (wie beispielsweise Mikroprozessoren, Übertragungs- und Netzwerkprozessoren usw.), dem Systemspeicher, peripheren Einheiten und beliebigen weiteren Hardware-Komponenten innerhalb eines Systems zu übergeben. Zum Beispiel kann die Übertragungsstruktur 502 mit einem oder mehreren Bussen ausgeführt sein.
  • Der Hauptspeicher 506 und der persistente Speicher 508 sind durch einen Computer lesbare Speichermedien. In dieser Ausführungsform enthält der Hauptspeicher 506 einen Direktzugriffsspeicher (RAM) 516 und einen Cachespeicher 518. Im Allgemeinen kann der Hauptspeicher 506 beliebige geeignete flüchtige oder nicht flüchtige durch einen Computer lesbare Speichermedien enthalten. Software wird im persistenten Speicher 508 zur Ausführung und/oder zum Zugriff durch einen oder mehrere der jeweiligen Prozessoren 504 über einen oder mehrere Hauptspeicher der Hauptspeicher 506 gespeichert.
  • Der persistente Speicher 508 kann zum Beispiel eine Vielzahl von Magnet-Festplattenlaufwerken enthalten. Alternativ oder zusätzlich zu Magnet-Festplattenlaufwerken kann der persistente Speicher 508 ein oder mehrere Solid-State-Festplattenlaufwerke, Halbleiterspeichereinheiten, Nur-Lese-Speicher (ROM), löschbare programmierbare Nur-Lese-Speicher (EPROM), Flashspeicher oder ein beliebiges anderes durch einen Computer lesbares Speichermedium enthalten, das in der Lage ist, Programmanweisungen oder digitale Informationen zu speichern.
  • Die durch den persistenten Speicher 508 verwendeten Datenträger können auch auswechselbar sein. Zum Beispiel kann ein auswechselbares Festplattenlaufwerk für den persistenten Speicher 508 verwendet werden. Zu weiteren Beispielen gehören optische und magnetische Platten, Thumb-Drives und Smartcards, die in ein Laufwerk zur Übertragung auf ein anderes durch einen Computer lesbares Speichermedium, das ebenfalls Teil des persistenten Speichers 508 ist, eingelegt werden.
  • Die Übertragungseinheit 512 ermöglicht Übertragungen mit anderen Computersystemen oder Einheiten über ein Netzwerk (z.B. das Netzwerk 105). In dieser beispielhaften Ausführungsform enthält die Übertragungseinheit 512 Netzadapter oder -schnittstellen wie beispielsweise TCP/IP-Adapterkarten, WiFi-Funkschnittstellenkarten oder 3G- bzw. 4G-Funkschnittstellenkarten oder andere drahtgebundene oder drahtlose Übertragungsverbindungen. Das Netzwerk kann zum Beispiel Kupferkabel, Lichtwellenleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Software und Daten, die verwendet werden, um Ausführungsformen der vorliegenden Erfindung in die Praxis umzusetzen, können durch die Übertragungseinheit 512 (z.B. über das Internet, ein lokales Netz oder ein anderes Weitverkehrsnetz) heruntergeladen werden. Aus der Übertragungseinheit 512 können die Software und die Daten auf den persistenten Speicher 508 geladen werden.
  • Eine oder mehrere E/A-Schnittstellen 514 ermöglichen die Ein- und Ausgabe von Daten mit anderen Einheiten, die mit dem Computersystem 500 verbunden sein können. Zum Beispiel kann die E/A-Schnittstelle 514 eine Verbindung zu einer oder mehreren externen Einheiten 520 wie beispielsweise einer Tastatur, einer Computermaus, einem Touchscreen, einer virtuellen Tastatur, einem Touchpad, einer Zeigereinheit oder weiteren Eingabegeräten bereitstellen. Zu den externen Geräten 520 können auch auswechselbare, durch einen Computer lesbare Speichermedien wie beispielsweise Thumb-Drives, auswechselbare optische oder Magnetplatten und Speicherkarten gehören. Die E/A-Schnittstelle 414 ist auch mit dem Bildschirm 522 verbunden.
  • Der Bildschirm 522 stellt einen Mechanismus bereit, um einem Benutzer Daten anzuzeigen, und kann zum Beispiel ein Computer-Monitor sein. Der Bildschirm 522 kann auch ein integrierter Bildschirm sein und die Funktion eines Touchscreens übernehmen, wie beispielsweise ein eingebauter Bildschirm eines Tablet-Computers.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen Integrationsstufe technischer Details handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert 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 ein System 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 kodierte 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. durch ein Glasfaserkabel geleitete 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, Konfigurationsdaten für eine integrierte Schaltung 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 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, im Feld 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 bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare 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 bzw. Schaubilder 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 bzw. Schaubilder 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 in den Blöcken 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 bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern 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.
  • Es sei von vornherein klargestellt, dass das Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing enthält. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen weiteren Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud-Computing ist ein Servicebereitstellungsmodell 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 Service 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 der Dienste 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). Der Ressourcen-Verbrauch 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 über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende E-Mail) von verschiedenen Client-Einheiten her 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 6 ist die veranschaulichende Cloud-Computing-Umgebung 10 abgebildet. Wie gezeigt ist, weist die Cloud-Computing-Umgebung 10 einen oder mehrere Cloud-Computing-Knoten 1 auf, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie zum Beispiel der elektronische Assistent (PDA, personal digital assistant) oder das Mobiltelefon 14A, der Desktop-Computer 14B, der Laptop-Computer 14C und/oder das Automobil-Computer-System 14N Daten austauschen können. Die Knoten 1 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 10, Infrastruktur, Plattformen und/oder Software als Dienst anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sei darauf hingewiesen, dass die Arten von in 6 gezeigten Datenverarbeitungseinheiten 14A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 1 und die Cloud-Computing-Umgebung 10 ü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 7 wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 10 (6) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 7 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 600 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören: Mainframe-Computer 601; auf der RISC-(Reduced Instruction Set Computer) Architektur beruhende Server 602; Server 603; Blade-Server 604; Speichereinheiten 605; und Netzwerke sowie Netzwerkkomponenten 606. In einigen Ausführungsformen beinhalten Software-Komponenten eine Netzwerk-Anwendungsserver-Software 607 und eine Datenbank-Software 608.
  • Die Virtualisierungsschicht 700 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 701; virtueller Speicher 702; virtuelle Netzwerke 703, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 704; und virtuelle Clients 705.
  • In einem Beispiel kann die Verwaltungsschicht 800 die nachstehend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 801 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 802 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-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 803 stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs 804 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) 805 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 Arbeitslastschicht 900 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 901; Software-Entwicklung und Lebenszyklusverwaltung 902; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 903; Datenanalytikverarbeitung 904; Transaktionsverarbeitung 905; und System 906.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • „Efficient constructions of composable commitments and zero-knowledge proofs“, Dodis u.a., CRYPTO 2008, Band 5157 von LNCS, Seiten 515 bis 535, August 2008 [0033]
    • „Practical verifiable encryption and decryption of discrete logarithms“, Camenisch & Shoup, CRYPTO 2003, Band 2729 von LNCS, Seiten 126 bis 144, August 2003 [0033]
    • „Efficient computation modulo a shared secret with application to the generation of shared safe-prime products“, Algesheimer u.a.., CRYPTO 2002, Band 2442 von LNCS, Seiten 417 bis 432, August 2002 [0034]
    • „Vector commitments and their applications“, Catalano u.a., PKC 2013, Band 7778 von LNCS, Seiten 55 bis 72, 2013 [0066]

Claims (24)

  1. System, das aufweist: einen Client-Computer zur Bereitstellung von Client-Daten, wobei der Client-Computer so konfiguriert ist, dass er: einen Vektor x definiert, der eine Vielzahl n von Datenblöcken xi mit den Indizes i = 1 bis n aufweist, die den Client-Daten entsprechen; ein erstes Commitment, wobei es sich bei dem ersten Commitment um ein nicht versteckendes Vektor-Commitment handelt, auf den Vektor x erzeugt; ein zweites Commitment, wobei es sich bei dem zweiten Commitment um ein versteckendes Vektor-Commitment handelt, auf den Vektor x erzeugt; ein drittes Commitment auf das erste Commitment erzeugt; das zweite und das dritte Commitment an den Schlüsselserver sendet; dem Schlüsselserver einen ersten Wissensbeweis, für eine Teilmenge der Indizes i, über die Kenntnis der entsprechenden Datenblöcke xi des Vektors x in dem zweiten und dem dritten Commitment bereitstellt; einen Schlüsselserver zur Übertragung über ein Netzwerk, wobei der Schlüsselserver so konfiguriert ist, dass er: einen geheimen Serverschlüssel k speichert; sich als Reaktion auf das Überprüfen des ersten Beweises mit dem Client-Computer an einem Schlüsselerzeugungsprotokoll beteiligt, wobei der Client-Computer während der Beteiligung so konfiguriert ist, dass er: eine verblendete Funktion des ersten Commitments an den Schlüsselserver sendet und dem Schlüsselserver einen zweiten Wissensbeweis über die Kenntnis des ersten Commitments in der verblendeten Funktion und in dem dritten Commitment bereitstellt; wobei der Schlüsselserver während der Beteiligung so konfiguriert ist, dass er: als Reaktion auf das Überprüfen des zweiten Beweises aus der verblendeten Funktion einen verblendeten Schlüssel K' erzeugt, der die verblendete Funktion des ersten Commitments und des Serverschlüssels k aufweist; den verblendeten Schlüssel K' an den Client-Computer sendet; und wobei der Client-Computer während der Beteiligung so konfiguriert ist, dass er den verblendeten Schlüssel K' entblendet, um einen Client-Schlüssel K zu erhalten, der eine deterministische Funktion des ersten Commitments und des Serverschlüssels k aufweist.
  2. System nach Anspruch 1, wobei das System während des Schlüsselerzeugungsprotokolls des Weiteren aufweist: der Schlüsselserver ist so konfiguriert, dass er den Serverschlüssel k über ein homomorphes Verschlüsselungsschema mit einem öffentlichen Schlüssel des Verschlüsselungsschemas verschlüsselt, um einen verschlüsselten Schlüssel zu erzeugen, und den verschlüsselten Schlüssel an den Client-Computer sendet; der Client-Computer ist so konfiguriert, dass er das erste Commitment mit dem öffentlichen Schlüssel über das Verschlüsselungsschema verschlüsselt, um ein verschlüsseltes Commitment zu erzeugen, und die verblendete Funktion des ersten Commitments erzeugt, indem er eine Funktion des verschlüsselten Schlüssels und des verschlüsselten Commitments unter Verwendung einer Nonce verblendet; der Schlüsselserver ist so konfiguriert, dass er die verblendete Funktion des ersten Commitments unter Verwendung eines privaten Schlüssels, der dem öffentlichen Schlüssel entspricht, über einen Entschlüsselungsalgorithmus des Verschlüsselungsschemas entschlüsselt, um einen entschlüsselten Wert Vzu erhalten, und den verblendeten Schlüssel K' aus dem entschlüsselten Wert V erzeugt; und der Client-Computer ist so konfiguriert, dass er den Client-Schlüssel K erhält, indem er den verblendeten Schlüssel K' unter Verwendung der Nonce entblendet.
  3. System nach Anspruch 2, wobei der Schlüsselserver so konfiguriert ist, dass er den verblendeten Schlüssel K' erzeugt, so dass der Client-Schlüssel K eine pseudozufällige Funktion des ersten Commitments und des Serverschlüssels k aufweist.
  4. System nach Anspruch 1, wobei das System des Weiteren aufweist: der erste Wissensbeweis weist einen ersten Teilbeweis, der die Kenntnis des ersten Commitments in dem dritten Commitment beweist, einen zweiten Teilbeweis, der beweist, dass das zweite und das dritte Commitment aus einem gemeinsamen Wert berechnet werden, und einen dritten Teilbeweis auf; der Client-Computer ist so konfiguriert, dass er den ersten Teilbeweis und den zweiten Teilbeweis an den Schlüsselserver mit dem zweiten und dem dritten Commitment sendet; der Schlüsselserver ist so konfiguriert, dass er als Reaktion auf das Überprüfen des ersten Teilbeweises und des zweiten Teilbeweises die Teilmenge der Indizes i auswählt und die Teilmenge an den Client-Computer sendet; der Client-Computer ist so konfiguriert, dass er den dritten Teilbeweis erzeugt, der die Kenntnis, für jeden Index der Indizes i in der Teilmenge, des Datenblocks xi des Vektors x in dem zweiten Commitment beweist, und den dritten Teilbeweis an den Schlüsselserver sendet; und der Schlüsselserver ist so konfiguriert, dass er den dritten Teilbeweis überprüft, um den ersten Wissensbeweis zu überprüfen.
  5. System nach Anspruch 4, wobei das zweite Commitment aus dem ersten Commitment berechnet wird und der gemeinsame Wert das erste Commitment aufweist.
  6. System nach Anspruch 1, wobei das System mehr als einen des Client-Computers enthält, wobei jeder des mehr als einen Client-Computers für eine Übertragung mit dem Schlüsselserver über das Netzwerk ausgelegt ist.
  7. System nach Anspruch 6, wobei jeder des mehr als einen Client-Computers des Weiteren so konfiguriert ist, dass er die Client-Daten unter Verwendung von deren Client-Schlüssel K verschlüsselt, um einen verschlüsselten Text zu erzeugen, und den verschlüsselten Text zur fernen Speicherung in dem Netzwerk sendet.
  8. System nach Anspruch 7, wobei das System des Weiteren aufweist: einen Speicherserver, der mit dem Netzwerk verbunden ist, um von dem mehr als einen Client-Computer empfangene verschlüsselte Texte zu speichern, und wobei der Speicherserver so konfiguriert ist, dass er einen Deduplizierungsprozess für die verschlüsselten Texte ausführt.
  9. Verfahren, das aufweist: Definieren, durch einen Client-Computer, eines Vektors x, der über eine Vielzahl n von Datenblöcken xi mit den Indizes i = 1 bis n verfügt, die den Client-Daten an dem Client-Client-Computer entsprechen; Erzeugen, durch den Client-Computer, eines ersten Commitments, wobei es sich bei dem ersten Commitment um ein nicht versteckendes Vektor-Commitment handelt, auf den Vektor x; Erzeugen, durch den Client-Computer, eines zweiten Commitments, wobei es sich bei dem zweiten Commitment um ein versteckendes Vektor-Commitment handelt, auf den Vektor x; Erzeugen, durch den Client-Computer, eines dritten Commitments auf das erste Commitment; Senden, durch den Client-Computer, des zweiten und des dritten Commitments an einen Schlüsselserver; Bereitstellen, durch den Client-Computer, eines ersten Wissensbeweises, für eine Teilmenge der Indizes i, über die Kenntnis der entsprechenden Datenblöcke xi des Vektors x in dem zweiten und dem dritten Commitment für den Schlüsselserver; und als Reaktion auf das Überprüfen des ersten Beweises durch den Schlüsselserver: Ausführen eines Schlüsselerzeugungsprotokolls, indem eine verblendete Funktion des ersten Commitments durch den Client-Computer an den Schlüsselserver gesendet wird, und dem Schlüsselserver ein zweiter Wissensbeweis über die Kenntnis des ersten Commitments in der verblendeten Funktion und in dem dritten Commitment bereitgestellt wird, von dem Schlüsselserver ein verblendeter Schlüssel K' empfangen wird, der aus der verblendeten Funktion erzeugt wird und die verblendete Funktion des ersten Commitments und eines geheimen Serverschlüssels k des Schlüsselservers aufweist, und der verblendete Schlüssel K' entblendet wird, um den Client-Schlüssel K zu erhalten, der eine deterministische Funktion des ersten Commitments und des Serverschlüssels k aufweist.
  10. Verfahren nach Anspruch 9, wobei das Ausführen des Schlüsselerzeugungsprotokolls aufweist: Empfangen, durch den Client-Computer, vom dem Schlüsselserver eines verschlüsselten Schlüssels, der erzeugt wird, indem der Serverschlüssel über ein homomorphes Verschlüsselungsschema mit einem öffentlichen Schlüssel des Verschlüsselungsschemas verschlüsselt wird; Verschlüsseln, durch den Client-Computer, des ersten Commitments mit dem öffentlichen Schlüssel über das Verschlüsselungsschema, um ein verschlüsseltes Commitment zu erzeugen; Erzeugen, durch den Client-Computer, der verblendeten Funktion des ersten Commitments, indem eine Funktion des verschlüsselten Schlüssels und des verschlüsselten Commitments unter Verwendung einer Nonce verblendet werden; und als Reaktion auf den Empfang des verblendeten Schlüssels, der an dem Schlüsselserver aus einem entschlüsselten Wert V erzeugt wird, den man durch Entschlüsseln der verblendeten Funktion des ersten Commitments erhält, Verwenden, durch den Client-Computer, eines privaten Schlüssels, der dem öffentlichen Schlüssel entspricht, über einen Entschlüsselungsalgorithmus des Verschlüsselungsschemas und Entblenden des verblendeten Schlüssels unter Verwendung der Nonce.
  11. Verfahren nach Anspruch 9, wobei der erste Wissensbeweis einen ersten Teilbeweis, der die Kenntnis des ersten Commitments in dem dritten Commitment beweist, einen zweiten Teilbeweis, der beweist, dass das zweite und das dritte Commitment aus einem gemeinsamen Wert berechnet werden, und einen dritten Teilbeweis aufweist, und wobei das Verfahren des Weiteren aufweist: Senden, durch den Client-Computer, des ersten Teilbeweises und des zweiten Teilbeweises an den Schlüsselserver mit dem zweiten und dem dritten Commitment; als Reaktion auf das Überprüfen des ersten Teilbeweises und des zweiten Teilbeweises durch den Schlüsselserver, Empfangen, durch den Client-Computer, der Teilmenge der Indizes i von dem Schlüsselserver; Erzeugen, durch den Client-Computer, des dritten Teilbeweises, der die Kenntnis, für jeden Index der Indizes i in der Teilmenge, des Datenblocks xi des Vektors x in dem zweiten Commitment beweist; und Senden, durch den Client-Computer, des dritten Teilbeweises an den Schlüsselserver.
  12. Verfahren nach Anspruch 11, das des Weiteren aufweist: Berechnen, durch den Client-Computer, des zweiten Commitments aus dem ersten Commitment, wobei der gemeinsame Wert das erste Commitment aufweist.
  13. Verfahren nach Anspruch 9, das des Weiteren aufweist: Verschlüsseln, durch den Client-Computer, der Client-Daten unter Verwendung des Client-Schlüssels K, um einen verschlüsselten Text zu erzeugen; und Senden, durch den Client-Computer, des verschlüsselten Texts an einen Speicherserver, der mit dem Netzwerk verbunden und so ausgelegt ist, dass er einen Deduplizierungsprozess für gespeicherte verschlüsselte Texte ausführt.
  14. Verfahren nach Anspruch 10, wobei der erste Wissensbeweis einen ersten Teilbeweis, der die Kenntnis des ersten Commitments in dem dritten Commitment beweist, einen zweiten Teilbeweis, der beweist, dass das zweite und das dritte Commitment aus einem gemeinsamen Wert berechnet werden, und einen dritten Teilbeweis aufweist, und wobei das Verfahren des Weiteren aufweist: Senden, durch den Client-Computer, des ersten Teilbeweises und des zweiten Teilbeweises an den Schlüsselserver mit dem zweiten und dem dritten Commitment; als Reaktion auf das Überprüfen des ersten Teilbeweises und des zweiten Teilbeweises durch den Schlüsselserver, Empfangen, durch den Client-Computer, der Teilmenge der Indizes i von dem Schlüsselserver; Erzeugen, durch den Client-Computer, des dritten Teilbeweises, der die Kenntnis, für jeden Index der Indizes i in der Teilmenge, des Datenblocks xi des Vektors x in dem zweiten Commitment beweist; Senden, durch den Client-Computer, des dritten Teilbeweises an den Schlüsselserver; Verschlüsseln, durch den Client-Computer, der Client-Daten unter Verwendung des Client-Schlüssels K, um einen verschlüsselten Text zu erzeugen; und Senden, durch den Client-Computer, des verschlüsselten Texts an einen Speicherserver, der mit dem Netzwerk verbunden und so konfiguriert ist, dass er einen Deduplizierungsprozess für gespeicherte verschlüsselte Texte ausführt.
  15. Verfahren, um einem Client-Computer einen Client-Schlüssel K bereitzustellen, wobei der Client-Computer Client-Daten bereitstellt und so ausgelegt ist, dass er einen Vektor x definiert, der über eine Vielzahl n von Datenblöcken xi mit den Indizes i = 1 bis n verfügt, die den Client-Daten entsprechen, und ein erstes Commitment, bei dem es sich um ein nicht versteckendes Vektor-Commitment handelt, auf den Vektor x erzeugt, wobei das Verfahren an einem Schlüsselserver, der für eine Übertragung mit dem Client-Computer über ein Netzwerk ausgelegt ist, aufweist: Speichern eines geheimen Serverschlüssels k; Empfangen von dem Client-Computer eines zweiten Commitments, bei dem es sich um ein versteckendes Vektor-Commitment handelt, auf den Vektor x und eines dritten Commitments auf das erste Commitment; Empfangen von dem Client-Computer eines ersten Wissensbeweises, für eine Teilmenge der Indizes i, über die Kenntnis der entsprechenden Datenblöcke xi des Vektors x in dem zweiten und dem dritten Commitment; Überprüfen des ersten Beweises; und in einem Schlüsselerzeugungsprotokoll, das als Reaktion auf das Überprüfen des ersten Beweises ausgeführt wird, Empfangen von dem Client-Computer einer verblendeten Funktion des ersten Commitments und eines zweiten Wissensbeweises über die Kenntnis des ersten Commitments in der verblendeten Funktion und in dem dritten Commitment, Überprüfen des zweiten Beweises und als Reaktion darauf Erzeugen aus der verblendeten Funktion des ersten Commitments eines verblendeten Schlüssels K', der eine verblendete Funktion des ersten Commitments und des Serverschlüssels k aufweist, und Senden des verblendeten Schlüssels K' an den Client-Computer zum Entblenden an dem Client-Computer, um den Client-Schlüssel K zu erhalten, der eine deterministische Funktion des ersten Commitments und des Serverschlüssels k aufweist.
  16. Verfahren nach Anspruch 15, das an dem Schlüsselserver in dem Schlüsselerzeugungsprotokoll beinhaltet: Verschlüsseln des Serverschlüssels k über ein homomorphes Verschlüsselungsschema mit einem öffentlichen Schlüssel des Schemas, um einen verschlüsselten Schlüssel zu erzeugen; Senden des verschlüsselten Schlüssels an den Client-Computer zum Erzeugen der verblendeten Funktion des ersten Commitments, indem das erste Commitment mit dem öffentlichen Schlüssel über das Verschlüsselungsschema verschlüsselt wird, um ein verschlüsseltes Commitment zu erzeugen, und Verblenden einer Funktion des verschlüsselten Schlüssels und des verschlüsselten Commitments unter Verwendung einer Nonce; Entschlüsseln der verblendeten Funktion des ersten Commitments unter Verwendung eines privaten Schlüssels, der dem öffentlichen Schlüssel entspricht, über einen Entschlüsselungsalgorithmus des Verschlüsselungsschemas, um einen entschlüsselten Wert V zu erhalten; und Erzeugen des verblendeten Schlüssels K' aus dem entschlüsselten Wert V, so dass der Client-Computer den Client-Schlüssel K erhalten kann, indem er den verblendeten Schlüssel K' unter Verwendung der Nonce entblendet.
  17. Verfahren nach Anspruch 16, das das Erzeugen des verblendeten Schlüssels K' beinhaltet, so dass der Client-Schlüssel K eine pseudozufällige Funktion des ersten Commitments und des Serverschlüssels k aufweist.
  18. Verfahren nach Anspruch 15, wobei der erste Wissensbeweis einen ersten Teilbeweis, der die Kenntnis des ersten Commitments in dem dritten Commitment beweist, einen zweiten Teilbeweis, der beweist, dass das zweite und das dritte Commitment aus einem gemeinsamen Wert berechnet werden, und einen dritten Teilbeweis aufweist, wobei das Verfahren an dem Schlüsselserver beinhaltet: Empfangen des ersten und des zweiten Teilbeweises von dem Client-Computer mit dem zweiten und dem dritten Commitment; Überprüfen des ersten und des zweiten Teilbeweises und als Reaktion darauf Auswählen der Teilmenge der Indizes i und Senden der Teilmenge an den Client-Computer; Empfangen von dem Client-Computer des dritten Teilbeweises, der die Kenntnis, für jeden Index der Indizes i in der Teilmenge, des Datenblocks xi des Vektors x in dem zweiten Commitment beweist; und Überprüfen des dritten Teilbeweises, um den ersten Wissensbeweis zu überprüfen.
  19. Verfahren nach Anspruch 16, wobei der erste Wissensbeweis einen ersten Teilbeweis, der die Kenntnis des ersten Commitments in dem dritten Commitment beweist, einen zweiten Teilbeweis, der beweist, dass das zweite und das dritte Commitment aus einem gemeinsamen Wert berechnet werden, und einen dritten Teilbeweis aufweist, wobei das Verfahren an dem Schlüsselserver beinhaltet: Empfangen des ersten und des zweiten Teilbeweises von dem Client-Computer mit dem zweiten und dem dritten Commitment; Überprüfen des ersten und des zweiten Teilbeweises und als Reaktion darauf Auswählen der Teilmenge der Indizes i und Senden der Teilmenge an den Client-Computer; Empfangen von dem Client-Computer des dritten Teilbeweises, der die Kenntnis, für jeden Index der Indizes i in der Teilmenge, des Datenblocks xi des Vektors x in dem zweiten Commitment beweist; Überprüfen des dritten Teilbeweises, um den ersten Wissensbeweis zu überprüfen; und in dem Schlüsselerzeugungsprotokoll Erzeugen des verblendeten Schlüssels K', so dass der Client-Schlüssel K eine pseudozufällige Funktion des ersten Commitments und des Serverschlüssels k aufweist.
  20. Computerprogrammprodukt, um einen Client-Schlüssel K an einem Client-Computer zu erhalten, der für eine Übertragung mit einem Schlüsselserver über ein Netzwerk ausgelegt ist, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darin realisierten Programmanweisungen aufweist, wobei die Programmanweisungen durch den Client-Computer ausführbar sind, wobei die Programmanweisungen aufweisen: Programmanweisungen, um einen Vektor x zu definieren, der über eine Vielzahl n von Datenblöcken xi mit Indizes i = 1 bis n verfügt, die Client-Daten an dem Client-Computer entsprechen; Programmanweisungen, um ein erstes Commitment, bei dem es sich um ein nicht versteckendes Vektor-Commitment handelt, auf den Vektor x zu erzeugen; Programmanweisungen, um ein zweites Commitment, bei dem es sich um ein versteckendes Vektor-Commitment handelt, auf den Vektor x zu erzeugen; Programmanweisungen, um ein drittes Commitment auf das erste Commitment zu erzeugen; Programmanweisungen, um das zweite und das dritte Commitment an den Schlüsselserver zu senden; Programmanweisungen, um dem Schlüsselserver einen ersten Wissensbeweis, für eine Teilmenge der Indizes i, über die Kenntnis der entsprechenden Datenblöcke xi des Vektors x in dem zweiten und dem dritten Commitment bereitzustellen; und in einem Schlüsselerzeugungsprotokoll, das als Reaktion auf das Überprüfen des ersten Beweises durch den Schlüsselserver ausgeführt wird, Programmanweisungen, um an den Schlüsselserver eine verblendete Funktion des ersten Commitments zu senden und dem Schlüsselserver einen zweiten Wissensbeweis über die Kenntnis des ersten Commitments in der verblendeten Funktion und in dem dritten Commitment bereitzustellen, um von dem Schlüsselserver einen verblendeten Schlüssel K' zu empfangen, der aus der verblendeten Funktion erzeugt wurde und eine verblendete Funktion des ersten Commitments und eines geheimen Serverschlüssels k des Schlüsselservers aufweist, und um den verblendeten Schlüssel K' zu entblenden, um den Client-Schlüssel K zu erhalten, der eine deterministische Funktion des ersten Commitments und des Serverschlüssels k aufweist.
  21. Computerprogrammprodukt nach Anspruch 20, wobei der erste Wissensbeweis einen ersten Teilbeweis, der die Kenntnis des ersten Commitments in dem dritten Commitment beweist, einen zweiten Teilbeweis, der beweist, dass das zweite und das dritte Commitment aus einem gemeinsamen Wert berechnet werden, und einen dritten Teilbeweis aufweist, wobei die auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeicherten Programmanweisungen des Weiteren aufweisen: Programmanweisungen, um den ersten und den zweiten Teilbeweis an den Schlüsselserver mit dem zweiten und dem dritten Commitment zu senden; Programmanweisungen, um die Teilmenge der Indizes i von dem Schlüsselserver als Reaktion auf das Überprüfen durch den Schlüsselserver des ersten und des zweiten Teilbeweises zu empfangen; Programmanweisungen, um den dritten Teilbeweis zu erzeugen, der die Kenntnis, für jeden Index der Indizes i in der Teilmenge, des Datenblocks xi des Vektors x in dem zweiten Commitment beweist; Programmanweisungen, um den dritten Teilbeweis an den Schlüsselserver zu senden; und um in dem Schlüsselerzeugungsprotokoll von dem Schlüsselserver einen verschlüsselten Schlüssel zu empfangen, der erzeugt wird, indem der Serverschlüssel über ein homomorphes Verschlüsselungsschema mit einem öffentlichen Schlüssel des Schemas verschlüsselt wird, Programmanweisungen, um das erste Commitment mit dem öffentlichen Schlüssel über das Verschlüsselungsschema zu verschlüsseln, um ein verschlüsseltes Commitment zu erzeugen; um die verblendete Funktion des ersten Commitments zu erzeugen, indem eine Funktion des verschlüsselten Schlüssels und des verschlüsselten Commitments unter Verwendung einer Nonce verblendet wird; und als Reaktion auf den Empfang des verblendeten Schlüssels K', der an dem Schlüsselserver aus einem verschlüsselten Wert V erzeugt wird, den man erhält, indem die verblendete Funktion des ersten Commitments unter Verwendung eines privaten Schlüssels, der dem öffentlichen Schlüssel entspricht, über einen Entschlüsselungsalgorithmus des Verschlüsselungsschemas entschlüsselt wird, um den verblendeten Schlüssel K' unter Verwendung der Nonce zu entblenden.
  22. Computerprogrammprodukt nach Anspruch 21, wobei die auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeicherten Programmanweisungen des Weiteren aufweisen: Programmanweisungen, um die Client-Daten unter Verwendung des Client-Schlüssels K zu verschlüsseln, um einen verschlüsselten Text zu erzeugen; und Programmanweisungen, um den verschlüsselten Text an einen Speicherserver zu senden, der mit dem Netzwerk verbunden und so ausgelegt ist, dass er einen Deduplizierungsprozess für gespeicherte verschlüsselte Texte ausführt.
  23. Computerprogrammprodukt, um einem Client-Computer, der für eine Übertragung mit einem Schlüsselserver über ein Netzwerk ausgelegt ist, einen Client-Schlüssel K bereitzustellen, wobei der Client-Computer Client-Daten bereitstellt und so ausgelegt ist, dass er einen Vektor x definiert, der über eine Vielzahl n von Datenblöcken xi mit den Indizes i = 1 bis n verfügt, die den Client-Daten entsprechen, und ein erstes Commitment, bei dem es sich um ein nicht versteckendes Vektor-Commitment handelt, auf den Vektor x erzeugt, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darin realisierten Programmanweisungen aufweist, wobei die Programmanweisungen durch den Schlüsselserver ausführbar sind, wobei die Programmanweisungen aufweisen: Programmanweisungen, um einen geheimen Serverschlüssel k zu speichern; Programmanweisungen, um von dem Client-Computer ein zweites Commitment, bei dem es sich um ein versteckendes Vektor-Commitment handelt, auf den Vektor x und ein drittes Commitment auf das erste Commitment zu empfangen; Programmanweisungen, um von dem Client-Computer einen ersten Wissensbeweis, für eine Teilmenge der Indizes i, über die Kenntnis der entsprechenden Datenblöcke xi des Vektors x in dem zweiten und dem dritten Commitment zu empfangen; Programmanweisungen, um den ersten Beweis zu überprüfen; und in einem Schlüsselerzeugungsprotokoll, das als Reaktion auf das Überprüfen des ersten Beweises ausgeführt wird, Programmanweisungen, um von dem Client-Computer eine verblendete Funktion des ersten Commitments und einen zweiten Wissensbeweis über die Kenntnis des ersten Commitments in der verblendeten Funktion und in dem dritten Commitment zu empfangen, um den zweiten Beweis zu überprüfen und um als Reaktion darauf aus der verblendeten Funktion des ersten Commitments einen verblendeten Schlüssel K' zu erzeugen, der eine verblendete Funktion des ersten Commitments und des Serverschlüssels k aufweist, und um den verblendeten Schlüssel K' an den Client-Computer zum Entblenden an dem Client-Computer zu senden, um den Client-Schlüssel K zu erhalten, der eine deterministische Funktion des ersten Commitments und des Serverschlüssels k aufweist.
  24. Computerprogrammprodukt nach Anspruch 23, wobei der erste Wissensbeweis einen ersten Teilbeweis, der die Kenntnis des ersten Commitments in dem dritten Commitment beweist, einen zweiten Teilbeweis, der beweist, dass das zweite und das dritte Commitment aus einem gemeinsamen Wert berechnet werden, und einen dritten Teilbeweis aufweist, und wobei die auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeicherten Programmanweisungen des Weiteren aufweisen: Programmanweisungen, um den ersten und den zweiten Teilbeweis von dem Client-Computer mit dem zweiten und dem dritten Commitment zu empfangen; Programmanweisungen, um den ersten und den zweiten Teilbeweis zu überprüfen und um als Reaktion darauf die Teilmenge der Indizes i auszuwählen und die Teilmenge an den Client-Computer zu senden; Programmanweisungen, um von dem Client-Computer den dritten Teilbeweis zu empfangen, der die Kenntnis, für jeden Index der Indizes i in der Teilmenge, des Datenblocks xi des Vektors x in dem zweiten Commitment beweist; Programmanweisungen, um den dritten Teilbeweis zu überprüfen, um den ersten Wissensbeweis zu überprüfen; und in dem Schlüsselerzeugungsprotokoll Programmanweisungen, um den Serverschlüssel k über ein homomorphes Verschlüsselungsschema mit einem öffentlichen Schlüssel des Schemas zu verschlüsseln, um einen verschlüsselten Schlüssel zu erzeugen, um den verschlüsselten Schlüssel an den Client-Computer zur Erzeugung der verblendeten Funktion des ersten Commitments zu senden, indem das erste Commitment mit dem öffentlichen Schlüssel über das Verschlüsselungsschema verschlüsselt wird, um ein verschlüsseltes Commitment zu erzeugen, und eine Funktion des verschlüsselten Schlüssels und des verschlüsselten Commitments unter Verwendung einer Nonce verblendet wird, um die verblendete Funktion des ersten Commitments unter Verwendung eines privaten Schlüssels, der dem öffentlichen Schlüssel entspricht, über einen Entschlüsselungsalgorithmus des Verschlüsselungsschemas zu entschlüsseln, um einen entschlüsselten Wert Vzu erhalten, und um den verblendeten Schlüssel K' aus dem entschlüsselten Wert Vzu erzeugen, so dass der Client-Computer den Client-Schlüssel K erhalten kann, indem er den verblendeten Schlüssel K' unter Verwendung der Nonce entblendet.
DE112018001285.9T 2017-05-19 2018-05-17 Kryptografische Schlüsselerzeugung mit Anwendung auf Datendeduplizierung Active DE112018001285B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/600,142 2017-05-19
US15/600,142 US10277395B2 (en) 2017-05-19 2017-05-19 Cryptographic key-generation with application to data deduplication
PCT/IB2018/053465 WO2018211446A1 (en) 2017-05-19 2018-05-17 Cryptographic key-generation with application to data deduplication

Publications (2)

Publication Number Publication Date
DE112018001285T5 true DE112018001285T5 (de) 2019-12-19
DE112018001285B4 DE112018001285B4 (de) 2020-11-19

Family

ID=64272724

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018001285.9T Active DE112018001285B4 (de) 2017-05-19 2018-05-17 Kryptografische Schlüsselerzeugung mit Anwendung auf Datendeduplizierung

Country Status (6)

Country Link
US (1) US10277395B2 (de)
JP (1) JP6959994B2 (de)
CN (1) CN110637441B (de)
DE (1) DE112018001285B4 (de)
GB (1) GB2576289B (de)
WO (1) WO2018211446A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10536267B2 (en) * 2017-09-15 2020-01-14 Visa International Service Association Cryptographic services utilizing commodity hardware
US10897357B2 (en) * 2018-04-04 2021-01-19 International Business Machines Corporation Computation using lattice-based cryptography
KR102602119B1 (ko) * 2018-04-06 2023-11-15 주식회사 크립토랩 블록체인 및 동형암호 기술을 이용하여 데이터를 공유하는 사용자 장치와 전자장치 및 그 방법들
KR102348768B1 (ko) * 2018-11-07 2022-01-06 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 동형 암호화를 이용한 블록체인 데이터 보호
US10447475B1 (en) * 2018-11-08 2019-10-15 Bar Ilan University System and method for managing backup of cryptographic keys
CN109543451B (zh) * 2018-11-28 2023-05-09 中共中央办公厅电子科技学院 一种基于模分量同态的隐私保护处理方法
JP6811334B2 (ja) 2018-12-21 2021-01-13 アドバンスド ニュー テクノロジーズ カンパニー リミテッド 汎用アカウントモデルおよび準同型暗号に基づくブロックチェーンデータ保護
KR102193551B1 (ko) 2018-12-21 2020-12-23 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 제네릭 계정 모델 및 준동형 암호화에 기반한 블록체인 데이터 보호
CN111092715B (zh) * 2019-12-27 2023-06-16 山东师范大学 一种网约车信息安全处理方法、系统及设备
IL272521B2 (en) * 2020-02-06 2023-05-01 Google Llc Creating sequences of network data while preventing the acquisition or manipulation of time data
CN111338572B (zh) * 2020-02-18 2021-09-14 电子科技大学 一种可调节加密重复数据删除方法
CN113590020A (zh) * 2020-04-30 2021-11-02 伊姆西Ip控股有限责任公司 用于数据管理的方法、设备和计算机程序产品
WO2022144966A1 (ja) * 2020-12-28 2022-07-07 富士通株式会社 情報処理システム、制御方法、情報処理装置および制御プログラム
CN112822009B (zh) * 2021-01-26 2022-07-22 西安邮电大学 一种支持密文去重的属性密文高效共享系统
CN112947855B (zh) * 2021-02-01 2022-10-14 电子科技大学 一种基于硬件安全区的高效加密重复数据删除方法
US20230239153A1 (en) * 2022-01-25 2023-07-27 QPQ Ltd. System and method for digital proof generation
CN116484443B (zh) * 2023-06-19 2023-09-15 深圳市优博生活科技有限公司 一种基于鸿蒙系统的可信安全存储方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197142B2 (en) 2001-08-24 2007-03-27 Alten Alexander I System and methods for a vernam stream cipher
EP3010174A1 (de) * 2006-11-07 2016-04-20 Security First Corp. System und verfahren zur datenverteilung und -sicherung
US8189769B2 (en) * 2007-07-31 2012-05-29 Apple Inc. Systems and methods for encrypting data
US8281143B1 (en) * 2008-09-29 2012-10-02 Symantec Operating Corporation Protecting against chosen plaintext attacks in untrusted storage environments that support data deduplication
EP2768177A1 (de) 2013-02-15 2014-08-20 Thomson Licensing Kryptografische Vorrichtungen und Verfahren zur Erzeugung und Verifizierung von Festlegungen linear homomorpher Signaturen
JP6171649B2 (ja) * 2013-07-16 2017-08-02 日本電気株式会社 暗号化装置、復号装置、暗号化方法および暗号化プログラム
CN104717067B (zh) * 2013-12-17 2018-02-23 中国移动通信集团辽宁有限公司 基于非交互式零知识的安全验证方法、设备及系统
US10372918B2 (en) 2015-02-13 2019-08-06 Nec Corporation Method for storing a data file of a client on a storage entity
WO2016155804A1 (en) 2015-03-31 2016-10-06 Nec Europe Ltd. Method for verifying information
CN105491006B (zh) * 2015-11-13 2018-11-13 河南师范大学 云外包密钥共享装置及方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
„Efficient computation modulo a shared secret with application to the generation of shared safe-prime products", Algesheimer u.a.., CRYPTO 2002, Band 2442 von LNCS, Seiten 417 bis 432, August 2002
„Efficient constructions of composable commitments and zero-knowledge proofs", Dodis u.a., CRYPTO 2008, Band 5157 von LNCS, Seiten 515 bis 535, August 2008
„Practical verifiable encryption and decryption of discrete logarithms", Camenisch & Shoup, CRYPTO 2003, Band 2729 von LNCS, Seiten 126 bis 144, August 2003
„Vector commitments and their applications", Catalano u.a., PKC 2013, Band 7778 von LNCS, Seiten 55 bis 72, 2013

Also Published As

Publication number Publication date
DE112018001285B4 (de) 2020-11-19
GB2576289B (en) 2020-08-12
CN110637441A (zh) 2019-12-31
US10277395B2 (en) 2019-04-30
US20180337775A1 (en) 2018-11-22
WO2018211446A1 (en) 2018-11-22
GB2576289A (en) 2020-02-12
JP2020521369A (ja) 2020-07-16
CN110637441B (zh) 2023-05-02
GB201917321D0 (en) 2020-01-15
JP6959994B2 (ja) 2021-11-05

Similar Documents

Publication Publication Date Title
DE112018001285B4 (de) Kryptografische Schlüsselerzeugung mit Anwendung auf Datendeduplizierung
US20200404023A1 (en) Method and system for cryptographic attribute-based access control supporting dynamic rules
DE112017002263T5 (de) Infrastruktur mit öffentlichen Schlüssel unter Verwendung von Blockchains
DE112018000779T5 (de) Tokenbereitstellung für Daten
Miyaji et al. Privacy-preserving integration of medical data: a practical multiparty private set intersection
DE112019001441T5 (de) Vergessliche pseudozufallsfunktion in einem schlüsselverwaltungssystem
JP2023133560A (ja) コンピュータにより実施される投票処理及びシステム
DE112021004937T5 (de) Sicheres erneutes verschlüsseln von homomorph verschlüsselten daten
DE112021005561T5 (de) Implementieren einer widerstandsfähigen deterministischen verschlüsselung
DE112016000790B4 (de) Instanziierung von Broadcast-Verschlüsselungsschemata zur Laufzeit
DE102021129514A1 (de) Binden von post-quanten-zertifikaten
DE112021003270T5 (de) Deduplizierung von mit mehreren schlüsseln verschlüsselten daten
Hu et al. Secure outsourced computation of the characteristic polynomial and eigenvalues of matrix
Hariharasitaraman et al. A dynamic data security mechanism based on position aware Merkle tree for health rehabilitation services over cloud
Cao et al. Privacy-preserving conjunctive keyword search on encrypted data with enhanced fine-grained access control
Zhang et al. New efficient constructions of verifiable data streaming with accountability
DE112022000906T5 (de) Trennen von blockchain-daten
Talviste Applying secure multi-party computation in practice
Zhao et al. Traceable one-time address solution to the interactive blockchain for digital museum assets
Hong et al. Constructing conditional PKEET with verification mechanism for data privacy protection in intelligent systems
Xu et al. Verifiable computation with access control in cloud computing
DE112022000340T5 (de) Attributgestützte verschlüsselungsschlüssel als schlüsselmaterial zum authentifizieren und berechtigen von benutzern mit schlüssel-hash-nachrichtenauthentifizierungscode
Wu et al. Secure data stream outsourcing with publicly verifiable integrity in cloud storage
Schul-Ganz et al. Accumulators in (and beyond) generic groups: non-trivial batch verification requires interaction
Servan-Schreiber et al. Private access control for function secret sharing

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final