DE112015005893B4 - Systeme und Verfahren für ein Mehrfachwert-Packungsschema für homomorphe Verschlüsselung - Google Patents

Systeme und Verfahren für ein Mehrfachwert-Packungsschema für homomorphe Verschlüsselung Download PDF

Info

Publication number
DE112015005893B4
DE112015005893B4 DE112015005893.1T DE112015005893T DE112015005893B4 DE 112015005893 B4 DE112015005893 B4 DE 112015005893B4 DE 112015005893 T DE112015005893 T DE 112015005893T DE 112015005893 B4 DE112015005893 B4 DE 112015005893B4
Authority
DE
Germany
Prior art keywords
encrypted
data values
payloads
encrypted payloads
values
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.)
Active
Application number
DE112015005893.1T
Other languages
English (en)
Other versions
DE112015005893T5 (de
Inventor
Sarvar Patel
Marcel M.M. YUNG
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE112015005893T5 publication Critical patent/DE112015005893T5/de
Application granted granted Critical
Publication of DE112015005893B4 publication Critical patent/DE112015005893B4/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/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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)

Abstract

Computerimplementiertes Verfahren zum Durchführen einer homomorphen Verschlüsselung, um eine Summierung zu erzeugen, wobei das Verfahren umfasst:bei einem Client,Empfangen einer Vielzahl von verschlüsselten Nutzlasten, wobei die verschlüsselten Nutzlasten jeweils eine Vielzahl von Datenwerten haben;Multiplizieren von einem oder mehreren der Datenwerte von einer der verschlüsselten Nutzlasten mit einem oder mehreren anderen Datenwerten in einer oder mehreren der anderen verschlüsselten Nutzlasten auf eine Weise, die ein Produkt erzeugt, das die Summierung von Datenwerten entsprechend dem multiplizierten einen oder den multiplizierten mehreren Datenwerten der einen der verschlüsselten Nutzlasten und dem einen oder den mehreren anderen Datenwerten in der einen oder den mehreren anderen der verschlüsselten Nutzlasten darstellt, wobei jede der verschlüsselten Nutzlasten durch Packen der Datenwerte vor einer Verschlüsselung von jeder der verschlüsselten Nutzlasten erzeugt wird, wobei die Datenwerte jeweils von den verschlüsselten Nutzlasten bei einer unteren Hälfte der verschlüsselten Nutzlast positioniert sind und eine obere Hälfte von jeder der verschlüsselten Nutzlasten leer ist;Durchführen einer Potenzierungsoperation an der Vielzahl von Datenwerten von jeder der verschlüsselten Nutzlasten, um eine Position von einem der Datenwerte innerhalb jeder der verschlüsselten Nutzlasten in der unteren Hälfte zu einer vorgeschriebenen Position in der oberen Hälfte von jeder der verschlüsselten Nutzlasten zu verschieben; undMultiplizieren des einen der verschobenen Datenwerte bei der vorgeschriebenen Position in der oberen Hälfte von jeder der verschlüsselten Nutzlasten mit dem einen oder den mehreren anderen verschobenen Datenwerten bei der vorgeschriebenen Position in der oberen Hälfte der einen oder mehreren der anderen verschlüsselten Nutzlasten.

