-
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 2∧32 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.