-
VERWEIS AUF VERWANDTE ANMELDUNGEN
-
Die vorliegende Anmeldung beansprucht die Priorität der vorläufigen US-Anmeldung mit der Seriennr. 62/680.364 mit dem Titel „METHOD AND SYSTEM FOR FAULT TOLERANT AND SECURE MULTIPARTY COMPUTATION WITH SPDZ“ von Zheng et al., eingereicht am 4. Juni 2018, deren Offenbarung durch Verweis vollständig hierin aufgenommen ist.
-
GEBIET DER ERFINDUNG
-
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf Mehrparteienberechnungs- (MPC-) Protokolle, insbesondere auf das SPDZ-(ausgesprochen „speedz“) MPC-Protokoll.
-
HINTERGRUND
-
In einem sicheren Mehrparteienberechnungs- (MPC-) Protokoll berechnen mehrere Parteien gemeinsam eine Funktion auf Grundlage ihrer privaten Eingaben und erfahren nur die Ausgabe der Funktion. Das SPDZ-Protokoll ist eines der praktischsten und aktiv sichersten MPC-Protokolle und erzielt Sicherheit gegen eine Vielzahl von korrumpierten Parteien mit böswilligen Absichten. Genauer gesagt arbeitet das SPDZ-Protokoll gemäß dem Vorverarbeitungsmodell: Ohne zukünftige Eingaben zu kennen, werden in der Offline-Phase die zeitaufwändigen Aufgaben zum Erzeugen von Tupeln durchgeführt; und in der Online-Phase werden die spezifischen Funktionen mit den privaten Eingaben durchgeführt und jene Tupel aus der Offline-Phase verwendet. Insbesondere ist SPDZ ein universelles MPC-Protokoll, das die gemeinsame Berechnung von arithmetischen Schaltungen ermöglicht.
-
Das SPDZ-Protokoll bietet zwar große Vorteile in Hinblick auf Sicherheit und Leistung, unterstützt aber keinerlei Fehlertoleranz: Es verlangt, dass alle Parteien in der Offline-Phase in der Online-Phase präsent sind. Das könnte aus Sicht des verteilten Systems problematisch werden, da nach der Offline-Phase ein oder mehrere Parteien nicht mehr verfügbar sein könnten. Der einfache Ansatz zur Lösung dieses Problems besteht darin, die Offline-Phase erneut durchzuführen, was jedoch nicht vielversprechend ist, da dadurch alle erzeugten Tupel (sowie private Eingabeteile, wenn SPDZ als Dienst genutzt wird, siehe Abschnitt 3.4) vergeudet werden.
-
Benötigt wird ein fehlertolerantes SPDZ-Protokoll, das sichere Mehrparteienberechnung ermöglicht, auch wenn manche Parteien während der Online-Phase nicht mehr verfügbar sind.
-
Figurenliste
-
- 1 zeigt die Schritte des SPDZ-Protokolls, Share(cts, P1, ..., Pn) wobei cts = Encpk(s) öffentlich bekannt ist und P1, ..., Pn n für Parteien stehen.
- 2 zeigt die Schritte des SPDZ-Protokolls Add([x1], [x2], ... , [xl]), wobei [xj] der Teil des Werts xj, 1 ≤ j ≤ l ist.
- 3 zeigt den Schritt des SPDZ-Protokolls Mult([x], [y]), wobei [x] der Teil des Werts x ist und [y] der Teil des Werts y ist.
- 4 den Algorithmus für ein ReShare-Protokoll für fehlertolerantes SPDZ gemäß der vorliegenden Offenbarung zeigt.
- 5 zeigt den Algorithmus für ein ReCombine-Protokoll für fehlertolerantes SPDZ.
- 6 zeigt eine Tabelle der Zwischenergebnisse, nachdem eine Partei den von ihr gehaltenen geheimen Teil an andere Parteien neu verteilt.
- 7 zeigt eine Tabelle, die die Endergebnisse zeigt, nachdem jede Partei ihren geheimen Teil an die anderen Parteien neu verteilt hat.
- 8 zeigt eine Tabelle, die das Endergebnis nach Durchführung des ReShare-Protokolls zeigt.
- 9 zeigt den Algorithmus für die Phase der Neuverteilung der geheimen Teile, der auf dem ReShare-Protokoll basiert.
- 10 zeigt den Algorithmus für die Phase der Neuverteilung der geheimen Teile, der auf dem ReCombine-Algorithmus basiert.
- 11 zeigt eine schematische Darstellung der Architektur des SPDZ-Protokolls in Gegenüberstellung zu der Architektur des vorgeschlagenen fehlertoleranten SPDZ-Protokolls.
- 12 zeigt eine Tabelle, die einen Vergleich des SPDZ-Protokolls und des vorgeschlagenen fehlertoleranten SPDZ-Protokolls zeigt.
- 13 ist eine schematische Darstellung eines Systems, das konfiguriert ist, um sichere Mehrparteienberechnung unter Verwendung von SPDZ gemäß der vorliegenden Offenbarung durchzuführen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Für ein besseres Verständnis der Grundsätze der Offenbarung wird nun auf die in den Zeichnungen dargestellten und in der nachstehenden schriftlichen Beschreibung beschriebenen Ausführungsformen Bezug genommen. Es ist klar, dass dadurch keine Einschränkung des Schutzumfangs der Offenbarung beabsichtigt wird. Es ist auch klar, dass die vorliegende Offenbarung etwaige Änderungen und Modifikationen in Bezug auf die veranschaulichten Ausführungsformen umfasst und ferner Anwendungen der Grundsätze der Offenbarung umfasst, wie sie Fachleuten auf dem Gebiet, das die vorliegende Offenbarung betrifft, gewöhnlicherweise in den Sinn kommen würden.
-
Die vorliegende Offenbarung ist auf die Lösung des Problems der Fehlertoleranz für das SPDZ-Protokoll ausgerichtet. Ein Ziel der vorliegenden Offenbarung besteht darin, sicherzustellen, dass das SPDZ-Protokoll in der Lage ist, korrekt zu funktionieren, nachdem manche Parteien in der Online-Phase nicht mehr verfügbar sind. Wie nachstehend beschrieben, wird ein ReShare-Protokoll vorgeschlagen, in dem der durch jede Partei gehaltene geheime Teil (in Bezug auf einen geheimen Wert) auf andere Parteien neu verteilt wird, und ein ReCombine-Protokoll, in dem die neu verteilten geheimen Teile entsprechend den verfügbaren Parteien neu kombiniert werden. Auf Grundlage der beiden Protokolle werden eine Phase der Neuverteilung der geheimen Teile und eine Phase der Neukombination der geheimen Teile offenbart, die im SPDZ-Protokoll zwischen der Offline- und der Online-Phase angeordnet werden können. Das erweiterte SPDZ-Protokoll stellt das vielversprechende Fehlertoleranzmerkmal bereit, das sicherstellt, dass, auch wenn einige Parteien nach der Offline-Phase nicht mehr verfügbar sind, die übrigen Parteien die Online-Phase weiterhin korrekt durchführen können.
-
Wie hierin verwendet, bezieht sich der Begriff „Beaver-Tripel“ auf eine Menge von drei Werten (a, b, c), wobei a und b einheitlich nach dem Zufallsprinzip ausgewählt werden und c gleich dem Produkt von a multipliziert mit b ist: c = ab. Alle drei Zahlen im Beaver-Tripel gehören zu einem endlichen Körper Fp, wobei p ein Modulo-Wert ist. In einigen veranschaulichenden Ausführungsformen, bei denen p = 2n - 1, der endliche Körper Fp alle ganzen Zahlen in einem Bereich von [-2n/2, 2n/2 - 1] umfasst, wobei n 64, 80 oder 128 ist, wobei auch andere endliche Körper verwendet werden können. Wie nachstehend näher beschrieben ist, erzeugen die Parteien in einem modifizierten SPDZ-Protokoll während einer Offline-Rechenphase Beaver-Tripel und verteilen Teile der Beaver-Tripel sicher für die spätere Verwendung im Rahmen einer Online-Rechenphase für die Mehrparteienberechnung innerer Produkte.
-
Wie hierin verwendet, beziehen sich die Begriffe „Homomorphismus“ und „Homomorphie“ auf eine Eigenschaft mancher kryptografischer Systeme, in denen mathematische Operationen auf verschlüsselte Werte angewendet werden können, um ein verschlüsseltes Ergebnis zu erzeugen, das dem Ergebnis der Durchführung derselben Operationen mit den Klartextwerten entspricht, ohne den Inhalt der verschlüsselten Werte oder das Ergebnis der Rechenvorrichtung, die die Operation durchführt, zu offenbaren. So speichert beispielsweise der verschlüsselte Wert c' = a' + b', wenn zwei Werte a = 1 und b = 2 und ihre jeweiligen verschlüsselten Entsprechungen a'und b'in einem kryptografischen System gegeben sind, das additive Homomorphismen bereitstellt, eine verschlüsselte Darstellung der Zahl „3“ (1 + 2 = 3). Der Wert c' kann von einem Computer berechnet werden, der die Klartextwerte von a' oder b' nicht bestimmen kann, und in einigen Fällen kann der Computer, der c' erzeugt, c'entschlüsseln, um die Klartextsumme (3) abzurufen, ohne in der Lage zu sein, die ursprünglichen Klartextwerte von a oder b zu bestimmen. Subtraktiver Homomorphismus gilt auf ähnliche Weise für eine Operation, bei der zwei verschlüsselte Werte (z.B. a = 2, b = 1, c' = a' - b', Entschlüsselung (c) = 1) subtrahiert werden, und in den hierin beschriebenen Ausführungsformen entspricht subtraktiver Homomorphismus auch additivem Homomorphismus, bei dem ein oder mehrere ausgewählte Werte negiert werden, um eine Additionsoperation durchzuführen, die der Subtraktion entspricht. Auf ähnliche Weise ist in einem kryptografischen System, das multiplikativen Homomorphismus bereitstellt, das Produkt von zwei verschlüsselten Werten (a' und b) ein weiterer verschlüsselter Wert (c), der in denselben Wert entschlüsselt wird wie das Produkt von den beiden Klartextwerten (a und b) (z.B. a = 2, b = 3, c' = (a'b'), Entschlüsselung (c) = 6). In den hierin beschriebenen Ausführungsformen bezieht sich die Notation
auf eine Addition zwischen zwei verschlüsselten Werten in einem kryptographischen System, das additiven Homomorphismus bereitstellt,
bezieht sich auf eine Subtraktionsoperation zwischen zwei verschlüsselten Werten in einem kryptographischen System, das subtraktiven Homomorphismus bereitstellt, wobei Subtraktion als Addition eines negierten Wertes betrachtet werden kann, und die Darstellung bezieht sich auf ähnliche Weise auf eine Multiplikation zwischen zwei verschlüsselten Werten in einem kryptographischen System, das multiplikativen Homomorphismus bereitstellt.
-
Wie hierin verwendet, bezieht sich der Begriff λ auf einen Nachrichtenauthentifizierungscode- (MAC-) Kryptoschlüssel, der aus dem endlichen Körper Fp (λ ∈ Fp) ausgewählt ist. Jeder der Parteien Pi, 1 ≤ i ≤ n, die den inneren Produktvorgang durchführen, wird ein individueller Teil λi des gesamten Geheimnisses λ bereitgestellt, wobei λ die Summe aller einzelnen Geheimnisse (λ = λ1 + ... + λn) ist. Keine der Parteien hat Zugriff auf den vollständigen MAC-Kryptoschlüssel λ. Der MAC-Kryptoschlüssel λ kann durch Multiplikation λx einen verschlüsselten MAC-Wert erzeugen, der einem Nachrichtenauthentifizierungscode für einen Wert x entspricht, und, wie nachstehend beschrieben, kann der MAC-Schlüssel λ selbst unter Verwendung eines öffentlichen Schlüssels verschlüsselt werden, um einen verschlüsselten Ciphertext des MAC-Schlüssels ctλ zu erzeugen, der von mehreren Parteien gemeinsam genutzt werden kann. Der verschlüsselte MAC-Wert wird zur Überprüfung von Informationen verwendet, die von anderen Parteien empfangen werden, und um Abwehr gegen Parteien mit böswilligen Absichten zu leisten, die gemeinsam genutzte Daten während der Mehrparteienberechnung ändern. Bei einigen Ausführungsformen, die hierin beschrieben sind, kann die Verwendung des MAC-Schlüssels λ in Konfigurationen von Mehrparteienberechnungssystemen unterlassen werden, die den Schutz der ursprünglichen Eingabedaten gewährleisten, aber den Teilnehmern vertrauen, dass diese während der Mehrparteienberechnungen akkurate Datenausgaben bereitstellen.
-
Wie hierin verwendet, bezieht sich der Begriff ε = (Enc, Dec) auf ein asymmetrisches Verschlüsselungssystem für öffentliche Schlüssel, das zumindest additiven/subtraktiven und multiplikativen Homomorphismus mit Schwellenentschlüsselung bereitstellt. Der Begriff sk bezieht sich auf den privaten Schlüssel in ε, der für die Entschlüsselung von Ciphertext mit der Dec-Funktion verwendet wird, und der Begriff pk bezieht sich auf den öffentlichen Schlüssel in ε, der für die Verschlüsselung von Klartext verwendet wird, um unter Verwendung der Enc-Funktion Ciphertext zu erzeugen. Jede der Parteien Pi, 1 ≤ i ≤ n, die die Mehrparteienberechnung des inneren Produkts durchführt, hat Zugriff auf den vollständigen öffentlichen Schlüssel pk und einen Teil des privaten Schlüssels ski, wobei sk = sk1 + ... + skn keine der Parteien Zugriff auf den vollständigen privaten Schlüssel sk hat.
-
Wie hierin verwendet, bezeichnet die Notation [] für einen Wert (z.B. [x]), einen „Teil“ des Werts oder dass mehrere Parteien jeweils über einen Teil [x] des Gesamtwerts x verfügen, wobei der Zugriff auf einen Teil [x] keine Rückschlüsse auf den tatsächlichen Wert von x zulässt. In den nachstehend beschriebenen Ausführungsformen ist der Wert x ein verschlüsselter Ciphertext-Wert, und die additiven homomorphen Eigenschaften der hierin verwendeten kryptographischen Systeme ermöglichen es, den Gesamtwert x in einzelne Teile mit einem Gesamtwert von x aufzuteilen. Bei der Berechnung von inneren Produkten aus zwei Vektoren, die mehrere Elemente aufweisen, stellt jedes Element eines Vektors einen Wert dar, der von zwei oder mehreren Knoten auf sichere Weise gemeinsam genutzt wird. Mathematisch ist [x]={(x1,γ1(x)),...,(xn,γn(x))} für insgesamt n Parteien Pi, 1 ≤ i ≤ n, wobei jeder Teil[xi] ein Teil des Gesamtwertes [x] ist, wobei gilt x = x1 + x2 ... + xn, der Term yi(x) für jede Partei ein anderer individueller Teil des Wertes Hx, der die Ausgabe des Kryptoschlüssels λ multipliziert mit dem Wert x (Hx= λx) ist, und sind die einzelnen Teile γi(x), ist die Summe Hx = γ1(x) + γ2(x) + ... + γn(x). Jede Partei speichert einen Teilwert [x] als eines der Tupel (xi, γi(x)) und gibt dieses Tupel nicht direkt an andere Parteien in der Gruppe weiter.
-
Das SPDZ-Protokoll verwendet einen Ansatz mit zwei Phasen, der eine „Offline“-Phase von Berechnungen umfasst, die mehrere Parteien für den sicheren Austausch von zufällig generierten Zahlen, die als Beaver-Tripel bekannt sind, untereinander verwenden. Die Beaver-Tripel sind nicht die eigentlichen Daten, die für die Knoten von Interesse sind, sondern werden in der nachfolgenden Online-Phase verwendet, um die Berechnung gemeinsamer Ergebnisse zu ermöglichen und gleichzeitig zu verhindern, dass jede Partei die privaten Daten von einer oder mehreren weiteren Parteien ermitteln kann. Die Offline-Phase leitet Berechnungen zur Berechnung und gemeinsamen Nutzung der Beaver-Tripel ein, wobei dies Verschlüsselungsoperationen umfasst, und gilt im Allgemeinen als die rechenintensivere Phase des SPDZ-Protokolls. In einer zweiten „Online“-Phase nutzen die Parteien die Beaver-Tripel und die eigentlichen Daten von Interesse, um sichere Mehrparteienberechnungen durchzuführen, einschließlich der oben beschriebenen Berechnung des inneren Produkts. Während das SPDZ-Protokoll bei der Durchführung von Berechnungen des inneren Produkts effektiv ist, leitet die große Anzahl von Multiplikationsoperationen, die bei der Berechnung des inneren Produkts während der Online-Phase stattfinden, zusätzliche Kommunikationsoperationen ein, die jeweils den Einsatz von Beaver-Tripeln erfordern und aufgrund der zugrunde liegenden Operationen, die SPDZ für Mehrparteienmultiplikationen implementiert, Rechenaufwand unter den Parteien erzeugen.
-
Vor der Offline- und Online-Phase müssen Kryptoschlüssel generiert werden, einschließlich öffentlicher kryptographischer Parameter, öffentlicher Schlüssel, privater Schlüsselteile (im Besitz jeder Partei) und MAC-Schlüsselteile (im Besitz jeder Partei). Insbesondere erhält jede Partei einen von n Teilen des MAC-Schlüssels, wobei n die Gesamtzahl der Parteien ist. Angenommen, dass λ der MAC-Schlüssel ist und λ1, + ... + λn geheime (MAC-) Teile sind, besitzt die Partei Pi, 1 ≤ i ≤ n, den geheimen Teil λi. Es ist anzumerken, dass dieser Schritt nur einmal ausgeführt wird, es sei denn, der MAC-Schlüssel muss aktualisiert werden.
-
Während der Offline-Phase des SPDZ-Protokolls wird eine ausreichende Anzahl von Multiplikationtripeln, insbesondere Beaver-Multiplikationstripeln, erzeugt, die es den Parteien ermöglichen, Produkte zu berechnen. Die Beaver-Multiplikationstripel bestehen aus drei Werten ([a], [b], [c]), die jeweils Teile von a, b, c sind, wobei a, b, c ∈ Fp zufällige Werte und c = ab sind. Diese Werte können durch den Kryptoanbieter generiert werden, und die daraus resultierenden Teile können vor der Online-Phase auf die Parteien aufgeteilt werden.
-
Bei einem Ciphertext ct
s = Enc
pk(s) für manche Werte s kann das SPDZ-Protokoll Share den geheimen Teil von s sicher verteilen, wie in
1 dargestellt. Protokoll Share(ct
s, P
1,...,P
n), wobei cts = Enc
pk(s) öffentlich bekannt ist und P
1,...,P
n für n Parteien stehen. Unter Bezugnahme auf
1 erzeugt jede Partei einen Wert f
i ∈ F
p, der nach dem Zufallsprinzip einen einheitlichen Wert hat, und verschlüsselt ihn zu einem Ciphertext ct
f1 = Enc
pk(f
i) (Block
100). Alle Parteien verbreiten dann ihre Ciphertexte, so dass jede Partei den Ciphertext ct
s+f = cts ct
f1 ... ct
fn berechnen kann. (Block
102). Alle Parteien entschlüsseln dann gemeinsam ct
s+f mit ihrem eigenen geheimen Teil des privaten Schlüssels sk und erhalten s + f, wobei gilt
(Block 104). Partei P
1 legt den geheimen Teil von s als s + f - f
1 fest und Partei P
i(i ≠ 1) legt den geheimen Teil von s als -f
i fest (Block 106).
-
Mit dem Protokoll Share und unter der Annahme, dass ctλ = Encpk(λ) der Ciphertext des MAC-Schlüssels λ ist, wird der Prozess des Generierens der Tripel ([a], [b], [c]) durchgeführt. Die folgenden Schritte können zum Generieren von [a] angewendet werden:
- • Partei Pi wählt einen Wert ai ∈ Fp nach dem Zufallsprinzip einheitlich aus und verschlüsselt diesen zu cta
i = Encpk(ai)
- • Eine ausgewählte Partei berechnet cta = cta
1 ... cta
n sowie ctλa = ctλ cta.
- • Alle Parteien zusammen führen Share(ctλa, P1, ..., Pn) aus, so dass Partei Pi, 1 ≤ i ≤ n einen geheimen Teil γi(a) von λa hält. Somit hält Partei i (ai, γi(a)), wobei a = a1 + ··· + an und λ × a = γ1(a) + ··· + γn(a).
-
Dieselben Schritte, die angewendet werden, um [a] zu generieren, werden wiederholt, um [b] zu generieren. Der Wert [c] wird so generiert, dass c = ab. Angenommen cta und ctb aus den Schritten 1 und 2, so gilt ctc = cta ctb. Das Protokoll Share(ctc, P1, ..., Pn) wird ausgeführt, so dass Partei i den geheimen Teil ci von c hält. Angenommen c + f bei der Ausführung eines Protokolls Share in Bezug auf ctc, kann ein neuer Ciphertext ct'c = Encpk(c+f) ctf
1 ... ctfn berechnet werden, wobei Encpk(c + f) ein neuer Ciphertext ist, in dem c + f sowie ctλc = ctλ ctc verschlüsselt werden. Alle Parteien zusammen führen Share(ctλc, P1, ..., Pn) aus, so dass Partei Pi, 1 ≤ i ≤ n einen geheimen Teil γi(c) von λc hält. Letztlich hält Partei i (ci, γi(c)), so dass gilt c = c1 + ... + cn und λc = γi(c) + ... + γn(c).
-
Wie auf dem Gebiet der Erfindung bekannt ist, erfordert das Generieren von Tripeln die Durchführung von Operationen mit öffentlichem Schlüssel (d.h. homomorphe Addition und Multiplikation über Ciphertext), weshalb die Offline-Phase für eine große Anzahl von Tripeln zeitaufwändig ist. Es ist anzumerken, dass ein Beaver-Multiplikationstripel eine Art Tupel ist; mehrere andere Tupel, wie z.B. inverse Tupel ([x], [1/x]), liegen auch im Protokoll SPDZ für andere Zwecke vor.
-
Da jede arithmetische Schaltung als eine Reihe von Additions- und Multiplikations-Gates dargestellt werden kann, konzentriert sich die Online-Phase darauf, wie man die Addition und Multiplikation sicher berechnet. Eine Mehrparteienaddition ermöglicht es mehreren Parteien, verschiedene Teile von / verschiedenen Werten zu addieren, um eine Summe zu erzeugen, und die Mehrparteienaddition umfasst auch Subtraktion durch das Negativsetzen der entsprechenden Werte, um eine Subtraktion durchzuführen. Eine Ausführungsform des SPDZ-Protokolls Add ist in
2 dargestellt. In einem einfachen Beispiel, wobei gilt / = 2, werden durch die Mehrparteienaddition die Teile von zwei Zahlen addiert, obwohl durch eine Mehrparteienaddition auch die Teile von mehr als zwei Zahlen addiert werden können. Die Terme [x
1], [x
2], ..., [x
l] stellen jeweils Teile von l verschiedenen Werten x
1,x
2, ..., x
l dar, die im Rahmen des Mehrparteienadditionsprozesses addiert werden. Im Kontext des vorliegenden Dokuments gibt die hochgestellte Darstellung keinen mathematischen Exponenten an. Wie oben beschrieben, umfasst jeder Teil ein Tupel (x
i, γ
i(x)). Während der Mehrparteienaddition berechnet jede Partei einen Wert z
i, der auf einer Summe der x
i Terme aus allen Teilen basiert:
und ein Wert γ
i(z), der auf einer Summe der γ
i(x) Terme aus allen Teilen basiert: γ
i(z) = γ
i(x
1) + γ
i(x
2) + ··· + γ
i(x
l). Diese Operationen ermöglichen es jeder der Parteien P
i, 1 ≤ i ≤ n, einen Teil [z
i] des Gesamtsummenwerts z und den Teil γ
i(z) des MAC-Werts ct
λz zu haben, wobei jede Partei das Tupel (z
i, γ
i(z)) hält. Wie oben angemerkt, hat jede Partei einen Teil [z
i] der Summe z, aber keine Partei hat Zugang zum tatsächlichen Summenwert von z, wodurch sichergestellt wird, dass selbst in einem Zweiparteienadditionsprozess eine Partei den Wert der anderen Partei nicht bestimmen kann, wenn die Summe und der Klartext eines der beiden Werte, die addiert werden, bekannt sind.
-
In der oben beschriebenen Mehrparteienaddition ist die Rechenkomplexität für jede Addition
(l) für l Teile, die addiert werden, und die Berechnungen umfassen vergleichsweise einfache Additionsoperationen, ohne die Verwendung des öffentlichen Schlüssels pk für weitere Verschlüsselungsoperationen zu erfordern. Darüber hinaus entfällt nach der Verteilung der Teile [x
1], [x
2], ..., [x
l] an die Parteien die Notwendigkeit der Kommunikation zwischen den Parteien oder der Verwendung eines Beaver-Tripels zur Berechnung des Teils der Summe [z
i] für jede Partei.
-
Eine Mehrparteienmultiplikation aktiviert jene Parteien, die die Teile [x] und [y] von zwei Werten x und y haben. Das Protokoll Mult in
3 zeigt, wie die Multiplikation sicher durchgeführt werden kann. Im Gegensatz zur Mehrparteienaddition, bei der Teile von mehr als zwei Werten addiert werden können, wird die Mehrparteienmultiplikation auf genau zwei Werte angewendet. Der Mehrparteienmultiplikationsprozess verwendet ein Beaver-Tripel ([a],[b],[c]), das in einer Offline-Phase geteilt wurde, die nachstehend beschrieben ist. Während des Mehrparteienmultiplikationsprozesses verwendet jede Partei P
i, 1 ≤ i ≤ n den oben beschriebenen Additionsprozess, um Teile der Eingabe [x] und einen negierten Beaver-Tripel-Teilwert [a] zu addieren: Add([x
i], - [a
i]). Auf ähnliche Weise verwendet jede Partei den Additionsprozess, der oben beschrieben ist, um Teile der Eingabe [y] und einen negierten Beaver-Tripel-Teilwert [b] zu addieren: Add([y
i], -[b
i]). Jede Partei verbreitet die Ergebnisse der beiden oben beschriebenen Additionen an alle der anderen Parteien: □ = □ - □ und □ = □ - □. Wie oben beschrieben, zeigen die Ergebnisse ε und ρ wegen des additiven Homomorphismus die Gesamtdifferenzen zwischen den Tupeln von x und a und den Tupeln von y und b. Der Mehrparteienmultiplikationsprozess wird unter Verwendung des c
i-Werts jedes Teils [c] in dem Beaver-Tripel fortgesetzt, wobei jede Partei zwei lokale Werte z
i und γ
i(z) erzeugt:
und
-
Der Mehrparteienmultiplikationsprozess ermöglicht es jeder Partei, einen Teil [zi] des Produkts der ursprünglichen Werte x und y (z = xy) zu halten, wobei erneut gilt [zj] = (zi, γi(z)), Wie bei dem Mehrparteienadditionsprozess verhindert der Teil [zi] aus dem Multiplikationsprozess, selbst wenn es nur zwei Parteien gibt, die an einer Mehrparteienmultiplikation teilnehmen und von denen angenommen wird, dass jede Partei Zugriff auf eine der Klartexteingaben x oder y hat, dass beide Parteien den Wert bestimmt, den die jeweils andere Partei hält, da der Teil [zi] nicht den echten Produktwert z offenbart. Der Mehrparteienmultiplikationsprozess erfordert sowohl Kommunikation zwischen den Parteien, um gemeinsame Werte ε und ρ zu erzeugen. Zusätzlich dazu braucht der Multiplikationsprozess die Teile ([a],[b],[c]) eines Beaver-Tripels, wobei jedes Beaver-Tripel nur einmal verwendet wird.
-
Das geheime Teilungsschema im SPDZ-Protokoll ist n aus n additiven geheimen Teilungsschemata. Gemäß dem additiven geheimen Teilungsschema wird unter Annahme eines geheimen Werts α und einer Reihe von Parteien {P1, ..., Pn} ein einheitlicher Wert α1, ..., αn-1 nach dem Zufallsprinzip ausgewählt, und an wird so ausgewählt, dass α1 + ··· + αn = α erfüllt ist, wobei α an die Partei Pi verteilt wird. Infolgedessen sind n Parteien (d.h. alle Parteien) erforderlich, um den geheimen Wert α wiederherzustellen.
-
Um maximal n - t nicht verfügbare Parteien zu tolerieren, sollten t verfügbare Parteien in der Lage sein, die geheimen Teile dieser n - t nicht verfügbaren Parteien wiederherzustellen. Basierend auf dieser Beobachtung wird ein Protokoll ReShare vorgeschlagen, bei dem jede Partei den durch sie gehaltenen geheimen Teil an eine beliebige Untermenge von t Parteien neu verteilt, und das Protokoll ReCombine, bei dem t Parteien die geheimen Teile der nicht verfügbaren Parteien wiederherstellen und dann bei Bedarf den geheimen Wert rekonstruieren können. Auf Grundlage der beiden Protokolle werden eine Phase der Neuverteilung der geheimen Teile und Phase der Neuverteilung der geheimen Teile vorgeschlagen, die zwischen der Offline- und der Online-Phase des SPDZ-Protokolls angeordnet werden können, so dass das resultierende SPDZ-Protokoll über ein Fehlertoleranzmerkmal verfügt.
-
Das sichere Protokoll ReShare ermöglicht es zwei oder mehr Knoten, Teile eines Werts zu erzeugen, der allen Knoten bereits bekannt ist (d.h. der gesamte Wert steht den Knoten bereits „gemeinsam“ zur Verfügung und durch diesen Prozess werden Teile des Gesamtwerts „neu aufgeteilt“), wobei jeder Knoten einen Teil an dem Gesamtwert hält, ohne den Teil zu kennen, den irgendein anderer Knoten hält. In den hierin beschriebenen Ausführungsformen ist die Operation der neuen Aufteilung („ReShare“) definiert als: Reshare (cts, P1, ...,Pn), wobei ctsein verschlüsselter Ciphertext (ct) eines geheimen Werts s ist und P1...Pn stehen für die n Parteien, die an der Neuaufteilungsoperation teilnehmen. Der verschlüsselte Ciphertext-Wert ct ist allen Parteien als Ganzes bekannt, und die Neuaufteilungsoperation ermöglicht es den Parteien, jeweils einen Teil des ursprünglichen Datensatzes zu empfangen, ohne die Teile der anderen Knoten zu kennen, selbst in einem Zwei-Knoten-System. Die Neuverteilungsoperation beginnt mit der Verschlüsselung des geheimen Werts s unter Verwendung des öffentlichen Schlüssels pk zur Erzeugung eines Ciphertexts cts = Encpk(s), und der Ciphertext cts wird an alle der n Parteien in der Gruppe der Parteien übertragen, die einen verschlüsselten Teil des geheimen Werts s empfangen. Jede Partei i in den n Parteien erzeugt einen einheitlichen Zufallswert fi ∈ Fp und verwendet den öffentlichen Schlüssel pk, um den Zufallswert zu verschlüsseln, um einen Ciphertext des Zufallswerts zu erzeugen: ctfi = Encpk(fi). Jede Partei überträgt den jeweiligen Ciphertext-Wert ctfi über ein Datennetzwerk an alle anderen Parteien, und jede Partei berechnet eine Ciphertext-Summe cts+f aus dem verschlüsselten Wert von s und den einzelnen verschlüsselten Werten ctfi: cts+f = cs ctf
1 ctf
2 ... ctf
n wobei der Operator erneut die Addition von Ciphertexten in einem kryptographischen System anzeigt, das additiven Homomorphismus bereitstellt. Die Parteien führen dann einen kooperativen Entschlüsselungsprozess unter Verwendung der einzelnen Teile des privaten Schlüssels ski durch, um den Wert ctfi zu entschlüsseln und die Summe von s + f zu erhalten, wobei f die Summe aller einzelnen Zufallswerte fi ist. Die endgültigen Teile unter den n Parteien für Partei 1 [s1] = s + f - f1 sind und für jede der anderen i Parteien [si] = -fi sind.
-
Das ReShare-Protokoll ist in
4 dargestellt. In der ersten Schleife werden die durch jede Partei gehaltenen geheimen Teile über authentifizierte vertrauliche Kanäle an alle verfügbaren Parteien neu verteilt. In der zweiten Schleife werden die neu verteilten geheimen Teile summiert und die Summen in Verbindung mit den eindeutigen Identifikatoren, die jeder Partei für jede Partei zugewiesen werden, gespeichert. Die Aggregatoperation reduziert hier den Speicheraufwand. Es ist anzumerken, dass die Bezeichnungszeichenfolge „Label“ verwendet wird, um die Parteien in der Untermenge und die zugehörigen neu verteilten geheimen Teile eindeutig zu identifizieren und die Rekonstruktion von geheimen Teilen zu erleichtern. Es ist anzumerken, dass jeder geheime Teil auf die Untermengen von t Parteien in additiver Weise neu verteilt wird, weshalb alle t-1 Parteien (mit Ausnahme der Partei, die diesen geheimen Teil hält) den geheimen Teil nicht wiederherstellen können. Bei n Parteien ist die Anzahl der Untermengen mit t Parteien
daher ist die Anzahl der Untermengen mit einer bestimmten Partei
Jede Partei muss somit
neu verteilte geheime Teile und die entsprechenden Label speichern.
-
Protokoll ReCombine ist in 5 dargestellt. Das Protokoll ReCombine ermöglicht es t Parteien, die durch sie gehaltenen geheimen Teile und neu verteilte geheime Teile zu verwenden, um geheime Teile des geheimen Werts zu berechnen. Jede Partei Pi, 1 ≤ i ≤ n hält den geheimen Teil αi und die Menge der neu verteilten geheimen Teile AggSeti.
-
Ein Beispiel wird nachstehend erläutert, um das Protokoll ReShare und ReCombine zu veranschaulichen. Angenommen, es gibt vier Parteien (d.h. n = 4), die die geheimen Teile x1, x2, x3 bzw. x4 halten, so dass x = x1 + x2 + x3 + x4, wobei x der geheime Wert ist. Angenommen, das System erfordert die Toleranz von maximal zwei nicht verfügbaren Parteien (d.h. n - t = 2), was bedeutet, dass beliebige t = 2 Parteien in der Lage sein sollten, den geheimen Wert zu rekonstruieren.
-
Ein Beispiel wird nachstehend erläutert, um das Protokoll ReShare und ReCombine zu veranschaulichen. Angenommen, es gibt vier Parteien (d.h. n = 4), die die geheimen Teile x1, x2, x3 bzw. x4 halten, so dass x = x1 + x2 + x3 + x4, wobei x der geheime Wert ist. Angenommen, das System erfordert die Toleranz von maximal zwei nicht verfügbaren Parteien (d.h. n - t = 2), was bedeutet, dass beliebige t = 2 Parteien in der Lage sein sollten, den geheimen Wert zu rekonstruieren.
-
6 zeigt eine Tabelle, die die Zwischenergebnisse anführt, nachdem die Partei P1 den durch sie gehaltenen geheimen Teil x1 an andere Parteien neu verteilt. Es ist anzumerken, dass „Label“ die Zeichenkette ist, die die Indizes aller Parteien konkateniert, und sie kann jede Untermenge von t Parteien eindeutig identifizieren. In dem Beispiel ist die Menge aller Untermengen mit 2 Parteien t = 2, da {{P1, P3}, {P2, P4}, {P3, P4}}. Die Summe der neu verteilten Teile in derselben Zeile entspricht dem geheimen Teil x1. Beispielsweise x1,2,Label
2,3 + x1,3,Label
2,3 = x1,2,Label
2,3 + x1,4,Label
2,4 = x1 und x1,3,Label
3,4 + x1,4,Label
3,4 = x1. 7 zeigt das Endergebnis, nachdem alle Parteien die durch sie gehaltenen geheimen Teile an die anderen Parteien neu verteilt haben.
-
8 zeigt das Endergebnis nach dem Durchführen des Protokolls ReShare. Gemäß 8 hält jede Partei drei neu verteilte geheime Teile und die jeweiligen Labels sowie den durch sie gehaltenen geheimen Teil. Dementsprechend können in diesem Fall zwei beliebige Parteien den geheimen Wert konstruieren. Angenommen, Parteien P1 und P2 sind online, aber Parteien P3 und P4 sind nicht verfügbar. Mit dem Protokoll ReCombine berechnen die Parteien P1 und P2 x1 + x3,1,Label
1,2 + x4,1,Label
1,2 bzw. x2 + x3,2,Label
1,2 + x4,2,Label
1,2 . Es ist ersichtlich, dass diese beiden lokal berechneten Werte den geheimen Wert x wiederherstellen können, da x3,1,Label
1,2 + x3,2,Label
1,2 = x3, x4,1,Label
1,2 + x4,2,Label
1,2 = x4 und x1 + x2 + x3 + x4 = x.
-
Nach dem Ausführen der Offline-Phase müssen zwei verschiedene Arten von Datenteilen neu verteilt werden: Kryptoschlüsselteile (d.h. private Schlüsselteile und MAC-Schlüsselteile) und die Tupelteile. Für die Kryptoschlüsselteile werden nur die MAC-Schlüsselteile berücksichtigt, da private Schlüsselteile in der Online-Phase nicht verwendet werden. Es ist anzumerken, dass für jeden Tupelteil jedes Element innerhalb des von den Parteien gehaltenen Tupels in der Form [x] vorliegt, die aus dem geheimen Datenteil und dem MAC-Wertteil besteht. Daher muss das Protokoll ReShare nur auf den geheimen Datenteil bzw. den MAC-Wertteil angewandt werden. 9 beschreibt die Phase der Neuverteilung der geheimen Teile, in der die MAC-Schlüsselteile und Tupelteile, die in der Offline-Phase erzeugt werden, neu verteilt werden.
-
Während der Phase der Neukombination der geheimen Teile, die in 10 dargestellt ist, wird das Protokoll ReCombine angewandt, um den MAC-Schlüsselteil und Tupelteile zu berechnen. Es ist anzumerken, dass es möglich ist, dass mehr als t Parteien verfügbar sind, aber nur t Parteien ausgewählt werden müssen.
-
Wie in 11 dargestellt, kann das fehlertolerante SPDZ-Protokoll in Anbetracht der beiden oben beschriebenen Phasen aufgebaut werden, indem die oben erläuterte Phase der Neuverteilung der geheimen Teile und die oben erläuterte Phase der Neukombination der geheimen Teile zwischen der Offline- und der Online-Phase integriert werden. Es ist anzumerken, dass vor der Durchführung der Phase der Neukombination der geheimen Teile t Parteien ausgewählt werden müssen. Aus diesem Grund müssen t Parteien verfügbar sein.
-
Ausgehend von den Parametern n (d.h. der Gesamtanzahl der Parteien) und t (d.h. der Mindestanzahl verfügbarer Parteien) werden folgende Größen berücksichtigt, um das SPDZ-Protokoll mit dem fehlertoleranten SPDZ-Protokoll zu vergleichen:
- • Speicherverbrauch: der Speicherverbrauch jeder Partei für das Speichern eines geheimen Werts.
- • Anzahl der Parteien mit böswilligen Absichten: die Anzahl von Parteien mit böswilligen Absichten, die anwesend sein dürfen, um die Sicherheit des Protokolls zu gewährleisten.
- • Fehlertoleranz: die Anzahl verfügbarer Parteien, die anwesend sein dürfen, um die Korrektheit des Protokolls zu gewährleisten.
-
12 zeigt den Vergleich zwischen den beiden Protokollen. Es ist ersichtlich, dass das Fehlertoleranzmerkmal für das fehlertolerante SPDZ (d.h. n - t vs. 0 für SPDZ) um den Preis erreicht wird, dass der Speicherverbrauch erhöht (d.h.
vs.n-1 für SPDZ) und die Anzahl der im Protokoll zulässigen Parteien mit böswilliger Absicht reduziert wird (d.h. t - 1 vs. n - 1 für SPDZ). Der Wert n - t sollte sorgfältig ausgewählt werden, da der Speicherverbrauch sich fast exponentiell zu dem Wert verhält.
-
In dem Abschnitt oben wird angenommen, dass die teilnehmenden Parteien nicht nur die Offline- und Online-Phasen durchführen, sondern auch ihre privaten Eingaben für die Berechnung bereitstellen. Das oben beschriebene fehlertolerante SPDZ-Schema kann auch als Dienst implementiert werden, bei dem mehrere Dienstanbieter viele dedizierte Server hosten, die für die Durchführung der Offline- und Online-Phase verantwortlich sind, und Endnutzer ihre privaten Eingaben in Form von geheimen Teilen hochladen und sie auf mehreren dedizierten Servern speichern. Es ist anzumerken, dass die gespeicherten geheimen Eingabeteile in den dedizierten Servern auch in Form von [x] = {(x1, γ1(x)), ..., (xn, γn(x))} vorliegen, wobei die Partei Pi, 1 ≤ i ≤ n das Tupel (x1, γ1(x)) hält, so dass x = x1 + ... + xn und λx = γ1(x) + ··· + γn(x), und λ der MAC-Schlüssel ist. Aus diesem Grund ist es weiterhin zulässig, Protokoll ReShare und ReCombine auf private Eingabeteile in der Phase der Neuverteilung der geheimen Teile und der Phase der Neukombination der geheimen Teile anzuwenden, so dass das erweiterte SPDZ-Protokoll gemäß diesem Modell Fehlertoleranz bietet.
-
13 zeigt ein exemplarisches System 100 für die Durchführung von Mehrparteienberechnungs- (MPC-) Protokolle unter Anwendung der oben beschriebenen erweiterten SPDZ-Protokolle. Das System umfasst eine Vielzahl von Computerknoten 104A und 104B, die über ein Datennetzwerk 150 kommunikativ miteinander verbunden sind. Im System 100 ist jeder der Knoten 104A und 104B eine Partei in den hierin beschriebenen SPDZ-Prozessen. Jeder Knoten ist eine Rechenvorrichtung, die als eine einzelne Partei in den hierin beschriebenen sicheren Mehrparteienberechnungsprozessen agiert, und der Begriff „Knoten“ wird in den nachstehend beschriebenen Ausführungsformen synonym mit dem Begriff „Partei“ verwendet. 13 zeigt den Knoten 104A im Detail, und der Knoten 104B ist auf ähnliche Weise mit verschiedenen Sätzen gespeicherter Daten konfiguriert, um eine sichere Mehrparteienberechnung eines inneren Produkts unter Anwendung der hierin beschriebenen Ausführungsformen zu implementieren. Während 13 ein System mit zwei Knoten 104A - 104B zur Veranschaulichung darstellt, können die hierin beschriebenen Ausführungsformen auch von Gruppen von drei oder mehr Knoten durchgeführt werden.
-
Unter ausführlicherer Bezugnahme auf den Knoten 104A umfasst der Knoten einen Prozessor 108, der mit einer Netzwerkschnittstellenvorrichtung 112 und einem Arbeitsspeicher 120 operativ verbunden ist. Der Prozessor 108 ist typischerweise eine zentrale Verarbeitungseinheit (CPU) mit einem oder mehreren Verarbeitungskernen, die gespeicherte Programmbefehle 124 in dem Arbeitsspeicher 120 ausführen, um die hierin beschriebenen Ausführungsformen zu implementieren. Weitere Ausführungsformen des Prozessors 108 verwenden jedoch andere Verarbeitungselemente anstelle von oder zusätzlich zu einer CPU, einschließlich Graphikverarbeitungseinheiten (GPU), feldprogrammierbare Gate-Anordnungen (FPGA), anwendungsspezifische integrierte Schaltungen (ASIC), digitale Signalprozessoren (DSP) und jede andere Logikvorrichtung, die konfiguriert ist, um die hierin beschriebenen Operationen durchzuführen. In manchen Ausführungsformen implementiert der Prozessor 108 einen Hardware-Zufallszahlenzahlengenerator (RNG) oder verwendet einen Software-Zufallszahlengenerator oder Pseudozufallszahlengenerator (PRNG) zur Erzeugung der Zufallswerte. In der Beschreibung hierin bezieht sich jeder Verweis auf das Erzeugen eines Zufallswerts oder die Verwendung eines Zufallswerts auf den Betrieb eines RNG oder PRNG zur Erzeugung eines Werts einheitlich nach dem Zufallsprinzip ausgewählt aus einem vorab festgelegten Zahlenbereich (z.B. dem festen Körper Fp).
-
Die Netzwerkschnittstellenvorrichtung 112 verbindet den Knoten 104A mit einem Datennetzwerk 150, wie z.B. einem Local Area Network (LAN) oder einem Wide Area Network (WAN), um Kommunikation zwischen dem Knoten 104A und dem Knoten 104B aus 13 zu ermöglichen, und mit zusätzlichen Knoten, die die hierin beschriebenen sicheren Mehrparteienberechnungen des inneren Produkts durchführen. Nicht einschränkende Ausführungsformen der Netzwerkschnittstellenvorrichtung 112 umfassen drahtgebundene Netzwerkvorrichtungen, wie z.B. einen Ethernet-Adapter, oder drahtlose Netzwerkvorrichtungen, wie z.B. einen WLAN- oder drahtlosen WAN-Netzwerkadapter. In dem System 100 wird angenommen, dass alle Datenübertragungen, die über das Netzwerk 150 erfolgen, durch Dritte-Partei-Gegner (in 13 nicht dargestellt) beobachtet werden, die alle Daten aufzeichnen können, die von den Knoten 104A und 104B übertragen werden, obwohl die Knoten 104A und 104B unter Verwendung eines Transport-Layer-Security- (TLS-) verschlüsselten und authentifizierten Kanals oder eines gleichwertigen Kommunikationskanals kommunizieren können, der verhindert, dass Kommunikationen über das Netzwerk 150 durch Mitlesende beobachtet oder verändert werden können. Die hierin beschriebenen Ausführungsformen verhindern, dass ein Gegner, der Kommunikation zwischen den Knoten 104A und 104B beobachten kann, den Wert irgendwelcher privaten Daten bestimmen kann, zusätzlich dazu dass verhindert wird, dass während Mehrparteienberechnungen von inneren Produkten der Knoten 104B die privaten Klartextdaten 128 des Knotens 104A ermittelt und umgekehrt.
-
Der Arbeitsspeicher 120 umfasst eine oder mehrere flüchtige Arbeitsspeichervorrichtungen, wie z.B. Random Access Memory (RAM), und nicht flüchtige Arbeitsspeichervorrichtungen, wie z.B. Magnetdisketten oder Festspeichervorrichtungen, die Programmbefehle 124, private Klartextdaten 128, Wertteildaten 132, Kryptoschlüsseldaten 163 und das berechnete Ergebnis des inneren Produkts 140 speichern. Die privaten Klartextdaten 128 umfassen einen vollständigen Vektor oder einen Abschnitt eines Vektors von zwei Vektoren, die die Eingaben für die Berechnung des inneren Produkts darstellen. Die zwei Vektoren in den Klartextdaten 128 werden hierin als x und w bezeichnet. Die Wertteildaten 132 umfassen den Teil, den jeder Knoten während des Betriebs des Systems 100 erhält, einschließlich Teile von Beaver-Tripelwerten, die während einer Offline-Phase erzeugt werden, und Teile von Werten, die während des Berechnungsprozesses des inneren Produkts ausgetauscht werden. Wie oben beschrieben stellt jeder Teil jedem Knoten eine verschlüsselte Fassung eines Abschnitts jedes Werts bereit. Die Kryptoschlüsseldaten 136 umfassen einen Teil des verschlüsselten MAC-Kryptoschlüssels für den Knoten 104A, den öffentlichen Schlüssel pk und den Teil des privaten Schlüssels ski, der mit dem Knoten 104A geteilt wird. Das berechnete Ergebnis des inneren Produkts 140 ist die finale Ausgabe der Mehrparteienberechnung des Werts des inneren Produkts.
-
Der Knoten 104B umfasst einen Arbeitsspeicher mit ähnlichen Datenstrukturen, nur dass der Knoten 104B einen anderen Satz privater Klartextdaten 128 speichert, die dem zweiten Vektor entsprechen, der zum Generieren des inneren Produkts verwendet wird, andere Sätze der Teile geheimer Werte 132 und andere Teile des privaten Schlüssels und des MAC-Schlüssels in den Kryptoschlüsseldaten 136. Wie nachstehend beschrieben berechnen die Knoten 104A und 104B beide dasselbe Ergebnis des inneren Produkts 140. In der veranschaulichenden Ausführungsform in 13 speichert der Knoten 104A alle Klartextelemente des Vektors x und der Knoten 104B speichert alle Klartextelemente des Vektors w, wobei in anderen Ausführungsformen die Klartextdaten für einen oder beide Vektoren jedoch auf mehrere Konten verteilt sind, um zu ermöglichen, dass eine größere Anzahl von Knoten sichere Mehrparteienberechnungen von inneren Produkten durchführt.
-
Wenngleich die Offenbarung in den Zeichnungen und der oben stehenden Beschreibung veranschaulicht und ausführlich beschrieben wurde, sollten diese als veranschaulichend und nicht einschränkend erachtet werden. Es ist klar, dass nur die bevorzugten Ausführungsformen vorgestellt wurden und dass alle Veränderungen, Modifikationen und weiteren Anwendungen, die in den Schutzumfang der Offenbarung fallen, auch geschützt sein sollen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- Zheng et al., eingereicht am 4. Juni 2018 [0001]