Description

  • HINTERGRUND
  • Gebiet
  • Der hierin diskutierte Gegenstand betrifft allgemein Datenverarbeitung und, genauer gesagt, Systeme und Verfahren für homomorphe Verschlüsselung unter Verwednung eines Mehrfachwert-Packungsschemas.
  • Zugehöriger Hintergrund
  • Im zugehörigen Stand der Technik kann eine Operation für eine Datenbank, eine Datenbank als ein Dienst oder eine Cloud-Datenbank durchgeführt werden. Spezifischer kann der Datenbank-Server die Daten des Anwenders (z.B. Anwender-Transportdaten) halten und kann der Anwender eine Operation an den Daten (z.B. eine Anfrage) durchführen. Der Anwender kann Daten haben, welche empfindlich sind, von welchen er oder sie nicht wünscht, dass der Server (z.B. ein Cloud-Besitzer) sie kennt. Der Artikel „Space-Efficient Private Search with Applicationsto Rateless Codes“ von G. Danezis et al., URL: https://link.springer.com/chapter/10.1007/978-3-540-77366-5_15, beschreibt eine Anwendung der Paillier-Verschlüsselung, wobei mehrere einzelne verschlüsselte Datenelemente durch Potenzierung und Multiplikation in einem einzigen Schlüsseltext zusammengeführt werden. Der Artikel „Private Stream Search at the same communication cost as a regular search“: Role of LDPC codes von M. Finiaz et al., URL:
    • https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6283979, beschreibt die Zusammenfassung mhrerer verschlüsselter Datenelemente in einem Schlüsseltext, wobei die einzelnen Datenelemente durch „zero-padding“ voneinander beabstandet sind, um Kollisionen zu vermeiden.
  • Der Artikel „New Techniques for Private Stream Searching“ von J. Bethencourt et al.,URL:
    • http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.138.3281&rep=rep1&ty pe=pdf, beschreibt ein Verfahren zur Suche nach Dokumenten mit mehreren Suchbegriffen unter Einsatz eines Schlüsselpaars.Der Artikel „Public-Key Cryptosystems based on Composite Degree Residuosity Classes“ von P. Pallier et al., URL: https://link.springer.com/content/pdf/10.1007%2F3-540-48910-X_16.pdf, beschreibt probabilistische Verschlüsselungsverfahren mit additivhomomorphen Eigenschaften.
  • Eine homomorphe Verschlüsselung, wie beispielseweise eine Paillier-Verschlüsselung, enthalt viele Eigenschaften. Beispielsweise sind zwei Werte V1 und V2 gegeben (auf die als Klartext Bezug genommen wird), was zu E(V1) = C1 (d.h. Verschlüsseln von V1 resultiert in dem verschlüsselten Text C1) und E(V2) = C2 fuhrt. Eine der Eigenschaften homomorpher Verschlüsselung be- steht darin, dass das Produkt von zwei verschlüsselten Texten C1 und C2 sich zu der Summe von ihren entsprechenden Klartexten V1 und V2 entschlüsseln wird.
  • Mit einem größer werdenden Volumen von Daten und der Anzahl von Transaktioenen, die auf der Serverseite zu behandeln sind, gibt es eine Notwendigkeit, eine Anzahl von Bytes zu reduzieren, die transferiert werden müssen, um homomorphe Verschlüsselung zu implementieren.
  • ZUSAMMENFASSUNG
  • Der Gegenstand enthält computerimplementierte Verfahren zum Durchführen einer homomorphen Verschlüsselung, um eine Summierung zu erzeugen, einschließlich eines Empfangens einer Vielzahl verschlüsselter Nutzlasten und der verschlüsselten Nutzlasten mit einer Vielzahl von Datenwerten bei einem Client; und Multtiplizieren von einem oder mehreren Datenwerten von einer der verschlüsselten Nutzlasten mit einem oder mehreren anderen Datenwerten in einer oder mehreren der anderen verschlüsselten Nutzlasten, um ein Produkt zu erzeugen, das die Summieung von Datenwerten entsprechend dem multiplizierten einen oder den multiplizierten mehreren Datenwerten von der einen der verschlüsselten Nutzlasten und dem einen oder den mehreren anderen Datenwerten in der einen oder den mehreren anderen der verschlüsselten Nutzlasten darstellt.
  • Der Gegenstand enthält auch ein computerimplementiertes Verfahren zum Durchführen einer homomorphen Verschlüsselung, um eine Summierung zu erzeugen, einschließlich eines Erzeugens einer Vielzahl von verschlüsselten Nutzlasten, die jeweils eine Vielzahl von Datenwerten hahen, bei einem Server, wobei die Datenwerte von jeder der verschlüsselten Nutzlasten bei einer unteren Hälfte von jeder der verschlüsselten Nutzlasten positioniert sind und eine obere Hälfte von jeder der verschlüsselten Nutzlasten leer ist.
  • Weiterhin enthält der Gegenstand ein computerimplementiertes Verfahren zum Durchführen einer homomorphen Verschlüsselung, um eine Summierung zu erzeugen, wobei das Verfahren bei einem Server ein Erzeugen einer Vielzahl von verschlüsselten Nutzlasten enthält, die jeweils eine Vielzahl von Datenwerten haben; und bei einem Client ein Empfangen von jeder der verschlüsselten Nutzlasten mit der Vielzahl von Datenwerten; und ein Multiplizieren von einem oder mehreren Datenwerten von einer der verschlüsselten Nutzlasten mit einem oder mehreren anderen Datenwerten in einer oder mehreren der anderen verschlüsselten Nutzlasten, um ein Produkt zu erzeugen, das die Summierung von Datenwerten entsprechend dem multiplizierten einen oder den multiplizierten mehreren Datenwerten der verschlüsselten Nutzlasten und dem einen oder den mehreren der anderen Datenwerte in der einen oder den mehreren anderen verschlüsselten Nutzlasten darstellt.
  • Die Verfahren werden unter Verwendung von einer oder mehreren Computervorrichtungen und/oder -systemen implementiert. Die Verfahren können in computerlesbaren Medien gespeichert sein.
  • Figurenliste
    • 1 zeigt einen Ansatz nach dem zugehörigen Stand der Technik für ein Packen.
    • 2 zeigt einen Ansatz nach dem zugehörigen Stand der Technik für ein Entpacken.
    • 3 zeigt eine Achitektur für das Packungswerkzeug gemäß einer beispielhaften Implementierung.
    • 4 zeigt einen Packungsprozess gemäß einer beispielhaften Implementierung.
    • 5 zeigt einen Entpackungsprozess gemäß einer beispielhaften Implementierung.
    • 6 stellt einen Systemprozess dar, der zu einer beispielhaften Implementierung gehört.
    • 7 stellt einen Serverprozess dar, der zu einer beispielhaften Implementierung gehört.
    • 8 stellt einen Clientprozess dar, der zu einer beispielhaften Implementierung gehört.
    • 9 zeigt eine beispielhafte Umgebung, die für einige beispielhafte Implementierungen geeignet ist.
    • 10A und 10B zeigen beispielhafte Computerumgebungen mit jeweiligen beispielhaften Computervorrichtungen, die zur Verwendung bei einigen beispielhaften Implementierungen geeignet sind.
  • DETAILLIERTE BESCHREIBUNG
  • Der hierin beschriebene Gegenstand wird anhand beispielhafter Implementierungen gelehrt. Verschiedene Details sind der Klarheit halber und zur Vermeidung einer Verschleierung des Gegenstands weggelassen worden. Die nachfolgend gezeigten Beispiele sind auf Strukturen und Funktionen zum Implementieren von Systemen und Verfahren gerichtet, die zu einem Mehrfachwert-Packungsschema für eine homomorphe Verschlüsselung gehören.
  • 1 stellt einen Ansatz nach dem zugehörigen Stand der Technik für eine homomorphe Verschlüsselung 100 unter Verwendung einer Paillier-Verschlüsselung (z.B. Multiplikation von verschlüsseltem Text, Addition von Klartext) dar. Ein Client 101 und ein Server 103 sind vorgesehen. Bei 105 führt der Client 101 eine Verschlüsselung einer Vielzahl von IDs X1...Xn... unter Verwendung einer kommutativen Verschlüsselung mit einem Schlüssl f durch. Das Ergebnis der bei 105 durch den Client 101 durchgeführten Verchlüsselung wird zum Server 103 gesendet. Beispielsweise kann die kommutative Verschlüsselung eine Potenzierung mit einem geheimen Exponenten einer großen Primzahl als Modulozahl sein.
  • Bei 107 empfängt der Server 103 die verschlüsselten IDs f(X1)...f(Xn)... vom Client 101 und führt eine Verschlüsselungsoperation mit einem Schlüssel g durch und sendet g(X1)...g(Xn) zum Client 101. Weiterhin verschlüsselt der Server 103 Server-IDs Y1 ...Ym mit dem Schlüssel g und sendet g(Y1)...g(Ym) zum Client 101 zusammen mit dem Wert (z.B. Ausgabe) Si, verschlüsselt mit homomorpher Paillier-Verschlüsselung E. Die verschlüsselten Werte der Zahlen werden zum Client 101 als individuelle, separate Nutzlasten für jede der Zahlen (z.B. Ausgabenwerte) geliefert.
  • Bei 111 werden beim Client 101 die Server-IDs g(X1)...g(Xn) weiter mit dem Schlüssel f verschlüselt, um fg(Y1)...fg(Ym) zu erzeugen. Bei 113 führt der Client 101 eine Prüfoperation durch, um zu bestimmen, ob es eine Übereinstimmung oder einen Schnittmenge zwischen gf(Xi) und fg(Yj) gibt. Eine solche Übereinstimmung oder Schnittmenge würde anzeigen, dass Xi gleich Yj ist.
  • Bei 115 multipliziert der Client 101 für die Schnittmengen alle der Werte von E(Sj), welche die verschlüsselten Werte von Sj sind, um ein Produkt zu erzeugen, welches dasselbe wie die Verschlüsselung der Summe der klaren Werte von Sj sein wird. Der Client 101 kann den Server 103 anfragen, das Produkt zu entschlüsseln und die Summe zurückzubringen. Um ein Offenbaren der Summe während des Zurückbringprozesses zu vermeiden kann der Client 101 eine Verblenungsoperation, d.h. das Produkt mit E(r) multiplizieren, durchführen, um eine Zufahlszahl r zurückzubringen.
  • Bei 117 Paillier-entschlüsselt der Server 103 und bringt das Ergebnis zum Client 101 zurück. Um die klare Summe zu erhalten, subtrahiert der Client 101 die Zufallszahl r von dem durch den Server 103 zum Client 101 gesendeten Ergebnis.
  • 2 stellt einen Ansatz 200 nach dem zugehörigen Stand der Technik für eine Operation 109 dar, wie sie oben erklärt ist. Der Klarheit halber ist eine weitere Erklärung derselben Bezugszeichen, wie sie oben in Bezug auf 1 dskutiert sind, weggelassen. Spezifischer sendet bei der Operation 109 der Server 103 eine verschlüsselte ID und den zugehörigen Paillier-verschlüsselten Ausgabenwert (z.B. g(Yi) zusammen mit E(Si)).
  • 3 stellt eine beispielhafte Architektur 300 dar. Eine Clientseiten-Modul 303 ist vorgesehen, das IDs des Clients erzeugt und die verschlüsselten IDs beispielsweise über das Internet 305 zum Serverseiten-Modul 307 sendet. Das Serverseiten-Modul 307 kann vom Clientseiten-Modul 303 empfangene Daten verschlüsseln, wie beispielsweise die Client-verschlüsselten IDs. Das Serverseiten-Modul steuert auch das Server-Packungswerkzeug 309.
  • Das Server-Packungswerkzeug 309 enthält einen Packungswerkzeug-Operator bzw. -Betreiber 311, der das Server-Packungswerkzeug 309 steuert. Beispielsweise können bei dem Befehl des Packungswerkzeug-Operators 311 mehrere Datenwerte in eine einzige Nutzlast gepackt werden, so dass das Server-Packungswerkzeug 309 eine Vielzahl von solchen verschlüsselten Nutzlasten zum Serverseiten-Modul 307 liefert. Das Serverseiten.Modul 307 liefert die verschlüsselten Nutzlasten zum Clientseiten-Modul 303. Weitere Details der verschlüsselten Nutzlasten werden nachfolgend in Bezug auf 4 diskutiert.
  • Das Client-Entpackungswerkzeug 301 empfängt die verschlüsselten einzelnen Nutzlasten. Spezifischer führt ein Entpackungswerkzeug-Operator bzw. -Betreiber 313 eine Reihe von Linksverschiebungsoperationen an jeder der einzelnen Nutzlasten vom Clientseiten-Modul 303 durch, die in Folge vom Serverseiten-Modul 307 empfangen wurden. Die Linksverschiebungsoperationen verwenden eine Potenzierung, um die Werte innerhalb der einzelnen Nutzlasten zu verschieben, so dass der erwünschte Wert bei einer vorgeschriebenen Position ist. Wenn die Linksverschiebungsoperation beendet worden ist, wird bei dem Client-Entpackungswerkzeug 301 ein Produkt aus dem verschlüsselten Datenwert erhalten, das mit einer Summe der Klartextwerte assoziiert ist. Optional kann das Clientseiten-Modul 303 das Produkt verblenden und das Serverseiten-Modul 303 anfragen, zu entschlüsseln und eine verblendete Summe zum Clientseiten-Modul zurückbringen, welches die verblendete Summe entblendet, um die Klartextsumme zu erhalten, die den Wert (z.B. den Ausgabenwert) darstellt.
  • 4 zeigt ein Beispiel einer Prozessimplementierung, die zu einer Packungsoperation gemäß der beispielhaften Implementierung gehört. Wie es in 4 gezeigt ist, ist ein Client 401 vorgesehen, um mit einem Server 403 zu kommunizieren. Bei dem Client 401 führt, wie es oben beim Element 105 in Bezug auf die 1 und 2 angemerkt ist, der Client 101 einer Verschlüsselung einer Vielzahl von IDs X1...Xn... unter Verwendung einer kommutativen Verschlüsselung mit dem Schlüssel f durch. Das Ergebnis der bei 105 durch den Client 101 durchgeführten Verschlüsselung wird zum Server 103 gesendet. Beispielsweise, aber nicht darauf beschränkt, kann die kommutative Verschlüsselung eine Potenzierung mit einem geheimen Exponenten mit dem Modulwert einer großen Primzahl sein.
  • Bei dem Server 403 empfängt, bei 407, der Server 403 die verschlüsselten IDs f(X1)...f(Xn)... vom Client 401 und führt eine Verschlüsselungsoperation mit dem Schlüssel g durch und sendet optional g(X1)...g(Xn) zum Client 401. Weiterhin sendet der Server 403 bei 409 den Wert (z.B. Ausgabe) Si, mit einer homomorphen Paillier-Verschlüsselung E verschlüsselt, zum Server 401. Optional verschlüsselt der Server 403 Server-IDs Y1...Ym mit dem Schlüssel g und sendet g(Y1)...g(Ym) zum Client 401.
  • Gemäß der beispielhaften Implementierung enthält (z.B. packt) der Server 403 bei 409 mehrere Werte (z.B. vier Ausgabenwerte S1 ...S4) in eine einzelne Paillier-Nutzlast, welche dann verschlüsselt und zum Client 401 gesendet werden. Innerhalb jeder der Vielzahl von einzelnen Nuzlasten wird jeder der Werte von anderen Werten durch einen 32-Bit-Schutz getrennt. In anderen Worten ist ein Raum von 32 Bits beispielsweise zwischen S1 und S2 vorgesehen. Der Zweck der Beabstandung besteht darin, zuzulassen, dass kein Übertrag auf benachbarte Zahlen eindringt. Somit können beispielsweise, aber nicht darauf beschränkt, 128 Bits verwendet werden, um jede Zahl darzustellen, unter der Annahme, dass die Zahlen ganze Zahlen mit 64 Bits (z.B. int64) mit 96 Bits für die Darstellung sind, und 32 Bits von Nullen als ein Schutz oder Separator zwischen benachbarten Zahlen. Als Ergebnis können bis zu 232 mögliche Werte ohne ein Übertragsproblem verwendet werden.
  • Während bei der beispielhaften Implementierung int64 verwendet wird, ist das vorliegende erfinderische Konzept nicht darauf beschränkt und andere Größen von ganzer Zahl, Nutzlast und Beabstandung können verwendet werden, wie es von Fachleuten auf dem Gebiet verstanden werden würde, ohne vom Schutzumfang des erfinderischen Konzepts abzuweichen. Beispielsweise, aber nicht darauf beschränkt, können diese Werte basierend auf der Anwendung bestimmt werden.
  • Weiterhin decken die Werte nur die untere Hälfte von jeder der verschlüsselten Nutzlasten ab. Die signifikanteste (z.B. obere) Hälfte wird leer gehalten. Wie es nachfolgend in Bezug auf 5 erklärt wird, kann die obere Hälfte während der Entpackungsoperation für einen Verschiebungsprozess verwendet werden.
  • Demgemäß werden mehrere Ausgabenwerte durch den Server 403 in jede der einzelnen Nutzlasten gepackt und werden verschlüsselt und zum Client 401 gesendet. Demgemäß kann die Anzahl von Bytes, die transferiert werden müssen, um 1/N reduziert werden, wobei N die Anzahl von Werten auf jeder der einzelnen Nutzlasten ist. Beim vorliegenden Beispiel würde die Anzahl von Bytes, die transferiert werden müssen, um ¼ (d.h. ein Viertel) reduziert werden.
  • Bei 411 werden bei dem Client 401 die Server-IDs g(X1)...g(Xn) weiter mit dem Schlüssel fverschlüsselt, um fg(Y1)...fg(Ym) zu erzeugen. Bei 413 führt der Client 401 eine Prüfoperation durch, um zu bestsimmen, ob es eine Übereinstimmung oder eine Schnittmenge zwischen gf(Xi) und fg(Yj) gibt. Eine solche Übereinstimmung oder Schnittmenge würde anzeigen, dass Xi gleich Yj ist. Wie es detaillierter nachfolgend in Bezug auf 5 erklärt ist, wird eine Entpackungsoperation durchgeführt, die eine Verschiebungsoperation enthält.
  • Bei 415 multipliziert der Client 401 für die Schnittmengen alle der Werte von E(Sj), welche die verschlüsselten Werte von Sj sind, um ein Produkt zu erzeugen, welches dasselbe wie die Verschlüsselung der Summe der klaren Werte von Sj sein wird. Der Client 401 kann den Server 403 anfragen, das Proukt zu entschlüsseln und die Summe zurückzubringen. Um ein Offenbaren der Summe während des Zurückbringprozesses zu vermeiden, kann der Client 401 eine Verblendungsoperation, d.h. Multiplizieren des Produkts mit E(r), durchführen, um eine Zufallszahl r zurückzubringen.
  • Bei 417 Paillier-entschlüsselt der Server 403 und bringt das Ergebnis zum Client 403 zurück. Um die klare Summe zu erhalten, subtrahiert der Client 401 die Zufallszahl r von dem durch den Server 403 zum Client 401 gesendeten Ergebnis.
  • 5 stellt eine Entpackungsoperation gemäß einer beispielhaften Implementierung dar. Wie es in 5 gezeigt ist, liefert der Server 503 die Nutzlast 505 zum Client 501. Die Nutzlast 505 ist oben in Bezug auf 4 diskutiert und weitere Details sind der Klarheit halber weggelassen.
  • Bei der beispielhaften Implementierung der 5 muss der Client 501 die verschlüsselten Werte von E(S3), E(S1), E(S8) und E(S6) multiplizieren. Demgemäß müssen diese verschlüsselten Werte bei einer vorgeschriebenen Position in der Nutzlast positioniert werden. Beispielsweise werden die verschlüsselten Werte von E(S3), E(S1), E(S8) und E(S6) bei der vierten Position 507 in 5 positioniert. Demgemäß werden die verschlüsselten Werte bei allen anderen Positionen ignoriert werden.
  • Demgemäß müssen die verschlüsselten Werte von E(S3), E(S1), E(S8) und E(S6) zur vierten Position 507 verschoben werden, um die Multiplikation dieser verschlüsselten Werte durchzuführen. Um die Verschiebung zu erreichen, wird der Paillier-verschlüsselte verschlüsselte Text mit 2 potenziert, was den entsprechenden Klartextwert um ein Bit nach links bewegt.
  • Beispielsweise ist es, um E(S3) zur vierten Position zu bewegen und den Klartext S3 um 128 Bits zu verschieben, nötig, den verschlüsselten Text mit dem Wert 128x1 zu potenzieren. In der zweiten Nutzlast wird, um E(S1) drei Positionen nach links zu verschieben und somit E(S1) bei der vierten Position auf der Nutzlast zu platzieren, der verschlüsselte Text auf 128x3 potenziert, um ihn um 3 Positionen nach links zu verschieben. In Bezug auf ES8, ist dieses bereits bei der vierten Position und muss nicht verschoben werden. Als nächstes ist in Bezug auf E(S6) dieses bei der zweiten Position und muss zur vierten Position bewegt werden und muss somit mit 128x2 potenziert werden, um sich zur vierten Position im Klartext zu verschieben.
  • Demgemäß stellt das Produkt des verschlüsselten Textes der verschlüsselten Datenwerte, das produziert wird, eine Summe des Klartextes, assoziiert mit einer Summe der Datenwerte des verschlüsselten Textes, dar. Als Ergebnis wird bei der vorangehenden beispielhaften Implementierung der verschobene verschlüsselte Text multipliziert, um einen verschlüsselten Text zu produzieren, für welchen der zugrundeliegende Klartext die Summe aus S3+S1+S8+S6 ist.
  • Bei dem Client 501 werden die Server-IDs g(X1)...g(Xn) weiterhin mit dem Schlüssel fverschlüsselt, um fg(Y1)...fg(Ym) zu erzeugen. Der Client 501 führt somit eine Prüfoperation durch, um zu bestimmen, ob es eine Übereinstimmung oder eine Schnittmenge zwischen gf(Xi) und fg(Yj) gibt. Eine solche Übereinstimmung oder Schnittmenge würde anzeigen, dass Xi gleich Yj ist.
  • Für die Schnittmenge multipliziert der Client 501 alle der Werte von E(Sj), die mit jeder der Vielzahl von einzelnen Nutzlasten assoziiert sind, welche die verschlüsselten Werte von Sj sind, um ein Produkt zu erzeugen, welches dasselbe wie die Verschlüsselung der Summe der klaren Werte von Sj sein wird. Der Client 501 kann den Server 503 anfragen, das Produkt zu entschlüsseln und die Summe zurückzubringen. Um eine Offenbaren der Summe während des Zurückbringprozesses zu vermeiden, kann der Client 501 eine Verblendungsoperation, d.h. Multiplizieren des Produkts mit E(r), durchführen, um eine Zufallszahl r zurückzubringen.
  • Der Server 503 Paillier-entschlüsselt dann und bringt das Ergebnis zurück zum Client 501. Um die klare Summe zu erhalten, subtrahiert der Client 501 die Zufallszahl r von dem durch den Server 503 zum Client 501 gesendeten Ergebnis.
  • Bei der vorangehenden beispielhaften Implementierung kann dann, wenn der Client 501 die Entschlüsselung vom Server 503 empfängt, der Client 501 Zahlen bei der Position ignorieren, die eine andere als die vorgeschriebene Position 507 ist. Somit muss der Client 501 nur den Wert der vorgeschriebenen Position (z.B. vierte Position im Element 507 der 5) extrahieren. Weiterhin bildet aufgrund der 32 Schutzbits benachbart zu jedem verschlüsselten Datenwert ein Addieren zu den benachbarten verschlüsselten Datenwerten keinen Übertrag in andere Positionen.
  • Während die vorangehenden beispielhaften Implementierungen sich auf ein Packen mit ganzen Zahlen von 64 Bits beziehen, können andere Werte dafür eingesetzt werden. Beispielsweise, aber nicht daruf beschränkt, könnten zehn (10) Zahlen in jede der verschlüsselten Nutzlasten gepackt werden, was die benötigte Bandbreite um 1/10 reduzieren würde. Ein solcher Ansatz kann beispielsweise angenommen werden, wenn der größte Wert nicht größer als 1,000,000 (z.B. ein Ausgabenwert, der nicht größer als eine Millionen Dollar ist).
  • Als Alternative zu den vorangehenden beispielhaften Implementierungen kann einen Damgard-Version einer Paillard-Verschlüsselung verwendet werden. Beispielsweise, aber nicht darauf beschränkt, können verschlüsselte Texte, die (s+1)/s mal größer als die Nutzlast sind, verwendet werden. In dem Fall einer direkten Paillard-Verschlüsselung hat s einen Wert von 1 und es gibt eine Erweiterung von (1+1)/1=2. Wenn andererseits s mit einem Wert von 3 verwendet wird, dann würde dies in einer Erweiterung von (3+1)/3= 4/3 resultieren. Somit gibt es einen verschlüsselten Text mit 4096 Bits (z.B. 512 Bytes) und eine Nutzlast mit 3072 Bits als Ergebnis, so dass 30 Zahlen in die Nutzlast eingepasst werden können. Demgemäß hat jede Verschlüsselung aufgrund der größeren Zahlen einen größeren zugehörigen Kostenaufwand, aber weniger Verschlüsselungen sind erforderlich.
  • Die 6-8 stellen beispielhafte Prozesse dar, die zu der vorangehenden Implementierung gehören. Bei einigen Beispielen können Prozesse 600-800 mit unterschiedlichen, weniger oder mehr Blöcken implementiert sein. Die Prozesse 600-800 können als computerausführbare Anweisungen implementiert sein, die auf einem Medium gespeichert, auf einen oder mehrere Prozessoren von einer oder mehreren Computervorrichtungen geladen und als ein computerimplementiertes Verfahren ausgeführt werden können.
  • 6 stellt einen beispielhaften Prozess 600 gemäß einer oder mehreren der vorangehenden beispielhaften Implementierungen dar. Bei 606 verschlüsselt eine Vielzahl von Werten X1 ...Xn. Beispielsweise, aber nicht darauf beschränkt, können die Werte X1 ...Xn unter Verwendung eines Paillier-Verschlüsselungsschemas verschlüsselt werden. Die entsprechenden verschlüsselten Werte f(X1)...f(Xn) werden dann zu einem Server geliefert.
  • Bei 610 empfängt ein Server die verschlüsselten Werte f(X1)...f(Xn) und führt eine Verschlüsselungsoperation an diesen Werten durch. Die durch den Server verschlüsselten resultierenden Werte (z.B. eine Paillier-Verschlüsselung) werden als gf(X1)...gf(Xn) zum Client geliefert. Ebenso bei 610 verschlüsselt der Server (z.B. Pailllier-Verschlüsselung) und sendet g(Y1)...g(Ym) zum Client. Weiterhin wird bei 610 eine Vielzahl von einzelnen Nutzlasten E[(S1)...(Sn)] erzeugt, die jeweils eine Vielzahl der Werte (z.B. Ausgabenwerte) enthalten. Die einzelnen Nutzlasten E[(S1)...(Sn)] behalten jeweils das signifikanteste Bit (z.B. obere Hälfte) als leer bei und liefem die verschlüsselten Datenwerte in der unteren Hälfte. Wie es oben erklärt ist, werden die verschlüsselten Datenwerte durch Schutzbits in jeder der Nutzlasten E[(S1)...(Sn)] voneinander beabstandet.
  • Wie es nachfolgend detaillierter erklärt wird, kann optional bei 610 eine Operation bei dem Server an den verschlüsselten Datenwerten durchgeführt werden, wobei die verschlüsselten Datenwerte E[(S1)...(Sn)] einen Vektor von einem oder mehreren Datenwerten bei einer Vielzahl von Positionen darstellen. Gemäß der Operation kann wenigstens eines von einem Multiplizieren der verschlüsselten Nutzlasten E[(S1)...(Sn)] mit einer Verschlüsselung von konstanten Werten und einem Multiplizieren der verschlüsselten Nutzlasten E[(S1)...(Sn)], um die Positionen der Datenwerte zu verschieben, die zu dem Vektor gehören, in der Nutzlast durchgeführt werden.
  • Bei 615 und 620 werden Operationen durchgeführt, um eine Schnittmenge basierend auf einer Übereinstimmung zwischen den durch den Client und der Server zur Verfügung gestellten IDs zu bestimmen. Bei 615 verschlüsselt der Client g(Y1)...g(Ym), um fg(Y1)...fg(Ym) zu erhalten. Dann prüft der Client bei 620 auf eine Übereinstimmung zwischen fg(Yj) und dem oben erklärten gf(Xi). Basierend auf den Operationen 615 und 620 wird eine Schnittmenge bestimmt.
  • Bei 625 wird eine Verschiebungsoperation durchgeführt, wie es oben in Bezug auf 4 und 5 erklärt ist. Beispielsweise, aber nicht daruf beschränkt, wird für die Werte von E(Sj) in Bezug auf die oben abgeleitete Schnittmenge der Verschiebungs- und Ptenzierungsprozess durchgeführt, wie es oben beschrieben ist. Demgemäß werden die verschlüsselten Datenwerte, wie sie durch E(Sj) bei der geeigneten nach links verschobenen Position dargestellt sind, für jede der verschlüsselten Nutzlasten E[(S1)...(Sn)] multipliziert. Somit wird ein Produkt der verschlüsselten Datenwerte in jeder der einzelnen Nutzlasten E[(S1)...(Sn)] erzeugt, das zu einer Summe der Klartextwerte gehört.
  • Optional kann oder können als ein Teil der Multiplikationsoperation von 625 bei dem Client und wie es oben angemerkt ist, der eine oder die mehreren Datenwerte der einen der verschlüsselten Nutzlasten E[(S1)...(Sn)] bei einer ersten Position (i) in dem Vektor sein und kann oder können mit dem einen oder den mehreren anderen Datenwerten in der einen oder den mehreren der anderen verschlüsselten Nutzlasten E[(R1)...(Rn)] multipliziert werden, die bei einer zweiten Position (j) in dem zweiten Vektor sein können, um das oben angegebene Produkt zu erzeugen, das die Summierung der Datenwerte entsprechend dem oder den multiplizierten einen oder den multiplizierten mehreren Datenwerten der einen der verschlüsselten Nutzlasten darstellt, die der verschlüsselte Wert von (Si+Rj) in dem resultierenden verschlüsselten Vektor E[(U1)...(Un)] ist. Eine dritte Position (k) ist nämlich so, dass im resultierenden verschlüsselten Vektor Uk=Si+Rj gilt.
  • Optional können Operationen 630 und 635 duchgeführt werden. Beispielsweise, aber nicht darauf beschränkt, führt der Client bei der Operation 630 eine Verschlüsselungsoperation an dem Produkt durch Verschlüsseln einer Zufallszahl r durch, um einen verschlüsselten Wert der Zufallszahl r als E(r) zu erzeugen, was mit dem Produkt multipliziert wird. Eine Anfrage wird zum Server gesendet, um das verblendete Produkt zu entschlüsseln. Der Server entschlüsselt somit das verblendete Produkt und bringt die verblendete Summe zurück zum Client. Bei der Operation 635 empfängt der Client die verblendete Summe und subtrahiert r, um die Klartextsumme zu erzeugen.
  • 7 stellt einen Prozess 700 gemäß einer beispielhaften Implementierung dar, die zu beispielhaften Serverseiten-Operationen des vorliegenden erfinderischen Konzepts gehören. Einige Aspekte, die zuvor oben in Bezug auf 6 erklärt sind, werden hierin der Klarheit und Kürze halber nicht wiederholt.
  • Optional empfängt ein Server bei einer Operation 705 f(X1)...f(Xn) von beispielsweise einem Client, welche verschlüsslte Werte von Client-IDs X1...Xn sind. Der Server führt eine Verschlüsselung von f(X1)...f(Xn) durch, um gf(X1)...gf(Xn) zu erzeugen und zum Client zu senden. Weiterhin erzeugt und verschlüsselt der Server IDs Y1...Ym und sendet somit g(Y1)...g(Ym) zum Client.
  • Bei einer Operation 710 werden Datenwerte S1 ...Sn in einer einzelnen Nutzlast E[(S1)... (Sn)] platziert und eine Verschlüsselungsoperation wird an den Datenwerten durchgeführt, um verschlüsselte Datenwerte E(S1)...E(Sn) zu erzeugen, die durch Schutzbits voneinander beabstandet sind, wie es oben erklärt ist. Wie es auch oben erklärt ist, werden die verschlüsselten Datenwerte E(S1)...E(Sn) in der unteren Hälfte von jeder der Nutzlasten positioniert, so dass die obere Hälfte der Nutzlasten (z.B. die signifikantesten Bits) leer gelassen wird.
  • Wie es nachfolgend detaillierter erklärt wird, kann optional bei 710 eine Operation bei dem Server an den verschlüsselten Datenwerten durchgeführt werden, wobei die verschlüsselten Datenwerte E[(S1)...(Sn)] einen Vektor von einem oder mehreren der Datenwerte bei einer Vielzahl von Positionen darstellen. Gemäß der Operation kann wenigstens eines von einem Multiplizieren der verschlüsselten Nutzlasten E[(S1)...(Sn)] mit einer Verschlüsselung von konstanten Werten und einem Multiplizieren der verschlüsselten Nutzlasten E[(S1)...(Sn)], um die Positionen der Datenwerte, die zu dem Vektor gehören, in der Nutzlast zu verschieben, durchgeführt werden.
  • Bei einer Operation 715 empfängt der Server optional eine Anfrage, um ein verblendetes Produkt für E(Sj) zu entschlüsseln. Beispielsweise kann der Server die Verblendungs-Anfrage empfangen, wie es oben in 6 erklärt ist. Bei einer Operation 720 wird das verblendete Produkt entschlüsselt und dem Client zur Verfügung gestellt.
  • 8 stellt einen Prozess 800 gemäß einer beispielhaften Implementierung dar, die zu beispielhaften Clientseiten-Operationen des vorliegenden erfinderischen Konzepts gehört. Einige zuvor oben in Bezug auf 6 erklärte Aspekte werden hierin der Klarheit und Kürze halber nicht wiederholt.
  • Bei 805 verschlüsselt der Client IDs X1...Xn als f(X1)...f(Xn) und sendet die verschlüsselten Werte zum Server. Bei 810 empfängt der Client Serververschlüsselte Werte der Client-IDs X1...Xn als gf(X1)...gf(Xn) und verschlüsselte IDs der Server-IDs Y1...Ym als g(Y1)...g(Ym). Weiterhin empfängt der Client eine Vielzahl von gepackten Nutzlasten, die jeweils E[(S1)...(Sn)] als eine einzelne Nutzlast enthalten, mit einer oberen Hälfte leer und einer unteren mit Datenwerten besetzt, wie es oben in Bezug auf 6 erklärt ist.
  • Bei 815 und 820 werden Operationen durchgeführt, um eine Schnittmenge basierend auf einer Übereinstimmung zwischen den durch den Client und den Server zur Verfügung gestellten IDs zu bestimmen. Bei 815 verschlüsselt der Client g(Y1)...g(Ym), um fg(Y1)...fg(Ym) zu erhalten. Dann prüft der Client auf eine Übereinstimmung zwischen fg(Yj) und dem oben erklärten gf(Xi) bei 820. Basierend auf den Operationen 815 und 820 wird eine Schnitmenge bestimmt.
  • Bei 825 wird eine Verschiebungsoperation durchgeführt, wie es oben in Bezug auf die 4 und 5 erklärt ist. Beispielsweise, aber nicht darauf beschränkt, wird für die Werte von E(Sj) für die Vielzahl von einzelnen Nutzlasten E[(S1)...(Sn)] in Bezug auf die oben abgeleitete Schnittmenge der Verschiebungs- und Potenzierungsprozess, wie es oben beschrieben ist, durchgeführt. Demgemäß werden die verschlüsselten Datenwerte, wie sie durch E(Sj) bei der geeigneten nach links verschobenen Position dargestellt sind, multipliziert. Somit wird ein Produkt der verschlüsselten Datenwerte erzeugt, das mit einer Summe der Klartextwerte assoziiert ist.
  • Optional kann oder können als ein Teil der Multiplikationsoperation von 825 bei dem Client, und wie es oben angemerkt ist, der eine oder die mehreren Datenwerte der einen der verschlüsselten Nutzlasten E[(S1)...(Sn)] bei einer ersten Position (i) in dem Vektor sein und kann oder können mit dem einen oder den mehreren anderen Datenwerten in der einen oder den mehreren der anderen verschlüsselten Nutzlasten E[(R1)...(Rn)] multipliziert werden, die bei einer zweiten Position (j) in dem zweiten Vektor sein können, um das oben angegebene Produkt zu erzeugen, das die Summierung der Datenwerte entsprechend dem multiplizierten einen oder den multiplizierten mehreren Datenwerten der einen der verschlüsselten Nutzlasten darstellt, die der verschlüsselte Wert von (Si+Rj) in dem resultierenden verschlüsselten Vektor E[(U1)...(Un)] ist. Eine dritte Position (k) ist nämlich so, dass Uk=Si+Rj im resultierenden verschlüsselten Vektor gilt.
  • Optional können Operationen 830 und 835 durchgeführt werden. Beispielsweise, aber nicht darauf beschränkt, führt der Client bei der Operation 830 eine Verschlüsselungsoperation an dem Produkt durch Verschlüsseln einer Zufallszahl r durch, um einen verschlüsselten Wert der Zufallszahl r als E(r) zu erzeugen, was mit dem Produkt multipliziert wird. Eine Anfrage wird zum Server gesendet, um das verblendete Produkt zu entschlüsseln. Der Server entschlüsselt somit das verblendete Produkt und bringt die verblendete Summe zurück zum Client. Bei der Operation 835 empfängt der Client die verblendete Summe und subtrahiert r, um die Klartextsumme zu erzeugen.
  • Zusätzlich zu der vorangehenden Implementierung können andere Implementierungen zur Verfügung gestellt werden. Beispielsweise, aber nicht darauf beschränkt, kann die Vielzahl der Elemente in der Nutzlast ein Vektor sein, wie es nachfolgend beschrieben wird.
  • Verschlüsselte Texte einer Verschlüsselung mit öffentlichem Schlüssel können in Bezug auf das Klartext-Datenelement groß sein, das wesentlich kürzer als die verschlüsselten Texte ist. Weiterhin ist die Summe der Klartexte wesentlich kürzer als die Größe eines verschlüsselten Textes. Demgemäß kann bei dieser alternativen beispielhaften Implementierung die Verschlüsselungsnutzlast eine Vielzahl oder eine positionierte Vielzahl (z.B. ein Vektor) von Elementwerten darstellen und kann somit signifikanten Platz sparen.
  • Gemäß dieser alternativen beispielhaften Implementierung fügt ein Multiplizieren der verschlüsselten Nutzlast das Nutzlastelement in dem Vektor pro Position hinzu und kann das Hinzufügen einer Position i bei einer ersten Vektorverschlüsselung mit einem Element der Position j, wobei j unterschiedlich von i ist, bei einer zweiten Vektorverschlüsselung vereinfachen.
  • Somit stellt die vorliegende beispielhafte Implementierung ein Verfahren zur Verfügung, dass zulässt, dass die homomorphe Operation quer durch die Positionen durchgeführt wird. Demgemäß wird der resultierende verschlüsselte Vektor bei irgendeiner Position k das Ergebnis (z.B. Summe) der Elemente in dem ursprünglichen Element der Position i des Vektors des verschlüsselten Textes der ersten verschlüsselten Nutzlast und dem Element der Position j der zweiten verschlüsselten Vektomutzlast haben.
  • Demgemäß kann eine erweiterte Flexibilität einer homomorphen Operation an Elementen zur Verfügung gestellt werden, die in derselben Nutzlast verschlüsselt sind, so dass die Operation ungeachtet von Positionen an Datenelementen unter Verschlüsselung (z.B. Nutzlast eines verschlüsslten Textes) ohne die Notwendigkeit durchgeführt werden kann, die Nutzlast zu entschlüsseln und solche Operationen an den Klartextelementen durchzuführen. Die beispielhafte Implementierung behält immer die Elemente bei wie sie verschlüsselt sind, während sie eine flexible Operation an den Elementen (z.B. Addieren von Vektorelementen, ungeachtet ihrer Position innerhalb des Vektors) zulässt.
  • 9 zeigt eine beispielhafte Umgebung, die für einige beispielhafte Implementierungen geeignet ist. Eine Umgebung 900 enthält Vorrichtungen 905-945 und jede ist kommunikativ mit wenigstens einer anderen Vorrichtung beispielsweise über ein Netzwrk 960 (z.B. durch verdrahtete und/oder drahtlose Verbindungen) verbunden. Einige Vorrichtungen können kommunikativ mit einer oder mehreren Speichervorrichtungen 930 und 945 verbunden sein.
  • Ein Beispiel von einer oder mehreren Vorrichtungen 905-945 kann eine Computervorrichtung 1005 sein, die nachfolgend in den 10A und 10B beschrieben ist. Die Vorrichtungen 905-945 können einen Computer 905 (z.B. eine Laptop-Computrvorrichtung), eine mobile Vorrichtung 910 (z.B. Smartphone oder Tablet), ein Fernsehgerät 915, eine zu einem Fahrzeug gehörende Vorrichtung 920, ein Server-Computer, Computervorrichtungen 935-940, Speichervorrichtungen 930 und 945 sein, sind aber nicht darauf beschränkt.
  • Bei einigen Implementierungen können die Vorrichtungen 905-920 als Anwendervorrichtungen angesehen werden (z.B. Vorrichtungen, die durch Anwender verwendet werden, um auf Dienste zuzugreifen und/oder Anfragen auszugeben, wie beispielsweise an ein soziales Netzwerk). Die Vorrichtungen 925-945 können Vorrichtungen sein, die zu Service-Providern gehören (z.B. durch Service-Provider verwendet, um Dienste zur Verfügung zu stellen und/oder Daten zu speichern, wie beispielsweise Webseiten, Text, Textteilbereiche, Bilder, Bildteilbereiche, Audio, Audiosegmente und/oder Information diesbezüglich).
  • Beispielsweise kann ein Client zu den vorangehenden beispielhaften Implementierungen, wie beispielsweise der obigen 8, gehörende Operationen, einschließlich der Entpackungsoperationen der beispielhaften Implementierung unter Verwendung der Vorrichtung 905 oder 910 an einem Netzwerk, unterstützt durch eine oder mehrere Vorrichtungen 925-940, durchführen. Ein Server kann zu den vorangehenden beispielhaften Implementierungen, wie beispielsweise der obigen 7, gehörende Operationen, einschließlich der Packungsoperationen der beispielhaften Implementierung unter Verwendung der Vorrichtung 945 über ein Netzwerk 950 durchführen.
  • Die 10A-10B zeigen beispielhafte Computerumgebungen mit einer beispielhaften Computervorrichtung, die zur Verwendung bei einigen beispielhaften Implementierungen geeignet ist. Die gemeinsamen Elemente der 10A und 10B werden der Klarheit und Kürze halber zusammen diskutiert.
  • Eine Computervorrichtung 1005 in einer Computerumgebung 1000 kann eine oder mehrere Verarbeitungseinheiten, Kerne oder Prozessoren 1010, einen Speicher 1015 (z.B. RAM, ROM und/oder ähnliches), einen internen Speicher 1020 (z.B. einen Magnetspeicher, einen optischen Speicher, eine Festkörperspeicher und/oder einen organischen Speicher) und/oder eine I/O-Schnittstelle 1025 enthalten, von welchen alle mit einem Kommunikationsmechanismus oder einem Bus 1030 zum Kommunizieren von Information gekoppelt oder in der Computervorrichtung 1005 eingebettet sein können.
  • Die Computervorrichtung 1005 kann kommunikativ mit einer Eingabe/Ausgabe-Schnitstelle 1035 und einer Ausgabe/Eingabe-Schnittstelle 1040 gekoppelt sein. Entweder eine oder beide der Eingabe/Ausgabe-Schnitstelle 1035 und der Ausgabe/Eingabe-Schnittstelle 1040 kann oder können eine verdrahtete oder drahtlose Schnittstelle sein und kann oder können entfernbar sein. Die Eingabe/Ausgabe-Schnitstelle 1035 kann irgendeine Vorrichtung, Komponente, Sensor oder Schnittstelle, physikalisch oder virtuell, enthalten, die verwendet werden kann, um eine Eingabe zur Verfügung zu stellen (z.B. Tasten, Berührungsbildschirm-Schnittstelle, Tastatur, eine Zeige/Cursor-Steuerung, Mikrofon, Kamera, Blindenschrift, Bewegungssensor, optischer Leser und/oder ähnliches). Die Ausgabe/Eingabe-Schnittstelle 1040 kann eine Anzeige, ein Fernsehgerät, einen Monitor, einen Drucker, einen Lautsprecher, Blindenschrift oder ähnliches enthalten. Bei einigen beispielhaften Implementierungen können die Eingabe/Ausgabe-Schnitstelle 1035 und die Ausgabe/Eingabe-Schnitstelle 1040 bei der Computervorrichtung 1005 eingebettet oder physikalisch mit dieser gekoppelt sein. Bei anderen beispielhaften Implementierungen können andere Computervorrichtungen als die Eingabe/Ausgabe-Schnitstelle 1035 und die Ausgabe/Eingabe-Schnitstelle 1040 für eine Computervorrichtung 1005 fungieren oder die Funktionen von diesen zur Verfügung stellen.
  • Bespiele einer Computervorrichtung 1005 können in hohem Maße mobile Vorrichtungen (z.B. Smartphones, Vorrichtungen in Fahrzeugen und anderen Maschinen, von Menschen und Tieren getragene Vorrichtungen und ähnliches), mobile Vorrichtungen (z.B. Tablets, Notebooks, Laptops, Personalcomputer, transportable Fernsehgeräte, Radios und ähnliches) und Vorrichtungen, die nicht für eine Mobilität entworfen sind (z.B. Desktopcomputer, andere Computer, Informationskioske, Fernsehgeräte mit einem oder mehreren Prozessoren darin eingebettet und/oder damit gekoppelt, Radios und ähnliches) enthalten, sind aber nicht daruf beschränkt.
  • Die Computervorichtung 1005 kann kommunikativ mit einem externen Speicher 1045 und einem Netzwerk 1050 (z.B. über die I/O-Schnittstelle 1025) zum Kommunizuieren mit irgendeiner Anzahl von Netzwerkkomponenten, Vorrichtungen und Systemen, einschließlich einer oder mehreren Computervorrichtungen derseleben oder einer unterschiedlichen Konfiguration, gekoppelt sein. Die Computervorrichtung 1005 oder irgendeine angeschlossene Computervorrichtung kann derart funktionieren, dass sie Dienste zur Verfügung stellt oder dass auf sie als Server, Client, dünner Server, allgemeine Maschine, Maschine für spezielle Zwecke, oder mit einer anderen Bezeichnung Bezug genommen wird.
  • Die I/O-Schnittstelle 1025 kann drahtlose Kommunikationskomponenten (nicht gezeigt) enthalten, die eine drahtlose Kommunikation über eine Sprach- und/oder ein Datennetzwerk ermöglichen. Die drahtlosen Kommunikationskomponenten können ein Antennensystem mit einer oder mehreren Antennen, ein Funksystem, ein Basisbandsystem oder irgendeine Kombination davon enthalten. Funkfrequenz-(RF-)Signale können über die Luft durch das Antennensystem unter dem Management des Funksystems gesendet und empfangen werden.
  • Die I/O-Schnittstelle 1025 kann, ist aber nicht darauf beschränkt, verdrahtete und/oder drahtlose Schnittstellen unter Verwendung von I/O-Protokollen oder Standards (z.B. Ethernet, 802.11x, USB, WiMax, Modem, ein zellulares Netzwerkprotokoll und ähnliches) zum Kommunizieren von Information zu und/oder von wenigstens allen angeschlossenen Komponenten, Vorrichtungen und einem Netzwerk in der Computerumgebung 1000 enthalten. Das Netzwerk 1050 kann irgendein Netzwerk oder eine Kombination von Netzwerken sein (z.B. das Internet, ein lokales Netz, ein Fernnetz, ein Telefonnetz, ein zellulares Netzwerk, ein Satellitennetz und ähnliches).
  • Die Computervorrichtung 1005 kann computernutzbare oder computerlesbare Medien, einschließlich flüchtige Medien und nichtflüchtige Medien, verwenden und/oder unter Verwendung von diesen kommunizieren. Flüchtige Medien enthalten Übertragungsmedien (z.B. Metallkabel, Faseroptiken), Signale, Trägerwellen und ähnliches. Nichtflüchtige Medien enthalten magnetische Medien (z.B. Platten bzw. Scheiben und Bänder), optische Medien (z.B. CD ROM, digitale Videodisks, Blu-Ray-Disks), Festkörpermedien (z.B. RAM, ROM, Flash-Speicher; Festkörperspeicher) und eine andere nichtflüchtige Speichervorrichtung oder Speicher.
  • Die Computervorrichtung 1005 kann verwendet werden, um Techniken, Verfahren, Anwendungen, Prozesse oder computerausführbare Anweisungen in einigen beispielhaften Computerumgebungen zu implementieren. Computerausführbare Anweisungen können aus flüchtigen Medien ausgelesen und auf nichtflüchtigen Medien gespeichert und aus diesen ausgelesen werden. Die ausführbaren Anweisungen können aus einem oder mehreren von irgeneiner Programmierung, einem Scripting bzw. schriftlichem Ausarbeiten und von Maschinensprachen (z.B. C, C++, C#, Java, Visual Basic, Python, Perl, JavaScript und andere) entstehen.
  • Wie es in 10A gezeigt ist, kann (können) ein Prozessor (Prozessoren) 1010 unter irgendeinem Betriebssystem (OS) (nicht gezeigt) in einer natürlichen oder virtuellen Umgebung ausführen. Eine oder mehrere Anwendungen können verwendet werden, die eine Logikeinheit 1060, eine Anwendungsprogrammierschnittstelle-(API-)Einheit 1065, eine Eingabeeinheit 1070, eine Ausgabeeinheit 1075, eine Mehrfachwert-Entpackungsmaschine 1080, eine Kryptografiemaschine 1085, eine Schnittstelle einer dritten Partei 1090 und einen Kommunikationsmechanismus zwischen Einheiten 1095 für die unterschiedlichen Einheiten, um miteinander, mit dem OS und mit anderen Anwendungen (nicht geziegt) zu kommunizieren, enthalten. Beispielsweise können die Mehrfachwert-Entpackungsmaschine 1080, die Kryptografiemaschine 1085 und die Schnittstelle einer dritten Partei 1090 einen oder mehrere der in den FIG: 6 und 8 gezeigten Prozesse implementieren. Die beschriebenen Einheiten und Elemente können in Bezug auf Aussehen, Funktion, Konfiguration oder Implementierung variiert werden und sind nicht auf die zur Verfügung gestellten Beschreibungen beschränkt.
  • Bei einigen Implementierungen kann, wenn Information oder eine Ausführungsanweisung durch die API-Einheit 1065 empfangen wird, sie zu einer oder mehreren anderen Einheiten (z.B. der Logikeinheit 1060, der Eingabeeinheit 1070, der Ausgabeeinheit 1075, der Mehrfachwert-Entpackungsmaschine 1080, der Kryptografiemaschine 1085 und der Schnittstelle einer dritten Partei 1090) kommuniziert werden. Beispielsweise kann die Mehrfachwert-Entpackungsmaschine 1080 die Linksverschiebung (z.B. ein Entpacken) und eine Multiplikation durchführen, wie es oben in Bezug auf die 6 und 8 beschrieben ist. Die Kryptografiemaschine 1085 kann IDs des Clients oder andere Werte, wie es nötig ist, um die Operationen durchzuführen, die oben in Bezug auf die 6 und 8 erklärt sind, verschlüsseln. Die Schnittstelle einer dritten Partei 1090 kann erlauben, dass eine dritte Partei, wie beispielsweise ein Anwender, ein Bediener oder ein Administrator, eine Schnittstelle mit der Computerumgebung bildet. Nachdem die Einhgabeeinheit 1070 eine Anfrage detektiert hat, kann die Eingabeeinheit 1070 die API-Einheit 1065 verwenden, um die Anfrage zu der Mehrfachwert-Entpackungsmaschine 1080 zu kommunizieren. Die Mehrfachwert-Entpackungsmaschine 1080 kann über die API-Einheit 1065 mit der Kryptografiemaschine 1085 interagieren, um die Anfrage zu detektieren und zu verarbeiten. Unter Verwendung der API-Einheit 1065 kann die Mehrfachwert-Entpackungsmaschine 1080 mit der Schnittstelle einer dritten Partei 1090 interagieren, um zu erlauben, dass eine dritte Partei die Operationen auf der Clientseite anschaut oder managt.
  • In einigen Fällen kann die Logikeinheit 1060 konfiguriert sein, um den Informationsfluss unter den Einheiten zu steuern und die Dienste zu dirigieren, die durch die API-Einheit 1065, die Eingabeeinheit 1070, die Ausgabeeinheit 1075, die Mehrfachwert-Entpackungsmaschine 1080, die Kryptografiemaschine 1085 und die Schnittstelle einer dritten Partei 1090 zur Verfügung gestellt sind, und zwar bei einigen Implementierungen, die oben beschrieben sind. Beispielsweise kann der Ablauf von einem oder mehreren Prozessoren oder Implementierungen durch die Logikeinheit 1060 allein oder in Verbindung mit der API-Einheit 1065 gesteuert werden.
  • Wie es in 10B gezeigt ist kann (können) ein Prozessor(en) 1010 unter irgendeinem Betriebssystem (OS) (nicht gezeigt) in einer natürlichen oder virtuellen Umgebung ausführen. Eine oder mehrere Anwendungen kann oder können verwendet werden, die eine Logikeinheit 1060, eine Anwendungsprogrammierschnittstelle-(API-)Einheit 1065, eine Eingabeeinheit 1070, eine Ausgabeeinheit 1075, eine Mehrfachwert-Packungsmaschine 1082, eine Serverseiten-Verschlüsselungseinheit 1087, eine Schnittstelle einer dritten Partei 1092 und einen Kommunikationsmechanismus zwischen Einheiten 1095 für die unterschiedlichen Einheiten, um miteinander, mit dem OS und mit anderen Anwendungen (nicht geziegt) zu kommunizieren, enthalten. Beispielsweise können die Mehrfachwert-Packungsmaschine 1082, die Serverseiten-Verschlüsselungseinheit 1087 und die Schnittstelle einer dritten Partei 1092 einen oder mehrere Prozesse implementieren, die in den 7 und 8 gezeigt sind. Die beshriebenen Einheiten und Elemente können in Bezug auf Aussehen, Funktion, Konfiguration oder Implementierung variiert werden und sind nicht auf die zur Verfügung gestellte Beschreibung beschränkt.
  • Bei einigen Implementierungen kann, wenn Information oder eine Ausführungsanweisung durch die API-Einheit 1065 empfangen wird, sie zu einer oder mehreren anderen Einheiten (z.B. der Logikeinheit 1060, der Eingabeeinheit 1070, der Ausgabeeinheit 1075, der Mehrfachwert-Packungsmaschine 1082, der Serverseiten-Verschlüsselungseinheit 1087 und der Schnittstelle einer dritten Partei 1092) kommuniziert werden. Beispielsweise kann die Mehrfachwert-Packungsmaschine 1082 das Erzeugen von jeder der einzelnen Nutzlasten und das Verschlüsseln der Datenwerte in jeder der einzelnen Nutzlasten (z.B. ein Packen) durchführen, wie es oben in Bezug auf die 7 und 8 beschrieben ist. Die Serverseiten-Verschlüsselungseinheit 1087 kann IDs des Servers oder andere Werte, wie es nötig ist, um die oben in Bezug auf die 7 und 8 erklärten Operationen durchzuführen, verschlüsseln. Die Schnittstelle einer dritten Partei 1092 kann erlauben, dass eine dritte Partei, wie beispielsweise eine Anwender, ein Bediener oder ein Administrator, eine Schnittstelle mit der Computerumgebung von der Serverseite aus bildet. Nachdem die Eingabeeinheit 1070 eine Anfrage detektiert hat, kann die Eingabeeinheit 1070 die API-Einheit 1065 verwenden, um die Anfrage zu der Mehrfachwert-Packungsmaschine 1082 zu kommunizieren. Die Mehrfachwert-Packungsmaschine 1082 kann über die API-Einheit 1065 mit der Serverseiten-Verschlüsselungseinheit 1087 interagieren, um die Anfrage zu detektieren und zu verarbeiten. Unter Verwendung der API-Einheit 1065 kann die Mehrfachwert-Packungsmaschine 1082 mit der Schnittstelle einer dritten Partei 1092 interagieren, um zu erlauben, dass eine dritte Partei die Operationen auf der Serverseite anschaut oder managt.
  • In einigen Fällen kann die Logikeinheit 1060 konfiguriert sein, um den Informationsfluss zwischen den Einheiten zu steuern und die Dienste zu dirigieren, die durch die API-Einheit 1065, die Eingabeeinheit 1070, die Ausgabeeinheit 1075, die Mehrfachwert-Packungsmaschine 1082, die Serverseiten-Verschlüsselungseinheit 1087 und die Schnittstelle einer dritten Partei 1092 zur Verfügung gestellt sind, und zwar bei einigen Implementierungen, die oben beschrieben sind.
  • Irgendwelche der hierin beschriebenen Softwarekomponenten können eine Vielfalt von Formen annehmen. Beispielsweise kann eine Komponente ein alleinstehendes Softwarepaket sein oder sie kann ein Softwarepaket sein, das als ein „Werkzeug“ in einem umfassenderen Softwareprodukt enthalten ist. Es kann von einem Netzwerk, beispielsweise einer Webseite, als alleinstehendes Produkt oder als Add-In-Paket zur Installation in einer existierenden Softwareanwendung herunterladbar sein. Es kann auch als eine Client-Server-Softwareanwendung, als eine webfähige Softwareanwendung und/oder als eine mobile Anwendung verfügbar sein.
  • Bei Situationen oder Beispielen, bei welchen die hierin diskutierten Implementierungen persönliche Information über Anwender sammeln oder persönliche Information nutzen können, kann den Anwendern eine Gelegenheit zur Verfügung gestellt werden, zu kontrollieren, ob Programme oder Kenndaten Anwenderinformation (z.B. Information über eine soziales Netzwerk eines Anwenders, soziale Aktionen oder Aktivitäten, Beruf, Präferenzen eines Anwenders oder einen aktuellen Standort eines Anwenders) sammeln, oder zu kontrollieren, ob und/oder wie ein Inhalt vom Inhaltsserver zu empfangen ist, der für den Anwender relevanter sein kann. Zusätzlich können bestimmte Daten auf eine oder mehrere Weisen behandelt werden, bevor sie gespeichert oder verwendet werden, so dass persönlich identifizierbare Information entfernt wird.
  • Obwohl einige beispielhafte Implementierungen gezeigt und beschrieben worden sind, sind diese beispielhaften Implementierungen zur Verfügung gestellt, um den hierin beschrieben Gegenstand Leuten nahezubringen, die mit Gebiet vertraut sind. Es sollte verstanden werden, dass der hierin beschriebene Gegenstand in verschiedenen Formen implementiert werden kann, ohne dass er auf die beschriebenen beispielhaften Implementierungen beschränkt ist. Der hierin beschriebene Gegenstand kann ohne diese spezifisch definierten oder beschriebenen Sachen oder mit anderen oder unterschiedlichen Elementen oder Sachen, die nicht beschrieben sind, ausgeführt werden. Es wird von denjenigen, die mit diesem Gebiet vertraut sind, erkannt werden, dass bei diesen beispielhaften Implementierungen Änderungen durchgeführt werden können, ohne von dem hierin beschriebenen Gegenstand abzuweichen, wie er in den beigefügten Ansprüchen und ihren Äquivalenten definiert ist.

Claims (9)

  1. Computerimplementiertes Verfahren zum Durchführen einer homomorphen Verschlüsselung, um eine Summierung zu erzeugen, wobei das Verfahren umfasst: bei einem Client, Empfangen einer Vielzahl von verschlüsselten Nutzlasten, wobei die verschlüsselten Nutzlasten jeweils eine Vielzahl von Datenwerten haben; Multiplizieren von einem oder mehreren der Datenwerte von einer der verschlüsselten Nutzlasten mit einem oder mehreren anderen Datenwerten in einer oder mehreren der anderen verschlüsselten Nutzlasten auf eine Weise, die ein Produkt erzeugt, das die Summierung von Datenwerten entsprechend dem multiplizierten einen oder den multiplizierten mehreren Datenwerten der einen der verschlüsselten Nutzlasten und dem einen oder den mehreren anderen Datenwerten in der einen oder den mehreren anderen der verschlüsselten Nutzlasten darstellt, wobei jede der verschlüsselten Nutzlasten durch Packen der Datenwerte vor einer Verschlüsselung von jeder der verschlüsselten Nutzlasten erzeugt wird, wobei die Datenwerte jeweils von den verschlüsselten Nutzlasten bei einer unteren Hälfte der verschlüsselten Nutzlast positioniert sind und eine obere Hälfte von jeder der verschlüsselten Nutzlasten leer ist; Durchführen einer Potenzierungsoperation an der Vielzahl von Datenwerten von jeder der verschlüsselten Nutzlasten, um eine Position von einem der Datenwerte innerhalb jeder der verschlüsselten Nutzlasten in der unteren Hälfte zu einer vorgeschriebenen Position in der oberen Hälfte von jeder der verschlüsselten Nutzlasten zu verschieben; und Multiplizieren des einen der verschobenen Datenwerte bei der vorgeschriebenen Position in der oberen Hälfte von jeder der verschlüsselten Nutzlasten mit dem einen oder den mehreren anderen verschobenen Datenwerten bei der vorgeschriebenen Position in der oberen Hälfte der einen oder mehreren der anderen verschlüsselten Nutzlasten.
  2. Computerimplementiertes Verfahren nach Anspruch 1, ferner umfassend: Arbeiten an verschlüsselten der Vielzahl von Datenwerten, die einen Vektor von einem oder mehreren der Datenwerte bei einer Vielzahl von Positionen darstellen, um wenigstens eines von folgendem durchzuführen: Multiplizieren der verschlüsselten Nutzlasten durch Verschlüsselung von konstanten Werten und Multiplizieren der verschlüsselten Nutzlasten, um die Positionen der Datenwerte, die zu dem Vektor gehören, in der Nutzlast zu verschieben.
  3. Computerimplementiertes Verfahren nach Anspruch 2, wobei das Multiplizieren ein Multiplizieren des einen oder der mehreren der Datenwerte der einen der verschlüsselten Nutzlasten bei einer ersten Position im Vektor mit dem einen oder den mehreren anderen Datenwerten in der einen oder den mehreren anderen verschlüsselten Nutzlasten bei einer zweiten Position im Vektor umfasst, um das Produkt zu erzeugen, das die Summierung der Datenwerte entsprechend dem multiplizierten einen oder den multiplizierten mehreren Datenwerten der einen der verschlüsselten Nutzlasten und dem einen oder den mehreren anderen Datenwerten in der einen oder den mehreren anderen der verschlüsselten Nutzlasten darstellt, dargestellt als ein unverschlüsselter Wert bei einer dritten Position im Vektor bei der resultierenden verschlüsselten Nutzlast des Produkts.
  4. Computerimplementiertes Verfahren nach Anspruch 1, wobei jeder der Datenwerte auf jeder der verschlüsselten Nutzlasten von anderen Datenwerten auf jeder der verschlüsselten Nutzlasten durch einen Schutz mit einer Länge, die eine vorgeschriebene Anzahl von Bits ist, beabstandet ist.
  5. Computerimplementiertes Verfahren nach Anspruch 1, wobei die Summierung einen Ausgabenwert umfasst.
  6. Computerimplementiertes Verfahren nach Anspruch 1, wobei eine Blockgröße der Nutzlast 64 Bits ist.
  7. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Empfangen ein Empfangen einer Vielzahl von ersten Schlüsseln umfasst, die mit einem ersten Typ von Wert assoziiert sind, und wobei jede der verschlüsselten Nutzlasten die Vielzahl von Datenwerten hat, wobei jeder der ersten Schlüssel mit einem entsprechenden der Datenwerte innerhalb von jeder der verschlüsselten Nutzlasten assoziiert ist; und Bringen der Vielzahl von ersten Schlüsseln, die mit dem ersten Typ von Wert assoziiert sind, in Übereinstimmung mit einer Vielzahl von zweiten Schlüsseln, die mit einem zweiten Typ von Wert assoziiert sind, um eine Schnittmenge zu definieren, wobei das Multiplizieren ein Multiplizieren des einen oder der mehreren Datenwerte von jeder der verschlüsselten Nutzlasten, die in der Schnittmenge enthalten ist, mit dem einen oder den meheren anderen Datenwerten in der einen oder den mehreren der anderen verschlüsselten Nutzlasten, die in der Schnittmenge enthalten sind, um das Produkt zu erzeugen, das eine Darstellung eines verschlüsselten Textes einer Summierung der Datenwerte in Klartext ist.
  8. Computerimplementiertes Verfahren nach Anspruch 7, ferner umfassend: Erzeugen der Vielzahl von zweiten Schlüsseln, die mit dem zweiten Typ von Wert assoziiert sind, durch Verschlüsseln von zweiten Werten, um verschlüsselte zweite Werte zu erzeugen, und externes Verschlüsseln der verschlüsselten zweiten Werte.
  9. Computerimplementiertes Verfahren nach Anspruch 1, ferner umfassend: Verblenden des Produkts mit einem Zufallswert r; und Subtrahieren des Zufallswerts r von einem verblendeten, entschlüsselten Wert des Produkts, um die Summierung zu erzeugen.
DE112015005893.1T 2015-01-06 2015-11-10 Systeme und Verfahren für ein Mehrfachwert-Packungsschema für homomorphe Verschlüsselung Active DE112015005893B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/590,479 US9641318B2 (en) 2015-01-06 2015-01-06 Systems and methods for a multiple value packing scheme for homomorphic encryption
US14/590,479 2015-01-06
PCT/US2015/059874 WO2016111745A1 (en) 2015-01-06 2015-11-10 Systems and methods for a multiple value packing scheme for homomorphic encryption

Publications (2)

Publication Number Publication Date
DE112015005893T5 DE112015005893T5 (de) 2017-09-21
DE112015005893B4 true DE112015005893B4 (de) 2021-08-12

Family

ID=54705823

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015005893.1T Active DE112015005893B4 (de) 2015-01-06 2015-11-10 Systeme und Verfahren für ein Mehrfachwert-Packungsschema für homomorphe Verschlüsselung

Country Status (5)

Country Link
US (2) US9641318B2 (de)
CN (2) CN109905227B (de)
DE (1) DE112015005893B4 (de)
GB (2) GB2549237B (de)
WO (1) WO2016111745A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3001900C (en) * 2015-10-13 2024-02-20 Grant Colhoun Systems and methods for facilitating secure electronic transactions
US10187375B1 (en) * 2016-04-22 2019-01-22 Walgreen Co. Cryptographic services engine
CN111095332B (zh) 2017-07-06 2023-12-08 罗伯特·博世有限公司 用于保护隐私的社交媒体广告的方法和系统
CN109726580B (zh) 2017-10-31 2020-04-14 阿里巴巴集团控股有限公司 一种数据统计方法和装置
US11250116B2 (en) * 2019-10-25 2022-02-15 Visa International Service Association Optimized private biometric matching
CN110851869B (zh) * 2019-11-14 2023-09-19 深圳前海微众银行股份有限公司 敏感信息处理方法、设备及可读存储介质
US11411725B2 (en) 2020-04-15 2022-08-09 Sap Se Efficient distributed secret shuffle protocol for encrypted database entries using independent shufflers
US11368281B2 (en) * 2020-04-15 2022-06-21 Sap Se Efficient distributed secret shuffle protocol for encrypted database entries using dependent shufflers
US11368296B2 (en) * 2020-04-15 2022-06-21 Sap Se Communication-efficient secret shuffle protocol for encrypted data based on homomorphic encryption and oblivious transfer
US11356241B2 (en) 2020-04-15 2022-06-07 Sap Se Verifiable secret shuffle protocol for encrypted data based on homomorphic encryption and secret sharing
US11494510B2 (en) 2021-03-04 2022-11-08 Inmarket Media, Llc Multi-touch attribution and control group creation using private commutative encrypted match service
CN113505386A (zh) * 2021-07-26 2021-10-15 上海点融信息科技有限责任公司 基于区块链和同态算法的数据处理方法、装置及存储介质
CN113922944B (zh) * 2021-10-20 2023-12-22 张家口佰信网络科技有限公司 一种基于多值单量子态的量子同态加解密方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005122466A1 (fr) * 2004-05-19 2005-12-22 France Telecom Abrege descriptif procede et systeme de signature de liste
EP1891626A1 (de) * 2005-06-03 2008-02-27 Koninklijke Philips Electronics N.V. Homomorphe verschlüsselung für sichere wasserzeichen
DE102005030031B4 (de) * 2005-06-27 2007-08-02 Nec Europe Ltd. Verfahren zum Datenmanagement in einem Sensornetzwerk
US7860244B2 (en) * 2006-12-18 2010-12-28 Sap Ag Secure computation of private values
US8630422B2 (en) 2009-11-10 2014-01-14 International Business Machines Corporation Fully homomorphic encryption method based on a bootstrappable encryption scheme, computer program and apparatus
US8625782B2 (en) 2010-02-09 2014-01-07 Mitsubishi Electric Research Laboratories, Inc. Method for privacy-preserving computation of edit distance of symbol sequences
US8667062B2 (en) 2011-02-22 2014-03-04 Nokia Corporation Method and apparatus for preserving privacy for appointment scheduling
US20130097417A1 (en) * 2011-10-13 2013-04-18 Microsoft Corporation Secure private computation services
WO2014113132A2 (en) * 2012-11-16 2014-07-24 Raytheon Bbn Technologies Corp. Method for secure symbol comparison
WO2014137393A1 (en) * 2013-03-04 2014-09-12 Thomson Licensing Privacy-preserving ridge regression using masks
CN103401871B (zh) * 2013-08-05 2016-08-10 苏州大学 一种面向同态加密的密文定序方法及系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
BETHENCOURT, J. [et al.]: New Techniques for Private Stream Searching, February 2006, CMU-CS-06-106,URL: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.138.3281&rep=rep1&type=pdf [abgerufen im Internet am10.07.2018]
DANEZIS, G. [et al.]: Space-Efficient Private Search with Applicationsto Rateless Codes, 12 February 2007, pp. 148–162, 2007, IFCA/Springer-Verlag Berlin Heidelberg 2007, URL: https://link.springer.com/chapter/10.1007/978-3-540-77366-5_15 [abgerufen im Internet am10.07.2018]
FINIASZ, M [et al.]: Private Stream Search at the same communication cost as a regular search: Role of LDPC codes, 2012 IEEE International Symposium on Information Theory Proceedings, Year: 2012, Pages: 2556 – 2560, URL: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6283979 [abgerufen im Internet am10.07.2018]
PAILLIER, P. [et al.]: Public-Key Cryptosystems based on Composite Degree Residuosity Classes, EUROCRYPT‘99, LNCS 1592, pp. 223-238, 1999, Springer-Verlag-Berlin Heidelberg 1999, URL: [abgerufen im Internet am10.07.2018]

Also Published As

Publication number Publication date
US9847871B2 (en) 2017-12-19
US20160359617A1 (en) 2016-12-08
US20170149558A1 (en) 2017-05-25
GB2549237A (en) 2017-10-11
CN109905227A (zh) 2019-06-18
CN107113162B (zh) 2019-04-16
GB201806390D0 (en) 2018-06-06
WO2016111745A1 (en) 2016-07-14
GB2558834A (en) 2018-07-18
CN109905227B (zh) 2021-10-01
GB2558834B (en) 2019-12-25
DE112015005893T5 (de) 2017-09-21
CN107113162A (zh) 2017-08-29
GB2549237B (en) 2018-06-27
GB201712423D0 (en) 2017-09-13
US9641318B2 (en) 2017-05-02

Similar Documents

Publication Publication Date Title
DE112015005893B4 (de) Systeme und Verfahren für ein Mehrfachwert-Packungsschema für homomorphe Verschlüsselung
US11558358B2 (en) Secure analytics using homomorphic and injective format-preserving encryption
DE102019208032A1 (de) Verfahren und system für fehlertolerante und sichere mehrparteienberechnung mit spdz
DE112018000779T5 (de) Tokenbereitstellung für Daten
DE60026868T2 (de) Ein einfaches implementierungsverfahren für kryptographische primitiva mittels elementar-register-operationen
DE102015208142A1 (de) Kompakter unscharfer privater Abgleich unter Verwendung einer vollhomomorphen Verschlüsselungsmethode
DE69917356T2 (de) Sicherheitstechnik an einem Computernetzwerk
DE112016004274T5 (de) Systeme und Verfahren zur Datenverlustvermeidung unter Wahrung von Vertraulichkeit
Norouzi et al. Breaking a novel image encryption scheme based on an improper fractional order chaotic system
WO2019208484A1 (ja) 秘密集約総和システム、秘密計算装置、秘密集約総和方法、およびプログラム
Cheng et al. AC-coefficient histogram-based retrieval for encrypted JPEG images
CN110505054B (zh) 一种基于动态白盒的数据处理方法、装置及设备
CN111797411B (zh) 一种3d模型加密方法以及装置
DE112022003853T5 (de) Privatsphäre bewahrendes computing mit drittanbieterdiensten
DE102019120485A1 (de) Zufallszahlengenerator, Verschlüsselungsvorrichtung mit demselben und Verfahren zum Betreiben der Verschlüsselungsvorrichtung
DE112020000117T5 (de) Verfahren zur aggregierung von guthaben über interaktionen
DE112019005865T5 (de) Datenverarbeitungsvorrichtung und datenverarbeitungsverfahren
Anees et al. Construction of nonlinear component for block cipher based on one-dimensional chaotic map
WO2016139371A1 (de) Verfahren und system zum verwalten von nutzerdaten eines nutzerendgeräts
CN111798236B (zh) 交易数据加、解密方法、装置及设备
Das et al. Multiple-image encryption using genetic algorithm
KR101751971B1 (ko) 암호화 상태의 이미지에 대한 영상처리방법 및 영상처리장치
US11146397B2 (en) Encoding abelian variety-based ciphertext with metadata
DE112014006666T5 (de) Verschlüsselungsvorrichtung, Speichersystem, Entschlüsselungsvorrichtung, Verschlüsselungsverfahren, Entschlüsselungsverfahren, Verschlüsselungsprogramm und Entschlüsselungsprogramm
CN115563564B (zh) 决策树模型的处理方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: KILBURN & STRODE LLP, GB

Representative=s name: KILBURN & STRODE LLP, NL

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: KILBURN & STRODE LLP, GB

Representative=s name: KILBURN & STRODE LLP, NL

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R082 Change of representative

Representative=s name: KILBURN & STRODE LLP, NL

R020 Patent grant now final